@rebasepro/admin 0.2.3 → 0.3.0

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.
Files changed (210) hide show
  1. package/dist/{CollectionEditorDialog-CmGXXSY9.js → CollectionEditorDialog-D0VqpLPO.js} +70 -77
  2. package/dist/CollectionEditorDialog-D0VqpLPO.js.map +1 -0
  3. package/dist/{CollectionsStudioView-DcLHT5bU.js → CollectionsStudioView-Bc3Rxxc2.js} +5 -4
  4. package/dist/{CollectionsStudioView-DcLHT5bU.js.map → CollectionsStudioView-Bc3Rxxc2.js.map} +1 -1
  5. package/dist/{ExportCollectionAction-BfN34eWX.js → ExportCollectionAction-Ckc-09BQ.js} +4 -3
  6. package/dist/ExportCollectionAction-Ckc-09BQ.js.map +1 -0
  7. package/dist/{ImportCollectionAction-SZrInjhx.js → ImportCollectionAction-BqjIrC3Z.js} +3 -2
  8. package/dist/{ImportCollectionAction-SZrInjhx.js.map → ImportCollectionAction-BqjIrC3Z.js.map} +1 -1
  9. package/dist/{PropertyEditView-Cvryrb3B.js → PropertyEditView-CvRSV-A2.js} +128 -121
  10. package/dist/PropertyEditView-CvRSV-A2.js.map +1 -0
  11. package/dist/collection_editor/ConfigControllerProvider.d.ts +0 -5
  12. package/dist/collection_editor/index.d.ts +0 -1
  13. package/dist/collection_editor/types/collection_editor_controller.d.ts +0 -2
  14. package/dist/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +3 -3
  15. package/dist/collection_editor_ui.js +3 -3
  16. package/dist/components/ArrayContainer.d.ts +2 -2
  17. package/dist/components/DefaultAppBar.d.ts +18 -1
  18. package/dist/components/DefaultDrawer.d.ts +51 -3
  19. package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  21. package/dist/components/EntityCollectionTable/table_bindings.d.ts +4 -3
  22. package/dist/components/EntityCollectionView/hooks/useKanbanDragAndDrop.d.ts +4 -3
  23. package/dist/components/EntityEditView.d.ts +2 -1
  24. package/dist/components/HomePage/HomePageDnD.d.ts +3 -3
  25. package/dist/components/PropertyCollectionView.d.ts +1 -1
  26. package/dist/components/PropertyIdCopyTooltip.d.ts +1 -1
  27. package/dist/components/SelectableTable/SelectionStore.d.ts +4 -1
  28. package/dist/components/SelectableTable/filters/BooleanFilterField.d.ts +2 -2
  29. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -2
  30. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -2
  31. package/dist/components/SelectableTable/filters/StringNumberFilterField.d.ts +2 -2
  32. package/dist/components/admin/RolesView.d.ts +3 -3
  33. package/dist/components/admin/UsersView.d.ts +3 -3
  34. package/dist/components/app/Drawer.d.ts +8 -1
  35. package/dist/data_export/export/export.d.ts +3 -3
  36. package/dist/editor/components/editor-bubble.d.ts +5 -1
  37. package/dist/editor/components/image-bubble.d.ts +5 -1
  38. package/dist/editor/components/index.d.ts +3 -3
  39. package/dist/editor/components/table-bubble.d.ts +5 -1
  40. package/dist/editor/nodeViews/ReactNodeView.d.ts +4 -1
  41. package/dist/editor/useProseMirror.d.ts +2 -2
  42. package/dist/editor/utils/remove_classes.d.ts +1 -1
  43. package/dist/editor.js +15 -14
  44. package/dist/editor.js.map +1 -1
  45. package/dist/form/EntityForm.d.ts +2 -2
  46. package/dist/form/components/StorageUploadProgress.d.ts +2 -2
  47. package/dist/form/field_bindings/MultiSelectFieldBinding.d.ts +1 -1
  48. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
  49. package/dist/form/validation.d.ts +3 -3
  50. package/dist/hooks/navigation/useResolvedCollections.d.ts +6 -0
  51. package/dist/hooks/navigation/useResolvedViews.d.ts +3 -4
  52. package/dist/{index-PLIQXpTt.js → index-BCcLwgfe.js} +3 -2
  53. package/dist/{index-PLIQXpTt.js.map → index-BCcLwgfe.js.map} +1 -1
  54. package/dist/{index-DjduZG1T.js → index-DY2k5TtG.js} +3 -3
  55. package/dist/index-DY2k5TtG.js.map +1 -0
  56. package/dist/{index-MKPc70-v.js → index-UQOMHwt1.js} +3 -3
  57. package/dist/index-UQOMHwt1.js.map +1 -0
  58. package/dist/index.d.ts +1 -1
  59. package/dist/index.js +2813 -372
  60. package/dist/index.js.map +1 -1
  61. package/dist/{markdown-z2Ir7Cgo.js → markdown-DD2JDU1X.js} +2 -2
  62. package/dist/markdown-DD2JDU1X.js.map +1 -0
  63. package/dist/preview/components/UrlComponentPreview.d.ts +1 -0
  64. package/dist/types/components/EntityFormActionsProps.d.ts +1 -1
  65. package/dist/types/components/EntityFormProps.d.ts +2 -2
  66. package/dist/types/fields.d.ts +1 -1
  67. package/dist/{util-DbWax_sV.js → util-ZM9gQuCv.js} +2031 -2078
  68. package/dist/util-ZM9gQuCv.js.map +1 -0
  69. package/package.json +8 -8
  70. package/src/collection_editor/ConfigControllerProvider.tsx +3 -13
  71. package/src/collection_editor/index.ts +1 -3
  72. package/src/collection_editor/types/collection_editor_controller.tsx +0 -3
  73. package/src/collection_editor/ui/EditorCollectionAction.tsx +1 -6
  74. package/src/collection_editor/ui/EditorCollectionActionStart.tsx +1 -6
  75. package/src/collection_editor/ui/EditorEntityAction.tsx +1 -6
  76. package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +7 -14
  77. package/src/collection_editor/ui/NewCollectionCard.tsx +1 -5
  78. package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +3 -8
  79. package/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.tsx +8 -12
  80. package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +21 -21
  81. package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +4 -4
  82. package/src/collection_editor/ui/collection_editor/EnumForm.tsx +1 -1
  83. package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +3 -3
  84. package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +3 -3
  85. package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +8 -8
  86. package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +5 -5
  87. package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +2 -2
  88. package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +5 -5
  89. package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +5 -5
  90. package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +2 -2
  91. package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +2 -2
  92. package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +8 -8
  93. package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +5 -5
  94. package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +3 -2
  95. package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +2 -2
  96. package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +2 -2
  97. package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +1 -1
  98. package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +4 -7
  99. package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +4 -4
  100. package/src/components/ArrayContainer.tsx +3 -3
  101. package/src/components/DefaultAppBar.tsx +52 -31
  102. package/src/components/DefaultDrawer.tsx +279 -66
  103. package/src/components/DrawerNavigationItem.tsx +1 -1
  104. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +6 -5
  105. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +9 -7
  106. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +5 -5
  107. package/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.tsx +12 -9
  108. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +2 -2
  109. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +1 -1
  110. package/src/components/EntityCollectionTable/table_bindings.tsx +5 -4
  111. package/src/components/EntityCollectionView/EntityCollectionView.tsx +6 -4
  112. package/src/components/EntityCollectionView/hooks/useCollectionInlineEditor.ts +1 -1
  113. package/src/components/EntityCollectionView/hooks/useKanbanDragAndDrop.ts +7 -6
  114. package/src/components/EntityDetailView.tsx +46 -24
  115. package/src/components/EntityEditView.tsx +51 -28
  116. package/src/components/EntityEditViewFormActions.tsx +4 -4
  117. package/src/components/EntityPreview.tsx +9 -4
  118. package/src/components/HomePage/HomePageDnD.tsx +3 -2
  119. package/src/components/PropertyCollectionView.tsx +1 -1
  120. package/src/components/PropertyIdCopyTooltip.tsx +1 -1
  121. package/src/components/RebaseLayout.tsx +5 -1
  122. package/src/components/RebaseNavigation.tsx +2 -2
  123. package/src/components/RebaseRouteDefs.tsx +4 -7
  124. package/src/components/RebaseShell.tsx +16 -13
  125. package/src/components/SearchIconsView.tsx +1 -8
  126. package/src/components/SelectableTable/SelectableTable.tsx +8 -11
  127. package/src/components/SelectableTable/SelectionStore.ts +1 -1
  128. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +3 -3
  129. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +3 -3
  130. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +5 -5
  131. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +3 -3
  132. package/src/components/SideEntityProvider.tsx +2 -1
  133. package/src/components/admin/RolesView.tsx +7 -2
  134. package/src/components/admin/UsersView.tsx +12 -6
  135. package/src/components/app/Drawer.tsx +9 -1
  136. package/src/components/app/Scaffold.tsx +5 -1
  137. package/src/data_export/export/export.ts +17 -17
  138. package/src/data_import/components/DataNewPropertiesMapping.tsx +1 -1
  139. package/src/editor/components/editor-bubble.tsx +32 -9
  140. package/src/editor/components/image-bubble.tsx +27 -11
  141. package/src/editor/components/index.ts +3 -3
  142. package/src/editor/components/table-bubble.tsx +79 -17
  143. package/src/editor/extensions/HighlightDecorationExtension.ts +3 -2
  144. package/src/editor/nodeViews/ReactNodeView.tsx +1 -1
  145. package/src/editor/nodeViews/TaskItemComponent.tsx +9 -8
  146. package/src/editor/schema.ts +135 -59
  147. package/src/editor/selectors/link-selector.tsx +8 -5
  148. package/src/editor/useProseMirror.ts +2 -2
  149. package/src/editor/utils/remove_classes.ts +6 -5
  150. package/src/form/EntityForm.tsx +15 -15
  151. package/src/form/EntityFormActions.tsx +2 -2
  152. package/src/form/PropertyFieldBinding.tsx +64 -64
  153. package/src/form/components/FieldHelperText.tsx +4 -4
  154. package/src/form/components/StorageUploadProgress.tsx +2 -2
  155. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +1 -1
  156. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +1 -1
  157. package/src/form/field_bindings/BlockFieldBinding.tsx +54 -53
  158. package/src/form/field_bindings/KeyValueFieldBinding.tsx +290 -289
  159. package/src/form/field_bindings/MapFieldBinding.tsx +2 -2
  160. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +2 -2
  161. package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +1 -1
  162. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +1 -1
  163. package/src/form/field_bindings/ReferenceFieldBinding.tsx +8 -6
  164. package/src/form/field_bindings/RelationFieldBinding.tsx +4 -4
  165. package/src/form/field_bindings/RepeatFieldBinding.tsx +1 -1
  166. package/src/form/field_bindings/SelectFieldBinding.tsx +1 -1
  167. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +84 -84
  168. package/src/form/field_bindings/SwitchFieldBinding.tsx +16 -16
  169. package/src/form/field_bindings/TextFieldBinding.tsx +77 -73
  170. package/src/form/field_bindings/UserSelectFieldBinding.tsx +17 -17
  171. package/src/form/validation.ts +43 -43
  172. package/src/hooks/navigation/useBuildNavigationStateController.tsx +3 -5
  173. package/src/hooks/navigation/useResolvedCollections.ts +27 -7
  174. package/src/hooks/navigation/useResolvedViews.tsx +24 -44
  175. package/src/index.ts +2 -0
  176. package/src/preview/PropertyPreview.tsx +2 -2
  177. package/src/preview/components/ImagePreview.tsx +2 -1
  178. package/src/preview/components/UrlComponentPreview.tsx +11 -2
  179. package/src/preview/components/UserPreview.tsx +1 -1
  180. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -2
  181. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -4
  182. package/src/preview/property_previews/ArrayOfRelationsPreview.tsx +3 -3
  183. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +3 -3
  184. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +3 -2
  185. package/src/preview/property_previews/ArrayOneOfPreview.tsx +6 -8
  186. package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +1 -1
  187. package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -3
  188. package/src/preview/property_previews/MapPropertyPreview.tsx +4 -3
  189. package/src/preview/property_previews/NumberPropertyPreview.tsx +5 -3
  190. package/src/preview/property_previews/StringPropertyPreview.tsx +10 -8
  191. package/src/types/components/EntityFormActionsProps.tsx +1 -1
  192. package/src/types/components/EntityFormProps.tsx +2 -2
  193. package/src/types/fields.tsx +2 -2
  194. package/dist/CollectionEditorDialog-CmGXXSY9.js.map +0 -1
  195. package/dist/ContentHomePage-C7vFqKSe.js +0 -1784
  196. package/dist/ContentHomePage-C7vFqKSe.js.map +0 -1
  197. package/dist/ExportCollectionAction-BfN34eWX.js.map +0 -1
  198. package/dist/PropertyEditView-Cvryrb3B.js.map +0 -1
  199. package/dist/RoleChip-QtUFXeTp.js +0 -67
  200. package/dist/RoleChip-QtUFXeTp.js.map +0 -1
  201. package/dist/RolesView-BCb7qwWs.js +0 -437
  202. package/dist/RolesView-BCb7qwWs.js.map +0 -1
  203. package/dist/UsersView-Cex24r8H.js +0 -408
  204. package/dist/UsersView-Cex24r8H.js.map +0 -1
  205. package/dist/collection_editor/types/config_permissions.d.ts +0 -19
  206. package/dist/index-DjduZG1T.js.map +0 -1
  207. package/dist/index-MKPc70-v.js.map +0 -1
  208. package/dist/markdown-z2Ir7Cgo.js.map +0 -1
  209. package/dist/util-DbWax_sV.js.map +0 -1
  210. package/src/collection_editor/types/config_permissions.ts +0 -20
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/hooks/useResolvedNavigationFrom.tsx","../src/components/ReferenceWidget.tsx","../src/components/AdminModeSyncer.tsx","../src/components/RebaseCMS.tsx","../src/components/RebaseAuthGate.tsx","../src/components/RebaseLayout.tsx","../src/components/RebaseShell.tsx","../src/preview/property_previews/ArrayOfMapsPreview.tsx","../src/collection_editor/ui/MissingReferenceWidget.tsx","../src/components/admin/RolesFilterSelect.tsx","../src/components/admin/UserRolesSelectField.tsx"],"sourcesContent":["import type { EntityCollection, EntityCustomView } from \"@rebasepro/types\";\nimport { Entity, RebaseContext, User } from \"@rebasepro/types\";\nimport { useEffect, useState, useMemo } from \"react\";\nimport { getNavigationEntriesFromPath } from \"@rebasepro/common\";\nimport { useCMSContext } from \"./useCMSContext\";\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport type ResolvedNavigationEntry<M extends Record<string, unknown>> =\n | ResolvedNavigationEntity<M>\n | ResolvedNavigationCollection<M>\n | ResolvedNavigationEntityCustom<M>;\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationEntity<M extends Record<string, unknown>> {\n type: \"entity\";\n entity: Entity<M>;\n entityId: string | number;\n path: string;\n parentCollection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationCollection<M extends Record<string, unknown>> {\n type: \"collection\";\n path: string;\n collection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\ninterface ResolvedNavigationEntityCustom<M extends Record<string, unknown>> {\n type: \"custom_view\";\n path: string;\n view: EntityCustomView<M>;\n}\n\n/**\n * Use this function to retrieve an array of navigation entries (resolved\n * collection, entity or entity custom_view) for the given path. You need to pass the app context\n * that you receive in different callbacks, such as the save hooks.\n *\n * It will take into account the `navigation` provided at the `Rebase` level.\n *\n * @param path\n * @param context\n * @group Hooks and utilities\n */\nexport function resolveNavigationFrom<M extends Record<string, unknown>, USER extends User>({\n path,\n context\n}: {\n path: string,\n context: RebaseContext<USER>\n}): Promise<ResolvedNavigationEntry<M>[]> {\n\n const data = context.data;\n const { navigationStateController, collectionRegistryController } = context;\n\n if (!navigationStateController || !collectionRegistryController) {\n throw Error(\"Calling resolveNavigationFrom, but main navigation has not yet been initialised\");\n }\n\n const navigationEntries = getNavigationEntriesFromPath({\n path,\n collections: collectionRegistryController.collections ?? []\n });\n\n const resultPromises: Promise<ResolvedNavigationEntry<any>>[] = navigationEntries\n .map((entry) => {\n if (entry.type === \"collection\") {\n return Promise.resolve(entry);\n } else if (entry.type === \"entity\") {\n const collection = collectionRegistryController.getCollection(entry.slug);\n if (!collection) {\n throw Error(`No collection defined in the navigation for the entity with path ${entry.slug}`);\n }\n return data.collection(entry.slug).findById(entry.entityId)\n .then((entity) => {\n if (!entity) return undefined;\n return { ...entry,\nentity };\n });\n } else if (entry.type === \"custom_view\") {\n return Promise.resolve(entry);\n } else {\n throw Error(\"Unmapped element in useEntitiesFromPath\");\n }\n })\n .filter(v => Boolean(v)) as Promise<ResolvedNavigationEntry<any>>[];\n\n return Promise.all(resultPromises);\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFromProps {\n path: string;\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFrom<M extends Record<string, unknown>> {\n data?: ResolvedNavigationEntry<M>[]\n dataLoading: boolean,\n dataLoadingError?: Error\n}\n\n/**\n * Use this hook to retrieve an array of navigation entries (resolved\n * collection or entity) for the given path. You can use this hook\n * in any React component that lives under `Rebase`\n * @group Hooks and utilities\n */\nexport function useResolvedNavigationFrom<M extends Record<string, unknown>>(\n {\n path\n }: NavigationFromProps): NavigationFrom<M> {\n\n const context = useCMSContext();\n const { navigationStateController, collectionRegistryController } = context;\n\n const [data, setData] = useState<ResolvedNavigationEntry<M>[] | undefined>();\n const [dataLoading, setDataLoading] = useState<boolean>(false);\n const [dataLoadingError, setDataLoadingError] = useState<Error | undefined>();\n\n useEffect(() => {\n if (navigationStateController && collectionRegistryController) {\n setDataLoading(true);\n setDataLoadingError(undefined);\n resolveNavigationFrom<M, User>({ path,\ncontext })\n .then(setData)\n .catch((e) => setDataLoadingError(e))\n .finally(() => setDataLoading(false));\n }\n\n }, [path, context]);\n\n return useMemo(() => {\n if (!navigationStateController) {\n return { dataLoading: true };\n }\n return { data,\ndataLoading,\ndataLoadingError };\n }, [navigationStateController, data, dataLoading, dataLoadingError]);\n}\n","import { useEntitySelectionDialog } from \"../hooks/useEntitySelectionDialog\";\nimport type { EntityCollection } from \"@rebasepro/types\";\nimport React, { useCallback, useMemo } from \"react\";\n\nimport { Entity, EntityReference, FilterValues } from \"@rebasepro/types\";\nimport type { PreviewSize } from \"../types/components/PropertyPreviewProps\";\nimport { getReferenceFrom } from \"@rebasepro/common\";\nimport { ReferencePreview } from \"../preview\";\nimport { Button, cls } from \"@rebasepro/ui\";\nimport { useCollectionRegistryController } from \"../index\";\n\nexport type ReferenceWidgetProps<M extends Record<string, unknown>> = {\n name?: string,\n multiselect?: boolean,\n value: EntityReference | EntityReference[] | null,\n onReferenceSelected?: (params: {\n reference: EntityReference | null,\n entity: Entity<M> | null\n }) => void,\n onMultipleReferenceSelected?: (params: {\n references: EntityReference[] | null,\n entities: Entity<M>[] | null\n }) => void,\n path: string,\n disabled?: boolean,\n previewProperties?: string[];\n /**\n * Allow selection of entities that pass the given filter only.\n */\n fixedFilter?: FilterValues<string>;\n size: PreviewSize;\n className?: string;\n includeId?: boolean;\n includeEntityLink?: boolean;\n};\n\n/**\n * This field allows selecting reference/s.\n */\nexport function ReferenceWidget<M extends Record<string, unknown>>({\n name,\n multiselect = false,\n path,\n disabled,\n value,\n onReferenceSelected,\n onMultipleReferenceSelected,\n previewProperties,\n fixedFilter,\n size,\n className,\n includeId,\n includeEntityLink\n}: ReferenceWidgetProps<M>) {\n\n const collectionRegistryController = useCollectionRegistryController();\n\n const collection: EntityCollection | undefined = useMemo(() => {\n return collectionRegistryController.getCollection(path);\n }, [path, collectionRegistryController.getCollection]);\n\n const onSingleEntitySelected = useCallback((entity: Entity<M> | null) => {\n if (disabled)\n return;\n if (onReferenceSelected) {\n const reference = entity ? getReferenceFrom(entity) : null;\n onReferenceSelected?.({\n reference,\n entity\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const onMultipleEntitiesSelected = useCallback((entities: Entity<M>[]) => {\n if (disabled)\n return;\n if (onMultipleReferenceSelected) {\n const references = entities ? entities.map(e => getReferenceFrom(e)) : null;\n onMultipleReferenceSelected({\n references,\n entities\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const referenceDialogController = useEntitySelectionDialog({\n multiselect,\n path,\n collection,\n onSingleEntitySelected,\n onMultipleEntitiesSelected,\n fixedFilter\n }\n );\n\n const clearValue = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n if (multiselect) {\n onMultipleEntitiesSelected([]);\n } else {\n onSingleEntitySelected(null);\n }\n }, [onReferenceSelected]);\n\n let child: React.ReactNode;\n\n const onEntryClick = () => {\n if (disabled)\n return;\n referenceDialogController.open();\n };\n\n if (Array.isArray(value)) {\n child = <div className={\"flex flex-col gap-4\"}>\n {value.map((ref, index) => {\n return <ReferencePreview\n key={`reference_preview_${index}`}\n onClick={onEntryClick}\n reference={ref}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink}/>\n })}\n </div>\n } else if (value?.isEntityReference && value?.isEntityReference()) {\n child = <ReferencePreview\n reference={value}\n onClick={onEntryClick}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink}/>\n\n }\n return <div className={cls(\"text-sm font-medium\",\n \"min-w-80 flex flex-col gap-4\",\n \"relative transition-colors duration-200 ease-in rounded-xs font-medium\",\n disabled ? \"bg-opacity-50\" : \"hover:bg-opacity-75\",\n \"dark:text-white/50 text-text-primary/50 dark:text-text-primary-dark/50 dark:text-white/50\",\n className\n )}>\n\n {child}\n {!value && <div className=\"justify-center text-left\">\n <Button disabled={disabled}\n onClick={onEntryClick}>\n Edit {name}\n </Button>\n </div>}\n\n </div>;\n}\n","import type { AppView } from \"@rebasepro/types\";\nimport React, { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n;\nimport { useUrlController } from \"../hooks/navigation/contexts/UrlContext\";\nimport { useAdminModeController } from \"@rebasepro/core\";\nexport interface AdminModeSyncerProps {\n /**\n * Map of views designated as 'Studio' views.\n * Navigating to any of these views will automatically flag the admin mode as \"studio\".\n */\n devViews?: AppView[];\n}\n\n/**\n * A highly customizable utility component that observes react-router routes and\n * actively shifts the internal Rebase `adminModeController` context to match\n * the user's active window segment (e.g., Content vs Studio mode).\n *\n * Placing this anywhere safely inside the Rebase layout automatically triggers\n * UI mode synchronization.\n */\nexport function AdminModeSyncer({ devViews }: AdminModeSyncerProps) {\n const location = useLocation();\n const urlController = useUrlController();\n const adminModeController = useAdminModeController();\n\n // Keep track of the current mode using a ref to avoid adding it to the dependency array\n const currentModeRef = React.useRef(adminModeController.mode);\n currentModeRef.current = adminModeController.mode;\n\n // Stable ref for setMode so it doesn't trigger the effect\n const setModeRef = React.useRef(adminModeController.setMode);\n setModeRef.current = adminModeController.setMode;\n\n useEffect(() => {\n const path = location.pathname;\n const isContentRoute = urlController.isUrlCollectionPath(path) || path === urlController.basePath;\n\n // Check both devViews slugs AND the studio home path (/s or basePath/s)\n const studioHomePath = urlController.basePath === \"/\" ? \"/s\" : `${urlController.basePath}/s`;\n const isStudioRoute = path === studioHomePath || path.startsWith(studioHomePath + \"/\") || devViews?.some(view => {\n const viewPath = urlController.buildAppUrlPath(view.slug);\n return path.startsWith(`${viewPath}/`) || path === viewPath;\n });\n\n if (isStudioRoute && currentModeRef.current !== \"studio\") {\n setModeRef.current(\"studio\");\n } else if (isContentRoute && currentModeRef.current !== \"content\") {\n setModeRef.current(\"content\");\n }\n }, [location.pathname, urlController, devViews]);\n\n return null;\n}\n\n","import React, { useLayoutEffect } from \"react\";\nimport { useRebaseRegistryDispatch } from \"@rebasepro/core\";\nimport type { RebaseCMSConfig } from \"@rebasepro/types\";\n\n/**\n * Declarative component to configure the CMS in Rebase.\n * Renders nothing — purely registers config into the RebaseRegistry.\n *\n * When `collectionEditor` is provided, the built-in visual schema editor\n * is auto-wired as a native feature (slots, provider, Studio view) without\n * needing any external plugin.\n */\nexport function RebaseCMS({ collections, homePage, entityViews, entityActions, plugins, collectionEditor, navigationGroupMappings }: RebaseCMSConfig) {\n const dispatch = useRebaseRegistryDispatch();\n\n useLayoutEffect(() => {\n dispatch.registerCMS({ collections,\nhomePage,\nentityViews,\nentityActions,\nplugins,\ncollectionEditor,\nnavigationGroupMappings });\n return () => dispatch.unregisterCMS();\n }, [dispatch, collections, homePage, entityViews, entityActions, plugins, collectionEditor, navigationGroupMappings]);\n\n return null;\n}\n","import React from \"react\";\nimport {\n useRebaseRegistry,\n useAuthController\n} from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\nimport { LoginView } from \"@rebasepro/core\";\nimport type { AuthControllerExtended } from \"@rebasepro/types\";\n\n/**\n * Auth gate component that handles the authentication flow.\n *\n * - Shows a loading spinner while `authController.initialLoading` is true.\n * - Shows the login view when no user is authenticated.\n * - Renders `children` when a user is authenticated.\n *\n * **Independently usable**: Use this alone when you want auth gating\n * without the full CMS layout or navigation.\n *\n * @example\n * ```tsx\n * <RebaseAuthGate>\n * <MyCustomApp />\n * </RebaseAuthGate>\n * ```\n */\nexport function RebaseAuthGate({ children }: { children: React.ReactNode }) {\n const registry = useRebaseRegistry();\n const authController = useAuthController();\n\n\n if (authController?.initialLoading) {\n return <CircularProgressCenter size={\"large\"}/>;\n }\n\n if (!authController?.user) {\n const ActiveLoginView = registry.authConfig?.loginView ?? (\n <LoginView authController={authController as AuthControllerExtended}/>\n );\n return <>{ActiveLoginView}</>;\n }\n\n return <>{children}</>;\n}\n","import React from \"react\";\nimport { Outlet } from \"react-router-dom\";\nimport {\n useAdminModeController,\n useRebaseRegistry\n} from \"@rebasepro/core\";\n\nimport { Scaffold } from \"./app/Scaffold\";\nimport { AppBar } from \"./app/AppBar\";\nimport { Drawer } from \"./app/Drawer\";\nimport { SideDialogs } from \"./SideDialogs\";\nimport { AdminModeSyncer } from \"./AdminModeSyncer\";\nimport type { AppView } from \"@rebasepro/types\";\n\nexport interface RebaseLayoutProps {\n /** Title shown in the drawer. */\n title?: string;\n /** Custom AppBar to override the default. */\n appBar?: React.ReactNode;\n /** Custom Drawer to override the default. */\n drawer?: React.ReactNode;\n /** Whether to auto-open the drawer on load. */\n autoOpenDrawer?: boolean;\n /** Dev views passed to AdminModeSyncer (resolved from RebaseNavigation). */\n devViews?: AppView[];\n}\n\n/**\n * Layout layer — provides the Scaffold, AppBar, Drawer, and SideDialogs.\n *\n * Wraps the route outlet with the standard Rebase admin layout.\n * Override individual pieces (appBar, drawer) via props.\n *\n * **Independently usable**: Use this when you want the Rebase layout\n * without its default route definitions.\n *\n * @example\n * ```tsx\n * <RebaseLayout title=\"My Admin\">\n * <Route path=\"/\" element={<MyHomePage />} />\n * <Route path=\"/custom\" element={<CustomView />} />\n * </RebaseLayout>\n * ```\n */\nexport function RebaseLayout(props: RebaseLayoutProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n devViews = []\n } = props;\n\n const adminModeController = useAdminModeController();\n\n const ActiveAppBar = appBar ?? <AppBar/>;\n const ActiveDrawer = drawer ?? (\n <Drawer\n title={title}\n logoDestination={adminModeController.mode === \"studio\" ? \"/s\" : \"/\"}\n />\n );\n\n return (\n <Scaffold autoOpenDrawer={autoOpenDrawer}>\n <AdminModeSyncer devViews={devViews}/>\n {ActiveAppBar}\n {ActiveDrawer}\n <Outlet/>\n <SideDialogs/>\n </Scaffold>\n );\n}\n","import React, { useMemo } from \"react\";\nimport {\n useRebaseRegistry\n} from \"@rebasepro/core\";\n\nimport { RebaseAuthGate } from \"./RebaseAuthGate\";\nimport { RebaseNavigation } from \"./RebaseNavigation\";\nimport { RebaseLayout } from \"./RebaseLayout\";\nimport { RebaseRouteDefs } from \"./RebaseRouteDefs\";\n\nexport interface RebaseShellProps {\n title?: string;\n appBar?: React.ReactNode;\n drawer?: React.ReactNode;\n autoOpenDrawer?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Convenience component that composes all four CMS layers:\n *\n * ```\n * <RebaseAuthGate>\n * <RebaseNavigation>\n * <RebaseRouteDefs layout={<RebaseLayout>}>\n * {children}\n * </RebaseRouteDefs>\n * </RebaseNavigation>\n * </RebaseAuthGate>\n * ```\n *\n * Each layer is independently usable — see their individual docs.\n * RebaseShell is sugar that composes them all with sensible defaults.\n */\nexport function RebaseShell(props: RebaseShellProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n children\n } = props;\n\n const registry = useRebaseRegistry();\n\n // Compute devViews for the layout's AdminModeSyncer\n const devViews = useMemo(() => {\n return registry.studioConfig?.devViews ?? [];\n }, [registry.studioConfig?.devViews]);\n\n return (\n <RebaseAuthGate>\n <RebaseNavigation>\n <RebaseRouteDefs\n layout={\n <RebaseLayout\n title={title}\n appBar={appBar}\n drawer={drawer}\n autoOpenDrawer={autoOpenDrawer}\n devViews={devViews}\n />\n }\n >\n {children}\n </RebaseRouteDefs>\n </RebaseNavigation>\n </RebaseAuthGate>\n );\n}\n","import type { ArrayProperty, MapProperty, Property } from \"@rebasepro/types\";\nimport React from \"react\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\nimport type { PropertyPreviewProps } from \"../../types/components/PropertyPreviewProps\";\nimport { PropertyPreview } from \"../PropertyPreview\";\n\n/**\n * @group Preview components\n */\nexport function ArrayOfMapsPreview({\n propertyKey,\n value,\n property,\n size\n // entity\n}: PropertyPreviewProps<ArrayProperty>) {\n\n if (Array.isArray(property?.of)) {\n throw Error(\"Using array properties instead of single one in `of` in ArrayProperty\");\n }\n\n if (property?.type !== \"array\" || !property.of || property.of.type !== \"map\")\n throw Error(\"Picked wrong preview component ArrayOfMapsPreview\");\n\n const mapProperty = property.of;\n const properties = mapProperty.properties;\n if (!properties) {\n throw Error(`You need to specify a 'properties' prop (or specify a custom field) in your map property ${propertyKey}`);\n }\n const values = value;\n const previewProperties: string[] | undefined = (mapProperty as MapProperty).previewProperties;\n\n if (!values) return null;\n\n let mapProperties = previewProperties;\n if (!mapProperties || !mapProperties.length) {\n mapProperties = Object.keys(properties);\n if (size)\n mapProperties = mapProperties.slice(0, 3);\n }\n\n return (\n <div className=\"table-auto text-xs\">\n <div>\n {values &&\n values.map((v: any, index: number) => {\n return (\n <div key={`table_${v}_${index}`}\n className=\"border-b last:border-b-0 py-2\">\n {mapProperties && mapProperties.map(\n (key) => (\n <div\n key={`table-cell-${key as string}`}\n className=\"table-cell\"\n >\n <ErrorBoundary>\n <PropertyPreview\n propertyKey={key as string}\n value={(v)[key]}\n property={properties[key as string] as Property}\n // entity={entity}\n size={\"small\"}/>\n </ErrorBoundary>\n </div>\n )\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useCollectionRegistryController } from \"../_cms_internals\";\nimport { ErrorView, useTranslation } from \"@rebasepro/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@rebasepro/ui\";\nimport { prettifyIdentifier } from \"@rebasepro/utils\";\nimport { getLastSegment } from \"@rebasepro/common\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const registry = useCollectionRegistryController();\n const path = getLastSegment(pathProp);\n const parentCollectionSlugs = registry.getParentCollectionSlugs(pathProp);\n const parentEntityIds = registry.getParentEntityIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n const { t } = useTranslation();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={t(\"studio_missing_reference_error\", { path })}/>\n <Button className={\"mx-2\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path,\nname: prettifyIdentifier(path) },\n parentCollectionSlugs, parentEntityIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n {t(\"studio_missing_reference_create\")}\n </Button>\n </div>;\n}\n\n","import React from \"react\";\nimport { CollectionActionsProps } from \"@rebasepro/types\";\nimport { Select, SelectItem } from \"@rebasepro/ui\";\nimport { useTranslation, useInternalUserManagementController } from \"@rebasepro/core\";\n\nexport function RolesFilterSelect({\n tableController\n}: CollectionActionsProps<any>) {\n const { t } = useTranslation();\n const userManagement = useInternalUserManagementController();\n const roles = userManagement?.roles || [];\n\n const currentFilterValue = (tableController.filterValues?.roles?.[1] as string) || \"\";\n\n const handleRoleChange = (newRole: string) => {\n const filterVal = newRole === \"\" ? undefined : newRole;\n if (filterVal) {\n tableController.setFilterValues?.({\n ...tableController.filterValues,\n roles: [\"array-contains\", filterVal]\n });\n } else {\n const nextFilters = { ...tableController.filterValues };\n delete nextFilters.roles;\n tableController.setFilterValues?.(nextFilters);\n }\n };\n\n if (!roles || roles.length === 0) return null;\n\n return (\n <Select\n value={currentFilterValue || \"__all__\"}\n onValueChange={(v) => handleRoleChange(v === \"__all__\" ? \"\" : v)}\n placeholder={t(\"all_roles\") || \"All Roles\"}\n size=\"small\"\n className=\"w-48\"\n >\n <SelectItem value=\"__all__\">{t(\"all_roles\") || \"All Roles\"}</SelectItem>\n {roles.map(role => (\n <SelectItem key={role.id} value={role.id}>{role.name}</SelectItem>\n ))}\n </Select>\n );\n}\n","import React from \"react\";\nimport { FieldProps } from \"../../types/fields\";\nimport { MultiSelect, MultiSelectItem } from \"@rebasepro/ui\";\nimport { useTranslation, useInternalUserManagementController } from \"@rebasepro/core\";\nimport { RoleChip } from \"./RoleChip\";\n\nexport function UserRolesSelectField({\n propertyKey,\n value,\n setValue,\n disabled\n}: FieldProps) {\n const { t } = useTranslation();\n const userManagement = useInternalUserManagementController();\n const roles = userManagement?.roles || [];\n\n const selectedRoleIds = (value || []).map((r: any) => {\n if (typeof r === \"object\" && r !== null) {\n return r.id;\n }\n return r;\n });\n\n const handleValueChange = (val: string[]) => {\n const references = val.map(id => ({\n id,\n path: \"roles\",\n __type: \"relation\"\n }));\n setValue(references);\n };\n\n return (\n <div className=\"col-span-12\">\n <MultiSelect\n className=\"w-full\"\n label={t(\"roles\") || \"Roles\"}\n value={selectedRoleIds}\n onValueChange={handleValueChange}\n disabled={disabled}\n >\n {roles.map(role => (\n <MultiSelectItem key={role.id} value={role.id}>\n <RoleChip role={role}/>\n </MultiSelectItem>\n ))}\n </MultiSelect>\n </div>\n );\n}\n"],"names":["resolveNavigationFrom","path","context","data","navigationStateController","collectionRegistryController","Error","navigationEntries","getNavigationEntriesFromPath","collections","resultPromises","map","entry","type","Promise","resolve","collection","getCollection","slug","findById","entityId","then","entity","undefined","filter","v","Boolean","all","useResolvedNavigationFrom","t0","$","_c","useCMSContext","setData","useState","dataLoading","setDataLoading","dataLoadingError","setDataLoadingError","t1","catch","e","finally","t2","useEffect","t3","bb0","t4","Symbol","for","ReferenceWidget","name","multiselect","disabled","value","onReferenceSelected","onMultipleReferenceSelected","previewProperties","fixedFilter","size","className","includeId","includeEntityLink","useCollectionRegistryController","useMemo","onSingleEntitySelected","useCallback","reference","getReferenceFrom","onMultipleEntitiesSelected","entities","references","referenceDialogController","useEntitySelectionDialog","stopPropagation","child","onEntryClick","open","Array","isArray","ref","index","isEntityReference","cls","AdminModeSyncer","devViews","location","useLocation","urlController","useUrlController","adminModeController","useAdminModeController","currentModeRef","React","useRef","mode","current","setModeRef","setMode","pathname","isContentRoute","isUrlCollectionPath","basePath","studioHomePath","isStudioRoute","startsWith","some","view","viewPath","buildAppUrlPath","RebaseCMS","homePage","entityViews","entityActions","plugins","collectionEditor","navigationGroupMappings","dispatch","useRebaseRegistryDispatch","registerCMS","unregisterCMS","useLayoutEffect","RebaseAuthGate","children","registry","useRebaseRegistry","authController","useAuthController","initialLoading","user","authConfig","loginView","ActiveLoginView","RebaseLayout","props","title","appBar","drawer","autoOpenDrawer","ActiveAppBar","t5","ActiveDrawer","t6","t7","t8","t9","RebaseShell","studioConfig","ArrayOfMapsPreview","propertyKey","property","of","mapProperty","properties","values","mapProperties","length","slice","key","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionSlugs","parentCollectionSlugs","getParentEntityIds","parentEntityIds","useCollectionEditorController","t","useTranslation","T0","ErrorView","createCollection","initialValues","prettifyIdentifier","redirect","sourceClick","RolesFilterSelect","tableController","userManagement","useInternalUserManagementController","roles","currentFilterValue","filterValues","newRole","filterVal","setFilterValues","nextFilters","handleRoleChange","_temp","role","id","UserRolesSelectField","setValue","selectedRoleIds","val","_temp2","handleValueChange","_temp3","__type","r"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/hooks/useResolvedNavigationFrom.tsx","../src/components/ReferenceWidget.tsx","../src/components/AdminModeSyncer.tsx","../src/components/RebaseCMS.tsx","../src/components/RebaseAuthGate.tsx","../src/components/RebaseLayout.tsx","../src/components/HomePage/FavouritesView.tsx","../src/components/HomePage/NavigationGroup.tsx","../src/components/HomePage/NavigationCardBinding.tsx","../src/components/HomePage/HomePageDnD.tsx","../src/components/HomePage/RenameGroupDialog.tsx","../src/components/HomePage/ContentHomePage.tsx","../src/routes/RebaseRoute.tsx","../src/routes/CustomViewRoute.tsx","../src/components/RebaseRouteDefs.tsx","../src/components/RebaseShell.tsx","../src/preview/property_previews/ArrayOfMapsPreview.tsx","../src/collection_editor/ui/MissingReferenceWidget.tsx","../src/components/admin/RolesFilterSelect.tsx","../src/components/admin/UserRolesSelectField.tsx"],"sourcesContent":["import type { EntityCollection, EntityCustomView } from \"@rebasepro/types\";\nimport { Entity, RebaseContext, User } from \"@rebasepro/types\";\nimport { useEffect, useState, useMemo } from \"react\";\nimport { getNavigationEntriesFromPath } from \"@rebasepro/common\";\nimport { useCMSContext } from \"./useCMSContext\";\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport type ResolvedNavigationEntry<M extends Record<string, unknown>> =\n | ResolvedNavigationEntity<M>\n | ResolvedNavigationCollection<M>\n | ResolvedNavigationEntityCustom<M>;\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationEntity<M extends Record<string, unknown>> {\n type: \"entity\";\n entity: Entity<M>;\n entityId: string | number;\n path: string;\n parentCollection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\nexport interface ResolvedNavigationCollection<M extends Record<string, unknown>> {\n type: \"collection\";\n path: string;\n collection: EntityCollection<M>;\n}\n\n/**\n * @see resolveNavigationFrom\n * @group Hooks and utilities\n */\ninterface ResolvedNavigationEntityCustom<M extends Record<string, unknown>> {\n type: \"custom_view\";\n path: string;\n view: EntityCustomView<M>;\n}\n\n/**\n * Use this function to retrieve an array of navigation entries (resolved\n * collection, entity or entity custom_view) for the given path. You need to pass the app context\n * that you receive in different callbacks, such as the save hooks.\n *\n * It will take into account the `navigation` provided at the `Rebase` level.\n *\n * @param path\n * @param context\n * @group Hooks and utilities\n */\nexport function resolveNavigationFrom<M extends Record<string, unknown>, USER extends User>({\n path,\n context\n}: {\n path: string,\n context: RebaseContext<USER>\n}): Promise<ResolvedNavigationEntry<M>[]> {\n\n const data = context.data;\n const { navigationStateController, collectionRegistryController } = context;\n\n if (!navigationStateController || !collectionRegistryController) {\n throw Error(\"Calling resolveNavigationFrom, but main navigation has not yet been initialised\");\n }\n\n const navigationEntries = getNavigationEntriesFromPath({\n path,\n collections: collectionRegistryController.collections ?? []\n });\n\n const resultPromises: Promise<ResolvedNavigationEntry<any>>[] = navigationEntries\n .map((entry) => {\n if (entry.type === \"collection\") {\n return Promise.resolve(entry);\n } else if (entry.type === \"entity\") {\n const collection = collectionRegistryController.getCollection(entry.slug);\n if (!collection) {\n throw Error(`No collection defined in the navigation for the entity with path ${entry.slug}`);\n }\n return data.collection(entry.slug).findById(entry.entityId)\n .then((entity) => {\n if (!entity) return undefined;\n return { ...entry,\nentity };\n });\n } else if (entry.type === \"custom_view\") {\n return Promise.resolve(entry);\n } else {\n throw Error(\"Unmapped element in useEntitiesFromPath\");\n }\n })\n .filter(v => Boolean(v)) as Promise<ResolvedNavigationEntry<any>>[];\n\n return Promise.all(resultPromises);\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFromProps {\n path: string;\n}\n\n/**\n * @group Hooks and utilities\n */\nexport interface NavigationFrom<M extends Record<string, unknown>> {\n data?: ResolvedNavigationEntry<M>[]\n dataLoading: boolean,\n dataLoadingError?: Error\n}\n\n/**\n * Use this hook to retrieve an array of navigation entries (resolved\n * collection or entity) for the given path. You can use this hook\n * in any React component that lives under `Rebase`\n * @group Hooks and utilities\n */\nexport function useResolvedNavigationFrom<M extends Record<string, unknown>>(\n {\n path\n }: NavigationFromProps): NavigationFrom<M> {\n\n const context = useCMSContext();\n const { navigationStateController, collectionRegistryController } = context;\n\n const [data, setData] = useState<ResolvedNavigationEntry<M>[] | undefined>();\n const [dataLoading, setDataLoading] = useState<boolean>(false);\n const [dataLoadingError, setDataLoadingError] = useState<Error | undefined>();\n\n useEffect(() => {\n if (navigationStateController && collectionRegistryController) {\n setDataLoading(true);\n setDataLoadingError(undefined);\n resolveNavigationFrom<M, User>({ path,\ncontext })\n .then(setData)\n .catch((e) => setDataLoadingError(e))\n .finally(() => setDataLoading(false));\n }\n\n }, [path, context]);\n\n return useMemo(() => {\n if (!navigationStateController) {\n return { dataLoading: true };\n }\n return { data,\ndataLoading,\ndataLoadingError };\n }, [navigationStateController, data, dataLoading, dataLoadingError]);\n}\n","import { useEntitySelectionDialog } from \"../hooks/useEntitySelectionDialog\";\nimport type { EntityCollection } from \"@rebasepro/types\";\nimport React, { useCallback, useMemo } from \"react\";\n\nimport { Entity, EntityReference, FilterValues } from \"@rebasepro/types\";\nimport type { PreviewSize } from \"../types/components/PropertyPreviewProps\";\nimport { getReferenceFrom } from \"@rebasepro/common\";\nimport { ReferencePreview } from \"../preview\";\nimport { Button, cls } from \"@rebasepro/ui\";\nimport { useCollectionRegistryController } from \"../index\";\n\nexport type ReferenceWidgetProps<M extends Record<string, unknown>> = {\n name?: string,\n multiselect?: boolean,\n value: EntityReference | EntityReference[] | null,\n onReferenceSelected?: (params: {\n reference: EntityReference | null,\n entity: Entity<M> | null\n }) => void,\n onMultipleReferenceSelected?: (params: {\n references: EntityReference[] | null,\n entities: Entity<M>[] | null\n }) => void,\n path: string,\n disabled?: boolean,\n previewProperties?: string[];\n /**\n * Allow selection of entities that pass the given filter only.\n */\n fixedFilter?: FilterValues<string>;\n size: PreviewSize;\n className?: string;\n includeId?: boolean;\n includeEntityLink?: boolean;\n};\n\n/**\n * This field allows selecting reference/s.\n */\nexport function ReferenceWidget<M extends Record<string, unknown>>({\n name,\n multiselect = false,\n path,\n disabled,\n value,\n onReferenceSelected,\n onMultipleReferenceSelected,\n previewProperties,\n fixedFilter,\n size,\n className,\n includeId,\n includeEntityLink\n}: ReferenceWidgetProps<M>) {\n\n const collectionRegistryController = useCollectionRegistryController();\n\n const collection: EntityCollection | undefined = useMemo(() => {\n return collectionRegistryController.getCollection(path);\n }, [path, collectionRegistryController.getCollection]);\n\n const onSingleEntitySelected = useCallback((entity: Entity<M> | null) => {\n if (disabled)\n return;\n if (onReferenceSelected) {\n const reference = entity ? getReferenceFrom(entity) : null;\n onReferenceSelected?.({\n reference,\n entity\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const onMultipleEntitiesSelected = useCallback((entities: Entity<M>[]) => {\n if (disabled)\n return;\n if (onMultipleReferenceSelected) {\n const references = entities ? entities.map(e => getReferenceFrom(e)) : null;\n onMultipleReferenceSelected({\n references,\n entities\n });\n }\n }, [disabled, onReferenceSelected]);\n\n const referenceDialogController = useEntitySelectionDialog({\n multiselect,\n path,\n collection,\n onSingleEntitySelected,\n onMultipleEntitiesSelected,\n fixedFilter\n }\n );\n\n const clearValue = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n if (multiselect) {\n onMultipleEntitiesSelected([]);\n } else {\n onSingleEntitySelected(null);\n }\n }, [onReferenceSelected]);\n\n let child: React.ReactNode;\n\n const onEntryClick = () => {\n if (disabled)\n return;\n referenceDialogController.open();\n };\n\n if (Array.isArray(value)) {\n child = <div className={\"flex flex-col gap-4\"}>\n {value.map((ref, index) => {\n return <ReferencePreview\n key={`reference_preview_${index}`}\n onClick={onEntryClick}\n reference={ref}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink}/>\n })}\n </div>\n } else if (value?.isEntityReference && value?.isEntityReference()) {\n child = <ReferencePreview\n reference={value}\n onClick={onEntryClick}\n disabled={disabled}\n previewProperties={previewProperties}\n size={size}\n includeId={includeId}\n includeEntityLink={includeEntityLink}/>\n\n }\n return <div className={cls(\"text-sm font-medium\",\n \"min-w-80 flex flex-col gap-4\",\n \"relative transition-colors duration-200 ease-in rounded-xs font-medium\",\n disabled ? \"bg-opacity-50\" : \"hover:bg-opacity-75\",\n \"dark:text-white/50 text-text-primary/50 dark:text-text-primary-dark/50 dark:text-white/50\",\n className\n )}>\n\n {child}\n {!value && <div className=\"justify-center text-left\">\n <Button disabled={disabled}\n onClick={onEntryClick}>\n Edit {name}\n </Button>\n </div>}\n\n </div>;\n}\n","import type { AppView } from \"@rebasepro/types\";\nimport React, { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n;\nimport { useUrlController } from \"../hooks/navigation/contexts/UrlContext\";\nimport { useAdminModeController } from \"@rebasepro/core\";\nexport interface AdminModeSyncerProps {\n /**\n * Map of views designated as 'Studio' views.\n * Navigating to any of these views will automatically flag the admin mode as \"studio\".\n */\n devViews?: AppView[];\n}\n\n/**\n * A highly customizable utility component that observes react-router routes and\n * actively shifts the internal Rebase `adminModeController` context to match\n * the user's active window segment (e.g., Content vs Studio mode).\n *\n * Placing this anywhere safely inside the Rebase layout automatically triggers\n * UI mode synchronization.\n */\nexport function AdminModeSyncer({ devViews }: AdminModeSyncerProps) {\n const location = useLocation();\n const urlController = useUrlController();\n const adminModeController = useAdminModeController();\n\n // Keep track of the current mode using a ref to avoid adding it to the dependency array\n const currentModeRef = React.useRef(adminModeController.mode);\n currentModeRef.current = adminModeController.mode;\n\n // Stable ref for setMode so it doesn't trigger the effect\n const setModeRef = React.useRef(adminModeController.setMode);\n setModeRef.current = adminModeController.setMode;\n\n useEffect(() => {\n const path = location.pathname;\n const isContentRoute = urlController.isUrlCollectionPath(path) || path === urlController.basePath;\n\n // Check both devViews slugs AND the studio home path (/s or basePath/s)\n const studioHomePath = urlController.basePath === \"/\" ? \"/s\" : `${urlController.basePath}/s`;\n const isStudioRoute = path === studioHomePath || path.startsWith(studioHomePath + \"/\") || devViews?.some(view => {\n const viewPath = urlController.buildAppUrlPath(view.slug);\n return path.startsWith(`${viewPath}/`) || path === viewPath;\n });\n\n if (isStudioRoute && currentModeRef.current !== \"studio\") {\n setModeRef.current(\"studio\");\n } else if (isContentRoute && currentModeRef.current !== \"content\") {\n setModeRef.current(\"content\");\n }\n }, [location.pathname, urlController, devViews]);\n\n return null;\n}\n\n","import React, { useLayoutEffect } from \"react\";\nimport { useRebaseRegistryDispatch } from \"@rebasepro/core\";\nimport type { RebaseCMSConfig } from \"@rebasepro/types\";\n\n/**\n * Declarative component to configure the CMS in Rebase.\n * Renders nothing — purely registers config into the RebaseRegistry.\n *\n * When `collectionEditor` is provided, the built-in visual schema editor\n * is auto-wired as a native feature (slots, provider, Studio view) without\n * needing any external plugin.\n */\nexport function RebaseCMS({ collections, homePage, entityViews, entityActions, plugins, collectionEditor, navigationGroupMappings }: RebaseCMSConfig) {\n const dispatch = useRebaseRegistryDispatch();\n\n useLayoutEffect(() => {\n dispatch.registerCMS({ collections,\nhomePage,\nentityViews,\nentityActions,\nplugins,\ncollectionEditor,\nnavigationGroupMappings });\n return () => dispatch.unregisterCMS();\n }, [dispatch, collections, homePage, entityViews, entityActions, plugins, collectionEditor, navigationGroupMappings]);\n\n return null;\n}\n","import React from \"react\";\nimport {\n useRebaseRegistry,\n useAuthController\n} from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\nimport { LoginView } from \"@rebasepro/core\";\nimport type { AuthControllerExtended } from \"@rebasepro/types\";\n\n/**\n * Auth gate component that handles the authentication flow.\n *\n * - Shows a loading spinner while `authController.initialLoading` is true.\n * - Shows the login view when no user is authenticated.\n * - Renders `children` when a user is authenticated.\n *\n * **Independently usable**: Use this alone when you want auth gating\n * without the full CMS layout or navigation.\n *\n * @example\n * ```tsx\n * <RebaseAuthGate>\n * <MyCustomApp />\n * </RebaseAuthGate>\n * ```\n */\nexport function RebaseAuthGate({ children }: { children: React.ReactNode }) {\n const registry = useRebaseRegistry();\n const authController = useAuthController();\n\n\n if (authController?.initialLoading) {\n return <CircularProgressCenter size={\"large\"}/>;\n }\n\n if (!authController?.user) {\n const ActiveLoginView = registry.authConfig?.loginView ?? (\n <LoginView authController={authController as AuthControllerExtended}/>\n );\n return <>{ActiveLoginView}</>;\n }\n\n return <>{children}</>;\n}\n","import React from \"react\";\nimport { Outlet } from \"react-router-dom\";\nimport {\n useAdminModeController,\n useRebaseRegistry\n} from \"@rebasepro/core\";\n\nimport { Scaffold } from \"./app/Scaffold\";\nimport { AppBar } from \"./app/AppBar\";\nimport { Drawer } from \"./app/Drawer\";\nimport { SideDialogs } from \"./SideDialogs\";\nimport { AdminModeSyncer } from \"./AdminModeSyncer\";\nimport type { AppView } from \"@rebasepro/types\";\n\nexport interface RebaseLayoutProps {\n /** Title shown in the drawer. */\n title?: string;\n /** Custom AppBar to override the default. */\n appBar?: React.ReactNode;\n /** Custom Drawer to override the default. */\n drawer?: React.ReactNode;\n /** Whether to auto-open the drawer on load. */\n autoOpenDrawer?: boolean;\n /** Dev views passed to AdminModeSyncer (resolved from RebaseNavigation). */\n devViews?: AppView[];\n}\n\n/**\n * Layout layer — provides the Scaffold, AppBar, Drawer, and SideDialogs.\n *\n * Wraps the route outlet with the standard Rebase admin layout.\n * Override individual pieces (appBar, drawer) via props.\n *\n * **Independently usable**: Use this when you want the Rebase layout\n * without its default route definitions.\n *\n * @example\n * ```tsx\n * <RebaseLayout title=\"My Admin\">\n * <Route path=\"/\" element={<MyHomePage />} />\n * <Route path=\"/custom\" element={<CustomView />} />\n * </RebaseLayout>\n * ```\n */\nexport function RebaseLayout(props: RebaseLayoutProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n devViews = []\n } = props;\n\n const adminModeController = useAdminModeController();\n\n const ActiveAppBar = appBar ?? <AppBar\n includeLanguageToggle={false}\n includeModeToggle={false}\n includeUserMenu={false}\n />;\n const ActiveDrawer = drawer ?? (\n <Drawer\n title={title}\n logoDestination={adminModeController.mode === \"studio\" ? \"/s\" : \"/\"}\n />\n );\n\n return (\n <Scaffold autoOpenDrawer={autoOpenDrawer}>\n <AdminModeSyncer devViews={devViews}/>\n {ActiveAppBar}\n {ActiveDrawer}\n <Outlet/>\n <SideDialogs/>\n </Scaffold>\n );\n}\n","import type { NavigationEntry } from \"@rebasepro/types\";\nimport { useNavigate } from \"react-router-dom\";\n;\nimport { Chip, Collapse, StarIcon } from \"@rebasepro/ui\";\nimport { useUserConfigurationPersistence } from \"@rebasepro/core\";\nimport { useNavigationStateController } from \"../../index\";\n\nfunction NavigationChip({ entry }: { entry: NavigationEntry }) {\n\n const navigate = useNavigate();\n const userConfigurationPersistence = useUserConfigurationPersistence();\n\n if (!userConfigurationPersistence)\n return null;\n\n const favourite = userConfigurationPersistence.favouritePaths.includes(entry.slug);\n const onIconClick = (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (favourite) {\n userConfigurationPersistence.setFavouritePaths(\n userConfigurationPersistence.favouritePaths.filter(p => p !== entry.slug)\n );\n } else {\n userConfigurationPersistence.setFavouritePaths(\n [...userConfigurationPersistence.favouritePaths, entry.slug]\n );\n }\n };\n return <Chip\n key={entry.slug}\n onClick={() => navigate(entry.url)}\n icon={<StarIcon\n onClick={onIconClick}\n size={\"small\"}\n className={favourite ? \"text-secondary\" : \"text-surface-400 dark:text-surface-500\"}/>\n }>\n {entry.name}\n </Chip>;\n}\n\nexport function FavouritesView({ hidden }: { hidden: boolean }) {\n\n const navigationStateController = useNavigationStateController();\n const userConfigurationPersistence = useUserConfigurationPersistence();\n\n if (!userConfigurationPersistence)\n return null;\n\n const favouriteCollections = (userConfigurationPersistence?.favouritePaths ?? [])\n .map((path) => navigationStateController.topLevelNavigation?.navigationEntries.find((entry) => entry.slug === path))\n .filter(Boolean) as NavigationEntry[];\n\n return <Collapse in={favouriteCollections.length > 0}>\n <div className=\"flex flex-row flex-wrap gap-2 pb-2 min-h-[32px]\">\n {favouriteCollections.map((entry) => <NavigationChip key={entry.slug}\n entry={entry}/>)}\n </div>\n </Collapse>;\n}\n","import React, { PropsWithChildren, useState } from \"react\";\nimport { cls, ExpandablePanel, IconButton, iconSize, PencilIcon, Typography } from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\n\nexport function NavigationGroup({\n children,\n group,\n minimised,\n isPreview,\n isPotentialCardDropTarget,\n onEditGroup,\n dndDisabled,\n collapsed,\n onToggleCollapsed\n}: PropsWithChildren<{\n group: string | undefined,\n minimised?: boolean,\n isPreview?: boolean,\n isPotentialCardDropTarget?: boolean,\n onEditGroup?: (groupName: string) => void;\n dndDisabled?: boolean;\n collapsed?: boolean;\n onToggleCollapsed?: () => void;\n}>) {\n\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const currentGroupName = group ?? t(\"views_group\");\n\n // Show caret only when not in preview and there is a toggle handler\n const showCaret = !isPreview && !!onToggleCollapsed;\n\n // Helper for the title content (left side)\n const TitleContent = (\n <div className={cls(\"flex items-center\", isPreview ? \"px-1 py-0.5\" : \"\")}\n >\n <Typography\n variant={isPreview ? \"body2\" : \"caption\"}\n component={\"h2\"}\n color=\"secondary\"\n className={cls(\n \"px-4 py-1 rounded\",\n \"font-semibold text-[11px] uppercase tracking-wider text-surface-400 dark:text-surface-400\"\n )}\n >\n {currentGroupName}\n </Typography>\n {!isPreview && onEditGroup && !dndDisabled && (\n <IconButton\n size=\"smallest\"\n onClick={(e) => {\n e.stopPropagation(); // Prevent toggle on click\n onEditGroup(currentGroupName);\n }}\n className={cls(\"ml-2 \", isHovered ? \"opacity-100\" : \"opacity-0\", \"transition-opacity duration-100\")}\n >\n <PencilIcon size={iconSize.smallest}/>\n </IconButton>\n )}\n </div>\n );\n\n return (\n <div className={cls(\n !isPotentialCardDropTarget ? \"my-10\" : \"my-6\",\n \"transition-all duration-200 ease-in-out\"\n )}\n >\n {/* Preview: static header + content (no caret / no collapse) */}\n {isPreview && (\n <>\n <div\n className={cls(\n \"flex items-center justify-between w-full\",\n \"p-4 py-2\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {TitleContent}\n </div>\n {children}\n </>\n )}\n\n {/* Interactive collapsible version when a toggle handler is provided */}\n {!isPreview && showCaret && (\n <ExpandablePanel\n invisible\n expanded={!collapsed}\n onExpandedChange={(open) => {\n if (open !== !collapsed) {\n onToggleCollapsed?.();\n }\n }}\n className={cls(\"mt-6\")}\n titleClassName={cls(\n \"min-h-0 p-0 border-none\",\n \"rounded flex items-center justify-between w-full\",\n \"hover:bg-transparent\",\n \"cursor-pointer select-none\",\n collapsed && \"bg-surface-100 dark:bg-surface-900/50\"\n )}\n innerClassName={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}\n title={\n <div\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className=\"flex items-center\"\n >\n {TitleContent}\n </div>\n }\n >\n {minimised ? (\n <div className={cls(\"mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\")}\n style={{ minHeight: \"50px\" }}>\n </div>\n ) : (\n <div className={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}>\n {children}\n </div>\n )}\n </ExpandablePanel>\n )}\n\n {/* Non-collapsible (no caret) runtime, keep old behavior */}\n {!isPreview && !showCaret && (\n <>\n <div\n className={cls(\n \"flex items-center justify-between w-full\",\n \"mt-6\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {TitleContent}\n </div>\n\n {!collapsed && (\n minimised ? (\n <div className={cls(\"mt-4 p-8 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\")}\n style={{ minHeight: \"50px\" }}>\n </div>\n ) : (\n <div className={cls(\"mt-4\", !minimised ? \"pt-0\" : \"\")}>\n {children}\n </div>\n )\n )}\n </>\n )}\n </div>\n );\n}\n","import type { NavigationEntry, EntityCollection } from \"@rebasepro/types\";\nimport { useNavigate } from \"react-router-dom\";\n;\nimport { IconButton, StarIcon, Tooltip } from \"@rebasepro/ui\";\nimport { NavigationCard } from \"./NavigationCard\";\nimport { SmallNavigationCard } from \"./SmallNavigationCard\";\nimport React from \"react\";\nimport { useRebaseContext, useSlot } from \"@rebasepro/core\";\nimport { IconForView } from \"@rebasepro/core\";\nimport { useUserConfigurationPersistence } from \"@rebasepro/core\";\n\n/**\n * This is the component used in the home page to render a card for each\n * collection or view.\n * @group Components\n * @param view\n * @param path\n * @param collection\n * @param url\n * @param name\n * @param description\n * @param onClick\n\n */\nexport function NavigationCardBinding({\n slug,\n collection,\n view,\n url,\n name,\n description,\n onClick,\n type,\n shrink\n}: NavigationEntry & {\n onClick?: () => void,\n shrink?: boolean // <-- add shrink prop type\n}) {\n\n const userConfigurationPersistence = useUserConfigurationPersistence();\n const collectionIcon = <IconForView collectionOrView={collection ?? view}/>;\n\n const navigate = useNavigate();\n const context = useRebaseContext();\n\n const favourite = (userConfigurationPersistence?.favouritePaths ?? []).includes(slug);\n\n const actionsArray: React.ReactNode[] = userConfigurationPersistence\n ? [\n <IconButton\n key={\"favourite\"}\n size={\"small\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (favourite) {\n userConfigurationPersistence.setFavouritePaths(\n userConfigurationPersistence.favouritePaths.filter(p => p !== slug)\n );\n } else {\n userConfigurationPersistence.setFavouritePaths(\n [...userConfigurationPersistence.favouritePaths, slug]\n );\n }\n }}>\n <StarIcon\n className={favourite ? \"text-secondary\" : \"text-surface-400 dark:text-surface-500\"}/>\n </IconButton>\n ]\n : [];\n\n const pluginCardActions = useSlot(\"home.collection.actions\", {\n slug: slug,\n collection: collection!,\n context\n });\n\n const pluginCardInsights = useSlot(\"home.card.insight\", {\n slug: slug,\n collection: collection!,\n context\n });\n\n\n const actions: React.ReactNode | undefined = <>\n {actionsArray}\n {pluginCardActions}\n </>\n\n return <NavigationCard\n icon={collectionIcon}\n name={name}\n description={description}\n actions={actions}\n additionalContent={pluginCardInsights.length > 0 ? <>{pluginCardInsights}</> : undefined}\n onClick={() => {\n onClick?.();\n navigate(url);\n if (userConfigurationPersistence) {\n userConfigurationPersistence.setRecentlyVisitedPaths(\n [slug, ...(userConfigurationPersistence.recentlyVisitedPaths ?? []).filter(p => p !== slug)]\n );\n }\n }}\n shrink={shrink}\n />;\n}\n","import type { NavigationEntry } from \"@rebasepro/types\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Active,\n Over,\n closestCenter,\n closestCorners,\n CollisionDetection,\n DropAnimation,\n getFirstCollision,\n KeyboardSensor,\n MouseSensor,\n pointerWithin,\n rectIntersection,\n TouchSensor,\n UniqueIdentifier,\n useDndMonitor,\n useDroppable,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport {\n AnimateLayoutChanges,\n arrayMove,\n defaultAnimateLayoutChanges,\n rectSortingStrategy,\n SortableContext,\n useSortable\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\nimport { NavigationCardBinding } from \"./NavigationCardBinding\";\n;\nimport { cls } from \"@rebasepro/ui\";\n\nconst animateLayoutChanges: AnimateLayoutChanges = (args) =>\n defaultAnimateLayoutChanges({\n ...args,\n wasDragging: true\n });\n\nconst dropAnimationConfig: DropAnimation = {};\n\nconst cloneSerializableNavigationEntry = (entry: NavigationEntry): NavigationEntry => {\n const clonedEntry: Partial<NavigationEntry> = {\n id: entry.id,\n slug: entry.slug,\n url: entry.url,\n name: entry.name,\n type: entry.type,\n collection: entry.collection ? { ...entry.collection } : undefined,\n view: entry.view ? { ...entry.view } : undefined,\n ...(entry.group && { group: entry.group }),\n ...(entry.description && { description: entry.description })\n };\n return clonedEntry as NavigationEntry;\n};\n\nconst cloneItemsForDnd = (items: { name: string; entries: NavigationEntry[] }[]) =>\n items.map((g) => ({\n name: g.name,\n entries: g.entries.map(cloneSerializableNavigationEntry)\n }));\n\n/* ─────────────────────────────────────────────────────────── */\n/* Sortable card & group */\n\n/* ─────────────────────────────────────────────────────────── */\nexport function SortableNavigationCard({\n entry,\n onClick\n}: {\n entry: NavigationEntry;\n onClick?: () => void;\n}) {\n const {\n setNodeRef,\n listeners,\n attributes,\n transform,\n transition,\n isDragging\n } =\n useSortable({\n id: entry.url,\n animateLayoutChanges\n });\n\n const style = {\n transform: transform ? CSS.Transform.toString(transform) : undefined,\n transition,\n opacity: isDragging ? 0 : 1\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes} {...listeners}>\n <NavigationCardBinding {...entry} onClick={onClick}/>\n </div>\n );\n}\n\nexport function NavigationGroupDroppable({\n id,\n itemIds,\n children,\n isPotentialCardDropTarget = false\n}: {\n id: UniqueIdentifier;\n itemIds: UniqueIdentifier[];\n children: React.ReactNode;\n isPotentialCardDropTarget?: boolean;\n}) {\n const { setNodeRef } = useDroppable({ id });\n\n return (\n <div\n ref={setNodeRef}\n className={cls(\n isPotentialCardDropTarget\n ? \"p-2 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg\"\n : undefined,\n \"transition-all duration-200 ease-in-out\"\n )}\n >\n <SortableContext items={itemIds} strategy={rectSortingStrategy}>\n {children}\n </SortableContext>\n </div>\n );\n}\n\nexport function SortableNavigationGroup({\n groupName,\n children,\n disabled\n}: {\n groupName: string;\n children: React.ReactNode;\n disabled?: boolean;\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } =\n useSortable({\n id: groupName,\n animateLayoutChanges,\n disabled\n });\n\n const style = {\n transform: transform ? CSS.Transform.toString(transform) : undefined,\n transition,\n opacity: isDragging ? 0 : 1\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes} {...listeners}>\n {children}\n </div>\n );\n}\n\nexport function useHomePageDnd({\n items,\n setItems,\n disabled,\n onCardMovedBetweenGroups,\n onGroupMoved,\n onNewGroupDrop,\n onPersist\n}: {\n items: { name: string; entries: NavigationEntry[] }[];\n setItems: (\n newItemsOrUpdater:\n | { name: string; entries: NavigationEntry[] }[]\n | ((\n currentItems: { name: string; entries: NavigationEntry[] }[]\n ) => { name: string; entries: NavigationEntry[] }[])\n ) => void;\n disabled: boolean;\n onCardMovedBetweenGroups?: (card: NavigationEntry) => void;\n onGroupMoved?: (groupName: string, oldIndex: number, newIndex: number) => void;\n onNewGroupDrop?: () => void;\n onPersist?: (latest: { name: string; entries: NavigationEntry[] }[]) => void;\n}) {\n /* ---------------- local state ---------------- */\n const dndItems = items;\n const setDndItems = setItems;\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n const [activeIsGroup, setActiveIsGroup] = useState(false);\n const [currentDraggingGroupId, setCurrentDraggingGroupId] =\n useState<UniqueIdentifier | null>(null);\n const [dndKitActiveNode, setDndKitActiveNode] = useState<Active | null>(null);\n const [isDraggingCardOnly, setIsDraggingCardOnly] = useState(false);\n const [dialogOpenForGroup, setDialogOpenForGroup] = useState<string | null>(null);\n const [isHoveringNewGroupDropZone, setIsHoveringNewGroupDropZone] =\n useState(false);\n const [pendingNewGroupName, setPendingNewGroupName] = useState<string | null>(null);\n const [stateBeforeNewGroup, setStateBeforeNewGroup] = useState<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n\n /* store the original state before any drag modifications */\n const preDragItemsRef = useRef<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n\n /* store interim state for cross-group moves */\n const interimItemsRef = useRef<\n { name: string; entries: NavigationEntry[] }[] | null\n >(null);\n useEffect(() => {\n interimItemsRef.current = dndItems;\n }, [dndItems]);\n\n /* ---------------- sensors ---------------- */\n const mouseSensor = useSensor(MouseSensor, { activationConstraint: { distance: 10 } });\n const touchSensor = useSensor(TouchSensor, {\n activationConstraint: {\n delay: 150,\n tolerance: 5\n }\n });\n const keyboardSensor = useSensor(KeyboardSensor);\n const sensors = useSensors(mouseSensor, touchSensor, keyboardSensor);\n\n /* ---------------- helpers ---------------- */\n const dndContainers = dndItems.map((g) => g.name);\n\n const findDndContainer = useCallback(\n (id: UniqueIdentifier): string | undefined => {\n if (!id) return undefined;\n const group = dndItems.find((g) => g.name === id);\n if (group) return group.name;\n for (const g of dndItems) {\n if (g.entries.some((e) => e.url === id)) return g.name;\n }\n return undefined;\n },\n [dndItems]\n );\n\n /* ---------------- collision detection ---------------- */\n const lastOverId = useRef<UniqueIdentifier | null>(null);\n const recentlyMovedToNewContainer = useRef(false);\n\n const collisionDetection: CollisionDetection = useCallback(\n (args) => {\n if (disabled || !activeId) return [];\n if (activeIsGroup) {\n const groups = args.droppableContainers.filter((c) =>\n dndItems.some((g) => g.name === c.id)\n );\n if (!groups.length) return [];\n return closestCenter({\n ...args,\n droppableContainers: groups\n });\n }\n\n const pointer = pointerWithin(args);\n if (pointer.length) {\n const zone = pointer.find((c) => c.id === \"new-group-drop-zone\");\n if (zone) return [zone];\n\n const container = pointer.find((c) =>\n dndItems.some((g) => g.name === c.id)\n );\n if (container) {\n const itemsIn = dndItems.find((g) => g.name === container.id)\n ?.entries;\n if (itemsIn?.length) {\n const closest = closestCorners({\n ...args,\n droppableContainers: args.droppableContainers.filter(\n (c) => itemsIn.some((e) => e.url === c.id)\n )\n });\n if (closest.length) return closest;\n }\n return [container];\n }\n const first = getFirstCollision(pointer, \"id\");\n if (first) return [{ id: first }];\n }\n\n const rects = rectIntersection(args);\n const zoneRect = rects.find((c) => c.id === \"new-group-drop-zone\");\n if (zoneRect) return [zoneRect];\n\n let overId = getFirstCollision(rects, \"id\");\n if (overId != null) {\n const overIsContainer = dndItems.some((g) => g.name === overId);\n if (overIsContainer) {\n const itemsIn = dndItems.find((g) => g.name === overId)\n ?.entries;\n if (itemsIn?.length) {\n const closestItem = closestCorners({\n ...args,\n droppableContainers: args.droppableContainers.filter(\n (c) => itemsIn.some((e) => e.url === c.id)\n )\n })[0]?.id;\n if (closestItem) overId = closestItem;\n }\n }\n lastOverId.current = overId;\n return [{ id: overId }];\n }\n\n if (\n recentlyMovedToNewContainer.current &&\n lastOverId.current &&\n !activeIsGroup\n )\n return [{ id: lastOverId.current }];\n\n return [];\n },\n [activeId, dndItems, disabled, activeIsGroup]\n );\n\n /* ---------------- drag handlers ---------------- */\n const handleDragStart = ({ active }: { active: Active }) => {\n setDndKitActiveNode(active);\n if (disabled) return;\n\n // Capture the original state before any drag modifications\n preDragItemsRef.current = cloneItemsForDnd(dndItems);\n\n const isGroup = dndItems.some((g) => g.name === active.id);\n if (!active.data.current) active.data.current = {};\n active.data.current.type = isGroup ? \"group\" : \"item\";\n\n setActiveId(active.id);\n setActiveIsGroup(isGroup);\n setIsDraggingCardOnly(!isGroup);\n if (isGroup) setCurrentDraggingGroupId(active.id);\n recentlyMovedToNewContainer.current = false;\n };\n\n const handleDragOver = ({\n active,\n over\n }: { active: Active; over: Over | null }) => {\n if (disabled || !over) return;\n\n const activeIdNow = active.id;\n const overIdNow = over.id;\n if (activeIdNow === overIdNow) return;\n if (activeIsGroup) return;\n\n const activeCont = findDndContainer(activeIdNow);\n const overCont = findDndContainer(overIdNow);\n if (!activeCont) return;\n\n if (overCont && activeCont !== overCont) {\n recentlyMovedToNewContainer.current = true;\n lastOverId.current = overIdNow;\n\n // Update state for visual feedback during drag\n setDndItems((current) => {\n const newState = cloneItemsForDnd(current);\n const srcIdx = newState.findIndex((g) => g.name === activeCont);\n const tgtIdx = newState.findIndex((g) => g.name === overCont);\n if (srcIdx === -1 || tgtIdx === -1) return current;\n const src = newState[srcIdx];\n const tgt = newState[tgtIdx];\n const idxInSrc = src.entries.findIndex((e) => e.url === activeIdNow);\n if (idxInSrc === -1) return current;\n const [moved] = src.entries.splice(idxInSrc, 1);\n\n // Calculate insertion position - SAME logic as handleDragEnd\n const overIsContainer = overIdNow === overCont;\n if (overIsContainer) {\n tgt.entries.push(moved);\n } else {\n const overIdx = tgt.entries.findIndex((e) => e.url === overIdNow);\n if (overIdx !== -1) {\n tgt.entries.splice(overIdx, 0, moved);\n } else {\n tgt.entries.push(moved);\n }\n }\n\n return newState;\n });\n } else if (activeCont === overCont) {\n recentlyMovedToNewContainer.current = false;\n }\n };\n\n const handleDragEnd = ({\n active,\n over\n }: { active: Active; over: Over | null }) => {\n if (disabled || !over) {\n resetDragState();\n return;\n }\n\n const activeIdNow = active.id;\n const overIdNow = over.id;\n\n /* ─── group reorder ─── */\n if (activeIsGroup) {\n if (\n activeIdNow !== overIdNow &&\n dndItems.some((g) => g.name === overIdNow)\n ) {\n const from = dndItems.findIndex((g) => g.name === activeIdNow);\n const to = dndItems.findIndex((g) => g.name === overIdNow);\n if (from !== -1 && to !== -1) {\n const newState = arrayMove(dndItems, from, to);\n setDndItems(newState);\n onPersist?.(newState);\n onGroupMoved?.(activeIdNow as string, from, to);\n }\n }\n }\n /* ─── card move ─── */\n else {\n // CRITICAL: Find source container from ORIGINAL pre-drag state, not current (potentially stale) dndItems\n const findContainerInState = (id: string, state: { name: string; entries: NavigationEntry[] }[]): string | undefined => {\n const group = state.find((g) => g.name === id);\n if (group) return group.name;\n for (const g of state) {\n if (g.entries.some((e) => e.url === id)) return g.name;\n }\n return undefined;\n };\n\n const sourceState = preDragItemsRef.current || dndItems;\n const activeCont = findContainerInState(activeIdNow as string, sourceState);\n const overCont = findDndContainer(overIdNow);\n\n /* drop on new-group zone */\n if (overIdNow === \"new-group-drop-zone\") {\n if (activeCont) {\n // Save current state before making changes\n setStateBeforeNewGroup(cloneItemsForDnd(dndItems));\n\n const newState = cloneItemsForDnd(dndItems);\n const srcIdx = newState.findIndex((g) => g.name === activeCont);\n if (srcIdx !== -1) {\n const src = newState[srcIdx];\n const idxInSrc = src.entries.findIndex(\n (e) => e.url === activeIdNow\n );\n if (idxInSrc !== -1) {\n const [dragged] = src.entries.splice(idxInSrc, 1);\n if (src.entries.length === 0) newState.splice(srcIdx, 1);\n\n let tentative = \"New Group\";\n let counter = 1;\n while (newState.some((g) => g.name === tentative))\n tentative = `New Group ${counter++}`;\n\n newState.push({\n name: tentative,\n entries: [dragged]\n });\n\n // Update local state but DON'T persist yet\n setDndItems(newState);\n setPendingNewGroupName(tentative);\n setDialogOpenForGroup(tentative);\n onNewGroupDrop?.();\n }\n }\n }\n }\n /* reorder inside same container */\n else {\n const overCont = findDndContainer(overIdNow);\n if (activeCont === overCont) {\n const grpIdx = dndItems.findIndex((g) => g.name === activeCont);\n if (grpIdx !== -1) {\n const group = dndItems[grpIdx];\n const oldIdx = group.entries.findIndex(\n (e) => e.url === activeIdNow\n );\n let newIdx = group.entries.findIndex(\n (e) => e.url === overIdNow\n );\n if (newIdx === -1 && overIdNow === activeCont)\n newIdx = group.entries.length - 1;\n if (\n oldIdx !== -1 &&\n newIdx !== -1 &&\n oldIdx !== newIdx\n ) {\n const reordered = arrayMove(group.entries, oldIdx, newIdx);\n const newState = [...dndItems];\n newState[grpIdx] = {\n ...group,\n entries: reordered\n };\n setDndItems(newState);\n onPersist?.(newState);\n }\n }\n } else if (overCont && activeCont !== overCont) {\n // Card moved between different groups - use CLEAN pre-drag state\n const finalState = cloneItemsForDnd(sourceState);\n\n // Find target container from clean state too\n const finalOverId = lastOverId.current || overIdNow;\n const cleanOverCont = findContainerInState(finalOverId as string, sourceState) || overCont;\n\n const srcIdx = finalState.findIndex((g) => g.name === activeCont);\n const tgtIdx = finalState.findIndex((g) => g.name === cleanOverCont);\n\n if (srcIdx !== -1 && tgtIdx !== -1) {\n const src = finalState[srcIdx];\n const tgt = finalState[tgtIdx];\n const idxInSrc = src.entries.findIndex((e) => e.url === activeIdNow);\n\n if (idxInSrc !== -1) {\n // Remove from source\n const [moved] = src.entries.splice(idxInSrc, 1);\n\n // Calculate insertion position in target\n const overIsContainer = finalOverId === cleanOverCont;\n if (overIsContainer) {\n tgt.entries.push(moved);\n } else {\n const overIdx = tgt.entries.findIndex((e) => e.url === finalOverId);\n if (overIdx !== -1) {\n tgt.entries.splice(overIdx, 0, moved);\n } else {\n tgt.entries.push(moved);\n }\n }\n\n // Remove empty source group if needed\n if (src.entries.length === 0) {\n finalState.splice(srcIdx, 1);\n }\n\n setDndItems(finalState);\n onPersist?.(finalState);\n\n onCardMovedBetweenGroups?.(moved);\n }\n }\n } else if (recentlyMovedToNewContainer.current) {\n // This shouldn't happen but log it for debugging\n console.error(\"Move between containers detected but conditions not met\", {\n activeCont,\n overCont,\n activeIdNow,\n overIdNow\n });\n }\n }\n }\n\n resetDragState();\n };\n\n const resetDragState = () => {\n setDndKitActiveNode(null);\n setActiveId(null);\n setActiveIsGroup(false);\n setCurrentDraggingGroupId(null);\n setIsDraggingCardOnly(false);\n recentlyMovedToNewContainer.current = false;\n };\n\n const handleDragCancel = () => resetDragState();\n\n /* ---------------- group rename ---------------- */\n const handleRenameGroup = (oldName: string, newName: string) => {\n setDndItems((current) => {\n const idx = current.findIndex((g) => g.name === oldName);\n if (idx === -1) return current;\n if (current.some((g) => g.name === newName && g.name !== oldName))\n return current;\n\n const updated = [...current];\n updated[idx] = {\n ...updated[idx],\n name: newName\n };\n\n // Persist after successful rename\n onPersist?.(updated);\n return updated;\n });\n\n // Clear all pending state\n setPendingNewGroupName(null);\n setStateBeforeNewGroup(null);\n setDialogOpenForGroup(null);\n };\n\n /* Handle dialog close without renaming */\n const handleDialogClose = () => {\n // If there's a pending new group that wasn't renamed, restore previous state\n if (pendingNewGroupName && dialogOpenForGroup === pendingNewGroupName && stateBeforeNewGroup) {\n // Restore the state from before the new group was created\n setDndItems(stateBeforeNewGroup);\n }\n\n // Clear all pending state\n setPendingNewGroupName(null);\n setStateBeforeNewGroup(null);\n setDialogOpenForGroup(null);\n };\n\n /* ---------------- public API ---------------- */\n const activeItemForOverlay =\n disabled || !activeId || activeIsGroup\n ? null\n : dndItems.flatMap((g) => g.entries).find((e) => e.url === activeId) || null;\n\n const activeGroupData =\n disabled || !activeId || !activeIsGroup\n ? null\n : dndItems.find((g) => g.name === activeId) || null;\n\n return {\n sensors,\n collisionDetection,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragEnd: handleDragEnd,\n onDragCancel: handleDragCancel,\n dropAnimation: dropAnimationConfig,\n activeItemForOverlay,\n activeGroupData,\n draggingGroupId: currentDraggingGroupId,\n containers: dndContainers,\n dndKitActiveNode,\n isDraggingCardOnly,\n dialogOpenForGroup,\n setDialogOpenForGroup,\n handleRenameGroup,\n handleDialogClose,\n isHoveringNewGroupDropZone,\n setIsHoveringNewGroupDropZone\n };\n}\n\nexport function NewGroupDropZone({\n disabled,\n setIsHovering\n}: {\n disabled: boolean;\n setIsHovering: (v: boolean) => void;\n}) {\n const {\n setNodeRef,\n isOver\n } = useDroppable({\n id: \"new-group-drop-zone\",\n disabled\n });\n const [isVisible, setIsVisible] = useState(false);\n\n useDndMonitor({\n onDragStart({ active }) {\n if (disabled) return;\n const tp = active.data.current?.type;\n setIsVisible(tp === \"item\");\n },\n onDragEnd() {\n setIsVisible(false);\n },\n onDragCancel() {\n setIsVisible(false);\n }\n });\n\n useEffect(() => {\n setIsHovering(isOver && isVisible);\n }, [isOver, isVisible, setIsHovering]);\n\n if (!isVisible || disabled) return null;\n\n return (\n <div\n ref={setNodeRef}\n className={cls(\n \"fixed right-8 top-1/2 -translate-y-1/2 w-[200px] h-[120px] border border-dashed rounded-lg flex items-center justify-center transition-all\",\n isOver\n ? \"bg-surface-accent-100 dark:bg-surface-accent-800 border-surface-300 dark:border-surface-600\"\n : \"bg-surface-50 dark:bg-surface-900 border-surface-200 dark:border-surface-700\"\n )}>\n <div className=\"text-center p-4\">\n <span className=\"block font-medium text-sm\">\n Drop here to create a new group\n </span>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField } from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\n\ninterface RenameGroupDialogProps {\n open: boolean;\n initialName: string;\n existingGroupNames: string[]; // Names of other existing groups to check for duplicates\n onClose: () => void;\n onRename: (newName: string) => void;\n}\n\nexport function RenameGroupDialog({\n open,\n initialName,\n existingGroupNames,\n onClose,\n onRename\n}: RenameGroupDialogProps) {\n const { t } = useTranslation();\n const [name, setName] = useState(initialName);\n const [error, setError] = useState<string | null>(null);\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null); // Create a ref for the input\n\n useEffect(() => {\n if (open) {\n setName(initialName);\n setError(null);\n // Focus and select text when dialog opens\n setTimeout(() => { // setTimeout to ensure the input is rendered and focusable\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, 100);\n }\n }, [initialName, open]);\n\n const handleNameChange = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const newName = event.target.value;\n setName(newName);\n if (!newName.trim()) {\n setError(t(\"group_name_empty_error\"));\n } else if (existingGroupNames.includes(newName.trim())) {\n setError(t(\"group_name_exists_error\"));\n } else {\n setError(null);\n }\n };\n\n const handleSave = () => {\n const trimmedName = name.trim();\n if (!trimmedName) {\n setError(t(\"group_name_empty_error\"));\n return;\n }\n if (existingGroupNames.includes(trimmedName)) {\n setError(t(\"group_name_exists_error\"));\n return;\n }\n if (!error) {\n onRename(trimmedName);\n onClose();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault(); // Prevent default form submission behavior\n const trimmedName = name.trim();\n // We need to check the error state directly as well,\n // because the error state might not have updated if the user types and immediately hits enter.\n let currentError = null;\n if (!trimmedName) {\n currentError = t(\"group_name_empty_error\");\n } else if (existingGroupNames.includes(trimmedName)) {\n currentError = t(\"group_name_exists_error\");\n }\n\n if (!currentError && trimmedName) {\n handleSave();\n } else if (currentError) {\n setError(currentError); // Ensure error is displayed if trying to submit with Enter\n }\n }\n };\n\n const handleClose = () => {\n setName(initialName);\n setError(null);\n onClose();\n };\n\n if (!open) return null;\n\n return (\n <Dialog open={open}>\n <DialogTitle>{t(\"rename_group\")}</DialogTitle>\n <DialogContent>\n <TextField\n inputRef={inputRef} // Pass the ref to the TextField\n label={t(\"group_name_label\")}\n value={name}\n onChange={handleNameChange}\n onKeyDown={handleKeyDown} // Added onKeyDown handler\n error={!!error}\n aria-describedby={error ? \"group-name-error\" : undefined}\n />\n {error && <p id=\"group-name-error\" style={{ display: \"none\" }}>{error}</p>}\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}\n variant=\"text\">\n {t(\"cancel\")}\n </Button>\n <Button onClick={handleSave}\n disabled={!!error || !name.trim()}>\n {t(\"save\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import type { HomePageSection, NavigationEntry, NavigationGroupMapping, PluginGenericProps } from \"@rebasepro/types\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport Fuse from \"fuse.js\";\nimport { Container, SearchBar } from \"@rebasepro/ui\";\nimport { AnalyticsEvent } from \"@rebasepro/types\";\nimport { FavouritesView } from \"./FavouritesView\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\nimport { NavigationGroup } from \"./NavigationGroup\";\nimport {\n NavigationGroupDroppable,\n NewGroupDropZone,\n SortableNavigationCard,\n SortableNavigationGroup,\n useHomePageDnd\n} from \"./HomePageDnD\";\nimport { DndContext, DragOverlay, MeasuringStrategy } from \"@dnd-kit/core\";\nimport { NavigationCardBinding } from \"./NavigationCardBinding\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { restrictToVerticalAxis, restrictToWindowEdges } from \"@dnd-kit/modifiers\";\nimport { RenameGroupDialog } from \"./RenameGroupDialog\";\nimport { toArray } from \"@rebasepro/utils\";\nimport { useCollapsedGroups, buildCollapsedDefaults, useCustomizationController, useTranslation, useSlot, useAdminModeController, useRebaseRegistry } from \"@rebasepro/core\";\nimport { useRestoreScroll } from \"@rebasepro/core\";\n\nimport { BootstrapAdminBanner } from \"@rebasepro/core\";\nimport { useBreadcrumbsController, useCMSContext } from \"../../index\";\n\nexport const DEFAULT_GROUP_NAME = \"Views\";\nexport const ADMIN_GROUP_NAME = \"Admin\";\n\nexport function ContentHomePage({\n additionalActions,\n additionalChildrenStart,\n additionalChildrenEnd,\n sections,\n hiddenGroups\n}: {\n additionalActions?: React.ReactNode;\n additionalChildrenStart?: React.ReactNode;\n additionalChildrenEnd?: React.ReactNode;\n sections?: HomePageSection[];\n hiddenGroups?: string[];\n}) {\n\n const context = useCMSContext();\n const { navigationStateController } = context;\n const customizationController = useCustomizationController();\n const adminModeController = useAdminModeController();\n const registry = useRebaseRegistry();\n\n const { resolvedSlots } = customizationController;\n const breadcrumbs = useBreadcrumbsController();\n const { t } = useTranslation();\n\n useEffect(() => {\n breadcrumbs.set({ breadcrumbs: [] });\n }, [breadcrumbs.set]);\n\n const {\n allowDragAndDrop = false,\n navigationEntries: unFilteredNavigationEntries = [],\n groups: unFilteredGroupOrder = [],\n onNavigationEntriesUpdate = () => {}\n } = navigationStateController.topLevelNavigation || {};\n\n // Studio mode shows view-type entries (devViews) + admin entries (Users/Roles).\n // Content mode shows collections, admin entries (Users/Roles), and custom entries — but not studio views.\n const rawNavigationEntries = useMemo(() => {\n if (adminModeController.mode === \"studio\") {\n return unFilteredNavigationEntries.filter(e => e.type === \"view\" || e.type === \"admin\");\n }\n return unFilteredNavigationEntries.filter(e => e.type !== \"view\");\n }, [unFilteredNavigationEntries, adminModeController.mode]);\n\n const groupOrderFromNavController = useMemo(() => {\n const entryGroups = new Set(rawNavigationEntries.map(e => e.group).filter(Boolean));\n return unFilteredGroupOrder.filter(g => entryGroups.has(g));\n }, [unFilteredGroupOrder, rawNavigationEntries]);\n\n const fuse = useRef<Fuse<NavigationEntry> | null>(null);\n const [filteredUrls, setFilteredUrls] = useState<string[] | null>(null);\n const performingSearch = Boolean(filteredUrls);\n\n // Memoize filtered navigation entries to prevent unnecessary recalculations\n const filteredNavigationEntries = useMemo(() => {\n return filteredUrls\n ? rawNavigationEntries.filter((e) => filteredUrls.includes(e.url))\n : rawNavigationEntries;\n }, [filteredUrls, rawNavigationEntries]);\n\n useEffect(() => {\n fuse.current = new Fuse(rawNavigationEntries, {\n keys: [\"name\", \"description\", \"group\", \"path\"]\n });\n }, [rawNavigationEntries]);\n\n const updateSearch = useCallback((v?: string) => {\n if (!v?.trim()) {\n setFilteredUrls(null);\n return;\n }\n const results = fuse.current?.search(v.trim());\n setFilteredUrls(results ? results.map((x) => x.item.url) : []);\n }, []);\n\n /* ───────────────────────────────────────────────────────────────\n Build groups (all items) + isolate Admin\n ─────────────────────────────────────────────────────────────── */\n const [items, setItems] = useState<\n { name: string; entries: NavigationEntry[] }[]\n >([]);\n const [adminGroupData, setAdminGroupData] = useState<{\n name: string;\n entries: NavigationEntry[];\n } | null>(null);\n\n // Flag to prevent useEffect from overwriting local DnD state\n const isDndDirtyRef = useRef(false);\n const dndDirtyTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Memoize the processed groups to avoid unnecessary recalculations\n const processedGroups = useMemo(() => {\n const src = filteredNavigationEntries;\n const entriesByGroup: Record<string, NavigationEntry[]> = {};\n\n src.forEach((e) => {\n const g =\n e.type === \"admin\"\n ? ADMIN_GROUP_NAME\n : e.group ?? DEFAULT_GROUP_NAME;\n (entriesByGroup[g] ??= []).push(e);\n });\n\n // Check if there are custom additional card components from plugins\n const hasPluginAdditionalCards = customizationController.resolvedSlots.some(s => s.slot === \"home.cards\");\n\n let allProcessed: { name: string; entries: NavigationEntry[] }[];\n\n if (performingSearch) {\n const ordered = [\n ...new Set(src.map((e) => e.group ?? DEFAULT_GROUP_NAME))\n ];\n allProcessed = ordered\n .map((name) => ({\n name,\n entries: entriesByGroup[name] || []\n }))\n .filter((g) => g.entries.length);\n } else {\n allProcessed = groupOrderFromNavController.map((g) => ({\n name: g,\n entries: entriesByGroup[g] || []\n }));\n Object.keys(entriesByGroup).forEach((g) => {\n if (!groupOrderFromNavController.includes(g))\n allProcessed.push({\n name: g,\n entries: entriesByGroup[g]\n });\n });\n\n // Ensure default group exists if there are plugin additional cards but no collections\n if (hasPluginAdditionalCards && !allProcessed.some(g => g.name === DEFAULT_GROUP_NAME)) {\n allProcessed.push({\n name: DEFAULT_GROUP_NAME,\n entries: []\n });\n }\n\n allProcessed = allProcessed.filter(\n (g) =>\n g.entries.length ||\n (g.name === DEFAULT_GROUP_NAME && hasPluginAdditionalCards)\n );\n }\n\n const admin = allProcessed.find((g) => g.name === ADMIN_GROUP_NAME);\n return {\n adminGroupData: admin || null,\n items: allProcessed.filter((g) => g.name !== ADMIN_GROUP_NAME && !hiddenGroups?.includes(g.name))\n };\n }, [filteredNavigationEntries, performingSearch, groupOrderFromNavController, customizationController.resolvedSlots, hiddenGroups]);\n\n // Update state only when processedGroups actually changes\n // Skip update if DnD just made a local change (dirty flag is set)\n useEffect(() => {\n if (isDndDirtyRef.current) {\n // DnD just updated the state, skip this sync\n return;\n }\n setAdminGroupData(processedGroups.adminGroupData);\n setItems(processedGroups.items);\n }, [processedGroups]);\n\n /* ───────────────────────────────────────────────────────────────\n Local update vs. persistence helpers\n ─────────────────────────────────────────────────────────────── */\n const updateItems = (\n updater:\n | { name: string; entries: NavigationEntry[] }[]\n | ((\n prev: { name: string; entries: NavigationEntry[] }[]\n ) => { name: string; entries: NavigationEntry[] }[])\n ) => {\n setItems(updater); // local only\n };\n\n const persistNavigationGroups = (\n latest: { name: string; entries: NavigationEntry[] }[]\n ) => {\n // Set dirty flag to prevent useEffect from overwriting local state\n isDndDirtyRef.current = true;\n\n // Clear any existing timeout\n if (dndDirtyTimeoutRef.current) {\n clearTimeout(dndDirtyTimeoutRef.current);\n }\n\n // Clear dirty flag after a delay to allow navigation to update\n dndDirtyTimeoutRef.current = setTimeout(() => {\n isDndDirtyRef.current = false;\n }, 1000);\n\n // Map ALL groups including \"Views\"\n const draggable: NavigationGroupMapping[] = latest.map((g) => ({\n name: g.name,\n entries: g.entries.map((e) => e.slug)\n }));\n\n const all: NavigationGroupMapping[] = adminGroupData\n ? [\n ...draggable,\n {\n name: adminGroupData.name,\n entries: adminGroupData.entries.map((e) => e.slug)\n }\n ]\n : draggable;\n\n onNavigationEntriesUpdate(all);\n };\n\n // Use custom hook for collapsed groups with localStorage persistence\n const groupNames = useMemo(() => [\n ...items.map(item => item.name),\n ...(adminGroupData ? [adminGroupData.name] : [])\n ], [items, adminGroupData]);\n\n const collapsedDefaults = useMemo(\n () => buildCollapsedDefaults(registry.cmsConfig?.navigationGroupMappings, \"home\"),\n [registry.cmsConfig?.navigationGroupMappings]\n );\n const { isGroupCollapsed, toggleGroupCollapsed } = useCollapsedGroups(groupNames, \"home\", collapsedDefaults);\n\n const {\n sensors,\n collisionDetection,\n onDragStart,\n onDragOver,\n onDragEnd,\n dropAnimation,\n activeItemForOverlay,\n activeGroupData,\n draggingGroupId,\n containers,\n dndKitActiveNode,\n onDragCancel,\n isDraggingCardOnly,\n dialogOpenForGroup,\n setDialogOpenForGroup,\n handleRenameGroup,\n handleDialogClose,\n isHoveringNewGroupDropZone,\n setIsHoveringNewGroupDropZone\n } = useHomePageDnd({\n items,\n setItems: updateItems,\n disabled: !allowDragAndDrop || performingSearch,\n onPersist: persistNavigationGroups,\n onGroupMoved: (g) =>\n context.analyticsController?.onAnalyticsEvent?.(\"home_move_group\", {\n name: g\n }),\n onCardMovedBetweenGroups: (card) =>\n context.analyticsController?.onAnalyticsEvent?.(\"home_move_card\", {\n id: card.id\n }),\n onNewGroupDrop: () =>\n context.analyticsController?.onAnalyticsEvent?.(\n \"home_drop_new_group\"\n )\n });\n\n const {\n containerRef,\n direction\n } = useRestoreScroll();\n\n const dndDisabled = !allowDragAndDrop || performingSearch;\n\n const dndModifiers = dndKitActiveNode?.data.current?.type === \"group\"\n ? [restrictToVerticalAxis, restrictToWindowEdges]\n : [restrictToWindowEdges];\n\n const sectionProps: PluginGenericProps = { context };\n const additionalPluginChildrenStart = useSlot(\"home.children.start\", sectionProps);\n const additionalPluginChildrenEnd = useSlot(\"home.children.end\", sectionProps);\n const additionalPluginActions = useSlot(\"home.actions\", sectionProps);\n\n // Pre-compute home.cards slot contributions (cannot call useSlot inside .map loop)\n const homeCardContributions = useMemo(() => {\n return resolvedSlots\n .filter(s => s.slot === \"home.cards\")\n .sort((a, b) => (a.order ?? 50) - (b.order ?? 50));\n }, [resolvedSlots]);\n\n /* ───────────────────────────────────────────────────────────────\n Render\n ─────────────────────────────────────────────────────────────── */\n return (\n <div ref={containerRef} className=\"py-2 overflow-auto h-full w-full bg-surface-50 dark:bg-surface-800\">\n <Container maxWidth=\"6xl\">\n <div className=\"mb-4\">\n <BootstrapAdminBanner />\n </div>\n {/* search & actions */}\n <div\n className=\"w-full sticky py-4 transition-all duration-400 ease-in-out top-0 z-10 flex flex-row gap-4\"\n style={{ top: direction === \"down\" ? -84 : 0 }}\n >\n <SearchBar\n onTextSearch={updateSearch}\n placeholder={t(\"search_collections\")}\n autoFocus\n size=\"small\"\n innerClassName=\"w-full\"\n className=\"w-full grow\"\n />\n {additionalActions}\n {additionalPluginActions}\n </div>\n\n <FavouritesView hidden={performingSearch}/>\n\n {additionalChildrenStart}\n {additionalPluginChildrenStart}\n\n {/* ─────── DND context ─────── */}\n <DndContext\n sensors={sensors}\n collisionDetection={collisionDetection}\n measuring={{\n droppable: {\n strategy: MeasuringStrategy.Always,\n frequency: 500\n }\n }}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n onDragEnd={onDragEnd}\n onDragCancel={onDragCancel}\n modifiers={dndModifiers}\n >\n <SortableContext\n key={containers.join(\",\")}\n items={containers}\n strategy={verticalListSortingStrategy}\n >\n {items.map((groupData, groupIndex) => {\n const groupKey = groupData.name;\n const entriesInGroup = groupData.entries;\n\n const homeCardsProps = {\n group:\n groupKey === DEFAULT_GROUP_NAME\n ? undefined\n : groupKey,\n context\n };\n // Render home.cards contributions inline (no hook call inside loop)\n const additionalCards = homeCardContributions.map((s, i) => (\n <ErrorBoundary key={`home_cards_${groupKey}_${i}`}>\n <s.Component {...homeCardsProps} {...(s.props ?? {})}/>\n </ErrorBoundary>\n ));\n\n if (\n entriesInGroup.length === 0 &&\n (additionalCards.length === 0 || performingSearch)\n )\n return null;\n\n return (\n <SortableNavigationGroup\n key={`group-${groupIndex}`}\n groupName={groupKey}\n disabled={dndDisabled}\n >\n <NavigationGroup\n group={\n groupKey === DEFAULT_GROUP_NAME\n ? undefined\n : groupKey\n }\n minimised={\n draggingGroupId === groupKey &&\n !isDraggingCardOnly\n }\n isPotentialCardDropTarget={\n isDraggingCardOnly\n }\n dndDisabled={dndDisabled}\n onEditGroup={() => {\n if (dndDisabled) return;\n setDialogOpenForGroup(groupKey);\n }}\n collapsed={isGroupCollapsed(groupKey)}\n onToggleCollapsed={() => toggleGroupCollapsed(groupKey)}\n >\n <NavigationGroupDroppable\n id={groupKey}\n itemIds={entriesInGroup.map(\n (e) => e.url\n )}\n isPotentialCardDropTarget={\n isDraggingCardOnly\n }\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 \">\n {entriesInGroup.map(\n (entry) => (\n <SortableNavigationCard\n key={entry.url}\n entry={entry}\n onClick={() => {\n let event: AnalyticsEvent =\n \"unmapped_event\";\n if (\n entry.type ===\n \"collection\"\n )\n event =\n \"home_navigate_to_collection\";\n else if (\n entry.type ===\n \"view\"\n )\n event =\n \"home_navigate_to_view\";\n else if (\n entry.type ===\n \"admin\"\n )\n event =\n \"home_navigate_to_admin_view\";\n\n context.analyticsController?.onAnalyticsEvent?.(\n event,\n {\n path: entry.slug\n }\n );\n }}\n />\n )\n )}\n {!performingSearch &&\n groupKey.toLowerCase() !==\n ADMIN_GROUP_NAME.toLowerCase() &&\n additionalCards}\n </div>\n </NavigationGroupDroppable>\n </NavigationGroup>\n </SortableNavigationGroup>\n );\n })}\n </SortableContext>\n\n <NewGroupDropZone\n disabled={dndDisabled}\n setIsHovering={setIsHoveringNewGroupDropZone}\n />\n\n <DragOverlay adjustScale={false} dropAnimation={dropAnimation}>\n {activeGroupData &&\n draggingGroupId === activeGroupData.name ? (\n <div\n className=\"rounded-lg bg-transparent\"\n style={{\n padding: 0,\n margin: 0\n }}\n >\n <NavigationGroup\n group={\n activeGroupData.name ===\n DEFAULT_GROUP_NAME\n ? undefined\n : activeGroupData.name\n }\n isPreview={false}\n minimised\n />\n </div>\n ) : activeItemForOverlay ? (\n <NavigationCardBinding\n {...activeItemForOverlay}\n shrink={isHoveringNewGroupDropZone}\n />\n ) : null}\n </DragOverlay>\n </DndContext>\n\n {!performingSearch && adminGroupData && (\n <NavigationGroup\n group={adminGroupData.name}\n collapsed={isGroupCollapsed(adminGroupData.name)}\n onToggleCollapsed={() => toggleGroupCollapsed(adminGroupData.name)}\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 \">\n {adminGroupData.entries.map((entry) => (\n <NavigationCardBinding\n key={entry.url}\n {...entry}\n onClick={() => {\n let event: AnalyticsEvent =\n \"unmapped_event\";\n if (entry.type === \"collection\")\n event =\n \"home_navigate_to_collection\";\n else if (entry.type === \"view\")\n event = \"home_navigate_to_view\";\n else if (entry.type === \"admin\")\n event =\n \"home_navigate_to_admin_view\";\n\n context.analyticsController?.onAnalyticsEvent?.(\n event,\n { path: entry.slug }\n );\n }}\n />\n ))}\n </div>\n </NavigationGroup>\n )}\n\n {sections && sections.map((section) => (\n <NavigationGroup\n key={section.key}\n group={section.title}\n >\n {section.children}\n </NavigationGroup>\n ))}\n\n {additionalPluginChildrenEnd}\n {additionalChildrenEnd}\n </Container>\n\n {dialogOpenForGroup && (\n <RenameGroupDialog\n open\n initialName={dialogOpenForGroup}\n existingGroupNames={items\n .map((g) => g.name)\n .filter((n) => n !== dialogOpenForGroup)}\n onClose={handleDialogClose}\n onRename={(newName) => {\n handleRenameGroup(dialogOpenForGroup, newName);\n }}\n />\n )}\n </div>\n );\n}\n","import type { EntityCollection, ViewMode } from \"@rebasepro/types\";\nimport { Blocker, useBlocker, useLocation } from \"react-router-dom\";\nimport { EntityEditView } from \"../components/EntityEditView\";\nimport { EntityDetailView } from \"../components/EntityDetailView\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { EntityCollectionView } from \"../components\";\nimport { NotFoundPage, useUserConfigurationPersistence } from \"@rebasepro/core\";\nimport { UnsavedChangesDialog } from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\nimport { getNavigationEntriesFromPath, NavigationViewCollectionInternal, NavigationViewEntityCustomInternal, NavigationViewInternal } from \"@rebasepro/common\";\nimport { toArray } from \"@rebasepro/utils\";\nimport { useCollectionRegistryController, useUrlController } from \"../index\";\nimport { useBreadcrumbsController } from \"../index\";\n\nexport function RebaseRoute() {\n\n const location = useLocation();\n const collectionRegistry = useCollectionRegistryController();\n const urlController = useUrlController();\n const breadcrumbs = useBreadcrumbsController();\n const userConfigPersistence = useUserConfigurationPersistence();\n\n const hash = location.hash;\n const isSidePanel = hash.includes(\"#side\");\n const isNew = hash.includes(\"#new\") || hash.includes(\"#new_side\");\n const isCopy = hash.includes(\"#copy\");\n const isFullScreen = hash.includes(\"#full\");\n\n const pathname = location.pathname;\n const navigationPath = urlController.urlPathToDataPath(pathname);\n\n const navigationEntries = getNavigationEntriesFromPath({\n path: navigationPath,\n collections: collectionRegistry.collections ?? []\n });\n\n useEffect(() => {\n const lastEntry = navigationEntries[navigationEntries.length - 1];\n const isViewingCollection = lastEntry?.type === \"collection\";\n\n breadcrumbs.set({\n breadcrumbs: navigationEntries.map((entry, index) => {\n const isLastEntry = index === navigationEntries.length - 1;\n\n if (entry.type === \"entity\") {\n return ({\n title: String(entry.entityId),\n url: urlController.buildUrlCollectionPath(entry.path)\n // count: undefined (not applicable for entities)\n });\n } else if (entry.type === \"custom_view\") {\n return ({\n title: String(entry.view.name ?? entry.view.key),\n url: urlController.buildUrlCollectionPath(entry.path)\n // count: undefined (not applicable for custom views)\n });\n } else if (entry.type === \"collection\") {\n const showCount = isLastEntry && isViewingCollection;\n return ({\n title: entry.collection.name,\n url: urlController.buildUrlCollectionPath(entry.path),\n id: entry.path,\n ...(showCount ? { count: null } : {})\n });\n } else {\n throw new Error(\"Unexpected navigation entry type\");\n }\n })\n });\n }, [navigationEntries.map(entry => entry.path).join(\",\")]);\n\n if (isNew) {\n // New entities always use full-screen mode, even for split-layout collections\n return <EntityFullScreenRoute\n pathname={pathname}\n navigationEntries={navigationEntries}\n isNew={true}\n isCopy={false}\n />;\n }\n\n if (navigationEntries.length === 1 && navigationEntries[0].type === \"collection\") {\n let collection: EntityCollection<any> | undefined;\n collection = collectionRegistry.getCollection(navigationEntries[0].id);\n if (!collection)\n collection = collectionRegistry.getCollection(navigationEntries[0].slug);\n if (!collection) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n return null;\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n {...collection}\n parentCollectionSlugs={[]} parentEntityIds={[]}\n path={collection.slug}\n updateUrl={true}\n Actions={toArray(collection.Actions)}/>\n }\n\n if (isSidePanel) {\n const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"collection\");\n if (lastCollectionEntry) {\n let collection: EntityCollection<any> | undefined;\n const firstEntry = navigationEntries[0] as NavigationViewCollectionInternal<any>;\n collection = collectionRegistry.getCollection(firstEntry.id);\n if (!collection)\n collection = collectionRegistry.getCollection(firstEntry.slug);\n if (!collection) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n return null;\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n {...collection}\n parentCollectionSlugs={[]} parentEntityIds={[]}\n path={collection.slug}\n updateUrl={true}\n Actions={toArray(collection.Actions)}/>;\n }\n }\n\n // Check if this is a simple entity route (collection + entity) for a split-layout collection.\n // If so, render the collection view with the entity shown in the split detail panel\n // instead of the full-screen editor. This keeps the master-detail UX with clean URLs.\n //\n // Also handles subcollection tabs: /c/customers/39/orders produces 3 entries\n // (collection→entity→subcollection). We extract the subcollection slug as selectedTab.\n const lastEntityEntry = navigationEntries.find((entry) => entry.type === \"entity\");\n const firstCollectionEntry = navigationEntries[0];\n if (\n !isFullScreen &&\n !isCopy &&\n firstCollectionEntry?.type === \"collection\" &&\n lastEntityEntry?.type === \"entity\" &&\n (navigationEntries.length === 2 || navigationEntries.length === 3)\n ) {\n let collection: EntityCollection<any> | undefined;\n collection = collectionRegistry.getCollection(firstCollectionEntry.id);\n if (!collection)\n collection = collectionRegistry.getCollection(firstCollectionEntry.slug);\n\n // Resolve the effective openEntityMode based on the current view mode.\n // Priority: collection.openEntityMode (explicit) > view-mode-based default.\n // View mode priority: URL __view param > saved user config > collection default.\n let effectiveOpenMode: \"side_panel\" | \"full_screen\" | \"split\" | \"dialog\" | undefined = collection?.openEntityMode;\n if (!effectiveOpenMode && collection) {\n const urlViewParam = new URLSearchParams(location.search).get(\"__view\");\n let currentViewMode: ViewMode = collection.defaultViewMode ?? \"list\";\n if (urlViewParam && [\"list\", \"table\", \"kanban\", \"cards\"].includes(urlViewParam)) {\n currentViewMode = urlViewParam as ViewMode;\n } else {\n const savedView = userConfigPersistence?.getCollectionConfig(collection.slug)?.defaultViewMode;\n if (savedView) currentViewMode = savedView as ViewMode;\n }\n if (currentViewMode === \"kanban\") effectiveOpenMode = \"side_panel\";\n else if (currentViewMode === \"table\" || currentViewMode === \"cards\") effectiveOpenMode = \"full_screen\";\n else effectiveOpenMode = \"split\";\n }\n if (collection && effectiveOpenMode === \"split\") {\n // Extract subcollection tab from the 3rd entry if present\n let selectedTab: string | undefined;\n if (navigationEntries.length === 3) {\n const thirdEntry = navigationEntries[2];\n if (thirdEntry.type === \"collection\") {\n selectedTab = thirdEntry.collection.slug;\n } else if (thirdEntry.type === \"custom_view\") {\n selectedTab = thirdEntry.view.key;\n }\n }\n // Fallback: check for unregistered tabs (e.g. __json, __rebase_history)\n // that aren't parsed as navigation entries\n if (!selectedTab && (navigationEntries.length === 2) && lastEntityEntry) {\n const entityIdStr = String(lastEntityEntry.entityId);\n const entityIdIdx = pathname.lastIndexOf(`/${entityIdStr}`);\n if (entityIdIdx >= 0) {\n const afterEntity = pathname.substring(entityIdIdx + 1 + entityIdStr.length);\n const trailingSegment = afterEntity.startsWith(\"/\") ? afterEntity.substring(1) : afterEntity;\n if (trailingSegment.length > 0) {\n selectedTab = trailingSegment;\n }\n }\n }\n return <EntityCollectionView\n key={`collection_view_${collection.slug}`}\n {...collection}\n parentCollectionSlugs={[]} parentEntityIds={[]}\n path={collection.slug}\n updateUrl={true}\n selectedEntityId={lastEntityEntry.entityId}\n selectedTab={selectedTab}\n Actions={toArray(collection.Actions)}/>;\n }\n }\n\n return <EntityFullScreenRoute\n pathname={pathname}\n navigationEntries={navigationEntries}\n isNew={isNew}\n isCopy={isCopy}\n />;\n\n}\n\nfunction getSelectedTabFromUrl(isNew: boolean, lastCustomView: NavigationViewCollectionInternal<any> | NavigationViewEntityCustomInternal<any> | undefined) {\n if (isNew) {\n return undefined;\n } else if (lastCustomView) {\n if (lastCustomView.type === \"custom_view\") {\n return lastCustomView.view.key;\n } else if (lastCustomView.type === \"collection\") {\n return lastCustomView.id ?? lastCustomView.slug;\n }\n }\n return undefined;\n}\n\nfunction EntityFullScreenRoute({\n pathname,\n navigationEntries,\n isNew,\n isCopy\n}: {\n pathname: string;\n navigationEntries: NavigationViewInternal[],\n isNew: boolean,\n isCopy: boolean\n}) {\n\n const collectionRegistry = useCollectionRegistryController();\n const urlController = useUrlController();\n const navigate = useNavigate();\n const location = useLocation();\n\n // defaultValues may be carried via location.state when openNewDocument() is called\n // for full-screen mode. We read it once on mount — after that, the form owns its state.\n const defaultValues = (location.state as { defaultValues?: Record<string, unknown> } | null)?.defaultValues;\n\n // Preserve the current hash (e.g. #full) across tab/save navigations\n const hash = location.hash;\n\n const navigationPath = urlController.urlPathToDataPath(pathname);\n\n // is navigating away blocked\n const blocked = useRef(false);\n\n const lastEntityEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"entity\");\n const navigationEntriesAfterEntity = lastEntityEntry ? navigationEntries.slice(navigationEntries.indexOf(lastEntityEntry) + 1) : [];\n\n const lastCustomView = [...navigationEntriesAfterEntity].reverse().find(\n (entry) => entry.type === \"custom_view\" || entry.type === \"collection\"\n ) as NavigationViewCollectionInternal<any> | NavigationViewEntityCustomInternal<any> | undefined;\n\n const entityId = lastEntityEntry && \"entityId\" in lastEntityEntry ? lastEntityEntry.entityId : undefined;\n\n // Derive tab from navigation entries (works for registered custom views)\n let urlTab = getSelectedTabFromUrl(isNew, lastCustomView);\n\n // Fallback: internal tabs like __json or __rebase_history aren't registered as\n // entity views, so the navigation parser ignores them. Check the raw pathname\n // for a trailing segment after the entity ID to catch those cases.\n if (!urlTab && entityId && !isNew) {\n const entityIdStr = String(entityId);\n const entityIdIdx = pathname.lastIndexOf(`/${entityIdStr}`);\n if (entityIdIdx >= 0) {\n const afterEntity = pathname.substring(entityIdIdx + 1 + entityIdStr.length);\n const trailingSegment = afterEntity.startsWith(\"/\") ? afterEntity.substring(1) : afterEntity;\n if (trailingSegment.length > 0 && trailingSegment !== \"edit\") {\n urlTab = trailingSegment;\n }\n }\n }\n\n const [selectedTab, setSelectedTab] = useState<string | undefined>(urlTab);\n\n const parentCollectionSlugs = collectionRegistry.getParentCollectionSlugs(navigationPath);\n const parentEntityIds = collectionRegistry.getParentEntityIds(navigationPath);\n useEffect(() => {\n if (urlTab !== selectedTab) {\n setSelectedTab(urlTab);\n }\n }, [urlTab]);\n\n const basePath = !entityId || isNew\n ? pathname\n : pathname.substring(0, pathname.lastIndexOf(`/${entityId}`));\n\n const entityPath = basePath + `/${entityId}`;\n\n const blocker = useBlocker(({\n currentLocation,\n nextLocation\n }) => {\n if (nextLocation.pathname.startsWith(entityPath))\n return false;\n\n // Side panel overlay navigations preserve the underlying form via\n // base_location in router state — no data is lost in either direction.\n\n // Opening a side panel (e.g. clicking a relation arrow)\n const nextHash = nextLocation.hash;\n if (nextHash === \"#side\" || nextHash === \"#new_side\")\n return false;\n\n // Closing a side panel (navigate(-1) back to the form's own path)\n const currentHash = currentLocation.hash;\n if ((currentHash === \"#side\" || currentHash === \"#new_side\") &&\n (nextLocation.pathname === basePath ||\n nextLocation.pathname.startsWith(entityPath)))\n return false;\n\n return blocked.current;\n });\n\n const lastCollectionEntry = [...navigationEntries].reverse().find((entry) => entry.type === \"collection\");\n\n if (isNew && !lastCollectionEntry) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n throw new Error(\"INTERNAL: No collection found in the navigation\");\n }\n\n if (!isNew && !lastEntityEntry) {\n if (!collectionRegistry.initialised) {\n return <CircularProgressCenter/>;\n }\n return <NotFoundPage/>;\n }\n\n const rawCollection = isNew\n ? (lastCollectionEntry && \"collection\" in lastCollectionEntry ? lastCollectionEntry.collection : undefined)!\n : (lastEntityEntry && \"parentCollection\" in lastEntityEntry ? lastEntityEntry.parentCollection : undefined)!;\n const collection = collectionRegistry.getCollection(rawCollection.slug) || rawCollection;\n const fullIdPath = isNew ? lastCollectionEntry!.slug : lastEntityEntry!.slug;\n const collectionPath = urlController.resolveDatabasePathsFrom(fullIdPath);\n const isEditRoute = pathname.endsWith(\"/edit\") || pathname.split(\"/\").pop() === \"edit\";\n // Determine if this is a detail-view-first collection showing the view page\n const isDetailMode = collection.defaultEntityAction === \"view\" && !isNew && !isCopy && entityId && !isEditRoute;\n\n if (isDetailMode) {\n return <>\n <EntityDetailView\n key={collection.slug + \"_view_\" + entityId}\n entityId={entityId}\n collection={collection}\n layout={\"full_screen\"}\n path={collectionPath}\n selectedTab={selectedTab ?? undefined}\n onEditClick={() => {\n const editUrl = urlController.buildUrlCollectionPath(`${collectionPath}/${entityId}`) + \"/edit\";\n navigate(editUrl + hash);\n }}\n onTabChange={(params) => {\n setSelectedTab(params.selectedTab);\n const newSelectedTab = params.selectedTab;\n if (newSelectedTab) {\n navigate(`${basePath}/${entityId}/${newSelectedTab}${hash}`, { replace: true });\n } else {\n navigate(`${basePath}/${entityId}${hash}`, { replace: true });\n }\n }}\n parentCollectionSlugs={parentCollectionSlugs}\n parentEntityIds={parentEntityIds}\n />\n </>;\n }\n\n return <>\n <EntityEditView\n key={collection.slug + \"_\" + (isNew ? \"new\" : (isCopy ? entityId + \"_copy\" : entityId))}\n entityId={isNew ? undefined : entityId}\n collection={collection}\n layout={\"full_screen\"}\n path={collectionPath}\n copy={isCopy}\n selectedTab={selectedTab ?? undefined}\n defaultValues={isNew ? defaultValues : undefined}\n onValuesModified={(modified) => blocked.current = modified}\n navigateBack={() => {\n const detailUrl = urlController.buildUrlCollectionPath(`${collectionPath}/${entityId}`);\n navigate(detailUrl + hash);\n }}\n onSaved={(params) => {\n const newSelectedTab = params.selectedTab;\n const newEntityId = params.entityId;\n const savedHash = isNew ? \"\" : hash;\n if (newSelectedTab) {\n navigate(`${basePath}/${newEntityId}/${newSelectedTab}${savedHash}`, { replace: true });\n } else {\n navigate(`${basePath}/${newEntityId}${savedHash}`, { replace: true });\n }\n }}\n onTabChange={(params) => {\n setSelectedTab(params.selectedTab);\n if (isNew) {\n return;\n }\n const newSelectedTab = params.selectedTab;\n if (newSelectedTab) {\n navigate(`${basePath}/${entityId}/${newSelectedTab}${hash}`, { replace: true });\n } else {\n navigate(`${basePath}/${entityId}${hash}`, { replace: true });\n }\n }}\n parentCollectionSlugs={parentCollectionSlugs} parentEntityIds={parentEntityIds}\n />\n\n <UnsavedChangesDialog\n open={blocker?.state === \"blocked\"}\n handleOk={() => blocker?.proceed?.()}\n handleCancel={() => blocker?.reset?.()}\n body={\"You have unsaved changes in this entity.\"}/>\n </>;\n}\n","import type { AppView } from \"@rebasepro/types\";\n;\nimport { useEffect } from \"react\";\nimport { useBreadcrumbsController } from \"../index\";\nimport { useUrlController } from \"../index\";\n\nexport function CustomViewRoute({ view }: {\n view: AppView\n}) {\n\n const breadcrumbs = useBreadcrumbsController();\n const urlController = useUrlController();\n\n useEffect(() => {\n breadcrumbs.set({\n breadcrumbs: [{\n title: view.name,\n url: urlController.buildAppUrlPath(view.slug)\n }]\n });\n }, [view.slug, urlController]);\n\n return view.view;\n}\n","import React, { lazy, Suspense, useMemo } from \"react\";\nimport { Route } from \"react-router-dom\";\nimport {\n useRebaseRegistry,\n RebaseRoutes,\n UserSettingsView,\n UIReferenceView,\n NotFoundPage,\n useInternalUserManagementController\n} from \"@rebasepro/core\";\nimport { CircularProgressCenter } from \"@rebasepro/ui\";\n\nimport { ContentHomePage } from \"./HomePage/ContentHomePage\";\nimport { RolesView } from \"./admin/RolesView\";\nimport { RebaseRoute } from \"../routes/RebaseRoute\";\nimport { CustomViewRoute } from \"../routes/CustomViewRoute\";\nimport { useNavigationStateController } from \"../hooks/navigation/contexts/NavigationStateContext\";\nimport { CollectionEditorDialogs } from \"./CollectionEditorDialogs\";\nimport { useEffect } from \"react\";\nimport { useTranslation } from \"@rebasepro/core\";\nimport { useBreadcrumbsController } from \"../index\";\n\nfunction SettingsView() {\n const { t } = useTranslation();\n const breadcrumbs = useBreadcrumbsController();\n useEffect(() => {\n breadcrumbs.set({\n breadcrumbs: [{ title: t(\"account_settings\"),\nurl: \"/settings\" }]\n });\n\n }, []);\n return <UserSettingsView/>;\n}\n\nexport interface RebaseRouteDefsProps {\n /** User-provided custom routes to include. */\n children?: React.ReactNode;\n /**\n * Wrap function — receives the route tree and lets you wrap it in a layout.\n * If provided, the routes are rendered inside this wrapper.\n * If not provided, routes are rendered directly inside <RebaseRoutes>.\n */\n layout?: React.ReactElement;\n}\n\n/**\n * Route definitions for the CMS.\n *\n * Defines all standard routes: home, studio home, collection view,\n * settings, users, roles, debug, custom views, and a catch-all 404.\n *\n * **Independently usable**: Use this when you want Rebase routes\n * inside your own layout/navigation setup.\n *\n * @example\n * ```tsx\n * <RebaseNavigation>\n * <RebaseRouteDefs layout={<MyCustomLayout />}>\n * <Route path=\"/my-custom\" element={<MyView />} />\n * </RebaseRouteDefs>\n * </RebaseNavigation>\n * ```\n */\nexport function RebaseRouteDefs({ children, layout }: RebaseRouteDefsProps) {\n const registry = useRebaseRegistry();\n const userManagement = useInternalUserManagementController();\n const navigationStateController = useNavigationStateController();\n\n const cmsHomePage = registry.cmsConfig?.homePage ?? <Suspense fallback={<CircularProgressCenter/>}><ContentHomePage/></Suspense>;\n const studioHomePage = registry.studioConfig?.homePage;\n\n const combinedViews = useMemo(() => [\n ...(navigationStateController.views ?? []),\n ...(navigationStateController.adminViews ?? [])\n ], [navigationStateController.views, navigationStateController.adminViews]);\n\n const routeContents = (\n <>\n {/* Core CMS Routes */}\n <Route path={\"/\"} element={cmsHomePage}/>\n {registry.studioConfig && (\n <Route path={\"/s\"} element={studioHomePage}/>\n )}\n\n <Route path={\"/c/*\"} element={<RebaseRoute/>}/>\n <Route path={\"/settings\"} element={<SettingsView/>}/>\n {userManagement && <Route path={\"/roles\"} element={<RolesView userManagement={userManagement}/>}/>}\n\n {/* Hidden debug route */}\n <Route path={\"/debug/ui\"} element={<UIReferenceView/>}/>\n\n {/* Custom Registered Views */}\n {combinedViews.map(view => {\n const slugs = Array.isArray(view.slug) ? view.slug : [view.slug];\n return slugs.flatMap(slug => {\n const routes = [\n <Route key={slug} path={slug} element={<CustomViewRoute view={view}/>}/>\n ];\n if (view.nestedRoutes) {\n routes.push(\n <Route key={slug + \"/*\"} path={slug + \"/*\"} element={<CustomViewRoute view={view}/>}/>\n );\n }\n return routes;\n });\n })}\n\n {/* User Provided Custom Routes */}\n {children}\n\n <Route path={\"*\"} element={navigationStateController.loading ? <CircularProgressCenter/> : <NotFoundPage/>}/>\n </>\n );\n\n return (\n <>\n <RebaseRoutes>\n {layout\n ? <Route element={layout}>{routeContents}</Route>\n : <Route element={<>{routeContents}</>}>{routeContents}</Route>\n }\n </RebaseRoutes>\n <CollectionEditorDialogs/>\n </>\n );\n}\n","import React, { useMemo } from \"react\";\nimport {\n useRebaseRegistry\n} from \"@rebasepro/core\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\n\nimport { RebaseAuthGate } from \"./RebaseAuthGate\";\nimport { RebaseNavigation } from \"./RebaseNavigation\";\nimport { RebaseLayout } from \"./RebaseLayout\";\nimport { RebaseRouteDefs } from \"./RebaseRouteDefs\";\n\nexport interface RebaseShellProps {\n title?: string;\n appBar?: React.ReactNode;\n drawer?: React.ReactNode;\n autoOpenDrawer?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Convenience component that composes all four CMS layers:\n *\n * ```\n * <RebaseAuthGate>\n * <RebaseNavigation>\n * <RebaseRouteDefs layout={<RebaseLayout>}>\n * {children}\n * </RebaseRouteDefs>\n * </RebaseNavigation>\n * </RebaseAuthGate>\n * ```\n *\n * Each layer is independently usable — see their individual docs.\n * RebaseShell is sugar that composes them all with sensible defaults.\n */\nexport function RebaseShell(props: RebaseShellProps) {\n const {\n title = \"Rebase\",\n appBar,\n drawer,\n autoOpenDrawer = false,\n children\n } = props;\n\n const registry = useRebaseRegistry();\n\n // Compute devViews for the layout's AdminModeSyncer\n const devViews = useMemo(() => {\n return registry.studioConfig?.devViews ?? [];\n }, [registry.studioConfig?.devViews]);\n\n return (\n <RebaseAuthGate>\n <RebaseNavigation>\n <ErrorBoundary fullPage>\n <RebaseRouteDefs\n layout={\n <RebaseLayout\n title={title}\n appBar={appBar}\n drawer={drawer}\n autoOpenDrawer={autoOpenDrawer}\n devViews={devViews}\n />\n }\n >\n {children}\n </RebaseRouteDefs>\n </ErrorBoundary>\n </RebaseNavigation>\n </RebaseAuthGate>\n );\n}\n","import type { ArrayProperty, MapProperty, Property } from \"@rebasepro/types\";\nimport React from \"react\";\nimport { ErrorBoundary } from \"@rebasepro/ui\";\nimport type { PropertyPreviewProps } from \"../../types/components/PropertyPreviewProps\";\nimport { PropertyPreview } from \"../PropertyPreview\";\n\n/**\n * @group Preview components\n */\nexport function ArrayOfMapsPreview({\n propertyKey,\n value,\n property,\n size\n // entity\n}: PropertyPreviewProps<ArrayProperty>) {\n\n if (Array.isArray(property?.of)) {\n throw Error(\"Using array properties instead of single one in `of` in ArrayProperty\");\n }\n\n if (property?.type !== \"array\" || !property.of || property.of.type !== \"map\")\n throw Error(\"Picked wrong preview component ArrayOfMapsPreview\");\n\n const mapProperty = property.of;\n const properties = mapProperty.properties;\n if (!properties) {\n throw Error(`You need to specify a 'properties' prop (or specify a custom field) in your map property ${propertyKey}`);\n }\n const values = value as Record<string, unknown>[];\n const previewProperties: string[] | undefined = (mapProperty as MapProperty).previewProperties;\n\n if (!values) return null;\n\n let mapProperties = previewProperties;\n if (!mapProperties || !mapProperties.length) {\n mapProperties = Object.keys(properties);\n if (size)\n mapProperties = mapProperties.slice(0, 3);\n }\n\n return (\n <div className=\"table-auto text-xs\">\n <div>\n {values &&\n values.map((v, index: number) => {\n return (\n <div key={`table_${v}_${index}`}\n className=\"border-b last:border-b-0 py-2\">\n {mapProperties && mapProperties.map(\n (key) => (\n <div\n key={`table-cell-${key as string}`}\n className=\"table-cell\"\n >\n <ErrorBoundary>\n <PropertyPreview\n propertyKey={key as string}\n value={(v)[key]}\n property={properties[key as string] as Property}\n // entity={entity}\n size={\"small\"}/>\n </ErrorBoundary>\n </div>\n )\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { useCollectionRegistryController } from \"../_cms_internals\";\nimport { ErrorView, useTranslation } from \"@rebasepro/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@rebasepro/ui\";\nimport { prettifyIdentifier } from \"@rebasepro/utils\";\nimport { getLastSegment } from \"@rebasepro/common\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const registry = useCollectionRegistryController();\n const path = getLastSegment(pathProp);\n const parentCollectionSlugs = registry.getParentCollectionSlugs(pathProp);\n const parentEntityIds = registry.getParentEntityIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n const { t } = useTranslation();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={t(\"studio_missing_reference_error\", { path })}/>\n <Button className={\"mx-2\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path,\nname: prettifyIdentifier(path) },\n parentCollectionSlugs, parentEntityIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n {t(\"studio_missing_reference_create\")}\n </Button>\n </div>;\n}\n\n","import React from \"react\";\nimport { CollectionActionsProps } from \"@rebasepro/types\";\nimport { Select, SelectItem } from \"@rebasepro/ui\";\nimport { useTranslation, useInternalUserManagementController } from \"@rebasepro/core\";\n\nexport function RolesFilterSelect({\n tableController\n}: CollectionActionsProps<any>) {\n const { t } = useTranslation();\n const userManagement = useInternalUserManagementController();\n const roles = userManagement?.roles || [];\n\n const currentFilterValue = (tableController.filterValues?.roles?.[1] as string) || \"\";\n\n const handleRoleChange = (newRole: string) => {\n const filterVal = newRole === \"\" ? undefined : newRole;\n if (filterVal) {\n tableController.setFilterValues?.({\n ...tableController.filterValues,\n roles: [\"array-contains\", filterVal]\n });\n } else {\n const nextFilters = { ...tableController.filterValues };\n delete nextFilters.roles;\n tableController.setFilterValues?.(nextFilters);\n }\n };\n\n if (!roles || roles.length === 0) return null;\n\n return (\n <Select\n value={currentFilterValue || \"__all__\"}\n onValueChange={(v) => handleRoleChange(v === \"__all__\" ? \"\" : v)}\n placeholder={t(\"all_roles\") || \"All Roles\"}\n size=\"small\"\n className=\"w-48\"\n >\n <SelectItem value=\"__all__\">{t(\"all_roles\") || \"All Roles\"}</SelectItem>\n {roles.map(role => (\n <SelectItem key={role.id} value={role.id}>{role.name}</SelectItem>\n ))}\n </Select>\n );\n}\n","import React from \"react\";\nimport { FieldProps } from \"../../types/fields\";\nimport { MultiSelect, MultiSelectItem } from \"@rebasepro/ui\";\nimport { useTranslation, useInternalUserManagementController } from \"@rebasepro/core\";\nimport { RoleChip } from \"./RoleChip\";\n\nexport function UserRolesSelectField({\n propertyKey,\n value,\n setValue,\n disabled\n}: FieldProps) {\n const { t } = useTranslation();\n const userManagement = useInternalUserManagementController();\n const roles = userManagement?.roles || [];\n\n const selectedRoleIds = (value || []).map((r: any) => {\n if (typeof r === \"object\" && r !== null) {\n return r.id;\n }\n return r;\n });\n\n const handleValueChange = (val: string[]) => {\n const references = val.map(id => ({\n id,\n path: \"roles\",\n __type: \"relation\"\n }));\n setValue(references);\n };\n\n return (\n <div className=\"col-span-12\">\n <MultiSelect\n className=\"w-full\"\n label={t(\"roles\") || \"Roles\"}\n value={selectedRoleIds}\n onValueChange={handleValueChange}\n disabled={disabled}\n >\n {roles.map(role => (\n <MultiSelectItem key={role.id} value={role.id}>\n <RoleChip role={role}/>\n </MultiSelectItem>\n ))}\n </MultiSelect>\n </div>\n );\n}\n"],"names":["resolveNavigationFrom","path","context","data","navigationStateController","collectionRegistryController","Error","navigationEntries","getNavigationEntriesFromPath","collections","resultPromises","map","entry","type","Promise","resolve","collection","getCollection","slug","findById","entityId","then","entity","undefined","filter","v","Boolean","all","useResolvedNavigationFrom","t0","$","_c","useCMSContext","setData","useState","dataLoading","setDataLoading","dataLoadingError","setDataLoadingError","t1","catch","e","finally","t2","useEffect","t3","bb0","t4","Symbol","for","ReferenceWidget","name","multiselect","disabled","value","onReferenceSelected","onMultipleReferenceSelected","previewProperties","fixedFilter","size","className","includeId","includeEntityLink","useCollectionRegistryController","useMemo","onSingleEntitySelected","useCallback","reference","getReferenceFrom","onMultipleEntitiesSelected","entities","references","referenceDialogController","useEntitySelectionDialog","stopPropagation","child","onEntryClick","open","Array","isArray","ref","index","isEntityReference","cls","AdminModeSyncer","devViews","location","useLocation","urlController","useUrlController","adminModeController","useAdminModeController","currentModeRef","React","useRef","mode","current","setModeRef","setMode","pathname","isContentRoute","isUrlCollectionPath","basePath","studioHomePath","isStudioRoute","startsWith","some","view","viewPath","buildAppUrlPath","RebaseCMS","homePage","entityViews","entityActions","plugins","collectionEditor","navigationGroupMappings","dispatch","useRebaseRegistryDispatch","registerCMS","unregisterCMS","useLayoutEffect","RebaseAuthGate","children","registry","useRebaseRegistry","authController","useAuthController","initialLoading","user","authConfig","loginView","ActiveLoginView","RebaseLayout","props","title","appBar","drawer","autoOpenDrawer","ActiveAppBar","t5","ActiveDrawer","t6","t7","t8","t9","NavigationChip","navigate","useNavigate","userConfigurationPersistence","useUserConfigurationPersistence","favouritePaths","includes","favourite","preventDefault","setFavouritePaths","p","onIconClick","url","FavouritesView","useNavigationStateController","T0","topLevelNavigation","find","favouriteCollections","Collapse","length","_temp","entry_0","NavigationGroup","group","minimised","isPreview","isPotentialCardDropTarget","onEditGroup","dndDisabled","collapsed","onToggleCollapsed","t","useTranslation","isHovered","setIsHovered","currentGroupName","showCaret","iconSize","smallest","TitleContent","t10","t11","t12","minHeight","t13","t14","NavigationCardBinding","description","onClick","shrink","collectionIcon","useRebaseContext","actionsArray","pluginCardActions","useSlot","pluginCardInsights","actions","setRecentlyVisitedPaths","recentlyVisitedPaths","p_0","animateLayoutChanges","args","defaultAnimateLayoutChanges","wasDragging","dropAnimationConfig","cloneSerializableNavigationEntry","clonedEntry","id","cloneItemsForDnd","items","g","entries","SortableNavigationCard","setNodeRef","listeners","attributes","transform","transition","isDragging","useSortable","CSS","Transform","toString","opacity","style","NavigationGroupDroppable","itemIds","useDroppable","rectSortingStrategy","SortableNavigationGroup","groupName","useHomePageDnd","setItems","onCardMovedBetweenGroups","onGroupMoved","onNewGroupDrop","onPersist","dndItems","setDndItems","activeId","setActiveId","activeIsGroup","setActiveIsGroup","currentDraggingGroupId","setCurrentDraggingGroupId","dndKitActiveNode","setDndKitActiveNode","isDraggingCardOnly","setIsDraggingCardOnly","dialogOpenForGroup","setDialogOpenForGroup","isHoveringNewGroupDropZone","setIsHoveringNewGroupDropZone","pendingNewGroupName","setPendingNewGroupName","stateBeforeNewGroup","setStateBeforeNewGroup","preDragItemsRef","interimItemsRef","mouseSensor","useSensor","MouseSensor","activationConstraint","distance","touchSensor","TouchSensor","delay","tolerance","keyboardSensor","KeyboardSensor","sensors","useSensors","dndContainers","findDndContainer","lastOverId","recentlyMovedToNewContainer","collisionDetection","groups","droppableContainers","c","closestCenter","pointer","pointerWithin","zone","container","itemsIn","closest","closestCorners","first","getFirstCollision","rects","rectIntersection","zoneRect","overId","overIsContainer","closestItem","handleDragStart","active","isGroup","handleDragOver","over","activeIdNow","overIdNow","activeCont","overCont","newState","srcIdx","findIndex","tgtIdx","src","tgt","idxInSrc","moved","splice","push","overIdx","handleDragEnd","resetDragState","from","to","arrayMove","findContainerInState","state","sourceState","dragged","tentative","counter","grpIdx","oldIdx","newIdx","reordered","finalState","finalOverId","cleanOverCont","console","error","handleDragCancel","handleRenameGroup","oldName","newName","idx","updated","handleDialogClose","activeItemForOverlay","flatMap","activeGroupData","onDragStart","onDragOver","onDragEnd","onDragCancel","dropAnimation","draggingGroupId","containers","NewGroupDropZone","setIsHovering","isOver","isVisible","setIsVisible","tp","useDndMonitor","RenameGroupDialog","initialName","existingGroupNames","onClose","onRename","setName","setError","inputRef","setTimeout","focus","select","event","target","trim","handleNameChange","trimmedName","handleSave","event_0","key","trimmedName_0","currentError","handleKeyDown","display","t15","t16","t17","t18","t19","t20","DEFAULT_GROUP_NAME","ADMIN_GROUP_NAME","ContentHomePage","additionalActions","additionalChildrenStart","additionalChildrenEnd","sections","hiddenGroups","customizationController","useCustomizationController","resolvedSlots","breadcrumbs","useBreadcrumbsController","set","allowDragAndDrop","unFilteredNavigationEntries","unFilteredGroupOrder","onNavigationEntriesUpdate","rawNavigationEntries","groupOrderFromNavController","entryGroups","Set","has","fuse","filteredUrls","setFilteredUrls","performingSearch","filteredNavigationEntries","Fuse","keys","updateSearch","results","search","x","item","adminGroupData","setAdminGroupData","isDndDirtyRef","dndDirtyTimeoutRef","processedGroups","entriesByGroup","forEach","hasPluginAdditionalCards","s","slot","allProcessed","ordered","Object","admin","updateItems","updater","persistNavigationGroups","latest","clearTimeout","draggable","groupNames","collapsedDefaults","buildCollapsedDefaults","cmsConfig","isGroupCollapsed","toggleGroupCollapsed","useCollapsedGroups","analyticsController","onAnalyticsEvent","card","containerRef","direction","useRestoreScroll","dndModifiers","restrictToVerticalAxis","restrictToWindowEdges","sectionProps","additionalPluginChildrenStart","additionalPluginChildrenEnd","additionalPluginActions","homeCardContributions","sort","a","b","order","top","droppable","strategy","MeasuringStrategy","Always","frequency","verticalListSortingStrategy","groupData","groupIndex","groupKey","entriesInGroup","homeCardsProps","additionalCards","i","toLowerCase","join","padding","margin","section","n","RebaseRoute","collectionRegistry","userConfigPersistence","hash","isSidePanel","isNew","isCopy","isFullScreen","navigationPath","urlPathToDataPath","lastEntry","isViewingCollection","isLastEntry","String","buildUrlCollectionPath","showCount","count","initialised","toArray","Actions","lastCollectionEntry","reverse","_temp2","bb1","firstEntry","_temp3","lastEntityEntry","firstCollectionEntry","bb2","effectiveOpenMode","openEntityMode","urlViewParam","URLSearchParams","get","currentViewMode","defaultViewMode","savedView","getCollectionConfig","selectedTab","thirdEntry","entityIdStr","entityIdIdx","lastIndexOf","afterEntity","substring","trailingSegment","entry_2","entry_1","getSelectedTabFromUrl","lastCustomView","EntityFullScreenRoute","defaultValues","blocked","_temp4","navigationEntriesAfterEntity","slice","indexOf","_temp5","urlTab","setSelectedTab","parentCollectionSlugs","getParentCollectionSlugs","parentEntityIds","getParentEntityIds","entityPath","currentLocation","nextLocation","nextHash","currentHash","blocker","useBlocker","_temp6","rawCollection","parentCollection","fullIdPath","collectionPath","resolveDatabasePathsFrom","isEditRoute","endsWith","split","pop","isDetailMode","defaultEntityAction","editUrl","params","newSelectedTab","replace","modified","detailUrl","params_0","newSelectedTab_0","newEntityId","savedHash","params_1","newSelectedTab_1","proceed","reset","CustomViewRoute","SettingsView","RebaseRouteDefs","layout","userManagement","useInternalUserManagementController","cmsHomePage","studioHomePage","studioConfig","combinedViews","views","adminViews","routeContents","slugs","routes","nestedRoutes","loading","RebaseShell","ArrayOfMapsPreview","propertyKey","property","of","mapProperty","properties","values","mapProperties","MissingReferenceWidget","pathProp","getLastSegment","useCollectionEditorController","ErrorView","createCollection","initialValues","prettifyIdentifier","redirect","sourceClick","RolesFilterSelect","tableController","roles","currentFilterValue","filterValues","newRole","filterVal","setFilterValues","nextFilters","handleRoleChange","role","UserRolesSelectField","setValue","selectedRoleIds","val","handleValueChange","__type","r"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DO,SAASA,sBAA4E;AAAA,EACxFC;AAAAA,EACAC;AAIJ,GAA0C;AAEtC,QAAMC,OAAOD,QAAQC;AACrB,QAAM;AAAA,IAAEC;AAAAA,IAA2BC;AAAAA,EAAAA,IAAiCH;AAEpE,MAAI,CAACE,6BAA6B,CAACC,8BAA8B;AAC7D,UAAMC,MAAM,iFAAiF;AAAA,EACjG;AAEA,QAAMC,oBAAoBC,6BAA6B;AAAA,IACnDP;AAAAA,IACAQ,aAAaJ,6BAA6BI,eAAe,CAAA;AAAA,EAAA,CAC5D;AAED,QAAMC,iBAA0DH,kBAC3DI,IAAKC,CAAAA,UAAU;AACZ,QAAIA,MAAMC,SAAS,cAAc;AAC7B,aAAOC,QAAQC,QAAQH,KAAK;AAAA,IAChC,WAAWA,MAAMC,SAAS,UAAU;AAChC,YAAMG,aAAaX,6BAA6BY,cAAcL,MAAMM,IAAI;AACxE,UAAI,CAACF,YAAY;AACb,cAAMV,MAAM,oEAAoEM,MAAMM,IAAI,EAAE;AAAA,MAChG;AACA,aAAOf,KAAKa,WAAWJ,MAAMM,IAAI,EAAEC,SAASP,MAAMQ,QAAQ,EACrDC,KAAMC,CAAAA,WAAW;AACd,YAAI,CAACA,OAAQ,QAAOC;AACpB,eAAO;AAAA,UAAE,GAAGX;AAAAA,UACpCU;AAAAA,QAAAA;AAAAA,MACoB,CAAC;AAAA,IACT,WAAWV,MAAMC,SAAS,eAAe;AACrC,aAAOC,QAAQC,QAAQH,KAAK;AAAA,IAChC,OAAO;AACH,YAAMN,MAAM,yCAAyC;AAAA,IACzD;AAAA,EACJ,CAAC,EACAkB,OAAOC,CAAAA,OAAKC,QAAQD,EAAC,CAAC;AAE3B,SAAOX,QAAQa,IAAIjB,cAAc;AACrC;AAwBO,SAAAkB,0BAAAC,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AACH,QAAA;AAAA,IAAA9B;AAAAA,EAAAA,IAAA4B;AAIA,QAAA3B,UAAgB8B,cAAAA;AAChB,QAAA;AAAA,IAAA5B;AAAAA,IAAAC;AAAAA,EAAAA,IAAoEH;AAEpE,QAAA,CAAAC,MAAA8B,OAAA,IAAwBC,SAAAA;AACxB,QAAA,CAAAC,aAAAC,cAAA,IAAsCF,cAAuB;AAC7D,QAAA,CAAAG,kBAAAC,mBAAA,IAAgDJ,SAAAA;AAA8B,MAAAK;AAAA,MAAAT,GAAA,CAAA,MAAAzB,gCAAAyB,GAAA,CAAA,MAAA5B,WAAA4B,GAAA,CAAA,MAAA1B,6BAAA0B,UAAA7B,MAAA;AAEpEsC,SAAAA,MAAA;AAAA,UACFnC,6BAA6BC,8BAA4B;AACzD+B,2BAAmB;AACnBE,4BAAmBf,MAAU;AAC7BvB,8BAAA;AAAA,UAAAC;AAAAA,UAAAC;AAAAA,QAAAA,CACH,EAACmB,KACYY,OAAO,EAACO,MAAAC,CAAAA,OACAH,oBAAoBG,EAAC,CAAC,EAACC,QAAA,MACtBN,eAAc,KAAM,CAAC;AAAA,MAAC;AAAA,IAAA;AAGhDN,IAAAA,QAAAzB;AAAAyB,IAAAA,QAAA5B;AAAA4B,IAAAA,QAAA1B;AAAA0B,IAAAA,QAAA7B;AAAA6B,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAa;AAAA,MAAAb,GAAA,CAAA,MAAA5B,WAAA4B,UAAA7B,MAAA;AAAE0C,SAAA,CAAC1C,MAAMC,OAAO;AAAC4B,IAAAA,QAAA5B;AAAA4B,IAAAA,QAAA7B;AAAA6B,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAXlBc,YAAUL,IAWPI,EAAe;AAAC,MAAAE;AAAAC,OAAA;AAAA,QAAA,CAGV1C,2BAAyB;AAAA,UAAA2C;AAAA,UAAAjB,GAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACnBF,cAAA;AAAA,UAAAZ,aAAA;AAAA,QAAA;AAAqBL,QAAAA,QAAAiB;AAAAA,MAAA,OAAA;AAAAA,cAAAjB,GAAA,CAAA;AAAA,MAAA;AAA5Be,WAAOE;AAAsB,YAAAD;AAAAA,IAAA;AAAA,QAAAC;AAAA,QAAAjB,GAAA,CAAA,MAAA3B,QAAA2B,WAAAK,eAAAL,GAAA,EAAA,MAAAO,kBAAA;AAE1BU,WAAA;AAAA,QAAA5C;AAAAA,QAAAgC;AAAAA,QAAAE;AAAAA,MAAAA;AAEGP,MAAAA,QAAA3B;AAAA2B,MAAAA,SAAAK;AAAAL,MAAAA,SAAAO;AAAAP,MAAAA,SAAAiB;AAAAA,IAAA,OAAA;AAAAA,WAAAjB,GAAA,EAAA;AAAA,IAAA;AAFVe,SAAOE;AAAAA,EAEI;AAAA,SANRF;AAO6D;ACvHjE,SAASK,gBAAmD;AAAA,EAC/DC;AAAAA,EACAC,cAAc;AAAA,EACdnD;AAAAA,EACAoD;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AACqB,GAAG;AAExB,QAAMzD,+BAA+B0D,gCAAAA;AAErC,QAAM/C,aAA2CgD,QAAQ,MAAM;AAC3D,WAAO3D,6BAA6BY,cAAchB,IAAI;AAAA,EAC1D,GAAG,CAACA,MAAMI,6BAA6BY,aAAa,CAAC;AAErD,QAAMgD,yBAAyBC,YAAY,CAAC5C,WAA6B;AACrE,QAAI+B,SACA;AACJ,QAAIE,qBAAqB;AACrB,YAAMY,YAAY7C,SAAS8C,iBAAiB9C,MAAM,IAAI;AACtDiC,4BAAsB;AAAA,QAClBY;AAAAA,QACA7C;AAAAA,MAAAA,CACH;AAAA,IACL;AAAA,EACJ,GAAG,CAAC+B,UAAUE,mBAAmB,CAAC;AAElC,QAAMc,6BAA6BH,YAAY,CAACI,aAA0B;AACtE,QAAIjB,SACA;AACJ,QAAIG,6BAA6B;AAC7B,YAAMe,aAAaD,WAAWA,SAAS3D,IAAI8B,QAAK2B,iBAAiB3B,EAAC,CAAC,IAAI;AACvEe,kCAA4B;AAAA,QACxBe;AAAAA,QACAD;AAAAA,MAAAA,CACH;AAAA,IACL;AAAA,EACJ,GAAG,CAACjB,UAAUE,mBAAmB,CAAC;AAElC,QAAMiB,4BAA4BC,yBAAyB;AAAA,IACvDrB;AAAAA,IACAnD;AAAAA,IACAe;AAAAA,IACAiD;AAAAA,IACAI;AAAAA,IACAX;AAAAA,EAAAA,CAEJ;AAEmBQ,cAAY,CAACzB,QAAwB;AACpDA,QAAEiC,gBAAAA;AACF,QAAItB,aAAa;AACbiB,iCAA2B,CAAA,CAAE;AAAA,IACjC,OAAO;AACHJ,6BAAuB,IAAI;AAAA,IAC/B;AAAA,EACJ,GAAG,CAACV,mBAAmB,CAAC;AAExB,MAAIoB;AAEJ,QAAMC,eAAeA,MAAM;AACvB,QAAIvB,SACA;AACJmB,8BAA0BK,KAAAA;AAAAA,EAC9B;AAEA,MAAIC,MAAMC,QAAQzB,KAAK,GAAG;AACtBqB,YAAQ,oBAAC,SAAI,WAAW,uBACnBrB,gBAAM3C,IAAI,CAACqE,KAAKC,UAAU;AACvB,aAAO,oBAAC,kBAAA,EAEJ,SAASL,cACT,WAAWI,KACX,UACA,mBACA,MACA,WACA,kBAAA,GAPK,qBAAqBC,KAAK,EAOM;AAAA,IAC7C,CAAC,EAAA,CACL;AAAA,EACJ,WAAW3B,OAAO4B,qBAAqB5B,OAAO4B,qBAAqB;AAC/DP,YAAQ,oBAAC,kBAAA,EACL,WAAWrB,OACX,SAASsB,cACT,UACA,mBACA,MACA,WACA,kBAAA,CAAqC;AAAA,EAE7C;AACA,SAAO,qBAAC,OAAA,EAAI,WAAWO,IAAI,uBACvB,gCACA,0EACA9B,WAAW,kBAAkB,uBAC7B,6FACAO,SACJ,GAEKe,UAAAA;AAAAA,IAAAA;AAAAA,IACA,CAACrB,SAAS,oBAAC,OAAA,EAAI,WAAU,4BACtB,UAAA,qBAAC,QAAA,EAAO,UACJ,SAASsB,cAAa,UAAA;AAAA,MAAA;AAAA,MAChBzB;AAAAA,IAAAA,EAAAA,CACV,EAAA,CACJ;AAAA,EAAA,GAEJ;AACJ;ACpIO,SAASiC,gBAAgB;AAAA,EAAEC;AAA+B,GAAG;AAChE,QAAMC,WAAWC,YAAAA;AACjB,QAAMC,gBAAgBC,iBAAAA;AACtB,QAAMC,sBAAsBC,uBAAAA;AAG5B,QAAMC,iBAAiBC,eAAMC,OAAOJ,oBAAoBK,IAAI;AAC5DH,iBAAeI,UAAUN,oBAAoBK;AAG7C,QAAME,aAAaJ,eAAMC,OAAOJ,oBAAoBQ,OAAO;AAC3DD,aAAWD,UAAUN,oBAAoBQ;AAEzCtD,YAAU,MAAM;AACZ,UAAM3C,OAAOqF,SAASa;AACtB,UAAMC,iBAAiBZ,cAAca,oBAAoBpG,IAAI,KAAKA,SAASuF,cAAcc;AAGzF,UAAMC,iBAAiBf,cAAcc,aAAa,MAAM,OAAO,GAAGd,cAAcc,QAAQ;AACxF,UAAME,gBAAgBvG,SAASsG,kBAAkBtG,KAAKwG,WAAWF,iBAAiB,GAAG,KAAKlB,UAAUqB,KAAKC,CAAAA,SAAQ;AAC7G,YAAMC,WAAWpB,cAAcqB,gBAAgBF,KAAKzF,IAAI;AACxD,aAAOjB,KAAKwG,WAAW,GAAGG,QAAQ,GAAG,KAAK3G,SAAS2G;AAAAA,IACvD,CAAC;AAED,QAAIJ,iBAAiBZ,eAAeI,YAAY,UAAU;AACtDC,iBAAWD,QAAQ,QAAQ;AAAA,IAC/B,WAAWI,kBAAkBR,eAAeI,YAAY,WAAW;AAC/DC,iBAAWD,QAAQ,SAAS;AAAA,IAChC;AAAA,EACJ,GAAG,CAACV,SAASa,UAAUX,eAAeH,QAAQ,CAAC;AAE/C,SAAO;AACX;AC1CO,SAAAyB,UAAAjF,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAAmB,QAAA;AAAA,IAAAtB;AAAAA,IAAAsG;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAAvF;AACtB,QAAAwF,WAAiBC,0BAAAA;AAA4B,MAAA/E;AAAA,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAAqF,oBAAArF,GAAA,CAAA,MAAArB,eAAAqB,GAAA,CAAA,MAAAuF,YAAAvF,GAAA,CAAA,MAAAmF,iBAAAnF,GAAA,CAAA,MAAAkF,eAAAlF,GAAA,CAAA,MAAAiF,YAAAjF,GAAA,CAAA,MAAAsF,2BAAAtF,UAAAoF,SAAA;AAE7B3E,SAAAA,MAAA;AACZ8E,eAAQE,YAAA;AAAA,QAAA9G;AAAAA,QAAAsG;AAAAA,QAAAC;AAAAA,QAAAC;AAAAA,QAAAC;AAAAA,QAAAC;AAAAA,QAAAC;AAAAA,MAAAA,CAMS;AAAC,aAAA,MACLC,SAAQG,cAAAA;AAAAA,IAAgB;AACtC7E,SAAA,CAAC0E,UAAU5G,aAAasG,UAAUC,aAAaC,eAAeC,SAASC,kBAAkBC,uBAAuB;AAACtF,IAAAA,QAAAqF;AAAArF,IAAAA,QAAArB;AAAAqB,IAAAA,QAAAuF;AAAAvF,IAAAA,QAAAmF;AAAAnF,IAAAA,QAAAkF;AAAAlF,IAAAA,QAAAiF;AAAAjF,IAAAA,QAAAsF;AAAAtF,IAAAA,QAAAoF;AAAApF,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAJ,SAAAT,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAA,EAAA;AATpH2F,kBAAgBlF,IASbI,EAAiH;AAAC,SAAA;AAAA;ACElH,SAAA+E,eAAA7F,IAAA;AAAA,QAAAC,KAAAC,GAAA,CAAA;AAAwB,QAAA;AAAA,IAAA4F;AAAAA,EAAAA,IAAA9F;AAC3B,QAAA+F,WAAiBC,kBAAAA;AACjB,QAAAC,iBAAuBC,kBAAAA;AAAoB,MAGvCD,gBAAcE,gBAAA;AAAA,QAAAzF;AAAA,QAAAT,GAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACPV,gCAAC,wBAAA,EAA6B,MAAA,QAAA,CAAO;AAAGT,MAAAA,QAAAS;AAAAA,IAAA,OAAA;AAAAA,YAAAT,GAAA,CAAA;AAAA,IAAA;AAAA,WAAxCS;AAAAA,EAAwC;AAAA,MAAA,CAG9CuF,gBAAcG,MAAA;AAAA,QAAA1F;AAAA,QAAAT,GAAA,CAAA,MAAAgG,kBAAAhG,UAAA8F,SAAAM,YAAAC,WAAA;AACS5F,YAAAqF,SAAQM,YAAAC,aAC5B,oBAAC,aAA0B,gBAAwC;AACtErG,MAAAA,QAAAgG;AAAAhG,MAAAA,GAAA,CAAA,IAAA8F,SAAAM,YAAAC;AAAArG,MAAAA,QAAAS;AAAAA,IAAA,OAAA;AAAAA,YAAAT,GAAA,CAAA;AAAA,IAAA;AAFD,UAAAsG,kBAAwB7F;AAEtB,QAAAI;AAAA,QAAAb,UAAAsG,iBAAA;AACKzF,sEAAkB;AAAIb,MAAAA,QAAAsG;AAAAtG,MAAAA,QAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,GAAA,CAAA;AAAA,IAAA;AAAA,WAAtBa;AAAAA,EAAsB;AAAA,MAAAJ;AAAA,MAAAT,UAAA6F,UAAA;AAG1BpF,mDAAW;AAAIT,IAAAA,QAAA6F;AAAA7F,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,SAAfS;AAAe;ACEnB,SAAA8F,aAAAC,OAAA;AAAA,QAAAxG,KAAAC,GAAA,EAAA;AACH,QAAA;AAAA,IAAAwG,OAAA1G;AAAAA,IAAA2G;AAAAA,IAAAC;AAAAA,IAAAC,gBAAAnG;AAAAA,IAAA8C,UAAA1C;AAAAA,EAAAA,IAMI2F;AALA,QAAAC,QAAA1G,OAAgBN,SAAR,WAARM;AAGA,QAAA6G,iBAAAnG,OAAsBhB,iBAAtBgB;AAAsB,MAAAM;AAAA,MAAAf,UAAAa,IAAA;AACtBE,SAAAF,OAAapB,cAAboB;AAAab,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAAb,QAAAuD,WAAAxC;AAGJ,QAAA6C,sBAA4BC,uBAAAA;AAAyB,MAAA5C;AAAA,MAAAjB,UAAA0G,QAAA;AAEhCzF,SAAAyF,8BAAW,QAAA,EACL,uBAAA,OACJ,0BACF,iBAAA,MAAA,CAAK;AACxB1G,IAAAA,QAAA0G;AAAA1G,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAJF,QAAA6G,eAAqB5F;AAIlB,MAAA6F;AAAA,MAAA9G,GAAA,CAAA,MAAA4D,uBAAA5D,UAAA2G,UAAA3G,GAAA,CAAA,MAAAyG,OAAA;AACkBK,SAAAH,8BAChB,QAAA,EACUF,OACU,iBAAA7C,oBAAmBK,SAAU,WAAW,OAAO,IAAA,CAAG;AAE1EjE,IAAAA,QAAA4D;AAAA5D,IAAAA,QAAA2G;AAAA3G,IAAAA,QAAAyG;AAAAzG,IAAAA,QAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,CAAA;AAAA,EAAA;AALD,QAAA+G,eAAqBD;AAKnB,MAAAE;AAAA,MAAAhH,UAAAuD,UAAA;AAIMyD,6BAAC,mBAA0BzD,SAAAA,CAAQ;AAAGvD,IAAAA,QAAAuD;AAAAvD,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAC;AAAA,MAAAlH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAGtC8F,6BAAC,QAAA,EAAM;AACPC,6BAAC,aAAA,EAAW;AAAElH,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAAkH;AAAAA,EAAA,OAAA;AAAAD,SAAAjH,GAAA,EAAA;AAAAkH,SAAAlH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAmH;AAAA,MAAAnH,GAAA,EAAA,MAAA6G,gBAAA7G,GAAA,EAAA,MAAA+G,gBAAA/G,GAAA,EAAA,MAAA4G,kBAAA5G,WAAAgH,IAAA;AALlBG,SAAA,qBAAC,YAAyBP,gBACtBI,UAAAA;AAAAA,MAAAA;AAAAA;MAECD;AAAAA,MACDE;AAAAA,MACAC;AAAAA,IAAAA,GACJ;AAAWlH,IAAAA,SAAA6G;AAAA7G,IAAAA,SAAA+G;AAAA/G,IAAAA,SAAA4G;AAAA5G,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAmH;AAAAA,EAAA,OAAA;AAAAA,SAAAnH,GAAA,EAAA;AAAA,EAAA;AAAA,SANXmH;AAMW;ACnEnB,SAAAC,eAAArH,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAAwB,QAAA;AAAA,IAAAnB;AAAAA,EAAAA,IAAAiB;AAEpB,QAAAsH,WAAiBC,YAAAA;AACjB,QAAAC,+BAAqCC,gCAAAA;AAAkC,MAAA,CAElED,8BAA4B;AAAA,WAAA;AAAA,EAAA;AAAA,MAAA9G;AAAA,MAAAT,GAAA,CAAA,MAAAlB,MAAAM,QAAAY,GAAA,CAAA,MAAAuH,6BAAAE,gBAAA;AAGfhH,SAAA8G,6BAA4BE,eAAAC,SAAyB5I,MAAKM,IAAK;AAACY,IAAAA,GAAA,CAAA,IAAAlB,MAAAM;AAAAY,IAAAA,GAAA,CAAA,IAAAuH,6BAAAE;AAAAzH,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAlF,QAAA2H,YAAkBlH;AAAiE,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAAlB,MAAAM,QAAAY,GAAA,CAAA,MAAA2H,aAAA3H,GAAA,CAAA,MAAAuH,8BAAA;AAC/D1G,SAAAF,CAAAA,OAAA;AAChBA,MAAAA,GAACiH,eAAAA;AACDjH,MAAAA,GAACiC,gBAAAA;AAAkB,UACf+E,WAAS;AACTJ,qCAA4BM,kBACxBN,6BAA4BE,eAAA/H,OAAAoI,QAA4BA,OAAMhJ,MAAKM,IAAK,CAC5E;AAAA,MAAC,OAAA;AAEDmI,qCAA4BM,kBAAA,CAAA,GACpBN,6BAA4BE,gBAAiB3I,MAAKM,IAAA,CAC1D;AAAA,MAAC;AAAA,IAAA;AAERY,IAAAA,GAAA,CAAA,IAAAlB,MAAAM;AAAAY,IAAAA,QAAA2H;AAAA3H,IAAAA,QAAAuH;AAAAvH,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAZD,QAAA+H,cAAoBlH;AAYlB,MAAAE;AAAA,MAAAf,UAAAlB,MAAAkJ,OAAAhI,UAAAqH,UAAA;AAGWtG,SAAAA,MAAMsG,SAASvI,MAAKkJ,GAAI;AAAChI,IAAAA,GAAA,CAAA,IAAAlB,MAAAkJ;AAAAhI,IAAAA,QAAAqH;AAAArH,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAInB,QAAAiB,KAAA0G,YAAY,mBAAmB;AAAwC,MAAAb;AAAA,MAAA9G,GAAA,EAAA,MAAA+H,eAAA/H,WAAAiB,IAAA;AAHhF6F,6BAAC,UAAA,EACMiB,sBACH,MAAA,SACK,WAAA9G,IAAuE;AAAGjB,IAAAA,SAAA+H;AAAA/H,IAAAA,SAAAiB;AAAAjB,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,EAAA,MAAAlB,MAAAuC,QAAArB,GAAA,EAAA,MAAAlB,MAAAM,QAAAY,GAAA,EAAA,MAAAe,MAAAf,WAAA8G,IAAA;AANtFE,SAAA,oBAAC,QAEK,SAAAjG,IACH,MAAA+F,IAKLhI,UAAAA,MAAKuC,KAAAA,GAPDvC,MAAKM,IAQd;AAAOY,IAAAA,GAAA,EAAA,IAAAlB,MAAAuC;AAAArB,IAAAA,GAAA,EAAA,IAAAlB,MAAAM;AAAAY,IAAAA,SAAAe;AAAAf,IAAAA,SAAA8G;AAAA9G,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,SATAgH;AASA;AAGJ,SAAAiB,eAAAlI,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAEH,QAAA3B,4BAAkC4J,6BAAAA;AAClC,QAAAX,+BAAqCC,gCAAAA;AAAkC,MAAA,CAElED,8BAA4B;AAAA,WAAA;AAAA,EAAA;AAAA,MAAA9G;AAAA,MAAAT,GAAA,CAAA,MAAAuH,8BAAAE,gBAAA;AAGHhH,SAAA8G,8BAA4BE,kBAAA,CAAA;AAAsBzH,IAAAA,GAAA,CAAA,IAAAuH,8BAAAE;AAAAzH,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAmI;AAAA,MAAAtH;AAAA,MAAAE;AAAA,MAAAE;AAAA,MAAAjB,GAAA,CAAA,MAAA1B,6BAAA0B,UAAAS,IAAA;AAAA,QAAAqG;AAAA,QAAA9G,UAAA1B,2BAAA;AACvEwI,YAAA3I,UAAUG,0BAAyB8J,oBAAA3J,kBAAA4J,KAAAvJ,CAAAA,UAAuDA,MAAKM,SAAUjB,IAAI;AAAC6B,MAAAA,QAAA1B;AAAA0B,MAAAA,QAAA8G;AAAAA,IAAA,OAAA;AAAAA,YAAA9G,GAAA,CAAA;AAAA,IAAA;AADvH,UAAAsI,uBAA8B7H,GAAkD5B,IACvEiI,GAA8G,EAACpH,OAAAE,OACrG;AAEXuI,SAAAI;AAAatH,SAAAqH,qBAAoBE,SAAA;AACtB3H,SAAA;AACVE,SAAAuH,qBAAoBzJ,IAAA4J,OACF;AAACzI,IAAAA,QAAA1B;AAAA0B,IAAAA,QAAAS;AAAAT,IAAAA,QAAAmI;AAAAnI,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAf,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAkH,SAAAnI,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAAe,SAAAf,GAAA,CAAA;AAAAiB,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA8G;AAAA,MAAA9G,GAAA,EAAA,MAAAa,MAAAb,WAAAe,IAAA;AAFxB+F,SAAA,oBAAA,OAAA,EAAe,WAAAjG,IACVE,UAAAA,IAEL;AAAMf,IAAAA,SAAAa;AAAAb,IAAAA,SAAAe;AAAAf,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,EAAA,MAAAmI,MAAAnI,WAAAiB,MAAAjB,GAAA,EAAA,MAAA8G,IAAA;AAJHE,SAAA,oBAAC,IAAA,EAAa,IAAA/F,IACjB6F,UAAAA,IAIJ;AAAW9G,IAAAA,SAAAmI;AAAAnI,IAAAA,SAAAiB;AAAAjB,IAAAA,SAAA8G;AAAA9G,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,SALJgH;AAKI;AAjBR,SAAAyB,QAAAC,SAAA;AAAA,SAc0C,oBAAC,gBAAA,EAC3B5J,OAAAA,QAAAA,GAD+CA,QAAKM,IAC/C;AAAG;ACpDxB,SAAAuJ,gBAAA5I,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAAyB,QAAA;AAAA,IAAA4F;AAAAA,IAAA+C;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAApJ;AAqB5B,QAAA;AAAA,IAAAqJ;AAAAA,EAAAA,IAAcC,eAAAA;AACd,QAAA,CAAAC,WAAAC,YAAA,IAAkCnJ,cAAc;AAAE,MAAAK;AAAA,MAAAT,GAAA,CAAA,MAAA4I,SAAA5I,UAAAoJ,GAAA;AACzB3I,SAAAmI,SAASQ,EAAE,aAAa;AAACpJ,IAAAA,QAAA4I;AAAA5I,IAAAA,QAAAoJ;AAAApJ,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAlD,QAAAwJ,mBAAyB/I;AAGzB,QAAAgJ,YAAkB,CAACX,eAAeK;AAIW,QAAAtI,KAAAiI,YAAY,gBAAgB;AAAE,MAAA/H;AAAA,MAAAf,UAAAa,IAAA;AAAvDE,SAAAsC,IAAI,qBAAqBxC,EAA8B;AAACb,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAGvD,QAAAiB,KAAA6H,YAAY,UAAU;AAAS,MAAAhC;AAAA,MAAA9G,GAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAG7B2F,SAAAzD,IACP,qBACA,2FACJ;AAACrD,IAAAA,QAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,CAAA,MAAAwJ,oBAAAxJ,UAAAiB,IAAA;AAPL+F,SAAA,oBAAC,YAAA,EACY,SAAA/F,IACE,WAAA,MACL,OAAA,aACK,WAAA6F,IAKV0C,UAAAA,iBAAAA,CACL;AAAaxJ,IAAAA,QAAAwJ;AAAAxJ,IAAAA,QAAAiB;AAAAjB,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,CAAA,MAAAwJ,oBAAAxJ,GAAA,EAAA,MAAAiJ,eAAAjJ,GAAA,EAAA,MAAAsJ,aAAAtJ,GAAA,EAAA,MAAA8I,aAAA9I,WAAAgJ,aAAA;AACZ/B,UAAC6B,aAAaE,eAAW,CAAKC,mCAC1B,YAAA,EACQ,MAAA,YACI,SAAAtI,CAAAA,OAAA;AACLA,MAAAA,GAACiC,gBAAAA;AACDoG,kBAAYQ,gBAAgB;AAAA,IAAC,GAEtB,WAAAnG,IAAI,SAASiG,YAAY,gBAAgB,aAAa,iCAAiC,GAElG,UAAA,oBAAC,YAAA,EAAiB,MAAAI,SAAAC,UAAiB,GACvC;AACH3J,IAAAA,QAAAwJ;AAAAxJ,IAAAA,SAAAiJ;AAAAjJ,IAAAA,SAAAsJ;AAAAtJ,IAAAA,SAAA8I;AAAA9I,IAAAA,SAAAgJ;AAAAhJ,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkH;AAAA,MAAAlH,GAAA,EAAA,MAAAe,MAAAf,WAAAgH,MAAAhH,GAAA,EAAA,MAAAiH,IAAA;AAxBLC,SAAA,qBAAA,OAAA,EAAgB,WAAAnG,IAEZiG,UAAAA;AAAAA,MAAAA;AAAAA,MAWCC;AAAAA,IAAAA,GAYL;AAAMjH,IAAAA,SAAAe;AAAAf,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAAkH;AAAAA,EAAA,OAAA;AAAAA,SAAAlH,GAAA,EAAA;AAAA,EAAA;AA1BV,QAAA4J,eACI1C;AA8BI,QAAAC,KAAA,CAAC4B,4BAA4B,UAAU;AAAM,MAAAc;AAAA,MAAA7J,WAAAmH,IAAA;AADjC0C,UAAAxG,IACZ8D,IACA,yCACJ;AAACnH,IAAAA,SAAAmH;AAAAnH,IAAAA,SAAA6J;AAAAA,EAAA,OAAA;AAAAA,UAAA7J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA8J;AAAA,MAAA9J,GAAA,EAAA,MAAA4J,gBAAA5J,WAAA6F,YAAA7F,GAAA,EAAA,MAAA8I,WAAA;AAGIgB,UAAAhB,aAAS,qBAAA,UAAA,EAEF,UAAA;AAAA,MAAA,oBAAA,SACe,WAAAzF,IACP,4CACA,UACJ,GACc,cAAA,MAAMkG,aAAY,IAAK,GACvB,cAAA,MAAMA,aAAY,KAAM,GAErCK,UAAAA,cACL;AAAA,MACC/D;AAAAA,IAAAA,GAAQ;AAEhB7F,IAAAA,SAAA4J;AAAA5J,IAAAA,SAAA6F;AAAA7F,IAAAA,SAAA8I;AAAA9I,IAAAA,SAAA8J;AAAAA,EAAA,OAAA;AAAAA,UAAA9J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA+J;AAAA,MAAA/J,GAAA,EAAA,MAAA4J,gBAAA5J,GAAA,EAAA,MAAA6F,YAAA7F,GAAA,EAAA,MAAAkJ,aAAAlJ,WAAA8I,aAAA9I,GAAA,EAAA,MAAA6I,aAAA7I,GAAA,EAAA,MAAAmJ,qBAAAnJ,GAAA,EAAA,MAAAyJ,WAAA;AAGAM,UAAA,CAACjB,aAAaW,aACX,oBAAC,iBAAA,EACG,WAAA,MACU,UAAA,CAACP,WACO,kBAAAnG,CAAAA,SAAA;AAAA,UACVA,UAAUmG,WAAS;AACnBC,4BAAAA;AAAAA,MAAiB;AAAA,IAAA,GAGd,WAAA9F,IAAI,MAAM,GACL,gBAAAA,IACZ,2BACA,oDACA,wBACA,8BACA6F,aAAa,uCACjB,GACgB,gBAAA7F,IAAI,QAAQ,CAACwF,YAAY,SAAS,EAAE,GAEhD,oCACkB,cAAA,MAAMU,iBAAiB,GACvB,oBAAMA,aAAY,KAAM,GAC5B,WAAA,qBAETK,UAAAA,aAAAA,CACL,GAGHf,UAAAA,YACG,oBAAA,SAAgB,WAAAxF,IAAI,sEAAsE,GAC/E,OAAA;AAAA,MAAA2G,WAAa;AAAA,IAAA,EAAM,CAAE,IAGhC,oBAAA,OAAA,EAAgB,WAAA3G,IAAI,QAAQ,CAACwF,YAAY,SAAS,EAAE,GAC/ChD,UACL,EAAA,CAER;AACH7F,IAAAA,SAAA4J;AAAA5J,IAAAA,SAAA6F;AAAA7F,IAAAA,SAAAkJ;AAAAlJ,IAAAA,SAAA8I;AAAA9I,IAAAA,SAAA6I;AAAA7I,IAAAA,SAAAmJ;AAAAnJ,IAAAA,SAAAyJ;AAAAzJ,IAAAA,SAAA+J;AAAAA,EAAA,OAAA;AAAAA,UAAA/J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiK;AAAA,MAAAjK,WAAA4J,gBAAA5J,GAAA,EAAA,MAAA6F,YAAA7F,GAAA,EAAA,MAAAkJ,aAAAlJ,GAAA,EAAA,MAAA8I,aAAA9I,WAAA6I,aAAA7I,GAAA,EAAA,MAAAyJ,WAAA;AAGAQ,UAAA,CAACnB,aAAS,CAAKW,aAAS,qBAAA,UAAA,EAEjB,UAAA;AAAA,MAAA,6BACe,WAAApG,IACP,4CACA,MACJ,GACc,oBAAMkG,aAAY,IAAK,GACvB,oBAAMA,aAAY,KAAM,GAErCK,UAAAA,cACL;AAAA,MAEC,CAACV,cACEL,YACI,oBAAA,SAAgB,WAAAxF,IAAI,sEAAsE,GAC/E,OAAA;AAAA,QAAA2G,WAAa;AAAA,MAAA,EAAM,CAAE,IAGhC,oBAAA,OAAA,EAAgB,WAAA3G,IAAI,QAAQ,CAACwF,YAAY,SAAS,EAAE,GAC/ChD,SAAAA,CACL;AAAA,IAAA,GAEP;AAER7F,IAAAA,SAAA4J;AAAA5J,IAAAA,SAAA6F;AAAA7F,IAAAA,SAAAkJ;AAAAlJ,IAAAA,SAAA8I;AAAA9I,IAAAA,SAAA6I;AAAA7I,IAAAA,SAAAyJ;AAAAzJ,IAAAA,SAAAiK;AAAAA,EAAA,OAAA;AAAAA,UAAAjK,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkK;AAAA,MAAAlK,GAAA,EAAA,MAAA6J,OAAA7J,GAAA,EAAA,MAAA8J,OAAA9J,GAAA,EAAA,MAAA+J,OAAA/J,WAAAiK,KAAA;AAzFLC,wCAAgB,WAAAL,KAMXC,UAAAA;AAAAA,MAAAA;AAAAA,MAiBAC;AAAAA,MAyCAE;AAAAA,IAAAA,GA0BL;AAAMjK,IAAAA,SAAA6J;AAAA7J,IAAAA,SAAA8J;AAAA9J,IAAAA,SAAA+J;AAAA/J,IAAAA,SAAAiK;AAAAjK,IAAAA,SAAAkK;AAAAA,EAAA,OAAA;AAAAA,UAAAlK,GAAA,EAAA;AAAA,EAAA;AAAA,SA1FNkK;AA0FM;ACjIP,SAAAC,sBAAApK,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAA+B,QAAA;AAAA,IAAAb;AAAAA,IAAAF;AAAAA,IAAA2F;AAAAA,IAAAmD;AAAAA,IAAA3G;AAAAA,IAAA+I;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAAvK;AAelC,QAAAwH,+BAAqCC,gCAAAA;AACiB,QAAA/G,KAAAvB,cAAc2F;AAAI,MAAAhE;AAAA,MAAAb,UAAAS,IAAA;AAAjDI,SAAA,oBAAC,aAAA,EAA8B,kBAAAJ,GAAAA,CAAkB;AAAGT,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAA3E,QAAAuK,iBAAuB1J;AAEvB,QAAAwG,WAAiBC,YAAAA;AACjB,QAAAlJ,UAAgBoM,iBAAAA;AAAmB,MAAAzJ;AAAA,MAAAf,GAAA,CAAA,MAAAuH,8BAAAE,gBAAA;AAEhB1G,SAAAwG,8BAA4BE,kBAAA,CAAA;AAAsBzH,IAAAA,GAAA,CAAA,IAAAuH,8BAAAE;AAAAzH,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAiB;AAAA,MAAAjB,GAAA,CAAA,MAAAZ,QAAAY,UAAAe,IAAA;AAAnDE,SAACF,GAAkD2G,SAAWtI,IAAI;AAACY,IAAAA,QAAAZ;AAAAY,IAAAA,QAAAe;AAAAf,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAArF,QAAA2H,YAAkB1G;AAAoE,MAAA6F;AAAA,MAAA9G,GAAA,CAAA,MAAA2H,aAAA3H,UAAAZ,QAAAY,GAAA,CAAA,MAAAuH,8BAAA;AAE9CT,SAAAS,+BAA4B,CAE5D,oBAAC,cAES,MAAA,SACG,SAAA5G,CAAAA,OAAA;AACLA,MAAAA,GAACiH,eAAAA;AACDjH,MAAAA,GAACiC,gBAAAA;AAAkB,UACf+E,WAAS;AACTJ,qCAA4BM,kBACxBN,6BAA4BE,eAAA/H,OAAAoI,CAAAA,OAA4BA,OAAM1I,IAAI,CACtE;AAAA,MAAC,OAAA;AAEDmI,qCAA4BM,kBAAA,CAAA,GACpBN,6BAA4BE,gBAAiBrI,IAAI,CACzD;AAAA,MAAC;AAAA,IAAA,GAGT,UAAA,oBAAC,UAAA,EACc,WAAAuI,YAAY,mBAAmB,yCAAA,MAhBzC,WAiBT,CAAa,IAAA,CAAA;AAEb3H,IAAAA,QAAA2H;AAAA3H,IAAAA,QAAAZ;AAAAY,IAAAA,QAAAuH;AAAAvH,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAtBR,QAAAyK,eAAwC3D;AAsB/B,MAAAE;AAAA,MAAAhH,GAAA,EAAA,MAAAd,cAAAc,WAAA5B,WAAA4B,GAAA,EAAA,MAAAZ,MAAA;AAEoD4H,SAAA;AAAA,MAAA5H;AAAAA,MAAAF;AAAAA,MAAAd;AAAAA,IAAAA;AAI5D4B,IAAAA,SAAAd;AAAAc,IAAAA,SAAA5B;AAAA4B,IAAAA,SAAAZ;AAAAY,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAJD,QAAA0K,oBAA0BC,QAAQ,2BAA2B3D,EAI5D;AAAE,MAAAC;AAAA,MAAAjH,GAAA,EAAA,MAAAd,cAAAc,WAAA5B,WAAA4B,GAAA,EAAA,MAAAZ,MAAA;AAEqD6H,SAAA;AAAA,MAAA7H;AAAAA,MAAAF;AAAAA,MAAAd;AAAAA,IAAAA;AAIvD4B,IAAAA,SAAAd;AAAAc,IAAAA,SAAA5B;AAAA4B,IAAAA,SAAAZ;AAAAY,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAJD,QAAA4K,qBAA2BD,QAAQ,qBAAqB1D,EAIvD;AAAE,MAAAC;AAAA,MAAAlH,GAAA,EAAA,MAAAyK,gBAAAzK,WAAA0K,mBAAA;AAG0CxD,SAAA,qBAAA,UAAA,EACxCuD,UAAAA;AAAAA,MAAAA;AAAAA,MACAC;AAAAA,IAAAA,GAAiB;AACnB1K,IAAAA,SAAAyK;AAAAzK,IAAAA,SAAA0K;AAAA1K,IAAAA,SAAAkH;AAAAA,EAAA,OAAA;AAAAA,SAAAlH,GAAA,EAAA;AAAA,EAAA;AAHH,QAAA6K,UAA6C3D;AAG1C,MAAAC;AAAA,MAAAnH,WAAA4K,oBAAA;AAOoBzD,SAAAyD,mBAAkBpC,aAAW,oBAAA,UAAA,EAAMoC,8BAAkB,IAAAnL;AAAgBO,IAAAA,SAAA4K;AAAA5K,IAAAA,SAAAmH;AAAAA,EAAA,OAAA;AAAAA,SAAAnH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA6J;AAAA,MAAA7J,GAAA,EAAA,MAAAqH,YAAArH,GAAA,EAAA,MAAAqK,WAAArK,GAAA,EAAA,MAAAZ,QAAAY,GAAA,EAAA,MAAAgI,OAAAhI,WAAAuH,8BAAA;AAC/EsC,UAAAA,MAAA;AACLQ,gBAAAA;AACAhD,eAASW,GAAG;AAAC,UACTT,8BAA4B;AAC5BA,qCAA4BuD,wBAAA,CACvB1L,UAAUmI,6BAA4BwD,wBAAA,CAAA,GAA2BrL,OAAAsL,CAAAA,QAAclD,QAAM1I,IAAI,CAAC,CAC/F;AAAA,MAAC;AAAA,IAAA;AAERY,IAAAA,SAAAqH;AAAArH,IAAAA,SAAAqK;AAAArK,IAAAA,SAAAZ;AAAAY,IAAAA,SAAAgI;AAAAhI,IAAAA,SAAAuH;AAAAvH,IAAAA,SAAA6J;AAAAA,EAAA,OAAA;AAAAA,UAAA7J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA8J;AAAA,MAAA9J,GAAA,EAAA,MAAA6K,WAAA7K,GAAA,EAAA,MAAAuK,kBAAAvK,GAAA,EAAA,MAAAoK,eAAApK,WAAAqB,QAAArB,GAAA,EAAA,MAAAsK,UAAAtK,GAAA,EAAA,MAAA6J,OAAA7J,GAAA,EAAA,MAAAmH,IAAA;AAdE2C,8BAAC,gBAAA,EACES,sBACAlJ,MACO+I,aACJS,SACU,mBAAA1D,IACV,SAAA0C,KASDS,OAAAA,CAAM;AAChBtK,IAAAA,SAAA6K;AAAA7K,IAAAA,SAAAuK;AAAAvK,IAAAA,SAAAoK;AAAApK,IAAAA,SAAAqB;AAAArB,IAAAA,SAAAsK;AAAAtK,IAAAA,SAAA6J;AAAA7J,IAAAA,SAAAmH;AAAAnH,IAAAA,SAAA8J;AAAAA,EAAA,OAAA;AAAAA,UAAA9J,GAAA,EAAA;AAAA,EAAA;AAAA,SAhBK8J;AAgBL;ACtEN,MAAMmB,uBAA8CC,UAChDC,4BAA4B;AAAA,EACxB,GAAGD;AAAAA,EACHE,aAAa;AACjB,CAAC;AAEL,MAAMC,sBAAqC,CAAA;AAE3C,MAAMC,mCAAmCA,CAACxM,UAA4C;AAClF,QAAMyM,cAAwC;AAAA,IAC1CC,IAAI1M,MAAM0M;AAAAA,IACVpM,MAAMN,MAAMM;AAAAA,IACZ4I,KAAKlJ,MAAMkJ;AAAAA,IACX3G,MAAMvC,MAAMuC;AAAAA,IACZtC,MAAMD,MAAMC;AAAAA,IACZG,YAAYJ,MAAMI,aAAa;AAAA,MAAE,GAAGJ,MAAMI;AAAAA,IAAAA,IAAeO;AAAAA,IACzDoF,MAAM/F,MAAM+F,OAAO;AAAA,MAAE,GAAG/F,MAAM+F;AAAAA,IAAAA,IAASpF;AAAAA,IACvC,GAAIX,MAAM8J,SAAS;AAAA,MAAEA,OAAO9J,MAAM8J;AAAAA,IAAAA;AAAAA,IAClC,GAAI9J,MAAMsL,eAAe;AAAA,MAAEA,aAAatL,MAAMsL;AAAAA,IAAAA;AAAAA,EAAY;AAE9D,SAAOmB;AACX;AAEA,MAAME,mBAAmBA,CAACC,UACtBA,MAAM7M,IAAK8M,CAAAA,QAAO;AAAA,EACdtK,MAAMsK,GAAEtK;AAAAA,EACRuK,SAASD,GAAEC,QAAQ/M,IAAIyM,gCAAgC;AAC3D,EAAE;AAMC,SAAAO,uBAAA9L,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAAgC,QAAA;AAAA,IAAAnB;AAAAA,IAAAuL;AAAAA,EAAAA,IAAAtK;AAMtC,MAAAU;AAAA,MAAAT,GAAA,CAAA,MAAAlB,MAAAkJ,KAAA;AASmBvH,SAAA;AAAA,MAAA+K,IACJ1M,MAAKkJ;AAAAA,MAAAiD;AAAAA,IAAAA;AAEZjL,IAAAA,GAAA,CAAA,IAAAlB,MAAAkJ;AAAAhI,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAXL,QAAA;AAAA,IAAA8L;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAQIC,YAAY3L,EAGX;AAAE,MAAAI;AAAA,MAAAb,UAAAiM,WAAA;AAGQpL,SAAAoL,YAAYI,IAAAC,UAAAC,SAAuBN,SAAS,IAACxM;AAAYO,IAAAA,QAAAiM;AAAAjM,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAE3D,QAAAe,KAAAoL,aAAU,IAAA;AAAQ,MAAAlL;AAAA,MAAAjB,GAAA,CAAA,MAAAa,MAAAb,UAAAe,MAAAf,GAAA,CAAA,MAAAkM,YAAA;AAHjBjL,SAAA;AAAA,MAAAgL,WACCpL;AAAAA,MAAyDqL;AAAAA,MAAAM,SAE3DzL;AAAAA,IAAAA;AACZf,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAf,IAAAA,QAAAkM;AAAAlM,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAJD,QAAAyM,QAAcxL;AAIZ,MAAA6F;AAAA,MAAA9G,GAAA,CAAA,MAAAlB,SAAAkB,UAAAqK,SAAA;AAIMvD,SAAA,oBAAC,uBAAA,EAAqB,GAAKhI,OAAgBuL,QAAAA,CAAO;AAAGrK,IAAAA,QAAAlB;AAAAkB,IAAAA,QAAAqK;AAAArK,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,EAAA,MAAAgM,cAAAhM,GAAA,EAAA,MAAA+L,aAAA/L,GAAA,EAAA,MAAA8L,cAAA9L,GAAA,EAAA,MAAAyM,SAAAzM,WAAA8G,IAAA;AADzDE,SAAA,oBAAA,SAAU8E,iBAAmBW,OAAK,GAAMT,eAAgBD,WACpDjF,UAAAA,GAAAA,CACJ;AAAM9G,IAAAA,SAAAgM;AAAAhM,IAAAA,SAAA+L;AAAA/L,IAAAA,SAAA8L;AAAA9L,IAAAA,SAAAyM;AAAAzM,IAAAA,SAAA8G;AAAA9G,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,SAFNgH;AAEM;AAIP,SAAA0F,yBAAA3M,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAAkC,QAAA;AAAA,IAAAuL;AAAAA,IAAAmB;AAAAA,IAAA9G;AAAAA,IAAAkD,2BAAAtI;AAAAA,EAAAA,IAAAV;AAIrC,QAAAgJ,4BAAAtI,OAAiChB,iBAAjCgB;AAAiC,MAAAI;AAAA,MAAAb,UAAAwL,IAAA;AAOG3K,SAAA;AAAA,MAAA2K;AAAAA,IAAAA;AAAMxL,IAAAA,QAAAwL;AAAAxL,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAA1C,QAAA;AAAA,IAAA8L;AAAAA,EAAAA,IAAuBc,aAAa/L,EAAM;AAM9B,QAAAE,KAAAgI,4BACM,oEAAiEtJ;AACxD,MAAAwB;AAAA,MAAAjB,UAAAe,IAAA;AAHRE,SAAAoC,IACPtC,IAGA,yCACJ;AAACf,IAAAA,QAAAe;AAAAf,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA8G;AAAA,MAAA9G,GAAA,CAAA,MAAA6F,YAAA7F,UAAA2M,SAAA;AAED7F,6BAAC,iBAAA,EAAuB6F,gBAAmBE,yCAE3C;AAAkB7M,IAAAA,QAAA6F;AAAA7F,IAAAA,QAAA2M;AAAA3M,IAAAA,QAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,CAAA,MAAA8L,cAAA9L,UAAAiB,MAAAjB,GAAA,CAAA,MAAA8G,IAAA;AAXtBE,sCACS8E,KAAAA,YACM,WAAA7K,IAOX6F,UAAAA,IAGJ;AAAM9G,IAAAA,QAAA8L;AAAA9L,IAAAA,QAAAiB;AAAAjB,IAAAA,QAAA8G;AAAA9G,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,SAZNgH;AAYM;AAIP,SAAA8F,wBAAA/M,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAAiC,QAAA;AAAA,IAAA8M;AAAAA,IAAAlH;AAAAA,IAAAtE;AAAAA,EAAAA,IAAAxB;AAQvC,MAAAU;AAAA,MAAAT,GAAA,CAAA,MAAAuB,YAAAvB,UAAA+M,WAAA;AASmBtM,SAAA;AAAA,MAAA+K,IACJuB;AAAAA,MAAS9B;AAAAA,MAAA1J;AAAAA,IAAAA;AAGhBvB,IAAAA,QAAAuB;AAAAvB,IAAAA,QAAA+M;AAAA/M,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAZL,QAAA;AAAA,IAAAgM;AAAAA,IAAAD;AAAAA,IAAAD;AAAAA,IAAAG;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAQIC,YAAY3L,EAIX;AAAE,MAAAI;AAAA,MAAAb,UAAAiM,WAAA;AAGQpL,SAAAoL,YAAYI,IAAAC,UAAAC,SAAuBN,SAAS,IAACxM;AAAYO,IAAAA,QAAAiM;AAAAjM,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAE3D,QAAAe,KAAAoL,aAAU,IAAA;AAAQ,MAAAlL;AAAA,MAAAjB,GAAA,CAAA,MAAAa,MAAAb,UAAAe,MAAAf,GAAA,CAAA,MAAAkM,YAAA;AAHjBjL,SAAA;AAAA,MAAAgL,WACCpL;AAAAA,MAAyDqL;AAAAA,MAAAM,SAE3DzL;AAAAA,IAAAA;AACZf,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAf,IAAAA,QAAAkM;AAAAlM,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAJD,QAAAyM,QAAcxL;AAIZ,MAAA6F;AAAA,MAAA9G,GAAA,CAAA,MAAAgM,cAAAhM,GAAA,EAAA,MAAA6F,YAAA7F,GAAA,EAAA,MAAA+L,aAAA/L,GAAA,EAAA,MAAA8L,cAAA9L,WAAAyM,OAAA;AAGE3F,sCAAUgF,KAAAA,YAAmBW,OAAK,GAAMT,YAAU,GAAMD,WACnDlG,SAAAA,CACL;AAAM7F,IAAAA,QAAAgM;AAAAhM,IAAAA,SAAA6F;AAAA7F,IAAAA,SAAA+L;AAAA/L,IAAAA,SAAA8L;AAAA9L,IAAAA,SAAAyM;AAAAzM,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAAA,SAFN8G;AAEM;AAIP,SAASkG,eAAe;AAAA,EAC3BtB;AAAAA,EACAuB;AAAAA,EACA1L;AAAAA,EACA2L;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAeJ,GAAG;AAEC,QAAMC,WAAW5B;AACjB,QAAM6B,cAAcN;AAEpB,QAAM,CAACO,UAAUC,WAAW,IAAIrN,SAAkC,IAAI;AACtE,QAAM,CAACsN,eAAeC,gBAAgB,IAAIvN,SAAS,KAAK;AACxD,QAAM,CAACwN,wBAAwBC,yBAAyB,IACpDzN,SAAkC,IAAI;AAC1C,QAAM,CAAC0N,kBAAkBC,mBAAmB,IAAI3N,SAAwB,IAAI;AAC5E,QAAM,CAAC4N,oBAAoBC,qBAAqB,IAAI7N,SAAS,KAAK;AAClE,QAAM,CAAC8N,oBAAoBC,qBAAqB,IAAI/N,SAAwB,IAAI;AAChF,QAAM,CAACgO,4BAA4BC,6BAA6B,IAC5DjO,SAAS,KAAK;AAClB,QAAM,CAACkO,qBAAqBC,sBAAsB,IAAInO,SAAwB,IAAI;AAClF,QAAM,CAACoO,qBAAqBC,sBAAsB,IAAIrO,SAEpD,IAAI;AAGN,QAAMsO,kBAAkB1K,OAEtB,IAAI;AAGN,QAAM2K,kBAAkB3K,OAEtB,IAAI;AACNlD,YAAU,MAAM;AACZ6N,oBAAgBzK,UAAUoJ;AAAAA,EAC9B,GAAG,CAACA,QAAQ,CAAC;AAGb,QAAMsB,cAAcC,UAAUC,aAAa;AAAA,IAAEC,sBAAsB;AAAA,MAAEC,UAAU;AAAA,IAAA;AAAA,EAAG,CAAG;AACrF,QAAMC,cAAcJ,UAAUK,aAAa;AAAA,IACvCH,sBAAsB;AAAA,MAClBI,OAAO;AAAA,MACPC,WAAW;AAAA,IAAA;AAAA,EACf,CACH;AACD,QAAMC,iBAAiBR,UAAUS,cAAc;AAC/C,QAAMC,UAAUC,WAAWZ,aAAaK,aAAaI,cAAc;AAGnE,QAAMI,gBAAgBnC,SAASzO,IAAK8M,CAAAA,OAAMA,GAAEtK,IAAI;AAEhD,QAAMqO,mBAAmBtN,YACrB,CAACoJ,OAA6C;AAC1C,QAAI,CAACA,GAAI,QAAO/L;AAChB,UAAMmJ,QAAQ0E,SAASjF,KAAMsD,CAAAA,QAAMA,IAAEtK,SAASmK,EAAE;AAChD,QAAI5C,cAAcA,MAAMvH;AACxB,eAAWsK,OAAK2B,UAAU;AACtB,UAAI3B,IAAEC,QAAQhH,KAAMjE,CAAAA,OAAMA,GAAEqH,QAAQwD,EAAE,EAAG,QAAOG,IAAEtK;AAAAA,IACtD;AACA,WAAO5B;AAAAA,EACX,GACA,CAAC6N,QAAQ,CACb;AAGA,QAAMqC,aAAa3L,OAAgC,IAAI;AACvD,QAAM4L,8BAA8B5L,OAAO,KAAK;AAEhD,QAAM6L,qBAAyCzN,YAC1C8I,CAAAA,SAAS;AACN,QAAI3J,YAAY,CAACiM,SAAU,QAAO,CAAA;AAClC,QAAIE,eAAe;AACf,YAAMoC,SAAS5E,KAAK6E,oBAAoBrQ,OAAQsQ,CAAAA,OAC5C1C,SAAS1I,KAAM+G,CAAAA,QAAMA,IAAEtK,SAAS2O,GAAExE,EAAE,CACxC;AACA,UAAI,CAACsE,OAAOtH,OAAQ,QAAO,CAAA;AAC3B,aAAOyH,cAAc;AAAA,QACjB,GAAG/E;AAAAA,QACH6E,qBAAqBD;AAAAA,MAAAA,CACxB;AAAA,IACL;AAEA,UAAMI,UAAUC,cAAcjF,IAAI;AAClC,QAAIgF,QAAQ1H,QAAQ;AAChB,YAAM4H,OAAOF,QAAQ7H,KAAM2H,CAAAA,QAAMA,IAAExE,OAAO,qBAAqB;AAC/D,UAAI4E,KAAM,QAAO,CAACA,IAAI;AAEtB,YAAMC,YAAYH,QAAQ7H,KAAM2H,CAAAA,QAC5B1C,SAAS1I,KAAM+G,CAAAA,QAAMA,IAAEtK,SAAS2O,IAAExE,EAAE,CACxC;AACA,UAAI6E,WAAW;AACX,cAAMC,UAAUhD,SAASjF,KAAMsD,CAAAA,QAAMA,IAAEtK,SAASgP,UAAU7E,EAAE,GACtDI;AACN,YAAI0E,SAAS9H,QAAQ;AACjB,gBAAM+H,UAAUC,eAAe;AAAA,YAC3B,GAAGtF;AAAAA,YACH6E,qBAAqB7E,KAAK6E,oBAAoBrQ,OACzCsQ,CAAAA,QAAMM,QAAQ1L,KAAMjE,CAAAA,QAAMA,IAAEqH,QAAQgI,IAAExE,EAAE,CAC7C;AAAA,UAAA,CACH;AACD,cAAI+E,QAAQ/H,OAAQ,QAAO+H;AAAAA,QAC/B;AACA,eAAO,CAACF,SAAS;AAAA,MACrB;AACA,YAAMI,QAAQC,kBAAkBR,SAAS,IAAI;AAC7C,UAAIO,cAAc,CAAC;AAAA,QAAEjF,IAAIiF;AAAAA,MAAAA,CAAO;AAAA,IACpC;AAEA,UAAME,QAAQC,iBAAiB1F,IAAI;AACnC,UAAM2F,WAAWF,MAAMtI,KAAM2H,CAAAA,QAAMA,IAAExE,OAAO,qBAAqB;AACjE,QAAIqF,SAAU,QAAO,CAACA,QAAQ;AAE9B,QAAIC,SAASJ,kBAAkBC,OAAO,IAAI;AAC1C,QAAIG,UAAU,MAAM;AAChB,YAAMC,kBAAkBzD,SAAS1I,KAAM+G,CAAAA,QAAMA,IAAEtK,SAASyP,MAAM;AAC9D,UAAIC,iBAAiB;AACjB,cAAMT,YAAUhD,SAASjF,KAAMsD,SAAMA,IAAEtK,SAASyP,MAAM,GAChDlF;AACN,YAAI0E,WAAS9H,QAAQ;AACjB,gBAAMwI,cAAcR,eAAe;AAAA,YAC/B,GAAGtF;AAAAA,YACH6E,qBAAqB7E,KAAK6E,oBAAoBrQ,OACzCsQ,CAAAA,QAAMM,UAAQ1L,KAAMjE,CAAAA,QAAMA,IAAEqH,QAAQgI,IAAExE,EAAE,CAC7C;AAAA,UAAA,CACH,EAAE,CAAC,GAAGA;AACP,cAAIwF,YAAaF,UAASE;AAAAA,QAC9B;AAAA,MACJ;AACArB,iBAAWzL,UAAU4M;AACrB,aAAO,CAAC;AAAA,QAAEtF,IAAIsF;AAAAA,MAAAA,CAAQ;AAAA,IAC1B;AAEA,QACIlB,4BAA4B1L,WAC5ByL,WAAWzL,WACX,CAACwJ,sBAEM,CAAC;AAAA,MAAElC,IAAImE,WAAWzL;AAAAA,IAAAA,CAAS;AAEtC,WAAO,CAAA;AAAA,EACX,GACA,CAACsJ,UAAUF,UAAU/L,UAAUmM,aAAa,CAChD;AAGA,QAAMuD,kBAAkBA,CAAC;AAAA,IAAEC;AAAAA,EAAAA,MAAiC;AACxDnD,wBAAoBmD,MAAM;AAC1B,QAAI3P,SAAU;AAGdmN,oBAAgBxK,UAAUuH,iBAAiB6B,QAAQ;AAEnD,UAAM6D,UAAU7D,SAAS1I,KAAM+G,SAAMA,IAAEtK,SAAS6P,OAAO1F,EAAE;AACzD,QAAI,CAAC0F,OAAO7S,KAAK6F,QAASgN,QAAO7S,KAAK6F,UAAU,CAAA;AAChDgN,WAAO7S,KAAK6F,QAAQnF,OAAOoS,UAAU,UAAU;AAE/C1D,gBAAYyD,OAAO1F,EAAE;AACrBmC,qBAAiBwD,OAAO;AACxBlD,0BAAsB,CAACkD,OAAO;AAC9B,QAAIA,QAAStD,2BAA0BqD,OAAO1F,EAAE;AAChDoE,gCAA4B1L,UAAU;AAAA,EAC1C;AAEA,QAAMkN,iBAAiBA,CAAC;AAAA,IACpBF,QAAAA;AAAAA,IACAG;AAAAA,EAAAA,MACyC;AACzC,QAAI9P,YAAY,CAAC8P,KAAM;AAEvB,UAAMC,cAAcJ,SAAO1F;AAC3B,UAAM+F,YAAYF,KAAK7F;AACvB,QAAI8F,gBAAgBC,UAAW;AAC/B,QAAI7D,cAAe;AAEnB,UAAM8D,aAAa9B,iBAAiB4B,WAAW;AAC/C,UAAMG,WAAW/B,iBAAiB6B,SAAS;AAC3C,QAAI,CAACC,WAAY;AAEjB,QAAIC,YAAYD,eAAeC,UAAU;AACrC7B,kCAA4B1L,UAAU;AACtCyL,iBAAWzL,UAAUqN;AAGrBhE,kBAAarJ,CAAAA,YAAY;AACrB,cAAMwN,WAAWjG,iBAAiBvH,OAAO;AACzC,cAAMyN,SAASD,SAASE,UAAWjG,CAAAA,QAAMA,IAAEtK,SAASmQ,UAAU;AAC9D,cAAMK,SAASH,SAASE,UAAWjG,CAAAA,QAAMA,IAAEtK,SAASoQ,QAAQ;AAC5D,YAAIE,WAAW,MAAME,WAAW,GAAI,QAAO3N;AAC3C,cAAM4N,MAAMJ,SAASC,MAAM;AAC3B,cAAMI,MAAML,SAASG,MAAM;AAC3B,cAAMG,WAAWF,IAAIlG,QAAQgG,UAAWjR,CAAAA,QAAMA,IAAEqH,QAAQsJ,WAAW;AACnE,YAAIU,aAAa,GAAI,QAAO9N;AAC5B,cAAM,CAAC+N,KAAK,IAAIH,IAAIlG,QAAQsG,OAAOF,UAAU,CAAC;AAG9C,cAAMjB,oBAAkBQ,cAAcE;AACtC,YAAIV,mBAAiB;AACjBgB,cAAInG,QAAQuG,KAAKF,KAAK;AAAA,QAC1B,OAAO;AACH,gBAAMG,UAAUL,IAAInG,QAAQgG,UAAWjR,CAAAA,QAAMA,IAAEqH,QAAQuJ,SAAS;AAChE,cAAIa,YAAY,IAAI;AAChBL,gBAAInG,QAAQsG,OAAOE,SAAS,GAAGH,KAAK;AAAA,UACxC,OAAO;AACHF,gBAAInG,QAAQuG,KAAKF,KAAK;AAAA,UAC1B;AAAA,QACJ;AAEA,eAAOP;AAAAA,MACX,CAAC;AAAA,IACL,WAAWF,eAAeC,UAAU;AAChC7B,kCAA4B1L,UAAU;AAAA,IAC1C;AAAA,EACJ;AAEA,QAAMmO,gBAAgBA,CAAC;AAAA,IACnBnB,QAAAA;AAAAA,IACAG,MAAAA;AAAAA,EAAAA,MACyC;AACzC,QAAI9P,YAAY,CAAC8P,QAAM;AACnBiB,qBAAAA;AACA;AAAA,IACJ;AAEA,UAAMhB,gBAAcJ,SAAO1F;AAC3B,UAAM+F,cAAYF,OAAK7F;AAGvB,QAAIkC,eAAe;AACf,UACI4D,kBAAgBC,eAChBjE,SAAS1I,KAAM+G,UAAMA,KAAEtK,SAASkQ,WAAS,GAC3C;AACE,cAAMgB,OAAOjF,SAASsE,UAAWjG,CAAAA,SAAMA,KAAEtK,SAASiQ,aAAW;AAC7D,cAAMkB,KAAKlF,SAASsE,UAAWjG,CAAAA,SAAMA,KAAEtK,SAASkQ,WAAS;AACzD,YAAIgB,SAAS,MAAMC,OAAO,IAAI;AAC1B,gBAAMd,aAAWe,UAAUnF,UAAUiF,MAAMC,EAAE;AAC7CjF,sBAAYmE,UAAQ;AACpBrE,sBAAYqE,UAAQ;AACpBvE,yBAAemE,eAAuBiB,MAAMC,EAAE;AAAA,QAClD;AAAA,MACJ;AAAA,IACJ,OAEK;AAED,YAAME,uBAAuBA,CAAClH,MAAYmH,UAA8E;AACpH,cAAM/J,UAAQ+J,MAAMtK,KAAMsD,CAAAA,SAAMA,KAAEtK,SAASmK,IAAE;AAC7C,YAAI5C,gBAAcA,QAAMvH;AACxB,mBAAWsK,QAAKgH,OAAO;AACnB,cAAIhH,KAAEC,QAAQhH,KAAMjE,CAAAA,QAAMA,IAAEqH,QAAQwD,IAAE,EAAG,QAAOG,KAAEtK;AAAAA,QACtD;AACA,eAAO5B;AAAAA,MACX;AAEA,YAAMmT,cAAclE,gBAAgBxK,WAAWoJ;AAC/C,YAAMkE,eAAakB,qBAAqBpB,eAAuBsB,WAAW;AACzDlD,uBAAiB6B,WAAS;AAG3C,UAAIA,gBAAc,uBAAuB;AACrC,YAAIC,cAAY;AAEZ/C,iCAAuBhD,iBAAiB6B,QAAQ,CAAC;AAEjD,gBAAMoE,aAAWjG,iBAAiB6B,QAAQ;AAC1C,gBAAMqE,WAASD,WAASE,UAAWjG,CAAAA,SAAMA,KAAEtK,SAASmQ,YAAU;AAC9D,cAAIG,aAAW,IAAI;AACf,kBAAMG,QAAMJ,WAASC,QAAM;AAC3B,kBAAMK,aAAWF,MAAIlG,QAAQgG,UACxBjR,CAAAA,QAAMA,IAAEqH,QAAQsJ,aACrB;AACA,gBAAIU,eAAa,IAAI;AACjB,oBAAM,CAACa,OAAO,IAAIf,MAAIlG,QAAQsG,OAAOF,YAAU,CAAC;AAChD,kBAAIF,MAAIlG,QAAQpD,WAAW,EAAGkJ,YAASQ,OAAOP,UAAQ,CAAC;AAEvD,kBAAImB,YAAY;AAChB,kBAAIC,UAAU;AACd,qBAAOrB,WAAS9M,KAAM+G,CAAAA,SAAMA,KAAEtK,SAASyR,SAAS,EAC5CA,aAAY,aAAaC,SAAS;AAEtCrB,yBAASS,KAAK;AAAA,gBACV9Q,MAAMyR;AAAAA,gBACNlH,SAAS,CAACiH,OAAO;AAAA,cAAA,CACpB;AAGDtF,0BAAYmE,UAAQ;AACpBnD,qCAAuBuE,SAAS;AAChC3E,oCAAsB2E,SAAS;AAC/B1F,+BAAAA;AAAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,OAEK;AACD,cAAMqE,aAAW/B,iBAAiB6B,WAAS;AAC3C,YAAIC,iBAAeC,YAAU;AACzB,gBAAMuB,SAAS1F,SAASsE,UAAWjG,CAAAA,SAAMA,KAAEtK,SAASmQ,YAAU;AAC9D,cAAIwB,WAAW,IAAI;AACf,kBAAMpK,UAAQ0E,SAAS0F,MAAM;AAC7B,kBAAMC,SAASrK,QAAMgD,QAAQgG,UACxBjR,CAAAA,QAAMA,IAAEqH,QAAQsJ,aACrB;AACA,gBAAI4B,SAAStK,QAAMgD,QAAQgG,UACtBjR,CAAAA,QAAMA,IAAEqH,QAAQuJ,WACrB;AACA,gBAAI2B,WAAW,MAAM3B,gBAAcC,aAC/B0B,UAAStK,QAAMgD,QAAQpD,SAAS;AACpC,gBACIyK,WAAW,MACXC,WAAW,MACXD,WAAWC,QACb;AACE,oBAAMC,YAAYV,UAAU7J,QAAMgD,SAASqH,QAAQC,MAAM;AACzD,oBAAMxB,aAAW,CAAC,GAAGpE,QAAQ;AAC7BoE,yBAASsB,MAAM,IAAI;AAAA,gBACf,GAAGpK;AAAAA,gBACHgD,SAASuH;AAAAA,cAAAA;AAEb5F,0BAAYmE,UAAQ;AACpBrE,0BAAYqE,UAAQ;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ,WAAWD,cAAYD,iBAAeC,YAAU;AAE5C,gBAAM2B,aAAa3H,iBAAiBmH,WAAW;AAG/C,gBAAMS,cAAc1D,WAAWzL,WAAWqN;AAC1C,gBAAM+B,gBAAgBZ,qBAAqBW,aAAuBT,WAAW,KAAKnB;AAElF,gBAAME,WAASyB,WAAWxB,UAAWjG,CAAAA,SAAMA,KAAEtK,SAASmQ,YAAU;AAChE,gBAAMK,WAASuB,WAAWxB,UAAWjG,CAAAA,SAAMA,KAAEtK,SAASiS,aAAa;AAEnE,cAAI3B,aAAW,MAAME,aAAW,IAAI;AAChC,kBAAMC,QAAMsB,WAAWzB,QAAM;AAC7B,kBAAMI,QAAMqB,WAAWvB,QAAM;AAC7B,kBAAMG,aAAWF,MAAIlG,QAAQgG,UAAWjR,CAAAA,QAAMA,IAAEqH,QAAQsJ,aAAW;AAEnE,gBAAIU,eAAa,IAAI;AAEjB,oBAAM,CAACC,OAAK,IAAIH,MAAIlG,QAAQsG,OAAOF,YAAU,CAAC;AAG9C,oBAAMjB,oBAAkBsC,gBAAgBC;AACxC,kBAAIvC,mBAAiB;AACjBgB,sBAAInG,QAAQuG,KAAKF,OAAK;AAAA,cAC1B,OAAO;AACH,sBAAMG,YAAUL,MAAInG,QAAQgG,UAAWjR,CAAAA,QAAMA,IAAEqH,QAAQqL,WAAW;AAClE,oBAAIjB,cAAY,IAAI;AAChBL,wBAAInG,QAAQsG,OAAOE,WAAS,GAAGH,OAAK;AAAA,gBACxC,OAAO;AACHF,wBAAInG,QAAQuG,KAAKF,OAAK;AAAA,gBAC1B;AAAA,cACJ;AAGA,kBAAIH,MAAIlG,QAAQpD,WAAW,GAAG;AAC1B4K,2BAAWlB,OAAOP,UAAQ,CAAC;AAAA,cAC/B;AAEApE,0BAAY6F,UAAU;AACtB/F,0BAAY+F,UAAU;AAEtBlG,yCAA2B+E,OAAK;AAAA,YACpC;AAAA,UACJ;AAAA,QACJ,WAAWrC,4BAA4B1L,SAAS;AAE5CqP,kBAAQC,MAAM,2DAA2D;AAAA,YACrEhC,YAAAA;AAAAA,YACAC,UAAAA;AAAAA,YACAH,aAAAA;AAAAA,YACAC,WAAAA;AAAAA,UAAAA,CACH;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAEAe,mBAAAA;AAAAA,EACJ;AAEA,QAAMA,iBAAiBA,MAAM;AACzBvE,wBAAoB,IAAI;AACxBN,gBAAY,IAAI;AAChBE,qBAAiB,KAAK;AACtBE,8BAA0B,IAAI;AAC9BI,0BAAsB,KAAK;AAC3B2B,gCAA4B1L,UAAU;AAAA,EAC1C;AAEA,QAAMuP,mBAAmBA,MAAMnB,eAAAA;AAG/B,QAAMoB,oBAAoBA,CAACC,SAAiBC,YAAoB;AAC5DrG,gBAAarJ,CAAAA,cAAY;AACrB,YAAM2P,MAAM3P,UAAQ0N,UAAWjG,CAAAA,SAAMA,KAAEtK,SAASsS,OAAO;AACvD,UAAIE,QAAQ,GAAI,QAAO3P;AACvB,UAAIA,UAAQU,KAAM+G,CAAAA,SAAMA,KAAEtK,SAASuS,WAAWjI,KAAEtK,SAASsS,OAAO,EAC5D,QAAOzP;AAEX,YAAM4P,UAAU,CAAC,GAAG5P,SAAO;AAC3B4P,cAAQD,GAAG,IAAI;AAAA,QACX,GAAGC,QAAQD,GAAG;AAAA,QACdxS,MAAMuS;AAAAA,MAAAA;AAIVvG,kBAAYyG,OAAO;AACnB,aAAOA;AAAAA,IACX,CAAC;AAGDvF,2BAAuB,IAAI;AAC3BE,2BAAuB,IAAI;AAC3BN,0BAAsB,IAAI;AAAA,EAC9B;AAGA,QAAM4F,oBAAoBA,MAAM;AAE5B,QAAIzF,uBAAuBJ,uBAAuBI,uBAAuBE,qBAAqB;AAE1FjB,kBAAYiB,mBAAmB;AAAA,IACnC;AAGAD,2BAAuB,IAAI;AAC3BE,2BAAuB,IAAI;AAC3BN,0BAAsB,IAAI;AAAA,EAC9B;AAGA,QAAM6F,uBACFzS,YAAY,CAACiM,YAAYE,gBACnB,OACAJ,SAAS2G,QAAStI,CAAAA,SAAMA,KAAEC,OAAO,EAAEvD,KAAM1H,UAAMA,KAAEqH,QAAQwF,QAAQ,KAAK;AAEhF,QAAM0G,kBACF3S,YAAY,CAACiM,YAAY,CAACE,gBACpB,OACAJ,SAASjF,KAAMsD,CAAAA,SAAMA,KAAEtK,SAASmM,QAAQ,KAAK;AAEvD,SAAO;AAAA,IACH+B;AAAAA,IACAM;AAAAA,IACAsE,aAAalD;AAAAA,IACbmD,YAAYhD;AAAAA,IACZiD,WAAWhC;AAAAA,IACXiC,cAAcb;AAAAA,IACdc,eAAelJ;AAAAA,IACf2I;AAAAA,IACAE;AAAAA,IACAM,iBAAiB5G;AAAAA,IACjB6G,YAAYhF;AAAAA,IACZ3B;AAAAA,IACAE;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAuF;AAAAA,IACAK;AAAAA,IACA3F;AAAAA,IACAC;AAAAA,EAAAA;AAER;AAEO,SAAAqG,iBAAA3U,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAA0B,QAAA;AAAA,IAAAsB;AAAAA,IAAAoT;AAAAA,EAAAA,IAAA5U;AAMhC,MAAAU;AAAA,MAAAT,UAAAuB,UAAA;AAIoBd,SAAA;AAAA,MAAA+K,IACT;AAAA,MAAqBjK;AAAAA,IAAAA;AAE5BvB,IAAAA,QAAAuB;AAAAvB,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAND,QAAA;AAAA,IAAA8L;AAAAA,IAAA8I;AAAAA,EAAAA,IAGIhI,aAAanM,EAGhB;AACD,QAAA,CAAAoU,WAAAC,YAAA,IAAkC1U,cAAc;AAAE,MAAAS;AAAA,MAAAb,UAAAuB,UAAA;AAEpCV,SAAA;AAAA,MAAAsT,YAAApT,KAAA;AACE,cAAA;AAAA,UAAAmQ;AAAAA,QAAAA,IAAAnQ;AAAU,YACdQ,UAAQ;AAAA;AAAA,QAAA;AACZ,cAAAwT,KAAW7D,OAAM7S,KAAA6F,SAAAnF;AACjB+V,qBAAaC,OAAO,MAAM;AAAA,MAAC;AAAA,MAAAV,YAAA;AAG3BS,0BAAkB;AAAA,MAAC;AAAA,MAAAR,eAAA;AAGnBQ,0BAAkB;AAAA,MAAC;AAAA,IAAA;AAE1B9U,IAAAA,QAAAuB;AAAAvB,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAZDgV,gBAAcnU,EAYb;AAAC,MAAAE;AAAA,MAAAE;AAAA,MAAAjB,GAAA,CAAA,MAAA4U,UAAA5U,UAAA6U,aAAA7U,GAAA,CAAA,MAAA2U,eAAA;AAEQ5T,SAAAA,MAAA;AACN4T,oBAAcC,UAAUC,SAAS;AAAA,IAAC;AACnC5T,SAAA,CAAC2T,QAAQC,WAAWF,aAAa;AAAC3U,IAAAA,QAAA4U;AAAA5U,IAAAA,QAAA6U;AAAA7U,IAAAA,QAAA2U;AAAA3U,IAAAA,QAAAe;AAAAf,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAF,SAAAf,GAAA,CAAA;AAAAiB,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAFrCc,YAAUC,IAEPE,EAAkC;AAAC,MAElC,CAAC4T,aAAatT,UAAQ;AAAA,WAAA;AAAA,EAAA;AAOd,QAAAuF,KAAA8N,SACM,gGACA;AAA8E,MAAA5N;AAAA,MAAAhH,UAAA8G,IAAA;AAJ7EE,SAAA3D,IACP,8IACAyD,EAGJ;AAAC9G,IAAAA,QAAA8G;AAAA9G,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACD8F,sCAAe,WAAA,mBACX,8BAAA,QAAA,EAAgB,WAAA,6BAA4B,UAAA,kCAAA,CAE5C,EAAA,CACJ;AAAMjH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkH;AAAA,MAAAlH,GAAA,EAAA,MAAA8L,cAAA9L,WAAAgH,IAAA;AAZVE,sCACS4E,KAAAA,YACM,WAAA9E,IAMXC,UAAAA,IAKJ;AAAMjH,IAAAA,SAAA8L;AAAA9L,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAkH;AAAAA,EAAA,OAAA;AAAAA,SAAAlH,GAAA,EAAA;AAAA,EAAA;AAAA,SAbNkH;AAaM;ACjrBP,SAAA+N,kBAAAlV,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAA2B,QAAA;AAAA,IAAA8C;AAAAA,IAAAmS;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAAtV;AAO9B,QAAA;AAAA,IAAAqJ;AAAAA,EAAAA,IAAcC,eAAAA;AACd,QAAA,CAAAhI,MAAAiU,OAAA,IAAwBlV,SAAS8U,WAAW;AAC5C,QAAA,CAAA1B,OAAA+B,QAAA,IAA0BnV,aAA4B;AACtD,QAAAoV,WAAiBxR,OAAA,IAA0D;AAAE,MAAAvD;AAAA,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAAkV,eAAAlV,UAAA+C,MAAA;AAEnEtC,SAAAA,MAAA;AAAA,UACFsC,MAAI;AACJuS,gBAAQJ,WAAW;AACnBK,qBAAa;AAEbE,mBAAA,MAAA;AAAA,cACQD,SAAQtR,SAAA;AACRsR,qBAAQtR,QAAAwR,MAAAA;AACRF,qBAAQtR,QAAAyR,OAAAA;AAAAA,UAAiB;AAAA,QAAA,GAAA,GAE3B;AAAA,MAAC;AAAA,IAAA;AAEZ9U,SAAA,CAACqU,aAAanS,IAAI;AAAC/C,IAAAA,QAAAkV;AAAAlV,IAAAA,QAAA+C;AAAA/C,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAJ,SAAAT,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAA,EAAA;AAZtBc,YAAUL,IAYPI,EAAmB;AAAC,MAAAE;AAAA,MAAAf,GAAA,CAAA,MAAAmV,sBAAAnV,UAAAoJ,GAAA;AAEErI,SAAA6U,CAAAA,UAAA;AACrB,YAAAhC,UAAgBgC,MAAKC,OAAArU;AACrB8T,cAAQ1B,OAAO;AAAC,UAAA,CACXA,QAAOkC,QAAO;AACfP,iBAASnM,EAAE,wBAAwB,CAAC;AAAA,MAAC,OAAA;AAAA,YAC9B+L,mBAAkBzN,SAAUkM,QAAOkC,KAAAA,CAAO,GAAC;AAClDP,mBAASnM,EAAE,yBAAyB,CAAC;AAAA,QAAC,OAAA;AAEtCmM,uBAAa;AAAA,QAAC;AAAA,MAAA;AAAA,IAAA;AAErBvV,IAAAA,QAAAmV;AAAAnV,IAAAA,QAAAoJ;AAAApJ,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAVD,QAAA+V,mBAAyBhV;AAUvB,MAAAE;AAAA,MAAAjB,UAAAwT,SAAAxT,GAAA,CAAA,MAAAmV,sBAAAnV,GAAA,CAAA,MAAAqB,QAAArB,GAAA,EAAA,MAAAoV,WAAApV,WAAAqV,YAAArV,GAAA,EAAA,MAAAoJ,GAAA;AAEiBnI,SAAAA,MAAA;AACf,YAAA+U,cAAoB3U,KAAIyU,KAAAA;AAAQ,UAAA,CAC3BE,aAAW;AACZT,iBAASnM,EAAE,wBAAwB,CAAC;AAAC;AAAA,MAAA;AAAA,UAGrC+L,mBAAkBzN,SAAUsO,WAAW,GAAC;AACxCT,iBAASnM,EAAE,yBAAyB,CAAC;AAAC;AAAA,MAAA;AAAA,UAAA,CAGrCoK,OAAK;AACN6B,iBAASW,WAAW;AACpBZ,gBAAAA;AAAAA,MAAS;AAAA,IAAA;AAEhBpV,IAAAA,QAAAwT;AAAAxT,IAAAA,QAAAmV;AAAAnV,IAAAA,QAAAqB;AAAArB,IAAAA,SAAAoV;AAAApV,IAAAA,SAAAqV;AAAArV,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,EAAA;AAAA,EAAA;AAdD,QAAAiW,aAAmBhV;AAcjB,MAAA6F;AAAA,MAAA9G,GAAA,EAAA,MAAAmV,sBAAAnV,GAAA,EAAA,MAAAiW,cAAAjW,GAAA,EAAA,MAAAqB,QAAArB,WAAAoJ,GAAA;AAEoBtC,SAAAoP,CAAAA,YAAA;AAAA,UACdN,QAAKO,QAAS,SAAO;AACrBP,gBAAKhO,eAAAA;AACL,cAAAwO,gBAAoB/U,KAAIyU,KAAAA;AAGxB,YAAAO,eAAA;AAAwB,YAAA,CACnBL,eAAW;AACZK,yBAAejN,EAAE,wBAAwB;AAAA,QAA7B,OAAA;AAAA,cACL+L,mBAAkBzN,SAAUsO,aAAW,GAAC;AAC/CK,2BAAejN,EAAE,yBAAyB;AAAA,UAA9B;AAAA,QAAA;AAAA,YAGZ,CAACiN,gBAAgBL,eAAW;AAC5BC,qBAAAA;AAAAA,QAAY,OAAA;AAAA,cACLI,cAAY;AACnBd,qBAASc,YAAY;AAAA,UAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAGjCrW,IAAAA,SAAAmV;AAAAnV,IAAAA,SAAAiW;AAAAjW,IAAAA,SAAAqB;AAAArB,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAnBD,QAAAsW,gBAAsBxP;AAmBpB,MAAA,CAQG/D,MAAI;AAAA,WAAA;AAAA,EAAA;AAAA,MAAAiE;AAAA,MAAAhH,WAAAoJ,GAAA;AAIapC,SAAAoC,EAAE,cAAc;AAACpJ,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,WAAAgH,IAAA;AAA/BC,SAAA,oBAAC,eAAaD,UAAAA,GAAAA,CAAkB;AAAchH,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkH;AAAA,MAAAlH,WAAAoJ,GAAA;AAI/BlC,SAAAkC,EAAE,kBAAkB;AAACpJ,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAAkH;AAAAA,EAAA,OAAA;AAAAA,SAAAlH,GAAA,EAAA;AAAA,EAAA;AAIrB,QAAAmH,OAAEqM;AACS,QAAA3J,MAAA2J,QAAQ,qBAAkB/T;AAAY,MAAAqK;AAAA,MAAA9J,WAAAsW,iBAAAtW,GAAA,EAAA,MAAA+V,oBAAA/V,GAAA,EAAA,MAAAqB,QAAArB,GAAA,EAAA,MAAA6J,OAAA7J,WAAAkH,MAAAlH,GAAA,EAAA,MAAAmH,IAAA;AAP5D2C,8BAAC,WAAA,EACa0L,UACH,OAAAtO,IACA7F,OAAAA,MACG0U,UAAAA,kBACCO,WAAAA,eACJ,OAAAnP,IACW,oBAAA0C,KAAsC;AAC1D7J,IAAAA,SAAAsW;AAAAtW,IAAAA,SAAA+V;AAAA/V,IAAAA,SAAAqB;AAAArB,IAAAA,SAAA6J;AAAA7J,IAAAA,SAAAkH;AAAAlH,IAAAA,SAAAmH;AAAAnH,IAAAA,SAAA8J;AAAAA,EAAA,OAAA;AAAAA,UAAA9J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA+J;AAAA,MAAA/J,WAAAwT,OAAA;AACDzJ,UAAAyJ,SAAS,oBAAA,KAAA,EAAM,IAAA,oBAA0B,OAAA;AAAA,MAAA+C,SAAW;AAAA,IAAA,GAAW/C,UAAAA,OAAM;AAAIxT,IAAAA,SAAAwT;AAAAxT,IAAAA,SAAA+J;AAAAA,EAAA,OAAA;AAAAA,UAAA/J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiK;AAAA,MAAAjK,GAAA,EAAA,MAAA8J,OAAA9J,WAAA+J,KAAA;AAV9EE,+BAAC,eAAA,EACGH,UAAAA;AAAAA,MAAAA;AAAAA,MASCC;AAAAA,IAAAA,GACL;AAAgB/J,IAAAA,SAAA8J;AAAA9J,IAAAA,SAAA+J;AAAA/J,IAAAA,SAAAiK;AAAAA,EAAA,OAAA;AAAAA,UAAAjK,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkK;AAAA,MAAAlK,WAAAoJ,GAAA;AAIPc,UAAAd,EAAE,QAAQ;AAACpJ,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAAkK;AAAAA,EAAA,OAAA;AAAAA,UAAAlK,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAwW;AAAA,MAAAxW,GAAA,EAAA,MAAAoV,WAAApV,WAAAkK,KAAA;AAFhBsM,8BAAC,QAAA,EAAgBpB,kBACL,SAAA,QACPlL,UAAAA,KACL;AAASlK,IAAAA,SAAAoV;AAAApV,IAAAA,SAAAkK;AAAAlK,IAAAA,SAAAwW;AAAAA,EAAA,OAAA;AAAAA,UAAAxW,GAAA,EAAA;AAAA,EAAA;AAEK,QAAAyW,QAAEjD,SAAK,CAAKnS,KAAIyU,KAAAA;AAAO,MAAAY;AAAA,MAAA1W,WAAAoJ,GAAA;AAChCsN,UAAAtN,EAAE,MAAM;AAACpJ,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAA0W;AAAAA,EAAA,OAAA;AAAAA,UAAA1W,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA2W;AAAA,MAAA3W,GAAA,EAAA,MAAAiW,cAAAjW,WAAAyW,OAAAzW,GAAA,EAAA,MAAA0W,KAAA;AAFdC,8BAAC,QAAA,EAAgBV,SAAAA,YACH,UAAAQ,KACTC,UAAAA,KACL;AAAS1W,IAAAA,SAAAiW;AAAAjW,IAAAA,SAAAyW;AAAAzW,IAAAA,SAAA0W;AAAA1W,IAAAA,SAAA2W;AAAAA,EAAA,OAAA;AAAAA,UAAA3W,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA4W;AAAA,MAAA5W,GAAA,EAAA,MAAAwW,OAAAxW,WAAA2W,KAAA;AARbC,+BAAC,eAAA,EACGJ,UAAAA;AAAAA,MAAAA;AAAAA,MAIAG;AAAAA,IAAAA,GAIJ;AAAgB3W,IAAAA,SAAAwW;AAAAxW,IAAAA,SAAA2W;AAAA3W,IAAAA,SAAA4W;AAAAA,EAAA,OAAA;AAAAA,UAAA5W,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA6W;AAAA,MAAA7W,GAAA,EAAA,MAAA+C,QAAA/C,GAAA,EAAA,MAAAiK,OAAAjK,GAAA,EAAA,MAAA4W,OAAA5W,WAAAiH,IAAA;AAvBpB4P,+BAAC,UAAa9T,MACVkE,UAAAA;AAAAA,MAAAA;AAAAA,MACAgD;AAAAA,MAYA2M;AAAAA,IAAAA,GAUJ;AAAS5W,IAAAA,SAAA+C;AAAA/C,IAAAA,SAAAiK;AAAAjK,IAAAA,SAAA4W;AAAA5W,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAA6W;AAAAA,EAAA,OAAA;AAAAA,UAAA7W,GAAA,EAAA;AAAA,EAAA;AAAA,SAxBT6W;AAwBS;AC7FV,MAAMC,qBAAqB;AAC3B,MAAMC,mBAAmB;AAEzB,SAASC,gBAAgB;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAOJ,GAAG;AAEC,QAAMjZ,UAAU8B,cAAAA;AAChB,QAAM;AAAA,IAAE5B;AAAAA,EAAAA,IAA8BF;AACtC,QAAMkZ,0BAA0BC,2BAAAA;AAChC,QAAM3T,sBAAsBC,uBAAAA;AAC5B,QAAMiC,WAAWC,kBAAAA;AAEjB,QAAM;AAAA,IAAEyR;AAAAA,EAAAA,IAAkBF;AAC1B,QAAMG,cAAcC,yBAAAA;AACpB,QAAM;AAAA,IAAEtO;AAAAA,EAAAA,IAAMC,eAAAA;AAEdvI,YAAU,MAAM;AACZ2W,gBAAYE,IAAI;AAAA,MAAEF,aAAa,CAAA;AAAA,IAAA,CAAI;AAAA,EACvC,GAAG,CAACA,YAAYE,GAAG,CAAC;AAEpB,QAAM;AAAA,IACFC,mBAAmB;AAAA,IACnBnZ,mBAAmBoZ,8BAA8B,CAAA;AAAA,IACjD/H,QAAQgI,uBAAuB,CAAA;AAAA,IAC/BC,4BAA4BA,MAAM;AAAA,IAAC;AAAA,EAAA,IACnCzZ,0BAA0B8J,sBAAsB,CAAA;AAIpD,QAAM4P,uBAAuB9V,QAAQ,MAAM;AACvC,QAAI0B,oBAAoBK,SAAS,UAAU;AACvC,aAAO4T,4BAA4BnY,OAAOiB,CAAAA,OAAKA,GAAE5B,SAAS,UAAU4B,GAAE5B,SAAS,OAAO;AAAA,IAC1F;AACA,WAAO8Y,4BAA4BnY,OAAOiB,CAAAA,QAAKA,IAAE5B,SAAS,MAAM;AAAA,EACpE,GAAG,CAAC8Y,6BAA6BjU,oBAAoBK,IAAI,CAAC;AAE1D,QAAMgU,8BAA8B/V,QAAQ,MAAM;AAC9C,UAAMgW,cAAc,IAAIC,IAAIH,qBAAqBnZ,IAAI8B,CAAAA,QAAKA,IAAEiI,KAAK,EAAElJ,OAAOE,OAAO,CAAC;AAClF,WAAOkY,qBAAqBpY,OAAOiM,CAAAA,OAAKuM,YAAYE,IAAIzM,EAAC,CAAC;AAAA,EAC9D,GAAG,CAACmM,sBAAsBE,oBAAoB,CAAC;AAE/C,QAAMK,OAAOrU,OAAqC,IAAI;AACtD,QAAM,CAACsU,cAAcC,eAAe,IAAInY,SAA0B,IAAI;AACtE,QAAMoY,mBAAmB5Y,QAAQ0Y,YAAY;AAG7C,QAAMG,4BAA4BvW,QAAQ,MAAM;AAC5C,WAAOoW,eACDN,qBAAqBtY,OAAQiB,CAAAA,QAAM2X,aAAa5Q,SAAS/G,IAAEqH,GAAG,CAAC,IAC/DgQ;AAAAA,EACV,GAAG,CAACM,cAAcN,oBAAoB,CAAC;AAEvClX,YAAU,MAAM;AACZuX,SAAKnU,UAAU,IAAIwU,KAAKV,sBAAsB;AAAA,MAC1CW,MAAM,CAAC,QAAQ,eAAe,SAAS,MAAM;AAAA,IAAA,CAChD;AAAA,EACL,GAAG,CAACX,oBAAoB,CAAC;AAEzB,QAAMY,eAAexW,YAAY,CAACzC,OAAe;AAC7C,QAAI,CAACA,IAAGmW,QAAQ;AACZyC,sBAAgB,IAAI;AACpB;AAAA,IACJ;AACA,UAAMM,UAAUR,KAAKnU,SAAS4U,OAAOnZ,GAAEmW,MAAM;AAC7CyC,oBAAgBM,UAAUA,QAAQha,IAAKka,CAAAA,OAAMA,GAAEC,KAAKhR,GAAG,IAAI,EAAE;AAAA,EACjE,GAAG,CAAA,CAAE;AAKL,QAAM,CAAC0D,OAAOuB,QAAQ,IAAI7M,SAExB,CAAA,CAAE;AACJ,QAAM,CAAC6Y,gBAAgBC,iBAAiB,IAAI9Y,SAGlC,IAAI;AAGd,QAAM+Y,gBAAgBnV,OAAO,KAAK;AAClC,QAAMoV,qBAAqBpV,OAA6C,IAAI;AAG5E,QAAMqV,kBAAkBnX,QAAQ,MAAM;AAClC,UAAM4P,MAAM2G;AACZ,UAAMa,iBAAoD,CAAA;AAE1DxH,QAAIyH,QAAS5Y,CAAAA,QAAM;AACf,YAAMgL,MACFhL,IAAE5B,SAAS,UACLgY,mBACApW,IAAEiI,SAASkO;AACrB,OAACwC,eAAe3N,GAAC,MAAM,CAAA,GAAIwG,KAAKxR,GAAC;AAAA,IACrC,CAAC;AAGD,UAAM6Y,2BAA2BlC,wBAAwBE,cAAc5S,KAAK6U,CAAAA,OAAKA,GAAEC,SAAS,YAAY;AAExG,QAAIC;AAEJ,QAAInB,kBAAkB;AAClB,YAAMoB,UAAU,CACZ,GAAG,IAAIzB,IAAIrG,IAAIjT,IAAK8B,CAAAA,QAAMA,IAAEiI,SAASkO,kBAAkB,CAAC,CAAC;AAE7D6C,qBAAeC,QACV/a,IAAKwC,CAAAA,UAAU;AAAA,QACZA;AAAAA,QACAuK,SAAS0N,eAAejY,IAAI,KAAK,CAAA;AAAA,MAAA,EACnC,EACD3B,OAAQiM,CAAAA,QAAMA,IAAEC,QAAQpD,MAAM;AAAA,IACvC,OAAO;AACHmR,qBAAe1B,4BAA4BpZ,IAAK8M,CAAAA,SAAO;AAAA,QACnDtK,MAAMsK;AAAAA,QACNC,SAAS0N,eAAe3N,GAAC,KAAK,CAAA;AAAA,MAAA,EAChC;AACFkO,aAAOlB,KAAKW,cAAc,EAAEC,QAAS5N,CAAAA,QAAM;AACvC,YAAI,CAACsM,4BAA4BvQ,SAASiE,GAAC,gBAC1BwG,KAAK;AAAA,UACd9Q,MAAMsK;AAAAA,UACNC,SAAS0N,eAAe3N,GAAC;AAAA,QAAA,CAC5B;AAAA,MACT,CAAC;AAGD,UAAI6N,4BAA4B,CAACG,aAAa/U,KAAK+G,SAAKA,IAAEtK,SAASyV,kBAAkB,GAAG;AACpF6C,qBAAaxH,KAAK;AAAA,UACd9Q,MAAMyV;AAAAA,UACNlL,SAAS,CAAA;AAAA,QAAA,CACZ;AAAA,MACL;AAEA+N,qBAAeA,aAAaja,OACvBiM,CAAAA,QACGA,IAAEC,QAAQpD,UACTmD,IAAEtK,SAASyV,sBAAsB0C,wBAC1C;AAAA,IACJ;AAEA,UAAMM,QAAQH,aAAatR,KAAMsD,CAAAA,QAAMA,IAAEtK,SAAS0V,gBAAgB;AAClE,WAAO;AAAA,MACHkC,gBAAgBa,SAAS;AAAA,MACzBpO,OAAOiO,aAAaja,OAAQiM,CAAAA,QAAMA,IAAEtK,SAAS0V,oBAAoB,CAACM,cAAc3P,SAASiE,IAAEtK,IAAI,CAAC;AAAA,IAAA;AAAA,EAExG,GAAG,CAACoX,2BAA2BD,kBAAkBP,6BAA6BX,wBAAwBE,eAAeH,YAAY,CAAC;AAIlIvW,YAAU,MAAM;AACZ,QAAIqY,cAAcjV,SAAS;AAEvB;AAAA,IACJ;AACAgV,sBAAkBG,gBAAgBJ,cAAc;AAChDhM,aAASoM,gBAAgB3N,KAAK;AAAA,EAClC,GAAG,CAAC2N,eAAe,CAAC;AAKpB,QAAMU,cAAcA,CAChBC,YAKC;AACD/M,aAAS+M,OAAO;AAAA,EACpB;AAEA,QAAMC,0BAA0BA,CAC5BC,WACC;AAEDf,kBAAcjV,UAAU;AAGxB,QAAIkV,mBAAmBlV,SAAS;AAC5BiW,mBAAaf,mBAAmBlV,OAAO;AAAA,IAC3C;AAGAkV,uBAAmBlV,UAAUuR,WAAW,MAAM;AAC1C0D,oBAAcjV,UAAU;AAAA,IAC5B,GAAG,GAAI;AAGP,UAAMkW,YAAsCF,OAAOrb,IAAK8M,CAAAA,SAAO;AAAA,MAC3DtK,MAAMsK,IAAEtK;AAAAA,MACRuK,SAASD,IAAEC,QAAQ/M,IAAK8B,CAAAA,QAAMA,IAAEvB,IAAI;AAAA,IAAA,EACtC;AAEF,UAAMS,MAAgCoZ,iBAChC,CACE,GAAGmB,WACH;AAAA,MACI/Y,MAAM4X,eAAe5X;AAAAA,MACrBuK,SAASqN,eAAerN,QAAQ/M,IAAK8B,CAAAA,QAAMA,IAAEvB,IAAI;AAAA,IAAA,CACpD,IAEHgb;AAENrC,8BAA0BlY,GAAG;AAAA,EACjC;AAGA,QAAMwa,aAAanY,QAAQ,MAAM,CAC7B,GAAGwJ,MAAM7M,IAAIma,CAAAA,SAAQA,KAAK3X,IAAI,GAC9B,GAAI4X,iBAAiB,CAACA,eAAe5X,IAAI,IAAI,CAAA,CAAG,GACjD,CAACqK,OAAOuN,cAAc,CAAC;AAE1B,QAAMqB,oBAAoBpY,QACtB,MAAMqY,uBAAuBzU,SAAS0U,WAAWlV,yBAAyB,MAAM,GAChF,CAACQ,SAAS0U,WAAWlV,uBAAuB,CAChD;AACA,QAAM;AAAA,IAAEmV;AAAAA,IAAkBC;AAAAA,EAAAA,IAAyBC,mBAAmBN,YAAY,QAAQC,iBAAiB;AAE3G,QAAM;AAAA,IACF/K;AAAAA,IACAM;AAAAA,IACAsE;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAP;AAAAA,IACAE;AAAAA,IACAM;AAAAA,IACAC;AAAAA,IACA3G;AAAAA,IACAwG;AAAAA,IACAtG;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAuF;AAAAA,IACAK;AAAAA,IACA3F;AAAAA,IACAC;AAAAA,EAAAA,IACArB,eAAe;AAAA,IACftB;AAAAA,IACAuB,UAAU8M;AAAAA,IACVxY,UAAU,CAACqW,oBAAoBY;AAAAA,IAC/BnL,WAAW4M;AAAAA,IACX9M,cAAexB,CAAAA,QACXvN,QAAQwc,qBAAqBC,mBAAmB,mBAAmB;AAAA,MAC/DxZ,MAAMsK;AAAAA,IAAAA,CACT;AAAA,IACLuB,0BAA2B4N,CAAAA,SACvB1c,QAAQwc,qBAAqBC,mBAAmB,kBAAkB;AAAA,MAC9DrP,IAAIsP,KAAKtP;AAAAA,IAAAA,CACZ;AAAA,IACL4B,gBAAgBA,MACZhP,QAAQwc,qBAAqBC,mBACzB,qBACJ;AAAA,EAAA,CACP;AAED,QAAM;AAAA,IACFE;AAAAA,IACAC;AAAAA,EAAAA,IACAC,iBAAAA;AAEJ,QAAMhS,cAAc,CAAC2O,oBAAoBY;AAEzC,QAAM0C,eAAepN,kBAAkBzP,KAAK6F,SAASnF,SAAS,UACxD,CAACoc,wBAAwBC,qBAAqB,IAC9C,CAACA,qBAAqB;AAE5B,QAAMC,eAAmC;AAAA,IAAEjd;AAAAA,EAAAA;AAC3C,QAAMkd,gCAAgC3Q,QAAQ,uBAAuB0Q,YAAY;AACjF,QAAME,8BAA8B5Q,QAAQ,qBAAqB0Q,YAAY;AAC7E,QAAMG,0BAA0B7Q,QAAQ,gBAAgB0Q,YAAY;AAGpE,QAAMI,wBAAwBvZ,QAAQ,MAAM;AACxC,WAAOsV,cACF9X,OAAO+Z,CAAAA,QAAKA,IAAEC,SAAS,YAAY,EACnCgC,KAAK,CAACC,KAAGC,SAAOD,IAAEE,SAAS,OAAOD,IAAEC,SAAS,GAAG;AAAA,EACzD,GAAG,CAACrE,aAAa,CAAC;AAKlB,SACI,qBAAC,OAAA,EAAI,KAAKuD,cAAc,WAAU,sEAC9B,UAAA;AAAA,IAAA,qBAAC,WAAA,EAAU,UAAS,OAChB,UAAA;AAAA,MAAA,oBAAC,OAAA,EAAI,WAAU,QACX,UAAA,oBAAC,wBAAoB,GACzB;AAAA,MAEA,qBAAC,OAAA,EACG,WAAU,6FACV,OAAO;AAAA,QAAEe,KAAKd,cAAc,SAAS,MAAM;AAAA,MAAA,GAE3C,UAAA;AAAA,QAAA,oBAAC,WAAA,EACG,cAAcpC,cACd,aAAaxP,EAAE,oBAAoB,GACnC,WAAS,MACT,MAAK,SACL,gBAAe,UACf,WAAU,eAAa;AAAA,QAE1B6N;AAAAA,QACAuE;AAAAA,MAAAA,GACL;AAAA,MAEA,oBAAC,gBAAA,EAAe,QAAQhD,iBAAAA,CAAiB;AAAA,MAExCtB;AAAAA,MACAoE;AAAAA,MAGD,qBAAC,YAAA,EACG,SACA,oBACA,WAAW;AAAA,QACPS,WAAW;AAAA,UACPC,UAAUC,kBAAkBC;AAAAA,UAC5BC,WAAW;AAAA,QAAA;AAAA,MACf,GAEJ,aACA,YACA,WACA,cACA,WAAWjB,cAEX,UAAA;AAAA,QAAA,oBAAC,iBAAA,EAEG,OAAOzG,YACP,UAAU2H,6BAET1Q,UAAAA,MAAM7M,IAAI,CAACwd,WAAWC,eAAe;AAClC,gBAAMC,WAAWF,UAAUhb;AAC3B,gBAAMmb,iBAAiBH,UAAUzQ;AAEjC,gBAAM6Q,iBAAiB;AAAA,YACnB7T,OACI2T,aAAazF,qBACPrX,SACA8c;AAAAA,YACVne;AAAAA,UAAAA;AAGJ,gBAAMse,kBAAkBjB,sBAAsB5c,IAAI,CAAC4a,KAAGkD,OAClD,oBAAC,eAAA,EACG,UAAA,oBAAC,IAAE,WAAF,KAAgBF,gBAAgB,GAAKhD,IAAEjT,SAAS,CAAA,EAAC,CAAG,EAAA,GADrC,cAAc+V,QAAQ,IAAII,EAAC,EAE/C,CACH;AAED,cACIH,eAAehU,WAAW,MACzBkU,gBAAgBlU,WAAW,KAAKgQ,kBAEjC,QAAO;AAEX,iBACI,oBAAC,2BAEG,WAAW+D,UACX,UAAUtT,aAEV,UAAA,oBAAC,iBAAA,EACG,OACIsT,aAAazF,qBACPrX,SACA8c,UAEV,WACI/H,oBAAoB+H,YACpB,CAACvO,oBAEL,2BACIA,oBAEJ,aACA,aAAa,MAAM;AACf,gBAAI/E,YAAa;AACjBkF,kCAAsBoO,QAAQ;AAAA,UAClC,GACA,WAAW9B,iBAAiB8B,QAAQ,GACpC,mBAAmB,MAAM7B,qBAAqB6B,QAAQ,GAEtD,UAAA,oBAAC,0BAAA,EACG,IAAIA,UACJ,SAASC,eAAe3d,IACnB8B,CAAAA,QAAMA,IAAEqH,GACb,GACA,2BACIgG,oBAGJ,UAAA,qBAAC,OAAA,EAAI,WAAU,yDACVwO,UAAAA;AAAAA,YAAAA,eAAe3d,IACXC,CAAAA,UACG,oBAAC,wBAAA,EAEG,OACA,SAAS,MAAM;AACX,kBAAI8W,QACA;AACJ,kBACI9W,MAAMC,SACN,aAEA6W,SACI;AAAA,uBAEJ9W,MAAMC,SACN,OAEA6W,SACI;AAAA,uBAEJ9W,MAAMC,SACN,QAEA6W,SACI;AAERxX,sBAAQwc,qBAAqBC,mBACzBjF,OACA;AAAA,gBACIzX,MAAMW,MAAMM;AAAAA,cAAAA,CAEpB;AAAA,YACJ,EAAA,GA9BKN,MAAMkJ,IAiCvB;AAAA,YACC,CAACwQ,oBACE+D,SAASK,kBACT7F,iBAAiB6F,iBACjBF;AAAAA,UAAAA,EAAAA,CACR,EAAA,CACJ,GACJ,EAAA,GA9EK,SAASJ,UAAU,EA+E5B;AAAA,QAER,CAAC,EAAA,GA/GI7H,WAAWoI,KAAK,GAAG,CAgH5B;AAAA,QAEA,oBAAC,kBAAA,EACG,UAAU5T,aACV,eAAeoF,+BAA8B;AAAA,QAGjD,oBAAC,aAAA,EAAY,aAAa,OAAO,eAC5B6F,UAAAA,mBACGM,oBAAoBN,gBAAgB7S,OACpC,oBAAC,OAAA,EACG,WAAU,6BACV,OAAO;AAAA,UACHyb,SAAS;AAAA,UACTC,QAAQ;AAAA,QAAA,GAGZ,UAAA,oBAAC,iBAAA,EACG,OACI7I,gBAAgB7S,SACZyV,qBACErX,SACAyU,gBAAgB7S,MAE1B,WAAW,OACX,WAAS,KAAA,CAAA,EAAA,CAEjB,IACA2S,uBACA,oBAAC,uBAAA,EACG,GAAIA,sBACJ,QAAQ5F,2BAAAA,CAA2B,IAEvC,KAAA,CACR;AAAA,MAAA,GACJ;AAAA,MAEC,CAACoK,oBAAoBS,kBAClB,oBAAC,mBACG,OAAOA,eAAe5X,MACtB,WAAWoZ,iBAAiBxB,eAAe5X,IAAI,GAC/C,mBAAmB,MAAMqZ,qBAAqBzB,eAAe5X,IAAI,GAEjE,UAAA,oBAAC,OAAA,EAAI,WAAU,yDACV4X,UAAAA,eAAerN,QAAQ/M,IAAKC,CAAAA,YACzB,oBAAC,uBAAA,EAEG,GAAIA,SACJ,SAAS,MAAM;AACX,YAAI8W,UACA;AACJ,YAAI9W,QAAMC,SAAS,aACf6W,WACI;AAAA,iBACC9W,QAAMC,SAAS,OACpB6W,WAAQ;AAAA,iBACH9W,QAAMC,SAAS,QACpB6W,WACI;AAERxX,gBAAQwc,qBAAqBC,mBACzBjF,SACA;AAAA,UAAEzX,MAAMW,QAAMM;AAAAA,QAAAA,CAClB;AAAA,MACJ,EAAA,GAlBKN,QAAMkJ,IAoBlB,GACL,EAAA,CACJ;AAAA,MAGHoP,YAAYA,SAASvY,IAAKme,CAAAA,YACvB,oBAAC,iBAAA,EAEG,OAAOA,QAAQvW,OAEduW,UAAAA,QAAQnX,SAAAA,GAHJmX,QAAQ7G,GAIjB,CACH;AAAA,MAEAoF;AAAAA,MACApE;AAAAA,IAAAA,GACL;AAAA,IAECjJ,0CACI,mBAAA,EACG,MAAI,MACJ,aAAaA,oBACb,oBAAoBxC,MACf7M,IAAK8M,CAAAA,SAAMA,KAAEtK,IAAI,EACjB3B,OAAQud,CAAAA,OAAMA,OAAM/O,kBAAkB,GAC3C,SAAS6F,mBACT,UAAWH,CAAAA,YAAY;AACnBF,wBAAkBxF,oBAAoB0F,OAAO;AAAA,IACjD,EAAA,CAAE;AAAA,EAAA,GAGd;AAER;AChjBO,SAAAsJ,cAAA;AAAA,QAAAld,KAAAC,GAAA,EAAA;AAEH,QAAAuD,WAAiBC,YAAAA;AACjB,QAAA0Z,qBAA2Blb,gCAAAA;AAC3B,QAAAyB,gBAAsBC,iBAAAA;AACtB,QAAA8T,cAAoBC,yBAAAA;AACpB,QAAA0F,wBAA8B5V,gCAAAA;AAE9B,QAAA6V,OAAa7Z,SAAQ6Z;AACrB,QAAAC,cAAoBD,KAAI3V,SAAU,OAAO;AAAE,MAAA3H;AAAA,MAAAC,UAAAqd,MAAA;AAC7Btd,SAAAsd,KAAI3V,SAAU,MAAM,KAAK2V,KAAI3V,SAAU,WAAW;AAAC1H,IAAAA,QAAAqd;AAAArd,IAAAA,QAAAD;AAAAA,EAAA,OAAA;AAAAA,SAAAC,GAAA,CAAA;AAAA,EAAA;AAAjE,QAAAud,QAAcxd;AAAoD,MAAAU;AAAA,MAAAT,UAAAqd,MAAA;AACnD5c,SAAA4c,KAAI3V,SAAU,OAAO;AAAC1H,IAAAA,QAAAqd;AAAArd,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAArC,QAAAwd,SAAe/c;AACf,QAAAgd,eAAqBJ,KAAI3V,SAAU,OAAO;AAE1C,QAAArD,WAAiBb,SAAQa;AAAU,MAAA5F;AAAA,MAAAoC;AAAA,MAAAE;AAAA,MAAAE;AAAA,MAAAjB,GAAA,CAAA,MAAAyX,eAAAzX,UAAAmd,mBAAAxe,eAAAqB,GAAA,CAAA,MAAAqE,YAAArE,UAAA0D,eAAA;AACnC,UAAAga,iBAAuBha,cAAaia,kBAAmBtZ,QAAQ;AAAE,QAAAyC;AAAA,QAAA9G,GAAA,EAAA,MAAAmd,mBAAAxe,aAAA;AAIhDmI,YAAAqW,mBAAkBxe,eAAA,CAAA;AAAkBqB,MAAAA,GAAA,EAAA,IAAAmd,mBAAAxe;AAAAqB,MAAAA,SAAA8G;AAAAA,IAAA,OAAA;AAAAA,YAAA9G,GAAA,EAAA;AAAA,IAAA;AAFrDvB,wBAA0BC,6BAAA;AAAA,MAAAP,MAChBuf;AAAAA,MAAc/e,aACPmI;AAAAA,IAAAA,CAChB;AAEDhG,SAAAA;AAAUG,SAAAA,MAAA;AACN,YAAA2c,YAAkBnf,kBAAkBA,kBAAiB+J,SAAA,CAAW;AAChE,YAAAqV,sBAA4BD,WAAS7e,SAAW;AAEhD0Y,kBAAWE,IAAA;AAAA,QAAAF,aACMhZ,kBAAiBI,IAAA,CAAAC,OAAAqE,UAAA;AAC1B,gBAAA2a,cAAoB3a,UAAU1E,kBAAiB+J,SAAA;AAAY,cAEvD1J,MAAKC,SAAU,UAAQ;AAAA,mBAAA;AAAA,cAAA0H,OAEZsX,OAAOjf,MAAKQ,QAAS;AAAA,cAAC0I,KACxBtE,cAAasa,uBAAwBlf,MAAKX,IAAK;AAAA,YAAA;AAAA,UAAC,OAAA;AAAA,gBAGlDW,MAAKC,SAAU,eAAa;AAAA,qBAAA;AAAA,gBAAA0H,OAExBsX,OAAOjf,MAAK+F,KAAAxD,QAAcvC,MAAK+F,KAAAsR,GAAS;AAAA,gBAACnO,KAC3CtE,cAAasa,uBAAwBlf,MAAKX,IAAK;AAAA,cAAA;AAAA,YAAC,OAAA;AAAA,kBAGlDW,MAAKC,SAAU,cAAY;AAClC,sBAAAkf,YAAkBH,eAAeD;AAAoB,uBAAA;AAAA,kBAAApX,OAE1C3H,MAAKI,WAAAmC;AAAAA,kBAAA2G,KACPtE,cAAasa,uBAAwBlf,MAAKX,IAAK;AAAA,kBAACqN,IACjD1M,MAAKX;AAAAA,kBAAA,GACL8f,YAAS;AAAA,oBAAAC,OAAA;AAAA,kBAAA,IAAA,CAAA;AAAA,gBAAA;AAAA,cAAuB,OAAA;AAAA,sBAAA,IAAA1f,MAGxB,kCAAkC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,CAEzD;AAAA,MAAA,CACJ;AAAA,IAAC;AACFqC,SAAApC,kBAAiBI,IAAA4J,OAAwB,EAACoU,KAAM,GAAG;AAAC7c,IAAAA,QAAAyX;AAAAzX,IAAAA,GAAA,CAAA,IAAAmd,mBAAAxe;AAAAqB,IAAAA,QAAAqE;AAAArE,IAAAA,QAAA0D;AAAA1D,IAAAA,QAAAvB;AAAAuB,IAAAA,QAAAa;AAAAb,IAAAA,SAAAe;AAAAf,IAAAA,SAAAiB;AAAAA,EAAA,OAAA;AAAAxC,wBAAAuB,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAAe,SAAAf,GAAA,EAAA;AAAAiB,SAAAjB,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA8G;AAAA,MAAA9G,WAAAa,IAAA;AAArDiG,UAACjG,EAAoD;AAACb,IAAAA,SAAAa;AAAAb,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAjCzDc,KAAUG,IAiCP6F,EAAsD;AAAC,MAEtDyW,OAAK;AAAA,QAAAvW;AAAA,QAAAhH,GAAA,EAAA,MAAAvB,qBAAAuB,WAAAqE,UAAA;AAEE2C,gCAAC,uBAAA,EACM3C,UACS5F,mBACZ,OAAA,MACC,QAAA,OAAK;AACfuB,MAAAA,SAAAvB;AAAAuB,MAAAA,SAAAqE;AAAArE,MAAAA,SAAAgH;AAAAA,IAAA,OAAA;AAAAA,YAAAhH,GAAA,EAAA;AAAA,IAAA;AAAA,WALKgH;AAAAA,EAKL;AAAA,MAGFvI,kBAAiB+J,WAAA,KAAiB/J,kBAAiB,CAAA,EAAAM,SAAa,cAAY;AAAA,QAAAiI;AAAA,QAAAC;AAAA,QAAAjH,GAAA,EAAA,MAAAmd,sBAAAnd,GAAA,EAAA,MAAAvB,kBAAA,CAAA,EAAA+M,MAAAxL,GAAA,EAAA,MAAAvB,qBAAAW,MAAA;AAO7D6H,YAAA/F,uBAAAC,iCAAwB;AAACH,WAAA;AANpC9B,YAAAA;AACJA,qBAAaie,mBAAkBhe,cAAeV,kBAAiB,CAAA,EAAA+M,EAAM;AAA3D,YAAA,CACLtM,YAAU;AACXA,uBAAaie,mBAAkBhe,cAAeV,kBAAiB,CAAA,EAAAW,IAAQ;AAAA,QAA7D;AAAA,YAAA,CACTF,YAAU;AAAA,cAAA,CACNie,mBAAkBgB,aAAA;AAAA,gBAAAjX;AAAA,gBAAAlH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACZ+F,wCAAC,wBAAA,EAAsB;AAAElH,cAAAA,SAAAkH;AAAAA,YAAA,OAAA;AAAAA,oBAAAlH,GAAA,EAAA;AAAA,YAAA;AAAzBiH,kBAAAC;AAAyB,kBAAAlG;AAAAA,UAAA;AAE7BiG,gBAAA;AAAI,gBAAAjG;AAAAA,QAAA;AAAA,YAAAkG;AAAA,YAAAC;AAAA,YAAAnH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAKY+F,eAAA,CAAA;AAAqBC,eAAA,CAAA;AAAEnH,UAAAA,SAAAkH;AAAAlH,UAAAA,SAAAmH;AAAAA,QAAA,OAAA;AAAAD,eAAAlH,GAAA,EAAA;AAAAmH,eAAAnH,GAAA,EAAA;AAAA,QAAA;AAH3CgH,kCAAC,sBAAA,KAEA9H,YACmB,uBAAAgI,IAAqB,iBAAAC,IACtC,MAAAjI,WAAUE,MACL,WAAA,MACF,SAAAgf,QAAQlf,WAAUmf,OAAQ,EAAA,GAL9B,mBAAmBnf,WAAUE,IAAA,EAKE;AAAA,MAAG;AAAAY,MAAAA,SAAAmd;AAAAnd,MAAAA,GAAA,EAAA,IAAAvB,kBAAA,CAAA,EAAA+M;AAAAxL,MAAAA,GAAA,EAAA,IAAAvB,kBAAA,CAAA,EAAAW;AAAAY,MAAAA,SAAAgH;AAAAhH,MAAAA,SAAAiH;AAAAA,IAAA,OAAA;AAAAD,YAAAhH,GAAA,EAAA;AAAAiH,YAAAjH,GAAA,EAAA;AAAA,IAAA;AAAA,QAAAiH,QAAA/F,uBAAAC,IAAA,6BAAA,GAAA;AAAA,aAAA8F;AAAAA,IAAA;AAAA,WANpCD;AAAAA,EAMoC;AAAA,MAG3CsW,aAAW;AACX,UAAAgB,sBAA4B,CAAA,GAAI7f,iBAAiB,EAAA8f,QAAAA,EAAWlW,KAAAmW,QAA4C;AAAE,QACtGF,qBAAmB;AAAA,UAAAtX;AAAA,UAAAC;AAAA,UAAAjH,GAAA,EAAA,MAAAmd,sBAAAnd,WAAAvB,kBAAA,CAAA,GAAA;AAQJwI,cAAA/F,uBAAAC,iCAAwB;AAACsd,aAAA;AAPpCvf,cAAAA;AACJ,gBAAAwf,aAAmBjgB;AACnBS,yBAAaie,mBAAkBhe,cAAeuf,WAAUlT,EAAG;AAAjD,cAAA,CACLtM,cAAU;AACXA,2BAAaie,mBAAkBhe,cAAeuf,WAAUtf,IAAK;AAAA,UAAnD;AAAA,cAAA,CACTF,cAAU;AAAA,gBAAA,CACNie,mBAAkBgB,aAAA;AAAA,kBAAAjX;AAAA,kBAAAlH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACZ+F,0CAAC,wBAAA,EAAsB;AAAElH,gBAAAA,SAAAkH;AAAAA,cAAA,OAAA;AAAAA,sBAAAlH,GAAA,EAAA;AAAA,cAAA;AAAzBiH,oBAAAC;AAAyB,oBAAAuX;AAAAA,YAAA;AAE7BxX,kBAAA;AAAI,kBAAAwX;AAAAA,UAAA;AAAA,cAAAvX;AAAA,cAAAC;AAAA,cAAAnH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAKY+F,iBAAA,CAAA;AAAqBC,iBAAA,CAAA;AAAEnH,YAAAA,SAAAkH;AAAAlH,YAAAA,SAAAmH;AAAAA,UAAA,OAAA;AAAAD,iBAAAlH,GAAA,EAAA;AAAAmH,iBAAAnH,GAAA,EAAA;AAAA,UAAA;AAH3CgH,oCAAC,sBAAA,KAEA9H,cACmB,uBAAAgI,IAAqB,iBAAAC,IACtC,MAAAjI,aAAUE,MACL,WAAA,MACF,SAAAgf,QAAQlf,aAAUmf,OAAQ,EAAA,GAL9B,mBAAmBnf,aAAUE,IAAA,EAKE;AAAA,QAAG;AAAAY,QAAAA,SAAAmd;AAAAnd,QAAAA,SAAAvB,kBAAA,CAAA;AAAAuB,QAAAA,SAAAgH;AAAAhH,QAAAA,SAAAiH;AAAAA,MAAA,OAAA;AAAAD,cAAAhH,GAAA,EAAA;AAAAiH,cAAAjH,GAAA,EAAA;AAAA,MAAA;AAAA,UAAAiH,QAAA/F,uBAAAC,IAAA,6BAAA,GAAA;AAAA,eAAA8F;AAAAA,MAAA;AAAA,aANpCD;AAAAA,IAMoC;AAAA,EAAA;AAAA,MAAAA;AAAA,MAAAhH,WAAAvB,mBAAA;AAU3BuI,SAAAvI,kBAAiB4J,KAAAsW,QAAwC;AAAC3e,IAAAA,SAAAvB;AAAAuB,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAlF,QAAA4e,kBAAwB5X;AACxB,QAAA6X,uBAA6BpgB,kBAAiB,CAAA;AAAI,MAE9C,CAACgf,gBAAY,CACZD,UACDqB,sBAAoB9f,SAAW,gBAC/B6f,iBAAe7f,SAAW,aACzBN,kBAAiB+J,WAAA,KAAiB/J,kBAAiB+J,WAAA,IAAc;AAAA,QAAAvB;AAAA,QAAAjH,GAAA,EAAA,MAAAmd,sBAAAnd,GAAA,EAAA,MAAA6e,qBAAArT,MAAAxL,GAAA,EAAA,MAAA6e,qBAAAzf,QAAAY,GAAA,EAAA,MAAA4e,mBAAA5e,GAAA,EAAA,MAAAwD,SAAAsV,UAAA9Y,GAAA,EAAA,MAAAvB,wBAAAuB,GAAA,EAAA,MAAAvB,kBAAA+J,UAAAxI,GAAA,EAAA,MAAAqE,YAAArE,WAAAod,uBAAA;AAgDvDnW,YAAA/F,uBAAAC,iCAQmC;AAAC2d,WAAA;AAtD3C5f,YAAAA;AACJA,uBAAaie,mBAAkBhe,cAAe0f,qBAAoBrT,EAAG;AAA3D,YAAA,CACLtM,cAAU;AACXA,yBAAaie,mBAAkBhe,cAAe0f,qBAAoBzf,IAAK;AAAA,QAA7D;AAKd,YAAA2f,oBAAuF7f,cAAU8f;AAAiB,YAC9G,CAACD,qBAAqB7f,cAAU;AAChC,gBAAA+f,eAAqB,IAAAC,gBAAoB1b,SAAQsV,MAAA,EAAAqG,IAAa,QAAQ;AACtE,cAAAC,kBAAgClgB,aAAUmgB,mBAAoB;AAAO,cACjEJ,gBAAgB,CAAC,QAAQ,SAAS,UAAU,OAAO,EAAAvX,SAAWuX,YAAY,GAAC;AAC3EG,8BAAkBH;AAAAA,UAAH,OAAA;AAEf,kBAAAK,YAAkBlC,uBAAqBmC,oBAAsBrgB,aAAUE,IAAA,GAAAigB;AAAwB,gBAC3FC,WAAS;AAAEF,gCAAkBE;AAAAA,YAAH;AAAA,UAAA;AAAA,cAE9BF,oBAAoB,UAAQ;AAAEL,gCAAoBA;AAAAA,UAAH,OAAA;AAAA,gBAC1CK,oBAAoB,WAAWA,oBAAoB,SAAO;AAAEL,kCAAoBA;AAAAA,YAAH,OAAA;AACjFA,kCAAoBA;AAAAA,YAAH;AAAA,UAAA;AAAA,QAAA;AAAA,YAEtB7f,gBAAc6f,sBAAsB,SAAO;AAEvCS,cAAAA;AAA+B,cAC/B/gB,kBAAiB+J,WAAA,GAAa;AAC9B,kBAAAiX,aAAmBhhB,kBAAiB,CAAA;AAAI,gBACpCghB,WAAU1gB,SAAU,cAAY;AAChCygB,4BAAcC,WAAUvgB,WAAAE;AAAAA,YAAb,OAAA;AAAA,kBACJqgB,WAAU1gB,SAAU,eAAa;AACxCygB,8BAAcC,WAAU5a,KAAAsR;AAAAA,cAAb;AAAA,YAAA;AAAA,UAAA;AAAA,cAKf,CAACqJ,eAAgB/gB,kBAAiB+J,WAAA,KAAkBoW,iBAAe;AACnE,kBAAAc,cAAoB3B,OAAOa,gBAAetf,QAAS;AACnD,kBAAAqgB,cAAoBtb,SAAQub,YAAa,IAAIF,WAAW,EAAE;AAAE,gBACxDC,eAAW,GAAK;AAAA,kBAAAzY;AAAA,kBAAAlH,GAAA,EAAA,MAAA2f,eAAA3f,GAAA,EAAA,MAAA0f,YAAAlX,UAAAxI,GAAA,EAAA,MAAAqE,UAAA;AAChB,sBAAAwb,cAAoBxb,SAAQyb,UAAWH,cAAW,IAAOD,YAAWlX,MAAO;AACnDtB,sBAAA2Y,YAAWlb,WAAY,GAAG,IAAIkb,YAAWC,UAAA,CAAY,IAAID;AAAW7f,gBAAAA,SAAA2f;AAAA3f,gBAAAA,GAAA,EAAA,IAAA0f,YAAAlX;AAAAxI,gBAAAA,SAAAqE;AAAArE,gBAAAA,SAAAkH;AAAAA,cAAA,OAAA;AAAAA,sBAAAlH,GAAA,EAAA;AAAA,cAAA;AAA5F,oBAAA+f,kBAAwB7Y;AAAqE,kBACzF6Y,gBAAevX,SAAA,GAAW;AAC1BgX,8BAAcO;AAAAA,cAAH;AAAA,YAAA;AAAA,UAAA;AAAA,cAAA7Y;AAAA,cAAAC;AAAA,cAAAnH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAOI+F,iBAAA,CAAA;AAAqBC,iBAAA,CAAA;AAAEnH,YAAAA,SAAAkH;AAAAlH,YAAAA,SAAAmH;AAAAA,UAAA,OAAA;AAAAD,iBAAAlH,GAAA,EAAA;AAAAmH,iBAAAnH,GAAA,EAAA;AAAA,UAAA;AAH3CiH,gBAAA,oBAAC,sBAAA,EACqC,GACrC/H,cACmB,uBAAAgI,IAAqB,iBAAAC,IACtC,MAAAjI,aAAUE,MACL,WAAA,MACO,kBAAAwf,gBAAetf,UACpBkgB,aACJ,SAAApB,QAAQlf,aAAUmf,OAAQ,EAAA,GAP9B,mBAAmBnf,aAAUE,IAAA,EAOE;AAAG,gBAAA0f;AAAAA,QAAA;AAAA,MAAA;AAAA9e,MAAAA,SAAAmd;AAAAnd,MAAAA,GAAA,EAAA,IAAA6e,qBAAArT;AAAAxL,MAAAA,GAAA,EAAA,IAAA6e,qBAAAzf;AAAAY,MAAAA,SAAA4e;AAAA5e,MAAAA,GAAA,EAAA,IAAAwD,SAAAsV;AAAA9Y,MAAAA,SAAAvB,kBAAA,CAAA;AAAAuB,MAAAA,GAAA,EAAA,IAAAvB,kBAAA+J;AAAAxI,MAAAA,SAAAqE;AAAArE,MAAAA,SAAAod;AAAApd,MAAAA,SAAAiH;AAAAA,IAAA,OAAA;AAAAA,YAAAjH,GAAA,EAAA;AAAA,IAAA;AAAA,QAAAiH,QAAA/F,uBAAAC,IAAA,6BAAA,GAAA;AAAA,aAAA8F;AAAAA,IAAA;AAAA,EAAA;AAAA,MAAAA;AAAA,MAAAjH,GAAA,EAAA,MAAAwd,UAAAxd,GAAA,EAAA,MAAAud,SAAAvd,GAAA,EAAA,MAAAvB,qBAAAuB,WAAAqE,UAAA;AAI5C4C,SAAA,oBAAC,uBAAA,EACM5C,UACS5F,mBACZ8e,OACCC,QAAM;AAChBxd,IAAAA,SAAAwd;AAAAxd,IAAAA,SAAAud;AAAAvd,IAAAA,SAAAvB;AAAAuB,IAAAA,SAAAqE;AAAArE,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,SALKiH;AAKL;AA7LC,SAAA0X,SAAAqB,SAAA;AAAA,SAqHuDlhB,QAAKC,SAAU;AAAQ;AArH9E,SAAAyf,SAAAyB,SAAA;AAAA,SAwF8EnhB,QAAKC,SAAU;AAAY;AAxFzG,SAAA0J,QAAAC,SAAA;AAAA,SAuDgC5J,QAAKX;AAAA;AA0I5C,SAAS+hB,sBAAsB3C,OAAgB4C,gBAA6G;AACxJ,MAAI5C,OAAO;AACP,WAAO9d;AAAAA,EACX,WAAW0gB,gBAAgB;AACvB,QAAIA,eAAephB,SAAS,eAAe;AACvC,aAAOohB,eAAetb,KAAKsR;AAAAA,IAC/B,WAAWgK,eAAephB,SAAS,cAAc;AAC7C,aAAOohB,eAAe3U,MAAM2U,eAAe/gB;AAAAA,IAC/C;AAAA,EACJ;AACA,SAAOK;AACX;AAEA,SAAA2gB,sBAAArgB,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAA+B,QAAA;AAAA,IAAAoE;AAAAA,IAAA5F;AAAAA,IAAA8e;AAAAA,IAAAC;AAAAA,EAAAA,IAAAzd;AAY3B,QAAAod,qBAA2Blb,gCAAAA;AAC3B,QAAAyB,gBAAsBC,iBAAAA;AACtB,QAAA0D,WAAiBC,YAAAA;AACjB,QAAA9D,WAAiBC,YAAAA;AAIjB,QAAA4c,gBAAuB7c,SAAQmP,OAA4D0N;AAG3F,QAAAhD,OAAa7Z,SAAQ6Z;AAErB,QAAAK,iBAAuBha,cAAaia,kBAAmBtZ,QAAQ;AAG/D,QAAAic,UAAgBtc,OAAA,KAAY;AAE5B,QAAA4a,kBAAwB,CAAA,GAAIngB,iBAAiB,EAAA8f,QAAAA,EAAWlW,KAAAkY,MAAwC;AAChG,QAAAC,+BAAqC5B,kBAAkBngB,kBAAiBgiB,MAAOhiB,kBAAiBiiB,QAAS9B,eAAe,IAAC,CAAI,IAAC,CAAA;AAE9H,QAAAuB,iBAAuB,CAAA,GAAIK,4BAA4B,EAAAjC,QAAAA,EAAWlW,KAAAsY,MAElE;AAEA,QAAArhB,WAAiBsf,mBAAmB,cAAcA,kBAAkBA,gBAAetf,WAAAG;AAGnF,MAAAmhB;AAAAA,WAAaV,sBAAsB3C,OAAO4C,cAAc;AAAE,MAKtD,CAACS,UAAUthB,aAAaie,OAAK;AAC7B,UAAAmC,cAAoB3B,OAAOze,QAAQ;AACnC,UAAAqgB,cAAoBtb,SAAQub,YAAa,IAAIF,WAAW,EAAE;AAAE,QACxDC,eAAW,GAAK;AAChB,YAAAE,cAAoBxb,SAAQyb,UAAWH,cAAW,IAAOD,YAAWlX,MAAO;AAC3E,YAAAuX,kBAAwBF,YAAWlb,WAAY,GAAG,IAAIkb,YAAWC,UAAA,CAAY,IAAID;AAAY,UACzFE,gBAAevX,cAAeuX,oBAAoB,QAAM;AACxDa,iBAASb;AAAAA,MAAH;AAAA,IAAA;AAAA,EAAA;AAKlB,QAAA,CAAAP,aAAAqB,cAAA,IAAsCzgB,SAA6BwgB,MAAM;AAEzE,QAAAE,wBAA8B3D,mBAAkB4D,yBAA0BrD,cAAc;AACxF,QAAAsD,kBAAwB7D,mBAAkB8D,mBAAoBvD,cAAc;AAAE,MAAAjd;AAAA,MAAAT,GAAA,CAAA,MAAAwf,eAAAxf,UAAA6gB,kBAAA7gB,GAAA,CAAA,MAAA4gB,QAAA;AACpEngB,SAAAA,MAAA;AAAA,UACFmgB,WAAWpB,aAAW;AACtBqB,uBAAeD,MAAM;AAAA,MAAC;AAAA,IAAA;AAE7B5gB,IAAAA,QAAAwf;AAAAxf,IAAAA,QAAA6gB;AAAA7gB,IAAAA,QAAA4gB;AAAA5gB,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAG4gB,QAAAA,KAAAA;AAAM,MAAA7f;AAAA,MAAAf,UAAAa,IAAA;AAAPE,UAAC6f,EAAM;AAAC5gB,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAJXc,YAAUL,IAIPM,EAAQ;AAAC,MAAAE;AAAA,MAAAjB,GAAA,CAAA,MAAAV,YAAAU,UAAAud,SAAAvd,GAAA,CAAA,MAAAqE,UAAA;AAEKpD,UAAC3B,YAAYie,QACxBlZ,WACAA,SAAQyb,UAAA,GAAczb,SAAQub,YAAa,IAAItgB,QAAQ,EAAE,CAAC;AAACU,IAAAA,QAAAV;AAAAU,IAAAA,QAAAud;AAAAvd,IAAAA,QAAAqE;AAAArE,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAFjE,QAAAwE,WAAiBvD;AAIjB,QAAAigB,aAAmB1c,WAAW,IAAIlF,QAAQ;AAAG,MAAAwH;AAAA,MAAA9G,GAAA,EAAA,MAAAwE,YAAAxE,WAAAkhB,YAAA;AAElBpa,SAAAE,CAAAA,QAAA;AAAC,YAAA;AAAA,QAAAma;AAAAA,QAAAC;AAAAA,MAAAA,IAAApa;AAG3B,UACOoa,aAAY/c,SAAAM,WAAqBuc,UAAU,GAAC;AAAA,eAAA;AAAA,MAAA;AAOhD,YAAAG,WAAiBD,aAAY/D;AAAM,UAC/BgE,aAAa,WAAWA,aAAa,aAAW;AAAA,eAAA;AAAA,MAAA;AAIpD,YAAAC,cAAoBH,gBAAe9D;AAAM,WACpCiE,gBAAgB,WAAWA,gBAAgB,iBAC3CF,aAAY/c,aAAcG,YAC1B4c,aAAY/c,SAAAM,WAAqBuc,UAAU,IAAE;AAAA,eAAA;AAAA,MAAA;AAAA,aAG3CZ,QAAOpc;AAAAA,IAAA;AACjBlE,IAAAA,SAAAwE;AAAAxE,IAAAA,SAAAkhB;AAAAlhB,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAvBD,QAAAuhB,UAAgBC,WAAW1a,EAuB1B;AAED,QAAAwX,sBAA4B,CAAA,GAAI7f,iBAAiB,EAAA8f,QAAAA,EAAWlW,KAAAoZ,MAA4C;AAAE,MAEtGlE,UAAUe,qBAAmB;AAAA,QAAA,CACxBnB,mBAAkBgB,aAAA;AAAA,UAAAnX;AAAA,UAAAhH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACZ6F,kCAAC,wBAAA,EAAsB;AAAEhH,QAAAA,SAAAgH;AAAAA,MAAA,OAAA;AAAAA,cAAAhH,GAAA,EAAA;AAAA,MAAA;AAAA,aAAzBgH;AAAAA,IAAyB;AAAA,UAAA,IAAAxI,MAEpB,iDAAiD;AAAA,EAAA;AAAA,MAGjE,CAAC+e,SAAK,CAAKqB,iBAAe;AAAA,QAAA,CACrBzB,mBAAkBgB,aAAA;AAAA,UAAAnX;AAAA,UAAAhH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACZ6F,kCAAC,wBAAA,EAAsB;AAAEhH,QAAAA,SAAAgH;AAAAA,MAAA,OAAA;AAAAA,cAAAhH,GAAA,EAAA;AAAA,MAAA;AAAA,aAAzBgH;AAAAA,IAAyB;AAAA,QAAAA;AAAA,QAAAhH,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAE7B6F,gCAAC,cAAA,EAAY;AAAEhH,MAAAA,SAAAgH;AAAAA,IAAA,OAAA;AAAAA,YAAAhH,GAAA,EAAA;AAAA,IAAA;AAAA,WAAfgH;AAAAA,EAAe;AAG1B,QAAA0a,gBAAsBnE,QACfe,uBAAuB,gBAAgBA,sBAAsBA,oBAAmBpf,aAAAO,SAChFmf,mBAAmB,sBAAsBA,kBAAkBA,gBAAe+C,mBAAAliB;AACjF,QAAAP,aAAmBie,mBAAkBhe,cAAeuiB,cAAatiB,IAAK,KAAKsiB;AAC3E,QAAAE,aAAmBrE,QAAQe,oBAAmBlf,OAASwf,gBAAexf;AACtE,QAAAyiB,iBAAuBne,cAAaoe,yBAA0BF,UAAU;AACxE,QAAAG,cAAoB1d,SAAQ2d,SAAU,OAAO,KAAK3d,SAAQ4d,MAAO,GAAG,EAACC,IAAAA,MAAW;AAEhF,QAAAC,eAAqBjjB,WAAUkjB,wBAAyB,UAAM,CAAK7E,SAAK,CAAKC,UAAUle,aAAayiB;AAAY,MAE5GI,cAAY;AAGC,UAAAnb,MAAA9H,WAAUE,OAAQ,WAAWE;AAKrB,UAAA2H,MAAAuY,eAAW/f;AAAa,QAAAyH;AAAA,QAAAlH,GAAA,EAAA,MAAA6hB,kBAAA7hB,GAAA,EAAA,MAAAV,YAAAU,GAAA,EAAA,MAAAqd,QAAArd,GAAA,EAAA,MAAAqH,YAAArH,WAAA0D,eAAA;AACxBwD,YAAAA,MAAA;AACT,cAAAmb,UAAgB3e,cAAasa,uBAAwB,GAAG6D,cAAc,IAAIviB,QAAQ,EAAE,IAAI;AACxF+H,iBAASgb,UAAUhF,IAAI;AAAA,MAAC;AAC3Brd,MAAAA,SAAA6hB;AAAA7hB,MAAAA,SAAAV;AAAAU,MAAAA,SAAAqd;AAAArd,MAAAA,SAAAqH;AAAArH,MAAAA,SAAA0D;AAAA1D,MAAAA,SAAAkH;AAAAA,IAAA,OAAA;AAAAA,YAAAlH,GAAA,EAAA;AAAA,IAAA;AAAA,QAAAmH;AAAA,QAAAnH,GAAA,EAAA,MAAAwE,YAAAxE,GAAA,EAAA,MAAAV,YAAAU,GAAA,EAAA,MAAAqd,QAAArd,GAAA,EAAA,MAAAqH,YAAArH,WAAA6gB,gBAAA;AACY1Z,YAAAmb,CAAAA,WAAA;AACTzB,uBAAeyB,OAAM9C,WAAY;AACjC,cAAA+C,iBAAuBD,OAAM9C;AAAa,YACtC+C,gBAAc;AACdlb,mBAAS,GAAG7C,QAAQ,IAAIlF,QAAQ,IAAIijB,cAAc,GAAGlF,IAAI,IAAE;AAAA,YAAAmF,SAAA;AAAA,UAAA,CAAmB;AAAA,QAAC,OAAA;AAE/Enb,mBAAS,GAAG7C,QAAQ,IAAIlF,QAAQ,GAAG+d,IAAI,IAAE;AAAA,YAAAmF,SAAA;AAAA,UAAA,CAAmB;AAAA,QAAC;AAAA,MAAA;AAEpExiB,MAAAA,SAAAwE;AAAAxE,MAAAA,SAAAV;AAAAU,MAAAA,SAAAqd;AAAArd,MAAAA,SAAAqH;AAAArH,MAAAA,SAAA6gB;AAAA7gB,MAAAA,SAAAmH;AAAAA,IAAA,OAAA;AAAAA,YAAAnH,GAAA,EAAA;AAAA,IAAA;AAAA,QAAA6J;AAAA,QAAA7J,GAAA,EAAA,MAAAd,cAAAc,GAAA,EAAA,MAAA6hB,kBAAA7hB,WAAAV,YAAAU,GAAA,EAAA,MAAA8gB,yBAAA9gB,GAAA,EAAA,MAAAghB,mBAAAhhB,GAAA,EAAA,MAAAgH,OAAAhH,GAAA,EAAA,MAAAiH,OAAAjH,GAAA,EAAA,MAAAkH,OAAAlH,WAAAmH,KAAA;AApBF0C,aAAA,oBAAA,UAAA,EACH,UAAA,oBAAC,oBAEavK,UACEJ,YACJ,QAAA,eACF2iB,MAAAA,gBACO,aAAA5a,KACA,aAAAC,KAIA,aAAAC,KASU2Z,uBACNE,mBApBZha,GAoB2B,EAAA,CAClC;AACHhH,MAAAA,SAAAd;AAAAc,MAAAA,SAAA6hB;AAAA7hB,MAAAA,SAAAV;AAAAU,MAAAA,SAAA8gB;AAAA9gB,MAAAA,SAAAghB;AAAAhhB,MAAAA,SAAAgH;AAAAhH,MAAAA,SAAAiH;AAAAjH,MAAAA,SAAAkH;AAAAlH,MAAAA,SAAAmH;AAAAnH,MAAAA,SAAA6J;AAAAA,IAAA,OAAA;AAAAA,aAAA7J,GAAA,EAAA;AAAA,IAAA;AAAA,WAxBI6J;AAAAA,EAwBJ;AAKM,QAAA7C,KAAA9H,WAAUE,OAAQ,OAAOme,QAAQ,QAASC,SAASle,WAAW,UAAUA;AACnE,QAAA2H,KAAAsW,QAAK9d,SAAeH;AAKjB,QAAA4H,KAAAsY,eAAW/f;AACT,QAAA0H,KAAAoW,QAAQ8C,gBAAa5gB;AAAY,MAAAoK;AAAA,MAAA7J,GAAA,EAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAC9B0I,UAAA4Y,CAAAA,aAAcnC,QAAOpc,UAAWue;AAAQziB,IAAAA,SAAA6J;AAAAA,EAAA,OAAA;AAAAA,UAAA7J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA8J;AAAA,MAAA9J,GAAA,EAAA,MAAA6hB,kBAAA7hB,GAAA,EAAA,MAAAV,YAAAU,GAAA,EAAA,MAAAqd,QAAArd,GAAA,EAAA,MAAAqH,YAAArH,WAAA0D,eAAA;AAC5CoG,UAAAA,MAAA;AACV,YAAA4Y,YAAkBhf,cAAasa,uBAAwB,GAAG6D,cAAc,IAAIviB,QAAQ,EAAE;AACtF+H,eAASqb,YAAYrF,IAAI;AAAA,IAAC;AAC7Brd,IAAAA,SAAA6hB;AAAA7hB,IAAAA,SAAAV;AAAAU,IAAAA,SAAAqd;AAAArd,IAAAA,SAAAqH;AAAArH,IAAAA,SAAA0D;AAAA1D,IAAAA,SAAA8J;AAAAA,EAAA,OAAA;AAAAA,UAAA9J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA+J;AAAA,MAAA/J,GAAA,EAAA,MAAAwE,YAAAxE,GAAA,EAAA,MAAAqd,QAAArd,GAAA,EAAA,MAAAud,SAAAvd,WAAAqH,UAAA;AACQ0C,UAAA4Y,CAAAA,aAAA;AACL,YAAAC,mBAAuBN,SAAM9C;AAC7B,YAAAqD,cAAoBP,SAAMhjB;AAC1B,YAAAwjB,YAAkBvF,QAAQ,KAAKF;AAAK,UAChCkF,kBAAc;AACdlb,iBAAS,GAAG7C,QAAQ,IAAIqe,WAAW,IAAIN,gBAAc,GAAGO,SAAS,IAAE;AAAA,UAAAN,SAAA;AAAA,QAAA,CAAmB;AAAA,MAAC,OAAA;AAEvFnb,iBAAS,GAAG7C,QAAQ,IAAIqe,WAAW,GAAGC,SAAS,IAAE;AAAA,UAAAN,SAAA;AAAA,QAAA,CAAmB;AAAA,MAAC;AAAA,IAAA;AAE5ExiB,IAAAA,SAAAwE;AAAAxE,IAAAA,SAAAqd;AAAArd,IAAAA,SAAAud;AAAAvd,IAAAA,SAAAqH;AAAArH,IAAAA,SAAA+J;AAAAA,EAAA,OAAA;AAAAA,UAAA/J,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiK;AAAA,MAAAjK,WAAAwE,YAAAxE,GAAA,EAAA,MAAAV,YAAAU,GAAA,EAAA,MAAAqd,QAAArd,GAAA,EAAA,MAAAud,SAAAvd,WAAAqH,YAAArH,GAAA,EAAA,MAAA6gB,gBAAA;AACY5W,UAAA8Y,CAAAA,aAAA;AACTlC,qBAAeyB,SAAM9C,WAAY;AAAC,UAC9BjC,OAAK;AAAA;AAAA,MAAA;AAGT,YAAAyF,mBAAuBV,SAAM9C;AAAa,UACtC+C,kBAAc;AACdlb,iBAAS,GAAG7C,QAAQ,IAAIlF,QAAQ,IAAIijB,gBAAc,GAAGlF,IAAI,IAAE;AAAA,UAAAmF,SAAA;AAAA,QAAA,CAAmB;AAAA,MAAC,OAAA;AAE/Enb,iBAAS,GAAG7C,QAAQ,IAAIlF,QAAQ,GAAG+d,IAAI,IAAE;AAAA,UAAAmF,SAAA;AAAA,QAAA,CAAmB;AAAA,MAAC;AAAA,IAAA;AAEpExiB,IAAAA,SAAAwE;AAAAxE,IAAAA,SAAAV;AAAAU,IAAAA,SAAAqd;AAAArd,IAAAA,SAAAud;AAAAvd,IAAAA,SAAAqH;AAAArH,IAAAA,SAAA6gB;AAAA7gB,IAAAA,SAAAiK;AAAAA,EAAA,OAAA;AAAAA,UAAAjK,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkK;AAAA,MAAAlK,WAAAd,cAAAc,GAAA,EAAA,MAAA6hB,kBAAA7hB,GAAA,EAAA,MAAAwd,UAAAxd,WAAA8gB,yBAAA9gB,GAAA,EAAA,MAAAghB,mBAAAhhB,GAAA,EAAA,MAAA8J,OAAA9J,GAAA,EAAA,MAAA+J,OAAA/J,WAAAiK,OAAAjK,GAAA,EAAA,MAAAgH,MAAAhH,GAAA,EAAA,MAAAiH,MAAAjH,WAAAkH,MAAAlH,GAAA,EAAA,MAAAmH,IAAA;AAnCL+C,8BAAC,gBAAA,EAEa,UAAAjD,IACE/H,YACJ,QAAA,eACF2iB,MAAAA,gBACArE,MAAAA,QACO,aAAAtW,IACE,eAAAC,IACG,kBAAA0C,KACJ,cAAAC,KAIL,SAAAC,KAUI,aAAAE,KAYU6W,uBAAwCE,gBAAAA,GAnC1Dha,EAmCyE;AAChFhH,IAAAA,SAAAd;AAAAc,IAAAA,SAAA6hB;AAAA7hB,IAAAA,SAAAwd;AAAAxd,IAAAA,SAAA8gB;AAAA9gB,IAAAA,SAAAghB;AAAAhhB,IAAAA,SAAA8J;AAAA9J,IAAAA,SAAA+J;AAAA/J,IAAAA,SAAAiK;AAAAjK,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAAkH;AAAAlH,IAAAA,SAAAmH;AAAAnH,IAAAA,SAAAkK;AAAAA,EAAA,OAAA;AAAAA,UAAAlK,GAAA,EAAA;AAAA,EAAA;AAGQ,QAAAwW,MAAA+K,SAAO5O,UAAY;AAAS,MAAA8D;AAAA,MAAAC;AAAA,MAAA1W,WAAAuhB,SAAA;AACxB9K,UAAAA,MAAM8K,SAAO0B,UAAAA;AACTvM,UAAAA,MAAM6K,SAAO2B,QAAAA;AAAWljB,IAAAA,SAAAuhB;AAAAvhB,IAAAA,SAAAyW;AAAAzW,IAAAA,SAAA0W;AAAAA,EAAA,OAAA;AAAAD,UAAAzW,GAAA,EAAA;AAAA0W,UAAA1W,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA2W;AAAA,MAAA3W,GAAA,EAAA,MAAAwW,OAAAxW,WAAAyW,OAAAzW,GAAA,EAAA,MAAA0W,KAAA;AAH1CC,UAAA,oBAAC,wBACS,MAAAH,KACI,UAAAC,KACI,cAAAC,KACR,MAAA,2CAAA,CAA0C;AAAG1W,IAAAA,SAAAwW;AAAAxW,IAAAA,SAAAyW;AAAAzW,IAAAA,SAAA0W;AAAA1W,IAAAA,SAAA2W;AAAAA,EAAA,OAAA;AAAAA,UAAA3W,GAAA,EAAA;AAAA,EAAA;AAAA,MAAA4W;AAAA,MAAA5W,GAAA,EAAA,MAAAkK,OAAAlK,WAAA2W,KAAA;AA5CpDC,2CACH1M,UAAAA;AAAAA,MAAAA;AAAAA,MAuCAyM;AAAAA,IAAAA,GAIuD;AACxD3W,IAAAA,SAAAkK;AAAAlK,IAAAA,SAAA2W;AAAA3W,IAAAA,SAAA4W;AAAAA,EAAA,OAAA;AAAAA,UAAA5W,GAAA,EAAA;AAAA,EAAA;AAAA,SA7CI4W;AA6CJ;AApMP,SAAA6K,OAAAxB,SAAA;AAAA,SAiGiFnhB,QAAKC,SAAU;AAAY;AAjG5G,SAAA4hB,OAAAjY,SAAA;AAAA,SAiCmB5J,QAAKC,SAAU,iBAAiBD,QAAKC,SAAU;AAAY;AAjC9E,SAAAwhB,OAAAzhB,OAAA;AAAA,SA6B6EA,MAAKC,SAAU;AAAQ;ACpP7F,SAAAokB,gBAAApjB,IAAA;AAAA,QAAAC,KAAAC,GAAA,CAAA;AAAyB,QAAA;AAAA,IAAA4E;AAAAA,EAAAA,IAAA9E;AAI5B,QAAA0X,cAAoBC,yBAAAA;AACpB,QAAAhU,gBAAsBC,iBAAAA;AAAmB,MAAAlD;AAAA,MAAAT,GAAA,CAAA,MAAAyX,eAAAzX,GAAA,CAAA,MAAA0D,iBAAA1D,GAAA,CAAA,MAAA6E,KAAAxD,QAAArB,GAAA,CAAA,MAAA6E,KAAAzF,MAAA;AAE/BqB,SAAAA,MAAA;AACNgX,kBAAWE,IAAA;AAAA,QAAAF,aAAA,CAAA;AAAA,UAAAhR,OAEI5B,KAAIxD;AAAAA,UAAA2G,KACNtE,cAAaqB,gBAAiBF,KAAIzF,IAAK;AAAA,QAAA,CAAC;AAAA,MAAA,CAEpD;AAAA,IAAC;AACLY,IAAAA,QAAAyX;AAAAzX,IAAAA,QAAA0D;AAAA1D,IAAAA,GAAA,CAAA,IAAA6E,KAAAxD;AAAArB,IAAAA,GAAA,CAAA,IAAA6E,KAAAzF;AAAAY,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAa;AAAA,MAAAb,UAAA0D,iBAAA1D,GAAA,CAAA,MAAA6E,KAAAzF,MAAA;AAAEyB,SAAA,CAACgE,KAAIzF,MAAOsE,aAAa;AAAC1D,IAAAA,QAAA0D;AAAA1D,IAAAA,GAAA,CAAA,IAAA6E,KAAAzF;AAAAY,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAP7Bc,YAAUL,IAOPI,EAA0B;AAAC,SAEvBgE,KAAIA;AAAA;ACAf,SAAAue,eAAA;AAAA,QAAApjB,KAAAC,GAAA,CAAA;AACI,QAAA;AAAA,IAAAmJ;AAAAA,EAAAA,IAAcC,eAAAA;AACd,QAAAoO,cAAoBC,yBAAAA;AAA2B,MAAA3X;AAAA,MAAAC,GAAA,CAAA,MAAAyX,eAAAzX,UAAAoJ,GAAA;AACrCrJ,SAAAA,MAAA;AACN0X,kBAAWE,IAAA;AAAA,QAAAF,aAAA,CAAA;AAAA,UAAAhR,OACgB2C,EAAE,kBAAkB;AAAA,UAACpB,KACnD;AAAA,QAAA,CAAW;AAAA,MAAA,CACP;AAAA,IAAC;AAELhI,IAAAA,QAAAyX;AAAAzX,IAAAA,QAAAoJ;AAAApJ,IAAAA,QAAAD;AAAAA,EAAA,OAAA;AAAAA,SAAAC,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAS;AAAA,MAAAT,GAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AAAEV,SAAA,CAAA;AAAET,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AANLc,YAAUf,IAMPU,EAAE;AAAC,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAAkB,uBAAAC,IAAA,2BAAA,GAAA;AACCN,6BAAC,kBAAA,EAAgB;AAAEb,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAAA,SAAnBa;AAAmB;AAgCvB,SAASwiB,gBAAgB;AAAA,EAAExd;AAAAA,EAAUyd;AAA6B,GAAG;AACxE,QAAMxd,WAAWC,kBAAAA;AACjB,QAAMwd,iBAAiBC,oCAAAA;AACvB,QAAMllB,4BAA4B4J,6BAAAA;AAElC,QAAMub,cAAc3d,SAAS0U,WAAWvV,YAAY,oBAAC,UAAA,EAAS,UAAU,oBAAC,wBAAA,CAAA,CAAsB,GAAI,UAAA,oBAAC,iBAAA,CAAA,CAAe,GAAE;AACrH,QAAMye,iBAAiB5d,SAAS6d,cAAc1e;AAE9C,QAAM2e,gBAAgB1hB,QAAQ,MAAM,CAChC,GAAI5D,0BAA0BulB,SAAS,IACvC,GAAIvlB,0BAA0BwlB,cAAc,CAAA,CAAG,GAChD,CAACxlB,0BAA0BulB,OAAOvlB,0BAA0BwlB,UAAU,CAAC;AAE1E,QAAMC,gBACF,qBAAA,UAAA,EAEI,UAAA;AAAA,IAAA,oBAAC,OAAA,EAAM,MAAM,KAAK,SAASN,aAAY;AAAA,IACtC3d,SAAS6d,gBACN,oBAAC,SAAM,MAAM,MAAM,SAASD,gBAAe;AAAA,wBAG9C,OAAA,EAAM,MAAM,QAAQ,SAAS,oBAAC,kBAAc;AAAA,wBAC5C,OAAA,EAAM,MAAM,aAAa,SAAS,oBAAC,mBAAe;AAAA,IAClDH,sCAAmB,OAAA,EAAM,MAAM,UAAU,SAAS,oBAAC,WAAA,EAAU,eAAA,CAA+B,EAAA,CAAG;AAAA,wBAG/F,OAAA,EAAM,MAAM,aAAa,SAAS,oBAAC,sBAAkB;AAAA,IAGrDK,cAAc/kB,IAAIgG,CAAAA,SAAQ;AACvB,YAAMmf,QAAQhhB,MAAMC,QAAQ4B,KAAKzF,IAAI,IAAIyF,KAAKzF,OAAO,CAACyF,KAAKzF,IAAI;AAC/D,aAAO4kB,MAAM/P,QAAQ7U,CAAAA,SAAQ;AACzB,cAAM6kB,SAAS,CACX,oBAAC,OAAA,EAAiB,MAAM7kB,MAAM,SAAS,oBAAC,iBAAA,EAAgB,KAAA,CAAW,EAAA,GAAvDA,KAA4D;AAE5E,YAAIyF,KAAKqf,cAAc;AACnBD,iBAAO9R,KACH,oBAAC,OAAA,EAAwB,MAAM/S,OAAO,MAAM,SAAS,oBAAC,iBAAA,EAAgB,KAAA,CAAW,EAAA,GAArEA,OAAO,KACvB;AAAA,QACJ;AACA,eAAO6kB;AAAAA,MACX,CAAC;AAAA,IACL,CAAC;AAAA,IAGApe;AAAAA,IAED,oBAAC,OAAA,EAAM,MAAM,KAAK,SAASvH,0BAA0B6lB,UAAU,oBAAC,wBAAA,CAAA,KAA2B,oBAAC,cAAA,CAAA,CAAY,EAAA,CAAG;AAAA,EAAA,GAC/G;AAGJ,SACI,qBAAA,UAAA,EACI,UAAA;AAAA,IAAA,oBAAC,cAAA,EACIb,UAAAA,SACK,oBAAC,OAAA,EAAM,SAASA,QAASS,UAAAA,cAAAA,CAAc,IACvC,oBAAC,SAAM,SAAS,oBAAA,UAAA,EAAGA,UAAAA,cAAAA,CAAc,GAAMA,yBAAc,EAAA,CAE/D;AAAA,wBACC,yBAAA,CAAA,CAAuB;AAAA,EAAA,GAC5B;AAER;AC3FO,SAAAK,YAAA5d,OAAA;AAAA,QAAAxG,KAAAC,GAAA,EAAA;AACH,QAAA;AAAA,IAAAwG,OAAA1G;AAAAA,IAAA2G;AAAAA,IAAAC;AAAAA,IAAAC,gBAAAnG;AAAAA,IAAAoF;AAAAA,EAAAA,IAMIW;AALA,QAAAC,QAAA1G,OAAgBN,SAAR,WAARM;AAGA,QAAA6G,iBAAAnG,OAAsBhB,iBAAtBgB;AAIJ,QAAAqF,WAAiBC,kBAAAA;AAKbD,WAAQ6d,cAAApgB;AAAA,MAAA1C;AAAA,MAAAE;AAAA,MAAAf,GAAA,CAAA,MAAA8F,SAAA6d,cAAApgB,UAAA;AADDxC,SAAA+E,SAAQ6d,cAAApgB,YAAA,CAAA;AAA6BvD,IAAAA,GAAA,CAAA,IAAA8F,SAAA6d,cAAApgB;AAAAvD,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AAA5Ca,OAAOE;AADX,QAAAwC,WAAiB1C;AAEqB,MAAAI;AAAA,MAAAjB,GAAA,CAAA,MAAA0G,UAAA1G,GAAA,CAAA,MAAA4G,kBAAA5G,GAAA,CAAA,MAAAuD,YAAAvD,GAAA,CAAA,MAAA2G,UAAA3G,UAAAyG,OAAA;AAQdxF,6BAAC,cAAA,EACUwF,OACCC,QACAC,QACQC,gBACNrD,UAAQ;AACpBvD,IAAAA,QAAA0G;AAAA1G,IAAAA,QAAA4G;AAAA5G,IAAAA,QAAAuD;AAAAvD,IAAAA,QAAA2G;AAAA3G,IAAAA,QAAAyG;AAAAzG,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA8G;AAAA,MAAA9G,GAAA,CAAA,MAAA6F,YAAA7F,UAAAiB,IAAA;AAXtB6F,6BAAC,gBAAA,EACG,UAAA,oBAAC,kBAAA,EACG,8BAAC,eAAA,EAAc,UAAA,MACX,UAAA,oBAAC,mBAEO,QAAA7F,IASH4E,UACL,EAAA,CACJ,GACJ,GACJ;AAAiB7F,IAAAA,QAAA6F;AAAA7F,IAAAA,QAAAiB;AAAAjB,IAAAA,SAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,EAAA;AAAA,EAAA;AAAA,SAlBjB8G;AAkBiB;AC7DlB,SAAAud,mBAAAtkB,IAAA;AAAA,QAAAC,KAAAC,GAAA,CAAA;AAAA,MAAAQ;AAAA,MAAAI;AAAA,MAAAE;AAAA,MAAAf,UAAAD,IAAA;AAuBiBgB,SAAAG,uBAAAC,iCAAG;AAACH,SAAA;AAvBO,YAAA;AAAA,QAAAsjB;AAAAA,QAAA9iB;AAAAA,QAAA+iB;AAAAA,QAAA1iB;AAAAA,MAAAA,IAAA9B;AAMG,UAE9BiD,MAAAC,QAAcshB,UAAQC,EAAI,GAAC;AAAA,cACrBhmB,MAAM,uEAAuE;AAAA,MAAC;AAAA,UAGpF+lB,UAAQxlB,SAAW,YAAYwlB,SAAQC,MAAOD,SAAQC,GAAAzlB,SAAa,OAAK;AAAA,cAClEP,MAAM,mDAAmD;AAAA,MAAC;AAEpE,YAAAimB,cAAoBF,SAAQC;AAC5B,YAAAE,aAAmBD,YAAWC;AAAY,UAAA,CACrCA,YAAU;AAAA,cACLlmB,MAAM,4FAA4F8lB,WAAW,EAAE;AAAA,MAAC;AAE1H,YAAAK,SAAenjB;AACf,YAAAG,oBAAiD8iB,YAA0B9iB;AAAoB,UAAA,CAE1FgjB,QAAM;AAAS5jB,aAAA;AAAI,cAAAC;AAAAA,MAAA;AAExB,UAAA4jB;AAAAA,sBAAoBjjB;AAAkB,UAClC,CAACijB,iBAAa,CAAKA,cAAapc,QAAO;AACvCoc,wBAAgBA,OAAAA,KAAYF,UAAU;AAAzB,YACT7iB,MAAI;AACJ+iB,0BAAgBA,cAAanE,UAAW;AAAA,QAA3B;AAAA,MAAA;AAIF5f,WAAA;AAENJ,WAAAkkB,UACGA,OAAM9lB,IAAA,CAAAc,IAAAwD,UAEE,oBAAA,SACc,WAAA,iCACTyhB,2BAAiBA,cAAa/lB,IAAAsX,SAEvB,oBAAA,OAAA,EAEc,WAAA,cAEV,UAAA,oBAAC,eAAA,EACG,UAAA,oBAAC,iBAAA,EACgB,aAAAA,KACN,OAACxW,GAAGwW,GAAG,GACJ,UAAAuO,WAAWvO,GAAa,GAE5B,MAAA,QAAA,IACd,mBAVmBA,GAAa,EAWpC,CAER,EAAA,GAlBM,SAASxW,EAAC,IAAIwD,KAAK,EAmB7B,CAEP;AAAA,IAAC;AAAAnD,IAAAA,QAAAD;AAAAC,IAAAA,QAAAS;AAAAT,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAN,SAAAT,GAAA,CAAA;AAAAa,SAAAb,GAAA,CAAA;AAAAe,SAAAf,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAe,OAAAG,uBAAAC,IAAA,6BAAA,GAAA;AAAA,WAAAJ;AAAAA,EAAA;AAAA,MAAAE;AAAA,MAAAjB,UAAAS,IAAA;AAzBVQ,sCACKR,UAAAA,GAAAA,CAyBL;AAAMT,IAAAA,QAAAS;AAAAT,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA8G;AAAA,MAAA9G,GAAA,CAAA,MAAAa,MAAAb,UAAAiB,IAAA;AA3BV6F,SAAA,oBAAA,OAAA,EAAe,WAAAjG,IACXI,UAAAA,IA2BJ;AAAMjB,IAAAA,QAAAa;AAAAb,IAAAA,QAAAiB;AAAAjB,IAAAA,QAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,CAAA;AAAA,EAAA;AAAA,SA5BN8G;AA4BM;AC/DP,SAAA+d,uBAAA9kB,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAAgC,QAAA;AAAA,IAAA9B,MAAA2mB;AAAAA,EAAAA,IAAA/kB;AAGnC,QAAA+F,WAAiB7D,gCAAAA;AACjB,QAAA9D,OAAa4mB,eAAeD,QAAQ;AAAE,MAAArkB;AAAA,MAAAT,GAAA,CAAA,MAAA8kB,YAAA9kB,UAAA8F,UAAA;AACRrF,SAAAqF,SAAQib,yBAA0B+D,QAAQ;AAAC9kB,IAAAA,QAAA8kB;AAAA9kB,IAAAA,QAAA8F;AAAA9F,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAzE,QAAA8gB,wBAA8BrgB;AAA4C,MAAAI;AAAA,MAAAb,GAAA,CAAA,MAAA8kB,YAAA9kB,UAAA8F,UAAA;AAClDjF,SAAAiF,SAAQmb,mBAAoB6D,QAAQ;AAAC9kB,IAAAA,QAAA8kB;AAAA9kB,IAAAA,QAAA8F;AAAA9F,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAA7D,QAAAghB,kBAAwBngB;AACxB,QAAAwE,mBAAyB2f,8BAAAA;AACzB,QAAA;AAAA,IAAA5b;AAAAA,EAAAA,IAAcC,eAAAA;AACS,QAAAtI,KAAA;AAClB,QAAAoH,KAAA8c;AAAiB,QAAAhkB,KAAAmI,EAAE,kCAAgC;AAAA,IAAAjL;AAAAA,EAAAA,CAAU;AAAC,MAAA2I;AAAA,MAAA9G,GAAA,CAAA,MAAAmI,MAAAnI,UAAAiB,IAAA;AAA/D6F,SAAA,oBAAC,IAAA,EAAiB,OAAA7F,GAAAA,CAA6C;AAAGjB,IAAAA,QAAAmI;AAAAnI,IAAAA,QAAAiB;AAAAjB,IAAAA,QAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,GAAA,CAAA,MAAAqF,oBAAArF,GAAA,EAAA,MAAA8gB,yBAAA9gB,GAAA,EAAA,MAAAghB,mBAAAhhB,WAAA7B,MAAA;AAGrD6I,SAAAA,MAAA;AACL3B,uBAAgB6f,iBAAA;AAAA,QAAAC,eAAA;AAAA,UAAAhnB;AAAAA,UAAAkD,MAE1B+jB,mBAAmBjnB,IAAI;AAAA,QAAA;AAAA,QAAC2iB;AAAAA,QAAAE;AAAAA,QAAAqE,UAAA;AAAA,QAAAC,aAGG;AAAA,MAAA,CAChB;AAAA,IAAC;AACLtlB,IAAAA,QAAAqF;AAAArF,IAAAA,SAAA8gB;AAAA9gB,IAAAA,SAAAghB;AAAAhhB,IAAAA,SAAA7B;AAAA6B,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,WAAAoJ,GAAA;AACAnC,SAAAmC,EAAE,iCAAiC;AAACpJ,IAAAA,SAAAoJ;AAAApJ,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkH;AAAA,MAAAlH,GAAA,EAAA,MAAAgH,MAAAhH,WAAAiH,IAAA;AAXzCC,SAAA,oBAAC,UAAkB,WAAA,QACT,MAAA,SACG,SAAAF,IASRC,UAAAA,GAAAA,CACL;AAASjH,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAAkH;AAAAA,EAAA,OAAA;AAAAA,SAAAlH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAmH;AAAA,MAAAnH,GAAA,EAAA,MAAA8G,MAAA9G,WAAAkH,IAAA;AAdNC,SAAA,qBAAA,OAAA,EAAgB,WAAApG,IACnB+F,UAAAA;AAAAA,MAAAA;AAAAA,MACAI;AAAAA,IAAAA,GAaJ;AAAMlH,IAAAA,SAAA8G;AAAA9G,IAAAA,SAAAkH;AAAAlH,IAAAA,SAAAmH;AAAAA,EAAA,OAAA;AAAAA,SAAAnH,GAAA,EAAA;AAAA,EAAA;AAAA,SAfCmH;AAeD;AC1BH,SAAAoe,kBAAAxlB,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAA2B,QAAA;AAAA,IAAAulB;AAAAA,EAAAA,IAAAzlB;AAG9B,QAAA;AAAA,IAAAqJ;AAAAA,EAAAA,IAAcC,eAAAA;AACd,QAAAka,iBAAuBC,oCAAAA;AAAsC,MAAA/iB;AAAA,MAAAT,GAAA,CAAA,MAAAujB,gBAAAkC,OAAA;AAC/ChlB,SAAA8iB,gBAAckC,SAAA,CAAA;AAAazlB,IAAAA,GAAA,CAAA,IAAAujB,gBAAAkC;AAAAzlB,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAzC,QAAAylB,QAAchlB;AAEd,QAAAilB,qBAA4BF,gBAAeG,cAAAF,QAAA,CAAA,KAAwC;AAAG,MAAA5kB;AAAA,MAAAb,UAAAwlB,iBAAA;AAE7D3kB,SAAA+kB,CAAAA,YAAA;AACrB,YAAAC,YAAkBD,YAAY,KAAEnmB,SAAemmB;AAAQ,UACnDC,WAAS;AACTL,wBAAeM,kBAAA;AAAA,UAAA,GACRN,gBAAeG;AAAAA,UAAAF,OAAA,CACV,kBAAkBI,SAAS;AAAA,QAAA,CAAA;AAAA,MAAA,OAAA;AAGvC,cAAAE,cAAA;AAAA,UAAA,GAAyBP,gBAAeG;AAAAA,QAAAA;AAAgB,eACjDI,YAAWN;AAClBD,wBAAeM,kBAAmBC,WAAW;AAAA,MAAA;AAAA,IAAA;AAEpD/lB,IAAAA,QAAAwlB;AAAAxlB,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAZD,QAAAgmB,mBAAyBnlB;AAYvB,MAEE,CAAC4kB,SAASA,MAAKjd,WAAA,GAAa;AAAA,WAAA;AAAA,EAAA;AAIjB,QAAAzH,KAAA2kB,sBAAsB;AAAS,MAAAzkB;AAAA,MAAAjB,UAAAgmB,kBAAA;AACvB/kB,SAAAtB,CAAAA,OAAOqmB,iBAAiBrmB,OAAM,YAAY,KAAKA,EAAC;AAACK,IAAAA,QAAAgmB;AAAAhmB,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAAA,MAAA8G;AAAA,MAAA9G,UAAAoJ,GAAA;AACnDtC,SAAAsC,EAAE,WAAW,KAAK;AAAWpJ,IAAAA,QAAAoJ;AAAApJ,IAAAA,QAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,UAAAoJ,GAAA;AAIbpC,SAAAoC,EAAE,WAAW,KAAK;AAAWpJ,IAAAA,QAAAoJ;AAAApJ,IAAAA,QAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,WAAAgH,IAAA;AAA1DC,SAAA,oBAAC,YAAA,EAAiB,OAAA,WAAWD,UAAAA,IAA8B;AAAahH,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAkH;AAAA,MAAAlH,WAAAylB,OAAA;AACvEve,SAAAue,MAAK5mB,IAAA4J,OAEL;AAACzI,IAAAA,SAAAylB;AAAAzlB,IAAAA,SAAAkH;AAAAA,EAAA,OAAA;AAAAA,SAAAlH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAmH;AAAA,MAAAnH,GAAA,EAAA,MAAAe,MAAAf,GAAA,EAAA,MAAAiB,MAAAjB,GAAA,EAAA,MAAA8G,MAAA9G,GAAA,EAAA,MAAAiH,MAAAjH,WAAAkH,IAAA;AAVNC,8BAAC,QAAA,EACU,OAAApG,IACQ,eAAAE,IACF,aAAA6F,IACR,MAAA,SACK,WAAA,QAEVG,UAAAA;AAAAA,MAAAA;AAAAA,MACCC;AAAAA,IAAAA,GAGL;AAASlH,IAAAA,SAAAe;AAAAf,IAAAA,SAAAiB;AAAAjB,IAAAA,SAAA8G;AAAA9G,IAAAA,SAAAiH;AAAAjH,IAAAA,SAAAkH;AAAAlH,IAAAA,SAAAmH;AAAAA,EAAA,OAAA;AAAAA,SAAAnH,GAAA,EAAA;AAAA,EAAA;AAAA,SAXTmH;AAWS;AArCV,SAAAsB,QAAAwd,MAAA;AAAA,SAmCS,oBAAC,cAAgC,OAAAA,KAAIza,IAAMya,UAAAA,KAAI5kB,QAA9B4kB,KAAIza,EAAgC;AAAa;AClC3E,SAAA0a,qBAAAnmB,IAAA;AAAA,QAAAC,KAAAC,GAAA,EAAA;AAA8B,QAAA;AAAA,IAAAuB;AAAAA,IAAA2kB;AAAAA,IAAA5kB;AAAAA,EAAAA,IAAAxB;AAMjC,QAAA;AAAA,IAAAqJ;AAAAA,EAAAA,IAAcC,eAAAA;AACd,QAAAka,iBAAuBC,oCAAAA;AAAsC,MAAA/iB;AAAA,MAAAT,GAAA,CAAA,MAAAujB,gBAAAkC,OAAA;AAC/ChlB,SAAA8iB,gBAAckC,SAAA,CAAA;AAAazlB,IAAAA,GAAA,CAAA,IAAAujB,gBAAAkC;AAAAzlB,IAAAA,QAAAS;AAAAA,EAAA,OAAA;AAAAA,SAAAT,GAAA,CAAA;AAAA,EAAA;AAAzC,QAAAylB,QAAchlB;AAA4B,MAAAI;AAAA,MAAAb,UAAAwB,OAAA;AAEjBX,SAAAW,SAAK,CAAA;AAAMxB,IAAAA,QAAAwB;AAAAxB,IAAAA,QAAAa;AAAAA,EAAA,OAAA;AAAAA,SAAAb,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAe;AAAA,MAAAf,UAAAa,IAAA;AAAZE,SAACF,GAAWhC,IAAA4J,KAKnC;AAACzI,IAAAA,QAAAa;AAAAb,IAAAA,QAAAe;AAAAA,EAAA,OAAA;AAAAA,SAAAf,GAAA,CAAA;AAAA,EAAA;AALF,QAAAomB,kBAAwBrlB;AAKrB,MAAAE;AAAA,MAAAjB,UAAAmmB,UAAA;AAEuBllB,SAAAolB,CAAAA,QAAA;AACtB,YAAA5jB,aAAmB4jB,IAAGxnB,IAAA2f,MAIpB;AACF2H,eAAS1jB,UAAU;AAAA,IAAC;AACvBzC,IAAAA,QAAAmmB;AAAAnmB,IAAAA,QAAAiB;AAAAA,EAAA,OAAA;AAAAA,SAAAjB,GAAA,CAAA;AAAA,EAAA;AAPD,QAAAsmB,oBAA0BrlB;AAOxB,MAAA6F;AAAA,MAAA9G,UAAAoJ,GAAA;AAMiBtC,SAAAsC,EAAE,OAAO,KAAK;AAAOpJ,IAAAA,QAAAoJ;AAAApJ,IAAAA,QAAA8G;AAAAA,EAAA,OAAA;AAAAA,SAAA9G,GAAA,CAAA;AAAA,EAAA;AAAA,MAAAgH;AAAA,MAAAhH,WAAAylB,OAAA;AAK3Bze,SAAAye,MAAK5mB,IAAA8f,MAIL;AAAC3e,IAAAA,SAAAylB;AAAAzlB,IAAAA,SAAAgH;AAAAA,EAAA,OAAA;AAAAA,SAAAhH,GAAA,EAAA;AAAA,EAAA;AAAA,MAAAiH;AAAA,MAAAjH,GAAA,EAAA,MAAAuB,YAAAvB,GAAA,EAAA,MAAAsmB,qBAAAtmB,GAAA,EAAA,MAAAomB,mBAAApmB,GAAA,EAAA,MAAA8G,MAAA9G,WAAAgH,IAAA;AAZVC,sCAAe,WAAA,eACX,UAAA,oBAAC,eACa,WAAA,UACH,OAAAH,IACAsf,OAAAA,iBACQE,eAAAA,mBACL/kB,UAETyF,cAKL,GACJ;AAAMhH,IAAAA,SAAAuB;AAAAvB,IAAAA,SAAAsmB;AAAAtmB,IAAAA,SAAAomB;AAAApmB,IAAAA,SAAA8G;AAAA9G,IAAAA,SAAAgH;AAAAhH,IAAAA,SAAAiH;AAAAA,EAAA,OAAA;AAAAA,SAAAjH,GAAA,EAAA;AAAA,EAAA;AAAA,SAdNiH;AAcM;AAzCP,SAAA0X,OAAAsH,MAAA;AAAA,SAoCa,oBAAC,iBAAA,EAAqC,OAAAA,KAAIza,IACtC,8BAAC,UAAA,EAAeya,KAAAA,CAAI,EAAA,GADFA,KAAIza,EAE1B;AAAkB;AAtC/B,SAAAgT,OAAAhT,IAAA;AAAA,SAAA;AAAA,IAAAA;AAAAA,IAAArN,MAoBW;AAAA,IAAOooB,QACL;AAAA,EAAA;AAAU;AArBvB,SAAA9d,MAAA+d,IAAA;AAAA,MAWK,OAAOA,OAAM,YAAYA,OAAC,MAAS;AAAA,WAC5BA,GAAChb;AAAAA,EAAA;AAAA,SAELgb;AAAC;"}