@algenium/blocks 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/calendar.ts","../src/contexts/chat.ts","../src/contexts/index.ts","../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/utils.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/lru-cache.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/config-utils.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/tw-join.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/from-theme.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/validators.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/default-config.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/lib/utils.ts","../src/components/EmptyState.tsx","../src/components/ui/dropdown-menu.tsx","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../src/components/ThemeSwitcher.tsx","../src/components/OrgSwitcher.tsx","../src/components/LanguageSwitcher.tsx","../src/components/EnvironmentSwitcher.tsx","../src/components/EnvironmentBanner.tsx","../src/components/ui/slider.tsx","../src/components/ui/toggle.tsx","../src/components/AvatarEditor.tsx","../src/components/ui/dialog.tsx","../src/components/ui/drawer.tsx","../src/components/AvatarEditorDialog.tsx","../src/components/ui/popover.tsx","../src/components/NotificationsWidget.tsx","../src/components/ui/scroll-area.tsx","../src/components/calendar/UpcomingEvents.tsx","../src/components/ui/tooltip.tsx","../src/components/calendar/CalendarSubscribeButton.tsx","../src/components/calendar/CalendarWidget.tsx","../src/components/calendar/CalendarView.tsx","../src/components/calendar/EventDialog.tsx","../src/components/calendar/MiniCalendar.tsx","../src/components/calendar/EventRsvpBadge.tsx","../src/components/chat/ChatSidebarProvider.tsx","../src/hooks/useChatRoom.ts","../src/components/chat/ChatRoomView.tsx","../src/components/chat/ChatSidebar.tsx","../src/hooks/useDebouncedValue.ts","../src/components/CardInput.tsx","../src/components/USAddressInput.tsx","../src/data/mexicoStates.ts","../src/data/mexicoStatePaths.ts","../src/components/MexicoMap.tsx","../src/components/VerifiedProfessionalBadge.tsx"],"names":["createContext","useContext","concatArrays","array1","array2","combinedArray","Array","length","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","Map","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","startsWith","endsWith","getGroupIdForArbitraryProperty","classParts","split","startIndex","getGroupRecursive","getConflictingClassGroupIds","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","classPathsLength","currentClassPart","nextClassPartObject","get","result","undefined","classRest","join","slice","validatorsLength","validatorObj","indexOf","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","entries","Object","key","value","path","current","parts","part","next","set","func","createLruCache","maxCacheSize","cacheSize","cache","create","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","orderSensitiveModifiers","forEach","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","has","sort","createConfigUtils","sortModifiers","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","originalClassName","substring","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","test","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","exec","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","position","scaleBgRepeat","repeat","scaleBgSize","size","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","twMerge","jsx","jsxs","param","defaultLabels","sizeClasses","shapeClasses","AnimatePresence","motion","useState","useCallback","React","useEffect","r","X","DrawerPrimitive","Check","Fragment","Loader2","AlertTriangle","useMemo","Plus","CalendarDays","Clock","MapPin","useRef","open","MessageSquare","ChevronRight","inputClassName","React4"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport interface CalendarEvent {\n\tid: string;\n\tcalendarId: string;\n\tsummary: string;\n\tdescription?: string | null;\n\tlocation?: string | null;\n\tdtstart: string;\n\tdtend: string;\n\tallDay?: boolean;\n\tstatus?: string;\n\trrule?: string | null;\n\treferenceType?: string | null;\n\treferenceId?: string | null;\n\tattendees?: Array<{\n\t\temail: string;\n\t\tdisplayName?: string | null;\n\t\tpartstat: string;\n\t\trole: string;\n\t}>;\n\treminders?: Array<{\n\t\tid: string;\n\t\ttriggerMinutes: number;\n\t\taction: string;\n\t}>;\n}\n\nexport interface CalendarData {\n\tid: string;\n\townerUserId: string;\n\tname: string;\n\tdescription?: string | null;\n\tfeedToken?: string;\n}\n\nexport interface CalendarContextValue {\n\tcalendars: CalendarData[];\n\tevents: CalendarEvent[];\n\tisLoading: boolean;\n\terror: string | null;\n\tfeedUrl: string | null;\n\trefetch: () => void;\n\tcreateEvent?: (data: Partial<CalendarEvent>) => Promise<void>;\n\tupdateEvent?: (\n\t\teventId: string,\n\t\tdata: Partial<CalendarEvent>,\n\t) => Promise<void>;\n\tdeleteEvent?: (eventId: string) => Promise<void>;\n\trsvpEvent?: (eventId: string, partstat: string) => Promise<void>;\n}\n\nexport const CalendarContext = createContext<CalendarContextValue | null>(null);\n\nexport function useCalendarContext(): CalendarContextValue | null {\n\treturn useContext(CalendarContext);\n}\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport interface ChatConversationRoom {\n\tid: string;\n\ttype: string;\n\tlastMessageAt: string | null;\n}\n\nexport interface ChatConversation {\n\tcaseId: string;\n\tcaseNumber: string;\n\tclientName: string | null;\n\tcaseStatus: string;\n\trooms: ChatConversationRoom[];\n}\n\nexport type ChatSidebarView = \"list\" | \"chat\";\n\nexport interface ChatSidebarContextValue {\n\tisOpen: boolean;\n\tview: ChatSidebarView;\n\tconversations: ChatConversation[];\n\tisLoading: boolean;\n\tactiveCaseId: string | null;\n\tactiveRoomId: string | null;\n\ttoggle: () => void;\n\topen: () => void;\n\tclose: () => void;\n\topenChat: (caseId: string, roomId?: string) => void;\n\tselectRoom: (roomId: string, caseId: string) => void;\n\tback: () => void;\n\trefetch: () => void;\n}\n\nexport const ChatSidebarContext = createContext<ChatSidebarContextValue | null>(\n\tnull,\n);\n\nexport function useChatSidebar(): ChatSidebarContextValue {\n\tconst ctx = useContext(ChatSidebarContext);\n\tif (!ctx) {\n\t\tthrow new Error(\"useChatSidebar must be used within a ChatSidebarProvider\");\n\t}\n\treturn ctx;\n}\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\n/**\n * Blocks Context Interfaces\n *\n * These interfaces define the contract that consuming apps must implement\n * to provide context to blocks components. Components will automatically\n * consume these contexts when available, falling back to props otherwise.\n */\n\n// =============================================================================\n// Notifications Context\n// =============================================================================\n\n/**\n * Notification type for blocks components.\n * This is the format that blocks components expect.\n */\nexport interface BlocksNotification {\n\tid: string;\n\ttitle: string;\n\tmessage?: string;\n\ttype?: \"info\" | \"success\" | \"warning\" | \"error\";\n\ttimestamp: Date;\n\tread?: boolean;\n\thref?: string;\n\tchannelId?: string;\n}\n\n/**\n * Notifications context value interface.\n * Consuming apps implement this interface to provide notifications data\n * and actions to blocks components.\n */\nexport interface NotificationsContextValue {\n\t/** List of notifications to display */\n\tnotifications: BlocksNotification[];\n\t/** Count of unread notifications */\n\tunreadCount: number;\n\t/** Mark a single notification as read by ID */\n\tmarkAsRead: (id: string) => void | Promise<void>;\n\t/** Mark all notifications as read */\n\tmarkAllAsRead: () => void | Promise<void>;\n\t/** Dismiss/remove a notification (optional) */\n\tdismiss?: (id: string) => void;\n\t/** Clear all notifications (optional) */\n\tclearAll?: () => void;\n\t/** Handle notification click (optional) */\n\tonNotificationClick?: (notification: BlocksNotification) => void;\n}\n\n/**\n * React context for notifications.\n * Blocks components will consume this context when available.\n */\nexport const NotificationsContext =\n\tcreateContext<NotificationsContextValue | null>(null);\n\n/**\n * Hook to consume the notifications context.\n * Returns null if no provider is present (components should fall back to props).\n */\nexport function useNotificationsContext(): NotificationsContextValue | null {\n\treturn useContext(NotificationsContext);\n}\n\n// =============================================================================\n// Language Context\n// =============================================================================\n\n/**\n * Language definition for the language switcher.\n */\nexport interface BlocksLanguage {\n\tcode: string;\n\tname: string;\n\tflag?: string;\n}\n\n/**\n * Language context value interface.\n * Consuming apps implement this interface to provide language state\n * and actions to blocks components.\n */\nexport interface LanguageContextValue {\n\t/** Current language code (e.g., \"en\", \"es\") */\n\tlanguage: string;\n\t/** Function to change the language */\n\tsetLanguage: (lang: string) => void;\n\t/** Available languages (optional, components have defaults) */\n\tlanguages?: BlocksLanguage[];\n}\n\n/**\n * React context for language.\n * Blocks components will consume this context when available.\n */\nexport const LanguageContext = createContext<LanguageContextValue | null>(null);\n\n/**\n * Hook to consume the language context.\n * Returns null if no provider is present (components should fall back to props).\n */\nexport function useLanguageContext(): LanguageContextValue | null {\n\treturn useContext(LanguageContext);\n}\n\n// =============================================================================\n// Data environment (production / staging / development)\n// =============================================================================\n\n/**\n * Isolated data plane environments aligned with API key environments.\n */\nexport type BlocksDataEnvironment = \"production\" | \"staging\" | \"development\";\n\nexport const BLOCKS_DATA_ENVIRONMENTS: readonly BlocksDataEnvironment[] = [\n\t\"production\",\n\t\"staging\",\n\t\"development\",\n] as const;\n\nexport function isBlocksDataEnvironment(\n\tvalue: string,\n): value is BlocksDataEnvironment {\n\treturn (BLOCKS_DATA_ENVIRONMENTS as readonly string[]).includes(value);\n}\n\n/**\n * Context value for environment switcher / banner.\n * Apps provide persistence (cookie + store) and wire `setEnvironment`.\n */\nexport interface EnvironmentContextValue {\n\tenvironment: BlocksDataEnvironment;\n\tsetEnvironment: (environment: BlocksDataEnvironment) => void;\n\t/** Optional override of environments shown in the switcher */\n\tenvironments?: readonly BlocksDataEnvironment[];\n}\n\nexport const EnvironmentContext = createContext<EnvironmentContextValue | null>(\n\tnull,\n);\n\nexport function useEnvironmentContext(): EnvironmentContextValue | null {\n\treturn useContext(EnvironmentContext);\n}\n\n// =============================================================================\n// Calendar Context (re-export from dedicated module)\n// =============================================================================\n\nexport { CalendarContext, useCalendarContext } from \"./calendar\";\nexport type {\n\tCalendarContextValue,\n\tCalendarEvent,\n\tCalendarData,\n} from \"./calendar\";\n\n// =============================================================================\n// Chat Sidebar Context (re-export from dedicated module)\n// =============================================================================\n\nexport { ChatSidebarContext, useChatSidebar } from \"./chat\";\nexport type {\n\tChatSidebarContextValue,\n\tChatSidebarView,\n\tChatConversation,\n\tChatConversationRoom,\n} from \"./chat\";\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nexport const concatArrays = <T, U>(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map<string, ClassPartObject> = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record<AnyClassGroupIds, ClassGroup<AnyThemeGroupIds>>,\n theme: ThemeObject<AnyThemeGroupIds>,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup<AnyThemeGroupIds>[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key extends string, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = <Key extends string, Value>(\n maxCacheSize: number,\n): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record<Key, Value> = Object.create(null)\n let previousCache: Record<Key, Value> = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map<string, number>()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: scaleInset() }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber] }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { AlertTriangle, Inbox, Loader2, type LucideIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport function LoadingState({\n\tlabel = \"Cargando…\",\n\tclassName,\n}: {\n\tlabel?: string;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<div\n\t\t\trole=\"status\"\n\t\t\taria-live=\"polite\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex items-center justify-center gap-2 py-12 text-sm text-muted-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Loader2 className=\"size-4 animate-spin\" aria-hidden=\"true\" />\n\t\t\t<span>{label}</span>\n\t\t</div>\n\t);\n}\n\nexport function ErrorState({\n\ttitle = \"Algo salió mal\",\n\tdescription,\n\taction,\n\tclassName,\n}: {\n\ttitle?: string;\n\tdescription?: string;\n\taction?: React.ReactNode;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<div\n\t\t\trole=\"alert\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col items-center gap-3 rounded-xl border border-dashed border-destructive/40 bg-destructive/5 py-12 text-center\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<AlertTriangle className=\"size-6 text-destructive\" aria-hidden=\"true\" />\n\t\t\t<div>\n\t\t\t\t<p className=\"font-medium\">{title}</p>\n\t\t\t\t{description ? (\n\t\t\t\t\t<p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t{action}\n\t\t</div>\n\t);\n}\n\nexport type EmptyStateProps = {\n\ttitle: string;\n\tdescription?: string;\n\taction?: React.ReactNode;\n\ticon?: LucideIcon;\n\tvariant?: \"default\" | \"compact\";\n\tclassName?: string;\n};\n\nexport function EmptyState({\n\ttitle,\n\tdescription,\n\taction,\n\ticon: Icon = Inbox,\n\tvariant = \"default\",\n\tclassName,\n}: EmptyStateProps) {\n\tconst isCompact = variant === \"compact\";\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col items-center gap-3 text-center\",\n\t\t\t\tisCompact ? \"px-4 py-6\" : \"rounded-xl border border-dashed py-12\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Icon\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-muted-foreground\",\n\t\t\t\t\tisCompact ? \"size-8 opacity-50\" : \"size-6\",\n\t\t\t\t)}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t<p className={cn(\"font-medium\", isCompact && \"text-sm\")}>{title}</p>\n\t\t\t\t{description ? (\n\t\t\t\t\t<p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t{action}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/** Unclamped menu surface for compact header switchers (theme, language, env). */\nexport const miniMenuContentClassName =\n\t\"max-h-none overflow-x-visible overflow-y-visible\";\n\nexport const miniMenuContentDefaults = {\n\tsideOffset: 8,\n\tcollisionPadding: 12,\n} as const;\n\nfunction DropdownMenu({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n\treturn <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n\t);\n}\n\nfunction DropdownMenuTrigger({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Trigger\n\t\t\tdata-slot=\"dropdown-menu-trigger\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuContent({\n\tclassName,\n\tsideOffset = 4,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Portal>\n\t\t\t<DropdownMenuPrimitive.Content\n\t\t\t\tdata-slot=\"dropdown-menu-content\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[200] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</DropdownMenuPrimitive.Portal>\n\t);\n}\n\nfunction DropdownMenuGroup({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n\t);\n}\n\nfunction DropdownMenuItem({\n\tclassName,\n\tinset,\n\tvariant = \"default\",\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n\tinset?: boolean;\n\tvariant?: \"default\" | \"destructive\";\n}) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Item\n\t\t\tdata-slot=\"dropdown-menu-item\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:data-[highlighted]:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 dark:data-[variant=destructive]:data-[highlighted]:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:data-[highlighted]:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuCheckboxItem({\n\tclassName,\n\tchildren,\n\tchecked,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.CheckboxItem\n\t\t\tdata-slot=\"dropdown-menu-checkbox-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tchecked={checked}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t\t<CheckIcon className=\"size-4\" />\n\t\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</DropdownMenuPrimitive.CheckboxItem>\n\t);\n}\n\nfunction DropdownMenuRadioGroup({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.RadioGroup\n\t\t\tdata-slot=\"dropdown-menu-radio-group\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuRadioItem({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.RadioItem\n\t\t\tdata-slot=\"dropdown-menu-radio-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t\t<CircleIcon className=\"size-2 fill-current\" />\n\t\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</DropdownMenuPrimitive.RadioItem>\n\t);\n}\n\nfunction DropdownMenuLabel({\n\tclassName,\n\tinset,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n\tinset?: boolean;\n}) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Label\n\t\t\tdata-slot=\"dropdown-menu-label\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuSeparator({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Separator\n\t\t\tdata-slot=\"dropdown-menu-separator\"\n\t\t\tclassName={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuShortcut({\n\tclassName,\n\t...props\n}: React.ComponentProps<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"dropdown-menu-shortcut\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground ml-auto text-xs tracking-widest\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuSub({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n\treturn <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n\tclassName,\n\tinset,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n\tinset?: boolean;\n}) {\n\treturn (\n\t\t<DropdownMenuPrimitive.SubTrigger\n\t\t\tdata-slot=\"dropdown-menu-sub-trigger\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ChevronRightIcon className=\"ml-auto size-4\" />\n\t\t</DropdownMenuPrimitive.SubTrigger>\n\t);\n}\n\nfunction DropdownMenuSubContent({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.SubContent\n\t\t\tdata-slot=\"dropdown-menu-sub-content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDropdownMenu,\n\tDropdownMenuPortal,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuItem,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuSub,\n\tDropdownMenuSubTrigger,\n\tDropdownMenuSubContent,\n};\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n\t\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border bg-background text-foreground shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:text-foreground dark:hover:bg-muted dark:hover:text-foreground\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n\t\t\t\tghost:\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 dark:hover:text-foreground\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n\t\t\t\tsm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n\t\t\t\tlg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n\t\t\t\ticon: \"size-9\",\n\t\t\t\t\"icon-sm\": \"size-8\",\n\t\t\t\t\"icon-lg\": \"size-10\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nfunction Button({\n\tclassName,\n\tvariant = \"default\",\n\tsize = \"default\",\n\tasChild = false,\n\t...props\n}: React.ComponentProps<\"button\"> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tasChild?: boolean;\n\t}) {\n\tconst Comp = asChild ? Slot : \"button\";\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-slot=\"button\"\n\t\t\tdata-variant={variant}\n\t\t\tdata-size={size}\n\t\t\tclassName={cn(buttonVariants({ variant, size, className }))}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport { useTheme } from \"next-themes\";\nimport { Monitor, Moon, Sun } from \"lucide-react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { useEffect, useState, useCallback } from \"react\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n\tminiMenuContentClassName,\n\tminiMenuContentDefaults,\n} from \"./ui/dropdown-menu\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\n\ntype ThemeKey = \"system\" | \"light\" | \"dark\";\n\nexport type ThemeSwitcherLabels = {\n\t/** Tooltip label for the theme switcher */\n\ttheme?: string;\n\t/** Label for \"System\" option */\n\tsystem?: string;\n\t/** Label for \"Light\" option */\n\tlight?: string;\n\t/** Label for \"Dark\" option */\n\tdark?: string;\n};\n\nconst defaultLabels: Required<ThemeSwitcherLabels> = {\n\ttheme: \"Theme\",\n\tsystem: \"System\",\n\tlight: \"Light\",\n\tdark: \"Dark\",\n};\n\nexport type ThemeSwitcherProps = {\n\tclassName?: string;\n\t/** Size of the switcher */\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\t/** Shape of the button */\n\tshape?: \"rounded\" | \"pill\";\n\t/** Mini variant shows only current theme icon as dropdown */\n\tvariant?: \"default\" | \"mini\";\n\t/** Dropdown alignment (for mini variant) */\n\talign?: \"start\" | \"center\" | \"end\";\n\t/** Dropdown side (for mini variant) */\n\tside?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipAlign?: \"start\" | \"center\" | \"end\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSideOffset?: number;\n\t/** Translation labels - consumers can pass their own t() values */\n\tlabels?: ThemeSwitcherLabels;\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\tcontainer: \"h-7 p-0.5\",\n\t\tbutton: \"h-6 w-6\",\n\t\tbuttonMini: \"h-7 w-7\",\n\t\ticon: \"h-3.5 w-3.5\",\n\t\ticonMini: \"h-3.5 w-3.5\",\n\t},\n\tmd: {\n\t\tcontainer: \"h-8 p-1\",\n\t\tbutton: \"h-6 w-6\",\n\t\tbuttonMini: \"h-8 w-8\",\n\t\ticon: \"h-4 w-4\",\n\t\ticonMini: \"h-4 w-4\",\n\t},\n\tlg: {\n\t\tcontainer: \"h-9 p-1\",\n\t\tbutton: \"h-7 w-7\",\n\t\tbuttonMini: \"h-9 w-9\",\n\t\ticon: \"h-4 w-4\",\n\t\ticonMini: \"h-4.5 w-4.5\",\n\t},\n};\n\nconst shapeClasses = {\n\trounded: \"rounded-md\",\n\tpill: \"rounded-full\",\n};\n\nconst themes = [\n\t{ key: \"system\" as const, icon: Monitor },\n\t{ key: \"light\" as const, icon: Sun },\n\t{ key: \"dark\" as const, icon: Moon },\n];\n\nexport function ThemeSwitcher({\n\tclassName,\n\tsize = \"sm\",\n\tshape = \"rounded\",\n\tvariant = \"default\",\n\talign = \"end\",\n\tside = \"bottom\",\n\tlabels: userLabels,\n}: ThemeSwitcherProps) {\n\tconst { theme, setTheme } = useTheme();\n\tconst [mounted, setMounted] = useState(false);\n\tconst sizes = sizeClasses[size];\n\tconst shapeClass = shapeClasses[shape];\n\n\t// Merge user labels with defaults\n\tconst labels = { ...defaultLabels, ...userLabels };\n\n\tconst handleThemeClick = useCallback(\n\t\t(themeKey: ThemeKey) => {\n\t\t\tsetTheme(themeKey);\n\t\t},\n\t\t[setTheme],\n\t);\n\n\t// Prevent hydration mismatch\n\tuseEffect(() => {\n\t\tsetMounted(true);\n\t}, []);\n\n\tif (!mounted) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\tvariant === \"mini\" ? sizes.buttonMini : sizes.container,\n\t\t\t\t\tshapeClass,\n\t\t\t\t\tvariant === \"default\" && \"bg-background ring-1 ring-border\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst currentTheme = theme as ThemeKey;\n\tconst CurrentIcon =\n\t\tthemes.find((t) => t.key === currentTheme)?.icon || Monitor;\n\n\t// Mini variant - dropdown with current theme icon\n\tif (variant === \"mini\") {\n\t\treturn (\n\t\t\t<DropdownMenu modal={false}>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-testid=\"theme-switcher\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\taria-label={labels.theme}\n\t\t\t\t\t\tclassName={cn(sizes.buttonMini, shapeClass, className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<CurrentIcon className={sizes.iconMini} />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tside={side}\n\t\t\t\t\talign={align}\n\t\t\t\t\tsideOffset={miniMenuContentDefaults.sideOffset}\n\t\t\t\t\tcollisionPadding={miniMenuContentDefaults.collisionPadding}\n\t\t\t\t\tclassName={miniMenuContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{themes.map(({ key, icon: Icon }) => (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tonClick={() => handleThemeClick(key)}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"gap-2 cursor-pointer\",\n\t\t\t\t\t\t\t\tcurrentTheme === key &&\n\t\t\t\t\t\t\t\t\t\"bg-accent text-accent-foreground [&_svg]:text-accent-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t<span>{labels[key]}</span>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t);\n\t}\n\n\t// Default variant - segmented control\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"theme-switcher\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative isolate flex bg-background ring-1 ring-border\",\n\t\t\t\tsizes.container,\n\t\t\t\tshapeClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{themes.map(({ key, icon: Icon }) => {\n\t\t\t\tconst isActive = currentTheme === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-label={labels[key]}\n\t\t\t\t\t\tclassName={cn(\"relative\", sizes.button, shapeClass)}\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tonClick={() => handleThemeClick(key)}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t\t{isActive && (\n\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\tclassName={cn(\"absolute inset-0 bg-secondary\", shapeClass)}\n\t\t\t\t\t\t\t\t\tlayoutId=\"activeTheme\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\ttransition={{ type: \"spring\", duration: 0.5 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"relative z-10 m-auto\",\n\t\t\t\t\t\t\t\tsizes.icon,\n\t\t\t\t\t\t\t\tisActive ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { Building2, Check, ChevronsUpDown, Plus } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./ui/button\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuTrigger,\n} from \"./ui/dropdown-menu\";\n\nexport type OrgSwitcherTenant = {\n\tid: string;\n\tname: string;\n\tlogo?: string | null;\n\trole?: string;\n\tstatusBadge?: ReactNode;\n};\n\nexport type OrgSwitcherLabels = {\n\t/** Dropdown section heading */\n\theading?: string;\n\t/** Create action label */\n\tcreate?: string;\n\t/** Empty state when no active tenant */\n\tempty?: string;\n};\n\nconst defaultLabels: Required<OrgSwitcherLabels> = {\n\theading: \"Organizations\",\n\tcreate: \"Create organization\",\n\tempty: \"No organization selected\",\n};\n\nfunction TenantAvatar({\n\tname,\n\tlogo,\n\tsize = \"md\",\n}: {\n\tname: string;\n\tlogo?: string | null;\n\tsize?: \"sm\" | \"md\";\n}) {\n\tconst sizeClass = size === \"sm\" ? \"size-6 rounded-md\" : \"size-8 rounded-lg\";\n\tconst textClass = size === \"sm\" ? \"text-xs\" : \"text-sm\";\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex shrink-0 items-center justify-center overflow-hidden bg-muted font-medium text-muted-foreground\",\n\t\t\t\tsizeClass,\n\t\t\t)}\n\t\t>\n\t\t\t{logo ? (\n\t\t\t\t<img src={logo} alt=\"\" className=\"size-full object-cover\" />\n\t\t\t) : (\n\t\t\t\t<span className={textClass}>{name.charAt(0).toUpperCase()}</span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction SwitcherSkeleton({ className }: { className?: string }) {\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"org-switcher-skeleton\"\n\t\t\tclassName={cn(\n\t\t\t\t\"pointer-events-none flex h-12 min-h-12 w-full items-center gap-2 rounded-md px-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"size-8 shrink-0 animate-pulse rounded-lg bg-muted\" />\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n\t\t\t\t<div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n\t\t\t\t<div className=\"h-3 w-16 animate-pulse rounded bg-muted\" />\n\t\t\t</div>\n\t\t\t<div className=\"ml-auto size-4 shrink-0 animate-pulse rounded-sm bg-muted\" />\n\t\t</div>\n\t);\n}\n\nconst triggerClassName =\n\t\"flex h-12 min-h-12 w-full items-center gap-2 rounded-md px-2 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\";\n\nexport type OrgSwitcherProps = {\n\tactiveTenant: OrgSwitcherTenant | null;\n\ttenants: OrgSwitcherTenant[];\n\tonSelectTenant: (id: string) => void;\n\tcreateUrl?: string;\n\tisLoading?: boolean;\n\tcollapsed?: boolean;\n\tisMobile?: boolean;\n\tactiveSubtitle?: string;\n\tlabels?: OrgSwitcherLabels;\n\tclassName?: string;\n\ttriggerClassName?: string;\n};\n\nexport function OrgSwitcher({\n\tactiveTenant,\n\ttenants,\n\tonSelectTenant,\n\tcreateUrl,\n\tisLoading = false,\n\tcollapsed = false,\n\tisMobile = false,\n\tactiveSubtitle,\n\tlabels: userLabels,\n\tclassName,\n\ttriggerClassName: triggerClassNameProp,\n}: OrgSwitcherProps) {\n\tconst labels = { ...defaultLabels, ...userLabels };\n\n\tif (isLoading) {\n\t\treturn <SwitcherSkeleton className={className} />;\n\t}\n\n\tif (!activeTenant) {\n\t\tif (createUrl) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\thref={createUrl}\n\t\t\t\t\tdata-testid=\"org-switcher-empty\"\n\t\t\t\t\tclassName={cn(triggerClassName, className, triggerClassNameProp)}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n\t\t\t\t\t\t<Building2 className=\"size-4 text-muted-foreground\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"grid min-w-0 flex-1 text-left leading-tight\">\n\t\t\t\t\t\t<span className=\"truncate font-medium\">{labels.empty}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-testid=\"org-switcher-empty\"\n\t\t\t\tclassName={cn(triggerClassName, \"pointer-events-none\", className)}\n\t\t\t>\n\t\t\t\t<div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n\t\t\t\t\t<Building2 className=\"size-4 text-muted-foreground\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"grid min-w-0 flex-1 text-left leading-tight\">\n\t\t\t\t\t<span className=\"truncate font-medium text-muted-foreground\">\n\t\t\t\t\t\t{labels.empty}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tdata-testid=\"org-switcher\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\ttriggerClassName,\n\t\t\t\t\t\t\"h-auto justify-start font-normal\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\ttriggerClassNameProp,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<TenantAvatar name={activeTenant.name} logo={activeTenant.logo} />\n\t\t\t\t\t{!collapsed ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 flex-1 text-left leading-tight\">\n\t\t\t\t\t\t\t\t<span className=\"truncate font-semibold\">\n\t\t\t\t\t\t\t\t\t{activeTenant.name}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{activeSubtitle ? (\n\t\t\t\t\t\t\t\t\t<span className=\"truncate text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{activeSubtitle}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{activeTenant.statusBadge}\n\t\t\t\t\t\t\t<ChevronsUpDown className=\"ml-auto size-4 shrink-0 opacity-50\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</Button>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent\n\t\t\t\tclassName=\"min-w-64 rounded-lg\"\n\t\t\t\talign=\"start\"\n\t\t\t\tside={isMobile ? \"bottom\" : \"right\"}\n\t\t\t\tsideOffset={4}\n\t\t\t>\n\t\t\t\t<DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t{labels.heading}\n\t\t\t\t</DropdownMenuLabel>\n\t\t\t\t{tenants.map((tenant, index) => {\n\t\t\t\t\tconst isActive = tenant.id === activeTenant.id;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={tenant.id}\n\t\t\t\t\t\t\tonClick={() => onSelectTenant(tenant.id)}\n\t\t\t\t\t\t\tclassName=\"gap-2 p-2\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<TenantAvatar name={tenant.name} logo={tenant.logo} size=\"sm\" />\n\t\t\t\t\t\t\t<span className=\"flex-1 whitespace-normal break-words\">\n\t\t\t\t\t\t\t\t{tenant.name}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{tenant.statusBadge}\n\t\t\t\t\t\t\t{isActive ? (\n\t\t\t\t\t\t\t\t<Check className=\"size-4 shrink-0 opacity-70\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<DropdownMenuShortcut>\n\t\t\t\t\t\t\t\t\t{String.fromCharCode(65 + index)}\n\t\t\t\t\t\t\t\t</DropdownMenuShortcut>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{createUrl ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t<DropdownMenuItem className=\"gap-2 p-2\" asChild>\n\t\t\t\t\t\t\t<a href={createUrl}>\n\t\t\t\t\t\t\t\t<div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n\t\t\t\t\t\t\t\t\t<Plus className=\"size-4\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"font-medium text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{labels.create}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t</>\n\t\t\t\t) : null}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n","\"use client\";\n\nimport { Languages } from \"lucide-react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n\tminiMenuContentClassName,\n\tminiMenuContentDefaults,\n} from \"./ui/dropdown-menu\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\nimport { useLanguageContext } from \"../contexts\";\n\nexport type Language = {\n\t/** Language key/code (e.g., \"en\", \"es\") */\n\tkey: string;\n\t/** Short label for segmented control (e.g., \"EN\", \"ES\") */\n\tlabel: string;\n\t/** Full native name for dropdown (e.g., \"English\", \"Español\") */\n\tnativeName: string;\n};\n\nexport type LanguageSwitcherLabels = {\n\t/** Tooltip label for the language switcher */\n\tlanguage?: string;\n};\n\n/**\n * Default languages when none are provided via props or context.\n */\nexport const defaultLanguages: Language[] = [\n\t{ key: \"en\", label: \"EN\", nativeName: \"English\" },\n\t{ key: \"es\", label: \"ES\", nativeName: \"Español\" },\n];\n\nexport type LanguageSwitcherProps = {\n\t/**\n\t * Available languages. Optional if using LanguageContext.\n\t * When context is available, context.languages is used; props override context.\n\t * Falls back to defaultLanguages if neither provided.\n\t */\n\tlanguages?: Language[];\n\t/**\n\t * Current selected language key. Optional if using LanguageContext.\n\t * When context is available, context.language is used; props override context.\n\t */\n\tcurrentLanguage?: string;\n\t/**\n\t * Callback when language changes. Optional if using LanguageContext.\n\t * When context is available, context.setLanguage is used; props override context.\n\t */\n\tonLanguageChange?: (languageKey: string) => void;\n\t/** Labels for accessibility/tooltips */\n\tlabels?: LanguageSwitcherLabels;\n\tclassName?: string;\n\t/** Size of the switcher */\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\t/** Shape of the button */\n\tshape?: \"rounded\" | \"squared\" | \"pill\";\n\t/** Mini variant shows only an icon */\n\tvariant?: \"default\" | \"mini\";\n\t/** Show language icon in default variant */\n\tshowIcon?: boolean;\n\t/** Dropdown alignment */\n\talign?: \"start\" | \"center\" | \"end\";\n\t/** Dropdown side */\n\tside?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipAlign?: \"start\" | \"center\" | \"end\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSideOffset?: number;\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\tcontainer: \"h-7 p-0.5 text-xs\",\n\t\tbutton: \"h-6 px-2\",\n\t\tbuttonMini: \"h-7 w-7\",\n\t\ticon: \"size-3\",\n\t\ticonMini: \"size-3.5\",\n\t},\n\tmd: {\n\t\tcontainer: \"h-8 p-0.5 text-xs\",\n\t\tbutton: \"h-7 px-2.5\",\n\t\tbuttonMini: \"h-8 w-8\",\n\t\ticon: \"size-3.5\",\n\t\ticonMini: \"size-4\",\n\t},\n\tlg: {\n\t\tcontainer: \"h-9 p-0.5 text-sm\",\n\t\tbutton: \"h-8 px-3\",\n\t\tbuttonMini: \"h-9 w-9\",\n\t\ticon: \"size-4\",\n\t\ticonMini: \"size-4.5\",\n\t},\n};\n\nconst shapeClasses = {\n\trounded: \"rounded-md\",\n\tsquared: \"rounded-sm\",\n\tpill: \"rounded-full\",\n};\n\nexport function LanguageSwitcher({\n\tlanguages: propLanguages,\n\tcurrentLanguage: propCurrentLanguage,\n\tonLanguageChange: propOnLanguageChange,\n\tlabels = {},\n\tclassName,\n\tsize = \"sm\",\n\tshape = \"rounded\",\n\tvariant = \"default\",\n\tshowIcon = true,\n\talign = \"end\",\n\tside = \"bottom\",\n}: LanguageSwitcherProps) {\n\t// Try to get context values (returns null if no provider)\n\tconst context = useLanguageContext();\n\n\t// Map context languages format to component's Language format if needed\n\tconst contextLanguages = context?.languages?.map((lang) => ({\n\t\tkey: lang.code,\n\t\tlabel: lang.code.toUpperCase(),\n\t\tnativeName: lang.name,\n\t}));\n\n\t// Use props first, then context, then defaults\n\tconst languages = propLanguages ?? contextLanguages ?? defaultLanguages;\n\tconst currentLanguage = propCurrentLanguage ?? context?.language ?? \"en\";\n\tconst onLanguageChange = propOnLanguageChange ?? context?.setLanguage;\n\n\tconst sizes = sizeClasses[size];\n\tconst shapeClass = shapeClasses[shape];\n\n\tconst defaultLabels: Required<LanguageSwitcherLabels> = {\n\t\tlanguage: labels.language ?? \"Language\",\n\t};\n\n\t// Mini variant - dropdown with language icon\n\tif (variant === \"mini\") {\n\t\treturn (\n\t\t\t<DropdownMenu modal={false}>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\taria-label={defaultLabels.language}\n\t\t\t\t\t\tclassName={cn(sizes.buttonMini, shapeClass, className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Languages className={sizes.iconMini} />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tside={side}\n\t\t\t\t\talign={align}\n\t\t\t\t\tsideOffset={miniMenuContentDefaults.sideOffset}\n\t\t\t\t\tcollisionPadding={miniMenuContentDefaults.collisionPadding}\n\t\t\t\t\tclassName={cn(miniMenuContentClassName, \"min-w-0 w-auto\")}\n\t\t\t\t>\n\t\t\t\t\t{languages.map(({ key, nativeName }) => (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tonClick={() => onLanguageChange?.(key)}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"justify-center text-xs font-semibold cursor-pointer px-3\",\n\t\t\t\t\t\t\t\tcurrentLanguage === key && \"bg-accent text-accent-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{nativeName}\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t);\n\t}\n\n\t// Default variant - segmented control\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"relative isolate flex items-center bg-background ring-1 ring-border\",\n\t\t\t\tsizes.container,\n\t\t\t\tshapeClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{showIcon && (\n\t\t\t\t<Languages\n\t\t\t\t\tclassName={cn(sizes.icon, \"ml-1.5 mr-1.5 text-muted-foreground\")}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{languages.map(({ key, label }) => {\n\t\t\t\tconst isActive = currentLanguage === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-label={label}\n\t\t\t\t\t\tclassName={cn(\"relative font-semibold\", sizes.button, shapeClass)}\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tonClick={() => onLanguageChange?.(key)}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t\t{isActive && (\n\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\tclassName={cn(\"absolute inset-0 bg-secondary\", shapeClass)}\n\t\t\t\t\t\t\t\t\tlayoutId=\"activeLanguage\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\ttransition={{ type: \"spring\", duration: 0.5 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"relative z-10\",\n\t\t\t\t\t\t\t\tisActive ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { FlaskConical } from \"lucide-react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n\tminiMenuContentClassName,\n\tminiMenuContentDefaults,\n} from \"./ui/dropdown-menu\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\nimport {\n\tuseEnvironmentContext,\n\tBLOCKS_DATA_ENVIRONMENTS,\n\ttype BlocksDataEnvironment,\n} from \"../contexts\";\n\nexport type EnvironmentSwitcherLabels = {\n\t/** Tooltip / aria for the control */\n\tenvironment?: string;\n\tlive?: string;\n\tstaging?: string;\n\tdevelopment?: string;\n};\n\nconst defaultLabels: Required<EnvironmentSwitcherLabels> = {\n\tenvironment: \"Data environment\",\n\tlive: \"Live\",\n\tstaging: \"Staging\",\n\tdevelopment: \"Development\",\n};\n\n/** Tailwind background class for the environment status dot. */\nexport function getEnvironmentDotClass(env: BlocksDataEnvironment): string {\n\tswitch (env) {\n\t\tcase \"production\":\n\t\t\treturn \"bg-emerald-500\";\n\t\tcase \"staging\":\n\t\t\treturn \"bg-orange-500\";\n\t\tcase \"development\":\n\t\t\treturn \"bg-amber-400\";\n\t\tdefault:\n\t\t\treturn \"bg-muted-foreground\";\n\t}\n}\n\n/** Resolved menu label for an environment (uses merged `labels`). */\nexport function getEnvironmentLabel(\n\tenv: BlocksDataEnvironment,\n\tlabels: Required<EnvironmentSwitcherLabels>,\n): string {\n\tswitch (env) {\n\t\tcase \"production\":\n\t\t\treturn labels.live;\n\t\tcase \"staging\":\n\t\t\treturn labels.staging;\n\t\tcase \"development\":\n\t\t\treturn labels.development;\n\t\tdefault:\n\t\t\treturn env;\n\t}\n}\n\nfunction abbreviateEnvironment(env: BlocksDataEnvironment): string {\n\tswitch (env) {\n\t\tcase \"production\":\n\t\t\treturn \"Prod\";\n\t\tcase \"staging\":\n\t\t\treturn \"Stg\";\n\t\tcase \"development\":\n\t\t\treturn \"Dev\";\n\t\tdefault:\n\t\t\treturn env;\n\t}\n}\n\nconst environmentDotSizeClasses = {\n\txs: \"size-1.5\",\n\tsm: \"size-2\",\n\tmd: \"size-2.5\",\n} as const;\n\nexport type EnvironmentDotProps = {\n\tenv: BlocksDataEnvironment;\n\tsize?: keyof typeof environmentDotSizeClasses;\n\tclassName?: string;\n};\n\n/** Non-interactive colored dot for an environment (e.g. overlays, menus). */\nexport function EnvironmentDot({\n\tenv,\n\tsize = \"sm\",\n\tclassName,\n}: EnvironmentDotProps) {\n\tconst sizeClass = environmentDotSizeClasses[size];\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\tsizeClass,\n\t\t\t\tgetEnvironmentDotClass(env),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-hidden\n\t\t/>\n\t);\n}\n\nexport type EnvironmentMiniBadgeProps = {\n\tclassName?: string;\n\t/** Current environment; falls back to `EnvironmentContext` when omitted. */\n\tenvironment?: BlocksDataEnvironment;\n\tlabels?: EnvironmentSwitcherLabels;\n\t/**\n\t * When true (default), shows short Prod / Stg / Dev text.\n\t * When false, uses `getEnvironmentLabel` with merged labels (i18n-friendly).\n\t */\n\tabbreviated?: boolean;\n};\n\n/**\n * Compact pill (dot + label) for embedding in other controls (e.g. org switcher trigger).\n * Not a button — parent provides interaction.\n */\nexport function EnvironmentMiniBadge({\n\tclassName,\n\tenvironment: propEnvironment,\n\tlabels: userLabels,\n\tabbreviated = true,\n}: EnvironmentMiniBadgeProps) {\n\tconst ctx = useEnvironmentContext();\n\tconst labels = { ...defaultLabels, ...userLabels };\n\tconst environment =\n\t\tpropEnvironment ??\n\t\tctx?.environment ??\n\t\t(\"production\" as BlocksDataEnvironment);\n\tconst text = abbreviated\n\t\t? abbreviateEnvironment(environment)\n\t\t: getEnvironmentLabel(environment, labels);\n\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex max-w-[4.5rem] items-center gap-1 rounded-full border border-border bg-muted/60 px-1.5 py-0.5 text-[10px] font-semibold tabular-nums text-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<EnvironmentDot env={environment} size=\"xs\" />\n\t\t\t<span className=\"min-w-0 truncate\">{text}</span>\n\t\t</span>\n\t);\n}\n\nexport type EnvironmentSwitcherProps = {\n\tclassName?: string;\n\t/** Current environment. Overrides context when set. */\n\tenvironment?: BlocksDataEnvironment;\n\t/** Called after user selects an environment. Overrides context when set. */\n\tonEnvironmentChange?: (environment: BlocksDataEnvironment) => void;\n\t/** Environments shown in the menu (defaults to all three) */\n\tenvironments?: readonly BlocksDataEnvironment[];\n\tlabels?: EnvironmentSwitcherLabels;\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\tshape?: \"rounded\" | \"pill\";\n\tvariant?: \"default\" | \"mini\";\n\talign?: \"start\" | \"center\" | \"end\";\n\tside?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipAlign?: \"start\" | \"center\" | \"end\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSideOffset?: number;\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\tcontainer: \"h-7 p-0.5 text-xs\",\n\t\tbutton: \"h-6 px-2\",\n\t\tbuttonMini: \"h-7 gap-1.5 px-2\",\n\t\tdot: \"size-2\",\n\t\ticonMini: \"size-3.5\",\n\t},\n\tmd: {\n\t\tcontainer: \"h-8 p-0.5 text-xs\",\n\t\tbutton: \"h-7 px-2.5\",\n\t\tbuttonMini: \"h-8 gap-2 px-2.5\",\n\t\tdot: \"size-2.5\",\n\t\ticonMini: \"size-4\",\n\t},\n\tlg: {\n\t\tcontainer: \"h-9 p-0.5 text-sm\",\n\t\tbutton: \"h-8 px-3\",\n\t\tbuttonMini: \"h-9 gap-2 px-3\",\n\t\tdot: \"size-2.5\",\n\t\ticonMini: \"size-4\",\n\t},\n};\n\nconst shapeClasses = {\n\trounded: \"rounded-md\",\n\tpill: \"rounded-full\",\n};\n\nexport function EnvironmentSwitcher({\n\tclassName,\n\tenvironment: propEnvironment,\n\tonEnvironmentChange: propOnEnvironmentChange,\n\tenvironments: propEnvironments,\n\tlabels: userLabels,\n\tsize = \"sm\",\n\tshape = \"rounded\",\n\tvariant = \"mini\",\n\talign = \"end\",\n\tside = \"bottom\",\n}: EnvironmentSwitcherProps) {\n\tconst ctx = useEnvironmentContext();\n\tconst labels = { ...defaultLabels, ...userLabels };\n\n\tconst environments =\n\t\tpropEnvironments ??\n\t\tctx?.environments ??\n\t\t([...BLOCKS_DATA_ENVIRONMENTS] as readonly BlocksDataEnvironment[]);\n\n\tconst environment =\n\t\tpropEnvironment ??\n\t\tctx?.environment ??\n\t\t(\"production\" as BlocksDataEnvironment);\n\tconst setEnvironment =\n\t\tpropOnEnvironmentChange ?? ctx?.setEnvironment ?? (() => {});\n\n\tconst sizes = sizeClasses[size];\n\tconst shapeClass = shapeClasses[shape];\n\n\tconst handleSelect = (next: BlocksDataEnvironment) => {\n\t\tif (next === environment) return;\n\t\tsetEnvironment(next);\n\t};\n\n\t// Mini: compact trigger + dropdown\n\tif (variant === \"mini\") {\n\t\treturn (\n\t\t\t<DropdownMenu modal={false}>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-testid=\"environment-switcher\"\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\taria-label={labels.environment}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tsizes.buttonMini,\n\t\t\t\t\t\t\tshapeClass,\n\t\t\t\t\t\t\t\"font-medium tabular-nums border-border bg-background\",\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\t\t\t\t\tsizes.dot,\n\t\t\t\t\t\t\t\tgetEnvironmentDotClass(environment),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span className=\"max-w-[5.5rem] truncate\">\n\t\t\t\t\t\t\t{getEnvironmentLabel(environment, labels)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tside={side}\n\t\t\t\t\talign={align}\n\t\t\t\t\tsideOffset={miniMenuContentDefaults.sideOffset}\n\t\t\t\t\tcollisionPadding={miniMenuContentDefaults.collisionPadding}\n\t\t\t\t\tclassName={miniMenuContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{environments.map((env) => (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={env}\n\t\t\t\t\t\t\tonClick={() => handleSelect(env)}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"gap-2 cursor-pointer\",\n\t\t\t\t\t\t\t\tenvironment === env &&\n\t\t\t\t\t\t\t\t\t\"bg-accent text-accent-foreground [&_svg]:text-accent-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\t\t\t\t\t\tsizes.dot,\n\t\t\t\t\t\t\t\t\tgetEnvironmentDotClass(env),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<span>{getEnvironmentLabel(env, labels)}</span>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t);\n\t}\n\n\t// Default: segmented control (icon + three envs)\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"environment-switcher\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative isolate flex items-center bg-background ring-1 ring-border\",\n\t\t\t\tsizes.container,\n\t\t\t\tshapeClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<FlaskConical\n\t\t\t\tclassName={cn(sizes.iconMini, \"ml-1.5 mr-1 text-muted-foreground\")}\n\t\t\t\taria-hidden\n\t\t\t/>\n\t\t\t{environments.map((env) => {\n\t\t\t\tconst isActive = environment === env;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tkey={env}\n\t\t\t\t\t\taria-label={getEnvironmentLabel(env, labels)}\n\t\t\t\t\t\taria-pressed={isActive}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"relative min-w-0 font-semibold capitalize\",\n\t\t\t\t\t\t\tsizes.button,\n\t\t\t\t\t\t\tshapeClass,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonClick={() => handleSelect(env)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t\t{isActive && (\n\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\tclassName={cn(\"absolute inset-0 bg-secondary\", shapeClass)}\n\t\t\t\t\t\t\t\t\tlayoutId=\"activeEnvironment\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\ttransition={{ type: \"spring\", duration: 0.5 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"relative z-10 flex max-w-[4.5rem] items-center justify-center gap-1 truncate sm:max-w-[6rem]\",\n\t\t\t\t\t\t\t\tisActive ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\t\t\t\t\t\t\"h-1.5 w-1.5\",\n\t\t\t\t\t\t\t\t\tgetEnvironmentDotClass(env),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{getEnvironmentLabel(env, labels)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\nimport { useEnvironmentContext, type BlocksDataEnvironment } from \"../contexts\";\n\nexport type EnvironmentBannerLabels = {\n\tstagingMessage?: string;\n\tdevelopmentMessage?: string;\n\tdismiss?: string;\n};\n\nconst defaultLabels: Required<EnvironmentBannerLabels> = {\n\tstagingMessage:\n\t\t\"You are viewing staging data — changes do not affect live customers.\",\n\tdevelopmentMessage: \"You are viewing development data — for testing only.\",\n\tdismiss: \"Dismiss\",\n};\n\nexport type EnvironmentBannerProps = {\n\tclassName?: string;\n\t/** Overrides context when set */\n\tenvironment?: BlocksDataEnvironment;\n\tlabels?: EnvironmentBannerLabels;\n\t/** When false, banner is not shown (e.g. embed) */\n\tenabled?: boolean;\n};\n\nexport function EnvironmentBanner({\n\tclassName,\n\tenvironment: propEnvironment,\n\tlabels: userLabels,\n\tenabled = true,\n}: EnvironmentBannerProps) {\n\tconst ctx = useEnvironmentContext();\n\tconst labels = { ...defaultLabels, ...userLabels };\n\tconst [dismissed, setDismissed] = useState(false);\n\n\tconst environment =\n\t\tpropEnvironment ??\n\t\tctx?.environment ??\n\t\t(\"production\" as BlocksDataEnvironment);\n\n\tconst handleDismiss = useCallback(() => {\n\t\tsetDismissed(true);\n\t}, []);\n\n\tif (!enabled || dismissed || environment === \"production\") {\n\t\treturn null;\n\t}\n\n\tconst isStaging = environment === \"staging\";\n\tconst message = isStaging ? labels.stagingMessage : labels.developmentMessage;\n\n\treturn (\n\t\t<div\n\t\t\trole=\"status\"\n\t\t\tdata-testid=\"environment-banner\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-full items-center justify-center gap-2 border-b px-3 py-2 text-center text-sm font-medium\",\n\t\t\t\tisStaging\n\t\t\t\t\t? \"border-orange-500/30 bg-orange-500/15 text-orange-950 dark:text-orange-100\"\n\t\t\t\t\t: \"border-amber-500/30 bg-amber-500/15 text-amber-950 dark:text-amber-100\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<span className=\"min-w-0 flex-1\">{message}</span>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tsize=\"icon\"\n\t\t\t\tclassName=\"h-7 w-7 shrink-0 opacity-80 hover:opacity-100\"\n\t\t\t\tonClick={handleDismiss}\n\t\t\t\taria-label={labels.dismiss}\n\t\t\t>\n\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Slider({\n\tclassName,\n\tdefaultValue,\n\tvalue,\n\tmin = 0,\n\tmax = 100,\n\t...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n\tconst _values = React.useMemo(\n\t\t() =>\n\t\t\tArray.isArray(value)\n\t\t\t\t? value\n\t\t\t\t: Array.isArray(defaultValue)\n\t\t\t\t\t? defaultValue\n\t\t\t\t\t: [min, max],\n\t\t[value, defaultValue, min, max],\n\t);\n\n\treturn (\n\t\t<SliderPrimitive.Root\n\t\t\tdata-slot=\"slider\"\n\t\t\tdefaultValue={defaultValue}\n\t\t\tvalue={value}\n\t\t\tmin={min}\n\t\t\tmax={max}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SliderPrimitive.Track\n\t\t\t\tdata-slot=\"slider-track\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<SliderPrimitive.Range\n\t\t\t\t\tdata-slot=\"slider-range\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t</SliderPrimitive.Track>\n\t\t\t{Array.from({ length: _values.length }, (_, index) => (\n\t\t\t\t<SliderPrimitive.Thumb\n\t\t\t\t\tdata-slot=\"slider-thumb\"\n\t\t\t\t\tkey={index}\n\t\t\t\t\tclassName=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n\t\t\t\t/>\n\t\t\t))}\n\t\t</SliderPrimitive.Root>\n\t);\n}\n\nexport { Slider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst toggleVariants = cva(\n\t\"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-transparent\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-9 px-2 min-w-9\",\n\t\t\t\tsm: \"h-8 px-1.5 min-w-8\",\n\t\t\t\tlg: \"h-10 px-2.5 min-w-10\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nfunction Toggle({\n\tclassName,\n\tvariant,\n\tsize,\n\t...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n\tVariantProps<typeof toggleVariants>) {\n\treturn (\n\t\t<TogglePrimitive.Root\n\t\t\tdata-slot=\"toggle\"\n\t\t\tclassName={cn(toggleVariants({ variant, size, className }))}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Toggle, toggleVariants };\n","/**\n * @name AvatarEditor\n * @description A compact, reusable avatar editor component that fits within a square container.\n * Supports image cropping, zooming, rotating, and repositioning with an optional grid overlay.\n * This is a controlled component - the parent manages the image state.\n *\n * @example\n * ```tsx\n * import { AvatarEditor } from \"@/components/avatar-editor\"\n *\n * export default function ProfileForm() {\n * const [avatarData, setAvatarData] = useState<string | null>(null)\n *\n * return (\n * <form>\n * <AvatarEditor\n * value={avatarData}\n * onChange={setAvatarData}\n * size={280}\n * />\n * <button type=\"submit\">Submit Form</button>\n * </form>\n * )\n * }\n * ```\n *\n * @props\n * - `value` - The current cropped image as a data URL (controlled)\n * - `onChange` - Callback when the cropped image changes\n * - `size` - Size of the editor container in pixels (default: 280)\n * - `showGrid` - Whether to show the alignment grid overlay (default: false)\n * - `outputSize` - Size of the output image in pixels (default: 256)\n * - `outputFormat` - Output format: 'png' | 'jpeg' | 'webp' (default: 'png')\n * - `outputQuality` - Quality for jpeg/webp output 0-1 (default: 0.92)\n * - `className` - Additional class names\n * - `controlSize` - Control size variant - 'default' for desktop, 'large' for mobile/touch devices (default: 'default')\n *\n * @accessibility\n * - Full keyboard navigation support\n * - ARIA labels for all controls\n * - High contrast focus indicators\n *\n * @dependencies\n * - lucide-react (icons)\n * - @/components/ui/button\n * - @/components/ui/slider\n * - @/components/ui/toggle\n */\n\"use client\";\n\nimport type * as React from \"react\";\nimport { useCallback, useRef, useState, useEffect } from \"react\";\nimport {\n\tUpload,\n\tZoomIn,\n\tZoomOut,\n\tRotateCcw,\n\tRotateCw,\n\tGrid3X3,\n\tX,\n\tMove,\n\tRefreshCw,\n} from \"lucide-react\";\nimport { Button } from \"./ui/button\";\nimport { Slider } from \"./ui/slider\";\nimport { Toggle } from \"./ui/toggle\";\nimport { cn } from \"../lib/utils\";\n\nexport interface AvatarEditorProps {\n\t/** Current cropped image as data URL (controlled) */\n\tvalue?: string | null;\n\t/** Callback when the cropped image changes */\n\tonChange?: (dataUrl: string | null) => void;\n\t/** Size of the editor container in pixels */\n\tsize?: number;\n\t/** Whether to show grid overlay by default */\n\tshowGrid?: boolean;\n\t/** Output image size in pixels */\n\toutputSize?: number;\n\t/** Output format */\n\toutputFormat?: \"png\" | \"jpeg\" | \"webp\";\n\t/** Output quality for jpeg/webp (0-1) */\n\toutputQuality?: number;\n\t/** Additional class names */\n\tclassName?: string;\n\t/** Control size variant - 'default' for desktop, 'large' for mobile/touch devices */\n\tcontrolSize?: \"default\" | \"large\";\n}\n\nexport function AvatarEditor({\n\tvalue: _value,\n\tonChange,\n\tsize = 280,\n\tshowGrid: initialShowGrid = false,\n\toutputSize = 256,\n\toutputFormat = \"png\",\n\toutputQuality = 0.92,\n\tclassName,\n\tcontrolSize = \"default\",\n}: AvatarEditorProps) {\n\tconst canvasRef = useRef<HTMLCanvasElement>(null);\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\tconst [image, setImage] = useState<HTMLImageElement | null>(null);\n\tconst [imageLoaded, setImageLoaded] = useState(false);\n\tconst [zoom, setZoom] = useState(1);\n\tconst [rotation, setRotation] = useState(0);\n\tconst [position, setPosition] = useState({ x: 0, y: 0 });\n\tconst [isDragging, setIsDragging] = useState(false);\n\tconst [dragStart, setDragStart] = useState({ x: 0, y: 0 });\n\tconst [showGrid, setShowGrid] = useState(initialShowGrid);\n\n\tconst generateOutput = useCallback(() => {\n\t\tif (!canvasRef.current || !image) return null;\n\n\t\tconst outputCanvas = document.createElement(\"canvas\");\n\t\toutputCanvas.width = outputSize;\n\t\toutputCanvas.height = outputSize;\n\t\tconst ctx = outputCanvas.getContext(\"2d\");\n\t\tif (!ctx) return null;\n\n\t\tctx.drawImage(canvasRef.current, 0, 0, outputSize, outputSize);\n\n\t\tconst mimeType = `image/${outputFormat}`;\n\t\treturn outputCanvas.toDataURL(mimeType, outputQuality);\n\t}, [image, outputSize, outputFormat, outputQuality]);\n\n\tuseEffect(() => {\n\t\tif (!canvasRef.current || !image || !imageLoaded) return;\n\n\t\tconst canvas = canvasRef.current;\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tif (!ctx) return;\n\n\t\tconst displaySize = size;\n\t\tcanvas.width = displaySize;\n\t\tcanvas.height = displaySize;\n\n\t\tctx.clearRect(0, 0, displaySize, displaySize);\n\t\tctx.fillStyle = \"#1a1a2e\";\n\t\tctx.fillRect(0, 0, displaySize, displaySize);\n\n\t\tctx.save();\n\t\tctx.translate(displaySize / 2, displaySize / 2);\n\t\tctx.rotate((rotation * Math.PI) / 180);\n\n\t\tconst scale = zoom;\n\t\tconst imgAspect = image.width / image.height;\n\t\tlet drawWidth, drawHeight;\n\n\t\tif (imgAspect > 1) {\n\t\t\tdrawHeight = displaySize * scale;\n\t\t\tdrawWidth = drawHeight * imgAspect;\n\t\t} else {\n\t\t\tdrawWidth = displaySize * scale;\n\t\t\tdrawHeight = drawWidth / imgAspect;\n\t\t}\n\n\t\tctx.drawImage(\n\t\t\timage,\n\t\t\t-drawWidth / 2 + position.x,\n\t\t\t-drawHeight / 2 + position.y,\n\t\t\tdrawWidth,\n\t\t\tdrawHeight,\n\t\t);\n\t\tctx.restore();\n\n\t\tctx.globalCompositeOperation = \"destination-in\";\n\t\tctx.beginPath();\n\t\tctx.arc(\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2 - 4,\n\t\t\t0,\n\t\t\tMath.PI * 2,\n\t\t);\n\t\tctx.fill();\n\n\t\tctx.globalCompositeOperation = \"source-over\";\n\t\tctx.strokeStyle = \"hsl(var(--primary))\";\n\t\tctx.lineWidth = 3;\n\t\tctx.beginPath();\n\t\tctx.arc(\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2 - 2,\n\t\t\t0,\n\t\t\tMath.PI * 2,\n\t\t);\n\t\tctx.stroke();\n\n\t\tconst dataUrl = generateOutput();\n\t\tif (dataUrl) {\n\t\t\tonChange?.(dataUrl);\n\t\t}\n\t}, [\n\t\timage,\n\t\timageLoaded,\n\t\tzoom,\n\t\trotation,\n\t\tposition,\n\t\tsize,\n\t\tgenerateOutput,\n\t\tonChange,\n\t]);\n\n\tconst resetTransforms = useCallback(() => {\n\t\tsetZoom(1);\n\t\tsetRotation(0);\n\t\tsetPosition({ x: 0, y: 0 });\n\t}, []);\n\n\tconst handleFileSelect = useCallback(\n\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst file = e.target.files?.[0];\n\t\t\tif (!file) return;\n\n\t\t\tconst reader = new FileReader();\n\t\t\treader.onload = (event) => {\n\t\t\t\tconst img = new Image();\n\t\t\t\timg.crossOrigin = \"anonymous\";\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tsetImage(img);\n\t\t\t\t\tsetImageLoaded(true);\n\t\t\t\t\tresetTransforms();\n\t\t\t\t};\n\t\t\t\timg.src = event.target?.result as string;\n\t\t\t};\n\t\t\treader.readAsDataURL(file);\n\t\t},\n\t\t[resetTransforms],\n\t);\n\n\tconst handleMouseDown = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tif (!imageLoaded) return;\n\t\t\tsetIsDragging(true);\n\t\t\tsetDragStart({ x: e.clientX - position.x, y: e.clientY - position.y });\n\t\t},\n\t\t[imageLoaded, position],\n\t);\n\n\tconst handleMouseMove = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tif (!isDragging) return;\n\t\t\tsetPosition({\n\t\t\t\tx: e.clientX - dragStart.x,\n\t\t\t\ty: e.clientY - dragStart.y,\n\t\t\t});\n\t\t},\n\t\t[isDragging, dragStart],\n\t);\n\n\tconst handleMouseUp = useCallback(() => {\n\t\tsetIsDragging(false);\n\t}, []);\n\n\tconst handleTouchStart = useCallback(\n\t\t(e: React.TouchEvent) => {\n\t\t\tif (!imageLoaded) return;\n\t\t\tconst touch = e.touches[0];\n\t\t\tsetIsDragging(true);\n\t\t\tsetDragStart({\n\t\t\t\tx: touch.clientX - position.x,\n\t\t\t\ty: touch.clientY - position.y,\n\t\t\t});\n\t\t},\n\t\t[imageLoaded, position],\n\t);\n\n\tconst handleTouchMove = useCallback(\n\t\t(e: React.TouchEvent) => {\n\t\t\tif (!isDragging) return;\n\t\t\tconst touch = e.touches[0];\n\t\t\tsetPosition({\n\t\t\t\tx: touch.clientX - dragStart.x,\n\t\t\t\ty: touch.clientY - dragStart.y,\n\t\t\t});\n\t\t},\n\t\t[isDragging, dragStart],\n\t);\n\n\tconst handleDiscard = useCallback(() => {\n\t\tsetImage(null);\n\t\tsetImageLoaded(false);\n\t\tresetTransforms();\n\t\tif (fileInputRef.current) {\n\t\t\tfileInputRef.current.value = \"\";\n\t\t}\n\t\tonChange?.(null);\n\t}, [resetTransforms, onChange]);\n\n\tconst handleZoomIn = () => setZoom((z) => Math.min(z + 0.1, 3));\n\tconst handleZoomOut = () => setZoom((z) => Math.max(z - 0.1, 0.5));\n\tconst handleRotateLeft = () => setRotation((r) => r - 15);\n\tconst handleRotateRight = () => setRotation((r) => r + 15);\n\n\tconst isLarge = controlSize === \"large\";\n\tconst buttonSize = isLarge ? \"h-12 w-12\" : \"h-8 w-8\";\n\tconst iconSize = isLarge ? \"w-6 h-6\" : \"w-4 h-4\";\n\tconst smallIconSize = isLarge ? \"w-5 h-5\" : \"w-3 h-3\";\n\tconst textSize = isLarge ? \"text-sm\" : \"text-xs\";\n\tconst uploadIconSize = isLarge ? \"w-12 h-12\" : \"w-8 h-8\";\n\tconst uploadContainerSize = isLarge ? \"w-24 h-24\" : \"w-16 h-16\";\n\tconst gapSize = isLarge ? \"gap-6\" : \"gap-4\";\n\tconst controlGap = isLarge ? \"gap-3\" : \"gap-2\";\n\tconst sliderHeight = isLarge\n\t\t? \"[&_[role=slider]]:h-6 [&_[role=slider]]:w-6\"\n\t\t: \"\";\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col\", gapSize, className)}\n\t\t\tstyle={{ width: size }}\n\t\t>\n\t\t\t{/* Canvas Container */}\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName=\"relative bg-muted rounded-2xl overflow-hidden\"\n\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t>\n\t\t\t\t{/* Upload placeholder */}\n\t\t\t\t{!imageLoaded && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() => fileInputRef.current?.click()}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"absolute inset-0 z-10 flex flex-col items-center justify-center text-muted-foreground hover:text-foreground hover:bg-muted/80 transition-colors cursor-pointer\",\n\t\t\t\t\t\t\tisLarge ? \"gap-4\" : \"gap-3\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label=\"Upload image\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"rounded-full bg-primary/10 flex items-center justify-center\",\n\t\t\t\t\t\t\t\tuploadContainerSize,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Upload className={cn(\"text-primary\", uploadIconSize)} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\"font-medium\", isLarge ? \"text-base\" : \"text-sm\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tClick to upload\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={cn(\"text-muted-foreground\", textSize)}>\n\t\t\t\t\t\t\tPNG, JPG up to 10MB\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t\t{/* Canvas */}\n\t\t\t\t<canvas\n\t\t\t\t\tref={canvasRef}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"absolute inset-0\",\n\t\t\t\t\t\timageLoaded ? \"cursor-move\" : \"pointer-events-none opacity-0\",\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonMouseMove={handleMouseMove}\n\t\t\t\t\tonMouseUp={handleMouseUp}\n\t\t\t\t\tonMouseLeave={handleMouseUp}\n\t\t\t\t\tonTouchStart={handleTouchStart}\n\t\t\t\t\tonTouchMove={handleTouchMove}\n\t\t\t\t\tonTouchEnd={handleMouseUp}\n\t\t\t\t/>\n\n\t\t\t\t{/* Grid Overlay */}\n\t\t\t\t{showGrid && imageLoaded && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"absolute inset-0 pointer-events-none\"\n\t\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<svg width={size} height={size} className=\"opacity-30\">\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={size / 3}\n\t\t\t\t\t\t\t\ty1={0}\n\t\t\t\t\t\t\t\tx2={size / 3}\n\t\t\t\t\t\t\t\ty2={size}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={(size * 2) / 3}\n\t\t\t\t\t\t\t\ty1={0}\n\t\t\t\t\t\t\t\tx2={(size * 2) / 3}\n\t\t\t\t\t\t\t\ty2={size}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={0}\n\t\t\t\t\t\t\t\ty1={size / 3}\n\t\t\t\t\t\t\t\tx2={size}\n\t\t\t\t\t\t\t\ty2={size / 3}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={0}\n\t\t\t\t\t\t\t\ty1={(size * 2) / 3}\n\t\t\t\t\t\t\t\tx2={size}\n\t\t\t\t\t\t\t\ty2={(size * 2) / 3}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={size / 2 - 10}\n\t\t\t\t\t\t\t\ty1={size / 2}\n\t\t\t\t\t\t\t\tx2={size / 2 + 10}\n\t\t\t\t\t\t\t\ty2={size / 2}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={size / 2}\n\t\t\t\t\t\t\t\ty1={size / 2 - 10}\n\t\t\t\t\t\t\t\tx2={size / 2}\n\t\t\t\t\t\t\t\ty2={size / 2 + 10}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* Drag indicator */}\n\t\t\t\t{imageLoaded && isDragging && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"absolute top-2 left-1/2 -translate-x-1/2 bg-black/60 rounded text-white flex items-center\",\n\t\t\t\t\t\t\tisLarge ? \"px-3 py-2 text-sm gap-2\" : \"px-2 py-1 text-xs gap-1\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Move className={smallIconSize} />\n\t\t\t\t\t\tDragging\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Controls - only show when image is loaded */}\n\t\t\t{imageLoaded && (\n\t\t\t\t<div className={cn(\"space-y-4\", isLarge && \"space-y-5\")}>\n\t\t\t\t\t{/* Zoom Slider */}\n\t\t\t\t\t<div className={cn(\"flex items-center\", controlGap)}>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName={cn(buttonSize, \"shrink-0\")}\n\t\t\t\t\t\t\tonClick={handleZoomOut}\n\t\t\t\t\t\t\taria-label=\"Zoom out\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ZoomOut className={iconSize} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Slider\n\t\t\t\t\t\t\tvalue={[zoom]}\n\t\t\t\t\t\t\tonValueChange={([v]) => setZoom(v)}\n\t\t\t\t\t\t\tmin={0.5}\n\t\t\t\t\t\t\tmax={3}\n\t\t\t\t\t\t\tstep={0.01}\n\t\t\t\t\t\t\tclassName={cn(\"flex-1\", sliderHeight)}\n\t\t\t\t\t\t\taria-label=\"Zoom level\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName={cn(buttonSize, \"shrink-0\")}\n\t\t\t\t\t\t\tonClick={handleZoomIn}\n\t\t\t\t\t\t\taria-label=\"Zoom in\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ZoomIn className={iconSize} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Rotation & Grid Controls */}\n\t\t\t\t\t<div className={cn(\"flex items-center justify-between\", controlGap)}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\"flex items-center\", isLarge ? \"gap-2\" : \"gap-1\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={handleRotateLeft}\n\t\t\t\t\t\t\t\taria-label=\"Rotate left 15 degrees\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RotateCcw className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"text-muted-foreground text-center tabular-nums\",\n\t\t\t\t\t\t\t\t\ttextSize,\n\t\t\t\t\t\t\t\t\tisLarge ? \"w-16\" : \"w-12\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{rotation}°\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={handleRotateRight}\n\t\t\t\t\t\t\t\taria-label=\"Rotate right 15 degrees\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RotateCw className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\"flex items-center\", isLarge ? \"gap-2\" : \"gap-1\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Toggle\n\t\t\t\t\t\t\t\tpressed={showGrid}\n\t\t\t\t\t\t\t\tonPressedChange={setShowGrid}\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tclassName={cn(buttonSize, \"p-0\")}\n\t\t\t\t\t\t\t\taria-label=\"Toggle grid overlay\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Grid3X3 className={iconSize} />\n\t\t\t\t\t\t\t</Toggle>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={resetTransforms}\n\t\t\t\t\t\t\t\taria-label=\"Reset all transforms\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RefreshCw className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={() => fileInputRef.current?.click()}\n\t\t\t\t\t\t\t\taria-label=\"Upload new image\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Upload className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{/* Discard button */}\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\tbuttonSize,\n\t\t\t\t\t\t\t\t\t\"text-destructive hover:text-destructive hover:bg-destructive/10\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tonClick={handleDiscard}\n\t\t\t\t\t\t\t\taria-label=\"Discard image\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Hidden file input */}\n\t\t\t<input\n\t\t\t\tref={fileInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonChange={handleFileSelect}\n\t\t\t\tclassName=\"hidden\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Dialog({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n\treturn <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n\treturn <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n\treturn <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n\treturn <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n\treturn (\n\t\t<DialogPrimitive.Overlay\n\t\t\tdata-slot=\"dialog-overlay\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogContent({\n\tclassName,\n\tchildren,\n\tshowCloseButton = true,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n\tshowCloseButton?: boolean;\n}) {\n\treturn (\n\t\t<DialogPortal data-slot=\"dialog-portal\">\n\t\t\t<DialogOverlay />\n\t\t\t<DialogPrimitive.Content\n\t\t\t\tdata-slot=\"dialog-content\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t\t{showCloseButton && (\n\t\t\t\t\t<DialogPrimitive.Close\n\t\t\t\t\t\tdata-slot=\"dialog-close\"\n\t\t\t\t\t\tclassName=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t\t\t</DialogPrimitive.Close>\n\t\t\t\t)}\n\t\t\t</DialogPrimitive.Content>\n\t\t</DialogPortal>\n\t);\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"dialog-header\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"dialog-footer\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogTitle({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n\treturn (\n\t\t<DialogPrimitive.Title\n\t\t\tdata-slot=\"dialog-title\"\n\t\t\tclassName={cn(\"text-lg leading-none font-semibold\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogDescription({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n\treturn (\n\t\t<DialogPrimitive.Description\n\t\t\tdata-slot=\"dialog-description\"\n\t\t\tclassName={cn(\"text-muted-foreground text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDialog,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle,\n\tDialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Drawer({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n\treturn <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n\treturn <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n\treturn <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n\treturn <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n\treturn (\n\t\t<DrawerPrimitive.Overlay\n\t\t\tdata-slot=\"drawer-overlay\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerContent({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n\treturn (\n\t\t<DrawerPortal data-slot=\"drawer-portal\">\n\t\t\t<DrawerOverlay />\n\t\t\t<DrawerPrimitive.Content\n\t\t\t\tdata-slot=\"drawer-content\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n\t\t\t\t{children}\n\t\t\t</DrawerPrimitive.Content>\n\t\t</DrawerPortal>\n\t);\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"drawer-header\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"drawer-footer\"\n\t\t\tclassName={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerTitle({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n\treturn (\n\t\t<DrawerPrimitive.Title\n\t\t\tdata-slot=\"drawer-title\"\n\t\t\tclassName={cn(\"text-foreground font-semibold\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerDescription({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n\treturn (\n\t\t<DrawerPrimitive.Description\n\t\t\tdata-slot=\"drawer-description\"\n\t\t\tclassName={cn(\"text-muted-foreground text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n};\n","/**\n * @name AvatarEditorDialog\n * @description A complete avatar editing experience with a preview display and edit dialog.\n * Shows a large avatar with an edit button. Opens fullscreen dialog on mobile, modal on desktop.\n * Handles save/upload callbacks with success/error feedback.\n *\n * @example\n * ```tsx\n * import { AvatarEditorDialog } from \"@/components/avatar-editor-dialog\"\n *\n * export default function ProfilePage() {\n * const [avatar, setAvatar] = useState<string | null>(null)\n *\n * const handleSave = async (dataUrl: string) => {\n * await uploadAvatar(dataUrl)\n * }\n *\n * return (\n * <AvatarEditorDialog\n * value={avatar}\n * onChange={setAvatar}\n * onSave={handleSave}\n * />\n * )\n * }\n * ```\n */\n\"use client\";\nimport { useState, useCallback, useEffect } from \"react\";\nimport { Pencil, User, X, Check, Loader2 } from \"lucide-react\";\nimport { AvatarEditor } from \"./AvatarEditor\";\nimport { Button } from \"./ui/button\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogFooter,\n\tDialogClose,\n} from \"./ui/dialog\";\nimport {\n\tDrawer,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerTitle,\n\tDrawerFooter,\n\tDrawerClose,\n} from \"./ui/drawer\";\nimport { cn } from \"../lib/utils\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\nexport interface AvatarEditorDialogProps {\n\t/** Current avatar URL or data URL */\n\tvalue?: string | null;\n\t/** Callback when avatar changes (after accepting) */\n\tonChange?: (dataUrl: string | null) => void;\n\t/** Async callback for saving/uploading - return true for success, false for failure */\n\tonSave?: (dataUrl: string) => Promise<boolean> | boolean;\n\t/** Size of the displayed avatar in pixels */\n\tdisplaySize?: number;\n\t/** Size of the editor in the dialog */\n\teditorSize?: number;\n\t/** Output image size */\n\toutputSize?: number;\n\t/** Placeholder text when no avatar */\n\tplaceholder?: string;\n\t/** Edit button label for accessibility */\n\teditLabel?: string;\n\t/** Dialog title */\n\tdialogTitle?: string;\n\t/** Accept button text */\n\tacceptText?: string;\n\t/** Cancel button text */\n\tcancelText?: string;\n\t/** Success message */\n\tsuccessMessage?: string;\n\t/** Error message */\n\terrorMessage?: string;\n\t/** Additional class names */\n\tclassName?: string;\n}\n\nfunction useMediaQuery(query: string): boolean {\n\tconst [matches, setMatches] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst media = window.matchMedia(query);\n\t\tif (media.matches !== matches) {\n\t\t\tsetMatches(media.matches);\n\t\t}\n\t\tconst listener = () => setMatches(media.matches);\n\t\tmedia.addEventListener(\"change\", listener);\n\t\treturn () => media.removeEventListener(\"change\", listener);\n\t}, [matches, query]);\n\n\treturn matches;\n}\n\nexport function AvatarEditorDialog({\n\tvalue,\n\tonChange,\n\tonSave,\n\tdisplaySize = 120,\n\teditorSize = 280,\n\toutputSize = 256,\n\tplaceholder = \"Add Photo\",\n\teditLabel = \"Edit avatar\",\n\tdialogTitle = \"Edit Avatar\",\n\tacceptText = \"Accept\",\n\tcancelText = \"Cancel\",\n\tsuccessMessage = \"Avatar saved successfully!\",\n\terrorMessage = \"Failed to save avatar. Please try again.\",\n\tclassName,\n}: AvatarEditorDialogProps) {\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [editedValue, setEditedValue] = useState<string | null>(value ?? null);\n\tconst [isSaving, setIsSaving] = useState(false);\n\tconst [feedback, setFeedback] = useState<{\n\t\ttype: \"success\" | \"error\";\n\t\tmessage: string;\n\t} | null>(null);\n\n\tconst isMobile = useMediaQuery(\"(max-width: 640px)\");\n\tconst caption = (placeholder ?? \"\").trim();\n\n\t// Sync edited value when dialog opens\n\tconst handleOpenChange = useCallback(\n\t\t(open: boolean) => {\n\t\t\tif (open) {\n\t\t\t\tsetEditedValue(value ?? null);\n\t\t\t\tsetFeedback(null);\n\t\t\t}\n\t\t\tsetIsOpen(open);\n\t\t},\n\t\t[value],\n\t);\n\n\t// Handle accept/save\n\tconst handleAccept = useCallback(async () => {\n\t\tif (!editedValue) return;\n\n\t\tsetIsSaving(true);\n\t\tsetFeedback(null);\n\n\t\ttry {\n\t\t\tif (onSave) {\n\t\t\t\tconst result = await onSave(editedValue);\n\t\t\t\tif (result) {\n\t\t\t\t\tonChange?.(editedValue);\n\t\t\t\t\tsetFeedback({ type: \"success\", message: successMessage });\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\t\tsetFeedback(null);\n\t\t\t\t\t}, 1500);\n\t\t\t\t} else {\n\t\t\t\t\tsetFeedback({ type: \"error\", message: errorMessage });\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tonChange?.(editedValue);\n\t\t\t\tsetFeedback({ type: \"success\", message: successMessage });\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\tsetFeedback(null);\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t} catch {\n\t\t\tsetFeedback({ type: \"error\", message: errorMessage });\n\t\t} finally {\n\t\t\tsetIsSaving(false);\n\t\t}\n\t}, [editedValue, onChange, onSave, successMessage, errorMessage]);\n\n\t// Avatar display component\n\tconst AvatarDisplay = (\n\t\t<div\n\t\t\tclassName={cn(\"relative group\", className)}\n\t\t\tstyle={{ width: displaySize, height: displaySize }}\n\t\t>\n\t\t\t{/* Avatar circle */}\n\t\t\t<div\n\t\t\t\tclassName=\"w-full h-full rounded-full overflow-hidden bg-muted border-2 border-border flex items-center justify-center\"\n\t\t\t\tstyle={{ width: displaySize, height: displaySize }}\n\t\t\t>\n\t\t\t\t{value ? (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={value || \"/placeholder.svg\"}\n\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\tclassName=\"w-full h-full object-cover\"\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex flex-col items-center justify-center text-muted-foreground\",\n\t\t\t\t\t\t\tcaption ? \"gap-1\" : \"gap-0\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<User\n\t\t\t\t\t\t\tclassName=\"h-1/2 w-1/2 max-h-[55%] max-w-[55%] shrink-0\"\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{caption ? (\n\t\t\t\t\t\t\t<span className=\"text-xs text-center px-1\">{caption}</span>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Edit button - bottom right */}\n\t\t\t<button\n\t\t\t\tonClick={() => handleOpenChange(true)}\n\t\t\t\tclassName=\"absolute bottom-0 right-0 w-8 h-8 rounded-full bg-primary text-primary-foreground flex items-center justify-center shadow-lg hover:bg-primary/90 transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n\t\t\t\taria-label={editLabel}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<Pencil className=\"w-4 h-4\" />\n\t\t\t</button>\n\t\t</div>\n\t);\n\n\tconst mobileEditorSize = isMobile\n\t\t? Math.min(editorSize + 40, window.innerWidth - 48)\n\t\t: editorSize;\n\n\t// Editor content (shared between dialog and drawer)\n\tconst EditorContent = (\n\t\t<div className=\"flex flex-col items-center gap-4\">\n\t\t\t<AvatarEditor\n\t\t\t\tvalue={editedValue}\n\t\t\t\tonChange={setEditedValue}\n\t\t\t\tsize={mobileEditorSize}\n\t\t\t\toutputSize={outputSize}\n\t\t\t\tcontrolSize={isMobile ? \"large\" : \"default\"}\n\t\t\t/>\n\n\t\t\t{/* Feedback message */}\n\t\t\t<AnimatePresence>\n\t\t\t\t{feedback && (\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tinitial={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\t\texit={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex items-center gap-2 rounded-lg font-medium\",\n\t\t\t\t\t\t\tisMobile ? \"px-5 py-3 text-base\" : \"px-4 py-2 text-sm\",\n\t\t\t\t\t\t\tfeedback.type === \"success\"\n\t\t\t\t\t\t\t\t? \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\"\n\t\t\t\t\t\t\t\t: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{feedback.type === \"success\" ? (\n\t\t\t\t\t\t\t<Check className={isMobile ? \"w-5 h-5\" : \"w-4 h-4\"} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<X className={isMobile ? \"w-5 h-5\" : \"w-4 h-4\"} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{feedback.message}\n\t\t\t\t\t</motion.div>\n\t\t\t\t)}\n\t\t\t</AnimatePresence>\n\t\t</div>\n\t);\n\n\t// Footer buttons (shared)\n\tconst FooterButtons = (\n\t\t<>\n\t\t\t{isMobile ? (\n\t\t\t\t<DrawerClose asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tdisabled={isSaving}\n\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\tclassName=\"flex-1 bg-transparent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{cancelText}\n\t\t\t\t\t</Button>\n\t\t\t\t</DrawerClose>\n\t\t\t) : (\n\t\t\t\t<DialogClose asChild>\n\t\t\t\t\t<Button variant=\"outline\" disabled={isSaving}>\n\t\t\t\t\t\t{cancelText}\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogClose>\n\t\t\t)}\n\t\t\t<Button\n\t\t\t\tonClick={handleAccept}\n\t\t\t\tdisabled={!editedValue || isSaving || feedback?.type === \"success\"}\n\t\t\t\tsize={isMobile ? \"lg\" : \"default\"}\n\t\t\t\tclassName={isMobile ? \"flex-1\" : \"\"}\n\t\t\t>\n\t\t\t\t{isSaving ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Loader2\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"mr-2 animate-spin\",\n\t\t\t\t\t\t\t\tisMobile ? \"w-5 h-5\" : \"w-4 h-4\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tSaving...\n\t\t\t\t\t</>\n\t\t\t\t) : feedback?.type === \"success\" ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Check className={cn(\"mr-2\", isMobile ? \"w-5 h-5\" : \"w-4 h-4\")} />\n\t\t\t\t\t\tSaved!\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tacceptText\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t</>\n\t);\n\n\t// Mobile: Drawer (fullscreen-like)\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{AvatarDisplay}\n\t\t\t\t<Drawer open={isOpen} onOpenChange={handleOpenChange}>\n\t\t\t\t\t<DrawerContent className=\"max-h-[96vh]\">\n\t\t\t\t\t\t<DrawerHeader className=\"text-center\">\n\t\t\t\t\t\t\t<DrawerTitle className=\"text-xl\">{dialogTitle}</DrawerTitle>\n\t\t\t\t\t\t</DrawerHeader>\n\t\t\t\t\t\t<div className=\"px-6 pb-6 overflow-y-auto\">{EditorContent}</div>\n\t\t\t\t\t\t<DrawerFooter className=\"flex-row gap-3 px-6 pb-8\">\n\t\t\t\t\t\t\t{FooterButtons}\n\t\t\t\t\t\t</DrawerFooter>\n\t\t\t\t\t</DrawerContent>\n\t\t\t\t</Drawer>\n\t\t\t</>\n\t\t);\n\t}\n\n\t// Desktop: Dialog (modal)\n\treturn (\n\t\t<>\n\t\t\t{AvatarDisplay}\n\t\t\t<Dialog open={isOpen} onOpenChange={handleOpenChange}>\n\t\t\t\t<DialogContent className=\"sm:max-w-md\">\n\t\t\t\t\t<DialogHeader>\n\t\t\t\t\t\t<DialogTitle>{dialogTitle}</DialogTitle>\n\t\t\t\t\t</DialogHeader>\n\t\t\t\t\t<div className=\"flex justify-center py-4\">{EditorContent}</div>\n\t\t\t\t\t<DialogFooter className=\"sm:gap-3\">{FooterButtons}</DialogFooter>\n\t\t\t\t</DialogContent>\n\t\t\t</Dialog>\n\t\t</>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Popover({\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n\treturn <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n\treturn <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n\tclassName,\n\talign = \"center\",\n\tsideOffset = 4,\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n\treturn (\n\t\t<PopoverPrimitive.Portal>\n\t\t\t<PopoverPrimitive.Content\n\t\t\t\tdata-slot=\"popover-content\"\n\t\t\t\talign={align}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</PopoverPrimitive.Portal>\n\t);\n}\n\nfunction PopoverAnchor({\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n\treturn <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n\tBell,\n\tCheckCheck,\n\tTrash2,\n\tX,\n\tInfo,\n\tAlertTriangle,\n\tCheckCircle,\n\tXCircle,\n} from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./ui/popover\";\nimport { useNotificationsContext } from \"../contexts\";\n\n/**\n * NotificationsWidget - A compact notification bell for navigation bars\n *\n * @description\n * Displays a bell icon with unread count badge, plays sound on new notifications,\n * and shows a popover with recent notifications that can be marked as read or dismissed.\n *\n * @example\n * ```tsx\n * <NotificationsWidget\n * notifications={notifications}\n * onMarkAsRead={(id) => markAsRead(id)}\n * onMarkAllAsRead={() => markAllAsRead()}\n * onDismiss={(id) => dismiss(id)}\n * onClearAll={() => clearAll()}\n * playSound={true}\n * />\n * ```\n */\n\nexport type NotificationType = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface Notification {\n\tid: string;\n\ttitle: string;\n\tmessage?: string;\n\ttype?: NotificationType;\n\ttimestamp: Date;\n\tread?: boolean;\n\thref?: string;\n\tchannelId?: string;\n}\n\ntype WidgetSize = \"sm\" | \"md\" | \"lg\";\ntype DotColor = \"red\" | \"blue\" | \"green\" | \"amber\" | \"purple\" | \"primary\";\ntype SoundType = \"chime\" | \"bell\" | \"pop\" | \"ding\" | \"none\";\ntype PulseStyle = \"ring\" | \"glow\" | \"bounce\" | \"none\";\n\nexport interface NotificationsWidgetProps {\n\t/**\n\t * Notifications to display. Optional if using NotificationsContext.\n\t * When context is available, context.notifications is used; props override context.\n\t */\n\tnotifications?: Notification[];\n\t/**\n\t * Called when a notification becomes visible (scroll into view).\n\t * Should return a Promise - if rejected, the notification will be reverted to unread.\n\t * Uses optimistic update: marks as read immediately, reverts on failure.\n\t * Optional if using NotificationsContext.\n\t */\n\tonMarkAsRead?: (id: string) => void | Promise<void>;\n\t/**\n\t * Called when \"Mark all as read\" button is clicked.\n\t * Should return a Promise - if rejected, notifications will be reverted to unread.\n\t * Uses optimistic update: marks all as read immediately, reverts on failure.\n\t * Optional if using NotificationsContext.\n\t */\n\tonMarkAllAsRead?: () => void | Promise<void>;\n\t/**\n\t * Called when a notification is dismissed.\n\t * Optional if using NotificationsContext.\n\t */\n\tonDismiss?: (id: string) => void;\n\t/**\n\t * Called when all notifications are cleared.\n\t * Optional if using NotificationsContext.\n\t */\n\tonClearAll?: () => void;\n\t/**\n\t * Called when a notification is clicked.\n\t * Optional if using NotificationsContext.\n\t */\n\tonNotificationClick?: (notification: Notification) => void;\n\tsize?: WidgetSize;\n\t/**\n\t * Maximum number of notifications to show in the list.\n\t * Default: 5 on desktop. Scroll to see more.\n\t */\n\tmaxVisible?: number;\n\tplaySound?: boolean;\n\tsoundUrl?: string;\n\tclassName?: string;\n\temptyMessage?: string;\n\ttitle?: string;\n\tdotColor?: DotColor;\n\tshowPulse?: boolean;\n\tsoundType?: SoundType;\n\tpulseStyle?: PulseStyle;\n\tsoundCooldown?: number;\n\t/** \"ghost\" renders a borderless button matching other ghost icon buttons. */\n\tbuttonVariant?: \"default\" | \"ghost\";\n\t/** URL to navigate to when \"View all\" is clicked in the footer. */\n\tviewAllHref?: string;\n\t/** Label for the \"View all\" link. Default: \"View all\" */\n\tviewAllLabel?: string;\n}\n\nconst sizeConfig = {\n\tsm: {\n\t\tbutton: \"h-8 w-8\",\n\t\ticon: \"w-4 h-4\",\n\t\tbadge: \"min-w-[16px] h-4 text-[10px] -top-1 -right-1\",\n\t\tdot: \"w-2.5 h-2.5 top-0 right-0\",\n\t},\n\tmd: {\n\t\tbutton: \"h-9 w-9\",\n\t\ticon: \"w-5 h-5\",\n\t\tbadge: \"min-w-[18px] h-[18px] text-[11px] -top-1 -right-1\",\n\t\tdot: \"w-3 h-3 top-0 right-0\",\n\t},\n\tlg: {\n\t\tbutton: \"h-10 w-10\",\n\t\ticon: \"w-6 h-6\",\n\t\tbadge: \"min-w-[20px] h-5 text-xs -top-1.5 -right-1.5\",\n\t\tdot: \"w-3.5 h-3.5 top-0 right-0\",\n\t},\n};\n\nconst typeConfig: Record<\n\tNotificationType,\n\t{ icon: typeof Info; color: string; bg: string }\n> = {\n\tinfo: {\n\t\ticon: Info,\n\t\tcolor: \"text-blue-500\",\n\t\tbg: \"bg-blue-500/10\",\n\t},\n\tsuccess: {\n\t\ticon: CheckCircle,\n\t\tcolor: \"text-green-500\",\n\t\tbg: \"bg-green-500/10\",\n\t},\n\twarning: {\n\t\ticon: AlertTriangle,\n\t\tcolor: \"text-amber-500\",\n\t\tbg: \"bg-amber-500/10\",\n\t},\n\terror: {\n\t\ticon: XCircle,\n\t\tcolor: \"text-red-500\",\n\t\tbg: \"bg-red-500/10\",\n\t},\n};\n\nconst dotColorConfig: Record<DotColor, string> = {\n\tred: \"bg-red-500\",\n\tblue: \"bg-blue-500\",\n\tgreen: \"bg-green-500\",\n\tamber: \"bg-amber-500\",\n\tpurple: \"bg-purple-500\",\n\tprimary: \"bg-primary\",\n};\n\nconst soundConfig: Record<\n\tExclude<SoundType, \"none\">,\n\t{ frequencies: number[]; durations: number[]; gain: number }\n> = {\n\tchime: {\n\t\tfrequencies: [880, 1100],\n\t\tdurations: [0.1, 0.2],\n\t\tgain: 0.3,\n\t},\n\tbell: {\n\t\tfrequencies: [523, 659, 784],\n\t\tdurations: [0.15, 0.15, 0.2],\n\t\tgain: 0.25,\n\t},\n\tpop: {\n\t\tfrequencies: [400, 600],\n\t\tdurations: [0.05, 0.08],\n\t\tgain: 0.4,\n\t},\n\tding: {\n\t\tfrequencies: [1200],\n\t\tdurations: [0.15],\n\t\tgain: 0.2,\n\t},\n};\n\nconst pulseVariants: Record<\n\tExclude<PulseStyle, \"none\">,\n\t{ animate: object; transition: object }\n> = {\n\tring: {\n\t\tanimate: { scale: [1, 1.8], opacity: [0.6, 0] },\n\t\ttransition: {\n\t\t\tduration: 1.2,\n\t\t\trepeat: Number.POSITIVE_INFINITY,\n\t\t\tease: \"easeOut\",\n\t\t},\n\t},\n\tglow: {\n\t\tanimate: { scale: [1, 1.3, 1], opacity: [0.8, 0.4, 0.8] },\n\t\ttransition: {\n\t\t\tduration: 1.5,\n\t\t\trepeat: Number.POSITIVE_INFINITY,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n\tbounce: {\n\t\tanimate: { scale: [1, 1.2, 1], y: [0, -2, 0] },\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\trepeat: Number.POSITIVE_INFINITY,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nfunction formatTimeAgo(date: Date): string {\n\tconst now = new Date();\n\tconst diffMs = now.getTime() - date.getTime();\n\tconst diffSecs = Math.floor(diffMs / 1000);\n\tconst diffMins = Math.floor(diffSecs / 60);\n\tconst diffHours = Math.floor(diffMins / 60);\n\tconst diffDays = Math.floor(diffHours / 24);\n\n\tif (diffSecs < 60) return \"just now\";\n\tif (diffMins < 60) return `${diffMins}m ago`;\n\tif (diffHours < 24) return `${diffHours}h ago`;\n\tif (diffDays < 7) return `${diffDays}d ago`;\n\treturn date.toLocaleDateString();\n}\n\n// Simple notification sound using Web Audio API\nfunction playNotificationSound(\n\tsoundType: SoundType = \"chime\",\n\tsoundUrl?: string,\n) {\n\tif (typeof window === \"undefined\" || soundType === \"none\") return;\n\n\tif (soundUrl) {\n\t\tconst audio = new Audio(soundUrl);\n\t\taudio.volume = 0.5;\n\t\taudio.play().catch(() => {});\n\t\treturn;\n\t}\n\n\tconst config = soundConfig[soundType];\n\tif (!config) return;\n\n\ttry {\n\t\tconst audioContext = new (\n\t\t\twindow.AudioContext ||\n\t\t\t(window as unknown as { webkitAudioContext: typeof AudioContext })\n\t\t\t\t.webkitAudioContext\n\t\t)();\n\n\t\tlet currentTime = audioContext.currentTime;\n\n\t\tconfig.frequencies.forEach((freq, i) => {\n\t\t\tconst oscillator = audioContext.createOscillator();\n\t\t\tconst gainNode = audioContext.createGain();\n\n\t\t\toscillator.connect(gainNode);\n\t\t\tgainNode.connect(audioContext.destination);\n\n\t\t\toscillator.frequency.setValueAtTime(freq, currentTime);\n\t\t\tgainNode.gain.setValueAtTime(config.gain, currentTime);\n\t\t\tgainNode.gain.exponentialRampToValueAtTime(\n\t\t\t\t0.01,\n\t\t\t\tcurrentTime + config.durations[i],\n\t\t\t);\n\n\t\t\toscillator.start(currentTime);\n\t\t\toscillator.stop(currentTime + config.durations[i]);\n\n\t\t\tcurrentTime += config.durations[i] * 0.7;\n\t\t});\n\t} catch {\n\t\t// Silently fail if audio is not supported\n\t}\n}\n\nexport function NotificationsWidget({\n\tnotifications: propNotifications,\n\tonMarkAsRead: propOnMarkAsRead,\n\tonMarkAllAsRead: propOnMarkAllAsRead,\n\tonDismiss: propOnDismiss,\n\tonClearAll: propOnClearAll,\n\tonNotificationClick: propOnNotificationClick,\n\tsize = \"md\",\n\tmaxVisible = 5,\n\tplaySound = true,\n\tsoundUrl,\n\tclassName,\n\temptyMessage = \"No notifications\",\n\ttitle = \"Notifications\",\n\tdotColor = \"red\",\n\tshowPulse = true,\n\tsoundType = \"chime\",\n\tpulseStyle = \"ring\",\n\tsoundCooldown = 2000,\n\tbuttonVariant = \"default\",\n\tviewAllHref,\n\tviewAllLabel = \"View all\",\n}: NotificationsWidgetProps) {\n\t// Try to get context values (returns null if no provider)\n\tconst context = useNotificationsContext();\n\n\t// Use context values when available, fall back to props\n\t// Props take precedence over context when both are provided\n\tconst notifications = propNotifications ?? context?.notifications ?? [];\n\tconst onMarkAsRead = propOnMarkAsRead ?? context?.markAsRead;\n\tconst onMarkAllAsRead = propOnMarkAllAsRead ?? context?.markAllAsRead;\n\tconst onDismiss = propOnDismiss ?? context?.dismiss;\n\tconst onClearAll = propOnClearAll ?? context?.clearAll;\n\tconst onNotificationClick =\n\t\tpropOnNotificationClick ?? context?.onNotificationClick;\n\n\tconst [isOpen, setIsOpen] = React.useState(false);\n\tconst [prevCount, setPrevCount] = React.useState(0);\n\tconst lastSoundPlayedRef = React.useRef<number>(0);\n\tconst styles = sizeConfig[size];\n\tconst dotBgColor = dotColorConfig[dotColor];\n\n\t// Track optimistically marked-as-read notifications (before API confirms)\n\tconst [optimisticReadIds, setOptimisticReadIds] = React.useState<Set<string>>(\n\t\tnew Set(),\n\t);\n\t// Track notifications that are being processed (to avoid duplicate calls)\n\tconst processingIdsRef = React.useRef<Set<string>>(new Set());\n\t// Track notifications that have been marked via intersection observer (to avoid re-marking)\n\tconst intersectedIdsRef = React.useRef<Set<string>>(new Set());\n\t// Scroll container ref for IntersectionObserver\n\tconst scrollContainerRef = React.useRef<HTMLDivElement>(null);\n\n\t// Compute read state considering both server state and optimistic updates\n\tconst getIsRead = React.useCallback(\n\t\t(notification: Notification) => {\n\t\t\treturn notification.read || optimisticReadIds.has(notification.id);\n\t\t},\n\t\t[optimisticReadIds],\n\t);\n\n\t// Store latest notifications and read checker in refs for IntersectionObserver\n\t// (initialized after getIsRead is defined to avoid circular dependency)\n\tconst notificationsRef = React.useRef<Notification[]>(notifications);\n\tconst getIsReadRef = React.useRef(getIsRead);\n\n\t// Keep refs up to date\n\tReact.useEffect(() => {\n\t\tnotificationsRef.current = notifications;\n\t}, [notifications]);\n\n\tReact.useEffect(() => {\n\t\tgetIsReadRef.current = getIsRead;\n\t}, [getIsRead]);\n\n\tconst unreadCount = notifications.filter((n) => !getIsRead(n)).length;\n\n\t// Clean up optimistic read IDs when server confirms (notification.read becomes true)\n\t// Also remove stale IDs that no longer exist in the notifications array\n\tReact.useEffect(() => {\n\t\tsetOptimisticReadIds((prev) => {\n\t\t\tconst next = new Set(prev);\n\t\t\tlet changed = false;\n\t\t\tconst notificationIds = new Set(notifications.map((n) => n.id));\n\n\t\t\t// Remove IDs that are now confirmed read by server OR don't exist anymore\n\t\t\tprev.forEach((id) => {\n\t\t\t\tconst notification = notifications.find((n) => n.id === id);\n\n\t\t\t\t// Remove if notification doesn't exist anymore (stale ID)\n\t\t\t\tif (!notificationIds.has(id)) {\n\t\t\t\t\tnext.delete(id);\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Remove if server confirmed it as read\n\t\t\t\tif (notification?.read === true) {\n\t\t\t\t\tnext.delete(id);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn changed ? next : prev;\n\t\t});\n\t}, [notifications]);\n\n\t// Sort notifications by timestamp (most recent first) for better UX\n\tconst sortedNotifications = React.useMemo(\n\t\t() =>\n\t\t\t[...notifications].sort(\n\t\t\t\t(a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n\t\t\t),\n\t\t[notifications],\n\t);\n\n\t// Calculate max height based on notification count (each ~72px, show max 5)\n\tconst notificationHeight = 72; // Approximate height per notification\n\tconst maxListHeight = Math.min(maxVisible, 5) * notificationHeight;\n\n\tconst hasMore = sortedNotifications.length > maxVisible;\n\n\t// Play sound when new notifications arrive (with cooldown)\n\t// Note: We play sound when unreadCount increases, even if going from 0 to 1+\n\tReact.useEffect(() => {\n\t\tif (playSound && soundType !== \"none\" && unreadCount > prevCount) {\n\t\t\tconst now = Date.now();\n\t\t\tif (now - lastSoundPlayedRef.current >= soundCooldown) {\n\t\t\t\tplayNotificationSound(soundType, soundUrl);\n\t\t\t\tlastSoundPlayedRef.current = now;\n\t\t\t}\n\t\t}\n\t\tsetPrevCount(unreadCount);\n\t}, [unreadCount, prevCount, soundType, soundUrl, soundCooldown, playSound]);\n\n\t/**\n\t * Optimistic mark-as-read with rollback on failure\n\t * 1. Mark as read immediately (optimistic)\n\t * 2. Call async API\n\t * 3. If API fails, revert to unread (rollback)\n\t */\n\tconst handleMarkAsRead = React.useCallback(\n\t\tasync (notificationId: string) => {\n\t\t\t// Skip if already read, already processing, or no handler\n\t\t\tif (!onMarkAsRead) return;\n\t\t\tif (processingIdsRef.current.has(notificationId)) return;\n\n\t\t\t// Use refs to access latest state\n\t\t\tconst notification = notificationsRef.current.find(\n\t\t\t\t(n) => n.id === notificationId,\n\t\t\t);\n\t\t\tif (!notification || getIsReadRef.current(notification)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Mark as processing\n\t\t\tprocessingIdsRef.current.add(notificationId);\n\n\t\t\t// Optimistic update - mark as read immediately\n\t\t\tsetOptimisticReadIds((prev) => new Set(prev).add(notificationId));\n\n\t\t\ttry {\n\t\t\t\t// Call the async handler\n\t\t\t\tawait Promise.resolve(onMarkAsRead(notificationId));\n\t\t\t\t// Success - keep optimistic state until server updates notification.read\n\t\t\t\t// DON'T clear optimisticReadIds here, let it persist until server confirms\n\t\t\t} catch {\n\t\t\t\t// Rollback - revert to unread\n\t\t\t\tsetOptimisticReadIds((prev) => {\n\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\tnext.delete(notificationId);\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\t// Remove from processing\n\t\t\t\tprocessingIdsRef.current.delete(notificationId);\n\t\t\t}\n\t\t},\n\t\t[onMarkAsRead],\n\t);\n\n\t/**\n\t * Optimistic mark-all-as-read with rollback on failure\n\t */\n\tconst handleMarkAllAsRead = React.useCallback(async () => {\n\t\tif (!onMarkAllAsRead) return;\n\n\t\t// Get all unread notification IDs\n\t\tconst unreadIds = notifications\n\t\t\t.filter((n) => !getIsRead(n))\n\t\t\t.map((n) => n.id);\n\n\t\tif (unreadIds.length === 0) return;\n\n\t\t// Optimistic update - mark all as read immediately\n\t\tsetOptimisticReadIds((prev) => {\n\t\t\tconst next = new Set(prev);\n\t\t\tunreadIds.forEach((id) => next.add(id));\n\t\t\treturn next;\n\t\t});\n\n\t\ttry {\n\t\t\t// Call the async handler\n\t\t\tawait Promise.resolve(onMarkAllAsRead());\n\t\t\t// Success - keep the optimistic state\n\t\t} catch {\n\t\t\t// Rollback - revert all to unread\n\t\t\tsetOptimisticReadIds((prev) => {\n\t\t\t\tconst next = new Set(prev);\n\t\t\t\tunreadIds.forEach((id) => next.delete(id));\n\t\t\t\treturn next;\n\t\t\t});\n\t\t}\n\t}, [notifications, onMarkAllAsRead, getIsRead]);\n\n\t/**\n\t * IntersectionObserver to detect visible notifications and mark as read\n\t * IMPORTANT: Only create observer once when popover opens, don't recreate on every notification change\n\t */\n\tReact.useEffect(() => {\n\t\tif (!isOpen || !onMarkAsRead) return;\n\n\t\t// Reset intersected IDs when popover opens\n\t\tintersectedIdsRef.current.clear();\n\n\t\t// Wait a tick for the DOM to render\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tconst scrollContainer = scrollContainerRef.current;\n\t\t\tif (!scrollContainer) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t(entries) => {\n\t\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\t\t\tconst notificationId = entry.target.getAttribute(\n\t\t\t\t\t\t\t\t\"data-notification-id\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnotificationId &&\n\t\t\t\t\t\t\t\t!intersectedIdsRef.current.has(notificationId)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Mark this notification as having been intersected\n\t\t\t\t\t\t\t\tintersectedIdsRef.current.add(notificationId);\n\n\t\t\t\t\t\t\t\t// Use refs to access latest state without recreating observer\n\t\t\t\t\t\t\t\tconst notification = notificationsRef.current.find(\n\t\t\t\t\t\t\t\t\t(n) => n.id === notificationId,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst isRead = notification\n\t\t\t\t\t\t\t\t\t? getIsReadRef.current(notification)\n\t\t\t\t\t\t\t\t\t: false;\n\n\t\t\t\t\t\t\t\tif (notification && !isRead) {\n\t\t\t\t\t\t\t\t\thandleMarkAsRead(notificationId);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\troot: scrollContainer,\n\t\t\t\t\tthreshold: 0.5, // Trigger when 50% visible\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// Observe all notification elements within the scroll container\n\t\t\tconst notificationElements = scrollContainer.querySelectorAll(\n\t\t\t\t\"[data-notification-id]\",\n\t\t\t);\n\t\t\tnotificationElements.forEach((el) => observer.observe(el));\n\n\t\t\t// Store cleanup function\n\t\t\treturn () => {\n\t\t\t\tobserver.disconnect();\n\t\t\t};\n\t\t}, 100);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timeoutId);\n\t\t};\n\t\t// CRITICAL: Only depend on isOpen and onMarkAsRead, NOT notifications or getIsRead\n\t\t// This prevents recreating the observer when notifications are marked as read\n\t\t// We use refs to access the latest notification/read state\n\t}, [isOpen, onMarkAsRead, handleMarkAsRead]);\n\n\tconst handleNotificationClick = (notification: Notification) => {\n\t\t// Mark as read when clicked (if not already)\n\t\tif (!getIsRead(notification)) {\n\t\t\thandleMarkAsRead(notification.id);\n\t\t}\n\t\tif (notification.href) {\n\t\t\tonNotificationClick?.(notification);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Popover open={isOpen} onOpenChange={setIsOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<motion.button\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative inline-flex items-center justify-center rounded-lg transition-colors\",\n\t\t\t\t\t\tbuttonVariant === \"ghost\"\n\t\t\t\t\t\t\t? \"hover:bg-accent hover:text-accent-foreground\"\n\t\t\t\t\t\t\t: \"bg-muted/50 border border-border/50 hover:bg-muted/70\",\n\t\t\t\t\t\tstyles.button,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\twhileTap={{ scale: 0.95 }}\n\t\t\t\t\taria-label={`Notifications${unreadCount > 0 ? ` (${unreadCount} unread)` : \"\"}`}\n\t\t\t\t>\n\t\t\t\t\t<Bell className={cn(styles.icon, \"text-muted-foreground\")} />\n\n\t\t\t\t\t{/* Unread indicator - only show dot, no number */}\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{unreadCount > 0 && (\n\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\tinitial={{ scale: 0, opacity: 0 }}\n\t\t\t\t\t\t\t\tanimate={{ scale: 1, opacity: 1 }}\n\t\t\t\t\t\t\t\texit={{ scale: 0, opacity: 0 }}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"absolute rounded-full z-10\",\n\t\t\t\t\t\t\t\t\tdotBgColor,\n\t\t\t\t\t\t\t\t\tstyles.dot,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AnimatePresence>\n\n\t\t\t\t\t{/* Pulse animation for new notifications */}\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{unreadCount > 0 && showPulse && pulseStyle !== \"none\" && (\n\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\tinitial={{ scale: 1, opacity: 0.5 }}\n\t\t\t\t\t\t\t\tanimate={pulseVariants[pulseStyle].animate as never}\n\t\t\t\t\t\t\t\ttransition={pulseVariants[pulseStyle].transition}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"absolute rounded-full z-0\",\n\t\t\t\t\t\t\t\t\tdotBgColor,\n\t\t\t\t\t\t\t\t\tstyles.dot,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t</motion.button>\n\t\t\t</PopoverTrigger>\n\n\t\t\t<PopoverContent\n\t\t\t\tside=\"bottom\"\n\t\t\t\talign=\"end\"\n\t\t\t\tclassName=\"w-80 p-0 overflow-hidden\"\n\t\t\t>\n\t\t\t\t{/* Header */}\n\t\t\t\t<div className=\"flex items-center justify-between px-4 py-3 border-b border-border\">\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<h4 className=\"font-semibold text-sm\">{title}</h4>\n\t\t\t\t\t\t{unreadCount > 0 && (\n\t\t\t\t\t\t\t<span className=\"px-2 py-0.5 text-xs font-medium rounded-full bg-primary/10 text-primary\">\n\t\t\t\t\t\t\t\t{unreadCount} new\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t{unreadCount > 0 && onMarkAllAsRead && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tclassName=\"h-7 px-2 text-xs\"\n\t\t\t\t\t\t\t\tonClick={handleMarkAllAsRead}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<CheckCheck className=\"w-3.5 h-3.5 mr-1\" />\n\t\t\t\t\t\t\t\tMark all read\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Notification List */}\n\t\t\t\t{sortedNotifications.length === 0 ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-8 px-4 text-center\">\n\t\t\t\t\t\t\t<div className=\"w-12 h-12 rounded-full bg-muted flex items-center justify-center mb-3\">\n\t\t\t\t\t\t\t\t<Bell className=\"w-6 h-6 text-muted-foreground\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">{emptyMessage}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{viewAllHref && (\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-center px-4 py-2 border-t border-border bg-muted/30\">\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\thref={viewAllHref}\n\t\t\t\t\t\t\t\t\tclassName=\"text-xs text-primary hover:underline font-medium\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{viewAllLabel}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={scrollContainerRef}\n\t\t\t\t\t\t\tclassName=\"overflow-y-auto\"\n\t\t\t\t\t\t\tstyle={{ maxHeight: `${maxListHeight}px` }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"divide-y divide-border\">\n\t\t\t\t\t\t\t\t{sortedNotifications\n\t\t\t\t\t\t\t\t\t.slice(0, maxVisible)\n\t\t\t\t\t\t\t\t\t.map((notification) => {\n\t\t\t\t\t\t\t\t\t\tconst config = typeConfig[notification.type || \"info\"];\n\t\t\t\t\t\t\t\t\t\tconst Icon = config.icon;\n\t\t\t\t\t\t\t\t\t\tconst hasLink = !!notification.href;\n\t\t\t\t\t\t\t\t\t\tconst isRead = getIsRead(notification);\n\n\t\t\t\t\t\t\t\t\t\tconst handleClick = () =>\n\t\t\t\t\t\t\t\t\t\t\thandleNotificationClick(notification);\n\t\t\t\t\t\t\t\t\t\tconst handleKeyDown = (\n\t\t\t\t\t\t\t\t\t\t\te: React.KeyboardEvent<HTMLElement>,\n\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\thandleNotificationClick(notification);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\t// Use button for clickable notifications, div for non-clickable\n\t\t\t\t\t\t\t\t\t\tconst MotionElement = hasLink ? motion.button : motion.div;\n\t\t\t\t\t\t\t\t\t\tconst interactionProps = hasLink\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\trole: \"button\" as const,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick: handleClick,\n\t\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown: handleKeyDown,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t: {};\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<MotionElement\n\t\t\t\t\t\t\t\t\t\t\t\tkey={notification.id}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-notification-id={notification.id}\n\t\t\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"relative flex gap-3 px-4 py-3 transition-colors group w-full text-left border-0 bg-transparent\",\n\t\t\t\t\t\t\t\t\t\t\t\t\thasLink && \"cursor-pointer hover:bg-muted/50\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t!hasLink && \"cursor-default\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t!isRead && \"bg-primary/5\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t{...interactionProps}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{/* Type Icon */}\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconfig.bg,\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon className={cn(\"w-4 h-4\", config.color)} />\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t{/* Content */}\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex-1 min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-start justify-between gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"text-sm line-clamp-1\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!isRead ? \"font-semibold\" : \"font-medium\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thasLink && \"group-hover:underline\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{notification.title}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{notification.message && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground mt-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{notification.message}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-[10px] text-muted-foreground/70 mt-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatTimeAgo(notification.timestamp)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex-shrink-0 flex items-start gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{onDismiss && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-6 w-6 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonDismiss(notification.id);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<X className=\"w-3 h-3\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</MotionElement>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{/* Footer */}\n\t\t\t\t\t\t{(hasMore || onClearAll || viewAllHref) && (\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-between px-4 py-2 border-t border-border bg-muted/30\">\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t{hasMore && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t+{sortedNotifications.length - maxVisible} more\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t{viewAllHref && (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\thref={viewAllHref}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-xs text-primary hover:underline font-medium\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{viewAllLabel}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{onClearAll && sortedNotifications.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-7 px-2 text-xs text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => onClearAll()}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Trash2 className=\"w-3 h-3 mr-1\" />\n\t\t\t\t\t\t\t\t\t\t\tClear all\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n\treturn (\n\t\t<ScrollAreaPrimitive.Root\n\t\t\tdata-slot=\"scroll-area\"\n\t\t\tclassName={cn(\"relative overflow-hidden\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ScrollAreaPrimitive.Viewport\n\t\t\t\tdata-slot=\"scroll-area-viewport\"\n\t\t\t\tclassName=\"h-full w-full rounded-[inherit]\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</ScrollAreaPrimitive.Viewport>\n\t\t\t<ScrollBar />\n\t\t\t<ScrollAreaPrimitive.Corner />\n\t\t</ScrollAreaPrimitive.Root>\n\t);\n}\n\nfunction ScrollBar({\n\tclassName,\n\torientation = \"vertical\",\n\t...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n\treturn (\n\t\t<ScrollAreaPrimitive.ScrollAreaScrollbar\n\t\t\tdata-slot=\"scroll-bar\"\n\t\t\torientation={orientation}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex touch-none select-none transition-colors\",\n\t\t\t\torientation === \"vertical\" &&\n\t\t\t\t\t\"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n\t\t\t\torientation === \"horizontal\" &&\n\t\t\t\t\t\"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ScrollAreaPrimitive.ScrollAreaThumb\n\t\t\t\tdata-slot=\"scroll-thumb\"\n\t\t\t\tclassName=\"relative flex-1 rounded-full bg-border\"\n\t\t\t/>\n\t\t</ScrollAreaPrimitive.ScrollAreaScrollbar>\n\t);\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport { Clock, MapPin } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\n\nexport interface UpcomingEventsProps {\n\tevents: CalendarEvent[];\n\tmaxVisible?: number;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tclassName?: string;\n}\n\nexport function UpcomingEvents({\n\tevents,\n\tmaxVisible = 5,\n\tonEventClick,\n\tclassName,\n}: UpcomingEventsProps) {\n\tconst visible = events.slice(0, maxVisible);\n\n\treturn (\n\t\t<div className={cn(\"space-y-1\", className)}>\n\t\t\t{visible.map((event) => {\n\t\t\t\tconst start = new Date(event.dtstart);\n\t\t\t\tconst end = new Date(event.dtend);\n\t\t\t\tconst isToday = start.toDateString() === new Date().toDateString();\n\t\t\t\tconst dateStr = isToday\n\t\t\t\t\t? \"Today\"\n\t\t\t\t\t: start.toLocaleDateString([], {\n\t\t\t\t\t\t\tweekday: \"short\",\n\t\t\t\t\t\t\tmonth: \"short\",\n\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t});\n\t\t\t\tconst timeStr = event.allDay\n\t\t\t\t\t? \"All day\"\n\t\t\t\t\t: `${start.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })} – ${end.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })}`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={() => onEventClick?.(event)}\n\t\t\t\t\t\tclassName=\"flex w-full items-start gap-3 rounded-md px-2 py-2 text-left transition-colors hover:bg-accent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"mt-0.5 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-md text-xs font-medium\",\n\t\t\t\t\t\t\t\tisToday\n\t\t\t\t\t\t\t\t\t? \"bg-primary text-primary-foreground\"\n\t\t\t\t\t\t\t\t\t: \"bg-muted text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{start.getDate()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t<p className=\"text-sm font-medium truncate\">{event.summary}</p>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t<Clock className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t{dateStr} · {timeStr}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{event.location && (\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1 text-xs text-muted-foreground mt-0.5\">\n\t\t\t\t\t\t\t\t\t<MapPin className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t<span className=\"truncate\">{event.location}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n\tdelayDuration = 0,\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n\treturn (\n\t\t<TooltipPrimitive.Provider\n\t\t\tdata-slot=\"tooltip-provider\"\n\t\t\tdelayDuration={delayDuration}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction Tooltip({\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n\treturn (\n\t\t<TooltipProvider>\n\t\t\t<TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n\t\t</TooltipProvider>\n\t);\n}\n\nfunction TooltipTrigger({\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n\treturn <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n\tclassName,\n\tsideOffset = 0,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n\treturn (\n\t\t<TooltipPrimitive.Portal>\n\t\t\t<TooltipPrimitive.Content\n\t\t\t\tdata-slot=\"tooltip-content\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t\t<TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n\t\t\t</TooltipPrimitive.Content>\n\t\t</TooltipPrimitive.Portal>\n\t);\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Link, Check } from \"lucide-react\";\nimport { Button } from \"../ui/button\";\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"../ui/tooltip\";\n\nexport interface CalendarSubscribeButtonProps {\n\tfeedUrl: string;\n\tlabel?: string;\n}\n\nexport function CalendarSubscribeButton({\n\tfeedUrl,\n\tlabel,\n}: CalendarSubscribeButtonProps) {\n\tconst [copied, setCopied] = useState(false);\n\n\tconst webcalUrl = feedUrl.replace(/^https?:\\/\\//, \"webcal://\");\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(webcalUrl);\n\t\t\tsetCopied(true);\n\t\t\tsetTimeout(() => setCopied(false), 2000);\n\t\t} catch {\n\t\t\t// fallback: open webcal link\n\t\t\twindow.open(webcalUrl, \"_blank\");\n\t\t}\n\t};\n\n\treturn (\n\t\t<TooltipProvider>\n\t\t\t<Tooltip>\n\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName=\"text-xs\"\n\t\t\t\t\t\tonClick={handleCopy}\n\t\t\t\t\t>\n\t\t\t\t\t\t{copied ? (\n\t\t\t\t\t\t\t<Check className=\"mr-1 h-3 w-3\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Link className=\"mr-1 h-3 w-3\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{label ?? (copied ? \"Copied!\" : \"Subscribe\")}\n\t\t\t\t\t</Button>\n\t\t\t\t</TooltipTrigger>\n\t\t\t\t<TooltipContent>\n\t\t\t\t\tCopy webcal URL to subscribe in your calendar app\n\t\t\t\t</TooltipContent>\n\t\t\t</Tooltip>\n\t\t</TooltipProvider>\n\t);\n}\n","\"use client\";\n\nimport { CalendarDays, ExternalLink, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n\tuseCalendarContext,\n\ttype CalendarEvent,\n} from \"../../contexts/calendar\";\nimport { Button } from \"../ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { UpcomingEvents } from \"./UpcomingEvents\";\nimport { CalendarSubscribeButton } from \"./CalendarSubscribeButton\";\n\nexport interface CalendarWidgetLabels {\n\ttitle?: string;\n\tnoEvents?: string;\n\tviewCalendar?: string;\n}\n\nexport interface CalendarWidgetProps {\n\tcalendarUrl?: string;\n\tlabels?: CalendarWidgetLabels;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tclassName?: string;\n}\n\nexport function CalendarWidget({\n\tcalendarUrl,\n\tlabels = {},\n\tonEventClick,\n\tclassName,\n}: CalendarWidgetProps) {\n\tconst calCtx = useCalendarContext();\n\n\tconst upcomingEvents = (calCtx?.events ?? [])\n\t\t.filter((e) => new Date(e.dtstart) >= new Date())\n\t\t.sort(\n\t\t\t(a, b) => new Date(a.dtstart).getTime() - new Date(b.dtstart).getTime(),\n\t\t)\n\t\t.slice(0, 5);\n\n\tconst hasUpcoming = upcomingEvents.length > 0;\n\n\treturn (\n\t\t<Popover>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\tclassName={cn(\"relative h-9 w-9\", className)}\n\t\t\t\t\taria-label={labels.title ?? \"Calendar\"}\n\t\t\t\t>\n\t\t\t\t\t<CalendarDays className=\"h-4 w-4\" />\n\t\t\t\t\t{hasUpcoming && (\n\t\t\t\t\t\t<span className=\"absolute right-1.5 top-1.5 h-2 w-2 rounded-full bg-primary\" />\n\t\t\t\t\t)}\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-80 p-0\" align=\"end\">\n\t\t\t\t<div className=\"border-b px-4 py-3\">\n\t\t\t\t\t<h3 className=\"text-sm font-semibold\">\n\t\t\t\t\t\t{labels.title ?? \"Calendar\"}\n\t\t\t\t\t</h3>\n\t\t\t\t</div>\n\n\t\t\t\t<ScrollArea className=\"max-h-[320px]\">\n\t\t\t\t\t{calCtx?.isLoading ? (\n\t\t\t\t\t\t<div className=\"flex items-center justify-center py-8\">\n\t\t\t\t\t\t\t<Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : upcomingEvents.length === 0 ? (\n\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-8 text-center px-4\">\n\t\t\t\t\t\t\t<CalendarDays className=\"mb-2 h-8 w-8 text-muted-foreground/50\" />\n\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t{labels.noEvents ?? \"No upcoming events\"}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<UpcomingEvents\n\t\t\t\t\t\t\tevents={upcomingEvents}\n\t\t\t\t\t\t\tonEventClick={onEventClick}\n\t\t\t\t\t\t\tclassName=\"p-2\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</ScrollArea>\n\n\t\t\t\t<div className=\"flex items-center justify-between border-t px-3 py-2\">\n\t\t\t\t\t{calendarUrl && (\n\t\t\t\t\t\t<Button variant=\"ghost\" size=\"sm\" className=\"text-xs\" asChild>\n\t\t\t\t\t\t\t<a href={calendarUrl}>\n\t\t\t\t\t\t\t\t{labels.viewCalendar ?? \"View full calendar\"}\n\t\t\t\t\t\t\t\t<ExternalLink className=\"ml-1 h-3 w-3\" />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{calCtx?.feedUrl && (\n\t\t\t\t\t\t<CalendarSubscribeButton feedUrl={calCtx.feedUrl} />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport {\n\taddMonths,\n\tsubMonths,\n\tstartOfMonth,\n\tendOfMonth,\n\tstartOfWeek,\n\tendOfWeek,\n\teachDayOfInterval,\n\tisSameDay,\n\tformat,\n} from \"date-fns\";\nimport {\n\tChevronLeft,\n\tChevronRight,\n\tCalendarDays,\n\tPlus,\n\tLoader2,\n} from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\nimport { Button } from \"../ui/button\";\n\nexport type CalendarViewMode = \"month\" | \"week\" | \"day\";\n\nexport interface CalendarViewLabels {\n\tmonth?: string;\n\tweek?: string;\n\tday?: string;\n\ttoday?: string;\n\tnewEvent?: string;\n\tnoEvents?: string;\n}\n\nexport interface CalendarViewProps {\n\tevents: CalendarEvent[];\n\tisLoading?: boolean;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tonDateSelect?: (date: Date) => void;\n\tonCreateEvent?: () => void;\n\tlabels?: CalendarViewLabels;\n\tclassName?: string;\n}\n\nexport function CalendarView({\n\tevents,\n\tisLoading,\n\tonEventClick,\n\tonDateSelect,\n\tonCreateEvent,\n\tlabels = {},\n\tclassName,\n}: CalendarViewProps) {\n\tconst [viewMode, setViewMode] = useState<CalendarViewMode>(\"month\");\n\tconst [currentDate, setCurrentDate] = useState(new Date());\n\tconst [selectedDate, setSelectedDate] = useState<Date | undefined>();\n\n\tconst navigateBack = () => {\n\t\tif (viewMode === \"month\") {\n\t\t\tsetCurrentDate((d) => subMonths(d, 1));\n\t\t} else if (viewMode === \"week\") {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() - 7 * 86400000));\n\t\t} else {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() - 86400000));\n\t\t}\n\t};\n\n\tconst navigateForward = () => {\n\t\tif (viewMode === \"month\") {\n\t\t\tsetCurrentDate((d) => addMonths(d, 1));\n\t\t} else if (viewMode === \"week\") {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() + 7 * 86400000));\n\t\t} else {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() + 86400000));\n\t\t}\n\t};\n\n\tconst goToToday = () => {\n\t\tsetCurrentDate(new Date());\n\t\tsetSelectedDate(new Date());\n\t};\n\n\tconst handleDayClick = (date: Date) => {\n\t\tsetSelectedDate(date);\n\t\tonDateSelect?.(date);\n\t};\n\n\tconst eventsByDate = useMemo(() => {\n\t\tconst map = new Map<string, CalendarEvent[]>();\n\t\tfor (const event of events) {\n\t\t\tconst key = new Date(event.dtstart).toDateString();\n\t\t\tconst list = map.get(key) ?? [];\n\t\t\tlist.push(event);\n\t\t\tmap.set(key, list);\n\t\t}\n\t\treturn map;\n\t}, [events]);\n\n\tconst visibleDays = useMemo(() => {\n\t\tif (viewMode === \"month\") {\n\t\t\tconst monthStart = startOfMonth(currentDate);\n\t\t\tconst monthEnd = endOfMonth(currentDate);\n\t\t\treturn eachDayOfInterval({\n\t\t\t\tstart: startOfWeek(monthStart),\n\t\t\t\tend: endOfWeek(monthEnd),\n\t\t\t});\n\t\t} else if (viewMode === \"week\") {\n\t\t\tconst weekStart = startOfWeek(currentDate);\n\t\t\tconst weekEnd = endOfWeek(currentDate);\n\t\t\treturn eachDayOfInterval({ start: weekStart, end: weekEnd });\n\t\t}\n\t\treturn [currentDate];\n\t}, [viewMode, currentDate]);\n\n\tconst selectedDayEvents = selectedDate\n\t\t? (eventsByDate.get(selectedDate.toDateString()) ?? [])\n\t\t: [];\n\n\tconst headerLabel =\n\t\tviewMode === \"day\"\n\t\t\t? format(currentDate, \"EEEE, MMMM d, yyyy\")\n\t\t\t: format(currentDate, \"MMMM yyyy\");\n\n\treturn (\n\t\t<div className={cn(\"flex h-full flex-col\", className)}>\n\t\t\t<div className=\"flex items-center justify-between border-b px-4 py-3\">\n\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-8 w-8\"\n\t\t\t\t\t\t\tonClick={navigateBack}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ChevronLeft className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-8 w-8\"\n\t\t\t\t\t\t\tonClick={navigateForward}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ChevronRight className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h2 className=\"text-lg font-semibold\">{headerLabel}</h2>\n\t\t\t\t\t<Button variant=\"outline\" size=\"sm\" onClick={goToToday}>\n\t\t\t\t\t\t{labels.today ?? \"Today\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<div className=\"flex rounded-md border\">\n\t\t\t\t\t\t{([\"month\", \"week\", \"day\"] as const).map((mode) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={mode}\n\t\t\t\t\t\t\t\tvariant={viewMode === mode ? \"default\" : \"ghost\"}\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tclassName=\"rounded-none first:rounded-l-md last:rounded-r-md\"\n\t\t\t\t\t\t\t\tonClick={() => setViewMode(mode)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{labels[mode] ?? mode.charAt(0).toUpperCase() + mode.slice(1)}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t{onCreateEvent && (\n\t\t\t\t\t\t<Button size=\"sm\" onClick={onCreateEvent}>\n\t\t\t\t\t\t\t<Plus className=\"mr-1 h-4 w-4\" />\n\t\t\t\t\t\t\t{labels.newEvent ?? \"New event\"}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{isLoading ? (\n\t\t\t\t<div className=\"flex flex-1 items-center justify-center\">\n\t\t\t\t\t<Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"flex flex-1 overflow-hidden\">\n\t\t\t\t\t<div className=\"flex-1 overflow-auto p-4\">\n\t\t\t\t\t\t{viewMode === \"month\" ? (\n\t\t\t\t\t\t\t<div className=\"grid grid-cols-7 gap-px rounded-lg border bg-border\">\n\t\t\t\t\t\t\t\t{[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map(\n\t\t\t\t\t\t\t\t\t(day) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={day}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"bg-muted px-2 py-1.5 text-center text-xs font-medium text-muted-foreground\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleDays.map((day) => {\n\t\t\t\t\t\t\t\t\tconst dayEvents = eventsByDate.get(day.toDateString()) ?? [];\n\t\t\t\t\t\t\t\t\tconst isCurrentMonth =\n\t\t\t\t\t\t\t\t\t\tday.getMonth() === currentDate.getMonth();\n\t\t\t\t\t\t\t\t\tconst isToday = isSameDay(day, new Date());\n\t\t\t\t\t\t\t\t\tconst isSelected =\n\t\t\t\t\t\t\t\t\t\tselectedDate && isSameDay(day, selectedDate);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey={day.toISOString()}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleDayClick(day)}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\"min-h-[80px] bg-background p-1 text-left transition-colors hover:bg-accent\",\n\t\t\t\t\t\t\t\t\t\t\t\t!isCurrentMonth && \"opacity-40\",\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected && \"ring-2 ring-primary ring-inset\",\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"inline-flex h-6 w-6 items-center justify-center rounded-full text-xs\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tisToday &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"bg-primary text-primary-foreground font-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{day.getDate()}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t{dayEvents.slice(0, 3).map((evt) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"mt-0.5 truncate rounded bg-primary/10 px-1 py-0.5 text-[10px] text-primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonEventClick?.(evt);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\") onEventClick?.(evt);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{evt.summary}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t{dayEvents.length > 3 && (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"mt-0.5 text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t+{dayEvents.length - 3} more\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : viewMode === \"week\" ? (\n\t\t\t\t\t\t\t<div className=\"grid grid-cols-7 gap-2\">\n\t\t\t\t\t\t\t\t{visibleDays.map((day) => {\n\t\t\t\t\t\t\t\t\tconst dayEvents = eventsByDate.get(day.toDateString()) ?? [];\n\t\t\t\t\t\t\t\t\tconst isToday = isSameDay(day, new Date());\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<div key={day.toISOString()} className=\"min-h-[200px]\">\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mb-2 text-center text-xs\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tisToday && \"font-bold text-primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<p>{format(day, \"EEE\")}</p>\n\t\t\t\t\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inline-flex h-7 w-7 items-center justify-center rounded-full\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisToday && \"bg-primary text-primary-foreground\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{day.getDate()}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"space-y-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t{dayEvents.map((evt) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => onEventClick?.(evt)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full rounded bg-primary/10 px-2 py-1 text-left text-xs text-primary transition-colors hover:bg-primary/20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"truncate font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{evt.summary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-[10px] opacity-70\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{format(new Date(evt.dtstart), \"h:mm a\")}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t\t{visibleDays.flatMap((day) => {\n\t\t\t\t\t\t\t\t\tconst dayEvents = eventsByDate.get(day.toDateString()) ?? [];\n\t\t\t\t\t\t\t\t\tif (dayEvents.length === 0) {\n\t\t\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey=\"empty\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex flex-col items-center justify-center py-16 text-center\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CalendarDays className=\"mb-3 h-10 w-10 text-muted-foreground/50\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{labels.noEvents ?? \"No events for this day\"}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t</div>,\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn dayEvents.map((evt) => (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => onEventClick?.(evt)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex w-full items-center gap-3 rounded-lg border p-3 text-left transition-colors hover:bg-accent\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"h-2 w-2 rounded-full bg-primary flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"font-medium\">{evt.summary}</p>\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{format(new Date(evt.dtstart), \"h:mm a\")} –{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{format(new Date(evt.dtend), \"h:mm a\")}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t{evt.location && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground mt-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{evt.location}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t));\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{selectedDate &&\n\t\t\t\t\t\tselectedDayEvents.length > 0 &&\n\t\t\t\t\t\tviewMode === \"month\" && (\n\t\t\t\t\t\t\t<div className=\"w-64 border-l p-3\">\n\t\t\t\t\t\t\t\t<h3 className=\"mb-2 text-sm font-semibold\">\n\t\t\t\t\t\t\t\t\t{format(selectedDate, \"MMMM d\")}\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t\t\t{selectedDayEvents.map((evt) => (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => onEventClick?.(evt)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full rounded-md bg-muted p-2 text-left text-sm transition-colors hover:bg-accent\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<p className=\"font-medium truncate\">{evt.summary}</p>\n\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t{evt.allDay\n\t\t\t\t\t\t\t\t\t\t\t\t\t? \"All day\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `${format(new Date(evt.dtstart), \"h:mm a\")} – ${format(new Date(evt.dtend), \"h:mm a\")}`}\n\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Clock, MapPin, Loader2 } from \"lucide-react\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\nimport { Button } from \"../ui/button\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogFooter,\n\tDialogClose,\n} from \"../ui/dialog\";\n\nexport interface EventDialogLabels {\n\tcreateTitle?: string;\n\teditTitle?: string;\n\tsummary?: string;\n\tdescription?: string;\n\tlocation?: string;\n\tstartDate?: string;\n\tendDate?: string;\n\tallDay?: string;\n\tattendees?: string;\n\treminder?: string;\n\tsave?: string;\n\tcancel?: string;\n\tdelete?: string;\n}\n\nexport interface EventDialogProps {\n\topen: boolean;\n\tonOpenChange: (open: boolean) => void;\n\tevent?: Partial<CalendarEvent>;\n\tonSave: (data: Partial<CalendarEvent>) => Promise<void>;\n\tonDelete?: () => Promise<void>;\n\tlabels?: EventDialogLabels;\n}\n\nexport function EventDialog({\n\topen,\n\tonOpenChange,\n\tevent,\n\tonSave,\n\tonDelete,\n\tlabels = {},\n}: EventDialogProps) {\n\tconst isEdit = !!event?.id;\n\tconst [summary, setSummary] = useState(event?.summary ?? \"\");\n\tconst [description, setDescription] = useState(event?.description ?? \"\");\n\tconst [location, setLocation] = useState(event?.location ?? \"\");\n\tconst [dtstart, setDtstart] = useState(\n\t\tevent?.dtstart ? new Date(event.dtstart).toISOString().slice(0, 16) : \"\",\n\t);\n\tconst [dtend, setDtend] = useState(\n\t\tevent?.dtend ? new Date(event.dtend).toISOString().slice(0, 16) : \"\",\n\t);\n\tconst [allDay, setAllDay] = useState(event?.allDay ?? false);\n\tconst [saving, setSaving] = useState(false);\n\n\tconst handleSave = async () => {\n\t\tif (!summary.trim() || !dtstart || !dtend) return;\n\t\tsetSaving(true);\n\t\ttry {\n\t\t\tawait onSave({\n\t\t\t\t...(event?.id ? { id: event.id } : {}),\n\t\t\t\tsummary: summary.trim(),\n\t\t\t\tdescription: description.trim() || null,\n\t\t\t\tlocation: location.trim() || null,\n\t\t\t\tdtstart: new Date(dtstart).toISOString(),\n\t\t\t\tdtend: new Date(dtend).toISOString(),\n\t\t\t\tallDay,\n\t\t\t});\n\t\t\tonOpenChange(false);\n\t\t} finally {\n\t\t\tsetSaving(false);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Dialog open={open} onOpenChange={onOpenChange}>\n\t\t\t<DialogContent className=\"sm:max-w-[480px]\">\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>\n\t\t\t\t\t\t{isEdit\n\t\t\t\t\t\t\t? (labels.editTitle ?? \"Edit event\")\n\t\t\t\t\t\t\t: (labels.createTitle ?? \"New event\")}\n\t\t\t\t\t</DialogTitle>\n\t\t\t\t</DialogHeader>\n\n\t\t\t\t<div className=\"space-y-4 py-2\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t{labels.summary ?? \"Summary\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={summary}\n\t\t\t\t\t\t\tonChange={(e) => setSummary(e.target.value)}\n\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\tplaceholder=\"Event name\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"grid grid-cols-2 gap-3\">\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t\t<Clock className=\"mr-1 inline h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t\t{labels.startDate ?? \"Start\"}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"datetime-local\"\n\t\t\t\t\t\t\t\tvalue={dtstart}\n\t\t\t\t\t\t\t\tonChange={(e) => setDtstart(e.target.value)}\n\t\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t\t{labels.endDate ?? \"End\"}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"datetime-local\"\n\t\t\t\t\t\t\t\tvalue={dtend}\n\t\t\t\t\t\t\t\tonChange={(e) => setDtend(e.target.value)}\n\t\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<label className=\"flex items-center gap-2 text-sm\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={allDay}\n\t\t\t\t\t\t\tonChange={(e) => setAllDay(e.target.checked)}\n\t\t\t\t\t\t\tclassName=\"rounded border-input\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{labels.allDay ?? \"All day\"}\n\t\t\t\t\t</label>\n\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t<MapPin className=\"mr-1 inline h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t{labels.location ?? \"Location\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={location}\n\t\t\t\t\t\t\tonChange={(e) => setLocation(e.target.value)}\n\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\tplaceholder=\"Add location\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t{labels.description ?? \"Description\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tvalue={description}\n\t\t\t\t\t\t\tonChange={(e) => setDescription(e.target.value)}\n\t\t\t\t\t\t\trows={3}\n\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none\"\n\t\t\t\t\t\t\tplaceholder=\"Add description\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<DialogFooter className=\"gap-2\">\n\t\t\t\t\t{isEdit && onDelete && (\n\t\t\t\t\t\t<Button variant=\"destructive\" size=\"sm\" onClick={onDelete}>\n\t\t\t\t\t\t\t{labels.delete ?? \"Delete\"}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"flex-1\" />\n\t\t\t\t\t<DialogClose asChild>\n\t\t\t\t\t\t<Button variant=\"outline\" size=\"sm\">\n\t\t\t\t\t\t\t{labels.cancel ?? \"Cancel\"}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</DialogClose>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t\tdisabled={saving || !summary.trim() || !dtstart || !dtend}\n\t\t\t\t\t>\n\t\t\t\t\t\t{saving && <Loader2 className=\"mr-1 h-3.5 w-3.5 animate-spin\" />}\n\t\t\t\t\t\t{labels.save ?? \"Save\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogFooter>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n","\"use client\";\n\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\n\nexport interface MiniCalendarProps {\n\tselected?: Date;\n\tonSelect?: (date: Date | undefined) => void;\n\tevents?: CalendarEvent[];\n\tclassName?: string;\n}\n\nexport function MiniCalendar({\n\tselected,\n\tonSelect,\n\tevents = [],\n\tclassName,\n}: MiniCalendarProps) {\n\tconst eventDates = new Set(\n\t\tevents.map((e) => new Date(e.dtstart).toDateString()),\n\t);\n\n\treturn (\n\t\t<DayPicker\n\t\t\tmode=\"single\"\n\t\t\tselected={selected}\n\t\t\tonSelect={onSelect}\n\t\t\tshowOutsideDays\n\t\t\tclassName={cn(\"p-2\", className)}\n\t\t\tclassNames={{\n\t\t\t\tmonths: \"flex flex-col\",\n\t\t\t\tmonth: \"space-y-2\",\n\t\t\t\tmonth_caption: \"flex justify-center relative items-center\",\n\t\t\t\tcaption_label: \"text-sm font-medium\",\n\t\t\t\tnav: \"space-x-1 flex items-center\",\n\t\t\t\tbutton_previous:\n\t\t\t\t\t\"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute left-1\",\n\t\t\t\tbutton_next:\n\t\t\t\t\t\"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute right-1\",\n\t\t\t\tmonth_grid: \"w-full border-collapse space-y-1\",\n\t\t\t\tweekdays: \"flex\",\n\t\t\t\tweekday:\n\t\t\t\t\t\"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n\t\t\t\tweek: \"flex w-full mt-1\",\n\t\t\t\tday: \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20\",\n\t\t\t\tday_button: cn(\n\t\t\t\t\t\"h-8 w-8 p-0 font-normal\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground rounded-md\",\n\t\t\t\t),\n\t\t\t\tselected:\n\t\t\t\t\t\"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground rounded-md\",\n\t\t\t\ttoday: \"bg-accent text-accent-foreground rounded-md\",\n\t\t\t\toutside: \"text-muted-foreground opacity-50\",\n\t\t\t\tdisabled: \"text-muted-foreground opacity-50\",\n\t\t\t}}\n\t\t\tmodifiers={{\n\t\t\t\thasEvent: (date) => eventDates.has(date.toDateString()),\n\t\t\t}}\n\t\t\tmodifiersClassNames={{\n\t\t\t\thasEvent: \"font-bold\",\n\t\t\t}}\n\t\t/>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, X, HelpCircle, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\n\ntype Partstat = \"ACCEPTED\" | \"DECLINED\" | \"TENTATIVE\" | \"NEEDS-ACTION\";\n\nexport interface EventRsvpBadgeProps {\n\teventId: string;\n\tcurrentStatus: string;\n\tonRsvp: (eventId: string, partstat: string) => Promise<void>;\n\tclassName?: string;\n}\n\nconst statusConfig: Record<\n\tPartstat,\n\t{ icon: typeof Check; label: string; className: string }\n> = {\n\tACCEPTED: {\n\t\ticon: Check,\n\t\tlabel: \"Accepted\",\n\t\tclassName:\n\t\t\t\"bg-green-500/10 text-green-600 dark:text-green-400 border-green-500/30\",\n\t},\n\tDECLINED: {\n\t\ticon: X,\n\t\tlabel: \"Declined\",\n\t\tclassName: \"bg-red-500/10 text-red-600 dark:text-red-400 border-red-500/30\",\n\t},\n\tTENTATIVE: {\n\t\ticon: HelpCircle,\n\t\tlabel: \"Tentative\",\n\t\tclassName:\n\t\t\t\"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 border-yellow-500/30\",\n\t},\n\t\"NEEDS-ACTION\": {\n\t\ticon: HelpCircle,\n\t\tlabel: \"Pending\",\n\t\tclassName: \"bg-muted text-muted-foreground border-border\",\n\t},\n};\n\nexport function EventRsvpBadge({\n\teventId,\n\tcurrentStatus,\n\tonRsvp,\n\tclassName,\n}: EventRsvpBadgeProps) {\n\tconst [loading, setLoading] = useState<string | null>(null);\n\tconst status = (currentStatus?.toUpperCase() as Partstat) || \"NEEDS-ACTION\";\n\n\tconst handleRsvp = async (partstat: Partstat) => {\n\t\tif (partstat === status) return;\n\t\tsetLoading(partstat);\n\t\ttry {\n\t\t\tawait onRsvp(eventId, partstat);\n\t\t} finally {\n\t\t\tsetLoading(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={cn(\"flex items-center gap-1\", className)}>\n\t\t\t{([\"ACCEPTED\", \"TENTATIVE\", \"DECLINED\"] as const).map((ps) => {\n\t\t\t\tconst cfg = statusConfig[ps];\n\t\t\t\tconst Icon = cfg.icon;\n\t\t\t\tconst isActive = status === ps;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ps}\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName={cn(\"h-7 px-2 text-xs\", isActive && cfg.className)}\n\t\t\t\t\t\tonClick={() => handleRsvp(ps)}\n\t\t\t\t\t\tdisabled={loading !== null}\n\t\t\t\t\t>\n\t\t\t\t\t\t{loading === ps ? (\n\t\t\t\t\t\t\t<Loader2 className=\"mr-1 h-3 w-3 animate-spin\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Icon className=\"mr-1 h-3 w-3\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{cfg.label}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport {\n\tChatSidebarContext,\n\ttype ChatConversation,\n\ttype ChatSidebarView,\n} from \"../../contexts/chat\";\n\nconst STORAGE_KEY = \"cartera:chatSidebarOpen\";\n\nexport interface ChatSidebarProviderProps {\n\tfetchConversations: () => Promise<ChatConversation[]>;\n\tchildren: React.ReactNode;\n\tdefaultOpen?: boolean;\n}\n\nexport function ChatSidebarProvider({\n\tfetchConversations,\n\tchildren,\n\tdefaultOpen,\n}: ChatSidebarProviderProps) {\n\tconst [isOpen, setIsOpen] = useState(() => {\n\t\tif (defaultOpen !== undefined) return defaultOpen;\n\t\tif (typeof window === \"undefined\") return false;\n\t\ttry {\n\t\t\treturn localStorage.getItem(STORAGE_KEY) === \"true\";\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n\tconst [view, setView] = useState<ChatSidebarView>(\"list\");\n\tconst [conversations, setConversations] = useState<ChatConversation[]>([]);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [activeCaseId, setActiveCaseId] = useState<string | null>(null);\n\tconst [activeRoomId, setActiveRoomId] = useState<string | null>(null);\n\tconst fetchRef = useRef(fetchConversations);\n\tfetchRef.current = fetchConversations;\n\n\tconst persistOpen = useCallback((open: boolean) => {\n\t\tsetIsOpen(open);\n\t\ttry {\n\t\t\tlocalStorage.setItem(STORAGE_KEY, String(open));\n\t\t} catch {\n\t\t\t// localStorage unavailable\n\t\t}\n\t}, []);\n\n\tconst loadConversations = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\ttry {\n\t\t\tconst result = await fetchRef.current();\n\t\t\tsetConversations(result);\n\t\t} catch {\n\t\t\t// Silently fail\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, []);\n\n\tuseEffect(() => {\n\t\tvoid loadConversations();\n\t}, [loadConversations]);\n\n\tconst toggle = useCallback(() => persistOpen(!isOpen), [isOpen, persistOpen]);\n\tconst open = useCallback(() => persistOpen(true), [persistOpen]);\n\tconst close = useCallback(() => {\n\t\tpersistOpen(false);\n\t\tsetView(\"list\");\n\t\tsetActiveCaseId(null);\n\t\tsetActiveRoomId(null);\n\t}, [persistOpen]);\n\n\tconst openChat = useCallback(\n\t\t(caseId: string, roomId?: string) => {\n\t\t\tpersistOpen(true);\n\t\t\tsetActiveCaseId(caseId);\n\t\t\tif (roomId) {\n\t\t\t\tsetActiveRoomId(roomId);\n\t\t\t\tsetView(\"chat\");\n\t\t\t} else {\n\t\t\t\tconst conv = conversations.find((c) => c.caseId === caseId);\n\t\t\t\tif (conv && conv.rooms.length === 1) {\n\t\t\t\t\tsetActiveRoomId(conv.rooms[0].id);\n\t\t\t\t\tsetView(\"chat\");\n\t\t\t\t} else {\n\t\t\t\t\tsetActiveRoomId(null);\n\t\t\t\t\tsetView(\"list\");\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[persistOpen, conversations],\n\t);\n\n\tconst selectRoom = useCallback(\n\t\t(roomId: string, caseId: string) => {\n\t\t\tsetActiveCaseId(caseId);\n\t\t\tsetActiveRoomId(roomId);\n\t\t\tsetView(\"chat\");\n\t\t\tif (!isOpen) persistOpen(true);\n\t\t},\n\t\t[isOpen, persistOpen],\n\t);\n\n\tconst back = useCallback(() => {\n\t\tsetView(\"list\");\n\t\tsetActiveRoomId(null);\n\t}, []);\n\n\tconst value = {\n\t\tisOpen,\n\t\tview,\n\t\tconversations,\n\t\tisLoading,\n\t\tactiveCaseId,\n\t\tactiveRoomId,\n\t\ttoggle,\n\t\topen,\n\t\tclose,\n\t\topenChat,\n\t\tselectRoom,\n\t\tback,\n\t\trefetch: loadConversations,\n\t};\n\n\treturn (\n\t\t<ChatSidebarContext.Provider value={value}>\n\t\t\t{children}\n\t\t</ChatSidebarContext.Provider>\n\t);\n}\n","\"use client\";\n\nimport { useState, useEffect, useRef, useCallback } from \"react\";\n\nexport interface ChatMessageData {\n\tid: string;\n\tchatRoomId: string;\n\tsenderId: string;\n\tsenderName: string | null;\n\tsenderRole: string;\n\tcontent: string | null;\n\tattachments: Array<{\n\t\tid: string;\n\t\tfileName: string;\n\t\tfileSize: number;\n\t\tmimeType: string;\n\t}>;\n\tcreatedAt: string;\n}\n\nexport interface ChatRoomConfig {\n\tbaseUrl: string;\n\tgetToken: () => Promise<string | null>;\n}\n\ninterface UseChatRoomOptions {\n\tminReconnectDelay?: number;\n\tmaxReconnectDelay?: number;\n\tpingInterval?: number;\n}\n\nexport interface UseChatRoomResult {\n\tmessages: ChatMessageData[];\n\tsendMessage: (content: string, attachmentIds?: string[]) => void;\n\tsendTyping: (isTyping: boolean) => void;\n\tisConnected: boolean;\n\terror: string | null;\n\ttypingUsers: Array<{ userId: string; userName: string | null }>;\n\tloadMoreHistory: () => Promise<void>;\n\thasMoreHistory: boolean;\n\tisLoadingHistory: boolean;\n}\n\nconst PING_INTERVAL = 30_000;\nconst MIN_RECONNECT_DELAY = 1_000;\nconst MAX_RECONNECT_DELAY = 30_000;\n\nexport function useChatRoom(\n\troomId: string | null | undefined,\n\tconfig: ChatRoomConfig,\n\toptions: UseChatRoomOptions = {},\n): UseChatRoomResult {\n\tconst {\n\t\tminReconnectDelay = MIN_RECONNECT_DELAY,\n\t\tmaxReconnectDelay = MAX_RECONNECT_DELAY,\n\t\tpingInterval = PING_INTERVAL,\n\t} = options;\n\n\tconst [messages, setMessages] = useState<ChatMessageData[]>([]);\n\tconst [isConnected, setIsConnected] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [typingUsers, setTypingUsers] = useState<\n\t\tArray<{ userId: string; userName: string | null }>\n\t>([]);\n\tconst [hasMoreHistory, setHasMoreHistory] = useState(true);\n\tconst [isLoadingHistory, setIsLoadingHistory] = useState(false);\n\n\tconst wsRef = useRef<WebSocket | null>(null);\n\tconst mountedRef = useRef(true);\n\tconst reconnectDelayRef = useRef(minReconnectDelay);\n\tconst reconnectTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\tconst pingTimerRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\tconst roomIdRef = useRef(roomId);\n\tconst cursorRef = useRef<string | null>(null);\n\tconst messageIdsRef = useRef(new Set<string>());\n\tconst loadMoreHistoryRef = useRef<() => Promise<void>>(() =>\n\t\tPromise.resolve(),\n\t);\n\tconst configRef = useRef(config);\n\troomIdRef.current = roomId;\n\tconfigRef.current = config;\n\n\tconst clearTimers = useCallback(() => {\n\t\tif (reconnectTimerRef.current) {\n\t\t\tclearTimeout(reconnectTimerRef.current);\n\t\t\treconnectTimerRef.current = null;\n\t\t}\n\t\tif (pingTimerRef.current) {\n\t\t\tclearInterval(pingTimerRef.current);\n\t\t\tpingTimerRef.current = null;\n\t\t}\n\t}, []);\n\n\tconst loadMoreHistory = useCallback(async () => {\n\t\tif (!roomIdRef.current || isLoadingHistory || !hasMoreHistory) return;\n\n\t\tsetIsLoadingHistory(true);\n\t\ttry {\n\t\t\tconst jwt = await configRef.current.getToken();\n\t\t\tif (!jwt) return;\n\n\t\t\tconst params = new URLSearchParams({ limit: \"50\" });\n\t\t\tif (cursorRef.current) {\n\t\t\t\tparams.set(\"cursor\", cursorRef.current);\n\t\t\t}\n\n\t\t\tconst res = await fetch(\n\t\t\t\t`${configRef.current.baseUrl}/rooms/${roomIdRef.current}/messages?${params}`,\n\t\t\t\t{ headers: { Authorization: `Bearer ${jwt}` } },\n\t\t\t);\n\n\t\t\tif (!res.ok) return;\n\n\t\t\tconst data = (await res.json()) as {\n\t\t\t\tsuccess: boolean;\n\t\t\t\tresult: ChatMessageData[];\n\t\t\t\tnextCursor: string | null;\n\t\t\t};\n\n\t\t\tif (data.success && data.result.length > 0) {\n\t\t\t\tconst newMessages = data.result.filter(\n\t\t\t\t\t(m) => !messageIdsRef.current.has(m.id),\n\t\t\t\t);\n\t\t\t\tfor (const m of newMessages) {\n\t\t\t\t\tmessageIdsRef.current.add(m.id);\n\t\t\t\t}\n\t\t\t\tsetMessages((prev) => [...newMessages, ...prev]);\n\t\t\t\tcursorRef.current = data.nextCursor;\n\t\t\t\tsetHasMoreHistory(data.nextCursor !== null);\n\t\t\t} else {\n\t\t\t\tsetHasMoreHistory(false);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silently fail — user can retry\n\t\t} finally {\n\t\t\tsetIsLoadingHistory(false);\n\t\t}\n\t}, [isLoadingHistory, hasMoreHistory]);\n\n\tconst sendMessage = useCallback(\n\t\t(content: string, attachmentIds?: string[]) => {\n\t\t\tconst ws = wsRef.current;\n\t\t\tif (!ws || ws.readyState !== WebSocket.OPEN) return;\n\n\t\t\tws.send(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\ttype: \"send_message\",\n\t\t\t\t\tcontent,\n\t\t\t\t\tattachmentIds,\n\t\t\t\t\tclientMessageId: crypto.randomUUID(),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sendTyping = useCallback((isTyping: boolean) => {\n\t\tconst ws = wsRef.current;\n\t\tif (!ws || ws.readyState !== WebSocket.OPEN) return;\n\n\t\tws.send(JSON.stringify({ type: \"typing\", isTyping }));\n\t}, []);\n\n\tuseEffect(() => {\n\t\tloadMoreHistoryRef.current = loadMoreHistory;\n\t}, [loadMoreHistory]);\n\n\tconst connect = useCallback(async () => {\n\t\tif (!roomIdRef.current || !mountedRef.current) return;\n\n\t\tlet jwt: string | null = null;\n\t\ttry {\n\t\t\tjwt = await configRef.current.getToken();\n\t\t} catch {\n\t\t\tif (mountedRef.current) {\n\t\t\t\tsetError(\"Failed to get authentication token\");\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (!jwt || !mountedRef.current) return;\n\n\t\tconst baseUrl = configRef.current.baseUrl;\n\t\tconst wsBase = baseUrl.replace(/^http/, \"ws\");\n\t\tconst wsUrl = `${wsBase}/realtime/chat?roomId=${encodeURIComponent(roomIdRef.current)}&token=${encodeURIComponent(jwt)}`;\n\n\t\tlet ws: WebSocket;\n\t\ttry {\n\t\t\tws = new WebSocket(wsUrl);\n\t\t} catch (err) {\n\t\t\tif (mountedRef.current) {\n\t\t\t\tsetError(\n\t\t\t\t\terr instanceof Error ? err.message : \"WebSocket creation failed\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\twsRef.current = ws;\n\n\t\tws.onopen = () => {\n\t\t\tif (!mountedRef.current) {\n\t\t\t\tws.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsConnected(true);\n\t\t\tsetError(null);\n\t\t\treconnectDelayRef.current = minReconnectDelay;\n\n\t\t\tws.send(JSON.stringify({ type: \"client_hello\" }));\n\n\t\t\tpingTimerRef.current = setInterval(() => {\n\t\t\t\tif (ws.readyState === WebSocket.OPEN) {\n\t\t\t\t\tws.send(JSON.stringify({ type: \"ping\", timestamp: Date.now() }));\n\t\t\t\t}\n\t\t\t}, pingInterval);\n\t\t};\n\n\t\tws.onmessage = (event) => {\n\t\t\tif (!mountedRef.current) return;\n\t\t\ttry {\n\t\t\t\tconst msg = JSON.parse(event.data as string) as {\n\t\t\t\t\ttype: string;\n\t\t\t\t\t[key: string]: unknown;\n\t\t\t\t};\n\n\t\t\t\tswitch (msg.type) {\n\t\t\t\t\tcase \"server_hello\":\n\t\t\t\t\t\tvoid loadMoreHistoryRef.current();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"new_message\": {\n\t\t\t\t\t\tconst message = msg.message as ChatMessageData;\n\t\t\t\t\t\tif (!messageIdsRef.current.has(message.id)) {\n\t\t\t\t\t\t\tmessageIdsRef.current.add(message.id);\n\t\t\t\t\t\t\tsetMessages((prev) => [...prev, message]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetTypingUsers((prev) =>\n\t\t\t\t\t\t\tprev.filter((u) => u.userId !== message.senderId),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"typing_indicator\": {\n\t\t\t\t\t\tconst userId = msg.userId as string;\n\t\t\t\t\t\tconst userName = (msg.userName as string) ?? null;\n\t\t\t\t\t\tconst isTyping = msg.isTyping as boolean;\n\n\t\t\t\t\t\tsetTypingUsers((prev) => {\n\t\t\t\t\t\t\tif (isTyping) {\n\t\t\t\t\t\t\t\tif (prev.some((u) => u.userId === userId)) return prev;\n\t\t\t\t\t\t\t\treturn [...prev, { userId, userName }];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn prev.filter((u) => u.userId !== userId);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"pong\":\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"error\":\n\t\t\t\t\t\tsetError((msg.message as string) ?? \"WebSocket error from server\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Ignore malformed messages\n\t\t\t}\n\t\t};\n\n\t\tws.onerror = () => {\n\t\t\tif (!mountedRef.current) return;\n\t\t\tsetError(\"WebSocket connection error\");\n\t\t};\n\n\t\tws.onclose = () => {\n\t\t\tif (pingTimerRef.current) {\n\t\t\t\tclearInterval(pingTimerRef.current);\n\t\t\t\tpingTimerRef.current = null;\n\t\t\t}\n\t\t\tif (!mountedRef.current) return;\n\n\t\t\tsetIsConnected(false);\n\n\t\t\tconst delay = reconnectDelayRef.current;\n\t\t\treconnectDelayRef.current = Math.min(delay * 2, maxReconnectDelay);\n\n\t\t\treconnectTimerRef.current = setTimeout(() => {\n\t\t\t\tif (mountedRef.current && roomIdRef.current) {\n\t\t\t\t\tvoid connect();\n\t\t\t\t}\n\t\t\t}, delay);\n\t\t};\n\t}, [minReconnectDelay, maxReconnectDelay, pingInterval]);\n\n\tuseEffect(() => {\n\t\tmountedRef.current = true;\n\n\t\tif (!roomId) {\n\t\t\tsetMessages([]);\n\t\t\tsetIsConnected(false);\n\t\t\tsetError(null);\n\t\t\tsetTypingUsers([]);\n\t\t\tsetHasMoreHistory(true);\n\t\t\tcursorRef.current = null;\n\t\t\tmessageIdsRef.current = new Set();\n\t\t\treturn;\n\t\t}\n\n\t\tsetMessages([]);\n\t\tsetTypingUsers([]);\n\t\tsetHasMoreHistory(true);\n\t\tcursorRef.current = null;\n\t\tmessageIdsRef.current = new Set();\n\t\treconnectDelayRef.current = minReconnectDelay;\n\n\t\tvoid connect();\n\n\t\treturn () => {\n\t\t\tmountedRef.current = false;\n\t\t\tclearTimers();\n\t\t\tif (wsRef.current) {\n\t\t\t\twsRef.current.close();\n\t\t\t\twsRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [roomId]);\n\n\treturn {\n\t\tmessages,\n\t\tsendMessage,\n\t\tsendTyping,\n\t\tisConnected,\n\t\terror,\n\t\ttypingUsers,\n\t\tloadMoreHistory,\n\t\thasMoreHistory,\n\t\tisLoadingHistory,\n\t};\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useRef, useEffect, useCallback } from \"react\";\nimport {\n\tSend,\n\tPaperclip,\n\tMessageSquare,\n\tWifi,\n\tWifiOff,\n\tLoader2,\n\tFileIcon,\n\tDownload,\n\tX,\n} from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n\tuseChatRoom,\n\ttype ChatRoomConfig,\n\ttype ChatMessageData,\n} from \"../../hooks/useChatRoom\";\nimport { Button } from \"../ui/button\";\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"../ui/tooltip\";\n\nconst roleColors: Record<string, string> = {\n\tclient: \"bg-blue-500/10 text-blue-600 dark:text-blue-400\",\n\tseller: \"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400\",\n\torg_manager: \"bg-violet-500/10 text-violet-600 dark:text-violet-400\",\n\tcredit_agent: \"bg-amber-500/10 text-amber-600 dark:text-amber-400\",\n\tadmin: \"bg-primary/10 text-primary\",\n};\n\ninterface PendingAttachment {\n\tid: string;\n\tfileName: string;\n\tfileSize: number;\n\tmimeType: string;\n\tuploading: boolean;\n}\n\nexport interface ChatRoomViewLabels {\n\tnoMessages?: string;\n\tplaceholder?: string;\n\tsend?: string;\n\ttoday?: string;\n\tyesterday?: string;\n\tattachFile?: string;\n}\n\nexport interface ChatRoomViewProps {\n\troomId: string;\n\tcurrentUserId: string;\n\tconfig: ChatRoomConfig;\n\troomLabel?: string;\n\tlabels?: ChatRoomViewLabels;\n\troleLabel?: (role: string) => string;\n\tclassName?: string;\n}\n\nexport function ChatRoomView({\n\troomId,\n\tcurrentUserId,\n\tconfig,\n\troomLabel,\n\tlabels = {},\n\troleLabel,\n\tclassName,\n}: ChatRoomViewProps) {\n\tconst {\n\t\tmessages,\n\t\tsendMessage,\n\t\tsendTyping,\n\t\tisConnected,\n\t\terror,\n\t\ttypingUsers,\n\t\tloadMoreHistory,\n\t\thasMoreHistory,\n\t\tisLoadingHistory,\n\t} = useChatRoom(roomId, config);\n\n\tconst [newMessage, setNewMessage] = useState(\"\");\n\tconst [pendingAttachments, setPendingAttachments] = useState<\n\t\tPendingAttachment[]\n\t>([]);\n\tconst scrollRef = useRef<HTMLDivElement>(null);\n\tconst inputRef = useRef<HTMLTextAreaElement>(null);\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\tconst typingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\tconst prevMessageCountRef = useRef(0);\n\n\tuseEffect(() => {\n\t\tconst el = scrollRef.current;\n\t\tif (!el) return;\n\t\tif (messages.length > prevMessageCountRef.current) {\n\t\t\tel.scrollTop = el.scrollHeight;\n\t\t}\n\t\tprevMessageCountRef.current = messages.length;\n\t}, [messages.length]);\n\n\tconst handleScroll = useCallback(() => {\n\t\tconst el = scrollRef.current;\n\t\tif (!el) return;\n\t\tif (el.scrollTop < 50 && hasMoreHistory && !isLoadingHistory) {\n\t\t\tvoid loadMoreHistory();\n\t\t}\n\t}, [hasMoreHistory, isLoadingHistory, loadMoreHistory]);\n\n\tconst handleTyping = useCallback(() => {\n\t\tsendTyping(true);\n\t\tif (typingTimeoutRef.current) clearTimeout(typingTimeoutRef.current);\n\t\ttypingTimeoutRef.current = setTimeout(() => sendTyping(false), 2000);\n\t}, [sendTyping]);\n\n\tconst handleSendMessage = useCallback(() => {\n\t\tconst content = newMessage.trim();\n\t\tconst attachmentIds = pendingAttachments\n\t\t\t.filter((a) => !a.uploading)\n\t\t\t.map((a) => a.id);\n\n\t\tif (!content && attachmentIds.length === 0) return;\n\n\t\tsendMessage(content, attachmentIds.length > 0 ? attachmentIds : undefined);\n\t\tsetNewMessage(\"\");\n\t\tsetPendingAttachments([]);\n\t\tsendTyping(false);\n\t\tif (typingTimeoutRef.current) clearTimeout(typingTimeoutRef.current);\n\t\tinputRef.current?.focus();\n\t}, [newMessage, pendingAttachments, sendMessage, sendTyping]);\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n\t\tif (e.key === \"Enter\" && !e.shiftKey) {\n\t\t\te.preventDefault();\n\t\t\thandleSendMessage();\n\t\t}\n\t};\n\n\tconst handleFileSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = e.target.files;\n\t\tif (!files || files.length === 0) return;\n\n\t\tfor (const file of Array.from(files)) {\n\t\t\tconst tempId = crypto.randomUUID();\n\t\t\tconst pending: PendingAttachment = {\n\t\t\t\tid: tempId,\n\t\t\t\tfileName: file.name,\n\t\t\t\tfileSize: file.size,\n\t\t\t\tmimeType: file.type || \"application/octet-stream\",\n\t\t\t\tuploading: true,\n\t\t\t};\n\t\t\tsetPendingAttachments((prev) => [...prev, pending]);\n\n\t\t\ttry {\n\t\t\t\tconst jwt = await config.getToken();\n\t\t\t\tif (!jwt) throw new Error(\"No auth token\");\n\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"file\", file);\n\n\t\t\t\tconst res = await fetch(\n\t\t\t\t\t`${config.baseUrl}/rooms/${roomId}/attachments/upload`,\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: { Authorization: `Bearer ${jwt}` },\n\t\t\t\t\t\tbody: formData,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tif (!res.ok) throw new Error(\"Upload failed\");\n\n\t\t\t\tconst data = (await res.json()) as {\n\t\t\t\t\tsuccess: boolean;\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tid: string;\n\t\t\t\t\t\tfileName: string;\n\t\t\t\t\t\tfileSize: number;\n\t\t\t\t\t\tmimeType: string;\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\tsetPendingAttachments((prev) =>\n\t\t\t\t\tprev.map((a) =>\n\t\t\t\t\t\ta.id === tempId\n\t\t\t\t\t\t\t? { ...a, id: data.result.id, uploading: false }\n\t\t\t\t\t\t\t: a,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\tsetPendingAttachments((prev) => prev.filter((a) => a.id !== tempId));\n\t\t\t}\n\t\t}\n\n\t\tif (fileInputRef.current) fileInputRef.current.value = \"\";\n\t};\n\n\tconst removeAttachment = (id: string) => {\n\t\tsetPendingAttachments((prev) => prev.filter((a) => a.id !== id));\n\t};\n\n\tconst formatTime = (timestamp: string) => {\n\t\treturn new Date(timestamp).toLocaleTimeString([], {\n\t\t\thour: \"2-digit\",\n\t\t\tminute: \"2-digit\",\n\t\t});\n\t};\n\n\tconst formatDate = (timestamp: string) => {\n\t\tconst date = new Date(timestamp);\n\t\tconst today = new Date();\n\t\tconst yesterday = new Date(today);\n\t\tyesterday.setDate(yesterday.getDate() - 1);\n\n\t\tif (date.toDateString() === today.toDateString())\n\t\t\treturn labels.today ?? \"Today\";\n\t\tif (date.toDateString() === yesterday.toDateString())\n\t\t\treturn labels.yesterday ?? \"Yesterday\";\n\t\treturn date.toLocaleDateString([], { month: \"short\", day: \"numeric\" });\n\t};\n\n\tconst groupedMessages = messages.reduce(\n\t\t(groups, message) => {\n\t\t\tconst date = formatDate(message.createdAt);\n\t\t\tif (!groups[date]) groups[date] = [];\n\t\t\tgroups[date].push(message);\n\t\t\treturn groups;\n\t\t},\n\t\t{} as Record<string, ChatMessageData[]>,\n\t);\n\n\tconst formatFileSize = (bytes: number) => {\n\t\tif (bytes < 1024) return `${bytes} B`;\n\t\tif (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n\t\treturn `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n\t};\n\n\tconst getAttachmentUrl = (attachmentId: string) =>\n\t\t`${config.baseUrl}/rooms/${roomId}/attachments/${attachmentId}`;\n\n\tconst getRoleLabel = (role: string) => (roleLabel ? roleLabel(role) : role);\n\n\treturn (\n\t\t<div className={cn(\"flex h-full flex-col\", className)}>\n\t\t\t<div className=\"flex-shrink-0 flex items-center justify-between border-b px-4 py-3\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<MessageSquare className=\"h-4 w-4 text-primary\" aria-hidden=\"true\" />\n\t\t\t\t\t<span className=\"text-sm font-medium\">{roomLabel ?? \"Chat\"}</span>\n\t\t\t\t</div>\n\t\t\t\t<TooltipProvider>\n\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t{isConnected ? (\n\t\t\t\t\t\t\t\t\t<Wifi className=\"h-3.5 w-3.5 text-green-500\" />\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<WifiOff className=\"h-3.5 w-3.5 text-destructive\" />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t{isConnected ? \"Connected\" : (error ?? \"Reconnecting...\")}\n\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</TooltipProvider>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex flex-1 flex-col overflow-hidden\">\n\t\t\t\t<div\n\t\t\t\t\tref={scrollRef}\n\t\t\t\t\tonScroll={handleScroll}\n\t\t\t\t\tclassName=\"flex-1 overflow-y-auto p-3\"\n\t\t\t\t>\n\t\t\t\t\t{isLoadingHistory && (\n\t\t\t\t\t\t<div className=\"flex justify-center py-2\">\n\t\t\t\t\t\t\t<Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{messages.length === 0 && !isLoadingHistory ? (\n\t\t\t\t\t\t<div className=\"flex h-full flex-col items-center justify-center py-8 text-center\">\n\t\t\t\t\t\t\t<MessageSquare\n\t\t\t\t\t\t\t\tclassName=\"mb-3 h-10 w-10 text-muted-foreground/50\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t{labels.noMessages ?? \"No messages yet\"}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"space-y-4\">\n\t\t\t\t\t\t\t{Object.entries(groupedMessages).map(([date, dateMessages]) => (\n\t\t\t\t\t\t\t\t<div key={date}>\n\t\t\t\t\t\t\t\t\t<div className=\"my-3 flex items-center gap-3\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"h-px flex-1 bg-border\" />\n\t\t\t\t\t\t\t\t\t\t<span className=\"px-2 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t{date}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<div className=\"h-px flex-1 bg-border\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"space-y-3\">\n\t\t\t\t\t\t\t\t\t\t{dateMessages.map((message) => {\n\t\t\t\t\t\t\t\t\t\t\tconst isCurrentUser = message.senderId === currentUserId;\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={message.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex gap-2\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisCurrentUser ? \"flex-row-reverse\" : \"flex-row\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full text-xs font-medium\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\troleColors[message.senderRole] ??\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\troleColors.client,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{(message.senderName ?? message.senderId)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.split(\" \")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map((n) => n[0])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.join(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.slice(0, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.toUpperCase()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex max-w-[80%] flex-col\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisCurrentUser ? \"items-end\" : \"items-start\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mb-0.5 flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs font-medium text-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.senderName ??\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmessage.senderId.slice(0, 8)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"rounded px-1 py-0.5 text-[10px] font-medium\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\troleColors[message.senderRole] ?? \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getRoleLabel(message.senderRole)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatTime(message.createdAt)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.content && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"rounded-xl px-3 py-2 text-sm\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisCurrentUser\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"rounded-br-sm bg-primary text-primary-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"rounded-bl-sm bg-muted text-foreground\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.content}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.attachments.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mt-1 flex flex-col gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.attachments.map((att) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tatt.mimeType.startsWith(\"image/\") ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={att.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thref={getAttachmentUrl(att.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"block max-w-[200px] overflow-hidden rounded-lg border\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={getAttachmentUrl(att.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talt={att.fileName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-auto w-full object-cover\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={att.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thref={getAttachmentUrl(att.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-2 rounded-lg border bg-muted/50 px-2 py-1.5 text-xs transition-colors hover:bg-muted\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FileIcon className=\"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"truncate font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{att.fileName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(att.fileSize)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Download className=\"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{typingUsers.length > 0 && (\n\t\t\t\t\t<div className=\"flex-shrink-0 px-3 py-1\">\n\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground italic\">\n\t\t\t\t\t\t\t{typingUsers.map((u) => u.userName ?? \"Someone\").join(\", \")}{\" \"}\n\t\t\t\t\t\t\t{typingUsers.length === 1 ? \"is\" : \"are\"} typing...\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{pendingAttachments.length > 0 && (\n\t\t\t\t\t<div className=\"flex-shrink-0 border-t px-3 py-1.5\">\n\t\t\t\t\t\t<div className=\"flex flex-wrap gap-1.5\">\n\t\t\t\t\t\t\t{pendingAttachments.map((att) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={att.id}\n\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-1.5 rounded bg-muted px-2 py-0.5 text-xs\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{att.uploading ? (\n\t\t\t\t\t\t\t\t\t\t<Loader2 className=\"h-3 w-3 animate-spin\" />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<FileIcon className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<span className=\"max-w-[100px] truncate\">{att.fileName}</span>\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => removeAttachment(att.id)}\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<X className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex-shrink-0 border-t p-3\">\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\thandleSendMessage();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"flex gap-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tref={fileInputRef}\n\t\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t\t\t\tonChange={handleFileSelect}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TooltipProvider>\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-9 w-9 flex-shrink-0\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => fileInputRef.current?.click()}\n\t\t\t\t\t\t\t\t\t\taria-label={labels.attachFile ?? \"Attach file\"}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Paperclip className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t\t\t{labels.attachFile ?? \"Attach file\"}\n\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\tvalue={newMessage}\n\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\tsetNewMessage(e.target.value);\n\t\t\t\t\t\t\t\thandleTyping();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\t\tplaceholder={labels.placeholder ?? \"Type a message...\"}\n\t\t\t\t\t\t\tclassName=\"h-9 min-h-[36px] max-h-[100px] flex-1 resize-none rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\trows={1}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tclassName=\"h-9\"\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t!newMessage.trim() &&\n\t\t\t\t\t\t\t\tpendingAttachments.filter((a) => !a.uploading).length === 0\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-label={labels.send ?? \"Send\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Send className=\"h-4 w-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useEffect } from \"react\";\nimport {\n\tMessageSquare,\n\tArrowLeft,\n\tChevronRight,\n\tLoader2,\n\tX,\n} from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { useChatSidebar } from \"../../contexts/chat\";\nimport type { ChatRoomConfig } from \"../../hooks/useChatRoom\";\nimport { ChatRoomView, type ChatRoomViewLabels } from \"./ChatRoomView\";\nimport { Button } from \"../ui/button\";\nimport { ScrollArea } from \"../ui/scroll-area\";\n\nconst roomTypeLabels: Record<string, string> = {\n\tclient_agent: \"Client ↔ Agent\",\n\tdealer_agent: \"Dealer ↔ Agent\",\n};\n\nexport interface ChatSidebarLabels extends ChatRoomViewLabels {\n\ttitle?: string;\n\tnoConversations?: string;\n\trooms?: string;\n\tloading?: string;\n}\n\nexport interface ChatSidebarProps {\n\tcurrentUserId: string;\n\tconfig: ChatRoomConfig;\n\tlabels?: ChatSidebarLabels;\n\troleLabel?: (role: string) => string;\n\troomTypeLabel?: (type: string) => string;\n\t/** Top offset on mobile so the navbar stays visible (e.g. \"3.5rem\", \"4rem\"). */\n\tmobileTopOffset?: string;\n\tclassName?: string;\n}\n\nexport function ChatSidebar({\n\tcurrentUserId,\n\tconfig,\n\tlabels = {},\n\troleLabel,\n\troomTypeLabel,\n\tmobileTopOffset,\n\tclassName,\n}: ChatSidebarProps) {\n\tconst {\n\t\tisOpen,\n\t\tview,\n\t\tconversations,\n\t\tisLoading,\n\t\tactiveCaseId,\n\t\tactiveRoomId,\n\t\tclose,\n\t\tselectRoom,\n\t\tback,\n\t} = useChatSidebar();\n\n\tuseEffect(() => {\n\t\tif (!isOpen || typeof window === \"undefined\") return;\n\t\tconst mq = window.matchMedia(\"(max-width: 767px)\");\n\t\tconst apply = () => {\n\t\t\tif (mq.matches) document.body.style.overflow = \"hidden\";\n\t\t\telse document.body.style.overflow = \"\";\n\t\t};\n\t\tapply();\n\t\tmq.addEventListener(\"change\", apply);\n\t\treturn () => {\n\t\t\tmq.removeEventListener(\"change\", apply);\n\t\t\tdocument.body.style.overflow = \"\";\n\t\t};\n\t}, [isOpen]);\n\n\tif (!isOpen) return null;\n\n\tconst getRoomTypeLabel = (type: string) => {\n\t\tif (roomTypeLabel) return roomTypeLabel(type);\n\t\treturn roomTypeLabels[type] ?? type;\n\t};\n\n\tconst activeConversation = activeCaseId\n\t\t? conversations.find((c) => c.caseId === activeCaseId)\n\t\t: null;\n\n\tconst cssVars = {\n\t\t\"--sidebar-top\": mobileTopOffset ?? \"0px\",\n\t} as React.CSSProperties;\n\n\tconst panel = (\n\t\t<div\n\t\t\tstyle={cssVars}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-col bg-background\",\n\t\t\t\t\"fixed top-[var(--sidebar-top)] right-0 bottom-0 left-0 z-[100] w-full max-w-none border-0 shadow-none\",\n\t\t\t\t\"md:relative md:inset-auto md:z-auto md:h-full md:w-[360px] md:max-w-[360px] md:shrink-0 md:border-l md:shadow-none xl:w-[400px] xl:max-w-[400px]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{view === \"list\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"flex items-center justify-between border-b px-4 py-3\">\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<MessageSquare className=\"h-4 w-4 text-primary\" />\n\t\t\t\t\t\t\t<span className=\"text-sm font-semibold\">\n\t\t\t\t\t\t\t\t{labels.title ?? \"Chat\"}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7\"\n\t\t\t\t\t\t\tonClick={close}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ScrollArea className=\"flex-1\">\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-center py-12\">\n\t\t\t\t\t\t\t\t<Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : conversations.length === 0 ? (\n\t\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-12 text-center px-4\">\n\t\t\t\t\t\t\t\t<MessageSquare className=\"mb-3 h-8 w-8 text-muted-foreground/50\" />\n\t\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{labels.noConversations ?? \"No conversations yet\"}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"py-1\">\n\t\t\t\t\t\t\t\t{conversations.map((conv) => (\n\t\t\t\t\t\t\t\t\t<div key={conv.caseId} className=\"px-2\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"px-2 pt-3 pb-1\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs font-semibold text-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{conv.caseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{conv.caseStatus}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t{conv.clientName && (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{conv.clientName}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{conv.rooms.map((room) => (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tkey={room.id}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectRoom(room.id, conv.caseId)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex w-full items-center justify-between rounded-md px-2 py-2 text-left transition-colors hover:bg-accent\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tactiveRoomId === room.id && \"bg-accent\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2 min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MessageSquare className=\"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-sm truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getRoomTypeLabel(room.type)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{room.lastMessageAt && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatRelativeTime(room.lastMessageAt)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ChevronRight className=\"h-3.5 w-3.5 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ScrollArea>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"flex items-center gap-2 border-b px-3 py-2\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7\"\n\t\t\t\t\t\t\tonClick={back}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowLeft className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{activeConversation && (\n\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t<p className=\"text-sm font-medium truncate\">\n\t\t\t\t\t\t\t\t\t{activeConversation.caseNumber}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t{activeConversation.clientName && (\n\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground truncate\">\n\t\t\t\t\t\t\t\t\t\t{activeConversation.clientName}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7\"\n\t\t\t\t\t\t\tonClick={close}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t\t{activeRoomId && (\n\t\t\t\t\t\t<ChatRoomView\n\t\t\t\t\t\t\troomId={activeRoomId}\n\t\t\t\t\t\t\tcurrentUserId={currentUserId}\n\t\t\t\t\t\t\tconfig={config}\n\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\troleLabel={roleLabel}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tstyle={cssVars}\n\t\t\t\tclassName=\"fixed top-[var(--sidebar-top)] right-0 bottom-0 left-0 z-[90] bg-black/50 md:hidden\"\n\t\t\t\taria-hidden\n\t\t\t\tonClick={close}\n\t\t\t/>\n\t\t\t{panel}\n\t\t</>\n\t);\n}\n\nfunction formatRelativeTime(dateStr: string): string {\n\tconst date = new Date(dateStr);\n\tconst now = new Date();\n\tconst diffMs = now.getTime() - date.getTime();\n\tconst diffMin = Math.floor(diffMs / 60_000);\n\n\tif (diffMin < 1) return \"now\";\n\tif (diffMin < 60) return `${diffMin}m`;\n\tconst diffH = Math.floor(diffMin / 60);\n\tif (diffH < 24) return `${diffH}h`;\n\tconst diffD = Math.floor(diffH / 24);\n\tif (diffD < 7) return `${diffD}d`;\n\treturn date.toLocaleDateString([], { month: \"short\", day: \"numeric\" });\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\n/**\n * Debounces a value — useful for ZIP lookups and autocomplete queries.\n */\nexport function useDebouncedValue<T>(value: T, delayMs: number): T {\n\tconst [debounced, setDebounced] = useState(value);\n\n\tuseEffect(() => {\n\t\tconst id = window.setTimeout(() => setDebounced(value), delayMs);\n\t\treturn () => window.clearTimeout(id);\n\t}, [value, delayMs]);\n\n\treturn debounced;\n}\n\n/**\n * Like {@link useDebouncedValue} but the returned value is `undefined` until\n * the first `delayMs` has elapsed for the current `value`, and resets to\n * `undefined` whenever `value` changes. Use for “only act after user pauses”\n * (e.g. auto-submit / auto-validate) without firing on the initial tick.\n */\nexport function useDebouncedValueStrict<T>(\n\tvalue: T,\n\tdelayMs: number,\n): T | undefined {\n\tconst [debounced, setDebounced] = useState<T | undefined>(undefined);\n\n\tuseEffect(() => {\n\t\tsetDebounced(undefined);\n\t\tconst id = window.setTimeout(() => setDebounced(value), delayMs);\n\t\treturn () => window.clearTimeout(id);\n\t}, [value, delayMs]);\n\n\treturn debounced;\n}\n","\"use client\";\n\nimport { useCallback, useId, useState, type ChangeEvent } from \"react\";\nimport valid from \"card-validator\";\nimport { CreditCard, Loader2 } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./ui/button\";\n\nexport interface CardTokenResult {\n\ttokenId: string;\n\tbrand: string;\n\tlast4: string;\n\texpMonth: number;\n\texpYear: number;\n\tmasked: string;\n\tholderName?: string | null;\n}\n\nexport interface CardInputLabels {\n\tnumber: string;\n\texpiry: string;\n\tcvc: string;\n\tholderName: string;\n\ttokenize: string;\n\ttokenized: string;\n\treplace: string;\n\tinvalidNumber: string;\n\texpiredCard: string;\n\tinvalidCvc: string;\n\ttokenizeFailed: string;\n}\n\nexport interface CardInputProps {\n\ttokenize: (input: {\n\t\tpan: string;\n\t\texpMonth: number;\n\t\texpYear: number;\n\t\tcvc: string;\n\t\tholderName?: string;\n\t}) => Promise<CardTokenResult>;\n\n\tvalue?: CardTokenResult | null;\n\tonChange: (token: CardTokenResult | null) => void;\n\n\tacceptedBrands?: string[];\n\trequireHolderName?: boolean;\n\n\tlabels: CardInputLabels;\n\tdisabled?: boolean;\n\tlargeText?: boolean;\n\tclassName?: string;\n\tonError?: (message: string) => void;\n}\n\nfunction onlyDigits(s: string, max: number): string {\n\treturn s.replace(/\\D/g, \"\").slice(0, max);\n}\n\nfunction formatPan(digits: string): string {\n\tconst cardInfo = valid.number(digits).card;\n\tconst gaps = cardInfo?.gaps ?? [4, 8, 12];\n\tconst parts: string[] = [];\n\tlet idx = 0;\n\tfor (const g of gaps) {\n\t\tparts.push(digits.slice(idx, g));\n\t\tidx = g;\n\t}\n\tparts.push(digits.slice(idx));\n\treturn parts.filter((p) => p.length > 0).join(\" \");\n}\n\nfunction parseExpiry(raw: string): { month: number; year: number } | null {\n\tconst d = onlyDigits(raw, 4);\n\tif (d.length < 4) return null;\n\tconst mm = Number.parseInt(d.slice(0, 2), 10);\n\tconst yy = Number.parseInt(d.slice(2, 4), 10);\n\tif (mm < 1 || mm > 12) return null;\n\tconst year = yy < 100 ? 2000 + yy : yy;\n\tconst exp = valid.expirationDate({ month: String(mm), year: String(year) });\n\tif (!exp.isValid) return null;\n\treturn { month: mm, year };\n}\n\nfunction normalizeBrand(detected: string | undefined): string {\n\tif (!detected) return \"\";\n\tif (detected === \"american-express\") return \"amex\";\n\treturn detected;\n}\n\nfunction brandAllowed(\n\tdetected: string | undefined,\n\taccepted?: string[],\n): boolean {\n\tif (!accepted?.length) return true;\n\tif (!detected) return true;\n\tconst n = normalizeBrand(detected);\n\treturn accepted.map((a) => a.toLowerCase()).includes(n.toLowerCase());\n}\n\nconst inputClassName =\n\t\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\nexport function CardInput({\n\ttokenize,\n\tvalue,\n\tonChange,\n\tacceptedBrands,\n\trequireHolderName = false,\n\tlabels,\n\tdisabled = false,\n\tlargeText = false,\n\tclassName,\n\tonError,\n}: CardInputProps) {\n\tconst baseId = useId();\n\tconst [panDigits, setPanDigits] = useState(\"\");\n\tconst [expiryRaw, setExpiryRaw] = useState(\"\");\n\tconst [cvc, setCvc] = useState(\"\");\n\tconst [holderName, setHolderName] = useState(\"\");\n\tconst [panFocused, setPanFocused] = useState(false);\n\tconst [submitting, setSubmitting] = useState(false);\n\n\tconst inputClass = largeText ? \"text-base py-3\" : \"\";\n\tconst labelClass = largeText ? \"text-base\" : \"text-sm\";\n\n\tconst numberValidation = valid.number(panDigits);\n\tconst rawBrand = numberValidation.card?.type;\n\tconst brand = normalizeBrand(rawBrand) || \"unknown\";\n\tconst maxPanLen = numberValidation.card?.lengths?.slice(-1)[0] ?? 19;\n\tconst minPanLenForType = numberValidation.card?.lengths?.[0];\n\tconst panPastMinimumLength =\n\t\tminPanLenForType !== undefined && panDigits.length >= minPanLenForType;\n\tconst cvcSize = rawBrand === \"american-express\" || brand === \"amex\" ? 4 : 3;\n\n\tconst expiryParsed = parseExpiry(expiryRaw);\n\tconst expiryValid =\n\t\texpiryRaw.replace(/\\D/g, \"\").length >= 4 && expiryParsed !== null\n\t\t\t? valid.expirationDate({\n\t\t\t\t\tmonth: String(expiryParsed.month),\n\t\t\t\t\tyear: String(expiryParsed.year),\n\t\t\t\t}).isValid\n\t\t\t: false;\n\n\tconst cvvValid = cvc.length >= cvcSize && valid.cvv(cvc, cvcSize).isValid;\n\n\tconst panComplete =\n\t\tnumberValidation.isValid && brandAllowed(rawBrand, acceptedBrands);\n\n\tconst holderOk = !requireHolderName || holderName.trim().length > 1;\n\n\tconst canSubmit =\n\t\tpanComplete && expiryValid && cvvValid && holderOk && !disabled && !value;\n\n\tconst handlePanChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst d = onlyDigits(e.target.value, maxPanLen);\n\t\tsetPanDigits(d);\n\t};\n\n\tconst handleExpiryChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tlet d = onlyDigits(e.target.value, 4);\n\t\tif (d.length >= 2) d = `${d.slice(0, 2)}/${d.slice(2)}`;\n\t\tsetExpiryRaw(d);\n\t};\n\n\tconst runTokenize = useCallback(async () => {\n\t\tif (!expiryParsed) return;\n\t\tsetSubmitting(true);\n\t\ttry {\n\t\t\tconst result = await tokenize({\n\t\t\t\tpan: panDigits,\n\t\t\t\texpMonth: expiryParsed.month,\n\t\t\t\texpYear: expiryParsed.year,\n\t\t\t\tcvc,\n\t\t\t\tholderName: holderName.trim() || undefined,\n\t\t\t});\n\t\t\tonChange(result);\n\t\t\tsetPanDigits(\"\");\n\t\t\tsetExpiryRaw(\"\");\n\t\t\tsetCvc(\"\");\n\t\t\tsetHolderName(\"\");\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : labels.tokenizeFailed;\n\t\t\tonError?.(msg);\n\t\t} finally {\n\t\t\tsetSubmitting(false);\n\t\t}\n\t}, [\n\t\tcvc,\n\t\texpiryParsed,\n\t\tholderName,\n\t\tlabels.tokenizeFailed,\n\t\tonChange,\n\t\tonError,\n\t\tpanDigits,\n\t\ttokenize,\n\t]);\n\n\tconst displayPan =\n\t\tpanFocused || panDigits.length <= 4\n\t\t\t? formatPan(panDigits)\n\t\t\t: `•••• •••• •••• ${panDigits.slice(-4)}`;\n\n\tif (value?.tokenId) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\"space-y-3 rounded-lg border bg-muted/30 p-4\", className)}\n\t\t\t>\n\t\t\t\t<div className=\"flex items-center gap-2 text-sm\">\n\t\t\t\t\t<CreditCard className=\"h-4 w-4 text-muted-foreground\" />\n\t\t\t\t\t<span className=\"font-medium\">{value.masked}</span>\n\t\t\t\t\t<span className=\"text-muted-foreground\">\n\t\t\t\t\t\t{String(value.expMonth).padStart(2, \"0\")}/\n\t\t\t\t\t\t{String(value.expYear).slice(-2)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t{value.holderName ? (\n\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">{value.holderName}</p>\n\t\t\t\t) : null}\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonClick={() => onChange(null)}\n\t\t\t\t>\n\t\t\t\t\t{labels.replace}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn(\"space-y-4 rounded-lg border bg-card p-4\", className)}>\n\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t<label\n\t\t\t\t\thtmlFor={`${baseId}-pan`}\n\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t>\n\t\t\t\t\t{labels.number}\n\t\t\t\t</label>\n\t\t\t\t<input\n\t\t\t\t\tid={`${baseId}-pan`}\n\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\tautoComplete=\"cc-number\"\n\t\t\t\t\tvalue={displayPan}\n\t\t\t\t\tonChange={handlePanChange}\n\t\t\t\t\tonFocus={() => setPanFocused(true)}\n\t\t\t\t\tonBlur={() => setPanFocused(false)}\n\t\t\t\t\tplaceholder=\"4242 4242 4242 4242\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t/>\n\t\t\t\t{panDigits.length > 0 &&\n\t\t\t\t\t(!numberValidation.isPotentiallyValid ||\n\t\t\t\t\t\t(panPastMinimumLength && !numberValidation.isValid)) && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.invalidNumber}</p>\n\t\t\t\t\t)}\n\t\t\t\t{panDigits.length > 0 &&\n\t\t\t\t\tnumberValidation.isPotentiallyValid &&\n\t\t\t\t\t!brandAllowed(rawBrand, acceptedBrands) && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.invalidNumber}</p>\n\t\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{requireHolderName && (\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor={`${baseId}-holder`}\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.holderName}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={`${baseId}-holder`}\n\t\t\t\t\t\tautoComplete=\"cc-name\"\n\t\t\t\t\t\tvalue={holderName}\n\t\t\t\t\t\tonChange={(e) => setHolderName(e.target.value)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor={`${baseId}-exp`}\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.expiry}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={`${baseId}-exp`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tautoComplete=\"cc-exp\"\n\t\t\t\t\t\tvalue={expiryRaw}\n\t\t\t\t\t\tonChange={handleExpiryChange}\n\t\t\t\t\t\tplaceholder=\"MM/YY\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t\t{expiryRaw.replace(/\\D/g, \"\").length >= 4 && !expiryValid && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.expiredCard}</p>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor={`${baseId}-cvc`}\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.cvc}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={`${baseId}-cvc`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tautoComplete=\"cc-csc\"\n\t\t\t\t\t\tvalue={cvc}\n\t\t\t\t\t\tonChange={(e) => setCvc(onlyDigits(e.target.value, cvcSize))}\n\t\t\t\t\t\tplaceholder={cvcSize === 4 ? \"0000\" : \"000\"}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\tmaxLength={cvcSize}\n\t\t\t\t\t/>\n\t\t\t\t\t{cvc.length > 0 && !cvvValid && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.invalidCvc}</p>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tdisabled={!canSubmit || submitting}\n\t\t\t\tonClick={() => void runTokenize()}\n\t\t\t\tclassName=\"gap-2\"\n\t\t\t>\n\t\t\t\t{submitting ? (\n\t\t\t\t\t<Loader2 className=\"h-4 w-4 animate-spin\" />\n\t\t\t\t) : (\n\t\t\t\t\t<CreditCard className=\"h-4 w-4\" />\n\t\t\t\t)}\n\t\t\t\t{labels.tokenize}\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { CheckCircle2, Loader2, Search, X } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport {\n\tuseDebouncedValue,\n\tuseDebouncedValueStrict,\n} from \"../hooks/useDebouncedValue\";\nimport { Button } from \"./ui/button\";\n\nexport interface USAddressValue {\n\tstreet: string;\n\tstreet2?: string;\n\tcity: string;\n\tstate: string;\n\tzip: string;\n\tcountry: \"US\";\n}\n\nexport interface USAddressInputLabels {\n\tstreet: string;\n\tstreet2?: string;\n\tcity: string;\n\tstate: string;\n\tzip: string;\n\tsearchPlaceholder: string;\n\t/** Kept for backward compatibility; manual validate button removed */\n\tuspsValidate: string;\n\tuspsValidating: string;\n\tuspsVerified: string;\n\tuspsSuggested: string;\n\tuspsUseSuggestion: string;\n\tuspsKeepMine: string;\n\tuspsApplied: string;\n\tuspsUnavailable: string;\n\tzipLookupFailed: string;\n\tplaceLookupFailed: string;\n\tautocompleteUnavailable: string;\n\t/** @deprecated Toggle removed; kept for consumer compatibility */\n\tautocompleteTitle?: string;\n\t/** @deprecated Toggle removed; kept for consumer compatibility */\n\tautocompleteDescription?: string;\n\tstreetPlaceholder?: string;\n\tstreet2Placeholder?: string;\n\tcityPlaceholder?: string;\n\tstatePlaceholder?: string;\n\tzipPlaceholder?: string;\n\tstreet2OptionalHint?: string;\n\tcountryLabel?: string;\n}\n\nexport interface AddressAutocompleteAdapter {\n\tsearch: (\n\t\tq: string,\n\t\tsessionToken: string,\n\t\tsignal: AbortSignal,\n\t) => Promise<\n\t\tArray<{ placeId: string; mainText: string; secondaryText: string }>\n\t>;\n\tdetails: (placeId: string, signal: AbortSignal) => Promise<USAddressValue>;\n}\n\nexport interface USAddressInputProps {\n\tvalue?: USAddressValue;\n\tonChange: (value: USAddressValue) => void;\n\n\tlookupZip?: (\n\t\tzip: string,\n\t\tsignal: AbortSignal,\n\t) => Promise<{ city: string; state: string }>;\n\n\tvalidateAddress?: (\n\t\taddr: USAddressValue,\n\t\tsignal: AbortSignal,\n\t) => Promise<{\n\t\tstandardized: USAddressValue;\n\t\tdpvMatch?: \"Y\" | \"N\" | \"S\" | \"D\" | \"\";\n\t\tchanged: boolean;\n\t}>;\n\n\tautocomplete?: AddressAutocompleteAdapter;\n\n\tlabels: USAddressInputLabels;\n\tdisabled?: boolean;\n\tlargeText?: boolean;\n\tclassName?: string;\n\tonError?: (message: string) => void;\n}\n\ntype AutocompleteRow = {\n\tplaceId: string;\n\tmainText: string;\n\tsecondaryText: string;\n};\n\nfunction parseInitial(value?: USAddressValue): USAddressValue {\n\tif (!value) {\n\t\treturn {\n\t\t\tstreet: \"\",\n\t\t\tstreet2: \"\",\n\t\t\tcity: \"\",\n\t\t\tstate: \"\",\n\t\t\tzip: \"\",\n\t\t\tcountry: \"US\",\n\t\t};\n\t}\n\treturn {\n\t\tstreet: value.street ?? \"\",\n\t\tstreet2: value.street2 ?? \"\",\n\t\tcity: value.city ?? \"\",\n\t\tstate: value.state ?? \"\",\n\t\tzip: value.zip ?? \"\",\n\t\tcountry: \"US\",\n\t};\n}\n\nfunction addressSig(a: USAddressValue): string {\n\treturn JSON.stringify({\n\t\tstreet: a.street.trim(),\n\t\tstreet2: (a.street2 ?? \"\").trim(),\n\t\tcity: a.city.trim(),\n\t\tstate: a.state.trim().toUpperCase(),\n\t\tzip: a.zip.replace(/\\D/g, \"\").slice(0, 5),\n\t});\n}\n\nfunction isAddressComplete(a: USAddressValue): boolean {\n\tconst zip5 = a.zip.replace(/\\D/g, \"\").slice(0, 5);\n\tconst st = a.state.trim();\n\treturn (\n\t\ta.street.trim().length > 0 &&\n\t\ta.city.trim().length > 0 &&\n\t\t/^[A-Za-z]{2}$/.test(st) &&\n\t\tzip5.length === 5\n\t);\n}\n\nconst inputClassName =\n\t\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\nexport function USAddressInput({\n\tvalue,\n\tonChange,\n\tlookupZip,\n\tvalidateAddress,\n\tautocomplete,\n\tlabels,\n\tdisabled = false,\n\tlargeText = false,\n\tclassName,\n\tonError,\n}: USAddressInputProps) {\n\tconst [searchQuery, setSearchQuery] = useState(\"\");\n\tconst [showSuggestions, setShowSuggestions] = useState(false);\n\tconst [suggestions, setSuggestions] = useState<AutocompleteRow[]>([]);\n\tconst [address, setAddress] = useState<USAddressValue>(() =>\n\t\tparseInitial(value),\n\t);\n\tconst [sessionToken] = useState(() =>\n\t\ttypeof crypto !== \"undefined\" && crypto.randomUUID\n\t\t\t? crypto.randomUUID()\n\t\t\t: `${Date.now()}-${Math.random()}`,\n\t);\n\n\tconst [loadingAutocomplete, setLoadingAutocomplete] = useState(false);\n\tconst [loadingZip, setLoadingZip] = useState(false);\n\tconst [loadingValidate, setLoadingValidate] = useState(false);\n\n\tconst [uspsSuggestion, setUspsSuggestion] = useState<USAddressValue | null>(\n\t\tnull,\n\t);\n\tconst [uspsVerifiedNoChange, setUspsVerifiedNoChange] = useState(false);\n\n\tconst searchRef = useRef<HTMLDivElement>(null);\n\tconst suggestionCache = useRef<Map<string, AutocompleteRow[]>>(new Map());\n\tconst warnedRef = useRef({\n\t\tautocomplete: false,\n\t\tzip: false,\n\t\tvalidate: false,\n\t});\n\tconst lastZipLookup = useRef<string>(\"\");\n\n\tconst addressRef = useRef(address);\n\taddressRef.current = address;\n\n\tconst lastValidatedSigRef = useRef<string>(\"\");\n\n\tconst debouncedSearch = useDebouncedValue(searchQuery, 400);\n\tconst zipDigits = address.zip.replace(/\\D/g, \"\").slice(0, 5);\n\tconst debouncedZip = useDebouncedValue(zipDigits, 400);\n\tconst debouncedAddressForValidate = useDebouncedValueStrict(address, 1200);\n\n\tconst inputClass = largeText ? \"text-base py-3\" : \"\";\n\tconst labelClass = largeText ? \"text-base\" : \"text-sm\";\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (\n\t\t\t\tsearchRef.current &&\n\t\t\t\t!searchRef.current.contains(event.target as Node)\n\t\t\t) {\n\t\t\t\tsetShowSuggestions(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => document.removeEventListener(\"mousedown\", handleClickOutside);\n\t}, []);\n\n\tconst valueSyncKey = value == null ? \"\" : `o:${JSON.stringify(value)}`;\n\n\tuseEffect(() => {\n\t\tsetAddress(parseInitial(value));\n\t}, [valueSyncKey]);\n\n\tconst handleFieldChange = (\n\t\tfield: keyof USAddressValue,\n\t\tfieldValue: string,\n\t) => {\n\t\tsetAddress((prev) => {\n\t\t\tconst next =\n\t\t\t\tfield === \"country\"\n\t\t\t\t\t? { ...prev, country: \"US\" as const }\n\t\t\t\t\t: { ...prev, [field]: fieldValue };\n\t\t\tonChange(next);\n\t\t\treturn next;\n\t\t});\n\t};\n\n\t// Clear USPS UI when the live address diverges from the last validated snapshot\n\tuseEffect(() => {\n\t\tconst sig = addressSig(addressRef.current);\n\t\tif (sig !== lastValidatedSigRef.current) {\n\t\t\tsetUspsVerifiedNoChange(false);\n\t\t\tsetUspsSuggestion(null);\n\t\t}\n\t}, [address]);\n\n\tconst allowAutocomplete = Boolean(autocomplete);\n\tconst allowUspsValidation = Boolean(validateAddress);\n\tconst allowZipLookup = Boolean(lookupZip);\n\n\t// Google Places autocomplete\n\tuseEffect(() => {\n\t\tif (!allowAutocomplete || !autocomplete) return;\n\t\tconst q = debouncedSearch.trim();\n\t\tif (q.length < 3) {\n\t\t\tsetSuggestions([]);\n\t\t\tsetShowSuggestions(false);\n\t\t\tsetLoadingAutocomplete(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst cacheKey = q.toLowerCase();\n\t\tconst cached = suggestionCache.current.get(cacheKey);\n\t\tif (cached) {\n\t\t\tsetSuggestions(cached);\n\t\t\tsetShowSuggestions(true);\n\t\t\tsetLoadingAutocomplete(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctrl = new AbortController();\n\t\tsetLoadingAutocomplete(true);\n\n\t\tautocomplete\n\t\t\t.search(q, sessionToken, ctrl.signal)\n\t\t\t.then((list) => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tsuggestionCache.current.set(cacheKey, list);\n\t\t\t\tsetSuggestions(list);\n\t\t\t\tsetShowSuggestions(list.length > 0);\n\t\t\t})\n\t\t\t.catch((e: unknown) => {\n\t\t\t\tif ((e as Error).name === \"AbortError\") return;\n\t\t\t\tif (!warnedRef.current.autocomplete) {\n\t\t\t\t\tonError?.(labels.autocompleteUnavailable);\n\t\t\t\t\twarnedRef.current.autocomplete = true;\n\t\t\t\t}\n\t\t\t\tsetSuggestions([]);\n\t\t\t\tsetShowSuggestions(false);\n\t\t\t})\n\t\t\t.finally(() => setLoadingAutocomplete(false));\n\n\t\treturn () => ctrl.abort();\n\t}, [\n\t\tdebouncedSearch,\n\t\tallowAutocomplete,\n\t\tautocomplete,\n\t\tsessionToken,\n\t\tlabels.autocompleteUnavailable,\n\t\tonError,\n\t]);\n\n\t// ZIP → city/state\n\tuseEffect(() => {\n\t\tif (!allowZipLookup || !lookupZip) return;\n\t\tif (debouncedZip.length !== 5) return;\n\t\tif (debouncedZip === lastZipLookup.current) return;\n\n\t\tconst ctrl = new AbortController();\n\t\tsetLoadingZip(true);\n\n\t\tlookupZip(debouncedZip, ctrl.signal)\n\t\t\t.then((data) => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tlastZipLookup.current = debouncedZip;\n\t\t\t\tsetAddress((prev) => {\n\t\t\t\t\tconst cityEmpty = !prev.city.trim();\n\t\t\t\t\tconst stateEmpty = !prev.state.trim();\n\t\t\t\t\tconst next = { ...prev };\n\t\t\t\t\tif (cityEmpty && data.city) next.city = data.city;\n\t\t\t\t\tif (stateEmpty && data.state) next.state = data.state;\n\t\t\t\t\tnext.country = \"US\";\n\t\t\t\t\tonChange(next);\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tif (!warnedRef.current.zip) {\n\t\t\t\t\tonError?.(labels.zipLookupFailed);\n\t\t\t\t\twarnedRef.current.zip = true;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => setLoadingZip(false));\n\n\t\treturn () => ctrl.abort();\n\t}, [\n\t\tdebouncedZip,\n\t\tallowZipLookup,\n\t\tlookupZip,\n\t\tonChange,\n\t\tlabels.zipLookupFailed,\n\t\tonError,\n\t]);\n\n\t// Auto USPS validate (debounced; no immediate call on mount)\n\tuseEffect(() => {\n\t\tif (!allowUspsValidation || !validateAddress || disabled) return;\n\t\tif (debouncedAddressForValidate === undefined) return;\n\t\tconst addr = debouncedAddressForValidate;\n\t\tif (!isAddressComplete(addr)) return;\n\n\t\tconst requestSig = addressSig(addr);\n\t\tif (requestSig === lastValidatedSigRef.current) return;\n\n\t\tconst ctrl = new AbortController();\n\t\tconst timeoutId = window.setTimeout(() => ctrl.abort(), 8000);\n\t\tsetLoadingValidate(true);\n\t\tsetUspsVerifiedNoChange(false);\n\t\tsetUspsSuggestion(null);\n\n\t\tvalidateAddress(addr, ctrl.signal)\n\t\t\t.then((result) => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tif (addressSig(addressRef.current) !== requestSig) return;\n\n\t\t\t\tlastValidatedSigRef.current = requestSig;\n\t\t\t\tconst std = result.standardized;\n\t\t\t\tif (result.changed) {\n\t\t\t\t\tsetUspsSuggestion(std);\n\t\t\t\t\tsetUspsVerifiedNoChange(false);\n\t\t\t\t} else {\n\t\t\t\t\tsetUspsSuggestion(null);\n\t\t\t\t\tsetUspsVerifiedNoChange(true);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tif (!warnedRef.current.validate) {\n\t\t\t\t\tonError?.(labels.uspsUnavailable);\n\t\t\t\t\twarnedRef.current.validate = true;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\twindow.clearTimeout(timeoutId);\n\t\t\t\tsetLoadingValidate(false);\n\t\t\t});\n\n\t\treturn () => {\n\t\t\twindow.clearTimeout(timeoutId);\n\t\t\tctrl.abort();\n\t\t};\n\t}, [\n\t\tdebouncedAddressForValidate,\n\t\tallowUspsValidation,\n\t\tvalidateAddress,\n\t\tdisabled,\n\t\tlabels.uspsUnavailable,\n\t\tonError,\n\t]);\n\n\tconst handleSelectSuggestion = async (row: AutocompleteRow) => {\n\t\tif (!autocomplete) return;\n\t\ttry {\n\t\t\tconst next = await autocomplete.details(\n\t\t\t\trow.placeId,\n\t\t\t\tAbortSignal.timeout(8000),\n\t\t\t);\n\t\t\tconst normalized: USAddressValue = {\n\t\t\t\t...next,\n\t\t\t\tcountry: \"US\",\n\t\t\t};\n\t\t\tsetAddress(normalized);\n\t\t\tonChange(normalized);\n\t\t\tsetShowSuggestions(false);\n\t\t\tsetSearchQuery(\"\");\n\t\t\tsetUspsSuggestion(null);\n\t\t\tlastValidatedSigRef.current = \"\";\n\t\t\tsetUspsVerifiedNoChange(false);\n\t\t} catch {\n\t\t\tonError?.(labels.placeLookupFailed);\n\t\t}\n\t};\n\n\tconst applyUspsSuggestion = () => {\n\t\tif (!uspsSuggestion) return;\n\t\tsetAddress(uspsSuggestion);\n\t\tonChange(uspsSuggestion);\n\t\tsetUspsSuggestion(null);\n\t\tlastValidatedSigRef.current = addressSig(uspsSuggestion);\n\t\tsetUspsVerifiedNoChange(true);\n\t};\n\n\tconst dismissUspsSuggestion = () => {\n\t\tsetUspsSuggestion(null);\n\t\tlastValidatedSigRef.current = addressSig(addressRef.current);\n\t\tsetUspsVerifiedNoChange(true);\n\t};\n\n\treturn (\n\t\t<div className={cn(\"space-y-4\", className)}>\n\t\t\t{allowAutocomplete && autocomplete && (\n\t\t\t\t<div ref={searchRef} className=\"relative\">\n\t\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t\t<Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\tonChange={(e) => setSearchQuery(e.target.value)}\n\t\t\t\t\t\t\tplaceholder={labels.searchPlaceholder}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, \"pl-9 pr-9\", inputClass)}\n\t\t\t\t\t\t\taria-label={labels.searchPlaceholder}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{loadingAutocomplete && (\n\t\t\t\t\t\t\t<Loader2 className=\"absolute right-10 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{searchQuery ? (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => setSearchQuery(\"\")}\n\t\t\t\t\t\t\t\tclassName=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t\t{showSuggestions && suggestions.length > 0 && (\n\t\t\t\t\t\t<div className=\"absolute z-10 mt-1 max-h-48 w-full overflow-y-auto rounded-lg border bg-background shadow-lg\">\n\t\t\t\t\t\t\t{suggestions.map((suggestion) => (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={suggestion.placeId}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => void handleSelectSuggestion(suggestion)}\n\t\t\t\t\t\t\t\t\tclassName=\"w-full border-b px-4 py-3 text-left transition-colors last:border-b-0 hover:bg-muted\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<p className=\"text-sm font-medium\">{suggestion.mainText}</p>\n\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{suggestion.secondaryText}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"grid gap-4\">\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor=\"blocks-usaddress-street\"\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.street}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"blocks-usaddress-street\"\n\t\t\t\t\t\tvalue={address.street}\n\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"street\", e.target.value)}\n\t\t\t\t\t\tplaceholder={labels.streetPlaceholder ?? \"\"}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor=\"blocks-usaddress-street2\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`${labelClass} text-muted-foreground`,\n\t\t\t\t\t\t\t\"leading-none\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.street2 ?? \"Address line 2\"}{\" \"}\n\t\t\t\t\t\t{labels.street2OptionalHint ? (\n\t\t\t\t\t\t\t<span className=\"text-xs\">({labels.street2OptionalHint})</span>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"blocks-usaddress-street2\"\n\t\t\t\t\t\tvalue={address.street2 || \"\"}\n\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"street2\", e.target.value)}\n\t\t\t\t\t\tplaceholder={labels.street2Placeholder ?? \"\"}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-city\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.city}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"blocks-usaddress-city\"\n\t\t\t\t\t\t\tvalue={address.city}\n\t\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"city\", e.target.value)}\n\t\t\t\t\t\t\tplaceholder={labels.cityPlaceholder ?? \"\"}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-state\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.state}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"blocks-usaddress-state\"\n\t\t\t\t\t\t\tvalue={address.state}\n\t\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"state\", e.target.value)}\n\t\t\t\t\t\t\tplaceholder={labels.statePlaceholder ?? \"\"}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-zip\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.zip}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tid=\"blocks-usaddress-zip\"\n\t\t\t\t\t\t\t\tvalue={address.zip}\n\t\t\t\t\t\t\t\tonChange={(e) =>\n\t\t\t\t\t\t\t\t\thandleFieldChange(\n\t\t\t\t\t\t\t\t\t\t\"zip\",\n\t\t\t\t\t\t\t\t\t\te.target.value.replace(/\\D/g, \"\").slice(0, 10),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplaceholder={labels.zipPlaceholder ?? \"\"}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{loadingZip && (\n\t\t\t\t\t\t\t\t<Loader2 className=\"absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-country\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.countryLabel ?? \"Country\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"blocks-usaddress-country\"\n\t\t\t\t\t\t\tvalue=\"United States\"\n\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass, \"bg-muted/50\")}\n\t\t\t\t\t\t\taria-readonly=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{allowUspsValidation && (\n\t\t\t\t<>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"flex min-h-7 items-center gap-2 text-xs text-muted-foreground\"\n\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{loadingValidate ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Loader2 className=\"h-3.5 w-3.5 shrink-0 animate-spin\" />\n\t\t\t\t\t\t\t\t<span>{labels.uspsValidating}</span>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : uspsVerifiedNoChange && !uspsSuggestion ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<CheckCircle2 className=\"h-3.5 w-3.5 shrink-0 text-emerald-600 dark:text-emerald-400\" />\n\t\t\t\t\t\t\t\t<span>{labels.uspsVerified}</span>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"select-none opacity-0\" aria-hidden>\n\t\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{uspsSuggestion ? (\n\t\t\t\t\t\t<div className=\"space-y-2 rounded-lg border border-amber-200 bg-amber-50 p-3 dark:border-amber-900 dark:bg-amber-950/30\">\n\t\t\t\t\t\t\t<p className=\"text-sm font-medium text-amber-900 dark:text-amber-100\">\n\t\t\t\t\t\t\t\t{labels.uspsSuggested}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t{[\n\t\t\t\t\t\t\t\t\tuspsSuggestion.street,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.street2,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.city,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.state,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.zip,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t.join(\", \")}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t\t<Button type=\"button\" size=\"sm\" onClick={applyUspsSuggestion}>\n\t\t\t\t\t\t\t\t\t{labels.uspsUseSuggestion}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\tonClick={dismissUspsSuggestion}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{labels.uspsKeepMine}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","// AUTO-GENERATED from repo-root mx.svg (Simplemaps Mexico map) via\n// blocks/scripts/extract-mx-states.mjs. Do not hand-edit; regenerate instead.\n\nexport type MexicoStateId =\n\t| \"MXAGU\"\n\t| \"MXBCN\"\n\t| \"MXBCS\"\n\t| \"MXCAM\"\n\t| \"MXCHP\"\n\t| \"MXCHH\"\n\t| \"MXCMX\"\n\t| \"MXCOA\"\n\t| \"MXCOL\"\n\t| \"MXDUR\"\n\t| \"MXGUA\"\n\t| \"MXGRO\"\n\t| \"MXHID\"\n\t| \"MXJAL\"\n\t| \"MXMEX\"\n\t| \"MXMIC\"\n\t| \"MXMOR\"\n\t| \"MXNAY\"\n\t| \"MXNLE\"\n\t| \"MXOAX\"\n\t| \"MXPUE\"\n\t| \"MXQUE\"\n\t| \"MXROO\"\n\t| \"MXSLP\"\n\t| \"MXSIN\"\n\t| \"MXSON\"\n\t| \"MXTAB\"\n\t| \"MXTAM\"\n\t| \"MXTLA\"\n\t| \"MXVER\"\n\t| \"MXYUC\"\n\t| \"MXZAC\";\n\nexport interface MexicoState {\n\tid: MexicoStateId;\n\tname: string;\n}\n\nexport const MEXICO_STATES: MexicoState[] = [\n\t{ id: \"MXAGU\", name: \"Aguascalientes\" },\n\t{ id: \"MXBCN\", name: \"Baja California\" },\n\t{ id: \"MXBCS\", name: \"Baja California Sur\" },\n\t{ id: \"MXCAM\", name: \"Campeche\" },\n\t{ id: \"MXCHP\", name: \"Chiapas\" },\n\t{ id: \"MXCHH\", name: \"Chihuahua\" },\n\t{ id: \"MXCMX\", name: \"Ciudad de México\" },\n\t{ id: \"MXCOA\", name: \"Coahuila\" },\n\t{ id: \"MXCOL\", name: \"Colima\" },\n\t{ id: \"MXDUR\", name: \"Durango\" },\n\t{ id: \"MXGUA\", name: \"Guanajuato\" },\n\t{ id: \"MXGRO\", name: \"Guerrero\" },\n\t{ id: \"MXHID\", name: \"Hidalgo\" },\n\t{ id: \"MXJAL\", name: \"Jalisco\" },\n\t{ id: \"MXMEX\", name: \"México\" },\n\t{ id: \"MXMIC\", name: \"Michoacán\" },\n\t{ id: \"MXMOR\", name: \"Morelos\" },\n\t{ id: \"MXNAY\", name: \"Nayarit\" },\n\t{ id: \"MXNLE\", name: \"Nuevo León\" },\n\t{ id: \"MXOAX\", name: \"Oaxaca\" },\n\t{ id: \"MXPUE\", name: \"Puebla\" },\n\t{ id: \"MXQUE\", name: \"Querétaro\" },\n\t{ id: \"MXROO\", name: \"Quintana Roo\" },\n\t{ id: \"MXSLP\", name: \"San Luis Potosí\" },\n\t{ id: \"MXSIN\", name: \"Sinaloa\" },\n\t{ id: \"MXSON\", name: \"Sonora\" },\n\t{ id: \"MXTAB\", name: \"Tabasco\" },\n\t{ id: \"MXTAM\", name: \"Tamaulipas\" },\n\t{ id: \"MXTLA\", name: \"Tlaxcala\" },\n\t{ id: \"MXVER\", name: \"Veracruz\" },\n\t{ id: \"MXYUC\", name: \"Yucatán\" },\n\t{ id: \"MXZAC\", name: \"Zacatecas\" },\n];\n","// AUTO-GENERATED from repo-root mx.svg (Simplemaps Mexico map) via\n// blocks/scripts/extract-mx-states.mjs. Do not hand-edit; regenerate instead.\n\nimport type { MexicoStateId } from \"./mexicoStates\";\n\nexport const MEXICO_STATE_PATHS: Record<MexicoStateId, string> = {\n\tMXAGU:\n\t\t\"M519.8 375.1l-0.1 0.1-0.1 0.1 0 0.1-0.1 0.1-0.5 0.9-0.5 0.6-0.7 0.5-0.9 0.3-0.6 0.3-0.4 0.5-0.5 0.5-0.8 0.3-0.7 0.4-0.2 0.7-0.1 0.8-0.2 0.9-0.3 0.6-0.6 0.3-0.6 0.2-0.7 0.3-0.7 0.5-0.5 0.6-0.6 0.5-0.7 0.4-0.8 0.2-0.8 0.1-0.8-0.1-0.8-0.1-0.9-0.2-0.9-0.1-0.9-0.2-0.9-0.1-1.3-0.4-1.1-0.6-1.1-0.8-1.1-0.6-0.9-0.2-1 0.2-1 0.4-0.9 0.3-1-0.6-0.8-0.6-0.7-0.7-0.2-1.2 0-0.7 0-0.6 0.2-0.6 0.2-0.7 0.3-0.5 0.4-0.6 0.4-0.5 0.4-0.6 0.4-0.7 0.4-0.8 0.5-0.8 0.5-0.6 0.6-0.6 0.6-0.7 0.5-0.7 0.4-0.7 0.2-0.8-0.4-0.6-0.4-0.4-0.1-0.5 0.7-1 0.9-0.4 1.1-0.1 1.1 0 0.4 0.1 0.6 0 0.5-0.1 0.4-0.2 0.2-0.3 0.1-0.4 0.1-0.4 0.3-0.3 0.1-0.1 0.1 0 0.1 0 0.3 0 0.3 0 0.3 0.1 0.2-0.1 0.4-0.3 0.2-0.3 0.2-0.3 0.4-0.2 0.5 0.1 0.5-0.4 0.3-0.6 0.3-0.6 0.5-0.6 0.5 0.3 0.3 0.7 0.3 0.7 0.3 0.6 0.4 0.7 0.5 0.5 0.6-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0 0.3 0.3 0.2 0.5 0.1 0.4 0.4 0.4 0.5-0.1 0.3 0.3 0.3 0.3 0.4 0.4 0.6 0.2 0.6 0.1 0.6 0 0.5 0.2 0.3 0.8 0 1.1-0.1 1.1 0 1 0.3 0.7 0.7 0.5 0.8 0.3 0.7 0.4 0.5 0.5 0.4 0.5 0.4 0.6 0.4 0.5z\",\n\tMXBCN:\n\t\t\"M147.3 35.9l-0.3 0.3-0.6 0.1-1.5-0.1-0.6 0.3-0.6 0.6-0.4 0.9-0.2 0.7-0.1 0.6 0 0.6 0 0.6-0.3 0.8-0.5 0.6-0.6 0.4-0.5 0.7-0.1 0.5 0.2 0.2 0.8 1 0.6 1 0.5 1 0.3 1.4-0.1 0.7-0.3 0.5-0.3 0.5 0.1 0.5 0.1 0.2 0.2 0.1 0.3 0.2 0.2 0.2 0.2 0.4 0.2 0.4 0.1 0.4 0 0.5-0.1 0.9 0 0.8 0 0.8 0.1 0.7-0.7-0.3-0.3-0.1-0.4 0-0.3-0.1-0.4-0.3-0.2-0.1-0.1-0.2 0-0.4-0.1-0.4-0.3-0.2-0.1 0.2 0 0.4 0.1 0.4 0.4 0.8 0.1 0.1 0.3 0.2 0.2 0.1 0.8 0.2 0.5 0.2 0.4 0.4 0.4 0.3 0.2 0.5 0.7 0.1 0.6 0.6 0.4 0.6 0.2 0.5 0.4 0.2 0.2 0.4 0.3 2.3 0.3 0.7 0.4 0.7 0.4 0.8-0.3 0.6-1 1.2-0.5 1.2-0.3 1.3 0 4.7-0.7 2 0.1 1.9-0.3 3-0.1 0.7 0.1 1.4 0.6 1 0.7 0.8 0.7 0.5 0 0.3-0.5 0.5 0 0.7 0.3 0.6 0.5 0.4 1.9 0.9 0.5 0.3 0.1 0.2 0 0.2 0.2 0.4 0 1.1 0 0.3 0.1 0.6-0.1 0.4 0.2 0.3 0.2 0.5-0.1 1.6 0.1 0.4 0.2 0.6-0.1 0.2-0.4 0.9 0.3 0.8 0.1 0.5-0.2 1.1 0.4 1.1 0.7 1 0.3 0.7 0.1 0.4 0 0.3 0 0.3 0.2 0.4 0.3 0.6 0 0.5-0.2 0.5 0 0.8 0.2 0.5-0.1 1-0.2 0.7 0.1 0.3-0.2 1.7-0.2 0.6-0.1 0.3 0.1 0.3 0.3 0.5-0.1 0.4-0.2 0.8-0.1 0.5-0.3 0.4 0.1 0.6 0.2 0.2 0.3 0.7 0.4 0.3 0 0.4 0.1 0.5 0.6 0.3 0.2 0.7 0.5 0.5 0 0.7 0.6 1.2 0.4 0.8 0.4 0.8 1.5 0.7 0.2 0.9 0.4 0.3 0.9 0.1 0.3 0.5 0.2 0.4-0.1 0.8 0.3 0.8 0.2 0.2-0.2 0-0.2 0.2 0 0.2 0.3 0.1 0.1 0.2 0 0.3 0.1 0.4 0.3 0.3 0.3 0.1 0.2 0 0.3 0.1 0.2 0.3 0 0.3 0.2 0.2 0.5 0.1 0.5 0 0.2 0 0.3-0.2 0-0.2 0.1-0.1-0.2 0-0.1-0.2 0.1-0.1 0.2 0 0-0.1 0.1-0.1 0.1 0 0.1 0 0.1 0 0.1 0.1 0.1 0.1 0.1 0 0.1 0.2 0.1-0.1 0.3 0 0.2 0.1 0.2 0.3 0.2 0 0 0.1 0.4 0.1 0.1 0.2 0.1 0.4 0.1 0.1 0.2 0.1 0.1 0.2 0.1 0 0.1 0.2 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0.2 0 0.1 0.2-0.1 0.1 0 0.2 0.1 0 0.2 0.3 0.2 0 0.2 0.1 0 0.3 0.3 0.1 0.2 0.1 0.1 0.4 0.2 0.2 0.2 0.2 0 0.6 0.4 0.1 0.4 0 0.2 0.2 0.2 0.1 0.3 0.4 0.1 0.1 0 0.1 0.2 0.1 0.1 0 0.1 0.2 0.1 0.3 0 0.3 0 0.4 0.3 0.2 0.4 0.3 0.3 0.2 0.2 0.1 0.1 0.3 0.5 0.4 0.1 0.2 0.3 0.3 0.4 0.4 0.4 0.5 0.3 0.4 0.5 0.5 0.1 0.3 0.1 0.2 0.2 0 0.5 0.2 0.2 0.3 0 0.3 0.2 0.2 0.2 0.3 0.1 0.4 0.2 2.6 3 1 0.8 0.3 0.3 0.1 0.6 0.2 0.2 0.1 0.2-0.5 0.4-0.2 0.4-0.3 0.3 0.1 0.4 0.2 0.2 0.3 0.1-0.1 0.5 0.2 0.3 0.1 0 0.1 0.1 0.1 0.3 0.3 0 0.1 0 0 0.3 0.2 0.4 0.3 0.4 0.3 0.1 0.3 0.3 0.2 0.8 0.5 0.9 0.3 0.4-0.1 0.4-0.3 0.1-0.2 0.3-0.1 0.1-0.1 0.4 0 0.4 0.4 0.2 0.1 0.6 0 0.6-0.3 0.1 0 0.2 0.3 0.5 0.2 0.4 0.1 0.5 0.3 0.2 0 0.3 0.6 0.1 0.7-0.2 0.1-0.1-0.1-0.2 0.2-0.4-0.3-0.2-0.1-0.3 0.2-0.1-0.1-0.2 0.1-0.2 0.2-0.1 0.3 0.1 0.4 0.1 0.2-0.3 0.2-0.3 0.2 0.4 0 0.5 0.4 0.4 0.2-0.2 0-0.2 0.5-0.2 0.2 0.1-0.1 0.2-0.1 0.1-0.1 0.5 0.7 0.2 0 0.1-0.3 0.1 0 0.2 0.2 0.3 0.1 0.2 0.3 0.2-0.2 0.1-0.1 0.4 0 0.4-0.1 0.3 0.2 0.4 0.4 0.2-0.1 0.6 0.6 0 0.7-0.1 0.2-0.2 0.3-0.3 0.2-0.3 0.5-0.2 0.2-0.2 0.8 0.1 0.4 0.4 0.1 0.2 0.1 0.5 0.3 0.1 0.1 0.2-0.1 0.4 0.3 0.3 0 0.4-0.1 0.5 0.4 0.9 0.1 0.1 0.2 0.7 0.4 1.1 0.7 0.6 0.1 0.4-0.1 0.8 0.3 0.8 0.1 0.5 0.2 0.6-0.1 0.6 0.3 0.7 0.6 0.4 0.1 0.2 0.5 0.3 0.6 0.1 0.1 0.3 1 0.3 0.9 0 1.2-0.3 0.8-0.3 0.5 0.4-0.1 0.2 0.3 0.2 0 0.2-0.1 0.2 0 0.1 0.4 0.1 0.1-0.1 0.2-0.2 0.3 0 0 0.4 0 0.2-0.2 0.2-0.2 0.4 0.2 0.2 0.1 0.5-0.1 0.5-0.5 1.2-0.1 0.8 0.1 0.2-0.1 0.6 0.3 0.3 0.3 0.4 0.4 0.3 0 0.3 1 1 0.1 0.3 0.3 0 0.1 0.2-0.2 0.2-0.1 0.2-0.1 0.5-0.1 0.2-0.1 0.4-0.1 1 0.3 1.1 0.1 0.1 0.2 0.1 0 0.4-0.2 0.3-0.2 0.4 0 0.4 0.1 0.5 0.4 0.5 0.5 0 0.2 0.1-5 0-5.1 0-5.2 0-5.2 0-5.1-0.1-5.2 0-5.2 0.1-1.3 0 0.2-0.3 0.4-0.6 0.1-0.3-0.3-0.1-0.3-0.1-0.3-0.4-0.5-0.1-0.4 0.1 0-0.5 0-0.9-0.2-0.4-0.2-0.3 0.1-0.2 0.1-0.3 0.5-0.7 0.3-0.6 0.3-0.6 0.3-0.4-0.1-0.2-0.1-0.4-0.1-0.5-0.3-0.2-0.3 0-0.3 0.2-0.3-0.1-0.2-0.3-0.2-0.1 0.2-0.5 0.2-0.5 0.3-0.7 0.5-1.2 0.6-2 0.4-0.9 0.1-0.8-0.2-0.6-0.4-0.1-0.2-0.3 0.1-0.5 0-0.5-0.3-0.2-0.1-0.3-0.1-0.3-0.3-0.3-0.4-0.3-0.5-0.1-0.6 0.1-0.3-0.2 0-0.5 0.1-0.6 0-0.8-0.3-0.7-0.3-0.4-0.2-0.1-0.7 0-0.8 0.1-0.3 0.2-0.7-0.2-0.1-0.5 0.1 0 0-0.3-0.1-0.4-0.7-0.3-0.4-0.7-1-0.2 0-0.5 0-0.5-0.4-0.5 0-0.6-0.3-0.6-0.6 0.3-0.4-1.1 0.1-0.7-0.5-0.6-0.5 0-0.1-0.5-0.5-0.5-0.5-0.7-0.7-0.1-0.4 0.1-0.2 0.2-0.2 0-0.4-0.3-0.2-0.6-0.2-0.6-0.1-0.3-0.4 0-0.5 0.5-0.4-1.1 0.1-1.1-0.2-0.5-0.3-0.5-0.1-0.6-0.3-0.5-0.8-0.3-0.8-0.3-0.5 0.6-0.5-0.7-0.1-0.8-0.2-0.4-0.2-0.7-0.1-0.4-0.2-0.2-1-0.1-1.2-1.2-0.7-0.9-0.8-0.9-1.3-1.5-1.3-1.5-3.8-1.4-2.4-0.3-1.3-2-1.5-1.3-2.5-0.9-1.5-1.3-0.8-0.8-0.7-0.2-0.7 0.5-0.5-0.5-0.5-0.3-0.4-0.6-0.7-0.5-0.6-0.8-0.8-0.1-2.2-2 0.1-0.7 0.2-0.8 0.1-1-0.2-0.7-0.1-0.5-0.1-1-0.6-0.7-0.3-0.5-0.4-0.4-0.5-0.2-1.3-0.1-0.1-0.4 0.6-2.3 0.2-1.8-0.2-1.1-0.1-0.2-0.3-0.4 0-0.3 0-0.4 0.2-1.1-0.1-1.4-0.2-1.5-0.5-1.1-0.4-1-0.8-0.7-0.9-0.6-1-0.5-1.2 0 0.8-0.7 0.3-0.4 0.1-0.5-0.2-0.5-0.4-0.5-0.6-0.4-0.4-0.2 0.2 0.5 0.3 0.4 0.2 0.4 0.1 0.5-0.3 0.3-0.4 0.1-0.1-0.3-0.4-0.3-0.2 0.2-0.2 0.3 0 0.3 0.3 0.1 0.3 0.4 0.1 0.7 0.3 1-0.7 0-0.2-1.1-0.5-1.6-0.6-1.3 0.6-4.9-0.2-3.5-0.5-1.7-0.1-0.7-0.3-0.3-1.1-0.2-1.3-1.3-0.7-0.1-0.7-1-0.5-0.8-0.2-0.4-0.7-1-0.5-0.3-1.2 0.4-0.8-0.1-0.1-1.1 0.4-1.3 0.2-2.1 0.3-2-0.9-2.3-3.3-4-1.2-2.3-0.3-0.5-0.2-0.1-0.5-0.6-0.2-0.2-0.4-0.2-0.6-0.5-0.4-0.1-0.3-0.2-0.1-0.2 0-0.3-0.2-0.3-1.1-0.9-0.2-0.3-0.6-0.5-0.2-0.5 0.1-0.4-0.1 0 0.4-0.1 0.7 0.1-0.6-0.8 0.1-0.5 0.1-0.5 0.3-0.9-0.3-0.7-0.3-0.6-0.2-0.2-0.5-0.2-0.7-0.1-0.7-0.9-0.3-0.5 1.2 0.3 0.9 0.6 0.5 0.1 0.5-0.4 0.4-0.6 0.3-0.6 0.2-1 0-0.7 0-0.7-0.2-0.5-1.1-0.2-0.6-0.2-0.5-0.7-0.7-0.4-0.5-0.1-0.5-0.2 0-0.8-0.1-1.1-0.3-0.4-1 0-1.1-0.3-0.7-0.9-0.3-0.7-0.1-1.2-0.2-2.1-0.5-1.6-0.5-1.4-0.3-0.5-0.5-0.4-0.5-0.3-1.2-0.3-0.5-0.4-1.4-3.2-0.4-1.2-0.5-1.1-0.4-0.6 0-0.6-0.1-0.6 0-0.8 0-0.3 0-0.3 2.3-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.1 2.1-0.2 2.2-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.1 2.1-0.2 2.2-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.1 2.2-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 1.2-0.1 0 0.1-0.2 0.8-0.3 0.6-0.3 0.6-0.2 0.2-0.7 0.6-0.1 0.3-0.5 0.9 0.3 0.7-0.1 0.7-0.4 1.4-0.3 0.4z m-10.7 138.5l0.3 0.8 0.3 0.2-0.1 0.4 0.2 0.4 0.2 0.8-0.3 0.9 0 0.7 0.4 0.6 0.1 0.7-0.1 0.7 0.1 0.3-0.2 0.4-0.4 0.1 0 0.3-0.3 0.3 0.1 0.4-0.1 0.3 0.1 0.5-0.1 0.5 0.2 0.5-0.1 0.2 0 0.2-0.2-0.1-0.1-0.1-0.4-0.1-0.3 0.2-0.3 0.1-0.2-0.3-0.3 0.1-0.2-0.2-0.3-1-0.5-0.6-0.7-0.2-0.5 0.3-0.4 0-0.3 0.5-0.3-0.4 0.2-1.1 0.5-0.3 1.7-2.1 1-1.4-0.5-1-0.2-1.1 0.2-1 0.2-1 0.4-0.4 0.6-0.2 0.7 0.5-0.1 0.7z m66-11l1 0.2 1.6 1.1 0.4 0.5 0.2 0.2 0.1 0.2 0.5 0.2 0.1 0.3 0.2 0.1-0.3 0.3-0.3 0.2-0.2-0.2-0.1-0.1-0.2 0-0.2-0.8-0.4-0.3-0.5-0.2-0.4-0.5-0.7-0.1 0-0.2-0.1-0.2-0.2-0.2-0.2-0.3-0.3-0.2z m8.1-1.6l0.3-0.1 0.2-0.1 0.7 0.1 0.4-0.2 0.3 0.2 0 0.4 0.1 0.2-0.1 0.3 0 0.5-0.2 0.5-0.5 0.1-0.7-0.2-0.3 0.2 0.1-0.3-0.3-0.9 0-0.7z m-15.1-11.1l0.4 0.1 0.2 0.2 0.4 0.1-0.4 0.9 0.1 0.4 0 0.9-0.3 0-0.3-0.5-0.3-0.1-0.4-0.5-0.9-0.3-0.2-0.6-0.5-0.3-0.4-0.1-0.4-0.4-0.2-0.4-0.2-0.2-0.2-0.5-0.3-0.4-0.5-0.6-0.3-0.3-0.3-0.1-0.2-0.3-0.4-0.2-0.6-0.3-0.2-0.5-0.7-0.4-0.6-0.4-0.7-1.1 0.1-0.3-0.2-0.4-0.4-0.5-0.5 0.1-0.5 0-0.4-0.3-0.2-0.4 0-0.6-0.2-0.3-0.4-0.3-0.2-0.5-0.2-0.1-0.1-0.4-0.5-0.4 0-0.3-0.3-0.4-0.5-0.3-0.2-0.8 0.2-0.8 0.4-0.7 0.3-1-0.2-0.5 0-0.5 0.3-0.2 0 0.2 0.3 0.2 0.4-0.2 0.3-0.2 0-0.2 0.4 0 0 0.4 0.3 0.1 0.7 0.1 0.4 0.4 0.9 0.9 0.3 0.9 0.7 0.2 0.1 0.3 0.2 0.3 0 0.2 0.4 0.5 0.3 0.6-0.1 0.3 0.4 0.3-0.3 0.3-0.3 0.4-0.1 0.6 0.1 0.3 0 0.8 0.8 0.5 1.1 0.2 0.2 0.3 0.4 0 0.2-0.3 0.4 0 0.2 0.1 0.5-0.1 0.5 0 0.5 0.1 0.6-0.1 0.4 0.4-0.3 0.6 0.1 0.7 0.2 0.4-0.1 0.6 0 0.4 0.2 0.2-0.1 0.4-0.1 0.7 0 0.9 0.1 0.3 0.3 0.6 0.1 0.3 0 0.3 0.2 0.5 0.3 0.1z m-27.6 34.8l-0.2-0.5-0.3 0.1-0.2-0.1 0.1-0.3 0.4-0.2 0.4 0.2 0.4 0.5 0.2 0.3-0.8 0z m-3.1 0l0.6-0.7 0.9-1.3 0.6-0.7 0.4-0.1 0.2 0.8-0.1 0.6-0.5 0.4-0.3 0.3-0.1 0.3-0.1 0.2 0.1 0.2-1.7 0z m-116.1-35.6l0.7 0.9 0.2 1.5-0.2 0.7 0.2 1.2-0.1 1.4-0.8 1-0.5 0-0.4 0.2-0.2 0 0.1 0.3-0.3-0.2 0.1-0.4 0.3-0.2-0.3-0.7-0.1-0.5 0.1-0.6-0.2-0.6-0.4-0.5 0.3-0.5-0.3-0.9-0.2-0.5-0.4-0.4-0.6-0.5 0-0.5-0.2-0.5-0.1-0.5 0.1-0.6 0.2-0.6 0.6-0.4 0.8-0.3 0.3-0.5 0.7-0.1 0.5 0.3-0.5 0.5-0.3 0.4-0.1 0.5 0.2 0.7 0.4 0.6 0.4 0.3z m76.3 25.3l0.2 0.2 0.2-0.1 0.4 0 0.1 0.2-0.4 0-0.1 0.2-0.3 0.1-0.3-0.2-0.1-0.2 0.1-0.2 0.2 0z m59.6-25.5l0.2 0 0.2 0.1 0 0.1-0.1 0.2 0 0.1 0.1 0.1 0 0.2 0 0.3 0.1 0.2 0 0.2 0.1 0 0 0.2 0.2 0.1 0 0.1-0.3 0-0.2-0.1 0.1-0.1-0.1-0.2-0.2-0.1 0.1-0.2 0.1-0.1-0.2-0.1 0-0.2 0-0.2-0.2-0.1 0-0.2-0.2-0.2 0.3-0.1z m-25.8-29.4l0.4 0 0.1 0.6 0.1 0.3-0.3 0-0.4-0.2 0.1-0.4 0-0.3z m-48.7-17l0.1 0.1 0.2 0.2 0 0.2-0.3 0-0.3-0.1 0-0.2 0.3-0.2z m-32.7-64.7l0.1 0 0.1 0.2 0.1 0.3 0.1 0.3 0 0.3-0.1 0-0.1-0.4-0.1-0.3-0.1-0.1 0-0.3z\",\n\tMXBCS:\n\t\t\"M290.4 306.2l0.4 0.5 0.4 0.9 0 0.3 0.3 0.5-0.1 0.6-0.4-0.1-0.5-0.1-0.9-0.1-0.3-0.2 0.1-0.2-0.4-0.6-0.4-0.7-0.4-1.1-0.3-1 0.1-0.3 0.1-0.3-0.6-1.2 0.1-1.1 0-0.5 0.2 0 0.2 0.4 0.1 0.4 0.3 0.4 0.2 0.3 0.2 0.3 0.3 0.7 0.3 0.7 0.4 0.4 0.4 0.9 0.2 0.2z m-49.5-4.8l0.6 0.2 0.9 0.2 1.2 0.9 0.1 0.2-2-0.9-0.8-0.1-1.1-0.1-1.1 0.3-0.8 0.1-0.2-0.2 0.2-0.3 0.2-0.2 0.3 0.1 0.5 0 0.9-0.2 0.5 0.1 0.6-0.1z m-5.5-2.2l0.8 1.6 0.5 0.5 0.3 0 0.1 0.2-0.2 0.5 0.2 0.3-0.2 0.6-0.3 0.4 0.1 0.5-0.9-1.2-0.6-0.5-1.4-1.1-1.1-0.9-0.7-0.6-1.1-0.6-0.2-0.2-0.3-0.2-0.4-0.4-1-0.5-0.8-0.3-0.1-0.2 0.5-0.4 0.5 0.3 0.3 0 1.6-0.1 0.7 0.1 0.5-0.1 0.4 0.3 0.4-0.1-0.1 0.4 0.2 0.5 0.3 0.2 0.1 0.4 0.6 0.1 0.6 0 0.7 0.5z m41-2.2l0.2 0.4 0.3 0 0.1 0.5 0.2 0.4 0.2 0.2-0.1 0.4-0.4 0-0.2 0.3 0.2 0.5-0.3 0.2-0.2 0.2-0.1 0.6-0.6-0.1 0-0.3-0.1-0.2 0.1-0.3-0.2-0.2-0.2-0.1-0.2 0.3-0.1-0.3-0.1-0.3 0.5-0.2 0-0.1-0.2-0.1-0.1-0.1-0.2-0.2-0.2-0.1-0.2-0.3-0.1-0.5 0.2-0.2-0.3-0.2 0-0.3 0.4-0.1 0.2-0.2-0.3 0-0.3-0.2 0.1-0.3-0.3 0.1-0.1-0.3 0.1-0.2-0.2-0.1-0.1-0.3 0.4-0.3 0.1-0.3 0.3 0.1 0.2 0.4 0.1 0.2 0.4 0.3 0 0.4-0.1 0.4 0.6 0.1 0.6 0.4z m-11.1-18.3l0.1-0.2 0-0.1 0.1 0.1 0.2 0.3 0.3 0.8 0.5 0.5 0.8 0.1 0.8 0.2 0.6 0.2 0.1 0.3 0.1 0.1 0.3 0.2 0 0.3 0.2 0.3 0.1 0.6-0.2 0.7 0.3 0.7 0.2 0.3 0.2 0.4 0.4 0.7 0.2 0.3-0.2 0.1-0.6 0.2-0.3-0.1-0.2 0.1-0.2 0.3-0.2-0.1 0.2-0.2 0.1-0.2 0-0.3-0.3-0.2-0.3-0.2-0.4-0.2 0-0.2-0.3-0.1-0.3 0-0.3 0 0-0.2 0.1-0.2-0.2-0.4-0.3-0.2-0.2-0.5 0-0.2-0.1-0.3-0.2-0.3-0.1-0.3 0-0.4-0.2-0.3-0.4 0-0.2-0.3-0.3 0-0.1-0.3 0-0.5 0.1-0.2 0-0.4 0.1-0.7z m-40 15.1l0.2 0.4 0.5 0.7 0.2 0 0 0.3 0.2 0.2 0.2 0.4 0 0.5-0.3-0.1-0.6-0.3-0.4-0.2 0.1-0.2-0.1-0.6-0.3-0.5-0.4-0.4-0.3-0.2-0.2 0-0.4-0.8-0.4-0.1-0.1-0.2 0.2-0.2 0.1-0.4 0.2 0 0.2 0.1 0.2-0.1 0.2-0.3 0.1-0.5-0.1-0.5-0.2-0.6-0.3-0.3-0.3-0.4-0.3-0.3-0.4-0.3-0.5-0.3-0.2-0.1-0.3-0.1-0.3 0-0.3 0-0.1 0.1-0.2 0.1-0.1 0.2 0 0.2 0.1 0.6-0.1 0.1-0.2-0.3-0.1-0.5-1-0.6 0.1-0.3 0-0.2 0.1-0.1 0.3 0 0.4-0.9 0.5-1.4 1.5-4.2 0.4-1.5 0.8-2.9 0.5-2.3 0.1-0.9 0.1-0.3 0.4 0 0.1 1.4-0.2 0.6-0.4 1.3-0.4 0.7-0.4 2.1-0.3 0.9 0.3 0.5 0.1 0.3-0.1 0.4 0.2 0.3 0 0.3 0 0.4-0.2 0.2-0.3-0.2-0.2 0.5 0 0.2 0 1-0.2 0.2 0.1 0.8 0.2 0.3 0.2 0.3-0.2 0.2-0.3-0.1-0.3 0.1-0.1 0.1 0 0.2-0.2 0.3 0.1 0.2 0.1 0.5 0.1 0.2 0.3 0.2 0.2 0.2 0.1 0.2 0.2 0.1 0.2 0-0.1 0.1-0.1 0.1 0.3 0.4 0.1 0.5 0.7 0.7 0.2 0.3 0 0.4 0 0.2 0.1 0.1 0.1 0 0.3 0.6-0.3 0.5-0.2 0.2-0.2 0.2-0.1 0.3 0.1 0.2 0.1 0.3 0.9 0.5z m38.4-30.9l-0.6-0.4-0.5-1.2 0-1 0.4-0.7 0.2-0.4 0.3-0.1 0.1 0.5 0.2 0.1-0.1 0.6 0.2 0.9 0.2 1.5-0.4 0.2z m-9-12.9l0.3 0 0 0.4 0.1 0.1 0 0.3 0 0.2-0.2-0.2-0.2 0-0.2-0.3-0.2-0.1-0.2-0.4-0.3 0-0.2 0.2 0 0.2-0.1 0.3-0.3 0.4-0.3 0.3-0.3 0.7-0.6 0.6-0.2 0.3 0.1 0.2-0.2 0.5 0.1 0.5-0.2 0.3-0.3 0-0.2 0.4 0.1 0.6 0 0.5-0.1 0.2-0.2-0.4-0.2 0-0.3-0.2 0-0.3-0.1-0.4 0-0.2 0.4-0.7 0-0.4 0.3-1-0.1-0.4 0.3-0.4 0.1-0.4 0.3-0.5 0.4-0.3 0.1-0.3 0-0.5 0.1-0.6-0.3-0.4 0-0.3 0.4 0 0.8-0.3 0-0.3 0.2-0.2 0.2 0.3 0.5 0.2 0.7-0.2 0.1-0.3 0.6-0.1-0.5 0.6-0.3 0.8 0.1 1z m-85.6-64.5l1.3 0 5.2-0.1 5.2 0 5.1 0.1 5.2 0 5.2 0 5.1 0 5 0 0.1 0.1-0.1 0.4 0.2 0.5-0.1 0.2-0.2 0.8 0.1 0.6 0 0.4 0 0.2 0 0.2-0.1 0.1-0.1 0.4-0.1 0.5 0.4 0.6 0.5 0.3 0.1 0.2 0.4 0.3 0-0.2 0.1 0 0 0.3 0.2 0.4-0.1 0.2 0.1 0.5 0.2 0.2-0.1 0.3 0.2 0.4 0.3 0.4 0.4 0.5 0.2 0.4 0.2 0 0.2 0.3 0.3-0.1 0.1 0 0.2 0.2 0.1 0.3 0.3 0.2 0.1 0.3 0.6 0.4 0 0.4 0.9 0.4 0.7 0 0.4 0.2 0.4 0.2 0.5 0.2 0.4 0.1 0.1 0.2 0.4 0.3 0.3 0.2 1.1 0.3 0.4 0.3 0.9 0.5 0.5 0.6 0 0.4 0.6 0.6 0.3 0.7 0.1 1.1 0 0.5 0.3 0.7 0.3 0.6-0.1 0.4 0.1 0.4 0.3 0.4 0.5 0.3 0.2 0.5 0.2 0.4 0.4 0.1 0.2 0.4 0.2 0.8 0.3 0.2 0.3 0.7 0.4 0.4-0.2 0.6-0.2 0.2-0.1 0.2 0 0.3 0.5 0.3 0.4 0.4 0.3 0.4 0.1 0.3 0.3 0.1 0.6 0.1 0.6 0.6 0.7 0.3 0.6-0.1 0.1 0.2 0.3 0.2 1.3 0.2 0.5 0.7 0.9 0 0.3 0 0 0.3 0.1 0.2 0.1 0.3-0.4 0.2-0.4-0.1-0.4 0.3-0.5 0.7-0.3 0.7 0 0.5-0.1 0.6 0.4 0.9 0.6 0.4 0.2 0.1 0.1 0.3 0.4 0.5 0.2 0.6 0.3 0.2 0.7 0.3 0.2 0.6 1.1 1 0.2 0.7 0.1 0.5 0 0.2-0.4 0.2-0.1 0.4 0 0.3-0.4-0.2-0.4 0.9 0.1 0.6 0.5 0.1 0.6 0.6 0.3 0.5 0.1 0.5 0.1 0.2 0.1 0.4 0.5 0.1 0.4 0.4 0.4 0.5 0.4 1.3 0.6 0.6 0.8 0.5 0.6-0.4 1.1-1-0.1-0.4-0.4-0.3-0.6-0.8-0.8-0.8-0.4-0.2-0.3-0.5-0.8-0.5-0.4-0.8-0.2 0 0-0.2 0-0.3-0.1-0.3 0-0.8-0.1-0.4 0-0.5-0.2-0.5 0.1-0.4-0.2-0.2-0.1-0.2 0-0.3-0.1-0.2-0.2-0.2 0-0.4-0.2-0.2 0-0.2 0.5-0.1 0.3-0.2 0.2-0.2 0.7 0.4 0 0.3 0.7 0.4 0.7 0.6 0.5 0.7 0.2 0.5 1.2 0.9 0.3-0.1 0.2 0.4 0.1 0.3 0.3 0.2 0 0.2 0.6 0.2 0.1 0.2 0.4 0.3 0 0.1 0.7 0.3 0.4 0.2 0 0.2 0.3 0.1-0.1 0.8-0.1 0.7 0.1 0.8-0.1 1.6 0.1 0.6 0.4 0.3 0.7 0.2 0.6 0.3 0.6 0.1 0.3-0.1 0-0.1 0.4-0.1 0 0.3 0.1 0.1 0.4 0.3-0.2 0.1-0.2 0.2 0 0.7-0.4 0.6 0.1 0.8-0.1 0.7 0.2 0.6 0.7 0.5 0.3 0.1 0.1 0.2 0.1 0.1-0.3 0.2 0 0.2 0.2 0.3 0.5 0.2 0.4 0.5 0.2 0.5 0 0.4 0.1 0.8-0.3-0.1-0.1 0.9 0.2 0.3 0.1 0.2 0.3 0.7-0.1 0.4 0.1 0.6 0.3 0.2 0.2 0.4 0 0.6 0.2 0.6 0.3 0.5 0.5 0.4 0 0.4 0.2 0.4-0.1 0.3-0.2 0.1 0 0.4-0.4 0.3-0.1 0.3 0.2 0.5 0 0.8-0.3 0.4-0.4 0.4 0.2 0.6 0.2 0.6 0.3 0.6 0.1 0.2 0 0.5-0.1 0.4 0.1 0.2 0.1 0.9 0.2 0.2 0.2-0.1 0.2 0.1 0.3 0.3 0 0.2 0.2 0.1-0.1 0.2-0.2 0-0.1-0.2 0-0.1-0.3-0.1 0.1 0.1 0.1 0.5 0 0.4 0.1 0.3 0.1 0.2 0.4 0.3 0.3 0.4 0.4 0.1 0.3 0.2 0.2 0.3 0.1 0.3 0.2 0.1 0.1-0.2 0.2 0 0.4 0.7-0.1 0.3 0.1 0.3 0.1 0.5 0.2 0.5 0 0.4 0.1 0.3 0.2 0.5 0.2 0.4 0.3 0.2 0.3 0.7 0.4 0.1 0.1 0.2 0 0.2 0.2 0.5 0.3 0.1 0.1 0.3 0.3 0.1 0.3 0.1 0.1-0.2 0.1 0.1 0.6 0.1 0.2-0.3 0.1 0.1-0.2 0.3 0 0.1 0.3 0.1 0.1-0.2 0.1 0 0.2 0.1 0.2 0.1 0.1-0.2 0.1 0 0.1 0.1 0.3 0.1 0.2 0.3-0.2 0.2 0.2 0.5 0 0.2-0.2 0.1 0 0.4-0.2 0.1 0.1 0.3 0.1 0.3 0.2 0.5 0.3 0.2 0.1 0.8 0.1 0.3 0.4 0.7 0.1 0.6 0.2 0.2 0.5 0.2-0.1 0.2 0.3 0.2 0.1 0.3-0.1 0 0 0.3 0.2 0.1 0.2 0.1-0.1 0.1 0 0.1 0.1 0.2-0.1 0.2-0.2 0-0.1 0.3 0 0.2 0.3 0.3-0.1 0.4 0.2 0.6 0.3 0.2 0.2 0.5 0.2 0.2 0.1 0.2-0.2 0.1 0 0.6 0.2 0.5 0.4 0.4 0.3 0.1 0 0.1 0.2 0.2 0 0.1 0 0.1 0.2 0.2 0 0.2 0.1 0.2 0.1 0.4 0.4 0.2 0 0.2 0.5 0.1 0.2 0.2-0.1 0.3 0.1 0.2 0.2 0.3 0.4 0 0.2 0.1 0-0.2 0.1 0 0.2 0.1 0.1 0.2 0.6 0.4 0 0.2 0.1 0.1-0.1 0.2 0.2 0.1 0.1 0.2 0 0.5 0 0.3 0.4 0.3 0.2 0.4 0.3 0.3 0 0.2 0.2 0.2 0.1-0.1 0.2 0.2 0 0.1-0.2 0 0 0.1 0.1 0.1 0 0.1 0.4 0.4 0 0.1 0.2 0.1-0.1 0.1-0.1 0.2 0.2 0.2 0 0.1 0 0.3 0.1 0.2 0.1 0.2 0 0.2 0.1 0.2 0.1 0.2 0.1 0.3 0 0.1 0.1 0.1 0.1 0-0.1 0.3 0 0.2 0 0.1-0.1 0.4 0 0.4-0.4 0.5-0.2 0.6-0.1 0.3 0 0.3-0.1 0.3-0.5 0.1-0.4 0.5-0.1 0.6-0.1 0.8-0.2 0.5 0 0.6 0 0.5 0.1 0.5 0.1 0.3-0.2 0.2 0.1 0.3 0.2 0.7 0 0.2 0.2 0.4 1 1.2 0 0.4 0 0.3-0.2 0.3 0 0.3 0.1 0.3-0.1 0.3 0.2 0.3 0.1 0.2 0 0.3 0.1 0.2-0.1 0.4 0.8 1 0 0.2 0.5 0.3-0.1 0.2 0.4 0.7 0.3 0.5 0.2 0.5 0.3 0.2 0.5 0.2 0.1 0.5 0.4 0.2 0.1 0.2 0.6 0.3 0.8 0.2 0.8 0.2 0.9 0.2 1.5 0.3 1.5-0.1 0.5 0 0.2 0.1-0.1 0.2-0.3 0.2-0.4 0.2-0.5 0.2-0.3-0.2-0.7-0.4-0.8-0.2-0.1 0.2 0.3 0.2-0.1 0.5 0.2 0.3 0.1 0.3-0.1 0.2 0.1 0.4 0.7 0 0.7-0.2 0.2 0.1 0.3-0.1 0.1-0.3 0-0.3 0-0.2 0.1-0.1 0.6-0.5 0.5-0.6 0.2-1.2-0.4-0.1 0.1-0.3 0-0.3-0.2-0.1-0.2-0.1 0.1-0.1 0-0.3-0.1-0.3-0.1 0-0.1 0.3-0.2 0 0-0.6 0.1-0.2-0.1-0.1 0.1-0.3-0.1-0.2 0-0.3 0-0.2 0.4 0 0.1-0.1-0.3-0.1 0-0.2 0.2-0.2 0.4 0 0.2-0.2 0.2-0.3 0.6 0 0.7 0.2 0.1-0.1 0.4 0.2 0.1 0.2-0.2 0.1 0 0.4 0.2 0.2 0.3 0.1 0.2 0.3 0.4 0.1 0.2 0.2 0.2 0.4 0 0.3 0.2 0.3 0.1 0.2 0.8 0.2 0.3 0.3 0.3 0.3 0.2 0.1 0.5 0.3 0.4 0 0.1 0.1 0.2 0.1 0.1 0.3 0.3 0.1 0.1 0.2 0.4 0.1 0.4 0.3 0.4 0.3 0.3 0.3 0.1 0.7 0.2 0.2-0.1 0.5 0.2 0.1 0.1 1.4 0.1 0.6 0.3 0.3 0.6 0 0.7 0.3 1.1-0.3 1.1-0.4 0.5-0.3 0.2-0.1 0.1 0.2 0 0.3 0.1 0.3 0.3 0.2 0.2 0.3 0 0.3-0.1 0.1-0.1 0.2-0.4 0.4-0.1 0-0.1 0.1 0 0.3-0.1 0.5-0.1 0.3 0.1 0.4 0.2 0.6 0.1 0.3 0.3 0.1 0.2 0.1 0.1 0.2 0.2 0.2 0.1 0.1 0.2 0.2 0.4 0.1 0.9 1.1 0.6 0.5 0.3 0.6 0.4 0.3-0.4 0.7 0 0.9 0.2 0.7 0.3 1.1-0.1 0.8 0.5 0.5 0.6 0.3 0.5 0.2 0.1 0.2 0.5 0.1 0.3 0.1 0.7 0.3 0.2 0.3 0.3 0.1 0.8 0.2 0.5 0.1 0.2 0.2 0 0.4 0.5 0.2 0.6 0.1 0.3 0.1 0 0.3-0.3 0.2 0 0.5 0.3 0.6 0.7 1 0.5 0.5 0.1 0.6-0.2 0.5 0 0.4 0.4 0.1 0 0.5-0.1 0.3-0.3 0.2 0.1 0.3-0.1 0.6 0.1 0.3 0 0.7 0 0.5-0.2 0.4-0.2 0.1 0 0.3 0.1 0.7-0.1 0.3-0.1 0.3-0.3 0.5 0 0.4-0.3 0.2-0.3 0.5-0.6 0.9-0.3 0.2-0.3 0.6-0.3 0.1-0.2 0.4-0.9 0.4-0.4 0.4-0.8 0.1-0.6 0.3-1.3 0.4-0.6 0.5-0.6 0.3-0.1 0.5 0.2 0.2-0.6 0.7-0.8 0.1-1.3 0.9 0 0.6-0.6 0.5-0.3 0.3-0.4 0.3-0.3 0.1-0.7 0-0.5 0.2 0 0.3 0.2 0.2-1.1 0.1-0.6 0-0.3-0.2-0.4-0.1-0.6-0.4-0.8-0.7-0.4-0.5-0.5-0.6-0.6-0.9-0.1-0.3-0.2-0.7-0.2-0.2-0.3-0.9 0-0.9-1.3-4.7-0.2-2-0.2-0.9-0.3-0.3-0.2-0.3-0.7-1.2-0.2-0.5-0.4-0.4-0.1-0.6-1-1.7-0.3-0.3-0.8-1.6-1.4-1.3-1.4-0.8-3.4-1.6-1.6-0.7-2-1.7-3-3.3-1.8-2.2-1.1-0.9-0.5-0.4-0.3-0.1-0.1-0.4-0.3-0.3-1.1-1.2-0.6-0.5-0.9-0.8-0.7-0.5-0.2-0.4-0.7-0.6-1.2-0.8-0.7-0.6-0.9-0.5-1-0.5-1.5-1.2-1.6-0.8-4.7-2.5-0.1-0.2 0.3 0.1 2.3 1.2-0.5-0.5-1-0.7-1-0.4-0.4-0.1-0.5-0.4-0.3-0.6-1-1-0.6-0.3-0.6-0.1-0.9-0.7-0.7-1-0.3-1.1-0.6-1.1-0.1-0.3 0.3 0.1 0.3 0-0.4-0.4-0.6-0.5-0.3-0.3-0.5 0 0 0.5 0.3 0.4-0.4 0.7-0.8-0.1-0.3-0.2-0.3 0.1-0.5 0.1-0.6-0.1-0.5-0.1 0.6 0.6 0.6 0.4-0.5 0-0.3-0.1-0.3 0.1-0.3 0.3-0.2-0.4-0.1-0.5 0.1-0.4 0.1-0.8-0.6-1.6-0.4-1-0.5-0.5-0.5-0.6-0.6-0.8-0.7-0.5-0.3-0.5 0.1-0.1 0.6 0.5 0.1-0.1 0-0.3-0.6-0.3-0.6-0.6-0.4-0.7-0.2-0.4-0.1-0.6-0.2-0.6-0.3-0.6-0.4-0.3 0.3 0.9 0.1 0.9 0.2 0.7 0.6 0.6-0.1 0-0.5 0.4 0.2 0.1 0.3 0.4 0.1 0.1-0.2 0.1-0.2 0-0.2-0.2-0.2-0.3-0.5 0.6-0.3-0.5-0.6-1.6 0.3-0.2 0.1-0.3 0-0.3-0.1-0.3-0.5 0.3-0.1 0.4 0.2 1 0 0.7 0.1 0.3-0.5 0.1-0.5-0.3-0.2-0.4-0.2-0.4-0.1-0.6 0-1 0-0.3-0.2-0.2-0.2-0.1-0.2 0-0.2-0.6 0.3-0.1 0.5-0.5 0.2-0.2-0.2-0.7-0.1-0.2-0.1-0.1 0-0.3 0.1-0.1 0.4-0.3 0.1-0.2 0-0.2-0.3-0.4-0.1-0.4 0-0.3-0.2-0.2-0.2 0.2-0.3 0.4 0 0.6-0.2 0.3-0.3 0.4 0.2 0.6 0.3 0.6-0.4 0.6-0.3 0.5-0.3 0-0.1-0.6 0.1-0.4 0.1-0.8-0.3-0.2 0-0.2-0.1-0.3 0.2-0.2 0.4 0 0.1-0.3-0.2-0.3 0.2-0.4 0.3-0.6 0.2-0.9-0.1-0.2 0.2-0.5 0-0.4-0.3 0 0-0.2-0.3-0.2 0.1-0.4 0.1-0.4-0.1-0.5 0-0.5 0.2-0.9 0.4-0.9 0.5-0.8 0.5-0.6 0.1-0.5 0.1-1 0-1.7 0.1-0.9-0.4-0.1 0-0.5 0.2-0.5 0.2-0.3 0.1-0.5 0-0.3-0.4-0.1 0.2-0.4 0.8-0.3 0.5-0.2-0.3-0.1-0.8 0-0.3 0.2-0.1-0.3 0.2-0.2 0.4-0.3 0-0.6-0.1-1.1-0.2-0.7 0.2-0.7 0.1-1-0.3-1.9-0.1-0.9-0.2-0.3-0.2 0.2 0 0.5 0.1 3.4-0.2 1.4-0.1 1.2-0.2 0.2 0-0.3 0-0.8 0.1-1.8 0-4.2-0.2-1.8-0.7-1-0.2-1.3-0.6-1.1-0.6-2-0.5-1.3-0.6-0.7-0.6-0.8-0.7-0.4-0.8 0.1-0.5-0.6-0.1-1-0.2-1-0.7-1.5-1-1.3-0.7-0.7-1.1-0.6-0.3-0.1-0.4 0.2-0.2 0.3-0.2 0.3-0.5 0.1-1.7-1.2 0-0.1 0.1-0.5-0.2-0.3-0.4 0.3-0.5 0.1-0.4-0.3-0.2-0.6-0.1-0.1-0.5 0-1.2 0-0.4-0.1-1.1-1.5-0.8-0.6-0.9-0.5-0.5-0.4-0.8-0.6-0.9-0.9-1.1-1-1.5-0.8-0.1-0.3 0-0.1 0-0.1 0-0.2-0.1-0.1-0.2 0-0.6 0-0.4-0.2-0.4-0.4-0.8-0.7-0.5-0.5 0.1-0.4-0.1-0.5 0.2-0.4-0.1-0.3-0.2-0.2-0.3-0.6-0.3-0.5-0.5-0.6-0.3-0.2-0.4-0.5-0.3-0.5-0.1-0.4 0-0.3 0-0.4 0.5-0.3 0.2-0.1-0.3-0.2-0.2 0-0.4 0.2-0.4 0.1-0.1 0.4-0.1 0.4-0.4 0.1-0.3 0.1 0.1 0.3-0.1 0.2-0.3 0.2-0.3-0.2-0.3-0.4-0.1-0.3-0.1-0.5-0.2-0.2 0.2-0.1 0.6-0.1 0.2-0.2 0.4-0.3 0.3-0.2 0.3-0.4 0.3-0.4 0.4-0.2 0.2-0.4 0.2-0.6 0.2-0.3 0-1.6-0.2-0.6-0.4-0.5-0.5-0.1-0.5 0.2-0.4 0.7-0.1 2-0.2 1-0.8 0.7-0.4-0.2-0.3 0.4-0.2 0.4 0 0.3 0 0.3 0 0.2 0 0.4 0 0.5-0.2 0.2-0.4 0.1-1.2-0.9-1.1-0.6-1-0.2-0.6-0.1-0.8 0-0.6 0-1 0.4-0.4 0.8-0.2 0.5-0.5 0.4 0 0.7-0.4 0-0.5 0.4-0.7-0.1-1.1-0.5-0.8-1.4-1.7-1-0.3-0.5-0.1-0.4-0.5-1.1-1-1.9-0.8-0.9-1-0.6-0.7-0.5-0.9-0.3-1.5-0.2-0.4 0.2 0 0.4-0.3 0.1-0.3 0.2-0.3-0.2-1.3-1.3-0.4-1.1-0.6-0.8-0.8-0.9-1-0.6-1-0.5-0.7-0.1-0.8-0.4-1.1 0.2-0.5 0-0.1 0.7-0.7-0.6-0.9-0.7-1.3-0.5-0.7 0.5-0.4-0.3 0.2-0.4-0.1-0.3 0-0.4-0.4-0.2-0.5-0.2-0.4 0.1-0.3-0.6 0-1.4 0.1-1.4-0.2-1.3-0.5-1.4-0.6-0.6-0.3-0.3-0.7-0.4-0.5-0.1-0.5-0.9-1-0.3-1.4-0.6-1-0.5-0.5 0-0.4-0.8-0.1-0.2-0.4-0.5-0.1-0.2-0.4-0.9-0.7-0.6-0.7-0.3-0.2 0.1-0.2 0.3-0.3-0.1-0.2-0.3-0.4-0.5 0.1-0.1 0.4 0.3 0.3 0 0.1-0.7-0.1-0.3-0.1-0.4-0.3-0.2-0.3-0.2-0.4 0-0.1 0.2-0.2 0.3-0.1 0.5-0.3-0.2-0.6-0.2-0.2-0.8-0.3-0.5-0.7-0.3-0.4 0-0.4 0.3-0.3-0.4-0.3-0.4-0.3-0.6 0-0.6-0.4-0.6-0.1-0.4-0.1-0.4-0.1-0.1-0.7-0.9 0.8-0.3 0.4 0.1 0.5 0.4 0.3 0.5 1.3 0.1 1.3-0.3 1.1 0.2 0.4 0 0.6 0.2 0.3 0.4 0.6 0.1 0.9-0.2 0.6 0.1 0.7 0.2 0.5 0 0.1 0.3 0.3 0.2 0.5 0.1 0.6 0 0.9 0.2 1 0.2 1-0.2 1.1-0.2 0.9 0.4 1.1-0.5 0.8-0.3 0.8-0.6 0.4-0.3 0.3-0.3 0.5-0.5 0.6-0.4 0.3-0.2 0.2-0.1 0.3 0 0.3 0 0.2 0.2 0 0.2 0.1 0.3 0.1 0.6-0.1 0.5-0.2 0.5-0.2 0.4-0.1 0.3 0.2 0.5 0.7 1 0.6 0.3 0.6 0.6 0.4 0.3 0.9 0.2 0.5 0.4 0.7 0.3 0.5 0.4 0.2 0.5 0.2 0.2 0 0.3 0.3 0.2 0.2 0-0.1 0.3 0.1 0.3 0.3-0.2 0.3-0.2 0.2-0.3 0-0.2 0.5-0.4 0.3-0.4 0.1-0.4-0.2-0.2-0.2 0.1-0.1-0.2 0-0.1-0.1-0.1-0.2 0.1-0.2 0 0-0.2 0.1-0.2 0.3 0 0.3-0.1 0.2 0.1 0 0.2 0.1 0.2 0.4-0.1 0.3 0.1 0 0.3 0.2 0.1 0.5 0.3 0.8 0.1 0.4 0 0.1-0.2 0.2-0.3 0.2-0.3 0.1-0.3 0.4-0.3 0.1-0.4-0.1-0.3-0.3-0.2-0.3-0.1-0.1-0.2-0.5-0.2-0.2 0-0.2-0.1 0-0.3-0.2-0.1-0.2 0-0.2 0.2-0.2 0-0.4 0-0.1 0.1-0.2-0.1-0.3-0.6-0.2-0.5-0.2-0.3-0.2-0.3-0.2 0-0.1 0.1 0.1 0.3 0.2 0.5 0 0.3 0.3 0.2 0.1 0.3 0.2 0.4-0.1 0.2-0.2 0-0.1 0.2 0 0.2-0.1-0.1-0.2-0.1-0.3 0-0.2 0.2-0.4 0.2-0.3 0.2-0.4-0.1-0.2-0.1-0.2-0.3-0.3-0.3 0-0.3-0.1-0.5-0.2-0.3-0.3-0.3-0.3-0.5 0-0.4-0.1-0.4 0.1-0.4 0.2-0.2 0.1-0.4 0.5-0.6 0.3-0.4 0.1-0.4-0.1-0.1-0.3-0.1-0.1 0-0.1-0.1 0.3-0.2 0.1-0.1 0.1-0.1-0.1-0.2-0.3-0.1-0.2-0.1-0.1-0.2 0.1-0.3 0.1-0.2-0.3-0.2-0.2 0-0.2 0.1 0 0.3-0.2 0.2-0.2 0.1-0.2 0.2-0.3 0.2-0.4-0.1-0.5 0.3-0.2 0.3-0.3 0.3-0.3 0.2-0.3-0.5 0.1-0.5 0.1-0.4 0.3-0.5 0.2-0.3 0.6-0.5 0.2-0.4 0.4-0.5 0.1-0.1 1.7 0 0.3 0.4 0.2 0.5 0 0.3 0.7 1.1 0.4-0.9 0-0.6-0.1-0.7-0.1-0.1 0.8 0 0.1 0.1 0.2-0.1z m23.4 41.2l0.5-0.3 0.3 0.1 0.2 0.1 0.3 0.2-0.1 0.2 0.3 0.1 0.1-0.1 0.1-0.2 0.2 0 0.2 0 0.3 0.6 0.5 0.6 0.2 0.4 0 0.2-0.2 0-0.3-0.2-0.3-0.2-0.7-0.3-0.9-0.3-0.7-0.1-0.3-0.1-0.2-0.2 0.2-0.3 0.3-0.2z m76.4 60.3l0.3-0.2 0.2-0.1 0.1 0.1-0.1 0.3 0.1 0.1 0.1 0.2 0 0.2-0.2 0 0-0.2-0.2 0-0.2 0-0.1-0.2 0-0.2z m-3.7-15l0.3 0 0.2 0 0.2-0.2 0 0.2-0.1 0.1-0.3 0.5-0.1 0.5-0.2 0.3-0.2 0.1-0.2 0-0.1-0.2-0.1-0.4 0.1-0.3 0.5-0.6z m-40-5.6l0.1-0.2 0.2 0.1-0.1 0.5 0.1 0.5-0.1 0.8 0 0.6-0.2 0.6-0.1 0.9 0.2 0.7-0.1 0.5-0.2 0.4-0.1 0.4 0 0.5-0.1 0.1-0.3-0.2-0.2-0.3 0.1-0.5 0.3-0.5 0.2-1 0.1-1.4 0.3-1.2 0-0.6-0.1-0.7z m30.1-6.9l0-0.3 0.4 0.1 0-0.2 0.2 0 0.2 0.3 0.2 0.2 0.1 0.1 0.2 0.5-0.1 0.3-0.1 0.3-0.2 0.2-0.2 0-0.3-0.4-0.1-0.2 0.1-0.2-0.3-0.5-0.1-0.2z m-5.7-3.6l0.1 0.1 0 0.3 0.2 0-0.1 0.2 0.1 0.2 0.1 0-0.1 0.1 0 0.3 0.1 0.1 0 0.2-0.1 0-0.2-0.2-0.1-0.3 0-0.3 0-0.3-0.1-0.3 0.1-0.1z m-0.8-10l0.3-0.3 0.2 0 0.1 0 0.1 0.3-0.1 0.3-0.1 0.1 0.2 0.1-0.1 0.2-0.3 0-0.2 0-0.1 0 0.1-0.1 0-0.1 0.1-0.1-0.2-0.2 0-0.2z m-23.3-35.3l-0.3-0.4 0.5-0.7 0.7 0.6 0.6 0.8-0.2 0.7-0.4 0.5-0.6-0.1-0.2-0.7-0.1-0.7z m5.9-6.6l-0.4-0.3 0.1-0.4 0.6-0.1 0.5 0.2 0.2 0.3-0.1 0.3-0.6 0-0.3 0z m-95.1-15l0.2 0 0.4 0.3 0.3 0.3 0.3 0.2 0.1 0.2-0.2 0.3-0.2 0.1-0.2-0.1-0.1-0.5-0.3-0.5-0.5-0.1-0.3-0.1 0.1-0.2 0.4 0.1z\",\n\tMXCAM:\n\t\t\"M831.4 503.9l0-1.5 0-1.5 0-1.5 0-0.6-1.8 0-0.8-0.1-0.8 0-0.4-0.1-0.3-0.2-0.2-0.2-0.3-0.3-0.5-0.2-0.6-0.1-0.5 0.1-0.6 0-0.5-0.1-0.6-0.4-0.5-0.4-0.4-0.3-0.5-0.4-0.5-0.2-0.5-0.2-0.6 0-0.6-0.1-0.5-0.1-0.4-0.2-0.6-0.2-0.3-0.1-0.3-0.1-0.4-0.1-0.3 0-0.7 0-0.8-0.1-0.8 0.1-0.6 0.1-0.1 0.2-0.1 0.3-0.1 0.3-0.1 0.2 0 0.3 0 0.3 0.1 0.3 0 0.3-0.1 0.5-0.3 0.8-0.3 0.6-0.3 0.4-1.3 0-1.4 0-1.4 0-1.4-0.1-0.9 0-1-0.4-0.8-0.5-0.8-0.6-0.5-0.2-0.1-0.5-0.2-0.5-0.5-0.3-0.4-0.1-0.4-0.2-0.4-0.2-0.4-0.3-0.6-0.5-0.7-0.5-0.6-0.6-0.7-0.4-0.5-0.7 0-1.2 0.1-1.2 0.1-0.9 0-1.4 0-1.4 0-1.4 0-1.4-1.3 0.1-1.3 0.1-1.4 0-1.3-0.2-0.2 0-0.2 0.1-0.2 0.1-0.3-0.1-0.3-0.2-0.2-0.2-0.2-0.2-0.3-0.2-0.4-0.5-0.3-0.7-0.1-0.8-0.2-0.7-0.4-0.6-0.4-0.5-0.3-0.6-0.3-0.5 2.3-0.7 3.2-0.2 3.1-0.3 3.6-0.4 2.3 0.1 0.9 0.2 0.8 0.9 1.5 1 0.2 0.2 0 0.3-0.2 0.4-0.2 0.2-0.4 0.1 0.2-0.2 0-0.2-0.3 0.1-0.4 0.1-0.7 0-0.3-0.1 0-0.3 0.1-0.4-0.1-0.2-0.3 0-0.1 0-0.6 0.5-0.1 0-0.2-0.1-0.2 0-0.4 0.1-0.1 0.1 0.2 0.2 0.4 0 0 0.2-0.4 0.1-0.4 0.1-0.3-0.1-0.3-0.3 0 0.2 0.1 0.1 0 0.1 0.1 0.2-0.2 0.2-0.2 0.3-0.1 0.2-0.1 0.4 0.1-0.2 0.5-0.3 0.5 0.5 0.3 0.1 0.4 0.1 0.6-0.2 0.4-0.1 0.2 0.2 0.2 0.4 0.4 0.3 0.6 0.3 0.5 0.1-0.7-0.6-0.8-0.5-0.7-0.6-0.1-1 0.6 0.3 0.3 0.3 0.3 0.1 0.7-0.3-0.3 0.6 0.3 0.2 0.4 0.2 0.3 0.3 0.1 0.4-0.4-0.2 0 0.1 0 0.1-0.2 0 0.5 0.3 1.2 0.4 0.3 0.3-0.1 0.5-0.7 0.8-0.2 0.5 0.3 0.4 0.5 0.5 0.5 0.4 0.4 0.1 0.3-0.4-0.1-0.5-0.3-0.4-0.2-0.6 0.2 0.2 0.3 0.2 0.3 0 0.4 0-0.3-0.4-0.4-0.4-0.3-0.4 0.2-0.5 0.7 0.4 1.8 0.5 0.8 0.4 0.6-0.2 1.3 0.3 0.7 0.1 1.4-0.2 0.7-0.2 0.5-0.2 0 0.4 0.2 0.3 0.3 0.1 0.2-0.2 0.1-0.4-0.2-0.9-0.1-0.4-0.2 0 0 0.2-0.1 0.2-0.1 0.2-0.3 0.1-0.7 0.3-0.1-0.1 0.1-0.3 0.6-0.8 0.3-0.2 0.6-0.4 1.7-0.6 0.8-0.5 0.4 0.2 0.5-0.1 0.5-0.2 0.4-0.3 0.2-0.3 0.5-0.9 0.2-0.2 0.9 0.1 0.5-0.1 0.2-0.1 0.2-0.3 1.2-0.4 0.4-0.3-0.5-0.2-0.4 0.1-0.7 0.4-1.4 0.3-0.3 0.3 0.9-2.3 0-1-0.6-0.9-0.5-0.4-0.2-0.1-0.3-0.1-0.3 0.1-0.1 0.2-0.1 0.2-0.2 0.1-0.6-0.1-0.8-1.1-0.6-0.2 0.4-0.7 0.6-0.7 0.7-0.5 1.3-0.5 0.9-0.6 0.8-0.8 0.4-0.6-0.7 0.2-1.8 1.5-1.9 0.9-0.7 0.7 0 0.7-0.3 0.1-0.1-0.1-0.7 0.4-0.3 0.1-0.6 0.1-0.5-0.1-0.1-0.2 0.7-0.8 1.4-1.1 1.9-1.1 2.4-1.5 3.5-1.6 2.3-2.1 0.6-0.3 1.3-0.5 2.3-1.5 2.2-2.9 0.6-0.5 1-0.3 0.9-0.8 0.8-1 0.4-1 0.4-5.9 0.3-1.3 0.1-0.6-0.1-0.7-0.1-0.5 0-0.5 0.2-0.7 0.5-1.3 0.6-0.9 1.6-1.2 2.6-1.8 1.1-1.3 0.3-1.2 0.1-0.5 0.1-0.5-0.2-0.5-0.8-1.7-0.1-0.4 0-0.2 0.1-0.6 0-2.4 0.2-1.5 0-1.7 0-0.7 0.4-1.7 0-1.2-0.4-2.5 0-1.4 0.6-2.6 0.2-2.9 0.3-0.9 1.6-1.9 0.4-0.6 0 0.9-0.3 7.6 0.5 0.9 1.4 0.1 1.4 0 1.1 0.2 0.8 0.8 0.4 1.1 0.8 0.7 0.5-0.3 0.6-0.2 0.5 0.5 0.5 0.5 0.9-0.2 0.5-1.1 0.8-0.5 1.1 1.6 0.5 0.8 0 0.8 0.5 1.2 0.5 0.4 1.7 1.2 1 1.9 0.7 2.2 1.5 1.5 1.9 0.8 1.8 1.3 2 3.9 1.6 1.6 1.4 1.9 0.3 2.1 0.8 1.7 1.2 1.8 1.6 1.3 1.8 1.3 3.5 3.1 2.8 3.5 0.6 2.2-0.2 1.9 0.1 2.2-0.1 0.5 0 1-0.4 0.8-1.3 1.4 0.1 2.2-0.9 6 0.2 1.8 1 1.3 0.2 1.5-0.3 0.5-0.1 0.5 0.4 0.2 0.5 0.2-0.1 0.7-0.3 0.7-0.1 0.6 0.5 2.7 0.2 2.2 0 1.9-0.6 1.7-2.5 3-0.3 0.4 0.2 2.5-0.2 0.3-0.2 1.2 0 2.6-6.3 0-6.3 0-6.3 0-6.3 0-6.3 0-6.3-0.1-6.3 0-6.4 0-1.2 0-0.6 0.2-0.2 0.3z m-17.5-29.4l1.3-0.6 0.5 0 0.1 0.2 0.2 0.3 0.1 0.3 0 0.4-0.2-0.1-0.1-0.1-0.6 0.5-0.3 0.1-0.4 0 0.1-0.2 0.2-0.2 0.2-0.1 0.3-0.1-0.6 0.1-1 0.4-0.4 0-1.1 1.5-0.9 0.7-0.9 0.2 0.5-1-1.5 0.9-0.8 0.4-0.9 0.2-0.6 0-0.2-0.1 0.2-0.2 0.4-0.5 0.3-0.2 1.3-0.5 0.8-0.2 1.5-0.8 1.2-0.8 1.3-0.5z\",\n\tMXCHP:\n\t\t\"M818.7 520.3l-0.2 0.1-0.1 0.4 0.7 0.3 0.9 0.2 0.4 0.3 0.2 0.7 0.6 0.1 0.8-0.1 0.8 0 0.3 0.3 0.2 0.5 0.2 0.5 0.1 0.5 0.1 0.2 0.6 0.1 0.2 0.2 0.2 0.2 0.1 0.5 0.1 0.3 0.3 0.4 1 1.1 0.3 0.2 0.7-0.1 0.3 0 0.1 0.2 0.2 0.6 0.1 0.3 1 1.2 0.2 0.3 0.1 0.6 0.3 0.3 1.1 0.4 0.2 0.2 0.4 0.4 0.1 0.1 0.3-0.2 0-0.2-0.1-0.3 0-0.1 0.5 0 0.4 0 0.1 0.3-0.5 0.5 0.6 0.2 0.8 0.9 0.6 0.3 2 0.6 0.3 0 0.3-0.2 0.4 0.2 0 0.2-0.1 0.4 0.4 0.3 1 0.6 0.4 0.3 2 2.8 0.4 1.1-0.4 0.7 0 0.2 0.2-0.1 0.2 0 0.1-0.1 0-0.2 0.4 0.2-0.1 0.4-0.1 0.5 0.1 0.5-0.3 0.5 0.3 0.1 0.4 0 0.3 0.2 0.1 0.3-0.2 0.3-0.3 0.2-0.1 0.3 0.3-0.1 0.5 0 0.4 0.1 0.1 0.1 0.2-0.1 0.7-0.2 0.3 0 0.2 0.6 0.1 0.3 0.7-0.4 0.3 0.1 0.3 0.2 0.2 0.2 0.1 0.3 0 0.3 0.1 0.2 0.9 0.1 0.3 0.1 0.2 0.1 0.2 0.1 0.3 0 0.2-0.1 0.2 0 0.1 0.4 0 0.4 0 0.2 0.3 0.5-0.4-0.1-0.4 0-0.3 0.2 0 0.4 0.1 0 0-0.2 0.2 0 0.3 0.3-0.2 0.5-0.4 0.4-0.5 0.2-0.2 0.1 0.3 0.2 0.4 0.2 0.1-0.1 0 0.3-0.1 0.1-0.3-0.1-0.1-0.1-0.1 0.1 0 0.1-0.1 0 0.1 0.2 0.1 0.3 0.2 0.1-0.4 0-0.1 0-0.1-0.2-0.4 0.4 0.1 0.3 0.3 0.2 0.4 0.2-0.4 0.1-0.3 0.3-0.2 0.4 0.1 0.6 0.8 0.5 0.2 0.3-0.6 0.2 0 0.2 0.3 0.4-0.7 0.5 0.2 0.5 0.2 0 0.1-0.1 0.1 0 0.2-0.1-0.1 0.3-0.2 0.4-0.1 0.1 0 0.1-0.6 0.1-0.5 0.1-2.6 0-3.9 0-4 0-4 0-0.1 0-3.8 0-4 0.1-3.9 0-4 0-4 0-1.3 0-0.4 0.2-0.4 0.4-0.6 1.2-0.5 0.9-1.4 2.4-2 3.5-2.3 3.9-2.3 3.9-1 1.9-0.9 1.6-1.4 2.4-0.6 0.9-0.1 0.5 0 0.6 0.2 0.5 3.7 4.8-0.6 1.3-0.3 0.4-0.3 0.1-0.4 0.1-0.4 0.1-0.3 0.3-0.1 1 0.1 1.9-0.3 0.9-0.6 0.7-0.2 0.3 0 0.6 0.1 0.3 0.3 0.7 0 0.2-0.1 0.5 0.1 0.2 0.5 1.5 0 0.5-0.1 0.5-0.6 1.1-0.7 1.8-0.5 0.6-0.6 0.1-0.1-0.1-1.6-2-2.2-2-3.6-3.7-5.5-5.7-3.6-4-0.4-0.8 0-0.6 0.5 0.3 1.2 0.4 0.3 0.2 0 0.6 0.2 0.6 0.3 0.4 0.4 0.2-0.3-0.6-0.2-1.3-0.3-0.5-0.4-0.2-0.6-0.3-0.6-0.1-0.5 0.1-0.1-0.5-0.3-0.1-0.2 0.2 0.4 0.4-0.5-0.1-1.7-1.3-1.2-0.5-0.5-0.4-0.4-0.8-2.3-1.7-2.7-2.9-0.5-0.9-0.3-0.4-0.9-0.3-6.9-5.9-0.5-0.3-4.8-3.9-3-2-5.3-3.1 0.4-0.2 0.7 0.1 0.3-0.1 0.2 0.3 0.3 0.1 0.4-0.2 0.3-0.4-0.6-0.7-0.3-0.7-0.4-0.5-0.7-0.4-3.4-0.7-0.9-0.5-0.3-0.2 0.2-0.3 0.2-0.4 0.3-0.4 0.2-0.4 0.2-0.5 0.1-0.6 0.1-0.6 0-0.5 0-0.9-0.4-1-0.4-1-0.4-0.8-0.2-0.6-0.3-0.5-0.2-0.6-0.3-0.5-0.3-1.2 0.6-1.2 0.9-1.2 0.7-1 0.3-0.6 0.1-0.6 0-0.6 0-0.6-0.1-0.7-0.1-0.8-0.1-0.8 0.1-0.6 0.4-0.4 0.6-0.4 0.6-0.3 0.5-0.3 0.4-0.2 0.4-0.3 0.4-0.3 0.4-0.2 0.2-0.4 0-0.6 0-0.6 0-0.4 0-0.8 0-0.8 0.3-0.5 0.8 0.1 0-0.2 0-0.2 0-0.2 0-0.2 0-0.8 0.1-0.9 0-0.9-0.3-0.7 0.4-0.2 0.4-0.2 0.3-0.2 0.3-0.3 1.1-0.7 1.1-0.7 1-0.7 1.1-0.7 0.5-0.4 0.6-0.4 0.6-0.5 0.3-0.6 0.1-0.3 0.1-0.3 0.2-0.3 0.1-0.3 0.4-0.9 0.4-0.8 0.4-0.9 0.3-0.8 0.3-0.8 0.1-0.4 0.2-0.2 0.1-0.3 0.2-0.2 0.5-0.4 0.1-0.1 0.2-0.1 0.1 0 0.1-0.6 0.1-0.1 0.3-0.4 0.4-0.3 0.4-0.3 0.4-0.3 0.2-0.4 0.2-0.6 0.1-0.6 0.1-0.5 0.5-1.7 0.5-1.8 0.6-1.8 0.6-1.8 0.1-0.6 0.4-0.1 0.1-0.2 0.4-0.5 0.3-0.1 0.4 0 0.8 0.3 1 0.1 0.3 0.2 0.5 0.4 0.7 0.3 0.7 0.8 0.9 0.7 0.9 0.2 0.7-0.7 0.6 0.1 0.4-0.6 0 0.5 0.1 0.2 0 0.6 0 0.1 0 0.1 0 0.1 0 0.5 0.1 0.5 0 0.6 0 0.5-0.1 0.5-0.2 0.4-0.2 0.5-0.1 0.5 0 1.2 0.3 1.2 0.2 1.2 0 1.3 0.1 0.7 0.2 0.6 0.4 0.3 0.7 0 1 0.2 0.5 0.6 0.3 0.8 0.5 0.9 0.3 0.5 0.3 0.5 0.4 0.4 0.4 0.4 0.8 0.4 0.9 0.3 1 0 0.8-0.5 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.4-0.4 0.5-0.4 0.4-0.4 0.5-0.4 0.2-0.3 0.3-0.3 0.3-0.3 0.3-0.2 0.6-0.6 0.6-0.5 0.6-0.6 0.7-0.5 0.4-0.5 0.5-0.5 0.6-0.5 0.6-0.1 1-0.4 0.2-0.5 0-0.7 0.3-1 0.7-0.5 0.9-0.3 1.1-0.2 0.9-0.2 0.7-0.3 0.7-0.4 0.7-0.4 0.6-0.4 0.9 0.1 1-0.1 0.6-0.5-0.5-0.9 0.7-0.8 0.8-0.8 0.8-0.5 0.7-0.2 0.2 0 0.4 0.2-0.1 1.1 0.4 0.4 0.2-0.3 0.1-0.3 0.1-0.3 0.4-0.1 0.4-0.1 0.4 0.1 0.7 0.4 0.6-0.5 0.6 0.1 0.6 0.5 0.4 0.7 0 0.2 0 0.6 0 0.2 0.1 0.1 0.1 0.2 0.1 0.9-0.2 0.3-0.3 0.5-0.1 0.6 0.4 0.2 0.6 0 0.6 0 0.6 0 0.6 0.2 0.5 0.9 0.4 1 0.2 1.1 0.2 1 0.1 0.3 0 0.3-0.1 0.3 0 0.3 0.2 0.5 0.5 0.3 0.6 0.3 0.5 0.2 0.1 0 0.1 0 0.1 0.1 0.1 0 0.5 0.2 0.6 0.2 0.6 0.2 0.2 0.2 0.3 0.2 0.2 0.1 0 0.5-0.2 0.9 0.2 0.3 0.3 0.2 0.5 0.2 0.3 0 0.6 0 0.3 0.1 0.2 0.3 0.7 1.2 0.1 0.1-0.1 0.4-0.3 0.1-0.4 0-0.4 0.1-0.2 0.3-0.1 0.4 0 0.5 0.1 0.4 0.1 0.1z m-76.4 34.7l0.3 0.1 0.8 0.6 0.7 1 0.4 0.3 0.9 0.4 0.4 0.2 0.2 0.4-4.3-1.8 0.6-1.2z\",\n\tMXCHH:\n\t\t\"M329.7 218.5l-0.2-0.3-0.1-0.4-0.2-0.3-0.1-0.4-0.2-0.2-0.2 0-0.2 0.1-0.3 0-0.5 0.1-0.4 0-0.3-0.2-0.4-0.4-0.6-0.9-0.7-1-0.6-1-0.6-1-0.4-0.7-0.3-0.6-0.1-0.8 0.2-0.8 0.5-0.7 0.5-0.6 0.3-0.7-0.1-0.9-0.2-0.5-0.3-0.6-0.2-0.5 0-0.6 0.1-0.6 0.2-0.7 0.1-0.6 0-0.7-0.1-0.6-0.1-0.5-0.3-0.4-0.5-0.3-0.8-0.5-0.6-0.6-0.6-0.6-0.6-0.7-0.1-0.5 0.1-0.5 0.1-0.4 0.3-0.4-0.8-0.6-0.7-0.7-0.8-0.7-0.8-0.6-0.4-0.6-0.1-0.7-0.2-0.7-0.3-0.6-0.5-0.3-0.5-0.2-0.5-0.3-0.5-0.3-0.4-0.2-0.3-0.3-0.4-0.3-0.2-0.4-0.9-2.2-0.9-2.2-0.9-2.2-0.9-2.2-0.2-0.7 0.3-0.6 0.5-0.5 0.6-0.5 0.5-0.5 0.5-0.4 0.5-0.2 0.7-0.2 1.5-0.1 1.4 0 1.3 0.1 1.5 0.3 1 0.2 1 0.3 1 0.2 1 0.3 0.4 0.1 0.5 0.2 0.5 0 0.4-0.2 0.7-0.6 0.6-0.6 0.6-0.6 0.6-0.6 0-0.5-0.2-0.8-0.4-0.9-0.2-0.6-0.2-0.7-0.3-0.7-0.2-0.7-0.3-0.6-0.3-1-0.3-1-0.3-1-0.3-0.9 0-0.9 0.3-1.1 0.4-1.2 0.2-0.9 0.1-0.3-0.1-0.4-0.2-0.3-0.1-0.3-0.1-0.3 0-0.4 0-0.4-0.1-0.4-0.1-1.3-0.2-1.3-0.2-1.4-0.1-1.3-0.2-1.9-0.2-1.8-0.3-1.8-0.2-1.8-0.2-1.7-0.1-1.6-0.2-1.6-0.2-1.7 0.5 0 0.5 0 0.5 0 0.5 0 0.5 0 0.2-0.2 0.1-0.4 0-0.6 0.1-0.8 0-0.7 0.1-0.8 0.1-0.8 0.2-2.7 0.2-2.6 0.2-2.7 0.2-2.7 0.1-0.6 0-0.7 0.1-0.7 0.1-0.7 0-0.1 0-0.1 0-0.7 0-0.6 0.2-0.5 0.2-0.5 0.2-0.4 0.1-0.4 0-0.5-0.1-0.5-0.2-2.1-0.1-2.1-0.2-2.1-0.2-2.1 0-0.3 0-0.3-0.1-0.3 0-0.4-0.1-1-0.1-1-0.1-1.1 0-1-0.1-0.8-0.2-0.6-0.3-0.4-0.6-0.5-0.7-0.7-0.7-0.5-0.7-0.4-0.9-0.3-0.6-0.1-0.5-0.2-0.6-0.3-0.4-0.3-1.7-1.4-1.6-1.4-1.6-1.3-1.7-1.4-0.4-0.5 0-0.4 0-0.6 0.2-0.7 0.1-1.1 0.1-1 0.2-1.1 0.1-1 0.4-2.9 0.3-2.8 0.4-2.9 0.3-2.7 0.8 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0.1 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 1.2 0 0.3 0.1 0.1 0.2 0.3 0.2 0.5 0.1 1.3-0.1 1.1 0.4 0.9 1 0.8 1.2 0.6 1.1 0.7 2.3 0.3 0.6 1.2 1.5 0.3 0.5 0.1 0.3 0.1 0.2 0 0.2 0.2 0.2 1 0.6 0.3 0.4 0.7 0.3 1.2 0.3 0.9 0.6 0.6 0.2 0.7 0.1 0.5 0.2 1.2 0.9 0.4 0.3 0.2 0.3 0.2 0.6 0.2 0.3 0.5 0.3 0.4 0.2 0 0.2 0.5 0.1 0.5 0.4 2.2 2.6 0.2 0.7 0.3 0.4 2.2 1.4 0.4 0.2 0.3 0.1 0.6 0.8 0.6 0.5 0.5 0.3 0.5 0.3 0.3 0.7 0.4 1.2 0.3 0.4 0.7 0.4 1 1.2 2.3 1.8 1.1 1.4 0.4 0.3 0.8 0.2 1.7 0.9 0.2 0.1 0.1 0.2 0.2 0.2 0.3 0.2 0.1-0.1 0.1 0 0.2-0.3 0.1 0 0.4 0.1 0.1 0 0.2 0.1 0.3 0.5 0.3 0.1 0.3 0 0.2 0.1 0.2 0.3 0 0.3 0.1 0 0.1 0 0.4 0.5 0.2-0.3 1.3 1.6 0.6 0.3 0.5 0.1 0.6 0.3 0.6 0.4 0.4 0.5 0 0.4 0.1 0.3 0 0.4 0.2 0.3 0.3 0.1 0.9 0.1 0.2 0.1 0.2 0.4 0.9 1 0.3 0.6 0.1 0.3 0 0.7 0.1 0.4 0.5 0.2 0.1 0.2 0 0.2-0.2 0.4 0 0.2 0 0.4 0.3 0.4 0.1 0.4-0.1 0.5 0 0.2 0 0.1 0.3 0.4 0.2 0.3 0.4 0.2 0.1 0.2 0.1 0.3 0 0.4 0.1 0.3 0.1 0.1 0.6 0.4 0.4 0.8 0.4 0.9 0.3 0.7 0.2 0.1 0.5 0.3 0.3 0.2 0.6 1.2 0.4 0.5 0.1 0.8-0.1 1.2-0.1 0.8-0.4 1.1-0.1 0.7 0.1 0.8 0.5 1.8 0 0.3-0.1 0.5 0.1 0.4 0.1 0.1 0.4 0.5 0.1 0.1 0.1 0.4 0.5 0.6 0.4 1.6 0.1 0.3 0.6 0.6 0.5 0.4 0.4 0.5 0.2 1.4 0.5 0.9 0.2 0.5 0.1 0.5 0 0.3 0.1 0.3 0.4 0.5 1.4 0.9 0.4 0.4 0.1 0.2 0.1 0.3 0.1 0.3 0.2 0.2 0.2 0 2.3 1.5 0.3 0.5 0.5-0.3 0.8 0 0.8 0.2 0.4 0.6 0.7 0.5 0.3 0.1 0.1 0.2 0.6 1.2 0.9 1 0.6 0.5 1 0.5 1.4 1.6 1.1 0.6 2.6 0.9 1.8 0.4 2 0.1 0.3 0.1 0.3 0.2 0.2 0.4-0.3 0.7 0.2 0.2 0.4 0.1 0.2 0.1 1.4 1.2 0.8 0.4 2.5 0.6 0.8 0 0.2 0 0.3 0.2 0.1 0.2 0.1 0.3 0.1 0.3 1.5 1.4 1.2 0.7 0.4 0.1 0.2 0.2 0.8 0.8 0.5 0.1 0.3-0.2 0.2-0.3 0.3 0 0.4 0.5 0.1-0.1 0.4-0.1 0 0.2-2.3 4.6-2.4 4.6-2.4 4.6-2.3 4.5-0.9 1.8-0.9 1.7-0.8 1.7-0.9 1.7-1.2 2.4-1.2 2.3-1.2 2.3-1.3 2.3-0.9 1.6 0.2 1.1 0.2 0.7 0.1 0.7 0.2 0.7 0.3 1.5 0.4 1.4 0.3 1.5 0.3 1.5 1.5 6.2 1.5 6.2 1.5 6.3 1.5 6.2 0.4 1.8 0.4 1.8 0.4 1.8 0.4 1.8-2.2-0.9-2.3-1-2.2-0.9-2.3-0.9-0.7-0.3-0.6-0.2-0.7-0.1-0.7 0.1-1.1 0-1.2 0.1-1.1 0.1-1.1 0.4-1.2 1.1-1.1 1.3-0.9 1.5-1 1.4-1.3 1.8-1.3 1.7-1.3 1.8-1.3 1.7-1.1 1-1.1-0.3-1.2-1-1-0.9-1.4-1.1-1.6-0.8-1.6-0.5-1.7-0.4-0.7-0.1-0.7-0.1-0.7-0.1-0.6 0.1-0.4 0.4-0.4 0.6-0.3 0.4-0.5-0.3-0.4-0.5-0.7-1-0.6-0.8-0.4-0.4-0.8 0.5-0.8 0.4-0.8 0.4-0.9 0.4-0.5 0.3-0.9 0.5-0.8 0.4-0.6 0.1-0.8-0.4-0.8-0.5-0.9-0.4-0.8-0.5-0.8-0.5-0.8-0.4-0.8-0.5-0.8-0.4-0.7-0.5-0.5-0.5-0.5-0.6-0.6-0.6-0.4-0.7-0.4-0.7-0.5-0.5-0.7 0.1-0.7 0.2-0.8 0-0.7-0.1-0.8 0-1.2-0.7-1.1-0.8-1.1-1-1.1-0.8-0.5-0.4-0.4-0.3-0.4-0.3-0.5-0.4-0.1 0.3-0.2 0.2-0.2 0.2-0.1 0.3-0.3 0.6-0.3 0.6-0.3 0.6-0.3 0.6-0.3-0.4-0.4-0.5-0.4-0.2-0.4 0.2-0.4 0.7-0.1 0.9 0 0.9 0 0.8 0 0.4-0.1 0.4 0 0.5-0.2 0.2-0.4 0.3-0.6 0.5-0.4 0.4-0.1 0.5 0.2 0.7 0.2 0.6 0.2 0.7 0.2 0.6 0.1 0.7-0.1 0.4-0.3 0.3-0.6 0.2-1.3 0.4-1.2 0.4-1.3 0.4-1.2 0.3-0.9 0.7-0.1 0.9 0.3 1 0.4 1 0.4 1 0.5 1.1 0.2 1.2-0.1 1.1-0.2 0.7-0.2 0.7-0.2 0.6-0.4 0.6-0.4 0.4-0.5 0.1-0.5-0.1-0.6 0-0.9 0.5-0.3 1-0.1 1.1 0 1.2 0 0.9-0.1 0.9 0 0.8-0.1 0.9-0.1 0.6-0.2 0.4-0.4 0.3-0.4 0.4-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.1-0.6 0.5-0.5 0.5-0.5 0.5-0.6 0.4-0.5 0.5-0.5 0.6-0.6 0.5-0.5 0.4-0.6 0-0.6 0-0.7-0.2-0.5-0.1-0.8-0.1-0.8-0.1-0.9 0-0.8-0.1-0.8-0.7-0.8-0.6-0.9-0.5-0.9-0.5-0.6-0.5-0.5-0.7-0.4-0.7-0.5-0.7-0.7-0.6-0.7-0.5-0.8-0.5-0.8-0.4-0.4-0.1-0.3-0.1-0.1-0.2-0.1-0.5 0-0.4-0.1-0.4-0.1-0.5-0.1-0.4-0.2-0.4-0.3-0.1-0.4-0.1-0.3-0.3 0-0.1-0.1-0.2 0-0.3-0.1-0.2-0.1-0.5-0.1-0.5-0.1-0.5-0.1-0.5-0.3-0.9-0.5-0.8-0.6-0.5-0.9-0.2-1.9-0.4-2-0.4-1.9-0.5-2-0.4-0.3 0-0.3-0.1-0.3-0.1-0.3 0-0.9-0.2-0.5-0.2-0.2-0.5-0.2-0.9-0.2-1.4-0.2-1.5-0.1-1.4-0.2-1.5-0.2-1.7-0.1-2-0.3-1.9-0.5-1.5-0.5-0.6-0.6-0.6-0.6-0.7-0.6-0.7-0.6-0.9-0.6-0.9-0.7-1-0.4-1 0-0.8 0-0.9-0.2-0.7-0.7-0.3-1.4-0.3-1.6-0.3-1.4-0.7-0.9-1.2-0.3-0.6-0.4-0.5-0.4-0.3-0.6-0.1-0.7 0.1-0.7 0-0.7-0.2-0.3-0.6-0.6 0.8-0.7 0.8-0.6 0.8-0.8 0.7z\",\n\tMXCMX:\n\t\t\"M593.3 463.3l-0.1-0.1-0.1-0.1-0.1 0-0.1-0.2-0.2-0.4-0.2-0.5 0-0.6 0-0.5 0-0.1 0-0.1-0.1-0.1-0.1 0-0.1-0.1-0.3-0.1 0-0.3 0.1-0.3 0.2-0.2 0-0.1 0-0.1-0.1-0.1-0.1-0.1-0.1-0.6 0.2-0.7 0.3-0.7 0.2-0.6 0.5 0.1 0.5 0.1 0.4-0.2 0.2-0.5 0.1-0.1 0-0.1 0.1-0.1 0.3-0.5 0.3-0.5 0.4-0.4 0.3-0.5 0.1-0.2 0.1-0.1 0.2-0.2 0.1-0.2 0.1-0.1 0.1-0.1 0.2-0.1 0.2 0 0.3-0.2 0.1-0.3-0.1-0.2-0.4-0.2 0.3-0.2 0-0.3 0-0.3 0.3-0.3 0.1-0.1 0.2-0.2 0.2-0.2 0.1-0.2 0.1 0.1 0 0.1 0.1 0 0.1 0.1 0.2 0.2 0.2 0.2 0.1 0.2 0 0.3 0 0.1 0 0.1 0 0.4 0.2 0.3 0.2 0.3 0.3 0.2 0.1 0.2 0.1 0.2 0.1 0.3 0.2 0.2 0 0.1 0.1 0.1 0.1 0.2 0 0.1 0 0.1 0.1 0 0.2 0.3-0.1 0.3-0.2 0.2-0.3 0.2 0.1 0.1 0.1 0.2 0.1 0.1 0.1 0.1-0.1 0.1-0.1 0-0.1 0.1-0.1 0.1 0.4 0.5 0.5 0.2 0.6 0.3 0.5 0.3 0.1 0.2 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.1 0 0.1 0 0.1 0.2 0.4 0 0.4 0.1 0.4-0.1 0.4 0 0.3-0.1 0.4 0 0.3-0.1 0.4 0.2 0.5 0.2 0.4 0.3 0.5 0.1 0.5 0 0.1-0.1 0.4-0.1 0.4-0.3 0.3-0.2 0.3-0.4 0-0.4 0-0.4 0-0.3 0.1-0.3 0.3-0.2 0.3-0.3 0.3-0.3-0.2-0.5-0.3-0.5-0.3-0.6-0.3-0.6-0.1-0.2 0-0.2 0-0.2-0.1-0.3 0-0.9-0.1-1-0.2-0.9-0.3-0.7-0.7z\",\n\tMXCOA:\n\t\t\"M468.6 229.3l-0.4-1.8-0.4-1.8-0.4-1.8-0.4-1.8-1.5-6.2-1.5-6.3-1.5-6.2-1.5-6.2-0.3-1.5-0.3-1.5-0.4-1.4-0.3-1.5-0.2-0.7-0.1-0.7-0.2-0.7-0.2-1.1 0.9-1.6 1.3-2.3 1.2-2.3 1.2-2.3 1.2-2.4 0.9-1.7 0.8-1.7 0.9-1.7 0.9-1.8 2.3-4.5 2.4-4.6 2.4-4.6 2.3-4.6-0.1 0.5 0.4 0.2 1.7 0 1.6 0.4 1.1 0.2 0.7-0.4 0.4-0.8 0.1-1.2 0.3-0.1 0.1 0.1 0.2-0.6 0.1-0.3 0.3-0.2 1.1-0.6 0.2-0.2 0.3-0.3 0.8-1.7 0.5-0.5 0.6 0.3 0.2-0.2 1.3-1 0.8-0.2 0.3-0.1-0.3-0.4-0.7-0.4-0.2-0.4 0-0.4 0.4-1.2 0-0.6 0.1-0.4 0.2-0.2 0.3-0.3 0.2-0.1 0.1 0.1 0.2-0.1 0.3-0.1 0-0.2-0.2-0.4 0-0.2 0.3-0.5 0-0.3-0.1-0.4-0.1-0.4 0.1-0.4 0.1-0.4 0.2-0.3 0.9-2.4 0.3-0.2 0.1-0.3-0.1-0.4 0.3-0.1 0-0.2-0.1-0.4 0.3-0.1 0.2-0.2 0.3-0.6 0-0.1 0.4-0.9 0.2 0 0.1-0.5 0.8-1.4 0.1-0.4 0-0.3 0.1-0.2 0.2-0.3 0.2 0 1.1 0 0.5-0.1 1-0.6 0.6-0.2 0.1 0.1 0.1 0.3 0.2 0.1 0.2 0 0.1-0.1 0-0.1 0.3-0.2 0.2-0.5 0.3 0 3.1 0.2 0-0.1 0.7-1 0.1-0.3 0.1-0.9 0.1-0.3 0.2-0.3 0.4 0 0.3-0.2 0.3-0.6 0.2-0.1 0.6 0.1 0.4 0.4 0.3 0.3 0.5-0.2 0.2 0.6 0.4 0.2 1 0.1 1.3 0.8 0.4 0.2 1 0.5 2.7-0.3 0.8 0.2 0.4-0.4 0.5 0.1 0.4 0.3 0.4 0.2 0.2 0 0.3 0 0.3-0.1 0.2-0.2 0.2-0.1 0.3 0 0.5 0.2 1 0 0.3-0.2 0.2 0 0.1 0.3 0.2 0.2 4.7 0.7 1.5-0.2 0.4-0.2 0.4-0.3 0.1-0.7 0.1-0.1 0.2 0.1 0.2 0.2 0.1 0.3-0.1 0.2-0.2 0.6-0.1 0.2 0.6 0.2 0.4-0.3 0.5-0.4 0.5-0.2 0.3 0.1 0.2 0.5 0.3 0.1 0.3 0.1 0.3-0.1 0.3-0.1 0.2-0.1-0.1 0.4 0.1 0.4 0.2 0.4 0.5 0.8 0.1 0.5 0.4 0.8 0.2 0.3 0.2 0.3 0.4 0.2 0.8 0 0.2 0.1 0 0.6-0.3 0.7 0 0.4 0.3 0.2 0.5-0.5 0.7-0.4 0.7-0.1 0.5 0.4 0 0.9-0.2 1 0.1 0.4 0.2 0.3 0.4 0.1 0.3 0 0.2 0.2 0.6 0.7 0.8 0.5 1.9 0.6 0.9 0.3 0.2 0.6 0.1 0.9 0.1 0.5 0.2 0.3 0.2 0.3 0.3 0.3 0.3 0.2 2.1 0.9 0.7 0.7 0.5 0.7 0.3 0.2 1.3 0.6 0.6 0.5 0.4 0.4 0.6 1.2-0.2 0.7 0.2 0.4 1.5 1.3 0.1 0.1 0.1 0.3 0.3 0 0.4 0.1 0.3 0.1 0.2 0.5 0.2 1.9 0.6 1.3 0.1 0.6-0.2 0.7 0.2 0.2 0.1 0.3 0 0.4 0 0.4 0.2 0.2 0.3 0.3 0.4 0.3 0.1 0.5 0.1 0.2 0.4 0.2 0.2 0.1 0.1 0.2-0.2 0.5 0.1 0.2 0.2 0.1 0.4 0 0.2 0.1 0.1 0.2 0.2 0.3 0.1 0.2 0.2 0.3 0.7 3.2 0.3 0.7 1.1 1.4 0 0.6 0.3 0.2 0.7 0.3 0.2 0.3 0.2 0.3-0.1 0.8 0 0.3 0.4 0.7 0.6 0.4 1.2 0.5-0.8 0.4-0.2 0.2 0.1 0.4 0.2 0.3 0.2 0.2 0.1 0.1 0.1 1.2 0.3 1.2 0.8 1.1 0.5 0.7 0 0.5-0.2 0.6 0.3 0.7 0.5 0.5 0.5 0.4 0.8 0.1 0.2 0.1 0 0.3 0.1 0.4 0.1 0.4 0.2 0.2 0.5 0.1 2.8 1.5 0.5 0.5 0.3 0.7 0 0.5 0.1 0.2 0.4 0.4 0.4 0.4 0.2 0 0 0.2-0.1 0.2 0 0.2 0.1 0.6 0.2 0.4 0.3 0.4 0.4 0.5 0.5 0.2 0.6 0.1 0.3 0.3-0.3 0.5 0.3 0.4 0.4 0.6 0.5 0.5 0.5 0.2 0 0.2-0.1 0.3-0.2 0.5 0.1 0.4 0.2 0.2 0.3 0.1 0.2 0.3 0 0.3-0.1 0.7 0.1 0.3 0.1 0.1 0.4 0.3 0.4 0.4 0 0.1 0.7 0.2-0.8 0.7-0.7 0.7-0.7 0.7-0.8 0.7-0.4 0.3-0.4 0.4-0.4 0.4-0.4 0.4-0.2 0.1-0.3-0.2-0.2-0.2-0.2-0.3-1-0.7-0.9-0.8-0.9-0.8-0.9-0.8-0.4-0.3-0.4-0.4-0.4-0.3-0.4-0.3-0.2 0.1-0.3 0.3-0.4 0.3-0.2 0.2-1 0.6-1.1 0.7-1 0.8-0.8 0.9-0.5 1-0.3 1.3-0.2 1.3-0.3 1.2-0.2 1.3-0.3 1.8-0.4 1.6-0.6 0.8-0.3 0.1-0.3 0.1-0.3 0.1-0.2 0-0.2-0.1 0-0.3-0.1-0.2-0.2-0.1-0.9 0.4-0.8 0.3-0.8 0.3-0.9 0.3-0.4 0.2-0.3 0.5-0.3 0.4-0.4 0.4-0.6 0.4-0.7 0.4-0.6 0.4-0.6 0.4-0.6 0.3-0.5 0.3-0.3 0.4 0 0.6 0.1 1 0.1 1 0.1 1 0.1 0.9 0.5 0.2 0.5 0.2 0.4 0.3-0.1 0.8 0.7-0.1 0.4-0.1 0.3-0.2 0.2-0.5-0.1-0.2-0.1-0.1-0.2-0.2 0-0.2 0.2-0.2 0.2 0 0.3 0 0.2-0.1 0.2-0.4 0.1-0.4 0.2-0.1 0.3 0.6 0.6 0.4 0.7 0.1 0.8 0.1 0.6 0.3 0.2 0.7 0 1 0 1 0 0.8 0 0.6 0 0.6 0 0.7-0.1 0.6-0.4 1.7-0.5 1.6-0.6 1.6-1 1.3-0.5 0.5-0.4 0.5-0.5 0.4-0.6 0.5-0.3-1-0.3-0.9-0.2-0.9-0.3-0.9-0.3 0.2-0.3 0.2-0.2 0.3-0.3 0.2-2 1.7-2 1.7-1.9 1.7-2 1.7-1.1 1-1.1 0.9-1.1 1-1 0.9 0.9 0.8 1.1 1 1 1.1 0.7 1.1 0.1 0.6 0.1 0.5 0.2 0.5 0.2 0.5 0.4 0.5 0.3 0.3 0.4 0.1 0.5 0 0.5 0.1 0.5 0.4 0.5 0.5 0.3 0.5 0.3 0.8 0.1 0.9 0 0.9 0.3 0.8 0.6 0.6 0.8 0.3 0.7 0.5 0.2 0.8-0.2 1.2-0.1 1.2 0 1.2 0.2 1.1 0.5 1.2 0.6 1.1 0.7 1.1 0.8 1 0.5 0.6 0.5 0.3 0.5 0.1 0.8 0 0.3 0.1 0.2 0.1 0.2 0.1 0.3 0.3 0.1 0.3 0 0.3-0.1 0.4 0.1 0.3 0.3 0.1 0.4 0 0.5 0 0.4 0.2 0.2 0.3 0.1 0.4 0 0.4 0 0.4-0.8-0.2-1-0.5-0.9-0.3-0.8 0.2-0.1 0.6 0.8 0.5 1.1 0.4 0.7 0.6 0 0.2 0.1 0.1 0 0.2 0.1 0.1 0.7 0.8 1.1 0.3 1 0.2 0.8 0.7 0 0.3-0.1 0.2-0.1 0.3 0.3 0.3 0.5 0 0.6-0.2 0.5-0.1 0.6-0.1 0.5 0.1 0.5 0.1 0.5 0 0.5 0 0.6 0.1 0.3 0.1 0.2 0.2 0.4 0.4 0.8 0.4 0.9 0.6 0.3 0.5-0.9 0.2-0.2 0.1-0.3 0.1-0.3 0.2-0.1 0.2 0 0.3 0.1 0.4 0 0.4 0 0.2-0.4 0.2-0.6 0-0.6-0.1-0.5 0-0.7 0.3-0.7 0.1-0.6 0-0.7-0.2-0.7-0.2-0.7-0.3-0.8-0.3-0.7-0.1-1.9 0-1.8 0.5-1.7 1-1.6 1.1-0.6 0.8-0.9 1.3-0.3 1.2 0.6 0.5 0.6 0.1 0.5 0.4 0.4 0.5 0.5 0.4 0.4 0.6-0.1 0.5-0.5 0.4-0.6 0.3-0.6 0.5-0.1 0.5 0.2 0.6 0.2 0.9 0.3 0.8 0.1 0.7 0 0.7-0.1 0.8-0.4 1.5-0.5 1.5-0.4 1.4-0.3 1.5-0.6-0.4-0.5-0.3-0.6-0.3-0.5-0.3-0.6-0.2-0.5 0.1-0.5 0.1-0.6 0.2-1-0.1-1.2-0.5-1.1-0.7-0.7-0.9-0.3-0.5-0.1-0.5-0.2-0.6-0.2-0.5-0.3-0.5-0.3-0.5-0.4-0.5-0.4-0.4-1-0.7-0.9-0.2-1.1 0.2-1.1 0.2-0.1-0.2 0-0.2 0-0.2 0-0.2-0.6 0.5-0.6 0.6-0.6 0.7-0.5 0.6-0.5 0.3-0.6 0.1-0.6-0.1-0.6 0-0.9 0-0.8-0.1-0.8 0-0.8-0.1-0.3-0.3-0.3-0.6-0.3-0.7-0.1-0.6 0.5 0.2 0.6 0.2 0.6 0.1 0.6 0.1-0.1-0.5 0-0.7-0.2-0.7-0.2-0.4-0.4-0.3-0.5-0.4-0.5-0.2-0.4 0-1.1 0-1.2-0.3-1-0.6-0.7-0.9-0.4-0.8-0.5-1.1-0.5-1-0.6-0.6-1-0.3-1-0.3-1.1-0.3-1-0.4-1.2-0.3-1.2-0.4-1.2-0.4-1.2-0.3-0.8-0.1-0.8 0.1-0.9 0.2-0.8 0.1-2.1 0.2-2.1 0.2-2.1 0.3-2.2 0.2-0.9 0.1-0.6 0.1-0.4 0.4-0.5 0.8-0.7 0.9-0.6 0.8-0.7 0.8-0.6 0.9-0.4 0.6-0.6 0.9-0.7 0.7-0.6 0.1-0.1 1.4 0 1.3 0 1.4-0.1 1.3-0.6-0.5-0.6-0.5-0.7-0.5-0.6-0.4-1.1-0.5-1.2-0.5-1.3-0.3-1.2-0.2-1.2-0.3-1.3-0.5-1.2-0.8-0.7-1.1-0.1-1.3 0-1.2-0.1-1.3-0.5-1-0.9-0.7-1.2-0.7-1.1-0.7-0.7-1-0.3-0.8-0.4-0.6-0.4-0.5-0.6-0.5-0.4-0.4-0.4-0.3-0.2-0.4-0.1-0.5 0.2-0.9 0.2-0.8 0.5-0.8 0.5-0.8 0.2-0.1 0.4-0.1 0.3-0.1 0.2-0.2-0.1-0.3-0.2-0.4-0.3-0.3-0.3-0.3-0.5-0.4-0.3-0.5-0.3-0.5 0-0.7 0.1-0.5 0.3-0.4 0.4-0.3 0.4-0.3 0.3-0.2 0.3-0.2 0.3-0.1 0.3-0.2 0.2-0.4 0.3-0.3 0.2-0.3 0.3-0.3 0.3-0.5 0.1-0.4 0.3-0.4 0.5-0.3 0.4-0.5 0-0.9 0-1-0.1-0.7 0-0.2 0-0.2 0-0.1 0-0.2-0.1-0.9-0.1-1-0.1-0.9-0.1-0.9-0.2-1.6-0.1-1.7-0.1-1.6 0.1-1.6 0.5-1.6 0.7-1.4 0.7-1.5 0.3-1.6-0.4-1.6-1.2-1.4-1.4-1.3-1.3-1-1.1-1-1.2-1-1.1-1-1.2-1-0.3-0.4-0.4-0.3-0.3-0.3-0.4-0.3z\",\n\tMXCOL:\n\t\t\"M148.6 487.2l1.5 0 0.1 0 0 0.2-0.1 0.3-0.1 0.1-0.2 0.1-0.2 0.1-0.2 0-1 0.1-0.5-0.2 0-0.4 0.7-0.3z m109.9-13.5l0.4 0.1 0.4 0.5 0.2 0.5 0 0.6-0.3 0.5-0.5 0-0.6 0-0.5 0.3-0.5-0.4-0.4-0.4-0.4-0.2-1.2-0.6 0-0.2 0.1-0.5 0.3-0.7 0.4-0.6 1.1-1 0.6 0.2 0.6 0.6 0.5 0.6-0.2 0.7z m3.8-16.7l0.3 0.2 0.2 0.3 0.3 0.6-0.7 0.5-0.4 0.3-0.1 0.3 0 0.1-0.1-0.1-0.1-0.2 0-0.3 0.1-0.3 0.4-0.6 0.1-0.3 0-0.5z m203 20l-1.5-1.5-4.5-3.3-0.8-0.8-3.2-1.6-2.5-1.3-1.8-0.6-0.9-0.3-0.6-0.3-0.6-0.2-0.5-0.2 0.1-0.9 0.6-0.1 0.2-0.3-0.1-0.5-0.7-0.5-0.3-0.1-0.3 0.4-0.2-0.2 0.1-0.5-0.4-0.2-0.5 0.1-0.3 0.2 0.1 0.5-0.2 0-0.2-0.2-0.3-0.2-0.3 0.4-0.4 0.3-0.3-0.7-1-0.4-0.5-0.3-2.6-0.6 0-0.7 0.4-0.4 0.4-0.4 0.4-0.4 0.3-0.7 0.1-0.4 0.3-0.2 0.8 0.1 0.2 0.2 0.3 0.3 0.2 0.1 0.3-0.1 0-0.2 0-0.2 0-0.2 0.1-0.2 0.1-0.2 0.2-0.2 0.3-0.1 0.2-0.1 0.4-0.2 0.2 0 0.2 0.2 0.3 0.3 0.3 0 0.4-0.1 0.4-0.2 0.3 0 0.3-0.1 0.3 0 0.3-0.1 0.2-0.1 0.5-0.4 0.5-0.4 0.5-0.1 0.7 0 0.5 0 0.3-0.4 0.2-0.5 0.2-0.6 0.3-0.4 0.4-0.2 0.4-0.3 0.1-0.6 0.1-0.7 0.2-0.5 0.4-0.5 0.6-0.5 0.3-0.3 0.3-0.4 0.4-0.4 0.3-0.3 0.1 0.1 0 0.1 0.1 0.1 0 0.2 0 0.2 0.1 0.1 0 0.1-0.1 0.1 0.7 0.5 0.8 0.4 0.7 0.4 0.8 0.5 0.4 0.3 0.6 0.2 0.6 0.3 0.5 0.2 0.6 0.2 0.5 0.2 0.5-0.1 0.4-0.6 0.4-0.1 0.4 0 0.5 0 0.4-0.1 0.8-0.4 0.6-0.7 0.6-0.7 0.7-0.4 0.4 0.4 0.3 0.6 0.2 0.7 0.2 0.6 0.3 0.5 0.5 0.3 0.5 0.3 0.4 0.5 0.1 0.4 0.1 0.3 0.2 0.3 0.3 0.2 0.2 0.2 0.4 0.1 0.3 0.2 0.1 0.2 0 0.3-0.1 0.3-0.2 0.3-0.1 0.4 0 0.5 0.1 0.6 0.1 0.6 0.1 0.5-0.2 0.9-0.4 1.1-0.2 1.1 0.1 0.8 0.5 0.7 0.3 0.7 0.3 0.8 0.1 0.8-0.3 0-0.2 0.2-0.1 0.4-0.1 0.3-0.1 0.1-0.2 0-0.2 0-0.1 0.1-0.1 0.1 0 0.1 0.1 0.2 0 0.1-0.2 0.1-0.4 0.2-0.4 0.2-0.2 0.2-0.3 0.2-0.3 0.1-0.2-0.1-0.4-0.2-0.1 0.1-0.1 0.1-0.1 0.2 0.1 0.2 0 0.1 0 0.2 0 0.1 0 0.1-0.2 0.4 0 0.4 0 0.4-0.2 0.4-0.3 0.4-0.3 0.1-0.4 0-0.5 0.2-0.2 0.3-0.2 0.4-0.1 0.3-0.1 0.4-0.2 0.5-0.3 0.3-0.4 0.3-0.3 0.2z\",\n\tMXDUR:\n\t\t\"M373.6 261.4l0.8 0.1 0.9 0 0.8 0.1 0.8 0.1 0.5 0.1 0.7 0.2 0.6 0 0.6 0 0.5-0.4 0.6-0.5 0.5-0.6 0.5-0.5 0.6-0.4 0.5-0.5 0.5-0.5 0.6-0.5 0.1-0.1 0.1-0.1 0.2-0.1 0.1-0.1 0.4-0.4 0.4-0.3 0.2-0.4 0.1-0.6 0.1-0.9 0-0.8 0.1-0.9 0-0.9 0-1.2 0.1-1.1 0.3-1 0.9-0.5 0.6 0 0.5 0.1 0.5-0.1 0.4-0.4 0.4-0.6 0.2-0.6 0.2-0.7 0.2-0.7 0.1-1.1-0.2-1.2-0.5-1.1-0.4-1-0.4-1-0.3-1 0.1-0.9 0.9-0.7 1.2-0.3 1.3-0.4 1.2-0.4 1.3-0.4 0.6-0.2 0.3-0.3 0.1-0.4-0.1-0.7-0.2-0.6-0.2-0.7-0.2-0.6-0.2-0.7 0.1-0.5 0.4-0.4 0.6-0.5 0.4-0.3 0.2-0.2 0-0.5 0.1-0.4 0-0.4 0-0.8 0-0.9 0.1-0.9 0.4-0.7 0.4-0.2 0.4 0.2 0.4 0.5 0.3 0.4 0.3-0.6 0.3-0.6 0.3-0.6 0.3-0.6 0.1-0.3 0.2-0.2 0.2-0.2 0.1-0.3 0.5 0.4 0.4 0.3 0.4 0.3 0.5 0.4 1.1 0.8 1.1 1 1.1 0.8 1.2 0.7 0.8 0 0.7 0.1 0.8 0 0.7-0.2 0.7-0.1 0.5 0.5 0.4 0.7 0.4 0.7 0.6 0.6 0.5 0.6 0.5 0.5 0.7 0.5 0.8 0.4 0.8 0.5 0.8 0.4 0.8 0.5 0.8 0.5 0.9 0.4 0.8 0.5 0.8 0.4 0.6-0.1 0.8-0.4 0.9-0.5 0.5-0.3 0.9-0.4 0.8-0.4 0.8-0.4 0.8-0.5 0.4 0.4 0.6 0.8 0.7 1 0.4 0.5 0.5 0.3 0.3-0.4 0.4-0.6 0.4-0.4 0.6-0.1 0.7 0.1 0.7 0.1 0.7 0.1 1.7 0.4 1.6 0.5 1.6 0.8 1.4 1.1 1 0.9 1.2 1 1.1 0.3 1.1-1 1.3-1.7 1.3-1.8 1.3-1.7 1.3-1.8 1-1.4 0.9-1.5 1.1-1.3 1.2-1.1 1.1-0.4 1.1-0.1 1.2-0.1 1.1 0 0.7-0.1 0.7 0.1 0.6 0.2 0.7 0.3 2.3 0.9 2.2 0.9 2.3 1 2.2 0.9 0.4 0.3 0.3 0.3 0.4 0.3 0.3 0.4 1.2 1 1.1 1 1.2 1 1.1 1 1.3 1 1.4 1.3 1.2 1.4 0.4 1.6-0.3 1.6-0.7 1.5-0.7 1.4-0.5 1.6-0.1 1.6 0.1 1.6 0.1 1.7 0.2 1.6 0.1 0.9 0.1 0.9 0.1 1 0.1 0.9 0 0.2 0 0.1 0 0.2 0 0.2 0.1 0.7 0 1 0 0.9-0.4 0.5-0.5 0.3-0.3 0.4-0.1 0.4-0.3 0.5-0.3 0.3-0.2 0.3-0.3 0.3-0.2 0.4-0.3 0.2-0.3 0.1-0.3 0.2-0.3 0.2-0.4 0.3-0.4 0.3-0.3 0.4-0.1 0.5 0 0.7 0.3 0.5 0.3 0.5 0.5 0.4 0.3 0.3 0.3 0.3 0.2 0.4 0.1 0.3-0.2 0.2-0.3 0.1-0.4 0.1-0.2 0.1-0.5 0.8-0.5 0.8-0.2 0.8-0.2 0.9 0.1 0.5 0.2 0.4 0.4 0.3 0.4 0.4 0.6 0.5 0.4 0.5 0.4 0.6 0.3 0.8 0.7 1 1.1 0.7 1.2 0.7 0.9 0.7 0.5 1 0.1 1.3 0 1.2 0.1 1.3 0.7 1.1 1.2 0.8 1.3 0.5 1.2 0.3 1.2 0.2 1.3 0.3 1.2 0.5 1.1 0.5 0.6 0.4 0.7 0.5 0.6 0.5 0.6 0.5 0.1-1.3 0-1.4 0-1.3 0.1-1.4 0.6-0.1 0.7-0.7 0.6-0.9 0.4-0.6 0.6-0.9 0.7-0.8 0.6-0.8 0.7-0.9 0.5 1 0.5 0.9 0.6 0.9 0.6 0.9 0.8 1 1 1.1 0.7 1.1 0.3 1.2 0 2 0 2.1 0.1 2 0 2 0 0.5 0 0.6 0 0.5 0 0.5 0 0.9-0.1 0.4-0.3 0.2-0.8 0-1.3 0.2-1.3 0.2-1.3 0.4-1.3 0.4-1.3 0.2-1.2 0-1.3-0.2-1.3-0.2-2.6-0.6-2.5-0.5-2.6-0.5-2.5-0.6-1.1 0.3-1.3 0.4-1.2 0.6-0.8 0.8-0.1 0.5 0 0.6-0.1 0.5-0.2 0.4-0.5 0.3-0.6 0.1-0.6-0.1-0.5 0-0.4 0.1-0.4 0.3-0.2 0.4 0.1 0.5-0.2 0.4-0.4 0.2-0.6 0-0.4 0.1-0.4 0.3-0.2 0.4-0.2 0.4-0.2 0.4-0.6 1-0.5 0.8-0.6 0.7-0.9 0.6-0.2 0.1-0.3 0.1-0.2 0.1-0.2 0-0.7 0.4-1.2 0.5-1.1 0.6-0.3 0.5 0.3 0.6-0.1 0.7-0.1 0.8 0.2 0.8-0.1 1-0.9 0.4-0.9 0.2 0.2 0.8 0.5 0.5 0.5 0.5 0.3 0.6 0.1 0.7-0.2 0.5-0.2 0.4-0.3 0.4-0.2 0.4 0.3 0.8 0.7 0.5 0.7 0.5 0.4 0.8-0.1 0.6-0.3 0.8-0.4 0.5-0.5-0.2-0.7-0.7-0.6-0.2-0.6 0.4-0.4 0.9-0.1 0.6 0 0.6-0.2 0.6-0.3 0.5-0.8 0.6-0.9 0.6-0.8 0.6-0.9 0.6-0.6 0.4-0.3 0.3-0.2 0.5-0.1 0.8-0.1 1.2-0.1 1.2-0.1 1.2-0.1 1.2 0 0.6-0.1 0.8-0.1 0.8-0.3 0.4-0.6 0.3-0.4 0.2-0.2 0.5-0.1 0.7-0.1 3.4-0.1 3.4-0.1 3.4-0.1 3.3-0.2 1.3-0.3 1.3-0.4 1.2-0.4 1.2-0.5 1.6-0.4 1.6-0.5 1.6-0.4 1.6-0.2-1.2-0.1-1.2-0.2-1.3-0.2-1.2-1 0.5-1 0.4-1 0.5-1.1 0.4-0.7 0.1-0.9-0.4-0.8-0.5-0.7-0.5-0.8-0.7-0.4-0.9-0.3-1-0.2-1.1-0.1-0.4-0.1-0.4-0.2-0.4-0.2-0.3-0.6-0.4-1-0.6-0.9-0.5-0.6 0-0.9 0.6-0.8 0.7-0.9 0.6-0.8 0.6-0.6 0.6-0.8 0.6-0.8 0.5-0.8-0.1-0.1-0.6 0-1 0.1-0.9 0-0.8 0.1-0.8 0.2-0.5 0.3-0.4 0.5-0.6 0.4-0.4 0.7-0.6 0.7-0.7 0.2-0.4-0.3-0.8-0.3-0.8-0.4-0.8-0.3-0.9-0.3-0.6-0.3-0.4-0.4-0.3-0.6-0.3-1.3-0.7-1.4-0.8-1.3-0.6-1.4-0.5-1.5-0.2-1.5 0-1.5 0.1-1.5 0-0.1-0.9 0-0.9 0-0.9 0-0.9-1.2 0.1-1.2 0.1-1.2-0.1-1-0.5-0.4-0.4-0.5-0.6-0.5-0.5-0.4-0.3-0.2-0.2-0.2-0.3 0-0.3-0.2-0.2-0.4-0.4-0.4-0.2-0.4-0.3-0.3-0.5-0.1-0.3 0.1-0.4 0-0.4-0.1-0.3-0.3-0.4-0.2-0.4-0.1-0.3 0.1-0.5 0.1-0.3 0-0.3-0.1-0.3-0.2-0.3-0.2-0.2 0-0.3 0.1-0.2 0.1-0.3-0.3-0.7-0.5-0.7-0.5-0.6-0.1-0.7-0.5-0.1-0.4-0.1-0.5-0.1-0.4-0.2-0.5-0.5-0.3-0.6-0.1-0.7-0.2-0.7-0.2-0.6-0.3-0.5-0.3-0.5-0.1-0.5-0.1-0.6-0.1-0.5 0-0.5-0.1-0.6-0.2-1.2-0.2-1.3 0-1.2 0.1-1.2 0.4-1 0.5-0.9 0.4-1 0.3-1-0.7 0.2-0.7 0.2-0.6-0.2-0.5-0.5-0.4-0.8-0.4-0.8-0.3-0.8-0.3-0.8-0.3-0.8-0.4-1-0.4-0.9-0.5-0.7-0.7-0.7-0.7-0.6-0.7-0.7-0.8-0.6-0.2-0.2-0.3-0.3-0.4-0.1-0.3-0.2-1.2-0.2-1 0.2-1.1 0.5-0.9 0.8-0.4 0.4-0.3 0.5-0.3 0.4-0.3 0.4-0.5 0.2-0.5 0-0.4 0-0.5 0-0.6 0.1-0.5-0.1-0.4-0.2-0.6-0.4-0.5-0.4-0.5-0.5-0.5-0.5-0.5-0.5-0.3-0.4-0.1-0.5 0-0.5 0-0.5 0-0.7-0.1-0.5-0.2-0.5-0.3-0.6-0.2-0.3-0.2-0.4-0.2-0.4-0.1-0.4-0.3-0.5-0.2-0.4-0.4-0.3-0.4-0.4-0.6-1.1-0.4-1.2-0.6-1-1-0.6-0.5-0.3-0.4-0.4-0.2-0.5-0.3-0.6-0.4-0.3-0.4-0.1-0.4 0-0.5 0-0.5-0.1-0.4-0.1-0.4-0.3-0.2-0.6 0-0.4 0-0.4-0.1-0.4-0.2-0.4-0.4-0.3-0.5-0.1-0.5-0.2-0.4-0.3-0.3-0.4-0.3-0.6-0.1-0.7-0.2-0.5-0.5-1.3-0.4-1.4-0.4-1.3-0.4-1.3-0.3-1.5 0-1.5 0.2-1.5 0.2-1.5 0.2-1.3 0.3-1.5 0.3-1.4 0.6-1.2 0.6-0.6 0.5-0.5 0.5-0.5 0.3-0.7 0.3-0.6 0.5-0.5 0.5-0.5 0.4-0.5z\",\n\tMXGUA:\n\t\t\"M512.5 425.3l0.1-0.5 0.4-1 0.6-1 0.7-0.9 0.9-0.9 0.7-0.8 0.4-1-0.3-1.3 0-0.1-0.1-0.1 0-0.1-0.1 0-0.7-0.8-0.7-0.6-0.8-0.6-0.7-0.8-0.3-0.9 0.2-1 0.4-0.9 0.5-0.9 0.1-0.1 0.1-0.2 0.1-0.2 0-0.2 0.3-0.5 0.3-0.5 0.3-0.5 0.3-0.5 0.8-1.3 0.8-1.2 0.9-1.3 1-1.1 0.2-0.3 0.1-0.2 0.1-0.3 0.1-0.3 0.3-0.5 0.4-0.2 0.4-0.3 0.4-0.3 0.2-0.3 0.2-0.4 0.2-0.4 0.2-0.3 0.4-0.3 0.6 0 0.5 0 0.5 0 0.4 0 0.4-0.2 0.4-0.2 0.3-0.2 0.8-0.7 0.7-0.6 0.6-0.8 0.5-0.9 0.1-0.6 0.1-0.6-0.1-0.6-0.1-0.6-0.6-0.9-0.7-0.9-0.5-1-0.1-1.1 0.7-1 1.2-0.8 1-0.8 0.1-1-0.4-0.6-0.4-0.7-0.5-0.6-0.2-0.8 0.2-0.7 0.5-0.7 0.7-0.7 0.5-0.5 1.2 0.5 0.9 0.1 0.8-0.4 1-0.7 0.1 0 0.1-0.1 0.1 0 0.7-0.3 0.7-0.1 0.6 0.2 0.5 0.6 0.1 0.4-0.1 0.5 0.1 0.4 0.1 0.4 0.3 0.3 0.3 0.3 0.3 0.3 0.4 0.1 1 0.2 1-0.2 1.1-0.3 1-0.1 1 0 0.9 0.1 1 0.2 0.9 0.4 0.4 0.4 0.5 0.4 0.4 0.5 0.5 0.4 1.3 1.1 1.4 1.1 1.3 1 1.4 1.1 0.5 0.5 0.6 0.5 0.6 0.5 0.7 0.5 0.9-0.1 1.1 0.1 1-0.2 0.6-0.5 0.2-0.6 0.2-0.7 0.1-0.7 0.1-0.6 0.2-0.4 0.1-0.4 0.2-0.4 0.2-0.4 0.2-0.2 0.3-0.3 0.3-0.2 0.3-0.2 0.4 0 0.2 0.1 0.1 0.2 0.3 0.2 0.3 0.1 0.3 0.1 0.3 0.1 0.3 0.2 0.5 0.2 0.6 0.3 0.5 0.2 0.5 0.2 0.4 0.2 0.3 0.2 0.3 0.1 0.4 0.1 1 0.3 0.9 0.3 1 0.3 0.9 0.3 0.1 0 0 0.1 0.1 0 0.1 0 1.1 0.9 1.1 1.2 1.2 0.9 1.2 0.1 1.1 0 0.8 0.3 0.8 0.4 0.9 0.4 0 0.4-0.2 0.4 0 0.4 0.1 0.4 0.1 0.5 0 0.2-0.1 0.3-0.1 0.4 0.1 0.9 0.5 0.5 0.8 0.1 0.8 0.1 0.3 0.3 0.1 0.4-0.2 0.4-0.4 0.3-0.3 0.2-0.4 0.1-0.3 0.2-0.3 0.2-0.2 0.3-0.1 0.3-0.1 0.3-0.4 0.2-0.8 0.2-0.8 0.2-0.8-0.2-0.5-0.5-0.4-0.4-0.4-0.2-0.4-0.1-0.5-0.1-0.7 0-0.8 0.3-0.7 0.4-0.4 0.6-0.4 1.1-0.2 1.1-0.1 1.1-0.1 1.1 0 0.7-0.1 0.8-0.1 0.7-0.3 0.6-0.3 0.3-0.2 0.1-0.3 0-0.3 0.1-0.2 0.2-0.1 0.3-0.2 0.3-0.3 0.1-0.6 0-0.4-0.3-0.4-0.6-0.4-0.5-0.1-0.1-0.1 0-0.1-0.1-0.5 0-0.5 0.2-0.5 0.4-0.4 0.3-0.6 0.2-0.6 0-0.5-0.1-0.6-0.1-0.9-0.3-0.2-0.6-0.1-0.6-0.4-0.6-0.6 0.1-0.4 0.5-0.4 0.7-0.3 0.6-0.4 0.4-0.1 0.5-0.1 0.5 0 0.6-0.1 0.5-0.2 0.5-0.2 0.4-0.3 0.5-0.6 1.3-0.1 1.3 0.3 1.2 0.6 1.3 0.4 0.5 0.3 0.6 0.4 0.6 0.3 0.5 0.1 1.2 0 1.1 0.1 1 0.4 1.1 0.1 0.1 0.1 0.1 0.1 0.2 0.1 0.1 0.6 0.7 0.6 0.6 0.5 0.6 0.3 0.8 0.3 0.7 0.6 0.3 0.5 0.3 0.3 0.7 0.3 0.1 0.3 0.1 0.4 0.1 0.2 0.2-0.5 0.5-0.3 0.3-0.2 0.4-0.2 0.5-0.1 0.3-0.3 0.4-0.3 0.4-0.2 0.2-0.2-0.1-0.2 0-0.3 0-0.1 0-0.2 0.2 0.1 0.2 0.1 0.1 0 0.1-0.1 0.2-0.2 0.3-0.1 0.3 0 0.3 0.3 0.7 0.3 1.1 0 0.9-0.5 0.4-0.7 0-0.7 0-0.7 0.1-0.6 0.2-0.4 0.3-0.2 0.6-0.2 0.4-0.4 0.2-0.3-0.2 0-0.3 0-0.3-0.1-0.4-0.4-0.1-0.7 0-0.7 0.1-0.5 0-0.5 0-0.5 0-0.5 0.1-0.5 0-0.6 0-0.3 0.1-0.1 0.3-0.1 0.6-0.7-0.1-0.5 0-0.3-0.3-0.3-0.5-0.2-0.4-0.2-0.2-0.3-0.2-0.3-0.4-0.4 0.6-0.4 0.4-0.5 0.2-0.6 0.2-0.5 0.1-0.5 0.1-0.4-0.1-0.5-0.2-0.7-0.2-0.8-0.4-0.7-0.5-0.1-0.7 0.4-0.4 0.7-0.3 0.5-0.3 0.1-0.6-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1 0.1-0.3 0-0.2 0-0.3-0.1-0.2-0.6-0.2-0.7-0.1-0.8 0.1-0.6 0.2-0.4 0.1-0.3-0.1-0.4-0.2-0.3-0.3-0.6 0.2-0.3 0.6-0.2 0.8-0.4 0.6-0.6 0.2-0.6-0.1-0.6-0.1-0.5-0.3-0.4-0.1-0.3 0.1-0.4 0.1-0.4 0-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.3 0.1-0.2 0.1-0.3 0.2-0.3 0.1-0.8-0.5 0-0.7 0.2-0.9 0.1-0.9 0-0.2-0.1-0.2-0.1-0.2-0.1-0.1-0.1-0.2 0-0.1 0.1-0.1 0.1-0.1 0-0.2 0.1-0.2 0-0.1 0-0.3-0.1-0.2-0.3-0.1-0.1-0.1-0.1-0.3 0.3-0.4 0.5-0.3 0.6-0.3 0.2-0.4-0.1-0.5-0.6-0.4-0.6-0.1-0.5-0.1-0.4 0-0.2-0.2-0.1-0.3 0.1-0.4-0.5 0.1-1.1-0.1-0.5 0-0.3 0.1-0.6 0.3-0.2 0-1 0.1-0.2 0-0.1 0.3 0 0.3 0 0.3 0 0.3-0.1 0.3-0.3 0.4 0 0.2-0.2 0.5-0.7 0.9-0.3 0.4-0.4-0.3-0.6-0.1-1 0-0.8-0.2-0.2 0-0.3 0-0.3 0.3-0.2 0.1-0.2-0.1-0.4-0.3-0.3 0-0.3 0-0.3 0.3-0.3 0.1-0.7 0-0.3-0.2-0.2-0.3-0.3-0.8-0.1-0.1-0.1-0.1-0.1-0.1-0.3-2.8-0.2-0.7-0.4-0.3-0.5 0.2-0.3 0.8-0.4 0.2-0.3-0.3 0.1-0.6 0.5-1.2-3 0.5z\",\n\tMXGRO:\n\t\t\"M510.5 500.3l0-0.1 0.1-0.1 0.2-0.4 0.1-0.3 0.1-0.3-0.1-0.4-0.2-0.4-0.3-0.5-0.2-0.5 0-0.9 0-0.9 0.1-0.9 0.2-0.8 0.1-0.3 0-0.3 0.2-0.2 0.2-0.3 0.3-0.3 0.2-0.1 0.3-0.1 0.5 0 0.6 0 0.4-0.1 0.5-0.1 0.5-0.1 0.4 0 0.4 0.1 0.4-0.1 0.4-0.3 0.3 0 0.3 0 0.2 0.1 0.3 0 0.3-0.1 0.2-0.2 0-0.2 0.1-0.3 0.5-0.6 0.5-0.7 0.3-0.6 0-0.8-0.3-2.1-0.2-2.1 0.4-1.9 1.2-1.6 1-0.4 1.2 0 1.3 0.1 1.1 0 0.5 0.1 0.4 0.1 0.5 0.1 0.3 0.4 0.3 0.5 0.2 0.4 0.2 0.4 0.5 0.4 0.6 0.3 0.5 0.3 0.7 0.2 0.6 0.1 1.6-0.3 1.5-0.4 1.5-0.4 1.5-0.4 0.7-0.4 4.6 0.3 1.4-0.3 0.7 0 0.6 0.3 0.1 0.2 0 0.4 0.1 0.3 0.1-0.1 0.2-0.1 0.4 0 0.2 0.1 0.1 0.4 0.2 0.7 0.9-0.3 0.3-0.3-0.4-0.4 3.1 0 0.3 0.2 1 1.1 0.4 0.3 0.5 0.3 0.4 0.1 0-0.1 0.2-0.4 0-0.1 0.1 0.1 0.3 0.1 0.1 0 0.1 0.2 0.1 0.3 0.1 0.4-0.1 0.3-0.2 0.3-0.3 0.2-0.2 0.4 0 0.5 0.3 0.4 0.6 0.6 1-0.9 0.1 0 0.3 0.1 0.2 0.5 0.4-0.6 0.4-0.7 0.1-0.6-0.2-0.5-0.7-0.6-0.8-0.6-0.7-0.6-0.8-0.5-0.5-0.5-0.3-0.5-0.1-0.6 0-0.8-0.1-0.7-0.1-0.7-0.2-0.6-0.3-0.7-0.1-0.7 0.3-0.4 0.3-0.5 0.2-0.6-0.3-0.5-0.5-0.5-0.5-0.5 0-0.6 0.4-0.4 0.3-0.5 0.4-0.5 0.5-0.3 0.6 0.1 0.4 0.5 0.3 0.7 0.1 0.7 0.3-0.3 0.3-0.3 0.3-0.3 0-0.3 0.1-0.3 0.2-0.3 0.3-0.3 0.3-0.3 1.1 0.4 1 0.3 1.1 0.1 1.2 0 0.4 0.1 0.2 0.1 0.1 0.3 0 0.5 0.1 0.3 0.2 0.2 0.2 0.3 0 0.3-0.3 0.7-0.3 0.5 0 0.6 0.3 0.6 0.2 0.4 0 0.4 0 0.3-0.1 0.4 0.1 0.3 0.2 0.3 0.2 0.3 0.3 0.3 0.5 0.5 0.5 0.5 0.4 0.6 0.2 0.7 0 0.8-0.3 0.8-0.2 0.7 0.3 0.6 0.3 0.2 0.2 0.3 0.2 0.3 0.2 0.2 0.3 0.3 0.4 0.1 0.4 0 0.4-0.1 0.3-0.2 0.2-0.3 0.2-0.3 0.4-0.1 0.6-0.5 0.6-0.5 0.7-0.5 0.6-0.6 0.7-0.7 0.4-0.7 0.5-0.8 0.4-0.9 0-0.1 0.1-0.1 0.1-0.2 0.6-0.1 0.6-0.1 0.5-0.2 0.6-0.1 0.6-0.3 0.6-0.2 0.6-0.1 0.6-0.2 0.1-0.1 0.2 0 0.1-0.1 0.2 0 0.6-0.1 0.5-0.1 0.4 0.1 0.5 0.4 0.3 0.4 0.3 0.3 0.3 0.1 0.5-0.5 0.3-0.3 0.1-0.3 0-0.3 0-0.4 0.2-0.3 0.2-0.3 0.3-0.1 0.3-0.3 0.2-0.2 0.3-0.3 0.3-0.2 0.2-0.2 0.7-0.6 0.6 0.2 0.5 0.6 0.5 0.6 0.4 0.1 0.2 0.2 0.1 0.3 0.2 0.3 0.4 0.3 0.7 0.2 0.7 0 0.4-0.1-0.2 0.5-0.2 0.6 0.1 0.4 0.6 0.2 0.5 0.1 0.2 0.5 0.1 0.5 0.6 0.2 0.2 0.3 0.2 0.4 0.2 0.4 0.2 0.3 0.3 0.4 0.3 0.3 0.3 0.2 0.4 0 0.6 0 0.1 0.5 0.1 0.6 0.2 0.3 0.6 0 0.6 0 0.6 0 0.6 0 0.2-0.3 0-0.4 0.1-0.4 0-0.4 0.2-0.7 0.4-0.6 0.5-0.4 0.8 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0 0.3 0.1 0.4 0 0.3 0.1 0.4 0.2 0.3 0.2 0.2 0.2 0.2 0.1 0.2 0.1 0.3 0.3 0.8 0.7 0.7 0.6 0.7 0.2 1 0.1 0.5 0 0.4 0 0.5 0 0.5 0.2 0.4 0.1 0.3 0.2 0.4 0 0.4 0.2 0 0.2-0.1 0.2 0 0.2-0.1 0 0.5 0 0.3 0.2 0.4 0.3 0.3 0.5 0.3 0.4-0.2 0.3-0.3 0.4 0.2 0 0.6 0.1 0.6 0.2 0.5 0.4 0.2 0.5 0.1 0.7 0.1 0.7 0.1 0.3 0.2 0.4 1.4 0.7 1.1 1.1 0.7 1.3 0.6 0.6 0.1 0.6 0.2 0.6 0.1 0.6 0.1 0.2 0.1 0.3 0.2 0.3 0.1 0.2 0 0.9 0.2 1 0.1 1-0.1 0.9-0.2 0.5-0.1 0.3 0 0.3 0.1 0.4 0.3 0.4 0.4 0.4 0.5 0.4 0.4 0.4 0.4 0.5 0.6 0.1 0.5-0.2 0.5-0.3 0.7-0.2 0.5-0.2 0.6-0.1 0.6-0.1 0.5-0.1 0.4-0.1 0.4-0.1 0.4-0.1 0.4-0.2 0.8-0.1 0.7 0.1 0.7 0.4 0.6 0.2 0.1 0.1 0.2 0 0.1-0.2 0.2-0.3 0.3 0 0.4 0 0.4 0.1 0.4 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0 0 0.1 0.2 0.2 0.2 0.2 0.2 0.3 0.2 0.2 0.1 0.4-0.1 0.4-0.1 0.5-0.1 0.3 0.1 0.1 0 0.1 0.1 0.1 0.3 0.6-0.1 0.5-0.2 0.6-0.1 0.7 0.2 0.5 0.3 0.4 0.6 0.1 0.6 0.2 0.4 0.7 0.4 0.8 0.4 0.7 0.7 0.1 0.4 0 0.4 0 0.4 0 0.4 0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.1 0.1 0.9 1.1 0.9 1.1 0.9 1.2 0.8 1.2 0.2 0.3 0.1 0.3 0 0.3 0 0.4-0.1 0.3-0.1 0.3-0.1 0.3-0.2 0.3-0.2 0.4-0.2 0.4-0.3 0.4-0.3 0.4-0.1 0.3 0 0.3 0 0.3 0 0.3-0.1 0.6-0.1 0.5-0.1 0.6 0 0.5-0.1 0.5-0.2 0.4-0.3 0.3-0.4 0.3 0 0.1-0.1 0.1 0 0.1-0.1 0.1-0.2 0.2-0.1 0.1-0.2 0.1-0.2 0-0.4 0.3-0.3 0.1-0.4 0.1-0.5-0.1-0.3-0.1-0.4 0-0.4 0.1-0.3 0.1 0.2 0.9 0.2 0.8 0.2 0.8-0.3 0.9 0 0.1-0.1 0.1 0 0.1-0.1 0-0.6 0.2-0.4 0-0.5-0.1-0.5 0-0.8 0.3-0.4 0.6 0.1 0.6 0.4 0.7 0.4 1.1-0.2 0.9-0.6 0.8-0.7 0.7-0.7 0.4-0.7 0.1-0.8 0-0.8 0.1-0.8 0.2-0.5 0.2-0.5 0.4-0.5 0.5 0 0.1-0.4-0.2-0.1 0 0.1-0.1 0.1-0.1-0.1-0.3-0.4-0.6-1.1-0.9-2.3-2.1-1-1.5-0.9-0.9-0.1-0.2-0.2-0.2-0.4 0.1-0.5-0.2-0.2 0.2-0.2 0-0.3 0.1-0.4 0.1-0.2 0.2-0.1 0.2 0 0.1-1-0.2-0.5 0-1.1-0.4-5.7-1.8-4.6-1.3-2-0.5-3.4-0.5-1.8 0-1.4 0.1-0.9-0.2-0.8-0.3-0.7-0.2-0.8-0.4-0.7-0.3-1.6-1.3-0.7-0.5-0.2 0-0.1 0.2-0.4-0.1-0.1-0.2-0.3-0.1 0.3-0.1 0.3 0.1 0.1-0.2-0.2-0.2-0.1 0-0.2 0.1-0.3-0.1-0.2 0-0.2-0.2 0.2 0 0-0.3 0.2-0.3 0.1 0.1 0.2-0.1 0-0.2-0.2-0.3-0.2-0.1-0.4-0.1-0.5 0.2-0.3 0.2 0.1 0.2 0.2-0.1 0.2 0.2-0.3 0.2-0.4 0.1-0.1-0.2-0.2-0.7-0.2-0.1-0.7-0.7-0.1-0.3-0.9-0.5-2.1-0.8-1.4-0.4-1.5-0.5-2-0.7-2.4-1-7-2.5-2.6-0.8-1.7-0.6-1.9-0.8-1.6-0.6-1.9-0.5-1.6-0.6-1.5-0.5-1-0.5-0.4 0.1-0.2-0.3 0.3-0.2 0-0.6-0.5-0.6-1-0.8-1.9-1.2-0.3-0.7-2.3-1.3-2.4-0.9-1.3-0.6-1.8-0.6-0.1-0.4 0.4 0 0.1-0.6-0.2-0.4-0.3-0.4-1.1-0.9-0.8-0.1-0.8 0.2-0.1-0.4-0.4 0-0.3-0.3-0.4 0-0.1-0.6-0.5-0.2-0.8-0.2-0.1-1.1-0.7-1.1-0.8-0.5-1.3-1-0.4-0.8-0.4-0.4 0-0.5-1.1-1.3-1.3-0.6-0.4-0.2-1.8-1-1.7-0.8-1.3-0.4-1.8 0.2-0.3 0.5-0.6 0.5-0.4 0.5-0.5 0.2-0.2 0.2z\",\n\tMXHID:\n\t\t\"M615.4 394.2l0 0.1 0.1 0 0.1 0 0.4 0.3 0.5 0.3 0.5 0.4 0.5 0.3-0.5 0.7-0.5 0.6-0.4 0.6-0.1 0.9 0 0.2 0.1 0.2 0.1 0.2 0.2 0.1 0.6 0.2 0.5 0.5 0.4 0.7 0.5 0.6 0.3 0.2 0.4 0.3 0.4 0.1 0.4 0 0.6-0.4 0.7-0.6 0.5-0.6 0-0.6-0.1-0.5 0.4-0.1 0.3 0.3 0.2 0.5 0 0.8-0.3 0.8-0.3 0.8 0.3 0.6 0.8 0 0.6-0.5 0.5-0.3 0.6 0.9 0.3 0.1 0.2 0.1 0.2 0.3 0.2 0.3 0.2 0.2 0.2 0.1 0.3 0.1 0.1 0.3 0 0.3-0.2 0.5-0.2 0.4-0.1 0.3-0.2 0.1-0.1 0-0.1-0.1-0.1 0-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.3-0.2 0.3-0.2 0.2-0.2 0.3-0.2 0.2-0.4 0.7-0.2 1 0.1 1.1 0.2 0.8 0.1 0.2 0 0.1-0.1 0.1-0.2 0.1-0.7 0-0.7-0.2-0.6-0.4-0.6-0.4-0.4-0.2-0.3-0.1-0.4-0.1-0.4-0.1-0.4 0-0.5 0-0.4 0.2-0.2 0.4 0.1 0.4 0.2 0.2 0.2 0.3 0 0.4 0 0.3 0 0.3-0.2 0.2-0.3 0.2-0.4 0.1-0.4 0.1-0.3 0-0.4 0.1-0.3 0.5 0 0.4 0.3 0.3 0.5 0.1 0.4-0.1 0.4-0.3 0.3-0.2 0.3 0.2 0.1 0.5-0.1 0.5-0.3 0.6-0.3 0.4-0.6 0.6-0.7 0.5-0.7 0.5-0.4 0.7 0 0.5-0.1 0.6-0.1 0.6-0.2 0.5-0.2 0.3-0.3 0.3-0.3 0.2-0.2 0.3 0.1 0.7 0.4 0.7 0.5 0.7 0.4 0.7 0.6 1.3 0.9 0.2 1-0.5 0.8-1.1 0.1-0.5 0.2-0.5 0.2-0.5 0.3-0.3 0.5 0.4 0.4 0.5 0.3 0.1 0.5-0.6 0.4-0.5 0.4-0.4 0.4-0.4 0.3-0.4 0.4-0.6 0.5-0.6 0.5-0.5 0.5-0.5 0.6-1 1-1.3 1-1 0.9-0.3 0.1 0.1 0.1 0 0 0.1 0.1 0.1 0.2 0.4 0.4 0.1 0.5 0 0.3 0.3 0 0.4-0.1 0.3 0 0.3 0 0.3 0.2 0.2 0.1 0.2 0.1 0.1 0.2 0.2 0 0.5-0.2 0.4-0.3 0.4-0.1 0.4 0 0.5 0.1 0.5 0.3 0.4 0.3 0.3-0.1 0.1-0.2 0.3-0.2 0.2-0.2 0.2-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.2-0.1 0.2-0.6 0.3-0.7 0.3-0.6 0.4-0.3 0.5-0.2 0.4-0.2 0.3-0.3 0.4-0.2 0.4-0.3 0.2-0.5 0-0.5 0.1-0.4 0-0.2 0.1-0.1 0-0.1 0-0.1 0-0.4 0.4-0.2 0.5-0.1 0.6-0.2 0.5-0.2 0.3 0 0.3 0.2 0.3 0.3 0.2 0.1 0.2 0.2 0.2 0.2 0 0.3 0 1-0.5 1-0.1 0.7 0.3 0.4 1.2 0 0.3 0 0.2 0 0.3 0 0.3 0.3 0.5 0.3 0.5 0 0.5-0.5 0.6-0.7 0.5-0.4 0.7-0.3 0.8-0.2 0.9-0.2 0.3-0.3 0.4-0.2 0.3-0.2 0.3-0.1 0.1-0.1 0.1 0 0.1-0.1 0.1-0.5 0.7-0.4 0.7-0.1 0.7 0.2 0.7 0.7 1.1 0.7 1.3 0.7 1.2 0.8 1-0.8 0.1-0.7-0.3-0.6-0.3-0.6-0.4-0.1-0.1-0.1-0.2-0.1-0.2-0.2 0-0.4 0.2-0.1 0.1 0 0.2-0.1 0.2-0.3 0.3-0.2 0.3-0.3 0.3-0.2 0.4-0.3 0.7-0.3 0.8-0.5 0.3-0.6-0.3-0.1 0 0-0.1-0.1-0.1-0.1 0-0.6-0.1-0.6-0.1-0.6 0-0.6-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.4-0.4-0.4 0.2-0.4 0.4-0.4 0.3-0.5 0-0.4-0.3-0.4-0.3-0.4 0.1-0.3 0.3-0.3 0.3-0.3 0.1-0.4-0.1-0.1 0.3-0.1 0.3-0.2 0.2-0.4 0 0.1 0 0-0.1 0-0.1 0.3-0.5 0.3-0.5 0.3-0.5 0.2-0.6 0.1-0.3 0.2-0.4 0.2-0.4 0.1-0.4 0.1-0.3-0.1-0.3-0.2-0.3-0.3-0.4-0.1-0.3-0.2-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.2-0.2-0.1-0.2-0.1-0.1-0.2-0.2-0.1-0.1-0.2-0.2-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2-0.3-0.3-0.2-0.2 0-0.3 0.1-0.8 0.2-0.6 0-0.5-0.3-0.5-0.7-1-0.4-1.1 1.3-1.2 1.2-1.3-0.1 0-0.1-0.1-0.1 0-0.1-0.1-0.1 0.1-0.3 0-0.2 0.1-0.3 0-0.3 0.2-0.6 0.2-0.5 0.2-0.6 0.3-0.5-0.1 0-0.2-0.1-0.1 0-0.1 0 0.1-0.3 0.1-0.4 0-0.3 0-0.3-0.1-0.4-0.1-0.4-0.3-0.3-0.2-0.3-0.2-0.2-0.1 0-0.1-0.1-0.2-0.1-0.5-0.2-0.4 0-0.5 0-0.5 0.2-0.6 0.3-0.6 0.4-0.6 0.3-0.7 0.3-0.5 0-0.4 0-0.5 0.1-0.4 0.3-0.3 0.5 0 0.6 0 0.6-0.1 0.6-0.2 0.2-0.3 0.1-0.3 0-0.3 0-0.5 0.4-0.2 1-0.3 0.8-1-0.1-0.7 0.6-0.6 1-0.5 0.5-0.3-1 0-0.3 0-0.4-0.1-0.3-0.2-0.2-0.2-0.1-0.2-0.2-0.1-0.2-0.1-0.2 0.1-0.8-0.2-0.6-0.5-0.4-0.6-0.2-0.8-0.2-0.4-0.4-0.2-0.5 0.2-0.9 0.1-0.6 0.3-0.5 0.2-0.6 0.1-0.7 0-0.1-0.1 0 0-0.1-0.2-0.3-0.3-0.4-0.2-0.4-0.3-0.4-0.2-0.3-0.2-0.3-0.1-0.3-0.2-0.4-0.4-0.2-0.6 0-0.7 0-0.5 0.2-0.2 0.3-0.1 0.4-0.1 0.2-0.5-0.2-0.8-0.7-0.9-0.8-0.8-0.8-0.7-0.8-0.1-0.3-0.1-0.2-0.1-0.3-0.1-0.2-0.3-0.4-0.5-0.3-0.5-0.3-0.5-0.2 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0-0.1 0-0.2-0.1-0.2 0-0.1 1-0.4 1-0.5 1.1-0.4 1-0.1 0-0.1 0.1-0.1 0.4 0.1 0.5 0 0.4-0.3 0.2-0.3 0.2-0.3 0.1-0.3 0.2-0.2 0.2-0.2 0.2 0.1 0.1 0 0.1 0.1 0.2 0.1 0.1-0.2 0.1-0.2 0.1-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0 0.2-0.1 0.3-0.2 0.2-0.2 0.4-0.2 0.4-0.1-0.1-0.2-0.2-0.1-0.3-0.5-0.2-0.5-0.1-0.7 0-0.3 0.5-2 0.3-1 0.6-0.9 1.6-1 0.3-0.2 0.2-0.3 0.2-0.6 0.1-1.1 0.2-0.5 0.6-0.9 0.2-0.4 0-0.5-0.7-1.2 0-0.4 0.4-0.5 0.2-0.1 0.6-0.1 0.3-0.2 0.4-0.6 0.3-0.1 0.6 0 1 0.6 0.5 0.3 0.9-0.2 1.3-1.1 0.9-0.4 0.7 0.1 0.2 0 0.2-0.1 0.2-0.2 0.3 0 0.4 0.1 0.3 0-0.1-0.7 0-0.7 0-0.6 0-0.2 0-0.2 0-0.3 0-0.1 0.5-0.6 0.9-0.3 0.9-0.1 0.7 0.3 0.2 0.1 0.1 0.2 0.1 0.2 0.1 0.3 0.2 0.3 0 0.4 0.1 0.4 0.2 0.4 0.3 0.2 0.3 0.2 0.4 0.1 0.3 0.2 0.6 0.3 0.4 0.2 0.5 0.1 0.6-0.2 0.6-0.3 0.7-0.3 0.7-0.3 0.8-0.1 0.2 0.1 0.2 0 0.2 0.1 0.2 0.1 0.3 0 0.2 0 0.2 0 0.2-0.2 0.2-0.2 0.3-0.1 0.3 0.1 0.3 0.1 0.1-1 0.1-1.1-0.1-1.1 0-1.1-0.1-0.4 0.1-0.2 0.1-0.2 0.3-0.1 0.4-0.2 0.4-0.1 0.5-0.2 0.4-0.1z\",\n\tMXJAL:\n\t\t\"M472.9 468.6l-0.1-0.8-0.3-0.8-0.3-0.7-0.5-0.7-0.1-0.8 0.2-1.1 0.4-1.1 0.2-0.9-0.1-0.5-0.1-0.6-0.1-0.6 0-0.5 0.1-0.4 0.2-0.3 0.1-0.3 0-0.3-0.1-0.2-0.3-0.2-0.4-0.1-0.2-0.2-0.3-0.2-0.2-0.3-0.1-0.3-0.1-0.4-0.4-0.5-0.5-0.3-0.5-0.3-0.3-0.5-0.2-0.6-0.2-0.7-0.3-0.6-0.4-0.4-0.7 0.4-0.6 0.7-0.6 0.7-0.8 0.4-0.4 0.1-0.5 0-0.4 0-0.4 0.1-0.4 0.6-0.5 0.1-0.5-0.2-0.6-0.2-0.5-0.2-0.6-0.3-0.6-0.2-0.4-0.3-0.8-0.5-0.7-0.4-0.8-0.4-0.7-0.5 0.1-0.1 0-0.1-0.1-0.1 0-0.2 0-0.2-0.1-0.1 0-0.1-0.1-0.1-0.3 0.3-0.4 0.4-0.3 0.4-0.3 0.3-0.6 0.5-0.4 0.5-0.2 0.5-0.1 0.7-0.1 0.6-0.4 0.3-0.4 0.2-0.3 0.4-0.2 0.6-0.2 0.5-0.3 0.4-0.5 0-0.7 0-0.5 0.1-0.5 0.4-0.5 0.4-0.2 0.1-0.3 0.1-0.3 0-0.3 0.1-0.3 0-0.4 0.2-0.4 0.1-0.3 0-0.3-0.3-0.2-0.2-0.2 0-0.4 0.2-0.2 0.1-0.3 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0 0.2 0 0.2 0 0.2-0.3 0.1-0.2-0.1-0.3-0.3-0.2-0.2-0.8-0.1-0.3 0.2-0.1 0.4-0.3 0.7-0.4 0.4-0.4 0.4-0.4 0.4 0 0.7-1.2-0.3-1.1-0.5-0.3-0.3-0.1-0.3-0.1-0.4-0.3-0.1-0.3 0.1-0.3-0.1-0.2-0.2-0.1-0.2 0-0.1-0.3-0.1-0.2 0-0.8 0.2-0.6 0-0.2-0.1 0-0.9 0.2-0.8-0.1-0.3-0.4-0.2-0.3 0.1-0.4 0.2-0.3 0.1-0.2 0-0.2-0.1-0.2 0.1-0.2 0.2-2.3-1.2-1-0.7-0.7-0.8-0.3-1.4-0.3-0.6-0.9-0.4 0-0.3 0.1-0.5 0-0.3-0.2-0.3-0.2-0.2-0.1-0.2-0.1-1.6-0.8-0.8-0.4 0-0.4 0.1-0.2-0.1-0.6-0.5-0.5-0.4-1.8-1.5-1.3-1.6-1.6-2.7-0.8-0.9-0.2-0.5-0.3-0.4-0.9-0.8-0.3-0.5-0.8-1.3-1.7-2.5-0.1-0.6-0.1-0.3-0.3-0.6 0-0.3 0-1.4-0.3-2-0.1-0.5-0.2-0.3-0.5-0.3-0.3-0.2-0.4-0.9-0.6-0.8-0.8-0.4-0.6-1.2-0.4-1-0.2-0.7 0.4-0.5 3.1-2 1.3-0.1 2 0 0.4-0.1 0.5-0.3 2-0.2 0.9-0.1 0.8-0.5 0.4-0.6 0.6-0.2 0.3-0.4 0.3-0.4 0.2-0.6 0.1-1-0.6-0.6-0.8-0.5-0.2-0.4 0.4-0.2 0.3-0.2 0.5-1 0.7-1 0.8-0.9 0.6-0.9 0.6-1.1 0.8-1 0.9-0.9 1.1-0.5 0.4-0.1 0.1 0.2 0.1 0.3 0.1 0.2 0.1 0 0.2-0.1 0.1-0.1 0.2-0.1 0.2 0 0.3 0 0.3 0 0.3 0.1 1.4-0.3 1.2-0.8 1.2-1 1.2-0.8 0.3-0.1 0.3 0 0.3 0 0.3 0 0.5 0.2 0.3 0.1 0.3 0.2 0.4 0.4 0.2 0.2 0.3 0.2 0.2 0.2 0.3 0.2 0.4 0.5 0.5 0.5 0.5 0.3 0.7 0.1 0.8 0 0.7 0 0.6 0.4 0.6 0.8 0.3 0.6 0.4 0.5 0.5 0.4 0.5 0.4 0.7 0.4 0.6 0.3 0.6 0.5 0.3 0.6 0.4 0.5 0.6 0.4 0.7 0.3 0.6 0.4 0.1-0.2 0-0.2 0.1-0.2 0-0.3-0.1-0.5 0-0.4 0-0.5 0-0.5 0.1-1.1 0.3-0.8 0.3-0.9 0.4-0.8 0.2-0.3 0.1-0.3 0.2-0.3 0.1-0.3 0.3-0.5 0.2-0.7 0-0.6 0.1-0.7 0-0.1 0-0.1 0-0.2 0-0.1-0.1-0.6 0-0.6-0.1-0.6-0.1-0.5-0.2-0.7-0.1-0.6 0.3-0.4 0.3-0.5 0.2 0 1-0.2 2.3 0 0.6-0.1 0.6-0.4 1.6-1.5 0.4-0.5 0.2-0.6 0-1.3 0.2-0.5 0.3-0.3-0.2-0.1-1.7-1-1.9-1.1-1.9-1.1-1.9-1.2 0.6-0.8 0.5-0.7 0.4-0.9 0.2-1 0.1-0.5 0.1-0.5 0.1-0.5 0.2-0.5 0.2-0.6 0.4-0.9 0.3-0.8 0.1-0.5-0.8-1-0.8-1.1-0.9-1-0.9-1-1.1-1-1.1-1.1-1.1-1-1.1-1-0.6-0.6-0.2-0.5 0.1-0.6 0.4-0.8 0.4-1.1 0.3-1 0.4-1 0.4-1 1-0.6 1.1-0.5 1.1-0.4 1.1-0.5 1.4-0.5 1.4-0.1 1.5-0.1 1.4-0.3 0.4-0.1 0.2 0 0.2-0.2 0.1-0.3 0.1-0.6 0.2-0.7 0.1-0.6 0.1-0.7 0.2-0.8-0.1-0.6-0.3-0.4-0.7-0.5-0.6-0.6-0.2-0.6 0-0.7 0-0.9 0.1-1.2 0-1.1 0.1-1.1 0-1.1 1.5 0.3 1.5 0.3 1.4 0.3 1.5 0.3-0.1 1-0.1 1.2-0.3 1.2-0.4 0.8-0.5 0.3-0.4 0.3-0.3 0.3 0 0.6 0.1 0.4 0 0.5 0 0.5-0.2 0.4-0.2 0.3-0.4 0.2-0.3 0.3 0 0.4 0.2 0.5 0.2 0.4 0.2 0.5 0 0.5-0.2 0.6-0.3 0.4-0.2 0.5-0.1 0.6 0 0.6 0.1 0.6 0.1 0.6 0.1 0.5 0.1 0.6 0.2 0.7 0.3 0.6 0.3 0.3 0-0.1 0-0.2 0.1-0.1 0-0.2 0.4-1.6 0.4-1.7 0.4-1.7 0.4-1.7 0.2-1.4 0.3-1.6 0.4-1.5 0.6-1.2 0.3-0.3 0.2 0.1 0.1 0.2 0.2 0.2 0.4 0 0.6 0 0.6 0 0.3 0.1 0.2 0.3-0.1 0.4-0.1 0.4 0 0.3 0.2 0.1 0.3 0.1 0.3 0 0.2 0.1 0.1 0.3 0 0.3 0 0.3 0 0.3-0.7 0.5-0.5 1.4-0.5 1.6-0.2 1-0.2 0.5-0.1 0.4 0 0.3 0.2 0.5 0.2 0.5 0.1 0.6 0.1 0.6 0 0.6-0.3 1.2-0.1 0.6 0 0.8 0.5 0.6 0.5 0.2 0.7-0.2 0.4-0.2 0.3-0.2 0.4-0.5 0.3-0.1 1 0.2 0.4-0.1 0.3 0.2 0.2 0.2 0.1 0.3 0.3-0.3 0.2-0.9 0.3-0.7 0.3-0.9 0.4-0.8 0.6-0.3 0.6-0.3 0.1-0.6 0-0.8 0.3-0.7 0.2-0.2 0.3-0.2 0.2-0.1 0.2-0.2 0.1-0.3-0.1-0.2-0.3-0.2-0.3 0-0.3-0.1-0.1-0.3-0.1-0.3-0.2-0.2-0.4-0.1-0.2-0.2 0-0.2 0.1-0.4 0.3-0.6 0.3-0.5 0.2-0.6 0.4-0.5 0-0.1 0.1-0.1 0.1-0.2 0-0.1 0.9 0.8 0.9 0.8 1 0.8 0.9 0.7 0.4 0.3 0.4 0.3 0.5 0.3 0.4 0.3 0.1 0.3 0 0.5-0.1 0.6-0.1 0.4 0.5-0.2 0.6-0.2 0.6-0.1 0.4 0 0.4 0.2 0.1 0.3 0.1 0.3 0.1 0.4 0.4 0 0.3-0.2 0.4 0 0.3 0.1 0.2 0.5-0.1 0.5-0.2 0.6-0.2 0.4-0.2 0.4-0.2 0.5-0.3 0.5-0.4 0.3-0.3 0.1-0.4 0.1-0.3 0.1-0.1 0.3 0 0.7 0.3 0.2 0.5 0 0.5 0.3 0.1 0.4 0 0.4-0.1 0.4-0.1 0.3-0.8 0.3-0.4 0.3-0.2 0.5-0.3 0.8-0.2 0.5-0.4 0.4-0.5 0.2-0.5 0.1-0.9-0.1-0.8-0.3-0.8 0.1-0.5 0.8-0.3 0.3-0.3 0.2-0.3 0.1-0.4 0.1-0.3 0-0.4 0-0.3 0.1-0.4 0.2-0.5 0.5-0.6 0.5-0.5 0.5-0.6 0.5-0.6 0.6-0.8 0.8-0.4 0.9 0.2 0.8 0.4 0.8 0.1 1.2 0 1.3 0 0.9-0.1 0.8-0.6 0.4-0.8 0.4-0.6 0.5-0.3 0.6-0.3 0.7-0.4 0.6-0.5 0.3-0.7 0-0.7-0.4-0.6-0.4-0.6-0.4 0.3 1.1 0.2 1.1 0.2 1.1 0.1 1.1 0 0.5-0.1 0.6-0.2 0.6-0.2 0.4-0.5 0.3-0.2 0.3 0 0.3 0 0.7-0.1 0.7 0.1 0.4 0.3 0 0.7-0.3 0.5-0.3 0.6-0.4 0.6-0.1 0.5 0.3 0.1 0.5 0.1 0.5 0.1 0.4 0.4 0.3 0.6 0.2 0.6 0 0.6-0.1 0.6-0.1 0.6 0.1 0.4 0.3 0.4 0.4 0.4 0.3 0.5 0.1 0.4 0 0.5-0.1 0.4 0 0.6 0.2 0.5 0.2 0.5 0.3 0.5 0.3 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.9 0.6 1.1 0.6 1.1 0.3 0.9-0.2 0.7 0 0.8 0.6 0.8 0.4 0.6-0.1 0.4-0.9 0-1.4-0.1-1.4-0.1-1 0-0.5 0-0.6 0-0.5-0.1-0.5 0.4-0.7 0.6-0.1 0.7 0.3 0.6 0.2 0.9 0 0.9-0.2 0.8-0.4 0.7-0.6 0.4-0.3 0.5-0.4 0.5-0.1 0.3 0.4-0.1 0.3-0.1 0.5 0 0.3 0.7-0.1 0.3-0.3 0.1-0.5 0.1-0.5 0.3-0.4 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.2 0.3-0.1 0.4-0.1 0.3-0.1 0.2-0.3 0.1 0 0.1-0.1 0-0.1 0.1-0.1 0.4-1.1 0.6-1.4 0.3-1.4-0.1-1.1-0.5-0.2-0.5 0-0.5 0-0.6-0.1-0.4-0.3-0.4-0.2-0.5-0.2-0.5-0.2-0.3-0.6 0.1-0.8 0.2-0.9 0.1-0.6 0.1-0.4 0.1-0.4 0-0.3 0.1-0.4 0.9-0.3 1-0.4 1-0.2 0.9 0.2 1.1 0.6 1.1 0.8 1.1 0.6 1.3 0.4 0.9 0.1 0.9 0.2 0.9 0.1 0.9 0.2 0.8 0.1 0.8 0.1 0.8-0.1 0.8-0.2 0.7-0.4 0.6-0.5 0.5-0.6 0.7-0.5 0.7-0.3 0.6-0.2 0.6-0.3 0.3-0.6 0.2-0.9 0.1-0.8 0.2-0.7 0.7-0.4 0.8-0.3 0.5-0.5 0.4-0.5 0.6-0.3 0.9-0.3 0.7-0.5 0.5-0.6 0.5-0.9 0.1-0.1 0-0.1 0.1-0.1 0.1-0.1 0.1 0.1 0.1 0 0.1 0.1 0.1 0 0.7 0.5 0.6 0.6 0.6 0.4 0.8 0.2 0.4-0.1 0.4 0 0.4-0.1 0.5 0 0.4 0.2 0.4 0.3 0.4 0.2 0.4 0.3 0.4 0.5 0.4 0.6 0.5 0.4 0.5 0.1 0.6-0.1 0.3 0.2 0.1 0.4 0.1 0.7-0.5 0.5-0.7 0.7-0.5 0.7-0.2 0.7 0.2 0.8 0.5 0.6 0.4 0.7 0.4 0.6-0.1 1-1 0.8-1.2 0.8-0.7 1 0.1 1.1 0.5 1 0.7 0.9 0.6 0.9 0.1 0.6 0.1 0.6-0.1 0.6-0.1 0.6-0.5 0.9-0.6 0.8-0.7 0.6-0.8 0.7-0.3 0.2-0.4 0.2-0.4 0.2-0.4 0-0.5 0-0.5 0-0.6 0-0.4 0.3-0.2 0.3-0.2 0.4-0.2 0.4-0.2 0.3-0.4 0.3-0.4 0.3-0.4 0.2-0.3 0.5-0.1 0.3-0.1 0.3-0.1 0.2-0.2 0.3-1 1.1-0.9 1.3-0.8 1.2-0.8 1.3-0.3 0.5-0.3 0.5-0.3 0.5-0.3 0.5 0 0.2-0.1 0.2-0.1 0.2-0.1 0.1-0.5 0.9-0.4 0.9-0.2 1 0.3 0.9 0.7 0.8 0.8 0.6 0.7 0.6 0.7 0.8 0.1 0 0 0.1 0.1 0.1 0 0.1 0.3 1.3-0.4 1-0.7 0.8-0.9 0.9-0.7 0.9-0.6 1-0.4 1-0.1 0.5-0.6 0.1-1.8 0.9-0.5 0.1-0.5 0.1-0.4 0.2-0.3 0.1-0.5-0.4-0.8-0.3-0.3 0-0.5 0-1.1 0.3-1.4 0.1-0.5 0.2-2.3 0.8-0.3 0.3-0.2 0.5-0.3 0.2-1.8 0.5-1.1 1-0.6 0.3-0.8 0.2-1.5 0-0.7 0.2-0.4 0.4-0.4 0.3-0.3 0.1-0.4 0.1-0.1 0-0.1 0.1-0.2 0-0.1 0-1.1 0.3-1.1 0.3-1.1 0.3-1.1 0.3-0.1 0-0.1 0-0.1 0.1-0.7 0.2-1 0.3-0.9 0.5-0.2 0.7 0 0.7 0.1 1 0.2 0.8 0.5 0.4 0.3 0.1 0.1 0.1 0.1 0.2 0.1 0.1 0.4 0 0.4-0.1 0.4-0.1 0.4-0.1 0.1 0 0.2-0.1 0.2-0.1 0.2 0 0.6-0.1 0.5 0.2 0.4 0.3 0.5 0.3 0.3 0.1 0.4 0 0.4 0 0.3-0.1 0.4 0 0.5 0.1 0.5 0.1 0.5 0 0.1 0 0.1 0.1 0.1 0.2 0.1 0.1 0 0.4-0.1 0.5 0 0.4 0.1 0.3 0.4 0.2 0.4 0.2 0.3 0.2 0.4 0.3-0.2 0.2-0.1 0.2-0.2 0.1-0.2 0.2-0.8 0.3-0.8 0-0.7 0.2-0.2 1 0 0.6 0.1 0.6 0.1 0.6 0.1 0.5 0.2 0.4 0.1 0.4 0.1 0.3 0.3 0.3 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0.1 0.1 0.3 0 0.4 0.1 0.3 0.2 0.3 0.2 0.4 0.1 0.5-0.1 0.5-0.1 0.5 0 0.2-0.1 0.3 0 0.2 0 0.2 0 1.4 1.1 0.2 1.5-0.3 1.2-0.4 0.2 0 0.2 0.1 0.1 0.2 0 0.2 0.1 0.4 0.2 0.6 0.1 0.5 0.2 0.4 0.4 0.1 0.3 0.1 0.2 0.2-0.1 0.4-0.4 0.3-0.4 0.3-0.3 0.4-0.3 0.4 0 0.2 0 0.2 0.1 0.2-0.1 0.2-0.1 0.2-0.2 0.2-0.2 0.3-0.1 0.2-0.3 0.4-0.4 0.6-0.4 0.6-0.4 0.2-0.2 0-0.1-0.2 0-0.1-0.2-0.2-0.5-0.3-0.7-0.2-0.6-0.1-0.6 0.2-0.2 0.2-0.1 0.3-0.1 0.2-0.2 0.1-0.3 0-0.4 0.1-0.4 0.1-0.3 0.1-0.6 0.2-0.6 0.3-0.6 0.3-0.5 0.4-0.4 0.8-0.3 0.8-0.2 0.9-0.4 0.7-0.6 0.4-0.8 0.4-0.8 0.2-0.8 0.2-0.3 0.2-0.4 0.2-0.4 0.2-0.4 0.2-0.1 0.2 0 0.4-0.1 0.3 0 0.3-0.5 0.4-0.5-0.3-0.5-0.6-0.4-0.6-0.4-0.3-0.5 0-0.4 0-0.4-0.5-0.4-0.5-0.3-0.2-0.5 0.2-0.4 0.5-0.2 0.3-0.3 0.5-0.3 0.5-0.3 0.3-0.4 0.1-0.5 0-0.6 0-0.6 0-0.4 0-0.4 0-0.4 0-0.4 0.2z\",\n\tMXMEX:\n\t\t\"M554.9 471.5l0.2-0.1 0-0.3 0.1-0.2 0.1-0.2 0.2 0 0.2 0 0.1 0 0.2-0.3 0.2-0.3 0.3-0.3 0.4-0.3 0.4-0.1 0.3-0.2 0.1-0.4 0-0.5 0.1-0.4 0.1-0.4 0.3-0.4 0.4-0.3 0.4-0.3 0.3-0.3 0.3-0.4 0.2-0.3 0.3-0.4 0.3-0.4 0.3-0.4 0.4-0.4 0.3-0.4 0.2-0.3 0.2-0.3 0.2-0.3 0.3-0.4 0.3-0.4 0.4-0.5 0.3-0.5 0.4-0.5 0.3-0.3 0.2-0.2 0.1-0.3-0.2-0.4-0.1-0.1 0-0.1-0.2-0.3-0.2-0.2-0.1-0.3-0.2-0.3 0.2-0.1 0.2-0.1 0.2-0.2 0.2-0.1 0.7-0.4 0.7-0.5 0.8-0.4 0.7-0.5 0.5-0.2 0.7-0.4 0.4-0.5-0.5-0.5-0.4-0.4-0.2-0.5-0.2-0.6-0.2-0.5 0-0.1-0.1-0.1 0-0.1 0-0.1-0.1-0.3-0.1-0.2-0.1-0.3-0.1-0.3 0.2-0.5 0.1-0.5 0.1-0.5 0.2-0.6 0.1-0.2 0.1-0.2 0-0.3 0.1-0.2 0.1-0.4 0.2-0.3 0.1-0.4 0.1-0.3 0-0.3-0.1-0.4-0.1-0.3 0-0.4 0.2-0.5 0.1-0.5 0.2-0.5 0.1-0.5 0.1-0.5 0.2-0.5 0.1-0.5 0.2-0.5 0-0.4 0.1-0.4 0.1-0.4 0-0.3 0.3-0.5 0.3-0.5 0.2-0.5 0.3-0.4 0.1-0.1 0-0.1 0.1-0.1 0.1 0 0.5-0.6 0.4-0.7 0.4-0.7 0.5-0.7 0.3-0.4 0.3-0.4 0.3-0.4 0.3-0.4 0.6-0.7 0.4-0.3 0.6-0.2 0.8-0.1-0.4-0.5-0.3-0.4-0.4-0.5-0.3-0.5 0.6-0.4 0.7-0.4 0.7-0.5 0.6-0.4 0.5 0.2 0.5 0.3 0.5 0.3 0.3 0.4 0.1 0.2 0.1 0.3 0.1 0.2 0.1 0.3 0.7 0.8 0.8 0.8 0.9 0.8 0.8 0.7 0.5 0.2 0.1-0.2 0.1-0.4 0.2-0.3 0.5-0.2 0.7 0 0.6 0 0.4 0.2 0.2 0.4 0.1 0.3 0.2 0.3 0.2 0.3 0.3 0.4 0.2 0.4 0.3 0.4 0.2 0.3 0 0.1 0.1 0 0 0.1-0.1 0.7-0.2 0.6-0.3 0.5-0.1 0.6-0.2 0.9 0.2 0.5 0.4 0.4 0.8 0.2 0.6 0.2 0.5 0.4 0.2 0.6-0.1 0.8 0.1 0.2 0.1 0.2 0.2 0.2 0.2 0.1 0.2 0.2 0.1 0.3 0 0.4 0 0.3 0.3 1 0.5-0.5 0.6-1 0.7-0.6 1 0.1 0.3-0.8 0.2-1 0.5-0.4 0.3 0 0.3 0 0.3-0.1 0.2-0.2 0.1-0.6 0-0.6 0-0.6 0.3-0.5 0.4-0.3 0.5-0.1 0.4 0 0.5 0 0.7-0.3 0.6-0.3 0.6-0.4 0.6-0.3 0.5-0.2 0.5 0 0.4 0 0.5 0.2 0.2 0.1 0.1 0.1 0.1 0 0.2 0.2 0.2 0.3 0.3 0.3 0.1 0.4 0.1 0.4 0 0.3 0 0.3-0.1 0.4-0.1 0.3 0.1 0 0.1 0 0.2 0.1 0.1 0-0.3 0.5-0.2 0.6-0.2 0.5-0.2 0.6 0 0.3-0.1 0.3 0 0.2-0.1 0.3 0.1 0.1 0 0.1 0.1 0.1 0 0.1 1.3 0.1 1.2-1.2 1.1-1.3 1 0.4 0.5 0.7 0.5 0.3 0.6 0 0.8-0.2 0.3-0.1 0.2 0 0.3 0.2 0.2 0.3 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.2 0.1 0.1 0.2 0.2 0.1 0.1 0.1 0.2 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0.2 0.1 0.3 0.3 0.4 0.2 0.3 0.1 0.3-0.1 0.3-0.1 0.4-0.2 0.4-0.2 0.4-0.1 0.3-0.2 0.6-0.3 0.5-0.3 0.5-0.3 0.5 0 0.1 0 0.1-0.1 0-0.3 0-0.4 0-0.3 0.1-0.4 0 0.2 1 0.3 0.5 0.4 0.4 0.9 0.2 0.1 0.4 0 0.4 0 0.4 0.1 0.4-0.3 0.3-0.2 0.3-0.1 0.4-0.1 0.4-0.2 0.8 0.1 0.9 0.3 0.9 0.2 0.8 0 0.1 0 0.1 0 0.1 0.1 0.4 0.1 0.4 0.1 0.4 0 0.4 0.1 0.4 0 0.4 0.1 0.4 0 0.4-0.2 0.1-0.2 0.2-0.1 0.3 0 0.3 0 0.2 0 0.3-0.1 0.3 0 0.3 0 0.3 0 0.5 0 0.4 0.1 0.4 0.2 0.2 0.1 0.2 0 0.3-0.1 0.3 0 0.1 0 0.1-0.1 0.1 0 0.1-0.1 0.1-0.1 0-0.1 0.1-0.1 0.1-0.4 0.1-0.4 0.2-0.3 0.3-0.1 0.4-0.2 0.3-0.3 0.2-0.4 0-0.4 0.1-0.4 0-0.3-0.1-0.3 0-0.4-0.1-0.2 0-0.2 0-0.1-0.2-0.1-0.3 0-0.1-0.1-0.1-0.1-0.2 0-0.3-0.1-0.3-0.1-0.2 0-0.1 0-0.1-0.1-0.1 0-0.1-0.1-0.2-0.2 0-0.2 0-0.2 0-0.3-0.2-0.2-0.2-0.2-0.3-0.3-0.2-0.1 0 0-0.1-0.1 0-0.4-0.1-0.5-0.1-0.5-0.1-0.4-0.1 0.2-0.3 0.3-0.3 0.1-0.4 0.1-0.4 0-0.1-0.1-0.5-0.3-0.5-0.2-0.4-0.2-0.5 0.1-0.4 0-0.3 0.1-0.4 0-0.3 0.1-0.4-0.1-0.4 0-0.4-0.2-0.4 0-0.1 0-0.1-0.1-0.1-0.1-0.2-0.1-0.2-0.2-0.2-0.1-0.2-0.5-0.3-0.6-0.3-0.5-0.2-0.4-0.5 0.1-0.1 0.1-0.1 0.1 0 0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2-0.1-0.1 0.3-0.2 0.2-0.2 0.1-0.3-0.2-0.3-0.1 0 0-0.1 0-0.1-0.1-0.2-0.1-0.1 0-0.1-0.2-0.2-0.1-0.3-0.1-0.2-0.1-0.2-0.3-0.2-0.2-0.3-0.2-0.3 0-0.4 0-0.1 0-0.1 0-0.3-0.1-0.2-0.2-0.2-0.2-0.2-0.1-0.1-0.1 0 0-0.1-0.1-0.1-0.1 0.2-0.2 0.2-0.2 0.2-0.1 0.1-0.3 0.3 0 0.3 0 0.3-0.3 0.2 0.4 0.2 0.1 0.2-0.1 0.3-0.3 0.2-0.2 0-0.2 0.1-0.1 0.1-0.1 0.1-0.1 0.2-0.2 0.2-0.1 0.1-0.1 0.2-0.3 0.5-0.4 0.4-0.3 0.5-0.3 0.5-0.1 0.1 0 0.1-0.1 0.1-0.2 0.5-0.4 0.2-0.5-0.1-0.5-0.1-0.2 0.6-0.3 0.7-0.2 0.7 0.1 0.6 0.1 0.1 0.1 0.1 0 0.1 0 0.1-0.2 0.2-0.1 0.3 0 0.3 0.3 0.1 0.1 0.1 0.1 0 0.1 0.1 0 0.1 0 0.1 0 0.5 0 0.6 0.2 0.5 0.2 0.4 0.1 0.2 0.1 0 0.1 0.1 0.1 0.1-0.2 0.3-0.3 0.3-0.3 0.3-0.3 0.2-0.3 0.5 0.1 0.5 0.3 0.4 0.4 0.4-0.5 0.3-0.3 0.2-0.1 0.4 0.2 0.5 0.2 0.2 0.1 0.2 0.2 0.1 0.2 0.2 0.1 0.8-0.2 0.5-0.4 0.4-0.7 0.3-0.3 0.1-0.3 0.1-0.3 0.1-0.3 0.2-0.4 0.3-0.3 0.5-0.2 0.5-0.2 0.5-0.3 0.4-0.4 0.2-0.3 0.2-0.3 0.3 0 0.1 0 0.1 0 0.8-0.2 0.9-0.2 0.9-0.2 0.9-0.1 0.1-0.4 0.1-0.7 0-0.7-0.2-0.4-0.3-0.2-0.3-0.1-0.3-0.2-0.2-0.4-0.1-0.5-0.6-0.5-0.6-0.6-0.2-0.7 0.6-0.2 0.2-0.3 0.2-0.3 0.3-0.2 0.2-0.3 0.3-0.3 0.1-0.2 0.3-0.2 0.3 0 0.4 0 0.3-0.1 0.3-0.3 0.3-0.5 0.5-0.3-0.1-0.3-0.3-0.3-0.4-0.5-0.4-0.4-0.1-0.5 0.1-0.6 0.1-0.2 0-0.1 0.1-0.2 0-0.1 0.1-0.6 0.2-0.6 0.1-0.6 0.2-0.6 0.3-0.6 0.1-0.5 0.2-0.6 0.1-0.6 0.1-0.1 0.2-0.1 0.1 0 0.1-0.4 0.9-0.5 0.8-0.4 0.7-0.7 0.7-0.6 0.6-0.7 0.5-0.6 0.5-0.6 0.5-0.4 0.1-0.2 0.3-0.2 0.3-0.3 0.2-0.4 0.1-0.4 0-0.4-0.1-0.3-0.3-0.2-0.2-0.2-0.3-0.2-0.3-0.3-0.2-0.3-0.6 0.2-0.7 0.3-0.8 0-0.8-0.2-0.7-0.4-0.6-0.5-0.5-0.5-0.5-0.3-0.3-0.2-0.3-0.2-0.3-0.1-0.3 0.1-0.4 0-0.3 0-0.4-0.2-0.4-0.3-0.6 0-0.6 0.3-0.5 0.3-0.7 0-0.3-0.2-0.3-0.2-0.2-0.1-0.3 0-0.5-0.1-0.3-0.2-0.1-0.4-0.1-1.2 0-1.1-0.1-1-0.3-1.1-0.4z\",\n\tMXMIC:\n\t\t\"M465.3 477l0.3-0.2 0.4-0.3 0.3-0.3 0.2-0.5 0.1-0.4 0.1-0.3 0.2-0.4 0.2-0.3 0.5-0.2 0.4 0 0.3-0.1 0.3-0.4 0.2-0.4 0-0.4 0-0.4 0.2-0.4 0-0.1 0-0.1 0-0.2 0-0.1-0.1-0.2 0.1-0.2 0.1-0.1 0.1-0.1 0.4 0.2 0.2 0.1 0.3-0.1 0.3-0.2 0.2-0.2 0.4-0.2 0.4-0.2 0.2-0.1 0-0.1-0.1-0.2 0-0.1 0.1-0.1 0.1-0.1 0.2 0 0.2 0 0.1-0.1 0.1-0.3 0.1-0.4 0.2-0.2 0.3 0 0.4-0.2 0.4 0 0.4 0 0.4 0 0.6 0 0.6 0 0.5 0 0.4-0.1 0.3-0.3 0.3-0.5 0.3-0.5 0.2-0.3 0.4-0.5 0.5-0.2 0.3 0.2 0.4 0.5 0.4 0.5 0.4 0 0.5 0 0.4 0.3 0.4 0.6 0.5 0.6 0.5 0.3 0.5-0.4 0-0.3 0.1-0.3 0-0.4 0.1-0.2 0.4-0.2 0.4-0.2 0.4-0.2 0.3-0.2 0.8-0.2 0.8-0.2 0.8-0.4 0.6-0.4 0.4-0.7 0.2-0.9 0.3-0.8 0.4-0.8 0.5-0.4 0.6-0.3 0.6-0.3 0.6-0.2 0.3-0.1 0.4-0.1 0.4-0.1 0.3 0 0.2-0.1 0.1-0.2 0.1-0.3 0.2-0.2 0.6-0.2 0.6 0.1 0.7 0.2 0.5 0.3 0.2 0.2 0 0.1 0.1 0.2 0.2 0 0.4-0.2 0.4-0.6 0.4-0.6 0.3-0.4 0.1-0.2 0.2-0.3 0.2-0.2 0.1-0.2 0.1-0.2-0.1-0.2 0-0.2 0-0.2 0.3-0.4 0.3-0.4 0.4-0.3 0.4-0.3 0.1-0.4-0.2-0.2-0.3-0.1-0.4-0.1-0.2-0.4-0.1-0.5-0.2-0.6-0.1-0.4 0-0.2-0.1-0.2-0.2-0.1-0.2 0-1.2 0.4-1.5 0.3-1.1-0.2 0-1.4 0-0.2 0-0.2 0.1-0.3 0-0.2 0.1-0.5 0.1-0.5-0.1-0.5-0.2-0.4-0.2-0.3-0.1-0.3 0-0.4-0.1-0.3-0.2-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.3-0.3-0.1-0.3-0.1-0.4-0.2-0.4-0.1-0.5-0.1-0.6-0.1-0.6 0-0.6 0.2-1 0.7-0.2 0.8 0 0.8-0.3 0.2-0.2 0.2-0.1 0.1-0.2 0.2-0.2-0.4-0.3-0.3-0.2-0.4-0.2-0.4-0.2-0.1-0.3 0-0.4 0.1-0.5 0-0.4-0.1-0.1-0.1-0.2-0.1-0.1-0.1 0-0.5 0-0.5-0.1-0.5-0.1-0.4 0-0.3 0.1-0.4 0-0.4 0-0.3-0.1-0.5-0.3-0.4-0.3-0.5-0.2-0.6 0.1-0.2 0-0.2 0.1-0.2 0.1-0.1 0-0.4 0.1-0.4 0.1-0.4 0.1-0.4 0-0.1-0.1-0.1-0.2-0.1-0.1-0.3-0.1-0.5-0.4-0.2-0.8-0.1-1 0-0.7 0.2-0.7 0.9-0.5 1-0.3 0.7-0.2 0.1-0.1 0.1 0 0.1 0 1.1-0.3 1.1-0.3 1.1-0.3 1.1-0.3 0.1 0 0.2 0 0.1-0.1 0.1 0 0.4-0.1 0.3-0.1 0.4-0.3 0.4-0.4 0.7-0.2 1.5 0 0.8-0.2 0.6-0.3 1.1-1 1.8-0.5 0.3-0.2 0.2-0.5 0.3-0.3 2.3-0.8 0.5-0.2 1.4-0.1 1.1-0.3 0.5 0 0.3 0 0.8 0.3 0.5 0.4 0.3-0.1 0.4-0.2 0.5-0.1 0.5-0.1 1.8-0.9 0.6-0.1 3-0.5-0.5 1.2-0.1 0.6 0.3 0.3 0.4-0.2 0.3-0.8 0.5-0.2 0.4 0.3 0.2 0.7 0.3 2.8 0.1 0.1 0.1 0.1 0.1 0.1 0.3 0.8 0.2 0.3 0.3 0.2 0.7 0 0.3-0.1 0.3-0.3 0.3 0 0.3 0 0.4 0.3 0.2 0.1 0.2-0.1 0.3-0.3 0.3 0 0.2 0 0.8 0.2 1 0 0.6 0.1 0.4 0.3 0.3-0.4 0.7-0.9 0.2-0.5 0-0.2 0.3-0.4 0.1-0.3 0-0.3 0-0.3 0-0.3 0.1-0.3 0.2 0 1-0.1 0.2 0 0.6-0.3 0.3-0.1 0.5 0 1.1 0.1 0.5-0.1-0.1 0.4 0.1 0.3 0.2 0.2 0.4 0 0.5 0.1 0.6 0.1 0.6 0.4 0.1 0.5-0.2 0.4-0.6 0.3-0.5 0.3-0.3 0.4 0.1 0.3 0.1 0.1 0.3 0.1 0.1 0.2 0 0.3 0 0.1-0.1 0.2 0 0.2-0.1 0.1-0.1 0.1 0 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0.1 0.2 0 0.2-0.1 0.9-0.2 0.9 0 0.7 0.8 0.5 0.3-0.1 0.3-0.2 0.2-0.1 0.3-0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.4 0 0.4-0.1 0.3-0.1 0.4 0.1 0.5 0.3 0.6 0.1 0.6 0.1 0.6-0.2 0.4-0.6 0.2-0.8 0.3-0.6 0.6-0.2 0.3 0.3 0.4 0.2 0.3 0.1 0.4-0.1 0.6-0.2 0.8-0.1 0.7 0.1 0.6 0.2 0.1 0.2 0 0.3 0 0.2-0.1 0.3 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1-0.1 0.6-0.5 0.3-0.7 0.3-0.4 0.4 0.1 0.7 0.7 0.5 0.8 0.4 0.7 0.2 0.5 0.2 0.4 0.1 0.5-0.1 0.5-0.1 0.6-0.2 0.5-0.2 0.4-0.4 0.4-0.6 0.3 0.4 0.3 0.2 0.2 0.2 0.2 0.4 0.3 0.5 0.3 0.3 0.5 0 0.7 0.1 0.1-0.6 0.1-0.3 0.3-0.1 0.6 0 0.5 0 0.5-0.1 0.5 0 0.5 0 0.5 0 0.7-0.1 0.7 0 0.4 0.1 0.1 0.4 0 0.3 0 0.3 0.3 0.2 0.4-0.2 0.2-0.4 0.2-0.6 0.4-0.3 0.6-0.2 0.7-0.1 0.7 0 0.7 0 0.5-0.4 0-0.9-0.3-1.1-0.3-0.7 0-0.3 0.1-0.3 0.2-0.3 0.1-0.2 0-0.1-0.1-0.1-0.1-0.2 0.2-0.2 0.1 0 0.3 0 0.2 0 0.2 0.1 0.2-0.2 0.3-0.4 0.3-0.4 0.1-0.3 0.2-0.5 0.2-0.4 0.3-0.3 0.5-0.5 1.4 0.7 1.1 1.5 0.6 1.7 0 1.7 0 0.2 0 0.2 0 0.2 0 0.2 0 0.8 0.3 0.6 0.5 0.4 0.7 0.3 0 0.3-0.1 0.4-0.1 0.4 0 0.4-0.2 0.5-0.1 0.5-0.2 0.5-0.1 0.5-0.1 0.5-0.2 0.5-0.1 0.5-0.2 0.5 0 0.4 0.1 0.3 0.1 0.4 0 0.3-0.1 0.3-0.1 0.4-0.2 0.3-0.1 0.4-0.1 0.2 0 0.3-0.1 0.2-0.1 0.2-0.2 0.6-0.1 0.5-0.1 0.5-0.2 0.5 0.1 0.3 0.1 0.3 0.1 0.2 0.1 0.3 0 0.1 0 0.1 0.1 0.1 0 0.1 0.2 0.5 0.2 0.6 0.2 0.5 0.4 0.4 0.5 0.5-0.4 0.5-0.7 0.4-0.5 0.2-0.7 0.5-0.8 0.4-0.7 0.5-0.7 0.4-0.2 0.1-0.2 0.2-0.2 0.1-0.2 0.1 0.2 0.3 0.1 0.3 0.2 0.2 0.2 0.3 0 0.1 0.1 0.1 0.2 0.4-0.1 0.3-0.2 0.2-0.3 0.3-0.4 0.5-0.3 0.5-0.4 0.5-0.3 0.4-0.3 0.4-0.2 0.3-0.2 0.3-0.2 0.3-0.3 0.4-0.4 0.4-0.3 0.4-0.3 0.4-0.3 0.4-0.2 0.3-0.3 0.4-0.3 0.3-0.4 0.3-0.4 0.3-0.3 0.4-0.1 0.4-0.1 0.4 0 0.5-0.1 0.4-0.3 0.2-0.4 0.1-0.4 0.3-0.3 0.3-0.2 0.3-0.2 0.3-0.1 0-0.2 0-0.2 0-0.1 0.2-0.1 0.2 0 0.3-0.2 0.1-0.3 0.3-0.3 0.3-0.2 0.3-0.1 0.3 0 0.3-0.3 0.3-0.3 0.3-0.3 0.3-0.1-0.7-0.3-0.7-0.4-0.5-0.6-0.1-0.5 0.3-0.4 0.5-0.3 0.5-0.4 0.4 0 0.6 0.5 0.5 0.5 0.5 0.3 0.5-0.2 0.6-0.3 0.5-0.3 0.4 0.1 0.7 0.3 0.7 0.2 0.6 0.1 0.7 0.1 0.7 0 0.8 0.1 0.6 0.3 0.5 0.5 0.5 0.8 0.5 0.7 0.6 0.8 0.6 0.7 0.6 0.2 0.5-0.1 0.6-0.4 0.7-0.4 0.6-0.2-0.5-0.3-0.1-0.1 0-1 0.9-0.6-0.6-0.3-0.4 0-0.5 0.2-0.4 0.3-0.2 0.2-0.3 0.1-0.3-0.1-0.4-0.1-0.3-0.1-0.2-0.1 0-0.3-0.1-0.1-0.1 0 0.1-0.2 0.4 0 0.1-0.4-0.1-0.5-0.3-0.4-0.3-1-1.1-0.3-0.2-3.1 0 0.4 0.4-0.3 0.3-0.9 0.3-0.2-0.7-0.1-0.4-0.2-0.1-0.4 0-0.2 0.1-0.1 0.1-0.1-0.3 0-0.4-0.1-0.2-0.6-0.3-0.7 0-1.4 0.3-4.6-0.3-0.7 0.4-1.5 0.4-1.5 0.4-1.5 0.4-1.6 0.3-0.6-0.1-0.7-0.2-0.5-0.3-0.6-0.3-0.5-0.4-0.2-0.4-0.2-0.4-0.3-0.5-0.3-0.4-0.5-0.1-0.4-0.1-0.5-0.1-1.1 0-1.3-0.1-1.2 0-1 0.4-1.2 1.6-0.4 1.9 0.2 2.1 0.3 2.1 0 0.8-0.3 0.6-0.5 0.7-0.5 0.6-0.1 0.3 0 0.2-0.2 0.2-0.3 0.1-0.3 0-0.2-0.1-0.3 0-0.3 0-0.4 0.3-0.4 0.1-0.4-0.1-0.4 0-0.5 0.1-0.5 0.1-0.4 0.1-0.6 0-0.5 0-0.3 0.1-0.2 0.1-0.3 0.3-0.2 0.3-0.2 0.2 0 0.3-0.1 0.3-0.2 0.8-0.1 0.9 0 0.9 0 0.9 0.2 0.5 0.3 0.5 0.2 0.4 0.1 0.4-0.1 0.3-0.1 0.3-0.2 0.4-0.1 0.1 0 0.1-0.2 0.1-0.4 0-1.1-0.5-1.7-0.9-3.8-1.1-1.6-0.5-1.1-0.1-2.4-0.9-2.7-0.2-1.5-0.3-3.9-1.7-2.7-1.3-1.5-0.6-1-0.1-1.5-0.1-0.4-0.4-0.4 0.1-2.3-1-0.5 0.1-1.5-0.5-0.5-0.3-1-0.4-0.5 0.1-0.6-0.3-1.2-0.8-2.2-0.9-0.7-1.3-1.5-3.5-1-1.2-0.2-0.1-0.3-0.4-0.4-0.3-0.6-0.4-0.9-0.5-0.3-0.1-0.1-0.3 0.6-0.8-0.4-0.8-0.9-0.9-0.3-0.2z\",\n\tMXMOR:\n\t\t\"M600 487.3l-0.2-1-0.6-0.7-0.7-0.7-0.3-0.8-0.1-0.3-0.1-0.2-0.2-0.2-0.2-0.2-0.2-0.3-0.1-0.4 0-0.3-0.1-0.4 0-0.3-0.2-0.2-0.2-0.1-0.2-0.1-0.8-0.1-0.5 0.4-0.4 0.6-0.2 0.7 0 0.4-0.1 0.4 0 0.4-0.2 0.3-0.6 0-0.6 0-0.6 0-0.6 0-0.2-0.3-0.1-0.6-0.1-0.5-0.6 0-0.4 0-0.3-0.2-0.3-0.3-0.3-0.4-0.2-0.3-0.2-0.4-0.2-0.4-0.2-0.3-0.6-0.2-0.1-0.5-0.2-0.5-0.5-0.1-0.6-0.2-0.1-0.4 0.2-0.6 0.2-0.5 0.1-0.1 0.2-0.9 0.2-0.9 0.2-0.9 0-0.8 0-0.1 0-0.1 0.3-0.3 0.3-0.2 0.4-0.2 0.3-0.4 0.2-0.5 0.2-0.5 0.3-0.5 0.4-0.3 0.3-0.2 0.3-0.1 0.3-0.1 0.3-0.1 0.7-0.3 0.4-0.4 0.2-0.5-0.1-0.8-0.2-0.2-0.2-0.1-0.1-0.2-0.2-0.2-0.2-0.5 0.1-0.4 0.3-0.2 0.5-0.3-0.4-0.4-0.3-0.4-0.1-0.5 0.3-0.5 0.3-0.2 0.3-0.3 0.3-0.3 0.2-0.3 0.7 0.7 0.9 0.3 1 0.2 0.9 0.1 0.3 0 0.2 0.1 0.2 0 0.2 0 0.6 0.1 0.6 0.3 0.5 0.3 0.5 0.3 0.3 0.2 0.3-0.3 0.2-0.3 0.3-0.3 0.3-0.1 0.4 0 0.4 0 0.4 0 0.4 0.1 0.5 0.1 0.5 0.1 0.4 0.1 0.1 0 0 0.1 0.1 0 0.3 0.2 0.2 0.3 0.2 0.2 0.3 0.2 0.2 0 0.2 0 0.2 0 0.1 0.2 0 0.1 0.1 0.1 0 0.1 0 0.1 0.1 0.2 0.1 0.3 0 0.3 0.1 0.2 0.1 0.1 0 0.1 0.1 0.3 0.1 0.2 0.2 0 0.2 0 0.4 0.1 0.3 0 0.3 0.1 0.4 0 0.4-0.1 0.4 0 0.3-0.2 0.2-0.3 0.1-0.4 0.3-0.3 0.4-0.2 0.4-0.1 0.1-0.1 0.1-0.1 0.1 0 0.1-0.1 0 0.5-0.1 0.5 0 0.4 0 0.5-0.1 0.5-0.2 0-0.2-0.1-0.3 0.2 0.1 0.6 0.3 0.5 0.2 0.4-0.5 0.4-0.5 0.5-0.4 0.5-0.4 0.5-0.4 0.5 0.2 0.1 0.1 0.1 0.2 0.1 0.2 0.1 0 0.1 0 0.1 0 0.1-0.1 0.2 0 0.2 0.1 0.2 0.1 0.1 0.1 0.1 0.1 0.1 0 0.1 0.1 0 0.3 0.4 0.2 0.4 0.2 0.4 0.2 0.4 0 0.2 0 0.1-0.1 0.2-0.1 0.1-0.6 0-0.5 0-0.6-0.1-0.6-0.1 0.1 0.3 0 0.3 0.1 0.3 0 0.3 0.2 0.4 0.1 0.5 0 0.4 0.1 0.5 0.1 0.1 0 0.1 0.1 0.1 0.3 0.5 0.3 0.7 0.2 0.8 0.2 0.6 0.1 0.5 0.2 0.6 0.1 0.6-0.1 0.4-0.5 0.1-0.6-0.3-0.6-0.6-0.5-0.5-0.5-0.3-0.5-0.3-0.5-0.2-0.5 0.1-0.4 0.1-0.4 0-0.4 0.1-0.3 0.2-0.3 0.2-0.1 0.3-0.2 0.3-0.4 0.1-0.1 0-0.4 0.4-0.1 0.5-0.2 0.5-0.5 0.3-0.8 0.2-0.6 0.3-0.6 0.3-0.7 0.5z\",\n\tMXNAY:\n\t\t\"M394.1 396.4l-0.1 0.6 0 0.6-0.3-0.2-0.3 0.2-0.6-0.4-0.3-0.4 0.6-0.6 0.5 0.1 0.3-0.1 0.1 0.1 0.1 0.1z m-5.2-4.8l0.5 0 0.4 0.1 0 0.3 0.3 0.2 0 0.3-0.5 0.2-0.1 0.5-0.1 0.4-0.4-0.1-0.8-0.4-0.4 0-0.5-0.4-0.5-0.1-0.4-0.5 0.6-0.5 0.3-0.3 0.3 0 0.4-0.1 0.3 0.3 0.6 0.1z m-3.1-3.5l-0.1 0.3 0.1 0.3 0 0.2-0.2 0.1 0 0.2-0.2 0.2-0.2 0.2 0 0.2-0.1-0.1-0.1 0.1 0-0.2 0.1-0.2-0.2-0.2-0.2-0.1-1.2-0.4-1.1-0.7 0-0.1 0.1-0.2 0-0.2-0.2-0.3-0.2-0.4-0.3-0.4-0.1-0.2 0.2-0.1 0-0.3-0.1-0.4-0.2-0.2 0.5-0.2 0.6 0.2 0.6 0 0.4 0.2 1.1 0.5 0.4 0.3-0.1 0.3-0.1 0.4 0.4 0.4 0.2 0.2 0.2 0.3 0.1 0.1 0.1 0-0.2 0.2z m-4.3-5.5l0 0.2 0.1 0.1 0.1 0.4-0.2 0.2 0.1 0.2-0.6 0.4-0.3-0.6 0.2-0.4 0.2-0.5 0.1 0.1 0.3-0.1z m39.4 33.6l-0.6-1.3-0.9-0.8-0.6-0.3-0.2 0.2-0.5 0.5-0.7 0.2-0.9-0.5-1-0.1-1-0.5-0.6 0.4-0.3-0.4 0.3-0.3 0.3-0.3 0.3 0 0.2 0.1 0.6-0.3 0.3-0.8 0.2-0.4 0.2-0.7 0.2-0.3 0.1-0.2 0.3 0.1 0.4-0.6 0.6-1.2 1-0.8 0.3-0.1 0.2-0.4 0.5-0.4 0.3-0.6 0.2-0.4 0.2-0.4 0.4-0.1 0.2 0.2 0.3 0 0.3 0 0.6-0.5 0.4-0.6 0.1-0.9 0-0.8-0.2-0.4 0.2-0.8-0.1-0.8 0.5-0.7-0.2-2.4-0.6-1.8 0.4-1.5 0.3-0.5 0.5-0.9 0.5-0.2 0-0.3-0.3-0.6-0.1-0.7-0.2-0.4-0.3-0.3-0.4-0.3-0.4 0-0.1 0.4-0.4 0-0.5-0.5-1.1-0.5-2.1-1.3-0.7-0.4-0.9-0.9-0.5-1.3-2.4-4.9-2.4-3.9-0.5-1.1-0.2-1.7 0.2-4.4-0.2-2.1-0.8-2.8-0.6-2.3-0.4-1.6-0.4-1 0.2-0.1 0.4 0.5 0.4 0.8 0.5 0.5 0.5-0.4 0-0.5-0.1-0.6-0.2-0.6-0.1-0.5 0.6-0.2 0.6-0.1 0.6-0.2 0.7 0.2 0.4 0.3 0.4 0.3 0.4 0.4 0.4 0.4 1 0.3 1-0.2 0.6-0.6 0-1.1-0.1-0.8-0.2-0.8-0.3-0.7-0.2-0.8-0.2 0-0.1-0.1-0.2-0.1-0.1-0.1 0-0.1 0.1-0.3 0.1-0.2 0-0.2-0.3-0.2-0.3-0.1-0.3-0.1-0.2-0.3-0.2-0.4-0.1-0.3-0.2-0.2-0.3-0.2-0.3-0.2-0.2-0.1-0.2-0.3 0-0.3 0.1-0.6 0.5-0.7 0.5-0.6 0.5-0.5 0.5-0.4 0.5-0.4 0.6-0.4 0.3-0.4 0.3-0.4-0.1-0.3-0.1-0.3-0.3-0.4-0.2-0.5-0.1-0.4 0-0.4 0.2-0.6 0.4-0.5 0.4-0.3 0.7-0.1 0.7 0 1.5 0 1.5-0.1 1.5 0 1.5 0.2 1.4 0.5 1.3 0.6 1.4 0.8 1.3 0.7 0.6 0.3 0.4 0.3 0.3 0.4 0.3 0.6 0.3 0.9 0.4 0.8 0.3 0.8 0.3 0.8-0.2 0.4-0.7 0.7-0.7 0.6-0.4 0.4-0.5 0.6-0.3 0.4-0.2 0.5-0.1 0.8 0 0.8-0.1 0.9 0 1 0.1 0.6 0.8 0.1 0.8-0.5 0.8-0.6 0.6-0.6 0.8-0.6 0.9-0.6 0.8-0.7 0.9-0.6 0.6 0 0.9 0.5 1 0.6 0.6 0.4 0.2 0.3 0.2 0.4 0.1 0.4 0.1 0.4 0.2 1.1 0.3 1 0.4 0.9 0.8 0.7 0.7 0.5 0.8 0.5 0.9 0.4 0.7-0.1 1.1-0.4 1-0.5 1-0.4 1-0.5 0.2 1.2 0.2 1.3 0.1 1.2 0.2 1.2-0.1 0.4-0.1 0.4-0.2 0.4-0.1 0.5-0.4 1-0.4 1-0.3 1-0.4 1.1-0.4 0.8-0.1 0.6 0.2 0.5 0.6 0.6 1.1 1 1.1 1 1.1 1.1 1.1 1 0.9 1 0.9 1 0.8 1.1 0.8 1-0.1 0.5-0.3 0.8-0.4 0.9-0.2 0.6-0.2 0.5-0.1 0.5-0.1 0.5-0.1 0.5-0.2 1-0.4 0.9-0.5 0.7-0.6 0.8 1.9 1.2 1.9 1.1 1.9 1.1 1.7 1 0.2 0.1-0.3 0.3-0.2 0.5 0 1.3-0.2 0.6-0.4 0.5-1.6 1.5-0.6 0.4-0.6 0.1-2.3 0-1 0.2-0.2 0-0.3 0.5-0.3 0.4 0.1 0.6 0.2 0.7 0.1 0.5 0.1 0.6 0 0.6 0.1 0.6 0 0.1 0 0.2 0 0.1 0 0.1-0.1 0.7 0 0.6-0.2 0.7-0.3 0.5-0.1 0.3-0.2 0.3-0.1 0.3-0.2 0.3-0.4 0.8-0.3 0.9-0.3 0.8-0.1 1.1 0 0.5 0 0.5 0 0.4 0.1 0.5 0 0.3-0.1 0.2 0 0.2-0.1 0.2-0.6-0.4-0.7-0.3-0.6-0.4-0.4-0.5-0.3-0.6-0.6-0.5-0.6-0.3-0.7-0.4-0.5-0.4-0.5-0.4-0.4-0.5-0.3-0.6-0.6-0.8-0.6-0.4-0.7 0-0.8 0-0.7-0.1-0.5-0.3-0.5-0.5-0.4-0.5-0.3-0.2-0.2-0.2-0.3-0.2-0.2-0.2-0.4-0.4-0.3-0.2-0.3-0.1-0.5-0.2-0.3 0-0.3 0-0.3 0-0.3 0.1-1.2 0.8-1.2 1-1.2 0.8-1.4 0.3-0.3-0.1-0.3 0-0.3 0-0.2 0-0.2 0.1-0.1 0.1-0.2 0.1-0.1 0-0.1-0.2-0.1-0.3-0.1-0.2-0.4 0.1-1.1 0.5-0.9 0.9-0.8 1-0.6 1.1-0.6 0.9-0.8 0.9-0.7 1-0.5 1-0.3 0.2-0.4 0.2z\",\n\tMXNLE:\n\t\t\"M578.3 192.9l0.3 0.3 0.3 0.5 0.3 0.4 0.3 0.1 0.5 0.2 0.2 0.1 0.1 0.3 0.1 0.4 0.1 0.3 0.2 0.1 0.4 0.6-0.1 0-1.5 0.7-1.4 0.7-1.4 0.9-1.4 0.9-0.1 0.4 0 0.8 0.1 0.8 0.2 0.3 0.9 0.2 0.9 0.1 0.9 0.1 0.9 0.2 0.7 1 0.4 2.2 0.3 2.3 0.2 1.6 0.1 0.5 0.1 0.8 0.1 0.7 0.3 0.5 0.6 0.5 0.2 0.5-0.2 0.6-0.2 0.9-0.5 1.6-0.6 2.1-0.1 1.9 0.9 1.2 0.3 0 0.2 0 0.2 0.1 0.2 0.1 0.1 0 0.4 0.1 0.4 0.1 0.2 0 0.3 0.3 0.3 0.2 0.4 0.1 0.3 0.2 0.1 0.2 0.1 0.3 0.1 0.2 0.3 0.1-0.4 0.5-0.4 0.6-0.4 0.6-0.1 0.7 0 0.9-0.3 0.5-0.4 0.4-0.6 0.6 0.6 0 0.6 0 0.6 0 0.6-0.1 0.3 0.1 0.5 0.2 0.4 0.2 0.4 0.2 0.9 0.4 1.1 0.4 0.9 0.5 0.6 0.9 0.3 0.9-0.1 0.9-0.2 0.9-0.4 0.8-0.2 0.3-0.2 0.2-0.1 0.3 0 0.4 0 0.7 0 0.5 0.1 0.5 0.3 0.5 0.5 0.5 0.7-0.3 0.6-0.6 0.4 0 0.2 0.4 0.3 0.4 0.2 0.4 0.3 0.4 0.3 0.4 0.3 0.4 0.4 0.4 0.3 0.4 0.4 0.2 0.4 0 0.5 0 0.4-0.1 0.4 0.1 0.2 0.3 0.1 0.4 0.1 0.5 0.1 1.5 0.1 2 0.2 1.8 0.5 0.9 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0.1 0.3 0.1 0.2 0 0.1-0.2 0.1-0.2 0.2-0.2 0.2-0.1 0.6-0.1 0.5 0.3 0.4 0.4 0.5 0.5 0.7 0.8 0.7 0.7 0.7 0.7 0.8 0.8 0.3-0.7 0.4-0.9 0.5-0.8 0.4-0.5 0.6 0 0.8 0.2 0.8 0.3 0.6 0.2 0.5 0.1 0.4 0.1 0.5 0.1 0.4 0.2 0.8 0.2 0.7 0.2 0.7 0.2 0.7 0.2 0.4 0.8 0.1 1.7-0.1 1.8 0 1.2 0 1.6 0 1.6 0 1.7 0.1 1.6-0.1 1-0.1 1.4 0 1.4 0.2 0.8 0.4 0.1 0.7 0.1 0.7-0.1 0.5 0 0.4 0 0.3 0.2 0.1 0.2 0 0.6 0 0.6-0.4 0.4-0.5 0.4-0.4 0.4-1 0.8-1 0.9-1 0.8-1 0.8-1.6 1.4-1.5 1.3-1.6 1.3-1.6 1.3-0.6 0.5-0.5 0.4-0.6 0.3-0.7 0.1-0.7 0.1-0.7 0-0.6-0.3-0.5-0.6-0.4-0.7-0.4 0.1-0.3 0.6-0.4 0.6-0.5 0.2-0.2 0.4-0.3 0.4-0.5 0-0.6-0.1-0.2 0.2 0.1 0.5 0.2 0.5-0.4 0-0.6 0-0.3 0.2 0.1 0.4 0.3 0.3 0.4 0.4 0.3 0.5 0.2 0.3-0.2 0.4-0.3 0.4-0.3 0.4-0.3 0.3-0.4 0.7 0.1 0.7 0.2 0.7 0.3 0.7 0.1 0.3 0.1 0.3 0 0.2 0.1 0.3-0.7-0.2-0.8-0.2-0.8-0.3-0.6-0.3-0.5-0.4-0.4-0.2-0.2 0.2-0.4 0.5-0.3 0.3-0.3 0.2-0.3 0.1-0.3 0.1-0.7 0.1-0.5-0.1-0.4 0.1-0.5 0.4-0.1 0.2-0.1 0.2-0.1 0.1-0.3 0.2-0.2 0-0.2 0-0.2 0.1-0.2 0.1-0.3 0.3-0.2 0.4 0 0.4 0 0.6-0.1 0.3-0.2 0.2-0.2 0-0.3 0.2-0.2 0.2-0.2 0.2-0.2 0.1-0.3 0.1-0.2-0.1-0.2-0.2-0.3-0.1-0.2-0.1-0.5 0.2-0.7 0.2-0.6 0.3-0.5 0.3-0.5 0.5-0.5 0.4-0.5 0.5-0.5 0.4 0 0.7 0.2 0.8 0.3 0.9 0.3 0.7 0.7-0.3 0.8-0.3 0.7-0.3 0.8-0.4 0 0.4 0.1 0.4 0.1 0.4 0.1 0.4 0 0.1 0 0.1 0 0.1 0.1 0.4 0.1 0.4 0.1 0.4 0.1 0.4 0.1 0.7 0.1 0.6 0 0.5-0.2 0.7-0.3 0.8-0.2 0.8-0.2 0.8-0.2 0.8-0.1 1.1 0 1.6 0.2 1.4 0.5 0.8 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.4 0.5 0.5 0.4 0.5 0.5 0.5 0.4 0.5 0.4 0.5 0.3 0.4 0.5 0.1 0.7 0.1 0.3 0.1 0.4 0.1 0.4-0.1 0.3-0.3 0.1-0.4-0.1-0.4-0.1-0.3 0.1-0.6 0.9-0.6 0.8-0.6 0.9-0.5 0.8-0.5 0.5-0.8 0.2-0.9 0-0.8 0.1-0.8 0.1-0.8 0.1-0.8 0-0.9 0-0.3 0-0.3 0.1-0.3 0.1-0.2 0.1-0.4 0.5-0.4 0.6-0.3 0.6-0.2 0.5-0.4 0.8-0.4 0.8-0.3 0.8-0.3 0.8-0.2 0.3-0.2 0.3-0.1 0.4-0.1 0.3 0.4 1.2 0.3 1.2 0.3 1.2 0.4 1.2-0.8-0.2-0.8-0.3-0.7-0.3-0.7-0.3-1-0.2-0.8 0.4-0.8 0.7-0.7 0.8 0.5 0.3 0.8 0.5 0.7 0.5 0.2 0.5 0 0.4-0.1 0.5-0.1 0.4-0.1 0.5-1.9-0.3-1.9-0.1-2 0-1.9 0 0 0.4 0 0.4 0 0.4 0 0.4-0.1 0.3-0.3 0.1-0.4-0.1-0.4-0.1-0.9-0.2-0.7-0.3-0.4-0.6-0.4-0.9 0-0.1 0-0.2-0.1-0.2 0-0.2 0-0.2 0-0.1 0-0.2 0-0.2 0-0.6 0-0.5 0-0.5 0-0.6-0.1-0.5-0.2-0.4-0.2-0.5 0-0.4 0.1-0.6 0.2-0.5 0.2-0.5 0.1-0.5-0.1-0.5-0.1-0.4-0.1-0.4-0.2-0.4-0.3-1.1-0.3-1.2-0.1-1.1 0.1-1.1 0.3-1 0-0.9 0-1-0.2-1-0.9-1.1-1-1.1-0.8-1.2-0.5-1.4-0.2-1.6 0-1.7 0-1.7 0-1.7-0.1-0.9 0-1.1-0.1-1-0.2-0.9-0.4-0.6-0.5-0.6-0.5-0.6-0.5-0.6-1-1.4-1-1.4-1-1.5-1.1-1.3 0.3-1.5 0.4-1.4 0.5-1.5 0.4-1.5 0.1-0.8 0-0.7-0.1-0.7-0.3-0.8-0.2-0.9-0.2-0.6 0.1-0.5 0.6-0.5 0.6-0.3 0.5-0.4 0.1-0.5-0.4-0.6-0.5-0.4-0.4-0.5-0.5-0.4-0.6-0.1-0.6-0.5 0.3-1.2 0.9-1.3 0.6-0.8 1.6-1.1 1.7-1 1.8-0.5 1.9 0 0.7 0.1 0.8 0.3 0.7 0.3 0.7 0.2 0.7 0.2 0.6 0 0.7-0.1 0.7-0.3 0.5 0 0.6 0.1 0.6 0 0.4-0.2 0-0.2 0-0.4-0.1-0.4 0-0.3 0.1-0.2 0.3-0.2 0.3-0.1 0.2-0.1 0.9-0.2-0.3-0.5-0.9-0.6-0.8-0.4-0.4-0.4-0.2-0.2-0.3-0.1-0.6-0.1-0.5 0-0.5 0-0.5-0.1-0.5-0.1-0.6 0.1-0.5 0.1-0.6 0.2-0.5 0-0.3-0.3 0.1-0.3 0.1-0.2 0-0.3-0.8-0.7-1-0.2-1.1-0.3-0.7-0.8-0.1-0.1 0-0.2-0.1-0.1 0-0.2-0.7-0.6-1.1-0.4-0.8-0.5 0.1-0.6 0.8-0.2 0.9 0.3 1 0.5 0.8 0.2 0-0.4 0-0.4-0.1-0.4-0.2-0.3-0.4-0.2-0.5 0-0.4 0-0.3-0.1-0.1-0.3 0.1-0.4 0-0.3-0.1-0.3-0.3-0.3-0.2-0.1-0.2-0.1-0.3-0.1-0.8 0-0.5-0.1-0.5-0.3-0.5-0.6-0.8-1-0.7-1.1-0.6-1.1-0.5-1.2-0.2-1.1 0-1.2 0.1-1.2 0.2-1.2-0.2-0.8-0.7-0.5-0.8-0.3-0.6-0.6-0.3-0.8 0-0.9-0.1-0.9-0.3-0.8-0.3-0.5-0.5-0.5-0.5-0.4-0.5-0.1-0.5 0-0.4-0.1-0.3-0.3-0.4-0.5-0.2-0.5-0.2-0.5-0.1-0.5-0.1-0.6-0.7-1.1-1-1.1-1.1-1-0.9-0.8 1-0.9 1.1-1 1.1-0.9 1.1-1 2-1.7 1.9-1.7 2-1.7 2-1.7 0.3-0.2 0.2-0.3 0.3-0.2 0.3-0.2 0.3 0.9 0.2 0.9 0.3 0.9 0.3 1 0.6-0.5 0.5-0.4 0.4-0.5 0.5-0.5 1-1.3 0.6-1.6 0.5-1.6 0.4-1.7 0.1-0.6 0-0.7 0-0.6 0-0.6 0-0.8 0-1 0-1-0.2-0.7-0.6-0.3-0.8-0.1-0.7-0.1-0.6-0.4-0.3-0.6-0.2 0.1-0.1 0.4-0.2 0.4-0.2 0.1-0.3 0-0.2 0-0.2 0.2 0 0.2 0.2 0.2 0.1 0.1 0.1 0.2-0.2 0.5-0.3 0.2-0.4 0.1-0.7 0.1 0.1-0.8-0.4-0.3-0.5-0.2-0.5-0.2-0.1-0.9-0.1-1-0.1-1-0.1-1 0-0.6 0.3-0.4 0.5-0.3 0.6-0.3 0.6-0.4 0.6-0.4 0.7-0.4 0.6-0.4 0.4-0.4 0.3-0.4 0.3-0.5 0.4-0.2 0.9-0.3 0.8-0.3 0.8-0.3 0.9-0.4 0.2 0.1 0.1 0.2 0 0.3 0.2 0.1 0.2 0 0.3-0.1 0.3-0.1 0.3-0.1 0.6-0.8 0.4-1.6 0.3-1.8 0.2-1.3 0.3-1.2 0.2-1.3 0.3-1.3 0.5-1 0.8-0.9 1-0.8 1.1-0.7 1-0.6 0.2-0.2 0.4-0.3 0.3-0.3 0.2-0.1 0.4 0.3 0.4 0.3 0.4 0.4 0.4 0.3 0.9 0.8 0.9 0.8 0.9 0.8 1 0.7 0.2 0.3 0.2 0.2 0.3 0.2 0.2-0.1 0.4-0.4 0.4-0.4 0.4-0.4 0.4-0.3 0.8-0.7 0.7-0.7 0.7-0.7 0.8-0.7z\",\n\tMXOAX:\n\t\t\"M748.6 523.5l0.3 0.7 0 0.9-0.1 0.9 0 0.8 0 0.2 0 0.2 0 0.2 0 0.2-0.8-0.1-0.3 0.5 0 0.8 0 0.8 0 0.4 0 0.6 0 0.6-0.2 0.4-0.4 0.2-0.4 0.3-0.4 0.3-0.4 0.2-0.5 0.3-0.6 0.3-0.6 0.4-0.4 0.4-0.1 0.6 0.1 0.8 0.1 0.8 0.1 0.7 0 0.6 0 0.6-0.1 0.6-0.3 0.6-0.7 1-0.9 1.2-0.6 1.2 0.3 1.2 0.3 0.5 0.2 0.6 0.3 0.5 0.2 0.6 0.4 0.8 0.4 1 0.4 1 0 0.9 0 0.5-0.1 0.6-0.1 0.6-0.2 0.5-0.2 0.4-0.3 0.4-0.2 0.4-0.2 0.3-0.5-0.5-0.4-0.4-0.2-0.4-0.2-0.9-0.4-0.1-0.6 0.2-0.6 0.3-1.1 0.1-1.3-0.3-1.1-0.7-1-0.8-0.6-0.7-0.4-0.2-0.7-0.1-0.5 0.2 0 0.4 0.1 0.6 0 0.4-0.2 0-0.3-0.1-0.1 0.1 0 0.2 0.3 0.1 0.3 0 0 0.2-0.2 0.1-0.4 0.1 2.6 1.8 1.5 0.6 0.8-0.2-2.2-0.8 0-0.2 0.8 0 1.1 0.5 0.6 0.1 0.7-0.1 0.3 0.1 0.4 0.2 1 0.6 0 0.2-0.4 0 0 0.2 2.1 0.5 0.5 0.2-0.6 1.2-6.6-2.7-0.4-0.3-1-0.6-1.3-0.3-2.7 0 0.2 0-1.5 0-0.8-0.2-0.5-0.2-0.5 0.2-0.5 0-1.2 0-0.6-0.1-0.2-0.3 0.1-0.4 0.4-0.3 2.5-0.7 1-0.8 0.2-1.3-0.3-0.4-1.1-0.3-0.4-0.2-0.3-0.2-0.2-0.1-0.2 0.1-0.2 0-0.1 0.5-0.1 0.2-0.2 0-0.3 0.1-0.1 0.1-0.3 0.3-0.2 0.2 0 0.1-0.8 0.4-0.4 0.2-0.5 0.7-0.4 0.3-0.3-0.5-0.1-0.3 0-0.4 0.3-0.3 0.5-0.2 0.2-0.4-0.3-0.4-0.4-0.5-0.1-0.3 0-0.3-0.2-0.5-0.2-0.2-0.3-0.4-0.4-0.3-0.4-0.1-0.7 0.1-0.7 0.4-0.5 0.5-1.3 1.9-0.3 0.2-1.7 0 0.2 0.5-0.2 0.2-0.4 0-0.1 0.2-0.4 0.5 0.1 0.3 0.5 0.2 1.3 0.3 1 0.1 1 0 0.8-0.1 0.4 0 0.6-0.2 0.2-0.2 0.5-0.6 0.3 0 0.1 0.4-0.8 0.5-1.3 0.3-0.8 0 1 0.3 2.6-0.1 0.8 0.4 0.4 0.6-0.1 0.2-1.5-0.5-2.2 0.1-1.5 0.3-1.3 0.2-0.7 0.1-1.4 0.2-1.1 0-0.5-0.1-0.4 0-0.4 0-0.2 0.2 0.1 0.2 0.1 0.2-0.3 0.2-0.8-0.2-0.3 0.3-0.5 0-0.5 0-0.4 0.3 0 0.4-0.6 0.2-0.4 0.3 0 0.3-0.1 0.1-0.3 0.1-0.3 0.2-0.9 0.2-0.4 0.3-0.8 0.9 0.2 0.6-0.3 0.2-0.5 0.4-0.7 0.2-0.1 0.5-0.2 0.3-1.6 0-0.2 0.3-2.1 0.2-0.3 0.4-0.8 0.1-0.1 0.3-1.4 0.6-1.3 0-0.7 0.2-0.7 0.1-0.4 0.3-0.3 0.2 0 0.3-0.6 0.1-0.6 0.2-0.7 0.2-0.9 0.2-0.3 0.2-2.1 0.5-0.2 0.3-1 0.2-0.8 0.5-0.6 0.2-0.8 0.5-0.3 0-0.2 0.2-0.3 0.2-0.3-0.2-0.3 0.3 0.1 0.4-2.3 1.1-0.9 0.6-1.5-0.1-2.1 0.1-1.1-0.3-0.9-0.1-0.4 0.4-0.7 0.3-0.5 0.3-0.5 0.1-0.6 0-0.7-0.2-0.2 0.2-1.6-0.6-2-0.9-3.5-0.7-1.2 0-2.4-1.5-1.8-0.5-0.9-0.2-0.7-0.7 0.1-0.1-0.5-0.8-0.4 0.1-0.8-0.4-1.6-1-1.3-0.5-1.8-0.5-0.5 0.1-1.7-0.4-0.7 0.4-2.6-0.3-2-0.7-0.8 0.2-1.7-0.4-1.3-0.1-0.3 0.2-0.3 0.3-1-0.2-1.6-0.4-0.5-0.2-0.6-0.5-0.7-0.2-0.3-0.2-0.2-0.2-0.2-0.1-0.5-0.4-1.9-1.4-1.1-0.6-3-1.7-1-0.3-0.9-0.5-0.6-0.5 1.7 0.5 0.9 0.1 0.4-0.4-0.4 0-0.4-0.3-0.4-0.2-0.4 0.3-0.6-0.3-0.6-0.1 0-0.1-0.1-0.1-0.1-0.2-0.1 0-0.2 0.2-0.2 0.1-0.2 0.1-0.5-0.1-2.9-0.9-3.7-0.7-1.8-0.7-0.7-0.2-0.4-0.1-0.2-0.1 0-0.1 0-0.1 0.5-0.5 0.5-0.4 0.5-0.2 0.8-0.2 0.8-0.1 0.8 0 0.7-0.1 0.7-0.4 0.7-0.7 0.6-0.8 0.2-0.9-0.4-1.1-0.4-0.7-0.1-0.6 0.4-0.6 0.8-0.3 0.5 0 0.5 0.1 0.4 0 0.6-0.2 0.1 0 0-0.1 0.1-0.1 0-0.1 0.3-0.9-0.2-0.8-0.2-0.8-0.2-0.9 0.3-0.1 0.4-0.1 0.4 0 0.3 0.1 0.5 0.1 0.4-0.1 0.3-0.1 0.4-0.3 0.2 0 0.2-0.1 0.1-0.1 0.2-0.2 0.1-0.1 0-0.1 0.1-0.1 0-0.1 0.4-0.3 0.3-0.3 0.2-0.4 0.1-0.5 0-0.5 0.1-0.6 0.1-0.5 0.1-0.6 0-0.3 0-0.3 0-0.3 0.1-0.3 0.3-0.4 0.3-0.4 0.2-0.4 0.2-0.4 0.2-0.3 0.1-0.3 0.1-0.3 0.1-0.3 0-0.4 0-0.3-0.1-0.3-0.2-0.3-0.8-1.2-0.9-1.2-0.9-1.1-0.9-1.1-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.1-0.4-0.1-0.4 0-0.4 0-0.4 0-0.7-0.1-0.4-0.7-0.4-0.8-0.4-0.7-0.6-0.2-0.6-0.1-0.3-0.4-0.2-0.5 0.1-0.7 0.2-0.6 0.1-0.5-0.3-0.6-0.1-0.1 0-0.1-0.1-0.1 0.1-0.3 0.1-0.5 0.1-0.4-0.1-0.4-0.2-0.2-0.2-0.3-0.2-0.2-0.2-0.2 0-0.1-0.1 0-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.4 0-0.4 0-0.4 0.3-0.3 0.2-0.2 0-0.1-0.1-0.2-0.2-0.1-0.4-0.6-0.1-0.7 0.1-0.7 0.2-0.8 0.1-0.4 0.1-0.4 0.1-0.4 0.1-0.4 0.1-0.5 0.1-0.6 0.2-0.6 0.2-0.5 0.3-0.7 0.2-0.5-0.1-0.5-0.5-0.6 0.1-0.1 0.2-0.1 0.1-0.1 0.2-0.1 0.1-0.2 0.1-0.1 0.2-0.1 0.1-0.1 0.2 0.1 0.2 0.1 0.3 0.1 0.2 0.1 1-0.1 0.8-0.8 0.6-1 0.4-1 0.2-0.3 0.3-0.2 0.4-0.1 0.4 0 0.3 0 0.2 0 0.3 0 0.2 0 0.5 0 0.5 0.1 0.4 0 0.5 0 0.3 0 0.3 0 0.2 0 0.3 0 0.3-0.1 0.2 0 0.3-0.1 0.2 0 0.3-0.1 0.4-0.1 0.3 0 0.3 0.1 0.2 0.3 0.1 0.4 0.1 0.5 0 0.4 0 0.2 0.1 0.2 0 0.2 0.1 0.2 0.1 0.5 0.2 0.4 0.3 0.2 0.5 0 0.3-0.1 0.4-0.2 0.3-0.1 0.4-0.2 0.3-0.2 0.3-0.2 0.3-0.3 0.3-0.3 0.3-0.2 0.3-0.3 0.2-0.2 0.2-0.4-0.1-0.3 0-0.2-0.1-0.3 0-0.3-0.3-0.4-0.2-0.3-0.3-0.4-0.3-0.3-0.1 0-0.1-0.1-0.1-0.1-0.5-0.3-0.3-0.4-0.1-0.6 0.2-0.5 0.2-0.3 0.2-0.4 0.2-0.3 0.2-0.4 0.3-0.5 0.2-0.5 0.3-0.5 0.3-0.5 0.3-0.5 0.3-0.5 0.3-0.4 0.4 0.1 0.8-0.2 1-0.9 0.9-0.4 0 1.2-0.3 1-0.5 1.3-0.3 1.3 0.1 0.9 0.3 0.5 0.5 0.3 0.5 0.2 0.4 0.3 0.3 0.2 0.2 0.2 0.3 0.1 0.2 0.2 0.3 0.3 0 0.4 0 0.5 0.1 0.5 0.2 0.3 0.2 0.3 0.3 0.4 0.2 0.3 0.2 0.4 0.4 0.2 0.4 0.2 0.4 0 0.4-0.1 0.3-0.2 0.3-0.4 0.1-0.4 0.7-1.6 1-1.3 1.2-1 1.5-0.6 0.1-0.1 0.1 0 0.1 0 0.6-0.2 0.6-0.1 0.6 0.1 0.6 0.2 0.5 0.3 0.4 0.2 0.5 0.2 0.5 0.1 0.1 0 0.1 0 1 0.3 0.9 0.3 0.9 0 0.8-0.7 0.2-0.2 0.1-0.2 0.1-0.2 0.1-0.3 0.1 0 0-0.1 0.1 0 0.1-0.2 0.1-0.2 0.2-0.2 0.1-0.1 0.1-0.2 0.2-0.1 0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.4-0.3 0.4-0.2 0.5-0.1 0.4-0.1 0.2-0.1 0.2-0.1 0.2-0.1 0.2-0.1 0.5-0.4 0.4-0.5 0.2-0.5 0.3-0.7 0.3-0.5 0.3-0.5 0.2-0.5 0.1-0.6 0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.7-0.7 0.7-0.8 0.6-0.9 0.3-0.9-0.1-1-0.3-1.1-0.3-1-0.2-0.9 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 1.1 0.9 0.9 0.6 1.1 0.4 1.3 0.2 0.9 0.2 0.6 0.3 0.5 0.5 0.3 0.8 0.2 1.2 0.5 1.4 0.5 1.2 0.8 0.9 0.2 0.2 0.2 0.2 0.3 0.1 0.2 0.1 0.4 0.3 0.4 0.4 0.3 0.4 0.3 0.5 0.2 0.8 0.2 0.9 0.2 0.8 0.3 0.2 0.1 0.1 0.2 0.1 0.1 0.1 0.4 0 0.3-0.1 0.3 0.1 0.1 0.2-0.1 0.3 0 0.2 0.3 0.4 0.3 0.1 0.4 0.1 0.4 0.1 0.4-0.1 0.1-0.2 0.4-0.5 0.2-0.2 0.4 0 0.6 0.1 0.3 0.2 0.4 0 0.5 0 0.3 0 0.1 0 0.1 0 0.1 0 0.3-0.1 0.3 0 0.2 0 0.3 0.1 0.3 0.2 0.3 0.2 0.4 0.1 0.3 0.1 0.3 0 0.2 0.1 0.3 0.1 0.2 0 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0.6 0.8 0.4 1 0.3 1 0.5 0.9-0.5 1.5-0.8 1.2-0.9 1.1-1 1.1-0.1 0.2-0.1 0.1 0 0.1-0.1 0.2-0.3 0.9 0 0.8 0.3 0.9 0.5 0.9 0.6 1.2 0.6 1.2 0.6 1.2 0.6 1.2 0.4 0.5 0.4 0.2 0.5 0.1 0.5 0.2 0.1 0 0.1 0.1 0.1 0 0.1-0.1 0.7-0.1 0.5-0.3 0.5-0.2 0.6 0 0.5 0.2 0.3 0.1 0.4-0.1 0.3-0.4 0.3 0 0.3 0 0.2-0.1 0.1-0.2 0-0.2 0-0.1 0.1-0.2 0.1 0 0.4-0.2 0.5-0.3 0.5-0.3 0.3-0.1 0.4-0.1 0.3-0.3 0.2-0.4 0.2-0.3 0.6-0.3 0.6-0.2 0.7 0 0.6 0 0-0.2 0.1-0.1 0.1-0.1 0.1-0.2 0.8-0.1 0.6-0.2 0.3-0.5 0.3-0.7 0.3-0.1 0.3 0.1 0.3 0.1 0.3 0.1 0.2-0.1-0.1-0.2-0.2-0.3 0.2-0.2 0.2 0 0.3 0 0.3 0 0.1 0 0.3 0.2 0.1 0.4-0.1 0.4 0 0.4-0.1 0.2 0 0.4-0.1 0.3 0 0.2-0.2 0.2-0.3 0.1-0.3 0.1-0.3 0.2-0.1 0.3-0.1 0.4-0.1 0.3 0 0.4 0.9 1 0.8 1 0.9 1 0.9 1 0.5 0.4 0.4 0.4 0.4 0.4 0.3 0.5 0.7 0.2 0.8 0.3 0.7 0.5 0.4 0.5 0.1 0.2 0 0.2 0.1 0.3 0 0.2-0.1 0.1-0.1 0.1-0.1 0-0.1 0.2 0.2 0.4 0.1 0.5 0.2 0.5 0.1 0.5 1 0.6 1.8 0.2 2 0.1 1.5 0 1 0.1 0.9 0.1 1 0 1 0.1 0.8 0.1 0.9 0.1 0.9 0 0.8 0.1 4.5 0.3 4.5 0.2 4.5 0.3 4.4 0.3z\",\n\tMXPUE:\n\t\t\"M630.2 422.3l0.4-0.2 0.3-0.3 0.3-0.4 0.2-0.5 0.2-0.6 0.1-0.6 0.1-0.6 0-0.7 0-0.3-0.1-0.4 0-0.3-0.1-0.3-0.2-0.2-0.2-0.3-0.1-0.3 0.4-0.1 0.3-0.2 0.2-0.3 0-0.5 0-0.4 0.2-0.3 0.4-0.2 0.3-0.1 0.3-0.3 0-0.4-0.1-0.5 0-0.5 0.3-0.5 0.3-0.1 0.4 0 0.3 0.1 0.3 0.2 0.8 0 0.5-0.1 0.5 0.1 0.7 0.6 0.4 0.5 0 0.7 0 0.6 0 0.7 0.2 0.6 0.3 0.5 0.4 0.5 0.3 0.5-0.3 0.4-0.3 0.4-0.1 0.3 0.5 0.2 0.3 0 0.3 0 0.4-0.1 0.3 0 0.3 0.1 0.4 0.1 0.4 0.1 0.4 0.1 0.6 0.3 0.5 0.8 0.3 0.9 0 0.7 0 0.2-0.1 0.1-0.1 0.1-0.2 0.1-0.3 0.5-0.3 0.6-0.4 0.6-0.4 0.4-0.5 0.1-0.4-0.2-0.3-0.4-0.3-0.5-0.5-0.4-0.3 0.1-0.3 0.3-0.4 0.4-0.4 0.1-0.4-0.1-0.4 0-0.3 0.3 0.2 0.5 0.2 0.5 0 0.5-0.1 0.5 0 0.3 0.1 0.2 0.1 0.2 0.1 0.2-0.1 0.3-0.1 0.4-0.2 0.3-0.2 0.4 0.2 0.5 0.4 0.4 0.6 0.2 0.4 0.3 0.2 0 0.1 0.2 0.1 0.1 0.1 0.1 0 0.1 0.1 0 0 0.1 0 0.1 0.2 0.5 0.2 0.5 0.3 0.3 0.5 0 0.1 0 0.1-0.1 0.1 0 0.8-0.3 0.5 0.1 0.2 0.6 0.1 0.8 0 0.3 0.1 0.1 0.1 0.2 0.2 0.1 0.1 0 0.1 0 0.1 0 0.2-0.1 0.2-0.1 0.2-0.2 0.2-0.1 0.3-0.3 0.3-0.4 0.3-0.3 0.2-0.4 0.4-0.5 0.3-0.7 0.3-0.5 0.6-0.4 0.2 0 0.1 0 0.1 0 0.1 0 0.8-0.3 0.6 0.1 0.6 0.3 0.8 0.6 0.4 0.3 0.5 0.4 0.5 0.3 0.6 0.2 0.2 0.2 0.3 0.1 0.2 0.1 0.3 0.1 1.1 0.4 1.1 0.4 0.5 0.7-0.5 1.3-0.4 0.4-0.4 0.4-0.4 0.4-0.3 0.4-0.3 0.3-0.2 0.2-0.2 0.3-0.2 0.3-0.5 0.4-0.4 0.5-0.4 0.6-0.3 0.6-0.1 0.1 0 0.1-0.1 0.1-0.1 0.1-0.1 0.2-0.1 0.2 0 0.2 0 0.2 0 0.3 0 0.2 0 0.3 0.1 0.2 0.1 1.3-0.1 1.8-0.5 1.7-0.9 0.9-0.5 0-0.3 0.5-0.2 0.8 0 0.6 0 0.1 0 0.1 0 0.1-0.1 0.5 0.3 0.3 0.4 0.2 0.4 0.3 0 0.2-0.1 0.3 0 0.3 0.1 0.2 0.2 0.1 0.2 0.1 0.1 0.2 0.2 0.1 0.3 0.6-0.3 0.5-0.5 0.3-0.6 0.1-0.4-0.1-0.5 0.1-0.2 0.2 0.2 0.5 0.4 0.2 0.4 0 0.5 0 0.4 0.1 0.2 0.2 0.1 0.3 0.2 0.2 0.2 0.2 0.3-0.1 0.4-0.1 0.3-0.2 0.3 0.1 0.5 0.5 0.4 0.7 0.4 0.6 0.5 0.3 0.1 0 0.1 0 0.2 0 0.1 0.1 0.7 0.1 0.8 0.4 0.8 0.2 0.6-0.1 0-0.1 0.1 0 0.4-0.2 0.4-0.1 0.3 0.1 0.4 0.1 0.4 0.2 0.4 0.1 0.4 0.3 0.3 0.2 0 0.2 0 0.2-0.2 0.1-0.1 0.2-0.2 0.1-0.2 0.2-0.1 0.1-0.1 0.2-0.2 0.2-0.1 0.1-0.1 0.2-0.1 0.1-0.2 0.2-0.2 0.2-0.2 0.1-0.2 0-0.1 0-0.1 0-0.1 0-0.1-0.1-0.3 0.1-0.2 0.1-0.1 0.2-0.1 0.3-0.3 0.3-0.6-0.1-0.6-0.3-0.5-0.1-0.4 0.2-0.3 0.2-0.4 0.2-0.4 0.2-0.3 0-0.4 0.1-0.3 0-0.3 0.1-0.2 0.8 0 0.9 0.2 1 0.2 0.7 0.1 0.3 0.1 0.4 0.1 0.3 0 0.4 0 0.1 0 0.2 0 0.1 0 0.1 0 0.1 0 0.1 0 0.1 0.1 0 0 0.2 0 0.1 0 0.1 0 0.1 0.1 0.4 0.2 0.3 0.1 0.4 0.1 0.3 0 0.7-0.2 0.2-0.5 0.1-0.6 0.2-0.3 0.2-0.2 0.3-0.1 0.4-0.2 0.3-0.2 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.1 0 0 0.1-0.3 0.8 0.1 0.9 0.3 1 0.3 0.8 0.2 0.3 0.2 0.2 0.2 0.3 0.2 0.1 0.6 0.2 0.4-0.1 0.5-0.2 0.4-0.2 0.4 0 0.3 0.2 0.3 0.2 0.3 0 0.3 0.1 0.3 0 0.3 0.1 0.3 0.1 0 0.1 0.1 0.1 0.1 0.2 0.1 0.2 0 0.3 0 0.2 0.1 0.6 0.4 0.5 0.3 0.3 0.2 0.5-0.2 0.5-0.3 0.5-0.1 0.6 0.3 0.4 0.4 0.1 0.4 0 0.5-0.1 0.4 0.2 0.4-0.1 0.4-0.3 0.4-0.4 0.3-0.2 0.4-0.2 0.4 0 0.4-0.1 0.4-0.1 0.7-0.2 0.7-0.2 0.7-0.1 0.8-0.2 0.1 0 0.1 0 0.7-0.1 0.3 0.6 0 0.9 0.1 0.7 0.4 0.6 0.5 0.5 0.5 0.5 0.3 0.5-0.1 0.6-0.2 0.5-0.3 0.5-0.3 0.5-0.3 0.7-0.2 0.5-0.4 0.5-0.5 0.4-0.2 0.1-0.2 0.1-0.2 0.1-0.2 0.1-0.4 0.1-0.5 0.1-0.4 0.2-0.4 0.3-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.2-0.1 0.1-0.2 0.1-0.1 0.2-0.1 0.1-0.2 0.2-0.1 0.2-0.1 0.2-0.1 0 0 0.1-0.1 0-0.1 0.3-0.1 0.2-0.1 0.2-0.2 0.2-0.8 0.7-0.9 0-0.9-0.3-1-0.3-0.1 0-0.1 0-0.5-0.1-0.5-0.2-0.4-0.2-0.5-0.3-0.6-0.2-0.6-0.1-0.6 0.1-0.6 0.2-0.1 0-0.1 0-0.1 0.1-1.5 0.6-1.2 1-1 1.3-0.7 1.6-0.1 0.4-0.3 0.4-0.3 0.2-0.4 0.1-0.4 0-0.4-0.2-0.4-0.2-0.2-0.4-0.2-0.3-0.3-0.4-0.2-0.3-0.2-0.3-0.1-0.5 0-0.5 0-0.4-0.3-0.3-0.2-0.2-0.3-0.1-0.2-0.2-0.3-0.2-0.4-0.3-0.5-0.2-0.5-0.3-0.3-0.5-0.1-0.9 0.3-1.3 0.5-1.3 0.3-1 0-1.2-0.9 0.4-1 0.9-0.8 0.2-0.4-0.1-0.3 0.4-0.3 0.5-0.3 0.5-0.3 0.5-0.3 0.5-0.2 0.5-0.3 0.5-0.2 0.4-0.2 0.3-0.2 0.4-0.2 0.3-0.2 0.5 0.1 0.6 0.3 0.4 0.5 0.3 0.1 0.1 0.1 0.1 0.1 0 0.3 0.3 0.3 0.4 0.2 0.3 0.3 0.4 0 0.3 0.1 0.3 0 0.2 0.1 0.3-0.2 0.4-0.2 0.2-0.3 0.3-0.3 0.2-0.3 0.3-0.3 0.3-0.3 0.2-0.3 0.2-0.4 0.2-0.3 0.1-0.4 0.2-0.3 0.1-0.5 0-0.3-0.2-0.2-0.4-0.1-0.5-0.1-0.2 0-0.2-0.1-0.2 0-0.2 0-0.4-0.1-0.5-0.1-0.4-0.2-0.3-0.3-0.1-0.3 0-0.4 0.1-0.3 0.1-0.2 0-0.3 0.1-0.2 0-0.3 0.1-0.3 0-0.2 0-0.3 0-0.3 0-0.5 0-0.4 0-0.5-0.1-0.5 0-0.2 0-0.3 0-0.2 0-0.3 0-0.4 0-0.4 0.1-0.3 0.2-0.2 0.3-0.4 1-0.6 1-0.8 0.8-1 0.1-0.2-0.1-0.3-0.1-0.2-0.1-0.2-0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.2-0.2 0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.4-0.4-0.4-0.4-0.4-0.5-0.4-0.4-0.4-0.3-0.3-0.1-0.3 0-0.5 0.1-0.9 0.2-1 0.1-1-0.1-0.9-0.2-0.2 0-0.3-0.1-0.3-0.2-0.2-0.1-0.6-0.1-0.6-0.1-0.6-0.2-0.6-0.1-1.3-0.6-1.1-0.7-0.7-1.1-0.4-1.4-0.3-0.2-0.7-0.1-0.7-0.1-0.5-0.1-0.4-0.2-0.2-0.5-0.1-0.6 0-0.6-0.4-0.2-0.3 0.3-0.4 0.2-0.5-0.3-0.3-0.3-0.2-0.4 0-0.3 0-0.5-0.2 0.1-0.2 0-0.2 0.1-0.2 0 0-0.4-0.2-0.4-0.1-0.3-0.2-0.4 0-0.5 0-0.5 0-0.4-0.1-0.5 0.7-0.5 0.6-0.3 0.6-0.3 0.8-0.2 0.5-0.3 0.2-0.5 0.1-0.5 0.4-0.4 0.1 0 0.4-0.1 0.2-0.3 0.1-0.3 0.3-0.2 0.3-0.2 0.4-0.1 0.4 0 0.4-0.1 0.5-0.1 0.5 0.2 0.5 0.3 0.5 0.3 0.5 0.5 0.6 0.6 0.6 0.3 0.5-0.1 0.1-0.4-0.1-0.6-0.2-0.6-0.1-0.5-0.2-0.6-0.2-0.8-0.3-0.7-0.3-0.5-0.1-0.1 0-0.1-0.1-0.1-0.1-0.5 0-0.4-0.1-0.5-0.2-0.4 0-0.3-0.1-0.3 0-0.3-0.1-0.3 0.6 0.1 0.6 0.1 0.5 0 0.6 0 0.1-0.1 0.1-0.2 0-0.1 0-0.2-0.2-0.4-0.2-0.4-0.2-0.4-0.3-0.4-0.1 0 0-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2 0-0.2 0.1-0.2 0-0.1 0-0.1 0-0.1-0.2-0.1-0.2-0.1-0.1-0.1-0.2-0.1 0.4-0.5 0.4-0.5 0.4-0.5 0.5-0.5 0.5-0.4-0.2-0.4-0.3-0.5-0.1-0.6 0.3-0.2 0.2 0.1 0.2 0 0.1-0.5 0-0.5 0-0.4 0.1-0.5 0-0.5 0-0.1 0.1-0.1 0-0.1 0-0.1 0.1-0.3 0-0.3-0.1-0.2-0.2-0.2-0.1-0.4 0-0.4 0-0.5 0-0.3 0-0.3 0.1-0.3 0-0.3 0-0.2 0-0.3 0.1-0.3 0.2-0.2 0.2-0.1 0-0.4-0.1-0.4 0-0.4-0.1-0.4 0-0.4-0.1-0.4-0.1-0.4-0.1-0.4 0-0.1 0-0.1 0-0.1-0.2-0.8-0.3-0.9-0.1-0.9 0.2-0.8 0.1-0.4 0.1-0.4 0.2-0.3 0.3-0.3 0.8 0.2 0.9 0.3 0.9 0.2 0.8-0.1 0.5-0.3 0.3-0.1 0.3 0.1 0.5 0.4 0.1 0.1 0 0.1 0 0.1 0 0.1 0 0.4 0.2 0.4 0.1 0.3 0.2 0.3 0.2 0.4 0.1 0.3 0 0.4 0.3 0.2 0.1 0 0.1 0.1 0.1 0 0.4 0.4 0.4 0.4 0.3 0.4 0.2 0.5 0.1 0.2 0.1 0.2 0.1 0.3 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0.1 0.2 0.2 0.2 0.2 0.2 0.1 0.3 0.1 0 0.1 0.1 0 0.1 0.1 0.2 0.1 0.1 0.1 0.1 0.1 0.1 0 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0 0.1 0.1 0.2 0.1 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.3 0.2 0.3 0.2 0.4 0.3 0.3 0.6 0.2 0.6-0.2 0.6-0.3 0.6-0.1 0.7-0.3 0.6-0.7 0.5-0.8 0.5-0.7 0.3 0 0.2 0.1 0.3 0.1 0.2 0.2 0.1 0 0.1 0 0.1 0.1 0.1 0 0.1 0.1 0.2 0.1 0.2 0 0.2 0.1 0.1 0.1 0.7 0.3 0.6 0.3 0.7 0.1 0.6-0.3 0.2-0.2 0.3-0.3 0.2-0.2 0.2-0.2 0.2-0.5-0.4-0.5-0.4-0.5-0.3-0.6 0-0.1 0.2-0.3 0.3-0.2 0.3-0.2 0.3-0.1 0.1-0.1 0.2-0.2 0.1-0.1 0.1-0.1 0.7 0.2 0.8 0.2 0.8 0.1 0.5-0.4 0.1 0.1 0 0.1 0.1 0 0 0.1 0.7 0.4 0.9 0 0.8-0.4 0.6-0.7 0.2-0.8-0.3-0.6-0.5-0.2-0.8 0.1-0.4-0.1-0.3-0.3-0.3-0.2-0.3-0.3-0.3-0.4-0.3-0.4-0.4-0.4-0.3-0.3-0.5-0.3-0.5 0-0.5 0.2-0.5 0.3-0.5 0.2-0.2-0.4-0.1-0.6-0.2-0.4-0.2 0-0.2-0.1-0.1-0.2 0-0.3 0.1-0.3 0.2-0.1 0.3 0 0.3-0.1 0.2-0.8-0.9-0.5-1.1-0.3-0.8-0.3-0.5-0.4-0.3-0.5-0.4-0.4-0.5-0.2-0.6-0.1-0.4-0.1-0.2-0.3 0.3-0.5 0.1-0.9-0.5-0.9-0.5-0.3-0.3 0.4 0 0.6 0.1 0.3-0.1 0.3-0.5 0.2-0.4 0-0.4 0-0.3 0-0.4-0.1-0.8-1-0.7-1.2-0.7-1.3-0.7-1.1-0.2-0.7 0.1-0.7 0.4-0.7 0.5-0.7 0.1-0.1 0-0.1 0.1-0.1 0.1-0.1 0.2-0.3 0.2-0.3 0.3-0.4 0.2-0.3 0.2-0.9 0.3-0.8 0.4-0.7 0.7-0.5 0.5-0.6 0-0.5-0.3-0.5-0.3-0.5 0-0.3 0-0.3 0-0.2 0-0.3-0.4-1.2-0.7-0.3-1 0.1-1 0.5-0.3 0-0.2 0-0.2-0.2-0.1-0.2-0.3-0.2-0.2-0.3 0-0.3 0.2-0.3 0.2-0.5 0.1-0.6 0.2-0.5 0.4-0.4 0.1 0 0.1 0 0.1 0 0.2-0.1 0.4 0 0.5-0.1 0.5 0 0.3-0.2 0.2-0.4 0.3-0.4 0.2-0.3 0.2-0.4 0.3-0.5 0.6-0.4 0.7-0.3 0.6-0.3 0.1-0.2 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.2 0.2-0.2 0.2-0.2 0.2-0.3 0.1-0.1z\",\n\tMXQUE:\n\t\t\"M569.2 439.1l-0.7-0.3-0.5-0.4-0.3-0.6 0-0.8 0-0.2 0-0.2 0-0.2 0-0.2 0-1.7-0.6-1.7-1.1-1.5-1.4-0.7-0.2-0.2-0.4-0.1-0.3-0.1-0.3-0.1-0.3-0.7-0.5-0.3-0.6-0.3-0.3-0.7-0.3-0.8-0.5-0.6-0.6-0.6-0.6-0.7-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.1-0.4-1.1-0.1-1 0-1.1-0.1-1.2-0.3-0.5-0.4-0.6-0.3-0.6-0.4-0.5-0.6-1.3-0.3-1.2 0.1-1.3 0.6-1.3 0.3-0.5 0.2-0.4 0.2-0.5 0.1-0.5 0-0.6 0.1-0.5 0.1-0.5 0.4-0.4 0.3-0.6 0.4-0.7 0.4-0.5 0.6-0.1 0.4 0.6 0.1 0.6 0.2 0.6 0.9 0.3 0.6 0.1 0.5 0.1 0.6 0 0.6-0.2 0.4-0.3 0.5-0.4 0.5-0.2 0.5 0 0.1 0.1 0.1 0 0.1 0.1 0.4 0.5 0.4 0.6 0.4 0.3 0.6 0 0.3-0.1 0.2-0.3 0.1-0.3 0.2-0.2 0.3-0.1 0.3 0 0.2-0.1 0.3-0.3 0.3-0.6 0.1-0.7 0.1-0.8 0-0.7 0.1-1.1 0.1-1.1 0.2-1.1 0.4-1.1 0.4-0.6 0.7-0.4 0.8-0.3 0.7 0 0.5 0.1 0.4 0.1 0.4 0.2 0.4 0.4 0.5 0.5 0.8 0.2 0.8-0.2 0.8-0.2 0.4-0.2 0.1-0.3 0.1-0.3 0.2-0.3 0.3-0.2 0.3-0.2 0.4-0.1 0.3-0.2 0.4-0.3 0.2-0.4-0.1-0.4-0.3-0.3-0.8-0.1-0.8-0.1-0.5-0.5-0.1-0.9 0.1-0.4 0.1-0.3 0-0.2-0.1-0.5-0.1-0.4 0-0.4 0.2-0.4 0-0.4 0.3-0.9 0.4-0.9 0.5-0.8 0.8-0.3 0.4 0.2 0.4 0.2 0.4 0.2 0.2 0.3 0.2 0.3 0.2 0.1 0.2 0.1 0.2 0.2 0.2 0.3 0.1 0.4 0.2 0.4 0.3 0.2 0.2 0.1 0.3 0.3 0.2 0.2 0.3 0.2 0.3 0 0.2-0.1 0.1-0.1 0.3-0.1 0.6 0 0.8 0 0.7-0.1 0.4-0.6 0.2 0 0.2-0.1 0.2 0 0.3-0.1 0.3-0.1 0.4 0.1 0.4 0 0.3 0 0.2-0.2 0.1-0.2 0.2-0.2 0.1-0.2 0.1-0.2 0.1-0.3 0.2-0.2 0.2-0.2 0.1-0.3 0.1-0.4 0-0.4 0.2-0.3 0.2-0.1 0.1-0.1 0.2 0 0.1 0.1 0.4 0.2 0.2 0 0.2-0.1 0.3-0.2 0.3-0.3 0-0.3 0-0.3 0-0.3 0.5-0.5 0.7-0.4 0.5-0.5 0-0.7 0 0.2 0.1 0.1 0 0.2 0.1 0.1 0.2 0.8 0.2 0.7 0.2 0.8 0.2 0.7 0.3 0.8 0.2 0.8 0.3 0.8 0.4 0.7 0.2 0.4 0.2 0.6 0.2 0.5 0.1 0.4-0.1 0.6-0.1 0.6-0.1 0.6-0.2 0.6 0.6-0.1 0.5 0.1 0.5 0.3 0.4 0.4 0 0.1 0 0.3 0 0.2 0 0.2 0 0.6 0 0.7 0.1 0.7-0.3 0-0.4-0.1-0.3 0-0.2 0.2-0.2 0.1-0.2 0-0.7-0.1-0.9 0.4-1.3 1.1-0.9 0.2-0.5-0.3-1-0.6-0.6 0-0.3 0.1-0.4 0.6-0.3 0.2-0.6 0.1-0.2 0.1-0.4 0.5 0 0.4 0.7 1.2 0 0.5-0.2 0.4-0.6 0.9-0.2 0.5-0.1 1.1-0.2 0.6-0.2 0.3-0.3 0.2-1.6 1-0.6 0.9-0.3 1-0.5 2 0 0.3 0.1 0.7 0.2 0.5 0.3 0.5 0.2 0.1 0.1 0.2-0.4 0.1-0.4 0.2-0.2 0.2-0.3 0.2-0.2 0.1-0.2 0-0.2 0.1-0.2 0.1-0.1 0.2-0.1 0.2-0.1 0.2-0.1 0.2-0.2-0.1-0.1-0.1-0.1 0-0.2-0.1-0.2 0.2-0.2 0.2-0.1 0.3-0.2 0.3-0.2 0.3-0.4 0.3-0.5 0-0.4-0.1-0.1 0.1 0 0.1-1 0.1-1.1 0.4-1 0.5-1 0.4 0 0.1 0.1 0.2 0 0.2 0 0.1-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.6 0.4-0.7 0.5-0.7 0.4-0.6 0.4 0.3 0.5 0.4 0.5 0.3 0.4 0.4 0.5-0.8 0.1-0.6 0.2-0.4 0.3-0.6 0.7-0.3 0.4-0.3 0.4-0.3 0.4-0.3 0.4-0.5 0.7-0.4 0.7-0.4 0.7-0.5 0.6-0.1 0-0.1 0.1 0 0.1-0.1 0.1-0.3 0.4-0.2 0.5-0.3 0.5-0.3 0.5z\",\n\tMXROO:\n\t\t\"M884.3 499.4l-0.2-2.5 0.3-0.4 2.5-3 0.6-1.7 0-1.9-0.2-2.2-0.5-2.7 0.1-0.6 0.3-0.7 0.1-0.7-0.5-0.2-0.4-0.2 0.1-0.5 0.3-0.5-0.2-1.5-1-1.3-0.2-1.8 0.9-6-0.1-2.2 1.3-1.4 0.4-0.8 0-1 0.1-0.5-0.1-2.2 0.2-1.9-0.6-2.2-2.8-3.5-3.5-3.1-1.8-1.3-1.6-1.3-1.2-1.8 0.6-1.1 0.4-1.1 0.3-1 0.1-0.9-0.1-1 0.8-0.4 0.9 0.1 3.1-0.4 0.8-0.8 0.7-0.8 1.8-0.6 0.9-0.6 3.2-0.1 0.5-0.1 0.5-0.3 0.3-0.3 1.7-1.7 0.8 0.4 0.6 0.6 0.3-0.5-0.2-0.6 0.6-0.8 1.7-1.1 0.9-0.4 0.9-0.6 0.9-0.4 1.6-0.3 1.6-1 1.7-0.5 1.3-1.5 0.7-2 0.8-0.6 0.9 0.1 0.6 0.7 0.3 0.9 0.7 0 0-1.1-0.4-1.3 0.5-1 0.6-0.9 0.5-0.9 0.7-0.6 0.9-0.2 0.8 0.6 0.8 0.4 0.9-0.3 1.7 0.1 0.8-0.3 2.4-1.3 2.4-2.1 0.9-0.6 1.5-1.2 1.8-1.1 0.9-1.8 0.4-1.1 0.6-1 0.2-1 0.1-1 1.8-3.5-0.1-1.9-1.3-2.9 0-1.2 0.4-1.9 1.2-1.7 0.1-1-0.4-5.8 0-0.4 0.8 0 0.2 0 0.1 0.2 0.2 0.2 0.2 0.2 0.3 0-0.2 0.2-0.1 0-0.2 0-0.1-0.2-0.2 0 0.3 0.4 0.5 0 1.3-0.1 0.6 0 1.7 0.6 1.7-0.1 0.5 0.2 0.5 0.2 0.5 0 2.1-0.9 0.3-0.3 0.4-0.6 0.2-0.3 0.1-0.3 0-0.3-0.2-0.2 0-0.3 0-0.2 0.1-0.2-0.1-0.1-0.4-0.2-0.7 0-0.7 0.2-0.6 0.3-0.5 0.5-0.5 0.2-0.7 0.1-0.7-0.2-0.6-0.2-0.2 0.2-0.1-0.5 0-0.2-0.5 0.3-0.7 0.6-0.6 0.2 0 0.1 0.1 0 0.1 0.1-0.3 0.1-0.2-0.1-0.1-0.2 0-0.4 0.9-0.8 0.3-0.3 0.2-0.2 0.2 0 0.7 0 0.9 0.2 0.2 0.1 0.6 0.1 0.8-0.2 3.2-1.6 0.7-0.1 1.9 0.7 0.5 0.3 0.8 0.8 1.5 2.2 0.2 0.3 0.2 0.3 0.1 0.3 0.1 0.6 0.2 0.2 0.3 0.1 0.3 0.1 0.1-0.4 0.2 0 0.6 0.2 0.8 0 0.3 0.2 0.4 1.5 0.1 0.4-0.1 0.5-0.2 0.8-0.1 0.3 0 1.5 0.3 2 0.7 1.4 1.4-0.1-0.1 0.3-0.1 0.1-0.1 0.2-0.6 1.4-0.2 0.2-0.3 0.8 0 0.2 0.2 0.3 0 0.2 0 0.2-0.1 0-0.2 0-0.1 0.1-0.2 0.1-0.4 0.2-0.2 0.1-0.1 0.2-0.1 0.3 0 0.6-0.1 0.4-0.5 1.6-0.7 1.7 0 0.3-1.9 2.8-2.7 3.1-0.6 1-0.3 0.3-1.6 1-0.4 0.5-1.2 0.7-1.6 1.7-3.4 5.1-0.3 1-0.4 0.1-0.2 0.2 0 0.2 0.2 0.3-0.9 0.6-0.6 0.8-0.4 0.9-0.6 2.4-0.2 1.4 0.1 2.5 0.2 0.7 0.7 1.3 0.1 0.6 0 0.3-0.3 1.1-0.1 0.2-0.2 0-0.2 0.2-0.4 1.4-0.1 0.3-0.1-1.2 0-0.4 0.1-0.1 0.3 0 0.2-0.2 0.3-0.1 0.1-0.3 0.1-0.4 0-1.2-0.5-0.5-0.1-0.3-0.1-0.4-0.1-0.3-0.2-0.1-0.2 0.1-0.1 0.3 0.1 0.2 0.2 0.2 0.1 0.3 0.1 0.9 0 0.5-0.1 0.3 0.2-0.2 0.1-0.1 0.3-0.2-1.2 1.9-0.3 0.2-0.1 0.1-0.2 0.3-0.2 0.2-0.2-0.1-0.3-0.2-0.2-0.2-0.2 0.1-0.3 0.5-0.4 0-0.6 0.8-0.5 1.1-0.3 0.9-0.5 0.9-0.3 1-0.3 0.3-0.4 0 0.3-0.2 0.3-0.4 0.2-0.5-0.2-0.4-0.3 0.1-1.5 0-0.3-0.1-0.2 0.4-0.1 0.6 0 0.6 0 0.5 0.4 0.4 0.8 0.6 0 0.3 0.3 0.1 0.2 0.1 0.4 0 0.3-0.1-0.2 0.5-0.1 0.9-0.1 0.5 0.6 0 0.3-0.3 0.3-0.5 0.4-0.4 0.3-0.2 0.8-0.3 0.4-0.2 0.8 0.3 0.7 0.4 0.1 0 0.2-0.1 0.1-0.2 0-0.2 0.1-0.2 0.3 0 0.2 0.2 0.1 0.1 0.2-0.3 0.1 0.1 0.1 0.1 0.1 0 0.1 0.1-0.4 0.2 0 0.2 0.8-0.2 0.4-0.6 0-0.6-0.4-0.1 0.2 0.3 0 0.3-0.3 0.1-0.9 0-0.8-0.2-0.3-0.1-0.4-0.2 0.5 0 1.8 0.3 0-0.3 0-0.1 0.2-0.8 0-0.5 0.6 1.1 0.2 0.6-0.1 0.3-0.2 0.3-0.3 2.1-0.3 0.5-0.4 0.6-0.5 0.4-0.5 0.1-0.2 0.1-0.8 0.9-0.2 0.1-1 0.2 0.5-0.2 0.2-0.3 0.1-0.4 0.1-0.4-1 0.3-1.3 0.7-1.1 1-0.3 1.2 0.2 0 0.2-0.7 0.2 0-0.3 0.5-0.4 0.5-0.2 0.4 0.5 0.1-0.6 1.3-0.2 0.7 0.3 0.3 0.5 0.1 0.3 0.2 0.3 0 0.6-0.5 0.7-0.9 0.3-0.6 0.2-0.5 0.3-0.4 0.7-0.2 1.3-0.1-0.6 1.2 0.4-0.3 0.3-0.4 0.3-0.3 0.6 0 0 0.2-0.6 0.3-0.4 0.4-0.8 1.1-0.3 0.8-0.3 1.6-0.3 0.6 0.2 0.7-0.4 0.9-0.6 1.5-0.7 1-0.5 4-1.1 3.7-0.5 0.8-0.6 0.9-0.6 0.9-0.4 1.1-0.2 1.3 0.2 1.3-0.1 0.7-0.3 0.6-0.2 0.5-0.1 2.1-0.3 0.7-1.4 2.1-0.1 0.4-0.1 0.5-0.4 0.9-0.1 0.5 0 1.9-0.2 0-0.1-0.8-0.1-0.6-0.5 0.6-0.3-0.2-0.1-0.4 0.2-0.2 0.3-0.3 0.1-0.8 0.1-0.8 0-0.4-0.1 0.3-0.1 0.3-0.2 0.3-0.2 0.2-0.1-0.4 0.1-0.3 0.1-0.3 0.1-0.5-0.1 0-0.4-0.5 0-0.2 0-0.2 0-0.3-0.1-0.3-0.8-0.1-0.1-0.1-0.1-0.1 0-0.3 0.2-0.2 0.1 0-0.2-0.5-0.1-0.3-0.3-0.2-0.5 0-0.8-0.2-1.5-0.9-0.7-0.2-0.3-0.2-0.1-0.5 0.1-0.4 0-0.2 1-1.2-0.2-0.6 0.3-0.7 0.4-0.6 0.3-0.5 0-0.2 0.3-0.5 0.1-0.4-0.1 0-0.1-0.2-0.2-0.1 0-0.2 0-0.2 0.1-0.2 0.1-0.1 0.1-1.3 0-0.6-0.2-0.5-0.3-0.5-0.2-0.5-0.2-1.2-0.7 0.6-0.7 0.7-0.5 0.9-0.3 0.8 0 0.5-0.2 0.5-0.2 0.4-0.3 0.2-0.2-0.2 0.1-0.6 0.2-0.6-0.1 0.2-0.3 0.4-0.5 0.1-0.7 0.1-0.3 0.1-1.2 1.1-0.2 0.2-0.1 0.3-0.1 0.3 0.6-0.2 0.5-0.5 0.5-0.6 0.4-0.6 0.2 0.6-0.2 0.4-0.2 0.4 0 0.5 0.1-0.2 0.3-0.3 0.2-0.2 0.3-0.1 0.3 0.2-0.2 0.2-0.3 0.2-0.1 0-0.7 1.5-0.7 0.9-0.8 1.5-0.1 0.4-0.6 1-0.3 0.5-0.3 0.1-0.2 0.1-0.1 0.1-0.1 0-1.8 0-0.2 0.1-0.2 0.1-0.2 0-0.2-0.1-0.3-0.3-0.1 0-0.2 0-0.3 0.2-0.6 0.2-0.3 0-0.2-0.1-0.3-0.1-0.3-0.1-0.9 0.7-0.2 0.3-0.2 0.3-0.1 0.9-0.3 0.7-0.1 0.8-0.1 0.3-0.3 0.6-0.9 1-0.3 0.5-0.1 0.5-0.1 0.5 0 0.1-0.1 0.4-0.3 0.4-0.3 0.3-0.8 0.4-0.9 0.6 0.2 0.1 0 0.4 0 0.4-0.8 1.2 0 0.3-0.1 0.6-0.1 0.4-0.3 0.4-0.3 0.3-0.4 0.2-0.5 0.4-0.1 0.2-0.4 1.2-0.3 0.3-1.4 1.2-0.2 0.2-0.1 0.6-0.2 0.3-0.2 0.1-1.2-0.7-0.3-0.3-0.4-0.9-0.3 0-0.3 0-0.4 0-0.5-0.4-0.4-0.4-0.5-0.5-0.6-0.2-2.4 0.9-0.4 0.6z m52.1-17.6l0.1-0.3 0.1-0.2 0.2-0.3 0.2-0.3-0.5 1.1 0.2 1.3-0.4 1.1-1.1 1.5-0.1 0 0.1-0.2 0.5-0.6 0.2-0.4 0.2-0.3 0.2-0.8 0.1-1.6z m1.8-6.3l0.4 0.5 0.2 1.4 0 0.8-0.4 0.7 0.1-0.9-0.3-2.5z m15-56.5l0-0.1 0.2 0 0.1 0.1 0 0.2 0 0.1-0.3 0.5-1.1 1.8-0.3 1-0.5 0.5-0.9 0.7-0.3 0.5-0.7 1.4-0.2 0.5-0.1 0.1-0.3 0.2-0.2 0.2-0.1 0.3-0.2 0.2-0.2 0.4-1.6 1.4-0.4 0.2-0.2-0.3-0.1-0.6-0.4-1.3-0.1-0.7 0.1-1.3 0.3-1.2 1.2-2.1 0.9-1.3 0.2-0.1 0.4-0.4 0.3-0.1 0.2 0 0.2 0.1 0.1 0.1 0.1 0 0.3 0.1 0.8 0.3 0.2 0 0.4-0.1 0.6-0.4 0.4 0.1 0.5-0.2 0.5-0.3 0.2-0.5z m1.3-18.6l-0.5-0.4-0.6-1-0.3-0.9 0.3-0.4 0.1 0.6 0.3 0.7 0.7 1.4z\",\n\tMXSLP:\n\t\t\"M571.1 337.1l-0.2 0.9-0.2 0.9-0.3 1-0.2 0.9 0.5-0.4 0.7-0.7 0.7-0.4 0.5 0.1 0.1 0.6 0 0.6 0.1 0.5 0.3 0.6 0.7 0.8 0.8 0.7 0.6 0.8 0.2 1.1-0.1 0.4-0.1 0.4-0.2 0.4-0.3 0.3-0.6 0.5-0.7 0.2-0.7 0.2-0.6 0.4-0.4 0.4-0.1 0.4 0.2 0.3 0.3 0.5 0.2 0.4 0.1 0.3 0.1 0.4 0.1 0.5 0.2 0.2 0.3 0.2 0.5 0.2 0.4 0.1 0.6 0.3 0.7 0.3 0.6 0.3 0.7 0.2 1.5 0.6 1.5 0.6 1.5 0.7 1.5 0.6 0.6 0.2 0.5 0.2 0.6 0.1 0.5 0.2 0.8 0.3 0.5 0.1 0.2-0.2 0-0.9-0.1-0.4-0.1-0.5-0.1-0.4-0.1-0.5-0.1-0.3-0.1-0.1 0-0.1 0.3-0.1 0.3 0.1 0.3 0.2 0.3 0.3 0.3 0.2 0.4 0.5 0.5 0.7 0.5 0.6 0.5 0.3 0.4-0.1 0.4-0.4 0.4-0.5 0.3-0.5 0.1 0.2 0.1 0.2 0.1 0.1 0.1 0.2 0.4 0.9 0.5 0.8 0.5 0.9 0.5 0.9 0.3 0.7 0.3 0.8 0.4 0.7 0.4 0.6 0.6 0.5 0.6 0.2 0.7 0.1 0.7 0.1 0.8 0.1 0.9 0.2 0.8 0.2 0.8 0.3 0.1 0 0.1 0.1 0.1 0 0.9 0.4 0.9 0.3 0.9 0.2 1 0.2 0.6 0.1 0.7 0.1 0.8 0 0.6-0.1 0.3-0.3 0.3-0.4 0.3-0.4 0.4-0.2 0.9-0.1 0.9-0.1 0.8-0.3 0.5-0.7 0.3 0.3 0.3 0.2 0.3 0.1 0.3 0.2 0.2 0.1 0.1 0.1 0.2 0.1 0.2 0.2 0.6 0.3 0.5 0.5 0.6 0.4 0.5 0.4 0.9 0.6 0.8 0.5 0.8 0.5 0.9 0.5 0.6 0.5 0.5 0.7 0.3 0.7 0 0.9-0.4 1.2-0.6 1.2-0.6 1.2-0.7 1.1-0.2 0.4-0.2 0.5-0.1 0.5-0.2 0.5-0.2 0-0.2-0.2-0.3 0.3-0.3 0.1-0.3-0.2-0.3 0-0.4 0-0.3 0.2-0.2 0-1.1-0.1-0.3-0.1-0.1 0 0.1 0.8 0.5 0.1 0.7-0.2 0.5-0.1 0.1 0.2-0.4 0.3-0.3 0.4 0.2 0.6-0.7 0.2 0.2 0.7 0.4 0.7 0.4 0.3 1.2-0.1 0.1 0.3 0 0.4 0.1 0.3 0.2 0.2 0.5 0.1 0.1 0.4-0.2 0.5-0.1 0.2-0.3 0.4-0.4 0.3-0.7 0.4-0.1 0.1 0 0.1-0.1 0.2-0.1 0-0.2 0-0.3-0.2-0.2 0-0.3 0.2-0.2 0.2 0.1 0.2 0.2 0.3-0.4 0.4-1.1-0.2-0.4 0.4-0.2 0.8 0.1 0.5 0 0.5-0.3 0.3-0.2 0.3 0.3 0.6 0.4 0.5 0.5 0.3 0.7 0.3 0.8 0.4 0.6 0.4 0.2 0.7 0.1 0.9 0 0.6 0.1 0.6 0 0.6 0 0.5-0.4 0.1-0.5 0.2-0.4 0.1-0.4 0.2-0.3 0.1-0.1 0.2-0.1 0.2 0.1 0.4 0 1.1 0.1 1.1-0.1 1.1-0.1 1-0.3-0.1-0.3-0.1-0.3 0.1-0.2 0.2-0.2 0.2-0.2 0-0.2 0-0.3 0-0.2-0.1-0.2-0.1-0.2 0-0.2-0.1-0.8 0.1-0.7 0.3-0.7 0.3-0.6 0.3-0.6 0.2-0.5-0.1-0.4-0.2-0.6-0.3-0.3-0.2-0.4-0.1-0.3-0.2-0.3-0.2-0.2-0.4-0.1-0.4 0-0.4-0.2-0.3-0.1-0.3-0.1-0.2-0.1-0.2-0.2-0.1-0.7-0.3-0.9 0.1-0.9 0.3-0.5 0.6-0.4-0.4-0.5-0.3-0.5-0.1-0.6 0.1 0.2-0.6 0.1-0.6 0.1-0.6 0.1-0.6-0.1-0.4-0.2-0.5-0.2-0.6-0.2-0.4-0.4-0.7-0.3-0.8-0.2-0.8-0.3-0.8-0.2-0.7-0.2-0.8-0.2-0.7-0.2-0.8-0.1-0.1 0-0.2-0.1-0.1 0-0.2 0 0.7-0.5 0.5-0.7 0.4-0.5 0.5 0 0.3 0 0.3 0 0.3-0.3 0.3-0.3 0.2-0.2 0.1-0.2 0-0.4-0.2-0.1-0.1-0.2 0-0.1 0.1-0.2 0.1-0.2 0.3 0 0.4-0.1 0.4-0.1 0.3-0.2 0.2-0.2 0.2-0.1 0.3-0.1 0.2-0.1 0.2-0.2 0.2-0.1 0.2-0.2 0.2-0.3 0-0.4 0-0.4-0.1-0.3 0.1-0.3 0.1-0.2 0-0.2 0.1-0.2 0-0.4 0.6-0.7 0.1-0.8 0-0.6 0-0.3 0.1-0.1 0.1-0.2 0.1-0.3 0-0.3-0.2-0.2-0.2-0.3-0.3-0.2-0.1-0.3-0.2-0.2-0.4-0.1-0.4-0.2-0.3-0.2-0.2-0.2-0.1-0.2-0.1-0.2-0.3-0.2-0.3-0.4-0.2-0.4-0.2-0.4-0.2-0.8 0.3-0.5 0.8-0.4 0.9-0.3 0.9-0.9-0.4-0.8-0.4-0.8-0.3-1.1 0-1.2-0.1-1.2-0.9-1.1-1.2-1.1-0.9-0.1 0-0.1 0 0-0.1-0.1 0-0.9-0.3-1-0.3-0.9-0.3-1-0.3-0.4-0.1-0.3-0.1-0.3-0.2-0.4-0.2-0.5-0.2-0.5-0.2-0.6-0.3-0.5-0.2-0.3-0.2-0.3-0.1-0.3-0.1-0.3-0.1-0.3-0.2-0.1-0.2-0.2-0.1-0.4 0-0.3 0.2-0.3 0.2-0.3 0.3-0.2 0.2-0.2 0.4-0.2 0.4-0.1 0.4-0.2 0.4-0.1 0.6-0.1 0.7-0.2 0.7-0.2 0.6-0.6 0.5-1 0.2-1.1-0.1-0.9 0.1-0.7-0.5-0.6-0.5-0.6-0.5-0.5-0.5-1.4-1.1-1.3-1-1.4-1.1-1.3-1.1-0.5-0.4-0.4-0.5-0.5-0.4-0.4-0.4-0.9-0.4-1-0.2-0.9-0.1-1 0-1 0.1-1.1 0.3-1 0.2-1-0.2-0.4-0.1-0.3-0.3-0.3-0.3-0.3-0.3-0.1-0.4-0.1-0.4 0.1-0.5-0.1-0.4-0.5-0.6-0.6-0.2-0.7 0.1-0.7 0.3-0.1 0-0.1 0.1-0.1 0-1 0.7-0.8 0.4-0.9-0.1-1.2-0.5 1.2-1.6 1.2-1.6 1.2-1.6 1.2-1.6 0.2-0.4 0.4-0.4 0.2-0.5 0.1-0.4-0.1-0.9-0.1-1-0.1-1-0.1-0.9-0.3-1.1-0.3-1-0.4-1.1-0.2-1 0-0.7 0.1-0.6 0.4-0.4 0.4-0.4 0.6-0.3 0.5-0.3 0.3-0.4-0.1-0.7-0.3-0.8-0.4-0.9-0.3-0.8-0.4-0.8-0.5-0.5-0.6-0.1-0.6 0-0.7 0-1 0-1.2 0-1.3 0.1-0.8 0.6-0.4 0.9-0.4 1-0.5 0.8-1 0.2-0.2 0-0.2 0-0.2 0.1-0.2 0-0.7 0.4-0.7 0.5-0.6 0.3-0.8-0.1-0.7-0.4-0.5-0.5-0.5-0.6-0.5-0.7-0.1 0 0-0.1-0.1-0.1-0.6-1.1-0.8-1.4-0.9-1.1-1.1-0.6-0.3-0.1-0.3-0.1-0.3-0.2-0.3-0.2-1.2-1.1-1.2-1.1-1.1-1.3-0.8-1.4-0.3-0.8-0.3-0.7-0.3-0.7-0.4-0.7-0.3-0.8-0.4-0.7-0.1-0.7 0.3-0.8 0.4-0.8 0.2-0.7-0.1-0.7-0.3-0.8-0.1-0.6-0.1-0.7-0.2-0.6-0.3-0.5-0.4-0.3-0.4-0.2-0.3-0.3 0.1-0.6 0.3-0.6 0.3 0 0.5 0.1 0.5 0 0.3-0.4 0.2-0.6 0.2-0.7 0.1-0.6 0.1-0.4 0.2-0.7 0.2-0.6 0.2-0.3 0.5-0.1 0.5-0.1 0.5 0.1 0.3 0.3 0 0.5-0.1 0.5 0 0.4 0.5 0.2 0.6 0 0.6-0.3 0.6-0.3 0.5-0.3 1-0.8 0.9-0.8 0.8-0.9 0.7-1 0.7-1.1 0.9-1 0.9-0.9 1-0.7 0.5-0.1 0.5-0.1 0.4 0 0.5-0.2 0.3-0.4 0.2-0.5 0.2-0.5 0.2-0.5 0.9-0.9 1.1-0.8 1.3-0.6 1.1-0.6 1.4-1 1.2-1 1.2-1.1 1.1-1.3 0.5-0.6 0.5-0.7 0.6-0.6 0.6-0.3 0.8-0.2 0.6-0.2 0.5-0.3 0.5-0.7 1.3-2.5 1.4-2.5 1.5-2.4 1.4-2.5 0.6-1 0.7-1 0.8-0.8 1-0.6 1.1-0.6 0.5-0.8 0.3-1 0.4-1.3 1.1 1.3 1 1.5 1 1.4 1 1.4 0.5 0.6 0.5 0.6 0.5 0.6 0.4 0.6 0.2 0.9 0.1 1 0 1.1 0.1 0.9 0 1.7 0 1.7 0 1.7 0.2 1.6 0.5 1.4 0.8 1.2 1 1.1 0.9 1.1 0.2 1 0 1 0 0.9-0.3 1-0.1 1.1 0.1 1.1 0.3 1.2 0.3 1.1 0.2 0.4 0.1 0.4 0.1 0.4 0.1 0.5-0.1 0.5-0.2 0.5-0.2 0.5-0.1 0.6 0 0.4 0.2 0.5 0.2 0.4 0.1 0.5 0 0.6 0 0.5 0 0.5 0 0.6 0 0.2 0 0.2 0 0.1 0 0.2 0 0.2 0.1 0.2 0 0.2 0 0.1 0.4 0.9 0.4 0.6 0.7 0.3 0.9 0.2 0.4 0.1 0.4 0.1 0.3-0.1 0.1-0.3 0-0.4 0-0.4 0-0.4 0-0.4 1.9 0 2 0 1.9 0.1 1.9 0.3z\",\n\tMXSIN:\n\t\t\"M319.2 268.2l0.4 0.2 0.6 0.8 0.3 0.3-0.5 0.4-0.9-0.5-1-0.6-0.8-0.4-0.2 0-0.3-0.1-0.2-0.1-0.3 0-1.7 0-0.4-0.2-0.2-0.4 3.2 0 0.6 0.1 1.4 0.5z m-8.8-28.9l0.3-0.5 0.2-0.2 0.1-0.1 0.2-0.1 0.2-0.2 2.9-2.2 2.9-2.3 2.8-2.3 2.8-2.4 1.4-1.2 1.5-1.2 1.4-1.2 1.4-1.2 0.2-0.4 0.1-0.7 0-0.8 0-0.6 0.2-0.8 0.2-0.8 0.3-0.8 0.2-0.8 0.8-0.7 0.6-0.8 0.7-0.8 0.6-0.8 0.3 0.6 0.7 0.2 0.7 0 0.7-0.1 0.6 0.1 0.4 0.3 0.4 0.5 0.3 0.6 0.9 1.2 1.4 0.7 1.6 0.3 1.4 0.3 0.7 0.3 0.2 0.7 0 0.9 0 0.8 0.4 1 0.7 1 0.6 0.9 0.6 0.9 0.6 0.7 0.6 0.7 0.6 0.6 0.5 0.6 0.5 1.5 0.3 1.9 0.1 2 0.2 1.7 0.2 1.5 0.1 1.4 0.2 1.5 0.2 1.4 0.2 0.9 0.2 0.5 0.5 0.2 0.9 0.2 0.3 0 0.3 0.1 0.3 0.1 0.3 0 2 0.4 1.9 0.5 2 0.4 1.9 0.4 0.9 0.2 0.6 0.5 0.5 0.8 0.3 0.9 0.1 0.5 0.1 0.5 0.1 0.5 0.1 0.5 0.1 0.2 0 0.3 0.1 0.2 0 0.1 0.3 0.3 0.4 0.1 0.3 0.1 0.2 0.4 0.1 0.4 0.1 0.5 0.1 0.4 0 0.4 0.1 0.5 0.1 0.2 0.3 0.1 0.4 0.1 0.8 0.4 0.8 0.5 0.7 0.5 0.7 0.6 0.5 0.7 0.4 0.7 0.5 0.7 0.6 0.5 0.9 0.5 0.9 0.5 0.8 0.6 0.8 0.7-0.4 0.5-0.5 0.5-0.5 0.5-0.3 0.6-0.3 0.7-0.5 0.5-0.5 0.5-0.6 0.6-0.6 1.2-0.3 1.4-0.3 1.5-0.2 1.3-0.2 1.5-0.2 1.5 0 1.5 0.3 1.5 0.4 1.3 0.4 1.3 0.4 1.4 0.5 1.3 0.2 0.5 0.1 0.7 0.3 0.6 0.3 0.4 0.4 0.3 0.5 0.2 0.5 0.1 0.4 0.3 0.2 0.4 0.1 0.4 0 0.4 0 0.4 0.2 0.6 0.4 0.3 0.4 0.1 0.5 0.1 0.5 0 0.4 0 0.4 0.1 0.4 0.3 0.3 0.6 0.2 0.5 0.4 0.4 0.5 0.3 1 0.6 0.6 1 0.4 1.2 0.6 1.1 0.4 0.4 0.4 0.3 0.2 0.4 0.3 0.5 0.1 0.4 0.2 0.4 0.2 0.4 0.2 0.3 0.3 0.6 0.2 0.5 0.1 0.5 0 0.7 0 0.5 0 0.5 0.1 0.5 0.3 0.4 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.4 0.6 0.4 0.4 0.2 0.5 0.1 0.6-0.1 0.5 0 0.4 0 0.5 0 0.5-0.2 0.3-0.4 0.3-0.4 0.3-0.5 0.4-0.4 0.9-0.8 1.1-0.5 1-0.2 1.2 0.2 0.3 0.2 0.4 0.1 0.3 0.3 0.2 0.2 0.8 0.6 0.7 0.7 0.7 0.6 0.7 0.7 0.5 0.7 0.4 0.9 0.4 1 0.3 0.8 0.3 0.8 0.3 0.8 0.4 0.8 0.4 0.8 0.5 0.5 0.6 0.2 0.7-0.2 0.7-0.2-0.3 1-0.4 1-0.5 0.9-0.4 1-0.1 1.2 0 1.2 0.2 1.3 0.2 1.2 0.1 0.6 0 0.5 0.1 0.5 0.1 0.6 0.1 0.5 0.3 0.5 0.3 0.5 0.2 0.6 0.2 0.7 0.1 0.7 0.3 0.6 0.5 0.5 0.4 0.2 0.5 0.1 0.4 0.1 0.5 0.1 0.1 0.7 0.5 0.6 0.5 0.7 0.3 0.7-0.1 0.3-0.1 0.2 0 0.3 0.2 0.2 0.2 0.3 0.1 0.3 0 0.3-0.1 0.3-0.1 0.5 0.1 0.3 0.2 0.4 0.3 0.4 0.1 0.3 0 0.4-0.1 0.4 0.1 0.3 0.3 0.5 0.4 0.3 0.4 0.2 0.4 0.4 0.2 0.2 0 0.3 0.2 0.3 0.2 0.2 0.4 0.3 0.5 0.5 0.5 0.6 0.4 0.4 1 0.5 1.2 0.1 1.2-0.1 1.2-0.1 0 0.9 0 0.9 0 0.9 0.1 0.9-0.7 0-0.7 0.1-0.4 0.3-0.4 0.5-0.2 0.6 0 0.4 0.1 0.4 0.2 0.5 0.3 0.4 0.1 0.3 0.1 0.3-0.3 0.4-0.3 0.4-0.6 0.4-0.5 0.4-0.5 0.4-0.5 0.5-0.5 0.6-0.5 0.7-0.1 0.6 0 0.3 0.2 0.3 0.2 0.1 0.3 0.2 0.3 0.2 0.2 0.2 0.1 0.3 0.2 0.4 0.2 0.3 0.3 0.1 0.3 0.1 0.3 0.2 0 0.2-0.1 0.2-0.1 0.3 0 0.1 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0 0.2 0.8 0.3 0.7 0.2 0.8 0.1 0.8 0 1.1-0.6 0.6-1 0.2-1-0.3-0.4-0.4-0.4-0.4-0.4-0.3-0.4-0.3-0.7-0.2-0.6 0.2-0.6 0.1-0.6 0.2 0.1 0.5 0.2 0.6 0.1 0.6 0 0.5-0.5 0.4-0.5-0.5-0.4-0.8-0.4-0.5 0.3-0.2-0.2-0.4-0.3-0.4-0.3-0.2-0.2 0.4-0.2 0-0.3-1.8-0.9-1.5-2.4-2.3-1.2-1.6-0.5-0.5-1.2-0.8-0.2-0.2-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2 0.6-0.8-0.4 0-0.4 0.2-0.3 0.3-0.3 0.3-5.4-6.9-0.2-0.2-0.6-0.2-0.3-0.2-0.5-0.4-2.7-3.2-0.5-0.2-0.4 0.1-0.2 0.2-0.3 0.1-0.3-0.2-0.1-0.2 0.1-1.2-0.2-0.4-1-1.6-0.5-0.4 0-0.2 0.3-0.3 0-0.2-0.1-0.1-0.1-0.2-1.1-2.1-0.4-0.4-0.4-0.1-0.6-0.4-1.1-1.1-0.2-0.1-0.1-0.2-0.3-0.8-0.3-0.4-0.7-0.3-0.4-0.6-0.7-0.9-0.8-1-0.5-0.4-1.2-0.4-0.4-0.6-0.2-1.5-0.4-0.6-0.5-0.5-0.5-0.6-0.3-1.4-0.9-1.5-3.8-4.2-1.4-1.1-0.6-0.2-0.3-0.2-1.6-1.5-4.1-2.8-1.8-1.3-0.3-0.4-0.2-0.7-0.3-0.4-1.1-0.5-1.1-0.7-1.8-1.7-6.6-4.1-0.5-0.6-0.2-0.5 0-0.4 0.2 0 0.3 0.2 0.2 0.2 0 0.1 0.1 0.2 0 0.3 0 0.1 2.3 1.2 0.3 0.1 4 2.6 0.4 0.2 0.3 0.2 0.5 0.3-0.3-0.3-0.8-0.5-0.5-0.3 0.1-0.3 0.6 0.2 0.9 0.7 0.1-0.1 0.1-0.2 0-0.1-0.1 0-0.2 0-0.1 0 0.3-0.3 0.3-0.3 0.2-0.3 0-0.6-0.1-0.4-1.1-2.5-0.3-0.4-0.5-0.2-0.5 0-0.4 0.1-0.4 0.2-0.3 0.4 0.4 0.1 0.8-0.3 0.2 0.2-0.1 0.3-0.8 0.7-0.2 0.3-0.9 0.3-0.5-0.4-0.4-0.6-0.6-0.4-0.6 0.4-0.2 0-0.2 0-0.2-0.1-0.6-0.5-0.2-0.3 0-0.2-0.1-0.4-0.1-0.2-0.1-0.2-0.5-0.1-0.2-0.1-1.1-1.3-0.4-0.1-0.4 0.3-0.6-0.6-0.6-0.5-0.7-0.3-0.7-0.1 0.1 0.3 0.3 0.2 0.4 0.3 0.9 1 0.5 0.4 1.2 0.7 0.4 0.5-0.8-0.2-2.2-1.3-2.5-2.2-0.2-0.5-0.1-0.5-0.2-1.1-0.1-0.5-0.3-0.6-0.3-0.5-0.3-0.2-0.2-0.1-0.1-0.2 0-0.2 0.1-0.1 0.3 0 0.3 0.1 0.5 0.3 0.2 0.3 0.5 0.3 0.4 0 0.2-0.7-0.1-0.5-0.3-0.6-0.4-0.4-0.4-0.3 0.4-0.3 0-0.5-0.2-1.2 0.1-0.5 0.1-0.4 0.4-0.8-0.3-0.4-1.1-1-0.4-0.1 0 0.6 0.4 1.7 0 0.1 0.1 0.2 0 0.4-0.2 1.1-0.1 1.1-0.1 0.3-0.1 0.1-0.2 0-0.2 0-0.1-0.1-0.1-0.2-0.2-0.1-0.1 0.1-0.1 0.2-0.1 0.1-1.1-0.6-0.9-1.3-2.2-4.6-0.7-0.8-1-0.9-0.6-0.3-0.2-0.2-0.2-0.4 0.6 0 0.7 0.2 0.5 0.3 0.2 0.5 1.7 2.1 0.4 0.9 0 0.1 0.2 0 0.2 0 0.1-0.1 0.1-0.1 0.6 0.4 0.1 0.1 0.3-0.1 0-0.3 0-0.6-0.1-0.5-0.3 0-0.3 0.1-0.3-0.2 0-0.2 0.3-0.5 0.1-0.2 0.3-0.2 0.1-0.1 0.1 0.1 0.2 0.4 0.6 0.6 0.5 0.2 1.2 0.2 0.9 0.4 0.3-0.3 0.1-0.3-0.1-0.4-3-2.7-0.3-0.2-0.5 0 0.2 0.2 0 0.2-0.2 0.2-0.4 0-0.3 0-0.4-0.3-0.5-0.5-0.6-1.2-0.1-0.2-0.4 0.1-0.3 0.2-0.3 0.2-0.4-0.2-0.4 0.2-0.8 0.1-0.8-0.2-0.5-0.2-0.1-1 0-0.2 0.2 0 0.7 0.5 0.3 0.1-0.1-0.4 0-0.9-0.1-0.4-0.2-0.3-0.7-0.4-0.3-0.2-0.7 3.4-0.4 0.5 0-0.3 0.1-1.4 0-0.5-0.2-0.6-0.4-0.5-0.5-0.3-0.4-0.3-3-1.2-1.7-1.2-1.2-0.3-1.2-0.1-1 0 0.7-0.5 1.2 0.1 2.1 0.6-0.7-0.3-1.2-1-0.8-0.2-1.5 0.5-0.8 0.1-0.4-0.6 1.2 0 0.3-0.2-0.4-0.6-0.1-0.2 0-0.3 0-0.2-0.3 0-0.1 0-0.3 0.3-0.3 0.1 0.3-1 0.1-0.5 0-1.5-0.1-0.4-0.1-0.1-0.3 0.2-0.3 0-1-0.4 0-0.1 0-0.1-0.1-0.2-0.2-0.1-0.1 0.1-0.3 0.1-0.1 0.1-0.6-0.1-0.3-0.1-0.2 0 0 0.6 0.1 0.3 0.1 0.2 0.1 0.2 0.1 0.4-0.1 0.4-0.1 0.2-0.1 0.2-0.2 0.2-0.5 0.3-0.4 0-0.3-0.2-0.3-0.4 0.1 0 0.2-0.1 0.1-0.2-0.2-0.2-0.2-0.1-1.5 0.2-0.4 0.2 0 0.3 0.3 0.5-0.8 0.1-0.9-0.7-1.4-1.6 0.6-0.3 0.2-0.1 0.1-0.3 0.2-0.4 0.2-0.3 0.3-0.1 1 0.3 0.2 0 0.3-0.1 0.3 0.3 0.1 0.6 0.3 0.2 0.1-0.1 0-0.2 0.2-0.4 0-0.1 0-0.4 0-0.1 0.1-0.2 0.3 0 1.5-1.6 0.3-0.4 0-0.2-0.1-0.1 0-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.2 0 0-0.2 0-1 0.2-0.7 1.2-1 0.1-0.7-0.2-0.4-0.4 0.3-0.6 1.3-0.4 0.7-0.5 1-0.4 0.4-0.7 0.3-1.4 0.5-0.6 0.4-0.9 1.4-0.6 0.5-0.7-0.2-0.8 0.4-0.5 0-0.3-0.3-0.4-0.8-0.2-0.7-0.2-0.3-0.3-0.1-0.3-0.1-0.9-0.4-0.8-0.6-0.1 0.2 0.1 0.3 0.1 0.4 0.3 0.3 1.9 1.6 0.5 0.7-0.1 0.7-0.7-0.7-0.6-0.8-0.7-0.8-1-0.4-3.2 0.1-1.1-0.3 0.7-0.5 0.8-0.2 0.8 0 0.9 0.3-0.1-0.5 0.1-0.6 0.1-0.1 0.2-0.3 0.1-0.1-0.1-0.2 0-0.1-0.1-0.1 0-0.1-0.3-0.3-0.5-0.4-0.7-0.4-0.4-0.1-0.6 0-0.3 0.2-0.1 0.4-0.1 1.9-0.1 0.2-0.3-0.5 0.2-0.6 0-0.8-0.1-0.7-0.2-0.3-0.6-0.2-0.1-0.6 0.1-0.6 0.3-1.3 0.1-0.2 0.1-0.1 0-0.6 0-0.4-0.1-0.3-0.3-0.5-0.2-0.7 0-0.6 0-1.4 0.2-0.6 1-1.7 1.1-1.2 0.5-0.7 0.3-1.3 1.1-1.9 0-0.1 0.1 0 0.1 0 0.1-0.1 0 0.1-0.2 0.4 0.1 0.7-0.1 0.3-0.1 0.4-0.1 0.3 0.2 0.3 0.3 0.1 0.2-0.2 0.1-0.4 0.2-1 0.9-1.7 0.1-0.1 0.6-0.3 0.6-0.4 0.5-0.4 0.3-0.2 0 0.5-0.2 0.5-0.4 0.2 0 0.2 0.6 0.3 1.4 1.2 0.4 0.1 0-0.4-0.4-0.7 0-0.5 0.2-0.2 0.3-0.1 0.2-0.1-0.1-0.5-0.8 0.1-0.7-1.4z\",\n\tMXSON:\n\t\t\"M147.3 35.9l0.1 0 1.1 0.4 11.7 4.3 11.8 4.3 11.7 4.3 11.8 4.3 11.7 4.3 11.8 4.2 11.7 4.3 11.8 4.3 1.4 0.5 1.5 0.6 1.5 0.5 1.5 0.6 1.4 0.6 1.5 0.5 1.5 0.6 1.5 0.5 0.8 0.3 1.7 0.2 1.7 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 0.6 0 0.6 0 1.3 0 0.4 0-0.3 2.7-0.4 2.9-0.3 2.8-0.4 2.9-0.1 1-0.2 1.1-0.1 1-0.1 1.1-0.2 0.7 0 0.6 0 0.4 0.4 0.5 1.7 1.4 1.6 1.3 1.6 1.4 1.7 1.4 0.4 0.3 0.6 0.3 0.5 0.2 0.6 0.1 0.9 0.3 0.7 0.4 0.7 0.5 0.7 0.7 0.6 0.5 0.3 0.4 0.2 0.6 0.1 0.8 0 1 0.1 1.1 0.1 1 0.1 1 0 0.4 0.1 0.3 0 0.3 0 0.3 0.2 2.1 0.2 2.1 0.1 2.1 0.2 2.1 0.1 0.5 0 0.5-0.1 0.4-0.2 0.4-0.2 0.5-0.2 0.5 0 0.6 0 0.7 0 0.1 0 0.1-0.1 0.7-0.1 0.7 0 0.7-0.1 0.6-0.2 2.7-0.2 2.7-0.2 2.6-0.2 2.7-0.1 0.8-0.1 0.8 0 0.7-0.1 0.8 0 0.6-0.1 0.4-0.2 0.2-0.5 0-0.5 0-0.5 0-0.5 0-0.5 0 0.2 1.7 0.2 1.6 0.1 1.6 0.2 1.7 0.2 1.8 0.3 1.8 0.2 1.8 0.2 1.9 0.1 1.3 0.2 1.4 0.2 1.3 0.1 1.3 0.1 0.4 0 0.4 0 0.4 0.1 0.3 0.1 0.3 0.2 0.3 0.1 0.4-0.1 0.3-0.2 0.9-0.4 1.2-0.3 1.1 0 0.9 0.3 0.9 0.3 1 0.3 1 0.3 1 0.3 0.6 0.2 0.7 0.3 0.7 0.2 0.7 0.2 0.6 0.4 0.9 0.2 0.8 0 0.5-0.6 0.6-0.6 0.6-0.6 0.6-0.7 0.6-0.4 0.2-0.5 0-0.5-0.2-0.4-0.1-1-0.3-1-0.2-1-0.3-1-0.2-1.5-0.3-1.3-0.1-1.4 0-1.5 0.1-0.7 0.2-0.5 0.2-0.5 0.4-0.5 0.5-0.6 0.5-0.5 0.5-0.3 0.6 0.2 0.7 0.9 2.2 0.9 2.2 0.9 2.2 0.9 2.2 0.2 0.4 0.4 0.3 0.3 0.3 0.4 0.2 0.5 0.3 0.5 0.3 0.5 0.2 0.5 0.3 0.3 0.6 0.2 0.7 0.1 0.7 0.4 0.6 0.8 0.6 0.8 0.7 0.7 0.7 0.8 0.6-0.3 0.4-0.1 0.4-0.1 0.5 0.1 0.5 0.6 0.7 0.6 0.6 0.6 0.6 0.8 0.5 0.5 0.3 0.3 0.4 0.1 0.5 0.1 0.6 0 0.7-0.1 0.6-0.2 0.7-0.1 0.6 0 0.6 0.2 0.5 0.3 0.6 0.2 0.5 0.1 0.9-0.3 0.7-0.5 0.6-0.5 0.7-0.2 0.8 0.1 0.8 0.3 0.6 0.4 0.7 0.6 1 0.6 1 0.7 1 0.6 0.9 0.4 0.4 0.3 0.2 0.4 0 0.5-0.1 0.3 0 0.2-0.1 0.2 0 0.2 0.2 0.1 0.4 0.2 0.3 0.1 0.4 0.2 0.3-0.2 0.8-0.3 0.8-0.2 0.8-0.2 0.8 0 0.6 0 0.8-0.1 0.7-0.2 0.4-1.4 1.2-1.4 1.2-1.5 1.2-1.4 1.2-2.8 2.4-2.8 2.3-2.9 2.3-2.9 2.2-0.2 0.2-0.2 0.1-0.1 0.1-0.2 0.2-0.3 0.5-0.5-1-0.8-0.5 0.1 0.1 0.1 0.2 0.1 0.1 0.1 0.3-0.6-0.2-0.3-0.1-0.3 0.1-0.8 0.9-0.3 0-0.1-0.4 0.4-2.3-0.1-1.3-0.3-1.2-0.7-0.8-1-1.5-1.3-0.9-0.8-1.3-0.9-0.8-0.8-0.3-0.8-0.1-0.3-0.2 0.4-0.1 0.5 0.2 0.7 0.2-0.2-0.6-0.2-0.1 0.2-0.3-0.2-0.4-0.5 0-0.4-0.1-0.2-0.3-0.1-0.5-0.3 0.2-0.3 0.3-0.2-0.6-0.5-0.1-0.3 0.4-0.3 0.3-0.1 0.4 0.3 0.1 0.3 0.1 0.3 0 0.1 0.2-0.1 0.2 0 0.3 0.5 0.3 0.3 0.1 0 0.2-1-0.5-2.2-0.4-1.2 0.1-0.4 0.3-0.1 0.3-0.8-0.1-0.9-0.4-1.3-0.5-0.4-0.4-1.4-1.5-0.7-1.1-0.2-1.2-0.2-1.1-0.4-0.7-0.4-1-0.1-0.4-0.3-0.5-0.9-1.5 0.1-0.3 0.2 0.4 0.8 1.3 0.6 0.5-0.7-1.8 0-0.7-0.2-1.4-1-1.2-0.4-0.4-0.5-0.2-0.5-0.1-0.5 0-0.2 0.1-0.2 0.1-0.2 0.2-0.2 0.2-0.2 0.3-0.3 0.3-0.8-0.7-1.7-0.5-1.2-0.3-0.7-0.2-0.7-0.1-0.7-0.2-0.7-0.1-0.9-0.6-0.5-0.2-1-1.2-0.9-1.2-1.3-0.9-0.4-0.3-1.1-0.2-0.6 0-0.1-0.3 0.9 0 0.8 0.1 0.8 0.1 0.4-0.3-0.6-0.5-0.7-0.9-0.3-0.4 0.1-0.2 0.1-0.2 0-0.2-0.4-0.2-0.1-0.1-0.2-0.2-0.6 0.4-0.3 0.2-0.3 0-0.3-0.1-0.1-0.3 0-0.8-0.1-0.8-0.9-0.5 0-2-0.3-1-0.8-2.1 0-1.1 0.3-0.5 0.5-0.2 0.6-0.1 0.3-0.5-0.1-0.5-0.3-0.1-0.4 0.2-0.2 0.4 0.2-1 0.2-0.3 0.4-0.2 0.3 0 0.3-0.1 0.2-0.4-1 0-0.5-0.3-0.1-0.4 0.4-0.8-0.4-0.1-0.3-0.2-0.1-0.4 0.2-0.4 0.2 0.3 0.2 0.1 0.1-0.2 0.2-0.6 0.1-0.1 0.3 0.1 1.4-0.3 0.4-0.3-0.1-0.6-0.6 0.2-1.7-0.7-0.7 0.1 0.4 0.3-0.2 0.2-0.4-0.1-0.9-0.6-0.5-0.2-2-0.5-1-0.1-1 0.1-1.1 0.2 0-0.2 0.3-0.1 0.9-0.4-0.2-0.4-0.1-0.3-0.1-0.3 0-0.4-0.1-0.4-0.4-0.2-0.3 0-0.2 0.4 0 0.9-0.1 0.5-0.3 0.5-0.6 0.6 0.5 0 0.2 0.1 0.1 0.3 0 0.4-0.1 0.4-0.3 0.6-0.2 0.2-0.2-0.3-0.1-0.1-0.7-0.9-0.1-0.1-0.5 0-0.2-0.1-0.1-0.2-0.1-0.2-0.1-0.1-0.2-0.2 0.3-0.3 0.2-0.1 0.3 0-0.5-0.5-0.6-0.6-0.7-0.3-0.6 0-0.6 0.2-0.5 0.6-0.8 0.1-0.5 0 0.1-0.3 0.2-0.2-0.3-0.4-0.4-0.2-0.3 0-0.4-0.5-0.8-0.2-0.4-0.5-0.4-0.5-0.6-0.8-0.9-0.2-0.4-0.7-0.5-0.6-0.5-1.2-1-1-0.2-1.5-0.2-0.3-0.1-0.1-0.4 0.1-0.2-0.1-0.1-0.1 0-0.2-0.3-0.5-0.1-0.7-0.1-0.3-1.3-1.2-0.4-0.5-0.2-0.7 0.2-0.4 0.3-0.3 0.1-0.6-1 0.2-1.2-0.4-2-0.7-1.9-1-0.7-0.2-0.6-0.2-0.3-0.1-0.5-1.3-0.5-1.3-0.5-1.4-4.6-4.5-0.6-0.9-0.3-0.3 0.2-0.2 0.3 0 0.3-0.2 0.6-0.4 0.2 0 0.2 0.3 0.2 0.4 0.1 0.2 0.3 0.1 0.2-0.1 0.1-0.3 0-0.4 0-0.3-0.3-0.6-0.5 0-0.5 0.1-0.7-0.1-0.8-0.7-0.4-0.6-1-0.4-0.8-0.2-0.1-0.7-0.4-0.1 0-0.4-0.4-0.4-0.6-0.5-0.2-0.5-0.3-0.4-0.1-0.2-0.3-0.1-0.4-0.1-0.6 0-0.5-0.1-0.1-0.2 0.3-0.2 0.2-0.3-0.1-0.3 0-0.3-0.4-1.3-0.1-0.8-0.4-0.1 0.1-0.3 0.3-0.5 0.2-0.4 0-0.3-0.3-0.7-0.5-0.6 0.1-0.3-0.5-0.4-0.5-0.3 0.4-1.3 0-0.8-0.4-0.9-0.4-1.1-0.7-0.5-1.4 0-0.3 0.1-0.2 0.2-0.1 0.1 0.1 0.3-0.1 0.4-0.2-0.2-0.5-0.6-1-0.4-0.5-0.4-0.3-1 0.4-1 0.6-1.3 0.2-0.6 0-0.8-0.2-0.4-0.6-0.1-0.4-0.3-0.3-0.3 0.1-0.7-0.1-0.6-1-0.9-1.1-1-0.8-1.9-0.1-0.4-0.2-0.4-0.5 0.1-0.6-0.7-0.2-0.5-0.2-1.3-0.4-0.7-0.5-0.6-0.3-0.5-0.6-1.9-0.3-0.5-0.5-0.3-0.2 0.1-0.5-0.2-0.6 0.3-0.4-0.3-0.2-0.5 0.4-0.5-0.2-0.6 0.3-1 0.1-0.8-0.2-0.5-0.3-0.4-0.3-0.6 0-0.6 0.2-1.8 0-1.8-0.4-0.9-0.4-0.6-0.5-0.5-0.3-0.4-0.6-0.4-0.2 0-0.3-0.1-0.3 0.3-0.1-0.2 0.3-0.6 0.1-1.1-0.1-1.4-0.2-1.3-0.4-0.9-1.3-1.5-2-2-1.6-2.5-1.1-2.1-1-3.7-0.4-1 0.5-1 0.3-2.2 0.1-1.3-0.1-1.1-0.9-2.4 0-0.5 0.2 0 0.2 0.3 0.1 0.4 0.3 0.7 0.4 1.1 0.2 0.1 0.2-0.3 0.6-1.1 0-1.6 0-1.5 0.2-1.1-0.6-0.6-0.7-1-0.7-0.5-0.8 0 0 0.3 0.5 0.2 0.3 0.2-0.1 0.3-0.5-0.2-0.5-0.3-1.2-0.7-0.3-0.8-0.4-0.4-0.3-0.9-0.4 0-0.4 0.2-0.4 0.1 0.3 0.5 0.3 0.2 0.4 0.2 0.3 0.2-0.4 0.1-1-0.3-4.5-0.8-1.4-0.4-1.9-0.3-0.3-0.7-0.7-0.2-1.1-0.1-0.6-0.5 0.2-0.2 0.5 0 0.3-0.2-0.3-1-0.5-1.8 0.1-1-0.8-1.1-1.5-1.1-1.3-0.6-0.5-0.5-0.8 0-1.3-0.7-0.8-0.4-0.2-0.6-0.8 0.3-0.4 0.1-0.4 0-0.5-0.5-0.2-1.3-0.4-0.3-0.1 0.5 0 1.8 0 0.3 0.2 0.3 0.2 0 0.2 0 0-0.1 0.3 0.4-0.1 0.1-0.3 0.1-0.4 0.6-0.1 0.4-0.3 0.2-0.4 0.1-0.1 0.3-0.2 0.2-0.1 0.2-0.3 0.4-1.2 0-1.3 0-1.2-0.1-1.4-0.6-0.7-0.6-0.8-0.3-0.8-0.4-0.3-0.3-0.4-0.5-0.4-0.2 0-0.5-1-0.4-1.5-0.9-0.5-0.4-0.5-0.1-0.4-0.6-0.9-0.3-1.4-1.4-1.2-1.5-0.6-0.1-2.1 0-0.2 0-0.3-0.2-0.5-0.6-0.1-0.1-0.3-0.1-0.6-0.5-0.3-0.1-1-0.1-0.3-0.1-0.4-0.4-0.7-1.1-0.4-0.2-0.6-0.1-1.6-1.3-0.1-0.7 0-0.8 0-0.8 0.1-0.9 0-0.5-0.1-0.4-0.2-0.4-0.2-0.4-0.2-0.2-0.3-0.2-0.2-0.1-0.1-0.2-0.1-0.5 0.3-0.5 0.3-0.5 0.1-0.7-0.3-1.4-0.5-1-0.6-1-0.8-1-0.2-0.2 0.1-0.5 0.5-0.7 0.6-0.4 0.5-0.6 0.3-0.8 0-0.6 0-0.6 0.1-0.6 0.2-0.7 0.4-0.9 0.6-0.6 0.6-0.3 1.5 0.1 0.6-0.1 0.3-0.3z m137.1 179.1l0.2 0 0.6 0.2 0.9 0.4 0.8 0.6 0.6 1-0.2 0-0.7-0.9-0.7-0.5-0.7-0.4-0.5-0.1-0.3-0.3z m-16-7.4l-0.1-1.3 0-0.8 0.2-0.7 0.2-0.4-0.2 1.3 0.1 1.4 0.6 0.6 1.3 0.5-0.1 0.5-1.6-0.6-0.4-0.5z m-48-47.2l-0.4 0.2-0.6 0.5-0.5-0.5-0.5-0.1-0.4 0.2-0.3-0.4-0.4-0.1-0.5-0.6-0.4-0.2-0.3 0.1-0.3-0.2-0.6 0.1-0.3-0.2 0-0.5-0.8-0.1-0.1-0.3-0.7-0.4-0.8-0.4-0.4-0.4-0.3 0-0.3-0.2 0.8-0.5 0.9-0.6 0.4-0.6 0.2-0.1 0.1-0.3 0.2-0.4 0.1-0.2 0.1-0.4-0.1-0.4-0.3-0.3-0.1-1.3 0.1-1.5 0.3-1.3 0.3-1.3 0.2-0.4 0.2-0.5 0.4-0.3 0.4-0.3 0.5 0.4 0.6 0 0.6-0.5 0.5-0.4 0.5-0.1 0.8 0 0.5-0.1 0.3-0.3 0.3-0.3 0.4-0.2-0.1 0.3-0.4 0.4 0.1 0.6 0.4 0.3 0 0.2-0.1 0.3 0 0.3-0.2 0.3 0.2 0.4-0.1 0.5 1 1.4 1.2 2.4-0.5 1.2-0.1 1-0.4 1.7-0.4 0.4 0.2 0.5-0.5 0.6-0.2 0.7-0.3 0.4-0.1 0.6 0.1 0.7 0.3 0.1 0.2 0.4-0.3 0.2-0.3-0.2z m-72.1-100.9l0.9 0.2 1.3 1.1 1.1 1.5 0.5 1-0.4 0-0.3-0.1-0.3-0.3-0.1-0.3-0.7 0.6-1.3-0.7-1-1.4 0.3-1.6z m159.5 182l0.1-0.6 0-1.7 0.3-0.3 0.6 0 0.5 0.2 0.4 0.2 0.2 0.6 0 0.2-0.3 0.2-0.5 0.4-0.6 0.4-0.6 0.3-0.1 0.1z m-1.8 0.9l0.1-0.3 0.6-1 0.1-0.6 0.1-0.3 0.2 0.1 0.1 0.4-0.3 0.7-0.2 0.1-0.2 0.3-0.1 0.2-0.1 0.2-0.1 0.1-0.1 0-0.1 0 0 0.1z m-60.2-55.9l-0.2-0.3 0.3-0.3 0.4 0.6 0.2 0.5-0.5-0.1-0.2-0.4z\",\n\tMXTAB:\n\t\t\"M831.4 503.9l0 8.2 0 8.3-12.6-0.1-0.1 0-0.1-0.1-0.1-0.4 0-0.5 0.1-0.4 0.2-0.3 0.4-0.1 0.4 0 0.3-0.1 0.1-0.4-0.1-0.1-0.7-1.2-0.2-0.3-0.3-0.1-0.6 0-0.3 0-0.5-0.2-0.3-0.2-0.2-0.3 0.2-0.9 0-0.5-0.2-0.1-0.3-0.2-0.2-0.2-0.6-0.2-0.6-0.2-0.5-0.2-0.1 0-0.1-0.1-0.1 0-0.1 0-0.5-0.2-0.6-0.3-0.5-0.3-0.2-0.5 0-0.3 0.1-0.3 0-0.3-0.1-0.3-0.2-1-0.2-1.1-0.4-1-0.5-0.9-0.6-0.2-0.6 0-0.6 0-0.6 0-0.4-0.2 0.1-0.6 0.3-0.5 0.2-0.3-0.1-0.9-0.1-0.2-0.1-0.1 0-0.2 0-0.6 0-0.2-0.4-0.7-0.6-0.5-0.6-0.1-0.6 0.5-0.7-0.4-0.4-0.1-0.4 0.1-0.4 0.1-0.1 0.3-0.1 0.3-0.2 0.3-0.4-0.4 0.1-1.1-0.4-0.2-0.2 0-0.7 0.2-0.8 0.5-0.8 0.8-0.7 0.8 0.5 0.9-0.6 0.5-1 0.1-0.9-0.1-0.6 0.4-0.7 0.4-0.7 0.4-0.7 0.3-0.9 0.2-1.1 0.2-0.9 0.3-0.7 0.5-0.3 1 0 0.7-0.2 0.5-1 0.4-0.6 0.1-0.6 0.5-0.5 0.5-0.4 0.5-0.7 0.5-0.6 0.6-0.6 0.5-0.6 0.6-0.3 0.2-0.3 0.3-0.3 0.3-0.2 0.3-0.5 0.4-0.4 0.4-0.5 0.4-0.4 0.4-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.8 0.5-1 0-0.9-0.3-0.8-0.4-0.4-0.4-0.4-0.4-0.3-0.5-0.3-0.5-0.5-0.9-0.3-0.8-0.5-0.6-1-0.2-0.7 0-0.4-0.3-0.2-0.6-0.1-0.7 0-1.3-0.2-1.2-0.3-1.2 0-1.2 0.1-0.5 0.2-0.5 0.2-0.4 0.1-0.5 0-0.5 0-0.6-0.1-0.5 0-0.5 0-0.1 0-0.1 0-0.1 0-0.6-0.1-0.2 0-0.5-0.4 0.6-0.6-0.1-0.7 0.7-0.9-0.2-0.9-0.7-0.7-0.8-0.7-0.3-0.5-0.4-0.3-0.2-1-0.1-0.8-0.3-0.4 0-0.3 0.1-0.4 0.5-0.1 0.2-0.4 0.1-0.1 0.6-0.6 1.8-0.6 1.8-0.5 1.8-0.5 1.7-0.1 0.5-0.1 0.6-0.2 0.6-0.2 0.4-0.4 0.3-0.4 0.3-0.4 0.3-0.3 0.4-0.1 0.1-0.1 0.6-0.1 0-0.2 0.1-0.1 0.1-0.5 0.4-0.2 0.2-0.1 0.3-0.2 0.2-0.1 0.4-0.3 0.8-0.3 0.8-0.4 0.9-0.4 0.8-0.4 0.9-0.5-0.2-0.5-0.2-0.4-0.4-0.2-0.6 0.1-0.2 0.1-0.3 0.1-0.4 0.1-0.3 0-0.3 0-0.3 0.1-0.3 0.1-0.3 0.1-0.7 0.2-0.6-0.3-0.5-0.8-0.4-0.4-0.3-0.6-0.7-0.6-0.7-0.3-0.5-0.5-0.7-0.7-0.5-0.8-0.4-0.8-0.2-0.3 0-0.3 0-0.3-0.1-0.1-0.2-0.1-0.6-0.2-0.2-0.5-0.1-0.6 0-1.1-0.3-0.3-0.8-0.1-0.8-0.5-0.7-0.4-0.1-0.4-0.1-0.4 0-0.4-0.2 0-0.1-0.1-0.2 0-0.1-0.1-0.2-0.2 0-0.2 0-0.3 0-0.2-0.1-0.4-0.4-0.1-0.7 0.1-0.7 0.1-0.6 0.1-0.5 0.3-0.4 0.2-0.4-0.2-0.4-0.2-0.3-0.1-0.3 0-0.3-0.1-0.3-0.1-0.3-0.2-0.2-0.1-0.1-0.1-0.2 0.1-0.2 0.2-0.1 0.1-0.2-0.3-0.2-0.2-0.3 0-0.4 0-0.4 0-0.4-0.1-0.4-0.2-0.1-0.3 0-0.3-0.2-0.1-0.2-0.1-0.4 0-0.3-0.1-0.3 0.7-0.4 0.8-0.3 2.2-0.5 0.4-0.4 0.6-0.3 3.2-1.1-0.2 0.4-0.3 0.2-0.2 0.3-0.1 0.5 0.3 0.1 2.3-0.3 0.5-0.2 0.4-0.2 0.2-0.3 0-0.3-0.1-0.2-0.1-0.2 0.1-0.3 0.2-0.2 0.4-0.2 0.1-0.1 0.4 0.1 0.4-0.1 0.4-0.2 0.4-0.2 0.2 0.5 0.5 0.1 1.9-0.3 0.3-0.4 0.4-1-0.2-0.7-0.1-0.1-0.3 0-0.4 0.2-0.4 0.1-0.1 0.2-0.4 0.3-2 0.6-0.2 0.2-0.2 0.4-0.2 0.1-1.3 0.2-1 0.7-0.3 0.2-0.3 0-0.3 0-0.3 0.3 0.2-0.5 0.5-0.3 0.6-0.2 0.2-0.3 0.4-0.3 5.3-2 1.3-0.3 3-0.4 4 0.2 4.3-0.2 0 0.2-0.2 0.4-0.3 0.3-0.2 0.1 0.1 0.3 0 0.7 0.2 0.2 0.3 0 0.4-0.1 0.5-0.3 0.2-0.2 0 0.5-0.3 0.6-0.1 0.4 0.2 0 0.4-0.6 0.2-0.3-0.2-0.1 0.6-0.1 0.2-0.5-0.2-0.5-0.7-0.2-0.6-0.1 0.1-0.3 0.4-0.2 0.6-0.2 4.6-0.1 2.5-0.6 1.4-0.8 1.3-1.3 0.6-0.9 0.2-0.4 0.2-0.3 0.2-0.1 0.3 0 0.1 0.2 0.4 1 0.2 2.9 0.4 0.8 0.2-0.8-0.2-0.5 0-0.7 0.2-1.2-0.2-0.6-0.7-1.4-0.1-0.4 0.5-0.2 0.7-0.1 1.3 0.1 0.6-0.1 3-0.7 0.3 0.5 0.3 0.6 0.4 0.5 0.4 0.6 0.2 0.7 0.1 0.8 0.3 0.7 0.4 0.5 0.3 0.2 0.2 0.2 0.2 0.2 0.3 0.2 0.3 0.1 0.2-0.1 0.2-0.1 0.2 0 1.3 0.2 1.4 0 1.3-0.1 1.3-0.1 0 1.4 0 1.4 0 1.4 0 1.4-0.1 0.9-0.1 1.2 0 1.2 0.5 0.7 0.7 0.4 0.6 0.6 0.7 0.5 0.6 0.5 0.4 0.3 0.4 0.2 0.4 0.2 0.4 0.1 0.5 0.3 0.2 0.5 0.1 0.5 0.5 0.2 0.8 0.6 0.8 0.5 1 0.4 0.9 0 1.4 0.1 1.4 0 1.4 0 1.3 0 0.3-0.4 0.3-0.6 0.3-0.8 0.1-0.5 0-0.3-0.1-0.3 0-0.3 0-0.3 0.1-0.2 0.1-0.3 0.1-0.3 0.1-0.2 0.6-0.1 0.8-0.1 0.8 0.1 0.7 0 0.3 0 0.4 0.1 0.3 0.1 0.3 0.1 0.6 0.2 0.4 0.2 0.5 0.1 0.6 0.1 0.6 0 0.5 0.2 0.5 0.2 0.5 0.4 0.4 0.3 0.5 0.4 0.6 0.4 0.5 0.1 0.6 0 0.5-0.1 0.6 0.1 0.5 0.2 0.3 0.3 0.2 0.2 0.3 0.2 0.4 0.1 0.8 0 0.8 0.1 1.8 0 0 0.6 0 1.5 0 1.5 0 1.5z\",\n\tMXTAM:\n\t\t\"M581.1 196.2l0.1 0.2 0.2 0.2 1-0.1 0.2 0.2 0.2 0.6 0.2 0.1 0.3 0 0.6-0.3 0.3-0.1 0.3 0.1 0.4 0.6 0.1 0.2 0.5 0.1 0.6 0.3 0.6 0.5 0.2 0.5 0 1.3-0.1 0.8 0 0.3 0.2 0.2 0.5 0 0.2 0.1 0.1 0.3 0.1 0.4 0 0.2 0 1.2-0.1 0.4-0.2 0.7-0.1 0.7-0.2 0.4 0 0.3-0.1 0.3-0.5 0.6-0.2 0.3 0.8 0.3 0.2 0.2 0.1 0 0 0.3 0.1 0.1 0.3 0.2 0.1 0 0.4 0.5 0.3 0.6 0.2 0.5 0.1 0.7-0.1 0.6-0.5 1.4 0 0.6 0 0.2 0.2 0.2 0.1 0.2 0.1 0.3-0.1 0.3-0.6 1 0.5 0.7 0.1 0.2 0.5 0.4 0.2 0.1 0.3 0 0.2 0 0.2 0.3 0.1 0.4 0 0.6 0.1 0.4 0.3 0.2 1.1 1 0.3 0.4 0.9 1.1 0.4 0.6 0.5 0.5 0.4 0.5 0.4 1.4 0.4 1.6 1.2 3.4 0 0.5 0.3 1.6 0.1 0.7 0.7 0.3 0.8 0.2 0.3 0.4 0.3 0.9 0.1 0.5-0.1 0.3-0.3 0.4-0.2 0.4 0.1 0.4 0.6 0.5 0.6 0.1 0.5-0.1 0.6 0 0.1 0.1 0.2 0.3 0.2 0.1 0.2-0.1 0.4-0.2 0.7 0 0.3 0.2 0.2 0.5 0.5-0.4 1 0.8 0.7-0.2 0.3 0.2 0.3 0.1 0.2-0.1 0.2-0.2 0.3 0.2 0.2-0.1 0.2-0.1 0.3 0 0.1 0.1 0.5 0.6 0.9 0.6 0.4 0.4-0.2 0.5 0.4 0 0.4 0 0.3 0.2 0.3 0.2-0.3 0.5 0 0.1 0.3 0.1 0.2 0 0.6 0.6 0.3 0.2 0.4 0.1 1.7-0.7 0.8 0.5 0.9 0.2 0.8 0.4 0.6 0.7 0.5-0.6 0.8 0.3 0.9 0.5 0.8 0.2-0.3 0.7 0 0.3 0.4 0.1 0.7 0 0.2 0.2 0.7 1.1 0.3 0.3 2.2 1.1 1.1 0.3 1 0.1 1.3-0.4 0.6 0.2 0.2 0.7 0.3 0.2 0.6-0.2 0.9-0.5 0.4 0 1.7 0.2 1.8-0.2 2.2 0 0.5 0.2 0.1 0.4 0.4 0.2 2.5 0.1 0.5 0.2 0.6 0.2 0.5 0.4 0.3 0.5 0.2 0.5 0.3 0.4 0.9 0.4 1.2 1.3 0.6 0.4 0.4 0.2 0.5 0 0.6 0.1 0.2 0.2 0.2 0.5 0.3 0.5 0.6 0.1 0.1-0.1 0-0.2 0.1-0.2 0.2 0 0.2 0.2 0.1 0.2 0.1 0.2 0.3 0.1 0.6-0.3 0-0.6-0.2-0.7-0.1-0.6 0.1-0.2 0.7-0.4 0.5 0.3 0.6-0.2 0.6-0.5 0-0.5 0.4-0.1 1.4 0.1 1.9-0.2-0.8 4.4 0.3 1.2-0.2 0.7-0.1 1.5-0.2 0.6-0.4 0.5-0.3 1.3-0.8 2-1 2.7-1.7 3.5-4 6.6-2.8 10.6-2.7 10.4-1.6 13.6-0.1 1.1-0.2 1.3-0.2 6.4-0.3 0.5-0.5 0.2-2-0.2 0 0.2 0.8 0 0.6 0.1 0.4 0.3 0.1 0.8-0.2 2.9 0.2 0 0.2-0.8 0.2-2.1 0.2-0.9 0.3 1.1-0.5 6.3-0.5 3-0.3 5.7 0.8 9-0.4 3.8 0.1-1.8-0.1-0.5-0.3 0.3-0.8 3.3-0.3 0.4-0.9 1-0.1 0.3 0 0.4-0.1 0.2-0.2 0-0.8-0.2 0.6 0.7 0 0.6-0.9 2.3-0.2 0.4 0.1 0.5 0.3 0.2 0.3 0 0.3-0.2 0.3-0.2 0-0.4-0.1-0.9 0.1-0.4 0.3-0.4 0.1 0 0.1 0.3 0.1 0.5 0 0.8-0.6 2.6 0.8 3.1 0 0.9 0.1 0.4 0.3 1.6 0.1 0.4 0.1 0.3 0.5 1.4-0.2 0.2-0.8 0.5-0.2 0.1-0.3 0.2-0.2 0.3-0.3 0.3-0.3 0-0.3-0.3-0.3-0.3-0.2-0.3-0.3-0.2-0.3-0.3 0-0.5 0.3-0.4 0.2-0.4-0.4-0.3-0.5-0.3-0.5-0.4-0.6-0.3-0.4-0.1-0.7 0-0.8-0.3-0.7-0.2-0.6 0-0.5-0.1-0.5-0.4-0.5-0.4-0.4-0.4-0.6-0.5-0.2-0.8-0.2-0.6-0.6-0.2-0.4 0.1-0.3 0.1-0.2 0.2-0.3 0.1-0.3 0.1-0.2 0-0.1 0-0.4-0.2-0.4 0-0.2 0.6 0 0.7-0.1 0.6-0.3 0.2-0.4 0-0.4-0.1-0.3-0.2-0.5 0.2-0.2-0.3-0.2-0.5-0.3 0.1-0.4 0.4-0.3-0.1-0.3-0.3-0.4-0.3-0.2 0.1-0.1 0.1-0.1 0.1-0.2-0.2-0.2-0.1-0.2 0-0.1 0-0.2 0-0.9 0-0.9 0.1-1 0.3-1 0.1-0.3-0.2-0.3-0.1-0.3-0.2-0.3-0.3-0.5 0.7-0.8 0.3-0.9 0.1-0.9 0.1-0.4 0.2-0.3 0.4-0.3 0.4-0.3 0.3-0.6 0.1-0.8 0-0.7-0.1-0.6-0.1-1-0.2-0.9-0.2-0.9-0.3-0.9-0.4-0.1 0-0.1-0.1-0.1 0-0.8-0.3-0.8-0.2-0.9-0.2-0.8-0.1-0.7-0.1-0.7-0.1-0.6-0.2-0.6-0.5-0.4-0.6-0.4-0.7-0.3-0.8-0.3-0.7-0.5-0.9-0.5-0.9-0.5-0.8-0.4-0.9-0.1-0.2-0.1-0.1-0.1-0.2-0.1-0.2-0.3 0.5-0.4 0.5-0.4 0.4-0.4 0.1-0.5-0.3-0.5-0.6-0.5-0.7-0.4-0.5-0.3-0.2-0.3-0.3-0.3-0.2-0.3-0.1-0.3 0.1 0 0.1 0.1 0.1 0.1 0.3 0.1 0.5 0.1 0.4 0.1 0.5 0.1 0.4 0 0.9-0.2 0.2-0.5-0.1-0.8-0.3-0.5-0.2-0.6-0.1-0.5-0.2-0.6-0.2-1.5-0.6-1.5-0.7-1.5-0.6-1.5-0.6-0.7-0.2-0.6-0.3-0.7-0.3-0.6-0.3-0.4-0.1-0.5-0.2-0.3-0.2-0.2-0.2-0.1-0.5-0.1-0.4-0.1-0.3-0.2-0.4-0.3-0.5-0.2-0.3 0.1-0.4 0.4-0.4 0.6-0.4 0.7-0.2 0.7-0.2 0.6-0.5 0.3-0.3 0.2-0.4 0.1-0.4 0.1-0.4-0.2-1.1-0.6-0.8-0.8-0.7-0.7-0.8-0.3-0.6-0.1-0.5 0-0.6-0.1-0.6-0.5-0.1-0.7 0.4-0.7 0.7-0.5 0.4 0.2-0.9 0.3-1 0.2-0.9 0.2-0.9 0.1-0.5 0.1-0.4 0.1-0.5 0-0.4-0.2-0.5-0.7-0.5-0.8-0.5-0.5-0.3 0.7-0.8 0.8-0.7 0.8-0.4 1 0.2 0.7 0.3 0.7 0.3 0.8 0.3 0.8 0.2-0.4-1.2-0.3-1.2-0.3-1.2-0.4-1.2 0.1-0.3 0.1-0.4 0.2-0.3 0.2-0.3 0.3-0.8 0.3-0.8 0.4-0.8 0.4-0.8 0.2-0.5 0.3-0.6 0.4-0.6 0.4-0.5 0.2-0.1 0.3-0.1 0.3-0.1 0.3 0 0.9 0 0.8 0 0.8-0.1 0.8-0.1 0.8-0.1 0.9 0 0.8-0.2 0.5-0.5 0.5-0.8 0.6-0.9 0.6-0.8 0.6-0.9 0.3-0.1 0.4 0.1 0.4 0.1 0.3-0.1 0.1-0.3-0.1-0.4-0.1-0.4-0.1-0.3-0.1-0.7-0.4-0.5-0.5-0.3-0.5-0.4-0.5-0.4-0.5-0.5-0.5-0.4-0.4-0.5-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.5-0.8-0.2-1.4 0-1.6 0.1-1.1 0.2-0.8 0.2-0.8 0.2-0.8 0.3-0.8 0.2-0.7 0-0.5-0.1-0.6-0.1-0.7-0.1-0.4-0.1-0.4-0.1-0.4-0.1-0.4 0-0.1 0-0.1 0-0.1-0.1-0.4-0.1-0.4-0.1-0.4 0-0.4-0.8 0.4-0.7 0.3-0.8 0.3-0.7 0.3-0.3-0.7-0.3-0.9-0.2-0.8 0-0.7 0.5-0.4 0.5-0.5 0.5-0.4 0.5-0.5 0.5-0.3 0.6-0.3 0.7-0.2 0.5-0.2 0.2 0.1 0.3 0.1 0.2 0.2 0.2 0.1 0.3-0.1 0.2-0.1 0.2-0.2 0.2-0.2 0.3-0.2 0.2 0 0.2-0.2 0.1-0.3 0-0.6 0-0.4 0.2-0.4 0.3-0.3 0.2-0.1 0.2-0.1 0.2 0 0.2 0 0.3-0.2 0.1-0.1 0.1-0.2 0.1-0.2 0.5-0.4 0.4-0.1 0.5 0.1 0.7-0.1 0.3-0.1 0.3-0.1 0.3-0.2 0.3-0.3 0.4-0.5 0.2-0.2 0.4 0.2 0.5 0.4 0.6 0.3 0.8 0.3 0.8 0.2 0.7 0.2-0.1-0.3 0-0.2-0.1-0.3-0.1-0.3-0.3-0.7-0.2-0.7-0.1-0.7 0.4-0.7 0.3-0.3 0.3-0.4 0.3-0.4 0.2-0.4-0.2-0.3-0.3-0.5-0.4-0.4-0.3-0.3-0.1-0.4 0.3-0.2 0.6 0 0.4 0-0.2-0.5-0.1-0.5 0.2-0.2 0.6 0.1 0.5 0 0.3-0.4 0.2-0.4 0.5-0.2 0.4-0.6 0.3-0.6 0.4-0.1 0.4 0.7 0.5 0.6 0.6 0.3 0.7 0 0.7-0.1 0.7-0.1 0.6-0.3 0.5-0.4 0.6-0.5 1.6-1.3 1.6-1.3 1.5-1.3 1.6-1.4 1-0.8 1-0.8 1-0.9 1-0.8 0.4-0.4 0.5-0.4 0.4-0.4 0-0.6 0-0.6-0.1-0.2-0.3-0.2-0.4 0-0.5 0-0.7 0.1-0.7-0.1-0.4-0.1-0.2-0.8 0-1.4 0.1-1.4 0.1-1-0.1-1.6 0-1.7 0-1.6 0-1.6 0-1.2 0.1-1.8-0.1-1.7-0.4-0.8-0.7-0.2-0.7-0.2-0.7-0.2-0.8-0.2-0.4-0.2-0.5-0.1-0.4-0.1-0.5-0.1-0.6-0.2-0.8-0.3-0.8-0.2-0.6 0-0.4 0.5-0.5 0.8-0.4 0.9-0.3 0.7-0.8-0.8-0.7-0.7-0.7-0.7-0.7-0.8-0.5-0.5-0.4-0.4-0.5-0.3-0.6 0.1-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2-0.2 0-0.3-0.1-0.2-0.1-0.2 0.1-0.2 0.1-0.1 0.2-0.2 0.2-0.2 0.2-0.5-0.9-0.2-1.8-0.1-2-0.1-1.5-0.1-0.5-0.1-0.4-0.2-0.3-0.4-0.1-0.4 0.1-0.5 0-0.4 0-0.4-0.2-0.3-0.4-0.4-0.4-0.3-0.4-0.3-0.4-0.3-0.4-0.2-0.4-0.3-0.4-0.2-0.4-0.4 0-0.6 0.6-0.7 0.3-0.5-0.5-0.3-0.5-0.1-0.5 0-0.5 0-0.7 0-0.4 0.1-0.3 0.2-0.2 0.2-0.3 0.4-0.8 0.2-0.9 0.1-0.9-0.3-0.9-0.6-0.9-0.9-0.5-1.1-0.4-0.9-0.4-0.4-0.2-0.4-0.2-0.5-0.2-0.3-0.1-0.6 0.1-0.6 0-0.6 0-0.6 0 0.6-0.6 0.4-0.4 0.3-0.5 0-0.9 0.1-0.7 0.4-0.6 0.4-0.6 0.4-0.5-0.3-0.1-0.1-0.2-0.1-0.3-0.1-0.2-0.3-0.2-0.4-0.1-0.3-0.2-0.3-0.3-0.2 0-0.4-0.1-0.4-0.1-0.1 0-0.2-0.1-0.2-0.1-0.2 0-0.3 0-0.9-1.2 0.1-1.9 0.6-2.1 0.5-1.6 0.2-0.9 0.2-0.6-0.2-0.5-0.6-0.5-0.3-0.5-0.1-0.7-0.1-0.8-0.1-0.5-0.2-1.6-0.3-2.3-0.4-2.2-0.7-1-0.9-0.2-0.9-0.1-0.9-0.1-0.9-0.2-0.2-0.3-0.1-0.8 0-0.8 0.1-0.4 1.4-0.9 1.4-0.9 1.4-0.7 1.5-0.7 0.1 0z m54.4 157.1l0.5-1.3 0.2-0.4 0.2 0.6-0.4 1-0.6 0.9-0.7 0.3 0.2-0.3 0.4-0.5 0.2-0.3z\",\n\tMXTLA:\n\t\t\"M611.8 453.6l-0.1-0.4 0-0.4 0-0.4-0.1-0.4-0.9-0.2-0.4-0.4-0.3-0.5-0.2-1 0.4 0 0.3-0.1 0.4 0 0.3 0 0.4 0 0.2-0.2 0.1-0.3 0.1-0.3 0.4 0.1 0.3-0.1 0.3-0.3 0.3-0.3 0.4-0.1 0.4 0.3 0.4 0.3 0.5 0 0.4-0.3 0.4-0.4 0.4-0.2 0.4 0.4 0.1 0.1 0.1 0.1 0.1 0.1 0.6 0.1 0.6 0 0.6 0.1 0.6 0.1 0.1 0 0.1 0.1 0 0.1 0.1 0 0.6 0.3 0.5-0.3 0.3-0.8 0.3-0.7 0.2-0.4 0.3-0.3 0.2-0.3 0.3-0.3 0.1-0.2 0-0.2 0.1-0.1 0.4-0.2 0.2 0 0.1 0.2 0.1 0.2 0.1 0.1 0.6 0.4 0.6 0.3 0.7 0.3 0.8-0.1 0.4 0.1 0.3 0 0.4 0 0.4 0 0.5-0.2 0.1-0.3-0.1-0.3 0-0.6 0.3-0.4 0.5 0.3 0.5 0.9-0.1 0.9-0.3 0.5 0.2 0.3 0.4 0.1 0.6 0.1 0.5 0.2 0.4 0.4 0.3 0.5 0.5 0.4 0.8 0.3 1.1 0.3 0.9 0.5-0.2 0.8-0.3 0.1-0.3 0-0.2 0.1-0.1 0.3 0 0.3 0.1 0.2 0.2 0.1 0.2 0 0.2 0.4 0.1 0.6 0.2 0.4 0.5-0.2 0.5-0.3 0.5-0.2 0.5 0 0.5 0.3 0.3 0.3 0.4 0.4 0.3 0.4 0.3 0.4 0.3 0.3 0.3 0.2 0.3 0.3 0.4 0.1 0.8-0.1 0.5 0.2 0.3 0.6-0.2 0.8-0.6 0.7-0.8 0.4-0.9 0-0.7-0.4 0-0.1-0.1 0 0-0.1-0.1-0.1-0.5 0.4-0.8-0.1-0.8-0.2-0.7-0.2-0.1 0.1-0.1 0.1-0.2 0.2-0.1 0.1-0.3 0.1-0.3 0.2-0.3 0.2-0.2 0.3 0 0.1 0.3 0.6 0.4 0.5 0.4 0.5-0.2 0.5-0.2 0.2-0.2 0.2-0.3 0.3-0.2 0.2-0.6 0.3-0.7-0.1-0.6-0.3-0.7-0.3-0.1-0.1-0.2-0.1-0.2 0-0.2-0.1-0.1-0.1-0.1 0-0.1-0.1-0.1 0-0.1 0-0.2-0.2-0.3-0.1-0.2-0.1-0.3 0-0.5 0.7-0.5 0.8-0.6 0.7-0.7 0.3-0.6 0.1-0.6 0.3-0.6 0.2-0.6-0.2-0.3-0.3-0.2-0.4-0.2-0.3-0.2-0.3-0.1-0.1-0.1-0.1-0.1-0.1 0-0.1-0.2-0.1-0.1-0.1-0.1 0-0.1-0.1-0.1-0.1-0.1-0.1 0-0.1-0.1 0-0.1-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.1 0 0-0.1-0.3-0.1-0.2-0.1-0.2-0.2-0.2-0.2-0.2-0.1-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.3-0.1-0.2-0.1-0.2-0.2-0.5-0.3-0.4-0.4-0.4-0.4-0.4-0.1 0-0.1-0.1-0.1 0-0.3-0.2 0-0.4-0.1-0.3-0.2-0.4-0.2-0.3-0.1-0.3-0.2-0.4 0-0.4 0-0.1 0-0.1 0-0.1-0.1-0.1-0.5-0.4-0.3-0.1-0.3 0.1-0.5 0.3-0.8 0.1-0.9-0.2-0.9-0.3-0.8-0.2z\",\n\tMXVER:\n\t\t\"M612.5 362.7l1-0.1 1-0.3 0.9-0.1 0.9 0 0.2 0 0.1 0 0.2 0 0.2 0.1 0.2 0.2 0.1-0.1 0.1-0.1 0.2-0.1 0.4 0.3 0.3 0.3 0.3 0.1 0.4-0.4 0.3-0.1 0.2 0.5 0.2 0.3 0.5-0.2 0.3 0.2 0.4 0.1 0.4 0 0.3-0.2 0.1-0.6 0-0.7 0.2-0.6 0.4 0 0.4 0.2 0.1 0 0.2 0 0.3-0.1 0.3-0.1 0.2-0.2 0.3-0.1 0.4-0.1 0.6 0.2 0.2 0.6 0.2 0.8 0.6 0.5 0.4 0.4 0.5 0.4 0.5 0.4 0.5 0.1 0.6 0 0.7 0.2 0.8 0.3 0.7 0 0.4 0.1 0.6 0.3 0.5 0.4 0.5 0.3 0.4 0.3-0.2 0.4-0.3 0.4 0 0.5 0.3 0.3 0.3 0.2 0.2 0.3 0.3 0.3 0.3 0.3 0.3 0 0.3-0.3 0.2-0.3 0.3-0.2 0.2-0.1 0.8-0.5 0.2-0.2 0.3 0.6 0 3.8 0.3 1.1 4.4 8 2.9 3.5 0.5 0.3 1.6 1.5 0.3 0.1 0.3 0.5 2.1 1.3 0.7 1.3-0.1 1.3-0.4 1.3-0.2 1.3-0.2 0.5-0.8 1.4-0.3 0.5-0.3 0.5-0.2 0.7-0.2 1.4-0.2 0-0.4-2.1-0.7-1.6-0.2-0.9-0.3-0.3 0-0.2 0.5-0.5 0.5-0.4 0.5-0.3 0.6-0.1 0.3 0.3 0.3-0.6 0.1-0.4 0.1-0.5 0.1-0.5-0.3-0.6-0.6-0.5-1.1-0.7-1.4-1.3-0.4-0.7-1.6-1.7-1.3-1.9-0.7-0.6-0.1-0.3 0-0.4-0.5-2.1-0.3-0.7-0.8-0.5-2.4-4.3-0.3-1 0.1 0.7 0.5 1.1 0.2 0.4 0.2 0.6 0.7 1.7 0.2 1.2 0.1 2.6 0.6 2.1 0.5 2.6 0.4 1.2 2.3 4.2 0.4 0.5 0.5 0.2 0.4 0 0.5-0.1 0.4-0.4 0.3 0.4 0 0.6-0.3 1.2 0.1 0.7 2 4 0 0.3 0.4 0.2 0.3 0.4 0.2 1.1 1.7 4.6 2 3.9 2 3.6 0.3 1.1 0.3 0.5-0.2 0.1-0.1 0.1-0.3 0.4 1.4 2.9 3.3 4 1 0.9 1.1 0.6 0.6 0.5 0.4 1.2 0.4 0.5 0.8 0.8 2 2.4 1.8 1.5 0.5 0.6 0.4 0.9 0.3 0.3 0.3 0.2 0.1 0.2 0.3 0.1 0.3 0.2 1 1.8 1.9 2.3 1.9 2.9 1.5 1.9 0.5 0.9 1 2.9 0.3 2.7 1 3.6 0.3 0.5 0.9 1.2 0.2 0.5-0.3 0.8 0 0.4 0.4 1 0.2 1.2 0.3 0.6 0.3 0.6 0.7 0.4 2.4 2 0.4 0.3 0.7-0.4 0.3 0.5 0.1 0.7 0.2 0.5 0.2 0.5 0.4 1.5 0.4 0.6 0.4 0.5 0.6 0.4 0.7 0.2 0.7 0 0.4 0 0.2 0.4 0.4 2.1 0.5 1.2 0.5 0.9 0.6 0.8 1 1 0.7 0.5 0.5 0.2 0.5 0 0.6 0.2 0.6 0.3 0.4 0.3 0 0.2 0 0.8-0.7-0.4-1.4-1-1.6-0.5-1-1-0.6-0.2-0.6 0.4 0.6 0.5 1 0.5 0.6 0.2 0.2 0.5 0.7 0.6 1.2 0.8 0 0.3-0.5-0.1-0.7-0.3-0.5-0.1-0.3 0.2 0.1 0.5 0.4 0.4 0.2 0.2 0.5 0 0.3-0.1 0.7-0.3 0.1-0.1 0-0.2 0.1-0.1 0.3 0 0.3 0 3 0.9 0.6 0.1 0.6 0.3 0.6 0.6 0.6 0.3 0.5-0.4-1.2-0.7-1.9-0.7-1.5-0.8-0.1-1.3 1.9 1.5 2.3 0.9 2.6 0.4 3.7 0.1 2.6-0.2 1.9 0.1 0.5 0.1 0.5 0.2 1 0.9 2.5 1.7 0.4 0.4 0.1 0.6 0.3 0.4 0.6 0.3 3.8 0.6 0.5 0.2 1.3 0.2 0.6 0.3 0.5 0.9 0.9 2.3 0.6 1 1.9 1.8 0.7 0.9 1.3 2.9 0.2 0 0.9 0.7 0.4 0.1 0.8 0.1 1 0.4 0.8-0.1 0.8-0.1 0.7-0.1 0.9-0.4 4.3-0.6 2-0.6 0.1 0.3 0 0.3 0.1 0.4 0.1 0.2 0.3 0.2 0.3 0 0.2 0.1 0.1 0.4 0 0.4 0 0.4 0 0.4 0.2 0.3 0.3 0.2-0.1 0.2-0.2 0.1-0.1 0.2 0.1 0.2 0.1 0.1 0.2 0.2 0.1 0.3 0.1 0.3 0 0.3 0.1 0.3 0.2 0.3 0.2 0.4-0.2 0.4-0.3 0.4-0.1 0.5-0.1 0.6-0.1 0.7 0.1 0.7 0.4 0.4 0.2 0.1 0.3 0 0.2 0 0.2 0 0.1 0.2 0 0.1 0.1 0.2 0 0.1 0.4 0.2 0.4 0 0.4 0.1 0.4 0.1 0.5 0.7 0.1 0.8 0.3 0.8 1.1 0.3 0.6 0 0.5 0.1 0.2 0.2 0.1 0.6 0.1 0.2 0.3 0.1 0.3 0 0.3 0 0.8 0.2 0.8 0.4 0.7 0.5 0.5 0.7 0.3 0.5 0.6 0.7 0.6 0.7 0.4 0.3 0.8 0.4 0.3 0.5-0.2 0.6-0.1 0.7-0.1 0.3-0.1 0.3 0 0.3 0 0.3-0.1 0.3-0.1 0.4-0.1 0.3-0.1 0.2 0.2 0.6 0.4 0.4 0.5 0.2 0.5 0.2-0.1 0.3-0.2 0.3-0.1 0.3-0.1 0.3-0.3 0.6-0.6 0.5-0.6 0.4-0.5 0.4-1.1 0.7-1 0.7-1.1 0.7-1.1 0.7-0.3 0.3-0.3 0.2-0.4 0.2-0.4 0.2-4.4-0.3-4.5-0.3-4.5-0.2-4.5-0.3-0.8-0.1-0.9 0-0.9-0.1-0.8-0.1-1-0.1-1 0-0.9-0.1-1-0.1-1.5 0-2-0.1-1.8-0.2-1-0.6-0.1-0.5-0.2-0.5-0.1-0.5-0.2-0.4 0.1-0.2 0.1 0 0.1-0.1 0.1-0.1 0-0.2-0.1-0.3 0-0.2-0.1-0.2-0.4-0.5-0.7-0.5-0.8-0.3-0.7-0.2-0.3-0.5-0.4-0.4-0.4-0.4-0.5-0.4-0.9-1-0.9-1-0.8-1-0.9-1 0-0.4 0.1-0.3 0.1-0.4 0.1-0.3 0.3-0.2 0.3-0.1 0.3-0.1 0.2-0.2 0-0.2 0.1-0.3 0-0.4 0.1-0.2 0-0.4 0.1-0.4-0.1-0.4-0.3-0.2-0.1 0-0.3 0-0.3 0-0.2 0-0.2 0.2 0.2 0.3 0.1 0.2-0.2 0.1-0.3-0.1-0.3-0.1-0.3-0.1-0.3 0.1-0.3 0.7-0.3 0.5-0.6 0.2-0.8 0.1-0.1 0.2-0.1 0.1-0.1 0.1 0 0.2-0.6 0-0.7 0-0.6 0.2-0.6 0.3-0.2 0.3-0.2 0.4-0.3 0.3-0.4 0.1-0.3 0.1-0.5 0.3-0.5 0.3-0.4 0.2-0.1 0-0.1 0.2 0 0.1 0 0.2-0.1 0.2-0.2 0.1-0.3 0-0.3 0-0.3 0.4-0.4 0.1-0.3-0.1-0.5-0.2-0.6 0-0.5 0.2-0.5 0.3-0.7 0.1-0.1 0.1-0.1 0-0.1-0.1-0.1 0-0.5-0.2-0.5-0.1-0.4-0.2-0.4-0.5-0.6-1.2-0.6-1.2-0.6-1.2-0.6-1.2-0.5-0.9-0.3-0.9 0-0.8 0.3-0.9 0.1-0.2 0-0.1 0.1-0.1 0.1-0.2 1-1.1 0.9-1.1 0.8-1.2 0.5-1.5-0.5-0.9-0.3-1-0.4-1-0.6-0.8-0.2-0.2-0.2-0.1-0.2-0.1-0.2-0.1-0.2 0-0.3-0.1-0.2-0.1-0.3 0-0.3-0.1-0.4-0.1-0.3-0.2-0.3-0.2-0.3-0.1-0.2 0-0.3 0-0.3 0.1-0.1 0-0.1 0-0.1 0-0.3 0-0.5 0-0.4 0-0.3-0.2-0.6-0.1-0.4 0-0.2 0.2-0.4 0.5-0.1 0.2-0.4 0.1-0.4-0.1-0.4-0.1-0.3-0.1-0.3-0.4 0-0.2 0.1-0.3-0.1-0.2-0.3-0.1-0.3 0.1-0.4 0-0.1-0.1-0.2-0.1-0.1-0.1-0.3-0.2-0.2-0.8-0.2-0.9-0.2-0.8-0.3-0.5-0.3-0.4-0.4-0.4-0.4-0.3-0.2-0.1-0.3-0.1-0.2-0.2-0.2-0.2-0.8-0.9-0.5-1.2-0.5-1.4-0.2-1.2-0.3-0.8-0.5-0.5-0.6-0.3-0.9-0.2-1.3-0.2-1.1-0.4-0.9-0.6-1.1-0.9-0.2-0.2-0.2-0.2-0.3-0.2-0.2-0.2 0.2 0.9 0.3 1 0.3 1.1 0.1 1-0.3 0.9-0.6 0.9-0.7 0.8-0.7 0.7-0.1 0.1-0.1 0.1-0.1 0.2-0.1 0.1-0.3-0.5-0.5-0.5-0.5-0.5-0.4-0.6-0.1-0.7 0-0.9-0.3-0.6-0.7 0.1-0.1 0-0.1 0-0.8 0.2-0.7 0.1-0.7 0.2-0.7 0.2-0.4 0.1-0.4 0.1-0.4 0-0.4 0.2-0.3 0.2-0.4 0.4-0.4 0.3-0.4 0.1-0.4-0.2-0.5 0.1-0.4 0-0.4-0.1-0.3-0.4 0.1-0.6 0.3-0.5 0.2-0.5-0.2-0.5-0.3-0.3-0.4-0.5-0.1-0.6 0-0.2 0-0.3-0.1-0.2-0.1-0.2-0.1-0.1 0-0.1-0.3-0.1-0.3-0.1-0.3 0-0.3-0.1-0.3 0-0.3-0.2-0.3-0.2-0.4 0-0.4 0.2-0.5 0.2-0.4 0.1-0.6-0.2-0.2-0.1-0.2-0.3-0.2-0.2-0.2-0.3-0.3-0.8-0.3-1-0.1-0.9 0.3-0.8 0-0.1 0.1 0 0.2-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.2-0.3 0.1-0.4 0.2-0.3 0.3-0.2 0.6-0.2 0.5-0.1 0.2-0.2 0-0.7-0.1-0.3-0.1-0.4-0.2-0.3-0.1-0.4 0-0.1 0-0.1 0-0.1 0-0.2-0.1 0 0-0.1 0-0.1 0-0.1 0-0.1 0-0.1 0-0.2 0-0.1 0-0.4-0.1-0.3-0.1-0.4-0.1-0.3-0.2-0.7-0.2-1 0-0.9 0.2-0.8 0.3-0.1 0.3 0 0.4-0.1 0.3 0 0.4-0.2 0.4-0.2 0.3-0.2 0.4-0.2 0.5 0.1 0.6 0.3 0.6 0.1 0.3-0.3 0.1-0.3 0.1-0.2 0.2-0.1 0.3-0.1 0.1 0.1 0.1 0 0.1 0 0.1 0 0.2 0 0.2-0.1 0.2-0.2 0.2-0.2 0.1-0.1 0.1-0.2 0.1-0.1 0.2-0.2 0.1-0.2 0.1-0.1 0.2-0.2 0.2-0.1 0.1-0.2 0.2-0.1 0-0.2 0-0.2-0.3-0.2-0.4-0.3-0.4-0.1-0.4-0.2-0.4-0.1-0.3-0.1-0.4 0.1-0.4 0.2-0.1 0 0 0.1-0.6 0.1-0.8-0.2-0.8-0.4-0.7-0.1-0.1-0.1-0.2 0-0.1 0-0.1 0-0.5-0.3-0.4-0.6-0.4-0.7-0.5-0.5-0.3-0.1-0.3 0.2-0.4 0.1-0.3 0.1-0.2-0.2-0.2-0.2-0.1-0.3-0.2-0.2-0.4-0.1-0.5 0-0.4 0-0.4-0.2-0.2-0.5 0.2-0.2 0.5-0.1 0.4 0.1 0.6-0.1 0.5-0.3 0.3-0.5-0.3-0.6-0.2-0.1-0.1-0.2-0.2-0.1-0.2-0.1-0.1-0.2 0-0.3 0.1-0.3 0-0.2-0.4-0.3-0.4-0.2-0.3-0.3 0.1-0.5 0-0.1 0-0.1 0-0.1 0-0.6 0.2-0.8 0.3-0.5 0.5 0 0.9-0.9 0.5-1.7 0.1-1.8-0.1-1.3-0.1-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0.1-0.2 0.1-0.2 0.1-0.1 0.1-0.1 0-0.1 0.1-0.1 0.3-0.6 0.4-0.6 0.4-0.5 0.5-0.4 0.2-0.3 0.2-0.3 0.2-0.2 0.3-0.3 0.3-0.4 0.4-0.4 0.4-0.4 0.4-0.4 0.5-1.3-0.5-0.7-1.1-0.4-1.1-0.4-0.3-0.1-0.2-0.1-0.3-0.1-0.2-0.2-0.6-0.2-0.5-0.3-0.5-0.4-0.4-0.3-0.8-0.6-0.6-0.3-0.6-0.1-0.8 0.3-0.1 0-0.1 0-0.1 0-0.2 0-0.6 0.4-0.3 0.5-0.3 0.7-0.4 0.5-0.2 0.4-0.3 0.3-0.3 0.4-0.3 0.3-0.2 0.1-0.2 0.2-0.2 0.1-0.2 0.1-0.1 0-0.1 0-0.1 0-0.2-0.1-0.1-0.2-0.1-0.1 0-0.3-0.1-0.8-0.2-0.6-0.5-0.1-0.8 0.3-0.1 0-0.1 0.1-0.1 0-0.5 0-0.3-0.3-0.2-0.5-0.2-0.5 0-0.1 0-0.1-0.1 0 0-0.1-0.1-0.1-0.1-0.1-0.1-0.2-0.2 0-0.4-0.3-0.6-0.2-0.4-0.4-0.2-0.5 0.2-0.4 0.2-0.3 0.1-0.4 0.1-0.3-0.1-0.2-0.1-0.2-0.1-0.2 0-0.3 0.1-0.5 0-0.5-0.2-0.5-0.2-0.5 0.3-0.3 0.4 0 0.4 0.1 0.4-0.1 0.4-0.4 0.3-0.3 0.3-0.1 0.5 0.4 0.3 0.5 0.3 0.4 0.4 0.2 0.5-0.1 0.4-0.4 0.4-0.6 0.3-0.6 0.3-0.5 0.2-0.1 0.1-0.1 0.1-0.1 0-0.2 0-0.7-0.3-0.9-0.5-0.8-0.6-0.3-0.4-0.1-0.4-0.1-0.4-0.1-0.3-0.1-0.3 0-0.4 0.1-0.3 0-0.3 0-0.5-0.2 0.1-0.3 0.3-0.4 0.3-0.4-0.3-0.5-0.4-0.5-0.3-0.5-0.2-0.6 0-0.7 0-0.6 0-0.7-0.4-0.5-0.7-0.6-0.5-0.1-0.5 0.1-0.8 0-0.3-0.2-0.3-0.1-0.4 0-0.3 0.1-0.3 0.5 0 0.5 0.1 0.5 0 0.4-0.3 0.3-0.3 0.1-0.4 0.2-0.2 0.3 0 0.4 0 0.5-0.2 0.3-0.3 0.2-0.4 0.1 0.1 0.3 0.2 0.3 0.2 0.2 0.1 0.3 0 0.3 0.1 0.4 0 0.3 0 0.7-0.1 0.6-0.1 0.6-0.2 0.6-0.2 0.5-0.3 0.4-0.3 0.3-0.4 0.2-0.3-0.3-0.3-0.4-0.1-0.5 0-0.5 0.1-0.4 0.3-0.4 0.2-0.4 0-0.5-0.2-0.2-0.1-0.1-0.1-0.2-0.2-0.2 0-0.3 0-0.3 0.1-0.3 0-0.4-0.3-0.3-0.5 0-0.4-0.1-0.2-0.4-0.1-0.1 0-0.1-0.1 0-0.1-0.1-0.9 0.3-1 1-1 1.3-0.6 1-0.5 0.5-0.5 0.5-0.5 0.6-0.4 0.6-0.3 0.4-0.4 0.4-0.4 0.4-0.4 0.5-0.5 0.6-0.3-0.1-0.4-0.5-0.5-0.4-0.3 0.3-0.2 0.5-0.2 0.5-0.1 0.5-0.8 1.1-1 0.5-0.9-0.2-0.6-1.3-0.4-0.7-0.5-0.7-0.4-0.7-0.1-0.7 0.2-0.3 0.3-0.2 0.3-0.3 0.2-0.3 0.2-0.5 0.1-0.6 0.1-0.6 0-0.5 0.4-0.7 0.7-0.5 0.7-0.5 0.6-0.6 0.3-0.4 0.3-0.6 0.1-0.5-0.1-0.5-0.3-0.2-0.3 0.2-0.4 0.3-0.4 0.1-0.5-0.1-0.3-0.3 0-0.4 0.3-0.5 0.4-0.1 0.3 0 0.4-0.1 0.4-0.1 0.3-0.2 0.2-0.2 0-0.3 0-0.3 0-0.4-0.2-0.3-0.2-0.2-0.1-0.4 0.2-0.4 0.4-0.2 0.5 0 0.4 0 0.4 0.1 0.4 0.1 0.3 0.1 0.4 0.2 0.6 0.4 0.6 0.4 0.7 0.2 0.7 0 0.2-0.1 0.1-0.1 0-0.1-0.1-0.2-0.2-0.8-0.1-1.1 0.2-1 0.4-0.7 0.2-0.2 0.2-0.3 0.2-0.2 0.2-0.3 0.2-0.3 0.2-0.2 0.1-0.2 0.2-0.2 0.1 0 0.1 0.1 0.1 0 0.2-0.1 0.1-0.3 0.2-0.4 0.2-0.5 0-0.3-0.1-0.3-0.3-0.1-0.2-0.1-0.2-0.2-0.2-0.3-0.2-0.3-0.2-0.1-0.3-0.1-0.6-0.9-0.5 0.3-0.6 0.5-0.8 0-0.3-0.6 0.3-0.8 0.3-0.8 0-0.8-0.2-0.5-0.3-0.3-0.4 0.1 0.1 0.5 0 0.6-0.5 0.6-0.7 0.6-0.6 0.4-0.4 0-0.4-0.1-0.4-0.3-0.3-0.2-0.5-0.6-0.4-0.7-0.5-0.5-0.6-0.2-0.2-0.1-0.1-0.2-0.1-0.2 0-0.2 0.1-0.9 0.4-0.6 0.5-0.6 0.5-0.7-0.5-0.3-0.5-0.4-0.5-0.3-0.4-0.3-0.1 0-0.1 0 0-0.1 0-0.5 0-0.6-0.1-0.6 0-0.6-0.1-0.9-0.2-0.7-0.6-0.4-0.8-0.4-0.7-0.3-0.5-0.3-0.4-0.5-0.3-0.6 0.2-0.3 0.3-0.3 0-0.5-0.1-0.5 0.2-0.8 0.4-0.4 1.1 0.2 0.4-0.4-0.2-0.3-0.1-0.2 0.2-0.2 0.3-0.2 0.2 0 0.3 0.2 0.2 0 0.1 0 0.1-0.2 0-0.1 0.1-0.1 0.7-0.4 0.4-0.3 0.3-0.4 0.1-0.2 0.2-0.5-0.1-0.4-0.5-0.1-0.2-0.2-0.1-0.3 0-0.4-0.1-0.3-1.2 0.1-0.4-0.3-0.4-0.7-0.2-0.7 0.7-0.2-0.2-0.6 0.3-0.4 0.4-0.3-0.1-0.2-0.5 0.1-0.7 0.2-0.5-0.1-0.1-0.8 0.1 0 0.3 0.1 1.1 0.1 0.2 0 0.3-0.2 0.4 0 0.3 0 0.3 0.2 0.3-0.1 0.3-0.3 0.2 0.2 0.2 0 0.2-0.5 0.1-0.5 0.2-0.5 0.2-0.4 0.7-1.1 0.6-1.2 0.6-1.2 0.4-1.2 0-0.9-0.3-0.7-0.5-0.7-0.6-0.5-0.9-0.5-0.8-0.5-0.8-0.5-0.9-0.6-0.5-0.4-0.6-0.4-0.5-0.5-0.6-0.3-0.2-0.2-0.2-0.1-0.1-0.1-0.2-0.1z m27.7 19.5l1 0.7 0.4 0.4-0.2 0.4-0.9-0.2-0.7-1-0.4-1.4-0.2-1.2 0.4 0.4 0.2 0.6 0.1 0.7 0.3 0.6z\",\n\tMXYUC:\n\t\t\"M930.5 391.1l0 0.4 0.4 5.8-0.1 1-1.2 1.7-0.4 1.9 0 1.2 1.3 2.9 0.1 1.9-1.8 3.5-0.1 1-0.2 1-0.6 1-0.4 1.1-0.9 1.8-1.8 1.1-1.5 1.2-0.9 0.6-2.4 2.1-2.4 1.3-0.8 0.3-1.7-0.1-0.9 0.3-0.8-0.4-0.8-0.6-0.9 0.2-0.7 0.6-0.5 0.9-0.6 0.9-0.5 1 0.4 1.3 0 1.1-0.7 0-0.3-0.9-0.6-0.7-0.9-0.1-0.8 0.6-0.7 2-1.3 1.5-1.7 0.5-1.6 1-1.6 0.3-0.9 0.4-0.9 0.6-0.9 0.4-1.7 1.1-0.6 0.8 0.2 0.6-0.3 0.5-0.6-0.6-0.8-0.4-1.7 1.7-0.3 0.3-0.5 0.3-0.5 0.1-3.2 0.1-0.9 0.6-1.8 0.6-0.7 0.8-0.8 0.8-3.1 0.4-0.9-0.1-0.8 0.4 0.1 1-0.1 0.9-0.3 1-0.4 1.1-0.6 1.1-0.8-1.7-0.3-2.1-1.4-1.9-1.6-1.6-2-3.9-1.8-1.3-1.9-0.8-1.5-1.5-0.7-2.2-1-1.9-1.7-1.2-0.5-0.4-0.5-1.2 0-0.8-0.5-0.8-1.1-1.6-0.8 0.5-0.5 1.1-0.9 0.2-0.5-0.5-0.5-0.5-0.6 0.2-0.5 0.3-0.8-0.7-0.4-1.1-0.8-0.8-1.1-0.2-1.4 0-1.4-0.1-0.5-0.9 0.3-7.6 0-0.9 0-0.1 0.4-1.6 0.7-1.8 0.1-1-0.2 0-0.4 1.6-0.5 1.2-0.1 0.2-0.1 0.8-0.4 0.8-0.6 0.7-0.7 0.3 0-0.2 0.6-0.7 1.8-5.6 0.3-0.5 0.5-0.5 3.2-2 0.6-0.5 1.9-0.7 1-0.8 0.6-0.3 0.3-0.1 0.9-0.1 1.5-0.6 1.8-1.3 0.5-0.2 0.5-0.1 2.9-1 3.1-0.6 2.3 0 4-0.7 5.4-0.5 2.4-0.7 1.1-0.2 0.7 0.2 0.3 0 0.3 0 0.6-0.3 0.2-0.1 2.5-0.4 1.8-0.6 1.3-0.1 0.6-0.2 1-0.4 3.5-0.8 1-0.7 1.8-1.6 0.5-0.3 1.8-0.2 0.6-0.2 1-0.5 0.6-0.1 2.2 0 0.5 0.1 1 0.4 0.5 0.1 0.5 0 1-0.3 1.5-0.2 0.6-0.2 0.3-0.2 0.5-0.2 1.8 0.1-0.6-0.3-0.6-0.1-0.7 0-1 0.5-1.2 0.3-0.2 0 0.1-0.2 0.6-0.4 0.6-0.2 0.8-0.1 0.7-0.3 0.2-0.1 0.4 0.1 1.3 0.3 2.5 0 0.6 0.1 1.8 0.8 1.2 0.3 2.6 0.4 1.7 0.5 0.1 0.1-0.3 0.2-0.3 0.1-0.3 0-0.4 0-0.2-0.2-0.5-0.2-2-0.4-0.6-0.2 0.7 0.6 0.9 0.5 0.9 0.3 0.9 0.1 2 0 0.9 0.2 0.5 0 0.5-0.2-1.2-0.1-0.6-0.1-0.5-0.3 0.2-0.2 1.9 0.3 1.6 0.6 0.7 0z\",\n\tMXZAC:\n\t\t\"M496.2 279.2l0.5-0.8 0.4-0.4 0.6-0.1 0.9-0.1 2.2-0.2 2.1-0.3 2.1-0.2 2.1-0.2 0.8-0.1 0.9-0.2 0.8-0.1 0.8 0.1 1.2 0.3 1.2 0.4 1.2 0.4 1.2 0.3 1 0.4 1.1 0.3 1 0.3 1 0.3 0.6 0.6 0.5 1 0.5 1.1 0.4 0.8 0.7 0.9 1 0.6 1.2 0.3 1.1 0 0.4 0 0.5 0.2 0.5 0.4 0.4 0.3 0.2 0.4 0.2 0.7 0 0.7 0.1 0.5-0.6-0.1-0.6-0.1-0.6-0.2-0.5-0.2 0.1 0.6 0.3 0.7 0.3 0.6 0.3 0.3 0.8 0.1 0.8 0 0.8 0.1 0.9 0 0.6 0 0.6 0.1 0.6-0.1 0.5-0.3 0.5-0.6 0.6-0.7 0.6-0.6 0.6-0.5 0 0.2 0 0.2 0 0.2 0.1 0.2 1.1-0.2 1.1-0.2 0.9 0.2 1 0.7 0.4 0.4 0.4 0.5 0.3 0.5 0.3 0.5 0.2 0.5 0.2 0.6 0.1 0.5 0.3 0.5 0.7 0.9 1.1 0.7 1.2 0.5 1 0.1 0.6-0.2 0.5-0.1 0.5-0.1 0.6 0.2 0.5 0.3 0.6 0.3 0.5 0.3 0.6 0.4-0.4 1.3-0.3 1-0.5 0.8-1.1 0.6-1 0.6-0.8 0.8-0.7 1-0.6 1-1.4 2.5-1.5 2.4-1.4 2.5-1.3 2.5-0.5 0.7-0.5 0.3-0.6 0.2-0.8 0.2-0.6 0.3-0.6 0.6-0.5 0.7-0.5 0.6-1.1 1.3-1.2 1.1-1.2 1-1.4 1-1.1 0.6-1.3 0.6-1.1 0.8-0.9 0.9-0.2 0.5-0.2 0.5-0.2 0.5-0.3 0.4-0.5 0.2-0.4 0-0.5 0.1-0.5 0.1-1 0.7-0.9 0.9-0.9 1-0.7 1.1-0.7 1-0.8 0.9-0.9 0.8-1 0.8-0.5 0.3-0.6 0.3-0.6 0.3-0.6 0-0.5-0.2 0-0.4 0.1-0.5 0-0.5-0.3-0.3-0.5-0.1-0.5 0.1-0.5 0.1-0.2 0.3-0.2 0.6-0.2 0.7-0.1 0.4-0.1 0.6-0.2 0.7-0.2 0.6-0.3 0.4-0.5 0-0.5-0.1-0.3 0-0.3 0.6-0.1 0.6 0.3 0.3 0.4 0.2 0.4 0.3 0.3 0.5 0.2 0.6 0.1 0.7 0.1 0.6 0.3 0.8 0.1 0.7-0.2 0.7-0.4 0.8-0.3 0.8 0.1 0.7 0.4 0.7 0.3 0.8 0.4 0.7 0.3 0.7 0.3 0.7 0.3 0.8 0.8 1.4 1.1 1.3 1.2 1.1 1.2 1.1 0.3 0.2 0.3 0.2 0.3 0.1 0.3 0.1 1.1 0.6 0.9 1.1 0.8 1.4 0.6 1.1 0.1 0.1 0 0.1 0.1 0 0.5 0.7 0.5 0.6 0.5 0.5 0.7 0.4 0.8 0.1 0.6-0.3 0.7-0.5 0.7-0.4 0.2 0 0.2-0.1 0.2 0 0.2 0 1-0.2 0.5-0.8 0.4-1 0.4-0.9 0.8-0.6 1.3-0.1 1.2 0 1 0 0.7 0 0.6 0 0.6 0.1 0.5 0.5 0.4 0.8 0.3 0.8 0.4 0.9 0.3 0.8 0.1 0.7-0.3 0.4-0.5 0.3-0.6 0.3-0.4 0.4-0.4 0.4-0.1 0.6 0 0.7 0.2 1 0.4 1.1 0.3 1 0.3 1.1 0.1 0.9 0.1 1 0.1 1 0.1 0.9-0.1 0.4-0.2 0.5-0.4 0.4-0.2 0.4-1.2 1.6-1.2 1.6-1.2 1.6-1.2 1.6-0.1-0.7-0.1-0.4-0.3-0.2-0.6 0.1-0.5-0.1-0.5-0.4-0.4-0.6-0.4-0.5-0.4-0.3-0.4-0.2-0.4-0.3-0.4-0.2-0.5 0-0.4 0.1-0.4 0-0.4 0.1-0.8-0.2-0.6-0.4-0.6-0.6-0.7-0.5-0.1 0-0.1-0.1-0.1 0-0.1-0.1-0.4-0.5-0.4-0.6-0.4-0.5-0.5-0.5-0.7-0.4-0.8-0.3-0.7-0.5-0.3-0.7 0-1 0.1-1.1 0-1.1-0.3-0.8-0.5-0.2-0.6 0-0.6-0.1-0.6-0.2-0.4-0.4-0.3-0.3-0.3-0.3-0.5 0.1-0.4-0.4-0.1-0.4-0.2-0.5-0.3-0.3-0.2 0-0.2 0.1-0.2 0.1-0.1 0.2-0.6 0.2-0.5-0.5-0.4-0.7-0.3-0.6-0.3-0.7-0.3-0.7-0.5-0.3-0.5 0.6-0.3 0.6-0.3 0.6-0.5 0.4-0.5-0.1-0.4 0.2-0.2 0.3-0.2 0.3-0.4 0.3-0.2 0.1-0.3-0.1-0.3 0-0.3 0-0.1 0-0.1 0-0.1 0.1-0.3 0.3-0.1 0.4-0.1 0.4-0.2 0.3-0.4 0.2-0.5 0.1-0.6 0-0.4-0.1-1.1 0-1.1 0.1-0.9 0.4-0.7 1 0.1 0.5 0.4 0.4 0.4 0.6-0.2 0.8-0.4 0.7-0.5 0.7-0.6 0.7-0.6 0.6-0.5 0.6-0.5 0.8-0.4 0.8-0.4 0.7-0.4 0.6-0.4 0.5-0.4 0.6-0.3 0.5-0.2 0.7-0.2 0.6 0 0.6 0 0.7 0.2 1.2 0.7 0.7 0.8 0.6 1 0.6-0.1 0.4 0 0.3-0.1 0.4-0.1 0.4-0.1 0.6-0.2 0.9-0.1 0.8 0.3 0.6 0.5 0.2 0.5 0.2 0.4 0.2 0.4 0.3 0.6 0.1 0.5 0 0.5 0 0.5 0.2 0.1 1.1-0.3 1.4-0.6 1.4-0.4 1.1-0.1 0.1 0 0.1-0.1 0.1-0.1 0-0.2 0.3-0.3 0.1-0.4 0.1-0.3 0.1-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.2-0.3 0.4-0.1 0.5-0.1 0.5-0.3 0.3-0.7 0.1 0-0.3 0.1-0.5 0.1-0.3-0.3-0.4-0.5 0.1-0.5 0.4-0.4 0.3-0.7 0.6-0.8 0.4-0.9 0.2-0.9 0-0.6-0.2-0.7-0.3-0.6 0.1-0.4 0.7 0.1 0.5 0 0.5 0 0.6 0 0.5 0.1 1 0.1 1.4 0 1.4-0.4 0.9-0.6 0.1-0.8-0.4-0.8-0.6-0.7 0-0.9 0.2-1.1-0.3-1.1-0.6-0.9-0.6-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.5-0.3-0.5-0.3-0.5-0.2-0.6-0.2-0.4 0-0.5 0.1-0.4 0-0.5-0.1-0.4-0.3-0.4-0.4-0.4-0.3-0.6-0.1-0.6 0.1-0.6 0.1-0.6 0-0.6-0.2-0.4-0.3-0.1-0.4-0.1-0.5-0.1-0.5-0.5-0.3-0.6 0.1-0.6 0.4-0.5 0.3-0.7 0.3-0.3 0-0.1-0.4 0.1-0.7 0-0.7 0-0.3 0.2-0.3 0.5-0.3 0.2-0.4 0.2-0.6 0.1-0.6 0-0.5-0.1-1.1-0.2-1.1-0.2-1.1-0.3-1.1 0.6 0.4 0.6 0.4 0.7 0.4 0.7 0 0.5-0.3 0.4-0.6 0.3-0.7 0.3-0.6 0.6-0.5 0.8-0.4 0.6-0.4 0.1-0.8 0-0.9 0-1.3-0.1-1.2-0.4-0.8-0.2-0.8 0.4-0.9 0.8-0.8 0.6-0.6 0.6-0.5 0.5-0.5 0.6-0.5 0.5-0.5 0.4-0.2 0.3-0.1 0.4 0 0.3 0 0.4-0.1 0.3-0.1 0.3-0.2 0.3-0.3 0.5-0.8 0.8-0.1 0.8 0.3 0.9 0.1 0.5-0.1 0.5-0.2 0.4-0.4 0.2-0.5 0.3-0.8 0.2-0.5 0.4-0.3 0.8-0.3 0.1-0.3 0.1-0.4 0-0.4-0.1-0.4-0.5-0.3-0.5 0-0.3-0.2 0-0.7 0.1-0.3 0.3-0.1 0.4-0.1 0.3-0.1 0.4-0.3 0.3-0.5 0.2-0.5 0.2-0.4 0.2-0.4 0.2-0.6 0.1-0.5-0.2-0.5-0.3-0.1-0.4 0-0.3 0.2-0.4 0-0.1-0.4-0.1-0.3-0.1-0.3-0.4-0.2-0.4 0-0.6 0.1-0.6 0.2-0.5 0.2 0.1-0.4 0.1-0.6 0-0.5-0.1-0.3-0.4-0.3-0.5-0.3-0.4-0.3-0.4-0.3-0.9-0.7-1-0.8-0.9-0.8-0.9-0.8 0 0.1-0.1 0.2-0.1 0.1 0 0.1-0.4 0.5-0.2 0.6-0.3 0.5-0.3 0.6-0.1 0.4 0 0.2 0.2 0.2 0.4 0.1 0.2 0.2 0.1 0.3 0.1 0.3 0.3 0.1 0.3 0 0.3 0.2 0.1 0.2-0.1 0.3-0.2 0.2-0.2 0.1-0.3 0.2-0.2 0.2-0.3 0.7 0 0.8-0.1 0.6-0.6 0.3-0.6 0.3-0.4 0.8-0.3 0.9-0.3 0.7-0.2 0.9-0.3 0.3-0.1-0.3-0.2-0.2-0.3-0.2-0.4 0.1-1-0.2-0.3 0.1-0.4 0.5-0.3 0.2-0.4 0.2-0.7 0.2-0.5-0.2-0.5-0.6 0-0.8 0.1-0.6 0.3-1.2 0-0.6-0.1-0.6-0.1-0.6-0.2-0.5-0.2-0.5 0-0.3 0.1-0.4 0.2-0.5 0.2-1 0.5-1.6 0.5-1.4 0.7-0.5 0-0.3 0-0.3 0-0.3-0.1-0.3-0.2-0.1-0.3 0-0.3-0.1-0.2-0.1 0-0.3 0.1-0.4 0.1-0.4-0.2-0.3-0.3-0.1-0.6 0-0.6 0-0.4 0-0.2-0.2-0.1-0.2-0.2-0.1-0.3 0.3-0.6 1.2-0.4 1.5-0.3 1.6-0.2 1.4-0.4 1.7-0.4 1.7-0.4 1.7-0.4 1.6 0 0.2-0.1 0.1 0 0.2 0 0.1-0.3-0.3-0.3-0.6-0.2-0.7-0.1-0.6-0.1-0.5-0.1-0.6-0.1-0.6 0-0.6 0.1-0.6 0.2-0.5 0.3-0.4 0.2-0.6 0-0.5-0.2-0.5-0.2-0.4-0.2-0.5 0-0.4 0.3-0.3 0.4-0.2 0.2-0.3 0.2-0.4 0-0.5 0-0.5-0.1-0.4 0-0.6 0.3-0.3 0.4-0.3 0.5-0.3 0.4-0.8 0.3-1.2 0.1-1.2 0.1-1-1.5-0.3-1.4-0.3-1.5-0.3-1.5-0.3 0 1.1-0.1 1.1 0 1.1-0.1 1.2 0 0.9 0 0.7 0.2 0.6 0.6 0.6 0.7 0.5 0.3 0.4 0.1 0.6-0.2 0.8-0.1 0.7-0.1 0.6-0.2 0.7-0.1 0.6-0.1 0.3-0.2 0.2-0.2 0-0.4 0.1-1.4 0.3-1.5 0.1-1.4 0.1-1.4 0.5-1.1 0.5-1.1 0.4-1.1 0.5-1 0.6 0.1-0.5 0.2-0.4 0.1-0.4 0.1-0.4 0.4-1.6 0.5-1.6 0.4-1.6 0.5-1.6 0.4-1.2 0.4-1.2 0.3-1.3 0.2-1.3 0.1-3.3 0.1-3.4 0.1-3.4 0.1-3.4 0.1-0.7 0.2-0.5 0.4-0.2 0.6-0.3 0.3-0.4 0.1-0.8 0.1-0.8 0-0.6 0.1-1.2 0.1-1.2 0.1-1.2 0.1-1.2 0.1-0.8 0.2-0.5 0.3-0.3 0.6-0.4 0.9-0.6 0.8-0.6 0.9-0.6 0.8-0.6 0.3-0.5 0.2-0.6 0-0.6 0.1-0.6 0.4-0.9 0.6-0.4 0.6 0.2 0.7 0.7 0.5 0.2 0.4-0.5 0.3-0.8 0.1-0.6-0.4-0.8-0.7-0.5-0.7-0.5-0.3-0.8 0.2-0.4 0.3-0.4 0.2-0.4 0.2-0.5-0.1-0.7-0.3-0.6-0.5-0.5-0.5-0.5-0.2-0.8 0.9-0.2 0.9-0.4 0.1-1-0.2-0.8 0.1-0.8 0.1-0.7-0.3-0.6 0.3-0.5 1.1-0.6 1.2-0.5 0.7-0.4 0.2 0 0.2-0.1 0.3-0.1 0.2-0.1 0.9-0.6 0.6-0.7 0.5-0.8 0.6-1 0.2-0.4 0.2-0.4 0.2-0.4 0.4-0.3 0.4-0.1 0.6 0 0.4-0.2 0.2-0.4-0.1-0.5 0.2-0.4 0.4-0.3 0.4-0.1 0.5 0 0.6 0.1 0.6-0.1 0.5-0.3 0.2-0.4 0.1-0.5 0-0.6 0.1-0.5 0.8-0.8 1.2-0.6 1.3-0.4 1.1-0.3 2.5 0.6 2.6 0.5 2.5 0.5 2.6 0.6 1.3 0.2 1.3 0.2 1.2 0 1.3-0.2 1.3-0.4 1.3-0.4 1.3-0.2 1.3-0.2 0.8 0 0.3-0.2 0.1-0.4 0-0.9 0-0.5 0-0.5 0-0.6 0-0.5 0-2-0.1-2 0-2.1 0-2-0.3-1.2-0.7-1.1-1-1.1-0.8-1-0.6-0.9-0.6-0.9-0.5-0.9-0.5-1z\",\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\nimport { MEXICO_STATES, type MexicoStateId } from \"../data/mexicoStates\";\nimport { MEXICO_STATE_PATHS } from \"../data/mexicoStatePaths\";\n\nexport interface MexicoMapProps {\n\tselected: MexicoStateId[];\n\t/** Omit to render a read-only display (no interaction, no keyboard handlers). */\n\tonToggle?: (id: MexicoStateId) => void;\n\tclassName?: string;\n}\n\nexport function MexicoMap({ selected, onToggle, className }: MexicoMapProps) {\n\tconst isInteractive = typeof onToggle === \"function\";\n\tconst selectedSet = React.useMemo(() => new Set(selected), [selected]);\n\n\tconst handleKeyDown = React.useCallback(\n\t\t(event: React.KeyboardEvent<SVGPathElement>, id: MexicoStateId) => {\n\t\t\tif (!onToggle) return;\n\t\t\tif (event.key === \"Enter\" || event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonToggle(id);\n\t\t\t}\n\t\t},\n\t\t[onToggle],\n\t);\n\n\treturn (\n\t\t<svg\n\t\t\tviewBox=\"0 0 1000 630\"\n\t\t\tclassName={cn(\"h-auto w-full\", className)}\n\t\t\t{...(!isInteractive\n\t\t\t\t? { role: \"img\", \"aria-label\": \"Mapa de México\" }\n\t\t\t\t: {})}\n\t\t>\n\t\t\t{MEXICO_STATES.map(({ id, name }) => {\n\t\t\t\tconst isSelected = selectedSet.has(id);\n\n\t\t\t\treturn (\n\t\t\t\t\t<path\n\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\td={MEXICO_STATE_PATHS[id]}\n\t\t\t\t\t\taria-label={name}\n\t\t\t\t\t\t{...(isInteractive\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\trole: \"button\" as const,\n\t\t\t\t\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\t\t\t\t\"aria-pressed\": isSelected,\n\t\t\t\t\t\t\t\t\tonClick: () => onToggle?.(id),\n\t\t\t\t\t\t\t\t\tonKeyDown: (event: React.KeyboardEvent<SVGPathElement>) =>\n\t\t\t\t\t\t\t\t\t\thandleKeyDown(event, id),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {})}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"stroke-border stroke-[0.5] transition-colors\",\n\t\t\t\t\t\t\tisSelected ? \"fill-primary\" : \"fill-muted\",\n\t\t\t\t\t\t\tisInteractive\n\t\t\t\t\t\t\t\t? \"cursor-pointer outline-none hover:fill-accent focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-ring\"\n\t\t\t\t\t\t\t\t: \"cursor-default\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<title>{name}</title>\n\t\t\t\t\t</path>\n\t\t\t\t);\n\t\t\t})}\n\t\t</svg>\n\t);\n}\n","\"use client\";\n\nimport { BadgeCheck, Clock } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport type ProfessionalVerificationStatus =\n\t| \"unverified\"\n\t| \"pending_review\"\n\t| \"verified\";\n\nexport interface VerifiedProfessionalBadgeProps {\n\tstatus: ProfessionalVerificationStatus;\n\tsize?: \"sm\" | \"md\";\n\t/** Icon-only with title/aria-label when false (default). */\n\tshowLabel?: boolean;\n\tclassName?: string;\n}\n\nconst LABELS: Record<\n\tExclude<ProfessionalVerificationStatus, \"unverified\">,\n\tstring\n> = {\n\tverified: \"Médico verificado\",\n\tpending_review: \"Verificación en revisión\",\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\ticon: \"size-3.5\",\n\t\ttext: \"text-xs\",\n\t\tgap: \"gap-1\",\n\t\tpadding: \"px-1.5 py-0.5\",\n\t},\n\tmd: {\n\t\ticon: \"size-4\",\n\t\ttext: \"text-sm\",\n\t\tgap: \"gap-1.5\",\n\t\tpadding: \"px-2 py-0.5\",\n\t},\n};\n\nexport function VerifiedProfessionalBadge({\n\tstatus,\n\tsize = \"md\",\n\tshowLabel = false,\n\tclassName,\n}: VerifiedProfessionalBadgeProps) {\n\tif (status === \"unverified\") {\n\t\treturn null;\n\t}\n\n\tconst label = LABELS[status];\n\tconst sizes = sizeClasses[size];\n\tconst Icon = status === \"verified\" ? BadgeCheck : Clock;\n\tconst colorClass =\n\t\tstatus === \"verified\" ? \"text-primary\" : \"text-muted-foreground\";\n\n\tif (!showLabel) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName={cn(sizes.icon, colorClass, className)}\n\t\t\t\taria-label={label}\n\t\t\t>\n\t\t\t\t<title>{label}</title>\n\t\t\t</Icon>\n\t\t);\n\t}\n\n\treturn (\n\t\t<span\n\t\t\ttitle={label}\n\t\t\taria-label={label}\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex w-fit items-center rounded-full font-medium\",\n\t\t\t\tsizes.gap,\n\t\t\t\tsizes.text,\n\t\t\t\tsizes.padding,\n\t\t\t\tstatus === \"verified\"\n\t\t\t\t\t? \"bg-primary/10 text-primary\"\n\t\t\t\t\t: \"bg-muted text-muted-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Icon className={sizes.icon} aria-hidden=\"true\" />\n\t\t\t<span>{label}</span>\n\t\t</span>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../src/contexts/calendar.ts","../src/contexts/chat.ts","../src/contexts/index.ts","../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/utils.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/lru-cache.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/config-utils.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/tw-join.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/from-theme.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/validators.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/default-config.ts","../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/lib/utils.ts","../src/components/EmptyState.tsx","../src/components/ui/dropdown-menu.tsx","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../src/components/ThemeSwitcher.tsx","../src/components/OrgSwitcher.tsx","../src/components/LanguageSwitcher.tsx","../src/components/EnvironmentSwitcher.tsx","../src/components/EnvironmentBanner.tsx","../src/components/ui/slider.tsx","../src/components/ui/toggle.tsx","../src/components/AvatarEditor.tsx","../src/components/ui/dialog.tsx","../src/components/ui/drawer.tsx","../src/components/AvatarEditorDialog.tsx","../src/components/ui/popover.tsx","../src/components/NotificationsWidget.tsx","../src/components/ui/scroll-area.tsx","../src/components/calendar/UpcomingEvents.tsx","../src/components/ui/tooltip.tsx","../src/components/calendar/CalendarSubscribeButton.tsx","../src/components/calendar/CalendarWidget.tsx","../src/components/calendar/CalendarView.tsx","../src/components/calendar/EventDialog.tsx","../src/components/calendar/MiniCalendar.tsx","../src/components/calendar/EventRsvpBadge.tsx","../src/components/chat/ChatSidebarProvider.tsx","../src/hooks/useChatRoom.ts","../src/components/chat/ChatRoomView.tsx","../src/components/chat/ChatSidebar.tsx","../src/hooks/useDebouncedValue.ts","../src/components/CardInput.tsx","../src/components/USAddressInput.tsx","../src/data/mexicoStates.ts","../src/data/mexicoStatePaths.ts","../src/components/MexicoMap.tsx","../src/components/VerifiedProfessionalBadge.tsx"],"names":["createContext","useContext","concatArrays","array1","array2","combinedArray","Array","length","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","Map","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","startsWith","endsWith","getGroupIdForArbitraryProperty","classParts","split","startIndex","getGroupRecursive","getConflictingClassGroupIds","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","classPathsLength","currentClassPart","nextClassPartObject","get","result","undefined","classRest","join","slice","validatorsLength","validatorObj","indexOf","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","entries","Object","key","value","path","current","parts","part","next","set","func","createLruCache","maxCacheSize","cacheSize","cache","create","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","orderSensitiveModifiers","forEach","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","has","sort","createConfigUtils","sortModifiers","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","originalClassName","substring","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","test","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","exec","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","position","scaleBgRepeat","repeat","scaleBgSize","size","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","twMerge","jsx","jsxs","param","defaultLabels","sizeClasses","shapeClasses","AnimatePresence","motion","useState","useCallback","React","useEffect","r","X","DrawerPrimitive","Check","Fragment","Loader2","AlertTriangle","useMemo","Plus","CalendarDays","Clock","MapPin","useRef","open","MessageSquare","ChevronRight","inputClassName","React4"],"mappings":";;;;;;;;;;;;;;;;;;;AAsDO,IAAM,eAAA,GAAkB,cAA2C,IAAI;AAEvE,SAAS,kBAAA,GAAkD;AACjE,EAAA,OAAO,WAAW,eAAe,CAAA;AAClC;ACtBO,IAAM,kBAAA,GAAqBA,aAAAA;AAAA,EACjC;AACD;AAEO,SAAS,cAAA,GAA0C;AACzD,EAAA,MAAM,GAAA,GAAMC,WAAW,kBAAkB,CAAA;AACzC,EAAA,IAAI,CAAC,GAAA,EAAK;AACT,IAAA,MAAM,IAAI,MAAM,0DAA0D,CAAA;AAAA,EAC3E;AACA,EAAA,OAAO,GAAA;AACR;;;ACWO,IAAM,oBAAA,GACZD,cAAgD,IAAI;AAM9C,SAAS,uBAAA,GAA4D;AAC3E,EAAA,OAAOC,WAAW,oBAAoB,CAAA;AACvC;AAiCO,IAAM,eAAA,GAAkBD,cAA2C,IAAI;AAMvE,SAAS,kBAAA,GAAkD;AACjE,EAAA,OAAOC,WAAW,eAAe,CAAA;AAClC;AAWO,IAAM,wBAAA,GAA6D;AAAA,EACzE,YAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD;AAEO,SAAS,wBACf,KAAA,EACiC;AACjC,EAAA,OAAQ,wBAAA,CAA+C,SAAS,KAAK,CAAA;AACtE;AAaO,IAAM,kBAAA,GAAqBD,aAAAA;AAAA,EACjC;AACD;AAEO,SAAS,qBAAA,GAAwD;AACvE,EAAA,OAAOC,WAAW,kBAAkB,CAAA;AACrC;;;ACnJA,SAAS,EAAE,CAAA,EAAE;AAAC,EAAA,IAAI,CAAA,EAAE,GAAE,CAAA,GAAE,EAAA;AAAG,EAAA,IAAG,YAAU,OAAO,CAAA,IAAG,QAAA,IAAU,OAAO,GAAE,CAAA,IAAG,CAAA;AAAA,OAAA,IAAU,YAAU,OAAO,CAAA,MAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAC,IAAA,IAAI,IAAE,CAAA,CAAE,MAAA;AAAO,IAAA,KAAI,IAAE,CAAA,EAAE,CAAA,GAAE,CAAA,EAAE,CAAA,EAAA,IAAM,CAAC,CAAA,KAAI,CAAA,GAAE,CAAA,CAAE,EAAE,CAAC,CAAC,OAAK,CAAA,KAAI,CAAA,IAAG,MAAK,CAAA,IAAG,CAAA,CAAA;AAAA,EAAE,CAAA,MAAM,KAAI,CAAA,IAAK,CAAA,EAAE,CAAA,CAAE,CAAC,CAAA,KAAI,CAAA,KAAI,CAAA,IAAG,GAAA,CAAA,EAAK,CAAA,IAAG,CAAA,CAAA;AAAG,EAAA,OAAO,CAAA;AAAC;AAAQ,SAAS,IAAA,GAAM;AAAC,EAAA,KAAA,IAAQ,CAAA,EAAE,CAAA,EAAE,CAAA,GAAE,CAAA,EAAE,CAAA,GAAE,IAAG,CAAA,GAAE,SAAA,CAAU,MAAA,EAAO,CAAA,GAAE,CAAA,EAAE,CAAA,EAAA,GAAK,CAAA,GAAE,SAAA,CAAU,CAAC,CAAA,MAAK,CAAA,GAAE,CAAA,CAAE,CAAC,CAAA,CAAA,KAAK,CAAA,KAAI,CAAA,IAAG,GAAA,CAAA,EAAK,CAAA,IAAG,CAAA,CAAA;AAAG,EAAA,OAAO,CAAA;AAAC;;;ACGxW,IAAMC,YAAAA,GAAeA,CACxBC,MAAAA,EACAC,MAAAA,KACoB;AAEpB,EAAA,MAAMC,gBAA2B,IAAIC,KAAAA,CAAMH,MAAAA,CAAOI,MAAAA,GAASH,OAAOG,MAAM,CAAA;AACxE,EAAA,KAAA,IAASC,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIL,MAAAA,CAAOI,QAAQC,CAAAA,EAAAA,EAAK;AACpCH,IAAAA,aAAAA,CAAcG,CAAC,CAAA,GAAIL,MAAAA,CAAOK,CAAC,CAAA;AAC/B,EAAA;AACA,EAAA,KAAA,IAASA,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIJ,MAAAA,CAAOG,QAAQC,CAAAA,EAAAA,EAAK;AACpCH,IAAAA,aAAAA,CAAcF,MAAAA,CAAOI,MAAAA,GAASC,CAAC,CAAA,GAAIJ,OAAOI,CAAC,CAAA;AAC/C,EAAA;AACA,EAAA,OAAOH,aAAAA;AACX,CAAA;ACQA,IAAMI,0BAAAA,GAA6BA,CAC/BC,YAAAA,EACAC,SAAAA,MACwB;AACxBD,EAAAA,YAAAA;AACAC,EAAAA;AACH,CAAA,CAAA;AAGD,IAAMC,qBAAAA,GAAwBA,CAC1BC,QAAAA,mBAAyC,IAAIC,KAAG,EAChDC,UAAAA,GAA4C,MAC5CL,YAAAA,MACmB;AACnBG,EAAAA,QAAAA;AACAE,EAAAA,UAAAA;AACAL,EAAAA;AACH,CAAA,CAAA;AAED,IAAMM,oBAAAA,GAAuB,GAAA;AAE7B,IAAMC,kBAA+C,EAAA;AAErD,IAAMC,yBAAAA,GAA4B,aAAA;AAE3B,IAAMC,wBAAyBC,CAAAA,MAAAA,KAAqB;AACvD,EAAA,MAAMC,QAAAA,GAAWC,eAAeF,MAAM,CAAA;AACtC,EAAA,MAAM;AAAEG,IAAAA,sBAAAA;AAAwBC,IAAAA;GAA8B,GAAKJ,MAAAA;AAEnE,EAAA,MAAMK,kBAAmBC,CAAAA,SAAAA,KAAqB;AAC1C,IAAA,IAAIA,UAAUC,UAAAA,CAAW,GAAG,KAAKD,SAAAA,CAAUE,QAAAA,CAAS,GAAG,CAAA,EAAG;AACtD,MAAA,OAAOC,+BAA+BH,SAAS,CAAA;AACnD,IAAA;AAEA,IAAA,MAAMI,UAAAA,GAAaJ,SAAAA,CAAUK,KAAAA,CAAMf,oBAAoB,CAAA;AAEvD,IAAA,MAAMgB,UAAAA,GAAaF,WAAW,CAAC,CAAA,KAAM,MAAMA,UAAAA,CAAWvB,MAAAA,GAAS,IAAI,CAAA,GAAI,CAAA;AACvE,IAAA,OAAO0B,iBAAAA,CAAkBH,UAAAA,EAAYE,UAAAA,EAAYX,QAAQ,CAAA;AAC7D,EAAA,CAAA;AAEA,EAAA,MAAMa,2BAAAA,GAA8BA,CAChCxB,YAAAA,EACAyB,kBAAAA,KAC6B;AAC7B,IAAA,IAAIA,kBAAAA,EAAoB;AACpB,MAAA,MAAMC,iBAAAA,GAAoBZ,+BAA+Bd,YAAY,CAAA;AACrE,MAAA,MAAM2B,aAAAA,GAAgBd,uBAAuBb,YAAY,CAAA;AAEzD,MAAA,IAAI0B,iBAAAA,EAAmB;AACnB,QAAA,IAAIC,aAAAA,EAAe;AAEf,UAAA,OAAOnC,YAAAA,CAAamC,eAAeD,iBAAiB,CAAA;AACxD,QAAA;AAEA,QAAA,OAAOA,iBAAAA;AACX,MAAA;AAEA,MAAA,OAAOC,aAAAA,IAAiBpB,eAAAA;AAC5B,IAAA;AAEA,IAAA,OAAOM,sBAAAA,CAAuBb,YAAY,CAAA,IAAKO,eAAAA;AACnD,EAAA,CAAA;AAEA,EAAA,OAAO;AACHQ,IAAAA,eAAAA;AACAS,IAAAA;;AAER,CAAA;AAEA,IAAMD,iBAAAA,GAAoBA,CACtBH,UAAAA,EACAE,UAAAA,EACAM,eAAAA,KAC8B;AAC9B,EAAA,MAAMC,gBAAAA,GAAmBT,WAAWvB,MAAAA,GAASyB,UAAAA;AAC7C,EAAA,IAAIO,qBAAqB,CAAA,EAAG;AACxB,IAAA,OAAOD,eAAAA,CAAgB5B,YAAAA;AAC3B,EAAA;AAEA,EAAA,MAAM8B,gBAAAA,GAAmBV,WAAWE,UAAU,CAAA;AAC9C,EAAA,MAAMS,mBAAAA,GAAsBH,eAAAA,CAAgBzB,QAAAA,CAAS6B,GAAAA,CAAIF,gBAAgB,CAAA;AAEzE,EAAA,IAAIC,mBAAAA,EAAqB;AACrB,IAAA,MAAME,MAAAA,GAASV,iBAAAA,CAAkBH,UAAAA,EAAYE,UAAAA,GAAa,GAAGS,mBAAmB,CAAA;AAChF,IAAA,IAAIE,QAAQ,OAAOA,MAAAA;AACvB,EAAA;AAEA,EAAA,MAAM5B,aAAauB,eAAAA,CAAgBvB,UAAAA;AACnC,EAAA,IAAIA,eAAe,IAAA,EAAM;AACrB,IAAA,OAAO6B,MAAAA;AACX,EAAA;AAGA,EAAA,MAAMC,SAAAA,GACFb,UAAAA,KAAe,CAAA,GACTF,UAAAA,CAAWgB,IAAAA,CAAK9B,oBAAoB,CAAA,GACpCc,UAAAA,CAAWiB,KAAAA,CAAMf,UAAU,CAAA,CAAEc,IAAAA,CAAK9B,oBAAoB,CAAA;AAChE,EAAA,MAAMgC,mBAAmBjC,UAAAA,CAAWR,MAAAA;AAEpC,EAAA,KAAA,IAASC,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIwC,gBAAAA,EAAkBxC,CAAAA,EAAAA,EAAK;AACvC,IAAA,MAAMyC,YAAAA,GAAelC,WAAWP,CAAC,CAAA;AACjC,IAAA,IAAIyC,YAAAA,CAAatC,SAAAA,CAAUkC,SAAS,CAAA,EAAG;AACnC,MAAA,OAAOI,YAAAA,CAAavC,YAAAA;AACxB,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOkC,MAAAA;AACX,CAAA;AAOA,IAAMf,8BAAAA,GAAkCH,CAAAA,SAAAA,KACpCA,SAAAA,CAAUqB,KAAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAEG,OAAAA,CAAQ,GAAG,CAAA,KAAM,EAAA,GAClCN,MAAAA,GAAAA,CACC,MAAK;AACF,EAAA,MAAMO,OAAAA,GAAUzB,SAAAA,CAAUqB,KAAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACrC,EAAA,MAAMK,UAAAA,GAAaD,OAAAA,CAAQD,OAAAA,CAAQ,GAAG,CAAA;AACtC,EAAA,MAAMG,QAAAA,GAAWF,OAAAA,CAAQJ,KAAAA,CAAM,CAAA,EAAGK,UAAU,CAAA;AAC5C,EAAA,OAAOC,QAAAA,GAAWnC,4BAA4BmC,QAAAA,GAAWT,MAAAA;AAC7D,CAAA,GAAC;AAKJ,IAAMtB,iBAAkBF,CAAAA,MAAAA,KAAsD;AACjF,EAAA,MAAM;AAAEkC,IAAAA,KAAAA;AAAOC,IAAAA;GAAW,GAAKnC,MAAAA;AAC/B,EAAA,OAAOoC,kBAAAA,CAAmBD,aAAaD,KAAK,CAAA;AAChD,CAAA;AAGA,IAAME,kBAAAA,GAAqBA,CACvBD,WAAAA,EACAD,KAAAA,KACiB;AACjB,EAAA,MAAMjC,WAAWT,qBAAAA,EAAqB;AAEtC,EAAA,KAAA,MAAWF,gBAAgB6C,WAAAA,EAAa;AACpC,IAAA,MAAME,KAAAA,GAAQF,YAAY7C,YAAY,CAAA;AACtCgD,IAAAA,yBAAAA,CAA0BD,KAAAA,EAAOpC,QAAAA,EAAUX,YAAAA,EAAc4C,KAAK,CAAA;AAClE,EAAA;AAEA,EAAA,OAAOjC,QAAAA;AACX,CAAA;AAEA,IAAMqC,yBAAAA,GAA4BA,CAC9BC,UAAAA,EACArB,eAAAA,EACA5B,cACA4C,KAAAA,KACA;AACA,EAAA,MAAMM,MAAMD,UAAAA,CAAWpD,MAAAA;AACvB,EAAA,KAAA,IAASC,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIoD,GAAAA,EAAKpD,CAAAA,EAAAA,EAAK;AAC1B,IAAA,MAAMqD,eAAAA,GAAkBF,WAAWnD,CAAC,CAAA;AACpCsD,IAAAA,sBAAAA,CAAuBD,eAAAA,EAAiBvB,eAAAA,EAAiB5B,YAAAA,EAAc4C,KAAK,CAAA;AAChF,EAAA;AACJ,CAAA;AAGA,IAAMQ,sBAAAA,GAAyBA,CAC3BD,eAAAA,EACAvB,eAAAA,EACA5B,cACA4C,KAAAA,KACA;AACA,EAAA,IAAI,OAAOO,oBAAoB,QAAA,EAAU;AACrCE,IAAAA,uBAAAA,CAAwBF,eAAAA,EAAiBvB,iBAAiB5B,YAAY,CAAA;AACtE,IAAA;AACJ,EAAA;AAEA,EAAA,IAAI,OAAOmD,oBAAoB,UAAA,EAAY;AACvCG,IAAAA,yBAAAA,CAA0BH,eAAAA,EAAiBvB,eAAAA,EAAiB5B,YAAAA,EAAc4C,KAAK,CAAA;AAC/E,IAAA;AACJ,EAAA;AAEAW,EAAAA,uBAAAA,CACIJ,eAAAA,EACAvB,eAAAA,EACA5B,YAAAA,EACA4C,KAAK,CAAA;AAEb,CAAA;AAEA,IAAMS,uBAAAA,GAA0BA,CAC5BF,eAAAA,EACAvB,eAAAA,EACA5B,YAAAA,KACA;AACA,EAAA,MAAMwD,wBACFL,eAAAA,KAAoB,EAAA,GAAKvB,eAAAA,GAAkB6B,OAAAA,CAAQ7B,iBAAiBuB,eAAe,CAAA;AACvFK,EAAAA,qBAAAA,CAAsBxD,YAAAA,GAAeA,YAAAA;AACzC,CAAA;AAEA,IAAMsD,yBAAAA,GAA4BA,CAC9BH,eAAAA,EACAvB,eAAAA,EACA5B,cACA4C,KAAAA,KACA;AACA,EAAA,IAAIc,aAAAA,CAAcP,eAAe,CAAA,EAAG;AAChCH,IAAAA,yBAAAA,CAA0BG,eAAAA,CAAgBP,KAAK,CAAA,EAAGhB,eAAAA,EAAiB5B,cAAc4C,KAAK,CAAA;AACtF,IAAA;AACJ,EAAA;AAEA,EAAA,IAAIhB,eAAAA,CAAgBvB,eAAe,IAAA,EAAM;AACrCuB,IAAAA,eAAAA,CAAgBvB,aAAa,EAAA;AACjC,EAAA;AACAuB,EAAAA,eAAAA,CAAgBvB,UAAAA,CAAWsD,IAAAA,CACvB5D,0BAAAA,CAA2BC,YAAAA,EAAcmD,eAAiC,CAAC,CAAA;AAEnF,CAAA;AAEA,IAAMI,uBAAAA,GAA0BA,CAC5BJ,eAAAA,EACAvB,eAAAA,EACA5B,cACA4C,KAAAA,KACA;AACA,EAAA,MAAMgB,OAAAA,GAAUC,MAAAA,CAAOD,OAAAA,CAAQT,eAAe,CAAA;AAC9C,EAAA,MAAMD,MAAMU,OAAAA,CAAQ/D,MAAAA;AACpB,EAAA,KAAA,IAASC,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIoD,GAAAA,EAAKpD,CAAAA,EAAAA,EAAK;AAC1B,IAAA,MAAM,CAACgE,GAAAA,EAAKC,KAAK,CAAA,GAAIH,QAAQ9D,CAAC,CAAA;AAC9BkD,IAAAA,yBAAAA,CAA0Be,OAAON,OAAAA,CAAQ7B,eAAAA,EAAiBkC,GAAG,CAAA,EAAG9D,cAAc4C,KAAK,CAAA;AACvF,EAAA;AACJ,CAAA;AAEA,IAAMa,OAAAA,GAAUA,CAAC7B,eAAAA,EAAkCoC,IAAAA,KAAiC;AAChF,EAAA,IAAIC,OAAAA,GAAUrC,eAAAA;AACd,EAAA,MAAMsC,KAAAA,GAAQF,IAAAA,CAAK3C,KAAAA,CAAMf,oBAAoB,CAAA;AAC7C,EAAA,MAAM4C,MAAMgB,KAAAA,CAAMrE,MAAAA;AAElB,EAAA,KAAA,IAASC,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIoD,GAAAA,EAAKpD,CAAAA,EAAAA,EAAK;AAC1B,IAAA,MAAMqE,IAAAA,GAAOD,MAAMpE,CAAC,CAAA;AAEpB,IAAA,IAAIsE,IAAAA,GAAOH,OAAAA,CAAQ9D,QAAAA,CAAS6B,GAAAA,CAAImC,IAAI,CAAA;AACpC,IAAA,IAAI,CAACC,IAAAA,EAAM;AACPA,MAAAA,IAAAA,GAAOlE,qBAAAA,EAAqB;AAC5B+D,MAAAA,OAAAA,CAAQ9D,QAAAA,CAASkE,GAAAA,CAAIF,IAAAA,EAAMC,IAAI,CAAA;AACnC,IAAA;AACAH,IAAAA,OAAAA,GAAUG,IAAAA;AACd,EAAA;AAEA,EAAA,OAAOH,OAAAA;AACX,CAAA;AAGA,IAAMP,aAAAA,GAAiBY,CAAAA,IAAAA,KACnB,eAAA,IAAmBA,IAAAA,IAASA,KAAqBZ,aAAAA,KAAkB,IAAA;ACzQhE,IAAMa,iBACTC,CAAAA,YAAAA,KACsB;AACtB,EAAA,IAAIA,eAAe,CAAA,EAAG;AAClB,IAAA,OAAO;AACHxC,MAAAA,GAAAA,EAAKA,MAAME,MAAAA;AACXmC,MAAAA,GAAAA,EAAKA,MAAK;AAAE,MAAA;;AAEpB,EAAA;AAEA,EAAA,IAAII,SAAAA,GAAY,CAAA;AAChB,EAAA,IAAIC,KAAAA,mBAA4Bb,MAAAA,CAAOc,MAAAA,CAAO,IAAI,CAAA;AAClD,EAAA,IAAIC,aAAAA,mBAAoCf,MAAAA,CAAOc,MAAAA,CAAO,IAAI,CAAA;AAE1D,EAAA,MAAME,MAAAA,GAASA,CAACf,GAAAA,EAAUC,KAAAA,KAAgB;AACtCW,IAAAA,KAAAA,CAAMZ,GAAG,CAAA,GAAIC,KAAAA;AACbU,IAAAA,SAAAA,EAAAA;AAEA,IAAA,IAAIA,YAAYD,YAAAA,EAAc;AAC1BC,MAAAA,SAAAA,GAAY,CAAA;AACZG,MAAAA,aAAAA,GAAgBF,KAAAA;AAChBA,MAAAA,KAAAA,mBAAQb,MAAAA,CAAOc,OAAO,IAAI,CAAA;AAC9B,IAAA;AACJ,EAAA,CAAA;AAEA,EAAA,OAAO;AACH3C,IAAAA,GAAAA,CAAI8B,GAAAA,EAAG;AACH,MAAA,IAAIC,KAAAA,GAAQW,MAAMZ,GAAG,CAAA;AAErB,MAAA,IAAIC,UAAU7B,MAAAA,EAAW;AACrB,QAAA,OAAO6B,KAAAA;AACX,MAAA;AACA,MAAA,IAAA,CAAKA,KAAAA,GAAQa,aAAAA,CAAcd,GAAG,CAAA,MAAO5B,MAAAA,EAAW;AAC5C2C,QAAAA,MAAAA,CAAOf,KAAKC,KAAK,CAAA;AACjB,QAAA,OAAOA,KAAAA;AACX,MAAA;AACJ,IAAA,CAAA;AACAM,IAAAA,GAAAA,CAAIP,KAAKC,KAAAA,EAAK;AACV,MAAA,IAAID,OAAOY,KAAAA,EAAO;AACdA,QAAAA,KAAAA,CAAMZ,GAAG,CAAA,GAAIC,KAAAA;MACjB,CAAA,MAAO;AACHc,QAAAA,MAAAA,CAAOf,KAAKC,KAAK,CAAA;AACrB,MAAA;AACJ,IAAA;;AAER,CAAA;ACnDO,IAAMe,kBAAAA,GAAqB,GAAA;AAElC,IAAMC,kBAAAA,GAAqB,GAAA;AAC3B,IAAMC,kBAA4B,EAAA;AAGlC,IAAMC,qBAAqBA,CACvBC,SAAAA,EACAC,oBAAAA,EACAC,aAAAA,EACAC,8BACAC,UAAAA,MACmB;AACnBJ,EAAAA,SAAAA;AACAC,EAAAA,oBAAAA;AACAC,EAAAA,aAAAA;AACAC,EAAAA,4BAAAA;AACAC,EAAAA;AACH,CAAA,CAAA;AAEM,IAAMC,uBAAwB7E,CAAAA,MAAAA,KAAqB;AACtD,EAAA,MAAM;AAAE8E,IAAAA,MAAAA;AAAQC,IAAAA;GAA0B,GAAK/E,MAAAA;AAQ/C,EAAA,IAAIgF,iBAAkB1E,CAAAA,SAAAA,KAAsC;AAExD,IAAA,MAAMkE,YAAsB,EAAA;AAE5B,IAAA,IAAIS,YAAAA,GAAe,CAAA;AACnB,IAAA,IAAIC,UAAAA,GAAa,CAAA;AACjB,IAAA,IAAIC,aAAAA,GAAgB,CAAA;AACpB,IAAA,IAAIC,uBAAAA;AAEJ,IAAA,MAAM5C,MAAMlC,SAAAA,CAAUnB,MAAAA;AACtB,IAAA,KAAA,IAASkG,KAAAA,GAAQ,CAAA,EAAGA,KAAAA,GAAQ7C,GAAAA,EAAK6C,KAAAA,EAAAA,EAAS;AACtC,MAAA,MAAMC,gBAAAA,GAAmBhF,UAAU+E,KAAK,CAAA;AAExC,MAAA,IAAIJ,YAAAA,KAAiB,CAAA,IAAKC,UAAAA,KAAe,CAAA,EAAG;AACxC,QAAA,IAAII,qBAAqBjB,kBAAAA,EAAoB;AACzCG,UAAAA,SAAAA,CAAUvB,IAAAA,CAAK3C,SAAAA,CAAUqB,KAAAA,CAAMwD,aAAAA,EAAeE,KAAK,CAAC,CAAA;AACpDF,UAAAA,aAAAA,GAAgBE,KAAAA,GAAQ,CAAA;AACxB,UAAA;AACJ,QAAA;AAEA,QAAA,IAAIC,qBAAqB,GAAA,EAAK;AAC1BF,UAAAA,uBAAAA,GAA0BC,KAAAA;AAC1B,UAAA;AACJ,QAAA;AACJ,MAAA;AAEA,MAAA,IAAIC,qBAAqB,GAAA,EAAKL,YAAAA,EAAAA;AACrBK,WAAAA,IAAAA,gBAAAA,KAAqB,GAAA,EAAKL,YAAAA,EAAAA;AAC1BK,WAAAA,IAAAA,gBAAAA,KAAqB,GAAA,EAAKJ,UAAAA,EAAAA;AAC1BI,WAAAA,IAAAA,gBAAAA,KAAqB,GAAA,EAAKJ,UAAAA,EAAAA;AACvC,IAAA;AAEA,IAAA,MAAMK,qCACFf,SAAAA,CAAUrF,MAAAA,KAAW,IAAImB,SAAAA,GAAYA,SAAAA,CAAUqB,MAAMwD,aAAa,CAAA;AAGtE,IAAA,IAAIT,aAAAA,GAAgBa,kCAAAA;AACpB,IAAA,IAAId,oBAAAA,GAAuB,KAAA;AAE3B,IAAA,IAAIc,kCAAAA,CAAmC/E,QAAAA,CAAS4D,kBAAkB,CAAA,EAAG;AACjEM,MAAAA,aAAAA,GAAgBa,kCAAAA,CAAmC5D,KAAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAC9D8C,MAAAA,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,CAAA,MAAA;;;;;AAKIc,MAAAA,kCAAAA,CAAmChF,WAAW6D,kBAAkB;AAClE,MAAA;AACEM,MAAAA,aAAAA,GAAgBa,kCAAAA,CAAmC5D,MAAM,CAAC,CAAA;AAC1D8C,MAAAA,oBAAAA,GAAuB,IAAA;AAC3B,IAAA;AAEA,IAAA,MAAME,4BAAAA,GACFS,uBAAAA,IAA2BA,uBAAAA,GAA0BD,aAAAA,GAC/CC,0BAA0BD,aAAAA,GAC1B3D,MAAAA;AAEV,IAAA,OAAO+C,kBAAAA,CACHC,SAAAA,EACAC,oBAAAA,EACAC,aAAAA,EACAC,4BAA4B,CAAA;AAEpC,EAAA,CAAA;AAEA,EAAA,IAAIG,MAAAA,EAAQ;AACR,IAAA,MAAMU,aAAaV,MAAAA,GAAST,kBAAAA;AAC5B,IAAA,MAAMoB,sBAAAA,GAAyBT,cAAAA;AAC/BA,IAAAA,cAAAA,GAAkB1E,eACdA,SAAAA,CAAUC,UAAAA,CAAWiF,UAAU,CAAA,GACzBC,uBAAuBnF,SAAAA,CAAUqB,KAAAA,CAAM6D,UAAAA,CAAWrG,MAAM,CAAC,CAAA,GACzDoF,kBAAAA,CAAmBD,iBAAiB,KAAA,EAAOhE,SAAAA,EAAWkB,QAAW,IAAI,CAAA;AACnF,EAAA;AAEA,EAAA,IAAIuD,0BAAAA,EAA4B;AAC5B,IAAA,MAAMU,sBAAAA,GAAyBT,cAAAA;AAC/BA,IAAAA,cAAAA,GAAkB1E,eACdyE,0BAAAA,CAA2B;AAAEzE,MAAAA,SAAAA;MAAW0E,cAAAA,EAAgBS;AAAwB,KAAA,CAAA;AACxF,EAAA;AAEA,EAAA,OAAOT,cAAAA;AACX,CAAA;AC1GO,IAAMU,sBAAuB1F,CAAAA,MAAAA,KAAqB;AAErD,EAAA,MAAM2F,eAAAA,uBAAsBjG,GAAAA,EAAG;AAG/BM,EAAAA,MAAAA,CAAO4F,uBAAAA,CAAwBC,OAAAA,CAAQ,CAACC,GAAAA,EAAKT,KAAAA,KAAS;AAClDM,IAAAA,eAAAA,CAAgBhC,GAAAA,CAAImC,GAAAA,EAAK,GAAA,GAAUT,KAAK,CAAA;EAC5C,CAAC,CAAA;AAED,EAAA,OAAQb,CAAAA,SAAAA,KAA0C;AAC9C,IAAA,MAAMjD,SAAmB,EAAA;AACzB,IAAA,IAAIwE,iBAA2B,EAAA;AAG/B,IAAA,KAAA,IAAS3G,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIoF,SAAAA,CAAUrF,QAAQC,CAAAA,EAAAA,EAAK;AACvC,MAAA,MAAM4G,QAAAA,GAAWxB,UAAUpF,CAAC,CAAA;AAG5B,MAAA,MAAM6G,WAAAA,GAAcD,QAAAA,CAAS,CAAC,CAAA,KAAM,GAAA;AACpC,MAAA,MAAME,gBAAAA,GAAmBP,eAAAA,CAAgBQ,GAAAA,CAAIH,QAAQ,CAAA;AAErD,MAAA,IAAIC,eAAeC,gBAAAA,EAAkB;AAEjC,QAAA,IAAIH,cAAAA,CAAe5G,SAAS,CAAA,EAAG;AAC3B4G,UAAAA,cAAAA,CAAeK,IAAAA,EAAI;AACnB7E,UAAAA,MAAAA,CAAO0B,IAAAA,CAAK,GAAG8C,cAAc,CAAA;AAC7BA,UAAAA,cAAAA,GAAiB,EAAA;AACrB,QAAA;AACAxE,QAAAA,MAAAA,CAAO0B,KAAK+C,QAAQ,CAAA;MACxB,CAAA,MAAO;AAEHD,QAAAA,cAAAA,CAAe9C,KAAK+C,QAAQ,CAAA;AAChC,MAAA;AACJ,IAAA;AAGA,IAAA,IAAID,cAAAA,CAAe5G,SAAS,CAAA,EAAG;AAC3B4G,MAAAA,cAAAA,CAAeK,IAAAA,EAAI;AACnB7E,MAAAA,MAAAA,CAAO0B,IAAAA,CAAK,GAAG8C,cAAc,CAAA;AACjC,IAAA;AAEA,IAAA,OAAOxE,MAAAA;AACX,EAAA,CAAA;AACJ,CAAA;AC1CO,IAAM8E,oBAAqBrG,CAAAA,MAAAA,MAAuB;EACrDgE,KAAAA,EAAOH,cAAAA,CAA+B7D,OAAO+D,SAAS,CAAA;AACtDiB,EAAAA,cAAAA,EAAgBH,qBAAqB7E,MAAM,CAAA;AAC3CsG,EAAAA,aAAAA,EAAeZ,oBAAoB1F,MAAM,CAAA;AACzC,EAAA,GAAGD,sBAAsBC,MAAM;AAClC,CAAA,CAAA;ACVD,IAAMuG,mBAAAA,GAAsB,KAAA;AAErB,IAAMC,cAAAA,GAAiBA,CAACC,SAAAA,EAAmBC,WAAAA,KAA4B;AAC1E,EAAA,MAAM;AAAE1B,IAAAA,cAAAA;AAAgB3E,IAAAA,eAAAA;AAAiBS,IAAAA,2BAAAA;AAA6BwF,IAAAA;GAAa,GAC/EI,WAAAA;AASJ,EAAA,MAAMC,wBAAkC,EAAA;AACxC,EAAA,MAAMC,UAAAA,GAAaH,SAAAA,CAAUI,IAAAA,EAAI,CAAGlG,MAAM4F,mBAAmB,CAAA;AAE7D,EAAA,IAAIhF,MAAAA,GAAS,EAAA;AAEb,EAAA,KAAA,IAAS8D,QAAQuB,UAAAA,CAAWzH,MAAAA,GAAS,GAAGkG,KAAAA,IAAS,CAAA,EAAGA,SAAS,CAAA,EAAG;AAC5D,IAAA,MAAMyB,iBAAAA,GAAoBF,WAAWvB,KAAK,CAAA;AAE1C,IAAA,MAAM;AACFT,MAAAA,UAAAA;AACAJ,MAAAA,SAAAA;AACAC,MAAAA,oBAAAA;AACAC,MAAAA,aAAAA;AACAC,MAAAA;AAA4B,KAAA,GAC5BK,eAAe8B,iBAAiB,CAAA;AAEpC,IAAA,IAAIlC,UAAAA,EAAY;AACZrD,MAAAA,MAAAA,GAASuF,iBAAAA,IAAqBvF,MAAAA,CAAOpC,MAAAA,GAAS,CAAA,GAAI,MAAMoC,MAAAA,GAASA,MAAAA,CAAAA;AACjE,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIR,kBAAAA,GAAqB,CAAC,CAAC4D,4BAAAA;AAC3B,IAAA,IAAIrF,YAAAA,GAAee,gBACfU,kBAAAA,GACM2D,aAAAA,CAAcqC,UAAU,CAAA,EAAGpC,4BAA4B,IACvDD,aAAa,CAAA;AAGvB,IAAA,IAAI,CAACpF,YAAAA,EAAc;AACf,MAAA,IAAI,CAACyB,kBAAAA,EAAoB;AAErBQ,QAAAA,MAAAA,GAASuF,iBAAAA,IAAqBvF,MAAAA,CAAOpC,MAAAA,GAAS,CAAA,GAAI,MAAMoC,MAAAA,GAASA,MAAAA,CAAAA;AACjE,QAAA;AACJ,MAAA;AAEAjC,MAAAA,YAAAA,GAAee,gBAAgBqE,aAAa,CAAA;AAE5C,MAAA,IAAI,CAACpF,YAAAA,EAAc;AAEfiC,QAAAA,MAAAA,GAASuF,iBAAAA,IAAqBvF,MAAAA,CAAOpC,MAAAA,GAAS,CAAA,GAAI,MAAMoC,MAAAA,GAASA,MAAAA,CAAAA;AACjE,QAAA;AACJ,MAAA;AAEAR,MAAAA,kBAAAA,GAAqB,KAAA;AACzB,IAAA;AAGA,IAAA,MAAMiG,eAAAA,GACFxC,SAAAA,CAAUrF,MAAAA,KAAW,CAAA,GACf,KACAqF,SAAAA,CAAUrF,MAAAA,KAAW,CAAA,GACnBqF,SAAAA,CAAU,CAAC,CAAA,GACX8B,aAAAA,CAAc9B,SAAS,CAAA,CAAE9C,KAAK,GAAG,CAAA;AAE7C,IAAA,MAAMuF,UAAAA,GAAaxC,oBAAAA,GACbuC,eAAAA,GAAkB5C,kBAAAA,GAClB4C,eAAAA;AAEN,IAAA,MAAME,UAAUD,UAAAA,GAAa3H,YAAAA;AAE7B,IAAA,IAAIqH,qBAAAA,CAAsB7E,OAAAA,CAAQoF,OAAO,CAAA,GAAI,EAAA,EAAI;AAE7C,MAAA;AACJ,IAAA;AAEAP,IAAAA,qBAAAA,CAAsB1D,KAAKiE,OAAO,CAAA;AAElC,IAAA,MAAMC,cAAAA,GAAiBrG,2BAAAA,CAA4BxB,YAAAA,EAAcyB,kBAAkB,CAAA;AACnF,IAAA,KAAA,IAAS3B,IAAI,CAAA,EAAGA,CAAAA,GAAI+H,cAAAA,CAAehI,MAAAA,EAAQ,EAAEC,CAAAA,EAAG;AAC5C,MAAA,MAAMiD,KAAAA,GAAQ8E,eAAe/H,CAAC,CAAA;AAC9BuH,MAAAA,qBAAAA,CAAsB1D,IAAAA,CAAKgE,aAAa5E,KAAK,CAAA;AACjD,IAAA;AAGAd,IAAAA,MAAAA,GAASuF,iBAAAA,IAAqBvF,MAAAA,CAAOpC,MAAAA,GAAS,CAAA,GAAI,MAAMoC,MAAAA,GAASA,MAAAA,CAAAA;AACrE,EAAA;AAEA,EAAA,OAAOA,MAAAA;AACX,CAAA;ACjFa6F,IAAAA,MAAAA,GAASA,IAAIC,UAAAA,KAAwC;AAC9D,EAAA,IAAIhC,KAAAA,GAAQ,CAAA;AACZ,EAAA,IAAIiC,QAAAA;AACJ,EAAA,IAAIC,aAAAA;AACJ,EAAA,IAAIC,MAAAA,GAAS,EAAA;AAEb,EAAA,OAAOnC,KAAAA,GAAQgC,WAAWlI,MAAAA,EAAQ;AAC9B,IAAA,IAAKmI,QAAAA,GAAWD,UAAAA,CAAWhC,KAAAA,EAAO,CAAA,EAAI;AAClC,MAAA,IAAKkC,aAAAA,GAAgBE,OAAAA,CAAQH,QAAQ,CAAA,EAAI;AACrCE,QAAAA,MAAAA,KAAWA,MAAAA,IAAU,GAAA,CAAA;AACrBA,QAAAA,MAAAA,IAAUD,aAAAA;AACd,MAAA;AACJ,IAAA;AACJ,EAAA;AACA,EAAA,OAAOC,MAAAA;AACX,CAAA;AAEA,IAAMC,UAAWC,CAAAA,GAAAA,KAAwC;AAErD,EAAA,IAAI,OAAOA,QAAQ,QAAA,EAAU;AACzB,IAAA,OAAOA,GAAAA;AACX,EAAA;AAEA,EAAA,IAAIH,aAAAA;AACJ,EAAA,IAAIC,MAAAA,GAAS,EAAA;AAEb,EAAA,KAAA,IAASG,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAID,GAAAA,CAAIvI,QAAQwI,CAAAA,EAAAA,EAAK;AACjC,IAAA,IAAID,GAAAA,CAAIC,CAAC,CAAA,EAAG;AACR,MAAA,IAAKJ,aAAAA,GAAgBE,OAAAA,CAAQC,GAAAA,CAAIC,CAAC,CAA4B,CAAA,EAAI;AAC9DH,QAAAA,MAAAA,KAAWA,MAAAA,IAAU,GAAA,CAAA;AACrBA,QAAAA,MAAAA,IAAUD,aAAAA;AACd,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOC,MAAAA;AACX,CAAA;ACvCO,IAAMI,mBAAAA,GAAsBA,CAC/BC,iBAAAA,EAAAA,GACGC,gBAAAA,KACY;AACf,EAAA,IAAIpB,WAAAA;AACJ,EAAA,IAAIqB,QAAAA;AACJ,EAAA,IAAIC,QAAAA;AACJ,EAAA,IAAIC,cAAAA;AAEJ,EAAA,MAAMC,oBAAqBzB,CAAAA,SAAAA,KAAqB;AAC5C,IAAA,MAAMzG,MAAAA,GAAS8H,gBAAAA,CAAiBK,MAAAA,CAC5B,CAACC,cAAAA,EAAgBC,wBAAwBA,mBAAAA,CAAoBD,cAAc,CAAA,EAC3EP,iBAAAA,EAAgC,CAAA;AAGpCnB,IAAAA,WAAAA,GAAcL,kBAAkBrG,MAAM,CAAA;AACtC+H,IAAAA,QAAAA,GAAWrB,YAAY1C,KAAAA,CAAM1C,GAAAA;AAC7B0G,IAAAA,QAAAA,GAAWtB,YAAY1C,KAAAA,CAAML,GAAAA;AAC7BsE,IAAAA,cAAAA,GAAiBK,aAAAA;AAEjB,IAAA,OAAOA,cAAc7B,SAAS,CAAA;AAClC,EAAA,CAAA;AAEA,EAAA,MAAM6B,gBAAiB7B,CAAAA,SAAAA,KAAqB;AACxC,IAAA,MAAM8B,YAAAA,GAAeR,SAAStB,SAAS,CAAA;AAEvC,IAAA,IAAI8B,YAAAA,EAAc;AACd,MAAA,OAAOA,YAAAA;AACX,IAAA;AAEA,IAAA,MAAMhH,MAAAA,GAASiF,cAAAA,CAAeC,SAAAA,EAAWC,WAAW,CAAA;AACpDsB,IAAAA,QAAAA,CAASvB,WAAWlF,MAAM,CAAA;AAE1B,IAAA,OAAOA,MAAAA;AACX,EAAA,CAAA;AAEA0G,EAAAA,cAAAA,GAAiBC,iBAAAA;AAEjB,EAAA,OAAO,IAAIM,IAAAA,KAA2BP,cAAAA,CAAeb,MAAAA,CAAO,GAAGoB,IAAI,CAAC,CAAA;AACxE,CAAA;AC/CA,IAAMC,mBAA4E,EAAA;AAE3E,IAAMC,YAITtF,CAAAA,GAAAA,KACa;AACb,EAAA,MAAMuF,WAAAA,GAAezG,CAAAA,KAAAA,KACjBA,KAAAA,CAAMkB,GAAG,CAAA,IAAKqF,gBAAAA;AAElBE,EAAAA,WAAAA,CAAY3F,aAAAA,GAAgB,IAAA;AAE5B,EAAA,OAAO2F,WAAAA;AACX,CAAA;AChBA,IAAMC,mBAAAA,GAAsB,6BAAA;AAC5B,IAAMC,sBAAAA,GAAyB,6BAAA;AAC/B,IAAMC,aAAAA,GAAgB,YAAA;AACtB,IAAMC,eAAAA,GAAkB,kCAAA;AACxB,IAAMC,eAAAA,GACF,2HAAA;AACJ,IAAMC,kBAAAA,GAAqB,oDAAA;AAE3B,IAAMC,WAAAA,GAAc,iEAAA;AACpB,IAAMC,UAAAA,GACF,8FAAA;AAEG,IAAMC,UAAAA,GAAc/F,CAAAA,KAAAA,KAAkByF,aAAAA,CAAcO,IAAAA,CAAKhG,KAAK,CAAA;AAE9D,IAAMiG,QAAAA,GAAYjG,CAAAA,KAAAA,KAAkB,CAAC,CAACA,KAAAA,IAAS,CAACkG,MAAAA,CAAOC,KAAAA,CAAMD,MAAAA,CAAOlG,KAAK,CAAC,CAAA;AAE1E,IAAMoG,SAAAA,GAAapG,WAAkB,CAAC,CAACA,SAASkG,MAAAA,CAAOE,SAAAA,CAAUF,MAAAA,CAAOlG,KAAK,CAAC,CAAA;AAE9E,IAAMqG,SAAAA,GAAarG,CAAAA,KAAAA,KAAkBA,KAAAA,CAAM7C,QAAAA,CAAS,GAAG,CAAA,IAAK8I,QAAAA,CAASjG,KAAAA,CAAM1B,KAAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAEvF,IAAMgI,YAAAA,GAAgBtG,CAAAA,KAAAA,KAAkB0F,eAAAA,CAAgBM,IAAAA,CAAKhG,KAAK,CAAA;AAElE,IAAMuG,QAAQA,MAAM,IAAA;AAE3B,IAAMC,YAAAA,GAAgBxG,CAAAA,KAAAA;;;;AAIlB2F,EAAAA,eAAAA,CAAgBK,KAAKhG,KAAK,CAAA,IAAK,CAAC4F,kBAAAA,CAAmBI,KAAKhG,KAAK;;AAEjE,IAAMyG,UAAUA,MAAM,KAAA;AAEtB,IAAMC,QAAAA,GAAY1G,CAAAA,KAAAA,KAAkB6F,WAAAA,CAAYG,IAAAA,CAAKhG,KAAK,CAAA;AAE1D,IAAM2G,OAAAA,GAAW3G,CAAAA,KAAAA,KAAkB8F,UAAAA,CAAWE,IAAAA,CAAKhG,KAAK,CAAA;AAEjD,IAAM4G,iBAAAA,GAAqB5G,WAC9B,CAAC6G,gBAAAA,CAAiB7G,KAAK,CAAA,IAAK,CAAC8G,oBAAoB9G,KAAK,CAAA;AAEnD,IAAM+G,eAAAA,GAAmB/G,CAAAA,KAAAA,KAAkBgH,mBAAAA,CAAoBhH,KAAAA,EAAOiH,aAAaR,OAAO,CAAA;AAE1F,IAAMI,gBAAAA,GAAoB7G,CAAAA,KAAAA,KAAkBuF,mBAAAA,CAAoBS,IAAAA,CAAKhG,KAAK,CAAA;AAE1E,IAAMkH,iBAAAA,GAAqBlH,CAAAA,KAAAA,KAC9BgH,mBAAAA,CAAoBhH,KAAAA,EAAOmH,eAAeX,YAAY,CAAA;AAEnD,IAAMY,iBAAAA,GAAqBpH,CAAAA,KAAAA,KAC9BgH,mBAAAA,CAAoBhH,KAAAA,EAAOqH,eAAepB,QAAQ,CAAA;AAE/C,IAAMqB,mBAAAA,GAAuBtH,CAAAA,KAAAA,KAChCgH,mBAAAA,CAAoBhH,KAAAA,EAAOuH,iBAAiBd,OAAO,CAAA;AAEhD,IAAMe,gBAAAA,GAAoBxH,CAAAA,KAAAA,KAAkBgH,mBAAAA,CAAoBhH,KAAAA,EAAOyH,cAAcd,OAAO,CAAA;AAE5F,IAAMe,iBAAAA,GAAqB1H,CAAAA,KAAAA,KAC9BgH,mBAAAA,CAAoBhH,KAAAA,EAAO2H,eAAejB,QAAQ,CAAA;AAE/C,IAAMI,mBAAAA,GAAuB9G,CAAAA,KAAAA,KAAkBwF,sBAAAA,CAAuBQ,IAAAA,CAAKhG,KAAK,CAAA;AAEhF,IAAM4H,yBAAAA,GAA6B5H,CAAAA,KAAAA,KACtC6H,sBAAAA,CAAuB7H,KAAAA,EAAOmH,aAAa,CAAA;AAExC,IAAMW,6BAAAA,GAAiC9H,CAAAA,KAAAA,KAC1C6H,sBAAAA,CAAuB7H,KAAAA,EAAO+H,iBAAiB,CAAA;AAE5C,IAAMC,2BAAAA,GAA+BhI,CAAAA,KAAAA,KACxC6H,sBAAAA,CAAuB7H,KAAAA,EAAOuH,eAAe,CAAA;AAE1C,IAAMU,uBAAAA,GAA2BjI,CAAAA,KAAAA,KAAkB6H,sBAAAA,CAAuB7H,KAAAA,EAAOiH,WAAW,CAAA;AAE5F,IAAMiB,wBAAAA,GAA4BlI,CAAAA,KAAAA,KACrC6H,sBAAAA,CAAuB7H,KAAAA,EAAOyH,YAAY,CAAA;AAEvC,IAAMU,yBAAAA,GAA6BnI,CAAAA,KAAAA,KACtC6H,sBAAAA,CAAuB7H,KAAAA,EAAO2H,eAAe,IAAI,CAAA;AAIrD,IAAMX,mBAAAA,GAAsBA,CACxBhH,KAAAA,EACAoI,SAAAA,EACAC,SAAAA,KACA;AACA,EAAA,MAAMnK,MAAAA,GAASqH,mBAAAA,CAAoB+C,IAAAA,CAAKtI,KAAK,CAAA;AAE7C,EAAA,IAAI9B,MAAAA,EAAQ;AACR,IAAA,IAAIA,MAAAA,CAAO,CAAC,CAAA,EAAG;AACX,MAAA,OAAOkK,SAAAA,CAAUlK,MAAAA,CAAO,CAAC,CAAC,CAAA;AAC9B,IAAA;AAEA,IAAA,OAAOmK,SAAAA,CAAUnK,MAAAA,CAAO,CAAC,CAAE,CAAA;AAC/B,EAAA;AAEA,EAAA,OAAO,KAAA;AACX,CAAA;AAEA,IAAM2J,sBAAAA,GAAyBA,CAC3B7H,KAAAA,EACAoI,SAAAA,EACAG,qBAAqB,KAAA,KACrB;AACA,EAAA,MAAMrK,MAAAA,GAASsH,sBAAAA,CAAuB8C,IAAAA,CAAKtI,KAAK,CAAA;AAEhD,EAAA,IAAI9B,MAAAA,EAAQ;AACR,IAAA,IAAIA,MAAAA,CAAO,CAAC,CAAA,EAAG;AACX,MAAA,OAAOkK,SAAAA,CAAUlK,MAAAA,CAAO,CAAC,CAAC,CAAA;AAC9B,IAAA;AACA,IAAA,OAAOqK,kBAAAA;AACX,EAAA;AAEA,EAAA,OAAO,KAAA;AACX,CAAA;AAIA,IAAMhB,eAAAA,GAAmBiB,CAAAA,KAAAA,KAAkBA,KAAAA,KAAU,UAAA,IAAcA,KAAAA,KAAU,YAAA;AAE7E,IAAMf,YAAAA,GAAgBe,CAAAA,KAAAA,KAAkBA,KAAAA,KAAU,OAAA,IAAWA,KAAAA,KAAU,KAAA;AAEvE,IAAMvB,cAAeuB,CAAAA,KAAAA,KAAkBA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,UAAUA,KAAAA,KAAU,SAAA;AAE3F,IAAMrB,aAAAA,GAAiBqB,WAAkBA,KAAAA,KAAU,QAAA;AAEnD,IAAMnB,aAAAA,GAAiBmB,WAAkBA,KAAAA,KAAU,QAAA;AAEnD,IAAMT,iBAAAA,GAAqBS,WAAkBA,KAAAA,KAAU,aAAA;AAEvD,IAAMb,aAAAA,GAAiBa,WAAkBA,KAAAA,KAAU,QAAA;ACrG5C,IAAMC,mBAAmBA,MAAK;AAOjC,EAAA,MAAMC,UAAAA,GAAarD,UAAU,OAAO,CAAA;AACpC,EAAA,MAAMsD,SAAAA,GAAYtD,UAAU,MAAM,CAAA;AAClC,EAAA,MAAMuD,SAAAA,GAAYvD,UAAU,MAAM,CAAA;AAClC,EAAA,MAAMwD,eAAAA,GAAkBxD,UAAU,aAAa,CAAA;AAC/C,EAAA,MAAMyD,aAAAA,GAAgBzD,UAAU,UAAU,CAAA;AAC1C,EAAA,MAAM0D,YAAAA,GAAe1D,UAAU,SAAS,CAAA;AACxC,EAAA,MAAM2D,eAAAA,GAAkB3D,UAAU,YAAY,CAAA;AAC9C,EAAA,MAAM4D,cAAAA,GAAiB5D,UAAU,WAAW,CAAA;AAC5C,EAAA,MAAM6D,YAAAA,GAAe7D,UAAU,SAAS,CAAA;AACxC,EAAA,MAAM8D,WAAAA,GAAc9D,UAAU,QAAQ,CAAA;AACtC,EAAA,MAAM+D,WAAAA,GAAc/D,UAAU,QAAQ,CAAA;AACtC,EAAA,MAAMgE,gBAAAA,GAAmBhE,UAAU,cAAc,CAAA;AACjD,EAAA,MAAMiE,eAAAA,GAAkBjE,UAAU,aAAa,CAAA;AAC/C,EAAA,MAAMkE,eAAAA,GAAkBlE,UAAU,aAAa,CAAA;AAC/C,EAAA,MAAMmE,SAAAA,GAAYnE,UAAU,MAAM,CAAA;AAClC,EAAA,MAAMoE,gBAAAA,GAAmBpE,UAAU,aAAa,CAAA;AAChD,EAAA,MAAMqE,WAAAA,GAAcrE,UAAU,QAAQ,CAAA;AACtC,EAAA,MAAMsE,SAAAA,GAAYtE,UAAU,MAAM,CAAA;AAClC,EAAA,MAAMuE,YAAAA,GAAevE,UAAU,SAAS,CAAA;AAUxC,EAAA,MAAMwE,UAAAA,GAAaA,MACf,CAAC,MAAA,EAAQ,OAAA,EAAS,OAAO,YAAA,EAAc,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,QAAQ,CAAA;AAC5E,EAAA,MAAMC,gBAAgBA,MAClB;AACI,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;;AAEA,IAAA,UAAA;AACA,IAAA,WAAA;;AAEA,IAAA,WAAA;AACA,IAAA,cAAA;;AAEA,IAAA,cAAA;AACA,IAAA,aAAA;;AAEA,IAAA;AAAa,GAAA;AAErB,EAAA,MAAMC,6BAA6BA,MAC/B,CAAC,GAAGD,aAAAA,EAAa,EAAIhD,qBAAqBD,gBAAgB,CAAA;AAC9D,EAAA,MAAMmD,gBAAgBA,MAAM,CAAC,QAAQ,QAAA,EAAU,MAAA,EAAQ,WAAW,QAAQ,CAAA;AAC1E,EAAA,MAAMC,eAAAA,GAAkBA,MAAM,CAAC,MAAA,EAAQ,WAAW,MAAM,CAAA;AACxD,EAAA,MAAMC,uBAAAA,GAA0BA,MAC5B,CAACpD,mBAAAA,EAAqBD,kBAAkBqC,YAAY,CAAA;AACxD,EAAA,MAAMiB,UAAAA,GAAaA,MAAM,CAACpE,UAAAA,EAAY,QAAQ,MAAA,EAAQ,GAAGmE,yBAAyB,CAAA;AAClF,EAAA,MAAME,4BAA4BA,MAC9B,CAAChE,WAAW,MAAA,EAAQ,SAAA,EAAWU,qBAAqBD,gBAAgB,CAAA;AACxE,EAAA,MAAMwD,0BAAAA,GAA6BA,MAC/B,CACI,MAAA,EACA;AAAEC,IAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQlE,SAAAA,EAAWU,mBAAAA,EAAqBD,gBAAgB;GAAC,EAClET,SAAAA,EACAU,qBACAD,gBAAgB,CAAA;AAExB,EAAA,MAAM0D,4BAA4BA,MAC9B,CAACnE,SAAAA,EAAW,MAAA,EAAQU,qBAAqBD,gBAAgB,CAAA;AAC7D,EAAA,MAAM2D,qBAAAA,GAAwBA,MAC1B,CAAC,MAAA,EAAQ,OAAO,KAAA,EAAO,IAAA,EAAM1D,qBAAqBD,gBAAgB,CAAA;AACtE,EAAA,MAAM4D,qBAAAA,GAAwBA,MAC1B,CACI,OAAA,EACA,KAAA,EACA,QAAA,EACA,SAAA,EACA,QAAA,EACA,QAAA,EACA,SAAA,EACA,UAAA,EACA,aAAA,EACA,UAAU,CAAA;AAElB,EAAA,MAAMC,uBAAAA,GAA0BA,MAC5B,CAAC,OAAA,EAAS,OAAO,QAAA,EAAU,SAAA,EAAW,eAAe,UAAU,CAAA;AACnE,EAAA,MAAMC,cAAcA,MAAM,CAAC,MAAA,EAAQ,GAAGT,yBAAyB,CAAA;AAC/D,EAAA,MAAMU,cAAcA,MAChB,CACI7E,UAAAA,EACA,MAAA,EACA,QACA,KAAA,EACA,KAAA,EACA,KAAA,EACA,KAAA,EACA,OACA,KAAA,EACA,KAAA,EACA,OACA,KAAA,EACA,GAAGmE,yBAAyB,CAAA;AAEpC,EAAA,MAAMW,UAAAA,GAAaA,MAAM,CAACnC,UAAAA,EAAY5B,qBAAqBD,gBAAgB,CAAA;AAC3E,EAAA,MAAMiE,kBAAkBA,MACpB,CACI,GAAGhB,aAAAA,EAAa,EAChB9B,6BACAV,mBAAAA,EACA;IAAEyD,QAAAA,EAAU,CAACjE,qBAAqBD,gBAAgB;GAAG,CAAA;AAE7D,EAAA,MAAMmE,aAAAA,GAAgBA,MAAM,CAAC,WAAA,EAAa;AAAEC,IAAAA,MAAAA,EAAQ,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,SAAS,OAAO;GAAG,CAAA;AACtF,EAAA,MAAMC,cAAcA,MAChB,CACI,QACA,OAAA,EACA,SAAA,EACAjD,yBACAlB,eAAAA,EACA;IAAEoE,IAAAA,EAAM,CAACrE,qBAAqBD,gBAAgB;GAAG,CAAA;AAEzD,EAAA,MAAMuE,yBAAAA,GAA4BA,MAC9B,CAAC/E,SAAAA,EAAWuB,2BAA2BV,iBAAiB,CAAA;AAC5D,EAAA,MAAMmE,cAAcA,MAChB;;AAEI,IAAA,EAAA;AACA,IAAA,MAAA;AACA,IAAA,MAAA;AACAlC,IAAAA,WAAAA;AACArC,IAAAA,mBAAAA;AACAD,IAAAA;AAAgB,GAAA;AAExB,EAAA,MAAMyE,mBAAmBA,MACrB,CAAC,EAAA,EAAIrF,QAAAA,EAAU2B,2BAA2BV,iBAAiB,CAAA;AAC/D,EAAA,MAAMqE,iBAAiBA,MAAM,CAAC,OAAA,EAAS,QAAA,EAAU,UAAU,QAAQ,CAAA;AACnE,EAAA,MAAMC,iBAAiBA,MACnB,CACI,UACA,UAAA,EACA,QAAA,EACA,WACA,QAAA,EACA,SAAA,EACA,aAAA,EACA,YAAA,EACA,cACA,YAAA,EACA,YAAA,EACA,aACA,KAAA,EACA,YAAA,EACA,SACA,YAAY,CAAA;AAEpB,EAAA,MAAMC,yBAAyBA,MAC3B,CAACxF,QAAAA,EAAUI,SAAAA,EAAW2B,6BAA6BV,mBAAmB,CAAA;AAC1E,EAAA,MAAMoE,YAAYA,MACd;;AAEI,IAAA,EAAA;AACA,IAAA,MAAA;AACAlC,IAAAA,SAAAA;AACA1C,IAAAA,mBAAAA;AACAD,IAAAA;AAAgB,GAAA;AAExB,EAAA,MAAM8E,cAAcA,MAAM,CAAC,MAAA,EAAQ1F,QAAAA,EAAUa,qBAAqBD,gBAAgB,CAAA;AAClF,EAAA,MAAM+E,aAAaA,MAAM,CAAC,MAAA,EAAQ3F,QAAAA,EAAUa,qBAAqBD,gBAAgB,CAAA;AACjF,EAAA,MAAMgF,SAAAA,GAAYA,MAAM,CAAC5F,QAAAA,EAAUa,qBAAqBD,gBAAgB,CAAA;AACxE,EAAA,MAAMiF,iBAAiBA,MAAM,CAAC/F,YAAY,MAAA,EAAQ,GAAGmE,yBAAyB,CAAA;AAE9E,EAAA,OAAO;IACHxJ,SAAAA,EAAW,GAAA;IACX7B,KAAAA,EAAO;AACHkN,MAAAA,OAAAA,EAAS,CAAC,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,QAAQ,CAAA;AAC3CC,MAAAA,MAAAA,EAAQ,CAAC,OAAO,CAAA;AAChBC,MAAAA,IAAAA,EAAM,CAAC3F,YAAY,CAAA;AACnB4F,MAAAA,UAAAA,EAAY,CAAC5F,YAAY,CAAA;AACzB6F,MAAAA,KAAAA,EAAO,CAAC5F,KAAK,CAAA;AACb6F,MAAAA,SAAAA,EAAW,CAAC9F,YAAY,CAAA;AACxB,MAAA,aAAA,EAAe,CAACA,YAAY,CAAA;MAC5B+F,IAAAA,EAAM,CAAC,IAAA,EAAM,KAAA,EAAO,QAAQ,CAAA;AAC5BC,MAAAA,IAAAA,EAAM,CAAC1F,iBAAiB,CAAA;MACxB,aAAA,EAAe,CACX,QACA,YAAA,EACA,OAAA,EACA,UACA,QAAA,EACA,UAAA,EACA,MAAA,EACA,WAAA,EACA,OAAO,CAAA;AAEX,MAAA,cAAA,EAAgB,CAACN,YAAY,CAAA;AAC7BiG,MAAAA,OAAAA,EAAS,CAAC,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAU,WAAW,OAAO,CAAA;AAC/DC,MAAAA,WAAAA,EAAa,CAAC,UAAA,EAAY,MAAA,EAAQ,QAAA,EAAU,UAAA,EAAY,WAAW,MAAM,CAAA;AACzEC,MAAAA,MAAAA,EAAQ,CAACnG,YAAY,CAAA;AACrBoG,MAAAA,MAAAA,EAAQ,CAACpG,YAAY,CAAA;MACrBqG,OAAAA,EAAS,CAAC,MAAM1G,QAAQ,CAAA;AACxB2G,MAAAA,IAAAA,EAAM,CAACtG,YAAY,CAAA;AACnB,MAAA,aAAA,EAAe,CAACA,YAAY,CAAA;AAC5BuG,MAAAA,QAAAA,EAAU,CAAC,SAAA,EAAW,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,SAAS,QAAQ;AACrE,KAAA;IACD/N,WAAAA,EAAa;;;;;;;;AASTkN,MAAAA,MAAAA,EAAQ,CACJ;AACIA,QAAAA,MAAAA,EAAQ,CACJ,MAAA,EACA,QAAA,EACAjG,UAAAA,EACAc,gBAAAA,EACAC,qBACA4C,WAAW;OAElB,CAAA;;;;;;AAOL0C,MAAAA,SAAAA,EAAW,CAAC,WAAW,CAAA;;;;;AAKvBU,MAAAA,OAAAA,EAAS,CACL;AAAEA,QAAAA,OAAAA,EAAS,CAAC7G,QAAAA,EAAUY,gBAAAA,EAAkBC,mBAAAA,EAAqBmC,cAAc;OAAG,CAAA;;;;;AAMlF,MAAA,aAAA,EAAe,CAAC;AAAE,QAAA,aAAA,EAAeY,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,cAAA,EAAgB,CAAC;AAAE,QAAA,cAAA,EAAgBA,UAAAA;OAAc,CAAA;;;;;AAKjD,MAAA,cAAA,EAAgB,CAAC;AAAE,QAAA,cAAA,EAAgB,CAAC,MAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,cAAc;AAAG,OAAA,CAAA;;;;;AAKpF,MAAA,gBAAA,EAAkB,CAAC;QAAE,gBAAA,EAAkB,CAAC,SAAS,OAAO;OAAG,CAAA;;;;;AAK3DkD,MAAAA,GAAAA,EAAK,CAAC;QAAEA,GAAAA,EAAK,CAAC,UAAU,SAAS;OAAG,CAAA;;;;;MAKpCC,OAAAA,EAAS,CACL,SACA,cAAA,EACA,QAAA,EACA,QACA,aAAA,EACA,OAAA,EACA,gBACA,eAAA,EACA,YAAA,EACA,gBACA,oBAAA,EACA,oBAAA,EACA,sBACA,iBAAA,EACA,WAAA,EACA,aACA,MAAA,EACA,aAAA,EACA,UAAA,EACA,WAAA,EACA,QAAQ,CAAA;;;;;MAMZC,EAAAA,EAAI,CAAC,WAAW,aAAa,CAAA;;;;;AAK7BC,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAO,CAAC,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,SAAS,KAAK;AAAG,OAAA,CAAA;;;;;AAK5DC,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAO,CAAC,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,SAAS,KAAK;AAAG,OAAA,CAAA;;;;;MAKpEC,SAAAA,EAAW,CAAC,WAAW,gBAAgB,CAAA;;;;;AAKvC,MAAA,YAAA,EAAc,CAAC;AAAEC,QAAAA,MAAAA,EAAQ,CAAC,SAAA,EAAW,OAAA,EAAS,MAAA,EAAQ,QAAQ,YAAY;AAAG,OAAA,CAAA;;;;;AAK7E,MAAA,iBAAA,EAAmB,CAAC;AAAEA,QAAAA,MAAAA,EAAQtD,0BAAAA;OAA8B,CAAA;;;;;AAK5DuD,MAAAA,QAAAA,EAAU,CAAC;AAAEA,QAAAA,QAAAA,EAAUtD,aAAAA;OAAiB,CAAA;;;;;AAKxC,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,aAAAA;OAAiB,CAAA;;;;;AAKhD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,aAAAA;OAAiB,CAAA;;;;;AAKhDuD,MAAAA,UAAAA,EAAY,CAAC;AAAEA,QAAAA,UAAAA,EAAYtD,eAAAA;OAAmB,CAAA;;;;;AAK9C,MAAA,cAAA,EAAgB,CAAC;AAAE,QAAA,cAAA,EAAgBA,eAAAA;OAAmB,CAAA;;;;;AAKtD,MAAA,cAAA,EAAgB,CAAC;AAAE,QAAA,cAAA,EAAgBA,eAAAA;OAAmB,CAAA;;;;;AAKtDc,MAAAA,QAAAA,EAAU,CAAC,QAAA,EAAU,OAAA,EAAS,UAAA,EAAY,YAAY,QAAQ,CAAA;;;;;AAK9DyC,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAOrD,UAAAA;OAAc,CAAA;;;;;AAK/B,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,UAAAA;OAAc,CAAA;;;;;AAKvC,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,UAAAA;OAAc,CAAA;;;;;AAKvCsD,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAOtD,UAAAA;OAAc,CAAA;;;;;AAK/BuD,MAAAA,GAAAA,EAAK,CAAC;AAAEA,QAAAA,GAAAA,EAAKvD,UAAAA;OAAc,CAAA;;;;;AAK3BwD,MAAAA,GAAAA,EAAK,CAAC;AAAEA,QAAAA,GAAAA,EAAKxD,UAAAA;OAAc,CAAA;;;;;AAK3ByD,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAOzD,UAAAA;OAAc,CAAA;;;;;AAK/B0D,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQ1D,UAAAA;OAAc,CAAA;;;;;AAKjC2D,MAAAA,IAAAA,EAAM,CAAC;AAAEA,QAAAA,IAAAA,EAAM3D,UAAAA;OAAc,CAAA;;;;;MAK7B4D,UAAAA,EAAY,CAAC,SAAA,EAAW,WAAA,EAAa,UAAU,CAAA;;;;;AAK/CC,MAAAA,CAAAA,EAAG,CAAC;AAAEA,QAAAA,CAAAA,EAAG,CAAC5H,SAAAA,EAAW,MAAA,EAAQU,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;;;;AAUrEoH,MAAAA,KAAAA,EAAO,CACH;AACIA,QAAAA,KAAAA,EAAO,CACHlI,UAAAA,EACA,MAAA,EACA,QACAkD,cAAAA,EACA,GAAGiB,yBAAyB;OAEnC,CAAA;;;;;AAML,MAAA,gBAAA,EAAkB,CAAC;AAAEgE,QAAAA,IAAAA,EAAM,CAAC,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,aAAa;AAAG,OAAA,CAAA;;;;;AAKzE,MAAA,WAAA,EAAa,CAAC;QAAEA,IAAAA,EAAM,CAAC,QAAA,EAAU,MAAA,EAAQ,cAAc;AAAG,OAAA,CAAA;;;;;AAK1DA,MAAAA,IAAAA,EAAM,CAAC;AAAEA,QAAAA,IAAAA,EAAM,CAACjI,QAAAA,EAAUF,UAAAA,EAAY,MAAA,EAAQ,SAAA,EAAW,QAAQc,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKpFsH,MAAAA,IAAAA,EAAM,CAAC;AAAEA,QAAAA,IAAAA,EAAM,CAAC,EAAA,EAAIlI,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKtEuH,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQ,CAAC,EAAA,EAAInI,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAK1EwH,MAAAA,KAAAA,EAAO,CACH;AACIA,QAAAA,KAAAA,EAAO,CACHjI,SAAAA,EACA,OAAA,EACA,MAAA,EACA,MAAA,EACAU,qBACAD,gBAAgB;OAEvB,CAAA;;;;;AAML,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAauD,yBAAAA;OAA6B,CAAA;;;;;AAK1D,MAAA,eAAA,EAAiB,CAAC;AAAEkE,QAAAA,GAAAA,EAAKjE,0BAAAA;OAA8B,CAAA;;;;;AAKvD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaE,yBAAAA;OAA6B,CAAA;;;;;AAK1D,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,yBAAAA;OAA6B,CAAA;;;;;AAKtD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaH,yBAAAA;OAA6B,CAAA;;;;;AAK1D,MAAA,eAAA,EAAiB,CAAC;AAAEmE,QAAAA,GAAAA,EAAKlE,0BAAAA;OAA8B,CAAA;;;;;AAKvD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaE,yBAAAA;OAA6B,CAAA;;;;;AAK1D,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,yBAAAA;OAA6B,CAAA;;;;;AAKtD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAa,CAAC,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,aAAa,WAAW;AAAG,OAAA,CAAA;;;;;AAKhF,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaC,qBAAAA;OAAyB,CAAA;;;;;AAKtD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,qBAAAA;OAAyB,CAAA;;;;;AAKtDgE,MAAAA,GAAAA,EAAK,CAAC;AAAEA,QAAAA,GAAAA,EAAKtE,uBAAAA;OAA2B,CAAA;;;;;AAKxC,MAAA,OAAA,EAAS,CAAC;AAAE,QAAA,OAAA,EAASA,uBAAAA;OAA2B,CAAA;;;;;AAKhD,MAAA,OAAA,EAAS,CAAC;AAAE,QAAA,OAAA,EAASA,uBAAAA;OAA2B,CAAA;;;;;AAKhD,MAAA,iBAAA,EAAmB,CAAC;AAAEuE,QAAAA,OAAAA,EAAS,CAAC,GAAGhE,qBAAAA,EAAqB,EAAI,QAAQ;AAAG,OAAA,CAAA;;;;;AAKvE,MAAA,eAAA,EAAiB,CAAC;AAAE,QAAA,eAAA,EAAiB,CAAC,GAAGC,uBAAAA,EAAuB,EAAI,QAAQ;AAAG,OAAA,CAAA;;;;;AAK/E,MAAA,cAAA,EAAgB,CAAC;AAAE,QAAA,cAAA,EAAgB,CAAC,MAAA,EAAQ,GAAGA,uBAAAA,EAAyB;AAAG,OAAA,CAAA;;;;;AAK3E,MAAA,eAAA,EAAiB,CAAC;AAAEhM,QAAAA,OAAAA,EAAS,CAAC,QAAA,EAAU,GAAG+L,qBAAAA,EAAuB;AAAG,OAAA,CAAA;;;;;AAKrE,MAAA,aAAA,EAAe,CAAC;QAAEiE,KAAAA,EAAO,CAAC,GAAGhE,uBAAAA,EAAuB,EAAI;UAAEiE,QAAAA,EAAU,CAAC,IAAI,MAAM;SAAG;OAAG,CAAA;;;;;AAKrF,MAAA,YAAA,EAAc,CACV;AAAEC,QAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQ,GAAGlE,uBAAAA,EAAuB,EAAI;UAAEiE,QAAAA,EAAU,CAAC,IAAI,MAAM;SAAG;OAAG,CAAA;;;;;AAMhF,MAAA,eAAA,EAAiB,CAAC;AAAE,QAAA,eAAA,EAAiBlE,qBAAAA;OAAyB,CAAA;;;;;AAK9D,MAAA,aAAA,EAAe,CAAC;AAAE,QAAA,aAAA,EAAe,CAAC,GAAGC,uBAAAA,EAAuB,EAAI,UAAU;AAAG,OAAA,CAAA;;;;;AAK7E,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAc,CAAC,MAAA,EAAQ,GAAGA,uBAAAA,EAAyB;AAAG,OAAA,CAAA;;;;;;AAMvEmE,MAAAA,CAAAA,EAAG,CAAC;AAAEA,QAAAA,CAAAA,EAAG3E,uBAAAA;OAA2B,CAAA;;;;;AAKpC4E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI5E,uBAAAA;OAA2B,CAAA;;;;;AAKtC6E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI7E,uBAAAA;OAA2B,CAAA;;;;;AAKtC8E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI9E,uBAAAA;OAA2B,CAAA;;;;;AAKtC+E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI/E,uBAAAA;OAA2B,CAAA;;;;;AAKtCgF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAIhF,uBAAAA;OAA2B,CAAA;;;;;AAKtCiF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAIjF,uBAAAA;OAA2B,CAAA;;;;;AAKtCkF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAIlF,uBAAAA;OAA2B,CAAA;;;;;AAKtCmF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAInF,uBAAAA;OAA2B,CAAA;;;;;AAKtCoF,MAAAA,CAAAA,EAAG,CAAC;AAAEA,QAAAA,CAAAA,EAAG3E,WAAAA;OAAe,CAAA;;;;;AAKxB4E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI5E,WAAAA;OAAe,CAAA;;;;;AAK1B6E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI7E,WAAAA;OAAe,CAAA;;;;;AAK1B8E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI9E,WAAAA;OAAe,CAAA;;;;;AAK1B+E,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAI/E,WAAAA;OAAe,CAAA;;;;;AAK1BgF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAIhF,WAAAA;OAAe,CAAA;;;;;AAK1BiF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAIjF,WAAAA;OAAe,CAAA;;;;;AAK1BkF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAIlF,WAAAA;OAAe,CAAA;;;;;AAK1BmF,MAAAA,EAAAA,EAAI,CAAC;AAAEA,QAAAA,EAAAA,EAAInF,WAAAA;OAAe,CAAA;;;;;AAK1B,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWT,uBAAAA;OAA2B,CAAA;;;;;AAKpD,MAAA,iBAAA,EAAmB,CAAC,iBAAiB,CAAA;;;;;AAKrC,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,uBAAAA;OAA2B,CAAA;;;;;AAKpD,MAAA,iBAAA,EAAmB,CAAC,iBAAiB,CAAA;;;;;;;;AAUrCiB,MAAAA,IAAAA,EAAM,CAAC;AAAEA,QAAAA,IAAAA,EAAMP,WAAAA;OAAe,CAAA;;;;;AAK9BmF,MAAAA,CAAAA,EAAG,CAAC;AAAEA,QAAAA,CAAAA,EAAG,CAAC9G,cAAAA,EAAgB,QAAA,EAAU,GAAG2B,aAAa;AAAG,OAAA,CAAA;;;;;AAKvD,MAAA,OAAA,EAAS,CACL;QACI,OAAA,EAAS;AACL3B,UAAAA,cAAAA;AACA,UAAA,QAAA;;AAEA,UAAA,MAAA;AACA,UAAA,GAAG2B,WAAAA;AAAa;OAEvB,CAAA;;;;;AAML,MAAA,OAAA,EAAS,CACL;QACI,OAAA,EAAS;AACL3B,UAAAA,cAAAA;AACA,UAAA,QAAA;AACA,UAAA,MAAA;;AAEA,UAAA,OAAA;;AAEA,UAAA;AAAE+G,YAAAA,MAAAA,EAAQ,CAAChH,eAAe;AAAC,WAAA;AAC3B,UAAA,GAAG4B,WAAAA;AAAa;OAEvB,CAAA;;;;;AAMLqF,MAAAA,CAAAA,EAAG,CAAC;AAAEA,QAAAA,CAAAA,EAAG,CAAC,QAAA,EAAU,IAAA,EAAM,GAAGrF,aAAa;AAAG,OAAA,CAAA;;;;;AAK7C,MAAA,OAAA,EAAS,CAAC;AAAE,QAAA,OAAA,EAAS,CAAC,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,GAAGA,aAAa;AAAG,OAAA,CAAA;;;;;AAKjE,MAAA,OAAA,EAAS,CAAC;AAAE,QAAA,OAAA,EAAS,CAAC,QAAA,EAAU,IAAA,EAAM,GAAGA,aAAa;AAAG,OAAA,CAAA;;;;;;;;AAUzD,MAAA,WAAA,EAAa,CACT;AAAEgC,QAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQhE,SAAAA,EAAWhB,yBAAAA,EAA2BV,iBAAiB;OAAG,CAAA;;;;;MAM/E,gBAAA,EAAkB,CAAC,eAAe,sBAAsB,CAAA;;;;;MAKxD,YAAA,EAAc,CAAC,UAAU,YAAY,CAAA;;;;;AAKrC,MAAA,aAAA,EAAe,CAAC;QAAEoF,IAAAA,EAAM,CAACzD,eAAAA,EAAiB/B,mBAAAA,EAAqBM,iBAAiB;AAAG,OAAA,CAAA;;;;;AAKnF,MAAA,cAAA,EAAgB,CACZ;QACI,cAAA,EAAgB,CACZ,iBAAA,EACA,iBAAA,EACA,WAAA,EACA,gBAAA,EACA,QAAA,EACA,eAAA,EACA,UAAA,EACA,gBAAA,EACA,gBAAA,EACAf,SAAAA,EACAQ,gBAAgB;OAEvB,CAAA;;;;;AAML,MAAA,aAAA,EAAe,CAAC;QAAEyF,IAAAA,EAAM,CAACxE,6BAAAA,EAA+BjB,gBAAAA,EAAkB8B,SAAS;AAAG,OAAA,CAAA;;;;;AAKtF,MAAA,YAAA,EAAc,CAAC,aAAa,CAAA;;;;;AAK5B,MAAA,aAAA,EAAe,CAAC,SAAS,CAAA;;;;;AAKzB,MAAA,kBAAA,EAAoB,CAAC,cAAc,CAAA;;;;;MAKnC,YAAA,EAAc,CAAC,eAAe,eAAe,CAAA;;;;;MAK7C,aAAA,EAAe,CAAC,qBAAqB,cAAc,CAAA;;;;;MAKnD,cAAA,EAAgB,CAAC,sBAAsB,mBAAmB,CAAA;;;;;AAK1DkE,MAAAA,QAAAA,EAAU,CAAC;QAAEA,QAAAA,EAAU,CAAC/D,aAAAA,EAAehC,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAK/E,MAAA,YAAA,EAAc,CACV;AAAE,QAAA,YAAA,EAAc,CAACZ,QAAAA,EAAU,MAAA,EAAQa,mBAAAA,EAAqBM,iBAAiB;OAAG,CAAA;;;;;AAMhFmF,MAAAA,OAAAA,EAAS,CACL;QACIA,OAAAA,EAAS;;AAELxD,UAAAA,YAAAA;AACA,UAAA,GAAGmB,uBAAAA;AAAyB;OAEnC,CAAA;;;;;AAML,MAAA,YAAA,EAAc,CAAC;QAAE,YAAA,EAAc,CAAC,MAAA,EAAQpD,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKhF,MAAA,qBAAA,EAAuB,CAAC;QAAEqJ,IAAAA,EAAM,CAAC,UAAU,SAAS;OAAG,CAAA;;;;;AAKvD,MAAA,iBAAA,EAAmB,CACf;AAAEA,QAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQpJ,qBAAqBD,gBAAgB;OAAG,CAAA;;;;;AAMhF,MAAA,gBAAA,EAAkB,CAAC;AAAE+F,QAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,SAAS,KAAK;AAAG,OAAA,CAAA;;;;;;AAMnF,MAAA,mBAAA,EAAqB,CAAC;AAAEuD,QAAAA,WAAAA,EAAatF,UAAAA;OAAc,CAAA;;;;;AAKnD,MAAA,YAAA,EAAc,CAAC;AAAE+B,QAAAA,IAAAA,EAAM/B,UAAAA;OAAc,CAAA;;;;;AAKrC,MAAA,iBAAA,EAAmB,CAAC,WAAA,EAAa,UAAA,EAAY,cAAA,EAAgB,cAAc,CAAA;;;;;AAK3E,MAAA,uBAAA,EAAyB,CAAC;AAAEuF,QAAAA,UAAAA,EAAY,CAAC,GAAG7E,cAAAA,EAAc,EAAI,MAAM;AAAG,OAAA,CAAA;;;;;AAKvE,MAAA,2BAAA,EAA6B,CACzB;AACI6E,QAAAA,UAAAA,EAAY,CACRnK,QAAAA,EACA,WAAA,EACA,MAAA,EACAa,qBACAI,iBAAiB;OAExB,CAAA;;;;;AAML,MAAA,uBAAA,EAAyB,CAAC;AAAEkJ,QAAAA,UAAAA,EAAYvF,UAAAA;OAAc,CAAA;;;;;AAKtD,MAAA,kBAAA,EAAoB,CAChB;AAAE,QAAA,kBAAA,EAAoB,CAAC5E,QAAAA,EAAU,MAAA,EAAQa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAMrF,MAAA,gBAAA,EAAkB,CAAC,WAAA,EAAa,WAAA,EAAa,YAAA,EAAc,aAAa,CAAA;;;;;MAKxE,eAAA,EAAiB,CAAC,UAAA,EAAY,eAAA,EAAiB,WAAW,CAAA;;;;;AAK1D,MAAA,WAAA,EAAa,CAAC;AAAE+F,QAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,QAAQ;AAAG,OAAA,CAAA;;;;;AAK/DyD,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQnG,uBAAAA;OAA2B,CAAA;;;;;AAK9C,MAAA,gBAAA,EAAkB,CACd;QACIoG,KAAAA,EAAO,CACH,UAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,EACA,YACA,aAAA,EACA,KAAA,EACA,OAAA,EACAxJ,mBAAAA,EACAD,gBAAgB;OAEvB,CAAA;;;;;AAML0J,MAAAA,UAAAA,EAAY,CACR;AAAEA,QAAAA,UAAAA,EAAY,CAAC,QAAA,EAAU,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,YAAY,cAAc;OAAG,CAAA;;;;;AAMvFC,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAO,CAAC,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,MAAM;AAAG,OAAA,CAAA;;;;;AAKrDC,MAAAA,IAAAA,EAAM,CAAC;QAAEA,IAAAA,EAAM,CAAC,YAAA,EAAc,UAAA,EAAY,QAAQ;AAAG,OAAA,CAAA;;;;;AAKrDC,MAAAA,OAAAA,EAAS,CAAC;QAAEA,OAAAA,EAAS,CAAC,MAAA,EAAQ,QAAA,EAAU,MAAM;AAAG,OAAA,CAAA;;;;;AAKjDhS,MAAAA,OAAAA,EAAS,CAAC;QAAEA,OAAAA,EAAS,CAAC,MAAA,EAAQoI,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;;;;AAUtE,MAAA,eAAA,EAAiB,CAAC;QAAE8J,EAAAA,EAAI,CAAC,OAAA,EAAS,OAAA,EAAS,QAAQ;AAAG,OAAA,CAAA;;;;;AAKtD,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAW,CAAC,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,MAAM;AAAG,OAAA,CAAA;;;;;AAKnE,MAAA,WAAA,EAAa,CAAC;QAAE,WAAA,EAAa,CAAC,QAAA,EAAU,SAAA,EAAW,SAAS;AAAG,OAAA,CAAA;;;;;AAK/D,MAAA,aAAA,EAAe,CAAC;AAAEA,QAAAA,EAAAA,EAAI7F,eAAAA;OAAmB,CAAA;;;;;AAKzC,MAAA,WAAA,EAAa,CAAC;AAAE6F,QAAAA,EAAAA,EAAI3F,aAAAA;OAAiB,CAAA;;;;;AAKrC,MAAA,SAAA,EAAW,CAAC;AAAE2F,QAAAA,EAAAA,EAAIzF,WAAAA;OAAe,CAAA;;;;;AAKjC,MAAA,UAAA,EAAY,CACR;AACIyF,QAAAA,EAAAA,EAAI,CACA,MAAA,EACA;AACIC,UAAAA,MAAAA,EAAQ,CACJ;YAAEC,EAAAA,EAAI,CAAC,KAAK,IAAA,EAAM,GAAA,EAAK,MAAM,GAAA,EAAK,IAAA,EAAM,KAAK,IAAI;WAAC,EAClDzK,SAAAA,EACAU,qBACAD,gBAAgB,CAAA;UAEpBiK,MAAAA,EAAQ,CAAC,EAAA,EAAIhK,mBAAAA,EAAqBD,gBAAgB,CAAA;UAClDkK,KAAAA,EAAO,CAAC3K,SAAAA,EAAWU,mBAAAA,EAAqBD,gBAAgB;AAC3D,SAAA,EACDqB,0BACAV,gBAAgB;OAEvB,CAAA;;;;;AAML,MAAA,UAAA,EAAY,CAAC;AAAEmJ,QAAAA,EAAAA,EAAI9F,UAAAA;OAAc,CAAA;;;;;AAKjC,MAAA,mBAAA,EAAqB,CAAC;AAAEmG,QAAAA,IAAAA,EAAM5F,yBAAAA;OAA6B,CAAA;;;;;AAK3D,MAAA,kBAAA,EAAoB,CAAC;AAAE6F,QAAAA,GAAAA,EAAK7F,yBAAAA;OAA6B,CAAA;;;;;AAKzD,MAAA,iBAAA,EAAmB,CAAC;AAAEyF,QAAAA,EAAAA,EAAIzF,yBAAAA;OAA6B,CAAA;;;;;AAKvD,MAAA,eAAA,EAAiB,CAAC;AAAE4F,QAAAA,IAAAA,EAAMnG,UAAAA;OAAc,CAAA;;;;;AAKxC,MAAA,cAAA,EAAgB,CAAC;AAAEoG,QAAAA,GAAAA,EAAKpG,UAAAA;OAAc,CAAA;;;;;AAKtC,MAAA,aAAA,EAAe,CAAC;AAAEgG,QAAAA,EAAAA,EAAIhG,UAAAA;OAAc,CAAA;;;;;;;;AAUpCqG,MAAAA,OAAAA,EAAS,CAAC;AAAEA,QAAAA,OAAAA,EAAS7F,WAAAA;OAAe,CAAA;;;;;AAKpC,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,WAAAA;OAAe,CAAA;;;;;AAK5C,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,WAAAA;OAAe,CAAA;;;;;AAK5C,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,WAAAA;OAAe,CAAA;;;;;AAK5C,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,WAAAA;OAAe,CAAA;;;;;AAK5C,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,WAAAA;OAAe,CAAA;;;;;AAK5C,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,WAAAA;OAAe,CAAA;;;;;AAK5C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,YAAA,EAAcA,WAAAA;OAAe,CAAA;;;;;AAK9C,MAAA,UAAA,EAAY,CAAC;AAAE8F,QAAAA,MAAAA,EAAQ7F,gBAAAA;OAAoB,CAAA;;;;;AAK3C,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,YAAA,EAAc,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAKjD,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAK/C,MAAA,kBAAA,EAAoB,CAAC,kBAAkB,CAAA;;;;;AAKvC,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYA,gBAAAA;OAAoB,CAAA;;;;;AAK/C,MAAA,kBAAA,EAAoB,CAAC,kBAAkB,CAAA;;;;;AAKvC,MAAA,cAAA,EAAgB,CAAC;AAAE6F,QAAAA,MAAAA,EAAQ,CAAC,GAAG5F,cAAAA,EAAc,EAAI,UAAU,MAAM;AAAG,OAAA,CAAA;;;;;AAKpE,MAAA,cAAA,EAAgB,CAAC;AAAE6F,QAAAA,MAAAA,EAAQ,CAAC,GAAG7F,cAAAA,EAAc,EAAI,UAAU,MAAM;AAAG,OAAA,CAAA;;;;;AAKpE,MAAA,cAAA,EAAgB,CAAC;AAAE4F,QAAAA,MAAAA,EAAQtG,UAAAA;OAAc,CAAA;;;;;AAKzC,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,UAAA,EAAYA,UAAAA;OAAc,CAAA;;;;;AAK/C,MAAA,cAAA,EAAgB,CAAC;AAAEuG,QAAAA,MAAAA,EAAQvG,UAAAA;OAAc,CAAA;;;;;AAKzC,MAAA,eAAA,EAAiB,CAAC;AAAEwG,QAAAA,OAAAA,EAAS,CAAC,GAAG9F,cAAAA,EAAc,EAAI,QAAQ,QAAQ;AAAG,OAAA,CAAA;;;;;AAKtE,MAAA,gBAAA,EAAkB,CACd;QAAE,gBAAA,EAAkB,CAACtF,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAM3E,MAAA,WAAA,EAAa,CACT;AAAEwK,QAAAA,OAAAA,EAAS,CAAC,EAAA,EAAIpL,QAAAA,EAAU2B,yBAAAA,EAA2BV,iBAAiB;OAAG,CAAA;;;;;AAM7E,MAAA,eAAA,EAAiB,CAAC;AAAEmK,QAAAA,OAAAA,EAASxG,UAAAA;OAAc,CAAA;;;;;;;;AAU3C6B,MAAAA,MAAAA,EAAQ,CACJ;QACIA,MAAAA,EAAQ;;AAEJ,UAAA,EAAA;AACA,UAAA,MAAA;AACAtD,UAAAA,WAAAA;AACAjB,UAAAA,yBAAAA;AACAT,UAAAA;AAAiB;OAExB,CAAA;;;;;AAML,MAAA,cAAA,EAAgB,CAAC;AAAEgF,QAAAA,MAAAA,EAAQ7B,UAAAA;OAAc,CAAA;;;;;AAKzC,MAAA,cAAA,EAAgB,CACZ;AACI,QAAA,cAAA,EAAgB,CACZ,MAAA,EACAxB,gBAAAA,EACAlB,yBAAAA,EACAT,iBAAiB;OAExB,CAAA;;;;;AAML,MAAA,oBAAA,EAAsB,CAAC;AAAE,QAAA,cAAA,EAAgBmD,UAAAA;OAAc,CAAA;;;;;AAKvD,MAAA,QAAA,EAAU,CAAC;AAAEyG,QAAAA,IAAAA,EAAMhG,gBAAAA;OAAoB,CAAA;;;;;;;AAOvC,MAAA,cAAA,EAAgB,CAAC,YAAY,CAAA;;;;;AAK7B,MAAA,YAAA,EAAc,CAAC;AAAEgG,QAAAA,IAAAA,EAAMzG,UAAAA;OAAc,CAAA;;;;;;;AAOrC,MAAA,eAAA,EAAiB,CAAC;QAAE,aAAA,EAAe,CAAC5E,UAAUiB,iBAAiB;OAAG,CAAA;;;;;;;AAOlE,MAAA,mBAAA,EAAqB,CAAC;AAAE,QAAA,aAAA,EAAe2D,UAAAA;OAAc,CAAA;;;;;AAKrD,MAAA,cAAA,EAAgB,CAAC;AAAE,QAAA,YAAA,EAAcS,gBAAAA;OAAoB,CAAA;;;;;AAKrD,MAAA,kBAAA,EAAoB,CAAC;AAAE,QAAA,YAAA,EAAcT,UAAAA;OAAc,CAAA;;;;;AAKnD,MAAA,aAAA,EAAe,CACX;AACI,QAAA,aAAA,EAAe,CACX,MAAA,EACAvB,eAAAA,EACAnB,yBAAAA,EACAT,iBAAiB;OAExB,CAAA;;;;;AAML,MAAA,mBAAA,EAAqB,CAAC;AAAE,QAAA,aAAA,EAAemD,UAAAA;OAAc,CAAA;;;;;AAKrD0G,MAAAA,OAAAA,EAAS,CAAC;QAAEA,OAAAA,EAAS,CAACtL,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKxE,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAa,CAAC,GAAG2E,cAAAA,EAAc,EAAI,eAAe,cAAc;AAAG,OAAA,CAAA;;;;;AAKnF,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYA,cAAAA;OAAkB,CAAA;;;;;AAK7C,MAAA,WAAA,EAAa,CACT;AAAE,QAAA,WAAA,EAAa,CAAC,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,MAAA,EAAQ,UAAU,MAAM;AAAC,OAAA,EACzE,cAAc,CAAA;;;;;AAMlB,MAAA,gBAAA,EAAkB,CAAC;AAAEgG,QAAAA,IAAAA,EAAM,CAAC,KAAA,EAAO,UAAA,EAAY,WAAA,EAAa,SAAS;AAAG,OAAA,CAAA;;;;;AAKxE,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,aAAA,EAAe,CAACvL,QAAQ;OAAG,CAAA;AACvD,MAAA,4BAAA,EAA8B,CAAC;AAAE,QAAA,kBAAA,EAAoBwF,sBAAAA;OAA0B,CAAA;AAC/E,MAAA,0BAAA,EAA4B,CAAC;AAAE,QAAA,gBAAA,EAAkBA,sBAAAA;OAA0B,CAAA;AAC3E,MAAA,8BAAA,EAAgC,CAAC;AAAE,QAAA,kBAAA,EAAoBZ,UAAAA;OAAc,CAAA;AACrE,MAAA,4BAAA,EAA8B,CAAC;AAAE,QAAA,gBAAA,EAAkBA,UAAAA;OAAc,CAAA;AACjE,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,aAAA,EAAeY,sBAAAA;OAA0B,CAAA;AACrE,MAAA,qBAAA,EAAuB,CAAC;AAAE,QAAA,WAAA,EAAaA,sBAAAA;OAA0B,CAAA;AACjE,MAAA,yBAAA,EAA2B,CAAC;AAAE,QAAA,aAAA,EAAeZ,UAAAA;OAAc,CAAA;AAC3D,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,WAAA,EAAaA,UAAAA;OAAc,CAAA;AACvD,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,aAAA,EAAeY,sBAAAA;OAA0B,CAAA;AACrE,MAAA,qBAAA,EAAuB,CAAC;AAAE,QAAA,WAAA,EAAaA,sBAAAA;OAA0B,CAAA;AACjE,MAAA,yBAAA,EAA2B,CAAC;AAAE,QAAA,aAAA,EAAeZ,UAAAA;OAAc,CAAA;AAC3D,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,WAAA,EAAaA,UAAAA;OAAc,CAAA;AACvD,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,aAAA,EAAeY,sBAAAA;OAA0B,CAAA;AACrE,MAAA,qBAAA,EAAuB,CAAC;AAAE,QAAA,WAAA,EAAaA,sBAAAA;OAA0B,CAAA;AACjE,MAAA,yBAAA,EAA2B,CAAC;AAAE,QAAA,aAAA,EAAeZ,UAAAA;OAAc,CAAA;AAC3D,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,WAAA,EAAaA,UAAAA;OAAc,CAAA;AACvD,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,aAAA,EAAeY,sBAAAA;OAA0B,CAAA;AACrE,MAAA,qBAAA,EAAuB,CAAC;AAAE,QAAA,WAAA,EAAaA,sBAAAA;OAA0B,CAAA;AACjE,MAAA,yBAAA,EAA2B,CAAC;AAAE,QAAA,aAAA,EAAeZ,UAAAA;OAAc,CAAA;AAC3D,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,WAAA,EAAaA,UAAAA;OAAc,CAAA;AACvD,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,aAAA,EAAeY,sBAAAA;OAA0B,CAAA;AACrE,MAAA,qBAAA,EAAuB,CAAC;AAAE,QAAA,WAAA,EAAaA,sBAAAA;OAA0B,CAAA;AACjE,MAAA,yBAAA,EAA2B,CAAC;AAAE,QAAA,aAAA,EAAeZ,UAAAA;OAAc,CAAA;AAC3D,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,WAAA,EAAaA,UAAAA;OAAc,CAAA;AACvD,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,aAAA,EAAeY,sBAAAA;OAA0B,CAAA;AACrE,MAAA,qBAAA,EAAuB,CAAC;AAAE,QAAA,WAAA,EAAaA,sBAAAA;OAA0B,CAAA;AACjE,MAAA,yBAAA,EAA2B,CAAC;AAAE,QAAA,aAAA,EAAeZ,UAAAA;OAAc,CAAA;AAC3D,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,WAAA,EAAaA,UAAAA;OAAc,CAAA;AACvD,MAAA,mBAAA,EAAqB,CAAC;QAAE,aAAA,EAAe,CAAC/D,qBAAqBD,gBAAgB;OAAG,CAAA;AAChF,MAAA,4BAAA,EAA8B,CAAC;AAAE,QAAA,kBAAA,EAAoB4E,sBAAAA;OAA0B,CAAA;AAC/E,MAAA,0BAAA,EAA4B,CAAC;AAAE,QAAA,gBAAA,EAAkBA,sBAAAA;OAA0B,CAAA;AAC3E,MAAA,8BAAA,EAAgC,CAAC;AAAE,QAAA,kBAAA,EAAoBZ,UAAAA;OAAc,CAAA;AACrE,MAAA,4BAAA,EAA8B,CAAC;AAAE,QAAA,gBAAA,EAAkBA,UAAAA;OAAc,CAAA;AACjE,MAAA,yBAAA,EAA2B,CAAC;QAAE,aAAA,EAAe,CAAC,UAAU,SAAS;OAAG,CAAA;AACpE,MAAA,wBAAA,EAA0B,CACtB;AAAE,QAAA,aAAA,EAAe,CAAC;UAAE4G,OAAAA,EAAS,CAAC,QAAQ,QAAQ,CAAA;UAAGC,QAAAA,EAAU,CAAC,QAAQ,QAAQ;SAAG;OAAG,CAAA;AAEtF,MAAA,uBAAA,EAAyB,CAAC;AAAE,QAAA,gBAAA,EAAkB5H,aAAAA;OAAiB,CAAA;AAC/D,MAAA,sBAAA,EAAwB,CAAC;AAAE,QAAA,YAAA,EAAc,CAAC7D,QAAQ;OAAG,CAAA;AACrD,MAAA,2BAAA,EAA6B,CAAC;AAAE,QAAA,iBAAA,EAAmBwF,sBAAAA;OAA0B,CAAA;AAC7E,MAAA,yBAAA,EAA2B,CAAC;AAAE,QAAA,eAAA,EAAiBA,sBAAAA;OAA0B,CAAA;AACzE,MAAA,6BAAA,EAA+B,CAAC;AAAE,QAAA,iBAAA,EAAmBZ,UAAAA;OAAc,CAAA;AACnE,MAAA,2BAAA,EAA6B,CAAC;AAAE,QAAA,eAAA,EAAiBA,UAAAA;OAAc,CAAA;;;;;AAK/D,MAAA,WAAA,EAAa,CAAC;QAAE2G,IAAAA,EAAM,CAAC,OAAA,EAAS,WAAA,EAAa,OAAO;AAAG,OAAA,CAAA;;;;;AAKvD,MAAA,aAAA,EAAe,CACX;AAAE,QAAA,aAAA,EAAe,CAAC,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,MAAA,EAAQ,UAAU,MAAM;OAAG,CAAA;;;;;AAMjF,MAAA,eAAA,EAAiB,CAAC;AAAEA,QAAAA,IAAAA,EAAM1G,eAAAA;OAAmB,CAAA;;;;;AAK7C,MAAA,aAAA,EAAe,CAAC;AAAE0G,QAAAA,IAAAA,EAAMxG,aAAAA;OAAiB,CAAA;;;;;AAKzC,MAAA,WAAA,EAAa,CAAC;AAAEwG,QAAAA,IAAAA,EAAMtG,WAAAA;OAAe,CAAA;;;;;AAKrC,MAAA,WAAA,EAAa,CAAC;QAAE,WAAA,EAAa,CAAC,SAAS,WAAW;OAAG,CAAA;;;;;AAKrD,MAAA,YAAA,EAAc,CAAC;QAAEsG,IAAAA,EAAM,CAAC,MAAA,EAAQ1K,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;;;;AAUxE8K,MAAAA,MAAAA,EAAQ,CACJ;QACIA,MAAAA,EAAQ;;AAEJ,UAAA,EAAA;AACA,UAAA,MAAA;AACA7K,UAAAA,mBAAAA;AACAD,UAAAA;AAAgB;OAEvB,CAAA;;;;;AAMLoF,MAAAA,IAAAA,EAAM,CAAC;AAAEA,QAAAA,IAAAA,EAAMP,SAAAA;OAAa,CAAA;;;;;AAK5BkG,MAAAA,UAAAA,EAAY,CAAC;QAAEA,UAAAA,EAAY,CAAC3L,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAK9EgL,MAAAA,QAAAA,EAAU,CAAC;QAAEA,QAAAA,EAAU,CAAC5L,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAK1E,MAAA,aAAA,EAAe,CACX;QACI,aAAA,EAAe;;AAEX,UAAA,EAAA;AACA,UAAA,MAAA;AACA0C,UAAAA,eAAAA;AACApB,UAAAA,yBAAAA;AACAT,UAAAA;AAAiB;OAExB,CAAA;;;;;AAML,MAAA,mBAAA,EAAqB,CAAC;AAAE,QAAA,aAAA,EAAemD,UAAAA;OAAc,CAAA;;;;;AAKrDiH,MAAAA,SAAAA,EAAW,CAAC;AAAEA,QAAAA,SAAAA,EAAW,CAAC,EAAA,EAAI7L,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKhF,MAAA,YAAA,EAAc,CAAC;QAAE,YAAA,EAAc,CAACZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKlFkL,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQ,CAAC,EAAA,EAAI9L,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAK1EmL,MAAAA,QAAAA,EAAU,CAAC;QAAEA,QAAAA,EAAU,CAAC/L,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAK1EoL,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAO,CAAC,EAAA,EAAIhM,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKxE,MAAA,iBAAA,EAAmB,CACf;QACI,iBAAA,EAAmB;;AAEf,UAAA,EAAA;AACA,UAAA,MAAA;AACAC,UAAAA,mBAAAA;AACAD,UAAAA;AAAgB;OAEvB,CAAA;;;;;AAML,MAAA,eAAA,EAAiB,CAAC;AAAE,QAAA,eAAA,EAAiB6E,SAAAA;OAAa,CAAA;;;;;AAKlD,MAAA,qBAAA,EAAuB,CACnB;QAAE,qBAAA,EAAuB,CAACzF,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAMhF,MAAA,mBAAA,EAAqB,CACjB;QAAE,mBAAA,EAAqB,CAACZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAM9E,MAAA,oBAAA,EAAsB,CAClB;AAAE,QAAA,oBAAA,EAAsB,CAAC,EAAA,EAAIZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAMnF,MAAA,qBAAA,EAAuB,CACnB;QAAE,qBAAA,EAAuB,CAACZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAMhF,MAAA,iBAAA,EAAmB,CACf;AAAE,QAAA,iBAAA,EAAmB,CAAC,EAAA,EAAIZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAMhF,MAAA,kBAAA,EAAoB,CAChB;QAAE,kBAAA,EAAoB,CAACZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAM7E,MAAA,mBAAA,EAAqB,CACjB;QAAE,mBAAA,EAAqB,CAACZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAM9E,MAAA,gBAAA,EAAkB,CACd;AAAE,QAAA,gBAAA,EAAkB,CAAC,EAAA,EAAIZ,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;;;;AAW/E,MAAA,iBAAA,EAAmB,CAAC;QAAEsK,MAAAA,EAAQ,CAAC,YAAY,UAAU;OAAG,CAAA;;;;;AAKxD,MAAA,gBAAA,EAAkB,CAAC;AAAE,QAAA,gBAAA,EAAkBjH,uBAAAA;OAA2B,CAAA;;;;;AAKlE,MAAA,kBAAA,EAAoB,CAAC;AAAE,QAAA,kBAAA,EAAoBA,uBAAAA;OAA2B,CAAA;;;;;AAKtE,MAAA,kBAAA,EAAoB,CAAC;AAAE,QAAA,kBAAA,EAAoBA,uBAAAA;OAA2B,CAAA;;;;;AAKtE,MAAA,cAAA,EAAgB,CAAC;QAAEgI,KAAAA,EAAO,CAAC,QAAQ,OAAO;OAAG,CAAA;;;;;AAK7CC,MAAAA,OAAAA,EAAS,CAAC;QAAEA,OAAAA,EAAS,CAAC,OAAO,QAAQ;OAAG,CAAA;;;;;;;;AAUxCC,MAAAA,UAAAA,EAAY,CACR;QACIA,UAAAA,EAAY,CACR,IACA,KAAA,EACA,QAAA,EACA,WACA,QAAA,EACA,WAAA,EACA,MAAA,EACAtL,mBAAAA,EACAD,gBAAgB;OAEvB,CAAA;;;;;AAML,MAAA,qBAAA,EAAuB,CAAC;QAAEuL,UAAAA,EAAY,CAAC,UAAU,UAAU;OAAG,CAAA;;;;;AAK9DC,MAAAA,QAAAA,EAAU,CAAC;AAAEA,QAAAA,QAAAA,EAAU,CAACpM,QAAAA,EAAU,SAAA,EAAWa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKrFwF,MAAAA,IAAAA,EAAM,CACF;AAAEA,QAAAA,IAAAA,EAAM,CAAC,QAAA,EAAU,SAAA,EAAW1C,SAAAA,EAAW7C,qBAAqBD,gBAAgB;OAAG,CAAA;;;;;AAMrFyL,MAAAA,KAAAA,EAAO,CAAC;QAAEA,KAAAA,EAAO,CAACrM,QAAAA,EAAUa,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;AAKpEkF,MAAAA,OAAAA,EAAS,CAAC;AAAEA,QAAAA,OAAAA,EAAS,CAAC,MAAA,EAAQnC,YAAAA,EAAc9C,mBAAAA,EAAqBD,gBAAgB;AAAG,OAAA,CAAA;;;;;;;;AAUpF0L,MAAAA,QAAAA,EAAU,CAAC;QAAEA,QAAAA,EAAU,CAAC,UAAU,SAAS;OAAG,CAAA;;;;;AAK9C/F,MAAAA,WAAAA,EAAa,CACT;QAAEA,WAAAA,EAAa,CAAC/C,gBAAAA,EAAkB3C,mBAAAA,EAAqBD,gBAAgB;OAAG,CAAA;;;;;AAM9E,MAAA,oBAAA,EAAsB,CAAC;AAAE,QAAA,oBAAA,EAAsBkD,0BAAAA;OAA8B,CAAA;;;;;AAK7EyI,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQ7G,WAAAA;OAAe,CAAA;;;;;AAKlC,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYA,WAAAA;OAAe,CAAA;;;;;AAK1C,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYA,WAAAA;OAAe,CAAA;;;;;AAK1C,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYA,WAAAA;OAAe,CAAA;;;;;AAK1C8G,MAAAA,KAAAA,EAAO,CAAC;AAAEA,QAAAA,KAAAA,EAAO7G,UAAAA;OAAc,CAAA;;;;;AAK/B,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,UAAAA;OAAc,CAAA;;;;;AAKvC,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,UAAAA;OAAc,CAAA;;;;;AAKvC,MAAA,SAAA,EAAW,CAAC;AAAE,QAAA,SAAA,EAAWA,UAAAA;OAAc,CAAA;;;;;AAKvC,MAAA,UAAA,EAAY,CAAC,UAAU,CAAA;;;;;AAKvB8G,MAAAA,IAAAA,EAAM,CAAC;AAAEA,QAAAA,IAAAA,EAAM7G,SAAAA;OAAa,CAAA;;;;;AAK5B,MAAA,QAAA,EAAU,CAAC;AAAE,QAAA,QAAA,EAAUA,SAAAA;OAAa,CAAA;;;;;AAKpC,MAAA,QAAA,EAAU,CAAC;AAAE,QAAA,QAAA,EAAUA,SAAAA;OAAa,CAAA;;;;;AAKpC8G,MAAAA,SAAAA,EAAW,CACP;AAAEA,QAAAA,SAAAA,EAAW,CAAC7L,mBAAAA,EAAqBD,gBAAAA,EAAkB,EAAA,EAAI,MAAA,EAAQ,OAAO,KAAK;OAAG,CAAA;;;;;AAMpF,MAAA,kBAAA,EAAoB,CAAC;AAAE+L,QAAAA,MAAAA,EAAQ7I,0BAAAA;OAA8B,CAAA;;;;;AAK7D,MAAA,iBAAA,EAAmB,CAAC;QAAE4I,SAAAA,EAAW,CAAC,MAAM,MAAM;OAAG,CAAA;;;;;AAKjDE,MAAAA,SAAAA,EAAW,CAAC;AAAEA,QAAAA,SAAAA,EAAW/G,cAAAA;OAAkB,CAAA;;;;;AAK3C,MAAA,aAAA,EAAe,CAAC;AAAE,QAAA,aAAA,EAAeA,cAAAA;OAAkB,CAAA;;;;;AAKnD,MAAA,aAAA,EAAe,CAAC;AAAE,QAAA,aAAA,EAAeA,cAAAA;OAAkB,CAAA;;;;;AAKnD,MAAA,aAAA,EAAe,CAAC;AAAE,QAAA,aAAA,EAAeA,cAAAA;OAAkB,CAAA;;;;;AAKnD,MAAA,gBAAA,EAAkB,CAAC,gBAAgB,CAAA;;;;;;;;AAUnCgH,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQjI,UAAAA;OAAc,CAAA;;;;;AAKjCkI,MAAAA,UAAAA,EAAY,CAAC;QAAEA,UAAAA,EAAY,CAAC,QAAQ,MAAM;OAAG,CAAA;;;;;AAK7C,MAAA,aAAA,EAAe,CAAC;AAAEC,QAAAA,KAAAA,EAAOnI,UAAAA;OAAc,CAAA;;;;;AAKvC,MAAA,cAAA,EAAgB,CACZ;AAAEoI,QAAAA,MAAAA,EAAQ,CAAC,QAAA,EAAU,MAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,aAAa,YAAY;OAAG,CAAA;;;;;AAMpFC,MAAAA,MAAAA,EAAQ,CACJ;AACIA,QAAAA,MAAAA,EAAQ,CACJ,MAAA,EACA,SAAA,EACA,SAAA,EACA,MAAA,EACA,QACA,MAAA,EACA,MAAA,EACA,aAAA,EACA,MAAA,EACA,gBACA,UAAA,EACA,MAAA,EACA,aACA,eAAA,EACA,OAAA,EACA,QACA,SAAA,EACA,MAAA,EACA,UAAA,EACA,YAAA,EACA,cACA,YAAA,EACA,UAAA,EACA,UAAA,EACA,UAAA,EACA,YACA,WAAA,EACA,WAAA,EACA,WAAA,EACA,WAAA,EACA,aACA,WAAA,EACA,aAAA,EACA,eACA,SAAA,EACA,UAAA,EACApM,qBACAD,gBAAgB;OAEvB,CAAA;;;;;AAML,MAAA,cAAA,EAAgB,CAAC;QAAE,cAAA,EAAgB,CAAC,SAAS,SAAS;OAAG,CAAA;;;;;AAKzD,MAAA,gBAAA,EAAkB,CAAC;QAAE,gBAAA,EAAkB,CAAC,QAAQ,MAAM;OAAG,CAAA;;;;;AAKzDsM,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQ,CAAC,MAAA,EAAQ,EAAA,EAAI,GAAA,EAAK,GAAG;AAAG,OAAA,CAAA;;;;;AAK3C,MAAA,iBAAA,EAAmB,CAAC;QAAEC,MAAAA,EAAQ,CAAC,QAAQ,QAAQ;OAAG,CAAA;;;;;AAKlD,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYlJ,uBAAAA;OAA2B,CAAA;;;;;AAKtD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,UAAA,EAAY,CAAC;AAAE,QAAA,UAAA,EAAYA,uBAAAA;OAA2B,CAAA;;;;;AAKtD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,WAAA,EAAa,CAAC;AAAE,QAAA,WAAA,EAAaA,uBAAAA;OAA2B,CAAA;;;;;AAKxD,MAAA,YAAA,EAAc,CAAC;AAAEmJ,QAAAA,IAAAA,EAAM,CAAC,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,YAAY;AAAG,OAAA,CAAA;;;;;AAKjE,MAAA,WAAA,EAAa,CAAC;QAAEA,IAAAA,EAAM,CAAC,UAAU,QAAQ;OAAG,CAAA;;;;;AAK5C,MAAA,WAAA,EAAa,CAAC;AAAEA,QAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQ,GAAA,EAAK,GAAA,EAAK,MAAM;AAAG,OAAA,CAAA;;;;;AAKlD,MAAA,iBAAA,EAAmB,CAAC;QAAEA,IAAAA,EAAM,CAAC,aAAa,WAAW;OAAG,CAAA;;;;;AAKxDC,MAAAA,KAAAA,EAAO,CAAC;QAAEA,KAAAA,EAAO,CAAC,MAAA,EAAQ,MAAA,EAAQ,cAAc;AAAG,OAAA,CAAA;;;;;AAKnD,MAAA,SAAA,EAAW,CAAC;QAAE,WAAA,EAAa,CAAC,GAAA,EAAK,MAAA,EAAQ,OAAO;AAAG,OAAA,CAAA;;;;;AAKnD,MAAA,SAAA,EAAW,CAAC;QAAE,WAAA,EAAa,CAAC,GAAA,EAAK,IAAA,EAAM,MAAM;AAAG,OAAA,CAAA;;;;;AAKhD,MAAA,UAAA,EAAY,CAAC,kBAAkB,CAAA;;;;;AAK/BC,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQ,CAAC,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,MAAM;AAAG,OAAA,CAAA;;;;;AAKpD,MAAA,aAAA,EAAe,CACX;AACI,QAAA,aAAA,EAAe,CACX,MAAA,EACA,QAAA,EACA,UAAA,EACA,WAAA,EACAzM,qBACAD,gBAAgB;OAEvB,CAAA;;;;;;;;AAWL2M,MAAAA,IAAAA,EAAM,CAAC;AAAEA,QAAAA,IAAAA,EAAM,CAAC,MAAA,EAAQ,GAAG3I,UAAAA,EAAY;AAAG,OAAA,CAAA;;;;;AAK1C,MAAA,UAAA,EAAY,CACR;AACI4I,QAAAA,MAAAA,EAAQ,CACJxN,QAAAA,EACA2B,yBAAAA,EACAV,iBAAAA,EACAE,iBAAiB;OAExB,CAAA;;;;;AAMLqM,MAAAA,MAAAA,EAAQ,CAAC;AAAEA,QAAAA,MAAAA,EAAQ,CAAC,MAAA,EAAQ,GAAG5I,UAAAA,EAAY;AAAG,OAAA,CAAA;;;;;;;;AAU9C,MAAA,qBAAA,EAAuB,CAAC;QAAE,qBAAA,EAAuB,CAAC,QAAQ,MAAM;OAAG;AACtE,KAAA;IACD/N,sBAAAA,EAAwB;MACpBwQ,QAAAA,EAAU,CAAC,cAAc,YAAY,CAAA;MACrCC,UAAAA,EAAY,CAAC,gBAAgB,cAAc,CAAA;MAC3CC,KAAAA,EAAO,CAAC,WAAW,SAAA,EAAW,OAAA,EAAS,OAAO,KAAA,EAAO,OAAA,EAAS,UAAU,MAAM,CAAA;MAC9E,SAAA,EAAW,CAAC,SAAS,MAAM,CAAA;MAC3B,SAAA,EAAW,CAAC,OAAO,QAAQ,CAAA;MAC3BU,IAAAA,EAAM,CAAC,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA;MAChCM,GAAAA,EAAK,CAAC,SAAS,OAAO,CAAA;MACtBK,CAAAA,EAAG,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;MAClDC,EAAAA,EAAI,CAAC,MAAM,IAAI,CAAA;MACfC,EAAAA,EAAI,CAAC,MAAM,IAAI,CAAA;MACfO,CAAAA,EAAG,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;MAClDC,EAAAA,EAAI,CAAC,MAAM,IAAI,CAAA;MACfC,EAAAA,EAAI,CAAC,MAAM,IAAI,CAAA;MACfrE,IAAAA,EAAM,CAAC,KAAK,GAAG,CAAA;AACf,MAAA,WAAA,EAAa,CAAC,SAAS,CAAA;AACvB,MAAA,YAAA,EAAc,CACV,aAAA,EACA,kBAAA,EACA,YAAA,EACA,eACA,cAAc,CAAA;AAElB,MAAA,aAAA,EAAe,CAAC,YAAY,CAAA;AAC5B,MAAA,kBAAA,EAAoB,CAAC,YAAY,CAAA;AACjC,MAAA,YAAA,EAAc,CAAC,YAAY,CAAA;AAC3B,MAAA,aAAA,EAAe,CAAC,YAAY,CAAA;AAC5B,MAAA,cAAA,EAAgB,CAAC,YAAY,CAAA;MAC7B,YAAA,EAAc,CAAC,WAAW,UAAU,CAAA;AACpC+F,MAAAA,OAAAA,EAAS,CACL,WAAA,EACA,WAAA,EACA,WAAA,EACA,aACA,WAAA,EACA,WAAA,EACA,YAAA,EACA,YAAA,EACA,YAAA,EACA,YAAA,EACA,YAAA,EACA,YAAA,EACA,cACA,YAAY,CAAA;MAEhB,WAAA,EAAa,CAAC,cAAc,YAAY,CAAA;MACxC,WAAA,EAAa,CAAC,cAAc,YAAY,CAAA;MACxC,WAAA,EAAa,CAAC,cAAc,YAAY,CAAA;MACxC,WAAA,EAAa,CAAC,cAAc,YAAY,CAAA;MACxC,WAAA,EAAa,CAAC,cAAc,YAAY,CAAA;MACxC,WAAA,EAAa,CAAC,cAAc,YAAY,CAAA;MACxC,gBAAA,EAAkB,CAAC,oBAAoB,kBAAkB,CAAA;MACzD,UAAA,EAAY,CACR,cACA,YAAA,EACA,YAAA,EACA,cACA,YAAA,EACA,YAAA,EACA,cACA,YAAY,CAAA;MAEhB,YAAA,EAAc,CAAC,cAAc,YAAY,CAAA;MACzC,YAAA,EAAc,CAAC,cAAc,YAAY,CAAA;MACzC,cAAA,EAAgB,CACZ,kBACA,gBAAA,EACA,gBAAA,EACA,kBACA,gBAAA,EACA,gBAAA,EACA,kBACA,gBAAgB,CAAA;MAEpB,gBAAA,EAAkB,CAAC,kBAAkB,gBAAgB,CAAA;MACrD,gBAAA,EAAkB,CAAC,kBAAkB,gBAAgB,CAAA;MACrD2B,SAAAA,EAAW,CAAC,aAAA,EAAe,aAAA,EAAe,gBAAgB,CAAA;AAC1D,MAAA,gBAAA,EAAkB,CAAC,WAAA,EAAa,aAAA,EAAe,aAAA,EAAe,aAAa,CAAA;MAC3E,UAAA,EAAY,CACR,aACA,WAAA,EACA,WAAA,EACA,aACA,WAAA,EACA,WAAA,EACA,aACA,WAAW,CAAA;MAEf,WAAA,EAAa,CAAC,aAAa,WAAW,CAAA;MACtC,WAAA,EAAa,CAAC,aAAa,WAAW,CAAA;MACtC,UAAA,EAAY,CACR,aACA,WAAA,EACA,WAAA,EACA,aACA,WAAA,EACA,WAAA,EACA,aACA,WAAW,CAAA;MAEf,WAAA,EAAa,CAAC,aAAa,WAAW,CAAA;MACtC,WAAA,EAAa,CAAC,aAAa,WAAW,CAAA;MACtCS,KAAAA,EAAO,CAAC,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AACxC,MAAA,SAAA,EAAW,CAAC,OAAO,CAAA;AACnB,MAAA,SAAA,EAAW,CAAC,OAAO,CAAA;AACnB,MAAA,UAAA,EAAY,CAAC,OAAO;AACvB,KAAA;IACDvW,8BAAAA,EAAgC;AAC5B,MAAA,WAAA,EAAa,CAAC,SAAS;AAC1B,KAAA;AACDwF,IAAAA,uBAAAA,EAAyB,CACrB,GAAA,EACA,IAAA,EACA,OAAA,EACA,UAAA,EACA,QAAA,EACA,iBAAA,EACA,MAAA,EACA,cAAA,EACA,YAAA,EACA,QAAA,EACA,aAAA,EACA,WAAW;;AAGvB,CAAA;ACnzEamR,IAAAA,OAAAA,uCAA8BjL,gBAAgB,CAAA;;;ACApD,SAAS,MAAM,MAAA,EAAsB;AAC3C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC5B;ACEO,SAAS,YAAA,CAAa;AAAA,EAC5B,KAAA,GAAQ,gBAAA;AAAA,EACR;AACD,CAAA,EAGG;AACF,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,4EAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,wBAC5D,GAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GACd;AAEF;AAEO,SAAS,UAAA,CAAW;AAAA,EAC1B,KAAA,GAAQ,mBAAA;AAAA,EACR,WAAA;AAAA,EACA,MAAA;AAAA,EACA;AACD,CAAA,EAKG;AACF,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACV,2HAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,yBAAA,EAA0B,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,6BACrE,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACjC,8BACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oCAAA,EAAsC,uBAAY,CAAA,GAC5D;AAAA,SAAA,EACL,CAAA;AAAA,QACC;AAAA;AAAA;AAAA,GACF;AAEF;AAWO,SAAS,UAAA,CAAW;AAAA,EAC1B,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAM,IAAA,GAAO,KAAA;AAAA,EACb,OAAA,GAAU,SAAA;AAAA,EACV;AACD,CAAA,EAAoB;AACnB,EAAA,MAAM,YAAY,OAAA,KAAY,SAAA;AAE9B,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,8CAAA;AAAA,QACA,YAAY,WAAA,GAAc,uCAAA;AAAA,QAC1B;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACV,uBAAA;AAAA,cACA,YAAY,mBAAA,GAAsB;AAAA,aACnC;AAAA,YACA,aAAA,EAAY;AAAA;AAAA,SACb;AAAA,6BACC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,eAAe,SAAA,IAAa,SAAS,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC/D,8BACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oCAAA,EAAsC,uBAAY,CAAA,GAC5D;AAAA,SAAA,EACL,CAAA;AAAA,QACC;AAAA;AAAA;AAAA,GACF;AAEF;AC9FO,IAAM,wBAAA,GACZ,kDAAA;AAEM,IAAM,uBAAA,GAA0B;AAAA,EACtC,UAAA,EAAY,CAAA;AAAA,EACZ,gBAAA,EAAkB;AACnB,CAAA;AAEA,SAAS,YAAA,CAAa;AAAA,EACrB,GAAG;AACJ,CAAA,EAA4D;AAC3D,EAAA,uBAAOkL,GAAAA,CAAuB,qBAAA,CAAA,IAAA,EAAtB,EAA2B,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACzE;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC3B,GAAG;AACJ,CAAA,EAA8D;AAC7D,EAAA,uBACCA,GAAAA,CAAuB,qBAAA,CAAA,MAAA,EAAtB,EAA6B,WAAA,EAAU,sBAAA,EAAwB,GAAG,KAAA,EAAO,CAAA;AAE5E;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC5B,GAAG;AACJ,CAAA,EAA+D;AAC9D,EAAA,uBACCA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,uBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC5B,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACJ,CAAA,EAA+D;AAC9D,EAAA,uBACCA,GAAAA,CAAuB,qBAAA,CAAA,MAAA,EAAtB,EACA,QAAA,kBAAAA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,uBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,2jBAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL,EACD,CAAA;AAEF;AAEA,SAAS,iBAAA,CAAkB;AAAA,EAC1B,GAAG;AACJ,CAAA,EAA6D;AAC5D,EAAA,uBACCA,GAAAA,CAAuB,qBAAA,CAAA,KAAA,EAAtB,EAA4B,WAAA,EAAU,qBAAA,EAAuB,GAAG,KAAA,EAAO,CAAA;AAE1E;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACzB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACJ,CAAA,EAGG;AACF,EAAA,uBACCA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,oBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,cAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACV,2/BAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,wBAAA,CAAyB;AAAA,EACjC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAoE;AACnE,EAAA,uBACCC,IAAAA;AAAA,IAAuB,qBAAA,CAAA,YAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,6BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,wfAAA;AAAA,QACA;AAAA,OACD;AAAA,MACA,OAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+EAAA,EACf,0BAAAA,GAAAA,CAAuB,qBAAA,CAAA,aAAA,EAAtB,EACA,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,QAAA,EAAS,GAC/B,CAAA,EACD,CAAA;AAAA,QACC;AAAA;AAAA;AAAA,GACF;AAEF;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC/B,GAAG;AACJ,CAAA,EAAkE;AACjE,EAAA,uBACCA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,UAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,2BAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC9B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAiE;AAChE,EAAA,uBACCC,IAAAA;AAAA,IAAuB,qBAAA,CAAA,SAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,0BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,wfAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+EAAA,EACf,0BAAAA,GAAAA,CAAuB,qBAAA,CAAA,aAAA,EAAtB,EACA,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,qBAAA,EAAsB,GAC7C,CAAA,EACD,CAAA;AAAA,QACC;AAAA;AAAA;AAAA,GACF;AAEF;AAEA,SAAS,iBAAA,CAAkB;AAAA,EAC1B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAEG;AACF,EAAA,uBACCA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,KAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,qBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACV,mDAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC9B,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAiE;AAChE,EAAA,uBACCA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,SAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,MACnD,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,oBAAA,CAAqB;AAAA,EAC7B,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAiC;AAChC,EAAA,uBACCA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACA,WAAA,EAAU,wBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,uDAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,eAAA,CAAgB;AAAA,EACxB,GAAG;AACJ,CAAA,EAA2D;AAC1D,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,GAAA,EAAtB,EAA0B,WAAA,EAAU,mBAAA,EAAqB,GAAG,KAAA,EAAO,CAAA;AAC5E;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC/B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAEG;AACF,EAAA,uBACCC,IAAAA;AAAA,IAAuB,qBAAA,CAAA,UAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,2BAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACV,6nBAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDD,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,gBAAA,EAAiB;AAAA;AAAA;AAAA,GAC9C;AAEF;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC/B,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAkE;AACjE,EAAA,uBACCA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,UAAA;AAAA,IAAtB;AAAA,MACA,WAAA,EAAU,2BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,+eAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;;;ACxOA,IAAM,aAAA,GAAgB,CAAC,KAAA,KAAQ,OAAO,KAAA,KAAU,SAAA,GAAY,CAAA,EAAG,KAAK,CAAA,CAAA,GAAK,KAAA,KAAU,CAAA,GAAI,GAAA,GAAM,KAAA;AACtF,IAAM,EAAA,GAAK,IAAA;AACX,IAAM,GAAA,GAAM,CAAC,IAAA,EAAM,MAAA,KAAS,CAAC,KAAA,KAAQ;AACpC,EAAA,IAAI,wBAAA;AACJ,EAAA,IAAA,CAAK,MAAA,KAAW,IAAA,IAAQ,MAAA,KAAW,MAAA,GAAS,MAAA,GAAS,OAAO,QAAA,KAAa,IAAA,EAAM,OAAO,EAAA,CAAG,IAAA,EAAM,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA,GAAS,MAAA,GAAS,KAAA,CAAM,KAAA,EAAO,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA,GAAS,MAAA,GAAS,KAAA,CAAM,SAAS,CAAA;AACvN,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,EAAgB,GAAI,MAAA;AACtC,EAAA,MAAM,uBAAuB,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,OAAA,KAAU;AAC9D,IAAA,MAAM,cAAc,KAAA,KAAU,IAAA,IAAQ,UAAU,MAAA,GAAS,MAAA,GAAS,MAAM,OAAO,CAAA;AAC/E,IAAA,MAAM,qBAAqB,eAAA,KAAoB,IAAA,IAAQ,oBAAoB,MAAA,GAAS,MAAA,GAAS,gBAAgB,OAAO,CAAA;AACpH,IAAA,IAAI,WAAA,KAAgB,MAAM,OAAO,IAAA;AACjC,IAAA,MAAM,UAAA,GAAa,aAAA,CAAc,WAAW,CAAA,IAAK,cAAc,kBAAkB,CAAA;AACjF,IAAA,OAAO,QAAA,CAAS,OAAO,CAAA,CAAE,UAAU,CAAA;AAAA,EACvC,CAAC,CAAA;AACD,EAAA,MAAM,qBAAA,GAAwB,SAAS,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,KAAA,KAAQ;AAC9E,IAAA,IAAI,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,KAAA;AACnB,IAAA,IAAI,UAAU,MAAA,EAAW;AACrB,MAAA,OAAO,GAAA;AAAA,IACX;AACA,IAAA,GAAA,CAAI,GAAG,CAAA,GAAI,KAAA;AACX,IAAA,OAAO,GAAA;AAAA,EACX,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,+BAA+B,MAAA,KAAW,IAAA,IAAQ,MAAA,KAAW,MAAA,GAAS,UAAU,wBAAA,GAA2B,MAAA,CAAO,gBAAA,MAAsB,IAAA,IAAQ,6BAA6B,MAAA,GAAS,MAAA,GAAS,yBAAyB,MAAA,CAAO,CAAC,KAAK,KAAA,KAAQ;AAC/O,IAAA,IAAI,EAAE,KAAA,EAAO,OAAA,EAAS,WAAW,WAAA,EAAa,GAAG,wBAAuB,GAAI,KAAA;AAC5E,IAAA,OAAO,OAAO,OAAA,CAAQ,sBAAsB,CAAA,CAAE,KAAA,CAAM,CAACE,MAAAA,KAAQ;AACzD,MAAA,IAAI,CAAC,GAAA,EAAK,KAAK,CAAA,GAAIA,MAAAA;AACnB,MAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,MAAM,QAAA,CAAS;AAAA,QACzC,GAAG,eAAA;AAAA,QACH,GAAG;AAAA,OACP,CAAE,GAAG,CAAC,CAAA,GAAK;AAAA,QACP,GAAG,eAAA;AAAA,QACH,GAAG;AAAA,OACP,CAAG,GAAG,CAAA,KAAM,KAAA;AAAA,IAChB,CAAC,CAAA,GAAI;AAAA,MACD,GAAG,GAAA;AAAA,MACH,OAAA;AAAA,MACA;AAAA,KACJ,GAAI,GAAA;AAAA,EACR,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO,GAAG,IAAA,EAAM,oBAAA,EAAsB,4BAAA,EAA8B,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA,GAAS,MAAA,GAAS,KAAA,CAAM,OAAO,KAAA,KAAU,IAAA,IAAQ,UAAU,MAAA,GAAS,MAAA,GAAS,MAAM,SAAS,CAAA;AAChM,CAAA;AC9CJ,IAAM,cAAA,GAAiB,GAAA;AAAA,EACtB,6bAAA;AAAA,EACA;AAAA,IACC,QAAA,EAAU;AAAA,MACT,OAAA,EAAS;AAAA,QACR,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACC,mJAAA;AAAA,QACD,OAAA,EACC,oMAAA;AAAA,QACD,SAAA,EACC,8DAAA;AAAA,QACD,KAAA,EACC,iGAAA;AAAA,QACD,IAAA,EAAM;AAAA,OACP;AAAA,MACA,IAAA,EAAM;AAAA,QACL,OAAA,EAAS,+BAAA;AAAA,QACT,EAAA,EAAI,+CAAA;AAAA,QACJ,EAAA,EAAI,sCAAA;AAAA,QACJ,IAAA,EAAM,QAAA;AAAA,QACN,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW;AAAA;AACZ,KACD;AAAA,IACA,eAAA,EAAiB;AAAA,MAChB,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACP;AAEF;AAEA,SAAS,MAAA,CAAO;AAAA,EACf,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACJ,CAAA,EAGI;AACH,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,QAAA;AAE9B,EAAA,uBACCF,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACL;AAEF;AC/BA,IAAM,aAAA,GAA+C;AAAA,EACpD,KAAA,EAAO,OAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,IAAA,EAAM;AACP,CAAA;AAwBA,IAAM,WAAA,GAAc;AAAA,EACnB,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,WAAA;AAAA,IACX,MAAA,EAAQ,SAAA;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,aAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACX;AAAA,EACA,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,SAAA;AAAA,IACX,MAAA,EAAQ,SAAA;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,SAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACX;AAAA,EACA,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,SAAA;AAAA,IACX,MAAA,EAAQ,SAAA;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,SAAA;AAAA,IACN,QAAA,EAAU;AAAA;AAEZ,CAAA;AAEA,IAAM,YAAA,GAAe;AAAA,EACpB,OAAA,EAAS,YAAA;AAAA,EACT,IAAA,EAAM;AACP,CAAA;AAEA,IAAM,MAAA,GAAS;AAAA,EACd,EAAE,GAAA,EAAK,QAAA,EAAmB,IAAA,EAAM,OAAA,EAAQ;AAAA,EACxC,EAAE,GAAA,EAAK,OAAA,EAAkB,IAAA,EAAM,GAAA,EAAI;AAAA,EACnC,EAAE,GAAA,EAAK,MAAA,EAAiB,IAAA,EAAM,IAAA;AAC/B,CAAA;AAEO,SAAS,aAAA,CAAc;AAAA,EAC7B,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA,GAAU,SAAA;AAAA,EACV,KAAA,GAAQ,KAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,MAAA,EAAQ;AACT,CAAA,EAAuB;AACtB,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,QAAA,EAAS;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,KAAA,GAAQ,YAAY,IAAI,CAAA;AAC9B,EAAA,MAAM,UAAA,GAAa,aAAa,KAAK,CAAA;AAGrC,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,aAAA,EAAe,GAAG,UAAA,EAAW;AAEjD,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACxB,CAAC,QAAA,KAAuB;AACvB,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACV;AAGA,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EAChB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,OAAA,EAAS;AACb,IAAA,uBACCA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACV,OAAA,KAAY,MAAA,GAAS,KAAA,CAAM,UAAA,GAAa,KAAA,CAAM,SAAA;AAAA,UAC9C,UAAA;AAAA,UACA,YAAY,SAAA,IAAa,kCAAA;AAAA,UACzB;AAAA;AACD;AAAA,KACD;AAAA,EAEF;AAEA,EAAA,MAAM,YAAA,GAAe,KAAA;AACrB,EAAA,MAAM,WAAA,GACL,OAAO,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,GAAA,KAAQ,YAAY,CAAA,EAAG,IAAA,IAAQ,OAAA;AAGrD,EAAA,IAAI,YAAY,MAAA,EAAQ;AACvB,IAAA,uBACCC,IAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,KAAA,EACpB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACA,aAAA,EAAY,gBAAA;AAAA,UACZ,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,MAAA;AAAA,UACL,cAAY,MAAA,CAAO,KAAA;AAAA,UACnB,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,UAAA,EAAY,YAAY,SAAS,CAAA;AAAA,UAErD,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,MAAM,QAAA,EAAU;AAAA;AAAA,OACzC,EACD,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,YAAY,uBAAA,CAAwB,UAAA;AAAA,UACpC,kBAAkB,uBAAA,CAAwB,gBAAA;AAAA,UAC1C,SAAA,EAAW,wBAAA;AAAA,UAEV,QAAA,EAAA,MAAA,CAAO,IAAI,CAAC,EAAE,KAAK,IAAA,EAAM,IAAA,uBACzBC,IAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEA,OAAA,EAAS,MAAM,gBAAA,CAAiB,GAAG,CAAA;AAAA,cACnC,SAAA,EAAW,EAAA;AAAA,gBACV,sBAAA;AAAA,gBACA,iBAAiB,GAAA,IAChB;AAAA,eACF;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,gCAC1BA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,GAAG,CAAA,EAAE;AAAA;AAAA,aAAA;AAAA,YATd;AAAA,WAWN;AAAA;AAAA;AACF,KAAA,EACD,CAAA;AAAA,EAEF;AAGA,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,aAAA,EAAY,gBAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACV,wDAAA;AAAA,QACA,KAAA,CAAM,SAAA;AAAA,QACN,UAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEC,iBAAO,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,IAAA,EAAM,MAAK,KAAM;AACpC,QAAA,MAAM,WAAW,YAAA,KAAiB,GAAA;AAElC,QAAA,uBACCC,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACA,YAAA,EAAY,OAAO,GAAG,CAAA;AAAA,YACtB,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,KAAA,CAAM,QAAQ,UAAU,CAAA;AAAA,YAElD,OAAA,EAAS,MAAM,gBAAA,CAAiB,GAAG,CAAA;AAAA,YACnC,IAAA,EAAK,QAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,eAAA,EAAA,EACC,QAAA,EAAA,QAAA,oBACAA,GAAAA;AAAA,gBAAC,MAAA,CAAO,GAAA;AAAA,gBAAP;AAAA,kBACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,UAAU,CAAA;AAAA,kBACzD,QAAA,EAAS,aAAA;AAAA,kBACT,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,kBACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,kBACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,kBACnB,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,GAAA;AAAI;AAAA,eAC7C,EAEF,CAAA;AAAA,8BACAA,GAAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAW,EAAA;AAAA,oBACV,sBAAA;AAAA,oBACA,KAAA,CAAM,IAAA;AAAA,oBACN,WAAW,iBAAA,GAAoB;AAAA;AAChC;AAAA;AACD;AAAA,WAAA;AAAA,UAtBK;AAAA,SAuBN;AAAA,MAEF,CAAC;AAAA;AAAA,GACF;AAEF;ACjMA,IAAMG,cAAAA,GAA6C;AAAA,EAClD,OAAA,EAAS,eAAA;AAAA,EACT,MAAA,EAAQ,qBAAA;AAAA,EACR,KAAA,EAAO;AACR,CAAA;AAEA,SAAS,YAAA,CAAa;AAAA,EACrB,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO;AACR,CAAA,EAIG;AACF,EAAA,MAAM,SAAA,GAAY,IAAA,KAAS,IAAA,GAAO,mBAAA,GAAsB,mBAAA;AACxD,EAAA,MAAM,SAAA,GAAY,IAAA,KAAS,IAAA,GAAO,SAAA,GAAY,SAAA;AAE9C,EAAA,uBACCH,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,sGAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEC,QAAA,EAAA,IAAA,mBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,IAAA,EAAM,GAAA,EAAI,IAAG,SAAA,EAAU,wBAAA,EAAyB,oBAE1DA,GAAAA,CAAC,UAAK,SAAA,EAAW,SAAA,EAAY,eAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,EAAE;AAAA;AAAA,GAE5D;AAEF;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACzB,SAAA;AAAA,EACA,SAAA,GAAY;AACb,CAAA,EAGG;AACF,EAAA,IAAI,SAAA,EAAW;AACd,IAAA,uBACCA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,aAAA,EAAY,uBAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACV,wEAAA;AAAA,UACA;AAAA,SACD;AAAA,QAEA,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDAAA,EAAoD;AAAA;AAAA,KACpE;AAAA,EAEF;AAEA,EAAA,uBACCC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,aAAA,EAAY,uBAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACV,kFAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDAAA,EAAoD,CAAA;AAAA,wBACnEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,0BACzDA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C;AAAA,SAAA,EAC1D,CAAA;AAAA,wBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EAA4D;AAAA;AAAA;AAAA,GAC5E;AAEF;AAEA,IAAM,gBAAA,GACL,8QAAA;AAED,IAAM,yBAAA,GACL,sDAAA;AAgBM,SAAS,WAAA,CAAY;AAAA,EAC3B,YAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,cAAA;AAAA,EACA,MAAA,EAAQ,UAAA;AAAA,EACR,SAAA;AAAA,EACA,gBAAA,EAAkB;AACnB,CAAA,EAAqB;AACpB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAGG,cAAAA,EAAe,GAAG,UAAA,EAAW;AAEjD,EAAA,IAAI,SAAA,EAAW;AACd,IAAA,uBAAOH,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAsB,SAAA,EAAsB,CAAA;AAAA,EACtE;AAEA,EAAA,IAAI,CAAC,YAAA,EAAc;AAClB,IAAA,IAAI,SAAA,EAAW;AACd,MAAA,uBACCC,IAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACA,IAAA,EAAM,SAAA;AAAA,UACN,aAAA,EAAY,oBAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACV,gBAAA;AAAA,YACA,SAAA,IAAa,yBAAA;AAAA,YACb,SAAA;AAAA,YACA;AAAA,WACD;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,SAAI,SAAA,EAAU,6DAAA,EACd,0BAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,8BAAA,EAA+B,CAAA,EACrD,CAAA;AAAA,YACC,CAAC,SAAA,mBACDA,GAAAA,CAAC,SAAI,SAAA,EAAU,6CAAA,EACd,QAAA,kBAAAA,GAAAA,CAAC,UAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,GACtD,CAAA,GACG;AAAA;AAAA;AAAA,OACL;AAAA,IAEF;AAEA,IAAA,uBACCC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,aAAA,EAAY,oBAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACV,gBAAA;AAAA,UACA,qBAAA;AAAA,UACA,SAAA,IAAa,yBAAA;AAAA,UACb;AAAA,SACD;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,SAAI,SAAA,EAAU,6DAAA,EACd,0BAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,8BAAA,EAA+B,CAAA,EACrD,CAAA;AAAA,UACC,CAAC,SAAA,mBACDA,GAAAA,CAAC,SAAI,SAAA,EAAU,6CAAA,EACd,QAAA,kBAAAA,GAAAA,CAAC,UAAK,SAAA,EAAU,4CAAA,EACd,QAAA,EAAA,MAAA,CAAO,KAAA,EACT,GACD,CAAA,GACG;AAAA;AAAA;AAAA,KACL;AAAA,EAEF;AAEA,EAAA,uBACCC,KAAC,YAAA,EAAA,EACA,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAC,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAQ,OAAA;AAAA,QACR,aAAA,EAAY,cAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACV,gBAAA;AAAA,UACA,kCAAA;AAAA,UACA,SAAA,IAAa,yBAAA;AAAA,UACb,SAAA;AAAA,UACA;AAAA,SACD;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAD,IAAC,YAAA,EAAA,EAAa,IAAA,EAAM,aAAa,IAAA,EAAM,IAAA,EAAM,aAAa,IAAA,EAAM,CAAA;AAAA,UAC/D,CAAC,SAAA,mBACDC,IAAAA,CAAA,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EACd,uBAAa,IAAA,EACf,CAAA;AAAA,cACC,iCACAA,GAAAA,CAAC,UAAK,SAAA,EAAU,wCAAA,EACd,0BACF,CAAA,GACG;AAAA,aAAA,EACL,CAAA;AAAA,YACC,YAAA,CAAa,WAAA;AAAA,4BACdA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,oCAAA,EAAqC;AAAA,WAAA,EAChE,CAAA,GACG;AAAA;AAAA;AAAA,KACL,EACD,CAAA;AAAA,oBACAC,IAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAU,qBAAA;AAAA,QACV,KAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,WAAW,QAAA,GAAW,OAAA;AAAA,QAC5B,UAAA,EAAY,CAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAU,+BAAA,EAC3B,iBAAO,OAAA,EACT,CAAA;AAAA,UACC,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,KAAU;AAC/B,YAAA,MAAM,QAAA,GAAW,MAAA,CAAO,EAAA,KAAO,YAAA,CAAa,EAAA;AAC5C,YAAA,uBACCC,IAAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBAEA,OAAA,EAAS,MAAM,cAAA,CAAe,MAAA,CAAO,EAAE,CAAA;AAAA,gBACvC,SAAA,EAAU,WAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAD,GAAAA,CAAC,gBAAa,IAAA,EAAM,MAAA,CAAO,MAAM,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,IAAA,EAAK,IAAA,EAAK,CAAA;AAAA,kCAC9DA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EACd,iBAAO,IAAA,EACT,CAAA;AAAA,kBACC,MAAA,CAAO,WAAA;AAAA,kBACP,QAAA,mBACAA,GAAAA,CAAC,KAAA,EAAA,EAAM,WAAU,4BAAA,EAA6B,CAAA,mBAE9CA,GAAAA,CAAC,oBAAA,EAAA,EACC,QAAA,EAAA,MAAA,CAAO,YAAA,CAAa,EAAA,GAAK,KAAK,CAAA,EAChC;AAAA;AAAA,eAAA;AAAA,cAdI,MAAA,CAAO;AAAA,aAgBb;AAAA,UAEF,CAAC,CAAA;AAAA,UACA,SAAA,mBACAC,IAAAA,CAAA,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAD,IAAC,qBAAA,EAAA,EAAsB,CAAA;AAAA,4BACvBA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,WAAA,EAAY,OAAA,EAAO,IAAA,EAC9C,QAAA,kBAAAC,IAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,SAAA,EACR,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,SAAI,SAAA,EAAU,yEAAA,EACd,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,CAAA,EAC1B,CAAA;AAAA,8BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,iBAAO,MAAA,EACT;AAAA,aAAA,EACD,CAAA,EACD;AAAA,WAAA,EACD,CAAA,GACG;AAAA;AAAA;AAAA;AACL,GAAA,EACD,CAAA;AAEF;ACtPO,IAAM,gBAAA,GAA+B;AAAA,EAC3C,EAAE,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,YAAY,SAAA,EAAU;AAAA,EAChD,EAAE,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,YAAY,YAAA;AACvC;AA0CA,IAAMI,YAAAA,GAAc;AAAA,EACnB,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,mBAAA;AAAA,IACX,MAAA,EAAQ,UAAA;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,QAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACX;AAAA,EACA,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,mBAAA;AAAA,IACX,MAAA,EAAQ,YAAA;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,UAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACX;AAAA,EACA,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,mBAAA;AAAA,IACX,MAAA,EAAQ,UAAA;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,IAAA,EAAM,QAAA;AAAA,IACN,QAAA,EAAU;AAAA;AAEZ,CAAA;AAEA,IAAMC,aAAAA,GAAe;AAAA,EACpB,OAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,IAAA,EAAM;AACP,CAAA;AAEO,SAAS,gBAAA,CAAiB;AAAA,EAChC,SAAA,EAAW,aAAA;AAAA,EACX,eAAA,EAAiB,mBAAA;AAAA,EACjB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,SAAS,EAAC;AAAA,EACV,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA,GAAU,SAAA;AAAA,EACV,QAAA,GAAW,IAAA;AAAA,EACX,KAAA,GAAQ,KAAA;AAAA,EACR,IAAA,GAAO;AACR,CAAA,EAA0B;AAEzB,EAAA,MAAM,UAAU,kBAAA,EAAmB;AAGnC,EAAA,MAAM,gBAAA,GAAmB,OAAA,EAAS,SAAA,EAAW,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IAC3D,KAAK,IAAA,CAAK,IAAA;AAAA,IACV,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,WAAA,EAAY;AAAA,IAC7B,YAAY,IAAA,CAAK;AAAA,GAClB,CAAE,CAAA;AAGF,EAAA,MAAM,SAAA,GAAY,iBAAiB,gBAAA,IAAoB,gBAAA;AACvD,EAAA,MAAM,eAAA,GAAkB,mBAAA,IAAuB,OAAA,EAAS,QAAA,IAAY,IAAA;AACpE,EAAA,MAAM,gBAAA,GAAmB,wBAAwB,OAAA,EAAS,WAAA;AAE1D,EAAA,MAAM,KAAA,GAAQD,aAAY,IAAI,CAAA;AAC9B,EAAA,MAAM,UAAA,GAAaC,cAAa,KAAK,CAAA;AAErC,EAAA,MAAMF,cAAAA,GAAkD;AAAA,IACvD,QAAA,EAAU,OAAO,QAAA,IAAY;AAAA,GAC9B;AAGA,EAAA,IAAI,YAAY,MAAA,EAAQ;AACvB,IAAA,uBACCF,IAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,KAAA,EACpB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACA,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,MAAA;AAAA,UACL,cAAYG,cAAAA,CAAc,QAAA;AAAA,UAC1B,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,UAAA,EAAY,YAAY,SAAS,CAAA;AAAA,UAErD,QAAA,kBAAAH,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAW,MAAM,QAAA,EAAU;AAAA;AAAA,OACvC,EACD,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,YAAY,uBAAA,CAAwB,UAAA;AAAA,UACpC,kBAAkB,uBAAA,CAAwB,gBAAA;AAAA,UAC1C,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,gBAAgB,CAAA;AAAA,UAEvD,oBAAU,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,UAAA,uBACtBA,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEA,OAAA,EAAS,MAAM,gBAAA,GAAmB,GAAG,CAAA;AAAA,cACrC,SAAA,EAAW,EAAA;AAAA,gBACV,0DAAA;AAAA,gBACA,oBAAoB,GAAA,IAAO;AAAA,eAC5B;AAAA,cAEC,QAAA,EAAA;AAAA,aAAA;AAAA,YAPI;AAAA,WASN;AAAA;AAAA;AACF,KAAA,EACD,CAAA;AAAA,EAEF;AAGA,EAAA,uBACCC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,qEAAA;AAAA,QACA,KAAA,CAAM,SAAA;AAAA,QACN,UAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA,oBACAD,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,qCAAqC;AAAA;AAAA,SAChE;AAAA,QAEA,UAAU,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,OAAM,KAAM;AAClC,UAAA,MAAM,WAAW,eAAA,KAAoB,GAAA;AAErC,UAAA,uBACCC,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACA,YAAA,EAAY,KAAA;AAAA,cACZ,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,KAAA,CAAM,QAAQ,UAAU,CAAA;AAAA,cAEhE,OAAA,EAAS,MAAM,gBAAA,GAAmB,GAAG,CAAA;AAAA,cACrC,IAAA,EAAK,QAAA;AAAA,cAEL,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAACM,eAAAA,EAAA,EACC,QAAA,EAAA,QAAA,oBACAN,GAAAA;AAAA,kBAACO,MAAAA,CAAO,GAAA;AAAA,kBAAP;AAAA,oBACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,UAAU,CAAA;AAAA,oBACzD,QAAA,EAAS,gBAAA;AAAA,oBACT,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,oBACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,oBACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,oBACnB,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,GAAA;AAAI;AAAA,iBAC7C,EAEF,CAAA;AAAA,gCACAP,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAW,EAAA;AAAA,sBACV,eAAA;AAAA,sBACA,WAAW,iBAAA,GAAoB;AAAA,qBAChC;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA;AACF;AAAA,aAAA;AAAA,YAvBK;AAAA,WAwBN;AAAA,QAEF,CAAC;AAAA;AAAA;AAAA,GACF;AAEF;AC5MA,IAAMG,cAAAA,GAAqD;AAAA,EAC1D,WAAA,EAAa,kBAAA;AAAA,EACb,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,WAAA,EAAa;AACd,CAAA;AAGO,SAAS,uBAAuB,GAAA,EAAoC;AAC1E,EAAA,QAAQ,GAAA;AAAK,IACZ,KAAK,YAAA;AACJ,MAAA,OAAO,gBAAA;AAAA,IACR,KAAK,SAAA;AACJ,MAAA,OAAO,eAAA;AAAA,IACR,KAAK,aAAA;AACJ,MAAA,OAAO,cAAA;AAAA,IACR;AACC,MAAA,OAAO,qBAAA;AAAA;AAEV;AAGO,SAAS,mBAAA,CACf,KACA,MAAA,EACS;AACT,EAAA,QAAQ,GAAA;AAAK,IACZ,KAAK,YAAA;AACJ,MAAA,OAAO,MAAA,CAAO,IAAA;AAAA,IACf,KAAK,SAAA;AACJ,MAAA,OAAO,MAAA,CAAO,OAAA;AAAA,IACf,KAAK,aAAA;AACJ,MAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACf;AACC,MAAA,OAAO,GAAA;AAAA;AAEV;AAEA,SAAS,sBAAsB,GAAA,EAAoC;AAClE,EAAA,QAAQ,GAAA;AAAK,IACZ,KAAK,YAAA;AACJ,MAAA,OAAO,MAAA;AAAA,IACR,KAAK,SAAA;AACJ,MAAA,OAAO,KAAA;AAAA,IACR,KAAK,aAAA;AACJ,MAAA,OAAO,KAAA;AAAA,IACR;AACC,MAAA,OAAO,GAAA;AAAA;AAEV;AAEA,IAAM,yBAAA,GAA4B;AAAA,EACjC,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI;AACL,CAAA;AASO,SAAS,cAAA,CAAe;AAAA,EAC9B,GAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,SAAA,GAAY,0BAA0B,IAAI,CAAA;AAChD,EAAA,uBACCH,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,8CAAA;AAAA,QACA,SAAA;AAAA,QACA,uBAAuB,GAAG,CAAA;AAAA,QAC1B;AAAA,OACD;AAAA,MACA,aAAA,EAAW;AAAA;AAAA,GACZ;AAEF;AAkBO,SAAS,oBAAA,CAAqB;AAAA,EACpC,SAAA;AAAA,EACA,WAAA,EAAa,eAAA;AAAA,EACb,MAAA,EAAQ,UAAA;AAAA,EACR,WAAA,GAAc;AACf,CAAA,EAA8B;AAC7B,EAAA,MAAM,MAAM,qBAAA,EAAsB;AAClC,EAAA,MAAM,MAAA,GAAS,EAAE,GAAGG,cAAAA,EAAe,GAAG,UAAA,EAAW;AACjD,EAAA,MAAM,WAAA,GACL,eAAA,IACA,GAAA,EAAK,WAAA,IACJ,YAAA;AACF,EAAA,MAAM,OAAO,WAAA,GACV,qBAAA,CAAsB,WAAW,CAAA,GACjC,mBAAA,CAAoB,aAAa,MAAM,CAAA;AAE1C,EAAA,uBACCF,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,kKAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,GAAA,EAAK,WAAA,EAAa,MAAK,IAAA,EAAK,CAAA;AAAA,wBAC5CA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,GAC1C;AAEF;AAwBA,IAAMI,YAAAA,GAAc;AAAA,EACnB,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,mBAAA;AAAA,IACX,MAAA,EAAQ,UAAA;AAAA,IACR,UAAA,EAAY,kBAAA;AAAA,IACZ,GAAA,EAAK,QAAA;AAAA,IACL,QAAA,EAAU;AAAA,GACX;AAAA,EACA,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,mBAAA;AAAA,IACX,MAAA,EAAQ,YAAA;AAAA,IACR,UAAA,EAAY,kBAAA;AAAA,IACZ,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU;AAAA,GACX;AAAA,EACA,EAAA,EAAI;AAAA,IACH,SAAA,EAAW,mBAAA;AAAA,IACX,MAAA,EAAQ,UAAA;AAAA,IACR,UAAA,EAAY,gBAAA;AAAA,IACZ,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU;AAAA;AAEZ,CAAA;AAEA,IAAMC,aAAAA,GAAe;AAAA,EACpB,OAAA,EAAS,YAAA;AAAA,EACT,IAAA,EAAM;AACP,CAAA;AAEO,SAAS,mBAAA,CAAoB;AAAA,EACnC,SAAA;AAAA,EACA,WAAA,EAAa,eAAA;AAAA,EACb,mBAAA,EAAqB,uBAAA;AAAA,EACrB,YAAA,EAAc,gBAAA;AAAA,EACd,MAAA,EAAQ,UAAA;AAAA,EACR,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA,GAAU,MAAA;AAAA,EACV,KAAA,GAAQ,KAAA;AAAA,EACR,IAAA,GAAO;AACR,CAAA,EAA6B;AAC5B,EAAA,MAAM,MAAM,qBAAA,EAAsB;AAClC,EAAA,MAAM,MAAA,GAAS,EAAE,GAAGF,cAAAA,EAAe,GAAG,UAAA,EAAW;AAEjD,EAAA,MAAM,eACL,gBAAA,IACA,GAAA,EAAK,YAAA,IACJ,CAAC,GAAG,wBAAwB,CAAA;AAE9B,EAAA,MAAM,WAAA,GACL,eAAA,IACA,GAAA,EAAK,WAAA,IACJ,YAAA;AACF,EAAA,MAAM,cAAA,GACL,uBAAA,IAA2B,GAAA,EAAK,cAAA,KAAmB,MAAM;AAAA,EAAC,CAAA,CAAA;AAE3D,EAAA,MAAM,KAAA,GAAQC,aAAY,IAAI,CAAA;AAC9B,EAAA,MAAM,UAAA,GAAaC,cAAa,KAAK,CAAA;AAErC,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAgC;AACrD,IAAA,IAAI,SAAS,WAAA,EAAa;AAC1B,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACpB,CAAA;AAGA,EAAA,IAAI,YAAY,MAAA,EAAQ;AACvB,IAAA,uBACCJ,IAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,KAAA,EACpB,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAC,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACA,aAAA,EAAY,sBAAA;AAAA,UACZ,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,cAAY,MAAA,CAAO,WAAA;AAAA,UACnB,SAAA,EAAW,EAAA;AAAA,YACV,KAAA,CAAM,UAAA;AAAA,YACN,UAAA;AAAA,YACA,sDAAA;AAAA,YACA;AAAA,WACD;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAW,EAAA;AAAA,kBACV,8CAAA;AAAA,kBACA,KAAA,CAAM,GAAA;AAAA,kBACN,uBAAuB,WAAW;AAAA,iBACnC;AAAA,gBACA,aAAA,EAAW;AAAA;AAAA,aACZ;AAAA,4BACAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BACd,QAAA,EAAA,mBAAA,CAAoB,WAAA,EAAa,MAAM,CAAA,EACzC;AAAA;AAAA;AAAA,OACD,EACD,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,YAAY,uBAAA,CAAwB,UAAA;AAAA,UACpC,kBAAkB,uBAAA,CAAwB,gBAAA;AAAA,UAC1C,SAAA,EAAW,wBAAA;AAAA,UAEV,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,GAAA,qBAClBC,IAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEA,OAAA,EAAS,MAAM,YAAA,CAAa,GAAG,CAAA;AAAA,cAC/B,SAAA,EAAW,EAAA;AAAA,gBACV,sBAAA;AAAA,gBACA,gBAAgB,GAAA,IACf;AAAA,eACF;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAW,EAAA;AAAA,sBACV,8CAAA;AAAA,sBACA,KAAA,CAAM,GAAA;AAAA,sBACN,uBAAuB,GAAG;AAAA,qBAC3B;AAAA,oBACA,aAAA,EAAW;AAAA;AAAA,iBACZ;AAAA,gCACAA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,CAAA,EAAE;AAAA;AAAA,aAAA;AAAA,YAhBnC;AAAA,WAkBN;AAAA;AAAA;AACF,KAAA,EACD,CAAA;AAAA,EAEF;AAGA,EAAA,uBACCC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,aAAA,EAAY,sBAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACV,qEAAA;AAAA,QACA,KAAA,CAAM,SAAA;AAAA,QACN,UAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,QAAA,EAAU,mCAAmC,CAAA;AAAA,YACjE,aAAA,EAAW;AAAA;AAAA,SACZ;AAAA,QACC,YAAA,CAAa,GAAA,CAAI,CAAC,GAAA,KAAQ;AAC1B,UAAA,MAAM,WAAW,WAAA,KAAgB,GAAA;AAEjC,UAAA,uBACCC,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACA,IAAA,EAAK,QAAA;AAAA,cAEL,YAAA,EAAY,mBAAA,CAAoB,GAAA,EAAK,MAAM,CAAA;AAAA,cAC3C,cAAA,EAAc,QAAA;AAAA,cACd,SAAA,EAAW,EAAA;AAAA,gBACV,2CAAA;AAAA,gBACA,KAAA,CAAM,MAAA;AAAA,gBACN;AAAA,eACD;AAAA,cACA,OAAA,EAAS,MAAM,YAAA,CAAa,GAAG,CAAA;AAAA,cAE/B,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAACM,eAAAA,EAAA,EACC,QAAA,EAAA,QAAA,oBACAN,GAAAA;AAAA,kBAACO,MAAAA,CAAO,GAAA;AAAA,kBAAP;AAAA,oBACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,UAAU,CAAA;AAAA,oBACzD,QAAA,EAAS,mBAAA;AAAA,oBACT,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,oBACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,oBACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,oBACnB,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,GAAA;AAAI;AAAA,iBAC7C,EAEF,CAAA;AAAA,gCACAN,IAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAW,EAAA;AAAA,sBACV,8FAAA;AAAA,sBACA,WAAW,iBAAA,GAAoB;AAAA,qBAChC;AAAA,oBAEA,QAAA,EAAA;AAAA,sCAAAD,GAAAA;AAAA,wBAAC,MAAA;AAAA,wBAAA;AAAA,0BACA,SAAA,EAAW,EAAA;AAAA,4BACV,8CAAA;AAAA,4BACA,aAAA;AAAA,4BACA,uBAAuB,GAAG;AAAA,2BAC3B;AAAA,0BACA,aAAA,EAAW;AAAA;AAAA,uBACZ;AAAA,sBACC,mBAAA,CAAoB,KAAK,MAAM;AAAA;AAAA;AAAA;AACjC;AAAA,aAAA;AAAA,YArCK;AAAA,WAsCN;AAAA,QAEF,CAAC;AAAA;AAAA;AAAA,GACF;AAEF;ACnWA,IAAMG,cAAAA,GAAmD;AAAA,EACxD,cAAA,EACC,2EAAA;AAAA,EACD,kBAAA,EAAoB,2DAAA;AAAA,EACpB,OAAA,EAAS;AACV,CAAA;AAWO,SAAS,iBAAA,CAAkB;AAAA,EACjC,SAAA;AAAA,EACA,WAAA,EAAa,eAAA;AAAA,EACb,MAAA,EAAQ,UAAA;AAAA,EACR,OAAA,GAAU;AACX,CAAA,EAA2B;AAC1B,EAAA,MAAM,MAAM,qBAAA,EAAsB;AAClC,EAAA,MAAM,MAAA,GAAS,EAAE,GAAGA,cAAAA,EAAe,GAAG,UAAA,EAAW;AACjD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIK,SAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,WAAA,GACL,eAAA,IACA,GAAA,EAAK,WAAA,IACJ,YAAA;AAEF,EAAA,MAAM,aAAA,GAAgBC,YAAY,MAAM;AACvC,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EAClB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,OAAA,IAAW,SAAA,IAAa,WAAA,KAAgB,YAAA,EAAc;AAC1D,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,MAAM,YAAY,WAAA,KAAgB,SAAA;AAClC,EAAA,MAAM,OAAA,GAAU,SAAA,GAAY,MAAA,CAAO,cAAA,GAAiB,MAAA,CAAO,kBAAA;AAE3D,EAAA,uBACCR,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,aAAA,EAAY,oBAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACV,kGAAA;AAAA,QACA,YACG,4EAAA,GACA,wEAAA;AAAA,QACH;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,wBAC1CA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,SAAA,EAAU,+CAAA;AAAA,YACV,OAAA,EAAS,aAAA;AAAA,YACT,cAAY,MAAA,CAAO,OAAA;AAAA,YAEnB,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACxB;AAAA;AAAA,GACD;AAEF;AC1EA,SAAS,MAAA,CAAO;AAAA,EACf,SAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,GAAG;AACJ,CAAA,EAAsD;AACrD,EAAA,MAAM,OAAA,GAAgBU,MAAA,CAAA,OAAA;AAAA,IACrB,MACC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAChB,KAAA,GACA,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GACzB,YAAA,GACA,CAAC,KAAK,GAAG,CAAA;AAAA,IACd,CAAC,KAAA,EAAO,YAAA,EAAc,GAAA,EAAK,GAAG;AAAA,GAC/B;AAEA,EAAA,uBACCT,IAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,YAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,qOAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAiB,eAAA,CAAA,KAAA;AAAA,UAAhB;AAAA,YACA,WAAA,EAAU,cAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACV;AAAA,aACD;AAAA,YAEA,QAAA,kBAAAA,GAAAA;AAAA,cAAiB,eAAA,CAAA,KAAA;AAAA,cAAhB;AAAA,gBACA,WAAA,EAAU,cAAA;AAAA,gBACV,SAAA,EAAW,EAAA;AAAA,kBACV;AAAA;AACD;AAAA;AACD;AAAA,SACD;AAAA,QACC,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,OAAA,CAAQ,QAAO,EAAG,CAAC,CAAA,EAAG,KAAA,qBAC3CA,GAAAA;AAAA,UAAiB,eAAA,CAAA,KAAA;AAAA,UAAhB;AAAA,YACA,WAAA,EAAU,cAAA;AAAA,YAEV,SAAA,EAAU;AAAA,WAAA;AAAA,UADL;AAAA,SAGN;AAAA;AAAA;AAAA,GACF;AAEF;ACpDA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACtB,+iBAAA;AAAA,EACA;AAAA,IACC,QAAA,EAAU;AAAA,MACT,OAAA,EAAS;AAAA,QACR,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EACC;AAAA,OACF;AAAA,MACA,IAAA,EAAM;AAAA,QACL,OAAA,EAAS,kBAAA;AAAA,QACT,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACL,KACD;AAAA,IACA,eAAA,EAAiB;AAAA,MAChB,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACP;AAEF;AAEA,SAAS,MAAA,CAAO;AAAA,EACf,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACJ,CAAA,EACsC;AACrC,EAAA,uBACCA,GAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACL;AAEF;AC6CO,SAAS,YAAA,CAAa;AAAA,EAC5B,KAAA,EAAO,MAAA;AAAA,EACP,QAAA;AAAA,EACA,IAAA,GAAO,GAAA;AAAA,EACP,UAAU,eAAA,GAAkB,KAAA;AAAA,EAC5B,UAAA,GAAa,GAAA;AAAA,EACb,YAAA,GAAe,KAAA;AAAA,EACf,aAAA,GAAgB,IAAA;AAAA,EAChB,SAAA;AAAA,EACA,WAAA,GAAc;AACf,CAAA,EAAsB;AACrB,EAAA,MAAM,SAAA,GAAY,OAA0B,IAAI,CAAA;AAChD,EAAA,MAAM,YAAA,GAAe,OAAyB,IAAI,CAAA;AAClD,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAEhD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIQ,SAAkC,IAAI,CAAA;AAChE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAAS,CAAC,CAAA;AAClC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,CAAC,CAAA;AAC1C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,QAAAA,CAAS,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AACvD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,QAAAA,CAAS,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AACzD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,eAAe,CAAA;AAExD,EAAA,MAAM,cAAA,GAAiBC,YAAY,MAAM;AACxC,IAAA,IAAI,CAAC,SAAA,CAAU,OAAA,IAAW,CAAC,OAAO,OAAO,IAAA;AAEzC,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AACpD,IAAA,YAAA,CAAa,KAAA,GAAQ,UAAA;AACrB,IAAA,YAAA,CAAa,MAAA,GAAS,UAAA;AACtB,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,UAAA,CAAW,IAAI,CAAA;AACxC,IAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AAEjB,IAAA,GAAA,CAAI,UAAU,SAAA,CAAU,OAAA,EAAS,CAAA,EAAG,CAAA,EAAG,YAAY,UAAU,CAAA;AAE7D,IAAA,MAAM,QAAA,GAAW,SAAS,YAAY,CAAA,CAAA;AACtC,IAAA,OAAO,YAAA,CAAa,SAAA,CAAU,QAAA,EAAU,aAAa,CAAA;AAAA,EACtD,GAAG,CAAC,KAAA,EAAO,UAAA,EAAY,YAAA,EAAc,aAAa,CAAC,CAAA;AAEnD,EAAAE,UAAU,MAAM;AACf,IAAA,IAAI,CAAC,SAAA,CAAU,OAAA,IAAW,CAAC,KAAA,IAAS,CAAC,WAAA,EAAa;AAElD,IAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,IAAI,CAAA;AAClC,IAAA,IAAI,CAAC,GAAA,EAAK;AAEV,IAAA,MAAM,WAAA,GAAc,IAAA;AACpB,IAAA,MAAA,CAAO,KAAA,GAAQ,WAAA;AACf,IAAA,MAAA,CAAO,MAAA,GAAS,WAAA;AAEhB,IAAA,GAAA,CAAI,SAAA,CAAU,CAAA,EAAG,CAAA,EAAG,WAAA,EAAa,WAAW,CAAA;AAC5C,IAAA,GAAA,CAAI,SAAA,GAAY,SAAA;AAChB,IAAA,GAAA,CAAI,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,WAAA,EAAa,WAAW,CAAA;AAE3C,IAAA,GAAA,CAAI,IAAA,EAAK;AACT,IAAA,GAAA,CAAI,SAAA,CAAU,WAAA,GAAc,CAAA,EAAG,WAAA,GAAc,CAAC,CAAA;AAC9C,IAAA,GAAA,CAAI,MAAA,CAAQ,QAAA,GAAW,IAAA,CAAK,EAAA,GAAM,GAAG,CAAA;AAErC,IAAA,MAAM,KAAA,GAAQ,IAAA;AACd,IAAA,MAAM,SAAA,GAAY,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,MAAA;AACtC,IAAA,IAAI,SAAA,EAAW,UAAA;AAEf,IAAA,IAAI,YAAY,CAAA,EAAG;AAClB,MAAA,UAAA,GAAa,WAAA,GAAc,KAAA;AAC3B,MAAA,SAAA,GAAY,UAAA,GAAa,SAAA;AAAA,IAC1B,CAAA,MAAO;AACN,MAAA,SAAA,GAAY,WAAA,GAAc,KAAA;AAC1B,MAAA,UAAA,GAAa,SAAA,GAAY,SAAA;AAAA,IAC1B;AAEA,IAAA,GAAA,CAAI,SAAA;AAAA,MACH,KAAA;AAAA,MACA,CAAC,SAAA,GAAY,CAAA,GAAI,QAAA,CAAS,CAAA;AAAA,MAC1B,CAAC,UAAA,GAAa,CAAA,GAAI,QAAA,CAAS,CAAA;AAAA,MAC3B,SAAA;AAAA,MACA;AAAA,KACD;AACA,IAAA,GAAA,CAAI,OAAA,EAAQ;AAEZ,IAAA,GAAA,CAAI,wBAAA,GAA2B,gBAAA;AAC/B,IAAA,GAAA,CAAI,SAAA,EAAU;AACd,IAAA,GAAA,CAAI,GAAA;AAAA,MACH,WAAA,GAAc,CAAA;AAAA,MACd,WAAA,GAAc,CAAA;AAAA,MACd,cAAc,CAAA,GAAI,CAAA;AAAA,MAClB,CAAA;AAAA,MACA,KAAK,EAAA,GAAK;AAAA,KACX;AACA,IAAA,GAAA,CAAI,IAAA,EAAK;AAET,IAAA,GAAA,CAAI,wBAAA,GAA2B,aAAA;AAC/B,IAAA,GAAA,CAAI,WAAA,GAAc,qBAAA;AAClB,IAAA,GAAA,CAAI,SAAA,GAAY,CAAA;AAChB,IAAA,GAAA,CAAI,SAAA,EAAU;AACd,IAAA,GAAA,CAAI,GAAA;AAAA,MACH,WAAA,GAAc,CAAA;AAAA,MACd,WAAA,GAAc,CAAA;AAAA,MACd,cAAc,CAAA,GAAI,CAAA;AAAA,MAClB,CAAA;AAAA,MACA,KAAK,EAAA,GAAK;AAAA,KACX;AACA,IAAA,GAAA,CAAI,MAAA,EAAO;AAEX,IAAA,MAAM,UAAU,cAAA,EAAe;AAC/B,IAAA,IAAI,OAAA,EAAS;AACZ,MAAA,QAAA,GAAW,OAAO,CAAA;AAAA,IACnB;AAAA,EACD,CAAA,EAAG;AAAA,IACF,KAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACA,CAAA;AAED,EAAA,MAAM,eAAA,GAAkBF,YAAY,MAAM;AACzC,IAAA,OAAA,CAAQ,CAAC,CAAA;AACT,IAAA,WAAA,CAAY,CAAC,CAAA;AACb,IAAA,WAAA,CAAY,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC3C,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC/B,MAAA,IAAI,CAAC,IAAA,EAAM;AAEX,MAAA,MAAM,MAAA,GAAS,IAAI,UAAA,EAAW;AAC9B,MAAA,MAAA,CAAO,MAAA,GAAS,CAAC,KAAA,KAAU;AAC1B,QAAA,MAAM,GAAA,GAAM,IAAI,KAAA,EAAM;AACtB,QAAA,GAAA,CAAI,WAAA,GAAc,WAAA;AAClB,QAAA,GAAA,CAAI,SAAS,MAAM;AAClB,UAAA,QAAA,CAAS,GAAG,CAAA;AACZ,UAAA,cAAA,CAAe,IAAI,CAAA;AACnB,UAAA,eAAA,EAAgB;AAAA,QACjB,CAAA;AACA,QAAA,GAAA,CAAI,GAAA,GAAM,MAAM,MAAA,EAAQ,MAAA;AAAA,MACzB,CAAA;AACA,MAAA,MAAA,CAAO,cAAc,IAAI,CAAA;AAAA,IAC1B,CAAA;AAAA,IACA,CAAC,eAAe;AAAA,GACjB;AAEA,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACvB,CAAC,CAAA,KAAwB;AACxB,MAAA,IAAI,CAAC,WAAA,EAAa;AAClB,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,YAAA,CAAa,EAAE,CAAA,EAAG,CAAA,CAAE,OAAA,GAAU,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,OAAA,GAAU,QAAA,CAAS,CAAA,EAAG,CAAA;AAAA,IACtE,CAAA;AAAA,IACA,CAAC,aAAa,QAAQ;AAAA,GACvB;AAEA,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACvB,CAAC,CAAA,KAAwB;AACxB,MAAA,IAAI,CAAC,UAAA,EAAY;AACjB,MAAA,WAAA,CAAY;AAAA,QACX,CAAA,EAAG,CAAA,CAAE,OAAA,GAAU,SAAA,CAAU,CAAA;AAAA,QACzB,CAAA,EAAG,CAAA,CAAE,OAAA,GAAU,SAAA,CAAU;AAAA,OACzB,CAAA;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY,SAAS;AAAA,GACvB;AAEA,EAAA,MAAM,aAAA,GAAgBA,YAAY,MAAM;AACvC,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACxB,CAAC,CAAA,KAAwB;AACxB,MAAA,IAAI,CAAC,WAAA,EAAa;AAClB,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AACzB,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,YAAA,CAAa;AAAA,QACZ,CAAA,EAAG,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA;AAAA,QAC5B,CAAA,EAAG,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS;AAAA,OAC5B,CAAA;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAa,QAAQ;AAAA,GACvB;AAEA,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACvB,CAAC,CAAA,KAAwB;AACxB,MAAA,IAAI,CAAC,UAAA,EAAY;AACjB,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AACzB,MAAA,WAAA,CAAY;AAAA,QACX,CAAA,EAAG,KAAA,CAAM,OAAA,GAAU,SAAA,CAAU,CAAA;AAAA,QAC7B,CAAA,EAAG,KAAA,CAAM,OAAA,GAAU,SAAA,CAAU;AAAA,OAC7B,CAAA;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY,SAAS;AAAA,GACvB;AAEA,EAAA,MAAM,aAAA,GAAgBA,YAAY,MAAM;AACvC,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,cAAA,CAAe,KAAK,CAAA;AACpB,IAAA,eAAA,EAAgB;AAChB,IAAA,IAAI,aAAa,OAAA,EAAS;AACzB,MAAA,YAAA,CAAa,QAAQ,KAAA,GAAQ,EAAA;AAAA,IAC9B;AACA,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EAChB,CAAA,EAAG,CAAC,eAAA,EAAiB,QAAQ,CAAC,CAAA;AAE9B,EAAA,MAAM,YAAA,GAAe,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,KAAK,GAAA,CAAI,CAAA,GAAI,GAAA,EAAK,CAAC,CAAC,CAAA;AAC9D,EAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,KAAK,GAAA,CAAI,CAAA,GAAI,GAAA,EAAK,GAAG,CAAC,CAAA;AACjE,EAAA,MAAM,mBAAmB,MAAM,WAAA,CAAY,CAACG,EAAAA,KAAMA,KAAI,EAAE,CAAA;AACxD,EAAA,MAAM,oBAAoB,MAAM,WAAA,CAAY,CAACA,EAAAA,KAAMA,KAAI,EAAE,CAAA;AAEzD,EAAA,MAAM,UAAU,WAAA,KAAgB,OAAA;AAChC,EAAA,MAAM,UAAA,GAAa,UAAU,WAAA,GAAc,SAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,UAAU,SAAA,GAAY,SAAA;AACvC,EAAA,MAAM,aAAA,GAAgB,UAAU,SAAA,GAAY,SAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,UAAU,SAAA,GAAY,SAAA;AACvC,EAAA,MAAM,cAAA,GAAiB,UAAU,WAAA,GAAc,SAAA;AAC/C,EAAA,MAAM,mBAAA,GAAsB,UAAU,WAAA,GAAc,WAAA;AACpD,EAAA,MAAM,OAAA,GAAU,UAAU,OAAA,GAAU,OAAA;AACpC,EAAA,MAAM,UAAA,GAAa,UAAU,OAAA,GAAU,OAAA;AACvC,EAAA,MAAM,YAAA,GAAe,UAClB,6CAAA,GACA,EAAA;AAEH,EAAA,uBACCX,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,OAAA,EAAS,SAAS,CAAA;AAAA,MACjD,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,MAGrB,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,GAAA,EAAK,YAAA;AAAA,YACL,SAAA,EAAU,+CAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,YAGlC,QAAA,EAAA;AAAA,cAAA,CAAC,+BACDA,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACA,OAAA,EAAS,MAAM,YAAA,CAAa,OAAA,EAAS,KAAA,EAAM;AAAA,kBAC3C,SAAA,EAAW,EAAA;AAAA,oBACV,gKAAA;AAAA,oBACA,UAAU,OAAA,GAAU;AAAA,mBACrB;AAAA,kBACA,YAAA,EAAW,cAAA;AAAA,kBACX,IAAA,EAAK,QAAA;AAAA,kBAEL,QAAA,EAAA;AAAA,oCAAAD,GAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACA,SAAA,EAAW,EAAA;AAAA,0BACV,6DAAA;AAAA,0BACA;AAAA,yBACD;AAAA,wBAEA,0BAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,WAAW,EAAA,CAAG,cAAA,EAAgB,cAAc,CAAA,EAAG;AAAA;AAAA,qBACxD;AAAA,oCACAA,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACA,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,OAAA,GAAU,cAAc,SAAS,CAAA;AAAA,wBAC9D,QAAA,EAAA;AAAA;AAAA,qBAED;AAAA,oCACAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,uBAAA,EAAyB,QAAQ,GAAG,QAAA,EAAA,qBAAA,EAExD;AAAA;AAAA;AAAA,eACD;AAAA,8BAIDA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACA,GAAA,EAAK,SAAA;AAAA,kBACL,SAAA,EAAW,EAAA;AAAA,oBACV,kBAAA;AAAA,oBACA,cAAc,aAAA,GAAgB;AAAA,mBAC/B;AAAA,kBACA,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,kBACnC,WAAA,EAAa,eAAA;AAAA,kBACb,WAAA,EAAa,eAAA;AAAA,kBACb,SAAA,EAAW,aAAA;AAAA,kBACX,YAAA,EAAc,aAAA;AAAA,kBACd,YAAA,EAAc,gBAAA;AAAA,kBACd,WAAA,EAAa,eAAA;AAAA,kBACb,UAAA,EAAY;AAAA;AAAA,eACb;AAAA,cAGC,QAAA,IAAY,+BACZA,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAU,sCAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,kBAEnC,QAAA,kBAAAC,KAAC,KAAA,EAAA,EAAI,KAAA,EAAO,MAAM,MAAA,EAAQ,IAAA,EAAM,WAAU,YAAA,EACzC,QAAA,EAAA;AAAA,oCAAAD,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACA,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,EAAA,EAAI,CAAA;AAAA,wBACJ,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,EAAA,EAAI,IAAA;AAAA,wBACJ,MAAA,EAAO,OAAA;AAAA,wBACP,WAAA,EAAY;AAAA;AAAA,qBACb;AAAA,oCACAA,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACA,EAAA,EAAK,OAAO,CAAA,GAAK,CAAA;AAAA,wBACjB,EAAA,EAAI,CAAA;AAAA,wBACJ,EAAA,EAAK,OAAO,CAAA,GAAK,CAAA;AAAA,wBACjB,EAAA,EAAI,IAAA;AAAA,wBACJ,MAAA,EAAO,OAAA;AAAA,wBACP,WAAA,EAAY;AAAA;AAAA,qBACb;AAAA,oCACAA,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACA,EAAA,EAAI,CAAA;AAAA,wBACJ,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,EAAA,EAAI,IAAA;AAAA,wBACJ,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,MAAA,EAAO,OAAA;AAAA,wBACP,WAAA,EAAY;AAAA;AAAA,qBACb;AAAA,oCACAA,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACA,EAAA,EAAI,CAAA;AAAA,wBACJ,EAAA,EAAK,OAAO,CAAA,GAAK,CAAA;AAAA,wBACjB,EAAA,EAAI,IAAA;AAAA,wBACJ,EAAA,EAAK,OAAO,CAAA,GAAK,CAAA;AAAA,wBACjB,MAAA,EAAO,OAAA;AAAA,wBACP,WAAA,EAAY;AAAA;AAAA,qBACb;AAAA,oCACAA,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACA,EAAA,EAAI,OAAO,CAAA,GAAI,EAAA;AAAA,wBACf,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,EAAA,EAAI,OAAO,CAAA,GAAI,EAAA;AAAA,wBACf,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,MAAA,EAAO,OAAA;AAAA,wBACP,WAAA,EAAY;AAAA;AAAA,qBACb;AAAA,oCACAA,GAAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACA,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,EAAA,EAAI,OAAO,CAAA,GAAI,EAAA;AAAA,wBACf,IAAI,IAAA,GAAO,CAAA;AAAA,wBACX,EAAA,EAAI,OAAO,CAAA,GAAI,EAAA;AAAA,wBACf,MAAA,EAAO,OAAA;AAAA,wBACP,WAAA,EAAY;AAAA;AAAA;AACb,mBAAA,EACD;AAAA;AAAA,eACD;AAAA,cAIA,WAAA,IAAe,8BACfC,IAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAW,EAAA;AAAA,oBACV,2FAAA;AAAA,oBACA,UAAU,yBAAA,GAA4B;AAAA,mBACvC;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAD,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,aAAA,EAAe,CAAA;AAAA,oBAAE;AAAA;AAAA;AAAA;AAEnC;AAAA;AAAA,SAEF;AAAA,QAGC,WAAA,oBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,OAAA,IAAW,WAAW,CAAA,EAErD,QAAA,EAAA;AAAA,0BAAAA,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,UAAU,CAAA,EACjD,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,OAAA,EAAQ,OAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,UAAU,CAAA;AAAA,gBACpC,OAAA,EAAS,aAAA;AAAA,gBACT,YAAA,EAAW,UAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBAEL,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,QAAA,EAAU;AAAA;AAAA,aAC/B;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,KAAA,EAAO,CAAC,IAAI,CAAA;AAAA,gBACZ,eAAe,CAAC,CAAC,CAAC,CAAA,KAAM,QAAQ,CAAC,CAAA;AAAA,gBACjC,GAAA,EAAK,GAAA;AAAA,gBACL,GAAA,EAAK,CAAA;AAAA,gBACL,IAAA,EAAM,IAAA;AAAA,gBACN,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,YAAY,CAAA;AAAA,gBACpC,YAAA,EAAW;AAAA;AAAA,aACZ;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,OAAA,EAAQ,OAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,UAAU,CAAA;AAAA,gBACpC,OAAA,EAAS,YAAA;AAAA,gBACT,YAAA,EAAW,SAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBAEL,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAW,QAAA,EAAU;AAAA;AAAA;AAC9B,WAAA,EACD,CAAA;AAAA,0BAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,mCAAA,EAAqC,UAAU,CAAA,EACjE,QAAA,EAAA;AAAA,4BAAAA,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,OAAA,GAAU,UAAU,OAAO,CAAA;AAAA,gBAE9D,QAAA,EAAA;AAAA,kCAAAD,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACA,OAAA,EAAQ,OAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,SAAA,EAAW,UAAA;AAAA,sBACX,OAAA,EAAS,gBAAA;AAAA,sBACT,YAAA,EAAW,wBAAA;AAAA,sBACX,IAAA,EAAK,QAAA;AAAA,sBAEL,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAW,QAAA,EAAU;AAAA;AAAA,mBACjC;AAAA,kCACAC,IAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACA,SAAA,EAAW,EAAA;AAAA,wBACV,gDAAA;AAAA,wBACA,QAAA;AAAA,wBACA,UAAU,MAAA,GAAS;AAAA,uBACpB;AAAA,sBAEC,QAAA,EAAA;AAAA,wBAAA,QAAA;AAAA,wBAAS;AAAA;AAAA;AAAA,mBACX;AAAA,kCACAD,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACA,OAAA,EAAQ,OAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,SAAA,EAAW,UAAA;AAAA,sBACX,OAAA,EAAS,iBAAA;AAAA,sBACT,YAAA,EAAW,yBAAA;AAAA,sBACX,IAAA,EAAK,QAAA;AAAA,sBAEL,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,QAAA,EAAU;AAAA;AAAA;AAChC;AAAA;AAAA,aACD;AAAA,4BAEAC,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,OAAA,GAAU,UAAU,OAAO,CAAA;AAAA,gBAE9D,QAAA,EAAA;AAAA,kCAAAD,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACA,OAAA,EAAS,QAAA;AAAA,sBACT,eAAA,EAAiB,WAAA;AAAA,sBACjB,IAAA,EAAK,IAAA;AAAA,sBACL,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,KAAK,CAAA;AAAA,sBAC/B,YAAA,EAAW,qBAAA;AAAA,sBAEX,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,QAAA,EAAU;AAAA;AAAA,mBAC/B;AAAA,kCACAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACA,OAAA,EAAQ,OAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,SAAA,EAAW,UAAA;AAAA,sBACX,OAAA,EAAS,eAAA;AAAA,sBACT,YAAA,EAAW,sBAAA;AAAA,sBACX,IAAA,EAAK,QAAA;AAAA,sBAEL,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAW,QAAA,EAAU;AAAA;AAAA,mBACjC;AAAA,kCACAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACA,OAAA,EAAQ,OAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,SAAA,EAAW,UAAA;AAAA,sBACX,OAAA,EAAS,MAAM,YAAA,CAAa,OAAA,EAAS,KAAA,EAAM;AAAA,sBAC3C,YAAA,EAAW,kBAAA;AAAA,sBACX,IAAA,EAAK,QAAA;AAAA,sBAEL,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAW,QAAA,EAAU;AAAA;AAAA,mBAC9B;AAAA,kCAEAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACA,OAAA,EAAQ,OAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,SAAA,EAAW,EAAA;AAAA,wBACV,UAAA;AAAA,wBACA;AAAA,uBACD;AAAA,sBACA,OAAA,EAAS,aAAA;AAAA,sBACT,YAAA,EAAW,eAAA;AAAA,sBACX,IAAA,EAAK,QAAA;AAAA,sBAEL,QAAA,kBAAAA,GAAAA,CAACa,CAAAA,EAAA,EAAE,WAAW,QAAA,EAAU;AAAA;AAAA;AACzB;AAAA;AAAA;AACD,WAAA,EACD;AAAA,SAAA,EACD,CAAA;AAAA,wBAIDb,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,GAAA,EAAK,YAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,gBAAA;AAAA,YACV,SAAA,EAAU,QAAA;AAAA,YACV,aAAA,EAAY;AAAA;AAAA;AACb;AAAA;AAAA,GACD;AAEF;ACxjBA,SAAS,MAAA,CAAO;AAAA,EACf,GAAG;AACJ,CAAA,EAAsD;AACrD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC5D;AAEA,SAAS,aAAA,CAAc;AAAA,EACtB,GAAG;AACJ,CAAA,EAAyD;AACxD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,OAAA,EAAhB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACvE;AAEA,SAAS,YAAA,CAAa;AAAA,EACrB,GAAG;AACJ,CAAA,EAAwD;AACvD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EAAuB,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACrE;AAEA,SAAS,WAAA,CAAY;AAAA,EACpB,GAAG;AACJ,CAAA,EAAuD;AACtD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACnE;AAEA,SAAS,aAAA,CAAc;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAyD;AACxD,EAAA,uBACCA,GAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,wJAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,aAAA,CAAc;AAAA,EACtB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,GAAG;AACJ,CAAA,EAEG;AACF,EAAA,uBACCC,IAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAU,eAAA,EACvB,QAAA,EAAA;AAAA,oBAAAD,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,oBACfC,IAAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACA,WAAA,EAAU,gBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACV,0XAAA;AAAA,UACA;AAAA,SACD;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,mCACAA,IAAAA;AAAA,YAAiB,eAAA,CAAA,KAAA;AAAA,YAAhB;AAAA,cACA,WAAA,EAAU,cAAA;AAAA,cACV,SAAA,EAAU,mWAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,IAAC,KAAA,EAAA,EAAM,CAAA;AAAA,gCACPA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAChC;AAAA;AAAA;AAEF,GAAA,EACD,CAAA;AAEF;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,8CAAA,EAAgD,SAAS,CAAA;AAAA,MACtE,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,wDAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,WAAA,CAAY;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAuD;AACtD,EAAA,uBACCA,GAAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,iBAAA,CAAkB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA6D;AAC5D,EAAA,uBACCA,GAAAA;AAAA,IAAiB,eAAA,CAAA,WAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACL;AAEF;AC1HA,SAAS,MAAA,CAAO;AAAA,EACf,GAAG;AACJ,CAAA,EAAsD;AACrD,EAAA,uBAAOA,IAACc,QAAA,CAAgB,IAAA,EAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC5D;AAEA,SAAS,aAAA,CAAc;AAAA,EACtB,GAAG;AACJ,CAAA,EAAyD;AACxD,EAAA,uBAAOd,IAACc,QAAA,CAAgB,OAAA,EAAhB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACvE;AAEA,SAAS,YAAA,CAAa;AAAA,EACrB,GAAG;AACJ,CAAA,EAAwD;AACvD,EAAA,uBAAOd,IAACc,QAAA,CAAgB,MAAA,EAAhB,EAAuB,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACrE;AAEA,SAAS,WAAA,CAAY;AAAA,EACpB,GAAG;AACJ,CAAA,EAAuD;AACtD,EAAA,uBAAOd,IAACc,QAAA,CAAgB,KAAA,EAAhB,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACnE;AAEA,SAAS,aAAA,CAAc;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAyD;AACxD,EAAA,uBACCd,GAAAA;AAAA,IAACc,QAAA,CAAgB,OAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,wJAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,aAAA,CAAc;AAAA,EACtB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAyD;AACxD,EAAA,uBACCb,IAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAU,eAAA,EACvB,QAAA,EAAA;AAAA,oBAAAD,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,oBACfC,IAAAA;AAAA,MAACa,QAAA,CAAgB,OAAA;AAAA,MAAhB;AAAA,QACA,WAAA,EAAU,gBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACV,oEAAA;AAAA,UACA,gQAAA;AAAA,UACA,qRAAA;AAAA,UACA,6NAAA;AAAA,UACA,uNAAA;AAAA,UACA;AAAA,SACD;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAd,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iIAAA,EAAkI,CAAA;AAAA,UAChJ;AAAA;AAAA;AAAA;AACF,GAAA,EACD,CAAA;AAEF;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACV,0LAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,SAAS,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,WAAA,CAAY;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAAuD;AACtD,EAAA,uBACCA,GAAAA;AAAA,IAACc,QAAA,CAAgB,KAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,iBAAA,CAAkB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA6D;AAC5D,EAAA,uBACCd,GAAAA;AAAA,IAACc,QAAA,CAAgB,WAAA;AAAA,IAAhB;AAAA,MACA,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACL;AAEF;ACvCA,SAAS,cAAc,KAAA,EAAwB;AAC9C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIN,SAAS,KAAK,CAAA;AAE5C,EAAAG,UAAU,MAAM;AACf,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AACrC,IAAA,IAAI,KAAA,CAAM,YAAY,OAAA,EAAS;AAC9B,MAAA,UAAA,CAAW,MAAM,OAAO,CAAA;AAAA,IACzB;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAC/C,IAAA,KAAA,CAAM,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AACzC,IAAA,OAAO,MAAM,KAAA,CAAM,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,EAC1D,CAAA,EAAG,CAAC,OAAA,EAAS,KAAK,CAAC,CAAA;AAEnB,EAAA,OAAO,OAAA;AACR;AAEO,SAAS,kBAAA,CAAmB;AAAA,EAClC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,GAAc,GAAA;AAAA,EACd,UAAA,GAAa,GAAA;AAAA,EACb,UAAA,GAAa,GAAA;AAAA,EACb,WAAA,GAAc,WAAA;AAAA,EACd,SAAA,GAAY,aAAA;AAAA,EACZ,WAAA,GAAc,aAAA;AAAA,EACd,UAAA,GAAa,QAAA;AAAA,EACb,UAAA,GAAa,QAAA;AAAA,EACb,cAAA,GAAiB,4BAAA;AAAA,EACjB,YAAA,GAAe,0CAAA;AAAA,EACf;AACD,CAAA,EAA4B;AAC3B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIH,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,QAAAA,CAAwB,SAAS,IAAI,CAAA;AAC3E,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAGtB,IAAI,CAAA;AAEd,EAAA,MAAM,QAAA,GAAW,cAAc,oBAAoB,CAAA;AACnD,EAAA,MAAM,OAAA,GAAA,CAAW,WAAA,IAAe,EAAA,EAAI,IAAA,EAAK;AAGzC,EAAA,MAAM,gBAAA,GAAmBC,WAAAA;AAAA,IACxB,CAAC,IAAA,KAAkB;AAClB,MAAA,IAAI,IAAA,EAAM;AACT,QAAA,cAAA,CAAe,SAAS,IAAI,CAAA;AAC5B,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MACjB;AACA,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACP;AAGA,EAAA,MAAM,YAAA,GAAeA,YAAY,YAAY;AAC5C,IAAA,IAAI,CAAC,WAAA,EAAa;AAElB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,WAAA,CAAY,IAAI,CAAA;AAEhB,IAAA,IAAI;AACH,MAAA,IAAI,MAAA,EAAQ;AACX,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,WAAW,CAAA;AACvC,QAAA,IAAI,MAAA,EAAQ;AACX,UAAA,QAAA,GAAW,WAAW,CAAA;AACtB,UAAA,WAAA,CAAY,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,gBAAgB,CAAA;AACxD,UAAA,UAAA,CAAW,MAAM;AAChB,YAAA,SAAA,CAAU,KAAK,CAAA;AACf,YAAA,WAAA,CAAY,IAAI,CAAA;AAAA,UACjB,GAAG,IAAI,CAAA;AAAA,QACR,CAAA,MAAO;AACN,UAAA,WAAA,CAAY,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,cAAc,CAAA;AAAA,QACrD;AAAA,MACD,CAAA,MAAO;AACN,QAAA,QAAA,GAAW,WAAW,CAAA;AACtB,QAAA,WAAA,CAAY,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,gBAAgB,CAAA;AACxD,QAAA,UAAA,CAAW,MAAM;AAChB,UAAA,SAAA,CAAU,KAAK,CAAA;AACf,UAAA,WAAA,CAAY,IAAI,CAAA;AAAA,QACjB,GAAG,IAAI,CAAA;AAAA,MACR;AAAA,IACD,CAAA,CAAA,MAAQ;AACP,MAAA,WAAA,CAAY,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,cAAc,CAAA;AAAA,IACrD,CAAA,SAAE;AACD,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IAClB;AAAA,EACD,GAAG,CAAC,WAAA,EAAa,UAAU,MAAA,EAAQ,cAAA,EAAgB,YAAY,CAAC,CAAA;AAGhE,EAAA,MAAM,gCACLR,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,MACzC,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAa,QAAQ,WAAA,EAAY;AAAA,MAGjD,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,6GAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAa,QAAQ,WAAA,EAAY;AAAA,YAEhD,kCACAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,KAAK,KAAA,IAAS,kBAAA;AAAA,gBACd,GAAA,EAAI,QAAA;AAAA,gBACJ,SAAA,EAAU;AAAA;AAAA,gCAGXC,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,SAAA,EAAW,EAAA;AAAA,kBACV,iEAAA;AAAA,kBACA,UAAU,OAAA,GAAU;AAAA,iBACrB;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAD,GAAAA;AAAA,oBAAC,IAAA;AAAA,oBAAA;AAAA,sBACA,SAAA,EAAU,8CAAA;AAAA,sBACV,aAAA,EAAW;AAAA;AAAA,mBACZ;AAAA,kBACC,0BACAA,GAAAA,CAAC,UAAK,SAAA,EAAU,0BAAA,EAA4B,mBAAQ,CAAA,GACjD;AAAA;AAAA;AAAA;AACL;AAAA,SAEF;AAAA,wBAGAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACA,OAAA,EAAS,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,YACpC,SAAA,EAAU,2OAAA;AAAA,YACV,YAAA,EAAY,SAAA;AAAA,YACZ,IAAA,EAAK,QAAA;AAAA,YAEL,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAC7B;AAAA;AAAA,GACD;AAGD,EAAA,MAAM,gBAAA,GAAmB,WACtB,IAAA,CAAK,GAAA,CAAI,aAAa,EAAA,EAAI,MAAA,CAAO,UAAA,GAAa,EAAE,CAAA,GAChD,UAAA;AAGH,EAAA,MAAM,aAAA,mBACLC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kCAAA,EACd,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACA,KAAA,EAAO,WAAA;AAAA,QACP,QAAA,EAAU,cAAA;AAAA,QACV,IAAA,EAAM,gBAAA;AAAA,QACN,UAAA;AAAA,QACA,WAAA,EAAa,WAAW,OAAA,GAAU;AAAA;AAAA,KACnC;AAAA,oBAGAA,GAAAA,CAACM,eAAAA,EAAA,EACC,sCACAL,IAAAA;AAAA,MAACM,MAAAA,CAAO,GAAA;AAAA,MAAP;AAAA,QACA,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,GAAA,EAAI;AAAA,QAC9B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,GAAA,EAAI;AAAA,QAC3B,SAAA,EAAW,EAAA;AAAA,UACV,gDAAA;AAAA,UACA,WAAW,qBAAA,GAAwB,mBAAA;AAAA,UACnC,QAAA,CAAS,IAAA,KAAS,SAAA,GACf,sEAAA,GACA;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA,CAAS,SAAS,SAAA,mBAClBP,IAACe,KAAAA,EAAA,EAAM,WAAW,QAAA,GAAW,SAAA,GAAY,SAAA,EAAW,CAAA,mBAEpDf,GAAAA,CAACa,CAAAA,EAAA,EAAE,SAAA,EAAW,QAAA,GAAW,YAAY,SAAA,EAAW,CAAA;AAAA,UAEhD,QAAA,CAAS;AAAA;AAAA;AAAA,KACX,EAEF;AAAA,GAAA,EACD,CAAA;AAID,EAAA,MAAM,aAAA,mBACLZ,IAAAA,CAAAe,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,QAAA,mBACAhB,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAO,MACnB,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAQ,SAAA;AAAA,QACR,QAAA,EAAU,QAAA;AAAA,QACV,IAAA,EAAK,IAAA;AAAA,QACL,SAAA,EAAU,uBAAA;AAAA,QAET,QAAA,EAAA;AAAA;AAAA,KACF,EACD,CAAA,mBAEAA,GAAAA,CAAC,eAAY,OAAA,EAAO,IAAA,EACnB,QAAA,kBAAAA,GAAAA,CAAC,UAAO,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAU,QAAA,EAClC,sBACF,CAAA,EACD,CAAA;AAAA,oBAEDA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAS,YAAA;AAAA,QACT,QAAA,EAAU,CAAC,WAAA,IAAe,QAAA,IAAY,UAAU,IAAA,KAAS,SAAA;AAAA,QACzD,IAAA,EAAM,WAAW,IAAA,GAAO,SAAA;AAAA,QACxB,SAAA,EAAW,WAAW,QAAA,GAAW,EAAA;AAAA,QAEhC,QAAA,EAAA,QAAA,mBACAC,IAAAA,CAAAe,QAAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAhB,GAAAA;AAAA,YAACiB,OAAAA;AAAA,YAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACV,mBAAA;AAAA,gBACA,WAAW,SAAA,GAAY;AAAA;AACxB;AAAA,WACD;AAAA,UAAE;AAAA,SAAA,EAEH,IACG,QAAA,EAAU,IAAA,KAAS,4BACtBhB,IAAAA,CAAAe,UAAA,EACC,QAAA,EAAA;AAAA,0BAAAhB,GAAAA,CAACe,OAAA,EAAM,SAAA,EAAW,GAAG,MAAA,EAAQ,QAAA,GAAW,SAAA,GAAY,SAAS,CAAA,EAAG,CAAA;AAAA,UAAE;AAAA,SAAA,EAEnE,CAAA,GAEA;AAAA;AAAA;AAEF,GAAA,EACD,CAAA;AAID,EAAA,IAAI,QAAA,EAAU;AACb,IAAA,uBACCd,IAAAA,CAAAe,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,aAAA;AAAA,sBACDhB,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAc,gBAAA,EACnC,QAAA,kBAAAC,IAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,cAAA,EACxB,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,aAAA,EACvB,QAAA,kBAAAA,IAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,WAAA,EAAY,CAAA,EAC/C,CAAA;AAAA,wBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAA6B,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,wBAC1DA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,4BACtB,QAAA,EAAA,aAAA,EACF;AAAA,OAAA,EACD,CAAA,EACD;AAAA,KAAA,EACD,CAAA;AAAA,EAEF;AAGA,EAAA,uBACCC,IAAAA,CAAAe,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,aAAA;AAAA,oBACDhB,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAc,gBAAA,EACnC,QAAA,kBAAAC,IAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,aAAA,EACxB,QAAA,EAAA;AAAA,sBAAAD,IAAC,YAAA,EAAA,EACA,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAa,uBAAY,CAAA,EAC3B,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAA4B,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,sBACzDA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,YAAY,QAAA,EAAA,aAAA,EAAc;AAAA,KAAA,EACnD,CAAA,EACD;AAAA,GAAA,EACD,CAAA;AAEF;AClVA,SAAS,OAAA,CAAQ;AAAA,EAChB,GAAG;AACJ,CAAA,EAAuD;AACtD,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC9D;AAEA,SAAS,cAAA,CAAe;AAAA,EACvB,GAAG;AACJ,CAAA,EAA0D;AACzD,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AACzE;AAEA,SAAS,cAAA,CAAe;AAAA,EACvB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACJ,CAAA,EAA0D;AACzD,EAAA,uBACCA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACA,QAAA,kBAAAA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACA,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,geAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG;AAAA;AAAA,GACL,EACD,CAAA;AAEF;AAEA,SAAS,aAAA,CAAc;AAAA,EACtB,GAAG;AACJ,CAAA,EAAyD;AACxD,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACvE;ACuEA,IAAM,UAAA,GAAa;AAAA,EAClB,EAAA,EAAI;AAAA,IACH,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,8CAAA;AAAA,IACP,GAAA,EAAK;AAAA,GACN;AAAA,EACA,EAAA,EAAI;AAAA,IACH,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,mDAAA;AAAA,IACP,GAAA,EAAK;AAAA,GACN;AAAA,EACA,EAAA,EAAI;AAAA,IACH,MAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,8CAAA;AAAA,IACP,GAAA,EAAK;AAAA;AAEP,CAAA;AAEA,IAAM,UAAA,GAGF;AAAA,EACH,IAAA,EAAM;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO,eAAA;AAAA,IACP,EAAA,EAAI;AAAA,GACL;AAAA,EACA,OAAA,EAAS;AAAA,IACR,IAAA,EAAM,WAAA;AAAA,IACN,KAAA,EAAO,gBAAA;AAAA,IACP,EAAA,EAAI;AAAA,GACL;AAAA,EACA,OAAA,EAAS;AAAA,IACR,IAAA,EAAMkB,aAAAA;AAAA,IACN,KAAA,EAAO,gBAAA;AAAA,IACP,EAAA,EAAI;AAAA,GACL;AAAA,EACA,KAAA,EAAO;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,EAAA,EAAI;AAAA;AAEN,CAAA;AAEA,IAAM,cAAA,GAA2C;AAAA,EAChD,GAAA,EAAK,YAAA;AAAA,EACL,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO,cAAA;AAAA,EACP,KAAA,EAAO,cAAA;AAAA,EACP,MAAA,EAAQ,eAAA;AAAA,EACR,OAAA,EAAS;AACV,CAAA;AAEA,IAAM,WAAA,GAGF;AAAA,EACH,KAAA,EAAO;AAAA,IACN,WAAA,EAAa,CAAC,GAAA,EAAK,IAAI,CAAA;AAAA,IACvB,SAAA,EAAW,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,IACpB,IAAA,EAAM;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACL,WAAA,EAAa,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAAA,IAC3B,SAAA,EAAW,CAAC,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA;AAAA,IAC3B,IAAA,EAAM;AAAA,GACP;AAAA,EACA,GAAA,EAAK;AAAA,IACJ,WAAA,EAAa,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,IACtB,SAAA,EAAW,CAAC,IAAA,EAAM,IAAI,CAAA;AAAA,IACtB,IAAA,EAAM;AAAA,GACP;AAAA,EACA,IAAA,EAAM;AAAA,IACL,WAAA,EAAa,CAAC,IAAI,CAAA;AAAA,IAClB,SAAA,EAAW,CAAC,IAAI,CAAA;AAAA,IAChB,IAAA,EAAM;AAAA;AAER,CAAA;AAEA,IAAM,aAAA,GAGF;AAAA,EACH,IAAA,EAAM;AAAA,IACL,OAAA,EAAS,EAAE,KAAA,EAAO,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG,OAAA,EAAS,CAAC,GAAA,EAAK,CAAC,CAAA,EAAE;AAAA,IAC9C,UAAA,EAAY;AAAA,MACX,QAAA,EAAU,GAAA;AAAA,MACV,QAAQ,MAAA,CAAO,iBAAA;AAAA,MACf,IAAA,EAAM;AAAA;AACP,GACD;AAAA,EACA,IAAA,EAAM;AAAA,IACL,OAAA,EAAS,EAAE,KAAA,EAAO,CAAC,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA,EAAG,OAAA,EAAS,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA,EAAE;AAAA,IACxD,UAAA,EAAY;AAAA,MACX,QAAA,EAAU,GAAA;AAAA,MACV,QAAQ,MAAA,CAAO,iBAAA;AAAA,MACf,IAAA,EAAM;AAAA;AACP,GACD;AAAA,EACA,MAAA,EAAQ;AAAA,IACP,OAAA,EAAS,EAAE,KAAA,EAAO,CAAC,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG,EAAA,EAAI,CAAC,CAAA,EAAE;AAAA,IAC7C,UAAA,EAAY;AAAA,MACX,QAAA,EAAU,GAAA;AAAA,MACV,QAAQ,MAAA,CAAO,iBAAA;AAAA,MACf,IAAA,EAAM;AAAA;AACP;AAEF,CAAA;AAEA,SAAS,cAAc,IAAA,EAAoB;AAC1C,EAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,EAAQ,GAAI,KAAK,OAAA,EAAQ;AAC5C,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAI,CAAA;AACzC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,EAAE,CAAA;AACzC,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,EAAE,CAAA;AAC1C,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,EAAE,CAAA;AAE1C,EAAA,IAAI,QAAA,GAAW,IAAI,OAAO,UAAA;AAC1B,EAAA,IAAI,QAAA,GAAW,EAAA,EAAI,OAAO,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAA;AACrC,EAAA,IAAI,SAAA,GAAY,EAAA,EAAI,OAAO,CAAA,EAAG,SAAS,CAAA,KAAA,CAAA;AACvC,EAAA,IAAI,QAAA,GAAW,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAA;AACpC,EAAA,OAAO,KAAK,kBAAA,EAAmB;AAChC;AAGA,SAAS,qBAAA,CACR,SAAA,GAAuB,OAAA,EACvB,QAAA,EACC;AACD,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,SAAA,KAAc,MAAA,EAAQ;AAE3D,EAAA,IAAI,QAAA,EAAU;AACb,IAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,QAAQ,CAAA;AAChC,IAAA,KAAA,CAAM,MAAA,GAAS,GAAA;AACf,IAAA,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM;AAAA,IAAC,CAAC,CAAA;AAC3B,IAAA;AAAA,EACD;AAEA,EAAA,MAAM,MAAA,GAAS,YAAY,SAAS,CAAA;AACpC,EAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,EAAA,IAAI;AACH,IAAA,MAAM,YAAA,GAAe,KACpB,MAAA,CAAO,YAAA,IACN,OACC,kBAAA,GACD;AAEF,IAAA,IAAI,cAAc,YAAA,CAAa,WAAA;AAE/B,IAAA,MAAA,CAAO,WAAA,CAAY,OAAA,CAAQ,CAAC,IAAA,EAAM,CAAA,KAAM;AACvC,MAAA,MAAM,UAAA,GAAa,aAAa,gBAAA,EAAiB;AACjD,MAAA,MAAM,QAAA,GAAW,aAAa,UAAA,EAAW;AAEzC,MAAA,UAAA,CAAW,QAAQ,QAAQ,CAAA;AAC3B,MAAA,QAAA,CAAS,OAAA,CAAQ,aAAa,WAAW,CAAA;AAEzC,MAAA,UAAA,CAAW,SAAA,CAAU,cAAA,CAAe,IAAA,EAAM,WAAW,CAAA;AACrD,MAAA,QAAA,CAAS,IAAA,CAAK,cAAA,CAAe,MAAA,CAAO,IAAA,EAAM,WAAW,CAAA;AACrD,MAAA,QAAA,CAAS,IAAA,CAAK,4BAAA;AAAA,QACb,IAAA;AAAA,QACA,WAAA,GAAc,MAAA,CAAO,SAAA,CAAU,CAAC;AAAA,OACjC;AAEA,MAAA,UAAA,CAAW,MAAM,WAAW,CAAA;AAC5B,MAAA,UAAA,CAAW,IAAA,CAAK,WAAA,GAAc,MAAA,CAAO,SAAA,CAAU,CAAC,CAAC,CAAA;AAEjD,MAAA,WAAA,IAAe,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,GAAI,GAAA;AAAA,IACtC,CAAC,CAAA;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACD;AAEO,SAAS,mBAAA,CAAoB;AAAA,EACnC,aAAA,EAAe,iBAAA;AAAA,EACf,YAAA,EAAc,gBAAA;AAAA,EACd,eAAA,EAAiB,mBAAA;AAAA,EACjB,SAAA,EAAW,aAAA;AAAA,EACX,UAAA,EAAY,cAAA;AAAA,EACZ,mBAAA,EAAqB,uBAAA;AAAA,EACrB,IAAA,GAAO,IAAA;AAAA,EACP,UAAA,GAAa,CAAA;AAAA,EACb,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,kBAAA;AAAA,EACf,KAAA,GAAQ,eAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,IAAA;AAAA,EACZ,SAAA,GAAY,OAAA;AAAA,EACZ,UAAA,GAAa,MAAA;AAAA,EACb,aAAA,GAAgB,GAAA;AAAA,EAChB,aAAA,GAAgB,SAAA;AAAA,EAChB,WAAA;AAAA,EACA,YAAA,GAAe;AAChB,CAAA,EAA6B;AAE5B,EAAA,MAAM,UAAU,uBAAA,EAAwB;AAIxC,EAAA,MAAM,aAAA,GAAgB,iBAAA,IAAqB,OAAA,EAAS,aAAA,IAAiB,EAAC;AACtE,EAAA,MAAM,YAAA,GAAe,oBAAoB,OAAA,EAAS,UAAA;AAClD,EAAA,MAAM,eAAA,GAAkB,uBAAuB,OAAA,EAAS,aAAA;AACxD,EAAA,MAAM,SAAA,GAAY,iBAAiB,OAAA,EAAS,OAAA;AAC5C,EAAA,MAAM,UAAA,GAAa,kBAAkB,OAAA,EAAS,QAAA;AAC9C,EAAA,MAAM,mBAAA,GACL,2BAA2B,OAAA,EAAS,mBAAA;AAErC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,gBAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAU,gBAAS,CAAC,CAAA;AAClD,EAAA,MAAM,kBAAA,GAA2B,cAAe,CAAC,CAAA;AACjD,EAAA,MAAM,MAAA,GAAS,WAAW,IAAI,CAAA;AAC9B,EAAA,MAAM,UAAA,GAAa,eAAe,QAAQ,CAAA;AAG1C,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAU,MAAA,CAAA,QAAA;AAAA,wBACnD,GAAA;AAAI,GACT;AAEA,EAAA,MAAM,gBAAA,GAAyB,MAAA,CAAA,MAAA,iBAAoB,IAAI,GAAA,EAAK,CAAA;AAE5D,EAAA,MAAM,iBAAA,GAA0B,MAAA,CAAA,MAAA,iBAAoB,IAAI,GAAA,EAAK,CAAA;AAE7D,EAAA,MAAM,kBAAA,GAA2B,cAAuB,IAAI,CAAA;AAG5D,EAAA,MAAM,SAAA,GAAkB,MAAA,CAAA,WAAA;AAAA,IACvB,CAAC,YAAA,KAA+B;AAC/B,MAAA,OAAO,YAAA,CAAa,IAAA,IAAQ,iBAAA,CAAkB,GAAA,CAAI,aAAa,EAAE,CAAA;AAAA,IAClE,CAAA;AAAA,IACA,CAAC,iBAAiB;AAAA,GACnB;AAIA,EAAA,MAAM,gBAAA,GAAyB,cAAuB,aAAa,CAAA;AACnE,EAAA,MAAM,YAAA,GAAqB,cAAO,SAAS,CAAA;AAG3C,EAAM,iBAAU,MAAM;AACrB,IAAA,gBAAA,CAAiB,OAAA,GAAU,aAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAM,iBAAU,MAAM;AACrB,IAAA,YAAA,CAAa,OAAA,GAAU,SAAA;AAAA,EACxB,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,WAAA,GAAc,cAAc,MAAA,CAAO,CAAC,MAAM,CAAC,SAAA,CAAU,CAAC,CAAC,CAAA,CAAE,MAAA;AAI/D,EAAM,iBAAU,MAAM;AACrB,IAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS;AAC9B,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAI,OAAA,GAAU,KAAA;AACd,MAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,aAAA,CAAc,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAC,CAAA;AAG9D,MAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,EAAA,KAAO;AACpB,QAAA,MAAM,eAAe,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAG1D,QAAA,IAAI,CAAC,eAAA,CAAgB,GAAA,CAAI,EAAE,CAAA,EAAG;AAC7B,UAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AACd,UAAA,OAAA,GAAU,IAAA;AACV,UAAA;AAAA,QACD;AAGA,QAAA,IAAI,YAAA,EAAc,SAAS,IAAA,EAAM;AAChC,UAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AACd,UAAA,OAAA,GAAU,IAAA;AAAA,QACX;AAAA,MACD,CAAC,CAAA;AACD,MAAA,OAAO,UAAU,IAAA,GAAO,IAAA;AAAA,IACzB,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAGlB,EAAA,MAAM,mBAAA,GAA4B,MAAA,CAAA,OAAA;AAAA,IACjC,MACC,CAAC,GAAG,aAAa,CAAA,CAAE,IAAA;AAAA,MAClB,CAAC,GAAG,CAAA,KAAM,CAAA,CAAE,UAAU,OAAA,EAAQ,GAAI,CAAA,CAAE,SAAA,CAAU,OAAA;AAAQ,KACvD;AAAA,IACD,CAAC,aAAa;AAAA,GACf;AAGA,EAAA,MAAM,kBAAA,GAAqB,EAAA;AAC3B,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,CAAC,CAAA,GAAI,kBAAA;AAEhD,EAAA,MAAM,OAAA,GAAU,oBAAoB,MAAA,GAAS,UAAA;AAI7C,EAAM,iBAAU,MAAM;AACrB,IAAA,IAAI,SAAA,IAAa,SAAA,KAAc,MAAA,IAAU,WAAA,GAAc,SAAA,EAAW;AACjE,MAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,MAAA,IAAI,GAAA,GAAM,kBAAA,CAAmB,OAAA,IAAW,aAAA,EAAe;AACtD,QAAA,qBAAA,CAAsB,WAAW,QAAQ,CAAA;AACzC,QAAA,kBAAA,CAAmB,OAAA,GAAU,GAAA;AAAA,MAC9B;AAAA,IACD;AACA,IAAA,YAAA,CAAa,WAAW,CAAA;AAAA,EACzB,CAAA,EAAG,CAAC,WAAA,EAAa,SAAA,EAAW,WAAW,QAAA,EAAU,aAAA,EAAe,SAAS,CAAC,CAAA;AAQ1E,EAAA,MAAM,gBAAA,GAAyB,MAAA,CAAA,WAAA;AAAA,IAC9B,OAAO,cAAA,KAA2B;AAEjC,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,IAAI,gBAAA,CAAiB,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,EAAG;AAGlD,MAAA,MAAM,YAAA,GAAe,iBAAiB,OAAA,CAAQ,IAAA;AAAA,QAC7C,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO;AAAA,OACjB;AACA,MAAA,IAAI,CAAC,YAAA,IAAgB,YAAA,CAAa,OAAA,CAAQ,YAAY,CAAA,EAAG;AACxD,QAAA;AAAA,MACD;AAGA,MAAA,gBAAA,CAAiB,OAAA,CAAQ,IAAI,cAAc,CAAA;AAG3C,MAAA,oBAAA,CAAqB,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,cAAc,CAAC,CAAA;AAEhE,MAAA,IAAI;AAEH,QAAA,MAAM,OAAA,CAAQ,OAAA,CAAQ,YAAA,CAAa,cAAc,CAAC,CAAA;AAAA,MAGnD,CAAA,CAAA,MAAQ;AAEP,QAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS;AAC9B,UAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,UAAA,IAAA,CAAK,OAAO,cAAc,CAAA;AAC1B,UAAA,OAAO,IAAA;AAAA,QACR,CAAC,CAAA;AAAA,MACF,CAAA,SAAE;AAED,QAAA,gBAAA,CAAiB,OAAA,CAAQ,OAAO,cAAc,CAAA;AAAA,MAC/C;AAAA,IACD,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACd;AAKA,EAAA,MAAM,mBAAA,GAA4B,mBAAY,YAAY;AACzD,IAAA,IAAI,CAAC,eAAA,EAAiB;AAGtB,IAAA,MAAM,SAAA,GAAY,aAAA,CAChB,MAAA,CAAO,CAAC,MAAM,CAAC,SAAA,CAAU,CAAC,CAAC,CAAA,CAC3B,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAEjB,IAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAG5B,IAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS;AAC9B,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,SAAA,CAAU,QAAQ,CAAC,EAAA,KAAO,IAAA,CAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AACtC,MAAA,OAAO,IAAA;AAAA,IACR,CAAC,CAAA;AAED,IAAA,IAAI;AAEH,MAAA,MAAM,OAAA,CAAQ,OAAA,CAAQ,eAAA,EAAiB,CAAA;AAAA,IAExC,CAAA,CAAA,MAAQ;AAEP,MAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS;AAC9B,QAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,QAAA,SAAA,CAAU,QAAQ,CAAC,EAAA,KAAO,IAAA,CAAK,MAAA,CAAO,EAAE,CAAC,CAAA;AACzC,QAAA,OAAO,IAAA;AAAA,MACR,CAAC,CAAA;AAAA,IACF;AAAA,EACD,CAAA,EAAG,CAAC,aAAA,EAAe,eAAA,EAAiB,SAAS,CAAC,CAAA;AAM9C,EAAM,iBAAU,MAAM;AACrB,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,YAAA,EAAc;AAG9B,IAAA,iBAAA,CAAkB,QAAQ,KAAA,EAAM;AAGhC,IAAA,MAAM,SAAA,GAAY,WAAW,MAAM;AAClC,MAAA,MAAM,kBAAkB,kBAAA,CAAmB,OAAA;AAC3C,MAAA,IAAI,CAAC,eAAA,EAAiB;AACrB,QAAA;AAAA,MACD;AAEA,MAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,QACpB,CAAC,OAAA,KAAY;AACZ,UAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC1B,YAAA,IAAI,MAAM,cAAA,EAAgB;AACzB,cAAA,MAAM,cAAA,GAAiB,MAAM,MAAA,CAAO,YAAA;AAAA,gBACnC;AAAA,eACD;AACA,cAAA,IACC,kBACA,CAAC,iBAAA,CAAkB,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,EAC5C;AAED,gBAAA,iBAAA,CAAkB,OAAA,CAAQ,IAAI,cAAc,CAAA;AAG5C,gBAAA,MAAM,YAAA,GAAe,iBAAiB,OAAA,CAAQ,IAAA;AAAA,kBAC7C,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO;AAAA,iBACjB;AACA,gBAAA,MAAM,MAAA,GAAS,YAAA,GACZ,YAAA,CAAa,OAAA,CAAQ,YAAY,CAAA,GACjC,KAAA;AAEH,gBAAA,IAAI,YAAA,IAAgB,CAAC,MAAA,EAAQ;AAC5B,kBAAA,gBAAA,CAAiB,cAAc,CAAA;AAAA,gBAChC;AAAA,cACD;AAAA,YACD;AAAA,UACD,CAAC,CAAA;AAAA,QACF,CAAA;AAAA,QACA;AAAA,UACC,IAAA,EAAM,eAAA;AAAA,UACN,SAAA,EAAW;AAAA;AAAA;AACZ,OACD;AAGA,MAAA,MAAM,uBAAuB,eAAA,CAAgB,gBAAA;AAAA,QAC5C;AAAA,OACD;AACA,MAAA,oBAAA,CAAqB,QAAQ,CAAC,EAAA,KAAO,QAAA,CAAS,OAAA,CAAQ,EAAE,CAAC,CAAA;AAGzD,MAAA,OAAO,MAAM;AACZ,QAAA,QAAA,CAAS,UAAA,EAAW;AAAA,MACrB,CAAA;AAAA,IACD,GAAG,GAAG,CAAA;AAEN,IAAA,OAAO,MAAM;AACZ,MAAA,YAAA,CAAa,SAAS,CAAA;AAAA,IACvB,CAAA;AAAA,EAID,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAA,EAAc,gBAAgB,CAAC,CAAA;AAE3C,EAAA,MAAM,uBAAA,GAA0B,CAAC,YAAA,KAA+B;AAE/D,IAAA,IAAI,CAAC,SAAA,CAAU,YAAY,CAAA,EAAG;AAC7B,MAAA,gBAAA,CAAiB,aAAa,EAAE,CAAA;AAAA,IACjC;AACA,IAAA,IAAI,aAAa,IAAA,EAAM;AACtB,MAAA,mBAAA,GAAsB,YAAY,CAAA;AAAA,IACnC;AAAA,EACD,CAAA;AAEA,EAAA,uBACCjB,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ,cAAc,SAAA,EACpC,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACtB,QAAA,kBAAAC,IAAAA;AAAA,MAACM,MAAAA,CAAO,MAAA;AAAA,MAAP;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACV,+EAAA;AAAA,UACA,aAAA,KAAkB,UACf,8CAAA,GACA,uDAAA;AAAA,UACH,MAAA,CAAO,MAAA;AAAA,UACP;AAAA,SACD;AAAA,QACA,QAAA,EAAU,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,QACxB,cAAY,CAAA,aAAA,EAAgB,WAAA,GAAc,IAAI,CAAA,EAAA,EAAK,WAAW,aAAa,EAAE,CAAA,CAAA;AAAA,QAE7E,QAAA,EAAA;AAAA,0BAAAP,IAAC,IAAA,EAAA,EAAK,SAAA,EAAW,GAAG,MAAA,CAAO,IAAA,EAAM,uBAAuB,CAAA,EAAG,CAAA;AAAA,0BAG3DA,GAAAA,CAACM,eAAAA,EAAA,EACC,QAAA,EAAA,WAAA,GAAc,qBACdN,GAAAA;AAAA,YAACO,MAAAA,CAAO,GAAA;AAAA,YAAP;AAAA,cACA,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,cAChC,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,cAChC,IAAA,EAAM,EAAE,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,cAC7B,SAAA,EAAW,EAAA;AAAA,gBACV,4BAAA;AAAA,gBACA,UAAA;AAAA,gBACA,MAAA,CAAO;AAAA;AACR;AAAA,WACD,EAEF,CAAA;AAAA,0BAGAP,IAACM,eAAAA,EAAA,EACC,wBAAc,CAAA,IAAK,SAAA,IAAa,UAAA,KAAe,MAAA,oBAC/CN,GAAAA;AAAA,YAACO,MAAAA,CAAO,GAAA;AAAA,YAAP;AAAA,cACA,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,EAAG,SAAS,GAAA,EAAI;AAAA,cAClC,OAAA,EAAS,aAAA,CAAc,UAAU,CAAA,CAAE,OAAA;AAAA,cACnC,UAAA,EAAY,aAAA,CAAc,UAAU,CAAA,CAAE,UAAA;AAAA,cACtC,SAAA,EAAW,EAAA;AAAA,gBACV,2BAAA;AAAA,gBACA,UAAA;AAAA,gBACA,MAAA,CAAO;AAAA;AACR;AAAA,WACD,EAEF;AAAA;AAAA;AAAA,KACD,EACD,CAAA;AAAA,oBAEAN,IAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAM,KAAA;AAAA,QACN,SAAA,EAAU,0BAAA;AAAA,QAGV,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oEAAA,EACd,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,cAC5C,cAAc,CAAA,oBACdC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yEAAA,EACd,QAAA,EAAA;AAAA,gBAAA,WAAA;AAAA,gBAAY;AAAA,eAAA,EACd;AAAA,aAAA,EAEF,CAAA;AAAA,4BACAD,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACb,QAAA,EAAA,WAAA,GAAc,CAAA,IAAK,mCACnBC,IAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,OAAA,EAAQ,OAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAU,kBAAA;AAAA,gBACV,OAAA,EAAS,mBAAA;AAAA,gBAET,QAAA,EAAA;AAAA,kCAAAD,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA,aAE5C,EAEF;AAAA,WAAA,EACD,CAAA;AAAA,UAGC,oBAAoB,MAAA,KAAW,CAAA,mBAC/BC,IAAAA,CAAAe,UAAA,EACC,QAAA,EAAA;AAAA,4BAAAf,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,SAAI,SAAA,EAAU,uEAAA,EACd,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAgC,CAAA,EACjD,CAAA;AAAA,8BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,YAAA,EAAa;AAAA,aAAA,EAC5D,CAAA;AAAA,YACC,+BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iFACd,QAAA,kBAAAA,GAAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACA,IAAA,EAAM,WAAA;AAAA,gBACN,SAAA,EAAU,kDAAA;AAAA,gBAET,QAAA,EAAA;AAAA;AAAA,aACF,EACD;AAAA,WAAA,EAEF,CAAA,mBAEAC,IAAAA,CAAAe,QAAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAhB,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACA,GAAA,EAAK,kBAAA;AAAA,gBACL,SAAA,EAAU,iBAAA;AAAA,gBACV,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAG,aAAa,CAAA,EAAA,CAAA,EAAK;AAAA,gBAEzC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA,mBAAA,CACC,KAAA,CAAM,CAAA,EAAG,UAAU,CAAA,CACnB,GAAA,CAAI,CAAC,YAAA,KAAiB;AACtB,kBAAA,MAAM,MAAA,GAAS,UAAA,CAAW,YAAA,CAAa,IAAA,IAAQ,MAAM,CAAA;AACrD,kBAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,kBAAA,MAAM,OAAA,GAAU,CAAC,CAAC,YAAA,CAAa,IAAA;AAC/B,kBAAA,MAAM,MAAA,GAAS,UAAU,YAAY,CAAA;AAErC,kBAAA,MAAM,WAAA,GAAc,MACnB,uBAAA,CAAwB,YAAY,CAAA;AACrC,kBAAA,MAAM,aAAA,GAAgB,CACrB,CAAA,KACI;AACJ,oBAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACvC,sBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,sBAAA,uBAAA,CAAwB,YAAY,CAAA;AAAA,oBACrC;AAAA,kBACD,CAAA;AAGA,kBAAA,MAAM,aAAA,GAAgB,OAAA,GAAUO,MAAAA,CAAO,MAAA,GAASA,MAAAA,CAAO,GAAA;AACvD,kBAAA,MAAM,mBAAmB,OAAA,GACtB;AAAA,oBACA,IAAA,EAAM,QAAA;AAAA,oBACN,QAAA,EAAU,CAAA;AAAA,oBACV,OAAA,EAAS,WAAA;AAAA,oBACT,SAAA,EAAW;AAAA,sBAEX,EAAC;AAEJ,kBAAA,uBACCN,IAAAA;AAAA,oBAAC,aAAA;AAAA,oBAAA;AAAA,sBAEA,wBAAsB,YAAA,CAAa,EAAA;AAAA,sBACnC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,GAAA,EAAI;AAAA,sBAC9B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,sBAC5B,SAAA,EAAW,EAAA;AAAA,wBACV,gGAAA;AAAA,wBACA,OAAA,IAAW,kCAAA;AAAA,wBACX,CAAC,OAAA,IAAW,gBAAA;AAAA,wBACZ,CAAC,MAAA,IAAU;AAAA,uBACZ;AAAA,sBACC,GAAG,gBAAA;AAAA,sBAGJ,QAAA,EAAA;AAAA,wCAAAD,GAAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BACA,SAAA,EAAW,EAAA;AAAA,8BACV,qEAAA;AAAA,8BACA,MAAA,CAAO;AAAA,6BACR;AAAA,4BAEA,QAAA,kBAAAA,IAAC,IAAA,EAAA,EAAK,SAAA,EAAW,GAAG,SAAA,EAAW,MAAA,CAAO,KAAK,CAAA,EAAG;AAAA;AAAA,yBAC/C;AAAA,wCAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,0CAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACd,QAAA,kBAAAA,GAAAA;AAAA,4BAAC,GAAA;AAAA,4BAAA;AAAA,8BACA,SAAA,EAAW,EAAA;AAAA,gCACV,sBAAA;AAAA,gCACA,CAAC,SAAS,eAAA,GAAkB,aAAA;AAAA,gCAC5B,OAAA,IAAW;AAAA,+BACZ;AAAA,8BAEC,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA,2BACf,EACD,CAAA;AAAA,0BACC,YAAA,CAAa,2BACbA,GAAAA,CAAC,OAAE,SAAA,EAAU,sCAAA,EACX,uBAAa,OAAA,EACf,CAAA;AAAA,0CAEDA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6CACX,QAAA,EAAA,aAAA,CAAc,YAAA,CAAa,SAAS,CAAA,EACtC;AAAA,yBAAA,EACD,CAAA;AAAA,wCAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,uCACAA,GAAAA;AAAA,0BAAC,MAAA;AAAA,0BAAA;AAAA,4BACA,OAAA,EAAQ,OAAA;AAAA,4BACR,IAAA,EAAK,MAAA;AAAA,4BACL,SAAA,EAAU,sDAAA;AAAA,4BACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACf,8BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,8BAAA,SAAA,CAAU,aAAa,EAAE,CAAA;AAAA,4BAC1B,CAAA;AAAA,4BAEA,QAAA,kBAAAA,GAAAA,CAACa,CAAAA,EAAA,EAAE,WAAU,SAAA,EAAU;AAAA;AAAA,yBACxB,EAEF;AAAA;AAAA,qBAAA;AAAA,oBA3DK,YAAA,CAAa;AAAA,mBA4DnB;AAAA,gBAEF,CAAC,CAAA,EACH;AAAA;AAAA,aACD;AAAA,YAAA,CAGE,WAAW,UAAA,IAAc,WAAA,qBAC1BZ,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gFAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,SAAI,SAAA,EAAU,yBAAA,EACb,qCACAC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAC7C,oBAAoB,MAAA,GAAS,UAAA;AAAA,gBAAW;AAAA,eAAA,EAC3C,CAAA,EAEF,CAAA;AAAA,8BACAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,gBAAA,WAAA,oBACAD,GAAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACA,IAAA,EAAM,WAAA;AAAA,oBACN,SAAA,EAAU,kDAAA;AAAA,oBAET,QAAA,EAAA;AAAA;AAAA,iBACF;AAAA,gBAEA,UAAA,IAAc,mBAAA,CAAoB,MAAA,GAAS,CAAA,oBAC3CC,IAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACA,OAAA,EAAQ,OAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAU,+DAAA;AAAA,oBACV,OAAA,EAAS,MAAM,UAAA,EAAW;AAAA,oBAE1B,QAAA,EAAA;AAAA,sCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA;AAEpC,eAAA,EAEF;AAAA,aAAA,EACD;AAAA,WAAA,EAEF;AAAA;AAAA;AAAA;AAEF,GAAA,EACD,CAAA;AAEF;AC3zBA,SAAS,UAAA,CAAW;AAAA,EACnB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA0D;AACzD,EAAA,uBACCC,IAAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAqB,mBAAA,CAAA,QAAA;AAAA,UAApB;AAAA,YACA,WAAA,EAAU,sBAAA;AAAA,YACV,SAAA,EAAU,iCAAA;AAAA,YAET;AAAA;AAAA,SACF;AAAA,wBACAA,IAAC,SAAA,EAAA,EAAU,CAAA;AAAA,wBACXA,GAAAA,CAAqB,mBAAA,CAAA,MAAA,EAApB,EAA2B;AAAA;AAAA;AAAA,GAC7B;AAEF;AAEA,SAAS,SAAA,CAAU;AAAA,EAClB,SAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,GAAG;AACJ,CAAA,EAAyE;AACxE,EAAA,uBACCA,GAAAA;AAAA,IAAqB,mBAAA,CAAA,mBAAA;AAAA,IAApB;AAAA,MACA,WAAA,EAAU,YAAA;AAAA,MACV,WAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,+CAAA;AAAA,QACA,gBAAgB,UAAA,IACf,oDAAA;AAAA,QACD,gBAAgB,YAAA,IACf,sDAAA;AAAA,QACD;AAAA,OACD;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAqB,mBAAA,CAAA,eAAA;AAAA,QAApB;AAAA,UACA,WAAA,EAAU,cAAA;AAAA,UACV,SAAA,EAAU;AAAA;AAAA;AACX;AAAA,GACD;AAEF;AC1CO,SAAS,cAAA,CAAe;AAAA,EAC9B,MAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,YAAA;AAAA,EACA;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,UAAU,CAAA;AAE1C,EAAA,uBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EACvC,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,KAAU;AACvB,IAAA,MAAM,KAAA,GAAQ,IAAI,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AACpC,IAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAChC,IAAA,MAAM,UAAU,KAAA,CAAM,YAAA,wBAAmB,IAAI,IAAA,IAAO,YAAA,EAAa;AACjE,IAAA,MAAM,UAAU,OAAA,GACb,OAAA,GACA,KAAA,CAAM,kBAAA,CAAmB,EAAC,EAAG;AAAA,MAC7B,OAAA,EAAS,OAAA;AAAA,MACT,KAAA,EAAO,OAAA;AAAA,MACP,GAAA,EAAK;AAAA,KACL,CAAA;AACH,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,MAAA,GACnB,SAAA,GACA,CAAA,EAAG,KAAA,CAAM,kBAAA,CAAmB,EAAC,EAAG,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,CAAC,CAAA,QAAA,EAAM,GAAA,CAAI,kBAAA,CAAmB,EAAC,EAAG,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,CAAC,CAAA,CAAA;AAElJ,IAAA,uBACCC,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEA,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,YAAA,GAAe,KAAK,CAAA;AAAA,QACnC,SAAA,EAAU,gGAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACV,8FAAA;AAAA,gBACA,UACG,oCAAA,GACA;AAAA,eACJ;AAAA,cAEC,gBAAM,OAAA;AAAQ;AAAA,WAChB;AAAA,0BACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8BAAA,EAAgC,gBAAM,OAAA,EAAQ,CAAA;AAAA,4BAC3DA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yDACd,QAAA,kBAAAC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EACf,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,cAC1B,OAAA;AAAA,cAAQ,QAAA;AAAA,cAAI;AAAA,aAAA,EACd,CAAA,EACD,CAAA;AAAA,YACC,MAAM,QAAA,oBACNC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8DAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,8BAC5BA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,gBAAM,QAAA,EAAS;AAAA,aAAA,EAC5C;AAAA,WAAA,EAEF;AAAA;AAAA,OAAA;AAAA,MA7BK,KAAA,CAAM;AAAA,KA8BZ;AAAA,EAEF,CAAC,CAAA,EACF,CAAA;AAEF;ACpEA,SAAS,eAAA,CAAgB;AAAA,EACxB,aAAA,GAAgB,CAAA;AAAA,EAChB,GAAG;AACJ,CAAA,EAA2D;AAC1D,EAAA,uBACCA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,QAAA;AAAA,IAAjB;AAAA,MACA,WAAA,EAAU,kBAAA;AAAA,MACV,aAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF;AAEA,SAAS,OAAA,CAAQ;AAAA,EAChB,GAAG;AACJ,CAAA,EAAuD;AACtD,EAAA,uBACCA,GAAAA,CAAC,eAAA,EAAA,EACA,QAAA,kBAAAA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA,EACvD,CAAA;AAEF;AAEA,SAAS,cAAA,CAAe;AAAA,EACvB,GAAG;AACJ,CAAA,EAA0D;AACzD,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AACzE;AAEA,SAAS,cAAA,CAAe;AAAA,EACvB,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,QAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA0D;AACzD,EAAA,uBACCA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACA,QAAA,kBAAAC,IAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACA,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,maAAA;AAAA,QACA;AAAA,OACD;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDD,GAAAA,CAAkB,gBAAA,CAAA,KAAA,EAAjB,EAAuB,WAAU,oGAAA,EAAqG;AAAA;AAAA;AAAA,GACxI,EACD,CAAA;AAEF;ACzCO,SAAS,uBAAA,CAAwB;AAAA,EACvC,OAAA;AAAA,EACA;AACD,CAAA,EAAiC;AAChC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIQ,SAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,OAAA,CAAQ,cAAA,EAAgB,WAAW,CAAA;AAE7D,EAAA,MAAM,aAAa,YAAY;AAC9B,IAAA,IAAI;AACH,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,SAAS,CAAA;AAC7C,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,IACxC,CAAA,CAAA,MAAQ;AAEP,MAAA,MAAA,CAAO,IAAA,CAAK,WAAW,QAAQ,CAAA;AAAA,IAChC;AAAA,EACD,CAAA;AAEA,EAAA,uBACCR,GAAAA,CAAC,eAAA,EAAA,EACA,QAAA,kBAAAC,KAAC,OAAA,EAAA,EACA,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACtB,QAAA,kBAAAC,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,SAAA,EAAU,SAAA;AAAA,QACV,OAAA,EAAS,UAAA;AAAA,QAER,QAAA,EAAA;AAAA,UAAA,MAAA,mBACAD,GAAAA,CAACe,KAAAA,EAAA,EAAM,SAAA,EAAU,cAAA,EAAe,CAAA,mBAEhCf,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,UAE/B,KAAA,KAAU,SAAS,SAAA,GAAY,WAAA;AAAA;AAAA;AAAA,KACjC,EACD,CAAA;AAAA,oBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAA,mDAAA,EAEhB;AAAA,GAAA,EACD,CAAA,EACD,CAAA;AAEF;ACjCO,SAAS,cAAA,CAAe;AAAA,EAC9B,WAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV,YAAA;AAAA,EACA;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,SAAS,kBAAA,EAAmB;AAElC,EAAA,MAAM,kBAAkB,MAAA,EAAQ,MAAA,IAAU,EAAC,EACzC,OAAO,CAAC,CAAA,KAAM,IAAI,IAAA,CAAK,EAAE,OAAO,CAAA,oBAAK,IAAI,IAAA,EAAM,CAAA,CAC/C,IAAA;AAAA,IACA,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,OAAA,KAAY,IAAI,IAAA,CAAK,CAAA,CAAE,OAAO,EAAE,OAAA;AAAQ,GACvE,CACC,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAEZ,EAAA,MAAM,WAAA,GAAc,eAAe,MAAA,GAAS,CAAA;AAE5C,EAAA,uBACCC,KAAC,OAAA,EAAA,EACA,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACtB,QAAA,kBAAAC,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAK,MAAA;AAAA,QACL,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,SAAS,CAAA;AAAA,QAC3C,YAAA,EAAY,OAAO,KAAA,IAAS,UAAA;AAAA,QAE5B,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UACjC,WAAA,oBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,4DAAA,EAA6D;AAAA;AAAA;AAAA,KAE/E,EACD,CAAA;AAAA,oBACAC,IAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,UAAA,EAAW,OAAM,KAAA,EAC1C,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EACd,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,KAAA,IAAS,UAAA,EAClB,CAAA,EACD,CAAA;AAAA,sBAEAA,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,eAAA,EACpB,QAAA,EAAA,MAAA,EAAQ,SAAA,mBACRA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACd,QAAA,kBAAAA,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,SAAA,EAAU,4CAAA,EAA6C,CAAA,EACjE,CAAA,GACG,cAAA,CAAe,MAAA,KAAW,CAAA,mBAC7BhB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,uCAAA,EAAwC,CAAA;AAAA,wBAChEA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+BAAA,EACX,QAAA,EAAA,MAAA,CAAO,YAAY,oBAAA,EACrB;AAAA,OAAA,EACD,oBAEAA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACA,MAAA,EAAQ,cAAA;AAAA,UACR,YAAA;AAAA,UACA,SAAA,EAAU;AAAA;AAAA,OACX,EAEF,CAAA;AAAA,sBAEAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sDAAA,EACb,QAAA,EAAA;AAAA,QAAA,WAAA,oBACAD,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAQ,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,SAAA,EAAU,SAAO,IAAA,EAC5D,QAAA,kBAAAC,IAAAA,CAAC,GAAA,EAAA,EAAE,MAAM,WAAA,EACP,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,YAAA,IAAgB,oBAAA;AAAA,0BACxBD,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,cAAA,EAAe;AAAA,SAAA,EACxC,CAAA,EACD,CAAA;AAAA,QAEA,QAAQ,OAAA,oBACRA,IAAC,uBAAA,EAAA,EAAwB,OAAA,EAAS,OAAO,OAAA,EAAS;AAAA,OAAA,EAEpD;AAAA,KAAA,EACD;AAAA,GAAA,EACD,CAAA;AAEF;ACzDO,SAAS,YAAA,CAAa;AAAA,EAC5B,MAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV;AACD,CAAA,EAAsB;AACrB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIQ,SAA2B,OAAO,CAAA;AAClE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,IAAIA,QAAAA,iBAAS,IAAI,MAAM,CAAA;AACzD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,QAAAA,EAA2B;AAEnE,EAAA,MAAM,eAAe,MAAM;AAC1B,IAAA,IAAI,aAAa,OAAA,EAAS;AACzB,MAAA,cAAA,CAAe,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,IACtC,CAAA,MAAA,IAAW,aAAa,MAAA,EAAQ;AAC/B,MAAA,cAAA,CAAe,CAAC,MAAM,IAAI,IAAA,CAAK,EAAE,OAAA,EAAQ,GAAI,CAAA,GAAI,KAAQ,CAAC,CAAA;AAAA,IAC3D,CAAA,MAAO;AACN,MAAA,cAAA,CAAe,CAAC,MAAM,IAAI,IAAA,CAAK,EAAE,OAAA,EAAQ,GAAI,KAAQ,CAAC,CAAA;AAAA,IACvD;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC7B,IAAA,IAAI,aAAa,OAAA,EAAS;AACzB,MAAA,cAAA,CAAe,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,IACtC,CAAA,MAAA,IAAW,aAAa,MAAA,EAAQ;AAC/B,MAAA,cAAA,CAAe,CAAC,MAAM,IAAI,IAAA,CAAK,EAAE,OAAA,EAAQ,GAAI,CAAA,GAAI,KAAQ,CAAC,CAAA;AAAA,IAC3D,CAAA,MAAO;AACN,MAAA,cAAA,CAAe,CAAC,MAAM,IAAI,IAAA,CAAK,EAAE,OAAA,EAAQ,GAAI,KAAQ,CAAC,CAAA;AAAA,IACvD;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,YAAY,MAAM;AACvB,IAAA,cAAA,iBAAe,IAAI,MAAM,CAAA;AACzB,IAAA,eAAA,iBAAgB,IAAI,MAAM,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAe;AACtC,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,YAAA,GAAe,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAeW,QAAQ,MAAM;AAClC,IAAA,MAAM,GAAA,uBAAU,GAAA,EAA6B;AAC7C,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC3B,MAAA,MAAM,MAAM,IAAI,IAAA,CAAK,KAAA,CAAM,OAAO,EAAE,YAAA,EAAa;AACjD,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,GAAA,CAAI,GAAG,KAAK,EAAC;AAC9B,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACf,MAAA,GAAA,CAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,IAClB;AACA,IAAA,OAAO,GAAA;AAAA,EACR,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,WAAA,GAAcA,QAAQ,MAAM;AACjC,IAAA,IAAI,aAAa,OAAA,EAAS;AACzB,MAAA,MAAM,UAAA,GAAa,aAAa,WAAW,CAAA;AAC3C,MAAA,MAAM,QAAA,GAAW,WAAW,WAAW,CAAA;AACvC,MAAA,OAAO,iBAAA,CAAkB;AAAA,QACxB,KAAA,EAAO,YAAY,UAAU,CAAA;AAAA,QAC7B,GAAA,EAAK,UAAU,QAAQ;AAAA,OACvB,CAAA;AAAA,IACF,CAAA,MAAA,IAAW,aAAa,MAAA,EAAQ;AAC/B,MAAA,MAAM,SAAA,GAAY,YAAY,WAAW,CAAA;AACzC,MAAA,MAAM,OAAA,GAAU,UAAU,WAAW,CAAA;AACrC,MAAA,OAAO,kBAAkB,EAAE,KAAA,EAAO,SAAA,EAAW,GAAA,EAAK,SAAS,CAAA;AAAA,IAC5D;AACA,IAAA,OAAO,CAAC,WAAW,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,QAAA,EAAU,WAAW,CAAC,CAAA;AAE1B,EAAA,MAAM,iBAAA,GAAoB,YAAA,GACtB,YAAA,CAAa,GAAA,CAAI,YAAA,CAAa,cAAc,CAAA,IAAK,EAAC,GACnD,EAAC;AAEJ,EAAA,MAAM,WAAA,GACL,aAAa,KAAA,GACV,MAAA,CAAO,aAAa,oBAAoB,CAAA,GACxC,MAAA,CAAO,WAAA,EAAa,WAAW,CAAA;AAEnC,EAAA,uBACClB,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA,EACnD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sDAAA,EACd,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,SAAA,EAAU,SAAA;AAAA,cACV,OAAA,EAAS,YAAA;AAAA,cAET,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAClC;AAAA,0BACAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,SAAA,EAAU,SAAA;AAAA,cACV,OAAA,EAAS,eAAA;AAAA,cAET,QAAA,kBAAAA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACnC,SAAA,EACD,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBAAyB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,wBACnDA,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,SAAA,EAC3C,QAAA,EAAA,MAAA,CAAO,KAAA,IAAS,OAAA,EAClB;AAAA,OAAA,EACD,CAAA;AAAA,sBAEAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA,CAAC,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAA,CAAY,GAAA,CAAI,CAAC,IAAA,qBACzCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEA,OAAA,EAAS,QAAA,KAAa,IAAA,GAAO,SAAA,GAAY,OAAA;AAAA,YACzC,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,mDAAA;AAAA,YACV,OAAA,EAAS,MAAM,WAAA,CAAY,IAAI,CAAA;AAAA,YAE9B,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,IAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC;AAAA,WAAA;AAAA,UANvD;AAAA,SAQN,CAAA,EACF,CAAA;AAAA,QACC,iCACAC,IAAAA,CAAC,UAAO,IAAA,EAAK,IAAA,EAAK,SAAS,aAAA,EAC1B,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAACoB,IAAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,UAC9B,OAAO,QAAA,IAAY;AAAA,SAAA,EACrB;AAAA,OAAA,EAEF;AAAA,KAAA,EACD,CAAA;AAAA,IAEC,4BACApB,GAAAA,CAAC,SAAI,SAAA,EAAU,yCAAA,EACd,0BAAAA,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,SAAA,EAAU,8CAA6C,CAAA,EACjE,CAAA,mBAEAhB,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACd,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA,QAAA,KAAa,0BACbC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAA,EACb,QAAA,EAAA;AAAA,QAAA,CAAC,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA,CAAE,GAAA;AAAA,UAClD,CAAC,wBACAD,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEA,SAAA,EAAU,4EAAA;AAAA,cAET,QAAA,EAAA;AAAA,aAAA;AAAA,YAHI;AAAA;AAIN,SAEF;AAAA,QACC,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,KAAQ;AACzB,UAAA,MAAM,YAAY,YAAA,CAAa,GAAA,CAAI,IAAI,YAAA,EAAc,KAAK,EAAC;AAC3D,UAAA,MAAM,cAAA,GACL,GAAA,CAAI,QAAA,EAAS,KAAM,YAAY,QAAA,EAAS;AACzC,UAAA,MAAM,OAAA,GAAU,SAAA,CAAU,GAAA,kBAAK,IAAI,MAAM,CAAA;AACzC,UAAA,MAAM,UAAA,GACL,YAAA,IAAgB,SAAA,CAAU,GAAA,EAAK,YAAY,CAAA;AAE5C,UAAA,uBACCC,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEA,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,cAAA,CAAe,GAAG,CAAA;AAAA,cACjC,SAAA,EAAW,EAAA;AAAA,gBACV,4EAAA;AAAA,gBACA,CAAC,cAAA,IAAkB,YAAA;AAAA,gBACnB,UAAA,IAAc;AAAA,eACf;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAW,EAAA;AAAA,sBACV,sEAAA;AAAA,sBACA,OAAA,IACC;AAAA,qBACF;AAAA,oBAEC,cAAI,OAAA;AAAQ;AAAA,iBACd;AAAA,gBACC,SAAA,CAAU,MAAM,CAAA,EAAG,CAAC,EAAE,GAAA,CAAI,CAAC,wBAC3BA,GAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBAEA,SAAA,EAAU,4EAAA;AAAA,oBACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACf,sBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,sBAAA,YAAA,GAAe,GAAG,CAAA;AAAA,oBACnB,CAAA;AAAA,oBACA,IAAA,EAAK,QAAA;AAAA,oBACL,QAAA,EAAU,CAAA;AAAA,oBACV,SAAA,EAAW,CAAC,CAAA,KAAM;AACjB,sBAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,EAAS,YAAA,GAAe,GAAG,CAAA;AAAA,oBAC1C,CAAA;AAAA,oBAEC,QAAA,EAAA,GAAA,CAAI;AAAA,mBAAA;AAAA,kBAZA,GAAA,CAAI;AAAA,iBAcV,CAAA;AAAA,gBACA,UAAU,MAAA,GAAS,CAAA,oBACnBC,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,0CAAA,EAA2C,QAAA,EAAA;AAAA,kBAAA,GAAA;AAAA,kBACrD,UAAU,MAAA,GAAS,CAAA;AAAA,kBAAE;AAAA,iBAAA,EACxB;AAAA;AAAA,aAAA;AAAA,YAtCI,IAAI,WAAA;AAAY,WAwCtB;AAAA,QAEF,CAAC;AAAA,OAAA,EACF,CAAA,GACG,QAAA,KAAa,MAAA,mBAChBD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,KAAQ;AACzB,QAAA,MAAM,YAAY,YAAA,CAAa,GAAA,CAAI,IAAI,YAAA,EAAc,KAAK,EAAC;AAC3D,QAAA,MAAM,OAAA,GAAU,SAAA,CAAU,GAAA,kBAAK,IAAI,MAAM,CAAA;AAEzC,QAAA,uBACCC,IAAAA,CAAC,KAAA,EAAA,EAA4B,SAAA,EAAU,eAAA,EACtC,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,gBACV,0BAAA;AAAA,gBACA,OAAA,IAAW;AAAA,eACZ;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,MAAA,CAAO,GAAA,EAAK,KAAK,CAAA,EAAE,CAAA;AAAA,gCACvBA,GAAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAW,EAAA;AAAA,sBACV,8DAAA;AAAA,sBACA,OAAA,IAAW;AAAA,qBACZ;AAAA,oBAEC,cAAI,OAAA;AAAQ;AAAA;AACd;AAAA;AAAA,WACD;AAAA,0BACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aACb,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,qBACfC,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEA,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,YAAA,GAAe,GAAG,CAAA;AAAA,cACjC,SAAA,EAAU,6GAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sBAAA,EACX,cAAI,OAAA,EACN,CAAA;AAAA,gCACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wBAAA,EACX,QAAA,EAAA,MAAA,CAAO,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,EAAG,QAAQ,CAAA,EACxC;AAAA;AAAA,aAAA;AAAA,YAVK,GAAA,CAAI;AAAA,WAYV,CAAA,EACF;AAAA,SAAA,EAAA,EAjCS,GAAA,CAAI,aAkCd,CAAA;AAAA,MAEF,CAAC,CAAA,EACF,CAAA,mBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC7B,QAAA,MAAM,YAAY,YAAA,CAAa,GAAA,CAAI,IAAI,YAAA,EAAc,KAAK,EAAC;AAC3D,QAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC3B,UAAA,OAAO;AAAA,4BACNC,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEA,SAAA,EAAU,6DAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAD,GAAAA,CAACqB,YAAAA,EAAA,EAAa,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,kCAClErB,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+BAAA,EACX,QAAA,EAAA,MAAA,CAAO,YAAY,wBAAA,EACrB;AAAA;AAAA,eAAA;AAAA,cANI;AAAA;AAOL,WACD;AAAA,QACD;AACA,QAAA,OAAO,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,qBACrBC,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEA,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,YAAA,GAAe,GAAG,CAAA;AAAA,YACjC,SAAA,EAAU,kGAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EAAgD,CAAA;AAAA,8BAC/DC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAe,cAAI,OAAA,EAAQ,CAAA;AAAA,gCACxCC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EACX,QAAA,EAAA;AAAA,kBAAA,MAAA,CAAO,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,GAAG,QAAQ,CAAA;AAAA,kBAAE,SAAA;AAAA,kBAAG,GAAA;AAAA,kBAC3C,OAAO,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,GAAG,QAAQ;AAAA,iBAAA,EACtC,CAAA;AAAA,gBACC,GAAA,CAAI,4BACJD,GAAAA,CAAC,OAAE,SAAA,EAAU,sCAAA,EACX,cAAI,QAAA,EACN;AAAA,eAAA,EAEF;AAAA;AAAA,WAAA;AAAA,UAjBK,GAAA,CAAI;AAAA,SAmBV,CAAA;AAAA,MACF,CAAC,GACF,CAAA,EAEF,CAAA;AAAA,MAEC,YAAA,IACA,iBAAA,CAAkB,MAAA,GAAS,CAAA,IAC3B,QAAA,KAAa,2BACZC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,8BACZ,QAAA,EAAA,MAAA,CAAO,YAAA,EAAc,QAAQ,CAAA,EAC/B,CAAA;AAAA,wBACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aACb,QAAA,EAAA,iBAAA,CAAkB,GAAA,CAAI,CAAC,GAAA,qBACvBC,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEA,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,YAAA,GAAe,GAAG,CAAA;AAAA,YACjC,SAAA,EAAU,oFAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sBAAA,EAAwB,cAAI,OAAA,EAAQ,CAAA;AAAA,8BACjDA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EACX,QAAA,EAAA,GAAA,CAAI,MAAA,GACF,SAAA,GACA,CAAA,EAAG,MAAA,CAAO,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,EAAG,QAAQ,CAAC,CAAA,QAAA,EAAM,MAAA,CAAO,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAG,QAAQ,CAAC,CAAA,CAAA,EACzF;AAAA;AAAA,WAAA;AAAA,UAVK,GAAA,CAAI;AAAA,SAYV,CAAA,EACF;AAAA,OAAA,EACD;AAAA,KAAA,EAEH;AAAA,GAAA,EAEF,CAAA;AAEF;ACxUO,SAAS,WAAA,CAAY;AAAA,EAC3B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAS;AACV,CAAA,EAAqB;AACpB,EAAA,MAAM,MAAA,GAAS,CAAC,CAAC,KAAA,EAAO,EAAA;AACxB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,IAAIQ,QAAAA,CAAS,KAAA,EAAO,WAAW,EAAE,CAAA;AAC3D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,IAAIA,QAAAA,CAAS,KAAA,EAAO,eAAe,EAAE,CAAA;AACvE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAIA,QAAAA,CAAS,KAAA,EAAO,YAAY,EAAE,CAAA;AAC9D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,QAAAA;AAAA,IAC7B,KAAA,EAAO,OAAA,GAAU,IAAI,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,CAAE,WAAA,EAAY,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI;AAAA,GACvE;AACA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,QAAAA;AAAA,IACzB,KAAA,EAAO,KAAA,GAAQ,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,CAAE,WAAA,EAAY,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI;AAAA,GACnE;AACA,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,IAAIA,QAAAA,CAAS,KAAA,EAAO,UAAU,KAAK,CAAA;AAC3D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,aAAa,YAAY;AAC9B,IAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,MAAU,CAAC,OAAA,IAAW,CAAC,KAAA,EAAO;AAC3C,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,IAAI;AACH,MAAA,MAAM,MAAA,CAAO;AAAA,QACZ,GAAI,OAAO,EAAA,GAAK,EAAE,IAAI,KAAA,CAAM,EAAA,KAAO,EAAC;AAAA,QACpC,OAAA,EAAS,QAAQ,IAAA,EAAK;AAAA,QACtB,WAAA,EAAa,WAAA,CAAY,IAAA,EAAK,IAAK,IAAA;AAAA,QACnC,QAAA,EAAU,QAAA,CAAS,IAAA,EAAK,IAAK,IAAA;AAAA,QAC7B,OAAA,EAAS,IAAI,IAAA,CAAK,OAAO,EAAE,WAAA,EAAY;AAAA,QACvC,KAAA,EAAO,IAAI,IAAA,CAAK,KAAK,EAAE,WAAA,EAAY;AAAA,QACnC;AAAA,OACA,CAAA;AACD,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACnB,CAAA,SAAE;AACD,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,IAChB;AAAA,EACD,CAAA;AAEA,EAAA,uBACCR,IAAC,MAAA,EAAA,EAAO,IAAA,EAAY,cACnB,QAAA,kBAAAC,IAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,kBAAA,EACxB,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,YAAA,EAAA,EACA,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,EAAA,MAAA,GACG,MAAA,CAAO,SAAA,IAAa,YAAA,GACpB,MAAA,CAAO,WAAA,IAAe,WAAA,EAC3B,CAAA,EACD,CAAA;AAAA,oBAEAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,sBAAAA,KAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,wBAAAD,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EACf,QAAA,EAAA,MAAA,CAAO,WAAW,SAAA,EACpB,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO,OAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC1C,SAAA,EAAU,sKAAA;AAAA,YACV,WAAA,EAAY;AAAA;AAAA;AACb,OAAA,EACD,CAAA;AAAA,sBAEAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACd,QAAA,EAAA;AAAA,wBAAAA,KAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAChB,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAACsB,KAAAA,EAAA,EAAM,SAAA,EAAU,yBAAA,EAA0B,CAAA;AAAA,YAC1C,OAAO,SAAA,IAAa;AAAA,WAAA,EACtB,CAAA;AAAA,0BACAtB,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,IAAA,EAAK,gBAAA;AAAA,cACL,KAAA,EAAO,OAAA;AAAA,cACP,UAAU,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cAC1C,SAAA,EAAU;AAAA;AAAA;AACX,SAAA,EACD,CAAA;AAAA,wBACAC,KAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,0BAAAD,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EACf,QAAA,EAAA,MAAA,CAAO,WAAW,KAAA,EACpB,CAAA;AAAA,0BACAA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,IAAA,EAAK,gBAAA;AAAA,cACL,KAAA,EAAO,KAAA;AAAA,cACP,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACxC,SAAA,EAAU;AAAA;AAAA;AACX,SAAA,EACD;AAAA,OAAA,EACD,CAAA;AAAA,sBAEAC,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iCAAA,EAChB,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,IAAA,EAAK,UAAA;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,UAAU,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,YAC3C,SAAA,EAAU;AAAA;AAAA,SACX;AAAA,QACC,OAAO,MAAA,IAAU;AAAA,OAAA,EACnB,CAAA;AAAA,sBAEAC,KAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAChB,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAACuB,MAAAA,EAAA,EAAO,SAAA,EAAU,yBAAA,EAA0B,CAAA;AAAA,UAC3C,OAAO,QAAA,IAAY;AAAA,SAAA,EACrB,CAAA;AAAA,wBACAvB,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO,QAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,WAAA,CAAY,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC3C,SAAA,EAAU,sKAAA;AAAA,YACV,WAAA,EAAY;AAAA;AAAA;AACb,OAAA,EACD,CAAA;AAAA,sBAEAC,KAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,wBAAAD,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EACf,QAAA,EAAA,MAAA,CAAO,eAAe,aAAA,EACxB,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO,WAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC9C,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAU,kLAAA;AAAA,YACV,WAAA,EAAY;AAAA;AAAA;AACb,OAAA,EACD;AAAA,KAAA,EACD,CAAA;AAAA,oBAEAC,IAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,OAAA,EACtB,QAAA,EAAA;AAAA,MAAA,MAAA,IAAU,QAAA,oBACVD,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,aAAA,EAAc,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,QAAA,EAC/C,QAAA,EAAA,MAAA,CAAO,MAAA,IAAU,QAAA,EACnB,CAAA;AAAA,sBAEDA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,sBACxBA,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAO,MACnB,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,WAAU,IAAA,EAAK,IAAA,EAC7B,QAAA,EAAA,MAAA,CAAO,MAAA,IAAU,UACnB,CAAA,EACD,CAAA;AAAA,sBACAC,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACA,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,QAAA,EAAU,UAAU,CAAC,OAAA,CAAQ,MAAK,IAAK,CAAC,WAAW,CAAC,KAAA;AAAA,UAEnD,QAAA,EAAA;AAAA,YAAA,MAAA,oBAAUD,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,WAAU,+BAAA,EAAgC,CAAA;AAAA,YAC7D,OAAO,IAAA,IAAQ;AAAA;AAAA;AAAA;AACjB,KAAA,EACD;AAAA,GAAA,EACD,CAAA,EACD,CAAA;AAEF;AClLO,SAAS,YAAA,CAAa;AAAA,EAC5B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV;AACD,CAAA,EAAsB;AACrB,EAAA,MAAM,aAAa,IAAI,GAAA;AAAA,IACtB,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,IAAI,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,YAAA,EAAc;AAAA,GACrD;AAEA,EAAA,uBACCjB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA,EAAe,IAAA;AAAA,MACf,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AAAA,MAC9B,UAAA,EAAY;AAAA,QACX,MAAA,EAAQ,eAAA;AAAA,QACR,KAAA,EAAO,WAAA;AAAA,QACP,aAAA,EAAe,2CAAA;AAAA,QACf,aAAA,EAAe,qBAAA;AAAA,QACf,GAAA,EAAK,6BAAA;AAAA,QACL,eAAA,EACC,yEAAA;AAAA,QACD,WAAA,EACC,0EAAA;AAAA,QACD,UAAA,EAAY,kCAAA;AAAA,QACZ,QAAA,EAAU,MAAA;AAAA,QACV,OAAA,EACC,gEAAA;AAAA,QACD,IAAA,EAAM,kBAAA;AAAA,QACN,GAAA,EAAK,0EAAA;AAAA,QACL,UAAA,EAAY,EAAA;AAAA,UACX,yBAAA;AAAA,UACA;AAAA,SACD;AAAA,QACA,QAAA,EACC,8FAAA;AAAA,QACD,KAAA,EAAO,6CAAA;AAAA,QACP,OAAA,EAAS,kCAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACX;AAAA,MACA,SAAA,EAAW;AAAA,QACV,UAAU,CAAC,IAAA,KAAS,WAAW,GAAA,CAAI,IAAA,CAAK,cAAc;AAAA,OACvD;AAAA,MACA,mBAAA,EAAqB;AAAA,QACpB,QAAA,EAAU;AAAA;AACX;AAAA,GACD;AAEF;AChDA,IAAM,YAAA,GAGF;AAAA,EACH,QAAA,EAAU;AAAA,IACT,IAAA,EAAMe,KAAAA;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EACC;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACT,IAAA,EAAMF,CAAAA;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACV,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO,WAAA;AAAA,IACP,SAAA,EACC;AAAA,GACF;AAAA,EACA,cAAA,EAAgB;AAAA,IACf,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW;AAAA;AAEb,CAAA;AAEO,SAAS,cAAA,CAAe;AAAA,EAC9B,OAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIL,SAAwB,IAAI,CAAA;AAC1D,EAAA,MAAM,MAAA,GAAU,aAAA,EAAe,WAAA,EAAY,IAAkB,cAAA;AAE7D,EAAA,MAAM,UAAA,GAAa,OAAO,QAAA,KAAuB;AAChD,IAAA,IAAI,aAAa,MAAA,EAAQ;AACzB,IAAA,UAAA,CAAW,QAAQ,CAAA;AACnB,IAAA,IAAI;AACH,MAAA,MAAM,MAAA,CAAO,SAAS,QAAQ,CAAA;AAAA,IAC/B,CAAA,SAAE;AACD,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA,IAChB;AAAA,EACD,CAAA;AAEA,EAAA,uBACCR,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,yBAAA,EAA2B,SAAS,CAAA,EACpD,QAAA,EAAA,CAAC,YAAY,WAAA,EAAa,UAAU,CAAA,CAAY,GAAA,CAAI,CAAC,EAAA,KAAO;AAC7D,IAAA,MAAM,GAAA,GAAM,aAAa,EAAE,CAAA;AAC3B,IAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,IAAA,MAAM,WAAW,MAAA,KAAW,EAAA;AAE5B,IAAA,uBACCC,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEA,OAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,QAAA,IAAY,IAAI,SAAS,CAAA;AAAA,QAC3D,OAAA,EAAS,MAAM,UAAA,CAAW,EAAE,CAAA;AAAA,QAC5B,UAAU,OAAA,KAAY,IAAA;AAAA,QAErB,QAAA,EAAA;AAAA,UAAA,OAAA,KAAY,EAAA,mBACZD,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,SAAA,EAAU,2BAAA,EAA4B,CAAA,mBAE/CjB,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,UAE/B,GAAA,CAAI;AAAA;AAAA,OAAA;AAAA,MAZA;AAAA,KAaN;AAAA,EAEF,CAAC,CAAA,EACF,CAAA;AAEF;ACjFA,IAAM,WAAA,GAAc,yBAAA;AAQb,SAAS,mBAAA,CAAoB;AAAA,EACnC,kBAAA;AAAA,EACA,QAAA;AAAA,EACA;AACD,CAAA,EAA6B;AAC5B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIQ,SAAS,MAAM;AAC1C,IAAA,IAAI,WAAA,KAAgB,QAAW,OAAO,WAAA;AACtC,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,KAAA;AAC1C,IAAA,IAAI;AACH,MAAA,OAAO,YAAA,CAAa,OAAA,CAAQ,WAAW,CAAA,KAAM,MAAA;AAAA,IAC9C,CAAA,CAAA,MAAQ;AACP,MAAA,OAAO,KAAA;AAAA,IACR;AAAA,EACD,CAAC,CAAA;AACD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAA0B,MAAM,CAAA;AACxD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA,CAA6B,EAAE,CAAA;AACzE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,QAAA,GAAWgB,OAAO,kBAAkB,CAAA;AAC1C,EAAA,QAAA,CAAS,OAAA,GAAU,kBAAA;AAEnB,EAAA,MAAM,WAAA,GAAcf,WAAAA,CAAY,CAACgB,KAAAA,KAAkB;AAClD,IAAA,SAAA,CAAUA,KAAI,CAAA;AACd,IAAA,IAAI;AACH,MAAA,YAAA,CAAa,OAAA,CAAQ,WAAA,EAAa,MAAA,CAAOA,KAAI,CAAC,CAAA;AAAA,IAC/C,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAA,GAAoBhB,YAAY,YAAY;AACjD,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI;AACH,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,OAAA,EAAQ;AACtC,MAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,IACxB,CAAA,CAAA,MAAQ;AAAA,IAER,CAAA,SAAE;AACD,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACnB;AAAA,EACD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAE,UAAU,MAAM;AACf,IAAA,KAAK,iBAAA,EAAkB;AAAA,EACxB,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,MAAA,GAASF,WAAAA,CAAY,MAAM,WAAA,CAAY,CAAC,MAAM,CAAA,EAAG,CAAC,MAAA,EAAQ,WAAW,CAAC,CAAA;AAC5E,EAAA,MAAM,IAAA,GAAOA,YAAY,MAAM,WAAA,CAAY,IAAI,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAC/D,EAAA,MAAM,KAAA,GAAQA,YAAY,MAAM;AAC/B,IAAA,WAAA,CAAY,KAAK,CAAA;AACjB,IAAA,OAAA,CAAQ,MAAM,CAAA;AACd,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,QAAA,GAAWA,WAAAA;AAAA,IAChB,CAAC,QAAgB,MAAA,KAAoB;AACpC,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,eAAA,CAAgB,MAAM,CAAA;AACtB,MAAA,IAAI,MAAA,EAAQ;AACX,QAAA,eAAA,CAAgB,MAAM,CAAA;AACtB,QAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MACf,CAAA,MAAO;AACN,QAAA,MAAM,OAAO,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,MAAM,CAAA;AAC1D,QAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG;AACpC,UAAA,eAAA,CAAgB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,EAAE,CAAA;AAChC,UAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,QACf,CAAA,MAAO;AACN,UAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,UAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,QACf;AAAA,MACD;AAAA,IACD,CAAA;AAAA,IACA,CAAC,aAAa,aAAa;AAAA,GAC5B;AAEA,EAAA,MAAM,UAAA,GAAaA,WAAAA;AAAA,IAClB,CAAC,QAAgB,MAAA,KAAmB;AACnC,MAAA,eAAA,CAAgB,MAAM,CAAA;AACtB,MAAA,eAAA,CAAgB,MAAM,CAAA;AACtB,MAAA,OAAA,CAAQ,MAAM,CAAA;AACd,MAAA,IAAI,CAAC,MAAA,EAAQ,WAAA,CAAY,IAAI,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,QAAQ,WAAW;AAAA,GACrB;AAEA,EAAA,MAAM,IAAA,GAAOA,YAAY,MAAM;AAC9B,IAAA,OAAA,CAAQ,MAAM,CAAA;AACd,IAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQ;AAAA,IACb,MAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACV;AAEA,EAAA,uBACCT,GAAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,OAC3B,QAAA,EACF,CAAA;AAEF;ACvFA,IAAM,aAAA,GAAgB,GAAA;AACtB,IAAM,mBAAA,GAAsB,GAAA;AAC5B,IAAM,mBAAA,GAAsB,GAAA;AAErB,SAAS,WAAA,CACf,MAAA,EACA,MAAA,EACA,OAAA,GAA8B,EAAC,EACX;AACpB,EAAA,MAAM;AAAA,IACL,iBAAA,GAAoB,mBAAA;AAAA,IACpB,iBAAA,GAAoB,mBAAA;AAAA,IACpB,YAAA,GAAe;AAAA,GAChB,GAAI,OAAA;AAEJ,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIQ,QAAAA,CAA4B,EAAE,CAAA;AAC9D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,QAAAA,CAEpC,EAAE,CAAA;AACJ,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,SAAS,IAAI,CAAA;AACzD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE9D,EAAA,MAAM,KAAA,GAAQgB,OAAyB,IAAI,CAAA;AAC3C,EAAA,MAAM,UAAA,GAAaA,OAAO,IAAI,CAAA;AAC9B,EAAA,MAAM,iBAAA,GAAoBA,OAAO,iBAAiB,CAAA;AAClD,EAAA,MAAM,iBAAA,GAAoBA,OAA6C,IAAI,CAAA;AAC3E,EAAA,MAAM,YAAA,GAAeA,OAA8C,IAAI,CAAA;AACvE,EAAA,MAAM,SAAA,GAAYA,OAAO,MAAM,CAAA;AAC/B,EAAA,MAAM,SAAA,GAAYA,OAAsB,IAAI,CAAA;AAC5C,EAAA,MAAM,aAAA,GAAgBA,MAAAA,iBAAO,IAAI,GAAA,EAAa,CAAA;AAC9C,EAAA,MAAM,kBAAA,GAAqBA,MAAAA;AAAA,IAA4B,MACtD,QAAQ,OAAA;AAAQ,GACjB;AACA,EAAA,MAAM,SAAA,GAAYA,OAAO,MAAM,CAAA;AAC/B,EAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AACpB,EAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AAEpB,EAAA,MAAM,WAAA,GAAcf,YAAY,MAAM;AACrC,IAAA,IAAI,kBAAkB,OAAA,EAAS;AAC9B,MAAA,YAAA,CAAa,kBAAkB,OAAO,CAAA;AACtC,MAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA;AAAA,IAC7B;AACA,IAAA,IAAI,aAAa,OAAA,EAAS;AACzB,MAAA,aAAA,CAAc,aAAa,OAAO,CAAA;AAClC,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAAA,IACxB;AAAA,EACD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkBA,YAAY,YAAY;AAC/C,IAAA,IAAI,CAAC,SAAA,CAAU,OAAA,IAAW,gBAAA,IAAoB,CAAC,cAAA,EAAgB;AAE/D,IAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,IAAA,IAAI;AACH,MAAA,MAAM,GAAA,GAAM,MAAM,SAAA,CAAU,OAAA,CAAQ,QAAA,EAAS;AAC7C,MAAA,IAAI,CAAC,GAAA,EAAK;AAEV,MAAA,MAAM,SAAS,IAAI,eAAA,CAAgB,EAAE,KAAA,EAAO,MAAM,CAAA;AAClD,MAAA,IAAI,UAAU,OAAA,EAAS;AACtB,QAAA,MAAA,CAAO,GAAA,CAAI,QAAA,EAAU,SAAA,CAAU,OAAO,CAAA;AAAA,MACvC;AAEA,MAAA,MAAM,MAAM,MAAM,KAAA;AAAA,QACjB,CAAA,EAAG,UAAU,OAAA,CAAQ,OAAO,UAAU,SAAA,CAAU,OAAO,aAAa,MAAM,CAAA,CAAA;AAAA,QAC1E,EAAE,OAAA,EAAS,EAAE,eAAe,CAAA,OAAA,EAAU,GAAG,IAAG;AAAE,OAC/C;AAEA,MAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AAEb,MAAA,MAAM,IAAA,GAAQ,MAAM,GAAA,CAAI,IAAA,EAAK;AAM7B,MAAA,IAAI,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,EAAG;AAC3C,QAAA,MAAM,WAAA,GAAc,KAAK,MAAA,CAAO,MAAA;AAAA,UAC/B,CAAC,CAAA,KAAM,CAAC,cAAc,OAAA,CAAQ,GAAA,CAAI,EAAE,EAAE;AAAA,SACvC;AACA,QAAA,KAAA,MAAW,KAAK,WAAA,EAAa;AAC5B,UAAA,aAAA,CAAc,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAE,EAAE,CAAA;AAAA,QAC/B;AACA,QAAA,WAAA,CAAY,CAAC,IAAA,KAAS,CAAC,GAAG,WAAA,EAAa,GAAG,IAAI,CAAC,CAAA;AAC/C,QAAA,SAAA,CAAU,UAAU,IAAA,CAAK,UAAA;AACzB,QAAA,iBAAA,CAAkB,IAAA,CAAK,eAAe,IAAI,CAAA;AAAA,MAC3C,CAAA,MAAO;AACN,QAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,MACxB;AAAA,IACD,CAAA,CAAA,MAAQ;AAAA,IAER,CAAA,SAAE;AACD,MAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,IAC1B;AAAA,EACD,CAAA,EAAG,CAAC,gBAAA,EAAkB,cAAc,CAAC,CAAA;AAErC,EAAA,MAAM,WAAA,GAAcA,WAAAA;AAAA,IACnB,CAAC,SAAiB,aAAA,KAA6B;AAC9C,MAAA,MAAM,KAAK,KAAA,CAAM,OAAA;AACjB,MAAA,IAAI,CAAC,EAAA,IAAM,EAAA,CAAG,UAAA,KAAe,UAAU,IAAA,EAAM;AAE7C,MAAA,EAAA,CAAG,IAAA;AAAA,QACF,KAAK,SAAA,CAAU;AAAA,UACd,IAAA,EAAM,cAAA;AAAA,UACN,OAAA;AAAA,UACA,aAAA;AAAA,UACA,eAAA,EAAiB,OAAO,UAAA;AAAW,SACnC;AAAA,OACF;AAAA,IACD,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,MAAM,UAAA,GAAaA,WAAAA,CAAY,CAAC,QAAA,KAAsB;AACrD,IAAA,MAAM,KAAK,KAAA,CAAM,OAAA;AACjB,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,CAAG,UAAA,KAAe,UAAU,IAAA,EAAM;AAE7C,IAAA,EAAA,CAAG,IAAA,CAAK,KAAK,SAAA,CAAU,EAAE,MAAM,QAAA,EAAU,QAAA,EAAU,CAAC,CAAA;AAAA,EACrD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAE,UAAU,MAAM;AACf,IAAA,kBAAA,CAAmB,OAAA,GAAU,eAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,EAAA,MAAM,OAAA,GAAUF,YAAY,YAAY;AACvC,IAAA,IAAI,CAAC,SAAA,CAAU,OAAA,IAAW,CAAC,WAAW,OAAA,EAAS;AAE/C,IAAA,IAAI,GAAA,GAAqB,IAAA;AACzB,IAAA,IAAI;AACH,MAAA,GAAA,GAAM,MAAM,SAAA,CAAU,OAAA,CAAQ,QAAA,EAAS;AAAA,IACxC,CAAA,CAAA,MAAQ;AACP,MAAA,IAAI,WAAW,OAAA,EAAS;AACvB,QAAA,QAAA,CAAS,oCAAoC,CAAA;AAAA,MAC9C;AACA,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,UAAA,CAAW,OAAA,EAAS;AAEjC,IAAA,MAAM,OAAA,GAAU,UAAU,OAAA,CAAQ,OAAA;AAClC,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,OAAA,EAAS,IAAI,CAAA;AAC5C,IAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,MAAM,CAAA,sBAAA,EAAyB,kBAAA,CAAmB,SAAA,CAAU,OAAO,CAAC,CAAA,OAAA,EAAU,kBAAA,CAAmB,GAAG,CAAC,CAAA,CAAA;AAEtH,IAAA,IAAI,EAAA;AACJ,IAAA,IAAI;AACH,MAAA,EAAA,GAAK,IAAI,UAAU,KAAK,CAAA;AAAA,IACzB,SAAS,GAAA,EAAK;AACb,MAAA,IAAI,WAAW,OAAA,EAAS;AACvB,QAAA,QAAA;AAAA,UACC,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU;AAAA,SACtC;AAAA,MACD;AACA,MAAA;AAAA,IACD;AAEA,IAAA,KAAA,CAAM,OAAA,GAAU,EAAA;AAEhB,IAAA,EAAA,CAAG,SAAS,MAAM;AACjB,MAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACxB,QAAA,EAAA,CAAG,KAAA,EAAM;AACT,QAAA;AAAA,MACD;AACA,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,iBAAA,CAAkB,OAAA,GAAU,iBAAA;AAE5B,MAAA,EAAA,CAAG,KAAK,IAAA,CAAK,SAAA,CAAU,EAAE,IAAA,EAAM,cAAA,EAAgB,CAAC,CAAA;AAEhD,MAAA,YAAA,CAAa,OAAA,GAAU,YAAY,MAAM;AACxC,QAAA,IAAI,EAAA,CAAG,UAAA,KAAe,SAAA,CAAU,IAAA,EAAM;AACrC,UAAA,EAAA,CAAG,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,GAAA,EAAI,EAAG,CAAC,CAAA;AAAA,QAChE;AAAA,MACD,GAAG,YAAY,CAAA;AAAA,IAChB,CAAA;AAEA,IAAA,EAAA,CAAG,SAAA,GAAY,CAAC,KAAA,KAAU;AACzB,MAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACzB,MAAA,IAAI;AACH,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,IAAc,CAAA;AAK3C,QAAA,QAAQ,IAAI,IAAA;AAAM,UACjB,KAAK,cAAA;AACJ,YAAA,KAAK,mBAAmB,OAAA,EAAQ;AAChC,YAAA;AAAA,UAED,KAAK,aAAA,EAAe;AACnB,YAAA,MAAM,UAAU,GAAA,CAAI,OAAA;AACpB,YAAA,IAAI,CAAC,aAAA,CAAc,OAAA,CAAQ,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA,EAAG;AAC3C,cAAA,aAAA,CAAc,OAAA,CAAQ,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA;AACpC,cAAA,WAAA,CAAY,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,OAAO,CAAC,CAAA;AAAA,YACzC;AACA,YAAA,cAAA;AAAA,cAAe,CAAC,SACf,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,OAAA,CAAQ,QAAQ;AAAA,aACjD;AACA,YAAA;AAAA,UACD;AAAA,UAEA,KAAK,kBAAA,EAAoB;AACxB,YAAA,MAAM,SAAS,GAAA,CAAI,MAAA;AACnB,YAAA,MAAM,QAAA,GAAY,IAAI,QAAA,IAAuB,IAAA;AAC7C,YAAA,MAAM,WAAW,GAAA,CAAI,QAAA;AAErB,YAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AACxB,cAAA,IAAI,QAAA,EAAU;AACb,gBAAA,IAAI,IAAA,CAAK,KAAK,CAAC,CAAA,KAAM,EAAE,MAAA,KAAW,MAAM,GAAG,OAAO,IAAA;AAClD,gBAAA,OAAO,CAAC,GAAG,IAAA,EAAM,EAAE,MAAA,EAAQ,UAAU,CAAA;AAAA,cACtC;AACA,cAAA,OAAO,KAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,MAAM,CAAA;AAAA,YAC9C,CAAC,CAAA;AACD,YAAA;AAAA,UACD;AAAA,UAEA,KAAK,MAAA;AACJ,YAAA;AAAA,UAED,KAAK,OAAA;AACJ,YAAA,QAAA,CAAU,GAAA,CAAI,WAAsB,6BAA6B,CAAA;AACjE,YAAA;AAAA;AACF,MACD,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACD,CAAA;AAEA,IAAA,EAAA,CAAG,UAAU,MAAM;AAClB,MAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACzB,MAAA,QAAA,CAAS,4BAA4B,CAAA;AAAA,IACtC,CAAA;AAEA,IAAA,EAAA,CAAG,UAAU,MAAM;AAClB,MAAA,IAAI,aAAa,OAAA,EAAS;AACzB,QAAA,aAAA,CAAc,aAAa,OAAO,CAAA;AAClC,QAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAAA,MACxB;AACA,MAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AAEzB,MAAA,cAAA,CAAe,KAAK,CAAA;AAEpB,MAAA,MAAM,QAAQ,iBAAA,CAAkB,OAAA;AAChC,MAAA,iBAAA,CAAkB,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,KAAA,GAAQ,GAAG,iBAAiB,CAAA;AAEjE,MAAA,iBAAA,CAAkB,OAAA,GAAU,WAAW,MAAM;AAC5C,QAAA,IAAI,UAAA,CAAW,OAAA,IAAW,SAAA,CAAU,OAAA,EAAS;AAC5C,UAAA,KAAK,OAAA,EAAQ;AAAA,QACd;AAAA,MACD,GAAG,KAAK,CAAA;AAAA,IACT,CAAA;AAAA,EACD,CAAA,EAAG,CAAC,iBAAA,EAAmB,iBAAA,EAAmB,YAAY,CAAC,CAAA;AAEvD,EAAAE,UAAU,MAAM;AACf,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AAErB,IAAA,IAAI,CAAC,MAAA,EAAQ;AACZ,MAAA,WAAA,CAAY,EAAE,CAAA;AACd,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,MAAA,SAAA,CAAU,OAAA,GAAU,IAAA;AACpB,MAAA,aAAA,CAAc,OAAA,uBAAc,GAAA,EAAI;AAChC,MAAA;AAAA,IACD;AAEA,IAAA,WAAA,CAAY,EAAE,CAAA;AACd,IAAA,cAAA,CAAe,EAAE,CAAA;AACjB,IAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,IAAA,SAAA,CAAU,OAAA,GAAU,IAAA;AACpB,IAAA,aAAA,CAAc,OAAA,uBAAc,GAAA,EAAI;AAChC,IAAA,iBAAA,CAAkB,OAAA,GAAU,iBAAA;AAE5B,IAAA,KAAK,OAAA,EAAQ;AAEb,IAAA,OAAO,MAAM;AACZ,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AACrB,MAAA,WAAA,EAAY;AACZ,MAAA,IAAI,MAAM,OAAA,EAAS;AAClB,QAAA,KAAA,CAAM,QAAQ,KAAA,EAAM;AACpB,QAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAAA,MACjB;AAAA,IACD,CAAA;AAAA,EACD,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,OAAO;AAAA,IACN,QAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACD;AACD;ACtTA,IAAM,UAAA,GAAqC;AAAA,EAC1C,MAAA,EAAQ,iDAAA;AAAA,EACR,MAAA,EAAQ,0DAAA;AAAA,EACR,WAAA,EAAa,uDAAA;AAAA,EACb,YAAA,EAAc,oDAAA;AAAA,EACd,KAAA,EAAO;AACR,CAAA;AA6BO,SAAS,YAAA,CAAa;AAAA,EAC5B,MAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV,SAAA;AAAA,EACA;AACD,CAAA,EAAsB;AACrB,EAAA,MAAM;AAAA,IACL,QAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACD,GAAI,WAAA,CAAY,MAAA,EAAQ,MAAM,CAAA;AAE9B,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIH,SAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIA,QAAAA,CAElD,EAAE,CAAA;AACJ,EAAA,MAAM,SAAA,GAAYgB,OAAuB,IAAI,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAWA,OAA4B,IAAI,CAAA;AACjD,EAAA,MAAM,YAAA,GAAeA,OAAyB,IAAI,CAAA;AAClD,EAAA,MAAM,gBAAA,GAAmBA,OAA6C,IAAI,CAAA;AAC1E,EAAA,MAAM,mBAAA,GAAsBA,OAAO,CAAC,CAAA;AAEpC,EAAAb,UAAU,MAAM;AACf,IAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,QAAA,CAAS,MAAA,GAAS,mBAAA,CAAoB,OAAA,EAAS;AAClD,MAAA,EAAA,CAAG,YAAY,EAAA,CAAG,YAAA;AAAA,IACnB;AACA,IAAA,mBAAA,CAAoB,UAAU,QAAA,CAAS,MAAA;AAAA,EACxC,CAAA,EAAG,CAAC,QAAA,CAAS,MAAM,CAAC,CAAA;AAEpB,EAAA,MAAM,YAAA,GAAeF,YAAY,MAAM;AACtC,IAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,EAAA,CAAG,SAAA,GAAY,EAAA,IAAM,cAAA,IAAkB,CAAC,gBAAA,EAAkB;AAC7D,MAAA,KAAK,eAAA,EAAgB;AAAA,IACtB;AAAA,EACD,CAAA,EAAG,CAAC,cAAA,EAAgB,gBAAA,EAAkB,eAAe,CAAC,CAAA;AAEtD,EAAA,MAAM,YAAA,GAAeA,YAAY,MAAM;AACtC,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI,gBAAA,CAAiB,OAAA,EAAS,YAAA,CAAa,gBAAA,CAAiB,OAAO,CAAA;AACnE,IAAA,gBAAA,CAAiB,UAAU,UAAA,CAAW,MAAM,UAAA,CAAW,KAAK,GAAG,GAAI,CAAA;AAAA,EACpE,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,iBAAA,GAAoBA,YAAY,MAAM;AAC3C,IAAA,MAAM,OAAA,GAAU,WAAW,IAAA,EAAK;AAChC,IAAA,MAAM,aAAA,GAAgB,kBAAA,CACpB,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,SAAS,CAAA,CAC1B,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAEjB,IAAA,IAAI,CAAC,OAAA,IAAW,aAAA,CAAc,MAAA,KAAW,CAAA,EAAG;AAE5C,IAAA,WAAA,CAAY,OAAA,EAAS,aAAA,CAAc,MAAA,GAAS,CAAA,GAAI,gBAAgB,MAAS,CAAA;AACzE,IAAA,aAAA,CAAc,EAAE,CAAA;AAChB,IAAA,qBAAA,CAAsB,EAAE,CAAA;AACxB,IAAA,UAAA,CAAW,KAAK,CAAA;AAChB,IAAA,IAAI,gBAAA,CAAiB,OAAA,EAAS,YAAA,CAAa,gBAAA,CAAiB,OAAO,CAAA;AACnE,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EACzB,GAAG,CAAC,UAAA,EAAY,kBAAA,EAAoB,WAAA,EAAa,UAAU,CAAC,CAAA;AAE5D,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAgD;AACtE,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAC,EAAE,QAAA,EAAU;AACrC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,iBAAA,EAAkB;AAAA,IACnB;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,OAAO,CAAA,KAA2C;AAC1E,IAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AACvB,IAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG;AAElC,IAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,EAAG;AACrC,MAAA,MAAM,MAAA,GAAS,OAAO,UAAA,EAAW;AACjC,MAAA,MAAM,OAAA,GAA6B;AAAA,QAClC,EAAA,EAAI,MAAA;AAAA,QACJ,UAAU,IAAA,CAAK,IAAA;AAAA,QACf,UAAU,IAAA,CAAK,IAAA;AAAA,QACf,QAAA,EAAU,KAAK,IAAA,IAAQ,0BAAA;AAAA,QACvB,SAAA,EAAW;AAAA,OACZ;AACA,MAAA,qBAAA,CAAsB,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,OAAO,CAAC,CAAA;AAElD,MAAA,IAAI;AACH,QAAA,MAAM,GAAA,GAAM,MAAM,MAAA,CAAO,QAAA,EAAS;AAClC,QAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,eAAe,CAAA;AAEzC,QAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,QAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,IAAI,CAAA;AAE5B,QAAA,MAAM,MAAM,MAAM,KAAA;AAAA,UACjB,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA,OAAA,EAAU,MAAM,CAAA,mBAAA,CAAA;AAAA,UACjC;AAAA,YACC,MAAA,EAAQ,MAAA;AAAA,YACR,OAAA,EAAS,EAAE,aAAA,EAAe,CAAA,OAAA,EAAU,GAAG,CAAA,CAAA,EAAG;AAAA,YAC1C,IAAA,EAAM;AAAA;AACP,SACD;AAEA,QAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,MAAM,IAAI,MAAM,eAAe,CAAA;AAE5C,QAAA,MAAM,IAAA,GAAQ,MAAM,GAAA,CAAI,IAAA,EAAK;AAU7B,QAAA,qBAAA;AAAA,UAAsB,CAAC,SACtB,IAAA,CAAK,GAAA;AAAA,YAAI,CAAC,CAAA,KACT,CAAA,CAAE,EAAA,KAAO,SACN,EAAE,GAAG,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,SAAA,EAAW,OAAM,GAC7C;AAAA;AACJ,SACD;AAAA,MACD,CAAA,CAAA,MAAQ;AACP,QAAA,qBAAA,CAAsB,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAC,CAAA;AAAA,MACpE;AAAA,IACD;AAEA,IAAA,IAAI,YAAA,CAAa,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,KAAA,GAAQ,EAAA;AAAA,EACxD,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,EAAA,KAAe;AACxC,IAAA,qBAAA,CAAsB,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,EAChE,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAAsB;AACzC,IAAA,OAAO,IAAI,IAAA,CAAK,SAAS,CAAA,CAAE,kBAAA,CAAmB,EAAC,EAAG;AAAA,MACjD,IAAA,EAAM,SAAA;AAAA,MACN,MAAA,EAAQ;AAAA,KACR,CAAA;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAAsB;AACzC,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,SAAS,CAAA;AAC/B,IAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,IAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,KAAK,CAAA;AAChC,IAAA,SAAA,CAAU,OAAA,CAAQ,SAAA,CAAU,OAAA,EAAQ,GAAI,CAAC,CAAA;AAEzC,IAAA,IAAI,IAAA,CAAK,YAAA,EAAa,KAAM,KAAA,CAAM,YAAA,EAAa;AAC9C,MAAA,OAAO,OAAO,KAAA,IAAS,OAAA;AACxB,IAAA,IAAI,IAAA,CAAK,YAAA,EAAa,KAAM,SAAA,CAAU,YAAA,EAAa;AAClD,MAAA,OAAO,OAAO,SAAA,IAAa,WAAA;AAC5B,IAAA,OAAO,IAAA,CAAK,mBAAmB,EAAC,EAAG,EAAE,KAAA,EAAO,OAAA,EAAS,GAAA,EAAK,SAAA,EAAW,CAAA;AAAA,EACtE,CAAA;AAEA,EAAA,MAAM,kBAAkB,QAAA,CAAS,MAAA;AAAA,IAChC,CAAC,QAAQ,OAAA,KAAY;AACpB,MAAA,MAAM,IAAA,GAAO,UAAA,CAAW,OAAA,CAAQ,SAAS,CAAA;AACzC,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,GAAG,MAAA,CAAO,IAAI,IAAI,EAAC;AACnC,MAAA,MAAA,CAAO,IAAI,CAAA,CAAE,IAAA,CAAK,OAAO,CAAA;AACzB,MAAA,OAAO,MAAA;AAAA,IACR,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB;AACzC,IAAA,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA;AACjC,IAAA,IAAI,KAAA,GAAQ,OAAO,IAAA,EAAM,OAAO,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AAC5D,IAAA,OAAO,IAAI,KAAA,IAAS,IAAA,GAAO,IAAA,CAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AAAA,EAC7C,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,YAAA,KACzB,CAAA,EAAG,OAAO,OAAO,CAAA,OAAA,EAAU,MAAM,CAAA,aAAA,EAAgB,YAAY,CAAA,CAAA;AAE9D,EAAA,MAAM,eAAe,CAAC,IAAA,KAAkB,SAAA,GAAY,SAAA,CAAU,IAAI,CAAA,GAAI,IAAA;AAEtE,EAAA,uBACCR,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA,EACnD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oEAAA,EACd,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,sBAAA,EAAuB,eAAY,MAAA,EAAO,CAAA;AAAA,wBACnEA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,uBAAa,MAAA,EAAO;AAAA,OAAA,EAC5D,CAAA;AAAA,sBACAA,GAAAA,CAAC,eAAA,EAAA,EACA,QAAA,kBAAAC,KAAC,OAAA,EAAA,EACA,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACtB,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA,WAAA,mBACAA,IAAC,IAAA,EAAA,EAAK,SAAA,EAAU,8BAA6B,CAAA,mBAE7CA,IAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,8BAAA,EAA+B,CAAA,EAEpD,CAAA,EACD,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EACC,QAAA,EAAA,WAAA,GAAc,WAAA,GAAe,SAAS,iBAAA,EACxC;AAAA,OAAA,EACD,CAAA,EACD;AAAA,KAAA,EACD,CAAA;AAAA,oBAEAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACd,QAAA,EAAA;AAAA,sBAAAA,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,GAAA,EAAK,SAAA;AAAA,UACL,QAAA,EAAU,YAAA;AAAA,UACV,SAAA,EAAU,4BAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,gBAAA,oBACAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACd,QAAA,kBAAAA,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,SAAA,EAAU,4CAAA,EAA6C,CAAA,EACjE,CAAA;AAAA,YAGA,QAAA,CAAS,WAAW,CAAA,IAAK,CAAC,mCAC1BhB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mEAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,aAAA;AAAA,gBAAA;AAAA,kBACA,SAAA,EAAU,yCAAA;AAAA,kBACV,aAAA,EAAY;AAAA;AAAA,eACb;AAAA,8BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+BAAA,EACX,QAAA,EAAA,MAAA,CAAO,cAAc,iBAAA,EACvB;AAAA,aAAA,EACD,oBAEAA,GAAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EACb,iBAAO,OAAA,CAAQ,eAAe,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,YAAY,CAAA,qBACxDC,KAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACd,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAwB,CAAA;AAAA,gCACvCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCACd,QAAA,EAAA,IAAA,EACF,CAAA;AAAA,gCACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAwB;AAAA,eAAA,EACxC,CAAA;AAAA,8BACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aACb,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,OAAA,KAAY;AAC9B,gBAAA,MAAM,aAAA,GAAgB,QAAQ,QAAA,KAAa,aAAA;AAE3C,gBAAA,uBACCC,IAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBAEA,SAAA,EAAW,EAAA;AAAA,sBACV,YAAA;AAAA,sBACA,gBAAgB,kBAAA,GAAqB;AAAA,qBACtC;AAAA,oBAEA,QAAA,EAAA;AAAA,sCAAAD,GAAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACA,SAAA,EAAW,EAAA;AAAA,4BACV,yFAAA;AAAA,4BACA,UAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,IAC5B,UAAA,CAAW;AAAA,2BACb;AAAA,0BAEE,QAAA,EAAA,CAAA,OAAA,CAAQ,cAAc,OAAA,CAAQ,QAAA,EAC9B,MAAM,GAAG,CAAA,CACT,IAAI,CAAC,CAAA,KAAM,EAAE,CAAC,CAAC,EACf,IAAA,CAAK,EAAE,EACP,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CACV,WAAA;AAAY;AAAA,uBACf;AAAA,sCACAC,IAAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACA,SAAA,EAAW,EAAA;AAAA,4BACV,2BAAA;AAAA,4BACA,gBAAgB,WAAA,GAAc;AAAA,2BAC/B;AAAA,0BAEA,QAAA,EAAA;AAAA,4CAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACd,QAAA,EAAA;AAAA,8CAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qCAAA,EACd,QAAA,EAAA,OAAA,CAAQ,UAAA,IACR,OAAA,CAAQ,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAC7B,CAAA;AAAA,8CACAA,GAAAA;AAAA,gCAAC,MAAA;AAAA,gCAAA;AAAA,kCACA,SAAA,EAAW,EAAA;AAAA,oCACV,6CAAA;AAAA,oCACA,UAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,IAAK;AAAA,mCACnC;AAAA,kCAEC,QAAA,EAAA,YAAA,CAAa,QAAQ,UAAU;AAAA;AAAA,+BACjC;AAAA,8CACAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qCACd,QAAA,EAAA,UAAA,CAAW,OAAA,CAAQ,SAAS,CAAA,EAC9B;AAAA,6BAAA,EACD,CAAA;AAAA,4BACC,OAAA,CAAQ,2BACRA,GAAAA;AAAA,8BAAC,KAAA;AAAA,8BAAA;AAAA,gCACA,SAAA,EAAW,EAAA;AAAA,kCACV,8BAAA;AAAA,kCACA,gBACG,kDAAA,GACA;AAAA,iCACJ;AAAA,gCAEC,QAAA,EAAA,OAAA,CAAQ;AAAA;AAAA,6BACV;AAAA,4BAEA,OAAA,CAAQ,WAAA,CAAY,MAAA,GAAS,CAAA,oBAC7BA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA,OAAA,CAAQ,WAAA,CAAY,GAAA;AAAA,8BAAI,CAAC,GAAA,KACzB,GAAA,CAAI,SAAS,UAAA,CAAW,QAAQ,oBAC/BA,GAAAA;AAAA,gCAAC,GAAA;AAAA,gCAAA;AAAA,kCAEA,IAAA,EAAM,gBAAA,CAAiB,GAAA,CAAI,EAAE,CAAA;AAAA,kCAC7B,MAAA,EAAO,QAAA;AAAA,kCACP,GAAA,EAAI,qBAAA;AAAA,kCACJ,SAAA,EAAU,uDAAA;AAAA,kCAEV,QAAA,kBAAAA,GAAAA;AAAA,oCAAC,KAAA;AAAA,oCAAA;AAAA,sCACA,GAAA,EAAK,gBAAA,CAAiB,GAAA,CAAI,EAAE,CAAA;AAAA,sCAC5B,KAAK,GAAA,CAAI,QAAA;AAAA,sCACT,SAAA,EAAU,4BAAA;AAAA,sCACV,OAAA,EAAQ;AAAA;AAAA;AACT,iCAAA;AAAA,gCAXK,GAAA,CAAI;AAAA,kDAcVC,IAAAA;AAAA,gCAAC,GAAA;AAAA,gCAAA;AAAA,kCAEA,IAAA,EAAM,gBAAA,CAAiB,GAAA,CAAI,EAAE,CAAA;AAAA,kCAC7B,MAAA,EAAO,QAAA;AAAA,kCACP,GAAA,EAAI,qBAAA;AAAA,kCACJ,SAAA,EAAU,4GAAA;AAAA,kCAEV,QAAA,EAAA;AAAA,oDAAAD,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,iDAAA,EAAkD,CAAA;AAAA,oDACtEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,sDAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sBAAA,EACX,cAAI,QAAA,EACN,CAAA;AAAA,sDACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qCACX,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA,EAC7B;AAAA,qCAAA,EACD,CAAA;AAAA,oDACAA,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,iDAAA,EAAkD;AAAA;AAAA,iCAAA;AAAA,gCAfjE,GAAA,CAAI;AAAA;AAgBV,6BAEF,EACD;AAAA;AAAA;AAAA;AAEF;AAAA,mBAAA;AAAA,kBAhGK,OAAA,CAAQ;AAAA,iBAiGd;AAAA,cAEF,CAAC,CAAA,EACF;AAAA,aAAA,EAAA,EAlHS,IAmHV,CACA,CAAA,EACF;AAAA;AAAA;AAAA,OAEF;AAAA,MAEC,WAAA,CAAY,MAAA,GAAS,CAAA,oBACrBA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACd,QAAA,kBAAAC,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sCAAA,EACX,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,YAAY,SAAS,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAC5D,WAAA,CAAY,MAAA,KAAW,CAAA,GAAI,IAAA,GAAO,KAAA;AAAA,QAAM;AAAA,OAAA,EAC1C,CAAA,EACD,CAAA;AAAA,MAGA,mBAAmB,MAAA,GAAS,CAAA,oBAC5BD,GAAAA,CAAC,SAAI,SAAA,EAAU,oCAAA,EACd,QAAA,kBAAAA,GAAAA,CAAC,SAAI,SAAA,EAAU,wBAAA,EACb,6BAAmB,GAAA,CAAI,CAAC,wBACxBC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEA,SAAA,EAAU,gEAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,GAAA,CAAI,SAAA,mBACJD,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,SAAA,EAAU,sBAAA,EAAuB,CAAA,mBAE1CjB,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,4BAE/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,cAAI,QAAA,EAAS,CAAA;AAAA,4BACvDA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACA,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,MAAM,gBAAA,CAAiB,GAAA,CAAI,EAAE,CAAA;AAAA,gBACtC,SAAA,EAAU,6CAAA;AAAA,gBAEV,QAAA,kBAAAA,GAAAA,CAACa,CAAAA,EAAA,EAAE,WAAU,SAAA,EAAU;AAAA;AAAA;AACxB;AAAA,SAAA;AAAA,QAfK,GAAA,CAAI;AAAA,OAiBV,GACF,CAAA,EACD,CAAA;AAAA,sBAGDb,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BACd,QAAA,kBAAAC,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACA,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,iBAAA,EAAkB;AAAA,UACnB,CAAA;AAAA,UACA,SAAA,EAAU,YAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACA,GAAA,EAAK,YAAA;AAAA,gBACL,IAAA,EAAK,MAAA;AAAA,gBACL,QAAA,EAAQ,IAAA;AAAA,gBACR,SAAA,EAAU,QAAA;AAAA,gBACV,QAAA,EAAU;AAAA;AAAA,aACX;AAAA,4BACAA,GAAAA,CAAC,eAAA,EAAA,EACA,QAAA,kBAAAC,KAAC,OAAA,EAAA,EACA,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACtB,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACA,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,SAAA,EAAU,uBAAA;AAAA,kBACV,OAAA,EAAS,MAAM,YAAA,CAAa,OAAA,EAAS,KAAA,EAAM;AAAA,kBAC3C,YAAA,EAAY,OAAO,UAAA,IAAc,aAAA;AAAA,kBAEjC,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,eAChC,EACD,CAAA;AAAA,8BACAA,GAAAA,CAAC,cAAA,EAAA,EACC,QAAA,EAAA,MAAA,CAAO,cAAc,aAAA,EACvB;AAAA,aAAA,EACD,CAAA,EACD,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACA,GAAA,EAAK,QAAA;AAAA,gBACL,KAAA,EAAO,UAAA;AAAA,gBACP,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,kBAAA,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAC5B,kBAAA,YAAA,EAAa;AAAA,gBACd,CAAA;AAAA,gBACA,SAAA,EAAW,aAAA;AAAA,gBACX,WAAA,EAAa,OAAO,WAAA,IAAe,mBAAA;AAAA,gBACnC,SAAA,EAAU,mPAAA;AAAA,gBACV,IAAA,EAAM;AAAA;AAAA,aACP;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACA,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAU,KAAA;AAAA,gBACV,QAAA,EACC,CAAC,UAAA,CAAW,IAAA,EAAK,IACjB,kBAAA,CAAmB,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,SAAS,EAAE,MAAA,KAAW,CAAA;AAAA,gBAE3D,YAAA,EAAY,OAAO,IAAA,IAAQ,MAAA;AAAA,gBAE3B,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,eAAY,MAAA,EAAO;AAAA;AAAA;AAC9C;AAAA;AAAA,OACD,EACD;AAAA,KAAA,EACD;AAAA,GAAA,EACD,CAAA;AAEF;AChfA,IAAM,cAAA,GAAyC;AAAA,EAC9C,YAAA,EAAc,qBAAA;AAAA,EACd,YAAA,EAAc;AACf,CAAA;AAoBO,SAAS,WAAA,CAAY;AAAA,EAC3B,aAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV,SAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA;AACD,CAAA,EAAqB;AACpB,EAAA,MAAM;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACG,cAAA,EAAe;AAEnB,EAAAW,UAAU,MAAM;AACf,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,WAAA,EAAa;AAC9C,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,UAAA,CAAW,oBAAoB,CAAA;AACjD,IAAA,MAAM,QAAQ,MAAM;AACnB,MAAA,IAAI,EAAA,CAAG,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAAA,WAC1C,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,EAAA;AAAA,IACrC,CAAA;AACA,IAAA,KAAA,EAAM;AACN,IAAA,EAAA,CAAG,gBAAA,CAAiB,UAAU,KAAK,CAAA;AACnC,IAAA,OAAO,MAAM;AACZ,MAAA,EAAA,CAAG,mBAAA,CAAoB,UAAU,KAAK,CAAA;AACtC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,EAAA;AAAA,IAChC,CAAA;AAAA,EACD,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAiB;AAC1C,IAAA,IAAI,aAAA,EAAe,OAAO,aAAA,CAAc,IAAI,CAAA;AAC5C,IAAA,OAAO,cAAA,CAAe,IAAI,CAAA,IAAK,IAAA;AAAA,EAChC,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,eACxB,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,YAAY,CAAA,GACnD,IAAA;AAEH,EAAA,MAAM,OAAA,GAAU;AAAA,IACf,iBAAiB,eAAA,IAAmB;AAAA,GACrC;AAEA,EAAA,MAAM,wBACLX,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO,OAAA;AAAA,MACP,SAAA,EAAW,EAAA;AAAA,QACV,qCAAA;AAAA,QACA,uGAAA;AAAA,QACA,kJAAA;AAAA,QACA;AAAA,OACD;AAAA,MAEC,QAAA,EAAA,IAAA,KAAS,MAAA,mBACTC,IAAAA,CAAAe,UAAA,EACC,QAAA,EAAA;AAAA,wBAAAf,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sDAAA,EACd,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC0B,aAAAA,EAAA,EAAc,SAAA,EAAU,sBAAA,EAAuB,CAAA;AAAA,4BAChD1B,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uBAAA,EACd,QAAA,EAAA,MAAA,CAAO,SAAS,MAAA,EAClB;AAAA,WAAA,EACD,CAAA;AAAA,0BACAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,SAAA,EAAU,SAAA;AAAA,cACV,OAAA,EAAS,KAAA;AAAA,cAET,QAAA,kBAAAA,GAAAA,CAACa,CAAAA,EAAA,EAAE,WAAU,SAAA,EAAU;AAAA;AAAA;AACxB,SAAA,EACD,CAAA;AAAA,wBAEAb,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,QAAA,EACpB,QAAA,EAAA,SAAA,mBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACd,QAAA,kBAAAA,GAAAA,CAACiB,SAAA,EAAQ,SAAA,EAAU,4CAAA,EAA6C,CAAA,EACjE,CAAA,GACG,aAAA,CAAc,MAAA,KAAW,CAAA,mBAC5BhB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC0B,aAAAA,EAAA,EAAc,SAAA,EAAU,uCAAA,EAAwC,CAAA;AAAA,0BACjE1B,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+BAAA,EACX,QAAA,EAAA,MAAA,CAAO,mBAAmB,sBAAA,EAC5B;AAAA,SAAA,EACD,CAAA,mBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,MAAA,EACb,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,IAAA,qBACnBC,IAAAA,CAAC,KAAA,EAAA,EAAsB,WAAU,MAAA,EAChC,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACd,QAAA,EAAA;AAAA,8BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EACd,eAAK,UAAA,EACP,CAAA;AAAA,8BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kEAAA,EACd,eAAK,UAAA,EACP;AAAA,aAAA,EACD,CAAA;AAAA,YACC,IAAA,CAAK,8BACLA,GAAAA,CAAC,OAAE,SAAA,EAAU,wCAAA,EACX,eAAK,UAAA,EACP;AAAA,WAAA,EAEF,CAAA;AAAA,UACC,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,yBAChBC,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEA,IAAA,EAAK,QAAA;AAAA,cACL,SAAS,MAAM,UAAA,CAAW,IAAA,CAAK,EAAA,EAAI,KAAK,MAAM,CAAA;AAAA,cAC9C,SAAA,EAAW,EAAA;AAAA,gBACV,2GAAA;AAAA,gBACA,YAAA,KAAiB,KAAK,EAAA,IAAM;AAAA,eAC7B;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACd,QAAA,EAAA;AAAA,kCAAAD,GAAAA,CAAC0B,aAAAA,EAAA,EAAc,SAAA,EAAU,iDAAA,EAAkD,CAAA;AAAA,kCAC3E1B,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBACd,QAAA,EAAA,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA,EAC5B;AAAA,iBAAA,EACD,CAAA;AAAA,gCACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACb,QAAA,EAAA;AAAA,kBAAA,IAAA,CAAK,aAAA,oBACLD,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mCAAA,EACd,QAAA,EAAA,kBAAA,CAAmB,IAAA,CAAK,aAAa,CAAA,EACvC,CAAA;AAAA,kCAEDA,GAAAA,CAAC2B,YAAAA,EAAA,EAAa,WAAU,mCAAA,EAAoC;AAAA,iBAAA,EAC7D;AAAA;AAAA,aAAA;AAAA,YArBK,IAAA,CAAK;AAAA,WAuBX;AAAA,SAAA,EAAA,EAzCQ,IAAA,CAAK,MA0Cf,CACA,CAAA,EACF,CAAA,EAEF;AAAA,OAAA,EACD,CAAA,mBAEA1B,IAAAA,CAAAe,QAAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAf,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,SAAA,EAAU,SAAA;AAAA,cACV,OAAA,EAAS,IAAA;AAAA,cAET,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAChC;AAAA,UACC,kBAAA,oBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gBAAA,EACd,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8BAAA,EACX,6BAAmB,UAAA,EACrB,CAAA;AAAA,YACC,kBAAA,CAAmB,8BACnBA,GAAAA,CAAC,OAAE,SAAA,EAAU,wCAAA,EACX,6BAAmB,UAAA,EACrB;AAAA,WAAA,EAEF,CAAA;AAAA,0BAEDA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,SAAA,EAAU,SAAA;AAAA,cACV,OAAA,EAAS,KAAA;AAAA,cAET,QAAA,kBAAAA,GAAAA,CAACa,CAAAA,EAAA,EAAE,WAAU,SAAA,EAAU;AAAA;AAAA;AACxB,SAAA,EACD,CAAA;AAAA,QACC,gCACAb,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACA,MAAA,EAAQ,YAAA;AAAA,YACR,aAAA;AAAA,YACA,MAAA;AAAA,YACA,MAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA;AACX,OAAA,EAEF;AAAA;AAAA,GAEF;AAGD,EAAA,uBACCC,IAAAA,CAAAe,QAAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAhB,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,KAAA,EAAO,OAAA;AAAA,QACP,SAAA,EAAU,qFAAA;AAAA,QACV,aAAA,EAAW,IAAA;AAAA,QACX,OAAA,EAAS;AAAA;AAAA,KACV;AAAA,IACC;AAAA,GAAA,EACF,CAAA;AAEF;AAEA,SAAS,mBAAmB,OAAA,EAAyB;AACpD,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,OAAO,CAAA;AAC7B,EAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,EAAQ,GAAI,KAAK,OAAA,EAAQ;AAC5C,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAM,CAAA;AAE1C,EAAA,IAAI,OAAA,GAAU,GAAG,OAAO,KAAA;AACxB,EAAA,IAAI,OAAA,GAAU,EAAA,EAAI,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAE,CAAA;AACrC,EAAA,IAAI,KAAA,GAAQ,EAAA,EAAI,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AAC/B,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,EAAE,CAAA;AACnC,EAAA,IAAI,KAAA,GAAQ,CAAA,EAAG,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AAC9B,EAAA,OAAO,IAAA,CAAK,mBAAmB,EAAC,EAAG,EAAE,KAAA,EAAO,OAAA,EAAS,GAAA,EAAK,SAAA,EAAW,CAAA;AACtE;AC1PO,SAAS,iBAAA,CAAqB,OAAU,OAAA,EAAoB;AAClE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIQ,SAAS,KAAK,CAAA;AAEhD,EAAAG,UAAU,MAAM;AACf,IAAA,MAAM,KAAK,MAAA,CAAO,UAAA,CAAW,MAAM,YAAA,CAAa,KAAK,GAAG,OAAO,CAAA;AAC/D,IAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAEnB,EAAA,OAAO,SAAA;AACR;AAQO,SAAS,uBAAA,CACf,OACA,OAAA,EACgB;AAChB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIH,SAAwB,MAAS,CAAA;AAEnE,EAAAG,UAAU,MAAM;AACf,IAAA,YAAA,CAAa,MAAS,CAAA;AACtB,IAAA,MAAM,KAAK,MAAA,CAAO,UAAA,CAAW,MAAM,YAAA,CAAa,KAAK,GAAG,OAAO,CAAA;AAC/D,IAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,EAAE,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAEnB,EAAA,OAAO,SAAA;AACR;ACkBA,SAAS,UAAA,CAAW,GAAW,GAAA,EAAqB;AACnD,EAAA,OAAO,EAAE,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,KAAA,CAAM,GAAG,GAAG,CAAA;AACzC;AAEA,SAAS,UAAU,MAAA,EAAwB;AAC1C,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,CAAE,IAAA;AACtC,EAAA,MAAM,OAAO,QAAA,EAAU,IAAA,IAAQ,CAAC,CAAA,EAAG,GAAG,EAAE,CAAA;AACxC,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACrB,IAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,GAAA,EAAK,CAAC,CAAC,CAAA;AAC/B,IAAA,GAAA,GAAM,CAAA;AAAA,EACP;AACA,EAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,GAAG,CAAC,CAAA;AAC5B,EAAA,OAAO,KAAA,CAAM,OAAO,CAAC,CAAA,KAAM,EAAE,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAClD;AAEA,SAAS,YAAY,GAAA,EAAqD;AACzE,EAAA,MAAM,CAAA,GAAI,UAAA,CAAW,GAAA,EAAK,CAAC,CAAA;AAC3B,EAAA,IAAI,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG,OAAO,IAAA;AACzB,EAAA,MAAM,EAAA,GAAK,OAAO,QAAA,CAAS,CAAA,CAAE,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAC5C,EAAA,MAAM,EAAA,GAAK,OAAO,QAAA,CAAS,CAAA,CAAE,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAC5C,EAAA,IAAI,EAAA,GAAK,CAAA,IAAK,EAAA,GAAK,EAAA,EAAI,OAAO,IAAA;AAC9B,EAAA,MAAM,IAAA,GAAO,EAAA,GAAK,GAAA,GAAM,GAAA,GAAO,EAAA,GAAK,EAAA;AACpC,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,cAAA,CAAe,EAAE,KAAA,EAAO,MAAA,CAAO,EAAE,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,IAAI,CAAA,EAAG,CAAA;AAC1E,EAAA,IAAI,CAAC,GAAA,CAAI,OAAA,EAAS,OAAO,IAAA;AACzB,EAAA,OAAO,EAAE,KAAA,EAAO,EAAA,EAAI,IAAA,EAAK;AAC1B;AAEA,SAAS,eAAe,QAAA,EAAsC;AAC7D,EAAA,IAAI,CAAC,UAAU,OAAO,EAAA;AACtB,EAAA,IAAI,QAAA,KAAa,oBAAoB,OAAO,MAAA;AAC5C,EAAA,OAAO,QAAA;AACR;AAEA,SAAS,YAAA,CACR,UACA,QAAA,EACU;AACV,EAAA,IAAI,CAAC,QAAA,EAAU,MAAA,EAAQ,OAAO,IAAA;AAC9B,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,MAAM,CAAA,GAAI,eAAe,QAAQ,CAAA;AACjC,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,EAAa,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,WAAA,EAAa,CAAA;AACrE;AAEA,IAAM,cAAA,GACL,iRAAA;AAEM,SAAS,SAAA,CAAU;AAAA,EACzB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA;AAAA,EACA;AACD,CAAA,EAAmB;AAClB,EAAA,MAAM,SAAS,KAAA,EAAM;AACrB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIH,SAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAIA,SAAS,EAAE,CAAA;AACjC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAElD,EAAA,MAAM,UAAA,GAAa,YAAY,gBAAA,GAAmB,EAAA;AAClD,EAAA,MAAM,UAAA,GAAa,YAAY,WAAA,GAAc,SAAA;AAE7C,EAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,MAAA,CAAO,SAAS,CAAA;AAC/C,EAAA,MAAM,QAAA,GAAW,iBAAiB,IAAA,EAAM,IAAA;AACxC,EAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,QAAQ,CAAA,IAAK,SAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,iBAAiB,IAAA,EAAM,OAAA,EAAS,MAAM,EAAE,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AAClE,EAAA,MAAM,gBAAA,GAAmB,gBAAA,CAAiB,IAAA,EAAM,OAAA,GAAU,CAAC,CAAA;AAC3D,EAAA,MAAM,oBAAA,GACL,gBAAA,KAAqB,MAAA,IAAa,SAAA,CAAU,MAAA,IAAU,gBAAA;AACvD,EAAA,MAAM,OAAA,GAAU,QAAA,KAAa,kBAAA,IAAsB,KAAA,KAAU,SAAS,CAAA,GAAI,CAAA;AAE1E,EAAA,MAAM,YAAA,GAAe,YAAY,SAAS,CAAA;AAC1C,EAAA,MAAM,WAAA,GACL,SAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,MAAA,IAAU,CAAA,IAAK,YAAA,KAAiB,IAAA,GAC1D,KAAA,CAAM,cAAA,CAAe;AAAA,IACrB,KAAA,EAAO,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA;AAAA,IAChC,IAAA,EAAM,MAAA,CAAO,YAAA,CAAa,IAAI;AAAA,GAC9B,EAAE,OAAA,GACF,KAAA;AAEJ,EAAA,MAAM,QAAA,GAAW,IAAI,MAAA,IAAU,OAAA,IAAW,MAAM,GAAA,CAAI,GAAA,EAAK,OAAO,CAAA,CAAE,OAAA;AAElE,EAAA,MAAM,WAAA,GACL,gBAAA,CAAiB,OAAA,IAAW,YAAA,CAAa,UAAU,cAAc,CAAA;AAElE,EAAA,MAAM,WAAW,CAAC,iBAAA,IAAqB,UAAA,CAAW,IAAA,GAAO,MAAA,GAAS,CAAA;AAElE,EAAA,MAAM,YACL,WAAA,IAAe,WAAA,IAAe,YAAY,QAAA,IAAY,CAAC,YAAY,CAAC,KAAA;AAErE,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAqC;AAC7D,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,OAAO,SAAS,CAAA;AAC9C,IAAA,YAAA,CAAa,CAAC,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAqC;AAChE,IAAA,IAAI,CAAA,GAAI,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,OAAO,CAAC,CAAA;AACpC,IAAA,IAAI,CAAA,CAAE,MAAA,IAAU,CAAA,EAAG,CAAA,GAAI,GAAG,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACrD,IAAA,YAAA,CAAa,CAAC,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,WAAA,GAAcC,YAAY,YAAY;AAC3C,IAAA,IAAI,CAAC,YAAA,EAAc;AACnB,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,IAAI;AACH,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS;AAAA,QAC7B,GAAA,EAAK,SAAA;AAAA,QACL,UAAU,YAAA,CAAa,KAAA;AAAA,QACvB,SAAS,YAAA,CAAa,IAAA;AAAA,QACtB,GAAA;AAAA,QACA,UAAA,EAAY,UAAA,CAAW,IAAA,EAAK,IAAK,KAAA;AAAA,OACjC,CAAA;AACD,MAAA,QAAA,CAAS,MAAM,CAAA;AACf,MAAA,YAAA,CAAa,EAAE,CAAA;AACf,MAAA,YAAA,CAAa,EAAE,CAAA;AACf,MAAA,MAAA,CAAO,EAAE,CAAA;AACT,MAAA,aAAA,CAAc,EAAE,CAAA;AAAA,IACjB,SAAS,GAAA,EAAK;AACb,MAAA,MAAM,GAAA,GAAM,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,UAAU,MAAA,CAAO,cAAA;AACxD,MAAA,OAAA,GAAU,GAAG,CAAA;AAAA,IACd,CAAA,SAAE;AACD,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACpB;AAAA,EACD,CAAA,EAAG;AAAA,IACF,GAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA,CAAO,cAAA;AAAA,IACP,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACA,CAAA;AAED,EAAA,MAAM,UAAA,GACL,UAAA,IAAc,SAAA,CAAU,MAAA,IAAU,CAAA,GAC/B,SAAA,CAAU,SAAS,CAAA,GACnB,CAAA,2EAAA,EAAkB,SAAA,CAAU,KAAA,CAAM,EAAE,CAAC,CAAA,CAAA;AAEzC,EAAA,IAAI,OAAO,OAAA,EAAS;AACnB,IAAA,uBACCR,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,6CAAA,EAA+C,SAAS,CAAA;AAAA,QAEtE,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACd,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,+BAAA,EAAgC,CAAA;AAAA,4BACtDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,gBAAM,MAAA,EAAO,CAAA;AAAA,4BAC5CC,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACd,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,KAAA,CAAM,QAAQ,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAAA,cAAE,GAAA;AAAA,cACxC,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,CAAE,MAAM,EAAE;AAAA,aAAA,EAChC;AAAA,WAAA,EACD,CAAA;AAAA,UACC,KAAA,CAAM,6BACND,GAAAA,CAAC,OAAE,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA,KAAA,CAAM,UAAA,EAAW,CAAA,GAC5D,IAAA;AAAA,0BACJA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACA,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,QAAA;AAAA,cACA,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,cAE3B,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACT;AAAA;AAAA,KACD;AAAA,EAEF;AAEA,EAAA,uBACCC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA,EACtE,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,OAAA,EAAS,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,UAClB,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,UAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,OACT;AAAA,sBACAA,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,EAAA,EAAI,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,UACb,SAAA,EAAU,SAAA;AAAA,UACV,YAAA,EAAa,WAAA;AAAA,UACb,KAAA,EAAO,UAAA;AAAA,UACP,QAAA,EAAU,eAAA;AAAA,UACV,OAAA,EAAS,MAAM,aAAA,CAAc,IAAI,CAAA;AAAA,UACjC,MAAA,EAAQ,MAAM,aAAA,CAAc,KAAK,CAAA;AAAA,UACjC,WAAA,EAAY,qBAAA;AAAA,UACZ,QAAA;AAAA,UACA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,UAAU;AAAA;AAAA,OACzC;AAAA,MACC,UAAU,MAAA,GAAS,CAAA,KAClB,CAAC,gBAAA,CAAiB,sBACjB,oBAAA,IAAwB,CAAC,gBAAA,CAAiB,OAAA,CAAA,oBAC3CA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0BAAA,EAA4B,iBAAO,aAAA,EAAc,CAAA;AAAA,MAE/D,UAAU,MAAA,GAAS,CAAA,IACnB,gBAAA,CAAiB,kBAAA,IACjB,CAAC,YAAA,CAAa,QAAA,EAAU,cAAc,CAAA,oBACrCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0BAAA,EAA4B,iBAAO,aAAA,EAAc;AAAA,KAAA,EAEjE,CAAA;AAAA,IAEC,iBAAA,oBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EACd,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,OAAA,EAAS,GAAG,MAAM,CAAA,OAAA,CAAA;AAAA,UAClB,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,UAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,OACT;AAAA,sBACAA,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,EAAA,EAAI,GAAG,MAAM,CAAA,OAAA,CAAA;AAAA,UACb,YAAA,EAAa,SAAA;AAAA,UACb,KAAA,EAAO,UAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UAC7C,QAAA;AAAA,UACA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,UAAU;AAAA;AAAA;AACzC,KAAA,EACD,CAAA;AAAA,oBAGDC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACd,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,OAAA,EAAS,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,YAClB,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,YAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,SACT;AAAA,wBACAA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,EAAA,EAAI,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,YACb,SAAA,EAAU,SAAA;AAAA,YACV,YAAA,EAAa,QAAA;AAAA,YACb,KAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,kBAAA;AAAA,YACV,WAAA,EAAY,OAAA;AAAA,YACZ,QAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,UAAU;AAAA;AAAA,SACzC;AAAA,QACC,SAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,EAAE,EAAE,MAAA,IAAU,CAAA,IAAK,CAAC,WAAA,oBAC7CA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0BAAA,EAA4B,iBAAO,WAAA,EAAY;AAAA,OAAA,EAE9D,CAAA;AAAA,sBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,OAAA,EAAS,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,YAClB,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,YAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,SACT;AAAA,wBACAA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,EAAA,EAAI,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,YACb,SAAA,EAAU,SAAA;AAAA,YACV,YAAA,EAAa,QAAA;AAAA,YACb,KAAA,EAAO,GAAA;AAAA,YACP,QAAA,EAAU,CAAC,CAAA,KAAM,MAAA,CAAO,WAAW,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,YAC3D,WAAA,EAAa,OAAA,KAAY,CAAA,GAAI,MAAA,GAAS,KAAA;AAAA,YACtC,QAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,UAAU,CAAA;AAAA,YACxC,SAAA,EAAW;AAAA;AAAA,SACZ;AAAA,QACC,GAAA,CAAI,MAAA,GAAS,CAAA,IAAK,CAAC,QAAA,oBACnBA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,MAAA,CAAO,UAAA,EAAW;AAAA,OAAA,EAE7D;AAAA,KAAA,EACD,CAAA;AAAA,oBAEAC,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,CAAC,SAAA,IAAa,UAAA;AAAA,QACxB,OAAA,EAAS,MAAM,KAAK,WAAA,EAAY;AAAA,QAChC,SAAA,EAAU,OAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,UAAA,mBACAD,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,SAAA,EAAU,sBAAA,EAAuB,CAAA,mBAE1CjB,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAEhC,MAAA,CAAO;AAAA;AAAA;AAAA;AACT,GAAA,EACD,CAAA;AAEF;ACxPA,SAAS,aAAa,KAAA,EAAwC;AAC7D,EAAA,IAAI,CAAC,KAAA,EAAO;AACX,IAAA,OAAO;AAAA,MACN,MAAA,EAAQ,EAAA;AAAA,MACR,OAAA,EAAS,EAAA;AAAA,MACT,IAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAO,EAAA;AAAA,MACP,GAAA,EAAK,EAAA;AAAA,MACL,OAAA,EAAS;AAAA,KACV;AAAA,EACD;AACA,EAAA,OAAO;AAAA,IACN,MAAA,EAAQ,MAAM,MAAA,IAAU,EAAA;AAAA,IACxB,OAAA,EAAS,MAAM,OAAA,IAAW,EAAA;AAAA,IAC1B,IAAA,EAAM,MAAM,IAAA,IAAQ,EAAA;AAAA,IACpB,KAAA,EAAO,MAAM,KAAA,IAAS,EAAA;AAAA,IACtB,GAAA,EAAK,MAAM,GAAA,IAAO,EAAA;AAAA,IAClB,OAAA,EAAS;AAAA,GACV;AACD;AAEA,SAAS,WAAW,CAAA,EAA2B;AAC9C,EAAA,OAAO,KAAK,SAAA,CAAU;AAAA,IACrB,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,IACtB,OAAA,EAAA,CAAU,CAAA,CAAE,OAAA,IAAW,EAAA,EAAI,IAAA,EAAK;AAAA,IAChC,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,IAAA,EAAK;AAAA,IAClB,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,IAAA,GAAO,WAAA,EAAY;AAAA,IAClC,GAAA,EAAK,EAAE,GAAA,CAAI,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC;AAAA,GACxC,CAAA;AACF;AAEA,SAAS,kBAAkB,CAAA,EAA4B;AACtD,EAAA,MAAM,IAAA,GAAO,EAAE,GAAA,CAAI,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAChD,EAAA,MAAM,EAAA,GAAK,CAAA,CAAE,KAAA,CAAM,IAAA,EAAK;AACxB,EAAA,OACC,EAAE,MAAA,CAAO,IAAA,EAAK,CAAE,MAAA,GAAS,KACzB,CAAA,CAAE,IAAA,CAAK,IAAA,EAAK,CAAE,SAAS,CAAA,IACvB,eAAA,CAAgB,KAAK,EAAE,CAAA,IACvB,KAAK,MAAA,KAAW,CAAA;AAElB;AAEA,IAAM4B,eAAAA,GACL,iRAAA;AAEM,SAAS,cAAA,CAAe;AAAA,EAC9B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA;AAAA,EACA;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIpB,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,QAAAA,CAA4B,EAAE,CAAA;AACpE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,QAAAA;AAAA,IAAyB,MACtD,aAAa,KAAK;AAAA,GACnB;AACA,EAAA,MAAM,CAAC,YAAY,CAAA,GAAIA,QAAAA;AAAA,IAAS,MAC/B,OAAO,MAAA,KAAW,WAAA,IAAe,MAAA,CAAO,aACrC,MAAA,CAAO,UAAA,EAAW,GAClB,CAAA,EAAG,KAAK,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,CAAK,QAAQ,CAAA;AAAA,GAClC;AAEA,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE5D,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,QAAAA;AAAA,IAC3C;AAAA,GACD;AACA,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIA,SAAS,KAAK,CAAA;AAEtE,EAAA,MAAM,SAAA,GAAYgB,OAAuB,IAAI,CAAA;AAC7C,EAAA,MAAM,eAAA,GAAkBA,MAAAA,iBAAuC,IAAI,GAAA,EAAK,CAAA;AACxE,EAAA,MAAM,YAAYA,MAAAA,CAAO;AAAA,IACxB,YAAA,EAAc,KAAA;AAAA,IACd,GAAA,EAAK,KAAA;AAAA,IACL,QAAA,EAAU;AAAA,GACV,CAAA;AACD,EAAA,MAAM,aAAA,GAAgBA,OAAe,EAAE,CAAA;AAEvC,EAAA,MAAM,UAAA,GAAaA,OAAO,OAAO,CAAA;AACjC,EAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAErB,EAAA,MAAM,mBAAA,GAAsBA,OAAe,EAAE,CAAA;AAE7C,EAAA,MAAM,eAAA,GAAkB,iBAAA,CAAkB,WAAA,EAAa,GAAG,CAAA;AAC1D,EAAA,MAAM,SAAA,GAAY,QAAQ,GAAA,CAAI,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAC3D,EAAA,MAAM,YAAA,GAAe,iBAAA,CAAkB,SAAA,EAAW,GAAG,CAAA;AACrD,EAAA,MAAM,2BAAA,GAA8B,uBAAA,CAAwB,OAAA,EAAS,IAAI,CAAA;AAEzE,EAAA,MAAM,UAAA,GAAa,YAAY,gBAAA,GAAmB,EAAA;AAClD,EAAA,MAAM,UAAA,GAAa,YAAY,WAAA,GAAc,SAAA;AAE7C,EAAAb,UAAU,MAAM;AACf,IAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAsB;AACjD,MAAA,IACC,SAAA,CAAU,WACV,CAAC,SAAA,CAAU,QAAQ,QAAA,CAAS,KAAA,CAAM,MAAc,CAAA,EAC/C;AACD,QAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,MACzB;AAAA,IACD,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,kBAAkB,CAAA;AAAA,EAC1E,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,SAAS,IAAA,GAAO,EAAA,GAAK,KAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAA;AAEpE,EAAAA,UAAU,MAAM;AACf,IAAA,UAAA,CAAW,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,iBAAA,GAAoB,CACzB,KAAA,EACA,UAAA,KACI;AACJ,IAAA,UAAA,CAAW,CAAC,IAAA,KAAS;AACpB,MAAA,MAAM,IAAA,GACL,KAAA,KAAU,SAAA,GACP,EAAE,GAAG,IAAA,EAAM,OAAA,EAAS,IAAA,EAAc,GAClC,EAAE,GAAG,IAAA,EAAM,CAAC,KAAK,GAAG,UAAA,EAAW;AACnC,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,OAAO,IAAA;AAAA,IACR,CAAC,CAAA;AAAA,EACF,CAAA;AAGA,EAAAA,UAAU,MAAM;AACf,IAAA,MAAM,GAAA,GAAM,UAAA,CAAW,UAAA,CAAW,OAAO,CAAA;AACzC,IAAA,IAAI,GAAA,KAAQ,oBAAoB,OAAA,EAAS;AACxC,MAAA,uBAAA,CAAwB,KAAK,CAAA;AAC7B,MAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACvB;AAAA,EACD,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,iBAAA,GAAoB,QAAQ,YAAY,CAAA;AAC9C,EAAA,MAAM,mBAAA,GAAsB,QAAQ,eAAe,CAAA;AACnD,EAAA,MAAM,cAAA,GAAiB,QAAQ,SAAS,CAAA;AAGxC,EAAAA,UAAU,MAAM;AACf,IAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,YAAA,EAAc;AACzC,IAAA,MAAM,CAAA,GAAI,gBAAgB,IAAA,EAAK;AAC/B,IAAA,IAAI,CAAA,CAAE,SAAS,CAAA,EAAG;AACjB,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,MAAA,sBAAA,CAAuB,KAAK,CAAA;AAC5B,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,QAAA,GAAW,EAAE,WAAA,EAAY;AAC/B,IAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AACnD,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,cAAA,CAAe,MAAM,CAAA;AACrB,MAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,MAAA,sBAAA,CAAuB,KAAK,CAAA;AAC5B,MAAA;AAAA,IACD;AAEA,IAAA,MAAM,IAAA,GAAO,IAAI,eAAA,EAAgB;AACjC,IAAA,sBAAA,CAAuB,IAAI,CAAA;AAE3B,IAAA,YAAA,CACE,MAAA,CAAO,GAAG,YAAA,EAAc,IAAA,CAAK,MAAM,CAAA,CACnC,IAAA,CAAK,CAAC,IAAA,KAAS;AACf,MAAA,IAAI,IAAA,CAAK,OAAO,OAAA,EAAS;AACzB,MAAA,eAAA,CAAgB,OAAA,CAAQ,GAAA,CAAI,QAAA,EAAU,IAAI,CAAA;AAC1C,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,kBAAA,CAAmB,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,IACnC,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,CAAA,KAAe;AACtB,MAAA,IAAK,CAAA,CAAY,SAAS,YAAA,EAAc;AACxC,MAAA,IAAI,CAAC,SAAA,CAAU,OAAA,CAAQ,YAAA,EAAc;AACpC,QAAA,OAAA,GAAU,OAAO,uBAAuB,CAAA;AACxC,QAAA,SAAA,CAAU,QAAQ,YAAA,GAAe,IAAA;AAAA,MAClC;AACA,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,IACzB,CAAC,CAAA,CACA,OAAA,CAAQ,MAAM,sBAAA,CAAuB,KAAK,CAAC,CAAA;AAE7C,IAAA,OAAO,MAAM,KAAK,KAAA,EAAM;AAAA,EACzB,CAAA,EAAG;AAAA,IACF,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA,CAAO,uBAAA;AAAA,IACP;AAAA,GACA,CAAA;AAGD,EAAAA,UAAU,MAAM;AACf,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,SAAA,EAAW;AACnC,IAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC/B,IAAA,IAAI,YAAA,KAAiB,cAAc,OAAA,EAAS;AAE5C,IAAA,MAAM,IAAA,GAAO,IAAI,eAAA,EAAgB;AACjC,IAAA,aAAA,CAAc,IAAI,CAAA;AAElB,IAAA,SAAA,CAAU,cAAc,IAAA,CAAK,MAAM,CAAA,CACjC,IAAA,CAAK,CAAC,IAAA,KAAS;AACf,MAAA,IAAI,IAAA,CAAK,OAAO,OAAA,EAAS;AACzB,MAAA,aAAA,CAAc,OAAA,GAAU,YAAA;AACxB,MAAA,UAAA,CAAW,CAAC,IAAA,KAAS;AACpB,QAAA,MAAM,SAAA,GAAY,CAAC,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK;AAClC,QAAA,MAAM,UAAA,GAAa,CAAC,IAAA,CAAK,KAAA,CAAM,IAAA,EAAK;AACpC,QAAA,MAAM,IAAA,GAAO,EAAE,GAAG,IAAA,EAAK;AACvB,QAAA,IAAI,SAAA,IAAa,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AAC7C,QAAA,IAAI,UAAA,IAAc,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AAChD,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,OAAO,IAAA;AAAA,MACR,CAAC,CAAA;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACZ,MAAA,IAAI,CAAC,SAAA,CAAU,OAAA,CAAQ,GAAA,EAAK;AAC3B,QAAA,OAAA,GAAU,OAAO,eAAe,CAAA;AAChC,QAAA,SAAA,CAAU,QAAQ,GAAA,GAAM,IAAA;AAAA,MACzB;AAAA,IACD,CAAC,CAAA,CACA,OAAA,CAAQ,MAAM,aAAA,CAAc,KAAK,CAAC,CAAA;AAEpC,IAAA,OAAO,MAAM,KAAK,KAAA,EAAM;AAAA,EACzB,CAAA,EAAG;AAAA,IACF,YAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA,CAAO,eAAA;AAAA,IACP;AAAA,GACA,CAAA;AAGD,EAAAA,UAAU,MAAM;AACf,IAAA,IAAI,CAAC,mBAAA,IAAuB,CAAC,eAAA,IAAmB,QAAA,EAAU;AAC1D,IAAA,IAAI,gCAAgC,MAAA,EAAW;AAC/C,IAAA,MAAM,IAAA,GAAO,2BAAA;AACb,IAAA,IAAI,CAAC,iBAAA,CAAkB,IAAI,CAAA,EAAG;AAE9B,IAAA,MAAM,UAAA,GAAa,WAAW,IAAI,CAAA;AAClC,IAAA,IAAI,UAAA,KAAe,oBAAoB,OAAA,EAAS;AAEhD,IAAA,MAAM,IAAA,GAAO,IAAI,eAAA,EAAgB;AACjC,IAAA,MAAM,YAAY,MAAA,CAAO,UAAA,CAAW,MAAM,IAAA,CAAK,KAAA,IAAS,GAAI,CAAA;AAC5D,IAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,IAAA,uBAAA,CAAwB,KAAK,CAAA;AAC7B,IAAA,iBAAA,CAAkB,IAAI,CAAA;AAEtB,IAAA,eAAA,CAAgB,MAAM,IAAA,CAAK,MAAM,CAAA,CAC/B,IAAA,CAAK,CAAC,MAAA,KAAW;AACjB,MAAA,IAAI,IAAA,CAAK,OAAO,OAAA,EAAS;AACzB,MAAA,IAAI,UAAA,CAAW,UAAA,CAAW,OAAO,CAAA,KAAM,UAAA,EAAY;AAEnD,MAAA,mBAAA,CAAoB,OAAA,GAAU,UAAA;AAC9B,MAAA,MAAM,MAAM,MAAA,CAAO,YAAA;AACnB,MAAA,IAAI,OAAO,OAAA,EAAS;AACnB,QAAA,iBAAA,CAAkB,GAAG,CAAA;AACrB,QAAA,uBAAA,CAAwB,KAAK,CAAA;AAAA,MAC9B,CAAA,MAAO;AACN,QAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,QAAA,uBAAA,CAAwB,IAAI,CAAA;AAAA,MAC7B;AAAA,IACD,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACZ,MAAA,IAAI,IAAA,CAAK,OAAO,OAAA,EAAS;AACzB,MAAA,IAAI,CAAC,SAAA,CAAU,OAAA,CAAQ,QAAA,EAAU;AAChC,QAAA,OAAA,GAAU,OAAO,eAAe,CAAA;AAChC,QAAA,SAAA,CAAU,QAAQ,QAAA,GAAW,IAAA;AAAA,MAC9B;AAAA,IACD,CAAC,CAAA,CACA,OAAA,CAAQ,MAAM;AACd,MAAA,MAAA,CAAO,aAAa,SAAS,CAAA;AAC7B,MAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,IACzB,CAAC,CAAA;AAEF,IAAA,OAAO,MAAM;AACZ,MAAA,MAAA,CAAO,aAAa,SAAS,CAAA;AAC7B,MAAA,IAAA,CAAK,KAAA,EAAM;AAAA,IACZ,CAAA;AAAA,EACD,CAAA,EAAG;AAAA,IACF,2BAAA;AAAA,IACA,mBAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA,CAAO,eAAA;AAAA,IACP;AAAA,GACA,CAAA;AAED,EAAA,MAAM,sBAAA,GAAyB,OAAO,GAAA,KAAyB;AAC9D,IAAA,IAAI,CAAC,YAAA,EAAc;AACnB,IAAA,IAAI;AACH,MAAA,MAAM,IAAA,GAAO,MAAM,YAAA,CAAa,OAAA;AAAA,QAC/B,GAAA,CAAI,OAAA;AAAA,QACJ,WAAA,CAAY,QAAQ,GAAI;AAAA,OACzB;AACA,MAAA,MAAM,UAAA,GAA6B;AAAA,QAClC,GAAG,IAAA;AAAA,QACH,OAAA,EAAS;AAAA,OACV;AACA,MAAA,UAAA,CAAW,UAAU,CAAA;AACrB,MAAA,QAAA,CAAS,UAAU,CAAA;AACnB,MAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,MAAA,mBAAA,CAAoB,OAAA,GAAU,EAAA;AAC9B,MAAA,uBAAA,CAAwB,KAAK,CAAA;AAAA,IAC9B,CAAA,CAAA,MAAQ;AACP,MAAA,OAAA,GAAU,OAAO,iBAAiB,CAAA;AAAA,IACnC;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAM;AACjC,IAAA,IAAI,CAAC,cAAA,EAAgB;AACrB,IAAA,UAAA,CAAW,cAAc,CAAA;AACzB,IAAA,QAAA,CAAS,cAAc,CAAA;AACvB,IAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,IAAA,mBAAA,CAAoB,OAAA,GAAU,WAAW,cAAc,CAAA;AACvD,IAAA,uBAAA,CAAwB,IAAI,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,MAAM,wBAAwB,MAAM;AACnC,IAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,IAAA,mBAAA,CAAoB,OAAA,GAAU,UAAA,CAAW,UAAA,CAAW,OAAO,CAAA;AAC3D,IAAA,uBAAA,CAAwB,IAAI,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,uBACCV,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EACvC,QAAA,EAAA;AAAA,IAAA,iBAAA,IAAqB,gCACrBA,IAAAA,CAAC,SAAI,GAAA,EAAK,SAAA,EAAW,WAAU,UAAA,EAC9B,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,wEAAA,EAAyE,CAAA;AAAA,wBAC3FA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO,WAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC9C,aAAa,MAAA,CAAO,iBAAA;AAAA,YACpB,QAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG4B,eAAAA,EAAgB,WAAA,EAAa,UAAU,CAAA;AAAA,YACrD,cAAY,MAAA,CAAO;AAAA;AAAA,SACpB;AAAA,QACC,uCACA5B,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,WAAU,uFAAA,EAAwF,CAAA;AAAA,QAE3G,8BACAjB,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,cAAA,CAAe,EAAE,CAAA;AAAA,YAChC,SAAA,EAAU,uFAAA;AAAA,YAEV,QAAA,kBAAAA,GAAAA,CAACa,CAAAA,EAAA,EAAE,WAAU,SAAA,EAAU;AAAA;AAAA,SACxB,GACG;AAAA,OAAA,EACL,CAAA;AAAA,MACC,eAAA,IAAmB,WAAA,CAAY,MAAA,GAAS,CAAA,oBACxCb,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8FAAA,EACb,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,+BACjBC,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEA,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,KAAK,sBAAA,CAAuB,UAAU,CAAA;AAAA,UACrD,SAAA,EAAU,sFAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBAAA,EAAuB,qBAAW,QAAA,EAAS,CAAA;AAAA,4BACxDA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EACX,qBAAW,aAAA,EACb;AAAA;AAAA,SAAA;AAAA,QARK,UAAA,CAAW;AAAA,OAUjB,CAAA,EACF;AAAA,KAAA,EAEF,CAAA;AAAA,oBAGDC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACd,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,OAAA,EAAQ,yBAAA;AAAA,YACR,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,YAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,SACT;AAAA,wBACAA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,EAAA,EAAG,yBAAA;AAAA,YACH,OAAO,OAAA,CAAQ,MAAA;AAAA,YACf,UAAU,CAAC,CAAA,KAAM,kBAAkB,QAAA,EAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC3D,WAAA,EAAa,OAAO,iBAAA,IAAqB,EAAA;AAAA,YACzC,QAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG4B,eAAAA,EAAgB,UAAU;AAAA;AAAA;AACzC,OAAA,EACD,CAAA;AAAA,sBAEA3B,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,OAAA,EAAQ,0BAAA;AAAA,YACR,SAAA,EAAW,EAAA;AAAA,cACV,GAAG,UAAU,CAAA,sBAAA,CAAA;AAAA,cACb;AAAA,aACD;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,OAAA,IAAW,gBAAA;AAAA,cAAkB,GAAA;AAAA,cACpC,OAAO,mBAAA,mBACPA,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,SAAA,EAAU,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAE,MAAA,CAAO,mBAAA;AAAA,gBAAoB;AAAA,eAAA,EAAC,CAAA,GACrD;AAAA;AAAA;AAAA,SACL;AAAA,wBACAD,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,EAAA,EAAG,0BAAA;AAAA,YACH,KAAA,EAAO,QAAQ,OAAA,IAAW,EAAA;AAAA,YAC1B,UAAU,CAAC,CAAA,KAAM,kBAAkB,SAAA,EAAW,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC5D,WAAA,EAAa,OAAO,kBAAA,IAAsB,EAAA;AAAA,YAC1C,QAAA;AAAA,YACA,SAAA,EAAW,EAAA,CAAG4B,eAAAA,EAAgB,UAAU;AAAA;AAAA;AACzC,OAAA,EACD,CAAA;AAAA,sBAEA3B,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACd,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,uBAAA;AAAA,cACR,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,cAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,WACT;AAAA,0BACAA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,EAAA,EAAG,uBAAA;AAAA,cACH,OAAO,OAAA,CAAQ,IAAA;AAAA,cACf,UAAU,CAAC,CAAA,KAAM,kBAAkB,MAAA,EAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACzD,WAAA,EAAa,OAAO,eAAA,IAAmB,EAAA;AAAA,cACvC,QAAA;AAAA,cACA,SAAA,EAAW,EAAA,CAAG4B,eAAAA,EAAgB,UAAU;AAAA;AAAA;AACzC,SAAA,EACD,CAAA;AAAA,wBACA3B,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,wBAAA;AAAA,cACR,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,cAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,WACT;AAAA,0BACAA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,EAAA,EAAG,wBAAA;AAAA,cACH,OAAO,OAAA,CAAQ,KAAA;AAAA,cACf,UAAU,CAAC,CAAA,KAAM,kBAAkB,OAAA,EAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cAC1D,WAAA,EAAa,OAAO,gBAAA,IAAoB,EAAA;AAAA,cACxC,QAAA;AAAA,cACA,SAAA,EAAW,EAAA,CAAG4B,eAAAA,EAAgB,UAAU;AAAA;AAAA;AACzC,SAAA,EACD;AAAA,OAAA,EACD,CAAA;AAAA,sBAEA3B,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACd,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,sBAAA;AAAA,cACR,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,cAEnD,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,WACT;AAAA,0BACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACd,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACA,EAAA,EAAG,sBAAA;AAAA,gBACH,OAAO,OAAA,CAAQ,GAAA;AAAA,gBACf,QAAA,EAAU,CAAC,CAAA,KACV,iBAAA;AAAA,kBACC,KAAA;AAAA,kBACA,CAAA,CAAE,OAAO,KAAA,CAAM,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE;AAAA,iBAC9C;AAAA,gBAED,WAAA,EAAa,OAAO,cAAA,IAAkB,EAAA;AAAA,gBACtC,QAAA;AAAA,gBACA,SAAA,EAAW,EAAA,CAAG4B,eAAAA,EAAgB,UAAU;AAAA;AAAA,aACzC;AAAA,YACC,8BACA5B,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,WAAU,sFAAA,EAAuF;AAAA,WAAA,EAE5G;AAAA,SAAA,EACD,CAAA;AAAA,wBACAhB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,0BAAA;AAAA,cACR,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,UAAU,CAAA;AAAA,cAEnD,iBAAO,YAAA,IAAgB;AAAA;AAAA,WACzB;AAAA,0BACAA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACA,EAAA,EAAG,0BAAA;AAAA,cACH,KAAA,EAAM,eAAA;AAAA,cACN,QAAA,EAAQ,IAAA;AAAA,cACR,QAAA;AAAA,cACA,SAAA,EAAW,EAAA,CAAG4B,eAAAA,EAAgB,UAAA,EAAY,aAAa,CAAA;AAAA,cACvD,eAAA,EAAc;AAAA;AAAA;AACf,SAAA,EACD;AAAA,OAAA,EACD;AAAA,KAAA,EACD,CAAA;AAAA,IAEC,mBAAA,oBACA3B,IAAAA,CAAAe,QAAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAhB,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAU,+DAAA;AAAA,UACV,WAAA,EAAU,QAAA;AAAA,UAET,QAAA,EAAA,eAAA,mBACAC,IAAAA,CAAAe,QAAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAhB,GAAAA,CAACiB,OAAAA,EAAA,EAAQ,SAAA,EAAU,mCAAA,EAAoC,CAAA;AAAA,4BACvDjB,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,cAAA,EAAe;AAAA,WAAA,EAC9B,IACG,oBAAA,IAAwB,CAAC,iCAC5BC,IAAAA,CAAAe,UAAA,EACC,QAAA,EAAA;AAAA,4BAAAhB,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,6DAAA,EAA8D,CAAA;AAAA,4BACtFA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,YAAA,EAAa;AAAA,WAAA,EAC5B,CAAA,mBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uBAAA,EAAwB,aAAA,EAAW,MAAC,QAAA,EAAA,MAAA,EAEpD;AAAA;AAAA,OAEF;AAAA,MAEC,cAAA,mBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yGAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wDAAA,EACX,iBAAO,aAAA,EACT,CAAA;AAAA,wBACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EACX,QAAA,EAAA;AAAA,UACA,cAAA,CAAe,MAAA;AAAA,UACf,cAAA,CAAe,OAAA;AAAA,UACf,cAAA,CAAe,IAAA;AAAA,UACf,cAAA,CAAe,KAAA;AAAA,UACf,cAAA,CAAe;AAAA,UAEd,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,IAAI,CAAA,EACZ,CAAA;AAAA,wBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,UAAO,IAAA,EAAK,QAAA,EAAS,MAAK,IAAA,EAAK,OAAA,EAAS,mBAAA,EACvC,QAAA,EAAA,MAAA,CAAO,iBAAA,EACT,CAAA;AAAA,0BACAA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACA,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,OAAA,EAAS,qBAAA;AAAA,cAER,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACT,SAAA,EACD;AAAA,OAAA,EACD,CAAA,GACG;AAAA,KAAA,EACL;AAAA,GAAA,EAEF,CAAA;AAEF;;;ACxmBO,IAAM,aAAA,GAA+B;AAAA,EAC3C,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,gBAAA,EAAiB;AAAA,EACtC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,iBAAA,EAAkB;AAAA,EACvC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,qBAAA,EAAsB;AAAA,EAC3C,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,UAAA,EAAW;AAAA,EAChC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,WAAA,EAAY;AAAA,EACjC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,qBAAA,EAAmB;AAAA,EACxC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,UAAA,EAAW;AAAA,EAChC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,QAAA,EAAS;AAAA,EAC9B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,YAAA,EAAa;AAAA,EAClC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,UAAA,EAAW;AAAA,EAChC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,WAAA,EAAS;AAAA,EAC9B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,cAAA,EAAY;AAAA,EACjC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,eAAA,EAAa;AAAA,EAClC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,QAAA,EAAS;AAAA,EAC9B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,QAAA,EAAS;AAAA,EAC9B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,cAAA,EAAY;AAAA,EACjC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,cAAA,EAAe;AAAA,EACpC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,oBAAA,EAAkB;AAAA,EACvC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,QAAA,EAAS;AAAA,EAC9B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,YAAA,EAAa;AAAA,EAClC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,UAAA,EAAW;AAAA,EAChC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,UAAA,EAAW;AAAA,EAChC,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,YAAA,EAAU;AAAA,EAC/B,EAAE,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM,WAAA;AACtB;;;ACtEO,IAAM,kBAAA,GAAoD;AAAA,EAChE,KAAA,EACC,o+BAAA;AAAA,EACD,KAAA,EACC,4/PAAA;AAAA,EACD,KAAA,EACC,m7bAAA;AAAA,EACD,KAAA,EACC,8tGAAA;AAAA,EACD,KAAA,EACC,u5HAAA;AAAA,EACD,KAAA,EACC,o5LAAA;AAAA,EACD,KAAA,EACC,siCAAA;AAAA,EACD,KAAA,EACC,ouLAAA;AAAA,EACD,KAAA,EACC,6yDAAA;AAAA,EACD,KAAA,EACC,yrJAAA;AAAA,EACD,KAAA,EACC,+8GAAA;AAAA,EACD,KAAA,EACC,ulJAAA;AAAA,EACD,KAAA,EACC,6uIAAA;AAAA,EACD,KAAA,EACC,8tPAAA;AAAA,EACD,KAAA,EACC,iqJAAA;AAAA,EACD,KAAA,EACC,69KAAA;AAAA,EACD,KAAA,EACC,kxDAAA;AAAA,EACD,KAAA,EACC,irGAAA;AAAA,EACD,KAAA,EACC,+nKAAA;AAAA,EACD,KAAA,EACC,2xMAAA;AAAA,EACD,KAAA,EACC,2oOAAA;AAAA,EACD,KAAA,EACC,w8EAAA;AAAA,EACD,KAAA,EACC,4/JAAA;AAAA,EACD,KAAA,EACC,02JAAA;AAAA,EACD,KAAA,EACC,u7MAAA;AAAA,EACD,KAAA,EACC,0tOAAA;AAAA,EACD,KAAA,EACC,wiHAAA;AAAA,EACD,KAAA,EACC,uoMAAA;AAAA,EACD,KAAA,EACC,ssDAAA;AAAA,EACD,KAAA,EACC,yuSAAA;AAAA,EACD,KAAA,EACC,yiDAAA;AAAA,EACD,KAAA,EACC;AACF;ACvDO,SAAS,SAAA,CAAU,EAAE,QAAA,EAAU,QAAA,EAAU,WAAU,EAAmB;AAC5E,EAAA,MAAM,aAAA,GAAgB,OAAO,QAAA,KAAa,UAAA;AAC1C,EAAA,MAAM,WAAA,GAAoB6B,eAAQ,MAAM,IAAI,IAAI,QAAQ,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAErE,EAAA,MAAM,aAAA,GAAsBA,MAAA,CAAA,WAAA;AAAA,IAC3B,CAAC,OAA4C,EAAA,KAAsB;AAClE,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC/C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,QAAA,CAAS,EAAE,CAAA;AAAA,MACZ;AAAA,IACD,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACV;AAEA,EAAA,uBACC7B,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,OAAA,EAAQ,cAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,MACvC,GAAI,CAAC,aAAA,GACH,EAAE,MAAM,KAAA,EAAO,YAAA,EAAc,mBAAA,EAAiB,GAC9C,EAAC;AAAA,MAEH,wBAAc,GAAA,CAAI,CAAC,EAAE,EAAA,EAAI,MAAK,KAAM;AACpC,QAAA,MAAM,UAAA,GAAa,WAAA,CAAY,GAAA,CAAI,EAAE,CAAA;AAErC,QAAA,uBACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEA,CAAA,EAAG,mBAAmB,EAAE,CAAA;AAAA,YACxB,YAAA,EAAY,IAAA;AAAA,YACX,GAAI,aAAA,GACF;AAAA,cACA,IAAA,EAAM,QAAA;AAAA,cACN,QAAA,EAAU,CAAA;AAAA,cACV,cAAA,EAAgB,UAAA;AAAA,cAChB,OAAA,EAAS,MAAM,QAAA,GAAW,EAAE,CAAA;AAAA,cAC5B,SAAA,EAAW,CAAC,KAAA,KACX,aAAA,CAAc,OAAO,EAAE;AAAA,gBAExB,EAAC;AAAA,YACJ,SAAA,EAAW,EAAA;AAAA,cACV,8CAAA;AAAA,cACA,aAAa,cAAA,GAAiB,YAAA;AAAA,cAC9B,gBACG,uJAAA,GACA;AAAA,aACJ;AAAA,YAEA,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,IAAA,EAAK;AAAA,WAAA;AAAA,UArBR;AAAA,SAsBN;AAAA,MAEF,CAAC;AAAA;AAAA,GACF;AAEF;ACnDA,IAAM,MAAA,GAGF;AAAA,EACH,QAAA,EAAU,sBAAA;AAAA,EACV,cAAA,EAAgB;AACjB,CAAA;AAEA,IAAMI,YAAAA,GAAc;AAAA,EACnB,EAAA,EAAI;AAAA,IACH,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,GAAA,EAAK,OAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACV;AAAA,EACA,EAAA,EAAI;AAAA,IACH,IAAA,EAAM,QAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,GAAA,EAAK,SAAA;AAAA,IACL,OAAA,EAAS;AAAA;AAEX,CAAA;AAEO,SAAS,yBAAA,CAA0B;AAAA,EACzC,MAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA,GAAY,KAAA;AAAA,EACZ;AACD,CAAA,EAAmC;AAClC,EAAA,IAAI,WAAW,YAAA,EAAc;AAC5B,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAM,CAAA;AAC3B,EAAA,MAAM,KAAA,GAAQA,aAAY,IAAI,CAAA;AAC9B,EAAA,MAAM,IAAA,GAAO,MAAA,KAAW,UAAA,GAAa,UAAA,GAAakB,KAAAA;AAClD,EAAA,MAAM,UAAA,GACL,MAAA,KAAW,UAAA,GAAa,cAAA,GAAiB,uBAAA;AAE1C,EAAA,IAAI,CAAC,SAAA,EAAW;AACf,IAAA,uBACCtB,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,YAAY,SAAS,CAAA;AAAA,QAC/C,YAAA,EAAY,KAAA;AAAA,QAEZ,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAO,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA,KACf;AAAA,EAEF;AAEA,EAAA,uBACCC,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO,KAAA;AAAA,MACP,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACV,yDAAA;AAAA,QACA,KAAA,CAAM,GAAA;AAAA,QACN,KAAA,CAAM,IAAA;AAAA,QACN,KAAA,CAAM,OAAA;AAAA,QACN,MAAA,KAAW,aACR,4BAAA,GACA,gCAAA;AAAA,QACH;AAAA,OACD;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,IAAC,IAAA,EAAA,EAAK,SAAA,EAAW,KAAA,CAAM,IAAA,EAAM,eAAY,MAAA,EAAO,CAAA;AAAA,wBAChDA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GACd;AAEF","file":"index.js","sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport interface CalendarEvent {\n\tid: string;\n\tcalendarId: string;\n\tsummary: string;\n\tdescription?: string | null;\n\tlocation?: string | null;\n\tdtstart: string;\n\tdtend: string;\n\tallDay?: boolean;\n\tstatus?: string;\n\trrule?: string | null;\n\treferenceType?: string | null;\n\treferenceId?: string | null;\n\tattendees?: Array<{\n\t\temail: string;\n\t\tdisplayName?: string | null;\n\t\tpartstat: string;\n\t\trole: string;\n\t}>;\n\treminders?: Array<{\n\t\tid: string;\n\t\ttriggerMinutes: number;\n\t\taction: string;\n\t}>;\n}\n\nexport interface CalendarData {\n\tid: string;\n\townerUserId: string;\n\tname: string;\n\tdescription?: string | null;\n\tfeedToken?: string;\n}\n\nexport interface CalendarContextValue {\n\tcalendars: CalendarData[];\n\tevents: CalendarEvent[];\n\tisLoading: boolean;\n\terror: string | null;\n\tfeedUrl: string | null;\n\trefetch: () => void;\n\tcreateEvent?: (data: Partial<CalendarEvent>) => Promise<void>;\n\tupdateEvent?: (\n\t\teventId: string,\n\t\tdata: Partial<CalendarEvent>,\n\t) => Promise<void>;\n\tdeleteEvent?: (eventId: string) => Promise<void>;\n\trsvpEvent?: (eventId: string, partstat: string) => Promise<void>;\n}\n\nexport const CalendarContext = createContext<CalendarContextValue | null>(null);\n\nexport function useCalendarContext(): CalendarContextValue | null {\n\treturn useContext(CalendarContext);\n}\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport interface ChatConversationRoom {\n\tid: string;\n\ttype: string;\n\tlastMessageAt: string | null;\n}\n\nexport interface ChatConversation {\n\tcaseId: string;\n\tcaseNumber: string;\n\tclientName: string | null;\n\tcaseStatus: string;\n\trooms: ChatConversationRoom[];\n}\n\nexport type ChatSidebarView = \"list\" | \"chat\";\n\nexport interface ChatSidebarContextValue {\n\tisOpen: boolean;\n\tview: ChatSidebarView;\n\tconversations: ChatConversation[];\n\tisLoading: boolean;\n\tactiveCaseId: string | null;\n\tactiveRoomId: string | null;\n\ttoggle: () => void;\n\topen: () => void;\n\tclose: () => void;\n\topenChat: (caseId: string, roomId?: string) => void;\n\tselectRoom: (roomId: string, caseId: string) => void;\n\tback: () => void;\n\trefetch: () => void;\n}\n\nexport const ChatSidebarContext = createContext<ChatSidebarContextValue | null>(\n\tnull,\n);\n\nexport function useChatSidebar(): ChatSidebarContextValue {\n\tconst ctx = useContext(ChatSidebarContext);\n\tif (!ctx) {\n\t\tthrow new Error(\"useChatSidebar must be used within a ChatSidebarProvider\");\n\t}\n\treturn ctx;\n}\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\n/**\n * Blocks Context Interfaces\n *\n * These interfaces define the contract that consuming apps must implement\n * to provide context to blocks components. Components will automatically\n * consume these contexts when available, falling back to props otherwise.\n */\n\n// =============================================================================\n// Notifications Context\n// =============================================================================\n\n/**\n * Notification type for blocks components.\n * This is the format that blocks components expect.\n */\nexport interface BlocksNotification {\n\tid: string;\n\ttitle: string;\n\tmessage?: string;\n\ttype?: \"info\" | \"success\" | \"warning\" | \"error\";\n\ttimestamp: Date;\n\tread?: boolean;\n\thref?: string;\n\tchannelId?: string;\n}\n\n/**\n * Notifications context value interface.\n * Consuming apps implement this interface to provide notifications data\n * and actions to blocks components.\n */\nexport interface NotificationsContextValue {\n\t/** List of notifications to display */\n\tnotifications: BlocksNotification[];\n\t/** Count of unread notifications */\n\tunreadCount: number;\n\t/** Mark a single notification as read by ID */\n\tmarkAsRead: (id: string) => void | Promise<void>;\n\t/** Mark all notifications as read */\n\tmarkAllAsRead: () => void | Promise<void>;\n\t/** Dismiss/remove a notification (optional) */\n\tdismiss?: (id: string) => void;\n\t/** Clear all notifications (optional) */\n\tclearAll?: () => void;\n\t/** Handle notification click (optional) */\n\tonNotificationClick?: (notification: BlocksNotification) => void;\n}\n\n/**\n * React context for notifications.\n * Blocks components will consume this context when available.\n */\nexport const NotificationsContext =\n\tcreateContext<NotificationsContextValue | null>(null);\n\n/**\n * Hook to consume the notifications context.\n * Returns null if no provider is present (components should fall back to props).\n */\nexport function useNotificationsContext(): NotificationsContextValue | null {\n\treturn useContext(NotificationsContext);\n}\n\n// =============================================================================\n// Language Context\n// =============================================================================\n\n/**\n * Language definition for the language switcher.\n */\nexport interface BlocksLanguage {\n\tcode: string;\n\tname: string;\n\tflag?: string;\n}\n\n/**\n * Language context value interface.\n * Consuming apps implement this interface to provide language state\n * and actions to blocks components.\n */\nexport interface LanguageContextValue {\n\t/** Current language code (e.g., \"en\", \"es\") */\n\tlanguage: string;\n\t/** Function to change the language */\n\tsetLanguage: (lang: string) => void;\n\t/** Available languages (optional, components have defaults) */\n\tlanguages?: BlocksLanguage[];\n}\n\n/**\n * React context for language.\n * Blocks components will consume this context when available.\n */\nexport const LanguageContext = createContext<LanguageContextValue | null>(null);\n\n/**\n * Hook to consume the language context.\n * Returns null if no provider is present (components should fall back to props).\n */\nexport function useLanguageContext(): LanguageContextValue | null {\n\treturn useContext(LanguageContext);\n}\n\n// =============================================================================\n// Data environment (production / staging / development)\n// =============================================================================\n\n/**\n * Isolated data plane environments aligned with API key environments.\n */\nexport type BlocksDataEnvironment = \"production\" | \"staging\" | \"development\";\n\nexport const BLOCKS_DATA_ENVIRONMENTS: readonly BlocksDataEnvironment[] = [\n\t\"production\",\n\t\"staging\",\n\t\"development\",\n] as const;\n\nexport function isBlocksDataEnvironment(\n\tvalue: string,\n): value is BlocksDataEnvironment {\n\treturn (BLOCKS_DATA_ENVIRONMENTS as readonly string[]).includes(value);\n}\n\n/**\n * Context value for environment switcher / banner.\n * Apps provide persistence (cookie + store) and wire `setEnvironment`.\n */\nexport interface EnvironmentContextValue {\n\tenvironment: BlocksDataEnvironment;\n\tsetEnvironment: (environment: BlocksDataEnvironment) => void;\n\t/** Optional override of environments shown in the switcher */\n\tenvironments?: readonly BlocksDataEnvironment[];\n}\n\nexport const EnvironmentContext = createContext<EnvironmentContextValue | null>(\n\tnull,\n);\n\nexport function useEnvironmentContext(): EnvironmentContextValue | null {\n\treturn useContext(EnvironmentContext);\n}\n\n// =============================================================================\n// Calendar Context (re-export from dedicated module)\n// =============================================================================\n\nexport { CalendarContext, useCalendarContext } from \"./calendar\";\nexport type {\n\tCalendarContextValue,\n\tCalendarEvent,\n\tCalendarData,\n} from \"./calendar\";\n\n// =============================================================================\n// Chat Sidebar Context (re-export from dedicated module)\n// =============================================================================\n\nexport { ChatSidebarContext, useChatSidebar } from \"./chat\";\nexport type {\n\tChatSidebarContextValue,\n\tChatSidebarView,\n\tChatConversation,\n\tChatConversationRoom,\n} from \"./chat\";\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nexport const concatArrays = <T, U>(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map<string, ClassPartObject> = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record<AnyClassGroupIds, ClassGroup<AnyThemeGroupIds>>,\n theme: ThemeObject<AnyThemeGroupIds>,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup<AnyThemeGroupIds>[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key extends string, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = <Key extends string, Value>(\n maxCacheSize: number,\n): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record<Key, Value> = Object.create(null)\n let previousCache: Record<Key, Value> = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map<string, number>()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: scaleInset() }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber] }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { AlertTriangle, Inbox, Loader2, type LucideIcon } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport function LoadingState({\n\tlabel = \"Cargando…\",\n\tclassName,\n}: {\n\tlabel?: string;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<div\n\t\t\trole=\"status\"\n\t\t\taria-live=\"polite\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex items-center justify-center gap-2 py-12 text-sm text-muted-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Loader2 className=\"size-4 animate-spin\" aria-hidden=\"true\" />\n\t\t\t<span>{label}</span>\n\t\t</div>\n\t);\n}\n\nexport function ErrorState({\n\ttitle = \"Algo salió mal\",\n\tdescription,\n\taction,\n\tclassName,\n}: {\n\ttitle?: string;\n\tdescription?: string;\n\taction?: React.ReactNode;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<div\n\t\t\trole=\"alert\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col items-center gap-3 rounded-xl border border-dashed border-destructive/40 bg-destructive/5 py-12 text-center\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<AlertTriangle className=\"size-6 text-destructive\" aria-hidden=\"true\" />\n\t\t\t<div>\n\t\t\t\t<p className=\"font-medium\">{title}</p>\n\t\t\t\t{description ? (\n\t\t\t\t\t<p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t{action}\n\t\t</div>\n\t);\n}\n\nexport type EmptyStateProps = {\n\ttitle: string;\n\tdescription?: string;\n\taction?: React.ReactNode;\n\ticon?: LucideIcon;\n\tvariant?: \"default\" | \"compact\";\n\tclassName?: string;\n};\n\nexport function EmptyState({\n\ttitle,\n\tdescription,\n\taction,\n\ticon: Icon = Inbox,\n\tvariant = \"default\",\n\tclassName,\n}: EmptyStateProps) {\n\tconst isCompact = variant === \"compact\";\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col items-center gap-3 text-center\",\n\t\t\t\tisCompact ? \"px-4 py-6\" : \"rounded-xl border border-dashed py-12\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Icon\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-muted-foreground\",\n\t\t\t\t\tisCompact ? \"size-8 opacity-50\" : \"size-6\",\n\t\t\t\t)}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t<p className={cn(\"font-medium\", isCompact && \"text-sm\")}>{title}</p>\n\t\t\t\t{description ? (\n\t\t\t\t\t<p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t{action}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/** Unclamped menu surface for compact header switchers (theme, language, env). */\nexport const miniMenuContentClassName =\n\t\"max-h-none overflow-x-visible overflow-y-visible\";\n\nexport const miniMenuContentDefaults = {\n\tsideOffset: 8,\n\tcollisionPadding: 12,\n} as const;\n\nfunction DropdownMenu({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n\treturn <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n\t);\n}\n\nfunction DropdownMenuTrigger({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Trigger\n\t\t\tdata-slot=\"dropdown-menu-trigger\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuContent({\n\tclassName,\n\tsideOffset = 4,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Portal>\n\t\t\t<DropdownMenuPrimitive.Content\n\t\t\t\tdata-slot=\"dropdown-menu-content\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[200] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</DropdownMenuPrimitive.Portal>\n\t);\n}\n\nfunction DropdownMenuGroup({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n\t);\n}\n\nfunction DropdownMenuItem({\n\tclassName,\n\tinset,\n\tvariant = \"default\",\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n\tinset?: boolean;\n\tvariant?: \"default\" | \"destructive\";\n}) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Item\n\t\t\tdata-slot=\"dropdown-menu-item\"\n\t\t\tdata-inset={inset}\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:data-[highlighted]:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 dark:data-[variant=destructive]:data-[highlighted]:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:data-[highlighted]:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuCheckboxItem({\n\tclassName,\n\tchildren,\n\tchecked,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.CheckboxItem\n\t\t\tdata-slot=\"dropdown-menu-checkbox-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tchecked={checked}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t\t<CheckIcon className=\"size-4\" />\n\t\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</DropdownMenuPrimitive.CheckboxItem>\n\t);\n}\n\nfunction DropdownMenuRadioGroup({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.RadioGroup\n\t\t\tdata-slot=\"dropdown-menu-radio-group\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuRadioItem({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.RadioItem\n\t\t\tdata-slot=\"dropdown-menu-radio-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t\t<CircleIcon className=\"size-2 fill-current\" />\n\t\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t\t</span>\n\t\t\t{children}\n\t\t</DropdownMenuPrimitive.RadioItem>\n\t);\n}\n\nfunction DropdownMenuLabel({\n\tclassName,\n\tinset,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n\tinset?: boolean;\n}) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Label\n\t\t\tdata-slot=\"dropdown-menu-label\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuSeparator({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.Separator\n\t\t\tdata-slot=\"dropdown-menu-separator\"\n\t\t\tclassName={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuShortcut({\n\tclassName,\n\t...props\n}: React.ComponentProps<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"dropdown-menu-shortcut\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground ml-auto text-xs tracking-widest\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DropdownMenuSub({\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n\treturn <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n\tclassName,\n\tinset,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n\tinset?: boolean;\n}) {\n\treturn (\n\t\t<DropdownMenuPrimitive.SubTrigger\n\t\t\tdata-slot=\"dropdown-menu-sub-trigger\"\n\t\t\tdata-inset={inset}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<ChevronRightIcon className=\"ml-auto size-4\" />\n\t\t</DropdownMenuPrimitive.SubTrigger>\n\t);\n}\n\nfunction DropdownMenuSubContent({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n\treturn (\n\t\t<DropdownMenuPrimitive.SubContent\n\t\t\tdata-slot=\"dropdown-menu-sub-content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDropdownMenu,\n\tDropdownMenuPortal,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuLabel,\n\tDropdownMenuItem,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuRadioGroup,\n\tDropdownMenuRadioItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuSub,\n\tDropdownMenuSubTrigger,\n\tDropdownMenuSubContent,\n};\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n\t\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border bg-background text-foreground shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:text-foreground dark:hover:bg-muted dark:hover:text-foreground\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n\t\t\t\tghost:\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 dark:hover:text-foreground\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n\t\t\t\tsm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n\t\t\t\tlg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n\t\t\t\ticon: \"size-9\",\n\t\t\t\t\"icon-sm\": \"size-8\",\n\t\t\t\t\"icon-lg\": \"size-10\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nfunction Button({\n\tclassName,\n\tvariant = \"default\",\n\tsize = \"default\",\n\tasChild = false,\n\t...props\n}: React.ComponentProps<\"button\"> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tasChild?: boolean;\n\t}) {\n\tconst Comp = asChild ? Slot : \"button\";\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-slot=\"button\"\n\t\t\tdata-variant={variant}\n\t\t\tdata-size={size}\n\t\t\tclassName={cn(buttonVariants({ variant, size, className }))}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport { useTheme } from \"next-themes\";\nimport { Monitor, Moon, Sun } from \"lucide-react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { useEffect, useState, useCallback } from \"react\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n\tminiMenuContentClassName,\n\tminiMenuContentDefaults,\n} from \"./ui/dropdown-menu\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\n\ntype ThemeKey = \"system\" | \"light\" | \"dark\";\n\nexport type ThemeSwitcherLabels = {\n\t/** Tooltip label for the theme switcher */\n\ttheme?: string;\n\t/** Label for \"System\" option */\n\tsystem?: string;\n\t/** Label for \"Light\" option */\n\tlight?: string;\n\t/** Label for \"Dark\" option */\n\tdark?: string;\n};\n\nconst defaultLabels: Required<ThemeSwitcherLabels> = {\n\ttheme: \"Theme\",\n\tsystem: \"System\",\n\tlight: \"Light\",\n\tdark: \"Dark\",\n};\n\nexport type ThemeSwitcherProps = {\n\tclassName?: string;\n\t/** Size of the switcher */\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\t/** Shape of the button */\n\tshape?: \"rounded\" | \"pill\";\n\t/** Mini variant shows only current theme icon as dropdown */\n\tvariant?: \"default\" | \"mini\";\n\t/** Dropdown alignment (for mini variant) */\n\talign?: \"start\" | \"center\" | \"end\";\n\t/** Dropdown side (for mini variant) */\n\tside?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipAlign?: \"start\" | \"center\" | \"end\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSideOffset?: number;\n\t/** Translation labels - consumers can pass their own t() values */\n\tlabels?: ThemeSwitcherLabels;\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\tcontainer: \"h-7 p-0.5\",\n\t\tbutton: \"h-6 w-6\",\n\t\tbuttonMini: \"h-7 w-7\",\n\t\ticon: \"h-3.5 w-3.5\",\n\t\ticonMini: \"h-3.5 w-3.5\",\n\t},\n\tmd: {\n\t\tcontainer: \"h-8 p-1\",\n\t\tbutton: \"h-6 w-6\",\n\t\tbuttonMini: \"h-8 w-8\",\n\t\ticon: \"h-4 w-4\",\n\t\ticonMini: \"h-4 w-4\",\n\t},\n\tlg: {\n\t\tcontainer: \"h-9 p-1\",\n\t\tbutton: \"h-7 w-7\",\n\t\tbuttonMini: \"h-9 w-9\",\n\t\ticon: \"h-4 w-4\",\n\t\ticonMini: \"h-4.5 w-4.5\",\n\t},\n};\n\nconst shapeClasses = {\n\trounded: \"rounded-md\",\n\tpill: \"rounded-full\",\n};\n\nconst themes = [\n\t{ key: \"system\" as const, icon: Monitor },\n\t{ key: \"light\" as const, icon: Sun },\n\t{ key: \"dark\" as const, icon: Moon },\n];\n\nexport function ThemeSwitcher({\n\tclassName,\n\tsize = \"sm\",\n\tshape = \"rounded\",\n\tvariant = \"default\",\n\talign = \"end\",\n\tside = \"bottom\",\n\tlabels: userLabels,\n}: ThemeSwitcherProps) {\n\tconst { theme, setTheme } = useTheme();\n\tconst [mounted, setMounted] = useState(false);\n\tconst sizes = sizeClasses[size];\n\tconst shapeClass = shapeClasses[shape];\n\n\t// Merge user labels with defaults\n\tconst labels = { ...defaultLabels, ...userLabels };\n\n\tconst handleThemeClick = useCallback(\n\t\t(themeKey: ThemeKey) => {\n\t\t\tsetTheme(themeKey);\n\t\t},\n\t\t[setTheme],\n\t);\n\n\t// Prevent hydration mismatch\n\tuseEffect(() => {\n\t\tsetMounted(true);\n\t}, []);\n\n\tif (!mounted) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\tvariant === \"mini\" ? sizes.buttonMini : sizes.container,\n\t\t\t\t\tshapeClass,\n\t\t\t\t\tvariant === \"default\" && \"bg-background ring-1 ring-border\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst currentTheme = theme as ThemeKey;\n\tconst CurrentIcon =\n\t\tthemes.find((t) => t.key === currentTheme)?.icon || Monitor;\n\n\t// Mini variant - dropdown with current theme icon\n\tif (variant === \"mini\") {\n\t\treturn (\n\t\t\t<DropdownMenu modal={false}>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-testid=\"theme-switcher\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\taria-label={labels.theme}\n\t\t\t\t\t\tclassName={cn(sizes.buttonMini, shapeClass, className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<CurrentIcon className={sizes.iconMini} />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tside={side}\n\t\t\t\t\talign={align}\n\t\t\t\t\tsideOffset={miniMenuContentDefaults.sideOffset}\n\t\t\t\t\tcollisionPadding={miniMenuContentDefaults.collisionPadding}\n\t\t\t\t\tclassName={miniMenuContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{themes.map(({ key, icon: Icon }) => (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tonClick={() => handleThemeClick(key)}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"gap-2 cursor-pointer\",\n\t\t\t\t\t\t\t\tcurrentTheme === key &&\n\t\t\t\t\t\t\t\t\t\"bg-accent text-accent-foreground [&_svg]:text-accent-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t<span>{labels[key]}</span>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t);\n\t}\n\n\t// Default variant - segmented control\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"theme-switcher\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative isolate flex bg-background ring-1 ring-border\",\n\t\t\t\tsizes.container,\n\t\t\t\tshapeClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{themes.map(({ key, icon: Icon }) => {\n\t\t\t\tconst isActive = currentTheme === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-label={labels[key]}\n\t\t\t\t\t\tclassName={cn(\"relative\", sizes.button, shapeClass)}\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tonClick={() => handleThemeClick(key)}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t\t{isActive && (\n\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\tclassName={cn(\"absolute inset-0 bg-secondary\", shapeClass)}\n\t\t\t\t\t\t\t\t\tlayoutId=\"activeTheme\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\ttransition={{ type: \"spring\", duration: 0.5 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"relative z-10 m-auto\",\n\t\t\t\t\t\t\t\tsizes.icon,\n\t\t\t\t\t\t\t\tisActive ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { Building2, Check, ChevronsUpDown, Plus } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./ui/button\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuTrigger,\n} from \"./ui/dropdown-menu\";\n\nexport type OrgSwitcherTenant = {\n\tid: string;\n\tname: string;\n\tlogo?: string | null;\n\trole?: string;\n\tstatusBadge?: ReactNode;\n};\n\nexport type OrgSwitcherLabels = {\n\t/** Dropdown section heading */\n\theading?: string;\n\t/** Create action label */\n\tcreate?: string;\n\t/** Empty state when no active tenant */\n\tempty?: string;\n};\n\nconst defaultLabels: Required<OrgSwitcherLabels> = {\n\theading: \"Organizations\",\n\tcreate: \"Create organization\",\n\tempty: \"No organization selected\",\n};\n\nfunction TenantAvatar({\n\tname,\n\tlogo,\n\tsize = \"md\",\n}: {\n\tname: string;\n\tlogo?: string | null;\n\tsize?: \"sm\" | \"md\";\n}) {\n\tconst sizeClass = size === \"sm\" ? \"size-6 rounded-md\" : \"size-8 rounded-lg\";\n\tconst textClass = size === \"sm\" ? \"text-xs\" : \"text-sm\";\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex shrink-0 items-center justify-center overflow-hidden bg-muted font-medium text-muted-foreground\",\n\t\t\t\tsizeClass,\n\t\t\t)}\n\t\t>\n\t\t\t{logo ? (\n\t\t\t\t<img src={logo} alt=\"\" className=\"size-full object-cover\" />\n\t\t\t) : (\n\t\t\t\t<span className={textClass}>{name.charAt(0).toUpperCase()}</span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction SwitcherSkeleton({\n\tclassName,\n\tcollapsed = false,\n}: {\n\tclassName?: string;\n\tcollapsed?: boolean;\n}) {\n\tif (collapsed) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-testid=\"org-switcher-skeleton\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"pointer-events-none flex size-8 items-center justify-center rounded-md\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"size-8 shrink-0 animate-pulse rounded-lg bg-muted\" />\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"org-switcher-skeleton\"\n\t\t\tclassName={cn(\n\t\t\t\t\"pointer-events-none flex h-12 min-h-12 w-full items-center gap-2 rounded-md px-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"size-8 shrink-0 animate-pulse rounded-lg bg-muted\" />\n\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n\t\t\t\t<div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n\t\t\t\t<div className=\"h-3 w-16 animate-pulse rounded bg-muted\" />\n\t\t\t</div>\n\t\t\t<div className=\"ml-auto size-4 shrink-0 animate-pulse rounded-sm bg-muted\" />\n\t\t</div>\n\t);\n}\n\nconst triggerClassName =\n\t\"flex h-12 min-h-12 w-full items-center gap-2 rounded-md px-2 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\";\n\nconst collapsedTriggerClassName =\n\t\"size-8 min-h-0 h-8 w-8 justify-center gap-0 p-0 px-0\";\n\nexport type OrgSwitcherProps = {\n\tactiveTenant: OrgSwitcherTenant | null;\n\ttenants: OrgSwitcherTenant[];\n\tonSelectTenant: (id: string) => void;\n\tcreateUrl?: string;\n\tisLoading?: boolean;\n\tcollapsed?: boolean;\n\tisMobile?: boolean;\n\tactiveSubtitle?: string;\n\tlabels?: OrgSwitcherLabels;\n\tclassName?: string;\n\ttriggerClassName?: string;\n};\n\nexport function OrgSwitcher({\n\tactiveTenant,\n\ttenants,\n\tonSelectTenant,\n\tcreateUrl,\n\tisLoading = false,\n\tcollapsed = false,\n\tisMobile = false,\n\tactiveSubtitle,\n\tlabels: userLabels,\n\tclassName,\n\ttriggerClassName: triggerClassNameProp,\n}: OrgSwitcherProps) {\n\tconst labels = { ...defaultLabels, ...userLabels };\n\n\tif (isLoading) {\n\t\treturn <SwitcherSkeleton className={className} collapsed={collapsed} />;\n\t}\n\n\tif (!activeTenant) {\n\t\tif (createUrl) {\n\t\t\treturn (\n\t\t\t\t<a\n\t\t\t\t\thref={createUrl}\n\t\t\t\t\tdata-testid=\"org-switcher-empty\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\ttriggerClassName,\n\t\t\t\t\t\tcollapsed && collapsedTriggerClassName,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\ttriggerClassNameProp,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n\t\t\t\t\t\t<Building2 className=\"size-4 text-muted-foreground\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t{!collapsed ? (\n\t\t\t\t\t\t<div className=\"grid min-w-0 flex-1 text-left leading-tight\">\n\t\t\t\t\t\t\t<span className=\"truncate font-medium\">{labels.empty}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tdata-testid=\"org-switcher-empty\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttriggerClassName,\n\t\t\t\t\t\"pointer-events-none\",\n\t\t\t\t\tcollapsed && collapsedTriggerClassName,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"flex size-8 items-center justify-center rounded-lg bg-muted\">\n\t\t\t\t\t<Building2 className=\"size-4 text-muted-foreground\" />\n\t\t\t\t</div>\n\t\t\t\t{!collapsed ? (\n\t\t\t\t\t<div className=\"grid min-w-0 flex-1 text-left leading-tight\">\n\t\t\t\t\t\t<span className=\"truncate font-medium text-muted-foreground\">\n\t\t\t\t\t\t\t{labels.empty}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DropdownMenu>\n\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tdata-testid=\"org-switcher\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\ttriggerClassName,\n\t\t\t\t\t\t\"h-auto justify-start font-normal\",\n\t\t\t\t\t\tcollapsed && collapsedTriggerClassName,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\ttriggerClassNameProp,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<TenantAvatar name={activeTenant.name} logo={activeTenant.logo} />\n\t\t\t\t\t{!collapsed ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"grid min-w-0 flex-1 text-left leading-tight\">\n\t\t\t\t\t\t\t\t<span className=\"truncate font-semibold\">\n\t\t\t\t\t\t\t\t\t{activeTenant.name}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{activeSubtitle ? (\n\t\t\t\t\t\t\t\t\t<span className=\"truncate text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{activeSubtitle}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{activeTenant.statusBadge}\n\t\t\t\t\t\t\t<ChevronsUpDown className=\"ml-auto size-4 shrink-0 opacity-50\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</Button>\n\t\t\t</DropdownMenuTrigger>\n\t\t\t<DropdownMenuContent\n\t\t\t\tclassName=\"min-w-64 rounded-lg\"\n\t\t\t\talign=\"start\"\n\t\t\t\tside={isMobile ? \"bottom\" : \"right\"}\n\t\t\t\tsideOffset={4}\n\t\t\t>\n\t\t\t\t<DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t{labels.heading}\n\t\t\t\t</DropdownMenuLabel>\n\t\t\t\t{tenants.map((tenant, index) => {\n\t\t\t\t\tconst isActive = tenant.id === activeTenant.id;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={tenant.id}\n\t\t\t\t\t\t\tonClick={() => onSelectTenant(tenant.id)}\n\t\t\t\t\t\t\tclassName=\"gap-2 p-2\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<TenantAvatar name={tenant.name} logo={tenant.logo} size=\"sm\" />\n\t\t\t\t\t\t\t<span className=\"flex-1 whitespace-normal break-words\">\n\t\t\t\t\t\t\t\t{tenant.name}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{tenant.statusBadge}\n\t\t\t\t\t\t\t{isActive ? (\n\t\t\t\t\t\t\t\t<Check className=\"size-4 shrink-0 opacity-70\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<DropdownMenuShortcut>\n\t\t\t\t\t\t\t\t\t{String.fromCharCode(65 + index)}\n\t\t\t\t\t\t\t\t</DropdownMenuShortcut>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{createUrl ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t<DropdownMenuItem className=\"gap-2 p-2\" asChild>\n\t\t\t\t\t\t\t<a href={createUrl}>\n\t\t\t\t\t\t\t\t<div className=\"flex size-6 items-center justify-center rounded-md border bg-background\">\n\t\t\t\t\t\t\t\t\t<Plus className=\"size-4\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"font-medium text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{labels.create}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t</>\n\t\t\t\t) : null}\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n}\n","\"use client\";\n\nimport { Languages } from \"lucide-react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n\tminiMenuContentClassName,\n\tminiMenuContentDefaults,\n} from \"./ui/dropdown-menu\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\nimport { useLanguageContext } from \"../contexts\";\n\nexport type Language = {\n\t/** Language key/code (e.g., \"en\", \"es\") */\n\tkey: string;\n\t/** Short label for segmented control (e.g., \"EN\", \"ES\") */\n\tlabel: string;\n\t/** Full native name for dropdown (e.g., \"English\", \"Español\") */\n\tnativeName: string;\n};\n\nexport type LanguageSwitcherLabels = {\n\t/** Tooltip label for the language switcher */\n\tlanguage?: string;\n};\n\n/**\n * Default languages when none are provided via props or context.\n */\nexport const defaultLanguages: Language[] = [\n\t{ key: \"en\", label: \"EN\", nativeName: \"English\" },\n\t{ key: \"es\", label: \"ES\", nativeName: \"Español\" },\n];\n\nexport type LanguageSwitcherProps = {\n\t/**\n\t * Available languages. Optional if using LanguageContext.\n\t * When context is available, context.languages is used; props override context.\n\t * Falls back to defaultLanguages if neither provided.\n\t */\n\tlanguages?: Language[];\n\t/**\n\t * Current selected language key. Optional if using LanguageContext.\n\t * When context is available, context.language is used; props override context.\n\t */\n\tcurrentLanguage?: string;\n\t/**\n\t * Callback when language changes. Optional if using LanguageContext.\n\t * When context is available, context.setLanguage is used; props override context.\n\t */\n\tonLanguageChange?: (languageKey: string) => void;\n\t/** Labels for accessibility/tooltips */\n\tlabels?: LanguageSwitcherLabels;\n\tclassName?: string;\n\t/** Size of the switcher */\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\t/** Shape of the button */\n\tshape?: \"rounded\" | \"squared\" | \"pill\";\n\t/** Mini variant shows only an icon */\n\tvariant?: \"default\" | \"mini\";\n\t/** Show language icon in default variant */\n\tshowIcon?: boolean;\n\t/** Dropdown alignment */\n\talign?: \"start\" | \"center\" | \"end\";\n\t/** Dropdown side */\n\tside?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipAlign?: \"start\" | \"center\" | \"end\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSideOffset?: number;\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\tcontainer: \"h-7 p-0.5 text-xs\",\n\t\tbutton: \"h-6 px-2\",\n\t\tbuttonMini: \"h-7 w-7\",\n\t\ticon: \"size-3\",\n\t\ticonMini: \"size-3.5\",\n\t},\n\tmd: {\n\t\tcontainer: \"h-8 p-0.5 text-xs\",\n\t\tbutton: \"h-7 px-2.5\",\n\t\tbuttonMini: \"h-8 w-8\",\n\t\ticon: \"size-3.5\",\n\t\ticonMini: \"size-4\",\n\t},\n\tlg: {\n\t\tcontainer: \"h-9 p-0.5 text-sm\",\n\t\tbutton: \"h-8 px-3\",\n\t\tbuttonMini: \"h-9 w-9\",\n\t\ticon: \"size-4\",\n\t\ticonMini: \"size-4.5\",\n\t},\n};\n\nconst shapeClasses = {\n\trounded: \"rounded-md\",\n\tsquared: \"rounded-sm\",\n\tpill: \"rounded-full\",\n};\n\nexport function LanguageSwitcher({\n\tlanguages: propLanguages,\n\tcurrentLanguage: propCurrentLanguage,\n\tonLanguageChange: propOnLanguageChange,\n\tlabels = {},\n\tclassName,\n\tsize = \"sm\",\n\tshape = \"rounded\",\n\tvariant = \"default\",\n\tshowIcon = true,\n\talign = \"end\",\n\tside = \"bottom\",\n}: LanguageSwitcherProps) {\n\t// Try to get context values (returns null if no provider)\n\tconst context = useLanguageContext();\n\n\t// Map context languages format to component's Language format if needed\n\tconst contextLanguages = context?.languages?.map((lang) => ({\n\t\tkey: lang.code,\n\t\tlabel: lang.code.toUpperCase(),\n\t\tnativeName: lang.name,\n\t}));\n\n\t// Use props first, then context, then defaults\n\tconst languages = propLanguages ?? contextLanguages ?? defaultLanguages;\n\tconst currentLanguage = propCurrentLanguage ?? context?.language ?? \"en\";\n\tconst onLanguageChange = propOnLanguageChange ?? context?.setLanguage;\n\n\tconst sizes = sizeClasses[size];\n\tconst shapeClass = shapeClasses[shape];\n\n\tconst defaultLabels: Required<LanguageSwitcherLabels> = {\n\t\tlanguage: labels.language ?? \"Language\",\n\t};\n\n\t// Mini variant - dropdown with language icon\n\tif (variant === \"mini\") {\n\t\treturn (\n\t\t\t<DropdownMenu modal={false}>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\taria-label={defaultLabels.language}\n\t\t\t\t\t\tclassName={cn(sizes.buttonMini, shapeClass, className)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Languages className={sizes.iconMini} />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tside={side}\n\t\t\t\t\talign={align}\n\t\t\t\t\tsideOffset={miniMenuContentDefaults.sideOffset}\n\t\t\t\t\tcollisionPadding={miniMenuContentDefaults.collisionPadding}\n\t\t\t\t\tclassName={cn(miniMenuContentClassName, \"min-w-0 w-auto\")}\n\t\t\t\t>\n\t\t\t\t\t{languages.map(({ key, nativeName }) => (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tonClick={() => onLanguageChange?.(key)}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"justify-center text-xs font-semibold cursor-pointer px-3\",\n\t\t\t\t\t\t\t\tcurrentLanguage === key && \"bg-accent text-accent-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{nativeName}\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t);\n\t}\n\n\t// Default variant - segmented control\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"relative isolate flex items-center bg-background ring-1 ring-border\",\n\t\t\t\tsizes.container,\n\t\t\t\tshapeClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{showIcon && (\n\t\t\t\t<Languages\n\t\t\t\t\tclassName={cn(sizes.icon, \"ml-1.5 mr-1.5 text-muted-foreground\")}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{languages.map(({ key, label }) => {\n\t\t\t\tconst isActive = currentLanguage === key;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-label={label}\n\t\t\t\t\t\tclassName={cn(\"relative font-semibold\", sizes.button, shapeClass)}\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tonClick={() => onLanguageChange?.(key)}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t\t{isActive && (\n\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\tclassName={cn(\"absolute inset-0 bg-secondary\", shapeClass)}\n\t\t\t\t\t\t\t\t\tlayoutId=\"activeLanguage\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\ttransition={{ type: \"spring\", duration: 0.5 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"relative z-10\",\n\t\t\t\t\t\t\t\tisActive ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { FlaskConical } from \"lucide-react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuTrigger,\n\tminiMenuContentClassName,\n\tminiMenuContentDefaults,\n} from \"./ui/dropdown-menu\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\nimport {\n\tuseEnvironmentContext,\n\tBLOCKS_DATA_ENVIRONMENTS,\n\ttype BlocksDataEnvironment,\n} from \"../contexts\";\n\nexport type EnvironmentSwitcherLabels = {\n\t/** Tooltip / aria for the control */\n\tenvironment?: string;\n\tlive?: string;\n\tstaging?: string;\n\tdevelopment?: string;\n};\n\nconst defaultLabels: Required<EnvironmentSwitcherLabels> = {\n\tenvironment: \"Data environment\",\n\tlive: \"Live\",\n\tstaging: \"Staging\",\n\tdevelopment: \"Development\",\n};\n\n/** Tailwind background class for the environment status dot. */\nexport function getEnvironmentDotClass(env: BlocksDataEnvironment): string {\n\tswitch (env) {\n\t\tcase \"production\":\n\t\t\treturn \"bg-emerald-500\";\n\t\tcase \"staging\":\n\t\t\treturn \"bg-orange-500\";\n\t\tcase \"development\":\n\t\t\treturn \"bg-amber-400\";\n\t\tdefault:\n\t\t\treturn \"bg-muted-foreground\";\n\t}\n}\n\n/** Resolved menu label for an environment (uses merged `labels`). */\nexport function getEnvironmentLabel(\n\tenv: BlocksDataEnvironment,\n\tlabels: Required<EnvironmentSwitcherLabels>,\n): string {\n\tswitch (env) {\n\t\tcase \"production\":\n\t\t\treturn labels.live;\n\t\tcase \"staging\":\n\t\t\treturn labels.staging;\n\t\tcase \"development\":\n\t\t\treturn labels.development;\n\t\tdefault:\n\t\t\treturn env;\n\t}\n}\n\nfunction abbreviateEnvironment(env: BlocksDataEnvironment): string {\n\tswitch (env) {\n\t\tcase \"production\":\n\t\t\treturn \"Prod\";\n\t\tcase \"staging\":\n\t\t\treturn \"Stg\";\n\t\tcase \"development\":\n\t\t\treturn \"Dev\";\n\t\tdefault:\n\t\t\treturn env;\n\t}\n}\n\nconst environmentDotSizeClasses = {\n\txs: \"size-1.5\",\n\tsm: \"size-2\",\n\tmd: \"size-2.5\",\n} as const;\n\nexport type EnvironmentDotProps = {\n\tenv: BlocksDataEnvironment;\n\tsize?: keyof typeof environmentDotSizeClasses;\n\tclassName?: string;\n};\n\n/** Non-interactive colored dot for an environment (e.g. overlays, menus). */\nexport function EnvironmentDot({\n\tenv,\n\tsize = \"sm\",\n\tclassName,\n}: EnvironmentDotProps) {\n\tconst sizeClass = environmentDotSizeClasses[size];\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\tsizeClass,\n\t\t\t\tgetEnvironmentDotClass(env),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-hidden\n\t\t/>\n\t);\n}\n\nexport type EnvironmentMiniBadgeProps = {\n\tclassName?: string;\n\t/** Current environment; falls back to `EnvironmentContext` when omitted. */\n\tenvironment?: BlocksDataEnvironment;\n\tlabels?: EnvironmentSwitcherLabels;\n\t/**\n\t * When true (default), shows short Prod / Stg / Dev text.\n\t * When false, uses `getEnvironmentLabel` with merged labels (i18n-friendly).\n\t */\n\tabbreviated?: boolean;\n};\n\n/**\n * Compact pill (dot + label) for embedding in other controls (e.g. org switcher trigger).\n * Not a button — parent provides interaction.\n */\nexport function EnvironmentMiniBadge({\n\tclassName,\n\tenvironment: propEnvironment,\n\tlabels: userLabels,\n\tabbreviated = true,\n}: EnvironmentMiniBadgeProps) {\n\tconst ctx = useEnvironmentContext();\n\tconst labels = { ...defaultLabels, ...userLabels };\n\tconst environment =\n\t\tpropEnvironment ??\n\t\tctx?.environment ??\n\t\t(\"production\" as BlocksDataEnvironment);\n\tconst text = abbreviated\n\t\t? abbreviateEnvironment(environment)\n\t\t: getEnvironmentLabel(environment, labels);\n\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex max-w-[4.5rem] items-center gap-1 rounded-full border border-border bg-muted/60 px-1.5 py-0.5 text-[10px] font-semibold tabular-nums text-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<EnvironmentDot env={environment} size=\"xs\" />\n\t\t\t<span className=\"min-w-0 truncate\">{text}</span>\n\t\t</span>\n\t);\n}\n\nexport type EnvironmentSwitcherProps = {\n\tclassName?: string;\n\t/** Current environment. Overrides context when set. */\n\tenvironment?: BlocksDataEnvironment;\n\t/** Called after user selects an environment. Overrides context when set. */\n\tonEnvironmentChange?: (environment: BlocksDataEnvironment) => void;\n\t/** Environments shown in the menu (defaults to all three) */\n\tenvironments?: readonly BlocksDataEnvironment[];\n\tlabels?: EnvironmentSwitcherLabels;\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\tshape?: \"rounded\" | \"pill\";\n\tvariant?: \"default\" | \"mini\";\n\talign?: \"start\" | \"center\" | \"end\";\n\tside?: \"top\" | \"bottom\" | \"left\" | \"right\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipAlign?: \"start\" | \"center\" | \"end\";\n\t/** @deprecated No longer used; mini variant no longer renders a tooltip. */\n\ttooltipSideOffset?: number;\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\tcontainer: \"h-7 p-0.5 text-xs\",\n\t\tbutton: \"h-6 px-2\",\n\t\tbuttonMini: \"h-7 gap-1.5 px-2\",\n\t\tdot: \"size-2\",\n\t\ticonMini: \"size-3.5\",\n\t},\n\tmd: {\n\t\tcontainer: \"h-8 p-0.5 text-xs\",\n\t\tbutton: \"h-7 px-2.5\",\n\t\tbuttonMini: \"h-8 gap-2 px-2.5\",\n\t\tdot: \"size-2.5\",\n\t\ticonMini: \"size-4\",\n\t},\n\tlg: {\n\t\tcontainer: \"h-9 p-0.5 text-sm\",\n\t\tbutton: \"h-8 px-3\",\n\t\tbuttonMini: \"h-9 gap-2 px-3\",\n\t\tdot: \"size-2.5\",\n\t\ticonMini: \"size-4\",\n\t},\n};\n\nconst shapeClasses = {\n\trounded: \"rounded-md\",\n\tpill: \"rounded-full\",\n};\n\nexport function EnvironmentSwitcher({\n\tclassName,\n\tenvironment: propEnvironment,\n\tonEnvironmentChange: propOnEnvironmentChange,\n\tenvironments: propEnvironments,\n\tlabels: userLabels,\n\tsize = \"sm\",\n\tshape = \"rounded\",\n\tvariant = \"mini\",\n\talign = \"end\",\n\tside = \"bottom\",\n}: EnvironmentSwitcherProps) {\n\tconst ctx = useEnvironmentContext();\n\tconst labels = { ...defaultLabels, ...userLabels };\n\n\tconst environments =\n\t\tpropEnvironments ??\n\t\tctx?.environments ??\n\t\t([...BLOCKS_DATA_ENVIRONMENTS] as readonly BlocksDataEnvironment[]);\n\n\tconst environment =\n\t\tpropEnvironment ??\n\t\tctx?.environment ??\n\t\t(\"production\" as BlocksDataEnvironment);\n\tconst setEnvironment =\n\t\tpropOnEnvironmentChange ?? ctx?.setEnvironment ?? (() => {});\n\n\tconst sizes = sizeClasses[size];\n\tconst shapeClass = shapeClasses[shape];\n\n\tconst handleSelect = (next: BlocksDataEnvironment) => {\n\t\tif (next === environment) return;\n\t\tsetEnvironment(next);\n\t};\n\n\t// Mini: compact trigger + dropdown\n\tif (variant === \"mini\") {\n\t\treturn (\n\t\t\t<DropdownMenu modal={false}>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-testid=\"environment-switcher\"\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\taria-label={labels.environment}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tsizes.buttonMini,\n\t\t\t\t\t\t\tshapeClass,\n\t\t\t\t\t\t\t\"font-medium tabular-nums border-border bg-background\",\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\t\t\t\t\tsizes.dot,\n\t\t\t\t\t\t\t\tgetEnvironmentDotClass(environment),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span className=\"max-w-[5.5rem] truncate\">\n\t\t\t\t\t\t\t{getEnvironmentLabel(environment, labels)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent\n\t\t\t\t\tside={side}\n\t\t\t\t\talign={align}\n\t\t\t\t\tsideOffset={miniMenuContentDefaults.sideOffset}\n\t\t\t\t\tcollisionPadding={miniMenuContentDefaults.collisionPadding}\n\t\t\t\t\tclassName={miniMenuContentClassName}\n\t\t\t\t>\n\t\t\t\t\t{environments.map((env) => (\n\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\tkey={env}\n\t\t\t\t\t\t\tonClick={() => handleSelect(env)}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"gap-2 cursor-pointer\",\n\t\t\t\t\t\t\t\tenvironment === env &&\n\t\t\t\t\t\t\t\t\t\"bg-accent text-accent-foreground [&_svg]:text-accent-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\t\t\t\t\t\tsizes.dot,\n\t\t\t\t\t\t\t\t\tgetEnvironmentDotClass(env),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<span>{getEnvironmentLabel(env, labels)}</span>\n\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t);\n\t}\n\n\t// Default: segmented control (icon + three envs)\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"environment-switcher\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative isolate flex items-center bg-background ring-1 ring-border\",\n\t\t\t\tsizes.container,\n\t\t\t\tshapeClass,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<FlaskConical\n\t\t\t\tclassName={cn(sizes.iconMini, \"ml-1.5 mr-1 text-muted-foreground\")}\n\t\t\t\taria-hidden\n\t\t\t/>\n\t\t\t{environments.map((env) => {\n\t\t\t\tconst isActive = environment === env;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tkey={env}\n\t\t\t\t\t\taria-label={getEnvironmentLabel(env, labels)}\n\t\t\t\t\t\taria-pressed={isActive}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"relative min-w-0 font-semibold capitalize\",\n\t\t\t\t\t\t\tsizes.button,\n\t\t\t\t\t\t\tshapeClass,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonClick={() => handleSelect(env)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t\t{isActive && (\n\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\tclassName={cn(\"absolute inset-0 bg-secondary\", shapeClass)}\n\t\t\t\t\t\t\t\t\tlayoutId=\"activeEnvironment\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\ttransition={{ type: \"spring\", duration: 0.5 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"relative z-10 flex max-w-[4.5rem] items-center justify-center gap-1 truncate sm:max-w-[6rem]\",\n\t\t\t\t\t\t\t\tisActive ? \"text-foreground\" : \"text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"rounded-full shrink-0 ring-1 ring-background\",\n\t\t\t\t\t\t\t\t\t\"h-1.5 w-1.5\",\n\t\t\t\t\t\t\t\t\tgetEnvironmentDotClass(env),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{getEnvironmentLabel(env, labels)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"./ui/button\";\nimport { cn } from \"../lib/utils\";\nimport { useEnvironmentContext, type BlocksDataEnvironment } from \"../contexts\";\n\nexport type EnvironmentBannerLabels = {\n\tstagingMessage?: string;\n\tdevelopmentMessage?: string;\n\tdismiss?: string;\n};\n\nconst defaultLabels: Required<EnvironmentBannerLabels> = {\n\tstagingMessage:\n\t\t\"You are viewing staging data — changes do not affect live customers.\",\n\tdevelopmentMessage: \"You are viewing development data — for testing only.\",\n\tdismiss: \"Dismiss\",\n};\n\nexport type EnvironmentBannerProps = {\n\tclassName?: string;\n\t/** Overrides context when set */\n\tenvironment?: BlocksDataEnvironment;\n\tlabels?: EnvironmentBannerLabels;\n\t/** When false, banner is not shown (e.g. embed) */\n\tenabled?: boolean;\n};\n\nexport function EnvironmentBanner({\n\tclassName,\n\tenvironment: propEnvironment,\n\tlabels: userLabels,\n\tenabled = true,\n}: EnvironmentBannerProps) {\n\tconst ctx = useEnvironmentContext();\n\tconst labels = { ...defaultLabels, ...userLabels };\n\tconst [dismissed, setDismissed] = useState(false);\n\n\tconst environment =\n\t\tpropEnvironment ??\n\t\tctx?.environment ??\n\t\t(\"production\" as BlocksDataEnvironment);\n\n\tconst handleDismiss = useCallback(() => {\n\t\tsetDismissed(true);\n\t}, []);\n\n\tif (!enabled || dismissed || environment === \"production\") {\n\t\treturn null;\n\t}\n\n\tconst isStaging = environment === \"staging\";\n\tconst message = isStaging ? labels.stagingMessage : labels.developmentMessage;\n\n\treturn (\n\t\t<div\n\t\t\trole=\"status\"\n\t\t\tdata-testid=\"environment-banner\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-full items-center justify-center gap-2 border-b px-3 py-2 text-center text-sm font-medium\",\n\t\t\t\tisStaging\n\t\t\t\t\t? \"border-orange-500/30 bg-orange-500/15 text-orange-950 dark:text-orange-100\"\n\t\t\t\t\t: \"border-amber-500/30 bg-amber-500/15 text-amber-950 dark:text-amber-100\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<span className=\"min-w-0 flex-1\">{message}</span>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tsize=\"icon\"\n\t\t\t\tclassName=\"h-7 w-7 shrink-0 opacity-80 hover:opacity-100\"\n\t\t\t\tonClick={handleDismiss}\n\t\t\t\taria-label={labels.dismiss}\n\t\t\t>\n\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Slider({\n\tclassName,\n\tdefaultValue,\n\tvalue,\n\tmin = 0,\n\tmax = 100,\n\t...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n\tconst _values = React.useMemo(\n\t\t() =>\n\t\t\tArray.isArray(value)\n\t\t\t\t? value\n\t\t\t\t: Array.isArray(defaultValue)\n\t\t\t\t\t? defaultValue\n\t\t\t\t\t: [min, max],\n\t\t[value, defaultValue, min, max],\n\t);\n\n\treturn (\n\t\t<SliderPrimitive.Root\n\t\t\tdata-slot=\"slider\"\n\t\t\tdefaultValue={defaultValue}\n\t\t\tvalue={value}\n\t\t\tmin={min}\n\t\t\tmax={max}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SliderPrimitive.Track\n\t\t\t\tdata-slot=\"slider-track\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<SliderPrimitive.Range\n\t\t\t\t\tdata-slot=\"slider-range\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t</SliderPrimitive.Track>\n\t\t\t{Array.from({ length: _values.length }, (_, index) => (\n\t\t\t\t<SliderPrimitive.Thumb\n\t\t\t\t\tdata-slot=\"slider-thumb\"\n\t\t\t\t\tkey={index}\n\t\t\t\t\tclassName=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n\t\t\t\t/>\n\t\t\t))}\n\t\t</SliderPrimitive.Root>\n\t);\n}\n\nexport { Slider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst toggleVariants = cva(\n\t\"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-transparent\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-9 px-2 min-w-9\",\n\t\t\t\tsm: \"h-8 px-1.5 min-w-8\",\n\t\t\t\tlg: \"h-10 px-2.5 min-w-10\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nfunction Toggle({\n\tclassName,\n\tvariant,\n\tsize,\n\t...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n\tVariantProps<typeof toggleVariants>) {\n\treturn (\n\t\t<TogglePrimitive.Root\n\t\t\tdata-slot=\"toggle\"\n\t\t\tclassName={cn(toggleVariants({ variant, size, className }))}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Toggle, toggleVariants };\n","/**\n * @name AvatarEditor\n * @description A compact, reusable avatar editor component that fits within a square container.\n * Supports image cropping, zooming, rotating, and repositioning with an optional grid overlay.\n * This is a controlled component - the parent manages the image state.\n *\n * @example\n * ```tsx\n * import { AvatarEditor } from \"@/components/avatar-editor\"\n *\n * export default function ProfileForm() {\n * const [avatarData, setAvatarData] = useState<string | null>(null)\n *\n * return (\n * <form>\n * <AvatarEditor\n * value={avatarData}\n * onChange={setAvatarData}\n * size={280}\n * />\n * <button type=\"submit\">Submit Form</button>\n * </form>\n * )\n * }\n * ```\n *\n * @props\n * - `value` - The current cropped image as a data URL (controlled)\n * - `onChange` - Callback when the cropped image changes\n * - `size` - Size of the editor container in pixels (default: 280)\n * - `showGrid` - Whether to show the alignment grid overlay (default: false)\n * - `outputSize` - Size of the output image in pixels (default: 256)\n * - `outputFormat` - Output format: 'png' | 'jpeg' | 'webp' (default: 'png')\n * - `outputQuality` - Quality for jpeg/webp output 0-1 (default: 0.92)\n * - `className` - Additional class names\n * - `controlSize` - Control size variant - 'default' for desktop, 'large' for mobile/touch devices (default: 'default')\n *\n * @accessibility\n * - Full keyboard navigation support\n * - ARIA labels for all controls\n * - High contrast focus indicators\n *\n * @dependencies\n * - lucide-react (icons)\n * - @/components/ui/button\n * - @/components/ui/slider\n * - @/components/ui/toggle\n */\n\"use client\";\n\nimport type * as React from \"react\";\nimport { useCallback, useRef, useState, useEffect } from \"react\";\nimport {\n\tUpload,\n\tZoomIn,\n\tZoomOut,\n\tRotateCcw,\n\tRotateCw,\n\tGrid3X3,\n\tX,\n\tMove,\n\tRefreshCw,\n} from \"lucide-react\";\nimport { Button } from \"./ui/button\";\nimport { Slider } from \"./ui/slider\";\nimport { Toggle } from \"./ui/toggle\";\nimport { cn } from \"../lib/utils\";\n\nexport interface AvatarEditorProps {\n\t/** Current cropped image as data URL (controlled) */\n\tvalue?: string | null;\n\t/** Callback when the cropped image changes */\n\tonChange?: (dataUrl: string | null) => void;\n\t/** Size of the editor container in pixels */\n\tsize?: number;\n\t/** Whether to show grid overlay by default */\n\tshowGrid?: boolean;\n\t/** Output image size in pixels */\n\toutputSize?: number;\n\t/** Output format */\n\toutputFormat?: \"png\" | \"jpeg\" | \"webp\";\n\t/** Output quality for jpeg/webp (0-1) */\n\toutputQuality?: number;\n\t/** Additional class names */\n\tclassName?: string;\n\t/** Control size variant - 'default' for desktop, 'large' for mobile/touch devices */\n\tcontrolSize?: \"default\" | \"large\";\n}\n\nexport function AvatarEditor({\n\tvalue: _value,\n\tonChange,\n\tsize = 280,\n\tshowGrid: initialShowGrid = false,\n\toutputSize = 256,\n\toutputFormat = \"png\",\n\toutputQuality = 0.92,\n\tclassName,\n\tcontrolSize = \"default\",\n}: AvatarEditorProps) {\n\tconst canvasRef = useRef<HTMLCanvasElement>(null);\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\tconst [image, setImage] = useState<HTMLImageElement | null>(null);\n\tconst [imageLoaded, setImageLoaded] = useState(false);\n\tconst [zoom, setZoom] = useState(1);\n\tconst [rotation, setRotation] = useState(0);\n\tconst [position, setPosition] = useState({ x: 0, y: 0 });\n\tconst [isDragging, setIsDragging] = useState(false);\n\tconst [dragStart, setDragStart] = useState({ x: 0, y: 0 });\n\tconst [showGrid, setShowGrid] = useState(initialShowGrid);\n\n\tconst generateOutput = useCallback(() => {\n\t\tif (!canvasRef.current || !image) return null;\n\n\t\tconst outputCanvas = document.createElement(\"canvas\");\n\t\toutputCanvas.width = outputSize;\n\t\toutputCanvas.height = outputSize;\n\t\tconst ctx = outputCanvas.getContext(\"2d\");\n\t\tif (!ctx) return null;\n\n\t\tctx.drawImage(canvasRef.current, 0, 0, outputSize, outputSize);\n\n\t\tconst mimeType = `image/${outputFormat}`;\n\t\treturn outputCanvas.toDataURL(mimeType, outputQuality);\n\t}, [image, outputSize, outputFormat, outputQuality]);\n\n\tuseEffect(() => {\n\t\tif (!canvasRef.current || !image || !imageLoaded) return;\n\n\t\tconst canvas = canvasRef.current;\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tif (!ctx) return;\n\n\t\tconst displaySize = size;\n\t\tcanvas.width = displaySize;\n\t\tcanvas.height = displaySize;\n\n\t\tctx.clearRect(0, 0, displaySize, displaySize);\n\t\tctx.fillStyle = \"#1a1a2e\";\n\t\tctx.fillRect(0, 0, displaySize, displaySize);\n\n\t\tctx.save();\n\t\tctx.translate(displaySize / 2, displaySize / 2);\n\t\tctx.rotate((rotation * Math.PI) / 180);\n\n\t\tconst scale = zoom;\n\t\tconst imgAspect = image.width / image.height;\n\t\tlet drawWidth, drawHeight;\n\n\t\tif (imgAspect > 1) {\n\t\t\tdrawHeight = displaySize * scale;\n\t\t\tdrawWidth = drawHeight * imgAspect;\n\t\t} else {\n\t\t\tdrawWidth = displaySize * scale;\n\t\t\tdrawHeight = drawWidth / imgAspect;\n\t\t}\n\n\t\tctx.drawImage(\n\t\t\timage,\n\t\t\t-drawWidth / 2 + position.x,\n\t\t\t-drawHeight / 2 + position.y,\n\t\t\tdrawWidth,\n\t\t\tdrawHeight,\n\t\t);\n\t\tctx.restore();\n\n\t\tctx.globalCompositeOperation = \"destination-in\";\n\t\tctx.beginPath();\n\t\tctx.arc(\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2 - 4,\n\t\t\t0,\n\t\t\tMath.PI * 2,\n\t\t);\n\t\tctx.fill();\n\n\t\tctx.globalCompositeOperation = \"source-over\";\n\t\tctx.strokeStyle = \"hsl(var(--primary))\";\n\t\tctx.lineWidth = 3;\n\t\tctx.beginPath();\n\t\tctx.arc(\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2,\n\t\t\tdisplaySize / 2 - 2,\n\t\t\t0,\n\t\t\tMath.PI * 2,\n\t\t);\n\t\tctx.stroke();\n\n\t\tconst dataUrl = generateOutput();\n\t\tif (dataUrl) {\n\t\t\tonChange?.(dataUrl);\n\t\t}\n\t}, [\n\t\timage,\n\t\timageLoaded,\n\t\tzoom,\n\t\trotation,\n\t\tposition,\n\t\tsize,\n\t\tgenerateOutput,\n\t\tonChange,\n\t]);\n\n\tconst resetTransforms = useCallback(() => {\n\t\tsetZoom(1);\n\t\tsetRotation(0);\n\t\tsetPosition({ x: 0, y: 0 });\n\t}, []);\n\n\tconst handleFileSelect = useCallback(\n\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst file = e.target.files?.[0];\n\t\t\tif (!file) return;\n\n\t\t\tconst reader = new FileReader();\n\t\t\treader.onload = (event) => {\n\t\t\t\tconst img = new Image();\n\t\t\t\timg.crossOrigin = \"anonymous\";\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tsetImage(img);\n\t\t\t\t\tsetImageLoaded(true);\n\t\t\t\t\tresetTransforms();\n\t\t\t\t};\n\t\t\t\timg.src = event.target?.result as string;\n\t\t\t};\n\t\t\treader.readAsDataURL(file);\n\t\t},\n\t\t[resetTransforms],\n\t);\n\n\tconst handleMouseDown = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tif (!imageLoaded) return;\n\t\t\tsetIsDragging(true);\n\t\t\tsetDragStart({ x: e.clientX - position.x, y: e.clientY - position.y });\n\t\t},\n\t\t[imageLoaded, position],\n\t);\n\n\tconst handleMouseMove = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tif (!isDragging) return;\n\t\t\tsetPosition({\n\t\t\t\tx: e.clientX - dragStart.x,\n\t\t\t\ty: e.clientY - dragStart.y,\n\t\t\t});\n\t\t},\n\t\t[isDragging, dragStart],\n\t);\n\n\tconst handleMouseUp = useCallback(() => {\n\t\tsetIsDragging(false);\n\t}, []);\n\n\tconst handleTouchStart = useCallback(\n\t\t(e: React.TouchEvent) => {\n\t\t\tif (!imageLoaded) return;\n\t\t\tconst touch = e.touches[0];\n\t\t\tsetIsDragging(true);\n\t\t\tsetDragStart({\n\t\t\t\tx: touch.clientX - position.x,\n\t\t\t\ty: touch.clientY - position.y,\n\t\t\t});\n\t\t},\n\t\t[imageLoaded, position],\n\t);\n\n\tconst handleTouchMove = useCallback(\n\t\t(e: React.TouchEvent) => {\n\t\t\tif (!isDragging) return;\n\t\t\tconst touch = e.touches[0];\n\t\t\tsetPosition({\n\t\t\t\tx: touch.clientX - dragStart.x,\n\t\t\t\ty: touch.clientY - dragStart.y,\n\t\t\t});\n\t\t},\n\t\t[isDragging, dragStart],\n\t);\n\n\tconst handleDiscard = useCallback(() => {\n\t\tsetImage(null);\n\t\tsetImageLoaded(false);\n\t\tresetTransforms();\n\t\tif (fileInputRef.current) {\n\t\t\tfileInputRef.current.value = \"\";\n\t\t}\n\t\tonChange?.(null);\n\t}, [resetTransforms, onChange]);\n\n\tconst handleZoomIn = () => setZoom((z) => Math.min(z + 0.1, 3));\n\tconst handleZoomOut = () => setZoom((z) => Math.max(z - 0.1, 0.5));\n\tconst handleRotateLeft = () => setRotation((r) => r - 15);\n\tconst handleRotateRight = () => setRotation((r) => r + 15);\n\n\tconst isLarge = controlSize === \"large\";\n\tconst buttonSize = isLarge ? \"h-12 w-12\" : \"h-8 w-8\";\n\tconst iconSize = isLarge ? \"w-6 h-6\" : \"w-4 h-4\";\n\tconst smallIconSize = isLarge ? \"w-5 h-5\" : \"w-3 h-3\";\n\tconst textSize = isLarge ? \"text-sm\" : \"text-xs\";\n\tconst uploadIconSize = isLarge ? \"w-12 h-12\" : \"w-8 h-8\";\n\tconst uploadContainerSize = isLarge ? \"w-24 h-24\" : \"w-16 h-16\";\n\tconst gapSize = isLarge ? \"gap-6\" : \"gap-4\";\n\tconst controlGap = isLarge ? \"gap-3\" : \"gap-2\";\n\tconst sliderHeight = isLarge\n\t\t? \"[&_[role=slider]]:h-6 [&_[role=slider]]:w-6\"\n\t\t: \"\";\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col\", gapSize, className)}\n\t\t\tstyle={{ width: size }}\n\t\t>\n\t\t\t{/* Canvas Container */}\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName=\"relative bg-muted rounded-2xl overflow-hidden\"\n\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t>\n\t\t\t\t{/* Upload placeholder */}\n\t\t\t\t{!imageLoaded && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() => fileInputRef.current?.click()}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"absolute inset-0 z-10 flex flex-col items-center justify-center text-muted-foreground hover:text-foreground hover:bg-muted/80 transition-colors cursor-pointer\",\n\t\t\t\t\t\t\tisLarge ? \"gap-4\" : \"gap-3\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label=\"Upload image\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"rounded-full bg-primary/10 flex items-center justify-center\",\n\t\t\t\t\t\t\t\tuploadContainerSize,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Upload className={cn(\"text-primary\", uploadIconSize)} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\"font-medium\", isLarge ? \"text-base\" : \"text-sm\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tClick to upload\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={cn(\"text-muted-foreground\", textSize)}>\n\t\t\t\t\t\t\tPNG, JPG up to 10MB\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t\t{/* Canvas */}\n\t\t\t\t<canvas\n\t\t\t\t\tref={canvasRef}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"absolute inset-0\",\n\t\t\t\t\t\timageLoaded ? \"cursor-move\" : \"pointer-events-none opacity-0\",\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonMouseMove={handleMouseMove}\n\t\t\t\t\tonMouseUp={handleMouseUp}\n\t\t\t\t\tonMouseLeave={handleMouseUp}\n\t\t\t\t\tonTouchStart={handleTouchStart}\n\t\t\t\t\tonTouchMove={handleTouchMove}\n\t\t\t\t\tonTouchEnd={handleMouseUp}\n\t\t\t\t/>\n\n\t\t\t\t{/* Grid Overlay */}\n\t\t\t\t{showGrid && imageLoaded && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"absolute inset-0 pointer-events-none\"\n\t\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<svg width={size} height={size} className=\"opacity-30\">\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={size / 3}\n\t\t\t\t\t\t\t\ty1={0}\n\t\t\t\t\t\t\t\tx2={size / 3}\n\t\t\t\t\t\t\t\ty2={size}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={(size * 2) / 3}\n\t\t\t\t\t\t\t\ty1={0}\n\t\t\t\t\t\t\t\tx2={(size * 2) / 3}\n\t\t\t\t\t\t\t\ty2={size}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={0}\n\t\t\t\t\t\t\t\ty1={size / 3}\n\t\t\t\t\t\t\t\tx2={size}\n\t\t\t\t\t\t\t\ty2={size / 3}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={0}\n\t\t\t\t\t\t\t\ty1={(size * 2) / 3}\n\t\t\t\t\t\t\t\tx2={size}\n\t\t\t\t\t\t\t\ty2={(size * 2) / 3}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={size / 2 - 10}\n\t\t\t\t\t\t\t\ty1={size / 2}\n\t\t\t\t\t\t\t\tx2={size / 2 + 10}\n\t\t\t\t\t\t\t\ty2={size / 2}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\tx1={size / 2}\n\t\t\t\t\t\t\t\ty1={size / 2 - 10}\n\t\t\t\t\t\t\t\tx2={size / 2}\n\t\t\t\t\t\t\t\ty2={size / 2 + 10}\n\t\t\t\t\t\t\t\tstroke=\"white\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* Drag indicator */}\n\t\t\t\t{imageLoaded && isDragging && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"absolute top-2 left-1/2 -translate-x-1/2 bg-black/60 rounded text-white flex items-center\",\n\t\t\t\t\t\t\tisLarge ? \"px-3 py-2 text-sm gap-2\" : \"px-2 py-1 text-xs gap-1\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Move className={smallIconSize} />\n\t\t\t\t\t\tDragging\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Controls - only show when image is loaded */}\n\t\t\t{imageLoaded && (\n\t\t\t\t<div className={cn(\"space-y-4\", isLarge && \"space-y-5\")}>\n\t\t\t\t\t{/* Zoom Slider */}\n\t\t\t\t\t<div className={cn(\"flex items-center\", controlGap)}>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName={cn(buttonSize, \"shrink-0\")}\n\t\t\t\t\t\t\tonClick={handleZoomOut}\n\t\t\t\t\t\t\taria-label=\"Zoom out\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ZoomOut className={iconSize} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Slider\n\t\t\t\t\t\t\tvalue={[zoom]}\n\t\t\t\t\t\t\tonValueChange={([v]) => setZoom(v)}\n\t\t\t\t\t\t\tmin={0.5}\n\t\t\t\t\t\t\tmax={3}\n\t\t\t\t\t\t\tstep={0.01}\n\t\t\t\t\t\t\tclassName={cn(\"flex-1\", sliderHeight)}\n\t\t\t\t\t\t\taria-label=\"Zoom level\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName={cn(buttonSize, \"shrink-0\")}\n\t\t\t\t\t\t\tonClick={handleZoomIn}\n\t\t\t\t\t\t\taria-label=\"Zoom in\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ZoomIn className={iconSize} />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Rotation & Grid Controls */}\n\t\t\t\t\t<div className={cn(\"flex items-center justify-between\", controlGap)}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\"flex items-center\", isLarge ? \"gap-2\" : \"gap-1\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={handleRotateLeft}\n\t\t\t\t\t\t\t\taria-label=\"Rotate left 15 degrees\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RotateCcw className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"text-muted-foreground text-center tabular-nums\",\n\t\t\t\t\t\t\t\t\ttextSize,\n\t\t\t\t\t\t\t\t\tisLarge ? \"w-16\" : \"w-12\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{rotation}°\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={handleRotateRight}\n\t\t\t\t\t\t\t\taria-label=\"Rotate right 15 degrees\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RotateCw className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\"flex items-center\", isLarge ? \"gap-2\" : \"gap-1\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Toggle\n\t\t\t\t\t\t\t\tpressed={showGrid}\n\t\t\t\t\t\t\t\tonPressedChange={setShowGrid}\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tclassName={cn(buttonSize, \"p-0\")}\n\t\t\t\t\t\t\t\taria-label=\"Toggle grid overlay\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Grid3X3 className={iconSize} />\n\t\t\t\t\t\t\t</Toggle>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={resetTransforms}\n\t\t\t\t\t\t\t\taria-label=\"Reset all transforms\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RefreshCw className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={buttonSize}\n\t\t\t\t\t\t\t\tonClick={() => fileInputRef.current?.click()}\n\t\t\t\t\t\t\t\taria-label=\"Upload new image\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Upload className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{/* Discard button */}\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\tbuttonSize,\n\t\t\t\t\t\t\t\t\t\"text-destructive hover:text-destructive hover:bg-destructive/10\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tonClick={handleDiscard}\n\t\t\t\t\t\t\t\taria-label=\"Discard image\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className={iconSize} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Hidden file input */}\n\t\t\t<input\n\t\t\t\tref={fileInputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonChange={handleFileSelect}\n\t\t\t\tclassName=\"hidden\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Dialog({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n\treturn <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n\treturn <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n\treturn <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n\treturn <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n\treturn (\n\t\t<DialogPrimitive.Overlay\n\t\t\tdata-slot=\"dialog-overlay\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogContent({\n\tclassName,\n\tchildren,\n\tshowCloseButton = true,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n\tshowCloseButton?: boolean;\n}) {\n\treturn (\n\t\t<DialogPortal data-slot=\"dialog-portal\">\n\t\t\t<DialogOverlay />\n\t\t\t<DialogPrimitive.Content\n\t\t\t\tdata-slot=\"dialog-content\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t\t{showCloseButton && (\n\t\t\t\t\t<DialogPrimitive.Close\n\t\t\t\t\t\tdata-slot=\"dialog-close\"\n\t\t\t\t\t\tclassName=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t\t\t</DialogPrimitive.Close>\n\t\t\t\t)}\n\t\t\t</DialogPrimitive.Content>\n\t\t</DialogPortal>\n\t);\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"dialog-header\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"dialog-footer\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogTitle({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n\treturn (\n\t\t<DialogPrimitive.Title\n\t\t\tdata-slot=\"dialog-title\"\n\t\t\tclassName={cn(\"text-lg leading-none font-semibold\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DialogDescription({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n\treturn (\n\t\t<DialogPrimitive.Description\n\t\t\tdata-slot=\"dialog-description\"\n\t\t\tclassName={cn(\"text-muted-foreground text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDialog,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle,\n\tDialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Drawer({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n\treturn <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n\treturn <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n\treturn <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n\treturn <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n\treturn (\n\t\t<DrawerPrimitive.Overlay\n\t\t\tdata-slot=\"drawer-overlay\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerContent({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n\treturn (\n\t\t<DrawerPortal data-slot=\"drawer-portal\">\n\t\t\t<DrawerOverlay />\n\t\t\t<DrawerPrimitive.Content\n\t\t\t\tdata-slot=\"drawer-content\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n\t\t\t\t\t\"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n\t\t\t\t{children}\n\t\t\t</DrawerPrimitive.Content>\n\t\t</DrawerPortal>\n\t);\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"drawer-header\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"drawer-footer\"\n\t\t\tclassName={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerTitle({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n\treturn (\n\t\t<DrawerPrimitive.Title\n\t\t\tdata-slot=\"drawer-title\"\n\t\t\tclassName={cn(\"text-foreground font-semibold\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction DrawerDescription({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n\treturn (\n\t\t<DrawerPrimitive.Description\n\t\t\tdata-slot=\"drawer-description\"\n\t\t\tclassName={cn(\"text-muted-foreground text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n};\n","/**\n * @name AvatarEditorDialog\n * @description A complete avatar editing experience with a preview display and edit dialog.\n * Shows a large avatar with an edit button. Opens fullscreen dialog on mobile, modal on desktop.\n * Handles save/upload callbacks with success/error feedback.\n *\n * @example\n * ```tsx\n * import { AvatarEditorDialog } from \"@/components/avatar-editor-dialog\"\n *\n * export default function ProfilePage() {\n * const [avatar, setAvatar] = useState<string | null>(null)\n *\n * const handleSave = async (dataUrl: string) => {\n * await uploadAvatar(dataUrl)\n * }\n *\n * return (\n * <AvatarEditorDialog\n * value={avatar}\n * onChange={setAvatar}\n * onSave={handleSave}\n * />\n * )\n * }\n * ```\n */\n\"use client\";\nimport { useState, useCallback, useEffect } from \"react\";\nimport { Pencil, User, X, Check, Loader2 } from \"lucide-react\";\nimport { AvatarEditor } from \"./AvatarEditor\";\nimport { Button } from \"./ui/button\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogFooter,\n\tDialogClose,\n} from \"./ui/dialog\";\nimport {\n\tDrawer,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerTitle,\n\tDrawerFooter,\n\tDrawerClose,\n} from \"./ui/drawer\";\nimport { cn } from \"../lib/utils\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\nexport interface AvatarEditorDialogProps {\n\t/** Current avatar URL or data URL */\n\tvalue?: string | null;\n\t/** Callback when avatar changes (after accepting) */\n\tonChange?: (dataUrl: string | null) => void;\n\t/** Async callback for saving/uploading - return true for success, false for failure */\n\tonSave?: (dataUrl: string) => Promise<boolean> | boolean;\n\t/** Size of the displayed avatar in pixels */\n\tdisplaySize?: number;\n\t/** Size of the editor in the dialog */\n\teditorSize?: number;\n\t/** Output image size */\n\toutputSize?: number;\n\t/** Placeholder text when no avatar */\n\tplaceholder?: string;\n\t/** Edit button label for accessibility */\n\teditLabel?: string;\n\t/** Dialog title */\n\tdialogTitle?: string;\n\t/** Accept button text */\n\tacceptText?: string;\n\t/** Cancel button text */\n\tcancelText?: string;\n\t/** Success message */\n\tsuccessMessage?: string;\n\t/** Error message */\n\terrorMessage?: string;\n\t/** Additional class names */\n\tclassName?: string;\n}\n\nfunction useMediaQuery(query: string): boolean {\n\tconst [matches, setMatches] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst media = window.matchMedia(query);\n\t\tif (media.matches !== matches) {\n\t\t\tsetMatches(media.matches);\n\t\t}\n\t\tconst listener = () => setMatches(media.matches);\n\t\tmedia.addEventListener(\"change\", listener);\n\t\treturn () => media.removeEventListener(\"change\", listener);\n\t}, [matches, query]);\n\n\treturn matches;\n}\n\nexport function AvatarEditorDialog({\n\tvalue,\n\tonChange,\n\tonSave,\n\tdisplaySize = 120,\n\teditorSize = 280,\n\toutputSize = 256,\n\tplaceholder = \"Add Photo\",\n\teditLabel = \"Edit avatar\",\n\tdialogTitle = \"Edit Avatar\",\n\tacceptText = \"Accept\",\n\tcancelText = \"Cancel\",\n\tsuccessMessage = \"Avatar saved successfully!\",\n\terrorMessage = \"Failed to save avatar. Please try again.\",\n\tclassName,\n}: AvatarEditorDialogProps) {\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [editedValue, setEditedValue] = useState<string | null>(value ?? null);\n\tconst [isSaving, setIsSaving] = useState(false);\n\tconst [feedback, setFeedback] = useState<{\n\t\ttype: \"success\" | \"error\";\n\t\tmessage: string;\n\t} | null>(null);\n\n\tconst isMobile = useMediaQuery(\"(max-width: 640px)\");\n\tconst caption = (placeholder ?? \"\").trim();\n\n\t// Sync edited value when dialog opens\n\tconst handleOpenChange = useCallback(\n\t\t(open: boolean) => {\n\t\t\tif (open) {\n\t\t\t\tsetEditedValue(value ?? null);\n\t\t\t\tsetFeedback(null);\n\t\t\t}\n\t\t\tsetIsOpen(open);\n\t\t},\n\t\t[value],\n\t);\n\n\t// Handle accept/save\n\tconst handleAccept = useCallback(async () => {\n\t\tif (!editedValue) return;\n\n\t\tsetIsSaving(true);\n\t\tsetFeedback(null);\n\n\t\ttry {\n\t\t\tif (onSave) {\n\t\t\t\tconst result = await onSave(editedValue);\n\t\t\t\tif (result) {\n\t\t\t\t\tonChange?.(editedValue);\n\t\t\t\t\tsetFeedback({ type: \"success\", message: successMessage });\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\t\tsetFeedback(null);\n\t\t\t\t\t}, 1500);\n\t\t\t\t} else {\n\t\t\t\t\tsetFeedback({ type: \"error\", message: errorMessage });\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tonChange?.(editedValue);\n\t\t\t\tsetFeedback({ type: \"success\", message: successMessage });\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\tsetFeedback(null);\n\t\t\t\t}, 1500);\n\t\t\t}\n\t\t} catch {\n\t\t\tsetFeedback({ type: \"error\", message: errorMessage });\n\t\t} finally {\n\t\t\tsetIsSaving(false);\n\t\t}\n\t}, [editedValue, onChange, onSave, successMessage, errorMessage]);\n\n\t// Avatar display component\n\tconst AvatarDisplay = (\n\t\t<div\n\t\t\tclassName={cn(\"relative group\", className)}\n\t\t\tstyle={{ width: displaySize, height: displaySize }}\n\t\t>\n\t\t\t{/* Avatar circle */}\n\t\t\t<div\n\t\t\t\tclassName=\"w-full h-full rounded-full overflow-hidden bg-muted border-2 border-border flex items-center justify-center\"\n\t\t\t\tstyle={{ width: displaySize, height: displaySize }}\n\t\t\t>\n\t\t\t\t{value ? (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={value || \"/placeholder.svg\"}\n\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\tclassName=\"w-full h-full object-cover\"\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex flex-col items-center justify-center text-muted-foreground\",\n\t\t\t\t\t\t\tcaption ? \"gap-1\" : \"gap-0\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<User\n\t\t\t\t\t\t\tclassName=\"h-1/2 w-1/2 max-h-[55%] max-w-[55%] shrink-0\"\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{caption ? (\n\t\t\t\t\t\t\t<span className=\"text-xs text-center px-1\">{caption}</span>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Edit button - bottom right */}\n\t\t\t<button\n\t\t\t\tonClick={() => handleOpenChange(true)}\n\t\t\t\tclassName=\"absolute bottom-0 right-0 w-8 h-8 rounded-full bg-primary text-primary-foreground flex items-center justify-center shadow-lg hover:bg-primary/90 transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n\t\t\t\taria-label={editLabel}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<Pencil className=\"w-4 h-4\" />\n\t\t\t</button>\n\t\t</div>\n\t);\n\n\tconst mobileEditorSize = isMobile\n\t\t? Math.min(editorSize + 40, window.innerWidth - 48)\n\t\t: editorSize;\n\n\t// Editor content (shared between dialog and drawer)\n\tconst EditorContent = (\n\t\t<div className=\"flex flex-col items-center gap-4\">\n\t\t\t<AvatarEditor\n\t\t\t\tvalue={editedValue}\n\t\t\t\tonChange={setEditedValue}\n\t\t\t\tsize={mobileEditorSize}\n\t\t\t\toutputSize={outputSize}\n\t\t\t\tcontrolSize={isMobile ? \"large\" : \"default\"}\n\t\t\t/>\n\n\t\t\t{/* Feedback message */}\n\t\t\t<AnimatePresence>\n\t\t\t\t{feedback && (\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tinitial={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\t\texit={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex items-center gap-2 rounded-lg font-medium\",\n\t\t\t\t\t\t\tisMobile ? \"px-5 py-3 text-base\" : \"px-4 py-2 text-sm\",\n\t\t\t\t\t\t\tfeedback.type === \"success\"\n\t\t\t\t\t\t\t\t? \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\"\n\t\t\t\t\t\t\t\t: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{feedback.type === \"success\" ? (\n\t\t\t\t\t\t\t<Check className={isMobile ? \"w-5 h-5\" : \"w-4 h-4\"} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<X className={isMobile ? \"w-5 h-5\" : \"w-4 h-4\"} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{feedback.message}\n\t\t\t\t\t</motion.div>\n\t\t\t\t)}\n\t\t\t</AnimatePresence>\n\t\t</div>\n\t);\n\n\t// Footer buttons (shared)\n\tconst FooterButtons = (\n\t\t<>\n\t\t\t{isMobile ? (\n\t\t\t\t<DrawerClose asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tdisabled={isSaving}\n\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\tclassName=\"flex-1 bg-transparent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{cancelText}\n\t\t\t\t\t</Button>\n\t\t\t\t</DrawerClose>\n\t\t\t) : (\n\t\t\t\t<DialogClose asChild>\n\t\t\t\t\t<Button variant=\"outline\" disabled={isSaving}>\n\t\t\t\t\t\t{cancelText}\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogClose>\n\t\t\t)}\n\t\t\t<Button\n\t\t\t\tonClick={handleAccept}\n\t\t\t\tdisabled={!editedValue || isSaving || feedback?.type === \"success\"}\n\t\t\t\tsize={isMobile ? \"lg\" : \"default\"}\n\t\t\t\tclassName={isMobile ? \"flex-1\" : \"\"}\n\t\t\t>\n\t\t\t\t{isSaving ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Loader2\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"mr-2 animate-spin\",\n\t\t\t\t\t\t\t\tisMobile ? \"w-5 h-5\" : \"w-4 h-4\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\tSaving...\n\t\t\t\t\t</>\n\t\t\t\t) : feedback?.type === \"success\" ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Check className={cn(\"mr-2\", isMobile ? \"w-5 h-5\" : \"w-4 h-4\")} />\n\t\t\t\t\t\tSaved!\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tacceptText\n\t\t\t\t)}\n\t\t\t</Button>\n\t\t</>\n\t);\n\n\t// Mobile: Drawer (fullscreen-like)\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{AvatarDisplay}\n\t\t\t\t<Drawer open={isOpen} onOpenChange={handleOpenChange}>\n\t\t\t\t\t<DrawerContent className=\"max-h-[96vh]\">\n\t\t\t\t\t\t<DrawerHeader className=\"text-center\">\n\t\t\t\t\t\t\t<DrawerTitle className=\"text-xl\">{dialogTitle}</DrawerTitle>\n\t\t\t\t\t\t</DrawerHeader>\n\t\t\t\t\t\t<div className=\"px-6 pb-6 overflow-y-auto\">{EditorContent}</div>\n\t\t\t\t\t\t<DrawerFooter className=\"flex-row gap-3 px-6 pb-8\">\n\t\t\t\t\t\t\t{FooterButtons}\n\t\t\t\t\t\t</DrawerFooter>\n\t\t\t\t\t</DrawerContent>\n\t\t\t\t</Drawer>\n\t\t\t</>\n\t\t);\n\t}\n\n\t// Desktop: Dialog (modal)\n\treturn (\n\t\t<>\n\t\t\t{AvatarDisplay}\n\t\t\t<Dialog open={isOpen} onOpenChange={handleOpenChange}>\n\t\t\t\t<DialogContent className=\"sm:max-w-md\">\n\t\t\t\t\t<DialogHeader>\n\t\t\t\t\t\t<DialogTitle>{dialogTitle}</DialogTitle>\n\t\t\t\t\t</DialogHeader>\n\t\t\t\t\t<div className=\"flex justify-center py-4\">{EditorContent}</div>\n\t\t\t\t\t<DialogFooter className=\"sm:gap-3\">{FooterButtons}</DialogFooter>\n\t\t\t\t</DialogContent>\n\t\t\t</Dialog>\n\t\t</>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Popover({\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n\treturn <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n\treturn <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n\tclassName,\n\talign = \"center\",\n\tsideOffset = 4,\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n\treturn (\n\t\t<PopoverPrimitive.Portal>\n\t\t\t<PopoverPrimitive.Content\n\t\t\t\tdata-slot=\"popover-content\"\n\t\t\t\talign={align}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</PopoverPrimitive.Portal>\n\t);\n}\n\nfunction PopoverAnchor({\n\t...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n\treturn <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n\tBell,\n\tCheckCheck,\n\tTrash2,\n\tX,\n\tInfo,\n\tAlertTriangle,\n\tCheckCircle,\n\tXCircle,\n} from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./ui/popover\";\nimport { useNotificationsContext } from \"../contexts\";\n\n/**\n * NotificationsWidget - A compact notification bell for navigation bars\n *\n * @description\n * Displays a bell icon with unread count badge, plays sound on new notifications,\n * and shows a popover with recent notifications that can be marked as read or dismissed.\n *\n * @example\n * ```tsx\n * <NotificationsWidget\n * notifications={notifications}\n * onMarkAsRead={(id) => markAsRead(id)}\n * onMarkAllAsRead={() => markAllAsRead()}\n * onDismiss={(id) => dismiss(id)}\n * onClearAll={() => clearAll()}\n * playSound={true}\n * />\n * ```\n */\n\nexport type NotificationType = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface Notification {\n\tid: string;\n\ttitle: string;\n\tmessage?: string;\n\ttype?: NotificationType;\n\ttimestamp: Date;\n\tread?: boolean;\n\thref?: string;\n\tchannelId?: string;\n}\n\ntype WidgetSize = \"sm\" | \"md\" | \"lg\";\ntype DotColor = \"red\" | \"blue\" | \"green\" | \"amber\" | \"purple\" | \"primary\";\ntype SoundType = \"chime\" | \"bell\" | \"pop\" | \"ding\" | \"none\";\ntype PulseStyle = \"ring\" | \"glow\" | \"bounce\" | \"none\";\n\nexport interface NotificationsWidgetProps {\n\t/**\n\t * Notifications to display. Optional if using NotificationsContext.\n\t * When context is available, context.notifications is used; props override context.\n\t */\n\tnotifications?: Notification[];\n\t/**\n\t * Called when a notification becomes visible (scroll into view).\n\t * Should return a Promise - if rejected, the notification will be reverted to unread.\n\t * Uses optimistic update: marks as read immediately, reverts on failure.\n\t * Optional if using NotificationsContext.\n\t */\n\tonMarkAsRead?: (id: string) => void | Promise<void>;\n\t/**\n\t * Called when \"Mark all as read\" button is clicked.\n\t * Should return a Promise - if rejected, notifications will be reverted to unread.\n\t * Uses optimistic update: marks all as read immediately, reverts on failure.\n\t * Optional if using NotificationsContext.\n\t */\n\tonMarkAllAsRead?: () => void | Promise<void>;\n\t/**\n\t * Called when a notification is dismissed.\n\t * Optional if using NotificationsContext.\n\t */\n\tonDismiss?: (id: string) => void;\n\t/**\n\t * Called when all notifications are cleared.\n\t * Optional if using NotificationsContext.\n\t */\n\tonClearAll?: () => void;\n\t/**\n\t * Called when a notification is clicked.\n\t * Optional if using NotificationsContext.\n\t */\n\tonNotificationClick?: (notification: Notification) => void;\n\tsize?: WidgetSize;\n\t/**\n\t * Maximum number of notifications to show in the list.\n\t * Default: 5 on desktop. Scroll to see more.\n\t */\n\tmaxVisible?: number;\n\tplaySound?: boolean;\n\tsoundUrl?: string;\n\tclassName?: string;\n\temptyMessage?: string;\n\ttitle?: string;\n\tdotColor?: DotColor;\n\tshowPulse?: boolean;\n\tsoundType?: SoundType;\n\tpulseStyle?: PulseStyle;\n\tsoundCooldown?: number;\n\t/** \"ghost\" renders a borderless button matching other ghost icon buttons. */\n\tbuttonVariant?: \"default\" | \"ghost\";\n\t/** URL to navigate to when \"View all\" is clicked in the footer. */\n\tviewAllHref?: string;\n\t/** Label for the \"View all\" link. Default: \"View all\" */\n\tviewAllLabel?: string;\n}\n\nconst sizeConfig = {\n\tsm: {\n\t\tbutton: \"h-8 w-8\",\n\t\ticon: \"w-4 h-4\",\n\t\tbadge: \"min-w-[16px] h-4 text-[10px] -top-1 -right-1\",\n\t\tdot: \"w-2.5 h-2.5 top-0 right-0\",\n\t},\n\tmd: {\n\t\tbutton: \"h-9 w-9\",\n\t\ticon: \"w-5 h-5\",\n\t\tbadge: \"min-w-[18px] h-[18px] text-[11px] -top-1 -right-1\",\n\t\tdot: \"w-3 h-3 top-0 right-0\",\n\t},\n\tlg: {\n\t\tbutton: \"h-10 w-10\",\n\t\ticon: \"w-6 h-6\",\n\t\tbadge: \"min-w-[20px] h-5 text-xs -top-1.5 -right-1.5\",\n\t\tdot: \"w-3.5 h-3.5 top-0 right-0\",\n\t},\n};\n\nconst typeConfig: Record<\n\tNotificationType,\n\t{ icon: typeof Info; color: string; bg: string }\n> = {\n\tinfo: {\n\t\ticon: Info,\n\t\tcolor: \"text-blue-500\",\n\t\tbg: \"bg-blue-500/10\",\n\t},\n\tsuccess: {\n\t\ticon: CheckCircle,\n\t\tcolor: \"text-green-500\",\n\t\tbg: \"bg-green-500/10\",\n\t},\n\twarning: {\n\t\ticon: AlertTriangle,\n\t\tcolor: \"text-amber-500\",\n\t\tbg: \"bg-amber-500/10\",\n\t},\n\terror: {\n\t\ticon: XCircle,\n\t\tcolor: \"text-red-500\",\n\t\tbg: \"bg-red-500/10\",\n\t},\n};\n\nconst dotColorConfig: Record<DotColor, string> = {\n\tred: \"bg-red-500\",\n\tblue: \"bg-blue-500\",\n\tgreen: \"bg-green-500\",\n\tamber: \"bg-amber-500\",\n\tpurple: \"bg-purple-500\",\n\tprimary: \"bg-primary\",\n};\n\nconst soundConfig: Record<\n\tExclude<SoundType, \"none\">,\n\t{ frequencies: number[]; durations: number[]; gain: number }\n> = {\n\tchime: {\n\t\tfrequencies: [880, 1100],\n\t\tdurations: [0.1, 0.2],\n\t\tgain: 0.3,\n\t},\n\tbell: {\n\t\tfrequencies: [523, 659, 784],\n\t\tdurations: [0.15, 0.15, 0.2],\n\t\tgain: 0.25,\n\t},\n\tpop: {\n\t\tfrequencies: [400, 600],\n\t\tdurations: [0.05, 0.08],\n\t\tgain: 0.4,\n\t},\n\tding: {\n\t\tfrequencies: [1200],\n\t\tdurations: [0.15],\n\t\tgain: 0.2,\n\t},\n};\n\nconst pulseVariants: Record<\n\tExclude<PulseStyle, \"none\">,\n\t{ animate: object; transition: object }\n> = {\n\tring: {\n\t\tanimate: { scale: [1, 1.8], opacity: [0.6, 0] },\n\t\ttransition: {\n\t\t\tduration: 1.2,\n\t\t\trepeat: Number.POSITIVE_INFINITY,\n\t\t\tease: \"easeOut\",\n\t\t},\n\t},\n\tglow: {\n\t\tanimate: { scale: [1, 1.3, 1], opacity: [0.8, 0.4, 0.8] },\n\t\ttransition: {\n\t\t\tduration: 1.5,\n\t\t\trepeat: Number.POSITIVE_INFINITY,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n\tbounce: {\n\t\tanimate: { scale: [1, 1.2, 1], y: [0, -2, 0] },\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\trepeat: Number.POSITIVE_INFINITY,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nfunction formatTimeAgo(date: Date): string {\n\tconst now = new Date();\n\tconst diffMs = now.getTime() - date.getTime();\n\tconst diffSecs = Math.floor(diffMs / 1000);\n\tconst diffMins = Math.floor(diffSecs / 60);\n\tconst diffHours = Math.floor(diffMins / 60);\n\tconst diffDays = Math.floor(diffHours / 24);\n\n\tif (diffSecs < 60) return \"just now\";\n\tif (diffMins < 60) return `${diffMins}m ago`;\n\tif (diffHours < 24) return `${diffHours}h ago`;\n\tif (diffDays < 7) return `${diffDays}d ago`;\n\treturn date.toLocaleDateString();\n}\n\n// Simple notification sound using Web Audio API\nfunction playNotificationSound(\n\tsoundType: SoundType = \"chime\",\n\tsoundUrl?: string,\n) {\n\tif (typeof window === \"undefined\" || soundType === \"none\") return;\n\n\tif (soundUrl) {\n\t\tconst audio = new Audio(soundUrl);\n\t\taudio.volume = 0.5;\n\t\taudio.play().catch(() => {});\n\t\treturn;\n\t}\n\n\tconst config = soundConfig[soundType];\n\tif (!config) return;\n\n\ttry {\n\t\tconst audioContext = new (\n\t\t\twindow.AudioContext ||\n\t\t\t(window as unknown as { webkitAudioContext: typeof AudioContext })\n\t\t\t\t.webkitAudioContext\n\t\t)();\n\n\t\tlet currentTime = audioContext.currentTime;\n\n\t\tconfig.frequencies.forEach((freq, i) => {\n\t\t\tconst oscillator = audioContext.createOscillator();\n\t\t\tconst gainNode = audioContext.createGain();\n\n\t\t\toscillator.connect(gainNode);\n\t\t\tgainNode.connect(audioContext.destination);\n\n\t\t\toscillator.frequency.setValueAtTime(freq, currentTime);\n\t\t\tgainNode.gain.setValueAtTime(config.gain, currentTime);\n\t\t\tgainNode.gain.exponentialRampToValueAtTime(\n\t\t\t\t0.01,\n\t\t\t\tcurrentTime + config.durations[i],\n\t\t\t);\n\n\t\t\toscillator.start(currentTime);\n\t\t\toscillator.stop(currentTime + config.durations[i]);\n\n\t\t\tcurrentTime += config.durations[i] * 0.7;\n\t\t});\n\t} catch {\n\t\t// Silently fail if audio is not supported\n\t}\n}\n\nexport function NotificationsWidget({\n\tnotifications: propNotifications,\n\tonMarkAsRead: propOnMarkAsRead,\n\tonMarkAllAsRead: propOnMarkAllAsRead,\n\tonDismiss: propOnDismiss,\n\tonClearAll: propOnClearAll,\n\tonNotificationClick: propOnNotificationClick,\n\tsize = \"md\",\n\tmaxVisible = 5,\n\tplaySound = true,\n\tsoundUrl,\n\tclassName,\n\temptyMessage = \"No notifications\",\n\ttitle = \"Notifications\",\n\tdotColor = \"red\",\n\tshowPulse = true,\n\tsoundType = \"chime\",\n\tpulseStyle = \"ring\",\n\tsoundCooldown = 2000,\n\tbuttonVariant = \"default\",\n\tviewAllHref,\n\tviewAllLabel = \"View all\",\n}: NotificationsWidgetProps) {\n\t// Try to get context values (returns null if no provider)\n\tconst context = useNotificationsContext();\n\n\t// Use context values when available, fall back to props\n\t// Props take precedence over context when both are provided\n\tconst notifications = propNotifications ?? context?.notifications ?? [];\n\tconst onMarkAsRead = propOnMarkAsRead ?? context?.markAsRead;\n\tconst onMarkAllAsRead = propOnMarkAllAsRead ?? context?.markAllAsRead;\n\tconst onDismiss = propOnDismiss ?? context?.dismiss;\n\tconst onClearAll = propOnClearAll ?? context?.clearAll;\n\tconst onNotificationClick =\n\t\tpropOnNotificationClick ?? context?.onNotificationClick;\n\n\tconst [isOpen, setIsOpen] = React.useState(false);\n\tconst [prevCount, setPrevCount] = React.useState(0);\n\tconst lastSoundPlayedRef = React.useRef<number>(0);\n\tconst styles = sizeConfig[size];\n\tconst dotBgColor = dotColorConfig[dotColor];\n\n\t// Track optimistically marked-as-read notifications (before API confirms)\n\tconst [optimisticReadIds, setOptimisticReadIds] = React.useState<Set<string>>(\n\t\tnew Set(),\n\t);\n\t// Track notifications that are being processed (to avoid duplicate calls)\n\tconst processingIdsRef = React.useRef<Set<string>>(new Set());\n\t// Track notifications that have been marked via intersection observer (to avoid re-marking)\n\tconst intersectedIdsRef = React.useRef<Set<string>>(new Set());\n\t// Scroll container ref for IntersectionObserver\n\tconst scrollContainerRef = React.useRef<HTMLDivElement>(null);\n\n\t// Compute read state considering both server state and optimistic updates\n\tconst getIsRead = React.useCallback(\n\t\t(notification: Notification) => {\n\t\t\treturn notification.read || optimisticReadIds.has(notification.id);\n\t\t},\n\t\t[optimisticReadIds],\n\t);\n\n\t// Store latest notifications and read checker in refs for IntersectionObserver\n\t// (initialized after getIsRead is defined to avoid circular dependency)\n\tconst notificationsRef = React.useRef<Notification[]>(notifications);\n\tconst getIsReadRef = React.useRef(getIsRead);\n\n\t// Keep refs up to date\n\tReact.useEffect(() => {\n\t\tnotificationsRef.current = notifications;\n\t}, [notifications]);\n\n\tReact.useEffect(() => {\n\t\tgetIsReadRef.current = getIsRead;\n\t}, [getIsRead]);\n\n\tconst unreadCount = notifications.filter((n) => !getIsRead(n)).length;\n\n\t// Clean up optimistic read IDs when server confirms (notification.read becomes true)\n\t// Also remove stale IDs that no longer exist in the notifications array\n\tReact.useEffect(() => {\n\t\tsetOptimisticReadIds((prev) => {\n\t\t\tconst next = new Set(prev);\n\t\t\tlet changed = false;\n\t\t\tconst notificationIds = new Set(notifications.map((n) => n.id));\n\n\t\t\t// Remove IDs that are now confirmed read by server OR don't exist anymore\n\t\t\tprev.forEach((id) => {\n\t\t\t\tconst notification = notifications.find((n) => n.id === id);\n\n\t\t\t\t// Remove if notification doesn't exist anymore (stale ID)\n\t\t\t\tif (!notificationIds.has(id)) {\n\t\t\t\t\tnext.delete(id);\n\t\t\t\t\tchanged = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Remove if server confirmed it as read\n\t\t\t\tif (notification?.read === true) {\n\t\t\t\t\tnext.delete(id);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn changed ? next : prev;\n\t\t});\n\t}, [notifications]);\n\n\t// Sort notifications by timestamp (most recent first) for better UX\n\tconst sortedNotifications = React.useMemo(\n\t\t() =>\n\t\t\t[...notifications].sort(\n\t\t\t\t(a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n\t\t\t),\n\t\t[notifications],\n\t);\n\n\t// Calculate max height based on notification count (each ~72px, show max 5)\n\tconst notificationHeight = 72; // Approximate height per notification\n\tconst maxListHeight = Math.min(maxVisible, 5) * notificationHeight;\n\n\tconst hasMore = sortedNotifications.length > maxVisible;\n\n\t// Play sound when new notifications arrive (with cooldown)\n\t// Note: We play sound when unreadCount increases, even if going from 0 to 1+\n\tReact.useEffect(() => {\n\t\tif (playSound && soundType !== \"none\" && unreadCount > prevCount) {\n\t\t\tconst now = Date.now();\n\t\t\tif (now - lastSoundPlayedRef.current >= soundCooldown) {\n\t\t\t\tplayNotificationSound(soundType, soundUrl);\n\t\t\t\tlastSoundPlayedRef.current = now;\n\t\t\t}\n\t\t}\n\t\tsetPrevCount(unreadCount);\n\t}, [unreadCount, prevCount, soundType, soundUrl, soundCooldown, playSound]);\n\n\t/**\n\t * Optimistic mark-as-read with rollback on failure\n\t * 1. Mark as read immediately (optimistic)\n\t * 2. Call async API\n\t * 3. If API fails, revert to unread (rollback)\n\t */\n\tconst handleMarkAsRead = React.useCallback(\n\t\tasync (notificationId: string) => {\n\t\t\t// Skip if already read, already processing, or no handler\n\t\t\tif (!onMarkAsRead) return;\n\t\t\tif (processingIdsRef.current.has(notificationId)) return;\n\n\t\t\t// Use refs to access latest state\n\t\t\tconst notification = notificationsRef.current.find(\n\t\t\t\t(n) => n.id === notificationId,\n\t\t\t);\n\t\t\tif (!notification || getIsReadRef.current(notification)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Mark as processing\n\t\t\tprocessingIdsRef.current.add(notificationId);\n\n\t\t\t// Optimistic update - mark as read immediately\n\t\t\tsetOptimisticReadIds((prev) => new Set(prev).add(notificationId));\n\n\t\t\ttry {\n\t\t\t\t// Call the async handler\n\t\t\t\tawait Promise.resolve(onMarkAsRead(notificationId));\n\t\t\t\t// Success - keep optimistic state until server updates notification.read\n\t\t\t\t// DON'T clear optimisticReadIds here, let it persist until server confirms\n\t\t\t} catch {\n\t\t\t\t// Rollback - revert to unread\n\t\t\t\tsetOptimisticReadIds((prev) => {\n\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\tnext.delete(notificationId);\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\t// Remove from processing\n\t\t\t\tprocessingIdsRef.current.delete(notificationId);\n\t\t\t}\n\t\t},\n\t\t[onMarkAsRead],\n\t);\n\n\t/**\n\t * Optimistic mark-all-as-read with rollback on failure\n\t */\n\tconst handleMarkAllAsRead = React.useCallback(async () => {\n\t\tif (!onMarkAllAsRead) return;\n\n\t\t// Get all unread notification IDs\n\t\tconst unreadIds = notifications\n\t\t\t.filter((n) => !getIsRead(n))\n\t\t\t.map((n) => n.id);\n\n\t\tif (unreadIds.length === 0) return;\n\n\t\t// Optimistic update - mark all as read immediately\n\t\tsetOptimisticReadIds((prev) => {\n\t\t\tconst next = new Set(prev);\n\t\t\tunreadIds.forEach((id) => next.add(id));\n\t\t\treturn next;\n\t\t});\n\n\t\ttry {\n\t\t\t// Call the async handler\n\t\t\tawait Promise.resolve(onMarkAllAsRead());\n\t\t\t// Success - keep the optimistic state\n\t\t} catch {\n\t\t\t// Rollback - revert all to unread\n\t\t\tsetOptimisticReadIds((prev) => {\n\t\t\t\tconst next = new Set(prev);\n\t\t\t\tunreadIds.forEach((id) => next.delete(id));\n\t\t\t\treturn next;\n\t\t\t});\n\t\t}\n\t}, [notifications, onMarkAllAsRead, getIsRead]);\n\n\t/**\n\t * IntersectionObserver to detect visible notifications and mark as read\n\t * IMPORTANT: Only create observer once when popover opens, don't recreate on every notification change\n\t */\n\tReact.useEffect(() => {\n\t\tif (!isOpen || !onMarkAsRead) return;\n\n\t\t// Reset intersected IDs when popover opens\n\t\tintersectedIdsRef.current.clear();\n\n\t\t// Wait a tick for the DOM to render\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tconst scrollContainer = scrollContainerRef.current;\n\t\t\tif (!scrollContainer) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t(entries) => {\n\t\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\t\t\tconst notificationId = entry.target.getAttribute(\n\t\t\t\t\t\t\t\t\"data-notification-id\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnotificationId &&\n\t\t\t\t\t\t\t\t!intersectedIdsRef.current.has(notificationId)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// Mark this notification as having been intersected\n\t\t\t\t\t\t\t\tintersectedIdsRef.current.add(notificationId);\n\n\t\t\t\t\t\t\t\t// Use refs to access latest state without recreating observer\n\t\t\t\t\t\t\t\tconst notification = notificationsRef.current.find(\n\t\t\t\t\t\t\t\t\t(n) => n.id === notificationId,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst isRead = notification\n\t\t\t\t\t\t\t\t\t? getIsReadRef.current(notification)\n\t\t\t\t\t\t\t\t\t: false;\n\n\t\t\t\t\t\t\t\tif (notification && !isRead) {\n\t\t\t\t\t\t\t\t\thandleMarkAsRead(notificationId);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\troot: scrollContainer,\n\t\t\t\t\tthreshold: 0.5, // Trigger when 50% visible\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// Observe all notification elements within the scroll container\n\t\t\tconst notificationElements = scrollContainer.querySelectorAll(\n\t\t\t\t\"[data-notification-id]\",\n\t\t\t);\n\t\t\tnotificationElements.forEach((el) => observer.observe(el));\n\n\t\t\t// Store cleanup function\n\t\t\treturn () => {\n\t\t\t\tobserver.disconnect();\n\t\t\t};\n\t\t}, 100);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timeoutId);\n\t\t};\n\t\t// CRITICAL: Only depend on isOpen and onMarkAsRead, NOT notifications or getIsRead\n\t\t// This prevents recreating the observer when notifications are marked as read\n\t\t// We use refs to access the latest notification/read state\n\t}, [isOpen, onMarkAsRead, handleMarkAsRead]);\n\n\tconst handleNotificationClick = (notification: Notification) => {\n\t\t// Mark as read when clicked (if not already)\n\t\tif (!getIsRead(notification)) {\n\t\t\thandleMarkAsRead(notification.id);\n\t\t}\n\t\tif (notification.href) {\n\t\t\tonNotificationClick?.(notification);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Popover open={isOpen} onOpenChange={setIsOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<motion.button\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative inline-flex items-center justify-center rounded-lg transition-colors\",\n\t\t\t\t\t\tbuttonVariant === \"ghost\"\n\t\t\t\t\t\t\t? \"hover:bg-accent hover:text-accent-foreground\"\n\t\t\t\t\t\t\t: \"bg-muted/50 border border-border/50 hover:bg-muted/70\",\n\t\t\t\t\t\tstyles.button,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\twhileTap={{ scale: 0.95 }}\n\t\t\t\t\taria-label={`Notifications${unreadCount > 0 ? ` (${unreadCount} unread)` : \"\"}`}\n\t\t\t\t>\n\t\t\t\t\t<Bell className={cn(styles.icon, \"text-muted-foreground\")} />\n\n\t\t\t\t\t{/* Unread indicator - only show dot, no number */}\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{unreadCount > 0 && (\n\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\tinitial={{ scale: 0, opacity: 0 }}\n\t\t\t\t\t\t\t\tanimate={{ scale: 1, opacity: 1 }}\n\t\t\t\t\t\t\t\texit={{ scale: 0, opacity: 0 }}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"absolute rounded-full z-10\",\n\t\t\t\t\t\t\t\t\tdotBgColor,\n\t\t\t\t\t\t\t\t\tstyles.dot,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AnimatePresence>\n\n\t\t\t\t\t{/* Pulse animation for new notifications */}\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{unreadCount > 0 && showPulse && pulseStyle !== \"none\" && (\n\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\tinitial={{ scale: 1, opacity: 0.5 }}\n\t\t\t\t\t\t\t\tanimate={pulseVariants[pulseStyle].animate as never}\n\t\t\t\t\t\t\t\ttransition={pulseVariants[pulseStyle].transition}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"absolute rounded-full z-0\",\n\t\t\t\t\t\t\t\t\tdotBgColor,\n\t\t\t\t\t\t\t\t\tstyles.dot,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t</motion.button>\n\t\t\t</PopoverTrigger>\n\n\t\t\t<PopoverContent\n\t\t\t\tside=\"bottom\"\n\t\t\t\talign=\"end\"\n\t\t\t\tclassName=\"w-80 p-0 overflow-hidden\"\n\t\t\t>\n\t\t\t\t{/* Header */}\n\t\t\t\t<div className=\"flex items-center justify-between px-4 py-3 border-b border-border\">\n\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<h4 className=\"font-semibold text-sm\">{title}</h4>\n\t\t\t\t\t\t{unreadCount > 0 && (\n\t\t\t\t\t\t\t<span className=\"px-2 py-0.5 text-xs font-medium rounded-full bg-primary/10 text-primary\">\n\t\t\t\t\t\t\t\t{unreadCount} new\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t{unreadCount > 0 && onMarkAllAsRead && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tclassName=\"h-7 px-2 text-xs\"\n\t\t\t\t\t\t\t\tonClick={handleMarkAllAsRead}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<CheckCheck className=\"w-3.5 h-3.5 mr-1\" />\n\t\t\t\t\t\t\t\tMark all read\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Notification List */}\n\t\t\t\t{sortedNotifications.length === 0 ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-8 px-4 text-center\">\n\t\t\t\t\t\t\t<div className=\"w-12 h-12 rounded-full bg-muted flex items-center justify-center mb-3\">\n\t\t\t\t\t\t\t\t<Bell className=\"w-6 h-6 text-muted-foreground\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">{emptyMessage}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{viewAllHref && (\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-center px-4 py-2 border-t border-border bg-muted/30\">\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\thref={viewAllHref}\n\t\t\t\t\t\t\t\t\tclassName=\"text-xs text-primary hover:underline font-medium\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{viewAllLabel}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={scrollContainerRef}\n\t\t\t\t\t\t\tclassName=\"overflow-y-auto\"\n\t\t\t\t\t\t\tstyle={{ maxHeight: `${maxListHeight}px` }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"divide-y divide-border\">\n\t\t\t\t\t\t\t\t{sortedNotifications\n\t\t\t\t\t\t\t\t\t.slice(0, maxVisible)\n\t\t\t\t\t\t\t\t\t.map((notification) => {\n\t\t\t\t\t\t\t\t\t\tconst config = typeConfig[notification.type || \"info\"];\n\t\t\t\t\t\t\t\t\t\tconst Icon = config.icon;\n\t\t\t\t\t\t\t\t\t\tconst hasLink = !!notification.href;\n\t\t\t\t\t\t\t\t\t\tconst isRead = getIsRead(notification);\n\n\t\t\t\t\t\t\t\t\t\tconst handleClick = () =>\n\t\t\t\t\t\t\t\t\t\t\thandleNotificationClick(notification);\n\t\t\t\t\t\t\t\t\t\tconst handleKeyDown = (\n\t\t\t\t\t\t\t\t\t\t\te: React.KeyboardEvent<HTMLElement>,\n\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\thandleNotificationClick(notification);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\t// Use button for clickable notifications, div for non-clickable\n\t\t\t\t\t\t\t\t\t\tconst MotionElement = hasLink ? motion.button : motion.div;\n\t\t\t\t\t\t\t\t\t\tconst interactionProps = hasLink\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\trole: \"button\" as const,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick: handleClick,\n\t\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown: handleKeyDown,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t: {};\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<MotionElement\n\t\t\t\t\t\t\t\t\t\t\t\tkey={notification.id}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-notification-id={notification.id}\n\t\t\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"relative flex gap-3 px-4 py-3 transition-colors group w-full text-left border-0 bg-transparent\",\n\t\t\t\t\t\t\t\t\t\t\t\t\thasLink && \"cursor-pointer hover:bg-muted/50\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t!hasLink && \"cursor-default\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t!isRead && \"bg-primary/5\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t{...interactionProps}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{/* Type Icon */}\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconfig.bg,\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon className={cn(\"w-4 h-4\", config.color)} />\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t{/* Content */}\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex-1 min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-start justify-between gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"text-sm line-clamp-1\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!isRead ? \"font-semibold\" : \"font-medium\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thasLink && \"group-hover:underline\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{notification.title}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{notification.message && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground mt-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{notification.message}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-[10px] text-muted-foreground/70 mt-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatTimeAgo(notification.timestamp)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex-shrink-0 flex items-start gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{onDismiss && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-6 w-6 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonDismiss(notification.id);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<X className=\"w-3 h-3\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</MotionElement>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{/* Footer */}\n\t\t\t\t\t\t{(hasMore || onClearAll || viewAllHref) && (\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-between px-4 py-2 border-t border-border bg-muted/30\">\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t{hasMore && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t+{sortedNotifications.length - maxVisible} more\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t{viewAllHref && (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\thref={viewAllHref}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-xs text-primary hover:underline font-medium\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{viewAllLabel}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{onClearAll && sortedNotifications.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-7 px-2 text-xs text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => onClearAll()}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Trash2 className=\"w-3 h-3 mr-1\" />\n\t\t\t\t\t\t\t\t\t\t\tClear all\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n\treturn (\n\t\t<ScrollAreaPrimitive.Root\n\t\t\tdata-slot=\"scroll-area\"\n\t\t\tclassName={cn(\"relative overflow-hidden\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ScrollAreaPrimitive.Viewport\n\t\t\t\tdata-slot=\"scroll-area-viewport\"\n\t\t\t\tclassName=\"h-full w-full rounded-[inherit]\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</ScrollAreaPrimitive.Viewport>\n\t\t\t<ScrollBar />\n\t\t\t<ScrollAreaPrimitive.Corner />\n\t\t</ScrollAreaPrimitive.Root>\n\t);\n}\n\nfunction ScrollBar({\n\tclassName,\n\torientation = \"vertical\",\n\t...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n\treturn (\n\t\t<ScrollAreaPrimitive.ScrollAreaScrollbar\n\t\t\tdata-slot=\"scroll-bar\"\n\t\t\torientation={orientation}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex touch-none select-none transition-colors\",\n\t\t\t\torientation === \"vertical\" &&\n\t\t\t\t\t\"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n\t\t\t\torientation === \"horizontal\" &&\n\t\t\t\t\t\"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ScrollAreaPrimitive.ScrollAreaThumb\n\t\t\t\tdata-slot=\"scroll-thumb\"\n\t\t\t\tclassName=\"relative flex-1 rounded-full bg-border\"\n\t\t\t/>\n\t\t</ScrollAreaPrimitive.ScrollAreaScrollbar>\n\t);\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport { Clock, MapPin } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\n\nexport interface UpcomingEventsProps {\n\tevents: CalendarEvent[];\n\tmaxVisible?: number;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tclassName?: string;\n}\n\nexport function UpcomingEvents({\n\tevents,\n\tmaxVisible = 5,\n\tonEventClick,\n\tclassName,\n}: UpcomingEventsProps) {\n\tconst visible = events.slice(0, maxVisible);\n\n\treturn (\n\t\t<div className={cn(\"space-y-1\", className)}>\n\t\t\t{visible.map((event) => {\n\t\t\t\tconst start = new Date(event.dtstart);\n\t\t\t\tconst end = new Date(event.dtend);\n\t\t\t\tconst isToday = start.toDateString() === new Date().toDateString();\n\t\t\t\tconst dateStr = isToday\n\t\t\t\t\t? \"Today\"\n\t\t\t\t\t: start.toLocaleDateString([], {\n\t\t\t\t\t\t\tweekday: \"short\",\n\t\t\t\t\t\t\tmonth: \"short\",\n\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t});\n\t\t\t\tconst timeStr = event.allDay\n\t\t\t\t\t? \"All day\"\n\t\t\t\t\t: `${start.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })} – ${end.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })}`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={() => onEventClick?.(event)}\n\t\t\t\t\t\tclassName=\"flex w-full items-start gap-3 rounded-md px-2 py-2 text-left transition-colors hover:bg-accent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"mt-0.5 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-md text-xs font-medium\",\n\t\t\t\t\t\t\t\tisToday\n\t\t\t\t\t\t\t\t\t? \"bg-primary text-primary-foreground\"\n\t\t\t\t\t\t\t\t\t: \"bg-muted text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{start.getDate()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t<p className=\"text-sm font-medium truncate\">{event.summary}</p>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t<Clock className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t{dateStr} · {timeStr}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{event.location && (\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1 text-xs text-muted-foreground mt-0.5\">\n\t\t\t\t\t\t\t\t\t<MapPin className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t<span className=\"truncate\">{event.location}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n\tdelayDuration = 0,\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n\treturn (\n\t\t<TooltipPrimitive.Provider\n\t\t\tdata-slot=\"tooltip-provider\"\n\t\t\tdelayDuration={delayDuration}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction Tooltip({\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n\treturn (\n\t\t<TooltipProvider>\n\t\t\t<TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n\t\t</TooltipProvider>\n\t);\n}\n\nfunction TooltipTrigger({\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n\treturn <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n\tclassName,\n\tsideOffset = 0,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n\treturn (\n\t\t<TooltipPrimitive.Portal>\n\t\t\t<TooltipPrimitive.Content\n\t\t\t\tdata-slot=\"tooltip-content\"\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t\t<TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n\t\t\t</TooltipPrimitive.Content>\n\t\t</TooltipPrimitive.Portal>\n\t);\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Link, Check } from \"lucide-react\";\nimport { Button } from \"../ui/button\";\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"../ui/tooltip\";\n\nexport interface CalendarSubscribeButtonProps {\n\tfeedUrl: string;\n\tlabel?: string;\n}\n\nexport function CalendarSubscribeButton({\n\tfeedUrl,\n\tlabel,\n}: CalendarSubscribeButtonProps) {\n\tconst [copied, setCopied] = useState(false);\n\n\tconst webcalUrl = feedUrl.replace(/^https?:\\/\\//, \"webcal://\");\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(webcalUrl);\n\t\t\tsetCopied(true);\n\t\t\tsetTimeout(() => setCopied(false), 2000);\n\t\t} catch {\n\t\t\t// fallback: open webcal link\n\t\t\twindow.open(webcalUrl, \"_blank\");\n\t\t}\n\t};\n\n\treturn (\n\t\t<TooltipProvider>\n\t\t\t<Tooltip>\n\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName=\"text-xs\"\n\t\t\t\t\t\tonClick={handleCopy}\n\t\t\t\t\t>\n\t\t\t\t\t\t{copied ? (\n\t\t\t\t\t\t\t<Check className=\"mr-1 h-3 w-3\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Link className=\"mr-1 h-3 w-3\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{label ?? (copied ? \"Copied!\" : \"Subscribe\")}\n\t\t\t\t\t</Button>\n\t\t\t\t</TooltipTrigger>\n\t\t\t\t<TooltipContent>\n\t\t\t\t\tCopy webcal URL to subscribe in your calendar app\n\t\t\t\t</TooltipContent>\n\t\t\t</Tooltip>\n\t\t</TooltipProvider>\n\t);\n}\n","\"use client\";\n\nimport { CalendarDays, ExternalLink, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n\tuseCalendarContext,\n\ttype CalendarEvent,\n} from \"../../contexts/calendar\";\nimport { Button } from \"../ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { UpcomingEvents } from \"./UpcomingEvents\";\nimport { CalendarSubscribeButton } from \"./CalendarSubscribeButton\";\n\nexport interface CalendarWidgetLabels {\n\ttitle?: string;\n\tnoEvents?: string;\n\tviewCalendar?: string;\n}\n\nexport interface CalendarWidgetProps {\n\tcalendarUrl?: string;\n\tlabels?: CalendarWidgetLabels;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tclassName?: string;\n}\n\nexport function CalendarWidget({\n\tcalendarUrl,\n\tlabels = {},\n\tonEventClick,\n\tclassName,\n}: CalendarWidgetProps) {\n\tconst calCtx = useCalendarContext();\n\n\tconst upcomingEvents = (calCtx?.events ?? [])\n\t\t.filter((e) => new Date(e.dtstart) >= new Date())\n\t\t.sort(\n\t\t\t(a, b) => new Date(a.dtstart).getTime() - new Date(b.dtstart).getTime(),\n\t\t)\n\t\t.slice(0, 5);\n\n\tconst hasUpcoming = upcomingEvents.length > 0;\n\n\treturn (\n\t\t<Popover>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\tclassName={cn(\"relative h-9 w-9\", className)}\n\t\t\t\t\taria-label={labels.title ?? \"Calendar\"}\n\t\t\t\t>\n\t\t\t\t\t<CalendarDays className=\"h-4 w-4\" />\n\t\t\t\t\t{hasUpcoming && (\n\t\t\t\t\t\t<span className=\"absolute right-1.5 top-1.5 h-2 w-2 rounded-full bg-primary\" />\n\t\t\t\t\t)}\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-80 p-0\" align=\"end\">\n\t\t\t\t<div className=\"border-b px-4 py-3\">\n\t\t\t\t\t<h3 className=\"text-sm font-semibold\">\n\t\t\t\t\t\t{labels.title ?? \"Calendar\"}\n\t\t\t\t\t</h3>\n\t\t\t\t</div>\n\n\t\t\t\t<ScrollArea className=\"max-h-[320px]\">\n\t\t\t\t\t{calCtx?.isLoading ? (\n\t\t\t\t\t\t<div className=\"flex items-center justify-center py-8\">\n\t\t\t\t\t\t\t<Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : upcomingEvents.length === 0 ? (\n\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-8 text-center px-4\">\n\t\t\t\t\t\t\t<CalendarDays className=\"mb-2 h-8 w-8 text-muted-foreground/50\" />\n\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t{labels.noEvents ?? \"No upcoming events\"}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<UpcomingEvents\n\t\t\t\t\t\t\tevents={upcomingEvents}\n\t\t\t\t\t\t\tonEventClick={onEventClick}\n\t\t\t\t\t\t\tclassName=\"p-2\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</ScrollArea>\n\n\t\t\t\t<div className=\"flex items-center justify-between border-t px-3 py-2\">\n\t\t\t\t\t{calendarUrl && (\n\t\t\t\t\t\t<Button variant=\"ghost\" size=\"sm\" className=\"text-xs\" asChild>\n\t\t\t\t\t\t\t<a href={calendarUrl}>\n\t\t\t\t\t\t\t\t{labels.viewCalendar ?? \"View full calendar\"}\n\t\t\t\t\t\t\t\t<ExternalLink className=\"ml-1 h-3 w-3\" />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{calCtx?.feedUrl && (\n\t\t\t\t\t\t<CalendarSubscribeButton feedUrl={calCtx.feedUrl} />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport {\n\taddMonths,\n\tsubMonths,\n\tstartOfMonth,\n\tendOfMonth,\n\tstartOfWeek,\n\tendOfWeek,\n\teachDayOfInterval,\n\tisSameDay,\n\tformat,\n} from \"date-fns\";\nimport {\n\tChevronLeft,\n\tChevronRight,\n\tCalendarDays,\n\tPlus,\n\tLoader2,\n} from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\nimport { Button } from \"../ui/button\";\n\nexport type CalendarViewMode = \"month\" | \"week\" | \"day\";\n\nexport interface CalendarViewLabels {\n\tmonth?: string;\n\tweek?: string;\n\tday?: string;\n\ttoday?: string;\n\tnewEvent?: string;\n\tnoEvents?: string;\n}\n\nexport interface CalendarViewProps {\n\tevents: CalendarEvent[];\n\tisLoading?: boolean;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tonDateSelect?: (date: Date) => void;\n\tonCreateEvent?: () => void;\n\tlabels?: CalendarViewLabels;\n\tclassName?: string;\n}\n\nexport function CalendarView({\n\tevents,\n\tisLoading,\n\tonEventClick,\n\tonDateSelect,\n\tonCreateEvent,\n\tlabels = {},\n\tclassName,\n}: CalendarViewProps) {\n\tconst [viewMode, setViewMode] = useState<CalendarViewMode>(\"month\");\n\tconst [currentDate, setCurrentDate] = useState(new Date());\n\tconst [selectedDate, setSelectedDate] = useState<Date | undefined>();\n\n\tconst navigateBack = () => {\n\t\tif (viewMode === \"month\") {\n\t\t\tsetCurrentDate((d) => subMonths(d, 1));\n\t\t} else if (viewMode === \"week\") {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() - 7 * 86400000));\n\t\t} else {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() - 86400000));\n\t\t}\n\t};\n\n\tconst navigateForward = () => {\n\t\tif (viewMode === \"month\") {\n\t\t\tsetCurrentDate((d) => addMonths(d, 1));\n\t\t} else if (viewMode === \"week\") {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() + 7 * 86400000));\n\t\t} else {\n\t\t\tsetCurrentDate((d) => new Date(d.getTime() + 86400000));\n\t\t}\n\t};\n\n\tconst goToToday = () => {\n\t\tsetCurrentDate(new Date());\n\t\tsetSelectedDate(new Date());\n\t};\n\n\tconst handleDayClick = (date: Date) => {\n\t\tsetSelectedDate(date);\n\t\tonDateSelect?.(date);\n\t};\n\n\tconst eventsByDate = useMemo(() => {\n\t\tconst map = new Map<string, CalendarEvent[]>();\n\t\tfor (const event of events) {\n\t\t\tconst key = new Date(event.dtstart).toDateString();\n\t\t\tconst list = map.get(key) ?? [];\n\t\t\tlist.push(event);\n\t\t\tmap.set(key, list);\n\t\t}\n\t\treturn map;\n\t}, [events]);\n\n\tconst visibleDays = useMemo(() => {\n\t\tif (viewMode === \"month\") {\n\t\t\tconst monthStart = startOfMonth(currentDate);\n\t\t\tconst monthEnd = endOfMonth(currentDate);\n\t\t\treturn eachDayOfInterval({\n\t\t\t\tstart: startOfWeek(monthStart),\n\t\t\t\tend: endOfWeek(monthEnd),\n\t\t\t});\n\t\t} else if (viewMode === \"week\") {\n\t\t\tconst weekStart = startOfWeek(currentDate);\n\t\t\tconst weekEnd = endOfWeek(currentDate);\n\t\t\treturn eachDayOfInterval({ start: weekStart, end: weekEnd });\n\t\t}\n\t\treturn [currentDate];\n\t}, [viewMode, currentDate]);\n\n\tconst selectedDayEvents = selectedDate\n\t\t? (eventsByDate.get(selectedDate.toDateString()) ?? [])\n\t\t: [];\n\n\tconst headerLabel =\n\t\tviewMode === \"day\"\n\t\t\t? format(currentDate, \"EEEE, MMMM d, yyyy\")\n\t\t\t: format(currentDate, \"MMMM yyyy\");\n\n\treturn (\n\t\t<div className={cn(\"flex h-full flex-col\", className)}>\n\t\t\t<div className=\"flex items-center justify-between border-b px-4 py-3\">\n\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-8 w-8\"\n\t\t\t\t\t\t\tonClick={navigateBack}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ChevronLeft className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-8 w-8\"\n\t\t\t\t\t\t\tonClick={navigateForward}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ChevronRight className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h2 className=\"text-lg font-semibold\">{headerLabel}</h2>\n\t\t\t\t\t<Button variant=\"outline\" size=\"sm\" onClick={goToToday}>\n\t\t\t\t\t\t{labels.today ?? \"Today\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<div className=\"flex rounded-md border\">\n\t\t\t\t\t\t{([\"month\", \"week\", \"day\"] as const).map((mode) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={mode}\n\t\t\t\t\t\t\t\tvariant={viewMode === mode ? \"default\" : \"ghost\"}\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tclassName=\"rounded-none first:rounded-l-md last:rounded-r-md\"\n\t\t\t\t\t\t\t\tonClick={() => setViewMode(mode)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{labels[mode] ?? mode.charAt(0).toUpperCase() + mode.slice(1)}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t{onCreateEvent && (\n\t\t\t\t\t\t<Button size=\"sm\" onClick={onCreateEvent}>\n\t\t\t\t\t\t\t<Plus className=\"mr-1 h-4 w-4\" />\n\t\t\t\t\t\t\t{labels.newEvent ?? \"New event\"}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{isLoading ? (\n\t\t\t\t<div className=\"flex flex-1 items-center justify-center\">\n\t\t\t\t\t<Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"flex flex-1 overflow-hidden\">\n\t\t\t\t\t<div className=\"flex-1 overflow-auto p-4\">\n\t\t\t\t\t\t{viewMode === \"month\" ? (\n\t\t\t\t\t\t\t<div className=\"grid grid-cols-7 gap-px rounded-lg border bg-border\">\n\t\t\t\t\t\t\t\t{[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map(\n\t\t\t\t\t\t\t\t\t(day) => (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tkey={day}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"bg-muted px-2 py-1.5 text-center text-xs font-medium text-muted-foreground\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleDays.map((day) => {\n\t\t\t\t\t\t\t\t\tconst dayEvents = eventsByDate.get(day.toDateString()) ?? [];\n\t\t\t\t\t\t\t\t\tconst isCurrentMonth =\n\t\t\t\t\t\t\t\t\t\tday.getMonth() === currentDate.getMonth();\n\t\t\t\t\t\t\t\t\tconst isToday = isSameDay(day, new Date());\n\t\t\t\t\t\t\t\t\tconst isSelected =\n\t\t\t\t\t\t\t\t\t\tselectedDate && isSameDay(day, selectedDate);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey={day.toISOString()}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleDayClick(day)}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\"min-h-[80px] bg-background p-1 text-left transition-colors hover:bg-accent\",\n\t\t\t\t\t\t\t\t\t\t\t\t!isCurrentMonth && \"opacity-40\",\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected && \"ring-2 ring-primary ring-inset\",\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"inline-flex h-6 w-6 items-center justify-center rounded-full text-xs\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tisToday &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"bg-primary text-primary-foreground font-bold\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{day.getDate()}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t{dayEvents.slice(0, 3).map((evt) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"mt-0.5 truncate rounded bg-primary/10 px-1 py-0.5 text-[10px] text-primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonEventClick?.(evt);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\") onEventClick?.(evt);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{evt.summary}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t{dayEvents.length > 3 && (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"mt-0.5 text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t+{dayEvents.length - 3} more\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : viewMode === \"week\" ? (\n\t\t\t\t\t\t\t<div className=\"grid grid-cols-7 gap-2\">\n\t\t\t\t\t\t\t\t{visibleDays.map((day) => {\n\t\t\t\t\t\t\t\t\tconst dayEvents = eventsByDate.get(day.toDateString()) ?? [];\n\t\t\t\t\t\t\t\t\tconst isToday = isSameDay(day, new Date());\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<div key={day.toISOString()} className=\"min-h-[200px]\">\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mb-2 text-center text-xs\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tisToday && \"font-bold text-primary\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<p>{format(day, \"EEE\")}</p>\n\t\t\t\t\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inline-flex h-7 w-7 items-center justify-center rounded-full\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisToday && \"bg-primary text-primary-foreground\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{day.getDate()}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"space-y-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t{dayEvents.map((evt) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => onEventClick?.(evt)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full rounded bg-primary/10 px-2 py-1 text-left text-xs text-primary transition-colors hover:bg-primary/20\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"truncate font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{evt.summary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-[10px] opacity-70\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{format(new Date(evt.dtstart), \"h:mm a\")}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t\t{visibleDays.flatMap((day) => {\n\t\t\t\t\t\t\t\t\tconst dayEvents = eventsByDate.get(day.toDateString()) ?? [];\n\t\t\t\t\t\t\t\t\tif (dayEvents.length === 0) {\n\t\t\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey=\"empty\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex flex-col items-center justify-center py-16 text-center\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CalendarDays className=\"mb-3 h-10 w-10 text-muted-foreground/50\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{labels.noEvents ?? \"No events for this day\"}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t</div>,\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn dayEvents.map((evt) => (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => onEventClick?.(evt)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex w-full items-center gap-3 rounded-lg border p-3 text-left transition-colors hover:bg-accent\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"h-2 w-2 rounded-full bg-primary flex-shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"font-medium\">{evt.summary}</p>\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{format(new Date(evt.dtstart), \"h:mm a\")} –{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{format(new Date(evt.dtend), \"h:mm a\")}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t{evt.location && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground mt-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{evt.location}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t));\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{selectedDate &&\n\t\t\t\t\t\tselectedDayEvents.length > 0 &&\n\t\t\t\t\t\tviewMode === \"month\" && (\n\t\t\t\t\t\t\t<div className=\"w-64 border-l p-3\">\n\t\t\t\t\t\t\t\t<h3 className=\"mb-2 text-sm font-semibold\">\n\t\t\t\t\t\t\t\t\t{format(selectedDate, \"MMMM d\")}\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t\t\t{selectedDayEvents.map((evt) => (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey={evt.id}\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => onEventClick?.(evt)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full rounded-md bg-muted p-2 text-left text-sm transition-colors hover:bg-accent\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<p className=\"font-medium truncate\">{evt.summary}</p>\n\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t{evt.allDay\n\t\t\t\t\t\t\t\t\t\t\t\t\t? \"All day\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `${format(new Date(evt.dtstart), \"h:mm a\")} – ${format(new Date(evt.dtend), \"h:mm a\")}`}\n\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Clock, MapPin, Loader2 } from \"lucide-react\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\nimport { Button } from \"../ui/button\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogFooter,\n\tDialogClose,\n} from \"../ui/dialog\";\n\nexport interface EventDialogLabels {\n\tcreateTitle?: string;\n\teditTitle?: string;\n\tsummary?: string;\n\tdescription?: string;\n\tlocation?: string;\n\tstartDate?: string;\n\tendDate?: string;\n\tallDay?: string;\n\tattendees?: string;\n\treminder?: string;\n\tsave?: string;\n\tcancel?: string;\n\tdelete?: string;\n}\n\nexport interface EventDialogProps {\n\topen: boolean;\n\tonOpenChange: (open: boolean) => void;\n\tevent?: Partial<CalendarEvent>;\n\tonSave: (data: Partial<CalendarEvent>) => Promise<void>;\n\tonDelete?: () => Promise<void>;\n\tlabels?: EventDialogLabels;\n}\n\nexport function EventDialog({\n\topen,\n\tonOpenChange,\n\tevent,\n\tonSave,\n\tonDelete,\n\tlabels = {},\n}: EventDialogProps) {\n\tconst isEdit = !!event?.id;\n\tconst [summary, setSummary] = useState(event?.summary ?? \"\");\n\tconst [description, setDescription] = useState(event?.description ?? \"\");\n\tconst [location, setLocation] = useState(event?.location ?? \"\");\n\tconst [dtstart, setDtstart] = useState(\n\t\tevent?.dtstart ? new Date(event.dtstart).toISOString().slice(0, 16) : \"\",\n\t);\n\tconst [dtend, setDtend] = useState(\n\t\tevent?.dtend ? new Date(event.dtend).toISOString().slice(0, 16) : \"\",\n\t);\n\tconst [allDay, setAllDay] = useState(event?.allDay ?? false);\n\tconst [saving, setSaving] = useState(false);\n\n\tconst handleSave = async () => {\n\t\tif (!summary.trim() || !dtstart || !dtend) return;\n\t\tsetSaving(true);\n\t\ttry {\n\t\t\tawait onSave({\n\t\t\t\t...(event?.id ? { id: event.id } : {}),\n\t\t\t\tsummary: summary.trim(),\n\t\t\t\tdescription: description.trim() || null,\n\t\t\t\tlocation: location.trim() || null,\n\t\t\t\tdtstart: new Date(dtstart).toISOString(),\n\t\t\t\tdtend: new Date(dtend).toISOString(),\n\t\t\t\tallDay,\n\t\t\t});\n\t\t\tonOpenChange(false);\n\t\t} finally {\n\t\t\tsetSaving(false);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Dialog open={open} onOpenChange={onOpenChange}>\n\t\t\t<DialogContent className=\"sm:max-w-[480px]\">\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>\n\t\t\t\t\t\t{isEdit\n\t\t\t\t\t\t\t? (labels.editTitle ?? \"Edit event\")\n\t\t\t\t\t\t\t: (labels.createTitle ?? \"New event\")}\n\t\t\t\t\t</DialogTitle>\n\t\t\t\t</DialogHeader>\n\n\t\t\t\t<div className=\"space-y-4 py-2\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t{labels.summary ?? \"Summary\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={summary}\n\t\t\t\t\t\t\tonChange={(e) => setSummary(e.target.value)}\n\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\tplaceholder=\"Event name\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"grid grid-cols-2 gap-3\">\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t\t<Clock className=\"mr-1 inline h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t\t{labels.startDate ?? \"Start\"}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"datetime-local\"\n\t\t\t\t\t\t\t\tvalue={dtstart}\n\t\t\t\t\t\t\t\tonChange={(e) => setDtstart(e.target.value)}\n\t\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t\t{labels.endDate ?? \"End\"}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"datetime-local\"\n\t\t\t\t\t\t\t\tvalue={dtend}\n\t\t\t\t\t\t\t\tonChange={(e) => setDtend(e.target.value)}\n\t\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<label className=\"flex items-center gap-2 text-sm\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={allDay}\n\t\t\t\t\t\t\tonChange={(e) => setAllDay(e.target.checked)}\n\t\t\t\t\t\t\tclassName=\"rounded border-input\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{labels.allDay ?? \"All day\"}\n\t\t\t\t\t</label>\n\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t<MapPin className=\"mr-1 inline h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t{labels.location ?? \"Location\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={location}\n\t\t\t\t\t\t\tonChange={(e) => setLocation(e.target.value)}\n\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\tplaceholder=\"Add location\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">\n\t\t\t\t\t\t\t{labels.description ?? \"Description\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tvalue={description}\n\t\t\t\t\t\t\tonChange={(e) => setDescription(e.target.value)}\n\t\t\t\t\t\t\trows={3}\n\t\t\t\t\t\t\tclassName=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none\"\n\t\t\t\t\t\t\tplaceholder=\"Add description\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<DialogFooter className=\"gap-2\">\n\t\t\t\t\t{isEdit && onDelete && (\n\t\t\t\t\t\t<Button variant=\"destructive\" size=\"sm\" onClick={onDelete}>\n\t\t\t\t\t\t\t{labels.delete ?? \"Delete\"}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"flex-1\" />\n\t\t\t\t\t<DialogClose asChild>\n\t\t\t\t\t\t<Button variant=\"outline\" size=\"sm\">\n\t\t\t\t\t\t\t{labels.cancel ?? \"Cancel\"}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</DialogClose>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t\tdisabled={saving || !summary.trim() || !dtstart || !dtend}\n\t\t\t\t\t>\n\t\t\t\t\t\t{saving && <Loader2 className=\"mr-1 h-3.5 w-3.5 animate-spin\" />}\n\t\t\t\t\t\t{labels.save ?? \"Save\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogFooter>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n","\"use client\";\n\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils\";\nimport type { CalendarEvent } from \"../../contexts/calendar\";\n\nexport interface MiniCalendarProps {\n\tselected?: Date;\n\tonSelect?: (date: Date | undefined) => void;\n\tevents?: CalendarEvent[];\n\tclassName?: string;\n}\n\nexport function MiniCalendar({\n\tselected,\n\tonSelect,\n\tevents = [],\n\tclassName,\n}: MiniCalendarProps) {\n\tconst eventDates = new Set(\n\t\tevents.map((e) => new Date(e.dtstart).toDateString()),\n\t);\n\n\treturn (\n\t\t<DayPicker\n\t\t\tmode=\"single\"\n\t\t\tselected={selected}\n\t\t\tonSelect={onSelect}\n\t\t\tshowOutsideDays\n\t\t\tclassName={cn(\"p-2\", className)}\n\t\t\tclassNames={{\n\t\t\t\tmonths: \"flex flex-col\",\n\t\t\t\tmonth: \"space-y-2\",\n\t\t\t\tmonth_caption: \"flex justify-center relative items-center\",\n\t\t\t\tcaption_label: \"text-sm font-medium\",\n\t\t\t\tnav: \"space-x-1 flex items-center\",\n\t\t\t\tbutton_previous:\n\t\t\t\t\t\"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute left-1\",\n\t\t\t\tbutton_next:\n\t\t\t\t\t\"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute right-1\",\n\t\t\t\tmonth_grid: \"w-full border-collapse space-y-1\",\n\t\t\t\tweekdays: \"flex\",\n\t\t\t\tweekday:\n\t\t\t\t\t\"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n\t\t\t\tweek: \"flex w-full mt-1\",\n\t\t\t\tday: \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20\",\n\t\t\t\tday_button: cn(\n\t\t\t\t\t\"h-8 w-8 p-0 font-normal\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground rounded-md\",\n\t\t\t\t),\n\t\t\t\tselected:\n\t\t\t\t\t\"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground rounded-md\",\n\t\t\t\ttoday: \"bg-accent text-accent-foreground rounded-md\",\n\t\t\t\toutside: \"text-muted-foreground opacity-50\",\n\t\t\t\tdisabled: \"text-muted-foreground opacity-50\",\n\t\t\t}}\n\t\t\tmodifiers={{\n\t\t\t\thasEvent: (date) => eventDates.has(date.toDateString()),\n\t\t\t}}\n\t\t\tmodifiersClassNames={{\n\t\t\t\thasEvent: \"font-bold\",\n\t\t\t}}\n\t\t/>\n\t);\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, X, HelpCircle, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\n\ntype Partstat = \"ACCEPTED\" | \"DECLINED\" | \"TENTATIVE\" | \"NEEDS-ACTION\";\n\nexport interface EventRsvpBadgeProps {\n\teventId: string;\n\tcurrentStatus: string;\n\tonRsvp: (eventId: string, partstat: string) => Promise<void>;\n\tclassName?: string;\n}\n\nconst statusConfig: Record<\n\tPartstat,\n\t{ icon: typeof Check; label: string; className: string }\n> = {\n\tACCEPTED: {\n\t\ticon: Check,\n\t\tlabel: \"Accepted\",\n\t\tclassName:\n\t\t\t\"bg-green-500/10 text-green-600 dark:text-green-400 border-green-500/30\",\n\t},\n\tDECLINED: {\n\t\ticon: X,\n\t\tlabel: \"Declined\",\n\t\tclassName: \"bg-red-500/10 text-red-600 dark:text-red-400 border-red-500/30\",\n\t},\n\tTENTATIVE: {\n\t\ticon: HelpCircle,\n\t\tlabel: \"Tentative\",\n\t\tclassName:\n\t\t\t\"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400 border-yellow-500/30\",\n\t},\n\t\"NEEDS-ACTION\": {\n\t\ticon: HelpCircle,\n\t\tlabel: \"Pending\",\n\t\tclassName: \"bg-muted text-muted-foreground border-border\",\n\t},\n};\n\nexport function EventRsvpBadge({\n\teventId,\n\tcurrentStatus,\n\tonRsvp,\n\tclassName,\n}: EventRsvpBadgeProps) {\n\tconst [loading, setLoading] = useState<string | null>(null);\n\tconst status = (currentStatus?.toUpperCase() as Partstat) || \"NEEDS-ACTION\";\n\n\tconst handleRsvp = async (partstat: Partstat) => {\n\t\tif (partstat === status) return;\n\t\tsetLoading(partstat);\n\t\ttry {\n\t\t\tawait onRsvp(eventId, partstat);\n\t\t} finally {\n\t\t\tsetLoading(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={cn(\"flex items-center gap-1\", className)}>\n\t\t\t{([\"ACCEPTED\", \"TENTATIVE\", \"DECLINED\"] as const).map((ps) => {\n\t\t\t\tconst cfg = statusConfig[ps];\n\t\t\t\tconst Icon = cfg.icon;\n\t\t\t\tconst isActive = status === ps;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ps}\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tclassName={cn(\"h-7 px-2 text-xs\", isActive && cfg.className)}\n\t\t\t\t\t\tonClick={() => handleRsvp(ps)}\n\t\t\t\t\t\tdisabled={loading !== null}\n\t\t\t\t\t>\n\t\t\t\t\t\t{loading === ps ? (\n\t\t\t\t\t\t\t<Loader2 className=\"mr-1 h-3 w-3 animate-spin\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Icon className=\"mr-1 h-3 w-3\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{cfg.label}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport {\n\tChatSidebarContext,\n\ttype ChatConversation,\n\ttype ChatSidebarView,\n} from \"../../contexts/chat\";\n\nconst STORAGE_KEY = \"cartera:chatSidebarOpen\";\n\nexport interface ChatSidebarProviderProps {\n\tfetchConversations: () => Promise<ChatConversation[]>;\n\tchildren: React.ReactNode;\n\tdefaultOpen?: boolean;\n}\n\nexport function ChatSidebarProvider({\n\tfetchConversations,\n\tchildren,\n\tdefaultOpen,\n}: ChatSidebarProviderProps) {\n\tconst [isOpen, setIsOpen] = useState(() => {\n\t\tif (defaultOpen !== undefined) return defaultOpen;\n\t\tif (typeof window === \"undefined\") return false;\n\t\ttry {\n\t\t\treturn localStorage.getItem(STORAGE_KEY) === \"true\";\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n\tconst [view, setView] = useState<ChatSidebarView>(\"list\");\n\tconst [conversations, setConversations] = useState<ChatConversation[]>([]);\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [activeCaseId, setActiveCaseId] = useState<string | null>(null);\n\tconst [activeRoomId, setActiveRoomId] = useState<string | null>(null);\n\tconst fetchRef = useRef(fetchConversations);\n\tfetchRef.current = fetchConversations;\n\n\tconst persistOpen = useCallback((open: boolean) => {\n\t\tsetIsOpen(open);\n\t\ttry {\n\t\t\tlocalStorage.setItem(STORAGE_KEY, String(open));\n\t\t} catch {\n\t\t\t// localStorage unavailable\n\t\t}\n\t}, []);\n\n\tconst loadConversations = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\ttry {\n\t\t\tconst result = await fetchRef.current();\n\t\t\tsetConversations(result);\n\t\t} catch {\n\t\t\t// Silently fail\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, []);\n\n\tuseEffect(() => {\n\t\tvoid loadConversations();\n\t}, [loadConversations]);\n\n\tconst toggle = useCallback(() => persistOpen(!isOpen), [isOpen, persistOpen]);\n\tconst open = useCallback(() => persistOpen(true), [persistOpen]);\n\tconst close = useCallback(() => {\n\t\tpersistOpen(false);\n\t\tsetView(\"list\");\n\t\tsetActiveCaseId(null);\n\t\tsetActiveRoomId(null);\n\t}, [persistOpen]);\n\n\tconst openChat = useCallback(\n\t\t(caseId: string, roomId?: string) => {\n\t\t\tpersistOpen(true);\n\t\t\tsetActiveCaseId(caseId);\n\t\t\tif (roomId) {\n\t\t\t\tsetActiveRoomId(roomId);\n\t\t\t\tsetView(\"chat\");\n\t\t\t} else {\n\t\t\t\tconst conv = conversations.find((c) => c.caseId === caseId);\n\t\t\t\tif (conv && conv.rooms.length === 1) {\n\t\t\t\t\tsetActiveRoomId(conv.rooms[0].id);\n\t\t\t\t\tsetView(\"chat\");\n\t\t\t\t} else {\n\t\t\t\t\tsetActiveRoomId(null);\n\t\t\t\t\tsetView(\"list\");\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[persistOpen, conversations],\n\t);\n\n\tconst selectRoom = useCallback(\n\t\t(roomId: string, caseId: string) => {\n\t\t\tsetActiveCaseId(caseId);\n\t\t\tsetActiveRoomId(roomId);\n\t\t\tsetView(\"chat\");\n\t\t\tif (!isOpen) persistOpen(true);\n\t\t},\n\t\t[isOpen, persistOpen],\n\t);\n\n\tconst back = useCallback(() => {\n\t\tsetView(\"list\");\n\t\tsetActiveRoomId(null);\n\t}, []);\n\n\tconst value = {\n\t\tisOpen,\n\t\tview,\n\t\tconversations,\n\t\tisLoading,\n\t\tactiveCaseId,\n\t\tactiveRoomId,\n\t\ttoggle,\n\t\topen,\n\t\tclose,\n\t\topenChat,\n\t\tselectRoom,\n\t\tback,\n\t\trefetch: loadConversations,\n\t};\n\n\treturn (\n\t\t<ChatSidebarContext.Provider value={value}>\n\t\t\t{children}\n\t\t</ChatSidebarContext.Provider>\n\t);\n}\n","\"use client\";\n\nimport { useState, useEffect, useRef, useCallback } from \"react\";\n\nexport interface ChatMessageData {\n\tid: string;\n\tchatRoomId: string;\n\tsenderId: string;\n\tsenderName: string | null;\n\tsenderRole: string;\n\tcontent: string | null;\n\tattachments: Array<{\n\t\tid: string;\n\t\tfileName: string;\n\t\tfileSize: number;\n\t\tmimeType: string;\n\t}>;\n\tcreatedAt: string;\n}\n\nexport interface ChatRoomConfig {\n\tbaseUrl: string;\n\tgetToken: () => Promise<string | null>;\n}\n\ninterface UseChatRoomOptions {\n\tminReconnectDelay?: number;\n\tmaxReconnectDelay?: number;\n\tpingInterval?: number;\n}\n\nexport interface UseChatRoomResult {\n\tmessages: ChatMessageData[];\n\tsendMessage: (content: string, attachmentIds?: string[]) => void;\n\tsendTyping: (isTyping: boolean) => void;\n\tisConnected: boolean;\n\terror: string | null;\n\ttypingUsers: Array<{ userId: string; userName: string | null }>;\n\tloadMoreHistory: () => Promise<void>;\n\thasMoreHistory: boolean;\n\tisLoadingHistory: boolean;\n}\n\nconst PING_INTERVAL = 30_000;\nconst MIN_RECONNECT_DELAY = 1_000;\nconst MAX_RECONNECT_DELAY = 30_000;\n\nexport function useChatRoom(\n\troomId: string | null | undefined,\n\tconfig: ChatRoomConfig,\n\toptions: UseChatRoomOptions = {},\n): UseChatRoomResult {\n\tconst {\n\t\tminReconnectDelay = MIN_RECONNECT_DELAY,\n\t\tmaxReconnectDelay = MAX_RECONNECT_DELAY,\n\t\tpingInterval = PING_INTERVAL,\n\t} = options;\n\n\tconst [messages, setMessages] = useState<ChatMessageData[]>([]);\n\tconst [isConnected, setIsConnected] = useState(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [typingUsers, setTypingUsers] = useState<\n\t\tArray<{ userId: string; userName: string | null }>\n\t>([]);\n\tconst [hasMoreHistory, setHasMoreHistory] = useState(true);\n\tconst [isLoadingHistory, setIsLoadingHistory] = useState(false);\n\n\tconst wsRef = useRef<WebSocket | null>(null);\n\tconst mountedRef = useRef(true);\n\tconst reconnectDelayRef = useRef(minReconnectDelay);\n\tconst reconnectTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\tconst pingTimerRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\tconst roomIdRef = useRef(roomId);\n\tconst cursorRef = useRef<string | null>(null);\n\tconst messageIdsRef = useRef(new Set<string>());\n\tconst loadMoreHistoryRef = useRef<() => Promise<void>>(() =>\n\t\tPromise.resolve(),\n\t);\n\tconst configRef = useRef(config);\n\troomIdRef.current = roomId;\n\tconfigRef.current = config;\n\n\tconst clearTimers = useCallback(() => {\n\t\tif (reconnectTimerRef.current) {\n\t\t\tclearTimeout(reconnectTimerRef.current);\n\t\t\treconnectTimerRef.current = null;\n\t\t}\n\t\tif (pingTimerRef.current) {\n\t\t\tclearInterval(pingTimerRef.current);\n\t\t\tpingTimerRef.current = null;\n\t\t}\n\t}, []);\n\n\tconst loadMoreHistory = useCallback(async () => {\n\t\tif (!roomIdRef.current || isLoadingHistory || !hasMoreHistory) return;\n\n\t\tsetIsLoadingHistory(true);\n\t\ttry {\n\t\t\tconst jwt = await configRef.current.getToken();\n\t\t\tif (!jwt) return;\n\n\t\t\tconst params = new URLSearchParams({ limit: \"50\" });\n\t\t\tif (cursorRef.current) {\n\t\t\t\tparams.set(\"cursor\", cursorRef.current);\n\t\t\t}\n\n\t\t\tconst res = await fetch(\n\t\t\t\t`${configRef.current.baseUrl}/rooms/${roomIdRef.current}/messages?${params}`,\n\t\t\t\t{ headers: { Authorization: `Bearer ${jwt}` } },\n\t\t\t);\n\n\t\t\tif (!res.ok) return;\n\n\t\t\tconst data = (await res.json()) as {\n\t\t\t\tsuccess: boolean;\n\t\t\t\tresult: ChatMessageData[];\n\t\t\t\tnextCursor: string | null;\n\t\t\t};\n\n\t\t\tif (data.success && data.result.length > 0) {\n\t\t\t\tconst newMessages = data.result.filter(\n\t\t\t\t\t(m) => !messageIdsRef.current.has(m.id),\n\t\t\t\t);\n\t\t\t\tfor (const m of newMessages) {\n\t\t\t\t\tmessageIdsRef.current.add(m.id);\n\t\t\t\t}\n\t\t\t\tsetMessages((prev) => [...newMessages, ...prev]);\n\t\t\t\tcursorRef.current = data.nextCursor;\n\t\t\t\tsetHasMoreHistory(data.nextCursor !== null);\n\t\t\t} else {\n\t\t\t\tsetHasMoreHistory(false);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silently fail — user can retry\n\t\t} finally {\n\t\t\tsetIsLoadingHistory(false);\n\t\t}\n\t}, [isLoadingHistory, hasMoreHistory]);\n\n\tconst sendMessage = useCallback(\n\t\t(content: string, attachmentIds?: string[]) => {\n\t\t\tconst ws = wsRef.current;\n\t\t\tif (!ws || ws.readyState !== WebSocket.OPEN) return;\n\n\t\t\tws.send(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\ttype: \"send_message\",\n\t\t\t\t\tcontent,\n\t\t\t\t\tattachmentIds,\n\t\t\t\t\tclientMessageId: crypto.randomUUID(),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sendTyping = useCallback((isTyping: boolean) => {\n\t\tconst ws = wsRef.current;\n\t\tif (!ws || ws.readyState !== WebSocket.OPEN) return;\n\n\t\tws.send(JSON.stringify({ type: \"typing\", isTyping }));\n\t}, []);\n\n\tuseEffect(() => {\n\t\tloadMoreHistoryRef.current = loadMoreHistory;\n\t}, [loadMoreHistory]);\n\n\tconst connect = useCallback(async () => {\n\t\tif (!roomIdRef.current || !mountedRef.current) return;\n\n\t\tlet jwt: string | null = null;\n\t\ttry {\n\t\t\tjwt = await configRef.current.getToken();\n\t\t} catch {\n\t\t\tif (mountedRef.current) {\n\t\t\t\tsetError(\"Failed to get authentication token\");\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (!jwt || !mountedRef.current) return;\n\n\t\tconst baseUrl = configRef.current.baseUrl;\n\t\tconst wsBase = baseUrl.replace(/^http/, \"ws\");\n\t\tconst wsUrl = `${wsBase}/realtime/chat?roomId=${encodeURIComponent(roomIdRef.current)}&token=${encodeURIComponent(jwt)}`;\n\n\t\tlet ws: WebSocket;\n\t\ttry {\n\t\t\tws = new WebSocket(wsUrl);\n\t\t} catch (err) {\n\t\t\tif (mountedRef.current) {\n\t\t\t\tsetError(\n\t\t\t\t\terr instanceof Error ? err.message : \"WebSocket creation failed\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\twsRef.current = ws;\n\n\t\tws.onopen = () => {\n\t\t\tif (!mountedRef.current) {\n\t\t\t\tws.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsConnected(true);\n\t\t\tsetError(null);\n\t\t\treconnectDelayRef.current = minReconnectDelay;\n\n\t\t\tws.send(JSON.stringify({ type: \"client_hello\" }));\n\n\t\t\tpingTimerRef.current = setInterval(() => {\n\t\t\t\tif (ws.readyState === WebSocket.OPEN) {\n\t\t\t\t\tws.send(JSON.stringify({ type: \"ping\", timestamp: Date.now() }));\n\t\t\t\t}\n\t\t\t}, pingInterval);\n\t\t};\n\n\t\tws.onmessage = (event) => {\n\t\t\tif (!mountedRef.current) return;\n\t\t\ttry {\n\t\t\t\tconst msg = JSON.parse(event.data as string) as {\n\t\t\t\t\ttype: string;\n\t\t\t\t\t[key: string]: unknown;\n\t\t\t\t};\n\n\t\t\t\tswitch (msg.type) {\n\t\t\t\t\tcase \"server_hello\":\n\t\t\t\t\t\tvoid loadMoreHistoryRef.current();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"new_message\": {\n\t\t\t\t\t\tconst message = msg.message as ChatMessageData;\n\t\t\t\t\t\tif (!messageIdsRef.current.has(message.id)) {\n\t\t\t\t\t\t\tmessageIdsRef.current.add(message.id);\n\t\t\t\t\t\t\tsetMessages((prev) => [...prev, message]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetTypingUsers((prev) =>\n\t\t\t\t\t\t\tprev.filter((u) => u.userId !== message.senderId),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"typing_indicator\": {\n\t\t\t\t\t\tconst userId = msg.userId as string;\n\t\t\t\t\t\tconst userName = (msg.userName as string) ?? null;\n\t\t\t\t\t\tconst isTyping = msg.isTyping as boolean;\n\n\t\t\t\t\t\tsetTypingUsers((prev) => {\n\t\t\t\t\t\t\tif (isTyping) {\n\t\t\t\t\t\t\t\tif (prev.some((u) => u.userId === userId)) return prev;\n\t\t\t\t\t\t\t\treturn [...prev, { userId, userName }];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn prev.filter((u) => u.userId !== userId);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"pong\":\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"error\":\n\t\t\t\t\t\tsetError((msg.message as string) ?? \"WebSocket error from server\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Ignore malformed messages\n\t\t\t}\n\t\t};\n\n\t\tws.onerror = () => {\n\t\t\tif (!mountedRef.current) return;\n\t\t\tsetError(\"WebSocket connection error\");\n\t\t};\n\n\t\tws.onclose = () => {\n\t\t\tif (pingTimerRef.current) {\n\t\t\t\tclearInterval(pingTimerRef.current);\n\t\t\t\tpingTimerRef.current = null;\n\t\t\t}\n\t\t\tif (!mountedRef.current) return;\n\n\t\t\tsetIsConnected(false);\n\n\t\t\tconst delay = reconnectDelayRef.current;\n\t\t\treconnectDelayRef.current = Math.min(delay * 2, maxReconnectDelay);\n\n\t\t\treconnectTimerRef.current = setTimeout(() => {\n\t\t\t\tif (mountedRef.current && roomIdRef.current) {\n\t\t\t\t\tvoid connect();\n\t\t\t\t}\n\t\t\t}, delay);\n\t\t};\n\t}, [minReconnectDelay, maxReconnectDelay, pingInterval]);\n\n\tuseEffect(() => {\n\t\tmountedRef.current = true;\n\n\t\tif (!roomId) {\n\t\t\tsetMessages([]);\n\t\t\tsetIsConnected(false);\n\t\t\tsetError(null);\n\t\t\tsetTypingUsers([]);\n\t\t\tsetHasMoreHistory(true);\n\t\t\tcursorRef.current = null;\n\t\t\tmessageIdsRef.current = new Set();\n\t\t\treturn;\n\t\t}\n\n\t\tsetMessages([]);\n\t\tsetTypingUsers([]);\n\t\tsetHasMoreHistory(true);\n\t\tcursorRef.current = null;\n\t\tmessageIdsRef.current = new Set();\n\t\treconnectDelayRef.current = minReconnectDelay;\n\n\t\tvoid connect();\n\n\t\treturn () => {\n\t\t\tmountedRef.current = false;\n\t\t\tclearTimers();\n\t\t\tif (wsRef.current) {\n\t\t\t\twsRef.current.close();\n\t\t\t\twsRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [roomId]);\n\n\treturn {\n\t\tmessages,\n\t\tsendMessage,\n\t\tsendTyping,\n\t\tisConnected,\n\t\terror,\n\t\ttypingUsers,\n\t\tloadMoreHistory,\n\t\thasMoreHistory,\n\t\tisLoadingHistory,\n\t};\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useRef, useEffect, useCallback } from \"react\";\nimport {\n\tSend,\n\tPaperclip,\n\tMessageSquare,\n\tWifi,\n\tWifiOff,\n\tLoader2,\n\tFileIcon,\n\tDownload,\n\tX,\n} from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n\tuseChatRoom,\n\ttype ChatRoomConfig,\n\ttype ChatMessageData,\n} from \"../../hooks/useChatRoom\";\nimport { Button } from \"../ui/button\";\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"../ui/tooltip\";\n\nconst roleColors: Record<string, string> = {\n\tclient: \"bg-blue-500/10 text-blue-600 dark:text-blue-400\",\n\tseller: \"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400\",\n\torg_manager: \"bg-violet-500/10 text-violet-600 dark:text-violet-400\",\n\tcredit_agent: \"bg-amber-500/10 text-amber-600 dark:text-amber-400\",\n\tadmin: \"bg-primary/10 text-primary\",\n};\n\ninterface PendingAttachment {\n\tid: string;\n\tfileName: string;\n\tfileSize: number;\n\tmimeType: string;\n\tuploading: boolean;\n}\n\nexport interface ChatRoomViewLabels {\n\tnoMessages?: string;\n\tplaceholder?: string;\n\tsend?: string;\n\ttoday?: string;\n\tyesterday?: string;\n\tattachFile?: string;\n}\n\nexport interface ChatRoomViewProps {\n\troomId: string;\n\tcurrentUserId: string;\n\tconfig: ChatRoomConfig;\n\troomLabel?: string;\n\tlabels?: ChatRoomViewLabels;\n\troleLabel?: (role: string) => string;\n\tclassName?: string;\n}\n\nexport function ChatRoomView({\n\troomId,\n\tcurrentUserId,\n\tconfig,\n\troomLabel,\n\tlabels = {},\n\troleLabel,\n\tclassName,\n}: ChatRoomViewProps) {\n\tconst {\n\t\tmessages,\n\t\tsendMessage,\n\t\tsendTyping,\n\t\tisConnected,\n\t\terror,\n\t\ttypingUsers,\n\t\tloadMoreHistory,\n\t\thasMoreHistory,\n\t\tisLoadingHistory,\n\t} = useChatRoom(roomId, config);\n\n\tconst [newMessage, setNewMessage] = useState(\"\");\n\tconst [pendingAttachments, setPendingAttachments] = useState<\n\t\tPendingAttachment[]\n\t>([]);\n\tconst scrollRef = useRef<HTMLDivElement>(null);\n\tconst inputRef = useRef<HTMLTextAreaElement>(null);\n\tconst fileInputRef = useRef<HTMLInputElement>(null);\n\tconst typingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\tconst prevMessageCountRef = useRef(0);\n\n\tuseEffect(() => {\n\t\tconst el = scrollRef.current;\n\t\tif (!el) return;\n\t\tif (messages.length > prevMessageCountRef.current) {\n\t\t\tel.scrollTop = el.scrollHeight;\n\t\t}\n\t\tprevMessageCountRef.current = messages.length;\n\t}, [messages.length]);\n\n\tconst handleScroll = useCallback(() => {\n\t\tconst el = scrollRef.current;\n\t\tif (!el) return;\n\t\tif (el.scrollTop < 50 && hasMoreHistory && !isLoadingHistory) {\n\t\t\tvoid loadMoreHistory();\n\t\t}\n\t}, [hasMoreHistory, isLoadingHistory, loadMoreHistory]);\n\n\tconst handleTyping = useCallback(() => {\n\t\tsendTyping(true);\n\t\tif (typingTimeoutRef.current) clearTimeout(typingTimeoutRef.current);\n\t\ttypingTimeoutRef.current = setTimeout(() => sendTyping(false), 2000);\n\t}, [sendTyping]);\n\n\tconst handleSendMessage = useCallback(() => {\n\t\tconst content = newMessage.trim();\n\t\tconst attachmentIds = pendingAttachments\n\t\t\t.filter((a) => !a.uploading)\n\t\t\t.map((a) => a.id);\n\n\t\tif (!content && attachmentIds.length === 0) return;\n\n\t\tsendMessage(content, attachmentIds.length > 0 ? attachmentIds : undefined);\n\t\tsetNewMessage(\"\");\n\t\tsetPendingAttachments([]);\n\t\tsendTyping(false);\n\t\tif (typingTimeoutRef.current) clearTimeout(typingTimeoutRef.current);\n\t\tinputRef.current?.focus();\n\t}, [newMessage, pendingAttachments, sendMessage, sendTyping]);\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n\t\tif (e.key === \"Enter\" && !e.shiftKey) {\n\t\t\te.preventDefault();\n\t\t\thandleSendMessage();\n\t\t}\n\t};\n\n\tconst handleFileSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst files = e.target.files;\n\t\tif (!files || files.length === 0) return;\n\n\t\tfor (const file of Array.from(files)) {\n\t\t\tconst tempId = crypto.randomUUID();\n\t\t\tconst pending: PendingAttachment = {\n\t\t\t\tid: tempId,\n\t\t\t\tfileName: file.name,\n\t\t\t\tfileSize: file.size,\n\t\t\t\tmimeType: file.type || \"application/octet-stream\",\n\t\t\t\tuploading: true,\n\t\t\t};\n\t\t\tsetPendingAttachments((prev) => [...prev, pending]);\n\n\t\t\ttry {\n\t\t\t\tconst jwt = await config.getToken();\n\t\t\t\tif (!jwt) throw new Error(\"No auth token\");\n\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append(\"file\", file);\n\n\t\t\t\tconst res = await fetch(\n\t\t\t\t\t`${config.baseUrl}/rooms/${roomId}/attachments/upload`,\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: { Authorization: `Bearer ${jwt}` },\n\t\t\t\t\t\tbody: formData,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tif (!res.ok) throw new Error(\"Upload failed\");\n\n\t\t\t\tconst data = (await res.json()) as {\n\t\t\t\t\tsuccess: boolean;\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tid: string;\n\t\t\t\t\t\tfileName: string;\n\t\t\t\t\t\tfileSize: number;\n\t\t\t\t\t\tmimeType: string;\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\tsetPendingAttachments((prev) =>\n\t\t\t\t\tprev.map((a) =>\n\t\t\t\t\t\ta.id === tempId\n\t\t\t\t\t\t\t? { ...a, id: data.result.id, uploading: false }\n\t\t\t\t\t\t\t: a,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\tsetPendingAttachments((prev) => prev.filter((a) => a.id !== tempId));\n\t\t\t}\n\t\t}\n\n\t\tif (fileInputRef.current) fileInputRef.current.value = \"\";\n\t};\n\n\tconst removeAttachment = (id: string) => {\n\t\tsetPendingAttachments((prev) => prev.filter((a) => a.id !== id));\n\t};\n\n\tconst formatTime = (timestamp: string) => {\n\t\treturn new Date(timestamp).toLocaleTimeString([], {\n\t\t\thour: \"2-digit\",\n\t\t\tminute: \"2-digit\",\n\t\t});\n\t};\n\n\tconst formatDate = (timestamp: string) => {\n\t\tconst date = new Date(timestamp);\n\t\tconst today = new Date();\n\t\tconst yesterday = new Date(today);\n\t\tyesterday.setDate(yesterday.getDate() - 1);\n\n\t\tif (date.toDateString() === today.toDateString())\n\t\t\treturn labels.today ?? \"Today\";\n\t\tif (date.toDateString() === yesterday.toDateString())\n\t\t\treturn labels.yesterday ?? \"Yesterday\";\n\t\treturn date.toLocaleDateString([], { month: \"short\", day: \"numeric\" });\n\t};\n\n\tconst groupedMessages = messages.reduce(\n\t\t(groups, message) => {\n\t\t\tconst date = formatDate(message.createdAt);\n\t\t\tif (!groups[date]) groups[date] = [];\n\t\t\tgroups[date].push(message);\n\t\t\treturn groups;\n\t\t},\n\t\t{} as Record<string, ChatMessageData[]>,\n\t);\n\n\tconst formatFileSize = (bytes: number) => {\n\t\tif (bytes < 1024) return `${bytes} B`;\n\t\tif (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n\t\treturn `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n\t};\n\n\tconst getAttachmentUrl = (attachmentId: string) =>\n\t\t`${config.baseUrl}/rooms/${roomId}/attachments/${attachmentId}`;\n\n\tconst getRoleLabel = (role: string) => (roleLabel ? roleLabel(role) : role);\n\n\treturn (\n\t\t<div className={cn(\"flex h-full flex-col\", className)}>\n\t\t\t<div className=\"flex-shrink-0 flex items-center justify-between border-b px-4 py-3\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<MessageSquare className=\"h-4 w-4 text-primary\" aria-hidden=\"true\" />\n\t\t\t\t\t<span className=\"text-sm font-medium\">{roomLabel ?? \"Chat\"}</span>\n\t\t\t\t</div>\n\t\t\t\t<TooltipProvider>\n\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t{isConnected ? (\n\t\t\t\t\t\t\t\t\t<Wifi className=\"h-3.5 w-3.5 text-green-500\" />\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<WifiOff className=\"h-3.5 w-3.5 text-destructive\" />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t{isConnected ? \"Connected\" : (error ?? \"Reconnecting...\")}\n\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</TooltipProvider>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex flex-1 flex-col overflow-hidden\">\n\t\t\t\t<div\n\t\t\t\t\tref={scrollRef}\n\t\t\t\t\tonScroll={handleScroll}\n\t\t\t\t\tclassName=\"flex-1 overflow-y-auto p-3\"\n\t\t\t\t>\n\t\t\t\t\t{isLoadingHistory && (\n\t\t\t\t\t\t<div className=\"flex justify-center py-2\">\n\t\t\t\t\t\t\t<Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{messages.length === 0 && !isLoadingHistory ? (\n\t\t\t\t\t\t<div className=\"flex h-full flex-col items-center justify-center py-8 text-center\">\n\t\t\t\t\t\t\t<MessageSquare\n\t\t\t\t\t\t\t\tclassName=\"mb-3 h-10 w-10 text-muted-foreground/50\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t{labels.noMessages ?? \"No messages yet\"}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"space-y-4\">\n\t\t\t\t\t\t\t{Object.entries(groupedMessages).map(([date, dateMessages]) => (\n\t\t\t\t\t\t\t\t<div key={date}>\n\t\t\t\t\t\t\t\t\t<div className=\"my-3 flex items-center gap-3\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"h-px flex-1 bg-border\" />\n\t\t\t\t\t\t\t\t\t\t<span className=\"px-2 text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t{date}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<div className=\"h-px flex-1 bg-border\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"space-y-3\">\n\t\t\t\t\t\t\t\t\t\t{dateMessages.map((message) => {\n\t\t\t\t\t\t\t\t\t\t\tconst isCurrentUser = message.senderId === currentUserId;\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={message.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex gap-2\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisCurrentUser ? \"flex-row-reverse\" : \"flex-row\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full text-xs font-medium\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\troleColors[message.senderRole] ??\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\troleColors.client,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{(message.senderName ?? message.senderId)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.split(\" \")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map((n) => n[0])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.join(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.slice(0, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.toUpperCase()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex max-w-[80%] flex-col\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisCurrentUser ? \"items-end\" : \"items-start\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mb-0.5 flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs font-medium text-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.senderName ??\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmessage.senderId.slice(0, 8)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"rounded px-1 py-0.5 text-[10px] font-medium\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\troleColors[message.senderRole] ?? \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getRoleLabel(message.senderRole)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatTime(message.createdAt)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.content && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"rounded-xl px-3 py-2 text-sm\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisCurrentUser\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"rounded-br-sm bg-primary text-primary-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"rounded-bl-sm bg-muted text-foreground\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.content}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.attachments.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mt-1 flex flex-col gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{message.attachments.map((att) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tatt.mimeType.startsWith(\"image/\") ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={att.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thref={getAttachmentUrl(att.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"block max-w-[200px] overflow-hidden rounded-lg border\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={getAttachmentUrl(att.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talt={att.fileName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-auto w-full object-cover\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={att.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thref={getAttachmentUrl(att.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-2 rounded-lg border bg-muted/50 px-2 py-1.5 text-xs transition-colors hover:bg-muted\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FileIcon className=\"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"truncate font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{att.fileName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(att.fileSize)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Download className=\"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{typingUsers.length > 0 && (\n\t\t\t\t\t<div className=\"flex-shrink-0 px-3 py-1\">\n\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground italic\">\n\t\t\t\t\t\t\t{typingUsers.map((u) => u.userName ?? \"Someone\").join(\", \")}{\" \"}\n\t\t\t\t\t\t\t{typingUsers.length === 1 ? \"is\" : \"are\"} typing...\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{pendingAttachments.length > 0 && (\n\t\t\t\t\t<div className=\"flex-shrink-0 border-t px-3 py-1.5\">\n\t\t\t\t\t\t<div className=\"flex flex-wrap gap-1.5\">\n\t\t\t\t\t\t\t{pendingAttachments.map((att) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={att.id}\n\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-1.5 rounded bg-muted px-2 py-0.5 text-xs\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{att.uploading ? (\n\t\t\t\t\t\t\t\t\t\t<Loader2 className=\"h-3 w-3 animate-spin\" />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<FileIcon className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<span className=\"max-w-[100px] truncate\">{att.fileName}</span>\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => removeAttachment(att.id)}\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<X className=\"h-3 w-3\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex-shrink-0 border-t p-3\">\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={(e) => {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\thandleSendMessage();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"flex gap-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tref={fileInputRef}\n\t\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t\t\t\tonChange={handleFileSelect}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TooltipProvider>\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-9 w-9 flex-shrink-0\"\n\t\t\t\t\t\t\t\t\t\tonClick={() => fileInputRef.current?.click()}\n\t\t\t\t\t\t\t\t\t\taria-label={labels.attachFile ?? \"Attach file\"}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Paperclip className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t\t\t{labels.attachFile ?? \"Attach file\"}\n\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\tvalue={newMessage}\n\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\tsetNewMessage(e.target.value);\n\t\t\t\t\t\t\t\thandleTyping();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\t\tplaceholder={labels.placeholder ?? \"Type a message...\"}\n\t\t\t\t\t\t\tclassName=\"h-9 min-h-[36px] max-h-[100px] flex-1 resize-none rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\t\t\t\t\t\t\trows={1}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tclassName=\"h-9\"\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t!newMessage.trim() &&\n\t\t\t\t\t\t\t\tpendingAttachments.filter((a) => !a.uploading).length === 0\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taria-label={labels.send ?? \"Send\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Send className=\"h-4 w-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useEffect } from \"react\";\nimport {\n\tMessageSquare,\n\tArrowLeft,\n\tChevronRight,\n\tLoader2,\n\tX,\n} from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { useChatSidebar } from \"../../contexts/chat\";\nimport type { ChatRoomConfig } from \"../../hooks/useChatRoom\";\nimport { ChatRoomView, type ChatRoomViewLabels } from \"./ChatRoomView\";\nimport { Button } from \"../ui/button\";\nimport { ScrollArea } from \"../ui/scroll-area\";\n\nconst roomTypeLabels: Record<string, string> = {\n\tclient_agent: \"Client ↔ Agent\",\n\tdealer_agent: \"Dealer ↔ Agent\",\n};\n\nexport interface ChatSidebarLabels extends ChatRoomViewLabels {\n\ttitle?: string;\n\tnoConversations?: string;\n\trooms?: string;\n\tloading?: string;\n}\n\nexport interface ChatSidebarProps {\n\tcurrentUserId: string;\n\tconfig: ChatRoomConfig;\n\tlabels?: ChatSidebarLabels;\n\troleLabel?: (role: string) => string;\n\troomTypeLabel?: (type: string) => string;\n\t/** Top offset on mobile so the navbar stays visible (e.g. \"3.5rem\", \"4rem\"). */\n\tmobileTopOffset?: string;\n\tclassName?: string;\n}\n\nexport function ChatSidebar({\n\tcurrentUserId,\n\tconfig,\n\tlabels = {},\n\troleLabel,\n\troomTypeLabel,\n\tmobileTopOffset,\n\tclassName,\n}: ChatSidebarProps) {\n\tconst {\n\t\tisOpen,\n\t\tview,\n\t\tconversations,\n\t\tisLoading,\n\t\tactiveCaseId,\n\t\tactiveRoomId,\n\t\tclose,\n\t\tselectRoom,\n\t\tback,\n\t} = useChatSidebar();\n\n\tuseEffect(() => {\n\t\tif (!isOpen || typeof window === \"undefined\") return;\n\t\tconst mq = window.matchMedia(\"(max-width: 767px)\");\n\t\tconst apply = () => {\n\t\t\tif (mq.matches) document.body.style.overflow = \"hidden\";\n\t\t\telse document.body.style.overflow = \"\";\n\t\t};\n\t\tapply();\n\t\tmq.addEventListener(\"change\", apply);\n\t\treturn () => {\n\t\t\tmq.removeEventListener(\"change\", apply);\n\t\t\tdocument.body.style.overflow = \"\";\n\t\t};\n\t}, [isOpen]);\n\n\tif (!isOpen) return null;\n\n\tconst getRoomTypeLabel = (type: string) => {\n\t\tif (roomTypeLabel) return roomTypeLabel(type);\n\t\treturn roomTypeLabels[type] ?? type;\n\t};\n\n\tconst activeConversation = activeCaseId\n\t\t? conversations.find((c) => c.caseId === activeCaseId)\n\t\t: null;\n\n\tconst cssVars = {\n\t\t\"--sidebar-top\": mobileTopOffset ?? \"0px\",\n\t} as React.CSSProperties;\n\n\tconst panel = (\n\t\t<div\n\t\t\tstyle={cssVars}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-col bg-background\",\n\t\t\t\t\"fixed top-[var(--sidebar-top)] right-0 bottom-0 left-0 z-[100] w-full max-w-none border-0 shadow-none\",\n\t\t\t\t\"md:relative md:inset-auto md:z-auto md:h-full md:w-[360px] md:max-w-[360px] md:shrink-0 md:border-l md:shadow-none xl:w-[400px] xl:max-w-[400px]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{view === \"list\" ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"flex items-center justify-between border-b px-4 py-3\">\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<MessageSquare className=\"h-4 w-4 text-primary\" />\n\t\t\t\t\t\t\t<span className=\"text-sm font-semibold\">\n\t\t\t\t\t\t\t\t{labels.title ?? \"Chat\"}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7\"\n\t\t\t\t\t\t\tonClick={close}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ScrollArea className=\"flex-1\">\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-center py-12\">\n\t\t\t\t\t\t\t\t<Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : conversations.length === 0 ? (\n\t\t\t\t\t\t\t<div className=\"flex flex-col items-center justify-center py-12 text-center px-4\">\n\t\t\t\t\t\t\t\t<MessageSquare className=\"mb-3 h-8 w-8 text-muted-foreground/50\" />\n\t\t\t\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{labels.noConversations ?? \"No conversations yet\"}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"py-1\">\n\t\t\t\t\t\t\t\t{conversations.map((conv) => (\n\t\t\t\t\t\t\t\t\t<div key={conv.caseId} className=\"px-2\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"px-2 pt-3 pb-1\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs font-semibold text-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{conv.caseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{conv.caseStatus}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t{conv.clientName && (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{conv.clientName}\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{conv.rooms.map((room) => (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tkey={room.id}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectRoom(room.id, conv.caseId)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"flex w-full items-center justify-between rounded-md px-2 py-2 text-left transition-colors hover:bg-accent\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tactiveRoomId === room.id && \"bg-accent\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2 min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MessageSquare className=\"h-3.5 w-3.5 flex-shrink-0 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-sm truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getRoomTypeLabel(room.type)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{room.lastMessageAt && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-[10px] text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatRelativeTime(room.lastMessageAt)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ChevronRight className=\"h-3.5 w-3.5 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ScrollArea>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"flex items-center gap-2 border-b px-3 py-2\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7\"\n\t\t\t\t\t\t\tonClick={back}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowLeft className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{activeConversation && (\n\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t<p className=\"text-sm font-medium truncate\">\n\t\t\t\t\t\t\t\t\t{activeConversation.caseNumber}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t{activeConversation.clientName && (\n\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground truncate\">\n\t\t\t\t\t\t\t\t\t\t{activeConversation.clientName}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\tclassName=\"h-7 w-7\"\n\t\t\t\t\t\t\tonClick={close}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t\t{activeRoomId && (\n\t\t\t\t\t\t<ChatRoomView\n\t\t\t\t\t\t\troomId={activeRoomId}\n\t\t\t\t\t\t\tcurrentUserId={currentUserId}\n\t\t\t\t\t\t\tconfig={config}\n\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\troleLabel={roleLabel}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tstyle={cssVars}\n\t\t\t\tclassName=\"fixed top-[var(--sidebar-top)] right-0 bottom-0 left-0 z-[90] bg-black/50 md:hidden\"\n\t\t\t\taria-hidden\n\t\t\t\tonClick={close}\n\t\t\t/>\n\t\t\t{panel}\n\t\t</>\n\t);\n}\n\nfunction formatRelativeTime(dateStr: string): string {\n\tconst date = new Date(dateStr);\n\tconst now = new Date();\n\tconst diffMs = now.getTime() - date.getTime();\n\tconst diffMin = Math.floor(diffMs / 60_000);\n\n\tif (diffMin < 1) return \"now\";\n\tif (diffMin < 60) return `${diffMin}m`;\n\tconst diffH = Math.floor(diffMin / 60);\n\tif (diffH < 24) return `${diffH}h`;\n\tconst diffD = Math.floor(diffH / 24);\n\tif (diffD < 7) return `${diffD}d`;\n\treturn date.toLocaleDateString([], { month: \"short\", day: \"numeric\" });\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\n/**\n * Debounces a value — useful for ZIP lookups and autocomplete queries.\n */\nexport function useDebouncedValue<T>(value: T, delayMs: number): T {\n\tconst [debounced, setDebounced] = useState(value);\n\n\tuseEffect(() => {\n\t\tconst id = window.setTimeout(() => setDebounced(value), delayMs);\n\t\treturn () => window.clearTimeout(id);\n\t}, [value, delayMs]);\n\n\treturn debounced;\n}\n\n/**\n * Like {@link useDebouncedValue} but the returned value is `undefined` until\n * the first `delayMs` has elapsed for the current `value`, and resets to\n * `undefined` whenever `value` changes. Use for “only act after user pauses”\n * (e.g. auto-submit / auto-validate) without firing on the initial tick.\n */\nexport function useDebouncedValueStrict<T>(\n\tvalue: T,\n\tdelayMs: number,\n): T | undefined {\n\tconst [debounced, setDebounced] = useState<T | undefined>(undefined);\n\n\tuseEffect(() => {\n\t\tsetDebounced(undefined);\n\t\tconst id = window.setTimeout(() => setDebounced(value), delayMs);\n\t\treturn () => window.clearTimeout(id);\n\t}, [value, delayMs]);\n\n\treturn debounced;\n}\n","\"use client\";\n\nimport { useCallback, useId, useState, type ChangeEvent } from \"react\";\nimport valid from \"card-validator\";\nimport { CreditCard, Loader2 } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport { Button } from \"./ui/button\";\n\nexport interface CardTokenResult {\n\ttokenId: string;\n\tbrand: string;\n\tlast4: string;\n\texpMonth: number;\n\texpYear: number;\n\tmasked: string;\n\tholderName?: string | null;\n}\n\nexport interface CardInputLabels {\n\tnumber: string;\n\texpiry: string;\n\tcvc: string;\n\tholderName: string;\n\ttokenize: string;\n\ttokenized: string;\n\treplace: string;\n\tinvalidNumber: string;\n\texpiredCard: string;\n\tinvalidCvc: string;\n\ttokenizeFailed: string;\n}\n\nexport interface CardInputProps {\n\ttokenize: (input: {\n\t\tpan: string;\n\t\texpMonth: number;\n\t\texpYear: number;\n\t\tcvc: string;\n\t\tholderName?: string;\n\t}) => Promise<CardTokenResult>;\n\n\tvalue?: CardTokenResult | null;\n\tonChange: (token: CardTokenResult | null) => void;\n\n\tacceptedBrands?: string[];\n\trequireHolderName?: boolean;\n\n\tlabels: CardInputLabels;\n\tdisabled?: boolean;\n\tlargeText?: boolean;\n\tclassName?: string;\n\tonError?: (message: string) => void;\n}\n\nfunction onlyDigits(s: string, max: number): string {\n\treturn s.replace(/\\D/g, \"\").slice(0, max);\n}\n\nfunction formatPan(digits: string): string {\n\tconst cardInfo = valid.number(digits).card;\n\tconst gaps = cardInfo?.gaps ?? [4, 8, 12];\n\tconst parts: string[] = [];\n\tlet idx = 0;\n\tfor (const g of gaps) {\n\t\tparts.push(digits.slice(idx, g));\n\t\tidx = g;\n\t}\n\tparts.push(digits.slice(idx));\n\treturn parts.filter((p) => p.length > 0).join(\" \");\n}\n\nfunction parseExpiry(raw: string): { month: number; year: number } | null {\n\tconst d = onlyDigits(raw, 4);\n\tif (d.length < 4) return null;\n\tconst mm = Number.parseInt(d.slice(0, 2), 10);\n\tconst yy = Number.parseInt(d.slice(2, 4), 10);\n\tif (mm < 1 || mm > 12) return null;\n\tconst year = yy < 100 ? 2000 + yy : yy;\n\tconst exp = valid.expirationDate({ month: String(mm), year: String(year) });\n\tif (!exp.isValid) return null;\n\treturn { month: mm, year };\n}\n\nfunction normalizeBrand(detected: string | undefined): string {\n\tif (!detected) return \"\";\n\tif (detected === \"american-express\") return \"amex\";\n\treturn detected;\n}\n\nfunction brandAllowed(\n\tdetected: string | undefined,\n\taccepted?: string[],\n): boolean {\n\tif (!accepted?.length) return true;\n\tif (!detected) return true;\n\tconst n = normalizeBrand(detected);\n\treturn accepted.map((a) => a.toLowerCase()).includes(n.toLowerCase());\n}\n\nconst inputClassName =\n\t\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\nexport function CardInput({\n\ttokenize,\n\tvalue,\n\tonChange,\n\tacceptedBrands,\n\trequireHolderName = false,\n\tlabels,\n\tdisabled = false,\n\tlargeText = false,\n\tclassName,\n\tonError,\n}: CardInputProps) {\n\tconst baseId = useId();\n\tconst [panDigits, setPanDigits] = useState(\"\");\n\tconst [expiryRaw, setExpiryRaw] = useState(\"\");\n\tconst [cvc, setCvc] = useState(\"\");\n\tconst [holderName, setHolderName] = useState(\"\");\n\tconst [panFocused, setPanFocused] = useState(false);\n\tconst [submitting, setSubmitting] = useState(false);\n\n\tconst inputClass = largeText ? \"text-base py-3\" : \"\";\n\tconst labelClass = largeText ? \"text-base\" : \"text-sm\";\n\n\tconst numberValidation = valid.number(panDigits);\n\tconst rawBrand = numberValidation.card?.type;\n\tconst brand = normalizeBrand(rawBrand) || \"unknown\";\n\tconst maxPanLen = numberValidation.card?.lengths?.slice(-1)[0] ?? 19;\n\tconst minPanLenForType = numberValidation.card?.lengths?.[0];\n\tconst panPastMinimumLength =\n\t\tminPanLenForType !== undefined && panDigits.length >= minPanLenForType;\n\tconst cvcSize = rawBrand === \"american-express\" || brand === \"amex\" ? 4 : 3;\n\n\tconst expiryParsed = parseExpiry(expiryRaw);\n\tconst expiryValid =\n\t\texpiryRaw.replace(/\\D/g, \"\").length >= 4 && expiryParsed !== null\n\t\t\t? valid.expirationDate({\n\t\t\t\t\tmonth: String(expiryParsed.month),\n\t\t\t\t\tyear: String(expiryParsed.year),\n\t\t\t\t}).isValid\n\t\t\t: false;\n\n\tconst cvvValid = cvc.length >= cvcSize && valid.cvv(cvc, cvcSize).isValid;\n\n\tconst panComplete =\n\t\tnumberValidation.isValid && brandAllowed(rawBrand, acceptedBrands);\n\n\tconst holderOk = !requireHolderName || holderName.trim().length > 1;\n\n\tconst canSubmit =\n\t\tpanComplete && expiryValid && cvvValid && holderOk && !disabled && !value;\n\n\tconst handlePanChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst d = onlyDigits(e.target.value, maxPanLen);\n\t\tsetPanDigits(d);\n\t};\n\n\tconst handleExpiryChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tlet d = onlyDigits(e.target.value, 4);\n\t\tif (d.length >= 2) d = `${d.slice(0, 2)}/${d.slice(2)}`;\n\t\tsetExpiryRaw(d);\n\t};\n\n\tconst runTokenize = useCallback(async () => {\n\t\tif (!expiryParsed) return;\n\t\tsetSubmitting(true);\n\t\ttry {\n\t\t\tconst result = await tokenize({\n\t\t\t\tpan: panDigits,\n\t\t\t\texpMonth: expiryParsed.month,\n\t\t\t\texpYear: expiryParsed.year,\n\t\t\t\tcvc,\n\t\t\t\tholderName: holderName.trim() || undefined,\n\t\t\t});\n\t\t\tonChange(result);\n\t\t\tsetPanDigits(\"\");\n\t\t\tsetExpiryRaw(\"\");\n\t\t\tsetCvc(\"\");\n\t\t\tsetHolderName(\"\");\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : labels.tokenizeFailed;\n\t\t\tonError?.(msg);\n\t\t} finally {\n\t\t\tsetSubmitting(false);\n\t\t}\n\t}, [\n\t\tcvc,\n\t\texpiryParsed,\n\t\tholderName,\n\t\tlabels.tokenizeFailed,\n\t\tonChange,\n\t\tonError,\n\t\tpanDigits,\n\t\ttokenize,\n\t]);\n\n\tconst displayPan =\n\t\tpanFocused || panDigits.length <= 4\n\t\t\t? formatPan(panDigits)\n\t\t\t: `•••• •••• •••• ${panDigits.slice(-4)}`;\n\n\tif (value?.tokenId) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\"space-y-3 rounded-lg border bg-muted/30 p-4\", className)}\n\t\t\t>\n\t\t\t\t<div className=\"flex items-center gap-2 text-sm\">\n\t\t\t\t\t<CreditCard className=\"h-4 w-4 text-muted-foreground\" />\n\t\t\t\t\t<span className=\"font-medium\">{value.masked}</span>\n\t\t\t\t\t<span className=\"text-muted-foreground\">\n\t\t\t\t\t\t{String(value.expMonth).padStart(2, \"0\")}/\n\t\t\t\t\t\t{String(value.expYear).slice(-2)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t{value.holderName ? (\n\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">{value.holderName}</p>\n\t\t\t\t) : null}\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonClick={() => onChange(null)}\n\t\t\t\t>\n\t\t\t\t\t{labels.replace}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn(\"space-y-4 rounded-lg border bg-card p-4\", className)}>\n\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t<label\n\t\t\t\t\thtmlFor={`${baseId}-pan`}\n\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t>\n\t\t\t\t\t{labels.number}\n\t\t\t\t</label>\n\t\t\t\t<input\n\t\t\t\t\tid={`${baseId}-pan`}\n\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\tautoComplete=\"cc-number\"\n\t\t\t\t\tvalue={displayPan}\n\t\t\t\t\tonChange={handlePanChange}\n\t\t\t\t\tonFocus={() => setPanFocused(true)}\n\t\t\t\t\tonBlur={() => setPanFocused(false)}\n\t\t\t\t\tplaceholder=\"4242 4242 4242 4242\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t/>\n\t\t\t\t{panDigits.length > 0 &&\n\t\t\t\t\t(!numberValidation.isPotentiallyValid ||\n\t\t\t\t\t\t(panPastMinimumLength && !numberValidation.isValid)) && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.invalidNumber}</p>\n\t\t\t\t\t)}\n\t\t\t\t{panDigits.length > 0 &&\n\t\t\t\t\tnumberValidation.isPotentiallyValid &&\n\t\t\t\t\t!brandAllowed(rawBrand, acceptedBrands) && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.invalidNumber}</p>\n\t\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{requireHolderName && (\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor={`${baseId}-holder`}\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.holderName}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={`${baseId}-holder`}\n\t\t\t\t\t\tautoComplete=\"cc-name\"\n\t\t\t\t\t\tvalue={holderName}\n\t\t\t\t\t\tonChange={(e) => setHolderName(e.target.value)}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor={`${baseId}-exp`}\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.expiry}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={`${baseId}-exp`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tautoComplete=\"cc-exp\"\n\t\t\t\t\t\tvalue={expiryRaw}\n\t\t\t\t\t\tonChange={handleExpiryChange}\n\t\t\t\t\t\tplaceholder=\"MM/YY\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t\t{expiryRaw.replace(/\\D/g, \"\").length >= 4 && !expiryValid && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.expiredCard}</p>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor={`${baseId}-cvc`}\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.cvc}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid={`${baseId}-cvc`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tautoComplete=\"cc-csc\"\n\t\t\t\t\t\tvalue={cvc}\n\t\t\t\t\t\tonChange={(e) => setCvc(onlyDigits(e.target.value, cvcSize))}\n\t\t\t\t\t\tplaceholder={cvcSize === 4 ? \"0000\" : \"000\"}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\tmaxLength={cvcSize}\n\t\t\t\t\t/>\n\t\t\t\t\t{cvc.length > 0 && !cvvValid && (\n\t\t\t\t\t\t<p className=\"text-xs text-destructive\">{labels.invalidCvc}</p>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tdisabled={!canSubmit || submitting}\n\t\t\t\tonClick={() => void runTokenize()}\n\t\t\t\tclassName=\"gap-2\"\n\t\t\t>\n\t\t\t\t{submitting ? (\n\t\t\t\t\t<Loader2 className=\"h-4 w-4 animate-spin\" />\n\t\t\t\t) : (\n\t\t\t\t\t<CreditCard className=\"h-4 w-4\" />\n\t\t\t\t)}\n\t\t\t\t{labels.tokenize}\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { CheckCircle2, Loader2, Search, X } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\nimport {\n\tuseDebouncedValue,\n\tuseDebouncedValueStrict,\n} from \"../hooks/useDebouncedValue\";\nimport { Button } from \"./ui/button\";\n\nexport interface USAddressValue {\n\tstreet: string;\n\tstreet2?: string;\n\tcity: string;\n\tstate: string;\n\tzip: string;\n\tcountry: \"US\";\n}\n\nexport interface USAddressInputLabels {\n\tstreet: string;\n\tstreet2?: string;\n\tcity: string;\n\tstate: string;\n\tzip: string;\n\tsearchPlaceholder: string;\n\t/** Kept for backward compatibility; manual validate button removed */\n\tuspsValidate: string;\n\tuspsValidating: string;\n\tuspsVerified: string;\n\tuspsSuggested: string;\n\tuspsUseSuggestion: string;\n\tuspsKeepMine: string;\n\tuspsApplied: string;\n\tuspsUnavailable: string;\n\tzipLookupFailed: string;\n\tplaceLookupFailed: string;\n\tautocompleteUnavailable: string;\n\t/** @deprecated Toggle removed; kept for consumer compatibility */\n\tautocompleteTitle?: string;\n\t/** @deprecated Toggle removed; kept for consumer compatibility */\n\tautocompleteDescription?: string;\n\tstreetPlaceholder?: string;\n\tstreet2Placeholder?: string;\n\tcityPlaceholder?: string;\n\tstatePlaceholder?: string;\n\tzipPlaceholder?: string;\n\tstreet2OptionalHint?: string;\n\tcountryLabel?: string;\n}\n\nexport interface AddressAutocompleteAdapter {\n\tsearch: (\n\t\tq: string,\n\t\tsessionToken: string,\n\t\tsignal: AbortSignal,\n\t) => Promise<\n\t\tArray<{ placeId: string; mainText: string; secondaryText: string }>\n\t>;\n\tdetails: (placeId: string, signal: AbortSignal) => Promise<USAddressValue>;\n}\n\nexport interface USAddressInputProps {\n\tvalue?: USAddressValue;\n\tonChange: (value: USAddressValue) => void;\n\n\tlookupZip?: (\n\t\tzip: string,\n\t\tsignal: AbortSignal,\n\t) => Promise<{ city: string; state: string }>;\n\n\tvalidateAddress?: (\n\t\taddr: USAddressValue,\n\t\tsignal: AbortSignal,\n\t) => Promise<{\n\t\tstandardized: USAddressValue;\n\t\tdpvMatch?: \"Y\" | \"N\" | \"S\" | \"D\" | \"\";\n\t\tchanged: boolean;\n\t}>;\n\n\tautocomplete?: AddressAutocompleteAdapter;\n\n\tlabels: USAddressInputLabels;\n\tdisabled?: boolean;\n\tlargeText?: boolean;\n\tclassName?: string;\n\tonError?: (message: string) => void;\n}\n\ntype AutocompleteRow = {\n\tplaceId: string;\n\tmainText: string;\n\tsecondaryText: string;\n};\n\nfunction parseInitial(value?: USAddressValue): USAddressValue {\n\tif (!value) {\n\t\treturn {\n\t\t\tstreet: \"\",\n\t\t\tstreet2: \"\",\n\t\t\tcity: \"\",\n\t\t\tstate: \"\",\n\t\t\tzip: \"\",\n\t\t\tcountry: \"US\",\n\t\t};\n\t}\n\treturn {\n\t\tstreet: value.street ?? \"\",\n\t\tstreet2: value.street2 ?? \"\",\n\t\tcity: value.city ?? \"\",\n\t\tstate: value.state ?? \"\",\n\t\tzip: value.zip ?? \"\",\n\t\tcountry: \"US\",\n\t};\n}\n\nfunction addressSig(a: USAddressValue): string {\n\treturn JSON.stringify({\n\t\tstreet: a.street.trim(),\n\t\tstreet2: (a.street2 ?? \"\").trim(),\n\t\tcity: a.city.trim(),\n\t\tstate: a.state.trim().toUpperCase(),\n\t\tzip: a.zip.replace(/\\D/g, \"\").slice(0, 5),\n\t});\n}\n\nfunction isAddressComplete(a: USAddressValue): boolean {\n\tconst zip5 = a.zip.replace(/\\D/g, \"\").slice(0, 5);\n\tconst st = a.state.trim();\n\treturn (\n\t\ta.street.trim().length > 0 &&\n\t\ta.city.trim().length > 0 &&\n\t\t/^[A-Za-z]{2}$/.test(st) &&\n\t\tzip5.length === 5\n\t);\n}\n\nconst inputClassName =\n\t\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\nexport function USAddressInput({\n\tvalue,\n\tonChange,\n\tlookupZip,\n\tvalidateAddress,\n\tautocomplete,\n\tlabels,\n\tdisabled = false,\n\tlargeText = false,\n\tclassName,\n\tonError,\n}: USAddressInputProps) {\n\tconst [searchQuery, setSearchQuery] = useState(\"\");\n\tconst [showSuggestions, setShowSuggestions] = useState(false);\n\tconst [suggestions, setSuggestions] = useState<AutocompleteRow[]>([]);\n\tconst [address, setAddress] = useState<USAddressValue>(() =>\n\t\tparseInitial(value),\n\t);\n\tconst [sessionToken] = useState(() =>\n\t\ttypeof crypto !== \"undefined\" && crypto.randomUUID\n\t\t\t? crypto.randomUUID()\n\t\t\t: `${Date.now()}-${Math.random()}`,\n\t);\n\n\tconst [loadingAutocomplete, setLoadingAutocomplete] = useState(false);\n\tconst [loadingZip, setLoadingZip] = useState(false);\n\tconst [loadingValidate, setLoadingValidate] = useState(false);\n\n\tconst [uspsSuggestion, setUspsSuggestion] = useState<USAddressValue | null>(\n\t\tnull,\n\t);\n\tconst [uspsVerifiedNoChange, setUspsVerifiedNoChange] = useState(false);\n\n\tconst searchRef = useRef<HTMLDivElement>(null);\n\tconst suggestionCache = useRef<Map<string, AutocompleteRow[]>>(new Map());\n\tconst warnedRef = useRef({\n\t\tautocomplete: false,\n\t\tzip: false,\n\t\tvalidate: false,\n\t});\n\tconst lastZipLookup = useRef<string>(\"\");\n\n\tconst addressRef = useRef(address);\n\taddressRef.current = address;\n\n\tconst lastValidatedSigRef = useRef<string>(\"\");\n\n\tconst debouncedSearch = useDebouncedValue(searchQuery, 400);\n\tconst zipDigits = address.zip.replace(/\\D/g, \"\").slice(0, 5);\n\tconst debouncedZip = useDebouncedValue(zipDigits, 400);\n\tconst debouncedAddressForValidate = useDebouncedValueStrict(address, 1200);\n\n\tconst inputClass = largeText ? \"text-base py-3\" : \"\";\n\tconst labelClass = largeText ? \"text-base\" : \"text-sm\";\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (\n\t\t\t\tsearchRef.current &&\n\t\t\t\t!searchRef.current.contains(event.target as Node)\n\t\t\t) {\n\t\t\t\tsetShowSuggestions(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => document.removeEventListener(\"mousedown\", handleClickOutside);\n\t}, []);\n\n\tconst valueSyncKey = value == null ? \"\" : `o:${JSON.stringify(value)}`;\n\n\tuseEffect(() => {\n\t\tsetAddress(parseInitial(value));\n\t}, [valueSyncKey]);\n\n\tconst handleFieldChange = (\n\t\tfield: keyof USAddressValue,\n\t\tfieldValue: string,\n\t) => {\n\t\tsetAddress((prev) => {\n\t\t\tconst next =\n\t\t\t\tfield === \"country\"\n\t\t\t\t\t? { ...prev, country: \"US\" as const }\n\t\t\t\t\t: { ...prev, [field]: fieldValue };\n\t\t\tonChange(next);\n\t\t\treturn next;\n\t\t});\n\t};\n\n\t// Clear USPS UI when the live address diverges from the last validated snapshot\n\tuseEffect(() => {\n\t\tconst sig = addressSig(addressRef.current);\n\t\tif (sig !== lastValidatedSigRef.current) {\n\t\t\tsetUspsVerifiedNoChange(false);\n\t\t\tsetUspsSuggestion(null);\n\t\t}\n\t}, [address]);\n\n\tconst allowAutocomplete = Boolean(autocomplete);\n\tconst allowUspsValidation = Boolean(validateAddress);\n\tconst allowZipLookup = Boolean(lookupZip);\n\n\t// Google Places autocomplete\n\tuseEffect(() => {\n\t\tif (!allowAutocomplete || !autocomplete) return;\n\t\tconst q = debouncedSearch.trim();\n\t\tif (q.length < 3) {\n\t\t\tsetSuggestions([]);\n\t\t\tsetShowSuggestions(false);\n\t\t\tsetLoadingAutocomplete(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst cacheKey = q.toLowerCase();\n\t\tconst cached = suggestionCache.current.get(cacheKey);\n\t\tif (cached) {\n\t\t\tsetSuggestions(cached);\n\t\t\tsetShowSuggestions(true);\n\t\t\tsetLoadingAutocomplete(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst ctrl = new AbortController();\n\t\tsetLoadingAutocomplete(true);\n\n\t\tautocomplete\n\t\t\t.search(q, sessionToken, ctrl.signal)\n\t\t\t.then((list) => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tsuggestionCache.current.set(cacheKey, list);\n\t\t\t\tsetSuggestions(list);\n\t\t\t\tsetShowSuggestions(list.length > 0);\n\t\t\t})\n\t\t\t.catch((e: unknown) => {\n\t\t\t\tif ((e as Error).name === \"AbortError\") return;\n\t\t\t\tif (!warnedRef.current.autocomplete) {\n\t\t\t\t\tonError?.(labels.autocompleteUnavailable);\n\t\t\t\t\twarnedRef.current.autocomplete = true;\n\t\t\t\t}\n\t\t\t\tsetSuggestions([]);\n\t\t\t\tsetShowSuggestions(false);\n\t\t\t})\n\t\t\t.finally(() => setLoadingAutocomplete(false));\n\n\t\treturn () => ctrl.abort();\n\t}, [\n\t\tdebouncedSearch,\n\t\tallowAutocomplete,\n\t\tautocomplete,\n\t\tsessionToken,\n\t\tlabels.autocompleteUnavailable,\n\t\tonError,\n\t]);\n\n\t// ZIP → city/state\n\tuseEffect(() => {\n\t\tif (!allowZipLookup || !lookupZip) return;\n\t\tif (debouncedZip.length !== 5) return;\n\t\tif (debouncedZip === lastZipLookup.current) return;\n\n\t\tconst ctrl = new AbortController();\n\t\tsetLoadingZip(true);\n\n\t\tlookupZip(debouncedZip, ctrl.signal)\n\t\t\t.then((data) => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tlastZipLookup.current = debouncedZip;\n\t\t\t\tsetAddress((prev) => {\n\t\t\t\t\tconst cityEmpty = !prev.city.trim();\n\t\t\t\t\tconst stateEmpty = !prev.state.trim();\n\t\t\t\t\tconst next = { ...prev };\n\t\t\t\t\tif (cityEmpty && data.city) next.city = data.city;\n\t\t\t\t\tif (stateEmpty && data.state) next.state = data.state;\n\t\t\t\t\tnext.country = \"US\";\n\t\t\t\t\tonChange(next);\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tif (!warnedRef.current.zip) {\n\t\t\t\t\tonError?.(labels.zipLookupFailed);\n\t\t\t\t\twarnedRef.current.zip = true;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => setLoadingZip(false));\n\n\t\treturn () => ctrl.abort();\n\t}, [\n\t\tdebouncedZip,\n\t\tallowZipLookup,\n\t\tlookupZip,\n\t\tonChange,\n\t\tlabels.zipLookupFailed,\n\t\tonError,\n\t]);\n\n\t// Auto USPS validate (debounced; no immediate call on mount)\n\tuseEffect(() => {\n\t\tif (!allowUspsValidation || !validateAddress || disabled) return;\n\t\tif (debouncedAddressForValidate === undefined) return;\n\t\tconst addr = debouncedAddressForValidate;\n\t\tif (!isAddressComplete(addr)) return;\n\n\t\tconst requestSig = addressSig(addr);\n\t\tif (requestSig === lastValidatedSigRef.current) return;\n\n\t\tconst ctrl = new AbortController();\n\t\tconst timeoutId = window.setTimeout(() => ctrl.abort(), 8000);\n\t\tsetLoadingValidate(true);\n\t\tsetUspsVerifiedNoChange(false);\n\t\tsetUspsSuggestion(null);\n\n\t\tvalidateAddress(addr, ctrl.signal)\n\t\t\t.then((result) => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tif (addressSig(addressRef.current) !== requestSig) return;\n\n\t\t\t\tlastValidatedSigRef.current = requestSig;\n\t\t\t\tconst std = result.standardized;\n\t\t\t\tif (result.changed) {\n\t\t\t\t\tsetUspsSuggestion(std);\n\t\t\t\t\tsetUspsVerifiedNoChange(false);\n\t\t\t\t} else {\n\t\t\t\t\tsetUspsSuggestion(null);\n\t\t\t\t\tsetUspsVerifiedNoChange(true);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tif (ctrl.signal.aborted) return;\n\t\t\t\tif (!warnedRef.current.validate) {\n\t\t\t\t\tonError?.(labels.uspsUnavailable);\n\t\t\t\t\twarnedRef.current.validate = true;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\twindow.clearTimeout(timeoutId);\n\t\t\t\tsetLoadingValidate(false);\n\t\t\t});\n\n\t\treturn () => {\n\t\t\twindow.clearTimeout(timeoutId);\n\t\t\tctrl.abort();\n\t\t};\n\t}, [\n\t\tdebouncedAddressForValidate,\n\t\tallowUspsValidation,\n\t\tvalidateAddress,\n\t\tdisabled,\n\t\tlabels.uspsUnavailable,\n\t\tonError,\n\t]);\n\n\tconst handleSelectSuggestion = async (row: AutocompleteRow) => {\n\t\tif (!autocomplete) return;\n\t\ttry {\n\t\t\tconst next = await autocomplete.details(\n\t\t\t\trow.placeId,\n\t\t\t\tAbortSignal.timeout(8000),\n\t\t\t);\n\t\t\tconst normalized: USAddressValue = {\n\t\t\t\t...next,\n\t\t\t\tcountry: \"US\",\n\t\t\t};\n\t\t\tsetAddress(normalized);\n\t\t\tonChange(normalized);\n\t\t\tsetShowSuggestions(false);\n\t\t\tsetSearchQuery(\"\");\n\t\t\tsetUspsSuggestion(null);\n\t\t\tlastValidatedSigRef.current = \"\";\n\t\t\tsetUspsVerifiedNoChange(false);\n\t\t} catch {\n\t\t\tonError?.(labels.placeLookupFailed);\n\t\t}\n\t};\n\n\tconst applyUspsSuggestion = () => {\n\t\tif (!uspsSuggestion) return;\n\t\tsetAddress(uspsSuggestion);\n\t\tonChange(uspsSuggestion);\n\t\tsetUspsSuggestion(null);\n\t\tlastValidatedSigRef.current = addressSig(uspsSuggestion);\n\t\tsetUspsVerifiedNoChange(true);\n\t};\n\n\tconst dismissUspsSuggestion = () => {\n\t\tsetUspsSuggestion(null);\n\t\tlastValidatedSigRef.current = addressSig(addressRef.current);\n\t\tsetUspsVerifiedNoChange(true);\n\t};\n\n\treturn (\n\t\t<div className={cn(\"space-y-4\", className)}>\n\t\t\t{allowAutocomplete && autocomplete && (\n\t\t\t\t<div ref={searchRef} className=\"relative\">\n\t\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t\t<Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\tonChange={(e) => setSearchQuery(e.target.value)}\n\t\t\t\t\t\t\tplaceholder={labels.searchPlaceholder}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, \"pl-9 pr-9\", inputClass)}\n\t\t\t\t\t\t\taria-label={labels.searchPlaceholder}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{loadingAutocomplete && (\n\t\t\t\t\t\t\t<Loader2 className=\"absolute right-10 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{searchQuery ? (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => setSearchQuery(\"\")}\n\t\t\t\t\t\t\t\tclassName=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t\t{showSuggestions && suggestions.length > 0 && (\n\t\t\t\t\t\t<div className=\"absolute z-10 mt-1 max-h-48 w-full overflow-y-auto rounded-lg border bg-background shadow-lg\">\n\t\t\t\t\t\t\t{suggestions.map((suggestion) => (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={suggestion.placeId}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => void handleSelectSuggestion(suggestion)}\n\t\t\t\t\t\t\t\t\tclassName=\"w-full border-b px-4 py-3 text-left transition-colors last:border-b-0 hover:bg-muted\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<p className=\"text-sm font-medium\">{suggestion.mainText}</p>\n\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{suggestion.secondaryText}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<div className=\"grid gap-4\">\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor=\"blocks-usaddress-street\"\n\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.street}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"blocks-usaddress-street\"\n\t\t\t\t\t\tvalue={address.street}\n\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"street\", e.target.value)}\n\t\t\t\t\t\tplaceholder={labels.streetPlaceholder ?? \"\"}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t<label\n\t\t\t\t\t\thtmlFor=\"blocks-usaddress-street2\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`${labelClass} text-muted-foreground`,\n\t\t\t\t\t\t\t\"leading-none\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{labels.street2 ?? \"Address line 2\"}{\" \"}\n\t\t\t\t\t\t{labels.street2OptionalHint ? (\n\t\t\t\t\t\t\t<span className=\"text-xs\">({labels.street2OptionalHint})</span>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"blocks-usaddress-street2\"\n\t\t\t\t\t\tvalue={address.street2 || \"\"}\n\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"street2\", e.target.value)}\n\t\t\t\t\t\tplaceholder={labels.street2Placeholder ?? \"\"}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-city\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.city}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"blocks-usaddress-city\"\n\t\t\t\t\t\t\tvalue={address.city}\n\t\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"city\", e.target.value)}\n\t\t\t\t\t\t\tplaceholder={labels.cityPlaceholder ?? \"\"}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-state\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.state}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"blocks-usaddress-state\"\n\t\t\t\t\t\t\tvalue={address.state}\n\t\t\t\t\t\t\tonChange={(e) => handleFieldChange(\"state\", e.target.value)}\n\t\t\t\t\t\t\tplaceholder={labels.statePlaceholder ?? \"\"}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-zip\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.zip}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tid=\"blocks-usaddress-zip\"\n\t\t\t\t\t\t\t\tvalue={address.zip}\n\t\t\t\t\t\t\t\tonChange={(e) =>\n\t\t\t\t\t\t\t\t\thandleFieldChange(\n\t\t\t\t\t\t\t\t\t\t\"zip\",\n\t\t\t\t\t\t\t\t\t\te.target.value.replace(/\\D/g, \"\").slice(0, 10),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplaceholder={labels.zipPlaceholder ?? \"\"}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{loadingZip && (\n\t\t\t\t\t\t\t\t<Loader2 className=\"absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-muted-foreground\" />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-1.5\">\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\thtmlFor=\"blocks-usaddress-country\"\n\t\t\t\t\t\t\tclassName={cn(\"font-medium leading-none\", labelClass)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labels.countryLabel ?? \"Country\"}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"blocks-usaddress-country\"\n\t\t\t\t\t\t\tvalue=\"United States\"\n\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tclassName={cn(inputClassName, inputClass, \"bg-muted/50\")}\n\t\t\t\t\t\t\taria-readonly=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{allowUspsValidation && (\n\t\t\t\t<>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"flex min-h-7 items-center gap-2 text-xs text-muted-foreground\"\n\t\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{loadingValidate ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Loader2 className=\"h-3.5 w-3.5 shrink-0 animate-spin\" />\n\t\t\t\t\t\t\t\t<span>{labels.uspsValidating}</span>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : uspsVerifiedNoChange && !uspsSuggestion ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<CheckCircle2 className=\"h-3.5 w-3.5 shrink-0 text-emerald-600 dark:text-emerald-400\" />\n\t\t\t\t\t\t\t\t<span>{labels.uspsVerified}</span>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"select-none opacity-0\" aria-hidden>\n\t\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{uspsSuggestion ? (\n\t\t\t\t\t\t<div className=\"space-y-2 rounded-lg border border-amber-200 bg-amber-50 p-3 dark:border-amber-900 dark:bg-amber-950/30\">\n\t\t\t\t\t\t\t<p className=\"text-sm font-medium text-amber-900 dark:text-amber-100\">\n\t\t\t\t\t\t\t\t{labels.uspsSuggested}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t{[\n\t\t\t\t\t\t\t\t\tuspsSuggestion.street,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.street2,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.city,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.state,\n\t\t\t\t\t\t\t\t\tuspsSuggestion.zip,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t.join(\", \")}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t\t<Button type=\"button\" size=\"sm\" onClick={applyUspsSuggestion}>\n\t\t\t\t\t\t\t\t\t{labels.uspsUseSuggestion}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\tonClick={dismissUspsSuggestion}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{labels.uspsKeepMine}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","// AUTO-GENERATED from repo-root mx.svg (Simplemaps Mexico map) via\n// blocks/scripts/extract-mx-states.mjs. Do not hand-edit; regenerate instead.\n\nexport type MexicoStateId =\n\t| \"MXAGU\"\n\t| \"MXBCN\"\n\t| \"MXBCS\"\n\t| \"MXCAM\"\n\t| \"MXCHP\"\n\t| \"MXCHH\"\n\t| \"MXCMX\"\n\t| \"MXCOA\"\n\t| \"MXCOL\"\n\t| \"MXDUR\"\n\t| \"MXGUA\"\n\t| \"MXGRO\"\n\t| \"MXHID\"\n\t| \"MXJAL\"\n\t| \"MXMEX\"\n\t| \"MXMIC\"\n\t| \"MXMOR\"\n\t| \"MXNAY\"\n\t| \"MXNLE\"\n\t| \"MXOAX\"\n\t| \"MXPUE\"\n\t| \"MXQUE\"\n\t| \"MXROO\"\n\t| \"MXSLP\"\n\t| \"MXSIN\"\n\t| \"MXSON\"\n\t| \"MXTAB\"\n\t| \"MXTAM\"\n\t| \"MXTLA\"\n\t| \"MXVER\"\n\t| \"MXYUC\"\n\t| \"MXZAC\";\n\nexport interface MexicoState {\n\tid: MexicoStateId;\n\tname: string;\n}\n\nexport const MEXICO_STATES: MexicoState[] = [\n\t{ id: \"MXAGU\", name: \"Aguascalientes\" },\n\t{ id: \"MXBCN\", name: \"Baja California\" },\n\t{ id: \"MXBCS\", name: \"Baja California Sur\" },\n\t{ id: \"MXCAM\", name: \"Campeche\" },\n\t{ id: \"MXCHP\", name: \"Chiapas\" },\n\t{ id: \"MXCHH\", name: \"Chihuahua\" },\n\t{ id: \"MXCMX\", name: \"Ciudad de México\" },\n\t{ id: \"MXCOA\", name: \"Coahuila\" },\n\t{ id: \"MXCOL\", name: \"Colima\" },\n\t{ id: \"MXDUR\", name: \"Durango\" },\n\t{ id: \"MXGUA\", name: \"Guanajuato\" },\n\t{ id: \"MXGRO\", name: \"Guerrero\" },\n\t{ id: \"MXHID\", name: \"Hidalgo\" },\n\t{ id: \"MXJAL\", name: \"Jalisco\" },\n\t{ id: \"MXMEX\", name: \"México\" },\n\t{ id: \"MXMIC\", name: \"Michoacán\" },\n\t{ id: \"MXMOR\", name: \"Morelos\" },\n\t{ id: \"MXNAY\", name: \"Nayarit\" },\n\t{ id: \"MXNLE\", name: \"Nuevo León\" },\n\t{ id: \"MXOAX\", name: \"Oaxaca\" },\n\t{ id: \"MXPUE\", name: \"Puebla\" },\n\t{ id: \"MXQUE\", name: \"Querétaro\" },\n\t{ id: \"MXROO\", name: \"Quintana Roo\" },\n\t{ id: \"MXSLP\", name: \"San Luis Potosí\" },\n\t{ id: \"MXSIN\", name: \"Sinaloa\" },\n\t{ id: \"MXSON\", name: \"Sonora\" },\n\t{ id: \"MXTAB\", name: \"Tabasco\" },\n\t{ id: \"MXTAM\", name: \"Tamaulipas\" },\n\t{ id: \"MXTLA\", name: \"Tlaxcala\" },\n\t{ id: \"MXVER\", name: \"Veracruz\" },\n\t{ id: \"MXYUC\", name: \"Yucatán\" },\n\t{ id: \"MXZAC\", name: \"Zacatecas\" },\n];\n","// AUTO-GENERATED from repo-root mx.svg (Simplemaps Mexico map) via\n// blocks/scripts/extract-mx-states.mjs. Do not hand-edit; regenerate instead.\n\nimport type { MexicoStateId } from \"./mexicoStates\";\n\nexport const MEXICO_STATE_PATHS: Record<MexicoStateId, string> = {\n\tMXAGU:\n\t\t\"M519.8 375.1l-0.1 0.1-0.1 0.1 0 0.1-0.1 0.1-0.5 0.9-0.5 0.6-0.7 0.5-0.9 0.3-0.6 0.3-0.4 0.5-0.5 0.5-0.8 0.3-0.7 0.4-0.2 0.7-0.1 0.8-0.2 0.9-0.3 0.6-0.6 0.3-0.6 0.2-0.7 0.3-0.7 0.5-0.5 0.6-0.6 0.5-0.7 0.4-0.8 0.2-0.8 0.1-0.8-0.1-0.8-0.1-0.9-0.2-0.9-0.1-0.9-0.2-0.9-0.1-1.3-0.4-1.1-0.6-1.1-0.8-1.1-0.6-0.9-0.2-1 0.2-1 0.4-0.9 0.3-1-0.6-0.8-0.6-0.7-0.7-0.2-1.2 0-0.7 0-0.6 0.2-0.6 0.2-0.7 0.3-0.5 0.4-0.6 0.4-0.5 0.4-0.6 0.4-0.7 0.4-0.8 0.5-0.8 0.5-0.6 0.6-0.6 0.6-0.7 0.5-0.7 0.4-0.7 0.2-0.8-0.4-0.6-0.4-0.4-0.1-0.5 0.7-1 0.9-0.4 1.1-0.1 1.1 0 0.4 0.1 0.6 0 0.5-0.1 0.4-0.2 0.2-0.3 0.1-0.4 0.1-0.4 0.3-0.3 0.1-0.1 0.1 0 0.1 0 0.3 0 0.3 0 0.3 0.1 0.2-0.1 0.4-0.3 0.2-0.3 0.2-0.3 0.4-0.2 0.5 0.1 0.5-0.4 0.3-0.6 0.3-0.6 0.5-0.6 0.5 0.3 0.3 0.7 0.3 0.7 0.3 0.6 0.4 0.7 0.5 0.5 0.6-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0 0.3 0.3 0.2 0.5 0.1 0.4 0.4 0.4 0.5-0.1 0.3 0.3 0.3 0.3 0.4 0.4 0.6 0.2 0.6 0.1 0.6 0 0.5 0.2 0.3 0.8 0 1.1-0.1 1.1 0 1 0.3 0.7 0.7 0.5 0.8 0.3 0.7 0.4 0.5 0.5 0.4 0.5 0.4 0.6 0.4 0.5z\",\n\tMXBCN:\n\t\t\"M147.3 35.9l-0.3 0.3-0.6 0.1-1.5-0.1-0.6 0.3-0.6 0.6-0.4 0.9-0.2 0.7-0.1 0.6 0 0.6 0 0.6-0.3 0.8-0.5 0.6-0.6 0.4-0.5 0.7-0.1 0.5 0.2 0.2 0.8 1 0.6 1 0.5 1 0.3 1.4-0.1 0.7-0.3 0.5-0.3 0.5 0.1 0.5 0.1 0.2 0.2 0.1 0.3 0.2 0.2 0.2 0.2 0.4 0.2 0.4 0.1 0.4 0 0.5-0.1 0.9 0 0.8 0 0.8 0.1 0.7-0.7-0.3-0.3-0.1-0.4 0-0.3-0.1-0.4-0.3-0.2-0.1-0.1-0.2 0-0.4-0.1-0.4-0.3-0.2-0.1 0.2 0 0.4 0.1 0.4 0.4 0.8 0.1 0.1 0.3 0.2 0.2 0.1 0.8 0.2 0.5 0.2 0.4 0.4 0.4 0.3 0.2 0.5 0.7 0.1 0.6 0.6 0.4 0.6 0.2 0.5 0.4 0.2 0.2 0.4 0.3 2.3 0.3 0.7 0.4 0.7 0.4 0.8-0.3 0.6-1 1.2-0.5 1.2-0.3 1.3 0 4.7-0.7 2 0.1 1.9-0.3 3-0.1 0.7 0.1 1.4 0.6 1 0.7 0.8 0.7 0.5 0 0.3-0.5 0.5 0 0.7 0.3 0.6 0.5 0.4 1.9 0.9 0.5 0.3 0.1 0.2 0 0.2 0.2 0.4 0 1.1 0 0.3 0.1 0.6-0.1 0.4 0.2 0.3 0.2 0.5-0.1 1.6 0.1 0.4 0.2 0.6-0.1 0.2-0.4 0.9 0.3 0.8 0.1 0.5-0.2 1.1 0.4 1.1 0.7 1 0.3 0.7 0.1 0.4 0 0.3 0 0.3 0.2 0.4 0.3 0.6 0 0.5-0.2 0.5 0 0.8 0.2 0.5-0.1 1-0.2 0.7 0.1 0.3-0.2 1.7-0.2 0.6-0.1 0.3 0.1 0.3 0.3 0.5-0.1 0.4-0.2 0.8-0.1 0.5-0.3 0.4 0.1 0.6 0.2 0.2 0.3 0.7 0.4 0.3 0 0.4 0.1 0.5 0.6 0.3 0.2 0.7 0.5 0.5 0 0.7 0.6 1.2 0.4 0.8 0.4 0.8 1.5 0.7 0.2 0.9 0.4 0.3 0.9 0.1 0.3 0.5 0.2 0.4-0.1 0.8 0.3 0.8 0.2 0.2-0.2 0-0.2 0.2 0 0.2 0.3 0.1 0.1 0.2 0 0.3 0.1 0.4 0.3 0.3 0.3 0.1 0.2 0 0.3 0.1 0.2 0.3 0 0.3 0.2 0.2 0.5 0.1 0.5 0 0.2 0 0.3-0.2 0-0.2 0.1-0.1-0.2 0-0.1-0.2 0.1-0.1 0.2 0 0-0.1 0.1-0.1 0.1 0 0.1 0 0.1 0 0.1 0.1 0.1 0.1 0.1 0 0.1 0.2 0.1-0.1 0.3 0 0.2 0.1 0.2 0.3 0.2 0 0 0.1 0.4 0.1 0.1 0.2 0.1 0.4 0.1 0.1 0.2 0.1 0.1 0.2 0.1 0 0.1 0.2 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0.2 0 0.1 0.2-0.1 0.1 0 0.2 0.1 0 0.2 0.3 0.2 0 0.2 0.1 0 0.3 0.3 0.1 0.2 0.1 0.1 0.4 0.2 0.2 0.2 0.2 0 0.6 0.4 0.1 0.4 0 0.2 0.2 0.2 0.1 0.3 0.4 0.1 0.1 0 0.1 0.2 0.1 0.1 0 0.1 0.2 0.1 0.3 0 0.3 0 0.4 0.3 0.2 0.4 0.3 0.3 0.2 0.2 0.1 0.1 0.3 0.5 0.4 0.1 0.2 0.3 0.3 0.4 0.4 0.4 0.5 0.3 0.4 0.5 0.5 0.1 0.3 0.1 0.2 0.2 0 0.5 0.2 0.2 0.3 0 0.3 0.2 0.2 0.2 0.3 0.1 0.4 0.2 2.6 3 1 0.8 0.3 0.3 0.1 0.6 0.2 0.2 0.1 0.2-0.5 0.4-0.2 0.4-0.3 0.3 0.1 0.4 0.2 0.2 0.3 0.1-0.1 0.5 0.2 0.3 0.1 0 0.1 0.1 0.1 0.3 0.3 0 0.1 0 0 0.3 0.2 0.4 0.3 0.4 0.3 0.1 0.3 0.3 0.2 0.8 0.5 0.9 0.3 0.4-0.1 0.4-0.3 0.1-0.2 0.3-0.1 0.1-0.1 0.4 0 0.4 0.4 0.2 0.1 0.6 0 0.6-0.3 0.1 0 0.2 0.3 0.5 0.2 0.4 0.1 0.5 0.3 0.2 0 0.3 0.6 0.1 0.7-0.2 0.1-0.1-0.1-0.2 0.2-0.4-0.3-0.2-0.1-0.3 0.2-0.1-0.1-0.2 0.1-0.2 0.2-0.1 0.3 0.1 0.4 0.1 0.2-0.3 0.2-0.3 0.2 0.4 0 0.5 0.4 0.4 0.2-0.2 0-0.2 0.5-0.2 0.2 0.1-0.1 0.2-0.1 0.1-0.1 0.5 0.7 0.2 0 0.1-0.3 0.1 0 0.2 0.2 0.3 0.1 0.2 0.3 0.2-0.2 0.1-0.1 0.4 0 0.4-0.1 0.3 0.2 0.4 0.4 0.2-0.1 0.6 0.6 0 0.7-0.1 0.2-0.2 0.3-0.3 0.2-0.3 0.5-0.2 0.2-0.2 0.8 0.1 0.4 0.4 0.1 0.2 0.1 0.5 0.3 0.1 0.1 0.2-0.1 0.4 0.3 0.3 0 0.4-0.1 0.5 0.4 0.9 0.1 0.1 0.2 0.7 0.4 1.1 0.7 0.6 0.1 0.4-0.1 0.8 0.3 0.8 0.1 0.5 0.2 0.6-0.1 0.6 0.3 0.7 0.6 0.4 0.1 0.2 0.5 0.3 0.6 0.1 0.1 0.3 1 0.3 0.9 0 1.2-0.3 0.8-0.3 0.5 0.4-0.1 0.2 0.3 0.2 0 0.2-0.1 0.2 0 0.1 0.4 0.1 0.1-0.1 0.2-0.2 0.3 0 0 0.4 0 0.2-0.2 0.2-0.2 0.4 0.2 0.2 0.1 0.5-0.1 0.5-0.5 1.2-0.1 0.8 0.1 0.2-0.1 0.6 0.3 0.3 0.3 0.4 0.4 0.3 0 0.3 1 1 0.1 0.3 0.3 0 0.1 0.2-0.2 0.2-0.1 0.2-0.1 0.5-0.1 0.2-0.1 0.4-0.1 1 0.3 1.1 0.1 0.1 0.2 0.1 0 0.4-0.2 0.3-0.2 0.4 0 0.4 0.1 0.5 0.4 0.5 0.5 0 0.2 0.1-5 0-5.1 0-5.2 0-5.2 0-5.1-0.1-5.2 0-5.2 0.1-1.3 0 0.2-0.3 0.4-0.6 0.1-0.3-0.3-0.1-0.3-0.1-0.3-0.4-0.5-0.1-0.4 0.1 0-0.5 0-0.9-0.2-0.4-0.2-0.3 0.1-0.2 0.1-0.3 0.5-0.7 0.3-0.6 0.3-0.6 0.3-0.4-0.1-0.2-0.1-0.4-0.1-0.5-0.3-0.2-0.3 0-0.3 0.2-0.3-0.1-0.2-0.3-0.2-0.1 0.2-0.5 0.2-0.5 0.3-0.7 0.5-1.2 0.6-2 0.4-0.9 0.1-0.8-0.2-0.6-0.4-0.1-0.2-0.3 0.1-0.5 0-0.5-0.3-0.2-0.1-0.3-0.1-0.3-0.3-0.3-0.4-0.3-0.5-0.1-0.6 0.1-0.3-0.2 0-0.5 0.1-0.6 0-0.8-0.3-0.7-0.3-0.4-0.2-0.1-0.7 0-0.8 0.1-0.3 0.2-0.7-0.2-0.1-0.5 0.1 0 0-0.3-0.1-0.4-0.7-0.3-0.4-0.7-1-0.2 0-0.5 0-0.5-0.4-0.5 0-0.6-0.3-0.6-0.6 0.3-0.4-1.1 0.1-0.7-0.5-0.6-0.5 0-0.1-0.5-0.5-0.5-0.5-0.7-0.7-0.1-0.4 0.1-0.2 0.2-0.2 0-0.4-0.3-0.2-0.6-0.2-0.6-0.1-0.3-0.4 0-0.5 0.5-0.4-1.1 0.1-1.1-0.2-0.5-0.3-0.5-0.1-0.6-0.3-0.5-0.8-0.3-0.8-0.3-0.5 0.6-0.5-0.7-0.1-0.8-0.2-0.4-0.2-0.7-0.1-0.4-0.2-0.2-1-0.1-1.2-1.2-0.7-0.9-0.8-0.9-1.3-1.5-1.3-1.5-3.8-1.4-2.4-0.3-1.3-2-1.5-1.3-2.5-0.9-1.5-1.3-0.8-0.8-0.7-0.2-0.7 0.5-0.5-0.5-0.5-0.3-0.4-0.6-0.7-0.5-0.6-0.8-0.8-0.1-2.2-2 0.1-0.7 0.2-0.8 0.1-1-0.2-0.7-0.1-0.5-0.1-1-0.6-0.7-0.3-0.5-0.4-0.4-0.5-0.2-1.3-0.1-0.1-0.4 0.6-2.3 0.2-1.8-0.2-1.1-0.1-0.2-0.3-0.4 0-0.3 0-0.4 0.2-1.1-0.1-1.4-0.2-1.5-0.5-1.1-0.4-1-0.8-0.7-0.9-0.6-1-0.5-1.2 0 0.8-0.7 0.3-0.4 0.1-0.5-0.2-0.5-0.4-0.5-0.6-0.4-0.4-0.2 0.2 0.5 0.3 0.4 0.2 0.4 0.1 0.5-0.3 0.3-0.4 0.1-0.1-0.3-0.4-0.3-0.2 0.2-0.2 0.3 0 0.3 0.3 0.1 0.3 0.4 0.1 0.7 0.3 1-0.7 0-0.2-1.1-0.5-1.6-0.6-1.3 0.6-4.9-0.2-3.5-0.5-1.7-0.1-0.7-0.3-0.3-1.1-0.2-1.3-1.3-0.7-0.1-0.7-1-0.5-0.8-0.2-0.4-0.7-1-0.5-0.3-1.2 0.4-0.8-0.1-0.1-1.1 0.4-1.3 0.2-2.1 0.3-2-0.9-2.3-3.3-4-1.2-2.3-0.3-0.5-0.2-0.1-0.5-0.6-0.2-0.2-0.4-0.2-0.6-0.5-0.4-0.1-0.3-0.2-0.1-0.2 0-0.3-0.2-0.3-1.1-0.9-0.2-0.3-0.6-0.5-0.2-0.5 0.1-0.4-0.1 0 0.4-0.1 0.7 0.1-0.6-0.8 0.1-0.5 0.1-0.5 0.3-0.9-0.3-0.7-0.3-0.6-0.2-0.2-0.5-0.2-0.7-0.1-0.7-0.9-0.3-0.5 1.2 0.3 0.9 0.6 0.5 0.1 0.5-0.4 0.4-0.6 0.3-0.6 0.2-1 0-0.7 0-0.7-0.2-0.5-1.1-0.2-0.6-0.2-0.5-0.7-0.7-0.4-0.5-0.1-0.5-0.2 0-0.8-0.1-1.1-0.3-0.4-1 0-1.1-0.3-0.7-0.9-0.3-0.7-0.1-1.2-0.2-2.1-0.5-1.6-0.5-1.4-0.3-0.5-0.5-0.4-0.5-0.3-1.2-0.3-0.5-0.4-1.4-3.2-0.4-1.2-0.5-1.1-0.4-0.6 0-0.6-0.1-0.6 0-0.8 0-0.3 0-0.3 2.3-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.1 2.1-0.2 2.2-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.1 2.1-0.2 2.2-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.1 2.2-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 2.1-0.2 1.2-0.1 0 0.1-0.2 0.8-0.3 0.6-0.3 0.6-0.2 0.2-0.7 0.6-0.1 0.3-0.5 0.9 0.3 0.7-0.1 0.7-0.4 1.4-0.3 0.4z m-10.7 138.5l0.3 0.8 0.3 0.2-0.1 0.4 0.2 0.4 0.2 0.8-0.3 0.9 0 0.7 0.4 0.6 0.1 0.7-0.1 0.7 0.1 0.3-0.2 0.4-0.4 0.1 0 0.3-0.3 0.3 0.1 0.4-0.1 0.3 0.1 0.5-0.1 0.5 0.2 0.5-0.1 0.2 0 0.2-0.2-0.1-0.1-0.1-0.4-0.1-0.3 0.2-0.3 0.1-0.2-0.3-0.3 0.1-0.2-0.2-0.3-1-0.5-0.6-0.7-0.2-0.5 0.3-0.4 0-0.3 0.5-0.3-0.4 0.2-1.1 0.5-0.3 1.7-2.1 1-1.4-0.5-1-0.2-1.1 0.2-1 0.2-1 0.4-0.4 0.6-0.2 0.7 0.5-0.1 0.7z m66-11l1 0.2 1.6 1.1 0.4 0.5 0.2 0.2 0.1 0.2 0.5 0.2 0.1 0.3 0.2 0.1-0.3 0.3-0.3 0.2-0.2-0.2-0.1-0.1-0.2 0-0.2-0.8-0.4-0.3-0.5-0.2-0.4-0.5-0.7-0.1 0-0.2-0.1-0.2-0.2-0.2-0.2-0.3-0.3-0.2z m8.1-1.6l0.3-0.1 0.2-0.1 0.7 0.1 0.4-0.2 0.3 0.2 0 0.4 0.1 0.2-0.1 0.3 0 0.5-0.2 0.5-0.5 0.1-0.7-0.2-0.3 0.2 0.1-0.3-0.3-0.9 0-0.7z m-15.1-11.1l0.4 0.1 0.2 0.2 0.4 0.1-0.4 0.9 0.1 0.4 0 0.9-0.3 0-0.3-0.5-0.3-0.1-0.4-0.5-0.9-0.3-0.2-0.6-0.5-0.3-0.4-0.1-0.4-0.4-0.2-0.4-0.2-0.2-0.2-0.5-0.3-0.4-0.5-0.6-0.3-0.3-0.3-0.1-0.2-0.3-0.4-0.2-0.6-0.3-0.2-0.5-0.7-0.4-0.6-0.4-0.7-1.1 0.1-0.3-0.2-0.4-0.4-0.5-0.5 0.1-0.5 0-0.4-0.3-0.2-0.4 0-0.6-0.2-0.3-0.4-0.3-0.2-0.5-0.2-0.1-0.1-0.4-0.5-0.4 0-0.3-0.3-0.4-0.5-0.3-0.2-0.8 0.2-0.8 0.4-0.7 0.3-1-0.2-0.5 0-0.5 0.3-0.2 0 0.2 0.3 0.2 0.4-0.2 0.3-0.2 0-0.2 0.4 0 0 0.4 0.3 0.1 0.7 0.1 0.4 0.4 0.9 0.9 0.3 0.9 0.7 0.2 0.1 0.3 0.2 0.3 0 0.2 0.4 0.5 0.3 0.6-0.1 0.3 0.4 0.3-0.3 0.3-0.3 0.4-0.1 0.6 0.1 0.3 0 0.8 0.8 0.5 1.1 0.2 0.2 0.3 0.4 0 0.2-0.3 0.4 0 0.2 0.1 0.5-0.1 0.5 0 0.5 0.1 0.6-0.1 0.4 0.4-0.3 0.6 0.1 0.7 0.2 0.4-0.1 0.6 0 0.4 0.2 0.2-0.1 0.4-0.1 0.7 0 0.9 0.1 0.3 0.3 0.6 0.1 0.3 0 0.3 0.2 0.5 0.3 0.1z m-27.6 34.8l-0.2-0.5-0.3 0.1-0.2-0.1 0.1-0.3 0.4-0.2 0.4 0.2 0.4 0.5 0.2 0.3-0.8 0z m-3.1 0l0.6-0.7 0.9-1.3 0.6-0.7 0.4-0.1 0.2 0.8-0.1 0.6-0.5 0.4-0.3 0.3-0.1 0.3-0.1 0.2 0.1 0.2-1.7 0z m-116.1-35.6l0.7 0.9 0.2 1.5-0.2 0.7 0.2 1.2-0.1 1.4-0.8 1-0.5 0-0.4 0.2-0.2 0 0.1 0.3-0.3-0.2 0.1-0.4 0.3-0.2-0.3-0.7-0.1-0.5 0.1-0.6-0.2-0.6-0.4-0.5 0.3-0.5-0.3-0.9-0.2-0.5-0.4-0.4-0.6-0.5 0-0.5-0.2-0.5-0.1-0.5 0.1-0.6 0.2-0.6 0.6-0.4 0.8-0.3 0.3-0.5 0.7-0.1 0.5 0.3-0.5 0.5-0.3 0.4-0.1 0.5 0.2 0.7 0.4 0.6 0.4 0.3z m76.3 25.3l0.2 0.2 0.2-0.1 0.4 0 0.1 0.2-0.4 0-0.1 0.2-0.3 0.1-0.3-0.2-0.1-0.2 0.1-0.2 0.2 0z m59.6-25.5l0.2 0 0.2 0.1 0 0.1-0.1 0.2 0 0.1 0.1 0.1 0 0.2 0 0.3 0.1 0.2 0 0.2 0.1 0 0 0.2 0.2 0.1 0 0.1-0.3 0-0.2-0.1 0.1-0.1-0.1-0.2-0.2-0.1 0.1-0.2 0.1-0.1-0.2-0.1 0-0.2 0-0.2-0.2-0.1 0-0.2-0.2-0.2 0.3-0.1z m-25.8-29.4l0.4 0 0.1 0.6 0.1 0.3-0.3 0-0.4-0.2 0.1-0.4 0-0.3z m-48.7-17l0.1 0.1 0.2 0.2 0 0.2-0.3 0-0.3-0.1 0-0.2 0.3-0.2z m-32.7-64.7l0.1 0 0.1 0.2 0.1 0.3 0.1 0.3 0 0.3-0.1 0-0.1-0.4-0.1-0.3-0.1-0.1 0-0.3z\",\n\tMXBCS:\n\t\t\"M290.4 306.2l0.4 0.5 0.4 0.9 0 0.3 0.3 0.5-0.1 0.6-0.4-0.1-0.5-0.1-0.9-0.1-0.3-0.2 0.1-0.2-0.4-0.6-0.4-0.7-0.4-1.1-0.3-1 0.1-0.3 0.1-0.3-0.6-1.2 0.1-1.1 0-0.5 0.2 0 0.2 0.4 0.1 0.4 0.3 0.4 0.2 0.3 0.2 0.3 0.3 0.7 0.3 0.7 0.4 0.4 0.4 0.9 0.2 0.2z m-49.5-4.8l0.6 0.2 0.9 0.2 1.2 0.9 0.1 0.2-2-0.9-0.8-0.1-1.1-0.1-1.1 0.3-0.8 0.1-0.2-0.2 0.2-0.3 0.2-0.2 0.3 0.1 0.5 0 0.9-0.2 0.5 0.1 0.6-0.1z m-5.5-2.2l0.8 1.6 0.5 0.5 0.3 0 0.1 0.2-0.2 0.5 0.2 0.3-0.2 0.6-0.3 0.4 0.1 0.5-0.9-1.2-0.6-0.5-1.4-1.1-1.1-0.9-0.7-0.6-1.1-0.6-0.2-0.2-0.3-0.2-0.4-0.4-1-0.5-0.8-0.3-0.1-0.2 0.5-0.4 0.5 0.3 0.3 0 1.6-0.1 0.7 0.1 0.5-0.1 0.4 0.3 0.4-0.1-0.1 0.4 0.2 0.5 0.3 0.2 0.1 0.4 0.6 0.1 0.6 0 0.7 0.5z m41-2.2l0.2 0.4 0.3 0 0.1 0.5 0.2 0.4 0.2 0.2-0.1 0.4-0.4 0-0.2 0.3 0.2 0.5-0.3 0.2-0.2 0.2-0.1 0.6-0.6-0.1 0-0.3-0.1-0.2 0.1-0.3-0.2-0.2-0.2-0.1-0.2 0.3-0.1-0.3-0.1-0.3 0.5-0.2 0-0.1-0.2-0.1-0.1-0.1-0.2-0.2-0.2-0.1-0.2-0.3-0.1-0.5 0.2-0.2-0.3-0.2 0-0.3 0.4-0.1 0.2-0.2-0.3 0-0.3-0.2 0.1-0.3-0.3 0.1-0.1-0.3 0.1-0.2-0.2-0.1-0.1-0.3 0.4-0.3 0.1-0.3 0.3 0.1 0.2 0.4 0.1 0.2 0.4 0.3 0 0.4-0.1 0.4 0.6 0.1 0.6 0.4z m-11.1-18.3l0.1-0.2 0-0.1 0.1 0.1 0.2 0.3 0.3 0.8 0.5 0.5 0.8 0.1 0.8 0.2 0.6 0.2 0.1 0.3 0.1 0.1 0.3 0.2 0 0.3 0.2 0.3 0.1 0.6-0.2 0.7 0.3 0.7 0.2 0.3 0.2 0.4 0.4 0.7 0.2 0.3-0.2 0.1-0.6 0.2-0.3-0.1-0.2 0.1-0.2 0.3-0.2-0.1 0.2-0.2 0.1-0.2 0-0.3-0.3-0.2-0.3-0.2-0.4-0.2 0-0.2-0.3-0.1-0.3 0-0.3 0 0-0.2 0.1-0.2-0.2-0.4-0.3-0.2-0.2-0.5 0-0.2-0.1-0.3-0.2-0.3-0.1-0.3 0-0.4-0.2-0.3-0.4 0-0.2-0.3-0.3 0-0.1-0.3 0-0.5 0.1-0.2 0-0.4 0.1-0.7z m-40 15.1l0.2 0.4 0.5 0.7 0.2 0 0 0.3 0.2 0.2 0.2 0.4 0 0.5-0.3-0.1-0.6-0.3-0.4-0.2 0.1-0.2-0.1-0.6-0.3-0.5-0.4-0.4-0.3-0.2-0.2 0-0.4-0.8-0.4-0.1-0.1-0.2 0.2-0.2 0.1-0.4 0.2 0 0.2 0.1 0.2-0.1 0.2-0.3 0.1-0.5-0.1-0.5-0.2-0.6-0.3-0.3-0.3-0.4-0.3-0.3-0.4-0.3-0.5-0.3-0.2-0.1-0.3-0.1-0.3 0-0.3 0-0.1 0.1-0.2 0.1-0.1 0.2 0 0.2 0.1 0.6-0.1 0.1-0.2-0.3-0.1-0.5-1-0.6 0.1-0.3 0-0.2 0.1-0.1 0.3 0 0.4-0.9 0.5-1.4 1.5-4.2 0.4-1.5 0.8-2.9 0.5-2.3 0.1-0.9 0.1-0.3 0.4 0 0.1 1.4-0.2 0.6-0.4 1.3-0.4 0.7-0.4 2.1-0.3 0.9 0.3 0.5 0.1 0.3-0.1 0.4 0.2 0.3 0 0.3 0 0.4-0.2 0.2-0.3-0.2-0.2 0.5 0 0.2 0 1-0.2 0.2 0.1 0.8 0.2 0.3 0.2 0.3-0.2 0.2-0.3-0.1-0.3 0.1-0.1 0.1 0 0.2-0.2 0.3 0.1 0.2 0.1 0.5 0.1 0.2 0.3 0.2 0.2 0.2 0.1 0.2 0.2 0.1 0.2 0-0.1 0.1-0.1 0.1 0.3 0.4 0.1 0.5 0.7 0.7 0.2 0.3 0 0.4 0 0.2 0.1 0.1 0.1 0 0.3 0.6-0.3 0.5-0.2 0.2-0.2 0.2-0.1 0.3 0.1 0.2 0.1 0.3 0.9 0.5z m38.4-30.9l-0.6-0.4-0.5-1.2 0-1 0.4-0.7 0.2-0.4 0.3-0.1 0.1 0.5 0.2 0.1-0.1 0.6 0.2 0.9 0.2 1.5-0.4 0.2z m-9-12.9l0.3 0 0 0.4 0.1 0.1 0 0.3 0 0.2-0.2-0.2-0.2 0-0.2-0.3-0.2-0.1-0.2-0.4-0.3 0-0.2 0.2 0 0.2-0.1 0.3-0.3 0.4-0.3 0.3-0.3 0.7-0.6 0.6-0.2 0.3 0.1 0.2-0.2 0.5 0.1 0.5-0.2 0.3-0.3 0-0.2 0.4 0.1 0.6 0 0.5-0.1 0.2-0.2-0.4-0.2 0-0.3-0.2 0-0.3-0.1-0.4 0-0.2 0.4-0.7 0-0.4 0.3-1-0.1-0.4 0.3-0.4 0.1-0.4 0.3-0.5 0.4-0.3 0.1-0.3 0-0.5 0.1-0.6-0.3-0.4 0-0.3 0.4 0 0.8-0.3 0-0.3 0.2-0.2 0.2 0.3 0.5 0.2 0.7-0.2 0.1-0.3 0.6-0.1-0.5 0.6-0.3 0.8 0.1 1z m-85.6-64.5l1.3 0 5.2-0.1 5.2 0 5.1 0.1 5.2 0 5.2 0 5.1 0 5 0 0.1 0.1-0.1 0.4 0.2 0.5-0.1 0.2-0.2 0.8 0.1 0.6 0 0.4 0 0.2 0 0.2-0.1 0.1-0.1 0.4-0.1 0.5 0.4 0.6 0.5 0.3 0.1 0.2 0.4 0.3 0-0.2 0.1 0 0 0.3 0.2 0.4-0.1 0.2 0.1 0.5 0.2 0.2-0.1 0.3 0.2 0.4 0.3 0.4 0.4 0.5 0.2 0.4 0.2 0 0.2 0.3 0.3-0.1 0.1 0 0.2 0.2 0.1 0.3 0.3 0.2 0.1 0.3 0.6 0.4 0 0.4 0.9 0.4 0.7 0 0.4 0.2 0.4 0.2 0.5 0.2 0.4 0.1 0.1 0.2 0.4 0.3 0.3 0.2 1.1 0.3 0.4 0.3 0.9 0.5 0.5 0.6 0 0.4 0.6 0.6 0.3 0.7 0.1 1.1 0 0.5 0.3 0.7 0.3 0.6-0.1 0.4 0.1 0.4 0.3 0.4 0.5 0.3 0.2 0.5 0.2 0.4 0.4 0.1 0.2 0.4 0.2 0.8 0.3 0.2 0.3 0.7 0.4 0.4-0.2 0.6-0.2 0.2-0.1 0.2 0 0.3 0.5 0.3 0.4 0.4 0.3 0.4 0.1 0.3 0.3 0.1 0.6 0.1 0.6 0.6 0.7 0.3 0.6-0.1 0.1 0.2 0.3 0.2 1.3 0.2 0.5 0.7 0.9 0 0.3 0 0 0.3 0.1 0.2 0.1 0.3-0.4 0.2-0.4-0.1-0.4 0.3-0.5 0.7-0.3 0.7 0 0.5-0.1 0.6 0.4 0.9 0.6 0.4 0.2 0.1 0.1 0.3 0.4 0.5 0.2 0.6 0.3 0.2 0.7 0.3 0.2 0.6 1.1 1 0.2 0.7 0.1 0.5 0 0.2-0.4 0.2-0.1 0.4 0 0.3-0.4-0.2-0.4 0.9 0.1 0.6 0.5 0.1 0.6 0.6 0.3 0.5 0.1 0.5 0.1 0.2 0.1 0.4 0.5 0.1 0.4 0.4 0.4 0.5 0.4 1.3 0.6 0.6 0.8 0.5 0.6-0.4 1.1-1-0.1-0.4-0.4-0.3-0.6-0.8-0.8-0.8-0.4-0.2-0.3-0.5-0.8-0.5-0.4-0.8-0.2 0 0-0.2 0-0.3-0.1-0.3 0-0.8-0.1-0.4 0-0.5-0.2-0.5 0.1-0.4-0.2-0.2-0.1-0.2 0-0.3-0.1-0.2-0.2-0.2 0-0.4-0.2-0.2 0-0.2 0.5-0.1 0.3-0.2 0.2-0.2 0.7 0.4 0 0.3 0.7 0.4 0.7 0.6 0.5 0.7 0.2 0.5 1.2 0.9 0.3-0.1 0.2 0.4 0.1 0.3 0.3 0.2 0 0.2 0.6 0.2 0.1 0.2 0.4 0.3 0 0.1 0.7 0.3 0.4 0.2 0 0.2 0.3 0.1-0.1 0.8-0.1 0.7 0.1 0.8-0.1 1.6 0.1 0.6 0.4 0.3 0.7 0.2 0.6 0.3 0.6 0.1 0.3-0.1 0-0.1 0.4-0.1 0 0.3 0.1 0.1 0.4 0.3-0.2 0.1-0.2 0.2 0 0.7-0.4 0.6 0.1 0.8-0.1 0.7 0.2 0.6 0.7 0.5 0.3 0.1 0.1 0.2 0.1 0.1-0.3 0.2 0 0.2 0.2 0.3 0.5 0.2 0.4 0.5 0.2 0.5 0 0.4 0.1 0.8-0.3-0.1-0.1 0.9 0.2 0.3 0.1 0.2 0.3 0.7-0.1 0.4 0.1 0.6 0.3 0.2 0.2 0.4 0 0.6 0.2 0.6 0.3 0.5 0.5 0.4 0 0.4 0.2 0.4-0.1 0.3-0.2 0.1 0 0.4-0.4 0.3-0.1 0.3 0.2 0.5 0 0.8-0.3 0.4-0.4 0.4 0.2 0.6 0.2 0.6 0.3 0.6 0.1 0.2 0 0.5-0.1 0.4 0.1 0.2 0.1 0.9 0.2 0.2 0.2-0.1 0.2 0.1 0.3 0.3 0 0.2 0.2 0.1-0.1 0.2-0.2 0-0.1-0.2 0-0.1-0.3-0.1 0.1 0.1 0.1 0.5 0 0.4 0.1 0.3 0.1 0.2 0.4 0.3 0.3 0.4 0.4 0.1 0.3 0.2 0.2 0.3 0.1 0.3 0.2 0.1 0.1-0.2 0.2 0 0.4 0.7-0.1 0.3 0.1 0.3 0.1 0.5 0.2 0.5 0 0.4 0.1 0.3 0.2 0.5 0.2 0.4 0.3 0.2 0.3 0.7 0.4 0.1 0.1 0.2 0 0.2 0.2 0.5 0.3 0.1 0.1 0.3 0.3 0.1 0.3 0.1 0.1-0.2 0.1 0.1 0.6 0.1 0.2-0.3 0.1 0.1-0.2 0.3 0 0.1 0.3 0.1 0.1-0.2 0.1 0 0.2 0.1 0.2 0.1 0.1-0.2 0.1 0 0.1 0.1 0.3 0.1 0.2 0.3-0.2 0.2 0.2 0.5 0 0.2-0.2 0.1 0 0.4-0.2 0.1 0.1 0.3 0.1 0.3 0.2 0.5 0.3 0.2 0.1 0.8 0.1 0.3 0.4 0.7 0.1 0.6 0.2 0.2 0.5 0.2-0.1 0.2 0.3 0.2 0.1 0.3-0.1 0 0 0.3 0.2 0.1 0.2 0.1-0.1 0.1 0 0.1 0.1 0.2-0.1 0.2-0.2 0-0.1 0.3 0 0.2 0.3 0.3-0.1 0.4 0.2 0.6 0.3 0.2 0.2 0.5 0.2 0.2 0.1 0.2-0.2 0.1 0 0.6 0.2 0.5 0.4 0.4 0.3 0.1 0 0.1 0.2 0.2 0 0.1 0 0.1 0.2 0.2 0 0.2 0.1 0.2 0.1 0.4 0.4 0.2 0 0.2 0.5 0.1 0.2 0.2-0.1 0.3 0.1 0.2 0.2 0.3 0.4 0 0.2 0.1 0-0.2 0.1 0 0.2 0.1 0.1 0.2 0.6 0.4 0 0.2 0.1 0.1-0.1 0.2 0.2 0.1 0.1 0.2 0 0.5 0 0.3 0.4 0.3 0.2 0.4 0.3 0.3 0 0.2 0.2 0.2 0.1-0.1 0.2 0.2 0 0.1-0.2 0 0 0.1 0.1 0.1 0 0.1 0.4 0.4 0 0.1 0.2 0.1-0.1 0.1-0.1 0.2 0.2 0.2 0 0.1 0 0.3 0.1 0.2 0.1 0.2 0 0.2 0.1 0.2 0.1 0.2 0.1 0.3 0 0.1 0.1 0.1 0.1 0-0.1 0.3 0 0.2 0 0.1-0.1 0.4 0 0.4-0.4 0.5-0.2 0.6-0.1 0.3 0 0.3-0.1 0.3-0.5 0.1-0.4 0.5-0.1 0.6-0.1 0.8-0.2 0.5 0 0.6 0 0.5 0.1 0.5 0.1 0.3-0.2 0.2 0.1 0.3 0.2 0.7 0 0.2 0.2 0.4 1 1.2 0 0.4 0 0.3-0.2 0.3 0 0.3 0.1 0.3-0.1 0.3 0.2 0.3 0.1 0.2 0 0.3 0.1 0.2-0.1 0.4 0.8 1 0 0.2 0.5 0.3-0.1 0.2 0.4 0.7 0.3 0.5 0.2 0.5 0.3 0.2 0.5 0.2 0.1 0.5 0.4 0.2 0.1 0.2 0.6 0.3 0.8 0.2 0.8 0.2 0.9 0.2 1.5 0.3 1.5-0.1 0.5 0 0.2 0.1-0.1 0.2-0.3 0.2-0.4 0.2-0.5 0.2-0.3-0.2-0.7-0.4-0.8-0.2-0.1 0.2 0.3 0.2-0.1 0.5 0.2 0.3 0.1 0.3-0.1 0.2 0.1 0.4 0.7 0 0.7-0.2 0.2 0.1 0.3-0.1 0.1-0.3 0-0.3 0-0.2 0.1-0.1 0.6-0.5 0.5-0.6 0.2-1.2-0.4-0.1 0.1-0.3 0-0.3-0.2-0.1-0.2-0.1 0.1-0.1 0-0.3-0.1-0.3-0.1 0-0.1 0.3-0.2 0 0-0.6 0.1-0.2-0.1-0.1 0.1-0.3-0.1-0.2 0-0.3 0-0.2 0.4 0 0.1-0.1-0.3-0.1 0-0.2 0.2-0.2 0.4 0 0.2-0.2 0.2-0.3 0.6 0 0.7 0.2 0.1-0.1 0.4 0.2 0.1 0.2-0.2 0.1 0 0.4 0.2 0.2 0.3 0.1 0.2 0.3 0.4 0.1 0.2 0.2 0.2 0.4 0 0.3 0.2 0.3 0.1 0.2 0.8 0.2 0.3 0.3 0.3 0.3 0.2 0.1 0.5 0.3 0.4 0 0.1 0.1 0.2 0.1 0.1 0.3 0.3 0.1 0.1 0.2 0.4 0.1 0.4 0.3 0.4 0.3 0.3 0.3 0.1 0.7 0.2 0.2-0.1 0.5 0.2 0.1 0.1 1.4 0.1 0.6 0.3 0.3 0.6 0 0.7 0.3 1.1-0.3 1.1-0.4 0.5-0.3 0.2-0.1 0.1 0.2 0 0.3 0.1 0.3 0.3 0.2 0.2 0.3 0 0.3-0.1 0.1-0.1 0.2-0.4 0.4-0.1 0-0.1 0.1 0 0.3-0.1 0.5-0.1 0.3 0.1 0.4 0.2 0.6 0.1 0.3 0.3 0.1 0.2 0.1 0.1 0.2 0.2 0.2 0.1 0.1 0.2 0.2 0.4 0.1 0.9 1.1 0.6 0.5 0.3 0.6 0.4 0.3-0.4 0.7 0 0.9 0.2 0.7 0.3 1.1-0.1 0.8 0.5 0.5 0.6 0.3 0.5 0.2 0.1 0.2 0.5 0.1 0.3 0.1 0.7 0.3 0.2 0.3 0.3 0.1 0.8 0.2 0.5 0.1 0.2 0.2 0 0.4 0.5 0.2 0.6 0.1 0.3 0.1 0 0.3-0.3 0.2 0 0.5 0.3 0.6 0.7 1 0.5 0.5 0.1 0.6-0.2 0.5 0 0.4 0.4 0.1 0 0.5-0.1 0.3-0.3 0.2 0.1 0.3-0.1 0.6 0.1 0.3 0 0.7 0 0.5-0.2 0.4-0.2 0.1 0 0.3 0.1 0.7-0.1 0.3-0.1 0.3-0.3 0.5 0 0.4-0.3 0.2-0.3 0.5-0.6 0.9-0.3 0.2-0.3 0.6-0.3 0.1-0.2 0.4-0.9 0.4-0.4 0.4-0.8 0.1-0.6 0.3-1.3 0.4-0.6 0.5-0.6 0.3-0.1 0.5 0.2 0.2-0.6 0.7-0.8 0.1-1.3 0.9 0 0.6-0.6 0.5-0.3 0.3-0.4 0.3-0.3 0.1-0.7 0-0.5 0.2 0 0.3 0.2 0.2-1.1 0.1-0.6 0-0.3-0.2-0.4-0.1-0.6-0.4-0.8-0.7-0.4-0.5-0.5-0.6-0.6-0.9-0.1-0.3-0.2-0.7-0.2-0.2-0.3-0.9 0-0.9-1.3-4.7-0.2-2-0.2-0.9-0.3-0.3-0.2-0.3-0.7-1.2-0.2-0.5-0.4-0.4-0.1-0.6-1-1.7-0.3-0.3-0.8-1.6-1.4-1.3-1.4-0.8-3.4-1.6-1.6-0.7-2-1.7-3-3.3-1.8-2.2-1.1-0.9-0.5-0.4-0.3-0.1-0.1-0.4-0.3-0.3-1.1-1.2-0.6-0.5-0.9-0.8-0.7-0.5-0.2-0.4-0.7-0.6-1.2-0.8-0.7-0.6-0.9-0.5-1-0.5-1.5-1.2-1.6-0.8-4.7-2.5-0.1-0.2 0.3 0.1 2.3 1.2-0.5-0.5-1-0.7-1-0.4-0.4-0.1-0.5-0.4-0.3-0.6-1-1-0.6-0.3-0.6-0.1-0.9-0.7-0.7-1-0.3-1.1-0.6-1.1-0.1-0.3 0.3 0.1 0.3 0-0.4-0.4-0.6-0.5-0.3-0.3-0.5 0 0 0.5 0.3 0.4-0.4 0.7-0.8-0.1-0.3-0.2-0.3 0.1-0.5 0.1-0.6-0.1-0.5-0.1 0.6 0.6 0.6 0.4-0.5 0-0.3-0.1-0.3 0.1-0.3 0.3-0.2-0.4-0.1-0.5 0.1-0.4 0.1-0.8-0.6-1.6-0.4-1-0.5-0.5-0.5-0.6-0.6-0.8-0.7-0.5-0.3-0.5 0.1-0.1 0.6 0.5 0.1-0.1 0-0.3-0.6-0.3-0.6-0.6-0.4-0.7-0.2-0.4-0.1-0.6-0.2-0.6-0.3-0.6-0.4-0.3 0.3 0.9 0.1 0.9 0.2 0.7 0.6 0.6-0.1 0-0.5 0.4 0.2 0.1 0.3 0.4 0.1 0.1-0.2 0.1-0.2 0-0.2-0.2-0.2-0.3-0.5 0.6-0.3-0.5-0.6-1.6 0.3-0.2 0.1-0.3 0-0.3-0.1-0.3-0.5 0.3-0.1 0.4 0.2 1 0 0.7 0.1 0.3-0.5 0.1-0.5-0.3-0.2-0.4-0.2-0.4-0.1-0.6 0-1 0-0.3-0.2-0.2-0.2-0.1-0.2 0-0.2-0.6 0.3-0.1 0.5-0.5 0.2-0.2-0.2-0.7-0.1-0.2-0.1-0.1 0-0.3 0.1-0.1 0.4-0.3 0.1-0.2 0-0.2-0.3-0.4-0.1-0.4 0-0.3-0.2-0.2-0.2 0.2-0.3 0.4 0 0.6-0.2 0.3-0.3 0.4 0.2 0.6 0.3 0.6-0.4 0.6-0.3 0.5-0.3 0-0.1-0.6 0.1-0.4 0.1-0.8-0.3-0.2 0-0.2-0.1-0.3 0.2-0.2 0.4 0 0.1-0.3-0.2-0.3 0.2-0.4 0.3-0.6 0.2-0.9-0.1-0.2 0.2-0.5 0-0.4-0.3 0 0-0.2-0.3-0.2 0.1-0.4 0.1-0.4-0.1-0.5 0-0.5 0.2-0.9 0.4-0.9 0.5-0.8 0.5-0.6 0.1-0.5 0.1-1 0-1.7 0.1-0.9-0.4-0.1 0-0.5 0.2-0.5 0.2-0.3 0.1-0.5 0-0.3-0.4-0.1 0.2-0.4 0.8-0.3 0.5-0.2-0.3-0.1-0.8 0-0.3 0.2-0.1-0.3 0.2-0.2 0.4-0.3 0-0.6-0.1-1.1-0.2-0.7 0.2-0.7 0.1-1-0.3-1.9-0.1-0.9-0.2-0.3-0.2 0.2 0 0.5 0.1 3.4-0.2 1.4-0.1 1.2-0.2 0.2 0-0.3 0-0.8 0.1-1.8 0-4.2-0.2-1.8-0.7-1-0.2-1.3-0.6-1.1-0.6-2-0.5-1.3-0.6-0.7-0.6-0.8-0.7-0.4-0.8 0.1-0.5-0.6-0.1-1-0.2-1-0.7-1.5-1-1.3-0.7-0.7-1.1-0.6-0.3-0.1-0.4 0.2-0.2 0.3-0.2 0.3-0.5 0.1-1.7-1.2 0-0.1 0.1-0.5-0.2-0.3-0.4 0.3-0.5 0.1-0.4-0.3-0.2-0.6-0.1-0.1-0.5 0-1.2 0-0.4-0.1-1.1-1.5-0.8-0.6-0.9-0.5-0.5-0.4-0.8-0.6-0.9-0.9-1.1-1-1.5-0.8-0.1-0.3 0-0.1 0-0.1 0-0.2-0.1-0.1-0.2 0-0.6 0-0.4-0.2-0.4-0.4-0.8-0.7-0.5-0.5 0.1-0.4-0.1-0.5 0.2-0.4-0.1-0.3-0.2-0.2-0.3-0.6-0.3-0.5-0.5-0.6-0.3-0.2-0.4-0.5-0.3-0.5-0.1-0.4 0-0.3 0-0.4 0.5-0.3 0.2-0.1-0.3-0.2-0.2 0-0.4 0.2-0.4 0.1-0.1 0.4-0.1 0.4-0.4 0.1-0.3 0.1 0.1 0.3-0.1 0.2-0.3 0.2-0.3-0.2-0.3-0.4-0.1-0.3-0.1-0.5-0.2-0.2 0.2-0.1 0.6-0.1 0.2-0.2 0.4-0.3 0.3-0.2 0.3-0.4 0.3-0.4 0.4-0.2 0.2-0.4 0.2-0.6 0.2-0.3 0-1.6-0.2-0.6-0.4-0.5-0.5-0.1-0.5 0.2-0.4 0.7-0.1 2-0.2 1-0.8 0.7-0.4-0.2-0.3 0.4-0.2 0.4 0 0.3 0 0.3 0 0.2 0 0.4 0 0.5-0.2 0.2-0.4 0.1-1.2-0.9-1.1-0.6-1-0.2-0.6-0.1-0.8 0-0.6 0-1 0.4-0.4 0.8-0.2 0.5-0.5 0.4 0 0.7-0.4 0-0.5 0.4-0.7-0.1-1.1-0.5-0.8-1.4-1.7-1-0.3-0.5-0.1-0.4-0.5-1.1-1-1.9-0.8-0.9-1-0.6-0.7-0.5-0.9-0.3-1.5-0.2-0.4 0.2 0 0.4-0.3 0.1-0.3 0.2-0.3-0.2-1.3-1.3-0.4-1.1-0.6-0.8-0.8-0.9-1-0.6-1-0.5-0.7-0.1-0.8-0.4-1.1 0.2-0.5 0-0.1 0.7-0.7-0.6-0.9-0.7-1.3-0.5-0.7 0.5-0.4-0.3 0.2-0.4-0.1-0.3 0-0.4-0.4-0.2-0.5-0.2-0.4 0.1-0.3-0.6 0-1.4 0.1-1.4-0.2-1.3-0.5-1.4-0.6-0.6-0.3-0.3-0.7-0.4-0.5-0.1-0.5-0.9-1-0.3-1.4-0.6-1-0.5-0.5 0-0.4-0.8-0.1-0.2-0.4-0.5-0.1-0.2-0.4-0.9-0.7-0.6-0.7-0.3-0.2 0.1-0.2 0.3-0.3-0.1-0.2-0.3-0.4-0.5 0.1-0.1 0.4 0.3 0.3 0 0.1-0.7-0.1-0.3-0.1-0.4-0.3-0.2-0.3-0.2-0.4 0-0.1 0.2-0.2 0.3-0.1 0.5-0.3-0.2-0.6-0.2-0.2-0.8-0.3-0.5-0.7-0.3-0.4 0-0.4 0.3-0.3-0.4-0.3-0.4-0.3-0.6 0-0.6-0.4-0.6-0.1-0.4-0.1-0.4-0.1-0.1-0.7-0.9 0.8-0.3 0.4 0.1 0.5 0.4 0.3 0.5 1.3 0.1 1.3-0.3 1.1 0.2 0.4 0 0.6 0.2 0.3 0.4 0.6 0.1 0.9-0.2 0.6 0.1 0.7 0.2 0.5 0 0.1 0.3 0.3 0.2 0.5 0.1 0.6 0 0.9 0.2 1 0.2 1-0.2 1.1-0.2 0.9 0.4 1.1-0.5 0.8-0.3 0.8-0.6 0.4-0.3 0.3-0.3 0.5-0.5 0.6-0.4 0.3-0.2 0.2-0.1 0.3 0 0.3 0 0.2 0.2 0 0.2 0.1 0.3 0.1 0.6-0.1 0.5-0.2 0.5-0.2 0.4-0.1 0.3 0.2 0.5 0.7 1 0.6 0.3 0.6 0.6 0.4 0.3 0.9 0.2 0.5 0.4 0.7 0.3 0.5 0.4 0.2 0.5 0.2 0.2 0 0.3 0.3 0.2 0.2 0-0.1 0.3 0.1 0.3 0.3-0.2 0.3-0.2 0.2-0.3 0-0.2 0.5-0.4 0.3-0.4 0.1-0.4-0.2-0.2-0.2 0.1-0.1-0.2 0-0.1-0.1-0.1-0.2 0.1-0.2 0 0-0.2 0.1-0.2 0.3 0 0.3-0.1 0.2 0.1 0 0.2 0.1 0.2 0.4-0.1 0.3 0.1 0 0.3 0.2 0.1 0.5 0.3 0.8 0.1 0.4 0 0.1-0.2 0.2-0.3 0.2-0.3 0.1-0.3 0.4-0.3 0.1-0.4-0.1-0.3-0.3-0.2-0.3-0.1-0.1-0.2-0.5-0.2-0.2 0-0.2-0.1 0-0.3-0.2-0.1-0.2 0-0.2 0.2-0.2 0-0.4 0-0.1 0.1-0.2-0.1-0.3-0.6-0.2-0.5-0.2-0.3-0.2-0.3-0.2 0-0.1 0.1 0.1 0.3 0.2 0.5 0 0.3 0.3 0.2 0.1 0.3 0.2 0.4-0.1 0.2-0.2 0-0.1 0.2 0 0.2-0.1-0.1-0.2-0.1-0.3 0-0.2 0.2-0.4 0.2-0.3 0.2-0.4-0.1-0.2-0.1-0.2-0.3-0.3-0.3 0-0.3-0.1-0.5-0.2-0.3-0.3-0.3-0.3-0.5 0-0.4-0.1-0.4 0.1-0.4 0.2-0.2 0.1-0.4 0.5-0.6 0.3-0.4 0.1-0.4-0.1-0.1-0.3-0.1-0.1 0-0.1-0.1 0.3-0.2 0.1-0.1 0.1-0.1-0.1-0.2-0.3-0.1-0.2-0.1-0.1-0.2 0.1-0.3 0.1-0.2-0.3-0.2-0.2 0-0.2 0.1 0 0.3-0.2 0.2-0.2 0.1-0.2 0.2-0.3 0.2-0.4-0.1-0.5 0.3-0.2 0.3-0.3 0.3-0.3 0.2-0.3-0.5 0.1-0.5 0.1-0.4 0.3-0.5 0.2-0.3 0.6-0.5 0.2-0.4 0.4-0.5 0.1-0.1 1.7 0 0.3 0.4 0.2 0.5 0 0.3 0.7 1.1 0.4-0.9 0-0.6-0.1-0.7-0.1-0.1 0.8 0 0.1 0.1 0.2-0.1z m23.4 41.2l0.5-0.3 0.3 0.1 0.2 0.1 0.3 0.2-0.1 0.2 0.3 0.1 0.1-0.1 0.1-0.2 0.2 0 0.2 0 0.3 0.6 0.5 0.6 0.2 0.4 0 0.2-0.2 0-0.3-0.2-0.3-0.2-0.7-0.3-0.9-0.3-0.7-0.1-0.3-0.1-0.2-0.2 0.2-0.3 0.3-0.2z m76.4 60.3l0.3-0.2 0.2-0.1 0.1 0.1-0.1 0.3 0.1 0.1 0.1 0.2 0 0.2-0.2 0 0-0.2-0.2 0-0.2 0-0.1-0.2 0-0.2z m-3.7-15l0.3 0 0.2 0 0.2-0.2 0 0.2-0.1 0.1-0.3 0.5-0.1 0.5-0.2 0.3-0.2 0.1-0.2 0-0.1-0.2-0.1-0.4 0.1-0.3 0.5-0.6z m-40-5.6l0.1-0.2 0.2 0.1-0.1 0.5 0.1 0.5-0.1 0.8 0 0.6-0.2 0.6-0.1 0.9 0.2 0.7-0.1 0.5-0.2 0.4-0.1 0.4 0 0.5-0.1 0.1-0.3-0.2-0.2-0.3 0.1-0.5 0.3-0.5 0.2-1 0.1-1.4 0.3-1.2 0-0.6-0.1-0.7z m30.1-6.9l0-0.3 0.4 0.1 0-0.2 0.2 0 0.2 0.3 0.2 0.2 0.1 0.1 0.2 0.5-0.1 0.3-0.1 0.3-0.2 0.2-0.2 0-0.3-0.4-0.1-0.2 0.1-0.2-0.3-0.5-0.1-0.2z m-5.7-3.6l0.1 0.1 0 0.3 0.2 0-0.1 0.2 0.1 0.2 0.1 0-0.1 0.1 0 0.3 0.1 0.1 0 0.2-0.1 0-0.2-0.2-0.1-0.3 0-0.3 0-0.3-0.1-0.3 0.1-0.1z m-0.8-10l0.3-0.3 0.2 0 0.1 0 0.1 0.3-0.1 0.3-0.1 0.1 0.2 0.1-0.1 0.2-0.3 0-0.2 0-0.1 0 0.1-0.1 0-0.1 0.1-0.1-0.2-0.2 0-0.2z m-23.3-35.3l-0.3-0.4 0.5-0.7 0.7 0.6 0.6 0.8-0.2 0.7-0.4 0.5-0.6-0.1-0.2-0.7-0.1-0.7z m5.9-6.6l-0.4-0.3 0.1-0.4 0.6-0.1 0.5 0.2 0.2 0.3-0.1 0.3-0.6 0-0.3 0z m-95.1-15l0.2 0 0.4 0.3 0.3 0.3 0.3 0.2 0.1 0.2-0.2 0.3-0.2 0.1-0.2-0.1-0.1-0.5-0.3-0.5-0.5-0.1-0.3-0.1 0.1-0.2 0.4 0.1z\",\n\tMXCAM:\n\t\t\"M831.4 503.9l0-1.5 0-1.5 0-1.5 0-0.6-1.8 0-0.8-0.1-0.8 0-0.4-0.1-0.3-0.2-0.2-0.2-0.3-0.3-0.5-0.2-0.6-0.1-0.5 0.1-0.6 0-0.5-0.1-0.6-0.4-0.5-0.4-0.4-0.3-0.5-0.4-0.5-0.2-0.5-0.2-0.6 0-0.6-0.1-0.5-0.1-0.4-0.2-0.6-0.2-0.3-0.1-0.3-0.1-0.4-0.1-0.3 0-0.7 0-0.8-0.1-0.8 0.1-0.6 0.1-0.1 0.2-0.1 0.3-0.1 0.3-0.1 0.2 0 0.3 0 0.3 0.1 0.3 0 0.3-0.1 0.5-0.3 0.8-0.3 0.6-0.3 0.4-1.3 0-1.4 0-1.4 0-1.4-0.1-0.9 0-1-0.4-0.8-0.5-0.8-0.6-0.5-0.2-0.1-0.5-0.2-0.5-0.5-0.3-0.4-0.1-0.4-0.2-0.4-0.2-0.4-0.3-0.6-0.5-0.7-0.5-0.6-0.6-0.7-0.4-0.5-0.7 0-1.2 0.1-1.2 0.1-0.9 0-1.4 0-1.4 0-1.4 0-1.4-1.3 0.1-1.3 0.1-1.4 0-1.3-0.2-0.2 0-0.2 0.1-0.2 0.1-0.3-0.1-0.3-0.2-0.2-0.2-0.2-0.2-0.3-0.2-0.4-0.5-0.3-0.7-0.1-0.8-0.2-0.7-0.4-0.6-0.4-0.5-0.3-0.6-0.3-0.5 2.3-0.7 3.2-0.2 3.1-0.3 3.6-0.4 2.3 0.1 0.9 0.2 0.8 0.9 1.5 1 0.2 0.2 0 0.3-0.2 0.4-0.2 0.2-0.4 0.1 0.2-0.2 0-0.2-0.3 0.1-0.4 0.1-0.7 0-0.3-0.1 0-0.3 0.1-0.4-0.1-0.2-0.3 0-0.1 0-0.6 0.5-0.1 0-0.2-0.1-0.2 0-0.4 0.1-0.1 0.1 0.2 0.2 0.4 0 0 0.2-0.4 0.1-0.4 0.1-0.3-0.1-0.3-0.3 0 0.2 0.1 0.1 0 0.1 0.1 0.2-0.2 0.2-0.2 0.3-0.1 0.2-0.1 0.4 0.1-0.2 0.5-0.3 0.5 0.5 0.3 0.1 0.4 0.1 0.6-0.2 0.4-0.1 0.2 0.2 0.2 0.4 0.4 0.3 0.6 0.3 0.5 0.1-0.7-0.6-0.8-0.5-0.7-0.6-0.1-1 0.6 0.3 0.3 0.3 0.3 0.1 0.7-0.3-0.3 0.6 0.3 0.2 0.4 0.2 0.3 0.3 0.1 0.4-0.4-0.2 0 0.1 0 0.1-0.2 0 0.5 0.3 1.2 0.4 0.3 0.3-0.1 0.5-0.7 0.8-0.2 0.5 0.3 0.4 0.5 0.5 0.5 0.4 0.4 0.1 0.3-0.4-0.1-0.5-0.3-0.4-0.2-0.6 0.2 0.2 0.3 0.2 0.3 0 0.4 0-0.3-0.4-0.4-0.4-0.3-0.4 0.2-0.5 0.7 0.4 1.8 0.5 0.8 0.4 0.6-0.2 1.3 0.3 0.7 0.1 1.4-0.2 0.7-0.2 0.5-0.2 0 0.4 0.2 0.3 0.3 0.1 0.2-0.2 0.1-0.4-0.2-0.9-0.1-0.4-0.2 0 0 0.2-0.1 0.2-0.1 0.2-0.3 0.1-0.7 0.3-0.1-0.1 0.1-0.3 0.6-0.8 0.3-0.2 0.6-0.4 1.7-0.6 0.8-0.5 0.4 0.2 0.5-0.1 0.5-0.2 0.4-0.3 0.2-0.3 0.5-0.9 0.2-0.2 0.9 0.1 0.5-0.1 0.2-0.1 0.2-0.3 1.2-0.4 0.4-0.3-0.5-0.2-0.4 0.1-0.7 0.4-1.4 0.3-0.3 0.3 0.9-2.3 0-1-0.6-0.9-0.5-0.4-0.2-0.1-0.3-0.1-0.3 0.1-0.1 0.2-0.1 0.2-0.2 0.1-0.6-0.1-0.8-1.1-0.6-0.2 0.4-0.7 0.6-0.7 0.7-0.5 1.3-0.5 0.9-0.6 0.8-0.8 0.4-0.6-0.7 0.2-1.8 1.5-1.9 0.9-0.7 0.7 0 0.7-0.3 0.1-0.1-0.1-0.7 0.4-0.3 0.1-0.6 0.1-0.5-0.1-0.1-0.2 0.7-0.8 1.4-1.1 1.9-1.1 2.4-1.5 3.5-1.6 2.3-2.1 0.6-0.3 1.3-0.5 2.3-1.5 2.2-2.9 0.6-0.5 1-0.3 0.9-0.8 0.8-1 0.4-1 0.4-5.9 0.3-1.3 0.1-0.6-0.1-0.7-0.1-0.5 0-0.5 0.2-0.7 0.5-1.3 0.6-0.9 1.6-1.2 2.6-1.8 1.1-1.3 0.3-1.2 0.1-0.5 0.1-0.5-0.2-0.5-0.8-1.7-0.1-0.4 0-0.2 0.1-0.6 0-2.4 0.2-1.5 0-1.7 0-0.7 0.4-1.7 0-1.2-0.4-2.5 0-1.4 0.6-2.6 0.2-2.9 0.3-0.9 1.6-1.9 0.4-0.6 0 0.9-0.3 7.6 0.5 0.9 1.4 0.1 1.4 0 1.1 0.2 0.8 0.8 0.4 1.1 0.8 0.7 0.5-0.3 0.6-0.2 0.5 0.5 0.5 0.5 0.9-0.2 0.5-1.1 0.8-0.5 1.1 1.6 0.5 0.8 0 0.8 0.5 1.2 0.5 0.4 1.7 1.2 1 1.9 0.7 2.2 1.5 1.5 1.9 0.8 1.8 1.3 2 3.9 1.6 1.6 1.4 1.9 0.3 2.1 0.8 1.7 1.2 1.8 1.6 1.3 1.8 1.3 3.5 3.1 2.8 3.5 0.6 2.2-0.2 1.9 0.1 2.2-0.1 0.5 0 1-0.4 0.8-1.3 1.4 0.1 2.2-0.9 6 0.2 1.8 1 1.3 0.2 1.5-0.3 0.5-0.1 0.5 0.4 0.2 0.5 0.2-0.1 0.7-0.3 0.7-0.1 0.6 0.5 2.7 0.2 2.2 0 1.9-0.6 1.7-2.5 3-0.3 0.4 0.2 2.5-0.2 0.3-0.2 1.2 0 2.6-6.3 0-6.3 0-6.3 0-6.3 0-6.3 0-6.3-0.1-6.3 0-6.4 0-1.2 0-0.6 0.2-0.2 0.3z m-17.5-29.4l1.3-0.6 0.5 0 0.1 0.2 0.2 0.3 0.1 0.3 0 0.4-0.2-0.1-0.1-0.1-0.6 0.5-0.3 0.1-0.4 0 0.1-0.2 0.2-0.2 0.2-0.1 0.3-0.1-0.6 0.1-1 0.4-0.4 0-1.1 1.5-0.9 0.7-0.9 0.2 0.5-1-1.5 0.9-0.8 0.4-0.9 0.2-0.6 0-0.2-0.1 0.2-0.2 0.4-0.5 0.3-0.2 1.3-0.5 0.8-0.2 1.5-0.8 1.2-0.8 1.3-0.5z\",\n\tMXCHP:\n\t\t\"M818.7 520.3l-0.2 0.1-0.1 0.4 0.7 0.3 0.9 0.2 0.4 0.3 0.2 0.7 0.6 0.1 0.8-0.1 0.8 0 0.3 0.3 0.2 0.5 0.2 0.5 0.1 0.5 0.1 0.2 0.6 0.1 0.2 0.2 0.2 0.2 0.1 0.5 0.1 0.3 0.3 0.4 1 1.1 0.3 0.2 0.7-0.1 0.3 0 0.1 0.2 0.2 0.6 0.1 0.3 1 1.2 0.2 0.3 0.1 0.6 0.3 0.3 1.1 0.4 0.2 0.2 0.4 0.4 0.1 0.1 0.3-0.2 0-0.2-0.1-0.3 0-0.1 0.5 0 0.4 0 0.1 0.3-0.5 0.5 0.6 0.2 0.8 0.9 0.6 0.3 2 0.6 0.3 0 0.3-0.2 0.4 0.2 0 0.2-0.1 0.4 0.4 0.3 1 0.6 0.4 0.3 2 2.8 0.4 1.1-0.4 0.7 0 0.2 0.2-0.1 0.2 0 0.1-0.1 0-0.2 0.4 0.2-0.1 0.4-0.1 0.5 0.1 0.5-0.3 0.5 0.3 0.1 0.4 0 0.3 0.2 0.1 0.3-0.2 0.3-0.3 0.2-0.1 0.3 0.3-0.1 0.5 0 0.4 0.1 0.1 0.1 0.2-0.1 0.7-0.2 0.3 0 0.2 0.6 0.1 0.3 0.7-0.4 0.3 0.1 0.3 0.2 0.2 0.2 0.1 0.3 0 0.3 0.1 0.2 0.9 0.1 0.3 0.1 0.2 0.1 0.2 0.1 0.3 0 0.2-0.1 0.2 0 0.1 0.4 0 0.4 0 0.2 0.3 0.5-0.4-0.1-0.4 0-0.3 0.2 0 0.4 0.1 0 0-0.2 0.2 0 0.3 0.3-0.2 0.5-0.4 0.4-0.5 0.2-0.2 0.1 0.3 0.2 0.4 0.2 0.1-0.1 0 0.3-0.1 0.1-0.3-0.1-0.1-0.1-0.1 0.1 0 0.1-0.1 0 0.1 0.2 0.1 0.3 0.2 0.1-0.4 0-0.1 0-0.1-0.2-0.4 0.4 0.1 0.3 0.3 0.2 0.4 0.2-0.4 0.1-0.3 0.3-0.2 0.4 0.1 0.6 0.8 0.5 0.2 0.3-0.6 0.2 0 0.2 0.3 0.4-0.7 0.5 0.2 0.5 0.2 0 0.1-0.1 0.1 0 0.2-0.1-0.1 0.3-0.2 0.4-0.1 0.1 0 0.1-0.6 0.1-0.5 0.1-2.6 0-3.9 0-4 0-4 0-0.1 0-3.8 0-4 0.1-3.9 0-4 0-4 0-1.3 0-0.4 0.2-0.4 0.4-0.6 1.2-0.5 0.9-1.4 2.4-2 3.5-2.3 3.9-2.3 3.9-1 1.9-0.9 1.6-1.4 2.4-0.6 0.9-0.1 0.5 0 0.6 0.2 0.5 3.7 4.8-0.6 1.3-0.3 0.4-0.3 0.1-0.4 0.1-0.4 0.1-0.3 0.3-0.1 1 0.1 1.9-0.3 0.9-0.6 0.7-0.2 0.3 0 0.6 0.1 0.3 0.3 0.7 0 0.2-0.1 0.5 0.1 0.2 0.5 1.5 0 0.5-0.1 0.5-0.6 1.1-0.7 1.8-0.5 0.6-0.6 0.1-0.1-0.1-1.6-2-2.2-2-3.6-3.7-5.5-5.7-3.6-4-0.4-0.8 0-0.6 0.5 0.3 1.2 0.4 0.3 0.2 0 0.6 0.2 0.6 0.3 0.4 0.4 0.2-0.3-0.6-0.2-1.3-0.3-0.5-0.4-0.2-0.6-0.3-0.6-0.1-0.5 0.1-0.1-0.5-0.3-0.1-0.2 0.2 0.4 0.4-0.5-0.1-1.7-1.3-1.2-0.5-0.5-0.4-0.4-0.8-2.3-1.7-2.7-2.9-0.5-0.9-0.3-0.4-0.9-0.3-6.9-5.9-0.5-0.3-4.8-3.9-3-2-5.3-3.1 0.4-0.2 0.7 0.1 0.3-0.1 0.2 0.3 0.3 0.1 0.4-0.2 0.3-0.4-0.6-0.7-0.3-0.7-0.4-0.5-0.7-0.4-3.4-0.7-0.9-0.5-0.3-0.2 0.2-0.3 0.2-0.4 0.3-0.4 0.2-0.4 0.2-0.5 0.1-0.6 0.1-0.6 0-0.5 0-0.9-0.4-1-0.4-1-0.4-0.8-0.2-0.6-0.3-0.5-0.2-0.6-0.3-0.5-0.3-1.2 0.6-1.2 0.9-1.2 0.7-1 0.3-0.6 0.1-0.6 0-0.6 0-0.6-0.1-0.7-0.1-0.8-0.1-0.8 0.1-0.6 0.4-0.4 0.6-0.4 0.6-0.3 0.5-0.3 0.4-0.2 0.4-0.3 0.4-0.3 0.4-0.2 0.2-0.4 0-0.6 0-0.6 0-0.4 0-0.8 0-0.8 0.3-0.5 0.8 0.1 0-0.2 0-0.2 0-0.2 0-0.2 0-0.8 0.1-0.9 0-0.9-0.3-0.7 0.4-0.2 0.4-0.2 0.3-0.2 0.3-0.3 1.1-0.7 1.1-0.7 1-0.7 1.1-0.7 0.5-0.4 0.6-0.4 0.6-0.5 0.3-0.6 0.1-0.3 0.1-0.3 0.2-0.3 0.1-0.3 0.4-0.9 0.4-0.8 0.4-0.9 0.3-0.8 0.3-0.8 0.1-0.4 0.2-0.2 0.1-0.3 0.2-0.2 0.5-0.4 0.1-0.1 0.2-0.1 0.1 0 0.1-0.6 0.1-0.1 0.3-0.4 0.4-0.3 0.4-0.3 0.4-0.3 0.2-0.4 0.2-0.6 0.1-0.6 0.1-0.5 0.5-1.7 0.5-1.8 0.6-1.8 0.6-1.8 0.1-0.6 0.4-0.1 0.1-0.2 0.4-0.5 0.3-0.1 0.4 0 0.8 0.3 1 0.1 0.3 0.2 0.5 0.4 0.7 0.3 0.7 0.8 0.9 0.7 0.9 0.2 0.7-0.7 0.6 0.1 0.4-0.6 0 0.5 0.1 0.2 0 0.6 0 0.1 0 0.1 0 0.1 0 0.5 0.1 0.5 0 0.6 0 0.5-0.1 0.5-0.2 0.4-0.2 0.5-0.1 0.5 0 1.2 0.3 1.2 0.2 1.2 0 1.3 0.1 0.7 0.2 0.6 0.4 0.3 0.7 0 1 0.2 0.5 0.6 0.3 0.8 0.5 0.9 0.3 0.5 0.3 0.5 0.4 0.4 0.4 0.4 0.8 0.4 0.9 0.3 1 0 0.8-0.5 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.4-0.4 0.5-0.4 0.4-0.4 0.5-0.4 0.2-0.3 0.3-0.3 0.3-0.3 0.3-0.2 0.6-0.6 0.6-0.5 0.6-0.6 0.7-0.5 0.4-0.5 0.5-0.5 0.6-0.5 0.6-0.1 1-0.4 0.2-0.5 0-0.7 0.3-1 0.7-0.5 0.9-0.3 1.1-0.2 0.9-0.2 0.7-0.3 0.7-0.4 0.7-0.4 0.6-0.4 0.9 0.1 1-0.1 0.6-0.5-0.5-0.9 0.7-0.8 0.8-0.8 0.8-0.5 0.7-0.2 0.2 0 0.4 0.2-0.1 1.1 0.4 0.4 0.2-0.3 0.1-0.3 0.1-0.3 0.4-0.1 0.4-0.1 0.4 0.1 0.7 0.4 0.6-0.5 0.6 0.1 0.6 0.5 0.4 0.7 0 0.2 0 0.6 0 0.2 0.1 0.1 0.1 0.2 0.1 0.9-0.2 0.3-0.3 0.5-0.1 0.6 0.4 0.2 0.6 0 0.6 0 0.6 0 0.6 0.2 0.5 0.9 0.4 1 0.2 1.1 0.2 1 0.1 0.3 0 0.3-0.1 0.3 0 0.3 0.2 0.5 0.5 0.3 0.6 0.3 0.5 0.2 0.1 0 0.1 0 0.1 0.1 0.1 0 0.5 0.2 0.6 0.2 0.6 0.2 0.2 0.2 0.3 0.2 0.2 0.1 0 0.5-0.2 0.9 0.2 0.3 0.3 0.2 0.5 0.2 0.3 0 0.6 0 0.3 0.1 0.2 0.3 0.7 1.2 0.1 0.1-0.1 0.4-0.3 0.1-0.4 0-0.4 0.1-0.2 0.3-0.1 0.4 0 0.5 0.1 0.4 0.1 0.1z m-76.4 34.7l0.3 0.1 0.8 0.6 0.7 1 0.4 0.3 0.9 0.4 0.4 0.2 0.2 0.4-4.3-1.8 0.6-1.2z\",\n\tMXCHH:\n\t\t\"M329.7 218.5l-0.2-0.3-0.1-0.4-0.2-0.3-0.1-0.4-0.2-0.2-0.2 0-0.2 0.1-0.3 0-0.5 0.1-0.4 0-0.3-0.2-0.4-0.4-0.6-0.9-0.7-1-0.6-1-0.6-1-0.4-0.7-0.3-0.6-0.1-0.8 0.2-0.8 0.5-0.7 0.5-0.6 0.3-0.7-0.1-0.9-0.2-0.5-0.3-0.6-0.2-0.5 0-0.6 0.1-0.6 0.2-0.7 0.1-0.6 0-0.7-0.1-0.6-0.1-0.5-0.3-0.4-0.5-0.3-0.8-0.5-0.6-0.6-0.6-0.6-0.6-0.7-0.1-0.5 0.1-0.5 0.1-0.4 0.3-0.4-0.8-0.6-0.7-0.7-0.8-0.7-0.8-0.6-0.4-0.6-0.1-0.7-0.2-0.7-0.3-0.6-0.5-0.3-0.5-0.2-0.5-0.3-0.5-0.3-0.4-0.2-0.3-0.3-0.4-0.3-0.2-0.4-0.9-2.2-0.9-2.2-0.9-2.2-0.9-2.2-0.2-0.7 0.3-0.6 0.5-0.5 0.6-0.5 0.5-0.5 0.5-0.4 0.5-0.2 0.7-0.2 1.5-0.1 1.4 0 1.3 0.1 1.5 0.3 1 0.2 1 0.3 1 0.2 1 0.3 0.4 0.1 0.5 0.2 0.5 0 0.4-0.2 0.7-0.6 0.6-0.6 0.6-0.6 0.6-0.6 0-0.5-0.2-0.8-0.4-0.9-0.2-0.6-0.2-0.7-0.3-0.7-0.2-0.7-0.3-0.6-0.3-1-0.3-1-0.3-1-0.3-0.9 0-0.9 0.3-1.1 0.4-1.2 0.2-0.9 0.1-0.3-0.1-0.4-0.2-0.3-0.1-0.3-0.1-0.3 0-0.4 0-0.4-0.1-0.4-0.1-1.3-0.2-1.3-0.2-1.4-0.1-1.3-0.2-1.9-0.2-1.8-0.3-1.8-0.2-1.8-0.2-1.7-0.1-1.6-0.2-1.6-0.2-1.7 0.5 0 0.5 0 0.5 0 0.5 0 0.5 0 0.2-0.2 0.1-0.4 0-0.6 0.1-0.8 0-0.7 0.1-0.8 0.1-0.8 0.2-2.7 0.2-2.6 0.2-2.7 0.2-2.7 0.1-0.6 0-0.7 0.1-0.7 0.1-0.7 0-0.1 0-0.1 0-0.7 0-0.6 0.2-0.5 0.2-0.5 0.2-0.4 0.1-0.4 0-0.5-0.1-0.5-0.2-2.1-0.1-2.1-0.2-2.1-0.2-2.1 0-0.3 0-0.3-0.1-0.3 0-0.4-0.1-1-0.1-1-0.1-1.1 0-1-0.1-0.8-0.2-0.6-0.3-0.4-0.6-0.5-0.7-0.7-0.7-0.5-0.7-0.4-0.9-0.3-0.6-0.1-0.5-0.2-0.6-0.3-0.4-0.3-1.7-1.4-1.6-1.4-1.6-1.3-1.7-1.4-0.4-0.5 0-0.4 0-0.6 0.2-0.7 0.1-1.1 0.1-1 0.2-1.1 0.1-1 0.4-2.9 0.3-2.8 0.4-2.9 0.3-2.7 0.8 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0.1 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.8 0 0.7 0 0.7 0 0.8 0 0.7 0 0.8 0 1.2 0 0.3 0.1 0.1 0.2 0.3 0.2 0.5 0.1 1.3-0.1 1.1 0.4 0.9 1 0.8 1.2 0.6 1.1 0.7 2.3 0.3 0.6 1.2 1.5 0.3 0.5 0.1 0.3 0.1 0.2 0 0.2 0.2 0.2 1 0.6 0.3 0.4 0.7 0.3 1.2 0.3 0.9 0.6 0.6 0.2 0.7 0.1 0.5 0.2 1.2 0.9 0.4 0.3 0.2 0.3 0.2 0.6 0.2 0.3 0.5 0.3 0.4 0.2 0 0.2 0.5 0.1 0.5 0.4 2.2 2.6 0.2 0.7 0.3 0.4 2.2 1.4 0.4 0.2 0.3 0.1 0.6 0.8 0.6 0.5 0.5 0.3 0.5 0.3 0.3 0.7 0.4 1.2 0.3 0.4 0.7 0.4 1 1.2 2.3 1.8 1.1 1.4 0.4 0.3 0.8 0.2 1.7 0.9 0.2 0.1 0.1 0.2 0.2 0.2 0.3 0.2 0.1-0.1 0.1 0 0.2-0.3 0.1 0 0.4 0.1 0.1 0 0.2 0.1 0.3 0.5 0.3 0.1 0.3 0 0.2 0.1 0.2 0.3 0 0.3 0.1 0 0.1 0 0.4 0.5 0.2-0.3 1.3 1.6 0.6 0.3 0.5 0.1 0.6 0.3 0.6 0.4 0.4 0.5 0 0.4 0.1 0.3 0 0.4 0.2 0.3 0.3 0.1 0.9 0.1 0.2 0.1 0.2 0.4 0.9 1 0.3 0.6 0.1 0.3 0 0.7 0.1 0.4 0.5 0.2 0.1 0.2 0 0.2-0.2 0.4 0 0.2 0 0.4 0.3 0.4 0.1 0.4-0.1 0.5 0 0.2 0 0.1 0.3 0.4 0.2 0.3 0.4 0.2 0.1 0.2 0.1 0.3 0 0.4 0.1 0.3 0.1 0.1 0.6 0.4 0.4 0.8 0.4 0.9 0.3 0.7 0.2 0.1 0.5 0.3 0.3 0.2 0.6 1.2 0.4 0.5 0.1 0.8-0.1 1.2-0.1 0.8-0.4 1.1-0.1 0.7 0.1 0.8 0.5 1.8 0 0.3-0.1 0.5 0.1 0.4 0.1 0.1 0.4 0.5 0.1 0.1 0.1 0.4 0.5 0.6 0.4 1.6 0.1 0.3 0.6 0.6 0.5 0.4 0.4 0.5 0.2 1.4 0.5 0.9 0.2 0.5 0.1 0.5 0 0.3 0.1 0.3 0.4 0.5 1.4 0.9 0.4 0.4 0.1 0.2 0.1 0.3 0.1 0.3 0.2 0.2 0.2 0 2.3 1.5 0.3 0.5 0.5-0.3 0.8 0 0.8 0.2 0.4 0.6 0.7 0.5 0.3 0.1 0.1 0.2 0.6 1.2 0.9 1 0.6 0.5 1 0.5 1.4 1.6 1.1 0.6 2.6 0.9 1.8 0.4 2 0.1 0.3 0.1 0.3 0.2 0.2 0.4-0.3 0.7 0.2 0.2 0.4 0.1 0.2 0.1 1.4 1.2 0.8 0.4 2.5 0.6 0.8 0 0.2 0 0.3 0.2 0.1 0.2 0.1 0.3 0.1 0.3 1.5 1.4 1.2 0.7 0.4 0.1 0.2 0.2 0.8 0.8 0.5 0.1 0.3-0.2 0.2-0.3 0.3 0 0.4 0.5 0.1-0.1 0.4-0.1 0 0.2-2.3 4.6-2.4 4.6-2.4 4.6-2.3 4.5-0.9 1.8-0.9 1.7-0.8 1.7-0.9 1.7-1.2 2.4-1.2 2.3-1.2 2.3-1.3 2.3-0.9 1.6 0.2 1.1 0.2 0.7 0.1 0.7 0.2 0.7 0.3 1.5 0.4 1.4 0.3 1.5 0.3 1.5 1.5 6.2 1.5 6.2 1.5 6.3 1.5 6.2 0.4 1.8 0.4 1.8 0.4 1.8 0.4 1.8-2.2-0.9-2.3-1-2.2-0.9-2.3-0.9-0.7-0.3-0.6-0.2-0.7-0.1-0.7 0.1-1.1 0-1.2 0.1-1.1 0.1-1.1 0.4-1.2 1.1-1.1 1.3-0.9 1.5-1 1.4-1.3 1.8-1.3 1.7-1.3 1.8-1.3 1.7-1.1 1-1.1-0.3-1.2-1-1-0.9-1.4-1.1-1.6-0.8-1.6-0.5-1.7-0.4-0.7-0.1-0.7-0.1-0.7-0.1-0.6 0.1-0.4 0.4-0.4 0.6-0.3 0.4-0.5-0.3-0.4-0.5-0.7-1-0.6-0.8-0.4-0.4-0.8 0.5-0.8 0.4-0.8 0.4-0.9 0.4-0.5 0.3-0.9 0.5-0.8 0.4-0.6 0.1-0.8-0.4-0.8-0.5-0.9-0.4-0.8-0.5-0.8-0.5-0.8-0.4-0.8-0.5-0.8-0.4-0.7-0.5-0.5-0.5-0.5-0.6-0.6-0.6-0.4-0.7-0.4-0.7-0.5-0.5-0.7 0.1-0.7 0.2-0.8 0-0.7-0.1-0.8 0-1.2-0.7-1.1-0.8-1.1-1-1.1-0.8-0.5-0.4-0.4-0.3-0.4-0.3-0.5-0.4-0.1 0.3-0.2 0.2-0.2 0.2-0.1 0.3-0.3 0.6-0.3 0.6-0.3 0.6-0.3 0.6-0.3-0.4-0.4-0.5-0.4-0.2-0.4 0.2-0.4 0.7-0.1 0.9 0 0.9 0 0.8 0 0.4-0.1 0.4 0 0.5-0.2 0.2-0.4 0.3-0.6 0.5-0.4 0.4-0.1 0.5 0.2 0.7 0.2 0.6 0.2 0.7 0.2 0.6 0.1 0.7-0.1 0.4-0.3 0.3-0.6 0.2-1.3 0.4-1.2 0.4-1.3 0.4-1.2 0.3-0.9 0.7-0.1 0.9 0.3 1 0.4 1 0.4 1 0.5 1.1 0.2 1.2-0.1 1.1-0.2 0.7-0.2 0.7-0.2 0.6-0.4 0.6-0.4 0.4-0.5 0.1-0.5-0.1-0.6 0-0.9 0.5-0.3 1-0.1 1.1 0 1.2 0 0.9-0.1 0.9 0 0.8-0.1 0.9-0.1 0.6-0.2 0.4-0.4 0.3-0.4 0.4-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.1-0.6 0.5-0.5 0.5-0.5 0.5-0.6 0.4-0.5 0.5-0.5 0.6-0.6 0.5-0.5 0.4-0.6 0-0.6 0-0.7-0.2-0.5-0.1-0.8-0.1-0.8-0.1-0.9 0-0.8-0.1-0.8-0.7-0.8-0.6-0.9-0.5-0.9-0.5-0.6-0.5-0.5-0.7-0.4-0.7-0.5-0.7-0.7-0.6-0.7-0.5-0.8-0.5-0.8-0.4-0.4-0.1-0.3-0.1-0.1-0.2-0.1-0.5 0-0.4-0.1-0.4-0.1-0.5-0.1-0.4-0.2-0.4-0.3-0.1-0.4-0.1-0.3-0.3 0-0.1-0.1-0.2 0-0.3-0.1-0.2-0.1-0.5-0.1-0.5-0.1-0.5-0.1-0.5-0.3-0.9-0.5-0.8-0.6-0.5-0.9-0.2-1.9-0.4-2-0.4-1.9-0.5-2-0.4-0.3 0-0.3-0.1-0.3-0.1-0.3 0-0.9-0.2-0.5-0.2-0.2-0.5-0.2-0.9-0.2-1.4-0.2-1.5-0.1-1.4-0.2-1.5-0.2-1.7-0.1-2-0.3-1.9-0.5-1.5-0.5-0.6-0.6-0.6-0.6-0.7-0.6-0.7-0.6-0.9-0.6-0.9-0.7-1-0.4-1 0-0.8 0-0.9-0.2-0.7-0.7-0.3-1.4-0.3-1.6-0.3-1.4-0.7-0.9-1.2-0.3-0.6-0.4-0.5-0.4-0.3-0.6-0.1-0.7 0.1-0.7 0-0.7-0.2-0.3-0.6-0.6 0.8-0.7 0.8-0.6 0.8-0.8 0.7z\",\n\tMXCMX:\n\t\t\"M593.3 463.3l-0.1-0.1-0.1-0.1-0.1 0-0.1-0.2-0.2-0.4-0.2-0.5 0-0.6 0-0.5 0-0.1 0-0.1-0.1-0.1-0.1 0-0.1-0.1-0.3-0.1 0-0.3 0.1-0.3 0.2-0.2 0-0.1 0-0.1-0.1-0.1-0.1-0.1-0.1-0.6 0.2-0.7 0.3-0.7 0.2-0.6 0.5 0.1 0.5 0.1 0.4-0.2 0.2-0.5 0.1-0.1 0-0.1 0.1-0.1 0.3-0.5 0.3-0.5 0.4-0.4 0.3-0.5 0.1-0.2 0.1-0.1 0.2-0.2 0.1-0.2 0.1-0.1 0.1-0.1 0.2-0.1 0.2 0 0.3-0.2 0.1-0.3-0.1-0.2-0.4-0.2 0.3-0.2 0-0.3 0-0.3 0.3-0.3 0.1-0.1 0.2-0.2 0.2-0.2 0.1-0.2 0.1 0.1 0 0.1 0.1 0 0.1 0.1 0.2 0.2 0.2 0.2 0.1 0.2 0 0.3 0 0.1 0 0.1 0 0.4 0.2 0.3 0.2 0.3 0.3 0.2 0.1 0.2 0.1 0.2 0.1 0.3 0.2 0.2 0 0.1 0.1 0.1 0.1 0.2 0 0.1 0 0.1 0.1 0 0.2 0.3-0.1 0.3-0.2 0.2-0.3 0.2 0.1 0.1 0.1 0.2 0.1 0.1 0.1 0.1-0.1 0.1-0.1 0-0.1 0.1-0.1 0.1 0.4 0.5 0.5 0.2 0.6 0.3 0.5 0.3 0.1 0.2 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.1 0 0.1 0 0.1 0.2 0.4 0 0.4 0.1 0.4-0.1 0.4 0 0.3-0.1 0.4 0 0.3-0.1 0.4 0.2 0.5 0.2 0.4 0.3 0.5 0.1 0.5 0 0.1-0.1 0.4-0.1 0.4-0.3 0.3-0.2 0.3-0.4 0-0.4 0-0.4 0-0.3 0.1-0.3 0.3-0.2 0.3-0.3 0.3-0.3-0.2-0.5-0.3-0.5-0.3-0.6-0.3-0.6-0.1-0.2 0-0.2 0-0.2-0.1-0.3 0-0.9-0.1-1-0.2-0.9-0.3-0.7-0.7z\",\n\tMXCOA:\n\t\t\"M468.6 229.3l-0.4-1.8-0.4-1.8-0.4-1.8-0.4-1.8-1.5-6.2-1.5-6.3-1.5-6.2-1.5-6.2-0.3-1.5-0.3-1.5-0.4-1.4-0.3-1.5-0.2-0.7-0.1-0.7-0.2-0.7-0.2-1.1 0.9-1.6 1.3-2.3 1.2-2.3 1.2-2.3 1.2-2.4 0.9-1.7 0.8-1.7 0.9-1.7 0.9-1.8 2.3-4.5 2.4-4.6 2.4-4.6 2.3-4.6-0.1 0.5 0.4 0.2 1.7 0 1.6 0.4 1.1 0.2 0.7-0.4 0.4-0.8 0.1-1.2 0.3-0.1 0.1 0.1 0.2-0.6 0.1-0.3 0.3-0.2 1.1-0.6 0.2-0.2 0.3-0.3 0.8-1.7 0.5-0.5 0.6 0.3 0.2-0.2 1.3-1 0.8-0.2 0.3-0.1-0.3-0.4-0.7-0.4-0.2-0.4 0-0.4 0.4-1.2 0-0.6 0.1-0.4 0.2-0.2 0.3-0.3 0.2-0.1 0.1 0.1 0.2-0.1 0.3-0.1 0-0.2-0.2-0.4 0-0.2 0.3-0.5 0-0.3-0.1-0.4-0.1-0.4 0.1-0.4 0.1-0.4 0.2-0.3 0.9-2.4 0.3-0.2 0.1-0.3-0.1-0.4 0.3-0.1 0-0.2-0.1-0.4 0.3-0.1 0.2-0.2 0.3-0.6 0-0.1 0.4-0.9 0.2 0 0.1-0.5 0.8-1.4 0.1-0.4 0-0.3 0.1-0.2 0.2-0.3 0.2 0 1.1 0 0.5-0.1 1-0.6 0.6-0.2 0.1 0.1 0.1 0.3 0.2 0.1 0.2 0 0.1-0.1 0-0.1 0.3-0.2 0.2-0.5 0.3 0 3.1 0.2 0-0.1 0.7-1 0.1-0.3 0.1-0.9 0.1-0.3 0.2-0.3 0.4 0 0.3-0.2 0.3-0.6 0.2-0.1 0.6 0.1 0.4 0.4 0.3 0.3 0.5-0.2 0.2 0.6 0.4 0.2 1 0.1 1.3 0.8 0.4 0.2 1 0.5 2.7-0.3 0.8 0.2 0.4-0.4 0.5 0.1 0.4 0.3 0.4 0.2 0.2 0 0.3 0 0.3-0.1 0.2-0.2 0.2-0.1 0.3 0 0.5 0.2 1 0 0.3-0.2 0.2 0 0.1 0.3 0.2 0.2 4.7 0.7 1.5-0.2 0.4-0.2 0.4-0.3 0.1-0.7 0.1-0.1 0.2 0.1 0.2 0.2 0.1 0.3-0.1 0.2-0.2 0.6-0.1 0.2 0.6 0.2 0.4-0.3 0.5-0.4 0.5-0.2 0.3 0.1 0.2 0.5 0.3 0.1 0.3 0.1 0.3-0.1 0.3-0.1 0.2-0.1-0.1 0.4 0.1 0.4 0.2 0.4 0.5 0.8 0.1 0.5 0.4 0.8 0.2 0.3 0.2 0.3 0.4 0.2 0.8 0 0.2 0.1 0 0.6-0.3 0.7 0 0.4 0.3 0.2 0.5-0.5 0.7-0.4 0.7-0.1 0.5 0.4 0 0.9-0.2 1 0.1 0.4 0.2 0.3 0.4 0.1 0.3 0 0.2 0.2 0.6 0.7 0.8 0.5 1.9 0.6 0.9 0.3 0.2 0.6 0.1 0.9 0.1 0.5 0.2 0.3 0.2 0.3 0.3 0.3 0.3 0.2 2.1 0.9 0.7 0.7 0.5 0.7 0.3 0.2 1.3 0.6 0.6 0.5 0.4 0.4 0.6 1.2-0.2 0.7 0.2 0.4 1.5 1.3 0.1 0.1 0.1 0.3 0.3 0 0.4 0.1 0.3 0.1 0.2 0.5 0.2 1.9 0.6 1.3 0.1 0.6-0.2 0.7 0.2 0.2 0.1 0.3 0 0.4 0 0.4 0.2 0.2 0.3 0.3 0.4 0.3 0.1 0.5 0.1 0.2 0.4 0.2 0.2 0.1 0.1 0.2-0.2 0.5 0.1 0.2 0.2 0.1 0.4 0 0.2 0.1 0.1 0.2 0.2 0.3 0.1 0.2 0.2 0.3 0.7 3.2 0.3 0.7 1.1 1.4 0 0.6 0.3 0.2 0.7 0.3 0.2 0.3 0.2 0.3-0.1 0.8 0 0.3 0.4 0.7 0.6 0.4 1.2 0.5-0.8 0.4-0.2 0.2 0.1 0.4 0.2 0.3 0.2 0.2 0.1 0.1 0.1 1.2 0.3 1.2 0.8 1.1 0.5 0.7 0 0.5-0.2 0.6 0.3 0.7 0.5 0.5 0.5 0.4 0.8 0.1 0.2 0.1 0 0.3 0.1 0.4 0.1 0.4 0.2 0.2 0.5 0.1 2.8 1.5 0.5 0.5 0.3 0.7 0 0.5 0.1 0.2 0.4 0.4 0.4 0.4 0.2 0 0 0.2-0.1 0.2 0 0.2 0.1 0.6 0.2 0.4 0.3 0.4 0.4 0.5 0.5 0.2 0.6 0.1 0.3 0.3-0.3 0.5 0.3 0.4 0.4 0.6 0.5 0.5 0.5 0.2 0 0.2-0.1 0.3-0.2 0.5 0.1 0.4 0.2 0.2 0.3 0.1 0.2 0.3 0 0.3-0.1 0.7 0.1 0.3 0.1 0.1 0.4 0.3 0.4 0.4 0 0.1 0.7 0.2-0.8 0.7-0.7 0.7-0.7 0.7-0.8 0.7-0.4 0.3-0.4 0.4-0.4 0.4-0.4 0.4-0.2 0.1-0.3-0.2-0.2-0.2-0.2-0.3-1-0.7-0.9-0.8-0.9-0.8-0.9-0.8-0.4-0.3-0.4-0.4-0.4-0.3-0.4-0.3-0.2 0.1-0.3 0.3-0.4 0.3-0.2 0.2-1 0.6-1.1 0.7-1 0.8-0.8 0.9-0.5 1-0.3 1.3-0.2 1.3-0.3 1.2-0.2 1.3-0.3 1.8-0.4 1.6-0.6 0.8-0.3 0.1-0.3 0.1-0.3 0.1-0.2 0-0.2-0.1 0-0.3-0.1-0.2-0.2-0.1-0.9 0.4-0.8 0.3-0.8 0.3-0.9 0.3-0.4 0.2-0.3 0.5-0.3 0.4-0.4 0.4-0.6 0.4-0.7 0.4-0.6 0.4-0.6 0.4-0.6 0.3-0.5 0.3-0.3 0.4 0 0.6 0.1 1 0.1 1 0.1 1 0.1 0.9 0.5 0.2 0.5 0.2 0.4 0.3-0.1 0.8 0.7-0.1 0.4-0.1 0.3-0.2 0.2-0.5-0.1-0.2-0.1-0.1-0.2-0.2 0-0.2 0.2-0.2 0.2 0 0.3 0 0.2-0.1 0.2-0.4 0.1-0.4 0.2-0.1 0.3 0.6 0.6 0.4 0.7 0.1 0.8 0.1 0.6 0.3 0.2 0.7 0 1 0 1 0 0.8 0 0.6 0 0.6 0 0.7-0.1 0.6-0.4 1.7-0.5 1.6-0.6 1.6-1 1.3-0.5 0.5-0.4 0.5-0.5 0.4-0.6 0.5-0.3-1-0.3-0.9-0.2-0.9-0.3-0.9-0.3 0.2-0.3 0.2-0.2 0.3-0.3 0.2-2 1.7-2 1.7-1.9 1.7-2 1.7-1.1 1-1.1 0.9-1.1 1-1 0.9 0.9 0.8 1.1 1 1 1.1 0.7 1.1 0.1 0.6 0.1 0.5 0.2 0.5 0.2 0.5 0.4 0.5 0.3 0.3 0.4 0.1 0.5 0 0.5 0.1 0.5 0.4 0.5 0.5 0.3 0.5 0.3 0.8 0.1 0.9 0 0.9 0.3 0.8 0.6 0.6 0.8 0.3 0.7 0.5 0.2 0.8-0.2 1.2-0.1 1.2 0 1.2 0.2 1.1 0.5 1.2 0.6 1.1 0.7 1.1 0.8 1 0.5 0.6 0.5 0.3 0.5 0.1 0.8 0 0.3 0.1 0.2 0.1 0.2 0.1 0.3 0.3 0.1 0.3 0 0.3-0.1 0.4 0.1 0.3 0.3 0.1 0.4 0 0.5 0 0.4 0.2 0.2 0.3 0.1 0.4 0 0.4 0 0.4-0.8-0.2-1-0.5-0.9-0.3-0.8 0.2-0.1 0.6 0.8 0.5 1.1 0.4 0.7 0.6 0 0.2 0.1 0.1 0 0.2 0.1 0.1 0.7 0.8 1.1 0.3 1 0.2 0.8 0.7 0 0.3-0.1 0.2-0.1 0.3 0.3 0.3 0.5 0 0.6-0.2 0.5-0.1 0.6-0.1 0.5 0.1 0.5 0.1 0.5 0 0.5 0 0.6 0.1 0.3 0.1 0.2 0.2 0.4 0.4 0.8 0.4 0.9 0.6 0.3 0.5-0.9 0.2-0.2 0.1-0.3 0.1-0.3 0.2-0.1 0.2 0 0.3 0.1 0.4 0 0.4 0 0.2-0.4 0.2-0.6 0-0.6-0.1-0.5 0-0.7 0.3-0.7 0.1-0.6 0-0.7-0.2-0.7-0.2-0.7-0.3-0.8-0.3-0.7-0.1-1.9 0-1.8 0.5-1.7 1-1.6 1.1-0.6 0.8-0.9 1.3-0.3 1.2 0.6 0.5 0.6 0.1 0.5 0.4 0.4 0.5 0.5 0.4 0.4 0.6-0.1 0.5-0.5 0.4-0.6 0.3-0.6 0.5-0.1 0.5 0.2 0.6 0.2 0.9 0.3 0.8 0.1 0.7 0 0.7-0.1 0.8-0.4 1.5-0.5 1.5-0.4 1.4-0.3 1.5-0.6-0.4-0.5-0.3-0.6-0.3-0.5-0.3-0.6-0.2-0.5 0.1-0.5 0.1-0.6 0.2-1-0.1-1.2-0.5-1.1-0.7-0.7-0.9-0.3-0.5-0.1-0.5-0.2-0.6-0.2-0.5-0.3-0.5-0.3-0.5-0.4-0.5-0.4-0.4-1-0.7-0.9-0.2-1.1 0.2-1.1 0.2-0.1-0.2 0-0.2 0-0.2 0-0.2-0.6 0.5-0.6 0.6-0.6 0.7-0.5 0.6-0.5 0.3-0.6 0.1-0.6-0.1-0.6 0-0.9 0-0.8-0.1-0.8 0-0.8-0.1-0.3-0.3-0.3-0.6-0.3-0.7-0.1-0.6 0.5 0.2 0.6 0.2 0.6 0.1 0.6 0.1-0.1-0.5 0-0.7-0.2-0.7-0.2-0.4-0.4-0.3-0.5-0.4-0.5-0.2-0.4 0-1.1 0-1.2-0.3-1-0.6-0.7-0.9-0.4-0.8-0.5-1.1-0.5-1-0.6-0.6-1-0.3-1-0.3-1.1-0.3-1-0.4-1.2-0.3-1.2-0.4-1.2-0.4-1.2-0.3-0.8-0.1-0.8 0.1-0.9 0.2-0.8 0.1-2.1 0.2-2.1 0.2-2.1 0.3-2.2 0.2-0.9 0.1-0.6 0.1-0.4 0.4-0.5 0.8-0.7 0.9-0.6 0.8-0.7 0.8-0.6 0.9-0.4 0.6-0.6 0.9-0.7 0.7-0.6 0.1-0.1 1.4 0 1.3 0 1.4-0.1 1.3-0.6-0.5-0.6-0.5-0.7-0.5-0.6-0.4-1.1-0.5-1.2-0.5-1.3-0.3-1.2-0.2-1.2-0.3-1.3-0.5-1.2-0.8-0.7-1.1-0.1-1.3 0-1.2-0.1-1.3-0.5-1-0.9-0.7-1.2-0.7-1.1-0.7-0.7-1-0.3-0.8-0.4-0.6-0.4-0.5-0.6-0.5-0.4-0.4-0.4-0.3-0.2-0.4-0.1-0.5 0.2-0.9 0.2-0.8 0.5-0.8 0.5-0.8 0.2-0.1 0.4-0.1 0.3-0.1 0.2-0.2-0.1-0.3-0.2-0.4-0.3-0.3-0.3-0.3-0.5-0.4-0.3-0.5-0.3-0.5 0-0.7 0.1-0.5 0.3-0.4 0.4-0.3 0.4-0.3 0.3-0.2 0.3-0.2 0.3-0.1 0.3-0.2 0.2-0.4 0.3-0.3 0.2-0.3 0.3-0.3 0.3-0.5 0.1-0.4 0.3-0.4 0.5-0.3 0.4-0.5 0-0.9 0-1-0.1-0.7 0-0.2 0-0.2 0-0.1 0-0.2-0.1-0.9-0.1-1-0.1-0.9-0.1-0.9-0.2-1.6-0.1-1.7-0.1-1.6 0.1-1.6 0.5-1.6 0.7-1.4 0.7-1.5 0.3-1.6-0.4-1.6-1.2-1.4-1.4-1.3-1.3-1-1.1-1-1.2-1-1.1-1-1.2-1-0.3-0.4-0.4-0.3-0.3-0.3-0.4-0.3z\",\n\tMXCOL:\n\t\t\"M148.6 487.2l1.5 0 0.1 0 0 0.2-0.1 0.3-0.1 0.1-0.2 0.1-0.2 0.1-0.2 0-1 0.1-0.5-0.2 0-0.4 0.7-0.3z m109.9-13.5l0.4 0.1 0.4 0.5 0.2 0.5 0 0.6-0.3 0.5-0.5 0-0.6 0-0.5 0.3-0.5-0.4-0.4-0.4-0.4-0.2-1.2-0.6 0-0.2 0.1-0.5 0.3-0.7 0.4-0.6 1.1-1 0.6 0.2 0.6 0.6 0.5 0.6-0.2 0.7z m3.8-16.7l0.3 0.2 0.2 0.3 0.3 0.6-0.7 0.5-0.4 0.3-0.1 0.3 0 0.1-0.1-0.1-0.1-0.2 0-0.3 0.1-0.3 0.4-0.6 0.1-0.3 0-0.5z m203 20l-1.5-1.5-4.5-3.3-0.8-0.8-3.2-1.6-2.5-1.3-1.8-0.6-0.9-0.3-0.6-0.3-0.6-0.2-0.5-0.2 0.1-0.9 0.6-0.1 0.2-0.3-0.1-0.5-0.7-0.5-0.3-0.1-0.3 0.4-0.2-0.2 0.1-0.5-0.4-0.2-0.5 0.1-0.3 0.2 0.1 0.5-0.2 0-0.2-0.2-0.3-0.2-0.3 0.4-0.4 0.3-0.3-0.7-1-0.4-0.5-0.3-2.6-0.6 0-0.7 0.4-0.4 0.4-0.4 0.4-0.4 0.3-0.7 0.1-0.4 0.3-0.2 0.8 0.1 0.2 0.2 0.3 0.3 0.2 0.1 0.3-0.1 0-0.2 0-0.2 0-0.2 0.1-0.2 0.1-0.2 0.2-0.2 0.3-0.1 0.2-0.1 0.4-0.2 0.2 0 0.2 0.2 0.3 0.3 0.3 0 0.4-0.1 0.4-0.2 0.3 0 0.3-0.1 0.3 0 0.3-0.1 0.2-0.1 0.5-0.4 0.5-0.4 0.5-0.1 0.7 0 0.5 0 0.3-0.4 0.2-0.5 0.2-0.6 0.3-0.4 0.4-0.2 0.4-0.3 0.1-0.6 0.1-0.7 0.2-0.5 0.4-0.5 0.6-0.5 0.3-0.3 0.3-0.4 0.4-0.4 0.3-0.3 0.1 0.1 0 0.1 0.1 0.1 0 0.2 0 0.2 0.1 0.1 0 0.1-0.1 0.1 0.7 0.5 0.8 0.4 0.7 0.4 0.8 0.5 0.4 0.3 0.6 0.2 0.6 0.3 0.5 0.2 0.6 0.2 0.5 0.2 0.5-0.1 0.4-0.6 0.4-0.1 0.4 0 0.5 0 0.4-0.1 0.8-0.4 0.6-0.7 0.6-0.7 0.7-0.4 0.4 0.4 0.3 0.6 0.2 0.7 0.2 0.6 0.3 0.5 0.5 0.3 0.5 0.3 0.4 0.5 0.1 0.4 0.1 0.3 0.2 0.3 0.3 0.2 0.2 0.2 0.4 0.1 0.3 0.2 0.1 0.2 0 0.3-0.1 0.3-0.2 0.3-0.1 0.4 0 0.5 0.1 0.6 0.1 0.6 0.1 0.5-0.2 0.9-0.4 1.1-0.2 1.1 0.1 0.8 0.5 0.7 0.3 0.7 0.3 0.8 0.1 0.8-0.3 0-0.2 0.2-0.1 0.4-0.1 0.3-0.1 0.1-0.2 0-0.2 0-0.1 0.1-0.1 0.1 0 0.1 0.1 0.2 0 0.1-0.2 0.1-0.4 0.2-0.4 0.2-0.2 0.2-0.3 0.2-0.3 0.1-0.2-0.1-0.4-0.2-0.1 0.1-0.1 0.1-0.1 0.2 0.1 0.2 0 0.1 0 0.2 0 0.1 0 0.1-0.2 0.4 0 0.4 0 0.4-0.2 0.4-0.3 0.4-0.3 0.1-0.4 0-0.5 0.2-0.2 0.3-0.2 0.4-0.1 0.3-0.1 0.4-0.2 0.5-0.3 0.3-0.4 0.3-0.3 0.2z\",\n\tMXDUR:\n\t\t\"M373.6 261.4l0.8 0.1 0.9 0 0.8 0.1 0.8 0.1 0.5 0.1 0.7 0.2 0.6 0 0.6 0 0.5-0.4 0.6-0.5 0.5-0.6 0.5-0.5 0.6-0.4 0.5-0.5 0.5-0.5 0.6-0.5 0.1-0.1 0.1-0.1 0.2-0.1 0.1-0.1 0.4-0.4 0.4-0.3 0.2-0.4 0.1-0.6 0.1-0.9 0-0.8 0.1-0.9 0-0.9 0-1.2 0.1-1.1 0.3-1 0.9-0.5 0.6 0 0.5 0.1 0.5-0.1 0.4-0.4 0.4-0.6 0.2-0.6 0.2-0.7 0.2-0.7 0.1-1.1-0.2-1.2-0.5-1.1-0.4-1-0.4-1-0.3-1 0.1-0.9 0.9-0.7 1.2-0.3 1.3-0.4 1.2-0.4 1.3-0.4 0.6-0.2 0.3-0.3 0.1-0.4-0.1-0.7-0.2-0.6-0.2-0.7-0.2-0.6-0.2-0.7 0.1-0.5 0.4-0.4 0.6-0.5 0.4-0.3 0.2-0.2 0-0.5 0.1-0.4 0-0.4 0-0.8 0-0.9 0.1-0.9 0.4-0.7 0.4-0.2 0.4 0.2 0.4 0.5 0.3 0.4 0.3-0.6 0.3-0.6 0.3-0.6 0.3-0.6 0.1-0.3 0.2-0.2 0.2-0.2 0.1-0.3 0.5 0.4 0.4 0.3 0.4 0.3 0.5 0.4 1.1 0.8 1.1 1 1.1 0.8 1.2 0.7 0.8 0 0.7 0.1 0.8 0 0.7-0.2 0.7-0.1 0.5 0.5 0.4 0.7 0.4 0.7 0.6 0.6 0.5 0.6 0.5 0.5 0.7 0.5 0.8 0.4 0.8 0.5 0.8 0.4 0.8 0.5 0.8 0.5 0.9 0.4 0.8 0.5 0.8 0.4 0.6-0.1 0.8-0.4 0.9-0.5 0.5-0.3 0.9-0.4 0.8-0.4 0.8-0.4 0.8-0.5 0.4 0.4 0.6 0.8 0.7 1 0.4 0.5 0.5 0.3 0.3-0.4 0.4-0.6 0.4-0.4 0.6-0.1 0.7 0.1 0.7 0.1 0.7 0.1 1.7 0.4 1.6 0.5 1.6 0.8 1.4 1.1 1 0.9 1.2 1 1.1 0.3 1.1-1 1.3-1.7 1.3-1.8 1.3-1.7 1.3-1.8 1-1.4 0.9-1.5 1.1-1.3 1.2-1.1 1.1-0.4 1.1-0.1 1.2-0.1 1.1 0 0.7-0.1 0.7 0.1 0.6 0.2 0.7 0.3 2.3 0.9 2.2 0.9 2.3 1 2.2 0.9 0.4 0.3 0.3 0.3 0.4 0.3 0.3 0.4 1.2 1 1.1 1 1.2 1 1.1 1 1.3 1 1.4 1.3 1.2 1.4 0.4 1.6-0.3 1.6-0.7 1.5-0.7 1.4-0.5 1.6-0.1 1.6 0.1 1.6 0.1 1.7 0.2 1.6 0.1 0.9 0.1 0.9 0.1 1 0.1 0.9 0 0.2 0 0.1 0 0.2 0 0.2 0.1 0.7 0 1 0 0.9-0.4 0.5-0.5 0.3-0.3 0.4-0.1 0.4-0.3 0.5-0.3 0.3-0.2 0.3-0.3 0.3-0.2 0.4-0.3 0.2-0.3 0.1-0.3 0.2-0.3 0.2-0.4 0.3-0.4 0.3-0.3 0.4-0.1 0.5 0 0.7 0.3 0.5 0.3 0.5 0.5 0.4 0.3 0.3 0.3 0.3 0.2 0.4 0.1 0.3-0.2 0.2-0.3 0.1-0.4 0.1-0.2 0.1-0.5 0.8-0.5 0.8-0.2 0.8-0.2 0.9 0.1 0.5 0.2 0.4 0.4 0.3 0.4 0.4 0.6 0.5 0.4 0.5 0.4 0.6 0.3 0.8 0.7 1 1.1 0.7 1.2 0.7 0.9 0.7 0.5 1 0.1 1.3 0 1.2 0.1 1.3 0.7 1.1 1.2 0.8 1.3 0.5 1.2 0.3 1.2 0.2 1.3 0.3 1.2 0.5 1.1 0.5 0.6 0.4 0.7 0.5 0.6 0.5 0.6 0.5 0.1-1.3 0-1.4 0-1.3 0.1-1.4 0.6-0.1 0.7-0.7 0.6-0.9 0.4-0.6 0.6-0.9 0.7-0.8 0.6-0.8 0.7-0.9 0.5 1 0.5 0.9 0.6 0.9 0.6 0.9 0.8 1 1 1.1 0.7 1.1 0.3 1.2 0 2 0 2.1 0.1 2 0 2 0 0.5 0 0.6 0 0.5 0 0.5 0 0.9-0.1 0.4-0.3 0.2-0.8 0-1.3 0.2-1.3 0.2-1.3 0.4-1.3 0.4-1.3 0.2-1.2 0-1.3-0.2-1.3-0.2-2.6-0.6-2.5-0.5-2.6-0.5-2.5-0.6-1.1 0.3-1.3 0.4-1.2 0.6-0.8 0.8-0.1 0.5 0 0.6-0.1 0.5-0.2 0.4-0.5 0.3-0.6 0.1-0.6-0.1-0.5 0-0.4 0.1-0.4 0.3-0.2 0.4 0.1 0.5-0.2 0.4-0.4 0.2-0.6 0-0.4 0.1-0.4 0.3-0.2 0.4-0.2 0.4-0.2 0.4-0.6 1-0.5 0.8-0.6 0.7-0.9 0.6-0.2 0.1-0.3 0.1-0.2 0.1-0.2 0-0.7 0.4-1.2 0.5-1.1 0.6-0.3 0.5 0.3 0.6-0.1 0.7-0.1 0.8 0.2 0.8-0.1 1-0.9 0.4-0.9 0.2 0.2 0.8 0.5 0.5 0.5 0.5 0.3 0.6 0.1 0.7-0.2 0.5-0.2 0.4-0.3 0.4-0.2 0.4 0.3 0.8 0.7 0.5 0.7 0.5 0.4 0.8-0.1 0.6-0.3 0.8-0.4 0.5-0.5-0.2-0.7-0.7-0.6-0.2-0.6 0.4-0.4 0.9-0.1 0.6 0 0.6-0.2 0.6-0.3 0.5-0.8 0.6-0.9 0.6-0.8 0.6-0.9 0.6-0.6 0.4-0.3 0.3-0.2 0.5-0.1 0.8-0.1 1.2-0.1 1.2-0.1 1.2-0.1 1.2 0 0.6-0.1 0.8-0.1 0.8-0.3 0.4-0.6 0.3-0.4 0.2-0.2 0.5-0.1 0.7-0.1 3.4-0.1 3.4-0.1 3.4-0.1 3.3-0.2 1.3-0.3 1.3-0.4 1.2-0.4 1.2-0.5 1.6-0.4 1.6-0.5 1.6-0.4 1.6-0.2-1.2-0.1-1.2-0.2-1.3-0.2-1.2-1 0.5-1 0.4-1 0.5-1.1 0.4-0.7 0.1-0.9-0.4-0.8-0.5-0.7-0.5-0.8-0.7-0.4-0.9-0.3-1-0.2-1.1-0.1-0.4-0.1-0.4-0.2-0.4-0.2-0.3-0.6-0.4-1-0.6-0.9-0.5-0.6 0-0.9 0.6-0.8 0.7-0.9 0.6-0.8 0.6-0.6 0.6-0.8 0.6-0.8 0.5-0.8-0.1-0.1-0.6 0-1 0.1-0.9 0-0.8 0.1-0.8 0.2-0.5 0.3-0.4 0.5-0.6 0.4-0.4 0.7-0.6 0.7-0.7 0.2-0.4-0.3-0.8-0.3-0.8-0.4-0.8-0.3-0.9-0.3-0.6-0.3-0.4-0.4-0.3-0.6-0.3-1.3-0.7-1.4-0.8-1.3-0.6-1.4-0.5-1.5-0.2-1.5 0-1.5 0.1-1.5 0-0.1-0.9 0-0.9 0-0.9 0-0.9-1.2 0.1-1.2 0.1-1.2-0.1-1-0.5-0.4-0.4-0.5-0.6-0.5-0.5-0.4-0.3-0.2-0.2-0.2-0.3 0-0.3-0.2-0.2-0.4-0.4-0.4-0.2-0.4-0.3-0.3-0.5-0.1-0.3 0.1-0.4 0-0.4-0.1-0.3-0.3-0.4-0.2-0.4-0.1-0.3 0.1-0.5 0.1-0.3 0-0.3-0.1-0.3-0.2-0.3-0.2-0.2 0-0.3 0.1-0.2 0.1-0.3-0.3-0.7-0.5-0.7-0.5-0.6-0.1-0.7-0.5-0.1-0.4-0.1-0.5-0.1-0.4-0.2-0.5-0.5-0.3-0.6-0.1-0.7-0.2-0.7-0.2-0.6-0.3-0.5-0.3-0.5-0.1-0.5-0.1-0.6-0.1-0.5 0-0.5-0.1-0.6-0.2-1.2-0.2-1.3 0-1.2 0.1-1.2 0.4-1 0.5-0.9 0.4-1 0.3-1-0.7 0.2-0.7 0.2-0.6-0.2-0.5-0.5-0.4-0.8-0.4-0.8-0.3-0.8-0.3-0.8-0.3-0.8-0.4-1-0.4-0.9-0.5-0.7-0.7-0.7-0.7-0.6-0.7-0.7-0.8-0.6-0.2-0.2-0.3-0.3-0.4-0.1-0.3-0.2-1.2-0.2-1 0.2-1.1 0.5-0.9 0.8-0.4 0.4-0.3 0.5-0.3 0.4-0.3 0.4-0.5 0.2-0.5 0-0.4 0-0.5 0-0.6 0.1-0.5-0.1-0.4-0.2-0.6-0.4-0.5-0.4-0.5-0.5-0.5-0.5-0.5-0.5-0.3-0.4-0.1-0.5 0-0.5 0-0.5 0-0.7-0.1-0.5-0.2-0.5-0.3-0.6-0.2-0.3-0.2-0.4-0.2-0.4-0.1-0.4-0.3-0.5-0.2-0.4-0.4-0.3-0.4-0.4-0.6-1.1-0.4-1.2-0.6-1-1-0.6-0.5-0.3-0.4-0.4-0.2-0.5-0.3-0.6-0.4-0.3-0.4-0.1-0.4 0-0.5 0-0.5-0.1-0.4-0.1-0.4-0.3-0.2-0.6 0-0.4 0-0.4-0.1-0.4-0.2-0.4-0.4-0.3-0.5-0.1-0.5-0.2-0.4-0.3-0.3-0.4-0.3-0.6-0.1-0.7-0.2-0.5-0.5-1.3-0.4-1.4-0.4-1.3-0.4-1.3-0.3-1.5 0-1.5 0.2-1.5 0.2-1.5 0.2-1.3 0.3-1.5 0.3-1.4 0.6-1.2 0.6-0.6 0.5-0.5 0.5-0.5 0.3-0.7 0.3-0.6 0.5-0.5 0.5-0.5 0.4-0.5z\",\n\tMXGUA:\n\t\t\"M512.5 425.3l0.1-0.5 0.4-1 0.6-1 0.7-0.9 0.9-0.9 0.7-0.8 0.4-1-0.3-1.3 0-0.1-0.1-0.1 0-0.1-0.1 0-0.7-0.8-0.7-0.6-0.8-0.6-0.7-0.8-0.3-0.9 0.2-1 0.4-0.9 0.5-0.9 0.1-0.1 0.1-0.2 0.1-0.2 0-0.2 0.3-0.5 0.3-0.5 0.3-0.5 0.3-0.5 0.8-1.3 0.8-1.2 0.9-1.3 1-1.1 0.2-0.3 0.1-0.2 0.1-0.3 0.1-0.3 0.3-0.5 0.4-0.2 0.4-0.3 0.4-0.3 0.2-0.3 0.2-0.4 0.2-0.4 0.2-0.3 0.4-0.3 0.6 0 0.5 0 0.5 0 0.4 0 0.4-0.2 0.4-0.2 0.3-0.2 0.8-0.7 0.7-0.6 0.6-0.8 0.5-0.9 0.1-0.6 0.1-0.6-0.1-0.6-0.1-0.6-0.6-0.9-0.7-0.9-0.5-1-0.1-1.1 0.7-1 1.2-0.8 1-0.8 0.1-1-0.4-0.6-0.4-0.7-0.5-0.6-0.2-0.8 0.2-0.7 0.5-0.7 0.7-0.7 0.5-0.5 1.2 0.5 0.9 0.1 0.8-0.4 1-0.7 0.1 0 0.1-0.1 0.1 0 0.7-0.3 0.7-0.1 0.6 0.2 0.5 0.6 0.1 0.4-0.1 0.5 0.1 0.4 0.1 0.4 0.3 0.3 0.3 0.3 0.3 0.3 0.4 0.1 1 0.2 1-0.2 1.1-0.3 1-0.1 1 0 0.9 0.1 1 0.2 0.9 0.4 0.4 0.4 0.5 0.4 0.4 0.5 0.5 0.4 1.3 1.1 1.4 1.1 1.3 1 1.4 1.1 0.5 0.5 0.6 0.5 0.6 0.5 0.7 0.5 0.9-0.1 1.1 0.1 1-0.2 0.6-0.5 0.2-0.6 0.2-0.7 0.1-0.7 0.1-0.6 0.2-0.4 0.1-0.4 0.2-0.4 0.2-0.4 0.2-0.2 0.3-0.3 0.3-0.2 0.3-0.2 0.4 0 0.2 0.1 0.1 0.2 0.3 0.2 0.3 0.1 0.3 0.1 0.3 0.1 0.3 0.2 0.5 0.2 0.6 0.3 0.5 0.2 0.5 0.2 0.4 0.2 0.3 0.2 0.3 0.1 0.4 0.1 1 0.3 0.9 0.3 1 0.3 0.9 0.3 0.1 0 0 0.1 0.1 0 0.1 0 1.1 0.9 1.1 1.2 1.2 0.9 1.2 0.1 1.1 0 0.8 0.3 0.8 0.4 0.9 0.4 0 0.4-0.2 0.4 0 0.4 0.1 0.4 0.1 0.5 0 0.2-0.1 0.3-0.1 0.4 0.1 0.9 0.5 0.5 0.8 0.1 0.8 0.1 0.3 0.3 0.1 0.4-0.2 0.4-0.4 0.3-0.3 0.2-0.4 0.1-0.3 0.2-0.3 0.2-0.2 0.3-0.1 0.3-0.1 0.3-0.4 0.2-0.8 0.2-0.8 0.2-0.8-0.2-0.5-0.5-0.4-0.4-0.4-0.2-0.4-0.1-0.5-0.1-0.7 0-0.8 0.3-0.7 0.4-0.4 0.6-0.4 1.1-0.2 1.1-0.1 1.1-0.1 1.1 0 0.7-0.1 0.8-0.1 0.7-0.3 0.6-0.3 0.3-0.2 0.1-0.3 0-0.3 0.1-0.2 0.2-0.1 0.3-0.2 0.3-0.3 0.1-0.6 0-0.4-0.3-0.4-0.6-0.4-0.5-0.1-0.1-0.1 0-0.1-0.1-0.5 0-0.5 0.2-0.5 0.4-0.4 0.3-0.6 0.2-0.6 0-0.5-0.1-0.6-0.1-0.9-0.3-0.2-0.6-0.1-0.6-0.4-0.6-0.6 0.1-0.4 0.5-0.4 0.7-0.3 0.6-0.4 0.4-0.1 0.5-0.1 0.5 0 0.6-0.1 0.5-0.2 0.5-0.2 0.4-0.3 0.5-0.6 1.3-0.1 1.3 0.3 1.2 0.6 1.3 0.4 0.5 0.3 0.6 0.4 0.6 0.3 0.5 0.1 1.2 0 1.1 0.1 1 0.4 1.1 0.1 0.1 0.1 0.1 0.1 0.2 0.1 0.1 0.6 0.7 0.6 0.6 0.5 0.6 0.3 0.8 0.3 0.7 0.6 0.3 0.5 0.3 0.3 0.7 0.3 0.1 0.3 0.1 0.4 0.1 0.2 0.2-0.5 0.5-0.3 0.3-0.2 0.4-0.2 0.5-0.1 0.3-0.3 0.4-0.3 0.4-0.2 0.2-0.2-0.1-0.2 0-0.3 0-0.1 0-0.2 0.2 0.1 0.2 0.1 0.1 0 0.1-0.1 0.2-0.2 0.3-0.1 0.3 0 0.3 0.3 0.7 0.3 1.1 0 0.9-0.5 0.4-0.7 0-0.7 0-0.7 0.1-0.6 0.2-0.4 0.3-0.2 0.6-0.2 0.4-0.4 0.2-0.3-0.2 0-0.3 0-0.3-0.1-0.4-0.4-0.1-0.7 0-0.7 0.1-0.5 0-0.5 0-0.5 0-0.5 0.1-0.5 0-0.6 0-0.3 0.1-0.1 0.3-0.1 0.6-0.7-0.1-0.5 0-0.3-0.3-0.3-0.5-0.2-0.4-0.2-0.2-0.3-0.2-0.3-0.4-0.4 0.6-0.4 0.4-0.5 0.2-0.6 0.2-0.5 0.1-0.5 0.1-0.4-0.1-0.5-0.2-0.7-0.2-0.8-0.4-0.7-0.5-0.1-0.7 0.4-0.4 0.7-0.3 0.5-0.3 0.1-0.6-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1 0.1-0.3 0-0.2 0-0.3-0.1-0.2-0.6-0.2-0.7-0.1-0.8 0.1-0.6 0.2-0.4 0.1-0.3-0.1-0.4-0.2-0.3-0.3-0.6 0.2-0.3 0.6-0.2 0.8-0.4 0.6-0.6 0.2-0.6-0.1-0.6-0.1-0.5-0.3-0.4-0.1-0.3 0.1-0.4 0.1-0.4 0-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.3 0.1-0.2 0.1-0.3 0.2-0.3 0.1-0.8-0.5 0-0.7 0.2-0.9 0.1-0.9 0-0.2-0.1-0.2-0.1-0.2-0.1-0.1-0.1-0.2 0-0.1 0.1-0.1 0.1-0.1 0-0.2 0.1-0.2 0-0.1 0-0.3-0.1-0.2-0.3-0.1-0.1-0.1-0.1-0.3 0.3-0.4 0.5-0.3 0.6-0.3 0.2-0.4-0.1-0.5-0.6-0.4-0.6-0.1-0.5-0.1-0.4 0-0.2-0.2-0.1-0.3 0.1-0.4-0.5 0.1-1.1-0.1-0.5 0-0.3 0.1-0.6 0.3-0.2 0-1 0.1-0.2 0-0.1 0.3 0 0.3 0 0.3 0 0.3-0.1 0.3-0.3 0.4 0 0.2-0.2 0.5-0.7 0.9-0.3 0.4-0.4-0.3-0.6-0.1-1 0-0.8-0.2-0.2 0-0.3 0-0.3 0.3-0.2 0.1-0.2-0.1-0.4-0.3-0.3 0-0.3 0-0.3 0.3-0.3 0.1-0.7 0-0.3-0.2-0.2-0.3-0.3-0.8-0.1-0.1-0.1-0.1-0.1-0.1-0.3-2.8-0.2-0.7-0.4-0.3-0.5 0.2-0.3 0.8-0.4 0.2-0.3-0.3 0.1-0.6 0.5-1.2-3 0.5z\",\n\tMXGRO:\n\t\t\"M510.5 500.3l0-0.1 0.1-0.1 0.2-0.4 0.1-0.3 0.1-0.3-0.1-0.4-0.2-0.4-0.3-0.5-0.2-0.5 0-0.9 0-0.9 0.1-0.9 0.2-0.8 0.1-0.3 0-0.3 0.2-0.2 0.2-0.3 0.3-0.3 0.2-0.1 0.3-0.1 0.5 0 0.6 0 0.4-0.1 0.5-0.1 0.5-0.1 0.4 0 0.4 0.1 0.4-0.1 0.4-0.3 0.3 0 0.3 0 0.2 0.1 0.3 0 0.3-0.1 0.2-0.2 0-0.2 0.1-0.3 0.5-0.6 0.5-0.7 0.3-0.6 0-0.8-0.3-2.1-0.2-2.1 0.4-1.9 1.2-1.6 1-0.4 1.2 0 1.3 0.1 1.1 0 0.5 0.1 0.4 0.1 0.5 0.1 0.3 0.4 0.3 0.5 0.2 0.4 0.2 0.4 0.5 0.4 0.6 0.3 0.5 0.3 0.7 0.2 0.6 0.1 1.6-0.3 1.5-0.4 1.5-0.4 1.5-0.4 0.7-0.4 4.6 0.3 1.4-0.3 0.7 0 0.6 0.3 0.1 0.2 0 0.4 0.1 0.3 0.1-0.1 0.2-0.1 0.4 0 0.2 0.1 0.1 0.4 0.2 0.7 0.9-0.3 0.3-0.3-0.4-0.4 3.1 0 0.3 0.2 1 1.1 0.4 0.3 0.5 0.3 0.4 0.1 0-0.1 0.2-0.4 0-0.1 0.1 0.1 0.3 0.1 0.1 0 0.1 0.2 0.1 0.3 0.1 0.4-0.1 0.3-0.2 0.3-0.3 0.2-0.2 0.4 0 0.5 0.3 0.4 0.6 0.6 1-0.9 0.1 0 0.3 0.1 0.2 0.5 0.4-0.6 0.4-0.7 0.1-0.6-0.2-0.5-0.7-0.6-0.8-0.6-0.7-0.6-0.8-0.5-0.5-0.5-0.3-0.5-0.1-0.6 0-0.8-0.1-0.7-0.1-0.7-0.2-0.6-0.3-0.7-0.1-0.7 0.3-0.4 0.3-0.5 0.2-0.6-0.3-0.5-0.5-0.5-0.5-0.5 0-0.6 0.4-0.4 0.3-0.5 0.4-0.5 0.5-0.3 0.6 0.1 0.4 0.5 0.3 0.7 0.1 0.7 0.3-0.3 0.3-0.3 0.3-0.3 0-0.3 0.1-0.3 0.2-0.3 0.3-0.3 0.3-0.3 1.1 0.4 1 0.3 1.1 0.1 1.2 0 0.4 0.1 0.2 0.1 0.1 0.3 0 0.5 0.1 0.3 0.2 0.2 0.2 0.3 0 0.3-0.3 0.7-0.3 0.5 0 0.6 0.3 0.6 0.2 0.4 0 0.4 0 0.3-0.1 0.4 0.1 0.3 0.2 0.3 0.2 0.3 0.3 0.3 0.5 0.5 0.5 0.5 0.4 0.6 0.2 0.7 0 0.8-0.3 0.8-0.2 0.7 0.3 0.6 0.3 0.2 0.2 0.3 0.2 0.3 0.2 0.2 0.3 0.3 0.4 0.1 0.4 0 0.4-0.1 0.3-0.2 0.2-0.3 0.2-0.3 0.4-0.1 0.6-0.5 0.6-0.5 0.7-0.5 0.6-0.6 0.7-0.7 0.4-0.7 0.5-0.8 0.4-0.9 0-0.1 0.1-0.1 0.1-0.2 0.6-0.1 0.6-0.1 0.5-0.2 0.6-0.1 0.6-0.3 0.6-0.2 0.6-0.1 0.6-0.2 0.1-0.1 0.2 0 0.1-0.1 0.2 0 0.6-0.1 0.5-0.1 0.4 0.1 0.5 0.4 0.3 0.4 0.3 0.3 0.3 0.1 0.5-0.5 0.3-0.3 0.1-0.3 0-0.3 0-0.4 0.2-0.3 0.2-0.3 0.3-0.1 0.3-0.3 0.2-0.2 0.3-0.3 0.3-0.2 0.2-0.2 0.7-0.6 0.6 0.2 0.5 0.6 0.5 0.6 0.4 0.1 0.2 0.2 0.1 0.3 0.2 0.3 0.4 0.3 0.7 0.2 0.7 0 0.4-0.1-0.2 0.5-0.2 0.6 0.1 0.4 0.6 0.2 0.5 0.1 0.2 0.5 0.1 0.5 0.6 0.2 0.2 0.3 0.2 0.4 0.2 0.4 0.2 0.3 0.3 0.4 0.3 0.3 0.3 0.2 0.4 0 0.6 0 0.1 0.5 0.1 0.6 0.2 0.3 0.6 0 0.6 0 0.6 0 0.6 0 0.2-0.3 0-0.4 0.1-0.4 0-0.4 0.2-0.7 0.4-0.6 0.5-0.4 0.8 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0 0.3 0.1 0.4 0 0.3 0.1 0.4 0.2 0.3 0.2 0.2 0.2 0.2 0.1 0.2 0.1 0.3 0.3 0.8 0.7 0.7 0.6 0.7 0.2 1 0.1 0.5 0 0.4 0 0.5 0 0.5 0.2 0.4 0.1 0.3 0.2 0.4 0 0.4 0.2 0 0.2-0.1 0.2 0 0.2-0.1 0 0.5 0 0.3 0.2 0.4 0.3 0.3 0.5 0.3 0.4-0.2 0.3-0.3 0.4 0.2 0 0.6 0.1 0.6 0.2 0.5 0.4 0.2 0.5 0.1 0.7 0.1 0.7 0.1 0.3 0.2 0.4 1.4 0.7 1.1 1.1 0.7 1.3 0.6 0.6 0.1 0.6 0.2 0.6 0.1 0.6 0.1 0.2 0.1 0.3 0.2 0.3 0.1 0.2 0 0.9 0.2 1 0.1 1-0.1 0.9-0.2 0.5-0.1 0.3 0 0.3 0.1 0.4 0.3 0.4 0.4 0.4 0.5 0.4 0.4 0.4 0.4 0.5 0.6 0.1 0.5-0.2 0.5-0.3 0.7-0.2 0.5-0.2 0.6-0.1 0.6-0.1 0.5-0.1 0.4-0.1 0.4-0.1 0.4-0.1 0.4-0.2 0.8-0.1 0.7 0.1 0.7 0.4 0.6 0.2 0.1 0.1 0.2 0 0.1-0.2 0.2-0.3 0.3 0 0.4 0 0.4 0.1 0.4 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0 0 0.1 0.2 0.2 0.2 0.2 0.2 0.3 0.2 0.2 0.1 0.4-0.1 0.4-0.1 0.5-0.1 0.3 0.1 0.1 0 0.1 0.1 0.1 0.3 0.6-0.1 0.5-0.2 0.6-0.1 0.7 0.2 0.5 0.3 0.4 0.6 0.1 0.6 0.2 0.4 0.7 0.4 0.8 0.4 0.7 0.7 0.1 0.4 0 0.4 0 0.4 0 0.4 0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.1 0.1 0.9 1.1 0.9 1.1 0.9 1.2 0.8 1.2 0.2 0.3 0.1 0.3 0 0.3 0 0.4-0.1 0.3-0.1 0.3-0.1 0.3-0.2 0.3-0.2 0.4-0.2 0.4-0.3 0.4-0.3 0.4-0.1 0.3 0 0.3 0 0.3 0 0.3-0.1 0.6-0.1 0.5-0.1 0.6 0 0.5-0.1 0.5-0.2 0.4-0.3 0.3-0.4 0.3 0 0.1-0.1 0.1 0 0.1-0.1 0.1-0.2 0.2-0.1 0.1-0.2 0.1-0.2 0-0.4 0.3-0.3 0.1-0.4 0.1-0.5-0.1-0.3-0.1-0.4 0-0.4 0.1-0.3 0.1 0.2 0.9 0.2 0.8 0.2 0.8-0.3 0.9 0 0.1-0.1 0.1 0 0.1-0.1 0-0.6 0.2-0.4 0-0.5-0.1-0.5 0-0.8 0.3-0.4 0.6 0.1 0.6 0.4 0.7 0.4 1.1-0.2 0.9-0.6 0.8-0.7 0.7-0.7 0.4-0.7 0.1-0.8 0-0.8 0.1-0.8 0.2-0.5 0.2-0.5 0.4-0.5 0.5 0 0.1-0.4-0.2-0.1 0 0.1-0.1 0.1-0.1-0.1-0.3-0.4-0.6-1.1-0.9-2.3-2.1-1-1.5-0.9-0.9-0.1-0.2-0.2-0.2-0.4 0.1-0.5-0.2-0.2 0.2-0.2 0-0.3 0.1-0.4 0.1-0.2 0.2-0.1 0.2 0 0.1-1-0.2-0.5 0-1.1-0.4-5.7-1.8-4.6-1.3-2-0.5-3.4-0.5-1.8 0-1.4 0.1-0.9-0.2-0.8-0.3-0.7-0.2-0.8-0.4-0.7-0.3-1.6-1.3-0.7-0.5-0.2 0-0.1 0.2-0.4-0.1-0.1-0.2-0.3-0.1 0.3-0.1 0.3 0.1 0.1-0.2-0.2-0.2-0.1 0-0.2 0.1-0.3-0.1-0.2 0-0.2-0.2 0.2 0 0-0.3 0.2-0.3 0.1 0.1 0.2-0.1 0-0.2-0.2-0.3-0.2-0.1-0.4-0.1-0.5 0.2-0.3 0.2 0.1 0.2 0.2-0.1 0.2 0.2-0.3 0.2-0.4 0.1-0.1-0.2-0.2-0.7-0.2-0.1-0.7-0.7-0.1-0.3-0.9-0.5-2.1-0.8-1.4-0.4-1.5-0.5-2-0.7-2.4-1-7-2.5-2.6-0.8-1.7-0.6-1.9-0.8-1.6-0.6-1.9-0.5-1.6-0.6-1.5-0.5-1-0.5-0.4 0.1-0.2-0.3 0.3-0.2 0-0.6-0.5-0.6-1-0.8-1.9-1.2-0.3-0.7-2.3-1.3-2.4-0.9-1.3-0.6-1.8-0.6-0.1-0.4 0.4 0 0.1-0.6-0.2-0.4-0.3-0.4-1.1-0.9-0.8-0.1-0.8 0.2-0.1-0.4-0.4 0-0.3-0.3-0.4 0-0.1-0.6-0.5-0.2-0.8-0.2-0.1-1.1-0.7-1.1-0.8-0.5-1.3-1-0.4-0.8-0.4-0.4 0-0.5-1.1-1.3-1.3-0.6-0.4-0.2-1.8-1-1.7-0.8-1.3-0.4-1.8 0.2-0.3 0.5-0.6 0.5-0.4 0.5-0.5 0.2-0.2 0.2z\",\n\tMXHID:\n\t\t\"M615.4 394.2l0 0.1 0.1 0 0.1 0 0.4 0.3 0.5 0.3 0.5 0.4 0.5 0.3-0.5 0.7-0.5 0.6-0.4 0.6-0.1 0.9 0 0.2 0.1 0.2 0.1 0.2 0.2 0.1 0.6 0.2 0.5 0.5 0.4 0.7 0.5 0.6 0.3 0.2 0.4 0.3 0.4 0.1 0.4 0 0.6-0.4 0.7-0.6 0.5-0.6 0-0.6-0.1-0.5 0.4-0.1 0.3 0.3 0.2 0.5 0 0.8-0.3 0.8-0.3 0.8 0.3 0.6 0.8 0 0.6-0.5 0.5-0.3 0.6 0.9 0.3 0.1 0.2 0.1 0.2 0.3 0.2 0.3 0.2 0.2 0.2 0.1 0.3 0.1 0.1 0.3 0 0.3-0.2 0.5-0.2 0.4-0.1 0.3-0.2 0.1-0.1 0-0.1-0.1-0.1 0-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.3-0.2 0.3-0.2 0.2-0.2 0.3-0.2 0.2-0.4 0.7-0.2 1 0.1 1.1 0.2 0.8 0.1 0.2 0 0.1-0.1 0.1-0.2 0.1-0.7 0-0.7-0.2-0.6-0.4-0.6-0.4-0.4-0.2-0.3-0.1-0.4-0.1-0.4-0.1-0.4 0-0.5 0-0.4 0.2-0.2 0.4 0.1 0.4 0.2 0.2 0.2 0.3 0 0.4 0 0.3 0 0.3-0.2 0.2-0.3 0.2-0.4 0.1-0.4 0.1-0.3 0-0.4 0.1-0.3 0.5 0 0.4 0.3 0.3 0.5 0.1 0.4-0.1 0.4-0.3 0.3-0.2 0.3 0.2 0.1 0.5-0.1 0.5-0.3 0.6-0.3 0.4-0.6 0.6-0.7 0.5-0.7 0.5-0.4 0.7 0 0.5-0.1 0.6-0.1 0.6-0.2 0.5-0.2 0.3-0.3 0.3-0.3 0.2-0.2 0.3 0.1 0.7 0.4 0.7 0.5 0.7 0.4 0.7 0.6 1.3 0.9 0.2 1-0.5 0.8-1.1 0.1-0.5 0.2-0.5 0.2-0.5 0.3-0.3 0.5 0.4 0.4 0.5 0.3 0.1 0.5-0.6 0.4-0.5 0.4-0.4 0.4-0.4 0.3-0.4 0.4-0.6 0.5-0.6 0.5-0.5 0.5-0.5 0.6-1 1-1.3 1-1 0.9-0.3 0.1 0.1 0.1 0 0 0.1 0.1 0.1 0.2 0.4 0.4 0.1 0.5 0 0.3 0.3 0 0.4-0.1 0.3 0 0.3 0 0.3 0.2 0.2 0.1 0.2 0.1 0.1 0.2 0.2 0 0.5-0.2 0.4-0.3 0.4-0.1 0.4 0 0.5 0.1 0.5 0.3 0.4 0.3 0.3-0.1 0.1-0.2 0.3-0.2 0.2-0.2 0.2-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.2-0.1 0.2-0.6 0.3-0.7 0.3-0.6 0.4-0.3 0.5-0.2 0.4-0.2 0.3-0.3 0.4-0.2 0.4-0.3 0.2-0.5 0-0.5 0.1-0.4 0-0.2 0.1-0.1 0-0.1 0-0.1 0-0.4 0.4-0.2 0.5-0.1 0.6-0.2 0.5-0.2 0.3 0 0.3 0.2 0.3 0.3 0.2 0.1 0.2 0.2 0.2 0.2 0 0.3 0 1-0.5 1-0.1 0.7 0.3 0.4 1.2 0 0.3 0 0.2 0 0.3 0 0.3 0.3 0.5 0.3 0.5 0 0.5-0.5 0.6-0.7 0.5-0.4 0.7-0.3 0.8-0.2 0.9-0.2 0.3-0.3 0.4-0.2 0.3-0.2 0.3-0.1 0.1-0.1 0.1 0 0.1-0.1 0.1-0.5 0.7-0.4 0.7-0.1 0.7 0.2 0.7 0.7 1.1 0.7 1.3 0.7 1.2 0.8 1-0.8 0.1-0.7-0.3-0.6-0.3-0.6-0.4-0.1-0.1-0.1-0.2-0.1-0.2-0.2 0-0.4 0.2-0.1 0.1 0 0.2-0.1 0.2-0.3 0.3-0.2 0.3-0.3 0.3-0.2 0.4-0.3 0.7-0.3 0.8-0.5 0.3-0.6-0.3-0.1 0 0-0.1-0.1-0.1-0.1 0-0.6-0.1-0.6-0.1-0.6 0-0.6-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.4-0.4-0.4 0.2-0.4 0.4-0.4 0.3-0.5 0-0.4-0.3-0.4-0.3-0.4 0.1-0.3 0.3-0.3 0.3-0.3 0.1-0.4-0.1-0.1 0.3-0.1 0.3-0.2 0.2-0.4 0 0.1 0 0-0.1 0-0.1 0.3-0.5 0.3-0.5 0.3-0.5 0.2-0.6 0.1-0.3 0.2-0.4 0.2-0.4 0.1-0.4 0.1-0.3-0.1-0.3-0.2-0.3-0.3-0.4-0.1-0.3-0.2-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.2-0.2-0.1-0.2-0.1-0.1-0.2-0.2-0.1-0.1-0.2-0.2-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2-0.3-0.3-0.2-0.2 0-0.3 0.1-0.8 0.2-0.6 0-0.5-0.3-0.5-0.7-1-0.4-1.1 1.3-1.2 1.2-1.3-0.1 0-0.1-0.1-0.1 0-0.1-0.1-0.1 0.1-0.3 0-0.2 0.1-0.3 0-0.3 0.2-0.6 0.2-0.5 0.2-0.6 0.3-0.5-0.1 0-0.2-0.1-0.1 0-0.1 0 0.1-0.3 0.1-0.4 0-0.3 0-0.3-0.1-0.4-0.1-0.4-0.3-0.3-0.2-0.3-0.2-0.2-0.1 0-0.1-0.1-0.2-0.1-0.5-0.2-0.4 0-0.5 0-0.5 0.2-0.6 0.3-0.6 0.4-0.6 0.3-0.7 0.3-0.5 0-0.4 0-0.5 0.1-0.4 0.3-0.3 0.5 0 0.6 0 0.6-0.1 0.6-0.2 0.2-0.3 0.1-0.3 0-0.3 0-0.5 0.4-0.2 1-0.3 0.8-1-0.1-0.7 0.6-0.6 1-0.5 0.5-0.3-1 0-0.3 0-0.4-0.1-0.3-0.2-0.2-0.2-0.1-0.2-0.2-0.1-0.2-0.1-0.2 0.1-0.8-0.2-0.6-0.5-0.4-0.6-0.2-0.8-0.2-0.4-0.4-0.2-0.5 0.2-0.9 0.1-0.6 0.3-0.5 0.2-0.6 0.1-0.7 0-0.1-0.1 0 0-0.1-0.2-0.3-0.3-0.4-0.2-0.4-0.3-0.4-0.2-0.3-0.2-0.3-0.1-0.3-0.2-0.4-0.4-0.2-0.6 0-0.7 0-0.5 0.2-0.2 0.3-0.1 0.4-0.1 0.2-0.5-0.2-0.8-0.7-0.9-0.8-0.8-0.8-0.7-0.8-0.1-0.3-0.1-0.2-0.1-0.3-0.1-0.2-0.3-0.4-0.5-0.3-0.5-0.3-0.5-0.2 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0.1-0.7 0-0.1 0-0.2-0.1-0.2 0-0.1 1-0.4 1-0.5 1.1-0.4 1-0.1 0-0.1 0.1-0.1 0.4 0.1 0.5 0 0.4-0.3 0.2-0.3 0.2-0.3 0.1-0.3 0.2-0.2 0.2-0.2 0.2 0.1 0.1 0 0.1 0.1 0.2 0.1 0.1-0.2 0.1-0.2 0.1-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0 0.2-0.1 0.3-0.2 0.2-0.2 0.4-0.2 0.4-0.1-0.1-0.2-0.2-0.1-0.3-0.5-0.2-0.5-0.1-0.7 0-0.3 0.5-2 0.3-1 0.6-0.9 1.6-1 0.3-0.2 0.2-0.3 0.2-0.6 0.1-1.1 0.2-0.5 0.6-0.9 0.2-0.4 0-0.5-0.7-1.2 0-0.4 0.4-0.5 0.2-0.1 0.6-0.1 0.3-0.2 0.4-0.6 0.3-0.1 0.6 0 1 0.6 0.5 0.3 0.9-0.2 1.3-1.1 0.9-0.4 0.7 0.1 0.2 0 0.2-0.1 0.2-0.2 0.3 0 0.4 0.1 0.3 0-0.1-0.7 0-0.7 0-0.6 0-0.2 0-0.2 0-0.3 0-0.1 0.5-0.6 0.9-0.3 0.9-0.1 0.7 0.3 0.2 0.1 0.1 0.2 0.1 0.2 0.1 0.3 0.2 0.3 0 0.4 0.1 0.4 0.2 0.4 0.3 0.2 0.3 0.2 0.4 0.1 0.3 0.2 0.6 0.3 0.4 0.2 0.5 0.1 0.6-0.2 0.6-0.3 0.7-0.3 0.7-0.3 0.8-0.1 0.2 0.1 0.2 0 0.2 0.1 0.2 0.1 0.3 0 0.2 0 0.2 0 0.2-0.2 0.2-0.2 0.3-0.1 0.3 0.1 0.3 0.1 0.1-1 0.1-1.1-0.1-1.1 0-1.1-0.1-0.4 0.1-0.2 0.1-0.2 0.3-0.1 0.4-0.2 0.4-0.1 0.5-0.2 0.4-0.1z\",\n\tMXJAL:\n\t\t\"M472.9 468.6l-0.1-0.8-0.3-0.8-0.3-0.7-0.5-0.7-0.1-0.8 0.2-1.1 0.4-1.1 0.2-0.9-0.1-0.5-0.1-0.6-0.1-0.6 0-0.5 0.1-0.4 0.2-0.3 0.1-0.3 0-0.3-0.1-0.2-0.3-0.2-0.4-0.1-0.2-0.2-0.3-0.2-0.2-0.3-0.1-0.3-0.1-0.4-0.4-0.5-0.5-0.3-0.5-0.3-0.3-0.5-0.2-0.6-0.2-0.7-0.3-0.6-0.4-0.4-0.7 0.4-0.6 0.7-0.6 0.7-0.8 0.4-0.4 0.1-0.5 0-0.4 0-0.4 0.1-0.4 0.6-0.5 0.1-0.5-0.2-0.6-0.2-0.5-0.2-0.6-0.3-0.6-0.2-0.4-0.3-0.8-0.5-0.7-0.4-0.8-0.4-0.7-0.5 0.1-0.1 0-0.1-0.1-0.1 0-0.2 0-0.2-0.1-0.1 0-0.1-0.1-0.1-0.3 0.3-0.4 0.4-0.3 0.4-0.3 0.3-0.6 0.5-0.4 0.5-0.2 0.5-0.1 0.7-0.1 0.6-0.4 0.3-0.4 0.2-0.3 0.4-0.2 0.6-0.2 0.5-0.3 0.4-0.5 0-0.7 0-0.5 0.1-0.5 0.4-0.5 0.4-0.2 0.1-0.3 0.1-0.3 0-0.3 0.1-0.3 0-0.4 0.2-0.4 0.1-0.3 0-0.3-0.3-0.2-0.2-0.2 0-0.4 0.2-0.2 0.1-0.3 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0 0.2 0 0.2 0 0.2-0.3 0.1-0.2-0.1-0.3-0.3-0.2-0.2-0.8-0.1-0.3 0.2-0.1 0.4-0.3 0.7-0.4 0.4-0.4 0.4-0.4 0.4 0 0.7-1.2-0.3-1.1-0.5-0.3-0.3-0.1-0.3-0.1-0.4-0.3-0.1-0.3 0.1-0.3-0.1-0.2-0.2-0.1-0.2 0-0.1-0.3-0.1-0.2 0-0.8 0.2-0.6 0-0.2-0.1 0-0.9 0.2-0.8-0.1-0.3-0.4-0.2-0.3 0.1-0.4 0.2-0.3 0.1-0.2 0-0.2-0.1-0.2 0.1-0.2 0.2-2.3-1.2-1-0.7-0.7-0.8-0.3-1.4-0.3-0.6-0.9-0.4 0-0.3 0.1-0.5 0-0.3-0.2-0.3-0.2-0.2-0.1-0.2-0.1-1.6-0.8-0.8-0.4 0-0.4 0.1-0.2-0.1-0.6-0.5-0.5-0.4-1.8-1.5-1.3-1.6-1.6-2.7-0.8-0.9-0.2-0.5-0.3-0.4-0.9-0.8-0.3-0.5-0.8-1.3-1.7-2.5-0.1-0.6-0.1-0.3-0.3-0.6 0-0.3 0-1.4-0.3-2-0.1-0.5-0.2-0.3-0.5-0.3-0.3-0.2-0.4-0.9-0.6-0.8-0.8-0.4-0.6-1.2-0.4-1-0.2-0.7 0.4-0.5 3.1-2 1.3-0.1 2 0 0.4-0.1 0.5-0.3 2-0.2 0.9-0.1 0.8-0.5 0.4-0.6 0.6-0.2 0.3-0.4 0.3-0.4 0.2-0.6 0.1-1-0.6-0.6-0.8-0.5-0.2-0.4 0.4-0.2 0.3-0.2 0.5-1 0.7-1 0.8-0.9 0.6-0.9 0.6-1.1 0.8-1 0.9-0.9 1.1-0.5 0.4-0.1 0.1 0.2 0.1 0.3 0.1 0.2 0.1 0 0.2-0.1 0.1-0.1 0.2-0.1 0.2 0 0.3 0 0.3 0 0.3 0.1 1.4-0.3 1.2-0.8 1.2-1 1.2-0.8 0.3-0.1 0.3 0 0.3 0 0.3 0 0.5 0.2 0.3 0.1 0.3 0.2 0.4 0.4 0.2 0.2 0.3 0.2 0.2 0.2 0.3 0.2 0.4 0.5 0.5 0.5 0.5 0.3 0.7 0.1 0.8 0 0.7 0 0.6 0.4 0.6 0.8 0.3 0.6 0.4 0.5 0.5 0.4 0.5 0.4 0.7 0.4 0.6 0.3 0.6 0.5 0.3 0.6 0.4 0.5 0.6 0.4 0.7 0.3 0.6 0.4 0.1-0.2 0-0.2 0.1-0.2 0-0.3-0.1-0.5 0-0.4 0-0.5 0-0.5 0.1-1.1 0.3-0.8 0.3-0.9 0.4-0.8 0.2-0.3 0.1-0.3 0.2-0.3 0.1-0.3 0.3-0.5 0.2-0.7 0-0.6 0.1-0.7 0-0.1 0-0.1 0-0.2 0-0.1-0.1-0.6 0-0.6-0.1-0.6-0.1-0.5-0.2-0.7-0.1-0.6 0.3-0.4 0.3-0.5 0.2 0 1-0.2 2.3 0 0.6-0.1 0.6-0.4 1.6-1.5 0.4-0.5 0.2-0.6 0-1.3 0.2-0.5 0.3-0.3-0.2-0.1-1.7-1-1.9-1.1-1.9-1.1-1.9-1.2 0.6-0.8 0.5-0.7 0.4-0.9 0.2-1 0.1-0.5 0.1-0.5 0.1-0.5 0.2-0.5 0.2-0.6 0.4-0.9 0.3-0.8 0.1-0.5-0.8-1-0.8-1.1-0.9-1-0.9-1-1.1-1-1.1-1.1-1.1-1-1.1-1-0.6-0.6-0.2-0.5 0.1-0.6 0.4-0.8 0.4-1.1 0.3-1 0.4-1 0.4-1 1-0.6 1.1-0.5 1.1-0.4 1.1-0.5 1.4-0.5 1.4-0.1 1.5-0.1 1.4-0.3 0.4-0.1 0.2 0 0.2-0.2 0.1-0.3 0.1-0.6 0.2-0.7 0.1-0.6 0.1-0.7 0.2-0.8-0.1-0.6-0.3-0.4-0.7-0.5-0.6-0.6-0.2-0.6 0-0.7 0-0.9 0.1-1.2 0-1.1 0.1-1.1 0-1.1 1.5 0.3 1.5 0.3 1.4 0.3 1.5 0.3-0.1 1-0.1 1.2-0.3 1.2-0.4 0.8-0.5 0.3-0.4 0.3-0.3 0.3 0 0.6 0.1 0.4 0 0.5 0 0.5-0.2 0.4-0.2 0.3-0.4 0.2-0.3 0.3 0 0.4 0.2 0.5 0.2 0.4 0.2 0.5 0 0.5-0.2 0.6-0.3 0.4-0.2 0.5-0.1 0.6 0 0.6 0.1 0.6 0.1 0.6 0.1 0.5 0.1 0.6 0.2 0.7 0.3 0.6 0.3 0.3 0-0.1 0-0.2 0.1-0.1 0-0.2 0.4-1.6 0.4-1.7 0.4-1.7 0.4-1.7 0.2-1.4 0.3-1.6 0.4-1.5 0.6-1.2 0.3-0.3 0.2 0.1 0.1 0.2 0.2 0.2 0.4 0 0.6 0 0.6 0 0.3 0.1 0.2 0.3-0.1 0.4-0.1 0.4 0 0.3 0.2 0.1 0.3 0.1 0.3 0 0.2 0.1 0.1 0.3 0 0.3 0 0.3 0 0.3-0.7 0.5-0.5 1.4-0.5 1.6-0.2 1-0.2 0.5-0.1 0.4 0 0.3 0.2 0.5 0.2 0.5 0.1 0.6 0.1 0.6 0 0.6-0.3 1.2-0.1 0.6 0 0.8 0.5 0.6 0.5 0.2 0.7-0.2 0.4-0.2 0.3-0.2 0.4-0.5 0.3-0.1 1 0.2 0.4-0.1 0.3 0.2 0.2 0.2 0.1 0.3 0.3-0.3 0.2-0.9 0.3-0.7 0.3-0.9 0.4-0.8 0.6-0.3 0.6-0.3 0.1-0.6 0-0.8 0.3-0.7 0.2-0.2 0.3-0.2 0.2-0.1 0.2-0.2 0.1-0.3-0.1-0.2-0.3-0.2-0.3 0-0.3-0.1-0.1-0.3-0.1-0.3-0.2-0.2-0.4-0.1-0.2-0.2 0-0.2 0.1-0.4 0.3-0.6 0.3-0.5 0.2-0.6 0.4-0.5 0-0.1 0.1-0.1 0.1-0.2 0-0.1 0.9 0.8 0.9 0.8 1 0.8 0.9 0.7 0.4 0.3 0.4 0.3 0.5 0.3 0.4 0.3 0.1 0.3 0 0.5-0.1 0.6-0.1 0.4 0.5-0.2 0.6-0.2 0.6-0.1 0.4 0 0.4 0.2 0.1 0.3 0.1 0.3 0.1 0.4 0.4 0 0.3-0.2 0.4 0 0.3 0.1 0.2 0.5-0.1 0.5-0.2 0.6-0.2 0.4-0.2 0.4-0.2 0.5-0.3 0.5-0.4 0.3-0.3 0.1-0.4 0.1-0.3 0.1-0.1 0.3 0 0.7 0.3 0.2 0.5 0 0.5 0.3 0.1 0.4 0 0.4-0.1 0.4-0.1 0.3-0.8 0.3-0.4 0.3-0.2 0.5-0.3 0.8-0.2 0.5-0.4 0.4-0.5 0.2-0.5 0.1-0.9-0.1-0.8-0.3-0.8 0.1-0.5 0.8-0.3 0.3-0.3 0.2-0.3 0.1-0.4 0.1-0.3 0-0.4 0-0.3 0.1-0.4 0.2-0.5 0.5-0.6 0.5-0.5 0.5-0.6 0.5-0.6 0.6-0.8 0.8-0.4 0.9 0.2 0.8 0.4 0.8 0.1 1.2 0 1.3 0 0.9-0.1 0.8-0.6 0.4-0.8 0.4-0.6 0.5-0.3 0.6-0.3 0.7-0.4 0.6-0.5 0.3-0.7 0-0.7-0.4-0.6-0.4-0.6-0.4 0.3 1.1 0.2 1.1 0.2 1.1 0.1 1.1 0 0.5-0.1 0.6-0.2 0.6-0.2 0.4-0.5 0.3-0.2 0.3 0 0.3 0 0.7-0.1 0.7 0.1 0.4 0.3 0 0.7-0.3 0.5-0.3 0.6-0.4 0.6-0.1 0.5 0.3 0.1 0.5 0.1 0.5 0.1 0.4 0.4 0.3 0.6 0.2 0.6 0 0.6-0.1 0.6-0.1 0.6 0.1 0.4 0.3 0.4 0.4 0.4 0.3 0.5 0.1 0.4 0 0.5-0.1 0.4 0 0.6 0.2 0.5 0.2 0.5 0.3 0.5 0.3 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.9 0.6 1.1 0.6 1.1 0.3 0.9-0.2 0.7 0 0.8 0.6 0.8 0.4 0.6-0.1 0.4-0.9 0-1.4-0.1-1.4-0.1-1 0-0.5 0-0.6 0-0.5-0.1-0.5 0.4-0.7 0.6-0.1 0.7 0.3 0.6 0.2 0.9 0 0.9-0.2 0.8-0.4 0.7-0.6 0.4-0.3 0.5-0.4 0.5-0.1 0.3 0.4-0.1 0.3-0.1 0.5 0 0.3 0.7-0.1 0.3-0.3 0.1-0.5 0.1-0.5 0.3-0.4 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.2 0.3-0.1 0.4-0.1 0.3-0.1 0.2-0.3 0.1 0 0.1-0.1 0-0.1 0.1-0.1 0.4-1.1 0.6-1.4 0.3-1.4-0.1-1.1-0.5-0.2-0.5 0-0.5 0-0.6-0.1-0.4-0.3-0.4-0.2-0.5-0.2-0.5-0.2-0.3-0.6 0.1-0.8 0.2-0.9 0.1-0.6 0.1-0.4 0.1-0.4 0-0.3 0.1-0.4 0.9-0.3 1-0.4 1-0.2 0.9 0.2 1.1 0.6 1.1 0.8 1.1 0.6 1.3 0.4 0.9 0.1 0.9 0.2 0.9 0.1 0.9 0.2 0.8 0.1 0.8 0.1 0.8-0.1 0.8-0.2 0.7-0.4 0.6-0.5 0.5-0.6 0.7-0.5 0.7-0.3 0.6-0.2 0.6-0.3 0.3-0.6 0.2-0.9 0.1-0.8 0.2-0.7 0.7-0.4 0.8-0.3 0.5-0.5 0.4-0.5 0.6-0.3 0.9-0.3 0.7-0.5 0.5-0.6 0.5-0.9 0.1-0.1 0-0.1 0.1-0.1 0.1-0.1 0.1 0.1 0.1 0 0.1 0.1 0.1 0 0.7 0.5 0.6 0.6 0.6 0.4 0.8 0.2 0.4-0.1 0.4 0 0.4-0.1 0.5 0 0.4 0.2 0.4 0.3 0.4 0.2 0.4 0.3 0.4 0.5 0.4 0.6 0.5 0.4 0.5 0.1 0.6-0.1 0.3 0.2 0.1 0.4 0.1 0.7-0.5 0.5-0.7 0.7-0.5 0.7-0.2 0.7 0.2 0.8 0.5 0.6 0.4 0.7 0.4 0.6-0.1 1-1 0.8-1.2 0.8-0.7 1 0.1 1.1 0.5 1 0.7 0.9 0.6 0.9 0.1 0.6 0.1 0.6-0.1 0.6-0.1 0.6-0.5 0.9-0.6 0.8-0.7 0.6-0.8 0.7-0.3 0.2-0.4 0.2-0.4 0.2-0.4 0-0.5 0-0.5 0-0.6 0-0.4 0.3-0.2 0.3-0.2 0.4-0.2 0.4-0.2 0.3-0.4 0.3-0.4 0.3-0.4 0.2-0.3 0.5-0.1 0.3-0.1 0.3-0.1 0.2-0.2 0.3-1 1.1-0.9 1.3-0.8 1.2-0.8 1.3-0.3 0.5-0.3 0.5-0.3 0.5-0.3 0.5 0 0.2-0.1 0.2-0.1 0.2-0.1 0.1-0.5 0.9-0.4 0.9-0.2 1 0.3 0.9 0.7 0.8 0.8 0.6 0.7 0.6 0.7 0.8 0.1 0 0 0.1 0.1 0.1 0 0.1 0.3 1.3-0.4 1-0.7 0.8-0.9 0.9-0.7 0.9-0.6 1-0.4 1-0.1 0.5-0.6 0.1-1.8 0.9-0.5 0.1-0.5 0.1-0.4 0.2-0.3 0.1-0.5-0.4-0.8-0.3-0.3 0-0.5 0-1.1 0.3-1.4 0.1-0.5 0.2-2.3 0.8-0.3 0.3-0.2 0.5-0.3 0.2-1.8 0.5-1.1 1-0.6 0.3-0.8 0.2-1.5 0-0.7 0.2-0.4 0.4-0.4 0.3-0.3 0.1-0.4 0.1-0.1 0-0.1 0.1-0.2 0-0.1 0-1.1 0.3-1.1 0.3-1.1 0.3-1.1 0.3-0.1 0-0.1 0-0.1 0.1-0.7 0.2-1 0.3-0.9 0.5-0.2 0.7 0 0.7 0.1 1 0.2 0.8 0.5 0.4 0.3 0.1 0.1 0.1 0.1 0.2 0.1 0.1 0.4 0 0.4-0.1 0.4-0.1 0.4-0.1 0.1 0 0.2-0.1 0.2-0.1 0.2 0 0.6-0.1 0.5 0.2 0.4 0.3 0.5 0.3 0.3 0.1 0.4 0 0.4 0 0.3-0.1 0.4 0 0.5 0.1 0.5 0.1 0.5 0 0.1 0 0.1 0.1 0.1 0.2 0.1 0.1 0 0.4-0.1 0.5 0 0.4 0.1 0.3 0.4 0.2 0.4 0.2 0.3 0.2 0.4 0.3-0.2 0.2-0.1 0.2-0.2 0.1-0.2 0.2-0.8 0.3-0.8 0-0.7 0.2-0.2 1 0 0.6 0.1 0.6 0.1 0.6 0.1 0.5 0.2 0.4 0.1 0.4 0.1 0.3 0.3 0.3 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0.1 0.1 0.3 0 0.4 0.1 0.3 0.2 0.3 0.2 0.4 0.1 0.5-0.1 0.5-0.1 0.5 0 0.2-0.1 0.3 0 0.2 0 0.2 0 1.4 1.1 0.2 1.5-0.3 1.2-0.4 0.2 0 0.2 0.1 0.1 0.2 0 0.2 0.1 0.4 0.2 0.6 0.1 0.5 0.2 0.4 0.4 0.1 0.3 0.1 0.2 0.2-0.1 0.4-0.4 0.3-0.4 0.3-0.3 0.4-0.3 0.4 0 0.2 0 0.2 0.1 0.2-0.1 0.2-0.1 0.2-0.2 0.2-0.2 0.3-0.1 0.2-0.3 0.4-0.4 0.6-0.4 0.6-0.4 0.2-0.2 0-0.1-0.2 0-0.1-0.2-0.2-0.5-0.3-0.7-0.2-0.6-0.1-0.6 0.2-0.2 0.2-0.1 0.3-0.1 0.2-0.2 0.1-0.3 0-0.4 0.1-0.4 0.1-0.3 0.1-0.6 0.2-0.6 0.3-0.6 0.3-0.5 0.4-0.4 0.8-0.3 0.8-0.2 0.9-0.4 0.7-0.6 0.4-0.8 0.4-0.8 0.2-0.8 0.2-0.3 0.2-0.4 0.2-0.4 0.2-0.4 0.2-0.1 0.2 0 0.4-0.1 0.3 0 0.3-0.5 0.4-0.5-0.3-0.5-0.6-0.4-0.6-0.4-0.3-0.5 0-0.4 0-0.4-0.5-0.4-0.5-0.3-0.2-0.5 0.2-0.4 0.5-0.2 0.3-0.3 0.5-0.3 0.5-0.3 0.3-0.4 0.1-0.5 0-0.6 0-0.6 0-0.4 0-0.4 0-0.4 0-0.4 0.2z\",\n\tMXMEX:\n\t\t\"M554.9 471.5l0.2-0.1 0-0.3 0.1-0.2 0.1-0.2 0.2 0 0.2 0 0.1 0 0.2-0.3 0.2-0.3 0.3-0.3 0.4-0.3 0.4-0.1 0.3-0.2 0.1-0.4 0-0.5 0.1-0.4 0.1-0.4 0.3-0.4 0.4-0.3 0.4-0.3 0.3-0.3 0.3-0.4 0.2-0.3 0.3-0.4 0.3-0.4 0.3-0.4 0.4-0.4 0.3-0.4 0.2-0.3 0.2-0.3 0.2-0.3 0.3-0.4 0.3-0.4 0.4-0.5 0.3-0.5 0.4-0.5 0.3-0.3 0.2-0.2 0.1-0.3-0.2-0.4-0.1-0.1 0-0.1-0.2-0.3-0.2-0.2-0.1-0.3-0.2-0.3 0.2-0.1 0.2-0.1 0.2-0.2 0.2-0.1 0.7-0.4 0.7-0.5 0.8-0.4 0.7-0.5 0.5-0.2 0.7-0.4 0.4-0.5-0.5-0.5-0.4-0.4-0.2-0.5-0.2-0.6-0.2-0.5 0-0.1-0.1-0.1 0-0.1 0-0.1-0.1-0.3-0.1-0.2-0.1-0.3-0.1-0.3 0.2-0.5 0.1-0.5 0.1-0.5 0.2-0.6 0.1-0.2 0.1-0.2 0-0.3 0.1-0.2 0.1-0.4 0.2-0.3 0.1-0.4 0.1-0.3 0-0.3-0.1-0.4-0.1-0.3 0-0.4 0.2-0.5 0.1-0.5 0.2-0.5 0.1-0.5 0.1-0.5 0.2-0.5 0.1-0.5 0.2-0.5 0-0.4 0.1-0.4 0.1-0.4 0-0.3 0.3-0.5 0.3-0.5 0.2-0.5 0.3-0.4 0.1-0.1 0-0.1 0.1-0.1 0.1 0 0.5-0.6 0.4-0.7 0.4-0.7 0.5-0.7 0.3-0.4 0.3-0.4 0.3-0.4 0.3-0.4 0.6-0.7 0.4-0.3 0.6-0.2 0.8-0.1-0.4-0.5-0.3-0.4-0.4-0.5-0.3-0.5 0.6-0.4 0.7-0.4 0.7-0.5 0.6-0.4 0.5 0.2 0.5 0.3 0.5 0.3 0.3 0.4 0.1 0.2 0.1 0.3 0.1 0.2 0.1 0.3 0.7 0.8 0.8 0.8 0.9 0.8 0.8 0.7 0.5 0.2 0.1-0.2 0.1-0.4 0.2-0.3 0.5-0.2 0.7 0 0.6 0 0.4 0.2 0.2 0.4 0.1 0.3 0.2 0.3 0.2 0.3 0.3 0.4 0.2 0.4 0.3 0.4 0.2 0.3 0 0.1 0.1 0 0 0.1-0.1 0.7-0.2 0.6-0.3 0.5-0.1 0.6-0.2 0.9 0.2 0.5 0.4 0.4 0.8 0.2 0.6 0.2 0.5 0.4 0.2 0.6-0.1 0.8 0.1 0.2 0.1 0.2 0.2 0.2 0.2 0.1 0.2 0.2 0.1 0.3 0 0.4 0 0.3 0.3 1 0.5-0.5 0.6-1 0.7-0.6 1 0.1 0.3-0.8 0.2-1 0.5-0.4 0.3 0 0.3 0 0.3-0.1 0.2-0.2 0.1-0.6 0-0.6 0-0.6 0.3-0.5 0.4-0.3 0.5-0.1 0.4 0 0.5 0 0.7-0.3 0.6-0.3 0.6-0.4 0.6-0.3 0.5-0.2 0.5 0 0.4 0 0.5 0.2 0.2 0.1 0.1 0.1 0.1 0 0.2 0.2 0.2 0.3 0.3 0.3 0.1 0.4 0.1 0.4 0 0.3 0 0.3-0.1 0.4-0.1 0.3 0.1 0 0.1 0 0.2 0.1 0.1 0-0.3 0.5-0.2 0.6-0.2 0.5-0.2 0.6 0 0.3-0.1 0.3 0 0.2-0.1 0.3 0.1 0.1 0 0.1 0.1 0.1 0 0.1 1.3 0.1 1.2-1.2 1.1-1.3 1 0.4 0.5 0.7 0.5 0.3 0.6 0 0.8-0.2 0.3-0.1 0.2 0 0.3 0.2 0.2 0.3 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.2 0.1 0.1 0.2 0.2 0.1 0.1 0.1 0.2 0.2 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0.2 0.1 0.3 0.3 0.4 0.2 0.3 0.1 0.3-0.1 0.3-0.1 0.4-0.2 0.4-0.2 0.4-0.1 0.3-0.2 0.6-0.3 0.5-0.3 0.5-0.3 0.5 0 0.1 0 0.1-0.1 0-0.3 0-0.4 0-0.3 0.1-0.4 0 0.2 1 0.3 0.5 0.4 0.4 0.9 0.2 0.1 0.4 0 0.4 0 0.4 0.1 0.4-0.3 0.3-0.2 0.3-0.1 0.4-0.1 0.4-0.2 0.8 0.1 0.9 0.3 0.9 0.2 0.8 0 0.1 0 0.1 0 0.1 0.1 0.4 0.1 0.4 0.1 0.4 0 0.4 0.1 0.4 0 0.4 0.1 0.4 0 0.4-0.2 0.1-0.2 0.2-0.1 0.3 0 0.3 0 0.2 0 0.3-0.1 0.3 0 0.3 0 0.3 0 0.5 0 0.4 0.1 0.4 0.2 0.2 0.1 0.2 0 0.3-0.1 0.3 0 0.1 0 0.1-0.1 0.1 0 0.1-0.1 0.1-0.1 0-0.1 0.1-0.1 0.1-0.4 0.1-0.4 0.2-0.3 0.3-0.1 0.4-0.2 0.3-0.3 0.2-0.4 0-0.4 0.1-0.4 0-0.3-0.1-0.3 0-0.4-0.1-0.2 0-0.2 0-0.1-0.2-0.1-0.3 0-0.1-0.1-0.1-0.1-0.2 0-0.3-0.1-0.3-0.1-0.2 0-0.1 0-0.1-0.1-0.1 0-0.1-0.1-0.2-0.2 0-0.2 0-0.2 0-0.3-0.2-0.2-0.2-0.2-0.3-0.3-0.2-0.1 0 0-0.1-0.1 0-0.4-0.1-0.5-0.1-0.5-0.1-0.4-0.1 0.2-0.3 0.3-0.3 0.1-0.4 0.1-0.4 0-0.1-0.1-0.5-0.3-0.5-0.2-0.4-0.2-0.5 0.1-0.4 0-0.3 0.1-0.4 0-0.3 0.1-0.4-0.1-0.4 0-0.4-0.2-0.4 0-0.1 0-0.1-0.1-0.1-0.1-0.2-0.1-0.2-0.2-0.2-0.1-0.2-0.5-0.3-0.6-0.3-0.5-0.2-0.4-0.5 0.1-0.1 0.1-0.1 0.1 0 0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2-0.1-0.1 0.3-0.2 0.2-0.2 0.1-0.3-0.2-0.3-0.1 0 0-0.1 0-0.1-0.1-0.2-0.1-0.1 0-0.1-0.2-0.2-0.1-0.3-0.1-0.2-0.1-0.2-0.3-0.2-0.2-0.3-0.2-0.3 0-0.4 0-0.1 0-0.1 0-0.3-0.1-0.2-0.2-0.2-0.2-0.2-0.1-0.1-0.1 0 0-0.1-0.1-0.1-0.1 0.2-0.2 0.2-0.2 0.2-0.1 0.1-0.3 0.3 0 0.3 0 0.3-0.3 0.2 0.4 0.2 0.1 0.2-0.1 0.3-0.3 0.2-0.2 0-0.2 0.1-0.1 0.1-0.1 0.1-0.1 0.2-0.2 0.2-0.1 0.1-0.1 0.2-0.3 0.5-0.4 0.4-0.3 0.5-0.3 0.5-0.1 0.1 0 0.1-0.1 0.1-0.2 0.5-0.4 0.2-0.5-0.1-0.5-0.1-0.2 0.6-0.3 0.7-0.2 0.7 0.1 0.6 0.1 0.1 0.1 0.1 0 0.1 0 0.1-0.2 0.2-0.1 0.3 0 0.3 0.3 0.1 0.1 0.1 0.1 0 0.1 0.1 0 0.1 0 0.1 0 0.5 0 0.6 0.2 0.5 0.2 0.4 0.1 0.2 0.1 0 0.1 0.1 0.1 0.1-0.2 0.3-0.3 0.3-0.3 0.3-0.3 0.2-0.3 0.5 0.1 0.5 0.3 0.4 0.4 0.4-0.5 0.3-0.3 0.2-0.1 0.4 0.2 0.5 0.2 0.2 0.1 0.2 0.2 0.1 0.2 0.2 0.1 0.8-0.2 0.5-0.4 0.4-0.7 0.3-0.3 0.1-0.3 0.1-0.3 0.1-0.3 0.2-0.4 0.3-0.3 0.5-0.2 0.5-0.2 0.5-0.3 0.4-0.4 0.2-0.3 0.2-0.3 0.3 0 0.1 0 0.1 0 0.8-0.2 0.9-0.2 0.9-0.2 0.9-0.1 0.1-0.4 0.1-0.7 0-0.7-0.2-0.4-0.3-0.2-0.3-0.1-0.3-0.2-0.2-0.4-0.1-0.5-0.6-0.5-0.6-0.6-0.2-0.7 0.6-0.2 0.2-0.3 0.2-0.3 0.3-0.2 0.2-0.3 0.3-0.3 0.1-0.2 0.3-0.2 0.3 0 0.4 0 0.3-0.1 0.3-0.3 0.3-0.5 0.5-0.3-0.1-0.3-0.3-0.3-0.4-0.5-0.4-0.4-0.1-0.5 0.1-0.6 0.1-0.2 0-0.1 0.1-0.2 0-0.1 0.1-0.6 0.2-0.6 0.1-0.6 0.2-0.6 0.3-0.6 0.1-0.5 0.2-0.6 0.1-0.6 0.1-0.1 0.2-0.1 0.1 0 0.1-0.4 0.9-0.5 0.8-0.4 0.7-0.7 0.7-0.6 0.6-0.7 0.5-0.6 0.5-0.6 0.5-0.4 0.1-0.2 0.3-0.2 0.3-0.3 0.2-0.4 0.1-0.4 0-0.4-0.1-0.3-0.3-0.2-0.2-0.2-0.3-0.2-0.3-0.3-0.2-0.3-0.6 0.2-0.7 0.3-0.8 0-0.8-0.2-0.7-0.4-0.6-0.5-0.5-0.5-0.5-0.3-0.3-0.2-0.3-0.2-0.3-0.1-0.3 0.1-0.4 0-0.3 0-0.4-0.2-0.4-0.3-0.6 0-0.6 0.3-0.5 0.3-0.7 0-0.3-0.2-0.3-0.2-0.2-0.1-0.3 0-0.5-0.1-0.3-0.2-0.1-0.4-0.1-1.2 0-1.1-0.1-1-0.3-1.1-0.4z\",\n\tMXMIC:\n\t\t\"M465.3 477l0.3-0.2 0.4-0.3 0.3-0.3 0.2-0.5 0.1-0.4 0.1-0.3 0.2-0.4 0.2-0.3 0.5-0.2 0.4 0 0.3-0.1 0.3-0.4 0.2-0.4 0-0.4 0-0.4 0.2-0.4 0-0.1 0-0.1 0-0.2 0-0.1-0.1-0.2 0.1-0.2 0.1-0.1 0.1-0.1 0.4 0.2 0.2 0.1 0.3-0.1 0.3-0.2 0.2-0.2 0.4-0.2 0.4-0.2 0.2-0.1 0-0.1-0.1-0.2 0-0.1 0.1-0.1 0.1-0.1 0.2 0 0.2 0 0.1-0.1 0.1-0.3 0.1-0.4 0.2-0.2 0.3 0 0.4-0.2 0.4 0 0.4 0 0.4 0 0.6 0 0.6 0 0.5 0 0.4-0.1 0.3-0.3 0.3-0.5 0.3-0.5 0.2-0.3 0.4-0.5 0.5-0.2 0.3 0.2 0.4 0.5 0.4 0.5 0.4 0 0.5 0 0.4 0.3 0.4 0.6 0.5 0.6 0.5 0.3 0.5-0.4 0-0.3 0.1-0.3 0-0.4 0.1-0.2 0.4-0.2 0.4-0.2 0.4-0.2 0.3-0.2 0.8-0.2 0.8-0.2 0.8-0.4 0.6-0.4 0.4-0.7 0.2-0.9 0.3-0.8 0.4-0.8 0.5-0.4 0.6-0.3 0.6-0.3 0.6-0.2 0.3-0.1 0.4-0.1 0.4-0.1 0.3 0 0.2-0.1 0.1-0.2 0.1-0.3 0.2-0.2 0.6-0.2 0.6 0.1 0.7 0.2 0.5 0.3 0.2 0.2 0 0.1 0.1 0.2 0.2 0 0.4-0.2 0.4-0.6 0.4-0.6 0.3-0.4 0.1-0.2 0.2-0.3 0.2-0.2 0.1-0.2 0.1-0.2-0.1-0.2 0-0.2 0-0.2 0.3-0.4 0.3-0.4 0.4-0.3 0.4-0.3 0.1-0.4-0.2-0.2-0.3-0.1-0.4-0.1-0.2-0.4-0.1-0.5-0.2-0.6-0.1-0.4 0-0.2-0.1-0.2-0.2-0.1-0.2 0-1.2 0.4-1.5 0.3-1.1-0.2 0-1.4 0-0.2 0-0.2 0.1-0.3 0-0.2 0.1-0.5 0.1-0.5-0.1-0.5-0.2-0.4-0.2-0.3-0.1-0.3 0-0.4-0.1-0.3-0.2-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.3-0.3-0.1-0.3-0.1-0.4-0.2-0.4-0.1-0.5-0.1-0.6-0.1-0.6 0-0.6 0.2-1 0.7-0.2 0.8 0 0.8-0.3 0.2-0.2 0.2-0.1 0.1-0.2 0.2-0.2-0.4-0.3-0.3-0.2-0.4-0.2-0.4-0.2-0.1-0.3 0-0.4 0.1-0.5 0-0.4-0.1-0.1-0.1-0.2-0.1-0.1-0.1 0-0.5 0-0.5-0.1-0.5-0.1-0.4 0-0.3 0.1-0.4 0-0.4 0-0.3-0.1-0.5-0.3-0.4-0.3-0.5-0.2-0.6 0.1-0.2 0-0.2 0.1-0.2 0.1-0.1 0-0.4 0.1-0.4 0.1-0.4 0.1-0.4 0-0.1-0.1-0.1-0.2-0.1-0.1-0.3-0.1-0.5-0.4-0.2-0.8-0.1-1 0-0.7 0.2-0.7 0.9-0.5 1-0.3 0.7-0.2 0.1-0.1 0.1 0 0.1 0 1.1-0.3 1.1-0.3 1.1-0.3 1.1-0.3 0.1 0 0.2 0 0.1-0.1 0.1 0 0.4-0.1 0.3-0.1 0.4-0.3 0.4-0.4 0.7-0.2 1.5 0 0.8-0.2 0.6-0.3 1.1-1 1.8-0.5 0.3-0.2 0.2-0.5 0.3-0.3 2.3-0.8 0.5-0.2 1.4-0.1 1.1-0.3 0.5 0 0.3 0 0.8 0.3 0.5 0.4 0.3-0.1 0.4-0.2 0.5-0.1 0.5-0.1 1.8-0.9 0.6-0.1 3-0.5-0.5 1.2-0.1 0.6 0.3 0.3 0.4-0.2 0.3-0.8 0.5-0.2 0.4 0.3 0.2 0.7 0.3 2.8 0.1 0.1 0.1 0.1 0.1 0.1 0.3 0.8 0.2 0.3 0.3 0.2 0.7 0 0.3-0.1 0.3-0.3 0.3 0 0.3 0 0.4 0.3 0.2 0.1 0.2-0.1 0.3-0.3 0.3 0 0.2 0 0.8 0.2 1 0 0.6 0.1 0.4 0.3 0.3-0.4 0.7-0.9 0.2-0.5 0-0.2 0.3-0.4 0.1-0.3 0-0.3 0-0.3 0-0.3 0.1-0.3 0.2 0 1-0.1 0.2 0 0.6-0.3 0.3-0.1 0.5 0 1.1 0.1 0.5-0.1-0.1 0.4 0.1 0.3 0.2 0.2 0.4 0 0.5 0.1 0.6 0.1 0.6 0.4 0.1 0.5-0.2 0.4-0.6 0.3-0.5 0.3-0.3 0.4 0.1 0.3 0.1 0.1 0.3 0.1 0.1 0.2 0 0.3 0 0.1-0.1 0.2 0 0.2-0.1 0.1-0.1 0.1 0 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0.1 0.2 0 0.2-0.1 0.9-0.2 0.9 0 0.7 0.8 0.5 0.3-0.1 0.3-0.2 0.2-0.1 0.3-0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.4 0 0.4-0.1 0.3-0.1 0.4 0.1 0.5 0.3 0.6 0.1 0.6 0.1 0.6-0.2 0.4-0.6 0.2-0.8 0.3-0.6 0.6-0.2 0.3 0.3 0.4 0.2 0.3 0.1 0.4-0.1 0.6-0.2 0.8-0.1 0.7 0.1 0.6 0.2 0.1 0.2 0 0.3 0 0.2-0.1 0.3 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1-0.1 0.6-0.5 0.3-0.7 0.3-0.4 0.4 0.1 0.7 0.7 0.5 0.8 0.4 0.7 0.2 0.5 0.2 0.4 0.1 0.5-0.1 0.5-0.1 0.6-0.2 0.5-0.2 0.4-0.4 0.4-0.6 0.3 0.4 0.3 0.2 0.2 0.2 0.2 0.4 0.3 0.5 0.3 0.3 0.5 0 0.7 0.1 0.1-0.6 0.1-0.3 0.3-0.1 0.6 0 0.5 0 0.5-0.1 0.5 0 0.5 0 0.5 0 0.7-0.1 0.7 0 0.4 0.1 0.1 0.4 0 0.3 0 0.3 0.3 0.2 0.4-0.2 0.2-0.4 0.2-0.6 0.4-0.3 0.6-0.2 0.7-0.1 0.7 0 0.7 0 0.5-0.4 0-0.9-0.3-1.1-0.3-0.7 0-0.3 0.1-0.3 0.2-0.3 0.1-0.2 0-0.1-0.1-0.1-0.1-0.2 0.2-0.2 0.1 0 0.3 0 0.2 0 0.2 0.1 0.2-0.2 0.3-0.4 0.3-0.4 0.1-0.3 0.2-0.5 0.2-0.4 0.3-0.3 0.5-0.5 1.4 0.7 1.1 1.5 0.6 1.7 0 1.7 0 0.2 0 0.2 0 0.2 0 0.2 0 0.8 0.3 0.6 0.5 0.4 0.7 0.3 0 0.3-0.1 0.4-0.1 0.4 0 0.4-0.2 0.5-0.1 0.5-0.2 0.5-0.1 0.5-0.1 0.5-0.2 0.5-0.1 0.5-0.2 0.5 0 0.4 0.1 0.3 0.1 0.4 0 0.3-0.1 0.3-0.1 0.4-0.2 0.3-0.1 0.4-0.1 0.2 0 0.3-0.1 0.2-0.1 0.2-0.2 0.6-0.1 0.5-0.1 0.5-0.2 0.5 0.1 0.3 0.1 0.3 0.1 0.2 0.1 0.3 0 0.1 0 0.1 0.1 0.1 0 0.1 0.2 0.5 0.2 0.6 0.2 0.5 0.4 0.4 0.5 0.5-0.4 0.5-0.7 0.4-0.5 0.2-0.7 0.5-0.8 0.4-0.7 0.5-0.7 0.4-0.2 0.1-0.2 0.2-0.2 0.1-0.2 0.1 0.2 0.3 0.1 0.3 0.2 0.2 0.2 0.3 0 0.1 0.1 0.1 0.2 0.4-0.1 0.3-0.2 0.2-0.3 0.3-0.4 0.5-0.3 0.5-0.4 0.5-0.3 0.4-0.3 0.4-0.2 0.3-0.2 0.3-0.2 0.3-0.3 0.4-0.4 0.4-0.3 0.4-0.3 0.4-0.3 0.4-0.2 0.3-0.3 0.4-0.3 0.3-0.4 0.3-0.4 0.3-0.3 0.4-0.1 0.4-0.1 0.4 0 0.5-0.1 0.4-0.3 0.2-0.4 0.1-0.4 0.3-0.3 0.3-0.2 0.3-0.2 0.3-0.1 0-0.2 0-0.2 0-0.1 0.2-0.1 0.2 0 0.3-0.2 0.1-0.3 0.3-0.3 0.3-0.2 0.3-0.1 0.3 0 0.3-0.3 0.3-0.3 0.3-0.3 0.3-0.1-0.7-0.3-0.7-0.4-0.5-0.6-0.1-0.5 0.3-0.4 0.5-0.3 0.5-0.4 0.4 0 0.6 0.5 0.5 0.5 0.5 0.3 0.5-0.2 0.6-0.3 0.5-0.3 0.4 0.1 0.7 0.3 0.7 0.2 0.6 0.1 0.7 0.1 0.7 0 0.8 0.1 0.6 0.3 0.5 0.5 0.5 0.8 0.5 0.7 0.6 0.8 0.6 0.7 0.6 0.2 0.5-0.1 0.6-0.4 0.7-0.4 0.6-0.2-0.5-0.3-0.1-0.1 0-1 0.9-0.6-0.6-0.3-0.4 0-0.5 0.2-0.4 0.3-0.2 0.2-0.3 0.1-0.3-0.1-0.4-0.1-0.3-0.1-0.2-0.1 0-0.3-0.1-0.1-0.1 0 0.1-0.2 0.4 0 0.1-0.4-0.1-0.5-0.3-0.4-0.3-1-1.1-0.3-0.2-3.1 0 0.4 0.4-0.3 0.3-0.9 0.3-0.2-0.7-0.1-0.4-0.2-0.1-0.4 0-0.2 0.1-0.1 0.1-0.1-0.3 0-0.4-0.1-0.2-0.6-0.3-0.7 0-1.4 0.3-4.6-0.3-0.7 0.4-1.5 0.4-1.5 0.4-1.5 0.4-1.6 0.3-0.6-0.1-0.7-0.2-0.5-0.3-0.6-0.3-0.5-0.4-0.2-0.4-0.2-0.4-0.3-0.5-0.3-0.4-0.5-0.1-0.4-0.1-0.5-0.1-1.1 0-1.3-0.1-1.2 0-1 0.4-1.2 1.6-0.4 1.9 0.2 2.1 0.3 2.1 0 0.8-0.3 0.6-0.5 0.7-0.5 0.6-0.1 0.3 0 0.2-0.2 0.2-0.3 0.1-0.3 0-0.2-0.1-0.3 0-0.3 0-0.4 0.3-0.4 0.1-0.4-0.1-0.4 0-0.5 0.1-0.5 0.1-0.4 0.1-0.6 0-0.5 0-0.3 0.1-0.2 0.1-0.3 0.3-0.2 0.3-0.2 0.2 0 0.3-0.1 0.3-0.2 0.8-0.1 0.9 0 0.9 0 0.9 0.2 0.5 0.3 0.5 0.2 0.4 0.1 0.4-0.1 0.3-0.1 0.3-0.2 0.4-0.1 0.1 0 0.1-0.2 0.1-0.4 0-1.1-0.5-1.7-0.9-3.8-1.1-1.6-0.5-1.1-0.1-2.4-0.9-2.7-0.2-1.5-0.3-3.9-1.7-2.7-1.3-1.5-0.6-1-0.1-1.5-0.1-0.4-0.4-0.4 0.1-2.3-1-0.5 0.1-1.5-0.5-0.5-0.3-1-0.4-0.5 0.1-0.6-0.3-1.2-0.8-2.2-0.9-0.7-1.3-1.5-3.5-1-1.2-0.2-0.1-0.3-0.4-0.4-0.3-0.6-0.4-0.9-0.5-0.3-0.1-0.1-0.3 0.6-0.8-0.4-0.8-0.9-0.9-0.3-0.2z\",\n\tMXMOR:\n\t\t\"M600 487.3l-0.2-1-0.6-0.7-0.7-0.7-0.3-0.8-0.1-0.3-0.1-0.2-0.2-0.2-0.2-0.2-0.2-0.3-0.1-0.4 0-0.3-0.1-0.4 0-0.3-0.2-0.2-0.2-0.1-0.2-0.1-0.8-0.1-0.5 0.4-0.4 0.6-0.2 0.7 0 0.4-0.1 0.4 0 0.4-0.2 0.3-0.6 0-0.6 0-0.6 0-0.6 0-0.2-0.3-0.1-0.6-0.1-0.5-0.6 0-0.4 0-0.3-0.2-0.3-0.3-0.3-0.4-0.2-0.3-0.2-0.4-0.2-0.4-0.2-0.3-0.6-0.2-0.1-0.5-0.2-0.5-0.5-0.1-0.6-0.2-0.1-0.4 0.2-0.6 0.2-0.5 0.1-0.1 0.2-0.9 0.2-0.9 0.2-0.9 0-0.8 0-0.1 0-0.1 0.3-0.3 0.3-0.2 0.4-0.2 0.3-0.4 0.2-0.5 0.2-0.5 0.3-0.5 0.4-0.3 0.3-0.2 0.3-0.1 0.3-0.1 0.3-0.1 0.7-0.3 0.4-0.4 0.2-0.5-0.1-0.8-0.2-0.2-0.2-0.1-0.1-0.2-0.2-0.2-0.2-0.5 0.1-0.4 0.3-0.2 0.5-0.3-0.4-0.4-0.3-0.4-0.1-0.5 0.3-0.5 0.3-0.2 0.3-0.3 0.3-0.3 0.2-0.3 0.7 0.7 0.9 0.3 1 0.2 0.9 0.1 0.3 0 0.2 0.1 0.2 0 0.2 0 0.6 0.1 0.6 0.3 0.5 0.3 0.5 0.3 0.3 0.2 0.3-0.3 0.2-0.3 0.3-0.3 0.3-0.1 0.4 0 0.4 0 0.4 0 0.4 0.1 0.5 0.1 0.5 0.1 0.4 0.1 0.1 0 0 0.1 0.1 0 0.3 0.2 0.2 0.3 0.2 0.2 0.3 0.2 0.2 0 0.2 0 0.2 0 0.1 0.2 0 0.1 0.1 0.1 0 0.1 0 0.1 0.1 0.2 0.1 0.3 0 0.3 0.1 0.2 0.1 0.1 0 0.1 0.1 0.3 0.1 0.2 0.2 0 0.2 0 0.4 0.1 0.3 0 0.3 0.1 0.4 0 0.4-0.1 0.4 0 0.3-0.2 0.2-0.3 0.1-0.4 0.3-0.3 0.4-0.2 0.4-0.1 0.1-0.1 0.1-0.1 0.1 0 0.1-0.1 0 0.5-0.1 0.5 0 0.4 0 0.5-0.1 0.5-0.2 0-0.2-0.1-0.3 0.2 0.1 0.6 0.3 0.5 0.2 0.4-0.5 0.4-0.5 0.5-0.4 0.5-0.4 0.5-0.4 0.5 0.2 0.1 0.1 0.1 0.2 0.1 0.2 0.1 0 0.1 0 0.1 0 0.1-0.1 0.2 0 0.2 0.1 0.2 0.1 0.1 0.1 0.1 0.1 0.1 0 0.1 0.1 0 0.3 0.4 0.2 0.4 0.2 0.4 0.2 0.4 0 0.2 0 0.1-0.1 0.2-0.1 0.1-0.6 0-0.5 0-0.6-0.1-0.6-0.1 0.1 0.3 0 0.3 0.1 0.3 0 0.3 0.2 0.4 0.1 0.5 0 0.4 0.1 0.5 0.1 0.1 0 0.1 0.1 0.1 0.3 0.5 0.3 0.7 0.2 0.8 0.2 0.6 0.1 0.5 0.2 0.6 0.1 0.6-0.1 0.4-0.5 0.1-0.6-0.3-0.6-0.6-0.5-0.5-0.5-0.3-0.5-0.3-0.5-0.2-0.5 0.1-0.4 0.1-0.4 0-0.4 0.1-0.3 0.2-0.3 0.2-0.1 0.3-0.2 0.3-0.4 0.1-0.1 0-0.4 0.4-0.1 0.5-0.2 0.5-0.5 0.3-0.8 0.2-0.6 0.3-0.6 0.3-0.7 0.5z\",\n\tMXNAY:\n\t\t\"M394.1 396.4l-0.1 0.6 0 0.6-0.3-0.2-0.3 0.2-0.6-0.4-0.3-0.4 0.6-0.6 0.5 0.1 0.3-0.1 0.1 0.1 0.1 0.1z m-5.2-4.8l0.5 0 0.4 0.1 0 0.3 0.3 0.2 0 0.3-0.5 0.2-0.1 0.5-0.1 0.4-0.4-0.1-0.8-0.4-0.4 0-0.5-0.4-0.5-0.1-0.4-0.5 0.6-0.5 0.3-0.3 0.3 0 0.4-0.1 0.3 0.3 0.6 0.1z m-3.1-3.5l-0.1 0.3 0.1 0.3 0 0.2-0.2 0.1 0 0.2-0.2 0.2-0.2 0.2 0 0.2-0.1-0.1-0.1 0.1 0-0.2 0.1-0.2-0.2-0.2-0.2-0.1-1.2-0.4-1.1-0.7 0-0.1 0.1-0.2 0-0.2-0.2-0.3-0.2-0.4-0.3-0.4-0.1-0.2 0.2-0.1 0-0.3-0.1-0.4-0.2-0.2 0.5-0.2 0.6 0.2 0.6 0 0.4 0.2 1.1 0.5 0.4 0.3-0.1 0.3-0.1 0.4 0.4 0.4 0.2 0.2 0.2 0.3 0.1 0.1 0.1 0-0.2 0.2z m-4.3-5.5l0 0.2 0.1 0.1 0.1 0.4-0.2 0.2 0.1 0.2-0.6 0.4-0.3-0.6 0.2-0.4 0.2-0.5 0.1 0.1 0.3-0.1z m39.4 33.6l-0.6-1.3-0.9-0.8-0.6-0.3-0.2 0.2-0.5 0.5-0.7 0.2-0.9-0.5-1-0.1-1-0.5-0.6 0.4-0.3-0.4 0.3-0.3 0.3-0.3 0.3 0 0.2 0.1 0.6-0.3 0.3-0.8 0.2-0.4 0.2-0.7 0.2-0.3 0.1-0.2 0.3 0.1 0.4-0.6 0.6-1.2 1-0.8 0.3-0.1 0.2-0.4 0.5-0.4 0.3-0.6 0.2-0.4 0.2-0.4 0.4-0.1 0.2 0.2 0.3 0 0.3 0 0.6-0.5 0.4-0.6 0.1-0.9 0-0.8-0.2-0.4 0.2-0.8-0.1-0.8 0.5-0.7-0.2-2.4-0.6-1.8 0.4-1.5 0.3-0.5 0.5-0.9 0.5-0.2 0-0.3-0.3-0.6-0.1-0.7-0.2-0.4-0.3-0.3-0.4-0.3-0.4 0-0.1 0.4-0.4 0-0.5-0.5-1.1-0.5-2.1-1.3-0.7-0.4-0.9-0.9-0.5-1.3-2.4-4.9-2.4-3.9-0.5-1.1-0.2-1.7 0.2-4.4-0.2-2.1-0.8-2.8-0.6-2.3-0.4-1.6-0.4-1 0.2-0.1 0.4 0.5 0.4 0.8 0.5 0.5 0.5-0.4 0-0.5-0.1-0.6-0.2-0.6-0.1-0.5 0.6-0.2 0.6-0.1 0.6-0.2 0.7 0.2 0.4 0.3 0.4 0.3 0.4 0.4 0.4 0.4 1 0.3 1-0.2 0.6-0.6 0-1.1-0.1-0.8-0.2-0.8-0.3-0.7-0.2-0.8-0.2 0-0.1-0.1-0.2-0.1-0.1-0.1 0-0.1 0.1-0.3 0.1-0.2 0-0.2-0.3-0.2-0.3-0.1-0.3-0.1-0.2-0.3-0.2-0.4-0.1-0.3-0.2-0.2-0.3-0.2-0.3-0.2-0.2-0.1-0.2-0.3 0-0.3 0.1-0.6 0.5-0.7 0.5-0.6 0.5-0.5 0.5-0.4 0.5-0.4 0.6-0.4 0.3-0.4 0.3-0.4-0.1-0.3-0.1-0.3-0.3-0.4-0.2-0.5-0.1-0.4 0-0.4 0.2-0.6 0.4-0.5 0.4-0.3 0.7-0.1 0.7 0 1.5 0 1.5-0.1 1.5 0 1.5 0.2 1.4 0.5 1.3 0.6 1.4 0.8 1.3 0.7 0.6 0.3 0.4 0.3 0.3 0.4 0.3 0.6 0.3 0.9 0.4 0.8 0.3 0.8 0.3 0.8-0.2 0.4-0.7 0.7-0.7 0.6-0.4 0.4-0.5 0.6-0.3 0.4-0.2 0.5-0.1 0.8 0 0.8-0.1 0.9 0 1 0.1 0.6 0.8 0.1 0.8-0.5 0.8-0.6 0.6-0.6 0.8-0.6 0.9-0.6 0.8-0.7 0.9-0.6 0.6 0 0.9 0.5 1 0.6 0.6 0.4 0.2 0.3 0.2 0.4 0.1 0.4 0.1 0.4 0.2 1.1 0.3 1 0.4 0.9 0.8 0.7 0.7 0.5 0.8 0.5 0.9 0.4 0.7-0.1 1.1-0.4 1-0.5 1-0.4 1-0.5 0.2 1.2 0.2 1.3 0.1 1.2 0.2 1.2-0.1 0.4-0.1 0.4-0.2 0.4-0.1 0.5-0.4 1-0.4 1-0.3 1-0.4 1.1-0.4 0.8-0.1 0.6 0.2 0.5 0.6 0.6 1.1 1 1.1 1 1.1 1.1 1.1 1 0.9 1 0.9 1 0.8 1.1 0.8 1-0.1 0.5-0.3 0.8-0.4 0.9-0.2 0.6-0.2 0.5-0.1 0.5-0.1 0.5-0.1 0.5-0.2 1-0.4 0.9-0.5 0.7-0.6 0.8 1.9 1.2 1.9 1.1 1.9 1.1 1.7 1 0.2 0.1-0.3 0.3-0.2 0.5 0 1.3-0.2 0.6-0.4 0.5-1.6 1.5-0.6 0.4-0.6 0.1-2.3 0-1 0.2-0.2 0-0.3 0.5-0.3 0.4 0.1 0.6 0.2 0.7 0.1 0.5 0.1 0.6 0 0.6 0.1 0.6 0 0.1 0 0.2 0 0.1 0 0.1-0.1 0.7 0 0.6-0.2 0.7-0.3 0.5-0.1 0.3-0.2 0.3-0.1 0.3-0.2 0.3-0.4 0.8-0.3 0.9-0.3 0.8-0.1 1.1 0 0.5 0 0.5 0 0.4 0.1 0.5 0 0.3-0.1 0.2 0 0.2-0.1 0.2-0.6-0.4-0.7-0.3-0.6-0.4-0.4-0.5-0.3-0.6-0.6-0.5-0.6-0.3-0.7-0.4-0.5-0.4-0.5-0.4-0.4-0.5-0.3-0.6-0.6-0.8-0.6-0.4-0.7 0-0.8 0-0.7-0.1-0.5-0.3-0.5-0.5-0.4-0.5-0.3-0.2-0.2-0.2-0.3-0.2-0.2-0.2-0.4-0.4-0.3-0.2-0.3-0.1-0.5-0.2-0.3 0-0.3 0-0.3 0-0.3 0.1-1.2 0.8-1.2 1-1.2 0.8-1.4 0.3-0.3-0.1-0.3 0-0.3 0-0.2 0-0.2 0.1-0.1 0.1-0.2 0.1-0.1 0-0.1-0.2-0.1-0.3-0.1-0.2-0.4 0.1-1.1 0.5-0.9 0.9-0.8 1-0.6 1.1-0.6 0.9-0.8 0.9-0.7 1-0.5 1-0.3 0.2-0.4 0.2z\",\n\tMXNLE:\n\t\t\"M578.3 192.9l0.3 0.3 0.3 0.5 0.3 0.4 0.3 0.1 0.5 0.2 0.2 0.1 0.1 0.3 0.1 0.4 0.1 0.3 0.2 0.1 0.4 0.6-0.1 0-1.5 0.7-1.4 0.7-1.4 0.9-1.4 0.9-0.1 0.4 0 0.8 0.1 0.8 0.2 0.3 0.9 0.2 0.9 0.1 0.9 0.1 0.9 0.2 0.7 1 0.4 2.2 0.3 2.3 0.2 1.6 0.1 0.5 0.1 0.8 0.1 0.7 0.3 0.5 0.6 0.5 0.2 0.5-0.2 0.6-0.2 0.9-0.5 1.6-0.6 2.1-0.1 1.9 0.9 1.2 0.3 0 0.2 0 0.2 0.1 0.2 0.1 0.1 0 0.4 0.1 0.4 0.1 0.2 0 0.3 0.3 0.3 0.2 0.4 0.1 0.3 0.2 0.1 0.2 0.1 0.3 0.1 0.2 0.3 0.1-0.4 0.5-0.4 0.6-0.4 0.6-0.1 0.7 0 0.9-0.3 0.5-0.4 0.4-0.6 0.6 0.6 0 0.6 0 0.6 0 0.6-0.1 0.3 0.1 0.5 0.2 0.4 0.2 0.4 0.2 0.9 0.4 1.1 0.4 0.9 0.5 0.6 0.9 0.3 0.9-0.1 0.9-0.2 0.9-0.4 0.8-0.2 0.3-0.2 0.2-0.1 0.3 0 0.4 0 0.7 0 0.5 0.1 0.5 0.3 0.5 0.5 0.5 0.7-0.3 0.6-0.6 0.4 0 0.2 0.4 0.3 0.4 0.2 0.4 0.3 0.4 0.3 0.4 0.3 0.4 0.4 0.4 0.3 0.4 0.4 0.2 0.4 0 0.5 0 0.4-0.1 0.4 0.1 0.2 0.3 0.1 0.4 0.1 0.5 0.1 1.5 0.1 2 0.2 1.8 0.5 0.9 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2 0.1 0.3 0.1 0.2 0 0.1-0.2 0.1-0.2 0.2-0.2 0.2-0.1 0.6-0.1 0.5 0.3 0.4 0.4 0.5 0.5 0.7 0.8 0.7 0.7 0.7 0.7 0.8 0.8 0.3-0.7 0.4-0.9 0.5-0.8 0.4-0.5 0.6 0 0.8 0.2 0.8 0.3 0.6 0.2 0.5 0.1 0.4 0.1 0.5 0.1 0.4 0.2 0.8 0.2 0.7 0.2 0.7 0.2 0.7 0.2 0.4 0.8 0.1 1.7-0.1 1.8 0 1.2 0 1.6 0 1.6 0 1.7 0.1 1.6-0.1 1-0.1 1.4 0 1.4 0.2 0.8 0.4 0.1 0.7 0.1 0.7-0.1 0.5 0 0.4 0 0.3 0.2 0.1 0.2 0 0.6 0 0.6-0.4 0.4-0.5 0.4-0.4 0.4-1 0.8-1 0.9-1 0.8-1 0.8-1.6 1.4-1.5 1.3-1.6 1.3-1.6 1.3-0.6 0.5-0.5 0.4-0.6 0.3-0.7 0.1-0.7 0.1-0.7 0-0.6-0.3-0.5-0.6-0.4-0.7-0.4 0.1-0.3 0.6-0.4 0.6-0.5 0.2-0.2 0.4-0.3 0.4-0.5 0-0.6-0.1-0.2 0.2 0.1 0.5 0.2 0.5-0.4 0-0.6 0-0.3 0.2 0.1 0.4 0.3 0.3 0.4 0.4 0.3 0.5 0.2 0.3-0.2 0.4-0.3 0.4-0.3 0.4-0.3 0.3-0.4 0.7 0.1 0.7 0.2 0.7 0.3 0.7 0.1 0.3 0.1 0.3 0 0.2 0.1 0.3-0.7-0.2-0.8-0.2-0.8-0.3-0.6-0.3-0.5-0.4-0.4-0.2-0.2 0.2-0.4 0.5-0.3 0.3-0.3 0.2-0.3 0.1-0.3 0.1-0.7 0.1-0.5-0.1-0.4 0.1-0.5 0.4-0.1 0.2-0.1 0.2-0.1 0.1-0.3 0.2-0.2 0-0.2 0-0.2 0.1-0.2 0.1-0.3 0.3-0.2 0.4 0 0.4 0 0.6-0.1 0.3-0.2 0.2-0.2 0-0.3 0.2-0.2 0.2-0.2 0.2-0.2 0.1-0.3 0.1-0.2-0.1-0.2-0.2-0.3-0.1-0.2-0.1-0.5 0.2-0.7 0.2-0.6 0.3-0.5 0.3-0.5 0.5-0.5 0.4-0.5 0.5-0.5 0.4 0 0.7 0.2 0.8 0.3 0.9 0.3 0.7 0.7-0.3 0.8-0.3 0.7-0.3 0.8-0.4 0 0.4 0.1 0.4 0.1 0.4 0.1 0.4 0 0.1 0 0.1 0 0.1 0.1 0.4 0.1 0.4 0.1 0.4 0.1 0.4 0.1 0.7 0.1 0.6 0 0.5-0.2 0.7-0.3 0.8-0.2 0.8-0.2 0.8-0.2 0.8-0.1 1.1 0 1.6 0.2 1.4 0.5 0.8 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.4 0.5 0.5 0.4 0.5 0.5 0.5 0.4 0.5 0.4 0.5 0.3 0.4 0.5 0.1 0.7 0.1 0.3 0.1 0.4 0.1 0.4-0.1 0.3-0.3 0.1-0.4-0.1-0.4-0.1-0.3 0.1-0.6 0.9-0.6 0.8-0.6 0.9-0.5 0.8-0.5 0.5-0.8 0.2-0.9 0-0.8 0.1-0.8 0.1-0.8 0.1-0.8 0-0.9 0-0.3 0-0.3 0.1-0.3 0.1-0.2 0.1-0.4 0.5-0.4 0.6-0.3 0.6-0.2 0.5-0.4 0.8-0.4 0.8-0.3 0.8-0.3 0.8-0.2 0.3-0.2 0.3-0.1 0.4-0.1 0.3 0.4 1.2 0.3 1.2 0.3 1.2 0.4 1.2-0.8-0.2-0.8-0.3-0.7-0.3-0.7-0.3-1-0.2-0.8 0.4-0.8 0.7-0.7 0.8 0.5 0.3 0.8 0.5 0.7 0.5 0.2 0.5 0 0.4-0.1 0.5-0.1 0.4-0.1 0.5-1.9-0.3-1.9-0.1-2 0-1.9 0 0 0.4 0 0.4 0 0.4 0 0.4-0.1 0.3-0.3 0.1-0.4-0.1-0.4-0.1-0.9-0.2-0.7-0.3-0.4-0.6-0.4-0.9 0-0.1 0-0.2-0.1-0.2 0-0.2 0-0.2 0-0.1 0-0.2 0-0.2 0-0.6 0-0.5 0-0.5 0-0.6-0.1-0.5-0.2-0.4-0.2-0.5 0-0.4 0.1-0.6 0.2-0.5 0.2-0.5 0.1-0.5-0.1-0.5-0.1-0.4-0.1-0.4-0.2-0.4-0.3-1.1-0.3-1.2-0.1-1.1 0.1-1.1 0.3-1 0-0.9 0-1-0.2-1-0.9-1.1-1-1.1-0.8-1.2-0.5-1.4-0.2-1.6 0-1.7 0-1.7 0-1.7-0.1-0.9 0-1.1-0.1-1-0.2-0.9-0.4-0.6-0.5-0.6-0.5-0.6-0.5-0.6-1-1.4-1-1.4-1-1.5-1.1-1.3 0.3-1.5 0.4-1.4 0.5-1.5 0.4-1.5 0.1-0.8 0-0.7-0.1-0.7-0.3-0.8-0.2-0.9-0.2-0.6 0.1-0.5 0.6-0.5 0.6-0.3 0.5-0.4 0.1-0.5-0.4-0.6-0.5-0.4-0.4-0.5-0.5-0.4-0.6-0.1-0.6-0.5 0.3-1.2 0.9-1.3 0.6-0.8 1.6-1.1 1.7-1 1.8-0.5 1.9 0 0.7 0.1 0.8 0.3 0.7 0.3 0.7 0.2 0.7 0.2 0.6 0 0.7-0.1 0.7-0.3 0.5 0 0.6 0.1 0.6 0 0.4-0.2 0-0.2 0-0.4-0.1-0.4 0-0.3 0.1-0.2 0.3-0.2 0.3-0.1 0.2-0.1 0.9-0.2-0.3-0.5-0.9-0.6-0.8-0.4-0.4-0.4-0.2-0.2-0.3-0.1-0.6-0.1-0.5 0-0.5 0-0.5-0.1-0.5-0.1-0.6 0.1-0.5 0.1-0.6 0.2-0.5 0-0.3-0.3 0.1-0.3 0.1-0.2 0-0.3-0.8-0.7-1-0.2-1.1-0.3-0.7-0.8-0.1-0.1 0-0.2-0.1-0.1 0-0.2-0.7-0.6-1.1-0.4-0.8-0.5 0.1-0.6 0.8-0.2 0.9 0.3 1 0.5 0.8 0.2 0-0.4 0-0.4-0.1-0.4-0.2-0.3-0.4-0.2-0.5 0-0.4 0-0.3-0.1-0.1-0.3 0.1-0.4 0-0.3-0.1-0.3-0.3-0.3-0.2-0.1-0.2-0.1-0.3-0.1-0.8 0-0.5-0.1-0.5-0.3-0.5-0.6-0.8-1-0.7-1.1-0.6-1.1-0.5-1.2-0.2-1.1 0-1.2 0.1-1.2 0.2-1.2-0.2-0.8-0.7-0.5-0.8-0.3-0.6-0.6-0.3-0.8 0-0.9-0.1-0.9-0.3-0.8-0.3-0.5-0.5-0.5-0.5-0.4-0.5-0.1-0.5 0-0.4-0.1-0.3-0.3-0.4-0.5-0.2-0.5-0.2-0.5-0.1-0.5-0.1-0.6-0.7-1.1-1-1.1-1.1-1-0.9-0.8 1-0.9 1.1-1 1.1-0.9 1.1-1 2-1.7 1.9-1.7 2-1.7 2-1.7 0.3-0.2 0.2-0.3 0.3-0.2 0.3-0.2 0.3 0.9 0.2 0.9 0.3 0.9 0.3 1 0.6-0.5 0.5-0.4 0.4-0.5 0.5-0.5 1-1.3 0.6-1.6 0.5-1.6 0.4-1.7 0.1-0.6 0-0.7 0-0.6 0-0.6 0-0.8 0-1 0-1-0.2-0.7-0.6-0.3-0.8-0.1-0.7-0.1-0.6-0.4-0.3-0.6-0.2 0.1-0.1 0.4-0.2 0.4-0.2 0.1-0.3 0-0.2 0-0.2 0.2 0 0.2 0.2 0.2 0.1 0.1 0.1 0.2-0.2 0.5-0.3 0.2-0.4 0.1-0.7 0.1 0.1-0.8-0.4-0.3-0.5-0.2-0.5-0.2-0.1-0.9-0.1-1-0.1-1-0.1-1 0-0.6 0.3-0.4 0.5-0.3 0.6-0.3 0.6-0.4 0.6-0.4 0.7-0.4 0.6-0.4 0.4-0.4 0.3-0.4 0.3-0.5 0.4-0.2 0.9-0.3 0.8-0.3 0.8-0.3 0.9-0.4 0.2 0.1 0.1 0.2 0 0.3 0.2 0.1 0.2 0 0.3-0.1 0.3-0.1 0.3-0.1 0.6-0.8 0.4-1.6 0.3-1.8 0.2-1.3 0.3-1.2 0.2-1.3 0.3-1.3 0.5-1 0.8-0.9 1-0.8 1.1-0.7 1-0.6 0.2-0.2 0.4-0.3 0.3-0.3 0.2-0.1 0.4 0.3 0.4 0.3 0.4 0.4 0.4 0.3 0.9 0.8 0.9 0.8 0.9 0.8 1 0.7 0.2 0.3 0.2 0.2 0.3 0.2 0.2-0.1 0.4-0.4 0.4-0.4 0.4-0.4 0.4-0.3 0.8-0.7 0.7-0.7 0.7-0.7 0.8-0.7z\",\n\tMXOAX:\n\t\t\"M748.6 523.5l0.3 0.7 0 0.9-0.1 0.9 0 0.8 0 0.2 0 0.2 0 0.2 0 0.2-0.8-0.1-0.3 0.5 0 0.8 0 0.8 0 0.4 0 0.6 0 0.6-0.2 0.4-0.4 0.2-0.4 0.3-0.4 0.3-0.4 0.2-0.5 0.3-0.6 0.3-0.6 0.4-0.4 0.4-0.1 0.6 0.1 0.8 0.1 0.8 0.1 0.7 0 0.6 0 0.6-0.1 0.6-0.3 0.6-0.7 1-0.9 1.2-0.6 1.2 0.3 1.2 0.3 0.5 0.2 0.6 0.3 0.5 0.2 0.6 0.4 0.8 0.4 1 0.4 1 0 0.9 0 0.5-0.1 0.6-0.1 0.6-0.2 0.5-0.2 0.4-0.3 0.4-0.2 0.4-0.2 0.3-0.5-0.5-0.4-0.4-0.2-0.4-0.2-0.9-0.4-0.1-0.6 0.2-0.6 0.3-1.1 0.1-1.3-0.3-1.1-0.7-1-0.8-0.6-0.7-0.4-0.2-0.7-0.1-0.5 0.2 0 0.4 0.1 0.6 0 0.4-0.2 0-0.3-0.1-0.1 0.1 0 0.2 0.3 0.1 0.3 0 0 0.2-0.2 0.1-0.4 0.1 2.6 1.8 1.5 0.6 0.8-0.2-2.2-0.8 0-0.2 0.8 0 1.1 0.5 0.6 0.1 0.7-0.1 0.3 0.1 0.4 0.2 1 0.6 0 0.2-0.4 0 0 0.2 2.1 0.5 0.5 0.2-0.6 1.2-6.6-2.7-0.4-0.3-1-0.6-1.3-0.3-2.7 0 0.2 0-1.5 0-0.8-0.2-0.5-0.2-0.5 0.2-0.5 0-1.2 0-0.6-0.1-0.2-0.3 0.1-0.4 0.4-0.3 2.5-0.7 1-0.8 0.2-1.3-0.3-0.4-1.1-0.3-0.4-0.2-0.3-0.2-0.2-0.1-0.2 0.1-0.2 0-0.1 0.5-0.1 0.2-0.2 0-0.3 0.1-0.1 0.1-0.3 0.3-0.2 0.2 0 0.1-0.8 0.4-0.4 0.2-0.5 0.7-0.4 0.3-0.3-0.5-0.1-0.3 0-0.4 0.3-0.3 0.5-0.2 0.2-0.4-0.3-0.4-0.4-0.5-0.1-0.3 0-0.3-0.2-0.5-0.2-0.2-0.3-0.4-0.4-0.3-0.4-0.1-0.7 0.1-0.7 0.4-0.5 0.5-1.3 1.9-0.3 0.2-1.7 0 0.2 0.5-0.2 0.2-0.4 0-0.1 0.2-0.4 0.5 0.1 0.3 0.5 0.2 1.3 0.3 1 0.1 1 0 0.8-0.1 0.4 0 0.6-0.2 0.2-0.2 0.5-0.6 0.3 0 0.1 0.4-0.8 0.5-1.3 0.3-0.8 0 1 0.3 2.6-0.1 0.8 0.4 0.4 0.6-0.1 0.2-1.5-0.5-2.2 0.1-1.5 0.3-1.3 0.2-0.7 0.1-1.4 0.2-1.1 0-0.5-0.1-0.4 0-0.4 0-0.2 0.2 0.1 0.2 0.1 0.2-0.3 0.2-0.8-0.2-0.3 0.3-0.5 0-0.5 0-0.4 0.3 0 0.4-0.6 0.2-0.4 0.3 0 0.3-0.1 0.1-0.3 0.1-0.3 0.2-0.9 0.2-0.4 0.3-0.8 0.9 0.2 0.6-0.3 0.2-0.5 0.4-0.7 0.2-0.1 0.5-0.2 0.3-1.6 0-0.2 0.3-2.1 0.2-0.3 0.4-0.8 0.1-0.1 0.3-1.4 0.6-1.3 0-0.7 0.2-0.7 0.1-0.4 0.3-0.3 0.2 0 0.3-0.6 0.1-0.6 0.2-0.7 0.2-0.9 0.2-0.3 0.2-2.1 0.5-0.2 0.3-1 0.2-0.8 0.5-0.6 0.2-0.8 0.5-0.3 0-0.2 0.2-0.3 0.2-0.3-0.2-0.3 0.3 0.1 0.4-2.3 1.1-0.9 0.6-1.5-0.1-2.1 0.1-1.1-0.3-0.9-0.1-0.4 0.4-0.7 0.3-0.5 0.3-0.5 0.1-0.6 0-0.7-0.2-0.2 0.2-1.6-0.6-2-0.9-3.5-0.7-1.2 0-2.4-1.5-1.8-0.5-0.9-0.2-0.7-0.7 0.1-0.1-0.5-0.8-0.4 0.1-0.8-0.4-1.6-1-1.3-0.5-1.8-0.5-0.5 0.1-1.7-0.4-0.7 0.4-2.6-0.3-2-0.7-0.8 0.2-1.7-0.4-1.3-0.1-0.3 0.2-0.3 0.3-1-0.2-1.6-0.4-0.5-0.2-0.6-0.5-0.7-0.2-0.3-0.2-0.2-0.2-0.2-0.1-0.5-0.4-1.9-1.4-1.1-0.6-3-1.7-1-0.3-0.9-0.5-0.6-0.5 1.7 0.5 0.9 0.1 0.4-0.4-0.4 0-0.4-0.3-0.4-0.2-0.4 0.3-0.6-0.3-0.6-0.1 0-0.1-0.1-0.1-0.1-0.2-0.1 0-0.2 0.2-0.2 0.1-0.2 0.1-0.5-0.1-2.9-0.9-3.7-0.7-1.8-0.7-0.7-0.2-0.4-0.1-0.2-0.1 0-0.1 0-0.1 0.5-0.5 0.5-0.4 0.5-0.2 0.8-0.2 0.8-0.1 0.8 0 0.7-0.1 0.7-0.4 0.7-0.7 0.6-0.8 0.2-0.9-0.4-1.1-0.4-0.7-0.1-0.6 0.4-0.6 0.8-0.3 0.5 0 0.5 0.1 0.4 0 0.6-0.2 0.1 0 0-0.1 0.1-0.1 0-0.1 0.3-0.9-0.2-0.8-0.2-0.8-0.2-0.9 0.3-0.1 0.4-0.1 0.4 0 0.3 0.1 0.5 0.1 0.4-0.1 0.3-0.1 0.4-0.3 0.2 0 0.2-0.1 0.1-0.1 0.2-0.2 0.1-0.1 0-0.1 0.1-0.1 0-0.1 0.4-0.3 0.3-0.3 0.2-0.4 0.1-0.5 0-0.5 0.1-0.6 0.1-0.5 0.1-0.6 0-0.3 0-0.3 0-0.3 0.1-0.3 0.3-0.4 0.3-0.4 0.2-0.4 0.2-0.4 0.2-0.3 0.1-0.3 0.1-0.3 0.1-0.3 0-0.4 0-0.3-0.1-0.3-0.2-0.3-0.8-1.2-0.9-1.2-0.9-1.1-0.9-1.1-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.1-0.4-0.1-0.4 0-0.4 0-0.4 0-0.7-0.1-0.4-0.7-0.4-0.8-0.4-0.7-0.6-0.2-0.6-0.1-0.3-0.4-0.2-0.5 0.1-0.7 0.2-0.6 0.1-0.5-0.3-0.6-0.1-0.1 0-0.1-0.1-0.1 0.1-0.3 0.1-0.5 0.1-0.4-0.1-0.4-0.2-0.2-0.2-0.3-0.2-0.2-0.2-0.2 0-0.1-0.1 0-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.4 0-0.4 0-0.4 0.3-0.3 0.2-0.2 0-0.1-0.1-0.2-0.2-0.1-0.4-0.6-0.1-0.7 0.1-0.7 0.2-0.8 0.1-0.4 0.1-0.4 0.1-0.4 0.1-0.4 0.1-0.5 0.1-0.6 0.2-0.6 0.2-0.5 0.3-0.7 0.2-0.5-0.1-0.5-0.5-0.6 0.1-0.1 0.2-0.1 0.1-0.1 0.2-0.1 0.1-0.2 0.1-0.1 0.2-0.1 0.1-0.1 0.2 0.1 0.2 0.1 0.3 0.1 0.2 0.1 1-0.1 0.8-0.8 0.6-1 0.4-1 0.2-0.3 0.3-0.2 0.4-0.1 0.4 0 0.3 0 0.2 0 0.3 0 0.2 0 0.5 0 0.5 0.1 0.4 0 0.5 0 0.3 0 0.3 0 0.2 0 0.3 0 0.3-0.1 0.2 0 0.3-0.1 0.2 0 0.3-0.1 0.4-0.1 0.3 0 0.3 0.1 0.2 0.3 0.1 0.4 0.1 0.5 0 0.4 0 0.2 0.1 0.2 0 0.2 0.1 0.2 0.1 0.5 0.2 0.4 0.3 0.2 0.5 0 0.3-0.1 0.4-0.2 0.3-0.1 0.4-0.2 0.3-0.2 0.3-0.2 0.3-0.3 0.3-0.3 0.3-0.2 0.3-0.3 0.2-0.2 0.2-0.4-0.1-0.3 0-0.2-0.1-0.3 0-0.3-0.3-0.4-0.2-0.3-0.3-0.4-0.3-0.3-0.1 0-0.1-0.1-0.1-0.1-0.5-0.3-0.3-0.4-0.1-0.6 0.2-0.5 0.2-0.3 0.2-0.4 0.2-0.3 0.2-0.4 0.3-0.5 0.2-0.5 0.3-0.5 0.3-0.5 0.3-0.5 0.3-0.5 0.3-0.4 0.4 0.1 0.8-0.2 1-0.9 0.9-0.4 0 1.2-0.3 1-0.5 1.3-0.3 1.3 0.1 0.9 0.3 0.5 0.5 0.3 0.5 0.2 0.4 0.3 0.3 0.2 0.2 0.2 0.3 0.1 0.2 0.2 0.3 0.3 0 0.4 0 0.5 0.1 0.5 0.2 0.3 0.2 0.3 0.3 0.4 0.2 0.3 0.2 0.4 0.4 0.2 0.4 0.2 0.4 0 0.4-0.1 0.3-0.2 0.3-0.4 0.1-0.4 0.7-1.6 1-1.3 1.2-1 1.5-0.6 0.1-0.1 0.1 0 0.1 0 0.6-0.2 0.6-0.1 0.6 0.1 0.6 0.2 0.5 0.3 0.4 0.2 0.5 0.2 0.5 0.1 0.1 0 0.1 0 1 0.3 0.9 0.3 0.9 0 0.8-0.7 0.2-0.2 0.1-0.2 0.1-0.2 0.1-0.3 0.1 0 0-0.1 0.1 0 0.1-0.2 0.1-0.2 0.2-0.2 0.1-0.1 0.1-0.2 0.2-0.1 0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.4-0.3 0.4-0.2 0.5-0.1 0.4-0.1 0.2-0.1 0.2-0.1 0.2-0.1 0.2-0.1 0.5-0.4 0.4-0.5 0.2-0.5 0.3-0.7 0.3-0.5 0.3-0.5 0.2-0.5 0.1-0.6 0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.7-0.7 0.7-0.8 0.6-0.9 0.3-0.9-0.1-1-0.3-1.1-0.3-1-0.2-0.9 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 1.1 0.9 0.9 0.6 1.1 0.4 1.3 0.2 0.9 0.2 0.6 0.3 0.5 0.5 0.3 0.8 0.2 1.2 0.5 1.4 0.5 1.2 0.8 0.9 0.2 0.2 0.2 0.2 0.3 0.1 0.2 0.1 0.4 0.3 0.4 0.4 0.3 0.4 0.3 0.5 0.2 0.8 0.2 0.9 0.2 0.8 0.3 0.2 0.1 0.1 0.2 0.1 0.1 0.1 0.4 0 0.3-0.1 0.3 0.1 0.1 0.2-0.1 0.3 0 0.2 0.3 0.4 0.3 0.1 0.4 0.1 0.4 0.1 0.4-0.1 0.1-0.2 0.4-0.5 0.2-0.2 0.4 0 0.6 0.1 0.3 0.2 0.4 0 0.5 0 0.3 0 0.1 0 0.1 0 0.1 0 0.3-0.1 0.3 0 0.2 0 0.3 0.1 0.3 0.2 0.3 0.2 0.4 0.1 0.3 0.1 0.3 0 0.2 0.1 0.3 0.1 0.2 0 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0.6 0.8 0.4 1 0.3 1 0.5 0.9-0.5 1.5-0.8 1.2-0.9 1.1-1 1.1-0.1 0.2-0.1 0.1 0 0.1-0.1 0.2-0.3 0.9 0 0.8 0.3 0.9 0.5 0.9 0.6 1.2 0.6 1.2 0.6 1.2 0.6 1.2 0.4 0.5 0.4 0.2 0.5 0.1 0.5 0.2 0.1 0 0.1 0.1 0.1 0 0.1-0.1 0.7-0.1 0.5-0.3 0.5-0.2 0.6 0 0.5 0.2 0.3 0.1 0.4-0.1 0.3-0.4 0.3 0 0.3 0 0.2-0.1 0.1-0.2 0-0.2 0-0.1 0.1-0.2 0.1 0 0.4-0.2 0.5-0.3 0.5-0.3 0.3-0.1 0.4-0.1 0.3-0.3 0.2-0.4 0.2-0.3 0.6-0.3 0.6-0.2 0.7 0 0.6 0 0-0.2 0.1-0.1 0.1-0.1 0.1-0.2 0.8-0.1 0.6-0.2 0.3-0.5 0.3-0.7 0.3-0.1 0.3 0.1 0.3 0.1 0.3 0.1 0.2-0.1-0.1-0.2-0.2-0.3 0.2-0.2 0.2 0 0.3 0 0.3 0 0.1 0 0.3 0.2 0.1 0.4-0.1 0.4 0 0.4-0.1 0.2 0 0.4-0.1 0.3 0 0.2-0.2 0.2-0.3 0.1-0.3 0.1-0.3 0.2-0.1 0.3-0.1 0.4-0.1 0.3 0 0.4 0.9 1 0.8 1 0.9 1 0.9 1 0.5 0.4 0.4 0.4 0.4 0.4 0.3 0.5 0.7 0.2 0.8 0.3 0.7 0.5 0.4 0.5 0.1 0.2 0 0.2 0.1 0.3 0 0.2-0.1 0.1-0.1 0.1-0.1 0-0.1 0.2 0.2 0.4 0.1 0.5 0.2 0.5 0.1 0.5 1 0.6 1.8 0.2 2 0.1 1.5 0 1 0.1 0.9 0.1 1 0 1 0.1 0.8 0.1 0.9 0.1 0.9 0 0.8 0.1 4.5 0.3 4.5 0.2 4.5 0.3 4.4 0.3z\",\n\tMXPUE:\n\t\t\"M630.2 422.3l0.4-0.2 0.3-0.3 0.3-0.4 0.2-0.5 0.2-0.6 0.1-0.6 0.1-0.6 0-0.7 0-0.3-0.1-0.4 0-0.3-0.1-0.3-0.2-0.2-0.2-0.3-0.1-0.3 0.4-0.1 0.3-0.2 0.2-0.3 0-0.5 0-0.4 0.2-0.3 0.4-0.2 0.3-0.1 0.3-0.3 0-0.4-0.1-0.5 0-0.5 0.3-0.5 0.3-0.1 0.4 0 0.3 0.1 0.3 0.2 0.8 0 0.5-0.1 0.5 0.1 0.7 0.6 0.4 0.5 0 0.7 0 0.6 0 0.7 0.2 0.6 0.3 0.5 0.4 0.5 0.3 0.5-0.3 0.4-0.3 0.4-0.1 0.3 0.5 0.2 0.3 0 0.3 0 0.4-0.1 0.3 0 0.3 0.1 0.4 0.1 0.4 0.1 0.4 0.1 0.6 0.3 0.5 0.8 0.3 0.9 0 0.7 0 0.2-0.1 0.1-0.1 0.1-0.2 0.1-0.3 0.5-0.3 0.6-0.4 0.6-0.4 0.4-0.5 0.1-0.4-0.2-0.3-0.4-0.3-0.5-0.5-0.4-0.3 0.1-0.3 0.3-0.4 0.4-0.4 0.1-0.4-0.1-0.4 0-0.3 0.3 0.2 0.5 0.2 0.5 0 0.5-0.1 0.5 0 0.3 0.1 0.2 0.1 0.2 0.1 0.2-0.1 0.3-0.1 0.4-0.2 0.3-0.2 0.4 0.2 0.5 0.4 0.4 0.6 0.2 0.4 0.3 0.2 0 0.1 0.2 0.1 0.1 0.1 0.1 0 0.1 0.1 0 0 0.1 0 0.1 0.2 0.5 0.2 0.5 0.3 0.3 0.5 0 0.1 0 0.1-0.1 0.1 0 0.8-0.3 0.5 0.1 0.2 0.6 0.1 0.8 0 0.3 0.1 0.1 0.1 0.2 0.2 0.1 0.1 0 0.1 0 0.1 0 0.2-0.1 0.2-0.1 0.2-0.2 0.2-0.1 0.3-0.3 0.3-0.4 0.3-0.3 0.2-0.4 0.4-0.5 0.3-0.7 0.3-0.5 0.6-0.4 0.2 0 0.1 0 0.1 0 0.1 0 0.8-0.3 0.6 0.1 0.6 0.3 0.8 0.6 0.4 0.3 0.5 0.4 0.5 0.3 0.6 0.2 0.2 0.2 0.3 0.1 0.2 0.1 0.3 0.1 1.1 0.4 1.1 0.4 0.5 0.7-0.5 1.3-0.4 0.4-0.4 0.4-0.4 0.4-0.3 0.4-0.3 0.3-0.2 0.2-0.2 0.3-0.2 0.3-0.5 0.4-0.4 0.5-0.4 0.6-0.3 0.6-0.1 0.1 0 0.1-0.1 0.1-0.1 0.1-0.1 0.2-0.1 0.2 0 0.2 0 0.2 0 0.3 0 0.2 0 0.3 0.1 0.2 0.1 1.3-0.1 1.8-0.5 1.7-0.9 0.9-0.5 0-0.3 0.5-0.2 0.8 0 0.6 0 0.1 0 0.1 0 0.1-0.1 0.5 0.3 0.3 0.4 0.2 0.4 0.3 0 0.2-0.1 0.3 0 0.3 0.1 0.2 0.2 0.1 0.2 0.1 0.1 0.2 0.2 0.1 0.3 0.6-0.3 0.5-0.5 0.3-0.6 0.1-0.4-0.1-0.5 0.1-0.2 0.2 0.2 0.5 0.4 0.2 0.4 0 0.5 0 0.4 0.1 0.2 0.2 0.1 0.3 0.2 0.2 0.2 0.2 0.3-0.1 0.4-0.1 0.3-0.2 0.3 0.1 0.5 0.5 0.4 0.7 0.4 0.6 0.5 0.3 0.1 0 0.1 0 0.2 0 0.1 0.1 0.7 0.1 0.8 0.4 0.8 0.2 0.6-0.1 0-0.1 0.1 0 0.4-0.2 0.4-0.1 0.3 0.1 0.4 0.1 0.4 0.2 0.4 0.1 0.4 0.3 0.3 0.2 0 0.2 0 0.2-0.2 0.1-0.1 0.2-0.2 0.1-0.2 0.2-0.1 0.1-0.1 0.2-0.2 0.2-0.1 0.1-0.1 0.2-0.1 0.1-0.2 0.2-0.2 0.2-0.2 0.1-0.2 0-0.1 0-0.1 0-0.1 0-0.1-0.1-0.3 0.1-0.2 0.1-0.1 0.2-0.1 0.3-0.3 0.3-0.6-0.1-0.6-0.3-0.5-0.1-0.4 0.2-0.3 0.2-0.4 0.2-0.4 0.2-0.3 0-0.4 0.1-0.3 0-0.3 0.1-0.2 0.8 0 0.9 0.2 1 0.2 0.7 0.1 0.3 0.1 0.4 0.1 0.3 0 0.4 0 0.1 0 0.2 0 0.1 0 0.1 0 0.1 0 0.1 0 0.1 0.1 0 0 0.2 0 0.1 0 0.1 0 0.1 0.1 0.4 0.2 0.3 0.1 0.4 0.1 0.3 0 0.7-0.2 0.2-0.5 0.1-0.6 0.2-0.3 0.2-0.2 0.3-0.1 0.4-0.2 0.3-0.2 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.1 0 0 0.1-0.3 0.8 0.1 0.9 0.3 1 0.3 0.8 0.2 0.3 0.2 0.2 0.2 0.3 0.2 0.1 0.6 0.2 0.4-0.1 0.5-0.2 0.4-0.2 0.4 0 0.3 0.2 0.3 0.2 0.3 0 0.3 0.1 0.3 0 0.3 0.1 0.3 0.1 0 0.1 0.1 0.1 0.1 0.2 0.1 0.2 0 0.3 0 0.2 0.1 0.6 0.4 0.5 0.3 0.3 0.2 0.5-0.2 0.5-0.3 0.5-0.1 0.6 0.3 0.4 0.4 0.1 0.4 0 0.5-0.1 0.4 0.2 0.4-0.1 0.4-0.3 0.4-0.4 0.3-0.2 0.4-0.2 0.4 0 0.4-0.1 0.4-0.1 0.7-0.2 0.7-0.2 0.7-0.1 0.8-0.2 0.1 0 0.1 0 0.7-0.1 0.3 0.6 0 0.9 0.1 0.7 0.4 0.6 0.5 0.5 0.5 0.5 0.3 0.5-0.1 0.6-0.2 0.5-0.3 0.5-0.3 0.5-0.3 0.7-0.2 0.5-0.4 0.5-0.5 0.4-0.2 0.1-0.2 0.1-0.2 0.1-0.2 0.1-0.4 0.1-0.5 0.1-0.4 0.2-0.4 0.3-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.2-0.1 0.1-0.2 0.1-0.1 0.2-0.1 0.1-0.2 0.2-0.1 0.2-0.1 0.2-0.1 0 0 0.1-0.1 0-0.1 0.3-0.1 0.2-0.1 0.2-0.2 0.2-0.8 0.7-0.9 0-0.9-0.3-1-0.3-0.1 0-0.1 0-0.5-0.1-0.5-0.2-0.4-0.2-0.5-0.3-0.6-0.2-0.6-0.1-0.6 0.1-0.6 0.2-0.1 0-0.1 0-0.1 0.1-1.5 0.6-1.2 1-1 1.3-0.7 1.6-0.1 0.4-0.3 0.4-0.3 0.2-0.4 0.1-0.4 0-0.4-0.2-0.4-0.2-0.2-0.4-0.2-0.3-0.3-0.4-0.2-0.3-0.2-0.3-0.1-0.5 0-0.5 0-0.4-0.3-0.3-0.2-0.2-0.3-0.1-0.2-0.2-0.3-0.2-0.4-0.3-0.5-0.2-0.5-0.3-0.3-0.5-0.1-0.9 0.3-1.3 0.5-1.3 0.3-1 0-1.2-0.9 0.4-1 0.9-0.8 0.2-0.4-0.1-0.3 0.4-0.3 0.5-0.3 0.5-0.3 0.5-0.3 0.5-0.2 0.5-0.3 0.5-0.2 0.4-0.2 0.3-0.2 0.4-0.2 0.3-0.2 0.5 0.1 0.6 0.3 0.4 0.5 0.3 0.1 0.1 0.1 0.1 0.1 0 0.3 0.3 0.3 0.4 0.2 0.3 0.3 0.4 0 0.3 0.1 0.3 0 0.2 0.1 0.3-0.2 0.4-0.2 0.2-0.3 0.3-0.3 0.2-0.3 0.3-0.3 0.3-0.3 0.2-0.3 0.2-0.4 0.2-0.3 0.1-0.4 0.2-0.3 0.1-0.5 0-0.3-0.2-0.2-0.4-0.1-0.5-0.1-0.2 0-0.2-0.1-0.2 0-0.2 0-0.4-0.1-0.5-0.1-0.4-0.2-0.3-0.3-0.1-0.3 0-0.4 0.1-0.3 0.1-0.2 0-0.3 0.1-0.2 0-0.3 0.1-0.3 0-0.2 0-0.3 0-0.3 0-0.5 0-0.4 0-0.5-0.1-0.5 0-0.2 0-0.3 0-0.2 0-0.3 0-0.4 0-0.4 0.1-0.3 0.2-0.2 0.3-0.4 1-0.6 1-0.8 0.8-1 0.1-0.2-0.1-0.3-0.1-0.2-0.1-0.2-0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.2-0.2 0.1-0.1 0.1-0.2 0.1-0.1 0.1-0.4-0.4-0.4-0.4-0.4-0.5-0.4-0.4-0.4-0.3-0.3-0.1-0.3 0-0.5 0.1-0.9 0.2-1 0.1-1-0.1-0.9-0.2-0.2 0-0.3-0.1-0.3-0.2-0.2-0.1-0.6-0.1-0.6-0.1-0.6-0.2-0.6-0.1-1.3-0.6-1.1-0.7-0.7-1.1-0.4-1.4-0.3-0.2-0.7-0.1-0.7-0.1-0.5-0.1-0.4-0.2-0.2-0.5-0.1-0.6 0-0.6-0.4-0.2-0.3 0.3-0.4 0.2-0.5-0.3-0.3-0.3-0.2-0.4 0-0.3 0-0.5-0.2 0.1-0.2 0-0.2 0.1-0.2 0 0-0.4-0.2-0.4-0.1-0.3-0.2-0.4 0-0.5 0-0.5 0-0.4-0.1-0.5 0.7-0.5 0.6-0.3 0.6-0.3 0.8-0.2 0.5-0.3 0.2-0.5 0.1-0.5 0.4-0.4 0.1 0 0.4-0.1 0.2-0.3 0.1-0.3 0.3-0.2 0.3-0.2 0.4-0.1 0.4 0 0.4-0.1 0.5-0.1 0.5 0.2 0.5 0.3 0.5 0.3 0.5 0.5 0.6 0.6 0.6 0.3 0.5-0.1 0.1-0.4-0.1-0.6-0.2-0.6-0.1-0.5-0.2-0.6-0.2-0.8-0.3-0.7-0.3-0.5-0.1-0.1 0-0.1-0.1-0.1-0.1-0.5 0-0.4-0.1-0.5-0.2-0.4 0-0.3-0.1-0.3 0-0.3-0.1-0.3 0.6 0.1 0.6 0.1 0.5 0 0.6 0 0.1-0.1 0.1-0.2 0-0.1 0-0.2-0.2-0.4-0.2-0.4-0.2-0.4-0.3-0.4-0.1 0 0-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2 0-0.2 0.1-0.2 0-0.1 0-0.1 0-0.1-0.2-0.1-0.2-0.1-0.1-0.1-0.2-0.1 0.4-0.5 0.4-0.5 0.4-0.5 0.5-0.5 0.5-0.4-0.2-0.4-0.3-0.5-0.1-0.6 0.3-0.2 0.2 0.1 0.2 0 0.1-0.5 0-0.5 0-0.4 0.1-0.5 0-0.5 0-0.1 0.1-0.1 0-0.1 0-0.1 0.1-0.3 0-0.3-0.1-0.2-0.2-0.2-0.1-0.4 0-0.4 0-0.5 0-0.3 0-0.3 0.1-0.3 0-0.3 0-0.2 0-0.3 0.1-0.3 0.2-0.2 0.2-0.1 0-0.4-0.1-0.4 0-0.4-0.1-0.4 0-0.4-0.1-0.4-0.1-0.4-0.1-0.4 0-0.1 0-0.1 0-0.1-0.2-0.8-0.3-0.9-0.1-0.9 0.2-0.8 0.1-0.4 0.1-0.4 0.2-0.3 0.3-0.3 0.8 0.2 0.9 0.3 0.9 0.2 0.8-0.1 0.5-0.3 0.3-0.1 0.3 0.1 0.5 0.4 0.1 0.1 0 0.1 0 0.1 0 0.1 0 0.4 0.2 0.4 0.1 0.3 0.2 0.3 0.2 0.4 0.1 0.3 0 0.4 0.3 0.2 0.1 0 0.1 0.1 0.1 0 0.4 0.4 0.4 0.4 0.3 0.4 0.2 0.5 0.1 0.2 0.1 0.2 0.1 0.3 0.1 0.2 0.1 0.2 0.1 0.2 0.1 0.2 0.2 0.1 0.2 0.2 0.2 0.2 0.2 0.1 0.3 0.1 0 0.1 0.1 0 0.1 0.1 0.2 0.1 0.1 0.1 0.1 0.1 0.1 0 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0 0.1 0.1 0.2 0.1 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.3 0.2 0.3 0.2 0.4 0.3 0.3 0.6 0.2 0.6-0.2 0.6-0.3 0.6-0.1 0.7-0.3 0.6-0.7 0.5-0.8 0.5-0.7 0.3 0 0.2 0.1 0.3 0.1 0.2 0.2 0.1 0 0.1 0 0.1 0.1 0.1 0 0.1 0.1 0.2 0.1 0.2 0 0.2 0.1 0.1 0.1 0.7 0.3 0.6 0.3 0.7 0.1 0.6-0.3 0.2-0.2 0.3-0.3 0.2-0.2 0.2-0.2 0.2-0.5-0.4-0.5-0.4-0.5-0.3-0.6 0-0.1 0.2-0.3 0.3-0.2 0.3-0.2 0.3-0.1 0.1-0.1 0.2-0.2 0.1-0.1 0.1-0.1 0.7 0.2 0.8 0.2 0.8 0.1 0.5-0.4 0.1 0.1 0 0.1 0.1 0 0 0.1 0.7 0.4 0.9 0 0.8-0.4 0.6-0.7 0.2-0.8-0.3-0.6-0.5-0.2-0.8 0.1-0.4-0.1-0.3-0.3-0.3-0.2-0.3-0.3-0.3-0.4-0.3-0.4-0.4-0.4-0.3-0.3-0.5-0.3-0.5 0-0.5 0.2-0.5 0.3-0.5 0.2-0.2-0.4-0.1-0.6-0.2-0.4-0.2 0-0.2-0.1-0.1-0.2 0-0.3 0.1-0.3 0.2-0.1 0.3 0 0.3-0.1 0.2-0.8-0.9-0.5-1.1-0.3-0.8-0.3-0.5-0.4-0.3-0.5-0.4-0.4-0.5-0.2-0.6-0.1-0.4-0.1-0.2-0.3 0.3-0.5 0.1-0.9-0.5-0.9-0.5-0.3-0.3 0.4 0 0.6 0.1 0.3-0.1 0.3-0.5 0.2-0.4 0-0.4 0-0.3 0-0.4-0.1-0.8-1-0.7-1.2-0.7-1.3-0.7-1.1-0.2-0.7 0.1-0.7 0.4-0.7 0.5-0.7 0.1-0.1 0-0.1 0.1-0.1 0.1-0.1 0.2-0.3 0.2-0.3 0.3-0.4 0.2-0.3 0.2-0.9 0.3-0.8 0.4-0.7 0.7-0.5 0.5-0.6 0-0.5-0.3-0.5-0.3-0.5 0-0.3 0-0.3 0-0.2 0-0.3-0.4-1.2-0.7-0.3-1 0.1-1 0.5-0.3 0-0.2 0-0.2-0.2-0.1-0.2-0.3-0.2-0.2-0.3 0-0.3 0.2-0.3 0.2-0.5 0.1-0.6 0.2-0.5 0.4-0.4 0.1 0 0.1 0 0.1 0 0.2-0.1 0.4 0 0.5-0.1 0.5 0 0.3-0.2 0.2-0.4 0.3-0.4 0.2-0.3 0.2-0.4 0.3-0.5 0.6-0.4 0.7-0.3 0.6-0.3 0.1-0.2 0.2-0.2 0.2-0.2 0.1-0.2 0.2-0.2 0.2-0.2 0.2-0.2 0.2-0.3 0.1-0.1z\",\n\tMXQUE:\n\t\t\"M569.2 439.1l-0.7-0.3-0.5-0.4-0.3-0.6 0-0.8 0-0.2 0-0.2 0-0.2 0-0.2 0-1.7-0.6-1.7-1.1-1.5-1.4-0.7-0.2-0.2-0.4-0.1-0.3-0.1-0.3-0.1-0.3-0.7-0.5-0.3-0.6-0.3-0.3-0.7-0.3-0.8-0.5-0.6-0.6-0.6-0.6-0.7-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.1-0.4-1.1-0.1-1 0-1.1-0.1-1.2-0.3-0.5-0.4-0.6-0.3-0.6-0.4-0.5-0.6-1.3-0.3-1.2 0.1-1.3 0.6-1.3 0.3-0.5 0.2-0.4 0.2-0.5 0.1-0.5 0-0.6 0.1-0.5 0.1-0.5 0.4-0.4 0.3-0.6 0.4-0.7 0.4-0.5 0.6-0.1 0.4 0.6 0.1 0.6 0.2 0.6 0.9 0.3 0.6 0.1 0.5 0.1 0.6 0 0.6-0.2 0.4-0.3 0.5-0.4 0.5-0.2 0.5 0 0.1 0.1 0.1 0 0.1 0.1 0.4 0.5 0.4 0.6 0.4 0.3 0.6 0 0.3-0.1 0.2-0.3 0.1-0.3 0.2-0.2 0.3-0.1 0.3 0 0.2-0.1 0.3-0.3 0.3-0.6 0.1-0.7 0.1-0.8 0-0.7 0.1-1.1 0.1-1.1 0.2-1.1 0.4-1.1 0.4-0.6 0.7-0.4 0.8-0.3 0.7 0 0.5 0.1 0.4 0.1 0.4 0.2 0.4 0.4 0.5 0.5 0.8 0.2 0.8-0.2 0.8-0.2 0.4-0.2 0.1-0.3 0.1-0.3 0.2-0.3 0.3-0.2 0.3-0.2 0.4-0.1 0.3-0.2 0.4-0.3 0.2-0.4-0.1-0.4-0.3-0.3-0.8-0.1-0.8-0.1-0.5-0.5-0.1-0.9 0.1-0.4 0.1-0.3 0-0.2-0.1-0.5-0.1-0.4 0-0.4 0.2-0.4 0-0.4 0.3-0.9 0.4-0.9 0.5-0.8 0.8-0.3 0.4 0.2 0.4 0.2 0.4 0.2 0.2 0.3 0.2 0.3 0.2 0.1 0.2 0.1 0.2 0.2 0.2 0.3 0.1 0.4 0.2 0.4 0.3 0.2 0.2 0.1 0.3 0.3 0.2 0.2 0.3 0.2 0.3 0 0.2-0.1 0.1-0.1 0.3-0.1 0.6 0 0.8 0 0.7-0.1 0.4-0.6 0.2 0 0.2-0.1 0.2 0 0.3-0.1 0.3-0.1 0.4 0.1 0.4 0 0.3 0 0.2-0.2 0.1-0.2 0.2-0.2 0.1-0.2 0.1-0.2 0.1-0.3 0.2-0.2 0.2-0.2 0.1-0.3 0.1-0.4 0-0.4 0.2-0.3 0.2-0.1 0.1-0.1 0.2 0 0.1 0.1 0.4 0.2 0.2 0 0.2-0.1 0.3-0.2 0.3-0.3 0-0.3 0-0.3 0-0.3 0.5-0.5 0.7-0.4 0.5-0.5 0-0.7 0 0.2 0.1 0.1 0 0.2 0.1 0.1 0.2 0.8 0.2 0.7 0.2 0.8 0.2 0.7 0.3 0.8 0.2 0.8 0.3 0.8 0.4 0.7 0.2 0.4 0.2 0.6 0.2 0.5 0.1 0.4-0.1 0.6-0.1 0.6-0.1 0.6-0.2 0.6 0.6-0.1 0.5 0.1 0.5 0.3 0.4 0.4 0 0.1 0 0.3 0 0.2 0 0.2 0 0.6 0 0.7 0.1 0.7-0.3 0-0.4-0.1-0.3 0-0.2 0.2-0.2 0.1-0.2 0-0.7-0.1-0.9 0.4-1.3 1.1-0.9 0.2-0.5-0.3-1-0.6-0.6 0-0.3 0.1-0.4 0.6-0.3 0.2-0.6 0.1-0.2 0.1-0.4 0.5 0 0.4 0.7 1.2 0 0.5-0.2 0.4-0.6 0.9-0.2 0.5-0.1 1.1-0.2 0.6-0.2 0.3-0.3 0.2-1.6 1-0.6 0.9-0.3 1-0.5 2 0 0.3 0.1 0.7 0.2 0.5 0.3 0.5 0.2 0.1 0.1 0.2-0.4 0.1-0.4 0.2-0.2 0.2-0.3 0.2-0.2 0.1-0.2 0-0.2 0.1-0.2 0.1-0.1 0.2-0.1 0.2-0.1 0.2-0.1 0.2-0.2-0.1-0.1-0.1-0.1 0-0.2-0.1-0.2 0.2-0.2 0.2-0.1 0.3-0.2 0.3-0.2 0.3-0.4 0.3-0.5 0-0.4-0.1-0.1 0.1 0 0.1-1 0.1-1.1 0.4-1 0.5-1 0.4 0 0.1 0.1 0.2 0 0.2 0 0.1-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.1 0.7-0.6 0.4-0.7 0.5-0.7 0.4-0.6 0.4 0.3 0.5 0.4 0.5 0.3 0.4 0.4 0.5-0.8 0.1-0.6 0.2-0.4 0.3-0.6 0.7-0.3 0.4-0.3 0.4-0.3 0.4-0.3 0.4-0.5 0.7-0.4 0.7-0.4 0.7-0.5 0.6-0.1 0-0.1 0.1 0 0.1-0.1 0.1-0.3 0.4-0.2 0.5-0.3 0.5-0.3 0.5z\",\n\tMXROO:\n\t\t\"M884.3 499.4l-0.2-2.5 0.3-0.4 2.5-3 0.6-1.7 0-1.9-0.2-2.2-0.5-2.7 0.1-0.6 0.3-0.7 0.1-0.7-0.5-0.2-0.4-0.2 0.1-0.5 0.3-0.5-0.2-1.5-1-1.3-0.2-1.8 0.9-6-0.1-2.2 1.3-1.4 0.4-0.8 0-1 0.1-0.5-0.1-2.2 0.2-1.9-0.6-2.2-2.8-3.5-3.5-3.1-1.8-1.3-1.6-1.3-1.2-1.8 0.6-1.1 0.4-1.1 0.3-1 0.1-0.9-0.1-1 0.8-0.4 0.9 0.1 3.1-0.4 0.8-0.8 0.7-0.8 1.8-0.6 0.9-0.6 3.2-0.1 0.5-0.1 0.5-0.3 0.3-0.3 1.7-1.7 0.8 0.4 0.6 0.6 0.3-0.5-0.2-0.6 0.6-0.8 1.7-1.1 0.9-0.4 0.9-0.6 0.9-0.4 1.6-0.3 1.6-1 1.7-0.5 1.3-1.5 0.7-2 0.8-0.6 0.9 0.1 0.6 0.7 0.3 0.9 0.7 0 0-1.1-0.4-1.3 0.5-1 0.6-0.9 0.5-0.9 0.7-0.6 0.9-0.2 0.8 0.6 0.8 0.4 0.9-0.3 1.7 0.1 0.8-0.3 2.4-1.3 2.4-2.1 0.9-0.6 1.5-1.2 1.8-1.1 0.9-1.8 0.4-1.1 0.6-1 0.2-1 0.1-1 1.8-3.5-0.1-1.9-1.3-2.9 0-1.2 0.4-1.9 1.2-1.7 0.1-1-0.4-5.8 0-0.4 0.8 0 0.2 0 0.1 0.2 0.2 0.2 0.2 0.2 0.3 0-0.2 0.2-0.1 0-0.2 0-0.1-0.2-0.2 0 0.3 0.4 0.5 0 1.3-0.1 0.6 0 1.7 0.6 1.7-0.1 0.5 0.2 0.5 0.2 0.5 0 2.1-0.9 0.3-0.3 0.4-0.6 0.2-0.3 0.1-0.3 0-0.3-0.2-0.2 0-0.3 0-0.2 0.1-0.2-0.1-0.1-0.4-0.2-0.7 0-0.7 0.2-0.6 0.3-0.5 0.5-0.5 0.2-0.7 0.1-0.7-0.2-0.6-0.2-0.2 0.2-0.1-0.5 0-0.2-0.5 0.3-0.7 0.6-0.6 0.2 0 0.1 0.1 0 0.1 0.1-0.3 0.1-0.2-0.1-0.1-0.2 0-0.4 0.9-0.8 0.3-0.3 0.2-0.2 0.2 0 0.7 0 0.9 0.2 0.2 0.1 0.6 0.1 0.8-0.2 3.2-1.6 0.7-0.1 1.9 0.7 0.5 0.3 0.8 0.8 1.5 2.2 0.2 0.3 0.2 0.3 0.1 0.3 0.1 0.6 0.2 0.2 0.3 0.1 0.3 0.1 0.1-0.4 0.2 0 0.6 0.2 0.8 0 0.3 0.2 0.4 1.5 0.1 0.4-0.1 0.5-0.2 0.8-0.1 0.3 0 1.5 0.3 2 0.7 1.4 1.4-0.1-0.1 0.3-0.1 0.1-0.1 0.2-0.6 1.4-0.2 0.2-0.3 0.8 0 0.2 0.2 0.3 0 0.2 0 0.2-0.1 0-0.2 0-0.1 0.1-0.2 0.1-0.4 0.2-0.2 0.1-0.1 0.2-0.1 0.3 0 0.6-0.1 0.4-0.5 1.6-0.7 1.7 0 0.3-1.9 2.8-2.7 3.1-0.6 1-0.3 0.3-1.6 1-0.4 0.5-1.2 0.7-1.6 1.7-3.4 5.1-0.3 1-0.4 0.1-0.2 0.2 0 0.2 0.2 0.3-0.9 0.6-0.6 0.8-0.4 0.9-0.6 2.4-0.2 1.4 0.1 2.5 0.2 0.7 0.7 1.3 0.1 0.6 0 0.3-0.3 1.1-0.1 0.2-0.2 0-0.2 0.2-0.4 1.4-0.1 0.3-0.1-1.2 0-0.4 0.1-0.1 0.3 0 0.2-0.2 0.3-0.1 0.1-0.3 0.1-0.4 0-1.2-0.5-0.5-0.1-0.3-0.1-0.4-0.1-0.3-0.2-0.1-0.2 0.1-0.1 0.3 0.1 0.2 0.2 0.2 0.1 0.3 0.1 0.9 0 0.5-0.1 0.3 0.2-0.2 0.1-0.1 0.3-0.2-1.2 1.9-0.3 0.2-0.1 0.1-0.2 0.3-0.2 0.2-0.2-0.1-0.3-0.2-0.2-0.2-0.2 0.1-0.3 0.5-0.4 0-0.6 0.8-0.5 1.1-0.3 0.9-0.5 0.9-0.3 1-0.3 0.3-0.4 0 0.3-0.2 0.3-0.4 0.2-0.5-0.2-0.4-0.3 0.1-1.5 0-0.3-0.1-0.2 0.4-0.1 0.6 0 0.6 0 0.5 0.4 0.4 0.8 0.6 0 0.3 0.3 0.1 0.2 0.1 0.4 0 0.3-0.1-0.2 0.5-0.1 0.9-0.1 0.5 0.6 0 0.3-0.3 0.3-0.5 0.4-0.4 0.3-0.2 0.8-0.3 0.4-0.2 0.8 0.3 0.7 0.4 0.1 0 0.2-0.1 0.1-0.2 0-0.2 0.1-0.2 0.3 0 0.2 0.2 0.1 0.1 0.2-0.3 0.1 0.1 0.1 0.1 0.1 0 0.1 0.1-0.4 0.2 0 0.2 0.8-0.2 0.4-0.6 0-0.6-0.4-0.1 0.2 0.3 0 0.3-0.3 0.1-0.9 0-0.8-0.2-0.3-0.1-0.4-0.2 0.5 0 1.8 0.3 0-0.3 0-0.1 0.2-0.8 0-0.5 0.6 1.1 0.2 0.6-0.1 0.3-0.2 0.3-0.3 2.1-0.3 0.5-0.4 0.6-0.5 0.4-0.5 0.1-0.2 0.1-0.8 0.9-0.2 0.1-1 0.2 0.5-0.2 0.2-0.3 0.1-0.4 0.1-0.4-1 0.3-1.3 0.7-1.1 1-0.3 1.2 0.2 0 0.2-0.7 0.2 0-0.3 0.5-0.4 0.5-0.2 0.4 0.5 0.1-0.6 1.3-0.2 0.7 0.3 0.3 0.5 0.1 0.3 0.2 0.3 0 0.6-0.5 0.7-0.9 0.3-0.6 0.2-0.5 0.3-0.4 0.7-0.2 1.3-0.1-0.6 1.2 0.4-0.3 0.3-0.4 0.3-0.3 0.6 0 0 0.2-0.6 0.3-0.4 0.4-0.8 1.1-0.3 0.8-0.3 1.6-0.3 0.6 0.2 0.7-0.4 0.9-0.6 1.5-0.7 1-0.5 4-1.1 3.7-0.5 0.8-0.6 0.9-0.6 0.9-0.4 1.1-0.2 1.3 0.2 1.3-0.1 0.7-0.3 0.6-0.2 0.5-0.1 2.1-0.3 0.7-1.4 2.1-0.1 0.4-0.1 0.5-0.4 0.9-0.1 0.5 0 1.9-0.2 0-0.1-0.8-0.1-0.6-0.5 0.6-0.3-0.2-0.1-0.4 0.2-0.2 0.3-0.3 0.1-0.8 0.1-0.8 0-0.4-0.1 0.3-0.1 0.3-0.2 0.3-0.2 0.2-0.1-0.4 0.1-0.3 0.1-0.3 0.1-0.5-0.1 0-0.4-0.5 0-0.2 0-0.2 0-0.3-0.1-0.3-0.8-0.1-0.1-0.1-0.1-0.1 0-0.3 0.2-0.2 0.1 0-0.2-0.5-0.1-0.3-0.3-0.2-0.5 0-0.8-0.2-1.5-0.9-0.7-0.2-0.3-0.2-0.1-0.5 0.1-0.4 0-0.2 1-1.2-0.2-0.6 0.3-0.7 0.4-0.6 0.3-0.5 0-0.2 0.3-0.5 0.1-0.4-0.1 0-0.1-0.2-0.2-0.1 0-0.2 0-0.2 0.1-0.2 0.1-0.1 0.1-1.3 0-0.6-0.2-0.5-0.3-0.5-0.2-0.5-0.2-1.2-0.7 0.6-0.7 0.7-0.5 0.9-0.3 0.8 0 0.5-0.2 0.5-0.2 0.4-0.3 0.2-0.2-0.2 0.1-0.6 0.2-0.6-0.1 0.2-0.3 0.4-0.5 0.1-0.7 0.1-0.3 0.1-1.2 1.1-0.2 0.2-0.1 0.3-0.1 0.3 0.6-0.2 0.5-0.5 0.5-0.6 0.4-0.6 0.2 0.6-0.2 0.4-0.2 0.4 0 0.5 0.1-0.2 0.3-0.3 0.2-0.2 0.3-0.1 0.3 0.2-0.2 0.2-0.3 0.2-0.1 0-0.7 1.5-0.7 0.9-0.8 1.5-0.1 0.4-0.6 1-0.3 0.5-0.3 0.1-0.2 0.1-0.1 0.1-0.1 0-1.8 0-0.2 0.1-0.2 0.1-0.2 0-0.2-0.1-0.3-0.3-0.1 0-0.2 0-0.3 0.2-0.6 0.2-0.3 0-0.2-0.1-0.3-0.1-0.3-0.1-0.9 0.7-0.2 0.3-0.2 0.3-0.1 0.9-0.3 0.7-0.1 0.8-0.1 0.3-0.3 0.6-0.9 1-0.3 0.5-0.1 0.5-0.1 0.5 0 0.1-0.1 0.4-0.3 0.4-0.3 0.3-0.8 0.4-0.9 0.6 0.2 0.1 0 0.4 0 0.4-0.8 1.2 0 0.3-0.1 0.6-0.1 0.4-0.3 0.4-0.3 0.3-0.4 0.2-0.5 0.4-0.1 0.2-0.4 1.2-0.3 0.3-1.4 1.2-0.2 0.2-0.1 0.6-0.2 0.3-0.2 0.1-1.2-0.7-0.3-0.3-0.4-0.9-0.3 0-0.3 0-0.4 0-0.5-0.4-0.4-0.4-0.5-0.5-0.6-0.2-2.4 0.9-0.4 0.6z m52.1-17.6l0.1-0.3 0.1-0.2 0.2-0.3 0.2-0.3-0.5 1.1 0.2 1.3-0.4 1.1-1.1 1.5-0.1 0 0.1-0.2 0.5-0.6 0.2-0.4 0.2-0.3 0.2-0.8 0.1-1.6z m1.8-6.3l0.4 0.5 0.2 1.4 0 0.8-0.4 0.7 0.1-0.9-0.3-2.5z m15-56.5l0-0.1 0.2 0 0.1 0.1 0 0.2 0 0.1-0.3 0.5-1.1 1.8-0.3 1-0.5 0.5-0.9 0.7-0.3 0.5-0.7 1.4-0.2 0.5-0.1 0.1-0.3 0.2-0.2 0.2-0.1 0.3-0.2 0.2-0.2 0.4-1.6 1.4-0.4 0.2-0.2-0.3-0.1-0.6-0.4-1.3-0.1-0.7 0.1-1.3 0.3-1.2 1.2-2.1 0.9-1.3 0.2-0.1 0.4-0.4 0.3-0.1 0.2 0 0.2 0.1 0.1 0.1 0.1 0 0.3 0.1 0.8 0.3 0.2 0 0.4-0.1 0.6-0.4 0.4 0.1 0.5-0.2 0.5-0.3 0.2-0.5z m1.3-18.6l-0.5-0.4-0.6-1-0.3-0.9 0.3-0.4 0.1 0.6 0.3 0.7 0.7 1.4z\",\n\tMXSLP:\n\t\t\"M571.1 337.1l-0.2 0.9-0.2 0.9-0.3 1-0.2 0.9 0.5-0.4 0.7-0.7 0.7-0.4 0.5 0.1 0.1 0.6 0 0.6 0.1 0.5 0.3 0.6 0.7 0.8 0.8 0.7 0.6 0.8 0.2 1.1-0.1 0.4-0.1 0.4-0.2 0.4-0.3 0.3-0.6 0.5-0.7 0.2-0.7 0.2-0.6 0.4-0.4 0.4-0.1 0.4 0.2 0.3 0.3 0.5 0.2 0.4 0.1 0.3 0.1 0.4 0.1 0.5 0.2 0.2 0.3 0.2 0.5 0.2 0.4 0.1 0.6 0.3 0.7 0.3 0.6 0.3 0.7 0.2 1.5 0.6 1.5 0.6 1.5 0.7 1.5 0.6 0.6 0.2 0.5 0.2 0.6 0.1 0.5 0.2 0.8 0.3 0.5 0.1 0.2-0.2 0-0.9-0.1-0.4-0.1-0.5-0.1-0.4-0.1-0.5-0.1-0.3-0.1-0.1 0-0.1 0.3-0.1 0.3 0.1 0.3 0.2 0.3 0.3 0.3 0.2 0.4 0.5 0.5 0.7 0.5 0.6 0.5 0.3 0.4-0.1 0.4-0.4 0.4-0.5 0.3-0.5 0.1 0.2 0.1 0.2 0.1 0.1 0.1 0.2 0.4 0.9 0.5 0.8 0.5 0.9 0.5 0.9 0.3 0.7 0.3 0.8 0.4 0.7 0.4 0.6 0.6 0.5 0.6 0.2 0.7 0.1 0.7 0.1 0.8 0.1 0.9 0.2 0.8 0.2 0.8 0.3 0.1 0 0.1 0.1 0.1 0 0.9 0.4 0.9 0.3 0.9 0.2 1 0.2 0.6 0.1 0.7 0.1 0.8 0 0.6-0.1 0.3-0.3 0.3-0.4 0.3-0.4 0.4-0.2 0.9-0.1 0.9-0.1 0.8-0.3 0.5-0.7 0.3 0.3 0.3 0.2 0.3 0.1 0.3 0.2 0.2 0.1 0.1 0.1 0.2 0.1 0.2 0.2 0.6 0.3 0.5 0.5 0.6 0.4 0.5 0.4 0.9 0.6 0.8 0.5 0.8 0.5 0.9 0.5 0.6 0.5 0.5 0.7 0.3 0.7 0 0.9-0.4 1.2-0.6 1.2-0.6 1.2-0.7 1.1-0.2 0.4-0.2 0.5-0.1 0.5-0.2 0.5-0.2 0-0.2-0.2-0.3 0.3-0.3 0.1-0.3-0.2-0.3 0-0.4 0-0.3 0.2-0.2 0-1.1-0.1-0.3-0.1-0.1 0 0.1 0.8 0.5 0.1 0.7-0.2 0.5-0.1 0.1 0.2-0.4 0.3-0.3 0.4 0.2 0.6-0.7 0.2 0.2 0.7 0.4 0.7 0.4 0.3 1.2-0.1 0.1 0.3 0 0.4 0.1 0.3 0.2 0.2 0.5 0.1 0.1 0.4-0.2 0.5-0.1 0.2-0.3 0.4-0.4 0.3-0.7 0.4-0.1 0.1 0 0.1-0.1 0.2-0.1 0-0.2 0-0.3-0.2-0.2 0-0.3 0.2-0.2 0.2 0.1 0.2 0.2 0.3-0.4 0.4-1.1-0.2-0.4 0.4-0.2 0.8 0.1 0.5 0 0.5-0.3 0.3-0.2 0.3 0.3 0.6 0.4 0.5 0.5 0.3 0.7 0.3 0.8 0.4 0.6 0.4 0.2 0.7 0.1 0.9 0 0.6 0.1 0.6 0 0.6 0 0.5-0.4 0.1-0.5 0.2-0.4 0.1-0.4 0.2-0.3 0.1-0.1 0.2-0.1 0.2 0.1 0.4 0 1.1 0.1 1.1-0.1 1.1-0.1 1-0.3-0.1-0.3-0.1-0.3 0.1-0.2 0.2-0.2 0.2-0.2 0-0.2 0-0.3 0-0.2-0.1-0.2-0.1-0.2 0-0.2-0.1-0.8 0.1-0.7 0.3-0.7 0.3-0.6 0.3-0.6 0.2-0.5-0.1-0.4-0.2-0.6-0.3-0.3-0.2-0.4-0.1-0.3-0.2-0.3-0.2-0.2-0.4-0.1-0.4 0-0.4-0.2-0.3-0.1-0.3-0.1-0.2-0.1-0.2-0.2-0.1-0.7-0.3-0.9 0.1-0.9 0.3-0.5 0.6-0.4-0.4-0.5-0.3-0.5-0.1-0.6 0.1 0.2-0.6 0.1-0.6 0.1-0.6 0.1-0.6-0.1-0.4-0.2-0.5-0.2-0.6-0.2-0.4-0.4-0.7-0.3-0.8-0.2-0.8-0.3-0.8-0.2-0.7-0.2-0.8-0.2-0.7-0.2-0.8-0.1-0.1 0-0.2-0.1-0.1 0-0.2 0 0.7-0.5 0.5-0.7 0.4-0.5 0.5 0 0.3 0 0.3 0 0.3-0.3 0.3-0.3 0.2-0.2 0.1-0.2 0-0.4-0.2-0.1-0.1-0.2 0-0.1 0.1-0.2 0.1-0.2 0.3 0 0.4-0.1 0.4-0.1 0.3-0.2 0.2-0.2 0.2-0.1 0.3-0.1 0.2-0.1 0.2-0.2 0.2-0.1 0.2-0.2 0.2-0.3 0-0.4 0-0.4-0.1-0.3 0.1-0.3 0.1-0.2 0-0.2 0.1-0.2 0-0.4 0.6-0.7 0.1-0.8 0-0.6 0-0.3 0.1-0.1 0.1-0.2 0.1-0.3 0-0.3-0.2-0.2-0.2-0.3-0.3-0.2-0.1-0.3-0.2-0.2-0.4-0.1-0.4-0.2-0.3-0.2-0.2-0.2-0.1-0.2-0.1-0.2-0.3-0.2-0.3-0.4-0.2-0.4-0.2-0.4-0.2-0.8 0.3-0.5 0.8-0.4 0.9-0.3 0.9-0.9-0.4-0.8-0.4-0.8-0.3-1.1 0-1.2-0.1-1.2-0.9-1.1-1.2-1.1-0.9-0.1 0-0.1 0 0-0.1-0.1 0-0.9-0.3-1-0.3-0.9-0.3-1-0.3-0.4-0.1-0.3-0.1-0.3-0.2-0.4-0.2-0.5-0.2-0.5-0.2-0.6-0.3-0.5-0.2-0.3-0.2-0.3-0.1-0.3-0.1-0.3-0.1-0.3-0.2-0.1-0.2-0.2-0.1-0.4 0-0.3 0.2-0.3 0.2-0.3 0.3-0.2 0.2-0.2 0.4-0.2 0.4-0.1 0.4-0.2 0.4-0.1 0.6-0.1 0.7-0.2 0.7-0.2 0.6-0.6 0.5-1 0.2-1.1-0.1-0.9 0.1-0.7-0.5-0.6-0.5-0.6-0.5-0.5-0.5-1.4-1.1-1.3-1-1.4-1.1-1.3-1.1-0.5-0.4-0.4-0.5-0.5-0.4-0.4-0.4-0.9-0.4-1-0.2-0.9-0.1-1 0-1 0.1-1.1 0.3-1 0.2-1-0.2-0.4-0.1-0.3-0.3-0.3-0.3-0.3-0.3-0.1-0.4-0.1-0.4 0.1-0.5-0.1-0.4-0.5-0.6-0.6-0.2-0.7 0.1-0.7 0.3-0.1 0-0.1 0.1-0.1 0-1 0.7-0.8 0.4-0.9-0.1-1.2-0.5 1.2-1.6 1.2-1.6 1.2-1.6 1.2-1.6 0.2-0.4 0.4-0.4 0.2-0.5 0.1-0.4-0.1-0.9-0.1-1-0.1-1-0.1-0.9-0.3-1.1-0.3-1-0.4-1.1-0.2-1 0-0.7 0.1-0.6 0.4-0.4 0.4-0.4 0.6-0.3 0.5-0.3 0.3-0.4-0.1-0.7-0.3-0.8-0.4-0.9-0.3-0.8-0.4-0.8-0.5-0.5-0.6-0.1-0.6 0-0.7 0-1 0-1.2 0-1.3 0.1-0.8 0.6-0.4 0.9-0.4 1-0.5 0.8-1 0.2-0.2 0-0.2 0-0.2 0.1-0.2 0-0.7 0.4-0.7 0.5-0.6 0.3-0.8-0.1-0.7-0.4-0.5-0.5-0.5-0.6-0.5-0.7-0.1 0 0-0.1-0.1-0.1-0.6-1.1-0.8-1.4-0.9-1.1-1.1-0.6-0.3-0.1-0.3-0.1-0.3-0.2-0.3-0.2-1.2-1.1-1.2-1.1-1.1-1.3-0.8-1.4-0.3-0.8-0.3-0.7-0.3-0.7-0.4-0.7-0.3-0.8-0.4-0.7-0.1-0.7 0.3-0.8 0.4-0.8 0.2-0.7-0.1-0.7-0.3-0.8-0.1-0.6-0.1-0.7-0.2-0.6-0.3-0.5-0.4-0.3-0.4-0.2-0.3-0.3 0.1-0.6 0.3-0.6 0.3 0 0.5 0.1 0.5 0 0.3-0.4 0.2-0.6 0.2-0.7 0.1-0.6 0.1-0.4 0.2-0.7 0.2-0.6 0.2-0.3 0.5-0.1 0.5-0.1 0.5 0.1 0.3 0.3 0 0.5-0.1 0.5 0 0.4 0.5 0.2 0.6 0 0.6-0.3 0.6-0.3 0.5-0.3 1-0.8 0.9-0.8 0.8-0.9 0.7-1 0.7-1.1 0.9-1 0.9-0.9 1-0.7 0.5-0.1 0.5-0.1 0.4 0 0.5-0.2 0.3-0.4 0.2-0.5 0.2-0.5 0.2-0.5 0.9-0.9 1.1-0.8 1.3-0.6 1.1-0.6 1.4-1 1.2-1 1.2-1.1 1.1-1.3 0.5-0.6 0.5-0.7 0.6-0.6 0.6-0.3 0.8-0.2 0.6-0.2 0.5-0.3 0.5-0.7 1.3-2.5 1.4-2.5 1.5-2.4 1.4-2.5 0.6-1 0.7-1 0.8-0.8 1-0.6 1.1-0.6 0.5-0.8 0.3-1 0.4-1.3 1.1 1.3 1 1.5 1 1.4 1 1.4 0.5 0.6 0.5 0.6 0.5 0.6 0.4 0.6 0.2 0.9 0.1 1 0 1.1 0.1 0.9 0 1.7 0 1.7 0 1.7 0.2 1.6 0.5 1.4 0.8 1.2 1 1.1 0.9 1.1 0.2 1 0 1 0 0.9-0.3 1-0.1 1.1 0.1 1.1 0.3 1.2 0.3 1.1 0.2 0.4 0.1 0.4 0.1 0.4 0.1 0.5-0.1 0.5-0.2 0.5-0.2 0.5-0.1 0.6 0 0.4 0.2 0.5 0.2 0.4 0.1 0.5 0 0.6 0 0.5 0 0.5 0 0.6 0 0.2 0 0.2 0 0.1 0 0.2 0 0.2 0.1 0.2 0 0.2 0 0.1 0.4 0.9 0.4 0.6 0.7 0.3 0.9 0.2 0.4 0.1 0.4 0.1 0.3-0.1 0.1-0.3 0-0.4 0-0.4 0-0.4 0-0.4 1.9 0 2 0 1.9 0.1 1.9 0.3z\",\n\tMXSIN:\n\t\t\"M319.2 268.2l0.4 0.2 0.6 0.8 0.3 0.3-0.5 0.4-0.9-0.5-1-0.6-0.8-0.4-0.2 0-0.3-0.1-0.2-0.1-0.3 0-1.7 0-0.4-0.2-0.2-0.4 3.2 0 0.6 0.1 1.4 0.5z m-8.8-28.9l0.3-0.5 0.2-0.2 0.1-0.1 0.2-0.1 0.2-0.2 2.9-2.2 2.9-2.3 2.8-2.3 2.8-2.4 1.4-1.2 1.5-1.2 1.4-1.2 1.4-1.2 0.2-0.4 0.1-0.7 0-0.8 0-0.6 0.2-0.8 0.2-0.8 0.3-0.8 0.2-0.8 0.8-0.7 0.6-0.8 0.7-0.8 0.6-0.8 0.3 0.6 0.7 0.2 0.7 0 0.7-0.1 0.6 0.1 0.4 0.3 0.4 0.5 0.3 0.6 0.9 1.2 1.4 0.7 1.6 0.3 1.4 0.3 0.7 0.3 0.2 0.7 0 0.9 0 0.8 0.4 1 0.7 1 0.6 0.9 0.6 0.9 0.6 0.7 0.6 0.7 0.6 0.6 0.5 0.6 0.5 1.5 0.3 1.9 0.1 2 0.2 1.7 0.2 1.5 0.1 1.4 0.2 1.5 0.2 1.4 0.2 0.9 0.2 0.5 0.5 0.2 0.9 0.2 0.3 0 0.3 0.1 0.3 0.1 0.3 0 2 0.4 1.9 0.5 2 0.4 1.9 0.4 0.9 0.2 0.6 0.5 0.5 0.8 0.3 0.9 0.1 0.5 0.1 0.5 0.1 0.5 0.1 0.5 0.1 0.2 0 0.3 0.1 0.2 0 0.1 0.3 0.3 0.4 0.1 0.3 0.1 0.2 0.4 0.1 0.4 0.1 0.5 0.1 0.4 0 0.4 0.1 0.5 0.1 0.2 0.3 0.1 0.4 0.1 0.8 0.4 0.8 0.5 0.7 0.5 0.7 0.6 0.5 0.7 0.4 0.7 0.5 0.7 0.6 0.5 0.9 0.5 0.9 0.5 0.8 0.6 0.8 0.7-0.4 0.5-0.5 0.5-0.5 0.5-0.3 0.6-0.3 0.7-0.5 0.5-0.5 0.5-0.6 0.6-0.6 1.2-0.3 1.4-0.3 1.5-0.2 1.3-0.2 1.5-0.2 1.5 0 1.5 0.3 1.5 0.4 1.3 0.4 1.3 0.4 1.4 0.5 1.3 0.2 0.5 0.1 0.7 0.3 0.6 0.3 0.4 0.4 0.3 0.5 0.2 0.5 0.1 0.4 0.3 0.2 0.4 0.1 0.4 0 0.4 0 0.4 0.2 0.6 0.4 0.3 0.4 0.1 0.5 0.1 0.5 0 0.4 0 0.4 0.1 0.4 0.3 0.3 0.6 0.2 0.5 0.4 0.4 0.5 0.3 1 0.6 0.6 1 0.4 1.2 0.6 1.1 0.4 0.4 0.4 0.3 0.2 0.4 0.3 0.5 0.1 0.4 0.2 0.4 0.2 0.4 0.2 0.3 0.3 0.6 0.2 0.5 0.1 0.5 0 0.7 0 0.5 0 0.5 0.1 0.5 0.3 0.4 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.4 0.6 0.4 0.4 0.2 0.5 0.1 0.6-0.1 0.5 0 0.4 0 0.5 0 0.5-0.2 0.3-0.4 0.3-0.4 0.3-0.5 0.4-0.4 0.9-0.8 1.1-0.5 1-0.2 1.2 0.2 0.3 0.2 0.4 0.1 0.3 0.3 0.2 0.2 0.8 0.6 0.7 0.7 0.7 0.6 0.7 0.7 0.5 0.7 0.4 0.9 0.4 1 0.3 0.8 0.3 0.8 0.3 0.8 0.4 0.8 0.4 0.8 0.5 0.5 0.6 0.2 0.7-0.2 0.7-0.2-0.3 1-0.4 1-0.5 0.9-0.4 1-0.1 1.2 0 1.2 0.2 1.3 0.2 1.2 0.1 0.6 0 0.5 0.1 0.5 0.1 0.6 0.1 0.5 0.3 0.5 0.3 0.5 0.2 0.6 0.2 0.7 0.1 0.7 0.3 0.6 0.5 0.5 0.4 0.2 0.5 0.1 0.4 0.1 0.5 0.1 0.1 0.7 0.5 0.6 0.5 0.7 0.3 0.7-0.1 0.3-0.1 0.2 0 0.3 0.2 0.2 0.2 0.3 0.1 0.3 0 0.3-0.1 0.3-0.1 0.5 0.1 0.3 0.2 0.4 0.3 0.4 0.1 0.3 0 0.4-0.1 0.4 0.1 0.3 0.3 0.5 0.4 0.3 0.4 0.2 0.4 0.4 0.2 0.2 0 0.3 0.2 0.3 0.2 0.2 0.4 0.3 0.5 0.5 0.5 0.6 0.4 0.4 1 0.5 1.2 0.1 1.2-0.1 1.2-0.1 0 0.9 0 0.9 0 0.9 0.1 0.9-0.7 0-0.7 0.1-0.4 0.3-0.4 0.5-0.2 0.6 0 0.4 0.1 0.4 0.2 0.5 0.3 0.4 0.1 0.3 0.1 0.3-0.3 0.4-0.3 0.4-0.6 0.4-0.5 0.4-0.5 0.4-0.5 0.5-0.5 0.6-0.5 0.7-0.1 0.6 0 0.3 0.2 0.3 0.2 0.1 0.3 0.2 0.3 0.2 0.2 0.2 0.1 0.3 0.2 0.4 0.2 0.3 0.3 0.1 0.3 0.1 0.3 0.2 0 0.2-0.1 0.2-0.1 0.3 0 0.1 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0 0.2 0.8 0.3 0.7 0.2 0.8 0.1 0.8 0 1.1-0.6 0.6-1 0.2-1-0.3-0.4-0.4-0.4-0.4-0.4-0.3-0.4-0.3-0.7-0.2-0.6 0.2-0.6 0.1-0.6 0.2 0.1 0.5 0.2 0.6 0.1 0.6 0 0.5-0.5 0.4-0.5-0.5-0.4-0.8-0.4-0.5 0.3-0.2-0.2-0.4-0.3-0.4-0.3-0.2-0.2 0.4-0.2 0-0.3-1.8-0.9-1.5-2.4-2.3-1.2-1.6-0.5-0.5-1.2-0.8-0.2-0.2-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.2 0.6-0.8-0.4 0-0.4 0.2-0.3 0.3-0.3 0.3-5.4-6.9-0.2-0.2-0.6-0.2-0.3-0.2-0.5-0.4-2.7-3.2-0.5-0.2-0.4 0.1-0.2 0.2-0.3 0.1-0.3-0.2-0.1-0.2 0.1-1.2-0.2-0.4-1-1.6-0.5-0.4 0-0.2 0.3-0.3 0-0.2-0.1-0.1-0.1-0.2-1.1-2.1-0.4-0.4-0.4-0.1-0.6-0.4-1.1-1.1-0.2-0.1-0.1-0.2-0.3-0.8-0.3-0.4-0.7-0.3-0.4-0.6-0.7-0.9-0.8-1-0.5-0.4-1.2-0.4-0.4-0.6-0.2-1.5-0.4-0.6-0.5-0.5-0.5-0.6-0.3-1.4-0.9-1.5-3.8-4.2-1.4-1.1-0.6-0.2-0.3-0.2-1.6-1.5-4.1-2.8-1.8-1.3-0.3-0.4-0.2-0.7-0.3-0.4-1.1-0.5-1.1-0.7-1.8-1.7-6.6-4.1-0.5-0.6-0.2-0.5 0-0.4 0.2 0 0.3 0.2 0.2 0.2 0 0.1 0.1 0.2 0 0.3 0 0.1 2.3 1.2 0.3 0.1 4 2.6 0.4 0.2 0.3 0.2 0.5 0.3-0.3-0.3-0.8-0.5-0.5-0.3 0.1-0.3 0.6 0.2 0.9 0.7 0.1-0.1 0.1-0.2 0-0.1-0.1 0-0.2 0-0.1 0 0.3-0.3 0.3-0.3 0.2-0.3 0-0.6-0.1-0.4-1.1-2.5-0.3-0.4-0.5-0.2-0.5 0-0.4 0.1-0.4 0.2-0.3 0.4 0.4 0.1 0.8-0.3 0.2 0.2-0.1 0.3-0.8 0.7-0.2 0.3-0.9 0.3-0.5-0.4-0.4-0.6-0.6-0.4-0.6 0.4-0.2 0-0.2 0-0.2-0.1-0.6-0.5-0.2-0.3 0-0.2-0.1-0.4-0.1-0.2-0.1-0.2-0.5-0.1-0.2-0.1-1.1-1.3-0.4-0.1-0.4 0.3-0.6-0.6-0.6-0.5-0.7-0.3-0.7-0.1 0.1 0.3 0.3 0.2 0.4 0.3 0.9 1 0.5 0.4 1.2 0.7 0.4 0.5-0.8-0.2-2.2-1.3-2.5-2.2-0.2-0.5-0.1-0.5-0.2-1.1-0.1-0.5-0.3-0.6-0.3-0.5-0.3-0.2-0.2-0.1-0.1-0.2 0-0.2 0.1-0.1 0.3 0 0.3 0.1 0.5 0.3 0.2 0.3 0.5 0.3 0.4 0 0.2-0.7-0.1-0.5-0.3-0.6-0.4-0.4-0.4-0.3 0.4-0.3 0-0.5-0.2-1.2 0.1-0.5 0.1-0.4 0.4-0.8-0.3-0.4-1.1-1-0.4-0.1 0 0.6 0.4 1.7 0 0.1 0.1 0.2 0 0.4-0.2 1.1-0.1 1.1-0.1 0.3-0.1 0.1-0.2 0-0.2 0-0.1-0.1-0.1-0.2-0.2-0.1-0.1 0.1-0.1 0.2-0.1 0.1-1.1-0.6-0.9-1.3-2.2-4.6-0.7-0.8-1-0.9-0.6-0.3-0.2-0.2-0.2-0.4 0.6 0 0.7 0.2 0.5 0.3 0.2 0.5 1.7 2.1 0.4 0.9 0 0.1 0.2 0 0.2 0 0.1-0.1 0.1-0.1 0.6 0.4 0.1 0.1 0.3-0.1 0-0.3 0-0.6-0.1-0.5-0.3 0-0.3 0.1-0.3-0.2 0-0.2 0.3-0.5 0.1-0.2 0.3-0.2 0.1-0.1 0.1 0.1 0.2 0.4 0.6 0.6 0.5 0.2 1.2 0.2 0.9 0.4 0.3-0.3 0.1-0.3-0.1-0.4-3-2.7-0.3-0.2-0.5 0 0.2 0.2 0 0.2-0.2 0.2-0.4 0-0.3 0-0.4-0.3-0.5-0.5-0.6-1.2-0.1-0.2-0.4 0.1-0.3 0.2-0.3 0.2-0.4-0.2-0.4 0.2-0.8 0.1-0.8-0.2-0.5-0.2-0.1-1 0-0.2 0.2 0 0.7 0.5 0.3 0.1-0.1-0.4 0-0.9-0.1-0.4-0.2-0.3-0.7-0.4-0.3-0.2-0.7 3.4-0.4 0.5 0-0.3 0.1-1.4 0-0.5-0.2-0.6-0.4-0.5-0.5-0.3-0.4-0.3-3-1.2-1.7-1.2-1.2-0.3-1.2-0.1-1 0 0.7-0.5 1.2 0.1 2.1 0.6-0.7-0.3-1.2-1-0.8-0.2-1.5 0.5-0.8 0.1-0.4-0.6 1.2 0 0.3-0.2-0.4-0.6-0.1-0.2 0-0.3 0-0.2-0.3 0-0.1 0-0.3 0.3-0.3 0.1 0.3-1 0.1-0.5 0-1.5-0.1-0.4-0.1-0.1-0.3 0.2-0.3 0-1-0.4 0-0.1 0-0.1-0.1-0.2-0.2-0.1-0.1 0.1-0.3 0.1-0.1 0.1-0.6-0.1-0.3-0.1-0.2 0 0 0.6 0.1 0.3 0.1 0.2 0.1 0.2 0.1 0.4-0.1 0.4-0.1 0.2-0.1 0.2-0.2 0.2-0.5 0.3-0.4 0-0.3-0.2-0.3-0.4 0.1 0 0.2-0.1 0.1-0.2-0.2-0.2-0.2-0.1-1.5 0.2-0.4 0.2 0 0.3 0.3 0.5-0.8 0.1-0.9-0.7-1.4-1.6 0.6-0.3 0.2-0.1 0.1-0.3 0.2-0.4 0.2-0.3 0.3-0.1 1 0.3 0.2 0 0.3-0.1 0.3 0.3 0.1 0.6 0.3 0.2 0.1-0.1 0-0.2 0.2-0.4 0-0.1 0-0.4 0-0.1 0.1-0.2 0.3 0 1.5-1.6 0.3-0.4 0-0.2-0.1-0.1 0-0.1 0.1-0.2 0.1-0.1 0.1-0.1 0.2 0 0-0.2 0-1 0.2-0.7 1.2-1 0.1-0.7-0.2-0.4-0.4 0.3-0.6 1.3-0.4 0.7-0.5 1-0.4 0.4-0.7 0.3-1.4 0.5-0.6 0.4-0.9 1.4-0.6 0.5-0.7-0.2-0.8 0.4-0.5 0-0.3-0.3-0.4-0.8-0.2-0.7-0.2-0.3-0.3-0.1-0.3-0.1-0.9-0.4-0.8-0.6-0.1 0.2 0.1 0.3 0.1 0.4 0.3 0.3 1.9 1.6 0.5 0.7-0.1 0.7-0.7-0.7-0.6-0.8-0.7-0.8-1-0.4-3.2 0.1-1.1-0.3 0.7-0.5 0.8-0.2 0.8 0 0.9 0.3-0.1-0.5 0.1-0.6 0.1-0.1 0.2-0.3 0.1-0.1-0.1-0.2 0-0.1-0.1-0.1 0-0.1-0.3-0.3-0.5-0.4-0.7-0.4-0.4-0.1-0.6 0-0.3 0.2-0.1 0.4-0.1 1.9-0.1 0.2-0.3-0.5 0.2-0.6 0-0.8-0.1-0.7-0.2-0.3-0.6-0.2-0.1-0.6 0.1-0.6 0.3-1.3 0.1-0.2 0.1-0.1 0-0.6 0-0.4-0.1-0.3-0.3-0.5-0.2-0.7 0-0.6 0-1.4 0.2-0.6 1-1.7 1.1-1.2 0.5-0.7 0.3-1.3 1.1-1.9 0-0.1 0.1 0 0.1 0 0.1-0.1 0 0.1-0.2 0.4 0.1 0.7-0.1 0.3-0.1 0.4-0.1 0.3 0.2 0.3 0.3 0.1 0.2-0.2 0.1-0.4 0.2-1 0.9-1.7 0.1-0.1 0.6-0.3 0.6-0.4 0.5-0.4 0.3-0.2 0 0.5-0.2 0.5-0.4 0.2 0 0.2 0.6 0.3 1.4 1.2 0.4 0.1 0-0.4-0.4-0.7 0-0.5 0.2-0.2 0.3-0.1 0.2-0.1-0.1-0.5-0.8 0.1-0.7-1.4z\",\n\tMXSON:\n\t\t\"M147.3 35.9l0.1 0 1.1 0.4 11.7 4.3 11.8 4.3 11.7 4.3 11.8 4.3 11.7 4.3 11.8 4.2 11.7 4.3 11.8 4.3 1.4 0.5 1.5 0.6 1.5 0.5 1.5 0.6 1.4 0.6 1.5 0.5 1.5 0.6 1.5 0.5 0.8 0.3 1.7 0.2 1.7 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 1.2 0 1.3 0 1.2 0 1.2 0 0.6 0 0.6 0 1.3 0 0.4 0-0.3 2.7-0.4 2.9-0.3 2.8-0.4 2.9-0.1 1-0.2 1.1-0.1 1-0.1 1.1-0.2 0.7 0 0.6 0 0.4 0.4 0.5 1.7 1.4 1.6 1.3 1.6 1.4 1.7 1.4 0.4 0.3 0.6 0.3 0.5 0.2 0.6 0.1 0.9 0.3 0.7 0.4 0.7 0.5 0.7 0.7 0.6 0.5 0.3 0.4 0.2 0.6 0.1 0.8 0 1 0.1 1.1 0.1 1 0.1 1 0 0.4 0.1 0.3 0 0.3 0 0.3 0.2 2.1 0.2 2.1 0.1 2.1 0.2 2.1 0.1 0.5 0 0.5-0.1 0.4-0.2 0.4-0.2 0.5-0.2 0.5 0 0.6 0 0.7 0 0.1 0 0.1-0.1 0.7-0.1 0.7 0 0.7-0.1 0.6-0.2 2.7-0.2 2.7-0.2 2.6-0.2 2.7-0.1 0.8-0.1 0.8 0 0.7-0.1 0.8 0 0.6-0.1 0.4-0.2 0.2-0.5 0-0.5 0-0.5 0-0.5 0-0.5 0 0.2 1.7 0.2 1.6 0.1 1.6 0.2 1.7 0.2 1.8 0.3 1.8 0.2 1.8 0.2 1.9 0.1 1.3 0.2 1.4 0.2 1.3 0.1 1.3 0.1 0.4 0 0.4 0 0.4 0.1 0.3 0.1 0.3 0.2 0.3 0.1 0.4-0.1 0.3-0.2 0.9-0.4 1.2-0.3 1.1 0 0.9 0.3 0.9 0.3 1 0.3 1 0.3 1 0.3 0.6 0.2 0.7 0.3 0.7 0.2 0.7 0.2 0.6 0.4 0.9 0.2 0.8 0 0.5-0.6 0.6-0.6 0.6-0.6 0.6-0.7 0.6-0.4 0.2-0.5 0-0.5-0.2-0.4-0.1-1-0.3-1-0.2-1-0.3-1-0.2-1.5-0.3-1.3-0.1-1.4 0-1.5 0.1-0.7 0.2-0.5 0.2-0.5 0.4-0.5 0.5-0.6 0.5-0.5 0.5-0.3 0.6 0.2 0.7 0.9 2.2 0.9 2.2 0.9 2.2 0.9 2.2 0.2 0.4 0.4 0.3 0.3 0.3 0.4 0.2 0.5 0.3 0.5 0.3 0.5 0.2 0.5 0.3 0.3 0.6 0.2 0.7 0.1 0.7 0.4 0.6 0.8 0.6 0.8 0.7 0.7 0.7 0.8 0.6-0.3 0.4-0.1 0.4-0.1 0.5 0.1 0.5 0.6 0.7 0.6 0.6 0.6 0.6 0.8 0.5 0.5 0.3 0.3 0.4 0.1 0.5 0.1 0.6 0 0.7-0.1 0.6-0.2 0.7-0.1 0.6 0 0.6 0.2 0.5 0.3 0.6 0.2 0.5 0.1 0.9-0.3 0.7-0.5 0.6-0.5 0.7-0.2 0.8 0.1 0.8 0.3 0.6 0.4 0.7 0.6 1 0.6 1 0.7 1 0.6 0.9 0.4 0.4 0.3 0.2 0.4 0 0.5-0.1 0.3 0 0.2-0.1 0.2 0 0.2 0.2 0.1 0.4 0.2 0.3 0.1 0.4 0.2 0.3-0.2 0.8-0.3 0.8-0.2 0.8-0.2 0.8 0 0.6 0 0.8-0.1 0.7-0.2 0.4-1.4 1.2-1.4 1.2-1.5 1.2-1.4 1.2-2.8 2.4-2.8 2.3-2.9 2.3-2.9 2.2-0.2 0.2-0.2 0.1-0.1 0.1-0.2 0.2-0.3 0.5-0.5-1-0.8-0.5 0.1 0.1 0.1 0.2 0.1 0.1 0.1 0.3-0.6-0.2-0.3-0.1-0.3 0.1-0.8 0.9-0.3 0-0.1-0.4 0.4-2.3-0.1-1.3-0.3-1.2-0.7-0.8-1-1.5-1.3-0.9-0.8-1.3-0.9-0.8-0.8-0.3-0.8-0.1-0.3-0.2 0.4-0.1 0.5 0.2 0.7 0.2-0.2-0.6-0.2-0.1 0.2-0.3-0.2-0.4-0.5 0-0.4-0.1-0.2-0.3-0.1-0.5-0.3 0.2-0.3 0.3-0.2-0.6-0.5-0.1-0.3 0.4-0.3 0.3-0.1 0.4 0.3 0.1 0.3 0.1 0.3 0 0.1 0.2-0.1 0.2 0 0.3 0.5 0.3 0.3 0.1 0 0.2-1-0.5-2.2-0.4-1.2 0.1-0.4 0.3-0.1 0.3-0.8-0.1-0.9-0.4-1.3-0.5-0.4-0.4-1.4-1.5-0.7-1.1-0.2-1.2-0.2-1.1-0.4-0.7-0.4-1-0.1-0.4-0.3-0.5-0.9-1.5 0.1-0.3 0.2 0.4 0.8 1.3 0.6 0.5-0.7-1.8 0-0.7-0.2-1.4-1-1.2-0.4-0.4-0.5-0.2-0.5-0.1-0.5 0-0.2 0.1-0.2 0.1-0.2 0.2-0.2 0.2-0.2 0.3-0.3 0.3-0.8-0.7-1.7-0.5-1.2-0.3-0.7-0.2-0.7-0.1-0.7-0.2-0.7-0.1-0.9-0.6-0.5-0.2-1-1.2-0.9-1.2-1.3-0.9-0.4-0.3-1.1-0.2-0.6 0-0.1-0.3 0.9 0 0.8 0.1 0.8 0.1 0.4-0.3-0.6-0.5-0.7-0.9-0.3-0.4 0.1-0.2 0.1-0.2 0-0.2-0.4-0.2-0.1-0.1-0.2-0.2-0.6 0.4-0.3 0.2-0.3 0-0.3-0.1-0.1-0.3 0-0.8-0.1-0.8-0.9-0.5 0-2-0.3-1-0.8-2.1 0-1.1 0.3-0.5 0.5-0.2 0.6-0.1 0.3-0.5-0.1-0.5-0.3-0.1-0.4 0.2-0.2 0.4 0.2-1 0.2-0.3 0.4-0.2 0.3 0 0.3-0.1 0.2-0.4-1 0-0.5-0.3-0.1-0.4 0.4-0.8-0.4-0.1-0.3-0.2-0.1-0.4 0.2-0.4 0.2 0.3 0.2 0.1 0.1-0.2 0.2-0.6 0.1-0.1 0.3 0.1 1.4-0.3 0.4-0.3-0.1-0.6-0.6 0.2-1.7-0.7-0.7 0.1 0.4 0.3-0.2 0.2-0.4-0.1-0.9-0.6-0.5-0.2-2-0.5-1-0.1-1 0.1-1.1 0.2 0-0.2 0.3-0.1 0.9-0.4-0.2-0.4-0.1-0.3-0.1-0.3 0-0.4-0.1-0.4-0.4-0.2-0.3 0-0.2 0.4 0 0.9-0.1 0.5-0.3 0.5-0.6 0.6 0.5 0 0.2 0.1 0.1 0.3 0 0.4-0.1 0.4-0.3 0.6-0.2 0.2-0.2-0.3-0.1-0.1-0.7-0.9-0.1-0.1-0.5 0-0.2-0.1-0.1-0.2-0.1-0.2-0.1-0.1-0.2-0.2 0.3-0.3 0.2-0.1 0.3 0-0.5-0.5-0.6-0.6-0.7-0.3-0.6 0-0.6 0.2-0.5 0.6-0.8 0.1-0.5 0 0.1-0.3 0.2-0.2-0.3-0.4-0.4-0.2-0.3 0-0.4-0.5-0.8-0.2-0.4-0.5-0.4-0.5-0.6-0.8-0.9-0.2-0.4-0.7-0.5-0.6-0.5-1.2-1-1-0.2-1.5-0.2-0.3-0.1-0.1-0.4 0.1-0.2-0.1-0.1-0.1 0-0.2-0.3-0.5-0.1-0.7-0.1-0.3-1.3-1.2-0.4-0.5-0.2-0.7 0.2-0.4 0.3-0.3 0.1-0.6-1 0.2-1.2-0.4-2-0.7-1.9-1-0.7-0.2-0.6-0.2-0.3-0.1-0.5-1.3-0.5-1.3-0.5-1.4-4.6-4.5-0.6-0.9-0.3-0.3 0.2-0.2 0.3 0 0.3-0.2 0.6-0.4 0.2 0 0.2 0.3 0.2 0.4 0.1 0.2 0.3 0.1 0.2-0.1 0.1-0.3 0-0.4 0-0.3-0.3-0.6-0.5 0-0.5 0.1-0.7-0.1-0.8-0.7-0.4-0.6-1-0.4-0.8-0.2-0.1-0.7-0.4-0.1 0-0.4-0.4-0.4-0.6-0.5-0.2-0.5-0.3-0.4-0.1-0.2-0.3-0.1-0.4-0.1-0.6 0-0.5-0.1-0.1-0.2 0.3-0.2 0.2-0.3-0.1-0.3 0-0.3-0.4-1.3-0.1-0.8-0.4-0.1 0.1-0.3 0.3-0.5 0.2-0.4 0-0.3-0.3-0.7-0.5-0.6 0.1-0.3-0.5-0.4-0.5-0.3 0.4-1.3 0-0.8-0.4-0.9-0.4-1.1-0.7-0.5-1.4 0-0.3 0.1-0.2 0.2-0.1 0.1 0.1 0.3-0.1 0.4-0.2-0.2-0.5-0.6-1-0.4-0.5-0.4-0.3-1 0.4-1 0.6-1.3 0.2-0.6 0-0.8-0.2-0.4-0.6-0.1-0.4-0.3-0.3-0.3 0.1-0.7-0.1-0.6-1-0.9-1.1-1-0.8-1.9-0.1-0.4-0.2-0.4-0.5 0.1-0.6-0.7-0.2-0.5-0.2-1.3-0.4-0.7-0.5-0.6-0.3-0.5-0.6-1.9-0.3-0.5-0.5-0.3-0.2 0.1-0.5-0.2-0.6 0.3-0.4-0.3-0.2-0.5 0.4-0.5-0.2-0.6 0.3-1 0.1-0.8-0.2-0.5-0.3-0.4-0.3-0.6 0-0.6 0.2-1.8 0-1.8-0.4-0.9-0.4-0.6-0.5-0.5-0.3-0.4-0.6-0.4-0.2 0-0.3-0.1-0.3 0.3-0.1-0.2 0.3-0.6 0.1-1.1-0.1-1.4-0.2-1.3-0.4-0.9-1.3-1.5-2-2-1.6-2.5-1.1-2.1-1-3.7-0.4-1 0.5-1 0.3-2.2 0.1-1.3-0.1-1.1-0.9-2.4 0-0.5 0.2 0 0.2 0.3 0.1 0.4 0.3 0.7 0.4 1.1 0.2 0.1 0.2-0.3 0.6-1.1 0-1.6 0-1.5 0.2-1.1-0.6-0.6-0.7-1-0.7-0.5-0.8 0 0 0.3 0.5 0.2 0.3 0.2-0.1 0.3-0.5-0.2-0.5-0.3-1.2-0.7-0.3-0.8-0.4-0.4-0.3-0.9-0.4 0-0.4 0.2-0.4 0.1 0.3 0.5 0.3 0.2 0.4 0.2 0.3 0.2-0.4 0.1-1-0.3-4.5-0.8-1.4-0.4-1.9-0.3-0.3-0.7-0.7-0.2-1.1-0.1-0.6-0.5 0.2-0.2 0.5 0 0.3-0.2-0.3-1-0.5-1.8 0.1-1-0.8-1.1-1.5-1.1-1.3-0.6-0.5-0.5-0.8 0-1.3-0.7-0.8-0.4-0.2-0.6-0.8 0.3-0.4 0.1-0.4 0-0.5-0.5-0.2-1.3-0.4-0.3-0.1 0.5 0 1.8 0 0.3 0.2 0.3 0.2 0 0.2 0 0-0.1 0.3 0.4-0.1 0.1-0.3 0.1-0.4 0.6-0.1 0.4-0.3 0.2-0.4 0.1-0.1 0.3-0.2 0.2-0.1 0.2-0.3 0.4-1.2 0-1.3 0-1.2-0.1-1.4-0.6-0.7-0.6-0.8-0.3-0.8-0.4-0.3-0.3-0.4-0.5-0.4-0.2 0-0.5-1-0.4-1.5-0.9-0.5-0.4-0.5-0.1-0.4-0.6-0.9-0.3-1.4-1.4-1.2-1.5-0.6-0.1-2.1 0-0.2 0-0.3-0.2-0.5-0.6-0.1-0.1-0.3-0.1-0.6-0.5-0.3-0.1-1-0.1-0.3-0.1-0.4-0.4-0.7-1.1-0.4-0.2-0.6-0.1-1.6-1.3-0.1-0.7 0-0.8 0-0.8 0.1-0.9 0-0.5-0.1-0.4-0.2-0.4-0.2-0.4-0.2-0.2-0.3-0.2-0.2-0.1-0.1-0.2-0.1-0.5 0.3-0.5 0.3-0.5 0.1-0.7-0.3-1.4-0.5-1-0.6-1-0.8-1-0.2-0.2 0.1-0.5 0.5-0.7 0.6-0.4 0.5-0.6 0.3-0.8 0-0.6 0-0.6 0.1-0.6 0.2-0.7 0.4-0.9 0.6-0.6 0.6-0.3 1.5 0.1 0.6-0.1 0.3-0.3z m137.1 179.1l0.2 0 0.6 0.2 0.9 0.4 0.8 0.6 0.6 1-0.2 0-0.7-0.9-0.7-0.5-0.7-0.4-0.5-0.1-0.3-0.3z m-16-7.4l-0.1-1.3 0-0.8 0.2-0.7 0.2-0.4-0.2 1.3 0.1 1.4 0.6 0.6 1.3 0.5-0.1 0.5-1.6-0.6-0.4-0.5z m-48-47.2l-0.4 0.2-0.6 0.5-0.5-0.5-0.5-0.1-0.4 0.2-0.3-0.4-0.4-0.1-0.5-0.6-0.4-0.2-0.3 0.1-0.3-0.2-0.6 0.1-0.3-0.2 0-0.5-0.8-0.1-0.1-0.3-0.7-0.4-0.8-0.4-0.4-0.4-0.3 0-0.3-0.2 0.8-0.5 0.9-0.6 0.4-0.6 0.2-0.1 0.1-0.3 0.2-0.4 0.1-0.2 0.1-0.4-0.1-0.4-0.3-0.3-0.1-1.3 0.1-1.5 0.3-1.3 0.3-1.3 0.2-0.4 0.2-0.5 0.4-0.3 0.4-0.3 0.5 0.4 0.6 0 0.6-0.5 0.5-0.4 0.5-0.1 0.8 0 0.5-0.1 0.3-0.3 0.3-0.3 0.4-0.2-0.1 0.3-0.4 0.4 0.1 0.6 0.4 0.3 0 0.2-0.1 0.3 0 0.3-0.2 0.3 0.2 0.4-0.1 0.5 1 1.4 1.2 2.4-0.5 1.2-0.1 1-0.4 1.7-0.4 0.4 0.2 0.5-0.5 0.6-0.2 0.7-0.3 0.4-0.1 0.6 0.1 0.7 0.3 0.1 0.2 0.4-0.3 0.2-0.3-0.2z m-72.1-100.9l0.9 0.2 1.3 1.1 1.1 1.5 0.5 1-0.4 0-0.3-0.1-0.3-0.3-0.1-0.3-0.7 0.6-1.3-0.7-1-1.4 0.3-1.6z m159.5 182l0.1-0.6 0-1.7 0.3-0.3 0.6 0 0.5 0.2 0.4 0.2 0.2 0.6 0 0.2-0.3 0.2-0.5 0.4-0.6 0.4-0.6 0.3-0.1 0.1z m-1.8 0.9l0.1-0.3 0.6-1 0.1-0.6 0.1-0.3 0.2 0.1 0.1 0.4-0.3 0.7-0.2 0.1-0.2 0.3-0.1 0.2-0.1 0.2-0.1 0.1-0.1 0-0.1 0 0 0.1z m-60.2-55.9l-0.2-0.3 0.3-0.3 0.4 0.6 0.2 0.5-0.5-0.1-0.2-0.4z\",\n\tMXTAB:\n\t\t\"M831.4 503.9l0 8.2 0 8.3-12.6-0.1-0.1 0-0.1-0.1-0.1-0.4 0-0.5 0.1-0.4 0.2-0.3 0.4-0.1 0.4 0 0.3-0.1 0.1-0.4-0.1-0.1-0.7-1.2-0.2-0.3-0.3-0.1-0.6 0-0.3 0-0.5-0.2-0.3-0.2-0.2-0.3 0.2-0.9 0-0.5-0.2-0.1-0.3-0.2-0.2-0.2-0.6-0.2-0.6-0.2-0.5-0.2-0.1 0-0.1-0.1-0.1 0-0.1 0-0.5-0.2-0.6-0.3-0.5-0.3-0.2-0.5 0-0.3 0.1-0.3 0-0.3-0.1-0.3-0.2-1-0.2-1.1-0.4-1-0.5-0.9-0.6-0.2-0.6 0-0.6 0-0.6 0-0.4-0.2 0.1-0.6 0.3-0.5 0.2-0.3-0.1-0.9-0.1-0.2-0.1-0.1 0-0.2 0-0.6 0-0.2-0.4-0.7-0.6-0.5-0.6-0.1-0.6 0.5-0.7-0.4-0.4-0.1-0.4 0.1-0.4 0.1-0.1 0.3-0.1 0.3-0.2 0.3-0.4-0.4 0.1-1.1-0.4-0.2-0.2 0-0.7 0.2-0.8 0.5-0.8 0.8-0.7 0.8 0.5 0.9-0.6 0.5-1 0.1-0.9-0.1-0.6 0.4-0.7 0.4-0.7 0.4-0.7 0.3-0.9 0.2-1.1 0.2-0.9 0.3-0.7 0.5-0.3 1 0 0.7-0.2 0.5-1 0.4-0.6 0.1-0.6 0.5-0.5 0.5-0.4 0.5-0.7 0.5-0.6 0.6-0.6 0.5-0.6 0.6-0.3 0.2-0.3 0.3-0.3 0.3-0.2 0.3-0.5 0.4-0.4 0.4-0.5 0.4-0.4 0.4-0.1 0.1-0.1 0.1-0.1 0.1-0.1 0.1-0.8 0.5-1 0-0.9-0.3-0.8-0.4-0.4-0.4-0.4-0.4-0.3-0.5-0.3-0.5-0.5-0.9-0.3-0.8-0.5-0.6-1-0.2-0.7 0-0.4-0.3-0.2-0.6-0.1-0.7 0-1.3-0.2-1.2-0.3-1.2 0-1.2 0.1-0.5 0.2-0.5 0.2-0.4 0.1-0.5 0-0.5 0-0.6-0.1-0.5 0-0.5 0-0.1 0-0.1 0-0.1 0-0.6-0.1-0.2 0-0.5-0.4 0.6-0.6-0.1-0.7 0.7-0.9-0.2-0.9-0.7-0.7-0.8-0.7-0.3-0.5-0.4-0.3-0.2-1-0.1-0.8-0.3-0.4 0-0.3 0.1-0.4 0.5-0.1 0.2-0.4 0.1-0.1 0.6-0.6 1.8-0.6 1.8-0.5 1.8-0.5 1.7-0.1 0.5-0.1 0.6-0.2 0.6-0.2 0.4-0.4 0.3-0.4 0.3-0.4 0.3-0.3 0.4-0.1 0.1-0.1 0.6-0.1 0-0.2 0.1-0.1 0.1-0.5 0.4-0.2 0.2-0.1 0.3-0.2 0.2-0.1 0.4-0.3 0.8-0.3 0.8-0.4 0.9-0.4 0.8-0.4 0.9-0.5-0.2-0.5-0.2-0.4-0.4-0.2-0.6 0.1-0.2 0.1-0.3 0.1-0.4 0.1-0.3 0-0.3 0-0.3 0.1-0.3 0.1-0.3 0.1-0.7 0.2-0.6-0.3-0.5-0.8-0.4-0.4-0.3-0.6-0.7-0.6-0.7-0.3-0.5-0.5-0.7-0.7-0.5-0.8-0.4-0.8-0.2-0.3 0-0.3 0-0.3-0.1-0.1-0.2-0.1-0.6-0.2-0.2-0.5-0.1-0.6 0-1.1-0.3-0.3-0.8-0.1-0.8-0.5-0.7-0.4-0.1-0.4-0.1-0.4 0-0.4-0.2 0-0.1-0.1-0.2 0-0.1-0.1-0.2-0.2 0-0.2 0-0.3 0-0.2-0.1-0.4-0.4-0.1-0.7 0.1-0.7 0.1-0.6 0.1-0.5 0.3-0.4 0.2-0.4-0.2-0.4-0.2-0.3-0.1-0.3 0-0.3-0.1-0.3-0.1-0.3-0.2-0.2-0.1-0.1-0.1-0.2 0.1-0.2 0.2-0.1 0.1-0.2-0.3-0.2-0.2-0.3 0-0.4 0-0.4 0-0.4-0.1-0.4-0.2-0.1-0.3 0-0.3-0.2-0.1-0.2-0.1-0.4 0-0.3-0.1-0.3 0.7-0.4 0.8-0.3 2.2-0.5 0.4-0.4 0.6-0.3 3.2-1.1-0.2 0.4-0.3 0.2-0.2 0.3-0.1 0.5 0.3 0.1 2.3-0.3 0.5-0.2 0.4-0.2 0.2-0.3 0-0.3-0.1-0.2-0.1-0.2 0.1-0.3 0.2-0.2 0.4-0.2 0.1-0.1 0.4 0.1 0.4-0.1 0.4-0.2 0.4-0.2 0.2 0.5 0.5 0.1 1.9-0.3 0.3-0.4 0.4-1-0.2-0.7-0.1-0.1-0.3 0-0.4 0.2-0.4 0.1-0.1 0.2-0.4 0.3-2 0.6-0.2 0.2-0.2 0.4-0.2 0.1-1.3 0.2-1 0.7-0.3 0.2-0.3 0-0.3 0-0.3 0.3 0.2-0.5 0.5-0.3 0.6-0.2 0.2-0.3 0.4-0.3 5.3-2 1.3-0.3 3-0.4 4 0.2 4.3-0.2 0 0.2-0.2 0.4-0.3 0.3-0.2 0.1 0.1 0.3 0 0.7 0.2 0.2 0.3 0 0.4-0.1 0.5-0.3 0.2-0.2 0 0.5-0.3 0.6-0.1 0.4 0.2 0 0.4-0.6 0.2-0.3-0.2-0.1 0.6-0.1 0.2-0.5-0.2-0.5-0.7-0.2-0.6-0.1 0.1-0.3 0.4-0.2 0.6-0.2 4.6-0.1 2.5-0.6 1.4-0.8 1.3-1.3 0.6-0.9 0.2-0.4 0.2-0.3 0.2-0.1 0.3 0 0.1 0.2 0.4 1 0.2 2.9 0.4 0.8 0.2-0.8-0.2-0.5 0-0.7 0.2-1.2-0.2-0.6-0.7-1.4-0.1-0.4 0.5-0.2 0.7-0.1 1.3 0.1 0.6-0.1 3-0.7 0.3 0.5 0.3 0.6 0.4 0.5 0.4 0.6 0.2 0.7 0.1 0.8 0.3 0.7 0.4 0.5 0.3 0.2 0.2 0.2 0.2 0.2 0.3 0.2 0.3 0.1 0.2-0.1 0.2-0.1 0.2 0 1.3 0.2 1.4 0 1.3-0.1 1.3-0.1 0 1.4 0 1.4 0 1.4 0 1.4-0.1 0.9-0.1 1.2 0 1.2 0.5 0.7 0.7 0.4 0.6 0.6 0.7 0.5 0.6 0.5 0.4 0.3 0.4 0.2 0.4 0.2 0.4 0.1 0.5 0.3 0.2 0.5 0.1 0.5 0.5 0.2 0.8 0.6 0.8 0.5 1 0.4 0.9 0 1.4 0.1 1.4 0 1.4 0 1.3 0 0.3-0.4 0.3-0.6 0.3-0.8 0.1-0.5 0-0.3-0.1-0.3 0-0.3 0-0.3 0.1-0.2 0.1-0.3 0.1-0.3 0.1-0.2 0.6-0.1 0.8-0.1 0.8 0.1 0.7 0 0.3 0 0.4 0.1 0.3 0.1 0.3 0.1 0.6 0.2 0.4 0.2 0.5 0.1 0.6 0.1 0.6 0 0.5 0.2 0.5 0.2 0.5 0.4 0.4 0.3 0.5 0.4 0.6 0.4 0.5 0.1 0.6 0 0.5-0.1 0.6 0.1 0.5 0.2 0.3 0.3 0.2 0.2 0.3 0.2 0.4 0.1 0.8 0 0.8 0.1 1.8 0 0 0.6 0 1.5 0 1.5 0 1.5z\",\n\tMXTAM:\n\t\t\"M581.1 196.2l0.1 0.2 0.2 0.2 1-0.1 0.2 0.2 0.2 0.6 0.2 0.1 0.3 0 0.6-0.3 0.3-0.1 0.3 0.1 0.4 0.6 0.1 0.2 0.5 0.1 0.6 0.3 0.6 0.5 0.2 0.5 0 1.3-0.1 0.8 0 0.3 0.2 0.2 0.5 0 0.2 0.1 0.1 0.3 0.1 0.4 0 0.2 0 1.2-0.1 0.4-0.2 0.7-0.1 0.7-0.2 0.4 0 0.3-0.1 0.3-0.5 0.6-0.2 0.3 0.8 0.3 0.2 0.2 0.1 0 0 0.3 0.1 0.1 0.3 0.2 0.1 0 0.4 0.5 0.3 0.6 0.2 0.5 0.1 0.7-0.1 0.6-0.5 1.4 0 0.6 0 0.2 0.2 0.2 0.1 0.2 0.1 0.3-0.1 0.3-0.6 1 0.5 0.7 0.1 0.2 0.5 0.4 0.2 0.1 0.3 0 0.2 0 0.2 0.3 0.1 0.4 0 0.6 0.1 0.4 0.3 0.2 1.1 1 0.3 0.4 0.9 1.1 0.4 0.6 0.5 0.5 0.4 0.5 0.4 1.4 0.4 1.6 1.2 3.4 0 0.5 0.3 1.6 0.1 0.7 0.7 0.3 0.8 0.2 0.3 0.4 0.3 0.9 0.1 0.5-0.1 0.3-0.3 0.4-0.2 0.4 0.1 0.4 0.6 0.5 0.6 0.1 0.5-0.1 0.6 0 0.1 0.1 0.2 0.3 0.2 0.1 0.2-0.1 0.4-0.2 0.7 0 0.3 0.2 0.2 0.5 0.5-0.4 1 0.8 0.7-0.2 0.3 0.2 0.3 0.1 0.2-0.1 0.2-0.2 0.3 0.2 0.2-0.1 0.2-0.1 0.3 0 0.1 0.1 0.5 0.6 0.9 0.6 0.4 0.4-0.2 0.5 0.4 0 0.4 0 0.3 0.2 0.3 0.2-0.3 0.5 0 0.1 0.3 0.1 0.2 0 0.6 0.6 0.3 0.2 0.4 0.1 1.7-0.7 0.8 0.5 0.9 0.2 0.8 0.4 0.6 0.7 0.5-0.6 0.8 0.3 0.9 0.5 0.8 0.2-0.3 0.7 0 0.3 0.4 0.1 0.7 0 0.2 0.2 0.7 1.1 0.3 0.3 2.2 1.1 1.1 0.3 1 0.1 1.3-0.4 0.6 0.2 0.2 0.7 0.3 0.2 0.6-0.2 0.9-0.5 0.4 0 1.7 0.2 1.8-0.2 2.2 0 0.5 0.2 0.1 0.4 0.4 0.2 2.5 0.1 0.5 0.2 0.6 0.2 0.5 0.4 0.3 0.5 0.2 0.5 0.3 0.4 0.9 0.4 1.2 1.3 0.6 0.4 0.4 0.2 0.5 0 0.6 0.1 0.2 0.2 0.2 0.5 0.3 0.5 0.6 0.1 0.1-0.1 0-0.2 0.1-0.2 0.2 0 0.2 0.2 0.1 0.2 0.1 0.2 0.3 0.1 0.6-0.3 0-0.6-0.2-0.7-0.1-0.6 0.1-0.2 0.7-0.4 0.5 0.3 0.6-0.2 0.6-0.5 0-0.5 0.4-0.1 1.4 0.1 1.9-0.2-0.8 4.4 0.3 1.2-0.2 0.7-0.1 1.5-0.2 0.6-0.4 0.5-0.3 1.3-0.8 2-1 2.7-1.7 3.5-4 6.6-2.8 10.6-2.7 10.4-1.6 13.6-0.1 1.1-0.2 1.3-0.2 6.4-0.3 0.5-0.5 0.2-2-0.2 0 0.2 0.8 0 0.6 0.1 0.4 0.3 0.1 0.8-0.2 2.9 0.2 0 0.2-0.8 0.2-2.1 0.2-0.9 0.3 1.1-0.5 6.3-0.5 3-0.3 5.7 0.8 9-0.4 3.8 0.1-1.8-0.1-0.5-0.3 0.3-0.8 3.3-0.3 0.4-0.9 1-0.1 0.3 0 0.4-0.1 0.2-0.2 0-0.8-0.2 0.6 0.7 0 0.6-0.9 2.3-0.2 0.4 0.1 0.5 0.3 0.2 0.3 0 0.3-0.2 0.3-0.2 0-0.4-0.1-0.9 0.1-0.4 0.3-0.4 0.1 0 0.1 0.3 0.1 0.5 0 0.8-0.6 2.6 0.8 3.1 0 0.9 0.1 0.4 0.3 1.6 0.1 0.4 0.1 0.3 0.5 1.4-0.2 0.2-0.8 0.5-0.2 0.1-0.3 0.2-0.2 0.3-0.3 0.3-0.3 0-0.3-0.3-0.3-0.3-0.2-0.3-0.3-0.2-0.3-0.3 0-0.5 0.3-0.4 0.2-0.4-0.4-0.3-0.5-0.3-0.5-0.4-0.6-0.3-0.4-0.1-0.7 0-0.8-0.3-0.7-0.2-0.6 0-0.5-0.1-0.5-0.4-0.5-0.4-0.4-0.4-0.6-0.5-0.2-0.8-0.2-0.6-0.6-0.2-0.4 0.1-0.3 0.1-0.2 0.2-0.3 0.1-0.3 0.1-0.2 0-0.1 0-0.4-0.2-0.4 0-0.2 0.6 0 0.7-0.1 0.6-0.3 0.2-0.4 0-0.4-0.1-0.3-0.2-0.5 0.2-0.2-0.3-0.2-0.5-0.3 0.1-0.4 0.4-0.3-0.1-0.3-0.3-0.4-0.3-0.2 0.1-0.1 0.1-0.1 0.1-0.2-0.2-0.2-0.1-0.2 0-0.1 0-0.2 0-0.9 0-0.9 0.1-1 0.3-1 0.1-0.3-0.2-0.3-0.1-0.3-0.2-0.3-0.3-0.5 0.7-0.8 0.3-0.9 0.1-0.9 0.1-0.4 0.2-0.3 0.4-0.3 0.4-0.3 0.3-0.6 0.1-0.8 0-0.7-0.1-0.6-0.1-1-0.2-0.9-0.2-0.9-0.3-0.9-0.4-0.1 0-0.1-0.1-0.1 0-0.8-0.3-0.8-0.2-0.9-0.2-0.8-0.1-0.7-0.1-0.7-0.1-0.6-0.2-0.6-0.5-0.4-0.6-0.4-0.7-0.3-0.8-0.3-0.7-0.5-0.9-0.5-0.9-0.5-0.8-0.4-0.9-0.1-0.2-0.1-0.1-0.1-0.2-0.1-0.2-0.3 0.5-0.4 0.5-0.4 0.4-0.4 0.1-0.5-0.3-0.5-0.6-0.5-0.7-0.4-0.5-0.3-0.2-0.3-0.3-0.3-0.2-0.3-0.1-0.3 0.1 0 0.1 0.1 0.1 0.1 0.3 0.1 0.5 0.1 0.4 0.1 0.5 0.1 0.4 0 0.9-0.2 0.2-0.5-0.1-0.8-0.3-0.5-0.2-0.6-0.1-0.5-0.2-0.6-0.2-1.5-0.6-1.5-0.7-1.5-0.6-1.5-0.6-0.7-0.2-0.6-0.3-0.7-0.3-0.6-0.3-0.4-0.1-0.5-0.2-0.3-0.2-0.2-0.2-0.1-0.5-0.1-0.4-0.1-0.3-0.2-0.4-0.3-0.5-0.2-0.3 0.1-0.4 0.4-0.4 0.6-0.4 0.7-0.2 0.7-0.2 0.6-0.5 0.3-0.3 0.2-0.4 0.1-0.4 0.1-0.4-0.2-1.1-0.6-0.8-0.8-0.7-0.7-0.8-0.3-0.6-0.1-0.5 0-0.6-0.1-0.6-0.5-0.1-0.7 0.4-0.7 0.7-0.5 0.4 0.2-0.9 0.3-1 0.2-0.9 0.2-0.9 0.1-0.5 0.1-0.4 0.1-0.5 0-0.4-0.2-0.5-0.7-0.5-0.8-0.5-0.5-0.3 0.7-0.8 0.8-0.7 0.8-0.4 1 0.2 0.7 0.3 0.7 0.3 0.8 0.3 0.8 0.2-0.4-1.2-0.3-1.2-0.3-1.2-0.4-1.2 0.1-0.3 0.1-0.4 0.2-0.3 0.2-0.3 0.3-0.8 0.3-0.8 0.4-0.8 0.4-0.8 0.2-0.5 0.3-0.6 0.4-0.6 0.4-0.5 0.2-0.1 0.3-0.1 0.3-0.1 0.3 0 0.9 0 0.8 0 0.8-0.1 0.8-0.1 0.8-0.1 0.9 0 0.8-0.2 0.5-0.5 0.5-0.8 0.6-0.9 0.6-0.8 0.6-0.9 0.3-0.1 0.4 0.1 0.4 0.1 0.3-0.1 0.1-0.3-0.1-0.4-0.1-0.4-0.1-0.3-0.1-0.7-0.4-0.5-0.5-0.3-0.5-0.4-0.5-0.4-0.5-0.5-0.5-0.4-0.4-0.5-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.5-0.8-0.2-1.4 0-1.6 0.1-1.1 0.2-0.8 0.2-0.8 0.2-0.8 0.3-0.8 0.2-0.7 0-0.5-0.1-0.6-0.1-0.7-0.1-0.4-0.1-0.4-0.1-0.4-0.1-0.4 0-0.1 0-0.1 0-0.1-0.1-0.4-0.1-0.4-0.1-0.4 0-0.4-0.8 0.4-0.7 0.3-0.8 0.3-0.7 0.3-0.3-0.7-0.3-0.9-0.2-0.8 0-0.7 0.5-0.4 0.5-0.5 0.5-0.4 0.5-0.5 0.5-0.3 0.6-0.3 0.7-0.2 0.5-0.2 0.2 0.1 0.3 0.1 0.2 0.2 0.2 0.1 0.3-0.1 0.2-0.1 0.2-0.2 0.2-0.2 0.3-0.2 0.2 0 0.2-0.2 0.1-0.3 0-0.6 0-0.4 0.2-0.4 0.3-0.3 0.2-0.1 0.2-0.1 0.2 0 0.2 0 0.3-0.2 0.1-0.1 0.1-0.2 0.1-0.2 0.5-0.4 0.4-0.1 0.5 0.1 0.7-0.1 0.3-0.1 0.3-0.1 0.3-0.2 0.3-0.3 0.4-0.5 0.2-0.2 0.4 0.2 0.5 0.4 0.6 0.3 0.8 0.3 0.8 0.2 0.7 0.2-0.1-0.3 0-0.2-0.1-0.3-0.1-0.3-0.3-0.7-0.2-0.7-0.1-0.7 0.4-0.7 0.3-0.3 0.3-0.4 0.3-0.4 0.2-0.4-0.2-0.3-0.3-0.5-0.4-0.4-0.3-0.3-0.1-0.4 0.3-0.2 0.6 0 0.4 0-0.2-0.5-0.1-0.5 0.2-0.2 0.6 0.1 0.5 0 0.3-0.4 0.2-0.4 0.5-0.2 0.4-0.6 0.3-0.6 0.4-0.1 0.4 0.7 0.5 0.6 0.6 0.3 0.7 0 0.7-0.1 0.7-0.1 0.6-0.3 0.5-0.4 0.6-0.5 1.6-1.3 1.6-1.3 1.5-1.3 1.6-1.4 1-0.8 1-0.8 1-0.9 1-0.8 0.4-0.4 0.5-0.4 0.4-0.4 0-0.6 0-0.6-0.1-0.2-0.3-0.2-0.4 0-0.5 0-0.7 0.1-0.7-0.1-0.4-0.1-0.2-0.8 0-1.4 0.1-1.4 0.1-1-0.1-1.6 0-1.7 0-1.6 0-1.6 0-1.2 0.1-1.8-0.1-1.7-0.4-0.8-0.7-0.2-0.7-0.2-0.7-0.2-0.8-0.2-0.4-0.2-0.5-0.1-0.4-0.1-0.5-0.1-0.6-0.2-0.8-0.3-0.8-0.2-0.6 0-0.4 0.5-0.5 0.8-0.4 0.9-0.3 0.7-0.8-0.8-0.7-0.7-0.7-0.7-0.7-0.8-0.5-0.5-0.4-0.4-0.5-0.3-0.6 0.1-0.2 0.1-0.2 0.2-0.1 0.2-0.1 0.2-0.2 0-0.3-0.1-0.2-0.1-0.2 0.1-0.2 0.1-0.1 0.2-0.2 0.2-0.2 0.2-0.5-0.9-0.2-1.8-0.1-2-0.1-1.5-0.1-0.5-0.1-0.4-0.2-0.3-0.4-0.1-0.4 0.1-0.5 0-0.4 0-0.4-0.2-0.3-0.4-0.4-0.4-0.3-0.4-0.3-0.4-0.3-0.4-0.2-0.4-0.3-0.4-0.2-0.4-0.4 0-0.6 0.6-0.7 0.3-0.5-0.5-0.3-0.5-0.1-0.5 0-0.5 0-0.7 0-0.4 0.1-0.3 0.2-0.2 0.2-0.3 0.4-0.8 0.2-0.9 0.1-0.9-0.3-0.9-0.6-0.9-0.9-0.5-1.1-0.4-0.9-0.4-0.4-0.2-0.4-0.2-0.5-0.2-0.3-0.1-0.6 0.1-0.6 0-0.6 0-0.6 0 0.6-0.6 0.4-0.4 0.3-0.5 0-0.9 0.1-0.7 0.4-0.6 0.4-0.6 0.4-0.5-0.3-0.1-0.1-0.2-0.1-0.3-0.1-0.2-0.3-0.2-0.4-0.1-0.3-0.2-0.3-0.3-0.2 0-0.4-0.1-0.4-0.1-0.1 0-0.2-0.1-0.2-0.1-0.2 0-0.3 0-0.9-1.2 0.1-1.9 0.6-2.1 0.5-1.6 0.2-0.9 0.2-0.6-0.2-0.5-0.6-0.5-0.3-0.5-0.1-0.7-0.1-0.8-0.1-0.5-0.2-1.6-0.3-2.3-0.4-2.2-0.7-1-0.9-0.2-0.9-0.1-0.9-0.1-0.9-0.2-0.2-0.3-0.1-0.8 0-0.8 0.1-0.4 1.4-0.9 1.4-0.9 1.4-0.7 1.5-0.7 0.1 0z m54.4 157.1l0.5-1.3 0.2-0.4 0.2 0.6-0.4 1-0.6 0.9-0.7 0.3 0.2-0.3 0.4-0.5 0.2-0.3z\",\n\tMXTLA:\n\t\t\"M611.8 453.6l-0.1-0.4 0-0.4 0-0.4-0.1-0.4-0.9-0.2-0.4-0.4-0.3-0.5-0.2-1 0.4 0 0.3-0.1 0.4 0 0.3 0 0.4 0 0.2-0.2 0.1-0.3 0.1-0.3 0.4 0.1 0.3-0.1 0.3-0.3 0.3-0.3 0.4-0.1 0.4 0.3 0.4 0.3 0.5 0 0.4-0.3 0.4-0.4 0.4-0.2 0.4 0.4 0.1 0.1 0.1 0.1 0.1 0.1 0.6 0.1 0.6 0 0.6 0.1 0.6 0.1 0.1 0 0.1 0.1 0 0.1 0.1 0 0.6 0.3 0.5-0.3 0.3-0.8 0.3-0.7 0.2-0.4 0.3-0.3 0.2-0.3 0.3-0.3 0.1-0.2 0-0.2 0.1-0.1 0.4-0.2 0.2 0 0.1 0.2 0.1 0.2 0.1 0.1 0.6 0.4 0.6 0.3 0.7 0.3 0.8-0.1 0.4 0.1 0.3 0 0.4 0 0.4 0 0.5-0.2 0.1-0.3-0.1-0.3 0-0.6 0.3-0.4 0.5 0.3 0.5 0.9-0.1 0.9-0.3 0.5 0.2 0.3 0.4 0.1 0.6 0.1 0.5 0.2 0.4 0.4 0.3 0.5 0.5 0.4 0.8 0.3 1.1 0.3 0.9 0.5-0.2 0.8-0.3 0.1-0.3 0-0.2 0.1-0.1 0.3 0 0.3 0.1 0.2 0.2 0.1 0.2 0 0.2 0.4 0.1 0.6 0.2 0.4 0.5-0.2 0.5-0.3 0.5-0.2 0.5 0 0.5 0.3 0.3 0.3 0.4 0.4 0.3 0.4 0.3 0.4 0.3 0.3 0.3 0.2 0.3 0.3 0.4 0.1 0.8-0.1 0.5 0.2 0.3 0.6-0.2 0.8-0.6 0.7-0.8 0.4-0.9 0-0.7-0.4 0-0.1-0.1 0 0-0.1-0.1-0.1-0.5 0.4-0.8-0.1-0.8-0.2-0.7-0.2-0.1 0.1-0.1 0.1-0.2 0.2-0.1 0.1-0.3 0.1-0.3 0.2-0.3 0.2-0.2 0.3 0 0.1 0.3 0.6 0.4 0.5 0.4 0.5-0.2 0.5-0.2 0.2-0.2 0.2-0.3 0.3-0.2 0.2-0.6 0.3-0.7-0.1-0.6-0.3-0.7-0.3-0.1-0.1-0.2-0.1-0.2 0-0.2-0.1-0.1-0.1-0.1 0-0.1-0.1-0.1 0-0.1 0-0.2-0.2-0.3-0.1-0.2-0.1-0.3 0-0.5 0.7-0.5 0.8-0.6 0.7-0.7 0.3-0.6 0.1-0.6 0.3-0.6 0.2-0.6-0.2-0.3-0.3-0.2-0.4-0.2-0.3-0.2-0.3-0.1-0.1-0.1-0.1-0.1-0.1 0-0.1-0.2-0.1-0.1-0.1-0.1 0-0.1-0.1-0.1-0.1-0.1-0.1 0-0.1-0.1 0-0.1-0.1-0.1-0.1-0.2-0.1-0.1-0.1-0.1 0 0-0.1-0.3-0.1-0.2-0.1-0.2-0.2-0.2-0.2-0.2-0.1-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.3-0.1-0.2-0.1-0.2-0.2-0.5-0.3-0.4-0.4-0.4-0.4-0.4-0.1 0-0.1-0.1-0.1 0-0.3-0.2 0-0.4-0.1-0.3-0.2-0.4-0.2-0.3-0.1-0.3-0.2-0.4 0-0.4 0-0.1 0-0.1 0-0.1-0.1-0.1-0.5-0.4-0.3-0.1-0.3 0.1-0.5 0.3-0.8 0.1-0.9-0.2-0.9-0.3-0.8-0.2z\",\n\tMXVER:\n\t\t\"M612.5 362.7l1-0.1 1-0.3 0.9-0.1 0.9 0 0.2 0 0.1 0 0.2 0 0.2 0.1 0.2 0.2 0.1-0.1 0.1-0.1 0.2-0.1 0.4 0.3 0.3 0.3 0.3 0.1 0.4-0.4 0.3-0.1 0.2 0.5 0.2 0.3 0.5-0.2 0.3 0.2 0.4 0.1 0.4 0 0.3-0.2 0.1-0.6 0-0.7 0.2-0.6 0.4 0 0.4 0.2 0.1 0 0.2 0 0.3-0.1 0.3-0.1 0.2-0.2 0.3-0.1 0.4-0.1 0.6 0.2 0.2 0.6 0.2 0.8 0.6 0.5 0.4 0.4 0.5 0.4 0.5 0.4 0.5 0.1 0.6 0 0.7 0.2 0.8 0.3 0.7 0 0.4 0.1 0.6 0.3 0.5 0.4 0.5 0.3 0.4 0.3-0.2 0.4-0.3 0.4 0 0.5 0.3 0.3 0.3 0.2 0.2 0.3 0.3 0.3 0.3 0.3 0.3 0 0.3-0.3 0.2-0.3 0.3-0.2 0.2-0.1 0.8-0.5 0.2-0.2 0.3 0.6 0 3.8 0.3 1.1 4.4 8 2.9 3.5 0.5 0.3 1.6 1.5 0.3 0.1 0.3 0.5 2.1 1.3 0.7 1.3-0.1 1.3-0.4 1.3-0.2 1.3-0.2 0.5-0.8 1.4-0.3 0.5-0.3 0.5-0.2 0.7-0.2 1.4-0.2 0-0.4-2.1-0.7-1.6-0.2-0.9-0.3-0.3 0-0.2 0.5-0.5 0.5-0.4 0.5-0.3 0.6-0.1 0.3 0.3 0.3-0.6 0.1-0.4 0.1-0.5 0.1-0.5-0.3-0.6-0.6-0.5-1.1-0.7-1.4-1.3-0.4-0.7-1.6-1.7-1.3-1.9-0.7-0.6-0.1-0.3 0-0.4-0.5-2.1-0.3-0.7-0.8-0.5-2.4-4.3-0.3-1 0.1 0.7 0.5 1.1 0.2 0.4 0.2 0.6 0.7 1.7 0.2 1.2 0.1 2.6 0.6 2.1 0.5 2.6 0.4 1.2 2.3 4.2 0.4 0.5 0.5 0.2 0.4 0 0.5-0.1 0.4-0.4 0.3 0.4 0 0.6-0.3 1.2 0.1 0.7 2 4 0 0.3 0.4 0.2 0.3 0.4 0.2 1.1 1.7 4.6 2 3.9 2 3.6 0.3 1.1 0.3 0.5-0.2 0.1-0.1 0.1-0.3 0.4 1.4 2.9 3.3 4 1 0.9 1.1 0.6 0.6 0.5 0.4 1.2 0.4 0.5 0.8 0.8 2 2.4 1.8 1.5 0.5 0.6 0.4 0.9 0.3 0.3 0.3 0.2 0.1 0.2 0.3 0.1 0.3 0.2 1 1.8 1.9 2.3 1.9 2.9 1.5 1.9 0.5 0.9 1 2.9 0.3 2.7 1 3.6 0.3 0.5 0.9 1.2 0.2 0.5-0.3 0.8 0 0.4 0.4 1 0.2 1.2 0.3 0.6 0.3 0.6 0.7 0.4 2.4 2 0.4 0.3 0.7-0.4 0.3 0.5 0.1 0.7 0.2 0.5 0.2 0.5 0.4 1.5 0.4 0.6 0.4 0.5 0.6 0.4 0.7 0.2 0.7 0 0.4 0 0.2 0.4 0.4 2.1 0.5 1.2 0.5 0.9 0.6 0.8 1 1 0.7 0.5 0.5 0.2 0.5 0 0.6 0.2 0.6 0.3 0.4 0.3 0 0.2 0 0.8-0.7-0.4-1.4-1-1.6-0.5-1-1-0.6-0.2-0.6 0.4 0.6 0.5 1 0.5 0.6 0.2 0.2 0.5 0.7 0.6 1.2 0.8 0 0.3-0.5-0.1-0.7-0.3-0.5-0.1-0.3 0.2 0.1 0.5 0.4 0.4 0.2 0.2 0.5 0 0.3-0.1 0.7-0.3 0.1-0.1 0-0.2 0.1-0.1 0.3 0 0.3 0 3 0.9 0.6 0.1 0.6 0.3 0.6 0.6 0.6 0.3 0.5-0.4-1.2-0.7-1.9-0.7-1.5-0.8-0.1-1.3 1.9 1.5 2.3 0.9 2.6 0.4 3.7 0.1 2.6-0.2 1.9 0.1 0.5 0.1 0.5 0.2 1 0.9 2.5 1.7 0.4 0.4 0.1 0.6 0.3 0.4 0.6 0.3 3.8 0.6 0.5 0.2 1.3 0.2 0.6 0.3 0.5 0.9 0.9 2.3 0.6 1 1.9 1.8 0.7 0.9 1.3 2.9 0.2 0 0.9 0.7 0.4 0.1 0.8 0.1 1 0.4 0.8-0.1 0.8-0.1 0.7-0.1 0.9-0.4 4.3-0.6 2-0.6 0.1 0.3 0 0.3 0.1 0.4 0.1 0.2 0.3 0.2 0.3 0 0.2 0.1 0.1 0.4 0 0.4 0 0.4 0 0.4 0.2 0.3 0.3 0.2-0.1 0.2-0.2 0.1-0.1 0.2 0.1 0.2 0.1 0.1 0.2 0.2 0.1 0.3 0.1 0.3 0 0.3 0.1 0.3 0.2 0.3 0.2 0.4-0.2 0.4-0.3 0.4-0.1 0.5-0.1 0.6-0.1 0.7 0.1 0.7 0.4 0.4 0.2 0.1 0.3 0 0.2 0 0.2 0 0.1 0.2 0 0.1 0.1 0.2 0 0.1 0.4 0.2 0.4 0 0.4 0.1 0.4 0.1 0.5 0.7 0.1 0.8 0.3 0.8 1.1 0.3 0.6 0 0.5 0.1 0.2 0.2 0.1 0.6 0.1 0.2 0.3 0.1 0.3 0 0.3 0 0.8 0.2 0.8 0.4 0.7 0.5 0.5 0.7 0.3 0.5 0.6 0.7 0.6 0.7 0.4 0.3 0.8 0.4 0.3 0.5-0.2 0.6-0.1 0.7-0.1 0.3-0.1 0.3 0 0.3 0 0.3-0.1 0.3-0.1 0.4-0.1 0.3-0.1 0.2 0.2 0.6 0.4 0.4 0.5 0.2 0.5 0.2-0.1 0.3-0.2 0.3-0.1 0.3-0.1 0.3-0.3 0.6-0.6 0.5-0.6 0.4-0.5 0.4-1.1 0.7-1 0.7-1.1 0.7-1.1 0.7-0.3 0.3-0.3 0.2-0.4 0.2-0.4 0.2-4.4-0.3-4.5-0.3-4.5-0.2-4.5-0.3-0.8-0.1-0.9 0-0.9-0.1-0.8-0.1-1-0.1-1 0-0.9-0.1-1-0.1-1.5 0-2-0.1-1.8-0.2-1-0.6-0.1-0.5-0.2-0.5-0.1-0.5-0.2-0.4 0.1-0.2 0.1 0 0.1-0.1 0.1-0.1 0-0.2-0.1-0.3 0-0.2-0.1-0.2-0.4-0.5-0.7-0.5-0.8-0.3-0.7-0.2-0.3-0.5-0.4-0.4-0.4-0.4-0.5-0.4-0.9-1-0.9-1-0.8-1-0.9-1 0-0.4 0.1-0.3 0.1-0.4 0.1-0.3 0.3-0.2 0.3-0.1 0.3-0.1 0.2-0.2 0-0.2 0.1-0.3 0-0.4 0.1-0.2 0-0.4 0.1-0.4-0.1-0.4-0.3-0.2-0.1 0-0.3 0-0.3 0-0.2 0-0.2 0.2 0.2 0.3 0.1 0.2-0.2 0.1-0.3-0.1-0.3-0.1-0.3-0.1-0.3 0.1-0.3 0.7-0.3 0.5-0.6 0.2-0.8 0.1-0.1 0.2-0.1 0.1-0.1 0.1 0 0.2-0.6 0-0.7 0-0.6 0.2-0.6 0.3-0.2 0.3-0.2 0.4-0.3 0.3-0.4 0.1-0.3 0.1-0.5 0.3-0.5 0.3-0.4 0.2-0.1 0-0.1 0.2 0 0.1 0 0.2-0.1 0.2-0.2 0.1-0.3 0-0.3 0-0.3 0.4-0.4 0.1-0.3-0.1-0.5-0.2-0.6 0-0.5 0.2-0.5 0.3-0.7 0.1-0.1 0.1-0.1 0-0.1-0.1-0.1 0-0.5-0.2-0.5-0.1-0.4-0.2-0.4-0.5-0.6-1.2-0.6-1.2-0.6-1.2-0.6-1.2-0.5-0.9-0.3-0.9 0-0.8 0.3-0.9 0.1-0.2 0-0.1 0.1-0.1 0.1-0.2 1-1.1 0.9-1.1 0.8-1.2 0.5-1.5-0.5-0.9-0.3-1-0.4-1-0.6-0.8-0.2-0.2-0.2-0.1-0.2-0.1-0.2-0.1-0.2 0-0.3-0.1-0.2-0.1-0.3 0-0.3-0.1-0.4-0.1-0.3-0.2-0.3-0.2-0.3-0.1-0.2 0-0.3 0-0.3 0.1-0.1 0-0.1 0-0.1 0-0.3 0-0.5 0-0.4 0-0.3-0.2-0.6-0.1-0.4 0-0.2 0.2-0.4 0.5-0.1 0.2-0.4 0.1-0.4-0.1-0.4-0.1-0.3-0.1-0.3-0.4 0-0.2 0.1-0.3-0.1-0.2-0.3-0.1-0.3 0.1-0.4 0-0.1-0.1-0.2-0.1-0.1-0.1-0.3-0.2-0.2-0.8-0.2-0.9-0.2-0.8-0.3-0.5-0.3-0.4-0.4-0.4-0.4-0.3-0.2-0.1-0.3-0.1-0.2-0.2-0.2-0.2-0.8-0.9-0.5-1.2-0.5-1.4-0.2-1.2-0.3-0.8-0.5-0.5-0.6-0.3-0.9-0.2-1.3-0.2-1.1-0.4-0.9-0.6-1.1-0.9-0.2-0.2-0.2-0.2-0.3-0.2-0.2-0.2 0.2 0.9 0.3 1 0.3 1.1 0.1 1-0.3 0.9-0.6 0.9-0.7 0.8-0.7 0.7-0.1 0.1-0.1 0.1-0.1 0.2-0.1 0.1-0.3-0.5-0.5-0.5-0.5-0.5-0.4-0.6-0.1-0.7 0-0.9-0.3-0.6-0.7 0.1-0.1 0-0.1 0-0.8 0.2-0.7 0.1-0.7 0.2-0.7 0.2-0.4 0.1-0.4 0.1-0.4 0-0.4 0.2-0.3 0.2-0.4 0.4-0.4 0.3-0.4 0.1-0.4-0.2-0.5 0.1-0.4 0-0.4-0.1-0.3-0.4 0.1-0.6 0.3-0.5 0.2-0.5-0.2-0.5-0.3-0.3-0.4-0.5-0.1-0.6 0-0.2 0-0.3-0.1-0.2-0.1-0.2-0.1-0.1 0-0.1-0.3-0.1-0.3-0.1-0.3 0-0.3-0.1-0.3 0-0.3-0.2-0.3-0.2-0.4 0-0.4 0.2-0.5 0.2-0.4 0.1-0.6-0.2-0.2-0.1-0.2-0.3-0.2-0.2-0.2-0.3-0.3-0.8-0.3-1-0.1-0.9 0.3-0.8 0-0.1 0.1 0 0.2-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.2-0.3 0.1-0.4 0.2-0.3 0.3-0.2 0.6-0.2 0.5-0.1 0.2-0.2 0-0.7-0.1-0.3-0.1-0.4-0.2-0.3-0.1-0.4 0-0.1 0-0.1 0-0.1 0-0.2-0.1 0 0-0.1 0-0.1 0-0.1 0-0.1 0-0.1 0-0.2 0-0.1 0-0.4-0.1-0.3-0.1-0.4-0.1-0.3-0.2-0.7-0.2-1 0-0.9 0.2-0.8 0.3-0.1 0.3 0 0.4-0.1 0.3 0 0.4-0.2 0.4-0.2 0.3-0.2 0.4-0.2 0.5 0.1 0.6 0.3 0.6 0.1 0.3-0.3 0.1-0.3 0.1-0.2 0.2-0.1 0.3-0.1 0.1 0.1 0.1 0 0.1 0 0.1 0 0.2 0 0.2-0.1 0.2-0.2 0.2-0.2 0.1-0.1 0.1-0.2 0.1-0.1 0.2-0.2 0.1-0.2 0.1-0.1 0.2-0.2 0.2-0.1 0.1-0.2 0.2-0.1 0-0.2 0-0.2-0.3-0.2-0.4-0.3-0.4-0.1-0.4-0.2-0.4-0.1-0.3-0.1-0.4 0.1-0.4 0.2-0.1 0 0 0.1-0.6 0.1-0.8-0.2-0.8-0.4-0.7-0.1-0.1-0.1-0.2 0-0.1 0-0.1 0-0.5-0.3-0.4-0.6-0.4-0.7-0.5-0.5-0.3-0.1-0.3 0.2-0.4 0.1-0.3 0.1-0.2-0.2-0.2-0.2-0.1-0.3-0.2-0.2-0.4-0.1-0.5 0-0.4 0-0.4-0.2-0.2-0.5 0.2-0.2 0.5-0.1 0.4 0.1 0.6-0.1 0.5-0.3 0.3-0.5-0.3-0.6-0.2-0.1-0.1-0.2-0.2-0.1-0.2-0.1-0.1-0.2 0-0.3 0.1-0.3 0-0.2-0.4-0.3-0.4-0.2-0.3-0.3 0.1-0.5 0-0.1 0-0.1 0-0.1 0-0.6 0.2-0.8 0.3-0.5 0.5 0 0.9-0.9 0.5-1.7 0.1-1.8-0.1-1.3-0.1-0.2 0-0.3 0-0.2 0-0.3 0-0.2 0-0.2 0.1-0.2 0.1-0.2 0.1-0.1 0.1-0.1 0-0.1 0.1-0.1 0.3-0.6 0.4-0.6 0.4-0.5 0.5-0.4 0.2-0.3 0.2-0.3 0.2-0.2 0.3-0.3 0.3-0.4 0.4-0.4 0.4-0.4 0.4-0.4 0.5-1.3-0.5-0.7-1.1-0.4-1.1-0.4-0.3-0.1-0.2-0.1-0.3-0.1-0.2-0.2-0.6-0.2-0.5-0.3-0.5-0.4-0.4-0.3-0.8-0.6-0.6-0.3-0.6-0.1-0.8 0.3-0.1 0-0.1 0-0.1 0-0.2 0-0.6 0.4-0.3 0.5-0.3 0.7-0.4 0.5-0.2 0.4-0.3 0.3-0.3 0.4-0.3 0.3-0.2 0.1-0.2 0.2-0.2 0.1-0.2 0.1-0.1 0-0.1 0-0.1 0-0.2-0.1-0.1-0.2-0.1-0.1 0-0.3-0.1-0.8-0.2-0.6-0.5-0.1-0.8 0.3-0.1 0-0.1 0.1-0.1 0-0.5 0-0.3-0.3-0.2-0.5-0.2-0.5 0-0.1 0-0.1-0.1 0 0-0.1-0.1-0.1-0.1-0.1-0.1-0.2-0.2 0-0.4-0.3-0.6-0.2-0.4-0.4-0.2-0.5 0.2-0.4 0.2-0.3 0.1-0.4 0.1-0.3-0.1-0.2-0.1-0.2-0.1-0.2 0-0.3 0.1-0.5 0-0.5-0.2-0.5-0.2-0.5 0.3-0.3 0.4 0 0.4 0.1 0.4-0.1 0.4-0.4 0.3-0.3 0.3-0.1 0.5 0.4 0.3 0.5 0.3 0.4 0.4 0.2 0.5-0.1 0.4-0.4 0.4-0.6 0.3-0.6 0.3-0.5 0.2-0.1 0.1-0.1 0.1-0.1 0-0.2 0-0.7-0.3-0.9-0.5-0.8-0.6-0.3-0.4-0.1-0.4-0.1-0.4-0.1-0.3-0.1-0.3 0-0.4 0.1-0.3 0-0.3 0-0.5-0.2 0.1-0.3 0.3-0.4 0.3-0.4-0.3-0.5-0.4-0.5-0.3-0.5-0.2-0.6 0-0.7 0-0.6 0-0.7-0.4-0.5-0.7-0.6-0.5-0.1-0.5 0.1-0.8 0-0.3-0.2-0.3-0.1-0.4 0-0.3 0.1-0.3 0.5 0 0.5 0.1 0.5 0 0.4-0.3 0.3-0.3 0.1-0.4 0.2-0.2 0.3 0 0.4 0 0.5-0.2 0.3-0.3 0.2-0.4 0.1 0.1 0.3 0.2 0.3 0.2 0.2 0.1 0.3 0 0.3 0.1 0.4 0 0.3 0 0.7-0.1 0.6-0.1 0.6-0.2 0.6-0.2 0.5-0.3 0.4-0.3 0.3-0.4 0.2-0.3-0.3-0.3-0.4-0.1-0.5 0-0.5 0.1-0.4 0.3-0.4 0.2-0.4 0-0.5-0.2-0.2-0.1-0.1-0.1-0.2-0.2-0.2 0-0.3 0-0.3 0.1-0.3 0-0.4-0.3-0.3-0.5 0-0.4-0.1-0.2-0.4-0.1-0.1 0-0.1-0.1 0-0.1-0.1-0.9 0.3-1 1-1 1.3-0.6 1-0.5 0.5-0.5 0.5-0.5 0.6-0.4 0.6-0.3 0.4-0.4 0.4-0.4 0.4-0.4 0.5-0.5 0.6-0.3-0.1-0.4-0.5-0.5-0.4-0.3 0.3-0.2 0.5-0.2 0.5-0.1 0.5-0.8 1.1-1 0.5-0.9-0.2-0.6-1.3-0.4-0.7-0.5-0.7-0.4-0.7-0.1-0.7 0.2-0.3 0.3-0.2 0.3-0.3 0.2-0.3 0.2-0.5 0.1-0.6 0.1-0.6 0-0.5 0.4-0.7 0.7-0.5 0.7-0.5 0.6-0.6 0.3-0.4 0.3-0.6 0.1-0.5-0.1-0.5-0.3-0.2-0.3 0.2-0.4 0.3-0.4 0.1-0.5-0.1-0.3-0.3 0-0.4 0.3-0.5 0.4-0.1 0.3 0 0.4-0.1 0.4-0.1 0.3-0.2 0.2-0.2 0-0.3 0-0.3 0-0.4-0.2-0.3-0.2-0.2-0.1-0.4 0.2-0.4 0.4-0.2 0.5 0 0.4 0 0.4 0.1 0.4 0.1 0.3 0.1 0.4 0.2 0.6 0.4 0.6 0.4 0.7 0.2 0.7 0 0.2-0.1 0.1-0.1 0-0.1-0.1-0.2-0.2-0.8-0.1-1.1 0.2-1 0.4-0.7 0.2-0.2 0.2-0.3 0.2-0.2 0.2-0.3 0.2-0.3 0.2-0.2 0.1-0.2 0.2-0.2 0.1 0 0.1 0.1 0.1 0 0.2-0.1 0.1-0.3 0.2-0.4 0.2-0.5 0-0.3-0.1-0.3-0.3-0.1-0.2-0.1-0.2-0.2-0.2-0.3-0.2-0.3-0.2-0.1-0.3-0.1-0.6-0.9-0.5 0.3-0.6 0.5-0.8 0-0.3-0.6 0.3-0.8 0.3-0.8 0-0.8-0.2-0.5-0.3-0.3-0.4 0.1 0.1 0.5 0 0.6-0.5 0.6-0.7 0.6-0.6 0.4-0.4 0-0.4-0.1-0.4-0.3-0.3-0.2-0.5-0.6-0.4-0.7-0.5-0.5-0.6-0.2-0.2-0.1-0.1-0.2-0.1-0.2 0-0.2 0.1-0.9 0.4-0.6 0.5-0.6 0.5-0.7-0.5-0.3-0.5-0.4-0.5-0.3-0.4-0.3-0.1 0-0.1 0 0-0.1 0-0.5 0-0.6-0.1-0.6 0-0.6-0.1-0.9-0.2-0.7-0.6-0.4-0.8-0.4-0.7-0.3-0.5-0.3-0.4-0.5-0.3-0.6 0.2-0.3 0.3-0.3 0-0.5-0.1-0.5 0.2-0.8 0.4-0.4 1.1 0.2 0.4-0.4-0.2-0.3-0.1-0.2 0.2-0.2 0.3-0.2 0.2 0 0.3 0.2 0.2 0 0.1 0 0.1-0.2 0-0.1 0.1-0.1 0.7-0.4 0.4-0.3 0.3-0.4 0.1-0.2 0.2-0.5-0.1-0.4-0.5-0.1-0.2-0.2-0.1-0.3 0-0.4-0.1-0.3-1.2 0.1-0.4-0.3-0.4-0.7-0.2-0.7 0.7-0.2-0.2-0.6 0.3-0.4 0.4-0.3-0.1-0.2-0.5 0.1-0.7 0.2-0.5-0.1-0.1-0.8 0.1 0 0.3 0.1 1.1 0.1 0.2 0 0.3-0.2 0.4 0 0.3 0 0.3 0.2 0.3-0.1 0.3-0.3 0.2 0.2 0.2 0 0.2-0.5 0.1-0.5 0.2-0.5 0.2-0.4 0.7-1.1 0.6-1.2 0.6-1.2 0.4-1.2 0-0.9-0.3-0.7-0.5-0.7-0.6-0.5-0.9-0.5-0.8-0.5-0.8-0.5-0.9-0.6-0.5-0.4-0.6-0.4-0.5-0.5-0.6-0.3-0.2-0.2-0.2-0.1-0.1-0.1-0.2-0.1z m27.7 19.5l1 0.7 0.4 0.4-0.2 0.4-0.9-0.2-0.7-1-0.4-1.4-0.2-1.2 0.4 0.4 0.2 0.6 0.1 0.7 0.3 0.6z\",\n\tMXYUC:\n\t\t\"M930.5 391.1l0 0.4 0.4 5.8-0.1 1-1.2 1.7-0.4 1.9 0 1.2 1.3 2.9 0.1 1.9-1.8 3.5-0.1 1-0.2 1-0.6 1-0.4 1.1-0.9 1.8-1.8 1.1-1.5 1.2-0.9 0.6-2.4 2.1-2.4 1.3-0.8 0.3-1.7-0.1-0.9 0.3-0.8-0.4-0.8-0.6-0.9 0.2-0.7 0.6-0.5 0.9-0.6 0.9-0.5 1 0.4 1.3 0 1.1-0.7 0-0.3-0.9-0.6-0.7-0.9-0.1-0.8 0.6-0.7 2-1.3 1.5-1.7 0.5-1.6 1-1.6 0.3-0.9 0.4-0.9 0.6-0.9 0.4-1.7 1.1-0.6 0.8 0.2 0.6-0.3 0.5-0.6-0.6-0.8-0.4-1.7 1.7-0.3 0.3-0.5 0.3-0.5 0.1-3.2 0.1-0.9 0.6-1.8 0.6-0.7 0.8-0.8 0.8-3.1 0.4-0.9-0.1-0.8 0.4 0.1 1-0.1 0.9-0.3 1-0.4 1.1-0.6 1.1-0.8-1.7-0.3-2.1-1.4-1.9-1.6-1.6-2-3.9-1.8-1.3-1.9-0.8-1.5-1.5-0.7-2.2-1-1.9-1.7-1.2-0.5-0.4-0.5-1.2 0-0.8-0.5-0.8-1.1-1.6-0.8 0.5-0.5 1.1-0.9 0.2-0.5-0.5-0.5-0.5-0.6 0.2-0.5 0.3-0.8-0.7-0.4-1.1-0.8-0.8-1.1-0.2-1.4 0-1.4-0.1-0.5-0.9 0.3-7.6 0-0.9 0-0.1 0.4-1.6 0.7-1.8 0.1-1-0.2 0-0.4 1.6-0.5 1.2-0.1 0.2-0.1 0.8-0.4 0.8-0.6 0.7-0.7 0.3 0-0.2 0.6-0.7 1.8-5.6 0.3-0.5 0.5-0.5 3.2-2 0.6-0.5 1.9-0.7 1-0.8 0.6-0.3 0.3-0.1 0.9-0.1 1.5-0.6 1.8-1.3 0.5-0.2 0.5-0.1 2.9-1 3.1-0.6 2.3 0 4-0.7 5.4-0.5 2.4-0.7 1.1-0.2 0.7 0.2 0.3 0 0.3 0 0.6-0.3 0.2-0.1 2.5-0.4 1.8-0.6 1.3-0.1 0.6-0.2 1-0.4 3.5-0.8 1-0.7 1.8-1.6 0.5-0.3 1.8-0.2 0.6-0.2 1-0.5 0.6-0.1 2.2 0 0.5 0.1 1 0.4 0.5 0.1 0.5 0 1-0.3 1.5-0.2 0.6-0.2 0.3-0.2 0.5-0.2 1.8 0.1-0.6-0.3-0.6-0.1-0.7 0-1 0.5-1.2 0.3-0.2 0 0.1-0.2 0.6-0.4 0.6-0.2 0.8-0.1 0.7-0.3 0.2-0.1 0.4 0.1 1.3 0.3 2.5 0 0.6 0.1 1.8 0.8 1.2 0.3 2.6 0.4 1.7 0.5 0.1 0.1-0.3 0.2-0.3 0.1-0.3 0-0.4 0-0.2-0.2-0.5-0.2-2-0.4-0.6-0.2 0.7 0.6 0.9 0.5 0.9 0.3 0.9 0.1 2 0 0.9 0.2 0.5 0 0.5-0.2-1.2-0.1-0.6-0.1-0.5-0.3 0.2-0.2 1.9 0.3 1.6 0.6 0.7 0z\",\n\tMXZAC:\n\t\t\"M496.2 279.2l0.5-0.8 0.4-0.4 0.6-0.1 0.9-0.1 2.2-0.2 2.1-0.3 2.1-0.2 2.1-0.2 0.8-0.1 0.9-0.2 0.8-0.1 0.8 0.1 1.2 0.3 1.2 0.4 1.2 0.4 1.2 0.3 1 0.4 1.1 0.3 1 0.3 1 0.3 0.6 0.6 0.5 1 0.5 1.1 0.4 0.8 0.7 0.9 1 0.6 1.2 0.3 1.1 0 0.4 0 0.5 0.2 0.5 0.4 0.4 0.3 0.2 0.4 0.2 0.7 0 0.7 0.1 0.5-0.6-0.1-0.6-0.1-0.6-0.2-0.5-0.2 0.1 0.6 0.3 0.7 0.3 0.6 0.3 0.3 0.8 0.1 0.8 0 0.8 0.1 0.9 0 0.6 0 0.6 0.1 0.6-0.1 0.5-0.3 0.5-0.6 0.6-0.7 0.6-0.6 0.6-0.5 0 0.2 0 0.2 0 0.2 0.1 0.2 1.1-0.2 1.1-0.2 0.9 0.2 1 0.7 0.4 0.4 0.4 0.5 0.3 0.5 0.3 0.5 0.2 0.5 0.2 0.6 0.1 0.5 0.3 0.5 0.7 0.9 1.1 0.7 1.2 0.5 1 0.1 0.6-0.2 0.5-0.1 0.5-0.1 0.6 0.2 0.5 0.3 0.6 0.3 0.5 0.3 0.6 0.4-0.4 1.3-0.3 1-0.5 0.8-1.1 0.6-1 0.6-0.8 0.8-0.7 1-0.6 1-1.4 2.5-1.5 2.4-1.4 2.5-1.3 2.5-0.5 0.7-0.5 0.3-0.6 0.2-0.8 0.2-0.6 0.3-0.6 0.6-0.5 0.7-0.5 0.6-1.1 1.3-1.2 1.1-1.2 1-1.4 1-1.1 0.6-1.3 0.6-1.1 0.8-0.9 0.9-0.2 0.5-0.2 0.5-0.2 0.5-0.3 0.4-0.5 0.2-0.4 0-0.5 0.1-0.5 0.1-1 0.7-0.9 0.9-0.9 1-0.7 1.1-0.7 1-0.8 0.9-0.9 0.8-1 0.8-0.5 0.3-0.6 0.3-0.6 0.3-0.6 0-0.5-0.2 0-0.4 0.1-0.5 0-0.5-0.3-0.3-0.5-0.1-0.5 0.1-0.5 0.1-0.2 0.3-0.2 0.6-0.2 0.7-0.1 0.4-0.1 0.6-0.2 0.7-0.2 0.6-0.3 0.4-0.5 0-0.5-0.1-0.3 0-0.3 0.6-0.1 0.6 0.3 0.3 0.4 0.2 0.4 0.3 0.3 0.5 0.2 0.6 0.1 0.7 0.1 0.6 0.3 0.8 0.1 0.7-0.2 0.7-0.4 0.8-0.3 0.8 0.1 0.7 0.4 0.7 0.3 0.8 0.4 0.7 0.3 0.7 0.3 0.7 0.3 0.8 0.8 1.4 1.1 1.3 1.2 1.1 1.2 1.1 0.3 0.2 0.3 0.2 0.3 0.1 0.3 0.1 1.1 0.6 0.9 1.1 0.8 1.4 0.6 1.1 0.1 0.1 0 0.1 0.1 0 0.5 0.7 0.5 0.6 0.5 0.5 0.7 0.4 0.8 0.1 0.6-0.3 0.7-0.5 0.7-0.4 0.2 0 0.2-0.1 0.2 0 0.2 0 1-0.2 0.5-0.8 0.4-1 0.4-0.9 0.8-0.6 1.3-0.1 1.2 0 1 0 0.7 0 0.6 0 0.6 0.1 0.5 0.5 0.4 0.8 0.3 0.8 0.4 0.9 0.3 0.8 0.1 0.7-0.3 0.4-0.5 0.3-0.6 0.3-0.4 0.4-0.4 0.4-0.1 0.6 0 0.7 0.2 1 0.4 1.1 0.3 1 0.3 1.1 0.1 0.9 0.1 1 0.1 1 0.1 0.9-0.1 0.4-0.2 0.5-0.4 0.4-0.2 0.4-1.2 1.6-1.2 1.6-1.2 1.6-1.2 1.6-0.1-0.7-0.1-0.4-0.3-0.2-0.6 0.1-0.5-0.1-0.5-0.4-0.4-0.6-0.4-0.5-0.4-0.3-0.4-0.2-0.4-0.3-0.4-0.2-0.5 0-0.4 0.1-0.4 0-0.4 0.1-0.8-0.2-0.6-0.4-0.6-0.6-0.7-0.5-0.1 0-0.1-0.1-0.1 0-0.1-0.1-0.4-0.5-0.4-0.6-0.4-0.5-0.5-0.5-0.7-0.4-0.8-0.3-0.7-0.5-0.3-0.7 0-1 0.1-1.1 0-1.1-0.3-0.8-0.5-0.2-0.6 0-0.6-0.1-0.6-0.2-0.4-0.4-0.3-0.3-0.3-0.3-0.5 0.1-0.4-0.4-0.1-0.4-0.2-0.5-0.3-0.3-0.2 0-0.2 0.1-0.2 0.1-0.1 0.2-0.6 0.2-0.5-0.5-0.4-0.7-0.3-0.6-0.3-0.7-0.3-0.7-0.5-0.3-0.5 0.6-0.3 0.6-0.3 0.6-0.5 0.4-0.5-0.1-0.4 0.2-0.2 0.3-0.2 0.3-0.4 0.3-0.2 0.1-0.3-0.1-0.3 0-0.3 0-0.1 0-0.1 0-0.1 0.1-0.3 0.3-0.1 0.4-0.1 0.4-0.2 0.3-0.4 0.2-0.5 0.1-0.6 0-0.4-0.1-1.1 0-1.1 0.1-0.9 0.4-0.7 1 0.1 0.5 0.4 0.4 0.4 0.6-0.2 0.8-0.4 0.7-0.5 0.7-0.6 0.7-0.6 0.6-0.5 0.6-0.5 0.8-0.4 0.8-0.4 0.7-0.4 0.6-0.4 0.5-0.4 0.6-0.3 0.5-0.2 0.7-0.2 0.6 0 0.6 0 0.7 0.2 1.2 0.7 0.7 0.8 0.6 1 0.6-0.1 0.4 0 0.3-0.1 0.4-0.1 0.4-0.1 0.6-0.2 0.9-0.1 0.8 0.3 0.6 0.5 0.2 0.5 0.2 0.4 0.2 0.4 0.3 0.6 0.1 0.5 0 0.5 0 0.5 0.2 0.1 1.1-0.3 1.4-0.6 1.4-0.4 1.1-0.1 0.1 0 0.1-0.1 0.1-0.1 0-0.2 0.3-0.3 0.1-0.4 0.1-0.3 0.1-0.2 0.2-0.1 0.2-0.2 0.2-0.2 0.2-0.3 0.4-0.1 0.5-0.1 0.5-0.3 0.3-0.7 0.1 0-0.3 0.1-0.5 0.1-0.3-0.3-0.4-0.5 0.1-0.5 0.4-0.4 0.3-0.7 0.6-0.8 0.4-0.9 0.2-0.9 0-0.6-0.2-0.7-0.3-0.6 0.1-0.4 0.7 0.1 0.5 0 0.5 0 0.6 0 0.5 0.1 1 0.1 1.4 0 1.4-0.4 0.9-0.6 0.1-0.8-0.4-0.8-0.6-0.7 0-0.9 0.2-1.1-0.3-1.1-0.6-0.9-0.6-0.2-0.1-0.2-0.1-0.2-0.1-0.2-0.1-0.5-0.3-0.5-0.3-0.5-0.2-0.6-0.2-0.4 0-0.5 0.1-0.4 0-0.5-0.1-0.4-0.3-0.4-0.4-0.4-0.3-0.6-0.1-0.6 0.1-0.6 0.1-0.6 0-0.6-0.2-0.4-0.3-0.1-0.4-0.1-0.5-0.1-0.5-0.5-0.3-0.6 0.1-0.6 0.4-0.5 0.3-0.7 0.3-0.3 0-0.1-0.4 0.1-0.7 0-0.7 0-0.3 0.2-0.3 0.5-0.3 0.2-0.4 0.2-0.6 0.1-0.6 0-0.5-0.1-1.1-0.2-1.1-0.2-1.1-0.3-1.1 0.6 0.4 0.6 0.4 0.7 0.4 0.7 0 0.5-0.3 0.4-0.6 0.3-0.7 0.3-0.6 0.6-0.5 0.8-0.4 0.6-0.4 0.1-0.8 0-0.9 0-1.3-0.1-1.2-0.4-0.8-0.2-0.8 0.4-0.9 0.8-0.8 0.6-0.6 0.6-0.5 0.5-0.5 0.6-0.5 0.5-0.5 0.4-0.2 0.3-0.1 0.4 0 0.3 0 0.4-0.1 0.3-0.1 0.3-0.2 0.3-0.3 0.5-0.8 0.8-0.1 0.8 0.3 0.9 0.1 0.5-0.1 0.5-0.2 0.4-0.4 0.2-0.5 0.3-0.8 0.2-0.5 0.4-0.3 0.8-0.3 0.1-0.3 0.1-0.4 0-0.4-0.1-0.4-0.5-0.3-0.5 0-0.3-0.2 0-0.7 0.1-0.3 0.3-0.1 0.4-0.1 0.3-0.1 0.4-0.3 0.3-0.5 0.2-0.5 0.2-0.4 0.2-0.4 0.2-0.6 0.1-0.5-0.2-0.5-0.3-0.1-0.4 0-0.3 0.2-0.4 0-0.1-0.4-0.1-0.3-0.1-0.3-0.4-0.2-0.4 0-0.6 0.1-0.6 0.2-0.5 0.2 0.1-0.4 0.1-0.6 0-0.5-0.1-0.3-0.4-0.3-0.5-0.3-0.4-0.3-0.4-0.3-0.9-0.7-1-0.8-0.9-0.8-0.9-0.8 0 0.1-0.1 0.2-0.1 0.1 0 0.1-0.4 0.5-0.2 0.6-0.3 0.5-0.3 0.6-0.1 0.4 0 0.2 0.2 0.2 0.4 0.1 0.2 0.2 0.1 0.3 0.1 0.3 0.3 0.1 0.3 0 0.3 0.2 0.1 0.2-0.1 0.3-0.2 0.2-0.2 0.1-0.3 0.2-0.2 0.2-0.3 0.7 0 0.8-0.1 0.6-0.6 0.3-0.6 0.3-0.4 0.8-0.3 0.9-0.3 0.7-0.2 0.9-0.3 0.3-0.1-0.3-0.2-0.2-0.3-0.2-0.4 0.1-1-0.2-0.3 0.1-0.4 0.5-0.3 0.2-0.4 0.2-0.7 0.2-0.5-0.2-0.5-0.6 0-0.8 0.1-0.6 0.3-1.2 0-0.6-0.1-0.6-0.1-0.6-0.2-0.5-0.2-0.5 0-0.3 0.1-0.4 0.2-0.5 0.2-1 0.5-1.6 0.5-1.4 0.7-0.5 0-0.3 0-0.3 0-0.3-0.1-0.3-0.2-0.1-0.3 0-0.3-0.1-0.2-0.1 0-0.3 0.1-0.4 0.1-0.4-0.2-0.3-0.3-0.1-0.6 0-0.6 0-0.4 0-0.2-0.2-0.1-0.2-0.2-0.1-0.3 0.3-0.6 1.2-0.4 1.5-0.3 1.6-0.2 1.4-0.4 1.7-0.4 1.7-0.4 1.7-0.4 1.6 0 0.2-0.1 0.1 0 0.2 0 0.1-0.3-0.3-0.3-0.6-0.2-0.7-0.1-0.6-0.1-0.5-0.1-0.6-0.1-0.6 0-0.6 0.1-0.6 0.2-0.5 0.3-0.4 0.2-0.6 0-0.5-0.2-0.5-0.2-0.4-0.2-0.5 0-0.4 0.3-0.3 0.4-0.2 0.2-0.3 0.2-0.4 0-0.5 0-0.5-0.1-0.4 0-0.6 0.3-0.3 0.4-0.3 0.5-0.3 0.4-0.8 0.3-1.2 0.1-1.2 0.1-1-1.5-0.3-1.4-0.3-1.5-0.3-1.5-0.3 0 1.1-0.1 1.1 0 1.1-0.1 1.2 0 0.9 0 0.7 0.2 0.6 0.6 0.6 0.7 0.5 0.3 0.4 0.1 0.6-0.2 0.8-0.1 0.7-0.1 0.6-0.2 0.7-0.1 0.6-0.1 0.3-0.2 0.2-0.2 0-0.4 0.1-1.4 0.3-1.5 0.1-1.4 0.1-1.4 0.5-1.1 0.5-1.1 0.4-1.1 0.5-1 0.6 0.1-0.5 0.2-0.4 0.1-0.4 0.1-0.4 0.4-1.6 0.5-1.6 0.4-1.6 0.5-1.6 0.4-1.2 0.4-1.2 0.3-1.3 0.2-1.3 0.1-3.3 0.1-3.4 0.1-3.4 0.1-3.4 0.1-0.7 0.2-0.5 0.4-0.2 0.6-0.3 0.3-0.4 0.1-0.8 0.1-0.8 0-0.6 0.1-1.2 0.1-1.2 0.1-1.2 0.1-1.2 0.1-0.8 0.2-0.5 0.3-0.3 0.6-0.4 0.9-0.6 0.8-0.6 0.9-0.6 0.8-0.6 0.3-0.5 0.2-0.6 0-0.6 0.1-0.6 0.4-0.9 0.6-0.4 0.6 0.2 0.7 0.7 0.5 0.2 0.4-0.5 0.3-0.8 0.1-0.6-0.4-0.8-0.7-0.5-0.7-0.5-0.3-0.8 0.2-0.4 0.3-0.4 0.2-0.4 0.2-0.5-0.1-0.7-0.3-0.6-0.5-0.5-0.5-0.5-0.2-0.8 0.9-0.2 0.9-0.4 0.1-1-0.2-0.8 0.1-0.8 0.1-0.7-0.3-0.6 0.3-0.5 1.1-0.6 1.2-0.5 0.7-0.4 0.2 0 0.2-0.1 0.3-0.1 0.2-0.1 0.9-0.6 0.6-0.7 0.5-0.8 0.6-1 0.2-0.4 0.2-0.4 0.2-0.4 0.4-0.3 0.4-0.1 0.6 0 0.4-0.2 0.2-0.4-0.1-0.5 0.2-0.4 0.4-0.3 0.4-0.1 0.5 0 0.6 0.1 0.6-0.1 0.5-0.3 0.2-0.4 0.1-0.5 0-0.6 0.1-0.5 0.8-0.8 1.2-0.6 1.3-0.4 1.1-0.3 2.5 0.6 2.6 0.5 2.5 0.5 2.6 0.6 1.3 0.2 1.3 0.2 1.2 0 1.3-0.2 1.3-0.4 1.3-0.4 1.3-0.2 1.3-0.2 0.8 0 0.3-0.2 0.1-0.4 0-0.9 0-0.5 0-0.5 0-0.6 0-0.5 0-2-0.1-2 0-2.1 0-2-0.3-1.2-0.7-1.1-1-1.1-0.8-1-0.6-0.9-0.6-0.9-0.5-0.9-0.5-1z\",\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\nimport { MEXICO_STATES, type MexicoStateId } from \"../data/mexicoStates\";\nimport { MEXICO_STATE_PATHS } from \"../data/mexicoStatePaths\";\n\nexport interface MexicoMapProps {\n\tselected: MexicoStateId[];\n\t/** Omit to render a read-only display (no interaction, no keyboard handlers). */\n\tonToggle?: (id: MexicoStateId) => void;\n\tclassName?: string;\n}\n\nexport function MexicoMap({ selected, onToggle, className }: MexicoMapProps) {\n\tconst isInteractive = typeof onToggle === \"function\";\n\tconst selectedSet = React.useMemo(() => new Set(selected), [selected]);\n\n\tconst handleKeyDown = React.useCallback(\n\t\t(event: React.KeyboardEvent<SVGPathElement>, id: MexicoStateId) => {\n\t\t\tif (!onToggle) return;\n\t\t\tif (event.key === \"Enter\" || event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonToggle(id);\n\t\t\t}\n\t\t},\n\t\t[onToggle],\n\t);\n\n\treturn (\n\t\t<svg\n\t\t\tviewBox=\"0 0 1000 630\"\n\t\t\tclassName={cn(\"h-auto w-full\", className)}\n\t\t\t{...(!isInteractive\n\t\t\t\t? { role: \"img\", \"aria-label\": \"Mapa de México\" }\n\t\t\t\t: {})}\n\t\t>\n\t\t\t{MEXICO_STATES.map(({ id, name }) => {\n\t\t\t\tconst isSelected = selectedSet.has(id);\n\n\t\t\t\treturn (\n\t\t\t\t\t<path\n\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\td={MEXICO_STATE_PATHS[id]}\n\t\t\t\t\t\taria-label={name}\n\t\t\t\t\t\t{...(isInteractive\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\trole: \"button\" as const,\n\t\t\t\t\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\t\t\t\t\"aria-pressed\": isSelected,\n\t\t\t\t\t\t\t\t\tonClick: () => onToggle?.(id),\n\t\t\t\t\t\t\t\t\tonKeyDown: (event: React.KeyboardEvent<SVGPathElement>) =>\n\t\t\t\t\t\t\t\t\t\thandleKeyDown(event, id),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {})}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"stroke-border stroke-[0.5] transition-colors\",\n\t\t\t\t\t\t\tisSelected ? \"fill-primary\" : \"fill-muted\",\n\t\t\t\t\t\t\tisInteractive\n\t\t\t\t\t\t\t\t? \"cursor-pointer outline-none hover:fill-accent focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-ring\"\n\t\t\t\t\t\t\t\t: \"cursor-default\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<title>{name}</title>\n\t\t\t\t\t</path>\n\t\t\t\t);\n\t\t\t})}\n\t\t</svg>\n\t);\n}\n","\"use client\";\n\nimport { BadgeCheck, Clock } from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport type ProfessionalVerificationStatus =\n\t| \"unverified\"\n\t| \"pending_review\"\n\t| \"verified\";\n\nexport interface VerifiedProfessionalBadgeProps {\n\tstatus: ProfessionalVerificationStatus;\n\tsize?: \"sm\" | \"md\";\n\t/** Icon-only with title/aria-label when false (default). */\n\tshowLabel?: boolean;\n\tclassName?: string;\n}\n\nconst LABELS: Record<\n\tExclude<ProfessionalVerificationStatus, \"unverified\">,\n\tstring\n> = {\n\tverified: \"Médico verificado\",\n\tpending_review: \"Verificación en revisión\",\n};\n\nconst sizeClasses = {\n\tsm: {\n\t\ticon: \"size-3.5\",\n\t\ttext: \"text-xs\",\n\t\tgap: \"gap-1\",\n\t\tpadding: \"px-1.5 py-0.5\",\n\t},\n\tmd: {\n\t\ticon: \"size-4\",\n\t\ttext: \"text-sm\",\n\t\tgap: \"gap-1.5\",\n\t\tpadding: \"px-2 py-0.5\",\n\t},\n};\n\nexport function VerifiedProfessionalBadge({\n\tstatus,\n\tsize = \"md\",\n\tshowLabel = false,\n\tclassName,\n}: VerifiedProfessionalBadgeProps) {\n\tif (status === \"unverified\") {\n\t\treturn null;\n\t}\n\n\tconst label = LABELS[status];\n\tconst sizes = sizeClasses[size];\n\tconst Icon = status === \"verified\" ? BadgeCheck : Clock;\n\tconst colorClass =\n\t\tstatus === \"verified\" ? \"text-primary\" : \"text-muted-foreground\";\n\n\tif (!showLabel) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName={cn(sizes.icon, colorClass, className)}\n\t\t\t\taria-label={label}\n\t\t\t>\n\t\t\t\t<title>{label}</title>\n\t\t\t</Icon>\n\t\t);\n\t}\n\n\treturn (\n\t\t<span\n\t\t\ttitle={label}\n\t\t\taria-label={label}\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex w-fit items-center rounded-full font-medium\",\n\t\t\t\tsizes.gap,\n\t\t\t\tsizes.text,\n\t\t\t\tsizes.padding,\n\t\t\t\tstatus === \"verified\"\n\t\t\t\t\t? \"bg-primary/10 text-primary\"\n\t\t\t\t\t: \"bg-muted text-muted-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Icon className={sizes.icon} aria-hidden=\"true\" />\n\t\t\t<span>{label}</span>\n\t\t</span>\n\t);\n}\n"]}