@nubase/frontend 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -0
- package/dist/index.css +50 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +517 -0
- package/dist/index.d.ts +517 -0
- package/dist/index.js +7997 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +7967 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +1831 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/components/dock/Dock.tsx","../src/components/dock/ResizeHandle.tsx","../src/components/dock/useResize.ts","../src/components/form/SchemaForm.tsx","../src/hooks/useComputedMetadata.ts","../src/hooks/useLayout.ts","../src/components/buttons/Button/Button.tsx","../src/utils.ts","../src/components/form/FormFieldRenderer.tsx","../src/components/form-controls/FormControl/FormControl.tsx","../src/components/form-controls/Label/Label.tsx","../src/components/form-controls/TextInput/TextInput.tsx","../src/components/form/SchemaFormLayout.tsx","../src/components/form-controls/SearchTextInput/SearchTextInput.tsx","../src/components/form-controls/Select/Select.tsx","../src/components/floating/dialog/Dialog.tsx","../src/components/buttons/ButtonBar/ButtonBar.tsx","../src/components/floating/modal/Modal.tsx","../src/components/floating/dialog/useDialog.tsx","../src/components/floating/modal/useModal.tsx","../src/components/floating/toast/Toast.tsx","../src/components/floating/toast/ToastContext.tsx","../src/components/floating/toast/toastUtils.ts","../src/components/floating/toast/ToastContainer.tsx","../src/components/theme-toggle/ThemeToggle.tsx","../src/components/nubase-app/NubaseContextProvider.tsx","../src/components/navigation/main-nav/MainNav.tsx","../src/components/navigation/searchable-tree-navigator/SearchableTreeNavigator.tsx","../src/components/navigation/searchable-tree-navigator/TreeNavigator.tsx","../src/components/navigation/searchable-tree-navigator/TreeNavigatorItem.tsx","../src/components/navigation/main-nav/NavItemComponent.tsx","../src/components/navigation/main-nav/SafeLink.tsx","../src/components/navigation/main-nav/NavItems.tsx","../src/components/navigation/main-nav/types.ts","../src/components/nubase-app/NubaseApp.tsx","../src/http/http-client.ts","../src/routes/router.ts","../src/routes/dev/colors/colors-route.tsx","../src/routes/dev/dev-route.tsx","../src/routes/root.tsx","../src/routes/dev/colors/colors-screen.tsx","../src/routes/dev/index/index-route.tsx","../src/routes/dev/index/index-screen.tsx","../src/routes/view/view-route.tsx","../src/routes/view/view-screen.tsx","../src/components/views/ViewRenderer/CreateViewRenderer.tsx","../src/components/views/ViewRenderer/ViewRenderer.tsx","../src/routes/routes.ts","../src/components/monaco/monaco-editor.ts","../../../node_modules/zod/v3/external.js","../../../node_modules/zod/v3/helpers/util.js","../../../node_modules/zod/v3/ZodError.js","../../../node_modules/zod/v3/locales/en.js","../../../node_modules/zod/v3/errors.js","../../../node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/zod/v3/types.js","../src/components/nubase-app/useCreateNubaseContext.ts","../src/commands/CommandRegistry.ts","../src/commands/definitions/workbench.runCommand.tsx","../src/http/typed-api-client.ts","../src/keybindings/keyParser.ts","../src/keybindings/KeybindingManager.ts","../src/keybindings/registerKeybindings.ts","../src/commands/definitions/workbench.setTheme.tsx","../src/theming/themes/dark.ts","../src/theming/themes/darkhc.ts","../src/theming/themes/light.ts","../src/theming/themes/lighthc.ts","../src/theming/themes/index.ts","../src/theming/runtime-theme-generator.ts","../src/components/nubase-app/validateStyles.ts","../src/components/nubase-app/initializeStyles.ts","../src/components/nubase-app/initializeNubaseApp.ts","../src/components/nubase-app/ServicesProvider.tsx","../src/components/table/Table.tsx","../src/components/table/Pagination.tsx"],"sourcesContent":["// Export all components\nexport * from \"./components\";\n\n// Export all hooks\nexport * from \"./hooks\";\n\n// Export utilities\nexport * from \"./utils\";\n\n// Export table components\nexport * from \"./table\";\n\n// Export NubaseFrontendConfig\nexport * from \"./config\";\n\n// Export HTTP client and typed API client\nexport * from \"./http/http-client\";\nexport * from \"./http/typed-api-client\";\nexport * from \"./http/api-client-factory\";\n\n// Export any other specific exports you might have\n// Add more exports as needed\n","import type React from \"react\";\nimport {\n createContext,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\nimport { ResizeHandle } from \"./ResizeHandle\";\nimport { useResize } from \"./useResize\";\n\n// Context to track Dock nesting\nconst DockContext = createContext<boolean>(false);\n\nexport interface DockProps {\n center: React.ReactNode;\n left?: React.ReactNode;\n right?: React.ReactNode;\n top?: React.ReactNode;\n defaultLeftWidth?: number;\n defaultRightWidth?: number;\n}\n\nexport const Dock: React.FC<DockProps> = ({\n center,\n left,\n right,\n top,\n defaultLeftWidth = 300,\n defaultRightWidth = 300,\n}) => {\n const [leftWidth, setLeftWidth] = useState(defaultLeftWidth);\n const [rightWidth, setRightWidth] = useState(defaultRightWidth);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Auto-detect if this Dock is nested inside another Dock\n const isNested = useContext(DockContext);\n\n const getLeftConstraints = useCallback(() => {\n if (containerRef.current) {\n const maxWidth =\n containerRef.current.offsetWidth - (right ? rightWidth : 0) - 100;\n return { min: 100, max: maxWidth };\n }\n return { min: 100, max: Number.POSITIVE_INFINITY };\n }, [rightWidth, right]);\n\n const getRightConstraints = useCallback(() => {\n if (containerRef.current) {\n const maxWidth =\n containerRef.current.offsetWidth - (left ? leftWidth : 0) - 100;\n return { min: 100, max: maxWidth };\n }\n return { min: 100, max: Number.POSITIVE_INFINITY };\n }, [leftWidth, left]);\n\n const handleLeftResize = useResize(\n setLeftWidth,\n () => leftWidth,\n getLeftConstraints,\n );\n const handleRightResize = useResize(\n setRightWidth,\n () => rightWidth,\n getRightConstraints,\n true,\n );\n\n return (\n <DockContext.Provider value={true}>\n <div\n ref={containerRef}\n className={`flex flex-col h-full w-full min-h-0 min-w-0 ${isNested ? \"h-auto w-auto border border-outline\" : \"h-screen w-screen\"}`}\n >\n {top && (\n <div className=\"bg-surface border-b border-outline flex-shrink-0\">\n {top}\n </div>\n )}\n <div className=\"flex flex-1 min-h-0\">\n {left && (\n <div\n className=\"flex flex-col relative bg-surface border-r border-outline\"\n style={{\n width: leftWidth,\n }}\n >\n <div className=\"flex-1 bg-surface relative overflow-y-auto\">\n {left}\n </div>\n <div className=\"absolute top-0 bottom-0 w-0 right-0 z-10\">\n <ResizeHandle\n direction=\"vertical\"\n onMouseDown={handleLeftResize}\n />\n </div>\n </div>\n )}\n <div className=\"flex-1 flex flex-col relative\">\n <div className=\"flex-1 bg-surface relative overflow-y-auto\">\n {center}\n </div>\n </div>\n {right && (\n <div\n className=\"flex flex-col relative bg-surface border-l border-outline\"\n style={{\n width: rightWidth,\n }}\n >\n <div className=\"flex-1 bg-surface relative overflow-y-auto\">\n {right}\n </div>\n <div className=\"absolute top-0 bottom-0 w-0 left-0 z-10\">\n <ResizeHandle\n direction=\"vertical\"\n onMouseDown={handleRightResize}\n />\n </div>\n </div>\n )}\n </div>\n </div>\n </DockContext.Provider>\n );\n};\n","import type React from \"react\";\nimport { useState } from \"react\";\n\n// Constants for resize handle sizing\nconst INTERACTION_AREA_SIZE = 2; // px on each side\nconst HANDLE_SIZE_NORMAL = 1; // w-1, h-1\nconst HANDLE_SIZE_HOVER = 2; // w-5, h-5\n\ninterface ResizeHandleProps {\n direction: \"horizontal\" | \"vertical\";\n onMouseDown: (e: React.MouseEvent) => void;\n}\n\nexport const ResizeHandle: React.FC<ResizeHandleProps> = ({\n direction,\n onMouseDown,\n}) => {\n const [isHovering, setIsHovering] = useState(false);\n\n const interactionAreaClasses = `absolute ${\n direction === \"vertical\"\n ? `top-0 bottom-0 -left-[${INTERACTION_AREA_SIZE}px] -right-[${INTERACTION_AREA_SIZE}px]`\n : `left-0 right-0 -top-[${INTERACTION_AREA_SIZE}px] -bottom-[${INTERACTION_AREA_SIZE}px]`\n }`;\n\n return (\n <div\n className={interactionAreaClasses}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n onMouseDown={onMouseDown}\n >\n <div\n className={`absolute z-10 transition-all duration-200 ${\n direction === \"vertical\"\n ? `cursor-col-resize top-0 bottom-0 left-1/2 -translate-x-1/2 ${isHovering ? `bg-primary/30 w-${HANDLE_SIZE_HOVER}` : `bg-outline/20 w-${HANDLE_SIZE_NORMAL}`}`\n : `cursor-row-resize left-0 right-0 top-1/2 -translate-y-1/2 ${isHovering ? `bg-primary/30 h-${HANDLE_SIZE_HOVER}` : `bg-outline/20 h-${HANDLE_SIZE_NORMAL}`}`\n }`}\n />\n </div>\n );\n};\n","import { useCallback } from \"react\";\n\ntype GetConstraints = () => { min: number; max: number };\n\nexport const useResize = (\n onResize: (newSize: number) => void,\n getStartSize: () => number,\n getConstraints: GetConstraints,\n isReverse = false,\n isHorizontal = false,\n) => {\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n const startCoordinate = isHorizontal ? e.clientY : e.clientX;\n const startSize = getStartSize();\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const currentCoordinate = isHorizontal\n ? moveEvent.clientY\n : moveEvent.clientX;\n const delta = currentCoordinate - startCoordinate;\n const newSize = startSize + (isReverse ? -delta : delta);\n const { min, max } = getConstraints();\n onResize(Math.max(min, Math.min(newSize, max)));\n };\n\n const handleMouseUp = () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n },\n [onResize, getStartSize, getConstraints, isReverse, isHorizontal],\n );\n\n return handleMouseDown;\n};\n","import {\n type BaseSchema,\n BooleanSchema,\n type Infer,\n type LayoutField,\n NumberSchema,\n type ObjectSchema,\n StringSchema,\n} from \"@nubase/core\";\nimport { OptionalSchema } from \"@nubase/core\";\nimport { type ReactFormExtendedApi, useForm } from \"@tanstack/react-form\";\nimport type React from \"react\";\nimport { forwardRef, useImperativeHandle, useState } from \"react\";\nimport { useComputedMetadata } from \"../../hooks/useComputedMetadata\";\nimport { useLayout } from \"../../hooks/useLayout\";\nimport { Button } from \"../buttons/Button/Button\";\nimport { FormFieldRenderer } from \"./FormFieldRenderer\";\nimport { SchemaFormLayout } from \"./SchemaFormLayout\";\n\nexport type SchemaFormProps<\n TSchema extends ObjectSchema<any>,\n TData extends Infer<TSchema> = Infer<TSchema>,\n> = {\n schema: TSchema;\n onSubmit: (data: TData) => void | Promise<void>;\n submitText?: string;\n className?: string;\n /** Specify which layout to use (if schema has layouts defined) */\n layoutName?: string;\n /** Options for computed metadata behavior */\n computedMetadata?: {\n /** Debounce delay in milliseconds for computed metadata updates (default: 300ms) */\n debounceMs?: number;\n };\n};\n\nexport type SchemaFormRef<TSchema extends ObjectSchema<any>> =\n ReactFormExtendedApi<\n Infer<TSchema>,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >;\n\n// Helper function to get the default value for a schema\nfunction getDefaultValue(schema: BaseSchema<any>): any {\n if (schema._meta?.defaultValue !== undefined) {\n return schema._meta.defaultValue;\n }\n if (schema instanceof StringSchema) {\n return \"\";\n }\n if (schema instanceof NumberSchema) {\n return 0;\n }\n if (schema instanceof BooleanSchema) {\n return false;\n }\n // For complex types, return undefined and let the form handle it\n return undefined;\n}\n\n// Helper function to transform empty values to null AFTER validation\nfunction transformEmptyToNull(\n values: Record<string, any>,\n schema: ObjectSchema<any>,\n): Record<string, any> {\n const transformed = { ...values };\n\n for (const [key, value] of Object.entries(transformed)) {\n const fieldSchema = schema._shape[key];\n const isRequired = fieldSchema && !(fieldSchema instanceof OptionalSchema);\n\n // Convert empty values to null for consistency, but only for non-required fields\n if (!isRequired) {\n if (value === \"\" || (typeof value === \"string\" && value.trim() === \"\")) {\n transformed[key] = null;\n } else if (value === 0 && fieldSchema instanceof NumberSchema) {\n // Only convert 0 to null if it's not a required field and you want this behavior\n // transformed[key] = null;\n }\n }\n // Note: We don't transform false to null for booleans as false is a valid value\n }\n\n return transformed;\n}\n\n// Helper function to process form data - validate first, then transform\nfunction processFormData(\n values: Record<string, any>,\n schema: ObjectSchema<any>,\n): Record<string, any> {\n // First, validate the raw values with the schema\n const validatedValues = schema.parse(values);\n\n // Then apply transformations to the validated data\n const processedValues = transformEmptyToNull(validatedValues, schema);\n\n // Future transformations can be added here\n // processedValues = someOtherTransformation(processedValues);\n\n return processedValues;\n}\n\nexport const SchemaForm = forwardRef(\n <TSchema extends ObjectSchema<any>>(\n {\n schema,\n onSubmit,\n submitText = \"Submit\",\n className = \"\",\n layoutName,\n computedMetadata,\n }: SchemaFormProps<TSchema>,\n ref: React.Ref<SchemaFormRef<TSchema>>,\n ) => {\n // Create default values from schema\n const defaultValues = Object.entries(schema._shape).reduce(\n (acc, [key, fieldSchema]) => {\n acc[key] = getDefaultValue(fieldSchema as BaseSchema<any>);\n return acc;\n },\n {} as any,\n );\n\n // Initialize form state that will be updated when the form changes\n const [formState, setFormState] = useState(defaultValues);\n\n const form = useForm({\n defaultValues,\n listeners: {\n onChange: (formStateEvent) => {\n setFormState(formStateEvent.formApi.state.values);\n },\n onChangeDebounceMs: 200,\n },\n onSubmit: async ({ value }) => {\n try {\n // Process form data (validate and transform empty values to null, etc.)\n const processedData = processFormData(value, schema);\n await onSubmit(processedData);\n } catch (error) {\n console.error(\"Form validation error:\", error);\n // In a real app, you might want to handle this error differently\n throw error;\n }\n },\n });\n\n // Use computed metadata hook to get merged metadata\n const {\n metadata: mergedMetadata,\n isComputing,\n error: metadataError,\n } = useComputedMetadata(schema, formState, computedMetadata);\n\n // Use layout hook to get the layout (either specified or default)\n const layout = useLayout(schema, layoutName);\n\n // Expose form API through ref\n useImperativeHandle(ref, () => form, [form]);\n\n return (\n <div className={className}>\n {metadataError && (\n <div className=\"mb-4 p-3 bg-errorContainer border border-error rounded-md text-onErrorContainer text-sm\">\n <strong>Metadata Error:</strong> {metadataError.message}\n </div>\n )}\n\n <form\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n form.handleSubmit();\n }}\n className=\"space-y-4\"\n >\n <SchemaFormLayout\n layout={layout}\n renderField={(field: LayoutField<any>) => {\n const fieldName = field.name as string;\n const currentSchema = schema._shape[fieldName] as BaseSchema<any>;\n const fieldMetadata =\n mergedMetadata[fieldName] ?? currentSchema._meta;\n\n // Validation function for submit - includes required field check\n const validateFieldOnSubmit = ({ value }: { value: any }) => {\n // Check if field is required and empty\n const isFieldRequired =\n currentSchema && !(currentSchema instanceof OptionalSchema);\n if (isFieldRequired) {\n if (value === undefined || value === null || value === \"\") {\n return \"This field is required\";\n }\n }\n\n try {\n currentSchema.parse(value);\n return undefined;\n } catch (error) {\n return error instanceof Error\n ? error.message\n : \"Invalid value\";\n }\n };\n\n // Validation function for blur - only schema validation, no required check\n const validateFieldOnBlur = ({ value }: { value: any }) => {\n // Skip validation if field is empty (let submit handle required validation)\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n\n try {\n currentSchema.parse(value);\n return undefined;\n } catch (error) {\n return error instanceof Error\n ? error.message\n : \"Invalid value\";\n }\n };\n\n return (\n <form.Field\n name={fieldName}\n validators={{\n // Validate format on blur, but allow empty values\n onBlur: validateFieldOnBlur,\n // Full validation (including required) only on submit\n onSubmit: validateFieldOnSubmit,\n }}\n >\n {(fieldState) => (\n <FormFieldRenderer\n schema={currentSchema}\n fieldState={fieldState}\n metadata={fieldMetadata}\n />\n )}\n </form.Field>\n );\n }}\n />\n\n <form.Subscribe\n selector={(state) => [state.canSubmit, state.isSubmitting]}\n >\n {([canSubmit, isSubmitting]) => (\n <Button type=\"submit\" disabled={!canSubmit || isComputing}>\n {isSubmitting\n ? \"Submitting...\"\n : isComputing\n ? \"Computing...\"\n : submitText}\n </Button>\n )}\n </form.Subscribe>\n </form>\n </div>\n );\n },\n) as <TSchema extends ObjectSchema<any>>(\n props: SchemaFormProps<TSchema> & { ref?: React.Ref<SchemaFormRef<TSchema>> },\n) => React.ReactElement;\n","import type {\n ObjectOutput,\n ObjectSchema,\n ObjectShape,\n SchemaMetadata,\n} from \"@nubase/core\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface UseComputedMetadataOptions {\n /** Debounce delay in milliseconds (default: 300ms) */\n debounceMs?: number;\n}\n\nexport interface UseComputedMetadataResult<TShape extends ObjectShape> {\n /** Merged metadata for all properties (static + computed) */\n metadata: Record<keyof TShape, SchemaMetadata<any>>;\n /** Whether metadata is currently being computed */\n isComputing: boolean;\n /** Error that occurred during computation, if any */\n error: Error | null;\n}\n\n/**\n * Hook that provides debounced computed metadata for a form schema.\n *\n * This hook:\n * 1. Watches for changes in form data\n * 2. Debounces the computation to avoid excessive recalculation\n * 3. Merges static metadata with computed metadata\n * 4. Returns the final merged metadata for all properties\n *\n * @param schema The ObjectSchema with potential computed metadata\n * @param formData Current form data (partial object)\n * @param options Configuration options\n * @returns Object with merged metadata, loading state, and error state\n */\nexport function useComputedMetadata<TShape extends ObjectShape>(\n schema: ObjectSchema<TShape>,\n formData: Partial<ObjectOutput<TShape>>,\n options: UseComputedMetadataOptions = {},\n): UseComputedMetadataResult<TShape> {\n const { debounceMs = 300 } = options;\n\n // State for the computed metadata\n const [metadata, setMetadata] = useState<\n Record<keyof TShape, SchemaMetadata<any>>\n >(() => {\n // Initialize with static metadata only\n const initialMeta: any = {};\n for (const key in schema._shape) {\n if (Object.prototype.hasOwnProperty.call(schema._shape, key)) {\n const fieldSchema = schema._shape[key];\n if (fieldSchema) {\n initialMeta[key] = { ...fieldSchema._meta };\n }\n }\n }\n return initialMeta;\n });\n\n const [isComputing, setIsComputing] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Refs for debouncing\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const computingRef = useRef(false);\n\n // Compute metadata function\n const computeMetadata = useCallback(\n async (data: Partial<ObjectOutput<TShape>>) => {\n // Prevent concurrent computations\n if (computingRef.current) return;\n\n try {\n computingRef.current = true;\n setError(null);\n setIsComputing(true);\n\n const mergedMeta = await schema.getAllMergedMeta(data);\n\n // Always update metadata since we want reactive updates\n setMetadata(mergedMeta);\n } catch (err) {\n const error =\n err instanceof Error\n ? err\n : new Error(\"Unknown error during metadata computation\");\n setError(error);\n console.warn(\"Failed to compute metadata:\", error);\n } finally {\n computingRef.current = false;\n setIsComputing(false);\n }\n },\n [schema],\n );\n\n // Create a stable key for formData changes to trigger effect properly\n const formDataKey = JSON.stringify(formData);\n\n // Debounced computation effect\n useEffect(() => {\n // Clear existing timeout\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Only compute if we have computed metadata definitions\n if (Object.keys(schema._computedMeta).length > 0) {\n // Set up new debounced computation\n timeoutRef.current = setTimeout(() => {\n computeMetadata(formData);\n }, debounceMs);\n } else {\n // No computed metadata, just use static metadata\n const staticMeta: any = {};\n for (const key in schema._shape) {\n if (Object.prototype.hasOwnProperty.call(schema._shape, key)) {\n const fieldSchema = schema._shape[key];\n if (fieldSchema) {\n staticMeta[key] = { ...fieldSchema._meta };\n }\n }\n }\n setMetadata(staticMeta);\n setIsComputing(false);\n setError(null);\n }\n\n // Cleanup timeout on unmount\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [formData, computeMetadata, debounceMs, schema]);\n\n return {\n metadata,\n isComputing,\n error,\n };\n}\n","import type { Layout, ObjectSchema, ObjectShape } from \"@nubase/core\";\nimport { useMemo } from \"react\";\n\n/**\n * Pure function version of useLayout for testing and non-React contexts.\n * This function has the same logic as useLayout but without React hooks.\n */\nexport function getLayout<TShape extends ObjectShape>(\n schema: ObjectSchema<TShape>,\n layoutName?: string,\n): Layout<TShape> {\n // If a layout name is provided and the layout exists, use it\n if (layoutName && schema.hasLayout(layoutName)) {\n const layout = schema.getLayout(layoutName);\n if (layout) {\n return layout;\n }\n }\n\n // Create a default layout with all fields in a single group\n const fieldNames = Object.keys(schema._shape) as (keyof TShape)[];\n\n const defaultLayout: Layout<TShape> = {\n type: \"form\",\n groups: [\n {\n fields: fieldNames.map((name) => ({\n name,\n size: 12, // Full width for all fields\n })),\n },\n ],\n };\n\n return defaultLayout;\n}\n\n/**\n * Hook to get a layout for a schema. If a layoutName is provided and exists in the schema,\n * returns that layout. Otherwise, returns a default layout with all fields in a single group\n * with size 12 (full width).\n */\nexport function useLayout<TShape extends ObjectShape>(\n schema: ObjectSchema<TShape>,\n layoutName?: string,\n): Layout<TShape> {\n return useMemo(() => getLayout(schema, layoutName), [schema, layoutName]);\n}\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md font-medium transition-all duration-200 focus:outline-none focus:ring-4 disabled:cursor-not-allowed disabled:opacity-60 active:scale-95 text-sm px-4 py-3\",\n {\n variants: {\n variant: {\n primary:\n \"bg-primary text-onPrimary hover:bg-primary/90 focus:ring-primary/20 shadow-sm hover:-translate-y-0.5 active:translate-y-0\",\n secondary:\n \"bg-secondaryContainer text-onSecondaryContainer border border-outline hover:bg-secondaryContainer/80 hover:border-outline/80 focus:ring-outline/20 shadow-sm\",\n danger:\n \"bg-error text-onError hover:bg-error/90 focus:ring-error/20 shadow-sm hover:-translate-y-0.5 active:translate-y-0\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, asChild = false, ...props }, ref) => {\n return (\n <button\n className={cn(buttonVariants({ variant }), className)}\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function for merging Tailwind CSS classes with conditional logic.\n *\n * This function combines clsx for conditional class handling with tailwind-merge\n * to resolve Tailwind class conflicts. It's commonly used throughout the component\n * library to merge default component styles with user-provided className props.\n *\n * @param inputs - Array of class values (strings, objects, arrays, etc.)\n * @returns A string of merged and deduplicated Tailwind classes\n *\n * @example\n * cn(\"px-4 py-2\", \"bg-blue-500\", { \"text-white\": isActive })\n * // Returns: \"px-4 py-2 bg-blue-500 text-white\" (if isActive is true)\n *\n * @example\n * cn(\"bg-red-500\", \"bg-blue-500\")\n * // Returns: \"bg-blue-500\" (tailwind-merge resolves the conflict)\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type { BaseSchema, SchemaMetadata } from \"@nubase/core\";\nimport { OptionalSchema } from \"@nubase/core\";\nimport type React from \"react\";\nimport { FormControl } from \"../form-controls/FormControl/FormControl\";\nimport { TextInput } from \"../form-controls/TextInput/TextInput\";\n\n// Field interface that defines exactly what our component needs\nexport interface FieldApi {\n name: string;\n state: {\n value: any;\n meta: {\n isValidating: boolean;\n isTouched: boolean;\n isValid: boolean;\n errors: (string | undefined)[];\n };\n };\n handleChange: (value: any) => void;\n handleBlur: () => void;\n}\n\nexport interface FormFieldRendererProps {\n schema: BaseSchema<any>;\n fieldState: FieldApi;\n metadata: SchemaMetadata<any>;\n}\n\ntype FieldRendererProps = {\n schema: BaseSchema<any>;\n fieldState: FieldApi;\n hasError: boolean;\n metadata: SchemaMetadata<any>;\n};\n\ntype FieldRenderer = (\n props: FieldRendererProps,\n) => React.ReactElement<{ id?: string; hasError?: boolean }>;\n\nconst fieldRenderers: Record<string, FieldRenderer> = {\n string: ({ fieldState, hasError, metadata }) => {\n return (\n <TextInput\n id={fieldState.name}\n name={fieldState.name}\n onBlur={fieldState.handleBlur}\n type=\"text\"\n value={fieldState.state.value || \"\"}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n fieldState.handleChange(e.target.value)\n }\n placeholder={metadata.description}\n hasError={hasError}\n />\n );\n },\n\n number: ({ fieldState, hasError, metadata }) => {\n return (\n <TextInput\n id={fieldState.name}\n name={fieldState.name}\n onBlur={fieldState.handleBlur}\n type=\"number\"\n value={fieldState.state.value || 0}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n fieldState.handleChange(Number(e.target.value))\n }\n placeholder={metadata.description}\n hasError={hasError}\n />\n );\n },\n\n boolean: ({ fieldState, hasError }) => {\n return (\n <input\n id={fieldState.name}\n name={fieldState.name}\n onBlur={fieldState.handleBlur}\n type=\"checkbox\"\n checked={fieldState.state.value || false}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n fieldState.handleChange(e.target.checked)\n }\n className={`w-4 h-4 rounded focus:ring-2 ${\n hasError\n ? \"border-error focus:ring-error/20\"\n : \"border-outline focus:ring-primary/20\"\n }`}\n />\n );\n },\n};\n\nconst defaultRenderer: FieldRenderer = ({ fieldState, hasError }) => {\n return (\n <TextInput\n id={fieldState.name}\n name={fieldState.name}\n onBlur={fieldState.handleBlur}\n type=\"text\"\n value={String(fieldState.state.value || \"\")}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n fieldState.handleChange(e.target.value)\n }\n placeholder=\"Unsupported field type\"\n hasError={hasError}\n />\n );\n};\n\nexport const FormFieldRenderer: React.FC<FormFieldRendererProps> = ({\n schema,\n fieldState,\n metadata,\n}) => {\n // Calculate hasError from field state\n const hasError =\n fieldState.state.meta.isTouched && !fieldState.state.meta.isValid;\n\n const isRequired = !(schema instanceof OptionalSchema);\n\n // For optional schemas, we need to get the wrapped schema type\n const schemaToRender =\n schema instanceof OptionalSchema ? schema.unwrap() : schema;\n const renderer = fieldRenderers[schemaToRender.type] || defaultRenderer;\n const fieldElement = renderer({\n schema: schemaToRender,\n fieldState,\n hasError,\n metadata,\n });\n\n return (\n <FormControl\n label={metadata.label}\n hint={metadata.description}\n field={fieldState}\n required={isRequired}\n >\n {fieldElement}\n </FormControl>\n );\n};\n","import type { AnyFieldApi } from \"@tanstack/react-form\";\nimport { cva } from \"class-variance-authority\";\nimport React, { forwardRef } from \"react\";\nimport { cn } from \"../../../utils\";\nimport type { FieldApi } from \"../../form/FormFieldRenderer\";\nimport { Label } from \"../Label/Label\";\n\nconst formControlVariants = cva(\"flex flex-col gap-1\", {\n variants: {\n spacing: {\n sm: \"gap-1\",\n md: \"gap-2\",\n lg: \"gap-3\",\n },\n },\n defaultVariants: {\n spacing: \"sm\",\n },\n});\n\nexport interface FormControlProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n hint?: string;\n error?: string;\n required?: boolean;\n spacing?: \"sm\" | \"md\" | \"lg\";\n children: React.ReactElement<{ id?: string; hasError?: boolean }>;\n field?: AnyFieldApi | FieldApi; // Optional field for TanStack form integration\n}\n\nconst FormControl = forwardRef<HTMLDivElement, FormControlProps>(\n (\n {\n className,\n label,\n hint,\n error,\n required,\n spacing,\n children,\n field,\n ...props\n },\n ref,\n ) => {\n // Determine error state - prioritize explicit error, then field errors\n let displayError = error;\n let hasError = !!error;\n let isValidating = false;\n\n if (field) {\n isValidating = field.state.meta.isValidating;\n if (!error && field.state.meta.isTouched && !field.state.meta.isValid) {\n displayError = field.state.meta.errors\n .filter((e): e is string => e !== undefined)\n .join(\", \");\n hasError = true;\n }\n }\n\n const childId = children.props.id;\n\n // Clone the child element and pass hasError prop if it accepts it\n const childWithError = React.cloneElement(children, {\n hasError,\n \"aria-invalid\": hasError ? \"true\" : undefined,\n \"aria-describedby\": displayError\n ? `${childId}-error`\n : hint\n ? `${childId}-hint`\n : undefined,\n } as React.HTMLAttributes<HTMLElement>);\n\n return (\n <div\n ref={ref}\n className={cn(formControlVariants({ spacing }), className)}\n {...props}\n >\n {label && (\n <Label htmlFor={childId} required={required}>\n {label}\n </Label>\n )}\n {childWithError}\n {hint && !hasError && !isValidating && (\n <div id={`${childId}-hint`} className=\"text-xs text-onSurfaceVariant\">\n {hint}\n </div>\n )}\n {isValidating && (\n <div className=\"text-xs text-onSurfaceVariant\">Validating...</div>\n )}\n {hasError && displayError && (\n <div id={`${childId}-error`} className=\"text-xs text-error\">\n {displayError}\n </div>\n )}\n </div>\n );\n },\n);\n\nFormControl.displayName = \"FormControl\";\n\nexport { FormControl };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils\";\n\nconst labelVariants = cva(\"block text-sm font-medium text-onSurface\", {\n variants: {\n variant: {\n default: \"\",\n required: \"after:content-['*'] after:text-error after:ml-1\",\n muted: \"text-onSurfaceVariant font-normal\",\n },\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {\n required?: boolean;\n}\n\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, variant, size, required, children, ...props }, ref) => {\n const finalVariant = required ? \"required\" : variant;\n\n return (\n <label\n ref={ref}\n className={cn(\n labelVariants({ variant: finalVariant, size }),\n className,\n )}\n {...props}\n >\n {children}\n </label>\n );\n },\n);\n\nLabel.displayName = \"Label\";\n\nexport { Label, labelVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils\";\n\nconst inputVariants = cva(\n \"w-full appearance-none bg-surface border border-outline rounded-md text-onSurface text-sm leading-normal outline-none transition-all duration-200 placeholder:text-onSurfaceVariant placeholder:opacity-40 focus:border-primary focus:ring-4 focus:ring-primary/10 disabled:bg-surfaceVariant disabled:cursor-not-allowed disabled:opacity-60 px-4 py-3\",\n {\n variants: {\n hasError: {\n true: \"border-error focus:border-error focus:ring-error/10\",\n false: \"\",\n },\n },\n defaultVariants: {\n hasError: false,\n },\n },\n);\n\nexport interface TextInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof inputVariants> {\n hasError?: boolean;\n}\n\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n ({ className, hasError, ...props }, ref) => {\n return (\n <input\n ref={ref}\n className={cn(inputVariants({ hasError }), className)}\n {...props}\n />\n );\n },\n);\n\nTextInput.displayName = \"TextInput\";\n\nexport { TextInput, inputVariants };\n","import type { Layout, LayoutField, ObjectShape } from \"@nubase/core\";\nimport type React from \"react\";\n\nexport interface SchemaFormLayoutProps<TShape extends ObjectShape = any> {\n layout: Layout<TShape>;\n renderField: (field: LayoutField<TShape>) => React.ReactNode;\n}\n\n// Generate the correct col-span class based on size\nconst getColSpanClass = (size: number) => {\n const colSpanMap: Record<number, string> = {\n 1: \"col-span-1\",\n 2: \"col-span-2\",\n 3: \"col-span-3\",\n 4: \"col-span-4\",\n 5: \"col-span-5\",\n 6: \"col-span-6\",\n 7: \"col-span-7\",\n 8: \"col-span-8\",\n 9: \"col-span-9\",\n 10: \"col-span-10\",\n 11: \"col-span-11\",\n 12: \"col-span-12\",\n };\n return colSpanMap[size] || \"col-span-12\";\n};\n\n// Group fields into rows based on their sizes\nconst groupFieldsIntoRows = <TShape extends ObjectShape>(\n fields: LayoutField<TShape>[],\n): LayoutField<TShape>[][] => {\n const rows: LayoutField<TShape>[][] = [];\n let currentRow: LayoutField<TShape>[] = [];\n let currentRowWidth = 0;\n\n for (const field of fields) {\n if (field.hidden) continue;\n\n const fieldSize = field.size || 12;\n\n // If adding this field would exceed 12, start a new row\n if (currentRowWidth + fieldSize > 12 && currentRow.length > 0) {\n rows.push([...currentRow]);\n currentRow = [field];\n currentRowWidth = fieldSize;\n } else {\n currentRow.push(field);\n currentRowWidth += fieldSize;\n }\n\n // If this field exactly fills the row, start a new row\n if (currentRowWidth === 12) {\n rows.push([...currentRow]);\n currentRow = [];\n currentRowWidth = 0;\n }\n }\n\n // Add any remaining fields in the last row\n if (currentRow.length > 0) {\n rows.push([...currentRow]);\n }\n\n return rows;\n};\n\nexport const SchemaFormLayout = <TShape extends ObjectShape = any>({\n layout,\n renderField,\n}: SchemaFormLayoutProps<TShape>) => {\n return (\n <div className={`layout-${layout.type} ${layout.className || \"\"}`}>\n {layout.groups.map((group, groupIndex) => (\n <div\n key={groupIndex}\n className={`form-group ${group.className || \"\"} mb-6`}\n >\n {group.label && (\n <h3 className=\"text-lg font-medium mb-3 text-onSurface\">\n {group.label}\n </h3>\n )}\n {group.description && (\n <p className=\"text-sm text-onSurfaceVariant mb-3\">\n {group.description}\n </p>\n )}\n <div className=\"space-y-4\">\n {groupFieldsIntoRows<TShape>(group.fields).map((row, rowIndex) => (\n <div key={rowIndex} className=\"grid grid-cols-12 gap-4 w-full\">\n {row.map((field) => (\n <div\n key={String(field.name)}\n className={`${getColSpanClass(field.size || 12)} ${field.className || \"\"}`}\n >\n {renderField(field)}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n};\n","import { IconSearch } from \"@tabler/icons-react\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport type React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils\";\n\nconst searchInputVariants = cva(\n \"w-full appearance-none bg-surface border border-outline rounded-md text-onSurface text-sm leading-normal outline-none transition-all duration-200 placeholder:text-onSurfaceVariant focus:border-primary focus:ring-4 focus:ring-primary/10 disabled:bg-surfaceVariant disabled:cursor-not-allowed disabled:opacity-60 px-4 py-3 pl-10\",\n {\n variants: {\n hasError: {\n true: \"border-error focus:border-error focus:ring-error/10\",\n false: \"\",\n },\n },\n defaultVariants: {\n hasError: false,\n },\n },\n);\n\nexport interface SearchTextInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof searchInputVariants> {\n hasError?: boolean;\n}\n\nconst SearchTextInput = forwardRef<HTMLInputElement, SearchTextInputProps>(\n ({ className, hasError, ...props }, ref) => {\n return (\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"search\"\n className={cn(searchInputVariants({ hasError }), className)}\n {...props}\n />\n <div className=\"absolute top-1/2 left-3 transform -translate-y-1/2 text-onSurfaceVariant pointer-events-none\">\n <IconSearch className=\"h-4 w-4\" />\n </div>\n </div>\n );\n },\n);\n\nSearchTextInput.displayName = \"SearchTextInput\";\n\nexport { SearchTextInput, searchInputVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport { useCombobox, useSelect } from \"downshift\";\nimport type React from \"react\";\nimport { forwardRef, useMemo, useState } from \"react\";\nimport { cn } from \"../../../utils\";\n\nconst selectVariants = cva(\n \"w-full appearance-none bg-surface border border-outline rounded-md text-onSurface outline-none transition-all duration-200 cursor-pointer focus:border-primary focus:ring-4 focus:ring-primary/10 disabled:bg-surfaceVariant disabled:cursor-not-allowed disabled:opacity-60 px-4 py-3 text-sm\",\n {\n variants: {\n hasError: {\n true: \"border-error focus:border-error focus:ring-error/10\",\n false: \"\",\n },\n },\n defaultVariants: {\n hasError: false,\n },\n },\n);\n\nconst menuVariants = cva(\n \"absolute z-50 w-full mt-1 bg-surface border border-outline rounded-md shadow-lg max-h-60 overflow-auto text-sm\",\n);\n\nconst optionVariants = cva(\n \"px-4 py-2 cursor-pointer transition-colors select-none\",\n {\n variants: {\n isHighlighted: {\n true: \"bg-primaryContainer text-onPrimaryContainer\",\n false: \"text-onSurface hover:bg-surfaceVariant\",\n },\n isSelected: {\n true: \"bg-primary text-onPrimary\",\n false: \"\",\n },\n },\n defaultVariants: {\n isHighlighted: false,\n isSelected: false,\n },\n },\n);\n\nexport interface SelectOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps<T = unknown>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"onSelect\">,\n VariantProps<typeof selectVariants> {\n options: SelectOption<T>[];\n value?: T;\n onChange?: (value: T | null) => void;\n onSelectionChange?: (selectedItem: SelectOption<T> | null) => void;\n placeholder?: string;\n disabled?: boolean;\n hasError?: boolean;\n loading?: boolean;\n loadingMessage?: string;\n emptyMessage?: string;\n clearable?: boolean;\n searchable?: boolean;\n filterOptions?: (\n options: SelectOption<T>[],\n inputValue: string,\n ) => SelectOption<T>[];\n}\n\nconst Select = forwardRef<HTMLDivElement, SelectProps<any>>(\n <T,>(\n {\n className,\n hasError,\n options = [],\n value,\n onChange,\n onSelectionChange,\n placeholder = \"Select an option...\",\n disabled = false,\n loading = false,\n loadingMessage = \"Loading...\",\n emptyMessage = \"No options available\",\n clearable = false,\n searchable = false,\n filterOptions,\n ...props\n }: SelectProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) => {\n // Find selected item based on value\n const selectedItem = useMemo(() => {\n return options.find((option) => option.value === value) || null;\n }, [options, value]);\n\n // State for searchable input\n const [inputValue, setInputValue] = useState(\"\");\n\n // Default filter function for searchable selects\n const defaultFilterOptions = (\n opts: SelectOption<T>[],\n inputValue: string,\n ) => {\n return opts.filter((option) =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()),\n );\n };\n\n const actualFilterOptions = filterOptions || defaultFilterOptions;\n\n // Filter options when searchable\n const filteredOptions = useMemo(() => {\n if (!searchable || !inputValue) return options;\n return actualFilterOptions(options, inputValue);\n }, [searchable, inputValue, options, actualFilterOptions]);\n\n const displayOptions = loading ? [] : filteredOptions;\n\n // Use different downshift hooks based on searchable mode\n const selectHook = useSelect({\n items: displayOptions,\n selectedItem,\n onSelectedItemChange: ({ selectedItem: newSelectedItem }) => {\n if (newSelectedItem) {\n onChange?.(newSelectedItem.value);\n onSelectionChange?.(newSelectedItem);\n } else if (clearable) {\n onChange?.(null);\n onSelectionChange?.(null);\n }\n },\n itemToString: (item) => item?.label || \"\",\n });\n\n const comboboxHook = useCombobox({\n items: displayOptions,\n selectedItem,\n inputValue,\n onInputValueChange: ({ inputValue }) => {\n setInputValue(inputValue || \"\");\n },\n onSelectedItemChange: ({ selectedItem: newSelectedItem }) => {\n if (newSelectedItem) {\n onChange?.(newSelectedItem.value);\n onSelectionChange?.(newSelectedItem);\n setInputValue(newSelectedItem.label);\n } else if (clearable) {\n onChange?.(null);\n onSelectionChange?.(null);\n setInputValue(\"\");\n }\n },\n itemToString: (item) => item?.label || \"\",\n });\n\n // Use appropriate hook based on searchable mode\n const hook = searchable ? comboboxHook : selectHook;\n const {\n isOpen,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n } = hook;\n\n // Get input props for searchable mode\n const getInputProps = searchable ? comboboxHook.getInputProps : undefined;\n\n const ChevronIcon = ({ isOpen }: { isOpen: boolean }) => (\n <svg\n className={cn(\n \"w-5 h-5 transition-transform duration-200\",\n isOpen ? \"rotate-180\" : \"rotate-0\",\n )}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <title>Toggle dropdown</title>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n );\n\n const ClearIcon = () => (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <title>Clear selection</title>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n );\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.(null);\n onSelectionChange?.(null);\n };\n\n return (\n <div ref={ref} className={cn(\"relative\", className)} {...props}>\n <div className=\"relative\">\n {searchable ? (\n <input\n {...(getInputProps?.({\n className: cn(selectVariants({ hasError }), \"pr-10\"),\n disabled,\n placeholder: selectedItem?.label || placeholder,\n }) || {})}\n />\n ) : (\n <button\n type=\"button\"\n {...getToggleButtonProps({\n className: cn(\n selectVariants({ hasError }),\n \"flex items-center justify-between pr-10\",\n !selectedItem && \"text-onSurfaceVariant\",\n ),\n disabled: disabled || loading,\n })}\n >\n <span className=\"truncate\">\n {loading ? loadingMessage : selectedItem?.label || placeholder}\n </span>\n </button>\n )}\n\n <div className=\"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none\">\n {loading ? (\n <div className=\"animate-spin rounded-full h-4 w-4 border-2 border-primary border-t-transparent\" />\n ) : (\n <ChevronIcon isOpen={isOpen} />\n )}\n </div>\n\n {clearable && selectedItem && !disabled && !loading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute inset-y-0 right-8 flex items-center pr-2 text-onSurfaceVariant hover:text-onSurface transition-colors\"\n aria-label=\"Clear selection\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n\n <ul\n {...getMenuProps({\n className: cn(menuVariants(), !isOpen && \"hidden\"),\n })}\n >\n {isOpen &&\n (displayOptions.length === 0 ? (\n <li className=\"px-4 py-2 text-onSurfaceVariant text-center\">\n {loading ? loadingMessage : emptyMessage}\n </li>\n ) : (\n displayOptions.map((option, index) => (\n <li\n key={`${option.value}-${index}`}\n {...getItemProps({\n item: option,\n index,\n className: cn(\n optionVariants({\n isHighlighted: highlightedIndex === index,\n isSelected: selectedItem?.value === option.value,\n }),\n option.disabled && \"opacity-50 cursor-not-allowed\",\n ),\n style: option.disabled\n ? { pointerEvents: \"none\" }\n : undefined,\n })}\n >\n <span className=\"block truncate\">{option.label}</span>\n {selectedItem?.value === option.value && (\n <span className=\"absolute inset-y-0 right-0 flex items-center pr-3\">\n <svg\n className=\"w-4 h-4\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n aria-hidden=\"true\"\n >\n <title>Selected</title>\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n )}\n </li>\n ))\n ))}\n </ul>\n </div>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n\nexport { Select, selectVariants };\n","import { DialogTitle } from \"@headlessui/react\";\nimport { IconX } from \"@tabler/icons-react\";\nimport type { FC, ReactNode } from \"react\";\nimport { Button } from \"../../buttons/Button/Button\";\nimport { ButtonBar } from \"../../buttons/ButtonBar/ButtonBar\";\nimport { Modal, type ModalAlignment } from \"../modal/Modal\";\n\nexport type DialogProps = {\n open: boolean;\n onClose: () => void;\n onConfirm?: () => void;\n title?: string;\n children: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n showCloseButton?: boolean;\n className?: string;\n alignment?: ModalAlignment;\n confirmText?: string;\n cancelText?: string;\n confirmVariant?: \"primary\" | \"danger\";\n showBackdrop?: boolean;\n zIndex?: number;\n};\n\nexport const Dialog: FC<DialogProps> = ({\n open,\n onClose,\n onConfirm,\n title,\n children,\n size = \"md\",\n showCloseButton = true,\n className = \"\",\n alignment = \"center\",\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n confirmVariant = \"primary\",\n showBackdrop = true,\n zIndex,\n}) => {\n const handleConfirm = () => {\n onConfirm?.();\n onClose();\n };\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n size={size}\n alignment={alignment}\n showBackdrop={showBackdrop}\n className={className}\n zIndex={zIndex}\n >\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between border-b border-outline px-6 py-4\">\n {title && (\n <DialogTitle className=\"text-lg font-semibold text-onSurface\">\n {title}\n </DialogTitle>\n )}\n {showCloseButton && (\n <Button variant=\"secondary\" onClick={onClose}>\n <IconX className=\"h-5 w-5\" />\n </Button>\n )}\n </div>\n )}\n\n <div className=\"px-6 py-4\">{children}</div>\n\n {onConfirm && (\n <div className=\"border-t border-outline px-6 py-4\">\n <ButtonBar>\n <Button variant=\"secondary\" onClick={onClose}>\n {cancelText}\n </Button>\n <Button variant={confirmVariant} onClick={handleConfirm}>\n {confirmText}\n </Button>\n </ButtonBar>\n </div>\n )}\n </Modal>\n );\n};\n","import type React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../../utils\";\n\nexport interface ButtonBarProps extends React.HTMLAttributes<HTMLDivElement> {\n alignment?: \"left\" | \"center\" | \"right\";\n}\n\nconst ButtonBar = forwardRef<HTMLDivElement, ButtonBarProps>(\n ({ className, alignment = \"right\", children, ...props }, ref) => {\n return (\n <div\n className={cn(\n \"flex gap-2\",\n {\n \"justify-start\": alignment === \"left\",\n \"justify-center\": alignment === \"center\",\n \"justify-end\": alignment === \"right\",\n },\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nButtonBar.displayName = \"ButtonBar\";\n\nexport { ButtonBar };\n","import {\n DialogBackdrop,\n DialogPanel,\n Dialog as HeadlessDialog,\n} from \"@headlessui/react\";\nimport { IconX } from \"@tabler/icons-react\";\nimport type { FC, ReactNode } from \"react\";\nimport { Button } from \"../../buttons/Button/Button\";\n\nexport type ModalAlignment = \"center\" | \"top\";\n\nexport type ModalProps = {\n open: boolean;\n onClose: () => void;\n children: ReactNode;\n alignment?: ModalAlignment;\n showBackdrop?: boolean;\n showCloseButton?: boolean;\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n zIndex?: number;\n initialFocus?: React.RefObject<HTMLElement | null>;\n};\n\nconst sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n full: \"max-w-full\",\n};\n\nconst alignmentClasses = {\n center: \"items-center justify-center\",\n top: \"items-start justify-center pt-16\",\n};\n\nexport const Modal: FC<ModalProps> = ({\n open,\n onClose,\n children,\n alignment = \"center\",\n showBackdrop = true,\n showCloseButton = false,\n className = \"\",\n size = \"md\",\n zIndex = 50,\n initialFocus,\n}) => {\n return (\n <HeadlessDialog\n open={open}\n onClose={onClose}\n className=\"relative\"\n style={{ zIndex }}\n initialFocus={initialFocus}\n >\n {showBackdrop && (\n <DialogBackdrop className=\"fixed inset-0 bg-scrim/30 backdrop-blur-xxs transition-opacity duration-300 ease-out data-[closed]:opacity-0\" />\n )}\n\n <div className={`fixed inset-0 flex p-4 ${alignmentClasses[alignment]}`}>\n <DialogPanel\n className={`w-full ${sizeClasses[size]} rounded-lg bg-surface shadow-xl ring-1 ring-outline/20 transition-all duration-300 ease-out data-[closed]:scale-95 data-[closed]:opacity-0 ${className}`}\n >\n {showCloseButton && (\n <div className=\"flex justify-end p-2\">\n <Button variant=\"secondary\" onClick={onClose}>\n <IconX className=\"h-5 w-5\" />\n </Button>\n </div>\n )}\n\n <div className={showCloseButton ? \"px-4 pb-4\" : \"p-4\"}>\n {children}\n </div>\n </DialogPanel>\n </div>\n </HeadlessDialog>\n );\n};\n","import { type ReactNode, useCallback, useState } from \"react\";\nimport { Dialog, type DialogProps } from \"./Dialog\";\n\ntype DialogConfig = Omit<\n DialogProps,\n \"open\" | \"onClose\" | \"onConfirm\" | \"children\"\n> & {\n title?: string;\n content: ReactNode;\n onConfirm?: () => void;\n};\n\nexport const useDialog = () => {\n const [isOpen, setIsOpen] = useState(false);\n const [config, setConfig] = useState<DialogConfig | null>(null);\n\n const show = useCallback((dialogConfig: DialogConfig) => {\n setConfig(dialogConfig);\n setIsOpen(true);\n }, []);\n\n const hide = useCallback(() => {\n setIsOpen(false);\n // Clear config after animation completes\n setTimeout(() => setConfig(null), 300);\n }, []);\n\n const handleConfirm = useCallback(() => {\n config?.onConfirm?.();\n hide();\n }, [config, hide]);\n\n const DialogComponent = config ? (\n <Dialog\n {...config}\n open={isOpen}\n onClose={hide}\n onConfirm={config.onConfirm ? handleConfirm : undefined}\n >\n {config.content}\n </Dialog>\n ) : null;\n\n return {\n show,\n hide,\n isOpen,\n DialogComponent,\n };\n};\n","import {\n type FC,\n type ReactNode,\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { Modal, type ModalProps } from \"./Modal\";\n\ntype ModalConfig = Omit<ModalProps, \"open\" | \"onClose\" | \"children\"> & {\n component: ReactNode;\n id: string;\n onDismiss?: () => void;\n};\n\ntype ModalContextType = {\n openModal: (config: Omit<ModalConfig, \"id\">) => string;\n closeModal: (id?: string) => void;\n closeAllModals: () => void;\n modals: ModalConfig[];\n};\n\nconst ModalContext = createContext<ModalContextType | null>(null);\n\nexport const ModalProvider: FC<{ children: ReactNode }> = ({ children }) => {\n const [modals, setModals] = useState<ModalConfig[]>([]);\n\n const openModal = useCallback((config: Omit<ModalConfig, \"id\">) => {\n const id = Math.random().toString(36).substr(2, 9);\n const newModal: ModalConfig = { ...config, id };\n\n setModals((prev) => [...prev, newModal]);\n return id;\n }, []);\n\n const closeModal = useCallback((id?: string) => {\n setModals((prev) => {\n if (id) {\n return prev.filter((modal) => modal.id !== id);\n }\n return prev.slice(0, -1);\n });\n }, []);\n\n const closeAllModals = useCallback(() => {\n setModals([]);\n }, []);\n\n const handleModalClose = useCallback(\n (modalId: string) => {\n const modal = modals.find((m) => m.id === modalId);\n if (modal?.onDismiss) {\n modal.onDismiss();\n }\n closeModal(modalId);\n },\n [closeModal, modals],\n );\n\n return (\n <ModalContext.Provider\n value={{ openModal, closeModal, closeAllModals, modals }}\n >\n {children}\n {modals.map((modal, index) => (\n <Modal\n key={modal.id}\n open={true}\n onClose={() => handleModalClose(modal.id)}\n zIndex={50 + index}\n {...modal}\n >\n {modal.component}\n </Modal>\n ))}\n </ModalContext.Provider>\n );\n};\n\nexport const useModal = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error(\"useModal must be used within a ModalProvider\");\n }\n\n const { openModal: contextOpenModal, closeModal, closeAllModals } = context;\n\n const openModal = useCallback(\n (component: ReactNode, options?: Omit<ModalConfig, \"id\" | \"component\">) => {\n return contextOpenModal({ component, ...options });\n },\n [contextOpenModal],\n );\n\n const result = useMemo(() => {\n return {\n openModal,\n closeModal,\n closeAllModals,\n modalCount: context.modals.length,\n };\n }, [openModal, closeModal, closeAllModals, context.modals.length]);\n\n return result;\n};\n","import {\n IconAlertTriangle,\n IconCheck,\n IconInfoCircle,\n IconLoader2,\n IconX,\n} from \"@tabler/icons-react\";\nimport type { FC } from \"react\";\nimport { cn } from \"../../../utils\";\nimport { Button } from \"../../buttons/Button/Button\";\nimport type { ToastData } from \"./types\";\n\nexport interface ToastProps {\n toast: ToastData;\n onClose: () => void;\n}\n\nconst typeConfig = {\n default: {\n icon: null,\n className: \"bg-surface border-border text-text\",\n },\n success: {\n icon: IconCheck,\n className:\n \"bg-secondary/10 border-secondary/20 text-secondary dark:bg-secondary/20 dark:border-secondary/30 dark:text-secondary\",\n },\n error: {\n icon: IconX,\n className:\n \"bg-error/10 border-error/20 text-error dark:bg-error/20 dark:border-error/30 dark:text-error\",\n },\n warning: {\n icon: IconAlertTriangle,\n className:\n \"bg-primary/10 border-primary/20 text-primary dark:bg-primary/20 dark:border-primary/30 dark:text-primary\",\n },\n info: {\n icon: IconInfoCircle,\n className:\n \"bg-primary/10 border-primary/20 text-primary dark:bg-primary/20 dark:border-primary/30 dark:text-primary\",\n },\n};\n\nexport const Toast: FC<ToastProps> = ({ toast, onClose }) => {\n const config = typeConfig[toast.type];\n const Icon = toast.promise ? IconLoader2 : config.icon;\n\n return (\n <div\n className={cn(\n \"flex items-center gap-3 p-4 rounded-lg border shadow-lg min-w-80 max-w-md\",\n \"transform transition-all duration-300 ease-out\",\n config.className,\n )}\n >\n {Icon && (\n <Icon\n className={cn(\n \"h-5 w-5 flex-shrink-0\",\n toast.promise && \"animate-spin\",\n )}\n />\n )}\n\n <div className=\"flex-1 text-sm\">\n {toast.promise && toast.loadingText ? toast.loadingText : toast.message}\n </div>\n\n {toast.closable && (\n <Button variant=\"secondary\" onClick={onClose} className=\"h-6 w-6 p-0\">\n <IconX className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n );\n};\n","import {\n type ReactNode,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { setGlobalToastFunctions } from \"./toastUtils\";\nimport type {\n PromiseToastCallback,\n PromiseToastOptions,\n ToastContextType,\n ToastData,\n ToastOptions,\n ToastType,\n} from \"./types\";\n\nconst ToastContext = createContext<ToastContextType | null>(null);\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\ninterface ToastProviderProps {\n children: ReactNode;\n}\n\nexport const ToastProvider = ({ children }: ToastProviderProps) => {\n const [toasts, setToasts] = useState<ToastData[]>([]);\n\n const generateId = useCallback(\n () => Math.random().toString(36).substring(2, 9),\n [],\n );\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const updateToast = useCallback((id: string, updates: Partial<ToastData>) => {\n setToasts((prev) =>\n prev.map((toast) => (toast.id === id ? { ...toast, ...updates } : toast)),\n );\n }, []);\n\n const addToast = useCallback(\n (message: ReactNode, type: ToastType, options: ToastOptions = {}) => {\n const id = generateId();\n const { duration = 4000, closable = true } = options;\n\n const newToast: ToastData = {\n id,\n message,\n type,\n duration,\n closable,\n };\n\n setToasts((prev) => [...prev, newToast]);\n\n if (duration > 0) {\n // Auto-remove toast after duration\n setTimeout(() => removeToast(id), duration);\n }\n\n return id;\n },\n [generateId, removeToast],\n );\n\n const addPromiseToast = useCallback(\n <T,>(\n promise: Promise<T>,\n callback: PromiseToastCallback<T>,\n options: PromiseToastOptions = {},\n ) => {\n const id = generateId();\n const {\n duration = 0, // Don't auto-close promise toasts during loading\n closable = true,\n loadingText = \"Loading...\",\n } = options;\n\n const newToast: ToastData = {\n id,\n message: loadingText,\n type: \"default\",\n duration,\n closable,\n promise,\n loadingText,\n };\n\n setToasts((prev) => [...prev, newToast]);\n\n // Handle promise resolution/rejection\n promise\n .then((data) => {\n const result = callback({ success: true, data });\n updateToast(id, {\n type: result.type,\n message: result.message,\n duration: result.duration || 3000,\n promise: undefined, // Clear the promise to exit loading state\n });\n setTimeout(() => removeToast(id), result.duration || 3000);\n })\n .catch((error) => {\n const result = callback({ success: false, error });\n updateToast(id, {\n type: result.type,\n message: result.message,\n duration: result.duration || 5000,\n promise: undefined, // Clear the promise to exit loading state\n });\n setTimeout(() => removeToast(id), result.duration || 5000);\n });\n\n return id;\n },\n [generateId, removeToast, updateToast],\n );\n\n // Initialize global toast functions\n useEffect(() => {\n setGlobalToastFunctions(addToast, addPromiseToast);\n }, [addToast, addPromiseToast]);\n\n const value: ToastContextType = {\n toasts,\n addToast,\n addPromiseToast,\n removeToast,\n updateToast,\n };\n\n return (\n <ToastContext.Provider value={value}>{children}</ToastContext.Provider>\n );\n};\n","import type { ReactNode } from \"react\";\nimport type {\n PromiseToastCallback,\n PromiseToastOptions,\n ToastContextType,\n ToastOptions,\n ToastType,\n} from \"./types\";\n\n// Global toast functions - will be initialized by ToastProvider\nlet globalAddToast: ToastContextType[\"addToast\"] | null = null;\nlet globalAddPromiseToast: ToastContextType[\"addPromiseToast\"] | null = null;\n\nexport const setGlobalToastFunctions = (\n addToast: ToastContextType[\"addToast\"],\n addPromiseToast: ToastContextType[\"addPromiseToast\"],\n) => {\n globalAddToast = addToast;\n globalAddPromiseToast = addPromiseToast;\n};\n\n// Simple toast function - just message and type\nexport const showToast = (\n message: ReactNode,\n type: ToastType = \"default\",\n options?: ToastOptions,\n): string => {\n if (!globalAddToast) {\n console.warn(\"Toast function called before ToastProvider is initialized\");\n return \"\";\n }\n return globalAddToast(message, type, options);\n};\n\n// Promise toast function with callback\nexport const showPromiseToast = <T>(\n promise: Promise<T>,\n callback: PromiseToastCallback<T>,\n options?: PromiseToastOptions,\n): string => {\n if (!globalAddPromiseToast) {\n console.warn(\n \"Promise toast function called before ToastProvider is initialized\",\n );\n return \"\";\n }\n return globalAddPromiseToast(promise, callback, options);\n};\n","import type { FC } from \"react\";\nimport { Toast } from \"./Toast\";\nimport { useToast } from \"./ToastContext\";\n\nexport interface ToastContainerProps {\n className?: string;\n}\n\nexport const ToastContainer: FC<ToastContainerProps> = ({ className = \"\" }) => {\n const { toasts, removeToast } = useToast();\n\n if (toasts.length === 0) return null;\n\n return (\n <div\n className={`\n fixed bottom-4 right-4 z-50 flex flex-col gap-2\n ${className}\n `}\n >\n {toasts.map((toast) => (\n <div\n key={toast.id}\n className=\"animate-in slide-in-from-right-full fade-in duration-300\"\n >\n <Toast toast={toast} onClose={() => removeToast(toast.id)} />\n </div>\n ))}\n </div>\n );\n};\n","import { IconMoon, IconSun } from \"@tabler/icons-react\";\nimport { useEffect, useState } from \"react\";\nimport { Button } from \"../buttons/Button/Button\";\nimport { useNubaseContext } from \"../nubase-app/NubaseContextProvider\";\n\nexport interface ThemeToggleProps {\n className?: string;\n defaultTheme: \"light\" | \"dark\";\n}\n\nexport const ThemeToggle = ({ className }: ThemeToggleProps) => {\n const context = useNubaseContext();\n\n const toggleTheme = () => {\n context.commands.execute(\"workbench.setTheme\");\n };\n\n return (\n <Button\n variant=\"secondary\"\n onClick={toggleTheme}\n className={className}\n aria-label={`Switch to ${context.theming.activeThemeId === \"light\" ? \"dark\" : \"light\"} mode`}\n >\n {context.theming.activeThemeId === \"light\" ? (\n <IconMoon size={16} />\n ) : (\n <IconSun size={16} />\n )}\n </Button>\n );\n};\n","import { type ReactNode, createContext, useContext } from \"react\";\nimport type { NubaseContextData } from \"../../context/types\";\n\nconst NubaseContext = createContext<NubaseContextData | undefined>(undefined);\n\nexport interface NubaseContextProviderProps {\n context: NubaseContextData;\n children: ReactNode;\n}\n\nexport const NubaseContextProvider = ({\n context,\n children,\n}: NubaseContextProviderProps) => {\n return (\n <NubaseContext.Provider value={context}>{children}</NubaseContext.Provider>\n );\n};\n\nexport function useNubaseContext(): NubaseContextData {\n const context = useContext(NubaseContext);\n if (context === undefined) {\n throw new Error(\n \"useNubaseContext must be used within a NubaseContextProvider\",\n );\n }\n return context;\n}\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../../utils\";\nimport { SearchableTreeNavigator } from \"../searchable-tree-navigator/SearchableTreeNavigator\";\nimport type { TreeNavigatorItem } from \"../searchable-tree-navigator/TreeNavigatorItem\";\n\nexport interface MainNavProps extends React.HTMLAttributes<HTMLDivElement> {\n items: TreeNavigatorItem[];\n searchPlaceholder?: string;\n}\n\nexport const MainNav = forwardRef<HTMLDivElement, MainNavProps>(\n (\n { className, items, searchPlaceholder = \"Search navigation...\", ...props },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col h-full bg-surface w-full p-2\", className)}\n {...props}\n >\n <SearchableTreeNavigator\n items={items}\n placeHolder={searchPlaceholder}\n height=\"full\"\n />\n </div>\n );\n },\n);\n\nMainNav.displayName = \"MainNav\";\n","import {\n type RefObject,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { SearchTextInput } from \"../../form-controls/SearchTextInput/SearchTextInput\";\nimport { TreeNavigator, type TreeNavigatorItem } from \"./TreeNavigator\";\n\nexport type SearchableTreeNavigatorProps = {\n items: TreeNavigatorItem[];\n placeHolder: string;\n height?: \"full\" | number | string;\n};\n\nexport const SearchableTreeNavigator = forwardRef<\n HTMLInputElement,\n SearchableTreeNavigatorProps\n>((props, ref) => {\n const internalRef = useRef<HTMLInputElement>(null);\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n // Expose the internal ref through the forwarded ref\n useImperativeHandle(ref, () => internalRef.current as HTMLInputElement, []);\n\n // Focus the search input when the component comes into view\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.focus();\n }\n }, []);\n\n // Filter items based on search query (flattens tree structure for search)\n const filteredItems = useMemo(() => {\n if (!searchQuery.trim()) {\n return props.items;\n }\n\n const query = searchQuery.toLowerCase();\n\n const flattenAndFilter = (\n items: TreeNavigatorItem[],\n ): TreeNavigatorItem[] => {\n const result: TreeNavigatorItem[] = [];\n\n for (const item of items) {\n const matchesSearch =\n item.title.toLowerCase().includes(query) ||\n item.subtitle?.toLowerCase().includes(query);\n\n if (matchesSearch) {\n result.push({ ...item, children: undefined }); // Remove children for search results\n }\n\n if (item.children) {\n result.push(...flattenAndFilter(item.children));\n }\n }\n\n return result;\n };\n\n return flattenAndFilter(props.items);\n }, [props.items, searchQuery]);\n\n // Calculate container height and styles\n const getContainerStyle = () => {\n if (props.height === \"full\") {\n return { height: \"100%\" };\n }\n if (typeof props.height === \"number\") {\n return { height: `${props.height}px` };\n }\n if (typeof props.height === \"string\") {\n return { height: props.height };\n }\n return {};\n };\n\n return (\n <div\n className={props.height ? \"flex flex-col gap-2\" : \"space-y-2\"}\n style={getContainerStyle()}\n >\n {/* Search Input - Always visible */}\n <div className=\"flex-shrink-0\">\n <SearchTextInput\n ref={internalRef}\n placeholder={props.placeHolder}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n </div>\n\n {/* Navigator List - Scrollable */}\n <div className={props.height ? \"flex-1 overflow-y-auto min-h-0\" : \"\"}>\n <TreeNavigator\n items={filteredItems}\n searchInputRef={internalRef as RefObject<HTMLInputElement>}\n />\n </div>\n </div>\n );\n});\n\nSearchableTreeNavigator.displayName = \"SearchableTreeNavigator\";\n\n// Backward compatibility export\nexport const SearchableListNavigator = SearchableTreeNavigator;\nexport type SearchableListNavigatorProps = SearchableTreeNavigatorProps;\n","import type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n type FlatItem,\n type TreeNavigatorItem,\n TreeNavigatorItemComponent,\n} from \"./TreeNavigatorItem\";\n\nexport interface TreeNavigatorProps {\n items: TreeNavigatorItem[];\n searchInputRef?: RefObject<HTMLInputElement>;\n}\n\nconst TreeNavigatorComponent = ({\n items,\n searchInputRef,\n}: TreeNavigatorProps) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [expandedItems, setExpandedItems] = useState<Set<string>>(new Set());\n const itemRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // Flatten tree structure for keyboard navigation\n const flattenItems = useCallback(\n (items: TreeNavigatorItem[], level = 0, parentId?: string): FlatItem[] => {\n const result: FlatItem[] = [];\n\n for (const item of items) {\n const hasChildren = Boolean(item.children?.length);\n const isExpanded = expandedItems.has(item.id);\n\n result.push({\n ...item,\n level,\n parentId,\n hasChildren,\n isExpanded,\n });\n\n if (hasChildren && isExpanded && item.children) {\n result.push(...flattenItems(item.children, level + 1, item.id));\n }\n }\n\n return result;\n },\n [expandedItems],\n );\n\n const flatItems = flattenItems(items);\n const itemsLength = flatItems.length;\n\n const toggleExpanded = useCallback((itemId: string) => {\n setExpandedItems((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(itemId)) {\n newSet.delete(itemId);\n } else {\n newSet.add(itemId);\n }\n return newSet;\n });\n }, []);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!itemsLength) return;\n\n const currentItem = flatItems[selectedIndex];\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setSelectedIndex((prev) => (prev + 1) % itemsLength);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setSelectedIndex((prev) => (prev - 1 + itemsLength) % itemsLength);\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n if (currentItem?.hasChildren && !currentItem.isExpanded) {\n toggleExpanded(currentItem.id);\n }\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n if (currentItem?.hasChildren && currentItem.isExpanded) {\n toggleExpanded(currentItem.id);\n }\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n if (currentItem?.hasChildren) {\n toggleExpanded(currentItem.id);\n } else {\n currentItem?.onNavigate?.();\n }\n }\n },\n [flatItems, selectedIndex, itemsLength, toggleExpanded],\n );\n\n useEffect(() => {\n const searchInput = searchInputRef?.current;\n if (searchInput) {\n searchInput.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n searchInput.removeEventListener(\"keydown\", handleKeyDown);\n };\n }\n }, [handleKeyDown, searchInputRef]);\n\n useEffect(() => {\n const currentItem = itemRefs.current[selectedIndex];\n if (currentItem) {\n currentItem.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\",\n });\n }\n // Call onFocus when item gets selected via keyboard\n flatItems[selectedIndex]?.onFocus?.();\n }, [selectedIndex, flatItems]);\n\n useEffect(() => {\n if (selectedIndex >= itemsLength) {\n setSelectedIndex(0);\n }\n }, [selectedIndex, itemsLength]);\n\n if (!items.length) {\n return (\n <div className=\"py-8 text-center text-sm text-text-muted\">\n No items found\n </div>\n );\n }\n\n return (\n <div className=\"space-y-1\">\n {flatItems.map((item, index) => (\n <TreeNavigatorItemComponent\n key={item.id}\n item={item}\n index={index}\n isSelected={index === selectedIndex}\n onToggleExpanded={toggleExpanded}\n itemRef={(el) => {\n itemRefs.current[index] = el;\n }}\n />\n ))}\n </div>\n );\n};\n\n// Export both names for backward compatibility and new functionality\nexport const TreeNavigator = TreeNavigatorComponent;\nexport const ListNavigator = TreeNavigatorComponent;\nexport type ListNavigatorItem = TreeNavigatorItem;\nexport type ListNavigatorProps = TreeNavigatorProps;\n\n// Re-export types from TreeNavigatorItem\nexport type { TreeNavigatorItem, FlatItem } from \"./TreeNavigatorItem\";\n","import { IconChevronRight } from \"@tabler/icons-react\";\nimport { Link } from \"@tanstack/react-router\";\nimport type { RefObject } from \"react\";\nimport { cn } from \"../../../utils\";\n\nexport interface TreeNavigatorItem {\n id: string;\n icon: React.ReactNode;\n title: string;\n subtitle?: string;\n onNavigate?: () => void;\n href?: string;\n onFocus?: () => void;\n children?: TreeNavigatorItem[];\n}\n\nexport interface FlatItem extends TreeNavigatorItem {\n level: number;\n parentId?: string;\n isExpanded?: boolean;\n hasChildren: boolean;\n}\n\ninterface TreeNavigatorItemComponentProps {\n item: FlatItem;\n index: number;\n isSelected: boolean;\n onToggleExpanded: (itemId: string) => void;\n itemRef: (el: HTMLButtonElement | null) => void;\n}\n\nexport const TreeNavigatorItemComponent = ({\n item,\n index,\n isSelected,\n onToggleExpanded,\n itemRef,\n}: TreeNavigatorItemComponentProps) => {\n const handleClick = () => {\n if (item.hasChildren) {\n onToggleExpanded(item.id);\n } else if (item.onNavigate) {\n item.onNavigate();\n }\n };\n\n const commonClassName = cn(\n \"flex items-center gap-3 rounded-md py-2 pr-3 text-sm cursor-pointer w-full text-left transition-colors\",\n isSelected\n ? \"bg-primary text-onPrimary\"\n : \"hover:bg-surfaceVariant hover:text-onSurfaceVariant\",\n );\n\n const commonStyle = { paddingLeft: `${12 + item.level * 16}px` };\n\n const content = (\n <>\n <div className=\"flex-shrink-0\">{item.icon}</div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-medium truncate\">{item.title}</div>\n {item.subtitle && (\n <div\n className={cn(\n \"text-xs truncate\",\n isSelected ? \"text-primary-foreground/80\" : \"text-text-muted\",\n )}\n >\n {item.subtitle}\n </div>\n )}\n </div>\n {item.hasChildren && (\n <div className=\"flex-shrink-0\">\n <div className=\"w-4 h-4 flex items-center justify-center\">\n <IconChevronRight\n size={12}\n className={cn(\n \"transition-transform\",\n item.isExpanded ? \"rotate-90\" : \"rotate-0\",\n )}\n title={item.isExpanded ? \"Collapse\" : \"Expand\"}\n />\n </div>\n </div>\n )}\n </>\n );\n\n // Use Link for href navigation, button for everything else\n if (item.href && !item.hasChildren) {\n return (\n <Link\n key={item.id}\n ref={itemRef as any}\n to={item.href}\n className={commonClassName}\n style={commonStyle}\n >\n {content}\n </Link>\n );\n }\n\n return (\n <button\n key={item.id}\n ref={itemRef}\n type=\"button\"\n className={commonClassName}\n style={commonStyle}\n onClick={handleClick}\n >\n {content}\n </button>\n );\n};\n","import { cva } from \"class-variance-authority\";\nimport type { FC } from \"react\";\nimport type { NavItem } from \"../../../config/nav-item\";\nimport { cn } from \"../../../utils\";\nimport { SafeLink } from \"./SafeLink\";\n\nconst navItemVariants = cva(\n \"flex items-center gap-3 px-3 py-2 text-sm font-medium transition-all duration-200 rounded-md group\",\n {\n variants: {\n variant: {\n default:\n \"text-onSurfaceVariant hover:text-onSurface hover:bg-surfaceVariant\",\n active: \"text-onSurface bg-surfaceVariant border-l-2 border-l-primary\",\n disabled: \"text-onSurfaceVariant cursor-not-allowed opacity-50\",\n },\n level: {\n 0: \"ml-0\",\n 1: \"ml-4\",\n 2: \"ml-8\",\n 3: \"ml-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n level: 0,\n },\n },\n);\n\n// NavItem component\ninterface NavItemComponentProps {\n item: NavItem;\n level: number;\n isExpanded: boolean;\n isActive: boolean;\n onToggle: (id: string) => void;\n onItemClick?: (item: NavItem) => void;\n}\n\nexport const NavItemComponent: FC<NavItemComponentProps> = ({\n item,\n level,\n isExpanded,\n isActive,\n onToggle,\n onItemClick,\n}) => {\n const hasChildren = item.children && item.children.length > 0;\n const isLeaf = !hasChildren;\n\n const handleClick = () => {\n if (hasChildren) {\n onToggle(item.id);\n } else if (item.onClick) {\n item.onClick();\n onItemClick?.(item);\n }\n };\n\n const content = (\n <>\n <div className=\"flex items-center gap-2 flex-1\">\n <span className=\"flex-1 truncate\">{item.label}</span>\n {item.badge && (\n <span className=\"ml-auto px-2 py-0.5 text-xs bg-primaryContainer text-onPrimaryContainer rounded-full\">\n {item.badge}\n </span>\n )}\n </div>\n {hasChildren && (\n <span\n className={cn(\n \"flex-shrink-0 w-4 h-4 transition-transform duration-200\",\n isExpanded ? \"transform rotate-90\" : \"\",\n )}\n >\n ▶\n </span>\n )}\n </>\n );\n\n const variant = item.disabled ? \"disabled\" : isActive ? \"active\" : \"default\";\n const className = navItemVariants({\n variant,\n level: Math.min(level, 3) as 0 | 1 | 2 | 3,\n });\n\n if (isLeaf && item.href && !item.disabled) {\n return (\n <SafeLink\n to={item.href}\n className={className}\n onClick={() => onItemClick?.(item)}\n >\n {content}\n </SafeLink>\n );\n }\n\n return (\n <button\n type=\"button\"\n className={className}\n onClick={handleClick}\n disabled={item.disabled}\n >\n {content}\n </button>\n );\n};\n","import type { FC, ReactNode } from \"react\";\n\n// Safe Link component that handles router context availability\ninterface SafeLinkProps {\n to: string;\n className?: string;\n onClick?: () => void;\n children: ReactNode;\n}\n\nconst SafeLink: FC<SafeLinkProps> = ({ to, className, onClick, children }) => {\n // Simple fallback for non-router environments like Storybook\n return (\n <button\n type=\"button\"\n className={className}\n onClick={(e) => {\n e.preventDefault();\n onClick?.();\n // In a real app, you'd navigate to the route\n console.log(`Navigate to: ${to}`);\n }}\n >\n {children}\n </button>\n );\n};\n\nexport { SafeLink, type SafeLinkProps };\n","import type { FC } from \"react\";\nimport type { NavItem } from \"../../../config/nav-item\";\nimport { NavItemComponent } from \"./NavItemComponent\";\n\n// Main NavItems component\ninterface NavItemsProps {\n items: NavItem[];\n level?: number;\n expandedItems: string[];\n activeItemId?: string;\n onToggle: (id: string) => void;\n onItemClick?: (item: NavItem) => void;\n}\n\nexport const NavItems: FC<NavItemsProps> = ({\n items,\n level = 0,\n expandedItems,\n activeItemId,\n onToggle,\n onItemClick,\n}) => {\n return (\n <div className=\"space-y-1\">\n {items.map((item) => {\n const isExpanded = expandedItems.includes(item.id);\n const isActive = activeItemId === item.id;\n\n return (\n <div key={item.id}>\n <NavItemComponent\n item={item}\n level={level}\n isExpanded={isExpanded}\n isActive={isActive}\n onToggle={onToggle}\n onItemClick={onItemClick}\n />\n {isExpanded && item.children && (\n <NavItems\n items={item.children}\n level={level + 1}\n expandedItems={expandedItems}\n activeItemId={activeItemId}\n onToggle={onToggle}\n onItemClick={onItemClick}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n};\n","import type { NavItem } from \"../../../config/nav-item\";\n\n// Helper function to flatten items for search\nexport const flattenNavItems = (\n items: NavItem[],\n level = 0,\n): (NavItem & { level: number })[] => {\n return items.reduce(\n (acc, item) => {\n acc.push({ ...item, level });\n if (item.children) {\n acc.push(...flattenNavItems(item.children, level + 1));\n }\n return acc;\n },\n [] as (NavItem & { level: number })[],\n );\n};\n\n// Helper function to filter items based on search query\nexport const filterNavItems = (items: NavItem[], query: string): NavItem[] => {\n if (!query.trim()) return items;\n\n const lowerQuery = query.toLowerCase();\n\n return items.reduce((acc, item) => {\n const matchesLabel = item.label.toLowerCase().includes(lowerQuery);\n const filteredChildren = item.children\n ? filterNavItems(item.children, query)\n : [];\n\n if (matchesLabel || filteredChildren.length > 0) {\n acc.push({\n ...item,\n children:\n filteredChildren.length > 0 ? filteredChildren : item.children,\n });\n }\n\n return acc;\n }, [] as NavItem[]);\n};\n","import { RouterProvider } from \"@tanstack/react-router\";\nimport { type FC, useMemo } from \"react\";\nimport type { NubaseFrontendConfig } from \"../../config/nubase-frontend-config\";\nimport { HttpClient } from \"../../http/http-client\";\nimport { router } from \"../../routes/router\";\nimport { ModalProvider } from \"../floating/modal/useModal\";\nimport { initializeMonaco } from \"../monaco/monaco-editor\";\nimport { ServicesProvider } from \"./ServicesProvider\";\n\nexport type NubaseAppProps = {\n config: NubaseFrontendConfig;\n};\n\ninitializeMonaco();\n\nexport const NubaseApp: FC<NubaseAppProps> = ({ config }) => {\n const httpClient = useMemo<HttpClient>(() => {\n return new HttpClient({\n baseUrl: config.apiBaseUrl,\n });\n }, [config]);\n\n return (\n <ModalProvider>\n <ServicesProvider config={config} httpClient={httpClient}>\n <RouterProvider router={router} />\n </ServicesProvider>\n </ModalProvider>\n );\n};\n","import axios from \"axios\";\n\nexport interface HttpResponse<T = any> {\n status: number;\n data: T;\n}\n\nexport interface HttpRequestConfig {\n headers?: Record<string, string>;\n timeout?: number;\n params?: Record<string, any>;\n}\n\nexport class HttpClient {\n private baseUrl: string;\n\n constructor({ baseUrl = \"\" }: { baseUrl?: string }) {\n this.baseUrl = baseUrl;\n }\n\n private async request<T>(\n url: string,\n method: string,\n data?: any,\n config: HttpRequestConfig = {},\n ): Promise<HttpResponse<T>> {\n const fullUrl = this.baseUrl ? `${this.baseUrl}${url}` : url;\n\n const response = await axios({\n url: fullUrl,\n method,\n data,\n headers: config.headers,\n timeout: config.timeout,\n params: config.params,\n });\n\n return {\n status: response.status,\n data: response.data,\n };\n }\n\n async get<T>(\n url: string,\n config?: HttpRequestConfig,\n ): Promise<HttpResponse<T>> {\n return this.request<T>(url, \"GET\", undefined, config);\n }\n\n async post<T>(\n url: string,\n data?: any,\n config?: HttpRequestConfig,\n ): Promise<HttpResponse<T>> {\n return this.request<T>(url, \"POST\", data, config);\n }\n\n async put<T>(\n url: string,\n data?: any,\n config?: HttpRequestConfig,\n ): Promise<HttpResponse<T>> {\n return this.request<T>(url, \"PUT\", data, config);\n }\n\n async patch<T>(\n url: string,\n data?: any,\n config?: HttpRequestConfig,\n ): Promise<HttpResponse<T>> {\n return this.request<T>(url, \"PATCH\", data, config);\n }\n\n async delete<T>(\n url: string,\n config?: HttpRequestConfig,\n ): Promise<HttpResponse<T>> {\n return this.request<T>(url, \"DELETE\", undefined, config);\n }\n}\n","import { createRouter } from \"@tanstack/react-router\";\nimport { routeTree } from \"./routes\";\n\nexport const router = createRouter({\n routeTree: routeTree,\n});\n","import { createRoute } from \"@tanstack/react-router\";\nimport { devRoute } from \"../dev-route\";\nimport ColorsScreen from \"./colors-screen\";\n\nexport const colorsRoute = createRoute({\n getParentRoute: () => devRoute,\n path: \"/colors\",\n component: ColorsScreen,\n});\n","import { Outlet, createRoute } from \"@tanstack/react-router\";\nimport { rootRoute } from \"../root\";\n\nfunction DevLayout() {\n return (\n <div className=\"space-y-6\">\n <div className=\"border-b border-outline pb-4\">\n <h1 className=\"text-2xl font-bold text-onSurface\">Development Tools</h1>\n <p className=\"text-onSurfaceVariant mt-1\">\n Development utilities and debugging tools for the Nubase design system\n </p>\n </div>\n <Outlet />\n </div>\n );\n}\n\nexport const devRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"/dev\",\n component: DevLayout,\n});\n","import { Outlet, createRootRoute } from \"@tanstack/react-router\";\nimport { TanStackRouterDevtools } from \"@tanstack/react-router-devtools\";\nimport { Dock } from \"../components\";\nimport { MainNav } from \"../components/navigation/main-nav/MainNav\";\nimport { useNubaseContext } from \"../components/nubase-app/NubaseContextProvider\";\n\nfunction RootComponent() {\n const context = useNubaseContext();\n\n return (\n <div className=\"bg-background text-text h-screen w-screen\">\n <Dock\n center={<Outlet />}\n left={<MainNav items={context.config.mainMenu} />}\n />\n {/* Development Tools - Top Right */}\n <TanStackRouterDevtools position=\"top-right\" />\n </div>\n );\n}\n\nexport const rootRoute = createRootRoute({\n component: RootComponent,\n});\n","import { useNubaseContext } from \"../../../components/nubase-app/NubaseContextProvider\";\nimport type { NubaseThemeColors } from \"../../../theming/theme\";\n\ninterface ColorSwatchProps {\n name: string;\n value: string;\n description: string;\n}\n\nfunction ColorSwatch({ name, value, description }: ColorSwatchProps) {\n return (\n <div className=\"flex items-center gap-4 p-3 border border-outline rounded-lg bg-surface\">\n <div\n className=\"w-12 h-12 rounded-md border border-outline shadow-sm flex-shrink-0\"\n style={{ backgroundColor: value }}\n />\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <code className=\"text-sm font-mono text-onSurface bg-surfaceVariant px-2 py-1 rounded\">\n {name}\n </code>\n <code className=\"text-xs font-mono text-onSurfaceVariant bg-surfaceVariant px-2 py-1 rounded\">\n {value}\n </code>\n </div>\n <p className=\"text-sm text-onSurfaceVariant mt-1\">{description}</p>\n </div>\n </div>\n );\n}\n\ninterface ColorGroupProps {\n title: string;\n colors: Array<{ name: keyof NubaseThemeColors; description: string }>;\n themeColors: NubaseThemeColors;\n}\n\nfunction ColorGroup({ title, colors, themeColors }: ColorGroupProps) {\n return (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold text-onSurface border-b border-outline pb-2\">\n {title}\n </h3>\n <div className=\"grid gap-3\">\n {colors.map(({ name, description }) => (\n <ColorSwatch\n key={name}\n name={name}\n value={themeColors[name]}\n description={description}\n />\n ))}\n </div>\n </div>\n );\n}\n\nexport default function ColorsScreen() {\n const context = useNubaseContext();\n const currentTheme = context.theming.themeMap[context.theming.activeThemeId];\n\n if (!currentTheme) {\n return (\n <div className=\"text-center py-8\">\n <p className=\"text-onSurfaceVariant\">No theme loaded</p>\n </div>\n );\n }\n\n const colorGroups = [\n {\n title: \"Primary Colors\",\n colors: [\n {\n name: \"primary\" as const,\n description: \"Main brand color for prominent actions\",\n },\n {\n name: \"onPrimary\" as const,\n description: \"Text/icons on primary surfaces\",\n },\n {\n name: \"primaryContainer\" as const,\n description: \"Emphasized containers and badges\",\n },\n {\n name: \"onPrimaryContainer\" as const,\n description: \"Text/icons on primary containers\",\n },\n ],\n },\n {\n title: \"Secondary Colors\",\n colors: [\n {\n name: \"secondary\" as const,\n description: \"Supporting brand color for less prominent actions\",\n },\n {\n name: \"onSecondary\" as const,\n description: \"Text/icons on secondary surfaces\",\n },\n {\n name: \"secondaryContainer\" as const,\n description: \"Secondary buttons and containers\",\n },\n {\n name: \"onSecondaryContainer\" as const,\n description: \"Text/icons on secondary containers\",\n },\n ],\n },\n {\n title: \"Tertiary Colors\",\n colors: [\n {\n name: \"tertiary\" as const,\n description: \"Accent color for balance and contrast\",\n },\n {\n name: \"onTertiary\" as const,\n description: \"Text/icons on tertiary surfaces\",\n },\n {\n name: \"tertiaryContainer\" as const,\n description: \"Tertiary containers and highlights\",\n },\n {\n name: \"onTertiaryContainer\" as const,\n description: \"Text/icons on tertiary containers\",\n },\n ],\n },\n {\n title: \"Error Colors\",\n colors: [\n {\n name: \"error\" as const,\n description: \"Error states and destructive actions\",\n },\n {\n name: \"onError\" as const,\n description: \"Text/icons on error surfaces\",\n },\n {\n name: \"errorContainer\" as const,\n description: \"Error containers and alerts\",\n },\n {\n name: \"onErrorContainer\" as const,\n description: \"Text/icons on error containers\",\n },\n ],\n },\n {\n title: \"Surface Colors\",\n colors: [\n {\n name: \"surface\" as const,\n description: \"Default background surfaces\",\n },\n { name: \"onSurface\" as const, description: \"Primary text color\" },\n {\n name: \"surfaceVariant\" as const,\n description: \"Subtle background variations\",\n },\n {\n name: \"onSurfaceVariant\" as const,\n description: \"Secondary text and placeholders\",\n },\n ],\n },\n {\n title: \"Other Colors\",\n colors: [\n { name: \"outline\" as const, description: \"Borders and dividers\" },\n { name: \"outlineVariant\" as const, description: \"Subtle borders\" },\n { name: \"shadow\" as const, description: \"Drop shadows\" },\n { name: \"scrim\" as const, description: \"Modal backdrops\" },\n {\n name: \"inverseSurface\" as const,\n description: \"High contrast surfaces\",\n },\n {\n name: \"onInverseSurface\" as const,\n description: \"Text on inverse surfaces\",\n },\n ],\n },\n ];\n\n return (\n <div className=\"space-y-8\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-semibold text-onSurface\">Theme Colors</h2>\n <p className=\"text-onSurfaceVariant mt-1\">\n Current theme:{\" \"}\n <span className=\"font-medium\">{currentTheme.name}</span> (\n {currentTheme.type})\n </p>\n </div>\n <div className=\"flex items-center gap-2 text-sm text-onSurfaceVariant\">\n <span>Theme ID:</span>\n <code className=\"bg-surfaceVariant px-2 py-1 rounded font-mono\">\n {currentTheme.id}\n </code>\n </div>\n </div>\n\n <div className=\"grid gap-8\">\n {colorGroups.map((group) => (\n <ColorGroup\n key={group.title}\n title={group.title}\n colors={group.colors}\n themeColors={currentTheme.colors}\n />\n ))}\n </div>\n\n <div className=\"mt-12 p-6 bg-surfaceVariant rounded-lg\">\n <h3 className=\"text-lg font-semibold text-onSurface mb-4\">\n Usage Examples\n </h3>\n <div className=\"space-y-3\">\n <div className=\"font-mono text-sm\">\n <span className=\"text-primary\">bg-primary</span>{\" \"}\n <span className=\"text-onSurfaceVariant\">→</span>{\" \"}\n <span className=\"text-onSurface\">\n {currentTheme.colors.primary}\n </span>\n </div>\n <div className=\"font-mono text-sm\">\n <span className=\"text-secondary\">text-onSurface</span>{\" \"}\n <span className=\"text-onSurfaceVariant\">→</span>{\" \"}\n <span className=\"text-onSurface\">\n {currentTheme.colors.onSurface}\n </span>\n </div>\n <div className=\"font-mono text-sm\">\n <span className=\"text-tertiary\">border-outline</span>{\" \"}\n <span className=\"text-onSurfaceVariant\">→</span>{\" \"}\n <span className=\"text-onSurface\">\n {currentTheme.colors.outline}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { createRoute } from \"@tanstack/react-router\";\nimport { devRoute } from \"../dev-route\";\nimport IndexScreen from \"./index-screen\";\n\nexport const devIndexRoute = createRoute({\n getParentRoute: () => devRoute,\n path: \"/\",\n component: IndexScreen,\n});\n","import { Link } from \"@tanstack/react-router\";\n\ninterface DevToolCardProps {\n title: string;\n description: string;\n href: string;\n}\n\nfunction DevToolCard({ title, description, href }: DevToolCardProps) {\n return (\n <Link\n to={href}\n className=\"block p-6 border border-outline rounded-lg bg-surface hover:bg-surfaceVariant transition-colors\"\n >\n <h3 className=\"text-lg font-semibold text-onSurface mb-2\">{title}</h3>\n <p className=\"text-onSurfaceVariant\">{description}</p>\n </Link>\n );\n}\n\nexport default function IndexScreen() {\n const devTools = [\n {\n title: \"Colors\",\n description:\n \"View all Material Design 3 color tokens for the current theme\",\n href: \"/dev/colors\",\n },\n // Future dev tools can be added here\n ];\n\n return (\n <div className=\"space-y-6\">\n <div>\n <h2 className=\"text-xl font-semibold text-onSurface mb-2\">\n Available Tools\n </h2>\n <p className=\"text-onSurfaceVariant\">\n Development utilities to help you work with the Nubase design system\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {devTools.map((tool) => (\n <DevToolCard\n key={tool.href}\n title={tool.title}\n description={tool.description}\n href={tool.href}\n />\n ))}\n </div>\n\n <div className=\"mt-8 p-4 bg-surfaceVariant rounded-lg\">\n <h3 className=\"text-lg font-semibold text-onSurface mb-2\">\n Need more tools?\n </h3>\n <p className=\"text-onSurfaceVariant text-sm\">\n This development section can be extended with additional debugging and\n development utilities like component showcases, typography scales,\n spacing guides, and more.\n </p>\n </div>\n </div>\n );\n}\n","import { createRoute } from \"@tanstack/react-router\";\nimport { rootRoute } from \"../root\";\nimport ViewScreen from \"./view-screen\";\n\nexport const viewRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"/v/$view\",\n validateSearch: (search: Record<string, unknown>) => ({\n id: search.id as string | undefined,\n }),\n component: ViewScreen,\n});\n","import { useParams } from \"@tanstack/react-router\";\nimport { useNubaseContext } from \"../../components/nubase-app/NubaseContextProvider\";\nimport { ViewRenderer } from \"../../components/views/ViewRenderer/ViewRenderer\";\n\nexport default function ViewScreen() {\n const { view } = useParams({ from: \"/v/$view\" });\n const context = useNubaseContext();\n\n // we need to make sure that the view is in the config.views object\n if (!context.config.views[view]) {\n return <div>View not found</div>;\n }\n\n return <ViewRenderer view={context.config.views[view]} />;\n}\n","import type { ObjectOutput } from \"@nubase/core\";\nimport type { FC } from \"react\";\nimport type { CreateView } from \"../../../config/view\";\nimport { SchemaForm } from \"../../form\";\nimport { useNubaseContext } from \"../../nubase-app/NubaseContextProvider\";\n\nexport type CreateViewRendererProps = {\n view: CreateView;\n};\n\nexport const CreateViewRenderer: FC<CreateViewRendererProps> = ({ view }) => {\n const context = useNubaseContext();\n return (\n <SchemaForm\n schema={view.schema}\n onSubmit={(data: ObjectOutput<any>) => {\n view.onSubmit({\n data,\n http: context.typedApiClient || context.httpClient,\n });\n }}\n />\n );\n};\n","import type { FC } from \"react\";\nimport type { View } from \"../../../config/view\";\nimport { CreateViewRenderer } from \"./CreateViewRenderer\";\n\nexport type ViewRendererProps = {\n view: View;\n};\n\nexport const ViewRenderer: FC<ViewRendererProps> = (props) => {\n const { view } = props;\n\n switch (view.type) {\n case \"create\":\n return <CreateViewRenderer view={view} />;\n default:\n return null;\n }\n};\n","import { colorsRoute } from \"./dev/colors/colors-route\";\nimport { devRoute } from \"./dev/dev-route\";\nimport { devIndexRoute } from \"./dev/index/index-route\";\nimport { rootRoute } from \"./root\";\nimport { viewRoute } from \"./view/view-route\";\n\nexport const routeTree = rootRoute.addChildren([\n viewRoute,\n devRoute.addChildren([devIndexRoute, colorsRoute]),\n]);\n","import loader from \"@monaco-editor/loader\";\nimport * as monaco from \"monaco-editor\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\n\n// Simple example schema - replace with your actual schema\nconst exampleSchema = z.object({\n name: z.string(),\n version: z.string(),\n description: z.string().optional(),\n});\n\nexport async function initializeJsonSchema(): Promise<void> {\n try {\n // Convert the Zod schema to JSON Schema using the library\n const jsonSchema = zodToJsonSchema(exampleSchema, \"exampleSchema\");\n\n // Configure JSON language settings\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n validate: true,\n allowComments: true,\n schemas: [\n {\n uri: \"project-schema.json\", // A unique URI for the schema itself\n schema: jsonSchema,\n fileMatch: [\"*\"], // Match all JSON files\n },\n ],\n enableSchemaRequest: true,\n schemaValidation: \"error\",\n schemaRequest: \"error\",\n });\n\n // Configure completion and formatting settings\n monaco.languages.json.jsonDefaults.setModeConfiguration({\n documentFormattingEdits: true,\n documentRangeFormattingEdits: true,\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n tokens: true,\n colors: true,\n foldingRanges: true,\n diagnostics: true,\n selectionRanges: true,\n });\n\n // JSON schema validation configured successfully\n } catch (error) {\n console.error(\"Error configuring JSON schema validation:\", error);\n }\n}\n\nexport async function initializeMonaco(): Promise<typeof monaco> {\n loader.config({ monaco });\n await initializeJsonSchema();\n\n return loader.init();\n}\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { commandRegistry } from \"../../commands\";\nimport type { NubaseFrontendConfig } from \"../../config/nubase-frontend-config\";\nimport type { NubaseContextData } from \"../../context/types\";\nimport type { HttpClient } from \"../../http/http-client\";\nimport { createTypedApiClient } from \"../../http/typed-api-client\";\nimport { cleanupKeybindings, registerKeybindings } from \"../../keybindings\";\nimport { useModal } from \"../floating/modal/useModal\";\nimport {\n type NubaseInitializationData,\n initializeNubaseApp,\n} from \"./initializeNubaseApp\";\n\nexport interface UseNubaseContextOptions {\n config: NubaseFrontendConfig;\n httpClient: HttpClient;\n}\n\nexport interface UseNubaseContextResult {\n data: NubaseContextData | null;\n isLoading: boolean;\n error: Error | null;\n retry: () => void;\n}\n\n/**\n * Hook that manages the initialization of the Nubase app context\n * Handles async theme loading and other initialization tasks\n */\nexport function useCreateNubaseContext({\n config,\n httpClient,\n}: UseNubaseContextOptions): UseNubaseContextResult {\n const [initializationData, setInitializationData] =\n useState<NubaseInitializationData | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [activeThemeId, setActiveThemeId] = useState<string>(\"\");\n const modal = useModal();\n\n const initialize = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n const initData = await initializeNubaseApp({ config, httpClient });\n setInitializationData(initData);\n setActiveThemeId(initData.defaultThemeId);\n } catch (err) {\n const error =\n err instanceof Error\n ? err\n : new Error(\"Failed to initialize Nubase app\");\n setError(error);\n console.error(\"Failed to initialize Nubase app:\", error);\n } finally {\n setIsLoading(false);\n }\n }, [config, httpClient]);\n\n useEffect(() => {\n initialize();\n }, [initialize]);\n\n // Create the mutable, stateful NubaseContextData\n const nubaseContextData = useMemo(() => {\n if (!initializationData) return null;\n\n // Create typed API client if endpoints are provided\n let typedApiClient: any = undefined;\n if (initializationData.config.apiEndpoints) {\n try {\n typedApiClient = createTypedApiClient(\n httpClient,\n initializationData.config.apiEndpoints,\n );\n } catch (error) {\n console.warn(\"Failed to create typed API client:\", error);\n }\n }\n\n const nubaseContextDataInternal: NubaseContextData = {\n config: initializationData.config,\n commands: commandRegistry,\n keybindings: [\n {\n key: [\"meta+k\", \"ctrl+k\"],\n command: \"workbench.runCommand\",\n args: {},\n },\n {\n key: [\"meta+/\", \"ctrl+/\"],\n command: \"workbench.setTheme\",\n args: {},\n },\n ],\n httpClient,\n typedApiClient,\n modal,\n theming: {\n themeIds: initializationData.themeIds,\n themeMap: initializationData.themeMap,\n activeThemeId,\n setActiveThemeId: (themeId: string) => {\n if (initializationData.themeIds.includes(themeId)) {\n setActiveThemeId(themeId);\n } else {\n console.warn(`Theme ID \"${themeId}\" is not defined in the config.`);\n }\n },\n },\n };\n\n return nubaseContextDataInternal;\n }, [initializationData, modal, activeThemeId, httpClient]);\n\n // Initialize command system and register keybindings when nubaseContextData is available\n useEffect(() => {\n if (nubaseContextData) {\n // Set command registry context\n commandRegistry.setContext(nubaseContextData);\n\n // Register keybindings\n registerKeybindings(nubaseContextData.keybindings);\n }\n }, [nubaseContextData]);\n\n // Update DOM attribute when activeThemeId changes\n useEffect(() => {\n if (activeThemeId) {\n document.documentElement.setAttribute(\"data-theme\", activeThemeId);\n }\n }, [activeThemeId]);\n\n // Cleanup function to remove theme variables and keybindings when unmounting\n useEffect(() => {\n return () => {\n const existingStyle = document.getElementById(\"nubase-theme-variables\");\n if (existingStyle) {\n existingStyle.remove();\n }\n cleanupKeybindings();\n };\n }, []);\n\n return {\n data: nubaseContextData,\n isLoading,\n error,\n retry: initialize,\n };\n}\n","import type {\n CommandDefinition,\n CommandRegistry,\n NubaseContextData,\n} from \"./types\";\n\nclass CommandRegistryImpl implements CommandRegistry {\n private commands = new Map<string, CommandDefinition>();\n private context: NubaseContextData | null = null;\n\n setContext(context: NubaseContextData) {\n this.context = context;\n }\n\n register(command: CommandDefinition) {\n this.commands.set(command.id, command);\n }\n\n async execute(\n commandId: string,\n args?: Record<string, unknown>,\n ): Promise<void> {\n if (!this.context) {\n throw new Error(\n \"Command context not set. Make sure to initialize the command system.\",\n );\n }\n\n const command = this.commands.get(commandId);\n if (!command) {\n console.warn(`Command \"${commandId}\" not found`);\n return;\n }\n\n try {\n await command.execute(this.context, args);\n } catch (error) {\n console.error(`Error executing command \"${commandId}\":`, error);\n }\n }\n\n getCommand(commandId: string): CommandDefinition | undefined {\n return this.commands.get(commandId);\n }\n\n getAllCommands(): CommandDefinition[] {\n return Array.from(this.commands.values());\n }\n\n clear() {\n this.commands.clear();\n }\n}\n\nexport const commandRegistry = new CommandRegistryImpl();\n","import { IconCommand } from \"@tabler/icons-react\";\nimport { SearchableTreeNavigator } from \"../../components/navigation/searchable-tree-navigator/SearchableTreeNavigator\";\nimport type { TreeNavigatorItem } from \"../../components/navigation/searchable-tree-navigator/TreeNavigator\";\nimport type { CommandDefinition } from \"../types\";\n\nexport const workbenchRunCommand: CommandDefinition = {\n id: \"workbench.runCommand\",\n name: \"Run Command\",\n execute: (context) => {\n const commands = context.commands.getAllCommands();\n const commandItems: TreeNavigatorItem[] = commands.map((command) => ({\n id: command.id,\n icon: <IconCommand className=\"h-4 w-4\" />,\n title: command.name,\n onNavigate: () => {\n context.modal.closeModal();\n context.commands.execute(command.id);\n },\n }));\n context.modal.openModal(\n <SearchableTreeNavigator\n items={commandItems}\n placeHolder=\"Search in commands...\"\n />,\n {\n alignment: \"top\",\n size: \"lg\",\n showBackdrop: true,\n showCloseButton: false,\n },\n );\n },\n};\n","import type {\n InferRequestBody,\n InferRequestParams,\n InferResponseBody,\n RequestSchema,\n} from \"@nubase/core\";\nimport type {\n HttpClient,\n HttpRequestConfig,\n HttpResponse,\n} from \"./http-client\";\n\ntype TypedMethodOptions<T extends RequestSchema> = {\n params?: InferRequestParams<T>;\n data?: InferRequestBody<T>;\n config?: HttpRequestConfig;\n};\n\n// Helper type to create method signature based on HTTP method\ntype MethodSignature<T extends RequestSchema> = T[\"method\"] extends \"GET\"\n ? (\n options?: Omit<TypedMethodOptions<T>, \"data\">,\n ) => Promise<HttpResponse<InferResponseBody<T>>>\n : (\n options?: TypedMethodOptions<T>,\n ) => Promise<HttpResponse<InferResponseBody<T>>>;\n\n// Main typed API client structure - simple flat endpoints\ntype TypedApiMethods<T> = {\n [K in keyof T]: T[K] extends RequestSchema ? MethodSignature<T[K]> : never;\n};\n\nexport class TypedApiClient<T> {\n private httpClient: HttpClient;\n private endpoints: T;\n\n constructor(httpClient: HttpClient, endpoints: T) {\n this.httpClient = httpClient;\n this.endpoints = endpoints;\n\n // Create flattened API client structure\n this.createFlatApiClient();\n }\n\n private createFlatApiClient() {\n for (const [key, schema] of Object.entries(\n this.endpoints as Record<string, any>,\n )) {\n if (this.isRequestSchema(schema)) {\n (this as any)[key] = async (options: TypedMethodOptions<any> = {}) => {\n return this.executeRequest(schema as RequestSchema, options);\n };\n }\n }\n }\n\n private async executeRequest(\n schema: RequestSchema,\n options: TypedMethodOptions<any>,\n ): Promise<HttpResponse<any>> {\n const { params, data, config } = options;\n\n // Replace path parameters if they exist\n let path = schema.path;\n if (params && typeof params === \"object\") {\n for (const [key, value] of Object.entries(params)) {\n path = path.replace(`:${key}`, String(value));\n }\n }\n\n // Validate request body if provided\n if (data && schema.requestBody) {\n try {\n schema.requestBody.parse(data);\n } catch (error) {\n throw new Error(`Request body validation failed: ${error}`);\n }\n }\n\n // Make the HTTP request\n switch (schema.method) {\n case \"GET\":\n return this.httpClient.get(path, config);\n case \"POST\":\n return this.httpClient.post(path, data, config);\n case \"PUT\":\n return this.httpClient.put(path, data, config);\n case \"PATCH\":\n return this.httpClient.patch(path, data, config);\n case \"DELETE\":\n return this.httpClient.delete(path, config);\n default:\n throw new Error(`Unsupported HTTP method: ${schema.method}`);\n }\n }\n\n private isRequestSchema(obj: any): obj is RequestSchema {\n return (\n obj &&\n typeof obj === \"object\" &&\n \"method\" in obj &&\n \"path\" in obj &&\n \"requestParams\" in obj &&\n \"requestBody\" in obj &&\n \"responseBody\" in obj\n );\n }\n\n private capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n}\n\nexport function createTypedApiClient<T>(\n httpClient: HttpClient,\n endpoints: T,\n): TypedApiClient<T> & TypedApiMethods<T> {\n return new TypedApiClient(httpClient, endpoints) as TypedApiClient<T> &\n TypedApiMethods<T>;\n}\n","import type { Keybinding } from \"../commands/types\";\nimport type { KeySequence, ParsedKeybinding } from \"./types\";\n\n/**\n * Parses a key string into a KeySequence\n * Supports VS Code format: \"ctrl+alt+k\", \"meta+shift+p\", etc.\n */\nexport function parseKeySequence(keyString: string): KeySequence {\n const parts = keyString.toLowerCase().split(\"+\");\n const sequence: KeySequence = {\n key: \"\",\n };\n\n for (const part of parts) {\n switch (part.trim()) {\n case \"ctrl\":\n case \"control\":\n sequence.ctrl = true;\n break;\n case \"meta\":\n case \"cmd\":\n case \"command\":\n sequence.meta = true;\n break;\n case \"alt\":\n case \"option\":\n sequence.alt = true;\n break;\n case \"shift\":\n sequence.shift = true;\n break;\n default:\n sequence.key = part.trim();\n }\n }\n\n return sequence;\n}\n\n/**\n * Parses a keybinding definition into ParsedKeybinding\n * Supports chords like \"ctrl+k ctrl+c\" (space-separated sequences)\n * Supports alternative keys as array: [\"meta+k\", \"ctrl+k\"]\n */\nexport function parseKeybinding(keybinding: Keybinding): ParsedKeybinding[] {\n const keys = Array.isArray(keybinding.key)\n ? keybinding.key\n : [keybinding.key];\n\n return keys.map((keyString) => {\n // Split by spaces for chord sequences\n const sequences = keyString\n .split(/\\s+/)\n .map((seq) => seq.trim())\n .filter((seq) => seq.length > 0);\n\n return {\n key: keyString,\n sequences,\n command: keybinding.command,\n args: keybinding.args,\n };\n });\n}\n\n/**\n * Creates a normalized key string from a KeyboardEvent\n * Matches VS Code's key format\n */\nexport function normalizeEventKey(event: KeyboardEvent): string {\n const parts: string[] = [];\n\n if (event.metaKey) parts.push(\"meta\");\n if (event.ctrlKey) parts.push(\"ctrl\");\n if (event.altKey) parts.push(\"alt\");\n if (event.shiftKey) parts.push(\"shift\");\n\n // Handle special keys\n let key = event.key.toLowerCase();\n\n // Map special keys to VS Code format\n switch (key) {\n case \" \":\n key = \"space\";\n break;\n case \"arrowup\":\n key = \"up\";\n break;\n case \"arrowdown\":\n key = \"down\";\n break;\n case \"arrowleft\":\n key = \"left\";\n break;\n case \"arrowright\":\n key = \"right\";\n break;\n case \"escape\":\n key = \"escape\";\n break;\n case \"enter\":\n key = \"enter\";\n break;\n case \"backspace\":\n key = \"backspace\";\n break;\n case \"delete\":\n key = \"delete\";\n break;\n case \"tab\":\n key = \"tab\";\n break;\n }\n\n parts.push(key);\n return parts.join(\"+\");\n}\n\n/**\n * Checks if a key sequence matches a parsed sequence\n */\nexport function matchesKeySequence(\n eventKey: string,\n targetSequence: string,\n): boolean {\n return eventKey === targetSequence.toLowerCase();\n}\n","import { commandRegistry } from \"../commands/CommandRegistry\";\nimport type { Keybinding } from \"../commands/types\";\nimport {\n matchesKeySequence,\n normalizeEventKey,\n parseKeybinding,\n} from \"./keyParser\";\nimport type { KeybindingState, ParsedKeybinding } from \"./types\";\n\n/**\n * Manages keybindings with VS Code-style syntax support including chords\n */\nclass KeybindingManager {\n private keybindings: ParsedKeybinding[] = [];\n private state: KeybindingState = {\n currentChord: [],\n chordTimeout: null,\n waitingForChord: false,\n };\n\n // Chord timeout duration (ms) - matches VS Code's behavior\n private readonly CHORD_TIMEOUT = 1000;\n\n /**\n * Registers an array of keybindings\n */\n registerKeybindings(keybindings: Keybinding[]): void {\n // Clear existing keybindings\n this.keybindings = [];\n this.resetChordState();\n\n // Parse and register new keybindings\n for (const keybinding of keybindings) {\n const parsedKeybindings = parseKeybinding(keybinding);\n this.keybindings.push(...parsedKeybindings);\n }\n }\n\n /**\n * Handles keyboard events and executes matching commands\n */\n async handleKeyboardEvent(event: KeyboardEvent): Promise<boolean> {\n // Don't handle events in input fields unless specifically configured\n const target = event.target as HTMLElement;\n if (this.shouldIgnoreEvent(target)) {\n return false;\n }\n\n const eventKey = normalizeEventKey(event);\n\n // If we're waiting for a chord, try to complete it\n if (this.state.waitingForChord) {\n return await this.handleChordCompletion(event, eventKey);\n }\n\n // Look for matching keybindings\n const matches = this.findMatches(eventKey);\n\n if (matches.length === 0) {\n return false;\n }\n\n // If there's an exact single-sequence match, execute it\n const exactMatch = matches.find(\n (match) =>\n match.sequences.length === 1 &&\n match.sequences[0] &&\n matchesKeySequence(eventKey, match.sequences[0]),\n );\n\n if (exactMatch && matches.length === 1) {\n event.preventDefault();\n event.stopPropagation();\n await this.executeCommand(exactMatch);\n return true;\n }\n\n // Check if any matches require multiple sequences (chords)\n const chordMatches = matches.filter((match) => match.sequences.length > 1);\n\n if (chordMatches.length > 0) {\n // Start chord sequence\n event.preventDefault();\n event.stopPropagation();\n this.startChordSequence(eventKey);\n return true;\n }\n\n // If we have an exact single match among multiple possibilities\n if (exactMatch) {\n event.preventDefault();\n event.stopPropagation();\n await this.executeCommand(exactMatch);\n return true;\n }\n\n return false;\n }\n\n /**\n * Finds all keybindings that could match the current key\n */\n private findMatches(eventKey: string): ParsedKeybinding[] {\n return this.keybindings.filter((binding) =>\n binding.sequences.some((seq, index) => {\n if (index === 0) {\n return matchesKeySequence(eventKey, seq);\n }\n return false;\n }),\n );\n }\n\n /**\n * Handles completion of a chord sequence\n */\n private async handleChordCompletion(\n event: KeyboardEvent,\n eventKey: string,\n ): Promise<boolean> {\n const currentSequenceIndex = this.state.currentChord.length;\n\n // Find keybindings that match our current chord progress\n const potentialMatches = this.keybindings.filter((binding) => {\n // Must have more sequences than our current progress\n if (binding.sequences.length <= currentSequenceIndex) {\n return false;\n }\n\n // All previous sequences must match our chord history\n for (let i = 0; i < currentSequenceIndex; i++) {\n const chordKey = this.state.currentChord[i];\n const bindingSeq = binding.sequences[i];\n if (\n !chordKey ||\n !bindingSeq ||\n !matchesKeySequence(chordKey, bindingSeq)\n ) {\n return false;\n }\n }\n\n // Current key must match the next sequence\n const nextSequence = binding.sequences[currentSequenceIndex];\n return nextSequence ? matchesKeySequence(eventKey, nextSequence) : false;\n });\n\n if (potentialMatches.length === 0) {\n // No matches, reset chord state\n this.resetChordState();\n return false;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n // Add current key to chord history\n this.state.currentChord.push(eventKey);\n\n // Check if any match is complete\n const completeMatch = potentialMatches.find(\n (match) => match.sequences.length === this.state.currentChord.length,\n );\n\n if (completeMatch) {\n // Execute the completed chord\n await this.executeCommand(completeMatch);\n this.resetChordState();\n return true;\n }\n\n // Continue waiting for more keys in the chord\n this.resetChordTimeout();\n return true;\n }\n\n /**\n * Starts a new chord sequence\n */\n private startChordSequence(eventKey: string): void {\n this.state.currentChord = [eventKey];\n this.state.waitingForChord = true;\n this.resetChordTimeout();\n }\n\n /**\n * Resets the chord timeout\n */\n private resetChordTimeout(): void {\n if (this.state.chordTimeout) {\n window.clearTimeout(this.state.chordTimeout);\n }\n\n this.state.chordTimeout = window.setTimeout(() => {\n this.resetChordState();\n }, this.CHORD_TIMEOUT);\n }\n\n /**\n * Resets the chord state\n */\n private resetChordState(): void {\n this.state.currentChord = [];\n this.state.waitingForChord = false;\n\n if (this.state.chordTimeout) {\n window.clearTimeout(this.state.chordTimeout);\n this.state.chordTimeout = null;\n }\n }\n\n /**\n * Executes a command for a matching keybinding\n */\n private async executeCommand(keybinding: ParsedKeybinding): Promise<void> {\n try {\n await commandRegistry.execute(keybinding.command, keybinding.args);\n } catch (error) {\n console.error(\n `Failed to execute command \"${keybinding.command}\":`,\n error,\n );\n }\n }\n\n /**\n * Determines if we should ignore a keyboard event based on the target element\n */\n private shouldIgnoreEvent(target: HTMLElement): boolean {\n // Ignore events in input fields, textareas, and contenteditable elements\n const tagName = target.tagName.toLowerCase();\n\n if (tagName === \"input\" || tagName === \"textarea\") {\n return true;\n }\n\n if (target.contentEditable === \"true\") {\n return true;\n }\n\n // Ignore if any parent has contenteditable\n let parent = target.parentElement;\n while (parent) {\n if (parent.contentEditable === \"true\") {\n return true;\n }\n parent = parent.parentElement;\n }\n\n return false;\n }\n\n /**\n * Clears all registered keybindings\n */\n clear(): void {\n this.keybindings = [];\n this.resetChordState();\n }\n\n /**\n * Gets all registered keybindings\n */\n getKeybindings(): ParsedKeybinding[] {\n return [...this.keybindings];\n }\n}\n\nexport const keybindingManager = new KeybindingManager();\n","import type { Keybinding } from \"../commands/types\";\nimport { keybindingManager } from \"./KeybindingManager\";\n\nlet isListenerAttached = false;\n\n/**\n * Registers keybindings and sets up the global keyboard event listener\n * This replaces the hook-based approach with a centralized system\n */\nexport function registerKeybindings(keybindings: Keybinding[]): void {\n // Register the keybindings with the manager\n keybindingManager.registerKeybindings(keybindings);\n\n // Attach global keyboard listener if not already attached\n if (!isListenerAttached) {\n document.addEventListener(\"keydown\", handleGlobalKeydown, true);\n isListenerAttached = true;\n }\n}\n\n/**\n * Global keyboard event handler\n */\nasync function handleGlobalKeydown(event: KeyboardEvent): Promise<void> {\n await keybindingManager.handleKeyboardEvent(event);\n}\n\n/**\n * Cleans up the keybinding system\n * Call this when unmounting the app or when you want to remove all keybindings\n */\nexport function cleanupKeybindings(): void {\n keybindingManager.clear();\n\n if (isListenerAttached) {\n document.removeEventListener(\"keydown\", handleGlobalKeydown, true);\n isListenerAttached = false;\n }\n}\n\n/**\n * Updates keybindings without removing the global listener\n * Useful for hot-reloading keybinding configurations\n */\nexport function updateKeybindings(keybindings: Keybinding[]): void {\n keybindingManager.registerKeybindings(keybindings);\n}\n","import { IconMoon, IconSun } from \"@tabler/icons-react\";\nimport { SearchableTreeNavigator } from \"../../components/navigation/searchable-tree-navigator/SearchableTreeNavigator\";\nimport type { TreeNavigatorItem } from \"../../components/navigation/searchable-tree-navigator/TreeNavigator\";\nimport type { CommandDefinition } from \"../types\";\n\nexport const workbenchSetTheme: CommandDefinition = {\n id: \"workbench.setTheme\",\n name: \"Set Theme\",\n execute: (context) => {\n // Get available themes from context or use defaults\n const availableThemes = context.config?.themeIds || [\"light\", \"dark\"];\n\n // We need the original theme to revert back if the modal is dismissed\n const originalTheme = context.theming.activeThemeId;\n\n // Sort themes: current theme first, then others alphabetically\n const currentTheme = context.theming.activeThemeId;\n const otherThemes = availableThemes\n .filter((themeId) => themeId !== currentTheme)\n .sort((a, b) => a.localeCompare(b));\n const sortedThemes = [currentTheme, ...otherThemes];\n\n const themeItems: TreeNavigatorItem[] = sortedThemes.map((themeId) => {\n const theme = context.theming.themeMap[themeId];\n return {\n id: themeId,\n icon: theme?.type === \"dark\" ? <IconMoon /> : <IconSun />,\n title: theme?.name || themeId,\n subtitle: `Switch to ${themeId} theme`,\n onNavigate: () => {\n context.modal.closeModal();\n context.theming.setActiveThemeId(themeId);\n },\n onFocus: () => {\n // Preview the theme when focused\n context.theming.setActiveThemeId(themeId);\n },\n };\n });\n\n context.modal.openModal(\n <SearchableTreeNavigator\n items={themeItems}\n placeHolder=\"Search themes...\"\n />,\n {\n alignment: \"top\",\n size: \"lg\",\n showBackdrop: true,\n showCloseButton: false,\n onDismiss: () => {\n // Revert to the original theme if modal is dismissed\n context.theming.setActiveThemeId(originalTheme);\n },\n },\n );\n },\n};\n","import type { NubaseTheme } from \"../theme\";\n\nexport const dark: NubaseTheme = {\n name: \"Dark\",\n type: \"dark\",\n id: \"dark\",\n colors: {\n // Primary colors - Bright modern indigo\n primary: \"#818CF8\",\n onPrimary: \"#1E1B4B\",\n primaryContainer: \"#312E81\",\n onPrimaryContainer: \"#E0E7FF\",\n\n // Secondary colors - Cool slate tones\n secondary: \"#94A3B8\",\n onSecondary: \"#1E293B\",\n secondaryContainer: \"#334155\",\n onSecondaryContainer: \"#E2E8F0\",\n\n // Tertiary colors - Vibrant emerald\n tertiary: \"#34D399\",\n onTertiary: \"#064E3B\",\n tertiaryContainer: \"#065F46\",\n onTertiaryContainer: \"#D1FAE5\",\n\n // Error colors - Soft red for dark mode\n error: \"#F87171\",\n onError: \"#7F1D1D\",\n errorContainer: \"#991B1B\",\n onErrorContainer: \"#FEE2E2\",\n\n // Surface colors - Rich dark base\n surface: \"#0F172A\",\n onSurface: \"#F8FAFC\",\n surfaceVariant: \"#1E293B\",\n onSurfaceVariant: \"#CBD5E1\",\n\n // Other colors\n outline: \"#475569\",\n outlineVariant: \"#64748B\",\n shadow: \"#000000\",\n scrim: \"#000000\",\n inverseSurface: \"#F8FAFC\",\n onInverseSurface: \"#0F172A\",\n },\n};\n","import type { NubaseTheme } from \"../theme\";\n\nexport const darkhc: NubaseTheme = {\n name: \"Dark High Contrast\",\n type: \"dark\",\n id: \"darkhc\",\n colors: {\n // Primary colors - Maximum contrast bright cyan\n primary: \"#00FFFF\",\n onPrimary: \"#000000\",\n primaryContainer: \"#003333\",\n onPrimaryContainer: \"#00FFFF\",\n\n // Secondary colors - High contrast yellow\n secondary: \"#FFFF00\",\n onSecondary: \"#000000\",\n secondaryContainer: \"#333300\",\n onSecondaryContainer: \"#FFFF00\",\n\n // Tertiary colors - Bright magenta\n tertiary: \"#FF00FF\",\n onTertiary: \"#000000\",\n tertiaryContainer: \"#330033\",\n onTertiaryContainer: \"#FF00FF\",\n\n // Error colors - Pure red with maximum contrast\n error: \"#FF0000\",\n onError: \"#000000\",\n errorContainer: \"#330000\",\n onErrorContainer: \"#FF0000\",\n\n // Surface colors - Pure black base with white text\n surface: \"#000000\",\n onSurface: \"#FFFFFF\",\n surfaceVariant: \"#1A1A1A\",\n onSurfaceVariant: \"#FFFFFF\",\n\n // Other colors - Maximum contrast outlines\n outline: \"#FFFFFF\",\n outlineVariant: \"#CCCCCC\",\n shadow: \"#000000\",\n scrim: \"#000000\",\n inverseSurface: \"#FFFFFF\",\n onInverseSurface: \"#000000\",\n },\n};\n","import type { NubaseTheme } from \"../theme\";\n\nexport const light: NubaseTheme = {\n name: \"Light\",\n type: \"light\",\n id: \"light\",\n colors: {\n // Primary colors - Modern vibrant blue-purple\n primary: \"#6366F1\",\n onPrimary: \"#FFFFFF\",\n primaryContainer: \"#E0E7FF\",\n onPrimaryContainer: \"#1E1B4B\",\n\n // Secondary colors - Sophisticated slate\n secondary: \"#64748B\",\n onSecondary: \"#FFFFFF\",\n secondaryContainer: \"#E2E8F0\",\n onSecondaryContainer: \"#0F172A\",\n\n // Tertiary colors - Warm emerald accent\n tertiary: \"#059669\",\n onTertiary: \"#FFFFFF\",\n tertiaryContainer: \"#D1FAE5\",\n onTertiaryContainer: \"#064E3B\",\n\n // Error colors - Modern red\n error: \"#DC2626\",\n onError: \"#FFFFFF\",\n errorContainer: \"#FEE2E2\",\n onErrorContainer: \"#7F1D1D\",\n\n // Surface colors - Clean neutral base\n surface: \"#FFFFFF\",\n onSurface: \"#0F172A\",\n surfaceVariant: \"#F8FAFC\",\n onSurfaceVariant: \"#475569\",\n\n // Other colors\n outline: \"#CBD5E1\",\n outlineVariant: \"#E2E8F0\",\n shadow: \"#000000\",\n scrim: \"#000000\",\n inverseSurface: \"#0F172A\",\n onInverseSurface: \"#F8FAFC\",\n },\n};\n","import type { NubaseTheme } from \"../theme\";\n\nexport const lighthc: NubaseTheme = {\n name: \"Light High Contrast\",\n type: \"light\",\n id: \"lighthc\",\n colors: {\n // Primary colors - Deep blue with maximum contrast\n primary: \"#0000FF\",\n onPrimary: \"#FFFFFF\",\n primaryContainer: \"#E6F3FF\",\n onPrimaryContainer: \"#000066\",\n\n // Secondary colors - Deep purple\n secondary: \"#800080\",\n onSecondary: \"#FFFFFF\",\n secondaryContainer: \"#F3E6F3\",\n onSecondaryContainer: \"#330033\",\n\n // Tertiary colors - Deep green\n tertiary: \"#008000\",\n onTertiary: \"#FFFFFF\",\n tertiaryContainer: \"#E6F3E6\",\n onTertiaryContainer: \"#003300\",\n\n // Error colors - Pure red with maximum contrast\n error: \"#FF0000\",\n onError: \"#FFFFFF\",\n errorContainer: \"#FFE6E6\",\n onErrorContainer: \"#660000\",\n\n // Surface colors - Pure white base with black text\n surface: \"#FFFFFF\",\n onSurface: \"#000000\",\n surfaceVariant: \"#F5F5F5\",\n onSurfaceVariant: \"#000000\",\n\n // Other colors - Maximum contrast outlines\n outline: \"#000000\",\n outlineVariant: \"#666666\",\n shadow: \"#000000\",\n scrim: \"#000000\",\n inverseSurface: \"#000000\",\n onInverseSurface: \"#FFFFFF\",\n },\n};\n","import { dark } from \"./dark\";\nimport { darkhc } from \"./darkhc\";\nimport { light } from \"./light\";\nimport { lighthc } from \"./lighthc\";\n\nexport const themeMap = {\n light: light,\n dark: dark,\n darkhc: darkhc,\n lighthc: lighthc,\n} as const;\n\nexport type AvailableThemeId = keyof typeof themeMap;\n","import type { NubaseTheme } from \"./theme\";\n\n/**\n * Converts a VS Code theme property name to a CSS variable name\n * Example: \"diffEditor.insertedTextBackground\" -> \"--theme-diffEditor-insertedTextBackground\"\n */\nexport function themePropertyToCSSVariable(property: string): string {\n return `--theme-color-${property.replace(/\\./g, \"-\")}`;\n}\n\n/**\n * Converts VS Code theme colors object to CSS variable declarations\n */\nexport function generateCSSVariables(colors: Record<string, string>): string {\n return Object.entries(colors)\n .map(\n ([property, value]) =>\n ` ${themePropertyToCSSVariable(property)}: ${value};`,\n )\n .join(\"\\n\");\n}\n\n/**\n * Generates CSS rule for a theme with all its variables\n */\nexport function generateThemeCSS(theme: NubaseTheme): string {\n const cssVariables = generateCSSVariables(theme.colors);\n return ` [data-theme=\"${theme.id}\"] {\\n${cssVariables}\\n }`;\n}\n\n/**\n * Generates CSS for multiple themes\n */\nexport function generateThemesCSS(themes: NubaseTheme[]): string {\n return themes.map((theme) => generateThemeCSS(theme)).join(\"\\n\\n\");\n}\n\n/**\n * Injects theme CSS variables into the DOM\n */\nexport function injectThemeVariables(themes: NubaseTheme[]): void {\n const css = generateThemesCSS(themes);\n\n if (!css.trim()) {\n console.warn(\"No theme CSS generated\");\n return;\n }\n\n // Remove existing theme variables style element if it exists\n const existingStyle = document.getElementById(\"nubase-theme-variables\");\n if (existingStyle) {\n existingStyle.remove();\n }\n\n // Create new style element\n const style = document.createElement(\"style\");\n style.id = \"nubase-theme-variables\";\n style.type = \"text/css\";\n style.textContent = css;\n\n // Insert into document head\n document.head.appendChild(style);\n\n console.log(`Injected ${themes.length} VS Code theme(s) into DOM`);\n}\n","import type { NubaseTheme } from \"../../theming/theme\";\n\n// WCAG Contrast Requirements - Centralized Configuration\n// WCAG Level A: No specific contrast requirements\n// WCAG Level AA: 4.5:1 for normal text, 3:1 for large text (18pt+ or 14pt+ bold), 3:1 for UI components\n// WCAG Level AAA: 7:1 for normal text, 4.5:1 for large text, 3:1 for UI components\n\n/** Normal text contrast (WCAG AA: 4.5:1, WCAG AAA: 7:1) */\nconst TEXT_CONTRAST_MIN = 3.5;\n\n/** Large text contrast - 18pt+ or 14pt+ bold (WCAG AA: 3:1, WCAG AAA: 4.5:1) */\nconst LARGE_TEXT_CONTRAST_MIN = 2.5;\n\n/** UI components and interactive elements (WCAG AA: 3:1, WCAG AAA: 3:1) */\nconst UI_CONTRAST_MIN = 2.5;\n\n/**\n * Converts a hex color to RGB values\n */\nfunction hexToRgb(hex: string): [number, number, number] | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result || !result[1] || !result[2] || !result[3]) {\n return null;\n }\n return [\n Number.parseInt(result[1], 16),\n Number.parseInt(result[2], 16),\n Number.parseInt(result[3], 16),\n ];\n}\n\n/**\n * Calculates the relative luminance of a color\n * Based on WCAG 2.1 formula: https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html\n */\nfunction getLuminance(r: number, g: number, b: number): number {\n const [rs, gs, bs] = [r, g, b].map((c) => {\n const normalized = c / 255;\n return normalized <= 0.03928\n ? normalized / 12.92\n : ((normalized + 0.055) / 1.055) ** 2.4;\n }) as [number, number, number];\n\n return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs;\n}\n\n/**\n * Calculates the contrast ratio between two colors\n * Returns a value between 1 and 21\n */\nfunction getContrastRatio(color1: string, color2: string): number | null {\n const rgb1 = hexToRgb(color1);\n const rgb2 = hexToRgb(color2);\n\n if (!rgb1 || !rgb2) return null;\n\n const lum1 = getLuminance(rgb1[0], rgb1[1], rgb1[2]);\n const lum2 = getLuminance(rgb2[0], rgb2[1], rgb2[2]);\n\n const brightest = Math.max(lum1, lum2);\n const darkest = Math.min(lum1, lum2);\n\n return (brightest + 0.05) / (darkest + 0.05);\n}\n\n/**\n * Validates Material Design 3 theme colors against WCAG contrast requirements\n * Shows console errors for non-compliant color pairs\n */\nexport function validateThemeColors(theme: NubaseTheme): void {\n const { colors } = theme;\n\n // Define color pairs to validate based on Material Design 3 usage patterns\n const textColorPairs = [\n // Primary text pairs\n {\n background: colors.primary,\n foreground: colors.onPrimary,\n name: \"primary/onPrimary\",\n },\n {\n background: colors.primaryContainer,\n foreground: colors.onPrimaryContainer,\n name: \"primaryContainer/onPrimaryContainer\",\n },\n\n // Secondary text pairs\n {\n background: colors.secondary,\n foreground: colors.onSecondary,\n name: \"secondary/onSecondary\",\n },\n {\n background: colors.secondaryContainer,\n foreground: colors.onSecondaryContainer,\n name: \"secondaryContainer/onSecondaryContainer\",\n },\n\n // Tertiary text pairs\n {\n background: colors.tertiary,\n foreground: colors.onTertiary,\n name: \"tertiary/onTertiary\",\n },\n {\n background: colors.tertiaryContainer,\n foreground: colors.onTertiaryContainer,\n name: \"tertiaryContainer/onTertiaryContainer\",\n },\n\n // Error text pairs\n {\n background: colors.error,\n foreground: colors.onError,\n name: \"error/onError\",\n },\n {\n background: colors.errorContainer,\n foreground: colors.onErrorContainer,\n name: \"errorContainer/onErrorContainer\",\n },\n\n // Surface text pairs\n {\n background: colors.surface,\n foreground: colors.onSurface,\n name: \"surface/onSurface\",\n },\n {\n background: colors.surfaceVariant,\n foreground: colors.onSurfaceVariant,\n name: \"surfaceVariant/onSurfaceVariant\",\n },\n {\n background: colors.inverseSurface,\n foreground: colors.onInverseSurface,\n name: \"inverseSurface/onInverseSurface\",\n },\n ];\n\n // UI component color pairs (buttons, form elements, etc.)\n const uiColorPairs = [\n {\n background: colors.surface,\n foreground: colors.outline,\n name: \"surface/outline (borders)\",\n },\n {\n background: colors.surface,\n foreground: colors.outlineVariant,\n name: \"surface/outlineVariant (subtle borders)\",\n },\n {\n background: colors.surfaceVariant,\n foreground: colors.outline,\n name: \"surfaceVariant/outline\",\n },\n ];\n\n console.group(`🎨 Validating theme colors: ${theme.name} (${theme.id})`);\n\n let hasErrors = false;\n\n // Validate text contrast ratios\n for (const pair of textColorPairs) {\n const ratio = getContrastRatio(pair.background, pair.foreground);\n if (ratio === null) {\n console.error(\n `⚠️ Invalid color format in ${pair.name}: ${pair.background} / ${pair.foreground}`,\n );\n hasErrors = true;\n continue;\n }\n\n if (ratio < TEXT_CONTRAST_MIN) {\n console.error(\n `⚠️ Text contrast too low for ${pair.name}: ${ratio.toFixed(2)}:1 (minimum: ${TEXT_CONTRAST_MIN}:1)\\n` +\n ` Background: ${pair.background} | Foreground: ${pair.foreground}`,\n );\n hasErrors = true;\n } else if (ratio < LARGE_TEXT_CONTRAST_MIN * 1.5) {\n // Show info for borderline cases\n console.info(\n `ℹ️ Text contrast borderline for ${pair.name}: ${ratio.toFixed(2)}:1\\n` +\n ` Background: ${pair.background} | Foreground: ${pair.foreground}`,\n );\n }\n }\n\n // Validate UI component contrast ratios\n for (const pair of uiColorPairs) {\n const ratio = getContrastRatio(pair.background, pair.foreground);\n if (ratio === null) {\n console.error(\n `⚠️ Invalid color format in ${pair.name}: ${pair.background} / ${pair.foreground}`,\n );\n hasErrors = true;\n continue;\n }\n\n if (ratio < UI_CONTRAST_MIN) {\n console.error(\n `⚠️ UI component contrast too low for ${pair.name}: ${ratio.toFixed(2)}:1 (minimum: ${UI_CONTRAST_MIN}:1)\\n` +\n ` Background: ${pair.background} | Foreground: ${pair.foreground}`,\n );\n hasErrors = true;\n }\n }\n\n if (!hasErrors) {\n console.log(\n \"✅ All color contrasts meet custom accessibility standards (relaxed from WCAG AA)\",\n );\n }\n\n console.groupEnd();\n}\n","import { injectThemeVariables } from \"../../theming/runtime-theme-generator\";\nimport type { NubaseTheme } from \"../../theming/theme\";\nimport { validateThemeColors } from \"./validateStyles\";\n\n/**\n * Initializes styles by injecting CSS variables derived from themes\n */\nexport async function initializeStyles(themes: NubaseTheme[]): Promise<void> {\n try {\n // Validate theme colors for accessibility compliance\n for (const theme of themes) {\n validateThemeColors(theme);\n }\n\n // Inject the CSS variables into the DOM\n injectThemeVariables(themes);\n } catch (error) {\n console.error(\"Failed to initialize styles:\", error);\n throw error;\n }\n}\n","import { commandRegistry } from \"../../commands\";\nimport { workbenchRunCommand } from \"../../commands/definitions/workbench.runCommand\";\nimport { workbenchSetTheme } from \"../../commands/definitions/workbench.setTheme\";\nimport type { NubaseFrontendConfig } from \"../../config/nubase-frontend-config\";\nimport type { HttpClient } from \"../../http/http-client\";\nimport type { NubaseTheme } from \"../../theming/theme\";\nimport { themeMap } from \"../../theming/themes\";\nimport { initializeStyles } from \"./initializeStyles\";\n\nexport interface InitializeNubaseAppOptions {\n config: NubaseFrontendConfig;\n httpClient: HttpClient;\n}\n\nexport interface NubaseInitializationData {\n config: NubaseFrontendConfig;\n themeIds: string[];\n themeMap: Record<string, NubaseTheme>;\n defaultThemeId: string;\n}\n\n/**\n * Initializes the Nubase app with all required services and themes\n */\nexport async function initializeNubaseApp({\n config,\n}: InitializeNubaseAppOptions): Promise<NubaseInitializationData> {\n console.info(\"Initializing Nubase app...\");\n\n // Get theme configuration\n const themeIds = config.themeIds || [\"light\", \"dark\"];\n const defaultThemeId = config.defaultThemeId || \"dark\";\n\n // Filter available themes based on config\n const themesToBeImported = themeIds\n .map((id) => themeMap[id as keyof typeof themeMap])\n .filter((theme): theme is NubaseTheme => theme !== undefined);\n\n // Initialize styles with the loaded themes (one-time injection)\n await initializeStyles(themesToBeImported);\n\n // Register default commands (one-time registration)\n commandRegistry.register(workbenchRunCommand);\n commandRegistry.register(workbenchSetTheme);\n\n console.info(\"Nubase app initialized\");\n\n return {\n config,\n themeIds,\n themeMap,\n defaultThemeId,\n };\n}\n","import type React from \"react\";\nimport type { FC } from \"react\";\nimport type { NubaseFrontendConfig } from \"../../config/nubase-frontend-config\";\nimport type { HttpClient } from \"../../http/http-client\";\nimport { NubaseContextProvider } from \"./NubaseContextProvider\";\nimport { useCreateNubaseContext } from \"./useCreateNubaseContext\";\n\nexport type ServicesProviderProps = {\n config: NubaseFrontendConfig;\n httpClient: HttpClient;\n};\n\nexport const ServicesProvider: FC<\n React.PropsWithChildren<ServicesProviderProps>\n> = ({ config, httpClient, children }) => {\n const {\n data: nubaseContext,\n isLoading,\n error,\n } = useCreateNubaseContext({\n config,\n httpClient,\n });\n\n if (error) {\n return (\n <div className=\"flex items-center justify-center min-h-screen\">\n <div className=\"text-center\">\n <h2 className=\"text-lg font-semibold text-red-600 mb-2\">\n Failed to initialize Nubase app\n </h2>\n <p className=\"text-sm text-gray-600\">{error.message}</p>\n </div>\n </div>\n );\n }\n\n if (isLoading || !nubaseContext) {\n return (\n <div className=\"flex items-center justify-center min-h-screen\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-2\" />\n <p className=\"text-sm text-gray-600\">Initializing Nubase app...</p>\n </div>\n </div>\n );\n }\n\n return (\n <NubaseContextProvider context={nubaseContext}>\n {children}\n </NubaseContextProvider>\n );\n};\n","import {\n type ColumnDef,\n type OnChangeFn,\n type SortingState,\n type Table as TanStackTable,\n flexRender,\n getCoreRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport type React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../utils\";\n\nconst tableVariants = cva(\"w-full border-collapse border-spacing-0 text-sm\");\n\nconst tableContainerVariants = cva(\n \"relative overflow-auto border border-outline rounded-lg bg-surface\",\n {\n variants: {\n loading: {\n true: \"relative\",\n false: \"\",\n },\n },\n defaultVariants: {\n loading: false,\n },\n },\n);\n\nexport interface TableProps<TData>\n extends React.TableHTMLAttributes<HTMLTableElement> {\n data: TData[];\n columns: ColumnDef<TData>[];\n loading?: boolean;\n sorting?: SortingState;\n onSortingChange?: OnChangeFn<SortingState>;\n enableSorting?: boolean;\n emptyMessage?: string;\n loadingMessage?: string;\n containerClassName?: string;\n}\n\nconst Table = forwardRef<HTMLTableElement, TableProps<any>>(\n <TData,>(\n {\n className,\n containerClassName,\n data,\n columns,\n loading = false,\n sorting = [],\n onSortingChange,\n enableSorting = true,\n emptyMessage = \"No data available\",\n loadingMessage = \"Loading...\",\n ...props\n }: TableProps<TData>,\n ref: React.ForwardedRef<HTMLTableElement>,\n ) => {\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n manualSorting: true,\n enableSorting,\n state: {\n sorting,\n },\n onSortingChange,\n });\n\n const getSortIcon = (column: any) => {\n const sortDirection = column.getIsSorted();\n if (sortDirection === \"asc\") {\n return (\n <svg\n className=\"w-4 h-4 ml-1 inline\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label=\"Sorted ascending\"\n >\n <title>Sorted ascending</title>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 15l7-7 7 7\"\n />\n </svg>\n );\n }\n if (sortDirection === \"desc\") {\n return (\n <svg\n className=\"w-4 h-4 ml-1 inline\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label=\"Sorted descending\"\n >\n <title>Sorted descending</title>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n );\n }\n return (\n <svg\n className=\"w-4 h-4 ml-1 inline opacity-30\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-label=\"Sortable\"\n >\n <title>Sortable</title>\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 9l4-4 4 4m0 6l-4 4-4-4\"\n />\n </svg>\n );\n };\n\n return (\n <div\n className={cn(tableContainerVariants({ loading }), containerClassName)}\n >\n {loading && (\n <div className=\"absolute inset-0 bg-surface/80 backdrop-blur-sm flex items-center justify-center z-10\">\n <div className=\"flex items-center gap-3 bg-surface border border-outline rounded-lg px-4 py-3 shadow-lg\">\n <div className=\"animate-spin rounded-full h-5 w-5 border-2 border-primary border-t-transparent\" />\n <span className=\"text-onSurface font-medium\">\n {loadingMessage}\n </span>\n </div>\n </div>\n )}\n\n <table ref={ref} className={cn(tableVariants(), className)} {...props}>\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className=\"border-b border-outline\">\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n className={cn(\n \"px-4 py-3 text-left font-semibold text-onSurface bg-surfaceVariant\",\n header.column.getCanSort() && enableSorting\n ? \"cursor-pointer select-none hover:bg-surfaceVariant/80 transition-colors focus:outline-none focus:ring-2 focus:ring-primary/20\"\n : \"\",\n )}\n tabIndex={\n header.column.getCanSort() && enableSorting\n ? 0\n : undefined\n }\n role={\n header.column.getCanSort() && enableSorting\n ? \"button\"\n : undefined\n }\n onClick={\n header.column.getCanSort() && enableSorting\n ? header.column.getToggleSortingHandler()\n : undefined\n }\n onKeyDown={\n header.column.getCanSort() && enableSorting\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n header.column.getToggleSortingHandler()?.(e);\n }\n }\n : undefined\n }\n style={{\n width:\n header.getSize() !== 150 ? header.getSize() : undefined,\n }}\n >\n <div className=\"flex items-center\">\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n {header.column.getCanSort() &&\n enableSorting &&\n getSortIcon(header.column)}\n </div>\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {table.getRowModel().rows.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length}\n className=\"px-4 py-8 text-center text-onSurfaceVariant\"\n >\n {emptyMessage}\n </td>\n </tr>\n ) : (\n table.getRowModel().rows.map((row, index) => (\n <tr\n key={row.id}\n className={cn(\n \"border-b border-outline/50 hover:bg-surfaceVariant/30 transition-colors\",\n index % 2 === 0 ? \"bg-surface\" : \"bg-surfaceVariant/20\",\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <td key={cell.id} className=\"px-4 py-3 text-onSurface\">\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n },\n);\n\nTable.displayName = \"Table\";\n\nexport { Table, tableVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type React from \"react\";\nimport { forwardRef } from \"react\";\nimport { cn } from \"../../utils\";\nimport { Button } from \"../buttons/Button/Button\";\n\nconst paginationVariants = cva(\n \"flex items-center justify-between gap-4 p-4 bg-surface border-t border-outline text-sm\",\n);\n\nexport interface PaginationProps extends React.HTMLAttributes<HTMLDivElement> {\n currentPage: number;\n totalPages: number;\n pageSize: number;\n totalItems: number;\n onPageChange: (page: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageSizeOptions?: number[];\n showPageSizeSelector?: boolean;\n showInfo?: boolean;\n}\n\nconst Pagination = forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n className,\n currentPage,\n totalPages,\n pageSize,\n totalItems,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 25, 50, 100],\n showPageSizeSelector = true,\n showInfo = true,\n ...props\n },\n ref,\n ) => {\n const startItem = Math.min((currentPage - 1) * pageSize + 1, totalItems);\n const endItem = Math.min(currentPage * pageSize, totalItems);\n\n const getVisiblePages = () => {\n const delta = 2;\n const range = [];\n const rangeWithDots = [];\n\n for (\n let i = Math.max(2, currentPage - delta);\n i <= Math.min(totalPages - 1, currentPage + delta);\n i++\n ) {\n range.push(i);\n }\n\n if (currentPage - delta > 2) {\n rangeWithDots.push(1, \"...\");\n } else {\n rangeWithDots.push(1);\n }\n\n rangeWithDots.push(...range);\n\n if (currentPage + delta < totalPages - 1) {\n rangeWithDots.push(\"...\", totalPages);\n } else if (totalPages > 1) {\n rangeWithDots.push(totalPages);\n }\n\n return rangeWithDots;\n };\n\n return (\n <div ref={ref} className={cn(paginationVariants(), className)} {...props}>\n <div className=\"flex items-center gap-4\">\n {showInfo && (\n <span className=\"text-onSurfaceVariant\">\n Showing {startItem}-{endItem} of {totalItems} items\n </span>\n )}\n\n {showPageSizeSelector && onPageSizeChange && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-onSurfaceVariant\">Items per page:</span>\n <select\n value={pageSize}\n onChange={(e) => onPageSizeChange(Number(e.target.value))}\n className=\"bg-surface border border-outline rounded px-2 py-1 text-onSurface text-sm focus:border-primary focus:ring-2 focus:ring-primary/10 outline-none\"\n >\n {pageSizeOptions.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"secondary\"\n onClick={() => onPageChange(1)}\n disabled={currentPage === 1}\n aria-label=\"Go to first page\"\n >\n ««\n </Button>\n\n <Button\n variant=\"secondary\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n aria-label=\"Go to previous page\"\n >\n ‹\n </Button>\n\n <div className=\"flex items-center gap-1 mx-2\">\n {getVisiblePages().map((page, index) => (\n <div key={index}>\n {page === \"...\" ? (\n <span className=\"px-2 py-1 text-onSurfaceVariant\">...</span>\n ) : (\n <Button\n variant={currentPage === page ? \"primary\" : \"secondary\"}\n onClick={() => onPageChange(page as number)}\n className=\"min-w-[32px]\"\n aria-label={`Go to page ${page}`}\n aria-current={currentPage === page ? \"page\" : undefined}\n >\n {page}\n </Button>\n )}\n </div>\n ))}\n </div>\n\n <Button\n variant=\"secondary\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n aria-label=\"Go to next page\"\n >\n ›\n </Button>\n\n <Button\n variant=\"secondary\"\n onClick={() => onPageChange(totalPages)}\n disabled={currentPage === totalPages}\n aria-label=\"Go to last page\"\n >\n »»\n </Button>\n </div>\n </div>\n );\n },\n);\n\nPagination.displayName = \"Pagination\";\n\nexport { Pagination, paginationVariants };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAAA,gBAMO;;;ACNP,mBAAyB;AA+BnB;AA5BN,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAC3B,IAAM,oBAAoB;AAOnB,IAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,KAAK;AAElD,QAAM,yBAAyB,YAC7B,cAAc,aACV,yBAAyB,qBAAqB,eAAe,qBAAqB,QAClF,wBAAwB,qBAAqB,gBAAgB,qBAAqB,KACxF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,cAAc,MAAM,cAAc,IAAI;AAAA,MACtC,cAAc,MAAM,cAAc,KAAK;AAAA,MACvC;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,6CACT,cAAc,aACV,8DAA8D,aAAa,mBAAmB,iBAAiB,KAAK,mBAAmB,kBAAkB,EAAE,KAC3J,6DAA6D,aAAa,mBAAmB,iBAAiB,KAAK,mBAAmB,kBAAkB,EAAE,EAChK;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;ACzCA,IAAAC,gBAA4B;AAIrB,IAAM,YAAY,CACvB,UACA,cACA,gBACA,YAAY,OACZ,eAAe,UACZ;AACH,QAAM,sBAAkB;AAAA,IACtB,CAAC,MAAwB;AACvB,QAAE,eAAe;AACjB,YAAM,kBAAkB,eAAe,EAAE,UAAU,EAAE;AACrD,YAAM,YAAY,aAAa;AAE/B,YAAM,kBAAkB,CAAC,cAA0B;AACjD,cAAM,oBAAoB,eACtB,UAAU,UACV,UAAU;AACd,cAAM,QAAQ,oBAAoB;AAClC,cAAM,UAAU,aAAa,YAAY,CAAC,QAAQ;AAClD,cAAM,EAAE,KAAK,IAAI,IAAI,eAAe;AACpC,iBAAS,KAAK,IAAI,KAAK,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;AAAA,MAChD;AAEA,YAAM,gBAAgB,MAAM;AAC1B,iBAAS,oBAAoB,aAAa,eAAe;AACzD,iBAAS,oBAAoB,WAAW,aAAa;AAAA,MACvD;AAEA,eAAS,iBAAiB,aAAa,eAAe;AACtD,eAAS,iBAAiB,WAAW,aAAa;AAAA,IACpD;AAAA,IACA,CAAC,UAAU,cAAc,gBAAgB,WAAW,YAAY;AAAA,EAClE;AAEA,SAAO;AACT;;;AFoCU,IAAAC,sBAAA;AA/DV,IAAM,kBAAc,6BAAuB,KAAK;AAWzC,IAAM,OAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,oBAAoB;AACtB,MAAM;AACJ,QAAM,CAAC,WAAW,YAAY,QAAI,wBAAS,gBAAgB;AAC3D,QAAM,CAAC,YAAY,aAAa,QAAI,wBAAS,iBAAiB;AAC9D,QAAM,mBAAe,sBAAuB,IAAI;AAGhD,QAAM,eAAW,0BAAW,WAAW;AAEvC,QAAM,yBAAqB,2BAAY,MAAM;AAC3C,QAAI,aAAa,SAAS;AACxB,YAAM,WACJ,aAAa,QAAQ,eAAe,QAAQ,aAAa,KAAK;AAChE,aAAO,EAAE,KAAK,KAAK,KAAK,SAAS;AAAA,IACnC;AACA,WAAO,EAAE,KAAK,KAAK,KAAK,OAAO,kBAAkB;AAAA,EACnD,GAAG,CAAC,YAAY,KAAK,CAAC;AAEtB,QAAM,0BAAsB,2BAAY,MAAM;AAC5C,QAAI,aAAa,SAAS;AACxB,YAAM,WACJ,aAAa,QAAQ,eAAe,OAAO,YAAY,KAAK;AAC9D,aAAO,EAAE,KAAK,KAAK,KAAK,SAAS;AAAA,IACnC;AACA,WAAO,EAAE,KAAK,KAAK,KAAK,OAAO,kBAAkB;AAAA,EACnD,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA,MAAM;AAAA,IACN;AAAA,EACF;AACA,QAAM,oBAAoB;AAAA,IACxB;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AAEA,SACE,6CAAC,YAAY,UAAZ,EAAqB,OAAO,MAC3B;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,+CAA+C,WAAW,wCAAwC,mBAAmB;AAAA,MAE/H;AAAA,eACC,6CAAC,SAAI,WAAU,oDACZ,eACH;AAAA,QAEF,8CAAC,SAAI,WAAU,uBACZ;AAAA,kBACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,OAAO;AAAA,cACT;AAAA,cAEA;AAAA,6DAAC,SAAI,WAAU,8CACZ,gBACH;AAAA,gBACA,6CAAC,SAAI,WAAU,4CACb;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa;AAAA;AAAA,gBACf,GACF;AAAA;AAAA;AAAA,UACF;AAAA,UAEF,6CAAC,SAAI,WAAU,iCACb,uDAAC,SAAI,WAAU,8CACZ,kBACH,GACF;AAAA,UACC,SACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,OAAO;AAAA,cACT;AAAA,cAEA;AAAA,6DAAC,SAAI,WAAU,8CACZ,iBACH;AAAA,gBACA,6CAAC,SAAI,WAAU,2CACb;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa;AAAA;AAAA,gBACf,GACF;AAAA;AAAA;AAAA,UACF;AAAA,WAEJ;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;AG7HA,IAAAC,eAQO;AACP,IAAAA,eAA+B;AAC/B,wBAAmD;AAEnD,IAAAC,iBAA0D;;;ACN1D,IAAAC,gBAAyD;AA8BlD,SAAS,oBACd,QACA,UACA,UAAsC,CAAC,GACJ;AACnC,QAAM,EAAE,aAAa,IAAI,IAAI;AAG7B,QAAM,CAAC,UAAU,WAAW,QAAI,wBAE9B,MAAM;AAEN,UAAM,cAAmB,CAAC;AAC1B,eAAW,OAAO,OAAO,QAAQ;AAC/B,UAAI,OAAO,UAAU,eAAe,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5D,cAAM,cAAc,OAAO,OAAO,GAAG;AACrC,YAAI,aAAa;AACf,sBAAY,GAAG,IAAI,EAAE,GAAG,YAAY,MAAM;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,CAAC;AAED,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,KAAK;AACpD,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAuB,IAAI;AAGrD,QAAM,iBAAa,sBAA8B,IAAI;AACrD,QAAM,mBAAe,sBAAO,KAAK;AAGjC,QAAM,sBAAkB;AAAA,IACtB,OAAO,SAAwC;AAE7C,UAAI,aAAa,QAAS;AAE1B,UAAI;AACF,qBAAa,UAAU;AACvB,iBAAS,IAAI;AACb,uBAAe,IAAI;AAEnB,cAAM,aAAa,MAAM,OAAO,iBAAiB,IAAI;AAGrD,oBAAY,UAAU;AAAA,MACxB,SAAS,KAAK;AACZ,cAAMC,SACJ,eAAe,QACX,MACA,IAAI,MAAM,2CAA2C;AAC3D,iBAASA,MAAK;AACd,gBAAQ,KAAK,+BAA+BA,MAAK;AAAA,MACnD,UAAE;AACA,qBAAa,UAAU;AACvB,uBAAe,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AAGA,QAAM,cAAc,KAAK,UAAU,QAAQ;AAG3C,+BAAU,MAAM;AAEd,QAAI,WAAW,SAAS;AACtB,mBAAa,WAAW,OAAO;AAAA,IACjC;AAGA,QAAI,OAAO,KAAK,OAAO,aAAa,EAAE,SAAS,GAAG;AAEhD,iBAAW,UAAU,WAAW,MAAM;AACpC,wBAAgB,QAAQ;AAAA,MAC1B,GAAG,UAAU;AAAA,IACf,OAAO;AAEL,YAAM,aAAkB,CAAC;AACzB,iBAAW,OAAO,OAAO,QAAQ;AAC/B,YAAI,OAAO,UAAU,eAAe,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5D,gBAAM,cAAc,OAAO,OAAO,GAAG;AACrC,cAAI,aAAa;AACf,uBAAW,GAAG,IAAI,EAAE,GAAG,YAAY,MAAM;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AACA,kBAAY,UAAU;AACtB,qBAAe,KAAK;AACpB,eAAS,IAAI;AAAA,IACf;AAGA,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,qBAAa,WAAW,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,iBAAiB,YAAY,MAAM,CAAC;AAElD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC7IA,IAAAC,gBAAwB;AAMjB,SAAS,UACd,QACA,YACgB;AAEhB,MAAI,cAAc,OAAO,UAAU,UAAU,GAAG;AAC9C,UAAM,SAAS,OAAO,UAAU,UAAU;AAC1C,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAAA,EACF;AAGA,QAAM,aAAa,OAAO,KAAK,OAAO,MAAM;AAE5C,QAAM,gBAAgC;AAAA,IACpC,MAAM;AAAA,IACN,QAAQ;AAAA,MACN;AAAA,QACE,QAAQ,WAAW,IAAI,CAAC,UAAU;AAAA,UAChC;AAAA,UACA,MAAM;AAAA;AAAA,QACR,EAAE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAOO,SAAS,UACd,QACA,YACgB;AAChB,aAAO,uBAAQ,MAAM,UAAU,QAAQ,UAAU,GAAG,CAAC,QAAQ,UAAU,CAAC;AAC1E;;;AC/CA,sCAAuC;AAEvC,IAAAC,gBAA2B;;;ACF3B,kBAAsC;AACtC,4BAAwB;AAoBjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADUM,IAAAC,sBAAA;AA5BN,IAAM,qBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,QACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAQA,IAAM,aAAS;AAAA,EACb,CAAC,EAAE,WAAW,SAAS,UAAU,OAAO,GAAG,MAAM,GAAG,QAAQ;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,eAAe,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,QACpD;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;AEzCrB,kBAA+B;;;ACA/B,IAAAC,mCAAoB;AACpB,IAAAC,gBAAkC;;;ACFlC,IAAAC,mCAAuC;AAEvC,IAAAC,gBAA2B;AAiCrB,IAAAC,sBAAA;AA9BN,IAAM,oBAAgB,sCAAI,4CAA4C;AAAA,EACpE,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF,CAAC;AAQD,IAAM,YAAQ;AAAA,EACZ,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,UAAU,GAAG,MAAM,GAAG,QAAQ;AACnE,UAAM,eAAe,WAAW,aAAa;AAE7C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,cAAc,EAAE,SAAS,cAAc,KAAK,CAAC;AAAA,UAC7C;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;ADyBd,IAAAC,sBAAA;AAnEN,IAAM,0BAAsB,sCAAI,uBAAuB;AAAA,EACrD,UAAU;AAAA,IACR,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC;AAYD,IAAM,kBAAc;AAAA,EAClB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AAEH,QAAI,eAAe;AACnB,QAAI,WAAW,CAAC,CAAC;AACjB,QAAI,eAAe;AAEnB,QAAI,OAAO;AACT,qBAAe,MAAM,MAAM,KAAK;AAChC,UAAI,CAAC,SAAS,MAAM,MAAM,KAAK,aAAa,CAAC,MAAM,MAAM,KAAK,SAAS;AACrE,uBAAe,MAAM,MAAM,KAAK,OAC7B,OAAO,CAAC,MAAmB,MAAM,MAAS,EAC1C,KAAK,IAAI;AACZ,mBAAW;AAAA,MACb;AAAA,IACF;AAEA,UAAM,UAAU,SAAS,MAAM;AAG/B,UAAM,iBAAiB,cAAAC,QAAM,aAAa,UAAU;AAAA,MAClD;AAAA,MACA,gBAAgB,WAAW,SAAS;AAAA,MACpC,oBAAoB,eAChB,GAAG,OAAO,WACV,OACE,GAAG,OAAO,UACV;AAAA,IACR,CAAsC;AAEtC,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,oBAAoB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,QACxD,GAAG;AAAA,QAEH;AAAA,mBACC,6CAAC,SAAM,SAAS,SAAS,UACtB,iBACH;AAAA,UAED;AAAA,UACA,QAAQ,CAAC,YAAY,CAAC,gBACrB,6CAAC,SAAI,IAAI,GAAG,OAAO,SAAS,WAAU,iCACnC,gBACH;AAAA,UAED,gBACC,6CAAC,SAAI,WAAU,iCAAgC,2BAAa;AAAA,UAE7D,YAAY,gBACX,6CAAC,SAAI,IAAI,GAAG,OAAO,UAAU,WAAU,sBACpC,wBACH;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;;AEvG1B,IAAAC,mCAAuC;AAEvC,IAAAC,gBAA2B;AA2BrB,IAAAC,sBAAA;AAxBN,IAAM,oBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAQA,IAAM,gBAAY;AAAA,EAChB,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC1C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,cAAc,EAAE,SAAS,CAAC,GAAG,SAAS;AAAA,QACnD,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;AHIlB,IAAAC,sBAAA;AAHN,IAAM,iBAAgD;AAAA,EACpD,QAAQ,CAAC,EAAE,YAAY,UAAU,SAAS,MAAM;AAC9C,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,QACnB,MAAK;AAAA,QACL,OAAO,WAAW,MAAM,SAAS;AAAA,QACjC,UAAU,CAAC,MACT,WAAW,aAAa,EAAE,OAAO,KAAK;AAAA,QAExC,aAAa,SAAS;AAAA,QACtB;AAAA;AAAA,IACF;AAAA,EAEJ;AAAA,EAEA,QAAQ,CAAC,EAAE,YAAY,UAAU,SAAS,MAAM;AAC9C,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,QACnB,MAAK;AAAA,QACL,OAAO,WAAW,MAAM,SAAS;AAAA,QACjC,UAAU,CAAC,MACT,WAAW,aAAa,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,QAEhD,aAAa,SAAS;AAAA,QACtB;AAAA;AAAA,IACF;AAAA,EAEJ;AAAA,EAEA,SAAS,CAAC,EAAE,YAAY,SAAS,MAAM;AACrC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,QACnB,MAAK;AAAA,QACL,SAAS,WAAW,MAAM,SAAS;AAAA,QACnC,UAAU,CAAC,MACT,WAAW,aAAa,EAAE,OAAO,OAAO;AAAA,QAE1C,WAAW,gCACT,WACI,qCACA,sCACN;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,IAAM,kBAAiC,CAAC,EAAE,YAAY,SAAS,MAAM;AACnE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,WAAW;AAAA,MACf,MAAM,WAAW;AAAA,MACjB,QAAQ,WAAW;AAAA,MACnB,MAAK;AAAA,MACL,OAAO,OAAO,WAAW,MAAM,SAAS,EAAE;AAAA,MAC1C,UAAU,CAAC,MACT,WAAW,aAAa,EAAE,OAAO,KAAK;AAAA,MAExC,aAAY;AAAA,MACZ;AAAA;AAAA,EACF;AAEJ;AAEO,IAAM,oBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AACF,MAAM;AAEJ,QAAM,WACJ,WAAW,MAAM,KAAK,aAAa,CAAC,WAAW,MAAM,KAAK;AAE5D,QAAM,aAAa,EAAE,kBAAkB;AAGvC,QAAM,iBACJ,kBAAkB,6BAAiB,OAAO,OAAO,IAAI;AACvD,QAAM,WAAW,eAAe,eAAe,IAAI,KAAK;AACxD,QAAM,eAAe,SAAS;AAAA,IAC5B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,SAAS;AAAA,MAChB,MAAM,SAAS;AAAA,MACf,OAAO;AAAA,MACP,UAAU;AAAA,MAET;AAAA;AAAA,EACH;AAEJ;;;AIvEQ,IAAAC,sBAAA;AAhER,IAAM,kBAAkB,CAAC,SAAiB;AACxC,QAAM,aAAqC;AAAA,IACzC,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AACA,SAAO,WAAW,IAAI,KAAK;AAC7B;AAGA,IAAM,sBAAsB,CAC1B,WAC4B;AAC5B,QAAM,OAAgC,CAAC;AACvC,MAAI,aAAoC,CAAC;AACzC,MAAI,kBAAkB;AAEtB,aAAW,SAAS,QAAQ;AAC1B,QAAI,MAAM,OAAQ;AAElB,UAAM,YAAY,MAAM,QAAQ;AAGhC,QAAI,kBAAkB,YAAY,MAAM,WAAW,SAAS,GAAG;AAC7D,WAAK,KAAK,CAAC,GAAG,UAAU,CAAC;AACzB,mBAAa,CAAC,KAAK;AACnB,wBAAkB;AAAA,IACpB,OAAO;AACL,iBAAW,KAAK,KAAK;AACrB,yBAAmB;AAAA,IACrB;AAGA,QAAI,oBAAoB,IAAI;AAC1B,WAAK,KAAK,CAAC,GAAG,UAAU,CAAC;AACzB,mBAAa,CAAC;AACd,wBAAkB;AAAA,IACpB;AAAA,EACF;AAGA,MAAI,WAAW,SAAS,GAAG;AACzB,SAAK,KAAK,CAAC,GAAG,UAAU,CAAC;AAAA,EAC3B;AAEA,SAAO;AACT;AAEO,IAAM,mBAAmB,CAAmC;AAAA,EACjE;AAAA,EACA;AACF,MAAqC;AACnC,SACE,6CAAC,SAAI,WAAW,UAAU,OAAO,IAAI,IAAI,OAAO,aAAa,EAAE,IAC5D,iBAAO,OAAO,IAAI,CAAC,OAAO,eACzB;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW,cAAc,MAAM,aAAa,EAAE;AAAA,MAE7C;AAAA,cAAM,SACL,6CAAC,QAAG,WAAU,2CACX,gBAAM,OACT;AAAA,QAED,MAAM,eACL,6CAAC,OAAE,WAAU,sCACV,gBAAM,aACT;AAAA,QAEF,6CAAC,SAAI,WAAU,aACZ,8BAA4B,MAAM,MAAM,EAAE,IAAI,CAAC,KAAK,aACnD,6CAAC,SAAmB,WAAU,kCAC3B,cAAI,IAAI,CAAC,UACR;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW,GAAG,gBAAgB,MAAM,QAAQ,EAAE,CAAC,IAAI,MAAM,aAAa,EAAE;AAAA,YAEvE,sBAAY,KAAK;AAAA;AAAA,UAHb,OAAO,MAAM,IAAI;AAAA,QAIxB,CACD,KARO,QASV,CACD,GACH;AAAA;AAAA;AAAA,IA1BK;AAAA,EA2BP,CACD,GACH;AAEJ;;;ATmEU,IAAAC,sBAAA;AAzHV,SAAS,gBAAgB,QAA8B;AACrD,MAAI,OAAO,OAAO,iBAAiB,QAAW;AAC5C,WAAO,OAAO,MAAM;AAAA,EACtB;AACA,MAAI,kBAAkB,2BAAc;AAClC,WAAO;AAAA,EACT;AACA,MAAI,kBAAkB,2BAAc;AAClC,WAAO;AAAA,EACT;AACA,MAAI,kBAAkB,4BAAe;AACnC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAGA,SAAS,qBACP,QACA,QACqB;AACrB,QAAM,cAAc,EAAE,GAAG,OAAO;AAEhC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACtD,UAAM,cAAc,OAAO,OAAO,GAAG;AACrC,UAAM,aAAa,eAAe,EAAE,uBAAuB;AAG3D,QAAI,CAAC,YAAY;AACf,UAAI,UAAU,MAAO,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,IAAK;AACtE,oBAAY,GAAG,IAAI;AAAA,MACrB,WAAW,UAAU,KAAK,uBAAuB,2BAAc;AAAA,MAG/D;AAAA,IACF;AAAA,EAEF;AAEA,SAAO;AACT;AAGA,SAAS,gBACP,QACA,QACqB;AAErB,QAAM,kBAAkB,OAAO,MAAM,MAAM;AAG3C,QAAM,kBAAkB,qBAAqB,iBAAiB,MAAM;AAKpE,SAAO;AACT;AAEO,IAAM,iBAAa;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACF,GACA,QACG;AAEH,UAAM,gBAAgB,OAAO,QAAQ,OAAO,MAAM,EAAE;AAAA,MAClD,CAAC,KAAK,CAAC,KAAK,WAAW,MAAM;AAC3B,YAAI,GAAG,IAAI,gBAAgB,WAA8B;AACzD,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAGA,UAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,aAAa;AAExD,UAAM,WAAO,2BAAQ;AAAA,MACnB;AAAA,MACA,WAAW;AAAA,QACT,UAAU,CAAC,mBAAmB;AAC5B,uBAAa,eAAe,QAAQ,MAAM,MAAM;AAAA,QAClD;AAAA,QACA,oBAAoB;AAAA,MACtB;AAAA,MACA,UAAU,OAAO,EAAE,MAAM,MAAM;AAC7B,YAAI;AAEF,gBAAM,gBAAgB,gBAAgB,OAAO,MAAM;AACnD,gBAAM,SAAS,aAAa;AAAA,QAC9B,SAAS,OAAO;AACd,kBAAQ,MAAM,0BAA0B,KAAK;AAE7C,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF,CAAC;AAGD,UAAM;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,MACA,OAAO;AAAA,IACT,IAAI,oBAAoB,QAAQ,WAAW,gBAAgB;AAG3D,UAAM,SAAS,UAAU,QAAQ,UAAU;AAG3C,4CAAoB,KAAK,MAAM,MAAM,CAAC,IAAI,CAAC;AAE3C,WACE,8CAAC,SAAI,WACF;AAAA,uBACC,8CAAC,SAAI,WAAU,2FACb;AAAA,qDAAC,YAAO,6BAAe;AAAA,QAAS;AAAA,QAAE,cAAc;AAAA,SAClD;AAAA,MAGF;AAAA,QAAC;AAAA;AAAA,UACC,UAAU,CAAC,MAAM;AACf,cAAE,eAAe;AACjB,cAAE,gBAAgB;AAClB,iBAAK,aAAa;AAAA,UACpB;AAAA,UACA,WAAU;AAAA,UAEV;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,aAAa,CAAC,UAA4B;AACxC,wBAAM,YAAY,MAAM;AACxB,wBAAM,gBAAgB,OAAO,OAAO,SAAS;AAC7C,wBAAM,gBACJ,eAAe,SAAS,KAAK,cAAc;AAG7C,wBAAM,wBAAwB,CAAC,EAAE,MAAM,MAAsB;AAE3D,0BAAM,kBACJ,iBAAiB,EAAE,yBAAyB;AAC9C,wBAAI,iBAAiB;AACnB,0BAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD,+BAAO;AAAA,sBACT;AAAA,oBACF;AAEA,wBAAI;AACF,oCAAc,MAAM,KAAK;AACzB,6BAAO;AAAA,oBACT,SAAS,OAAO;AACd,6BAAO,iBAAiB,QACpB,MAAM,UACN;AAAA,oBACN;AAAA,kBACF;AAGA,wBAAM,sBAAsB,CAAC,EAAE,MAAM,MAAsB;AAEzD,wBAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD,6BAAO;AAAA,oBACT;AAEA,wBAAI;AACF,oCAAc,MAAM,KAAK;AACzB,6BAAO;AAAA,oBACT,SAAS,OAAO;AACd,6BAAO,iBAAiB,QACpB,MAAM,UACN;AAAA,oBACN;AAAA,kBACF;AAEA,yBACE;AAAA,oBAAC,KAAK;AAAA,oBAAL;AAAA,sBACC,MAAM;AAAA,sBACN,YAAY;AAAA;AAAA,wBAEV,QAAQ;AAAA;AAAA,wBAER,UAAU;AAAA,sBACZ;AAAA,sBAEC,WAAC,eACA;AAAA,wBAAC;AAAA;AAAA,0BACC,QAAQ;AAAA,0BACR;AAAA,0BACA,UAAU;AAAA;AAAA,sBACZ;AAAA;AAAA,kBAEJ;AAAA,gBAEJ;AAAA;AAAA,YACF;AAAA,YAEA;AAAA,cAAC,KAAK;AAAA,cAAL;AAAA,gBACC,UAAU,CAAC,UAAU,CAAC,MAAM,WAAW,MAAM,YAAY;AAAA,gBAExD,WAAC,CAAC,WAAW,YAAY,MACxB,6CAAC,UAAO,MAAK,UAAS,UAAU,CAAC,aAAa,aAC3C,yBACG,kBACA,cACE,iBACA,YACR;AAAA;AAAA,YAEJ;AAAA;AAAA;AAAA,MACF;AAAA,OACF;AAAA,EAEJ;AACF;;;AU9QA,yBAA2B;AAC3B,IAAAC,mCAAuC;AAEvC,IAAAC,iBAA2B;AA2BrB,IAAAC,uBAAA;AAxBN,IAAM,0BAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAQA,IAAM,sBAAkB;AAAA,EACtB,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC1C,WACE,+CAAC,SAAI,WAAU,YACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAK;AAAA,UACL,WAAW,GAAG,oBAAoB,EAAE,SAAS,CAAC,GAAG,SAAS;AAAA,UACzD,GAAG;AAAA;AAAA,MACN;AAAA,MACA,8CAAC,SAAI,WAAU,gGACb,wDAAC,iCAAW,WAAU,WAAU,GAClC;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,gBAAgB,cAAc;;;AC7C9B,IAAAC,mCAAuC;AACvC,uBAAuC;AAEvC,IAAAC,iBAA8C;AAyKxC,IAAAC,uBAAA;AAtKN,IAAM,qBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,UAAU;AAAA,IACZ;AAAA,EACF;AACF;AAEA,IAAM,mBAAe;AAAA,EACnB;AACF;AAEA,IAAM,qBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,eAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,YAAY;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,IACd;AAAA,EACF;AACF;AA6BA,IAAM,aAAS;AAAA,EACb,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,UAAU,CAAC;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,aAAa;AAAA,IACb;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AAEH,UAAM,mBAAe,wBAAQ,MAAM;AACjC,aAAO,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,KAAK,KAAK;AAAA,IAC7D,GAAG,CAAC,SAAS,KAAK,CAAC;AAGnB,UAAM,CAAC,YAAY,aAAa,QAAI,yBAAS,EAAE;AAG/C,UAAM,uBAAuB,CAC3B,MACAC,gBACG;AACH,aAAO,KAAK;AAAA,QAAO,CAAC,WAClB,OAAO,MAAM,YAAY,EAAE,SAASA,YAAW,YAAY,CAAC;AAAA,MAC9D;AAAA,IACF;AAEA,UAAM,sBAAsB,iBAAiB;AAG7C,UAAM,sBAAkB,wBAAQ,MAAM;AACpC,UAAI,CAAC,cAAc,CAAC,WAAY,QAAO;AACvC,aAAO,oBAAoB,SAAS,UAAU;AAAA,IAChD,GAAG,CAAC,YAAY,YAAY,SAAS,mBAAmB,CAAC;AAEzD,UAAM,iBAAiB,UAAU,CAAC,IAAI;AAGtC,UAAM,iBAAa,4BAAU;AAAA,MAC3B,OAAO;AAAA,MACP;AAAA,MACA,sBAAsB,CAAC,EAAE,cAAc,gBAAgB,MAAM;AAC3D,YAAI,iBAAiB;AACnB,qBAAW,gBAAgB,KAAK;AAChC,8BAAoB,eAAe;AAAA,QACrC,WAAW,WAAW;AACpB,qBAAW,IAAI;AACf,8BAAoB,IAAI;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,cAAc,CAAC,SAAS,MAAM,SAAS;AAAA,IACzC,CAAC;AAED,UAAM,mBAAe,8BAAY;AAAA,MAC/B,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,oBAAoB,CAAC,EAAE,YAAAA,YAAW,MAAM;AACtC,sBAAcA,eAAc,EAAE;AAAA,MAChC;AAAA,MACA,sBAAsB,CAAC,EAAE,cAAc,gBAAgB,MAAM;AAC3D,YAAI,iBAAiB;AACnB,qBAAW,gBAAgB,KAAK;AAChC,8BAAoB,eAAe;AACnC,wBAAc,gBAAgB,KAAK;AAAA,QACrC,WAAW,WAAW;AACpB,qBAAW,IAAI;AACf,8BAAoB,IAAI;AACxB,wBAAc,EAAE;AAAA,QAClB;AAAA,MACF;AAAA,MACA,cAAc,CAAC,SAAS,MAAM,SAAS;AAAA,IACzC,CAAC;AAGD,UAAM,OAAO,aAAa,eAAe;AACzC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAGJ,UAAM,gBAAgB,aAAa,aAAa,gBAAgB;AAEhE,UAAM,cAAc,CAAC,EAAE,QAAAC,QAAO,MAC5B;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACAA,UAAS,eAAe;AAAA,QAC1B;AAAA,QACA,MAAK;AAAA,QACL,QAAO;AAAA,QACP,SAAQ;AAAA,QACR,eAAY;AAAA,QAEZ;AAAA,wDAAC,WAAM,6BAAe;AAAA,UACtB;AAAA,YAAC;AAAA;AAAA,cACC,eAAc;AAAA,cACd,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,GAAE;AAAA;AAAA,UACJ;AAAA;AAAA;AAAA,IACF;AAGF,UAAM,YAAY,MAChB;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,QAAO;AAAA,QACP,SAAQ;AAAA,QACR,eAAY;AAAA,QAEZ;AAAA,wDAAC,WAAM,6BAAe;AAAA,UACtB;AAAA,YAAC;AAAA;AAAA,cACC,eAAc;AAAA,cACd,gBAAe;AAAA,cACf,aAAa;AAAA,cACb,GAAE;AAAA;AAAA,UACJ;AAAA;AAAA;AAAA,IACF;AAGF,UAAM,cAAc,CAAC,MAAwB;AAC3C,QAAE,gBAAgB;AAClB,iBAAW,IAAI;AACf,0BAAoB,IAAI;AAAA,IAC1B;AAEA,WACE,+CAAC,SAAI,KAAU,WAAW,GAAG,YAAY,SAAS,GAAI,GAAG,OACvD;AAAA,qDAAC,SAAI,WAAU,YACZ;AAAA,qBACC;AAAA,UAAC;AAAA;AAAA,YACE,GAAI,gBAAgB;AAAA,cACnB,WAAW,GAAG,eAAe,EAAE,SAAS,CAAC,GAAG,OAAO;AAAA,cACnD;AAAA,cACA,aAAa,cAAc,SAAS;AAAA,YACtC,CAAC,KAAK,CAAC;AAAA;AAAA,QACT,IAEA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACJ,GAAG,qBAAqB;AAAA,cACvB,WAAW;AAAA,gBACT,eAAe,EAAE,SAAS,CAAC;AAAA,gBAC3B;AAAA,gBACA,CAAC,gBAAgB;AAAA,cACnB;AAAA,cACA,UAAU,YAAY;AAAA,YACxB,CAAC;AAAA,YAED,wDAAC,UAAK,WAAU,YACb,oBAAU,iBAAiB,cAAc,SAAS,aACrD;AAAA;AAAA,QACF;AAAA,QAGF,8CAAC,SAAI,WAAU,yEACZ,oBACC,8CAAC,SAAI,WAAU,kFAAiF,IAEhG,8CAAC,eAAY,QAAgB,GAEjC;AAAA,QAEC,aAAa,gBAAgB,CAAC,YAAY,CAAC,WAC1C;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAU;AAAA,YACV,cAAW;AAAA,YAEX,wDAAC,aAAU;AAAA;AAAA,QACb;AAAA,SAEJ;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG,aAAa;AAAA,YACf,WAAW,GAAG,aAAa,GAAG,CAAC,UAAU,QAAQ;AAAA,UACnD,CAAC;AAAA,UAEA,qBACE,eAAe,WAAW,IACzB,8CAAC,QAAG,WAAU,+CACX,oBAAU,iBAAiB,cAC9B,IAEA,eAAe,IAAI,CAAC,QAAQ,UAC1B;AAAA,YAAC;AAAA;AAAA,cAEE,GAAG,aAAa;AAAA,gBACf,MAAM;AAAA,gBACN;AAAA,gBACA,WAAW;AAAA,kBACT,eAAe;AAAA,oBACb,eAAe,qBAAqB;AAAA,oBACpC,YAAY,cAAc,UAAU,OAAO;AAAA,kBAC7C,CAAC;AAAA,kBACD,OAAO,YAAY;AAAA,gBACrB;AAAA,gBACA,OAAO,OAAO,WACV,EAAE,eAAe,OAAO,IACxB;AAAA,cACN,CAAC;AAAA,cAED;AAAA,8DAAC,UAAK,WAAU,kBAAkB,iBAAO,OAAM;AAAA,gBAC9C,cAAc,UAAU,OAAO,SAC9B,8CAAC,UAAK,WAAU,qDACd;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,eAAY;AAAA,oBAEZ;AAAA,oEAAC,WAAM,sBAAQ;AAAA,sBACf;AAAA,wBAAC;AAAA;AAAA,0BACC,UAAS;AAAA,0BACT,GAAE;AAAA,0BACF,UAAS;AAAA;AAAA,sBACX;AAAA;AAAA;AAAA,gBACF,GACF;AAAA;AAAA;AAAA,YAhCG,GAAG,OAAO,KAAK,IAAI,KAAK;AAAA,UAkC/B,CACD;AAAA;AAAA,MAEP;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;ACjUrB,IAAAC,iBAA4B;AAC5B,IAAAC,sBAAsB;;;ACAtB,IAAAC,iBAA2B;AAUrB,IAAAC,uBAAA;AAHN,IAAM,gBAAY;AAAA,EAChB,CAAC,EAAE,WAAW,YAAY,SAAS,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC/D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,YACE,iBAAiB,cAAc;AAAA,YAC/B,kBAAkB,cAAc;AAAA,YAChC,eAAe,cAAc;AAAA,UAC/B;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,QACC,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,UAAU,cAAc;;;AC9BxB,IAAAC,iBAIO;AACP,IAAAC,sBAAsB;AAsDd,IAAAC,uBAAA;AAnCR,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,MAAM;AACR;AAEA,IAAM,mBAAmB;AAAA,EACvB,QAAQ;AAAA,EACR,KAAK;AACP;AAEO,IAAM,QAAwB,CAAC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT;AACF,MAAM;AACJ,SACE;AAAA,IAAC,eAAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MACV,OAAO,EAAE,OAAO;AAAA,MAChB;AAAA,MAEC;AAAA,wBACC,8CAAC,iCAAe,WAAU,gHAA+G;AAAA,QAG3I,8CAAC,SAAI,WAAW,0BAA0B,iBAAiB,SAAS,CAAC,IACnE;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,UAAU,YAAY,IAAI,CAAC,+IAA+I,SAAS;AAAA,YAE7L;AAAA,iCACC,8CAAC,SAAI,WAAU,wBACb,wDAAC,UAAO,SAAQ,aAAY,SAAS,SACnC,wDAAC,6BAAM,WAAU,WAAU,GAC7B,GACF;AAAA,cAGF,8CAAC,SAAI,WAAW,kBAAkB,cAAc,OAC7C,UACH;AAAA;AAAA;AAAA,QACF,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AFzBQ,IAAAC,uBAAA;AAhCD,IAAM,SAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf;AACF,MAAM;AACJ,QAAM,gBAAgB,MAAM;AAC1B,gBAAY;AACZ,YAAQ;AAAA,EACV;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEE;AAAA,kBAAS,oBACT,+CAAC,SAAI,WAAU,uEACZ;AAAA,mBACC,8CAAC,8BAAY,WAAU,wCACpB,iBACH;AAAA,UAED,mBACC,8CAAC,UAAO,SAAQ,aAAY,SAAS,SACnC,wDAAC,6BAAM,WAAU,WAAU,GAC7B;AAAA,WAEJ;AAAA,QAGF,8CAAC,SAAI,WAAU,aAAa,UAAS;AAAA,QAEpC,aACC,8CAAC,SAAI,WAAU,qCACb,yDAAC,aACC;AAAA,wDAAC,UAAO,SAAQ,aAAY,SAAS,SAClC,sBACH;AAAA,UACA,8CAAC,UAAO,SAAS,gBAAgB,SAAS,eACvC,uBACH;AAAA,WACF,GACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AGtFA,IAAAC,iBAAsD;AAiClD,IAAAC,uBAAA;AArBG,IAAM,YAAY,MAAM;AAC7B,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,KAAK;AAC1C,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAA8B,IAAI;AAE9D,QAAM,WAAO,4BAAY,CAAC,iBAA+B;AACvD,cAAU,YAAY;AACtB,cAAU,IAAI;AAAA,EAChB,GAAG,CAAC,CAAC;AAEL,QAAM,WAAO,4BAAY,MAAM;AAC7B,cAAU,KAAK;AAEf,eAAW,MAAM,UAAU,IAAI,GAAG,GAAG;AAAA,EACvC,GAAG,CAAC,CAAC;AAEL,QAAM,oBAAgB,4BAAY,MAAM;AACtC,YAAQ,YAAY;AACpB,SAAK;AAAA,EACP,GAAG,CAAC,QAAQ,IAAI,CAAC;AAEjB,QAAM,kBAAkB,SACtB;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,OAAO,YAAY,gBAAgB;AAAA,MAE7C,iBAAO;AAAA;AAAA,EACV,IACE;AAEJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACjDA,IAAAC,iBAQO;AAsDH,IAAAC,uBAAA;AAtCJ,IAAM,mBAAe,8BAAuC,IAAI;AAEzD,IAAM,gBAA6C,CAAC,EAAE,SAAS,MAAM;AAC1E,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAwB,CAAC,CAAC;AAEtD,QAAM,gBAAY,4BAAY,CAAC,WAAoC;AACjE,UAAM,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AACjD,UAAM,WAAwB,EAAE,GAAG,QAAQ,GAAG;AAE9C,cAAU,CAAC,SAAS,CAAC,GAAG,MAAM,QAAQ,CAAC;AACvC,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,iBAAa,4BAAY,CAAC,OAAgB;AAC9C,cAAU,CAAC,SAAS;AAClB,UAAI,IAAI;AACN,eAAO,KAAK,OAAO,CAAC,UAAU,MAAM,OAAO,EAAE;AAAA,MAC/C;AACA,aAAO,KAAK,MAAM,GAAG,EAAE;AAAA,IACzB,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,QAAM,qBAAiB,4BAAY,MAAM;AACvC,cAAU,CAAC,CAAC;AAAA,EACd,GAAG,CAAC,CAAC;AAEL,QAAM,uBAAmB;AAAA,IACvB,CAAC,YAAoB;AACnB,YAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,OAAO;AACjD,UAAI,OAAO,WAAW;AACpB,cAAM,UAAU;AAAA,MAClB;AACA,iBAAW,OAAO;AAAA,IACpB;AAAA,IACA,CAAC,YAAY,MAAM;AAAA,EACrB;AAEA,SACE;AAAA,IAAC,aAAa;AAAA,IAAb;AAAA,MACC,OAAO,EAAE,WAAW,YAAY,gBAAgB,OAAO;AAAA,MAEtD;AAAA;AAAA,QACA,OAAO,IAAI,CAAC,OAAO,UAClB;AAAA,UAAC;AAAA;AAAA,YAEC,MAAM;AAAA,YACN,SAAS,MAAM,iBAAiB,MAAM,EAAE;AAAA,YACxC,QAAQ,KAAK;AAAA,YACZ,GAAG;AAAA,YAEH,gBAAM;AAAA;AAAA,UANF,MAAM;AAAA,QAOb,CACD;AAAA;AAAA;AAAA,EACH;AAEJ;AAEO,IAAM,WAAW,MAAM;AAC5B,QAAM,cAAU,2BAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAEA,QAAM,EAAE,WAAW,kBAAkB,YAAY,eAAe,IAAI;AAEpE,QAAM,gBAAY;AAAA,IAChB,CAAC,WAAsB,YAAoD;AACzE,aAAO,iBAAiB,EAAE,WAAW,GAAG,QAAQ,CAAC;AAAA,IACnD;AAAA,IACA,CAAC,gBAAgB;AAAA,EACnB;AAEA,QAAM,aAAS,wBAAQ,MAAM;AAC3B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,OAAO;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,WAAW,YAAY,gBAAgB,QAAQ,OAAO,MAAM,CAAC;AAEjE,SAAO;AACT;;;AC1GA,IAAAC,sBAMO;AA2CH,IAAAC,uBAAA;AAhCJ,IAAM,aAAa;AAAA,EACjB,SAAS;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,EACb;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,WACE;AAAA,EACJ;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,WACE;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,WACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WACE;AAAA,EACJ;AACF;AAEO,IAAM,QAAwB,CAAC,EAAE,OAAO,QAAQ,MAAM;AAC3D,QAAM,SAAS,WAAW,MAAM,IAAI;AACpC,QAAM,OAAO,MAAM,UAAU,kCAAc,OAAO;AAElD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEC;AAAA,gBACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,MAAM,WAAW;AAAA,YACnB;AAAA;AAAA,QACF;AAAA,QAGF,8CAAC,SAAI,WAAU,kBACZ,gBAAM,WAAW,MAAM,cAAc,MAAM,cAAc,MAAM,SAClE;AAAA,QAEC,MAAM,YACL,8CAAC,UAAO,SAAQ,aAAY,SAAS,SAAS,WAAU,eACtD,wDAAC,6BAAM,WAAU,WAAU,GAC7B;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;AC5EA,IAAAC,iBAOO;;;ACGP,IAAI,iBAAsD;AAC1D,IAAI,wBAAoE;AAEjE,IAAM,0BAA0B,CACrC,UACA,oBACG;AACH,mBAAiB;AACjB,0BAAwB;AAC1B;AAGO,IAAM,YAAY,CACvB,SACA,OAAkB,WAClB,YACW;AACX,MAAI,CAAC,gBAAgB;AACnB,YAAQ,KAAK,2DAA2D;AACxE,WAAO;AAAA,EACT;AACA,SAAO,eAAe,SAAS,MAAM,OAAO;AAC9C;AAGO,IAAM,mBAAmB,CAC9B,SACA,UACA,YACW;AACX,MAAI,CAAC,uBAAuB;AAC1B,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO,sBAAsB,SAAS,UAAU,OAAO;AACzD;;;AD+FI,IAAAC,uBAAA;AA5HJ,IAAM,mBAAe,8BAAuC,IAAI;AAEzD,IAAM,WAAW,MAAM;AAC5B,QAAM,cAAU,2BAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AACA,SAAO;AACT;AAMO,IAAM,gBAAgB,CAAC,EAAE,SAAS,MAA0B;AACjE,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAsB,CAAC,CAAC;AAEpD,QAAM,iBAAa;AAAA,IACjB,MAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC;AAAA,IAC/C,CAAC;AAAA,EACH;AAEA,QAAM,kBAAc,4BAAY,CAAC,OAAe;AAC9C,cAAU,CAAC,SAAS,KAAK,OAAO,CAAC,UAAU,MAAM,OAAO,EAAE,CAAC;AAAA,EAC7D,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAc,4BAAY,CAAC,IAAY,YAAgC;AAC3E;AAAA,MAAU,CAAC,SACT,KAAK,IAAI,CAAC,UAAW,MAAM,OAAO,KAAK,EAAE,GAAG,OAAO,GAAG,QAAQ,IAAI,KAAM;AAAA,IAC1E;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,eAAW;AAAA,IACf,CAAC,SAAoB,MAAiB,UAAwB,CAAC,MAAM;AACnE,YAAM,KAAK,WAAW;AACtB,YAAM,EAAE,WAAW,KAAM,WAAW,KAAK,IAAI;AAE7C,YAAM,WAAsB;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,gBAAU,CAAC,SAAS,CAAC,GAAG,MAAM,QAAQ,CAAC;AAEvC,UAAI,WAAW,GAAG;AAEhB,mBAAW,MAAM,YAAY,EAAE,GAAG,QAAQ;AAAA,MAC5C;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,YAAY,WAAW;AAAA,EAC1B;AAEA,QAAM,sBAAkB;AAAA,IACtB,CACE,SACA,UACA,UAA+B,CAAC,MAC7B;AACH,YAAM,KAAK,WAAW;AACtB,YAAM;AAAA,QACJ,WAAW;AAAA;AAAA,QACX,WAAW;AAAA,QACX,cAAc;AAAA,MAChB,IAAI;AAEJ,YAAM,WAAsB;AAAA,QAC1B;AAAA,QACA,SAAS;AAAA,QACT,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,gBAAU,CAAC,SAAS,CAAC,GAAG,MAAM,QAAQ,CAAC;AAGvC,cACG,KAAK,CAAC,SAAS;AACd,cAAM,SAAS,SAAS,EAAE,SAAS,MAAM,KAAK,CAAC;AAC/C,oBAAY,IAAI;AAAA,UACd,MAAM,OAAO;AAAA,UACb,SAAS,OAAO;AAAA,UAChB,UAAU,OAAO,YAAY;AAAA,UAC7B,SAAS;AAAA;AAAA,QACX,CAAC;AACD,mBAAW,MAAM,YAAY,EAAE,GAAG,OAAO,YAAY,GAAI;AAAA,MAC3D,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,cAAM,SAAS,SAAS,EAAE,SAAS,OAAO,MAAM,CAAC;AACjD,oBAAY,IAAI;AAAA,UACd,MAAM,OAAO;AAAA,UACb,SAAS,OAAO;AAAA,UAChB,UAAU,OAAO,YAAY;AAAA,UAC7B,SAAS;AAAA;AAAA,QACX,CAAC;AACD,mBAAW,MAAM,YAAY,EAAE,GAAG,OAAO,YAAY,GAAI;AAAA,MAC3D,CAAC;AAEH,aAAO;AAAA,IACT;AAAA,IACA,CAAC,YAAY,aAAa,WAAW;AAAA,EACvC;AAGA,gCAAU,MAAM;AACd,4BAAwB,UAAU,eAAe;AAAA,EACnD,GAAG,CAAC,UAAU,eAAe,CAAC;AAE9B,QAAM,QAA0B;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE,8CAAC,aAAa,UAAb,EAAsB,OAAe,UAAS;AAEnD;;;AEvHU,IAAAC,uBAAA;AAjBH,IAAM,iBAA0C,CAAC,EAAE,YAAY,GAAG,MAAM;AAC7E,QAAM,EAAE,QAAQ,YAAY,IAAI,SAAS;AAEzC,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA;AAAA,UAEP,SAAS;AAAA;AAAA,MAGZ,iBAAO,IAAI,CAAC,UACX;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV,wDAAC,SAAM,OAAc,SAAS,MAAM,YAAY,MAAM,EAAE,GAAG;AAAA;AAAA,QAHtD,MAAM;AAAA,MAIb,CACD;AAAA;AAAA,EACH;AAEJ;;;AC9BA,IAAAC,sBAAkC;;;ACAlC,IAAAC,iBAA0D;AAetD,IAAAC,uBAAA;AAZJ,IAAM,oBAAgB,8BAA6C,MAAS;AAOrE,IAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA;AACF,MAAkC;AAChC,SACE,8CAAC,cAAc,UAAd,EAAuB,OAAO,SAAU,UAAS;AAEtD;AAEO,SAAS,mBAAsC;AACpD,QAAM,cAAU,2BAAW,aAAa;AACxC,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ADFQ,IAAAC,uBAAA;AAfD,IAAM,cAAc,CAAC,EAAE,UAAU,MAAwB;AAC9D,QAAM,UAAU,iBAAiB;AAEjC,QAAM,cAAc,MAAM;AACxB,YAAQ,SAAS,QAAQ,oBAAoB;AAAA,EAC/C;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA,cAAY,aAAa,QAAQ,QAAQ,kBAAkB,UAAU,SAAS,OAAO;AAAA,MAEpF,kBAAQ,QAAQ,kBAAkB,UACjC,8CAAC,gCAAS,MAAM,IAAI,IAEpB,8CAAC,+BAAQ,MAAM,IAAI;AAAA;AAAA,EAEvB;AAEJ;;;AE/BA,IAAAC,iBAA2B;;;ACA3B,IAAAC,iBAQO;;;ACPP,IAAAC,iBAAyD;;;ACDzD,IAAAC,sBAAiC;AACjC,0BAAqB;AAuDjB,IAAAC,uBAAA;AAzBG,IAAM,6BAA6B,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAuC;AACrC,QAAM,cAAc,MAAM;AACxB,QAAI,KAAK,aAAa;AACpB,uBAAiB,KAAK,EAAE;AAAA,IAC1B,WAAW,KAAK,YAAY;AAC1B,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA,aACI,8BACA;AAAA,EACN;AAEA,QAAM,cAAc,EAAE,aAAa,GAAG,KAAK,KAAK,QAAQ,EAAE,KAAK;AAE/D,QAAM,UACJ,gFACE;AAAA,kDAAC,SAAI,WAAU,iBAAiB,eAAK,MAAK;AAAA,IAC1C,+CAAC,SAAI,WAAU,kBACb;AAAA,oDAAC,SAAI,WAAU,wBAAwB,eAAK,OAAM;AAAA,MACjD,KAAK,YACJ;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,aAAa,+BAA+B;AAAA,UAC9C;AAAA,UAEC,eAAK;AAAA;AAAA,MACR;AAAA,OAEJ;AAAA,IACC,KAAK,eACJ,8CAAC,SAAI,WAAU,iBACb,wDAAC,SAAI,WAAU,4CACb;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAW;AAAA,UACT;AAAA,UACA,KAAK,aAAa,cAAc;AAAA,QAClC;AAAA,QACA,OAAO,KAAK,aAAa,aAAa;AAAA;AAAA,IACxC,GACF,GACF;AAAA,KAEJ;AAIF,MAAI,KAAK,QAAQ,CAAC,KAAK,aAAa;AAClC,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,KAAK;AAAA,QACL,IAAI,KAAK;AAAA,QACT,WAAW;AAAA,QACX,OAAO;AAAA,QAEN;AAAA;AAAA,MANI,KAAK;AAAA,IAOZ;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MAEC,KAAK;AAAA,MACL,MAAK;AAAA,MACL,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MAER;AAAA;AAAA,IAPI,KAAK;AAAA,EAQZ;AAEJ;;;ADYM,IAAAC,uBAAA;AAlHN,IAAM,yBAAyB,CAAC;AAAA,EAC9B;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,CAAC;AACpD,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAsB,oBAAI,IAAI,CAAC;AACzE,QAAM,eAAW,uBAAqC,CAAC,CAAC;AAGxD,QAAM,mBAAe;AAAA,IACnB,CAACC,QAA4B,QAAQ,GAAG,aAAkC;AACxE,YAAM,SAAqB,CAAC;AAE5B,iBAAW,QAAQA,QAAO;AACxB,cAAM,cAAc,QAAQ,KAAK,UAAU,MAAM;AACjD,cAAM,aAAa,cAAc,IAAI,KAAK,EAAE;AAE5C,eAAO,KAAK;AAAA,UACV,GAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAED,YAAI,eAAe,cAAc,KAAK,UAAU;AAC9C,iBAAO,KAAK,GAAG,aAAa,KAAK,UAAU,QAAQ,GAAG,KAAK,EAAE,CAAC;AAAA,QAChE;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,QAAM,YAAY,aAAa,KAAK;AACpC,QAAM,cAAc,UAAU;AAE9B,QAAM,qBAAiB,4BAAY,CAAC,WAAmB;AACrD,qBAAiB,CAAC,SAAS;AACzB,YAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,UAAI,OAAO,IAAI,MAAM,GAAG;AACtB,eAAO,OAAO,MAAM;AAAA,MACtB,OAAO;AACL,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,QAAM,oBAAgB;AAAA,IACpB,CAAC,UAAyB;AACxB,UAAI,CAAC,YAAa;AAElB,YAAM,cAAc,UAAU,aAAa;AAE3C,UAAI,MAAM,QAAQ,aAAa;AAC7B,cAAM,eAAe;AACrB,yBAAiB,CAAC,UAAU,OAAO,KAAK,WAAW;AAAA,MACrD,WAAW,MAAM,QAAQ,WAAW;AAClC,cAAM,eAAe;AACrB,yBAAiB,CAAC,UAAU,OAAO,IAAI,eAAe,WAAW;AAAA,MACnE,WAAW,MAAM,QAAQ,cAAc;AACrC,cAAM,eAAe;AACrB,YAAI,aAAa,eAAe,CAAC,YAAY,YAAY;AACvD,yBAAe,YAAY,EAAE;AAAA,QAC/B;AAAA,MACF,WAAW,MAAM,QAAQ,aAAa;AACpC,cAAM,eAAe;AACrB,YAAI,aAAa,eAAe,YAAY,YAAY;AACtD,yBAAe,YAAY,EAAE;AAAA,QAC/B;AAAA,MACF,WAAW,MAAM,QAAQ,SAAS;AAChC,cAAM,eAAe;AACrB,YAAI,aAAa,aAAa;AAC5B,yBAAe,YAAY,EAAE;AAAA,QAC/B,OAAO;AACL,uBAAa,aAAa;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,WAAW,eAAe,aAAa,cAAc;AAAA,EACxD;AAEA,gCAAU,MAAM;AACd,UAAM,cAAc,gBAAgB;AACpC,QAAI,aAAa;AACf,kBAAY,iBAAiB,WAAW,aAAa;AACrD,aAAO,MAAM;AACX,oBAAY,oBAAoB,WAAW,aAAa;AAAA,MAC1D;AAAA,IACF;AAAA,EACF,GAAG,CAAC,eAAe,cAAc,CAAC;AAElC,gCAAU,MAAM;AACd,UAAM,cAAc,SAAS,QAAQ,aAAa;AAClD,QAAI,aAAa;AACf,kBAAY,eAAe;AAAA,QACzB,OAAO;AAAA,QACP,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,cAAU,aAAa,GAAG,UAAU;AAAA,EACtC,GAAG,CAAC,eAAe,SAAS,CAAC;AAE7B,gCAAU,MAAM;AACd,QAAI,iBAAiB,aAAa;AAChC,uBAAiB,CAAC;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,eAAe,WAAW,CAAC;AAE/B,MAAI,CAAC,MAAM,QAAQ;AACjB,WACE,8CAAC,SAAI,WAAU,4CAA2C,4BAE1D;AAAA,EAEJ;AAEA,SACE,8CAAC,SAAI,WAAU,aACZ,oBAAU,IAAI,CAAC,MAAM,UACpB;AAAA,IAAC;AAAA;AAAA,MAEC;AAAA,MACA;AAAA,MACA,YAAY,UAAU;AAAA,MACtB,kBAAkB;AAAA,MAClB,SAAS,CAAC,OAAO;AACf,iBAAS,QAAQ,KAAK,IAAI;AAAA,MAC5B;AAAA;AAAA,IAPK,KAAK;AAAA,EAQZ,CACD,GACH;AAEJ;AAGO,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;;;ADtEzB,IAAAC,uBAAA;AAjEG,IAAM,8BAA0B,2BAGrC,CAAC,OAAO,QAAQ;AAChB,QAAM,kBAAc,uBAAyB,IAAI;AACjD,QAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,EAAE;AAGjD,0CAAoB,KAAK,MAAM,YAAY,SAA6B,CAAC,CAAC;AAG1E,gCAAU,MAAM;AACd,QAAI,YAAY,SAAS;AACvB,kBAAY,QAAQ,MAAM;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,CAAC;AAGL,QAAM,oBAAgB,wBAAQ,MAAM;AAClC,QAAI,CAAC,YAAY,KAAK,GAAG;AACvB,aAAO,MAAM;AAAA,IACf;AAEA,UAAM,QAAQ,YAAY,YAAY;AAEtC,UAAM,mBAAmB,CACvB,UACwB;AACxB,YAAM,SAA8B,CAAC;AAErC,iBAAW,QAAQ,OAAO;AACxB,cAAM,gBACJ,KAAK,MAAM,YAAY,EAAE,SAAS,KAAK,KACvC,KAAK,UAAU,YAAY,EAAE,SAAS,KAAK;AAE7C,YAAI,eAAe;AACjB,iBAAO,KAAK,EAAE,GAAG,MAAM,UAAU,OAAU,CAAC;AAAA,QAC9C;AAEA,YAAI,KAAK,UAAU;AACjB,iBAAO,KAAK,GAAG,iBAAiB,KAAK,QAAQ,CAAC;AAAA,QAChD;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,iBAAiB,MAAM,KAAK;AAAA,EACrC,GAAG,CAAC,MAAM,OAAO,WAAW,CAAC;AAG7B,QAAM,oBAAoB,MAAM;AAC9B,QAAI,MAAM,WAAW,QAAQ;AAC3B,aAAO,EAAE,QAAQ,OAAO;AAAA,IAC1B;AACA,QAAI,OAAO,MAAM,WAAW,UAAU;AACpC,aAAO,EAAE,QAAQ,GAAG,MAAM,MAAM,KAAK;AAAA,IACvC;AACA,QAAI,OAAO,MAAM,WAAW,UAAU;AACpC,aAAO,EAAE,QAAQ,MAAM,OAAO;AAAA,IAChC;AACA,WAAO,CAAC;AAAA,EACV;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,MAAM,SAAS,wBAAwB;AAAA,MAClD,OAAO,kBAAkB;AAAA,MAGzB;AAAA,sDAAC,SAAI,WAAU,iBACb;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,aAAa,MAAM;AAAA,YACnB,OAAO;AAAA,YACP,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA;AAAA,QAChD,GACF;AAAA,QAGA,8CAAC,SAAI,WAAW,MAAM,SAAS,mCAAmC,IAChE;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP,gBAAgB;AAAA;AAAA,QAClB,GACF;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,wBAAwB,cAAc;AAG/B,IAAM,0BAA0B;;;AD1F/B,IAAAC,uBAAA;AAXD,IAAM,cAAU;AAAA,EACrB,CACE,EAAE,WAAW,OAAO,oBAAoB,wBAAwB,GAAG,MAAM,GACzE,QACG;AACH,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,8CAA8C,SAAS;AAAA,QACpE,GAAG;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,aAAa;AAAA,YACb,QAAO;AAAA;AAAA,QACT;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,QAAQ,cAAc;;;AI/BtB,IAAAC,mCAAoB;;;ACahB,IAAAC,uBAAA;AAHJ,IAAM,WAA8B,CAAC,EAAE,IAAI,WAAW,SAAS,SAAS,MAAM;AAE5E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA,SAAS,CAAC,MAAM;AACd,UAAE,eAAe;AACjB,kBAAU;AAEV,gBAAQ,IAAI,gBAAgB,EAAE,EAAE;AAAA,MAClC;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ADmCI,IAAAC,uBAAA;AAvDJ,IAAM,sBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAYO,IAAM,mBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,cAAc,KAAK,YAAY,KAAK,SAAS,SAAS;AAC5D,QAAM,SAAS,CAAC;AAEhB,QAAM,cAAc,MAAM;AACxB,QAAI,aAAa;AACf,eAAS,KAAK,EAAE;AAAA,IAClB,WAAW,KAAK,SAAS;AACvB,WAAK,QAAQ;AACb,oBAAc,IAAI;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,UACJ,gFACE;AAAA,mDAAC,SAAI,WAAU,kCACb;AAAA,oDAAC,UAAK,WAAU,mBAAmB,eAAK,OAAM;AAAA,MAC7C,KAAK,SACJ,8CAAC,UAAK,WAAU,wFACb,eAAK,OACR;AAAA,OAEJ;AAAA,IACC,eACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,aAAa,wBAAwB;AAAA,QACvC;AAAA,QACD;AAAA;AAAA,IAED;AAAA,KAEJ;AAGF,QAAM,UAAU,KAAK,WAAW,aAAa,WAAW,WAAW;AACnE,QAAM,YAAY,gBAAgB;AAAA,IAChC;AAAA,IACA,OAAO,KAAK,IAAI,OAAO,CAAC;AAAA,EAC1B,CAAC;AAED,MAAI,UAAU,KAAK,QAAQ,CAAC,KAAK,UAAU;AACzC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,KAAK;AAAA,QACT;AAAA,QACA,SAAS,MAAM,cAAc,IAAI;AAAA,QAEhC;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA,SAAS;AAAA,MACT,UAAU,KAAK;AAAA,MAEd;AAAA;AAAA,EACH;AAEJ;;;AElFU,IAAAC,uBAAA;AAfH,IAAM,WAA8B,CAAC;AAAA,EAC1C;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE,8CAAC,SAAI,WAAU,aACZ,gBAAM,IAAI,CAAC,SAAS;AACnB,UAAM,aAAa,cAAc,SAAS,KAAK,EAAE;AACjD,UAAM,WAAW,iBAAiB,KAAK;AAEvC,WACE,+CAAC,SACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,MACC,cAAc,KAAK,YAClB;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,KAAK;AAAA,UACZ,OAAO,QAAQ;AAAA,UACf;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,SAjBM,KAAK,EAmBf;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AClDO,IAAM,kBAAkB,CAC7B,OACA,QAAQ,MAC4B;AACpC,SAAO,MAAM;AAAA,IACX,CAAC,KAAK,SAAS;AACb,UAAI,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC;AAC3B,UAAI,KAAK,UAAU;AACjB,YAAI,KAAK,GAAG,gBAAgB,KAAK,UAAU,QAAQ,CAAC,CAAC;AAAA,MACvD;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAGO,IAAM,iBAAiB,CAAC,OAAkB,UAA6B;AAC5E,MAAI,CAAC,MAAM,KAAK,EAAG,QAAO;AAE1B,QAAM,aAAa,MAAM,YAAY;AAErC,SAAO,MAAM,OAAO,CAAC,KAAK,SAAS;AACjC,UAAM,eAAe,KAAK,MAAM,YAAY,EAAE,SAAS,UAAU;AACjE,UAAM,mBAAmB,KAAK,WAC1B,eAAe,KAAK,UAAU,KAAK,IACnC,CAAC;AAEL,QAAI,gBAAgB,iBAAiB,SAAS,GAAG;AAC/C,UAAI,KAAK;AAAA,QACP,GAAG;AAAA,QACH,UACE,iBAAiB,SAAS,IAAI,mBAAmB,KAAK;AAAA,MAC1D,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,CAAc;AACpB;;;ACzCA,IAAAC,wBAA+B;AAC/B,IAAAC,iBAAiC;;;ACDjC,mBAAkB;AAaX,IAAM,aAAN,MAAiB;AAAA,EACd;AAAA,EAER,YAAY,EAAE,UAAU,GAAG,GAAyB;AAClD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAc,QACZ,KACA,QACA,MACA,SAA4B,CAAC,GACH;AAC1B,UAAM,UAAU,KAAK,UAAU,GAAG,KAAK,OAAO,GAAG,GAAG,KAAK;AAEzD,UAAM,WAAW,UAAM,aAAAC,SAAM;AAAA,MAC3B,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS,OAAO;AAAA,MAChB,SAAS,OAAO;AAAA,MAChB,QAAQ,OAAO;AAAA,IACjB,CAAC;AAED,WAAO;AAAA,MACL,QAAQ,SAAS;AAAA,MACjB,MAAM,SAAS;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,MAAM,IACJ,KACA,QAC0B;AAC1B,WAAO,KAAK,QAAW,KAAK,OAAO,QAAW,MAAM;AAAA,EACtD;AAAA,EAEA,MAAM,KACJ,KACA,MACA,QAC0B;AAC1B,WAAO,KAAK,QAAW,KAAK,QAAQ,MAAM,MAAM;AAAA,EAClD;AAAA,EAEA,MAAM,IACJ,KACA,MACA,QAC0B;AAC1B,WAAO,KAAK,QAAW,KAAK,OAAO,MAAM,MAAM;AAAA,EACjD;AAAA,EAEA,MAAM,MACJ,KACA,MACA,QAC0B;AAC1B,WAAO,KAAK,QAAW,KAAK,SAAS,MAAM,MAAM;AAAA,EACnD;AAAA,EAEA,MAAM,OACJ,KACA,QAC0B;AAC1B,WAAO,KAAK,QAAW,KAAK,UAAU,QAAW,MAAM;AAAA,EACzD;AACF;;;AChFA,IAAAC,uBAA6B;;;ACA7B,IAAAC,uBAA4B;;;ACA5B,IAAAC,uBAAoC;;;ACApC,IAAAC,uBAAwC;AACxC,mCAAuC;AASnC,IAAAC,uBAAA;AAJJ,SAAS,gBAAgB;AACvB,QAAM,UAAU,iBAAiB;AAEjC,SACE,+CAAC,SAAI,WAAU,6CACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,8CAAC,+BAAO;AAAA,QAChB,MAAM,8CAAC,WAAQ,OAAO,QAAQ,OAAO,UAAU;AAAA;AAAA,IACjD;AAAA,IAEA,8CAAC,uDAAuB,UAAS,aAAY;AAAA,KAC/C;AAEJ;AAEO,IAAM,gBAAY,sCAAgB;AAAA,EACvC,WAAW;AACb,CAAC;;;ADjBK,IAAAC,uBAAA;AAHN,SAAS,YAAY;AACnB,SACE,+CAAC,SAAI,WAAU,aACb;AAAA,mDAAC,SAAI,WAAU,gCACb;AAAA,oDAAC,QAAG,WAAU,qCAAoC,+BAAiB;AAAA,MACnE,8CAAC,OAAE,WAAU,8BAA6B,oFAE1C;AAAA,OACF;AAAA,IACA,8CAAC,+BAAO;AAAA,KACV;AAEJ;AAEO,IAAM,eAAW,kCAAY;AAAA,EAClC,gBAAgB,MAAM;AAAA,EACtB,MAAM;AAAA,EACN,WAAW;AACb,CAAC;;;AETK,IAAAC,uBAAA;AAHN,SAAS,YAAY,EAAE,MAAM,OAAO,YAAY,GAAqB;AACnE,SACE,+CAAC,SAAI,WAAU,2EACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,iBAAiB,MAAM;AAAA;AAAA,IAClC;AAAA,IACA,+CAAC,SAAI,WAAU,kBACb;AAAA,qDAAC,SAAI,WAAU,2BACb;AAAA,sDAAC,UAAK,WAAU,wEACb,gBACH;AAAA,QACA,8CAAC,UAAK,WAAU,+EACb,iBACH;AAAA,SACF;AAAA,MACA,8CAAC,OAAE,WAAU,sCAAsC,uBAAY;AAAA,OACjE;AAAA,KACF;AAEJ;AAQA,SAAS,WAAW,EAAE,OAAO,QAAQ,YAAY,GAAoB;AACnE,SACE,+CAAC,SAAI,WAAU,aACb;AAAA,kDAAC,QAAG,WAAU,qEACX,iBACH;AAAA,IACA,8CAAC,SAAI,WAAU,cACZ,iBAAO,IAAI,CAAC,EAAE,MAAM,YAAY,MAC/B;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA,OAAO,YAAY,IAAI;AAAA,QACvB;AAAA;AAAA,MAHK;AAAA,IAIP,CACD,GACH;AAAA,KACF;AAEJ;AAEe,SAAR,eAAgC;AACrC,QAAM,UAAU,iBAAiB;AACjC,QAAM,eAAe,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,aAAa;AAE3E,MAAI,CAAC,cAAc;AACjB,WACE,8CAAC,SAAI,WAAU,oBACb,wDAAC,OAAE,WAAU,yBAAwB,6BAAe,GACtD;AAAA,EAEJ;AAEA,QAAM,cAAc;AAAA,IAClB;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,EAAE,MAAM,aAAsB,aAAa,qBAAqB;AAAA,QAChE;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,QACN,EAAE,MAAM,WAAoB,aAAa,uBAAuB;AAAA,QAChE,EAAE,MAAM,kBAA2B,aAAa,iBAAiB;AAAA,QACjE,EAAE,MAAM,UAAmB,aAAa,eAAe;AAAA,QACvD,EAAE,MAAM,SAAkB,aAAa,kBAAkB;AAAA,QACzD;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SACE,+CAAC,SAAI,WAAU,aACb;AAAA,mDAAC,SAAI,WAAU,qCACb;AAAA,qDAAC,SACC;AAAA,sDAAC,QAAG,WAAU,wCAAuC,0BAAY;AAAA,QACjE,+CAAC,OAAE,WAAU,8BAA6B;AAAA;AAAA,UACzB;AAAA,UACf,8CAAC,UAAK,WAAU,eAAe,uBAAa,MAAK;AAAA,UAAO;AAAA,UACvD,aAAa;AAAA,UAAK;AAAA,WACrB;AAAA,SACF;AAAA,MACA,+CAAC,SAAI,WAAU,yDACb;AAAA,sDAAC,UAAK,uBAAS;AAAA,QACf,8CAAC,UAAK,WAAU,iDACb,uBAAa,IAChB;AAAA,SACF;AAAA,OACF;AAAA,IAEA,8CAAC,SAAI,WAAU,cACZ,sBAAY,IAAI,CAAC,UAChB;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,QACd,aAAa,aAAa;AAAA;AAAA,MAHrB,MAAM;AAAA,IAIb,CACD,GACH;AAAA,IAEA,+CAAC,SAAI,WAAU,0CACb;AAAA,oDAAC,QAAG,WAAU,6CAA4C,4BAE1D;AAAA,MACA,+CAAC,SAAI,WAAU,aACb;AAAA,uDAAC,SAAI,WAAU,qBACb;AAAA,wDAAC,UAAK,WAAU,gBAAe,wBAAU;AAAA,UAAQ;AAAA,UACjD,8CAAC,UAAK,WAAU,yBAAwB,oBAAC;AAAA,UAAQ;AAAA,UACjD,8CAAC,UAAK,WAAU,kBACb,uBAAa,OAAO,SACvB;AAAA,WACF;AAAA,QACA,+CAAC,SAAI,WAAU,qBACb;AAAA,wDAAC,UAAK,WAAU,kBAAiB,4BAAc;AAAA,UAAQ;AAAA,UACvD,8CAAC,UAAK,WAAU,yBAAwB,oBAAC;AAAA,UAAQ;AAAA,UACjD,8CAAC,UAAK,WAAU,kBACb,uBAAa,OAAO,WACvB;AAAA,WACF;AAAA,QACA,+CAAC,SAAI,WAAU,qBACb;AAAA,wDAAC,UAAK,WAAU,iBAAgB,4BAAc;AAAA,UAAQ;AAAA,UACtD,8CAAC,UAAK,WAAU,yBAAwB,oBAAC;AAAA,UAAQ;AAAA,UACjD,8CAAC,UAAK,WAAU,kBACb,uBAAa,OAAO,SACvB;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AHvPO,IAAM,kBAAc,kCAAY;AAAA,EACrC,gBAAgB,MAAM;AAAA,EACtB,MAAM;AAAA,EACN,WAAW;AACb,CAAC;;;AIRD,IAAAC,uBAA4B;;;ACA5B,IAAAC,uBAAqB;AAUjB,IAAAC,uBAAA;AAFJ,SAAS,YAAY,EAAE,OAAO,aAAa,KAAK,GAAqB;AACnE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ,WAAU;AAAA,MAEV;AAAA,sDAAC,QAAG,WAAU,6CAA6C,iBAAM;AAAA,QACjE,8CAAC,OAAE,WAAU,yBAAyB,uBAAY;AAAA;AAAA;AAAA,EACpD;AAEJ;AAEe,SAAR,cAA+B;AACpC,QAAM,WAAW;AAAA,IACf;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MACF,MAAM;AAAA,IACR;AAAA;AAAA,EAEF;AAEA,SACE,+CAAC,SAAI,WAAU,aACb;AAAA,mDAAC,SACC;AAAA,oDAAC,QAAG,WAAU,6CAA4C,6BAE1D;AAAA,MACA,8CAAC,OAAE,WAAU,yBAAwB,kFAErC;AAAA,OACF;AAAA,IAEA,8CAAC,SAAI,WAAU,4CACZ,mBAAS,IAAI,CAAC,SACb;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO,KAAK;AAAA,QACZ,aAAa,KAAK;AAAA,QAClB,MAAM,KAAK;AAAA;AAAA,MAHN,KAAK;AAAA,IAIZ,CACD,GACH;AAAA,IAEA,+CAAC,SAAI,WAAU,yCACb;AAAA,oDAAC,QAAG,WAAU,6CAA4C,8BAE1D;AAAA,MACA,8CAAC,OAAE,WAAU,iCAAgC,iLAI7C;AAAA,OACF;AAAA,KACF;AAEJ;;;AD7DO,IAAM,oBAAgB,kCAAY;AAAA,EACvC,gBAAgB,MAAM;AAAA,EACtB,MAAM;AAAA,EACN,WAAW;AACb,CAAC;;;AERD,IAAAC,uBAA4B;;;ACA5B,IAAAC,uBAA0B;;;ACatB,IAAAC,uBAAA;AAHG,IAAM,qBAAkD,CAAC,EAAE,KAAK,MAAM;AAC3E,QAAM,UAAU,iBAAiB;AACjC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ,KAAK;AAAA,MACb,UAAU,CAAC,SAA4B;AACrC,aAAK,SAAS;AAAA,UACZ;AAAA,UACA,MAAM,QAAQ,kBAAkB,QAAQ;AAAA,QAC1C,CAAC;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;;;ACVa,IAAAC,uBAAA;AALN,IAAM,eAAsC,CAAC,UAAU;AAC5D,QAAM,EAAE,KAAK,IAAI;AAEjB,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,8CAAC,sBAAmB,MAAY;AAAA,IACzC;AACE,aAAO;AAAA,EACX;AACF;;;AFPW,IAAAC,uBAAA;AANI,SAAR,aAA8B;AACnC,QAAM,EAAE,KAAK,QAAI,gCAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,QAAM,UAAU,iBAAiB;AAGjC,MAAI,CAAC,QAAQ,OAAO,MAAM,IAAI,GAAG;AAC/B,WAAO,8CAAC,SAAI,4BAAc;AAAA,EAC5B;AAEA,SAAO,8CAAC,gBAAa,MAAM,QAAQ,OAAO,MAAM,IAAI,GAAG;AACzD;;;ADVO,IAAM,gBAAY,kCAAY;AAAA,EACnC,gBAAgB,MAAM;AAAA,EACtB,MAAM;AAAA,EACN,gBAAgB,CAAC,YAAqC;AAAA,IACpD,IAAI,OAAO;AAAA,EACb;AAAA,EACA,WAAW;AACb,CAAC;;;AILM,IAAM,YAAY,UAAU,YAAY;AAAA,EAC7C;AAAA,EACA,SAAS,YAAY,CAAC,eAAe,WAAW,CAAC;AACnD,CAAC;;;AXNM,IAAM,aAAS,mCAAa;AAAA,EACjC;AACF,CAAC;;;AYLD,oBAAmB;AACnB,aAAwB;;;ACDxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAI;AAAA,CACV,SAAUC,OAAM;AACb,EAAAA,MAAK,cAAc,CAAC,MAAM;AAAA,EAAE;AAC5B,WAAS,SAAS,MAAM;AAAA,EAAE;AAC1B,EAAAA,MAAK,WAAW;AAChB,WAAS,YAAY,IAAI;AACrB,UAAM,IAAI,MAAM;AAAA,EACpB;AACA,EAAAA,MAAK,cAAc;AACnB,EAAAA,MAAK,cAAc,CAAC,UAAU;AAC1B,UAAM,MAAM,CAAC;AACb,eAAW,QAAQ,OAAO;AACtB,UAAI,IAAI,IAAI;AAAA,IAChB;AACA,WAAO;AAAA,EACX;AACA,EAAAA,MAAK,qBAAqB,CAAC,QAAQ;AAC/B,UAAM,YAAYA,MAAK,WAAW,GAAG,EAAE,OAAO,CAAC,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC,MAAM,QAAQ;AACpF,UAAM,WAAW,CAAC;AAClB,eAAW,KAAK,WAAW;AACvB,eAAS,CAAC,IAAI,IAAI,CAAC;AAAA,IACvB;AACA,WAAOA,MAAK,aAAa,QAAQ;AAAA,EACrC;AACA,EAAAA,MAAK,eAAe,CAAC,QAAQ;AACzB,WAAOA,MAAK,WAAW,GAAG,EAAE,IAAI,SAAU,GAAG;AACzC,aAAO,IAAI,CAAC;AAAA,IAChB,CAAC;AAAA,EACL;AACA,EAAAA,MAAK,aAAa,OAAO,OAAO,SAAS,aACnC,CAAC,QAAQ,OAAO,KAAK,GAAG,IACxB,CAAC,WAAW;AACV,UAAM,OAAO,CAAC;AACd,eAAW,OAAO,QAAQ;AACtB,UAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACnD,aAAK,KAAK,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ,EAAAA,MAAK,OAAO,CAAC,KAAK,YAAY;AAC1B,eAAW,QAAQ,KAAK;AACpB,UAAI,QAAQ,IAAI;AACZ,eAAO;AAAA,IACf;AACA,WAAO;AAAA,EACX;AACA,EAAAA,MAAK,YAAY,OAAO,OAAO,cAAc,aACvC,CAAC,QAAQ,OAAO,UAAU,GAAG,IAC7B,CAAC,QAAQ,OAAO,QAAQ,YAAY,OAAO,SAAS,GAAG,KAAK,KAAK,MAAM,GAAG,MAAM;AACtF,WAAS,WAAW,OAAO,YAAY,OAAO;AAC1C,WAAO,MAAM,IAAI,CAAC,QAAS,OAAO,QAAQ,WAAW,IAAI,GAAG,MAAM,GAAI,EAAE,KAAK,SAAS;AAAA,EAC1F;AACA,EAAAA,MAAK,aAAa;AAClB,EAAAA,MAAK,wBAAwB,CAAC,GAAG,UAAU;AACvC,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,MAAM,SAAS;AAAA,IAC1B;AACA,WAAO;AAAA,EACX;AACJ,GAAG,SAAS,OAAO,CAAC,EAAE;AACf,IAAI;AAAA,CACV,SAAUC,aAAY;AACnB,EAAAA,YAAW,cAAc,CAAC,OAAO,WAAW;AACxC,WAAO;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA;AAAA,IACP;AAAA,EACJ;AACJ,GAAG,eAAe,aAAa,CAAC,EAAE;AAC3B,IAAM,gBAAgB,KAAK,YAAY;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACM,IAAM,gBAAgB,CAAC,SAAS;AACnC,QAAM,IAAI,OAAO;AACjB,UAAQ,GAAG;AAAA,IACP,KAAK;AACD,aAAO,cAAc;AAAA,IACzB,KAAK;AACD,aAAO,cAAc;AAAA,IACzB,KAAK;AACD,aAAO,OAAO,MAAM,IAAI,IAAI,cAAc,MAAM,cAAc;AAAA,IAClE,KAAK;AACD,aAAO,cAAc;AAAA,IACzB,KAAK;AACD,aAAO,cAAc;AAAA,IACzB,KAAK;AACD,aAAO,cAAc;AAAA,IACzB,KAAK;AACD,aAAO,cAAc;AAAA,IACzB,KAAK;AACD,UAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,eAAO,cAAc;AAAA,MACzB;AACA,UAAI,SAAS,MAAM;AACf,eAAO,cAAc;AAAA,MACzB;AACA,UAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,cAAc,KAAK,SAAS,OAAO,KAAK,UAAU,YAAY;AAChG,eAAO,cAAc;AAAA,MACzB;AACA,UAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AACnD,eAAO,cAAc;AAAA,MACzB;AACA,UAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AACnD,eAAO,cAAc;AAAA,MACzB;AACA,UAAI,OAAO,SAAS,eAAe,gBAAgB,MAAM;AACrD,eAAO,cAAc;AAAA,MACzB;AACA,aAAO,cAAc;AAAA,IACzB;AACI,aAAO,cAAc;AAAA,EAC7B;AACJ;;;ACnIO,IAAM,eAAe,KAAK,YAAY;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACM,IAAM,gBAAgB,CAAC,QAAQ;AAClC,QAAM,OAAO,KAAK,UAAU,KAAK,MAAM,CAAC;AACxC,SAAO,KAAK,QAAQ,eAAe,KAAK;AAC5C;AACO,IAAM,WAAN,MAAM,kBAAiB,MAAM;AAAA,EAChC,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,YAAY,QAAQ;AAChB,UAAM;AACN,SAAK,SAAS,CAAC;AACf,SAAK,WAAW,CAAC,QAAQ;AACrB,WAAK,SAAS,CAAC,GAAG,KAAK,QAAQ,GAAG;AAAA,IACtC;AACA,SAAK,YAAY,CAAC,OAAO,CAAC,MAAM;AAC5B,WAAK,SAAS,CAAC,GAAG,KAAK,QAAQ,GAAG,IAAI;AAAA,IAC1C;AACA,UAAM,cAAc,WAAW;AAC/B,QAAI,OAAO,gBAAgB;AAEvB,aAAO,eAAe,MAAM,WAAW;AAAA,IAC3C,OACK;AACD,WAAK,YAAY;AAAA,IACrB;AACA,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAClB;AAAA,EACA,OAAO,SAAS;AACZ,UAAM,SAAS,WACX,SAAU,OAAO;AACb,aAAO,MAAM;AAAA,IACjB;AACJ,UAAM,cAAc,EAAE,SAAS,CAAC,EAAE;AAClC,UAAM,eAAe,CAAC,UAAU;AAC5B,iBAAW,SAAS,MAAM,QAAQ;AAC9B,YAAI,MAAM,SAAS,iBAAiB;AAChC,gBAAM,YAAY,IAAI,YAAY;AAAA,QACtC,WACS,MAAM,SAAS,uBAAuB;AAC3C,uBAAa,MAAM,eAAe;AAAA,QACtC,WACS,MAAM,SAAS,qBAAqB;AACzC,uBAAa,MAAM,cAAc;AAAA,QACrC,WACS,MAAM,KAAK,WAAW,GAAG;AAC9B,sBAAY,QAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,QAC1C,OACK;AACD,cAAI,OAAO;AACX,cAAI,IAAI;AACR,iBAAO,IAAI,MAAM,KAAK,QAAQ;AAC1B,kBAAM,KAAK,MAAM,KAAK,CAAC;AACvB,kBAAM,WAAW,MAAM,MAAM,KAAK,SAAS;AAC3C,gBAAI,CAAC,UAAU;AACX,mBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;AAAA,YAQzC,OACK;AACD,mBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;AACrC,mBAAK,EAAE,EAAE,QAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,YACvC;AACA,mBAAO,KAAK,EAAE;AACd;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,iBAAa,IAAI;AACjB,WAAO;AAAA,EACX;AAAA,EACA,OAAO,OAAO,OAAO;AACjB,QAAI,EAAE,iBAAiB,YAAW;AAC9B,YAAM,IAAI,MAAM,mBAAmB,KAAK,EAAE;AAAA,IAC9C;AAAA,EACJ;AAAA,EACA,WAAW;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,IAAI,UAAU;AACV,WAAO,KAAK,UAAU,KAAK,QAAQ,KAAK,uBAAuB,CAAC;AAAA,EACpE;AAAA,EACA,IAAI,UAAU;AACV,WAAO,KAAK,OAAO,WAAW;AAAA,EAClC;AAAA,EACA,QAAQ,SAAS,CAAC,UAAU,MAAM,SAAS;AACvC,UAAM,cAAc,CAAC;AACrB,UAAM,aAAa,CAAC;AACpB,eAAW,OAAO,KAAK,QAAQ;AAC3B,UAAI,IAAI,KAAK,SAAS,GAAG;AACrB,cAAM,UAAU,IAAI,KAAK,CAAC;AAC1B,oBAAY,OAAO,IAAI,YAAY,OAAO,KAAK,CAAC;AAChD,oBAAY,OAAO,EAAE,KAAK,OAAO,GAAG,CAAC;AAAA,MACzC,OACK;AACD,mBAAW,KAAK,OAAO,GAAG,CAAC;AAAA,MAC/B;AAAA,IACJ;AACA,WAAO,EAAE,YAAY,YAAY;AAAA,EACrC;AAAA,EACA,IAAI,aAAa;AACb,WAAO,KAAK,QAAQ;AAAA,EACxB;AACJ;AACA,SAAS,SAAS,CAAC,WAAW;AAC1B,QAAM,QAAQ,IAAI,SAAS,MAAM;AACjC,SAAO;AACX;;;AClIA,IAAM,WAAW,CAAC,OAAO,SAAS;AAC9B,MAAI;AACJ,UAAQ,MAAM,MAAM;AAAA,IAChB,KAAK,aAAa;AACd,UAAI,MAAM,aAAa,cAAc,WAAW;AAC5C,kBAAU;AAAA,MACd,OACK;AACD,kBAAU,YAAY,MAAM,QAAQ,cAAc,MAAM,QAAQ;AAAA,MACpE;AACA;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU,mCAAmC,KAAK,UAAU,MAAM,UAAU,KAAK,qBAAqB,CAAC;AACvG;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU,kCAAkC,KAAK,WAAW,MAAM,MAAM,IAAI,CAAC;AAC7E;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU;AACV;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU,yCAAyC,KAAK,WAAW,MAAM,OAAO,CAAC;AACjF;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU,gCAAgC,KAAK,WAAW,MAAM,OAAO,CAAC,eAAe,MAAM,QAAQ;AACrG;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU;AACV;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU;AACV;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU;AACV;AAAA,IACJ,KAAK,aAAa;AACd,UAAI,OAAO,MAAM,eAAe,UAAU;AACtC,YAAI,cAAc,MAAM,YAAY;AAChC,oBAAU,gCAAgC,MAAM,WAAW,QAAQ;AACnE,cAAI,OAAO,MAAM,WAAW,aAAa,UAAU;AAC/C,sBAAU,GAAG,OAAO,sDAAsD,MAAM,WAAW,QAAQ;AAAA,UACvG;AAAA,QACJ,WACS,gBAAgB,MAAM,YAAY;AACvC,oBAAU,mCAAmC,MAAM,WAAW,UAAU;AAAA,QAC5E,WACS,cAAc,MAAM,YAAY;AACrC,oBAAU,iCAAiC,MAAM,WAAW,QAAQ;AAAA,QACxE,OACK;AACD,eAAK,YAAY,MAAM,UAAU;AAAA,QACrC;AAAA,MACJ,WACS,MAAM,eAAe,SAAS;AACnC,kBAAU,WAAW,MAAM,UAAU;AAAA,MACzC,OACK;AACD,kBAAU;AAAA,MACd;AACA;AAAA,IACJ,KAAK,aAAa;AACd,UAAI,MAAM,SAAS;AACf,kBAAU,sBAAsB,MAAM,QAAQ,YAAY,MAAM,YAAY,aAAa,WAAW,IAAI,MAAM,OAAO;AAAA,eAChH,MAAM,SAAS;AACpB,kBAAU,uBAAuB,MAAM,QAAQ,YAAY,MAAM,YAAY,aAAa,MAAM,IAAI,MAAM,OAAO;AAAA,eAC5G,MAAM,SAAS;AACpB,kBAAU,kBAAkB,MAAM,QAAQ,sBAAsB,MAAM,YAAY,8BAA8B,eAAe,GAAG,MAAM,OAAO;AAAA,eAC1I,MAAM,SAAS;AACpB,kBAAU,kBAAkB,MAAM,QAAQ,sBAAsB,MAAM,YAAY,8BAA8B,eAAe,GAAG,MAAM,OAAO;AAAA,eAC1I,MAAM,SAAS;AACpB,kBAAU,gBAAgB,MAAM,QAAQ,sBAAsB,MAAM,YAAY,8BAA8B,eAAe,GAAG,IAAI,KAAK,OAAO,MAAM,OAAO,CAAC,CAAC;AAAA;AAE/J,kBAAU;AACd;AAAA,IACJ,KAAK,aAAa;AACd,UAAI,MAAM,SAAS;AACf,kBAAU,sBAAsB,MAAM,QAAQ,YAAY,MAAM,YAAY,YAAY,WAAW,IAAI,MAAM,OAAO;AAAA,eAC/G,MAAM,SAAS;AACpB,kBAAU,uBAAuB,MAAM,QAAQ,YAAY,MAAM,YAAY,YAAY,OAAO,IAAI,MAAM,OAAO;AAAA,eAC5G,MAAM,SAAS;AACpB,kBAAU,kBAAkB,MAAM,QAAQ,YAAY,MAAM,YAAY,0BAA0B,WAAW,IAAI,MAAM,OAAO;AAAA,eACzH,MAAM,SAAS;AACpB,kBAAU,kBAAkB,MAAM,QAAQ,YAAY,MAAM,YAAY,0BAA0B,WAAW,IAAI,MAAM,OAAO;AAAA,eACzH,MAAM,SAAS;AACpB,kBAAU,gBAAgB,MAAM,QAAQ,YAAY,MAAM,YAAY,6BAA6B,cAAc,IAAI,IAAI,KAAK,OAAO,MAAM,OAAO,CAAC,CAAC;AAAA;AAEpJ,kBAAU;AACd;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU;AACV;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU;AACV;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU,gCAAgC,MAAM,UAAU;AAC1D;AAAA,IACJ,KAAK,aAAa;AACd,gBAAU;AACV;AAAA,IACJ;AACI,gBAAU,KAAK;AACf,WAAK,YAAY,KAAK;AAAA,EAC9B;AACA,SAAO,EAAE,QAAQ;AACrB;AACA,IAAO,aAAQ;;;AC3Gf,IAAI,mBAAmB;AAEhB,SAAS,YAAY,KAAK;AAC7B,qBAAmB;AACvB;AACO,SAAS,cAAc;AAC1B,SAAO;AACX;;;ACNO,IAAM,YAAY,CAAC,WAAW;AACjC,QAAM,EAAE,MAAM,MAAM,WAAW,UAAU,IAAI;AAC7C,QAAM,WAAW,CAAC,GAAG,MAAM,GAAI,UAAU,QAAQ,CAAC,CAAE;AACpD,QAAM,YAAY;AAAA,IACd,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AACA,MAAI,UAAU,YAAY,QAAW;AACjC,WAAO;AAAA,MACH,GAAG;AAAA,MACH,MAAM;AAAA,MACN,SAAS,UAAU;AAAA,IACvB;AAAA,EACJ;AACA,MAAI,eAAe;AACnB,QAAM,OAAO,UACR,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,MAAM,EACN,QAAQ;AACb,aAAW,OAAO,MAAM;AACpB,mBAAe,IAAI,WAAW,EAAE,MAAM,cAAc,aAAa,CAAC,EAAE;AAAA,EACxE;AACA,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AACJ;AACO,IAAM,aAAa,CAAC;AACpB,SAAS,kBAAkB,KAAK,WAAW;AAC9C,QAAM,cAAc,YAAY;AAChC,QAAM,QAAQ,UAAU;AAAA,IACpB;AAAA,IACA,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,WAAW;AAAA,MACP,IAAI,OAAO;AAAA;AAAA,MACX,IAAI;AAAA;AAAA,MACJ;AAAA;AAAA,MACA,gBAAgB,aAAkB,SAAY;AAAA;AAAA,IAClD,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,EACvB,CAAC;AACD,MAAI,OAAO,OAAO,KAAK,KAAK;AAChC;AACO,IAAM,cAAN,MAAM,aAAY;AAAA,EACrB,cAAc;AACV,SAAK,QAAQ;AAAA,EACjB;AAAA,EACA,QAAQ;AACJ,QAAI,KAAK,UAAU;AACf,WAAK,QAAQ;AAAA,EACrB;AAAA,EACA,QAAQ;AACJ,QAAI,KAAK,UAAU;AACf,WAAK,QAAQ;AAAA,EACrB;AAAA,EACA,OAAO,WAAW,QAAQ,SAAS;AAC/B,UAAM,aAAa,CAAC;AACpB,eAAW,KAAK,SAAS;AACrB,UAAI,EAAE,WAAW;AACb,eAAO;AACX,UAAI,EAAE,WAAW;AACb,eAAO,MAAM;AACjB,iBAAW,KAAK,EAAE,KAAK;AAAA,IAC3B;AACA,WAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,WAAW;AAAA,EACrD;AAAA,EACA,aAAa,iBAAiB,QAAQ,OAAO;AACzC,UAAM,YAAY,CAAC;AACnB,eAAW,QAAQ,OAAO;AACtB,YAAM,MAAM,MAAM,KAAK;AACvB,YAAM,QAAQ,MAAM,KAAK;AACzB,gBAAU,KAAK;AAAA,QACX;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AACA,WAAO,aAAY,gBAAgB,QAAQ,SAAS;AAAA,EACxD;AAAA,EACA,OAAO,gBAAgB,QAAQ,OAAO;AAClC,UAAM,cAAc,CAAC;AACrB,eAAW,QAAQ,OAAO;AACtB,YAAM,EAAE,KAAK,MAAM,IAAI;AACvB,UAAI,IAAI,WAAW;AACf,eAAO;AACX,UAAI,MAAM,WAAW;AACjB,eAAO;AACX,UAAI,IAAI,WAAW;AACf,eAAO,MAAM;AACjB,UAAI,MAAM,WAAW;AACjB,eAAO,MAAM;AACjB,UAAI,IAAI,UAAU,gBAAgB,OAAO,MAAM,UAAU,eAAe,KAAK,YAAY;AACrF,oBAAY,IAAI,KAAK,IAAI,MAAM;AAAA,MACnC;AAAA,IACJ;AACA,WAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,YAAY;AAAA,EACtD;AACJ;AACO,IAAM,UAAU,OAAO,OAAO;AAAA,EACjC,QAAQ;AACZ,CAAC;AACM,IAAM,QAAQ,CAAC,WAAW,EAAE,QAAQ,SAAS,MAAM;AACnD,IAAM,KAAK,CAAC,WAAW,EAAE,QAAQ,SAAS,MAAM;AAChD,IAAM,YAAY,CAAC,MAAM,EAAE,WAAW;AACtC,IAAM,UAAU,CAAC,MAAM,EAAE,WAAW;AACpC,IAAM,UAAU,CAAC,MAAM,EAAE,WAAW;AACpC,IAAM,UAAU,CAAC,MAAM,OAAO,YAAY,eAAe,aAAa;;;AC5GtE,IAAI;AAAA,CACV,SAAUC,YAAW;AAClB,EAAAA,WAAU,WAAW,CAAC,YAAY,OAAO,YAAY,WAAW,EAAE,QAAQ,IAAI,WAAW,CAAC;AAE1F,EAAAA,WAAU,WAAW,CAAC,YAAY,OAAO,YAAY,WAAW,UAAU,SAAS;AACvF,GAAG,cAAc,YAAY,CAAC,EAAE;;;ACAhC,IAAM,qBAAN,MAAyB;AAAA,EACrB,YAAY,QAAQ,OAAO,MAAM,KAAK;AAClC,SAAK,cAAc,CAAC;AACpB,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,OAAO;AACP,QAAI,CAAC,KAAK,YAAY,QAAQ;AAC1B,UAAI,MAAM,QAAQ,KAAK,IAAI,GAAG;AAC1B,aAAK,YAAY,KAAK,GAAG,KAAK,OAAO,GAAG,KAAK,IAAI;AAAA,MACrD,OACK;AACD,aAAK,YAAY,KAAK,GAAG,KAAK,OAAO,KAAK,IAAI;AAAA,MAClD;AAAA,IACJ;AACA,WAAO,KAAK;AAAA,EAChB;AACJ;AACA,IAAM,eAAe,CAAC,KAAK,WAAW;AAClC,MAAI,QAAQ,MAAM,GAAG;AACjB,WAAO,EAAE,SAAS,MAAM,MAAM,OAAO,MAAM;AAAA,EAC/C,OACK;AACD,QAAI,CAAC,IAAI,OAAO,OAAO,QAAQ;AAC3B,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC/D;AACA,WAAO;AAAA,MACH,SAAS;AAAA,MACT,IAAI,QAAQ;AACR,YAAI,KAAK;AACL,iBAAO,KAAK;AAChB,cAAM,QAAQ,IAAI,SAAS,IAAI,OAAO,MAAM;AAC5C,aAAK,SAAS;AACd,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,oBAAoB,QAAQ;AACjC,MAAI,CAAC;AACD,WAAO,CAAC;AACZ,QAAM,EAAE,UAAAC,WAAU,oBAAoB,gBAAgB,YAAY,IAAI;AACtE,MAAIA,cAAa,sBAAsB,iBAAiB;AACpD,UAAM,IAAI,MAAM,0FAA0F;AAAA,EAC9G;AACA,MAAIA;AACA,WAAO,EAAE,UAAUA,WAAU,YAAY;AAC7C,QAAM,YAAY,CAAC,KAAK,QAAQ;AAC5B,UAAM,EAAE,QAAQ,IAAI;AACpB,QAAI,IAAI,SAAS,sBAAsB;AACnC,aAAO,EAAE,SAAS,WAAW,IAAI,aAAa;AAAA,IAClD;AACA,QAAI,OAAO,IAAI,SAAS,aAAa;AACjC,aAAO,EAAE,SAAS,WAAW,kBAAkB,IAAI,aAAa;AAAA,IACpE;AACA,QAAI,IAAI,SAAS;AACb,aAAO,EAAE,SAAS,IAAI,aAAa;AACvC,WAAO,EAAE,SAAS,WAAW,sBAAsB,IAAI,aAAa;AAAA,EACxE;AACA,SAAO,EAAE,UAAU,WAAW,YAAY;AAC9C;AACO,IAAM,UAAN,MAAc;AAAA,EACjB,IAAI,cAAc;AACd,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,SAAS,OAAO;AACZ,WAAO,cAAc,MAAM,IAAI;AAAA,EACnC;AAAA,EACA,gBAAgB,OAAO,KAAK;AACxB,WAAQ,OAAO;AAAA,MACX,QAAQ,MAAM,OAAO;AAAA,MACrB,MAAM,MAAM;AAAA,MACZ,YAAY,cAAc,MAAM,IAAI;AAAA,MACpC,gBAAgB,KAAK,KAAK;AAAA,MAC1B,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,IAClB;AAAA,EACJ;AAAA,EACA,oBAAoB,OAAO;AACvB,WAAO;AAAA,MACH,QAAQ,IAAI,YAAY;AAAA,MACxB,KAAK;AAAA,QACD,QAAQ,MAAM,OAAO;AAAA,QACrB,MAAM,MAAM;AAAA,QACZ,YAAY,cAAc,MAAM,IAAI;AAAA,QACpC,gBAAgB,KAAK,KAAK;AAAA,QAC1B,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,MAClB;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,WAAW,OAAO;AACd,UAAM,SAAS,KAAK,OAAO,KAAK;AAChC,QAAI,QAAQ,MAAM,GAAG;AACjB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC5D;AACA,WAAO;AAAA,EACX;AAAA,EACA,YAAY,OAAO;AACf,UAAM,SAAS,KAAK,OAAO,KAAK;AAChC,WAAO,QAAQ,QAAQ,MAAM;AAAA,EACjC;AAAA,EACA,MAAM,MAAM,QAAQ;AAChB,UAAM,SAAS,KAAK,UAAU,MAAM,MAAM;AAC1C,QAAI,OAAO;AACP,aAAO,OAAO;AAClB,UAAM,OAAO;AAAA,EACjB;AAAA,EACA,UAAU,MAAM,QAAQ;AACpB,UAAM,MAAM;AAAA,MACR,QAAQ;AAAA,QACJ,QAAQ,CAAC;AAAA,QACT,OAAO,QAAQ,SAAS;AAAA,QACxB,oBAAoB,QAAQ;AAAA,MAChC;AAAA,MACA,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACvB,gBAAgB,KAAK,KAAK;AAAA,MAC1B,QAAQ;AAAA,MACR;AAAA,MACA,YAAY,cAAc,IAAI;AAAA,IAClC;AACA,UAAM,SAAS,KAAK,WAAW,EAAE,MAAM,MAAM,IAAI,MAAM,QAAQ,IAAI,CAAC;AACpE,WAAO,aAAa,KAAK,MAAM;AAAA,EACnC;AAAA,EACA,YAAY,MAAM;AACd,UAAM,MAAM;AAAA,MACR,QAAQ;AAAA,QACJ,QAAQ,CAAC;AAAA,QACT,OAAO,CAAC,CAAC,KAAK,WAAW,EAAE;AAAA,MAC/B;AAAA,MACA,MAAM,CAAC;AAAA,MACP,gBAAgB,KAAK,KAAK;AAAA,MAC1B,QAAQ;AAAA,MACR;AAAA,MACA,YAAY,cAAc,IAAI;AAAA,IAClC;AACA,QAAI,CAAC,KAAK,WAAW,EAAE,OAAO;AAC1B,UAAI;AACA,cAAM,SAAS,KAAK,WAAW,EAAE,MAAM,MAAM,CAAC,GAAG,QAAQ,IAAI,CAAC;AAC9D,eAAO,QAAQ,MAAM,IACf;AAAA,UACE,OAAO,OAAO;AAAA,QAClB,IACE;AAAA,UACE,QAAQ,IAAI,OAAO;AAAA,QACvB;AAAA,MACR,SACO,KAAK;AACR,YAAI,KAAK,SAAS,YAAY,GAAG,SAAS,aAAa,GAAG;AACtD,eAAK,WAAW,EAAE,QAAQ;AAAA,QAC9B;AACA,YAAI,SAAS;AAAA,UACT,QAAQ,CAAC;AAAA,UACT,OAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ;AACA,WAAO,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC,GAAG,QAAQ,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,QAAQ,MAAM,IAClF;AAAA,MACE,OAAO,OAAO;AAAA,IAClB,IACE;AAAA,MACE,QAAQ,IAAI,OAAO;AAAA,IACvB,CAAC;AAAA,EACT;AAAA,EACA,MAAM,WAAW,MAAM,QAAQ;AAC3B,UAAM,SAAS,MAAM,KAAK,eAAe,MAAM,MAAM;AACrD,QAAI,OAAO;AACP,aAAO,OAAO;AAClB,UAAM,OAAO;AAAA,EACjB;AAAA,EACA,MAAM,eAAe,MAAM,QAAQ;AAC/B,UAAM,MAAM;AAAA,MACR,QAAQ;AAAA,QACJ,QAAQ,CAAC;AAAA,QACT,oBAAoB,QAAQ;AAAA,QAC5B,OAAO;AAAA,MACX;AAAA,MACA,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACvB,gBAAgB,KAAK,KAAK;AAAA,MAC1B,QAAQ;AAAA,MACR;AAAA,MACA,YAAY,cAAc,IAAI;AAAA,IAClC;AACA,UAAM,mBAAmB,KAAK,OAAO,EAAE,MAAM,MAAM,IAAI,MAAM,QAAQ,IAAI,CAAC;AAC1E,UAAM,SAAS,OAAO,QAAQ,gBAAgB,IAAI,mBAAmB,QAAQ,QAAQ,gBAAgB;AACrG,WAAO,aAAa,KAAK,MAAM;AAAA,EACnC;AAAA,EACA,OAAO,OAAO,SAAS;AACnB,UAAM,qBAAqB,CAAC,QAAQ;AAChC,UAAI,OAAO,YAAY,YAAY,OAAO,YAAY,aAAa;AAC/D,eAAO,EAAE,QAAQ;AAAA,MACrB,WACS,OAAO,YAAY,YAAY;AACpC,eAAO,QAAQ,GAAG;AAAA,MACtB,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO,KAAK,YAAY,CAAC,KAAK,QAAQ;AAClC,YAAM,SAAS,MAAM,GAAG;AACxB,YAAM,WAAW,MAAM,IAAI,SAAS;AAAA,QAChC,MAAM,aAAa;AAAA,QACnB,GAAG,mBAAmB,GAAG;AAAA,MAC7B,CAAC;AACD,UAAI,OAAO,YAAY,eAAe,kBAAkB,SAAS;AAC7D,eAAO,OAAO,KAAK,CAAC,SAAS;AACzB,cAAI,CAAC,MAAM;AACP,qBAAS;AACT,mBAAO;AAAA,UACX,OACK;AACD,mBAAO;AAAA,UACX;AAAA,QACJ,CAAC;AAAA,MACL;AACA,UAAI,CAAC,QAAQ;AACT,iBAAS;AACT,eAAO;AAAA,MACX,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,WAAW,OAAO,gBAAgB;AAC9B,WAAO,KAAK,YAAY,CAAC,KAAK,QAAQ;AAClC,UAAI,CAAC,MAAM,GAAG,GAAG;AACb,YAAI,SAAS,OAAO,mBAAmB,aAAa,eAAe,KAAK,GAAG,IAAI,cAAc;AAC7F,eAAO;AAAA,MACX,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,YAAY,YAAY;AACpB,WAAO,IAAI,WAAW;AAAA,MAClB,QAAQ;AAAA,MACR,UAAU,sBAAsB;AAAA,MAChC,QAAQ,EAAE,MAAM,cAAc,WAAW;AAAA,IAC7C,CAAC;AAAA,EACL;AAAA,EACA,YAAY,YAAY;AACpB,WAAO,KAAK,YAAY,UAAU;AAAA,EACtC;AAAA,EACA,YAAY,KAAK;AAEb,SAAK,MAAM,KAAK;AAChB,SAAK,OAAO;AACZ,SAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AACjC,SAAK,YAAY,KAAK,UAAU,KAAK,IAAI;AACzC,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI;AACnD,SAAK,MAAM,KAAK,IAAI,KAAK,IAAI;AAC7B,SAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AACnC,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAC7C,SAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AACvC,SAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AACvC,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AACjC,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,KAAK,KAAK,GAAG,KAAK,IAAI;AAC3B,SAAK,MAAM,KAAK,IAAI,KAAK,IAAI;AAC7B,SAAK,YAAY,KAAK,UAAU,KAAK,IAAI;AACzC,SAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AACjC,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,QAAQ,KAAK,MAAM,KAAK,IAAI;AACjC,SAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AACvC,SAAK,OAAO,KAAK,KAAK,KAAK,IAAI;AAC/B,SAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AACvC,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,WAAW,IAAI;AAAA,MAChB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU,CAAC,SAAS,KAAK,WAAW,EAAE,IAAI;AAAA,IAC9C;AAAA,EACJ;AAAA,EACA,WAAW;AACP,WAAO,YAAY,OAAO,MAAM,KAAK,IAAI;AAAA,EAC7C;AAAA,EACA,WAAW;AACP,WAAO,YAAY,OAAO,MAAM,KAAK,IAAI;AAAA,EAC7C;AAAA,EACA,UAAU;AACN,WAAO,KAAK,SAAS,EAAE,SAAS;AAAA,EACpC;AAAA,EACA,QAAQ;AACJ,WAAO,SAAS,OAAO,IAAI;AAAA,EAC/B;AAAA,EACA,UAAU;AACN,WAAO,WAAW,OAAO,MAAM,KAAK,IAAI;AAAA,EAC5C;AAAA,EACA,GAAG,QAAQ;AACP,WAAO,SAAS,OAAO,CAAC,MAAM,MAAM,GAAG,KAAK,IAAI;AAAA,EACpD;AAAA,EACA,IAAI,UAAU;AACV,WAAO,gBAAgB,OAAO,MAAM,UAAU,KAAK,IAAI;AAAA,EAC3D;AAAA,EACA,UAAU,WAAW;AACjB,WAAO,IAAI,WAAW;AAAA,MAClB,GAAG,oBAAoB,KAAK,IAAI;AAAA,MAChC,QAAQ;AAAA,MACR,UAAU,sBAAsB;AAAA,MAChC,QAAQ,EAAE,MAAM,aAAa,UAAU;AAAA,IAC3C,CAAC;AAAA,EACL;AAAA,EACA,QAAQ,KAAK;AACT,UAAM,mBAAmB,OAAO,QAAQ,aAAa,MAAM,MAAM;AACjE,WAAO,IAAI,WAAW;AAAA,MAClB,GAAG,oBAAoB,KAAK,IAAI;AAAA,MAChC,WAAW;AAAA,MACX,cAAc;AAAA,MACd,UAAU,sBAAsB;AAAA,IACpC,CAAC;AAAA,EACL;AAAA,EACA,QAAQ;AACJ,WAAO,IAAI,WAAW;AAAA,MAClB,UAAU,sBAAsB;AAAA,MAChC,MAAM;AAAA,MACN,GAAG,oBAAoB,KAAK,IAAI;AAAA,IACpC,CAAC;AAAA,EACL;AAAA,EACA,MAAM,KAAK;AACP,UAAM,iBAAiB,OAAO,QAAQ,aAAa,MAAM,MAAM;AAC/D,WAAO,IAAI,SAAS;AAAA,MAChB,GAAG,oBAAoB,KAAK,IAAI;AAAA,MAChC,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,UAAU,sBAAsB;AAAA,IACpC,CAAC;AAAA,EACL;AAAA,EACA,SAAS,aAAa;AAClB,UAAM,OAAO,KAAK;AAClB,WAAO,IAAI,KAAK;AAAA,MACZ,GAAG,KAAK;AAAA,MACR;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,KAAK,QAAQ;AACT,WAAO,YAAY,OAAO,MAAM,MAAM;AAAA,EAC1C;AAAA,EACA,WAAW;AACP,WAAO,YAAY,OAAO,IAAI;AAAA,EAClC;AAAA,EACA,aAAa;AACT,WAAO,KAAK,UAAU,MAAS,EAAE;AAAA,EACrC;AAAA,EACA,aAAa;AACT,WAAO,KAAK,UAAU,IAAI,EAAE;AAAA,EAChC;AACJ;AACA,IAAM,YAAY;AAClB,IAAM,aAAa;AACnB,IAAM,YAAY;AAGlB,IAAM,YAAY;AAClB,IAAM,cAAc;AACpB,IAAM,WAAW;AACjB,IAAM,gBAAgB;AAatB,IAAM,aAAa;AAInB,IAAM,cAAc;AACpB,IAAI;AAEJ,IAAM,YAAY;AAClB,IAAM,gBAAgB;AAGtB,IAAM,YAAY;AAClB,IAAM,gBAAgB;AAEtB,IAAM,cAAc;AAEpB,IAAM,iBAAiB;AAMvB,IAAM,kBAAkB;AACxB,IAAM,YAAY,IAAI,OAAO,IAAI,eAAe,GAAG;AACnD,SAAS,gBAAgB,MAAM;AAC3B,MAAI,qBAAqB;AACzB,MAAI,KAAK,WAAW;AAChB,yBAAqB,GAAG,kBAAkB,UAAU,KAAK,SAAS;AAAA,EACtE,WACS,KAAK,aAAa,MAAM;AAC7B,yBAAqB,GAAG,kBAAkB;AAAA,EAC9C;AACA,QAAM,oBAAoB,KAAK,YAAY,MAAM;AACjD,SAAO,8BAA8B,kBAAkB,IAAI,iBAAiB;AAChF;AACA,SAAS,UAAU,MAAM;AACrB,SAAO,IAAI,OAAO,IAAI,gBAAgB,IAAI,CAAC,GAAG;AAClD;AAEO,SAAS,cAAc,MAAM;AAChC,MAAI,QAAQ,GAAG,eAAe,IAAI,gBAAgB,IAAI,CAAC;AACvD,QAAM,OAAO,CAAC;AACd,OAAK,KAAK,KAAK,QAAQ,OAAO,GAAG;AACjC,MAAI,KAAK;AACL,SAAK,KAAK,sBAAsB;AACpC,UAAQ,GAAG,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAClC,SAAO,IAAI,OAAO,IAAI,KAAK,GAAG;AAClC;AACA,SAAS,UAAU,IAAI,SAAS;AAC5B,OAAK,YAAY,QAAQ,CAAC,YAAY,UAAU,KAAK,EAAE,GAAG;AACtD,WAAO;AAAA,EACX;AACA,OAAK,YAAY,QAAQ,CAAC,YAAY,UAAU,KAAK,EAAE,GAAG;AACtD,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACA,SAAS,WAAW,KAAK,KAAK;AAC1B,MAAI,CAAC,SAAS,KAAK,GAAG;AAClB,WAAO;AACX,MAAI;AACA,UAAM,CAAC,MAAM,IAAI,IAAI,MAAM,GAAG;AAC9B,QAAI,CAAC;AACD,aAAO;AAEX,UAAM,SAAS,OACV,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG,EACjB,OAAO,OAAO,UAAW,IAAK,OAAO,SAAS,KAAM,GAAI,GAAG;AAChE,UAAM,UAAU,KAAK,MAAM,KAAK,MAAM,CAAC;AACvC,QAAI,OAAO,YAAY,YAAY,YAAY;AAC3C,aAAO;AACX,QAAI,SAAS,WAAW,SAAS,QAAQ;AACrC,aAAO;AACX,QAAI,CAAC,QAAQ;AACT,aAAO;AACX,QAAI,OAAO,QAAQ,QAAQ;AACvB,aAAO;AACX,WAAO;AAAA,EACX,QACM;AACF,WAAO;AAAA,EACX;AACJ;AACA,SAAS,YAAY,IAAI,SAAS;AAC9B,OAAK,YAAY,QAAQ,CAAC,YAAY,cAAc,KAAK,EAAE,GAAG;AAC1D,WAAO;AAAA,EACX;AACA,OAAK,YAAY,QAAQ,CAAC,YAAY,cAAc,KAAK,EAAE,GAAG;AAC1D,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACO,IAAM,YAAN,MAAM,mBAAkB,QAAQ;AAAA,EACnC,OAAO,OAAO;AACV,QAAI,KAAK,KAAK,QAAQ;AAClB,YAAM,OAAO,OAAO,MAAM,IAAI;AAAA,IAClC;AACA,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,QAAQ;AACrC,YAAMC,OAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkBA,MAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAUA,KAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,SAAS,IAAI,YAAY;AAC/B,QAAI,MAAM;AACV,eAAW,SAAS,KAAK,KAAK,QAAQ;AAClC,UAAI,MAAM,SAAS,OAAO;AACtB,YAAI,MAAM,KAAK,SAAS,MAAM,OAAO;AACjC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,YACf,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA,YACP,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,OAAO;AAC3B,YAAI,MAAM,KAAK,SAAS,MAAM,OAAO;AACjC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,YACf,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA,YACP,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,UAAU;AAC9B,cAAM,SAAS,MAAM,KAAK,SAAS,MAAM;AACzC,cAAM,WAAW,MAAM,KAAK,SAAS,MAAM;AAC3C,YAAI,UAAU,UAAU;AACpB,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,cAAI,QAAQ;AACR,8BAAkB,KAAK;AAAA,cACnB,MAAM,aAAa;AAAA,cACnB,SAAS,MAAM;AAAA,cACf,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP,SAAS,MAAM;AAAA,YACnB,CAAC;AAAA,UACL,WACS,UAAU;AACf,8BAAkB,KAAK;AAAA,cACnB,MAAM,aAAa;AAAA,cACnB,SAAS,MAAM;AAAA,cACf,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO;AAAA,cACP,SAAS,MAAM;AAAA,YACnB,CAAC;AAAA,UACL;AACA,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,SAAS;AAC7B,YAAI,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG;AAC9B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,SAAS;AAC7B,YAAI,CAAC,YAAY;AACb,uBAAa,IAAI,OAAO,aAAa,GAAG;AAAA,QAC5C;AACA,YAAI,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG;AAC9B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,QAAQ;AAC5B,YAAI,CAAC,UAAU,KAAK,MAAM,IAAI,GAAG;AAC7B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,UAAU;AAC9B,YAAI,CAAC,YAAY,KAAK,MAAM,IAAI,GAAG;AAC/B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,QAAQ;AAC5B,YAAI,CAAC,UAAU,KAAK,MAAM,IAAI,GAAG;AAC7B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,SAAS;AAC7B,YAAI,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG;AAC9B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,QAAQ;AAC5B,YAAI,CAAC,UAAU,KAAK,MAAM,IAAI,GAAG;AAC7B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,OAAO;AAC3B,YAAI;AACA,cAAI,IAAI,MAAM,IAAI;AAAA,QACtB,QACM;AACF,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,SAAS;AAC7B,cAAM,MAAM,YAAY;AACxB,cAAM,aAAa,MAAM,MAAM,KAAK,MAAM,IAAI;AAC9C,YAAI,CAAC,YAAY;AACb,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,QAAQ;AAC5B,cAAM,OAAO,MAAM,KAAK,KAAK;AAAA,MACjC,WACS,MAAM,SAAS,YAAY;AAChC,YAAI,CAAC,MAAM,KAAK,SAAS,MAAM,OAAO,MAAM,QAAQ,GAAG;AACnD,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY,EAAE,UAAU,MAAM,OAAO,UAAU,MAAM,SAAS;AAAA,YAC9D,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,eAAe;AACnC,cAAM,OAAO,MAAM,KAAK,YAAY;AAAA,MACxC,WACS,MAAM,SAAS,eAAe;AACnC,cAAM,OAAO,MAAM,KAAK,YAAY;AAAA,MACxC,WACS,MAAM,SAAS,cAAc;AAClC,YAAI,CAAC,MAAM,KAAK,WAAW,MAAM,KAAK,GAAG;AACrC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY,EAAE,YAAY,MAAM,MAAM;AAAA,YACtC,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,YAAY;AAChC,YAAI,CAAC,MAAM,KAAK,SAAS,MAAM,KAAK,GAAG;AACnC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY,EAAE,UAAU,MAAM,MAAM;AAAA,YACpC,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,YAAY;AAChC,cAAM,QAAQ,cAAc,KAAK;AACjC,YAAI,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG;AACzB,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY;AAAA,YACZ,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,QAAQ;AAC5B,cAAM,QAAQ;AACd,YAAI,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG;AACzB,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY;AAAA,YACZ,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,QAAQ;AAC5B,cAAM,QAAQ,UAAU,KAAK;AAC7B,YAAI,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG;AACzB,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY;AAAA,YACZ,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,YAAY;AAChC,YAAI,CAAC,cAAc,KAAK,MAAM,IAAI,GAAG;AACjC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,MAAM;AAC1B,YAAI,CAAC,UAAU,MAAM,MAAM,MAAM,OAAO,GAAG;AACvC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,OAAO;AAC3B,YAAI,CAAC,WAAW,MAAM,MAAM,MAAM,GAAG,GAAG;AACpC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,QAAQ;AAC5B,YAAI,CAAC,YAAY,MAAM,MAAM,MAAM,OAAO,GAAG;AACzC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,UAAU;AAC9B,YAAI,CAAC,YAAY,KAAK,MAAM,IAAI,GAAG;AAC/B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,aAAa;AACjC,YAAI,CAAC,eAAe,KAAK,MAAM,IAAI,GAAG;AAClC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,YAAY;AAAA,YACZ,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,OACK;AACD,aAAK,YAAY,KAAK;AAAA,MAC1B;AAAA,IACJ;AACA,WAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,MAAM,KAAK;AAAA,EACrD;AAAA,EACA,OAAO,OAAO,YAAY,SAAS;AAC/B,WAAO,KAAK,WAAW,CAAC,SAAS,MAAM,KAAK,IAAI,GAAG;AAAA,MAC/C;AAAA,MACA,MAAM,aAAa;AAAA,MACnB,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA,EACA,UAAU,OAAO;AACb,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,KAAK;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,MAAM,SAAS;AACX,WAAO,KAAK,UAAU,EAAE,MAAM,SAAS,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC3E;AAAA,EACA,IAAI,SAAS;AACT,WAAO,KAAK,UAAU,EAAE,MAAM,OAAO,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EACzE;AAAA,EACA,MAAM,SAAS;AACX,WAAO,KAAK,UAAU,EAAE,MAAM,SAAS,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC3E;AAAA,EACA,KAAK,SAAS;AACV,WAAO,KAAK,UAAU,EAAE,MAAM,QAAQ,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC1E;AAAA,EACA,OAAO,SAAS;AACZ,WAAO,KAAK,UAAU,EAAE,MAAM,UAAU,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC5E;AAAA,EACA,KAAK,SAAS;AACV,WAAO,KAAK,UAAU,EAAE,MAAM,QAAQ,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC1E;AAAA,EACA,MAAM,SAAS;AACX,WAAO,KAAK,UAAU,EAAE,MAAM,SAAS,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC3E;AAAA,EACA,KAAK,SAAS;AACV,WAAO,KAAK,UAAU,EAAE,MAAM,QAAQ,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC1E;AAAA,EACA,OAAO,SAAS;AACZ,WAAO,KAAK,UAAU,EAAE,MAAM,UAAU,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC5E;AAAA,EACA,UAAU,SAAS;AAEf,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,SAAS;AACT,WAAO,KAAK,UAAU,EAAE,MAAM,OAAO,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EACzE;AAAA,EACA,GAAG,SAAS;AACR,WAAO,KAAK,UAAU,EAAE,MAAM,MAAM,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EACxE;AAAA,EACA,KAAK,SAAS;AACV,WAAO,KAAK,UAAU,EAAE,MAAM,QAAQ,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC1E;AAAA,EACA,SAAS,SAAS;AACd,QAAI,OAAO,YAAY,UAAU;AAC7B,aAAO,KAAK,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,MACb,CAAC;AAAA,IACL;AACA,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,WAAW,OAAO,SAAS,cAAc,cAAc,OAAO,SAAS;AAAA,MACvE,QAAQ,SAAS,UAAU;AAAA,MAC3B,OAAO,SAAS,SAAS;AAAA,MACzB,GAAG,UAAU,SAAS,SAAS,OAAO;AAAA,IAC1C,CAAC;AAAA,EACL;AAAA,EACA,KAAK,SAAS;AACV,WAAO,KAAK,UAAU,EAAE,MAAM,QAAQ,QAAQ,CAAC;AAAA,EACnD;AAAA,EACA,KAAK,SAAS;AACV,QAAI,OAAO,YAAY,UAAU;AAC7B,aAAO,KAAK,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SAAS;AAAA,MACb,CAAC;AAAA,IACL;AACA,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,WAAW,OAAO,SAAS,cAAc,cAAc,OAAO,SAAS;AAAA,MACvE,GAAG,UAAU,SAAS,SAAS,OAAO;AAAA,IAC1C,CAAC;AAAA,EACL;AAAA,EACA,SAAS,SAAS;AACd,WAAO,KAAK,UAAU,EAAE,MAAM,YAAY,GAAG,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,EAC9E;AAAA,EACA,MAAM,OAAO,SAAS;AAClB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN;AAAA,MACA,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA,EACA,SAAS,OAAO,SAAS;AACrB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN;AAAA,MACA,UAAU,SAAS;AAAA,MACnB,GAAG,UAAU,SAAS,SAAS,OAAO;AAAA,IAC1C,CAAC;AAAA,EACL;AAAA,EACA,WAAW,OAAO,SAAS;AACvB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN;AAAA,MACA,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA,EACA,SAAS,OAAO,SAAS;AACrB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN;AAAA,MACA,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,WAAW,SAAS;AACpB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,WAAW,SAAS;AACpB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA,EACA,OAAO,KAAK,SAAS;AACjB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,GAAG,UAAU,SAAS,OAAO;AAAA,IACjC,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,SAAS;AACd,WAAO,KAAK,IAAI,GAAG,UAAU,SAAS,OAAO,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AACH,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AAAA,IAClD,CAAC;AAAA,EACL;AAAA,EACA,cAAc;AACV,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAAA,IACzD,CAAC;AAAA,EACL;AAAA,EACA,cAAc;AACV,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAAA,IACzD,CAAC;AAAA,EACL;AAAA,EACA,IAAI,aAAa;AACb,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,UAAU;AAAA,EACjE;AAAA,EACA,IAAI,SAAS;AACT,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,MAAM;AAAA,EAC7D;AAAA,EACA,IAAI,SAAS;AACT,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,MAAM;AAAA,EAC7D;AAAA,EACA,IAAI,aAAa;AACb,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,UAAU;AAAA,EACjE;AAAA,EACA,IAAI,UAAU;AACV,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,OAAO;AAAA,EAC9D;AAAA,EACA,IAAI,QAAQ;AACR,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,KAAK;AAAA,EAC5D;AAAA,EACA,IAAI,UAAU;AACV,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,OAAO;AAAA,EAC9D;AAAA,EACA,IAAI,SAAS;AACT,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,MAAM;AAAA,EAC7D;AAAA,EACA,IAAI,WAAW;AACX,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,QAAQ;AAAA,EAC/D;AAAA,EACA,IAAI,SAAS;AACT,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,MAAM;AAAA,EAC7D;AAAA,EACA,IAAI,UAAU;AACV,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,OAAO;AAAA,EAC9D;AAAA,EACA,IAAI,SAAS;AACT,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,MAAM;AAAA,EAC7D;AAAA,EACA,IAAI,OAAO;AACP,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,IAAI;AAAA,EAC3D;AAAA,EACA,IAAI,SAAS;AACT,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,MAAM;AAAA,EAC7D;AAAA,EACA,IAAI,WAAW;AACX,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,QAAQ;AAAA,EAC/D;AAAA,EACA,IAAI,cAAc;AAEd,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,WAAW;AAAA,EAClE;AAAA,EACA,IAAI,YAAY;AACZ,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,YAAY;AACZ,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AACA,UAAU,SAAS,CAAC,WAAW;AAC3B,SAAO,IAAI,UAAU;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,UAAU,sBAAsB;AAAA,IAChC,QAAQ,QAAQ,UAAU;AAAA,IAC1B,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AAEA,SAAS,mBAAmB,KAAK,MAAM;AACnC,QAAM,eAAe,IAAI,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI;AACzD,QAAM,gBAAgB,KAAK,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI;AAC3D,QAAM,WAAW,cAAc,eAAe,cAAc;AAC5D,QAAM,SAAS,OAAO,SAAS,IAAI,QAAQ,QAAQ,EAAE,QAAQ,KAAK,EAAE,CAAC;AACrE,QAAM,UAAU,OAAO,SAAS,KAAK,QAAQ,QAAQ,EAAE,QAAQ,KAAK,EAAE,CAAC;AACvE,SAAQ,SAAS,UAAW,MAAM;AACtC;AACO,IAAM,YAAN,MAAM,mBAAkB,QAAQ;AAAA,EACnC,cAAc;AACV,UAAM,GAAG,SAAS;AAClB,SAAK,MAAM,KAAK;AAChB,SAAK,MAAM,KAAK;AAChB,SAAK,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,OAAO,OAAO;AACV,QAAI,KAAK,KAAK,QAAQ;AAClB,YAAM,OAAO,OAAO,MAAM,IAAI;AAAA,IAClC;AACA,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,QAAQ;AACrC,YAAMA,OAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkBA,MAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAUA,KAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,MAAM;AACV,UAAM,SAAS,IAAI,YAAY;AAC/B,eAAW,SAAS,KAAK,KAAK,QAAQ;AAClC,UAAI,MAAM,SAAS,OAAO;AACtB,YAAI,CAAC,KAAK,UAAU,MAAM,IAAI,GAAG;AAC7B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,UAAU;AAAA,YACV,UAAU;AAAA,YACV,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,OAAO;AAC3B,cAAM,WAAW,MAAM,YAAY,MAAM,OAAO,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAClF,YAAI,UAAU;AACV,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,YACf,MAAM;AAAA,YACN,WAAW,MAAM;AAAA,YACjB,OAAO;AAAA,YACP,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,OAAO;AAC3B,cAAM,SAAS,MAAM,YAAY,MAAM,OAAO,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAChF,YAAI,QAAQ;AACR,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,YACf,MAAM;AAAA,YACN,WAAW,MAAM;AAAA,YACjB,OAAO;AAAA,YACP,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,cAAc;AAClC,YAAI,mBAAmB,MAAM,MAAM,MAAM,KAAK,MAAM,GAAG;AACnD,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,UAAU;AAC9B,YAAI,CAAC,OAAO,SAAS,MAAM,IAAI,GAAG;AAC9B,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,OACK;AACD,aAAK,YAAY,KAAK;AAAA,MAC1B;AAAA,IACJ;AACA,WAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,MAAM,KAAK;AAAA,EACrD;AAAA,EACA,IAAI,OAAO,SAAS;AAChB,WAAO,KAAK,SAAS,OAAO,OAAO,MAAM,UAAU,SAAS,OAAO,CAAC;AAAA,EACxE;AAAA,EACA,GAAG,OAAO,SAAS;AACf,WAAO,KAAK,SAAS,OAAO,OAAO,OAAO,UAAU,SAAS,OAAO,CAAC;AAAA,EACzE;AAAA,EACA,IAAI,OAAO,SAAS;AAChB,WAAO,KAAK,SAAS,OAAO,OAAO,MAAM,UAAU,SAAS,OAAO,CAAC;AAAA,EACxE;AAAA,EACA,GAAG,OAAO,SAAS;AACf,WAAO,KAAK,SAAS,OAAO,OAAO,OAAO,UAAU,SAAS,OAAO,CAAC;AAAA,EACzE;AAAA,EACA,SAAS,MAAM,OAAO,WAAW,SAAS;AACtC,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ;AAAA,QACJ,GAAG,KAAK,KAAK;AAAA,QACb;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,UAAU,SAAS,OAAO;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,UAAU,OAAO;AACb,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,KAAK;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,SAAS;AACT,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,SAAS,SAAS;AACd,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,SAAS,SAAS;AACd,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,YAAY,SAAS;AACjB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,YAAY,SAAS;AACjB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,WAAW,OAAO,SAAS;AACvB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN;AAAA,MACA,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,OAAO,SAAS;AACZ,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,KAAK,SAAS;AACV,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,OAAO;AAAA,MACd,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC,EAAE,UAAU;AAAA,MACT,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,OAAO;AAAA,MACd,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,WAAW;AACX,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,WAAW;AACX,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,QAAQ;AACR,WAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,CAAC,OAAO,GAAG,SAAS,SAAU,GAAG,SAAS,gBAAgB,KAAK,UAAU,GAAG,KAAK,CAAE;AAAA,EACtH;AAAA,EACA,IAAI,WAAW;AACX,QAAI,MAAM;AACV,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,YAAY,GAAG,SAAS,SAAS,GAAG,SAAS,cAAc;AACvE,eAAO;AAAA,MACX,WACS,GAAG,SAAS,OAAO;AACxB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB,WACS,GAAG,SAAS,OAAO;AACxB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO,OAAO,SAAS,GAAG,KAAK,OAAO,SAAS,GAAG;AAAA,EACtD;AACJ;AACA,UAAU,SAAS,CAAC,WAAW;AAC3B,SAAO,IAAI,UAAU;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,UAAU,sBAAsB;AAAA,IAChC,QAAQ,QAAQ,UAAU;AAAA,IAC1B,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,YAAN,MAAM,mBAAkB,QAAQ;AAAA,EACnC,cAAc;AACV,UAAM,GAAG,SAAS;AAClB,SAAK,MAAM,KAAK;AAChB,SAAK,MAAM,KAAK;AAAA,EACpB;AAAA,EACA,OAAO,OAAO;AACV,QAAI,KAAK,KAAK,QAAQ;AAClB,UAAI;AACA,cAAM,OAAO,OAAO,MAAM,IAAI;AAAA,MAClC,QACM;AACF,eAAO,KAAK,iBAAiB,KAAK;AAAA,MACtC;AAAA,IACJ;AACA,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,QAAQ;AACrC,aAAO,KAAK,iBAAiB,KAAK;AAAA,IACtC;AACA,QAAI,MAAM;AACV,UAAM,SAAS,IAAI,YAAY;AAC/B,eAAW,SAAS,KAAK,KAAK,QAAQ;AAClC,UAAI,MAAM,SAAS,OAAO;AACtB,cAAM,WAAW,MAAM,YAAY,MAAM,OAAO,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAClF,YAAI,UAAU;AACV,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,MAAM;AAAA,YACN,SAAS,MAAM;AAAA,YACf,WAAW,MAAM;AAAA,YACjB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,OAAO;AAC3B,cAAM,SAAS,MAAM,YAAY,MAAM,OAAO,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAChF,YAAI,QAAQ;AACR,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,MAAM;AAAA,YACN,SAAS,MAAM;AAAA,YACf,WAAW,MAAM;AAAA,YACjB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,cAAc;AAClC,YAAI,MAAM,OAAO,MAAM,UAAU,OAAO,CAAC,GAAG;AACxC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,SAAS,MAAM;AAAA,UACnB,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,OACK;AACD,aAAK,YAAY,KAAK;AAAA,MAC1B;AAAA,IACJ;AACA,WAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,MAAM,KAAK;AAAA,EACrD;AAAA,EACA,iBAAiB,OAAO;AACpB,UAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,sBAAkB,KAAK;AAAA,MACnB,MAAM,aAAa;AAAA,MACnB,UAAU,cAAc;AAAA,MACxB,UAAU,IAAI;AAAA,IAClB,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO,SAAS;AAChB,WAAO,KAAK,SAAS,OAAO,OAAO,MAAM,UAAU,SAAS,OAAO,CAAC;AAAA,EACxE;AAAA,EACA,GAAG,OAAO,SAAS;AACf,WAAO,KAAK,SAAS,OAAO,OAAO,OAAO,UAAU,SAAS,OAAO,CAAC;AAAA,EACzE;AAAA,EACA,IAAI,OAAO,SAAS;AAChB,WAAO,KAAK,SAAS,OAAO,OAAO,MAAM,UAAU,SAAS,OAAO,CAAC;AAAA,EACxE;AAAA,EACA,GAAG,OAAO,SAAS;AACf,WAAO,KAAK,SAAS,OAAO,OAAO,OAAO,UAAU,SAAS,OAAO,CAAC;AAAA,EACzE;AAAA,EACA,SAAS,MAAM,OAAO,WAAW,SAAS;AACtC,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ;AAAA,QACJ,GAAG,KAAK,KAAK;AAAA,QACb;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,UAAU,SAAS,OAAO;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,UAAU,OAAO;AACb,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,KAAK;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,SAAS,SAAS;AACd,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,OAAO,CAAC;AAAA,MACf,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,SAAS,SAAS;AACd,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,OAAO,CAAC;AAAA,MACf,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,YAAY,SAAS;AACjB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,OAAO,CAAC;AAAA,MACf,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,YAAY,SAAS;AACjB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,OAAO,CAAC;AAAA,MACf,WAAW;AAAA,MACX,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,WAAW,OAAO,SAAS;AACvB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN;AAAA,MACA,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,WAAW;AACX,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,WAAW;AACX,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AACA,UAAU,SAAS,CAAC,WAAW;AAC3B,SAAO,IAAI,UAAU;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,UAAU,sBAAsB;AAAA,IAChC,QAAQ,QAAQ,UAAU;AAAA,IAC1B,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,aAAN,cAAyB,QAAQ;AAAA,EACpC,OAAO,OAAO;AACV,QAAI,KAAK,KAAK,QAAQ;AAClB,YAAM,OAAO,QAAQ,MAAM,IAAI;AAAA,IACnC;AACA,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,SAAS;AACtC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AACJ;AACA,WAAW,SAAS,CAAC,WAAW;AAC5B,SAAO,IAAI,WAAW;AAAA,IAClB,UAAU,sBAAsB;AAAA,IAChC,QAAQ,QAAQ,UAAU;AAAA,IAC1B,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,UAAN,MAAM,iBAAgB,QAAQ;AAAA,EACjC,OAAO,OAAO;AACV,QAAI,KAAK,KAAK,QAAQ;AAClB,YAAM,OAAO,IAAI,KAAK,MAAM,IAAI;AAAA,IACpC;AACA,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,MAAM;AACnC,YAAMA,OAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkBA,MAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAUA,KAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,OAAO,MAAM,MAAM,KAAK,QAAQ,CAAC,GAAG;AACpC,YAAMA,OAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkBA,MAAK;AAAA,QACnB,MAAM,aAAa;AAAA,MACvB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,SAAS,IAAI,YAAY;AAC/B,QAAI,MAAM;AACV,eAAW,SAAS,KAAK,KAAK,QAAQ;AAClC,UAAI,MAAM,SAAS,OAAO;AACtB,YAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,OAAO;AACpC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,YACf,WAAW;AAAA,YACX,OAAO;AAAA,YACP,SAAS,MAAM;AAAA,YACf,MAAM;AAAA,UACV,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,MAAM,SAAS,OAAO;AAC3B,YAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,OAAO;AACpC,gBAAM,KAAK,gBAAgB,OAAO,GAAG;AACrC,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,SAAS,MAAM;AAAA,YACf,WAAW;AAAA,YACX,OAAO;AAAA,YACP,SAAS,MAAM;AAAA,YACf,MAAM;AAAA,UACV,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,OACK;AACD,aAAK,YAAY,KAAK;AAAA,MAC1B;AAAA,IACJ;AACA,WAAO;AAAA,MACH,QAAQ,OAAO;AAAA,MACf,OAAO,IAAI,KAAK,MAAM,KAAK,QAAQ,CAAC;AAAA,IACxC;AAAA,EACJ;AAAA,EACA,UAAU,OAAO;AACb,WAAO,IAAI,SAAQ;AAAA,MACf,GAAG,KAAK;AAAA,MACR,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,KAAK;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,SAAS,SAAS;AAClB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,QAAQ,QAAQ;AAAA,MACvB,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,SAAS,SAAS;AAClB,WAAO,KAAK,UAAU;AAAA,MAClB,MAAM;AAAA,MACN,OAAO,QAAQ,QAAQ;AAAA,MACvB,SAAS,UAAU,SAAS,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EACA,IAAI,UAAU;AACV,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO,OAAO,OAAO,IAAI,KAAK,GAAG,IAAI;AAAA,EACzC;AAAA,EACA,IAAI,UAAU;AACV,QAAI,MAAM;AACV,eAAW,MAAM,KAAK,KAAK,QAAQ;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,YAAI,QAAQ,QAAQ,GAAG,QAAQ;AAC3B,gBAAM,GAAG;AAAA,MACjB;AAAA,IACJ;AACA,WAAO,OAAO,OAAO,IAAI,KAAK,GAAG,IAAI;AAAA,EACzC;AACJ;AACA,QAAQ,SAAS,CAAC,WAAW;AACzB,SAAO,IAAI,QAAQ;AAAA,IACf,QAAQ,CAAC;AAAA,IACT,QAAQ,QAAQ,UAAU;AAAA,IAC1B,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,YAAN,cAAwB,QAAQ;AAAA,EACnC,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,QAAQ;AACrC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AACJ;AACA,UAAU,SAAS,CAAC,WAAW;AAC3B,SAAO,IAAI,UAAU;AAAA,IACjB,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,eAAN,cAA2B,QAAQ;AAAA,EACtC,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,WAAW;AACxC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AACJ;AACA,aAAa,SAAS,CAAC,WAAW;AAC9B,SAAO,IAAI,aAAa;AAAA,IACpB,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,UAAN,cAAsB,QAAQ;AAAA,EACjC,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,MAAM;AACnC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AACJ;AACA,QAAQ,SAAS,CAAC,WAAW;AACzB,SAAO,IAAI,QAAQ;AAAA,IACf,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,SAAN,cAAqB,QAAQ;AAAA,EAChC,cAAc;AACV,UAAM,GAAG,SAAS;AAElB,SAAK,OAAO;AAAA,EAChB;AAAA,EACA,OAAO,OAAO;AACV,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AACJ;AACA,OAAO,SAAS,CAAC,WAAW;AACxB,SAAO,IAAI,OAAO;AAAA,IACd,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,aAAN,cAAyB,QAAQ;AAAA,EACpC,cAAc;AACV,UAAM,GAAG,SAAS;AAElB,SAAK,WAAW;AAAA,EACpB;AAAA,EACA,OAAO,OAAO;AACV,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AACJ;AACA,WAAW,SAAS,CAAC,WAAW;AAC5B,SAAO,IAAI,WAAW;AAAA,IAClB,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,WAAN,cAAuB,QAAQ;AAAA,EAClC,OAAO,OAAO;AACV,UAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,sBAAkB,KAAK;AAAA,MACnB,MAAM,aAAa;AAAA,MACnB,UAAU,cAAc;AAAA,MACxB,UAAU,IAAI;AAAA,IAClB,CAAC;AACD,WAAO;AAAA,EACX;AACJ;AACA,SAAS,SAAS,CAAC,WAAW;AAC1B,SAAO,IAAI,SAAS;AAAA,IAChB,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,UAAN,cAAsB,QAAQ;AAAA,EACjC,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,WAAW;AACxC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AACJ;AACA,QAAQ,SAAS,CAAC,WAAW;AACzB,SAAO,IAAI,QAAQ;AAAA,IACf,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,WAAN,MAAM,kBAAiB,QAAQ;AAAA,EAClC,OAAO,OAAO;AACV,UAAM,EAAE,KAAK,OAAO,IAAI,KAAK,oBAAoB,KAAK;AACtD,UAAM,MAAM,KAAK;AACjB,QAAI,IAAI,eAAe,cAAc,OAAO;AACxC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,IAAI,gBAAgB,MAAM;AAC1B,YAAM,SAAS,IAAI,KAAK,SAAS,IAAI,YAAY;AACjD,YAAM,WAAW,IAAI,KAAK,SAAS,IAAI,YAAY;AACnD,UAAI,UAAU,UAAU;AACpB,0BAAkB,KAAK;AAAA,UACnB,MAAM,SAAS,aAAa,UAAU,aAAa;AAAA,UACnD,SAAU,WAAW,IAAI,YAAY,QAAQ;AAAA,UAC7C,SAAU,SAAS,IAAI,YAAY,QAAQ;AAAA,UAC3C,MAAM;AAAA,UACN,WAAW;AAAA,UACX,OAAO;AAAA,UACP,SAAS,IAAI,YAAY;AAAA,QAC7B,CAAC;AACD,eAAO,MAAM;AAAA,MACjB;AAAA,IACJ;AACA,QAAI,IAAI,cAAc,MAAM;AACxB,UAAI,IAAI,KAAK,SAAS,IAAI,UAAU,OAAO;AACvC,0BAAkB,KAAK;AAAA,UACnB,MAAM,aAAa;AAAA,UACnB,SAAS,IAAI,UAAU;AAAA,UACvB,MAAM;AAAA,UACN,WAAW;AAAA,UACX,OAAO;AAAA,UACP,SAAS,IAAI,UAAU;AAAA,QAC3B,CAAC;AACD,eAAO,MAAM;AAAA,MACjB;AAAA,IACJ;AACA,QAAI,IAAI,cAAc,MAAM;AACxB,UAAI,IAAI,KAAK,SAAS,IAAI,UAAU,OAAO;AACvC,0BAAkB,KAAK;AAAA,UACnB,MAAM,aAAa;AAAA,UACnB,SAAS,IAAI,UAAU;AAAA,UACvB,MAAM;AAAA,UACN,WAAW;AAAA,UACX,OAAO;AAAA,UACP,SAAS,IAAI,UAAU;AAAA,QAC3B,CAAC;AACD,eAAO,MAAM;AAAA,MACjB;AAAA,IACJ;AACA,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,MAAM;AAC9C,eAAO,IAAI,KAAK,YAAY,IAAI,mBAAmB,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC;AAAA,MAC9E,CAAC,CAAC,EAAE,KAAK,CAACC,YAAW;AACjB,eAAO,YAAY,WAAW,QAAQA,OAAM;AAAA,MAChD,CAAC;AAAA,IACL;AACA,UAAM,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,MAAM;AAC1C,aAAO,IAAI,KAAK,WAAW,IAAI,mBAAmB,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC;AAAA,IAC7E,CAAC;AACD,WAAO,YAAY,WAAW,QAAQ,MAAM;AAAA,EAChD;AAAA,EACA,IAAI,UAAU;AACV,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,WAAW,SAAS;AACpB,WAAO,IAAI,UAAS;AAAA,MAChB,GAAG,KAAK;AAAA,MACR,WAAW,EAAE,OAAO,WAAW,SAAS,UAAU,SAAS,OAAO,EAAE;AAAA,IACxE,CAAC;AAAA,EACL;AAAA,EACA,IAAI,WAAW,SAAS;AACpB,WAAO,IAAI,UAAS;AAAA,MAChB,GAAG,KAAK;AAAA,MACR,WAAW,EAAE,OAAO,WAAW,SAAS,UAAU,SAAS,OAAO,EAAE;AAAA,IACxE,CAAC;AAAA,EACL;AAAA,EACA,OAAO,KAAK,SAAS;AACjB,WAAO,IAAI,UAAS;AAAA,MAChB,GAAG,KAAK;AAAA,MACR,aAAa,EAAE,OAAO,KAAK,SAAS,UAAU,SAAS,OAAO,EAAE;AAAA,IACpE,CAAC;AAAA,EACL;AAAA,EACA,SAAS,SAAS;AACd,WAAO,KAAK,IAAI,GAAG,OAAO;AAAA,EAC9B;AACJ;AACA,SAAS,SAAS,CAAC,QAAQ,WAAW;AAClC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,WAAW;AAAA,IACX,WAAW;AAAA,IACX,aAAa;AAAA,IACb,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACA,SAAS,eAAe,QAAQ;AAC5B,MAAI,kBAAkB,WAAW;AAC7B,UAAM,WAAW,CAAC;AAClB,eAAW,OAAO,OAAO,OAAO;AAC5B,YAAM,cAAc,OAAO,MAAM,GAAG;AACpC,eAAS,GAAG,IAAI,YAAY,OAAO,eAAe,WAAW,CAAC;AAAA,IAClE;AACA,WAAO,IAAI,UAAU;AAAA,MACjB,GAAG,OAAO;AAAA,MACV,OAAO,MAAM;AAAA,IACjB,CAAC;AAAA,EACL,WACS,kBAAkB,UAAU;AACjC,WAAO,IAAI,SAAS;AAAA,MAChB,GAAG,OAAO;AAAA,MACV,MAAM,eAAe,OAAO,OAAO;AAAA,IACvC,CAAC;AAAA,EACL,WACS,kBAAkB,aAAa;AACpC,WAAO,YAAY,OAAO,eAAe,OAAO,OAAO,CAAC,CAAC;AAAA,EAC7D,WACS,kBAAkB,aAAa;AACpC,WAAO,YAAY,OAAO,eAAe,OAAO,OAAO,CAAC,CAAC;AAAA,EAC7D,WACS,kBAAkB,UAAU;AACjC,WAAO,SAAS,OAAO,OAAO,MAAM,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC,CAAC;AAAA,EAC3E,OACK;AACD,WAAO;AAAA,EACX;AACJ;AACO,IAAM,YAAN,MAAM,mBAAkB,QAAQ;AAAA,EACnC,cAAc;AACV,UAAM,GAAG,SAAS;AAClB,SAAK,UAAU;AAKf,SAAK,YAAY,KAAK;AAqCtB,SAAK,UAAU,KAAK;AAAA,EACxB;AAAA,EACA,aAAa;AACT,QAAI,KAAK,YAAY;AACjB,aAAO,KAAK;AAChB,UAAM,QAAQ,KAAK,KAAK,MAAM;AAC9B,UAAM,OAAO,KAAK,WAAW,KAAK;AAClC,SAAK,UAAU,EAAE,OAAO,KAAK;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,QAAQ;AACrC,YAAMD,OAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkBA,MAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAUA,KAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,UAAM,EAAE,OAAO,MAAM,UAAU,IAAI,KAAK,WAAW;AACnD,UAAM,YAAY,CAAC;AACnB,QAAI,EAAE,KAAK,KAAK,oBAAoB,YAAY,KAAK,KAAK,gBAAgB,UAAU;AAChF,iBAAW,OAAO,IAAI,MAAM;AACxB,YAAI,CAAC,UAAU,SAAS,GAAG,GAAG;AAC1B,oBAAU,KAAK,GAAG;AAAA,QACtB;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,QAAQ,CAAC;AACf,eAAW,OAAO,WAAW;AACzB,YAAM,eAAe,MAAM,GAAG;AAC9B,YAAM,QAAQ,IAAI,KAAK,GAAG;AAC1B,YAAM,KAAK;AAAA,QACP,KAAK,EAAE,QAAQ,SAAS,OAAO,IAAI;AAAA,QACnC,OAAO,aAAa,OAAO,IAAI,mBAAmB,KAAK,OAAO,IAAI,MAAM,GAAG,CAAC;AAAA,QAC5E,WAAW,OAAO,IAAI;AAAA,MAC1B,CAAC;AAAA,IACL;AACA,QAAI,KAAK,KAAK,oBAAoB,UAAU;AACxC,YAAM,cAAc,KAAK,KAAK;AAC9B,UAAI,gBAAgB,eAAe;AAC/B,mBAAW,OAAO,WAAW;AACzB,gBAAM,KAAK;AAAA,YACP,KAAK,EAAE,QAAQ,SAAS,OAAO,IAAI;AAAA,YACnC,OAAO,EAAE,QAAQ,SAAS,OAAO,IAAI,KAAK,GAAG,EAAE;AAAA,UACnD,CAAC;AAAA,QACL;AAAA,MACJ,WACS,gBAAgB,UAAU;AAC/B,YAAI,UAAU,SAAS,GAAG;AACtB,4BAAkB,KAAK;AAAA,YACnB,MAAM,aAAa;AAAA,YACnB,MAAM;AAAA,UACV,CAAC;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ,WACS,gBAAgB,SAAS;AAAA,MAClC,OACK;AACD,cAAM,IAAI,MAAM,sDAAsD;AAAA,MAC1E;AAAA,IACJ,OACK;AAED,YAAM,WAAW,KAAK,KAAK;AAC3B,iBAAW,OAAO,WAAW;AACzB,cAAM,QAAQ,IAAI,KAAK,GAAG;AAC1B,cAAM,KAAK;AAAA,UACP,KAAK,EAAE,QAAQ,SAAS,OAAO,IAAI;AAAA,UACnC,OAAO,SAAS;AAAA,YAAO,IAAI,mBAAmB,KAAK,OAAO,IAAI,MAAM,GAAG;AAAA;AAAA,UACvE;AAAA,UACA,WAAW,OAAO,IAAI;AAAA,QAC1B,CAAC;AAAA,MACL;AAAA,IACJ;AACA,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,QAAQ,QAAQ,EAClB,KAAK,YAAY;AAClB,cAAM,YAAY,CAAC;AACnB,mBAAW,QAAQ,OAAO;AACtB,gBAAM,MAAM,MAAM,KAAK;AACvB,gBAAM,QAAQ,MAAM,KAAK;AACzB,oBAAU,KAAK;AAAA,YACX;AAAA,YACA;AAAA,YACA,WAAW,KAAK;AAAA,UACpB,CAAC;AAAA,QACL;AACA,eAAO;AAAA,MACX,CAAC,EACI,KAAK,CAAC,cAAc;AACrB,eAAO,YAAY,gBAAgB,QAAQ,SAAS;AAAA,MACxD,CAAC;AAAA,IACL,OACK;AACD,aAAO,YAAY,gBAAgB,QAAQ,KAAK;AAAA,IACpD;AAAA,EACJ;AAAA,EACA,IAAI,QAAQ;AACR,WAAO,KAAK,KAAK,MAAM;AAAA,EAC3B;AAAA,EACA,OAAO,SAAS;AACZ,cAAU;AACV,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,aAAa;AAAA,MACb,GAAI,YAAY,SACV;AAAA,QACE,UAAU,CAAC,OAAO,QAAQ;AACtB,gBAAM,eAAe,KAAK,KAAK,WAAW,OAAO,GAAG,EAAE,WAAW,IAAI;AACrE,cAAI,MAAM,SAAS;AACf,mBAAO;AAAA,cACH,SAAS,UAAU,SAAS,OAAO,EAAE,WAAW;AAAA,YACpD;AACJ,iBAAO;AAAA,YACH,SAAS;AAAA,UACb;AAAA,QACJ;AAAA,MACJ,IACE,CAAC;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EACA,QAAQ;AACJ,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,aAAa;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EACA,cAAc;AACV,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,aAAa;AAAA,IACjB,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,OAAO,cAAc;AACjB,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,OAAO,OAAO;AAAA,QACV,GAAG,KAAK,KAAK,MAAM;AAAA,QACnB,GAAG;AAAA,MACP;AAAA,IACJ,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAS;AACX,UAAM,SAAS,IAAI,WAAU;AAAA,MACzB,aAAa,QAAQ,KAAK;AAAA,MAC1B,UAAU,QAAQ,KAAK;AAAA,MACvB,OAAO,OAAO;AAAA,QACV,GAAG,KAAK,KAAK,MAAM;AAAA,QACnB,GAAG,QAAQ,KAAK,MAAM;AAAA,MAC1B;AAAA,MACA,UAAU,sBAAsB;AAAA,IACpC,CAAC;AACD,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoCA,OAAO,KAAK,QAAQ;AAChB,WAAO,KAAK,QAAQ,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,SAAS,OAAO;AACZ,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,UAAU;AAAA,IACd,CAAC;AAAA,EACL;AAAA,EACA,KAAK,MAAM;AACP,UAAM,QAAQ,CAAC;AACf,eAAW,OAAO,KAAK,WAAW,IAAI,GAAG;AACrC,UAAI,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG,GAAG;AAC9B,cAAM,GAAG,IAAI,KAAK,MAAM,GAAG;AAAA,MAC/B;AAAA,IACJ;AACA,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,OAAO,MAAM;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EACA,KAAK,MAAM;AACP,UAAM,QAAQ,CAAC;AACf,eAAW,OAAO,KAAK,WAAW,KAAK,KAAK,GAAG;AAC3C,UAAI,CAAC,KAAK,GAAG,GAAG;AACZ,cAAM,GAAG,IAAI,KAAK,MAAM,GAAG;AAAA,MAC/B;AAAA,IACJ;AACA,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,OAAO,MAAM;AAAA,IACjB,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc;AACV,WAAO,eAAe,IAAI;AAAA,EAC9B;AAAA,EACA,QAAQ,MAAM;AACV,UAAM,WAAW,CAAC;AAClB,eAAW,OAAO,KAAK,WAAW,KAAK,KAAK,GAAG;AAC3C,YAAM,cAAc,KAAK,MAAM,GAAG;AAClC,UAAI,QAAQ,CAAC,KAAK,GAAG,GAAG;AACpB,iBAAS,GAAG,IAAI;AAAA,MACpB,OACK;AACD,iBAAS,GAAG,IAAI,YAAY,SAAS;AAAA,MACzC;AAAA,IACJ;AACA,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,OAAO,MAAM;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EACA,SAAS,MAAM;AACX,UAAM,WAAW,CAAC;AAClB,eAAW,OAAO,KAAK,WAAW,KAAK,KAAK,GAAG;AAC3C,UAAI,QAAQ,CAAC,KAAK,GAAG,GAAG;AACpB,iBAAS,GAAG,IAAI,KAAK,MAAM,GAAG;AAAA,MAClC,OACK;AACD,cAAM,cAAc,KAAK,MAAM,GAAG;AAClC,YAAI,WAAW;AACf,eAAO,oBAAoB,aAAa;AACpC,qBAAW,SAAS,KAAK;AAAA,QAC7B;AACA,iBAAS,GAAG,IAAI;AAAA,MACpB;AAAA,IACJ;AACA,WAAO,IAAI,WAAU;AAAA,MACjB,GAAG,KAAK;AAAA,MACR,OAAO,MAAM;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EACA,QAAQ;AACJ,WAAO,cAAc,KAAK,WAAW,KAAK,KAAK,CAAC;AAAA,EACpD;AACJ;AACA,UAAU,SAAS,CAAC,OAAO,WAAW;AAClC,SAAO,IAAI,UAAU;AAAA,IACjB,OAAO,MAAM;AAAA,IACb,aAAa;AAAA,IACb,UAAU,SAAS,OAAO;AAAA,IAC1B,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACA,UAAU,eAAe,CAAC,OAAO,WAAW;AACxC,SAAO,IAAI,UAAU;AAAA,IACjB,OAAO,MAAM;AAAA,IACb,aAAa;AAAA,IACb,UAAU,SAAS,OAAO;AAAA,IAC1B,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACA,UAAU,aAAa,CAAC,OAAO,WAAW;AACtC,SAAO,IAAI,UAAU;AAAA,IACjB;AAAA,IACA,aAAa;AAAA,IACb,UAAU,SAAS,OAAO;AAAA,IAC1B,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,WAAN,cAAuB,QAAQ;AAAA,EAClC,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAC9C,UAAM,UAAU,KAAK,KAAK;AAC1B,aAAS,cAAc,SAAS;AAE5B,iBAAW,UAAU,SAAS;AAC1B,YAAI,OAAO,OAAO,WAAW,SAAS;AAClC,iBAAO,OAAO;AAAA,QAClB;AAAA,MACJ;AACA,iBAAW,UAAU,SAAS;AAC1B,YAAI,OAAO,OAAO,WAAW,SAAS;AAElC,cAAI,OAAO,OAAO,KAAK,GAAG,OAAO,IAAI,OAAO,MAAM;AAClD,iBAAO,OAAO;AAAA,QAClB;AAAA,MACJ;AAEA,YAAM,cAAc,QAAQ,IAAI,CAAC,WAAW,IAAI,SAAS,OAAO,IAAI,OAAO,MAAM,CAAC;AAClF,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,QAAQ,IAAI,QAAQ,IAAI,OAAO,WAAW;AAC7C,cAAM,WAAW;AAAA,UACb,GAAG;AAAA,UACH,QAAQ;AAAA,YACJ,GAAG,IAAI;AAAA,YACP,QAAQ,CAAC;AAAA,UACb;AAAA,UACA,QAAQ;AAAA,QACZ;AACA,eAAO;AAAA,UACH,QAAQ,MAAM,OAAO,YAAY;AAAA,YAC7B,MAAM,IAAI;AAAA,YACV,MAAM,IAAI;AAAA,YACV,QAAQ;AAAA,UACZ,CAAC;AAAA,UACD,KAAK;AAAA,QACT;AAAA,MACJ,CAAC,CAAC,EAAE,KAAK,aAAa;AAAA,IAC1B,OACK;AACD,UAAI,QAAQ;AACZ,YAAM,SAAS,CAAC;AAChB,iBAAW,UAAU,SAAS;AAC1B,cAAM,WAAW;AAAA,UACb,GAAG;AAAA,UACH,QAAQ;AAAA,YACJ,GAAG,IAAI;AAAA,YACP,QAAQ,CAAC;AAAA,UACb;AAAA,UACA,QAAQ;AAAA,QACZ;AACA,cAAM,SAAS,OAAO,WAAW;AAAA,UAC7B,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AACD,YAAI,OAAO,WAAW,SAAS;AAC3B,iBAAO;AAAA,QACX,WACS,OAAO,WAAW,WAAW,CAAC,OAAO;AAC1C,kBAAQ,EAAE,QAAQ,KAAK,SAAS;AAAA,QACpC;AACA,YAAI,SAAS,OAAO,OAAO,QAAQ;AAC/B,iBAAO,KAAK,SAAS,OAAO,MAAM;AAAA,QACtC;AAAA,MACJ;AACA,UAAI,OAAO;AACP,YAAI,OAAO,OAAO,KAAK,GAAG,MAAM,IAAI,OAAO,MAAM;AACjD,eAAO,MAAM;AAAA,MACjB;AACA,YAAM,cAAc,OAAO,IAAI,CAACE,YAAW,IAAI,SAASA,OAAM,CAAC;AAC/D,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,IAAI,UAAU;AACV,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,SAAS,SAAS,CAAC,OAAO,WAAW;AACjC,SAAO,IAAI,SAAS;AAAA,IAChB,SAAS;AAAA,IACT,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AAQA,IAAM,mBAAmB,CAAC,SAAS;AAC/B,MAAI,gBAAgB,SAAS;AACzB,WAAO,iBAAiB,KAAK,MAAM;AAAA,EACvC,WACS,gBAAgB,YAAY;AACjC,WAAO,iBAAiB,KAAK,UAAU,CAAC;AAAA,EAC5C,WACS,gBAAgB,YAAY;AACjC,WAAO,CAAC,KAAK,KAAK;AAAA,EACtB,WACS,gBAAgB,SAAS;AAC9B,WAAO,KAAK;AAAA,EAChB,WACS,gBAAgB,eAAe;AAEpC,WAAO,KAAK,aAAa,KAAK,IAAI;AAAA,EACtC,WACS,gBAAgB,YAAY;AACjC,WAAO,iBAAiB,KAAK,KAAK,SAAS;AAAA,EAC/C,WACS,gBAAgB,cAAc;AACnC,WAAO,CAAC,MAAS;AAAA,EACrB,WACS,gBAAgB,SAAS;AAC9B,WAAO,CAAC,IAAI;AAAA,EAChB,WACS,gBAAgB,aAAa;AAClC,WAAO,CAAC,QAAW,GAAG,iBAAiB,KAAK,OAAO,CAAC,CAAC;AAAA,EACzD,WACS,gBAAgB,aAAa;AAClC,WAAO,CAAC,MAAM,GAAG,iBAAiB,KAAK,OAAO,CAAC,CAAC;AAAA,EACpD,WACS,gBAAgB,YAAY;AACjC,WAAO,iBAAiB,KAAK,OAAO,CAAC;AAAA,EACzC,WACS,gBAAgB,aAAa;AAClC,WAAO,iBAAiB,KAAK,OAAO,CAAC;AAAA,EACzC,WACS,gBAAgB,UAAU;AAC/B,WAAO,iBAAiB,KAAK,KAAK,SAAS;AAAA,EAC/C,OACK;AACD,WAAO,CAAC;AAAA,EACZ;AACJ;AACO,IAAM,wBAAN,MAAM,+BAA8B,QAAQ;AAAA,EAC/C,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAC9C,QAAI,IAAI,eAAe,cAAc,QAAQ;AACzC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,gBAAgB,KAAK;AAC3B,UAAM,qBAAqB,IAAI,KAAK,aAAa;AACjD,UAAM,SAAS,KAAK,WAAW,IAAI,kBAAkB;AACrD,QAAI,CAAC,QAAQ;AACT,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,SAAS,MAAM,KAAK,KAAK,WAAW,KAAK,CAAC;AAAA,QAC1C,MAAM,CAAC,aAAa;AAAA,MACxB,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,OAAO,YAAY;AAAA,QACtB,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL,OACK;AACD,aAAO,OAAO,WAAW;AAAA,QACrB,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EACA,IAAI,gBAAgB;AAChB,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,UAAU;AACV,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,aAAa;AACb,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,OAAO,eAAe,SAAS,QAAQ;AAE1C,UAAM,aAAa,oBAAI,IAAI;AAE3B,eAAW,QAAQ,SAAS;AACxB,YAAM,sBAAsB,iBAAiB,KAAK,MAAM,aAAa,CAAC;AACtE,UAAI,CAAC,oBAAoB,QAAQ;AAC7B,cAAM,IAAI,MAAM,mCAAmC,aAAa,mDAAmD;AAAA,MACvH;AACA,iBAAW,SAAS,qBAAqB;AACrC,YAAI,WAAW,IAAI,KAAK,GAAG;AACvB,gBAAM,IAAI,MAAM,0BAA0B,OAAO,aAAa,CAAC,wBAAwB,OAAO,KAAK,CAAC,EAAE;AAAA,QAC1G;AACA,mBAAW,IAAI,OAAO,IAAI;AAAA,MAC9B;AAAA,IACJ;AACA,WAAO,IAAI,uBAAsB;AAAA,MAC7B,UAAU,sBAAsB;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG,oBAAoB,MAAM;AAAA,IACjC,CAAC;AAAA,EACL;AACJ;AACA,SAAS,YAAY,GAAG,GAAG;AACvB,QAAM,QAAQ,cAAc,CAAC;AAC7B,QAAM,QAAQ,cAAc,CAAC;AAC7B,MAAI,MAAM,GAAG;AACT,WAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC,WACS,UAAU,cAAc,UAAU,UAAU,cAAc,QAAQ;AACvE,UAAM,QAAQ,KAAK,WAAW,CAAC;AAC/B,UAAM,aAAa,KAAK,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,MAAM,QAAQ,GAAG,MAAM,EAAE;AAC/E,UAAM,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE;AAC5B,eAAW,OAAO,YAAY;AAC1B,YAAM,cAAc,YAAY,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC;AAC9C,UAAI,CAAC,YAAY,OAAO;AACpB,eAAO,EAAE,OAAO,MAAM;AAAA,MAC1B;AACA,aAAO,GAAG,IAAI,YAAY;AAAA,IAC9B;AACA,WAAO,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,EACvC,WACS,UAAU,cAAc,SAAS,UAAU,cAAc,OAAO;AACrE,QAAI,EAAE,WAAW,EAAE,QAAQ;AACvB,aAAO,EAAE,OAAO,MAAM;AAAA,IAC1B;AACA,UAAM,WAAW,CAAC;AAClB,aAAS,QAAQ,GAAG,QAAQ,EAAE,QAAQ,SAAS;AAC3C,YAAM,QAAQ,EAAE,KAAK;AACrB,YAAM,QAAQ,EAAE,KAAK;AACrB,YAAM,cAAc,YAAY,OAAO,KAAK;AAC5C,UAAI,CAAC,YAAY,OAAO;AACpB,eAAO,EAAE,OAAO,MAAM;AAAA,MAC1B;AACA,eAAS,KAAK,YAAY,IAAI;AAAA,IAClC;AACA,WAAO,EAAE,OAAO,MAAM,MAAM,SAAS;AAAA,EACzC,WACS,UAAU,cAAc,QAAQ,UAAU,cAAc,QAAQ,CAAC,MAAM,CAAC,GAAG;AAChF,WAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC,OACK;AACD,WAAO,EAAE,OAAO,MAAM;AAAA,EAC1B;AACJ;AACO,IAAM,kBAAN,cAA8B,QAAQ;AAAA,EACzC,OAAO,OAAO;AACV,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,UAAM,eAAe,CAAC,YAAY,gBAAgB;AAC9C,UAAI,UAAU,UAAU,KAAK,UAAU,WAAW,GAAG;AACjD,eAAO;AAAA,MACX;AACA,YAAM,SAAS,YAAY,WAAW,OAAO,YAAY,KAAK;AAC9D,UAAI,CAAC,OAAO,OAAO;AACf,0BAAkB,KAAK;AAAA,UACnB,MAAM,aAAa;AAAA,QACvB,CAAC;AACD,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,UAAU,KAAK,QAAQ,WAAW,GAAG;AAC7C,eAAO,MAAM;AAAA,MACjB;AACA,aAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACtD;AACA,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,QAAQ,IAAI;AAAA,QACf,KAAK,KAAK,KAAK,YAAY;AAAA,UACvB,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AAAA,QACD,KAAK,KAAK,MAAM,YAAY;AAAA,UACxB,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,aAAa,MAAM,KAAK,CAAC;AAAA,IACxD,OACK;AACD,aAAO,aAAa,KAAK,KAAK,KAAK,WAAW;AAAA,QAC1C,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,QAAQ;AAAA,MACZ,CAAC,GAAG,KAAK,KAAK,MAAM,WAAW;AAAA,QAC3B,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,QAAQ;AAAA,MACZ,CAAC,CAAC;AAAA,IACN;AAAA,EACJ;AACJ;AACA,gBAAgB,SAAS,CAAC,MAAM,OAAO,WAAW;AAC9C,SAAO,IAAI,gBAAgB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AAEO,IAAM,WAAN,MAAM,kBAAiB,QAAQ;AAAA,EAClC,OAAO,OAAO;AACV,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,QAAI,IAAI,eAAe,cAAc,OAAO;AACxC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,IAAI,KAAK,SAAS,KAAK,KAAK,MAAM,QAAQ;AAC1C,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,SAAS,KAAK,KAAK,MAAM;AAAA,QACzB,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,OAAO,KAAK,KAAK;AACvB,QAAI,CAAC,QAAQ,IAAI,KAAK,SAAS,KAAK,KAAK,MAAM,QAAQ;AACnD,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,SAAS,KAAK,KAAK,MAAM;AAAA,QACzB,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM;AAAA,MACV,CAAC;AACD,aAAO,MAAM;AAAA,IACjB;AACA,UAAM,QAAQ,CAAC,GAAG,IAAI,IAAI,EACrB,IAAI,CAAC,MAAM,cAAc;AAC1B,YAAM,SAAS,KAAK,KAAK,MAAM,SAAS,KAAK,KAAK,KAAK;AACvD,UAAI,CAAC;AACD,eAAO;AACX,aAAO,OAAO,OAAO,IAAI,mBAAmB,KAAK,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,IAC/E,CAAC,EACI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,CAAC,YAAY;AACxC,eAAO,YAAY,WAAW,QAAQ,OAAO;AAAA,MACjD,CAAC;AAAA,IACL,OACK;AACD,aAAO,YAAY,WAAW,QAAQ,KAAK;AAAA,IAC/C;AAAA,EACJ;AAAA,EACA,IAAI,QAAQ;AACR,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,KAAK,MAAM;AACP,WAAO,IAAI,UAAS;AAAA,MAChB,GAAG,KAAK;AAAA,MACR;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AACA,SAAS,SAAS,CAAC,SAAS,WAAW;AACnC,MAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACzB,UAAM,IAAI,MAAM,uDAAuD;AAAA,EAC3E;AACA,SAAO,IAAI,SAAS;AAAA,IAChB,OAAO;AAAA,IACP,UAAU,sBAAsB;AAAA,IAChC,MAAM;AAAA,IACN,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,YAAN,MAAM,mBAAkB,QAAQ;AAAA,EACnC,IAAI,YAAY;AACZ,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,cAAc;AACd,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,OAAO,OAAO;AACV,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,QAAI,IAAI,eAAe,cAAc,QAAQ;AACzC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,QAAQ,CAAC;AACf,UAAM,UAAU,KAAK,KAAK;AAC1B,UAAM,YAAY,KAAK,KAAK;AAC5B,eAAW,OAAO,IAAI,MAAM;AACxB,YAAM,KAAK;AAAA,QACP,KAAK,QAAQ,OAAO,IAAI,mBAAmB,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC;AAAA,QACnE,OAAO,UAAU,OAAO,IAAI,mBAAmB,KAAK,IAAI,KAAK,GAAG,GAAG,IAAI,MAAM,GAAG,CAAC;AAAA,QACjF,WAAW,OAAO,IAAI;AAAA,MAC1B,CAAC;AAAA,IACL;AACA,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,YAAY,iBAAiB,QAAQ,KAAK;AAAA,IACrD,OACK;AACD,aAAO,YAAY,gBAAgB,QAAQ,KAAK;AAAA,IACpD;AAAA,EACJ;AAAA,EACA,IAAI,UAAU;AACV,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,OAAO,OAAO,OAAO,QAAQ,OAAO;AAChC,QAAI,kBAAkB,SAAS;AAC3B,aAAO,IAAI,WAAU;AAAA,QACjB,SAAS;AAAA,QACT,WAAW;AAAA,QACX,UAAU,sBAAsB;AAAA,QAChC,GAAG,oBAAoB,KAAK;AAAA,MAChC,CAAC;AAAA,IACL;AACA,WAAO,IAAI,WAAU;AAAA,MACjB,SAAS,UAAU,OAAO;AAAA,MAC1B,WAAW;AAAA,MACX,UAAU,sBAAsB;AAAA,MAChC,GAAG,oBAAoB,MAAM;AAAA,IACjC,CAAC;AAAA,EACL;AACJ;AACO,IAAM,SAAN,cAAqB,QAAQ;AAAA,EAChC,IAAI,YAAY;AACZ,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,cAAc;AACd,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,OAAO,OAAO;AACV,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,QAAI,IAAI,eAAe,cAAc,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,UAAU,KAAK,KAAK;AAC1B,UAAM,YAAY,KAAK,KAAK;AAC5B,UAAM,QAAQ,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,UAAU;AAC/D,aAAO;AAAA,QACH,KAAK,QAAQ,OAAO,IAAI,mBAAmB,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;AAAA,QAC9E,OAAO,UAAU,OAAO,IAAI,mBAAmB,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC;AAAA,MAC1F;AAAA,IACJ,CAAC;AACD,QAAI,IAAI,OAAO,OAAO;AAClB,YAAM,WAAW,oBAAI,IAAI;AACzB,aAAO,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACtC,mBAAW,QAAQ,OAAO;AACtB,gBAAM,MAAM,MAAM,KAAK;AACvB,gBAAM,QAAQ,MAAM,KAAK;AACzB,cAAI,IAAI,WAAW,aAAa,MAAM,WAAW,WAAW;AACxD,mBAAO;AAAA,UACX;AACA,cAAI,IAAI,WAAW,WAAW,MAAM,WAAW,SAAS;AACpD,mBAAO,MAAM;AAAA,UACjB;AACA,mBAAS,IAAI,IAAI,OAAO,MAAM,KAAK;AAAA,QACvC;AACA,eAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAS;AAAA,MACnD,CAAC;AAAA,IACL,OACK;AACD,YAAM,WAAW,oBAAI,IAAI;AACzB,iBAAW,QAAQ,OAAO;AACtB,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,KAAK;AACnB,YAAI,IAAI,WAAW,aAAa,MAAM,WAAW,WAAW;AACxD,iBAAO;AAAA,QACX;AACA,YAAI,IAAI,WAAW,WAAW,MAAM,WAAW,SAAS;AACpD,iBAAO,MAAM;AAAA,QACjB;AACA,iBAAS,IAAI,IAAI,OAAO,MAAM,KAAK;AAAA,MACvC;AACA,aAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAS;AAAA,IACnD;AAAA,EACJ;AACJ;AACA,OAAO,SAAS,CAAC,SAAS,WAAW,WAAW;AAC5C,SAAO,IAAI,OAAO;AAAA,IACd;AAAA,IACA;AAAA,IACA,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,SAAN,MAAM,gBAAe,QAAQ;AAAA,EAChC,OAAO,OAAO;AACV,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,QAAI,IAAI,eAAe,cAAc,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,MAAM,KAAK;AACjB,QAAI,IAAI,YAAY,MAAM;AACtB,UAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,OAAO;AACnC,0BAAkB,KAAK;AAAA,UACnB,MAAM,aAAa;AAAA,UACnB,SAAS,IAAI,QAAQ;AAAA,UACrB,MAAM;AAAA,UACN,WAAW;AAAA,UACX,OAAO;AAAA,UACP,SAAS,IAAI,QAAQ;AAAA,QACzB,CAAC;AACD,eAAO,MAAM;AAAA,MACjB;AAAA,IACJ;AACA,QAAI,IAAI,YAAY,MAAM;AACtB,UAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,OAAO;AACnC,0BAAkB,KAAK;AAAA,UACnB,MAAM,aAAa;AAAA,UACnB,SAAS,IAAI,QAAQ;AAAA,UACrB,MAAM;AAAA,UACN,WAAW;AAAA,UACX,OAAO;AAAA,UACP,SAAS,IAAI,QAAQ;AAAA,QACzB,CAAC;AACD,eAAO,MAAM;AAAA,MACjB;AAAA,IACJ;AACA,UAAM,YAAY,KAAK,KAAK;AAC5B,aAAS,YAAYC,WAAU;AAC3B,YAAM,YAAY,oBAAI,IAAI;AAC1B,iBAAW,WAAWA,WAAU;AAC5B,YAAI,QAAQ,WAAW;AACnB,iBAAO;AACX,YAAI,QAAQ,WAAW;AACnB,iBAAO,MAAM;AACjB,kBAAU,IAAI,QAAQ,KAAK;AAAA,MAC/B;AACA,aAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AAAA,IACpD;AACA,UAAM,WAAW,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,MAAM,UAAU,OAAO,IAAI,mBAAmB,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;AACzH,QAAI,IAAI,OAAO,OAAO;AAClB,aAAO,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAACA,cAAa,YAAYA,SAAQ,CAAC;AAAA,IACzE,OACK;AACD,aAAO,YAAY,QAAQ;AAAA,IAC/B;AAAA,EACJ;AAAA,EACA,IAAI,SAAS,SAAS;AAClB,WAAO,IAAI,QAAO;AAAA,MACd,GAAG,KAAK;AAAA,MACR,SAAS,EAAE,OAAO,SAAS,SAAS,UAAU,SAAS,OAAO,EAAE;AAAA,IACpE,CAAC;AAAA,EACL;AAAA,EACA,IAAI,SAAS,SAAS;AAClB,WAAO,IAAI,QAAO;AAAA,MACd,GAAG,KAAK;AAAA,MACR,SAAS,EAAE,OAAO,SAAS,SAAS,UAAU,SAAS,OAAO,EAAE;AAAA,IACpE,CAAC;AAAA,EACL;AAAA,EACA,KAAK,MAAM,SAAS;AAChB,WAAO,KAAK,IAAI,MAAM,OAAO,EAAE,IAAI,MAAM,OAAO;AAAA,EACpD;AAAA,EACA,SAAS,SAAS;AACd,WAAO,KAAK,IAAI,GAAG,OAAO;AAAA,EAC9B;AACJ;AACA,OAAO,SAAS,CAAC,WAAW,WAAW;AACnC,SAAO,IAAI,OAAO;AAAA,IACd;AAAA,IACA,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,cAAN,MAAM,qBAAoB,QAAQ;AAAA,EACrC,cAAc;AACV,UAAM,GAAG,SAAS;AAClB,SAAK,WAAW,KAAK;AAAA,EACzB;AAAA,EACA,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAC9C,QAAI,IAAI,eAAe,cAAc,UAAU;AAC3C,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,aAAS,cAAc,MAAM,OAAO;AAChC,aAAO,UAAU;AAAA,QACb,MAAM;AAAA,QACN,MAAM,IAAI;AAAA,QACV,WAAW,CAAC,IAAI,OAAO,oBAAoB,IAAI,gBAAgB,YAAY,GAAG,UAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,QAChH,WAAW;AAAA,UACP,MAAM,aAAa;AAAA,UACnB,gBAAgB;AAAA,QACpB;AAAA,MACJ,CAAC;AAAA,IACL;AACA,aAAS,iBAAiB,SAAS,OAAO;AACtC,aAAO,UAAU;AAAA,QACb,MAAM;AAAA,QACN,MAAM,IAAI;AAAA,QACV,WAAW,CAAC,IAAI,OAAO,oBAAoB,IAAI,gBAAgB,YAAY,GAAG,UAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,QAChH,WAAW;AAAA,UACP,MAAM,aAAa;AAAA,UACnB,iBAAiB;AAAA,QACrB;AAAA,MACJ,CAAC;AAAA,IACL;AACA,UAAM,SAAS,EAAE,UAAU,IAAI,OAAO,mBAAmB;AACzD,UAAM,KAAK,IAAI;AACf,QAAI,KAAK,KAAK,mBAAmB,YAAY;AAIzC,YAAM,KAAK;AACX,aAAO,GAAG,kBAAmB,MAAM;AAC/B,cAAM,QAAQ,IAAI,SAAS,CAAC,CAAC;AAC7B,cAAM,aAAa,MAAM,GAAG,KAAK,KAAK,WAAW,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AACxE,gBAAM,SAAS,cAAc,MAAM,CAAC,CAAC;AACrC,gBAAM;AAAA,QACV,CAAC;AACD,cAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,MAAM,UAAU;AACvD,cAAM,gBAAgB,MAAM,GAAG,KAAK,QAAQ,KAAK,KAC5C,WAAW,QAAQ,MAAM,EACzB,MAAM,CAAC,MAAM;AACd,gBAAM,SAAS,iBAAiB,QAAQ,CAAC,CAAC;AAC1C,gBAAM;AAAA,QACV,CAAC;AACD,eAAO;AAAA,MACX,CAAC;AAAA,IACL,OACK;AAID,YAAM,KAAK;AACX,aAAO,GAAG,YAAa,MAAM;AACzB,cAAM,aAAa,GAAG,KAAK,KAAK,UAAU,MAAM,MAAM;AACtD,YAAI,CAAC,WAAW,SAAS;AACrB,gBAAM,IAAI,SAAS,CAAC,cAAc,MAAM,WAAW,KAAK,CAAC,CAAC;AAAA,QAC9D;AACA,cAAM,SAAS,QAAQ,MAAM,IAAI,MAAM,WAAW,IAAI;AACtD,cAAM,gBAAgB,GAAG,KAAK,QAAQ,UAAU,QAAQ,MAAM;AAC9D,YAAI,CAAC,cAAc,SAAS;AACxB,gBAAM,IAAI,SAAS,CAAC,iBAAiB,QAAQ,cAAc,KAAK,CAAC,CAAC;AAAA,QACtE;AACA,eAAO,cAAc;AAAA,MACzB,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EACA,aAAa;AACT,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,aAAa;AACT,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,QAAQ,OAAO;AACX,WAAO,IAAI,aAAY;AAAA,MACnB,GAAG,KAAK;AAAA,MACR,MAAM,SAAS,OAAO,KAAK,EAAE,KAAK,WAAW,OAAO,CAAC;AAAA,IACzD,CAAC;AAAA,EACL;AAAA,EACA,QAAQ,YAAY;AAChB,WAAO,IAAI,aAAY;AAAA,MACnB,GAAG,KAAK;AAAA,MACR,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AAAA,EACA,UAAU,MAAM;AACZ,UAAM,gBAAgB,KAAK,MAAM,IAAI;AACrC,WAAO;AAAA,EACX;AAAA,EACA,gBAAgB,MAAM;AAClB,UAAM,gBAAgB,KAAK,MAAM,IAAI;AACrC,WAAO;AAAA,EACX;AAAA,EACA,OAAO,OAAO,MAAM,SAAS,QAAQ;AACjC,WAAO,IAAI,aAAY;AAAA,MACnB,MAAO,OAAO,OAAO,SAAS,OAAO,CAAC,CAAC,EAAE,KAAK,WAAW,OAAO,CAAC;AAAA,MACjE,SAAS,WAAW,WAAW,OAAO;AAAA,MACtC,UAAU,sBAAsB;AAAA,MAChC,GAAG,oBAAoB,MAAM;AAAA,IACjC,CAAC;AAAA,EACL;AACJ;AACO,IAAM,UAAN,cAAsB,QAAQ;AAAA,EACjC,IAAI,SAAS;AACT,WAAO,KAAK,KAAK,OAAO;AAAA,EAC5B;AAAA,EACA,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAC9C,UAAM,aAAa,KAAK,KAAK,OAAO;AACpC,WAAO,WAAW,OAAO,EAAE,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,IAAI,CAAC;AAAA,EAC5E;AACJ;AACA,QAAQ,SAAS,CAAC,QAAQ,WAAW;AACjC,SAAO,IAAI,QAAQ;AAAA,IACf;AAAA,IACA,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,aAAN,cAAyB,QAAQ;AAAA,EACpC,OAAO,OAAO;AACV,QAAI,MAAM,SAAS,KAAK,KAAK,OAAO;AAChC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,UAAU,IAAI;AAAA,QACd,MAAM,aAAa;AAAA,QACnB,UAAU,KAAK,KAAK;AAAA,MACxB,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,EAAE,QAAQ,SAAS,OAAO,MAAM,KAAK;AAAA,EAChD;AAAA,EACA,IAAI,QAAQ;AACR,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,WAAW,SAAS,CAAC,OAAO,WAAW;AACnC,SAAO,IAAI,WAAW;AAAA,IAClB;AAAA,IACA,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACA,SAAS,cAAc,QAAQ,QAAQ;AACnC,SAAO,IAAI,QAAQ;AAAA,IACf;AAAA,IACA,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,UAAN,MAAM,iBAAgB,QAAQ;AAAA,EACjC,OAAO,OAAO;AACV,QAAI,OAAO,MAAM,SAAS,UAAU;AAChC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,YAAM,iBAAiB,KAAK,KAAK;AACjC,wBAAkB,KAAK;AAAA,QACnB,UAAU,KAAK,WAAW,cAAc;AAAA,QACxC,UAAU,IAAI;AAAA,QACd,MAAM,aAAa;AAAA,MACvB,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,CAAC,KAAK,QAAQ;AACd,WAAK,SAAS,IAAI,IAAI,KAAK,KAAK,MAAM;AAAA,IAC1C;AACA,QAAI,CAAC,KAAK,OAAO,IAAI,MAAM,IAAI,GAAG;AAC9B,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,YAAM,iBAAiB,KAAK,KAAK;AACjC,wBAAkB,KAAK;AAAA,QACnB,UAAU,IAAI;AAAA,QACd,MAAM,aAAa;AAAA,QACnB,SAAS;AAAA,MACb,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AAAA,EACA,IAAI,UAAU;AACV,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,OAAO;AACP,UAAM,aAAa,CAAC;AACpB,eAAW,OAAO,KAAK,KAAK,QAAQ;AAChC,iBAAW,GAAG,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,SAAS;AACT,UAAM,aAAa,CAAC;AACpB,eAAW,OAAO,KAAK,KAAK,QAAQ;AAChC,iBAAW,GAAG,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACX;AAAA,EACA,IAAI,OAAO;AACP,UAAM,aAAa,CAAC;AACpB,eAAW,OAAO,KAAK,KAAK,QAAQ;AAChC,iBAAW,GAAG,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACX;AAAA,EACA,QAAQ,QAAQ,SAAS,KAAK,MAAM;AAChC,WAAO,SAAQ,OAAO,QAAQ;AAAA,MAC1B,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACP,CAAC;AAAA,EACL;AAAA,EACA,QAAQ,QAAQ,SAAS,KAAK,MAAM;AAChC,WAAO,SAAQ,OAAO,KAAK,QAAQ,OAAO,CAAC,QAAQ,CAAC,OAAO,SAAS,GAAG,CAAC,GAAG;AAAA,MACvE,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACP,CAAC;AAAA,EACL;AACJ;AACA,QAAQ,SAAS;AACV,IAAM,gBAAN,cAA4B,QAAQ;AAAA,EACvC,OAAO,OAAO;AACV,UAAM,mBAAmB,KAAK,mBAAmB,KAAK,KAAK,MAAM;AACjE,UAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,QAAI,IAAI,eAAe,cAAc,UAAU,IAAI,eAAe,cAAc,QAAQ;AACpF,YAAM,iBAAiB,KAAK,aAAa,gBAAgB;AACzD,wBAAkB,KAAK;AAAA,QACnB,UAAU,KAAK,WAAW,cAAc;AAAA,QACxC,UAAU,IAAI;AAAA,QACd,MAAM,aAAa;AAAA,MACvB,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,CAAC,KAAK,QAAQ;AACd,WAAK,SAAS,IAAI,IAAI,KAAK,mBAAmB,KAAK,KAAK,MAAM,CAAC;AAAA,IACnE;AACA,QAAI,CAAC,KAAK,OAAO,IAAI,MAAM,IAAI,GAAG;AAC9B,YAAM,iBAAiB,KAAK,aAAa,gBAAgB;AACzD,wBAAkB,KAAK;AAAA,QACnB,UAAU,IAAI;AAAA,QACd,MAAM,aAAa;AAAA,QACnB,SAAS;AAAA,MACb,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,GAAG,MAAM,IAAI;AAAA,EACxB;AAAA,EACA,IAAI,OAAO;AACP,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,cAAc,SAAS,CAAC,QAAQ,WAAW;AACvC,SAAO,IAAI,cAAc;AAAA,IACrB;AAAA,IACA,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,aAAN,cAAyB,QAAQ;AAAA,EACpC,SAAS;AACL,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAC9C,QAAI,IAAI,eAAe,cAAc,WAAW,IAAI,OAAO,UAAU,OAAO;AACxE,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,cAAc,IAAI,eAAe,cAAc,UAAU,IAAI,OAAO,QAAQ,QAAQ,IAAI,IAAI;AAClG,WAAO,GAAG,YAAY,KAAK,CAAC,SAAS;AACjC,aAAO,KAAK,KAAK,KAAK,WAAW,MAAM;AAAA,QACnC,MAAM,IAAI;AAAA,QACV,UAAU,IAAI,OAAO;AAAA,MACzB,CAAC;AAAA,IACL,CAAC,CAAC;AAAA,EACN;AACJ;AACA,WAAW,SAAS,CAAC,QAAQ,WAAW;AACpC,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,aAAN,cAAyB,QAAQ;AAAA,EACpC,YAAY;AACR,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACA,aAAa;AACT,WAAO,KAAK,KAAK,OAAO,KAAK,aAAa,sBAAsB,aAC1D,KAAK,KAAK,OAAO,WAAW,IAC5B,KAAK,KAAK;AAAA,EACpB;AAAA,EACA,OAAO,OAAO;AACV,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,UAAM,SAAS,KAAK,KAAK,UAAU;AACnC,UAAM,WAAW;AAAA,MACb,UAAU,CAAC,QAAQ;AACf,0BAAkB,KAAK,GAAG;AAC1B,YAAI,IAAI,OAAO;AACX,iBAAO,MAAM;AAAA,QACjB,OACK;AACD,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,IAAI,OAAO;AACP,eAAO,IAAI;AAAA,MACf;AAAA,IACJ;AACA,aAAS,WAAW,SAAS,SAAS,KAAK,QAAQ;AACnD,QAAI,OAAO,SAAS,cAAc;AAC9B,YAAM,YAAY,OAAO,UAAU,IAAI,MAAM,QAAQ;AACrD,UAAI,IAAI,OAAO,OAAO;AAClB,eAAO,QAAQ,QAAQ,SAAS,EAAE,KAAK,OAAOC,eAAc;AACxD,cAAI,OAAO,UAAU;AACjB,mBAAO;AACX,gBAAM,SAAS,MAAM,KAAK,KAAK,OAAO,YAAY;AAAA,YAC9C,MAAMA;AAAA,YACN,MAAM,IAAI;AAAA,YACV,QAAQ;AAAA,UACZ,CAAC;AACD,cAAI,OAAO,WAAW;AAClB,mBAAO;AACX,cAAI,OAAO,WAAW;AAClB,mBAAO,MAAM,OAAO,KAAK;AAC7B,cAAI,OAAO,UAAU;AACjB,mBAAO,MAAM,OAAO,KAAK;AAC7B,iBAAO;AAAA,QACX,CAAC;AAAA,MACL,OACK;AACD,YAAI,OAAO,UAAU;AACjB,iBAAO;AACX,cAAM,SAAS,KAAK,KAAK,OAAO,WAAW;AAAA,UACvC,MAAM;AAAA,UACN,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AACD,YAAI,OAAO,WAAW;AAClB,iBAAO;AACX,YAAI,OAAO,WAAW;AAClB,iBAAO,MAAM,OAAO,KAAK;AAC7B,YAAI,OAAO,UAAU;AACjB,iBAAO,MAAM,OAAO,KAAK;AAC7B,eAAO;AAAA,MACX;AAAA,IACJ;AACA,QAAI,OAAO,SAAS,cAAc;AAC9B,YAAM,oBAAoB,CAAC,QAAQ;AAC/B,cAAM,SAAS,OAAO,WAAW,KAAK,QAAQ;AAC9C,YAAI,IAAI,OAAO,OAAO;AAClB,iBAAO,QAAQ,QAAQ,MAAM;AAAA,QACjC;AACA,YAAI,kBAAkB,SAAS;AAC3B,gBAAM,IAAI,MAAM,2FAA2F;AAAA,QAC/G;AACA,eAAO;AAAA,MACX;AACA,UAAI,IAAI,OAAO,UAAU,OAAO;AAC5B,cAAM,QAAQ,KAAK,KAAK,OAAO,WAAW;AAAA,UACtC,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AACD,YAAI,MAAM,WAAW;AACjB,iBAAO;AACX,YAAI,MAAM,WAAW;AACjB,iBAAO,MAAM;AAEjB,0BAAkB,MAAM,KAAK;AAC7B,eAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,MAAM,MAAM;AAAA,MACtD,OACK;AACD,eAAO,KAAK,KAAK,OAAO,YAAY,EAAE,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU;AACjG,cAAI,MAAM,WAAW;AACjB,mBAAO;AACX,cAAI,MAAM,WAAW;AACjB,mBAAO,MAAM;AACjB,iBAAO,kBAAkB,MAAM,KAAK,EAAE,KAAK,MAAM;AAC7C,mBAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,MAAM,MAAM;AAAA,UACtD,CAAC;AAAA,QACL,CAAC;AAAA,MACL;AAAA,IACJ;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,UAAI,IAAI,OAAO,UAAU,OAAO;AAC5B,cAAM,OAAO,KAAK,KAAK,OAAO,WAAW;AAAA,UACrC,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AACD,YAAI,CAAC,QAAQ,IAAI;AACb,iBAAO;AACX,cAAM,SAAS,OAAO,UAAU,KAAK,OAAO,QAAQ;AACpD,YAAI,kBAAkB,SAAS;AAC3B,gBAAM,IAAI,MAAM,iGAAiG;AAAA,QACrH;AACA,eAAO,EAAE,QAAQ,OAAO,OAAO,OAAO,OAAO;AAAA,MACjD,OACK;AACD,eAAO,KAAK,KAAK,OAAO,YAAY,EAAE,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS;AAChG,cAAI,CAAC,QAAQ,IAAI;AACb,mBAAO;AACX,iBAAO,QAAQ,QAAQ,OAAO,UAAU,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY;AAAA,YAC7E,QAAQ,OAAO;AAAA,YACf,OAAO;AAAA,UACX,EAAE;AAAA,QACN,CAAC;AAAA,MACL;AAAA,IACJ;AACA,SAAK,YAAY,MAAM;AAAA,EAC3B;AACJ;AACA,WAAW,SAAS,CAAC,QAAQ,QAAQ,WAAW;AAC5C,SAAO,IAAI,WAAW;AAAA,IAClB;AAAA,IACA,UAAU,sBAAsB;AAAA,IAChC;AAAA,IACA,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACA,WAAW,uBAAuB,CAAC,YAAY,QAAQ,WAAW;AAC9D,SAAO,IAAI,WAAW;AAAA,IAClB;AAAA,IACA,QAAQ,EAAE,MAAM,cAAc,WAAW,WAAW;AAAA,IACpD,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AAEO,IAAM,cAAN,cAA0B,QAAQ;AAAA,EACrC,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,WAAW;AACxC,aAAO,GAAG,MAAS;AAAA,IACvB;AACA,WAAO,KAAK,KAAK,UAAU,OAAO,KAAK;AAAA,EAC3C;AAAA,EACA,SAAS;AACL,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,YAAY,SAAS,CAAC,MAAM,WAAW;AACnC,SAAO,IAAI,YAAY;AAAA,IACnB,WAAW;AAAA,IACX,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,cAAN,cAA0B,QAAQ;AAAA,EACrC,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,MAAM;AACnC,aAAO,GAAG,IAAI;AAAA,IAClB;AACA,WAAO,KAAK,KAAK,UAAU,OAAO,KAAK;AAAA,EAC3C;AAAA,EACA,SAAS;AACL,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,YAAY,SAAS,CAAC,MAAM,WAAW;AACnC,SAAO,IAAI,YAAY;AAAA,IACnB,WAAW;AAAA,IACX,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,aAAN,cAAyB,QAAQ;AAAA,EACpC,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAC9C,QAAI,OAAO,IAAI;AACf,QAAI,IAAI,eAAe,cAAc,WAAW;AAC5C,aAAO,KAAK,KAAK,aAAa;AAAA,IAClC;AACA,WAAO,KAAK,KAAK,UAAU,OAAO;AAAA,MAC9B;AAAA,MACA,MAAM,IAAI;AAAA,MACV,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AAAA,EACA,gBAAgB;AACZ,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,WAAW,SAAS,CAAC,MAAM,WAAW;AAClC,SAAO,IAAI,WAAW;AAAA,IAClB,WAAW;AAAA,IACX,UAAU,sBAAsB;AAAA,IAChC,cAAc,OAAO,OAAO,YAAY,aAAa,OAAO,UAAU,MAAM,OAAO;AAAA,IACnF,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,WAAN,cAAuB,QAAQ;AAAA,EAClC,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAE9C,UAAM,SAAS;AAAA,MACX,GAAG;AAAA,MACH,QAAQ;AAAA,QACJ,GAAG,IAAI;AAAA,QACP,QAAQ,CAAC;AAAA,MACb;AAAA,IACJ;AACA,UAAM,SAAS,KAAK,KAAK,UAAU,OAAO;AAAA,MACtC,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,QAAQ;AAAA,QACJ,GAAG;AAAA,MACP;AAAA,IACJ,CAAC;AACD,QAAI,QAAQ,MAAM,GAAG;AACjB,aAAO,OAAO,KAAK,CAACC,YAAW;AAC3B,eAAO;AAAA,UACH,QAAQ;AAAA,UACR,OAAOA,QAAO,WAAW,UACnBA,QAAO,QACP,KAAK,KAAK,WAAW;AAAA,YACnB,IAAI,QAAQ;AACR,qBAAO,IAAI,SAAS,OAAO,OAAO,MAAM;AAAA,YAC5C;AAAA,YACA,OAAO,OAAO;AAAA,UAClB,CAAC;AAAA,QACT;AAAA,MACJ,CAAC;AAAA,IACL,OACK;AACD,aAAO;AAAA,QACH,QAAQ;AAAA,QACR,OAAO,OAAO,WAAW,UACnB,OAAO,QACP,KAAK,KAAK,WAAW;AAAA,UACnB,IAAI,QAAQ;AACR,mBAAO,IAAI,SAAS,OAAO,OAAO,MAAM;AAAA,UAC5C;AAAA,UACA,OAAO,OAAO;AAAA,QAClB,CAAC;AAAA,MACT;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,cAAc;AACV,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,SAAS,SAAS,CAAC,MAAM,WAAW;AAChC,SAAO,IAAI,SAAS;AAAA,IAChB,WAAW;AAAA,IACX,UAAU,sBAAsB;AAAA,IAChC,YAAY,OAAO,OAAO,UAAU,aAAa,OAAO,QAAQ,MAAM,OAAO;AAAA,IAC7E,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,SAAN,cAAqB,QAAQ;AAAA,EAChC,OAAO,OAAO;AACV,UAAM,aAAa,KAAK,SAAS,KAAK;AACtC,QAAI,eAAe,cAAc,KAAK;AAClC,YAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,wBAAkB,KAAK;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,UAAU,IAAI;AAAA,MAClB,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO,EAAE,QAAQ,SAAS,OAAO,MAAM,KAAK;AAAA,EAChD;AACJ;AACA,OAAO,SAAS,CAAC,WAAW;AACxB,SAAO,IAAI,OAAO;AAAA,IACd,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AACO,IAAM,QAAQ,OAAO,WAAW;AAChC,IAAM,aAAN,cAAyB,QAAQ;AAAA,EACpC,OAAO,OAAO;AACV,UAAM,EAAE,IAAI,IAAI,KAAK,oBAAoB,KAAK;AAC9C,UAAM,OAAO,IAAI;AACjB,WAAO,KAAK,KAAK,KAAK,OAAO;AAAA,MACzB;AAAA,MACA,MAAM,IAAI;AAAA,MACV,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AACL,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACO,IAAM,cAAN,MAAM,qBAAoB,QAAQ;AAAA,EACrC,OAAO,OAAO;AACV,UAAM,EAAE,QAAQ,IAAI,IAAI,KAAK,oBAAoB,KAAK;AACtD,QAAI,IAAI,OAAO,OAAO;AAClB,YAAM,cAAc,YAAY;AAC5B,cAAM,WAAW,MAAM,KAAK,KAAK,GAAG,YAAY;AAAA,UAC5C,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AACD,YAAI,SAAS,WAAW;AACpB,iBAAO;AACX,YAAI,SAAS,WAAW,SAAS;AAC7B,iBAAO,MAAM;AACb,iBAAO,MAAM,SAAS,KAAK;AAAA,QAC/B,OACK;AACD,iBAAO,KAAK,KAAK,IAAI,YAAY;AAAA,YAC7B,MAAM,SAAS;AAAA,YACf,MAAM,IAAI;AAAA,YACV,QAAQ;AAAA,UACZ,CAAC;AAAA,QACL;AAAA,MACJ;AACA,aAAO,YAAY;AAAA,IACvB,OACK;AACD,YAAM,WAAW,KAAK,KAAK,GAAG,WAAW;AAAA,QACrC,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,QAAQ;AAAA,MACZ,CAAC;AACD,UAAI,SAAS,WAAW;AACpB,eAAO;AACX,UAAI,SAAS,WAAW,SAAS;AAC7B,eAAO,MAAM;AACb,eAAO;AAAA,UACH,QAAQ;AAAA,UACR,OAAO,SAAS;AAAA,QACpB;AAAA,MACJ,OACK;AACD,eAAO,KAAK,KAAK,IAAI,WAAW;AAAA,UAC5B,MAAM,SAAS;AAAA,UACf,MAAM,IAAI;AAAA,UACV,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO,OAAO,GAAG,GAAG;AAChB,WAAO,IAAI,aAAY;AAAA,MACnB,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,UAAU,sBAAsB;AAAA,IACpC,CAAC;AAAA,EACL;AACJ;AACO,IAAM,cAAN,cAA0B,QAAQ;AAAA,EACrC,OAAO,OAAO;AACV,UAAM,SAAS,KAAK,KAAK,UAAU,OAAO,KAAK;AAC/C,UAAM,SAAS,CAAC,SAAS;AACrB,UAAI,QAAQ,IAAI,GAAG;AACf,aAAK,QAAQ,OAAO,OAAO,KAAK,KAAK;AAAA,MACzC;AACA,aAAO;AAAA,IACX;AACA,WAAO,QAAQ,MAAM,IAAI,OAAO,KAAK,CAAC,SAAS,OAAO,IAAI,CAAC,IAAI,OAAO,MAAM;AAAA,EAChF;AAAA,EACA,SAAS;AACL,WAAO,KAAK,KAAK;AAAA,EACrB;AACJ;AACA,YAAY,SAAS,CAAC,MAAM,WAAW;AACnC,SAAO,IAAI,YAAY;AAAA,IACnB,WAAW;AAAA,IACX,UAAU,sBAAsB;AAAA,IAChC,GAAG,oBAAoB,MAAM;AAAA,EACjC,CAAC;AACL;AAQA,SAAS,YAAY,QAAQ,MAAM;AAC/B,QAAM,IAAI,OAAO,WAAW,aAAa,OAAO,IAAI,IAAI,OAAO,WAAW,WAAW,EAAE,SAAS,OAAO,IAAI;AAC3G,QAAM,KAAK,OAAO,MAAM,WAAW,EAAE,SAAS,EAAE,IAAI;AACpD,SAAO;AACX;AACO,SAAS,OAAO,OAAO,UAAU,CAAC,GAWzC,OAAO;AACH,MAAI;AACA,WAAO,OAAO,OAAO,EAAE,YAAY,CAAC,MAAM,QAAQ;AAC9C,YAAM,IAAI,MAAM,IAAI;AACpB,UAAI,aAAa,SAAS;AACtB,eAAO,EAAE,KAAK,CAACC,OAAM;AACjB,cAAI,CAACA,IAAG;AACJ,kBAAM,SAAS,YAAY,SAAS,IAAI;AACxC,kBAAM,SAAS,OAAO,SAAS,SAAS;AACxC,gBAAI,SAAS,EAAE,MAAM,UAAU,GAAG,QAAQ,OAAO,OAAO,CAAC;AAAA,UAC7D;AAAA,QACJ,CAAC;AAAA,MACL;AACA,UAAI,CAAC,GAAG;AACJ,cAAM,SAAS,YAAY,SAAS,IAAI;AACxC,cAAM,SAAS,OAAO,SAAS,SAAS;AACxC,YAAI,SAAS,EAAE,MAAM,UAAU,GAAG,QAAQ,OAAO,OAAO,CAAC;AAAA,MAC7D;AACA;AAAA,IACJ,CAAC;AACL,SAAO,OAAO,OAAO;AACzB;AAEO,IAAM,OAAO;AAAA,EAChB,QAAQ,UAAU;AACtB;AACO,IAAI;AAAA,CACV,SAAUC,wBAAuB;AAC9B,EAAAA,uBAAsB,WAAW,IAAI;AACrC,EAAAA,uBAAsB,WAAW,IAAI;AACrC,EAAAA,uBAAsB,QAAQ,IAAI;AAClC,EAAAA,uBAAsB,WAAW,IAAI;AACrC,EAAAA,uBAAsB,YAAY,IAAI;AACtC,EAAAA,uBAAsB,SAAS,IAAI;AACnC,EAAAA,uBAAsB,WAAW,IAAI;AACrC,EAAAA,uBAAsB,cAAc,IAAI;AACxC,EAAAA,uBAAsB,SAAS,IAAI;AACnC,EAAAA,uBAAsB,QAAQ,IAAI;AAClC,EAAAA,uBAAsB,YAAY,IAAI;AACtC,EAAAA,uBAAsB,UAAU,IAAI;AACpC,EAAAA,uBAAsB,SAAS,IAAI;AACnC,EAAAA,uBAAsB,UAAU,IAAI;AACpC,EAAAA,uBAAsB,WAAW,IAAI;AACrC,EAAAA,uBAAsB,UAAU,IAAI;AACpC,EAAAA,uBAAsB,uBAAuB,IAAI;AACjD,EAAAA,uBAAsB,iBAAiB,IAAI;AAC3C,EAAAA,uBAAsB,UAAU,IAAI;AACpC,EAAAA,uBAAsB,WAAW,IAAI;AACrC,EAAAA,uBAAsB,QAAQ,IAAI;AAClC,EAAAA,uBAAsB,QAAQ,IAAI;AAClC,EAAAA,uBAAsB,aAAa,IAAI;AACvC,EAAAA,uBAAsB,SAAS,IAAI;AACnC,EAAAA,uBAAsB,YAAY,IAAI;AACtC,EAAAA,uBAAsB,SAAS,IAAI;AACnC,EAAAA,uBAAsB,YAAY,IAAI;AACtC,EAAAA,uBAAsB,eAAe,IAAI;AACzC,EAAAA,uBAAsB,aAAa,IAAI;AACvC,EAAAA,uBAAsB,aAAa,IAAI;AACvC,EAAAA,uBAAsB,YAAY,IAAI;AACtC,EAAAA,uBAAsB,UAAU,IAAI;AACpC,EAAAA,uBAAsB,YAAY,IAAI;AACtC,EAAAA,uBAAsB,YAAY,IAAI;AACtC,EAAAA,uBAAsB,aAAa,IAAI;AACvC,EAAAA,uBAAsB,aAAa,IAAI;AAC3C,GAAG,0BAA0B,wBAAwB,CAAC,EAAE;AAKxD,IAAM,iBAAiB,CAEvB,KAAK,SAAS;AAAA,EACV,SAAS,yBAAyB,IAAI,IAAI;AAC9C,MAAM,OAAO,CAAC,SAAS,gBAAgB,KAAK,MAAM;AAClD,IAAM,aAAa,UAAU;AAC7B,IAAM,aAAa,UAAU;AAC7B,IAAM,UAAU,OAAO;AACvB,IAAM,aAAa,UAAU;AAC7B,IAAM,cAAc,WAAW;AAC/B,IAAM,WAAW,QAAQ;AACzB,IAAM,aAAa,UAAU;AAC7B,IAAM,gBAAgB,aAAa;AACnC,IAAM,WAAW,QAAQ;AACzB,IAAM,UAAU,OAAO;AACvB,IAAM,cAAc,WAAW;AAC/B,IAAM,YAAY,SAAS;AAC3B,IAAM,WAAW,QAAQ;AACzB,IAAM,YAAY,SAAS;AAC3B,IAAM,aAAa,UAAU;AAC7B,IAAM,mBAAmB,UAAU;AACnC,IAAM,YAAY,SAAS;AAC3B,IAAM,yBAAyB,sBAAsB;AACrD,IAAM,mBAAmB,gBAAgB;AACzC,IAAM,YAAY,SAAS;AAC3B,IAAM,aAAa,UAAU;AAC7B,IAAM,UAAU,OAAO;AACvB,IAAM,UAAU,OAAO;AACvB,IAAM,eAAe,YAAY;AACjC,IAAM,WAAW,QAAQ;AACzB,IAAM,cAAc,WAAW;AAC/B,IAAM,WAAW,QAAQ;AACzB,IAAM,iBAAiB,cAAc;AACrC,IAAM,cAAc,WAAW;AAC/B,IAAM,cAAc,WAAW;AAC/B,IAAM,eAAe,YAAY;AACjC,IAAM,eAAe,YAAY;AACjC,IAAM,iBAAiB,WAAW;AAClC,IAAM,eAAe,YAAY;AACjC,IAAM,UAAU,MAAM,WAAW,EAAE,SAAS;AAC5C,IAAM,UAAU,MAAM,WAAW,EAAE,SAAS;AAC5C,IAAM,WAAW,MAAM,YAAY,EAAE,SAAS;AACvC,IAAM,SAAS;AAAA,EAClB,QAAS,CAAC,QAAQ,UAAU,OAAO,EAAE,GAAG,KAAK,QAAQ,KAAK,CAAC;AAAA,EAC3D,QAAS,CAAC,QAAQ,UAAU,OAAO,EAAE,GAAG,KAAK,QAAQ,KAAK,CAAC;AAAA,EAC3D,SAAU,CAAC,QAAQ,WAAW,OAAO;AAAA,IACjC,GAAG;AAAA,IACH,QAAQ;AAAA,EACZ,CAAC;AAAA,EACD,QAAS,CAAC,QAAQ,UAAU,OAAO,EAAE,GAAG,KAAK,QAAQ,KAAK,CAAC;AAAA,EAC3D,MAAO,CAAC,QAAQ,QAAQ,OAAO,EAAE,GAAG,KAAK,QAAQ,KAAK,CAAC;AAC3D;AAEO,IAAM,QAAQ;;;ARzmHrB,gCAA4B;AAG5B,IAAM,gBAAgB,iBAAE,OAAO;AAAA,EAC7B,MAAM,iBAAE,OAAO;AAAA,EACf,SAAS,iBAAE,OAAO;AAAA,EAClB,aAAa,iBAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAED,eAAsB,uBAAsC;AAC1D,MAAI;AAEF,UAAM,iBAAa,0BAAAC,SAAgB,eAAe,eAAe;AAGjE,IAAO,iBAAU,KAAK,aAAa,sBAAsB;AAAA,MACvD,UAAU;AAAA,MACV,eAAe;AAAA,MACf,SAAS;AAAA,QACP;AAAA,UACE,KAAK;AAAA;AAAA,UACL,QAAQ;AAAA,UACR,WAAW,CAAC,GAAG;AAAA;AAAA,QACjB;AAAA,MACF;AAAA,MACA,qBAAqB;AAAA,MACrB,kBAAkB;AAAA,MAClB,eAAe;AAAA,IACjB,CAAC;AAGD,IAAO,iBAAU,KAAK,aAAa,qBAAqB;AAAA,MACtD,yBAAyB;AAAA,MACzB,8BAA8B;AAAA,MAC9B,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,aAAa;AAAA,MACb,iBAAiB;AAAA,IACnB,CAAC;AAAA,EAGH,SAAS,OAAO;AACd,YAAQ,MAAM,6CAA6C,KAAK;AAAA,EAClE;AACF;AAEA,eAAsB,mBAA2C;AAC/D,gBAAAC,QAAO,OAAO,EAAE,OAAO,CAAC;AACxB,QAAM,qBAAqB;AAE3B,SAAO,cAAAA,QAAO,KAAK;AACrB;;;AS1DA,IAAAC,iBAA0D;;;ACM1D,IAAM,sBAAN,MAAqD;AAAA,EAC3C,WAAW,oBAAI,IAA+B;AAAA,EAC9C,UAAoC;AAAA,EAE5C,WAAW,SAA4B;AACrC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,SAAS,SAA4B;AACnC,SAAK,SAAS,IAAI,QAAQ,IAAI,OAAO;AAAA,EACvC;AAAA,EAEA,MAAM,QACJ,WACA,MACe;AACf,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,UAAU,KAAK,SAAS,IAAI,SAAS;AAC3C,QAAI,CAAC,SAAS;AACZ,cAAQ,KAAK,YAAY,SAAS,aAAa;AAC/C;AAAA,IACF;AAEA,QAAI;AACF,YAAM,QAAQ,QAAQ,KAAK,SAAS,IAAI;AAAA,IAC1C,SAAS,OAAO;AACd,cAAQ,MAAM,4BAA4B,SAAS,MAAM,KAAK;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,WAAW,WAAkD;AAC3D,WAAO,KAAK,SAAS,IAAI,SAAS;AAAA,EACpC;AAAA,EAEA,iBAAsC;AACpC,WAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC;AAAA,EAC1C;AAAA,EAEA,QAAQ;AACN,SAAK,SAAS,MAAM;AAAA,EACtB;AACF;AAEO,IAAM,kBAAkB,IAAI,oBAAoB;;;ACtDvD,IAAAC,sBAA4B;AAYhB,IAAAC,uBAAA;AAPL,IAAM,sBAAyC;AAAA,EACpD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS,CAAC,YAAY;AACpB,UAAM,WAAW,QAAQ,SAAS,eAAe;AACjD,UAAM,eAAoC,SAAS,IAAI,CAAC,aAAa;AAAA,MACnE,IAAI,QAAQ;AAAA,MACZ,MAAM,8CAAC,mCAAY,WAAU,WAAU;AAAA,MACvC,OAAO,QAAQ;AAAA,MACf,YAAY,MAAM;AAChB,gBAAQ,MAAM,WAAW;AACzB,gBAAQ,SAAS,QAAQ,QAAQ,EAAE;AAAA,MACrC;AAAA,IACF,EAAE;AACF,YAAQ,MAAM;AAAA,MACZ;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,aAAY;AAAA;AAAA,MACd;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,QACN,cAAc;AAAA,QACd,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACF;;;ACAO,IAAM,iBAAN,MAAwB;AAAA,EACrB;AAAA,EACA;AAAA,EAER,YAAY,YAAwB,WAAc;AAChD,SAAK,aAAa;AAClB,SAAK,YAAY;AAGjB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEQ,sBAAsB;AAC5B,eAAW,CAAC,KAAK,MAAM,KAAK,OAAO;AAAA,MACjC,KAAK;AAAA,IACP,GAAG;AACD,UAAI,KAAK,gBAAgB,MAAM,GAAG;AAChC,QAAC,KAAa,GAAG,IAAI,OAAO,UAAmC,CAAC,MAAM;AACpE,iBAAO,KAAK,eAAe,QAAyB,OAAO;AAAA,QAC7D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,eACZ,QACA,SAC4B;AAC5B,UAAM,EAAE,QAAQ,MAAM,OAAO,IAAI;AAGjC,QAAI,OAAO,OAAO;AAClB,QAAI,UAAU,OAAO,WAAW,UAAU;AACxC,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,eAAO,KAAK,QAAQ,IAAI,GAAG,IAAI,OAAO,KAAK,CAAC;AAAA,MAC9C;AAAA,IACF;AAGA,QAAI,QAAQ,OAAO,aAAa;AAC9B,UAAI;AACF,eAAO,YAAY,MAAM,IAAI;AAAA,MAC/B,SAAS,OAAO;AACd,cAAM,IAAI,MAAM,mCAAmC,KAAK,EAAE;AAAA,MAC5D;AAAA,IACF;AAGA,YAAQ,OAAO,QAAQ;AAAA,MACrB,KAAK;AACH,eAAO,KAAK,WAAW,IAAI,MAAM,MAAM;AAAA,MACzC,KAAK;AACH,eAAO,KAAK,WAAW,KAAK,MAAM,MAAM,MAAM;AAAA,MAChD,KAAK;AACH,eAAO,KAAK,WAAW,IAAI,MAAM,MAAM,MAAM;AAAA,MAC/C,KAAK;AACH,eAAO,KAAK,WAAW,MAAM,MAAM,MAAM,MAAM;AAAA,MACjD,KAAK;AACH,eAAO,KAAK,WAAW,OAAO,MAAM,MAAM;AAAA,MAC5C;AACE,cAAM,IAAI,MAAM,4BAA4B,OAAO,MAAM,EAAE;AAAA,IAC/D;AAAA,EACF;AAAA,EAEQ,gBAAgB,KAAgC;AACtD,WACE,OACA,OAAO,QAAQ,YACf,YAAY,OACZ,UAAU,OACV,mBAAmB,OACnB,iBAAiB,OACjB,kBAAkB;AAAA,EAEtB;AAAA,EAEQ,WAAW,KAAqB;AACtC,WAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,EAClD;AACF;AAEO,SAAS,qBACd,YACA,WACwC;AACxC,SAAO,IAAI,eAAe,YAAY,SAAS;AAEjD;;;AC3EO,SAAS,gBAAgB,YAA4C;AAC1E,QAAM,OAAO,MAAM,QAAQ,WAAW,GAAG,IACrC,WAAW,MACX,CAAC,WAAW,GAAG;AAEnB,SAAO,KAAK,IAAI,CAAC,cAAc;AAE7B,UAAM,YAAY,UACf,MAAM,KAAK,EACX,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,EACvB,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;AAEjC,WAAO;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA,SAAS,WAAW;AAAA,MACpB,MAAM,WAAW;AAAA,IACnB;AAAA,EACF,CAAC;AACH;AAMO,SAAS,kBAAkB,OAA8B;AAC9D,QAAM,QAAkB,CAAC;AAEzB,MAAI,MAAM,QAAS,OAAM,KAAK,MAAM;AACpC,MAAI,MAAM,QAAS,OAAM,KAAK,MAAM;AACpC,MAAI,MAAM,OAAQ,OAAM,KAAK,KAAK;AAClC,MAAI,MAAM,SAAU,OAAM,KAAK,OAAO;AAGtC,MAAI,MAAM,MAAM,IAAI,YAAY;AAGhC,UAAQ,KAAK;AAAA,IACX,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,IACF,KAAK;AACH,YAAM;AACN;AAAA,EACJ;AAEA,QAAM,KAAK,GAAG;AACd,SAAO,MAAM,KAAK,GAAG;AACvB;AAKO,SAAS,mBACd,UACA,gBACS;AACT,SAAO,aAAa,eAAe,YAAY;AACjD;;;AClHA,IAAM,oBAAN,MAAwB;AAAA,EACd,cAAkC,CAAC;AAAA,EACnC,QAAyB;AAAA,IAC/B,cAAc,CAAC;AAAA,IACf,cAAc;AAAA,IACd,iBAAiB;AAAA,EACnB;AAAA;AAAA,EAGiB,gBAAgB;AAAA;AAAA;AAAA;AAAA,EAKjC,oBAAoB,aAAiC;AAEnD,SAAK,cAAc,CAAC;AACpB,SAAK,gBAAgB;AAGrB,eAAW,cAAc,aAAa;AACpC,YAAM,oBAAoB,gBAAgB,UAAU;AACpD,WAAK,YAAY,KAAK,GAAG,iBAAiB;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,OAAwC;AAEhE,UAAM,SAAS,MAAM;AACrB,QAAI,KAAK,kBAAkB,MAAM,GAAG;AAClC,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,kBAAkB,KAAK;AAGxC,QAAI,KAAK,MAAM,iBAAiB;AAC9B,aAAO,MAAM,KAAK,sBAAsB,OAAO,QAAQ;AAAA,IACzD;AAGA,UAAM,UAAU,KAAK,YAAY,QAAQ;AAEzC,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AAGA,UAAM,aAAa,QAAQ;AAAA,MACzB,CAAC,UACC,MAAM,UAAU,WAAW,KAC3B,MAAM,UAAU,CAAC,KACjB,mBAAmB,UAAU,MAAM,UAAU,CAAC,CAAC;AAAA,IACnD;AAEA,QAAI,cAAc,QAAQ,WAAW,GAAG;AACtC,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,YAAM,KAAK,eAAe,UAAU;AACpC,aAAO;AAAA,IACT;AAGA,UAAM,eAAe,QAAQ,OAAO,CAAC,UAAU,MAAM,UAAU,SAAS,CAAC;AAEzE,QAAI,aAAa,SAAS,GAAG;AAE3B,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,WAAK,mBAAmB,QAAQ;AAChC,aAAO;AAAA,IACT;AAGA,QAAI,YAAY;AACd,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,YAAM,KAAK,eAAe,UAAU;AACpC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,YAAY,UAAsC;AACxD,WAAO,KAAK,YAAY;AAAA,MAAO,CAAC,YAC9B,QAAQ,UAAU,KAAK,CAAC,KAAK,UAAU;AACrC,YAAI,UAAU,GAAG;AACf,iBAAO,mBAAmB,UAAU,GAAG;AAAA,QACzC;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,sBACZ,OACA,UACkB;AAClB,UAAM,uBAAuB,KAAK,MAAM,aAAa;AAGrD,UAAM,mBAAmB,KAAK,YAAY,OAAO,CAAC,YAAY;AAE5D,UAAI,QAAQ,UAAU,UAAU,sBAAsB;AACpD,eAAO;AAAA,MACT;AAGA,eAAS,IAAI,GAAG,IAAI,sBAAsB,KAAK;AAC7C,cAAM,WAAW,KAAK,MAAM,aAAa,CAAC;AAC1C,cAAM,aAAa,QAAQ,UAAU,CAAC;AACtC,YACE,CAAC,YACD,CAAC,cACD,CAAC,mBAAmB,UAAU,UAAU,GACxC;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,YAAM,eAAe,QAAQ,UAAU,oBAAoB;AAC3D,aAAO,eAAe,mBAAmB,UAAU,YAAY,IAAI;AAAA,IACrE,CAAC;AAED,QAAI,iBAAiB,WAAW,GAAG;AAEjC,WAAK,gBAAgB;AACrB,aAAO;AAAA,IACT;AAEA,UAAM,eAAe;AACrB,UAAM,gBAAgB;AAGtB,SAAK,MAAM,aAAa,KAAK,QAAQ;AAGrC,UAAM,gBAAgB,iBAAiB;AAAA,MACrC,CAAC,UAAU,MAAM,UAAU,WAAW,KAAK,MAAM,aAAa;AAAA,IAChE;AAEA,QAAI,eAAe;AAEjB,YAAM,KAAK,eAAe,aAAa;AACvC,WAAK,gBAAgB;AACrB,aAAO;AAAA,IACT;AAGA,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,mBAAmB,UAAwB;AACjD,SAAK,MAAM,eAAe,CAAC,QAAQ;AACnC,SAAK,MAAM,kBAAkB;AAC7B,SAAK,kBAAkB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAA0B;AAChC,QAAI,KAAK,MAAM,cAAc;AAC3B,aAAO,aAAa,KAAK,MAAM,YAAY;AAAA,IAC7C;AAEA,SAAK,MAAM,eAAe,OAAO,WAAW,MAAM;AAChD,WAAK,gBAAgB;AAAA,IACvB,GAAG,KAAK,aAAa;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKQ,kBAAwB;AAC9B,SAAK,MAAM,eAAe,CAAC;AAC3B,SAAK,MAAM,kBAAkB;AAE7B,QAAI,KAAK,MAAM,cAAc;AAC3B,aAAO,aAAa,KAAK,MAAM,YAAY;AAC3C,WAAK,MAAM,eAAe;AAAA,IAC5B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,eAAe,YAA6C;AACxE,QAAI;AACF,YAAM,gBAAgB,QAAQ,WAAW,SAAS,WAAW,IAAI;AAAA,IACnE,SAAS,OAAO;AACd,cAAQ;AAAA,QACN,8BAA8B,WAAW,OAAO;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,kBAAkB,QAA8B;AAEtD,UAAM,UAAU,OAAO,QAAQ,YAAY;AAE3C,QAAI,YAAY,WAAW,YAAY,YAAY;AACjD,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,oBAAoB,QAAQ;AACrC,aAAO;AAAA,IACT;AAGA,QAAI,SAAS,OAAO;AACpB,WAAO,QAAQ;AACb,UAAI,OAAO,oBAAoB,QAAQ;AACrC,eAAO;AAAA,MACT;AACA,eAAS,OAAO;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,SAAK,cAAc,CAAC;AACpB,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAqC;AACnC,WAAO,CAAC,GAAG,KAAK,WAAW;AAAA,EAC7B;AACF;AAEO,IAAM,oBAAoB,IAAI,kBAAkB;;;ACzQvD,IAAI,qBAAqB;AAMlB,SAAS,oBAAoB,aAAiC;AAEnE,oBAAkB,oBAAoB,WAAW;AAGjD,MAAI,CAAC,oBAAoB;AACvB,aAAS,iBAAiB,WAAW,qBAAqB,IAAI;AAC9D,yBAAqB;AAAA,EACvB;AACF;AAKA,eAAe,oBAAoB,OAAqC;AACtE,QAAM,kBAAkB,oBAAoB,KAAK;AACnD;AAMO,SAAS,qBAA2B;AACzC,oBAAkB,MAAM;AAExB,MAAI,oBAAoB;AACtB,aAAS,oBAAoB,WAAW,qBAAqB,IAAI;AACjE,yBAAqB;AAAA,EACvB;AACF;;;ACtCA,IAAAC,sBAAkC;AA0BK,IAAAC,uBAAA;AArBhC,IAAM,oBAAuC;AAAA,EAClD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS,CAAC,YAAY;AAEpB,UAAM,kBAAkB,QAAQ,QAAQ,YAAY,CAAC,SAAS,MAAM;AAGpE,UAAM,gBAAgB,QAAQ,QAAQ;AAGtC,UAAM,eAAe,QAAQ,QAAQ;AACrC,UAAM,cAAc,gBACjB,OAAO,CAAC,YAAY,YAAY,YAAY,EAC5C,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AACpC,UAAM,eAAe,CAAC,cAAc,GAAG,WAAW;AAElD,UAAM,aAAkC,aAAa,IAAI,CAAC,YAAY;AACpE,YAAM,QAAQ,QAAQ,QAAQ,SAAS,OAAO;AAC9C,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,MAAM,OAAO,SAAS,SAAS,8CAAC,gCAAS,IAAK,8CAAC,+BAAQ;AAAA,QACvD,OAAO,OAAO,QAAQ;AAAA,QACtB,UAAU,aAAa,OAAO;AAAA,QAC9B,YAAY,MAAM;AAChB,kBAAQ,MAAM,WAAW;AACzB,kBAAQ,QAAQ,iBAAiB,OAAO;AAAA,QAC1C;AAAA,QACA,SAAS,MAAM;AAEb,kBAAQ,QAAQ,iBAAiB,OAAO;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAED,YAAQ,MAAM;AAAA,MACZ;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,aAAY;AAAA;AAAA,MACd;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,QACN,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,WAAW,MAAM;AAEf,kBAAQ,QAAQ,iBAAiB,aAAa;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACvDO,IAAM,OAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,QAAQ;AAAA;AAAA,IAEN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,oBAAoB;AAAA;AAAA,IAGpB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,sBAAsB;AAAA;AAAA,IAGtB,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,qBAAqB;AAAA;AAAA,IAGrB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,EACpB;AACF;;;AC3CO,IAAM,SAAsB;AAAA,EACjC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,QAAQ;AAAA;AAAA,IAEN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,oBAAoB;AAAA;AAAA,IAGpB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,sBAAsB;AAAA;AAAA,IAGtB,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,qBAAqB;AAAA;AAAA,IAGrB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,EACpB;AACF;;;AC3CO,IAAM,QAAqB;AAAA,EAChC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,QAAQ;AAAA;AAAA,IAEN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,oBAAoB;AAAA;AAAA,IAGpB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,sBAAsB;AAAA;AAAA,IAGtB,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,qBAAqB;AAAA;AAAA,IAGrB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,EACpB;AACF;;;AC3CO,IAAM,UAAuB;AAAA,EAClC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,QAAQ;AAAA;AAAA,IAEN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,oBAAoB;AAAA;AAAA,IAGpB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,sBAAsB;AAAA;AAAA,IAGtB,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,qBAAqB;AAAA;AAAA,IAGrB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,kBAAkB;AAAA;AAAA,IAGlB,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,EACpB;AACF;;;ACxCO,IAAM,WAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACJO,SAAS,2BAA2B,UAA0B;AACnE,SAAO,iBAAiB,SAAS,QAAQ,OAAO,GAAG,CAAC;AACtD;AAKO,SAAS,qBAAqB,QAAwC;AAC3E,SAAO,OAAO,QAAQ,MAAM,EACzB;AAAA,IACC,CAAC,CAAC,UAAU,KAAK,MACf,KAAK,2BAA2B,QAAQ,CAAC,KAAK,KAAK;AAAA,EACvD,EACC,KAAK,IAAI;AACd;AAKO,SAAS,iBAAiB,OAA4B;AAC3D,QAAM,eAAe,qBAAqB,MAAM,MAAM;AACtD,SAAO,kBAAkB,MAAM,EAAE;AAAA,EAAS,YAAY;AAAA;AACxD;AAKO,SAAS,kBAAkB,QAA+B;AAC/D,SAAO,OAAO,IAAI,CAAC,UAAU,iBAAiB,KAAK,CAAC,EAAE,KAAK,MAAM;AACnE;AAKO,SAAS,qBAAqB,QAA6B;AAChE,QAAM,MAAM,kBAAkB,MAAM;AAEpC,MAAI,CAAC,IAAI,KAAK,GAAG;AACf,YAAQ,KAAK,wBAAwB;AACrC;AAAA,EACF;AAGA,QAAM,gBAAgB,SAAS,eAAe,wBAAwB;AACtE,MAAI,eAAe;AACjB,kBAAc,OAAO;AAAA,EACvB;AAGA,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,KAAK;AACX,QAAM,OAAO;AACb,QAAM,cAAc;AAGpB,WAAS,KAAK,YAAY,KAAK;AAE/B,UAAQ,IAAI,YAAY,OAAO,MAAM,4BAA4B;AACnE;;;ACxDA,IAAM,oBAAoB;AAG1B,IAAM,0BAA0B;AAGhC,IAAM,kBAAkB;AAKxB,SAAS,SAAS,KAA8C;AAC9D,QAAM,SAAS,4CAA4C,KAAK,GAAG;AACnE,MAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;AACrD,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE;AAAA,IAC7B,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE;AAAA,IAC7B,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE;AAAA,EAC/B;AACF;AAMA,SAAS,aAAa,GAAW,GAAW,GAAmB;AAC7D,QAAM,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM;AACxC,UAAM,aAAa,IAAI;AACvB,WAAO,cAAc,UACjB,aAAa,UACX,aAAa,SAAS,UAAU;AAAA,EACxC,CAAC;AAED,SAAO,SAAS,KAAK,SAAS,KAAK,SAAS;AAC9C;AAMA,SAAS,iBAAiB,QAAgB,QAA+B;AACvE,QAAM,OAAO,SAAS,MAAM;AAC5B,QAAM,OAAO,SAAS,MAAM;AAE5B,MAAI,CAAC,QAAQ,CAAC,KAAM,QAAO;AAE3B,QAAM,OAAO,aAAa,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AACnD,QAAM,OAAO,aAAa,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAEnD,QAAM,YAAY,KAAK,IAAI,MAAM,IAAI;AACrC,QAAM,UAAU,KAAK,IAAI,MAAM,IAAI;AAEnC,UAAQ,YAAY,SAAS,UAAU;AACzC;AAMO,SAAS,oBAAoB,OAA0B;AAC5D,QAAM,EAAE,OAAO,IAAI;AAGnB,QAAM,iBAAiB;AAAA;AAAA,IAErB;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA;AAAA,IAGA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA;AAAA,IAGA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA;AAAA,IAGA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA;AAAA,IAGA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,EACF;AAEA,UAAQ,MAAM,sCAA+B,MAAM,IAAI,KAAK,MAAM,EAAE,GAAG;AAEvE,MAAI,YAAY;AAGhB,aAAW,QAAQ,gBAAgB;AACjC,UAAM,QAAQ,iBAAiB,KAAK,YAAY,KAAK,UAAU;AAC/D,QAAI,UAAU,MAAM;AAClB,cAAQ;AAAA,QACN,yCAA+B,KAAK,IAAI,KAAK,KAAK,UAAU,MAAM,KAAK,UAAU;AAAA,MACnF;AACA,kBAAY;AACZ;AAAA,IACF;AAEA,QAAI,QAAQ,mBAAmB;AAC7B,cAAQ;AAAA,QACN,2CAAiC,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC,CAAC,gBAAgB,iBAAiB;AAAA,iBAC5E,KAAK,UAAU,kBAAkB,KAAK,UAAU;AAAA,MACtE;AACA,kBAAY;AAAA,IACd,WAAW,QAAQ,0BAA0B,KAAK;AAEhD,cAAQ;AAAA,QACN,8CAAoC,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC,CAAC;AAAA,iBAC9C,KAAK,UAAU,kBAAkB,KAAK,UAAU;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAGA,aAAW,QAAQ,cAAc;AAC/B,UAAM,QAAQ,iBAAiB,KAAK,YAAY,KAAK,UAAU;AAC/D,QAAI,UAAU,MAAM;AAClB,cAAQ;AAAA,QACN,yCAA+B,KAAK,IAAI,KAAK,KAAK,UAAU,MAAM,KAAK,UAAU;AAAA,MACnF;AACA,kBAAY;AACZ;AAAA,IACF;AAEA,QAAI,QAAQ,iBAAiB;AAC3B,cAAQ;AAAA,QACN,mDAAyC,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC,CAAC,gBAAgB,eAAe;AAAA,iBAClF,KAAK,UAAU,kBAAkB,KAAK,UAAU;AAAA,MACtE;AACA,kBAAY;AAAA,IACd;AAAA,EACF;AAEA,MAAI,CAAC,WAAW;AACd,YAAQ;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,SAAS;AACnB;;;ACjNA,eAAsB,iBAAiB,QAAsC;AAC3E,MAAI;AAEF,eAAW,SAAS,QAAQ;AAC1B,0BAAoB,KAAK;AAAA,IAC3B;AAGA,yBAAqB,MAAM;AAAA,EAC7B,SAAS,OAAO;AACd,YAAQ,MAAM,gCAAgC,KAAK;AACnD,UAAM;AAAA,EACR;AACF;;;ACIA,eAAsB,oBAAoB;AAAA,EACxC;AACF,GAAkE;AAChE,UAAQ,KAAK,4BAA4B;AAGzC,QAAM,WAAW,OAAO,YAAY,CAAC,SAAS,MAAM;AACpD,QAAM,iBAAiB,OAAO,kBAAkB;AAGhD,QAAM,qBAAqB,SACxB,IAAI,CAAC,OAAO,SAAS,EAA2B,CAAC,EACjD,OAAO,CAAC,UAAgC,UAAU,MAAS;AAG9D,QAAM,iBAAiB,kBAAkB;AAGzC,kBAAgB,SAAS,mBAAmB;AAC5C,kBAAgB,SAAS,iBAAiB;AAE1C,UAAQ,KAAK,wBAAwB;AAErC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AhBxBO,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AACF,GAAoD;AAClD,QAAM,CAAC,oBAAoB,qBAAqB,QAC9C,yBAA0C,IAAI;AAChD,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,IAAI;AAC/C,QAAM,CAAC,OAAO,QAAQ,QAAI,yBAAuB,IAAI;AACrD,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAiB,EAAE;AAC7D,QAAM,QAAQ,SAAS;AAEvB,QAAM,iBAAa,4BAAY,YAAY;AACzC,iBAAa,IAAI;AACjB,aAAS,IAAI;AAEb,QAAI;AACF,YAAM,WAAW,MAAM,oBAAoB,EAAE,QAAQ,WAAW,CAAC;AACjE,4BAAsB,QAAQ;AAC9B,uBAAiB,SAAS,cAAc;AAAA,IAC1C,SAAS,KAAK;AACZ,YAAMC,SACJ,eAAe,QACX,MACA,IAAI,MAAM,iCAAiC;AACjD,eAASA,MAAK;AACd,cAAQ,MAAM,oCAAoCA,MAAK;AAAA,IACzD,UAAE;AACA,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,QAAQ,UAAU,CAAC;AAEvB,gCAAU,MAAM;AACd,eAAW;AAAA,EACb,GAAG,CAAC,UAAU,CAAC;AAGf,QAAM,wBAAoB,wBAAQ,MAAM;AACtC,QAAI,CAAC,mBAAoB,QAAO;AAGhC,QAAI,iBAAsB;AAC1B,QAAI,mBAAmB,OAAO,cAAc;AAC1C,UAAI;AACF,yBAAiB;AAAA,UACf;AAAA,UACA,mBAAmB,OAAO;AAAA,QAC5B;AAAA,MACF,SAASA,QAAO;AACd,gBAAQ,KAAK,sCAAsCA,MAAK;AAAA,MAC1D;AAAA,IACF;AAEA,UAAM,4BAA+C;AAAA,MACnD,QAAQ,mBAAmB;AAAA,MAC3B,UAAU;AAAA,MACV,aAAa;AAAA,QACX;AAAA,UACE,KAAK,CAAC,UAAU,QAAQ;AAAA,UACxB,SAAS;AAAA,UACT,MAAM,CAAC;AAAA,QACT;AAAA,QACA;AAAA,UACE,KAAK,CAAC,UAAU,QAAQ;AAAA,UACxB,SAAS;AAAA,UACT,MAAM,CAAC;AAAA,QACT;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,UAAU,mBAAmB;AAAA,QAC7B,UAAU,mBAAmB;AAAA,QAC7B;AAAA,QACA,kBAAkB,CAAC,YAAoB;AACrC,cAAI,mBAAmB,SAAS,SAAS,OAAO,GAAG;AACjD,6BAAiB,OAAO;AAAA,UAC1B,OAAO;AACL,oBAAQ,KAAK,aAAa,OAAO,iCAAiC;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,oBAAoB,OAAO,eAAe,UAAU,CAAC;AAGzD,gCAAU,MAAM;AACd,QAAI,mBAAmB;AAErB,sBAAgB,WAAW,iBAAiB;AAG5C,0BAAoB,kBAAkB,WAAW;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAGtB,gCAAU,MAAM;AACd,QAAI,eAAe;AACjB,eAAS,gBAAgB,aAAa,cAAc,aAAa;AAAA,IACnE;AAAA,EACF,GAAG,CAAC,aAAa,CAAC;AAGlB,gCAAU,MAAM;AACd,WAAO,MAAM;AACX,YAAM,gBAAgB,SAAS,eAAe,wBAAwB;AACtE,UAAI,eAAe;AACjB,sBAAc,OAAO;AAAA,MACvB;AACA,yBAAmB;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT;AACF;;;AiB5HQ,IAAAC,uBAAA;AAfD,IAAM,mBAET,CAAC,EAAE,QAAQ,YAAY,SAAS,MAAM;AACxC,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF,IAAI,uBAAuB;AAAA,IACzB;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,OAAO;AACT,WACE,8CAAC,SAAI,WAAU,iDACb,yDAAC,SAAI,WAAU,eACb;AAAA,oDAAC,QAAG,WAAU,2CAA0C,6CAExD;AAAA,MACA,8CAAC,OAAE,WAAU,yBAAyB,gBAAM,SAAQ;AAAA,OACtD,GACF;AAAA,EAEJ;AAEA,MAAI,aAAa,CAAC,eAAe;AAC/B,WACE,8CAAC,SAAI,WAAU,iDACb,yDAAC,SAAI,WAAU,eACb;AAAA,oDAAC,SAAI,WAAU,6EAA4E;AAAA,MAC3F,8CAAC,OAAE,WAAU,yBAAwB,wCAA0B;AAAA,OACjE,GACF;AAAA,EAEJ;AAEA,SACE,8CAAC,yBAAsB,SAAS,eAC7B,UACH;AAEJ;;;AxC5BQ,IAAAC,uBAAA;AAZR,iBAAiB;AAEV,IAAM,YAAgC,CAAC,EAAE,OAAO,MAAM;AAC3D,QAAM,iBAAa,wBAAoB,MAAM;AAC3C,WAAO,IAAI,WAAW;AAAA,MACpB,SAAS,OAAO;AAAA,IAClB,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,CAAC;AAEX,SACE,8CAAC,iBACC,wDAAC,oBAAiB,QAAgB,YAChC,wDAAC,wCAAe,QAAgB,GAClC,GACF;AAEJ;;;AyC7BA,yBAQO;AACP,IAAAC,mCAAuC;AAEvC,IAAAC,iBAA2B;AAkEjB,IAAAC,uBAAA;AA/DV,IAAM,oBAAgB,sCAAI,iDAAiD;AAE3E,IAAM,6BAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAeA,IAAM,YAAQ;AAAA,EACZ,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,UAAU,CAAC;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,YAAQ,kCAAc;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,qBAAiB,oCAAgB;AAAA,MACjC,eAAe;AAAA,MACf;AAAA,MACA,OAAO;AAAA,QACL;AAAA,MACF;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,cAAc,CAAC,WAAgB;AACnC,YAAM,gBAAgB,OAAO,YAAY;AACzC,UAAI,kBAAkB,OAAO;AAC3B,eACE;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,cAAW;AAAA,YAEX;AAAA,4DAAC,WAAM,8BAAgB;AAAA,cACvB;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAc;AAAA,kBACd,gBAAe;AAAA,kBACf,aAAa;AAAA,kBACb,GAAE;AAAA;AAAA,cACJ;AAAA;AAAA;AAAA,QACF;AAAA,MAEJ;AACA,UAAI,kBAAkB,QAAQ;AAC5B,eACE;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,cAAW;AAAA,YAEX;AAAA,4DAAC,WAAM,+BAAiB;AAAA,cACxB;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAc;AAAA,kBACd,gBAAe;AAAA,kBACf,aAAa;AAAA,kBACb,GAAE;AAAA;AAAA,cACJ;AAAA;AAAA;AAAA,QACF;AAAA,MAEJ;AACA,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAK;AAAA,UACL,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,cAAW;AAAA,UAEX;AAAA,0DAAC,WAAM,sBAAQ;AAAA,YACf;AAAA,cAAC;AAAA;AAAA,gBACC,eAAc;AAAA,gBACd,gBAAe;AAAA,gBACf,aAAa;AAAA,gBACb,GAAE;AAAA;AAAA,YACJ;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,uBAAuB,EAAE,QAAQ,CAAC,GAAG,kBAAkB;AAAA,QAEpE;AAAA,qBACC,8CAAC,SAAI,WAAU,yFACb,yDAAC,SAAI,WAAU,2FACb;AAAA,0DAAC,SAAI,WAAU,kFAAiF;AAAA,YAChG,8CAAC,UAAK,WAAU,8BACb,0BACH;AAAA,aACF,GACF;AAAA,UAGF,+CAAC,WAAM,KAAU,WAAW,GAAG,cAAc,GAAG,SAAS,GAAI,GAAG,OAC9D;AAAA,0DAAC,WACE,gBAAM,gBAAgB,EAAE,IAAI,CAAC,gBAC5B,8CAAC,QAAwB,WAAU,2BAChC,sBAAY,QAAQ,IAAI,CAAC,WACxB;AAAA,cAAC;AAAA;AAAA,gBAEC,WAAW;AAAA,kBACT;AAAA,kBACA,OAAO,OAAO,WAAW,KAAK,gBAC1B,kIACA;AAAA,gBACN;AAAA,gBACA,UACE,OAAO,OAAO,WAAW,KAAK,gBAC1B,IACA;AAAA,gBAEN,MACE,OAAO,OAAO,WAAW,KAAK,gBAC1B,WACA;AAAA,gBAEN,SACE,OAAO,OAAO,WAAW,KAAK,gBAC1B,OAAO,OAAO,wBAAwB,IACtC;AAAA,gBAEN,WACE,OAAO,OAAO,WAAW,KAAK,gBAC1B,CAAC,MAAM;AACL,sBAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,sBAAE,eAAe;AACjB,2BAAO,OAAO,wBAAwB,IAAI,CAAC;AAAA,kBAC7C;AAAA,gBACF,IACA;AAAA,gBAEN,OAAO;AAAA,kBACL,OACE,OAAO,QAAQ,MAAM,MAAM,OAAO,QAAQ,IAAI;AAAA,gBAClD;AAAA,gBAEA,yDAAC,SAAI,WAAU,qBACZ;AAAA,yBAAO,gBACJ,WACA;AAAA,oBACE,OAAO,OAAO,UAAU;AAAA,oBACxB,OAAO,WAAW;AAAA,kBACpB;AAAA,kBACH,OAAO,OAAO,WAAW,KACxB,iBACA,YAAY,OAAO,MAAM;AAAA,mBAC7B;AAAA;AAAA,cA/CK,OAAO;AAAA,YAgDd,CACD,KApDM,YAAY,EAqDrB,CACD,GACH;AAAA,YACA,8CAAC,WACE,gBAAM,YAAY,EAAE,KAAK,WAAW,IACnC,8CAAC,QACC;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,QAAQ;AAAA,gBACjB,WAAU;AAAA,gBAET;AAAA;AAAA,YACH,GACF,IAEA,MAAM,YAAY,EAAE,KAAK,IAAI,CAAC,KAAK,UACjC;AAAA,cAAC;AAAA;AAAA,gBAEC,WAAW;AAAA,kBACT;AAAA,kBACA,QAAQ,MAAM,IAAI,eAAe;AAAA,gBACnC;AAAA,gBAEC,cAAI,gBAAgB,EAAE,IAAI,CAAC,SAC1B,8CAAC,QAAiB,WAAU,4BACzB;AAAA,kBACC,KAAK,OAAO,UAAU;AAAA,kBACtB,KAAK,WAAW;AAAA,gBAClB,KAJO,KAAK,EAKd,CACD;AAAA;AAAA,cAbI,IAAI;AAAA,YAcX,CACD,GAEL;AAAA,aACF;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc;;;ACnPpB,IAAAC,mCAAuC;AAEvC,IAAAC,iBAA2B;AA0Ef,IAAAC,uBAAA;AAtEZ,IAAM,yBAAqB;AAAA,EACzB;AACF;AAcA,IAAM,iBAAa;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB,CAAC,IAAI,IAAI,IAAI,GAAG;AAAA,IAClC,uBAAuB;AAAA,IACvB,WAAW;AAAA,IACX,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,YAAY,KAAK,KAAK,cAAc,KAAK,WAAW,GAAG,UAAU;AACvE,UAAM,UAAU,KAAK,IAAI,cAAc,UAAU,UAAU;AAE3D,UAAM,kBAAkB,MAAM;AAC5B,YAAM,QAAQ;AACd,YAAM,QAAQ,CAAC;AACf,YAAM,gBAAgB,CAAC;AAEvB,eACM,IAAI,KAAK,IAAI,GAAG,cAAc,KAAK,GACvC,KAAK,KAAK,IAAI,aAAa,GAAG,cAAc,KAAK,GACjD,KACA;AACA,cAAM,KAAK,CAAC;AAAA,MACd;AAEA,UAAI,cAAc,QAAQ,GAAG;AAC3B,sBAAc,KAAK,GAAG,KAAK;AAAA,MAC7B,OAAO;AACL,sBAAc,KAAK,CAAC;AAAA,MACtB;AAEA,oBAAc,KAAK,GAAG,KAAK;AAE3B,UAAI,cAAc,QAAQ,aAAa,GAAG;AACxC,sBAAc,KAAK,OAAO,UAAU;AAAA,MACtC,WAAW,aAAa,GAAG;AACzB,sBAAc,KAAK,UAAU;AAAA,MAC/B;AAEA,aAAO;AAAA,IACT;AAEA,WACE,+CAAC,SAAI,KAAU,WAAW,GAAG,mBAAmB,GAAG,SAAS,GAAI,GAAG,OACjE;AAAA,qDAAC,SAAI,WAAU,2BACZ;AAAA,oBACC,+CAAC,UAAK,WAAU,yBAAwB;AAAA;AAAA,UAC7B;AAAA,UAAU;AAAA,UAAE;AAAA,UAAQ;AAAA,UAAK;AAAA,UAAW;AAAA,WAC/C;AAAA,QAGD,wBAAwB,oBACvB,+CAAC,SAAI,WAAU,2BACb;AAAA,wDAAC,UAAK,WAAU,yBAAwB,6BAAe;AAAA,UACvD;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,cACP,UAAU,CAAC,MAAM,iBAAiB,OAAO,EAAE,OAAO,KAAK,CAAC;AAAA,cACxD,WAAU;AAAA,cAET,0BAAgB,IAAI,CAAC,WACpB,8CAAC,YAAoB,OAAO,QACzB,oBADU,MAEb,CACD;AAAA;AAAA,UACH;AAAA,WACF;AAAA,SAEJ;AAAA,MAEA,+CAAC,SAAI,WAAU,2BACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,aAAa,CAAC;AAAA,YAC7B,UAAU,gBAAgB;AAAA,YAC1B,cAAW;AAAA,YACZ;AAAA;AAAA,QAED;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,aAAa,cAAc,CAAC;AAAA,YAC3C,UAAU,gBAAgB;AAAA,YAC1B,cAAW;AAAA,YACZ;AAAA;AAAA,QAED;AAAA,QAEA,8CAAC,SAAI,WAAU,gCACZ,0BAAgB,EAAE,IAAI,CAAC,MAAM,UAC5B,8CAAC,SACE,mBAAS,QACR,8CAAC,UAAK,WAAU,mCAAkC,iBAAG,IAErD;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,gBAAgB,OAAO,YAAY;AAAA,YAC5C,SAAS,MAAM,aAAa,IAAc;AAAA,YAC1C,WAAU;AAAA,YACV,cAAY,cAAc,IAAI;AAAA,YAC9B,gBAAc,gBAAgB,OAAO,SAAS;AAAA,YAE7C;AAAA;AAAA,QACH,KAZM,KAcV,CACD,GACH;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,aAAa,cAAc,CAAC;AAAA,YAC3C,UAAU,gBAAgB;AAAA,YAC1B,cAAW;AAAA,YACZ;AAAA;AAAA,QAED;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,aAAa,UAAU;AAAA,YACtC,UAAU,gBAAgB;AAAA,YAC1B,cAAW;AAAA,YACZ;AAAA;AAAA,QAED;AAAA,SACF;AAAA,OACF;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;","names":["import_react","import_react","import_jsx_runtime","import_core","import_react","import_react","error","import_react","import_react","import_jsx_runtime","import_class_variance_authority","import_react","import_class_variance_authority","import_react","import_jsx_runtime","import_jsx_runtime","React","import_class_variance_authority","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_class_variance_authority","import_react","import_jsx_runtime","import_class_variance_authority","import_react","import_jsx_runtime","inputValue","isOpen","import_react","import_icons_react","import_react","import_jsx_runtime","import_react","import_icons_react","import_jsx_runtime","HeadlessDialog","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_icons_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_icons_react","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_react","import_icons_react","import_jsx_runtime","import_jsx_runtime","items","import_jsx_runtime","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react_router","import_react","axios","import_react_router","import_react_router","import_react_router","import_react_router","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react_router","import_react_router","import_jsx_runtime","import_react_router","import_react_router","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","result","r","ZodFirstPartyTypeKind","zodToJsonSchema","loader","import_react","import_icons_react","import_jsx_runtime","import_icons_react","import_jsx_runtime","error","import_jsx_runtime","import_jsx_runtime","import_class_variance_authority","import_react","import_jsx_runtime","import_class_variance_authority","import_react","import_jsx_runtime"]}
|