@firecms/collection_editor 3.0.0-canary.167 → 3.0.0-canary.169

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n Autocomplete,\n AutocompleteItem,\n BooleanSwitchWithLabel,\n Chip,\n CloseIcon,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n IconButton,\n Select,\n SelectItem,\n SettingsIcon,\n TextField,\n Tooltip,\n Typography,\n useAutoComplete\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\n}) {\n\n const groupRef = React.useRef<HTMLInputElement>(null);\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n isSubmitting,\n submitCount\n } = useFormex<EntityCollection>();\n\n const collectionEditor = useCollectionEditorController();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n const [advancedPanelExpanded, setAdvancedPanelExpanded] = useState(false);\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n\n };\n\n useEffect(() => {\n if (errors.id) {\n setAdvancedPanelExpanded(true);\n }\n }, [errors.id]);\n\n const DatabaseField = collectionEditor.components?.DatabaseField ?? DefaultDatabaseField;\n\n const collectionIcon = <IconForView collectionOrView={values}/>;\n\n const groupOptions = groups?.filter((group) => !reservedGroups?.includes(group));\n\n const {\n inputFocused,\n autoCompleteOpen,\n setAutoCompleteOpen\n } = useAutoComplete({\n ref: groupRef\n });\n\n const isSubcollection = !!parentCollection;\n\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n const showErrors = submitCount > 0;\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div\n className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? \"New collection\" : `${values?.name} collection`}\n </Typography>\n <DatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId}/>\n\n <Tooltip title={\"Change icon\"}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={\"Name\"}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)}/>\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this collection, usually a plural name (e.g. Products)\"}\n </FieldCaption>\n </div>\n\n <div className={cls(\"col-span-12 \", isSubcollection ? \"\" : \"sm:col-span-8\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n disabled={!isNewCollection}\n required\n error={showErrors && Boolean(errors.path)}/>\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? \"Relative path to the parent (no need to include the parent path)\" : \"Path that this collection is stored in, in the database\"}\n </FieldCaption>\n\n </div>\n\n {!isSubcollection && <div className={\"col-span-12 sm:col-span-4 relative\"}>\n\n <TextField error={showErrors && Boolean(errors.group)}\n disabled={isSubmitting}\n value={values.group ?? \"\"}\n autoComplete=\"off\"\n onChange={(event) => setFieldValue(\"group\", event.target.value)}\n name={\"group\"}\n inputRef={groupRef}\n label=\"Group\"/>\n <Autocomplete\n open={autoCompleteOpen && (groupOptions ?? []).length > 0}\n setOpen={setAutoCompleteOpen}>\n {groupOptions?.map((group, index) => {\n return <AutocompleteItem\n key={index + \"_\" + group}\n onClick={() => {\n setAutoCompleteOpen(false);\n setFieldValue(\"group\", group ?? null);\n }}\n >\n <div className={\"flex-grow\"}>\n {group}\n </div>\n </AutocompleteItem>;\n })}\n </Autocomplete>\n <FieldCaption>\n {showErrors && Boolean(errors.group) ? errors.group : \"Group in the home page\"}\n </FieldCaption>\n </div>}\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n expanded={advancedPanelExpanded}\n onExpandedChange={setAdvancedPanelExpanded}\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Advanced\n </Typography>\n </div>}\n initiallyExpanded={false}>\n <div className={\"grid grid-cols-12 gap-4 p-4\"}>\n\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={\"Collection id\"}\n error={showErrors && Boolean(errors.id)}/>\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : \"This id identifies this collection. Typically the same as the path.\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={\"Singular name\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define a singular name for your entities\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.sideDialogWidth)}\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n setFieldTouched(\"sideDialogWidth\", true);\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"}/>\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={\"Side dialog width\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define the width (in pixels) of entities side dialog. Default is 768px\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n rows={2}\n aria-describedby=\"description-helper-text\"\n label=\"Description\"\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : \"Description of the collection, you can use markdown\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label=\"Default row size\"\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n <div className={\"col-span-12\"}>\n <Select\n name=\"customId\"\n label=\"Document IDs generation\"\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={customIdValue === \"code_defined\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n else if (v === \"true\")\n setFieldValue(\"customId\", true);\n else if (v === \"false\")\n setFieldValue(\"customId\", false);\n else if (v === \"optional\")\n setFieldValue(\"customId\", \"optional\");\n }}\n value={customIdValue ?? \"\"}\n renderValue={(value: any) => {\n if (value === \"code_defined\")\n return \"Code defined\";\n else if (value === \"true\")\n return \"Users must define an ID\";\n else if (value === \"optional\")\n return \"Users can define an ID, but it is not required\";\n else\n return \"Document ID is generated automatically\";\n }}\n >\n <SelectItem value={\"false\"}>\n Document ID is generated automatically\n </SelectItem>\n <SelectItem value={\"true\"}>\n Users must define an ID\n </SelectItem>\n <SelectItem value={\"optional\"}>\n Users can define an ID, but it is not required\n </SelectItem>\n </Select>\n </div>\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n label=\"Collection group\"\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n A collection group consists of all collections with the same path. This allows\n you\n to query over multiple collections at once.\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n label=\"Enable text search for this collection\"\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n Allow text search for this collection. If you have not specified a text search\n delegate, this will use the built-in local text search. This is not recommended\n for large collections, as it may incur in performance and cost issues.\n </FieldCaption>\n </div>\n </div>\n </ExpandablePanel>\n\n </div>\n\n </div>\n\n <div style={{ height: \"52px\" }}/>\n\n <Dialog\n open={iconDialogOpen}\n onOpenChange={setIconDialogOpen}\n maxWidth={\"xl\"}\n fullWidth\n >\n <div className={\"p-4 overflow-auto min-h-[200px]\"}>\n <SearchIconsView selectedIcon={values.icon}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }}/>\n </div>\n\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n }: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n\n return <Tooltip title={\"Database ID\"}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={\"(default)\"}></TextField>\n </Tooltip>\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n AutorenewIcon,\n Badge,\n Button,\n CircularProgress,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n }: EnumFormProps) {\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const { values, errors } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}/>\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n }: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }:ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`}/>;\n };\n\n const inferValues = async () => {\n if (!getData)\n return;\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button loading={inferring}\n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"small\"}/> : <AutorenewIcon/>}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n includeAddButton={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{ id: \"\", label: \"\" }}/>\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)}/>\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <AutorenewIcon size={\"small\"}/>}\n error={Boolean(entryError?.label)}/>\n\n {!disabled &&\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Badge>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n }: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n\n const {\n errors,\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>Enum form dialog</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)}/>\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n variant=\"outlined\"\n onClick={onClose}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Required\"}\n tooltip={\"You won't be able to save this entity if this value is not set\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Unique\"}\n tooltip={\"There cannot be multiple entities with the same value\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={\"Required message\"}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Lowercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Uppercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Trim\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={\"Exact length\"}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={\"Matches regex\"}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? \"Not a valid regexp\" : \"e.g. /^\\\\d+$/ for digits only\"}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData\n }: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: \"Default value was cleared\"\n })\n }\n }\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? \"This enum property is missing some values\" : undefined);\n }}\n getData={getData\n ? () => getData()\n .then(res => res.map(entry => values.id && getIn(entry, values.id)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged}/>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled}/>}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={\"Default value\"}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nconst fileTypes: Record<string, string> = {\n \"image/*\": \"Images\",\n \"video/*\": \"Videos\",\n \"audio/*\": \"Audio files\",\n \"application/*\": \"Files (pdf, zip, csv, excel...)\",\n \"text/*\": \"Text files\"\n}\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n // else if (value.includes(\"all\")) setFieldValue(acceptedFiles, undefined);\n // else if (value.length >= Object.keys(fileTypes).length) setFieldValue(acceptedFiles, undefined);\n // else if (allFileTypesSelected)\n // setFieldValue(acceptedFiles, Object.keys(fileTypes).filter((v) => !value.includes(v)));\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder | PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property))\n return false;\n if (isPropertyBuilder(property as PropertyOrBuilder))\n return false;\n else {\n const eProperty = property as Property;\n if (eProperty.dataType === \"array\" && typeof eProperty.of === \"function\")\n return false;\n else if (eProperty.dataType === \"array\" && Array.isArray(eProperty.of))\n return false;\n return Boolean(eProperty.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"subtitle1\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 p-1 rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"medium\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n CMSType,\n ErrorBoundary,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutorenewIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport { DragDropContext, Draggable, DraggableProvided, Droppable } from \"@hello-pangea/dnd\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n const propertiesOrder = propertiesOrderProp ?? Object.keys(properties);\n\n const onDragEnd = (result: any) => {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n const startIndex = result.source.index;\n const endIndex = result.destination.index;\n\n const newPropertiesOrder = Array.from(propertiesOrder);\n const [removed] = newPropertiesOrder.splice(startIndex, 1);\n newPropertiesOrder.splice(endIndex, 0, removed);\n if (onPropertyMove)\n onPropertyMove(newPropertiesOrder, namespace);\n }\n\n return (\n <>\n\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId={`droppable_${namespace}`}>\n {(droppableProvided, droppableSnapshot) => (\n <div\n {...droppableProvided.droppableProps}\n ref={droppableProvided.innerRef}\n className={className}>\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n return (\n <Draggable\n key={`array_field_${namespace}_${propertyKey}}`}\n draggableId={`array_field_${namespace}_${propertyKey}}`}\n index={index}>\n {(provided, snapshot) => {\n return (\n <ErrorBoundary>\n <PropertyTreeEntry\n propertyKey={propertyKey as string}\n propertyOrBuilder={property}\n additionalField={additionalField}\n provided={provided}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={snapshot.isDragging ? undefined : onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n </ErrorBoundary>\n );\n }}\n </Draggable>);\n }).filter(Boolean)}\n\n {droppableProvided.placeholder}\n\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n </>\n );\n },\n (prevProps, nextProps) => {\n\n const isSelected = nextProps.selectedPropertyKey?.startsWith(nextProps.namespace ?? \"\");\n const wasSelected = prevProps.selectedPropertyKey?.startsWith(prevProps.namespace ?? \"\");\n if (isSelected || wasSelected)\n return false;\n\n return equal(prevProps.properties, nextProps.properties) &&\n prevProps.propertiesOrder === nextProps.propertiesOrder &&\n equal(prevProps.additionalFields, nextProps.additionalFields) &&\n equal(prevProps.errors, nextProps.errors) &&\n equal(prevProps.onPropertyClick, nextProps.onPropertyClick) &&\n // equal(prevProps.onPropertyMove, nextProps.onPropertyMove) &&\n // equal(prevProps.onPropertyRemove, nextProps.onPropertyRemove) &&\n prevProps.namespace === nextProps.namespace &&\n prevProps.collectionEditable === nextProps.collectionEditable;\n }\n);\n\nexport function PropertyTreeEntry({\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n provided,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n provided: DraggableProvided;\n errors: Record<string, any>;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = getFullId(propertyKey, namespace);\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n // const hasError = fullId ? getIn(errors, idToPropertiesPath(fullId)) : false;\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n className=\"relative -ml-8\"\n >\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError}/>\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected}/>}\n\n <div className=\"absolute top-2 right-2 flex flex-row \">\n\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutorenewIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n color=\"inherit\"\n onClick={() => onPropertyRemove(propertyKey, namespace)}>\n <RemoveIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n {onPropertyMove && <Tooltip title={\"Move\"}\n asChild={true}>\n <IconButton\n component={\"span\"}\n size=\"small\"\n >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n );\n\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, } from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>Properties in this group</Typography>\n <Button\n color=\"primary\"\n variant={\"outlined\"}\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this group\"}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this group\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"small\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, toSnakeCase, unslugify } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? unslugify(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n color=\"primary\"\n\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = multiple ? \"of.path\" : \"path\";\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={(existing && Boolean(pathValue)) || disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={\"Target collection\"}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || \"Views\"}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={\"Views\"}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n <FieldCaption>\n You can only edit the reference collection upon field\n creation.\n </FieldCaption>\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={\"Mode\"}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return \"Date/Time\";\n case \"date\":\n return \"Date\";\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> Date/Time </SelectItem>\n <SelectItem value={\"date\"}> Date </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return \"On create\";\n case \"on_update\":\n return \"On any update\";\n default:\n return \"None\";\n }\n }}\n error={Boolean(autoValueError)}\n label={\"Automatic value\"}>\n <SelectItem value={\"none\"}> None </SelectItem>\n <SelectItem value={\"on_create\"}> On create </SelectItem>\n <SelectItem value={\"on_update\"}> On any update </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? \"Update this field automatically when creating or updating the entity\"}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Hide from collection\"}\n disabled={disabled}\n form={form}\n tooltip={\"Hide this field from the collection view. It will still be visible in the form view\"}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Read only\"}\n disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? []\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport { CloudUploadIcon, DebouncedTextField, ExpandablePanel, TextField, Typography } from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId, isEmptyObject,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getController,\n getData,\n propertyConfigs,\n collectionEditable\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) && !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n console.debug(\"onSubmit\", newPropertyWithId);\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n const idError = validateId(values.id, existingPropertyKeys);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n {...formexController}/>\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n }: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>();\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button variant=\"outlined\"\n type={\"submit\"}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n} & FormexController<PropertyWithId>) {\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError && !isEmptyObject(errors)) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled}/>;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can&apos;t be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with no <code>editable</code> flag\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray}/>\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon/>\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef}/>}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled}/>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n }/>}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n multi_references: \"Reference\",\n date_time: \"Date\",\n group: \"Group\",\n key_value: \"Group\",\n repeat: \"Array\",\n custom_array: \"Array\",\n block: \"Group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n }: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const group = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (group) {\n return group;\n }\n return \"Custom/Other\"\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>Select a property widget</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig}/>\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n Select a property widget\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing}/>;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n }: PropertySelectItemProps) {\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType}/>\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n return (str.slice(0, 1).toLowerCase() + str.slice(1))\n .replace(/([-_ ]){1,}/g, \" \")\n .split(/[-_ ]/)\n .reduce((cur, acc) => {\n return cur + acc[0].toUpperCase() + acc.substring(1);\n }, \"\");\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography, } from \"@firecms/ui\";\nimport React from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n }: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n\n const code = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionToCode({ ...collection }), null, \"\\t\")\n : \"No collection selected\";\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"my-4 mb-8\"}>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/customization_quickstart\"}>docs</a>.\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language=\"typescript\"\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: `Copied`\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"}/>\n Copy to clipboard\n </Button>\n <Button onClick={() => onOpenChange(false)}>Close</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({ ...a, ...b }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n AutorenewIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n IconButton,\n Paper,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n }: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n // find properties in the new collection, not present in the current one\n const newPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n if (newPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n // add them to the current collection\n const updatedProperties = {\n ...newPropertyKeys.reduce((acc, propertyKey) => {\n acc[propertyKey] = (newCollection.properties ?? {})[propertyKey];\n return acc;\n }, {} as {\n [key: string]: PropertyOrBuilder\n }),\n ...values.properties\n };\n const updatedPropertiesOrder = [\n ...newPropertyKeys,\n ...(values.propertiesOrder ?? [])\n ];\n setFieldValue(\"properties\", updatedProperties, false);\n\n updatePropertiesOrder(updatedPropertiesOrder);\n\n setInferredPropertyKeys(newPropertyKeys);\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n console.log(\"!!!!!! onPropertyChanged\", property)\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n console.debug(\"onPropertyChanged\", {\n id,\n property,\n previousId,\n namespace,\n propertyPath\n })\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-surface-50 dark:bg-surface-900\"}>\n <div className={cls(\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)}/>\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon/>\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"}/> : <AutorenewIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon/>\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={isNewCollection ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors}/>\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n color=\"primary\"\n variant={\"outlined\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}>\n Add new property\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <Paper\n className=\"sticky top-8 p-4 min-h-full border border-transparent w-full flex flex-col justify-center \">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? \"Now you can add your first property\"\n : \"Select a property to edit it\"}\n </Typography>\n <Button variant={\"outlined\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon/>\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </Paper>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n }/>}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n existingPropertyKeys={values.propertiesOrder as string[]}/>\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen}/>\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\" onClick={handleCancel} autoFocus> Cancel </Button>\n <Button onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"} onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds\n }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>}/>}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }}/>\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n }),\n initialFilter: {\n status: [\"==\", \"published\"]\n }\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, cls, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import_export\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function CollectionEditorWelcomeView({\n path,\n pathSuggestions,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n pathSuggestions?: (path: string) => Promise<string[]>;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const [loadingPathSuggestions, setLoadingPathSuggestions] = useState(false);\n const [filteredPathSuggestions, setFilteredPathSuggestions] = useState<string[] | undefined>();\n useEffect(() => {\n if (pathSuggestions && existingCollectionPaths) {\n setLoadingPathSuggestions(true);\n pathSuggestions(path)\n .then(suggestions => {\n const filteredSuggestions = suggestions.filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n setFilteredPathSuggestions(filteredSuggestions);\n })\n .finally(() => setLoadingPathSuggestions(false));\n }\n }, [existingCollectionPaths, path, pathSuggestions]);\n\n // const {\n // values,\n // setFieldValue,\n // setValues,\n // handleChange,\n // touched,\n // errors,\n // setFieldTouched,\n // isSubmitting,\n // submitCount\n // } = useFormex<EntityCollection>();\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n New collection\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Use one of the existing paths in your database:\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {loadingPathSuggestions && !filteredPathSuggestions && <CircularProgress size={\"small\"}/>}\n\n {filteredPathSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", unslugify(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n\n {!loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0 &&\n <Typography variant={\"caption\"}>\n No suggestions\n </Typography>\n }\n\n </div>\n\n </div>\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-4\"}>\n <TemplateButton title={\"Products\"}\n subtitle={\"A collection of products with images, prices and stock\"}\n icon={<Icon size={\"small\"} iconKey={productsCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Users\"}\n subtitle={\"A collection of users with emails, names and roles\"}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Blog posts\"}\n subtitle={\"A collection of blog posts with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Pages\"}\n subtitle={\"A collection of pages with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }}/>\n </div>\n\n </div>\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)}/>\n\n </div>}\n\n <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\n\n {/*<div style={{ height: \"52px\" }}/>*/}\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n }: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border mx-0 p-6 px-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle1\"}>\n {title}\n </Typography>\n {/*<Typography>*/}\n {/* {subtitle}*/}\n {/*</Typography>*/}\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import_export\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { getFieldConfig, getFieldId, Properties, Property, PropertyConfig, PropertyConfigBadge, } from \"@firecms/core\";\nimport { cls, Container, Select, SelectItem, Tooltip, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from \"../PropertyEditView\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"../util\";\nimport { PersistedCollection } from \"../../../types/persisted_collection\";\nimport { updatePropertyFromWidget } from \"../utils/update_property_for_widget\";\nimport { supportedFields } from \"../utils/supported_fields\";\nimport { buildPropertyFromData } from \"@firecms/schema_inference\";\n\nexport function CollectionEditorImportMapping({\n importConfig,\n propertyConfigs,\n collectionEditable\n }:\n {\n importConfig: ImportConfig,\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean\n }) {\n\n // const {\n // values,\n // setFieldValue,\n // setFieldTouched,\n // setValues,\n // submitCount\n // } = useFormex();\n\n const {\n setFieldValue,\n setFieldTouched,\n values\n } = useFormex<PersistedCollection>();\n const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n const propertyKey = selectedProperty ? selectedProperty.id : undefined;\n const property = selectedProperty || undefined;\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // setSelectedProperty(property);\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"];\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n }\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n // replace previousId with id in headersMapping\n const newHeadersMapping = { ...importConfig.headersMapping };\n Object.keys(newHeadersMapping).forEach((key) => {\n if (newHeadersMapping[key] === previousId) {\n newHeadersMapping[key] = id ?? \"\";\n }\n });\n importConfig.setHeadersMapping(newHeadersMapping);\n\n // if (id) {\n // setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n // setSelectedPropertyKey(id);\n // }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n };\n const onPropertyTypeChanged = async ({\n id,\n importKey,\n property,\n namespace\n }: OnPropertyChangedParams & {\n importKey: string\n }) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // we try to infer the rest of the properties of a property, from the type and the data\n const propertyData = importConfig.importData.map((d) => getIn(d, importKey));\n const inferredNewProperty = {\n ...buildPropertyFromData(propertyData, property, getInferenceType),\n editable: true\n };\n\n if (propertyPath) {\n if (inferredNewProperty) {\n setFieldValue(propertyPath, inferredNewProperty, false);\n } else {\n setFieldValue(propertyPath, property, false);\n }\n setFieldTouched(propertyPath, true, false);\n }\n };\n\n return (\n\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"6xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <Typography variant=\"h6\" className={\"my-4 ml-3.5\"}>Data property mapping</Typography>\n\n <DataNewPropertiesMapping importConfig={importConfig}\n destinationProperties={values.properties as Properties}\n buildPropertyView={({\n property,\n propertyKey,\n importKey,\n isIdColumn\n }) => {\n if (isIdColumn) {\n return <Typography> This column will be used as ID</Typography>\n }\n\n return <ImportNewPropertyFieldPreview\n property={property}\n propertyKey={propertyKey}\n onPropertyNameChanged={(propertyKey: string, value: string) => setFieldValue(`properties.${propertyKey}.name`, value, false)}\n onEditClick={() => {\n if (!propertyKey || !property) return;\n setSelectedProperty({\n ...property,\n id: propertyKey,\n editable: true\n });\n }}\n propertyTypeView={<PropertySelect property={property}\n disabled={false}\n onPropertyChanged={(props) => onPropertyTypeChanged({\n ...props,\n importKey\n })}\n propertyKey={propertyKey}\n propertyConfigs={propertyConfigs}/>}\n />;\n }}/>\n </Container>\n\n <PropertyFormDialog\n open={selectedProperty !== undefined}\n propertyKey={propertyKey}\n property={property}\n inArray={false}\n autoUpdateId={false}\n onPropertyChanged={onPropertyChanged}\n allowDataInference={false}\n collectionEditable={collectionEditable}\n onOkClicked={() => {\n setSelectedProperty(undefined);\n }}\n onCancel={() => {\n setSelectedProperty(undefined);\n }}\n autoOpenTypeSelect={false}\n existingProperty={false}\n propertyConfigs={propertyConfigs}/>\n\n <div style={{ height: \"52px\" }}/>\n </div>\n );\n\n}\n\nfunction PropertySelect({\n property,\n onPropertyChanged,\n propertyKey,\n propertyConfigs,\n disabled\n }: {\n property: Property | null,\n propertyKey: string | null,\n onPropertyChanged: ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => void,\n propertyConfigs: Record<string, PropertyConfig>,\n disabled?: boolean\n}) {\n\n const fieldId = property ? getFieldId(property) : null;\n const widget = property ? getFieldConfig(property, propertyConfigs) : null;\n\n const [selectOpen, setSelectOpen] = useState(false);\n\n return <Tooltip title={property && widget ? `${widget?.name} - ${property.dataType}` : undefined}\n open={selectOpen ? false : undefined}>\n <Select\n open={selectOpen}\n onOpenChange={setSelectOpen}\n invisible={true}\n size={\"large\"}\n className={\"w-full\"}\n disabled={disabled}\n error={!widget}\n fullWidth={true}\n value={fieldId ?? \"\"}\n placeholder={\"Select a property widget\"}\n position={\"item-aligned\"}\n renderValue={(value) => {\n if (!widget) return null;\n return <PropertyConfigBadge propertyConfig={widget}/>\n }}\n onValueChange={(newSelectedWidgetId) => {\n const newProperty = updatePropertyFromWidget(property, newSelectedWidgetId, propertyConfigs)\n if (!propertyKey) return;\n onPropertyChanged({\n id: propertyKey,\n property: newProperty,\n previousId: propertyKey,\n namespace: undefined\n });\n }}>\n {Object.entries(supportedFields).map(([key, widget]) => {\n return <PropertySelectItem\n key={key}\n value={key}\n optionDisabled={false}\n propertyConfig={widget}\n existing={false}/>;\n })\n }\n </Select>\n </Tooltip>;\n}\n\nexport interface PropertySelectItemProps {\n value: string;\n optionDisabled: boolean;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function PropertySelectItem({ value, optionDisabled, propertyConfig, existing }: PropertySelectItemProps) {\n return <SelectItem value={value}\n disabled={optionDisabled}\n className={\"flex flex-row items-center\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n optionDisabled ? \"w-full\" : \"\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <div>\n <div>{propertyConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"disabled\"}\n className={\"max-w-sm\"}>\n {existing && optionDisabled ? \"You can only switch to widgets that use the same data type\" : propertyConfig.description}\n </Typography>\n </div>\n </div>\n </SelectItem>\n}\n","import { convertDataToEntity, ImportConfig } from \"@firecms/data_import_export\";\nimport { CircularProgressCenter, EntityCollectionTable, Properties, useSelectionController } from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n // const propertiesMapping = getPropertiesMapping(importConfig.originProperties, properties, importConfig.headersMapping);\n const mappedData = importConfig.importData.map(d => convertDataToEntity(d, importConfig.idColumn, importConfig.headersMapping, properties, \"TEMP_PATH\", importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import_export\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n TopNavigationResult,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n CheckIcon,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n Tab,\n Tabs\n} from \"@firecms/ui\";\nimport { YupSchema } from \"./CollectionYupValidation\";\nimport { CollectionDetailsForm } from \"./CollectionDetailsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionEditorWelcomeView } from \"./CollectionEditorWelcomeView\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { getInferenceType, ImportSaveInProgress, useImportConfig } from \"@firecms/data_import_export\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n pathSuggestions?: (path?: string) => Promise<string[]>;\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>Collection editor</DialogTitle>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty}/>}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={\"There are unsaved changes in this collection\"}/>\n\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"details\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"subcollections\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const includeTemplates = !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: TopNavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter/>;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter/>;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs}/>\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n pathSuggestions,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities\n }: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: string[],\n }\n) {\n\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection ? (includeTemplates ? \"welcome\" : \"details\") : \"properties\";\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"details\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"details\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"details\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"details\");\n }\n\n };\n\n const doCollectionInference = (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? []);\n };\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error inferring collection: \" + (e.message ?? \"Details in the console\")\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"details\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"subcollections\" || currentView === \"details\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"details\") {\n const pathError = validatePath(col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n // TODO: getting data is only working in root collections with this code\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveAliasesFrom(updatedFullPath) : undefined;\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n const collectionEditable = editable || isNewCollection;\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"justify-end bg-surface-50 dark:bg-surface-950 border-b\")}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"details\"}>\n Details\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"subcollections\"}>\n Additional views\n </Tab>\n </Tabs>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter/>}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path}/>}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={(importData, propertiesOrder) => {\n // console.log(\"Import data\", importData, propertiesOrder)\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n }}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n pathSuggestions={pathSuggestions}/>}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]}/>}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: \"Data imported successfully\"\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"details\" &&\n <CollectionDetailsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n groups={groups}\n parentCollectionIds={parentCollectionIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection}/>}\n\n {currentView === \"subcollections\" && collection &&\n <SubcollectionsEditTab\n parentCollection={parentCollection}\n configController={configController}\n getUser={getUser}\n collectionInference={collectionInference}\n parentCollectionIds={parentCollectionIds}\n collection={collection}/>}\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>}/>\n }\n\n {currentView !== \"welcome\" && <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error}/>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\n </Button>\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n Next\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n Next\n </Button>}\n\n {isNewCollection && (currentView === \"details\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"details\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon/>\n : undefined}\n >\n {currentView === \"details\" && \"Next\"}\n {currentView === \"properties\" && \"Create collection\"}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n Update collection\n </LoadingButton>}\n\n </DialogActions>}\n </form>\n </>\n\n </Formex>\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n propertiesResult[key] = applyPropertiesConfig(properties[key] as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\nconst validatePath = (value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = \"You must specify a path in the database for this collection\";\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure the have different ids\";\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = `Collection paths must have an odd number of segments: ${value}`;\n }\n return error;\n};\n\nconst validateId = (value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection that uses this value as a path\";\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection which uses this id\";\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n getPathSuggestions?: (path?: string) => Promise<string[]>;\n\n getUser?: (uid: string) => User | null\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n redirect: boolean,\n existingEntities?: Entity<any>[]\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[]\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable ?? false,\n existingEntities\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(\"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n getPathSuggestions,\n components\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n pathSuggestions={getPathSuggestions}\n getUser={getUser}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }}/>\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={getData && currentPropertyDialog?.editedCollectionId\n ? () => {\n console.debug(\"get data for property\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveAliasesFrom(currentPropertyDialog.editedCollectionId!)\n return getData(resolvedPath, []);\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={[]}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey}/>\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? \"Edit collection\" : \"You don't have permissions to edit this collection\"}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n }: PluginHomePageActionsProps) {\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController.configPermissions({\n user: authController.user,\n collection\n });\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton>\n <MoreVertIcon size={\"small\"}/>\n </IconButton>}\n >\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon/>\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n variant={\"outlined\"}\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"outlined\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{\"Add new collection\".toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>You don&apos;t have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n getPathSuggestions?: (path?: string) => Promise<string[]>;\n\n collectionInference?: CollectionInference;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getPathSuggestions,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n components\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: <IntroWidget/>,\n // additionalChildrenEnd: <RootCollectionSuggestions introMode={introMode}/>,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\n }\n };\n}\n\nexport function IntroWidget({}: {}) {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>No collections found</Typography>\n <Typography>\n Start building collections in FireCMS easily. Map them to your existing\n database data, import from files, or use our templates.\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon/>Create your first collection\n </Button>}\n <Typography color={\"secondary\"}>\n You can also define collections programmatically.\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n const storedCollections = backendCollections ?? [];\n storedCollections.forEach(markAsEditable);\n\n console.debug(\"Collections specified in code:\", baseCollections);\n console.debug(\"Collections stored in the backend\", storedCollections);\n const result = joinCollectionLists(baseCollections, storedCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => baseCollections.findIndex(c => c.id === a.id) - baseCollections.findIndex(c => c.id === b.id));\n\n console.debug(\"Collections after joining:\", result);\n return result;\n}\n","import { ErrorView, unslugify, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"} variant={\"outlined\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: unslugify(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","useCollectionEditorController","useContext","CollectionEditorContext","CollectionDetailsForm","t0","$","_c","isNewCollection","reservedGroups","groups","parentCollection","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","isSubmitting","submitCount","useFormex","collectionEditor","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","t1","databaseId","undefined","updateDatabaseId","t2","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","t3","t4","useEffect","DatabaseField","components","DefaultDatabaseField","t5","IconForView","collectionIcon","groupOptions","filter","group","includes","t6","Symbol","for","ref","autoCompleteOpen","setAutoCompleteOpen","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","t7","T0","Container","t8","t9","t10","t11","t12","Typography","t13","t14","t15","jsx","Tooltip","IconButton","t16","t17","Chip","jsxs","t18","t19","t20","t21","e","target","value","t22","Boolean","t23","TextField","t24","t25","t26","FieldCaption","t27","t28","t29","cls","t30","t31","t32","Field","DebouncedTextField","t33","t34","t35","t36","t37","event","Autocomplete","length","map","group_0","index","AutocompleteItem","t38","SettingsIcon","t39","t40","t41","t42","t43","t44","t45","t46","singularName","t47","e_0","t48","t49","t50","t51","t52","t53","t54","sideDialogWidth","t55","e_1","isNaN","Number","t56","t57","t58","CloseIcon","t59","t60","t61","t62","t63","t64","t65","t66","description","t67","t68","t69","t70","t71","t72","t73","defaultSize","t74","_temp2","t75","Select","_temp","t76","t77","v","Error","t78","t79","t80","t81","SelectItem","t82","_temp3","t83","v_0","t84","collectionGroup","t85","BooleanSwitchWithLabel","t86","t87","t88","v_1","t89","textSearchEnabled","t90","t91","t92","t93","t94","ExpandablePanel","t95","t96","height","t97","icon","t98","SearchIconsView","t99","Dialog","t100","value_2","value_1","toUpperCase","value_0","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","label","hasError","Object","keys","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","ListIcon","Button","CircularProgress","AutorenewIcon","ArrayContainer","Paper","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","Badge","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","children","RuleIcon","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","Fragment","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","fileNameValue","storagePathValue","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","CloudUploadIcon","entries","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","parseInt","selected","join","editableProperty","property","isPropertyBuilder","eProperty","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","className","inferredPropertyKeys","collectionEditable","result","destination","startIndex","source","endIndex","newPropertiesOrder","removed","splice","onDragEnd","droppableProvided","droppableSnapshot","droppableProps","innerRef","additionalField","find","warn","Draggable","provided","snapshot","isDragging","placeholder","Droppable","DragDropContext","isSelected","startsWith","wasSelected","PropertyTreeEntry","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","RemoveIcon","DragHandleIcon","dragHandleProps","draggableProps","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","SelectGroup","collection_0","collection_1","flatMap","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","v_2","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","DEFAULT_FIELD_CONFIGS","config","MarkdownPropertyField","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","debug","id_0","property_1","resetForm","validateName","validateId","isValidRegExp","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","isEmptyObject","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","InfoLabel","hasValue","DeleteIcon","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","_temp4","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","Card","camelCase","str","slice","toLowerCase","replace","split","cur","acc","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","style","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","newCollection","newPropertyKeys","updatedProperties","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","indexOf","log","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","e_2","Alert","e_3","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","makePropertiesEditable","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","content","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","CollectionEditorWelcomeView","pathSuggestions","onContinue","existingCollectionPaths","loadingPathSuggestions","setLoadingPathSuggestions","filteredPathSuggestions","setFilteredPathSuggestions","suggestions","filteredSuggestions","s","c","suggestion","Icon","ImportFileUpload","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","slugify","fullSlug","slugifiedResult","firstKey","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","authController","useAuthController","topLevelNavigation","initialValuesProp","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","coolIconKeys","Math","floor","random","user","uid","CollectionEditorInternal","fullPath","extraView","existingEntities","useImportConfig","initialView","currentView","setCurrentView","setError","saveCollection","collectionData","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","err","validatePath","formController","updatedFullPath","convertIdsToPaths","resolvedPath","resolveAliasesFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","Tabs","Tab","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","getPathSuggestions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","deleteRequested","setDeleteRequested","Menu","MoreVertIcon","MenuItem","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","useCollectionEditorPlugin","Component","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","CollectionActionsStart","HeaderAction","AddColumnComponent","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","storedCollections","joinCollectionLists","sort","findIndex","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","segments"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEO,QAAMA,YAAYC,eAAIC,OAAO,EAAEC,MAAM;AAAA,IACxCC,IAAIH,eAAII,SAASC,SAAS,UAAU;AAAA,IACpCC,MAAMN,eAAII,SAASC,SAAS,UAAU;AAAA,IACtCE,MAAMP,eAAII,OAAO,EAAEC,SAAS,UAAU;AAAA,EAC1C,CAAC;ACEYG,QAAAA,gCAAgCA,MAAA;AAAA,WAAkCC,MAAAA,WAAAC,uBAAkC;AAAA,EAAC;ACkB3G,WAAAC,sBAAAC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,GAAA;AAA+B,UAAA;AAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAAN;AAiBlCO,UAAAA,WAAiBC,MAAAC,WAAmC;AACpD,UAAA;AAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,QASIC,iBAA4B;AAEhC,UAAAC,mBAAyBvB,8BAA8B;AAEvD,UAAA,CAAAwB,gBAAAC,iBAAA,IAA4CC,MAAAA,cAAc;AAC1D,UAAA,CAAAC,uBAAAC,wBAAA,IAA0DF,MAAAA,cAAc;AAAEG,QAAAA;AAAAxB,QAAAA,SAAAU,eAAA;AAEjDc,WAAAC,CAAA,eAAA;AACP,sBAAA,cAAcA,cAAUC,MAAa;AAAA,MAAC;AACvD1B,aAAAU;AAAAV,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAFD,UAAA2B,mBAAyBH;AAExBI,QAAAA;AAAA5B,QAAAA,EAAAE,CAAAA,MAAAA,mBAAAF,SAAAU,iBAAAV,EAAA,CAAA,MAAAY,SAAA;AAEkBgB,WAAAnC,CAAA,SAAA;AACfiB,sBAAc,QAAQjB,IAAI;AAE1BoC,cAAAA,cAAoBC,OAAAA,MAAMlB,SAAS,MAAM;AACrC,YAAA,CAACiB,eAAe3B,mBAAmBT,MAAI;AACzB,wBAAA,QAAQsC,iBAAYtC,IAAI,CAAC;AAAA,QAAA;AAG3CuC,cAAAA,YAAkBF,OAAAA,MAAMlB,SAAS,IAAI;AACjC,YAAA,CAACoB,aAAa9B,mBAAmBT,MAAI;AACvB,wBAAA,MAAMsC,iBAAYtC,IAAI,CAAC;AAAA,QAAA;AAGzCwC,cAAAA,sBAA4BH,OAAAA,MAAMlB,SAAS,cAAc;AACrD,YAAA,CAACqB,uBAAuB/B,mBAAmBT,MAAI;AACjC,wBAAA,gBAAgByC,cAASzC,IAAI,CAAC;AAAA,QAAA;AAAA,MAAC;AAGpDO,aAAAE;AAAAF,aAAAU;AAAAV,aAAAY;AAAAZ,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAlBD,UAAAmC,aAAmBP;AAkBjBQ,QAAAA;AAAAC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAa,OAAAvB,IAAA;AAEQ8C,WAAAA,MAAA;AAAA,YACFvB,OAAMvB,IAAA;AACNiC,uCAA6B;AAAA,QAAA;AAAA,MAAC;AAEnC,WAAA,CAACV,OAAMvB,EAAA;AAAI,QAAA,CAAA,IAAAuB,OAAAvB;AAAAU,aAAAoC;AAAApC,aAAAqC;AAAAA,IAAAA,OAAA;AAAAD,WAAApC,EAAA,CAAA;AAAAqC,WAAArC,EAAA,CAAA;AAAA,IAAA;AAJdsC,UAAAA,UAAUF,IAIPC,EAAW;AAEdE,UAAAA,gBAAsBrB,iBAAgBsB,YAAAD,iBAAAE;AAAmDC,QAAAA;AAAA1C,QAAAA,SAAAS,QAAA;0CAEjEkC,KAAAA,aAA8BlC,EAAAA,kBAAAA,OAAS,CAAA;AAAAT,aAAAS;AAAAT,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAA/D,UAAA4C,iBAAuBF;AAEvBG,UAAAA,eAAqBzC,QAAM0C,OAAAC,CAAAA,UAAA,CAAqB5C,gBAAc6C,SAAWD,KAAK,CAAA;AAAGE,QAAAA;AAAA,QAAAjD,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAM7D,WAAA;AAAA,QAAAC,KACX9C;AAAAA,MAAQ;AAChBN,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAND,UAAA;AAAA,MAAAqD;AAAAA,MAAAC;AAAAA,IAAAA,IAIIC,GAAAA,gBAAgBN,EAEnB;AAEDO,UAAAA,oBAA0BnD;AAEtBoD,QAAAA;AACA,QAAA,OAAOhD,OAAMiD,aAAc,UAAQ;AACnBD,sBAAAA;AAAAA,IAAAA,OAAH;AACNhD,UAAAA,OAAMiD,aAAkB,MAAA;AACfD,wBAAAA;AAAAA,MAAAA,OAAH;AACNhD,YAAAA,OAAMiD,aAAmB,OAAA;AAChBD,0BAAAA;AAAAA,QAAAA,OAAH;AACNhD,cAAAA,OAAMiD,aAAc,YAAU;AACrBD,4BAAAA;AAAAA,UAAAA;AAAAA,QAAH;AAAA,MAAA;AAAA,IAAA;AAGjB,UAAAE,aAAmB3C,cAAe;AAEd,UAAA4C,KAAuB;AAClC,UAAAC,KAAAC,GAAAA;AAAoB,UAAAC,KAAK;AAAa,UAAAC,KAAgC;AAKtCC,UAAAA,MAAC/D,CAAAA,kBAAkB,OAAO;AAC1C,UAAAgE,MAAAhE,kBAAkB,mBAAmB,GAAGO,QAAMhB,IAAA;AAAmB0E,QAAAA;AAAA,QAAAnE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAkE,KAAA;AADtEC,2CAACC,GAAoB,YAAA,EAAA,SAAAH,KAA2C,WAAA,aAC3DC,UACL,KAAA;AAAalE,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAuC,iBAAAvC,EAAA,EAAA,MAAA2B,oBAAA3B,EAAA,EAAA,MAAAS,OAAAgB,YAAA;AACb4C,2CAAC,eAA0B,EAAA,YAAA5D,OAAMgB,YACEE,oBAAAA,kBAAmB;AAAA3B,cAAAuC;AAAAvC,cAAA2B;AAAA,QAAA,EAAA,IAAAlB,OAAAgB;AAAAzB,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAA,QAAAtE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAMrCmB,YAAAA,MAAMlD,sBAAsB;AAACpB,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,UAAA4C,gBAAA;AAJ9C2B,YAACC,2BAAAA,IAAAC,GAAAA,SAAA,EAAe,OAAA,eACE,SAAG,MACjB,UAACD,2BAAAA,IAAAE,GAAAA,YAAA,EACU,OAAA,UACE,SAAAJ,KACK,yBAClB,CAAA,GACJ;AAAUtE,cAAA4C;AAAA5C,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA3E,QAAAA,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAAqE,OAAArE,EAAA,EAAA,MAAAuE,KAAA;mDAdA,EAAA,WAAA,8CACVJ,UAAAA;AAAAA,QAAAA;AAAAA,QAGAE;AAAAA,QAGAE;AAAAA,MAAAA,GAQJ;AAAMvE,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAAuE;AAAAvE,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA5E,QAAAA,UAAAK,kBAAA;AAELA,YAAAA,mDAAqBwE,GAAkB,MAAA,EAAA,aAAA,cACpC,UAACC,2BAAA,KAAAV,GAAA,YAAA,EAAoB,SAAA,WAAW,UAAA;AAAA,QAAA;AAAA,QACDI,2BAAAA,IAA8B,KAA1BnE,EAAAA,UAAAA,iBAAgBZ,KAAM,CAAA;AAAA,MAAA,EAAA,CACzD,EACJ,CAAA;AAAOO,cAAAK;AAAAL,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAA4E,KAAA;AAvBXG,4CAAA,OACIJ,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAkBCC;AAAAA,MAAAA,GAML;AAAM5E,cAAA2E;AAAA3E,cAAA4E;AAAA5E,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AACU,UAAAgF,MAAyB;AAItBC,UAAAA,MAAAxE,OAAMhB,QAAS;AAAEyF,QAAAA;AAAAlF,QAAAA,UAAAmC,YAAA;AACd+C,YAAAC,CAAYhD,MAAAA,WAAWgD,EAACC,OAAAC,KAAa;AAACrF,cAAAmC;AAAAnC,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAIzC,UAAAsF,MAAA3B,cAAc4B,QAAQ1E,OAAMpB,IAAK;AAAC+F,QAAAA;AAAAxF,QAAAA,EAAAiF,EAAAA,MAAAA,OAAAjF,UAAAkF,OAAAlF,EAAA,EAAA,MAAAsF,KAAA;AAN7CE,YAAChB,2BAAA,IAAAiB,GAAA,WAAA,EACU,OAAAR,KACG,UAAAC,KACH,OAAA,QACI,WAAG,MACd,UAAO,MACA,OAAAI,KAAqC;AAAAtF,cAAAiF;AAAAjF,cAAAkF;AAAAlF,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAC3B,UAAA0F,MAAA9E,QAAOnB,QAAS8F,QAAQ1E,OAAMpB,IAAK;AACnDkG,UAAAA,MAAA/E,QAAOnB,QAAS8F,QAAQ1E,OAAMpB,IAAK,IAAIoB,OAAMpB,OAAQ;AAAgEmG,QAAAA;AAAA,QAAA5F,EAAA0F,EAAAA,MAAAA,OAAA1F,UAAA2F,KAAA;AAD1HC,YAACpB,2BAAA,IAAAqB,mBAAA,EAAoB,OAAAH,KAChBC,UACL,KAAA;AAAe3F,cAAA0F;AAAA1F,cAAA2F;AAAA3F,cAAA4F;AAAAA,IAAAA,OAAA;AAAAA,YAAA5F,EAAA,EAAA;AAAA,IAAA;AAAA8F,QAAAA;AAAA,QAAA9F,EAAAwF,EAAAA,MAAAA,OAAAxF,UAAA4F,KAAA;AACb,YAAAd,2BAAA,KAAA,OAXU,EAAA,WAAA,eACZU,UAAAA;AAAAA,QAAAA;AAAAA,QAOAI;AAAAA,MAAAA,GAGJ;AAAM5F,cAAAwF;AAAAxF,cAAA4F;AAAA5F,cAAA8F;AAAAA,IAAAA,OAAA;AAAAA,YAAA9F,EAAA,EAAA;AAAA,IAAA;AAE8B+F,UAAAA,MAAAvC,kBAAkB,KAAK;AAAewC,QAAAA;AAAAhG,QAAAA,UAAA+F,KAAA;AAA1DE,YAAAA,GAAAA,IAAI,gBAAgBF,GAAsC;AAAC/F,cAAA+F;AAAA/F,cAAAgG;AAAAA,IAAAA,OAAA;AAAAA,YAAAhG,EAAA,EAAA;AAAA,IAAA;AAItD,UAAAkG,OAAChG;AAEJ,UAAAiG,MAAAxC,cAAc4B,QAAQ1E,OAAMnB,IAAK;AAAC0G,QAAAA;AAAA,QAAApG,EAAAkG,EAAAA,MAAAA,OAAAlG,UAAAmG,KAAA;AALhDC,YAAC5B,2BAAA,IAAA6B,OAAA,OAAA,EAAY,MAAA,QACFC,IAAiBA,GAAAA,oBACd,OAAA,QACG,UAAAJ,KACV,UAAA,MACO,OAAAC,KAAqC;AAAAnG,cAAAkG;AAAAlG,cAAAmG;AAAAnG,cAAAoG;AAAAA,IAAAA,OAAA;AAAAA,YAAApG,EAAA,EAAA;AAAA,IAAA;AAE9B,UAAAuG,MAAA3F,QAAOlB,QAAS6F,QAAQ1E,OAAMnB,IAAK;AACnD8G,UAAAA,MAAA5F,QAAOlB,QAAS6F,QAAQ1E,OAAMnB,IAAK,IAC9BmB,OAAMnB,OACN8D,kBAAkB,qEAAqE;AAAyDiD,QAAAA;AAAA,QAAAzG,EAAAuG,EAAAA,MAAAA,OAAAvG,UAAAwG,KAAA;AAH1JC,YAACjC,2BAAA,IAAAqB,mBAAA,EAAoB,OAAAU,KAChBC,UAGL,KAAA;AAAexG,cAAAuG;AAAAvG,cAAAwG;AAAAxG,cAAAyG;AAAAA,IAAAA,OAAA;AAAAA,YAAAzG,EAAA,EAAA;AAAA,IAAA;AAAA0G,QAAAA;AAAA1G,QAAAA,EAAAgG,EAAAA,MAAAA,OAAAhG,UAAAoG,OAAApG,EAAA,EAAA,MAAAyG,KAAA;AAEb,YAAA3B,2BAAA,KAAA,OAdU,EAAA,WAAAkB,KACZI,UAAAA;AAAAA,QAAAA;AAAAA,QAOAK;AAAAA,MAAAA,GAMJ;AAAMzG,cAAAgG;AAAAhG,cAAAoG;AAAApG,cAAAyG;AAAAzG,cAAA0G;AAAAA,IAAAA,OAAA;AAAAA,YAAA1G,EAAA,EAAA;AAAA,IAAA;AAEL,UAAA2G,MAACnD,CAAAA,mBAAmBsB,2BAAA,KAAA,OAAA,EAAgB,WAAA,sCAEjC,UAAA;AAAA,MAAAN,2BAAA,IAACiB,GAAiB,WAAA,EAAA,OAAA9B,cAAc4B,QAAQ1E,OAAMkC,KAAM,GAC/BhC,UAAAA,cACH,OAAAN,OAAMsC,SAAU,IACV,cAAA,OACH,UAAA6D,CAAWlG,UAAAA,cAAc,SAASkG,MAAKxB,OAAAC,KAAa,GACxD,MAAA,SACI/E,UAAAA,UACJ,OAAA,QAAO,CAAA;AAAA,qCACvBuG,GAAAA,cACS,EAAA,MAAAxD,qBAAqBR,gBAAY,IAAMiE,SAAW,GAC/CxD,SAAkB,qBAC1BT,UAAAA,cAAYkE,IAAA,CAAAC,SAAAC,UACDzC,+BAAA0C,GAAAA,kBAAA,EAEK,SAAA,MAAA;AACL5D,iCAAyB;AACX,sBAAA,SAASP,eAAa;AAAA,MAAC,GAGzC,UAEMyB,2BAAA,IAAA,OAAA,EAFU,WAAA,aACP,UACT,QAAA,CAAA,EAAA,GARKyC,QAAQ,MAAMlE,OASvB,CAAmB,EAE3B,CAAA;AAAA,MACAyB,2BAAAA,IAACqB,qBACIlC,UAAc4B,cAAAA,QAAQ1E,OAAMkC,KAAM,IAAIlC,OAAMkC,QAAS,yBAC1D,CAAA;AAAA,IAAA,GACJ;AAAMoE,QAAAA;AAAA,QAAAnH,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAOM,YAAA2B,2BAAA,KAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,QAAAN,2BAAA,IAAC4C,GACD,cAAA,EAAA;AAAA,uCAAChD,GAAAA,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,WAAA,CAAA;AAAA,MAAA,GACJ;AAAMpE,cAAAmH;AAAAA,IAAAA,OAAA;AAAAA,YAAAnH,EAAA,EAAA;AAAA,IAAA;AAOe,UAAAqH,OAACnH;AAEJ,UAAAoH,MAAA3D,cAAc4B,QAAQ1E,OAAMvB,EAAG;AAACiI,QAAAA;AAAA,QAAAvH,EAAAqH,EAAAA,MAAAA,OAAArH,UAAAsH,KAAA;AAJ9C,YAAA9C,2BAAAA,IAAC6B,OAAAA,OAAY,EAAA,MAAA,MACFC,IAAiBA,GACX,oBAAA,UAAAe,KACH,OAAA,iBACA,OAAAC,IAAmC,CAAA;AAAAtH,cAAAqH;AAAArH,cAAAsH;AAAAtH,cAAAuH;AAAAA,IAAAA,OAAA;AAAAA,YAAAvH,EAAA,EAAA;AAAA,IAAA;AAC5B,UAAAwH,MAAA5G,QAAOtB,MAAOiG,QAAQ1E,OAAMvB,EAAG;AAC/CmI,UAAAA,MAAA7G,QAAOtB,MAAOiG,QAAQ1E,OAAMvB,EAAG,IAAIuB,OAAMvB,KAAM;AAAqEoI,QAAAA;AAAA,QAAA1H,EAAAwH,EAAAA,MAAAA,OAAAxH,UAAAyH,KAAA;AADzHC,YAAClD,2BAAA,IAAAqB,mBAAA,EAAoB,OAAA2B,KAChBC,UACL,KAAA;AAAezH,cAAAwH;AAAAxH,cAAAyH;AAAAzH,cAAA0H;AAAAA,IAAAA,OAAA;AAAAA,YAAA1H,EAAA,EAAA;AAAA,IAAA;AAAA2H,QAAAA;AAAA,QAAA3H,EAAAuH,EAAAA,MAAAA,OAAAvH,UAAA0H,KAAA;AACb,YAAA5C,2BAAA,KAAA,OATU,EAAA,WAAA,eACZyC,UAAAA;AAAAA,QAAAA;AAAAA,QAKAG;AAAAA,MAAAA,GAGJ;AAAM1H,cAAAuH;AAAAvH,cAAA0H;AAAA1H,cAAA2H;AAAAA,IAAAA,OAAA;AAAAA,YAAA3H,EAAA,EAAA;AAAA,IAAA;AAIS,UAAA4H,MAAAjE,cAAc4B,QAAQ1E,OAAMgH,YAAa;AAACC,QAAAA;AAAA,QAAA9H,EAAAW,EAAAA,MAAAA,gBAAAX,UAAAc,iBAAA;AAGvCgH,YAAAC,CAAA,QAAA;AACNjH,wBAAgB,gBAAc,IAAM;AAAC,eAC9BH,aAAawE,GAAC;AAAA,MAAC;AACzBnF,cAAAW;AAAAX,cAAAc;AAAAd,cAAA8H;AAAAA,IAAAA,OAAA;AAAAA,YAAA9H,EAAA,EAAA;AAAA,IAAA;AACMgI,UAAAA,MAAAvH,OAAMoH,gBAAiB;AAAEI,QAAAA;AAAAjI,QAAAA,EAAA4H,EAAAA,MAAAA,OAAA5H,UAAA8H,OAAA9H,EAAA,EAAA,MAAAgI,KAAA;AARpCC,YAACzD,2BAAA,IAAAiB,GAAA,WAAA,EACU,OAAAmC,KACD,MAAA,gBACY,oBAAA,uBACR,UAAAE,KAIH,OAAAE,KACA,OAAA,iBAAkB;AAAAhI,cAAA4H;AAAA5H,cAAA8H;AAAA9H,cAAAgI;AAAAhI,cAAAiI;AAAAA,IAAAA,OAAA;AAAAA,YAAAjI,EAAA,EAAA;AAAA,IAAA;AACR,UAAAkI,MAAAvE,cAAc4B,QAAQ1E,OAAMgH,YAAa;AACzD,UAAAM,MAAAxE,cAAc4B,QAAQ1E,OAAMgH,YAAa,IAAIhH,OAAMgH,eAAgB;AAAqDO,QAAAA;AAAA,QAAApI,EAAAkI,EAAAA,MAAAA,OAAAlI,UAAAmI,KAAA;AAD7HC,YAAC5D,2BAAA,IAAAqB,mBAAA,EAAoB,OAAAqC,KAChBC,UACL,KAAA;AAAenI,cAAAkI;AAAAlI,cAAAmI;AAAAnI,cAAAoI;AAAAA,IAAAA,OAAA;AAAAA,YAAApI,EAAA,EAAA;AAAA,IAAA;AAAAqI,QAAAA;AAAA,QAAArI,EAAAiI,EAAAA,MAAAA,OAAAjI,UAAAoI,KAAA;AACb,YAAAtD,2BAAA,KAAA,OAdU,EAAA,WAAA,eACZmD,UAAAA;AAAAA,QAAAA;AAAAA,QAUAG;AAAAA,MAAAA,GAGJ;AAAMpI,cAAAiI;AAAAjI,cAAAoI;AAAApI,cAAAqI;AAAAA,IAAAA,OAAA;AAAAA,YAAArI,EAAA,EAAA;AAAA,IAAA;AAGS,UAAAsI,MAAA3E,cAAc4B,QAAQ1E,OAAM0H,eAAgB;AAACC,QAAAA;AAAA,QAAAxI,EAAAc,EAAAA,MAAAA,mBAAAd,UAAAU,eAAA;AAI1C8H,YAAAC,CAAA,QAAA;AACN3H,wBAAgB,mBAAiB,IAAM;AACvCuE,cAAAA,QAAcF,IAACC,OAAAC;AAAc,YAAA,CACxBA,OAAK;AACN3E,wBAAc,mBAAiB,IAAM;AAAA,QAAA,OAAC;AAAA,cAAA,CAC9BgI,MAAMC,OAAOtD,KAAK,CAAC,GAAC;AACd,0BAAA,mBAAmBsD,OAAOtD,KAAK,CAAC;AAAA,UAAA;AAAA,QAAC;AAAA,MAAA;AAEtDrF,cAAAc;AAAAd,cAAAU;AAAAV,cAAAwI;AAAAA,IAAAA,OAAA;AAAAA,YAAAxI,EAAA,EAAA;AAAA,IAAA;AAAA4I,QAAAA;AAAA5I,QAAAA,UAAAU,eAAA;AAGYkI,YAAAA,MAAA;AACLlI,sBAAc,mBAAiB,IAAM;AAAA,MAAC;AACzCV,cAAAU;AAAAV,cAAA4I;AAAAA,IAAAA,OAAA;AAAAA,YAAA5I,EAAA,EAAA;AAAA,IAAA;AACS6I,UAAAA,MAAA,CAACpI,OAAM8H;AAAgBO,QAAAA;AAAA,QAAA9I,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;2CAChC4F,GAAAA,WAAgB,EAAA,MAAA,QAAU,CAAA;AAAA/I,cAAA8I;AAAAA,IAAAA,OAAA;AAAAA,YAAA9I,EAAA,EAAA;AAAA,IAAA;AAAAgJ,QAAAA;AAAA,QAAAhJ,EAAA4I,EAAAA,MAAAA,OAAA5I,UAAA6I,KAAA;AANjB,YAAArE,2BAAA,IAACE,iBACL,MAAA,SACG,SAAAkE,KAGC,UAAAC,KACVC,UACJ,IAAA,CAAA;AAAa9I,cAAA4I;AAAA5I,cAAA6I;AAAA7I,cAAAgJ;AAAAA,IAAAA,OAAA;AAAAA,YAAAhJ,EAAA,EAAA;AAAA,IAAA;AACNiJ,UAAAA,MAAAxI,OAAM8H,mBAAoB;AAAEW,QAAAA;AAAA,QAAAlJ,EAAA,EAAA,MAAAsI,OAAAtI,EAAAwI,EAAAA,MAAAA,OAAAxI,EAAAgJ,EAAAA,MAAAA,OAAAhJ,UAAAiJ,KAAA;AAtBvCC,2CAACzD,GAAAA,WACU,EAAA,OAAA6C,KACD,MAAA,mBACA,MAAA,UACY,oBAAA,0BACR,UAAAE,KASI,cAAAQ,KAQP,OAAAC,KACA,OAAA,qBAAsB;AAAAjJ,cAAAsI;AAAAtI,cAAAwI;AAAAxI,cAAAgJ;AAAAhJ,cAAAiJ;AAAAjJ,cAAAkJ;AAAAA,IAAAA,OAAA;AAAAA,YAAAlJ,EAAA,EAAA;AAAA,IAAA;AACZ,UAAAmJ,MAAAxF,cAAc4B,QAAQ1E,OAAMgH,YAAa;AACzD,UAAAuB,MAAAzF,cAAc4B,QAAQ1E,OAAMgH,YAAa,IAAIhH,OAAMgH,eAAgB;AAAmFwB,QAAAA;AAAA,QAAArJ,EAAAmJ,EAAAA,MAAAA,OAAAnJ,UAAAoJ,KAAA;AAD3JC,YAAC7E,2BAAA,IAAAqB,mBAAA,EAAoB,OAAAsD,KAChBC,UACL,KAAA;AAAepJ,cAAAmJ;AAAAnJ,cAAAoJ;AAAApJ,cAAAqJ;AAAAA,IAAAA,OAAA;AAAAA,YAAArJ,EAAA,EAAA;AAAA,IAAA;AAAAsJ,QAAAA;AAAA,QAAAtJ,EAAAkJ,EAAAA,MAAAA,OAAAlJ,UAAAqJ,KAAA;AACb,YAAAvE,2BAAA,KAAA,OA5BU,EAAA,WAAA,eACZoE,UAAAA;AAAAA,QAAAA;AAAAA,QAwBAG;AAAAA,MAAAA,GAGJ;AAAMrJ,cAAAkJ;AAAAlJ,cAAAqJ;AAAArJ,cAAAsJ;AAAAA,IAAAA,OAAA;AAAAA,YAAAtJ,EAAA,EAAA;AAAA,IAAA;AAGS,UAAAuJ,MAAA5F,cAAc4B,QAAQ1E,OAAM2I,WAAY;AAExCC,UAAAA,MAAAhJ,OAAM+I,eAAgB;AAAEE,QAAAA;AAAA1J,QAAAA,EAAAW,EAAAA,MAAAA,gBAAAX,UAAAuJ,OAAAvJ,EAAA,GAAA,MAAAyJ,KAAA;AAHnCC,2CAACjE,GAAAA,WACU,EAAA,OAAA8D,KACF,MAAA,eACE,OAAAE,KACG9I,UAAAA,cACV,WAAQ,MACF,MAAC,GACU,oBAAA,2BACX,OAAA,eACR;AAAAX,cAAAW;AAAAX,cAAAuJ;AAAAvJ,eAAAyJ;AAAAzJ,eAAA0J;AAAAA,IAAAA,OAAA;AAAAA,YAAA1J,EAAA,GAAA;AAAA,IAAA;AACmB,UAAA2J,MAAAhG,cAAc4B,QAAQ1E,OAAM2I,WAAY;AACxD,UAAAI,MAAAjG,cAAc4B,QAAQ1E,OAAM2I,WAAY,IAAI3I,OAAM2I,cAAe;AAAqDK,QAAAA;AAAA,QAAA7J,EAAA2J,GAAAA,MAAAA,OAAA3J,WAAA4J,KAAA;AAD3HC,YAACrF,2BAAA,IAAAqB,mBAAA,EAAoB,OAAA8D,KAChBC,UACL,KAAA;AAAe5J,eAAA2J;AAAA3J,eAAA4J;AAAA5J,eAAA6J;AAAAA,IAAAA,OAAA;AAAAA,YAAA7J,EAAA,GAAA;AAAA,IAAA;AAAA8J,QAAAA;AAAA,QAAA9J,EAAA0J,GAAAA,MAAAA,OAAA1J,WAAA6J,KAAA;AACb,YAAA/E,2BAAA,KAAA,OAdU,EAAA,WAAA,eACZ4E,UAAAA;AAAAA,QAAAA;AAAAA,QAUAG;AAAAA,MAAAA,GAGJ;AAAM7J,eAAA0J;AAAA1J,eAAA6J;AAAA7J,eAAA8J;AAAAA,IAAAA,OAAA;AAAAA,YAAA9J,EAAA,GAAA;AAAA,IAAA;AAUS+J,UAAAA,MAAAtJ,OAAMuJ,eAAgB;AAAEC,QAAAA;AAAA,QAAAjK,EAAA,GAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAG7B,YAAA,CAAA,MAAM,KAAK,KAAK,KAAK,IAAI,EAAA4D,IAAAmD,QAM1B;AAAClK,eAAAiK;AAAAA,IAAAA,OAAA;AAAAA,YAAAjK,EAAA,GAAA;AAAA,IAAA;AAAAmK,QAAAA;AAAA,QAAAnK,EAAAW,GAAAA,MAAAA,gBAAAX,WAAA+J,KAAA;AAjBV,YAAAvF,2BAAAA,IAAA,SAAgB,WAAA,eACZ,yCAAC4F,GAAAA,QACQ,EAAA,MAAA,eACC,MAAA,SACK,WAAG,MACR,OAAA,oBACI,UAAA,gBACAzJ,UAAW,cACd,OAAAoJ,KACM,aAAAM,SAEZJ,UAAAA,IAAAA,CAOL,EACJ,CAAA;AAAMjK,eAAAW;AAAAX,eAAA+J;AAAA/J,eAAAmK;AAAAA,IAAAA,OAAA;AAAAA,YAAAnK,EAAA,GAAA;AAAA,IAAA;AAQY,UAAAsK,MAAA7G,kBAAkB;AAAc8G,QAAAA;AAAAvK,QAAAA,WAAAU,eAAA;AAC3B6J,YAAAC,CAAA,MAAA;AAAA,YACPA,MAAM,gBAAc;AAAAC,gBAAAA,IAAAA,MACJ,wBAAwB;AAAA,QAAA,OAAA;AAAA,cACnCD,MAAM,QAAM;AACjB9J,0BAAc,YAAU,IAAM;AAAA,UAAA,OAAC;AAAA,gBAC1B8J,MAAM,SAAO;AAClB9J,4BAAc,YAAU,KAAO;AAAA,YAAA,OAAC;AAAA,kBAC3B8J,MAAM,YAAU;AACrB9J,8BAAc,YAAY,UAAU;AAAA,cAAA;AAAA,YAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAC5CV,eAAAU;AAAAV,eAAAuK;AAAAA,IAAAA,OAAA;AAAAA,YAAAvK,EAAA,GAAA;AAAA,IAAA;AACM,UAAA0K,MAAAjH,iBAAiB;AAAEkH,QAAAA;AAAAC,QAAAA;AAAAC,QAAAA;AAAA,QAAA7K,EAAA,GAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAY1BwH,YAACnG,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,SAAS,UAE5B,0CAAA;AACAF,YAACpG,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,QAAQ,UAE3B,2BAAA;AACAD,YAACrG,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,YAAY,UAE/B,kDAAA;AAAa9K,eAAA2K;AAAA3K,eAAA4K;AAAA5K,eAAA6K;AAAAA,IAAAA,OAAA;AAAAF,YAAA3K,EAAA,GAAA;AAAA4K,YAAA5K,EAAA,GAAA;AAAA6K,YAAA7K,EAAA,GAAA;AAAA,IAAA;AAAA+K,QAAAA;AAAA/K,QAAAA,EAAAsK,GAAAA,MAAAA,OAAAtK,WAAAuK,OAAAvK,EAAA,GAAA,MAAA0K,KAAA;AAEf,YAAAlG,2BAAAA,IAAA,SAxCU,WAAA,eACZ,0CAAC4F,GACQ,QAAA,EAAA,MAAA,YACC,OAAA,2BACI,UAAA,gBACJ,MAAA,SACK,WAAA,MACD,UAAAE,KACK,eAAAC,KAUR,OAAAG,KACM,aAAAM,UAWbL,UAAAA;AAAAA,QAAAA;AAAAA,QAGAC;AAAAA,QAGAC;AAAAA,MAAAA,EAAAA,CAGJ,EACJ,CAAA;AAAM7K,eAAAsK;AAAAtK,eAAAuK;AAAAvK,eAAA0K;AAAA1K,eAAA+K;AAAAA,IAAAA,OAAA;AAAAA,YAAA/K,EAAA,GAAA;AAAA,IAAA;AAAAiL,QAAAA;AAAAjL,QAAAA,WAAAU,eAAA;AAKiBwK,YAAAA,CAAAA,QAAOxK,cAAc,mBAAmB8J,GAAC;AAACxK,eAAAU;AAAAV,eAAAiL;AAAAA,IAAAA,OAAA;AAAAA,YAAAjL,EAAA,GAAA;AAAA,IAAA;AAClDmL,UAAAA,MAAA1K,OAAM2K,mBAAyB;AAAAC,QAAAA;AAAA,QAAArL,EAAAiL,GAAAA,MAAAA,OAAAjL,WAAAmL,KAAA;AAJ1C,YAAA3G,2BAAA,IAAC8G,6BACa,UAAA,SACJ,OAAA,oBACS,eAAAL,KACR,OAAAE,IACT,CAAA;AAAAnL,eAAAiL;AAAAjL,eAAAmL;AAAAnL,eAAAqL;AAAAA,IAAAA,OAAA;AAAAA,YAAArL,EAAA,GAAA;AAAA,IAAA;AAAAuL,QAAAA;AAAA,QAAAvL,EAAA,GAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;2CACD0C,KAAAA,gBAAa,UAId,iIAAA,CAAA;AAAe7F,eAAAuL;AAAAA,IAAAA,OAAA;AAAAA,YAAAvL,EAAA,GAAA;AAAA,IAAA;AAAAwL,QAAAA;AAAAxL,QAAAA,WAAAqL,KAAA;AACb,YAAAvG,2BAAA,KAAA,OAZU,EAAA,WAAA,eACZuG,UAAAA;AAAAA,QAAAA;AAAAA,QAMAE;AAAAA,MAAAA,GAKJ;AAAMvL,eAAAqL;AAAArL,eAAAwL;AAAAA,IAAAA,OAAA;AAAAA,YAAAxL,EAAA,GAAA;AAAA,IAAA;AAAAyL,QAAAA;AAAAzL,QAAAA,WAAAU,eAAA;AAKiBgL,YAAAA,CAAAA,QAAOhL,cAAc,qBAAqB8J,GAAC;AAACxK,eAAAU;AAAAV,eAAAyL;AAAAA,IAAAA,OAAA;AAAAA,YAAAzL,EAAA,GAAA;AAAA,IAAA;AACpD2L,UAAAA,MAAAlL,OAAMmL,qBAA2B;AAAAC,QAAAA;AAAA,QAAA7L,EAAAyL,GAAAA,MAAAA,OAAAzL,WAAA2L,KAAA;AAJ5C,YAAAnH,2BAAA,IAAC8G,6BACa,UAAA,SACJ,OAAA,0CACS,eAAAG,KACR,OAAAE,IACT,CAAA;AAAA3L,eAAAyL;AAAAzL,eAAA2L;AAAA3L,eAAA6L;AAAAA,IAAAA,OAAA;AAAAA,YAAA7L,EAAA,GAAA;AAAA,IAAA;AAAA8L,QAAAA;AAAA,QAAA9L,EAAA,GAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;2CACD0C,KAAAA,gBAAa,UAId,wOAAA,CAAA;AAAe7F,eAAA8L;AAAAA,IAAAA,OAAA;AAAAA,YAAA9L,EAAA,GAAA;AAAA,IAAA;AAAA+L,QAAAA;AAAA/L,QAAAA,WAAA6L,KAAA;AACb,YAAA/G,2BAAA,KAAA,OAZU,EAAA,WAAA,eACZ+G,UAAAA;AAAAA,QAAAA;AAAAA,QAMAC;AAAAA,MAAAA,GAKJ;AAAM9L,eAAA6L;AAAA7L,eAAA+L;AAAAA,IAAAA,OAAA;AAAAA,YAAA/L,EAAA,GAAA;AAAA,IAAA;AAAAgM,QAAAA;AAAA,QAAAhM,EAAA,GAAA,MAAA2H,OAAA3H,EAAA,GAAA,MAAAqI,OAAArI,EAAA,GAAA,MAAAsJ,OAAAtJ,EAAA8J,GAAAA,MAAAA,OAAA9J,EAAAmK,GAAAA,MAAAA,OAAAnK,EAAA+K,GAAAA,MAAAA,OAAA/K,EAAAwL,GAAAA,MAAAA,OAAAxL,WAAA+L,KAAA;AACJ,YAAAjH,2BAAA,KAAA,OAhKU,EAAA,WAAA,+BAEZ6C,UAAAA;AAAAA,QAAAA;AAAAA,QAWAU;AAAAA,QAeAiB;AAAAA,QA6BAQ;AAAAA,QAgBAK;AAAAA,QAoBAY;AAAAA,QAyCAS;AAAAA,QAaAO;AAAAA,MAAAA,GAaJ;AAAM/L,eAAA2H;AAAA3H,eAAAqI;AAAArI,eAAAsJ;AAAAtJ,eAAA8J;AAAA9J,eAAAmK;AAAAnK,eAAA+K;AAAA/K,eAAAwL;AAAAxL,eAAA+L;AAAA/L,eAAAgM;AAAAA,IAAAA,OAAA;AAAAA,YAAAhM,EAAA,GAAA;AAAA,IAAA;AAAAiM,QAAAA;AAAA,QAAAjM,EAAAsB,GAAAA,MAAAA,yBAAAtB,WAAAgM,KAAA;AA7KdC,oDAAgB,WAAA,eACZ,yCAACC,GACa5K,iBAAAA,EAAAA,UAAoB,uBACZC,kBAAuB,0BAErC,OAAA4F,KAOe,mBAAA,OACnB6E,cAiKJ,CAAA,GAEJ;AAAMhM,eAAAsB;AAAAtB,eAAAgM;AAAAhM,eAAAiM;AAAAA,IAAAA,OAAA;AAAAA,YAAAjM,EAAA,GAAA;AAAA,IAAA;AAAAmM,QAAAA;AAAA,QAAAnM,EAAA,GAAA,MAAA8F,OAAA9F,EAAA0G,GAAAA,MAAAA,OAAA1G,EAAA2G,GAAAA,MAAAA,OAAA3G,WAAAiM,KAAA;AA/OV,YAAAnH,2BAAA,KAAA,OAAgB,EAAA,WAAAE,KAEZc,UAAAA;AAAAA,QAAAA;AAAAA,QAaAY;AAAAA,QAgBCC;AAAAA,QAgCDsF;AAAAA,MAAAA,GAkLJ;AAAMjM,eAAA8F;AAAA9F,eAAA0G;AAAA1G,eAAA2G;AAAA3G,eAAAiM;AAAAjM,eAAAmM;AAAAA,IAAAA,OAAA;AAAAA,YAAAnM,EAAA,GAAA;AAAA,IAAA;AAAAoM,QAAAA;AAAA,QAAApM,EAAA,GAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAEN,YAAAqB,2BAAA,IAAA,SAAY,OAAA;AAAA,QAAA6H,QAAU;AAAA,MAAA,GAAW;AAAArM,eAAAoM;AAAAA,IAAAA,OAAA;AAAAA,YAAApM,EAAA,GAAA;AAAA,IAAA;AAAAsM,QAAAA;AAAAtM,QAAAA,WAAAU,eAAA;AAUQ4L,YAAAC,CAAA,SAAA;AACZnL,+BAAuB;AACvBV,sBAAc,QAAQ6L,IAAI;AAAA,MAAC;AAC9BvM,eAAAU;AAAAV,eAAAsM;AAAAA,IAAAA,OAAA;AAAAA,YAAAtM,EAAA,GAAA;AAAA,IAAA;AAAAwM,QAAAA;AAAAxM,QAAAA,WAAAsM,OAAAtM,EAAAS,GAAAA,MAAAA,OAAA8L,MAAA;AALtB,YAAA/H,2BAAA,IAAA,OAAgB,EAAA,WAAA,mCACZ,UAAAA,2BAAA,IAACiI,KAA8B,iBAAA,EAAA,cAAAhM,OAAM8L,MACJ,gBAAAD,IAIrC,CAAA,GAAA;AAAMtM,eAAAsM;AAAA,QAAA,GAAA,IAAA7L,OAAA8L;AAAAvM,eAAAwM;AAAAA,IAAAA,OAAA;AAAAA,YAAAxM,EAAA,GAAA;AAAA,IAAA;AAAA0M,QAAAA;AAAA,QAAA1M,EAAAmB,GAAAA,MAAAA,kBAAAnB,WAAAwM,KAAA;AAZV,YAAAhI,2BAAAA,IAACmI,GAAAA,QACSxL,EAAAA,MAAa,gBACLC,cAAAA,mBACJ,UAAA,MACV,WAAQ,MAERoL,UAQJ,IAAA,CAAA;AAASxM,eAAAmB;AAAAnB,eAAAwM;AAAAxM,eAAA0M;AAAAA,IAAAA,OAAA;AAAAA,YAAA1M,EAAA,GAAA;AAAA,IAAA;AAAA4M,QAAAA;AAAA,QAAA5M,EAAA,GAAA,MAAA6D,MAAA7D,EAAA+E,GAAAA,MAAAA,OAAA/E,EAAAmM,GAAAA,MAAAA,OAAAnM,WAAA0M,KAAA;qDAhSD,WAAA9I,IACZ,0CAAC,IAAoB,EAAA,UAAAG,IAAkB,WAAAC,IAEnCe,UAAAA;AAAAA,QAAAA;AAAAA,QA0BAoH;AAAAA,QAmPAC;AAAAA,QAEAM;AAAAA,MAAAA,EAAAA,CAgBJ,EACJ,CAAA;AAAM1M,eAAA6D;AAAA7D,eAAA+E;AAAA/E,eAAAmM;AAAAnM,eAAA0M;AAAA1M,eAAA4M;AAAAA,IAAAA,OAAA;AAAAA,aAAA5M,EAAA,GAAA;AAAA,IAAA;AAnSN4M,WAAAA;AAAAA,EAmSM;AAhYP,WAAA5B,SAAA6B,SAAA;AAAA,QAuTyCxH,YAAU,gBAAc;AACjB,aAAA;AAAA,IAAA,OAAc;AAAA,UAChBA,YAAU,QAAM;AACd,eAAA;AAAA,MAAA,OAAyB;AAAA,YAC3BA,YAAU,YAAU;AAClB,iBAAA;AAAA,QAAA,OAAgD;AAEhD,iBAAA;AAAA,QAAA;AAAA,MAAwC;AAAA,IAAA;AAAA,EAAA;AA9TxF,WAAA6E,SAAA4C,SAAA;AA2RqC,WAAAtI,2BAAA,IAACsG,iBAEUzF,OAAI,SACVA,kBAAK0H,YAAa,EAAA,GAFC1H,eAAAA,OAAK,EAG7B;AAAA,EAAa;AA/RlD,WAAAgF,QAAA2C,SAAA;AAAA,WAwR8D3H,QAAK0H,YAAa;AAAA,EAAC;AA4GxF,WAAAtK,qBAAA1C,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,CAAA;AAA8B,UAAA;AAAA,MAAAwB;AAAAA,MAAAwL;AAAAA,IAAAA,IAAAlN;AAWJ,UAAAyB,KAAAC,cAAc;AAAEG,QAAAA;AAAA5B,QAAAA,SAAAiN,oBAAA;AACbrL,WAAAuD,CAAY8H,MAAAA,mBAAmB9H,EAACC,OAAAC,KAAa;AAACrF,aAAAiN;AAAAjN,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AAPhE,WAAA4C,2BAAAA,IAACC,GAAAA,WAAe,OAAA,eACD,MAAA,OACC,OAAA,SACnB,UAAAD,2BAAAA,IAACiB,GAAAA,WAAgB,EAAA,MAAA,SACK,iBACK,gBAAA,YACT,OAAAjE,IACG,UAAAI,IACG,aAAA,YAAA,CAAW,EACvC,CAAA;AAAU5B,aAAAwB;AAAAxB,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AATHoC,WAAAA;AAAAA,EASG;AC5aP,WAAS8K,mBAAmB5N,IAAoB;AACnD,WAAO,gBAAgBA,GAAG6N,WAAW,KAAK,cAAc;AAAA,EAC5D;AAEO,WAASC,0BAA0BC,WAA4B;AAClE,WAAOA,YACD,gBAAgBA,UAAUF,WAAW,KAAK,cAAc,IAAI,gBAC5D;AAAA,EACV;AAEO,WAASG,+BAA+BD,WAA4B;AACvE,WAAOA,YACD,gBAAgBA,UAAUF,WAAW,KAAK,cAAc,IAAI,qBAC5D;AAAA,EACV;AAEgBI,WAAAA,UAAUC,aAAqBC,mBAAoC;AAC/E,WAAOA,oBACD,GAAGA,iBAAiB,IAAID,WAAW,KACnCA;AAAAA,EACV;AAEgBE,WAAAA,cAAcF,aAAqBC,mBAAoC;AACnF,UAAME,mBAAmBF,oBACnB,GAAGA,iBAAiB,IAAID,WAAW,KACnCA;AACN,WAAON,mBAAmBS,gBAAgB;AAAA,EAC9C;ACMO,WAAAC,SAAA7N,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAkB,UAAA;AAAA,MAAA4N;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAApO;AAQgByB,QAAAA;AAAAxB,QAAAA,SAAA6N,YAAA;AAKlB,WAAA;AAAA,QAAAA;AAAAA,MAAA;AAAc7N,aAAA6N;AAAA7N,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAA+N,SAAA;AAEjBnM,WAAAnB,CAAA,WAAA;AACR,cAAAI,SAAA,CAAA;AAAuB,YACnBJ,OAAMoN,YAAA;AACNpN,iBAAMoN,WAAAO,QAAAC,CAAAA,WAAApH,UAAA;AACGoH,gBAAAA,CAAAA,WAASC,OAAA;AACJT,qBAAAA,aAAchN,OAAMgN,cAAiB,CAAA;AAC3ChN,qBAAMgN,WAAY5G,KAAK,IAAIpG,OAAMgN,WAAY5G,KAAK,KAAO,CAAA;AACnD4G,qBAAAA,WAAY5G,KAAK,EAAAqH,QAAU;AAAA,YAAA;AAEhCD,gBAAAA,CAAAA,WAAS/O,IAAA;AACJuO,qBAAAA,aAAchN,OAAMgN,cAAiB,CAAA;AAC3ChN,qBAAMgN,WAAY5G,KAAK,IAAIpG,OAAMgN,WAAY5G,KAAK,KAAO,CAAA;AACnD4G,qBAAAA,WAAY5G,KAAK,EAAA3H,KAAO;AAAA,YAAA;AAAA,UAAkD,CAEvF;AAAA,QAAA;AAELiP,cAAAA,WAAiBhJ,QAAQ1E,QAAMgN,cAAgBW,OAAAC,KAAY5N,QAAMgN,UAAY,EAAC/G,UAAW;AACzFiH,kBAAUQ,QAAQ;AACX1N,eAAAA;AAAAA,MAAM;AAChBb,aAAA+N;AAAA/N,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AAtBF,WAAA;AAAA,QAAA8M,eACgBlN;AAAAA,QAAcmN,kBAAA;AAAA,QAAAC,YAEjBhN;AAAAA,MAmBX;AACJ5B,aAAAwB;AAAAxB,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAzBD6O,UAAAA,WAAeC,uBAEZ1M,EAuBF;AAED,UAAA;AAAA,MAAA3B,QAAAsO;AAAAA,MAAAlO,QAAAmO;AAAAA,IAAAA,IAA2BH;AAAOxM,QAAAA;AAAArC,QAAAA,SAAA8N,mBAAA9N,EAAA+O,CAAAA,MAAAA,SAAAlB,YAAA;AAExBxL,WAAAA,MAAA;AAAA,YACFyL,iBAAe;AACfA,0BAAgBrN,SAAMoN,UAAW;AAAA,QAAA;AAAA,MAAC;AAEzC7N,aAAA8N;AAAA,QAAA,CAAA,IAAAiB,SAAAlB;AAAA7N,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,EAAA,MAAA+O,SAAAlB,YAAA;AAAE,WAAA,CAACpN,SAAMoN,UAAA;AAAY,QAAA,EAAA,IAAAkB,SAAAlB;AAAA7N,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAJtBsC,UAAAA,UAAUD,IAIPK,EAAmB;AAACO,QAAAA;AAAAjD,QAAAA,UAAAkO,sBAAAlO,EAAAiO,EAAAA,MAAAA,YAAAjO,EAAAgP,EAAAA,MAAAA,YAAAhP,EAAA,EAAA,MAAAmO,WAAAnO,UAAAgO,aAAAhO,EAAA,EAAA,MAAA+O,UAAA;AAGnB9L,WAACuB,2BAAA,IAAA,gBAAA,EAA+B,gBAAA,cACR/D,QAAAA,UACAI,QAAAA,UACQmN,gBAAAA,WACNC,UACUC,oBACXC,SAAU;AAAAnO,cAAAkO;AAAAlO,cAAAiO;AAAAjO,cAAAgP;AAAAhP,cAAAmO;AAAAnO,cAAAgO;AAAAhO,cAAA+O;AAAA/O,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAA6O,EAAAA,MAAAA,YAAA7O,UAAAiD,IAAA;AAPhCW,WAACY,2BAAA,IAAAyK,eAAA,EAAcJ,OAAAA,UAClB5L,UAOJ,IAAA;AAASjD,cAAA6O;AAAA7O,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AARF4D,WAAAA;AAAAA,EAQE;AAiBb,WAAAsL,eAAAnP,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAwB,UAAA;AAAA,MAAAQ;AAAAA,MAAAI;AAAAA,MAAAoN;AAAAA,MAAAkB;AAAAA,MAAAC;AAAAA,MAAAlB;AAAAA,MAAAC;AAAAA,IAAAA,IAAApO;AAUpB,UAAA;AAAA,MAAAW;AAAAA,QAEIO,iBAAU;AAEd,UAAAoO,CAAAA,qBAAAC,sBAAA,IAAsD/O,MAAAc,SAAmC;AACzF,UAAAkO,CAAAA,iBAAAC,kBAAA,IAA8CjP,MAAAc,SAAmC;AACjF,UAAAoO,CAAAA,WAAAC,YAAA,IAAkCnP,MAAAc,cAAoB;AAAEG,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAEjB3B,+BAAAmO,IAAA;AAAS3P,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAhD4P,UAAAA,oBAA0BrP,MAAAC,OAAagB,EAAS;AAChD,UAAAqO,iBAAuBD,kBAAiBE;AAASlO,QAAAA;AAAA5B,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,EAAAmP,CAAAA,MAAAA,kBAAAnP,EAAAa,CAAAA,MAAAA,QAAAgN,cAAA7N,EAAA,CAAA,MAAAqP,uBAAArP,EAAA,CAAA,MAAAoP,kBAAApP,EAAA,CAAA,MAAAS,OAAAoN,YAAA;AAE9BjM,WAAAQ,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA6E;AAAAA,UAAA8I;AAAAA,QAAAA,IAAA3N;AAIhB,cAAA4N,YAAkBX,wBAAwBU;AAC1C,cAAAE,aAAmBpP,QAAMgN,cAAgBhN,QAAMgN,WAAa5G,KAAK;AAC1D,eAAAzC,2BAAA,IAAC,WAAiByC,EAAAA,OACGgH,UACMkB,gBACLa,WAAQ,WACPC,YACI,gBAAAb,kBAAkBY,WACpB,cAAMR,MAAAA,mBAAmBvI,KAAK,GAC7B,eAAA4I,eAAcK,IAAKzP,OAAMoN,WAAY5G,KAAK,GAAA3H,EAAe,EAAA,GACnE,GAAGyQ,UAAU,EAAK;AAAA,MAAA;AAC5C/P,aAAAiO;AAAAjO,aAAAmP;AAAA,QAAA,CAAA,IAAAtO,QAAAgN;AAAA7N,aAAAqP;AAAArP,aAAAoP;AAAA,QAAA,CAAA,IAAA3O,OAAAoN;AAAA7N,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAfD,UAAAmQ,aAAmBvO;AAejBQ,QAAAA;AAAA,QAAApC,EAAAmP,CAAAA,MAAAA,kBAAAnP,SAAAmO,WAAAnO,EAAA,EAAA,MAAAU,iBAAAV,EAAAS,EAAAA,MAAAA,OAAAoN,YAAA;AAEkBzL,uBAAA;AAAA,YAAA,CACX+L,SAAO;AAAA;AAAA,QAAA;AAEZuB,yBAAiB;AACV,kBAAA,EAAAU,KAAAC,CAAA,SAAA;AAAA,cAAA,CACEA,MAAI;AAAA;AAAA,UAAA;AAGTC,gBAAAA,WAAiBD,KAAIE,KAAM;AAE3B,gBAAAC,YAAkBC,MAAAC,SAAAf,IAAmBW,QAAQ,CAAC;AAE9C,gBAAAK,oBAA0BlQ,OAAMoN;AAChC+C,gBAAAA,kBAAwBC,uCAAsBL,SAAS;AAGvD,gBAAAM,gBAAsBF,gBAAe9N,OAAAuL,CAAAA,cACzBsC,CAAAA,mBAAiBI,KAAAvG,CAAAA,MAAmBA,EAAClL,OAAQ+O,UAAS/O,EAAG,CACpE;AAEDwR,wBAAa1C,QAAA4C,CAAA,gBAAA;AACKC,2BAAAA,IAAK5C,YAAS/O,EAAG;AAAA,UAAA,CAClC;AACDoB,wBAAcyO,gBAAc,CAAA,GAAM2B,eAAkBH,GAAAA,iBAAiB,OAAO;AAAA,QAAA,CAACO,EAAAA,MAAA7G,OAAA,EAAA8G,QAI9DzB,MAAAA,kBAAkB,CAAC;AAAA,MAAA;AACzC1P,aAAAmP;AAAAnP,aAAAmO;AAAAnO,cAAAU;AAAA,QAAA,EAAA,IAAAD,OAAAoN;AAAA7N,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AA5BD,UAAAoR,cAAoBhP;AA4BnBC,QAAAA;AAAAK,QAAAA;AAAA,QAAA1C,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAKWd,0CAACgP,GAAU,UAAA,EAAA;AACX3O,0CAAC0B,GAAoB,YAAA,EAAA,SAAA,aACC,WAAA,aAAY,UAElC,UAAA;AAAapE,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAL,WAAArC,EAAA,EAAA;AAAA0C,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAA,EAAA,MAAAkO,sBAAAlO,EAAAiO,EAAAA,MAAAA,YAAAjO,EAAAoR,EAAAA,MAAAA,eAAApR,UAAAyP,WAAA;AACZxM,WAAAiL,sBACGpJ,gCAACwM,GAAAA,QAAgB7B,EAAAA,SAAAA,WACC,UAAAxB,YAAYwB,WACb,SAAA,QACH,MAAA,SACG2B,SAAU,aACtB3B,UAAAA;AAAAA,QAAAA,2CAAa8B,GAAuB,kBAAA,EAAA,MAAA,QAAU,CAAA,mCAAIC;QAAgB;AAAA,MAAA,GAEvE;AAASxR,cAAAkO;AAAAlO,cAAAiO;AAAAjO,cAAAoR;AAAApR,cAAAyP;AAAAzP,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,UAAAiD,IAAA;kDAdF,EAAA,WAAA,qCACXZ,UAAAA;AAAAA,QAAAA;AAAAA,QACAK;AAAAA,QAICO;AAAAA,MAAAA,GASL;AAAMjD,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAmP,EAAAA,MAAAA,kBAAAnP,UAAAU,eAAA;AAY6B2E,WAAAA,CAAAA,UAAW3E,cAAcyO,gBAAgB9J,KAAK;AAACrF,cAAAmP;AAAAnP,cAAAU;AAAAV,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAC7C,WAAA;AAAA,QAAA7D,IAAM;AAAA,QAAEgP,OAAS;AAAA,MAAE;AAAEtO,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAAjE,QAAAA,UAAAmQ,cAAAnQ,EAAAiO,EAAAA,MAAAA,YAAAjO,EAAA,EAAA,MAAAmP,kBAAAnP,UAAA+D,MAAA/D,EAAAS,EAAAA,MAAAA,OAAAoN,YAAA;AATtD,YAAArJ,2BAAA,IAACiN,uBAA4BtC,6BACH,UAAA,kBACH,OAAA1O,OAAMoN,YACHI,UACJ,MAAA,SACMkC,YACOb,mBAAqB,wBACtB,kBAAA,MACH,eAAAvL,IACE,iBAAAC,GAAwB,CAAA;AAAAhE,cAAAmQ;AAAAnQ,cAAAiO;AAAAjO,cAAAmP;AAAAnP,cAAA+D;AAAA,QAAA,EAAA,IAAAtD,OAAAoN;AAAA7N,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAGlC,UAAAkE,MAAAqL,oBAAe7N;AAAcyC,QAAAA;AAAA,QAAAnE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAE1BgB,YAAAA,MAAMqL,mBAAkB9N,MAAU;AAAC1B,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAArE,QAAAA,EAAAuP,EAAAA,MAAAA,mBAAAvP,UAAAmP,kBAAAnP,EAAA,EAAA,MAAAkE,KAAA;AAH7D,YAAAM,2BAAA,IAAC,mBAAuB+K,wBACD,MAAArL,KACUiL,gBACP,SAAAhL,IAAsC,CAAA;AAAAnE,cAAAuP;AAAAvP,cAAAmP;AAAAnP,cAAAkE;AAAAlE,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAA,QAAAtE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAqE,KAAA;AAhBnE,YAAAS,2BAAA,KAAA4M,GAAgB,OAAA,EAAA,WAAA,WAEbzN,UAAAA;AAAAA,QAAAA;AAAAA,QAWAI;AAAAA,MAAAA,GAIJ;AAAQrE,cAAAiE;AAAAjE,cAAAqE;AAAArE,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAA,QAAAvE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAA4D,IAAA;AACN,YAAAkB,2BAAA,KAAA,OApCU,EAAA,WAAA,eACZlB,UAAAA;AAAAA,QAAAA;AAAAA,QAiBAU;AAAAA,MAAAA,GAkBJ;AAAMtE,cAAAsE;AAAAtE,cAAA4D;AAAA5D,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AApCNuE,WAAAA;AAAAA,EAoCM;AAzGd,WAAA8F,QAAAlF,GAAA;AA+DYwM,YAAAC,MAAczM,CAAC;AAAA,EAAC;AAyD5B,QAAM0M,YAAYtR,MAAMuR,KACpB,SAAAC,kBAAAhS,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA2B,UAAA;AAAA,MAAAgH;AAAAA,MAAAmI,gBAAA4C;AAAAA,MAAA7C;AAAAA,MAAA8C;AAAAA,MAAAC;AAAAA,MAAAjE;AAAAA,MAAAkE;AAAAA,MAAAlC;AAAAA,IAAAA,IAAAlQ;AAWvB,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAMIO,iBAAsB;AAE1BmR,UAAAA,oBAA0B7R,MAAAC,QAAcsB,OAAAA,MAAMrB,QAAQ,GAAG0O,cAAc,IAAIlI,KAAK,MAAM,CAAC;AACvFmI,UAAAA,iBAAuB4C,YAAYI,kBAAiBtC;AAEtB,UAAAtO,KAAA,GAAG2N,cAAc,IAAIlI,KAAK;AAAMrF,QAAAA;AAAA,QAAA5B,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAAS,QAAA;AAA9CqB,WAAAA,OAAAA,MAAMrB,QAAQe,EAAgC;AAACxB,aAAAwB;AAAAxB,aAAAS;AAAAT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAA/D,UAAAqS,UAAgBzQ;AACiB,UAAAQ,KAAA,GAAG+M,cAAc,IAAIlI,KAAK;AAAS5E,QAAAA;AAAA,QAAArC,EAAAoC,CAAAA,MAAAA,MAAApC,SAAAS,QAAA;AAAjDqB,WAAAA,OAAAA,MAAMrB,QAAQ2B,EAAmC;AAACpC,aAAAoC;AAAApC,aAAAS;AAAAT,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAArE,UAAAsS,aAAmBjQ;AAEnBkQ,UAAAA,kBAAwBhS,MAAAC,OAAa8R,UAAU;AAAE5P,QAAAA;AAAA1C,QAAAA,SAAAmP,kBAAAnP,EAAAqS,CAAAA,MAAAA,WAAArS,EAAAiH,CAAAA,MAAAA,SAAAjH,EAAA,CAAA,MAAAsS,cAAAtS,UAAAU,iBAAAV,EAAA,EAAA,MAAAoP,gBAAA;AAEjC1M,WAAAA,MAAA;AAAA,aACP6P,gBAAezC,YAAauC,WAAO,CAAKA,YAAYjD,gBAAc;AACnE1O,wBAAc,GAAGyO,cAAc,IAAIlI,KAAK,QAAQqL,UAAU;AAAA,QAAA;AAE9DC,wBAAezC,UAAWwC;AAAAA,MAAU;AACvCtS,aAAAmP;AAAAnP,aAAAqS;AAAArS,aAAAiH;AAAAjH,aAAAsS;AAAAtS,cAAAU;AAAAV,cAAAoP;AAAApP,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,UAAAsS,YAAA;AAAErP,YAACqP,UAAU;AAACtS,cAAAsS;AAAAtS,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AALfsC,UAAAA,UAAgBI,IAKbO,EAAY;AAKU,UAAAW,KAAA,GAAGuL,cAAc,IAAIlI,KAAK;AAASlD,QAAAA;AAAA/D,QAAAA,UAAAmS,eAAA;AAQ3BpO,WAAAoO,iBAAiB3N,2BAAA,IAACgN,GAAoB,eAAA,EAAA,MAAA,SAAU;AAAAxR,cAAAmS;AAAAnS,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AACvDgE,UAAAA,KAAAuB,QAAQ0K,YAAU3B,KAAO;AAACrK,QAAAA;AAAA,QAAAjE,EAAAiS,EAAAA,MAAAA,aAAAjS,EAAA,EAAA,MAAAiO,YAAAjO,EAAA4D,EAAAA,MAAAA,MAAA5D,EAAA,EAAA,MAAA+D,MAAA/D,UAAAgE,IAAA;AATxCC,2CAACoC,OAAY,OAAA,EAAA,MAAAzC,IACF0C,IAAAA,GAAAA,oBACO,WAAA,aACX,UAAO,MACG2H,UACL,MAAA,SACMgE,WACE,cAAA,OACC,cAAAlO,IACP,OAAAC,IAA6B;AAAAhE,cAAAiS;AAAAjS,cAAAiO;AAAAjO,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAhE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAA,EAAA,MAAAiO,YAAAjO,EAAA,EAAA,MAAAiQ,YAAA3Q,MAAAU,EAAA,EAAA,MAAAkS,cAAA;AAE1C,YAAA,CAACjE,YACEzJ,2BAAAA,IAACgO,GAAAA,OAAa,EAAA,OAAA,SAAoB,YAACvC,YAAU3Q,IACzC,UAAAkF,2BAAAA,IAACE,GAAAA,YACQ,EAAA,MAAA,SACM,cAAA,QACA,WAAA,OACF,SAAA,MAAMwN,aACf,GAAA,UAAA1N,2BAAA,IAAC4C,GAAmB,cAAA,EAAA,MAAA,QAAO,CAAA,EAC/B,CAAA,GACJ;AAAQpH,cAAAiO;AAAA,QAAA,EAAA,IAAAgC,YAAA3Q;AAAAU,cAAAkS;AAAAlS,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAA,QAAAnE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAkE,KAAA;AAEV,YAAAY,2BAAA,KAAA,OAvBU,EAAA,WAAA,2CACZb,UAAAA;AAAAA,QAAAA;AAAAA,QAWCC;AAAAA,MAAAA,GAWL;AAAMlE,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAiQ,YAAA3B,OAAA;AAEL2B,YAAAA,YAAU3B,SAAY9J,2BAAA,IAAAJ,GAAA,YAAA,EAAoB,SAAA,WACE,WAAA,yCACxC6L,UAAAA,YAAU3B,MACf,CAAA;AAAa,QAAA,EAAA,IAAA2B,YAAA3B;AAAAtO,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAA,QAAAtE,EAAA,EAAA,MAAAiQ,YAAA3Q,IAAA;AAEZ2Q,YAAAA,YAAU3Q,MAASkF,2BAAA,IAAAJ,GAAA,YAAA,EAAoB,SAAA,WACE,WAAA,yCACrC6L,UAAAA,YAAU3Q,GACf,CAAA;AAAa,QAAA,EAAA,IAAA2Q,YAAA3Q;AAAAU,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAAqE,OAAArE,EAAA,EAAA,MAAAsE,KAAA;AAlCjBC,YACIJ,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAyBCE;AAAAA,QAKAC;AAAAA,MAAAA,GAGY;AAEdtE,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAAsE;AAAAtE,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AApCHuE,WAAAA;AAAAA,EAoCG,GAEX,SAASkO,SAASC,WAA2BC,WAA2B;AAC7DD,WAAAA,UAAUzL,UAAU0L,UAAU1L,SACjCyL,UAAUvD,mBAAmBwD,UAAUxD,kBACvCuD,UAAUtD,mBAAmBuD,UAAUvD,kBACvCsD,UAAUP,kBAAkBQ,UAAUR,iBACtCS,MAAMF,UAAUzC,YAAY0C,UAAU1C,UAAU,KAChDyC,UAAUT,cAAcU,UAAUV;AAAAA,EAC1C,CACJ;AAEA,WAAAY,gBAAA9S,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAyB,UAAA;AAAA,MAAAgH;AAAAA,MAAA6L;AAAAA,MAAAC;AAAAA,MAAA5D;AAAAA,IAAAA,IAAApP;AAYrB,UAAA;AAAA,MAAAc;AAAAA,QAEII,iBAAsB;AAAEO,QAAAA;AAAAxB,QAAAA,EAAAmP,CAAAA,MAAAA,kBAAAnP,SAAAa,UAAAb,EAAA,CAAA,MAAAiH,OAAA;AAEZA,WAAAA,UAAKvF,SAAiBI,OAAAA,MAAMjB,QAAQ,GAAGsO,cAAc,IAAIlI,KAAK,MAAM,IAACvF;AAAY1B,aAAAmP;AAAAnP,aAAAa;AAAAb,aAAAiH;AAAAjH,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAjG,UAAAgT,UAAgBxR;AAAkFI,QAAAA;AAAA5B,QAAAA,SAAA+S,SAAA;AAKhFnR,WAAAqR,CAAU,WAAA,CAACH,SAAOC,QAAAA,IAASrR;AAAY1B,aAAA+S;AAAA/S,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAErDf,WAACoC,2BAAA,IAAA0O,gBAAA,EAAY,QAAK,MAAE,UAAgB,oBAAA;AAAclT,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,EAAAmP,CAAAA,MAAAA,kBAAAnP,SAAAgT,WAAAhT,EAAA,CAAA,MAAAiH,OAAA;AAE7CA,WAAAA,UAAKvF,UACFoD,2BAAAA,KAYM,OAXF,EAAA,UAAA;AAAA,QAACN,2BAAAA,IAAA6B,OAAA,OAAA,EAAY,MAAA,GAAG8I,cAAc,IAAIlI,KAAK,QAC5BX,IAAAA,GACJ,oBAAA,UAAA,MACO,OAAA,MACF,MAAA,SACQ,cAAA,OACN,OAAAf,QAAQyN,OAAO,EAAC,CAAA;AAAA,uCAE7BnN,KAAAA,cAAoB,EAAA,OAAAN,QAAQyN,OAAO,GAC/BA,qBAAW,iCAChB,CAAA;AAAA,MAAA,GACJ;AAAMhT,aAAAmP;AAAAnP,aAAAgT;AAAAhT,aAAAiH;AAAAjH,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,UAAAqC,IAAA;AAdd,WAAAmC,2BAAAA,IAAC2O,GAAAA,iBACI9Q,UAcL,GAAA,CAAA;AAAgBrC,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,UAAA+S,SAAA;AAEhB9P,WAACuB,2BAAAA,IAAA4O,GAAAA,eAAA,EACG,UAAC5O,2BAAAA,IAAA8M,GAAA,QAAA,EACG,WAAQ,MACA,SAAA,YACCyB,SAAM,SACT,OAAA,WAAU,eAEpB,CAAA,GACJ;AAAgB/S,cAAA+S;AAAA/S,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAA,EAAA,MAAA8S,QAAA9S,EAAA4B,EAAAA,MAAAA,MAAA5B,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAAiD,IAAA;AAhCZ,WAAA6B,2BAAA,KAAA6H,aACK,UAAA,MACO,mBAAA,oBACVmG,MACQ,cAAAlR,IAEdQ,UAAAA;AAAAA,QAAAA;AAAAA,QACAM;AAAAA,QAiBAO;AAAAA,MAAAA,GAUJ;AAASjD,cAAA8S;AAAA9S,cAAA4B;AAAA5B,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAlCF4D,WAAAA;AAAAA,EAkCE;ACjWN,WAAAyP,cAAAtT,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAuB,UAAA;AAAA,MAAAqT;AAAAA,MAAAC;AAAAA,MAAAjF;AAAAA,MAAAkF;AAAAA,MAAAvF;AAAAA,MAAAwF,MAAAjS;AAAAA,MAAAkS;AAAAA,IAAAA,IAAA3T;AAMI0T,UAAAA,OAAAjS,OAAcE,SAAP,UAAPF;AAAcI,QAAAA;AAAA5B,QAAAA,SAAAsT,MAAA7T,QAAAO,SAAAuT,MAAA;AAiBzB3R,WAAA+R,CAA4BJ,YAAAA,KAAI7S,cAAe4S,MAAK7T,MAAOkU,OAAO;AAAC,QAAA,CAAA,IAAAL,MAAA7T;AAAAO,aAAAuT;AAAAvT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,EAAA0T,CAAAA,MAAAA,sBAAA1T,SAAAiO,YAAAjO,EAAA,CAAA,MAAAsT,MAAAjO,SAAArF,EAAAsO,CAAAA,MAAAA,SAAAtO,SAAAyT,QAAAzT,EAAA,CAAA,MAAA4B,IAAA;AAP7DQ,WAACoC,2BAAA,IAAA8G,GAAA,wBAAA,EACfgD,OACDmF,MACI,UAAA,SACH,OAAAH,MAAKjO,OACF4I,UACUyF,oBACL,eAAA9R,IAAsE;AAAA5B,aAAA0T;AAAA1T,aAAAiO;AAAA,QAAA,CAAA,IAAAqF,MAAAjO;AAAArF,aAAAsO;AAAAtO,aAAAyT;AAAAzT,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAPzF,UAAA4T,mBAAyBxR;AAOiE,QAEtFoR,SAAO;AAAAnR,UAAAA;AAAA,UAAArC,EAAA4T,EAAAA,MAAAA,oBAAA5T,UAAAwT,SAAA;AAEHnR,aAACmC,2BAAA,IAAAC,YAAA,EACU+O,OAAAA,SACS,UACpB,kBAAA;AAAUxT,gBAAA4T;AAAA5T,gBAAAwT;AAAAxT,gBAAAqC;AAAAA,MAAAA,OAAA;AAAAA,aAAArC,EAAA,EAAA;AAAA,MAAA;AAHVqC,aAAAA;AAAAA,IAAAA;AAKDuR,WAAAA;AAAAA,EAAgB;AC/BpB,WAAAC,0BAAA9T,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAmC,UAAA;AAAA,MAAAgO;AAAAA,IAAAA,IAAAlO;AAKtC,UAAA;AAAA,MAAAU;AAAAA,MAAAE;AAAAA,QAAiCM,iBAAU;AAAEO,QAAAA;AAAAxB,QAAAA,SAAAiO,UAAA;iDASrB,EAAA,WAAA,cACZ,UAAAzJ,2BAAA,IAAC6B,OAAYyN,OAAAA,EAAAA,MARE,uBASH,MAAA,YACPlS,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA0R;AAAAA,UAAAC;AAAAA,QAAAA,IAAA3R;AACS,eAAA4C,+BAAC,iBACMyJ,UACH,OAAA,YACE,SAAA,kEACHsF,MACCD,OAAQ;AAAA,SAE3B,EACJ,CAAA;AAAMtT,aAAAiO;AAAAjO,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAAiO,UAAA;iDAEU,EAAA,WAAA,cAEZ,UAAAzJ,2BAAA,IAAC6B,OAAY0N,OAAAA,EAAAA,MArBA,qBAsBD,MAAA,YACP3R,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAkR,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAA7R;AACS,eAAAoC,2BAAA,IAAC,eACMyJ,EAAAA,UACH,OAAA,UACE,SAAA,yDACHsF,MAAAA,QACCD,OAAI,QAAI,CAAA;AAAA,SAE3B,EACJ,CAAA;AAAMtT,aAAAiO;AAAAjO,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAAW,gBAAAX,EAAA,CAAA,MAAAS,QAAA;AAELqB,WAAAA,OAAAA,MAAMrB,QApCY,qBAoCc,KAAK+D,2BAAAA,IAAA,SAAgB,WAAA,eAClD,UAACA,2BAAAA,IAAA8B,GAAAA,oBAAA,EACa2H,UACH,OAAAnM,OAAAA,MAAMrB,QAtCK,4BAsC4B,GACvC,OAAA,oBACDyT,MAxCY,8BAyCb,MAAA,SACKvT,UAAW,aAAA,CAC7B,EAAA,CAAA;AAAMX,aAAAiO;AAAAjO,aAAAW;AAAAX,aAAAS;AAAAT,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AAtCVC,WACIb,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAcAI;AAAAA,QAeCQ;AAAAA,MAAAA,GAQK;AACPpC,aAAAwB;AAAAxB,aAAA4B;AAAA5B,cAAAoC;AAAApC,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAvCHqC,WAAAA;AAAAA,EAuCG;AClDJ,WAAA8R,yBAAApU,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAkC,UAAA;AAAA,MAAA6G;AAAAA,MAAAsN;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAxG;AAAAA,IAAAA,IAAAlO;AAsBrC,UAAA;AAAA,MAAAU;AAAAA,MAAAE;AAAAA,MAAAE;AAAAA,QAIII,iBAAU;AAAEO,QAAAA;AAAAxB,QAAAA,SAAAa,QAAA;AAUKiB,WAAAA,OAAAA,MAAMjB,QAJD,oBAI0B;AAACb,aAAAa;AAAAb,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAArD,UAAA0U,eAAqBlT;AAAiCI,QAAAA;AAAA5B,QAAAA,SAAAS,QAAA;AAEtDkU,YAAAA,eAAqB7S,OAAAA,MAAMrB,QAND,oBAM0B;AACzBmB,WAAA,OAAO+S,iBAAiB,WAAWA,eAAeC,KAAAA,gBAAgBD,YAAY;AAAC3U,aAAAS;AAAAT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAA1G,UAAA6U,qBAA2BjT;AAAgFQ,QAAAA;AAAApC,QAAAA,SAAAiO,UAAA;0CAIlG,6BAAoCA,SAAW,CAAA;AAAAjO,aAAAiO;AAAAjO,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAAoU,WAAA;AAI3C/R,WAAA+R,aAAa5P,+BAAA,OAAgB,EAAA,WAAA,cAC1B,UAAAA,2BAAAA,IAAC6B,OAAAA,OAAYyO,EAAAA,MAfD,wBAgBA,MAAA,YACPpS,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA4Q;AAAAA,UAAAC;AAAAA,QAAAA,IAAA7Q;AAAiC,8CACvB,eACG,EAAA,OAAA,aACGuL,UACJsF,MACCD,OAAQ;AAAA,SAE3B,EACJ,CAAA;AAAMtT,aAAAiO;AAAAjO,aAAAoU;AAAApU,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAAiO,CAAAA,MAAAA,YAAAjO,UAAAyU,WAAA;AAEL/R,WAAA+R,aAAajQ,+BAAA,OAAgB,EAAA,WAAA,cAC1B,UAAAA,2BAAAA,IAAC6B,OAAAA,OAAY0O,EAAAA,MA3BD,wBA4BA,MAAA,YACP9R,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAqQ,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAAhR;AACS,eAAAuB,+BAAC,iBACG,OAAA,aACGyJ,UACJsF,MAAG,QACFD,OAAI,SAAI;AAAA,SAE3B,EACJ,CAAA;AAAMtT,aAAAiO;AAAAjO,cAAAyU;AAAAzU,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAwU,MAAA;AAELvR,WAAAuR,QAAQhQ,+BAAA,OAAgB,EAAA,WAAA,cACrB,UAAAA,2BAAAA,IAAC6B,OAAAA,OAAY2O,EAAAA,MA3CN,mBA4CK,MAAA,YACPpR,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA0P,OAAA2B;AAAAA,UAAA1B,MAAA2B;AAAAA,QAAAA,IAAAtR;AACS,eAAAY,+BAAC,iBACG,OAAA,QACGyJ,UACJsF,MAAG,QACFD,OAAI,SAAI;AAAA,SAE3B,EACJ,CAAA;AAAMtT,cAAAiO;AAAAjO,cAAAwU;AAAAxU,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,MAAA1C,EAAA,EAAA,MAAAiD,IAAA;kDAvCM,EAAA,WAAA,uCAEXZ,UAAAA;AAAAA,QAAAA;AAAAA,QAaAK;AAAAA,QAaAO;AAAAA,MAAAA,GAaL;AAAMjD,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAA,EAAA,MAAAiO,YAAAjO,EAAAW,EAAAA,MAAAA,gBAAAX,EAAA8G,EAAAA,MAAAA,UAAA9G,UAAAS,QAAA;AAGDqG,WAAAA,yCAAU,OAAgB,EAAA,WAAA,cACvB,UAACtC,2BAAA,IAAA8B,GAAA,oBAAA,EACU,OAAAxE,OAAAA,MAAMrB,QA/DR,mBA+DgC,GAC9B,OAAA,gBACD0U,MAjED,qBAkEA,MAAA,UACA,MAAA,SAEKlH,UACAtN,UAAW,aAAA,CAC7B,EAAA,CAAA;AAAMX,cAAAiO;AAAAjO,cAAAW;AAAAX,cAAA8G;AAAA9G,cAAAS;AAAAT,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAAiO,YAAAjO,EAAAW,EAAAA,MAAAA,gBAAAX,EAAAuU,EAAAA,MAAAA,OAAAvU,UAAAS,QAAA;AAEL8T,WAAAA,sCAAO,OAAgB,EAAA,WAAA,cACpB,UAAC/P,2BAAA,IAAA8B,GAAA,oBAAA,EAA0B,OAAAxE,OAAAA,MAAMrB,QAzE3B,gBAyEgD,GAC3B,OAAA,cACD2U,MA3EpB,kBA4EmB,MAAA,UACA,MAAA,SAEKnH,UACAtN,UAAW,aAAA,CAC7C,EAAA,CAAA;AAAMX,cAAAiO;AAAAjO,cAAAW;AAAAX,cAAAuU;AAAAvU,cAAAS;AAAAT,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAA,EAAA,MAAAiO,YAAAjO,EAAAW,EAAAA,MAAAA,gBAAAX,EAAAsU,EAAAA,MAAAA,OAAAtU,UAAAS,QAAA;AAEL6T,YAAAA,sCAAO,OAAgB,EAAA,WAAA,cACpB,UAAC9P,2BAAA,IAAA8B,GAAA,oBAAA,EAA0B,OAAAxE,OAAAA,MAAMrB,QAnF3B,gBAmFgD,GAC3B,OAAA,cACD4U,MArFpB,kBAsFmB,MAAA,UACA,MAAA,SAEKpH,UACAtN,UAAW,aAAA,CAC7C,EAAA,CAAA;AAAMX,cAAAiO;AAAAjO,cAAAW;AAAAX,cAAAsU;AAAAtU,cAAAS;AAAAT,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAAlE,QAAAA,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAA+D,MAAA/D,EAAA,EAAA,MAAAgE,IAAA;mDAjCM,EAAA,WAAA,uCACXD,UAAAA;AAAAA,QAAAA;AAAAA,QAYAC;AAAAA,QAWAC;AAAAA,MAAAA,GAWL;AAAMjE,cAAAiE;AAAAjE,cAAA+D;AAAA/D,cAAAgE;AAAAhE,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAA,QAAAnE,EAAA,EAAA,MAAAiO,YAAAjO,EAAAqU,EAAAA,MAAAA,WAAArU,EAAA0U,EAAAA,MAAAA,gBAAA1U,UAAA6U,oBAAA;AAEL1Q,YAAAkQ,WAAWvP,gCAAA,OAAgB,EAAA,WAAA,eACxB,UAAA;AAAA,QAAAN,2BAAA,IAAC6B,OAAYiP,OAAAA,EAAAA,MA9FC,sBA+FHhP,IAAiBA,GAAAA,oBACd,OAAA,iBACF,MAAA,SACK2H,UACH4G,OAAiB,oBACjB,OAAAtP,QAAQmP,YAAY,GAAC;AAAA,QACnClQ,+BAACqB,KAAAA,gBAAoB,OAAAN,QAAQmP,YAAY,GACpCA,UAAAA,eAAe,uBAAuB,gCAC3C,CAAA;AAAA,MAAA,GACJ;AAAM1U,cAAAiO;AAAAjO,cAAAqU;AAAArU,cAAA0U;AAAA1U,cAAA6U;AAAA7U,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAkE,OAAAlE,EAAAmE,EAAAA,MAAAA,OAAAnE,EAAAoC,EAAAA,MAAAA,MAAApC,UAAA4D,IAAA;mDA/FM,EAAA,WAAA,2BAEZxB,UAAAA;AAAAA,QAAAA;AAAAA,QAEAwB;AAAAA,QA2CAM;AAAAA,QAqCCC;AAAAA,MAAAA,GAaL;AAAMnE,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAAoC;AAAApC,cAAA4D;AAAA5D,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAjGNqE,WAAAA;AAAAA,EAiGM;AC5IP,WAAAkR,wBAAAxV,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAiC,UAAA;AAAA,MAAAqU,KAAA9S;AAAAA,MAAA+S,KAAA3S;AAAAA,MAAAqM;AAAAA,IAAAA,IAAAlO;AACIuU,UAAAA,MAAA9S,OAAUE,gBAAVF;AACA+S,UAAAA,MAAA3S,OAAUF,gBAAVE;AAQxC,UAAA;AAAA,MAAAnB;AAAAA,MAAAE;AAAAA,QAGIM,iBAAU;AAAEmB,QAAAA;AAAApC,QAAAA,SAAAiO,UAAA;0CAQP,6BAAoCA,SAAW,CAAA;AAAAjO,aAAAiO;AAAAjO,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAiO,YAAAjO,EAAAW,CAAAA,MAAAA,gBAAAX,EAAAuU,CAAAA,MAAAA,OAAAvU,SAAAS,QAAA;AAE/C8T,WAAAA,sCAAO,OAAgB,EAAA,WAAA,cACpB,UAAC/P,2BAAA,IAAA8B,GAAA,oBAAA,EAA0B,OAAAxE,OAAAA,MAAMrB,QATvB,gBAS4C,GACxBwN,UACH,OAAA,cACDmH,MAZhB,kBAae,MAAA,UACA,MAAA,SACKzU,UAAW,aAAA,CAC7C,EAAA,CAAA;AAAMX,aAAAiO;AAAAjO,aAAAW;AAAAX,aAAAuU;AAAAvU,aAAAS;AAAAT,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAiO,YAAAjO,EAAAW,CAAAA,MAAAA,gBAAAX,EAAAsU,CAAAA,MAAAA,OAAAtU,UAAAS,QAAA;AACL6T,WAAAA,sCAAO,OAAgB,EAAA,WAAA,cACpB,UAAC9P,2BAAA,IAAA8B,GAAA,oBAAA,EAA0B,OAAAxE,OAAAA,MAAMrB,QAjBvB,gBAiB4C,GACxBwN,UACH,OAAA,cACDoH,MApBhB,kBAqBe,MAAA,UACA,MAAA,SACK1U,UAAW,aAAA,CAC7C,EAAA,CAAA;AAAMX,aAAAiO;AAAAjO,aAAAW;AAAAX,aAAAsU;AAAAtU,cAAAS;AAAAT,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,IAAA;kDArBM,EAAA,WAAA,2BAEZN,UAAAA;AAAAA,QAAAA;AAAAA,QAECC;AAAAA,QASAK;AAAAA,MAAAA,GASL;AAAM1C,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAtBNiD,WAAAA;AAAAA,EAsBM;AC3CP,WAAAuS,gBAAAzV,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,CAAA;AAAyB,UAAA;AAAA,MAAAwV;AAAAA,IAAAA,IAAA1V;AAEwByB,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAQxC,WAAA2B,2BAAA,KAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,QAAAN,2BAAA,IAACkR,GACD,UAAA,EAAA;AAAA,uCAACtR,GAAAA,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,aAAA,CAAA;AAAA,MAAA,GACJ;AAAMpE,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAAyV,UAAA;AAXd,WAAAjR,2BAAAA,IAAC0H,GAAAA,iBACsB,EAAA,mBAAI,OACd,SAAA,MACM,gBAAA,OAEX,OAAA1K,IASI,SAEZ,CAAA;AAAkBxB,aAAAyV;AAAAzV,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAhBlB4B,WAAAA;AAAAA,EAgBkB;ACfnB,WAAS+T,kBAAkB;AAAA,IACIC;AAAAA,IACA5H;AAAAA,IACAC;AAAAA,IACAtK;AAAAA,IACAuK;AAAAA,IACAC;AAAAA,EAQtC,GAAG;AAEO,UAAA;AAAA,MACF1N;AAAAA,MACAoV;AAAAA,MACAnV;AAAAA,QACAO,iBAA0B;AAE9B,UAAM6U,kBAAkBC,KAAAA,sBAAsB;AAExC5G,UAAAA,iBAAiByG,cAAc,kBAAkB;AAEjDI,UAAAA,eAAelU,OAAAA,MAAMrB,QAAQ,cAAc;AAE3CwV,UAAAA,mBAAmBnU,OAAAA,MAAMrB,QAAQ0O,cAAc;AAC/CtB,UAAAA,aAAgCqI,MAAAA,QAAQ,MAAM;AAChD,UAAI,CAACD,oBAAoB,OAAOA,qBAAqB,kBAC1C,CAAA;AACJE,aAAAA,KAAAA,kBAAkBF,gBAAgB,KAAK,CAAE;AAAA,IAAA,GACjD,CAACA,gBAAgB,CAAC;AAEfnI,UAAAA,kBAAkBA,CAACzI,UAA6B;AAClD,UAAI,CAAC5E,OACD;AACJC,oBAAcyO,gBAAgB9J,KAAK;AACnC,UAAI,CAACuQ,aAAa;AACd,cAAMQ,UAAU/Q,MAAMvC,OAAO0H,CAAAA,MAAKjF,QAAQiF,GAAGlL,EAAE,CAAC,EAAEyH,IAAI,CAACyD,QAAWA,IAAElL,EAAE;AACtE,YAAI0W,gBAAgB,CAACI,QAAQpT,SAASgT,YAAY,GAAG;AACjDtV,wBAAc,gBAAgBgB,MAAS;AACvCoU,0BAAgBhD,KAAK;AAAA,YACjBuD,MAAM;AAAA,YACNC,SAAS;AAAA,UAAA,CACZ;AAAA,QAAA;AAAA,MACL;AAAA,IAER;AAEA,WAEQxR,2BAAA,KAAAyR,qBAAA,EAAA,UAAA;AAAA,MAAC/R,2BAAA,IAAA,OAAA,EAAI,WAAW,eACZ,UAACA,2BAAAA,IAAA,UAAA,EAAS,YACA,WACA,UACA,oBACA,SAAU+J,CAAa,aAAA;AACLY,sBAAAA,gBAAgBZ,WAAW,8CAA8C7M,MAAS;AAAA,MACpG,GACA,SAASyM,UACH,MAAMA,UACHiC,KAAKoG,CAAAA,QAAOA,IAAIzP,IAAI0P,CAAShW,UAAAA,OAAOnB,MAAMwC,OAAM2U,MAAAA,OAAOhW,OAAOnB,EAAE,CAAC,EAAEwD,OAAOyC,OAAO,CAAC,IACrF7D,QACN,gBAAA,CAAiC,EAC/C,CAAA;AAAA,MAEC8C,+BAAA,OAAA,EAAI,WAAW,eAEZ,0CAAC,iBACI,EAAA,UAAA;AAAA,QAAA,CAACoR,eACEpR,2BAAAA,IAAC,0BAAyB,EAAA,UACA,WAAyB,CAAA;AAAA,QACtDoR,eACIpR,2BAAA,IAAA,yBAAA,EAAwB,SAAqB,CAAA;AAAA,MAAA,EAAA,CACtD,EAEJ,CAAA;AAAA,MAEC,CAACoR,eAAgBpR,2BAAAA,IAAA,OAAA,EAAI,WAAW,eAE7B,UAAAA,2BAAA,IAAC4F,GACG,QAAA,EAAA,UACA,UAAU,gBACV,WAAW,MACX,eAAe,CAAC/E,YAAkB;AAC9B3E,sBAAc,gBAAgB2E,OAAK;AAAA,MAAA,GAEvC,MAAM,SACN,OAAO,iBACP,OAAO2Q,gBAAgB,IACtBnI,UACI/K,WAAAA,OAAQuL,CAAc9I,cAAAA,QAAQ8I,WAAW/O,EAAE,CAAC,EAC5CyH,IAAKsH,CACF,gBAAA7J,2BAAAA,IAACsG,GAAAA,YACW,EAAA,OAAOuD,YAAU/O,IAAIoX,SAC5BrI,GAAAA,UAAAA,YAAUC,MAFED,GAAAA,YAAU/O,EAG3B,CACH,GACT,EAEJ,CAAA;AAAA,IAAA,GACJ;AAAA,EAER;AClGA,QAAMqX,YAAoC;AAAA,IACtC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,UAAU;AAAA,EACd;AAEO,WAAAC,qBAAA7W,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,GAAA;AAA8B,UAAA;AAAA,MAAA4W;AAAAA,MAAAC;AAAAA,MAAA7I;AAAAA,IAAAA,IAAAlO;AAUjC,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAGIO,iBAAU;AAEd8V,UAAAA,kBAAwBF,WAAW,eAAe;AAClDG,UAAAA,gBAAsB,GAAGD,eAAe;AAGxCE,UAAAA,WAAiB,GAAGF,eAAe;AACnCG,UAAAA,UAAgB,GAAGH,eAAe;AAClCI,UAAAA,cAAoB,GAAGJ,eAAe;AACtCK,UAAAA,WAAiB,GAAGL,eAAe;AAAYvV,QAAAA;AAAA,QAAAxB,EAAAiX,CAAAA,MAAAA,YAAAjX,SAAAS,QAAA;AAEzBqB,WAAAA,OAAAA,MAAMrB,QAAQwW,QAAQ,KAAK;AAAejX,aAAAiX;AAAAjX,aAAAS;AAAAT,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAhE,UAAAqX,gBAAsB7V;AAA2CI,QAAAA;AAAA,QAAA5B,EAAAmX,CAAAA,MAAAA,eAAAnX,SAAAS,QAAA;AACxCqB,WAAAA,OAAAA,MAAMrB,QAAQ0W,WAAW,KAAK;AAAGnX,aAAAmX;AAAAnX,aAAAS;AAAAT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAA1D,UAAAsX,mBAAyB1V;AAAkCiC,QAAAA;AAAA0T,QAAAA;AAAAtT,QAAAA;AAAAC,QAAAA;AAAAC,QAAAA;AAAAE,QAAAA;AAAAC,QAAAA;AAAAlC,QAAAA;AAAAC,QAAAA;AAAAK,QAAAA;AAAAO,QAAAA;AAAAW,QAAAA;AAAAG,QAAAA;AAAAC,QAAAA;AAAA,QAAAhE,EAAAgX,CAAAA,MAAAA,iBAAAhX,EAAA,CAAA,MAAAiO,YAAAjO,SAAA8W,YAAA9W,EAAAiX,CAAAA,MAAAA,YAAAjX,EAAA,EAAA,MAAAqX,iBAAArX,EAAAkX,EAAAA,MAAAA,WAAAlX,EAAA,EAAA,MAAAU,iBAAAV,UAAAmX,eAAAnX,EAAAsX,EAAAA,MAAAA,oBAAAtX,EAAA,EAAA,MAAAoX,YAAApX,UAAAS,QAAA;AAC3D+W,YAAAA,eAAqB1V,OAAAA,MAAMrB,QAAQyW,OAAO;AAAE3S,UAAAA;AAAA,UAAAvE,EAAAgX,EAAAA,MAAAA,iBAAAhX,UAAAS,QAAA;AAExB8D,eAAAzC,OAAAA,MAAMrB,QAAQuW,aAAa;AAAChX,gBAAAgX;AAAAhX,gBAAAS;AAAAT,gBAAAuE;AAAAA,MAAAA,OAAA;AAAAA,eAAAvE,EAAA,EAAA;AAAA,MAAA;AAAhD,YAAAyX,cAAoBlT;AACpB,YAAAmT,iBAA6CjH,MAAAkH,QAAcF,WAAW,IAAIA,cAAW/V;AACrF,YAAAkW,uBAA6B,CAACF,kBAAkBA,eAAc5Q,WAAa;AAACnC,UAAAA;AAAA,UAAA3E,EAAAgX,EAAAA,MAAAA,iBAAAhX,UAAAU,eAAA;AAElDiE,eAAAU,CAAA,UAAA;AAAA,cAAA,CACjBA,OAAK;AAAE3E,0BAAcsW,eAAatV,MAAW;AAAA,UAAA,OAAC;AAK9ChB,0BAAcsW,eAAe3R,KAAK;AAAA,UAAA;AAAA,QAAC;AAC3CrF,gBAAAgX;AAAAhX,gBAAAU;AAAAV,gBAAA2E;AAAAA,MAAAA,OAAA;AAAAA,eAAA3E,EAAA,EAAA;AAAA,MAAA;AAPD,YAAA6X,oBAA0BlT;AAS1BmT,YAAAA,sBAA4B,OAAOT,kBAAkB;AACrDU,YAAAA,yBAA+B,OAAOT,qBAAqB;AAKtB,YAAA;AAExBpL,WAAAA,GAAAA;AAAe,UAAAlM,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAER,cAAA2B,2BAAA,KAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,UAAAN,2BAAA,IAACwT,GACD,iBAAA,EAAA;AAAA,yCAAC5T,GAAAA,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,qBAAA,CAAA;AAAA,QAAA,GACJ;AAAMpE,gBAAAqE;AAAAA,MAAAA,OAAA;AAAAA,cAAArE,EAAA,EAAA;AAAA,MAAA;AAGmC,WAAA;AAAA4E,UAAAA;AAAA5E,UAAAA,UAAA0X,gBAAA;AAS1B9S,eAAA8S,kBAAoB,CAAA;AAAA1X,gBAAA0X;AAAA1X,gBAAA4E;AAAAA,MAAAA,OAAA;AAAAA,eAAA5E,EAAA,EAAA;AAAA,MAAA;AAEpB+E,YAAAA,OAAA6S,uBAAoBlW,SAAe;AAAoBsD,UAAAA;AAAA,UAAAhF,EAAAgX,EAAAA,MAAAA,iBAAAhX,UAAAU,eAAA;AAQ7DsE,eAAAwJ,OAAAyJ,QAAAtB,SAAwB,EAAC5P,IAAA9B,CAAAA,SAAA;AAAM,gBAAA,CAAA+H,SAAAsB,KAAA,IAAArJ;AAAc,iBACzCH,2BAAAA,KAAAoT,GAAAA,iBAAA,EAAmC7S,OAAI,SAAc,WAAA,2BAGlD,UAAA;AAAA,YAAAb,2BAAA,IAAA,OAAA,EAAgB,WAAA,uBAEhB,OAAA;AAAA,2CACC8M,GAAAA,QAAa,EAAA,MAAA,SACG,SAAA,QACA,SAAAnM,CAAA,MAAA;AACLA,gBAACgT,eAAgB;AACjBhT,gBAACiT,gBAAiB;AAAC,qBACZ1X,cAAcsW,eAAgB3R,CAAAA,OAAK,CAAC;AAAA,YAAA,GAC5C,UAEX,OAAA,CAAA;AAAA,UAAA,EAAA,GAdkBA,OAetB;AAAA,QAAA,CACH;AAACrF,gBAAAgX;AAAAhX,gBAAAU;AAAAV,gBAAAgF;AAAAA,MAAAA,OAAA;AAAAA,eAAAhF,EAAA,EAAA;AAAA,MAAA;AAAAA,UAAAA,UAAAgX,iBAAAhX,EAAAiO,EAAAA,MAAAA,YAAAjO,EAAA6X,EAAAA,MAAAA,qBAAA7X,EAAA,EAAA,MAAA4E,QAAA5E,UAAA+E,QAAA/E,EAAA,EAAA,MAAAgF,MAAA;AAlCV,cAAAR,2BAAAA,IAAA,SAAgB,WAAA,eAEZ,yCAAC6T,GACc,aAAA,EAAA,WAAA,UACE,aAAA,0BACHpK,UACJ+I,MAAY,eACX,OAAApS,MACQiT,eAAgB,mBACxB,OAAA9S,MACO,cAAAiG,UAObhG,UAAAA,KAAAA,CAmBL,EACJ,CAAA;AAAMhF,gBAAAgX;AAAAhX,gBAAAiO;AAAAjO,gBAAA6X;AAAA7X,gBAAA4E;AAAA5E,gBAAA+E;AAAA/E,gBAAAgF;AAAAhF,gBAAAiE;AAAAA,MAAAA,OAAA;AAAAA,cAAAjE,EAAA,EAAA;AAAA,MAAA;AAOe,YAAAiF,OAAA6S,uBAAuB7J;AAC1B/I,YAAAA,OAAA4S,sBAAsB,MAAMT;AAAarX,UAAAA,EAAAiX,EAAAA,MAAAA,YAAAjX,UAAAiF,QAAAjF,EAAA,EAAA,MAAAkF,MAAA;AAN3DhB,oDAAgB,EAAA,WAAA,eACZ,UAACM,+BAAA6B,OAAAA,OAAA,EAAY4Q,gBACF3Q,IAAAA,GAAAA,oBACG,OAAA,aACD,MAAA,SACI,UAAArB,MACH,OAAAC,KAAyC,CAAA,GAE3D;AAAMlF,gBAAAiX;AAAAjX,gBAAAiF;AAAAjF,gBAAAkF;AAAAlF,gBAAAkE;AAAAA,MAAAA,OAAA;AAAAA,cAAAlE,EAAA,EAAA;AAAA,MAAA;AAKe,YAAAsF,OAAAyS,0BAA0B9J;AAE7BzI,YAAAA,OAAAuS,yBAAyB,MAAMT;AAAgB5R,UAAAA;AAAA1F,UAAAA,EAAAmX,EAAAA,MAAAA,eAAAnX,UAAAsF,QAAAtF,EAAA,EAAA,MAAAwF,MAAA;AAL7DE,eAAClB,2BAAA,IAAA6B,OAAY8Q,OAAAA,EAAAA,MAAU,aACZ7Q,IAAAA,GAAAA,oBACG,OAAA,gBACG,UAAAhB,MACJ,MAAA,SACC,OAAAE,MACZ;AAAAxF,gBAAAmX;AAAAnX,gBAAAsF;AAAAtF,gBAAAwF;AAAAxF,gBAAA0F;AAAAA,MAAAA,OAAA;AAAAA,eAAA1F,EAAA,EAAA;AAAA,MAAA;AAAA2F,UAAAA;AAAA,UAAA3F,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACFwC,cAACb,2BAAAA,KAAAV,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBACvC,UAAA;AAAA,UAAAI,2BAAAA,IAAA,OAAG,UAEyB,mFAAA,CAAA;AAAA,0CASvB,MAPD,EAAA,UAAA;AAAA,YAAAA,2BAAAA,IAAoD,QAAP,UAAE,0CAAA,CAAA;AAAA,YAC/CA,2BAAAA,IAAsE,kBAAL,4DAAA,CAAA;AAAA,YACjEA,2BAAAA,YAAK,UAA8C,8CAAA,CAAA;AAAA,YACnDA,2BAAAA,IAA0C,kBAAL,gCAAA,CAAA;AAAA,YACrCA,2BAAAA,YAAK,UAAmC,mCAAA,CAAA;AAAA,YACxCA,2BAAAA,IAAA,QAAK,UAA+B,+BAAA,CAAA;AAAA,YACpCA,2BAAAA,IAAA,QAAyD,UAAE,sDAAA,CAAA;AAAA,UAAA,EAC/D,CAAA;AAAA,QAAA,GACJ;AAAaxE,gBAAA2F;AAAAA,MAAAA,OAAA;AAAAA,cAAA3F,EAAA,EAAA;AAAA,MAAA;AAAA4F,UAAAA;AAAA,UAAA5F,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA8W,UAAA;AAIRlR,cAAAE,CAAAA,SAAA;AAAC,gBAAA;AAAA,YAAAwN;AAAAA,YAAAC;AAAAA,UAAAA,IAAAzN;AAIS,iBAAAtB,+BAAC,iBACG,OAAA,oCACG,UAAAsS,YAAY7I,UAChBsF,MACCD,OAAQ;AAAA,QAAA;AACtBtT,gBAAAiO;AAAAjO,gBAAA8W;AAAA9W,gBAAA4F;AAAAA,MAAAA,OAAA;AAAAA,cAAA5F,EAAA,EAAA;AAAA,MAAA;AAAA8F,UAAAA;AAAA,UAAA9F,EAAAoX,EAAAA,MAAAA,YAAApX,UAAA4F,KAAA;AAXLE,6CAACO,OAAY+Q,OAAAA,EAAAA,gBACD,MAAA,YACPxR,UAUL,KAAA;AAAQ5F,gBAAAoX;AAAApX,gBAAA4F;AAAA5F,gBAAA8F;AAAAA,MAAAA,OAAA;AAAAA,cAAA9F,EAAA,EAAA;AAAA,MAAA;AAAA+F,UAAAA;AAAA,UAAA/F,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAER4C,6CAAC3B,GAAoB,YAAA,EAAA,SAAA,WAAsB,WAAA,oBAAoB,UAM/D,+JAAA;AAAapE,gBAAA+F;AAAAA,MAAAA,OAAA;AAAAA,cAAA/F,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,EAAA0F,EAAAA,MAAAA,QAAA1F,UAAA8F,KAAA;qDA3CD,EAAA,WAAA,eACZJ,UAAAA;AAAAA,UAAAA;AAAAA,UAOAC;AAAAA,UAeAG;AAAAA,UAcAC;AAAAA,QAAAA,GAOJ;AAAM/F,gBAAA0F;AAAA1F,gBAAA8F;AAAA9F,gBAAAmE;AAAAA,MAAAA,OAAA;AAAAA,cAAAnE,EAAA,EAAA;AAAA,MAAA;AAEuB,WAAA;AACxBsG,WAAAA,GAAAA;AAAyB4Q,WAAAA;AACQ,WAAA;AACc,WAAA;AACf,WAAA;AACNtT,WAAA4T,iBAAY9V,UAAkB8V,iBAAY,OAAYA,aAAYd,aAAc;AAAE1W,aAAAgX;AAAAhX,aAAAiO;AAAAjO,aAAA8W;AAAA9W,aAAAiX;AAAAjX,cAAAqX;AAAArX,cAAAkX;AAAAlX,cAAAU;AAAAV,cAAAmX;AAAAnX,cAAAsX;AAAAtX,cAAAoX;AAAApX,cAAAS;AAAAT,cAAA6D;AAAA7D,cAAAuX;AAAAvX,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAAsE;AAAAtE,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAH,WAAA7D,EAAA,EAAA;AAAAuX,WAAAvX,EAAA,EAAA;AAAAiE,YAAAjE,EAAA,EAAA;AAAAkE,YAAAlE,EAAA,EAAA;AAAAmE,YAAAnE,EAAA,EAAA;AAAAqE,YAAArE,EAAA,EAAA;AAAAsE,YAAAtE,EAAA,EAAA;AAAAoC,WAAApC,EAAA,EAAA;AAAAqC,WAAArC,EAAA,EAAA;AAAA0C,WAAA1C,EAAA,EAAA;AAAAiD,WAAAjD,EAAA,EAAA;AAAA4D,WAAA5D,EAAA,EAAA;AAAA+D,WAAA/D,EAAA,EAAA;AAAAgE,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAA,QAAAvE,EAAAkX,EAAAA,MAAAA,WAAAlX,UAAAU,eAAA;AAC/E6D,YAAAwD,CAAA,QAAA;AACN+E,cAAAA,UAAc3H,IAACC,OAAAC;AAAc,YACzBA,YAAU,IAAE;AAAE3E,wBAAcwW,SAAOxV,MAAW;AAAA,QAAA,OAAC;AAChCwV,wBAAAA,SAASoB,SAASjT,OAAK,CAAC;AAAA,QAAA;AAAA,MAAC;AAC/CrF,cAAAkX;AAAAlX,cAAAU;AAAAV,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA3E,QAAAA,EAAA6D,EAAAA,MAAAA,MAAA7D,EAAAuE,EAAAA,MAAAA,OAAAvE,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,MAAA1C,EAAA,EAAA,MAAAiD,MAAAjD,EAAA,EAAA,MAAA4D,IAAA;AATrBe,YAACH,2BAAA,IAAA,IAAA,EAAyB0S,UACA,MAAA7U,IACC,OAAAK,IACD,MAAAO,IACC,OAAAW,IACG,UAAAW,KAK5B;AAAAvE,cAAA6D;AAAA7D,cAAAuE;AAAAvE,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA,QAAA5E,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAA+D,IAAA;AAXNa,YAYMJ,2BAAA,IAAA,OAAA,EAZU,WAAAT,IACZY,UAWJ,KAAA;AAAM3E,cAAA2E;AAAA3E,cAAA+D;AAAA/D,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAAiE,EAAAA,MAAAA,OAAAjE,EAAA,EAAA,MAAAkE,OAAAlE,EAAAmE,EAAAA,MAAAA,OAAAnE,EAAA,EAAA,MAAA4E,OAAA5E,UAAAgE,IAAA;AA5GV,YAAAc,2BAAA,KAAA,OAAgB,EAAA,WAAAd,IAEZC,UAAAA;AAAAA,QAAAA;AAAAA,QAuCAC;AAAAA,QASAC;AAAAA,QA8CAS;AAAAA,MAAAA,GAcJ;AAAM5E,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAA4E;AAAA5E,cAAAgE;AAAAhE,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAAhF,QAAAA,EAAAuX,EAAAA,MAAAA,MAAAvX,UAAAqE,OAAArE,EAAA,EAAA,MAAA+E,KAAA;AAzHVC,YAACR,2BAAA,IAAA,IAAA,EAEO,OAAAH,KASJU,UA+GJ,KAAA;AAAkB/E,cAAAuX;AAAAvX,cAAAqE;AAAArE,cAAA+E;AAAA/E,cAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAA,QAAAjF,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAgF,KAAA;AA5HtBC,YA8HMT,2BAAA,IAAA,OAAA,EA9HU,WAAAF,KAEZU,UA4HJ,KAAA;AAAMhF,cAAAsE;AAAAtE,cAAAgF;AAAAhF,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AAAAkF,QAAAA;AAAA,QAAAlF,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA6W,UAAA;aAKIA,oDAA4B,WAAA,2BAC1B,UAAArS,2BAAAA,IAAC,2BAAoCyJ,EAAAA,SAAAA,CAAQ,EACjD,CAAA;AAAMjO,cAAAiO;AAAAjO,cAAA6W;AAAA7W,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAAsF,QAAAA;AAAA,QAAAtF,EAAAiO,EAAAA,MAAAA,YAAAjO,WAAA6W,UAAA;AACLA,YAAAA,kDAA4B,EAAA,WAAA,eACzB,UAACrS,2BAAA,IAAA,yBAAA,EAAkCyJ,UAAQ,EAC/C,CAAA;AAAMjO,cAAAiO;AAAAjO,eAAA6W;AAAA7W,eAAAsF;AAAAA,IAAAA,OAAA;AAAAA,YAAAtF,EAAA,GAAA;AAAA,IAAA;AAAAwF,QAAAA;AAAA,QAAAxF,EAAAkF,GAAAA,MAAAA,OAAAlF,WAAAsF,KAAA;AARdE,oDAAgB,WAAA,eAEZ,0CAAC,iBACIN,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAGAI;AAAAA,MAAAA,EAAAA,CAGL,EAEJ,CAAA;AAAMtF,eAAAkF;AAAAlF,eAAAsF;AAAAtF,eAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,GAAA;AAAA,IAAA;AAAA0F,QAAAA;AAAA,QAAA1F,EAAAiF,GAAAA,MAAAA,OAAAjF,WAAAwF,KAAA;AA7IVE,YAEIT,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAgIAO;AAAAA,MAAAA,GAWM;AACPxF,eAAAiF;AAAAjF,eAAAwF;AAAAxF,eAAA0F;AAAAA,IAAAA,OAAA;AAAAA,YAAA1F,EAAA,GAAA;AAAA,IAAA;AA9IH0F,WAAAA;AAAAA,EA8IG;AA3LJ,WAAAsF,SAAAuN,UAAA;AAAA,QAyEiC,CAACA,YAAYA,SAAQzR,WAAa,GAAA;AAAS,aAAA;AAAA,IAAA;AACxCyR,WAAAA,SAAQxR,IAAAsD,OAAgC,EAACvH,OAAAoH,QACX,EAACsO,KAC5B,IAAI;AAAA,EAAC;AA5E5C,WAAAtO,SAAAgB,KAAA;AAAA,WA2EwD3F,QAAQiF,GAAC;AAAA,EAAC;AA3ElE,WAAAH,QAAAG,GAAA;AAAA,WAAAmM,UA0E0EnM,CAAC;AAAA,EAAA;ACjG3E,WAASiO,iBAAiBC,UAA0D;AACnFC,QAAAA,KAAAA,kBAAkBD,QAAQ,EACnB,QAAA;AACPC,QAAAA,KAAAA,kBAAkBD,QAA6B,EACxC,QAAA;AAAA,SACN;AACD,YAAME,YAAYF;AAClB,UAAIE,UAAUC,aAAa,WAAW,OAAOD,UAAUE,OAAO,WACnD,QAAA;AAAA,eACFF,UAAUC,aAAa,WAAWpI,MAAMkH,QAAQiB,UAAUE,EAAE,EAC1D,QAAA;AACJvT,aAAAA,QAAQqT,UAAUG,QAAQ;AAAA,IAAA;AAAA,EAEzC;AAEO,WAASC,4BAA4BC,YAAmD;AAC3F,WAAOzK,OAAOyJ,QAAQgB,UAAU,EAC3BnW,OAAO,CAAC,CAACoW,GAAGR,QAAQ,MAAMD,iBAAiBC,QAAQ,CAAC,EACpD3R,IAAI,CAAC,CAACoS,KAAKC,iBAAiB,MAAM;AAC/B,YAAMV,WAAWU;AACb,UAAA,CAACX,iBAAiBC,QAAQ,GAAG;AACtBhX,eAAAA;AAAAA,MACAgX,WAAAA,SAASG,aAAa,SAASH,SAASO,YAAY;AACpD,eAAA;AAAA,UACH,CAACE,GAAG,GAAG;AAAA,YACH,GAAGT;AAAAA,YACHO,YAAYD,4BAA4BN,SAASO,UAAkC;AAAA,UAAA;AAAA,QAE3F;AAAA,MAAA,OACG;AACI,eAAA;AAAA,UAAE,CAACE,GAAG,GAAGT;AAAAA,QAAS;AAAA,MAAA;AAAA,IAC7B,CACH,EACA5V,OAAQqC,CAAMI,MAAAA,QAAQJ,CAAC,CAAC,EACxBkU,OAAO,CAACC,GAAGC,OAAO;AAAA,MAAE,GAAGD;AAAAA,MAAG,GAAGC;AAAAA,IAAE,IAAI,CAAA,CAAE;AAAA,EAC9C;ACfO,WAAAC,qBAAAzZ,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA8B,UAAA;AAAA,MAAAyY;AAAAA,MAAAe;AAAAA,MAAAlL;AAAAA,MAAAmL;AAAAA,MAAAC;AAAAA,MAAApB;AAAAA,IAAAA,IAAAxY;AAgBjC,UAAA;AAAA,MAAA6Z;AAAAA,QAA4BC,gCAA2B;AAAErY,QAAAA;AAAA,QAAAxB,EAAA0Y,CAAAA,MAAAA,YAAA1Y,SAAA4Z,iBAAA;AAElCE,WAAAA,KAAAA,eAAepB,UAAUkB,eAAe;AAAC5Z,aAAA0Y;AAAA1Y,aAAA4Z;AAAA5Z,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAhE,UAAA+Z,iBAAuBvY;AACLiX,qBAAiBC,QAAQ;AAE3C,UAAAsB,mBAAyBzL,WACnB,qGACCgK,WAAW,mBAAmB;AAAsB3W,QAAAA;AAAA5B,QAAAA,SAAA+Z,gBAAA;AAMnDnY,0CAEM,OAFU,EAAA,WAAA,OACZ,UAAC4C,2BAAAA,IAAAyV,KAAA,qBAAA,EAAoCF,gBAAc,EACvD,CAAA;AAAM/Z,aAAA+Z;AAAA/Z,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAMEoC,UAAAA,KAAAqX,UAAOS,GAAAA,qBAAwB;AAC/B7X,UAAAA,KAAAkW,WAAQ4B,GAAAA,oBAAuB;AAAEzX,QAAAA;AAAA1C,QAAAA,EAAAga,CAAAA,MAAAA,oBAAAha,SAAAoC,MAAApC,EAAA,CAAA,MAAAqC,IAAA;AAL1BK,WAAAuD,GAAAA,IACP,UACA,gDAA8CmU,cAE9ChY,IACAC,IACA,uDACA2X,gBACJ;AAACha,aAAAga;AAAAha,aAAAoC;AAAApC,aAAAqC;AAAArC,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,SAAA0Z,eAAA1Z,EAAA0Y,EAAAA,MAAAA,SAAAjZ,MAAA;AAKIwD,WAAAyW,eACIlV,2BAAA,IAAA6V,oBAAA,EACG,UAAC7V,2BAAAA,IAAAJ,GAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACA,WAAA,kBACjBsU,UAAQjZ,SAAAA,OACHiZ,SAAQjZ,OACR,IAEV,CAAA,GACJ;AAAgBO,aAAA0Z;AAAA,QAAA,EAAA,IAAAhB,SAAAjZ;AAAAO,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAKS4D,UAAAA,KAAA8V,cAAc,UAAU;AAGxC,UAAA3V,KAAAgW,gBAActa;AAAMuE,QAAAA;AAAA,QAAAhE,EAAA4D,EAAAA,MAAAA,MAAA5D,UAAA+D,IAAA;AAL7BC,WAACQ,2BAAAA,IAAA6V,KAAAA,eAAA,EACG,UAAC7V,2BAAAA,IAAAJ,GAAA,YAAA,EAAqB,WAAA,kBACD,SAAAR,IACC,WAAA,QACJ,OAAA,aACbG,aACL,CAAA,GACJ;AAAgB/D,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAA,EAAA,MAAA0Y,SAAAG,UAAA;AAChB5U,YAACO,2BAAA,IAAA6V,oBAAA,EACG,UAAC7V,+BAAAJ,GAAAA,YAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YACbsU,UAAQG,SAAAA,SACb,CAAA,GACJ;AAAgB,QAAA,EAAA,IAAAH,SAAAG;AAAA7Y,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAgE,IAAA;AAEd,YAAAc,2BAAA,KAAA,OAjBS,EAAA,WAAA,8BACXd,UAAAA;AAAAA,QAAAA;AAAAA,QAQAC;AAAAA,MAAAA,GAQJ;AAAMjE,cAAAiE;AAAAjE,cAAAgE;AAAAhE,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAA,QAAAnE,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAAiD,IAAA;AACJ,YAAA6B,2BAAA,KAAA,OAhCS,EAAA,WAAA,wBAEV7B,UAAAA;AAAAA,QAAAA;AAAAA,QAYDiB;AAAAA,MAAAA,GAkBJ;AAAMlE,cAAAkE;AAAAlE,cAAAiD;AAAAjD,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAArE,QAAAA,UAAA2Z,mBAAA;AAELtV,YAAAsV,qBAAqBnV,2BAAAA,IAACJ,GAAoB,YAAA,EAAA,SAAA,UAAU,UAErD,QAAA;AAAapE,cAAA2Z;AAAA3Z,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAAtE,QAAAA,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAAqE,OAAArE,EAAA,EAAA,MAAA0C,IAAA;4CAhDhBgP,GACc,OAAA,EAAA,WAAAhP,IAWXyB,UAAAA;AAAAA,QAAAA;AAAAA,QAkCCE;AAAAA,MAAAA,GAIL;AAAQrE,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAA0C;AAAA1C,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,EAAAyZ,EAAAA,MAAAA,WAAAzZ,UAAAsE,OAAAtE,EAAA,EAAA,MAAA4B,IAAA;AAzDT2C,2CAAC8V,oBACJ,EAAA,UAAAvV,2BAAAA,KAyDM,OAxDO2U,EAAAA,SACC,WAAA,uCACV7X,UAAAA;AAAAA,QAAAA;AAAAA,QAGA0C;AAAAA,MAAAA,EAAAA,CAmDJ,EACJ,CAAA;AAAgBtE,cAAAyZ;AAAAzZ,cAAAsE;AAAAtE,cAAA4B;AAAA5B,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AA3DTuE,WAAAA;AAAAA,EA2DS;AAGb,WAAA+V,2BAAAva,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAoC,UAAA;AAAA,MAAAR;AAAAA,MAAA8Y;AAAAA,MAAAkB;AAAAA,MAAAf;AAAAA,IAAAA,IAAA3Y;AAYvC,UAAA;AAAA,MAAA6Z;AAAAA,QAA4BC,gCAA2B;AAAErY,QAAAA;AAAA,QAAAxB,EAAA0Y,CAAAA,MAAAA,YAAA1Y,SAAA4Z,iBAAA;AAEjCjB,WAAAA,CAAAA,uBAAkBD,QAAQ,KAAKA,WAAWoB,KAAAA,eAAepB,UAAUkB,eAAe,IAAClY;AAAY1B,aAAA0Y;AAAA1Y,aAAA4Z;AAAA5Z,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAvH,UAAA+Z,iBAAuBvY;AAAiGI,QAAAA;AAAA5B,QAAAA,SAAA+Z,gBAAA;AAO3GA,WAAAA,kBAAmBvV,2BAAAA,IAAAyV,KAAAA,qBAAA,EAAoCF,eAAiB,CAAA;AAAA/Z,aAAA+Z;AAAA/Z,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,SAAA+Z,gBAAA;AACxE3X,WAAA,CAAC2X,kBAAkBvV,2BAAAA,IAAA,OAAA,EACL,WAAA,6DACX,UAACA,2BAAAA,IAAA+V,GAAAA,eAAA,EAAqB,OAAA,WAAiB,MAAA,SAC3C,CAAA,GAAA;AAAMva,aAAA+Z;AAAA/Z,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACNd,0CAACmY,GAA0B,oBAAA,EAAA,OAAA,YAAkB,MAAA,SAAoB,WAAA,4BAA6B;AAAAxa,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA4B,CAAAA,MAAAA,MAAA5B,SAAAoC,IAAA;kDANlF,EAAA,WAAA,gBACXR,UAAAA;AAAAA,QAAAA;AAAAA,QACAQ;AAAAA,QAIDC;AAAAA,MAAAA,GACJ;AAAMrC,aAAA4B;AAAA5B,aAAAoC;AAAApC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAKEiD,UAAAA,KAAAwW,UAAOS,GAAAA,qBAAwB;AAC/BtW,UAAAA,KAAA2U,WAAQ4B,GAAAA,oBAAuB;AAE/BpW,UAAAA,KAAAwU,WAAW,mBAAmB;AAAoBvU,QAAAA;AAAAhE,QAAAA,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,MAAA5D,EAAA,EAAA,MAAA+D,IAAA;AAN3CC,WAAAiC,OACP,gDAA8CmU,GAAAA,WAE9CnX,IACAW,IACA,uDACAG,EAAkD;AAAC/D,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAO9C,UAAAiE,MAAAyU,UAAQjZ,OACHiZ,SAAQjZ,OACRA;AAAIyE,QAAAA;AAAAlE,QAAAA,UAAAiE,KAAA;AALd,YAAAO,2BAAA,IAACJ,iBAAmB,SAAA,SACE,WAAA,QACA,WAAA,kBACjBH,UAIL,IAAA,CAAA;AAAajE,cAAAiE;AAAAjE,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAAnE,QAAAA,UAAA+Z,gBAAA;AAGR5V,YAAA4V,kBAAkBvV,2BAAA,IAACJ,GAAqB,YAAA,EAAA,WAAA,kBACD,SAAA,SACC,WAAA,QACJ,OAAA,aAChC2V,UAAAA,gBAActa,MACnB;AAAaO,cAAA+Z;AAAA/Z,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAArE,QAAAA,UAAA0Y,UAAA;AAEZrU,YAAAqU,YAAQ,CAAKC,KAAAA,kBAAkBD,QAAQ,oCAAM2B,oBAC1C,EAAA,UAAA7V,2BAAAA,IAACJ,GAAmB,YAAA,EAAA,SAAA,SACE,WAAA,QACJ,OAAA,YACbsU,UAAAA,SAAQG,SACb,CAAA,GACJ;AAAgB7Y,cAAA0Y;AAAA1Y,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAAtE,QAAAA,UAAA0Y,UAAA;AAEfpU,YAAAoU,YAAYC,KAAAA,kBAAkBD,QAAQ,oCAAM2B,KACzC,eAAA,EAAA,UAAA7V,+BAACJ,GAAAA,YAAmB,EAAA,SAAA,SACE,WAAA,QACJ,OAAA,YAAW,mEAE7B,CAAA,GACJ;AAAgBpE,cAAA0Y;AAAA1Y,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,UAAA0Y,UAAA;AAEfnU,YAAA,CAACmU,YAAalU,2BAAA,IAAA6V,KAAA,eAAA,EACX,UAAC7V,2BAAA,IAAAJ,eAAA,EAAmB,SAAA,SACE,WAAA,QACJ,OAAA,YAAW,iEAE7B,CAAA,GACJ;AAAgBpE,cAAA0Y;AAAA1Y,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA,QAAA3E,EAAA,EAAA,MAAAmE,OAAAnE,EAAAqE,EAAAA,MAAAA,OAAArE,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAuE,KAAA;mDA9BL,EAAA,WAAA,8BACVJ,UAAAA;AAAAA,QAAAA;AAAAA,QAOAE;AAAAA,QAQAC;AAAAA,QAQAC;AAAAA,MAAAA,GAQL;AAAMvE,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAAsE;AAAAtE,cAAAuE;AAAAvE,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA,QAAA5E,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAA2E,KAAA;AAUJ,YAAAG,2BAAA,KAAA,OApDS,EAAA,WAAA,wBACXZ,UAAAA;AAAAA,QAAAA;AAAAA,QASAS;AAAAA,MAAAA,GA0CJ;AAAM3E,cAAAkE;AAAAlE,cAAA2E;AAAA3E,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAA4E,EAAAA,MAAAA,OAAA5E,UAAAgE,IAAA;AA9DVe,YAACP,2BAAA,IAAAkN,UAAA,EACc,WAAA1N,IASXY,UAsDJ,KAAA;AAAQ5E,cAAA4E;AAAA5E,cAAAgE;AAAAhE,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAAhF,QAAAA,EAAAyZ,EAAAA,MAAAA,WAAAzZ,UAAA+E,OAAA/E,EAAA,EAAA,MAAA0C,IAAA;AA3EZsC,qDACayU,SACC,WAAA,uCACV/W,UAAAA;AAAAA,QAAAA;AAAAA,QAQAqC;AAAAA,MAAAA,GAiEJ;AAAM/E,cAAAyZ;AAAAzZ,cAAA+E;AAAA/E,cAAA0C;AAAA1C,cAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,EAAA;AAAA,IAAA;AA5ENgF,WAAAA;AAAAA,EA4EM;ACzLP,QAAMyV,eAAela,MAAMuR,KAC9B,SAAA2I,cAAA1a,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAEG,UAAA;AAAA,MAAAoN;AAAAA,MAAAqN;AAAAA,MAAAC;AAAAA,MAAA1B;AAAAA,MAAA2B,iBAAAC;AAAAA,MAAAC;AAAAA,MAAAja;AAAAA,MAAAka;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAApb;AA0BFyB,QAAAA;AAAA,QAAAxB,EAAAiZ,CAAAA,MAAAA,cAAAjZ,SAAA6a,qBAAA;AAE2BA,WAAAA,uBAAuBrM,OAAAC,KAAYwK,UAAU;AAACjZ,aAAAiZ;AAAAjZ,aAAA6a;AAAA7a,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAtE,UAAA4a,kBAAwBpZ;AAA+CI,QAAAA;AAAA5B,QAAAA,EAAAqN,CAAAA,MAAAA,aAAArN,SAAA+a,kBAAA/a,EAAA,CAAA,MAAA4a,iBAAA;AAErDhZ,WAAAwZ,CAAA,WAAA;AAETA,YAAAA,CAAAA,OAAMC,aAAA;AAAA;AAAA,QAAA;AAGXC,cAAAA,aAAmBF,OAAMG,OAAAtU;AACzBuU,cAAAA,WAAiBJ,OAAMC,YAAApU;AAEvBwU,cAAAA,qBAA2BhL,MAAAC,KAAWkK,eAAe;AACrD,cAAAc,CAAAA,OAAA,IAAkBD,mBAAkBE,OAAQL,aAAa;AACvCK,2BAAAA,OAAQH,UAAQ,GAAKE,OAAO;AAAC,YAC3CX,gBAAc;AACdA,yBAAeU,oBAAoBpO,SAAS;AAAA,QAAA;AAAA,MAAC;AACpDrN,aAAAqN;AAAArN,aAAA+a;AAAA/a,aAAA4a;AAAA5a,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAbD,UAAA4b,YAAkBha;AAmBkBQ,UAAAA,KAAaiL,aAAAA,SAAS;AAAEhL,QAAAA;AAAArC,QAAAA,SAAA8a,oBAAA9a,EAAAib,CAAAA,MAAAA,aAAAjb,EAAA,CAAA,MAAAmb,sBAAAnb,UAAAa,UAAAb,EAAAkb,EAAAA,MAAAA,wBAAAlb,EAAAqN,EAAAA,MAAAA,aAAArN,EAAA,EAAA,MAAA2a,mBAAA3a,UAAA+a,kBAAA/a,EAAAgb,EAAAA,MAAAA,oBAAAhb,EAAA,EAAA,MAAAiZ,cAAAjZ,UAAA4a,mBAAA5a,EAAA,EAAA,MAAA0a,qBAAA;AAC3CrY,WAAAA,CAAAwZ,mBAAAC,sBACGhX,2BAAA,KAAA,OAAA,EACQ+W,GAAAA,kBAAiBE,gBAChB,KAAAF,kBAAiBG,UACXf,WACVL,UAAAA;AAAAA,QAAAA,mBAAmBA,gBAAe7T,IAAAyG,CAAAA,aAAAvG,UAAA;AAE3ByR,gBAAAA,WAAiBO,WAAWzL,WAAW;AACvC,gBAAAyO,kBAAwBnB,kBAAgBoB,KAAA5I,CAAgBA,UAAAA,MAAK6F,QAAS3L,WAAW;AAE7E,cAAA,CAACkL,YAAQ,CAAKuD,iBAAe;AAC7BE,oBAAAA,KAAa,YAAY3O,WAAW,8CAA8C;AAAC,mBAAA;AAAA,UAAA;AAAA,gDAIlF4O,IAAAA,WAEgB,EAAA,aAAA,eAAe/O,SAAS,IAAIG,WAAW,KAC7CvG,OACN,UAAA,CAAAoV,UAAAC,aAEO9X,2BAAA,IAAC6V,sBACG,UAAC7V,2BAAAA,IAAA,mBAAA,EACgB,aACMkU,mBAAAA,UACFuD,iBACPI,UACFxb,QACGwM,WACW6N,sBACNH,gBACEC,kBACD,iBAAAsB,SAAQC,aAAA7a,SAA0BiZ,iBAC9BD,qBACDS,oBAAkB,EAE9C,CAAA,oBApBY9N,SAAS,IAAIG,WAAW,GAuBhD;AAAA,QAAA,CACP,EAAC1K,OAAAyC,OAAe;AAAA,QAEpBsW,kBAAiBW;AAAAA,MAAAA,GAEtB;AACHxc,aAAA8a;AAAA9a,aAAAib;AAAAjb,aAAAmb;AAAAnb,cAAAa;AAAAb,cAAAkb;AAAAlb,cAAAqN;AAAArN,cAAA2a;AAAA3a,cAAA+a;AAAA/a,cAAAgb;AAAAhb,cAAAiZ;AAAAjZ,cAAA4a;AAAA5a,cAAA0a;AAAA1a,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,IAAA;AA9CLK,WAAC8B,2BAAA,IAAAiY,eAAA,EAAuB,aAAAra,IACnBC,UA8CL,IAAA;AAAYrC,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAA4b,EAAAA,MAAAA,aAAA5b,UAAA0C,IAAA;AAlDpBO,WAEIuB,2BAAA,IAAA+R,qBAAA,EAAA,UAAA/R,2BAAA,IAACkY,qBAA2Bd,EAAAA,WACxBlZ,cAgDJ,EAAkB,CAAA;AAEnB1C,cAAA4b;AAAA5b,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AArDHiD,WAAAA;AAAAA,EAqDG,GAGX,CAACyP,WAAWC,cAAc;AAEtB,UAAMgK,aAAahK,UAAU+H,qBAAqBkC,WAAWjK,UAAUtF,aAAa,EAAE;AACtF,UAAMwP,cAAcnK,UAAUgI,qBAAqBkC,WAAWlK,UAAUrF,aAAa,EAAE;AACnFsP,QAAAA,cAAcE,YACP,QAAA;AAEJjK,WAAAA,MAAMF,UAAUuG,YAAYtG,UAAUsG,UAAU,KACnDvG,UAAUkI,oBAAoBjI,UAAUiI,mBACxChI,MAAMF,UAAUoI,kBAAkBnI,UAAUmI,gBAAgB,KAC5DlI,MAAMF,UAAU7R,QAAQ8R,UAAU9R,MAAM,KACxC+R,MAAMF,UAAUiI,iBAAiBhI,UAAUgI,eAAe;AAAA;AAAA,IAG1DjI,UAAUrF,cAAcsF,UAAUtF,aAClCqF,UAAUyI,uBAAuBxI,UAAUwI;AAAAA,EACnD,CACJ;AAEO,WAAA2B,kBAAA/c,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA2B,UAAA;AAAA,MAAAuN;AAAAA,MAAAH;AAAAA,MAAA+L;AAAAA,MAAA6C;AAAAA,MAAAI;AAAAA,MAAA3B;AAAAA,MAAA7Z;AAAAA,MAAA8Z;AAAAA,MAAAI;AAAAA,MAAAC;AAAAA,MAAAE;AAAAA,MAAAC;AAAAA,IAAAA,IAAApb;AA0BjCyB,QAAAA;AAAAxB,QAAAA,EAAAkb,CAAAA,MAAAA,wBAAAlb,SAAAqN,aAAArN,EAAA,CAAA,MAAAwN,aAAA;AAE8B0N,WAAAA,sBAAoBlY,SAAWqK,YAAY,GAAGA,SAAS,IAAIG,WAAW,KAAKA,WAAW;AAACxN,aAAAkb;AAAAlb,aAAAqN;AAAArN,aAAAwN;AAAAxN,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAlH,UAAA+c,qBAA2Bvb;AAAwFI,QAAAA;AAAA,QAAA5B,EAAAqN,CAAAA,MAAAA,aAAArN,SAAAwN,aAAA;AACpGD,WAAAA,UAAUC,aAAaH,SAAS;AAACrN,aAAAqN;AAAArN,aAAAwN;AAAAxN,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAhD,UAAAgd,SAAepb;AACfqb,UAAAA,aAAmBvP,cAAcF,aAAaH,SAAS;AACvD,UAAAkB,WAAiB0O,cAAcpc;AAE3Bqc,QAAAA;AACA,QAAA,OAAO9D,sBAAsB,UAAQ;AACrC,YAAAV,WAAiBU;AAAkB,UAC/BV,SAAQG,aAAc,SAASH,SAAQO,YAAW;AAAA7W,YAAAA;AAAA,YAAApC,EAAAmb,CAAAA,MAAAA,sBAAAnb,SAAAa,UAAAb,EAAA,CAAA,MAAAgd,UAAAhd,UAAA2a,mBAAA3a,EAAA+a,EAAAA,MAAAA,kBAAA/a,UAAAgb,oBAAAhb,EAAA,EAAA,MAAA0Y,SAAAO,cAAAjZ,UAAA0Y,SAAAkC,mBAAA5a,UAAA0a,qBAAA;AACxCtY,gBAACoC,2BAAA,IAAA,cAAA,EACckW,qBACVsC,WAAK,QACJ,YAAAtE,SAAQO,YACH,iBAAAP,SAAQkC,iBACjB/Z,QACS8Z,iBACDI,gBACEC,kBACEG,oBACtB;AAAAnb,iBAAAmb;AAAAnb,iBAAAa;AAAAb,iBAAAgd;AAAAhd,kBAAA2a;AAAA3a,kBAAA+a;AAAA/a,kBAAAgb;AAAA,YAAA,EAAA,IAAAtC,SAAAO;AAAA,YAAA,EAAA,IAAAP,SAAAkC;AAAA5a,kBAAA0a;AAAA1a,kBAAAoC;AAAAA,QAAAA,OAAA;AAAAA,gBAAApC,EAAA,EAAA;AAAA,QAAA;AAVQkd,kBAAAA;AAAAA,MAAAA;AAAAA,IAAH;AAef,UAAA3E,WAAiBmC,wBAAwBsC;AAAO5a,QAAAA;AAAA,QAAApC,EAAAmb,EAAAA,MAAAA,sBAAAnb,UAAAoZ,mBAAA;AAC/BhX,WAAAgX,sBAAuB+B,uBAAuBxC,KAAAA,kBAAkBS,iBAAiB,KAAMX,iBAAiBW,iBAAiB;AAAEpZ,cAAAmb;AAAAnb,cAAAoZ;AAAApZ,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AAA5I,UAAA+Y,WAAiB3W;AAA4HC,QAAAA;AAAArC,QAAAA,UAAAkd,SAAA;AASpI7a,WAAA6a,WAAW1Y,2BAAAA,IAAA,OAAA,EACG,WAAA,uBAAoB2Y,uBACxB,OAAA;AAAA,QAAAC,MACG;AAAA,QAAMC,KACP;AAAA,QAAMC,QACH;AAAA,MAAA,GACR;AAAAtd,cAAAkd;AAAAld,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,EAAA,MAAAic,mBAAAjc,EAAA,EAAA,MAAA+Y,YAAA/Y,EAAA,EAAA,MAAAuO,YAAAvO,EAAAqN,EAAAA,MAAAA,aAAArN,EAAA2a,EAAAA,MAAAA,mBAAA3a,EAAAwN,EAAAA,MAAAA,eAAAxN,EAAAoZ,EAAAA,MAAAA,qBAAApZ,UAAAuY,UAAA;AAEP7V,YAACiW,KAAkBS,kBAAAA,iBAAiB,MAAM6C,mBAAmBlD,WACxDvU,2BAAA,IAAC,sBACW4U,EAAAA,UAAAA,mBACD,SAAAuB,kBAAwBA,MAAAA,gBAAgBnN,aAAaH,SAAS,IAAC3L,QAC3D,aAAG,MACN6W,UACAhK,cACX/J,2BAAAA,IAAA,4BAAA,EAAiCgJ,MAAAA,aACI4L,UAAgB,mBACjB,SAAAuB,wBAAwBA,gBAAgBnN,aAAaH,SAAS,IAAC3L,QAC9D6W,UAAW;AAAAvY,cAAAic;AAAAjc,cAAA+Y;AAAA/Y,cAAAuO;AAAAvO,cAAAqN;AAAArN,cAAA2a;AAAA3a,cAAAwN;AAAAxN,cAAAoZ;AAAApZ,cAAAuY;AAAAvY,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,UAAA+c,oBAAA;AAIlDA,WAAAA,sBAAuBvY,2BAAA,IAAAC,GAAA,SAAA,EAAe,OAAA,qBACnC,UAACD,2BAAA,IAAAgN,GAAA,eAAA,EAAmB,MAAA,SAAmB,WAAA,MAAK,CAAA,GAChD;AAAUxR,cAAA+c;AAAA/c,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,EAAAqN,EAAAA,MAAAA,aAAArN,UAAAgb,oBAAAhb,EAAA,EAAA,MAAAwN,aAAA;AAETwN,WAAAA,oBAAqBxW,2BAAAA,IAAAC,GAAAA,SAAA,EAAe,OAAA,UACE,SAAG,MACtC,UAAAD,2BAAAA,IAACE,GAAAA,YAAgB,EAAA,MAAA,SACC,OAAA,WACG,SAAMsW,MAAAA,iBAAiBxN,aAAaH,SAAS,GAC9D,yCAACkQ,GAAAA,YAAiB,EAAA,MAAA,QAAO,CAAA,EAAA,CAC7B,EACJ,CAAA;AAAUvd,cAAAqN;AAAArN,cAAAgb;AAAAhb,cAAAwN;AAAAxN,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA/D,QAAAA,UAAA+a,gBAAA;AAEThX,WAAAgX,kBAAmBvW,+BAAAC,GAAAA,SAAA,EAAe,OAAA,QACE,SAAA,MACjC,UAACD,2BAAA,IAAAE,GAAA,YAAA,EACc,WAAA,QACN,MAAA,SAEL,UAAAF,2BAAA,IAACgZ,qBAAqB,MAAA,SAC1B,GAAA,EACJ,CAAA;AAAUxd,cAAA+a;AAAA/a,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAAhE,QAAAA,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,MAAA5D,EAAA,EAAA,MAAA+D,IAAA;kDAvBC,EAAA,WAAA,yCAEVd,UAAAA;AAAAA,QAAAA;AAAAA,QAIAW;AAAAA,QASAG;AAAAA,MAAAA,GASL;AAAM/D,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAAjE,QAAAA,UAAAkd,SAAA;AAELjZ,YAAAiZ,WAAW1Y,2BAAAA,IAAA,OAAgB,EAAA,WAAA,SAAU0Y,UAAQ,SAAA;AAAMld,cAAAkd;AAAAld,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAA,EAAA,MAAAqc,SAAAoB,mBAAAzd,EAAAqc,EAAAA,MAAAA,SAAAqB,kBAAA1d,UAAAqc,SAAAL,YAAAhc,EAAA,EAAA,MAAAiE,OAAAjE,EAAAqC,EAAAA,MAAAA,MAAArC,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAAgE,IAAA;AApDxDE,YAqDMY,2BAAA,KAAA,OAAA,EApDG,KAAAuX,SAAQL,aACTK,SAAQqB,gBAAA,GACRrB,SAAQoB,iBACF,WAAA,kBAETpb,UAAAA;AAAAA,QAAAA;AAAAA,QAQAK;AAAAA,QAYDsB;AAAAA,QA0BCC;AAAAA,MAAAA,GACL;AAAM,QAAA,EAAA,IAAAoY,SAAAoB;AAAA,QAAA,EAAA,IAAApB,SAAAqB;AAAA,QAAA,EAAA,IAAArB,SAAAL;AAAAhc,cAAAiE;AAAAjE,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAgE;AAAAhE,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AArDNkE,WAAAA;AAAAA,EAqDM;AClPP,WAAAyZ,iBAAA5d,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA0B,UAAA;AAAA,MAAAkO;AAAAA,MAAAD;AAAAA,MAAA0L;AAAAA,MAAAuB;AAAAA,IAAAA,IAAApb;AAQ7B,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAGIO,iBAAuB;AAE3B,UAAA,CAAA2c,oBAAAC,qBAAA,IAAoDxc,MAAAA,cAAuB;AAC3E,UAAA,CAAAqZ,qBAAAoD,sBAAA,IAAsDzc,eAA6B;AACnF,UAAA,CAAA0c,2BAAAC,4BAAA,IAAkE3c,eAA6B;AAAEG,QAAAA;AAAAxB,QAAAA,EAAAS,CAAAA,MAAAA,OAAAwY,cAAAjZ,EAAA,CAAA,MAAAS,OAAAma,iBAAA;AAEzEpZ,WAAAf,OAAMma,mBAAoBpM,OAAAC,KAAYhO,OAAMwY,gBAAiB;AAAC,QAAA,CAAA,IAAAxY,OAAAwY;AAAA,QAAA,CAAA,IAAAxY,OAAAma;AAAA5a,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAtF,UAAA4a,kBAAwBpZ;AAA+DI,QAAAA;AAAA,QAAA5B,EAAA,CAAA,MAAAU,iBAAAV,EAAAS,CAAAA,MAAAA,OAAAwY,cAAAjZ,EAAAS,CAAAA,MAAAA,OAAAma,iBAAA;AAC7DhZ,WAAAQ,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA9C;AAAAA,UAAAoZ;AAAAA,QAAAA,IAAAtW;AAGsC,YAAA,CACxD9C,IAAE;AAAA,gBACGmL,MAAM;AAAA,QAAA;AAChB/J,sBAAc,cAAY;AAAA,UAAA,GAClBD,OAAMwY,cAAiB,CAAA;AAAA,UAAA,CAC1B3Z,EAAE,GAAGoZ;AAAAA,WAAQ,KACV;AAERuF,cAAAA,yBAA+Bxd,OAAMma,mBAAoBpM,OAAAC,KAAYhO,OAAMwY,gBAAiB;AAC5FwC,cAAAA,qBAA2BwC,uBAAsBjb,SAAU1D,EAAE,IAAI2e,yBAAsB,CAAA,GAAOA,wBAAwB3e,EAAE;AAC1G,sBAAA,mBAAmBmc,yBAAyB;AAE1DoC,mCAA2B;AAAA,MAAC;AAC/B7d,aAAAU;AAAA,QAAA,CAAA,IAAAD,OAAAwY;AAAA,QAAA,CAAA,IAAAxY,OAAAma;AAAA5a,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAhBD,UAAAke,oBAA0Btc;AAgBxBQ,QAAAA;AAAA,QAAApC,EAAAU,CAAAA,MAAAA,iBAAAV,SAAAS,QAAA;AAEqB2B,WAAAA,CAAAoL,aAAAH,cAAA;AACnB,cAAA2P,SAAexP,cAAcD,UAAUC,aAAaH,SAAS,IAAC3L;AAAa,YAAA,CACtEsb,QAAM;AAAA,gBACDvS,MAAM,+BAA+B;AAAA,QAAA;AAE/C0T,cAAAA,iBAAuBjR,mBAAmB8P,MAAM;AAChDoB,cAAAA,sBAA4B9Q,+BAA+BD,SAAS;AAEpE,cAAAgR,2BAAyCvc,OAAAA,MAAMrB,QAAQ2d,mBAAmB,KAAK5P,OAAAC,KAAY3M,OAAAA,MAAMrB,QAAQ2M,0BAA0BC,SAAS,CAAC,CAAC;AAEhI8Q,sBAAAA,gBAAczc,aAAkB;AAC9ChB,sBAAc0d,qBAAqBH,yBAAsBnb,OAAAwb,OAAeA,MAAM9Q,WAAW,QAAQ;AAEjGqQ,mCAA2B;AAC3BC,+BAAsBpc,MAAU;AAChCsc,qCAA4Btc,MAAU;AAAA,MAAC;AAC1C1B,aAAAU;AAAAV,aAAAS;AAAAT,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAhBD,UAAAue,iBAAuBnc;AAgBrBC,QAAAA;AAAA,QAAArC,EAAA,EAAA,MAAA0a,uBAAA1a,EAAA,EAAA,MAAA+d,6BAAA/d,EAAA,EAAA,MAAAS,OAAAwY,YAAA;AAEF,YAAAuF,yBAA+B9D,sBAAsBnN,UAAUmN,qBAAqBqD,yBAAyB,IAACrc;AACrF8c,WAAAA,yBAAyB1c,aAAMrB,OAAMwY,YAAauF,uBAAsBrR,WAAY,KAAK,cAAc,CAAC,IAACzL;AAAY1B,cAAA0a;AAAA1a,cAAA+d;AAAA,QAAA,EAAA,IAAAtd,OAAAwY;AAAAjZ,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAA9I,UAAAye,mBAAyBpc;AAEzB,UAAAqc,QAAc,CAAC9D,mBAAmBA,gBAAe9T,SAAW;AAACpE,QAAAA;AAAA1C,QAAAA,UAAAU,eAAA;AAEtCgC,WAAAA,CAAAic,mBAAAC,gBAAA;AACnBle,sBAAc4M,+BAA+BD,WAAS,GAAGuN,wBAAsB;AAAA,MAAC;AACnF5a,cAAAU;AAAAV,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAFD,UAAA+a,iBAAuBrY;AAErBO,QAAAA;AAAA,QAAAjD,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAMcF,WAACuB,2BAAA,IAAAJ,eAAA,EAAoB,SAAA,aAAa,UAAwB,4BAAA;AAAapE,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAAG,QAAAA;AAAA,QAAA/D,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAI1DS,WAAAA,MAAMia,0BAA0B;AAC9B9Z,0CAAC8a,GAAS,SAAA,EAAA;AAAA7e,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAH,WAAA5D,EAAA,EAAA;AAAA+D,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAEJgE,UAAAA,KAAAvD,OAAMhB,QAAS;AAAYwE,QAAAA;AAAAjE,QAAAA,UAAAgE,IAAA;mDARrC,EAAA,WAAA,uCACXf,UAAAA;AAAAA,QAAAA;AAAAA,QACA6B,2BAAAA,KAACwM,aACS,OAAA,WACG,SAAA,YACA,SAAA1N,IACE,WAAAG,IACd,UAAA;AAAA,UAAA;AAAA,UACoBC;AAAAA,QAAAA,EACrB,CAAA;AAAA,MAAA,GACJ;AAAMhE,cAAAgE;AAAAhE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAA,EAAA,MAAAS,OAAAwY,YAAA;AAGcxY,YAAAA,OAAMwY,cAAiB,CAAA;AAAA,QAAA,EAAA,IAAAxY,OAAAwY;AAAAjZ,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAA,QAAAnE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAE3BgB,YAAA,CAAA;AAAEnE,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAEOkB,YAAAA,CAAAya,eAAAC,gBAAA;AACbjB,+BAAuBtQ,aAAW;AAClCwQ,qCAA6B3Q,WAAS;AACtCwQ,kCAA0B;AAAA,MAAC;AAC9B7d,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAA,QAAAtE,EAAA,EAAA,MAAAmb,sBAAAnb,EAAA+a,EAAAA,MAAAA,kBAAA/a,EAAA4a,EAAAA,MAAAA,mBAAA5a,UAAAkE,KAAA;AATJ,YAAAM,2BAAAA,IAAA,cACe,EAAA,YAAAN,KACK0W,iBACT,QAAAzW,KACYgX,oBACH,iBAAA9W,KAKD0W,eAAiB,CAAA;AAAA/a,cAAAmb;AAAAnb,cAAA+a;AAAA/a,cAAA4a;AAAA5a,cAAAkE;AAAAlE,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,UAAA0e,OAAA;AAEpCna,YAAAma,SACIla,+BAAAJ,GAAAA,YAAA,EAAoB,SAAA,SACC,WAAA,+CAA8C,UAEpE,uCAAA,CAAA;AAAapE,cAAA0e;AAAA1e,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA,QAAA3E,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAuE,KAAA;AAjBpB,YAAAO,2BAAA,KAAA4M,GAAgB,OAAA,EAAA,WAAA,YACbpN,UAAAA;AAAAA,QAAAA;AAAAA,QAYCC;AAAAA,MAAAA,GAKL;AAAQvE,cAAAsE;AAAAtE,cAAAuE;AAAAvE,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA,QAAA5E,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAA2E,KAAA;AACN,YAAAG,2BAAA,KAAA,OA/BU,EAAA,WAAA,eACZb,UAAAA;AAAAA,QAAAA;AAAAA,QAWAU;AAAAA,MAAAA,GAmBJ;AAAM3E,cAAAiE;AAAAjE,cAAA2E;AAAA3E,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA/E,QAAAA,UAAAU,eAAA;AAOiB8J,YAAAA,CAAAA,MAAO9J,cAAc,kBAAkB8J,CAAC;AAACxK,cAAAU;AAAAV,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AACjDgF,UAAAA,MAAAvE,OAAMue,kBAAwB;AAAA/Z,QAAAA;AAAA,QAAAjF,EAAA+E,EAAAA,MAAAA,OAAA/E,UAAAgF,KAAA;AALzC,YAAAR,2BAAAA,IAAC8G,GAAAA,wBACa,EAAA,UAAA,SACJ,MAAA,SACA,OAAA,8BACS,eAAAvG,KACR,OAAAC,IACT,CAAA;AAAAhF,cAAA+E;AAAA/E,cAAAgF;AAAAhF,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AAAAkF,QAAAA;AAAA,QAAAlF,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;2CACD0C,KAAAA,gBAAa,UAGd,2IAAA,CAAA;AAAe7F,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAAsF,QAAAA;AAAAtF,QAAAA,UAAAiF,KAAA;AACb,YAAAH,2BAAA,KAAA,OAZU,EAAA,WAAA,eACZG,UAAAA;AAAAA,QAAAA;AAAAA,QAOAC;AAAAA,MAAAA,GAIJ;AAAMlF,cAAAiF;AAAAjF,cAAAsF;AAAAA,IAAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAAwF,QAAAA;AAAAE,QAAAA;AAAA,QAAA1F,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAQQqC,YAAAA,MAAA;AACNqY,mCAA2B;AAC3BC,+BAAsBpc,MAAU;AAChCsc,qCAA4Btc,MAAU;AAAA,MAAC;AAE9BgE,YAAAA,MAAA;AACTmY,mCAA2B;AAC3BC,+BAAsBpc,MAAU;AAChCsc,qCAA4Btc,MAAU;AAAA,MAAC;AAC1C1B,cAAAwF;AAAAxF,cAAA0F;AAAAA,IAAAA,OAAA;AAAAF,YAAAxF,EAAA,EAAA;AAAA0F,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAMiB2F,UAAAA,MAAAJ,QAAQmV,mBAAmB;AAC/B,UAAA9U,OAAC8U;AACK,UAAA5U,OAAC4U;AAEC3U,UAAAA,MAAA2U,sBAAmBhZ,SAAekZ;AAAe5U,QAAAA;AAAAhG,QAAAA,EAAAkO,EAAAA,MAAAA,sBAAAlO,UAAAmb,sBAAAnb,EAAA,EAAA,MAAAue,kBAAAve,EAAAmO,EAAAA,MAAAA,WAAAnO,EAAAke,EAAAA,MAAAA,qBAAAle,EAAA4Z,EAAAA,MAAAA,mBAAA5Z,EAAA4d,EAAAA,MAAAA,sBAAA5d,EAAA,EAAA,MAAAye,oBAAAze,EAAA,EAAA,MAAA0a,uBAAA1a,EAAA+d,EAAAA,MAAAA,6BAAA/d,UAAA2F,OAAA3F,EAAA,EAAA,MAAA4F,OAAA5F,EAAA,EAAA,MAAA8F,OAAA9F,EAAA,EAAA,MAAA+F,KAAA;AAzB3EC,YAACxB,2BAAA,IAAA,oBAAA,EACY,SAAI,OACI,wBACXoZ,MAAAA,oBACc1P,oBACAiN,oBACV,UAAA3V,KAKG,aAAAE,KAKJyI,SACCoQ,UAAa,gBACV7D,kCACMqD,mBAAAA,2BACTU,UAAe,kBACP,kBAAA9Y,KACJ,cAAAC,KACM,oBAAAE,KACDoY,mBAAgB,mBACb,sBAAAnY,KACL6T,iBACnB;AAAA5Z,cAAAkO;AAAAlO,cAAAmb;AAAAnb,cAAAue;AAAAve,cAAAmO;AAAAnO,cAAAke;AAAAle,cAAA4Z;AAAA5Z,cAAA4d;AAAA5d,cAAAye;AAAAze,cAAA0a;AAAA1a,cAAA+d;AAAA/d,cAAA2F;AAAA3F,cAAA4F;AAAA5F,cAAA8F;AAAA9F,cAAA+F;AAAA/F,cAAAgG;AAAAA,IAAAA,OAAA;AAAAA,YAAAhG,EAAA,EAAA;AAAA,IAAA;AAAAkG,QAAAA;AAAAlG,QAAAA,EAAA4E,EAAAA,MAAAA,OAAA5E,UAAAsF,OAAAtF,EAAA,EAAA,MAAAgG,KAAA;AA3ENE,YACItB,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAiCAU;AAAAA,QAcAU;AAAAA,MAAAA,GA2BE;AAEHhG,cAAA4E;AAAA5E,cAAAsF;AAAAtF,cAAAgG;AAAAhG,cAAAkG;AAAAA,IAAAA,OAAA;AAAAA,YAAAlG,EAAA,EAAA;AAAA,IAAA;AA7EHkG,WAAAA;AAAAA,EA6EG;AC5IJ,WAAA+Y,oBAAAlf,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA6B,UAAA;AAAA,MAAA0D;AAAAA,MAAAmT;AAAAA,MAAA7I;AAAAA,MAAAE;AAAAA,MAAAD;AAAAA,MAAA0L;AAAAA,MAAAuB;AAAAA,IAAAA,IAAApb;AAkBhC,UAAA;AAAA,MAAAU;AAAAA,MAAAI;AAAAA,MAAAH;AAAAA,MAAAE;AAAAA,QAMIK,iBAAyB;AAE7B,UAAA,CAAA2c,oBAAAC,qBAAA,IAAoDxc,MAAAA,cAAc;AAAE6d,QAAAA;AAAAC,QAAAA;AAAAC,QAAAA;AAAA5d,QAAAA;AAAA,QAAAxB,EAAAa,CAAAA,MAAAA,UAAAb,EAAA,CAAA,MAAA4Z,mBAAA5Z,EAAAU,CAAAA,MAAAA,iBAAAV,EAAA,CAAA,MAAAY,WAAAZ,SAAAS,QAAA;AACjDqB,mBAAAA,OAAAA,MAAMrB,QAAQ,IAAI;AAAEmB,UAAAA;AAAA,UAAA5B,EAAAa,CAAAA,MAAAA,UAAAb,UAAAY,SAAA;AACfgB,cAAAE,OAAMlB,MAAAA,SAAS,IAAI,KAAKkB,OAAAA,MAAMjB,QAAQ,IAAI;AAACb,eAAAa;AAAAb,gBAAAY;AAAAZ,gBAAA4B;AAAAA,MAAAA,OAAA;AAAAA,cAAA5B,EAAA,EAAA;AAAA,MAAA;AAA3C4B,wBAAAA;AAA4CQ,UAAAA;AAAApC,UAAAA,UAAAU,eAAA;AAE1C0B,cAAAC,CAAAA,QAAA;AAAC,gBAAA;AAAA,YAAAqW;AAAAA,UAAAA,IAAArW;AAEvB3B,wBAAc,MAAMgY,QAAQ;AAAA,QAAC;AAChC1Y,gBAAAU;AAAAV,gBAAAoC;AAAAA,MAAAA,OAAA;AAAAA,cAAApC,EAAA,EAAA;AAAA,MAAA;AAHyBoC,0BAAAA;AAKX8c,WAAAA,cAAcpF,oBAAeoF,YAAYtF,eAAe;AAAC5Z,aAAAa;AAAAb,aAAA4Z;AAAA5Z,aAAAU;AAAAV,aAAAY;AAAAZ,aAAAS;AAAAT,aAAAkf;AAAAlf,aAAAmf;AAAAnf,aAAAof;AAAApf,aAAAwB;AAAAA,IAAAA,OAAA;AAAA0d,mBAAAlf,EAAA,CAAA;AAAAmf,wBAAAnf,EAAA,CAAA;AAAAof,0BAAApf,EAAA,CAAA;AAAAwB,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAxE,UAAAqf,SAAe7d;AAA0DI,QAAAA;AAAA,QAAA5B,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAI7DvB,WAAC4C,2BAAA,IAAAJ,eAAA,EAAoB,SAAA,aAAa,UAElC,oBAAA;AAAapE,cAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,EAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,UAAAkO,sBAAAlO,EAAAmb,EAAAA,MAAAA,sBAAAnb,EAAA,EAAA,MAAAiO,YAAAjO,UAAA8W,YAAA9W,EAAAmO,EAAAA,MAAAA,WAAAnO,EAAAkf,EAAAA,MAAAA,cAAAlf,EAAA,EAAA,MAAAmf,mBAAAnf,UAAAof,qBAAApf,EAAA4Z,EAAAA,MAAAA,mBAAA5Z,EAAA,EAAA,MAAA4d,sBAAA5d,UAAA2D,cAAA3D,EAAA,EAAA,MAAAqf,QAAA;AAQRjd,WAAAC,CAAAA,QACIyC,2BAAA,KAAA4M,GAAA,OAAA,EAAgB,WAAA,YAEZwN,UAAAA;AAAAA,QAAAA,6CAAe,sBACFA,EAAAA,sBACD,SAAAjR,WAAQvM,SAAqBmc,MAAAA,0BAA0B,GACnD,aAAA,OACM,mBAAG,MACZ,UAAI,OACJ,iBAAK;AAAA,QAEjB5P,CAAAA,aAAaiR,cAAepa,2BAAA,KAAAwM,GAAA,QAAA,EAAgB,SAAA,QACH,MAAA,SACC,OAAA6N,kBAAkB,UAAU,WAC1B,eAAMtB,sBAAqB,IAAK,GAAG,UAAA;AAAA,UAAA;AAAA,aACpEwB,SAASA,OAAM5f,OAAQ,kBAAkB;AAAA,QAAA,GACtD;AAAA,QAEC+E,2BAAAA,IAAA,oBAAA,EACY,SAAA,MACHoZ,MAAiB,oBACL9G,kBAAO,UAChB3I,SACK,cAAA,CAAC2I,UACK,oBAAA,CAACA,UACR,mBAAM+G,sBAAqB,KAAM,GAC1B3P,oBACVgR,sBACQ,kBAAA,OACCE,mBACFzb,iBAAS,YACTiW,iBACGuB,mBAE5B,CAAA;AAAA,MAAA,GAAA;AACHnb,cAAAkO;AAAAlO,cAAAmb;AAAAnb,cAAAiO;AAAAjO,cAAA8W;AAAA9W,cAAAmO;AAAAnO,cAAAkf;AAAAlf,cAAAmf;AAAAnf,cAAAof;AAAApf,cAAA4Z;AAAA5Z,cAAA4d;AAAA5d,cAAA2D;AAAA3D,cAAAqf;AAAArf,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAAkf,EAAAA,MAAAA,cAAAlf,UAAAoC,IAAA;AAGH,WAAA0C,2BAAA,KAAA,OAjDU,EAAA,WAAA,eACZlD,UAAAA;AAAAA,QAAAA;AAAAA,uCAGCyE,OAAAA,OACS,EAAA,MAAA,MACC6Y,OAAS,YAKf9c,UAoCL,GAAA,CAAA;AAAA,MAAA,GAEJ;AAAMpC,cAAAkf;AAAAlf,cAAAoC;AAAApC,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,UAAAiO,UAAA;AAEN,WAAAzJ,2BAAA,IAAA,OAAgB,EAAA,WAAA,eAEZ,UAAAA,2BAAA,IAAC,mBACG,UAACA,2BAAAA,IAAA,yBAAA,EAAkCyJ,YACvC,CAAA,GAEJ;AAAMjO,cAAAiO;AAAAjO,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,IAAA;AA1DVO,WACIZ,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAmDAK;AAAAA,MAAAA,GAMM;AACP1C,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AA3DHiD,WAAAA;AAAAA,EA2DG;AC3FJ,QAAMqc,uBAAuB/e,MAAMgf,WACtC,SAAAD,sBAAAvf,IAAAqD,KAAA;AAAApD,UAAAA,IAAAC,uBAAA,EAAA;AAA8B,UAAA;AAAA,MAAA0D;AAAAA,MAAA6b;AAAAA,MAAAvR;AAAAA,MAAAwR;AAAAA,IAAAA,IAAA1f;AAQ1B,UAAA;AAAA,MAAAc;AAAAA,MAAAJ;AAAAA,MAAAC;AAAAA,MAAAI;AAAAA,MAAAF;AAAAA,QAOIK,iBAA0B;AAAEO,QAAAA;AAAA,QAAAxB,EAAAa,CAAAA,MAAAA,UAAAb,SAAA2D,YAAA;AAGdA,WAAAA,cAAc7B,aAAMjB,QADzB,MACqC;AAACb,aAAAa;AAAAb,aAAA2D;AAAA3D,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAnD,UAAA0f,YAAkBle;AAAkCI,QAAAA;AAAA,QAAA5B,EAAAa,CAAAA,MAAAA,UAAAb,SAAA2D,YAAA;AAGpCA,WAAAA,cAAc7B,aAAMjB,QADzB,IACmC;AAACb,aAAAa;AAAAb,aAAA2D;AAAA3D,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAA/C,UAAAgT,UAAgBpR;AAAgCQ,QAAAA;AAAA,QAAApC,EAAAa,CAAAA,MAAAA,UAAAb,SAAA2D,YAAA;AAGvBA,WAAAA,cAAc7B,aAAMjB,QADzB,aAC4C;AAACb,aAAAa;AAAAb,aAAA2D;AAAA3D,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAjE,UAAA2f,mBAAyBvd;AAUF,UAAAC,KAAA5B,OAAMhB;AAAMiD,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAyf,gBAAAzf,EAAAc,EAAAA,MAAAA,mBAAAd,EAAAU,EAAAA,MAAAA,iBAAAV,UAAAY,SAAA;AACT8B,WAAAyC,CAAA,MAAA;AACNya,cAAAA,eAAqBza,EAACC,OAAAC;AACtBrD,cAAAA,YAAkBF,OAAAA,MAAMlB,SAjBjC,IAiB4C;AAC/B,YAAA,CAACoB,aAAayd,cAAY;AAC1B/e,wBAnBb,MAmB+Bkf,eAAe7d,KAAAA,YAAY6d,YAAY,IAAI,IAAE,KAAO;AAAA,QAAA;AAtBjF,sBAAA,QAwB2BA,kBAAkB;AACtC9e,wBAzBP,QAAM,IAyB2B;AAAA,MAAC;AAC9Bd,aAAAyf;AAAAzf,cAAAc;AAAAd,cAAAU;AAAAV,cAAAY;AAAAZ,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACM,WAAA;AAAA,QAAA0c,UAAA;AAAA,MAAA;AAAgB7f,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAIhB4D,UAAAA,KAAA2B,QAAQma,SAAS;AAAC3b,QAAAA;AAAA/D,QAAAA,UAAAiO,YAAAjO,EAAAoD,EAAAA,MAAAA,OAAApD,EAAA,EAAA,MAAA0C,MAAA1C,UAAA4D,MAAA5D,EAAAS,EAAAA,MAAAA,OAAAhB,MAAA;AAlB7B,WAAA+E,2BAAA,IAAC6B,gBACS5G,MAdT,QAea2D,UAAAA,KACNkD,IAAAA,uBACG,OAAAjE,IACG,UAAAK,IASH,OAAAO,IACM,aAAA,cACb,gBACUgL,UACH,OAAArK,GAAqB,CAAA;AAAA5D,cAAAiO;AAAAjO,cAAAoD;AAAApD,cAAA0C;AAAA1C,cAAA4D;AAAA,QAAA,EAAA,IAAAnD,OAAAhB;AAAAO,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAEXgE,UAAAA,KAAAuB,QAAQma,SAAS;AAACzb,QAAAA;AAAA,QAAAjE,EAAA0f,EAAAA,MAAAA,aAAA1f,UAAAgE,IAAA;AAAvCC,YAACO,2BAAA,IAAAqB,mBAAA,EAAoB,OAAA7B,IAChB0b,UACL,WAAA;AAAe1f,cAAA0f;AAAA1f,cAAAgE;AAAAhE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAA+D,IAAA;AAvBnBG,4CAAA,OACIH,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAoBAE;AAAAA,MAAAA,GAGJ;AAAMjE,cAAAiE;AAAAjE,cAAA+D;AAAA/D,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAOS,UAAAmE,MAAA1D,OAAMnB;AAAI+E,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAyf,gBAAAzf,EAAAc,EAAAA,MAAAA,mBAAAd,EAAAU,EAAAA,MAAAA,iBAAAV,UAAAY,SAAA;AACPyD,YAAA0D,CAAA,QAAA;AACN+X,cAAAA,aAAmB3a,IAACC,OAAAC;AACpB0a,cAAAA,cAAoBje,OAAAA,MAAMlB,SA9CjC,MA8C8C;AACnC,YAAA,CAACmf,eAAeN,cAAY;AAC5B/e,wBAhDX,QAgD+Bof,aAAaE,KAAUF,UAAAA,UAAU,IAAI,EAAE;AAAA,QAAA;AA7CxE,sBAAA,MA+C2BA,gBAAgB;AAClChf,wBAhDT,MAAI,IAgD6B;AAAA,MAAC;AAC5Bd,cAAAyf;AAAAzf,cAAAc;AAAAd,cAAAU;AAAAV,cAAAY;AAAAZ,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AACS,UAAAsE,MAAAkb,cAAcvR;AAGjB1J,UAAAA,MAAAgB,QAAQyN,OAAO;AAACrO,QAAAA;AAAA,QAAA3E,EAAAqE,EAAAA,MAAAA,OAAArE,UAAAsE,OAAAtE,EAAA,EAAA,MAAAuE,OAAAvE,EAAAS,EAAAA,MAAAA,OAAAnB,IAAA;AAjB3BqF,2CAAC0B,OACS/G,OAAAA,EAAAA,MArCX,MAsCSgH,IAAiBA,GAAAA,oBACd,OAAA,MACA,OAAAnC,KACG,UAAAE,KASA,UAAAC,KACV,UAAA,MACK,MAAA,SACE,OAAAC,KAAmB;AAAAvE,cAAAqE;AAAArE,cAAAsE;AAAAtE,cAAAuE;AAAA,QAAA,EAAA,IAAA9D,OAAAnB;AAAAU,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AACT4E,UAAAA,MAAAW,QAAQyN,OAAO;AAACjO,QAAAA;AAAA,QAAA/E,EAAAgT,EAAAA,MAAAA,WAAAhT,UAAA4E,KAAA;AAArCG,YAACP,2BAAA,IAAAqB,mBAAA,EAAoB,OAAAjB,KAChBoO,UACL,SAAA;AAAehT,cAAAgT;AAAAhT,cAAA4E;AAAA5E,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAA,QAAAhF,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAA+E,KAAA;AArBnBC,4CAAA,OACIL,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAkBAI;AAAAA,MAAAA,GAGJ;AAAM/E,cAAA2E;AAAA3E,cAAA+E;AAAA/E,cAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAOYiF,UAAAA,MAAAM,QAAQoa,gBAAgB;AAACza,QAAAA;AAAA,QAAAlF,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAiF,KAAA;AAJvC,YAAAT,2BAAAA,IAAC6B,OAAAA,OAAYmD,EAAAA,MAzDL,eA0DGlD,IAAiBA,uBACd,OAAA,eACG2H,UACH,OAAAhJ,IAA4B,CAAA;AAAAjF,cAAAiO;AAAAjO,cAAAiF;AAAAjF,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AACrBsF,UAAAA,MAAAC,QAAQoa,gBAAgB;AAACna,QAAAA;AAAA,QAAAxF,EAAA2f,EAAAA,MAAAA,oBAAA3f,UAAAsF,KAAA;AAA9CE,YAAChB,2BAAA,IAAAqB,mBAAA,EAAoB,OAAAP,KAChBqa,UACL,kBAAA;AAAe3f,cAAA2f;AAAA3f,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA0F,QAAAA;AAAA,QAAA1F,EAAAkF,EAAAA,MAAAA,OAAAlF,UAAAwF,KAAA;AARnBE,4CAAA,OACIR,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAKAM;AAAAA,MAAAA,GAGJ;AAAMxF,cAAAkF;AAAAlF,cAAAwF;AAAAxF,cAAA0F;AAAAA,IAAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAAA2F,QAAAA;AAAA3F,QAAAA,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAAgF,OAAAhF,EAAA,EAAA,MAAA0F,KAAA;mDA7DM,EAAA,WAAA,mCAEZxB,UAAAA;AAAAA,QAAAA;AAAAA,QA0BAc;AAAAA,QAwBAU;AAAAA,MAAAA,GAWJ;AAAM1F,cAAAkE;AAAAlE,cAAAgF;AAAAhF,cAAA0F;AAAA1F,cAAA2F;AAAAA,IAAAA,OAAA;AAAAA,YAAA3F,EAAA,EAAA;AAAA,IAAA;AA/DN2F,WAAAA;AAAAA,EA+DM,CAIlB;ACtGO,WAAAsa,oBAAAlgB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA6B,UAAA;AAAA,MAAAigB;AAAAA,MAAAjS;AAAAA,MAAAtK;AAAAA,IAAAA,IAAA5D;AAUhC,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAAkCO,iBAAU;AAAEO,QAAAA;AAAAxB,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAA2D,cAAA3D,EAAA,CAAA,MAAAkgB,UAAA;AAQ7B1e,WAAA0e,aAAa,gBACV1b,+BAAC,4BAAmCyJ,UACF,QAAG,MACA,WAAG,MACL,SAAA,MACJ,KAAA,MACA,KAAA,MACC,YACK,WAAG,MACFtK,YAAa;AAAA3D,aAAAiO;AAAAjO,aAAA2D;AAAA3D,aAAAkgB;AAAAlgB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAA2D,cAAA3D,EAAA,CAAA,MAAAkgB,UAAA;AACtDte,WAAAse,aAAa,eACV1b,2BAAA,IAAC,0BAAmCyJ,EAAAA,UACF,QAAA,MACG,WAAA,MACN,KAAA,MACA,KAAG,MACF,MAAA,MACK,WAAG,MACFtK,YAAa;AAAA3D,aAAAiO;AAAAjO,aAAA2D;AAAA3D,aAAAkgB;AAAAlgB,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAA2D,cAAA3D,EAAA,EAAA,MAAAkgB,UAAA;AAEtDA,WAAAA,aAAa,WACV1b,2BAAAA,IAAC,0BAAmCyJ,EAAAA,UACL,KAAA,MACA,KAAG,MACF,MAAG,MACGtK,WAAa,CAAA;AAAA3D,aAAAiO;AAAAjO,aAAA2D;AAAA3D,cAAAkgB;AAAAlgB,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,EAAAwB,EAAAA,MAAAA,MAAAxB,UAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AA7B/DC,WAAAmC,2BAAAA,IAAA,OAAA,EAAgB,WAAA,eAEZ,0CAAC,iBAEIhD,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAUAI;AAAAA,QAUAQ;AAAAA,MAAAA,EAAAA,CAOL,EAEJ,CAAA;AAAMpC,cAAAwB;AAAAxB,cAAA4B;AAAA5B,cAAAoC;AAAApC,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,UAAAU,eAAA;AAMmBgC,WAAAyC,CAAA,MAAA;AACQ,sBAAA,gBAAgBA,EAACC,OAAAC,UAAkB,KAAE3D,SAAeyD,EAACC,OAAAC,KAAa;AAAA,MAAC;AACpFrF,cAAAU;AAAAV,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,UAAAS,QAAA;AAEMqB,WAAAA,OAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,cAAAS;AAAAT,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA0C,MAAA1C,EAAA,EAAA,MAAAiD,IAAA;AARzDW,WAUMY,2BAAAA,IAAA,OAAA,EAVU,WAAA,eAEZ,yCAACiB,GAAAA,WAAgB,EAAA,MAAA,gBACIwI,UACA,UAAAvL,IAGH,OAAA,iBACA,OAAAO,GAAmC,CAAA,GAEzD;AAAMjD,cAAAiO;AAAAjO,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA4D,IAAA;AA9CVG,WACI1B,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAmCAuB;AAAAA,MAAAA,GAUM;AACP5D,cAAAqC;AAAArC,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AA/CH+D,WAAAA;AAAAA,EA+CG;AC5DJ,WAAAoc,qBAAApgB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA8B,UAAA;AAAA,MAAAgO;AAAAA,IAAAA,IAAAlO;AAGjC,UAAA;AAAA,MAAAU;AAAAA,QAAmBQ,iBAAU;AAAEO,QAAAA;AAAAxB,QAAAA,SAAAS,QAAA;AACVqB,WAAAA,OAAAA,MAAMrB,QAAQ,cAAc;AAACT,aAAAS;AAAAT,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAlD,UAAAgW,eAAqBxU;AAA8BI,QAAAA;AAAA5B,QAAAA,SAAAiO,UAAA;AAI3C,WAAAzJ,2BAAA,IAAA,OAAgB,EAAA,WAAA,eAEZ,UAAAA,2BAAA,IAAC,mBACG,UAACA,2BAAAA,IAAA,2BAAA,EAAoCyJ,YACzC,CAAA,GAEJ;AAAMjO,aAAAiO;AAAAjO,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAAgW,CAAAA,MAAAA,gBAAAhW,SAAAiO,UAAA;AAeA,WAAAzJ,2BAAAA,IAAA,SAbU,WAAA,eAEZ,yCAAC6B,OAAAA,OACS,EAAA,MAAA,gBACLhE,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAiR;AAAAA,UAAAC;AAAAA,QAAAA,IAAAlR;AAAiC,8CACvB,eACG,EAAA,OAAA2T,iBAAqB,QAAIA,iBAAYtU,SAAiB,0BAA2B,sBAAsBsU,aAAYU,YAChHzI,UACU,oBAAG,MAAUqF,OAC3BC,MAAO;AAAA,SAEzB,EAEJ,CAAA;AAAMvT,aAAAgW;AAAAhW,aAAAiO;AAAAjO,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA4B,CAAAA,MAAAA,MAAA5B,SAAAoC,IAAA;AAtBVC,WACIT,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAQAQ;AAAAA,MAAAA,GAaM;AACPpC,aAAA4B;AAAA5B,aAAAoC;AAAApC,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAvBHqC,WAAAA;AAAAA,EAuBG;ACvBJ,WAAA+d,mBAAArgB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA4B,UAAA;AAAA,MAAAgO;AAAAA,MAAAE;AAAAA,MAAAD;AAAAA,MAAA0L;AAAAA,MAAAuB;AAAAA,IAAAA,IAAApb;AAc/B,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAGIO,iBAAyB;AAE7B,UAAA,CAAA2c,oBAAAC,qBAAA,IAAoDxc,MAAAA,cAAuB;AAC3E,UAAA,CAAAqZ,qBAAAoD,sBAAA,IAAsDzc,eAA6B;AACnF,UAAA,CAAA0c,2BAAAC,4BAAA,IAAkE3c,eAA6B;AAAEG,QAAAA;AAAA,QAAAxB,EAAAU,CAAAA,MAAAA,iBAAAV,EAAA,CAAA,MAAAS,OAAA4f,OAAApH,cAAAjZ,EAAA,CAAA,MAAAS,OAAA4f,OAAAzF,iBAAA;AAEvEpZ,WAAAI,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAtC;AAAAA,UAAA+N;AAAAA,UAAAqL;AAAAA,QAAAA,IAAA9W;AAI0B,YAAA,CAC5CtC,IAAE;AAAA,gBACGmL,MAAM;AAAA,QAAA;AAEhB/J,sBAAc,WAAWgN,cAAcpO,IAAI+N,SAAS,GAAGqL,UAAQ,KAAO;AAEtEuF,cAAAA,yBAA+Bxd,OAAM4f,OAAAzF,mBAA2BpM,OAAAC,KAAYhO,OAAM4f,OAAApH,gBAAwB;AAC1GwC,cAAAA,qBAA2BwC,uBAAsBjb,SAAU1D,EAAE,IAAI2e,yBAAsB,CAAA,GAAOA,wBAAwB3e,EAAE;AACxHoB,sBAAc,WAAW4M,+BAA+BD,SAAS,GAAGoO,oBAAkB,KAAO;AAC7FoC,mCAA2B;AAAA,MAAC;AAC/B7d,aAAAU;AAAAD,QAAAA,CAAAA,IAAAA,OAAA4f,OAAApH;AAAAxY,QAAAA,CAAAA,IAAAA,OAAA4f,OAAAzF;AAAA5a,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAdD,UAAAof,oBAA0B5d;AAcxBI,QAAAA;AAAA,QAAA5B,EAAA,CAAA,MAAA0a,uBAAA1a,EAAA+d,CAAAA,MAAAA,6BAAA/d,EAAAS,CAAAA,MAAAA,OAAA4f,OAAApH,YAAA;AAEF,YAAAuF,yBAA+B9D,sBAAsBnN,UAAUmN,qBAAqBqD,yBAAyB,IAACrc;AACrF8c,WAAAA,yBAAyB1c,aAAMrB,OAAM4f,OAAApH,YAAoBuF,uBAAsBrR,WAAY,KAAK,cAAc,CAAC,IAACzL;AAAY1B,aAAA0a;AAAA1a,aAAA+d;AAAAtd,QAAAA,CAAAA,IAAAA,OAAA4f,OAAApH;AAAAjZ,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAArJ,UAAAye,mBAAyB7c;AAA6HQ,QAAAA;AAAA,QAAApC,EAAAU,CAAAA,MAAAA,iBAAAV,SAAAS,QAAA;AAE/H2B,WAAAA,CAAAoL,aAAAoR,gBAAA;AACnB,cAAA5B,SAAexP,cAAcD,UAAUC,aAAaH,WAAS,IAAC3L;AAAa,YAAA,CACtEsb,QAAM;AAAA,gBACDvS,MAAM,+BAA+B;AAAA,QAAA;AAE/C/J,sBAAc,SAASwM,mBAAmB8P,MAAM,CAAC,IAAEtb,QAAA,KAAkB;AACrE,cAAA0c,sBAA4B,SAAS9Q,+BAA+BD,WAAS,CAAC;AAC9E,cAAAgR,2BAAyCvc,OAAAA,MAAMrB,QAAQ2d,mBAAmB,KAAK5P,OAAAC,KAAY3M,OAAAA,MAAMrB,QAAQ2M,0BAA0BC,WAAS,CAAC,CAAC;AAC9I3M,sBAAc0d,qBAAqBH,yBAAsBnb,OAAAwb,OAAeA,MAAM9Q,WAAW,QAAQ;AAEjGqQ,mCAA2B;AAC3BC,+BAAsBpc,MAAU;AAChCsc,qCAA4Btc,MAAU;AAAA,MAAC;AAC1C1B,aAAAU;AAAAV,aAAAS;AAAAT,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AAbD,UAAAue,iBAAuBnc;AAarBC,QAAAA;AAAAK,QAAAA;AAAA,QAAA1C,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAMWd,WAAAA,MAAMwb,0BAA0B;AAC9Bnb,0CAACmc,GAAS,SAAA,EAAA;AAAA7e,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAL,WAAArC,EAAA,EAAA;AAAA0C,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAEJiD,UAAAA,KAAAxC,OAAMhB,QAAS;AAAYmE,QAAAA;AAAA5D,QAAAA,UAAAiD,IAAA;AAPxB,WAAA6B,2BAAAA,KAAAwM,GAAAA,UACpB,WAAA,MACM,OAAA,WAEG,SAAAjP,IACE,WAAAK,IACd,UAAA;AAAA,QAAA;AAAA,QACoBO;AAAAA,MAAAA,GACrB;AAASjD,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AART,UAAAsgB,iBAAuB1c;AAQbG,QAAAA;AAAA/D,QAAAA,UAAAU,eAAA;AAEaqD,WAAAA,CAAA6W,iBAAAmE,gBAAA;AACnBre,sBAAc,SAAS4M,+BAA+BD,WAAS,CAAC,IAAIuN,iBAAe,KAAO;AAAA,MAAC;AAC9F5a,cAAAU;AAAAV,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAFD,UAAA+a,iBAAuBhX;AAErBC,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAMca,WAACQ,2BAAA,IAAAJ,eAAA,EAAoB,SAAA,aAAa,UAElC,4BAAA;AAAapE,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAAjE,QAAAA,UAAAsgB,gBAAA;AAEX,YAAAxb,2BAAA,KAAA,OALU,EAAA,WAAA,4CACZd,UAAAA;AAAAA,QAAAA;AAAAA,QAGCsc;AAAAA,MAAAA,GACL;AAAMtgB,cAAAsgB;AAAAtgB,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAAS,EAAAA,MAAAA,OAAA4f,OAAApH,YAAA;AAIcxY,YAAAA,OAAM4f,OAAApH,cAAwB,CAAA;AAAAxY,QAAAA,EAAAA,IAAAA,OAAA4f,OAAApH;AAAAjZ,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AACzBmE,UAAAA,MAAA1D,OAAM4f,OAAAzF;AAAuBvW,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACtCkB,YAAA,CAAA;AAAErE,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAAtE,QAAAA,UAAAiO,UAAA;AAEO3J,YAAA2J,WAAQvM,SAAAod,CAAAA,eAAAyB,gBAAA;AAGjBzC,+BAAuBtQ,aAAW;AAClCwQ,qCAA6B3Q,WAAS;AACtCwQ,kCAA0B;AAAA,MAAC;AAC9B7d,cAAAiO;AAAAjO,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AACWuE,UAAAA,MAAA0J,WAAQvM,SAElBqZ;AAAcpW,QAAAA;AAAA,QAAA3E,EAAAmb,EAAAA,MAAAA,sBAAAnb,EAAA,EAAA,MAAAkE,OAAAlE,EAAAmE,EAAAA,MAAAA,OAAAnE,EAAA,EAAA,MAAAsE,OAAAtE,UAAAuE,KAAA;AAdxBI,YAACH,2BAAA,IAAA,cAAA,EACe,YAAAN,KACK,iBAAAC,KACT,QAAAE,KACY8W,oBACH,iBAAA7W,KAOD,gBAAAC,KAEO;AAAAvE,cAAAmb;AAAAnb,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAAsE;AAAAtE,cAAAuE;AAAAvE,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA5E,QAAAA,EAAA,EAAA,MAAAiO,YAAAjO,EAAA,EAAA,MAAAS,OAAA4f,OAAAzF,iBAAA9T,QAAA;AAE1B,YAAA,CAACmH,YAAaxN,OAAM4f,OAAAzF,iBAAA9T,gBACjBtC,2BAAAA,IAAA,OAAA,EAAe,WAAA,+CAA8C,UAE7D,uCAAA,CAAA;AAAMxE,cAAAiO;AAAAjO,cAAAS,OAAA4f,OAAAzF,iBAAA9T;AAAA9G,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAA4E,KAAA;AArBb,YAAAE,2BAAA,KAAA4M,GAAgB,OAAA,EAAA,WAAA,YAEb/M,UAAAA;AAAAA,QAAAA;AAAAA,QAgBCC;AAAAA,MAAAA,GAKL;AAAQ5E,cAAA2E;AAAA3E,cAAA4E;AAAA5E,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAA,QAAAhF,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAA+E,KAAA;AACN,YAAAD,2BAAA,KAAA,OA/BU,EAAA,WAAA,eACZb,UAAAA;AAAAA,QAAAA;AAAAA,QAMAc;AAAAA,MAAAA,GAwBJ;AAAM/E,cAAAiE;AAAAjE,cAAA+E;AAAA/E,cAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAAjF,QAAAA,UAAAkO,sBAAAlO,EAAAmb,EAAAA,MAAAA,sBAAAnb,EAAAue,EAAAA,MAAAA,kBAAAve,EAAA,EAAA,MAAAiO,YAAAjO,EAAA,EAAA,MAAAmO,WAAAnO,EAAAof,EAAAA,MAAAA,qBAAApf,UAAA4Z,mBAAA5Z,EAAA4d,EAAAA,MAAAA,sBAAA5d,EAAA,EAAA,MAAAye,oBAAAze,EAAA,EAAA,MAAA0a,uBAAA1a,EAAA+d,EAAAA,MAAAA,6BAAA/d,UAAAS,OAAA4f,OAAAzF,iBAAA;AAEL3V,YAACgJ,CAAAA,YAAazJ,2BAAAA,IAAA,oBAAA,EACF,SAAA,OACQ,wBACXoZ,MAAiB,oBACdzP,SACWD,oBACV,UAAA,MAAA;AACN2P,mCAA2B;AAC3BC,+BAAsBpc,MAAU;AAChCsc,qCAA4Btc,MAAU;AAAA,MAAC,GAE9B,aAAA,MAAA;AACTmc,mCAA2B;AAC3BC,+BAAsBpc,MAAU;AAChCsc,qCAA4Btc,MAAU;AAAA,MAAC,GAEvByZ,oBACVoD,UAAa,gBACV7D,aAAkB,qBACZqD,mBAAAA,2BACTU,UAAAA,kBACQ,kBAAAlZ,QAAQmV,mBAAmB,GAC/B,cAACA,CAAAA,qBACK,oBAAA,CAACA,qBACF0E,mBACG,sBAAA1E,sBAAmBhZ,SAAejB,OAAM4f,OAAAzF,iBAC7ChB,gBAAkB,CAAA;AAAA5Z,cAAAkO;AAAAlO,cAAAmb;AAAAnb,cAAAue;AAAAve,cAAAiO;AAAAjO,cAAAmO;AAAAnO,cAAAof;AAAApf,cAAA4Z;AAAA5Z,cAAA4d;AAAA5d,cAAAye;AAAAze,cAAA0a;AAAA1a,cAAA+d;AAAAtd,QAAAA,EAAAA,IAAAA,OAAA4f,OAAAzF;AAAA5a,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AAAAkF,QAAAA;AAAA,QAAAlF,EAAAgF,EAAAA,MAAAA,OAAAhF,UAAAiF,KAAA;AA5D3CC,YACIF,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAiCCC;AAAAA,MAAAA,GA0BsC;AAExCjF,cAAAgF;AAAAhF,cAAAiF;AAAAjF,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AA9DHkF,WAAAA;AAAAA,EA8DG;AC7IJ,WAAAsb,yBAAAzgB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAkC,UAAA;AAAA,MAAAgO;AAAAA,IAAAA,IAAAlO;AAIrC,UAAA;AAAA,MAAAU;AAAAA,MAAAE;AAAAA,QAGIM,iBAAU;AAAEO,QAAAA;AAAAxB,QAAAA,SAAAiO,UAAA;0CAaP,6BAAoCA,SAAW,CAAA;AAAAjO,aAAAiO;AAAAjO,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAAS,QAAA;AAIjBqB,WAAAA,OAAAA,MAAMrB,QAfvB,gBAe4C;AAACT,aAAAS;AAAAT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAAW,gBAAAX,EAAA,CAAA,MAAA4B,IAAA;AAD3DQ,iDAAgB,EAAA,WAAA,cACZ,UAACoC,+BAAA8B,GAAAA,oBAAA,EAA0B,OAAA1E,IACA,OAAA,aACDwT,MAjBhB,kBAkBe,MAAA,UACA,MAAA,SACKnH,UACAtN,wBAAY,EAC9C,CAAA;AAAMX,aAAAiO;AAAAjO,aAAAW;AAAAX,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,SAAAS,QAAA;AAGyBqB,WAAAA,OAAAA,MAAMrB,QAxBvB,gBAwB4C;AAACT,aAAAS;AAAAT,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAW,gBAAAX,EAAA,EAAA,MAAAqC,IAAA;AAD3DK,iDAAgB,EAAA,WAAA,cACZ,UAAC8B,+BAAA8B,GAAAA,oBAAA,EAA0B,OAAAjE,IACA,OAAA,aACDgT,MA1BhB,kBA2Be,MAAA,UACA,MAAA,SAEKpH,UACAtN,wBAAY,EAC9C,CAAA;AAAMX,cAAAiO;AAAAjO,cAAAW;AAAAX,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,UAAAS,QAAA;AAKSqB,WAAAA,OAAAA,MAAMrB,QApCF,qBAoC4B;AAACT,cAAAS;AAAAT,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAW,gBAAAX,EAAA,EAAA,MAAAiD,IAAA;AAFhDW,iDAAgB,EAAA,WAAA,cACZ,UAACY,+BAAA8B,GAAAA,oBAAA,EACU,OAAArD,IACA,OAAA,aACDwd,MAtCK,uBAuCN,MAAA,UACA,MAAA,SAEKxS,UACAtN,wBAAY,EAC9B,CAAA;AAAMX,cAAAiO;AAAAjO,cAAAW;AAAAX,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA/D,QAAAA,UAAAS,QAAA;AAISqB,WAAAA,OAAAA,MAAMrB,QA/CF,qBA+C4B;AAACT,cAAAS;AAAAT,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAAhE,QAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAW,gBAAAX,EAAA,EAAA,MAAA+D,IAAA;AAFhDC,iDAAgB,EAAA,WAAA,cACZ,UAACQ,+BAAA8B,GAAAA,oBAAA,EACU,OAAAvC,IACA,OAAA,aACD2c,MAjDK,uBAkDN,MAAA,UACA,MAAA,SAEKzS,UACAtN,wBAAY,EAC9B,CAAA;AAAMX,cAAAiO;AAAAjO,cAAAW;AAAAX,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAAjE,QAAAA,UAAAiO,UAAA;kDAEU,EAAA,WAAA,cACZ,UAAAzJ,2BAAA,IAAC6B,OAAYsa,OAAAA,EAAAA,MAzDE,uBA0DH,MAAA,YACPzc,UAAAA,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAoP;AAAAA,UAAAC;AAAAA,QAAAA,IAAArP;AAAiC,8CACvB,eACG,EAAA,OAAA,kBACG+J,UACJsF,MACCD,OAAQ;AAAA,SAE3B,EACJ,CAAA;AAAMtT,cAAAiO;AAAAjO,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAAlE,QAAAA,UAAAiO,UAAA;kDACU,EAAA,WAAA,cACZ,UAAAzJ,2BAAA,IAAC6B,OAAYua,OAAAA,EAAAA,MApEE,uBAqEH,MAAA,YACPzc,UAAAA,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAmP,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAA9P;AACS,eAAAK,+BAAC,iBACG,OAAA,kBACGyJ,UACJsF,MAAG,QACFD,OAAI,SAAI;AAAA,SAE3B,EACJ,CAAA;AAAMtT,cAAAiO;AAAAjO,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAAnE,QAAAA,UAAAiO,UAAA;kDACU,EAAA,WAAA,cACZ,UAAAzJ,2BAAA,IAAC6B,OAAYwa,OAAAA,EAAAA,MA/EC,sBAgFF,MAAA,YACPxc,UAAAA,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAAiP,OAAA2B;AAAAA,UAAA1B,MAAA2B;AAAAA,QAAAA,IAAA7Q;AACS,eAAAG,+BAAC,iBACG,OAAA,iBACGyJ,UACJsF,MAAG,QACFD,OAAI,SAAI;AAAA,SAE3B,EACJ,CAAA;AAAMtT,cAAAiO;AAAAjO,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAwB,MAAAxB,EAAA,EAAA,MAAAiE,OAAAjE,EAAA,EAAA,MAAAkE,OAAAlE,EAAAmE,EAAAA,MAAAA,OAAAnE,EAAAoC,EAAAA,MAAAA,MAAApC,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAA4D,EAAAA,MAAAA,MAAA5D,UAAAgE,IAAA;AACJ,YAAAc,2BAAA,KAAA,OAtFU,EAAA,WAAA,2BACZtD,UAAAA;AAAAA,QAAAA;AAAAA,QAGAY;AAAAA,QAUAM;AAAAA,QAYAkB;AAAAA,QAYAI;AAAAA,QAYAC;AAAAA,QAYAC;AAAAA,QAYAC;AAAAA,MAAAA,GAYJ;AAAMnE,cAAAwB;AAAAxB,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAAoC;AAAApC,cAAA0C;AAAA1C,cAAA4D;AAAA5D,cAAAgE;AAAAhE,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAtFNqE,WAAAA;AAAAA,EAsFM;AC1GP,WAAAyc,oBAAA/gB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA6B,UAAA;AAAA,MAAAgO;AAAAA,IAAAA,IAAAlO;AAIhC,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAAkCO,iBAAU;AAAEO,QAAAA;AAAAxB,QAAAA,SAAAiO,UAAA;AAKtC,WAAAzJ,2BAAA,IAAA,OAAgB,EAAA,WAAA,eAEZ,UAAAA,2BAAA,IAAC,mBACG,UAACA,2BAAAA,IAAA,0BAAA,EAAmCyJ,YACxC,CAAA,GAEJ;AAAMjO,aAAAiO;AAAAjO,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAAU,eAAA;AAOmBkB,WAAAuD,CAAA,MAAA;AACQ,sBAAA,gBAAgBA,EAACC,OAAAC,UAAkB,KAAE3D,SAAeqf,WAAW5b,EAACC,OAAAC,KAAa,CAAC;AAAA,MAAC;AAChGrF,aAAAU;AAAAV,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,SAAAS,QAAA;AAEMqB,WAAAA,OAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,aAAAS;AAAAT,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAA4B,MAAA5B,EAAA,CAAA,MAAAoC,IAAA;AATzDC,iDAAgB,EAAA,WAAA,eAEZ,UAAAmC,2BAAA,IAACiB,gBAAgB,MAAA,gBACIwI,UACJ,MAAA,UACI,UAAArM,IAGH,OAAA,iBACA,OAAAQ,GAAmC,CAAA,GAEzD;AAAMpC,aAAAiO;AAAAjO,aAAA4B;AAAA5B,aAAAoC;AAAApC,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAAwB,EAAAA,MAAAA,MAAAxB,UAAAqC,IAAA;AArBVK,WAEIlB,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAQAa;AAAAA,MAAAA,GAWM;AACPrC,cAAAwB;AAAAxB,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAtBH0C,WAAAA;AAAAA,EAsBG;AC9BJ,WAAAse,uBAAAjhB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAgC,UAAA;AAAA,MAAA6W;AAAAA,MAAAD;AAAAA,MAAA5I;AAAAA,MAAAtK;AAAAA,IAAAA,IAAA5D;AAYnC,UAAA;AAAA,MAAAU;AAAAA,MAAAE;AAAAA,MAAAE;AAAAA,QAIII,iBAA2C;AAE/C,UAAAggB,aAAmBC,KAAAA,wBAAwB;AAAE,QAAA,CAExCD,YAAU;AAAAzf,UAAAA;AAAA,UAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACJ3B,cAAAgD,2BAAA,IAAA,OAAA,EAAgB,WAAA,eACnB,UAAAA,+BAAC+M,GAAAA,mBACL,CAAA,GAAA;AAAMvR,eAAAwB;AAAAA,MAAAA,OAAA;AAAAA,cAAAxB,EAAA,CAAA;AAAA,MAAA;AAFCwB,aAAAA;AAAAA,IAAAA;AAIX2f,UAAAA,WAAiBtK,WAAW,YAAY;AAAOrV,QAAAA;AAAA,QAAAxB,EAAAmhB,CAAAA,MAAAA,YAAAnhB,SAAAS,QAAA;AACTqB,WAAAA,OAAAA,MAAMrB,QAAQ0gB,QAAQ;AAACnhB,aAAAmhB;AAAAnhB,aAAAS;AAAAT,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAA7D,UAAAohB,YAAsC5f;AAAwBI,QAAAA;AAAA5B,QAAAA,EAAAa,CAAAA,MAAAA,UAAAb,SAAAmhB,YAAAnhB,EAAA,CAAA,MAAA2D,YAAA;AACxBA,WAAAA,cAAc7B,aAAMjB,QAAQsgB,QAAQ;AAACnhB,aAAAa;AAAAb,aAAAmhB;AAAAnhB,aAAA2D;AAAA3D,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAA3E,UAAAqhB,YAAsCzf;AAST,UAAAQ,KAAC0U,YAAYvR,QAAQ6b,SAAS,KAAMnT;AAAQ5L,QAAAA;AAAA,QAAArC,EAAAW,CAAAA,MAAAA,gBAAAX,EAAA,CAAA,MAAAqhB,aAAArhB,EAAAmhB,EAAAA,MAAAA,YAAAnhB,EAAA,EAAA,MAAAohB,aAAAphB,UAAAoC,IAAA;AANrE,WAAAoC,2BAAAA,IAAA+R,WAAAA,UAAA,EACI,gDAAgB,EAAA,WAAA,eAEZ,UAAC/R,2BAAA,IAAA6B,OAAA,OAAA,EAAY8a,MAAO,UACHA,UACL,MAAA,UACK,UAAA/e,IACHgf,kBACAC,OAAQ,WACD1gB,cACV2gB,IAAgBA,kBAE/B,CAAA,EAAA,CAAA,EAAM,CAAA;AAEPthB,aAAAW;AAAAX,aAAAqhB;AAAArhB,cAAAmhB;AAAAnhB,cAAAohB;AAAAphB,cAAAoC;AAAApC,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAdHqC,WAAAA;AAAAA,EAcG;AAIJ,WAAAif,kBAAAvhB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAAgO,QAAAA;AAAA2D,QAAAA;AAAAjR,QAAAA;AAAAwgB,QAAAA;AAAAI,QAAAA;AAAAlc,QAAAA;AAAArF,QAAAA,SAAAD,IAAA;AAA2B,OAAA;AAAA,QAAAkO;AAAAA,QAAAkT;AAAAA,QAAA9b;AAAAA,QAAA1E;AAAAA,QAAAiR;AAAAA,QAAA,GAAA2P;AAAAA,MAAAA,IAAAxhB;AAajCC,aAAAD;AAAAC,aAAAiO;AAAAjO,aAAA4R;AAAA5R,aAAAW;AAAAX,aAAAmhB;AAAAnhB,aAAAuhB;AAAAvhB,aAAAqF;AAAAA,IAAAA,OAAA;AAAA4I,iBAAAjO,EAAA,CAAA;AAAA4R,cAAA5R,EAAA,CAAA;AAAAW,qBAAAX,EAAA,CAAA;AAAAmhB,iBAAAnhB,EAAA,CAAA;AAAAuhB,cAAAvhB,EAAA,CAAA;AAAAqF,cAAArF,EAAA,CAAA;AAAA,IAAA;AAEG,UAAAihB,aAAmBC,KAAAA,wBAAwB;AAAE,QAAA,CAExCD,YAAU;AAAAzf,UAAAA;AAAA,UAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACJ3B,cAAAgD,2BAAA,IAAA,OAAA,EAAgB,WAAA,eACnB,UAAAA,+BAAC+M,GAAAA,mBACL,CAAA,GAAA;AAAMvR,eAAAwB;AAAAA,MAAAA,OAAA;AAAAA,cAAAxB,EAAA,CAAA;AAAA,MAAA;AAFCwB,aAAAA;AAAAA,IAAAA;AAEDA,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAihB,YAAAO,aAAA;AAEUP,WAAAA,YAAUO,eAAmB,CAAA;AAAA,QAAA,CAAA,IAAAP,YAAAO;AAAAxhB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAjD,UAAAwhB,cAAoBhgB;AAA8BI,QAAAA;AAAA5B,QAAAA,EAAAwhB,EAAAA,MAAAA,eAAAxhB,EAAAiO,EAAAA,MAAAA,YAAAjO,EAAA4R,EAAAA,MAAAA,SAAA5R,UAAAW,gBAAAX,EAAA,EAAA,MAAAmhB,YAAAnhB,EAAA,EAAA,MAAAuhB,SAAAvhB,EAAA,EAAA,MAAAqF,OAAA;AAElD,YAAAjF,SAAyBqQ,MAAAC,KAAW,IAAAf,IAChCnB,OAAA/N,OAAc+gB,WAAW,EAACza,IAAAsD,OAAiB,EAACvH,OAAAyC,OAAe,CAAa,EAAA9E,QAClE;AAEVghB,YAAAA,uBAA6BD,YAAW1e,OAAAoH,QAA2B;AAAE9H,UAAAA;AAAApC,UAAAA,UAAAwhB,aAAA;AAc5Cpf,cAAAmW,CAAA,aAAA;AACTmJ,gBAAAA,qBAA2BF,YAAWtF,KAAAyF,CAAAA,eAAoBA,WAAUriB,OAAQiZ,YAAYoJ,WAAUjiB,SAAU6Y,QAAQ;AAAE,cAAA,CACjHmJ,oBAAkB;AAAA,mBAAA;AAAA,UAAA;AAEnB,iBAAA5c,2BAAA,YAAe,EAAA,WAAA,iBACX,UAAA;AAAA,YAACN,2BAAAA,IAAA7B,KAAA,aAAA,EAA8B+e,kBAAiB,mBAChD,CAAA;AAAA,YAAAld,2BAAAA,IAACJ,iBACY,SAAA,aACC,WAAA,oBACTsd,UAAAA,oBAAkBjiB,KAAAsN,YAAAA,EACvB,CAAA;AAAA,UAAA,GACJ;AAAA,QAAM;AACb/M,gBAAAwhB;AAAAxhB,gBAAAoC;AAAAA,MAAAA,OAAA;AAAAA,cAAApC,EAAA,EAAA;AAAA,MAAA;AAAAqC,UAAAA;AAAArC,UAAAA,UAAAwhB,aAAA;AAGenf,cAAAU,CACZ,UAAAyB,2BAAAA,IAACod,GAAAA,aAAmB,EAAA,OAAA7e,SAAS,SAGrBye,UAAW1e,YAAAA,OAAA+e,CAAsBF,iBAAAA,aAAU5e,UAAWA,KAAK,EAACgE,IAAA+a,CAAAA,iBAE5Ctd,2BAAAA,IAAAsG,GAAAA,YAAA,EAEG,OAAA6W,aAAUriB,MAAOqiB,aAAUjiB,MAClC,UAAAoF,2BAAAA,KAOM,OAPS,EAAA,WAAA,iBACX,UAAA;AAAA,UAACN,2BAAAA,IAAA7B,KAAA,aAAA,EAA8Bgf,kBAAS,aACxC,CAAA;AAAA,UAAAnd,2BAAAA,IAACJ,iBACY,SAAA,aACC,WAAA,oBACTud,UAAAA,cAAUliB,KAAAsN,YAAAA,EACf,CAAA;AAAA,QAAA,EACJ,CAAA,EATK,GAAA,GAAG4U,aAAUriB,MAAOqiB,aAAUjiB,IAAK,IAAIqD,KAAK,EAUrD,CACH,EAhBK,GAAA,SAASA,KAAK,EAmBhC;AACH/C,gBAAAwhB;AAAAxhB,gBAAAqC;AAAAA,MAAAA,OAAA;AAAAA,cAAArC,EAAA,EAAA;AAAA,MAAA;2CA/CJoK,GAAAA,QACU,EAAA,OAAA7E,QAAQqM,KAAK,GACV3D,UACH,OAAA5I,SAAS,IACN,UAAA,gBACJ8b,MAAO,UACP,MAAA,SACK,WAAG,MACJxgB,UAAW,cACd,OAAA,qBACM,aAAAyB,KAaTmf,GAAAA,OAEHnhB,UAAAA;AAAAA,QAAAA,OAAM2hB,QAAS1f,GAsBf;AAAA,QAEAof,uDAAyBG,GAAmB,aAAA,EAAA,OAAA,SACxCH,UAAoB1a,qBAAAA,IAAAiE,QAahB,EAGT,CAAA;AAAA,MAAA,GAEJ;AAAShL,cAAAwhB;AAAAxhB,cAAAiO;AAAAjO,cAAA4R;AAAA5R,cAAAW;AAAAX,cAAAmhB;AAAAnhB,cAAAuhB;AAAAvhB,cAAAqF;AAAArF,cAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,EAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;0CAER0C,KAAAA,gBAAa,UAGd,kEAAA,CAAA;AAAe7F,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,UAAA4B,IAAA;AA1EnBS,WACIT,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAsEAQ;AAAAA,MAAAA,GAGe;AAChBpC,cAAA4B;AAAA5B,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AA3EHqC,WAAAA;AAAAA,EA2EG;AA1GJ,WAAA2I,SAAAgX,cAAA;AAoF4B,WAAAxd,2BAAAA,IAACsG,GAAAA,YACkB,EAAA,OAAA6W,aAAUriB,MAAOqiB,aAAUjiB,MACjD,UAAAoF,2BAAA,KAOM,OAPS,EAAA,WAAA,iBACX,UAAA;AAAA,MAACN,2BAAAA,IAAA7B,KAAA,aAAA,EAA8Bgf,kBAAS;MACxCnd,2BAAAA,IAACJ,iBACY,SAAA,aACC,WAAA,oBACTud,UAAAA,cAAUliB,KAAAsN,YAAAA,EACf,CAAA;AAAA,IAAA,EAAA,CACJ,EAToB4U,GAAAA,aAAUriB,MAAOqiB,aAAUjiB,IAUnD;AAAA,EAAa;AA9FlC,WAAAwK,SAAA+X,KAAA;AAAA,WA4BuDA,CAAAA,IAAGlf;AAAAA,EAAA;AA5B1D,WAAAsH,QAAAlF,GAAA;AAAA,WAyBqCA,EAACpC;AAAAA,EAAA;ACvEtC,WAAAmf,sBAAAniB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA+B,UAAA;AAAA,MAAAgO;AAAAA,IAAAA,IAAAlO;AAIlC,UAAA;AAAA,MAAAU;AAAAA,MAAAI;AAAAA,MAAAD;AAAAA,MAAAF;AAAAA,QAKIO,iBAA2C;AAAEO,QAAAA;AAAAxB,QAAAA,SAAAS,QAAA;AAGXqB,WAAAA,OAAAA,MAAMrB,QAD3B,MAC2C;AAACT,aAAAS;AAAAT,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAA7D,UAAAmiB,YAAsC3gB;AAAwBI,QAAAA;AAAA,QAAA5B,EAAAa,CAAAA,MAAAA,UAAAb,SAAAY,SAAA;AACxBgB,WAAAE,aAAMlB,SAF3B,MAE4C,KAAKkB,OAAAA,MAAMjB,QAFvD,MAEuE;AAACb,aAAAa;AAAAb,aAAAY;AAAAZ,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAzF,UAAAoiB,YAAsCxgB;AAAoDQ,QAAAA;AAAApC,QAAAA,SAAAS,QAAA;AAG/CqB,WAAAA,OAAAA,MAAMrB,QAD3B,WACgD;AAACT,aAAAS;AAAAT,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAvE,UAAAqiB,iBAA2CjgB;AAA6BC,QAAAA;AAAA,QAAArC,EAAAa,CAAAA,MAAAA,UAAAb,SAAAY,SAAA;AAC7ByB,WAAAP,aAAMlB,SAF3B,WAEiD,KAAKkB,OAAAA,MAAMjB,QAF5D,WAEiF;AAACb,aAAAa;AAAAb,aAAAY;AAAAZ,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAxG,UAAAsiB,iBAA2CjgB;AAOZ,UAAAK,KAAAyf,aAAa;AACblf,UAAAA,KAAAsC,QAAQ6c,SAAS;AAACxe,QAAAA;AAAA5D,QAAAA,UAAAU,eAAA;AAEV8J,WAAAA,CAAAA,MAAO9J,cAhB7B,QAgBqD8J,CAAC;AAACxK,cAAAU;AAAAV,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAAC,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAcpDY,WAACS,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,aAAa,UAAW,eAAA;AAC3C9G,WAACQ,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,QAAQ,UAAM,UAAA;AAAa9K,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAD,WAAA/D,EAAA,EAAA;AAAAgE,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAA,EAAA,MAAAiO,YAAAjO,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,IAAA;AAnBlDK,4CAACmG,GAAamY,QAAAA,EAAAA,MAZb,QAac,OAAA7f,IACA,OAAAO,IACD,MAAA,SACS,eAAAW,IACR,OAAA,QACI,WAAG,MACD,aAAAyG,SAUH4D,UACdlK,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,MAAAA,GACJ;AAAShE,cAAAiO;AAAAjO,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AACYkE,UAAAA,MAAAqB,QAAQ6c,SAAS;AAACje,QAAAA;AAAA,QAAAnE,EAAAoiB,EAAAA,MAAAA,aAAApiB,UAAAkE,KAAA;AAAvCC,YAACK,2BAAA,IAAAqB,mBAAA,EAAoB,OAAA3B,KAChBke,UACL,WAAA;AAAepiB,cAAAoiB;AAAApiB,cAAAkE;AAAAlE,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAmE,KAAA;AAxBnBE,4CAAA,OACIJ,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAqBAE;AAAAA,MAAAA,GAGJ;AAAMnE,cAAAiE;AAAAjE,cAAAmE;AAAAnE,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAMa,UAAAsE,MAAA+d,kBAAkB;AAAE9d,QAAAA;AAAAvE,QAAAA,UAAAU,eAAA;AACZ6D,YAAAmH,SAAOhL,cAvCxB,aAuCqD8J,QAAM,SAAgBA,OAAAA,GAAC;AAACxK,cAAAU;AAAAV,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAWpE2E,UAAAA,MAAAY,QAAQ+c,cAAc;AAAC1d,QAAAA;AAAAG,QAAAA;AAAAC,QAAAA;AAAA,QAAAhF,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAElCyB,YAACJ,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,QAAQ,UAAM,UAAA;AACjC/F,YAACP,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,aAAa,UAAW,eAAA;AAC3C9F,YAACR,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,aAAa,UAAe,mBAAA;AAAa9K,cAAA4E;AAAA5E,cAAA+E;AAAA/E,cAAAgF;AAAAA,IAAAA,OAAA;AAAAJ,YAAA5E,EAAA,EAAA;AAAA+E,YAAA/E,EAAA,EAAA;AAAAgF,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAA,QAAAjF,EAAA,EAAA,MAAAiO,YAAAjO,EAAAsE,EAAAA,MAAAA,OAAAtE,EAAAuE,EAAAA,MAAAA,OAAAvE,UAAA2E,KAAA;AApBhEM,4CAACmF,GAAaoY,QAAAA,EAAAA,MAlCR,aAmCYvU,UACJ,MAAA,SACK,WAAG,MACP,OAAA3J,KACQ,eAAAC,KACF,aAAA2F,UAUN,OAAAvF,KACA,OAAA,mBACXC,UAAAA;AAAAA,QAAAA;AAAAA,QACAG;AAAAA,QACAC;AAAAA,MAAAA,GACJ;AAAShF,cAAAiO;AAAAjO,cAAAsE;AAAAtE,cAAAuE;AAAAvE,cAAA2E;AAAA3E,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AACYkF,UAAAA,MAAAK,QAAQ+c,cAAc;AACtC,UAAAhd,MAAAgd,kBAAkB;AAAsE9c,QAAAA;AAAA,QAAAxF,EAAAkF,EAAAA,MAAAA,OAAAlF,UAAAsF,KAAA;AAD7FE,YAAChB,2BAAA,IAAAqB,mBAAA,EAAoB,OAAAX,KAChBI,UACL,KAAA;AAAetF,cAAAkF;AAAAlF,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA0F,QAAAA;AAAA,QAAA1F,EAAAiF,EAAAA,MAAAA,OAAAjF,UAAAwF,KAAA;AAzBnBE,4CAAA,OACIT,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAsBAO;AAAAA,MAAAA,GAGJ;AAAMxF,cAAAiF;AAAAjF,cAAAwF;AAAAxF,cAAA0F;AAAAA,IAAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAAA2F,QAAAA;AAAA,QAAA3F,EAAAqE,EAAAA,MAAAA,OAAArE,UAAA0F,KAAA;AAEJ,YAAAZ,2BAAA,KAAA,OAvDU,EAAA,WAAA,mCACZT,UAAAA;AAAAA,QAAAA;AAAAA,QA0BAqB;AAAAA,MAAAA,GA4BJ;AAAM1F,cAAAqE;AAAArE,cAAA0F;AAAA1F,cAAA2F;AAAAA,IAAAA,OAAA;AAAAA,YAAA3F,EAAA,EAAA;AAAA,IAAA;AAAA4F,QAAAA;AAAA5F,QAAAA,UAAAiO,UAAA;AAEN,YAAAzJ,2BAAA,IAAA,OAAgB,EAAA,WAAA,eACZ,UAAAA,2BAAA,IAAC,mBACG,UAACA,2BAAAA,IAAA,2BAAA,EAAoCyJ,YACzC,CAAA,GACJ;AAAMjO,cAAAiO;AAAAjO,cAAA4F;AAAAA,IAAAA,OAAA;AAAAA,YAAA5F,EAAA,EAAA;AAAA,IAAA;AAAA8F,QAAAA;AAAA,QAAA9F,EAAA2F,EAAAA,MAAAA,OAAA3F,UAAA4F,KAAA;AA9DVE,YACIH,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAyDAC;AAAAA,MAAAA,GAIM;AACP5F,cAAA2F;AAAA3F,cAAA4F;AAAA5F,cAAA8F;AAAAA,IAAAA,OAAA;AAAAA,YAAA9F,EAAA,EAAA;AAAA,IAAA;AA/DH8F,WAAAA;AAAAA,EA+DG;AAnFJ,WAAAoE,SAAAuY,KAAA;AAAA,YAwDiCjY,KAAC;AAAA,MAAA,KACA,aAAW;AACL,eAAA;AAAA,MAAA;AAAA,MAAW,KACjB,aAAW;AACL,eAAA;AAAA,MAAA;AAAA,MAAe,SAAA;AAEf,eAAA;AAAA,MAAA;AAAA,IAAM;AAAA,EAAA;AA9D9C,WAAAH,QAAAa,KAAA;AAAA,YA+BiCV,KAAC;AAAA,MAAA,KACA,aAAW;AACL,eAAA;AAAA,MAAA;AAAA,MAAW,KACjB,QAAM;AACA,eAAA;AAAA,MAAA;AAAA,MAAM,SAAA;AAEN,eAAA;AAAA,MAAA;AAAA,IAAE;AAAA,EAAA;ACvC1C,WAAAkY,2BAAA3iB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,CAAA;AAAoC,UAAA;AAAA,MAAAgO;AAAAA,IAAAA,IAAAlO;AAE1CyB,QAAAA;AAAAxB,QAAAA,SAAAiO,UAAA;iDAS2B,EAAA,WAAA,eACZ,UAAAzJ,2BAAA,IAAC6B,OAAW,OAAA,EAAA,MAAA,YAAiBsc,MAPd,sBAQV/gB,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA0R;AAAAA,UAAAC;AAAAA,QAAAA,IAAA3R;AACS,eAAA4C,+BAAC,iBACG,OAAA,wBACGyJ,UACJsF,MACG,SAAA,uFACFD,OAAQ;AAAA,SAE3B,EACJ,CAAA;AAAMtT,aAAAiO;AAAAjO,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAAiO,UAAA;iDAEU,EAAA,WAAA,eACZ,UAAAzJ,2BAAA,IAAC6B,OAAYuc,OAAAA,EAAAA,MAnBR,YAoBO,MAAA,YACPxgB,UAAAA,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAkR,OAAAU;AAAAA,UAAAT,MAAAU;AAAAA,QAAAA,IAAA7R;AACS,eAAAoC,2BAAA,IAAC,eACG,EAAA,OAAA,aACGyJ,UACD,SAAA,wDACHsF,MAAAA,QACCD,OAAI,QAAI,CAAA;AAAA,SAE3B,EACJ,CAAA;AAAMtT,aAAAiO;AAAAjO,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AACJ,WAAAkD,2BAAA,KAAA,OA3BU,EAAA,WAAA,2BACZtD,UAAAA;AAAAA,QAAAA;AAAAA,QAaAI;AAAAA,MAAAA,GAaJ;AAAM5B,aAAAwB;AAAAxB,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AA3BNoC,WAAAA;AAAAA,EA2BM;ACtCP,WAAAygB,sBAAA9iB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,CAAA;AAA+B,UAAA;AAAA,MAAAgO;AAAAA,IAAAA,IAAAlO;AAErCyB,QAAAA;AAAAxB,QAAAA,SAAAiO,UAAA;AAGOzM,WACIgD,2BAAAA,IAAA+R,WAAA,UAAA,EAAA,UAAA/R,2BAAA,WAAgB,EAAA,WAAA,eAEZ,UAAAA,2BAAA,IAAC,iBACG,EAAA,UAAAA,2BAAAA,IAAC,2BAAoCyJ,EAAAA,YACzC,CAAA,EAEJ,CAAA,GAAM;AACPjO,aAAAiO;AAAAjO,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AARHwB,WAAAA;AAAAA,EAQG;ACLKshB,WAAAA,yBAAyBC,cACAC,kBACApJ,iBAA2D;AAE5FqJ,QAAAA;AACJ,QAAID,qBAAqB,cAAc;AACnCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEoK,SAASzhB;AAAAA,QACT0hB,WAAW1hB;AAAAA,QACX2hB,UAAU3hB;AAAAA,QACV4hB,OAAO5hB;AAAAA,QACP6hB,KAAK7hB;AAAAA,QACLmM,YAAYnM;AAAAA,MAAAA,CAEpB;AAAA,IAAA,WACOshB,qBAAqB,aAAa;AACzCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEqK,WAAW;AAAA,QACXD,SAASzhB;AAAAA,QACT2hB,UAAU3hB;AAAAA,QACV4hB,OAAO5hB;AAAAA,QACP6hB,KAAK7hB;AAAAA,QACLmM,YAAYnM;AAAAA,MAAAA,CAEpB;AAAA,IAAA,WACOshB,qBAAqB,YAAY;AACxCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEoK,SAASzhB;AAAAA,QACT0hB,WAAW1hB;AAAAA,QACX2hB,UAAU;AAAA,QACVC,OAAO5hB;AAAAA,QACP6hB,KAAK7hB;AAAAA,MAAAA,CAEb;AAAA,IAAA,WACOshB,qBAAqB,OAAO;AACnCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEoK,SAASzhB;AAAAA,QACT0hB,WAAW1hB;AAAAA,QACX2hB,UAAU3hB;AAAAA,QACV4hB,OAAO5hB;AAAAA,QACP6hB,KAAK;AAAA,QACL1V,YAAYnM;AAAAA,MAAAA,CAEpB;AAAA,IAAA,WACOshB,qBAAqB,SAAS;AACrCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEoK,SAASzhB;AAAAA,QACT0hB,WAAW1hB;AAAAA,QACX2hB,UAAU3hB;AAAAA,QACV4hB,OAAO;AAAA,QACPC,KAAK7hB;AAAAA,QACLmM,YAAYnM;AAAAA,MAAAA,CAEpB;AAAA,IAAA,WACOshB,qBAAqB,UAAU;AACtCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEoK,SAASzhB;AAAAA,QACT0hB,WAAW1hB;AAAAA,QACX2hB,UAAU3hB;AAAAA,QACV4hB,OAAO5hB;AAAAA,QACP6hB,KAAK7hB;AAAAA,QACLmM,YAAYkV,aAAalV,cAAc,CAAA;AAAA,MAAA,CAE/C;AAAA,IAAA,WACOmV,qBAAqB,gBAAgB;AAC5CC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,UACVhL,YAAYkV,aAAajK,IAAIjL,cAAc,CAAA;AAAA,QAAA;AAAA,MAC/C,CAER;AAAA,IAAA,WACOmV,qBAAqB,gBAAgB;AAC5CC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxElL,YAAYnM;AAAAA,MAAAA,CAEpB;AAAA,IAAA,WACOshB,qBAAqB,iBAAiB;AAC7CC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxElL,YAAYkV,aAAalV,cAAc,CAAA;AAAA,MAAA,CAE/C;AAAA,IAAA,WACOmV,qBAAqB,uBAAuB;AACnDC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,UACVhL,YAAYkV,aAAajK,IAAIjL,cAAc,CAAA;AAAA,QAAA;AAAA,MAC/C,CAER;AAAA,IAAA,WACOmV,qBAAqB,eAAe;AAC3CC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEoK,SAAS;AAAA,UACLhM,aAAa;AAAA,QAAA;AAAA,MACjB,CAER;AAAA,IAAA,WACO6L,qBAAqB,qBAAqB;AACjDC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,UACVsK,SAASJ,aAAajK,IAAIqK,WAAW;AAAA,YACjChM,aAAa;AAAA,UAAA;AAAA,QACjB;AAAA,MACJ,CAER;AAAA,IAAA,WACO6L,qBAAqB,SAAS;AACrCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEyK,UAAU;AAAA,QACVvK,YAAY8J,aAAa9J,cAAc,CAAA;AAAA,MAAC,CAEhD;AAAA,IAAA,WACO+J,qBAAqB,aAAa;AACzCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEyK,UAAU;AAAA,QACVvK,YAAYvX;AAAAA,MAAAA,CAEpB;AAAA,IAAA,WACOshB,qBAAqB,aAAa;AACzCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,MAAA,CAEhF;AAAA,IAAA,WACOiK,qBAAqB,oBAAoB;AAChDC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxED,IAAI;AAAA,UACAD,UAAU;AAAA,QAAA;AAAA,MACd,CAER;AAAA,IAAA,WACOmK,qBAAqB,UAAU;AACtCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,MAAA,CAEhF;AAAA,IAAA,WACOiK,qBAAqB,aAAa;AACzCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxE0K,MAAM;AAAA,MAAA,CAEd;AAAA,IAAA,WACOT,qBAAqB,UAAU;AACtCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,MAAA,CAEhF;AAAA,IAAA,WACOiK,qBAAqB,SAAS;AACrCC,wBAAkBC,eACdH,cACA;AAAA,QACIlK,UAAU;AAAA,QACVkB,gBAAgB;AAAA,QAChBhB,UAAUgK,aAAahK,aAAarX,SAAYqhB,aAAahK,WAAW;AAAA,QACxEsH,OAAO;AAAA,UACHpH,YAAY,CAAA;AAAA,QAAC;AAAA,MACjB,CAER;AAAA,IACO+J,WAAAA,oBAAoBpJ,gBAAgBoJ,gBAAgB,GAAG;AAC5C,wBAAA;AAAA,QACd,GAAGpJ,gBAAgBoJ,gBAAgB,EAAEtK;AAAAA,QACrCqB,gBAAgBiJ;AAAAA,MACpB;AAAA,IAAA;AAGGC,WAAAA;AAAAA,EACX;ACvQO,WAAAS,iBAAA3jB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA0B,UAAA;AAAA,MAAAgO;AAAAA,MAAAtK;AAAAA,IAAAA,IAAA5D;AAQ7B,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAAkCO,iBAAU;AAAEO,QAAAA;AAAAxB,QAAAA,SAAAS,QAAA;AAE7BqB,WAAAA,OAAAA,MAAMrB,QAAQ,KAAK;AAACT,aAAAS;AAAAT,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAArC,UAAA2jB,WAAiBniB;AAAqBI,QAAAA;AAAA5B,QAAAA,SAAAU,eAAA;AAUPkB,WAAAyD,CAAA,UAAA;AAAA,YACPA,UAAU,UAAQ;AAClB3E,wBAAc,OAAK,IAAM;AAAA,QAAA,OAAC;AAE1BA,wBAAc,OAAO2E,KAAK;AAAA,QAAA;AAAA,MAAC;AAClCrF,aAAAU;AAAAV,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAcM,UAAAoC,KAAAuhB,YAAY;AAAQthB,QAAAA;AAAAK,QAAAA;AAAAO,QAAAA;AAAAW,QAAAA;AAAA,QAAA5D,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAC3Bd,WAACmC,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,UAAU,UAE7B,eAAA;AACApI,WAAC8B,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,SAAS,UAE5B,SAAA;AACA7H,WAACuB,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,SAAS,UAE5B,SAAA;AACAlH,WAACY,2BAAA,IAAAsG,eAAA,EAAkB,OAAA,SAAS,UAE5B,SAAA;AAAa9K,aAAAqC;AAAArC,aAAA0C;AAAA1C,aAAAiD;AAAAjD,aAAA4D;AAAAA,IAAAA,OAAA;AAAAvB,WAAArC,EAAA,CAAA;AAAA0C,WAAA1C,EAAA,CAAA;AAAAiD,WAAAjD,EAAA,CAAA;AAAA4D,WAAA5D,EAAA,CAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA/D,QAAAA,EAAAiO,CAAAA,MAAAA,YAAAjO,SAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AArCrB2B,0CAuCM,OAvCU,EAAA,WAAA,eAEZ,UAACe,gCAAAsF,GAAAA,QAAA,EACa6D,UACA,UAAA,gBACC,WAAG,MACC,eAAArM,IAMR,OAAA,gBACM,aAAAyI,SAYN,OAAAjI,IACPC,UAAAA;AAAAA,QAAAA;AAAAA,QAGAK;AAAAA,QAGAO;AAAAA,QAGAW;AAAAA,MAAAA,EAAAA,CAGJ,EACJ,CAAA;AAAM5D,aAAAiO;AAAAjO,aAAA4B;AAAA5B,cAAAoC;AAAApC,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA2D,YAAA;AAENK,iDAAgB,EAAA,WAAA,eAEZ,UAAAQ,+BAAC,mBAEG,UAACA,2BAAA,IAAA,0BAAA,EAAmCyJ,UACL,KAAA,MACA,KAAA,MACC,MAAG,MACGtK,YAAU,GAEpD,EAEJ,CAAA;AAAM3D,cAAAiO;AAAAjO,cAAA2D;AAAA3D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAAjE,QAAAA,UAAAU,eAAA;AAMmBuD,YAAAkB,CAAA,MAAA;AACQ,sBAAA,gBAAgBA,EAACC,OAAAC,UAAkB,KAAE3D,SAAeyD,EAACC,OAAAC,KAAa;AAAA,MAAC;AACpFrF,cAAAU;AAAAV,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAAlE,QAAAA,UAAAS,QAAA;AAEMqB,YAAAA,OAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,cAAAS;AAAAT,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAAnE,QAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAiE,OAAAjE,EAAA,EAAA,MAAAkE,KAAA;AARzDC,YAUMK,2BAAAA,IAAA,OAAA,EAVU,WAAA,eAEZ,yCAACiB,GAAAA,WAAgB,EAAA,MAAA,gBACIwI,UACA,UAAAhK,KAGH,OAAA,iBACA,OAAAC,IAAmC,CAAA,GAEzD;AAAMlE,cAAAiO;AAAAjO,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAArE,QAAAA,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAA+D,MAAA/D,EAAA,EAAA,MAAAgE,IAAA;AAlEVK,YACIN,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAyCAC;AAAAA,QAcAG;AAAAA,MAAAA,GAUM;AACPnE,cAAAmE;AAAAnE,cAAA+D;AAAA/D,cAAAgE;AAAAhE,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAnEHqE,WAAAA;AAAAA,EAmEG;AAhFJ,WAAAgG,QAAA2C,SAAA;AAAA,YA4ByB3H,SAAK;AAAA,MAAA,KACJ,SAAO;AACD,eAAA;AAAA,MAAA;AAAA,MAAO,KACb,SAAO;AACD,eAAA;AAAA,MAAA;AAAA,MAAO,KACb,SAAO;AACD,eAAA;AAAA,MAAA;AAAA,MAAO,SAAA;AAEP,eAAA;AAAA,MAAA;AAAA,IAAa;AAAA,EAAA;ACzCvCue,QAAAA,qBAAyC,CAClD,cACA,aACA,YACA,OACA,SACA,UACA,gBACA,gBACA,iBACA,uBACA,eACA,qBACA,aACA,oBACA,UACA,aACA,SACA,aACA,UACA,OAAO;AAGEC,QAAAA,kBAAkDrV,OAAOyJ,QAAQ6L,KAAAA,qBAAqB,EAC9FhhB,OAAO,CAAC,CAACxD,EAAE,MAAMskB,mBAAmB5gB,SAAS1D,EAAsB,CAAC,EACpEyH,IAAI,CAAC,CAACzH,IAAIykB,MAAM,OAAO;AAAA,IAAE,CAACzkB,EAAE,GAAGykB;AAAAA,EAAO,EAAE,EACxC1K,OAAO,CAACC,GAAGC,OAAO;AAAA,IAAE,GAAGD;AAAAA,IAAG,GAAGC;AAAAA,EAAE,IAAI,CAAA,CAAE;ACrBnC,WAAAyK,sBAAAjkB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA+B,UAAA;AAAA,MAAAgO;AAAAA,MAAAtK;AAAAA,IAAAA,IAAA5D;AAQlC,UAAA;AAAA,MAAAU;AAAAA,MAAAC;AAAAA,QAGIO,iBAAU;AAKdgW,UAAAA,WAAiB,GAHO,SAAS;AAIjCC,UAAAA,UAAgB,GAJQ,SAAS;AAKjCC,UAAAA,cAAoB,GALI,SAAS;AAKoB3V,QAAAA;AAAAxB,QAAAA,SAAAS,QAAA;AAE/BqB,WAAAA,OAAAA,MAAMrB,QAAQwW,QAAQ,KAAK;AAAejX,aAAAS;AAAAT,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAhE,UAAAqX,gBAAsB7V;AAA2CI,QAAAA;AAAA5B,QAAAA,SAAAS,QAAA;AACxCqB,WAAAA,OAAAA,MAAMrB,QAAQ0W,WAAW,KAAK;AAAGnX,aAAAS;AAAAT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAA1D,UAAAsX,mBAAyB1V;AAAkCiC,QAAAA;AAAA0T,QAAAA;AAAAtT,QAAAA;AAAAC,QAAAA;AAAAC,QAAAA;AAAAE,QAAAA;AAAAC,QAAAA;AAAAlC,QAAAA;AAAAC,QAAAA;AAAAK,QAAAA;AAAAO,QAAAA;AAAAW,QAAAA;AAAAG,QAAAA;AAAAC,QAAAA;AAAA,QAAAhE,EAAAiO,CAAAA,MAAAA,YAAAjO,EAAA,CAAA,MAAAqX,iBAAArX,EAAA2D,CAAAA,MAAAA,cAAA3D,EAAA,CAAA,MAAAsX,oBAAAtX,SAAAS,QAAA;AAC3D+W,YAAAA,eAAqB1V,OAAAA,MAAMrB,QAAQyW,OAAO;AAE1CY,YAAAA,sBAA4B,OAAOT,kBAAkB;AACrDU,YAAAA,yBAA+B,OAAOT,qBAAqB;AAAW,UAAAtX,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA2D,YAAA;AAI9D,cAAAa,2BAAAA,IAAA,SAAgB,WAAA,eAEZ,yCAAC,iBAEG,EAAA,UAAAA,2BAAA,IAAC,0BAAmCyJ,EAAAA,UACF,QAAA,MACG,WAAG,MACT,KAAG,MACH,KAAA,MACC,MAAG,MACE,WAAG,MACFtK,WAAU,CAAA,EAAA,CAEpD,EAEJ,CAAA;AAAM3D,gBAAAiO;AAAAjO,gBAAA2D;AAAA3D,gBAAAsE;AAAAA,MAAAA,OAAA;AAAAA,cAAAtE,EAAA,EAAA;AAAA,MAAA;AAEuB,YAAA;AACxBkM,WAAAA,GAAAA;AAAe,UAAAlM,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAER,cAAA2B,2BAAA,KAAA,OAAe,EAAA,WAAA,kCACX,UAAA;AAAA,UAAAN,2BAAA,IAACwT,GACD,iBAAA,EAAA;AAAA,yCAAC5T,GAAAA,YAAoB,EAAA,SAAA,aACC,WAAA,QAAO,UAE7B,qBAAA,CAAA;AAAA,QAAA,GACJ;AAAMpE,gBAAAmE;AAAAA,MAAAA,OAAA;AAAAA,cAAAnE,EAAA,EAAA;AAAA,MAAA;AAGmC,WAAA;AAQpB,YAAAuE,OAAAuT,uBAAuB7J;AAC1BtJ,YAAAA,OAAAmT,sBAAsB,MAAMT;AAAa,UAAArX,EAAAuE,EAAAA,MAAAA,QAAAvE,UAAA2E,MAAA;AAN3DV,oDAAgB,EAAA,WAAA,eACZ,UAACO,+BAAA6B,OAAAA,OAAA,EAAY4Q,gBACF3Q,IAAAA,GAAAA,oBACG,OAAA,aACD,MAAA,SACI,UAAA/B,MACH,OAAAI,KAAyC,CAAA,GAE3D;AAAM3E,gBAAAuE;AAAAvE,gBAAA2E;AAAA3E,gBAAAiE;AAAAA,MAAAA,OAAA;AAAAA,cAAAjE,EAAA,EAAA;AAAA,MAAA;AAKe,YAAA4E,OAAAmT,0BAA0B9J;AAE7BlJ,YAAAA,OAAAgT,yBAAyB,MAAMT;AAAgBtS,UAAAA;AAAA,UAAAhF,EAAA4E,EAAAA,MAAAA,QAAA5E,UAAA+E,MAAA;AAL7DC,eAACR,2BAAA,IAAA6B,OAAY8Q,OAAAA,EAAAA,MAAU,aACZ7Q,IAAAA,GAAAA,oBACG,OAAA,gBACG,UAAA1B,MACJ,MAAA,SACC,OAAAG,MACZ;AAAA/E,gBAAA4E;AAAA5E,gBAAA+E;AAAA/E,gBAAAgF;AAAAA,MAAAA,OAAA;AAAAA,eAAAhF,EAAA,EAAA;AAAA,MAAA;AAAAiF,UAAAA;AAAAC,UAAAA;AAAA,UAAAlF,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACF8B,eAACH,2BAAAA,KAAAV,GAAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBACvC,UAAA;AAAA,UAAAI,2BAAAA,IAAA,OAAG,UAEyB,mFAAA,CAAA;AAAA,0CASvB,MAPD,EAAA,UAAA;AAAA,YAAAA,2BAAAA,IAAoD,QAAP,UAAE,0CAAA,CAAA;AAAA,YAC/CA,2BAAAA,IAAsE,kBAAL,4DAAA,CAAA;AAAA,YACjEA,2BAAAA,YAAK,UAA8C,8CAAA,CAAA;AAAA,YACnDA,2BAAAA,IAA0C,kBAAL,gCAAA,CAAA;AAAA,YACrCA,2BAAAA,YAAK,UAAmC,mCAAA,CAAA;AAAA,YACxCA,2BAAAA,IAAA,QAAK,UAA+B,+BAAA,CAAA;AAAA,YACpCA,2BAAAA,IAAA,QAAyD,UAAE,sDAAA,CAAA;AAAA,UAAA,EAC/D,CAAA;AAAA,QAAA,GACJ;AAEAU,eAACV,2BAAAA,IAAAJ,GAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,oBAAoB,UAI/D,yGAAA;AAAapE,gBAAAiF;AAAAjF,gBAAAkF;AAAAA,MAAAA,OAAA;AAAAD,eAAAjF,EAAA,EAAA;AAAAkF,eAAAlF,EAAA,EAAA;AAAA,MAAA;AAAAA,UAAAA,UAAAgF,MAAA;qDA3BD,EAAA,WAAA,eACZA,UAAAA;AAAAA,UAAAA;AAAAA,UAOAC;AAAAA,UAeAC;AAAAA,QAAAA,GAKJ;AAAMlF,gBAAAgF;AAAAhF,gBAAAkE;AAAAA,MAAAA,OAAA;AAAAA,cAAAlE,EAAA,EAAA;AAAA,MAAA;AAEuB,WAAA;AACxBsG,WAAAA,GAAAA;AAAyB4Q,WAAAA;AACQ,WAAA;AACc,WAAA;AACf,WAAA;AACNtT,WAAA4T,iBAAY9V,UAAkB8V,iBAAY,OAAYA,aAAYd,aAAc;AAAE1W,aAAAiO;AAAAjO,aAAAqX;AAAArX,aAAA2D;AAAA3D,aAAAsX;AAAAtX,aAAAS;AAAAT,aAAA6D;AAAA7D,cAAAuX;AAAAvX,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAAsE;AAAAtE,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAH,WAAA7D,EAAA,CAAA;AAAAuX,WAAAvX,EAAA,EAAA;AAAAiE,YAAAjE,EAAA,EAAA;AAAAkE,YAAAlE,EAAA,EAAA;AAAAmE,YAAAnE,EAAA,EAAA;AAAAqE,YAAArE,EAAA,EAAA;AAAAsE,YAAAtE,EAAA,EAAA;AAAAoC,WAAApC,EAAA,EAAA;AAAAqC,WAAArC,EAAA,EAAA;AAAA0C,WAAA1C,EAAA,EAAA;AAAAiD,WAAAjD,EAAA,EAAA;AAAA4D,WAAA5D,EAAA,EAAA;AAAA+D,WAAA/D,EAAA,EAAA;AAAAgE,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,UAAAU,eAAA;AAC/E6D,YAAAY,CAAA,MAAA;AACNE,cAAAA,QAAcF,EAACC,OAAAC;AAAc,YACzBA,UAAU,IAAE;AAAE3E,wBAAcwW,SAAOxV,MAAW;AAAA,QAAA,OAAC;AAChCwV,wBAAAA,SAASoB,SAASjT,KAAK,CAAC;AAAA,QAAA;AAAA,MAAC;AAC/CrF,cAAAU;AAAAV,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA3E,QAAAA,EAAA6D,EAAAA,MAAAA,MAAA7D,EAAAuE,EAAAA,MAAAA,OAAAvE,EAAAoC,EAAAA,MAAAA,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,MAAA1C,EAAA,EAAA,MAAAiD,MAAAjD,EAAA,EAAA,MAAA4D,IAAA;AATrBe,YAACH,2BAAA,IAAA,IAAA,EAAyB0S,UACA,MAAA7U,IACC,OAAAK,IACD,MAAAO,IACC,OAAAW,IACG,UAAAW,KAK5B;AAAAvE,cAAA6D;AAAA7D,cAAAuE;AAAAvE,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA,QAAA5E,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAA+D,IAAA;AAXNa,YAYMJ,2BAAA,IAAA,OAAA,EAZU,WAAAT,IACZY,UAWJ,KAAA;AAAM3E,cAAA2E;AAAA3E,cAAA+D;AAAA/D,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAA,EAAA,MAAAiE,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,EAAA4E,EAAAA,MAAAA,OAAA5E,UAAAgE,IAAA;mDAtDM,EAAA,WAAAA,IAGZC,UAAAA;AAAAA,QAAAA;AAAAA,QASAC;AAAAA,QA8BAU;AAAAA,MAAAA,GAcJ;AAAM5E,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAA4E;AAAA5E,cAAAgE;AAAAhE,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAAhF,QAAAA,EAAAuX,EAAAA,MAAAA,MAAAvX,UAAAmE,OAAAnE,EAAA,EAAA,MAAA+E,KAAA;AAnEVC,YAACR,2BAAA,IAAA,IAAA,EAEO,OAAAL,KASJY,UAyDJ,KAAA;AAAkB/E,cAAAuX;AAAAvX,cAAAmE;AAAAnE,cAAA+E;AAAA/E,cAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAA,QAAAjF,EAAAqE,EAAAA,MAAAA,OAAArE,UAAAgF,KAAA;AArEtBC,YAsEMT,2BAAA,IAAA,OAAA,EAtEU,WAAAH,KACZW,UAqEJ,KAAA;AAAMhF,cAAAqE;AAAArE,cAAAgF;AAAAhF,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AAAAkF,QAAAA;AAAAlF,QAAAA,UAAAU,eAAA;AAMmBwE,YAAA6C,CAAA,QAAA;AACQ,sBAAA,gBAAgB5C,IAACC,OAAAC,UAAkB,KAAE3D,SAAeyD,IAACC,OAAAC,KAAa;AAAA,MAAC;AACpFrF,cAAAU;AAAAV,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAAsF,QAAAA;AAAAtF,QAAAA,UAAAS,QAAA;AAEMqB,YAAAA,OAAAA,MAAMrB,QAAQ,cAAc,KAAK;AAAET,cAAAS;AAAAT,cAAAsF;AAAAA,IAAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAAwF,QAAAA;AAAAxF,QAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAkF,OAAAlF,EAAA,EAAA,MAAAsF,KAAA;AARzDE,YAUMhB,2BAAAA,IAAA,OAAA,EAVU,WAAA,eAEZ,yCAACiB,GAAAA,WAAgB,EAAA,MAAA,gBACIwI,UACA,UAAA/I,KAGH,OAAA,iBACA,OAAAI,IAAmC,CAAA,GAEzD;AAAMtF,cAAAiO;AAAAjO,cAAAkF;AAAAlF,cAAAsF;AAAAtF,cAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA0F,QAAAA;AAAA1F,QAAAA,EAAAsE,EAAAA,MAAAA,OAAAtE,UAAAiF,OAAAjF,EAAA,EAAA,MAAAwF,KAAA;AApGVE,YACIpB,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAiBAW;AAAAA,QAwEAO;AAAAA,MAAAA,GAUM;AACPxF,cAAAsE;AAAAtE,cAAAiF;AAAAjF,cAAAwF;AAAAxF,cAAA0F;AAAAA,IAAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AArGH0F,WAAAA;AAAAA,EAqGG;AC/CJ,QAAMue,eAAe1jB,MAAMuR,KAC9B,SAAAmS,cAAA1C,OAAA;AAAAvhB,UAAAA,IAAAC,uBAAA,EAAA;AAEI,UAAA;AAAA,MAAAikB,kBAAAnkB;AAAAA,MAAAokB;AAAAA,MAAAC;AAAAA,MAAA3E;AAAAA,MAAA4E;AAAAA,MAAA7W;AAAAA,MAAA8W;AAAAA,MAAA7W;AAAAA,MAAAiL;AAAAA,MAAA0G;AAAAA,MAAAmF,4BAAA/iB;AAAAA,MAAAgjB;AAAAA,MAAAC;AAAAA,MAAA1W;AAAAA,MAAA2W;AAAAA,MAAAC;AAAAA,MAAAzW;AAAAA,MAAA0W;AAAAA,MAAAzW;AAAAA,MAAAyL;AAAAA,MAAAuB;AAAAA,IAAAA,IAsBIoG;AArBA2C,UAAAA,mBAAAnkB,OAAuB2B,gBAAvB3B;AAUAwkB,UAAAA,6BAAA/iB,OAAiCE,gBAAjCF;AAAiCI,QAAAA;AAAA,QAAA5B,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAaA,WAAA;AAAA,QAAA7D,IAC7B;AAAA,QAAEG,MACA;AAAA,MAAE;AACXO,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAHD,UAAA6kB,eAAqCjjB;AAGjBQ,QAAAA;AAAA,QAAApC,EAAAmb,CAAAA,MAAAA,sBAAAnb,SAAA0Y,UAAA;AAEFtW,WAAAmD,QAAQmT,YAAQ,CAAKD,iBAAiBC,QAAQ,CAAC,KAAC,CAAKyC;AAAkBnb,aAAAmb;AAAAnb,aAAA0Y;AAAA1Y,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAzF,UAAAiO,WAAkB7L;AAAyEC,QAAAA;AAAA,QAAArC,EAAA0Y,CAAAA,MAAAA,YAAA1Y,SAAAwN,aAAA;AAEjBnL,WAAAqW,WAAQ;AAAA,QAAApZ,IAC1EkO;AAAAA,QAAWsX,YACHtX;AAAAA,QAAWkL;AAAAA,MAAAhX,IAAAA;AAEd1B,aAAA0Y;AAAA1Y,aAAAwN;AAAAxN,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAJb+kB,UAAAA,wBAA8BvkB,aAA4C6B,EAI7D;AAAEK,QAAAA;AAAA,QAAA1C,EAAAof,CAAAA,MAAAA,qBAAApf,SAAAyN,mBAAA;AAEa/K,WAAAO,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA3D;AAAAA,UAAAoZ,UAAAsM;AAAAA,QAAAA,IAAA/hB;AAIzB,cAAAgiB,SAAA;AAAA,UAAA3lB;AAAAA,UAAAwlB,YAEgBC,sBAAqBjV,SAAAxQ;AAAAA,UAAAoZ,UACjCA;AAAAA,UAAQrL,WACGI;AAAAA,QAAiB;AAEhCsX,8BAAqBjV,UAAWmV;AAChC7F,4BAAoB6F,MAAM;AAAA,MAAA;AAC7BjlB,aAAAof;AAAApf,aAAAyN;AAAAzN,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAZD,UAAAklB,sBAA4BxiB;AAY1BO,QAAAA;AAAA,QAAAjD,EAAA0Y,EAAAA,MAAAA,YAAA1Y,UAAAwN,aAAA;AAIiBvK,WAAAyV,WAAQ;AAAA,QAAApZ,IACXkO;AAAAA,QAAW,GAAKkL;AAAAA,MAAAA,IACtBmM;AAAY7kB,cAAA0Y;AAAA1Y,cAAAwN;AAAAxN,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAAklB,EAAAA,MAAAA,uBAAAllB,UAAAokB,kBAAA;AAIRxgB,WAAAA,CAAAuhB,mBAAAC,eAAA;AACNC,gBAAAA,MAAc,YAAYF,iBAAiB;AAC3C,cAAA;AAAA,UAAA7lB,IAAAgmB;AAAAA,UAAA,GAAAC;AAAAA,QAAAA,IAGIJ;AACe,4BAAA;AAAA,UAAA7lB,IACfA;AAAAA,UAAEoZ,UAAA;AAAA,YAAA,GAEKA;AAAAA,YAAQK,UACDL,WAAQK,YAAA;AAAA,UAAA;AAAA,QAAiB,CAE1C;AAAC,YAAA,CACGqL,kBAAgB;AACjBgB,qBAAUI,UAAA;AAAA,YAAA/kB,QAAqBokB;AAAAA,UAAAA,CAAc;AAAA,QAAA;AAAA,MAAC;AACrD7kB,cAAAklB;AAAAllB,cAAAokB;AAAApkB,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAskB,EAAAA,MAAAA,wBAAAtkB,UAAAkkB,kBAAA;AACWngB,WAAAtD,CAAA,WAAA;AACR,cAAAI,SAAA,CAAA;AAAuC,YACnCqjB,kBAAgB;AACXzjB,cAAAA,CAAAA,OAAMhB,MAAA;AACPoB,mBAAMpB,OAAQ;AAAA,UAAA,OAAU;AAExBigB,kBAAAA,YAAkB+F,aAAahlB,OAAMhB,IAAK;AAAE,gBACxCigB,WAAS;AACT7e,qBAAMpB,OAAQigB;AAAAA,YAAAA;AAAAA,UAAS;AAE1Bjf,cAAAA,CAAAA,OAAMnB,IAAA;AACPuB,mBAAMvB,KAAM;AAAA,UAAA,OAAU;AAEtB,kBAAA0T,UAAgB0S,aAAWjlB,OAAMnB,IAAKglB,oBAAoB;AAAE,gBACxDtR,SAAO;AACPnS,qBAAMvB,KAAM0T;AAAAA,YAAAA;AAAAA,UAAO;AAAA,QAAA;AAI3BvS,YAAAA,OAAMoY,aAAc,UAAQ;AACxBpY,cAAAA,OAAMmO,YAAAyF,YAAyBsR,KAAAA,cAAcllB,OAAMmO,YAAAyF,QAAAqC,UAA+B,GAAC;AACnF7V,mBAAM+N,aAAA;AAAA,cAAAyF,SACO;AAAA,YAA4B;AAAA,UAAA;AAAA,QAAA;AAAA,YAI7C5T,OAAMoY,aAAc,eAAgBpY,CAAAA,OAAMf,MAAK;AAC/CmB,iBAAMnB,OAAQ;AAAA,QAAA;AAEde,YAAAA,OAAMsZ,mBAAoB,UAAQ;AAAA,cAAA,CAC5BtZ,OAAaqY,IAAA;AACfjY,mBAAMiY,KAAM;AAAA,UAAA;AAAA,QAAoC;AAGpDrY,YAAAA,OAAMsZ,mBAAoB,SAAO;AAAA,cAAA,CAC3BtZ,OAAa4f,OAAA;AACfxf,mBAAMwf,QAAS;AAAA,UAAA;AAAA,QAAkD;AAGlExf,eAAAA;AAAAA,MAAM;AAChBb,cAAAskB;AAAAtkB,cAAAkkB;AAAAlkB,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAA0kB,iBAAA1kB,EAAAiD,EAAAA,MAAAA,MAAAjD,EAAA4D,EAAAA,MAAAA,MAAA5D,UAAA+D,IAAA;AAhEoD,WAAA;AAAA,QAAA6hB,SAC5C;AAAA,QAAelX,eACTzL;AAAAA,QAEGyhB;AAAAA,QAAA/V,kBAAA;AAAA,QAAAkX,yBAAA;AAAA,QAAAC,UAIRliB;AAAAA,QAeTgL,YACW7K;AAAAA,MAwCX;AACJ/D,cAAA0kB;AAAA1kB,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAjED+lB,UAAAA,mBAAyBjX,uBAAgC9K,EAiExD;AAAEC,QAAAA;AAAAC,QAAAA;AAAA,QAAAlE,EAAA+lB,EAAAA,MAAAA,oBAAA/lB,UAAA4kB,eAAA;AAEO3gB,YAAAA,MAAA;AACN2gB,wBAAgBmB,gBAAgB;AAAA,MAAA;AACjC,YAAA,CAACA,kBAAkBnB,aAAa;AAAC5kB,cAAA+lB;AAAA/lB,cAAA4kB;AAAA5kB,cAAAiE;AAAAjE,cAAAkE;AAAAA,IAAAA,OAAA;AAAAD,YAAAjE,EAAA,EAAA;AAAAkE,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAFpCsC,UAAAA,UAAU2B,KAEPC,GAAiC;AAITC,UAAAA,MAAAogB,6BACbW,sBAAmBxjB;AAOb2C,UAAAA,MAAAsgB,mBAAmBoB,iBAAgB/kB,cAAgB;AAAAsD,QAAAA;AAAA,QAAAtE,EAAA,EAAA,MAAAkO,sBAAAlO,EAAA,EAAA,MAAAmkB,sBAAAnkB,EAAA,EAAA,MAAAyf,gBAAAzf,EAAAmb,EAAAA,MAAAA,sBAAAnb,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAAokB,oBAAApkB,EAAA,EAAA,MAAA+lB,oBAAA/lB,EAAA,EAAA,MAAAmO,WAAAnO,EAAAqkB,EAAAA,MAAAA,WAAArkB,EAAAkkB,EAAAA,MAAAA,oBAAAlkB,EAAAykB,EAAAA,MAAAA,YAAAzkB,EAAAwkB,EAAAA,MAAAA,aAAAxkB,EAAA,EAAA,MAAA+N,WAAA/N,EAAA,EAAA,MAAA4Z,mBAAA5Z,EAAAyN,EAAAA,MAAAA,qBAAAzN,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAAqE,KAAA;2CATlE,0BACsB,mBAAAF,KAGTsgB,UACSP,mBAAAA,kBACAzW,mBACVM,SACEyW,WACC,YAAAngB,KACF+f,UAAAA,kBACI3E,cACL4E,SACWF,oBACVlW,UACDE,SACWD,oBACH0L,iBACGuB,oBAAkB,GAClC4K,iBAAmB,CAAA;AAAA/lB,cAAAkO;AAAAlO,cAAAmkB;AAAAnkB,cAAAyf;AAAAzf,cAAAmb;AAAAnb,cAAAiO;AAAAjO,cAAAokB;AAAApkB,cAAA+lB;AAAA/lB,cAAAmO;AAAAnO,cAAAqkB;AAAArkB,cAAAkkB;AAAAlkB,cAAAykB;AAAAzkB,cAAAwkB;AAAAxkB,cAAA+N;AAAA/N,cAAA4Z;AAAA5Z,cAAAyN;AAAAzN,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAA,QAAAvE,EAAA+lB,EAAAA,MAAAA,oBAAA/lB,UAAAsE,KAAA;AApBxBC,YAACC,2BAAA,IAAAyK,eAAA,EAAc8W,OAAAA,kBAClBzhB,UAoBJ,KAAA;AAAStE,cAAA+lB;AAAA/lB,cAAAsE;AAAAtE,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AArBFuE,WAAAA;AAAAA,EAqBE,GACV,CAAC+U,GAAGC,MACHD,EAAEnL,YAAYoL,EAAEpL,WAChBmL,EAAE9L,gBAAgB+L,EAAE/L,eACpB8L,EAAE7L,sBAAsB8L,EAAE9L,qBAC1B6L,EAAE4K,qBAAqB3K,EAAE2K,oBACzB5K,EAAE6K,uBAAuB5K,EAAE4K,sBAC3B7K,EAAEmG,iBAAiBlG,EAAEkG,gBACrBnG,EAAEgL,yBAAyB/K,EAAE+K,wBAC7BhL,EAAE8K,qBAAqB7K,EAAE6K,gBACjC;AAEO,WAAA4B,mBAAAjmB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAAkb,QAAAA;AAAA8K,QAAAA;AAAA9X,QAAAA;AAAA+X,QAAAA;AAAAC,QAAAA;AAAA/G,QAAAA;AAAAtM,QAAAA;AAAA9S,QAAAA,SAAAD,IAAA;AAA4B,OAAA;AAAA,QAAA+S;AAAAA,QAAAoT;AAAAA,QAAAC;AAAAA,QAAA/G;AAAAA,QAAAjR;AAAAA,QAAAgN;AAAAA,QAAA,GAAA8K;AAAAA,MAAAA,IAAAlmB;AAYlCC,aAAAD;AAAAC,aAAAmb;AAAAnb,aAAAimB;AAAAjmB,aAAAmO;AAAAnO,aAAAkmB;AAAAlmB,aAAAmmB;AAAAnmB,aAAAof;AAAApf,aAAA8S;AAAAA,IAAAA,OAAA;AAAAqI,2BAAAnb,EAAA,CAAA;AAAAimB,kBAAAjmB,EAAA,CAAA;AAAAmO,gBAAAnO,EAAA,CAAA;AAAAkmB,iBAAAlmB,EAAA,CAAA;AAAAmmB,oBAAAnmB,EAAA,CAAA;AAAAof,0BAAApf,EAAA,CAAA;AAAA8S,aAAA9S,EAAA,CAAA;AAAA,IAAA;AACG,UAAAomB,YAAkB5lB,MAAAA,OAAyC;AAAEgB,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACvC3B,WAAA6kB,CAAA,YAAA;AAClBD,kBAAStW,UAAWuW;AAAAA,MAAO;AAC9BrmB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAFD,UAAA4kB,gBAAsBpjB;AAKZ,UAAAI,KAAAkR,QAAa;AAAA1Q,QAAAA;AAAAC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAMHf,WAAA+C,CAAA,MAAA;AACNA,UAACgT,eAAgB;AACjBhT,UAACiT,gBAAiB;AACTtI,kBAAAA,SAAAwW,aAAuBnhB,CAAC;AAAA,MAAA;AAEvC9C,WAACmC,2BAAA,IAAA0O,gBAAA,EAAY,QAAK,MAAE,UAAkB,sBAAA;AAAclT,aAAAoC;AAAApC,cAAAqC;AAAAA,IAAAA,OAAA;AAAAD,WAAApC,EAAA,CAAA;AAAAqC,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAAmmB,EAAAA,MAAAA,eAAAnmB,UAAAof,mBAAA;AAKf1c,WAAAuiB,CAAA,WAAA;AACf7F,4BAAoB6F,MAAM;AACf,sBAAA;AAAA,MAAA;AACdjlB,cAAAmmB;AAAAnmB,cAAAof;AAAApf,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAAmb,EAAAA,MAAAA,sBAAAnb,EAAA,EAAA,MAAAimB,aAAAjmB,EAAAmO,EAAAA,MAAAA,WAAAnO,EAAA,EAAA,MAAAkmB,YAAAlmB,UAAA0C,IAAA;AAPnBO,WAACuB,2BAAAA,IAAA2O,GAAAA,eAAA,EAEG,UAAC3O,2BAAAA,IAAA,cAAA,EAAY,GAAKyhB,WACOC,WAAAA,UACQ,mBAAAxjB,IAICyY,oBACQ,4BAAI,OACjByJ,eACNzW,QAE3B,CAAA,GAAA;AAAgBnO,cAAAmb;AAAAnb,cAAAimB;AAAAjmB,cAAAmO;AAAAnO,cAAAkmB;AAAAlmB,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,UAAAkmB,UAAA;AAIXtiB,WAAAsiB,YAAa1hB,+BAAA8M,GAAAA,QAAA,EACD,SAAA,QACA,SAAA,MAAA;AACI,iBAAA;AACT8U,kBAAStW,SAAA0V,UAAA;AAAA,MAAA,GACV,UAEP,UAAA;AAASxlB,cAAAkmB;AAAAlmB,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;0CAERmO,aAAe,SAAA,YACF,MAAA,UACA,OAAA,WAAU,UAExB,KAAA,CAAA;AAAStR,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAAhE,QAAAA,UAAA4D,IAAA;AAfbI,2CAACoP,kBAEIxP,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QASDG;AAAAA,MAAAA,GAKJ;AAAgB/D,cAAA4D;AAAA5D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAAgE,IAAA;AAvCpBC,4CAAA,QAAkB,EAAA,YAAA,MACE,cAAA,OACJ,UAAA7B,IAKZC,UAAAA;AAAAA,QAAAA;AAAAA,QACAY;AAAAA,QAeAe;AAAAA,MAAAA,GAiBJ;AAAOhE,cAAAiD;AAAAjD,cAAAgE;AAAAhE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAA4B,IAAA;AA7CJ,YAAA4C,2BAAA,IAACmI,aACE,MAAA/K,IACI,UAAA,MACC,WAAA,MAEXqC,UAyCJ,IAAA,CAAA;AAASjE,cAAAiE;AAAAjE,cAAA4B;AAAA5B,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AA9CFkE,WAAAA;AAAAA,EA8CE;AAIb,WAAAqiB,uBAAAxmB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,GAAA;AAAgC,UAAA;AAAA,MAAAQ;AAAAA,MAAAI;AAAAA,MAAA2lB;AAAAA,MAAA1P;AAAAA,MAAA2I,cAAAje;AAAAA,MAAA2iB;AAAAA,MAAAsC;AAAAA,MAAArH;AAAAA,MAAAqF;AAAAA,MAAAhX;AAAAA,MAAA+W;AAAAA,MAAAzW;AAAAA,MAAApK;AAAAA,MAAAsK;AAAAA,MAAAoW;AAAAA,MAAAlW;AAAAA,MAAAD;AAAAA,MAAA0L;AAAAA,MAAAuB;AAAAA,IAAAA,IAAApb;AAKI0f,UAAAA,eAAAje,OAAoBE,iBAApBF;AAkChC,UAAA,CAAAklB,YAAAC,aAAA,IAAoCtlB,MAAAA,SAAS8iB,kBAAkB;AAC/D,UAAA,CAAAyC,kBAAAC,mBAAA,IAAgDxlB,MAAAA,cAAc;AAAEO,QAAAA;AAAA5B,QAAAA,SAAAS,QAAA;AACuBmB,WAAAnB,QAAMoY,WAAaiO,KAAWrmB,WAAAA,MAAM,IAACiB;AAAY1B,aAAAS;AAAAT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAxI,UAAA,CAAA+mB,uBAAAC,wBAAA,IAA0D3lB,MAAAA,SAA6BO,EAAiD;AAExIqlB,UAAAA,iBAAuBC,uBAAiBzmB,MAAM;AAC9C0mB,UAAAA,eAAqB3mB,aAAA,IAA6B;AAElDukB,UAAAA,wBAA8BvkB,aAAeC,MAAM;AAAE2B,QAAAA;AAAA,QAAApC,EAAAa,CAAAA,MAAAA,UAAAb,SAAA2D,YAAA;AAEzBA,WAAAA,cAAc7B,aAAMjB,QAAQ,gBAAgB;AAACb,aAAAa;AAAAb,aAAA2D;AAAA3D,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAzE,UAAAonB,sBAA4BhlB;AAA8CC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAinB,kBAAAjnB,EAAAymB,CAAAA,MAAAA,qBAAAzmB,EAAAof,CAAAA,MAAAA,qBAAApf,SAAAyN,mBAAA;AAEhEpL,WAAAA,MAAA;AAAA,YACF+c,mBAAiB;AACZ,cAAA,CAACqH,qBAAqBQ,eAAc3nB,IAAG;AACxC,kBAAA;AAAA,cAAAA;AAAAA,cAAA,GAAAoZ;AAAAA,YAAAA,IAGIuO;AAAe,gBAAA,CACdrU,MAAMqU,gBAAgBlC,sBAAqBjV,OAAQ,GAAC;AACpC,gCAAA;AAAA,gBAAAxQ;AAAAA,gBAAAoZ;AAAAA,gBAAArL,WAGFI;AAAAA,cAAAA,CACd;AACDsX,oCAAqBjV,UAAWmX;AAAAA,YAAAA;AAAAA,UAAc;AAAA,QAAA;AAAA,MAAA;AAI7DjnB,aAAAinB;AAAAjnB,aAAAymB;AAAAzmB,aAAAof;AAAApf,aAAAyN;AAAAzN,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,EAAAinB,EAAAA,MAAAA,kBAAAjnB,UAAAymB,qBAAAzmB,EAAA,EAAA,MAAAyN,mBAAA;AAAGwZ,WAAAA,CAAAA,gBAAgBR,mBAAmBhZ,iBAAiB;AAACzN,cAAAinB;AAAAjnB,cAAAymB;AAAAzmB,cAAAyN;AAAAzN,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAjBzDsC,UAAAA,UAAUD,IAiBPK,EAAsD;AAACO,QAAAA;AAAA,QAAAjD,EAAAa,EAAAA,MAAAA,UAAAb,UAAA+N,WAAA/N,EAAA,EAAA,MAAAyN,qBAAAzN,EAAAS,EAAAA,MAAAA,QAAAnB,IAAA;AAEhD2D,WAAAA,MAAA;AAAA,YACFxC,QAAMnB,MAAQyO,WAAYsZ,CAAAA,KAAAA,cAAcxmB,MAAM,GAAC;AACvCJ,kBAAAA,QAAMnB,IAAMmO,mBAAmB5M,MAAM;AAAA,QAAA;AAAA,MAAC;AAErDb,cAAAa;AAAAb,cAAA+N;AAAA/N,cAAAyN;AAAA,QAAA,EAAA,IAAAhN,QAAAnB;AAAAU,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAA8B,UAAA4D,KAAAnD,QAAMnB;AAAIyE,QAAAA;AAAA/D,QAAAA,EAAAa,EAAAA,MAAAA,UAAAb,UAAAyN,qBAAAzN,EAAA,EAAA,MAAA4D,IAAA;AAArC/C,WAAAA,CAAAA,QAAQ4M,mBAAmB7J,EAAU;AAAC5D,cAAAa;AAAAb,cAAAyN;AAAAzN,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAJ1CsC,UAAAA,UAAUW,IAIPc,EAAuC;AAACC,QAAAA;AAAAhE,QAAAA,EAAA4Z,EAAAA,MAAAA,mBAAA5Z,UAAAwmB,aAAAxmB,EAAA,EAAA,MAAAS,QAAA;AAEbuD,WAAAsjB,CAAA,wBAAA;AAC1BN,iCAAyBM,mBAAmB;AAC5Cd,kBAAU1D,yBAAyBriB,QAAQ6mB,qBAAqB1N,eAAe,CAAC;AAEhF2N,mBAAA,MAAA;AACIJ,uBAAYrX,SAAA0X,MAAA;AAAA,WAAA,CACZ;AAAA,MAAC;AACRxnB,cAAA4Z;AAAA5Z,cAAAwmB;AAAAxmB,cAAAS;AAAAT,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAPD,UAAAynB,wBAA8BzjB;AAS1B0jB,QAAAA;AAAc,QACdX,0BAA0B,gBAC1BA,0BAA0B,eAC1BA,0BAA0B,SAAO;AAAA9iB,UAAAA;AAAAjE,UAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA+mB,yBAAA/mB,EAAA,EAAA,MAAA2D,YAAA;AAE7BM,eAACO,2BAAA,IAAA,qBAAA,EAA8BuiB,iCACA9Y,UACEtK,YAAa;AAAA3D,gBAAAiO;AAAAjO,gBAAA+mB;AAAA/mB,gBAAA2D;AAAA3D,gBAAAiE;AAAAA,MAAAA,OAAA;AAAAA,eAAAjE,EAAA,EAAA;AAAA,MAAA;AAF9C0nB,uBAAAA;AAAAA,IAAAA,OADU;AAAA,UAIPX,0BAA0B,OAAK;AAAA9iB,YAAAA;AAAA,YAAAjE,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA2D,YAAA;AAElCM,iBAACO,2BAAAA,IAAA,kBAA2ByJ,EAAAA,UACEtK,WAAa,CAAA;AAAA3D,kBAAAiO;AAAAjO,kBAAA2D;AAAA3D,kBAAAiE;AAAAA,QAAAA,OAAA;AAAAA,iBAAAjE,EAAA,EAAA;AAAA,QAAA;AAD3C0nB,yBAAAA;AAAAA,MAAAA,OADU;AAAA,YAGPX,0BAA0B,YAAU;AAAA9iB,cAAAA;AAAA,cAAAjE,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA2D,YAAA;AAEvCM,mBAACO,2BAAAA,IAAA,uBAAgCyJ,EAAAA,UACEtK,WAAa,CAAA;AAAA3D,oBAAAiO;AAAAjO,oBAAA2D;AAAA3D,oBAAAiE;AAAAA,UAAAA,OAAA;AAAAA,mBAAAjE,EAAA,EAAA;AAAA,UAAA;AADhD0nB,2BAAAA;AAAAA,QAAAA,OADU;AAGPX,cAAAA,0BAA0B,YACjCA,0BAA0B,iBAAe;AAI1B,kBAAA9iB,QAAC6S;AAAQ5S,gBAAAA;AAAA,gBAAAlE,EAAAkO,EAAAA,MAAAA,sBAAAlO,EAAA,EAAA,MAAAiO,YAAAjO,EAAAmO,EAAAA,MAAAA,WAAAnO,EAAA,EAAA,MAAA2D,cAAA3D,UAAAiE,MAAA;AAHPC,qBAACM,2BAAA,IAAA,mBAAA,EACD,aAAI,OACG0J,oBACT,WAAAjK,MACDgK,UACDE,SACGxK,WAAa,CAAA;AAAA3D,sBAAAkO;AAAAlO,sBAAAiO;AAAAjO,sBAAAmO;AAAAnO,sBAAA2D;AAAA3D,sBAAAiE;AAAAjE,sBAAAkE;AAAAA,YAAAA,OAAA;AAAAA,qBAAAlE,EAAA,EAAA;AAAA,YAAA;AANZ0nB,6BAAAA;AAAAA,UAAAA,OAAH;AAOPX,gBAAAA,0BAA0B,kBACjCA,0BAA0B,uBAAqB;AAGhC,oBAAA9iB,QAAC6S;AAAQ5S,kBAAAA;AAAA,kBAAAlE,EAAAkO,EAAAA,MAAAA,sBAAAlO,EAAA,EAAA,MAAAiO,YAAAjO,EAAAmO,EAAAA,MAAAA,WAAAnO,EAAA,EAAA,MAAA2D,cAAA3D,UAAAiE,MAAA;AAFPC,uBAACM,2BAAA,IAAA,mBAAA,EACD,aAAG,MACL,WAAAP,MACDgK,UACUC,oBACXC,SACGxK,WAAa,CAAA;AAAA3D,wBAAAkO;AAAAlO,wBAAAiO;AAAAjO,wBAAAmO;AAAAnO,wBAAA2D;AAAA3D,wBAAAiE;AAAAjE,wBAAAkE;AAAAA,cAAAA,OAAA;AAAAA,uBAAAlE,EAAA,EAAA;AAAA,cAAA;AANZ0nB,+BAAAA;AAAAA,YAAAA,OAAH;AAAA,kBAOPX,0BAA0B,eAAa;AAAA9iB,oBAAAA;AAAA,oBAAAjE,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA8W,UAAA;AAE1C7S,yBAACO,2BAAA,IAAA,sBAAA,EAA+BsS,UACA,iBACA7I,UAAW;AAAAjO,0BAAAiO;AAAAjO,0BAAA8W;AAAA9W,0BAAAiE;AAAAA,gBAAAA,OAAA;AAAAA,yBAAAjE,EAAA,EAAA;AAAA,gBAAA;AAF3C0nB,iCAAAA;AAAAA,cAAAA,OADU;AAAA,oBAIPX,0BAA0B,qBAAmB;AAAA9iB,sBAAAA;AAAA,sBAAAjE,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA8W,UAAA;AAEhD7S,2BAACO,2BAAA,IAAA,sBAAA,EAA+BsS,UACA,gBACA7I,UAAW;AAAAjO,4BAAAiO;AAAAjO,4BAAA8W;AAAA9W,4BAAAiE;AAAAA,kBAAAA,OAAA;AAAAA,2BAAAjE,EAAA,EAAA;AAAA,kBAAA;AAF3C0nB,mCAAAA;AAAAA,gBAAAA,OADU;AAAA,sBAIPX,0BAA0B,UAAQ;AAAA9iB,wBAAAA;AAAAjE,wBAAAA,UAAAiO,UAAA;AACxBhK,6BAACO,2BAAA,IAAA,sBAAA,EAA+ByJ,SAAW,CAAA;AAAAjO,8BAAAiO;AAAAjO,8BAAAiE;AAAAA,oBAAAA,OAAA;AAAAA,6BAAAjE,EAAA,EAAA;AAAA,oBAAA;AAA3C0nB,qCAAAA;AAAAA,kBAAAA,OAAH;AAAA,wBACPX,0BAA0B,gBAAc;AAAA9iB,0BAAAA;AAAAjE,0BAAAA,UAAAiO,UAAA;AAC9BhK,+BAACO,2BAAA,IAAA,qBAAA,EAA8ByJ,SAAW,CAAA;AAAAjO,gCAAAiO;AAAAjO,gCAAAiE;AAAAA,sBAAAA,OAAA;AAAAA,+BAAAjE,EAAA,EAAA;AAAA,sBAAA;AAA1C0nB,uCAAAA;AAAAA,oBAAAA,OAAH;AAAA,0BACPX,0BAA0B,SAAO;AAAA9iB,4BAAAA;AAAA,4BAAAjE,EAAAkO,EAAAA,MAAAA,sBAAAlO,EAAA,EAAA,MAAAmb,sBAAAnb,EAAAiO,EAAAA,MAAAA,YAAAjO,EAAA,EAAA,MAAAmO,WAAAnO,UAAA4Z,iBAAA;AAEpC3V,iCAACO,2BAAAA,IAAA,kBAAA,EAA2ByJ,UAAmBE,SAA6BD,oBACtCiN,oBACHvB,iBAAkB;AAAA5Z,kCAAAkO;AAAAlO,kCAAAmb;AAAAnb,kCAAAiO;AAAAjO,kCAAAmO;AAAAnO,kCAAA4Z;AAAA5Z,kCAAAiE;AAAAA,wBAAAA,OAAA;AAAAA,iCAAAjE,EAAA,EAAA;AAAA,wBAAA;AAFrD0nB,yCAAAA;AAAAA,sBAAAA,OADU;AAAA,4BAIPX,0BAA0B,SAAO;AAAA9iB,8BAAAA;AAAA,8BAAAjE,EAAAkO,EAAAA,MAAAA,sBAAAlO,EAAA,EAAA,MAAAmb,sBAAAnb,EAAAiO,EAAAA,MAAAA,YAAAjO,EAAA,EAAA,MAAAmO,WAAAnO,UAAA4Z,iBAAA;AAEpC3V,mCAACO,2BAAAA,IAAA,oBAAA,EAA6ByJ,UAAmBE,SAA6BD,oBACtCiN,oBACHvB,iBAAkB;AAAA5Z,oCAAAkO;AAAAlO,oCAAAmb;AAAAnb,oCAAAiO;AAAAjO,oCAAAmO;AAAAnO,oCAAA4Z;AAAA5Z,oCAAAiE;AAAAA,0BAAAA,OAAA;AAAAA,mCAAAjE,EAAA,EAAA;AAAA,0BAAA;AAFvD0nB,2CAAAA;AAAAA,wBAAAA,OADU;AAAA,8BAIPX,0BAA0B,aAAW;AAAA9iB,gCAAAA;AAAAjE,gCAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA8W,YAAA9W,EAAA,EAAA,MAAA2D,YAAA;AAExCM,qCAACO,2BAAAA,IAAA,wBAAA,EAAmCb,YACFmT,UACA,UAAI,OACJ7I,UAAW;AAAAjO,sCAAAiO;AAAAjO,sCAAA8W;AAAA9W,sCAAA2D;AAAA3D,sCAAAiE;AAAAA,4BAAAA,OAAA;AAAAA,qCAAAjE,EAAA,EAAA;AAAA,4BAAA;AAH7C0nB,6CAAAA;AAAAA,0BAAAA,OADU;AAAA,gCAKPX,0BAA0B,aAAW;AAAA9iB,kCAAAA;AAAAjE,kCAAAA,UAAAiO,UAAA;AAC3BhK,uCAACO,2BAAA,IAAA,uBAAA,EAAgCyJ,SAAW,CAAA;AAAAjO,wCAAAiO;AAAAjO,wCAAAiE;AAAAA,8BAAAA,OAAA;AAAAA,uCAAAjE,EAAA,EAAA;AAAA,8BAAA;AAA5C0nB,+CAAAA;AAAAA,4BAAAA,OAAH;AAAA,kCACPX,0BAA0B,oBAAkB;AAAA9iB,oCAAAA;AAAAjE,oCAAAA,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA8W,YAAA9W,EAAA,EAAA,MAAA2D,YAAA;AAE/CM,yCAACO,2BAAAA,IAAA,wBAAA,EAAmCb,YACFmT,UACA,UAAG,MACH7I,UAAW;AAAAjO,0CAAAiO;AAAAjO,0CAAA8W;AAAA9W,0CAAA2D;AAAA3D,0CAAAiE;AAAAA,gCAAAA,OAAA;AAAAA,yCAAAjE,EAAA,EAAA;AAAA,gCAAA;AAH7C0nB,iDAAAA;AAAAA,8BAAAA,OADU;AAAA,oCAKPX,0BAA0B,UAAQ;AAAA9iB,sCAAAA;AAAAjE,sCAAAA,EAAAkO,EAAAA,MAAAA,sBAAAlO,EAAAmb,EAAAA,MAAAA,sBAAAnb,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA8W,YAAA9W,EAAA,EAAA,MAAAmO,WAAAnO,EAAA,EAAA,MAAA4Z,mBAAA5Z,EAAA,EAAA,MAAA2D,YAAA;AAErCM,0EAAC,qBAAgCN,EAAAA,YACFmT,UACD3I,SACWD,oBACVD,UACUkN,oBACHvB,gBAAkB,CAAA;AAAA5Z,4CAAAkO;AAAAlO,4CAAAmb;AAAAnb,4CAAAiO;AAAAjO,4CAAA8W;AAAA9W,4CAAAmO;AAAAnO,4CAAA4Z;AAAA5Z,4CAAA2D;AAAA3D,4CAAAiE;AAAAA,kCAAAA,OAAA;AAAAA,2CAAAjE,EAAA,EAAA;AAAA,kCAAA;AANxD0nB,mDAAAA;AAAAA,gCAAAA,OADU;AAAA,sCAQPX,0BAA0B,aAAW;AAAA9iB,wCAAAA;AAAAjE,wCAAAA,UAAAiO,UAAA;AAExChK,6CAACO,2BAAA,IAAA,uBAAA,EAAgCyJ,SAAW,CAAA;AAAAjO,8CAAAiO;AAAAjO,8CAAAiE;AAAAA,oCAAAA,OAAA;AAAAA,6CAAAjE,EAAA,EAAA;AAAA,oCAAA;AAA5C0nB,qDAAAA;AAAAA,kCAAAA,OADU;AAGdA,qDAAAA;AAAAA,kCAAAA;AAAAA,gCAAc;AAAA,8BAAA;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAAzjB,QAAAA;AAAAjE,QAAAA,UAAAiO,UAAA;AAKThK,YAAAgK,YAAYnJ,gCAAC6iB,GAAAA,WAAgB,EAAA,MAAA,QAC1B,UAAA;AAAA,QAAAnjB,2BAAAA,IAACJ,iBAAW,UAAkC,gCAAA,CAAA;AAAA,QAC9CU,2BAAAA,KAACV,GAAAA,YAAoB,EAAA,SAAA,WAAW,UAAA;AAAA,UAAA;AAAA,UAEaI,2BAAAA,cAAM,UAAQ,WAAA,CAAA;AAAA;UAC3D,CAAA;AAAA,MAAA,GACJ;AAAYxE,cAAAiO;AAAAjO,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAMO,UAAAkE,MAAA6iB;AAAyC5iB,QAAAA;AAAAnE,QAAAA,UAAAynB,uBAAA;AACjCpiB,YAAAA,CAAAA,UAAWoiB,sBAAsBpiB,KAAyB;AAACrF,cAAAynB;AAAAznB,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAArE,QAAAA,UAAAwkB,WAAA;AAE5DngB,YAAAA,CAAAyO,MAAA8U,aAAA;AAAA,YAAA,CACLA,UAAQ;AACA,sBAAA;AAAA,QAAA;AAEbjB,sBAAc7T,IAAI;AAAA,MAAC;AACtB9S,cAAAwkB;AAAAxkB,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAEUsE,UAAAA,MAAAiB,QAAQ6hB,mBAAmB;AAAC7iB,QAAAA;AAAA,QAAAvE,EAAAiO,EAAAA,MAAAA,YAAAjO,UAAA8W,YAAA9W,EAAA,EAAA,MAAAqkB,WAAArkB,WAAA4Z,mBAAA5Z,EAAA0mB,GAAAA,MAAAA,cAAA1mB,WAAAkE,OAAAlE,EAAA,GAAA,MAAAmE,OAAAnE,EAAAqE,GAAAA,MAAAA,OAAArE,EAAA,GAAA,MAAAsE,OAAAtE,WAAAS,QAAA;AAZ3C8D,2CAAC,kBACoB9D,EAAAA,iBAAK,QACf,OAAAyD,KACQ,eAAAC,KACTuiB,MAAS,YACD,cAAAriB,KAMJ4J,UACC,WAAA3J,KACDwS,UACO8C,iBACRyK,SAAU;AAAArkB,cAAAiO;AAAAjO,cAAA8W;AAAA9W,cAAAqkB;AAAArkB,eAAA4Z;AAAA5Z,eAAA0mB;AAAA1mB,eAAAkE;AAAAlE,eAAAmE;AAAAnE,eAAAqE;AAAArE,eAAAsE;AAAAtE,eAAAS;AAAAT,eAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,GAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA3E,QAAAA,WAAAonB,qBAAA;AAEtBA,YAAAA,sDACIhjB,GAAmB,YAAA,EAAA,SAAA,WACG,WAAA,UACJ,OAAA,SAAS,UAAQ,WAAA,CAAA;AAAapE,eAAAonB;AAAApnB,eAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,GAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA,QAAA5E,EAAAuE,GAAAA,MAAAA,OAAAvE,WAAA2E,KAAA;AAKnD,YAAAG,2BAAA,KAAA,OA1BU,EAAA,WAAA,8BACZP,UAAAA;AAAAA,QAAAA;AAAAA,QAiBCI;AAAAA,MAAAA,GAQL;AAAM3E,eAAAuE;AAAAvE,eAAA2E;AAAA3E,eAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,GAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAA,GAAA,MAAAiO,YAAAjO,EAAA,GAAA,MAAAykB,YAAAzkB,EAAA,GAAA,MAAAS,QAAAnB,IAAA;AAELyF,YAAA0f,YAAYhkB,QAAMnB,MACdkF,2BAAAA,IAAAE,GAAAA,YAAA,EACY,SAAA,SACC,WAAA,OACAuJ,UACD,SAAM4Y,MAAAA,oBAAwB,IAAA,GACvC,UAAAriB,+BAACqjB,GAAAA,aACL,CAAA,GAAA;AAAa7nB,eAAAiO;AAAAjO,eAAAykB;AAAA,QAAA,GAAA,IAAAhkB,QAAAnB;AAAAU,eAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,GAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAA,QAAAhF,EAAA4E,GAAAA,MAAAA,OAAA5E,WAAA+E,KAAA;AACf,YAAAD,2BAAA,KAAA,OArCS,EAAA,WAAA,6BACXF,UAAAA;AAAAA,QAAAA;AAAAA,QA4BCG;AAAAA,MAAAA,GAQL;AAAM/E,eAAA4E;AAAA5E,eAAA+E;AAAA/E,eAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,GAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAA,QAAAjF,EAAAyf,GAAAA,MAAAA,gBAAAzf,EAAA,GAAA,MAAAiO,YAAAjO,EAAA8W,GAAAA,MAAAA,YAAA9W,EAAA,GAAA,MAAAymB,qBAAAzmB,WAAA2D,YAAA;AAGDsB,YAAAwhB,qBACGjiB,2BAAA,IAAC,sBAAiCb,EAAAA,YACAmT,YAAO,UACJ,eAACA,CAAAA,UACN7I,UACIwR,cACT0H,KAAAA,aAAe,CAAA;AAAAnnB,eAAAyf;AAAAzf,eAAAiO;AAAAjO,eAAA8W;AAAA9W,eAAAymB;AAAAzmB,eAAA2D;AAAA3D,eAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,GAAA;AAAA,IAAA;AAAAkF,QAAAA;AAAAlF,QAAAA,WAAAiO,UAAA;AAI9C/I,2CAEM,OAFU,EAAA,WAAA,eACZ,UAACV,2BAAAA,IAAA,4BAAA,EAAqCyJ,UAAQ,EAClD,CAAA;AAAMjO,eAAAiO;AAAAjO,eAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,GAAA;AAAA,IAAA;AAAAsF,QAAAA;AAAAtF,QAAAA,EAAA0nB,GAAAA,MAAAA,kBAAA1nB,WAAAiF,OAAAjF,EAAA,GAAA,MAAAkF,KAAA;AACJ,YAAAJ,2BAAA,KAAA,OAdU,EAAA,WAAA,wCACXG,UAAAA;AAAAA,QAAAA;AAAAA;QAUDC;AAAAA,MAAAA,GAGJ;AAAMlF,eAAA0nB;AAAA1nB,eAAAiF;AAAAjF,eAAAkF;AAAAlF,eAAAsF;AAAAA,IAAAA,OAAA;AAAAA,YAAAtF,EAAA,GAAA;AAAA,IAAA;AAAAwF,QAAAA;AAAA,QAAAxF,EAAA4mB,GAAAA,MAAAA,oBAAA5mB,WAAAykB,YAAAzkB,EAAA,GAAA,MAAAyN,qBAAAzN,EAAAS,GAAAA,MAAAA,QAAAnB,IAAA;AAELmlB,YAAAA,YACIjgB,2BAAAA,IAAAsjB,KAAA,oBAAA,EAAyBlB,MAAe,kBACX,UAAMnC,MAAAA,SAAShkB,QAAMnB,IAAMmO,iBAAiB,GAC5C,UAAMoZ,MAAAA,yBAAyB,GAClC,OAAgCriB,2BAAA,IAAA,SAA3B,UAAqB,wBAAA,CAAA,GAE7B,6CAAK,EAAA,UAAA;AAAA,QAAA;AAAA,QAAWA,2BAAAA,IACJ,OADO,UACX,sBAAA,CAAA;AAAA,QAAI;AAAA,MAAA,EAAA,CACG,EAChB,CAAA;AAAAxE,eAAA4mB;AAAA5mB,eAAAykB;AAAAzkB,eAAAyN;AAAA,QAAA,GAAA,IAAAhN,QAAAnB;AAAAU,eAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,GAAA;AAAA,IAAA;AAAA0F,QAAAA;AAAA,QAAA1F,EAAA,GAAA,MAAAiE,OAAAjE,EAAAgF,GAAAA,MAAAA,OAAAhF,EAAAsF,GAAAA,MAAAA,OAAAtF,WAAAwF,KAAA;AAzE/BE,YACKzB,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAQDe;AAAAA,QAuCAM;AAAAA,QAgBCE;AAAAA,MAAAA,GAS0B;AAE5BxF,eAAAiE;AAAAjE,eAAAgF;AAAAhF,eAAAsF;AAAAtF,eAAAwF;AAAAxF,eAAA0F;AAAAA,IAAAA,OAAA;AAAAA,YAAA1F,EAAA,GAAA;AAAA,IAAA;AA3EH0F,WAAAA;AAAAA,EA2EG;AAIX,QAAMqiB,UAAU;AAEhB,WAASrC,aAAWrgB,OAAgBif,sBAAiC;AAE7D1S,QAAAA;AACJ,QAAI,CAACvM,OAAO;AACA,cAAA;AAAA,IAAA;AAEZ,QAAIA,SAAS,CAACA,MAAM2iB,MAAMD,OAAO,GAAG;AACxB,cAAA;AAAA,IAAA;AAEZ,QAAI1iB,SAASif,wBAAwBA,qBAAqBthB,SAASqC,KAAK,GAAG;AAC/D,cAAA;AAAA,IAAA;AAELuM,WAAAA;AAAAA,EACX;AAEA,WAAS6T,aAAapgB,OAAe;AAC7BuM,QAAAA;AACJ,QAAI,CAACvM,OAAO;AACA,cAAA;AAAA,IAAA;AAELuM,WAAAA;AAAAA,EACX;AAEA,QAAMqW,kBAAoD;AAAA,IACtDC,YAAY;AAAA,IACZ9E,WAAW;AAAA,IACXC,UAAU;AAAA,IACVE,KAAK;AAAA,IACLD,OAAO;AAAA,IACP6E,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,cAAc;AAAA,IACdC,cAAc;AAAA,IACdC,eAAe;AAAA,IACfC,qBAAqB;AAAA,IACrBC,aAAa;AAAA,IACbC,mBAAmB;AAAA,IACnBC,WAAW;AAAA,IACXC,kBAAkB;AAAA,IAClBC,WAAW;AAAA,IACX9lB,OAAO;AAAA,IACP+lB,WAAW;AAAA,IACXC,QAAQ;AAAA,IACRC,cAAc;AAAA,IACdC,OAAO;AAAA,EACX;AAEA,WAAAC,iBAAAnpB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA0B,UAAA;AAAA,MAAAkpB;AAAAA,MAAA9jB;AAAAA,MAAA+jB;AAAAA,MAAAtW;AAAAA,MAAAuW;AAAAA,MAAApb;AAAAA,MAAA6I;AAAAA,MAAA8C;AAAAA,MAAAyK;AAAAA,IAAAA,IAAAtkB;AAsBzB8D,QAAAA;AAAA0T,QAAAA;AAAA/V,QAAAA;AAAAI,QAAAA;AAAAQ,QAAAA;AAAAC,QAAAA;AAAAK,QAAAA;AAAAO,QAAAA;AAAA,QAAAjD,EAAA,CAAA,MAAAiO,YAAAjO,EAAA8W,CAAAA,MAAAA,YAAA9W,SAAAqkB,WAAArkB,EAAA,CAAA,MAAAmpB,mBAAAnpB,EAAAqpB,CAAAA,MAAAA,gBAAArpB,EAAAopB,CAAAA,MAAAA,iBAAAppB,EAAA,CAAA,MAAA8S,QAAA9S,EAAA4Z,CAAAA,MAAAA,mBAAA5Z,SAAAqF,OAAA;AAEGikB,YAAAA,qBAA2B9a,OAAAyJ,QAAA4L,eAA8B,EAAC0F,OAAQ/a,OAAAyJ,QAAe2B,eAAe,CAAC;AAEjG,YAAA4P,oBAA0BnF,UACpBiF,mBAAkBxmB,OAAAuH,OAA6H,IAC/Iif,oBAAkBviB,IAAAmD,QAGlB,EAACmP,OAAArO,UAAA,CAAA,CAME;AAET,YAAAye,QAAYpkB;AACZ,YAAAqkB,mBAAuBvQ,QAAO2K,2BAAsB3K,KAAG,KAAKS,gBAAgBT,KAAG,IAACzX;AAChF,YAAAioB,eAAqB5P,kBAAcrB;AAAW9U,UAAAA;AAAA5D,UAAAA,EAAA2pB,EAAAA,MAAAA,gBAAA3pB,UAAA0pB,oBAAA1pB,EAAA,EAAA,MAAA4Z,iBAAA;AAC9CgQ,cAAAA,kBAAwBD,gBAAiBhR,CAAAA,uBAAkBgR,YAAY,IAAI7P,KAAAA,eAAe6P,cAAc/P,eAAe,IAAClY;AAC5FkC,cAAAgmB,mBAAmB7P,mBAAiBmJ,KAAU0G,UAAAA,iBAAiB7P,gBAAc,IAAIA;AAAc/Z,gBAAA2pB;AAAA3pB,gBAAA0pB;AAAA1pB,gBAAA4Z;AAAA5Z,gBAAA4D;AAAAA,MAAAA,OAAA;AAAAA,cAAA5D,EAAA,EAAA;AAAA,MAAA;AAA3H,YAAA6pB,sBAA4BjmB;AAE5B,YAAAxD,SAAA,CAAA,GAAA,IAAAuP,IAAqCnB,OAAAC,KAAY+a,gBAAgB,EAACziB,IAAA+iB,QAMjE,CAAC,CAAA;AAAG/lB,UAAAA;AAAA,UAAA/D,EAAA,EAAA,MAAAiO,YAAAjO,EAAAqpB,EAAAA,MAAAA,gBAAArpB,EAAA8S,EAAAA,MAAAA,QAAA9S,UAAAqF,OAAA;AAIYtB,cAAAA,MAAA;AAAA,cAAA,CACAkK,UAAQ;AACTob,0BAAcvW,MAAMvN,QAAQF,KAAK,CAAC;AAAA,UAAA;AAAA,QAAC;AAE1CrF,gBAAAiO;AAAAjO,gBAAAqpB;AAAArpB,gBAAA8S;AAAA9S,gBAAAqF;AAAArF,gBAAA+D;AAAAA,MAAAA,OAAA;AAAAA,cAAA/D,EAAA,EAAA;AAAA,MAAA;AAIGgE,YAAAA,MAAAiK,WAAQ8b,GAAAA,+BAAAC,GAAAA;AAA2D/lB,UAAAA;AAAAjE,UAAAA,UAAAgE,KAAA;AAH5DC,cAAAgC,GAAAA,IACP,sCAAoCgkB,GAAAA,sBAEpCjmB,KACA,4BACJ;AAAChE,gBAAAgE;AAAAhE,gBAAAiE;AAAAA,MAAAA,OAAA;AAAAA,cAAAjE,EAAA,EAAA;AAAA,MAAA;AAAAkE,UAAAA;AAAAlE,UAAAA,UAAAqF,OAAA;AACAnB,eAACmB,gDAAa,UAAwB,4BAAA;AAAKrF,gBAAAqF;AAAArF,gBAAAkE;AAAAA,MAAAA,OAAA;AAAAA,cAAAlE,EAAA,EAAA;AAAA,MAAA;AAAAmE,UAAAA;AAAA,UAAAnE,EAAA6pB,EAAAA,MAAAA,uBAAA7pB,UAAAqF,OAAA;AAC3ClB,cAAAkB,SAASwkB,uBAAuB/kB,gCAa3B,SAZS,WAAAmB,GAAAA,IACP,mBAAmB,GACvB,UAAA;AAAA,UAAAzB,2BAAAA,IAAA,SAAgB,WAAA,QACZ,yCAACyV,KAAAA,qBAAoC4P,EAAAA,gBAAAA,qBACzC,EAAA,CAAA;AAAA,UACA/kB,2BAAAA,YAAgB,EAAA,WAAA,iDACZ,UAAA;AAAA,YAAAN,2BAAAA,IAAA,OAAA,EAAMqlB,8BAAmBpqB,KAAM,CAAA;AAAA,2CAC9B2E,GAAAA,YAAoB,EAAA,SAAA,WACF,OAAA,aACdylB,8BAAmBrgB,YACxB,CAAA;AAAA,UAAA,EACJ,CAAA;AAAA,QAAA,GACJ;AAAMxJ,gBAAA6pB;AAAA7pB,gBAAAqF;AAAArF,gBAAAmE;AAAAA,MAAAA,OAAA;AAAAA,cAAAnE,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,EAAA,EAAA,MAAAiE,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,EAAAmE,EAAAA,MAAAA,OAAAnE,UAAA+D,KAAA;AA1BVrB,aAAAoC,2BAAAA,KAAA,OAAA,EACa,SAAAf,KAKE,WAAAE,KAMVC,UAAAA;AAAAA,UAAAA;AAAAA,UACAC;AAAAA,QAAAA,GAcL;AAAMnE,gBAAAiE;AAAAjE,gBAAAkE;AAAAlE,gBAAAmE;AAAAnE,gBAAA+D;AAAA/D,gBAAA0C;AAAAA,MAAAA,OAAA;AAAAA,aAAA1C,EAAA,EAAA;AAAA,MAAA;AACL2M,WAAAA,GAAAA;AAAamG,WAAAA;AAAI,UAAA9S,EAAAqpB,EAAAA,MAAAA,gBAAArpB,UAAAqF,OAAA;AACIzD,aAAAqR,CAAUoW,WAAAA,aAAavW,QAAMvN,QAAQF,KAAK,CAAC;AAACrF,gBAAAqpB;AAAArpB,gBAAAqF;AAAArF,gBAAA4B;AAAAA,MAAAA,OAAA;AAAAA,aAAA5B,EAAA,EAAA;AAAA,MAAA;AAC3C,WAAA;AAAA,UAAAA,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;4CAClB+P,GAAAA,eAAY,UAEb,2BAAA,CAAA;AAAclT,gBAAAqC;AAAAA,MAAAA,OAAA;AAAAA,aAAArC,EAAA,EAAA;AAAA,MAAA;AACbmT,WAAAA,GAAAA;AACG,WAAA3O,2BAAAA,IAAA,SACKpE,UAAM2G,OAAAA,IAAAC,aAoBGlC,2BAAA,KAAA,OAAA,EAnB6B,WAAA,QAC/B,UAAA;AAAA,QAACN,2BAAA,IAAAJ,GAAA,YAAA,EAAoB,SAAA,mBAAgB,SAAA;AAAA,QACrCI,2BAAAA,IAAA,SAAgB,WAAA,wDACXgK,iBAAAyJ,QAAeuR,gBAAgB,EAACziB,IAAA1C,CAAA,QAAA;AAAM,gBAAA,CAAA6lB,OAAAC,gBAAA,IAAA9lB;AACnC+lB,gBAAAA,WAAAnC,gBAAiC9O,KAAuB;AAAE,cACtDiR,aAAarnB,SAAK;AAAA,mBACVyB,2BAAA,IAAA,sBAAA,EAEa2kB,iBACR,SAAA,MAAA;AACLC,4BAAcjQ,KAAG;AACjBkQ,sCAAwB;AAAA,YAEZtP,GAAAA,gBAAAA,kBACNjD,SAAAA,GAPH,KAOc;AAAA,UAAA;AAAA,iBAAA;AAAA,QAAA,CAGhC,EACL,CAAA;AAAA,MAAA,KAlBa/T,OAmBjB,CACH,GAYL;AAAM/C,aAAAiO;AAAAjO,aAAA8W;AAAA9W,aAAAqkB;AAAArkB,aAAAmpB;AAAAnpB,aAAAqpB;AAAArpB,aAAAopB;AAAAppB,aAAA8S;AAAA9S,aAAA4Z;AAAA5Z,aAAAqF;AAAArF,aAAA6D;AAAA7D,cAAAuX;AAAAvX,cAAAwB;AAAAxB,cAAA4B;AAAA5B,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAY,WAAA7D,EAAA,CAAA;AAAAuX,WAAAvX,EAAA,EAAA;AAAAwB,WAAAxB,EAAA,EAAA;AAAA4B,WAAA5B,EAAA,EAAA;AAAAoC,WAAApC,EAAA,EAAA;AAAAqC,WAAArC,EAAA,EAAA;AAAA0C,WAAA1C,EAAA,EAAA;AAAAiD,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAA6D,EAAAA,MAAAA,MAAA7D,UAAAiD,IAAA;AAnCV,WAAAuB,2BAAAA,IAAC,MACGvB,UAmCJ,GAAA,CAAA;AAAgBjD,cAAA6D;AAAA7D,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA/D,QAAAA,UAAAuX,MAAAvX,EAAAwB,EAAAA,MAAAA,MAAAxB,EAAA4B,EAAAA,MAAAA,MAAA5B,EAAA,EAAA,MAAAoC,MAAApC,UAAAqC,MAAArC,EAAA,EAAA,MAAA4D,IAAA;AA1CpBG,2CAAC,IAAa+O,EAAAA,MAAAA,IACQ,cAAAlR,IACJ,UAAAQ,IACdC,UAAAA;AAAAA,QAAAA;AAAAA,QAGAuB;AAAAA,MAAAA,GAqCJ;AAAS5D,cAAAuX;AAAAvX,cAAAwB;AAAAxB,cAAA4B;AAAA5B,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA+D,IAAA;AAxENC,WACHtB,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QA4BAqB;AAAAA,MAAAA,GA2CS;AACV/D,cAAA0C;AAAA1C,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAzEIgE,WAAAA;AAAAA,EAyEJ;AA9HP,WAAA8lB,SAAAO,OAAA;AA8CQtnB,UAAAA,QAAAklB,gBAA8B9O,KAAuB;AAAE,QACnDpW,OAAK;AACEA,aAAAA;AAAAA,IAAAA;AAEJ,WAAA;AAAA,EAAc;AAlD7B,WAAAiI,SAAAsO,GAAAC,GAAA;AAAA,WAAA;AAAA,MAAA,GAkCmBD;AAAAA,MAAC,GACDC;AAAAA,IAAC;AAAA,EAAA;AAnCpB,WAAArP,SAAAnK,IAAA;AA6Bc,UAAA,CAAAoZ,KAAAmR,gBAAA,IAAAvqB;AAAqB,WAAA;AAAA,MAAA,CACtBoZ,GAAG,GAAGY;AAAAA,IAAc;AAAA,EAAA;AA9BjC,WAAA1P,QAAAtK,IAAA;AA2BqCga,UAAAA,CAAAA,EAAAA,cAAA,IAAAha;AAAmB,WAAK,CAAC4Y,KAAkBoB,kBAAAA,eAAcrB,QAAS,KAAKqB,eAAcrB,UAAAG,aAAwB;AAAA,EAAO;AA6GlJ,WAAA0R,qBAAAxqB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA8B,UAAA;AAAA,MAAAwZ;AAAAA,MAAA0P;AAAAA,MAAApP;AAAAA,MAAAjD;AAAAA,IAAAA,IAAA/W;AAOjC,UAAA4pB,eAAqB5P,eAAcrB;AACnC8R,UAAAA,6BAAmC1T,YAAQ,CAAK6B,KAAAA,kBAAkBgR,YAAY,KAAKA,aAAY9Q,aAAcsQ,iBAAetQ;AAAWrX,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAMpH3B,WAAAyE,OACP,mDACJ;AAACjG,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA,QAAA5B,EAAA+Z,CAAAA,MAAAA,kBAAA/Z,SAAAwqB,4BAAA;AACD,WAAAhmB,2BAAAA,IAAA,SAAgB,WAAA,QACZ,yCAACyV,KAAAA,qBAAoCF,EAAAA,gBAA0ByQ,sCAA0B,EAC7F,CAAA;AAAMxqB,aAAA+Z;AAAA/Z,aAAAwqB;AAAAxqB,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,SAAAwqB,4BAAA;AAGGA,WAAAA,8BAA+BhmB,2BAAA,IAAAC,GAAA,SAAA,EACrB,OAAA,wHACP,UAACD,2BAAA,IAAAimB,GAAA,aAAA,EAAiB,MAAA,YAAsB,WAAA,MAAK,CAAA,GACjD;AAAUzqB,aAAAwqB;AAAAxqB,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAECqC,UAAAA,KAAAmoB,6BAA6B,cAAW9oB;AAAYgB,QAAAA;AAAA1C,QAAAA,SAAA+Z,eAAAta,QAAAO,SAAAqC,IAAA;AAD/DK,WAAC8B,2BAAAA,IAAAJ,GAAAA,YAAA,EACU,OAAA/B,IAAuD0X,yBAActa,MAAM;AAAa,QAAA,CAAA,IAAAsa,eAAAta;AAAAO,aAAAqC;AAAArC,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAAoC,CAAAA,MAAAA,MAAApC,UAAA0C,IAAA;AACjG,WAAAoC,2BAAA,KAAA,OAPU,EAAA,WAAA,oCACX1C,UAAAA;AAAAA,QAAAA;AAAAA,QAIDM;AAAAA,MAAAA,GAEJ;AAAM1C,aAAAoC;AAAApC,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAA,EAAA,MAAA+Z,eAAAvQ,aAAA;AAEN,WAAAhF,2BAAAA,IAACJ,GAAAA,cAAoB,SAAA,WACF,OAAA,aACI,WAAA,YAClB2V,UAAAA,eAAcvQ,YACnB,CAAA;AAAa,QAAA,EAAA,IAAAuQ,eAAAvQ;AAAAxJ,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,IAAA;AAdjBG,2CAAA,OACId,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QASAW;AAAAA,MAAAA,GAMJ;AAAM5D,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA4B,EAAAA,MAAAA,MAAA5B,UAAA+D,IAAA;AACJ,WAAAe,2BAAA,KAAA,OAvBS,EAAA,WAAAtD,IAGXI,UAAAA;AAAAA,QAAAA;AAAAA,QAGAmC;AAAAA,MAAAA,GAiBJ;AAAM/D,cAAA4B;AAAA5B,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAAyZ,EAAAA,MAAAA,WAAAzZ,UAAAgE,IAAA;AA3BHC,YAACO,2BAAAA,IAAAkmB,GAAAA,MAAA,EACKjR,SACE,WAAA,wCACXzV,UAyBJ,IAAA;AAAOhE,cAAAyZ;AAAAzZ,cAAAgE;AAAAhE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AA5BAiE,WAAAA;AAAAA,EA4BA;ACtxBJ,WAAS0mB,UAAUC,KAAqB;AACvC,QAAA,CAACA,IAAY,QAAA;AACTA,YAAAA,IAAIC,MAAM,GAAG,CAAC,EAAEC,YAAY,IAAIF,IAAIC,MAAM,CAAC,GAC9CE,QAAQ,gBAAgB,GAAG,EAC3BC,MAAM,OAAO,EACb3R,OAAO,CAAC4R,KAAKC,QAAQ;AACXD,aAAAA,MAAMC,IAAI,CAAC,EAAEne,gBAAgBme,IAAIC,UAAU,CAAC;AAAA,OACpD,EAAE;AAAA,EACb;ACAO,WAAAC,cAAArrB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAuB,UAAA;AAAA,MAAA0hB;AAAAA,MAAA0H;AAAAA,MAAAvW;AAAAA,IAAAA,IAAA/S;AAM1B,UAAAsrB,qBAA2BtV,KAAAA,sBAAsB;AAEjD,UAAAuV,OAAa3J,aACP,iEAAmEA,YAAUliB,OAASkrB,UAAUhJ,WAAUliB,IAAK,IAAI,QAAQ,mCAAmC8rB,MAAAC,UAAgBC,iBAAA;AAAA,MAAA,GAAsB9J;AAAAA,IAAAA,CAAY,GAAC,MAAQ,GAAI,IAC7N;AAAyBngB,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAA2hB,WAAAliB,MAAA;AAI1B,WAAAqF,2BAAA,KAAAoO,GAAqB,aAAA,EAAA,SAAA,MAAM,UAAA;AAAA,QAAA;AAAA,QAAUyO,WAAUliB;AAAAA,MAAAA,GAAM;AAAc,QAAA,CAAA,IAAAkiB,WAAAliB;AAAAO,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA,QAAA5B,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGhEvB,WAACkD,2BAAAA,KAAAV,GAAAA,YAAA,EAAoB,SAAA,SAAoB,WAAA,aAAa,UAAA;AAAA,QAAA;AAAA,uCAKgB,KAD9D,EAAA,KAAA,uBACE,MAAA,oDAAoD,UAAI,QAAA;AAAA,QAAI;AAAA,MAAA,GACtE;AAAapE,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,SAAAsrB,MAAA;AARjBlpB,2CAAC+Q,kBAEGvR,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAOA4C,2BAAAA,IAACknB,gCACU,OAAAC,0BAAAC,QACDN,MACG,UAAA,cAERjhB,UAiBLA,QAAA,CAAA;AAAA,MAAA,GAEJ;AAAgBrK,aAAAsrB;AAAAtrB,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAAsrB,CAAAA,MAAAA,QAAAtrB,SAAAqrB,oBAAA;AAKChpB,WAAA8C,CAAA,MAAA;AACLA,UAACiT,gBAAiB;AAClBjT,UAACgT,eAAgB;AACjBkT,2BAAkBvY,KAAA;AAAA,UAAAuD,MACR;AAAA,UAASC,SACN;AAAA,QAAA,CACZ;AACMuV,eAAAA,UAAAC,UAAAC,UAA8BT,IAAI;AAAA,MAAC;AAC7CtrB,aAAAsrB;AAAAtrB,aAAAqrB;AAAArrB,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;0CACA6oB,GAAAA,iBAAsB,EAAA,MAAA,QAAU,CAAA;AAAAhsB,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,SAAAqC,IAAA;AAZrCY,2CAACqO,WACY,EAAA,SAAA,QACH,MAAA,SACG,SAAAjP,IASTK,UAAAA;AAAAA,QAAAA;AAAAA,QAAiC;AAAA,MAAA,GAErC;AAAS1C,aAAAqC;AAAArC,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,UAAAqpB,cAAA;AACTzlB,0CAAC0N,GAAgB,QAAA,EAAA,SAAA,MAAM+X,aAAY,KAAM,GAAG,UAAK,SAAA;AAASrpB,cAAAqpB;AAAArpB,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,IAAA;AAhB9DG,2CAACqP,kBACGnQ,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAeAW;AAAAA,MAAAA,GACJ;AAAgB5D,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAAqpB,EAAAA,MAAAA,gBAAArpB,EAAA,EAAA,MAAA8S,QAAA9S,EAAAwB,EAAAA,MAAAA,MAAAxB,EAAA,EAAA,MAAAoC,MAAApC,UAAA+D,IAAA;AAvDbC,WAACc,2BAAAA,KAAA6H,GAAAA,QAAA,EAAamG,MACQuW,cACJ,UAAA,OACrB7nB,UAAAA;AAAAA,QAAAA;AAAAA,QACAY;AAAAA,QAkCA2B;AAAAA,MAAAA,GAkBJ;AAAS/D,cAAAqpB;AAAArpB,cAAA8S;AAAA9S,cAAAwB;AAAAxB,cAAAoC;AAAApC,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAxDFgE,WAAAA;AAAAA,EAwDE;AAnEN,WAAAqG,QAAAtK,IAAA;AA6BW,UAAA;AAAA,MAAAksB;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAArsB;AAMC,WACCyE,2BAAAA,IAAA,OAAA,EAAYynB,OAAkB,WAAA,uBACzCC,UAAAA,OAAMnlB,IAAAslB,CAAAA,MAAAC,MACH9nB,2BAAA,IAAA,OAAA,EAAW,GAAM2nB,aAAY;AAAA,MAAAE;AAAAA,IAAS,CAAA,GACjCA,UAAAA,KAAItlB,KAAAwlB,OAAApT,QACD3U,4CAAoB4nB,cAAa;AAAA,MAAAG;AAAAA,IAAAA,CAAU,EAA9B,GAAA,IAChB,EAHKD,GAAAA,CAIV,CACH,EACH,CAAA;AAAA,EAAM;AA0BZ,WAASb,iBAAiB9J,YAAsC;AAEtD6K,UAAAA,kBAAkBA,CAACnnB,UAAoB;AACrCA,UAAAA,UAAU3D,UAAa2D,UAAU,MAAM;AAChCA,eAAAA;AAAAA,MAAAA;AAELonB,YAAAA,YAAYC,aAAMrnB,KAAK;AACzB,UAAA,OAAOonB,cAAc,YAAY;AAC1BA,eAAAA;AAAAA,MAAAA;AAEPhc,UAAAA,MAAMkH,QAAQ8U,SAAS,GAAG;AAC1B,eAAOA,UAAU1lB,IAAI,CAACyD,MAAWgiB,gBAAgBhiB,CAAC,CAAC;AAAA,MAAA;AAEnD,UAAA,OAAOiiB,cAAc,UAAU;AAC3BA,YAAAA,cAAc,KACPA,QAAAA;AACXje,eAAOC,KAAKge,SAAS,EAAEre,QAAS+K,CAAQ,QAAA;AAChC,cAAA,CAACkO,KAAAA,cAAcoF,SAAS,GAAG;AAC3B,kBAAME,WAAWH,gBAAgBC,UAAUtT,GAAG,CAAC;AAC3CwT,gBAAAA,aAAa,QAAQA,aAAajrB,UAAairB,aAAa,SAAS,CAACtF,mBAAcsF,QAAQ,GAAG;AAC/FF,wBAAUtT,GAAG,IAAIwT;AAAAA,YAAAA,OACd;AACH,qBAAOF,UAAUtT,GAAG;AAAA,YAAA;AAAA,UACxB;AAAA,QACJ,CACH;AACD,eAAOsT,UAAUG;AACjB,eAAOH,UAAUI;AACjB,eAAOJ,UAAU7R;AACjB,eAAO6R,UAAU1S;AACjB,eAAO0S,UAAUK;AACjB,eAAOL,UAAU1T;AAAAA,MAAAA;AAId0T,aAAAA;AAAAA,IACX;AAEO,WAAA;AAAA,MACHntB,IAAIqiB,WAAWriB;AAAAA,MACfG,MAAMkiB,WAAWliB;AAAAA,MACjBoI,cAAc8Z,WAAW9Z;AAAAA,MACzBnI,MAAMiiB,WAAWjiB;AAAAA,MACjB8J,aAAamY,WAAWnY;AAAAA,MACxBuP,UAAU;AAAA,MACV3N,iBAAiBuW,WAAWvW;AAAAA,MAC5BmB,MAAMoV,WAAWpV;AAAAA,MACjBxJ,OAAO4e,WAAW5e;AAAAA,MAClBW,UAAUie,WAAWje;AAAAA,MACrBqpB,eAAepL,WAAWoL;AAAAA,MAC1BC,aAAarL,WAAWqL;AAAAA,MACxB/T,YAAYzK,OAAOyJ,QAAQ;AAAA,QACvB,GAAI0J,WAAW1I,cAAc,CAAA;AAAA,MAChC,CAAA,EACIlS,IAAI,CAAC,CAACoS,KAAK9T,KAAK,OAAO;AAAA,QACpB,CAAC8T,GAAG,GAAGqT,gBAAgBnnB,KAAK;AAAA,MAC9B,EAAA,EACDgU,OAAO,CAACC,GAAGC,OAAO;AAAA,QAAE,GAAGD;AAAAA,QAAG,GAAGC;AAAAA,MAAE,IAAI,CAAA,CAAE;AAAA,MAC1C0T,iBAAiBtL,WAAWsL,kBAAkB,CAAE,GAAElmB,IAAI0kB,gBAAgB;AAAA,IAC1E;AAAA,EAEJ;ACvFO,WAASyB,+BAA+B;AAAA,IACIvpB;AAAAA,IACAzD;AAAAA,IACAitB;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAltB;AAAAA,IACAmtB;AAAAA,IACAC;AAAAA,IACApf;AAAAA,IACAqf;AAAAA,IACA5T;AAAAA,IACAuB;AAAAA,EACuB,GAAG;AAEnE,UAAA;AAAA,MACF1a;AAAAA,MACAC;AAAAA,MACAmV;AAAAA,MACA/U;AAAAA,MACAD;AAAAA,MACA4sB;AAAAA,QACAxsB,iBAA+B;AAEnC,UAAMoqB,qBAAqBtV,KAAAA,sBAAsB;AAEjD,UAAM2X,cAAcC,KAAAA,eAAe;AACnC,UAAMC,WAAW,CAACF;AAGlB,UAAM,CAACG,uBAAuBC,wBAAwB,IAAIzsB,eAA6B;AACvF,UAAM,CAACqZ,qBAAqBoD,sBAAsB,IAAIzc,eAA6B;AACnF,UAAM,CAAC0c,2BAA2BC,4BAA4B,IAAI3c,eAA6B;AAE/F,UAAMmd,yBAAyB9D,sBAAsBnN,UAAUmN,qBAAqBqD,yBAAyB,IAAIrc;AAC3G+c,UAAAA,mBAAmBD,yBAAyB1c,OAAAA,MAAMrB,OAAOwY,YAAYuF,uBAAuBrR,WAAW,KAAK,cAAc,CAAC,IAAIzL;AACrI,UAAM,CAACqsB,gBAAgBC,iBAAiB,IAAI3sB,MAAAA,SAAkB,KAAK;AAEnE,UAAM,CAAC4sB,qBAAqBC,sBAAsB,IAAI7sB,MAAAA,SAAkB,KAAK;AAE7E,UAAM,CAAC8sB,uBAAuBC,wBAAwB,IAAI/sB,MAAAA,SAAkB,KAAK;AACjF,UAAM,CAAC6Z,sBAAsBmT,uBAAuB,IAAIhtB,MAAAA,SAAmB,CAAA,CAAE;AAE7E,UAAMitB,4BAA4B/tB,MAAMC,OAErCC,OAAOma,kBAAkB;AAAA,MAAE,IAAIna,OAAOma;AAAAA,IAAgB,IAAI,EAAE;AAE/DtY,UAAAA,UAAU,MAAM;AACR+qB,UAAAA,mBACSI,KAAK;AAAA,IAAA,GACnB,CAACA,KAAK,CAAC;AAEJc,UAAAA,0BAA0Bf,wBAC1B,MAAY;AACV,UAAI,CAACA,sBACD;AAEJU,6BAAuB,IAAI;AAELztB,4BAAAA,MAAM,EACvB2P,KAAMoe,CAAkB,kBAAA;AAEjBA,YAAAA,cACuBA,MAAAA,uBAAAA,cAAcvV,UAAwB;AAEjE,YAAI,CAACuV,eAAe;AAChBnD,6BAAmBvY,KAAK;AAAA,YACpBuD,MAAM;AAAA,YACNC,SAAS;AAAA,UAAA,CACZ;AACD;AAAA,QAAA;AAGJ,cAAMmY,mBAAmBD,cAAcvV,aAAazK,OAAOC,KAAK+f,cAAcvV,UAAU,IAAI,CAAE,GACzFnW,OAAQ0K,CAAgB,gBAAA,CAAC/M,OAAOwY,WAAWzL,WAAW,CAAC;AACxDihB,YAAAA,gBAAgB3nB,WAAW,GAAG;AAC9BukB,6BAAmBvY,KAAK;AAAA,YACpBuD,MAAM;AAAA,YACNC,SAAS;AAAA,UAAA,CACZ;AACD;AAAA,QAAA;AAGJ,cAAMoY,oBAAoB;AAAA,UACtB,GAAGD,gBAAgBpV,OAAO,CAAC6R,KAAK1d,kBAAgB;AAC5C0d,gBAAI1d,aAAW,KAAKghB,cAAcvV,cAAc,IAAIzL,aAAW;AACxD0d,mBAAAA;AAAAA,UACX,GAAG,EAEF;AAAA,UACD,GAAGzqB,OAAOwY;AAAAA,QACd;AACM0V,cAAAA,yBAAyB,CAC3B,GAAGF,iBACH,GAAIhuB,OAAOma,mBAAmB,EAAG;AAEvB,sBAAA,cAAc8T,mBAAmB,KAAK;AAEpDE,8BAAsBD,sBAAsB;AAE5CN,gCAAwBI,eAAe;AAAA,MAAA,CAC1C,EACAtd,QAAQ,MAAM;AACX+c,+BAAuB,KAAK;AAAA,MAAA,CAC/B;AAAA,IAEPxsB,IAAAA;AAEAmtB,UAAAA,4BAA4BA,CAACxhB,cAAuB;AAClD,UAAA,CAACA,UAAW,QAAOihB,0BAA0Bxe,QAAQ,EAAE,KAAKhO,OAAAA,MAAMrB,QAAQ6M,gCAAgC;AACvGghB,aAAAA,0BAA0Bxe,QAAQzC,SAAS,KAAKvL,aAAMrB,QAAQ6M,+BAA+BD,SAAS,CAAC;AAAA,IAClH;AAEMuhB,UAAAA,wBAAwBA,CAACnT,oBAA8BpO,gBAAuB;AAC1E+Q,YAAAA,sBAAsB9Q,+BAA+BD,WAAS;AAEtD+Q,oBAAAA,qBAAqB3C,oBAAoB,KAAK;AAClC3L,gCAAAA,QAAQzC,eAAa,EAAE,IAAIoO;AAAAA,IAEzD;AAEM8C,UAAAA,iBAAiBA,CAAC/Q,eAAsBH,gBAAuB;AACjE,YAAM2P,SAASxP,gBAAcD,UAAUC,eAAaH,WAAS,IAAI3L;AACjE,UAAI,CAACsb,OACKvS,OAAAA,MAAM,+BAA+B;AAE/C/J,oBAAcwM,mBAAmB8P,MAAM,GAAGtb,QAAW,KAAK;AAEpDuc,YAAAA,yBAAyB4Q,0BAA0BxhB,WAAS;AAClE,UAAI4Q,wBAAwB;AACxB,cAAMxC,uBAAqBwC,uBAAuBnb,OAAQwb,CAAAA,MAAMA,MAAM9Q,aAAW;AACjFohB,8BAAsBnT,sBAAoBpO,WAAS;AAAA,MAAA;AAGvD+gB,+BAAyB,KAAK;AAE9BN,+BAAyBpsB,MAAS;AAClCoc,6BAAuBpc,MAAS;AAChCsc,mCAA6Btc,MAAS;AAAA,IAC1C;AAEMqZ,UAAAA,iBAAiBA,CAACH,iBAA2BvN,gBAAuB;AACtE3M,oBAAc4M,+BAA+BD,WAAS,GAAGuN,iBAAiB,KAAK;AAAA,IACnF;AAEA,UAAMsD,oBAAoBA,CAAC;AAAA,MACI5e;AAAAA,MACAoZ;AAAAA,IAAAA,MAIzB;AACF,UAAI,CAACpZ,IAAI;AACL,cAAMmL,MAAM,oDAAoD;AAAA,MAAA;AAEpE/J,oBAAc,cAAc;AAAA,QACxB,GAAID,OAAOwY,cAAc,CAAC;AAAA,QAC1B,CAAC3Z,EAAE,GAAGoZ;AAAAA,SACP,KAAK;AAEF+C,YAAAA,uBAAqB,CAAC,GAAIhb,OAAOma,mBAAmBpM,OAAOC,KAAKhO,OAAOwY,UAAU,GAAI3Z,EAAE;AAC7FsvB,4BAAsBnT,oBAAkB;AAExC2S,+BAAyB,KAAK;AAC9B,UAAIV,aAAa;AACYjS,iCAAAA,qBAAmBqT,QAAQxvB,EAAE,CAAC;AACvDwe,+BAAuBxe,EAAE;AAAA,MAAA;AAE7B0e,mCAA6Btc,MAAS;AAAA,IAC1C;AAEA,UAAM0d,oBAAoBA,CAAC;AAAA,MACI9f,IAAAA;AAAAA,MACAoZ,UAAAA;AAAAA,MACAoM;AAAAA,MACAzX,WAAAA;AAAAA,IAAAA,MAC2B;AAE9C0hB,cAAAA,IAAI,4BAA4BrW,UAAQ;AAEhD,YAAMsE,WAAS1d,OAAKiO,UAAUjO,MAAI+N,WAAS,IAAI3L;AAC/C,YAAMstB,eAAehS,WAAS9P,mBAAmB8P,QAAM,IAAItb;AAGvDojB,UAAAA,cAAcA,eAAexlB,MAAI;AAE3B2vB,cAAAA,iBAAiB1hB,UAAUuX,YAAYzX,WAAS;AAChD6hB,cAAAA,uBAAuBhiB,mBAAmB+hB,cAAc;AAExDhR,cAAAA,2BAAyB4Q,0BAA0BxhB,WAAS;AAGlE,cAAMoO,uBAAqBwC,yBACtBlX,IAAKuX,CAAAA,QAAMA,QAAMwG,aAAaxlB,OAAKgf,GAAC,EACpCxb,OAAQwb,CAAMA,QAAAA,QAAM5c,MAAS;AAElCktB,8BAAsBnT,sBAAoBpO,WAAS;AAEnD,YAAI/N,MAAI;AACqBmc,mCAAAA,qBAAmBqT,QAAQxvB,IAAE,CAAC;AACvDwe,iCAAuBxe,IAAE;AAAA,QAAA;AAEf4vB,sBAAAA,sBAAsBxtB,QAAW,KAAK;AACpCwtB,wBAAAA,sBAAsB,OAAO,KAAK;AAAA,MAAA;AAGtDvd,cAAQ0T,MAAM,qBAAqB;AAAA,QAC/B/lB,IAAAA;AAAAA,QACAoZ,UAAAA;AAAAA,QACAoM;AAAAA,QACAzX,WAAAA;AAAAA,QACA2hB;AAAAA,MAAAA,CACH;AAED,UAAIA,cAAc;AACAA,sBAAAA,cAActW,YAAU,KAAK;AAC3BsW,wBAAAA,cAAc,MAAM,KAAK;AAAA,MAAA;AAAA,IAGjD;AAEA,UAAMG,0BAA0BA,CAAC7vB,MAAY+N,aAAoBuE,UAAgC;AAC7F,YAAMod,iBAAe1vB,OAAKiO,UAAUjO,MAAI+N,WAAS,IAAI3L;AACrDiQ,cAAQ0T,MAAM,2BAA2B;AAAA,QACrC/lB,IAAAA;AAAAA,QACA+N,WAAAA;AAAAA,QACAuE;AAAAA,QACAod,cAAAA;AAAAA,MAAAA,CACH;AACD,UAAIA,gBAAc;AACd,cAAMzgB,WAAWqD,SAASpD,OAAOC,KAAKmD,KAAK,EAAE9K,SAAS;AACtDsmB,wBAAgB9tB,MAAI+N,aAAWkB,WAAWqD,QAAQlQ,MAAS;AAC3DmU,sBAAc3I,mBAAmB8hB,cAAY,GAAGzgB,WAAW,mBAAmB7M,MAAS;AAAA,MAAA;AAAA,IAE/F;AAEA,UAAM0tB,sBAAsBA,MAAM;AAC9BtB,+BAAyBpsB,MAAS;AAClCoc,6BAAuBpc,MAAS;AAAA,IACpC;AAEMgjB,UAAAA,gBAAgBhK,uBAAuByS,mBAAmBrd,SAASmJ,aAAakU,kBAAkBrd,QAAQmJ,WAAWyB,mBAAmB,IAAIhZ;AAElJ,UAAM2tB,kBAAkB5uB,QAAQma,oBAAoBlZ,UAAajB,OAAOma,gBAAgB9T,WAAW;AAE7FwoB,UAAAA,sBAAuB7uB,OAAOma,kBAC9Bna,OAAOma,kBACPpM,OAAOC,KAAKhO,OAAOwY,UAAU;AAEnC,UAAMsW,QAAQrZ,MAAAA,QAAQ,MAAMzV,OAAO+uB,WAAWjC,UAAUA,QAAQ9sB,OAAO+uB,OAAO,IAAI,MAAM,CAACjC,SAAS9sB,OAAO+uB,OAAO,CAAC;AAE3G7U,UAAAA,kBAAkBA,CAACnN,eAAqBH,gBAAuB;AACjEsE,cAAQ0T,MAAM,qCAAqC;AAAA,QAC/C7X,aAAAA;AAAAA,QACAH,WAAAA;AAAAA,MAAAA,CACH;AACwBiiB,+BAAAA,oBAAoBR,QAAQthB,aAAW,CAAC;AACjEsQ,6BAAuBtQ,aAAW;AAClCwQ,mCAA6B3Q,WAAS;AAAA,IAC1C;AAEA,UAAMoiB,OACF3qB,2BAAAA,KAAC,OAAI,EAAA,WAAW,oEACZ,UAAA;AAAA,MAACA,2BAAAA,KAAA,OAAA,EAAI,WAAWmB,GACZ,IAAA,6BACA,kDACA,CAAC2nB,YAAY,cAAczQ,GAC/B,kBAAA,GAEI,UAAA;AAAA,QAACrY,2BAAAA,KAAA,OAAA,EAAI,WAAU,aAEX,UAAA;AAAA,UAACA,2BAAAA,KAAA,OAAA,EAAI,WAAU,kBAEX,UAAA;AAAA,YAACN,2BAAAA,IAAA6B,OAAA,OAAA,EACG,MAAM,QACN,IAAIC,uBACJ,WAAW,MACX,WAAU,SACV,gBAAe,yBACf,aAAa,mBACb,MAAM,SACN,UAAQ,MACR,OAAOf,QAAQ1E,QAAQpB,IAAI,EAAE,CAAA;AAAA,YAEhC8vB,yCACInrB,eAAW,EAAA,SAAS,SACT,WAAW,QACX,OAAO,aAAY,UAAA;AAAA,cAAA;AAAA,cACfmrB,MAAMG;AAAAA,YAAAA,EACtB,CAAA;AAAA,UAAA,GACR;AAAA,UAECpC,aAAa9oB,2BAAA,IAAC,OAAI,EAAA,WAAU,QACxB8oB,UACL,WAAA;AAAA,UAEAxoB,2BAAAA,KAAC,OAAI,EAAA,WAAU,iCACX,UAAA;AAAA,YAAAN,2BAAAA,IAACC,cAAQ,OAAO,oCACP,SAAS,MACd,UAAAD,2BAAAA,IAACE,iBACG,SAAS,UACT,UAAUupB,qBACV,SAAS,MAAMD,kBAAkB,IAAI,GACrC,UAACxpB,2BAAAA,IAAAmrB,GAAA,UAAA,EAAQ,GACb,EACJ,CAAA;AAAA,YACCpB,2BAA4B/pB,2BAAAA,IAAAC,GAAAA,SAAA,EAAQ,OAAO,oCACP,SAAS,MAC1C,UAAAD,2BAAA,IAACE,GACG,YAAA,EAAA,SAAS,UACT,UAAUupB,qBACV,SAASM,yBACRN,UAAsB,sBAAAzpB,2BAAA,IAAC+M,GAAiB,kBAAA,EAAA,MAAM,QAAQ,CAAA,IAAK/M,2BAAAA,IAACgN,GAAAA,eAAe,CAAA,CAAA,EAAA,CAChF,EACJ,CAAA;AAAA,2CACC/M,GAAAA,SAAQ,EAAA,OAAO,oBACP,SAAS,MACd,yCAAC6M,GAAAA,QACG,EAAA,SAAS,YACT,SAAS,MAAM8c,yBAAyB,IAAI,GAC5C,UAAC5pB,2BAAAA,IAAAqa,GAAA,SAAA,EAAO,GACZ,EACJ,CAAA;AAAA,UAAA,EACJ,CAAA;AAAA,QAAA,GACJ;AAAA,QAECra,2BAAA,IAAA6V,KAAA,eAAA,EACG,UAAC7V,2BAAAA,IAAA,cAAA,EACG,WAAW,QACX,sBACA,qBAAqBkW,sBAAsBnN,UAAUmN,qBAAqBqD,yBAAyB,IAAIrc,QACvG,YAAYjB,OAAOwY,YACnB,kBAAkBxY,OAAOqa,kBACzB,iBAAiBwU,qBACjB,iBACA,gBACA,kBAAkBpvB,kBAAkBqe,iBAAiB7c,QACrD,oBACA,OAAe,CAAA,GACvB;AAAA,uCAEC4P,GAAAA,QAAO,EAAA,WAAW,eACX,OAAM,WACN,SAAS,YACT,MAAM,SACN,SAAS,MAAM8c,yBAAyB,IAAI,GAC5C,WAAY5pB,+BAAAqa,GAAAA,SAAA,KAAU,UAE9B,mBAAA,CAAA;AAAA,MAAA,GACJ;AAAA,MAEC,CAAC+O,YACGppB,2BAAA,IAAA,OAAA,EAAI,WAAW,qFACZ,UAAAM,2BAAAA,KAAC4M,GAAAA,OACG,EAAA,WAAU,8FAET8M,UAAAA;AAAAA,QAAAA,0BACGC,oBACA,CAAC9F,uBAAkB8F,gBAAgB,oCAClC,cACG,EAAA,SAAS,OAET,kBAAkB,CAACve,iBACnB,cAAc,OACd,oBAAoB,CAACA,iBACrB,oBAAoB,OACpB,aAAawa,qBACb,mBAAmBqD,2BACnB,UAAUU,kBACV,mBACA,UAAUF,gBACV,SAAS4Q,yBACT,iBAAiBxrB,YACjB,eACA,SACA,iBACA,mBAfK,GAAA,aAAakqB,qBAAqB,EAgBzC;AAAA,QAEL,CAACpP,oBACG3Z,2BAAAA,KAAA,OAAA,EAAI,WAAW,iEACZ,UAAA;AAAA,UAAAN,2BAAAA,IAACJ,iBAAW,SAAS,SAAS,WAAU,IACnCirB,UAAAA,kBACK,wCACA,+BACV,CAAA;AAAA,UACAvqB,gCAACwM,GAAAA,UAAO,SAAS,YACT,SAAS,MAAM8c,yBAAyB,IAAI,GAEhD,UAAA;AAAA,YAAA5pB,2BAAA,IAACqa,GAAO,SAAA,EAAA;AAAA,YAAA;AAAA,UAAA,EAEZ,CAAA;AAAA,QAAA,GACJ;AAAA,QAEHJ,oBAAoB9F,KAAkB8F,kBAAAA,gBAAgB,KACnDja,2BAAA,IAACJ,iBAAW,SAAS,SAAS,WAAU,oCACnC,UACL,yDAAA,CAAA;AAAA,MAAA,EAAA,CACR,EACJ,CAAA;AAAA,MAEHwpB,YAAappB,2BAAAA,IAAA,oBAAA,EACV,SAAS,OACT,MAAMqpB,0BAA0BnsB,QAEhC,cAAc,CAAC+c,kBACf,oBAAoB,CAACve,iBACrB,kBAAkB,MAClB,oBAAoB,OACpB,aAAawa,qBACb,mBAAmBqD,2BACnB,UAAUU,kBACV,mBACA,UAAUF,gBACV,SAAS4Q,yBACT,iBAAiBxrB,YACjB,eACA,SACA,iBACA,oBACA,UAAUyrB,qBACV,aAAaxB,WACPwB,sBACA1tB,UAnBD,aAAamsB,qBAAqB,EAoBpC;AAAA,IAAA,GAEX;AAEJ,WAES4B,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,MAAAA;AAAAA,MAGAjrB,2BAAAA,IAAA,oBAAA,EACG,SAAS,OACT,kBAAkB,OAClB,oBAAoB,MACpB,cAAc,MACd,iBAAiBb,YACjB,MAAMwqB,uBACN,UAAU,MAAMC,yBAAyB,KAAK,GAC9C,mBAAmBlQ,mBACnB,SACA,oBAAoB,CAAChe,iBACrB,iBACA,oBACA,sBAAsBO,OAAOma,gBAA4B,CAAA;AAAA,MAE7DpW,2BAAAA,IAAC6V,KAAAA,eACG,EAAA,UAAA7V,2BAAAA,IAAC,eACG,EAAA,YAAY/D,QACZ,MAAMstB,gBACN,cAAcC,kBAAkB,CAAA,EACxC,CAAA;AAAA,IAAA,GACJ;AAAA,EAER;ACjfO,WAAA4B,qBAAA7vB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA8B,UAAA;AAAA,MAAA6S;AAAAA,MAAA+c;AAAAA,MAAAC;AAAAA,MAAAL;AAAAA,MAAAM;AAAAA,IAAAA,IAAAhwB;AAM4ByB,QAAAA;AAAA,QAAAxB,EAAA8vB,CAAAA,MAAAA,gBAAA9vB,SAAA6vB,UAAA;AAKvCruB,WAAAyR,CAAUH,WAAAA,SAAOgd,aAAa,IAAID,SAAS;AAAC7vB,aAAA8vB;AAAA9vB,aAAA6vB;AAAA7vB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAK5C,UAAA4B,KAAAmuB,SAAS;AAAiB3tB,QAAAA;AAAApC,QAAAA,SAAA4B,IAAA;AAAxC,WAAA4C,2BAAAA,IAAC0O,GAAAA,eAAatR,UAA2B,GAAA,CAAA;AAAc5B,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,SAAAyvB,MAAA;AAElDA,WAAAA,QAASjrB,2BAAA,IAAAJ,GAAA,YAAA,EACF,UACR,MAAA;AAAapE,aAAAyvB;AAAAzvB,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;0CACZiB,GAAAA,cAAW,UAEZ,gBAAA,CAAA;AAAapE,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,SAAAqC,IAAA;AANjBY,2CAACkQ,kBACI9Q,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAGDK;AAAAA,MAAAA,GAIJ;AAAgB1C,aAAAqC;AAAArC,aAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,CAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,UAAA8vB,cAAA;AAGZ,WAAAtrB,2BAAA,IAAC8M,aAAe,SAAA,QAAgBwe,SAAAA,cAAc,WAAQ,MAAE,UAAQ,WAAA,CAAA;AAAS9vB,cAAA8vB;AAAA9vB,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA/D,QAAAA,UAAA6vB,UAAA;AACzE9rB,WAACS,2BAAA,IAAA8M,WAAA,EAAgBue,SAAO,UAAG,UAAI,QAAA;AAAS7vB,cAAA6vB;AAAA7vB,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA4D,EAAAA,MAAAA,MAAA5D,UAAA+D,IAAA;AAF5CC,2CAACoP,kBACGxP,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QACAG;AAAAA,MAAAA,GACJ;AAAgB/D,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAA8S,EAAAA,MAAAA,QAAA9S,EAAA,EAAA,MAAAwB,MAAAxB,EAAAoC,EAAAA,MAAAA,MAAApC,EAAA,EAAA,MAAAiD,MAAAjD,UAAAgE,IAAA;AArBnB,YAAAc,2BAAA,KAAA6H,aACSmG,MACQ,cAAAtR,IACE,mBAAA,sBACC,oBAAA,4BAGjBY,UAAAA;AAAAA,QAAAA;AAAAA,QACAa;AAAAA,QAUAe;AAAAA,MAAAA,GAIJ;AAAShE,cAAA8S;AAAA9S,cAAAwB;AAAAxB,cAAAoC;AAAApC,cAAAiD;AAAAjD,cAAAgE;AAAAhE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAtBTiE,WAAAA;AAAAA,EAsBS;ACtCV,WAAA+rB,8BAAAjwB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAuC,UAAA;AAAA,MAAA6S;AAAAA,MAAAC;AAAAA,IAAAA,IAAAhT;AAI1C,UAAA;AAAA,MAAAkwB;AAAAA,QAEIpW,gCAA2B;AAAErY,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;0CAK5B+P,GAAAA,eAAY,UAAkB,qBAAA,CAAA;AAAclT,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA,QAAA5B,EAAAiwB,CAAAA,MAAAA,eAAAjwB,SAAA+S,SAAA;AAExCnR,WAAAquB,aAAWlpB,IAAAmpB,CACD,SAAAprB,2BAAA,KAACwM,aAEK,SAAA,MAAMyB,QAAQmd,KAAI/W,GAAI,GAC/B,WAAQ,MACC,SAAA,QAER+W,UAAAA;AAAAA,QAAIzwB,KAAAA;AAAAA,QAAM;AAAA,QAAGywB,KAAI/W;AAAAA,QAAK;AAAA,MAAA,KALlB+W,KAAI/W,GAMb,CAAS;AACXnZ,aAAAiwB;AAAAjwB,aAAA+S;AAAA/S,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,SAAAiwB,aAAA;AACAA,YAAAA,eAAW,IAAMnpB,gBACdtC,2BAAAA,IAAAJ,GAAA,YAAA,EAAoB,SAAA,SAAS,UAE9B,0BAAA,CAAA;AAAapE,aAAAiwB;AAAAjwB,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA4B,CAAAA,MAAAA,MAAA5B,SAAAoC,IAAA;AAdpB,WAAA0C,2BAAA,KAAAqO,GAAyB,eAAA,EAAA,WAAA,uBACrBvR,UAAAA;AAAAA,QAAAA;AAAAA,QAUAQ;AAAAA,MAAAA,GAKL;AAAgBpC,aAAA4B;AAAA5B,aAAAoC;AAAApC,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,SAAA+S,SAAA;AAChB,WAAAvO,2BAAA,IAAC4O,GACG,eAAA,EAAA,UAAA5O,2BAAAA,IAAC8M,GAAAA,QAAgB,EAAA,SAAA,YAAqB,SAAMyB,MAAAA,QAAAA,GAAW,UAAA,SAAM,CAAA,GACjE;AAAgB/S,aAAA+S;AAAA/S,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,EAAA8S,EAAAA,MAAAA,QAAA9S,UAAAqC,MAAArC,EAAA,EAAA,MAAA0C,IAAA;AAvBbO,WAAC6B,2BAAA,KAAA6H,WAAA,EACM,UAAA,MACJmG,MACNtR,UAAAA;AAAAA,QAAAA;AAAAA,QACAa;AAAAA,QAiBAK;AAAAA,MAAAA,GAGJ;AAAS1C,cAAA8S;AAAA9S,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAxBFiD,WAAAA;AAAAA,EAwBE;ACLN,WAAAktB,sBAAApwB,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,GAAA;AAA+B,UAAA;AAAA,MAAA0hB;AAAAA,MAAAyO;AAAAA,MAAAC;AAAAA,MAAA9C;AAAAA,MAAA+C;AAAAA,IAAAA,IAAAvwB;AAgBlC,UAAA;AAAA,MAAAkwB,aAAAM;AAAAA,QAA4C1W,gCAA2B;AAEvE,UAAA2W,CAAAA,uBAAAC,wBAAA,IAA0DlwB,MAAAc,SAAmC;AAC7F,UAAAqvB,CAAAA,yBAAAC,0BAAA,IAA8DpwB,MAAAc,cAA6B;AAC3F,UAAAuvB,CAAAA,cAAAC,eAAA,IAAwCtwB,MAAAc,SAAmC;AAE3E,UAAAyvB,CAAAA,eAAAC,gBAAA,IAA0CxwB,MAAAc,SAGvC;AAEH,UAAA;AAAA,MAAAZ;AAAAA,MAAAC;AAAAA,QAGIO,iBAA4B;AAAEO,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAA2hB,WAAAsL,gBAAA;AAE6CtL,WAAAA,WAAUsL,kBAAqB,CAAA;AAAA,QAAA,CAAA,IAAAtL,WAAAsL;AAAAjtB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAA9G,UAAAitB,CAAAA,gBAAA+D,iBAAA,IAA4CzwB,MAAAc,SAAmCG,EAA+B;AAAEqC,QAAAA;AAAA0T,QAAAA;AAAA0Z,QAAAA;AAAAC,QAAAA;AAAAjtB,QAAAA;AAAAC,QAAAA;AAAAC,QAAAA;AAAAvC,QAAAA;AAAAQ,QAAAA;AAAAC,QAAAA;AAAAK,QAAAA;AAAAO,QAAAA;AAAAW,QAAAA;AAAAG,QAAAA;AAAAC,QAAAA;AAAAhE,QAAAA,EAAA2hB,CAAAA,MAAAA,WAAAsO,eAAAjwB,EAAA,CAAA,MAAAuwB,sBAAAvwB,EAAA,CAAA,MAAAitB,kBAAAjtB,EAAAS,CAAAA,MAAAA,OAAAwvB,eAAAjwB,EAAA,CAAA,MAAAS,OAAAhB,MAAA;AAChH,YAAA0xB,sBAA4B1wB,OAAMwvB,aAAAntB,OAAAuH,OAAA,EAAAtD,IAAAgB,CAAAA,QACpBqpB,KAAkBjsB,kBAAAA,KAAGorB,kBAAkB,CAAC,EAAAztB,OAAAyC,OAAA,KACN,CAAA;AAChD,YAAA8rB,uBAA6B1P,WAAUsO,aAAAntB,OAAAoH,QAAA,KAA4E,CAAA;AACnHonB,YAAAA,mBAAyBH,oBAAmBrqB,SAAUuqB,qBAAoBvqB;AAG/B,YAAA;AAClChD,WAAAA,GAAAA;AAAyB,YAAA;AAA6C,YAAA;AAC5B,WAAA;AAAAO,UAAAA;AAAA,UAAArE,EAAA,EAAA,MAAAS,OAAAhB,MAAA;AAG/B4E,eAACS,2BAAA,KAAAV,GAAoB,YAAA,EAAA,SAAA,MAAM,UAAA;AAAA,UAAA;AAAA,UACJ3D,OAAMhB;AAAAA,QAAAA,GAC7B;AAAa,UAAA,EAAA,IAAAgB,OAAAhB;AAAAO,gBAAAqE;AAAAA,MAAAA,OAAA;AAAAA,eAAArE,EAAA,EAAA;AAAA,MAAA;AAAAsE,UAAAA;AAAAtE,UAAAA,UAAAitB,gBAAA;AAGR3oB,eAAA2oB,kBAAkBA,eAAcnmB,SAAA,oCAAgByqB,GAC7C,OAAA,EAAA,UAAA/sB,+BAACgtB,GAAAA,WACIvE,EAAAA,UAAAA,eAAclmB,IAAA0qB,CACX,kBAAA3sB,2BAAA,KAAC4sB,aACkB,EAAA,eAAMX,iBAAgB;AAAA,UAAA7wB,iBAAA;AAAA,UAAAyxB,oBAEPF,cAAanyB;AAAAA,QACpC,CAAA,GACP,UAAA;AAAA,UAACkF,2BAAA,IAAAotB,GAAA,WAAA,EACS,OAAA,QACN,UAACptB,2BAAA,IAAAJ,eAAA,EAAoB,SAAA,aAAwB,WAAA,aACxCqtB,UAAahyB,cAAAA,KAClB,CAAA,GACJ;AAAA,UACC+E,+BAAAotB,GAAAA,WAAA,EACS,OAAA,SACN,yCAACntB,YAAe,EAAA,OAAA,UACE,SAAA,MACd,UAACD,2BAAAA,IAAAE,GAAA,YAAA,EAAgB,MAAA,SACI,SAAAmtB,CAAA,QAAA;AACL1sB,gBAACgT,eAAgB;AACjBhT,gBAACiT,gBAAiB;AAClBqY,qCAAyBgB,cAAanyB,EAAG;AAAA,UAAC,GAExC,OAAA,WACd,UAAAkF,+BAACqjB,GAAAA,cAAiB,MAAA,QAAA,GACtB,CAAA,EACJ,CAAA,EACJ,CAAA;AAAA,QAAA,EAAA,GAzBW4J,cAAa/xB,IA0B5B,CACH,EAAA,CACL,EACJ,CAAA;AAAQM,gBAAAitB;AAAAjtB,gBAAAsE;AAAAA,MAAAA,OAAA;AAAAA,eAAAtE,EAAA,EAAA;AAAA,MAAA;AAAAuE,UAAAA;AAAA,UAAAvE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGKoB,eAAAA,MAAA;AACW,2BAAA;AAAA,YAAArE,iBAAA;AAAA,UAAA,CAEf;AAAA,QAAC;AACLF,gBAAAuE;AAAAA,MAAAA,OAAA;AAAAA,eAAAvE,EAAA,EAAA;AAAA,MAAA;AAAA2E,UAAAA;AAAA,UAAA3E,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AALLwB,eAACH,2BAAA,IAAA8M,GAAA,QAAA,EACY,SAAA/M,MAKA,SAAA,QACE,WAAAC,2BAAAA,IAACqa,GAAAA,SAAO,CAAA,CAAA,GAAI,UAE3B,oBAAA,CAAA;AAAS7e,gBAAA2E;AAAAA,MAAAA,OAAA;AAAAA,eAAA3E,EAAA,EAAA;AAAA,MAAA;AAAA4E,UAAAA;AAAA5E,UAAAA,UAAAsE,MAAA;AA5CbM,eAACE,2BAAA,KAAA4M,GAAiB,OAAA,EAAA,WAAA,kCACbpN,UAAAA;AAAAA,UAAAA;AAAAA,UAkCDK;AAAAA,QAAAA,GAWJ;AAAQ3E,gBAAAsE;AAAAtE,gBAAA4E;AAAAA,MAAAA,OAAA;AAAAA,eAAA5E,EAAA,EAAA;AAAA,MAAA;AAAA,UAAAA,EAAAqE,EAAAA,MAAAA,QAAArE,UAAA4E,MAAA;AAEN,aAAAE,2BAAA,KAAA,OArDU,EAAA,WAAA,6CACZT,UAAAA;AAAAA,UAAAA;AAAAA,UAIAO;AAAAA,QAAAA,GAgDJ;AAAM5E,gBAAAqE;AAAArE,gBAAA4E;AAAA5E,gBAAAgE;AAAAA,MAAAA,OAAA;AAAAA,aAAAhE,EAAA,EAAA;AAAA,MAAA;AAEsD,WAAA;AAAA,UAAAA,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACxDF,aAACuB,2BAAA,IAAAJ,eAAA,EAAoB,SAAA,MAAM,UAE3B,gBAAA;AAAapE,gBAAAiD;AAAAA,MAAAA,OAAA;AAAAA,aAAAjD,EAAA,EAAA;AAAA,MAAA;AAAAA,UAAAA,UAAAsxB,kBAAA;AAEZA,aAAAA,qBAAsB,KAClB9sB,2BAAA,IAAAstB,GAAA,OAAA,EAAc,QAACttB,2BAAA,IAAA8M,GAAA,QAAA,EAAe,SAAA,QACF,MAAA,SACA,MAAA,4CACK,WAAA,KACP,KAAA,uBACG,QAAA,UAAS,UAAS,YAAA,CAAA,GAAW,UAE3D,+DAAA,CAAA;AAAQtR,gBAAAsxB;AAAAtxB,gBAAA4D;AAAAA,MAAAA,OAAA;AAAAA,aAAA5D,EAAA,EAAA;AAAA,MAAA;AAIP0R,WAAAA,GAAAA;AAAiD,WAAA;AAC7C6f,WAAAA,GAAAA;AACIC,WAAAA,GAAAA;AAASzsB,UAAAA;AAAA,UAAA/E,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACmB4B,eAAAmrB,CACrB,SAAAprB,2BAAA,KAAC4sB,GACG,UAAA,EAAA,UAAA;AAAA,UAACltB,2BAAA,IAAAotB,GAAA,WAAA,EACS,OAAA,QACN,UAACptB,2BAAA,IAAAJ,eAAA,EAAoB,SAAA,aAAwB,WAAA,aACxC8rB,UAAIzwB,KAAAA,KACT,CAAA,GACJ;AAAA,UACC+E,+BAAAotB,GAAAA,WAAA,EACS,OAAA,SACN,yCAACntB,YAAe,EAAA,OAAA,UACE,SAAG,MACjB,UAACD,2BAAAA,IAAAE,GAAA,YAAA,EAAgB,MAAA,SACI,SAAAqtB,CAAA,QAAA;AACL5sB,gBAACgT,eAAgB;AACjBhT,gBAACiT,gBAAiB;AAClByY,4BAAgBX,KAAI/W,GAAI;AAAA,UAAC,GAEvB,OAAA,WACd,UAAA3U,+BAACqjB,GAAAA,cAAiB,MAAA,QAAA,GACtB,CAAA,EACJ,CAAA,EACJ,CAAA;AAAA,QAAA,EAAA,GArBWqI,KAAI/W,GAsBnB;AACHnZ,gBAAA+E;AAAAA,MAAAA,OAAA;AAAAA,eAAA/E,EAAA,EAAA;AAAA,MAAA;AAxBAmxB,WAAAA,oBAAmBpqB,IAAKhC,IAwBxB;AACAssB,WAAAA,qBAAoBtqB,IAAAiE,MAapB;AAAC,QAAA,CAAA,IAAA2W,WAAAsO;AAAAjwB,aAAAuwB;AAAAvwB,aAAAitB;AAAA,QAAA,CAAA,IAAAxsB,OAAAwvB;AAAA,QAAA,CAAA,IAAAxvB,OAAAhB;AAAAO,aAAA6D;AAAA7D,aAAAuX;AAAAvX,aAAAixB;AAAAjxB,cAAAkxB;AAAAlxB,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAA4B;AAAA5B,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAH,WAAA7D,EAAA,CAAA;AAAAuX,WAAAvX,EAAA,CAAA;AAAAixB,WAAAjxB,EAAA,CAAA;AAAAkxB,WAAAlxB,EAAA,EAAA;AAAAiE,YAAAjE,EAAA,EAAA;AAAAkE,YAAAlE,EAAA,EAAA;AAAAmE,YAAAnE,EAAA,EAAA;AAAA4B,WAAA5B,EAAA,EAAA;AAAAoC,WAAApC,EAAA,EAAA;AAAAqC,WAAArC,EAAA,EAAA;AAAA0C,WAAA1C,EAAA,EAAA;AAAAiD,WAAAjD,EAAA,EAAA;AAAA4D,WAAA5D,EAAA,EAAA;AAAA+D,WAAA/D,EAAA,EAAA;AAAAgE,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAArE,QAAAA,EAAA6D,EAAAA,MAAAA,MAAA7D,UAAA4B,MAAA5B,EAAA,EAAA,MAAAoC,IAAA;AAvCNiC,4CAAC,IACIzC,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAyBAQ;AAAAA,MAAAA,GAcL;AAAYpC,cAAA6D;AAAA7D,cAAA4B;AAAA5B,cAAAoC;AAAApC,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAA,QAAAtE,EAAAuX,EAAAA,MAAAA,MAAAvX,UAAAqE,KAAA;AAzChB,YAAAG,2BAAAA,IAAC,MACGH,UAyCJ,IAAA,CAAA;AAAQrE,cAAAuX;AAAAvX,cAAAqE;AAAArE,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAA,QAAAvE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGKoB,YAAAA,MAAA;AACLosB,uCAA+B;AAAA,MAAC;AACnC3wB,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA,QAAA3E,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAHL,YAAAqB,2BAAA,IAAC8M,GACY,QAAA,EAAA,SAAA/M,KAGA,SAAA,QACE,WAAAC,2BAAAA,IAACqa,GAAAA,SAAO,CAAA,CAAA,GAAI,UAE3B,yBAAA,CAAA;AAAS7e,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA5E,QAAAA,EAAAixB,EAAAA,MAAAA,MAAAjxB,UAAAsE,OAAAtE,EAAA,EAAA,MAAAqC,IAAA;AArDhBuC,YACGJ,2BAAAA,IAAA+R,WAAA,UAAA,EAAA,UAAAzR,gCAAC,IAAiB,EAAA,WAAAzC,IACdiC,UAAAA;AAAAA,QAAAA;AAAAA,QA4CAK;AAAAA,MAAAA,EAAAA,CAQJ,EAAQ,CAAA;AAET3E,cAAAixB;AAAAjxB,cAAAsE;AAAAtE,cAAAqC;AAAArC,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAA,EAAA,MAAA4E,OAAA5E,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,IAAA;mDAxES,EAAA,WAAAlB,IACZO,UAAAA;AAAAA,QAAAA;AAAAA,QAICW;AAAAA,QAWAgB;AAAAA,MAAAA,GA2DL;AAAM5E,cAAA4E;AAAA5E,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAAhF,QAAAA,EAAA+E,EAAAA,MAAAA,OAAA/E,UAAA+D,MAAA/D,EAAA,EAAA,MAAAgE,IAAA;AAEJ,YAAAc,2BAAA,KAAA,OAtIU,EAAA,WAAAf,IAEZC,UAAAA;AAAAA,QAAAA;AAAAA,QAuDAe;AAAAA,MAAAA,GA6EJ;AAAM/E,cAAA+E;AAAA/E,cAAA+D;AAAA/D,cAAAgE;AAAAhE,cAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAA,QAAAjF,EAAA,EAAA,MAAAkxB,MAAAlxB,EAAAiE,EAAAA,MAAAA,OAAAjE,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAAgF,KAAA;AAvIVC,2CAAC,IAAoB,EAAA,UAAAhB,KAAkB,WAAAC,KACnCc,UAuIJ,KAAA;AAAYhF,cAAAkxB;AAAAlxB,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAgF;AAAAhF,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AAAAkF,QAAAA;AAAA,QAAAlF,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAEZ,YAAAqB,2BAAA,IAAA,SAAY,OAAA;AAAA,QAAA6H,QAAU;AAAA,MAAA,GAAW;AAAArM,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAAsF,QAAAA;AAAAtF,QAAAA,UAAA2hB,WAAAriB,MAAAU,UAAAowB,oBAAApwB,EAAAswB,EAAAA,MAAAA,uBAAAtwB,EAAA,EAAA,MAAAwwB,yBAAAxwB,UAAAitB,gBAAA;AAEhCuD,YAAAA,wDACI1I,yBAAyB,EAAA,MAAAviB,QAAQirB,qBAAqB,GACzB,UAAA,MAAA;AACA,cAAAjP,QAAA;AAAA,UAAAjiB,IACQkxB;AAAAA,UAAqBF,yBACCA,uBAAmB,CAAA,GAAS3O,WAAUriB,EAAA;AAAA,QAAA;AAEpE+lB,gBAAAA,MAAc,0BAA0B9D,KAAK;AAC7C6O,yBAAgB4B,iBAAkBzQ,KAAK,EAACnR,KAAA,MAAA;AACpCqgB,mCAAwB/uB,MAAU;AAClCsvB,4BAAkB/D,gBAAcnqB,OAAAmvB,CAAAA,QAAc9sB,IAAC7F,OAAQkxB,qBAAqB,CAAC;AAAA,QAAA,CAChF;AAAA,MAAA,GAED,UAAMC,MAAAA,yBAAwB/uB,MAAU,GAC3C,OAAE8C,+BAAA+R,WAAAA,UAAA,EAAA,UAAA,6BAAA,CAA0B,GAC7B,MAAEzR,2BAAAA,KAAAyR,WAAAA,UAAA,EAAA,UAAA;AAAA,QAAA;AAAA,QAAW/R,2BAAAA,IAAA,OAAG,UACG,sBAAA,CAAA;AAAA,QACU;AAAA,MAAA,EAAA,CAAA,EAAM,CAAA;AAAA,QAAA,EAAA,IAAAmd,WAAAriB;AAAAU,cAAAowB;AAAApwB,cAAAswB;AAAAtwB,cAAAwwB;AAAAxwB,cAAAitB;AAAAjtB,cAAAsF;AAAAA,IAAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AAAAwF,QAAAA;AAAA,QAAAxF,EAAA,EAAA,MAAAU,iBAAAV,EAAA,EAAA,MAAAS,OAAAwvB,eAAAjwB,EAAA,EAAA,MAAA4wB,cAAA;AAChEA,YAAAA,+CACI9I,yBAAyB,EAAA,MAAAviB,QAAQqrB,YAAY,GAChB,UAAA,MAAA;AACAlwB,sBAAc,eAAeD,OAAMwvB,aAAAntB,OAAAovB,CAA0B/sB,QAAAA,QAAMyrB,YAAY,CAAC;AAChFC,wBAAenvB,MAAU;AAAA,MAAA,GAEzB,UAAMmvB,MAAAA,gBAAenvB,MAAU,GAClC,OAAE8C,+BAAA+R,WAAAA,UAAA,EAAA,UAAA,oBAAA,CAAiB,GACpB,MAAEzR,2BAAAA,KAAAyR,WAAAA,UAAA,EAAA,UAAA;AAAA,QAAA;AAAA,QAAU/R,2BAAAA,IAAA,OAAG,UACI,sBAAA,CAAA;AAAA,QACI;AAAA,MAAA,EAAA,CAAA,EAAM,CAAA;AAAAxE,cAAAU;AAAA,QAAA,EAAA,IAAAD,OAAAwvB;AAAAjwB,cAAA4wB;AAAA5wB,cAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAGjD0F,UAAAA,MAAAH,QAAQurB,aAAa;AAACnrB,QAAAA;AAAA3F,QAAAA,UAAAswB,qBAAA;AAIH3qB,YAAA2qB,uBAAyB,CAAA;AAAAtwB,cAAAswB;AAAAtwB,cAAA2F;AAAAA,IAAAA,OAAA;AAAAA,YAAA3F,EAAA,EAAA;AAAA,IAAA;AAAA4F,QAAAA;AAAA5F,QAAAA,UAAA2F,OAAA3F,EAAAS,EAAAA,MAAAA,OAAAnB,IAAA;AAA7BsG,YAAID,CAAAA,GAAAA,KAA2BlF,OAAMnB,EAAA;AAAIU,cAAA2F;AAAA,QAAA,EAAA,IAAAlF,OAAAnB;AAAAU,cAAA4F;AAAAA,IAAAA,OAAA;AAAAA,YAAA5F,EAAA,EAAA;AAAA,IAAA;AAAA8F,QAAAA;AAAA9F,QAAAA,UAAAitB,gBAAA;AAIjDnnB,YAAAqsB,CAAA,sBAAA;AACLA,YAAAA,qBAAiB,CAAKlF,eAAclmB,IAAA+iB,MAAc,EAAC9mB,SAAUmvB,kBAAiB7yB,EAAG,GAAC;AAClF0xB,4BAAsB/D,CAAAA,GAAAA,gBAAgBkF,iBAAiB,CAAC;AAAA,QAAA;AAE5DpB,yBAAgBrvB,MAAU;AAAA,MAAC;AAC9B1B,cAAAitB;AAAAjtB,cAAA8F;AAAAA,IAAAA,OAAA;AAAAA,YAAA9F,EAAA,EAAA;AAAA,IAAA;AAAA+F,QAAAA;AAAA,QAAA/F,EAAA,EAAA,MAAA2hB,cAAA3hB,EAAA,EAAA,MAAAqwB,uBAAArwB,EAAA,EAAA,MAAAowB,oBAAApwB,EAAA8wB,EAAAA,MAAAA,iBAAA9wB,EAAAutB,EAAAA,MAAAA,WAAAvtB,EAAA0F,EAAAA,MAAAA,OAAA1F,EAAA4F,EAAAA,MAAAA,OAAA5F,UAAA8F,KAAA;AAdLC,2CAAC,wBACS,EAAA,MAAAL,KACY0qB,kBACAzO,8BACG0O,qBACA,qBAAAzqB,KACJ,iBAAI,OACjBkrB,GAAAA,eACKvD,SACI,aAAAznB,KAKT;AAAA9F,cAAA2hB;AAAA3hB,cAAAqwB;AAAArwB,cAAAowB;AAAApwB,cAAA8wB;AAAA9wB,cAAAutB;AAAAvtB,cAAA0F;AAAA1F,cAAA4F;AAAA5F,cAAA8F;AAAA9F,cAAA+F;AAAAA,IAAAA,OAAA;AAAAA,YAAA/F,EAAA,EAAA;AAAA,IAAA;AAAAgG,QAAAA;AAAAhG,QAAAA,UAAAU,iBAAAV,EAAAS,EAAAA,MAAAA,OAAAwvB,aAAA;AAIKjqB,YAAAosB,CAAA,oBAAA;AAAA,YACDA,iBAAe;AACD,wBAAA,eAAa,CAAA,GAAO3xB,OAAMwvB,eAAkB,CAAA,GAAGmC,eAAe,CAAC;AAAA,QAAA;AAEjFzB,wCAAgC;AAAA,MAAC;AACpC3wB,cAAAU;AAAA,QAAA,EAAA,IAAAD,OAAAwvB;AAAAjwB,cAAAgG;AAAAA,IAAAA,OAAA;AAAAA,YAAAhG,EAAA,EAAA;AAAA,IAAA;AAAAkG,QAAAA;AAAA,QAAAlG,EAAA0wB,EAAAA,MAAAA,2BAAA1wB,UAAAgG,KAAA;AAPLE,YAAC1B,2BAAA,IAAA,+BAAA,EACSksB,MAAAA,yBACG,SAAA1qB,KAKL;AAAAhG,cAAA0wB;AAAA1wB,cAAAgG;AAAAhG,cAAAkG;AAAAA,IAAAA,OAAA;AAAAA,YAAAlG,EAAA,EAAA;AAAA,IAAA;AAAAmG,QAAAA;AAAAnG,QAAAA,UAAAmE,OAAAnE,EAAAiF,EAAAA,MAAAA,OAAAjF,EAAAsF,EAAAA,MAAAA,OAAAtF,EAAA,GAAA,MAAAwF,OAAAxF,WAAA+F,OAAA/F,EAAA,GAAA,MAAAkG,KAAA;AAlMZ,YAAApB,2BAAA,KAAA,OAAgB,EAAA,WAAAX,KACZc,UAAAA;AAAAA,QAAAA;AAAAA,QA0IAC;AAAAA,QAECI;AAAAA,QAkBAE;AAAAA,QAYDO;AAAAA,QAgBAG;AAAAA,MAAAA,GAQJ;AAAMlG,cAAAmE;AAAAnE,cAAAiF;AAAAjF,cAAAsF;AAAAtF,eAAAwF;AAAAxF,eAAA+F;AAAA/F,eAAAkG;AAAAlG,eAAAmG;AAAAA,IAAAA,OAAA;AAAAA,YAAAnG,EAAA,GAAA;AAAA,IAAA;AAnMNmG,WAAAA;AAAAA,EAmMM;AA3OP,WAAA2jB,OAAAuI,KAAA;AAAA,WA6N+DltB,IAAC7F;AAAAA,EAAA;AA7NhE,WAAA0L,OAAAsnB,QAAA;AAAA,WAiJsC9tB,2BAAA,IAAAktB,aAAA,EACG,UAAC5sB,2BAAAA,KAAA8sB,GAAAA,WAAA,EACS,OAAA,QACN,UAAA;AAAA,MAAAptB,+BAACJ,GAAAA,cAAoB,SAAA,aAAwB,WAAA,aACxC8rB,iBAAIzwB,MACT;AAAA,MACCqF,2BAAA,KAAAV,GAAA,YAAA,EAAoB,SAAA,WAAsB,WAAA,aAAa,UAAA;AAAA,QAAA;AAAA,QAEhDI,2BAAAA,IAAuB,QAAhB0rB,EAAAA,UAAAA,OAAI/W,IAAK,CAAA;AAAA,MAAA,EACxB,CAAA;AAAA,IAAA,GACJ,EAAA,GAVW+W,OAAI/W,GAWnB;AAAA,EAAW;AA5JhD,WAAAjP,SAAAzB,KAAA;AAAA,WAoC8D,OAAOtD,QAAM;AAAA,EAAQ;AApCnF,WAAAkF,QAAAlF,GAAA;AAAA,WAiCyD,OAAOA,MAAM;AAAA,EAAQ;AC9D9E,QAAMotB,6BAA+C;AAAA,IACxDjzB,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNoI,cAAc;AAAA,IACd0E,MAAM;AAAA,IACN/C,aAAa;AAAA,IACbyP,YAAYuZ,KAAAA,uBAAuB;AAAA,MAC/B/yB,MAAM;AAAA,QACFoZ,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN+J,aAAa;AAAA,QACboF,YAAY;AAAA,UACRpP,UAAU;AAAA,QAAA;AAAA,MAElB;AAAA,MACAizB,OAAO;AAAA,QACH5Z,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNmP,YAAY;AAAA,UACRpP,UAAU;AAAA,QAAA;AAAA,MAElB;AAAA,MACAgK,aAAa;AAAA,QACTqP,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN+J,aAAa;AAAA,QACb6Z,UAAU;AAAA,MACd;AAAA,MACAqP,YAAY;AAAA,QACR7Z,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN0jB,SAAS;AAAA,UACLhM,aAAa;AAAA,UACbH,eAAe,CAAC,SAAS;AAAA,QAC7B;AAAA,QACAxN,aAAa;AAAA,MACjB;AAAA,MACAmpB,WAAW;AAAA,QACP9Z,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNmzB,aAAa;AAAA,QACbppB,aAAa;AAAA,MACjB;AAAA,MACAqpB,OAAO;AAAA,QACHha,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNmP,YAAY;AAAA,UACRkkB,iBAAiB;AAAA,UACjBve,KAAK;AAAA,QAAA;AAAA,MAEb;AAAA,MACAwe,QAAQ;AAAA,QACJla,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNkjB,oBAAoB;AAAA,QACpB7J,IAAI;AAAA,UACAD,UAAU;AAAA,UACVsK,SAAS;AAAA,YACLhM,aAAa;AAAA,YACbH,eAAe,CAAC,SAAS;AAAA,UAAA;AAAA,QAC7B;AAAA,MAER;AAAA,MACAgc,kBAAkB;AAAA,QACdna,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN+J,aAAa;AAAA,QACbsP,IAAI;AAAA,UACAD,UAAU;AAAA,UACVnZ,MAAM;AAAA,QAAA;AAAA,MAEd;AAAA,MACAuzB,UAAU;AAAA,QACNxzB,MAAM;AAAA,QACN+J,aAAa;AAAA,QACbqP,UAAU;AAAA,QACV2K,UAAU;AAAA,MACd;AAAA,MACA0P,UAAU;AAAA,QACNra,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN0zB,WAAW;AAAA,MAAA;AAAA,IAElB,CAAA;AAAA,EACL;ACrFO,QAAMC,yBAA0C;AAAA,IACnD9zB,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNoI,cAAc;AAAA,IACd0E,MAAM;AAAA,IACN/C,aAAa;AAAA,IACbQ,aAAa;AAAA,IACbiP,YAAYuZ,KAAAA,uBAAuB;AAAA,MAC/B/yB,MAAM;AAAA,QACFA,MAAM;AAAA,QACNmP,YAAY;AAAA,UAAEpP,UAAU;AAAA,QAAK;AAAA,QAC7BqZ,UAAU;AAAA,MACd;AAAA,MACAwa,cAAc;AAAA,QACV5zB,MAAM;AAAA,QACNoZ,UAAU;AAAA,QACVsK,SAAS;AAAA,UACLhM,aAAa;AAAA,UACbH,eAAe,CAAC,SAAS;AAAA,UACzBic,UAAU;AAAA,YACNK,cAAc;AAAA,UAAA;AAAA,QAClB;AAAA,MAER;AAAA,MACAC,SAAS;AAAA,QACL9zB,MAAM;AAAA,QACN+J,aAAa;AAAA,QACboF,YAAY;AAAA,UAAEpP,UAAU;AAAA,QAAK;AAAA,QAC7BqZ,UAAU;AAAA,QACVwH,OAAO;AAAA,UACHmT,WAAW;AAAA,UACXC,YAAY;AAAA,UACZxa,YAAY;AAAA,YACRya,MAAM;AAAA,cACF7a,UAAU;AAAA,cACVpZ,MAAM;AAAA,cACN4jB,UAAU;AAAA,YACd;AAAA,YACAsQ,OAAO;AAAA,cACH9a,UAAU;AAAA,cACVpZ,MAAM;AAAA,cACN2jB,WAAW;AAAA,YACf;AAAA,YACA2P,QAAQ;AAAA,cACJtzB,MAAM;AAAA,cACNoZ,UAAU;AAAA,cACVC,IAAI;AAAA,gBACAD,UAAU;AAAA,gBACVsK,SAAS;AAAA,kBACLhM,aAAa;AAAA,kBACbH,eAAe,CAAC,SAAS;AAAA,kBACzBic,UAAU;AAAA,oBACNK,cAAc;AAAA,kBAAA;AAAA,gBAClB;AAAA,cAER;AAAA,cACA9pB,aAAa;AAAA,YACjB;AAAA,YACAoqB,UAAU;AAAA,cACNn0B,MAAM;AAAA,cACNoZ,UAAU;AAAA,cACVC,IAAI;AAAA,gBACAD,UAAU;AAAA,gBACVnZ,MAAM;AAAA,gBACNm0B,mBAAmB,CAAC,QAAQ,YAAY;AAAA,cAAA;AAAA,YAC5C;AAAA,UAER;AAAA,UACAjZ,iBAAiB,CAAC,QAAQ,SAAS,UAAU,UAAU;AAAA,QAAA;AAAA,MAE/D;AAAA,MACAkZ,YAAY;AAAA,QACRr0B,MAAM;AAAA,QACNoZ,UAAU;AAAA,QACVsa,WAAW;AAAA,MACf;AAAA,MACAY,QAAQ;AAAA,QACJt0B,MAAM;AAAA,QACNmP,YAAY;AAAA,UAAEpP,UAAU;AAAA,QAAK;AAAA,QAC7BqZ,UAAU;AAAA,QACVhL,YAAY;AAAA,UACRmmB,WAAW;AAAA,YACP10B,IAAI;AAAA,YACJgP,OAAO;AAAA,UACX;AAAA,UACA2lB,OAAO;AAAA,QACX;AAAA,QACAje,cAAc;AAAA,MAClB;AAAA,MACAke,cAAc;AAAA,QACVz0B,MAAM;AAAA,QACNoZ,UAAU;AAAA,QACVsb,WAAW;AAAA,MACf;AAAA,MACAC,UAAU;AAAA,QACN30B,MAAM;AAAA,QACNoZ,UAAU;AAAA,MACd;AAAA,MACAwb,MAAM;AAAA,QACF50B,MAAM;AAAA,QACN+J,aAAa;AAAA,QACbqP,UAAU;AAAA,QACVC,IAAI;AAAA,UACAD,UAAU;AAAA,UACVyb,cAAc;AAAA,QAAA;AAAA,MAClB;AAAA,IACJ,CACH;AAAA,IACDvH,eAAe;AAAA,MACXgH,QAAQ,CAAC,MAAM,WAAW;AAAA,IAAA;AAAA,EAElC;AChHO,QAAMQ,0BAA4C;AAAA,IACrDj1B,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNoI,cAAc;AAAA,IACd2B,aAAa;AAAA,IACb+C,MAAM;AAAA,IACN0M,YAAYuZ,KAAAA,uBAAuB;AAAA,MAC/B9C,aAAa;AAAA,QACTjwB,MAAM;AAAA,QACNoZ,UAAU;AAAA,MACd;AAAA,MACAyK,OAAO;AAAA,QACH7jB,MAAM;AAAA,QACNoZ,UAAU;AAAA,QACVyK,OAAO;AAAA,MACX;AAAA,MACAkR,eAAe;AAAA,QACX/0B,MAAM;AAAA,QACNoZ,UAAU;AAAA,MACd;AAAA,MACA4b,OAAO;AAAA,QACHh1B,MAAM;AAAA,QACNoZ,UAAU;AAAA,MACd;AAAA,MACA6b,oBAAoB;AAAA,QAChBj1B,MAAM;AAAA,QACNoZ,UAAU;AAAA,QACVC,IAAI;AAAA,UACAD,UAAU;AAAA,UACVnZ,MAAM;AAAA,QAAA;AAAA,MAEd;AAAA,MACAi1B,UAAU;AAAA,QACNl1B,MAAM;AAAA,QACNoZ,UAAU;AAAA,QACV0K,KAAK;AAAA,MAAA;AAAA,IAEZ,CAAA;AAAA,EACL;ACvCO,QAAMqR,0BAA4C;AAAA,IACrDt1B,IAAI;AAAA,IACJI,MAAM;AAAA,IACND,MAAM;AAAA,IACNoI,cAAc;AAAA,IACd0E,MAAM;AAAA,IACN/C,aAAa;AAAA,IACbyP,YAAY;AAAA,MACR8W,OAAO;AAAA,QACHlX,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNmP,YAAY;AAAA,UAAEpP,UAAU;AAAA,QAAA;AAAA,MAC5B;AAAA,MACAq1B,MAAM;AAAA,QACFhc,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNmP,YAAY;AAAA,UACRpP,UAAU;AAAA,UACVs1B,QAAQ;AAAA,UACRzgB,SAAS;AAAA,UACT0gB,gBAAgB;AAAA,QAAA;AAAA,MAExB;AAAA,MACAC,cAAc;AAAA,QACVnc,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNwZ,YAAY;AAAA,UACRgc,UAAU;AAAA,YACNpc,UAAU;AAAA,YACVpZ,MAAM;AAAA,YACNmP,YAAY;AAAA,cAAEpP,UAAU;AAAA,YAAA;AAAA,UAC5B;AAAA,UACA01B,SAAS;AAAA,YACLrc,UAAU;AAAA,YACVpZ,MAAM;AAAA,UACV;AAAA,UACA01B,kBAAkB;AAAA,YACdtc,UAAU;AAAA,YACVpZ,MAAM;AAAA,YACN0jB,SAAS;AAAA,cACLhM,aAAa;AAAA,cACbH,eAAe,CAAC,SAAS;AAAA,YAAA;AAAA,UAEjC;AAAA,UACAoe,gBAAgB;AAAA,YACZvc,UAAU;AAAA,YACVpZ,MAAM;AAAA,UACV;AAAA,UACA41B,qBAAqB;AAAA,YACjBxc,UAAU;AAAA,YACVpZ,MAAM;AAAA,YACN8jB,KAAK;AAAA,UAAA;AAAA,QACT;AAAA,MAER;AAAA,MACAgQ,SAAS;AAAA,QACL1a,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN4gB,OAAO;AAAA,UACHpH,YAAY;AAAA,YACRqc,SAAS;AAAA,cACLzc,UAAU;AAAA,cACVpZ,MAAM;AAAA,cACNwZ,YAAY;AAAA,gBACR8W,OAAO;AAAA,kBACHlX,UAAU;AAAA,kBACVpZ,MAAM;AAAA,kBACNmP,YAAY;AAAA,oBAAEpP,UAAU;AAAA,kBAAA;AAAA,gBAC5B;AAAA,gBACA+zB,SAAS;AAAA,kBACL1a,UAAU;AAAA,kBACVpZ,MAAM;AAAA,kBACN4jB,UAAU;AAAA,gBACd;AAAA,gBACAkS,OAAO;AAAA,kBACH1c,UAAU;AAAA,kBACVpZ,MAAM;AAAA,kBACN0jB,SAAS;AAAA,oBACLhM,aAAa;AAAA,oBACbH,eAAe,CAAC,SAAS;AAAA,kBAAA;AAAA,gBAEjC;AAAA,gBACAwe,MAAM;AAAA,kBACF3c,UAAU;AAAA,kBACVpZ,MAAM;AAAA,kBACN8jB,KAAK;AAAA,gBAAA;AAAA,cACT;AAAA,YAER;AAAA,YACAgS,OAAO;AAAA,cACH1c,UAAU;AAAA,cACVpZ,MAAM;AAAA,cACN0jB,SAAS;AAAA,gBACLhM,aAAa;AAAA,gBACbH,eAAe,CAAC,SAAS;AAAA,cAAA;AAAA,YAEjC;AAAA,YACAye,QAAQ;AAAA,cACJ5c,UAAU;AAAA,cACVpZ,MAAM;AAAA,cACNqZ,IAAI;AAAA,gBACAD,UAAU;AAAA,gBACVI,YAAY;AAAA,kBACR8W,OAAO;AAAA,oBACHlX,UAAU;AAAA,oBACVpZ,MAAM;AAAA,oBACNmP,YAAY;AAAA,sBAAEpP,UAAU;AAAA,oBAAA;AAAA,kBAC5B;AAAA,kBACA+1B,OAAO;AAAA,oBACH1c,UAAU;AAAA,oBACVsK,SAAS;AAAA,sBACLhM,aAAa;AAAA,sBACbH,eAAe,CAAC,SAAS;AAAA,oBAAA;AAAA,kBAC7B;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MAER;AAAA,MACA0e,SAAS;AAAA,QACL7c,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNwZ,YAAY;AAAA,UACR8W,OAAO;AAAA,YACHlX,UAAU;AAAA,YACVpZ,MAAM;AAAA,YACNmP,YAAY;AAAA,cAAEpP,UAAU;AAAA,YAAA;AAAA,UAC5B;AAAA,UACA+zB,SAAS;AAAA,YACL1a,UAAU;AAAA,YACVpZ,MAAM;AAAA,YACN4jB,UAAU;AAAA,UAAA;AAAA,QACd;AAAA,MAER;AAAA,MACAsS,cAAc;AAAA,QACV9c,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNwZ,YAAY;AAAA,UACR2c,YAAY;AAAA,YACR/c,UAAU;AAAA,YACVpZ,MAAM;AAAA,UACV;AAAA,UACAo2B,kBAAkB;AAAA,YACdhd,UAAU;AAAA,YACVpZ,MAAM;AAAA,UACV;AAAA,UACAq2B,gBAAgB;AAAA,YACZjd,UAAU;AAAA,YACVpZ,MAAM;AAAA,YACNqZ,IAAI;AAAA,cACAD,UAAU;AAAA,YAAA;AAAA,UACd;AAAA,QACJ;AAAA,MAER;AAAA,MACAkd,iBAAiB;AAAA,QACbld,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN4jB,UAAU;AAAA,MACd;AAAA,MACA6Q,cAAc;AAAA,QACVrb,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNmP,YAAY;AAAA,UAAEpP,UAAU;AAAA,QAAA;AAAA,MAC5B;AAAA,MACAw2B,cAAc;AAAA,QACVnd,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACN0zB,WAAW;AAAA,MACf;AAAA,MACA8C,cAAc;AAAA,QACVpd,UAAU;AAAA,QACVpZ,MAAM;AAAA,QACNmzB,aAAa;AAAA,QACbppB,aAAa;AAAA,MAAA;AAAA,IACjB;AAAA,EAER;AC3KO,WAAA0sB,4BAAAn2B,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAqC,UAAA;AAAA,MAAAP;AAAAA,MAAAy2B;AAAAA,MAAA91B;AAAAA,MAAA+1B;AAAAA,MAAAC;AAAAA,IAAAA,IAAAt2B;AAcxC,UAAA,CAAAu2B,wBAAAC,yBAAA,IAA4Dl1B,MAAAA,cAAc;AAC1E,UAAA,CAAAm1B,yBAAAC,0BAAA,IAA8Dp1B,eAA+B;AAAEG,QAAAA;AAAAI,QAAAA;AAAA5B,QAAAA,EAAAq2B,CAAAA,MAAAA,2BAAAr2B,SAAAN,QAAAM,EAAA,CAAA,MAAAm2B,iBAAA;AACrF30B,WAAAA,MAAA;AAAA,YACF20B,mBAAmBE,yBAAuB;AAC1CE,wCAA8B;AACd72B,0BAAAA,IAAI,EAAC0Q,KAAAsmB,CAAA,gBAAA;AAEbC,kBAAAA,sBAA4BD,YAAW5zB,OAAA8zB,CAAAA,MAAA,EAAeP,+BAA6Bna,KAAA2a,CAAAA,MAAYA,EAACriB,KAAM,EAACsW,kBAAmB8L,EAACpiB,OAAOsW,YAAAA,CAAc,CAAC;AACjJ2L,uCAA2BE,mBAAmB;AAAA,UACjD,CAAA,EAACxlB,cACaolB,0BAAyB,KAAM,CAAC;AAAA,QAAA;AAAA,MAAC;AAExDF,WAAAA,CAAAA,yBAAyB32B,MAAMy2B,eAAe;AAACn2B,aAAAq2B;AAAAr2B,aAAAN;AAAAM,aAAAm2B;AAAAn2B,aAAAwB;AAAAxB,aAAA4B;AAAAA,IAAAA,OAAA;AAAAJ,WAAAxB,EAAA,CAAA;AAAA4B,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAVnDsC,UAAAA,UAAUd,IAUPI,EAAgD;AAcnD,UAAA;AAAA,MAAAlB;AAAAA,MAAA8lB;AAAAA,QAKIvlB,iBAA4B;AAAEmB,QAAAA;AAAA,QAAApC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAMtB,WAAAqB,2BAAA,IAAA,OACc,EAAA,WAAA,wCACV,UAAAA,+BAACJ,GAAAA,YAAoB,EAAA,SAAA,MAAiB,WAAA,aAAa,UAAA,iBAEnD,CAAA,GACJ;AAAMpE,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,SAAAK,kBAAA;AAELA,WAAAA,mDAAqBwE,GAAkB,MAAA,EAAA,aAAA,cACpC,UAACC,2BAAA,KAAAV,GAAA,YAAA,EAAoB,SAAA,WAAW,UAAA;AAAA,QAAA;AAAA,QACDI,2BAAAA,IAA8B,KAA1BnE,EAAAA,UAAAA,iBAAgBZ,KAAM,CAAA;AAAA,MAAA,EAAA,CACzD,EACJ,CAAA;AAAOO,aAAAK;AAAAL,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGHT,0CAAC0B,GAAoB,YAAA,EAAA,SAAA,WACF,OAAA,aAAa,UAEhC,qDAAA;AAAapE,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAAw2B,CAAAA,MAAAA,2BAAAx2B,UAAAs2B,wBAAA;AAGRrzB,WAAAqzB,0BAAsB,CAAKE,2BAA4BhyB,2BAAAA,IAAA+M,GAAAA,kBAAA,EAAuB,MAAA,SAAU;AAAAvR,aAAAw2B;AAAAx2B,cAAAs2B;AAAAt2B,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,EAAAw2B,EAAAA,MAAAA,2BAAAx2B,UAAAo2B,cAAAp2B,EAAA,EAAA,MAAAU,eAAA;AAExF81B,WAAAA,yBAAuBzvB,KAAA+vB,YAAA7vB,yCACnBpC,GAAAA,MACkB,EAAA,aAAA,eACJ,SAAA,MAAA;AACS,sBAAA,QAAQmb,eAAU8W,UAAU,CAAC;AAC3Cp2B,sBAAc,MAAMo2B,UAAU;AAC9Bp2B,sBAAc,QAAQo2B,UAAU;AAChCp2B,sBAAc,cAAYgB,MAAW;AAC1B,mBAAA;AAAA,MAAA,GAEV,MAAA,SACG,UAAA,WAAA,aACd,CAAO;AACT1B,cAAAw2B;AAAAx2B,cAAAo2B;AAAAp2B,cAAAU;AAAAV,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAw2B,EAAAA,MAAAA,2BAAAx2B,UAAAs2B,wBAAA;AAED,WAAA,CAACA,2BAA2BE,2BAA6B,CAAA,IAAA1vB,WAAe,KACpEtC,2BAAAA,IAAAJ,GAAAA,YAAA,EAAoB,SAAA,WAAW,UAEhC,iBAAA,CAAA;AAAapE,cAAAw2B;AAAAx2B,cAAAs2B;AAAAt2B,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAAhE,QAAAA,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,MAAA5D,EAAA,EAAA,MAAA+D,IAAA;AAKnB,WAAAe,2BAAA,KAAA,OAhCU,EAAA,WAAA,QACZpC,UAAAA;AAAAA,QAAAA;AAAAA,QAIAoC,2BAAAA,KAAA,OAAgB,EAAA,WAAA,4DAEX7B,UAAAA;AAAAA,UAAAA;AAAAA,UAEAW;AAAAA,UAeAG;AAAAA,QAAAA,EAML,CAAA;AAAA,MAAA,GAEJ;AAAM/D,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGFc,2CAACG,GAAoB,YAAA,EAAA,SAAA,WACF,OAAA,aAAa,UAEhC,wBAAA;AAAapE,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAKae,2CAAC6yB,GAAAA,MAAW,EAAA,MAAA,SAAkB,SAAAxE,2BAAAhmB,MAAmC;AAAAvM,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAA,QAAAnE,EAAAo2B,EAAAA,MAAAA,cAAAp2B,UAAAwmB,WAAA;2CAFtF,kBAAsB,OAAA,YACG,UAAA,0DACJ,MAAAtiB,KACG,SAAA,MAAA;AACLsiB,kBAAS+L,0BAA2B;AACzB,mBAAA;AAAA,MAAA,GACX;AAAAvyB,cAAAo2B;AAAAp2B,cAAAwmB;AAAAxmB,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGEkB,2CAAC0yB,GAAAA,MAAW,EAAA,MAAA,SAAkB,SAAAxC,wBAAAhoB,MAAgC;AAAAvM,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AAAAsE,QAAAA;AAAA,QAAAtE,EAAAo2B,EAAAA,MAAAA,cAAAp2B,UAAAwmB,WAAA;2CAFnF,kBAAsB,OAAA,SACG,UAAA,sDACJ,MAAAniB,KACG,SAAA,MAAA;AACLmiB,kBAAS+N,uBAAwB;AACtB,mBAAA;AAAA,MAAA,GACX;AAAAv0B,cAAAo2B;AAAAp2B,cAAAwmB;AAAAxmB,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAA,QAAAvE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGEoB,2CAACwyB,GAAAA,MAAW,EAAA,MAAA,SAAkB,SAAA3D,uBAAA7mB,MAA+B;AAAAvM,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA,QAAA3E,EAAAo2B,EAAAA,MAAAA,cAAAp2B,UAAAwmB,WAAA;2CAFlF,kBAAsB,OAAA,cACG,UAAA,uEACJ,MAAAjiB,KACG,SAAA,MAAA;AACLiiB,kBAAS4M,sBAAuB;AACrB,mBAAA;AAAA,MAAA,GACX;AAAApzB,cAAAo2B;AAAAp2B,cAAAwmB;AAAAxmB,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAA,QAAA5E,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGEyB,2CAACmyB,GAAAA,MAAW,EAAA,MAAA,SAAkB,SAAAnC,wBAAAroB,MAAgC;AAAAvM,cAAA4E;AAAAA,IAAAA,OAAA;AAAAA,YAAA5E,EAAA,EAAA;AAAA,IAAA;AAAA+E,QAAAA;AAAA,QAAA/E,EAAAo2B,EAAAA,MAAAA,cAAAp2B,UAAAwmB,WAAA;2CAFnF,kBAAsB,OAAA,SACG,UAAA,kEACJ,MAAA5hB,KACG,SAAA,MAAA;AACL4hB,kBAASoO,uBAAwB;AACtB,mBAAA;AAAA,MAAA,GACX;AAAA50B,cAAAo2B;AAAAp2B,cAAAwmB;AAAAxmB,cAAA+E;AAAAA,IAAAA,OAAA;AAAAA,YAAA/E,EAAA,EAAA;AAAA,IAAA;AAAAgF,QAAAA;AAAA,QAAAhF,EAAA,EAAA,MAAAmE,OAAAnE,EAAAsE,EAAAA,MAAAA,OAAAtE,EAAA2E,EAAAA,MAAAA,OAAA3E,UAAA+E,KAAA;AAGtB,YAAAD,2BAAA,KAAA,OArCU,EAAA,WAAA,QACZb,UAAAA;AAAAA,QAAAA;AAAAA,QAKAa,2BAAAA,KAAA,OAAgB,EAAA,WAAA,cACZX,UAAAA;AAAAA,UAAAA;AAAAA,UAOAG;AAAAA,UAOAK;AAAAA,UAOAI;AAAAA,QAAAA,EAOJ,CAAA;AAAA,MAAA,GAEJ;AAAM/E,cAAAmE;AAAAnE,cAAAsE;AAAAtE,cAAA2E;AAAA3E,cAAA+E;AAAA/E,cAAAgF;AAAAA,IAAAA,OAAA;AAAAA,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAA,QAAAjF,EAAAo2B,EAAAA,MAAAA,cAAAp2B,UAAAK,kBAAA;aAEJA,oBAAoByE,2BAAA,YAElB,EAAA,UAAA;AAAA,QAAAN,2BAAAA,IAACJ,iBAAoB,SAAA,WACF,OAAA,aACI,WAAA,QAAQ,UAE/B,8DAAA,CAAA;AAAA,QAEAI,+BAACwyB,mBAAAA,oBAA8B,cAAA3mB,MAAAuK,oBAA2Bwb,WAAW/lB,MAAMuK,eAAe,EAAC,CAAA;AAAA,MAAA,GAE/F;AAAM5a,cAAAo2B;AAAAp2B,cAAAK;AAAAL,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AAAAkF,QAAAA;AAAAlF,QAAAA,UAAAo2B,YAAA;AAENlxB,YAAAV,2BAAA,IAAA,OAAA,EAEI,UAACA,+BAAA8M,GAAAA,QAAA,EAAgB,SAAA,QAAiB,SAAA,MAAM8kB,WAAW,GAAc,WAAA,QAAQ,kCAEzE,CAAA,GACJ;AAAMp2B,cAAAo2B;AAAAp2B,cAAAkF;AAAAA,IAAAA,OAAA;AAAAA,YAAAlF,EAAA,EAAA;AAAA,IAAA;AAAAsF,QAAAA;AAAA,QAAAtF,EAAAgF,EAAAA,MAAAA,OAAAhF,EAAA,EAAA,MAAAiF,OAAAjF,EAAAkF,EAAAA,MAAAA,OAAAlF,EAAA,EAAA,MAAAqC,MAAArC,UAAAgE,IAAA;oDA1GE,WAAA,yBACZ,0CAACF,GAAoB,WAAA,EAAA,UAAA,OAAkB,WAAA,kCAEnC1B,UAAAA;AAAAA,QAAAA;AAAAA,QAOCC;AAAAA,QAMD2B;AAAAA,QAkCAgB;AAAAA,QAuCCC;AAAAA,QAYDC;AAAAA,MAAAA,EAAAA,CASJ,EACJ,CAAA;AAAMlF,cAAAgF;AAAAhF,cAAAiF;AAAAjF,cAAAkF;AAAAlF,cAAAqC;AAAArC,cAAAgE;AAAAhE,cAAAsF;AAAAA,IAAAA,OAAA;AAAAA,YAAAtF,EAAA,EAAA;AAAA,IAAA;AA/GNsF,WAAAA;AAAAA,EA+GM;AAIP,WAAA2xB,eAAAl3B,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAwB,UAAA;AAAA,MAAA8vB;AAAAA,MAAAmH;AAAAA,MAAA3qB;AAAAA,MAAAkN;AAAAA,IAAAA,IAAA1Z;AAU9ByB,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAO0B3B,WAAAyE,GAAAA,IACP,gIACA,iDACA,gIACA,6CACJ;AAACjG,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAA+vB,OAAA;mDAGe,WAAA,6BAEZ,yCAAC3rB,GAAAA,YAAoB,EAAA,SAAA,aACZ,UAAA,MAAA,CACT,EAKJ,CAAA;AAAMpE,aAAA+vB;AAAA/vB,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,EAAAuM,CAAAA,MAAAA,QAAAvM,SAAAyZ,WAAAzZ,EAAA,CAAA,MAAA4B,IAAA;AAnBVQ,WAAC0C,2BAAA,KAAA4lB,SAAA,EACYjR,SACE,WAAAjY,IAOP,UAAA;AAAA,QAAA;AAAA,QACJI;AAAAA,MAAAA,GAUJ;AAAO5B,aAAAuM;AAAAvM,aAAAyZ;AAAAzZ,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAAk3B,CAAAA,MAAAA,YAAAl3B,SAAAoC,IAAA;AAtBXC,0CAACoC,GAAeyyB,SAAAA,EAAAA,OAAAA,UACE,SAAA,MACd90B,UAqBJ,IAAA;AAAUpC,aAAAk3B;AAAAl3B,aAAAoC;AAAApC,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAvBVqC,WAAAA;AAAAA,EAuBU;AChMX,WAAA80B,8BAAAp3B,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAuC,UAAA;AAAA,MAAAm3B;AAAAA,MAAAxd;AAAAA,MAAAuB;AAAAA,IAAAA,IAAApb;AAmB1C,UAAA;AAAA,MAAAW;AAAAA,MAAAI;AAAAA,MAAAL;AAAAA,QAIIQ,iBAA+B;AACnC,UAAA,CAAAwd,kBAAA4Y,mBAAA,IAAgDh2B,eAAAK,MAA8C;AAAEF,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAS,OAAAma,iBAAA;AAI7FpZ,WAAAf,OAAMma,kBAAA;AAAA,QAAA,IAAyBna,OAAMma;AAAAA,MAAAA,IAAuB,CAAA;AAAA,QAAA,CAAA,IAAAna,OAAAma;AAAA5a,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAF/DsuB,UAAAA,4BAAkC/tB,MAAAC,OAE/BgB,EAA4D;AAE/DgM,UAAAA,cAAoBiR,mBAAmBA,iBAAgBnf,KAAAoC;AACvD,UAAAgX,WAAiB+F,oBAAgB/c;AAAcE,QAAAA;AAAA,QAAA5B,EAAA,CAAA,MAAAo3B,gBAAAp3B,EAAAc,CAAAA,MAAAA,mBAAAd,EAAAU,CAAAA,MAAAA,iBAAAV,SAAAS,QAAA;AAErBmB,WAAAQ,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA9C;AAAAA,UAAAoZ,UAAAsM;AAAAA,UAAAF;AAAAA,UAAAzX;AAAAA,QAAAA,IAAAjL;AAOvB,cAAA4a,SAAe1d,KAAKiO,UAAUjO,IAAI+N,SAAS,IAAC3L;AAC5C,cAAAstB,eAAqBhS,SAAS9P,mBAAmB8P,MAAM,IAACtb;AAGxD,cAAAmtB,4BAAAjQ,CAAA,gBAAA;AAAA,cAAA,CACSvR,aAAS;AAASihB,mBAAAA,0BAAyBxe,QAAS,EAAE;AAAA,UAAA;AACpDwe,iBAAAA,0BAAyBxe,QAASzC,WAAS,KAAKvL,aAAMrB,QAAQ6M,+BAA+BD,WAAS,CAAC;AAAA,QAAC;AAGnHuhB,cAAAA,wBAAAA,CAAAnT,oBAAAsD,gBAAA;AACIX,gBAAAA,sBAA4B9Q,+BAA+BD,WAAS;AAEtD+Q,wBAAAA,qBAAqB3C,yBAAyB;AACnC3L,oCAAAA,QAASzC,eAAa,EAAE,IAAIoO;AAAAA,QAAkB;AAKvEqJ,YAAAA,cAAcA,eAAexlB,IAAE;AAC/B2vB,gBAAAA,iBAAuB1hB,UAAUuX,YAAYzX,SAAS;AACtD6hB,gBAAAA,uBAA6BhiB,mBAAmB+hB,cAAc;AAE9DhR,gBAAAA,yBAA+B4Q,0BAA0BxhB,SAAS;AAGlEiqB,gBAAAA,uBAA2BrZ,uBAAsBlX,IAAAuX,CACjCA,MAAAA,MAAMwG,aAAaxlB,KAAKgf,CAAC,EAACxb,OAAAuH,OACR;AAClCukB,gCAAsBnT,sBAAoBpO,SAAS;AAGnD,gBAAAkqB,oBAAA;AAAA,YAAA,GAA+BH,aAAYI;AAAAA,UAAA;AAC3ChpB,iBAAAC,KAAY8oB,iBAAiB,EAACnpB,QAAA+K,CAAA,QAAA;AACtBoe,gBAAAA,kBAAkBpe,GAAG,MAAM2L,YAAU;AACnB3L,gCAAAA,GAAG,IAAI7Z,MAAM;AAAA,YAAA;AAAA,UAAE,CAExC;AACD83B,uBAAYK,kBAAmBF,iBAAiB;AAMlCrI,wBAAAA,sBAAoBxtB,aAAkB;AACpCwtB,0BAAAA,sBAAoB,OAAA,KAAc;AAAA,QAAA;AAAC,YAGnDF,cAAY;AACEA,wBAAAA,cAActW,iBAAe;AAC3BsW,0BAAAA,cAAY,MAAA,KAAa;AAAA,QAAA;AAAA,MAAC;AAEjDhvB,aAAAo3B;AAAAp3B,aAAAc;AAAAd,aAAAU;AAAAV,aAAAS;AAAAT,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AA1DD,UAAAof,oBAA0Bxd;AA0DxBQ,QAAAA;AAAA,QAAApC,EAAA,CAAA,MAAAo3B,aAAAM,cAAA13B,EAAA,CAAA,MAAAc,mBAAAd,EAAA,CAAA,MAAAU,eAAA;AAC4B0B,kBAAAC,QAAA;AAAO,cAAA;AAAA,UAAA/C,IAAAgmB;AAAAA,UAAAqS;AAAAA,UAAAjf,UAAA6M;AAAAA,UAAAlY,WAAAkT;AAAAA,QAAAA,IAAAle;AASjC,cAAAu1B,WAAet4B,OAAKiO,UAAUjO,MAAI+N,WAAS,IAAC3L;AAC5C,cAAAm2B,iBAAqB7a,WAAS9P,mBAAmB8P,QAAM,IAACtb;AAGxDqhB,cAAAA,eAAqBqU,aAAYM,WAAA3wB,IAAA+wB,OAAuBh2B,OAAMg2B,MAAAA,GAAGH,SAAS,CAAC;AAC3E,cAAAI,sBAAA;AAAA,UAAA,GACOC,uCAAsBjV,cAAcrK,YAAQuf,mCAAkB;AAAA,UAAClf,UAAA;AAAA,QAAA;AAEpE,YAEEiW,gBAAY;AAAA,cACR+I,qBAAmB;AACL/I,0BAAAA,gBAAc+I,0BAA0B;AAAA,UAAA,OAAC;AAEzC/I,0BAAAA,gBAActW,iBAAe;AAAA,UAAA;AAE/BsW,0BAAAA,gBAAY,MAAA,KAAa;AAAA,QAAA;AAAA,MAAC;AAEjD,QAAA,CAAA,IAAAoI,aAAAM;AAAA13B,aAAAc;AAAAd,aAAAU;AAAAV,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AA3BD,UAAAk4B,wBAA8B91B;AA2B5BC,QAAAA;AAAA,QAAArC,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAOUd,0CAAC+B,GAAmB,YAAA,EAAA,SAAA,MAAgB,WAAA,eAAe,UAAqB,yBAAA;AAAapE,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAGpC,UAAA0C,KAAAjC,OAAMwY;AAAyBhW,QAAAA;AAAAjD,QAAAA,EAAAk4B,EAAAA,MAAAA,yBAAAl4B,UAAA4Z,mBAAA5Z,EAAA,EAAA,MAAAU,eAAA;AACnCuC,WAAAW,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAA8U,UAAAyf;AAAAA,UAAA3qB,aAAAsR;AAAAA,UAAA6Y,WAAAS;AAAAA,UAAAC;AAAAA,QAAAA,IAAAz0B;AAKC,YACby0B,YAAU;AACH,iBAAA7zB,2BAAA,IAACJ,iBAAW,UAA+B,kCAAA,CAAA;AAAA,QAAA;AAAa,8CAG3Dk0B,mBACM5f,+BAAAA,EAAAA,UAAAA,YACGlL,aAAU,eACA,uBAAA+qB,CAAAA,eAAAlzB,UAAwC3E,cAAc,cAAc8M,aAAW,SAASnI,OAAK,KAAO,GAC9G,aAAA,MAAA;AACL,cAAA,CAACmI,iBAAW,CAAKkL,YAAQ;AAAA;AAAA,UAAA;AACV,8BAAA;AAAA,YAAA,GACZA;AAAAA,YAAQpZ,IACPkO;AAAAA,YAAWuL,UAAA;AAAA,UAAA,CAElB;AAAA,QAAC,GAEY,iDAAC,gBAAyBL,EAAAA,UAAO,YACP,iBACS,mBAAA6I,CAAAA,UAAW2W,sBAAqB;AAAA,UAAA,GAC5C3W;AAAAA,UAAKoW,WACRA;AAAAA,QACH,CAAA,GACYnqB,aAAU,eACNoM,iBAAe,EACpE,CAAA;AAAA,MAAA;AACL5Z,cAAAk4B;AAAAl4B,cAAA4Z;AAAA5Z,cAAAU;AAAAV,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,EAAAo3B,EAAAA,MAAAA,gBAAAp3B,UAAA0C,MAAA1C,EAAA,EAAA,MAAAiD,IAAA;AArC/BW,WAACkB,2BAAAA,KAAAhB,GAAAA,WAAA,EAAoB,UAAA,OAAkB,WAAA,kCAEnCzB,UAAAA;AAAAA,QAAAA;AAAAA,uCAECm2B,mBAAuCpB,0BAAAA,EAAAA,cACS,uBAAA10B,IACJ,mBAAAO,GAgCjD,CAAA;AAAA,MAAA,GAAA;AAAYjD,cAAAo3B;AAAAp3B,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAGF,UAAA+D,KAAA0a,qBAAgB/c;AAAcuC,QAAAA;AAAAD,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAQvBa,WAAAA,MAAA;AACTqzB,4BAAmB31B,MAAU;AAAA,MAAC;AAExBuC,YAAAA,MAAA;AACNozB,4BAAmB31B,MAAU;AAAA,MAAC;AACjC1B,cAAAiE;AAAAjE,cAAAgE;AAAAA,IAAAA,OAAA;AAAAC,YAAAjE,EAAA,EAAA;AAAAgE,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAAlE,QAAAA,UAAAmb,sBAAAnb,EAAAof,EAAAA,MAAAA,qBAAApf,EAAA0Y,EAAAA,MAAAA,YAAA1Y,EAAA,EAAA,MAAA4Z,mBAAA5Z,UAAAwN,eAAAxN,EAAA,EAAA,MAAA+D,IAAA;AAdJ,YAAAS,2BAAA,IAAA,sBACS,MAAAT,IACOyJ,aACHkL,UACD,SAAA,OACK,cAAA,OACK0G,mBACC,oBAAA,OACAjE,oBACP,aAAAnX,IAGH,UAAAC,KAGU,oBAAA,OACF,kBAAA,OACD2V,gBAAkB,CAAA;AAAA5Z,cAAAmb;AAAAnb,cAAAof;AAAApf,cAAA0Y;AAAA1Y,cAAA4Z;AAAA5Z,cAAAwN;AAAAxN,cAAA+D;AAAA/D,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAAAmE,QAAAA;AAAA,QAAAnE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAEvC,YAAAqB,2BAAA,IAAA,SAAY,OAAA;AAAA,QAAA6H,QAAU;AAAA,MAAA,GAAW;AAAArM,cAAAmE;AAAAA,IAAAA,OAAA;AAAAA,YAAAnE,EAAA,EAAA;AAAA,IAAA;AAAAqE,QAAAA;AAAA,QAAArE,EAAAkE,EAAAA,MAAAA,OAAAlE,UAAA4D,IAAA;mDA5DrB,EAAA,WAAA,yBACZA,UAAAA;AAAAA,QAAAA;AAAAA,QAwCAM;AAAAA,QAmBAC;AAAAA,MAAAA,GACJ;AAAMnE,cAAAkE;AAAAlE,cAAA4D;AAAA5D,cAAAqE;AAAAA,IAAAA,OAAA;AAAAA,YAAArE,EAAA,EAAA;AAAA,IAAA;AA7DNqE,WAAAA;AAAAA,EA6DM;AAxLP,WAAAgG,QAAAouB,KAAA;AAAA,WAmEwBna,QAAC5c;AAAAA,EAAc;AA0H9C,WAAAg3B,eAAA34B,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAwB,UAAA;AAAA,MAAAyY;AAAAA,MAAA0G;AAAAA,MAAA5R;AAAAA,MAAAoM;AAAAA,MAAA3L;AAAAA,IAAAA,IAAAlO;AAiBvByB,QAAAA;AAAAxB,QAAAA,SAAA0Y,UAAA;AAEmBA,WAAAA,WAAWoO,gBAAWpO,QAAQ,IAAQ;AAAA1Y,aAAA0Y;AAAA1Y,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAtD,UAAA24B,UAAgBn3B;AAAuCI,QAAAA;AAAA,QAAA5B,EAAA0Y,CAAAA,MAAAA,YAAA1Y,SAAA4Z,iBAAA;AACxChY,WAAA8W,WAAWoB,KAAAA,eAAepB,UAAUkB,eAAe,IAAQ;AAAA5Z,aAAA0Y;AAAA1Y,aAAA4Z;AAAA5Z,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAA1E,UAAAqf,SAAezd;AAEf,UAAA,CAAA8kB,YAAAC,aAAA,IAAoCtlB,MAAAA,cAAc;AAE3Be,UAAAA,KAAAsW,YAAY2G,SAAS,GAAGA,QAAM5f,IAAA,MAAYiZ,SAAQG,QAAA,KAAWnX;AAC9DW,UAAAA,KAAAqkB,aAAU,QAAAhlB;AAQjB,UAAAgB,MAAC2c;AAED,UAAApc,KAAA01B,WAAW;AAAE/0B,QAAAA;AAAA5D,QAAAA,SAAAqf,QAAA;AAGPzb,WAAAyB,CAAA,UAAA;AAAA,YAAA,CACJga,QAAM;AAAA,iBAAA;AAAA,QAAA;AACJ,eAAA7a,2BAAA,IAACyV,KAAoCoF,qBAAAA,EAAAA,gBAAAA,OAAS,CAAA;AAAA,MAAA;AACxDrf,aAAAqf;AAAArf,aAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,CAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAA,CAAA,MAAAof,qBAAApf,EAAA0Y,CAAAA,MAAAA,YAAA1Y,EAAA4Z,CAAAA,MAAAA,mBAAA5Z,UAAAwN,aAAA;AACczJ,WAAAujB,CAAA,wBAAA;AACX,cAAAsR,cAAoB9V,yBAAyBpK,UAAU4O,qBAAqB1N,eAAe;AAAC,YAAA,CACvFpM,aAAW;AAAA;AAAA,QAAA;AACC,0BAAA;AAAA,UAAAlO,IACTkO;AAAAA,UAAWkL,UACLkgB;AAAAA,UAAW9T,YACTtX;AAAAA,UAAWH,WAAA3L;AAAAA,QAAAA,CAE1B;AAAA,MAAC;AACL1B,aAAAof;AAAApf,aAAA0Y;AAAA1Y,aAAA4Z;AAAA5Z,cAAAwN;AAAAxN,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACAa,WAAAwK,OAAAyJ,QAAA4L,eAA8B,EAAC9c,IAAAmD,QAO/B;AAAClK,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAAjE,QAAAA,UAAAiO,YAAAjO,EAAA0mB,EAAAA,MAAAA,cAAA1mB,EAAA0C,EAAAA,MAAAA,MAAA1C,EAAA,EAAA,MAAAiD,MAAAjD,UAAA4D,MAAA5D,EAAA,EAAA,MAAA+D,IAAA;AAjCL,YAAAS,2BAAA,IAAA4F,GACSsc,QAAAA,EAAAA,MAAS,YACDC,cAAY,eACf,WAAG,MACR,MAAA,SACK,WAAA,UACD1Y,UACH,OAAAvL,IACI,WAAA,MACJ,OAAAO,IACM,aAAA,4BACH,UAAA,gBACG,aAAAW,IAIE,eAAAG,IAUdC,UASL,IAAA;AAAShE,cAAAiO;AAAAjO,cAAA0mB;AAAA1mB,cAAA0C;AAAA1C,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAA/D,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAAlE,QAAAA,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAoC,MAAApC,EAAA,EAAA,MAAAqC,IAAA;AArCN6B,2CAACO,GAAe,SAAA,EAAA,OAAArC,IACD,MAAAC,IAClB4B,UAoCJ,KAAA;AAAUjE,cAAAiE;AAAAjE,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAtCHkE,WAAAA;AAAAA,EAsCG;AA9Dd,WAAAgG,SAAAnK,IAAA;AAoDkD,UAAA,CAAAoZ,KAAA0f,QAAA,IAAA94B;AAC3B,WAAAyE,2BAAA,IAAC,oBAEG2U,EAAAA,OAAAA,KACS,gBAAI,OACJkG,gBAAAA,UACN,UAAI,MAAA,GAJP,GAIW;AAAA,EAAA;AAc/B,WAAAyZ,mBAAA/4B,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA4B,UAAA;AAAA,MAAAoF;AAAAA,MAAA0zB;AAAAA,MAAAhf;AAAAA,MAAAjD;AAAAA,IAAAA,IAAA/W;AAOnByB,UAAAA,KAAAu3B,iBAAiB,WAAW;AAAEn3B,QAAAA;AAAA5B,QAAAA,SAAAwB,IAAA;AAFvByE,WAAAA,GAAAA,IACP,qDACAzE,EAA8B;AAACxB,aAAAwB;AAAAxB,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,SAAA+Z,gBAAA;AACnC3X,0CAEM,OAFU,EAAA,WAAA,QACZ,UAACoC,2BAAAA,IAAAyV,KAAA,qBAAA,EAAoCF,gBAAc,EACvD,CAAA;AAAM/Z,aAAA+Z;AAAA/Z,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAA+Z,eAAAta,MAAA;AAEF,WAAA+E,2BAAA,IAAA,OAAMuV,EAAAA,UAAAA,eAActa,MAAM;AAAM,QAAA,CAAA,IAAAsa,eAAAta;AAAAO,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAI3B,UAAA0C,KAAAoU,YAAYiiB,iBAAiB,+DAA+Dhf,eAAcvQ;AAAYvG,QAAAA;AAAAjD,QAAAA,SAAA0C,IAAA;AAH3H,WAAA8B,2BAAA,IAACJ,iBAAoB,SAAA,WACF,OAAA,YACI,WAAA,YAClB1B,UACL,GAAA,CAAA;AAAa1C,aAAA0C;AAAA1C,aAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,CAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAAqC,CAAAA,MAAAA,MAAArC,SAAAiD,IAAA;AANjBW,2CAAA,OACIvB,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QACAY;AAAAA,MAAAA,GAKJ;AAAMjD,aAAAqC;AAAArC,aAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA/D,QAAAA,EAAA4B,EAAAA,MAAAA,MAAA5B,UAAAoC,MAAApC,EAAA,EAAA,MAAA4D,IAAA;AACJ,WAAAkB,2BAAA,KAAA,OAdS,EAAA,WAAAlD,IAGXQ,UAAAA;AAAAA,QAAAA;AAAAA,QAGAwB;AAAAA,MAAAA,GAQJ;AAAM5D,cAAA4B;AAAA5B,cAAAoC;AAAApC,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAAhE,QAAAA,EAAA+4B,EAAAA,MAAAA,kBAAA/4B,UAAA+D,MAAA/D,EAAA,EAAA,MAAAqF,OAAA;AAlBHrB,0CAAC8G,eAAkBzF,EAAAA,OACG0zB,UAAAA,gBACC,WAAA,8BAC1Bh1B,UAgBJ,GAAA,CAAA;AAAa/D,cAAA+4B;AAAA/4B,cAAA+D;AAAA/D,cAAAqF;AAAArF,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAnBNgE,WAAAA;AAAAA,EAmBM;ACtSV,WAAAg1B,kCAAAj5B,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA2C,UAAA;AAAA,MAAAm3B;AAAAA,MAAAne;AAAAA,MAAA2B;AAAAA,IAAAA,IAAA7a;AAU9C,UAAA,CAAAk5B,SAAAC,UAAA,IAA8B73B,MAAAA,cAAuB;AAAEG,QAAAA;AAAA,QAAAxB,EAAAo3B,CAAAA,MAAAA,gBAAAp3B,SAAAiZ,YAAA;AAEvDzX,0BAAA23B,gBAAA;AAEI,cAAAC,aAAmBhC,aAAYM,WAAA3wB,IAAA+wB,OAAqBuB,mBAAAA,oBAAoBvB,GAAGV,aAAYkC,UAAWlC,aAAYI,gBAAiBve,YAAY,aAAame,aAAYmC,aAAc,CAAC;AACnLnC,qBAAYoC,YAAaJ,UAAU;AAAA,MAAC;AACvCp5B,aAAAo3B;AAAAp3B,aAAAiZ;AAAAjZ,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAJD,UAAAm5B,eAAA33B;AAICI,QAAAA;AAAA5B,QAAAA,SAAAm5B,cAAA;AAESv3B,WAAAA,MAAA;AACNu3B,qBAAchoB,EAAAA,cAAe+nB,WAAU,KAAM,CAAC;AAAA,MAAC;AAClDl5B,aAAAm5B;AAAAn5B,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAAEf,WAAA,CAAA;AAAEpC,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAFLsC,UAAAA,UAAUV,IAEPQ,EAAE;AAEL,UAAAq3B,sBAA4BC,KAAAA,uBAAuB;AAAE,QACjDT,SAAO;AAAA52B,UAAAA;AAAA,UAAArC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACAd,6CAACs3B,KAAwB,wBAAA,EAAA;AAAA35B,eAAAqC;AAAAA,MAAAA,OAAA;AAAAA,cAAArC,EAAA,CAAA;AAAA,MAAA;AAAzBqC,aAAAA;AAAAA,IAAAA;AAAyBA,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGzBd,2CAAA,OACH,EAAA,UAAA;AAAA,QAACmC,2BAAA,IAAAJ,GAAA,YAAA,EAAoB,SAAA,aAAa,UAAqB,yBAAA;AAAA,QACtDI,2BAAA,IAAAJ,GAAA,YAAA,EAAoB,SAAA,WAAW,UAA6C,gDAAA,CAAA;AAAA,MAAA,GACjF;AAAMpE,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAo3B,aAAAwC,UAAA;AACW,WAAA;AAAA,QAAAvpB,MACP+mB,aAAYwC;AAAAA,QAAAC,aAAA;AAAA,QAAAC,cAAA;AAAA,MAAA;AAGrB,QAAA,CAAA,IAAA1C,aAAAwC;AAAA55B,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACsC,WAAAqB,2BAAAA,IAAA,OAAT,EAAA,WAAA,OAAS,CAAA;AAAAxE,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,UAAA4a,iBAAA;AAInBA,WAAAA,gBAAe7T,IAAAsD,OAGjC;AAACrK,cAAA4a;AAAA5a,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAA,EAAA,MAAAiZ,cAAAjZ,EAAAy5B,EAAAA,MAAAA,uBAAAz5B,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA4D,IAAA;AAjBAG,0CAACg2B,KAAAA,uBACG,EAAA,OAAA13B,IAIU,iBAAAK,IAKH,cAAAO,IACF,YAAI,OACN,UAAI,OACOw2B,qBACD,oBAAA71B,IAIRqV,YACK,iBAAI,OAAI;AAAAjZ,cAAAiZ;AAAAjZ,cAAAy5B;AAAAz5B,cAAA0C;AAAA1C,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAnBtB+D,WAAAA;AAAAA,EAmBsB;AA7C1B,WAAAsG,QAAAiU,GAAA;AAAA,WAAA;AAAA,MAAAnF,KAyCUmF;AAAAA,MAACrQ,UAAA;AAAA,IAAA;AAAA,EAAA;AC3CF+rB,WAAAA,0BAA0B/gB,YAAwBghB,aAAa,IAI7E;AAEQ7e,UAAAA,SAAS5M,OAAOC,KAAKwK,UAAU,EAAEI,OAAO,CAAC6R,KAAK/R,QAAQ;AAClDT,YAAAA,WAAWO,WAAWE,GAAG;AACzB0b,YAAAA,OAAOqF,aAAQ/gB,GAAG;AACxB,YAAMghB,WAAWF,aAAa,GAAGA,UAAU,IAAIpF,IAAI,KAAKA;AAExD,UAAInc,SAASG,aAAa,SAASH,SAASO,YAAY;AACpD,cAAMmhB,kBAAkBJ,0BAA0BthB,SAASO,YAA0BkhB,QAAQ;AACtF,eAAA;AAAA,UACH3C,gBAAgB;AAAA,YAAE,GAAGtM,IAAIsM;AAAAA,YAAgB,CAACre,GAAG,GAAGghB;AAAAA,UAAS;AAAA,UACzDlhB,YAAY;AAAA,YACR,GAAGiS,IAAIjS;AAAAA,YACP,CAAC4b,IAAI,GAAG;AAAA,cACJ,GAAGnc;AAAAA,cACHO,YAAYmhB,gBAAgBnhB;AAAAA,cAC5B2B,iBAAiBpM,OAAOC,KAAK2rB,gBAAgBnhB,UAAU;AAAA,YAAA;AAAA,UAC3D;AAAA,QAER;AAAA,MAAA;AAGJ,YAAMyV,oBAAoB;AAAA,QACtB,GAAGxD,IAAIjS;AAAAA,QACP,CAAC4b,IAAI,GAAGnc;AAAAA,MACZ;AAEA,YAAM8e,iBAAiB;AAAA,QAAE,GAAGtM,IAAIsM;AAAAA,QAAgB,CAACre,GAAG,GAAGghB;AAAAA,MAAS;AAEzD,aAAA;AAAA,QACH3C;AAAAA,QACAve,YAAYyV;AAAAA,MAChB;AAAA,IAAA,GACD;AAAA,MAAE8I,gBAAgB,CAAC;AAAA,MAAGve,YAAY,CAAA;AAAA,IAAC,CAAG;AAEzC,UAAMohB,WAAW7rB,OAAOC,KAAK2M,OAAOoc,cAAc,IAAI,CAAC;AACnD8B,QAAAA;AACJ,QAAIe,UAAUr3B,SAAS,IAAI,KAAKq3B,UAAUr3B,SAAS,KAAK,GAAG;AAC5Cq3B,iBAAAA;AAAAA,IAAAA;AAGR,WAAA;AAAA,MACH,GAAGjf;AAAAA,MACHke;AAAAA,IACJ;AAAA,EACJ;ACkCO,WAAAgB,uBAAA/Y,OAAA;AAAAvhB,UAAAA,IAAAC,uBAAA,EAAA;AAEH,UAAA6S,OAAayO,MAAKzO;AAElB,UAAAynB,CAAAA,WAAAC,YAAA,IAAkCj6B,iBAAAc,cAA6B;AAC/D,UAAAo5B,CAAAA,0BAAAC,2BAAA,IAAgEn6B,iBAAAc,cAA6B;AAAEtB,QAAAA;AAAA,QAAAC,EAAAu6B,CAAAA,MAAAA,aAAAv6B,SAAAuhB,OAAA;AAE1ExhB,WAAAA,MAAA;AAAA,YAAA,CACZw6B,WAAS;AACVhZ,gBAAKoZ,YAAAj5B,MAAsB;AAAA,QAAA,OAAC;AAE5Bg5B,0CAAgC;AAAA,QAAA;AAAA,MAAC;AAExC16B,aAAAu6B;AAAAv6B,aAAAuhB;AAAAvhB,aAAAD;AAAAA,IAAAA,OAAA;AAAAA,WAAAC,EAAA,CAAA;AAAA,IAAA;AAND,UAAA8vB,eAAqB/vB;AAMnByB,QAAAA;AAAAI,QAAAA;AAAA5B,QAAAA,SAAA8S,MAAA;AAEQtR,WAAAA,MAAA;AAAA,YAAA,CACDsR,MAAI;AACL0nB,4BAAkB;AAClBE,2CAAiC;AAAA,QAAA;AAAA,MAAC;AAEvC94B,YAACkR,IAAI;AAAC9S,aAAA8S;AAAA9S,aAAAwB;AAAAxB,aAAA4B;AAAAA,IAAAA,OAAA;AAAAJ,WAAAxB,EAAA,CAAA;AAAA4B,WAAA5B,EAAA,CAAA;AAAA,IAAA;AALTsC,UAAAA,UAAUd,IAKPI,EAAM;AAACQ,QAAAA;AAAApC,QAAAA,SAAA8vB,cAAA;AASY1tB,WAAA6Q,CAAU,WAAA,CAACH,SAAOgd,aAAAA,IAAcpuB;AAAY1B,aAAA8vB;AAAA9vB,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAE1Dd,WAACmC,2BAAA,IAAA0O,gBAAA,EAAY,QAAK,MAAE,UAAiB,qBAAA;AAAclT,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,EAAA8vB,CAAAA,MAAAA,gBAAA9vB,UAAA8S,QAAA9S,EAAA,EAAA,MAAAuhB,OAAA;AAClD7e,WAAAoQ,QAAStO,2BAAAA,IAAA,kBAAA,KAAqB+c,OACUuO,cACA0K,cAAe;AAAAx6B,aAAA8vB;AAAA9vB,cAAA8S;AAAA9S,cAAAuhB;AAAAvhB,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,UAAAuhB,OAAA;AAI1Cte,WAAAA,MAAMse,MAAKoZ,YAAAj5B,MAAsB;AAAC1B,cAAAuhB;AAAAvhB,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAC9BS,WAAAA,MAAM82B,iCAAiC;AAAC16B,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAAy6B,0BAAA;AAH1D,WAAAj2B,2BAAA,IAAC,wBACSi2B,MAAuB,0BACnB,UAAAx3B,IACI,cAAAW,IACR,MAAA,+CAAiD,CAAA;AAAA5D,cAAAiD;AAAAjD,cAAAy6B;AAAAz6B,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAA8S,QAAA9S,EAAAoC,EAAAA,MAAAA,MAAApC,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA+D,IAAA;AAjB/DC,WAACc,2BAAA,KAAA6H,GAAA,QAAA,EACSmG,MACK,iBACC,YAAA,MACA,YAAI,OACN,UAAA,OACI,cAAA1Q,IAEdC,UAAAA;AAAAA,QAAAA;AAAAA,QACCK;AAAAA,QAIDqB;AAAAA,MAAAA,GAMJ;AAAS/D,cAAA8S;AAAA9S,cAAAoC;AAAApC,cAAA0C;AAAA1C,cAAA+D;AAAA/D,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAnBTgE,WAAAA;AAAAA,EAmBS;AAcV,WAAS42B,iBAAiBrZ,OAG9B;AACO,UAAA;AAAA,MAAE3H;AAAAA,QAAoBC,gCAA2B;AACvD,UAAMoH,aAAaC,KAAAA,wBAAwB;AAC3C,UAAM2Z,iBAAiBC,KAAAA,kBAAkB;AAEnC,UAAA;AAAA,MACFC;AAAAA,MACAvZ;AAAAA,IAAAA,IACAP;AAEJ,UAAM+Z,oBAAoBzZ,MAAM7S;AAC1BusB,UAAAA,mBAAmB,CAACD,mBAAmBt7B,SAAS6hB,MAAM+O,uBAAuB,IAAIxpB,WAAW;AAClG,UAAMo0B,0BAA0B3Z,MAAMlhB,mBAAmBkhB,MAAMlhB,iBAAiB4sB,iBAAiBzL,gBAAgB,CAAE;AAC7G2Z,UAAAA,gBAAgBD,uBAAuBn0B,IAAIkb,CAAAA,QAAOA,IAAIviB,KAAK8U,OAAOsW,aAAa;AACrF,UAAMsQ,cAAcF,uBAAuBn0B,IAAIkb,CAAAA,UAAOA,MAAI3iB,IAAIkV,KAAK,EAAEsW,YAAY,CAAC,EAAEhoB,OAAOyC,OAAO;AAClG,UAAM,CAACoc,YAAY0Z,aAAa,IAAI96B,iBAAMc,SAA+C;AACzF,UAAM,CAACi6B,yBAAyBC,0BAA0B,IAAIh7B,iBAAMc,SAAS,KAAK;AAElFiB,UAAAA,UAAU,MAAM;AACR,UAAA;AACA,YAAI2e,WAAWua,aAAa;AACxB,cAAIja,MAAMoQ,oBAAoB;AACZ1Q,0BAAAA,WAAWwa,uBAAuB,CAAC,GAAIla,MAAM+O,uBAAuB,IAAK/O,MAAMoQ,kBAAkB,CAAC,CAAC;AAAA,UAAA,OAC9G;AACH0J,0BAAc35B,MAAS;AAAA,UAAA;AAE3B65B,qCAA2B,IAAI;AAAA,QAAA;AAAA,eAE9Bp2B,GAAG;AACRwM,gBAAQC,MAAMzM,CAAC;AAAA,MAAA;AAAA,IACnB,GACD,CAACoc,MAAMoQ,oBAAoBpQ,MAAM+O,qBAAqBrP,WAAWua,aAAava,WAAWwa,sBAAsB,CAAC;AAEnH,QAAI,CAACV,oBAAoB;AACrB,YAAMtwB,MAAM,qDAAqD;AAAA,IAAA;AAG/D,UAAA;AAAA,MACFrK;AAAAA,IAAAA,IACqB26B;AAEzB,UAAMW,oBAAoB/Z,aACpB;AAAA,MACE,GAAGA;AAAAA,MACHriB,IAAIqiB,WAAWriB,MAAMqiB,WAAWjiB,QAAQi8B,kBAAa,EAAE;AAAA,IAEzDj6B,IAAAA;AAEN,UAAMgN,gBAA0CgtB,oBAC1CE,qBAAqBF,mBAAmB9hB,eAAe,IACvD;AAAA,MACEta,IAAI07B,mBAAmBt7B,QAAQi8B,KAAAA,aAAa,EAAE;AAAA,MAC9Cj8B,MAAMs7B,mBAAmBt7B,QAAQ;AAAA,MACjCD,MAAMu7B,mBAAmBv7B,QAAQ;AAAA,MACjCsD,OAAOi4B,mBAAmBj4B,SAAS;AAAA,MACnCkW,YAAY,CAAC;AAAA,MACb2B,iBAAiB,CAAE;AAAA,MACnBrO,MAAMsvB,GAAAA,aAAaC,KAAKC,MAAMD,KAAKE,OAAO,IAAIH,gBAAa/0B,MAAM,CAAC;AAAA,MAClE0oB,SAASqL,eAAeoB,MAAMC,OAAO;AAAA,IACzC;AAEJ,QAAI,CAACZ,yBAAyB;AAC1B,4CAAQ3B,KAAwB,wBAAA,EAAA;AAAA,IAAA;AAGpC,QAAI,CAACpY,MAAMrhB,oBAAoB,CAAC+gB,WAAWua,eAAe,CAACF,0BAA0B;AACjF,4CAAQ3B,KAAwB,wBAAA,EAAA;AAAA,IAAA;AAG7B,WAAAn1B,2BAAA,IAAC,0BACA+c,EAAAA,GAAAA,OACJ,eACA,eACA,aACA,kBACA,YACA,eACA,QACA,gBAAmC,CAAA;AAAA,EAE3C;AAEA,WAAS4a,yBAAwD;AAAA,IACIj8B;AAAAA,IACAkwB;AAAAA,IACAuB;AAAAA,IACArB;AAAAA,IACA8L;AAAAA,IACA/L;AAAAA,IACAsK;AAAAA,IACAx6B;AAAAA,IACAk8B;AAAAA,IACAvM;AAAAA,IACA0K;AAAAA,IACArE;AAAAA,IACA5I;AAAAA,IACAltB;AAAAA,IACA8N;AAAAA,IACAgtB;AAAAA,IACAC;AAAAA,IACAH;AAAAA,IACAtZ;AAAAA,IACA0Z;AAAAA,IACA3sB;AAAAA,IACAkL;AAAAA,IACAxZ;AAAAA,IACAk8B;AAAAA,EAYJ,GAC/D;AAEE,UAAMlF,eAAemF,mBAAAA,gBAAgB;AACrC,UAAMtb,aAAaC,KAAAA,wBAAwB;AAC3C,UAAMmK,qBAAqBtV,KAAAA,sBAAsB;AAG3CoX,UAAAA,oBAAoB3sB,MAAO,OAAA,EAAE;AAEnC,UAAMg8B,cAAct8B,kBAAmB+6B,mBAAmB,YAAY,YAAa;AACnF,UAAM,CAACwB,aAAaC,cAAc,IAAIr7B,MAAAA,SAAqBm7B,WAAW;AAEtE,UAAM,CAAC5qB,OAAO+qB,QAAQ,IAAIp8B,iBAAMc,SAA4B;AAEtDu7B,UAAAA,iBAAiBA,CAACzK,sBAAgE;AAC9E7yB,YAAAA,KAAK6yB,kBAAkB7yB,MAAM6yB,kBAAkBzyB;AAErD,aAAO0wB,iBAAiBwM,eAAe;AAAA,QACnCt9B;AAAAA,QACAu9B,gBAAgB1K;AAAAA,QAChBrN,YAAY6M;AAAAA,QACZrB;AAAAA,MAAAA,CACH,EACIlgB,KAAK,MAAM;AACRusB,iBAASj7B,MAAS;AACX,eAAA;AAAA,MAAA,CACV,EACAwP,MAAO/L,CAAM,MAAA;AACVw3B,iBAASx3B,CAAC;AACVwM,gBAAQC,MAAMzM,CAAC;AACfkmB,2BAAmBvY,KAAK;AAAA,UACpBuD,MAAM;AAAA,UACNC,SAAS,mCAAmCnR,EAAEmR,WAAW;AAAA,QAAA,CAC5D;AACM,eAAA;AAAA,MAAA,CACV;AAAA,IACT;AAEA,UAAMwmB,cAAcA,MAAM;AACtB,UAAIL,gBAAgB,WAAW;AAC3B,YAAIrF,aAAa2F,OAAO;AACpBL,yBAAe,oBAAoB;AAAA,mBAC5BL,WAAW;AAClBK,yBAAe,YAAY;AAAA,QAAA,OACxB;AACHA,yBAAe,YAAY;AAAA,QAAA;AAAA,MAC/B,WACOD,gBAAgB,WAAW;AAClCC,uBAAe,SAAS;AAAA,MAAA,WACjBD,gBAAgB,uBAAuB;AAC9CC,uBAAe,qBAAqB;AAAA,MAAA,WAC7BD,gBAAgB,uBAAuB;AAC9CC,uBAAe,SAAS;AAAA,MAAA,WACjBD,gBAAgB,cAAc;AACrCC,uBAAe,YAAY;AAAA,MAAA,OACxB;AACHA,uBAAe,SAAS;AAAA,MAAA;AAAA,IAGhC;AAEMlP,UAAAA,wBAAwBA,CAAC7L,iBAAyC;AAChE,UAAA,CAAC0O,oBAA4B3uB,QAAAA;AAC1B2uB,aAAAA,sBAAsB1O,aAAWjiB,MAAMiiB,aAAWvW,mBAAmB,OAAO4xB,eAAe,EAAE;AAAA,IACxG;AAEMC,UAAAA,0BAA0B,OAAOzO,kBAA0C;AAEzE,UAAA;AACA,YAAI,CAAChB,uBAAuB;AACxB6N,wBAAc7M,aAAa;AACpB0O,iBAAAA,QAAQC,QAAQ3O,aAAa;AAAA,QAAA;AAGxCkO,uBAAe,SAAS;AAElBU,cAAAA,qBAAqB,MAAM5P,wBAAwBgB,aAAa;AAEtE,YAAI,CAAC4O,oBAAoB;AACrB/B,wBAAc7M,aAAa;AACpB0O,iBAAAA,QAAQC,QAAQ3O,aAAa;AAAA,QAAA;AAExC,cAAM/tB,SAAS;AAAA,UACX,GAAI+tB,iBAAiB,CAAA;AAAA,QACzB;AAEIhgB,YAAAA,OAAOC,KAAK2uB,mBAAmBnkB,cAAc,EAAE,EAAEnS,SAAS,GAAG;AAC7DrG,iBAAOwY,aAAamkB,mBAAmBnkB;AACvCxY,iBAAOma,kBAAkBwiB,mBAAmBxiB;AAAAA,QAAAA;AAG5C,YAAA,CAACna,OAAOma,iBAAiB;AACzBna,iBAAOma,kBAAkBpM,OAAOC,KAAKhO,OAAOwY,UAAU;AAC/CxY,iBAAAA;AAAAA,QAAAA;AAGX46B,sBAAc56B,MAAM;AACpBkR,gBAAQ0T,MAAM,uBAAuB;AAAA,UACjCmJ,eAAeA,iBAAiB,CAAC;AAAA,UACjC/tB;AAAAA,QAAAA,CACH;AACMA,eAAAA;AAAAA,eACF0E,KAAQ;AACbwM,gBAAQC,MAAMzM,GAAC;AACfkmB,2BAAmBvY,KAAK;AAAA,UACpBuD,MAAM;AAAA,UACNC,SAAS,kCAAkCnR,IAAEmR,WAAW;AAAA,QAAA,CAC3D;AACMkY,eAAAA;AAAAA,MAAAA;AAAAA,IAEf;AAEM1I,UAAAA,WAAWA,CAACuX,oBAA4CtX,qBAA+D;AACjHV,cAAAA,MAAM,yBAAyBgY,kBAAkB;AACrD,UAAA;AAEA,YAAI,CAACn9B,iBAAiB;AACHm9B,yBAAAA,kBAAkB,EAAEjtB,KAAK,MAAM;AAC1C2V,6BAAiBP,UAAU;AAC3BmV,wBAAY0C,kBAAkB;AAAA,UAAA,CACjC;AACD;AAAA,QAAA;AAGJ,YAAIZ,gBAAgB,WAAW;AACf,sBAAA;AACZ1W,2BAAiBP,UAAU;AAAA,YAAE/kB,QAAQ48B;AAAAA,UAAAA,CAAoB;AAAA,QAAA,WAClDZ,gBAAgB,WAAW;AAC9BJ,cAAAA,aAAajF,aAAa2F,OAAO;AACjChX,6BAAiBP,UAAU;AAAA,cAAE/kB,QAAQ48B;AAAAA,YAAAA,CAAoB;AAC7C,wBAAA;AAAA,qBACLn9B,iBAAiB;AACAm9B,oCAAAA,kBAAkB,EACrCjtB,KAAM3P,CAAW,aAAA;AACdslB,+BAAiBP,UAAU;AAAA,gBACvB/kB,QAAQA,YAAU48B;AAAAA,gBAClBz8B,SAAS;AAAA,kBACLlB,MAAM;AAAA,kBACND,MAAM;AAAA,gBAAA;AAAA,cACV,CACH;AAAA,YAAA,CACJ,EAAE0R,QAAQ,MAAM;AACL,0BAAA;AAAA,YAAA,CACf;AAAA,UAAA,OACE;AACH4U,6BAAiBP,UAAU;AAAA,cAAE/kB,QAAQ48B;AAAAA,YAAAA,CAAoB;AAC7C,wBAAA;AAAA,UAAA;AAAA,QAChB,WACOZ,gBAAgB,cAAc;AACzB,sBAAA;AACZ1W,2BAAiBP,UAAU;AAAA,YAAE/kB,QAAQ48B;AAAAA,UAAAA,CAAoB;AAAA,QAAA,WAClDZ,gBAAgB,uBAAuB;AAClC,sBAAA;AAAA,QAAA,WACLA,gBAAgB,uBAAuB;AAClC,sBAAA;AAAA,QAAA,WACLA,gBAAgB,cAAc;AACtBY,yBAAAA,kBAAkB,EAAEjtB,KAAK,MAAM;AAC1C2V,6BAAiBP,UAAU;AAAA,cAAE/kB,QAAQiO;AAAAA,YAAAA,CAAe;AACxC,wBAAA;AACZisB,wBAAY0C,kBAAkB;AAAA,UAAA,CACjC;AAAA,QAAA,OACE;AACS,sBAAA;AACZtX,2BAAiBP,UAAU;AAAA,YAAE/kB,QAAQ48B;AAAAA,UAAAA,CAAoB;AAAA,QAAA;AAAA,eAExDl4B,KAAQ;AACbkmB,2BAAmBvY,KAAK;AAAA,UACpBuD,MAAM;AAAA,UACNC,SAAS,mCAAmCnR,IAAEmR,WAAW;AAAA,QAAA,CAC5D;AACD3E,gBAAQC,MAAMzM,GAAC;AACf4gB,yBAAiBP,UAAU;AAAA,UAAE/kB,QAAQ48B;AAAAA,QAAAA,CAAoB;AAAA,MAAA;AAAA,IAEjE;AAEMzuB,UAAAA,aAAaA,CAACqT,QAA6B;AAE7C,UAAIphB,SAA8B,CAAC;AACnC,YAAMy8B,UAAUb,gBAAgB,gBAAgBA,gBAAgB,oBAAoBA,gBAAgB,cAAcv9B;AAClH,UAAIo+B,QAAQ;AACJ,YAAA;AACAA,iBAAOC,aAAatb,KAAK;AAAA,YAAEub,YAAY;AAAA,UAAA,CAAO;AAAA,iBACzCr4B,KAAQ;AACXs4B,cAAAA,MAAMrvB,QAAQ,CAACsvB,QAAa;AACnBA,mBAAAA,IAAIh+B,IAAI,IAAIg+B,IAAIpnB;AAAAA,UAAAA,CAC1B;AAAA,QAAA;AAAA,MACL;AAEJ,UAAImmB,gBAAgB,cAAc;AACrB,iBAAA;AAAA,UAAE,GAAG57B;AAAAA,UAAQ,GAAGssB,kBAAkBrd;AAAAA,QAAQ;AAAA,MAAA;AAEvD,UAAI2sB,gBAAgB,WAAW;AAC3B,cAAMpb,YAAYsc,aAAa1b,IAAIviB,MAAMQ,iBAAiBi7B,eAAelZ,IAAI3iB,EAAE;AAC/E,YAAI+hB,WAAW;AACXxgB,iBAAOnB,OAAO2hB;AAAAA,QAAAA;AAElB,cAAMrO,UAAU0S,WAAWzD,IAAI3iB,IAAIY,iBAAiBi7B,eAAeC,WAAW;AAC9E,YAAIpoB,SAAS;AACTnS,iBAAOvB,KAAK0T;AAAAA,QAAAA;AAAAA,MAChB;AAEGnS,aAAAA;AAAAA,IACX;AAEA,UAAM+8B,iBAAiB9uB,OAAAA,gBAAwC;AAAA,MAC3DJ;AAAAA,MACAoX;AAAAA,MACAlX;AAAAA,MACAgX,SAAS;AAAA,IAAA,CACZ;AAEK,UAAA;AAAA,MACFnlB,QAAAA;AAAAA,MACAC;AAAAA,MACAK;AAAAA,MACA0sB;AAAAA,MACAzsB;AAAAA,IAAAA,IACA48B;AAGJ,UAAMl+B,OAAOe,SAAOf;AACpB,UAAMm+B,kBAAkBzB,UAAUp5B,SAAS,GAAG,IAAIo5B,UAAUpR,MAAM,GAAG,EAAEH,MAAM,GAAG,EAAE,EAAErS,KAAK,GAAG,IAAI,MAAM9Y,OAAOA;AAC7G,UAAM2hB,cAAYsc,aAAaj+B,MAAMQ,iBAAiBi7B,eAAe16B,SAAOnB,EAAE;AAE9E,UAAM09B,cAAc,CAAC3b,eAAaiP,sBAAsBrP,WAAW6c,kBAAkBxN,mBAAmB,IAAI5uB;AAC5G,UAAMq8B,eAAe,CAAC1c,cAAYJ,WAAW+c,mBAAmBH,eAAe,IAAIn8B;AAC7Eu8B,UAAAA,kBAAkBF,gBAAgB5vB,UAAU,YAAY;AAC1D,YAAMkC,OAAO,MAAMlC,QAAQ4vB,cAAcf,eAAe,CAAA,CAAE;AAC1D,UAAIV,kBAAkB;AAClB,cAAM4B,eAAe5B,iBAAiBv1B,IAAI5B,CAAAA,QAAKA,IAAE1E,MAAM;AAClD09B,aAAAA,KAAK,GAAGD,YAAY;AAAA,MAAA;AAEtB7tB,aAAAA;AAAAA,IACP3O,IAAAA;AAEJY,UAAAA,UAAU,MAAM;AACZk4B,mBAAa/M,KAAK;AAAA,IAAA,GACnB,CAACA,KAAK,CAAC;AAED2Q,aAAAA,gBAAgB/tB,QAAgBuK,iBAA4B;AACjEwc,mBAAaiH,SAAS,IAAI;AAC1BC,uBAAAA,8BAA8BjuB,QAAM4nB,mBAAAA,gBAAgB,EAC/C7nB,KAAM6I,CAAe,eAAA;AACZzC,cAAAA,MAAMwjB,0BAA0B/gB,UAAU;AAEnCslB,qBAAAA,YAAY/nB,IAAI8iB,QAAQ;AACrClC,qBAAaoH,cAAcnuB,MAAI;AAClBonB,qBAAAA,kBAAkBjhB,IAAIghB,cAAc;AACjD,cAAMiH,yBAA0B7jB,mBAAmB,CAAA,GAC9C9X,OAAQqW,CAAQ3C,QAAAA,IAAIghB,eAAere,GAAG,CAAC,KAAkB3K,OAAOC,KAAK+H,IAAIyC,UAAU;AACxFme,qBAAasH,iBAAiBD,qBAAqB;AACtCE,qBAAAA,oBAAoBnoB,IAAIyC,UAAU;AAE/C,cAAM2lB,kBAAkBhkB,mBAAmB,CAAA,GAAI7T,IAAKoS,WAAQ3C,IAAIghB,eAAere,KAAG,CAAC,EAAErW,OAAOyC,OAAO,KAAiBiJ,OAAOC,KAAK+H,IAAIyC,UAAU;AAChI,sBAAA,cAAczC,IAAIyC,UAAU;AAC1CvY,sBAAc,mBAAmBk+B,cAAc;AAAA,MAAA,CAClD;AAAA,IAAA;AAGT,UAAMC,cAAct5B,QAAQ9E,SAAOhB,IAAI,KAAK8F,QAAQ9E,SAAOnB,EAAE;AAE7D,UAAMw/B,0BAA0BA,MAAM;AAClC,YAAMpQ,oBAAoB;AAAA,QAAE,GAAGjuB,SAAOwY;AAAAA,MAAW;AACjD,UAAIme,aAAakC,SACN5K,QAAAA,kBAAkB0I,aAAakC,QAAQ;AAClD54B,oBAAc,cAAcguB,iBAAiB;AAEjC,kBAAA;AAAA,IAChB;AAEA,UAAM3V,WAAW4I,YAAY5I,aAAarX,UAAaigB,YAAY5I,aAAa;AAChF,UAAMoC,qBAAqBpC,YAAY7Y;AAEhC,WAAAsE,2BAAAA,IAAC2O,GAAAA,iBAAc,YAAY,MAC9B,yCAAClE,OAAO,QAAA,EAAA,OAAO2uB,gBAEX,UACK94B,2BAAAA,KAAAyR,WAAAA,UAAA,EAAA,UAAA;AAAA,MAAA,CAACrW,mBAAmB4E,2BAAAA,KAACi6B,GAAK,MAAA,EAAA,OAAOtC,aACP,gBAAgBx2B,GAAAA,IAAIkX,GAAoB,oBAAA,wDAAwD,GAChG,eAAgB3S,CAAMkyB,MAAAA,eAAelyB,CAAe,GAC3E,UAAA;AAAA,QAAChG,2BAAA,IAAAw6B,GAAA,KAAA,EAAI,OAAO,WAAU,UAEtB,WAAA;AAAA,QACCx6B,2BAAA,IAAAw6B,GAAA,KAAA,EAAI,OAAO,cAAa,UAEzB,cAAA;AAAA,QACCx6B,2BAAA,IAAAw6B,GAAA,KAAA,EAAI,OAAO,kBAAiB,UAE7B,mBAAA,CAAA;AAAA,MAAA,GACJ;AAAA,MAECl6B,2BAAA,KAAA,QAAA,EAAK,YAAU,MACV,UAAU84B,eAAetX,cACzB,WAAWrgB,GAAAA,IACP/F,kBAAkB,WAAW,uBAC7B,kCAAkC,GAEvCu8B,UAAAA;AAAAA,QAAgB,gBAAA,4CACZ9C,KAAAA,wBAAwB,CAAA,CAAA;AAAA,QAE5B8C,gBAAgB,gBACb/8B,QACA28B,WAAW4C,QACVz6B,2BAAA,IAAA,UAAU,MAAV,EAAe,MAAa;AAAA,QAEhCi4B,gBAAgB,aACZj4B,2BAAAA,IAAA,6BAAA,EACG,MACA,YAAY,CAACkzB,YAAY9c,sBAAoB;AAEzC,cAAI8c,YAAY;AACZ0G,4BAAgB1G,YAAY9c,iBAAe;AAC3C8hB,2BAAe,qBAAqB;AAAA,UAAA,OACjC;AACHA,2BAAe,SAAS;AAAA,UAAA;AAAA,QAGhC,GAAA,yBAAyBvB,eACzB,kBACA,gBAAmC,CAAA;AAAA,QAE1CsB,gBAAgB,yBAAyBrF,+CACrC,+BAA8B,EAAA,cACA,oBACA,iBAAmC;AAAA,QAErEqF,gBAAgB,yBAAyBrF,gBACrC5yB,2BAAA,IAAA,mCAAA,EAAkC,cACA,YAAY/D,SAAOwY,YACnB,iBAAiBxY,SAAOma,gBAA8B,CAAA;AAAA,QAE5F6hB,gBAAgB,wBAAwBrF,gBACpC5yB,2BAAAA,IAAA06B,mBAAAA,sBAAA,EAAqB,cACA,YAAYz+B,UACZ,MACA,iBAAiB,OAAO0+B,uBAAuB;AAC3C9T,6BAAmBvY,KAAK;AAAA,YACpBuD,MAAM;AAAA,YACNC,SAAS;AAAA,UAAA,CACZ;AACD,gBAAMsmB,eAAen8B,QAAM;AAC3Bk6B,sBAAYwE,kBAAkB;AAAA,QAAA,GAEtD;AAAA,QAEL1C,gBAAgB,aACZj4B,+BAAA,uBAAA,EACG,eACA,aACA,QACA,qBACA,kBACA,gBAAmC,CAAA;AAAA,QAE1Ci4B,gBAAgB,oBAAoB9a,cAChCnd,2BAAAA,IAAA,uBAAA,EACG,kBACA,kBACA,SACA,qBACA,qBACA,WAAyB,CAAA;AAAA,QAEhCi4B,gBAAgB,gBACZj4B,2BAAAA,IAAA,gCAAA,EACG,YAAYxD,cAAc,GAC1B,iBACA,gBACA,iBAAiB,CAACwM,aAAaH,WAAWuE,YAAU;AAChD,gBAAM9B,UAAUsvB,KAAAA,gBAAgB;AAAA,YAC5B,GAAGjS,kBAAkBrd;AAAAA,YACrB,CAACpC,cAAcF,aAAaH,SAAS,CAAC,GAAG+xB,KAAAA,gBAAgBxtB,SAAO,IAAI;AAAA,aACrE,IAAI;AACPub,4BAAkBrd,UAAUA;AAC5B8tB,yBAAeyB,SAAS;AAAA,QAC5B,GACA,SACA,SAASpB,iBACT,uBACA,iBACA,oBACA,WAAW5B,WAAW9vB,uCACjB7H,GAAAA,YACG,EAAA,OAAO,WACP,SAAS,MAAMg4B,eAAe,YAAY,GACzCL,UAAU9vB,UAAAA,KACf,CAAA,GACZ;AAAA,QAECkwB,gBAAgB,aAAc33B,gCAAAsO,GAAAA,eAAA,EAC3B,UAAU,YACTxB,UAAAA;AAAAA,UAAS,SAAApN,2BAAA,IAAC86B,kBAAU,MAAe,CAAA;AAAA,UAEnCp/B,mBAAmB+6B,oBAAoBwB,gBAAgB,yBACpD33B,2BAAAA,KAACwM,GAAAA,QAAO,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAM;AACX8lB,yBAAaiH,SAAS,KAAK;AAC3B,mBAAO3B,eAAe,SAAS;AAAA,UAEvC,GAAA,UAAA;AAAA,YAAAl4B,2BAAA,IAAC+6B,GAAa,eAAA,EAAA;AAAA,YAAA;AAAA,UAAA,GAElB;AAAA,UAEHr/B,mBAAmB+6B,oBAAoBwB,gBAAgB,yBACpD33B,2BAAAA,KAACwM,GAAAA,QAAO,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAM;AACXorB,2BAAe,qBAAqB;AAAA,UAE5C,GAAA,UAAA;AAAA,YAAAl4B,2BAAA,IAAC+6B,GAAa,eAAA,EAAA;AAAA,YAAA;AAAA,UAAA,GAElB;AAAA,UAEHr/B,mBAAmB+6B,oBAAoBwB,gBAAgB,6CACnDnrB,GAAO,QAAA,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAMorB,eAAe,SAAS,GAC3C,UAAA;AAAA,YAAAl4B,2BAAA,IAAC+6B,GAAa,eAAA,EAAA;AAAA,YAAA;AAAA,UAAA,GAElB;AAAA,UAEHr/B,mBAAmBu8B,gBAAgB,gBAAgB33B,2BAAA,KAACwM,GAAO,QAAA,EAAA,SAAS,QACT,MAAK,UACL,SAAS,MAAMorB,eAAe,SAAS,GAC/F,UAAA;AAAA,YAAAl4B,2BAAA,IAAC+6B,GAAa,eAAA,EAAA;AAAA,YAAA;AAAA,UAAA,GAElB;AAAA,UAEC/6B,2BAAAA,IAAA8M,GAAAA,QAAA,EAAO,SAAS,QACT,SAAS,MAAM;AACE,yBAAA;AAAA,UAAA,GACf,UAEV,UAAA;AAAA,UAECpR,mBAAmBu8B,gBAAgB,yBAC/Bj4B,2BAAAA,IAAA8M,GAAAA,QAAA,EACG,SAAS,UACT,OAAM,WACN,SAASwtB,yBAAwB,UAGrC,OAAA,CAAA;AAAA,UAEH5+B,mBAAmBu8B,gBAAgB,yBAC/Bj4B,2BAAAA,IAAA8M,GAAA,QAAA,EACG,SAAS,UACT,OAAM,WACN,SAAS,MAAM;AACC,wBAAA;AAAA,UAAA,GACd,UAGN,QAAA;AAAA,UAEHpR,oBAAoBu8B,gBAAgB,aAAaA,gBAAgB,iBAC7D33B,2BAAAA,KAAA06B,GAAAA,eAAA,EACG,SAAS,UACT,OAAM,WACN,MAAK,UACL,SAASz+B,cACT,UAAUA,gBAAiB07B,gBAAgB,aAAa,CAACoC,aACzD,WAAWpC,gBAAgB,eACrBj4B,2BAAAA,IAACi7B,GAAAA,WAAS,CAAA,CAAA,IACV/9B,QAEL+6B,UAAAA;AAAAA,YAAAA,gBAAgB,aAAa;AAAA,YAC7BA,gBAAgB,gBAAgB;AAAA,UAAA,GACrC;AAAA,UAEH,CAACv8B,mBAAoBsE,2BAAA,IAAAg7B,GAAA,eAAA,EAClB,SAAQ,UACR,OAAM,WACN,MAAK,UACL,SAASz+B,cAAa,UAG1B,oBAAA,CAAA;AAAA,QAAA,EAEJ,CAAA;AAAA,MAAA,EACJ,CAAA;AAAA,IAAA,EACJ,CAAA,EAEJ,CAAA,GAEJ;AAAA,EAEJ;AAEA,WAAS66B,qBAA0Dja,YAAoC/H,iBAA8E;AAC3K,UAAA;AAAA,MACFX;AAAAA,MACA,GAAGymB;AAAAA,IAAAA,IACH/d;AACJ,UAAMge,mBAA8C,CAAC;AACrD,QAAI1mB,YAAY;AACZzK,aAAOC,KAAKwK,UAAU,EAAE7K,QAAS+K,CAAQ,QAAA;AACrCwmB,yBAAiBxmB,GAAG,IAAIymB,sBAAsB3mB,WAAWE,GAAG,GAAwBS,eAAe;AAAA,MAAA,CACtG;AAAA,IAAA;AAGE,WAAA;AAAA,MACH,GAAG8lB;AAAAA,MACHzmB,YAAY0mB;AAAAA,IAChB;AAAA,EACJ;AAEA,WAASC,sBAAsBlnB,UAA6BkB,iBAAsD;AAC9G,QAAIimB,mBAAmBnnB;AACvB,QAAIkB,mBAAmB,OAAOimB,qBAAqB,YAAYA,iBAAiB9lB,gBAAgB;AACtFA,YAAAA,iBAAiBH,gBAAgBimB,iBAAiB9lB,cAAc;AACtE,UAAIA,kBAAkBpB,KAAAA,kBAAkBoB,eAAerB,QAAQ,GAAG;AAC9DmnB,2BAAmB9lB,eAAerB;AAAAA,MAAAA,OAC/B;AAEH,YAAIqB,gBAAgB;AACGmJ,6BAAAA,KAAAA,UAAUnJ,eAAerB,UAAUmnB,gBAAgB;AAAA,QAAA;AAGtE,YAAA,CAAClnB,KAAAA,kBAAkBknB,gBAAgB,KAAKA,iBAAiBhnB,aAAa,SAASgnB,iBAAiB5mB,YAAY;AAC5G,gBAAMA,aAAgD,CAAC;AACvDzK,iBAAOC,KAAKoxB,iBAAiB5mB,UAAU,EAAE7K,QAAS+K,CAAQ,QAAA;AACtDF,uBAAWE,GAAG,IAAIymB,sBAAwBC,iBAAiC5mB,WAA0BE,GAAG,GAAeS,eAAe;AAAA,UAAA,CACzI;AACkB,6BAAA;AAAA,YACf,GAAGimB;AAAAA,YACH5mB;AAAAA,UACJ;AAAA,QAAA;AAAA,MACJ;AAAA,IAEJ;AAEG4mB,WAAAA;AAAAA,EAEX;AAEA,QAAMlC,eAAeA,CAACt4B,OAAenF,iBAA0Bi7B,eAAyB9oB,YAAqB;AACrGT,QAAAA;AACJ,QAAI,CAACvM,OAAO;AACA,cAAA;AAAA,IAAA;AAIRnF,QAAAA,mBAAmBi7B,eAAen4B,SAASqC,MAAMmP,OAAOsW,aAAa,KAAK,CAACzY,QACnE,SAAA;AAEZ,UAAMytB,WAAWC,KAAAA,gCAAgC16B,KAAK,EAAE2lB,MAAM,GAAG;AAC7D8U,QAAAA,SAASh5B,SAAS,MAAM,GAAG;AAC3B8K,cAAQ,yDAAyDvM,KAAK;AAAA,IAAA;AAEnEuM,WAAAA;AAAAA,EACX;AAEA,QAAM8T,aAAaA,CAACrgB,OAAenF,iBAA0Bi7B,eAAyBC,gBAA0B;AACxG,QAAA,CAAC/1B,MAAc3D,QAAAA;AACfkQ,QAAAA;AACA1R,QAAAA,mBAAmBi7B,eAAen4B,SAASqC,MAAMmP,OAAOsW,YAAAA,CAAa,EAC7D,SAAA;AACR5qB,QAAAA,mBAAmBk7B,aAAap4B,SAASqC,MAAMmP,OAAOsW,YAAAA,CAAa,EAC3D,SAAA;AAILlZ,WAAAA;AAAAA,EACX;ACzyBO,QAAMouB,0BAA0Bz/B,MAAM0/B,cAA2C,EAAS;AAC1F,QAAMpgC,0BAA0BU,MAAM0/B,cAA0C,EAAS;AA+CzF,QAAMC,2BAA2B3/B,MAAMuR,KAC1C,SAAAouB,0BAAAngC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAkC,UAAA;AAAA,MAAAwV;AAAAA,MAAA0qB;AAAAA,MAAAC;AAAAA,MAAAjgC;AAAAA,MAAAkwB;AAAAA,MAAAgM;AAAAA,MAAAgE;AAAAA,MAAA9S;AAAAA,MAAApf;AAAAA,MAAAmyB;AAAAA,MAAA99B;AAAAA,IAAAA,IAAAzC;AAc9B,UAAAkhB,aAAmBC,KAAAA,wBAAwB;AAC3C,UAAAqf,WAAiBC,YAAAA,YAAY;AAC7B,UAAAnV,qBAA2BtV,KAAAA,sBAAsB;AACjD,UAAA;AAAA,MAAA6D;AAAAA,QAA4BC,gCAA2B;AAEvD,UAAAiX,CAAAA,eAAAC,gBAAA,IAA0CxwB,MAAAc,SAavC;AAEH,UAAAo/B,CAAAA,uBAAAC,wBAAA,IAA0DngC,MAAAc,SAWvD;AAEH,UAAAs/B,2BAAAt2B;AAIQ7I,QAAAA;AAAAxB,QAAAA,SAAAsgC,kBAAA;AAEe9+B,WAAAI,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAtC;AAAAA,UAAA88B;AAAAA,UAAA9L;AAAAA,UAAAjwB;AAAAA,UAAAi8B;AAAAA,QAAAA,IAAA16B;AAapB+P,gBAAA0T,MAAc,mBAAmB/lB,IAAI88B,UAAU9L,qBAAqBjwB,gBAAgB;AACpFigC,2BAAmB,mBAAiB;AAAA,UAAAhhC;AAAAA,UAAA88B;AAAAA,QAAAA,CAAA;AAIpB,yBAAA;AAAA,UAAAzK,oBACQryB;AAAAA,UAAE88B;AAAAA,UAAA9L;AAAAA,UAAApwB,iBAAA;AAAA,UAAAG;AAAAA,UAAAugC,UAAA;AAAA,UAAAtE;AAAAA,QAAAA,CAOzB;AAAA,MAAC;AACLt8B,aAAAsgC;AAAAtgC,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AA3BD,UAAA6gC,iBAAuBr/B;AA2BrBI,QAAAA;AAAA5B,QAAAA,SAAAsgC,kBAAA;AAEmB1+B,WAAAQ,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAoL;AAAAA,UAAAkL;AAAAA,UAAAiZ;AAAAA,UAAA1T;AAAAA,UAAAqS,qBAAAwQ;AAAAA,UAAAnf;AAAAA,UAAA2a,kBAAAyE;AAAAA,QAAAA,IAAA3+B;AAiBlBuP,gBAAA0T,MAAc,iBAAiB7X,aAAakL,UAAUiZ,oBAAoB1T,wBAAwBqS,uBAAqB3O,UAAU;AACjI2e,2BAAmB,iBAAe;AAAA,UAAA9yB;AAAAA,UAAAmkB;AAAAA,QAAAA,CAAA;AAKlC,cAAAtkB,YAAkBG,eAAeA,YAAWxK,SAAU,GAAG,IACnDwK,YAAW2d,UAAc3d,GAAAA,YAAWwzB,YAAa,GAAG,CAAC,IAACt/B;AAE5D,cAAAu/B,8BAAoCzzB,eAAeA,YAAWxK,SAAU,GAAG,IACrEwK,YAAW2d,UAAW3d,YAAWwzB,YAAa,GAAG,IAAC,CAAI,IACtDxzB;AACkB,iCAAA;AAAA,UAAAA,aACPyzB;AAAAA,UAA2BvoB;AAAAA,UAAArL;AAAAA,UAAA4Q;AAAAA,UAAA0T;AAAAA,UAAArB,qBAKxCA;AAAAA,UAAmBnV,oBACCwG,YAAU5I,YAAmB;AAAA,UAAAujB,kBACjDA;AAAAA,QAAAA,CACH;AAAA,MAAC;AACLt8B,aAAAsgC;AAAAtgC,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAvCD,UAAAkhC,eAAqBt/B;AAuCnBQ,QAAAA;AAAApC,QAAAA,SAAAsgC,kBAAA;AAEuBl+B,WAAAC,CAAAA,QAAA;AAAC,cAAA;AAAA,UAAAiuB,qBAAA6Q;AAAAA,UAAA9gC,kBAAA+gC;AAAAA,UAAA1yB;AAAAA,UAAAkyB;AAAAA,UAAAS;AAAAA,QAAAA,IAAAh/B;AAiBtBsP,gBAAA0T,MAAc,qBAAmB;AAAA,UAAAiL,qBAC7BA;AAAAA,UAAmBjwB,kBACnBA;AAAAA,UAAgBqO;AAAAA,UAAAkyB;AAAAA,UAAAS;AAAAA,QAAAA,CAInB;AACDf,2BAAmB,qBAAmB;AAAA,UAAAhQ,qBAClCA;AAAAA,UAAmBjwB,kBACnBA;AAAAA,UAAgBqO;AAAAA,UAAAkyB;AAAAA,UAAAS;AAAAA,QAAAA,CAAA;AAKJ,yBAAA;AAAA,UAAAnhC,iBAAA;AAAA,UAAAowB,qBAEZA;AAAAA,UAAmBjwB,kBACnBA;AAAAA,UAAgBqO;AAAAA,UAAAkyB;AAAAA,QAAAA,CAGnB;AAAA,MAAC;AACL5gC,aAAAsgC;AAAAtgC,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAtCD,UAAAshC,mBAAyBl/B;AA+CU,UAAAC,KAAA+9B,qBAAqBO;AAAwBj+B,QAAAA;AAAA1C,QAAAA,SAAAwC,cAAAxC,EAAAshC,CAAAA,MAAAA,oBAAAthC,EAAA6gC,CAAAA,MAAAA,kBAAA7gC,EAAA,CAAA,MAAAkhC,gBAAAlhC,UAAAqgC,sBAAArgC,EAAA,EAAA,MAAAqC,IAAA;AAJ7D,WAAA;AAAA,QAAAw+B;AAAAA,QAAAS;AAAAA,QAAAJ;AAAAA,QAAAd,mBAIgB/9B;AAAAA,QAA6Cg+B;AAAAA,QAAA79B;AAAAA,MAAA;AAGnExC,aAAAwC;AAAAxC,aAAAshC;AAAAthC,aAAA6gC;AAAA7gC,aAAAkhC;AAAAlhC,cAAAqgC;AAAArgC,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAKSiD,UAAAA,KAAAsC,QAAQurB,aAAa;AAACltB,QAAAA;AAAA5D,QAAAA,EAAA8wB,EAAAA,MAAAA,iBAAA9wB,UAAAugC,YAAAvgC,EAAA,EAAA,MAAAihB,YAAA;AAUfrd,WAAAie,CAAA,iBAAA;AAAA,YACLiP,eAAa8P,UAAA;AAAA,cACTjf,gBAAcmP,eAAa5wB,oBAAsB4wB,cAAaR,oBAAAxpB,QAA2B;AACzF,kBAAAyc,MAAYtC,WAAUsgB,uBAAwB5f,aAAUriB,MAAOqiB,aAAUjiB,IAAK;AAC9E6gC,qBAAShd,GAAG;AAAA,UAAA;AAAA,QAAC;AAGrBwN,yBAAgBrvB,MAAU;AAAA,MAAC;AAC9B1B,cAAA8wB;AAAA9wB,cAAAugC;AAAAvgC,cAAAihB;AAAAjhB,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAmgC,EAAAA,MAAAA,8BAAAngC,UAAAqwB,uBAAArwB,EAAA,EAAA,MAAA8wB,iBAAA9wB,UAAAq8B,aAAAr8B,EAAAmO,EAAAA,MAAAA,WAAAnO,UAAAqgC,sBAAArgC,EAAA,EAAA,MAAAutB,WAAAvtB,EAAAG,EAAAA,MAAAA,kBAAAH,EAAA,EAAA,MAAAiD,MAAAjD,UAAA4D,IAAA;AAnBLG,0CAAC,wBACS,EAAA,MAAAd,IACYk9B,kBAAyB,4BAC1B,iBAAI,OACA9P,qBAAmB,GACpCS,eACK3iB,SACOhO,gBACLk8B,WACMgE,qCACR9S,SACI,aAAA3pB,IAQT;AAAA5D,cAAAmgC;AAAAngC,cAAAqwB;AAAArwB,cAAA8wB;AAAA9wB,cAAAq8B;AAAAr8B,cAAAmO;AAAAnO,cAAAqgC;AAAArgC,cAAAutB;AAAAvtB,cAAAG;AAAAH,cAAAiD;AAAAjD,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAIEgE,UAAAA,KAAAuB,QAAQk7B,qBAAqB;AAEjBx8B,UAAAA,MAAAsB,QAAQk7B,uBAAqBjzB,WAAa;AAC9C,UAAAtJ,MAACu8B,CAAAA,wBAAiCA,QAAAA,CAAAA,uBAAqBjzB;AACjD,UAAArJ,MAACs8B,CAAAA,wBAAiCA,QAAAA,CAAAA,uBAAqBjzB;AAEvDnJ,UAAAA,MAAAo8B,uBAAqBtlB,sBAA6B;AAAA7W,QAAAA;AAAAtE,QAAAA,EAAAygC,EAAAA,MAAAA,yBAAAzgC,UAAAmO,WAAAnO,EAAA,EAAA,MAAAihB,YAAA;AAC7D9S,YAAAA,WAAWsyB,uBAAqB9O,qBAAoB,MAAA;AAErDtM,gBAAAA,MAAc,yBAAyBob,uBAAqB9O,kBAAoB;AAChF,cAAAoM,eAAqB9c,WAAU+c,mBAAoByC,sBAAqB9O,kBAAoB;AACrFxjB,eAAAA,QAAQ4vB,cAAY,EAAI;AAAA,MAACr8B,IAAAA;AAEzB1B,cAAAygC;AAAAzgC,cAAAmO;AAAAnO,cAAAihB;AAAAjhB,cAAAsE;AAAAA,IAAAA,OAAA;AAAAA,YAAAtE,EAAA,EAAA;AAAA,IAAA;AAAAuE,QAAAA;AAAAvE,QAAAA,EAAAmgC,EAAAA,MAAAA,8BAAAngC,UAAAygC,yBAAAzgC,EAAA,EAAA,MAAAqrB,oBAAA;AACI9mB,YAAAI,CAAAA,SAAA;AAAC,cAAA;AAAA,UAAArF,IAAAgmB;AAAAA,UAAA5M,UAAAsM;AAAAA,QAAAA,IAAArgB;AAGC,YAAA,CACZ87B,uBAAqB;AAAA;AAAA,QAAA;AAAA,YAAA,CACrBnhC,MAAE;AAAA;AAAA,QAAA;AACPs5B,cAAAA,cAAA,CAAsB6H,sBAAqBjzB;AAAc,eAClD2yB,2BAA0BqB,aAAA;AAAA,UAAA9hC,MACvB+gC,uBAAqB9O;AAAAA,UAAAjZ,UAC3BA;AAAAA,UAAQlL,aACKlO;AAAAA,UAAEmc,oBACKmd,eAAe6H,sBAAqBxiB,yBAA8BwiB,CAAAA,GAAAA,sBAAqBxiB,wBAAyB3e,IAAE,IAAAoC;AAAAA,UAAa2L,WACxIozB,sBAAqBpzB;AAAAA,UAAAijB,qBACXmQ,sBAAqBnQ;AAAAA,QAAAA,CAC7C,EAACpf,MAAA/L,CAAA,MAAA;AAEMwM,kBAAAC,MAAczM,CAAC;AACfkmB,6BAAkBvY,KAAA;AAAA,YAAAuD,MACR;AAAA,YAAOC,SACJ,iCAAiCnR,EAACmR,WAAY;AAAA,UAAA,CAC1D;AAAC,iBAAA;AAAA,QAAA,CAEL;AAAA,MAAC;AACTtW,cAAAmgC;AAAAngC,cAAAygC;AAAAzgC,cAAAqrB;AAAArrB,cAAAuE;AAAAA,IAAAA,OAAA;AAAAA,YAAAvE,EAAA,EAAA;AAAA,IAAA;AAAA2E,QAAAA;AAAA,QAAA3E,EAAAmgC,EAAAA,MAAAA,8BAAAngC,UAAAygC,uBAAAxiB,0BAAAje,EAAAygC,EAAAA,MAAAA,uBAAA9O,sBAAA3xB,EAAA,EAAA,MAAAygC,uBAAApzB,aAAArN,EAAAygC,EAAAA,MAAAA,uBAAAnQ,uBAAAtwB,EAAA,EAAA,MAAAygC,uBAAAjzB,eAAAxN,UAAAqrB,oBAAA;AAES1mB,YAAAA,MAAA;AACD87B,YAAAA,CAAAA,uBAAqBjzB,aAAA;AAAA;AAAA,QAAA;AAC1B,cAAAiO,qBAA2BglB,uBAAqBxiB,wBAAAnb,OAAAwb,CAAsCA,MAAAA,MAAMmiB,uBAAqBjzB,WAAa;AAAE,eACzH2yB,2BAA0B5hB,eAAA;AAAA,UAAA7e,MACvB+gC,uBAAqB9O;AAAAA,UAAAnkB,aACdizB,uBAAqBjzB;AAAAA,UAAAH,WACvBozB,uBAAqBpzB;AAAAA,UAAAoO;AAAAA,UAAA6U,qBAEXmQ,uBAAqBnQ;AAAAA,QAAAA,CAC7C,EAAClgB,KAAA,MAAA;AAEMswB,mCAAwBh/B,MAAU;AAAA,QAAA,CACrC,EAACwP,MAAAnJ,CAAA,QAAA;AACE4J,kBAAAC,MAAczM,GAAC;AACfkmB,6BAAkBvY,KAAA;AAAA,YAAAuD,MACR;AAAA,YAAOC,SACJ,+BAA+BnR,IAACmR,WAAY;AAAA,UAAA,CACxD;AAAC,iBAAA;AAAA,QAAA,CAEL;AAAA,MAAC;AACTtW,cAAAmgC;AAAA,QAAA,EAAA,IAAAM,uBAAAxiB;AAAA,QAAA,EAAA,IAAAwiB,uBAAA9O;AAAA,QAAA,EAAA,IAAA8O,uBAAApzB;AAAA,QAAA,EAAA,IAAAozB,uBAAAnQ;AAAA,QAAA,EAAA,IAAAmQ,uBAAAjzB;AAAAxN,cAAAqrB;AAAArrB,cAAA2E;AAAAA,IAAAA,OAAA;AAAAA,YAAA3E,EAAA,EAAA;AAAA,IAAA;AAAA4E,QAAAA;AAAAG,QAAAA;AAAAC,QAAAA;AAAA,QAAAhF,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGYyB,YAAAA,MAAA;AACT87B,iCAAwBh/B,MAAU;AAAA,MAAC;AAE7BqD,YAAAA,MAAA;AACN27B,iCAAwBh/B,MAAU;AAAA,MAAC;AAExBsD,YAAA,CAAA;AAAEhF,cAAA4E;AAAA5E,cAAA+E;AAAA/E,cAAAgF;AAAAA,IAAAA,OAAA;AAAAJ,YAAA5E,EAAA,EAAA;AAAA+E,YAAA/E,EAAA,EAAA;AAAAgF,YAAAhF,EAAA,EAAA;AAAA,IAAA;AAAAiF,QAAAA;AAAA,QAAAjF,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAEK8B,YAAA,CAAA;AAAEjF,cAAAiF;AAAAA,IAAAA,OAAA;AAAAA,YAAAjF,EAAA,EAAA;AAAA,IAAA;AAGd,UAAAkF,MAAAu7B,uBAAqB/nB;AAClB,UAAApT,MAAAm7B,uBAAqBjzB;AAAahI,QAAAA;AAAA,QAAAxF,EAAA4Z,EAAAA,MAAAA,mBAAA5Z,EAAA,EAAA,MAAAiE,OAAAjE,UAAAkE,OAAAlE,EAAAmE,EAAAA,MAAAA,OAAAnE,EAAA,EAAA,MAAAqE,OAAArE,EAAAsE,EAAAA,MAAAA,OAAAtE,EAAA,EAAA,MAAAuE,OAAAvE,UAAA2E,OAAA3E,EAAAkF,EAAAA,MAAAA,OAAAlF,EAAA,EAAA,MAAAsF,OAAAtF,UAAAgE,IAAA;AA3EnDwB,2CAAC,oBACS,EAAA,MAAAxB,IACY,kBAAG,MACH,kBAAAC,KACJ,cAAAC,KACM,oBAAAC,KACX,SAAA,OACW,oBAAAE,KACX,SAAAC,KAOU,mBAAAC,KAwBS,4BAAI,OACtB,UAAAI,KAqBD,SAAAuF,QAEI,aAAAtF,KAGH,UAAAG,KAGK,eAAAC,KACE,iBAAI,OACC,sBAAAC,KACF,oBAAA,MACH2U,iBACP,UAAA1U,KACG,aAAAI,KAAqC;AAAAtF,cAAA4Z;AAAA5Z,cAAAiE;AAAAjE,cAAAkE;AAAAlE,cAAAmE;AAAAnE,cAAAqE;AAAArE,cAAAsE;AAAAtE,cAAAuE;AAAAvE,cAAA2E;AAAA3E,cAAAkF;AAAAlF,cAAAsF;AAAAtF,cAAAgE;AAAAhE,cAAAwF;AAAAA,IAAAA,OAAA;AAAAA,YAAAxF,EAAA,EAAA;AAAA,IAAA;AAAA0F,QAAAA;AAAA,QAAA1F,EAAA,EAAA,MAAAyV,YAAAzV,EAAAwF,EAAAA,MAAAA,OAAAxF,EAAA0C,EAAAA,MAAAA,MAAA1C,UAAA+D,IAAA;AA7G1D2B,YACWZ,2BAAA,KAAA,wBAAA,UAAA,EAAA,OAAApC,IASC,UAAA;AAAA,QAAA;AAAA,QAERqB;AAAAA,QAsBAyB;AAAAA,MAAAA,GA6EJ;AAAmCxF,cAAAyV;AAAAzV,cAAAwF;AAAAxF,cAAA0C;AAAA1C,cAAA+D;AAAA/D,cAAA0F;AAAAA,IAAAA,OAAA;AAAAA,YAAA1F,EAAA,EAAA;AAAA,IAAA;AAAA2F,QAAAA;AAAA,QAAA3F,EAAAmgC,EAAAA,MAAAA,8BAAAngC,UAAA0F,KAAA;AAhHvCC,2CAAA,wBAAA,UAAA,EAAyCw6B,OAAAA,4BACrCz6B,UAiHJ,KAAA;AAAmC1F,cAAAmgC;AAAAngC,cAAA0F;AAAA1F,cAAA2F;AAAAA,IAAAA,OAAA;AAAAA,YAAA3F,EAAA,EAAA;AAAA,IAAA;AAlHnC2F,WAAAA;AAAAA,EAkHmC,GAExCiN,KAAK;AAxRR,WAAAvI,QAAA;AAAA,WAAA;AAAA,MAAAo3B,mBAAA;AAAA,MAAAC,iBAAA;AAAA,MAAAC,mBAAA;AAAA,IAAA;AAAA,EAAA;AAAA,WAAAz3B,SAAA;AAAA,EAAA;AC/DG,WAAA03B,uBAAA7hC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAgC,UAAA;AAAA,MAAAP,MAAA08B;AAAAA,MAAA9L;AAAAA,MAAA3O;AAAAA,MAAAkgB;AAAAA,IAAAA,IAAA9hC;AAOnC,UAAA86B,iBAAuBC,KAAAA,kBAAkB;AACzC,UAAAgH,uBAA6B5gB,KAAAA,wBAAwB;AACrD,UAAA6gB,6BAAmCpiC,8BAA8B;AAAE6B,QAAAA;AAAA,QAAAxB,EAAA8hC,CAAAA,MAAAA,wBAAA9hC,SAAAswB,qBAAA;AAE1CwR,WAAAA,qBAAoBE,qBAAsB1R,mBAAmB;AAACtwB,aAAA8hC;AAAA9hC,aAAAswB;AAAAtwB,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAvF,UAAAK,mBAAyBmB;AAA+DI,QAAAA;AAAA5B,QAAAA,EAAA66B,CAAAA,MAAAA,kBAAA76B,SAAA2hB,cAAA3hB,EAAA,CAAA,MAAA+hC,4BAAA;AAE9DA,WAAAA,2BAA0B3B,oBAC9C2B,2BAA0B3B,kBAAA;AAAA,QAAAnE,MAClBpB,eAAcoB;AAAAA,QAAAta;AAAAA,MAAAA,CAEvB,EAAC+f,kBACI;AAAA1hC,aAAA66B;AAAA76B,aAAA2hB;AAAA3hB,aAAA+hC;AAAA/hC,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AALV,UAAAiiC,oBAA0BrgC;AASfQ,UAAAA,KAAA6/B,oBAAoB,oBAAoB;AAGjC,UAAA5/B,MAAC4/B;AAAiBv/B,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAiiC,qBAAAjiC,EAAA,CAAA,MAAA2hB,cAAA3hB,EAAA,CAAA,MAAA+hC,8BAAA/hC,EAAA,EAAA,MAAAo8B,YAAAp8B,EAAA,EAAA,MAAAK,oBAAAL,EAAA,EAAA,MAAAswB,uBAAAtwB,EAAA,EAAA,MAAA6hC,iBAAAxxB,MAAA;AACnB4xB,WAAAA,oBACGF,MAAAA,4BAA0BlB,eAAA;AAAA,QAAAvhC,IAC1BqiB,WAAUriB;AAAAA,QAAA88B;AAAAA,QAAA9L;AAAAA,QAAAjwB;AAAAA,QAG2Ci8B,kBACvCuF,iBAAexxB,QAAA,CAAA;AAAA,MAAY,CAAA,IAAA3O;AAEtC1B,aAAAiiC;AAAAjiC,aAAA2hB;AAAA3hB,aAAA+hC;AAAA/hC,cAAAo8B;AAAAp8B,cAAAK;AAAAL,cAAAswB;AAAA,QAAA,EAAA,IAAAuR,iBAAAxxB;AAAArQ,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACfF,0CAACmE,GAAc,cAAA,EAAA;AAAApH,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA,QAAA5D,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,IAAA;AAZnB,WAAA8B,2BAAA,IAACE,iBACU,OAAA,WACG,UAAArC,IACD,SAAAK,IASTO,UACJ,GAAA,CAAA;AAAajD,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAoC,EAAAA,MAAAA,MAAApC,UAAA4D,IAAA;AAhBIG,0CAACU,GACT,SAAA,EAAA,SAAA,MACF,OAAArC,IACPwB,UAcJ,IAAA;AAAU5D,cAAAoC;AAAApC,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAjBV,UAAAkiC,eAAqBn+B;AAiBVC,QAAAA;AAAAhE,QAAAA,UAAAkiC,cAAA;AAEJl+B,2EACU,aAAA,CAAA;AACdhE,cAAAkiC;AAAAliC,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAFIgE,WAAAA;AAAAA,EAEJ;ACvCMm+B,QAAAA,iCAAiCA,MAAA;AAAA,WAAmCviC,MAAAA,WAAAogC,uBAAkC;AAAA,EAAC;ACG7G,WAAAoC,+BAAAriC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAwC,UAAA;AAAA,MAAA0hB;AAAAA,IAAAA,IAAA5hB;AAK3C,UAAAsrB,qBAA2BtV,KAAAA,sBAAsB;AACjD,UAAA8kB,iBAAuBC,KAAAA,kBAAkB;AACzC,UAAA1K,mBAAyB+R,+BAA+B;AACxD,UAAAJ,6BAAmCpiC,8BAA8B;AAAE6B,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAA66B,eAAAoB,QAAAj8B,EAAA,CAAA,MAAA2hB,cAAA3hB,EAAA,CAAA,MAAA+hC,4BAAA;AAE/CvgC,WAAAugC,2BAA0B3B,kBAAA;AAAA,QAAAnE,MACpCpB,eAAcoB;AAAAA,QAAAta;AAAAA,MAAAA,CAEvB;AAAC,QAAA,CAAA,IAAAkZ,eAAAoB;AAAAj8B,aAAA2hB;AAAA3hB,aAAA+hC;AAAA/hC,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAHF,UAAAqiC,cAAoB7gC;AAGjBI,QAAAA;AAAA,QAAA5B,EAAA2hB,CAAAA,MAAAA,cAAA3hB,SAAA+hC,4BAAA;AAE6BngC,WAAAA,MAAA;AAC5BmgC,oCAA0BlB,eAAA;AAAA,UAAAvhC,IAClBqiB,WAAUriB;AAAAA,UAAAgxB,qBAAA,CAAA;AAAA,QAAA,CAAA;AAAA,MAAA;AAGrBtwB,aAAA2hB;AAAA3hB,aAAA+hC;AAAA/hC,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AALD,UAAAsiC,0BAAgC1gC;AAOhC,UAAA,CAAA2gC,iBAAAC,kBAAA,IAA8CnhC,MAAAA,cAAc;AAAEe,QAAAA;AAAApC,QAAAA,EAAA2hB,CAAAA,MAAAA,cAAA3hB,SAAAowB,oBAAApwB,EAAA,CAAA,MAAAqrB,oBAAA;AAErCjpB,WAAAA,MAAA;AACrBguB,0BAAgB4B,iBAAA;AAAA,UAAA1yB,IAAyBqiB,WAAUriB;AAAAA,QAAAA,CAAA,EAAA8Q,KAAA,MAAA;AAC/CoyB,kCAAwB;AACxBnX,6BAAkBvY,KAAA;AAAA,YAAAwD,SACL;AAAA,YAAoBD,MACvB;AAAA,UAAA,CACT;AAAA,QAAA,CAAC;AAAA,MAAA;AAETrW,aAAA2hB;AAAA3hB,aAAAowB;AAAApwB,aAAAqrB;AAAArrB,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AARD,UAAAgyB,mBAAyB5vB;AAQvBC,QAAAA;AAAA,QAAArC,EAAA,EAAA,MAAAqiC,YAAAV,mBAAA;AAKOt/B,WAAAggC,YAAWV,qBACRn9B,2BAAAA,IAACi+B,GAAAA,QACY,wCAAC/9B,iBACN,UAACF,2BAAA,IAAAk+B,GAAA,cAAA,EAAmB,MAAA,QAAO,CAAA,GAC/B,GAEA,UAAA59B,2BAAA,KAAC69B,eACU,aACE,SAAA/7B,CAAA,UAAA;AACLA,cAAKuR,eAAgB;AACrBvR,cAAKwR,gBAAiB;AACtBoqB,+BAAuB;AAAA,MAE3B,GAAA,UAAA;AAAA,QAAAh+B,2BAAA,IAACqjB,GAAU,YAAA,EAAA;AAAA,QAAE;AAAA,MAAA,EAAA,CAEjB,EAEJ,CAAA;AAAO,QAAA,EAAA,IAAAwa,YAAAV;AAAA3hC,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA1C,QAAAA,UAAAsiC,2BAAAtiC,EAAAqiC,EAAAA,MAAAA,YAAAX,iBAAA;AAIVh/B,WAAA2/B,YAAWX,mBACPl9B,2BAAAA,IAAAE,GAAAA,YAAA,EACY,SAAAk+B,CAAA,YAAA;AACmB,gCAAA;AAAA,MAAA,GAE5B,UAAAp+B,2BAAAA,IAAC4C,GAAmB,cAAA,EAAA,MAAA,QAAO,CAAA,GAC/B;AAAapH,cAAAsiC;AAAA,QAAA,EAAA,IAAAD,YAAAX;AAAA1hC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAA,QAAAjD,EAAAqC,EAAAA,MAAAA,MAAArC,UAAA0C,IAAA;AA5BrBO,2CAAA,OACKZ,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QAqBAK;AAAAA,MAAAA,GAOL;AAAM1C,cAAAqC;AAAArC,cAAA0C;AAAA1C,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAAG,QAAAA;AAAA,QAAA/D,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAKQS,WAAAA,MAAM4+B,wBAAwB;AACjCz+B,iEAAE,UAAuB,0BAAA,CAAA;AAAG/D,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAH,WAAA5D,EAAA,EAAA;AAAA+D,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAAAgE,QAAAA;AAAA,QAAAhE,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAC7Ba,WAAEc,2BAAA,KAAAyR,qBAAA,EAAA,UAAA;AAAA,QAAA;AAAA,QAAW/R,2BAAAA,IAAA,OAAG,UACH,sBAAA,CAAA;AAAA,QACU;AAAA,MAAA,GAAA;AAAGxE,cAAAgE;AAAAA,IAAAA,OAAA;AAAAA,WAAAhE,EAAA,EAAA;AAAA,IAAA;AAAAiE,QAAAA;AAAA,QAAAjE,EAAAgyB,EAAAA,MAAAA,oBAAAhyB,UAAAuiC,iBAAA;AAPnC,YAAA/9B,2BAAAA,IAAAsjB,KAAAA,oBACSya,EAAAA,MAAAA,iBACIvQ,UAAe,kBACf,UAAApuB,IACH,OAAAG,IACD,MAAAC,GAE6B,CAAA;AAAAhE,cAAAgyB;AAAAhyB,cAAAuiC;AAAAviC,cAAAiE;AAAAA,IAAAA,OAAA;AAAAA,YAAAjE,EAAA,EAAA;AAAA,IAAA;AAAAkE,QAAAA;AAAA,QAAAlE,EAAAiE,EAAAA,MAAAA,OAAAjE,UAAAiD,IAAA;AAxCpCiB,YAEHjB,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,QAAAA;AAAAA,QA+BAgB;AAAAA,MAAAA,GAOuC;AACxCjE,cAAAiE;AAAAjE,cAAAiD;AAAAjD,cAAAkE;AAAAA,IAAAA,OAAA;AAAAA,YAAAlE,EAAA,EAAA;AAAA,IAAA;AAzCIkE,WAAAA;AAAAA,EAyCJ;AChFA,WAAA2+B,2BAAA9iC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAoC,UAAA;AAAA,MAAAuN;AAAAA,MAAAs1B;AAAAA,MAAApqB;AAAAA,MAAA4X;AAAAA,MAAA3O;AAAAA,MAAAkgB;AAAAA,IAAAA,IAAA9hC;AAkBvC,UAAAgiC,6BAAmCpiC,8BAA8B;AAO1C6B,UAAAA,KAAAshC,UAAU,iCAAiC;AAAQlhC,QAAAA;AAAA5B,QAAAA,EAAA2hB,CAAAA,MAAAA,cAAA3hB,SAAA+hC,8BAAA/hC,EAAA,CAAA,MAAAswB,uBAAAtwB,EAAA0Y,CAAAA,MAAAA,YAAA1Y,EAAAwN,CAAAA,MAAAA,eAAAxN,EAAA,CAAA,MAAA6hC,gBAAAxxB,MAAA;AACrDzO,WAAAA,MAAA;AACLmgC,mCAA0Bb,aAAA;AAAA,UAAA1zB;AAAAA,UAAAkL;AAAAA,UAAAiZ,oBAGFhQ,WAAUriB;AAAAA,UAAAgxB;AAAAA,UAAA3O;AAAAA,UAAA2a,kBAGZuF,gBAAexxB,QAAA,CAAA;AAAA,QAAA,CACpC;AAAA,MAAC;AACLrQ,aAAA2hB;AAAA3hB,aAAA+hC;AAAA/hC,aAAAswB;AAAAtwB,aAAA0Y;AAAA1Y,aAAAwN;AAAA,QAAA,CAAA,IAAAq0B,gBAAAxxB;AAAArQ,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;0CAEAiE,GAAAA,cAAmB,EAAA,MAAA,QAAU,CAAA;AAAApH,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAA4B,IAAA;AAhBtCS,WAACmC,2BAAAA,IAAAC,GAAA,SAAA,EACY,eACF,OAAA,QACP,UAAAD,+BAACE,GAAAA,YACc,EAAA,WAAAlD,IACF,SAAAI,IAUH,MAAA,SACNQ,aACJ,CAAA,GACJ;AAAUpC,aAAAwB;AAAAxB,aAAA4B;AAAA5B,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AAlBVqC,WAAAA;AAAAA,EAkBU;ACxCX,WAAA0gC,2BAAAhjC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAoC,UAAA;AAAA,MAAAqwB;AAAAA,MAAA3O;AAAAA,MAAAkgB;AAAAA,IAAAA,IAAA9hC;AAYvC,UAAA86B,iBAAuBC,KAAAA,kBAAkB;AACzC,UAAAiH,6BAAmCpiC,8BAA8B;AACjE,UAAAsiC,oBAA0BF,2BAA0B3B,oBAC9C2B,2BAA0B3B,kBAAA;AAAA,MAAAnE,MAClBpB,eAAcoB;AAAAA,MAAAta;AAAAA,IAAAA,CAEvB,EAAC+f,kBACI;AAKKlgC,UAAAA,KAAAygC,oBAAoB,qBAAqB;AAAiDrgC,QAAAA;AAAA,QAAA5B,EAAA2hB,CAAAA,MAAAA,cAAA3hB,SAAA+hC,8BAAA/hC,EAAA,CAAA,MAAAswB,uBAAAtwB,EAAA6hC,CAAAA,MAAAA,gBAAAxxB,MAAA;AAIpFzO,WAAAA,MAAA;AACLmgC,mCAA0Bb,aAAA;AAAA,UAAAvP,oBACFhQ,WAAUriB;AAAAA,UAAAgxB;AAAAA,UAAArS,wBAEN+kB,+BAA0BrhB,UAAU;AAAA,UAACA;AAAAA,UAAA2a,kBAE3CuF,gBAAexxB;AAAAA,QAAAA,CACpC;AAAA,MAAC;AACLrQ,aAAA2hB;AAAA3hB,aAAA+hC;AAAA/hC,aAAAswB;AAAA,QAAA,CAAA,IAAAuR,gBAAAxxB;AAAArQ,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAA,QAAApC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;0CACA0b,GAAAA,SAAe,EAAA,OAAA,UAAY,CAAA;AAAA7e,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,SAAA4B,IAAA;AAZhCS,iDACe,EAAA,WAAA,wLAEF,SAAAT,IASTQ,UACJ,IAAA;AAAMpC,aAAA4B;AAAA5B,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAAwB,CAAAA,MAAAA,MAAAxB,SAAAqC,IAAA;AAhBVK,0CAAC+B,GACY,SAAA,EAAA,SAAA,MACF,OAAAjD,IACPa,UAcJ,IAAA;AAAUrC,aAAAwB;AAAAxB,aAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAjBV0C,WAAAA;AAAAA,EAiBU;ACzCX,WAAAugC,sBAAA;AAAAjjC,UAAAA,IAAAC,uBAAA,CAAA;AACH,UAAA8hC,6BAAmCpiC,8BAA8B;AAAEI,QAAAA;AAAAC,QAAAA,SAAA+hC,4BAAA;AAI9ChiC,WAAAA,MAAMgiC,2BAA0BT,iBAAA;AAAA,QAAAhR,qBAAA,CAAA;AAAA,QAAAsQ,UAAA;AAAA,QAAAS,aAGxB;AAAA,MAAA,CAChB;AAACrhC,aAAA+hC;AAAA/hC,aAAAD;AAAAA,IAAAA,OAAA;AAAAA,WAAAC,EAAA,CAAA;AAAA,IAAA;AAAAwB,QAAAA;AAAA,QAAAxB,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACN3B,0CAACqd,GAAS,SAAA,EAAA;AAAA7e,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAA5B,QAAAA,SAAAD,IAAA;AAGZ,WAAAyE,2BAAA,IAAA,OAXiB,EAAA,WAAA,uDACnB,UAAAM,2BAAA,KAACwM,GAAkB,QAAA,EAAA,WAAA,aACF,SAAA,YACA,SAAAvR,IAKbyB,UAAAA;AAAAA,QAAAA;AAAAA,QAAU;AAAA,MAAA,EAAA,CAEd,EACJ,CAAA;AAAMxB,aAAAD;AAAAC,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAXC4B,WAAAA;AAAAA,EAWD;ACPH,WAAAshC,4BAAAnjC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAqC,UAAA;AAAA,MAAAqwB;AAAAA,MAAA3O;AAAAA,MAAAkgB;AAAAA,IAAAA,IAAA9hC;AAOxC,UAAA86B,iBAAuBC,KAAAA,kBAAkB;AACzC,UAAAiH,6BAAmCpiC,8BAA8B;AACjE,UAAAywB,mBAAyB+R,+BAA+B;AACxD,UAAA9W,qBAA2BtV,KAAAA,sBAAsB;AAAEvU,QAAAA;AAAAxB,QAAAA,EAAA66B,CAAAA,MAAAA,kBAAA76B,SAAA2hB,cAAA3hB,EAAA,CAAA,MAAA+hC,4BAAA;AAEzBA,WAAAA,2BAA0B3B,oBAC9C2B,2BAA0B3B,kBAAA;AAAA,QAAAnE,MAClBpB,eAAcoB;AAAAA,QAAAta;AAAAA,MAAAA,CAEvB,EAAC+f,kBACI;AAAA1hC,aAAA66B;AAAA76B,aAAA2hB;AAAA3hB,aAAA+hC;AAAA/hC,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AALV,UAAAiiC,oBAA0BzgC;AAO1B,QAAA2hC,0BAAA;AACI,QAAA,CAACvwB,MAAMwwB,gBAAgBvB,gBAAewB,YAAa,GAAGD,gBAAgBzhB,WAAUoL,aAAc,CAAC,KAAC,CAC/Fna,MAAMwwB,gBAAgBvB,gBAAeyB,MAAO,GAAGF,gBAAgBzhB,WAAUqL,WAAY,CAAC,GAAC;AAIzE,YAAAprB,MAAAigC,gBAAeyB,UAAWzB,gBAAewB,eAAgB,iCAAiC;AAA+BjhC,UAAAA;AAAApC,UAAAA,EAAA2hB,CAAAA,MAAAA,cAAA3hB,EAAAowB,CAAAA,MAAAA,oBAAApwB,EAAAswB,CAAAA,MAAAA,uBAAAtwB,SAAAqrB,sBAAArrB,EAAA,CAAA,MAAA6hC,gBAAAwB,gBAAArjC,EAAA,CAAA,MAAA6hC,gBAAAyB,QAAA;AAKnHlhC,cAAAA,MAAMguB,kBAAgBwM,eAAA;AAAA,UAAAt9B,IAEnBqiB,WAAUriB;AAAAA,UAAAgxB;AAAAA,UAAAuM,gBAEE3Z,eAAUvB,YAAiC;AAAA,YAAAoL,eAEpC8U,gBAAewB,gBAAqB;AAAA,YAAArW,aACtC6U,gBAAeyB,UAAA;AAAA,UAC/B,CAAA;AAAA,QAAA,CAAC,EAAAlzB,KAAA,MAAA;AAENib,6BAAkBvY,KAAA;AAAA,YAAAuD,MACR;AAAA,YAASC,SACN;AAAA,UAAA,CACZ;AAAA,QAAA,CAAC;AACJtW,eAAA2hB;AAAA3hB,eAAAowB;AAAApwB,eAAAswB;AAAAtwB,eAAAqrB;AAAA,UAAA,CAAA,IAAAwW,gBAAAwB;AAAA,UAAA,CAAA,IAAAxB,gBAAAyB;AAAAtjC,gBAAAoC;AAAAA,MAAAA,OAAA;AAAAA,cAAApC,EAAA,EAAA;AAAA,MAAA;AAAAqC,UAAAA;AAAA,UAAArC,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACNd,4CAACkhC,GAAU,UAAA,EAAA;AAAAvjC,gBAAAqC;AAAAA,MAAAA,OAAA;AAAAA,aAAArC,EAAA,EAAA;AAAA,MAAA;AAAA0C,UAAAA;AAAA1C,UAAAA,UAAAoC,KAAA;AAnBf,aAAAoC,2BAAAA,IAAC8M,GAAAA,QACU,EAAA,OAAA,WACD,MAAA,SACG,SAAA,YACA,SAAAlP,KAeTC,UACJ,GAAA,CAAA;AAASrC,gBAAAoC;AAAApC,gBAAA0C;AAAAA,MAAAA,OAAA;AAAAA,aAAA1C,EAAA,EAAA;AAAA,MAAA;AAAAiD,UAAAA;AAAA,UAAAjD,EAAA4B,EAAAA,MAAAA,OAAA5B,UAAA0C,IAAA;AAvBbO,4CAACwB,GACY,SAAA,EAAA,SAAA,MACF,OAAA7C,KACPc,UAqBJ,IAAA;AAAU1C,gBAAA4B;AAAA5B,gBAAA0C;AAAA1C,gBAAAiD;AAAAA,MAAAA,OAAA;AAAAA,aAAAjD,EAAA,EAAA;AAAA,MAAA;AAAA4D,UAAAA;AAAA,UAAA5D,EAAA,EAAA,MAAA2hB,WAAAoL,iBAAA/sB,EAAA2hB,EAAAA,MAAAA,WAAAqL,eAAAhtB,UAAA6hC,iBAAA;AAETj+B,cAAC+d,WAAUoL,iBAAkBpL,WAAUqL,gBAAiBxoB,+BAACC,GAAAA,WAC/C,OAAA,oCACP,UAACD,+BAAA8M,GAAAA,QAAA,EACU,OAAA,WACD,MAAA,SACG,SAAA,QACA,SAAA,MAAA;AACLuwB,0BAAe2B,cAAA;AAAA,cACX7hB,YAAUoL,eAAA;AACK0W,4BAAAA,kBAAmB9hB,YAAUoL,aAAA;AAAA,UAAA;AAAA,cAC5CpL,YAAUqL,aAAA;AACK0W,4BAAAA,YAAa/hB,YAAUqL,WAAA;AAAA,UAAA;AAAA,QAAA,GAE9C,UAAAxoB,2BAAAA,IAACm/B,GAAAA,UAAQ,CAAA,CAAA,EAAA,CACb,EACJ,CAAA;AAAU,UAAA,EAAA,IAAAhiB,WAAAoL;AAAA,UAAA,EAAA,IAAApL,WAAAqL;AAAAhtB,gBAAA6hC;AAAA7hC,gBAAA4D;AAAAA,MAAAA,OAAA;AAAAA,aAAA5D,EAAA,EAAA;AAAA,MAAA;AAAA+D,UAAAA;AAAA,UAAA/D,EAAAiD,EAAAA,MAAAA,MAAAjD,UAAA4D,IAAA;AA1CYG,aACtBd,2BAAAA,KAAAA,qBAAAA,EAAAA,UAAAA;AAAAA,UAAAA;AAAAA,UA0BCW;AAAAA,QAAAA,GAeS;AACX5D,gBAAAiD;AAAAjD,gBAAA4D;AAAA5D,gBAAA+D;AAAAA,MAAAA,OAAA;AAAAA,aAAA/D,EAAA,EAAA;AAAA,MAAA;AA3CuBmjC,gCAAAA;AAAAA,IAAAA;AA+CzB,UAAAvhC,KAAAqgC,qBAAqBkB;AAAuB/gC,QAAAA;AAAApC,QAAAA,UAAA4B,IAAA;AAD1CQ,iEACFR,UAA4C,GAAA,CAAA;AAC9C5B,cAAA4B;AAAA5B,cAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,EAAA;AAAA,IAAA;AAFIoC,WAAAA;AAAAA,EAEJ;AAIP,WAASghC,gBAAgBQ,GAA2B;AAChD,QAAIA,KAAKp1B,OAAOC,KAAKm1B,CAAC,EAAE98B,WAAW,EACxB88B,QAAAA;AACX,WAAOA,KAAK;AAAA,EAChB;ACnFO,WAAAC,kBAAA9jC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAA2B,UAAA;AAAA,MAAA8C;AAAAA,MAAA+gC;AAAAA,IAAAA,IAAA/jC;AAGqC,QAAA,CAE9D+jC,QAAO7iB,WAAA8Z,oBAAA;AAAA,YACFtwB,MAAM,yCAAyC;AAAA,IAAA;AAEzD,UAAAowB,iBAAuBC,KAAAA,kBAAkB;AAEzC,UAAAiH,6BAAmCpiC,8BAA8B;AAAE6B,QAAAA;AAAA,QAAAxB,EAAA66B,CAAAA,MAAAA,kBAAA76B,SAAA+hC,4BAAA;AACtCA,WAAAA,2BAA0B3B,oBACjD2B,2BAA0B3B,kBAAA;AAAA,QAAAnE,MAClBpB,eAAcoB;AAAAA,MAAAA,CACvB,EAACwF,oBACI;AAAAzhC,aAAA66B;AAAA76B,aAAA+hC;AAAA/hC,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAJV,UAAA+jC,uBAA6BviC;AAIlBI,QAAAA;AAAA,QAAA5B,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAGUvB,WAAAqE,OAAI,0BAA0B;AAACjG,aAAA4B;AAAAA,IAAAA,OAAA;AAAAA,WAAA5B,EAAA,CAAA;AAAA,IAAA;AAAAoC,QAAAA;AAAApC,QAAAA,EAAA+jC,CAAAA,MAAAA,wBAAA/jC,SAAA+hC,8BAAA/hC,EAAA,CAAA,MAAA+C,OAAA;AACjCX,WAAA2/B,8BAA8BgC,uBAC3BhC,MAAAA,2BAA0BT,iBAAA;AAAA,QAAA5yB,eACf3L,QAAK;AAAA,UAAAA;AAAAA,QAAArB,IAAAA;AAAAA,QAAwB4uB,qBAAA,CAAA;AAAA,QAAAsQ,UAAA;AAAA,QAAAS,aAG/B;AAAA,MAChB,CAAA,IAAC3/B;AACS1B,aAAA+jC;AAAA/jC,aAAA+hC;AAAA/hC,aAAA+C;AAAA/C,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAIbd,WAACmC,2BAAA,IAAAqa,YAAA,EAAc,OAAA,WAAgB,MAAA,SAAU;AAAA7e,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACzC,WAAAqB,2BAAAA,IAACJ,GAAAA,YAAiB,EAAA,OAAA,WACG,SAAA,WACE,WAAA,eAAoC,UAAA2I,qBAAAA,YAAe,EAAA,CAAA;AAAa/M,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,UAAA+jC,sBAAA;AAEtF9gC,WAAC8gC,CAAAA,wBACEv/B,2BAAAA,IAACJ,GAAoB,YAAA,EAAA,SAAA,WAAW,UACjB,oDAAA;AAAapE,cAAA+jC;AAAA/jC,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA4D,QAAAA;AAAA5D,QAAAA,UAAAiD,IAAA;kDARtB,EAAA,WAAA,qEACVZ,UAAAA;AAAAA,QAAAA;AAAAA,QACAK;AAAAA,QAICO;AAAAA,MAAAA,GAIL;AAAMjD,cAAAiD;AAAAjD,cAAA4D;AAAAA,IAAAA,OAAA;AAAAA,WAAA5D,EAAA,EAAA;AAAA,IAAA;AAAA+D,QAAAA;AAAA,QAAA/D,EAAAoC,EAAAA,MAAAA,MAAApC,UAAA4D,IAAA;AArBVG,0CAAC2mB,GAAgB,MAAA,EAAA,WAAA9oB,IACF,SAAAQ,IASXwB,UAaJ,IAAA;AAAO5D,cAAAoC;AAAApC,cAAA4D;AAAA5D,cAAA+D;AAAAA,IAAAA,OAAA;AAAAA,WAAA/D,EAAA,EAAA;AAAA,IAAA;AAvBP+D,WAAAA;AAAAA,EAuBO;AC4BR,WAAAigC,0BAAAjkC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AACN,UAAA;AAAA,MAAAkgC;AAAAA,MAAAC;AAAAA,MAAAjgC;AAAAA,MAAAk8B;AAAAA,MAAAgE;AAAAA,MAAA9S;AAAAA,MAAA8C;AAAAA,MAAAliB;AAAAA,MAAAmyB;AAAAA,MAAA99B;AAAAA,IAAAA,IAAAzC;AAW4CyB,QAAAA;AAAA,QAAAxB,EAAAmgC,CAAAA,MAAAA,8BAAAngC,SAAAqwB,uBAAArwB,EAAA,CAAA,MAAAwC,cAAAxC,SAAAogC,qBAAApgC,EAAAq8B,CAAAA,MAAAA,aAAAr8B,SAAAmO,WAAAnO,EAAA,CAAA,MAAAqgC,sBAAArgC,EAAAutB,CAAAA,MAAAA,WAAAvtB,EAAA,CAAA,MAAAsgC,oBAAAtgC,SAAAG,gBAAA;AAK3B,WAAA;AAAA,QAAA8jC,WAAA/D;AAAAA,QAAA3e,OAAA;AAAA,UAAA4e;AAAAA,UAAAC;AAAAA,UAAA/P;AAAAA,UAAAlwB;AAAAA,UAAAk8B;AAAAA,UAAAgE;AAAAA,UAAA9S;AAAAA,UAAApf;AAAAA,UAAAmyB;AAAAA,UAAA99B;AAAAA,QAAAA;AAAAA,MAAA;AAcTxC,aAAAmgC;AAAAngC,aAAAqwB;AAAArwB,aAAAwC;AAAAxC,aAAAogC;AAAApgC,aAAAq8B;AAAAr8B,aAAAmO;AAAAnO,aAAAqgC;AAAArgC,aAAAutB;AAAAvtB,aAAAsgC;AAAAtgC,aAAAG;AAAAH,cAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,EAAA;AAAA,IAAA;AAAA4B,QAAAA;AAAAQ,QAAAA;AAAA,QAAApC,EAAA,EAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACS,WAAA;AAAA,QAAA+gC,kDACc,qBAAqB,EAAA;AAAA,QAAAC,wDACf,aAAa,EAAA;AAAA,QAAAC,mBAAAhC;AAAAA,QAAAiC,iBAAAR;AAAAA,MAAA;AAK3B,WAAA;AAAA,QAAAS,wBAAApB;AAAAA,QAAAkB,mBAAAxC;AAAAA,QAAA2C,cAAA1B;AAAAA,QAAA2B,oBAAAzB;AAAAA,MAAA;AAKf/iC,cAAA4B;AAAA5B,cAAAoC;AAAAA,IAAAA,OAAA;AAAAR,WAAA5B,EAAA,EAAA;AAAAoC,WAAApC,EAAA,EAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,UAAAmgC,2BAAAlH,WAAAj5B,UAAAwB,IAAA;AA9BE,WAAA;AAAA,QAAA2X,KACE;AAAA,QAAmB8f,SACfkH,2BAA0BlH;AAAAA,QAAAwL,UACzBjjC;AAAAA,QAcTkjC,UACS9iC;AAAAA,QAMT+iC,gBACeviC;AAAAA,MAKf;AACJ,QAAA,EAAA,IAAA+9B,2BAAAlH;AAAAj5B,cAAAwB;AAAAxB,cAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,EAAA;AAAA,IAAA;AA/BMqC,WAAAA;AAAAA,EA+BN;AAGE,WAAAuiC,YAAA7kC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAEH,UAAAghB,aAAmBC,KAAAA,wBAAwB;AACtCD,QAAAA,CAAAA,WAAU8Z,oBAAA;AAAA,YACLtwB,MAAM,yCAAyC;AAAA,IAAA;AAEzD,UAAAowB,iBAAuBC,KAAAA,kBAAkB;AAEzC,UAAAiH,6BAAmCpiC,8BAA8B;AAAE6B,QAAAA;AAAA,QAAAxB,EAAA66B,CAAAA,MAAAA,kBAAA76B,SAAA+hC,4BAAA;AACtCA,WAAAA,2BAA0B3B,oBACjD2B,2BAA0B3B,kBAAA;AAAA,QAAAnE,MAClBpB,eAAcoB;AAAAA,MAAAA,CACvB,EAACwF,oBACI;AAAAzhC,aAAA66B;AAAA76B,aAAA+hC;AAAA/hC,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAJV,UAAA+jC,uBAA6BviC;AAMzB,QAAA,CAACyf,WAAUua,gBAAiBva,WAAUO,eAAA,CAAA,GAAkB1a,SAAY,GAAA;AAAA,aAAA;AAAA,IAAA;AAAAlF,QAAAA;AAAAQ,QAAAA;AAAA,QAAApC,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AAOhEvB,0CAACwC,GAAoB,YAAA,EAAA,SAAA,aAAwB,WAAA,aAAa,UAAoB,wBAAA;0CAC7EA,GAAAA,cAAW,UAGZ,kIAAA,CAAA;AAAapE,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAR,WAAA5B,EAAA,CAAA;AAAAoC,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAA,QAAArC,EAAA+jC,CAAAA,MAAAA,wBAAA/jC,SAAA+hC,4BAAA;AACZgC,WAAAA,wDAAyBzyB,WACb,EAAA,SAAAywB,8BAA8BgC,uBAC3BhC,MAAAA,2BAA0BT,iBAAA;AAAA,QAAAhR,qBAAA,CAAA;AAAA,QAAAsQ,UAAA;AAAA,QAAAS,aAGjB;AAAA,MAAA,CAChB,IAAC3/B,QAEN,UAAA;AAAA,QAAA8C,2BAAA,IAACqa,GAAS,SAAA,EAAA;AAAA,QAAA;AAAA,MAAA,GACd;AAAS7e,aAAA+jC;AAAA/jC,aAAA+hC;AAAA/hC,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAA,CAAA,MAAAkD,OAAAC,IAAA,2BAAA,GAAA;AACTT,WAAC8B,2BAAA,IAAAJ,eAAA,EAAkB,OAAA,aAAa,UAEhC,qDAAA;AAAapE,aAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,CAAA;AAAA,IAAA;AAAAiD,QAAAA;AAAAjD,QAAAA,SAAAqC,IAAA;AAnBjB,WAAAyC,2BAAA,KAAC4M,GACc,OAAA,EAAA,WAAA,2EACX9P,UAAAA;AAAAA,QAAAA;AAAAA,QACAQ;AAAAA,QAICC;AAAAA,QAUDK;AAAAA,MAAAA,GAGJ;AAAQ1C,aAAAqC;AAAArC,cAAAiD;AAAAA,IAAAA,OAAA;AAAAA,WAAAjD,EAAA,EAAA;AAAA,IAAA;AApBRiD,WAAAA;AAAAA,EAoBQ;ACrJH4hC,QAAAA,mBAAmBA,CAACC,iBACAC,oBACAC,qBAC5B;AAEKC,UAAAA,iBAAiBA,CAACpO,MAA2B;AAC/CrE,WAAAA,uBAAuBqE,EAAE5d,UAAwB;AAC/CgU,QAAAA,gBAAgB7e,QAAQ62B,cAAc;AAAA,IAC5C;AACMC,UAAAA,oBAAoBH,sBAAsB,CAAE;AAClDG,sBAAkB92B,QAAQ62B,cAAc;AAEhC5f,YAAAA,MAAM,kCAAkCyf,eAAe;AACvDzf,YAAAA,MAAM,qCAAqC6f,iBAAiB;AACpE,UAAM9pB,SAAS+pB,KAAAA,oBAAoBL,iBAAiBI,mBAAmB,CAAA,GAAIF,gBAAgB;AAG3F5pB,WAAOgqB,KAAK,CAAC9rB,GAAGC,MAAMurB,gBAAgBO,UAAUxO,OAAKA,EAAEv3B,OAAOga,EAAEha,EAAE,IAAIwlC,gBAAgBO,UAAUxO,CAAAA,MAAKA,EAAEv3B,OAAOia,EAAEja,EAAE,CAAC;AAE3G+lB,YAAAA,MAAM,8BAA8BjK,MAAM;AAC3CA,WAAAA;AAAAA,EACX;AC7BO,WAAAkqB,uBAAAvlC,IAAA;AAAAC,UAAAA,IAAAC,uBAAA,EAAA;AAAgC,UAAA;AAAA,MAAAP,MAAA6lC;AAAAA,IAAAA,IAAAxlC;AAGnC,UAAAkhB,aAAmBC,KAAAA,wBAAwB;AAC3CxhB,UAAAA,OAAa8lC,eAAeD,QAAQ;AAAE/jC,QAAAA;AAAA,QAAAxB,EAAAihB,CAAAA,MAAAA,cAAAjhB,SAAAulC,UAAA;AACVtkB,WAAAA,WAAUwkB,uBAAwBF,QAAQ;AAACvlC,aAAAihB;AAAAjhB,aAAAulC;AAAAvlC,aAAAwB;AAAAA,IAAAA,OAAA;AAAAA,WAAAxB,EAAA,CAAA;AAAA,IAAA;AAAvE,UAAAswB,sBAA4B9uB;AAC5B,UAAAN,mBAAyBvB,8BAA8B;AAEjC,UAAAiC,KAA0B,6BAAGlC;AAAI0C,QAAAA;AAAApC,QAAAA,SAAA4B,IAAA;AAAnD,WAAA4C,2BAAAA,IAAC86B,KAAAA,WAAiB,EAAA,OAAA19B,GAAoC,CAAA;AAAA5B,aAAA4B;AAAA5B,aAAAoC;AAAAA,IAAAA,OAAA;AAAAA,WAAApC,EAAA,CAAA;AAAA,IAAA;AAAAqC,QAAAA;AAAArC,QAAAA,EAAAkB,CAAAA,MAAAA,oBAAAlB,SAAAswB,uBAAAtwB,EAAA,CAAA,MAAAN,MAAA;0CACrD4R,aAAkB,WAAA,QAAiB,SAAA,YACtB,MAAA,SACG,SAAA,MAAA;AACLpQ,yBAAgBogC,iBAAA;AAAA,UAAA5yB,eAAA;AAAA,YAAAhP;AAAAA,YAAAD,MACiBugB,eAAUtgB,IAAI;AAAA,UAAC;AAAA,UAAA4wB;AAAAA,UAAAsQ,UAAA;AAAA,UAAAS,aAG/B;AAAA,QAAA,CAChB;AAAA,MAAA,GACF,UAEX,UAAA;AAASrhC,aAAAkB;AAAAlB,aAAAswB;AAAAtwB,aAAAN;AAAAM,aAAAqC;AAAAA,IAAAA,OAAA;AAAAA,WAAArC,EAAA,CAAA;AAAA,IAAA;AAAA0C,QAAAA;AAAA,QAAA1C,EAAAoC,CAAAA,MAAAA,MAAApC,UAAAqC,IAAA;AACP,WAAAyC,2BAAA,KAAA,OAdiB,EAAA,WAAA,kCACnB1C,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,MAAAA,GAYJ;AAAMrC,aAAAoC;AAAApC,cAAAqC;AAAArC,cAAA0C;AAAAA,IAAAA,OAAA;AAAAA,WAAA1C,EAAA,EAAA;AAAA,IAAA;AAdC0C,WAAAA;AAAAA,EAcD;AAQV,WAAS8iC,eAAe9lC,MAAsB;AACpCgmC,UAAAA,WAAWhmC,KAAKsrB,MAAM,GAAG;AACxB0a,WAAAA,SAASA,SAAS5+B,SAAS,CAAC;AAAA,EACvC;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/ui/collection_editor/CollectionYupValidation.tsx","../src/useCollectionEditorController.tsx","../src/ui/collection_editor/LayoutModeSwitch.tsx","../src/ui/collection_editor/CollectionDetailsForm.tsx","../src/ui/collection_editor/util.ts","../src/ui/collection_editor/EnumForm.tsx","../src/ui/collection_editor/SwitchControl.tsx","../src/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/StringPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx","../src/ui/collection_editor/properties/validation/ValidationPanel.tsx","../src/ui/collection_editor/properties/EnumPropertyField.tsx","../src/ui/collection_editor/properties/StoragePropertyField.tsx","../src/utils/entities.ts","../src/ui/collection_editor/PropertyFieldPreview.tsx","../src/ui/collection_editor/PropertyTree.tsx","../src/ui/collection_editor/properties/MapPropertyField.tsx","../src/ui/collection_editor/properties/RepeatPropertyField.tsx","../src/ui/collection_editor/properties/CommonPropertyFields.tsx","../src/ui/collection_editor/properties/StringPropertyField.tsx","../src/ui/collection_editor/properties/BooleanPropertyField.tsx","../src/ui/collection_editor/properties/BlockPropertyField.tsx","../src/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx","../src/ui/collection_editor/properties/NumberPropertyField.tsx","../src/ui/collection_editor/properties/ReferencePropertyField.tsx","../src/ui/collection_editor/properties/DateTimePropertyField.tsx","../src/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx","../src/ui/collection_editor/properties/KeyValuePropertyField.tsx","../src/ui/collection_editor/utils/update_property_for_widget.ts","../src/ui/collection_editor/properties/UrlPropertyField.tsx","../src/ui/collection_editor/utils/supported_fields.tsx","../src/ui/collection_editor/properties/MarkdownPropertyField.tsx","../src/ui/collection_editor/PropertyEditView.tsx","../src/ui/collection_editor/utils/strings.ts","../src/ui/collection_editor/GetCodeDialog.tsx","../src/ui/collection_editor/CollectionPropertiesEditorForm.tsx","../src/ui/collection_editor/UnsavedChangesDialog.tsx","../src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx","../src/ui/collection_editor/SubcollectionsEditTab.tsx","../src/ui/collection_editor/templates/products_template.ts","../src/ui/collection_editor/templates/blog_template.ts","../src/ui/collection_editor/templates/users_template.ts","../src/ui/collection_editor/templates/pages_template.ts","../src/ui/collection_editor/CollectionEditorWelcomeView.tsx","../src/ui/collection_editor/import/CollectionEditorImportMapping.tsx","../src/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx","../src/ui/collection_editor/import/clean_import_data.ts","../src/ui/collection_editor/CollectionEditorDialog.tsx","../src/ConfigControllerProvider.tsx","../src/ui/EditorCollectionAction.tsx","../src/useCollectionsConfigController.tsx","../src/ui/HomePageEditorCollectionAction.tsx","../src/ui/CollectionViewHeaderAction.tsx","../src/ui/PropertyAddColumnComponent.tsx","../src/ui/NewCollectionButton.tsx","../src/ui/EditorCollectionActionStart.tsx","../src/ui/NewCollectionCard.tsx","../src/useCollectionEditorPlugin.tsx","../src/utils/collections.ts","../src/ui/MissingReferenceWidget.tsx"],"sourcesContent":["import * as Yup from \"yup\";\n\nexport const YupSchema = Yup.object().shape({\n id: Yup.string().required(\"Required\"),\n name: Yup.string().required(\"Required\"),\n path: Yup.string().required(\"Required\")\n});\n","import { useContext } from \"react\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorContext } from \"./ConfigControllerProvider\";\n\n/**\n * Hook to access the collection editor controller.\n * The methods in this controller can be used to open the collection editor dialog.\n */\nexport const useCollectionEditorController = (): CollectionEditorController => useContext(CollectionEditorContext);\n","import { Card, cls, SquareIcon, Tooltip, Typography, VerticalSplitIcon } from \"@firecms/ui\";\n\nexport function LayoutModeSwitch({\n value,\n onChange,\n className\n }: {\n value: \"side_panel\" | \"full_screen\";\n onChange: (value: \"side_panel\" | \"full_screen\") => void;\n className?: string;\n}) {\n\n return <div className={cls(className)}>\n <Typography variant={\"label\"} color={\"secondary\"} className={\"ml-3.5\"}>Document view</Typography>\n <div className={cls(\"flex flex-row gap-4\")}>\n\n <Tooltip title={\"Documents are open in a side panel\"}>\n <Card\n onClick={() => onChange(\"side_panel\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"side_panel\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <VerticalSplitIcon/>\n <Typography variant={\"label\"}>\n Side panel\n </Typography>\n </Card>\n </Tooltip>\n\n <Tooltip title={\"Documents are open full-screen\"}>\n <Card\n onClick={() => onChange(\"full_screen\")}\n className={cls(\n \"my-2 rounded-md mx-0 p-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n value === \"full_screen\" ? \"border-primary dark:border-primary\" : \"border-surface-400 dark:border-surface-600\",\n )}\n >\n <SquareIcon/>\n <Typography variant={\"label\"}>\n Full screen\n </Typography>\n </Card>\n </Tooltip>\n\n </div>\n </div>\n}\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, FieldCaption, IconForView, SearchIconsView, singular, toSnakeCase, } from \"@firecms/core\";\nimport {\n Autocomplete,\n AutocompleteItem,\n BooleanSwitchWithLabel,\n Chip,\n CloseIcon,\n cls,\n Container,\n DebouncedTextField,\n Dialog,\n ExpandablePanel,\n IconButton,\n Select,\n SelectItem,\n SettingsIcon,\n TextField,\n Tooltip,\n Typography,\n useAutoComplete\n} from \"@firecms/ui\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { useCollectionEditorController } from \"../../useCollectionEditorController\";\nimport { LayoutModeSwitch } from \"./LayoutModeSwitch\";\n\nexport function CollectionDetailsForm({\n isNewCollection,\n reservedGroups,\n existingPaths,\n existingIds,\n groups,\n parentCollection\n }: {\n isNewCollection: boolean,\n reservedGroups?: string[];\n existingPaths?: string[];\n existingIds?: string[];\n groups: string[] | null;\n parentCollection?: EntityCollection;\n parentCollectionIds?: string[];\n}) {\n\n const groupRef = React.useRef<HTMLInputElement>(null);\n const {\n values,\n setFieldValue,\n handleChange,\n touched,\n errors,\n setFieldTouched,\n isSubmitting,\n submitCount\n } = useFormex<EntityCollection>();\n\n const collectionEditor = useCollectionEditorController();\n\n const [iconDialogOpen, setIconDialogOpen] = useState(false);\n const [advancedPanelExpanded, setAdvancedPanelExpanded] = useState(false);\n\n const updateDatabaseId = (databaseId: string) => {\n setFieldValue(\"databaseId\", databaseId ?? undefined);\n }\n\n const updateName = (name: string) => {\n setFieldValue(\"name\", name);\n\n const pathTouched = getIn(touched, \"path\");\n if (!pathTouched && isNewCollection && name) {\n setFieldValue(\"path\", toSnakeCase(name));\n }\n\n const idTouched = getIn(touched, \"id\");\n if (!idTouched && isNewCollection && name) {\n setFieldValue(\"id\", toSnakeCase(name));\n }\n\n const singularNameTouched = getIn(touched, \"singularName\");\n if (!singularNameTouched && isNewCollection && name) {\n setFieldValue(\"singularName\", singular(name));\n }\n\n };\n\n useEffect(() => {\n if (errors.id) {\n setAdvancedPanelExpanded(true);\n }\n }, [errors.id]);\n\n const DatabaseField = collectionEditor.components?.DatabaseField ?? DefaultDatabaseField;\n\n const collectionIcon = <IconForView collectionOrView={values}/>;\n\n const groupOptions = groups?.filter((group) => !reservedGroups?.includes(group));\n\n const {\n inputFocused,\n autoCompleteOpen,\n setAutoCompleteOpen\n } = useAutoComplete({\n ref: groupRef\n });\n\n const isSubcollection = !!parentCollection;\n\n let customIdValue: \"true\" | \"false\" | \"optional\" | \"code_defined\" | undefined;\n if (typeof values.customId === \"object\") {\n customIdValue = \"code_defined\";\n } else if (values.customId === true) {\n customIdValue = \"true\";\n } else if (values.customId === false) {\n customIdValue = \"false\";\n } else if (values.customId === \"optional\") {\n customIdValue = \"optional\";\n }\n\n const showErrors = submitCount > 0;\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div>\n <div\n className=\"flex flex-row gap-2 py-2 pt-3 items-center\">\n <Typography variant={!isNewCollection ? \"h5\" : \"h4\"} className={\"flex-grow\"}>\n {isNewCollection ? \"New collection\" : `${values?.name} collection`}\n </Typography>\n <DatabaseField databaseId={values.databaseId}\n onDatabaseIdUpdate={updateDatabaseId}/>\n\n <Tooltip title={\"Change icon\"}\n asChild={true}>\n <IconButton\n shape={\"square\"}\n onClick={() => setIconDialogOpen(true)}>\n {collectionIcon}\n </IconButton>\n </Tooltip>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n </div>\n <div className={\"grid grid-cols-12 gap-4\"}>\n\n <div className={\"col-span-12\"}>\n <TextField\n value={values.name ?? \"\"}\n onChange={(e: any) => updateName(e.target.value)}\n label={\"Name\"}\n autoFocus={true}\n required\n error={showErrors && Boolean(errors.name)}/>\n <FieldCaption error={touched.name && Boolean(errors.name)}>\n {touched.name && Boolean(errors.name) ? errors.name : \"Name of this collection, usually a plural name (e.g. Products)\"}\n </FieldCaption>\n </div>\n\n <div className={cls(\"col-span-12 \", isSubcollection ? \"\" : \"sm:col-span-8\")}>\n <Field name={\"path\"}\n as={DebouncedTextField}\n label={\"Path\"}\n disabled={!isNewCollection}\n required\n error={showErrors && Boolean(errors.path)}/>\n\n <FieldCaption error={touched.path && Boolean(errors.path)}>\n {touched.path && Boolean(errors.path)\n ? errors.path\n : isSubcollection ? \"Relative path to the parent (no need to include the parent path)\" : \"Path that this collection is stored in, in the database\"}\n </FieldCaption>\n\n </div>\n\n {!isSubcollection && <div className={\"col-span-12 sm:col-span-4 relative\"}>\n\n <TextField error={showErrors && Boolean(errors.group)}\n disabled={isSubmitting}\n value={values.group ?? \"\"}\n autoComplete=\"off\"\n onChange={(event) => setFieldValue(\"group\", event.target.value)}\n name={\"group\"}\n inputRef={groupRef}\n label=\"Group\"/>\n <Autocomplete\n open={autoCompleteOpen && (groupOptions ?? []).length > 0}\n setOpen={setAutoCompleteOpen}>\n {groupOptions?.map((group, index) => {\n return <AutocompleteItem\n key={index + \"_\" + group}\n onClick={() => {\n setAutoCompleteOpen(false);\n setFieldValue(\"group\", group ?? null);\n }}\n >\n <div className={\"flex-grow\"}>\n {group}\n </div>\n </AutocompleteItem>;\n })}\n </Autocomplete>\n <FieldCaption>\n {showErrors && Boolean(errors.group) ? errors.group : \"Group in the home page\"}\n </FieldCaption>\n\n\n </div>}\n\n <LayoutModeSwitch\n className={\"col-span-12\"}\n value={values.openEntityMode ?? \"side_panel\"}\n onChange={(value) => setFieldValue(\"openEntityMode\", value)}/>\n\n <div className={\"col-span-12 mt-8\"}>\n <ExpandablePanel\n expanded={advancedPanelExpanded}\n onExpandedChange={setAdvancedPanelExpanded}\n title={\n <div className=\"flex flex-row text-surface-500\">\n <SettingsIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Advanced\n </Typography>\n </div>}\n initiallyExpanded={false}>\n <div className={\"grid grid-cols-12 gap-4 p-4\"}>\n\n <div className={\"col-span-12\"}>\n <Field name={\"id\"}\n as={DebouncedTextField}\n disabled={!isNewCollection}\n label={\"Collection id\"}\n error={showErrors && Boolean(errors.id)}/>\n <FieldCaption error={touched.id && Boolean(errors.id)}>\n {touched.id && Boolean(errors.id) ? errors.id : \"This id identifies this collection. Typically the same as the path.\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.singularName)}\n name={\"singularName\"}\n aria-describedby={\"singularName-helper\"}\n onChange={(e) => {\n setFieldTouched(\"singularName\", true);\n return handleChange(e);\n }}\n value={values.singularName ?? \"\"}\n label={\"Singular name\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define a singular name for your entities\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.sideDialogWidth)}\n name={\"sideDialogWidth\"}\n type={\"number\"}\n aria-describedby={\"sideDialogWidth-helper\"}\n onChange={(e) => {\n setFieldTouched(\"sideDialogWidth\", true);\n const value = e.target.value;\n if (!value) {\n setFieldValue(\"sideDialogWidth\", null);\n } else if (!isNaN(Number(value))) {\n setFieldValue(\"sideDialogWidth\", Number(value));\n }\n }}\n endAdornment={<IconButton\n size={\"small\"}\n onClick={() => {\n setFieldValue(\"sideDialogWidth\", null);\n }}\n disabled={!values.sideDialogWidth}>\n <CloseIcon size={\"small\"}/>\n </IconButton>}\n value={values.sideDialogWidth ?? \"\"}\n label={\"Side dialog width\"}/>\n <FieldCaption error={showErrors && Boolean(errors.singularName)}>\n {showErrors && Boolean(errors.singularName) ? errors.singularName : \"Optionally define the width (in pixels) of entities side dialog. Default is 768px\"}\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <TextField\n error={showErrors && Boolean(errors.description)}\n name=\"description\"\n value={values.description ?? \"\"}\n onChange={handleChange}\n multiline\n rows={2}\n aria-describedby=\"description-helper-text\"\n label=\"Description\"\n />\n <FieldCaption error={showErrors && Boolean(errors.description)}>\n {showErrors && Boolean(errors.description) ? errors.description : \"Description of the collection, you can use markdown\"}\n </FieldCaption>\n </div>\n\n <div className={\"col-span-12\"}>\n <Select\n name=\"defaultSize\"\n size={\"large\"}\n fullWidth={true}\n label=\"Default row size\"\n position={\"item-aligned\"}\n onChange={handleChange}\n value={values.defaultSize ?? \"\"}\n renderValue={(value: any) => value.toUpperCase()}\n >\n {[\"xs\", \"s\", \"m\", \"l\", \"xl\"].map((value) => (\n <SelectItem\n key={`size-select-${value}`}\n value={value}>\n {value.toUpperCase()}\n </SelectItem>\n ))}\n </Select>\n </div>\n <div className={\"col-span-12\"}>\n <Select\n name=\"customId\"\n label=\"Document IDs generation\"\n position={\"item-aligned\"}\n size={\"large\"}\n fullWidth={true}\n disabled={customIdValue === \"code_defined\"}\n onValueChange={(v) => {\n if (v === \"code_defined\")\n throw new Error(\"This should not happen\");\n else if (v === \"true\")\n setFieldValue(\"customId\", true);\n else if (v === \"false\")\n setFieldValue(\"customId\", false);\n else if (v === \"optional\")\n setFieldValue(\"customId\", \"optional\");\n }}\n value={customIdValue ?? \"\"}\n renderValue={(value: any) => {\n if (value === \"code_defined\")\n return \"Code defined\";\n else if (value === \"true\")\n return \"Users must define an ID\";\n else if (value === \"optional\")\n return \"Users can define an ID, but it is not required\";\n else\n return \"Document ID is generated automatically\";\n }}\n >\n <SelectItem value={\"false\"}>\n Document ID is generated automatically\n </SelectItem>\n <SelectItem value={\"true\"}>\n Users must define an ID\n </SelectItem>\n <SelectItem value={\"optional\"}>\n Users can define an ID, but it is not required\n </SelectItem>\n </Select>\n </div>\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n label=\"Collection group\"\n onValueChange={(v) => setFieldValue(\"collectionGroup\", v)}\n value={values.collectionGroup ?? false}\n />\n <FieldCaption>\n A collection group consists of all collections with the same path. This allows\n you\n to query over multiple collections at once.\n </FieldCaption>\n </div>\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n label=\"Enable text search for this collection\"\n onValueChange={(v) => setFieldValue(\"textSearchEnabled\", v)}\n value={values.textSearchEnabled ?? false}\n />\n <FieldCaption>\n Allow text search for this collection. If you have not specified a text search\n delegate, this will use the built-in local text search. This is not recommended\n for large collections, as it may incur in performance and cost issues.\n </FieldCaption>\n </div>\n </div>\n </ExpandablePanel>\n\n </div>\n\n </div>\n\n <div style={{ height: \"52px\" }}/>\n\n <Dialog\n open={iconDialogOpen}\n onOpenChange={setIconDialogOpen}\n maxWidth={\"xl\"}\n fullWidth\n >\n <div className={\"p-4 overflow-auto min-h-[200px]\"}>\n <SearchIconsView selectedIcon={values.icon}\n onIconSelected={(icon: string) => {\n setIconDialogOpen(false);\n setFieldValue(\"icon\", icon);\n }}/>\n </div>\n\n </Dialog>\n\n </Container>\n </div>\n );\n}\n\nfunction DefaultDatabaseField({\n databaseId,\n onDatabaseIdUpdate\n }: { databaseId?: string, onDatabaseIdUpdate: (databaseId: string) => void }) {\n\n return <Tooltip title={\"Database ID\"}\n side={\"top\"}\n align={\"start\"}>\n <TextField size={\"small\"}\n invisible={true}\n inputClassName={\"text-end\"}\n value={databaseId ?? \"\"}\n onChange={(e: any) => onDatabaseIdUpdate(e.target.value)}\n placeholder={\"(default)\"}></TextField>\n </Tooltip>\n}\n","export function idToPropertiesPath(id: string): string {\n return \"properties.\" + id.replaceAll(\".\", \".properties.\");\n}\n\nexport function namespaceToPropertiesPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".properties\"\n : \"properties\";\n}\n\nexport function namespaceToPropertiesOrderPath(namespace?: string): string {\n return namespace\n ? \"properties.\" + namespace.replaceAll(\".\", \".properties.\") + \".propertiesOrder\"\n : \"propertiesOrder\";\n}\n\nexport function getFullId(propertyKey: string, propertyNamespace?: string): string {\n return propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n}\n\nexport function getFullIdPath(propertyKey: string, propertyNamespace?: string): string {\n const keyWithNamespace = propertyNamespace\n ? `${propertyNamespace}.${propertyKey}`\n : propertyKey;\n return idToPropertiesPath(keyWithNamespace);\n}\n","import React, { useEffect } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { ArrayContainer, ArrayEntryParams, EnumValueConfig, EnumValues, FieldCaption, } from \"@firecms/core\";\nimport {\n AutorenewIcon,\n Badge,\n Button,\n CircularProgress,\n DebouncedTextField,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n ListIcon,\n Paper,\n SettingsIcon,\n Typography\n} from \"@firecms/ui\";\nimport { extractEnumFromValues } from \"@firecms/schema_inference\";\nimport { Field, Formex, getIn, useCreateFormex, useFormex } from \"@firecms/formex\";\n\ntype EnumFormProps = {\n enumValues: EnumValueConfig[];\n onValuesChanged?: (enumValues: EnumValueConfig[]) => void;\n onError?: (error: boolean) => void;\n updateIds: boolean;\n disabled: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<string[]>;\n};\n\nexport function EnumForm({\n enumValues,\n onValuesChanged,\n onError,\n updateIds,\n disabled,\n allowDataInference,\n getData\n }: EnumFormProps) {\n\n const formex = useCreateFormex<{\n enumValues: EnumValueConfig[]\n }>({\n initialValues: { enumValues },\n validateOnChange: true,\n validation: (values) => {\n const errors: any = {};\n if (values.enumValues) {\n values.enumValues.forEach((enumValue, index) => {\n if (!enumValue?.label) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].label = \"You must specify a label for this enum value entry\";\n }\n if (!enumValue?.id) {\n errors.enumValues = errors.enumValues ?? [];\n errors.enumValues[index] = errors.enumValues[index] ?? {};\n errors.enumValues[index].id = \"You must specify an ID for this enum value entry\";\n }\n });\n }\n const hasError = Boolean(errors?.enumValues && Object.keys(errors?.enumValues).length > 0);\n onError?.(hasError);\n return errors;\n }\n });\n\n const { values, errors } = formex;\n\n useEffect(() => {\n if (onValuesChanged) {\n onValuesChanged(values.enumValues);\n }\n }, [values.enumValues]);\n\n return <Formex value={formex}>\n <EnumFormFields enumValuesPath={\"enumValues\"}\n values={values}\n errors={errors}\n shouldUpdateId={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}/>\n </Formex>\n\n}\n\ntype EnumFormFieldsProps = {\n values: {\n enumValues: EnumValueConfig[]\n };\n errors: any;\n enumValuesPath: string;\n shouldUpdateId: boolean;\n disabled: boolean;\n getData?: () => Promise<string[]>;\n allowDataInference?: boolean;\n};\n\n// const EnumFormFields = React.memo(\nfunction EnumFormFields({\n values,\n errors,\n disabled,\n enumValuesPath,\n shouldUpdateId,\n allowDataInference,\n getData,\n }: EnumFormFieldsProps) {\n\n const {\n setFieldValue\n } = useFormex();\n\n const [lastInternalIdAdded, setLastInternalIdAdded] = React.useState<number | undefined>();\n const [editDialogIndex, setEditDialogIndex] = React.useState<number | undefined>();\n const [inferring, setInferring] = React.useState(false);\n\n const inferredValuesRef = React.useRef(new Set());\n const inferredValues = inferredValuesRef.current;\n\n const buildEntry = ({\n index,\n internalId\n }:ArrayEntryParams) => {\n const justAdded = lastInternalIdAdded === internalId;\n const entryError = errors?.enumValues && errors?.enumValues[index];\n return <EnumEntry index={index}\n disabled={disabled}\n enumValuesPath={enumValuesPath}\n autoFocus={justAdded}\n entryError={entryError}\n shouldUpdateId={shouldUpdateId || justAdded}\n onDialogOpen={() => setEditDialogIndex(index)}\n inferredEntry={inferredValues.has(values.enumValues[index]?.id as string)}\n key={`${internalId}`}/>;\n };\n\n const inferValues = async () => {\n if (!getData)\n return;\n setInferring(true);\n getData?.().then((data) => {\n if (!data)\n return;\n\n const flatData = data.flat();\n\n const fieldData = Array.from(new Set(flatData));\n\n const currentEnumValues = values.enumValues;\n const foundEnumValues = extractEnumFromValues(fieldData);\n\n // add only new enum values\n const newEnumValues = foundEnumValues.filter((enumValue) => {\n return !currentEnumValues?.some((v: any) => v.id === enumValue.id);\n });\n\n newEnumValues.forEach((enumValue) => {\n inferredValues.add(enumValue.id);\n });\n setFieldValue(enumValuesPath, [...newEnumValues, ...currentEnumValues], true);\n }).catch(e => {\n console.error(e);\n })\n .finally(() => setInferring(false));\n }\n\n return (\n <div className={\"col-span-12\"}>\n <div className=\"ml-3.5 flex flex-row items-center\">\n <ListIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2 grow\">\n Values\n </Typography>\n {allowDataInference &&\n <Button loading={inferring}\n disabled={disabled || inferring}\n variant={\"text\"}\n size={\"small\"}\n onClick={inferValues}>\n {inferring ? <CircularProgress size={\"smallest\"}/> : <AutorenewIcon/>}\n Infer values from data\n </Button>}\n </div>\n\n <Paper className=\"p-4 m-1\">\n\n <ArrayContainer droppableId={enumValuesPath}\n addLabel={\"Add enum value\"}\n value={values.enumValues}\n disabled={disabled}\n size={\"small\"}\n buildEntry={buildEntry}\n onInternalIdAdded={setLastInternalIdAdded}\n includeAddButton={true}\n onValueChange={(value) => setFieldValue(enumValuesPath, value)}\n newDefaultEntry={{ id: \"\", label: \"\" }}/>\n\n <EnumEntryDialog index={editDialogIndex}\n open={editDialogIndex !== undefined}\n enumValuesPath={enumValuesPath}\n onClose={() => setEditDialogIndex(undefined)}/>\n </Paper>\n </div>\n );\n}\n\ntype EnumEntryProps = {\n index: number,\n enumValuesPath: string,\n shouldUpdateId: boolean,\n autoFocus: boolean,\n onDialogOpen: () => void;\n disabled: boolean;\n inferredEntry?: boolean;\n entryError?: { label?: string, id?: string }\n};\n\nconst EnumEntry = React.memo(\n function EnumEntryInternal({\n index,\n shouldUpdateId: updateId,\n enumValuesPath,\n autoFocus,\n onDialogOpen,\n disabled,\n inferredEntry,\n entryError\n }: EnumEntryProps) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<EnumValues>();\n\n const shouldUpdateIdRef = React.useRef(!getIn(values, `${enumValuesPath}[${index}].id`));\n const shouldUpdateId = updateId || shouldUpdateIdRef.current;\n\n const idValue = getIn(values, `${enumValuesPath}[${index}].id`);\n const labelValue = getIn(values, `${enumValuesPath}[${index}].label`);\n\n const currentLabelRef = React.useRef(labelValue);\n\n React.useEffect(() => {\n if ((currentLabelRef.current === idValue || !idValue) && shouldUpdateId) {\n setFieldValue(`${enumValuesPath}[${index}].id`, labelValue);\n }\n currentLabelRef.current = labelValue;\n }, [labelValue]);\n\n return (\n <>\n <div className={\"flex w-full align-center justify-center\"}>\n <Field name={`${enumValuesPath}[${index}].label`}\n as={DebouncedTextField}\n className={\"flex-grow\"}\n required\n disabled={disabled}\n size=\"small\"\n autoFocus={autoFocus}\n autoComplete=\"off\"\n endAdornment={inferredEntry && <AutorenewIcon size={\"small\"}/>}\n error={Boolean(entryError?.label)}/>\n\n {!disabled &&\n <Badge color={\"error\"} invisible={!entryError?.id}>\n <IconButton\n size=\"small\"\n aria-label=\"edit\"\n className={\"m-1\"}\n onClick={() => onDialogOpen()}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Badge>}\n\n </div>\n\n {entryError?.label && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.label}\n </Typography>}\n\n {entryError?.id && <Typography variant={\"caption\"}\n className={\"ml-3.5 text-red-500 dark:text-red-500\"}>\n {entryError?.id}\n </Typography>}\n\n </>);\n },\n function areEqual(prevProps: EnumEntryProps, nextProps: EnumEntryProps) {\n return prevProps.index === nextProps.index &&\n prevProps.enumValuesPath === nextProps.enumValuesPath &&\n prevProps.shouldUpdateId === nextProps.shouldUpdateId &&\n prevProps.inferredEntry === nextProps.inferredEntry &&\n equal(prevProps.entryError, nextProps.entryError) &&\n prevProps.autoFocus === nextProps.autoFocus;\n }\n);\n\nfunction EnumEntryDialog({\n index,\n open,\n onClose,\n enumValuesPath\n }: {\n index?: number;\n open: boolean;\n enumValuesPath: string;\n onClose: () => void;\n}) {\n\n const {\n errors,\n } = useFormex<EnumValues>();\n\n const idError = index !== undefined ? getIn(errors, `${enumValuesPath}[${index}].id`) : undefined;\n return <Dialog\n maxWidth=\"md\"\n aria-labelledby=\"enum-edit-dialog\"\n open={open}\n onOpenChange={(open) => !open ? onClose() : undefined}\n >\n <DialogTitle hidden>Enum form dialog</DialogTitle>\n <DialogContent>\n {index !== undefined &&\n <div>\n <Field name={`${enumValuesPath}[${index}].id`}\n as={DebouncedTextField}\n required\n label={\"ID\"}\n size=\"small\"\n autoComplete=\"off\"\n error={Boolean(idError)}/>\n\n <FieldCaption error={Boolean(idError)}>\n {idError ?? \"Value saved in the data source\"}\n </FieldCaption>\n </div>}\n </DialogContent>\n\n <DialogActions>\n <Button\n autoFocus\n variant=\"outlined\"\n onClick={onClose}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n\n </Dialog>\n}\n\n","import React from \"react\";\n\nimport { BooleanSwitchWithLabel, Tooltip } from \"@firecms/ui\";\nimport { FormexFieldProps } from \"@firecms/formex\";\n\nexport function SwitchControl({\n field,\n form,\n label,\n tooltip,\n disabled,\n size = \"small\",\n allowIndeterminate\n }: FormexFieldProps & {\n label: string,\n tooltip?: string,\n disabled?: boolean,\n size?: \"small\" | \"medium\",\n allowIndeterminate?: boolean\n}) {\n\n const formControlLabel = <BooleanSwitchWithLabel\n label={label}\n size={size}\n position={\"start\"}\n value={field.value}\n disabled={disabled}\n allowIndeterminate={allowIndeterminate}\n onValueChange={(checked:boolean | null) => form.setFieldValue(field.name, checked)}/>;\n\n if (tooltip)\n return (\n <Tooltip\n title={tooltip}>\n {formControlLabel}\n </Tooltip>\n );\n return formControlLabel;\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function GeneralPropertyValidation({ disabled }: {\n required?: boolean;\n disabled: boolean;\n}) {\n\n const { values, handleChange } = useFormex();\n\n const validationRequired = \"validation.required\";\n const validationRequiredMessage = \"validation.requiredMessage\";\n const validationUnique = \"validation.unique\";\n const validationUniqueInArray = \"validation.uniqueInArray\";\n\n return (\n <>\n <div className={\"col-span-6\"}>\n <Field name={validationRequired}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Required\"}\n tooltip={\"You won't be able to save this entity if this value is not set\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-6\"}>\n\n <Field name={validationUnique}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n disabled={disabled}\n label={\"Unique\"}\n tooltip={\"There cannot be multiple entities with the same value\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n\n {getIn(values, validationRequired) && <div className={\"col-span-12\"}>\n <DebouncedTextField\n disabled={disabled}\n value={getIn(values, validationRequiredMessage)}\n label={\"Required message\"}\n name={validationRequiredMessage}\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, serializeRegExp } from \"@firecms/core\";\nimport { DebouncedTextField, } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function StringPropertyValidation({\n length,\n lowercase,\n matches,\n max,\n min,\n trim,\n uppercase,\n disabled,\n showErrors\n }: {\n length?: boolean;\n min?: boolean;\n max?: boolean;\n trim?: boolean;\n matches?: boolean;\n lowercase?: boolean;\n uppercase?: boolean;\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors\n } = useFormex();\n\n const validationLength = \"validation.length\";\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationTrim = \"validation.trim\";\n const validationMatches = \"validation.matches\";\n const validationLowercase = \"validation.lowercase\";\n const validationUppercase = \"validation.uppercase\";\n\n const matchesError = getIn(errors, validationMatches);\n\n const matchesValue = getIn(values, validationMatches);\n const matchesStringValue = typeof matchesValue === \"string\" ? matchesValue : serializeRegExp(matchesValue);\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n\n {lowercase && <div className={\"col-span-4\"}>\n <Field name={validationLowercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Lowercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {uppercase && <div className={\"col-span-4\"}>\n <Field name={validationUppercase}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Uppercase\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n {trim && <div className={\"col-span-4\"}>\n <Field name={validationTrim}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Trim\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>}\n\n </div>\n\n <div className={\"grid grid-cols-12 gap-2 col-span-12\"}>\n {length && <div className={\"col-span-4\"}>\n <DebouncedTextField\n value={getIn(values, validationLength)}\n label={\"Exact length\"}\n name={validationLength}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {min && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n {max && <div className={\"col-span-4\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>}\n\n </div>\n\n {matches && <div className={\"col-span-12\"}>\n <Field name={validationMatches}\n as={DebouncedTextField}\n label={\"Matches regex\"}\n size=\"small\"\n disabled={disabled}\n value={matchesStringValue}\n error={Boolean(matchesError)}/>\n <FieldCaption error={Boolean(matchesError)}>\n {matchesError ? \"Not a valid regexp\" : \"e.g. /^\\\\d+$/ for digits only\"}\n </FieldCaption>\n </div>}\n\n </div>\n );\n\n}\n","import React from \"react\";\n\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\n\nexport function ArrayPropertyValidation({\n max = true,\n min = true,\n disabled\n }: {\n min?: boolean;\n max?: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n\n return (\n <div className={\"grid grid-cols-12 gap-2\"}>\n\n <GeneralPropertyValidation disabled={disabled}/>\n\n {min && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n disabled={disabled}\n label={\"Min length\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n {max && <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n disabled={disabled}\n label={\"Max length\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n onChange={handleChange}/>\n </div>}\n </div>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nimport { ExpandablePanel, RuleIcon, Typography } from \"@firecms/ui\";\n\nexport function ValidationPanel({\n children\n }: PropsWithChildren<{}>) {\n\n return (\n <ExpandablePanel\n initiallyExpanded={false}\n asField={true}\n innerClassName=\"p-4\"\n title={\n <div className=\"flex flex-row text-surface-500\">\n <RuleIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n Validation\n </Typography>\n </div>\n }>\n\n {children}\n\n </ExpandablePanel>\n )\n}\n","import React, { useMemo } from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { EnumValueConfig, resolveEnumValues, useSnackbarController } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { EnumForm } from \"../EnumForm\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { PropertyWithId } from \"../PropertyEditView\";\n\nexport function EnumPropertyField({\n multiselect,\n updateIds,\n disabled,\n showErrors,\n allowDataInference,\n getData\n }: {\n multiselect: boolean;\n updateIds: boolean;\n disabled: boolean;\n showErrors: boolean;\n allowDataInference?: boolean;\n getData?: () => Promise<object[]>;\n}) {\n\n const {\n values,\n setFieldError,\n setFieldValue\n } = useFormex<PropertyWithId>();\n\n const snackbarContext = useSnackbarController();\n\n const enumValuesPath = multiselect ? \"of.enumValues\" : \"enumValues\";\n\n const defaultValue = getIn(values, \"defaultValue\");\n\n const valuesEnumValues = getIn(values, enumValuesPath);\n const enumValues: EnumValueConfig[] = useMemo(() => {\n if (!valuesEnumValues || typeof valuesEnumValues === \"boolean\")\n return [] as EnumValueConfig[];\n return resolveEnumValues(valuesEnumValues) ?? [] as EnumValueConfig[];\n }, [valuesEnumValues]);\n\n const onValuesChanged = (value: EnumValueConfig[]) => {\n if (!values)\n return;\n setFieldValue(enumValuesPath, value);\n if (!multiselect) {\n const enumIds = value.filter(v => Boolean(v?.id)).map((v: any) => v.id);\n if (defaultValue && !enumIds.includes(defaultValue)) {\n setFieldValue(\"defaultValue\", undefined);\n snackbarContext.open({\n type: \"warning\",\n message: \"Default value was cleared\"\n })\n }\n }\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <EnumForm enumValues={enumValues}\n updateIds={updateIds}\n disabled={disabled}\n allowDataInference={allowDataInference}\n onError={(hasError) => {\n setFieldError(enumValuesPath, hasError ? \"This enum property is missing some values\" : undefined);\n }}\n getData={getData\n ? () => getData()\n .then(res => res.map(entry => values.id && getIn(entry, values.id)).filter(Boolean))\n : undefined}\n onValuesChanged={onValuesChanged}/>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiselect &&\n <StringPropertyValidation disabled={disabled}\n showErrors={showErrors}/>}\n {multiselect &&\n <ArrayPropertyValidation disabled={disabled}/>}\n </ValidationPanel>\n\n </div>\n\n {!multiselect && <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n setFieldValue(\"defaultValue\", value);\n }}\n size={\"large\"}\n label={\"Default value\"}\n value={defaultValue ?? \"\"}>\n {enumValues\n .filter((enumValue) => Boolean(enumValue?.id))\n .map((enumValue) => (\n <SelectItem key={enumValue.id}\n value={enumValue.id?.toString()}>\n {enumValue.label}\n </SelectItem>\n ))}\n </Select>\n\n </div>}\n </>\n );\n}\n","import React from \"react\";\nimport {\n Button,\n CloudUploadIcon,\n DebouncedTextField,\n ExpandablePanel,\n MultiSelect,\n MultiSelectItem,\n Typography\n} from \"@firecms/ui\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nconst fileTypes: Record<string, string> = {\n \"image/*\": \"Images\",\n \"video/*\": \"Videos\",\n \"audio/*\": \"Audio files\",\n \"application/*\": \"Files (pdf, zip, csv, excel...)\",\n \"text/*\": \"Text files\"\n}\n\nexport function StoragePropertyField({\n multiple,\n existing,\n disabled\n }: {\n multiple: boolean;\n existing: boolean;\n disabled: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = multiple ? \"of.storage\" : \"storage\";\n const acceptedFiles = `${baseStoragePath}.acceptedFiles`;\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n const storeUrl = `${baseStoragePath}.storeUrl`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const storedValue = getIn(values, acceptedFiles);\n const fileTypesValue: string[] | undefined = Array.isArray(storedValue) ? storedValue : undefined;\n const allFileTypesSelected = !fileTypesValue || fileTypesValue.length === 0;\n\n const handleTypesChange = (value: string[]) => {\n if (!value) setFieldValue(acceptedFiles, undefined);\n // else if (value.includes(\"all\")) setFieldValue(acceptedFiles, undefined);\n // else if (value.length >= Object.keys(fileTypes).length) setFieldValue(acceptedFiles, undefined);\n // else if (allFileTypesSelected)\n // setFieldValue(acceptedFiles, Object.keys(fileTypes).filter((v) => !value.includes(v)));\n else setFieldValue(acceptedFiles, value);\n };\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n <div className={\"col-span-12\"}>\n\n <MultiSelect\n className={\"w-full\"}\n placeholder={\"All file types allowed\"}\n disabled={disabled}\n name={acceptedFiles}\n value={fileTypesValue ?? []}\n onValueChange={handleTypesChange}\n label={allFileTypesSelected ? undefined : \"Allowed file types\"}\n renderValues={(selected) => {\n if (!selected || selected.length === 0) return \"All file types allowed\";\n return selected.map((v: string) => fileTypes[v])\n .filter((v: string) => Boolean(v))\n .join(\", \");\n }}>\n\n {Object.entries(fileTypes).map(([value, label]) => (\n <MultiSelectItem key={value} value={value} className={\"flex items-center gap-2\"}>\n {/*<Checkbox*/}\n {/* checked={allFileTypesSelected || fileTypesValue.indexOf(value) > -1}/>*/}\n <div className={\"flex-grow\"}>\n {label}\n </div>\n <Button size={\"small\"}\n variant={\"text\"}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n return setFieldValue(acceptedFiles, [value]);\n }}>\n Only\n </Button>\n </MultiSelectItem>\n ))}\n\n </MultiSelect>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Field name={storeUrl}\n type=\"checkbox\">\n {({\n field,\n form\n }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Save URL instead of storage path\"}\n disabled={existing || disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n Turn this setting on, if you prefer to save\n the download\n URL of the uploaded file instead of the\n storage path.\n You can only change this prop upon creation.\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n {!multiple && <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n </div>}\n {multiple && <div className={\"col-span-12\"}>\n <ArrayPropertyValidation disabled={disabled}/>\n </div>}\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { isPropertyBuilder, Properties, PropertiesOrBuilders, Property, PropertyOrBuilder } from \"@firecms/core\";\n\nexport function editableProperty(property: PropertyOrBuilder | PropertyOrBuilder): boolean {\n if (isPropertyBuilder(property))\n return false;\n if (isPropertyBuilder(property as PropertyOrBuilder))\n return false;\n else {\n const eProperty = property as Property;\n if (eProperty.dataType === \"array\" && typeof eProperty.of === \"function\")\n return false;\n else if (eProperty.dataType === \"array\" && Array.isArray(eProperty.of))\n return false;\n return Boolean(eProperty.editable);\n }\n}\n\nexport function removeNonEditableProperties(properties: PropertiesOrBuilders<any>): Properties {\n return Object.entries(properties)\n .filter(([_, property]) => editableProperty(property))\n .map(([key, propertyOrBuilder]) => {\n const property = propertyOrBuilder as Property;\n if (!editableProperty(property)) {\n return undefined;\n } else if (property.dataType === \"map\" && property.properties) {\n return {\n [key]: {\n ...property,\n properties: removeNonEditableProperties(property.properties as PropertiesOrBuilders)\n }\n };\n } else {\n return { [key]: property };\n }\n })\n .filter((e) => Boolean(e))\n .reduce((a, b) => ({ ...a, ...b }), {}) as Properties;\n}\n","import {\n ErrorBoundary,\n getFieldConfig,\n isPropertyBuilder,\n Property,\n PropertyConfigBadge,\n PropertyOrBuilder,\n useCustomizationController,\n} from \"@firecms/core\";\nimport {\n cardClickableMixin,\n cardMixin,\n cardSelectedMixin,\n cls,\n DoNotDisturbOnIcon,\n FunctionsIcon,\n Paper,\n Typography,\n} from \"@firecms/ui\";\n\nimport { editableProperty } from \"../../utils/entities\";\n\nexport function PropertyFieldPreview({\n property,\n onClick,\n hasError,\n includeName,\n includeEditButton,\n selected\n }: {\n property: Property,\n hasError?: boolean,\n selected?: boolean,\n includeName?: boolean,\n includeEditButton?: boolean;\n onClick?: () => void\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = getFieldConfig(property, propertyConfigs);\n const disabled = !editableProperty(property);\n\n const borderColorClass = hasError\n ? \"border-red-500 dark:border-red-500 border-opacity-100 dark:border-opacity-100 ring-0 dark:ring-0\"\n : (selected ? \"border-primary\" : \"border-transparent\");\n\n return <ErrorBoundary>\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"m-4\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <Paper\n className={cls(\n \"border\",\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n borderColorClass\n )}\n >\n\n <div className=\"w-full flex flex-col\">\n\n {includeName &&\n <ErrorBoundary>\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property.name\n ? property.name\n : \"\\u00a0\"\n }\n </Typography>\n </ErrorBoundary>}\n\n <div className=\"flex flex-row items-center\">\n <ErrorBoundary>\n <Typography className=\"flex-grow pr-2\"\n variant={includeName ? \"body2\" : \"subtitle1\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>\n </ErrorBoundary>\n <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>\n\n </div>\n </div>\n\n {includeEditButton && <Typography variant={\"button\"}>\n EDIT\n </Typography>}\n\n </Paper>\n </div>\n </ErrorBoundary>\n}\n\nexport function NonEditablePropertyPreview({\n name,\n selected,\n onClick,\n property\n }: {\n name: string,\n selected: boolean,\n onClick?: () => void,\n property?: PropertyOrBuilder\n}) {\n\n const { propertyConfigs } = useCustomizationController();\n\n const propertyConfig = !isPropertyBuilder(property) && property ? getFieldConfig(property, propertyConfigs) : undefined;\n\n return (\n <div\n onClick={onClick}\n className=\"flex flex-row w-full cursor-pointer\">\n <div className={\"relative m-4\"}>\n {propertyConfig && <PropertyConfigBadge propertyConfig={propertyConfig}/>}\n {!propertyConfig && <div\n className={\"h-8 w-8 p-1 rounded-full shadow text-white bg-surface-500\"}>\n <FunctionsIcon color={\"inherit\"} size={\"medium\"}/>\n </div>}\n <DoNotDisturbOnIcon color={\"disabled\"} size={\"small\"} className={\"absolute -right-2 -top-2\"}/>\n </div>\n <Paper\n className={cls(\n \"pl-2 w-full flex flex-row gap-4 items-center\",\n cardMixin,\n onClick ? cardClickableMixin : \"\",\n selected ? cardSelectedMixin : \"\",\n \"flex-grow p-4 border transition-colors duration-200\",\n selected ? \"border-primary\" : \"border-transparent\")}\n >\n\n <div className=\"w-full flex flex-col\">\n <Typography variant=\"body1\"\n component=\"span\"\n className=\"flex-grow pr-2\">\n {property?.name\n ? property.name\n : name\n }\n </Typography>\n\n <div className=\"flex flex-row items-center\">\n {propertyConfig && <Typography className=\"flex-grow pr-2\"\n variant={\"body2\"}\n component=\"span\"\n color=\"secondary\">\n {propertyConfig?.name}\n </Typography>}\n\n {property && !isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n {property.dataType}\n </Typography>\n </ErrorBoundary>}\n\n {property && isPropertyBuilder(property) && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This property is defined as a property builder in code\n </Typography>\n </ErrorBoundary>}\n\n {!property && <ErrorBoundary>\n <Typography variant=\"body2\"\n component=\"span\"\n color=\"disabled\">\n This field is defined as an additional field in code\n </Typography>\n </ErrorBoundary>}\n\n </div>\n\n {/*<div className=\"flex flex-row text-xs\">*/}\n {/* <Typography className=\"flex-grow pr-2\"*/}\n {/* variant=\"body2\"*/}\n {/* component=\"span\"*/}\n {/* color=\"secondary\">*/}\n {/* This field can only be edited in code*/}\n {/* </Typography>*/}\n {/*</div>*/}\n </div>\n\n </Paper>\n </div>)\n}\n","import React from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport {\n AdditionalFieldDelegate,\n CMSType,\n ErrorBoundary,\n isPropertyBuilder,\n PropertiesOrBuilders,\n PropertyOrBuilder\n} from \"@firecms/core\";\nimport { AutorenewIcon, defaultBorderMixin, DragHandleIcon, IconButton, RemoveIcon, Tooltip } from \"@firecms/ui\";\nimport { NonEditablePropertyPreview, PropertyFieldPreview } from \"./PropertyFieldPreview\";\nimport { DragDropContext, Draggable, DraggableProvided, Droppable } from \"@hello-pangea/dnd\";\nimport { getFullId, getFullIdPath } from \"./util\";\nimport { editableProperty } from \"../../utils/entities\";\n\nexport const PropertyTree = React.memo(\n function PropertyTree<M extends {\n [Key: string]: CMSType\n }>({\n namespace,\n selectedPropertyKey,\n onPropertyClick,\n properties,\n propertiesOrder: propertiesOrderProp,\n additionalFields,\n errors,\n onPropertyMove,\n onPropertyRemove,\n className,\n inferredPropertyKeys,\n collectionEditable\n }: {\n namespace?: string;\n selectedPropertyKey?: string;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n properties: PropertiesOrBuilders<M>;\n propertiesOrder?: string[];\n additionalFields?: AdditionalFieldDelegate<M>[];\n errors: Record<string, any>;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n className?: string;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n }) {\n\n const propertiesOrder = propertiesOrderProp ?? Object.keys(properties);\n\n const onDragEnd = (result: any) => {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n const startIndex = result.source.index;\n const endIndex = result.destination.index;\n\n const newPropertiesOrder = Array.from(propertiesOrder);\n const [removed] = newPropertiesOrder.splice(startIndex, 1);\n newPropertiesOrder.splice(endIndex, 0, removed);\n if (onPropertyMove)\n onPropertyMove(newPropertiesOrder, namespace);\n }\n\n return (\n <>\n\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId={`droppable_${namespace}`}>\n {(droppableProvided, droppableSnapshot) => (\n <div\n {...droppableProvided.droppableProps}\n ref={droppableProvided.innerRef}\n className={className}>\n {propertiesOrder && propertiesOrder\n .map((propertyKey: string, index: number) => {\n const property = properties[propertyKey] as PropertyOrBuilder;\n const additionalField = additionalFields?.find(field => field.key === propertyKey);\n\n if (!property && !additionalField) {\n console.warn(`Property ${propertyKey} not found in properties or additionalFields`);\n return null;\n }\n return (\n <Draggable\n key={`array_field_${namespace}_${propertyKey}}`}\n draggableId={`array_field_${namespace}_${propertyKey}}`}\n index={index}>\n {(provided, snapshot) => {\n return (\n <ErrorBoundary>\n <PropertyTreeEntry\n propertyKey={propertyKey as string}\n propertyOrBuilder={property}\n additionalField={additionalField}\n provided={provided}\n errors={errors}\n namespace={namespace}\n inferredPropertyKeys={inferredPropertyKeys}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n onPropertyClick={snapshot.isDragging ? undefined : onPropertyClick}\n selectedPropertyKey={selectedPropertyKey}\n collectionEditable={collectionEditable}\n />\n </ErrorBoundary>\n );\n }}\n </Draggable>);\n }).filter(Boolean)}\n\n {droppableProvided.placeholder}\n\n </div>\n )}\n </Droppable>\n </DragDropContext>\n\n </>\n );\n },\n (prevProps, nextProps) => {\n\n const isSelected = nextProps.selectedPropertyKey?.startsWith(nextProps.namespace ?? \"\");\n const wasSelected = prevProps.selectedPropertyKey?.startsWith(prevProps.namespace ?? \"\");\n if (isSelected || wasSelected)\n return false;\n\n return equal(prevProps.properties, nextProps.properties) &&\n prevProps.propertiesOrder === nextProps.propertiesOrder &&\n equal(prevProps.additionalFields, nextProps.additionalFields) &&\n equal(prevProps.errors, nextProps.errors) &&\n equal(prevProps.onPropertyClick, nextProps.onPropertyClick) &&\n // equal(prevProps.onPropertyMove, nextProps.onPropertyMove) &&\n // equal(prevProps.onPropertyRemove, nextProps.onPropertyRemove) &&\n prevProps.namespace === nextProps.namespace &&\n prevProps.collectionEditable === nextProps.collectionEditable;\n }\n);\n\nexport function PropertyTreeEntry({\n propertyKey,\n namespace,\n propertyOrBuilder,\n additionalField,\n provided,\n selectedPropertyKey,\n errors,\n onPropertyClick,\n onPropertyMove,\n onPropertyRemove,\n inferredPropertyKeys,\n collectionEditable\n }: {\n propertyKey: string;\n namespace?: string;\n propertyOrBuilder: PropertyOrBuilder;\n additionalField?: AdditionalFieldDelegate<any>;\n selectedPropertyKey?: string;\n provided: DraggableProvided;\n errors: Record<string, any>;\n onPropertyClick?: (propertyKey: string, namespace?: string) => void;\n onPropertyMove?: (propertiesOrder: string[], namespace?: string) => void;\n onPropertyRemove?: (propertyKey: string, namespace?: string) => void;\n inferredPropertyKeys?: string[];\n collectionEditable: boolean;\n}) {\n\n const isPropertyInferred = inferredPropertyKeys?.includes(namespace ? `${namespace}.${propertyKey}` : propertyKey);\n const fullId = getFullId(propertyKey, namespace);\n const fullIdPath = getFullIdPath(propertyKey, namespace);\n const hasError = fullIdPath in errors;\n\n let subtree;\n if (typeof propertyOrBuilder === \"object\") {\n const property = propertyOrBuilder;\n if (property.dataType === \"map\" && property.properties) {\n subtree = <PropertyTree\n selectedPropertyKey={selectedPropertyKey}\n namespace={fullId}\n properties={property.properties}\n propertiesOrder={property.propertiesOrder}\n errors={errors}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={onPropertyRemove}\n collectionEditable={collectionEditable}\n />\n }\n }\n\n // const hasError = fullId ? getIn(errors, idToPropertiesPath(fullId)) : false;\n const selected = selectedPropertyKey === fullId;\n const editable = propertyOrBuilder && ((collectionEditable && !isPropertyBuilder(propertyOrBuilder)) || editableProperty(propertyOrBuilder));\n\n return (\n <div\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n className=\"relative -ml-8\"\n >\n {subtree && <div\n className={\"absolute border-l \" + defaultBorderMixin}\n style={{\n left: \"32px\",\n top: \"64px\",\n bottom: \"16px\"\n }}/>}\n\n {!isPropertyBuilder(propertyOrBuilder) && !additionalField && editable\n ? <PropertyFieldPreview\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n includeName={true}\n selected={selected}\n hasError={hasError}/>\n : <NonEditablePropertyPreview name={propertyKey}\n property={propertyOrBuilder}\n onClick={onPropertyClick ? () => onPropertyClick(propertyKey, namespace) : undefined}\n selected={selected}/>}\n\n <div className=\"absolute top-2 right-2 flex flex-row \">\n\n {isPropertyInferred && <Tooltip title={\"Inferred property\"}>\n <AutorenewIcon size=\"small\" className={\"p-2\"}/>\n </Tooltip>}\n\n {onPropertyRemove && <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n color=\"inherit\"\n onClick={() => onPropertyRemove(propertyKey, namespace)}>\n <RemoveIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n\n {onPropertyMove && <Tooltip title={\"Move\"}\n asChild={true}>\n <IconButton\n component={\"span\"}\n size=\"small\"\n >\n <DragHandleIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>}\n </div>\n\n {subtree && <div className={\"ml-16\"}>{subtree}</div>}\n </div>\n );\n\n}\n","import React, { useState } from \"react\";\nimport { FieldCaption, MapProperty, Property, PropertyConfig, } from \"@firecms/core\";\nimport { AddIcon, BooleanSwitchWithLabel, Button, Paper, Typography } from \"@firecms/ui\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath, namespaceToPropertiesPath } from \"../util\";\n\nexport function MapPropertyField({ disabled, getData, allowDataInference, propertyConfigs, collectionEditable }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<MapProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const propertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const onPropertyCreated = ({\n id,\n property\n }: { id?: string, property: Property }) => {\n if (!id)\n throw Error();\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const currentPropertiesOrder = values.propertiesOrder ?? Object.keys(values.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"propertiesOrder\", newPropertiesOrder, false);\n\n setPropertyDialogOpen(false);\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n const propertiesPath = idToPropertiesPath(fullId);\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n\n setFieldValue(propertiesPath, undefined, false);\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const empty = !propertiesOrder || propertiesOrder.length < 1;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className=\"flex justify-between items-end my-4\">\n <Typography variant={\"subtitle2\"}>Properties in this group</Typography>\n <Button\n color=\"primary\"\n variant={\"outlined\"}\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this group\"}\n </Button>\n </div>\n <Paper className=\"p-2 pl-8\">\n <PropertyTree\n properties={values.properties ?? {}}\n propertiesOrder={propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={(propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={onPropertyMove}/>\n\n {empty &&\n <Typography variant={\"label\"}\n className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this group\n </Typography>}\n </Paper>\n </div>\n\n <div className={\"col-span-12\"}>\n <BooleanSwitchWithLabel\n position={\"start\"}\n size={\"small\"}\n label=\"Spread children as columns\"\n onValueChange={(v) => setFieldValue(\"spreadChildren\", v)}\n value={values.spreadChildren ?? false}\n />\n <FieldCaption>\n Set this flag to true if you want to display the children of this group as individual columns. This\n will only work for top level groups.\n </FieldCaption>\n </div>\n\n <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n getData={getData}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyCreated}\n existingPropertyKeys={selectedPropertyKey ? undefined : propertiesOrder}\n propertyConfigs={propertyConfigs}\n />\n\n </>);\n}\n","import React, { useState } from \"react\";\nimport { ArrayProperty, getFieldConfig, Property, PropertyConfig } from \"@firecms/core\";\nimport { Button, Paper, Typography } from \"@firecms/ui\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { PropertyFormDialog } from \"../PropertyEditView\";\nimport { PropertyFieldPreview } from \"../PropertyFieldPreview\";\nimport { ArrayPropertyValidation } from \"./validation/ArrayPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function RepeatPropertyField({\n showErrors,\n existing,\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n showErrors: boolean,\n existing: boolean,\n disabled: boolean,\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n handleChange,\n errors,\n setFieldValue,\n touched\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState(false);\n const ofProperty = getIn(values, \"of\");\n const ofPropertyError = getIn(touched, \"of\") && getIn(errors, \"of\");\n\n const onPropertyChanged = ({ id, property, namespace }:\n { id?: string, property: Property, namespace?: string }) => {\n setFieldValue(\"of\", property);\n };\n\n const widget = ofProperty && getFieldConfig(ofProperty, propertyConfigs);\n return (\n <>\n <div className={\"col-span-12\"}>\n <Typography variant={\"subtitle2\"}>\n Repeat component\n </Typography>\n <Field\n name={\"of\"}\n value={ofProperty}\n // validate={(property: Property) => {\n // return property?.dataType ? undefined : \"You need to specify a repeat field\";\n // }}\n >\n {({}) => (\n <Paper className=\"p-2 mt-4\">\n\n {ofProperty && <PropertyFieldPreview\n property={ofProperty}\n onClick={disabled ? undefined : () => setPropertyDialogOpen(true)}\n includeName={false}\n includeEditButton={true}\n selected={false}\n hasError={false}/>}\n\n {!disabled && !ofProperty && <Button variant={\"text\"}\n size={\"large\"}\n color={ofPropertyError ? \"error\" : \"primary\"}\n onClick={() => setPropertyDialogOpen(true)}>\n Edit {`${widget ? widget.name : \"repeat component\"}`}\n </Button>}\n\n <PropertyFormDialog\n inArray={true}\n open={propertyDialogOpen}\n existingProperty={existing}\n getData={getData}\n autoUpdateId={!existing}\n autoOpenTypeSelect={!existing}\n onOkClicked={() => setPropertyDialogOpen(false)}\n allowDataInference={allowDataInference}\n property={ofProperty}\n includeIdAndName={false}\n onPropertyChanged={onPropertyChanged}\n forceShowErrors={showErrors}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />\n </Paper>\n )}\n </Field>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <ArrayPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { PropertyWithId } from \"../PropertyEditView\";\nimport React from \"react\";\nimport { FieldCaption, toSnakeCase, unslugify } from \"@firecms/core\";\n\ntype CommonPropertyFieldsProps = {\n showErrors: boolean,\n disabledId: boolean,\n disabled: boolean;\n isNewProperty: boolean;\n autoUpdateId: boolean;\n};\n\nexport const CommonPropertyFields = React.forwardRef<HTMLDivElement, CommonPropertyFieldsProps>(\n function CommonPropertyFields({\n showErrors,\n disabledId,\n disabled,\n autoUpdateId,\n isNewProperty\n }, ref) {\n\n const {\n errors,\n values,\n setFieldValue,\n setFieldTouched,\n touched,\n validate\n } = useFormex<PropertyWithId>();\n\n const name = \"name\";\n const nameError = showErrors && getIn(errors, name);\n\n const id = \"id\";\n const idError = showErrors && getIn(errors, id);\n\n const description = \"description\";\n const descriptionError = showErrors && getIn(errors, description);\n\n return (\n <div className={\"flex flex-col gap-2 col-span-12\"}>\n\n <div>\n <Field\n name={name}\n inputRef={ref}\n as={DebouncedTextField}\n value={values[name]}\n onChange={(e: any) => {\n const newNameValue = e.target.value;\n const idTouched = getIn(touched, id);\n if (!idTouched && autoUpdateId) {\n setFieldValue(id, newNameValue ? toSnakeCase(newNameValue) : \"\", false)\n }\n setFieldValue(name, newNameValue, true);\n setFieldTouched(name, true);\n }}\n style={{ fontSize: 20 }}\n placeholder={\"Field name\"}\n required\n disabled={disabled}\n error={Boolean(nameError)}/>\n\n <FieldCaption error={Boolean(nameError)}>\n {nameError}\n </FieldCaption>\n </div>\n\n <div>\n <Field\n name={id}\n as={DebouncedTextField}\n label={\"ID\"}\n value={values[id]}\n onChange={(e: any) => {\n const newIdValue = e.target.value;\n const nameTouched = getIn(touched, name);\n if (!nameTouched && autoUpdateId) {\n setFieldValue(name, newIdValue ? unslugify(newIdValue) : \"\")\n }\n setFieldValue(id, newIdValue, true);\n setFieldTouched(id, true);\n }}\n disabled={disabledId || disabled}\n required\n size=\"small\"\n error={Boolean(idError)}/>\n <FieldCaption error={Boolean(idError)}>\n {idError}\n </FieldCaption>\n </div>\n\n <div>\n <Field name={description}\n as={DebouncedTextField}\n label={\"Description\"}\n disabled={disabled}\n error={Boolean(descriptionError)}/>\n <FieldCaption error={Boolean(descriptionError)}>\n {descriptionError}\n </FieldCaption>\n </div>\n\n </div>\n );\n\n }\n);\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { TextField } from \"@firecms/ui\";\n\nexport function StringPropertyField({\n widgetId,\n disabled,\n showErrors\n }: {\n widgetId: \"text_field\" | \"multiline\" | \"email\";\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n {widgetId === \"text_field\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n matches={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n {widgetId === \"multiline\" &&\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>}\n\n {widgetId === \"email\" &&\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>}\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\n\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { SwitchControl } from \"../SwitchControl\";\n\nexport function BooleanPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n const { values } = useFormex();\n const defaultValue = getIn(values, \"defaultValue\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <Field\n name={\"defaultValue\"}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={defaultValue === null || defaultValue === undefined ? \"Default value not set\" : (\"Default value is \" + defaultValue.toString())}\n disabled={disabled}\n allowIndeterminate={true} field={field}\n form={form}/>\n }}\n </Field>\n\n </div>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { OnPropertyChangedParams, PropertyFormDialog } from \"../PropertyEditView\";\nimport {\n getFullId,\n getFullIdPath,\n idToPropertiesPath,\n namespaceToPropertiesOrderPath,\n namespaceToPropertiesPath\n} from \"../util\";\nimport { PropertyTree } from \"../PropertyTree\";\nimport { ArrayProperty, PropertyConfig } from \"@firecms/core\";\n\nexport function BlockPropertyField({\n disabled,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex<ArrayProperty>();\n\n const [propertyDialogOpen, setPropertyDialogOpen] = useState<boolean>(false);\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const onPropertyChanged = ({\n id,\n namespace,\n property\n }: OnPropertyChangedParams) => {\n if (!id)\n throw Error();\n\n setFieldValue(\"oneOf.\" + getFullIdPath(id, namespace), property, false);\n\n const currentPropertiesOrder = values.oneOf?.propertiesOrder ?? Object.keys(values.oneOf?.properties ?? {});\n const newPropertiesOrder = currentPropertiesOrder.includes(id) ? currentPropertiesOrder : [...currentPropertiesOrder, id];\n setFieldValue(\"oneOf.\" + namespaceToPropertiesOrderPath(namespace), newPropertiesOrder, false);\n setPropertyDialogOpen(false);\n };\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.oneOf?.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(`oneOf.${idToPropertiesPath(fullId)}`, undefined, false);\n const propertiesOrderPath = `oneOf.${namespaceToPropertiesOrderPath(namespace)}`;\n const currentPropertiesOrder: string[] = getIn(values, propertiesOrderPath) ?? Object.keys(getIn(values, namespaceToPropertiesPath(namespace)));\n setFieldValue(propertiesOrderPath, currentPropertiesOrder.filter((p) => p !== propertyKey), false);\n\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const addChildButton = <Button\n autoFocus\n color=\"primary\"\n\n onClick={() => setPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}\n >\n Add property to {values.name ?? \"this block\"}\n </Button>;\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(`oneOf.${namespaceToPropertiesOrderPath(namespace)}`, propertiesOrder, false);\n };\n\n return (\n <>\n <div className={\"col-span-12\"}>\n <div className={\"flex justify-between items-end mt-8 mb-4\"}>\n <Typography variant={\"subtitle2\"}>\n Properties in this block\n </Typography>\n {addChildButton}\n </div>\n <Paper className=\"p-2 pl-8\">\n\n <PropertyTree\n properties={values.oneOf?.properties ?? {}}\n propertiesOrder={values.oneOf?.propertiesOrder}\n errors={{}}\n collectionEditable={collectionEditable}\n onPropertyClick={disabled\n ? undefined\n : (propertyKey, namespace) => {\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n setPropertyDialogOpen(true);\n }}\n onPropertyMove={disabled\n ? undefined\n : onPropertyMove}/>\n\n {!disabled && (values.oneOf?.propertiesOrder?.length === 0)&&\n <div className=\"h-full flex items-center justify-center p-4\">\n Add the first property to this block\n </div>}\n\n </Paper>\n </div>\n\n {!disabled && <PropertyFormDialog\n inArray={false}\n forceShowErrors={false}\n open={propertyDialogOpen}\n getData={getData}\n allowDataInference={allowDataInference}\n onCancel={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n onOkClicked={() => {\n setPropertyDialogOpen(false);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n }}\n collectionEditable={collectionEditable}\n onDelete={deleteProperty}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n existingProperty={Boolean(selectedPropertyKey)}\n autoUpdateId={!selectedPropertyKey}\n autoOpenTypeSelect={!selectedPropertyKey}\n onPropertyChanged={onPropertyChanged}\n existingPropertyKeys={selectedPropertyKey ? undefined : values.oneOf?.propertiesOrder}\n propertyConfigs={propertyConfigs}/>}\n\n </>);\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps, getIn, useFormex } from \"@firecms/formex\";\nimport { DebouncedTextField } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./GeneralPropertyValidation\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function NumberPropertyValidation({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n handleChange\n } = useFormex();\n\n const validationMin = \"validation.min\";\n const validationMax = \"validation.max\";\n const validationLessThan = \"validation.lessThan\";\n const validationMoreThan = \"validation.moreThan\";\n const validationPositive = \"validation.positive\";\n const validationNegative = \"validation.negative\";\n const validationInteger = \"validation.integer\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <GeneralPropertyValidation disabled={disabled}/>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMin)}\n label={\"Min value\"}\n name={validationMin}\n type=\"number\"\n size=\"small\"\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField value={getIn(values, validationMax)}\n label={\"Max value\"}\n name={validationMax}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationLessThan)}\n label={\"Less than\"}\n name={validationLessThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-6\"}>\n <DebouncedTextField\n value={getIn(values, validationMoreThan)}\n label={\"More than\"}\n name={validationMoreThan}\n type=\"number\"\n size=\"small\"\n\n disabled={disabled}\n onChange={handleChange}/>\n </div>\n\n <div className={\"col-span-4\"}>\n <Field name={validationPositive}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Positive value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationNegative}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Negative value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n <div className={\"col-span-4\"}>\n <Field name={validationInteger}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Integer value\"}\n disabled={disabled}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { NumberPropertyValidation } from \"./validation/NumberPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { TextField } from \"@firecms/ui\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nexport function NumberPropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n return (\n <>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <NumberPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n type={\"number\"}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : parseFloat(e.target.value));\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React from \"react\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, IconForView, NumberProperty, StringProperty, useNavigationController } from \"@firecms/core\";\nimport { CircularProgress, Select, SelectGroup, SelectItem, Typography, } from \"@firecms/ui\";\n\nexport function ReferencePropertyField({\n existing,\n multiple,\n disabled,\n showErrors\n }: {\n existing: boolean,\n multiple: boolean,\n disabled: boolean,\n showErrors: boolean\n}) {\n\n const {\n values,\n handleChange,\n errors,\n } = useFormex<StringProperty | NumberProperty>();\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const pathPath = multiple ? \"of.path\" : \"path\";\n const pathValue: string | undefined = getIn(values, pathPath);\n const pathError: string | undefined = showErrors && getIn(errors, pathPath);\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Field name={pathPath}\n pathPath={pathPath}\n type=\"select\"\n disabled={(existing && Boolean(pathValue)) || disabled}\n value={pathValue}\n error={pathError}\n handleChange={handleChange}\n as={CollectionsSelect}/>\n\n </div>\n\n </>\n );\n}\n\nexport function CollectionsSelect({\n disabled,\n pathPath,\n value,\n handleChange,\n error,\n ...props\n }: {\n disabled: boolean,\n pathPath: string,\n value?: string,\n handleChange: (event: any) => void,\n error?: string\n}) {\n\n const navigation = useNavigationController();\n\n if (!navigation)\n return <div className={\"col-span-12\"}>\n <CircularProgress/>\n </div>;\n\n const collections = navigation?.collections ?? [];\n\n const groups: string[] = Array.from(new Set(\n Object.values(collections).map(e => e.group).filter(Boolean) as string[]\n ).values());\n\n const ungroupedCollections = collections.filter((col) => !col.group);\n\n return (\n <>\n <Select\n error={Boolean(error)}\n disabled={disabled}\n value={value ?? \"\"}\n position={\"item-aligned\"}\n name={pathPath}\n size={\"large\"}\n fullWidth={true}\n onChange={handleChange}\n label={\"Target collection\"}\n renderValue={(selected) => {\n const selectedCollection = collections.find(collection => collection.id === selected || collection.path === selected);\n if (!selectedCollection) return null;\n return (\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={selectedCollection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {selectedCollection?.name.toUpperCase()}\n </Typography>\n </div>)\n }}\n {...props}>\n\n {groups.flatMap((group) => (\n <SelectGroup label={group || \"Views\"}\n key={`group_${group}`}>\n {\n collections.filter(collection => collection.group === group)\n .map((collection) => {\n return <SelectItem\n key={`${collection.id ?? collection.path}-${group}`}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>\n ))}\n\n {ungroupedCollections && <SelectGroup label={\"Views\"}>\n {ungroupedCollections\n .map((collection) => {\n return <SelectItem key={collection.id ?? collection.path}\n value={collection.id ?? collection.path}>\n <div className=\"flex flex-row\">\n <IconForView collectionOrView={collection}/>\n <Typography\n variant={\"subtitle2\"}\n className=\"font-medium ml-4\">\n {collection?.name.toUpperCase()}\n </Typography>\n </div>\n </SelectItem>;\n })\n\n }\n </SelectGroup>}\n\n </Select>\n\n <FieldCaption>\n You can only edit the reference collection upon field\n creation.\n </FieldCaption>\n </>\n );\n}\n","import React from \"react\";\nimport { getIn, useFormex } from \"@firecms/formex\";\nimport { FieldCaption, NumberProperty, StringProperty } from \"@firecms/core\";\nimport { Select, SelectItem } from \"@firecms/ui\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\n\nexport function DateTimePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n const {\n values,\n errors,\n touched,\n setFieldValue\n } = useFormex<StringProperty | NumberProperty>();\n\n const modePath = \"mode\";\n const modeValue: string | undefined = getIn(values, modePath);\n const modeError: string | undefined = getIn(touched, modePath) && getIn(errors, modePath);\n\n const autoValuePath = \"autoValue\";\n const autoValueValue: string | undefined = getIn(values, autoValuePath);\n const autoValueError: string | undefined = getIn(touched, autoValuePath) && getIn(errors, autoValuePath);\n\n return (\n <>\n <div className={\"flex flex-col col-span-12 gap-2\"}>\n <div>\n <Select name={modePath}\n value={modeValue ?? \"date\"}\n error={Boolean(modeError)}\n size={\"large\"}\n onValueChange={(v) => setFieldValue(modePath, v)}\n label={\"Mode\"}\n fullWidth={true}\n renderValue={(v) => {\n switch (v) {\n case \"date_time\":\n return \"Date/Time\";\n case \"date\":\n return \"Date\";\n default:\n return \"\";\n }\n }}\n disabled={disabled}>\n <SelectItem value={\"date_time\"}> Date/Time </SelectItem>\n <SelectItem value={\"date\"}> Date </SelectItem>\n </Select>\n <FieldCaption error={Boolean(modeError)}>\n {modeError}\n </FieldCaption>\n </div>\n <div>\n <Select name={autoValuePath}\n disabled={disabled}\n size={\"large\"}\n fullWidth={true}\n value={autoValueValue ?? \"\"}\n onValueChange={(v) => setFieldValue(autoValuePath, v === \"none\" ? null : v)}\n renderValue={(v) => {\n switch (v) {\n case \"on_create\":\n return \"On create\";\n case \"on_update\":\n return \"On any update\";\n default:\n return \"None\";\n }\n }}\n error={Boolean(autoValueError)}\n label={\"Automatic value\"}>\n <SelectItem value={\"none\"}> None </SelectItem>\n <SelectItem value={\"on_create\"}> On create </SelectItem>\n <SelectItem value={\"on_update\"}> On any update </SelectItem>\n </Select>\n <FieldCaption error={Boolean(autoValueError)}>\n {autoValueError ?? \"Update this field automatically when creating or updating the entity\"}\n </FieldCaption>\n </div>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n </div>\n </>\n );\n}\n","import React from \"react\";\n\nimport { Field, FormexFieldProps } from \"@firecms/formex\";\nimport { SwitchControl } from \"../../SwitchControl\";\n\nexport function AdvancedPropertyValidation({ disabled }: {\n disabled: boolean\n}) {\n\n const columnWidth = \"columnWidth\";\n const hideFromCollection = \"hideFromCollection\";\n const readOnly = \"readOnly\";\n\n return (\n\n <div className={\"grid grid-cols-12 gap-2\"}>\n <div className={\"col-span-12\"}>\n <Field type=\"checkbox\" name={hideFromCollection}>\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Hide from collection\"}\n disabled={disabled}\n form={form}\n tooltip={\"Hide this field from the collection view. It will still be visible in the form view\"}\n field={field}/>\n }}\n </Field>\n </div>\n\n <div className={\"col-span-12\"}>\n <Field name={readOnly}\n type=\"checkbox\">\n {({ field, form }: FormexFieldProps) => {\n return <SwitchControl\n label={\"Read only\"}\n disabled={disabled}\n tooltip={\"Is this a read only field. Display only as a preview\"}\n form={form}\n field={field}/>\n }}\n </Field>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { GeneralPropertyValidation } from \"./validation/GeneralPropertyValidation\";\n\nexport function KeyValuePropertyField({ disabled }: {\n disabled: boolean;\n}) {\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n <GeneralPropertyValidation disabled={disabled}/>\n </ValidationPanel>\n\n </div>\n </>\n );\n}\n","import {\n ArrayProperty,\n BooleanProperty,\n DateProperty,\n MapProperty,\n mergeDeep,\n NumberProperty,\n Property,\n PropertyConfig,\n StringProperty\n} from \"@firecms/core\";\n\nexport function updatePropertyFromWidget(propertyData: any,\n selectedWidgetId: string | undefined,\n propertyConfigs: Record<string, PropertyConfig>): Property {\n\n let updatedProperty;\n if (selectedWidgetId === \"text_field\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"text_field\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multiline\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"multiline\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n multiline: true,\n storage: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"markdown\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"markdown\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: true,\n email: undefined,\n url: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"url\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"url\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: true,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"email\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"email\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: true,\n url: undefined,\n enumValues: undefined\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: undefined,\n multiline: undefined,\n markdown: undefined,\n email: undefined,\n url: undefined,\n enumValues: propertyData.enumValues ?? []\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"number_input\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_input\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: undefined\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"number\",\n propertyConfig: \"number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n enumValues: propertyData.enumValues ?? []\n } satisfies NumberProperty\n );\n } else if (selectedWidgetId === \"multi_number_select\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_number_select\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"number\",\n enumValues: propertyData.of?.enumValues ?? []\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"string\",\n propertyConfig: \"file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n storage: {\n storagePath: \"/\"\n }\n } satisfies StringProperty\n );\n } else if (selectedWidgetId === \"multi_file_upload\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_file_upload\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"string\",\n storage: propertyData.of?.storage ?? {\n storagePath: \"/\"\n }\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"group\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"group\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: false,\n properties: propertyData.properties ?? {}\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"key_value\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"map\",\n propertyConfig: \"key_value\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n keyValue: true,\n properties: undefined\n } satisfies MapProperty\n );\n } else if (selectedWidgetId === \"reference\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"reference\",\n propertyConfig: \"reference\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies Property\n );\n } else if (selectedWidgetId === \"multi_references\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"multi_references\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n of: {\n dataType: \"reference\"\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"switch\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"boolean\",\n propertyConfig: \"switch\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies BooleanProperty\n );\n } else if (selectedWidgetId === \"date_time\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"date\",\n propertyConfig: \"date_time\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n mode: \"date_time\"\n } satisfies DateProperty\n );\n } else if (selectedWidgetId === \"repeat\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"repeat\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId === \"block\") {\n updatedProperty = mergeDeep(\n propertyData,\n {\n dataType: \"array\",\n propertyConfig: \"block\",\n editable: propertyData.editable !== undefined ? propertyData.editable : true,\n oneOf: {\n properties: {}\n }\n } satisfies ArrayProperty\n );\n } else if (selectedWidgetId && propertyConfigs[selectedWidgetId]) {\n updatedProperty = {\n ...propertyConfigs[selectedWidgetId].property,\n propertyConfig: selectedWidgetId\n };\n }\n\n return updatedProperty;\n}\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { Select, SelectItem, TextField } from \"@firecms/ui\";\n\nexport function UrlPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const { values, setFieldValue } = useFormex();\n\n const urlValue = getIn(values, \"url\");\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <Select\n disabled={disabled}\n position={\"item-aligned\"}\n fullWidth={true}\n onValueChange={(value: string) => {\n if (value === \"[NONE]\")\n setFieldValue(\"url\", true);\n else\n setFieldValue(\"url\", value);\n }}\n label={\"Preview type\"}\n renderValue={(value: string) => {\n switch (value) {\n case \"image\":\n return \"Image\";\n case \"video\":\n return \"Video\";\n case \"audio\":\n return \"Audio\";\n default:\n return \"Display URL\";\n }\n }}\n value={urlValue ?? \"[NONE]\"}>\n <SelectItem value={\"[NONE]\"}>\n Display URL\n </SelectItem>\n <SelectItem value={\"image\"}>\n Image\n </SelectItem>\n <SelectItem value={\"video\"}>\n Video\n </SelectItem>\n <SelectItem value={\"audio\"}>\n Audio\n </SelectItem>\n </Select>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n max={true}\n min={true}\n trim={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import { DEFAULT_FIELD_CONFIGS, PropertyConfigId, PropertyConfig } from \"@firecms/core\";\n\nexport const supportedFieldsIds: PropertyConfigId[] = [\n \"text_field\",\n \"multiline\",\n \"markdown\",\n \"url\",\n \"email\",\n \"select\",\n \"multi_select\",\n \"number_input\",\n \"number_select\",\n \"multi_number_select\",\n \"file_upload\",\n \"multi_file_upload\",\n \"reference\",\n \"multi_references\",\n \"switch\",\n \"date_time\",\n \"group\",\n \"key_value\",\n \"repeat\",\n \"block\"\n];\n\nexport const supportedFields: Record<string, PropertyConfig> = Object.entries(DEFAULT_FIELD_CONFIGS)\n .filter(([id]) => supportedFieldsIds.includes(id as PropertyConfigId))\n .map(([id, config]) => ({ [id]: config }))\n .reduce((a, b) => ({ ...a, ...b }), {});\n","import React from \"react\";\nimport { StringPropertyValidation } from \"./validation/StringPropertyValidation\";\nimport { ValidationPanel } from \"./validation/ValidationPanel\";\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\n\nimport { CloudUploadIcon, DebouncedTextField, ExpandablePanel, TextField, Typography } from \"@firecms/ui\";\n\nexport function MarkdownPropertyField({\n disabled,\n showErrors\n }: {\n disabled: boolean;\n showErrors: boolean;\n}) {\n\n const {\n values,\n setFieldValue\n } = useFormex();\n\n const baseStoragePath = \"storage\";\n\n const metadata = `${baseStoragePath}.metadata`;\n const fileName = `${baseStoragePath}.fileName`;\n const maxSize = `${baseStoragePath}.maxSize`;\n const storagePath = `${baseStoragePath}.storagePath`;\n\n const fileNameValue = getIn(values, fileName) ?? \"{rand}_{file}\";\n const storagePathValue = getIn(values, storagePath) ?? \"/\";\n const maxSizeValue = getIn(values, maxSize);\n\n const hasFilenameCallback = typeof fileNameValue === \"function\";\n const hasStoragePathCallback = typeof storagePathValue === \"function\";\n\n return (\n <>\n <div className={\"col-span-12\"}>\n\n <ValidationPanel>\n\n <StringPropertyValidation disabled={disabled}\n length={true}\n lowercase={true}\n max={true}\n min={true}\n trim={true}\n uppercase={true}\n showErrors={showErrors}/>\n\n </ValidationPanel>\n\n </div>\n\n <div className={\"col-span-12\"}>\n <ExpandablePanel\n title={\n <div className=\"flex flex-row text-surface-500\">\n <CloudUploadIcon/>\n <Typography variant={\"subtitle2\"}\n className=\"ml-2\">\n File upload config\n </Typography>\n </div>\n }>\n\n <div className={\"grid grid-cols-12 gap-2 p-4\"}>\n\n\n <div className={\"col-span-12\"}>\n <Field name={fileName}\n as={DebouncedTextField}\n label={\"File name\"}\n size={\"small\"}\n disabled={hasFilenameCallback || disabled}\n value={hasFilenameCallback ? \"-\" : fileNameValue}\n />\n </div>\n <div className={\"col-span-12\"}>\n <Field name={storagePath}\n as={DebouncedTextField}\n label={\"Storage path\"}\n disabled={hasStoragePathCallback || disabled}\n size={\"small\"}\n value={hasStoragePathCallback ? \"-\" : storagePathValue}\n />\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n <p>You can use the following placeholders in\n the file name\n and storage path values:</p>\n <ul>\n <li>{\"{file} - Full name of the uploaded file\"}</li>\n <li>{\"{file.name} - Name of the uploaded file without extension\"}</li>\n <li>{\"{file.ext} - Extension of the uploaded file\"}</li>\n <li>{\"{entityId} - ID of the entity\"}</li>\n <li>{\"{propertyKey} - ID of this field\"}</li>\n <li>{\"{path} - Path of this entity\"}</li>\n <li>{\"{rand} - Random value used to avoid name collisions\"}</li>\n </ul>\n </Typography>\n\n <Typography variant={\"caption\"} className={\"ml-3.5 mt-1 mb-2\"}>\n When using Markdown, the URL of the uploaded files are always saved in the text value\n (not\n the path).\n </Typography>\n </div>\n\n <div className={\"col-span-12\"}>\n <DebouncedTextField name={maxSize}\n type={\"number\"}\n label={\"Max size (in bytes)\"}\n size={\"small\"}\n value={maxSizeValue !== undefined && maxSizeValue !== null ? maxSizeValue.toString() : \"\"}\n onChange={(e) => {\n const value = e.target.value;\n if (value === \"\") setFieldValue(maxSize, undefined);\n else setFieldValue(maxSize, parseInt(value));\n }}\n />\n </div>\n\n </div>\n </ExpandablePanel>\n </div>\n\n <div className={\"col-span-12\"}>\n\n <TextField name={\"defaultValue\"}\n disabled={disabled}\n onChange={(e: any) => {\n setFieldValue(\"defaultValue\", e.target.value === \"\" ? undefined : e.target.value);\n }}\n label={\"Default value\"}\n value={getIn(values, \"defaultValue\") ?? \"\"}/>\n\n </div>\n </>\n );\n}\n","import React, { useDeferredValue, useEffect, useRef, useState } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { Formex, FormexController, getIn, useCreateFormex } from \"@firecms/formex\";\nimport {\n ConfirmationDialog,\n DEFAULT_FIELD_CONFIGS,\n getFieldConfig,\n getFieldId, isEmptyObject,\n isPropertyBuilder,\n isValidRegExp,\n mergeDeep,\n Property,\n PropertyConfig,\n PropertyConfigBadge,\n PropertyConfigId,\n} from \"@firecms/core\";\nimport {\n Button,\n Card,\n cls,\n DeleteIcon,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n IconButton,\n InfoLabel,\n Tooltip,\n Typography,\n WarningIcon\n} from \"@firecms/ui\";\nimport { EnumPropertyField } from \"./properties/EnumPropertyField\";\nimport { StoragePropertyField } from \"./properties/StoragePropertyField\";\nimport { MapPropertyField } from \"./properties/MapPropertyField\";\nimport { RepeatPropertyField } from \"./properties/RepeatPropertyField\";\nimport { CommonPropertyFields } from \"./properties/CommonPropertyFields\";\nimport { StringPropertyField } from \"./properties/StringPropertyField\";\nimport { BooleanPropertyField } from \"./properties/BooleanPropertyField\";\nimport { BlockPropertyField } from \"./properties/BlockPropertyField\";\nimport { NumberPropertyField } from \"./properties/NumberPropertyField\";\nimport { ReferencePropertyField } from \"./properties/ReferencePropertyField\";\nimport { DateTimePropertyField } from \"./properties/DateTimePropertyField\";\nimport { AdvancedPropertyValidation } from \"./properties/advanced/AdvancedPropertyValidation\";\nimport { editableProperty } from \"../../utils/entities\";\nimport { KeyValuePropertyField } from \"./properties/KeyValuePropertyField\";\nimport { updatePropertyFromWidget } from \"./utils/update_property_for_widget\";\nimport { UrlPropertyField } from \"./properties/UrlPropertyField\";\nimport { supportedFields } from \"./utils/supported_fields\";\nimport { MarkdownPropertyField } from \"./properties/MarkdownPropertyField\";\n\nexport type PropertyWithId = Property & {\n id?: string\n};\n\nexport type OnPropertyChangedParams = {\n id?: string,\n property: Property,\n namespace?: string,\n previousId?: string\n};\n\nexport type PropertyFormProps = {\n includeIdAndName?: boolean;\n existingProperty: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n inArray: boolean;\n propertyKey?: string;\n propertyNamespace?: string;\n property?: Property;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onPropertyChangedImmediate?: boolean;\n onDismiss?: () => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n initialErrors?: Record<string, any>;\n existingPropertyKeys?: string[];\n forceShowErrors?: boolean;\n allowDataInference: boolean;\n getData?: () => Promise<object[]>;\n getController?: (formex: FormexController<PropertyWithId>) => void;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport const PropertyForm = React.memo(\n function PropertyForm(props: PropertyFormProps) {\n\n const {\n includeIdAndName = true,\n autoOpenTypeSelect,\n existingProperty,\n autoUpdateId,\n inArray,\n propertyKey,\n existingPropertyKeys,\n propertyNamespace,\n property,\n onPropertyChanged,\n onPropertyChangedImmediate = true,\n onDismiss,\n onDelete,\n onError,\n initialErrors,\n forceShowErrors,\n allowDataInference,\n getController,\n getData,\n propertyConfigs,\n collectionEditable\n } = props;\n\n const initialValue: PropertyWithId = {\n id: \"\",\n name: \"\"\n } as PropertyWithId;\n\n const disabled = (Boolean(property && !editableProperty(property)) && !collectionEditable);\n\n const lastSubmittedProperty = useRef<OnPropertyChangedParams | undefined>(property ? {\n id: propertyKey,\n previousId: propertyKey,\n property\n } : undefined);\n\n const doOnPropertyChanged = ({\n id,\n property\n }: OnPropertyChangedParams) => {\n const params = {\n id,\n previousId: lastSubmittedProperty.current?.id,\n property,\n namespace: propertyNamespace\n };\n lastSubmittedProperty.current = params;\n onPropertyChanged?.(params);\n };\n\n const formexController = useCreateFormex<PropertyWithId>({\n debugId: \"PROPERTY_FORM\",\n initialValues: property\n ? { id: propertyKey, ...property } as PropertyWithId\n : initialValue,\n initialErrors,\n validateOnChange: true,\n validateOnInitialRender: true,\n onSubmit: (newPropertyWithId, controller) => {\n console.debug(\"onSubmit\", newPropertyWithId);\n const {\n id,\n ...property\n } = newPropertyWithId;\n doOnPropertyChanged({\n id,\n property: {\n ...property,\n editable: property.editable ?? true\n }\n });\n if (!existingProperty)\n controller.resetForm({ values: initialValue });\n },\n validation: (values) => {\n const errors: Record<string, any> = {};\n if (includeIdAndName) {\n if (!values.name) {\n errors.name = \"Required\";\n } else {\n const nameError = validateName(values.name);\n if (nameError)\n errors.name = nameError;\n }\n if (!values.id) {\n errors.id = \"Required\";\n } else {\n const idError = validateId(values.id, existingPropertyKeys);\n if (idError)\n errors.id = idError;\n }\n }\n\n if (values.dataType === \"string\") {\n if (values.validation?.matches && !isValidRegExp(values.validation?.matches.toString())) {\n errors.validation = {\n matches: \"Invalid regular expression\"\n }\n }\n }\n if (values.dataType === \"reference\" && !values.path) {\n errors.path = \"You must specify a target collection for the field\";\n }\n if (values.propertyConfig === \"repeat\") {\n if (!(values as any).of) {\n errors.of = \"You need to specify a repeat field\";\n }\n }\n if (values.propertyConfig === \"block\") {\n if (!(values as any).oneOf) {\n errors.oneOf = \"You need to specify the properties of this block\";\n }\n }\n return errors;\n }\n });\n\n useEffect(() => {\n getController?.(formexController);\n }, [formexController, getController]);\n\n return <Formex value={formexController}>\n <PropertyEditFormFields\n onPropertyChanged={onPropertyChangedImmediate\n ? doOnPropertyChanged\n : undefined}\n onDelete={onDelete}\n includeIdAndTitle={includeIdAndName}\n propertyNamespace={propertyNamespace}\n onError={onError}\n onDismiss={onDismiss}\n showErrors={forceShowErrors || formexController.submitCount > 0}\n existing={existingProperty}\n autoUpdateId={autoUpdateId}\n inArray={inArray}\n autoOpenTypeSelect={autoOpenTypeSelect}\n disabled={disabled}\n getData={getData}\n allowDataInference={allowDataInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n {...formexController}/>\n </Formex>;\n }, (a, b) =>\n a.getData === b.getData &&\n a.propertyKey === b.propertyKey &&\n a.propertyNamespace === b.propertyNamespace &&\n a.includeIdAndName === b.includeIdAndName &&\n a.autoOpenTypeSelect === b.autoOpenTypeSelect &&\n a.autoUpdateId === b.autoUpdateId &&\n a.existingPropertyKeys === b.existingPropertyKeys &&\n a.existingProperty === b.existingProperty\n);\n\nexport function PropertyFormDialog({\n open,\n onCancel,\n onOkClicked,\n onPropertyChanged,\n getData,\n collectionEditable,\n ...formProps\n }: PropertyFormProps & {\n open?: boolean;\n onOkClicked?: () => void;\n onCancel?: () => void;\n}) {\n const formexRef = useRef<FormexController<PropertyWithId>>();\n const getController = (helpers: FormexController<PropertyWithId>) => {\n formexRef.current = helpers;\n };\n\n return <Dialog\n open={open ?? false}\n maxWidth={\"xl\"}\n fullWidth={true}\n >\n <form noValidate={true}\n autoComplete={\"off\"}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formexRef.current?.handleSubmit(e)\n }}>\n <DialogTitle hidden>Property edit view</DialogTitle>\n <DialogContent>\n\n <PropertyForm {...formProps}\n onDismiss={onCancel}\n onPropertyChanged={(params) => {\n onPropertyChanged?.(params);\n onOkClicked?.();\n }}\n collectionEditable={collectionEditable}\n onPropertyChangedImmediate={false}\n getController={getController}\n getData={getData}\n />\n </DialogContent>\n\n <DialogActions>\n\n {onCancel && <Button\n variant={\"text\"}\n onClick={() => {\n onCancel();\n formexRef.current?.resetForm();\n }}>\n Cancel\n </Button>}\n\n <Button variant=\"outlined\"\n type={\"submit\"}\n color=\"primary\">\n Ok\n </Button>\n </DialogActions>\n </form>\n </Dialog>;\n\n}\n\nfunction PropertyEditFormFields({\n values,\n errors,\n setValues,\n existing,\n autoUpdateId = false,\n autoOpenTypeSelect,\n includeIdAndTitle,\n onPropertyChanged,\n onDelete,\n propertyNamespace,\n onDismiss,\n onError,\n showErrors,\n disabled,\n inArray,\n getData,\n allowDataInference,\n propertyConfigs,\n collectionEditable\n }: {\n includeIdAndTitle?: boolean;\n existing: boolean;\n autoUpdateId?: boolean;\n autoOpenTypeSelect: boolean;\n propertyNamespace?: string;\n onDismiss?: () => void;\n onPropertyChanged?: (params: OnPropertyChangedParams) => void;\n onDelete?: (id?: string, namespace?: string) => void;\n onError?: (id: string, namespace?: string, error?: Record<string, any>) => void;\n showErrors: boolean;\n inArray: boolean;\n disabled: boolean;\n getData?: () => Promise<object[]>;\n allowDataInference: boolean;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n} & FormexController<PropertyWithId>) {\n\n const [selectOpen, setSelectOpen] = useState(autoOpenTypeSelect);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [selectedFieldConfigId, setSelectedFieldConfigId] = useState<string | undefined>(values?.dataType ? getFieldId(values) : undefined);\n\n const deferredValues = useDeferredValue(values);\n const nameFieldRef = useRef<HTMLInputElement>(null);\n\n const lastSubmittedProperty = useRef<object>(values);\n\n const selectedWidgetError = showErrors && getIn(errors, \"selectedWidget\");\n\n useEffect(() => {\n if (onPropertyChanged) {\n if ((!includeIdAndTitle || deferredValues.id)) {\n const {\n id,\n ...property\n } = deferredValues;\n if (!equal(deferredValues, lastSubmittedProperty.current)) {\n onPropertyChanged({\n id,\n property,\n namespace: propertyNamespace\n });\n lastSubmittedProperty.current = deferredValues;\n }\n }\n }\n }, [deferredValues, includeIdAndTitle, propertyNamespace]);\n\n useEffect(() => {\n if (values?.id && onError && !isEmptyObject(errors)) {\n onError(values?.id, propertyNamespace, errors);\n }\n }, [errors, propertyNamespace, values?.id]);\n\n const onWidgetSelectChanged = (newSelectedWidgetId: PropertyConfigId) => {\n setSelectedFieldConfigId(newSelectedWidgetId);\n setValues(updatePropertyFromWidget(values, newSelectedWidgetId, propertyConfigs));\n // Ugly hack to autofocus the name field\n setTimeout(() => {\n nameFieldRef.current?.focus();\n }, 0);\n };\n\n let childComponent;\n if (selectedFieldConfigId === \"text_field\" ||\n selectedFieldConfigId === \"multiline\" ||\n selectedFieldConfigId === \"email\") {\n childComponent =\n <StringPropertyField widgetId={selectedFieldConfigId}\n disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"url\") {\n childComponent =\n <UrlPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"markdown\") {\n childComponent =\n <MarkdownPropertyField disabled={disabled}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"select\" ||\n selectedFieldConfigId === \"number_select\") {\n childComponent = <EnumPropertyField\n multiselect={false}\n allowDataInference={allowDataInference}\n updateIds={!existing}\n disabled={disabled}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"multi_select\" ||\n selectedFieldConfigId === \"multi_number_select\") {\n childComponent = <EnumPropertyField\n multiselect={true}\n updateIds={!existing}\n disabled={disabled}\n allowDataInference={allowDataInference}\n getData={getData}\n showErrors={showErrors}/>;\n } else if (selectedFieldConfigId === \"file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_file_upload\") {\n childComponent =\n <StoragePropertyField existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"switch\") {\n childComponent = <BooleanPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"number_input\") {\n childComponent = <NumberPropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"group\") {\n childComponent =\n <MapPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"block\") {\n childComponent =\n <BlockPropertyField disabled={disabled} getData={getData} allowDataInference={allowDataInference}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"reference\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={false}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"date_time\") {\n childComponent = <DateTimePropertyField disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"multi_references\") {\n childComponent =\n <ReferencePropertyField showErrors={showErrors}\n existing={existing}\n multiple={true}\n disabled={disabled}/>;\n } else if (selectedFieldConfigId === \"repeat\") {\n childComponent =\n <RepeatPropertyField showErrors={showErrors}\n existing={existing}\n getData={getData}\n allowDataInference={allowDataInference}\n disabled={disabled}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>;\n } else if (selectedFieldConfigId === \"key_value\") {\n childComponent =\n <KeyValuePropertyField disabled={disabled}/>;\n } else {\n childComponent = null;\n }\n\n return (\n <>\n {disabled && <InfoLabel mode={\"warn\"}>\n <Typography>This property can&apos;t be edited</Typography>\n <Typography variant={\"caption\"}>\n You may not have permission to\n edit it or it is defined in code with no <code>editable</code> flag\n </Typography>\n </InfoLabel>}\n\n <div className=\"flex mt-2 justify-between\">\n <div className={\"w-full flex flex-col gap-2\"}>\n <WidgetSelectView\n initialProperty={values}\n value={selectedFieldConfigId as PropertyConfigId}\n onValueChange={(value) => onWidgetSelectChanged(value as PropertyConfigId)}\n open={selectOpen}\n onOpenChange={(open, hasValue) => {\n if (!hasValue) {\n onDismiss?.();\n }\n setSelectOpen(open);\n }}\n disabled={disabled}\n showError={Boolean(selectedWidgetError)}\n existing={existing}\n propertyConfigs={propertyConfigs}\n inArray={inArray}/>\n\n {selectedWidgetError &&\n <Typography variant=\"caption\"\n className={\"ml-3.5\"}\n color={\"error\"}>Required</Typography>}\n\n {/*<Typography variant=\"caption\" className={\"ml-3.5\"}>Define your own custom properties and*/}\n {/* components</Typography>*/}\n\n </div>\n\n {onDelete && values?.id &&\n <IconButton\n variant={\"ghost\"}\n className=\"m-4\"\n disabled={disabled}\n onClick={() => setDeleteDialogOpen(true)}>\n <DeleteIcon/>\n </IconButton>}\n </div>\n\n <div className={\"grid grid-cols-12 gap-y-12 mt-8 mb-8\"}>\n {includeIdAndTitle &&\n <CommonPropertyFields showErrors={showErrors}\n disabledId={existing}\n isNewProperty={!existing}\n disabled={disabled}\n autoUpdateId={autoUpdateId}\n ref={nameFieldRef}/>}\n\n {childComponent}\n\n <div className={\"col-span-12\"}>\n <AdvancedPropertyValidation disabled={disabled}/>\n </div>\n </div>\n\n {onDelete &&\n <ConfirmationDialog open={deleteDialogOpen}\n onAccept={() => onDelete(values?.id, propertyNamespace)}\n onCancel={() => setDeleteDialogOpen(false)}\n title={<div>Delete this property?</div>}\n body={\n <div> This will <b>not delete any\n data</b>, only modify the\n collection.</div>\n }/>}\n\n </>\n );\n}\n\nconst idRegEx = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction validateId(value?: string, existingPropertyKeys?: string[]) {\n\n let error;\n if (!value) {\n error = \"You must specify an id for the field\";\n }\n if (value && !value.match(idRegEx)) {\n error = \"The id can only contain letters, numbers and underscores (_), and not start with a number\";\n }\n if (value && existingPropertyKeys && existingPropertyKeys.includes(value)) {\n error = \"There is another field with this ID already\";\n }\n return error;\n}\n\nfunction validateName(value: string) {\n let error;\n if (!value) {\n error = \"You must specify a title for the field\";\n }\n return error;\n}\n\nconst WIDGET_TYPE_MAP: Record<PropertyConfigId, string> = {\n text_field: \"Text\",\n multiline: \"Text\",\n markdown: \"Text\",\n url: \"Text\",\n email: \"Text\",\n switch: \"Boolean\",\n select: \"Select\",\n multi_select: \"Select\",\n number_input: \"Number\",\n number_select: \"Select\",\n multi_number_select: \"Select\",\n file_upload: \"File\",\n multi_file_upload: \"File\",\n reference: \"Reference\",\n multi_references: \"Reference\",\n date_time: \"Date\",\n group: \"Group\",\n key_value: \"Group\",\n repeat: \"Array\",\n custom_array: \"Array\",\n block: \"Group\"\n};\n\nfunction WidgetSelectView({\n initialProperty,\n value,\n onValueChange,\n open,\n onOpenChange,\n disabled,\n showError,\n existing,\n propertyConfigs,\n inArray\n }: {\n initialProperty?: PropertyWithId,\n value?: PropertyConfigId,\n onValueChange: (value: string) => void,\n showError: boolean,\n open: boolean,\n onOpenChange: (open: boolean, hasValue: boolean) => void,\n disabled: boolean,\n existing: boolean,\n propertyConfigs: Record<string, PropertyConfig>,\n inArray?: boolean\n}) {\n\n const allSupportedFields = Object.entries(supportedFields).concat(Object.entries(propertyConfigs));\n\n const displayedWidgets = (inArray\n ? allSupportedFields.filter(([_, propertyConfig]) => !isPropertyBuilder(propertyConfig.property) && propertyConfig.property?.dataType !== \"array\")\n : allSupportedFields)\n .map(([key, propertyConfig]) => ({\n [key]: propertyConfig\n }))\n .reduce((a, b) => {\n return {\n ...a,\n ...b\n }\n }, {});\n\n const key = value;\n const propertyConfig = key ? (DEFAULT_FIELD_CONFIGS[key] ?? propertyConfigs[key]) : undefined;\n const baseProperty = propertyConfig?.property;\n const baseFieldConfig = baseProperty && !isPropertyBuilder(baseProperty) ? getFieldConfig(baseProperty, propertyConfigs) : undefined;\n const computedFieldConfig = baseFieldConfig && propertyConfig ? mergeDeep(baseFieldConfig, propertyConfig) : propertyConfig;\n\n const groups: string[] = [...new Set(Object.keys(displayedWidgets).map(key => {\n const group = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (group) {\n return group;\n }\n return \"Custom/Other\"\n }))];\n\n return <>\n <div\n onClick={() => {\n if (!disabled) {\n onOpenChange(!open, Boolean(value));\n }\n }}\n className={cls(\n \"select-none rounded-md text-sm p-4\",\n fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n )}>\n {!value && <em>Select a property widget</em>}\n {value && computedFieldConfig && <div\n className={cls(\n \"flex items-center\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={computedFieldConfig}/>\n </div>\n <div className={\"flex flex-col items-start text-base text-left\"}>\n <div>{computedFieldConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n {computedFieldConfig.description}\n </Typography>\n </div>\n </div>}\n </div>\n <Dialog open={open}\n onOpenChange={(open) => onOpenChange(open, Boolean(value))}\n maxWidth={\"4xl\"}>\n <DialogTitle>\n Select a property widget\n </DialogTitle>\n <DialogContent>\n <div>\n {groups.map(group => {\n return <div key={group} className={\"mt-4\"}>\n <Typography variant={\"label\"}>{group}</Typography>\n <div className={\"grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-2 mt-4\"}>\n {Object.entries(displayedWidgets).map(([key, propertyConfig]) => {\n const groupKey = WIDGET_TYPE_MAP[key as PropertyConfigId];\n if (groupKey === group) {\n return <WidgetSelectViewItem\n key={key}\n initialProperty={initialProperty}\n onClick={() => {\n onValueChange(key);\n onOpenChange(false, true);\n }}\n propertyConfig={propertyConfig}\n existing={existing}/>;\n }\n return null;\n })}\n </div>\n </div>;\n })}\n {/*{displayedWidgets.map(([key, propertyConfig]) => {*/}\n {/* return <WidgetSelectViewItem*/}\n {/* key={key}*/}\n {/* initialProperty={initialProperty}*/}\n {/* onClick={() => {*/}\n {/* onValueChange(key);*/}\n {/* onOpenChange(false);*/}\n {/* }}*/}\n {/* propertyConfig={propertyConfig}*/}\n {/* existing={existing}/>;*/}\n {/*})}*/}\n </div>\n </DialogContent>\n </Dialog>\n </>;\n}\n\nexport interface PropertySelectItemProps {\n onClick?: () => void;\n initialProperty?: PropertyWithId;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function WidgetSelectViewItem({\n onClick,\n initialProperty,\n // optionDisabled,\n propertyConfig,\n existing\n }: PropertySelectItemProps) {\n const baseProperty = propertyConfig.property;\n const shouldWarnChangingDataType = existing && !isPropertyBuilder(baseProperty) && baseProperty.dataType !== initialProperty?.dataType;\n\n return <Card\n onClick={onClick}\n className={\"flex flex-row items-center px-4 py-2\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n )}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig} disabled={shouldWarnChangingDataType}/>\n </div>\n <div>\n <div className={\"flex flex-row gap-2 items-center\"}>\n {shouldWarnChangingDataType && <Tooltip\n title={\"This widget uses a different data type than the initially selected widget. This can cause errors with existing data.\"}>\n <WarningIcon size=\"smallest\" className={\"w-4\"}/>\n </Tooltip>}\n <Typography\n color={shouldWarnChangingDataType ? \"secondary\" : undefined}>{propertyConfig.name}</Typography>\n </div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"max-w-sm\"}>\n {propertyConfig.description}\n </Typography>\n\n </div>\n </div>\n </Card>\n}\n","export function camelCase(str: string): string {\n if (!str) return \"\";\n return (str.slice(0, 1).toLowerCase() + str.slice(1))\n .replace(/([-_ ]){1,}/g, \" \")\n .split(/[-_ ]/)\n .reduce((cur, acc) => {\n return cur + acc[0].toUpperCase() + acc.substring(1);\n }, \"\");\n}\n","import { EntityCollection, isEmptyObject, useSnackbarController } from \"@firecms/core\";\nimport { Button, ContentCopyIcon, Dialog, DialogActions, DialogContent, DialogTitle, Typography, } from \"@firecms/ui\";\nimport React from \"react\";\nimport JSON5 from \"json5\";\nimport { Highlight, themes } from \"prism-react-renderer\"\nimport { camelCase } from \"./utils/strings\";\nimport { clone } from \"@firecms/formex\";\n\nexport function GetCodeDialog({\n collection,\n onOpenChange,\n open\n }: { onOpenChange: (open: boolean) => void, collection: any, open: any }) {\n\n const snackbarController = useSnackbarController();\n\n const code = collection\n ? \"import { EntityCollection } from \\\"@firecms/core\\\";\\n\\nconst \" + (collection?.name ? camelCase(collection.name) : \"my\") + \"Collection:EntityCollection = \" + JSON5.stringify(collectionToCode({ ...collection }), null, \"\\t\")\n : \"No collection selected\";\n return <Dialog open={open}\n onOpenChange={onOpenChange}\n maxWidth={\"4xl\"}>\n <DialogTitle variant={\"h6\"}>Code for {collection.name}</DialogTitle>\n <DialogContent>\n\n <Typography variant={\"body2\"} className={\"my-4 mb-8\"}>\n If you want to customise the collection in code, you can add this collection code to your CMS\n app configuration.\n More info in the <a\n rel=\"noopener noreferrer\"\n href={\"https://firecms.co/docs/customization_quickstart\"}>docs</a>.\n </Typography>\n <Highlight\n theme={themes.vsDark}\n code={code}\n language=\"typescript\"\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps\n }) => (\n <pre style={style} className={\"p-4 rounded text-sm\"}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n </DialogContent>\n <DialogActions>\n <Button\n variant={\"text\"}\n size={\"small\"}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n snackbarController.open({\n type: \"success\",\n message: `Copied`\n })\n return navigator.clipboard.writeText(code);\n }}>\n <ContentCopyIcon size={\"small\"}/>\n Copy to clipboard\n </Button>\n <Button onClick={() => onOpenChange(false)}>Close</Button>\n </DialogActions>\n </Dialog>;\n}\n\nfunction collectionToCode(collection: EntityCollection): object {\n\n const propertyCleanup = (value: any): any => {\n if (value === undefined || value === null) {\n return value;\n }\n const valueCopy = clone(value);\n if (typeof valueCopy === \"function\") {\n return valueCopy;\n }\n if (Array.isArray(valueCopy)) {\n return valueCopy.map((v: any) => propertyCleanup(v));\n }\n if (typeof valueCopy === \"object\") {\n if (valueCopy === null)\n return valueCopy;\n Object.keys(valueCopy).forEach((key) => {\n if (!isEmptyObject(valueCopy)) {\n const childRes = propertyCleanup(valueCopy[key]);\n if (childRes !== null && childRes !== undefined && childRes !== false && !isEmptyObject(childRes)) {\n valueCopy[key] = childRes;\n } else {\n delete valueCopy[key];\n }\n }\n });\n delete valueCopy.fromBuilder;\n delete valueCopy.resolved;\n delete valueCopy.propertiesOrder;\n delete valueCopy.propertyConfig;\n delete valueCopy.resolvedProperties;\n delete valueCopy.editable;\n\n }\n\n return valueCopy;\n }\n\n return {\n id: collection.id,\n name: collection.name,\n singularName: collection.singularName,\n path: collection.path,\n description: collection.description,\n editable: true,\n collectionGroup: collection.collectionGroup,\n icon: collection.icon,\n group: collection.group,\n customId: collection.customId,\n initialFilter: collection.initialFilter,\n initialSort: collection.initialSort,\n properties: Object.entries({\n ...(collection.properties ?? {})\n })\n .map(([key, value]) => ({\n [key]: propertyCleanup(value)\n }))\n .reduce((a, b) => ({ ...a, ...b }), {}),\n subcollections: (collection.subcollections ?? []).map(collectionToCode)\n }\n\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\n\nimport { Field, getIn, useFormex } from \"@firecms/formex\";\nimport {\n EntityCollection,\n ErrorBoundary,\n isPropertyBuilder,\n makePropertiesEditable,\n Properties,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n useLargeLayout,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n AddIcon,\n AutorenewIcon,\n Button,\n CircularProgress,\n cls,\n CodeIcon,\n DebouncedTextField,\n defaultBorderMixin,\n IconButton,\n Paper,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\n\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"./util\";\nimport { OnPropertyChangedParams, PropertyForm, PropertyFormDialog } from \"./PropertyEditView\";\nimport { PropertyTree } from \"./PropertyTree\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { GetCodeDialog } from \"./GetCodeDialog\";\n\ntype CollectionEditorFormProps = {\n showErrors: boolean;\n isNewCollection: boolean;\n propertyErrorsRef?: React.MutableRefObject<any>;\n onPropertyError: (propertyKey: string, namespace: string | undefined, error?: Record<string, any>) => void;\n setDirty?: (dirty: boolean) => void;\n reservedGroups?: string[];\n extraIcon: React.ReactNode;\n getUser?: (uid: string) => User | null;\n getData?: () => Promise<object[]>;\n doCollectionInference: (collection: PersistedCollection) => Promise<Partial<EntityCollection> | null> | undefined;\n propertyConfigs: Record<string, PropertyConfig>;\n collectionEditable: boolean;\n};\n\nexport function CollectionPropertiesEditorForm({\n showErrors,\n isNewCollection,\n propertyErrorsRef,\n onPropertyError,\n setDirty,\n reservedGroups,\n extraIcon,\n getUser,\n getData,\n doCollectionInference,\n propertyConfigs,\n collectionEditable\n }: CollectionEditorFormProps) {\n\n const {\n values,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n errors,\n dirty\n } = useFormex<PersistedCollection>();\n\n const snackbarController = useSnackbarController();\n\n const largeLayout = useLargeLayout();\n const asDialog = !largeLayout\n\n // index of the selected property within the namespace\n const [selectedPropertyIndex, setSelectedPropertyIndex] = useState<number | undefined>();\n const [selectedPropertyKey, setSelectedPropertyKey] = useState<string | undefined>();\n const [selectedPropertyNamespace, setSelectedPropertyNamespace] = useState<string | undefined>();\n\n const selectedPropertyFullId = selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined;\n const selectedProperty = selectedPropertyFullId ? getIn(values.properties, selectedPropertyFullId.replaceAll(\".\", \".properties.\")) : undefined;\n const [codeDialogOpen, setCodeDialogOpen] = useState<boolean>(false);\n\n const [inferringProperties, setInferringProperties] = useState<boolean>(false);\n\n const [newPropertyDialogOpen, setNewPropertyDialogOpen] = useState<boolean>(false);\n const [inferredPropertyKeys, setInferredPropertyKeys] = useState<string[]>([]);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n useEffect(() => {\n if (setDirty)\n setDirty(dirty);\n }, [dirty]);\n\n const inferPropertiesFromData = doCollectionInference\n ? (): void => {\n if (!doCollectionInference)\n return;\n\n setInferringProperties(true);\n // @ts-ignore\n doCollectionInference(values)\n .then((newCollection) => {\n\n if (newCollection)\n makePropertiesEditable(newCollection.properties as Properties);\n\n if (!newCollection) {\n snackbarController.open({\n type: \"error\",\n message: \"Could not infer properties from data\"\n });\n return;\n }\n // find properties in the new collection, not present in the current one\n const newPropertyKeys = (newCollection.properties ? Object.keys(newCollection.properties) : [])\n .filter((propertyKey) => !values.properties[propertyKey]);\n if (newPropertyKeys.length === 0) {\n snackbarController.open({\n type: \"info\",\n message: \"No new properties found in existing data\"\n });\n return;\n }\n // add them to the current collection\n const updatedProperties = {\n ...newPropertyKeys.reduce((acc, propertyKey) => {\n acc[propertyKey] = (newCollection.properties ?? {})[propertyKey];\n return acc;\n }, {} as {\n [key: string]: PropertyOrBuilder\n }),\n ...values.properties\n };\n const updatedPropertiesOrder = [\n ...newPropertyKeys,\n ...(values.propertiesOrder ?? [])\n ];\n setFieldValue(\"properties\", updatedProperties, false);\n\n updatePropertiesOrder(updatedPropertiesOrder);\n\n setInferredPropertyKeys(newPropertyKeys);\n })\n .finally(() => {\n setInferringProperties(false);\n })\n }\n : undefined;\n\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"] ?? getIn(values, namespaceToPropertiesOrderPath());\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n };\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n const deleteProperty = (propertyKey?: string, namespace?: string) => {\n const fullId = propertyKey ? getFullId(propertyKey, namespace) : undefined;\n if (!fullId)\n throw Error(\"collection editor miss config\");\n\n setFieldValue(idToPropertiesPath(fullId), undefined, false);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n if (currentPropertiesOrder) {\n const newPropertiesOrder = currentPropertiesOrder.filter((p) => p !== propertyKey);\n updatePropertiesOrder(newPropertiesOrder, namespace);\n }\n\n setNewPropertyDialogOpen(false);\n\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyMove = (propertiesOrder: string[], namespace?: string) => {\n setFieldValue(namespaceToPropertiesOrderPath(namespace), propertiesOrder, false);\n };\n\n const onPropertyCreated = ({\n id,\n property\n }: {\n id?: string,\n property: Property\n }) => {\n if (!id) {\n throw Error(\"Need to include an ID when creating a new property\")\n }\n setFieldValue(\"properties\", {\n ...(values.properties ?? {}),\n [id]: property\n }, false);\n\n const newPropertiesOrder = [...(values.propertiesOrder ?? Object.keys(values.properties)), id];\n updatePropertiesOrder(newPropertiesOrder);\n\n setNewPropertyDialogOpen(false);\n if (largeLayout) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setSelectedPropertyNamespace(undefined);\n };\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n console.log(\"!!!!!! onPropertyChanged\", property)\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n if (id) {\n setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n setSelectedPropertyKey(id);\n }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n console.debug(\"onPropertyChanged\", {\n id,\n property,\n previousId,\n namespace,\n propertyPath\n })\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n\n };\n\n const onPropertyErrorInternal = (id: string, namespace?: string, error?: Record<string, any>) => {\n const propertyPath = id ? getFullId(id, namespace) : undefined;\n console.debug(\"onPropertyErrorInternal\", {\n id,\n namespace,\n error,\n propertyPath\n });\n if (propertyPath) {\n const hasError = error && Object.keys(error).length > 0;\n onPropertyError(id, namespace, hasError ? error : undefined);\n setFieldError(idToPropertiesPath(propertyPath), hasError ? \"Property error\" : undefined);\n }\n }\n\n const closePropertyDialog = () => {\n setSelectedPropertyIndex(undefined);\n setSelectedPropertyKey(undefined);\n };\n\n const initialErrors = selectedPropertyKey && propertyErrorsRef?.current?.properties ? propertyErrorsRef.current.properties[selectedPropertyKey] : undefined;\n\n const emptyCollection = values?.propertiesOrder === undefined || values.propertiesOrder.length === 0;\n\n const usedPropertiesOrder = (values.propertiesOrder\n ? values.propertiesOrder\n : Object.keys(values.properties)) as string[];\n\n const owner = useMemo(() => values.ownerId && getUser ? getUser(values.ownerId) : null, [getUser, values.ownerId]);\n\n const onPropertyClick = (propertyKey: string, namespace?: string) => {\n console.debug(\"CollectionEditor: onPropertyClick\", {\n propertyKey,\n namespace\n });\n setSelectedPropertyIndex(usedPropertiesOrder.indexOf(propertyKey));\n setSelectedPropertyKey(propertyKey);\n setSelectedPropertyNamespace(namespace);\n };\n\n const body = (\n <div className={\"grid grid-cols-12 gap-2 h-full bg-surface-50 dark:bg-surface-900\"}>\n <div className={cls(\n \"p-4 md:p-8 pb-20 md:pb-20\",\n \"col-span-12 lg:col-span-5 h-full overflow-auto\",\n !asDialog && \"border-r \" + defaultBorderMixin\n )}>\n\n <div className=\"flex my-2\">\n\n <div className=\"flex-grow mb-4\">\n\n <Field\n name={\"name\"}\n as={DebouncedTextField}\n invisible={true}\n className=\"-ml-1\"\n inputClassName=\"text-2xl font-headers\"\n placeholder={\"Collection name\"}\n size={\"small\"}\n required\n error={Boolean(errors?.name)}/>\n\n {owner &&\n <Typography variant={\"body2\"}\n className={\"ml-2\"}\n color={\"secondary\"}>\n Created by {owner.displayName}\n </Typography>}\n </div>\n\n {extraIcon && <div className=\"ml-4\">\n {extraIcon}\n </div>}\n\n <div className=\"ml-1 mt-2 flex flex-row gap-2\">\n <Tooltip title={\"Get the code for this collection\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={() => setCodeDialogOpen(true)}>\n <CodeIcon/>\n </IconButton>\n </Tooltip>\n {inferPropertiesFromData && <Tooltip title={\"Add new properties based on data\"}\n asChild={true}>\n <IconButton\n variant={\"filled\"}\n disabled={inferringProperties}\n onClick={inferPropertiesFromData}>\n {inferringProperties ? <CircularProgress size={\"small\"}/> : <AutorenewIcon/>}\n </IconButton>\n </Tooltip>}\n <Tooltip title={\"Add new property\"}\n asChild={true}>\n <Button\n variant={\"outlined\"}\n onClick={() => setNewPropertyDialogOpen(true)}>\n <AddIcon/>\n </Button>\n </Tooltip>\n </div>\n </div>\n\n <ErrorBoundary>\n <PropertyTree\n className={\"pl-8\"}\n inferredPropertyKeys={inferredPropertyKeys}\n selectedPropertyKey={selectedPropertyKey ? getFullId(selectedPropertyKey, selectedPropertyNamespace) : undefined}\n properties={values.properties}\n additionalFields={values.additionalFields}\n propertiesOrder={usedPropertiesOrder}\n onPropertyClick={onPropertyClick}\n onPropertyMove={onPropertyMove}\n onPropertyRemove={isNewCollection ? deleteProperty : undefined}\n collectionEditable={collectionEditable}\n errors={errors}/>\n </ErrorBoundary>\n\n <Button className={\"mt-8 w-full\"}\n color=\"primary\"\n variant={\"outlined\"}\n size={\"large\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n startIcon={<AddIcon/>}>\n Add new property\n </Button>\n </div>\n\n {!asDialog &&\n <div className={\"col-span-12 lg:col-span-7 p-4 md:py-8 md:px-4 h-full overflow-auto pb-20 md:pb-20\"}>\n <Paper\n className=\"sticky top-8 p-4 min-h-full border border-transparent w-full flex flex-col justify-center \">\n\n {selectedPropertyFullId &&\n selectedProperty &&\n !isPropertyBuilder(selectedProperty) &&\n <PropertyForm\n inArray={false}\n key={`edit_view_${selectedPropertyIndex}`}\n existingProperty={!isNewCollection}\n autoUpdateId={false}\n allowDataInference={!isNewCollection}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n />}\n\n {!selectedProperty &&\n <div className={\"w-full flex flex-col items-center justify-center h-full gap-4\"}>\n <Typography variant={\"label\"} className=\"\">\n {emptyCollection\n ? \"Now you can add your first property\"\n : \"Select a property to edit it\"}\n </Typography>\n <Button variant={\"outlined\"}\n onClick={() => setNewPropertyDialogOpen(true)}\n >\n <AddIcon/>\n Add new property\n </Button>\n </div>}\n\n {selectedProperty && isPropertyBuilder(selectedProperty) &&\n <Typography variant={\"label\"} className=\"flex items-center justify-center\">\n {\"This property is defined as a property builder in code\"}\n </Typography>}\n </Paper>\n </div>}\n\n {asDialog && <PropertyFormDialog\n inArray={false}\n open={selectedPropertyIndex !== undefined}\n key={`edit_view_${selectedPropertyIndex}`}\n autoUpdateId={!selectedProperty}\n allowDataInference={!isNewCollection}\n existingProperty={true}\n autoOpenTypeSelect={false}\n propertyKey={selectedPropertyKey}\n propertyNamespace={selectedPropertyNamespace}\n property={selectedProperty}\n onPropertyChanged={onPropertyChanged}\n onDelete={deleteProperty}\n onError={onPropertyErrorInternal}\n forceShowErrors={showErrors}\n initialErrors={initialErrors}\n getData={getData}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n onCancel={closePropertyDialog}\n onOkClicked={asDialog\n ? closePropertyDialog\n : undefined\n }/>}\n\n </div>);\n\n return (<>\n\n {body}\n\n {/* This is the dialog used for new properties*/}\n <PropertyFormDialog\n inArray={false}\n existingProperty={false}\n autoOpenTypeSelect={true}\n autoUpdateId={true}\n forceShowErrors={showErrors}\n open={newPropertyDialogOpen}\n onCancel={() => setNewPropertyDialogOpen(false)}\n onPropertyChanged={onPropertyCreated}\n getData={getData}\n allowDataInference={!isNewCollection}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n existingPropertyKeys={values.propertiesOrder as string[]}/>\n\n <ErrorBoundary>\n <GetCodeDialog\n collection={values}\n open={codeDialogOpen}\n onOpenChange={setCodeDialogOpen}/>\n </ErrorBoundary>\n </>\n );\n}\n","import React from \"react\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\n\nexport interface UnsavedChangesDialogProps {\n open: boolean;\n body?: React.ReactNode;\n title?: string;\n handleOk: () => void;\n handleCancel: () => void;\n}\n\nexport function UnsavedChangesDialog({\n open,\n handleOk,\n handleCancel,\n body,\n title\n }: UnsavedChangesDialogProps) {\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => open ? handleCancel() : handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n\n <DialogTitle>{title ?? \"Unsaved changes\"}</DialogTitle>\n <DialogContent>\n {body && <Typography>\n {body}\n </Typography>}\n <Typography>\n Are you sure?\n </Typography>\n\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\" onClick={handleCancel} autoFocus> Cancel </Button>\n <Button onClick={handleOk}> Ok </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useCustomizationController } from \"@firecms/core\";\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from \"@firecms/ui\";\nimport React from \"react\";\n\nexport function EntityCustomViewsSelectDialog({\n open,\n onClose\n }: { open: boolean, onClose: (selectedViewKey?: string) => void }) {\n const {\n entityViews,\n } = useCustomizationController();\n\n return <Dialog\n maxWidth={\"md\"}\n open={open}>\n <DialogTitle>Select custom view</DialogTitle>\n <DialogContent className={\"flex flex-col gap-4\"}>\n {entityViews?.map((view) => {\n return <Button\n key={view.key}\n onClick={() => onClose(view.key)}\n fullWidth\n variant={\"text\"}\n >\n {view.name} ({view.key})\n </Button>;\n })}\n {(entityViews ?? []).length === 0 &&\n <Typography variant={\"body2\"}>\n No custom views defined\n </Typography>\n }\n </DialogContent>\n <DialogActions>\n <Button variant={\"outlined\"} onClick={() => onClose()}>Cancel</Button>\n </DialogActions>\n </Dialog>\n}\n","import React from \"react\";\nimport {\n ConfirmationDialog,\n EntityCollection,\n EntityCustomView,\n resolveEntityView,\n useCustomizationController,\n User\n} from \"@firecms/core\";\nimport {\n AddIcon,\n Alert,\n Button,\n Container,\n DeleteIcon,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from \"@firecms/ui\";\nimport { CollectionEditorDialog } from \"./CollectionEditorDialog\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { EntityCustomViewsSelectDialog } from \"./EntityCustomViewsSelectDialog\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function SubcollectionsEditTab({\n collection,\n parentCollection,\n configController,\n collectionInference,\n getUser,\n parentCollectionIds\n }: {\n collection: PersistedCollection,\n parentCollection?: EntityCollection,\n configController: CollectionsConfigController;\n collectionInference?: CollectionInference;\n getUser?: (uid: string) => User | null;\n parentCollectionIds?: string[];\n}) {\n\n const { entityViews: contextEntityViews } = useCustomizationController();\n\n const [subcollectionToDelete, setSubcollectionToDelete] = React.useState<string | undefined>();\n const [addEntityViewDialogOpen, setAddEntityViewDialogOpen] = React.useState<boolean>(false);\n const [viewToDelete, setViewToDelete] = React.useState<string | undefined>();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n editedCollectionId?: string,\n }>();\n\n const {\n values,\n setFieldValue,\n } = useFormex<EntityCollection>();\n\n const [subcollections, setSubcollections] = React.useState<EntityCollection[]>(collection.subcollections ?? []);\n const resolvedEntityViews = values.entityViews?.filter(e => typeof e === \"string\")\n .map(e => resolveEntityView(e, contextEntityViews))\n .filter(Boolean) as EntityCustomView[] ?? [];\n const hardCodedEntityViews = collection.entityViews?.filter(e => typeof e !== \"string\") as EntityCustomView[] ?? [];\n const totalEntityViews = resolvedEntityViews.length + hardCodedEntityViews.length;\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"2xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n <div className={\"flex flex-col gap-16\"}>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Subcollections of {values.name}\n </Typography>\n\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n {subcollections && subcollections.length > 0 && <Table>\n <TableBody>\n {subcollections.map((subcollection) => (\n <TableRow key={subcollection.path}\n onClick={() => setCurrentDialog({\n isNewCollection: false,\n editedCollectionId: subcollection.id\n })}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {subcollection.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setSubcollectionToDelete(subcollection.id);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>}\n\n <Button\n onClick={() => {\n setCurrentDialog({\n isNewCollection: true\n });\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add subcollection\n </Button>\n\n </Paper>\n\n </div>\n\n <div className={\"flex-grow flex flex-col gap-4 items-start\"}>\n <Typography variant={\"h5\"}>\n Custom views\n </Typography>\n\n {totalEntityViews === 0 &&\n <Alert action={<Button variant=\"text\"\n size={\"small\"}\n href={\"https://firecms.co/docs/cloud/quickstart\"}\n component={\"a\"}\n rel=\"noopener noreferrer\"\n target=\"_blank\">More info</Button>}>\n Define your own custom views by uploading them with the CLI.\n </Alert>\n }\n\n {<>\n <Paper className={\"flex flex-col gap-4 p-2 w-full\"}>\n <Table>\n <TableBody>\n {resolvedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n </TableCell>\n <TableCell\n align=\"right\">\n <Tooltip title={\"Remove\"}\n asChild={true}>\n <IconButton size=\"small\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setViewToDelete(view.key);\n }}\n color=\"inherit\">\n <DeleteIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {hardCodedEntityViews.map((view) => (\n <TableRow key={view.key}>\n <TableCell\n align=\"left\">\n <Typography variant={\"subtitle2\"} className={\"flex-grow\"}>\n {view.name}\n </Typography>\n <Typography variant={\"caption\"} className={\"flex-grow\"}>\n This view is defined in code with\n key <code>{view.key}</code>\n </Typography>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n <Button\n onClick={() => {\n setAddEntityViewDialogOpen(true);\n }}\n variant={\"text\"}\n startIcon={<AddIcon/>}>\n Add custom entity view\n </Button>\n </Paper>\n\n </>}\n\n\n </div>\n\n </div>\n </Container>\n\n <div style={{ height: \"52px\" }}/>\n\n {subcollectionToDelete &&\n <ConfirmationDialog open={Boolean(subcollectionToDelete)}\n onAccept={() => {\n const props = {\n id: subcollectionToDelete,\n parentCollectionIds: [...(parentCollectionIds ?? []), collection.id]\n };\n console.debug(\"Deleting subcollection\", props)\n configController.deleteCollection(props).then(() => {\n setSubcollectionToDelete(undefined);\n setSubcollections(subcollections?.filter(e => e.id !== subcollectionToDelete))\n });\n }}\n onCancel={() => setSubcollectionToDelete(undefined)}\n title={<>Delete this subcollection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>}\n {viewToDelete &&\n <ConfirmationDialog open={Boolean(viewToDelete)}\n onAccept={() => {\n setFieldValue(\"entityViews\", values.entityViews?.filter(e => e !== viewToDelete));\n setViewToDelete(undefined);\n }}\n onCancel={() => setViewToDelete(undefined)}\n title={<>Remove this view?</>}\n body={<>This will <b>not\n delete any data</b>, only\n the view in the CMS</>}/>}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={configController}\n parentCollection={collection}\n collectionInference={collectionInference}\n parentCollectionIds={[...parentCollectionIds ?? [], values.id]}\n isNewCollection={false}\n {...currentDialog}\n getUser={getUser}\n handleClose={(updatedCollection) => {\n if (updatedCollection && !subcollections.map(e => e.id).includes(updatedCollection.id)) {\n setSubcollections([...subcollections, updatedCollection]);\n }\n setCurrentDialog(undefined);\n }}/>\n\n <EntityCustomViewsSelectDialog\n open={addEntityViewDialogOpen}\n onClose={(selectedViewKey) => {\n if (selectedViewKey) {\n setFieldValue(\"entityViews\", [...(values.entityViews ?? []), selectedViewKey]);\n }\n setAddEntityViewDialogOpen(false);\n }}/>\n </div>\n );\n}\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const productsCollectionTemplate: EntityCollection = {\n id: \"products\",\n path: \"products\",\n name: \"Products\",\n singularName: \"Product\",\n icon: \"shopping_cart\",\n description: \"List of the products currently sold in your shop\",\n properties: makePropertiesEditable({\n name: {\n dataType: \"string\",\n name: \"Name\",\n description: \"Name of this product\",\n validation: {\n required: true\n }\n },\n brand: {\n dataType: \"string\",\n name: \"Brand\",\n validation: {\n required: true\n }\n },\n description: {\n dataType: \"string\",\n name: \"Description\",\n description: \"Description of this product, supports markdown\",\n markdown: true\n },\n main_image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n },\n description: \"Upload field for images\"\n },\n available: {\n dataType: \"boolean\",\n name: \"Available\",\n columnWidth: 100,\n description: \"Is this product available in the website\"\n },\n price: {\n dataType: \"number\",\n name: \"Price\",\n validation: {\n requiredMessage: \"You must set a positive price\",\n min: 0\n }\n },\n images: {\n dataType: \"array\",\n name: \"Images\",\n hideFromCollection: true,\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n },\n related_products: {\n dataType: \"array\",\n name: \"Related products\",\n description: \"Products related to this one\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n metadata: {\n name: \"Metadata\",\n description: \"This is an example of a map property\",\n dataType: \"map\",\n keyValue: true\n },\n added_on: {\n dataType: \"date\",\n name: \"Added on\",\n autoValue: \"on_create\"\n }\n })\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const blogCollectionTemplate:EntityCollection = {\n id: \"blog\",\n path: \"blog\",\n name: \"Blog\",\n singularName: \"Blog entry\",\n icon: \"article\",\n description: \"A collection of blog entries\",\n defaultSize: \"l\",\n properties: makePropertiesEditable({\n name: {\n name: \"Name\",\n validation: { required: true },\n dataType: \"string\"\n },\n header_image: {\n name: \"Header image\",\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n content: {\n name: \"Content\",\n description: \"Content blocks for the blog entry\",\n validation: { required: true },\n dataType: \"array\",\n oneOf: {\n typeField: \"type\",\n valueField: \"value\",\n properties: {\n text: {\n dataType: \"string\",\n name: \"Text\",\n markdown: true\n },\n quote: {\n dataType: \"string\",\n name: \"Quote\",\n multiline: true\n },\n images: {\n name: \"Images\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n storage: {\n storagePath: \"images\",\n acceptedFiles: [\"image/*\"],\n metadata: {\n cacheControl: \"max-age=1000000\"\n }\n }\n },\n description: \"This fields allows uploading multiple images at once and reordering\"\n },\n products: {\n name: \"Products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\",\n previewProperties: [\"name\", \"main_image\"]\n }\n }\n },\n propertiesOrder: [\"text\", \"quote\", \"images\", \"products\"]\n }\n },\n created_on: {\n name: \"Created on\",\n dataType: \"date\",\n autoValue: \"on_create\"\n },\n status: {\n name: \"Status\",\n validation: { required: true },\n dataType: \"string\",\n enumValues: {\n published: {\n id: \"published\",\n label: \"Published\",\n },\n draft: \"Draft\"\n },\n defaultValue: \"draft\"\n },\n publish_date: {\n name: \"Publish date\",\n dataType: \"date\",\n clearable: true\n },\n reviewed: {\n name: \"Reviewed\",\n dataType: \"boolean\"\n },\n tags: {\n name: \"Tags\",\n description: \"Example of generic array\",\n dataType: \"array\",\n of: {\n dataType: \"string\",\n previewAsTag: true\n }\n }\n }),\n initialFilter: {\n status: [\"==\", \"published\"]\n }\n};\n","import { EntityCollection, makePropertiesEditable } from \"@firecms/core\";\n\nexport const usersCollectionTemplate: EntityCollection = {\n id: \"users\",\n path: \"users\",\n name: \"Users\",\n singularName: \"User\",\n description: \"Registered users in the app/web\",\n icon: \"person\",\n properties: makePropertiesEditable({\n displayName: {\n name: \"Display name\",\n dataType: \"string\"\n },\n email: {\n name: \"Email\",\n dataType: \"string\",\n email: true\n },\n emailVerified: {\n name: \"Email verified\",\n dataType: \"boolean\"\n },\n phone: {\n name: \"Phone\",\n dataType: \"string\"\n },\n favourite_products: {\n name: \"Favourite products\",\n dataType: \"array\",\n of: {\n dataType: \"reference\",\n path: \"products\"\n }\n },\n photoURL: {\n name: \"Photo URL\",\n dataType: \"string\",\n url: \"image\"\n }\n }),\n};\n","import { EntityCollection } from \"@firecms/core\";\n\nexport const pagesCollectionTemplate: EntityCollection = {\n id: \"pages\",\n path: \"pages\",\n name: \"Pages\",\n singularName: \"Page\",\n icon: \"insert_drive_file\",\n description: \"List of website pages that can be edited here\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Page Title\",\n validation: { required: true }\n },\n slug: {\n dataType: \"string\",\n name: \"URL Slug\",\n validation: {\n required: true,\n unique: true,\n matches: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\",\n matchesMessage: \"Must be lowercase, alphanumeric, and hyphenated\"\n }\n },\n hero_section: {\n dataType: \"map\",\n name: \"Hero Section\",\n properties: {\n headline: {\n dataType: \"string\",\n name: \"Headline\",\n validation: { required: true }\n },\n subhead: {\n dataType: \"string\",\n name: \"Subheadline\"\n },\n background_image: {\n dataType: \"string\",\n name: \"Background Image\",\n storage: {\n storagePath: \"page_hero/images\",\n acceptedFiles: [\"image/*\"],\n }\n },\n call_to_action: {\n dataType: \"string\",\n name: \"Call to Action\"\n },\n call_to_action_link: {\n dataType: \"string\",\n name: \"CTA Link\",\n url: true\n }\n }\n },\n content: {\n dataType: \"array\",\n name: \"Content\",\n oneOf: {\n properties: {\n section: {\n dataType: \"map\",\n name: \"Section\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Section Title\",\n validation: { required: true }\n },\n content: {\n dataType: \"string\",\n name: \"Section Content\",\n markdown: true\n },\n image: {\n dataType: \"string\",\n name: \"Section Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n link: {\n dataType: \"string\",\n name: \"Section Link\",\n url: true\n }\n }\n },\n image: {\n dataType: \"string\",\n name: \"Image\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n },\n slider: {\n dataType: \"array\",\n name: \"Slider\",\n of: {\n dataType: \"map\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Title\",\n validation: { required: true }\n },\n image: {\n dataType: \"string\",\n storage: {\n storagePath: \"page_sections/images\",\n acceptedFiles: [\"image/*\"]\n }\n }\n }\n }\n },\n }\n }\n },\n sidebar: {\n dataType: \"map\",\n name: \"Sidebar\",\n properties: {\n title: {\n dataType: \"string\",\n name: \"Sidebar Title\",\n validation: { required: false }\n },\n content: {\n dataType: \"string\",\n name: \"Sidebar Content\",\n markdown: true\n }\n }\n },\n seo_metadata: {\n dataType: \"map\",\n name: \"SEO Metadata\",\n properties: {\n meta_title: {\n dataType: \"string\",\n name: \"Meta Title\"\n },\n meta_description: {\n dataType: \"string\",\n name: \"Meta Description\"\n },\n focus_keywords: {\n dataType: \"array\",\n name: \"Focus Keywords\",\n of: {\n dataType: \"string\"\n }\n }\n }\n },\n footer_override: {\n dataType: \"string\",\n name: \"Footer Override\",\n markdown: true\n },\n publish_date: {\n dataType: \"date\",\n name: \"Publish Date\",\n validation: { required: true }\n },\n last_updated: {\n dataType: \"date\",\n name: \"Last Updated\",\n autoValue: \"on_update\"\n },\n is_published: {\n dataType: \"boolean\",\n name: \"Is Published\",\n columnWidth: 100,\n description: \"Should this page be live on the site?\"\n }\n }\n};\n","import React, { useEffect, useState } from \"react\";\nimport { EntityCollection, unslugify, } from \"@firecms/core\";\nimport { Button, Card, Chip, CircularProgress, cls, Container, Icon, Tooltip, Typography, } from \"@firecms/ui\";\n\nimport { productsCollectionTemplate } from \"./templates/products_template\";\nimport { blogCollectionTemplate } from \"./templates/blog_template\";\nimport { usersCollectionTemplate } from \"./templates/users_template\";\nimport { ImportFileUpload } from \"@firecms/data_import_export\";\nimport { pagesCollectionTemplate } from \"./templates/pages_template\";\nimport { useFormex } from \"@firecms/formex\";\n\nexport function CollectionEditorWelcomeView({\n path,\n pathSuggestions,\n parentCollection,\n onContinue,\n existingCollectionPaths\n }: {\n path: string;\n pathSuggestions?: (path: string) => Promise<string[]>;\n parentCollection?: EntityCollection;\n onContinue: (importData?: object[], propertiesOrder?: string[]) => void;\n existingCollectionPaths?: string[];\n}) {\n\n const [loadingPathSuggestions, setLoadingPathSuggestions] = useState(false);\n const [filteredPathSuggestions, setFilteredPathSuggestions] = useState<string[] | undefined>();\n useEffect(() => {\n if (pathSuggestions && existingCollectionPaths) {\n setLoadingPathSuggestions(true);\n pathSuggestions(path)\n .then(suggestions => {\n const filteredSuggestions = suggestions.filter(s => !(existingCollectionPaths ?? []).find(c => c.trim().toLowerCase() === s.trim().toLowerCase()));\n setFilteredPathSuggestions(filteredSuggestions);\n })\n .finally(() => setLoadingPathSuggestions(false));\n }\n }, [existingCollectionPaths, path, pathSuggestions]);\n\n // const {\n // values,\n // setFieldValue,\n // setValues,\n // handleChange,\n // touched,\n // errors,\n // setFieldTouched,\n // isSubmitting,\n // submitCount\n // } = useFormex<EntityCollection>();\n\n const {\n values,\n setFieldValue,\n setValues,\n submitCount\n } = useFormex<EntityCollection>();\n\n return (\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"4xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <div\n className=\"flex flex-row py-2 pt-3 items-center\">\n <Typography variant={\"h4\"} className={\"flex-grow\"}>\n New collection\n </Typography>\n </div>\n\n {parentCollection && <Chip colorScheme={\"tealDarker\"}>\n <Typography variant={\"caption\"}>\n This is a subcollection of <b>{parentCollection.name}</b>\n </Typography>\n </Chip>}\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Use one of the existing paths in your database:\n </Typography>\n <div className={\"flex flex-wrap gap-x-2 gap-y-1 items-center my-2 min-h-7\"}>\n\n {loadingPathSuggestions && !filteredPathSuggestions && <CircularProgress size={\"small\"}/>}\n\n {filteredPathSuggestions?.map((suggestion, index) => (\n <Chip key={suggestion}\n colorScheme={\"cyanLighter\"}\n onClick={() => {\n setFieldValue(\"name\", unslugify(suggestion));\n setFieldValue(\"id\", suggestion);\n setFieldValue(\"path\", suggestion);\n setFieldValue(\"properties\", undefined);\n onContinue();\n }}\n size=\"small\">\n {suggestion}\n </Chip>\n ))}\n\n {!loadingPathSuggestions && (filteredPathSuggestions ?? [])?.length === 0 &&\n <Typography variant={\"caption\"}>\n No suggestions\n </Typography>\n }\n\n </div>\n\n </div>\n\n <div className={\"my-2\"}>\n <Typography variant={\"caption\"}\n color={\"secondary\"}>\n ● Select a template:\n </Typography>\n\n <div className={\"flex gap-4\"}>\n <TemplateButton title={\"Products\"}\n subtitle={\"A collection of products with images, prices and stock\"}\n icon={<Icon size={\"small\"} iconKey={productsCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(productsCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Users\"}\n subtitle={\"A collection of users with emails, names and roles\"}\n icon={<Icon size={\"small\"} iconKey={usersCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(usersCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Blog posts\"}\n subtitle={\"A collection of blog posts with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={blogCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(blogCollectionTemplate);\n onContinue();\n }}/>\n <TemplateButton title={\"Pages\"}\n subtitle={\"A collection of pages with images, authors and complex content\"}\n icon={<Icon size={\"small\"} iconKey={pagesCollectionTemplate.icon!}/>}\n onClick={() => {\n setValues(pagesCollectionTemplate);\n onContinue();\n }}/>\n </div>\n\n </div>\n\n {!parentCollection && <div>\n\n <Typography variant={\"caption\"}\n color={\"secondary\"}\n className={\"mb-2\"}>\n ● Create a collection from a file (csv, json, xls, xslx...)\n </Typography>\n\n <ImportFileUpload onDataAdded={(data, propertiesOrder) => onContinue(data, propertiesOrder)}/>\n\n </div>}\n\n <div>\n\n <Button variant={\"text\"} onClick={() => onContinue()} className={\"my-2\"}>\n Continue from scratch\n </Button>\n </div>\n\n {/*<div style={{ height: \"52px\" }}/>*/}\n\n </Container>\n </div>\n );\n}\n\nexport function TemplateButton({\n title,\n subtitle,\n icon,\n onClick\n }: {\n title: string,\n icon: React.ReactNode,\n subtitle: string,\n onClick?: () => void\n}) {\n\n return (\n <Tooltip title={subtitle}\n asChild={true}>\n <Card\n onClick={onClick}\n className={cls(\n \"my-2 rounded-md border mx-0 p-6 px-4 focus:outline-none transition ease-in-out duration-150 flex flex-row gap-4 items-center\",\n \"text-surface-700 dark:text-surface-accent-300\",\n \"hover:border-primary-dark hover:text-primary-dark dark:hover:text-primary focus:ring-primary hover:ring-1 hover:ring-primary\",\n \"border-surface-400 dark:border-surface-600 \"\n )}\n >\n {icon}\n <div className={\"flex flex-col items-start\"}>\n\n <Typography variant={\"subtitle1\"}>\n {title}\n </Typography>\n {/*<Typography>*/}\n {/* {subtitle}*/}\n {/*</Typography>*/}\n\n </div>\n </Card>\n </Tooltip>\n );\n\n}\n","import {\n DataNewPropertiesMapping,\n getInferenceType,\n ImportConfig,\n ImportNewPropertyFieldPreview\n} from \"@firecms/data_import_export\";\nimport { getIn, useFormex } from \"@firecms/formex\";\n\nimport { getFieldConfig, getFieldId, Properties, Property, PropertyConfig, PropertyConfigBadge, } from \"@firecms/core\";\nimport { cls, Container, Select, SelectItem, Tooltip, Typography } from \"@firecms/ui\";\nimport React, { useState } from \"react\";\nimport { OnPropertyChangedParams, PropertyFormDialog, PropertyWithId } from \"../PropertyEditView\";\nimport { getFullId, idToPropertiesPath, namespaceToPropertiesOrderPath } from \"../util\";\nimport { PersistedCollection } from \"../../../types/persisted_collection\";\nimport { updatePropertyFromWidget } from \"../utils/update_property_for_widget\";\nimport { supportedFields } from \"../utils/supported_fields\";\nimport { buildPropertyFromData } from \"@firecms/schema_inference\";\n\nexport function CollectionEditorImportMapping({\n importConfig,\n propertyConfigs,\n collectionEditable\n }:\n {\n importConfig: ImportConfig,\n propertyConfigs: Record<string, PropertyConfig>,\n collectionEditable: boolean\n }) {\n\n // const {\n // values,\n // setFieldValue,\n // setFieldTouched,\n // setValues,\n // submitCount\n // } = useFormex();\n\n const {\n setFieldValue,\n setFieldTouched,\n values\n } = useFormex<PersistedCollection>();\n const [selectedProperty, setSelectedProperty] = useState<PropertyWithId | undefined>(undefined);\n\n const currentPropertiesOrderRef = React.useRef<{\n [key: string]: string[]\n }>(values.propertiesOrder ? { \"\": values.propertiesOrder } : {});\n\n const propertyKey = selectedProperty ? selectedProperty.id : undefined;\n const property = selectedProperty || undefined;\n\n const onPropertyChanged = ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // setSelectedProperty(property);\n const getCurrentPropertiesOrder = (namespace?: string) => {\n if (!namespace) return currentPropertiesOrderRef.current[\"\"];\n return currentPropertiesOrderRef.current[namespace] ?? getIn(values, namespaceToPropertiesOrderPath(namespace));\n }\n\n const updatePropertiesOrder = (newPropertiesOrder: string[], namespace?: string) => {\n const propertiesOrderPath = namespaceToPropertiesOrderPath(namespace);\n\n setFieldValue(propertiesOrderPath, newPropertiesOrder, false);\n currentPropertiesOrderRef.current[namespace ?? \"\"] = newPropertiesOrder;\n\n };\n\n // If the id has changed we need to a little cleanup\n if (previousId && previousId !== id) {\n const previousFullId = getFullId(previousId, namespace);\n const previousPropertyPath = idToPropertiesPath(previousFullId);\n\n const currentPropertiesOrder = getCurrentPropertiesOrder(namespace);\n\n // replace previousId with id in propertiesOrder\n const newPropertiesOrder = currentPropertiesOrder\n .map((p) => p === previousId ? id : p)\n .filter((p) => p !== undefined) as string[];\n updatePropertiesOrder(newPropertiesOrder, namespace);\n\n // replace previousId with id in headersMapping\n const newHeadersMapping = { ...importConfig.headersMapping };\n Object.keys(newHeadersMapping).forEach((key) => {\n if (newHeadersMapping[key] === previousId) {\n newHeadersMapping[key] = id ?? \"\";\n }\n });\n importConfig.setHeadersMapping(newHeadersMapping);\n\n // if (id) {\n // setSelectedPropertyIndex(newPropertiesOrder.indexOf(id));\n // setSelectedPropertyKey(id);\n // }\n setFieldValue(previousPropertyPath, undefined, false);\n setFieldTouched(previousPropertyPath, false, false);\n }\n\n if (propertyPath) {\n setFieldValue(propertyPath, property, false);\n setFieldTouched(propertyPath, true, false);\n }\n };\n const onPropertyTypeChanged = async ({\n id,\n importKey,\n property,\n namespace\n }: OnPropertyChangedParams & {\n importKey: string\n }) => {\n\n const fullId = id ? getFullId(id, namespace) : undefined;\n const propertyPath = fullId ? idToPropertiesPath(fullId) : undefined;\n\n // we try to infer the rest of the properties of a property, from the type and the data\n const propertyData = importConfig.importData.map((d) => getIn(d, importKey));\n const inferredNewProperty = {\n ...buildPropertyFromData(propertyData, property, getInferenceType),\n editable: true\n };\n\n if (propertyPath) {\n if (inferredNewProperty) {\n setFieldValue(propertyPath, inferredNewProperty, false);\n } else {\n setFieldValue(propertyPath, property, false);\n }\n setFieldTouched(propertyPath, true, false);\n }\n };\n\n return (\n\n <div className={\"overflow-auto my-auto\"}>\n <Container maxWidth={\"6xl\"} className={\"flex flex-col gap-4 p-8 m-auto\"}>\n\n <Typography variant=\"h6\" className={\"my-4 ml-3.5\"}>Data property mapping</Typography>\n\n <DataNewPropertiesMapping importConfig={importConfig}\n destinationProperties={values.properties as Properties}\n buildPropertyView={({\n property,\n propertyKey,\n importKey,\n isIdColumn\n }) => {\n if (isIdColumn) {\n return <Typography> This column will be used as ID</Typography>\n }\n\n return <ImportNewPropertyFieldPreview\n property={property}\n propertyKey={propertyKey}\n onPropertyNameChanged={(propertyKey: string, value: string) => setFieldValue(`properties.${propertyKey}.name`, value, false)}\n onEditClick={() => {\n if (!propertyKey || !property) return;\n setSelectedProperty({\n ...property,\n id: propertyKey,\n editable: true\n });\n }}\n propertyTypeView={<PropertySelect property={property}\n disabled={false}\n onPropertyChanged={(props) => onPropertyTypeChanged({\n ...props,\n importKey\n })}\n propertyKey={propertyKey}\n propertyConfigs={propertyConfigs}/>}\n />;\n }}/>\n </Container>\n\n <PropertyFormDialog\n open={selectedProperty !== undefined}\n propertyKey={propertyKey}\n property={property}\n inArray={false}\n autoUpdateId={false}\n onPropertyChanged={onPropertyChanged}\n allowDataInference={false}\n collectionEditable={collectionEditable}\n onOkClicked={() => {\n setSelectedProperty(undefined);\n }}\n onCancel={() => {\n setSelectedProperty(undefined);\n }}\n autoOpenTypeSelect={false}\n existingProperty={false}\n propertyConfigs={propertyConfigs}/>\n\n <div style={{ height: \"52px\" }}/>\n </div>\n );\n\n}\n\nfunction PropertySelect({\n property,\n onPropertyChanged,\n propertyKey,\n propertyConfigs,\n disabled\n }: {\n property: Property | null,\n propertyKey: string | null,\n onPropertyChanged: ({\n id,\n property,\n previousId,\n namespace\n }: OnPropertyChangedParams) => void,\n propertyConfigs: Record<string, PropertyConfig>,\n disabled?: boolean\n}) {\n\n const fieldId = property ? getFieldId(property) : null;\n const widget = property ? getFieldConfig(property, propertyConfigs) : null;\n\n const [selectOpen, setSelectOpen] = useState(false);\n\n return <Tooltip title={property && widget ? `${widget?.name} - ${property.dataType}` : undefined}\n open={selectOpen ? false : undefined}>\n <Select\n open={selectOpen}\n onOpenChange={setSelectOpen}\n invisible={true}\n size={\"large\"}\n className={\"w-full\"}\n disabled={disabled}\n error={!widget}\n fullWidth={true}\n value={fieldId ?? \"\"}\n placeholder={\"Select a property widget\"}\n position={\"item-aligned\"}\n renderValue={(value) => {\n if (!widget) return null;\n return <PropertyConfigBadge propertyConfig={widget}/>\n }}\n onValueChange={(newSelectedWidgetId) => {\n const newProperty = updatePropertyFromWidget(property, newSelectedWidgetId, propertyConfigs)\n if (!propertyKey) return;\n onPropertyChanged({\n id: propertyKey,\n property: newProperty,\n previousId: propertyKey,\n namespace: undefined\n });\n }}>\n {Object.entries(supportedFields).map(([key, widget]) => {\n return <PropertySelectItem\n key={key}\n value={key}\n optionDisabled={false}\n propertyConfig={widget}\n existing={false}/>;\n })\n }\n </Select>\n </Tooltip>;\n}\n\nexport interface PropertySelectItemProps {\n value: string;\n optionDisabled: boolean;\n propertyConfig: PropertyConfig;\n existing: boolean;\n}\n\nexport function PropertySelectItem({ value, optionDisabled, propertyConfig, existing }: PropertySelectItemProps) {\n return <SelectItem value={value}\n disabled={optionDisabled}\n className={\"flex flex-row items-center\"}>\n <div\n className={cls(\n \"flex flex-row items-center text-base min-h-[48px]\",\n optionDisabled ? \"w-full\" : \"\")}>\n <div className={\"mr-8\"}>\n <PropertyConfigBadge propertyConfig={propertyConfig}/>\n </div>\n <div>\n <div>{propertyConfig.name}</div>\n <Typography variant={\"caption\"}\n color={\"disabled\"}\n className={\"max-w-sm\"}>\n {existing && optionDisabled ? \"You can only switch to widgets that use the same data type\" : propertyConfig.description}\n </Typography>\n </div>\n </div>\n </SelectItem>\n}\n","import { convertDataToEntity, ImportConfig } from \"@firecms/data_import_export\";\nimport { CircularProgressCenter, EntityCollectionTable, Properties, useSelectionController } from \"@firecms/core\";\nimport { useEffect, useState } from \"react\";\nimport { Typography } from \"@firecms/ui\";\n\nexport function CollectionEditorImportDataPreview({\n importConfig,\n properties,\n propertiesOrder\n }: {\n importConfig: ImportConfig,\n properties: Properties,\n propertiesOrder: string[]\n}) {\n\n const [loading, setLoading] = useState<boolean>(false);\n\n async function loadEntities() {\n // const propertiesMapping = getPropertiesMapping(importConfig.originProperties, properties, importConfig.headersMapping);\n const mappedData = importConfig.importData.map(d => convertDataToEntity(d, importConfig.idColumn, importConfig.headersMapping, properties, \"TEMP_PATH\", importConfig.defaultValues));\n importConfig.setEntities(mappedData);\n }\n\n useEffect(() => {\n loadEntities().finally(() => setLoading(false));\n }, []);\n\n const selectionController = useSelectionController();\n if (loading)\n return <CircularProgressCenter/>\n\n return <EntityCollectionTable\n title={<div>\n <Typography variant={\"subtitle2\"}>Imported data preview</Typography>\n <Typography variant={\"caption\"}>Entities with the same id will be overwritten</Typography>\n </div>}\n tableController={{\n data: importConfig.entities,\n dataLoading: false,\n noMoreToLoad: false\n }}\n endAdornment={<div className={\"h-12\"}/>}\n filterable={false}\n sortable={false}\n selectionController={selectionController}\n displayedColumnIds={propertiesOrder.map(p => ({\n key: p,\n disabled: false\n }))}\n openEntityMode={\"side_panel\"}\n properties={properties}\n enablePopupIcon={false}/>\n\n}\n","import { Properties, slugify } from \"@firecms/core\";\nimport { ImportConfig } from \"@firecms/data_import_export\";\n\nexport function cleanPropertiesFromImport(properties: Properties, parentSlug = \"\"): {\n headersMapping: ImportConfig[\"headersMapping\"],\n properties: Properties,\n idColumn?: ImportConfig[\"idColumn\"],\n} {\n\n const result = Object.keys(properties).reduce((acc, key) => {\n const property = properties[key];\n const slug = slugify(key);\n const fullSlug = parentSlug ? `${parentSlug}.${slug}` : slug;\n\n if (property.dataType === \"map\" && property.properties) {\n const slugifiedResult = cleanPropertiesFromImport(property.properties as Properties, fullSlug);\n return {\n headersMapping: { ...acc.headersMapping, [key]: fullSlug },\n properties: {\n ...acc.properties,\n [slug]: {\n ...property,\n properties: slugifiedResult.properties,\n propertiesOrder: Object.keys(slugifiedResult.properties)\n }\n }\n }\n }\n\n const updatedProperties = {\n ...acc.properties,\n [slug]: property\n } as Properties;\n\n const headersMapping = { ...acc.headersMapping, [key]: fullSlug } as Record<string, string>;\n\n return {\n headersMapping,\n properties: updatedProperties,\n }\n }, { headersMapping: {}, properties: {} });\n\n const firstKey = Object.keys(result.headersMapping)?.[0];\n let idColumn: string | undefined;\n if (firstKey?.includes(\"id\") || firstKey?.includes(\"key\")) {\n idColumn = firstKey;\n }\n\n return {\n ...result,\n idColumn\n };\n}\n","import * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n CircularProgressCenter,\n Entity,\n EntityCollection,\n ErrorView,\n isPropertyBuilder,\n MapProperty,\n mergeDeep,\n Properties,\n PropertiesOrBuilders,\n Property,\n PropertyConfig,\n PropertyOrBuilder,\n randomString,\n removeInitialAndTrailingSlashes,\n removeUndefined,\n TopNavigationResult,\n useAuthController,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport {\n ArrowBackIcon,\n Button,\n CheckIcon,\n cls,\n coolIconKeys,\n defaultBorderMixin,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n LoadingButton,\n Tab,\n Tabs\n} from \"@firecms/ui\";\nimport { YupSchema } from \"./CollectionYupValidation\";\nimport { CollectionDetailsForm } from \"./CollectionDetailsForm\";\nimport { CollectionPropertiesEditorForm } from \"./CollectionPropertiesEditorForm\";\nimport { UnsavedChangesDialog } from \"./UnsavedChangesDialog\";\nimport { SubcollectionsEditTab } from \"./SubcollectionsEditTab\";\nimport { CollectionsConfigController } from \"../../types/config_controller\";\nimport { CollectionEditorWelcomeView } from \"./CollectionEditorWelcomeView\";\nimport { CollectionInference } from \"../../types/collection_inference\";\nimport { getInferenceType, ImportSaveInProgress, useImportConfig } from \"@firecms/data_import_export\";\nimport { buildEntityPropertiesFromData } from \"@firecms/schema_inference\";\nimport { CollectionEditorImportMapping } from \"./import/CollectionEditorImportMapping\";\nimport { CollectionEditorImportDataPreview } from \"./import/CollectionEditorImportDataPreview\";\nimport { cleanPropertiesFromImport } from \"./import/clean_import_data\";\nimport { PersistedCollection } from \"../../types/persisted_collection\";\nimport { Formex, FormexController, useCreateFormex } from \"@firecms/formex\";\nimport { getFullIdPath } from \"./util\";\n\nexport interface CollectionEditorDialogProps {\n open: boolean;\n isNewCollection: boolean;\n initialValues?: {\n group?: string,\n path?: string,\n name?: string,\n }\n editedCollectionId?: string;\n fullPath?: string; // full path of this particular collection, like `products/123/locales`\n parentCollectionIds?: string[]; // path ids of the parent collection, like [`products`]\n handleClose: (collection?: EntityCollection) => void;\n configController: CollectionsConfigController;\n reservedGroups?: string[];\n collectionInference?: CollectionInference;\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n pathSuggestions?: (path?: string) => Promise<string[]>;\n getUser?: (uid: string) => User | null;\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n parentCollection?: PersistedCollection;\n existingEntities?: Entity<any>[];\n}\n\nexport function CollectionEditorDialog(props: CollectionEditorDialogProps) {\n\n const open = props.open;\n\n const [formDirty, setFormDirty] = React.useState<boolean>(false);\n const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] = React.useState<boolean>(false);\n\n const handleCancel = () => {\n if (!formDirty) {\n props.handleClose(undefined);\n } else {\n setUnsavedChangesDialogOpen(true);\n }\n };\n\n useEffect(() => {\n if (!open) {\n setFormDirty(false);\n setUnsavedChangesDialogOpen(false);\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n fullWidth={true}\n fullHeight={true}\n scrollable={false}\n maxWidth={\"7xl\"}\n onOpenChange={(open) => !open ? handleCancel() : undefined}\n >\n <DialogTitle hidden>Collection editor</DialogTitle>\n {open && <CollectionEditor {...props}\n handleCancel={handleCancel}\n setFormDirty={setFormDirty}/>}\n\n <UnsavedChangesDialog\n open={unsavedChangesDialogOpen}\n handleOk={() => props.handleClose(undefined)}\n handleCancel={() => setUnsavedChangesDialogOpen(false)}\n body={\"There are unsaved changes in this collection\"}/>\n\n </Dialog>\n );\n}\n\ntype EditorView = \"welcome\"\n | \"details\"\n | \"import_data_mapping\"\n | \"import_data_preview\"\n | \"import_data_saving\"\n | \"properties\"\n | \"loading\"\n | \"extra_view\"\n | \"subcollections\";\n\nexport function CollectionEditor(props: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void\n}) {\n const { propertyConfigs } = useCustomizationController();\n const navigation = useNavigationController();\n const authController = useAuthController();\n\n const {\n topLevelNavigation,\n collections\n } = navigation;\n\n const initialValuesProp = props.initialValues;\n const includeTemplates = !initialValuesProp?.path && (props.parentCollectionIds ?? []).length === 0;\n const collectionsInThisLevel = (props.parentCollection ? props.parentCollection.subcollections : collections) ?? [];\n const existingPaths = collectionsInThisLevel.map(col => col.path.trim().toLowerCase());\n const existingIds = collectionsInThisLevel.map(col => col.id?.trim().toLowerCase()).filter(Boolean) as string[];\n const [collection, setCollection] = React.useState<PersistedCollection<any> | undefined>();\n const [initialLoadingCompleted, setInitialLoadingCompleted] = React.useState(false);\n\n useEffect(() => {\n try {\n if (navigation.initialised) {\n if (props.editedCollectionId) {\n setCollection(navigation.getCollectionFromPaths([...(props.parentCollectionIds ?? []), props.editedCollectionId]));\n } else {\n setCollection(undefined);\n }\n setInitialLoadingCompleted(true);\n }\n } catch (e) {\n console.error(e);\n }\n }, [props.editedCollectionId, props.parentCollectionIds, navigation.initialised, navigation.getCollectionFromPaths]);\n\n if (!topLevelNavigation) {\n throw Error(\"Internal: Navigation not ready in collection editor\");\n }\n\n const {\n groups\n }: TopNavigationResult = topLevelNavigation;\n\n const initialCollection = collection\n ? {\n ...collection,\n id: collection.id ?? collection.path ?? randomString(16)\n }\n : undefined;\n\n const initialValues: PersistedCollection<any> = initialCollection\n ? applyPropertyConfigs(initialCollection, propertyConfigs)\n : {\n id: initialValuesProp?.path ?? randomString(16),\n path: initialValuesProp?.path ?? \"\",\n name: initialValuesProp?.name ?? \"\",\n group: initialValuesProp?.group ?? \"\",\n properties: {} as PropertiesOrBuilders,\n propertiesOrder: [],\n icon: coolIconKeys[Math.floor(Math.random() * coolIconKeys.length)],\n ownerId: authController.user?.uid ?? \"\"\n };\n\n if (!initialLoadingCompleted) {\n return <CircularProgressCenter/>;\n }\n\n if (!props.isNewCollection && (!navigation.initialised || !initialLoadingCompleted)) {\n return <CircularProgressCenter/>;\n }\n\n return <CollectionEditorInternal\n {...props}\n initialValues={initialValues}\n existingPaths={existingPaths}\n existingIds={existingIds}\n includeTemplates={includeTemplates}\n collection={collection}\n setCollection={setCollection}\n groups={groups}\n propertyConfigs={propertyConfigs}/>\n\n}\n\nfunction CollectionEditorInternal<M extends Record<string, any>>({\n isNewCollection,\n configController,\n editedCollectionId,\n parentCollectionIds,\n fullPath,\n collectionInference,\n handleClose,\n reservedGroups,\n extraView,\n handleCancel,\n setFormDirty,\n pathSuggestions,\n getUser,\n parentCollection,\n getData,\n existingPaths,\n existingIds,\n includeTemplates,\n collection,\n setCollection,\n initialValues,\n propertyConfigs,\n groups,\n existingEntities\n }: CollectionEditorDialogProps & {\n handleCancel: () => void,\n setFormDirty: (dirty: boolean) => void,\n initialValues: PersistedCollection<M>,\n existingPaths: string[],\n existingIds: string[],\n includeTemplates: boolean,\n collection: PersistedCollection<M> | undefined,\n setCollection: (collection: PersistedCollection<M>) => void,\n propertyConfigs: Record<string, PropertyConfig<any>>,\n groups: string[],\n }\n) {\n\n const importConfig = useImportConfig();\n const navigation = useNavigationController();\n const snackbarController = useSnackbarController();\n\n // Use this ref to store which properties have errors\n const propertyErrorsRef = useRef({});\n\n const initialView = isNewCollection ? (includeTemplates ? \"welcome\" : \"details\") : \"properties\";\n const [currentView, setCurrentView] = useState<EditorView>(initialView); // this view can edit either the details view or the properties one\n\n const [error, setError] = React.useState<Error | undefined>();\n\n const saveCollection = (updatedCollection: PersistedCollection<M>): Promise<boolean> => {\n const id = updatedCollection.id || updatedCollection.path;\n\n return configController.saveCollection({\n id,\n collectionData: updatedCollection,\n previousId: editedCollectionId,\n parentCollectionIds\n })\n .then(() => {\n setError(undefined);\n return true;\n })\n .catch((e) => {\n setError(e);\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n };\n\n const setNextMode = () => {\n if (currentView === \"details\") {\n if (importConfig.inUse) {\n setCurrentView(\"import_data_saving\");\n } else if (extraView) {\n setCurrentView(\"extra_view\");\n } else {\n setCurrentView(\"properties\");\n }\n } else if (currentView === \"welcome\") {\n setCurrentView(\"details\");\n } else if (currentView === \"import_data_mapping\") {\n setCurrentView(\"import_data_preview\");\n } else if (currentView === \"import_data_preview\") {\n setCurrentView(\"details\");\n } else if (currentView === \"extra_view\") {\n setCurrentView(\"properties\");\n } else {\n setCurrentView(\"details\");\n }\n\n };\n\n const doCollectionInference = (collection: PersistedCollection<any>) => {\n if (!collectionInference) return undefined;\n return collectionInference?.(collection.path, collection.collectionGroup ?? false, parentPaths ?? []);\n };\n\n const inferCollectionFromData = async (newCollection: PersistedCollection<M>) => {\n\n try {\n if (!doCollectionInference) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n\n setCurrentView(\"loading\");\n\n const inferredCollection = await doCollectionInference?.(newCollection);\n\n if (!inferredCollection) {\n setCollection(newCollection);\n return Promise.resolve(newCollection);\n }\n const values = {\n ...(newCollection ?? {})\n };\n\n if (Object.keys(inferredCollection.properties ?? {}).length > 0) {\n values.properties = inferredCollection.properties as PropertiesOrBuilders<M>;\n values.propertiesOrder = inferredCollection.propertiesOrder as Extract<keyof M, string>[];\n }\n\n if (!values.propertiesOrder) {\n values.propertiesOrder = Object.keys(values.properties) as Extract<keyof M, string>[];\n return values;\n }\n\n setCollection(values);\n console.debug(\"Inferred collection\", {\n newCollection: newCollection ?? {},\n values\n });\n return values;\n } catch (e: any) {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error inferring collection: \" + (e.message ?? \"Details in the console\")\n });\n return newCollection;\n }\n };\n\n const onSubmit = (newCollectionState: PersistedCollection<M>, formexController: FormexController<PersistedCollection<M>>) => {\n console.debug(\"Submitting collection\", newCollectionState);\n try {\n\n if (!isNewCollection) {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm();\n handleClose(newCollectionState);\n });\n return;\n }\n\n if (currentView === \"welcome\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"details\") {\n if (extraView || importConfig.inUse) {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n } else if (isNewCollection) {\n inferCollectionFromData(newCollectionState)\n .then((values) => {\n formexController.resetForm({\n values: values ?? newCollectionState,\n touched: {\n path: true,\n name: true\n }\n });\n }).finally(() => {\n setNextMode();\n });\n } else {\n formexController.resetForm({ values: newCollectionState });\n setNextMode();\n }\n } else if (currentView === \"extra_view\") {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n } else if (currentView === \"import_data_mapping\") {\n setNextMode();\n } else if (currentView === \"import_data_preview\") {\n setNextMode();\n } else if (currentView === \"properties\") {\n saveCollection(newCollectionState).then(() => {\n formexController.resetForm({ values: initialValues });\n setNextMode();\n handleClose(newCollectionState);\n });\n } else {\n setNextMode();\n formexController.resetForm({ values: newCollectionState });\n }\n } catch (e: any) {\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting collection: \" + (e.message ?? \"Details in the console\")\n });\n console.error(e);\n formexController.resetForm({ values: newCollectionState });\n }\n };\n\n const validation = (col: PersistedCollection) => {\n\n let errors: Record<string, any> = {};\n const schema = (currentView === \"properties\" || currentView === \"subcollections\" || currentView === \"details\") && YupSchema;\n if (schema) {\n try {\n schema.validateSync(col, { abortEarly: false });\n } catch (e: any) {\n e.inner.forEach((err: any) => {\n errors[err.path] = err.message;\n });\n }\n }\n if (currentView === \"properties\") {\n errors = { ...errors, ...propertyErrorsRef.current };\n }\n if (currentView === \"details\") {\n const pathError = validatePath(col.path, isNewCollection, existingPaths, col.id);\n if (pathError) {\n errors.path = pathError;\n }\n const idError = validateId(col.id, isNewCollection, existingPaths, existingIds);\n if (idError) {\n errors.id = idError;\n }\n }\n return errors;\n };\n\n const formController = useCreateFormex<PersistedCollection<M>>({\n initialValues,\n onSubmit,\n validation,\n debugId: \"COLLECTION_EDITOR\"\n });\n\n const {\n values,\n setFieldValue,\n isSubmitting,\n dirty,\n submitCount\n } = formController;\n\n // TODO: getting data is only working in root collections with this code\n const path = values.path;\n const updatedFullPath = fullPath?.includes(\"/\") ? fullPath?.split(\"/\").slice(0, -1).join(\"/\") + \"/\" + path : path; // TODO: this path is wrong\n const pathError = validatePath(path, isNewCollection, existingPaths, values.id);\n\n const parentPaths = !pathError && parentCollectionIds ? navigation.convertIdsToPaths(parentCollectionIds) : undefined;\n const resolvedPath = !pathError ? navigation.resolveIdsFrom(updatedFullPath) : undefined;\n const getDataWithPath = resolvedPath && getData ? async () => {\n const data = await getData(resolvedPath, parentPaths ?? []);\n if (existingEntities) {\n const existingData = existingEntities.map(e => e.values);\n data.push(...existingData);\n }\n return data;\n } : undefined;\n\n useEffect(() => {\n setFormDirty(dirty);\n }, [dirty]);\n\n function onImportDataSet(data: object[], propertiesOrder?: string[]) {\n importConfig.setInUse(true);\n buildEntityPropertiesFromData(data, getInferenceType)\n .then((properties) => {\n const res = cleanPropertiesFromImport(properties);\n\n importConfig.setIdColumn(res.idColumn);\n importConfig.setImportData(data);\n importConfig.setHeadersMapping(res.headersMapping);\n const filteredHeadingsOrder = ((propertiesOrder ?? [])\n .filter((key) => res.headersMapping[key]) as string[]) ?? Object.keys(res.properties);\n importConfig.setHeadingsOrder(filteredHeadingsOrder);\n importConfig.setOriginProperties(res.properties);\n\n const mappedHeadings = (propertiesOrder ?? []).map((key) => res.headersMapping[key]).filter(Boolean) as string[] ?? Object.keys(res.properties);\n setFieldValue(\"properties\", res.properties);\n setFieldValue(\"propertiesOrder\", mappedHeadings);\n });\n }\n\n const validValues = Boolean(values.name) && Boolean(values.id);\n\n const onImportMappingComplete = () => {\n const updatedProperties = { ...values.properties };\n if (importConfig.idColumn)\n delete updatedProperties[importConfig.idColumn];\n setFieldValue(\"properties\", updatedProperties);\n // setFieldValue(\"propertiesOrder\", Object.values(importConfig.headersMapping));\n setNextMode();\n };\n\n const editable = collection?.editable === undefined || collection?.editable === true;\n const collectionEditable = editable || isNewCollection;\n\n return <DialogContent fullHeight={true}>\n <Formex value={formController}>\n\n <>\n {!isNewCollection && <Tabs value={currentView}\n innerClassName={cls(defaultBorderMixin, \"px-4 h-14 w-full justify-end bg-surface-50 dark:bg-surface-950 border-b\")}\n onValueChange={(v) => setCurrentView(v as EditorView)}>\n <Tab value={\"details\"}>\n Details\n </Tab>\n <Tab value={\"properties\"}>\n Properties\n </Tab>\n <Tab value={\"subcollections\"}>\n Additional views\n </Tab>\n </Tabs>}\n\n <form noValidate\n onSubmit={formController.handleSubmit}\n className={cls(\n isNewCollection ? \"h-full\" : \"h-[calc(100%-48px)]\",\n \"flex-grow flex flex-col relative\")}>\n\n {currentView === \"loading\" &&\n <CircularProgressCenter/>}\n\n {currentView === \"extra_view\" &&\n path &&\n extraView?.View &&\n <extraView.View path={path}/>}\n\n {currentView === \"welcome\" &&\n <CollectionEditorWelcomeView\n path={path}\n onContinue={(importData, propertiesOrder) => {\n // console.log(\"Import data\", importData, propertiesOrder)\n if (importData) {\n onImportDataSet(importData, propertiesOrder);\n setCurrentView(\"import_data_mapping\");\n } else {\n setCurrentView(\"details\");\n }\n }}\n existingCollectionPaths={existingPaths}\n parentCollection={parentCollection}\n pathSuggestions={pathSuggestions}/>}\n\n {currentView === \"import_data_mapping\" && importConfig &&\n <CollectionEditorImportMapping importConfig={importConfig}\n collectionEditable={collectionEditable}\n propertyConfigs={propertyConfigs}/>}\n\n {currentView === \"import_data_preview\" && importConfig &&\n <CollectionEditorImportDataPreview importConfig={importConfig}\n properties={values.properties as Properties}\n propertiesOrder={values.propertiesOrder as string[]}/>}\n\n {currentView === \"import_data_saving\" && importConfig &&\n <ImportSaveInProgress importConfig={importConfig}\n collection={values}\n path={path}\n onImportSuccess={async (importedCollection) => {\n snackbarController.open({\n type: \"info\",\n message: \"Data imported successfully\"\n });\n await saveCollection(values);\n handleClose(importedCollection);\n }}\n />}\n\n {currentView === \"details\" &&\n <CollectionDetailsForm\n existingPaths={existingPaths}\n existingIds={existingIds}\n groups={groups}\n parentCollectionIds={parentCollectionIds}\n parentCollection={parentCollection}\n isNewCollection={isNewCollection}/>}\n\n {currentView === \"subcollections\" && collection &&\n <SubcollectionsEditTab\n parentCollection={parentCollection}\n configController={configController}\n getUser={getUser}\n collectionInference={collectionInference}\n parentCollectionIds={parentCollectionIds}\n collection={collection}/>}\n\n {currentView === \"properties\" &&\n <CollectionPropertiesEditorForm\n showErrors={submitCount > 0}\n isNewCollection={isNewCollection}\n reservedGroups={reservedGroups}\n onPropertyError={(propertyKey, namespace, error) => {\n const current = removeUndefined({\n ...propertyErrorsRef.current,\n [getFullIdPath(propertyKey, namespace)]: removeUndefined(error, true)\n }, true);\n propertyErrorsRef.current = current;\n formController.validate();\n }}\n getUser={getUser}\n getData={getDataWithPath}\n doCollectionInference={doCollectionInference}\n propertyConfigs={propertyConfigs}\n collectionEditable={collectionEditable}\n extraIcon={extraView?.icon &&\n <IconButton\n color={\"primary\"}\n onClick={() => setCurrentView(\"extra_view\")}>\n {extraView.icon}\n </IconButton>}/>\n }\n\n {currentView !== \"welcome\" && <DialogActions\n position={\"absolute\"}>\n {error && <ErrorView error={error}/>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_mapping\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n importConfig.setInUse(false);\n return setCurrentView(\"welcome\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"import_data_preview\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => {\n setCurrentView(\"import_data_mapping\");\n }}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && includeTemplates && currentView === \"details\" &&\n <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"welcome\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n {isNewCollection && currentView === \"properties\" && <Button variant={\"text\"}\n type=\"button\"\n onClick={() => setCurrentView(\"details\")}>\n <ArrowBackIcon/>\n Back\n </Button>}\n\n <Button variant={\"text\"}\n onClick={() => {\n handleCancel();\n }}>\n Cancel\n </Button>\n\n {isNewCollection && currentView === \"import_data_mapping\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={onImportMappingComplete}\n >\n Next\n </Button>}\n\n {isNewCollection && currentView === \"import_data_preview\" &&\n <Button\n variant={\"filled\"}\n color=\"primary\"\n onClick={() => {\n setNextMode();\n }}\n >\n Next\n </Button>}\n\n {isNewCollection && (currentView === \"details\" || currentView === \"properties\") &&\n <LoadingButton\n variant={\"filled\"}\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n disabled={isSubmitting || (currentView === \"details\" && !validValues)}\n startIcon={currentView === \"properties\"\n ? <CheckIcon/>\n : undefined}\n >\n {currentView === \"details\" && \"Next\"}\n {currentView === \"properties\" && \"Create collection\"}\n </LoadingButton>}\n\n {!isNewCollection && <LoadingButton\n variant=\"filled\"\n color=\"primary\"\n type=\"submit\"\n loading={isSubmitting}\n >\n Update collection\n </LoadingButton>}\n\n </DialogActions>}\n </form>\n </>\n\n </Formex>\n\n </DialogContent>\n\n}\n\nfunction applyPropertyConfigs<M extends Record<string, any> = any>(collection: PersistedCollection<M>, propertyConfigs: Record<string, PropertyConfig<any>>): PersistedCollection<M> {\n const {\n properties,\n ...rest\n } = collection;\n const propertiesResult: PropertiesOrBuilders<any> = {};\n if (properties) {\n Object.keys(properties).forEach((key) => {\n propertiesResult[key] = applyPropertiesConfig(properties[key] as PropertyOrBuilder, propertyConfigs);\n });\n }\n\n return {\n ...rest,\n properties: propertiesResult\n };\n}\n\nfunction applyPropertiesConfig(property: PropertyOrBuilder, propertyConfigs: Record<string, PropertyConfig<any>>) {\n let internalProperty = property;\n if (propertyConfigs && typeof internalProperty === \"object\" && internalProperty.propertyConfig) {\n const propertyConfig = propertyConfigs[internalProperty.propertyConfig];\n if (propertyConfig && isPropertyBuilder(propertyConfig.property)) {\n internalProperty = propertyConfig.property;\n } else {\n\n if (propertyConfig) {\n internalProperty = mergeDeep(propertyConfig.property, internalProperty);\n }\n\n if (!isPropertyBuilder(internalProperty) && internalProperty.dataType === \"map\" && internalProperty.properties) {\n const properties: Record<string, PropertyOrBuilder> = {};\n Object.keys(internalProperty.properties).forEach((key) => {\n properties[key] = applyPropertiesConfig(((internalProperty as MapProperty).properties as Properties)[key] as Property, propertyConfigs);\n });\n internalProperty = {\n ...internalProperty,\n properties\n };\n }\n\n }\n }\n return internalProperty;\n\n}\n\nconst validatePath = (value: string, isNewCollection: boolean, existingPaths: string[], idValue?: string) => {\n let error;\n if (!value) {\n error = \"You must specify a path in the database for this collection\";\n }\n // if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n // error = \"There is already a collection which uses this path as an id\";\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()) && !idValue)\n error = \"There is already a collection with the specified path. If you want to have multiple collections referring to the same database path, make sure the have different ids\";\n\n const subpaths = removeInitialAndTrailingSlashes(value).split(\"/\");\n if (subpaths.length % 2 === 0) {\n error = `Collection paths must have an odd number of segments: ${value}`;\n }\n return error;\n};\n\nconst validateId = (value: string, isNewCollection: boolean, existingPaths: string[], existingIds: string[]) => {\n if (!value) return undefined;\n let error;\n if (isNewCollection && existingPaths?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection that uses this value as a path\";\n if (isNewCollection && existingIds?.includes(value.trim().toLowerCase()))\n error = \"There is already a collection which uses this id\";\n // if (error) {\n // setAdvancedPanelExpanded(true);\n // }\n return error;\n};\n","import React, { PropsWithChildren, useCallback } from \"react\";\nimport equal from \"react-fast-compare\"\n\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport {\n Entity,\n Property,\n useCustomizationController,\n useNavigationController,\n User,\n useSnackbarController\n} from \"@firecms/core\";\nimport { CollectionEditorDialog } from \"./ui/collection_editor/CollectionEditorDialog\";\nimport { useNavigate } from \"react-router\";\nimport { CollectionEditorController } from \"./types/collection_editor_controller\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { PropertyFormDialog } from \"./ui/collection_editor/PropertyEditView\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\n\nexport const ConfigControllerContext = React.createContext<CollectionsConfigController>({} as any);\nexport const CollectionEditorContext = React.createContext<CollectionEditorController>({} as any);\n\nexport interface ConfigControllerProviderProps {\n /**\n * Controller for managing the collections' config.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Callback used to infer the schema from the data.\n */\n collectionInference?: CollectionInference;\n\n /**\n * Use this builder to define the permissions for the configuration per user.\n */\n configPermissions?: CollectionEditorPermissionsBuilder;\n\n /**\n * Groups that cannot be used to create new collections.\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n getPathSuggestions?: (path?: string) => Promise<string[]>;\n\n getUser?: (uid: string) => User | null\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\n\n}\n\nexport const ConfigControllerProvider = React.memo(\n function ConfigControllerProvider({\n children,\n collectionConfigController,\n configPermissions,\n reservedGroups,\n collectionInference,\n extraView,\n getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\n }: PropsWithChildren<ConfigControllerProviderProps>) {\n\n const navigation = useNavigationController();\n const navigate = useNavigate();\n const snackbarController = useSnackbarController();\n const { propertyConfigs } = useCustomizationController();\n\n const [currentDialog, setCurrentDialog] = React.useState<{\n isNewCollection: boolean,\n parentCollection?: PersistedCollection,\n editedCollectionId?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n initialValues?: {\n path?: string,\n group?: string,\n name?: string\n },\n redirect: boolean,\n existingEntities?: Entity<any>[]\n }>();\n\n const [currentPropertyDialog, setCurrentPropertyDialog] = React.useState<{\n propertyKey?: string,\n property?: Property,\n namespace?: string,\n parentCollection?: PersistedCollection,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n fullPath?: string,\n parentCollectionIds: string[],\n collectionEditable: boolean;\n existingEntities?: Entity<any>[]\n }>();\n\n const defaultConfigPermissions: CollectionEditorPermissionsBuilder = useCallback(() => ({\n createCollections: true,\n editCollections: true,\n deleteCollections: true\n }), []);\n\n const editCollection = ({\n id,\n fullPath,\n parentCollectionIds,\n parentCollection,\n existingEntities\n }: {\n id?: string,\n fullPath?: string,\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit collection\", id, fullPath, parentCollectionIds, parentCollection);\n onAnalyticsEvent?.(\"edit_collection\", {\n id,\n fullPath\n });\n setCurrentDialog({\n editedCollectionId: id,\n fullPath,\n parentCollectionIds,\n isNewCollection: false,\n parentCollection,\n redirect: false,\n existingEntities\n });\n };\n\n const editProperty = ({\n propertyKey,\n property,\n editedCollectionId,\n currentPropertiesOrder,\n parentCollectionIds,\n collection,\n existingEntities\n }: {\n propertyKey?: string,\n property?: Property,\n currentPropertiesOrder?: string[],\n editedCollectionId: string,\n parentCollectionIds: string[],\n collection: PersistedCollection,\n existingEntities?: Entity<any>[]\n }) => {\n console.debug(\"Edit property\", propertyKey, property, editedCollectionId, currentPropertiesOrder, parentCollectionIds, collection);\n onAnalyticsEvent?.(\"edit_property\", {\n propertyKey,\n editedCollectionId\n });\n // namespace is all the path until the last dot\n const namespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(0, propertyKey.lastIndexOf(\".\"))\n : undefined;\n const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(\".\")\n ? propertyKey.substring(propertyKey.lastIndexOf(\".\") + 1)\n : propertyKey;\n setCurrentPropertyDialog({\n propertyKey: propertyKeyWithoutNamespace,\n property,\n namespace,\n currentPropertiesOrder,\n editedCollectionId,\n parentCollectionIds,\n collectionEditable: collection?.editable ?? false,\n existingEntities\n });\n };\n\n const createCollection = ({\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n }: {\n parentCollectionIds: string[],\n parentCollection?: PersistedCollection\n initialValues?: {\n group?: string,\n path?: string,\n name?: string\n },\n redirect: boolean,\n sourceClick?: string\n }) => {\n console.debug(\"Create collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n onAnalyticsEvent?.(\"create_collection\", {\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect,\n sourceClick\n });\n setCurrentDialog({\n isNewCollection: true,\n parentCollectionIds,\n parentCollection,\n initialValues,\n redirect\n });\n };\n\n return (\n <ConfigControllerContext.Provider value={collectionConfigController}>\n <CollectionEditorContext.Provider\n value={{\n editCollection,\n createCollection,\n editProperty,\n configPermissions: configPermissions ?? defaultConfigPermissions,\n getPathSuggestions,\n components\n }}>\n\n {children}\n\n <CollectionEditorDialog\n open={Boolean(currentDialog)}\n configController={collectionConfigController}\n isNewCollection={false}\n collectionInference={collectionInference}\n {...currentDialog}\n getData={getData}\n reservedGroups={reservedGroups}\n extraView={extraView}\n pathSuggestions={getPathSuggestions}\n getUser={getUser}\n handleClose={(collection) => {\n if (currentDialog?.redirect) {\n if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionIds.length) {\n const url = navigation.buildUrlCollectionPath(collection.id ?? collection.path);\n navigate(url);\n }\n }\n setCurrentDialog(undefined);\n }}/>\n\n {/* Used for editing properties*/}\n <PropertyFormDialog\n open={Boolean(currentPropertyDialog)}\n includeIdAndName={true}\n existingProperty={Boolean(currentPropertyDialog?.propertyKey)}\n autoUpdateId={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n autoOpenTypeSelect={!currentPropertyDialog ? false : !currentPropertyDialog?.propertyKey}\n inArray={false}\n collectionEditable={currentPropertyDialog?.collectionEditable ?? false}\n getData={getData && currentPropertyDialog?.editedCollectionId\n ? () => {\n console.debug(\"get data for property\", currentPropertyDialog?.editedCollectionId);\n const resolvedPath = navigation.resolveIdsFrom(currentPropertyDialog.editedCollectionId!)\n return getData(resolvedPath, []);\n }\n : undefined}\n onPropertyChanged={({\n id,\n property\n }) => {\n if (!currentPropertyDialog) return;\n if (!id) return;\n const newProperty = !(currentPropertyDialog.propertyKey);\n return collectionConfigController.saveProperty({\n path: currentPropertyDialog?.editedCollectionId,\n property,\n propertyKey: id,\n newPropertiesOrder: newProperty && currentPropertyDialog.currentPropertiesOrder ? [...currentPropertyDialog.currentPropertiesOrder, id] : undefined,\n namespace: currentPropertyDialog.namespace,\n parentCollectionIds: currentPropertyDialog.parentCollectionIds\n })\n .catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error persisting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onPropertyChangedImmediate={false}\n onDelete={() => {\n if (!currentPropertyDialog?.propertyKey) return;\n const newPropertiesOrder = currentPropertyDialog?.currentPropertiesOrder?.filter(p => p !== currentPropertyDialog?.propertyKey);\n return collectionConfigController.deleteProperty({\n path: currentPropertyDialog?.editedCollectionId,\n propertyKey: currentPropertyDialog?.propertyKey,\n namespace: currentPropertyDialog?.namespace,\n newPropertiesOrder,\n parentCollectionIds: currentPropertyDialog?.parentCollectionIds\n })\n .then(() => {\n setCurrentPropertyDialog(undefined);\n }).catch((e) => {\n console.error(e);\n snackbarController.open({\n type: \"error\",\n message: \"Error deleting property: \" + (e.message ?? \"Details in the console\")\n });\n return false;\n });\n }}\n onError={() => {\n }}\n onOkClicked={() => {\n setCurrentPropertyDialog(undefined);\n }}\n onCancel={() => {\n setCurrentPropertyDialog(undefined);\n }}\n initialErrors={{}}\n forceShowErrors={false}\n existingPropertyKeys={[]}\n allowDataInference={true}\n propertyConfigs={propertyConfigs}\n property={currentPropertyDialog?.property}\n propertyKey={currentPropertyDialog?.propertyKey}/>\n\n </CollectionEditorContext.Provider>\n\n </ConfigControllerContext.Provider>\n );\n }, equal);\n","import { CollectionActionsProps, useAuthController, useNavigationController } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionAction({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const navigationController = useNavigationController();\n const collectionEditorController = useCollectionEditorController();\n\n const parentCollection = navigationController.getCollectionFromIds(parentCollectionIds);\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n const editorButton = <Tooltip\n asChild={true}\n title={canEditCollection ? \"Edit collection\" : \"You don't have permissions to edit this collection\"}>\n <IconButton\n color={\"primary\"}\n disabled={!canEditCollection}\n onClick={canEditCollection\n ? () => collectionEditorController?.editCollection({\n id: collection.id,\n fullPath,\n parentCollectionIds,\n parentCollection: parentCollection as PersistedCollection,\n existingEntities: tableController?.data ?? []\n })\n : undefined}>\n <SettingsIcon/>\n </IconButton>\n </Tooltip>;\n\n return <>\n {editorButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { useContext } from \"react\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { ConfigControllerContext } from \"./ConfigControllerProvider\";\n\n/**\n * Use this hook to access the configuration controller.\n * You can use it to get the list of collections, and to save/delete collections.\n */\nexport const useCollectionsConfigController = (): CollectionsConfigController => useContext(ConfigControllerContext);\n","import {\n ConfirmationDialog,\n PluginHomePageActionsProps,\n useAuthController,\n useSnackbarController\n} from \"@firecms/core\";\nimport { DeleteIcon, IconButton, Menu, MenuItem, MoreVertIcon, SettingsIcon, } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useState } from \"react\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\n\nexport function HomePageEditorCollectionAction({\n path,\n collection\n }: PluginHomePageActionsProps) {\n\n const snackbarController = useSnackbarController();\n const authController = useAuthController();\n const configController = useCollectionsConfigController();\n const collectionEditorController = useCollectionEditorController();\n\n const permissions = collectionEditorController.configPermissions({\n user: authController.user,\n collection\n });\n\n const onEditCollectionClicked = () => {\n collectionEditorController?.editCollection({\n id: collection.id,\n parentCollectionIds: []\n });\n };\n\n const [deleteRequested, setDeleteRequested] = useState(false);\n\n const deleteCollection = () => {\n configController?.deleteCollection({ id: collection.id }).then(() => {\n setDeleteRequested(false);\n snackbarController.open({\n message: \"Collection deleted\",\n type: \"success\"\n });\n });\n };\n\n return <>\n\n <div>\n {permissions.deleteCollections &&\n <Menu\n trigger={<IconButton>\n <MoreVertIcon size={\"small\"}/>\n </IconButton>}\n >\n <MenuItem\n dense={true}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setDeleteRequested(true);\n }}>\n <DeleteIcon/>\n Delete\n </MenuItem>\n\n </Menu>\n\n }\n\n {permissions.editCollections &&\n <IconButton\n onClick={(event) => {\n onEditCollectionClicked();\n }}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>}\n </div>\n\n <ConfirmationDialog\n open={deleteRequested}\n onAccept={deleteCollection}\n onCancel={() => setDeleteRequested(false)}\n title={<>Delete this collection?</>}\n body={<> This will <b>not\n delete any data</b>, only\n the collection in the CMS</>}/>\n </>;\n\n}\n","import { EntityTableController, ResolvedProperty } from \"@firecms/core\";\nimport { IconButton, SettingsIcon, Tooltip } from \"@firecms/ui\";\nimport React from \"react\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function CollectionViewHeaderAction({\n propertyKey,\n onHover,\n property,\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n property: ResolvedProperty,\n propertyKey: string,\n onHover: boolean,\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const collectionEditorController = useCollectionEditorController();\n\n return (\n <Tooltip\n asChild={true}\n title={\"Edit\"}>\n <IconButton\n className={onHover ? \"bg-white dark:bg-surface-950\" : \"hidden\"}\n onClick={() => {\n collectionEditorController.editProperty({\n propertyKey,\n property,\n editedCollectionId: collection.id,\n parentCollectionIds,\n collection,\n existingEntities: tableController.data ?? []\n });\n }}\n size={\"small\"}>\n <SettingsIcon size={\"small\"}/>\n </IconButton>\n </Tooltip>\n )\n}\n","import { EntityTableController, getDefaultPropertiesOrder, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Tooltip } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function PropertyAddColumnComponent({\n fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: {\n fullPath: string,\n parentCollectionIds: string[],\n collection: PersistedCollection;\n tableController: EntityTableController;\n}) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n return (\n <Tooltip\n asChild={true}\n title={canEditCollection ? \"Add new property\" : \"You don't have permission to add new properties\"}>\n <div\n className={\"p-0.5 w-20 h-full flex items-center justify-center cursor-pointer bg-surface-100 bg-opacity-40 hover:bg-surface-100 dark:bg-surface-950 dark:bg-opacity-40 dark:hover:bg-surface-950\"}\n // className={onHover ? \"bg-white dark:bg-surface-950\" : undefined}\n onClick={() => {\n collectionEditorController.editProperty({\n editedCollectionId: collection.id,\n parentCollectionIds,\n currentPropertiesOrder: getDefaultPropertiesOrder(collection),\n collection,\n existingEntities: tableController.data\n });\n }}>\n <AddIcon color={\"inherit\"}/>\n </div>\n </Tooltip>\n )\n}\n","import { AddIcon, Button } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionButton() {\n const collectionEditorController = useCollectionEditorController();\n return <div className={\"bg-surface-50 dark:bg-surface-900 min-w-fit rounded\"}>\n <Button className={\"min-w-fit\"}\n variant={\"outlined\"}\n onClick={() => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_button\"\n })}>\n <AddIcon/>\n New collection\n </Button>\n </div>\n}\n","import equal from \"react-fast-compare\"\n\nimport { CollectionActionsProps, mergeDeep, useAuthController, useSnackbarController } from \"@firecms/core\";\nimport { Button, SaveIcon, Tooltip, UndoIcon, } from \"@firecms/ui\";\n\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { useCollectionsConfigController } from \"../useCollectionsConfigController\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\nexport function EditorCollectionActionStart({\n path: fullPath,\n parentCollectionIds,\n collection,\n tableController\n }: CollectionActionsProps) {\n\n const authController = useAuthController();\n const collectionEditorController = useCollectionEditorController();\n const configController = useCollectionsConfigController();\n const snackbarController = useSnackbarController();\n\n const canEditCollection = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n collection\n }).editCollections\n : true;\n\n let saveDefaultFilterButton = null;\n if (!equal(getObjectOrNull(tableController.filterValues), getObjectOrNull(collection.initialFilter)) ||\n !equal(getObjectOrNull(tableController.sortBy), getObjectOrNull(collection.initialSort))) {\n saveDefaultFilterButton = <>\n <Tooltip\n asChild={true}\n title={tableController.sortBy || tableController.filterValues ? \"Save default filter and sort\" : \"Clear default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"outlined\"}\n onClick={() => configController\n ?.saveCollection({\n id: collection.id,\n parentCollectionIds,\n collectionData: mergeDeep(collection as PersistedCollection,\n {\n initialFilter: tableController.filterValues ?? null,\n initialSort: tableController.sortBy ?? null\n })\n }).then(() => {\n snackbarController.open({\n type: \"success\",\n message: \"Default config saved\"\n });\n })}>\n <SaveIcon/>\n </Button>\n </Tooltip>\n\n {(collection.initialFilter || collection.initialSort) && <Tooltip\n title={\"Reset to default filter and sort\"}>\n <Button\n color={\"primary\"}\n size={\"small\"}\n variant={\"text\"}\n onClick={() => {\n tableController.clearFilter?.();\n if (collection?.initialFilter)\n tableController.setFilterValues?.(collection?.initialFilter);\n if (collection?.initialSort)\n tableController.setSortBy?.(collection?.initialSort);\n }}>\n <UndoIcon/>\n </Button>\n </Tooltip>}\n </>;\n }\n\n return <>\n {canEditCollection && saveDefaultFilterButton}\n </>\n\n}\n\nfunction getObjectOrNull(o?: object): object | null {\n if (o && Object.keys(o).length === 0)\n return o\n return o ?? null;\n}\n","import { PluginHomePageAdditionalCardsProps, useAuthController } from \"@firecms/core\";\nimport { AddIcon, Card, cls, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\n\nexport function NewCollectionCard({\n group,\n context\n }: PluginHomePageAdditionalCardsProps) {\n\n if (!context.navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n return (\n <Card className={cls(\"h-full p-4 min-h-[124px]\")}\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n initialValues: group ? { group } : undefined,\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n\n <div\n className=\"flex items-center justify-center h-full w-full flex-grow flex-col\">\n <AddIcon color=\"primary\" size={\"large\"}/>\n <Typography color=\"primary\"\n variant={\"caption\"}\n className={\"font-medium\"}>{\"Add new collection\".toUpperCase()}</Typography>\n\n {!canCreateCollections &&\n <Typography variant={\"caption\"}>You don&apos;t have permissions to create\n collections</Typography>\n }\n </div>\n\n </Card>\n );\n}\n","import React from \"react\";\nimport { FireCMSPlugin, useAuthController, useNavigationController, User } from \"@firecms/core\";\nimport { ConfigControllerProvider } from \"./ConfigControllerProvider\";\nimport { CollectionEditorPermissionsBuilder } from \"./types/config_permissions\";\nimport { EditorCollectionAction } from \"./ui/EditorCollectionAction\";\nimport { HomePageEditorCollectionAction } from \"./ui/HomePageEditorCollectionAction\";\nimport { PersistedCollection } from \"./types/persisted_collection\";\nimport { CollectionInference } from \"./types/collection_inference\";\nimport { CollectionsConfigController } from \"./types/config_controller\";\nimport { CollectionViewHeaderAction } from \"./ui/CollectionViewHeaderAction\";\nimport { PropertyAddColumnComponent } from \"./ui/PropertyAddColumnComponent\";\nimport { NewCollectionButton } from \"./ui/NewCollectionButton\";\nimport { AddIcon, Button, Paper, Typography } from \"@firecms/ui\";\nimport { useCollectionEditorController } from \"./useCollectionEditorController\";\nimport { EditorCollectionActionStart } from \"./ui/EditorCollectionActionStart\";\nimport { NewCollectionCard } from \"./ui/NewCollectionCard\";\n\nexport interface CollectionConfigControllerProps<EC extends PersistedCollection = PersistedCollection, USER extends User = User> {\n\n /**\n * Firebase app where the configuration is saved.\n */\n collectionConfigController: CollectionsConfigController;\n\n /**\n * Define what actions can be performed on the configuration.\n */\n configPermissions?: CollectionEditorPermissionsBuilder<USER, EC>;\n\n /**\n * The words you define here will not be allowed to be used as group\n * names when creating collections.\n * e.g. [\"admin\"]\n */\n reservedGroups?: string[];\n\n extraView?: {\n View: React.ComponentType<{\n path: string\n }>,\n icon: React.ReactNode\n };\n\n getPathSuggestions?: (path?: string) => Promise<string[]>;\n\n collectionInference?: CollectionInference;\n\n getData?: (path: string, parentPaths: string[]) => Promise<object[]>;\n\n getUser?: (uid: string) => USER | null;\n\n onAnalyticsEvent?: (event: string, params?: object) => void;\n\n components?: {\n /**\n * Custom component to render the database field\n */\n DatabaseField?: React.ComponentType<{ databaseId?: string, onDatabaseIdUpdate: (databaseId:string) => void }>;\n };\n\n}\n\n/**\n * Use this hook to initialise the Collection Editor plugin.\n * This is likely the only hook you will need to use.\n * @param firebaseApp Firebase app where your project data lives.\n * @param configPermissions\n * @param reservedGroups\n * @param extraView\n * @param getData\n * @param getUser\n * @param collectionInference\n */\nexport function useCollectionEditorPlugin<EC extends PersistedCollection = PersistedCollection, USER extends User = User>\n({\n collectionConfigController,\n configPermissions,\n reservedGroups,\n extraView,\n getPathSuggestions,\n getUser,\n collectionInference,\n getData,\n onAnalyticsEvent,\n components\n }: CollectionConfigControllerProps<EC, USER>): FireCMSPlugin<any, any, PersistedCollection> {\n\n return {\n key: \"collection_editor\",\n loading: collectionConfigController.loading,\n provider: {\n Component: ConfigControllerProvider,\n props: {\n collectionConfigController,\n configPermissions,\n collectionInference,\n reservedGroups,\n extraView,\n getPathSuggestions,\n getUser,\n getData,\n onAnalyticsEvent,\n components\n }\n },\n homePage: {\n additionalActions: <NewCollectionButton/>,\n additionalChildrenStart: <IntroWidget/>,\n // additionalChildrenEnd: <RootCollectionSuggestions introMode={introMode}/>,\n CollectionActions: HomePageEditorCollectionAction,\n AdditionalCards: NewCollectionCard,\n },\n collectionView: {\n CollectionActionsStart: EditorCollectionActionStart,\n CollectionActions: EditorCollectionAction,\n HeaderAction: CollectionViewHeaderAction,\n AddColumnComponent: PropertyAddColumnComponent\n }\n };\n}\n\nexport function IntroWidget({}: {}) {\n\n const navigation = useNavigationController();\n if (!navigation.topLevelNavigation)\n throw Error(\"Navigation not ready in FireCMSHomePage\");\n\n const authController = useAuthController();\n\n const collectionEditorController = useCollectionEditorController();\n const canCreateCollections = collectionEditorController.configPermissions\n ? collectionEditorController.configPermissions({\n user: authController.user,\n }).createCollections\n : true;\n\n if (!navigation.initialised || (navigation.collections ?? []).length > 0) {\n return null;\n }\n\n return (\n <Paper\n className={\"my-4 px-4 py-6 flex flex-col bg-white dark:bg-surface-accent-800 gap-2\"}>\n <Typography variant={\"subtitle2\"} className={\"uppercase\"}>No collections found</Typography>\n <Typography>\n Start building collections in FireCMS easily. Map them to your existing\n database data, import from files, or use our templates.\n </Typography>\n {canCreateCollections && <Button\n onClick={collectionEditorController && canCreateCollections\n ? () => collectionEditorController.createCollection({\n parentCollectionIds: [],\n redirect: true,\n sourceClick: \"new_collection_card\"\n })\n : undefined}>\n <AddIcon/>Create your first collection\n </Button>}\n <Typography color={\"secondary\"}>\n You can also define collections programmatically.\n </Typography>\n </Paper>\n );\n}\n","import {\n EntityCollection,\n joinCollectionLists,\n makePropertiesEditable,\n ModifyCollectionProps,\n Properties\n} from \"@firecms/core\";\nimport { PersistedCollection } from \"../types/persisted_collection\";\n\n/**\n * Function in charge of merging collections defined in code with those stored in the backend.\n */\nexport const mergeCollections = (baseCollections: EntityCollection[],\n backendCollections: PersistedCollection[],\n modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void\n) => {\n\n const markAsEditable = (c: PersistedCollection) => {\n makePropertiesEditable(c.properties as Properties);\n c.subcollections?.forEach(markAsEditable);\n };\n const storedCollections = backendCollections ?? [];\n storedCollections.forEach(markAsEditable);\n\n console.debug(\"Collections specified in code:\", baseCollections);\n console.debug(\"Collections stored in the backend\", storedCollections);\n const result = joinCollectionLists(baseCollections, storedCollections, [], modifyCollection);\n\n // sort the collections so they are in the same order as the base collections\n result.sort((a, b) => baseCollections.findIndex(c => c.id === a.id) - baseCollections.findIndex(c => c.id === b.id));\n\n console.debug(\"Collections after joining:\", result);\n return result;\n}\n","import { ErrorView, unslugify, useNavigationController } from \"@firecms/core\";\nimport { useCollectionEditorController } from \"../useCollectionEditorController\";\nimport { Button } from \"@firecms/ui\";\n\nexport function MissingReferenceWidget({ path: pathProp }: {\n path: string\n}) {\n const navigation = useNavigationController();\n const path = getLastSegment(pathProp);\n const parentCollectionIds = navigation.getParentCollectionIds(pathProp);\n const collectionEditor = useCollectionEditorController();\n return <div className={\"p-1 flex flex-col items-center\"}>\n <ErrorView error={\"No collection for path: \" + path}/>\n <Button className={\"mx-2\"} variant={\"outlined\"}\n size={\"small\"}\n onClick={() => {\n collectionEditor.createCollection({\n initialValues: { path, name: unslugify(path) },\n parentCollectionIds,\n redirect: false,\n sourceClick: \"missing_reference\"\n });\n }}>\n Create\n </Button>\n </div>;\n}\n\nfunction getParentPathSegments(path: string): string[] {\n const segments = path.split(\"/\");\n return segments.filter((segment, index) => index % 2 === 0 && index !== segments.length - 1);\n}\n\nfunction getLastSegment(path: string): string {\n const segments = path.split(\"/\");\n return segments[segments.length - 1];\n}\n"],"names":["YupSchema","Yup","object","shape","id","string","required","name","path","useCollectionEditorController","useContext","CollectionEditorContext","LayoutModeSwitch","t0","$","_c","value","onChange","className","t1","cls","t2","t3","Symbol","for","Typography","t4","t5","t6","t7","t8","VerticalSplitIcon","jsx","t9","Tooltip","Card","t10","t11","t12","t13","t14","SquareIcon","t15","t16","jsxs","t17","CollectionDetailsForm","isNewCollection","reservedGroups","groups","parentCollection","groupRef","React","useRef","values","setFieldValue","handleChange","touched","errors","setFieldTouched","isSubmitting","submitCount","useFormex","collectionEditor","iconDialogOpen","setIconDialogOpen","useState","advancedPanelExpanded","setAdvancedPanelExpanded","databaseId","undefined","updateDatabaseId","pathTouched","getIn","toSnakeCase","idTouched","singularNameTouched","singular","updateName","useEffect","DatabaseField","components","DefaultDatabaseField","IconForView","collectionIcon","groupOptions","filter","group","includes","ref","autoCompleteOpen","setAutoCompleteOpen","useAutoComplete","isSubcollection","customIdValue","customId","showErrors","T0","Container","IconButton","Chip","t18","t19","t20","t21","e","target","t22","Boolean","t23","TextField","t24","t25","t26","FieldCaption","t27","t28","t29","t30","t31","t32","Field","DebouncedTextField","t33","t34","t35","t36","t37","event","Autocomplete","length","map","group_0","index","AutocompleteItem","t38","openEntityMode","t39","t40","t41","SettingsIcon","t42","t43","t44","t45","t46","t47","t48","t49","singularName","t50","e_0","t51","t52","t53","t54","t55","t56","t57","sideDialogWidth","t58","e_1","value_0","isNaN","Number","t59","t60","t61","CloseIcon","t62","t63","t64","t65","t66","t67","t68","t69","description","t70","t71","t72","t73","t74","t75","t76","defaultSize","t77","_temp2","t78","Select","_temp","t79","t80","v","Error","t81","t82","t83","t84","SelectItem","t85","_temp3","t86","v_0","t87","collectionGroup","t88","BooleanSwitchWithLabel","t89","t90","t91","v_1","t92","textSearchEnabled","t93","t94","t95","t96","t97","ExpandablePanel","t98","t99","height","t100","icon","t101","SearchIconsView","t102","Dialog","t103","value_3","value_2","toUpperCase","value_1","onDatabaseIdUpdate","idToPropertiesPath","replaceAll","namespaceToPropertiesPath","namespace","namespaceToPropertiesOrderPath","getFullId","propertyKey","propertyNamespace","getFullIdPath","keyWithNamespace","EnumForm","enumValues","onValuesChanged","onError","updateIds","disabled","allowDataInference","getData","forEach","enumValue","label","hasError","Object","keys","initialValues","validateOnChange","validation","formex","useCreateFormex","values_0","errors_0","Formex","EnumFormFields","enumValuesPath","shouldUpdateId","lastInternalIdAdded","setLastInternalIdAdded","editDialogIndex","setEditDialogIndex","inferring","setInferring","Set","inferredValuesRef","inferredValues","current","internalId","justAdded","entryError","has","buildEntry","then","data","flatData","flat","fieldData","Array","from","currentEnumValues","foundEnumValues","extractEnumFromValues","newEnumValues","some","enumValue_0","add","catch","finally","inferValues","ListIcon","Button","CircularProgress","AutorenewIcon","ArrayContainer","Paper","console","error","EnumEntry","memo","EnumEntryInternal","updateId","autoFocus","onDialogOpen","inferredEntry","shouldUpdateIdRef","idValue","labelValue","currentLabelRef","Badge","areEqual","prevProps","nextProps","equal","EnumEntryDialog","open","onClose","idError","open_0","DialogTitle","DialogContent","DialogActions","SwitchControl","field","form","tooltip","size","allowIndeterminate","checked","formControlLabel","GeneralPropertyValidation","validationRequired","validationUnique","field_0","form_0","validationRequiredMessage","StringPropertyValidation","lowercase","matches","max","min","trim","uppercase","matchesError","matchesValue","serializeRegExp","matchesStringValue","validationLowercase","validationUppercase","validationTrim","field_1","form_1","validationLength","validationMin","validationMax","validationMatches","ArrayPropertyValidation","ValidationPanel","children","RuleIcon","EnumPropertyField","multiselect","setFieldError","snackbarContext","useSnackbarController","defaultValue","valuesEnumValues","useMemo","resolveEnumValues","enumIds","type","message","Fragment","res","entry","toString","fileTypes","StoragePropertyField","multiple","existing","baseStoragePath","acceptedFiles","fileName","maxSize","storagePath","storeUrl","fileNameValue","storagePathValue","T1","maxSizeValue","storedValue","fileTypesValue","isArray","allFileTypesSelected","handleTypesChange","hasFilenameCallback","hasStoragePathCallback","CloudUploadIcon","entries","MultiSelectItem","preventDefault","stopPropagation","MultiSelect","parseInt","selected","join","editableProperty","property","isPropertyBuilder","eProperty","dataType","of","editable","removeNonEditableProperties","properties","_","key","propertyOrBuilder","reduce","a","b","PropertyFieldPreview","onClick","includeName","includeEditButton","propertyConfigs","useCustomizationController","getFieldConfig","propertyConfig","borderColorClass","PropertyConfigBadge","cardClickableMixin","cardSelectedMixin","cardMixin","ErrorBoundary","NonEditablePropertyPreview","FunctionsIcon","DoNotDisturbOnIcon","PropertyTree","selectedPropertyKey","onPropertyClick","propertiesOrder","propertiesOrderProp","additionalFields","onPropertyMove","onPropertyRemove","inferredPropertyKeys","collectionEditable","result","destination","startIndex","source","endIndex","newPropertiesOrder","removed","splice","onDragEnd","droppableProvided","droppableSnapshot","droppableProps","innerRef","additionalField","find","warn","Draggable","provided","snapshot","isDragging","placeholder","Droppable","DragDropContext","isSelected","startsWith","wasSelected","PropertyTreeEntry","isPropertyInferred","fullId","fullIdPath","subtree","defaultBorderMixin","left","top","bottom","RemoveIcon","DragHandleIcon","dragHandleProps","draggableProps","MapPropertyField","propertyDialogOpen","setPropertyDialogOpen","setSelectedPropertyKey","selectedPropertyNamespace","setSelectedPropertyNamespace","currentPropertiesOrder","onPropertyCreated","propertiesPath","propertiesOrderPath","currentPropertiesOrder_0","p","deleteProperty","selectedPropertyFullId","selectedProperty","empty","propertiesOrder_0","namespace_0","AddIcon","propertyKey_0","namespace_1","spreadChildren","RepeatPropertyField","ofProperty","ofPropertyError","onPropertyChanged","widget","CommonPropertyFields","forwardRef","disabledId","autoUpdateId","nameError","descriptionError","newNameValue","fontSize","newIdValue","nameTouched","unslugify","StringPropertyField","widgetId","BooleanPropertyField","BlockPropertyField","oneOf","addChildButton","namespace_2","NumberPropertyValidation","validationLessThan","validationMoreThan","validationPositive","validationNegative","validationInteger","NumberPropertyField","parseFloat","ReferencePropertyField","navigation","useNavigationController","pathPath","pathValue","pathError","CollectionsSelect","props","collections","ungroupedCollections","selectedCollection","collection","SelectGroup","collection_0","collection_1","flatMap","collection_2","col","DateTimePropertyField","modeValue","modeError","autoValueValue","autoValueError","modePath","autoValuePath","v_2","AdvancedPropertyValidation","hideFromCollection","readOnly","KeyValuePropertyField","updatePropertyFromWidget","propertyData","selectedWidgetId","updatedProperty","mergeDeep","storage","multiline","markdown","email","url","keyValue","mode","UrlPropertyField","urlValue","supportedFieldsIds","supportedFields","DEFAULT_FIELD_CONFIGS","config","MarkdownPropertyField","PropertyForm","includeIdAndName","autoOpenTypeSelect","existingProperty","inArray","existingPropertyKeys","onPropertyChangedImmediate","onDismiss","onDelete","initialErrors","forceShowErrors","getController","initialValue","previousId","lastSubmittedProperty","property_0","params","doOnPropertyChanged","newPropertyWithId","controller","debug","id_0","property_1","resetForm","validateName","validateId","isValidRegExp","debugId","validateOnInitialRender","onSubmit","formexController","PropertyFormDialog","formProps","onCancel","onOkClicked","formexRef","helpers","handleSubmit","PropertyEditFormFields","setValues","includeIdAndTitle","selectOpen","setSelectOpen","deleteDialogOpen","setDeleteDialogOpen","getFieldId","selectedFieldConfigId","setSelectedFieldConfigId","deferredValues","useDeferredValue","nameFieldRef","selectedWidgetError","isEmptyObject","newSelectedWidgetId","setTimeout","focus","onWidgetSelectChanged","childComponent","InfoLabel","hasValue","DeleteIcon","ConfirmationDialog","idRegEx","match","WIDGET_TYPE_MAP","text_field","switch","select","multi_select","number_input","number_select","multi_number_select","file_upload","multi_file_upload","reference","multi_references","date_time","key_value","repeat","custom_array","block","WidgetSelectView","initialProperty","onValueChange","onOpenChange","allSupportedFields","concat","displayedWidgets","key_0","propertyConfig_1","baseProperty","baseFieldConfig","computedFieldConfig","_temp4","fieldBackgroundDisabledMixin","fieldBackgroundHoverMixin","fieldBackgroundMixin","key_2","propertyConfig_2","groupKey","key_1","propertyConfig_0","WidgetSelectViewItem","shouldWarnChangingDataType","WarningIcon","camelCase","str","slice","toLowerCase","replace","split","cur","acc","substring","GetCodeDialog","snackbarController","code","JSON5","stringify","collectionToCode","Highlight","themes","vsDark","navigator","clipboard","writeText","ContentCopyIcon","style","tokens","getLineProps","getTokenProps","line","i","token","propertyCleanup","valueCopy","clone","childRes","fromBuilder","resolved","resolvedProperties","initialFilter","initialSort","subcollections","CollectionPropertiesEditorForm","propertyErrorsRef","onPropertyError","setDirty","extraIcon","getUser","doCollectionInference","dirty","largeLayout","useLargeLayout","asDialog","selectedPropertyIndex","setSelectedPropertyIndex","codeDialogOpen","setCodeDialogOpen","inferringProperties","setInferringProperties","newPropertyDialogOpen","setNewPropertyDialogOpen","setInferredPropertyKeys","currentPropertiesOrderRef","inferPropertiesFromData","newCollection","newPropertyKeys","updatedProperties","updatedPropertiesOrder","updatePropertiesOrder","getCurrentPropertiesOrder","indexOf","log","propertyPath","previousFullId","previousPropertyPath","onPropertyErrorInternal","closePropertyDialog","emptyCollection","usedPropertiesOrder","owner","ownerId","body","displayName","CodeIcon","UnsavedChangesDialog","handleOk","handleCancel","title","EntityCustomViewsSelectDialog","entityViews","view","SubcollectionsEditTab","configController","collectionInference","parentCollectionIds","contextEntityViews","subcollectionToDelete","setSubcollectionToDelete","addEntityViewDialogOpen","setAddEntityViewDialogOpen","viewToDelete","setViewToDelete","currentDialog","setCurrentDialog","setSubcollections","T2","T3","resolvedEntityViews","resolveEntityView","hardCodedEntityViews","totalEntityViews","Table","TableBody","subcollection","TableRow","editedCollectionId","TableCell","e_2","Alert","e_3","deleteCollection","e_4","e_5","updatedCollection","selectedViewKey","e_6","view_0","productsCollectionTemplate","makePropertiesEditable","brand","main_image","available","columnWidth","price","requiredMessage","images","related_products","metadata","added_on","autoValue","blogCollectionTemplate","header_image","cacheControl","content","typeField","valueField","text","quote","products","previewProperties","created_on","status","published","draft","publish_date","clearable","reviewed","tags","previewAsTag","usersCollectionTemplate","emailVerified","phone","favourite_products","photoURL","pagesCollectionTemplate","slug","unique","matchesMessage","hero_section","headline","subhead","background_image","call_to_action","call_to_action_link","section","image","link","slider","sidebar","seo_metadata","meta_title","meta_description","focus_keywords","footer_override","last_updated","is_published","CollectionEditorWelcomeView","pathSuggestions","onContinue","existingCollectionPaths","loadingPathSuggestions","setLoadingPathSuggestions","filteredPathSuggestions","setFilteredPathSuggestions","suggestions","filteredSuggestions","s","c","suggestion","Icon","ImportFileUpload","TemplateButton","subtitle","CollectionEditorImportMapping","importConfig","setSelectedProperty","newPropertiesOrder_0","newHeadersMapping","headersMapping","setHeadersMapping","importData","importKey","fullId_0","propertyPath_0","d","inferredNewProperty","buildPropertyFromData","getInferenceType","onPropertyTypeChanged","property_2","importKey_0","isIdColumn","ImportNewPropertyFieldPreview","propertyKey_1","DataNewPropertiesMapping","p_0","PropertySelect","fieldId","newProperty","widget_0","PropertySelectItem","optionDisabled","CollectionEditorImportDataPreview","loading","setLoading","loadEntities","mappedData","convertDataToEntity","idColumn","defaultValues","setEntities","selectionController","useSelectionController","CircularProgressCenter","entities","dataLoading","noMoreToLoad","EntityCollectionTable","cleanPropertiesFromImport","parentSlug","slugify","fullSlug","slugifiedResult","firstKey","CollectionEditorDialog","formDirty","setFormDirty","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","handleClose","CollectionEditor","authController","useAuthController","topLevelNavigation","initialValuesProp","includeTemplates","collectionsInThisLevel","existingPaths","existingIds","setCollection","initialLoadingCompleted","setInitialLoadingCompleted","initialised","getCollectionFromPaths","initialCollection","randomString","applyPropertyConfigs","coolIconKeys","Math","floor","random","user","uid","CollectionEditorInternal","fullPath","extraView","existingEntities","useImportConfig","initialView","currentView","setCurrentView","setError","saveCollection","collectionData","setNextMode","inUse","parentPaths","inferCollectionFromData","Promise","resolve","inferredCollection","newCollectionState","schema","validateSync","abortEarly","inner","err","validatePath","formController","updatedFullPath","convertIdsToPaths","resolvedPath","resolveIdsFrom","getDataWithPath","existingData","push","onImportDataSet","setInUse","buildEntityPropertiesFromData","setIdColumn","setImportData","filteredHeadingsOrder","setHeadingsOrder","setOriginProperties","mappedHeadings","validValues","onImportMappingComplete","Tabs","Tab","View","ImportSaveInProgress","importedCollection","removeUndefined","validate","ErrorView","ArrowBackIcon","LoadingButton","CheckIcon","rest","propertiesResult","applyPropertiesConfig","internalProperty","subpaths","removeInitialAndTrailingSlashes","ConfigControllerContext","createContext","ConfigControllerProvider","collectionConfigController","configPermissions","getPathSuggestions","onAnalyticsEvent","navigate","useNavigate","currentPropertyDialog","setCurrentPropertyDialog","defaultConfigPermissions","redirect","editCollection","parentCollectionIds_0","existingEntities_0","lastIndexOf","propertyKeyWithoutNamespace","editProperty","parentCollectionIds_1","parentCollection_0","sourceClick","createCollection","buildUrlCollectionPath","saveProperty","createCollections","editCollections","deleteCollections","EditorCollectionAction","tableController","navigationController","collectionEditorController","getCollectionFromIds","canEditCollection","editorButton","useCollectionsConfigController","HomePageEditorCollectionAction","permissions","onEditCollectionClicked","deleteRequested","setDeleteRequested","Menu","MoreVertIcon","MenuItem","event_0","CollectionViewHeaderAction","onHover","PropertyAddColumnComponent","getDefaultPropertiesOrder","NewCollectionButton","EditorCollectionActionStart","saveDefaultFilterButton","getObjectOrNull","filterValues","sortBy","SaveIcon","clearFilter","setFilterValues","setSortBy","UndoIcon","o","NewCollectionCard","context","canCreateCollections","useCollectionEditorPlugin","Component","additionalActions","additionalChildrenStart","CollectionActions","AdditionalCards","CollectionActionsStart","HeaderAction","AddColumnComponent","provider","homePage","collectionView","IntroWidget","mergeCollections","baseCollections","backendCollections","modifyCollection","markAsEditable","storedCollections","joinCollectionLists","sort","findIndex","MissingReferenceWidget","pathProp","getLastSegment","getParentCollectionIds","segments"],"mappings":"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"}