seeder-st2110-components 1.6.3 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/componnets/UsageItem.jsx","../src/hooks/useHardwareWebSocket.js","../src/hooks/useHardwareUsage.js","../src/componnets/AuthorizationModal.jsx","../src/hooks/useAuth.js","../src/hooks/useUpgrade.js","../src/hooks/useSystemOperations.js","../../../node_modules/react-hook-form/dist/index.esm.mjs","../src/services/index.js","../src/hooks/useLsmLabel.js","../src/componnets/NetworkSettingsModal.jsx","../src/componnets/PtpModal.jsx","../src/componnets/PresetModal.component.jsx","../src/componnets/PresetModal.jsx","../src/componnets/UpgradeManager.jsx","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/componnets/SystemOperations.jsx","../src/hooks/useSpaLogo.js","../src/componnets/CommonHeader.jsx","../src/componnets/draggable-number-input.js"],"sourcesContent":["import { memo } from \"react\";\r\nimport { Tooltip } from \"antd\";\r\n\r\n// 格式化字节大小为更易读的形式\r\nconst formatBytes = (bytes, decimals = 1) => {\r\n if (bytes === 0 || !bytes || bytes < 0) return '0 Bytes';\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n};\r\n\r\nconst UsageItem = memo(({ title, iconClass, children, memTotal }) => {\r\n return (\r\n <Tooltip \r\n title={\r\n <>\r\n <div>{title}</div>\r\n {title === 'Memory Usage' && memTotal !== undefined && (\r\n <div>Total Memory: {formatBytes(memTotal)}</div>\r\n )}\r\n </>\r\n } \r\n destroyOnHidden={false}\r\n >\r\n <div className=\"usage-item\">\r\n <i className={`seeder-iconfont ${iconClass} text-xl`} />\r\n <span className=\"usage-value\">{children}</span>\r\n </div>\r\n </Tooltip>\r\n );\r\n});\r\n\r\nexport default UsageItem;","import { useEffect, useState, useCallback } from 'react';\r\nimport { useWebSocket } from 'ahooks';\r\n\r\nconst useHardwareWebSocket = (socketUrl) => {\r\n const [systemStatus, setSystemStatus] = useState();\r\n\r\n const handleMessage = useCallback((message) => {\r\n try {\r\n if (message) {\r\n setSystemStatus(prev => ({\r\n ...prev,\r\n ...message,\r\n // lastUpdated: Date.now() // 添加更新时间戳\r\n }));\r\n }\r\n } catch (error) {\r\n console.error('Message processing error:', error);\r\n }\r\n }, []);\r\n\r\n // ## 获取系统资源使用情况\r\n const { latestMessage } = useWebSocket(socketUrl, {\r\n onMessage: (event) => {\r\n // 处理实时消息\r\n try {\r\n const parsedMessage = JSON.parse(event.data);\r\n handleMessage(parsedMessage);\r\n } catch (error) {\r\n console.error('Message parsing error:', error);\r\n console.debug('Raw message:', event.data);\r\n }\r\n }\r\n });\r\n\r\n // // 监听消息 latestMessage 只用于非实时需求\r\n // useEffect(() => {\r\n // if (!latestMessage?.data) return;\r\n\r\n // try {\r\n // const parsedMessage = JSON.parse(latestMessage.data);\r\n // handleMessage(parsedMessage);\r\n // } catch (error) {\r\n // console.error('Message parsing error:', error);\r\n // console.debug('Raw message:', latestMessage.data);\r\n // }\r\n // }, [latestMessage?.data, handleMessage]);\r\n\r\n return { ps_status: systemStatus }\r\n}\r\n\r\nexport default useHardwareWebSocket ;","import { useMemo } from \"react\";\r\nimport UsageItem from \"../componnets/UsageItem.jsx\";\r\nimport useHardwareWebSocket from './useHardwareWebSocket.js';\r\n\r\n// 获取网卡最高温度(支持动态字段检查)\r\nconst getMaxNicTemp = (sensors, priorityFields = [\"i350bb\", \"r8169_0_8300:00\"]) => {\r\n const temps = priorityFields\r\n .flatMap(field => sensors?.[field]?.map(item => item.current) || [])\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\n// 获取数组类型传感器最高温度(如内存、硬盘)\r\nconst getMaxSensorTemp = (sensorData) => {\r\n const temps = (sensorData || [])\r\n .map(item => item.current)\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\nconst getDetail = (status = {}) => {\r\n const { cpu_percent, mem, sensors_temperatures, gpu_stats } = status;\r\n\r\n return {\r\n cpu_usage: cpu_percent ?? null,\r\n cpu_temp: sensors_temperatures?.coretemp?.[0]?.current ?? null,\r\n mem_total: mem?.total ?? null,\r\n mem_usage: mem?.percent ?? null,\r\n mem_temp: getMaxSensorTemp(sensors_temperatures?.spd5118),\r\n nic_temp: getMaxNicTemp(sensors_temperatures) ?? null,\r\n hd_temp: getMaxSensorTemp(sensors_temperatures?.nvme),\r\n gpu_usage: gpu_stats?.[0]?.[\"utilization.gpu\"] ?? null,\r\n gpu_temp: gpu_stats?.[0]?.[\"temperature.gpu\"] ?? null,\r\n };\r\n};\r\n\r\n// 提取公共逻辑\r\nconst createMetricItem = (\r\n title,\r\n iconClass,\r\n value,\r\n unit\r\n) => {\r\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\r\n\r\n return {\r\n title,\r\n iconClass,\r\n valueString: `${numValue}${unit}`,\r\n value: numValue,\r\n };\r\n};\r\n\r\nconst getItems = (details) => {\r\n const items = [];\r\n\r\n if (details.cpu_usage !== null && details.cpu_usage !== undefined) {\r\n items.push(createMetricItem('CPU Usage', 'seeder-icon-CPU', details.cpu_usage, '%'));\r\n }\r\n\r\n if (details.cpu_temp !== null && details.cpu_temp !== undefined) {\r\n items.push(createMetricItem('CPU Temperature', 'seeder-icon-CPUwendu', details.cpu_temp, '℃'));\r\n }\r\n\r\n if (details.mem_usage !== null && details.mem_usage !== undefined) {\r\n items.push({\r\n ...createMetricItem('Memory Usage', 'seeder-icon-shiyongshuai', details.mem_usage, '%'),\r\n memTotal: details.mem_total,\r\n });\r\n }\r\n\r\n if (details.mem_temp !== null && details.mem_temp !== undefined) {\r\n items.push(createMetricItem('Memory Temperature', 'seeder-icon-wendu', details.mem_temp, '℃'));\r\n }\r\n\r\n if (details.nic_temp !== null && details.nic_temp !== undefined) {\r\n items.push(createMetricItem('NIC Temperature', 'seeder-icon-wuliwangka', details.nic_temp, '℃'));\r\n }\r\n\r\n if (details.hd_temp !== null && details.hd_temp !== undefined) {\r\n items.push(createMetricItem('Disk Temperature', 'seeder-icon-yingpan', details.hd_temp, '℃'));\r\n }\r\n\r\n if (details.gpu_usage !== null && details.gpu_usage !== undefined) {\r\n items.push(createMetricItem('GPU Usage', 'seeder-icon-gpufuwu', details.gpu_usage, '%'));\r\n }\r\n\r\n if (details.gpu_temp !== null && details.gpu_temp !== undefined) {\r\n items.push(createMetricItem('GPU Temperature', 'seeder-icon-CPUwendu', details.gpu_temp, '℃'));\r\n }\r\n\r\n return items;\r\n};\r\n\r\nconst useHardwareUsage = (socketUrl) => {\r\n const { ps_status } = useHardwareWebSocket(socketUrl);\r\n\r\n return useMemo(() => {\r\n if (!ps_status || typeof ps_status !== 'object') return null;\r\n\r\n const statusItems = getItems(getDetail(ps_status));\r\n\r\n return (\r\n <div className=\"usage-container\">\r\n {statusItems.map((item, index) => (\r\n <div key={item.title} className=\"usage-item-wrapper\">\r\n <UsageItem \r\n title={item.title}\r\n iconClass={item.iconClass} \r\n memTotal={item.memTotal}\r\n >\r\n {item.valueString}\r\n </UsageItem>\r\n {/* {index < statusItems.length - 1 && <Divider type=\"vertical\" />} */}\r\n </div>\r\n ))}\r\n </div>\r\n )\r\n }, [ps_status]);\r\n}\r\n\r\nexport default useHardwareUsage;","import { useState } from 'react';\r\nimport { Modal, Form, Input, Alert, App } from 'antd';\r\n\r\nconst AuthorizationModal = ({\r\n onCancel,\r\n onOk,\r\n authData,\r\n title = 'Register License',\r\n okText,\r\n cancelText = 'Ignore',\r\n width = 600\r\n}) => {\r\n const { message } = App.useApp();\r\n const [code, setCode] = useState('');\r\n\r\n const {\r\n accredit_status: isActivated,\r\n message: statusMessage = 'Unactivated',\r\n bios_id: uuid,\r\n expires_time: expiresTime\r\n } = authData || {};\r\n\r\n const handleOk = () => {\r\n const trimmedCode = code.trim();\r\n if (!trimmedCode) {\r\n message.error('License key cannot be empty');\r\n return;\r\n }\r\n onOk(trimmedCode);\r\n }\r\n \r\n const statusAlert = isActivated ? (\r\n <Alert\r\n message={`${statusMessage}, will expire on ${expiresTime}`}\r\n type=\"success\"\r\n showIcon\r\n />\r\n ) : (\r\n <Alert message={statusMessage} type=\"warning\" showIcon />\r\n );\r\n\r\n const defaultOkText = isActivated ? \"Reactivate\" : \"Activate Now\";\r\n\r\n return (\r\n <Modal\r\n title={title}\r\n open={true}\r\n onCancel={onCancel}\r\n onOk={handleOk}\r\n okText={okText || defaultOkText}\r\n cancelText={cancelText}\r\n width={width}\r\n maskClosable={false}\r\n closable={false}\r\n cancelButtonProps={{ disabled: !isActivated }}\r\n >\r\n <Form\r\n name=\"auth_form\"\r\n labelCol={{ span: 6 }}\r\n wrapperCol={{ span: 18 }}\r\n autoComplete=\"off\"\r\n >\r\n <div style={{ marginBottom: 16 }}>{statusAlert}</div>\r\n <Form.Item label=\"Machine Code\" required>\r\n <Input value={uuid} readOnly />\r\n </Form.Item>\r\n <Form.Item label=\"License Key\" required>\r\n <Input.TextArea\r\n value={code}\r\n onChange={(e) => setCode(e.target.value)}\r\n autoSize={{ minRows: 6, maxRows: 6 }}\r\n placeholder=\"Enter your license key\"\r\n />\r\n </Form.Item>\r\n </Form>\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default AuthorizationModal;","import { useState, useEffect, useCallback } from 'react';\r\nimport { message } from 'antd';\r\nimport AuthorizationModal from '../componnets/AuthorizationModal.jsx';\r\n\r\nconst DEFAULT_AUTH = {\r\n accredit_status: false, // 授权状态\r\n bios_id: '', // 主机id\r\n message: 'Unactivated', // 激活信息\r\n expires_time: '' // 授权到期时间\r\n}\r\n\r\nexport const useAuth = (options) => {\r\n const {\r\n fetchAuthInfo,\r\n authorize,\r\n defaultAuthData = DEFAULT_AUTH,\r\n autoShowModal = true\r\n } = options || {};\r\n\r\n const [messageApi, contextHolder] = message.useMessage();\r\n const [showModal, setShowModal] = useState(false); // 默认隐藏\r\n const [authData, setAuthData] = useState(defaultAuthData);\r\n const [isRegistered, setIsRegistered] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const openModal = useCallback(() => setShowModal(true), []);\r\n const closeModal = useCallback(() => setShowModal(false), []);\r\n\r\n useEffect(() => {\r\n async function loadAuthInfo() {\r\n try {\r\n setLoading(true);\r\n const result = await fetchAuthInfo();\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n setAuthData(commands);\r\n setIsRegistered(commands.accredit_status);\r\n if (autoShowModal) {\r\n commands.accredit_status ? closeModal() : openModal();\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch auth info:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n loadAuthInfo();\r\n }, [fetchAuthInfo, autoShowModal, openModal, closeModal]);\r\n\r\n const auth = async (code) => {\r\n try {\r\n setLoading(true);\r\n const result = await authorize({\r\n type: \"accredit_command\",\r\n commands: {\r\n id: \"LICENSE\",\r\n license_data: code\r\n }\r\n });\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n // type accredit_message\r\n if (commands?.accredit_status) {\r\n setIsRegistered(true);\r\n setAuthData(commands);\r\n closeModal();\r\n } else {\r\n messageApi.error(commands.ciphertext_status || 'Authorization failed');\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Authorization error:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const modal = showModal && (\r\n <>\r\n <AuthorizationModal\r\n onOk={auth}\r\n onCancel={closeModal}\r\n authData={authData}\r\n />\r\n {contextHolder}\r\n </>\r\n );\r\n\r\n return {\r\n AuthModal: modal,\r\n openAuthModal: openModal,\r\n closeAuthModal: closeModal,\r\n isRegistered,\r\n authData,\r\n loading\r\n };\r\n};","import { useRef, useState, useEffect, useMemo } from \"react\";\r\nimport { Spin, message, Dropdown } from \"antd\";\r\nimport { LoadingOutlined } from '@ant-design/icons';\r\nimport { useInterval } from \"ahooks\";\r\nimport axios from 'axios';\r\n\r\nconst useUpgrade = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000\r\n}) => {\r\n const [isSpinning, setIsSpinning] = useState(false);\r\n const [interval, setInterval] = useState(undefined); // 间隔时间,当设置值为 undefined 时会停止计时器\r\n const inputRef = useRef(null);\r\n const [currentStatus, setCurrentStatus] = useState('idle'); // 'idle' | 'uploading' | 'upgrading'\r\n const isUploadCompleteRef = useRef(false); // 安装包上传是否完成\r\n const [uploadProgress, setUploadProgress] = useState(0);\r\n\r\n // 分别创建独立的取消令牌\r\n const uploadCancelToken = useRef(axios.CancelToken.source());\r\n const statusCancelToken = useRef(axios.CancelToken.source());\r\n\r\n const showLoader = () => setIsSpinning(true);\r\n const hideLoader = () => setIsSpinning(false);\r\n\r\n // 构建菜单项 - 确保至少包含download和upload\r\n // 构建菜单项 - 最终完美版本\r\n const finalMenuItems = useMemo(() => {\r\n const hasDownload = menuItems.some(item => item.key === 'download');\r\n const hasUpload = menuItems.some(item => item.key === 'upload');\r\n \r\n if (hasDownload && hasUpload) {\r\n return menuItems;\r\n }\r\n \r\n const licenseIndex = menuItems.findIndex(item => item.key === 'license');\r\n \r\n // 如果没有license,在末尾添加\r\n if (licenseIndex === -1) {\r\n const itemsToAdd = [];\r\n if (menuItems.length > 0) itemsToAdd.push({ type: 'divider' });\r\n if (!hasDownload) itemsToAdd.push({ key: \"download\", label: \"Download Config File\" });\r\n if (!hasUpload) itemsToAdd.push({ key: \"upload\", label: \"Software Update\" });\r\n return [...menuItems, ...itemsToAdd];\r\n }\r\n \r\n // 有license,在license前面插入\r\n const beforeLicense = menuItems.slice(0, licenseIndex);\r\n const licenseItem = menuItems[licenseIndex];\r\n const afterLicense = menuItems.slice(licenseIndex + 1);\r\n \r\n const itemsToInsert = [];\r\n \r\n // 1. 前面的分隔符(如果beforeLicense不为空且最后一项不是分隔符)\r\n if (beforeLicense.length > 0 && beforeLicense[beforeLicense.length - 1].type !== 'divider') {\r\n itemsToInsert.push({ type: 'divider' });\r\n }\r\n \r\n // 2. 添加缺少的项\r\n if (!hasDownload) itemsToInsert.push({ key: \"download\", label: \"Download Config File\" });\r\n if (!hasUpload) itemsToInsert.push({ key: \"upload\", label: \"Software Update\" });\r\n \r\n // 3. 后面的分隔符(与license之间)\r\n itemsToInsert.push({ type: 'divider' });\r\n \r\n return [...beforeLicense, ...itemsToInsert, licenseItem, ...afterLicense];\r\n }, [menuItems]);\r\n\r\n const handleMenuClick = ({ key }) => {\r\n switch (key) {\r\n case 'download':\r\n onDownload();\r\n return;\r\n case 'upload':\r\n onUpload();\r\n return;\r\n default:\r\n // 其他菜单项交给外部回调处理\r\n if (onMenuClick) {\r\n onMenuClick(key);\r\n } else {\r\n console.warn(`Unknown menu key: ${key} and no onMenuClick provided`);\r\n }\r\n }\r\n };\r\n\r\n const onDownload = async () => {\r\n if (!downloadFiles) {\r\n console.error('downloadFiles function is required for download operation');\r\n message.error('Download functionality not configured');\r\n return;\r\n }\r\n\r\n try {\r\n const res = await downloadFiles();\r\n\r\n if (res.status !== 200) {\r\n throw new Error(`Unexpected status code: ${res.status}`);\r\n }\r\n\r\n // 默认值,兼容接口响应头没有定义文件名\r\n let fileName = 'config.tar.gz';\r\n const contentDisposition = res.headers['content-disposition'] || '';\r\n\r\n // 获取接口响应的content-disposition字段值,以便获取到文件名\r\n if (contentDisposition) {\r\n const filenameMatch = contentDisposition.match(/filename\\s*=\\s*\"?([^\";]+)\"?/i);\r\n if (filenameMatch?.[1]) {\r\n fileName = decodeURIComponent(filenameMatch[1]); // 处理编码后的文件名(如 %20 转空格)\r\n }\r\n }\r\n\r\n // 创建并下载文件\r\n const blob = new Blob([res.data], { type: 'application/octet-stream' });\r\n const url = window.URL.createObjectURL(blob);\r\n\r\n // 下面就是创建一个a标签并触发click事件,来下载该文件\r\n const link = document.createElement('a');\r\n link.style.display = 'none';\r\n link.href = url;\r\n link.target = '_blank';\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // 最后移除a标签并删除创建的ObjectURL对象,防止内存泄漏\r\n link.parentNode.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n } catch (error) {\r\n console.error('Download failed:', error);\r\n message.error('Download failed');\r\n }\r\n }\r\n\r\n const onUpload = () => {\r\n if (inputRef?.current) {\r\n inputRef.current.click();\r\n }\r\n }\r\n\r\n const updatePackage = async (event) => {\r\n if (!upgradeExecute) {\r\n console.error('upgradeExecute function is required for upload operation');\r\n message.error('Upload functionality not configured');\r\n return;\r\n }\r\n\r\n try {\r\n const file = event.target.files?.[0];\r\n if (!file) return;\r\n\r\n showLoader();\r\n setCurrentStatus('Uploading...');\r\n setUploadProgress(0); // 重置进度\r\n\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n isUploadCompleteRef.current = false;\r\n\r\n // 上传文件(不等待响应)\r\n upgradeExecute(formData, {\r\n onUploadProgress: (progressEvent) => {\r\n const percentCompleted = Math.round(\r\n (progressEvent.loaded * 100) / progressEvent.total\r\n );\r\n setUploadProgress(percentCompleted); // 更新进度状态\r\n\r\n if (percentCompleted === 100) {\r\n isUploadCompleteRef.current = true;\r\n // 等待3秒 开始状态轮询\r\n setTimeout(() => {\r\n setInterval(statusPollingInterval);\r\n setCurrentStatus('Upgrading...');\r\n }, uploadCompleteDelay);\r\n }\r\n },\r\n cancelToken: uploadCancelToken.current.token\r\n });\r\n\r\n // 清除文件选择\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n console.error(\"Upload error:\", error);\r\n message.error('Upload failed');\r\n }\r\n cancelRequest();\r\n }\r\n }\r\n\r\n const fetchUpgradeStatus = async () => {\r\n if (!upgradeStatus) {\r\n console.error('upgradeStatus function is required for status checking');\r\n cancelRequest();\r\n return;\r\n }\r\n\r\n try {\r\n const response = await upgradeStatus({\r\n cancelToken: statusCancelToken.current.token\r\n });\r\n\r\n if (response?.status === 200) {\r\n const { code, message: statusMessage } = response.data;\r\n\r\n // 状态处理\r\n switch (code) {\r\n case 200: // 升级成功\r\n message.success(statusMessage, 2.5, () => {\r\n cancelRequest();\r\n window.location.reload();\r\n });\r\n break;\r\n \r\n case 201: // 升级中\r\n // code为201时,每隔一秒请求一次。直到请求到其他的code,直接弹出message提示。\r\n break;\r\n case 202: // 升级失败\r\n case 203: // 升级异常\r\n message.error(statusMessage);\r\n cancelRequest();\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n } catch (error) {\r\n if (axios.isCancel(error)) {\r\n console.log('Status polling canceled');\r\n } else {\r\n console.error('Status check failed:', error);\r\n // 网络错误时自动重试\r\n }\r\n }\r\n }\r\n\r\n const cancelRequest = () => {\r\n // 取消状态轮询\r\n uploadCancelToken.current.cancel('Operation canceled');\r\n statusCancelToken.current.cancel('Operation canceled');\r\n \r\n uploadCancelToken.current = axios.CancelToken.source();\r\n statusCancelToken.current = axios.CancelToken.source();\r\n \r\n // 重置所有状态\r\n setInterval(undefined);\r\n setCurrentStatus('idle');\r\n hideLoader();\r\n };\r\n\r\n // 轮询状态\r\n useInterval(fetchUpgradeStatus, interval);\r\n\r\n // 组件卸载时清理\r\n useEffect(() => {\r\n return () => {\r\n uploadCancelToken.current.cancel();\r\n statusCancelToken.current.cancel();\r\n };\r\n }, []);\r\n\r\n const upgradeElement = (\r\n <div>\r\n <Dropdown \r\n menu={{ \r\n items: finalMenuItems, \r\n onClick: handleMenuClick\r\n }} \r\n trigger={[\"hover\"]}\r\n >\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className=\"seeder-iconfont seeder-icon-liebiao2 text-xl text-neutral-400\"></i>\r\n </a>\r\n </Dropdown>\r\n <input \r\n ref={inputRef} \r\n type=\"file\" \r\n onChange={updatePackage} \r\n className=\"hidden\"\r\n accept={acceptFileTypes}\r\n />\r\n <Spin \r\n spinning={isSpinning} \r\n indicator={<LoadingOutlined style={{ fontSize: 60 }} spin />}\r\n tip={\r\n currentStatus === \"Uploading...\" \r\n ? `${currentStatus} ${uploadProgress}%` \r\n : currentStatus\r\n }\r\n size=\"large\"\r\n fullscreen\r\n />\r\n </div>\r\n )\r\n\r\n return [upgradeElement];\r\n}\r\n\r\nexport default useUpgrade;","import { useCallback } from 'react';\r\nimport { App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\n\r\nconst useSystemOperations = ({\r\n onPowerOff,\r\n onRestart,\r\n confirmTitle = \"Confirm\",\r\n cancelText = \"No\",\r\n okText = \"Yes\",\r\n run\r\n} = {}) => {\r\n const { modal: AntdModal } = App.useApp();\r\n\r\n const doAction = useCallback((action) => {\r\n try {\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: `${confirmTitle} ${action}?`,\r\n cancelText,\r\n okText,\r\n onOk: () => {\r\n if (action === 'poweroff' && onPowerOff) {\r\n onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n onRestart();\r\n }\r\n\r\n // Call the run callback after successful operation\r\n if (typeof run === 'function') {\r\n run();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }, [AntdModal, confirmTitle, cancelText, okText, onPowerOff, onRestart]);\r\n\r\n const getMenuItems = useCallback(() => [\r\n {\r\n key: \"poweroff\",\r\n label: \"Power Off\",\r\n },\r\n {\r\n key: \"restart\",\r\n label: \"Restart\",\r\n }\r\n ], []);\r\n\r\n const handleMenuClick = useCallback(({ key }) => {\r\n doAction(key);\r\n }, [doAction]);\r\n\r\n return {\r\n menuItems: getMenuItems(),\r\n handleMenuClick\r\n };\r\n};\r\n\r\nexport default useSystemOperations;","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n let copy;\n const isArray = Array.isArray(data);\n const isFileListInstance = typeof FileList !== 'undefined' ? data instanceof FileList : false;\n if (data instanceof Date) {\n copy = new Date(data);\n }\n else if (!(isWeb && (data instanceof Blob || isFileListInstance)) &&\n (isArray || isObject(data))) {\n copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n }\n else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n }\n else {\n return data;\n }\n return copy;\n}\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, ...data } = props;\n return (React.createElement(HookFormContext.Provider, { value: data }, children));\n};\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const methods = useFormContext();\n const { control = methods.control, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: _localProxyFormState.current,\n exact,\n callback: (formState) => {\n !disabled &&\n updateFormState({\n ...control._formState,\n ...formState,\n });\n },\n }), [name, disabled, exact]);\n React.useEffect(() => {\n _localProxyFormState.current.isValid && control._setValid(true);\n }, [control]);\n return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2, _internal_visited = new WeakSet()) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (_internal_visited.has(object1) || _internal_visited.has(object2)) {\n return true;\n }\n _internal_visited.add(object1);\n _internal_visited.add(object2);\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2, _internal_visited)\n : val1 !== val2) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const methods = useFormContext();\n const { control = methods.control, name, defaultValue, disabled, exact, compute, } = props || {};\n const _defaultValue = React.useRef(defaultValue);\n const _compute = React.useRef(compute);\n const _computeFormValues = React.useRef(undefined);\n _compute.current = compute;\n const defaultValueMemo = React.useMemo(() => control._getWatch(name, _defaultValue.current), [control, name]);\n const [value, updateValue] = React.useState(_compute.current ? _compute.current(defaultValueMemo) : defaultValueMemo);\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: {\n values: true,\n },\n exact,\n callback: (formState) => {\n if (!disabled) {\n const formValues = generateWatchOutput(name, control._names, formState.values || control._formValues, false, _defaultValue.current);\n if (_compute.current) {\n const computedFormValues = _compute.current(formValues);\n if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n updateValue(computedFormValues);\n _computeFormValues.current = computedFormValues;\n }\n }\n else {\n updateValue(formValues);\n }\n }\n },\n }), [control, disabled, name, exact]);\n React.useEffect(() => control._removeUnmounted());\n return value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const methods = useFormContext();\n const { name, disabled, control = methods.control, shouldUnregister, defaultValue, } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const defaultValueMemo = React.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n const value = useWatch({\n control,\n name,\n defaultValue: defaultValueMemo,\n exact: true,\n });\n const formState = useFormState({\n control,\n name,\n exact: true,\n });\n const _props = React.useRef(props);\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n _props.current = props;\n const fieldState = React.useMemo(() => Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }), [formState, name]);\n const onChange = React.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]);\n const onBlur = React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control._formValues]);\n const ref = React.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && elm) {\n field._f.ref = {\n focus: () => elm.focus && elm.focus(),\n select: () => elm.select && elm.select(),\n setCustomValidity: (message) => elm.setCustomValidity(message),\n reportValidity: () => elm.reportValidity(),\n };\n }\n }, [control._fields, name]);\n const field = React.useMemo(() => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange,\n onBlur,\n ref,\n }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n control.register(name, {\n ..._props.current.rules,\n ...(isBoolean(_props.current.disabled)\n ? { disabled: _props.current.disabled }\n : {}),\n });\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n !isArrayField && control.register(name);\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n control._setDisabledField({\n disabled,\n name,\n });\n }, [disabled, name, control]);\n return React.useMemo(() => ({\n field,\n formState,\n fieldState,\n }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n const output = {};\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n }\n else {\n output[key] = obj[key];\n }\n }\n return output;\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n const flattenFormValues = flatten(control._formValues);\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType && encType !== 'multipart/form-data'\n ? { 'Content-Type': encType }\n : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (React.createElement(React.Fragment, null, render({\n submit,\n }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction markFieldsDirty(data, fields = {}) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n }\n else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n return fields;\n}\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\n const isParentNodeArray = Array.isArray(data);\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\n if (isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n }\n else {\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n return dirtyFieldsFromValues;\n}\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => !!fieldReference &&\n !!fieldReference.validate &&\n !!((isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n }\n else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n if (foundError && foundError.root && foundError.root.type) {\n return {\n name: `${fieldName}.root`,\n error: foundError.root,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nvar isMessage = (value) => isString(value);\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isReady: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const _proxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n let _proxySubscribeFormState = {\n ..._proxyFormState,\n };\n const _subjects = {\n array: createSubject(),\n state: createSubject(),\n };\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _setValid = async (shouldUpdateValid) => {\n if (!_options.disabled &&\n (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid ||\n shouldUpdateValid)) {\n const isValid = _options.resolver\n ? isEmptyObject((await _runSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled &&\n (_proxyFormState.isValidating ||\n _proxyFormState.validatingFields ||\n _proxySubscribeFormState.isValidating ||\n _proxySubscribeFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && _setValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n if (!_options.disabled) {\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!get(_formState.dirtyFields, name);\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.dirtyFields ||\n _proxySubscribeFormState.dirtyFields) &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _runSchema = async (name) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n _updateIsValidating(name);\n return result;\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _runSchema(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true,\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => !_options.disabled &&\n (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.forEach((checkboxRef) => {\n if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n if (Array.isArray(fieldValue)) {\n checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n }\n else {\n checkboxRef.checked =\n fieldValue === checkboxRef.value || !!fieldValue;\n }\n }\n });\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.state.next({\n name,\n values: cloneObject(_formValues),\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n if (!value.hasOwnProperty(fieldKey)) {\n return;\n }\n const fieldValue = value[fieldKey];\n const fieldName = name + '.' + fieldKey;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n isObject(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: cloneObject(_formValues),\n });\n if ((_proxyFormState.isDirty ||\n _proxyFormState.dirtyFields ||\n _proxySubscribeFormState.isDirty ||\n _proxySubscribeFormState.dirtyFields) &&\n options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n isWatched(name, _names) && _subjects.state.next({ ..._formState, name });\n _subjects.state.next({\n name: _state.mount ? name : undefined,\n values: cloneObject(_formValues),\n });\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n if (!target || !target.readOnly) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.state.next({\n name,\n type: event.type,\n values: cloneObject(_formValues),\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n if (_options.mode === 'onBlur') {\n if (isBlurEvent) {\n _setValid();\n }\n }\n else if (!isBlurEvent) {\n _setValid();\n }\n }\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _runSchema([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _setValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) ||\n ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.state.subscribe({\n next: (payload) => 'values' in payload &&\n name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const _subscribe = (props) => _subjects.state.subscribe({\n next: (formState) => {\n if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n props.callback({\n values: { ..._formValues },\n ..._formState,\n ...formState,\n defaultValues: _defaultValues,\n });\n }\n },\n }).unsubscribe;\n const subscribe = (props) => {\n _state.mount = true;\n _proxySubscribeFormState = {\n ..._proxySubscribeFormState,\n ...props.formState,\n };\n return _subscribe({\n ...props,\n formState: _proxySubscribeFormState,\n });\n };\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.state.next({\n values: cloneObject(_formValues),\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _setValid();\n };\n const _setDisabledField = ({ disabled, name, }) => {\n if ((isBoolean(disabled) && _state.mount) ||\n !!disabled ||\n _names.disabled.has(name)) {\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field) {\n _setDisabledField({\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : _options.disabled,\n name,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || _options.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist &&\n e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _runSchema();\n _formState.errors = errors;\n fieldValues = cloneObject(values);\n }\n else {\n await executeBuiltInValidation(_fields);\n }\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n unset(fieldValues, name);\n }\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _setValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n if (keepStateOptions.keepFieldsRef) {\n for (const fieldName of _names.mount) {\n setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n _fields = {};\n }\n }\n _formValues = _options.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.state.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n _state.watch = !!_options.shouldUnregister;\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n defaultValues: _defaultValues,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, keepStateOptions);\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect &&\n isFunction(fieldRef.select) &&\n fieldRef.select();\n }\n }\n };\n const _setFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n const methods = {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _subscribe,\n _runSchema,\n _focusError,\n _getWatch,\n _getDirty,\n _setValid,\n _setFieldArray,\n _setDisabledField,\n _setErrors,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _removeUnmounted,\n _disableForm,\n _subjects,\n _proxyFormState,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n subscribe,\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n return {\n ...methods,\n formControl: methods,\n };\n}\n\nvar generateId = () => {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16 + d) % 16 | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const methods = useFormContext();\n const { control = methods.control, name, keyName = 'id', shouldUnregister, rules, } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _fieldIds = React.useRef(fields);\n const _actioned = React.useRef(false);\n _fieldIds.current = fields;\n control._names.array.add(name);\n React.useMemo(() => rules &&\n control.register(name, rules), [control, rules, name]);\n useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n const fieldValues = get(values, name);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n }).unsubscribe, [control, name]);\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._setFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) &&\n set(control._fields, name, undefined);\n control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted) &&\n !getValidationModes(control._options.reValidateMode).isOnSubmit) {\n if (control._options.resolver) {\n control._runSchema([name]).then((result) => {\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.state.next({\n name,\n values: cloneObject(control._formValues),\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._setValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._setFieldArray(name);\n return () => {\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n control._options.shouldUnregister || shouldUnregister\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef(undefined);\n const _values = React.useRef(undefined);\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n isReady: false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n if (props.formControl) {\n _formControl.current = {\n ...props.formControl,\n formState,\n };\n if (props.defaultValues && !isFunction(props.defaultValues)) {\n props.formControl.reset(props.defaultValues, props.resetOptions);\n }\n }\n else {\n const { formControl, ...rest } = createFormControl(props);\n _formControl.current = {\n ...rest,\n formState,\n };\n }\n }\n const control = _formControl.current.control;\n control._options = props;\n useIsomorphicLayoutEffect(() => {\n const sub = control._subscribe({\n formState: control._proxyFormState,\n callback: () => updateFormState({ ...control._formState }),\n reRenderRoot: true,\n });\n updateFormState((data) => ({\n ...data,\n isReady: true,\n }));\n control._formState.isReady = true;\n return sub;\n }, [control]);\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (props.mode) {\n control._options.mode = props.mode;\n }\n if (props.reValidateMode) {\n control._options.reValidateMode = props.reValidateMode;\n }\n }, [control, props.mode, props.reValidateMode]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n control._focusError();\n }\n }, [control, props.errors]);\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.state.next({\n values: control._getWatch(),\n });\n }, [control, props.shouldUnregister]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, {\n keepFieldsRef: true,\n ...control._options.resetOptions,\n });\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [control, props.values]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._setValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n _formControl.current.formState = getProxyFormState(formState, control);\n return _formControl.current;\n}\n\nexport { Controller, Form, FormProvider, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","// 获取 LSM 中的IP映射列表\r\nexport async function get_lsm_data() {\r\n return request('/api/get_lsm_data', {\r\n method: 'GET'\r\n });\r\n}","import { useState, useEffect } from 'react';\r\nimport { Select, Form } from 'antd';\r\nimport { Controller } from 'react-hook-form';\r\nimport { get_lsm_data } from '../services';\r\n\r\nexport const useLSMLabel = (props = {}) => {\r\n const [lsmList, setLsmList] = useState([]);\r\n\r\n const {\r\n name,\r\n label = \"Label\",\r\n control,\r\n onLsmSelect,\r\n fetchLsmData = get_lsm_data,\r\n formItemProps = {},\r\n selectProps = {},\r\n fieldNames = { label: 'label', value: 'label' }\r\n } = props;\r\n\r\n useEffect(() => {\r\n const loadLsmData = async () => {\r\n try {\r\n const res = await fetchLsmData();\r\n if (res?.length) {\r\n setLsmList(res);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch LSM data:', error);\r\n }\r\n };\r\n\r\n loadLsmData();\r\n }, [fetchLsmData]);\r\n\r\n const renderLSMField = () => (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field }) => (\r\n <Form.Item\r\n label={label}\r\n {...formItemProps}\r\n >\r\n <Select\r\n {...field}\r\n {...selectProps}\r\n options={lsmList}\r\n fieldNames={fieldNames}\r\n allowClear\r\n showSearch\r\n optionFilterProp=\"label\"\r\n onChange={(value, option) => {\r\n field.onChange(value);\r\n onLsmSelect?.(value === undefined ? undefined : option);\r\n }}\r\n placeholder={selectProps.placeholder || 'Please select label'}\r\n />\r\n </Form.Item>\r\n )}\r\n />\r\n );\r\n\r\n return renderLSMField;\r\n};","import { memo, useEffect, useMemo, useState, useCallback, useRef } from 'react';\r\nimport { Modal, Form, App, Typography, Divider, Input } from 'antd';\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\n\r\nconst NetworkFieldGroup = ({ prefix, interfaces, fieldConfig = {} }) => {\r\n // 默认字段配置\r\n const defaultFieldConfig = {\r\n name: { label: \"Name\", enabled: true },\r\n ip: { label: \"IP Address\", enabled: true },\r\n netmask: { label: \"Netmask\", enabled: true }\r\n };\r\n \r\n const mergedFieldConfig = {\r\n ...defaultFieldConfig,\r\n ...fieldConfig,\r\n netmask: {\r\n label: \"Netmask\",\r\n enabled: fieldConfig.netmask?.enabled ?? defaultFieldConfig.netmask.enabled, // 合并 enabled\r\n }\r\n };\r\n \r\n return (\r\n <>\r\n <Typography.Title\r\n level={5}\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n marginBottom: 16\r\n }}\r\n >\r\n {prefix}\r\n </Typography.Title>\r\n {interfaces.map((iface, index) => (\r\n <div key={iface.id || index}>\r\n {mergedFieldConfig.name.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.name.label}\r\n name={[prefix, index, \"display_name\"]}\r\n >\r\n <Input disabled />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.ip.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.ip.label}\r\n name={[prefix, index, \"ip_address\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.netmask.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.netmask.label}\r\n name={[prefix, index, \"netmask\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {index < interfaces.length - 1 && <Divider style={{ marginBlock: 16 }} />}\r\n </div>\r\n ))}\r\n </>\r\n )\r\n};\r\n\r\nconst NetworkSettingsModal = ({\r\n open, \r\n onClose, \r\n getLanConfig, // 可选 - 单独获取LAN配置的函数\r\n getSysConfig, // 可选 - 单独获取QSFP配置的函数\r\n getConfig, // 可选 - 统一获取配置的函数\r\n updateLanConfig, \r\n updateSysConfig, \r\n restart,\r\n modalProps = {},\r\n formProps = {},\r\n fieldConfig = {},\r\n sections = ['LAN', 'QSFP'],\r\n showNetmask = { LAN: true, QSFP: false },\r\n restartRemark\r\n}) => {\r\n const { message, modal } = App.useApp();\r\n const [form] = Form.useForm();\r\n\r\n const [st2110Interfaces, setSt2110Interfaces] = useState([]);\r\n const [lanConfigs, setLanConfigs] = useState([]);\r\n const [submitLoading, setSubmitLoading] = useState(false);\r\n const [isInitialized, setIsInitialized] = useState(false);\r\n\r\n const initializationStatus = useRef({\r\n hasFetched: false,\r\n hasInitialized: false\r\n });\r\n\r\n const preparedFieldConfig = useMemo(() => {\r\n const config = { ...fieldConfig };\r\n \r\n // 确保LAN和QSFP的配置存在\r\n config.LAN = config.LAN || {};\r\n config.QSFP = config.QSFP || {};\r\n\r\n if (sections.includes('LAN')) {\r\n config.LAN.netmask = {\r\n ...(config.LAN.netmask || {}),\r\n enabled: showNetmask.LAN\r\n };\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n config.QSFP.netmask = {\r\n ...(config.QSFP.netmask || {}),\r\n enabled: showNetmask.QSFP\r\n };\r\n }\r\n\r\n return config;\r\n }, [fieldConfig, showNetmask, sections]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n \r\n const fetchData = async () => {\r\n if (initializationStatus.current.hasFetched) return;\r\n \r\n try {\r\n initializationStatus.current.hasFetched = true;\r\n\r\n if (getConfig) {\r\n // 使用统一接口获取数据\r\n const config = await getConfig();\r\n if (sections.includes('LAN') && config.lan_interfaces) {\r\n setLanConfigs(config.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && config.interfaces) {\r\n setSt2110Interfaces(config.interfaces);\r\n }\r\n } else {\r\n const promises = [];\r\n if (sections.includes('LAN')) {\r\n promises.push(getLanConfig());\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n promises.push(getSysConfig());\r\n }\r\n\r\n const results = await Promise.allSettled(promises);\r\n\r\n if (sections.includes('LAN') && getLanConfig) {\r\n const lanResult = results[0];\r\n if (lanResult.status === 'fulfilled') {\r\n setLanConfigs(lanResult.value || []);\r\n }\r\n }\r\n \r\n if (sections.includes('QSFP') && getSysConfig) {\r\n const sysResult = sections.includes('LAN') ? results[1] : results[0];\r\n if (sysResult.status === 'fulfilled' && sysResult.value) {\r\n setSt2110Interfaces(sysResult.value.st2110_interfaces || []);\r\n }\r\n }\r\n }\r\n \r\n setIsInitialized(true);\r\n } catch (error) {\r\n console.error('Failed to fetch data:', error);\r\n initializationStatus.current.hasFetched = false; // 出错时重置\r\n }\r\n };\r\n\r\n fetchData();\r\n }, [open, getLanConfig, getSysConfig, sections]); \r\n\r\n // 当模态框关闭时重置状态\r\n useEffect(() => {\r\n if (!open) {\r\n setIsInitialized(false);\r\n setLanConfigs([]);\r\n setSt2110Interfaces([]);\r\n form.resetFields();\r\n initializationStatus.current = { hasFetched: false, hasInitialized: false };\r\n }\r\n }, [open, form]);\r\n\r\n // 动态初始值配置\r\n const initialValues = useMemo(() => {\r\n const values = {};\r\n \r\n if (sections.includes('LAN') && lanConfigs.length > 0) {\r\n values.LAN = lanConfigs.map(config => ({\r\n connection_id: config.connection_id,\r\n display_name: config.display_name,\r\n ip_address: config.ip_address,\r\n ...(showNetmask.LAN ? { netmask: config.netmask } : {})\r\n }));\r\n }\r\n \r\n if (sections.includes('QSFP') && st2110Interfaces.length > 0) {\r\n values.QSFP = st2110Interfaces.map(iface => ({\r\n // 只有当iface中存在id字段时才包含id\r\n ...(iface.id !== undefined && { id: iface.id }),\r\n display_name: iface.display_name,\r\n ip_address: iface.ip_address || iface.ip, // 优先取ip_address,没有则取ip\r\n ...(showNetmask.QSFP ? { netmask: iface.netmask } : {})\r\n }));\r\n }\r\n \r\n return values;\r\n }, [lanConfigs, st2110Interfaces, sections, showNetmask]);\r\n\r\n // 当初始值准备好后设置表单值\r\n useEffect(() => {\r\n if (isInitialized && !initializationStatus.current.hasInitialized) {\r\n form.setFieldsValue(initialValues);\r\n initializationStatus.current.hasInitialized = true;\r\n }\r\n }, [isInitialized, form, initialValues]);\r\n\r\n const handleSuccess = useCallback(async ({\r\n messageText = 'Success',\r\n isPopup = !!restart,\r\n refresh = !restart\r\n } = {}) => {\r\n message.success(messageText);\r\n\r\n if (refresh && getConfig) {\r\n try {\r\n const newConfig = await getConfig();\r\n if (sections.includes('LAN') && newConfig.lan_interfaces) {\r\n setLanConfigs(newConfig.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && newConfig.interfaces) {\r\n setSt2110Interfaces(newConfig.interfaces);\r\n }\r\n } catch (error) {\r\n console.error('Failed to refresh config:', error);\r\n }\r\n }\r\n\r\n // 如果有restart函数,则显示重启确认框\r\n if (isPopup && restart) {\r\n try {\r\n const updatedConfig = await getSysConfig();\r\n if (updatedConfig && updatedConfig.is_restart_required) {\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: \"Configuration modified. Restart to apply changes?\",\r\n cancelText: \"No\",\r\n okText: \"Yes\",\r\n onOk: () => restart(),\r\n });\r\n }\r\n } catch (error) {\r\n console.error('Failed to check restart status:', error);\r\n }\r\n }\r\n\r\n onClose();\r\n }, [message, modal, getSysConfig, restart, getConfig, sections, onClose]);\r\n\r\n const handleSubmit = useCallback(async () => {\r\n setSubmitLoading(true);\r\n\r\n try {\r\n const values = await form.validateFields();\r\n\r\n const updatePromises = [];\r\n\r\n // 更新LAN配置\r\n if (sections.includes('LAN') && values.LAN) {\r\n const lanData = values.LAN.map((item, index) => ({\r\n connection_id: lanConfigs[index]?.connection_id,\r\n ip_address: item.ip_address,\r\n ...(showNetmask.LAN ? { netmask: item.netmask } : {})\r\n }));\r\n updatePromises.push(updateLanConfig(lanData));\r\n }\r\n\r\n // 更新QSFP配置\r\n if (sections.includes('QSFP') && values.QSFP) {\r\n const interfacesData = values.QSFP.map((item, index) => ({\r\n // 只有当原始数据中存在id时才包含id\r\n ...(st2110Interfaces?.[index]?.id !== undefined && {\r\n id: st2110Interfaces?.[index]?.id \r\n }),\r\n ...(st2110Interfaces?.[index]?.ip !== undefined \r\n ? { ip: item.ip_address } \r\n : { ip_address: item.ip_address }\r\n ),\r\n ...(showNetmask.QSFP ? { netmask: item.netmask } : {})\r\n }));\r\n\r\n const st2110Data = st2110Interfaces.some(iface => 'id' in iface)\r\n ? { st2110_interfaces: interfacesData }\r\n : { interfaces: interfacesData };\r\n\r\n updatePromises.push(updateSysConfig(st2110Data));\r\n }\r\n\r\n const results = await Promise.allSettled(updatePromises);\r\n\r\n // 检查所有更新是否成功\r\n const allSucceeded = results.every(result => result.status === 'fulfilled');\r\n\r\n if (allSucceeded) {\r\n handleSuccess();\r\n }\r\n } catch (error) {\r\n console.error('Failed to update configurations: ', error);\r\n } finally {\r\n setSubmitLoading(false);\r\n }\r\n }, [\r\n form, \r\n sections, \r\n lanConfigs, \r\n st2110Interfaces, \r\n updateLanConfig, \r\n updateSysConfig, \r\n handleSuccess\r\n ]);\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: \"Network Settings\",\r\n width: 650,\r\n open,\r\n confirmLoading: submitLoading,\r\n onOk: handleSubmit,\r\n onCancel: onClose,\r\n okText: \"Apply\",\r\n cancelText: \"Close\",\r\n centered: true,\r\n destroyOnHidden: true,\r\n forceRender: true,\r\n styles: {\r\n body: { padding: \"16px 24px 8px 24px\" },\r\n ...(restartRemark !== null && { footer: { paddingBottom: 28 } })\r\n },\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n labelCol: { span: 6 },\r\n wrapperCol: { span: 18 },\r\n autoComplete: \"off\",\r\n ...formProps\r\n };\r\n\r\n return (\r\n <Modal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {sections.includes('LAN') && lanConfigs.length > 0 && (\r\n <>\r\n <NetworkFieldGroup\r\n prefix=\"LAN\"\r\n interfaces={lanConfigs}\r\n fieldConfig={preparedFieldConfig.LAN}\r\n />\r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && <Divider />}\r\n </>\r\n )}\r\n \r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && (\r\n <NetworkFieldGroup\r\n prefix=\"QSFP\"\r\n interfaces={st2110Interfaces}\r\n fieldConfig={preparedFieldConfig.QSFP}\r\n />\r\n )}\r\n </Form>\r\n {restartRemark}\r\n </Modal>\r\n );\r\n}\r\n\r\nexport { NetworkFieldGroup };\r\nexport default memo(NetworkSettingsModal);","import { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { Modal, Select, Switch, Input, Badge, Form, ConfigProvider, InputNumber, App } from \"antd\";\r\n\r\n// 默认字段配置\r\nconst defaultFieldConfigs = {\r\n clock_class: {\r\n label: 'Clock Class',\r\n formType: 'select',\r\n options: [\r\n { value: 6, label: 'Atomic Clock (6)' },\r\n { value: 7, label: 'GPS (7)' },\r\n { value: 248, label: 'Slave-Only (248)' }\r\n ],\r\n readOnly: true\r\n },\r\n clock_accuracy: {\r\n label: 'Clock Accuracy',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n offset_scaled_log_variance: {\r\n label: 'Offset Scaled Log Variance',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority1: {\r\n label: 'Priority 1',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority2: {\r\n label: 'Priority 2',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_identity: {\r\n label: 'Grandmaster Identity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n master_port_id: {\r\n label: 'Port Identity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n t1_domain_number: {\r\n label: 'Domain',\r\n formType: 'number',\r\n min: 0,\r\n max: 127,\r\n readOnly: false\r\n },\r\n master_utc_offset: {\r\n label: 'UTC Offset',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n is_connected: {\r\n label: 'Connected Status',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'Disconnected', color: 'red' },\r\n 1: { text: 'Connected', color: 'green' }\r\n }\r\n },\r\n is_locked: {\r\n label: 'Locked Status',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'Unlocked', color: 'red' },\r\n 1: { text: 'Locked', color: 'green' }\r\n }\r\n }\r\n};\r\n\r\n// 默认字段顺序\r\nconst defaultFieldOrder = [\r\n 't1_domain_number',\r\n 'grandmaster_priority1',\r\n 'grandmaster_priority2',\r\n 'grandmaster_identity',\r\n 'master_port_id',\r\n 'clock_class',\r\n 'clock_accuracy',\r\n 'offset_scaled_log_variance',\r\n 'master_utc_offset',\r\n 'is_connected',\r\n 'is_locked'\r\n];\r\n\r\n/**\r\n * 转换PTP状态为表单字段数组\r\n * @param {Object} ptpStatus PTP状态对象\r\n * @param {Object} fieldConfigs 字段配置\r\n * @param {Array} fieldOrder 字段顺序\r\n * @returns {Array} 表单字段数组\r\n */\r\nfunction convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder) {\r\n return fieldOrder\r\n .filter(key => key in ptpStatus)\r\n .map(key => {\r\n const config = fieldConfigs[key] || { label: key, formType: 'text' };\r\n const value = ptpStatus[key];\r\n \r\n return {\r\n key,\r\n value,\r\n ...config,\r\n rawData: ptpStatus,\r\n };\r\n });\r\n}\r\n\r\nconst PtpModal = ({\r\n open, \r\n onClose, \r\n getPtpInfo, \r\n updatePtpInfo, \r\n fieldConfigs = defaultFieldConfigs,\r\n fieldOrder = defaultFieldOrder,\r\n modalProps = {},\r\n formProps = {}\r\n}) => {\r\n const [ptpStatus, setPtpStatus] = useState(null);\r\n const [form] = Form.useForm();\r\n const { message } = App.useApp();\r\n\r\n useEffect(() => {\r\n if (open) {\r\n getPtpInfo().then(data => {\r\n if (data?.[0]) {\r\n setPtpStatus(data[0]);\r\n form.setFieldsValue(data[0]);\r\n }\r\n });\r\n }\r\n }, [open, form, getPtpInfo])\r\n\r\n const ptpStatusArray = useMemo(() => {\r\n if (!ptpStatus) return[];\r\n return convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder);\r\n }, [ptpStatus])\r\n\r\n const handleValueChange = (changedValues) => {\r\n if ('t1_domain_number' in changedValues) {\r\n setPtpStatus(prev => ({\r\n ...prev,\r\n t1_domain_number: changedValues.t1_domain_number\r\n }));\r\n }\r\n };\r\n\r\n const handleSubmit = async () => {\r\n try {\r\n const values = await form.validateFields();\r\n\r\n const response = await updatePtpInfo(values);\r\n if (response) {\r\n message.success('Success');\r\n setTimeout(() => {\r\n onClose();\r\n }, 1500);\r\n }\r\n } catch (error) {\r\n console.error('Update failed:', error);\r\n }\r\n };\r\n\r\n\r\n const renderFormItem = (item) => {\r\n switch (item.formType) {\r\n case 'select':\r\n return <Select options={item.options} disabled={item.readOnly} />;\r\n case 'switch':\r\n return <Switch />;\r\n case 'badge':\r\n const normalizedValue = typeof item.value === 'boolean' \r\n ? (item.value ? 1 : 0)\r\n : item.value;\r\n const status = item.statusMap?.[normalizedValue] || { text: 'Unknown', color: 'gray' };\r\n return (\r\n <ConfigProvider theme={{ components: { Badge: { statusSize: 10 } } }}>\r\n <Badge color={status.color} text={status.text} />\r\n </ConfigProvider>\r\n );\r\n case 'number':\r\n return (\r\n <InputNumber\r\n disabled={item.readOnly} \r\n controls={false} \r\n keyboard={false} \r\n min={item.min ?? Number.MIN_SAFE_INTEGER} \r\n max={item.max ?? Number.MAX_SAFE_INTEGER}\r\n />\r\n )\r\n default:\r\n return <Input disabled={item.readOnly} />;\r\n }\r\n };\r\n \r\n if (!open || !ptpStatus) return null;\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: \"PTP\",\r\n width: 650,\r\n open,\r\n okText: \"Apply\",\r\n cancelText: \"Close\",\r\n onCancel: onClose,\r\n onOk: handleSubmit,\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n name: \"ptpForm\",\r\n labelCol: { span: 8 },\r\n wrapperCol: { span: 16 },\r\n autoComplete: \"off\",\r\n onValuesChange: handleValueChange,\r\n ...formProps\r\n };\r\n\r\n return (\r\n <Modal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {ptpStatusArray.map(item => (\r\n <Form.Item \r\n label={item.label} \r\n name={item.key} \r\n key={item.key}\r\n initialValue={item.value}\r\n >\r\n {renderFormItem(item)}\r\n </Form.Item>\r\n ))}\r\n </Form>\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default memo(PtpModal);","import { List, Empty, Button, Space, Form, Input, Flex, Checkbox, Typography } from \"antd\";\r\nimport { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { PlusOutlined } from \"@ant-design/icons\";\r\n\r\nexport const LeftList = memo(({\r\n dataSource,\r\n selectedPresetId,\r\n onSelectPreset,\r\n onAddNew,\r\n onRemove,\r\n hasPresets = dataSource.length > 0,\r\n showDescription = false,\r\n texts = {\r\n newButton: \"New Preset\",\r\n removeButton: \"Delete\"\r\n }\r\n}) => {\r\n // 动态计算列布局\r\n const gridColumns = showDescription ? \"grid-cols-3\" : \"grid-cols-2\";\r\n\r\n return (\r\n <div className=\"h-full left-list-wrapper\">\r\n <div className=\"list-container\">\r\n <List\r\n header={\r\n <div className={`grid ${gridColumns} gap-2 w-full list-header`}>\r\n <div>Name</div>\r\n <div>Create Time</div>\r\n {showDescription && <div>Description</div>}\r\n </div>\r\n }\r\n dataSource={dataSource}\r\n rowKey=\"id\"\r\n renderItem={(item) => (\r\n <List.Item \r\n className={`list-item ${\r\n selectedPresetId === item.id ? 'selected' : ''\r\n }`}\r\n style={{ padding: \"9px 24px\" }}\r\n onClick={() => onSelectPreset(item)}\r\n >\r\n <div className={`grid ${gridColumns} gap-2 w-full text-text-normal`}>\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.name}>\r\n {item.name || \"Untitled Preset\"}\r\n </Typography.Text>\r\n </div>\r\n\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis>\r\n {item.create_time}\r\n </Typography.Text>\r\n </div>\r\n \r\n {showDescription && (\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.description}>\r\n {item.description}\r\n </Typography.Text>\r\n </div>\r\n )}\r\n </div>\r\n </List.Item>\r\n )}\r\n locale={{\r\n emptyText: (\r\n <div className=\"p-8\">\r\n <Empty\r\n image={Empty.PRESENTED_IMAGE_SIMPLE}\r\n description={\r\n <span className=\"text-gray-400\">\r\n <Button \r\n type=\"link\" \r\n onClick={onAddNew}\r\n className=\"p-0 h-auto\"\r\n icon={<PlusOutlined />}\r\n >\r\n Create New Preset\r\n </Button>\r\n </span>\r\n }\r\n />\r\n </div>\r\n )\r\n }}\r\n />\r\n </div>\r\n\r\n {/* 底部按钮区域 */}\r\n {hasPresets && (\r\n <div className=\"p-4\" style={{ paddingInline: 24 }}>\r\n <Space size=\"middle\">\r\n <Button\r\n type=\"default\"\r\n icon={<PlusOutlined />}\r\n // style={{ padding: \"20px 12px\" }}\r\n className=\"btn-gray\"\r\n onClick={onAddNew}\r\n >\r\n {texts.newButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n // style={{ padding: \"20px 12px\" }}\r\n className=\"btn-gray\"\r\n onClick={onRemove}\r\n >\r\n {texts.removeButton}\r\n </Button>\r\n </Space>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n});\r\n\r\nconst SubmitButton = ({ loading, action, children, disabled = false }) => (\r\n <div className=\"submit-btn-wrapper\">\r\n <Button className=\"btn-gray\" loading={loading} onClick={action} disabled={disabled}>\r\n {children}\r\n </Button>\r\n </div>\r\n);\r\n\r\nexport const RightDetailForm = memo(({\r\n form, \r\n onSave, \r\n onLoad,\r\n isLoading,\r\n isEditing,\r\n originalPresetData,\r\n fields = {\r\n name: {\r\n label: \"Name\",\r\n placeholder: \"Please enter name\",\r\n required: true\r\n }\r\n },\r\n texts = {\r\n loadButton: \"Load\",\r\n saveButton: \"Save\"\r\n },\r\n presetChanged // 作用:在切换选中预设时强制触发 Checkbox 的重新初始化\r\n}) => {\r\n const [initialSelected, setInitialSelected] = useState([]);\r\n const currentSelected = Form.useWatch('category_list', form) || [];\r\n\r\n // 检查是否包含category_list字段\r\n const hasCategoryList = fields.category_list !== null && fields.category_list !== undefined;\r\n\r\n // 初始化 category_list 的选择状态\r\n useEffect(() => {\r\n if (hasCategoryList) {\r\n const currentValue = form.getFieldValue('category_list') || [];\r\n setInitialSelected(currentValue);\r\n }\r\n }, [presetChanged, form, hasCategoryList]); // 当presetChanged变化时更新\r\n\r\n // 动态生成 checkbox 选项\r\n const checkboxOptions = useMemo(() => {\r\n if (!hasCategoryList) return [];\r\n \r\n return fields.category_list.options.map(category => {\r\n const isInitiallySelected = initialSelected.includes(category.name);\r\n const shouldDisable = isEditing ? !isInitiallySelected : false;\r\n \r\n return {\r\n ...category,\r\n disabled: shouldDisable,\r\n initiallySelected: isInitiallySelected\r\n };\r\n });\r\n }, [initialSelected, isEditing, hasCategoryList, fields.category_list]);\r\n\r\n const handleCheckboxChange = (checkedValues) => {\r\n form.setFieldsValue({ category_list: checkedValues });\r\n };\r\n\r\n const handleLoad = async () => {\r\n try {\r\n const formValues = await form.validateFields();\r\n\r\n const loadData = {\r\n id: form.getFieldValue('id'),\r\n // 优先使用表单中的 category_list,如果没有则使用原始数据\r\n name: originalPresetData.name,\r\n category_list: hasCategoryList \r\n ? (formValues.category_list || [])\r\n : (originalPresetData?.category_list || [])\r\n };\r\n await onLoad(loadData);\r\n } catch (error) {\r\n console.error('表单验证失败:', error);\r\n }\r\n };\r\n\r\n return (\r\n <Flex vertical className=\"h-full\">\r\n <Form \r\n form={form} \r\n layout=\"vertical\" \r\n autoComplete=\"off\" \r\n style={{ flex: 1, overflowY: 'auto' }}\r\n >\r\n {/* Name 字段 */}\r\n <Form.Item \r\n name=\"name\" \r\n label={fields.name.label}\r\n // rules={[\r\n // { \r\n // required: fields.name.required,\r\n // validator: async (_, value) => {\r\n // if (!value || value.trim() === '') {\r\n // return Promise.reject(new Error('Preset name cannot be empty or spaces only'));\r\n // }\r\n // }\r\n // }\r\n // ]}\r\n required\r\n >\r\n <Input \r\n placeholder={fields.name.placeholder} \r\n disabled={isEditing} \r\n />\r\n </Form.Item>\r\n\r\n {/* Category List 字段 */}\r\n {hasCategoryList && (\r\n <Form.Item \r\n name=\"category_list\" \r\n label={fields.category_list.label}\r\n // rules={[\r\n // { \r\n // required: fields.category_list.required,\r\n // message: 'Please select at least one category',\r\n // validator: (_, value) => {\r\n // if (value && value.length > 0) {\r\n // return Promise.resolve();\r\n // }\r\n // return Promise.reject(new Error('Please select at least one category'));\r\n // }\r\n // }\r\n // ]}\r\n required\r\n >\r\n <Checkbox.Group \r\n className=\"grid grid-cols-2 gap-2\"\r\n onChange={handleCheckboxChange}\r\n >\r\n {checkboxOptions.map(category => (\r\n <Checkbox \r\n key={category.name} \r\n value={category.name}\r\n disabled={category.disabled}\r\n >\r\n {category.label}\r\n </Checkbox>\r\n ))}\r\n </Checkbox.Group>\r\n </Form.Item>\r\n )}\r\n\r\n {/* Description 字段 */}\r\n {fields.description && (\r\n <Form.Item \r\n name=\"description\" \r\n label={fields.description.label}\r\n >\r\n <Input.TextArea \r\n rows={4}\r\n placeholder={fields.description.placeholder}\r\n disabled={isEditing}\r\n style={{\r\n resize: 'none'\r\n }}\r\n />\r\n </Form.Item>\r\n )}\r\n </Form>\r\n {isEditing ? (\r\n <SubmitButton\r\n action={handleLoad}\r\n {...(hasCategoryList && { disabled: !currentSelected.length })}\r\n >\r\n {texts.loadButton}\r\n </SubmitButton>\r\n ) : (\r\n <SubmitButton \r\n action={onSave} \r\n loading={isLoading}\r\n >\r\n {texts.saveButton}\r\n </SubmitButton>\r\n )}\r\n </Flex>\r\n );\r\n});","import { Modal, Form, Row, Col, Empty, App, Spin, Flex } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport { memo, useState, useCallback, useEffect } from \"react\";\r\nimport { LeftList, RightDetailForm } from \"./PresetModal.component\";\r\n// import \"../styles/index.less\";\r\n\r\nconst Preset = ({\r\n open,\r\n onClose,\r\n // API 方法通过 props 传入\r\n getPresetList,\r\n savePreset,\r\n removePreset,\r\n loadPreset,\r\n onLoadSuccess, // 加载成功后的回调\r\n onLoadError, // 加载失败后的回调\r\n // 字段配置\r\n fields = {\r\n name: {\r\n label: \"Name\",\r\n placeholder: \"Please enter name\",\r\n required: true\r\n }\r\n },\r\n texts = {\r\n title: \"Preset Management\",\r\n emptyText: \"Select a preset from the list to view details\",\r\n deleteConfirm: \"Are you sure you want to delete preset\",\r\n loadConfirm: \"Are you sure you want to load preset\",\r\n loadText: \"Loading...\",\r\n successText: \"Success\",\r\n newButton: \"New Preset\",\r\n removeButton: \"Delete\",\r\n loadButton: \"Load\",\r\n saveButton: \"Save\"\r\n },\r\n // 样式定制\r\n width = 1000,\r\n height = 680,\r\n className = \"\"\r\n}) => {\r\n const { message: AntdMessage, modal: AntdModal } = App.useApp();\r\n const [presetList, setPresetList] = useState([]);\r\n const [selectedPreset, setSelectedPreset] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [presetChanged, setPresetChanged] = useState(0);\r\n const [form] = Form.useForm();\r\n\r\n const fetchPresetList = useCallback(async () => {\r\n try {\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 自动选中第一个预设\r\n if (presets.length > 0) {\r\n const firstPreset = presets[0];\r\n setSelectedPreset(firstPreset);\r\n form.setFieldsValue(firstPreset);\r\n setPresetChanged(prev => prev + 1);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch preset list:', error);\r\n }\r\n }, [getPresetList]);\r\n\r\n const handleSelectPreset = useCallback((preset) => {\r\n setSelectedPreset(preset);\r\n form.setFieldsValue(preset);\r\n setPresetChanged(prev => prev + 1);\r\n }, [form]);\r\n\r\n const handleAddNew = useCallback(() => {\r\n const unsavedPreset = presetList.find(item => !item.id);\r\n\r\n if (unsavedPreset) {\r\n AntdMessage.warning('Existing unsaved preset detected.');\r\n return;\r\n }\r\n\r\n // 创建新的数据,包含所有配置的字段\r\n const newPreset = Object.keys(fields).reduce((acc, fieldName) => {\r\n acc[fieldName] = '';\r\n return acc;\r\n }, {});\r\n\r\n // 特殊处理 category_list\r\n if (fields.category_list?.options) {\r\n newPreset.category_list = fields.category_list.options.map(item => item.name);\r\n }\r\n \r\n setPresetList([...presetList, newPreset]);\r\n setSelectedPreset(newPreset);\r\n form.setFieldsValue(newPreset);\r\n }, [form, presetList, AntdMessage]);\r\n\r\n const handleRemove = useCallback(async () => {\r\n if (!selectedPreset) return;\r\n\r\n // 检查是否为新建的未保存数据(无id)\r\n const isUnsavedPreset = !selectedPreset.id;\r\n const presetName = selectedPreset.name || 'Untitled Preset';\r\n\r\n try {\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: 'Delete Preset',\r\n content: `${texts.deleteConfirm} \"${presetName}\"?`,\r\n cancelText: 'No',\r\n okText: 'Yes',\r\n onOk: async () => {\r\n // 在删除前记录当前选中项的位置\r\n const currentIndex = presetList.findIndex(item => \r\n isUnsavedPreset ? !item.id : item.id === selectedPreset.id\r\n );\r\n\r\n if (!isUnsavedPreset) {\r\n await removePreset({ id: selectedPreset.id });\r\n AntdMessage.success(texts.successText);\r\n } else {\r\n // 移除未保存的预设\r\n setPresetList(prev => prev.filter(item => !!item.id));\r\n }\r\n\r\n // 获取删除后的列表\r\n const updatedList = isUnsavedPreset \r\n ? presetList.filter(item => !!item.id)\r\n : await getPresetList().then(data => data?.preset_list || data || []);\r\n\r\n // 更新列表\r\n setPresetList(updatedList);\r\n\r\n if (updatedList.length > 0) {\r\n // 计算下一个索引\r\n let nextIndex = 0;\r\n\r\n if (currentIndex > 0) {\r\n // 如果删除的不是最后一项\r\n if (currentIndex < updatedList.length) {\r\n nextIndex = currentIndex; // 保持相同位置\r\n } else {\r\n nextIndex = updatedList.length - 1; // 选最后一个\r\n }\r\n }\r\n\r\n const nextPreset = updatedList[nextIndex];\r\n if (nextPreset) {\r\n setSelectedPreset(nextPreset);\r\n form.setFieldsValue(nextPreset);\r\n setPresetChanged(prev => prev + 1);\r\n return;\r\n }\r\n }\r\n\r\n // 列表为空\r\n setSelectedPreset(null);\r\n form.resetFields();\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Failed to delete preset:', error);\r\n }\r\n }, [selectedPreset, form, AntdModal, AntdMessage, texts, removePreset, getPresetList]);\r\n\r\n const handleLoadPreset = useCallback(async (loadData) => {\r\n if (!loadData) return;\r\n\r\n // 显示确认对话框\r\n AntdModal.confirm({\r\n title: 'Load Preset',\r\n content: `${texts.loadConfirm} \"${loadData.name}\"?`,\r\n cancelText: 'No',\r\n okText: 'Yes',\r\n onOk: async () => {\r\n // 显示加载模态框\r\n const modalInstance = Modal.info({\r\n title: texts.loadText,\r\n content: <Spin size=\"large\" className=\"block mx-auto\" />,\r\n maskClosable: false,\r\n okButtonProps: { style: { display: 'none' } }\r\n });\r\n\r\n try {\r\n await loadPreset({\r\n id: loadData.id,\r\n ...(loadData.category_list && { category_list: loadData.category_list })\r\n });\r\n // 成功时延迟关闭\r\n setTimeout(() => {\r\n modalInstance.destroy();\r\n AntdMessage.success(texts.successText);\r\n\r\n // 加载成功的外部回调\r\n if (onLoadSuccess) {\r\n onLoadSuccess(loadData);\r\n }\r\n }, 1000);\r\n } catch (error) {\r\n console.error('Failed to load preset:', error);\r\n modalInstance.destroy();\r\n\r\n // 加载失败的外部回调\r\n if (onLoadError) {\r\n onLoadError(error, loadData);\r\n }\r\n }\r\n }\r\n });\r\n }, [loadPreset, texts, AntdMessage, AntdModal, onLoadSuccess, onLoadError]);\r\n\r\n const handleSave = useCallback(async () => {\r\n setLoading(true);\r\n\r\n try {\r\n const values = await form.getFieldsValue();\r\n\r\n // 验证预设名称\r\n if (fields.name?.required) {\r\n if (!values.name || values.name.trim() === '') {\r\n AntdMessage.error('Name is required.')\r\n return; // 直接返回 不执行\r\n }\r\n }\r\n\r\n // 验证分类列表\r\n if (fields.category_list?.required) {\r\n if (!values.category_list || values.category_list.length === 0) {\r\n AntdMessage.error('No category selected.')\r\n return;\r\n }\r\n }\r\n \r\n await savePreset(values);\r\n AntdMessage.success(texts.successText);\r\n\r\n const savedPresetName = values.name;\r\n\r\n // 刷新列表\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 在刷新后的列表中查找同名的预设\r\n const newlySavedPreset = presets.find(item => item.name === savedPresetName);\r\n\r\n if (newlySavedPreset) {\r\n setSelectedPreset(newlySavedPreset);\r\n form.setFieldsValue(newlySavedPreset);\r\n setPresetChanged(prev => prev + 1);\r\n } else {\r\n setSelectedPreset(values);\r\n }\r\n } catch (error) {\r\n console.error('Failed to save preset:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [form, AntdMessage, texts, savePreset, getPresetList]);\r\n\r\n // 初始化数据\r\n useEffect(() => {\r\n fetchPresetList();\r\n }, [fetchPresetList]);\r\n\r\n return (\r\n <Modal\r\n title={texts.title}\r\n width={width}\r\n open={open}\r\n wrapClassName={`preset-management ${className}`}\r\n footer={null}\r\n onCancel={onClose}\r\n centered\r\n styles={{\r\n body: {\r\n height: `${height}px`\r\n }\r\n }}\r\n >\r\n <Row gutter={0} className=\"h-full w-full\">\r\n <Col span={14} className=\"h-full\">\r\n <LeftList\r\n dataSource={presetList}\r\n selectedPresetId={selectedPreset?.id}\r\n onSelectPreset={handleSelectPreset}\r\n onAddNew={handleAddNew}\r\n onRemove={handleRemove}\r\n showDescription={!!fields.description} // 根据 fields 判断是否显示 description\r\n texts={{\r\n newButton: texts.newButton,\r\n removeButton: texts.removeButton,\r\n }}\r\n />\r\n </Col>\r\n <Col span={10} className=\"h-full p-6\">\r\n {selectedPreset ? (\r\n <RightDetailForm\r\n form={form}\r\n onSave={handleSave}\r\n onLoad={handleLoadPreset}\r\n isLoading={loading}\r\n isEditing={!!selectedPreset?.id}\r\n originalPresetData={selectedPreset} // 传递原始数据\r\n fields={fields}\r\n texts={{\r\n loadButton: texts.loadButton,\r\n saveButton: texts.saveButton\r\n }}\r\n presetChanged={presetChanged}\r\n />\r\n ) : (\r\n <Flex vertical justify=\"center\" align=\"center\" className=\"h-full text-gray-400\">\r\n <Empty \r\n image={Empty.PRESENTED_IMAGE_SIMPLE} \r\n description={texts.emptyText}\r\n />\r\n </Flex>\r\n )}\r\n </Col>\r\n </Row>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default memo(Preset);","import { Dropdown } from \"antd\";\r\nimport useUpgrade from '../hooks/useUpgrade';\r\n\r\nconst UpgradeManager = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000,\r\n children,\r\n ...dropdownProps\r\n }) => {\r\n const [upgradeElement] = useUpgrade({\r\n menuItems,\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes,\r\n uploadCompleteDelay,\r\n statusPollingInterval\r\n });\r\n\r\n if (children) {\r\n // 提取Dropdown组件和其menu属性\r\n const dropdownElement = upgradeElement.props.children[0];\r\n const otherElements = upgradeElement.props.children.slice(1);\r\n \r\n return (\r\n <>\r\n <Dropdown \r\n {...dropdownProps} \r\n {...dropdownElement.props} // 传递所有Dropdown的props\r\n >\r\n {children}\r\n </Dropdown>\r\n {otherElements}\r\n </>\r\n );\r\n }\r\n\r\n // 如果没有children,直接返回完整的升级元素\r\n return upgradeElement;\r\n }\r\n\r\n UpgradeManager.defaultProps = {\r\n trigger: [\"hover\"],\r\n placement: \"bottomRight\"\r\n};\r\n\r\nexport default UpgradeManager;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { Dropdown, App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport PropTypes from 'prop-types';\r\n\r\nconst SystemOperations = ({ \r\n onPowerOff, \r\n onRestart,\r\n powerOffLabel = \"Power Off\",\r\n restartLabel = \"Restart\",\r\n iconClassName = \"seeder-iconfont seeder-icon-guanji1 text-xl text-neutral-400\",\r\n confirmTitle = \"Confirm\",\r\n cancelText = \"No\",\r\n okText = \"Yes\",\r\n run\r\n}) => {\r\n const { modal: AntdModal } = App.useApp();\r\n\r\n const menuItems = [\r\n {\r\n key: \"poweroff\",\r\n label: powerOffLabel,\r\n },\r\n // {\r\n // key: \"reboot\",\r\n // label: rebootLabel, // 硬重启 物理重启\r\n // },\r\n {\r\n key: \"restart\",\r\n label: restartLabel, // 软重启 服务重启\r\n }\r\n ];\r\n\r\n const doAction = (action) => {\r\n try {\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: `${confirmTitle} ${action}?`,\r\n cancelText,\r\n okText,\r\n onOk: () => {\r\n if (action === 'poweroff' && onPowerOff) {\r\n onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n onRestart();\r\n }\r\n\r\n // Call the run callback after successful operation\r\n if (typeof run === 'function') {\r\n run();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }\r\n\r\n const handleMenuClick = ({ key }) => {\r\n doAction(key);\r\n }\r\n\r\n return (\r\n <Dropdown menu={{ items: menuItems, onClick: handleMenuClick }} trigger={[\"hover\"]}>\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className={iconClassName}></i>\r\n </a>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nSystemOperations.propTypes = {\r\n onPowerOff: PropTypes.func,\r\n onRestart: PropTypes.func,\r\n powerOffLabel: PropTypes.string,\r\n restartLabel: PropTypes.string,\r\n iconClassName: PropTypes.string,\r\n confirmTitle: PropTypes.string,\r\n cancelText: PropTypes.string,\r\n okText: PropTypes.string,\r\n run: PropTypes.func\r\n};\r\n\r\nexport default SystemOperations;","import { Button } from 'antd';\r\nimport PropTypes from 'prop-types';\r\n\r\n// 将 logo.png 转为 base64\r\nconst logoBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAGaCAYAAAAfLro4AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAGj2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDg4LCAyMDIwLzA3LzEwLTIyOjA2OjUzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1YmIxNjQ4OC1hYzczLWI3NGYtODczMC1hZGZiY2Y1NTk3OWYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MjdjZjIwMy0zM2IyLWU3NDItYWRhNC0wNGY2YzA5ZTYxOWIiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyN2NmMjAzLTMzYjItZTc0Mi1hZGE0LTA0ZjZjMDllNjE5YiIgc3RFdnQ6d2hlbj0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHN0RXZ0OndoZW49IjIwMjUtMDktMDlUMTA6NTY6NTkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZkN2NjZDg5LTViMTQtMDI0MC04YjNhLTQzODU2ODk1YTFlZjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlgJupcAADw7SURBVHic7d15vKdz/f/xx5mNGWMsw1hKkaVQkmm1VFQSKr6VLIXIEtK++ZZIRQtJiG+K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NAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLR/h+CVP12K0zZoAAAAABJRU5ErkJggg==';\r\n\r\nconst defaultResetRoute = () => {\r\n window.location.href = window.location.origin;\r\n};\r\n\r\nconst useSpaLogo = (props = {}) => {\r\n const {\r\n logoUrl = logoBase64, // 使用者传入 logo URL\r\n logoWidth = 100,\r\n logoAlt = 'logo',\r\n onClick = defaultResetRoute,\r\n buttonStyle = {\r\n padding: 0,\r\n lineHeight: 1,\r\n height: 'auto',\r\n borderStyle: 'none',\r\n display: 'inline-block'\r\n }\r\n } = props;\r\n\r\n // 如果没有提供 logoUrl,返回空\r\n if (!logoUrl) {\r\n return [null];\r\n }\r\n\r\n return [\r\n <Button key=\"logo\" type=\"link\" style={buttonStyle} onClick={onClick}>\r\n <img alt={logoAlt} src={logoUrl} style={{ width: logoWidth }} />\r\n </Button>\r\n ];\r\n}\r\n\r\nuseSpaLogo.propTypes = {\r\n logoUrl: PropTypes.string,\r\n logoWidth: PropTypes.number,\r\n logoAlt: PropTypes.string,\r\n onClick: PropTypes.func\r\n};\r\n\r\nexport default useSpaLogo;","import { Space, Typography, Flex } from \"antd\";\r\nimport PropTypes from 'prop-types';\r\nimport useSpaLogo from '../hooks/useSpaLogo';\r\nimport useHardwareUsage from '../hooks/useHardwareUsage';\r\nimport SystemOperations from './SystemOperations';\r\n\r\n// 默认的获取 WebSocket URL 函数\r\nconst defaultGetSocketUrl = (url) => {\r\n if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {\r\n return `ws://127.0.0.1:${window.location.port}${url}`;\r\n }\r\n return `ws://${window.location.host}${url}`;\r\n};\r\n\r\n/**\r\n * 通用 Header 组件\r\n * @param {Object} props\r\n * @param {React.ReactNode} props.menuElement - 菜单元素\r\n * @param {Object} props.productInfo - 产品信息 { productName, version }\r\n * @param {boolean} props.showLogo - 是否显示Logo\r\n * @param {boolean} props.showProductInfo - 是否显示产品信息\r\n * @param {boolean} props.showHardwareUsage - 是否显示硬件使用情况\r\n * @param {boolean} props.showSystemOperations - 是否显示系统操作\r\n * @param {Function} props.onPowerOff - 关机函数\r\n * @param {Function} props.onRestart - 重启函数\r\n * @param {Function} props.onRun - 运行函数(用于SystemOperations)\r\n * @param {string} props.hardwareMonitorUrl - 硬件监控WebSocket地址\r\n * @param {Function} props.getSocketUrl - 获取WebSocket URL的函数\r\n * @param {Object} props.logoProps - Logo组件属性\r\n * @param {string} props.className - 自定义类名\r\n * @param {Object} props.style - 自定义样式\r\n */\r\nconst CommonHeader = ({\r\n menuElement,\r\n productInfo = {},\r\n showLogo = true,\r\n showProductInfo = true,\r\n showHardwareUsage = true,\r\n showSystemOperations = true,\r\n onPowerOff,\r\n onRestart,\r\n onRun,\r\n hardwareMonitorUrl = '/ws/psmonitor/status_update',\r\n getSocketUrl = defaultGetSocketUrl,\r\n logoProps = {},\r\n className = '',\r\n style = {},\r\n // 新增插槽\r\n leftContent, // 左侧额外内容\r\n}) => {\r\n const [logo] = useSpaLogo(logoProps);\r\n\r\n // 系统资源使用情况\r\n const usageElement = useHardwareUsage(getSocketUrl(hardwareMonitorUrl));\r\n\r\n return (\r\n <Flex justify=\"space-between\" align=\"center\" className={`common-header ${className}`} style={style}>\r\n {/* 左侧:Logo、产品信息和左侧插槽 */}\r\n <Space size={12}>\r\n {showLogo && logo}\r\n\r\n {showProductInfo && (\r\n <Flex align=\"center\" gap={8}>\r\n {productInfo.productName && (\r\n <Typography.Title level={4} style={{ marginBottom: 0 }}>\r\n {productInfo.productName}\r\n </Typography.Title>\r\n )}\r\n {productInfo.version && (\r\n <Typography.Text style={{ position: 'relative', top: 6, left: -6 }}>\r\n {productInfo.version}\r\n </Typography.Text>\r\n )}\r\n </Flex>\r\n )}\r\n\r\n {/* 左侧插槽 */}\r\n {leftContent}\r\n </Space>\r\n\r\n {/* 右侧:硬件监控和操作按钮 */}\r\n <Flex align=\"center\" gap={10}>\r\n {/* 系统资源使用情况 */}\r\n {showHardwareUsage && usageElement}\r\n\r\n <div className=\"header-controls\">\r\n {menuElement && (\r\n <div className=\"control-icon\">\r\n {menuElement}\r\n </div>\r\n )}\r\n\r\n {/* 关机、重启操作 */}\r\n {showSystemOperations && (\r\n <div className=\"control-icon\">\r\n <SystemOperations\r\n onPowerOff={onPowerOff}\r\n onRestart={onRestart}\r\n run={onRun}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </Flex>\r\n </Flex>\r\n )\r\n};\r\n\r\n// PropTypes 类型检查\r\nCommonHeader.propTypes = {\r\n menuElement: PropTypes.node,\r\n productInfo: PropTypes.shape({\r\n productName: PropTypes.string,\r\n version: PropTypes.string,\r\n }),\r\n showLogo: PropTypes.bool,\r\n showProductInfo: PropTypes.bool,\r\n showHardwareUsage: PropTypes.bool,\r\n showSystemOperations: PropTypes.bool,\r\n onPowerOff: PropTypes.func,\r\n onRestart: PropTypes.func,\r\n onRun: PropTypes.func,\r\n hardwareMonitorUrl: PropTypes.string,\r\n getSocketUrl: PropTypes.func,\r\n logoProps: PropTypes.object,\r\n className: PropTypes.string,\r\n style: PropTypes.object,\r\n};\r\n\r\nexport default CommonHeader;","// src/react/DraggableNumberInput.tsx\r\nimport React from \"react\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\n\r\n// 默认配置\r\nconst DEFAULT_DECIMAL_PLACES = 2;\r\n\r\n// src/react/defaults-and-utils.ts\r\n// eslint-disable-next-line no-var\r\nvar defaultModifiers = {\r\n default: { multiplier: 1, sensitivity: 1 },\r\n // ctrlKey: { multiplier: 1, sensitivity: 1 },\r\n // shiftKey: { multiplier: 10, sensitivity: 0.5 },\r\n // metaKey: { multiplier: 1, sensitivity: 1 },\r\n // altKey: { multiplier: 1, sensitivity: 1 }\r\n};\r\n\r\n// multiplier: 控制每次鼠标移动时数值变化的基本单位 multiplier: 1- 鼠标移动1像素,值变化1 multiplier: 10- 鼠标移动1像素,值变化10\r\n// sensitivity: 控制数值变化的灵敏度 sensitivity: 1- 正常灵敏度 sensitivity: 0.5- 减半灵敏度,需要移动2像素才能产生正常1像素的效果\r\n\r\n// 修改 formatNumber 函数,强制显示1位小数\r\nfunction formatNumber(value, decimalPlaces = DEFAULT_DECIMAL_PLACES) {\r\n return new Intl.NumberFormat(\"en-US\", {\r\n minimumFractionDigits: decimalPlaces,\r\n maximumFractionDigits: decimalPlaces,\r\n useGrouping: false\r\n }).format(value);\r\n}\r\n\r\nfunction handleArrow(e, multiplier, value) {\r\n if (e.key === \"ArrowUp\") {\r\n return value + multiplier;\r\n }\r\n if (e.key === \"ArrowDown\") {\r\n return value - multiplier;\r\n }\r\n return value;\r\n}\r\n\r\n// eslint-disable-next-line no-var\r\nvar DragCursor = ({ cursorPosition }) => /* @__PURE__ */ React.createElement(\r\n \"div\",\r\n {\r\n style: {\r\n position: \"fixed\",\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n pointerEvents: \"none\"\r\n }\r\n },\r\n /* @__PURE__ */ React.createElement(\r\n \"svg\",\r\n {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"24\",\r\n height: \"24\",\r\n viewBox: \"0 0 24 24\",\r\n style: {\r\n position: \"absolute\",\r\n left: cursorPosition.x,\r\n top: cursorPosition.y,\r\n transform: \"translate(-50%, -50%)\",\r\n pointerEvents: \"none\"\r\n }\r\n },\r\n /* @__PURE__ */ React.createElement(\r\n \"path\",\r\n {\r\n fill: \"#000\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\",\r\n d: \"M6.5 9a.5.5 0 0 0-.8-.4l-4 3a.5.5 0 0 0 0 .8l4 3a.5.5 0 0 0 .8-.4v-1.5h11V15a.5.5 0 0 0 .8.4l4-3a.5.5 0 0 0 0-.8l-4-3a.5.5 0 0 0-.8.4v1.5h-11V9Z\",\r\n style: {\r\n filter: \"drop-shadow( 0px 2px 1px rgba(0, 0, 0, .35))\"\r\n }\r\n }\r\n )\r\n )\r\n);\r\n\r\n// eslint-disable-next-line no-var\r\nvar noop = () => {\r\n};\r\nfunction DraggableNumberInput({\r\n value,\r\n min,\r\n max,\r\n className = \"\",\r\n disablePointerLock = false,\r\n modifierKeys,\r\n decimalPlaces = DEFAULT_DECIMAL_PLACES,\r\n onChange = noop,\r\n onDragStart = noop,\r\n onDragEnd = noop,\r\n style,\r\n ...restProps\r\n}) {\r\n const inputRef = useRef(null);\r\n const [isMouseDown, setIsMouseDown] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [localValue, setLocalValue] = useState(() => formatNumber(value, decimalPlaces));\r\n const [cursorPosition, setCursorPosition] = useState({ x: 0, y: 0 });\r\n const totalMovement = useRef(0);\r\n const startValue = useRef(0);\r\n const startX = useRef(0);\r\n const currentMultiplier = useRef(1);\r\n\r\n // === 新增:编辑状态跟踪 ===\r\n const [isEditing, setIsEditing] = useState(false);\r\n const lastExternalValueRef = useRef(value);\r\n\r\n // 修改 formatNumber 调用,传入 decimalPlaces\r\n const formatValue = useCallback((val) => {\r\n return formatNumber(val, decimalPlaces);\r\n }, [decimalPlaces]);\r\n\r\n const constrainedOnChange = useCallback(\r\n (newValue) => {\r\n let constrainedValue = newValue;\r\n if (typeof min === \"number\") {\r\n constrainedValue = Math.max(min, constrainedValue);\r\n }\r\n if (typeof max === \"number\") {\r\n constrainedValue = Math.min(max, constrainedValue);\r\n }\r\n onChange(constrainedValue);\r\n },\r\n [onChange, min, max]\r\n );\r\n\r\n useEffect(() => {\r\n // 只有当用户不在编辑状态,且外部值真正变化时才更新\r\n if (!isEditing && lastExternalValueRef.current !== value) {\r\n const formattedValue = formatValue(value);\r\n setLocalValue(formattedValue);\r\n lastExternalValueRef.current = value;\r\n }\r\n }, [value, formatValue, isEditing]);\r\n \r\n const handleInputChange = (e) => {\r\n const val = e.target.value;\r\n\r\n // 标记为编辑状态\r\n setIsEditing(true);\r\n setLocalValue(val);\r\n\r\n // 允许输入中间状态,不立即触发onChange\r\n if (val === '' || val === '-' || val === '.' || val.endsWith('.')) {\r\n return; // 输入中,不触发onChange\r\n }\r\n\r\n const num = parseFloat(val);\r\n if (!isNaN(num)) {\r\n constrainedOnChange(num); \r\n }\r\n };\r\n\r\n const handleBlur = () => {\r\n // 退出编辑状态\r\n setIsEditing(false);\r\n\r\n const num = parseFloat(localValue);\r\n if (!isNaN(num)) {\r\n // 根据 decimalPlaces 进行四舍五入\r\n const precision = Math.pow(10, decimalPlaces);\r\n const processedValue = Math.round(num * precision) / precision;\r\n const formattedValue = formatValue(processedValue);\r\n\r\n // 更新显示值\r\n setLocalValue(formattedValue);\r\n lastExternalValueRef.current = processedValue;\r\n // 触发外部变化\r\n constrainedOnChange(processedValue);\r\n } else {\r\n // 如果输入无效,重置为当前外部值\r\n const formattedValue = formatValue(value);\r\n setLocalValue(formattedValue);\r\n }\r\n };\r\n\r\n const handleMouseDown = useCallback(\r\n (e) => {\r\n if (!inputRef.current) return;\r\n let x = 0, y = 0;\r\n if (\"clientX\" in e && \"clientY\" in e) {\r\n [x, y] = [e.clientX, e.clientY];\r\n }\r\n if (\"touches\" in e) {\r\n [x, y] = [e.touches[0].clientX, e.touches[0].clientY];\r\n }\r\n setIsMouseDown(true);\r\n startX.current = x;\r\n startValue.current = value;\r\n totalMovement.current = 0;\r\n setCursorPosition({ x, y });\r\n },\r\n [value, disablePointerLock]\r\n );\r\n\r\n const updateDelta = useCallback(\r\n (e) => {\r\n if (!isMouseDown) return;\r\n applyMovement(totalMovement.current, e);\r\n },\r\n [isMouseDown]\r\n );\r\n\r\n const getModifiers = useCallback(\r\n (e) => {\r\n const mods = { ...defaultModifiers, ...modifierKeys };\r\n for (const key in mods) {\r\n if (key !== \"default\" && e[key]) {\r\n currentMultiplier.current = mods[key].multiplier;\r\n return mods[key];\r\n }\r\n }\r\n currentMultiplier.current = mods.default.multiplier;\r\n return mods.default;\r\n },\r\n [modifierKeys]\r\n );\r\n\r\n const applyMovement = useCallback(\r\n (newMovement, e) => {\r\n const { sensitivity, multiplier } = getModifiers(e);\r\n const delta = newMovement * sensitivity * multiplier;\r\n let newValue = startValue.current + delta;\r\n // 根据 decimalPlaces 进行精度控制\r\n const precision = Math.pow(10, decimalPlaces);\r\n newValue = Math.round(newValue * precision) / precision;\r\n newValue = Object.is(newValue, -0) ? 0 : newValue;\r\n constrainedOnChange(newValue);\r\n },\r\n [constrainedOnChange, getModifiers, decimalPlaces]\r\n );\r\n\r\n const handleArrowKeyDown = (e) => {\r\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n const { multiplier } = getModifiers(e);\r\n const newValue = handleArrow(e, multiplier, value);\r\n constrainedOnChange(newValue);\r\n }\r\n };\r\n\r\n const handleModifierKeyDuringDrag = useCallback(\r\n (e) => {\r\n if (e.key === \"Shift\" || e.key === \"Control\" || e.key === \"Meta\" || e.key === \"Alt\") {\r\n updateDelta(e);\r\n }\r\n },\r\n [updateDelta]\r\n );\r\n\r\n const handleMouseMove = useCallback(\r\n (e) => {\r\n if (!isMouseDown) return;\r\n if (\"touches\" in e) {\r\n e.preventDefault();\r\n }\r\n if (!disablePointerLock && document.pointerLockElement && !(\"touches\" in e)) {\r\n setCursorPosition((prev) => {\r\n const width = window.innerWidth;\r\n const height = window.innerHeight;\r\n const x2 = (prev.x + e.movementX + width) % width;\r\n const y = (prev.y + e.movementY + height) % height;\r\n return { x: x2, y };\r\n });\r\n }\r\n const x = \"touches\" in e ? e.touches[0].clientX : e.clientX;\r\n const newMovement = disablePointerLock || \"touches\" in e ? x - startX.current : totalMovement.current + e.movementX;\r\n if (!isDragging && newMovement !== 0) {\r\n if (!disablePointerLock && !(\"touches\" in e)) {\r\n inputRef.current?.requestPointerLock?.();\r\n }\r\n setIsDragging(true);\r\n document.addEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.addEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragStart();\r\n }\r\n totalMovement.current = newMovement;\r\n applyMovement(newMovement, e);\r\n },\r\n [\r\n isMouseDown,\r\n disablePointerLock,\r\n startX,\r\n isDragging,\r\n onDragStart,\r\n applyMovement\r\n ]\r\n );\r\n\r\n const handleMouseUp = useCallback(() => {\r\n setIsMouseDown(false);\r\n totalMovement.current = 0;\r\n if (isDragging) {\r\n setIsDragging(false);\r\n document.removeEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.removeEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragEnd();\r\n }\r\n if (document.pointerLockElement) {\r\n document.exitPointerLock();\r\n }\r\n }, [isDragging, onDragEnd, disablePointerLock]);\r\n\r\n useEffect(() => {\r\n if (isMouseDown) {\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove, {\r\n passive: false\r\n });\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n return () => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n };\r\n }\r\n }, [isMouseDown, handleMouseMove, handleMouseUp]);\r\n\r\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\r\n \"input\",\r\n {\r\n ref: inputRef,\r\n type: \"text\",\r\n inputMode: \"numeric\",\r\n pattern: \"-?[0-9]*\\\\.?[0-9]*\",\r\n value: localValue,\r\n onChange: handleInputChange,\r\n onBlur: handleBlur,\r\n onMouseDown: handleMouseDown,\r\n onTouchStart: handleMouseDown,\r\n onKeyDown: handleArrowKeyDown,\r\n className: `draggable-number-input ${className} ${isDragging ? \"dragging\" : \"\"}`,\r\n style: {\r\n ...{\r\n cursor: \"ew-resize\",\r\n userSelect: \"none\",\r\n caretColor: isDragging ? \"transparent\" : \"initial\"\r\n },\r\n ...style\r\n },\r\n ...restProps\r\n }\r\n ), isDragging && !disablePointerLock && /* @__PURE__ */ React.createElement(DragCursor, { cursorPosition }));\r\n}\r\n\r\nexport {\r\n DraggableNumberInput\r\n};\r\n"],"names":["formatBytes","bytes","decimals","arguments","length","undefined","k","dm","sizes","i","Math","floor","log","parseFloat","pow","toFixed","UsageItem","memo","_ref","title","iconClass","children","memTotal","_jsx","Tooltip","_jsxs","_Fragment","destroyOnHidden","className","concat","useHardwareWebSocket","socketUrl","systemStatus","setSystemStatus","useState","handleMessage","useCallback","message","prev","_objectSpread","error","console","useWebSocket","onMessage","event","parsedMessage","JSON","parse","data","debug","ps_status","getMaxNicTemp","sensors","priorityFields","temps","flatMap","field","_sensors$field","map","item","current","filter","temp","max","getMaxSensorTemp","sensorData","getDetail","_sensors_temperatures","_sensors_temperatures2","_mem$total","_mem$percent","_getMaxNicTemp","_gpu_stats$0$utilizat","_gpu_stats$","_gpu_stats$0$temperat","_gpu_stats$2","status","cpu_percent","mem","sensors_temperatures","gpu_stats","cpu_usage","cpu_temp","coretemp","mem_total","total","mem_usage","percent","mem_temp","spd5118","nic_temp","hd_temp","nvme","gpu_usage","gpu_temp","createMetricItem","value","unit","numValue","valueString","getItems","details","items","push","useHardwareUsage","useMemo","statusItems","index","AuthorizationModal","onCancel","onOk","authData","okText","cancelText","width","App","useApp","code","setCode","accredit_status","isActivated","statusMessage","bios_id","uuid","expires_time","expiresTime","handleOk","trimmedCode","trim","statusAlert","Alert","type","showIcon","defaultOkText","Modal","open","maskClosable","closable","cancelButtonProps","disabled","Form","name","labelCol","span","wrapperCol","autoComplete","style","marginBottom","Item","label","required","Input","readOnly","TextArea","onChange","e","target","autoSize","minRows","maxRows","placeholder","DEFAULT_AUTH","useAuth","options","fetchAuthInfo","authorize","defaultAuthData","autoShowModal","messageApi","contextHolder","useMessage","showModal","setShowModal","setAuthData","isRegistered","setIsRegistered","loading","setLoading","openModal","closeModal","useEffect","loadAuthInfo","result","commands","auth","id","license_data","ciphertext_status","modal","AuthModal","openAuthModal","closeAuthModal","useUpgrade","menuItems","onMenuClick","downloadFiles","upgradeExecute","upgradeStatus","acceptFileTypes","uploadCompleteDelay","statusPollingInterval","isSpinning","setIsSpinning","interval","setInterval","inputRef","useRef","currentStatus","setCurrentStatus","isUploadCompleteRef","uploadProgress","setUploadProgress","uploadCancelToken","axios","CancelToken","source","statusCancelToken","showLoader","hideLoader","finalMenuItems","hasDownload","some","key","hasUpload","licenseIndex","findIndex","itemsToAdd","beforeLicense","slice","licenseItem","afterLicense","itemsToInsert","handleMenuClick","_ref2","onDownload","onUpload","warn","res","Error","fileName","contentDisposition","headers","filenameMatch","match","decodeURIComponent","blob","Blob","url","window","URL","createObjectURL","link","document","createElement","display","href","download","body","appendChild","click","parentNode","removeChild","revokeObjectURL","updatePackage","_event$target$files","file","files","formData","FormData","append","onUploadProgress","progressEvent","percentCompleted","round","loaded","setTimeout","cancelToken","token","isCancel","cancelRequest","fetchUpgradeStatus","response","success","location","reload","cancel","useInterval","upgradeElement","Dropdown","menu","onClick","trigger","preventDefault","ref","accept","Spin","spinning","indicator","LoadingOutlined","fontSize","spin","tip","size","fullscreen","useSystemOperations","onPowerOff","onRestart","confirmTitle","run","AntdModal","doAction","action","confirm","icon","ExclamationCircleFilled","toUpperCase","getMenuItems","get_lsm_data","request","method","useLSMLabel","props","lsmList","setLsmList","control","onLsmSelect","fetchLsmData","formItemProps","selectProps","fieldNames","loadLsmData","renderLSMField","Controller","render","Select","allowClear","showSearch","optionFilterProp","option","NetworkFieldGroup","_fieldConfig$netmask$","_fieldConfig$netmask","prefix","interfaces","fieldConfig","defaultFieldConfig","enabled","ip","netmask","mergedFieldConfig","Typography","Title","level","justifyContent","alignItems","iface","Divider","marginBlock","NetworkSettingsModal","onClose","getLanConfig","getSysConfig","getConfig","updateLanConfig","updateSysConfig","restart","modalProps","formProps","sections","showNetmask","LAN","QSFP","restartRemark","form","useForm","st2110Interfaces","setSt2110Interfaces","lanConfigs","setLanConfigs","submitLoading","setSubmitLoading","isInitialized","setIsInitialized","initializationStatus","hasFetched","hasInitialized","preparedFieldConfig","config","includes","fetchData","lan_interfaces","promises","results","Promise","allSettled","lanResult","sysResult","st2110_interfaces","resetFields","initialValues","values","connection_id","display_name","ip_address","setFieldsValue","handleSuccess","messageText","isPopup","refresh","newConfig","updatedConfig","is_restart_required","handleSubmit","validateFields","updatePromises","lanData","_lanConfigs$index","interfacesData","_st2110Interfaces$ind","_st2110Interfaces$ind2","_st2110Interfaces$ind3","st2110Data","allSucceeded","every","mergedModalProps","confirmLoading","centered","forceRender","styles","padding","footer","paddingBottom","mergedFormProps","defaultFieldConfigs","clock_class","formType","clock_accuracy","offset_scaled_log_variance","grandmaster_priority1","grandmaster_priority2","grandmaster_identity","master_port_id","t1_domain_number","min","master_utc_offset","is_connected","statusMap","text","color","is_locked","defaultFieldOrder","convertPtpStatusToArray","ptpStatus","fieldConfigs","fieldOrder","rawData","PtpModal","getPtpInfo","updatePtpInfo","setPtpStatus","then","ptpStatusArray","handleValueChange","changedValues","renderFormItem","_item$statusMap","_item$min","_item$max","Switch","normalizedValue","ConfigProvider","theme","components","Badge","statusSize","InputNumber","controls","keyboard","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","onValuesChange","initialValue","LeftList","dataSource","selectedPresetId","onSelectPreset","onAddNew","onRemove","hasPresets","showDescription","texts","newButton","removeButton","gridColumns","List","header","rowKey","renderItem","Text","ellipsis","create_time","description","locale","emptyText","Empty","image","PRESENTED_IMAGE_SIMPLE","Button","PlusOutlined","paddingInline","Space","SubmitButton","RightDetailForm","_ref3","onSave","onLoad","isLoading","isEditing","originalPresetData","fields","loadButton","saveButton","presetChanged","initialSelected","setInitialSelected","currentSelected","useWatch","hasCategoryList","category_list","currentValue","getFieldValue","checkboxOptions","category","isInitiallySelected","shouldDisable","initiallySelected","handleCheckboxChange","checkedValues","handleLoad","formValues","loadData","Flex","vertical","layout","flex","overflowY","Checkbox","Group","rows","resize","Preset","getPresetList","savePreset","removePreset","loadPreset","onLoadSuccess","onLoadError","deleteConfirm","loadConfirm","loadText","successText","height","AntdMessage","presetList","setPresetList","selectedPreset","setSelectedPreset","setPresetChanged","fetchPresetList","presets","preset_list","firstPreset","handleSelectPreset","preset","handleAddNew","_fields$category_list","unsavedPreset","find","warning","newPreset","Object","keys","reduce","acc","fieldName","handleRemove","isUnsavedPreset","presetName","content","currentIndex","updatedList","nextIndex","nextPreset","handleLoadPreset","modalInstance","info","okButtonProps","destroy","handleSave","_fields$name","_fields$category_list2","getFieldsValue","savedPresetName","newlySavedPreset","wrapClassName","Row","gutter","Col","justify","align","UpgradeManager","dropdownProps","_objectWithoutProperties","_excluded","dropdownElement","otherElements","defaultProps","placement","reactIsModule","require$$0","require$$1","require$$2","require$$3","require$$4","propTypesModule","SystemOperations","powerOffLabel","restartLabel","iconClassName","propTypes","PropTypes","func","string","logoBase64","defaultResetRoute","origin","useSpaLogo","logoUrl","logoWidth","logoAlt","buttonStyle","lineHeight","borderStyle","alt","src","number","defaultGetSocketUrl","hostname","port","host","CommonHeader","menuElement","productInfo","showLogo","showProductInfo","showHardwareUsage","showSystemOperations","onRun","hardwareMonitorUrl","getSocketUrl","logoProps","leftContent","logo","usageElement","gap","productName","version","position","top","left","node","shape","bool","object","DEFAULT_DECIMAL_PLACES","defaultModifiers","default","multiplier","sensitivity","formatNumber","decimalPlaces","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","useGrouping","format","handleArrow","DragCursor","cursorPosition","React","pointerEvents","xmlns","viewBox","x","y","transform","fill","stroke","strokeLinejoin","d","noop","DraggableNumberInput","disablePointerLock","modifierKeys","onDragStart","onDragEnd","restProps","isMouseDown","setIsMouseDown","isDragging","setIsDragging","localValue","setLocalValue","setCursorPosition","totalMovement","startValue","startX","currentMultiplier","setIsEditing","lastExternalValueRef","formatValue","val","constrainedOnChange","newValue","constrainedValue","formattedValue","handleInputChange","endsWith","num","isNaN","handleBlur","precision","processedValue","handleMouseDown","clientX","clientY","touches","updateDelta","applyMovement","getModifiers","mods","newMovement","delta","is","handleArrowKeyDown","handleModifierKeyDuringDrag","handleMouseMove","pointerLockElement","innerWidth","innerHeight","x2","movementX","movementY","_inputRef$current","_inputRef$current$req","requestPointerLock","call","addEventListener","handleMouseUp","removeEventListener","exitPointerLock","passive","Fragment","inputMode","pattern","onBlur","onMouseDown","onTouchStart","onKeyDown","cursor","userSelect","caretColor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAMA,WAAW,GAAG,UAACC,KAAK,EAAmB;AAAA,EAAA,IAAjBC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;AACtC,EAAA,IAAIF,KAAK,KAAK,CAAC,IAAI,CAACA,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE,OAAO,SAAS,CAAA;EACxD,MAAMK,CAAC,GAAG,IAAI,CAAA;EACd,MAAMC,EAAE,GAAGL,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAGA,QAAQ,CAAA;AACtC,EAAA,MAAMM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC/C,EAAA,MAAMC,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,GAAG,CAACX,KAAK,CAAC,GAAGS,IAAI,CAACE,GAAG,CAACN,CAAC,CAAC,CAAC,CAAA;EACnD,OAAOO,UAAU,CAAC,CAACZ,KAAK,GAAGS,IAAI,CAACI,GAAG,CAACR,CAAC,EAAEG,CAAC,CAAC,EAAEM,OAAO,CAACR,EAAE,CAAC,CAAC,GAAG,GAAG,GAAGC,KAAK,CAACC,CAAC,CAAC,CAAA;AAC1E,CAAC,CAAA;AAED,MAAMO,SAAS,gBAAGC,IAAI,CAACC,IAAA,IAA8C;EAAA,IAA7C;IAAEC,KAAK;IAAEC,SAAS;IAAEC,QAAQ;AAAEC,IAAAA,QAAAA;AAAS,GAAC,GAAAJ,IAAA,CAAA;EAC9D,oBACEK,GAAA,CAACC,OAAO,EAAA;IACNL,KAAK,eACHM,IAAA,CAAAC,QAAA,EAAA;AAAAL,MAAAA,QAAA,gBACEE,GAAA,CAAA,KAAA,EAAA;AAAAF,QAAAA,QAAA,EAAMF,KAAAA;OAAW,CAAC,EACjBA,KAAK,KAAK,cAAc,IAAIG,QAAQ,KAAKjB,SAAS,iBACjDoB,IAAA,CAAA,KAAA,EAAA;AAAAJ,QAAAA,QAAA,GAAK,gBAAc,EAACrB,WAAW,CAACsB,QAAQ,CAAC,CAAA;AAAA,OAAM,CAChD,CAAA;AAAA,KACD,CACH;AACDK,IAAAA,eAAe,EAAE,KAAM;AAAAN,IAAAA,QAAA,eAEvBI,IAAA,CAAA,KAAA,EAAA;AAAKG,MAAAA,SAAS,EAAC,YAAY;AAAAP,MAAAA,QAAA,gBACzBE,GAAA,CAAA,GAAA,EAAA;QAAGK,SAAS,EAAA,kBAAA,CAAAC,MAAA,CAAqBT,SAAS,EAAA,UAAA,CAAA;OAAa,CAAC,eACxDG,GAAA,CAAA,MAAA,EAAA;AAAMK,QAAAA,SAAS,EAAC,aAAa;AAAAP,QAAAA,QAAA,EAAEA,QAAAA;AAAQ,OAAO,CAAC,CAAA;KAC5C,CAAA;AAAC,GACC,CAAC,CAAA;AAEd,CAAC,CAAC,CAAA;AAEF,kBAAeL,SAAS;;AC/BxB,MAAMc,oBAAoB,GAAIC,SAAS,IAAK;EAC1C,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGC,QAAQ,EAAE,CAAA;AAElD,EAAA,MAAMC,aAAa,GAAGC,WAAW,CAAEC,OAAO,IAAK;IAC7C,IAAI;AACF,MAAA,IAAIA,OAAO,EAAE;QACXJ,eAAe,CAACK,IAAI,IAAAC,cAAA,CAAAA,cAAA,CAAA,EAAA,EACfD,IAAI,CAAA,EACJD,OAAO,CAEV,CAAC,CAAA;AACL,OAAA;KACD,CAAC,OAAOG,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC,CAAA;AACnD,KAAA;GACD,EAAE,EAAE,CAAC,CAAA;;AAEN;EAC0BE,YAAY,CAACX,SAAS,EAAE;IAChDY,SAAS,EAAGC,KAAK,IAAK;AACpB;MACA,IAAI;QACF,MAAMC,aAAa,GAAGC,IAAI,CAACC,KAAK,CAACH,KAAK,CAACI,IAAI,CAAC,CAAA;QAC5Cb,aAAa,CAACU,aAAa,CAAC,CAAA;OAC7B,CAAC,OAAOL,KAAK,EAAE;AACdC,QAAAA,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC,CAAA;QAC9CC,OAAO,CAACQ,KAAK,CAAC,cAAc,EAAEL,KAAK,CAACI,IAAI,CAAC,CAAA;AAC3C,OAAA;AACF,KAAA;AACF,GAAC,EAAC;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEA,OAAO;AAAEE,IAAAA,SAAS,EAAElB,YAAAA;GAAc,CAAA;AACpC,CAAC,CAAA;AAED,6BAAeF,oBAAoB;;AC7CnC,MAAMqB,aAAa,GAAG,UAACC,OAAO,EAAqD;AAAA,EAAA,IAAnDC,cAAc,GAAAlD,SAAA,CAAAC,MAAA,QAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;AAC5E,EAAA,MAAMmD,KAAK,GAAGD,cAAc,CACzBE,OAAO,CAACC,KAAK,IAAA;AAAA,IAAA,IAAAC,cAAA,CAAA;IAAA,OAAI,CAAAL,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,KAAA,CAAA,IAAA,CAAAK,cAAA,GAAPL,OAAO,CAAGI,KAAK,CAAC,MAAA,IAAA,IAAAC,cAAA,KAAhBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAA,CAAkBC,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,OAAO,CAAC,KAAI,EAAE,CAAA;GAAC,CAAA,CACnEC,MAAM,CAAEC,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ,CAAC,CAAA;AAC7C,EAAA,OAAOR,KAAK,CAAClD,MAAM,GAAGM,IAAI,CAACqD,GAAG,CAAC,GAAGT,KAAK,CAAC,GAAG,IAAI,CAAA;AACjD,CAAC,CAAA;;AAED;AACA,MAAMU,gBAAgB,GAAIC,UAAU,IAAK;EACvC,MAAMX,KAAK,GAAG,CAACW,UAAU,IAAI,EAAE,EAC5BP,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,OAAO,CAAC,CACzBC,MAAM,CAAEC,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ,CAAC,CAAA;AAC7C,EAAA,OAAOR,KAAK,CAAClD,MAAM,GAAGM,IAAI,CAACqD,GAAG,CAAC,GAAGT,KAAK,CAAC,GAAG,IAAI,CAAA;AACjD,CAAC,CAAA;AAED,MAAMY,SAAS,GAAG,YAAiB;AAAA,EAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,UAAA,EAAAC,YAAA,EAAAC,cAAA,EAAAC,qBAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,YAAA,CAAA;AAAA,EAAA,IAAhBC,MAAM,GAAAzE,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;EAC5B,MAAM;IAAE0E,WAAW;IAAEC,GAAG;IAAEC,oBAAoB;AAAEC,IAAAA,SAAAA;AAAU,GAAC,GAAGJ,MAAM,CAAA;EAEpE,OAAO;AACLK,IAAAA,SAAS,EAAEJ,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAXA,KAAAA,CAAAA,GAAAA,WAAW,GAAI,IAAI;AAC9BK,IAAAA,QAAQ,EAAAf,CAAAA,qBAAA,GAAEY,oBAAoB,aAApBA,oBAAoB,KAAA,KAAA,CAAA,IAAA,CAAAX,sBAAA,GAApBW,oBAAoB,CAAEI,QAAQ,MAAA,IAAA,IAAAf,sBAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,sBAAA,GAA9BA,sBAAA,CAAiC,CAAC,CAAC,MAAA,IAAA,IAAAA,sBAAA,KAAnCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAA,CAAqCR,OAAO,MAAAO,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAI,IAAI;AAC9DiB,IAAAA,SAAS,EAAAf,CAAAA,UAAA,GAAES,GAAG,aAAHA,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAHA,GAAG,CAAEO,KAAK,MAAAhB,IAAAA,IAAAA,UAAA,KAAAA,KAAAA,CAAAA,GAAAA,UAAA,GAAI,IAAI;AAC7BiB,IAAAA,SAAS,EAAAhB,CAAAA,YAAA,GAAEQ,GAAG,aAAHA,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAHA,GAAG,CAAES,OAAO,MAAAjB,IAAAA,IAAAA,YAAA,KAAAA,KAAAA,CAAAA,GAAAA,YAAA,GAAI,IAAI;IAC/BkB,QAAQ,EAAExB,gBAAgB,CAACe,oBAAoB,KAAA,IAAA,IAApBA,oBAAoB,KAApBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAoB,CAAEU,OAAO,CAAC;AACzDC,IAAAA,QAAQ,EAAAnB,CAAAA,cAAA,GAAEpB,aAAa,CAAC4B,oBAAoB,CAAC,MAAA,IAAA,IAAAR,cAAA,KAAA,KAAA,CAAA,GAAAA,cAAA,GAAI,IAAI;IACrDoB,OAAO,EAAE3B,gBAAgB,CAACe,oBAAoB,KAAA,IAAA,IAApBA,oBAAoB,KAApBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAoB,CAAEa,IAAI,CAAC;IACrDC,SAAS,EAAA,CAAArB,qBAAA,GAAEQ,SAAS,KAAA,IAAA,IAATA,SAAS,KAAAP,KAAAA,CAAAA,IAAAA,CAAAA,WAAA,GAATO,SAAS,CAAG,CAAC,CAAC,MAAAP,IAAAA,IAAAA,WAAA,KAAdA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAiB,iBAAiB,CAAC,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAI,IAAI;IACtDsB,QAAQ,EAAA,CAAApB,qBAAA,GAAEM,SAAS,KAAA,IAAA,IAATA,SAAS,KAAAL,KAAAA,CAAAA,IAAAA,CAAAA,YAAA,GAATK,SAAS,CAAG,CAAC,CAAC,MAAAL,IAAAA,IAAAA,YAAA,KAAdA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAiB,iBAAiB,CAAC,MAAAD,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAI,IAAA;GAClD,CAAA;AACH,CAAC,CAAA;;AAED;AACA,MAAMqB,gBAAgB,GAAGA,CACvB5E,KAAK,EACLC,SAAS,EACT4E,KAAK,EACLC,IAAI,KACD;AACH,EAAA,MAAMC,QAAQ,GAAG,OAAOF,KAAK,KAAK,QAAQ,GAAGnF,UAAU,CAACmF,KAAK,CAAC,GAAGA,KAAK,CAAA;EAEtE,OAAO;IACL7E,KAAK;IACLC,SAAS;IACT+E,WAAW,EAAA,EAAA,CAAAtE,MAAA,CAAKqE,QAAQ,EAAArE,MAAA,CAAGoE,IAAI,CAAE;AACjCD,IAAAA,KAAK,EAAEE,QAAAA;GACR,CAAA;AACH,CAAC,CAAA;AAED,MAAME,QAAQ,GAAIC,OAAO,IAAK;EAC5B,MAAMC,KAAK,GAAG,EAAE,CAAA;EAEhB,IAAID,OAAO,CAACpB,SAAS,KAAK,IAAI,IAAIoB,OAAO,CAACpB,SAAS,KAAK5E,SAAS,EAAE;AACjEiG,IAAAA,KAAK,CAACC,IAAI,CAACR,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAEM,OAAO,CAACpB,SAAS,EAAE,GAAG,CAAC,CAAC,CAAA;AACtF,GAAA;EAEA,IAAIoB,OAAO,CAACnB,QAAQ,KAAK,IAAI,IAAImB,OAAO,CAACnB,QAAQ,KAAK7E,SAAS,EAAE;AAC/DiG,IAAAA,KAAK,CAACC,IAAI,CAACR,gBAAgB,CAAC,iBAAiB,EAAE,sBAAsB,EAAEM,OAAO,CAACnB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;AAChG,GAAA;EAEA,IAAImB,OAAO,CAACf,SAAS,KAAK,IAAI,IAAIe,OAAO,CAACf,SAAS,KAAKjF,SAAS,EAAE;AACjEiG,IAAAA,KAAK,CAACC,IAAI,CAAAhE,cAAA,CAAAA,cAAA,KACLwD,gBAAgB,CAAC,cAAc,EAAE,0BAA0B,EAAEM,OAAO,CAACf,SAAS,EAAE,GAAG,CAAC,CAAA,EAAA,EAAA,EAAA;MACvFhE,QAAQ,EAAE+E,OAAO,CAACjB,SAAAA;AAAS,KAAA,CAC5B,CAAC,CAAA;AACJ,GAAA;EAEA,IAAIiB,OAAO,CAACb,QAAQ,KAAK,IAAI,IAAIa,OAAO,CAACb,QAAQ,KAAKnF,SAAS,EAAE;AAC/DiG,IAAAA,KAAK,CAACC,IAAI,CAACR,gBAAgB,CAAC,oBAAoB,EAAE,mBAAmB,EAAEM,OAAO,CAACb,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;AAChG,GAAA;EAEA,IAAIa,OAAO,CAACX,QAAQ,KAAK,IAAI,IAAIW,OAAO,CAACX,QAAQ,KAAKrF,SAAS,EAAE;AAC/DiG,IAAAA,KAAK,CAACC,IAAI,CAACR,gBAAgB,CAAC,iBAAiB,EAAE,wBAAwB,EAAEM,OAAO,CAACX,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;AAClG,GAAA;EAEA,IAAIW,OAAO,CAACV,OAAO,KAAK,IAAI,IAAIU,OAAO,CAACV,OAAO,KAAKtF,SAAS,EAAE;AAC7DiG,IAAAA,KAAK,CAACC,IAAI,CAACR,gBAAgB,CAAC,kBAAkB,EAAE,qBAAqB,EAAEM,OAAO,CAACV,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAC/F,GAAA;EAEA,IAAIU,OAAO,CAACR,SAAS,KAAK,IAAI,IAAIQ,OAAO,CAACR,SAAS,KAAKxF,SAAS,EAAE;AACjEiG,IAAAA,KAAK,CAACC,IAAI,CAACR,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,EAAEM,OAAO,CAACR,SAAS,EAAE,GAAG,CAAC,CAAC,CAAA;AAC1F,GAAA;EAEA,IAAIQ,OAAO,CAACP,QAAQ,KAAK,IAAI,IAAIO,OAAO,CAACP,QAAQ,KAAKzF,SAAS,EAAE;AAC/DiG,IAAAA,KAAK,CAACC,IAAI,CAACR,gBAAgB,CAAC,iBAAiB,EAAE,sBAAsB,EAAEM,OAAO,CAACP,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;AAChG,GAAA;AAEA,EAAA,OAAOQ,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAME,gBAAgB,GAAIzE,SAAS,IAAK;EACtC,MAAM;AAAEmB,IAAAA,SAAAA;AAAU,GAAC,GAAGpB,sBAAoB,CAACC,SAAS,CAAC,CAAA;EAErD,OAAO0E,OAAO,CAAC,MAAM;IACnB,IAAI,CAACvD,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAA;IAE5D,MAAMwD,WAAW,GAAGN,QAAQ,CAAClC,SAAS,CAAChB,SAAS,CAAC,CAAC,CAAA;AAElD,IAAA,oBACE3B,GAAA,CAAA,KAAA,EAAA;AAAKK,MAAAA,SAAS,EAAC,iBAAiB;MAAAP,QAAA,EAC7BqF,WAAW,CAAChD,GAAG,CAAC,CAACC,IAAI,EAAEgD,KAAK,kBAC3BpF,GAAA,CAAA,KAAA,EAAA;AAAsBK,QAAAA,SAAS,EAAC,oBAAoB;QAAAP,QAAA,eAClDE,GAAA,CAACP,WAAS,EAAA;UACRG,KAAK,EAAEwC,IAAI,CAACxC,KAAM;UAClBC,SAAS,EAAEuC,IAAI,CAACvC,SAAU;UAC1BE,QAAQ,EAAEqC,IAAI,CAACrC,QAAS;UAAAD,QAAA,EAEvBsC,IAAI,CAACwC,WAAAA;SACG,CAAA;OAPHxC,EAAAA,IAAI,CAACxC,KASV,CACN,CAAA;AAAC,KACC,CAAC,CAAA;AAEV,GAAC,EAAE,CAAC+B,SAAS,CAAC,CAAC,CAAA;AACjB,CAAC,CAAA;AAED,yBAAesD,gBAAgB;;ACtH/B,MAAMI,kBAAkB,GAAI1F,IAAA,IAQtB;EAAA,IARuB;IAC3B2F,QAAQ;IACRC,IAAI;IACJC,QAAQ;AACR5F,IAAAA,KAAK,GAAG,kBAAkB;IAC1B6F,MAAM;AACNC,IAAAA,UAAU,GAAG,QAAQ;AACrBC,IAAAA,KAAK,GAAG,GAAA;AACV,GAAC,GAAAhG,IAAA,CAAA;EACC,MAAM;AAAEmB,IAAAA,OAAAA;AAAQ,GAAC,GAAG8E,GAAG,CAACC,MAAM,EAAE,CAAA;EAChC,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGpF,QAAQ,CAAC,EAAE,CAAC,CAAA;EAEpC,MAAM;AACJqF,IAAAA,eAAe,EAAEC,WAAW;IAC5BnF,OAAO,EAAEoF,aAAa,GAAG,aAAa;AACtCC,IAAAA,OAAO,EAAEC,IAAI;AACbC,IAAAA,YAAY,EAAEC,WAAAA;AAChB,GAAC,GAAGd,QAAQ,IAAI,EAAE,CAAA;EAElB,MAAMe,QAAQ,GAAGA,MAAM;AACrB,IAAA,MAAMC,WAAW,GAAGV,IAAI,CAACW,IAAI,EAAE,CAAA;IAC/B,IAAI,CAACD,WAAW,EAAE;AAChB1F,MAAAA,OAAO,CAACG,KAAK,CAAC,6BAA6B,CAAC,CAAA;AAC5C,MAAA,OAAA;AACF,KAAA;IACAsE,IAAI,CAACiB,WAAW,CAAC,CAAA;GAClB,CAAA;AAED,EAAA,MAAME,WAAW,GAAGT,WAAW,gBAC7BjG,GAAA,CAAC2G,KAAK,EAAA;IACJ7F,OAAO,EAAA,EAAA,CAAAR,MAAA,CAAK4F,aAAa,uBAAA5F,MAAA,CAAoBgG,WAAW,CAAG;AAC3DM,IAAAA,IAAI,EAAC,SAAS;IACdC,QAAQ,EAAA,IAAA;AAAA,GACT,CAAC,gBAEF7G,GAAA,CAAC2G,KAAK,EAAA;AAAC7F,IAAAA,OAAO,EAAEoF,aAAc;AAACU,IAAAA,IAAI,EAAC,SAAS;IAACC,QAAQ,EAAA,IAAA;AAAA,GAAE,CACzD,CAAA;AAED,EAAA,MAAMC,aAAa,GAAGb,WAAW,GAAG,YAAY,GAAG,cAAc,CAAA;EAEjE,oBACEjG,GAAA,CAAC+G,KAAK,EAAA;AACJnH,IAAAA,KAAK,EAAEA,KAAM;AACboH,IAAAA,IAAI,EAAE,IAAK;AACX1B,IAAAA,QAAQ,EAAEA,QAAS;AACnBC,IAAAA,IAAI,EAAEgB,QAAS;IACfd,MAAM,EAAEA,MAAM,IAAIqB,aAAc;AAChCpB,IAAAA,UAAU,EAAEA,UAAW;AACvBC,IAAAA,KAAK,EAAEA,KAAM;AACbsB,IAAAA,YAAY,EAAE,KAAM;AACpBC,IAAAA,QAAQ,EAAE,KAAM;AAChBC,IAAAA,iBAAiB,EAAE;AAAEC,MAAAA,QAAQ,EAAE,CAACnB,WAAAA;KAAc;IAAAnG,QAAA,eAE9CI,IAAA,CAACmH,IAAI,EAAA;AACHC,MAAAA,IAAI,EAAC,WAAW;AAChBC,MAAAA,QAAQ,EAAE;AAAEC,QAAAA,IAAI,EAAE,CAAA;OAAI;AACtBC,MAAAA,UAAU,EAAE;AAAED,QAAAA,IAAI,EAAE,EAAA;OAAK;AACzBE,MAAAA,YAAY,EAAC,KAAK;AAAA5H,MAAAA,QAAA,gBAElBE,GAAA,CAAA,KAAA,EAAA;AAAK2H,QAAAA,KAAK,EAAE;AAAEC,UAAAA,YAAY,EAAE,EAAA;SAAK;AAAA9H,QAAAA,QAAA,EAAE4G,WAAAA;AAAW,OAAM,CAAC,eACrD1G,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AAACC,QAAAA,KAAK,EAAC,cAAc;QAACC,QAAQ,EAAA,IAAA;QAAAjI,QAAA,eACtCE,GAAA,CAACgI,KAAK,EAAA;AAACvD,UAAAA,KAAK,EAAE2B,IAAK;UAAC6B,QAAQ,EAAA,IAAA;SAAE,CAAA;AAAC,OACtB,CAAC,eACZjI,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AAACC,QAAAA,KAAK,EAAC,aAAa;QAACC,QAAQ,EAAA,IAAA;AAAAjI,QAAAA,QAAA,eACrCE,GAAA,CAACgI,KAAK,CAACE,QAAQ,EAAA;AACbzD,UAAAA,KAAK,EAAEqB,IAAK;UACZqC,QAAQ,EAAGC,CAAC,IAAKrC,OAAO,CAACqC,CAAC,CAACC,MAAM,CAAC5D,KAAK,CAAE;AACzC6D,UAAAA,QAAQ,EAAE;AAAEC,YAAAA,OAAO,EAAE,CAAC;AAAEC,YAAAA,OAAO,EAAE,CAAA;WAAI;AACrCC,UAAAA,WAAW,EAAC,wBAAA;SACb,CAAA;AAAC,OACO,CAAC,CAAA;KACR,CAAA;AAAC,GACF,CAAC,CAAA;AAEZ,CAAC,CAAA;AAED,2BAAepD,kBAAkB;;AC3EjC,MAAMqD,YAAY,GAAG;AACnB1C,EAAAA,eAAe,EAAE,KAAK;AAAG;AACzBG,EAAAA,OAAO,EAAE,EAAE;AAAc;AACzBrF,EAAAA,OAAO,EAAE,aAAa;AAAG;EACzBuF,YAAY,EAAE,EAAE;AAClB,CAAC,CAAA;AAEYsC,MAAAA,OAAO,GAAIC,OAAO,IAAK;EACjC,MAAM;IACLC,aAAa;IACbC,SAAS;AACTC,IAAAA,eAAe,GAAGL,YAAY;AAC9BM,IAAAA,aAAa,GAAG,IAAA;AAClB,GAAC,GAAGJ,OAAO,IAAI,EAAE,CAAA;EAEjB,MAAM,CAACK,UAAU,EAAEC,aAAa,CAAC,GAAGpI,OAAO,CAACqI,UAAU,EAAE,CAAA;EACxD,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG1I,QAAQ,CAAC,KAAK,CAAC,CAAC;EAClD,MAAM,CAAC6E,QAAQ,EAAE8D,WAAW,CAAC,GAAG3I,QAAQ,CAACoI,eAAe,CAAC,CAAA;EACzD,MAAM,CAACQ,YAAY,EAAEC,eAAe,CAAC,GAAG7I,QAAQ,CAAC,KAAK,CAAC,CAAA;EACvD,MAAM,CAAC8I,OAAO,EAAEC,UAAU,CAAC,GAAG/I,QAAQ,CAAC,KAAK,CAAC,CAAA;EAE7C,MAAMgJ,SAAS,GAAG9I,WAAW,CAAC,MAAMwI,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;EAC3D,MAAMO,UAAU,GAAG/I,WAAW,CAAC,MAAMwI,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;AAE7DQ,EAAAA,SAAS,CAAC,MAAM;IACd,eAAeC,YAAYA,GAAG;MAC5B,IAAI;QACFJ,UAAU,CAAC,IAAI,CAAC,CAAA;AAChB,QAAA,MAAMK,MAAM,GAAG,MAAMlB,aAAa,EAAE,CAAA;AACpC,QAAA,IAAIkB,MAAM,KAANA,IAAAA,IAAAA,MAAM,eAANA,MAAM,CAAEC,QAAQ,EAAE;AACpB,UAAA,MAAMA,QAAQ,GAAGD,MAAM,CAACC,QAAQ,CAAA;UAChCV,WAAW,CAACU,QAAQ,CAAC,CAAA;AACrBR,UAAAA,eAAe,CAACQ,QAAQ,CAAChE,eAAe,CAAC,CAAA;AACzC,UAAA,IAAIgD,aAAa,EAAE;YACjBgB,QAAQ,CAAChE,eAAe,GAAG4D,UAAU,EAAE,GAAGD,SAAS,EAAE,CAAA;AACvD,WAAA;AACF,SAAA;OACD,CAAC,OAAO1I,KAAK,EAAE;AACdC,QAAAA,OAAO,CAACD,KAAK,CAAC,4BAA4B,EAAEA,KAAK,CAAC,CAAA;AACpD,OAAC,SAAS;QACRyI,UAAU,CAAC,KAAK,CAAC,CAAA;AACnB,OAAA;AACF,KAAA;AAEAI,IAAAA,YAAY,EAAE,CAAA;GACf,EAAE,CAACjB,aAAa,EAAEG,aAAa,EAAEW,SAAS,EAAEC,UAAU,CAAC,CAAC,CAAA;AAEzD,EAAA,MAAMK,IAAI,GAAG,MAAOnE,IAAI,IAAK;IAC3B,IAAI;MACF4D,UAAU,CAAC,IAAI,CAAC,CAAA;AAChB,MAAA,MAAMK,MAAM,GAAG,MAAMjB,SAAS,CAAC;AAC7BlC,QAAAA,IAAI,EAAE,kBAAkB;AACxBoD,QAAAA,QAAQ,EAAE;AACRE,UAAAA,EAAE,EAAE,SAAS;AACbC,UAAAA,YAAY,EAAErE,IAAAA;AAChB,SAAA;AACF,OAAC,CAAC,CAAA;AACF,MAAA,IAAIiE,MAAM,KAANA,IAAAA,IAAAA,MAAM,eAANA,MAAM,CAAEC,QAAQ,EAAE;AACpB,QAAA,MAAMA,QAAQ,GAAGD,MAAM,CAACC,QAAQ,CAAA;AAChC;AACA,QAAA,IAAIA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,eAARA,QAAQ,CAAEhE,eAAe,EAAE;UAC7BwD,eAAe,CAAC,IAAI,CAAC,CAAA;UACrBF,WAAW,CAACU,QAAQ,CAAC,CAAA;AACrBJ,UAAAA,UAAU,EAAE,CAAA;AACd,SAAC,MAAM;UACLX,UAAU,CAAChI,KAAK,CAAC+I,QAAQ,CAACI,iBAAiB,IAAI,sBAAsB,CAAC,CAAA;AACxE,SAAA;AACF,OAAA;KACD,CAAC,OAAOnJ,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,sBAAsB,EAAEA,KAAK,CAAC,CAAA;AAC9C,KAAC,SAAS;MACRyI,UAAU,CAAC,KAAK,CAAC,CAAA;AACnB,KAAA;GACD,CAAA;AAED,EAAA,MAAMW,KAAK,GAAGjB,SAAS,iBACrBlJ,IAAA,CAAAC,QAAA,EAAA;IAAAL,QAAA,EAAA,cACEE,GAAA,CAACqF,oBAAkB,EAAA;AACjBE,MAAAA,IAAI,EAAE0E,IAAK;AACX3E,MAAAA,QAAQ,EAAEsE,UAAW;AACrBpE,MAAAA,QAAQ,EAAEA,QAAAA;KACX,CAAC,EACD0D,aAAa,CAAA;AAAA,GACd,CACH,CAAA;EAED,OAAO;AACLoB,IAAAA,SAAS,EAAED,KAAK;AAChBE,IAAAA,aAAa,EAAEZ,SAAS;AACxBa,IAAAA,cAAc,EAAEZ,UAAU;IAC1BL,YAAY;IACZ/D,QAAQ;AACRiE,IAAAA,OAAAA;GACD,CAAA;AACH;;AC5FA,MAAMgB,UAAU,GAAG9K,IAAA,IASb;EAAA,IATc;AAClB+K,IAAAA,SAAS,GAAG,EAAE;IACdC,WAAW;IACXC,aAAa;IACbC,cAAc;IACdC,aAAa;AACbC,IAAAA,eAAe,GAAG,0BAA0B;AAC5CC,IAAAA,mBAAmB,GAAG,IAAI;AAC1BC,IAAAA,qBAAqB,GAAG,IAAA;AAC1B,GAAC,GAAAtL,IAAA,CAAA;EACC,MAAM,CAACuL,UAAU,EAAEC,aAAa,CAAC,GAAGxK,QAAQ,CAAC,KAAK,CAAC,CAAA;EACnD,MAAM,CAACyK,QAAQ,EAAEC,WAAW,CAAC,GAAG1K,QAAQ,CAAC7B,SAAS,CAAC,CAAC;AACpD,EAAA,MAAMwM,QAAQ,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;EAC7B,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG9K,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3D,EAAA,MAAM+K,mBAAmB,GAAGH,MAAM,CAAC,KAAK,CAAC,CAAC;EAC1C,MAAM,CAACI,cAAc,EAAEC,iBAAiB,CAAC,GAAGjL,QAAQ,CAAC,CAAC,CAAC,CAAA;;AAEvD;EACA,MAAMkL,iBAAiB,GAAGN,MAAM,CAACO,KAAK,CAACC,WAAW,CAACC,MAAM,EAAE,CAAC,CAAA;EAC5D,MAAMC,iBAAiB,GAAGV,MAAM,CAACO,KAAK,CAACC,WAAW,CAACC,MAAM,EAAE,CAAC,CAAA;AAE5D,EAAA,MAAME,UAAU,GAAGA,MAAMf,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5C,EAAA,MAAMgB,UAAU,GAAGA,MAAMhB,aAAa,CAAC,KAAK,CAAC,CAAA;;AAE7C;AACA;AACA,EAAA,MAAMiB,cAAc,GAAGlH,OAAO,CAAC,MAAM;AACnC,IAAA,MAAMmH,WAAW,GAAG3B,SAAS,CAAC4B,IAAI,CAAClK,IAAI,IAAIA,IAAI,CAACmK,GAAG,KAAK,UAAU,CAAC,CAAA;AACnE,IAAA,MAAMC,SAAS,GAAG9B,SAAS,CAAC4B,IAAI,CAAClK,IAAI,IAAIA,IAAI,CAACmK,GAAG,KAAK,QAAQ,CAAC,CAAA;IAE/D,IAAIF,WAAW,IAAIG,SAAS,EAAE;AAC5B,MAAA,OAAO9B,SAAS,CAAA;AAClB,KAAA;AAEA,IAAA,MAAM+B,YAAY,GAAG/B,SAAS,CAACgC,SAAS,CAACtK,IAAI,IAAIA,IAAI,CAACmK,GAAG,KAAK,SAAS,CAAC,CAAA;;AAExE;AACA,IAAA,IAAIE,YAAY,KAAK,CAAC,CAAC,EAAE;MACvB,MAAME,UAAU,GAAG,EAAE,CAAA;MACrB,IAAIjC,SAAS,CAAC7L,MAAM,GAAG,CAAC,EAAE8N,UAAU,CAAC3H,IAAI,CAAC;AAAE4B,QAAAA,IAAI,EAAE,SAAA;AAAU,OAAC,CAAC,CAAA;AAC9D,MAAA,IAAI,CAACyF,WAAW,EAAEM,UAAU,CAAC3H,IAAI,CAAC;AAAEuH,QAAAA,GAAG,EAAE,UAAU;AAAEzE,QAAAA,KAAK,EAAE,sBAAA;AAAuB,OAAC,CAAC,CAAA;AACrF,MAAA,IAAI,CAAC0E,SAAS,EAAEG,UAAU,CAAC3H,IAAI,CAAC;AAAEuH,QAAAA,GAAG,EAAE,QAAQ;AAAEzE,QAAAA,KAAK,EAAE,iBAAA;AAAkB,OAAC,CAAC,CAAA;AAC5E,MAAA,OAAO,CAAC,GAAG4C,SAAS,EAAE,GAAGiC,UAAU,CAAC,CAAA;AACtC,KAAA;;AAEA;IACA,MAAMC,aAAa,GAAGlC,SAAS,CAACmC,KAAK,CAAC,CAAC,EAAEJ,YAAY,CAAC,CAAA;AACtD,IAAA,MAAMK,WAAW,GAAGpC,SAAS,CAAC+B,YAAY,CAAC,CAAA;IAC3C,MAAMM,YAAY,GAAGrC,SAAS,CAACmC,KAAK,CAACJ,YAAY,GAAG,CAAC,CAAC,CAAA;IAEtD,MAAMO,aAAa,GAAG,EAAE,CAAA;;AAExB;AACA,IAAA,IAAIJ,aAAa,CAAC/N,MAAM,GAAG,CAAC,IAAI+N,aAAa,CAACA,aAAa,CAAC/N,MAAM,GAAG,CAAC,CAAC,CAAC+H,IAAI,KAAK,SAAS,EAAE;MAC1FoG,aAAa,CAAChI,IAAI,CAAC;AAAE4B,QAAAA,IAAI,EAAE,SAAA;AAAU,OAAC,CAAC,CAAA;AACzC,KAAA;;AAEA;AACA,IAAA,IAAI,CAACyF,WAAW,EAAEW,aAAa,CAAChI,IAAI,CAAC;AAAEuH,MAAAA,GAAG,EAAE,UAAU;AAAEzE,MAAAA,KAAK,EAAE,sBAAA;AAAuB,KAAC,CAAC,CAAA;AACxF,IAAA,IAAI,CAAC0E,SAAS,EAAEQ,aAAa,CAAChI,IAAI,CAAC;AAAEuH,MAAAA,GAAG,EAAE,QAAQ;AAAEzE,MAAAA,KAAK,EAAE,iBAAA;AAAkB,KAAC,CAAC,CAAA;;AAE/E;IACAkF,aAAa,CAAChI,IAAI,CAAC;AAAE4B,MAAAA,IAAI,EAAE,SAAA;AAAU,KAAC,CAAC,CAAA;IAEvC,OAAO,CAAC,GAAGgG,aAAa,EAAE,GAAGI,aAAa,EAAEF,WAAW,EAAE,GAAGC,YAAY,CAAC,CAAA;AAC3E,GAAC,EAAE,CAACrC,SAAS,CAAC,CAAC,CAAA;EAEf,MAAMuC,eAAe,GAAGC,KAAA,IAAa;IAAA,IAAZ;AAAEX,MAAAA,GAAAA;AAAI,KAAC,GAAAW,KAAA,CAAA;AAC9B,IAAA,QAAQX,GAAG;AACT,MAAA,KAAK,UAAU;AACbY,QAAAA,UAAU,EAAE,CAAA;AACZ,QAAA,OAAA;AACF,MAAA,KAAK,QAAQ;AACXC,QAAAA,QAAQ,EAAE,CAAA;AACV,QAAA,OAAA;AACF,MAAA;AACE;AACA,QAAA,IAAIzC,WAAW,EAAE;UACfA,WAAW,CAAC4B,GAAG,CAAC,CAAA;AAClB,SAAC,MAAM;AACLrL,UAAAA,OAAO,CAACmM,IAAI,CAAA,oBAAA,CAAA/M,MAAA,CAAsBiM,GAAG,iCAA8B,CAAC,CAAA;AACtE,SAAA;AACJ,KAAA;GACD,CAAA;AAED,EAAA,MAAMY,UAAU,GAAG,YAAY;IAC7B,IAAI,CAACvC,aAAa,EAAE;AAClB1J,MAAAA,OAAO,CAACD,KAAK,CAAC,2DAA2D,CAAC,CAAA;AAC1EH,MAAAA,OAAO,CAACG,KAAK,CAAC,uCAAuC,CAAC,CAAA;AACtD,MAAA,OAAA;AACF,KAAA;IAEA,IAAI;AACF,MAAA,MAAMqM,GAAG,GAAG,MAAM1C,aAAa,EAAE,CAAA;AAEjC,MAAA,IAAI0C,GAAG,CAACjK,MAAM,KAAK,GAAG,EAAE;QACtB,MAAM,IAAIkK,KAAK,CAAAjN,0BAAAA,CAAAA,MAAA,CAA4BgN,GAAG,CAACjK,MAAM,CAAE,CAAC,CAAA;AAC1D,OAAA;;AAEA;MACA,IAAImK,QAAQ,GAAG,eAAe,CAAA;MAC9B,MAAMC,kBAAkB,GAAGH,GAAG,CAACI,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAA;;AAEnE;AACA,MAAA,IAAID,kBAAkB,EAAE;AACtB,QAAA,MAAME,aAAa,GAAGF,kBAAkB,CAACG,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC9E,IAAID,aAAa,aAAbA,aAAa,KAAA,KAAA,CAAA,IAAbA,aAAa,CAAG,CAAC,CAAC,EAAE;UACtBH,QAAQ,GAAGK,kBAAkB,CAACF,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAA;AACF,OAAA;;AAEA;MACA,MAAMG,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACT,GAAG,CAAC7L,IAAI,CAAC,EAAE;AAAEmF,QAAAA,IAAI,EAAE,0BAAA;AAA2B,OAAC,CAAC,CAAA;MACvE,MAAMoH,GAAG,GAAGC,MAAM,CAACC,GAAG,CAACC,eAAe,CAACL,IAAI,CAAC,CAAA;;AAE5C;AACA,MAAA,MAAMM,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC,CAAA;AACxCF,MAAAA,IAAI,CAACzG,KAAK,CAAC4G,OAAO,GAAG,MAAM,CAAA;MAC3BH,IAAI,CAACI,IAAI,GAAGR,GAAG,CAAA;MACfI,IAAI,CAAC/F,MAAM,GAAG,QAAQ,CAAA;MACtB+F,IAAI,CAACK,QAAQ,GAAGjB,QAAQ,CAAA;AACxBa,MAAAA,QAAQ,CAACK,IAAI,CAACC,WAAW,CAACP,IAAI,CAAC,CAAA;MAC/BA,IAAI,CAACQ,KAAK,EAAE,CAAA;;AAEZ;AACAR,MAAAA,IAAI,CAACS,UAAU,CAACC,WAAW,CAACV,IAAI,CAAC,CAAA;AACjCH,MAAAA,MAAM,CAACC,GAAG,CAACa,eAAe,CAACf,GAAG,CAAC,CAAA;KAChC,CAAC,OAAO/M,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,kBAAkB,EAAEA,KAAK,CAAC,CAAA;AACxCH,MAAAA,OAAO,CAACG,KAAK,CAAC,iBAAiB,CAAC,CAAA;AAClC,KAAA;GACD,CAAA;EAED,MAAMmM,QAAQ,GAAGA,MAAM;AACrB,IAAA,IAAI9B,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,eAARA,QAAQ,CAAEjJ,OAAO,EAAE;AACrBiJ,MAAAA,QAAQ,CAACjJ,OAAO,CAACuM,KAAK,EAAE,CAAA;AAC1B,KAAA;GACD,CAAA;AAED,EAAA,MAAMI,aAAa,GAAG,MAAO3N,KAAK,IAAK;IACrC,IAAI,CAACwJ,cAAc,EAAE;AACnB3J,MAAAA,OAAO,CAACD,KAAK,CAAC,0DAA0D,CAAC,CAAA;AACzEH,MAAAA,OAAO,CAACG,KAAK,CAAC,qCAAqC,CAAC,CAAA;AACpD,MAAA,OAAA;AACF,KAAA;IAEA,IAAI;AAAA,MAAA,IAAAgO,mBAAA,CAAA;AACF,MAAA,MAAMC,IAAI,GAAA,CAAAD,mBAAA,GAAG5N,KAAK,CAACgH,MAAM,CAAC8G,KAAK,cAAAF,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAlBA,mBAAA,CAAqB,CAAC,CAAC,CAAA;MACpC,IAAI,CAACC,IAAI,EAAE,OAAA;AAEXhD,MAAAA,UAAU,EAAE,CAAA;MACZT,gBAAgB,CAAC,cAAc,CAAC,CAAA;AAChCG,MAAAA,iBAAiB,CAAC,CAAC,CAAC,CAAC;;AAErB,MAAA,MAAMwD,QAAQ,GAAG,IAAIC,QAAQ,EAAE,CAAA;AAC/BD,MAAAA,QAAQ,CAACE,MAAM,CAAC,MAAM,EAAEJ,IAAI,CAAC,CAAA;MAE7BxD,mBAAmB,CAACrJ,OAAO,GAAG,KAAK,CAAA;;AAEnC;MACAwI,cAAc,CAACuE,QAAQ,EAAE;QACvBG,gBAAgB,EAAGC,aAAa,IAAK;AACnC,UAAA,MAAMC,gBAAgB,GAAGtQ,IAAI,CAACuQ,KAAK,CAChCF,aAAa,CAACG,MAAM,GAAG,GAAG,GAAIH,aAAa,CAAC1L,KAC/C,CAAC,CAAA;AACD8H,UAAAA,iBAAiB,CAAC6D,gBAAgB,CAAC,CAAC;;UAEpC,IAAIA,gBAAgB,KAAK,GAAG,EAAE;YAC5B/D,mBAAmB,CAACrJ,OAAO,GAAG,IAAI,CAAA;AAClC;AACAuN,YAAAA,UAAU,CAAC,MAAM;cACfvE,WAAW,CAACJ,qBAAqB,CAAC,CAAA;cAClCQ,gBAAgB,CAAC,cAAc,CAAC,CAAA;aACjC,EAAET,mBAAmB,CAAC,CAAA;AACzB,WAAA;SACD;AACD6E,QAAAA,WAAW,EAAEhE,iBAAiB,CAACxJ,OAAO,CAACyN,KAAAA;AACzC,OAAC,CAAC,CAAA;;AAEF;MACA,IAAIxE,QAAQ,CAACjJ,OAAO,EAAEiJ,QAAQ,CAACjJ,OAAO,CAACoC,KAAK,GAAG,EAAE,CAAA;KAClD,CAAC,OAAOxD,KAAK,EAAE;AACd,MAAA,IAAI,CAAC6K,KAAK,CAACiE,QAAQ,CAAC9O,KAAK,CAAC,EAAE;AAC1BC,QAAAA,OAAO,CAACD,KAAK,CAAC,eAAe,EAAEA,KAAK,CAAC,CAAA;AACrCH,QAAAA,OAAO,CAACG,KAAK,CAAC,eAAe,CAAC,CAAA;AAChC,OAAA;AACA+O,MAAAA,aAAa,EAAE,CAAA;AACjB,KAAA;GACD,CAAA;AAED,EAAA,MAAMC,kBAAkB,GAAG,YAAY;IACrC,IAAI,CAACnF,aAAa,EAAE;AAClB5J,MAAAA,OAAO,CAACD,KAAK,CAAC,wDAAwD,CAAC,CAAA;AACvE+O,MAAAA,aAAa,EAAE,CAAA;AACf,MAAA,OAAA;AACF,KAAA;IAEA,IAAI;AACF,MAAA,MAAME,QAAQ,GAAG,MAAMpF,aAAa,CAAC;AACnC+E,QAAAA,WAAW,EAAE5D,iBAAiB,CAAC5J,OAAO,CAACyN,KAAAA;AACzC,OAAC,CAAC,CAAA;MAEF,IAAI,CAAAI,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAARA,QAAQ,CAAE7M,MAAM,MAAK,GAAG,EAAE;QAC5B,MAAM;UAAEyC,IAAI;AAAEhF,UAAAA,OAAO,EAAEoF,aAAAA;SAAe,GAAGgK,QAAQ,CAACzO,IAAI,CAAA;;AAEtD;AACA,QAAA,QAAQqE,IAAI;AACV,UAAA,KAAK,GAAG;AAAE;AACRhF,YAAAA,OAAO,CAACqP,OAAO,CAACjK,aAAa,EAAE,GAAG,EAAE,MAAM;AACxC8J,cAAAA,aAAa,EAAE,CAAA;AACf/B,cAAAA,MAAM,CAACmC,QAAQ,CAACC,MAAM,EAAE,CAAA;AAC1B,aAAC,CAAC,CAAA;AACF,YAAA,MAAA;AAEF,UAAA,KAAK,GAAG;AAAE;AACR;AACA,YAAA,MAAA;UACF,KAAK,GAAG,CAAC;AACT,UAAA,KAAK,GAAG;AAAE;AACRvP,YAAAA,OAAO,CAACG,KAAK,CAACiF,aAAa,CAAC,CAAA;AAC5B8J,YAAAA,aAAa,EAAE,CAAA;AACf,YAAA,MAAA;AAEF,UAAA;AACE,YAAA,MAAA;AACJ,SAAA;AACF,OAAA;KACD,CAAC,OAAO/O,KAAK,EAAE;AACd,MAAA,IAAI6K,KAAK,CAACiE,QAAQ,CAAC9O,KAAK,CAAC,EAAE;AACzBC,QAAAA,OAAO,CAAC7B,GAAG,CAAC,yBAAyB,CAAC,CAAA;AACxC,OAAC,MAAM;AACL6B,QAAAA,OAAO,CAACD,KAAK,CAAC,sBAAsB,EAAEA,KAAK,CAAC,CAAA;AAC5C;AACF,OAAA;AACF,KAAA;GACD,CAAA;EAED,MAAM+O,aAAa,GAAGA,MAAM;AAC1B;AACAnE,IAAAA,iBAAiB,CAACxJ,OAAO,CAACiO,MAAM,CAAC,oBAAoB,CAAC,CAAA;AACtDrE,IAAAA,iBAAiB,CAAC5J,OAAO,CAACiO,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAEtDzE,iBAAiB,CAACxJ,OAAO,GAAGyJ,KAAK,CAACC,WAAW,CAACC,MAAM,EAAE,CAAA;IACtDC,iBAAiB,CAAC5J,OAAO,GAAGyJ,KAAK,CAACC,WAAW,CAACC,MAAM,EAAE,CAAA;;AAEtD;IACAX,WAAW,CAACvM,SAAS,CAAC,CAAA;IACtB2M,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACxBU,IAAAA,UAAU,EAAE,CAAA;GACb,CAAA;;AAED;AACAoE,EAAAA,WAAW,CAACN,kBAAkB,EAAE7E,QAAQ,CAAC,CAAA;;AAEzC;AACAvB,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,OAAO,MAAM;AACXgC,MAAAA,iBAAiB,CAACxJ,OAAO,CAACiO,MAAM,EAAE,CAAA;AAClCrE,MAAAA,iBAAiB,CAAC5J,OAAO,CAACiO,MAAM,EAAE,CAAA;KACnC,CAAA;GACF,EAAE,EAAE,CAAC,CAAA;EAEN,MAAME,cAAc,gBAClBtQ,IAAA,CAAA,KAAA,EAAA;IAAAJ,QAAA,EAAA,cACEE,GAAA,CAACyQ,QAAQ,EAAA;AACPC,MAAAA,IAAI,EAAE;AACJ3L,QAAAA,KAAK,EAAEqH,cAAc;AACrBuE,QAAAA,OAAO,EAAE1D,eAAAA;OACT;MACF2D,OAAO,EAAE,CAAC,OAAO,CAAE;AAAA9Q,MAAAA,QAAA,eAEnBE,GAAA,CAAA,GAAA,EAAA;AAAG2Q,QAAAA,OAAO,EAAGvI,CAAC,IAAKA,CAAC,CAACyI,cAAc,EAAG;AAAA/Q,QAAAA,QAAA,eACpCE,GAAA,CAAA,GAAA,EAAA;AAAGK,UAAAA,SAAS,EAAC,+DAAA;SAAmE,CAAA;OAC/E,CAAA;KACK,CAAC,eACXL,GAAA,CAAA,OAAA,EAAA;AACE8Q,MAAAA,GAAG,EAAExF,QAAS;AACd1E,MAAAA,IAAI,EAAC,MAAM;AACXuB,MAAAA,QAAQ,EAAE6G,aAAc;AACxB3O,MAAAA,SAAS,EAAC,QAAQ;AAClB0Q,MAAAA,MAAM,EAAEhG,eAAAA;AAAgB,KACzB,CAAC,eACF/K,GAAA,CAACgR,IAAI,EAAA;AACHC,MAAAA,QAAQ,EAAE/F,UAAW;MACrBgG,SAAS,eAAElR,GAAA,CAACmR,eAAe,EAAA;AAACxJ,QAAAA,KAAK,EAAE;AAAEyJ,UAAAA,QAAQ,EAAE,EAAA;SAAK;QAACC,IAAI,EAAA,IAAA;AAAA,OAAE,CAAE;AAC7DC,MAAAA,GAAG,EACD9F,aAAa,KAAK,cAAc,GAAAlL,EAAAA,CAAAA,MAAA,CACzBkL,aAAa,EAAAlL,GAAAA,CAAAA,CAAAA,MAAA,CAAIqL,cAAc,SAClCH,aACL;AACD+F,MAAAA,IAAI,EAAC,OAAO;MACZC,UAAU,EAAA,IAAA;AAAA,KACX,CAAC,CAAA;AAAA,GACC,CACN,CAAA;EAED,OAAO,CAAChB,cAAc,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,mBAAe/F,UAAU;;AC7SzB,MAAMgH,mBAAmB,GAAG,YAOjB;EAAA,IAPkB;IAC3BC,UAAU;IACVC,SAAS;AACTC,IAAAA,YAAY,GAAG,SAAS;AACxBlM,IAAAA,UAAU,GAAG,IAAI;AACjBD,IAAAA,MAAM,GAAG,KAAK;AACdoM,IAAAA,GAAAA;AACF,GAAC,GAAAjT,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE,CAAA;EACJ,MAAM;AAAEyL,IAAAA,KAAK,EAAEyH,SAAAA;AAAU,GAAC,GAAGlM,GAAG,CAACC,MAAM,EAAE,CAAA;AAEzC,EAAA,MAAMkM,QAAQ,GAAGlR,WAAW,CAAEmR,MAAM,IAAK;IACvC,IAAI;MACFF,SAAS,CAACG,OAAO,CAAC;AAChBC,QAAAA,IAAI,eAAElS,GAAA,CAACmS,uBAAuB,IAAE,CAAC;QACjCvS,KAAK,EAAA,EAAA,CAAAU,MAAA,CAAKsR,YAAY,OAAAtR,MAAA,CAAI0R,MAAM,EAAG,GAAA,CAAA;QACnCtM,UAAU;QACVD,MAAM;QACNF,IAAI,EAAEA,MAAM;AACV,UAAA,IAAIyM,MAAM,KAAK,UAAU,IAAIN,UAAU,EAAE;AACvCA,YAAAA,UAAU,EAAE,CAAA;AACd,WAAC,MAAM,IAAIM,MAAM,KAAK,SAAS,IAAIL,SAAS,EAAE;AAC5CA,YAAAA,SAAS,EAAE,CAAA;AACb,WAAA;;AAEA;AACA,UAAA,IAAI,OAAOE,GAAG,KAAK,UAAU,EAAE;AAC7BA,YAAAA,GAAG,EAAE,CAAA;AACP,WAAA;AACF,SAAA;AACF,OAAC,CAAC,CAAA;KACH,CAAC,OAAO5Q,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAAX,EAAAA,CAAAA,MAAA,CAAI0R,MAAM,CAACI,WAAW,EAAE,EAAYnR,UAAAA,CAAAA,EAAAA,KAAK,CAAC,CAAA;AACzD,KAAA;AACF,GAAC,EAAE,CAAC6Q,SAAS,EAAEF,YAAY,EAAElM,UAAU,EAAED,MAAM,EAAEiM,UAAU,EAAEC,SAAS,CAAC,CAAC,CAAA;AAExE,EAAA,MAAMU,YAAY,GAAGxR,WAAW,CAAC,MAAM,CACrC;AACE0L,IAAAA,GAAG,EAAE,UAAU;AACfzE,IAAAA,KAAK,EAAE,WAAA;AACT,GAAC,EACD;AACEyE,IAAAA,GAAG,EAAE,SAAS;AACdzE,IAAAA,KAAK,EAAE,SAAA;GACR,CACF,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMmF,eAAe,GAAGpM,WAAW,CAAClB,IAAA,IAAa;IAAA,IAAZ;AAAE4M,MAAAA,GAAAA;AAAI,KAAC,GAAA5M,IAAA,CAAA;IAC1CoS,QAAQ,CAACxF,GAAG,CAAC,CAAA;AACf,GAAC,EAAE,CAACwF,QAAQ,CAAC,CAAC,CAAA;EAEd,OAAO;IACLrH,SAAS,EAAE2H,YAAY,EAAE;AACzBpF,IAAAA,eAAAA;GACD,CAAA;AACH,CAAC,CAAA;AAED,4BAAewE,mBAAmB;;AC1DlC,IAAI,eAAe,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC;AAC/D;AACA,IAAI,YAAY,GAAG,CAAC,KAAK,KAAK,KAAK,YAAY,IAAI,CAAC;AACpD;AACA,IAAI,iBAAiB,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC;AACjD;AACA,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC1D,IAAI,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACzB,IAAI,YAAY,CAAC,KAAK,CAAC;AACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB;AACA,IAAI,aAAa,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM;AAC9D,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;AACnC,UAAU,KAAK,CAAC,MAAM,CAAC,OAAO;AAC9B,UAAU,KAAK,CAAC,MAAM,CAAC,KAAK;AAC5B,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,iBAAiB,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC;AACxF;AACA,IAAI,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E;AACA,IAAI,aAAa,GAAG,CAAC,UAAU,KAAK;AACpC,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC;AACrF,IAAI,QAAQ,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;AACtF,CAAC,CAAC;AACF;AACA,IAAI,KAAK,GAAG,OAAO,MAAM,KAAK,WAAW;AACzC,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW;AAC7C,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AACpC;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,MAAM,kBAAkB,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,IAAI,YAAY,QAAQ,GAAG,KAAK,CAAC;AAClG,IAAI,IAAI,IAAI,YAAY,IAAI,EAAE;AAC9B,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK;AACL,SAAS,IAAI,EAAE,KAAK,KAAK,IAAI,YAAY,IAAI,IAAI,kBAAkB,CAAC,CAAC;AACrE,SAAS,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;AACrC,QAAQ,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC9C,YAAY,IAAI,GAAG,IAAI,CAAC;AACxB,SAAS;AACT,aAAa;AACb,YAAY,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpC,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC9C,oBAAoB,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C;AACA,IAAI,WAAW,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,SAAS,CAAC;AAC7C;AACA,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC3E;AACA,IAAI,YAAY,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrF;AACA,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK;AAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,iBAAiB,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACjJ,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,MAAM;AACnD,UAAU,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnC,cAAc,YAAY;AAC1B,cAAc,MAAM,CAAC,IAAI,CAAC;AAC1B,UAAU,MAAM,CAAC;AACjB,CAAC,CAAC;AACF;AACA,IAAI,SAAS,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,SAAS,CAAC;AACtD;AACA,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK;AACnC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACnB,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/D,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,IAAI,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;AACjC,IAAI,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC7B,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpC,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC7B,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACzC,YAAY,QAAQ;AACpB,gBAAgB,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7D,sBAAsB,QAAQ;AAC9B,sBAAsB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAClD,0BAA0B,EAAE;AAC5B,0BAA0B,EAAE,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW,EAAE;AACjF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC/B,QAAQ,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAK;AACL,CAAC,CAAC;AACF;AACA,MAAM,MAAM,GAAG;AACf,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,SAAS,EAAE,UAAU;AACzB,IAAI,MAAM,EAAE,QAAQ;AACpB,CAAC,CAAC;AACF,MAAM,eAAe,GAAG;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,SAAS,EAAE,WAAW;AAC1B,IAAI,GAAG,EAAE,KAAK;AACd,CAAC,CAAC;AAUF;AACA,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClD,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAmC/D;AACA,IAAI,iBAAiB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,KAAK;AACpF,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,aAAa,EAAE,OAAO,CAAC,cAAc;AAC7C,KAAK,CAAC;AACN,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACjC,QAAQ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;AAC3C,YAAY,GAAG,EAAE,MAAM;AACvB,gBAAgB,MAAM,IAAI,GAAG,GAAG,CAAC;AACjC,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,GAAG,EAAE;AAC3E,oBAAoB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC;AACnF,iBAAiB;AACjB,gBAAgB,mBAAmB,KAAK,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1E,gBAAgB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACvC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AACF;AACA,MAAM,yBAAyB,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;AACrC,IAAI,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;AAC7E,IAAI,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC5E,IAAI,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC;AAC9C,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,WAAW,EAAE,KAAK;AAC1B,QAAQ,aAAa,EAAE,KAAK;AAC5B,QAAQ,gBAAgB,EAAE,KAAK;AAC/B,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,MAAM,EAAE,KAAK;AACrB,KAAK,CAAC,CAAC;AACP,IAAI,yBAAyB,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC;AACvD,QAAQ,IAAI;AACZ,QAAQ,SAAS,EAAE,oBAAoB,CAAC,OAAO;AAC/C,QAAQ,KAAK;AACb,QAAQ,QAAQ,EAAE,CAAC,SAAS,KAAK;AACjC,YAAY,CAAC,QAAQ;AACrB,gBAAgB,eAAe,CAAC;AAChC,oBAAoB,GAAG,OAAO,CAAC,UAAU;AACzC,oBAAoB,GAAG,SAAS;AAChC,iBAAiB,CAAC,CAAC;AACnB,SAAS;AACT,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACjC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM;AAC1B,QAAQ,oBAAoB,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAClB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACjI,CAAC;AACD;AACA,IAAI,QAAQ,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,CAAC;AACpD;AACA,IAAI,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,KAAK;AACjF,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,QAAQ,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,OAAO,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AAChF,YAAY,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AACzC,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AACF;AACA,IAAI,WAAW,GAAG,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9E;AACA,SAAS,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,OAAO,EAAE,EAAE;AACxE,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;AACtD,QAAQ,OAAO,OAAO,KAAK,OAAO,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;AACxD,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;AACvC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC1E,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AAC7B,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAClC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,KAAK,EAAE;AAC3B,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACtC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;AACzD,iBAAiB,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClD,iBAAiB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC;AAC3D,kBAAkB,IAAI,KAAK,IAAI,EAAE;AACjC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;AACrC,IAAI,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;AACrG,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACrD,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,IAAI,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvD,IAAI,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,IAAI,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAClH,IAAI,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAC1H,IAAI,yBAAyB,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC;AACvD,QAAQ,IAAI;AACZ,QAAQ,SAAS,EAAE;AACnB,YAAY,MAAM,EAAE,IAAI;AACxB,SAAS;AACT,QAAQ,KAAK;AACb,QAAQ,QAAQ,EAAE,CAAC,SAAS,KAAK;AACjC,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;AACpJ,gBAAgB,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtC,oBAAoB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC5E,oBAAoB,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE;AACpF,wBAAwB,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACxD,wBAAwB,kBAAkB,CAAC,OAAO,GAAG,kBAAkB,CAAC;AACxE,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,WAAW,CAAC,UAAU,CAAC,CAAC;AAC5C,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1C,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACtD,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;AACrC,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,GAAG,GAAG,KAAK,CAAC;AACjG,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxE,IAAI,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AACjK,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC;AAC3B,QAAQ,OAAO;AACf,QAAQ,IAAI;AACZ,QAAQ,YAAY,EAAE,gBAAgB;AACtC,QAAQ,KAAK,EAAE,IAAI;AACnB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC;AACnC,QAAQ,OAAO;AACf,QAAQ,IAAI;AACZ,QAAQ,KAAK,EAAE,IAAI;AACnB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/D,QAAQ,GAAG,KAAK,CAAC,KAAK;AACtB,QAAQ,KAAK;AACb,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC1E,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE;AACvE,QAAQ,OAAO,EAAE;AACjB,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;AACpD,SAAS;AACT,QAAQ,OAAO,EAAE;AACjB,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;AACzD,SAAS;AACT,QAAQ,SAAS,EAAE;AACnB,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC;AAC3D,SAAS;AACT,QAAQ,YAAY,EAAE;AACtB,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAC9D,SAAS;AACT,QAAQ,KAAK,EAAE;AACf,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,GAAG,EAAE,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;AAClD,SAAS;AACT,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClF,QAAQ,MAAM,EAAE;AAChB,YAAY,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;AACvC,YAAY,IAAI,EAAE,IAAI;AACtB,SAAS;AACT,QAAQ,IAAI,EAAE,MAAM,CAAC,MAAM;AAC3B,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAChB,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;AACzE,QAAQ,MAAM,EAAE;AAChB,YAAY,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;AACjD,YAAY,IAAI,EAAE,IAAI;AACtB,SAAS;AACT,QAAQ,IAAI,EAAE,MAAM,CAAC,IAAI;AACzB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK;AAC3C,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,IAAI,GAAG,EAAE;AAC1B,YAAY,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG;AAC3B,gBAAgB,KAAK,EAAE,MAAM,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE;AACrD,gBAAgB,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AACxD,gBAAgB,iBAAiB,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC9E,gBAAgB,cAAc,EAAE,MAAM,GAAG,CAAC,cAAc,EAAE;AAC1D,aAAa,CAAC;AACd,SAAS;AACT,KAAK,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO;AACvC,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ;AACrD,cAAc,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,QAAQ,EAAE;AAC1D,cAAc,EAAE,CAAC;AACjB,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,QAAQ,GAAG;AACX,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5E,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM;AAC1B,QAAQ,MAAM,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;AAC7F,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;AACnC,YAAY,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClD,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvD,kBAAkB,EAAE,CAAC;AACrB,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;AAC/C,YAAY,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE;AACnC,gBAAgB,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;AACvC,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,sBAAsB,EAAE;AACpC,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACjF,YAAY,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACrD,YAAY,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE;AAC7D,gBAAgB,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,aAAa;AACb,SAAS;AACT,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChD,QAAQ,OAAO,MAAM;AACrB,YAAY,CAAC,YAAY;AACzB,kBAAkB,sBAAsB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;AAClE,kBAAkB,sBAAsB;AACxC,kBAAkB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1C,kBAAkB,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAS,CAAC;AACV,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACxD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM;AAC1B,QAAQ,OAAO,CAAC,iBAAiB,CAAC;AAClC,YAAY,QAAQ;AACpB,YAAY,IAAI;AAChB,SAAS,CAAC,CAAC;AACX,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAClC,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO;AAChC,QAAQ,KAAK;AACb,QAAQ,SAAS;AACjB,QAAQ,UAAU;AAClB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AACxC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;AC9jBhE;AACO,eAAea,YAAYA,GAAG;EACnC,OAAOC,OAAO,CAAC,mBAAmB,EAAE;AAClCC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAC,CAAC,CAAA;AACJ;;ACAaC,MAAAA,WAAW,GAAG,YAAgB;AAAA,EAAA,IAAfC,KAAK,GAAA9T,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;EACpC,MAAM,CAAC+T,OAAO,EAAEC,UAAU,CAAC,GAAGjS,QAAQ,CAAC,EAAE,CAAC,CAAA;EAE1C,MAAM;IACJ2G,IAAI;AACJQ,IAAAA,KAAK,GAAG,OAAO;IACf+K,OAAO;IACPC,WAAW;AACXC,IAAAA,YAAY,GAAGT,YAAY;IAC3BU,aAAa,GAAG,EAAE;IAClBC,WAAW,GAAG,EAAE;AAChBC,IAAAA,UAAU,GAAG;AAAEpL,MAAAA,KAAK,EAAE,OAAO;AAAErD,MAAAA,KAAK,EAAE,OAAA;AAAQ,KAAA;AAChD,GAAC,GAAGiO,KAAK,CAAA;AAET7I,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,MAAMsJ,WAAW,GAAG,YAAY;MAC9B,IAAI;AACF,QAAA,MAAM7F,GAAG,GAAG,MAAMyF,YAAY,EAAE,CAAA;AAChC,QAAA,IAAIzF,GAAG,KAAHA,IAAAA,IAAAA,GAAG,eAAHA,GAAG,CAAEzO,MAAM,EAAE;UACf+T,UAAU,CAACtF,GAAG,CAAC,CAAA;AACjB,SAAA;OACD,CAAC,OAAOrM,KAAK,EAAE;AACdC,QAAAA,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC,CAAA;AACnD,OAAA;KACD,CAAA;AAEDkS,IAAAA,WAAW,EAAE,CAAA;AACf,GAAC,EAAE,CAACJ,YAAY,CAAC,CAAC,CAAA;AAElB,EAAA,MAAMK,cAAc,GAAGA,mBACrBpT,GAAA,CAACqT,UAAU,EAAA;AACT/L,IAAAA,IAAI,EAAEA,IAAK;AACXuL,IAAAA,OAAO,EAAEA,OAAQ;AACjBS,IAAAA,MAAM,EAAE3T,IAAA,IAAA;MAAA,IAAC;AAAEsC,QAAAA,KAAAA;AAAM,OAAC,GAAAtC,IAAA,CAAA;MAAA,oBAChBK,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA7G,cAAA,CAAAA,cAAA,CAAA;AACR8G,QAAAA,KAAK,EAAEA,KAAAA;AAAM,OAAA,EACTkL,aAAa,CAAA,EAAA,EAAA,EAAA;AAAAlT,QAAAA,QAAA,eAEjBE,GAAA,CAACuT,MAAM,EAAAvS,cAAA,CAAAA,cAAA,CAAAA,cAAA,CACDiB,EAAAA,EAAAA,KAAK,GACLgR,WAAW,CAAA,EAAA,EAAA,EAAA;AACfrK,UAAAA,OAAO,EAAE+J,OAAQ;AACjBO,UAAAA,UAAU,EAAEA,UAAW;UACvBM,UAAU,EAAA,IAAA;UACVC,UAAU,EAAA,IAAA;AACVC,UAAAA,gBAAgB,EAAC,OAAO;AACxBvL,UAAAA,QAAQ,EAAEA,CAAC1D,KAAK,EAAEkP,MAAM,KAAK;AAC3B1R,YAAAA,KAAK,CAACkG,QAAQ,CAAC1D,KAAK,CAAC,CAAA;AACrBqO,YAAAA,WAAW,KAAXA,IAAAA,IAAAA,WAAW,KAAXA,KAAAA,CAAAA,IAAAA,WAAW,CAAGrO,KAAK,KAAK3F,SAAS,GAAGA,SAAS,GAAG6U,MAAM,CAAC,CAAA;WACvD;AACFlL,UAAAA,WAAW,EAAEwK,WAAW,CAACxK,WAAW,IAAI,qBAAA;SACzC,CAAA,CAAA;AAAC,OAAA,CACO,CAAC,CAAA;AAAA,KAAA;AACZ,GACH,CACF,CAAA;AAED,EAAA,OAAO2K,cAAc,CAAA;AACvB;;AC3DA,MAAMQ,iBAAiB,GAAGjU,IAAA,IAA8C;EAAA,IAAAkU,qBAAA,EAAAC,oBAAA,CAAA;EAAA,IAA7C;IAAEC,MAAM;IAAEC,UAAU;AAAEC,IAAAA,WAAW,GAAG,EAAC;AAAE,GAAC,GAAAtU,IAAA,CAAA;AACjE;AACA,EAAA,MAAMuU,kBAAkB,GAAG;AACzB5M,IAAAA,IAAI,EAAE;AAAEQ,MAAAA,KAAK,EAAE,MAAM;AAAEqM,MAAAA,OAAO,EAAE,IAAA;KAAM;AACtCC,IAAAA,EAAE,EAAE;AAAEtM,MAAAA,KAAK,EAAE,YAAY;AAAEqM,MAAAA,OAAO,EAAE,IAAA;KAAM;AAC1CE,IAAAA,OAAO,EAAE;AAAEvM,MAAAA,KAAK,EAAE,SAAS;AAAEqM,MAAAA,OAAO,EAAE,IAAA;AAAK,KAAA;GAC5C,CAAA;EAED,MAAMG,iBAAiB,GAAAtT,cAAA,CAAAA,cAAA,CAAAA,cAAA,CAAA,EAAA,EAClBkT,kBAAkB,CAAA,EAClBD,WAAW,CAAA,EAAA,EAAA,EAAA;AACdI,IAAAA,OAAO,EAAE;AACPvM,MAAAA,KAAK,EAAE,SAAS;MAChBqM,OAAO,EAAA,CAAAN,qBAAA,GAAA,CAAAC,oBAAA,GAAEG,WAAW,CAACI,OAAO,MAAAP,IAAAA,IAAAA,oBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqBK,OAAO,MAAA,IAAA,IAAAN,qBAAA,KAAA,KAAA,CAAA,GAAAA,qBAAA,GAAIK,kBAAkB,CAACG,OAAO,CAACF,OAAO;AAC7E,KAAA;GACD,CAAA,CAAA;EAED,oBACEjU,IAAA,CAAAC,QAAA,EAAA;AAAAL,IAAAA,QAAA,EACEE,cAAAA,GAAA,CAACuU,UAAU,CAACC,KAAK,EAAA;AACfC,MAAAA,KAAK,EAAE,CAAE;AACT9M,MAAAA,KAAK,EAAE;AACL4G,QAAAA,OAAO,EAAE,MAAM;AACfmG,QAAAA,cAAc,EAAE,eAAe;AAC/BC,QAAAA,UAAU,EAAE,QAAQ;AACpB/M,QAAAA,YAAY,EAAE,EAAA;OACd;AAAA9H,MAAAA,QAAA,EAEDiU,MAAAA;KACe,CAAC,EAClBC,UAAU,CAAC7R,GAAG,CAAC,CAACyS,KAAK,EAAExP,KAAK,kBAC3BlF,IAAA,CAAA,KAAA,EAAA;MAAAJ,QAAA,EAAA,CACGwU,iBAAiB,CAAChN,IAAI,CAAC6M,OAAO,iBAC7BnU,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AACRC,QAAAA,KAAK,EAAEwM,iBAAiB,CAAChN,IAAI,CAACQ,KAAM;AACpCR,QAAAA,IAAI,EAAE,CAACyM,MAAM,EAAE3O,KAAK,EAAE,cAAc,CAAE;QAAAtF,QAAA,eAEtCE,GAAA,CAACgI,KAAK,EAAA;UAACZ,QAAQ,EAAA,IAAA;SAAE,CAAA;AAAC,OACT,CACZ,EAEAkN,iBAAiB,CAACF,EAAE,CAACD,OAAO,iBAC3BnU,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AACRC,QAAAA,KAAK,EAAEwM,iBAAiB,CAACF,EAAE,CAACtM,KAAM;AAClCR,QAAAA,IAAI,EAAE,CAACyM,MAAM,EAAE3O,KAAK,EAAE,YAAY,CAAE;AAAAtF,QAAAA,QAAA,eAEpCE,GAAA,CAACgI,KAAK,EAAE,EAAA,CAAA;AAAC,OACA,CACZ,EAEAsM,iBAAiB,CAACD,OAAO,CAACF,OAAO,iBAChCnU,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AACRC,QAAAA,KAAK,EAAEwM,iBAAiB,CAACD,OAAO,CAACvM,KAAM;AACvCR,QAAAA,IAAI,EAAE,CAACyM,MAAM,EAAE3O,KAAK,EAAE,SAAS,CAAE;AAAAtF,QAAAA,QAAA,eAEjCE,GAAA,CAACgI,KAAK,EAAE,EAAA,CAAA;AAAC,OACA,CACZ,EAEA5C,KAAK,GAAG4O,UAAU,CAACnV,MAAM,GAAG,CAAC,iBAAImB,GAAA,CAAC6U,OAAO,EAAA;AAAClN,QAAAA,KAAK,EAAE;AAAEmN,UAAAA,WAAW,EAAE,EAAA;AAAG,SAAA;AAAE,OAAE,CAAC,CAAA;AAAA,KAAA,EA5BjEF,KAAK,CAAC1K,EAAE,IAAI9E,KA6BjB,CACN,CAAC,CAAA;AAAA,GACF,CAAC,CAAA;AAEP,CAAC,CAAA;AAED,MAAM2P,oBAAoB,GAAG7H,KAAA,IAevB;EAAA,IAfwB;IAC5BlG,IAAI;IACJgO,OAAO;IACPC,YAAY;AAAI;IAChBC,YAAY;AAAI;IAChBC,SAAS;AAAO;IAChBC,eAAe;IACfC,eAAe;IACfC,OAAO;IACPC,UAAU,GAAG,EAAE;IACfC,SAAS,GAAG,EAAE;IACdvB,WAAW,GAAG,EAAE;AAChBwB,IAAAA,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1BC,IAAAA,WAAW,GAAG;AAAEC,MAAAA,GAAG,EAAE,IAAI;AAAEC,MAAAA,IAAI,EAAE,KAAA;KAAO;AACxCC,IAAAA,aAAAA;AACF,GAAC,GAAA3I,KAAA,CAAA;EACC,MAAM;IAAEpM,OAAO;AAAEuJ,IAAAA,KAAAA;AAAM,GAAC,GAAGzE,GAAG,CAACC,MAAM,EAAE,CAAA;EACvC,MAAM,CAACiQ,IAAI,CAAC,GAAGzO,IAAI,CAAC0O,OAAO,EAAE,CAAA;EAE7B,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGtV,QAAQ,CAAC,EAAE,CAAC,CAAA;EAC5D,MAAM,CAACuV,UAAU,EAAEC,aAAa,CAAC,GAAGxV,QAAQ,CAAC,EAAE,CAAC,CAAA;EAChD,MAAM,CAACyV,aAAa,EAAEC,gBAAgB,CAAC,GAAG1V,QAAQ,CAAC,KAAK,CAAC,CAAA;EACzD,MAAM,CAAC2V,aAAa,EAAEC,gBAAgB,CAAC,GAAG5V,QAAQ,CAAC,KAAK,CAAC,CAAA;EAEzD,MAAM6V,oBAAoB,GAAGjL,MAAM,CAAC;AAClCkL,IAAAA,UAAU,EAAE,KAAK;AACjBC,IAAAA,cAAc,EAAE,KAAA;AAClB,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMC,mBAAmB,GAAGzR,OAAO,CAAC,MAAM;AACxC,IAAA,MAAM0R,MAAM,GAAA5V,cAAA,CAAA,EAAA,EAAQiT,WAAW,CAAE,CAAA;;AAEjC;IACA2C,MAAM,CAACjB,GAAG,GAAGiB,MAAM,CAACjB,GAAG,IAAI,EAAE,CAAA;IAC7BiB,MAAM,CAAChB,IAAI,GAAGgB,MAAM,CAAChB,IAAI,IAAI,EAAE,CAAA;AAE/B,IAAA,IAAIH,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC5BD,MAAAA,MAAM,CAACjB,GAAG,CAACtB,OAAO,GAAArT,cAAA,CAAAA,cAAA,CACZ4V,EAAAA,EAAAA,MAAM,CAACjB,GAAG,CAACtB,OAAO,IAAI,EAAE,CAAA,EAAA,EAAA,EAAA;QAC5BF,OAAO,EAAEuB,WAAW,CAACC,GAAAA;OACtB,CAAA,CAAA;AACH,KAAA;AAEA,IAAA,IAAIF,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7BD,MAAAA,MAAM,CAAChB,IAAI,CAACvB,OAAO,GAAArT,cAAA,CAAAA,cAAA,CACb4V,EAAAA,EAAAA,MAAM,CAAChB,IAAI,CAACvB,OAAO,IAAI,EAAE,CAAA,EAAA,EAAA,EAAA;QAC7BF,OAAO,EAAEuB,WAAW,CAACE,IAAAA;OACtB,CAAA,CAAA;AACH,KAAA;AAEA,IAAA,OAAOgB,MAAM,CAAA;GACd,EAAE,CAAC3C,WAAW,EAAEyB,WAAW,EAAED,QAAQ,CAAC,CAAC,CAAA;AAExC5L,EAAAA,SAAS,CAAC,MAAM;IACd,IAAI,CAAC7C,IAAI,EAAE,OAAA;AAEX,IAAA,MAAM8P,SAAS,GAAG,YAAY;AAC5B,MAAA,IAAIN,oBAAoB,CAACnU,OAAO,CAACoU,UAAU,EAAE,OAAA;MAE7C,IAAI;AACFD,QAAAA,oBAAoB,CAACnU,OAAO,CAACoU,UAAU,GAAG,IAAI,CAAA;AAE9C,QAAA,IAAItB,SAAS,EAAE;AACb;AACA,UAAA,MAAMyB,MAAM,GAAG,MAAMzB,SAAS,EAAE,CAAA;UAChC,IAAIM,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,IAAID,MAAM,CAACG,cAAc,EAAE;AACrDZ,YAAAA,aAAa,CAACS,MAAM,CAACG,cAAc,CAAC,CAAA;AACtC,WAAA;UACA,IAAItB,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,IAAID,MAAM,CAAC5C,UAAU,EAAE;AAClDiC,YAAAA,mBAAmB,CAACW,MAAM,CAAC5C,UAAU,CAAC,CAAA;AACxC,WAAA;AACF,SAAC,MAAM;UACL,MAAMgD,QAAQ,GAAG,EAAE,CAAA;AACnB,UAAA,IAAIvB,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC5BG,YAAAA,QAAQ,CAAChS,IAAI,CAACiQ,YAAY,EAAE,CAAC,CAAA;AAC/B,WAAA;AAEA,UAAA,IAAIQ,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7BG,YAAAA,QAAQ,CAAChS,IAAI,CAACkQ,YAAY,EAAE,CAAC,CAAA;AAC/B,WAAA;UAEA,MAAM+B,OAAO,GAAG,MAAMC,OAAO,CAACC,UAAU,CAACH,QAAQ,CAAC,CAAA;UAElD,IAAIvB,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,IAAI5B,YAAY,EAAE;AAC5C,YAAA,MAAMmC,SAAS,GAAGH,OAAO,CAAC,CAAC,CAAC,CAAA;AAC5B,YAAA,IAAIG,SAAS,CAAC/T,MAAM,KAAK,WAAW,EAAE;AACpC8S,cAAAA,aAAa,CAACiB,SAAS,CAAC3S,KAAK,IAAI,EAAE,CAAC,CAAA;AACtC,aAAA;AACF,WAAA;UAEA,IAAIgR,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,IAAI3B,YAAY,EAAE;AAC7C,YAAA,MAAMmC,SAAS,GAAG5B,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,GAAGI,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO,CAAC,CAAC,CAAC,CAAA;YACpE,IAAII,SAAS,CAAChU,MAAM,KAAK,WAAW,IAAIgU,SAAS,CAAC5S,KAAK,EAAE;cACvDwR,mBAAmB,CAACoB,SAAS,CAAC5S,KAAK,CAAC6S,iBAAiB,IAAI,EAAE,CAAC,CAAA;AAC9D,aAAA;AACF,WAAA;AACF,SAAA;QAEAf,gBAAgB,CAAC,IAAI,CAAC,CAAA;OACvB,CAAC,OAAOtV,KAAK,EAAE;AACdC,QAAAA,OAAO,CAACD,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC,CAAA;AAC7CuV,QAAAA,oBAAoB,CAACnU,OAAO,CAACoU,UAAU,GAAG,KAAK,CAAC;AAClD,OAAA;KACD,CAAA;AAEDK,IAAAA,SAAS,EAAE,CAAA;GACZ,EAAE,CAAC9P,IAAI,EAAEiO,YAAY,EAAEC,YAAY,EAAEO,QAAQ,CAAC,CAAC,CAAA;;AAEhD;AACA5L,EAAAA,SAAS,CAAC,MAAM;IACd,IAAI,CAAC7C,IAAI,EAAE;MACTuP,gBAAgB,CAAC,KAAK,CAAC,CAAA;MACvBJ,aAAa,CAAC,EAAE,CAAC,CAAA;MACjBF,mBAAmB,CAAC,EAAE,CAAC,CAAA;MACvBH,IAAI,CAACyB,WAAW,EAAE,CAAA;MAClBf,oBAAoB,CAACnU,OAAO,GAAG;AAAEoU,QAAAA,UAAU,EAAE,KAAK;AAAEC,QAAAA,cAAc,EAAE,KAAA;OAAO,CAAA;AAC7E,KAAA;AACF,GAAC,EAAE,CAAC1P,IAAI,EAAE8O,IAAI,CAAC,CAAC,CAAA;;AAEhB;AACA,EAAA,MAAM0B,aAAa,GAAGtS,OAAO,CAAC,MAAM;IAClC,MAAMuS,MAAM,GAAG,EAAE,CAAA;AAEjB,IAAA,IAAIhC,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,IAAIX,UAAU,CAACrX,MAAM,GAAG,CAAC,EAAE;MACrD4Y,MAAM,CAAC9B,GAAG,GAAGO,UAAU,CAAC/T,GAAG,CAACyU,MAAM,IAAA5V,cAAA,CAAA;QAChC0W,aAAa,EAAEd,MAAM,CAACc,aAAa;QACnCC,YAAY,EAAEf,MAAM,CAACe,YAAY;QACjCC,UAAU,EAAEhB,MAAM,CAACgB,UAAAA;OACflC,EAAAA,WAAW,CAACC,GAAG,GAAG;QAAEtB,OAAO,EAAEuC,MAAM,CAACvC,OAAAA;AAAQ,OAAC,GAAG,EAAE,CACtD,CAAC,CAAA;AACL,KAAA;AAEA,IAAA,IAAIoB,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,IAAIb,gBAAgB,CAACnX,MAAM,GAAG,CAAC,EAAE;AAC5D4Y,MAAAA,MAAM,CAAC7B,IAAI,GAAGI,gBAAgB,CAAC7T,GAAG,CAACyS,KAAK,IAAA5T,cAAA,CAAAA,cAAA,CAElC4T,EAAAA,EAAAA,KAAK,CAAC1K,EAAE,KAAKpL,SAAS,IAAI;QAAEoL,EAAE,EAAE0K,KAAK,CAAC1K,EAAAA;OAAI,CAAA,EAAA,EAAA,EAAA;QAC9CyN,YAAY,EAAE/C,KAAK,CAAC+C,YAAY;AAChCC,QAAAA,UAAU,EAAEhD,KAAK,CAACgD,UAAU,IAAIhD,KAAK,CAACR,EAAAA;OAClCsB,EAAAA,WAAW,CAACE,IAAI,GAAG;QAAEvB,OAAO,EAAEO,KAAK,CAACP,OAAAA;AAAQ,OAAC,GAAG,EAAE,CACtD,CAAC,CAAA;AACL,KAAA;AAEA,IAAA,OAAOoD,MAAM,CAAA;GACd,EAAE,CAACvB,UAAU,EAAEF,gBAAgB,EAAEP,QAAQ,EAAEC,WAAW,CAAC,CAAC,CAAA;;AAEzD;AACA7L,EAAAA,SAAS,CAAC,MAAM;IACd,IAAIyM,aAAa,IAAI,CAACE,oBAAoB,CAACnU,OAAO,CAACqU,cAAc,EAAE;AACjEZ,MAAAA,IAAI,CAAC+B,cAAc,CAACL,aAAa,CAAC,CAAA;AAClChB,MAAAA,oBAAoB,CAACnU,OAAO,CAACqU,cAAc,GAAG,IAAI,CAAA;AACpD,KAAA;GACD,EAAE,CAACJ,aAAa,EAAER,IAAI,EAAE0B,aAAa,CAAC,CAAC,CAAA;AAExC,EAAA,MAAMM,aAAa,GAAGjX,WAAW,CAAC,kBAIvB;IAAA,IAJ8B;AACvCkX,MAAAA,WAAW,GAAG,SAAS;MACvBC,OAAO,GAAG,CAAC,CAAC1C,OAAO;AACnB2C,MAAAA,OAAO,GAAG,CAAC3C,OAAAA;AACb,KAAC,GAAA1W,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE,CAAA;AACJkC,IAAAA,OAAO,CAACqP,OAAO,CAAC4H,WAAW,CAAC,CAAA;IAE5B,IAAIE,OAAO,IAAI9C,SAAS,EAAE;MACxB,IAAI;AACF,QAAA,MAAM+C,SAAS,GAAG,MAAM/C,SAAS,EAAE,CAAA;QACnC,IAAIM,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,IAAIqB,SAAS,CAACnB,cAAc,EAAE;AACxDZ,UAAAA,aAAa,CAAC+B,SAAS,CAACnB,cAAc,CAAC,CAAA;AACzC,SAAA;QACA,IAAItB,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,IAAIqB,SAAS,CAAClE,UAAU,EAAE;AACrDiC,UAAAA,mBAAmB,CAACiC,SAAS,CAAClE,UAAU,CAAC,CAAA;AAC3C,SAAA;OACD,CAAC,OAAO/S,KAAK,EAAE;AACdC,QAAAA,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC,CAAA;AACnD,OAAA;AACF,KAAA;;AAEA;IACA,IAAI+W,OAAO,IAAI1C,OAAO,EAAE;MACtB,IAAI;AACF,QAAA,MAAM6C,aAAa,GAAG,MAAMjD,YAAY,EAAE,CAAA;AAC1C,QAAA,IAAIiD,aAAa,IAAIA,aAAa,CAACC,mBAAmB,EAAE;UACtD/N,KAAK,CAAC4H,OAAO,CAAC;AACZC,YAAAA,IAAI,eAAElS,GAAA,CAACmS,uBAAuB,IAAE,CAAC;AACjCvS,YAAAA,KAAK,EAAE,mDAAmD;AAC1D8F,YAAAA,UAAU,EAAE,IAAI;AAChBD,YAAAA,MAAM,EAAE,KAAK;AACbF,YAAAA,IAAI,EAAEA,MAAM+P,OAAO,EAAC;AACtB,WAAC,CAAC,CAAA;AACJ,SAAA;OACD,CAAC,OAAOrU,KAAK,EAAE;AACdC,QAAAA,OAAO,CAACD,KAAK,CAAC,iCAAiC,EAAEA,KAAK,CAAC,CAAA;AACzD,OAAA;AACF,KAAA;AAEA+T,IAAAA,OAAO,EAAE,CAAA;AACX,GAAC,EAAE,CAAClU,OAAO,EAAEuJ,KAAK,EAAE6K,YAAY,EAAEI,OAAO,EAAEH,SAAS,EAAEM,QAAQ,EAAET,OAAO,CAAC,CAAC,CAAA;AAEzE,EAAA,MAAMqD,YAAY,GAAGxX,WAAW,CAAC,YAAY;IAC3CwV,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAEtB,IAAI;AACF,MAAA,MAAMoB,MAAM,GAAG,MAAM3B,IAAI,CAACwC,cAAc,EAAE,CAAA;MAE1C,MAAMC,cAAc,GAAG,EAAE,CAAA;;AAEzB;MACA,IAAI9C,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,IAAIY,MAAM,CAAC9B,GAAG,EAAE;QAC1C,MAAM6C,OAAO,GAAGf,MAAM,CAAC9B,GAAG,CAACxT,GAAG,CAAC,CAACC,IAAI,EAAEgD,KAAK,KAAA;AAAA,UAAA,IAAAqT,iBAAA,CAAA;AAAA,UAAA,OAAAzX,cAAA,CAAA;AACzC0W,YAAAA,aAAa,EAAAe,CAAAA,iBAAA,GAAEvC,UAAU,CAAC9Q,KAAK,CAAC,MAAA,IAAA,IAAAqT,iBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,iBAAA,CAAmBf,aAAa;YAC/CE,UAAU,EAAExV,IAAI,CAACwV,UAAAA;WACblC,EAAAA,WAAW,CAACC,GAAG,GAAG;YAAEtB,OAAO,EAAEjS,IAAI,CAACiS,OAAAA;WAAS,GAAG,EAAE,CAAA,CAAA;AAAA,SACpD,CAAC,CAAA;AACHkE,QAAAA,cAAc,CAACvT,IAAI,CAACoQ,eAAe,CAACoD,OAAO,CAAC,CAAC,CAAA;AAC/C,OAAA;;AAEA;MACA,IAAI/C,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,IAAIY,MAAM,CAAC7B,IAAI,EAAE;QAC5C,MAAM8C,cAAc,GAAGjB,MAAM,CAAC7B,IAAI,CAACzT,GAAG,CAAC,CAACC,IAAI,EAAEgD,KAAK,KAAA;AAAA,UAAA,IAAAuT,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,CAAA;UAAA,OAAA7X,cAAA,CAAAA,cAAA,CAAAA,cAAA,KAE7C,CAAAgV,gBAAgB,KAAhBA,IAAAA,IAAAA,gBAAgB,KAAA2C,KAAAA,CAAAA,IAAAA,CAAAA,qBAAA,GAAhB3C,gBAAgB,CAAG5Q,KAAK,CAAC,MAAAuT,IAAAA,IAAAA,qBAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAA2BzO,EAAE,MAAKpL,SAAS,IAAI;AACjDoL,YAAAA,EAAE,EAAE8L,gBAAgB,KAAhBA,IAAAA,IAAAA,gBAAgB,gBAAA4C,sBAAA,GAAhB5C,gBAAgB,CAAG5Q,KAAK,CAAC,MAAA,IAAA,IAAAwT,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAzBA,sBAAA,CAA2B1O,EAAAA;WAChC,CAAA,EACG,CAAA8L,gBAAgB,KAAA,IAAA,IAAhBA,gBAAgB,KAAA6C,KAAAA,CAAAA,IAAAA,CAAAA,sBAAA,GAAhB7C,gBAAgB,CAAG5Q,KAAK,CAAC,MAAA,IAAA,IAAAyT,sBAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAA,CAA2BzE,EAAE,MAAKtV,SAAS,GAC3C;YAAEsV,EAAE,EAAEhS,IAAI,CAACwV,UAAAA;AAAW,WAAC,GACvB;YAAEA,UAAU,EAAExV,IAAI,CAACwV,UAAAA;AAAW,WAAC,CAE/BlC,EAAAA,WAAW,CAACE,IAAI,GAAG;YAAEvB,OAAO,EAAEjS,IAAI,CAACiS,OAAAA;WAAS,GAAG,EAAE,CAAA,CAAA;AAAA,SACrD,CAAC,CAAA;AAEH,QAAA,MAAMyE,UAAU,GAAG9C,gBAAgB,CAAC1J,IAAI,CAACsI,KAAK,IAAI,IAAI,IAAIA,KAAK,CAAC,GAC5D;AAAE0C,UAAAA,iBAAiB,EAAEoB,cAAAA;AAAe,SAAC,GACrC;AAAE1E,UAAAA,UAAU,EAAE0E,cAAAA;SAAgB,CAAA;AAElCH,QAAAA,cAAc,CAACvT,IAAI,CAACqQ,eAAe,CAACyD,UAAU,CAAC,CAAC,CAAA;AAClD,OAAA;MAEA,MAAM7B,OAAO,GAAG,MAAMC,OAAO,CAACC,UAAU,CAACoB,cAAc,CAAC,CAAA;;AAExD;AACA,MAAA,MAAMQ,YAAY,GAAG9B,OAAO,CAAC+B,KAAK,CAACjP,MAAM,IAAIA,MAAM,CAAC1G,MAAM,KAAK,WAAW,CAAC,CAAA;AAE3E,MAAA,IAAI0V,YAAY,EAAE;AAChBjB,QAAAA,aAAa,EAAE,CAAA;AACjB,OAAA;KACD,CAAC,OAAO7W,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,mCAAmC,EAAEA,KAAK,CAAC,CAAA;AAC3D,KAAC,SAAS;MACRoV,gBAAgB,CAAC,KAAK,CAAC,CAAA;AACzB,KAAA;AACF,GAAC,EAAE,CACDP,IAAI,EACJL,QAAQ,EACRS,UAAU,EACVF,gBAAgB,EAChBZ,eAAe,EACfC,eAAe,EACfyC,aAAa,CACd,CAAC,CAAA;;AAEF;EACA,MAAMmB,gBAAgB,GAAAjY,cAAA,CAAA;AACpBpB,IAAAA,KAAK,EAAE,kBAAkB;AACzB+F,IAAAA,KAAK,EAAE,GAAG;IACVqB,IAAI;AACJkS,IAAAA,cAAc,EAAE9C,aAAa;AAC7B7Q,IAAAA,IAAI,EAAE8S,YAAY;AAClB/S,IAAAA,QAAQ,EAAE0P,OAAO;AACjBvP,IAAAA,MAAM,EAAE,OAAO;AACfC,IAAAA,UAAU,EAAE,OAAO;AACnByT,IAAAA,QAAQ,EAAE,IAAI;AACd/Y,IAAAA,eAAe,EAAE,IAAI;AACrBgZ,IAAAA,WAAW,EAAE,IAAI;AACjBC,IAAAA,MAAM,EAAArY,cAAA,CAAA;AACJ0N,MAAAA,IAAI,EAAE;AAAE4K,QAAAA,OAAO,EAAE,oBAAA;AAAqB,OAAA;KAClCzD,EAAAA,aAAa,KAAK,IAAI,IAAI;AAAE0D,MAAAA,MAAM,EAAE;AAAEC,QAAAA,aAAa,EAAE,EAAA;AAAG,OAAA;KAAG,CAAA;AAChE,GAAA,EACEjE,UAAU,CACd,CAAA;;AAED;EACA,MAAMkE,eAAe,GAAAzY,cAAA,CAAA;AACnB8U,IAAAA,IAAI,EAAEA,IAAI;AACVvO,IAAAA,QAAQ,EAAE;AAAEC,MAAAA,IAAI,EAAE,CAAA;KAAG;AACrBC,IAAAA,UAAU,EAAE;AAAED,MAAAA,IAAI,EAAE,EAAA;KAAI;AACxBE,IAAAA,YAAY,EAAE,KAAA;AAAK,GAAA,EAChB8N,SAAS,CACb,CAAA;EAED,oBACEtV,IAAA,CAAC6G,KAAK,EAAA/F,cAAA,CAAAA,cAAA,KAAKiY,gBAAgB,CAAA,EAAA,EAAA,EAAA;IAAAnZ,QAAA,EAAA,cACzBI,IAAA,CAACmH,IAAI,EAAArG,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAKyY,eAAe,CAAA,EAAA,EAAA,EAAA;AAAA3Z,MAAAA,QAAA,GACtB2V,QAAQ,CAACoB,QAAQ,CAAC,KAAK,CAAC,IAAIX,UAAU,CAACrX,MAAM,GAAG,CAAC,iBAChDqB,IAAA,CAAAC,QAAA,EAAA;QAAAL,QAAA,EAAA,cACEE,GAAA,CAAC4T,iBAAiB,EAAA;AAChBG,UAAAA,MAAM,EAAC,KAAK;AACZC,UAAAA,UAAU,EAAEkC,UAAW;UACvBjC,WAAW,EAAE0C,mBAAmB,CAAChB,GAAAA;AAAI,SACtC,CAAC,EACDF,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,IAAIb,gBAAgB,CAACnX,MAAM,GAAG,CAAC,iBAAImB,GAAA,CAAC6U,OAAO,IAAE,CAAC,CAAA;AAAA,OACxE,CACH,EAEAY,QAAQ,CAACoB,QAAQ,CAAC,MAAM,CAAC,IAAIb,gBAAgB,CAACnX,MAAM,GAAG,CAAC,iBACvDmB,GAAA,CAAC4T,iBAAiB,EAAA;AAChBG,QAAAA,MAAM,EAAC,MAAM;AACbC,QAAAA,UAAU,EAAEgC,gBAAiB;QAC7B/B,WAAW,EAAE0C,mBAAmB,CAACf,IAAAA;AAAK,OACvC,CACF,CAAA;KACG,CAAA,CAAC,EACNC,aAAa,CAAA;AAAA,GAAA,CACT,CAAC,CAAA;AAEZ,CAAC,CAAA;AAGD,6BAAenW,aAAAA,IAAI,CAACqV,oBAAoB,CAAC;;AC5XzC,MAAM2E,mBAAmB,GAAG;AAC1BC,EAAAA,WAAW,EAAE;AACX7R,IAAAA,KAAK,EAAE,aAAa;AACpB8R,IAAAA,QAAQ,EAAE,QAAQ;AAClBhR,IAAAA,OAAO,EAAE,CACP;AAAEnE,MAAAA,KAAK,EAAE,CAAC;AAAEqD,MAAAA,KAAK,EAAE,kBAAA;AAAmB,KAAC,EACvC;AAAErD,MAAAA,KAAK,EAAE,CAAC;AAAEqD,MAAAA,KAAK,EAAE,SAAA;AAAU,KAAC,EAC9B;AAAErD,MAAAA,KAAK,EAAE,GAAG;AAAEqD,MAAAA,KAAK,EAAE,kBAAA;AAAmB,KAAC,CAC1C;AACDG,IAAAA,QAAQ,EAAE,IAAA;GACX;AACD4R,EAAAA,cAAc,EAAE;AACd/R,IAAAA,KAAK,EAAE,gBAAgB;AACvB8R,IAAAA,QAAQ,EAAE,QAAQ;AAClB3R,IAAAA,QAAQ,EAAE,IAAA;GACX;AACD6R,EAAAA,0BAA0B,EAAE;AAC1BhS,IAAAA,KAAK,EAAE,4BAA4B;AACnC8R,IAAAA,QAAQ,EAAE,QAAQ;AAClB3R,IAAAA,QAAQ,EAAE,IAAA;GACX;AACD8R,EAAAA,qBAAqB,EAAE;AACrBjS,IAAAA,KAAK,EAAE,YAAY;AACnB8R,IAAAA,QAAQ,EAAE,QAAQ;AAClB3R,IAAAA,QAAQ,EAAE,IAAA;GACX;AACD+R,EAAAA,qBAAqB,EAAE;AACrBlS,IAAAA,KAAK,EAAE,YAAY;AACnB8R,IAAAA,QAAQ,EAAE,QAAQ;AAClB3R,IAAAA,QAAQ,EAAE,IAAA;GACX;AACDgS,EAAAA,oBAAoB,EAAE;AACpBnS,IAAAA,KAAK,EAAE,sBAAsB;AAC7B8R,IAAAA,QAAQ,EAAE,MAAM;AAChB3R,IAAAA,QAAQ,EAAE,IAAA;GACX;AACDiS,EAAAA,cAAc,EAAE;AACdpS,IAAAA,KAAK,EAAE,eAAe;AACtB8R,IAAAA,QAAQ,EAAE,MAAM;AAChB3R,IAAAA,QAAQ,EAAE,IAAA;GACX;AACDkS,EAAAA,gBAAgB,EAAE;AAChBrS,IAAAA,KAAK,EAAE,QAAQ;AACf8R,IAAAA,QAAQ,EAAE,QAAQ;AAClBQ,IAAAA,GAAG,EAAE,CAAC;AACN5X,IAAAA,GAAG,EAAE,GAAG;AACRyF,IAAAA,QAAQ,EAAE,KAAA;GACX;AACDoS,EAAAA,iBAAiB,EAAE;AACjBvS,IAAAA,KAAK,EAAE,YAAY;AACnB8R,IAAAA,QAAQ,EAAE,QAAQ;AAClB3R,IAAAA,QAAQ,EAAE,IAAA;GACX;AACDqS,EAAAA,YAAY,EAAE;AACZxS,IAAAA,KAAK,EAAE,kBAAkB;AACzB8R,IAAAA,QAAQ,EAAE,OAAO;AACjBW,IAAAA,SAAS,EAAE;AACT,MAAA,CAAC,EAAE;AAAEC,QAAAA,IAAI,EAAE,cAAc;AAAEC,QAAAA,KAAK,EAAE,KAAA;OAAO;AACzC,MAAA,CAAC,EAAE;AAAED,QAAAA,IAAI,EAAE,WAAW;AAAEC,QAAAA,KAAK,EAAE,OAAA;AAAQ,OAAA;AACzC,KAAA;GACD;AACDC,EAAAA,SAAS,EAAE;AACT5S,IAAAA,KAAK,EAAE,eAAe;AACtB8R,IAAAA,QAAQ,EAAE,OAAO;AACjBW,IAAAA,SAAS,EAAE;AACT,MAAA,CAAC,EAAE;AAAEC,QAAAA,IAAI,EAAE,UAAU;AAAEC,QAAAA,KAAK,EAAE,KAAA;OAAO;AACrC,MAAA,CAAC,EAAE;AAAED,QAAAA,IAAI,EAAE,QAAQ;AAAEC,QAAAA,KAAK,EAAE,OAAA;AAAQ,OAAA;AACtC,KAAA;AACF,GAAA;AACF,CAAC,CAAA;;AAED;AACA,MAAME,iBAAiB,GAAG,CACxB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACd,WAAW,CACZ,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,uBAAuBA,CAACC,SAAS,EAAEC,YAAY,EAAEC,UAAU,EAAE;AACpE,EAAA,OAAOA,UAAU,CACdzY,MAAM,CAACiK,GAAG,IAAIA,GAAG,IAAIsO,SAAS,CAAC,CAC/B1Y,GAAG,CAACoK,GAAG,IAAI;AACV,IAAA,MAAMqK,MAAM,GAAGkE,YAAY,CAACvO,GAAG,CAAC,IAAI;AAAEzE,MAAAA,KAAK,EAAEyE,GAAG;AAAEqN,MAAAA,QAAQ,EAAE,MAAA;KAAQ,CAAA;AACpE,IAAA,MAAMnV,KAAK,GAAGoW,SAAS,CAACtO,GAAG,CAAC,CAAA;IAE5B,OAAAvL,cAAA,CAAAA,cAAA,CAAA;MACEuL,GAAG;AACH9H,MAAAA,KAAAA;AAAK,KAAA,EACFmS,MAAM,CAAA,EAAA,EAAA,EAAA;AACToE,MAAAA,OAAO,EAAEH,SAAAA;AAAS,KAAA,CAAA,CAAA;AAEtB,GAAC,CAAC,CAAA;AACN,CAAA;AAEA,MAAMI,QAAQ,GAAGtb,IAAA,IASX;EAAA,IATY;IAChBqH,IAAI;IACJgO,OAAO;IACPkG,UAAU;IACVC,aAAa;AACbL,IAAAA,YAAY,GAAGpB,mBAAmB;AAClCqB,IAAAA,UAAU,GAAGJ,iBAAiB;IAC9BpF,UAAU,GAAG,EAAE;AACfC,IAAAA,SAAS,GAAG,EAAC;AACf,GAAC,GAAA7V,IAAA,CAAA;EACC,MAAM,CAACkb,SAAS,EAAEO,YAAY,CAAC,GAAGza,QAAQ,CAAC,IAAI,CAAC,CAAA;EAChD,MAAM,CAACmV,IAAI,CAAC,GAAGzO,IAAI,CAAC0O,OAAO,EAAE,CAAA;EAC7B,MAAM;AAAEjV,IAAAA,OAAAA;AAAQ,GAAC,GAAG8E,GAAG,CAACC,MAAM,EAAE,CAAA;AAEhCgE,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAI7C,IAAI,EAAE;AACRkU,MAAAA,UAAU,EAAE,CAACG,IAAI,CAAC5Z,IAAI,IAAI;QACxB,IAAIA,IAAI,aAAJA,IAAI,KAAA,KAAA,CAAA,IAAJA,IAAI,CAAG,CAAC,CAAC,EAAE;AACb2Z,UAAAA,YAAY,CAAC3Z,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACrBqU,UAAAA,IAAI,CAAC+B,cAAc,CAACpW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;GACD,EAAE,CAACuF,IAAI,EAAE8O,IAAI,EAAEoF,UAAU,CAAC,CAAC,CAAA;AAE5B,EAAA,MAAMI,cAAc,GAAIpW,OAAO,CAAC,MAAM;AACpC,IAAA,IAAI,CAAC2V,SAAS,EAAE,OAAM,EAAE,CAAA;AACxB,IAAA,OAAOD,uBAAuB,CAACC,SAAS,EAAEC,YAAY,EAAEC,UAAU,CAAC,CAAA;AACrE,GAAC,EAAE,CAACF,SAAS,CAAC,CAAC,CAAA;EAEf,MAAMU,iBAAiB,GAAIC,aAAa,IAAK;IAC3C,IAAI,kBAAkB,IAAIA,aAAa,EAAE;AACvCJ,MAAAA,YAAY,CAACra,IAAI,IAAAC,cAAA,CAAAA,cAAA,KACZD,IAAI,CAAA,EAAA,EAAA,EAAA;QACPoZ,gBAAgB,EAAEqB,aAAa,CAACrB,gBAAAA;AAAgB,OAAA,CAChD,CAAC,CAAA;AACL,KAAA;GACD,CAAA;AAED,EAAA,MAAM9B,YAAY,GAAG,YAAY;IAC/B,IAAI;AACF,MAAA,MAAMZ,MAAM,GAAG,MAAM3B,IAAI,CAACwC,cAAc,EAAE,CAAA;AAE1C,MAAA,MAAMpI,QAAQ,GAAG,MAAMiL,aAAa,CAAC1D,MAAM,CAAC,CAAA;AAC5C,MAAA,IAAIvH,QAAQ,EAAE;AACZpP,QAAAA,OAAO,CAACqP,OAAO,CAAC,SAAS,CAAC,CAAA;AAC1BP,QAAAA,UAAU,CAAC,MAAM;AACfoF,UAAAA,OAAO,EAAE,CAAA;SACV,EAAE,IAAI,CAAC,CAAA;AACV,OAAA;KACD,CAAC,OAAO/T,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK,CAAC,CAAA;AACxC,KAAA;GACD,CAAA;EAGD,MAAMwa,cAAc,GAAIrZ,IAAI,IAAK;AAAA,IAAA,IAAAsZ,eAAA,EAAAC,SAAA,EAAAC,SAAA,CAAA;IAC/B,QAAQxZ,IAAI,CAACwX,QAAQ;AACnB,MAAA,KAAK,QAAQ;QACX,oBAAO5Z,GAAA,CAACuT,MAAM,EAAA;UAAC3K,OAAO,EAAExG,IAAI,CAACwG,OAAQ;UAACxB,QAAQ,EAAEhF,IAAI,CAAC6F,QAAAA;AAAS,SAAE,CAAC,CAAA;AACnE,MAAA,KAAK,QAAQ;AACX,QAAA,oBAAOjI,GAAA,CAAC6b,MAAM,EAAA,EAAE,CAAC,CAAA;AACnB,MAAA,KAAK,OAAO;AACV,QAAA,MAAMC,eAAe,GAAG,OAAO1Z,IAAI,CAACqC,KAAK,KAAK,SAAS,GAClDrC,IAAI,CAACqC,KAAK,GAAG,CAAC,GAAG,CAAC,GACnBrC,IAAI,CAACqC,KAAK,CAAA;AACd,QAAA,MAAMpB,MAAM,GAAG,CAAAqY,CAAAA,eAAA,GAAAtZ,IAAI,CAACmY,SAAS,MAAA,IAAA,IAAAmB,eAAA,KAAdA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAiBI,eAAe,CAAC,KAAI;AAAEtB,UAAAA,IAAI,EAAE,SAAS;AAAEC,UAAAA,KAAK,EAAE,MAAA;SAAQ,CAAA;QACtF,oBACEza,GAAA,CAAC+b,cAAc,EAAA;AAACC,UAAAA,KAAK,EAAE;AAAEC,YAAAA,UAAU,EAAE;AAAEC,cAAAA,KAAK,EAAE;AAAEC,gBAAAA,UAAU,EAAE,EAAA;AAAG,eAAA;AAAE,aAAA;WAAI;UAAArc,QAAA,eACnEE,GAAA,CAACkc,KAAK,EAAA;YAACzB,KAAK,EAAEpX,MAAM,CAACoX,KAAM;YAACD,IAAI,EAAEnX,MAAM,CAACmX,IAAAA;WAAO,CAAA;AAAC,SACnC,CAAC,CAAA;AAErB,MAAA,KAAK,QAAQ;QACX,oBACExa,GAAA,CAACoc,WAAW,EAAA;UACVhV,QAAQ,EAAEhF,IAAI,CAAC6F,QAAS;AACxBoU,UAAAA,QAAQ,EAAE,KAAM;AAChBC,UAAAA,QAAQ,EAAE,KAAM;AAChBlC,UAAAA,GAAG,EAAAuB,CAAAA,SAAA,GAAEvZ,IAAI,CAACgY,GAAG,MAAAuB,IAAAA,IAAAA,SAAA,KAAAA,KAAAA,CAAAA,GAAAA,SAAA,GAAIY,MAAM,CAACC,gBAAiB;AACzCha,UAAAA,GAAG,EAAAoZ,CAAAA,SAAA,GAAExZ,IAAI,CAACI,GAAG,MAAAoZ,IAAAA,IAAAA,SAAA,KAAAA,KAAAA,CAAAA,GAAAA,SAAA,GAAIW,MAAM,CAACE,gBAAAA;AAAiB,SAC1C,CAAC,CAAA;AAEN,MAAA;QACE,oBAAOzc,GAAA,CAACgI,KAAK,EAAA;UAACZ,QAAQ,EAAEhF,IAAI,CAAC6F,QAAAA;AAAS,SAAE,CAAC,CAAA;AAC7C,KAAA;GACD,CAAA;AAED,EAAA,IAAI,CAACjB,IAAI,IAAI,CAAC6T,SAAS,EAAE,OAAO,IAAI,CAAA;;AAEpC;EACA,MAAM5B,gBAAgB,GAAAjY,cAAA,CAAA;AACpBpB,IAAAA,KAAK,EAAE,KAAK;AACZ+F,IAAAA,KAAK,EAAE,GAAG;IACVqB,IAAI;AACJvB,IAAAA,MAAM,EAAE,OAAO;AACfC,IAAAA,UAAU,EAAE,OAAO;AACnBJ,IAAAA,QAAQ,EAAE0P,OAAO;AACjBzP,IAAAA,IAAI,EAAE8S,YAAAA;AAAY,GAAA,EACf9C,UAAU,CACd,CAAA;;AAED;EACA,MAAMkE,eAAe,GAAAzY,cAAA,CAAA;AACnB8U,IAAAA,IAAI,EAAEA,IAAI;AACVxO,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,QAAQ,EAAE;AAAEC,MAAAA,IAAI,EAAE,CAAA;KAAG;AACrBC,IAAAA,UAAU,EAAE;AAAED,MAAAA,IAAI,EAAE,EAAA;KAAI;AACxBE,IAAAA,YAAY,EAAE,KAAK;AACnBgV,IAAAA,cAAc,EAAEnB,iBAAAA;AAAiB,GAAA,EAC9B/F,SAAS,CACb,CAAA;EAED,oBACExV,GAAA,CAAC+G,KAAK,EAAA/F,cAAA,CAAAA,cAAA,KAAKiY,gBAAgB,CAAA,EAAA,EAAA,EAAA;IAAAnZ,QAAA,eACzBE,GAAA,CAACqH,IAAI,EAAArG,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAKyY,eAAe,CAAA,EAAA,EAAA,EAAA;MAAA3Z,QAAA,EACtBwb,cAAc,CAACnZ,GAAG,CAACC,IAAI,iBACtBpC,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;QACRC,KAAK,EAAE1F,IAAI,CAAC0F,KAAM;QAClBR,IAAI,EAAElF,IAAI,CAACmK,GAAI;QAEfoQ,YAAY,EAAEva,IAAI,CAACqC,KAAM;QAAA3E,QAAA,EAExB2b,cAAc,CAACrZ,IAAI,CAAA;OAHfA,EAAAA,IAAI,CAACmK,GAID,CACZ,CAAA;KACG,CAAA,CAAA;AAAC,GAAA,CACF,CAAC,CAAA;AAEZ,CAAC,CAAA;AAED,iBAAe7M,aAAAA,IAAI,CAACub,QAAQ,CAAC;;AC/OtB,MAAM2B,QAAQ,gBAAGld,IAAI,CAACC,IAAA,IAYvB;EAAA,IAZwB;IAC5Bkd,UAAU;IACVC,gBAAgB;IAChBC,cAAc;IACdC,QAAQ;IACRC,QAAQ;AACRC,IAAAA,UAAU,GAAGL,UAAU,CAAChe,MAAM,GAAG,CAAC;AAClCse,IAAAA,eAAe,GAAG,KAAK;AACvBC,IAAAA,KAAK,GAAG;AACNC,MAAAA,SAAS,EAAE,YAAY;AACvBC,MAAAA,YAAY,EAAE,QAAA;AAChB,KAAA;AACF,GAAC,GAAA3d,IAAA,CAAA;AACC;AACA,EAAA,MAAM4d,WAAW,GAAGJ,eAAe,GAAG,aAAa,GAAG,aAAa,CAAA;AAEnE,EAAA,oBACIjd,IAAA,CAAA,KAAA,EAAA;AAAKG,IAAAA,SAAS,EAAC,0BAA0B;AAAAP,IAAAA,QAAA,gBACvCE,GAAA,CAAA,KAAA,EAAA;AAAKK,MAAAA,SAAS,EAAC,gBAAgB;MAAAP,QAAA,eAC7BE,GAAA,CAACwd,IAAI,EAAA;AACHC,QAAAA,MAAM,eACJvd,IAAA,CAAA,KAAA,EAAA;AAAKG,UAAAA,SAAS,EAAAC,OAAAA,CAAAA,MAAA,CAAUid,WAAW,EAA4B,2BAAA,CAAA;AAAAzd,UAAAA,QAAA,gBAC7DE,GAAA,CAAA,KAAA,EAAA;AAAAF,YAAAA,QAAA,EAAK,MAAA;WAAS,CAAC,eACfE,GAAA,CAAA,KAAA,EAAA;AAAAF,YAAAA,QAAA,EAAK,aAAA;AAAW,WAAK,CAAC,EACrBqd,eAAe,iBAAInd,GAAA,CAAA,KAAA,EAAA;AAAAF,YAAAA,QAAA,EAAK,aAAA;AAAW,WAAK,CAAC,CAAA;AAAA,SACvC,CACN;AACD+c,QAAAA,UAAU,EAAEA,UAAW;AACvBa,QAAAA,MAAM,EAAC,IAAI;AACXC,QAAAA,UAAU,EAAGvb,IAAI,iBACfpC,GAAA,CAACwd,IAAI,CAAC3V,IAAI,EAAA;AACRxH,UAAAA,SAAS,EAAAC,YAAAA,CAAAA,MAAA,CACPwc,gBAAgB,KAAK1a,IAAI,CAAC8H,EAAE,GAAG,UAAU,GAAG,EAAE,CAC7C;AACHvC,UAAAA,KAAK,EAAE;AAAE2R,YAAAA,OAAO,EAAE,UAAA;WAAa;AAC/B3I,UAAAA,OAAO,EAAEA,MAAMoM,cAAc,CAAC3a,IAAI,CAAE;AAAAtC,UAAAA,QAAA,eAEpCI,IAAA,CAAA,KAAA,EAAA;AAAKG,YAAAA,SAAS,EAAAC,OAAAA,CAAAA,MAAA,CAAUid,WAAW,EAAiC,gCAAA,CAAA;AAAAzd,YAAAA,QAAA,gBAClEE,GAAA,CAAA,KAAA,EAAA;AAAKK,cAAAA,SAAS,EAAC,SAAS;AAAAP,cAAAA,QAAA,eACtBE,GAAA,CAACuU,UAAU,CAACqJ,IAAI,EAAA;gBAACC,QAAQ,EAAA,IAAA;gBAACje,KAAK,EAAEwC,IAAI,CAACkF,IAAK;AAAAxH,gBAAAA,QAAA,EACxCsC,IAAI,CAACkF,IAAI,IAAI,iBAAA;eACC,CAAA;aACd,CAAC,eAENtH,GAAA,CAAA,KAAA,EAAA;AAAKK,cAAAA,SAAS,EAAC,SAAS;AAAAP,cAAAA,QAAA,eACtBE,GAAA,CAACuU,UAAU,CAACqJ,IAAI,EAAA;gBAACC,QAAQ,EAAA,IAAA;gBAAA/d,QAAA,EACtBsC,IAAI,CAAC0b,WAAAA;eACS,CAAA;AAAC,aACf,CAAC,EAELX,eAAe,iBACdnd,GAAA,CAAA,KAAA,EAAA;AAAKK,cAAAA,SAAS,EAAC,SAAS;AAAAP,cAAAA,QAAA,eACtBE,GAAA,CAACuU,UAAU,CAACqJ,IAAI,EAAA;gBAACC,QAAQ,EAAA,IAAA;gBAACje,KAAK,EAAEwC,IAAI,CAAC2b,WAAY;gBAAAje,QAAA,EAC/CsC,IAAI,CAAC2b,WAAAA;eACS,CAAA;AAAC,aACf,CACN,CAAA;WACE,CAAA;AAAC,SACG,CACX;AACFC,QAAAA,MAAM,EAAE;AACNC,UAAAA,SAAS,eACPje,GAAA,CAAA,KAAA,EAAA;AAAKK,YAAAA,SAAS,EAAC,KAAK;YAAAP,QAAA,eAClBE,GAAA,CAACke,KAAK,EAAA;cACJC,KAAK,EAAED,KAAK,CAACE,sBAAuB;AACpCL,cAAAA,WAAW,eACT/d,GAAA,CAAA,MAAA,EAAA;AAAMK,gBAAAA,SAAS,EAAC,eAAe;gBAAAP,QAAA,eAC7BE,GAAA,CAACqe,MAAM,EAAA;AACLzX,kBAAAA,IAAI,EAAC,MAAM;AACX+J,kBAAAA,OAAO,EAAEqM,QAAS;AAClB3c,kBAAAA,SAAS,EAAC,YAAY;AACtB6R,kBAAAA,IAAI,eAAElS,GAAA,CAACse,YAAY,IAAE,CAAE;AAAAxe,kBAAAA,QAAA,EACxB,mBAAA;iBAEO,CAAA;eACJ,CAAA;aAET,CAAA;WACE,CAAA;AAET,SAAA;OACD,CAAA;AAAC,KACC,CAAC,EAGLod,UAAU,iBACTld,GAAA,CAAA,KAAA,EAAA;AAAKK,MAAAA,SAAS,EAAC,KAAK;AAACsH,MAAAA,KAAK,EAAE;AAAE4W,QAAAA,aAAa,EAAE,EAAA;OAAK;MAAAze,QAAA,eAChDI,IAAA,CAACse,KAAK,EAAA;AAACjN,QAAAA,IAAI,EAAC,QAAQ;QAAAzR,QAAA,EAAA,cAClBE,GAAA,CAACqe,MAAM,EAAA;AACLzX,UAAAA,IAAI,EAAC,SAAS;AACdsL,UAAAA,IAAI,eAAElS,GAAA,CAACse,YAAY,EAAE,EAAA,CAAA;AACrB;AAAA;AACAje,UAAAA,SAAS,EAAC,UAAU;AACpBsQ,UAAAA,OAAO,EAAEqM,QAAS;UAAAld,QAAA,EAEjBsd,KAAK,CAACC,SAAAA;AAAS,SACV,CAAC,eACTrd,GAAA,CAACqe,MAAM,EAAA;AACLzX,UAAAA,IAAI,EAAC,SAAA;AACL;AAAA;AACAvG,UAAAA,SAAS,EAAC,UAAU;AACpBsQ,UAAAA,OAAO,EAAEsM,QAAS;UAAAnd,QAAA,EAEjBsd,KAAK,CAACE,YAAAA;AAAY,SACb,CAAC,CAAA;OACJ,CAAA;AAAC,KACL,CACN,CAAA;AAAA,GACE,CAAC,CAAA;AAEZ,CAAC,CAAC,CAAA;AAEF,MAAMmB,YAAY,GAAGvR,KAAA,IAAA;EAAA,IAAC;IAAEzD,OAAO;IAAEuI,MAAM;IAAElS,QAAQ;AAAEsH,IAAAA,QAAQ,GAAG,KAAA;AAAM,GAAC,GAAA8F,KAAA,CAAA;AAAA,EAAA,oBACnElN,GAAA,CAAA,KAAA,EAAA;AAAKK,IAAAA,SAAS,EAAC,oBAAoB;IAAAP,QAAA,eACjCE,GAAA,CAACqe,MAAM,EAAA;AAAChe,MAAAA,SAAS,EAAC,UAAU;AAACoJ,MAAAA,OAAO,EAAEA,OAAQ;AAACkH,MAAAA,OAAO,EAAEqB,MAAO;AAAC5K,MAAAA,QAAQ,EAAEA,QAAS;AAAAtH,MAAAA,QAAA,EAChFA,QAAAA;KACK,CAAA;AAAC,GACN,CAAC,CAAA;AAAA,CACP,CAAA;AAEM,MAAM4e,eAAe,gBAAGhf,IAAI,CAACif,KAAA,IAmB9B;EAAA,IAnB+B;IACnC7I,IAAI;IACJ8I,MAAM;IACNC,MAAM;IACNC,SAAS;IACTC,SAAS;IACTC,kBAAkB;AAClBC,IAAAA,MAAM,GAAG;AACP3X,MAAAA,IAAI,EAAE;AACJQ,QAAAA,KAAK,EAAE,MAAM;AACbW,QAAAA,WAAW,EAAE,mBAAmB;AAChCV,QAAAA,QAAQ,EAAE,IAAA;AACZ,OAAA;KACD;AACDqV,IAAAA,KAAK,GAAG;AACN8B,MAAAA,UAAU,EAAE,MAAM;AAClBC,MAAAA,UAAU,EAAE,MAAA;KACb;AACDC,IAAAA,aAAa;AACf,GAAC,GAAAT,KAAA,CAAA;EACC,MAAM,CAACU,eAAe,EAAEC,kBAAkB,CAAC,GAAG3e,QAAQ,CAAC,EAAE,CAAC,CAAA;EAC1D,MAAM4e,eAAe,GAAGlY,IAAI,CAACmY,QAAQ,CAAC,eAAe,EAAE1J,IAAI,CAAC,IAAI,EAAE,CAAA;;AAElE;AACA,EAAA,MAAM2J,eAAe,GAAGR,MAAM,CAACS,aAAa,KAAK,IAAI,IAAIT,MAAM,CAACS,aAAa,KAAK5gB,SAAS,CAAA;;AAE3F;AACA+K,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAI4V,eAAe,EAAE;MACnB,MAAME,YAAY,GAAG7J,IAAI,CAAC8J,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;MAC9DN,kBAAkB,CAACK,YAAY,CAAC,CAAA;AAClC,KAAA;GACD,EAAE,CAACP,aAAa,EAAEtJ,IAAI,EAAE2J,eAAe,CAAC,CAAC,CAAC;;AAE3C;AACA,EAAA,MAAMI,eAAe,GAAG3a,OAAO,CAAC,MAAM;AACpC,IAAA,IAAI,CAACua,eAAe,EAAE,OAAO,EAAE,CAAA;IAE/B,OAAOR,MAAM,CAACS,aAAa,CAAC9W,OAAO,CAACzG,GAAG,CAAC2d,QAAQ,IAAI;MAClD,MAAMC,mBAAmB,GAAGV,eAAe,CAACxI,QAAQ,CAACiJ,QAAQ,CAACxY,IAAI,CAAC,CAAA;AACnE,MAAA,MAAM0Y,aAAa,GAAGjB,SAAS,GAAG,CAACgB,mBAAmB,GAAG,KAAK,CAAA;AAE9D,MAAA,OAAA/e,cAAA,CAAAA,cAAA,CAAA,EAAA,EACK8e,QAAQ,CAAA,EAAA,EAAA,EAAA;AACX1Y,QAAAA,QAAQ,EAAE4Y,aAAa;AACvBC,QAAAA,iBAAiB,EAAEF,mBAAAA;AAAmB,OAAA,CAAA,CAAA;AAE1C,KAAC,CAAC,CAAA;AACJ,GAAC,EAAE,CAACV,eAAe,EAAEN,SAAS,EAAEU,eAAe,EAAER,MAAM,CAACS,aAAa,CAAC,CAAC,CAAA;EAEvE,MAAMQ,oBAAoB,GAAIC,aAAa,IAAK;IAC9CrK,IAAI,CAAC+B,cAAc,CAAC;AAAE6H,MAAAA,aAAa,EAAES,aAAAA;AAAc,KAAC,CAAC,CAAA;GACtD,CAAA;AAED,EAAA,MAAMC,UAAU,GAAG,YAAY;IAC7B,IAAI;AACF,MAAA,MAAMC,UAAU,GAAG,MAAMvK,IAAI,CAACwC,cAAc,EAAE,CAAA;AAE9C,MAAA,MAAMgI,QAAQ,GAAG;AACfpW,QAAAA,EAAE,EAAE4L,IAAI,CAAC8J,aAAa,CAAC,IAAI,CAAC;AAC5B;QACAtY,IAAI,EAAE0X,kBAAkB,CAAC1X,IAAI;AAC7BoY,QAAAA,aAAa,EAAED,eAAe,GACzBY,UAAU,CAACX,aAAa,IAAI,EAAE,GAC9B,CAAAV,kBAAkB,KAAlBA,IAAAA,IAAAA,kBAAkB,uBAAlBA,kBAAkB,CAAEU,aAAa,KAAI,EAAA;OAC3C,CAAA;MACD,MAAMb,MAAM,CAACyB,QAAQ,CAAC,CAAA;KACvB,CAAC,OAAOrf,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK,CAAC,CAAA;AACjC,KAAA;GACD,CAAA;EAED,oBACEf,IAAA,CAACqgB,IAAI,EAAA;IAACC,QAAQ,EAAA,IAAA;AAACngB,IAAAA,SAAS,EAAC,QAAQ;IAAAP,QAAA,EAAA,cAC/BI,IAAA,CAACmH,IAAI,EAAA;AACHyO,MAAAA,IAAI,EAAEA,IAAK;AACX2K,MAAAA,MAAM,EAAC,UAAU;AACjB/Y,MAAAA,YAAY,EAAC,KAAK;AAClBC,MAAAA,KAAK,EAAE;AAAE+Y,QAAAA,IAAI,EAAE,CAAC;AAAEC,QAAAA,SAAS,EAAE,MAAA;OAAS;AAAA7gB,MAAAA,QAAA,EAGtCE,cAAAA,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AACRP,QAAAA,IAAI,EAAC,MAAM;AACXQ,QAAAA,KAAK,EAAEmX,MAAM,CAAC3X,IAAI,CAACQ,KAAAA;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;QACAC,QAAQ,EAAA,IAAA;QAAAjI,QAAA,eAERE,GAAA,CAACgI,KAAK,EAAA;AACJS,UAAAA,WAAW,EAAEwW,MAAM,CAAC3X,IAAI,CAACmB,WAAY;AACrCrB,UAAAA,QAAQ,EAAE2X,SAAAA;SACX,CAAA;OACQ,CAAC,EAGXU,eAAe,iBACdzf,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AACRP,QAAAA,IAAI,EAAC,eAAe;AACpBQ,QAAAA,KAAK,EAAEmX,MAAM,CAACS,aAAa,CAAC5X,KAAAA;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;QACAC,QAAQ,EAAA,IAAA;AAAAjI,QAAAA,QAAA,eAERE,GAAA,CAAC4gB,QAAQ,CAACC,KAAK,EAAA;AACbxgB,UAAAA,SAAS,EAAC,wBAAwB;AAClC8H,UAAAA,QAAQ,EAAE+X,oBAAqB;UAAApgB,QAAA,EAE9B+f,eAAe,CAAC1d,GAAG,CAAC2d,QAAQ,iBAC3B9f,GAAA,CAAC4gB,QAAQ,EAAA;YAEPnc,KAAK,EAAEqb,QAAQ,CAACxY,IAAK;YACrBF,QAAQ,EAAE0Y,QAAQ,CAAC1Y,QAAS;YAAAtH,QAAA,EAE3BggB,QAAQ,CAAChY,KAAAA;WAJLgY,EAAAA,QAAQ,CAACxY,IAKN,CACX,CAAA;SACa,CAAA;OACP,CACZ,EAGA2X,MAAM,CAAClB,WAAW,iBACjB/d,GAAA,CAACqH,IAAI,CAACQ,IAAI,EAAA;AACRP,QAAAA,IAAI,EAAC,aAAa;AAClBQ,QAAAA,KAAK,EAAEmX,MAAM,CAAClB,WAAW,CAACjW,KAAM;AAAAhI,QAAAA,QAAA,eAEhCE,GAAA,CAACgI,KAAK,CAACE,QAAQ,EAAA;AACb4Y,UAAAA,IAAI,EAAE,CAAE;AACRrY,UAAAA,WAAW,EAAEwW,MAAM,CAAClB,WAAW,CAACtV,WAAY;AAC5CrB,UAAAA,QAAQ,EAAE2X,SAAU;AACpBpX,UAAAA,KAAK,EAAE;AACLoZ,YAAAA,MAAM,EAAE,MAAA;AACV,WAAA;SACD,CAAA;AAAC,OACO,CACZ,CAAA;KACG,CAAC,EACNhC,SAAS,gBACR/e,GAAA,CAACye,YAAY,EAAAzd,cAAA,CAAAA,cAAA,CAAA;AACXgR,MAAAA,MAAM,EAAEoO,UAAAA;AAAW,KAAA,EACdX,eAAe,IAAI;MAAErY,QAAQ,EAAE,CAACmY,eAAe,CAAC1gB,MAAAA;KAAQ,CAAA,EAAA,EAAA,EAAA;MAAAiB,QAAA,EAE5Dsd,KAAK,CAAC8B,UAAAA;AAAU,KAAA,CACL,CAAC,gBAEflf,GAAA,CAACye,YAAY,EAAA;AACXzM,MAAAA,MAAM,EAAE4M,MAAO;AACfnV,MAAAA,OAAO,EAAEqV,SAAU;MAAAhf,QAAA,EAElBsd,KAAK,CAAC+B,UAAAA;AAAU,KACL,CACf,CAAA;AAAA,GACG,CAAC,CAAA;AAEX,CAAC,CAAC;;AClSF,MAAM6B,MAAM,GAAGrhB,IAAA,IAkCT;EAAA,IAlCU;IACdqH,IAAI;IACJgO,OAAO;AACP;IACAiM,aAAa;IACbC,UAAU;IACVC,YAAY;IACZC,UAAU;IACVC,aAAa;AAAG;IAChBC,WAAW;AAAK;AAChB;AACArC,IAAAA,MAAM,GAAG;AACP3X,MAAAA,IAAI,EAAE;AACJQ,QAAAA,KAAK,EAAE,MAAM;AACbW,QAAAA,WAAW,EAAE,mBAAmB;AAChCV,QAAAA,QAAQ,EAAE,IAAA;AACZ,OAAA;KACD;AACDqV,IAAAA,KAAK,GAAG;AACNxd,MAAAA,KAAK,EAAE,mBAAmB;AAC1Bqe,MAAAA,SAAS,EAAE,+CAA+C;AAC1DsD,MAAAA,aAAa,EAAE,wCAAwC;AACvDC,MAAAA,WAAW,EAAE,sCAAsC;AACnDC,MAAAA,QAAQ,EAAE,YAAY;AACtBC,MAAAA,WAAW,EAAE,SAAS;AACtBrE,MAAAA,SAAS,EAAE,YAAY;AACvBC,MAAAA,YAAY,EAAE,QAAQ;AACtB4B,MAAAA,UAAU,EAAE,MAAM;AAClBC,MAAAA,UAAU,EAAE,MAAA;KACb;AACD;AACAxZ,IAAAA,KAAK,GAAG,IAAI;AACZgc,IAAAA,MAAM,GAAG,GAAG;AACZthB,IAAAA,SAAS,GAAG,EAAA;AACd,GAAC,GAAAV,IAAA,CAAA;EACC,MAAM;AAAEmB,IAAAA,OAAO,EAAE8gB,WAAW;AAAEvX,IAAAA,KAAK,EAAEyH,SAAAA;AAAU,GAAC,GAAGlM,GAAG,CAACC,MAAM,EAAE,CAAA;EAC/D,MAAM,CAACgc,UAAU,EAAEC,aAAa,CAAC,GAAGnhB,QAAQ,CAAC,EAAE,CAAC,CAAA;EAChD,MAAM,CAACohB,cAAc,EAAEC,iBAAiB,CAAC,GAAGrhB,QAAQ,CAAC,IAAI,CAAC,CAAA;EAC1D,MAAM,CAAC8I,OAAO,EAAEC,UAAU,CAAC,GAAG/I,QAAQ,CAAC,KAAK,CAAC,CAAA;EAC7C,MAAM,CAACye,aAAa,EAAE6C,gBAAgB,CAAC,GAAGthB,QAAQ,CAAC,CAAC,CAAC,CAAA;EACrD,MAAM,CAACmV,IAAI,CAAC,GAAGzO,IAAI,CAAC0O,OAAO,EAAE,CAAA;AAE7B,EAAA,MAAMmM,eAAe,GAAGrhB,WAAW,CAAC,YAAY;IAC9C,IAAI;AACF,MAAA,MAAMY,IAAI,GAAG,MAAMwf,aAAa,EAAE,CAAA;AAClC,MAAA,MAAMkB,OAAO,GAAG,CAAA1gB,IAAI,KAAJA,IAAAA,IAAAA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAE2gB,WAAW,KAAI3gB,IAAI,IAAI,EAAE,CAAA;MAC/CqgB,aAAa,CAACK,OAAO,CAAC,CAAA;;AAEtB;AACA,MAAA,IAAIA,OAAO,CAACtjB,MAAM,GAAG,CAAC,EAAE;AACtB,QAAA,MAAMwjB,WAAW,GAAGF,OAAO,CAAC,CAAC,CAAC,CAAA;QAC9BH,iBAAiB,CAACK,WAAW,CAAC,CAAA;AAC9BvM,QAAAA,IAAI,CAAC+B,cAAc,CAACwK,WAAW,CAAC,CAAA;AAChCJ,QAAAA,gBAAgB,CAAClhB,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC,CAAA;AACpC,OAAA;KACD,CAAC,OAAOE,KAAK,EAAE;AACbC,MAAAA,OAAO,CAACD,KAAK,CAAC,8BAA8B,EAAEA,KAAK,CAAC,CAAA;AACvD,KAAA;AACF,GAAC,EAAE,CAACggB,aAAa,CAAC,CAAC,CAAA;AAEnB,EAAA,MAAMqB,kBAAkB,GAAGzhB,WAAW,CAAE0hB,MAAM,IAAK;IACjDP,iBAAiB,CAACO,MAAM,CAAC,CAAA;AACzBzM,IAAAA,IAAI,CAAC+B,cAAc,CAAC0K,MAAM,CAAC,CAAA;AAC3BN,IAAAA,gBAAgB,CAAClhB,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC,CAAA;AACpC,GAAC,EAAE,CAAC+U,IAAI,CAAC,CAAC,CAAA;AAEV,EAAA,MAAM0M,YAAY,GAAG3hB,WAAW,CAAC,MAAM;AAAA,IAAA,IAAA4hB,qBAAA,CAAA;AACrC,IAAA,MAAMC,aAAa,GAAGb,UAAU,CAACc,IAAI,CAACvgB,IAAI,IAAI,CAACA,IAAI,CAAC8H,EAAE,CAAC,CAAA;AAEvD,IAAA,IAAIwY,aAAa,EAAE;AACjBd,MAAAA,WAAW,CAACgB,OAAO,CAAC,mCAAmC,CAAC,CAAA;AACxD,MAAA,OAAA;AACF,KAAA;;AAEA;AACA,IAAA,MAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAAC9D,MAAM,CAAC,CAAC+D,MAAM,CAAC,CAACC,GAAG,EAAEC,SAAS,KAAK;AAC/DD,MAAAA,GAAG,CAACC,SAAS,CAAC,GAAG,EAAE,CAAA;AACnB,MAAA,OAAOD,GAAG,CAAA;KACX,EAAE,EAAE,CAAC,CAAA;;AAEN;IACA,IAAAR,CAAAA,qBAAA,GAAIxD,MAAM,CAACS,aAAa,MAAA+C,IAAAA,IAAAA,qBAAA,KAApBA,KAAAA,CAAAA,IAAAA,qBAAA,CAAsB7Z,OAAO,EAAE;AACjCia,MAAAA,SAAS,CAACnD,aAAa,GAAGT,MAAM,CAACS,aAAa,CAAC9W,OAAO,CAACzG,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACkF,IAAI,CAAC,CAAA;AAC/E,KAAA;AAEAwa,IAAAA,aAAa,CAAC,CAAC,GAAGD,UAAU,EAAEgB,SAAS,CAAC,CAAC,CAAA;IACzCb,iBAAiB,CAACa,SAAS,CAAC,CAAA;AAC5B/M,IAAAA,IAAI,CAAC+B,cAAc,CAACgL,SAAS,CAAC,CAAA;GAC/B,EAAE,CAAC/M,IAAI,EAAE+L,UAAU,EAAED,WAAW,CAAC,CAAC,CAAA;AAEnC,EAAA,MAAMuB,YAAY,GAAGtiB,WAAW,CAAC,YAAY;IAC3C,IAAI,CAACkhB,cAAc,EAAE,OAAA;;AAErB;AACA,IAAA,MAAMqB,eAAe,GAAG,CAACrB,cAAc,CAAC7X,EAAE,CAAA;AAC1C,IAAA,MAAMmZ,UAAU,GAAGtB,cAAc,CAACza,IAAI,IAAI,iBAAiB,CAAA;IAE3D,IAAI;MACFwK,SAAS,CAACG,OAAO,CAAC;AAChBC,QAAAA,IAAI,eAAElS,GAAA,CAACmS,uBAAuB,IAAE,CAAC;AACjCvS,QAAAA,KAAK,EAAE,eAAe;QACtB0jB,OAAO,EAAA,EAAA,CAAAhjB,MAAA,CAAK8c,KAAK,CAACmE,aAAa,EAAAjhB,KAAAA,CAAAA,CAAAA,MAAA,CAAK+iB,UAAU,EAAI,KAAA,CAAA;AAClD3d,QAAAA,UAAU,EAAE,IAAI;AAChBD,QAAAA,MAAM,EAAE,KAAK;QACbF,IAAI,EAAE,YAAY;AAChB;UACA,MAAMge,YAAY,GAAG1B,UAAU,CAACnV,SAAS,CAACtK,IAAI,IAC5CghB,eAAe,GAAG,CAAChhB,IAAI,CAAC8H,EAAE,GAAG9H,IAAI,CAAC8H,EAAE,KAAK6X,cAAc,CAAC7X,EAC1D,CAAC,CAAA;UAED,IAAI,CAACkZ,eAAe,EAAE;AACpB,YAAA,MAAMjC,YAAY,CAAC;cAAEjX,EAAE,EAAE6X,cAAc,CAAC7X,EAAAA;AAAG,aAAC,CAAC,CAAA;AAC7C0X,YAAAA,WAAW,CAACzR,OAAO,CAACiN,KAAK,CAACsE,WAAW,CAAC,CAAA;AACxC,WAAC,MAAM;AACL;AACAI,YAAAA,aAAa,CAAC/gB,IAAI,IAAIA,IAAI,CAACuB,MAAM,CAACF,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC8H,EAAE,CAAC,CAAC,CAAA;AACvD,WAAA;;AAEA;AACA,UAAA,MAAMsZ,WAAW,GAAGJ,eAAe,GAC/BvB,UAAU,CAACvf,MAAM,CAACF,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC8H,EAAE,CAAC,GACpC,MAAM+W,aAAa,EAAE,CAAC5F,IAAI,CAAC5Z,IAAI,IAAI,CAAAA,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJA,IAAI,CAAE2gB,WAAW,KAAI3gB,IAAI,IAAI,EAAE,CAAC,CAAA;;AAEvE;UACAqgB,aAAa,CAAC0B,WAAW,CAAC,CAAA;AAE1B,UAAA,IAAIA,WAAW,CAAC3kB,MAAM,GAAG,CAAC,EAAE;AAC1B;YACA,IAAI4kB,SAAS,GAAG,CAAC,CAAA;YAEjB,IAAIF,YAAY,GAAG,CAAC,EAAE;AACpB;AACA,cAAA,IAAIA,YAAY,GAAGC,WAAW,CAAC3kB,MAAM,EAAE;gBACrC4kB,SAAS,GAAGF,YAAY,CAAC;AAC3B,eAAC,MAAM;AACLE,gBAAAA,SAAS,GAAGD,WAAW,CAAC3kB,MAAM,GAAG,CAAC,CAAC;AACrC,eAAA;AACF,aAAA;AAEA,YAAA,MAAM6kB,UAAU,GAAGF,WAAW,CAACC,SAAS,CAAC,CAAA;AACzC,YAAA,IAAIC,UAAU,EAAE;cACd1B,iBAAiB,CAAC0B,UAAU,CAAC,CAAA;AAC7B5N,cAAAA,IAAI,CAAC+B,cAAc,CAAC6L,UAAU,CAAC,CAAA;AAC/BzB,cAAAA,gBAAgB,CAAClhB,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC,CAAA;AAClC,cAAA,OAAA;AACF,aAAA;AACF,WAAA;;AAEA;UACAihB,iBAAiB,CAAC,IAAI,CAAC,CAAA;UACvBlM,IAAI,CAACyB,WAAW,EAAE,CAAA;AACpB,SAAA;AACF,OAAC,CAAC,CAAA;KACH,CAAC,OAAOtW,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC,CAAA;AAClD,KAAA;AACF,GAAC,EAAE,CAAC8gB,cAAc,EAAEjM,IAAI,EAAEhE,SAAS,EAAE8P,WAAW,EAAExE,KAAK,EAAE+D,YAAY,EAAEF,aAAa,CAAC,CAAC,CAAA;AAEtF,EAAA,MAAM0C,gBAAgB,GAAG9iB,WAAW,CAAC,MAAOyf,QAAQ,IAAK;IACvD,IAAI,CAACA,QAAQ,EAAE,OAAA;;AAEf;IACAxO,SAAS,CAACG,OAAO,CAAC;AAChBrS,MAAAA,KAAK,EAAE,aAAa;AACpB0jB,MAAAA,OAAO,EAAAhjB,EAAAA,CAAAA,MAAA,CAAK8c,KAAK,CAACoE,WAAW,EAAAlhB,KAAAA,CAAAA,CAAAA,MAAA,CAAKggB,QAAQ,CAAChZ,IAAI,EAAI,KAAA,CAAA;AACnD5B,MAAAA,UAAU,EAAE,IAAI;AAChBD,MAAAA,MAAM,EAAE,KAAK;MACbF,IAAI,EAAE,YAAY;AAChB;AACA,QAAA,MAAMqe,aAAa,GAAG7c,KAAK,CAAC8c,IAAI,CAAC;UAC/BjkB,KAAK,EAAEwd,KAAK,CAACqE,QAAQ;UACrB6B,OAAO,eAAEtjB,GAAA,CAACgR,IAAI,EAAA;AAACO,YAAAA,IAAI,EAAC,OAAO;AAAClR,YAAAA,SAAS,EAAC,eAAA;AAAe,WAAE,CAAC;AACxD4G,UAAAA,YAAY,EAAE,KAAK;AACnB6c,UAAAA,aAAa,EAAE;AAAEnc,YAAAA,KAAK,EAAE;AAAE4G,cAAAA,OAAO,EAAE,MAAA;AAAO,aAAA;AAAE,WAAA;AAC9C,SAAC,CAAC,CAAA;QAEF,IAAI;UACF,MAAM6S,UAAU,CAAApgB,cAAA,CAAA;YACdkJ,EAAE,EAAEoW,QAAQ,CAACpW,EAAAA;WACToW,EAAAA,QAAQ,CAACZ,aAAa,IAAI;YAAEA,aAAa,EAAEY,QAAQ,CAACZ,aAAAA;AAAc,WAAC,CACxE,CAAC,CAAA;AACF;AACA9P,UAAAA,UAAU,CAAC,MAAM;YACfgU,aAAa,CAACG,OAAO,EAAE,CAAA;AACvBnC,YAAAA,WAAW,CAACzR,OAAO,CAACiN,KAAK,CAACsE,WAAW,CAAC,CAAA;;AAEtC;AACA,YAAA,IAAIL,aAAa,EAAE;cACjBA,aAAa,CAACf,QAAQ,CAAC,CAAA;AACzB,aAAA;WACD,EAAE,IAAI,CAAC,CAAA;SACT,CAAC,OAAOrf,KAAK,EAAE;AACdC,UAAAA,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC,CAAA;UAC9C2iB,aAAa,CAACG,OAAO,EAAE,CAAA;;AAEvB;AACA,UAAA,IAAIzC,WAAW,EAAE;AACfA,YAAAA,WAAW,CAACrgB,KAAK,EAAEqf,QAAQ,CAAC,CAAA;AAC9B,WAAA;AACF,SAAA;AACF,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAC,EAAE,CAACc,UAAU,EAAEhE,KAAK,EAAEwE,WAAW,EAAE9P,SAAS,EAAEuP,aAAa,EAAEC,WAAW,CAAC,CAAC,CAAA;AAE3E,EAAA,MAAM0C,UAAU,GAAGnjB,WAAW,CAAC,YAAY;IACzC6I,UAAU,CAAC,IAAI,CAAC,CAAA;IAEhB,IAAI;MAAA,IAAAua,YAAA,EAAAC,sBAAA,CAAA;AACF,MAAA,MAAMzM,MAAM,GAAG,MAAM3B,IAAI,CAACqO,cAAc,EAAE,CAAA;;AAE1C;MACA,IAAAF,CAAAA,YAAA,GAAIhF,MAAM,CAAC3X,IAAI,MAAA2c,IAAAA,IAAAA,YAAA,KAAXA,KAAAA,CAAAA,IAAAA,YAAA,CAAalc,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC0P,MAAM,CAACnQ,IAAI,IAAImQ,MAAM,CAACnQ,IAAI,CAACb,IAAI,EAAE,KAAK,EAAE,EAAE;AAC7Cmb,UAAAA,WAAW,CAAC3gB,KAAK,CAAC,mBAAmB,CAAC,CAAA;AACtC,UAAA,OAAO;AACT,SAAA;AACF,OAAA;;AAEA;MACA,IAAAijB,CAAAA,sBAAA,GAAIjF,MAAM,CAACS,aAAa,MAAAwE,IAAAA,IAAAA,sBAAA,KAApBA,KAAAA,CAAAA,IAAAA,sBAAA,CAAsBnc,QAAQ,EAAE;AAClC,QAAA,IAAI,CAAC0P,MAAM,CAACiI,aAAa,IAAIjI,MAAM,CAACiI,aAAa,CAAC7gB,MAAM,KAAK,CAAC,EAAE;AAC9D+iB,UAAAA,WAAW,CAAC3gB,KAAK,CAAC,uBAAuB,CAAC,CAAA;AAC1C,UAAA,OAAA;AACF,SAAA;AACF,OAAA;MAEA,MAAMigB,UAAU,CAACzJ,MAAM,CAAC,CAAA;AACxBmK,MAAAA,WAAW,CAACzR,OAAO,CAACiN,KAAK,CAACsE,WAAW,CAAC,CAAA;AAEtC,MAAA,MAAM0C,eAAe,GAAG3M,MAAM,CAACnQ,IAAI,CAAA;;AAEnC;AACA,MAAA,MAAM7F,IAAI,GAAG,MAAMwf,aAAa,EAAE,CAAA;AAClC,MAAA,MAAMkB,OAAO,GAAG,CAAA1gB,IAAI,KAAJA,IAAAA,IAAAA,IAAI,KAAJA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAE2gB,WAAW,KAAI3gB,IAAI,IAAI,EAAE,CAAA;MAC/CqgB,aAAa,CAACK,OAAO,CAAC,CAAA;;AAEtB;AACA,MAAA,MAAMkC,gBAAgB,GAAGlC,OAAO,CAACQ,IAAI,CAACvgB,IAAI,IAAIA,IAAI,CAACkF,IAAI,KAAK8c,eAAe,CAAC,CAAA;AAE5E,MAAA,IAAIC,gBAAgB,EAAE;QACpBrC,iBAAiB,CAACqC,gBAAgB,CAAC,CAAA;AACnCvO,QAAAA,IAAI,CAAC+B,cAAc,CAACwM,gBAAgB,CAAC,CAAA;AACrCpC,QAAAA,gBAAgB,CAAClhB,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC,CAAA;AACpC,OAAC,MAAM;QACLihB,iBAAiB,CAACvK,MAAM,CAAC,CAAA;AAC3B,OAAA;KACD,CAAC,OAAOxW,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC,CAAA;AAChD,KAAC,SAAS;MACRyI,UAAU,CAAC,KAAK,CAAC,CAAA;AACnB,KAAA;AACF,GAAC,EAAE,CAACoM,IAAI,EAAE8L,WAAW,EAAExE,KAAK,EAAE8D,UAAU,EAAED,aAAa,CAAC,CAAC,CAAA;;AAEzD;AACApX,EAAAA,SAAS,CAAC,MAAM;AACdqY,IAAAA,eAAe,EAAE,CAAA;AACnB,GAAC,EAAE,CAACA,eAAe,CAAC,CAAC,CAAA;EAErB,oBACEliB,GAAA,CAAC+G,KAAK,EAAA;IACJnH,KAAK,EAAEwd,KAAK,CAACxd,KAAM;AACnB+F,IAAAA,KAAK,EAAEA,KAAM;AACbqB,IAAAA,IAAI,EAAEA,IAAK;AACXsd,IAAAA,aAAa,EAAAhkB,oBAAAA,CAAAA,MAAA,CAAuBD,SAAS,CAAG;AAChDkZ,IAAAA,MAAM,EAAE,IAAK;AACbjU,IAAAA,QAAQ,EAAE0P,OAAQ;IAClBmE,QAAQ,EAAA,IAAA;AACRE,IAAAA,MAAM,EAAE;AACN3K,MAAAA,IAAI,EAAE;QACJiT,MAAM,EAAA,EAAA,CAAArhB,MAAA,CAAKqhB,MAAM,EAAA,IAAA,CAAA;AACnB,OAAA;KACA;IAAA7hB,QAAA,eAEFI,IAAA,CAACqkB,GAAG,EAAA;AAACC,MAAAA,MAAM,EAAE,CAAE;AAACnkB,MAAAA,SAAS,EAAC,eAAe;MAAAP,QAAA,EAAA,cACvCE,GAAA,CAACykB,GAAG,EAAA;AAACjd,QAAAA,IAAI,EAAE,EAAG;AAACnH,QAAAA,SAAS,EAAC,QAAQ;QAAAP,QAAA,eAC/BE,GAAA,CAAC4c,QAAQ,EAAA;AACPC,UAAAA,UAAU,EAAEgF,UAAW;AACvB/E,UAAAA,gBAAgB,EAAEiF,cAAc,KAAA,IAAA,IAAdA,cAAc,KAAdA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAc,CAAE7X,EAAG;AACrC6S,UAAAA,cAAc,EAAEuF,kBAAmB;AACnCtF,UAAAA,QAAQ,EAAEwF,YAAa;AACvBvF,UAAAA,QAAQ,EAAEkG,YAAa;AACvBhG,UAAAA,eAAe,EAAE,CAAC,CAAC8B,MAAM,CAAClB,WAAY;AAAC;AACvCX,UAAAA,KAAK,EAAE;YACLC,SAAS,EAAED,KAAK,CAACC,SAAS;YAC1BC,YAAY,EAAEF,KAAK,CAACE,YAAAA;AACtB,WAAA;SACD,CAAA;AAAC,OACC,CAAC,eACNtd,GAAA,CAACykB,GAAG,EAAA;AAACjd,QAAAA,IAAI,EAAE,EAAG;AAACnH,QAAAA,SAAS,EAAC,YAAY;AAAAP,QAAAA,QAAA,EAClCiiB,cAAc,gBACb/hB,GAAA,CAAC0e,eAAe,EAAA;AACd5I,UAAAA,IAAI,EAAEA,IAAK;AACX8I,UAAAA,MAAM,EAAEoF,UAAW;AACnBnF,UAAAA,MAAM,EAAE8E,gBAAiB;AACzB7E,UAAAA,SAAS,EAAErV,OAAQ;UACnBsV,SAAS,EAAE,CAAC,EAACgD,cAAc,KAAA,IAAA,IAAdA,cAAc,KAAdA,KAAAA,CAAAA,IAAAA,cAAc,CAAE7X,EAAE,CAAC;UAChC8U,kBAAkB,EAAE+C,cAAe;AAAC;AACpC9C,UAAAA,MAAM,EAAEA,MAAO;AACf7B,UAAAA,KAAK,EAAE;YACL8B,UAAU,EAAE9B,KAAK,CAAC8B,UAAU;YAC5BC,UAAU,EAAE/B,KAAK,CAAC+B,UAAAA;WAClB;AACFC,UAAAA,aAAa,EAAEA,aAAAA;AAAc,SAC9B,CAAC,gBAEFpf,GAAA,CAACugB,IAAI,EAAA;UAACC,QAAQ,EAAA,IAAA;AAACkE,UAAAA,OAAO,EAAC,QAAQ;AAACC,UAAAA,KAAK,EAAC,QAAQ;AAACtkB,UAAAA,SAAS,EAAC,sBAAsB;UAAAP,QAAA,eAC7EE,GAAA,CAACke,KAAK,EAAA;YACJC,KAAK,EAAED,KAAK,CAACE,sBAAuB;YACpCL,WAAW,EAAEX,KAAK,CAACa,SAAAA;WACpB,CAAA;SACG,CAAA;AACP,OACE,CAAC,CAAA;KACH,CAAA;AAAC,GACD,CAAC,CAAA;AAEZ,CAAC,CAAA;AAED,kBAAeve,aAAAA,IAAI,CAACshB,MAAM,CAAC;;;ACjU3B,MAAM4D,cAAc,GAAGjlB,IAAA,IAWhB;EAAA,IAXiB;AACtB+K,MAAAA,SAAS,GAAG,EAAE;MACdC,WAAW;MACXC,aAAa;MACbC,cAAc;MACdC,aAAa;AACbC,MAAAA,eAAe,GAAG,0BAA0B;AAC5CC,MAAAA,mBAAmB,GAAG,IAAI;AAC1BC,MAAAA,qBAAqB,GAAG,IAAI;AAC5BnL,MAAAA,QAAAA;AAED,KAAC,GAAAH,IAAA;AADGklB,IAAAA,aAAa,GAAAC,wBAAA,CAAAnlB,IAAA,EAAAolB,WAAA,CAAA,CAAA;AAEhB,EAAA,MAAM,CAACvU,cAAc,CAAC,GAAG/F,YAAU,CAAC;IAClCC,SAAS;IACTC,WAAW;IACXC,aAAa;IACbC,cAAc;IACdC,aAAa;IACbC,eAAe;IACfC,mBAAmB;AACnBC,IAAAA,qBAAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,IAAInL,QAAQ,EAAE;AACZ;IACA,MAAMklB,eAAe,GAAGxU,cAAc,CAACkC,KAAK,CAAC5S,QAAQ,CAAC,CAAC,CAAC,CAAA;IACxD,MAAMmlB,aAAa,GAAGzU,cAAc,CAACkC,KAAK,CAAC5S,QAAQ,CAAC+M,KAAK,CAAC,CAAC,CAAC,CAAA;IAE5D,oBACE3M,IAAA,CAAAC,QAAA,EAAA;AAAAL,MAAAA,QAAA,EACEE,cAAAA,GAAA,CAACyQ,QAAQ,EAAAzP,cAAA,CAAAA,cAAA,CAAAA,cAAA,CACH6jB,EAAAA,EAAAA,aAAa,CACbG,EAAAA,eAAe,CAACtS,KAAK,CAAA,EAAA,EAAA,EAAA;AAAA5S,QAAAA,QAAA,EAExBA,QAAAA;OACO,CAAA,CAAC,EACVmlB,aAAa,CAAA;AAAA,KACd,CAAC,CAAA;AAEP,GAAA;;AAEA;AACA,EAAA,OAAOzU,cAAc,CAAA;AACtB,CAAC,CAAA;AAEDoU,cAAc,CAACM,YAAY,GAAG;EAC7BtU,OAAO,EAAE,CAAC,OAAO,CAAC;AAClBuU,EAAAA,SAAS,EAAE,aAAA;AACb,CAAC,CAAA;AAED,uBAAeP,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;AC5ChB,IAAI,CAAC,CAAC,UAAU,GAAG,OAAO,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrf,CAAA,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAA;AACvQ,CAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,sBAAiB,CAAA,SAAA,CAAC,CAAC,CAAC,sBAAA,CAAA,cAAsB,CAAC,CAAC,CAAC,sBAAuB,CAAA,eAAA,CAAC,CAAC,CAAC,sCAAuB,CAAC,CAAC,CAAC,sBAAA,CAAA,OAAe,CAAC,CAAC,CAAC,sBAAkB,CAAA,UAAA,CAAC,CAAC,CAAC,sBAAA,CAAA,QAAgB,CAAC,CAAC,CAAC,sBAAY,CAAA,IAAA,CAAC,CAAC,CAAC,2BAAY,CAAC,CAAC,CAAC,sBAAA,CAAA,MAAc,CAAC,CAAC,CAAA;AACjf,CAAA,sBAAA,CAAA,QAAgB,CAAC,CAAC,CAAC,sBAAA,CAAA,UAAkB,CAAC,CAAC,CAAC,sBAAA,CAAA,QAAgB,CAAC,CAAC,CAAC,sBAAA,CAAA,WAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAwB,CAAA,gBAAA,CAAC,CAAC,CAAC,sBAAyB,CAAA,iBAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAyB,CAAA,iBAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAiB,CAAA,SAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,sBAAoB,CAAA,YAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAkB,CAAA,UAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAc,CAAA,MAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3d,CAAA,sBAAA,CAAA,MAAc,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,+BAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAkB,CAAA,UAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAA,CAAA,YAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAkB,CAAA,UAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3O,CAA0B,sBAAA,CAAA,kBAAA,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAc,CAAA,MAAA,CAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;ACDpU,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC3C,GAAE,CAAC,WAAW;;AAGd;AACA;CACA,IAAI,SAAS,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,CAAA;CAC1D,IAAI,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,MAAM,CAAA;CACzE,IAAI,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;CACvE,IAAI,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAA;CAC3E,IAAI,sBAAsB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAA;CACjF,IAAI,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAA;CAC3E,IAAI,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAA;AAC3E,CAAA,IAAI,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC;AAC1E;;CAEA,IAAI,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAA;CAC/E,IAAI,0BAA0B,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAA;CACzF,IAAI,sBAAsB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAA;CACjF,IAAI,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAA;CAC3E,IAAI,wBAAwB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAA;CACrF,IAAI,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,MAAM,CAAA;CACnE,IAAI,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,MAAM,CAAA;CACnE,IAAI,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,MAAM,CAAA;CACrE,IAAI,sBAAsB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAA;CACjF,IAAI,oBAAoB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAA;CAC7E,IAAI,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,MAAM,CAAA;;CAErE,SAAS,kBAAkB,CAAC,IAAI,EAAE;GAChC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,UAAU;AAC/D,GAAE,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,0BAA0B,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,wBAAwB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,mBAAmB,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,IAAI,IAAI,CAAC,QAAQ,KAAK,oBAAoB,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,CAAC,CAAA;AACrmB,EAAA;;CAEA,SAAS,MAAM,CAAC,MAAM,EAAE;GACtB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AACrD,KAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;;AAElC,KAAI,QAAQ,QAAQ;AACpB,OAAM,KAAK,kBAAkB;AAC7B,SAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;;AAE9B,SAAQ,QAAQ,IAAI;AACpB,WAAU,KAAK,qBAAqB,CAAA;AACpC,WAAU,KAAK,0BAA0B,CAAA;AACzC,WAAU,KAAK,mBAAmB,CAAA;AAClC,WAAU,KAAK,mBAAmB,CAAA;AAClC,WAAU,KAAK,sBAAsB,CAAA;AACrC,WAAU,KAAK,mBAAmB;AAClC,aAAY,OAAO,IAAI,CAAA;;WAEb;AACV,aAAY,IAAI,YAAY,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAA;;AAEpD,aAAY,QAAQ,YAAY;AAChC,eAAc,KAAK,kBAAkB,CAAA;AACrC,eAAc,KAAK,sBAAsB,CAAA;AACzC,eAAc,KAAK,eAAe,CAAA;AAClC,eAAc,KAAK,eAAe,CAAA;AAClC,eAAc,KAAK,mBAAmB;AACtC,iBAAgB,OAAO,YAAY,CAAA;;eAErB;AACd,iBAAgB,OAAO,QAAQ,CAAA;AAC/B,cAAA;;AAEA,UAAA;;AAEA,OAAM,KAAK,iBAAiB;AAC5B,SAAQ,OAAO,QAAQ,CAAA;AACvB,MAAA;AACA,IAAA;;AAEA,GAAE,OAAO,SAAS,CAAA;EACjB;;CAED,IAAI,SAAS,GAAG,qBAAqB,CAAA;CACrC,IAAI,cAAc,GAAG,0BAA0B,CAAA;CAC/C,IAAI,eAAe,GAAG,kBAAkB,CAAA;CACxC,IAAI,eAAe,GAAG,mBAAmB,CAAA;CACzC,IAAI,OAAO,GAAG,kBAAkB,CAAA;CAChC,IAAI,UAAU,GAAG,sBAAsB,CAAA;CACvC,IAAI,QAAQ,GAAG,mBAAmB,CAAA;CAClC,IAAI,IAAI,GAAG,eAAe,CAAA;CAC1B,IAAI,IAAI,GAAG,eAAe,CAAA;CAC1B,IAAI,MAAM,GAAG,iBAAiB,CAAA;CAC9B,IAAI,QAAQ,GAAG,mBAAmB,CAAA;CAClC,IAAI,UAAU,GAAG,sBAAsB,CAAA;CACvC,IAAI,QAAQ,GAAG,mBAAmB,CAAA;CAClC,IAAI,mCAAmC,GAAG,KAAK,CAAC;;CAEhD,SAAS,WAAW,CAAC,MAAM,EAAE;GAC3B;KACE,IAAI,CAAC,mCAAmC,EAAE;OACxC,mCAAmC,GAAG,IAAI,CAAC;;OAE3C,OAAO,CAAC,MAAM,CAAC,CAAC,uDAAuD,GAAG,4DAA4D,GAAG,gEAAgE,CAAC,CAAA;AAChN,MAAA;AACA,IAAA;;GAEE,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,qBAAqB,CAAA;AAC7E,EAAA;CACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,0BAA0B,CAAA;AACtD,EAAA;CACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACnC,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAA;AAC9C,EAAA;CACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACnC,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAA;AAC/C,EAAA;CACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,GAAE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,kBAAkB,CAAA;AAChG,EAAA;CACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,sBAAsB,CAAA;AAClD,EAAA;CACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAA;AAC/C,EAAA;CACA,SAAS,MAAM,CAAC,MAAM,EAAE;AACxB,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe,CAAA;AAC3C,EAAA;CACA,SAAS,MAAM,CAAC,MAAM,EAAE;AACxB,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe,CAAA;AAC3C,EAAA;CACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,iBAAiB,CAAA;AAC7C,EAAA;CACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAA;AAC/C,EAAA;CACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,sBAAsB,CAAA;AAClD,EAAA;CACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,GAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAA;AAC/C,EAAA;;AAEA,CAAA,mBAAA,CAAA,SAAiB,GAAG,SAAS,CAAA;AAC7B,CAAA,mBAAA,CAAA,cAAsB,GAAG,cAAc,CAAA;AACvC,CAAA,mBAAA,CAAA,eAAuB,GAAG,eAAe,CAAA;AACzC,CAAA,mBAAA,CAAA,eAAuB,GAAG,eAAe,CAAA;AACzC,CAAA,mBAAA,CAAA,OAAe,GAAG,OAAO,CAAA;AACzB,CAAA,mBAAA,CAAA,UAAkB,GAAG,UAAU,CAAA;AAC/B,CAAA,mBAAA,CAAA,QAAgB,GAAG,QAAQ,CAAA;AAC3B,CAAA,mBAAA,CAAA,IAAY,GAAG,IAAI,CAAA;AACnB,CAAA,mBAAA,CAAA,IAAY,GAAG,IAAI,CAAA;AACnB,CAAA,mBAAA,CAAA,MAAc,GAAG,MAAM,CAAA;AACvB,CAAA,mBAAA,CAAA,QAAgB,GAAG,QAAQ,CAAA;AAC3B,CAAA,mBAAA,CAAA,UAAkB,GAAG,UAAU,CAAA;AAC/B,CAAA,mBAAA,CAAA,QAAgB,GAAG,QAAQ,CAAA;AAC3B,CAAA,mBAAA,CAAA,WAAmB,GAAG,WAAW,CAAA;AACjC,CAAA,mBAAA,CAAA,gBAAwB,GAAG,gBAAgB,CAAA;AAC3C,CAAA,mBAAA,CAAA,iBAAyB,GAAG,iBAAiB,CAAA;AAC7C,CAAA,mBAAA,CAAA,iBAAyB,GAAG,iBAAiB,CAAA;AAC7C,CAAA,mBAAA,CAAA,SAAiB,GAAG,SAAS,CAAA;AAC7B,CAAA,mBAAA,CAAA,YAAoB,GAAG,YAAY,CAAA;AACnC,CAAA,mBAAA,CAAA,UAAkB,GAAG,UAAU,CAAA;AAC/B,CAAA,mBAAA,CAAA,MAAc,GAAG,MAAM,CAAA;AACvB,CAAA,mBAAA,CAAA,MAAc,GAAG,MAAM,CAAA;AACvB,CAAA,mBAAA,CAAA,QAAgB,GAAG,QAAQ,CAAA;AAC3B,CAAA,mBAAA,CAAA,UAAkB,GAAG,UAAU,CAAA;AAC/B,CAAA,mBAAA,CAAA,YAAoB,GAAG,YAAY,CAAA;AACnC,CAAA,mBAAA,CAAA,UAAkB,GAAG,UAAU,CAAA;AAC/B,CAAA,mBAAA,CAAA,kBAA0B,GAAG,kBAAkB,CAAA;AAC/C,CAAA,mBAAA,CAAA,MAAc,GAAG,MAAM,CAAA;AACvB,IAAG,GAAG,CAAA;AACN,EAAA;;;;;;;;;;AClLA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;GACzCQ,OAAA,CAAA,OAAc,GAAGC,6BAA2C,EAAA,CAAA;AAC9D,EAAC,MAAM;GACLD,OAAA,CAAA,OAAc,GAAGE,0BAAwC,EAAA,CAAA;AAC3D,EAAA;;;;;;;;;;;;;;;;ACCA;AACA,CAAA,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAA;AACxD,CAAA,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAA;AACpD,CAAA,IAAI,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAA;;CAE5D,SAAS,QAAQ,CAAC,GAAG,EAAE;EACtB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AACxC,GAAE,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAA;AAC9E,GAAA;;AAEA,EAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACnB,EAAA;;AAEA,CAAA,SAAS,eAAe,GAAG;AAC3B,EAAC,IAAI;AACL,GAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACtB,IAAG,OAAO,KAAK,CAAA;AACf,IAAA;;AAEA;;AAEA;GACE,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,GAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACjB,GAAE,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACpD,IAAG,OAAO,KAAK,CAAA;AACf,IAAA;;AAEA;GACE,IAAI,KAAK,GAAG,EAAE,CAAA;AAChB,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAG,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAC1C,IAAA;AACA,GAAE,IAAI,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAClE,IAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;AAClB,IAAG,CAAC,CAAA;GACF,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,YAAY,EAAE;AACxC,IAAG,OAAO,KAAK,CAAA;AACf,IAAA;;AAEA;GACE,IAAI,KAAK,GAAG,EAAE,CAAA;GACd,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM,EAAE;AAC7D,IAAG,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;AACzB,IAAG,CAAC,CAAA;AACJ,GAAE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACpD,KAAI,sBAAsB,EAAE;AAC5B,IAAG,OAAO,KAAK,CAAA;AACf,IAAA;;AAEA,GAAE,OAAO,IAAI,CAAA;GACX,CAAC,OAAO,GAAG,EAAE;AACf;AACA,GAAE,OAAO,KAAK,CAAA;AACd,GAAA;AACA,EAAA;;AAEA,CAAA,YAAc,GAAG,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;AAC/E,EAAC,IAAI,IAAI,CAAA;AACT,EAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC1B,EAAC,IAAI,OAAO,CAAA;;AAEZ,EAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;GAC1C,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;;AAE7B,GAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;IACrB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;KACnC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;AACvB,KAAA;AACA,IAAA;;GAEE,IAAI,qBAAqB,EAAE;AAC7B,IAAG,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;AACxC,IAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,KAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,MAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,MAAA;AACA,KAAA;AACA,IAAA;AACA,GAAA;;AAEA,EAAC,OAAO,EAAE,CAAA;EACT,CAAA;;;;;;;;;;;;;;;;;;CChFD,IAAI,oBAAoB,GAAG,8CAA8C,CAAA;;AAEzE,CAAA,sBAAc,GAAG,oBAAoB,CAAA;;;;;;;;;;ACXrC,CAAA,GAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;;;;;;;;;;;;;;;;;;CCSpE,IAAI,YAAY,GAAG,WAAW,EAAE,CAAA;;AAEhC,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;GACzC,IAAI,oBAAoB,iBAAwCD,2BAAA,EAAA,CAAA;GAChE,IAAI,kBAAkB,GAAG,EAAE,CAAA;GAC3B,IAAI,GAAG,iBAAuBC,UAAA,EAAA,CAAA;;AAEhC,GAAE,YAAY,GAAG,SAAS,IAAI,EAAE;AAChC,KAAI,IAAI,OAAO,GAAG,WAAW,GAAG,IAAI,CAAA;AACpC,KAAI,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AACxC,OAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC5B,MAAA;AACA,KAAI,IAAI;AACR;AACA;AACA;AACA,OAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;MACzB,CAAC,OAAO,CAAC,EAAE,QAAA;IACb,CAAA;AACH,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE;GAC5E,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC7C,KAAI,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE;AACxC,OAAM,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE;AACxC,SAAQ,IAAI,KAAK,CAAA;AACjB;AACA;AACA;AACA,SAAQ,IAAI;AACZ;AACA;WACU,IAAI,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE;aACjD,IAAI,GAAG,GAAG,KAAK;AAC3B,eAAc,CAAC,aAAa,IAAI,aAAa,IAAI,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,gBAAgB;eAChG,8EAA8E,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI;eACtH,+FAAA;cACD,CAAA;AACb,aAAY,GAAG,CAAC,IAAI,GAAG,qBAAqB,CAAA;AAC5C,aAAY,MAAM,GAAG,CAAA;AACrB,YAAA;AACA,WAAU,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAA;UAC3G,CAAC,OAAO,EAAE,EAAE;WACX,KAAK,GAAG,EAAE,CAAA;AACpB,UAAA;SACQ,IAAI,KAAK,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,EAAE;AAChD,WAAU,YAAY;AACtB,aAAY,CAAC,aAAa,IAAI,aAAa,IAAI,0BAA0B;AACzE,aAAY,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,iCAAiC;AAC9E,aAAY,2DAA2D,GAAG,OAAO,KAAK,GAAG,IAAI;AAC7F,aAAY,iEAAiE;AAC7E,aAAY,gEAAgE;aAChE,iCAAA;YACD,CAAA;AACX,UAAA;AACA,SAAQ,IAAI,KAAK,YAAY,KAAK,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,EAAE;AAC9E;AACA;AACA,WAAU,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;;WAExC,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,CAAA;;AAEhD,WAAU,YAAY;AACtB,aAAY,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAA;YAC/E,CAAA;AACX,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA;CACA,cAAc,CAAC,iBAAiB,GAAG,WAAW;GAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;KACzC,kBAAkB,GAAG,EAAE,CAAA;AAC3B,IAAA;AACA,GAAA;;AAEA,CAAA,gBAAc,GAAG,cAAc,CAAA;;;;;;;;;;;;;;;;;;CC7F/B,IAAI,OAAO,GAAGD,cAAmB,EAAA,CAAA;CACjC,IAAI,MAAM,GAAGC,mBAAwB,EAAA,CAAA;;CAErC,IAAI,oBAAoB,iBAAwCC,2BAAA,EAAA,CAAA;CAChE,IAAI,GAAG,iBAAuBC,UAAA,EAAA,CAAA;CAC9B,IAAI,cAAc,iBAA8BC,qBAAA,EAAA,CAAA;;CAEhD,IAAI,YAAY,GAAG,WAAW,EAAE,CAAA;;AAEhC,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC3C,GAAE,YAAY,GAAG,SAAS,IAAI,EAAE;AAChC,KAAI,IAAI,OAAO,GAAG,WAAW,GAAG,IAAI,CAAA;AACpC,KAAI,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AACxC,OAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC5B,MAAA;AACA,KAAI,IAAI;AACR;AACA;AACA;AACA,OAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;MACzB,CAAC,OAAO,CAAC,EAAE,EAAA;IACb,CAAA;AACH,EAAA;;AAEA,CAAA,SAAS,4BAA4B,GAAG;AACxC,GAAE,OAAO,IAAI,CAAA;AACb,EAAA;;AAEA,CAAA,uBAAc,GAAG,SAAS,cAAc,EAAE,mBAAmB,EAAE;AAC/D;GACE,IAAI,eAAe,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAA;AACvE,GAAE,IAAI,oBAAoB,GAAG,YAAY,CAAC;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,aAAa,CAAC,aAAa,EAAE;AACxC,KAAI,IAAI,UAAU,GAAG,aAAa,KAAK,eAAe,IAAI,aAAa,CAAC,eAAe,CAAC,IAAI,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAChI,KAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAC1C,OAAM,OAAO,UAAU,CAAA;AACvB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;GAEE,IAAI,SAAS,GAAG,eAAe,CAAA;;AAEjC;AACA;GACE,IAAI,cAAc,GAAG;AACvB,KAAI,KAAK,EAAE,0BAA0B,CAAC,OAAO,CAAC;AAC9C,KAAI,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;AAChD,KAAI,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC;AAC/C,KAAI,IAAI,EAAE,0BAA0B,CAAC,UAAU,CAAC;AAChD,KAAI,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;AAChD,KAAI,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;AAChD,KAAI,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;AAChD,KAAI,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;;KAE5C,GAAG,EAAE,oBAAoB,EAAE;KAC3B,OAAO,EAAE,wBAAwB;KACjC,OAAO,EAAE,wBAAwB,EAAE;KACnC,WAAW,EAAE,4BAA4B,EAAE;KAC3C,UAAU,EAAE,yBAAyB;KACrC,IAAI,EAAE,iBAAiB,EAAE;KACzB,QAAQ,EAAE,yBAAyB;KACnC,KAAK,EAAE,qBAAqB;KAC5B,SAAS,EAAE,sBAAsB;KACjC,KAAK,EAAE,sBAAsB;KAC7B,KAAK,EAAE,4BAA4B;IACpC,CAAA;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACpB;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB;AACA;OACM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACvC,MAAK,MAAM;AACX;AACA,OAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC/B,MAAA;AACA,IAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AACxC,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AAC1B,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,EAAE,EAAE,CAAA;AAC3D,KAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACnB,IAAA;AACA;AACA,GAAE,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;;AAE3C,GAAE,SAAS,0BAA0B,CAAC,QAAQ,EAAE;KAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;OACzC,IAAI,uBAAuB,GAAG,EAAE,CAAA;OAChC,IAAI,0BAA0B,GAAG,CAAC,CAAA;AACxC,MAAA;AACA,KAAI,SAAS,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;AACnG,OAAM,aAAa,GAAG,aAAa,IAAI,SAAS,CAAA;AAChD,OAAM,YAAY,GAAG,YAAY,IAAI,QAAQ,CAAA;;AAE7C,OAAM,IAAI,MAAM,KAAK,oBAAoB,EAAE;SACnC,IAAI,mBAAmB,EAAE;AACjC;AACA,WAAU,IAAI,GAAG,GAAG,IAAI,KAAK;AAC7B,aAAY,sFAAsF;AAClG,aAAY,iDAAiD;aACjD,gDAAA;YACD,CAAA;AACX,WAAU,GAAG,CAAC,IAAI,GAAG,qBAAqB,CAAA;AAC1C,WAAU,MAAM,GAAG,CAAA;AACnB,UAAS,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAC5F;AACA,WAAU,IAAI,QAAQ,GAAG,aAAa,GAAG,GAAG,GAAG,QAAQ,CAAA;WAC7C;AACV,aAAY,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AAC9C;AACA,aAAY,0BAA0B,GAAG,CAAA;aAC7B;AACZ,aAAY,YAAY;AACxB,eAAc,wDAAwD;eACxD,oBAAoB,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,GAAG,wBAAwB;AAC5G,eAAc,yDAAyD;AACvE,eAAc,gEAAgE;AAC9E,eAAc,+DAA+D,GAAG,cAAA;cACnE,CAAA;AACb,aAAY,uBAAuB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;AACpD,aAAY,0BAA0B,EAAE,CAAA;AACxC,YAAA;AACA,UAAA;AACA,QAAA;AACA,OAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;SAC3B,IAAI,UAAU,EAAE;AACxB,WAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;aAC5B,OAAO,IAAI,aAAa,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,0BAA0B,IAAI,MAAM,GAAG,aAAa,GAAG,6BAA6B,CAAC,CAAC,CAAA;AACrK,YAAA;WACU,OAAO,IAAI,aAAa,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,6BAA6B,IAAI,GAAG,GAAG,aAAa,GAAG,kCAAkC,CAAC,CAAC,CAAA;AACxK,UAAA;AACA,SAAQ,OAAO,IAAI,CAAA;AACnB,QAAO,MAAM;AACb,SAAQ,OAAO,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;AAC/E,QAAA;AACA,MAAA;;KAEI,IAAI,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;KAClD,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;;AAE5D,KAAI,OAAO,gBAAgB,CAAA;AAC3B,IAAA;;AAEA,GAAE,SAAS,0BAA0B,CAAC,YAAY,EAAE;AACpD,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;AACtF,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AACrC,OAAM,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;AAC3C,OAAM,IAAI,QAAQ,KAAK,YAAY,EAAE;AACrC;AACA;AACA;AACA,SAAQ,IAAI,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;;SAE3C,OAAO,IAAI,aAAa;WACtB,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,WAAW,GAAG,iBAAiB,GAAG,aAAa,GAAG,cAAc,CAAC,IAAI,GAAG,GAAG,YAAY,GAAG,IAAI,CAAC;WACnK,CAAC,YAAY,EAAE,YAAY,CAAA;UAC5B,CAAA;AACT,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;GAEE,SAAS,oBAAoB,GAAG;AAClC,KAAI,OAAO,0BAA0B,CAAC,4BAA4B,CAAC,CAAA;AACnE,IAAA;;AAEA,GAAE,SAAS,wBAAwB,CAAC,WAAW,EAAE;AACjD,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC9E,OAAM,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AAC7C,SAAQ,OAAO,IAAI,aAAa,CAAC,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,aAAa,GAAG,iDAAiD,CAAC,CAAA;AACtJ,QAAA;AACA,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;OAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACrC,SAAQ,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;SACrC,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,uBAAuB,CAAC,CAAC,CAAA;AAC7K,QAAA;AACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACzC,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,oBAAoB,CAAC,CAAA;AAC1H,SAAQ,IAAI,KAAK,YAAY,KAAK,EAAE;AACpC,WAAU,OAAO,KAAK,CAAA;AACtB,UAAA;AACA,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;GAEE,SAAS,wBAAwB,GAAG;AACtC,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC9E,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AACrC,OAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACtC,SAAQ,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;SACrC,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,oCAAoC,CAAC,CAAC,CAAA;AAC1L,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;GAEE,SAAS,4BAA4B,GAAG;AAC1C,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC9E,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;OAC/B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;AAClD,SAAQ,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;SACrC,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,yCAAyC,CAAC,CAAC,CAAA;AAC/L,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;AAEA,GAAE,SAAS,yBAAyB,CAAC,aAAa,EAAE;AACpD,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;OACxE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,aAAa,CAAC,EAAE;AACvD,SAAQ,IAAI,iBAAiB,GAAG,aAAa,CAAC,IAAI,IAAI,SAAS,CAAA;SACvD,IAAI,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC3D,SAAQ,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,GAAG,cAAc,CAAC,IAAI,eAAe,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAA;AAC1N,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;AAEA,GAAE,SAAS,qBAAqB,CAAC,cAAc,EAAE;KAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;OAClC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AACjD,SAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,WAAU,YAAY;AACtB,aAAY,8DAA8D,GAAG,SAAS,CAAC,MAAM,GAAG,cAAc;aAClG,0EAAA;YACD,CAAA;AACX,UAAS,MAAM;WACL,YAAY,CAAC,wDAAwD,CAAC,CAAA;AAChF,UAAA;AACA,QAAA;AACA,OAAM,OAAO,4BAA4B,CAAA;AACzC,MAAA;;AAEA,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC9E,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AACrC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SAC9C,IAAI,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9C,WAAU,OAAO,IAAI,CAAA;AACrB,UAAA;AACA,QAAA;;AAEA,OAAM,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AACtF,SAAQ,IAAI,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;AACxC,SAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B,WAAU,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AAC9B,UAAA;AACA,SAAQ,OAAO,KAAK,CAAA;AACpB,QAAO,CAAC,CAAA;AACR,OAAM,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,eAAe,GAAG,aAAa,GAAG,qBAAqB,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC,CAAA;AACxM,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;AAEA,GAAE,SAAS,yBAAyB,CAAC,WAAW,EAAE;AAClD,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC9E,OAAM,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AAC7C,SAAQ,OAAO,IAAI,aAAa,CAAC,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,aAAa,GAAG,kDAAkD,CAAC,CAAA;AACvJ,QAAA;AACA,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AACrC,OAAM,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;AAC3C,OAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;SACzB,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,wBAAwB,CAAC,CAAC,CAAA;AAC9K,QAAA;AACA,OAAM,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;AACjC,SAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;WACvB,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,GAAG,EAAE,oBAAoB,CAAC,CAAA;AAC1H,WAAU,IAAI,KAAK,YAAY,KAAK,EAAE;AACtC,aAAY,OAAO,KAAK,CAAA;AACxB,YAAA;AACA,UAAA;AACA,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;AAEA,GAAE,SAAS,sBAAsB,CAAC,mBAAmB,EAAE;KACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;AAC7C,OAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,YAAY,CAAC,wEAAwE,CAAC,GAAG,KAAK,CAAC,CAAA;AAC7I,OAAM,OAAO,4BAA4B,CAAA;AACzC,MAAA;;AAEA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,OAAM,IAAI,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;AAC1C,OAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACzC,SAAQ,YAAY;AACpB,WAAU,oFAAoF;WACpF,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,GAAA;UACtE,CAAA;AACT,SAAQ,OAAO,4BAA4B,CAAA;AAC3C,QAAA;AACA,MAAA;;AAEA,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;OACxE,IAAI,aAAa,GAAG,EAAE,CAAA;AAC5B,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,SAAQ,IAAI,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;AAC5C,SAAQ,IAAI,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAA;AACjH,SAAQ,IAAI,aAAa,IAAI,IAAI,EAAE;AACnC,WAAU,OAAO,IAAI,CAAA;AACrB,UAAA;AACA,SAAQ,IAAI,aAAa,CAAC,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;WACjE,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AAC7D,UAAA;AACA,QAAA;OACM,IAAI,oBAAoB,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,0BAA0B,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,CAAA;OACvH,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,gBAAgB,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,oBAAoB,GAAG,GAAG,CAAC,CAAC,CAAA;AACzJ,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;GAEE,SAAS,iBAAiB,GAAG;AAC/B,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;OACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;SAC5B,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,gBAAgB,IAAI,GAAG,GAAG,aAAa,GAAG,0BAA0B,CAAC,CAAC,CAAA;AACrJ,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;AAEA,GAAE,SAAS,qBAAqB,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE;KAC/E,OAAO,IAAI,aAAa;AAC5B,OAAM,CAAC,aAAa,IAAI,aAAa,IAAI,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,gBAAgB;OAC5G,8EAA8E,GAAG,IAAI,GAAG,IAAA;MACzF,CAAA;AACL,IAAA;;AAEA,GAAE,SAAS,sBAAsB,CAAC,UAAU,EAAE;AAC9C,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC9E,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AACrC,OAAM,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;AAC3C,OAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;SACzB,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,IAAI,eAAe,GAAG,aAAa,GAAG,uBAAuB,CAAC,CAAC,CAAA;AAC7K,QAAA;AACA,OAAM,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE;AAClC,SAAQ,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;AACrC,SAAQ,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AAC3C,WAAU,OAAO,qBAAqB,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;AAC3G,UAAA;SACQ,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,GAAG,EAAE,oBAAoB,CAAC,CAAA;SAC5G,IAAI,KAAK,EAAE;AACnB,WAAU,OAAO,KAAK,CAAA;AACtB,UAAA;AACA,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;AACA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;AAEA,GAAE,SAAS,4BAA4B,CAAC,UAAU,EAAE;AACpD,KAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;AAC9E,OAAM,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;AACrC,OAAM,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;AAC3C,OAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;SACzB,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,IAAI,eAAe,GAAG,aAAa,GAAG,uBAAuB,CAAC,CAAC,CAAA;AAC7K,QAAA;AACA;AACA,OAAM,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAA;AAC3D,OAAM,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;AAC/B,SAAQ,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;AACrC,SAAQ,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACnE,WAAU,OAAO,qBAAqB,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;AAC3G,UAAA;SACQ,IAAI,CAAC,OAAO,EAAE;WACZ,OAAO,IAAI,aAAa;AAClC,aAAY,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,SAAS,GAAG,GAAG,GAAG,iBAAiB,GAAG,aAAa,GAAG,IAAI;AACpH,aAAY,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAC1E,aAAY,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAA;YACtE,CAAA;AACX,UAAA;SACQ,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,GAAG,EAAE,oBAAoB,CAAC,CAAA;SAC5G,IAAI,KAAK,EAAE;AACnB,WAAU,OAAO,KAAK,CAAA;AACtB,UAAA;AACA,QAAA;AACA,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;;AAEA,KAAI,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC/C,IAAA;;AAEA,GAAE,SAAS,MAAM,CAAC,SAAS,EAAE;KACzB,QAAQ,OAAO,SAAS;AAC5B,OAAM,KAAK,QAAQ,CAAA;AACnB,OAAM,KAAK,QAAQ,CAAA;AACnB,OAAM,KAAK,WAAW;AACtB,SAAQ,OAAO,IAAI,CAAA;AACnB,OAAM,KAAK,SAAS;SACZ,OAAO,CAAC,SAAS,CAAA;AACzB,OAAM,KAAK,QAAQ;AACnB,SAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACtC,WAAU,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AACxC,UAAA;SACQ,IAAI,SAAS,KAAK,IAAI,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE;AAC7D,WAAU,OAAO,IAAI,CAAA;AACrB,UAAA;;AAEA,SAAQ,IAAI,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;SACzC,IAAI,UAAU,EAAE;WACd,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACnD,WAAU,IAAI,IAAI,CAAA;AAClB,WAAU,IAAI,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE;aACpC,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;eACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,iBAAgB,OAAO,KAAK,CAAA;AAC5B,gBAAA;AACA,cAAA;AACA,YAAW,MAAM;AACjB;aACY,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AACnD,eAAc,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;eACtB,IAAI,KAAK,EAAE;iBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,mBAAkB,OAAO,KAAK,CAAA;AAC9B,kBAAA;AACA,gBAAA;AACA,cAAA;AACA,YAAA;AACA,UAAS,MAAM;AACf,WAAU,OAAO,KAAK,CAAA;AACtB,UAAA;;AAEA,SAAQ,OAAO,IAAI,CAAA;OACb;AACN,SAAQ,OAAO,KAAK,CAAA;AACpB,MAAA;AACA,IAAA;;AAEA,GAAE,SAAS,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE;AACzC;AACA,KAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC/B,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;;AAEA;KACI,IAAI,CAAC,SAAS,EAAE;AACpB,OAAM,OAAO,KAAK,CAAA;AAClB,MAAA;;AAEA;AACA,KAAI,IAAI,SAAS,CAAC,eAAe,CAAC,KAAK,QAAQ,EAAE;AACjD,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;;AAEA;KACI,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,SAAS,YAAY,MAAM,EAAE;AACrE,OAAM,OAAO,IAAI,CAAA;AACjB,MAAA;;AAEA,KAAI,OAAO,KAAK,CAAA;AAChB,IAAA;;AAEA;AACA,GAAE,SAAS,WAAW,CAAC,SAAS,EAAE;AAClC,KAAI,IAAI,QAAQ,GAAG,OAAO,SAAS,CAAA;AACnC,KAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAClC,OAAM,OAAO,OAAO,CAAA;AACpB,MAAA;AACA,KAAI,IAAI,SAAS,YAAY,MAAM,EAAE;AACrC;AACA;AACA;AACA,OAAM,OAAO,QAAQ,CAAA;AACrB,MAAA;AACA,KAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;AACvC,OAAM,OAAO,QAAQ,CAAA;AACrB,MAAA;AACA,KAAI,OAAO,QAAQ,CAAA;AACnB,IAAA;;AAEA;AACA;AACA,GAAE,SAAS,cAAc,CAAC,SAAS,EAAE;KACjC,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,IAAI,EAAE;OAC1D,OAAO,EAAE,GAAG,SAAS,CAAA;AAC3B,MAAA;AACA,KAAI,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;AACzC,KAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC/B,OAAM,IAAI,SAAS,YAAY,IAAI,EAAE;AACrC,SAAQ,OAAO,MAAM,CAAA;AACrB,QAAO,MAAM,IAAI,SAAS,YAAY,MAAM,EAAE;AAC9C,SAAQ,OAAO,QAAQ,CAAA;AACvB,QAAA;AACA,MAAA;AACA,KAAI,OAAO,QAAQ,CAAA;AACnB,IAAA;;AAEA;AACA;AACA,GAAE,SAAS,wBAAwB,CAAC,KAAK,EAAE;AAC3C,KAAI,IAAI,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;AACpC,KAAI,QAAQ,IAAI;AAChB,OAAM,KAAK,OAAO,CAAA;AAClB,OAAM,KAAK,QAAQ;SACX,OAAO,KAAK,GAAG,IAAI,CAAA;AAC3B,OAAM,KAAK,SAAS,CAAA;AACpB,OAAM,KAAK,MAAM,CAAA;AACjB,OAAM,KAAK,QAAQ;SACX,OAAO,IAAI,GAAG,IAAI,CAAA;OACpB;AACN,SAAQ,OAAO,IAAI,CAAA;AACnB,MAAA;AACA,IAAA;;AAEA;AACA,GAAE,SAAS,YAAY,CAAC,SAAS,EAAE;AACnC,KAAI,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE;AAC/D,OAAM,OAAO,SAAS,CAAA;AACtB,MAAA;AACA,KAAI,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAA;AACrC,IAAA;;AAEA,GAAE,cAAc,CAAC,cAAc,GAAG,cAAc,CAAA;AAChD,GAAE,cAAc,CAAC,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAA;AACrE,GAAE,cAAc,CAAC,SAAS,GAAG,cAAc,CAAA;;AAE3C,GAAE,OAAO,cAAc,CAAA;EACtB,CAAA;;;;;;;;;;;;;;;;;;CCxlBD,IAAI,oBAAoB,iBAAwCJ,2BAAA,EAAA,CAAA;;AAEhE,CAAA,SAAS,aAAa,GAAG,EAAA;AACzB,CAAA,SAAS,sBAAsB,GAAG,EAAA;CAClC,sBAAsB,CAAC,iBAAiB,GAAG,aAAa,CAAA;;AAExD,CAAA,wBAAc,GAAG,WAAW;AAC5B,GAAE,SAAS,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;AAChF,KAAI,IAAI,MAAM,KAAK,oBAAoB,EAAE;AACzC;OACM,OAAA;AACN,MAAA;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,KAAK;AACvB,OAAM,sFAAsF;AAC5F,OAAM,+CAA+C;OAC/C,gDAAA;MACD,CAAA;AACL,KAAI,GAAG,CAAC,IAAI,GAAG,qBAAqB,CAAA;AACpC,KAAI,MAAM,GAAG,CAAA;IAEb,GAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;GACtB,SAAS,OAAO,GAAG;AACrB,KAAI,OAAO,IAAI,CAAA;IAEf;AACA;GACE,IAAI,cAAc,GAAG;KACnB,KAAK,EAAE,IAAI;KACX,MAAM,EAAE,IAAI;KACZ,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;;KAEZ,GAAG,EAAE,IAAI;KACT,OAAO,EAAE,OAAO;KAChB,OAAO,EAAE,IAAI;KACb,WAAW,EAAE,IAAI;KACjB,UAAU,EAAE,OAAO;KACnB,IAAI,EAAE,IAAI;KACV,QAAQ,EAAE,OAAO;KACjB,KAAK,EAAE,OAAO;KACd,SAAS,EAAE,OAAO;KAClB,KAAK,EAAE,OAAO;KACd,KAAK,EAAE,OAAO;;KAEd,cAAc,EAAE,sBAAsB;AAC1C,KAAI,iBAAiB,EAAE,aAAA;IACpB,CAAA;;AAEH,GAAE,cAAc,CAAC,SAAS,GAAG,cAAc,CAAA;;AAE3C,GAAE,OAAO,cAAc,CAAA;EACtB,CAAA;;;;;;;;;;;;;;;;ACzDD,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;GACzC,IAAI,OAAO,GAAGA,cAAmB,EAAA,CAAA;;AAEnC;AACA;GACE,IAAI,mBAAmB,GAAG,IAAI,CAAA;GAC9BK,SAAA,CAAA,OAAc,iBAAuCJ,8BAAA,EAAA,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;AAC/F,EAAC,MAAM;AACP;AACA;GACEI,SAAA,CAAA,OAAc,iBAAGH,+BAAA,EAAqC,EAAE,CAAA;AAC1D,EAAA;;;;;;;ACdA,MAAMI,gBAAgB,GAAGhmB,IAAA,IAUnB;EAAA,IAVoB;IACxB+R,UAAU;IACVC,SAAS;AACTiU,IAAAA,aAAa,GAAG,WAAW;AAC3BC,IAAAA,YAAY,GAAG,SAAS;AACxBC,IAAAA,aAAa,GAAG,8DAA8D;AAC9ElU,IAAAA,YAAY,GAAG,SAAS;AACxBlM,IAAAA,UAAU,GAAG,IAAI;AACjBD,IAAAA,MAAM,GAAG,KAAK;AACdoM,IAAAA,GAAAA;AACF,GAAC,GAAAlS,IAAA,CAAA;EACC,MAAM;AAAE0K,IAAAA,KAAK,EAAEyH,SAAAA;AAAU,GAAC,GAAGlM,GAAG,CAACC,MAAM,EAAE,CAAA;EAEzC,MAAM6E,SAAS,GAAG,CAChB;AACE6B,IAAAA,GAAG,EAAE,UAAU;AACfzE,IAAAA,KAAK,EAAE8d,aAAAA;GACR;AACD;AACA;AACA;AACA;AACA,EAAA;AACErZ,IAAAA,GAAG,EAAE,SAAS;IACdzE,KAAK,EAAE+d,YAAY;AACrB,GAAC,CACF,CAAA;EAED,MAAM9T,QAAQ,GAAIC,MAAM,IAAK;IAC3B,IAAI;MACFF,SAAS,CAACG,OAAO,CAAC;AAChBC,QAAAA,IAAI,eAAElS,GAAA,CAACmS,uBAAuB,IAAE,CAAC;QACjCvS,KAAK,EAAA,EAAA,CAAAU,MAAA,CAAKsR,YAAY,OAAAtR,MAAA,CAAI0R,MAAM,EAAG,GAAA,CAAA;QACnCtM,UAAU;QACVD,MAAM;QACNF,IAAI,EAAEA,MAAM;AACV,UAAA,IAAIyM,MAAM,KAAK,UAAU,IAAIN,UAAU,EAAE;AACvCA,YAAAA,UAAU,EAAE,CAAA;AACd,WAAC,MAAM,IAAIM,MAAM,KAAK,SAAS,IAAIL,SAAS,EAAE;AAC5CA,YAAAA,SAAS,EAAE,CAAA;AACb,WAAA;;AAEA;AACA,UAAA,IAAI,OAAOE,GAAG,KAAK,UAAU,EAAE;AAC7BA,YAAAA,GAAG,EAAE,CAAA;AACP,WAAA;AACF,SAAA;AACF,OAAC,CAAC,CAAA;KACH,CAAC,OAAO5Q,KAAK,EAAE;AACdC,MAAAA,OAAO,CAACD,KAAK,CAAAX,EAAAA,CAAAA,MAAA,CAAI0R,MAAM,CAACI,WAAW,EAAE,EAAYnR,UAAAA,CAAAA,EAAAA,KAAK,CAAC,CAAA;AACzD,KAAA;GACD,CAAA;EAED,MAAMgM,eAAe,GAAGC,KAAA,IAAa;IAAA,IAAZ;AAAEX,MAAAA,GAAAA;AAAI,KAAC,GAAAW,KAAA,CAAA;IAC9B6E,QAAQ,CAACxF,GAAG,CAAC,CAAA;GACd,CAAA;EAED,oBACEvM,GAAA,CAACyQ,QAAQ,EAAA;AAACC,IAAAA,IAAI,EAAE;AAAE3L,MAAAA,KAAK,EAAE2F,SAAS;AAAEiG,MAAAA,OAAO,EAAE1D,eAAAA;KAAkB;IAAC2D,OAAO,EAAE,CAAC,OAAO,CAAE;AAAA9Q,IAAAA,QAAA,eACjFE,GAAA,CAAA,GAAA,EAAA;AAAG2Q,MAAAA,OAAO,EAAGvI,CAAC,IAAKA,CAAC,CAACyI,cAAc,EAAG;AAAA/Q,MAAAA,QAAA,eACpCE,GAAA,CAAA,GAAA,EAAA;AAAGK,QAAAA,SAAS,EAAEylB,aAAAA;OAAkB,CAAA;KAC/B,CAAA;AAAC,GACI,CAAC,CAAA;AAEf,CAAC,CAAA;AAEDH,gBAAgB,CAACI,SAAS,GAAG;EAC3BrU,UAAU,EAAEsU,SAAS,CAACC,IAAI;EAC1BtU,SAAS,EAAEqU,SAAS,CAACC,IAAI;EACzBL,aAAa,EAAEI,SAAS,CAACE,MAAM;EAC/BL,YAAY,EAAEG,SAAS,CAACE,MAAM;EAC9BJ,aAAa,EAAEE,SAAS,CAACE,MAAM;EAC/BtU,YAAY,EAAEoU,SAAS,CAACE,MAAM;EAC9BxgB,UAAU,EAAEsgB,SAAS,CAACE,MAAM;EAC5BzgB,MAAM,EAAEugB,SAAS,CAACE,MAAM;EACxBrU,GAAG,EAAEmU,SAAS,CAACC,IAAAA;AACjB,CAAC,CAAA;AAED,yBAAeN,gBAAgB;;AC9E/B,MAAMQ,UAAU,GAAG,g6sBAAg6sB,CAAA;AAEn7sB,MAAMC,iBAAiB,GAAGA,MAAM;EAC9BnY,MAAM,CAACmC,QAAQ,CAAC5B,IAAI,GAAGP,MAAM,CAACmC,QAAQ,CAACiW,MAAM,CAAA;AAC/C,CAAC,CAAA;AAED,MAAMC,UAAU,GAAG,YAAgB;AAAA,EAAA,IAAf5T,KAAK,GAAA9T,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;EAC5B,MAAM;AACJ2nB,IAAAA,OAAO,GAAGJ,UAAU;AAAE;AACtBK,IAAAA,SAAS,GAAG,GAAG;AACfC,IAAAA,OAAO,GAAG,MAAM;AAChB9V,IAAAA,OAAO,GAAGyV,iBAAiB;AAC3BM,IAAAA,WAAW,GAAG;AACZpN,MAAAA,OAAO,EAAE,CAAC;AACVqN,MAAAA,UAAU,EAAE,CAAC;AACbhF,MAAAA,MAAM,EAAE,MAAM;AACdiF,MAAAA,WAAW,EAAE,MAAM;AACnBrY,MAAAA,OAAO,EAAE,cAAA;AACX,KAAA;AACF,GAAC,GAAGmE,KAAK,CAAA;;AAET;EACA,IAAI,CAAC6T,OAAO,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,GAAA;EAEA,OAAO,cACLvmB,GAAA,CAACqe,MAAM,EAAA;AAAYzX,IAAAA,IAAI,EAAC,MAAM;AAACe,IAAAA,KAAK,EAAE+e,WAAY;AAAC/V,IAAAA,OAAO,EAAEA,OAAQ;AAAA7Q,IAAAA,QAAA,eAClEE,GAAA,CAAA,KAAA,EAAA;AAAK6mB,MAAAA,GAAG,EAAEJ,OAAQ;AAACK,MAAAA,GAAG,EAAEP,OAAQ;AAAC5e,MAAAA,KAAK,EAAE;AAAEhC,QAAAA,KAAK,EAAE6gB,SAAAA;AAAU,OAAA;KAAI,CAAA;GADrD,EAAA,MAEJ,CAAC,CACV,CAAA;AACH,CAAC,CAAA;AAEDF,UAAU,CAACP,SAAS,GAAG;EACrBQ,OAAO,EAAEP,SAAS,CAACE,MAAM;EACzBM,SAAS,EAAER,SAAS,CAACe,MAAM;EAC3BN,OAAO,EAAET,SAAS,CAACE,MAAM;EACzBvV,OAAO,EAAEqV,SAAS,CAACC,IAAAA;AACrB,CAAC,CAAA;AAED,mBAAeK,UAAU;;ACrCzB,MAAMU,mBAAmB,GAAIhZ,GAAG,IAAK;AACnC,EAAA,IAAIC,MAAM,CAACmC,QAAQ,CAAC6W,QAAQ,KAAK,WAAW,IAAIhZ,MAAM,CAACmC,QAAQ,CAAC6W,QAAQ,KAAK,WAAW,EAAE;IACxF,OAAA3mB,iBAAAA,CAAAA,MAAA,CAAyB2N,MAAM,CAACmC,QAAQ,CAAC8W,IAAI,CAAA,CAAA5mB,MAAA,CAAG0N,GAAG,CAAA,CAAA;AACrD,GAAA;EACA,OAAA1N,OAAAA,CAAAA,MAAA,CAAe2N,MAAM,CAACmC,QAAQ,CAAC+W,IAAI,CAAA,CAAA7mB,MAAA,CAAG0N,GAAG,CAAA,CAAA;AAC3C,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMoZ,YAAY,GAAGznB,IAAA,IAiBf;EAAA,IAjBgB;IACpB0nB,WAAW;IACXC,WAAW,GAAG,EAAE;AAChBC,IAAAA,QAAQ,GAAG,IAAI;AACfC,IAAAA,eAAe,GAAG,IAAI;AACtBC,IAAAA,iBAAiB,GAAG,IAAI;AACxBC,IAAAA,oBAAoB,GAAG,IAAI;IAC3BhW,UAAU;IACVC,SAAS;IACTgW,KAAK;AACLC,IAAAA,kBAAkB,GAAG,6BAA6B;AAClDC,IAAAA,YAAY,GAAGb,mBAAmB;IAClCc,SAAS,GAAG,EAAE;AACdznB,IAAAA,SAAS,GAAG,EAAE;IACdsH,KAAK,GAAG,EAAE;AACV;AACAogB,IAAAA,WAAW;AACb,GAAC,GAAApoB,IAAA,CAAA;AACC,EAAA,MAAM,CAACqoB,IAAI,CAAC,GAAG1B,YAAU,CAACwB,SAAS,CAAC,CAAA;;AAEpC;EACA,MAAMG,YAAY,GAAGhjB,kBAAgB,CAAC4iB,YAAY,CAACD,kBAAkB,CAAC,CAAC,CAAA;EAEvE,oBACE1nB,IAAA,CAACqgB,IAAI,EAAA;AAACmE,IAAAA,OAAO,EAAC,eAAe;AAACC,IAAAA,KAAK,EAAC,QAAQ;AAACtkB,IAAAA,SAAS,EAAAC,gBAAAA,CAAAA,MAAA,CAAmBD,SAAS,CAAG;AAACsH,IAAAA,KAAK,EAAEA,KAAM;IAAA7H,QAAA,EAAA,cAEjGI,IAAA,CAACse,KAAK,EAAA;AAACjN,MAAAA,IAAI,EAAE,EAAG;MAAAzR,QAAA,EAAA,CACbynB,QAAQ,IAAIS,IAAI,EAEhBR,eAAe,iBACdtnB,IAAA,CAACqgB,IAAI,EAAA;AAACoE,QAAAA,KAAK,EAAC,QAAQ;AAACuD,QAAAA,GAAG,EAAE,CAAE;QAAApoB,QAAA,EAAA,CACzBwnB,WAAW,CAACa,WAAW,iBACtBnoB,GAAA,CAACuU,UAAU,CAACC,KAAK,EAAA;AAACC,UAAAA,KAAK,EAAE,CAAE;AAAC9M,UAAAA,KAAK,EAAE;AAAEC,YAAAA,YAAY,EAAE,CAAA;WAAI;UAAA9H,QAAA,EACpDwnB,WAAW,CAACa,WAAAA;SACG,CACnB,EACAb,WAAW,CAACc,OAAO,iBAClBpoB,GAAA,CAACuU,UAAU,CAACqJ,IAAI,EAAA;AAACjW,UAAAA,KAAK,EAAE;AAAE0gB,YAAAA,QAAQ,EAAE,UAAU;AAAEC,YAAAA,GAAG,EAAE,CAAC;AAAEC,YAAAA,IAAI,EAAE,CAAC,CAAA;WAAI;UAAAzoB,QAAA,EAChEwnB,WAAW,CAACc,OAAAA;AAAO,SACL,CAClB,CAAA;OACG,CACP,EAGAL,WAAW,CAAA;AAAA,KACP,CAAC,eAGR7nB,IAAA,CAACqgB,IAAI,EAAA;AAACoE,MAAAA,KAAK,EAAC,QAAQ;AAACuD,MAAAA,GAAG,EAAE,EAAG;AAAApoB,MAAAA,QAAA,EAE1B2nB,CAAAA,iBAAiB,IAAIQ,YAAY,eAElC/nB,IAAA,CAAA,KAAA,EAAA;AAAKG,QAAAA,SAAS,EAAC,iBAAiB;QAAAP,QAAA,EAAA,CAC7BunB,WAAW,iBACVrnB,GAAA,CAAA,KAAA,EAAA;AAAKK,UAAAA,SAAS,EAAC,cAAc;AAAAP,UAAAA,QAAA,EAC1BunB,WAAAA;AAAW,SACT,CACN,EAGAK,oBAAoB,iBACnB1nB,GAAA,CAAA,KAAA,EAAA;AAAKK,UAAAA,SAAS,EAAC,cAAc;UAAAP,QAAA,eAC3BE,GAAA,CAAC2lB,kBAAgB,EAAA;AACfjU,YAAAA,UAAU,EAAEA,UAAW;AACvBC,YAAAA,SAAS,EAAEA,SAAU;AACrBE,YAAAA,GAAG,EAAE8V,KAAAA;WACN,CAAA;AAAC,SACC,CACN,CAAA;AAAA,OACE,CAAC,CAAA;AAAA,KACF,CAAC,CAAA;AAAA,GACH,CAAC,CAAA;AAEX,CAAC,CAAA;;AAED;AACAP,YAAY,CAACrB,SAAS,GAAG;EACvBsB,WAAW,EAAErB,SAAS,CAACwC,IAAI;AAC3BlB,EAAAA,WAAW,EAAEtB,SAAS,CAACyC,KAAK,CAAC;IAC3BN,WAAW,EAAEnC,SAAS,CAACE,MAAM;IAC7BkC,OAAO,EAAEpC,SAAS,CAACE,MAAAA;AACrB,GAAC,CAAC;EACFqB,QAAQ,EAAEvB,SAAS,CAAC0C,IAAI;EACxBlB,eAAe,EAAExB,SAAS,CAAC0C,IAAI;EAC/BjB,iBAAiB,EAAEzB,SAAS,CAAC0C,IAAI;EACjChB,oBAAoB,EAAE1B,SAAS,CAAC0C,IAAI;EACpChX,UAAU,EAAEsU,SAAS,CAACC,IAAI;EAC1BtU,SAAS,EAAEqU,SAAS,CAACC,IAAI;EACzB0B,KAAK,EAAE3B,SAAS,CAACC,IAAI;EACrB2B,kBAAkB,EAAE5B,SAAS,CAACE,MAAM;EACpC2B,YAAY,EAAE7B,SAAS,CAACC,IAAI;EAC5B6B,SAAS,EAAE9B,SAAS,CAAC2C,MAAM;EAC3BtoB,SAAS,EAAE2lB,SAAS,CAACE,MAAM;EAC3Bve,KAAK,EAAEqe,SAAS,CAAC2C,MAAAA;AACnB,CAAC,CAAA;AAED,qBAAevB,YAAY;;;;AC7H3B;AACA,MAAMwB,sBAAsB,GAAG,CAAC,CAAA;;AAEhC;AACA;AACA,IAAIC,gBAAgB,GAAG;AACrBC,EAAAA,OAAO,EAAE;AAAEC,IAAAA,UAAU,EAAE,CAAC;AAAEC,IAAAA,WAAW,EAAE,CAAA;AAAE,GAAA;AACzC;AACA;AACA;AACA;AACF,CAAC,CAAA;;AAED;AACA;;AAEA;AACA,SAASC,YAAYA,CAACxkB,KAAK,EAA0C;AAAA,EAAA,IAAxCykB,aAAa,GAAAtqB,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAGgqB,sBAAsB,CAAA;AACjE,EAAA,OAAO,IAAIO,IAAI,CAACC,YAAY,CAAC,OAAO,EAAE;AACpCC,IAAAA,qBAAqB,EAAEH,aAAa;AACpCI,IAAAA,qBAAqB,EAAEJ,aAAa;AACpCK,IAAAA,WAAW,EAAE,KAAA;AACf,GAAC,CAAC,CAACC,MAAM,CAAC/kB,KAAK,CAAC,CAAA;AAClB,CAAA;AAEA,SAASglB,WAAWA,CAACrhB,CAAC,EAAE2gB,UAAU,EAAEtkB,KAAK,EAAE;AACzC,EAAA,IAAI2D,CAAC,CAACmE,GAAG,KAAK,SAAS,EAAE;IACvB,OAAO9H,KAAK,GAAGskB,UAAU,CAAA;AAC3B,GAAA;AACA,EAAA,IAAI3gB,CAAC,CAACmE,GAAG,KAAK,WAAW,EAAE;IACzB,OAAO9H,KAAK,GAAGskB,UAAU,CAAA;AAC3B,GAAA;AACA,EAAA,OAAOtkB,KAAK,CAAA;AACd,CAAA;;AAEA;AACA,IAAIilB,UAAU,GAAG/pB,IAAA,IAAA;EAAA,IAAC;AAAEgqB,IAAAA,cAAAA;AAAe,GAAC,GAAAhqB,IAAA,CAAA;AAAA,EAAA,sBAAqBiqB,KAAK,CAACtb,aAAa,CAC1E,KAAK,EACL;AACE3G,IAAAA,KAAK,EAAE;AACL0gB,MAAAA,QAAQ,EAAE,OAAO;AACjBE,MAAAA,IAAI,EAAE,CAAC;AACPD,MAAAA,GAAG,EAAE,CAAC;AACN3iB,MAAAA,KAAK,EAAE,OAAO;AACdgc,MAAAA,MAAM,EAAE,OAAO;AACfkI,MAAAA,aAAa,EAAE,MAAA;AACjB,KAAA;AACF,GAAC,iBACeD,KAAK,CAACtb,aAAa,CACjC,KAAK,EACL;AACEwb,IAAAA,KAAK,EAAE,4BAA4B;AACnCnkB,IAAAA,KAAK,EAAE,IAAI;AACXgc,IAAAA,MAAM,EAAE,IAAI;AACZoI,IAAAA,OAAO,EAAE,WAAW;AACpBpiB,IAAAA,KAAK,EAAE;AACL0gB,MAAAA,QAAQ,EAAE,UAAU;MACpBE,IAAI,EAAEoB,cAAc,CAACK,CAAC;MACtB1B,GAAG,EAAEqB,cAAc,CAACM,CAAC;AACrBC,MAAAA,SAAS,EAAE,uBAAuB;AAClCL,MAAAA,aAAa,EAAE,MAAA;AACjB,KAAA;AACF,GAAC,iBACeD,KAAK,CAACtb,aAAa,CACjC,MAAM,EACN;AACE6b,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,cAAc,EAAE,OAAO;AACvBC,IAAAA,CAAC,EAAE,kJAAkJ;AACrJ3iB,IAAAA,KAAK,EAAE;AACLrF,MAAAA,MAAM,EAAE,8CAAA;AACV,KAAA;GAEJ,CACF,CACF,CAAC,CAAA;AAAA,CAAA,CAAA;;AAED;AACA,IAAIioB,IAAI,GAAGA,MAAM,EAChB,CAAA;AACD,SAASC,oBAAoBA,CAAAtd,KAAA,EAa1B;EAAA,IAb2B;MAC5BzI,KAAK;MACL2V,GAAG;MACH5X,GAAG;AACHnC,MAAAA,SAAS,GAAG,EAAE;AACdoqB,MAAAA,kBAAkB,GAAG,KAAK;MAC1BC,YAAY;AACZxB,MAAAA,aAAa,GAAGN,sBAAsB;AACtCzgB,MAAAA,QAAQ,GAAGoiB,IAAI;AACfI,MAAAA,WAAW,GAAGJ,IAAI;AAClBK,MAAAA,SAAS,GAAGL,IAAI;AAChB5iB,MAAAA,KAAAA;AAEF,KAAC,GAAAuF,KAAA;AADI2d,IAAAA,SAAS,GAAA/F,wBAAA,CAAA5X,KAAA,EAAA6X,SAAA,CAAA,CAAA;AAEZ,EAAA,MAAMzZ,QAAQ,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;EAC7B,MAAM,CAACuf,WAAW,EAAEC,cAAc,CAAC,GAAGpqB,QAAQ,CAAC,KAAK,CAAC,CAAA;EACrD,MAAM,CAACqqB,UAAU,EAAEC,aAAa,CAAC,GAAGtqB,QAAQ,CAAC,KAAK,CAAC,CAAA;AACnD,EAAA,MAAM,CAACuqB,UAAU,EAAEC,aAAa,CAAC,GAAGxqB,QAAQ,CAAC,MAAMsoB,YAAY,CAACxkB,KAAK,EAAEykB,aAAa,CAAC,CAAC,CAAA;AACtF,EAAA,MAAM,CAACS,cAAc,EAAEyB,iBAAiB,CAAC,GAAGzqB,QAAQ,CAAC;AAAEqpB,IAAAA,CAAC,EAAE,CAAC;AAAEC,IAAAA,CAAC,EAAE,CAAA;AAAE,GAAC,CAAC,CAAA;AACpE,EAAA,MAAMoB,aAAa,GAAG9f,MAAM,CAAC,CAAC,CAAC,CAAA;AAC/B,EAAA,MAAM+f,UAAU,GAAG/f,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5B,EAAA,MAAMggB,MAAM,GAAGhgB,MAAM,CAAC,CAAC,CAAC,CAAA;AACxB,EAAA,MAAMigB,iBAAiB,GAAGjgB,MAAM,CAAC,CAAC,CAAC,CAAA;;AAEnC;EACA,MAAM,CAACwT,SAAS,EAAE0M,YAAY,CAAC,GAAG9qB,QAAQ,CAAC,KAAK,CAAC,CAAA;AACjD,EAAA,MAAM+qB,oBAAoB,GAAGngB,MAAM,CAAC9G,KAAK,CAAC,CAAA;;AAE1C;AACA,EAAA,MAAMknB,WAAW,GAAG9qB,WAAW,CAAE+qB,GAAG,IAAK;AACvC,IAAA,OAAO3C,YAAY,CAAC2C,GAAG,EAAE1C,aAAa,CAAC,CAAA;AACzC,GAAC,EAAE,CAACA,aAAa,CAAC,CAAC,CAAA;AAEnB,EAAA,MAAM2C,mBAAmB,GAAGhrB,WAAW,CACpCirB,QAAQ,IAAK;IACZ,IAAIC,gBAAgB,GAAGD,QAAQ,CAAA;AAC/B,IAAA,IAAI,OAAO1R,GAAG,KAAK,QAAQ,EAAE;MAC3B2R,gBAAgB,GAAG5sB,IAAI,CAACqD,GAAG,CAAC4X,GAAG,EAAE2R,gBAAgB,CAAC,CAAA;AACpD,KAAA;AACA,IAAA,IAAI,OAAOvpB,GAAG,KAAK,QAAQ,EAAE;MAC3BupB,gBAAgB,GAAG5sB,IAAI,CAACib,GAAG,CAAC5X,GAAG,EAAEupB,gBAAgB,CAAC,CAAA;AACpD,KAAA;IACA5jB,QAAQ,CAAC4jB,gBAAgB,CAAC,CAAA;GAC3B,EACD,CAAC5jB,QAAQ,EAAEiS,GAAG,EAAE5X,GAAG,CACrB,CAAC,CAAA;AAEDqH,EAAAA,SAAS,CAAC,MAAM;AACd;IACA,IAAI,CAACkV,SAAS,IAAI2M,oBAAoB,CAACrpB,OAAO,KAAKoC,KAAK,EAAE;AACxD,MAAA,MAAMunB,cAAc,GAAGL,WAAW,CAAClnB,KAAK,CAAC,CAAA;MACzC0mB,aAAa,CAACa,cAAc,CAAC,CAAA;MAC7BN,oBAAoB,CAACrpB,OAAO,GAAGoC,KAAK,CAAA;AACtC,KAAA;GACD,EAAE,CAACA,KAAK,EAAEknB,WAAW,EAAE5M,SAAS,CAAC,CAAC,CAAA;EAEnC,MAAMkN,iBAAiB,GAAI7jB,CAAC,IAAK;AAC/B,IAAA,MAAMwjB,GAAG,GAAGxjB,CAAC,CAACC,MAAM,CAAC5D,KAAK,CAAA;;AAE1B;IACAgnB,YAAY,CAAC,IAAI,CAAC,CAAA;IAClBN,aAAa,CAACS,GAAG,CAAC,CAAA;;AAElB;AACA,IAAA,IAAIA,GAAG,KAAK,EAAE,IAAIA,GAAG,KAAK,GAAG,IAAIA,GAAG,KAAK,GAAG,IAAIA,GAAG,CAACM,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjE,MAAA,OAAO;AACT,KAAA;AAEA,IAAA,MAAMC,GAAG,GAAG7sB,UAAU,CAACssB,GAAG,CAAC,CAAA;AAC3B,IAAA,IAAI,CAACQ,KAAK,CAACD,GAAG,CAAC,EAAE;MACfN,mBAAmB,CAACM,GAAG,CAAC,CAAA;AAC1B,KAAA;GACD,CAAA;EAED,MAAME,UAAU,GAAGA,MAAM;AACvB;IACAZ,YAAY,CAAC,KAAK,CAAC,CAAA;AAEnB,IAAA,MAAMU,GAAG,GAAG7sB,UAAU,CAAC4rB,UAAU,CAAC,CAAA;AAClC,IAAA,IAAI,CAACkB,KAAK,CAACD,GAAG,CAAC,EAAE;AACf;MACA,MAAMG,SAAS,GAAGntB,IAAI,CAACI,GAAG,CAAC,EAAE,EAAE2pB,aAAa,CAAC,CAAA;MAC7C,MAAMqD,cAAc,GAAGptB,IAAI,CAACuQ,KAAK,CAACyc,GAAG,GAAGG,SAAS,CAAC,GAAGA,SAAS,CAAA;AAC9D,MAAA,MAAMN,cAAc,GAAGL,WAAW,CAACY,cAAc,CAAC,CAAA;;AAElD;MACApB,aAAa,CAACa,cAAc,CAAC,CAAA;MAC7BN,oBAAoB,CAACrpB,OAAO,GAAGkqB,cAAc,CAAA;AAC7C;MACAV,mBAAmB,CAACU,cAAc,CAAC,CAAA;AACrC,KAAC,MAAM;AACL;AACA,MAAA,MAAMP,cAAc,GAAGL,WAAW,CAAClnB,KAAK,CAAC,CAAA;MACzC0mB,aAAa,CAACa,cAAc,CAAC,CAAA;AAC/B,KAAA;GACD,CAAA;AAED,EAAA,MAAMQ,eAAe,GAAG3rB,WAAW,CAChCuH,CAAC,IAAK;AACL,IAAA,IAAI,CAACkD,QAAQ,CAACjJ,OAAO,EAAE,OAAA;IACvB,IAAI2nB,CAAC,GAAG,CAAC;AAAEC,MAAAA,CAAC,GAAG,CAAC,CAAA;AAChB,IAAA,IAAI,SAAS,IAAI7hB,CAAC,IAAI,SAAS,IAAIA,CAAC,EAAE;AACpC,MAAA,CAAC4hB,CAAC,EAAEC,CAAC,CAAC,GAAG,CAAC7hB,CAAC,CAACqkB,OAAO,EAAErkB,CAAC,CAACskB,OAAO,CAAC,CAAA;AACjC,KAAA;IACA,IAAI,SAAS,IAAItkB,CAAC,EAAE;MAClB,CAAC4hB,CAAC,EAAEC,CAAC,CAAC,GAAG,CAAC7hB,CAAC,CAACukB,OAAO,CAAC,CAAC,CAAC,CAACF,OAAO,EAAErkB,CAAC,CAACukB,OAAO,CAAC,CAAC,CAAC,CAACD,OAAO,CAAC,CAAA;AACvD,KAAA;IACA3B,cAAc,CAAC,IAAI,CAAC,CAAA;IACpBQ,MAAM,CAAClpB,OAAO,GAAG2nB,CAAC,CAAA;IAClBsB,UAAU,CAACjpB,OAAO,GAAGoC,KAAK,CAAA;IAC1B4mB,aAAa,CAAChpB,OAAO,GAAG,CAAC,CAAA;AACzB+oB,IAAAA,iBAAiB,CAAC;MAAEpB,CAAC;AAAEC,MAAAA,CAAAA;AAAE,KAAC,CAAC,CAAA;AAC7B,GAAC,EACD,CAACxlB,KAAK,EAAEgmB,kBAAkB,CAC5B,CAAC,CAAA;AAED,EAAA,MAAMmC,WAAW,GAAG/rB,WAAW,CAC5BuH,CAAC,IAAK;IACL,IAAI,CAAC0iB,WAAW,EAAE,OAAA;AAClB+B,IAAAA,aAAa,CAACxB,aAAa,CAAChpB,OAAO,EAAE+F,CAAC,CAAC,CAAA;AACzC,GAAC,EACD,CAAC0iB,WAAW,CACd,CAAC,CAAA;AAED,EAAA,MAAMgC,YAAY,GAAGjsB,WAAW,CAC7BuH,CAAC,IAAK;IACL,MAAM2kB,IAAI,GAAA/rB,cAAA,CAAAA,cAAA,CAAQ6nB,EAAAA,EAAAA,gBAAgB,CAAK6B,EAAAA,YAAY,CAAE,CAAA;AACrD,IAAA,KAAK,MAAMne,GAAG,IAAIwgB,IAAI,EAAE;MACtB,IAAIxgB,GAAG,KAAK,SAAS,IAAInE,CAAC,CAACmE,GAAG,CAAC,EAAE;QAC/Bif,iBAAiB,CAACnpB,OAAO,GAAG0qB,IAAI,CAACxgB,GAAG,CAAC,CAACwc,UAAU,CAAA;QAChD,OAAOgE,IAAI,CAACxgB,GAAG,CAAC,CAAA;AAClB,OAAA;AACF,KAAA;AACAif,IAAAA,iBAAiB,CAACnpB,OAAO,GAAG0qB,IAAI,CAACjE,OAAO,CAACC,UAAU,CAAA;IACnD,OAAOgE,IAAI,CAACjE,OAAO,CAAA;AACrB,GAAC,EACD,CAAC4B,YAAY,CACf,CAAC,CAAA;EAED,MAAMmC,aAAa,GAAGhsB,WAAW,CAC/B,CAACmsB,WAAW,EAAE5kB,CAAC,KAAK;IAClB,MAAM;MAAE4gB,WAAW;AAAED,MAAAA,UAAAA;AAAW,KAAC,GAAG+D,YAAY,CAAC1kB,CAAC,CAAC,CAAA;AACnD,IAAA,MAAM6kB,KAAK,GAAGD,WAAW,GAAGhE,WAAW,GAAGD,UAAU,CAAA;AACpD,IAAA,IAAI+C,QAAQ,GAAGR,UAAU,CAACjpB,OAAO,GAAG4qB,KAAK,CAAA;AACzC;IACA,MAAMX,SAAS,GAAGntB,IAAI,CAACI,GAAG,CAAC,EAAE,EAAE2pB,aAAa,CAAC,CAAA;IAC7C4C,QAAQ,GAAG3sB,IAAI,CAACuQ,KAAK,CAACoc,QAAQ,GAAGQ,SAAS,CAAC,GAAGA,SAAS,CAAA;AACvDR,IAAAA,QAAQ,GAAGhJ,MAAM,CAACoK,EAAE,CAACpB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGA,QAAQ,CAAA;IACjDD,mBAAmB,CAACC,QAAQ,CAAC,CAAA;GAC9B,EACD,CAACD,mBAAmB,EAAEiB,YAAY,EAAE5D,aAAa,CACnD,CAAC,CAAA;EAED,MAAMiE,kBAAkB,GAAI/kB,CAAC,IAAK;IAChC,IAAIA,CAAC,CAACmE,GAAG,KAAK,SAAS,IAAInE,CAAC,CAACmE,GAAG,KAAK,WAAW,EAAE;MAChDnE,CAAC,CAACyI,cAAc,EAAE,CAAA;MAClB,MAAM;AAAEkY,QAAAA,UAAAA;AAAW,OAAC,GAAG+D,YAAY,CAAC1kB,CAAC,CAAC,CAAA;MACtC,MAAM0jB,QAAQ,GAAGrC,WAAW,CAACrhB,CAAC,EAAE2gB,UAAU,EAAEtkB,KAAK,CAAC,CAAA;MAClDonB,mBAAmB,CAACC,QAAQ,CAAC,CAAA;AAC/B,KAAA;GACD,CAAA;AAED,EAAA,MAAMsB,2BAA2B,GAAGvsB,WAAW,CAC5CuH,CAAC,IAAK;IACL,IAAIA,CAAC,CAACmE,GAAG,KAAK,OAAO,IAAInE,CAAC,CAACmE,GAAG,KAAK,SAAS,IAAInE,CAAC,CAACmE,GAAG,KAAK,MAAM,IAAInE,CAAC,CAACmE,GAAG,KAAK,KAAK,EAAE;MACnFqgB,WAAW,CAACxkB,CAAC,CAAC,CAAA;AAChB,KAAA;AACF,GAAC,EACD,CAACwkB,WAAW,CACd,CAAC,CAAA;AAED,EAAA,MAAMS,eAAe,GAAGxsB,WAAW,CAChCuH,CAAC,IAAK;IACL,IAAI,CAAC0iB,WAAW,EAAE,OAAA;IAClB,IAAI,SAAS,IAAI1iB,CAAC,EAAE;MAClBA,CAAC,CAACyI,cAAc,EAAE,CAAA;AACpB,KAAA;AACA,IAAA,IAAI,CAAC4Z,kBAAkB,IAAIpc,QAAQ,CAACif,kBAAkB,IAAI,EAAE,SAAS,IAAIllB,CAAC,CAAC,EAAE;MAC3EgjB,iBAAiB,CAAErqB,IAAI,IAAK;AAC1B,QAAA,MAAM4E,KAAK,GAAGsI,MAAM,CAACsf,UAAU,CAAA;AAC/B,QAAA,MAAM5L,MAAM,GAAG1T,MAAM,CAACuf,WAAW,CAAA;AACjC,QAAA,MAAMC,EAAE,GAAG,CAAC1sB,IAAI,CAACipB,CAAC,GAAG5hB,CAAC,CAACslB,SAAS,GAAG/nB,KAAK,IAAIA,KAAK,CAAA;AACjD,QAAA,MAAMskB,CAAC,GAAG,CAAClpB,IAAI,CAACkpB,CAAC,GAAG7hB,CAAC,CAACulB,SAAS,GAAGhM,MAAM,IAAIA,MAAM,CAAA;QAClD,OAAO;AAAEqI,UAAAA,CAAC,EAAEyD,EAAE;AAAExD,UAAAA,CAAAA;SAAG,CAAA;AACrB,OAAC,CAAC,CAAA;AACJ,KAAA;AACA,IAAA,MAAMD,CAAC,GAAG,SAAS,IAAI5hB,CAAC,GAAGA,CAAC,CAACukB,OAAO,CAAC,CAAC,CAAC,CAACF,OAAO,GAAGrkB,CAAC,CAACqkB,OAAO,CAAA;IAC3D,MAAMO,WAAW,GAAGvC,kBAAkB,IAAI,SAAS,IAAIriB,CAAC,GAAG4hB,CAAC,GAAGuB,MAAM,CAAClpB,OAAO,GAAGgpB,aAAa,CAAChpB,OAAO,GAAG+F,CAAC,CAACslB,SAAS,CAAA;AACnH,IAAA,IAAI,CAAC1C,UAAU,IAAIgC,WAAW,KAAK,CAAC,EAAE;MACpC,IAAI,CAACvC,kBAAkB,IAAI,EAAE,SAAS,IAAIriB,CAAC,CAAC,EAAE;QAAA,IAAAwlB,iBAAA,EAAAC,qBAAA,CAAA;QAC5C,CAAAD,iBAAA,GAAAtiB,QAAQ,CAACjJ,OAAO,MAAAurB,IAAAA,IAAAA,iBAAA,gBAAAC,qBAAA,GAAhBD,iBAAA,CAAkBE,kBAAkB,cAAAD,qBAAA,KAAA,KAAA,CAAA,IAApCA,qBAAA,CAAAE,IAAA,CAAAH,iBAAuC,CAAC,CAAA;AAC1C,OAAA;MACA3C,aAAa,CAAC,IAAI,CAAC,CAAA;AACnB5c,MAAAA,QAAQ,CAAC2f,gBAAgB,CAAC,SAAS,EAAEZ,2BAA2B,CAAC,CAAA;AACjE/e,MAAAA,QAAQ,CAAC2f,gBAAgB,CAAC,OAAO,EAAEZ,2BAA2B,CAAC,CAAA;AAC/DzC,MAAAA,WAAW,EAAE,CAAA;AACf,KAAA;IACAU,aAAa,CAAChpB,OAAO,GAAG2qB,WAAW,CAAA;AACnCH,IAAAA,aAAa,CAACG,WAAW,EAAE5kB,CAAC,CAAC,CAAA;AAC/B,GAAC,EACD,CACE0iB,WAAW,EACXL,kBAAkB,EAClBc,MAAM,EACNP,UAAU,EACVL,WAAW,EACXkC,aAAa,CAEjB,CAAC,CAAA;AAED,EAAA,MAAMoB,aAAa,GAAGptB,WAAW,CAAC,MAAM;IACtCkqB,cAAc,CAAC,KAAK,CAAC,CAAA;IACrBM,aAAa,CAAChpB,OAAO,GAAG,CAAC,CAAA;AACzB,IAAA,IAAI2oB,UAAU,EAAE;MACdC,aAAa,CAAC,KAAK,CAAC,CAAA;AACpB5c,MAAAA,QAAQ,CAAC6f,mBAAmB,CAAC,SAAS,EAAEd,2BAA2B,CAAC,CAAA;AACpE/e,MAAAA,QAAQ,CAAC6f,mBAAmB,CAAC,OAAO,EAAEd,2BAA2B,CAAC,CAAA;AAClExC,MAAAA,SAAS,EAAE,CAAA;AACb,KAAA;IACA,IAAIvc,QAAQ,CAACif,kBAAkB,EAAE;MAC/Bjf,QAAQ,CAAC8f,eAAe,EAAE,CAAA;AAC5B,KAAA;GACD,EAAE,CAACnD,UAAU,EAAEJ,SAAS,EAAEH,kBAAkB,CAAC,CAAC,CAAA;AAE/C5gB,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIihB,WAAW,EAAE;AACfzc,MAAAA,QAAQ,CAAC2f,gBAAgB,CAAC,WAAW,EAAEX,eAAe,CAAC,CAAA;AACvDhf,MAAAA,QAAQ,CAAC2f,gBAAgB,CAAC,WAAW,EAAEX,eAAe,EAAE;AACtDe,QAAAA,OAAO,EAAE,KAAA;AACX,OAAC,CAAC,CAAA;AACF/f,MAAAA,QAAQ,CAAC2f,gBAAgB,CAAC,SAAS,EAAEC,aAAa,CAAC,CAAA;AACnD5f,MAAAA,QAAQ,CAAC2f,gBAAgB,CAAC,UAAU,EAAEC,aAAa,CAAC,CAAA;AACpD,MAAA,OAAO,MAAM;AACX5f,QAAAA,QAAQ,CAAC6f,mBAAmB,CAAC,WAAW,EAAEb,eAAe,CAAC,CAAA;AAC1Dhf,QAAAA,QAAQ,CAAC6f,mBAAmB,CAAC,SAAS,EAAED,aAAa,CAAC,CAAA;AACtD5f,QAAAA,QAAQ,CAAC6f,mBAAmB,CAAC,WAAW,EAAEb,eAAe,CAAC,CAAA;AAC1Dhf,QAAAA,QAAQ,CAAC6f,mBAAmB,CAAC,UAAU,EAAED,aAAa,CAAC,CAAA;OACxD,CAAA;AACH,KAAA;GACD,EAAE,CAACnD,WAAW,EAAEuC,eAAe,EAAEY,aAAa,CAAC,CAAC,CAAA;AAEjD,EAAA,sBAAuBrE,KAAK,CAACtb,aAAa,CAACsb,KAAK,CAACyE,QAAQ,EAAE,IAAI,iBAAkBzE,KAAK,CAACtb,aAAa,CAClG,OAAO,EAAAtN,cAAA,CAAA;AAEL8P,IAAAA,GAAG,EAAExF,QAAQ;AACb1E,IAAAA,IAAI,EAAE,MAAM;AACZ0nB,IAAAA,SAAS,EAAE,SAAS;AACpBC,IAAAA,OAAO,EAAE,oBAAoB;AAC7B9pB,IAAAA,KAAK,EAAEymB,UAAU;AACjB/iB,IAAAA,QAAQ,EAAE8jB,iBAAiB;AAC3BuC,IAAAA,MAAM,EAAEnC,UAAU;AAClBoC,IAAAA,WAAW,EAAEjC,eAAe;AAC5BkC,IAAAA,YAAY,EAAElC,eAAe;AAC7BmC,IAAAA,SAAS,EAAExB,kBAAkB;AAC7B9sB,IAAAA,SAAS,EAAAC,yBAAAA,CAAAA,MAAA,CAA4BD,SAAS,EAAAC,GAAAA,CAAAA,CAAAA,MAAA,CAAI0qB,UAAU,GAAG,UAAU,GAAG,EAAE,CAAE;AAChFrjB,IAAAA,KAAK,EAAA3G,cAAA,CAAAA,cAAA,CACA,EAAA,EAAA;AACD4tB,MAAAA,MAAM,EAAE,WAAW;AACnBC,MAAAA,UAAU,EAAE,MAAM;AAClBC,MAAAA,UAAU,EAAE9D,UAAU,GAAG,aAAa,GAAG,SAAA;AAC3C,KAAC,GACErjB,KAAK,CAAA;AACT,GAAA,EACEkjB,SAAS,CAEhB,CAAC,EAAEG,UAAU,IAAI,CAACP,kBAAkB,mBAAoBb,KAAK,CAACtb,aAAa,CAACob,UAAU,EAAE;AAAEC,IAAAA,cAAAA;AAAe,GAAC,CAAC,CAAC,CAAA;AAC9G;;;;","x_google_ignoreList":[7,15,16,17,18,19,20,21,22,23,24]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/componnets/UsageItem.jsx","../src/hooks/useHardwareWebSocket.js","../src/hooks/useHardwareUsage.js","../src/componnets/AuthorizationModal.jsx","../src/hooks/useAuth.js","../src/hooks/useUpgrade.js","../src/hooks/useSystemOperations.js","../src/componnets/NetworkSettingsModal.jsx","../src/componnets/PtpModal.jsx","../src/componnets/PresetModal.component.jsx","../src/componnets/PresetModal.jsx","../src/componnets/UpgradeManager.jsx","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/componnets/SystemOperations.jsx","../src/hooks/useSpaLogo.js","../src/componnets/CommonHeader.jsx","../src/componnets/LSMLabelField.jsx","../src/componnets/draggable-number-input.js"],"sourcesContent":["import { memo } from \"react\";\r\nimport { Tooltip } from \"antd\";\r\n\r\n// 格式化字节大小为更易读的形式\r\nconst formatBytes = (bytes, decimals = 1) => {\r\n if (bytes === 0 || !bytes || bytes < 0) return '0 Bytes';\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n};\r\n\r\nconst UsageItem = memo(({ title, iconClass, children, memTotal }) => {\r\n return (\r\n <Tooltip \r\n title={\r\n <>\r\n <div>{title}</div>\r\n {title === 'Memory Usage' && memTotal !== undefined && (\r\n <div>Total Memory: {formatBytes(memTotal)}</div>\r\n )}\r\n </>\r\n } \r\n destroyOnHidden={false}\r\n >\r\n <div className=\"usage-item\">\r\n <i className={`seeder-iconfont ${iconClass} text-xl`} />\r\n <span className=\"usage-value\">{children}</span>\r\n </div>\r\n </Tooltip>\r\n );\r\n});\r\n\r\nexport default UsageItem;","import { useEffect, useState, useCallback } from 'react';\r\nimport { useWebSocket } from 'ahooks';\r\n\r\nconst useHardwareWebSocket = (socketUrl) => {\r\n const [systemStatus, setSystemStatus] = useState();\r\n\r\n const handleMessage = useCallback((message) => {\r\n try {\r\n if (message) {\r\n setSystemStatus(prev => ({\r\n ...prev,\r\n ...message,\r\n // lastUpdated: Date.now() // 添加更新时间戳\r\n }));\r\n }\r\n } catch (error) {\r\n console.error('Message processing error:', error);\r\n }\r\n }, []);\r\n\r\n // ## 获取系统资源使用情况\r\n const { latestMessage } = useWebSocket(socketUrl, {\r\n onMessage: (event) => {\r\n // 处理实时消息\r\n try {\r\n const parsedMessage = JSON.parse(event.data);\r\n handleMessage(parsedMessage);\r\n } catch (error) {\r\n console.error('Message parsing error:', error);\r\n console.debug('Raw message:', event.data);\r\n }\r\n }\r\n });\r\n\r\n // // 监听消息 latestMessage 只用于非实时需求\r\n // useEffect(() => {\r\n // if (!latestMessage?.data) return;\r\n\r\n // try {\r\n // const parsedMessage = JSON.parse(latestMessage.data);\r\n // handleMessage(parsedMessage);\r\n // } catch (error) {\r\n // console.error('Message parsing error:', error);\r\n // console.debug('Raw message:', latestMessage.data);\r\n // }\r\n // }, [latestMessage?.data, handleMessage]);\r\n\r\n return { ps_status: systemStatus }\r\n}\r\n\r\nexport default useHardwareWebSocket ;","import { useMemo } from \"react\";\r\nimport UsageItem from \"../componnets/UsageItem.jsx\";\r\nimport useHardwareWebSocket from './useHardwareWebSocket.js';\r\n\r\n// 获取网卡最高温度(支持动态字段检查)\r\nconst getMaxNicTemp = (sensors, priorityFields = [\"i350bb\", \"r8169_0_8300:00\"]) => {\r\n const temps = priorityFields\r\n .flatMap(field => sensors?.[field]?.map(item => item.current) || [])\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\n// 获取数组类型传感器最高温度(如内存、硬盘)\r\nconst getMaxSensorTemp = (sensorData) => {\r\n const temps = (sensorData || [])\r\n .map(item => item.current)\r\n .filter((temp) => typeof temp === 'number');\r\n return temps.length ? Math.max(...temps) : null;\r\n};\r\n\r\nconst getDetail = (status = {}) => {\r\n const { cpu_percent, mem, sensors_temperatures, gpu_stats } = status;\r\n\r\n return {\r\n cpu_usage: cpu_percent ?? null,\r\n cpu_temp: sensors_temperatures?.coretemp?.[0]?.current ?? null,\r\n mem_total: mem?.total ?? null,\r\n mem_usage: mem?.percent ?? null,\r\n mem_temp: getMaxSensorTemp(sensors_temperatures?.spd5118),\r\n nic_temp: getMaxNicTemp(sensors_temperatures) ?? null,\r\n hd_temp: getMaxSensorTemp(sensors_temperatures?.nvme),\r\n gpu_usage: gpu_stats?.[0]?.[\"utilization.gpu\"] ?? null,\r\n gpu_temp: gpu_stats?.[0]?.[\"temperature.gpu\"] ?? null,\r\n };\r\n};\r\n\r\n// 提取公共逻辑\r\nconst createMetricItem = (\r\n title,\r\n iconClass,\r\n value,\r\n unit\r\n) => {\r\n const numValue = typeof value === 'string' ? parseFloat(value) : value;\r\n\r\n return {\r\n title,\r\n iconClass,\r\n valueString: `${numValue}${unit}`,\r\n value: numValue,\r\n };\r\n};\r\n\r\nconst getItems = (details) => {\r\n const items = [];\r\n\r\n if (details.cpu_usage !== null && details.cpu_usage !== undefined) {\r\n items.push(createMetricItem('CPU Usage', 'seeder-icon-CPU', details.cpu_usage, '%'));\r\n }\r\n\r\n if (details.cpu_temp !== null && details.cpu_temp !== undefined) {\r\n items.push(createMetricItem('CPU Temperature', 'seeder-icon-CPUwendu', details.cpu_temp, '℃'));\r\n }\r\n\r\n if (details.mem_usage !== null && details.mem_usage !== undefined) {\r\n items.push({\r\n ...createMetricItem('Memory Usage', 'seeder-icon-shiyongshuai', details.mem_usage, '%'),\r\n memTotal: details.mem_total,\r\n });\r\n }\r\n\r\n if (details.mem_temp !== null && details.mem_temp !== undefined) {\r\n items.push(createMetricItem('Memory Temperature', 'seeder-icon-wendu', details.mem_temp, '℃'));\r\n }\r\n\r\n if (details.nic_temp !== null && details.nic_temp !== undefined) {\r\n items.push(createMetricItem('NIC Temperature', 'seeder-icon-wuliwangka', details.nic_temp, '℃'));\r\n }\r\n\r\n if (details.hd_temp !== null && details.hd_temp !== undefined) {\r\n items.push(createMetricItem('Disk Temperature', 'seeder-icon-yingpan', details.hd_temp, '℃'));\r\n }\r\n\r\n if (details.gpu_usage !== null && details.gpu_usage !== undefined) {\r\n items.push(createMetricItem('GPU Usage', 'seeder-icon-gpufuwu', details.gpu_usage, '%'));\r\n }\r\n\r\n if (details.gpu_temp !== null && details.gpu_temp !== undefined) {\r\n items.push(createMetricItem('GPU Temperature', 'seeder-icon-CPUwendu', details.gpu_temp, '℃'));\r\n }\r\n\r\n return items;\r\n};\r\n\r\nconst useHardwareUsage = (socketUrl) => {\r\n const { ps_status } = useHardwareWebSocket(socketUrl);\r\n\r\n return useMemo(() => {\r\n if (!ps_status || typeof ps_status !== 'object') return null;\r\n\r\n const statusItems = getItems(getDetail(ps_status));\r\n\r\n return (\r\n <div className=\"usage-container\">\r\n {statusItems.map((item, index) => (\r\n <div key={item.title} className=\"usage-item-wrapper\">\r\n <UsageItem \r\n title={item.title}\r\n iconClass={item.iconClass} \r\n memTotal={item.memTotal}\r\n >\r\n {item.valueString}\r\n </UsageItem>\r\n {/* {index < statusItems.length - 1 && <Divider type=\"vertical\" />} */}\r\n </div>\r\n ))}\r\n </div>\r\n )\r\n }, [ps_status]);\r\n}\r\n\r\nexport default useHardwareUsage;","import { useState } from 'react';\r\nimport { Modal, Form, Input, Alert, App } from 'antd';\r\n\r\nconst AuthorizationModal = ({\r\n onCancel,\r\n onOk,\r\n authData,\r\n title = 'Register License',\r\n okText,\r\n cancelText = 'Ignore',\r\n width = 600\r\n}) => {\r\n const { message } = App.useApp();\r\n const [code, setCode] = useState('');\r\n\r\n const {\r\n accredit_status: isActivated,\r\n message: statusMessage = 'Unactivated',\r\n bios_id: uuid,\r\n expires_time: expiresTime\r\n } = authData || {};\r\n\r\n const handleOk = () => {\r\n const trimmedCode = code.trim();\r\n if (!trimmedCode) {\r\n message.error('License key cannot be empty');\r\n return;\r\n }\r\n onOk(trimmedCode);\r\n }\r\n \r\n const statusAlert = isActivated ? (\r\n <Alert\r\n message={`${statusMessage}, will expire on ${expiresTime}`}\r\n type=\"success\"\r\n showIcon\r\n />\r\n ) : (\r\n <Alert message={statusMessage} type=\"warning\" showIcon />\r\n );\r\n\r\n const defaultOkText = isActivated ? \"Reactivate\" : \"Activate Now\";\r\n\r\n return (\r\n <Modal\r\n title={title}\r\n open={true}\r\n onCancel={onCancel}\r\n onOk={handleOk}\r\n okText={okText || defaultOkText}\r\n cancelText={cancelText}\r\n width={width}\r\n maskClosable={false}\r\n closable={false}\r\n cancelButtonProps={{ disabled: !isActivated }}\r\n >\r\n <Form\r\n name=\"auth_form\"\r\n labelCol={{ span: 6 }}\r\n wrapperCol={{ span: 18 }}\r\n autoComplete=\"off\"\r\n >\r\n <div style={{ marginBottom: 16 }}>{statusAlert}</div>\r\n <Form.Item label=\"Machine Code\" required>\r\n <Input value={uuid} readOnly />\r\n </Form.Item>\r\n <Form.Item label=\"License Key\" required>\r\n <Input.TextArea\r\n value={code}\r\n onChange={(e) => setCode(e.target.value)}\r\n autoSize={{ minRows: 6, maxRows: 6 }}\r\n placeholder=\"Enter your license key\"\r\n />\r\n </Form.Item>\r\n </Form>\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default AuthorizationModal;","import { useState, useEffect, useCallback } from 'react';\r\nimport { message } from 'antd';\r\nimport AuthorizationModal from '../componnets/AuthorizationModal.jsx';\r\n\r\nconst DEFAULT_AUTH = {\r\n accredit_status: false, // 授权状态\r\n bios_id: '', // 主机id\r\n message: 'Unactivated', // 激活信息\r\n expires_time: '' // 授权到期时间\r\n}\r\n\r\nexport const useAuth = (options) => {\r\n const {\r\n fetchAuthInfo,\r\n authorize,\r\n defaultAuthData = DEFAULT_AUTH,\r\n autoShowModal = true\r\n } = options || {};\r\n\r\n const [messageApi, contextHolder] = message.useMessage();\r\n const [showModal, setShowModal] = useState(false); // 默认隐藏\r\n const [authData, setAuthData] = useState(defaultAuthData);\r\n const [isRegistered, setIsRegistered] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const openModal = useCallback(() => setShowModal(true), []);\r\n const closeModal = useCallback(() => setShowModal(false), []);\r\n\r\n useEffect(() => {\r\n async function loadAuthInfo() {\r\n try {\r\n setLoading(true);\r\n const result = await fetchAuthInfo();\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n setAuthData(commands);\r\n setIsRegistered(commands.accredit_status);\r\n if (autoShowModal) {\r\n commands.accredit_status ? closeModal() : openModal();\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch auth info:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n loadAuthInfo();\r\n }, [fetchAuthInfo, autoShowModal, openModal, closeModal]);\r\n\r\n const auth = async (code) => {\r\n try {\r\n setLoading(true);\r\n const result = await authorize({\r\n type: \"accredit_command\",\r\n commands: {\r\n id: \"LICENSE\",\r\n license_data: code\r\n }\r\n });\r\n if (result?.commands) {\r\n const commands = result.commands;\r\n // type accredit_message\r\n if (commands?.accredit_status) {\r\n setIsRegistered(true);\r\n setAuthData(commands);\r\n closeModal();\r\n } else {\r\n messageApi.error(commands.ciphertext_status || 'Authorization failed');\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Authorization error:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const modal = showModal && (\r\n <>\r\n <AuthorizationModal\r\n onOk={auth}\r\n onCancel={closeModal}\r\n authData={authData}\r\n />\r\n {contextHolder}\r\n </>\r\n );\r\n\r\n return {\r\n AuthModal: modal,\r\n openAuthModal: openModal,\r\n closeAuthModal: closeModal,\r\n isRegistered,\r\n authData,\r\n loading\r\n };\r\n};","import { useRef, useState, useEffect, useMemo } from \"react\";\r\nimport { Spin, message, Dropdown } from \"antd\";\r\nimport { LoadingOutlined } from '@ant-design/icons';\r\nimport { useInterval } from \"ahooks\";\r\nimport axios from 'axios';\r\n\r\nconst useUpgrade = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000\r\n}) => {\r\n const [isSpinning, setIsSpinning] = useState(false);\r\n const [interval, setInterval] = useState(undefined); // 间隔时间,当设置值为 undefined 时会停止计时器\r\n const inputRef = useRef(null);\r\n const [currentStatus, setCurrentStatus] = useState('idle'); // 'idle' | 'uploading' | 'upgrading'\r\n const isUploadCompleteRef = useRef(false); // 安装包上传是否完成\r\n const [uploadProgress, setUploadProgress] = useState(0);\r\n\r\n // 分别创建独立的取消令牌\r\n const uploadCancelToken = useRef(axios.CancelToken.source());\r\n const statusCancelToken = useRef(axios.CancelToken.source());\r\n\r\n const showLoader = () => setIsSpinning(true);\r\n const hideLoader = () => setIsSpinning(false);\r\n\r\n // 构建菜单项 - 确保至少包含download和upload\r\n // 构建菜单项 - 最终完美版本\r\n const finalMenuItems = useMemo(() => {\r\n const hasDownload = menuItems.some(item => item.key === 'download');\r\n const hasUpload = menuItems.some(item => item.key === 'upload');\r\n \r\n if (hasDownload && hasUpload) {\r\n return menuItems;\r\n }\r\n \r\n const licenseIndex = menuItems.findIndex(item => item.key === 'license');\r\n \r\n // 如果没有license,在末尾添加\r\n if (licenseIndex === -1) {\r\n const itemsToAdd = [];\r\n if (menuItems.length > 0) itemsToAdd.push({ type: 'divider' });\r\n if (!hasDownload) itemsToAdd.push({ key: \"download\", label: \"Download Config File\" });\r\n if (!hasUpload) itemsToAdd.push({ key: \"upload\", label: \"Software Update\" });\r\n return [...menuItems, ...itemsToAdd];\r\n }\r\n \r\n // 有license,在license前面插入\r\n const beforeLicense = menuItems.slice(0, licenseIndex);\r\n const licenseItem = menuItems[licenseIndex];\r\n const afterLicense = menuItems.slice(licenseIndex + 1);\r\n \r\n const itemsToInsert = [];\r\n \r\n // 1. 前面的分隔符(如果beforeLicense不为空且最后一项不是分隔符)\r\n if (beforeLicense.length > 0 && beforeLicense[beforeLicense.length - 1].type !== 'divider') {\r\n itemsToInsert.push({ type: 'divider' });\r\n }\r\n \r\n // 2. 添加缺少的项\r\n if (!hasDownload) itemsToInsert.push({ key: \"download\", label: \"Download Config File\" });\r\n if (!hasUpload) itemsToInsert.push({ key: \"upload\", label: \"Software Update\" });\r\n \r\n // 3. 后面的分隔符(与license之间)\r\n itemsToInsert.push({ type: 'divider' });\r\n \r\n return [...beforeLicense, ...itemsToInsert, licenseItem, ...afterLicense];\r\n }, [menuItems]);\r\n\r\n const handleMenuClick = ({ key }) => {\r\n switch (key) {\r\n case 'download':\r\n onDownload();\r\n return;\r\n case 'upload':\r\n onUpload();\r\n return;\r\n default:\r\n // 其他菜单项交给外部回调处理\r\n if (onMenuClick) {\r\n onMenuClick(key);\r\n } else {\r\n console.warn(`Unknown menu key: ${key} and no onMenuClick provided`);\r\n }\r\n }\r\n };\r\n\r\n const onDownload = async () => {\r\n if (!downloadFiles) {\r\n console.error('downloadFiles function is required for download operation');\r\n message.error('Download functionality not configured');\r\n return;\r\n }\r\n\r\n try {\r\n const res = await downloadFiles();\r\n\r\n if (res.status !== 200) {\r\n throw new Error(`Unexpected status code: ${res.status}`);\r\n }\r\n\r\n // 默认值,兼容接口响应头没有定义文件名\r\n let fileName = 'config.tar.gz';\r\n const contentDisposition = res.headers['content-disposition'] || '';\r\n\r\n // 获取接口响应的content-disposition字段值,以便获取到文件名\r\n if (contentDisposition) {\r\n const filenameMatch = contentDisposition.match(/filename\\s*=\\s*\"?([^\";]+)\"?/i);\r\n if (filenameMatch?.[1]) {\r\n fileName = decodeURIComponent(filenameMatch[1]); // 处理编码后的文件名(如 %20 转空格)\r\n }\r\n }\r\n\r\n // 创建并下载文件\r\n const blob = new Blob([res.data], { type: 'application/octet-stream' });\r\n const url = window.URL.createObjectURL(blob);\r\n\r\n // 下面就是创建一个a标签并触发click事件,来下载该文件\r\n const link = document.createElement('a');\r\n link.style.display = 'none';\r\n link.href = url;\r\n link.target = '_blank';\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // 最后移除a标签并删除创建的ObjectURL对象,防止内存泄漏\r\n link.parentNode.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n } catch (error) {\r\n console.error('Download failed:', error);\r\n message.error('Download failed');\r\n }\r\n }\r\n\r\n const onUpload = () => {\r\n if (inputRef?.current) {\r\n inputRef.current.click();\r\n }\r\n }\r\n\r\n const updatePackage = async (event) => {\r\n if (!upgradeExecute) {\r\n console.error('upgradeExecute function is required for upload operation');\r\n message.error('Upload functionality not configured');\r\n return;\r\n }\r\n\r\n try {\r\n const file = event.target.files?.[0];\r\n if (!file) return;\r\n\r\n showLoader();\r\n setCurrentStatus('Uploading...');\r\n setUploadProgress(0); // 重置进度\r\n\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n isUploadCompleteRef.current = false;\r\n\r\n // 上传文件(不等待响应)\r\n upgradeExecute(formData, {\r\n onUploadProgress: (progressEvent) => {\r\n const percentCompleted = Math.round(\r\n (progressEvent.loaded * 100) / progressEvent.total\r\n );\r\n setUploadProgress(percentCompleted); // 更新进度状态\r\n\r\n if (percentCompleted === 100) {\r\n isUploadCompleteRef.current = true;\r\n // 等待3秒 开始状态轮询\r\n setTimeout(() => {\r\n setInterval(statusPollingInterval);\r\n setCurrentStatus('Upgrading...');\r\n }, uploadCompleteDelay);\r\n }\r\n },\r\n cancelToken: uploadCancelToken.current.token\r\n });\r\n\r\n // 清除文件选择\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n console.error(\"Upload error:\", error);\r\n message.error('Upload failed');\r\n }\r\n cancelRequest();\r\n }\r\n }\r\n\r\n const fetchUpgradeStatus = async () => {\r\n if (!upgradeStatus) {\r\n console.error('upgradeStatus function is required for status checking');\r\n cancelRequest();\r\n return;\r\n }\r\n\r\n try {\r\n const response = await upgradeStatus({\r\n cancelToken: statusCancelToken.current.token\r\n });\r\n\r\n if (response?.status === 200) {\r\n const { code, message: statusMessage } = response.data;\r\n\r\n // 状态处理\r\n switch (code) {\r\n case 200: // 升级成功\r\n message.success(statusMessage, 2.5, () => {\r\n cancelRequest();\r\n window.location.reload();\r\n });\r\n break;\r\n \r\n case 201: // 升级中\r\n // code为201时,每隔一秒请求一次。直到请求到其他的code,直接弹出message提示。\r\n break;\r\n case 202: // 升级失败\r\n case 203: // 升级异常\r\n message.error(statusMessage);\r\n cancelRequest();\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n } catch (error) {\r\n if (axios.isCancel(error)) {\r\n console.log('Status polling canceled');\r\n } else {\r\n console.error('Status check failed:', error);\r\n // 网络错误时自动重试\r\n }\r\n }\r\n }\r\n\r\n const cancelRequest = () => {\r\n // 取消状态轮询\r\n uploadCancelToken.current.cancel('Operation canceled');\r\n statusCancelToken.current.cancel('Operation canceled');\r\n \r\n uploadCancelToken.current = axios.CancelToken.source();\r\n statusCancelToken.current = axios.CancelToken.source();\r\n \r\n // 重置所有状态\r\n setInterval(undefined);\r\n setCurrentStatus('idle');\r\n hideLoader();\r\n };\r\n\r\n // 轮询状态\r\n useInterval(fetchUpgradeStatus, interval);\r\n\r\n // 组件卸载时清理\r\n useEffect(() => {\r\n return () => {\r\n uploadCancelToken.current.cancel();\r\n statusCancelToken.current.cancel();\r\n };\r\n }, []);\r\n\r\n const upgradeElement = (\r\n <div>\r\n <Dropdown \r\n menu={{ \r\n items: finalMenuItems, \r\n onClick: handleMenuClick\r\n }} \r\n trigger={[\"hover\"]}\r\n >\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className=\"seeder-iconfont seeder-icon-liebiao2 text-xl text-neutral-400\"></i>\r\n </a>\r\n </Dropdown>\r\n <input \r\n ref={inputRef} \r\n type=\"file\" \r\n onChange={updatePackage} \r\n className=\"hidden\"\r\n accept={acceptFileTypes}\r\n />\r\n <Spin \r\n spinning={isSpinning} \r\n indicator={<LoadingOutlined style={{ fontSize: 60 }} spin />}\r\n tip={\r\n currentStatus === \"Uploading...\" \r\n ? `${currentStatus} ${uploadProgress}%` \r\n : currentStatus\r\n }\r\n size=\"large\"\r\n fullscreen\r\n />\r\n </div>\r\n )\r\n\r\n return [upgradeElement];\r\n}\r\n\r\nexport default useUpgrade;","import { useCallback } from 'react';\r\nimport { App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\n\r\nconst useSystemOperations = ({\r\n onPowerOff,\r\n onRestart,\r\n confirmTitle = \"Confirm\",\r\n cancelText = \"No\",\r\n okText = \"Yes\",\r\n run\r\n} = {}) => {\r\n const { modal: AntdModal } = App.useApp();\r\n\r\n const doAction = useCallback((action) => {\r\n try {\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: `${confirmTitle} ${action}?`,\r\n cancelText,\r\n okText,\r\n onOk: () => {\r\n if (action === 'poweroff' && onPowerOff) {\r\n onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n onRestart();\r\n }\r\n\r\n // Call the run callback after successful operation\r\n if (typeof run === 'function') {\r\n run();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }, [AntdModal, confirmTitle, cancelText, okText, onPowerOff, onRestart]);\r\n\r\n const getMenuItems = useCallback(() => [\r\n {\r\n key: \"poweroff\",\r\n label: \"Power Off\",\r\n },\r\n {\r\n key: \"restart\",\r\n label: \"Restart\",\r\n }\r\n ], []);\r\n\r\n const handleMenuClick = useCallback(({ key }) => {\r\n doAction(key);\r\n }, [doAction]);\r\n\r\n return {\r\n menuItems: getMenuItems(),\r\n handleMenuClick\r\n };\r\n};\r\n\r\nexport default useSystemOperations;","import { memo, useEffect, useMemo, useState, useCallback, useRef } from 'react';\r\nimport { Modal, Form, App, Typography, Divider, Input } from 'antd';\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\n\r\nconst NetworkFieldGroup = ({ prefix, interfaces, fieldConfig = {} }) => {\r\n // 默认字段配置\r\n const defaultFieldConfig = {\r\n name: { label: \"Name\", enabled: true },\r\n ip: { label: \"IP Address\", enabled: true },\r\n netmask: { label: \"Netmask\", enabled: true }\r\n };\r\n \r\n const mergedFieldConfig = {\r\n ...defaultFieldConfig,\r\n ...fieldConfig,\r\n netmask: {\r\n label: \"Netmask\",\r\n enabled: fieldConfig.netmask?.enabled ?? defaultFieldConfig.netmask.enabled, // 合并 enabled\r\n }\r\n };\r\n \r\n return (\r\n <>\r\n <Typography.Title\r\n level={5}\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n marginBottom: 16\r\n }}\r\n >\r\n {prefix}\r\n </Typography.Title>\r\n {interfaces.map((iface, index) => (\r\n <div key={iface.id || index}>\r\n {mergedFieldConfig.name.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.name.label}\r\n name={[prefix, index, \"display_name\"]}\r\n >\r\n <Input disabled />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.ip.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.ip.label}\r\n name={[prefix, index, \"ip_address\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {mergedFieldConfig.netmask.enabled && (\r\n <Form.Item\r\n label={mergedFieldConfig.netmask.label}\r\n name={[prefix, index, \"netmask\"]}\r\n >\r\n <Input />\r\n </Form.Item>\r\n )}\r\n\r\n {index < interfaces.length - 1 && <Divider style={{ marginBlock: 16 }} />}\r\n </div>\r\n ))}\r\n </>\r\n )\r\n};\r\n\r\nconst NetworkSettingsModal = ({\r\n open, \r\n onClose, \r\n getLanConfig, // 可选 - 单独获取LAN配置的函数\r\n getSysConfig, // 可选 - 单独获取QSFP配置的函数\r\n getConfig, // 可选 - 统一获取配置的函数\r\n updateLanConfig, \r\n updateSysConfig, \r\n restart,\r\n modalProps = {},\r\n formProps = {},\r\n fieldConfig = {},\r\n sections = ['LAN', 'QSFP'],\r\n showNetmask = { LAN: true, QSFP: false },\r\n restartRemark\r\n}) => {\r\n const { message, modal } = App.useApp();\r\n const [form] = Form.useForm();\r\n\r\n const [st2110Interfaces, setSt2110Interfaces] = useState([]);\r\n const [lanConfigs, setLanConfigs] = useState([]);\r\n const [submitLoading, setSubmitLoading] = useState(false);\r\n const [isInitialized, setIsInitialized] = useState(false);\r\n\r\n const initializationStatus = useRef({\r\n hasFetched: false,\r\n hasInitialized: false\r\n });\r\n\r\n const preparedFieldConfig = useMemo(() => {\r\n const config = { ...fieldConfig };\r\n \r\n // 确保LAN和QSFP的配置存在\r\n config.LAN = config.LAN || {};\r\n config.QSFP = config.QSFP || {};\r\n\r\n if (sections.includes('LAN')) {\r\n config.LAN.netmask = {\r\n ...(config.LAN.netmask || {}),\r\n enabled: showNetmask.LAN\r\n };\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n config.QSFP.netmask = {\r\n ...(config.QSFP.netmask || {}),\r\n enabled: showNetmask.QSFP\r\n };\r\n }\r\n\r\n return config;\r\n }, [fieldConfig, showNetmask, sections]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n \r\n const fetchData = async () => {\r\n if (initializationStatus.current.hasFetched) return;\r\n \r\n try {\r\n initializationStatus.current.hasFetched = true;\r\n\r\n if (getConfig) {\r\n // 使用统一接口获取数据\r\n const config = await getConfig();\r\n if (sections.includes('LAN') && config.lan_interfaces) {\r\n setLanConfigs(config.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && config.interfaces) {\r\n setSt2110Interfaces(config.interfaces);\r\n }\r\n } else {\r\n const promises = [];\r\n if (sections.includes('LAN')) {\r\n promises.push(getLanConfig());\r\n }\r\n \r\n if (sections.includes('QSFP')) {\r\n promises.push(getSysConfig());\r\n }\r\n\r\n const results = await Promise.allSettled(promises);\r\n\r\n if (sections.includes('LAN') && getLanConfig) {\r\n const lanResult = results[0];\r\n if (lanResult.status === 'fulfilled') {\r\n setLanConfigs(lanResult.value || []);\r\n }\r\n }\r\n \r\n if (sections.includes('QSFP') && getSysConfig) {\r\n const sysResult = sections.includes('LAN') ? results[1] : results[0];\r\n if (sysResult.status === 'fulfilled' && sysResult.value) {\r\n setSt2110Interfaces(sysResult.value.st2110_interfaces || []);\r\n }\r\n }\r\n }\r\n \r\n setIsInitialized(true);\r\n } catch (error) {\r\n console.error('Failed to fetch data:', error);\r\n initializationStatus.current.hasFetched = false; // 出错时重置\r\n }\r\n };\r\n\r\n fetchData();\r\n }, [open, getLanConfig, getSysConfig, sections]); \r\n\r\n // 当模态框关闭时重置状态\r\n useEffect(() => {\r\n if (!open) {\r\n setIsInitialized(false);\r\n setLanConfigs([]);\r\n setSt2110Interfaces([]);\r\n form.resetFields();\r\n initializationStatus.current = { hasFetched: false, hasInitialized: false };\r\n }\r\n }, [open, form]);\r\n\r\n // 动态初始值配置\r\n const initialValues = useMemo(() => {\r\n const values = {};\r\n \r\n if (sections.includes('LAN') && lanConfigs.length > 0) {\r\n values.LAN = lanConfigs.map(config => ({\r\n connection_id: config.connection_id,\r\n display_name: config.display_name,\r\n ip_address: config.ip_address,\r\n ...(showNetmask.LAN ? { netmask: config.netmask } : {})\r\n }));\r\n }\r\n \r\n if (sections.includes('QSFP') && st2110Interfaces.length > 0) {\r\n values.QSFP = st2110Interfaces.map(iface => ({\r\n // 只有当iface中存在id字段时才包含id\r\n ...(iface.id !== undefined && { id: iface.id }),\r\n display_name: iface.display_name,\r\n ip_address: iface.ip_address || iface.ip, // 优先取ip_address,没有则取ip\r\n ...(showNetmask.QSFP ? { netmask: iface.netmask } : {})\r\n }));\r\n }\r\n \r\n return values;\r\n }, [lanConfigs, st2110Interfaces, sections, showNetmask]);\r\n\r\n // 当初始值准备好后设置表单值\r\n useEffect(() => {\r\n if (isInitialized && !initializationStatus.current.hasInitialized) {\r\n form.setFieldsValue(initialValues);\r\n initializationStatus.current.hasInitialized = true;\r\n }\r\n }, [isInitialized, form, initialValues]);\r\n\r\n const handleSuccess = useCallback(async ({\r\n messageText = 'Success',\r\n isPopup = !!restart,\r\n refresh = !restart\r\n } = {}) => {\r\n message.success(messageText);\r\n\r\n if (refresh && getConfig) {\r\n try {\r\n const newConfig = await getConfig();\r\n if (sections.includes('LAN') && newConfig.lan_interfaces) {\r\n setLanConfigs(newConfig.lan_interfaces);\r\n }\r\n if (sections.includes('QSFP') && newConfig.interfaces) {\r\n setSt2110Interfaces(newConfig.interfaces);\r\n }\r\n } catch (error) {\r\n console.error('Failed to refresh config:', error);\r\n }\r\n }\r\n\r\n // 如果有restart函数,则显示重启确认框\r\n if (isPopup && restart) {\r\n try {\r\n const updatedConfig = await getSysConfig();\r\n if (updatedConfig && updatedConfig.is_restart_required) {\r\n modal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: \"Configuration modified. Restart to apply changes?\",\r\n cancelText: \"No\",\r\n okText: \"Yes\",\r\n onOk: () => restart(),\r\n });\r\n }\r\n } catch (error) {\r\n console.error('Failed to check restart status:', error);\r\n }\r\n }\r\n\r\n onClose();\r\n }, [message, modal, getSysConfig, restart, getConfig, sections, onClose]);\r\n\r\n const handleSubmit = useCallback(async () => {\r\n setSubmitLoading(true);\r\n\r\n try {\r\n const values = await form.validateFields();\r\n\r\n const updatePromises = [];\r\n\r\n // 更新LAN配置\r\n if (sections.includes('LAN') && values.LAN) {\r\n const lanData = values.LAN.map((item, index) => ({\r\n connection_id: lanConfigs[index]?.connection_id,\r\n ip_address: item.ip_address,\r\n ...(showNetmask.LAN ? { netmask: item.netmask } : {})\r\n }));\r\n updatePromises.push(updateLanConfig(lanData));\r\n }\r\n\r\n // 更新QSFP配置\r\n if (sections.includes('QSFP') && values.QSFP) {\r\n const interfacesData = values.QSFP.map((item, index) => ({\r\n // 只有当原始数据中存在id时才包含id\r\n ...(st2110Interfaces?.[index]?.id !== undefined && {\r\n id: st2110Interfaces?.[index]?.id \r\n }),\r\n ...(st2110Interfaces?.[index]?.ip !== undefined \r\n ? { ip: item.ip_address } \r\n : { ip_address: item.ip_address }\r\n ),\r\n ...(showNetmask.QSFP ? { netmask: item.netmask } : {})\r\n }));\r\n\r\n const st2110Data = st2110Interfaces.some(iface => 'id' in iface)\r\n ? { st2110_interfaces: interfacesData }\r\n : { interfaces: interfacesData };\r\n\r\n updatePromises.push(updateSysConfig(st2110Data));\r\n }\r\n\r\n const results = await Promise.allSettled(updatePromises);\r\n\r\n // 检查所有更新是否成功\r\n const allSucceeded = results.every(result => result.status === 'fulfilled');\r\n\r\n if (allSucceeded) {\r\n handleSuccess();\r\n }\r\n } catch (error) {\r\n console.error('Failed to update configurations: ', error);\r\n } finally {\r\n setSubmitLoading(false);\r\n }\r\n }, [\r\n form, \r\n sections, \r\n lanConfigs, \r\n st2110Interfaces, \r\n updateLanConfig, \r\n updateSysConfig, \r\n handleSuccess\r\n ]);\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: \"Network Settings\",\r\n width: 650,\r\n open,\r\n confirmLoading: submitLoading,\r\n onOk: handleSubmit,\r\n onCancel: onClose,\r\n okText: \"Apply\",\r\n cancelText: \"Close\",\r\n centered: true,\r\n destroyOnHidden: true,\r\n forceRender: true,\r\n styles: {\r\n body: { padding: \"16px 24px 8px 24px\" },\r\n ...(restartRemark !== null && { footer: { paddingBottom: 28 } })\r\n },\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n labelCol: { span: 6 },\r\n wrapperCol: { span: 18 },\r\n autoComplete: \"off\",\r\n ...formProps\r\n };\r\n\r\n return (\r\n <Modal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {sections.includes('LAN') && lanConfigs.length > 0 && (\r\n <>\r\n <NetworkFieldGroup\r\n prefix=\"LAN\"\r\n interfaces={lanConfigs}\r\n fieldConfig={preparedFieldConfig.LAN}\r\n />\r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && <Divider />}\r\n </>\r\n )}\r\n \r\n {sections.includes('QSFP') && st2110Interfaces.length > 0 && (\r\n <NetworkFieldGroup\r\n prefix=\"QSFP\"\r\n interfaces={st2110Interfaces}\r\n fieldConfig={preparedFieldConfig.QSFP}\r\n />\r\n )}\r\n </Form>\r\n {restartRemark}\r\n </Modal>\r\n );\r\n}\r\n\r\nexport { NetworkFieldGroup };\r\nexport default memo(NetworkSettingsModal);","import { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { Modal, Select, Switch, Input, Badge, Form, ConfigProvider, InputNumber, App } from \"antd\";\r\n\r\n// 默认字段配置\r\nconst defaultFieldConfigs = {\r\n clock_class: {\r\n label: 'Clock Class',\r\n formType: 'select',\r\n options: [\r\n { value: 6, label: 'Atomic Clock (6)' },\r\n { value: 7, label: 'GPS (7)' },\r\n { value: 248, label: 'Slave-Only (248)' }\r\n ],\r\n readOnly: true\r\n },\r\n clock_accuracy: {\r\n label: 'Clock Accuracy',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n offset_scaled_log_variance: {\r\n label: 'Offset Scaled Log Variance',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority1: {\r\n label: 'Priority 1',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_priority2: {\r\n label: 'Priority 2',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n grandmaster_identity: {\r\n label: 'Grandmaster Identity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n master_port_id: {\r\n label: 'Port Identity',\r\n formType: 'text',\r\n readOnly: true\r\n },\r\n t1_domain_number: {\r\n label: 'Domain',\r\n formType: 'number',\r\n min: 0,\r\n max: 127,\r\n readOnly: false\r\n },\r\n master_utc_offset: {\r\n label: 'UTC Offset',\r\n formType: 'number',\r\n readOnly: true\r\n },\r\n is_connected: {\r\n label: 'Connected Status',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'Disconnected', color: 'red' },\r\n 1: { text: 'Connected', color: 'green' }\r\n }\r\n },\r\n is_locked: {\r\n label: 'Locked Status',\r\n formType: 'badge',\r\n statusMap: {\r\n 0: { text: 'Unlocked', color: 'red' },\r\n 1: { text: 'Locked', color: 'green' }\r\n }\r\n }\r\n};\r\n\r\n// 默认字段顺序\r\nconst defaultFieldOrder = [\r\n 't1_domain_number',\r\n 'grandmaster_priority1',\r\n 'grandmaster_priority2',\r\n 'grandmaster_identity',\r\n 'master_port_id',\r\n 'clock_class',\r\n 'clock_accuracy',\r\n 'offset_scaled_log_variance',\r\n 'master_utc_offset',\r\n 'is_connected',\r\n 'is_locked'\r\n];\r\n\r\n/**\r\n * 转换PTP状态为表单字段数组\r\n * @param {Object} ptpStatus PTP状态对象\r\n * @param {Object} fieldConfigs 字段配置\r\n * @param {Array} fieldOrder 字段顺序\r\n * @returns {Array} 表单字段数组\r\n */\r\nfunction convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder) {\r\n return fieldOrder\r\n .filter(key => key in ptpStatus)\r\n .map(key => {\r\n const config = fieldConfigs[key] || { label: key, formType: 'text' };\r\n const value = ptpStatus[key];\r\n \r\n return {\r\n key,\r\n value,\r\n ...config,\r\n rawData: ptpStatus,\r\n };\r\n });\r\n}\r\n\r\nconst PtpModal = ({\r\n open, \r\n onClose, \r\n getPtpInfo, \r\n updatePtpInfo, \r\n fieldConfigs = defaultFieldConfigs,\r\n fieldOrder = defaultFieldOrder,\r\n modalProps = {},\r\n formProps = {}\r\n}) => {\r\n const [ptpStatus, setPtpStatus] = useState(null);\r\n const [form] = Form.useForm();\r\n const { message } = App.useApp();\r\n\r\n useEffect(() => {\r\n if (open) {\r\n getPtpInfo().then(data => {\r\n if (data?.[0]) {\r\n setPtpStatus(data[0]);\r\n form.setFieldsValue(data[0]);\r\n }\r\n });\r\n }\r\n }, [open, form, getPtpInfo])\r\n\r\n const ptpStatusArray = useMemo(() => {\r\n if (!ptpStatus) return[];\r\n return convertPtpStatusToArray(ptpStatus, fieldConfigs, fieldOrder);\r\n }, [ptpStatus])\r\n\r\n const handleValueChange = (changedValues) => {\r\n if ('t1_domain_number' in changedValues) {\r\n setPtpStatus(prev => ({\r\n ...prev,\r\n t1_domain_number: changedValues.t1_domain_number\r\n }));\r\n }\r\n };\r\n\r\n const handleSubmit = async () => {\r\n try {\r\n const values = await form.validateFields();\r\n\r\n const response = await updatePtpInfo(values);\r\n if (response) {\r\n message.success('Success');\r\n setTimeout(() => {\r\n onClose();\r\n }, 1500);\r\n }\r\n } catch (error) {\r\n console.error('Update failed:', error);\r\n }\r\n };\r\n\r\n\r\n const renderFormItem = (item) => {\r\n switch (item.formType) {\r\n case 'select':\r\n return <Select options={item.options} disabled={item.readOnly} />;\r\n case 'switch':\r\n return <Switch />;\r\n case 'badge':\r\n const normalizedValue = typeof item.value === 'boolean' \r\n ? (item.value ? 1 : 0)\r\n : item.value;\r\n const status = item.statusMap?.[normalizedValue] || { text: 'Unknown', color: 'gray' };\r\n return (\r\n <ConfigProvider theme={{ components: { Badge: { statusSize: 10 } } }}>\r\n <Badge color={status.color} text={status.text} />\r\n </ConfigProvider>\r\n );\r\n case 'number':\r\n return (\r\n <InputNumber\r\n disabled={item.readOnly} \r\n controls={false} \r\n keyboard={false} \r\n min={item.min ?? Number.MIN_SAFE_INTEGER} \r\n max={item.max ?? Number.MAX_SAFE_INTEGER}\r\n />\r\n )\r\n default:\r\n return <Input disabled={item.readOnly} />;\r\n }\r\n };\r\n \r\n if (!open || !ptpStatus) return null;\r\n\r\n // 合并默认模态框属性和传入的属性\r\n const mergedModalProps = {\r\n title: \"PTP\",\r\n width: 650,\r\n open,\r\n okText: \"Apply\",\r\n cancelText: \"Close\",\r\n onCancel: onClose,\r\n onOk: handleSubmit,\r\n ...modalProps\r\n };\r\n\r\n // 合并默认表单属性和传入的属性\r\n const mergedFormProps = {\r\n form: form,\r\n name: \"ptpForm\",\r\n labelCol: { span: 8 },\r\n wrapperCol: { span: 16 },\r\n autoComplete: \"off\",\r\n onValuesChange: handleValueChange,\r\n ...formProps\r\n };\r\n\r\n return (\r\n <Modal {...mergedModalProps}>\r\n <Form {...mergedFormProps}>\r\n {ptpStatusArray.map(item => (\r\n <Form.Item \r\n label={item.label} \r\n name={item.key} \r\n key={item.key}\r\n initialValue={item.value}\r\n >\r\n {renderFormItem(item)}\r\n </Form.Item>\r\n ))}\r\n </Form>\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default memo(PtpModal);","import { List, Empty, Button, Space, Form, Input, Flex, Checkbox, Typography } from \"antd\";\r\nimport { memo, useEffect, useMemo, useState } from \"react\";\r\nimport { PlusOutlined } from \"@ant-design/icons\";\r\n\r\nexport const LeftList = memo(({\r\n dataSource,\r\n selectedPresetId,\r\n onSelectPreset,\r\n onAddNew,\r\n onRemove,\r\n hasPresets = dataSource.length > 0,\r\n showDescription = false,\r\n texts = {\r\n newButton: \"New Preset\",\r\n removeButton: \"Delete\"\r\n }\r\n}) => {\r\n // 动态计算列布局\r\n const gridColumns = showDescription ? \"grid-cols-3\" : \"grid-cols-2\";\r\n\r\n return (\r\n <div className=\"h-full left-list-wrapper\">\r\n <div className=\"list-container\">\r\n <List\r\n header={\r\n <div className={`grid ${gridColumns} gap-2 w-full list-header`}>\r\n <div>Name</div>\r\n <div>Create Time</div>\r\n {showDescription && <div>Description</div>}\r\n </div>\r\n }\r\n dataSource={dataSource}\r\n rowKey=\"id\"\r\n renderItem={(item) => (\r\n <List.Item \r\n className={`list-item ${\r\n selectedPresetId === item.id ? 'selected' : ''\r\n }`}\r\n style={{ padding: \"9px 24px\" }}\r\n onClick={() => onSelectPreset(item)}\r\n >\r\n <div className={`grid ${gridColumns} gap-2 w-full text-text-normal`}>\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.name}>\r\n {item.name || \"Untitled Preset\"}\r\n </Typography.Text>\r\n </div>\r\n\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis>\r\n {item.create_time}\r\n </Typography.Text>\r\n </div>\r\n \r\n {showDescription && (\r\n <div className=\"min-w-0\">\r\n <Typography.Text ellipsis title={item.description}>\r\n {item.description}\r\n </Typography.Text>\r\n </div>\r\n )}\r\n </div>\r\n </List.Item>\r\n )}\r\n locale={{\r\n emptyText: (\r\n <div className=\"p-8\">\r\n <Empty\r\n image={Empty.PRESENTED_IMAGE_SIMPLE}\r\n description={\r\n <span className=\"text-gray-400\">\r\n <Button \r\n type=\"link\" \r\n onClick={onAddNew}\r\n className=\"p-0 h-auto\"\r\n icon={<PlusOutlined />}\r\n >\r\n Create New Preset\r\n </Button>\r\n </span>\r\n }\r\n />\r\n </div>\r\n )\r\n }}\r\n />\r\n </div>\r\n\r\n {/* 底部按钮区域 */}\r\n {hasPresets && (\r\n <div className=\"p-4\" style={{ paddingInline: 24 }}>\r\n <Space size=\"middle\">\r\n <Button\r\n type=\"default\"\r\n icon={<PlusOutlined />}\r\n // style={{ padding: \"20px 12px\" }}\r\n className=\"btn-gray\"\r\n onClick={onAddNew}\r\n >\r\n {texts.newButton}\r\n </Button>\r\n <Button\r\n type=\"default\"\r\n // style={{ padding: \"20px 12px\" }}\r\n className=\"btn-gray\"\r\n onClick={onRemove}\r\n >\r\n {texts.removeButton}\r\n </Button>\r\n </Space>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n});\r\n\r\nconst SubmitButton = ({ loading, action, children, disabled = false }) => (\r\n <div className=\"submit-btn-wrapper\">\r\n <Button className=\"btn-gray\" loading={loading} onClick={action} disabled={disabled}>\r\n {children}\r\n </Button>\r\n </div>\r\n);\r\n\r\nexport const RightDetailForm = memo(({\r\n form, \r\n onSave, \r\n onLoad,\r\n isLoading,\r\n isEditing,\r\n originalPresetData,\r\n fields = {\r\n name: {\r\n label: \"Name\",\r\n placeholder: \"Please enter name\",\r\n required: true\r\n }\r\n },\r\n texts = {\r\n loadButton: \"Load\",\r\n saveButton: \"Save\"\r\n },\r\n presetChanged // 作用:在切换选中预设时强制触发 Checkbox 的重新初始化\r\n}) => {\r\n const [initialSelected, setInitialSelected] = useState([]);\r\n const currentSelected = Form.useWatch('category_list', form) || [];\r\n\r\n // 检查是否包含category_list字段\r\n const hasCategoryList = fields.category_list !== null && fields.category_list !== undefined;\r\n\r\n // 初始化 category_list 的选择状态\r\n useEffect(() => {\r\n if (hasCategoryList) {\r\n const currentValue = form.getFieldValue('category_list') || [];\r\n setInitialSelected(currentValue);\r\n }\r\n }, [presetChanged, form, hasCategoryList]); // 当presetChanged变化时更新\r\n\r\n // 动态生成 checkbox 选项\r\n const checkboxOptions = useMemo(() => {\r\n if (!hasCategoryList) return [];\r\n \r\n return fields.category_list.options.map(category => {\r\n const isInitiallySelected = initialSelected.includes(category.name);\r\n const shouldDisable = isEditing ? !isInitiallySelected : false;\r\n \r\n return {\r\n ...category,\r\n disabled: shouldDisable,\r\n initiallySelected: isInitiallySelected\r\n };\r\n });\r\n }, [initialSelected, isEditing, hasCategoryList, fields.category_list]);\r\n\r\n const handleCheckboxChange = (checkedValues) => {\r\n form.setFieldsValue({ category_list: checkedValues });\r\n };\r\n\r\n const handleLoad = async () => {\r\n try {\r\n const formValues = await form.validateFields();\r\n\r\n const loadData = {\r\n id: form.getFieldValue('id'),\r\n // 优先使用表单中的 category_list,如果没有则使用原始数据\r\n name: originalPresetData.name,\r\n category_list: hasCategoryList \r\n ? (formValues.category_list || [])\r\n : (originalPresetData?.category_list || [])\r\n };\r\n await onLoad(loadData);\r\n } catch (error) {\r\n console.error('表单验证失败:', error);\r\n }\r\n };\r\n\r\n return (\r\n <Flex vertical className=\"h-full\">\r\n <Form \r\n form={form} \r\n layout=\"vertical\" \r\n autoComplete=\"off\" \r\n style={{ flex: 1, overflowY: 'auto' }}\r\n >\r\n {/* Name 字段 */}\r\n <Form.Item \r\n name=\"name\" \r\n label={fields.name.label}\r\n // rules={[\r\n // { \r\n // required: fields.name.required,\r\n // validator: async (_, value) => {\r\n // if (!value || value.trim() === '') {\r\n // return Promise.reject(new Error('Preset name cannot be empty or spaces only'));\r\n // }\r\n // }\r\n // }\r\n // ]}\r\n required\r\n >\r\n <Input \r\n placeholder={fields.name.placeholder} \r\n disabled={isEditing} \r\n />\r\n </Form.Item>\r\n\r\n {/* Category List 字段 */}\r\n {hasCategoryList && (\r\n <Form.Item \r\n name=\"category_list\" \r\n label={fields.category_list.label}\r\n // rules={[\r\n // { \r\n // required: fields.category_list.required,\r\n // message: 'Please select at least one category',\r\n // validator: (_, value) => {\r\n // if (value && value.length > 0) {\r\n // return Promise.resolve();\r\n // }\r\n // return Promise.reject(new Error('Please select at least one category'));\r\n // }\r\n // }\r\n // ]}\r\n required\r\n >\r\n <Checkbox.Group \r\n className=\"grid grid-cols-2 gap-2\"\r\n onChange={handleCheckboxChange}\r\n >\r\n {checkboxOptions.map(category => (\r\n <Checkbox \r\n key={category.name} \r\n value={category.name}\r\n disabled={category.disabled}\r\n >\r\n {category.label}\r\n </Checkbox>\r\n ))}\r\n </Checkbox.Group>\r\n </Form.Item>\r\n )}\r\n\r\n {/* Description 字段 */}\r\n {fields.description && (\r\n <Form.Item \r\n name=\"description\" \r\n label={fields.description.label}\r\n >\r\n <Input.TextArea \r\n rows={4}\r\n placeholder={fields.description.placeholder}\r\n disabled={isEditing}\r\n style={{\r\n resize: 'none'\r\n }}\r\n />\r\n </Form.Item>\r\n )}\r\n </Form>\r\n {isEditing ? (\r\n <SubmitButton\r\n action={handleLoad}\r\n {...(hasCategoryList && { disabled: !currentSelected.length })}\r\n >\r\n {texts.loadButton}\r\n </SubmitButton>\r\n ) : (\r\n <SubmitButton \r\n action={onSave} \r\n loading={isLoading}\r\n >\r\n {texts.saveButton}\r\n </SubmitButton>\r\n )}\r\n </Flex>\r\n );\r\n});","import { Modal, Form, Row, Col, Empty, App, Spin, Flex } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport { memo, useState, useCallback, useEffect } from \"react\";\r\nimport { LeftList, RightDetailForm } from \"./PresetModal.component\";\r\n// import \"../styles/index.less\";\r\n\r\nconst Preset = ({\r\n open,\r\n onClose,\r\n // API 方法通过 props 传入\r\n getPresetList,\r\n savePreset,\r\n removePreset,\r\n loadPreset,\r\n onLoadSuccess, // 加载成功后的回调\r\n onLoadError, // 加载失败后的回调\r\n // 字段配置\r\n fields = {\r\n name: {\r\n label: \"Name\",\r\n placeholder: \"Please enter name\",\r\n required: true\r\n }\r\n },\r\n texts = {\r\n title: \"Preset Management\",\r\n emptyText: \"Select a preset from the list to view details\",\r\n deleteConfirm: \"Are you sure you want to delete preset\",\r\n loadConfirm: \"Are you sure you want to load preset\",\r\n loadText: \"Loading...\",\r\n successText: \"Success\",\r\n newButton: \"New Preset\",\r\n removeButton: \"Delete\",\r\n loadButton: \"Load\",\r\n saveButton: \"Save\"\r\n },\r\n // 样式定制\r\n width = 1000,\r\n height = 680,\r\n className = \"\"\r\n}) => {\r\n const { message: AntdMessage, modal: AntdModal } = App.useApp();\r\n const [presetList, setPresetList] = useState([]);\r\n const [selectedPreset, setSelectedPreset] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [presetChanged, setPresetChanged] = useState(0);\r\n const [form] = Form.useForm();\r\n\r\n const fetchPresetList = useCallback(async () => {\r\n try {\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 自动选中第一个预设\r\n if (presets.length > 0) {\r\n const firstPreset = presets[0];\r\n setSelectedPreset(firstPreset);\r\n form.setFieldsValue(firstPreset);\r\n setPresetChanged(prev => prev + 1);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch preset list:', error);\r\n }\r\n }, [getPresetList]);\r\n\r\n const handleSelectPreset = useCallback((preset) => {\r\n setSelectedPreset(preset);\r\n form.setFieldsValue(preset);\r\n setPresetChanged(prev => prev + 1);\r\n }, [form]);\r\n\r\n const handleAddNew = useCallback(() => {\r\n const unsavedPreset = presetList.find(item => !item.id);\r\n\r\n if (unsavedPreset) {\r\n AntdMessage.warning('Existing unsaved preset detected.');\r\n return;\r\n }\r\n\r\n // 创建新的数据,包含所有配置的字段\r\n const newPreset = Object.keys(fields).reduce((acc, fieldName) => {\r\n acc[fieldName] = '';\r\n return acc;\r\n }, {});\r\n\r\n // 特殊处理 category_list\r\n if (fields.category_list?.options) {\r\n newPreset.category_list = fields.category_list.options.map(item => item.name);\r\n }\r\n \r\n setPresetList([...presetList, newPreset]);\r\n setSelectedPreset(newPreset);\r\n form.setFieldsValue(newPreset);\r\n }, [form, presetList, AntdMessage]);\r\n\r\n const handleRemove = useCallback(async () => {\r\n if (!selectedPreset) return;\r\n\r\n // 检查是否为新建的未保存数据(无id)\r\n const isUnsavedPreset = !selectedPreset.id;\r\n const presetName = selectedPreset.name || 'Untitled Preset';\r\n\r\n try {\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: 'Delete Preset',\r\n content: `${texts.deleteConfirm} \"${presetName}\"?`,\r\n cancelText: 'No',\r\n okText: 'Yes',\r\n onOk: async () => {\r\n // 在删除前记录当前选中项的位置\r\n const currentIndex = presetList.findIndex(item => \r\n isUnsavedPreset ? !item.id : item.id === selectedPreset.id\r\n );\r\n\r\n if (!isUnsavedPreset) {\r\n await removePreset({ id: selectedPreset.id });\r\n AntdMessage.success(texts.successText);\r\n } else {\r\n // 移除未保存的预设\r\n setPresetList(prev => prev.filter(item => !!item.id));\r\n }\r\n\r\n // 获取删除后的列表\r\n const updatedList = isUnsavedPreset \r\n ? presetList.filter(item => !!item.id)\r\n : await getPresetList().then(data => data?.preset_list || data || []);\r\n\r\n // 更新列表\r\n setPresetList(updatedList);\r\n\r\n if (updatedList.length > 0) {\r\n // 计算下一个索引\r\n let nextIndex = 0;\r\n\r\n if (currentIndex > 0) {\r\n // 如果删除的不是最后一项\r\n if (currentIndex < updatedList.length) {\r\n nextIndex = currentIndex; // 保持相同位置\r\n } else {\r\n nextIndex = updatedList.length - 1; // 选最后一个\r\n }\r\n }\r\n\r\n const nextPreset = updatedList[nextIndex];\r\n if (nextPreset) {\r\n setSelectedPreset(nextPreset);\r\n form.setFieldsValue(nextPreset);\r\n setPresetChanged(prev => prev + 1);\r\n return;\r\n }\r\n }\r\n\r\n // 列表为空\r\n setSelectedPreset(null);\r\n form.resetFields();\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Failed to delete preset:', error);\r\n }\r\n }, [selectedPreset, form, AntdModal, AntdMessage, texts, removePreset, getPresetList]);\r\n\r\n const handleLoadPreset = useCallback(async (loadData) => {\r\n if (!loadData) return;\r\n\r\n // 显示确认对话框\r\n AntdModal.confirm({\r\n title: 'Load Preset',\r\n content: `${texts.loadConfirm} \"${loadData.name}\"?`,\r\n cancelText: 'No',\r\n okText: 'Yes',\r\n onOk: async () => {\r\n // 显示加载模态框\r\n const modalInstance = Modal.info({\r\n title: texts.loadText,\r\n content: <Spin size=\"large\" className=\"block mx-auto\" />,\r\n maskClosable: false,\r\n okButtonProps: { style: { display: 'none' } }\r\n });\r\n\r\n try {\r\n await loadPreset({\r\n id: loadData.id,\r\n ...(loadData.category_list && { category_list: loadData.category_list })\r\n });\r\n // 成功时延迟关闭\r\n setTimeout(() => {\r\n modalInstance.destroy();\r\n AntdMessage.success(texts.successText);\r\n\r\n // 加载成功的外部回调\r\n if (onLoadSuccess) {\r\n onLoadSuccess(loadData);\r\n }\r\n }, 1000);\r\n } catch (error) {\r\n console.error('Failed to load preset:', error);\r\n modalInstance.destroy();\r\n\r\n // 加载失败的外部回调\r\n if (onLoadError) {\r\n onLoadError(error, loadData);\r\n }\r\n }\r\n }\r\n });\r\n }, [loadPreset, texts, AntdMessage, AntdModal, onLoadSuccess, onLoadError]);\r\n\r\n const handleSave = useCallback(async () => {\r\n setLoading(true);\r\n\r\n try {\r\n const values = await form.getFieldsValue();\r\n\r\n // 验证预设名称\r\n if (fields.name?.required) {\r\n if (!values.name || values.name.trim() === '') {\r\n AntdMessage.error('Name is required.')\r\n return; // 直接返回 不执行\r\n }\r\n }\r\n\r\n // 验证分类列表\r\n if (fields.category_list?.required) {\r\n if (!values.category_list || values.category_list.length === 0) {\r\n AntdMessage.error('No category selected.')\r\n return;\r\n }\r\n }\r\n \r\n await savePreset(values);\r\n AntdMessage.success(texts.successText);\r\n\r\n const savedPresetName = values.name;\r\n\r\n // 刷新列表\r\n const data = await getPresetList();\r\n const presets = data?.preset_list || data || [];\r\n setPresetList(presets);\r\n\r\n // 在刷新后的列表中查找同名的预设\r\n const newlySavedPreset = presets.find(item => item.name === savedPresetName);\r\n\r\n if (newlySavedPreset) {\r\n setSelectedPreset(newlySavedPreset);\r\n form.setFieldsValue(newlySavedPreset);\r\n setPresetChanged(prev => prev + 1);\r\n } else {\r\n setSelectedPreset(values);\r\n }\r\n } catch (error) {\r\n console.error('Failed to save preset:', error);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [form, AntdMessage, texts, savePreset, getPresetList]);\r\n\r\n // 初始化数据\r\n useEffect(() => {\r\n fetchPresetList();\r\n }, [fetchPresetList]);\r\n\r\n return (\r\n <Modal\r\n title={texts.title}\r\n width={width}\r\n open={open}\r\n wrapClassName={`preset-management ${className}`}\r\n footer={null}\r\n onCancel={onClose}\r\n centered\r\n styles={{\r\n body: {\r\n height: `${height}px`\r\n }\r\n }}\r\n >\r\n <Row gutter={0} className=\"h-full w-full\">\r\n <Col span={14} className=\"h-full\">\r\n <LeftList\r\n dataSource={presetList}\r\n selectedPresetId={selectedPreset?.id}\r\n onSelectPreset={handleSelectPreset}\r\n onAddNew={handleAddNew}\r\n onRemove={handleRemove}\r\n showDescription={!!fields.description} // 根据 fields 判断是否显示 description\r\n texts={{\r\n newButton: texts.newButton,\r\n removeButton: texts.removeButton,\r\n }}\r\n />\r\n </Col>\r\n <Col span={10} className=\"h-full p-6\">\r\n {selectedPreset ? (\r\n <RightDetailForm\r\n form={form}\r\n onSave={handleSave}\r\n onLoad={handleLoadPreset}\r\n isLoading={loading}\r\n isEditing={!!selectedPreset?.id}\r\n originalPresetData={selectedPreset} // 传递原始数据\r\n fields={fields}\r\n texts={{\r\n loadButton: texts.loadButton,\r\n saveButton: texts.saveButton\r\n }}\r\n presetChanged={presetChanged}\r\n />\r\n ) : (\r\n <Flex vertical justify=\"center\" align=\"center\" className=\"h-full text-gray-400\">\r\n <Empty \r\n image={Empty.PRESENTED_IMAGE_SIMPLE} \r\n description={texts.emptyText}\r\n />\r\n </Flex>\r\n )}\r\n </Col>\r\n </Row>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default memo(Preset);","import { Dropdown } from \"antd\";\r\nimport useUpgrade from '../hooks/useUpgrade';\r\n\r\nconst UpgradeManager = ({\r\n menuItems = [],\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes = \"application/octet-stream\",\r\n uploadCompleteDelay = 3000,\r\n statusPollingInterval = 1000,\r\n children,\r\n ...dropdownProps\r\n }) => {\r\n const [upgradeElement] = useUpgrade({\r\n menuItems,\r\n onMenuClick,\r\n downloadFiles,\r\n upgradeExecute,\r\n upgradeStatus,\r\n acceptFileTypes,\r\n uploadCompleteDelay,\r\n statusPollingInterval\r\n });\r\n\r\n if (children) {\r\n // 提取Dropdown组件和其menu属性\r\n const dropdownElement = upgradeElement.props.children[0];\r\n const otherElements = upgradeElement.props.children.slice(1);\r\n \r\n return (\r\n <>\r\n <Dropdown \r\n {...dropdownProps} \r\n {...dropdownElement.props} // 传递所有Dropdown的props\r\n >\r\n {children}\r\n </Dropdown>\r\n {otherElements}\r\n </>\r\n );\r\n }\r\n\r\n // 如果没有children,直接返回完整的升级元素\r\n return upgradeElement;\r\n }\r\n\r\n UpgradeManager.defaultProps = {\r\n trigger: [\"hover\"],\r\n placement: \"bottomRight\"\r\n};\r\n\r\nexport default UpgradeManager;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { Dropdown, App } from \"antd\";\r\nimport { ExclamationCircleFilled } from \"@ant-design/icons\";\r\nimport PropTypes from 'prop-types';\r\n\r\nconst SystemOperations = ({ \r\n onPowerOff, \r\n onRestart,\r\n powerOffLabel = \"Power Off\",\r\n restartLabel = \"Restart\",\r\n iconClassName = \"seeder-iconfont seeder-icon-guanji1 text-xl text-neutral-400\",\r\n confirmMessage = \"Are you sure you want to {action} the system? This action cannot be undone.\",\r\n confirmTitle = \"Confirmation Required\",\r\n cancelText = \"No\",\r\n okText = \"Yes\",\r\n run\r\n}) => {\r\n const { modal: AntdModal } = App.useApp();\r\n\r\n const menuItems = [\r\n {\r\n key: \"poweroff\",\r\n label: powerOffLabel,\r\n },\r\n // {\r\n // key: \"reboot\",\r\n // label: rebootLabel, // 硬重启 物理重启\r\n // },\r\n {\r\n key: \"restart\",\r\n label: restartLabel, // 软重启 服务重启\r\n }\r\n ];\r\n\r\n const doAction = (action) => {\r\n try {\r\n // 根据action决定显示的确认信息\r\n const actionLabels = {\r\n poweroff: \"power off\",\r\n restart: \"restart\"\r\n };\r\n\r\n const actionText = actionLabels[action] || action;\r\n\r\n AntdModal.confirm({\r\n icon: <ExclamationCircleFilled />,\r\n title: confirmTitle,\r\n content: confirmMessage.replace('{action}', actionText),\r\n cancelText,\r\n okText,\r\n onOk: () => {\r\n if (action === 'poweroff' && onPowerOff) {\r\n onPowerOff();\r\n } else if (action === 'restart' && onRestart) {\r\n onRestart();\r\n }\r\n\r\n // Call the run callback after successful operation\r\n if (typeof run === 'function') {\r\n run();\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`${action.toUpperCase()} ERROR: `, error);\r\n }\r\n }\r\n\r\n const handleMenuClick = ({ key }) => {\r\n doAction(key);\r\n }\r\n\r\n return (\r\n <Dropdown menu={{ items: menuItems, onClick: handleMenuClick }} trigger={[\"hover\"]}>\r\n <a onClick={(e) => e.preventDefault()}>\r\n <i className={iconClassName}></i>\r\n </a>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nSystemOperations.propTypes = {\r\n onPowerOff: PropTypes.func,\r\n onRestart: PropTypes.func,\r\n powerOffLabel: PropTypes.string,\r\n restartLabel: PropTypes.string,\r\n iconClassName: PropTypes.string,\r\n confirmTitle: PropTypes.string,\r\n cancelText: PropTypes.string,\r\n okText: PropTypes.string,\r\n run: PropTypes.func\r\n};\r\n\r\nexport default SystemOperations;","import { Button } from 'antd';\r\nimport PropTypes from 'prop-types';\r\n\r\n// 将 logo.png 转为 base64\r\nconst logoBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAGaCAYAAAAfLro4AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAGj2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDg4LCAyMDIwLzA3LzEwLTIyOjA2OjUzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTA5LTA5VDEwOjU2OjU5KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1YmIxNjQ4OC1hYzczLWI3NGYtODczMC1hZGZiY2Y1NTk3OWYiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4MjdjZjIwMy0zM2IyLWU3NDItYWRhNC0wNGY2YzA5ZTYxOWIiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyN2NmMjAzLTMzYjItZTc0Mi1hZGE0LTA0ZjZjMDllNjE5YiIgc3RFdnQ6d2hlbj0iMjAyNS0wOS0wOVQxMDo1Njo1OSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowZjE5ZjRmMy1jZWFlLTcwNDUtYTA5OC0xMjJmNzViYjVhYmIiIHN0RXZ0OndoZW49IjIwMjUtMDktMDlUMTA6NTY6NTkrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZkN2NjZDg5LTViMTQtMDI0MC04YjNhLTQzODU2ODk1YTFlZjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlgJupcAADw7SURBVHic7d15vKdz/f/xx5mNGWMsw1hKkaVQkmm1VFQSKr6VLIXIEtK++ZZIRQtJiG+K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NAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLRLLAkSZIkSZJUNAssSZIkSZIkFc0CS5IkSZIkSUWzwJIkSZIkSVLR/h+CVP12K0zZoAAAAABJRU5ErkJggg==';\r\n\r\nconst defaultResetRoute = () => {\r\n window.location.href = window.location.origin;\r\n};\r\n\r\nconst useSpaLogo = (props = {}) => {\r\n const {\r\n logoUrl = logoBase64, // 使用者传入 logo URL\r\n logoWidth = 100,\r\n logoAlt = 'logo',\r\n onClick = defaultResetRoute,\r\n buttonStyle = {\r\n padding: 0,\r\n lineHeight: 1,\r\n height: 'auto',\r\n borderStyle: 'none',\r\n display: 'inline-block'\r\n }\r\n } = props;\r\n\r\n // 如果没有提供 logoUrl,返回空\r\n if (!logoUrl) {\r\n return [null];\r\n }\r\n\r\n return [\r\n <Button key=\"logo\" type=\"link\" style={buttonStyle} onClick={onClick}>\r\n <img alt={logoAlt} src={logoUrl} style={{ width: logoWidth }} />\r\n </Button>\r\n ];\r\n}\r\n\r\nuseSpaLogo.propTypes = {\r\n logoUrl: PropTypes.string,\r\n logoWidth: PropTypes.number,\r\n logoAlt: PropTypes.string,\r\n onClick: PropTypes.func\r\n};\r\n\r\nexport default useSpaLogo;","import { Space, Typography, Flex } from \"antd\";\r\nimport PropTypes from 'prop-types';\r\nimport useSpaLogo from '../hooks/useSpaLogo';\r\nimport useHardwareUsage from '../hooks/useHardwareUsage';\r\nimport SystemOperations from './SystemOperations';\r\n\r\n// 默认的获取 WebSocket URL 函数\r\nconst defaultGetSocketUrl = (url) => {\r\n if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {\r\n return `ws://127.0.0.1:${window.location.port}${url}`;\r\n }\r\n return `ws://${window.location.host}${url}`;\r\n};\r\n\r\n/**\r\n * 通用 Header 组件\r\n * @param {Object} props\r\n * @param {React.ReactNode} props.menuElement - 菜单元素\r\n * @param {Object} props.productInfo - 产品信息 { productName, version }\r\n * @param {boolean} props.showLogo - 是否显示Logo\r\n * @param {boolean} props.showProductInfo - 是否显示产品信息\r\n * @param {boolean} props.showHardwareUsage - 是否显示硬件使用情况\r\n * @param {boolean} props.showSystemOperations - 是否显示系统操作\r\n * @param {Function} props.onPowerOff - 关机函数\r\n * @param {Function} props.onRestart - 重启函数\r\n * @param {Function} props.onRun - 运行函数(用于SystemOperations)\r\n * @param {string} props.hardwareMonitorUrl - 硬件监控WebSocket地址\r\n * @param {Function} props.getSocketUrl - 获取WebSocket URL的函数\r\n * @param {Object} props.logoProps - Logo组件属性\r\n * @param {string} props.className - 自定义类名\r\n * @param {Object} props.style - 自定义样式\r\n */\r\nconst CommonHeader = ({\r\n menuElement,\r\n productInfo = {},\r\n showLogo = true,\r\n showProductInfo = true,\r\n showHardwareUsage = true,\r\n showSystemOperations = true,\r\n onPowerOff,\r\n onRestart,\r\n onRun,\r\n hardwareMonitorUrl = '/ws/psmonitor/status_update',\r\n getSocketUrl = defaultGetSocketUrl,\r\n logoProps = {},\r\n className = '',\r\n style = {},\r\n // 新增插槽\r\n leftContent, // 左侧额外内容\r\n}) => {\r\n const [logo] = useSpaLogo(logoProps);\r\n\r\n // 系统资源使用情况\r\n const usageElement = useHardwareUsage(getSocketUrl(hardwareMonitorUrl));\r\n\r\n return (\r\n <Flex justify=\"space-between\" align=\"center\" className={`common-header ${className}`} style={style}>\r\n {/* 左侧:Logo、产品信息和左侧插槽 */}\r\n <Space size={12}>\r\n {showLogo && logo}\r\n\r\n {showProductInfo && (\r\n <Flex align=\"center\" gap={8}>\r\n {productInfo.productName && (\r\n <Typography.Title level={4} style={{ marginBottom: 0 }}>\r\n {productInfo.productName}\r\n </Typography.Title>\r\n )}\r\n {productInfo.version && (\r\n <Typography.Text style={{ position: 'relative', top: 6, left: -6 }}>\r\n {productInfo.version}\r\n </Typography.Text>\r\n )}\r\n </Flex>\r\n )}\r\n\r\n {/* 左侧插槽 */}\r\n {leftContent}\r\n </Space>\r\n\r\n {/* 右侧:硬件监控和操作按钮 */}\r\n <Flex align=\"center\" gap={10}>\r\n {/* 系统资源使用情况 */}\r\n {showHardwareUsage && usageElement}\r\n\r\n <div className=\"header-controls\">\r\n {menuElement && (\r\n <div className=\"control-icon\">\r\n {menuElement}\r\n </div>\r\n )}\r\n\r\n {/* 关机、重启操作 */}\r\n {showSystemOperations && (\r\n <div className=\"control-icon\">\r\n <SystemOperations\r\n onPowerOff={onPowerOff}\r\n onRestart={onRestart}\r\n run={onRun}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </Flex>\r\n </Flex>\r\n )\r\n};\r\n\r\n// PropTypes 类型检查\r\nCommonHeader.propTypes = {\r\n menuElement: PropTypes.node,\r\n productInfo: PropTypes.shape({\r\n productName: PropTypes.string,\r\n version: PropTypes.string,\r\n }),\r\n showLogo: PropTypes.bool,\r\n showProductInfo: PropTypes.bool,\r\n showHardwareUsage: PropTypes.bool,\r\n showSystemOperations: PropTypes.bool,\r\n onPowerOff: PropTypes.func,\r\n onRestart: PropTypes.func,\r\n onRun: PropTypes.func,\r\n hardwareMonitorUrl: PropTypes.string,\r\n getSocketUrl: PropTypes.func,\r\n logoProps: PropTypes.object,\r\n className: PropTypes.string,\r\n style: PropTypes.object,\r\n};\r\n\r\nexport default CommonHeader;","import { useState, useEffect, memo } from 'react';\r\nimport { Select, Form } from 'antd';\r\n\r\nconst LSMLabelField = (props) => {\r\n const [lsmList, setLsmList] = useState([]);\r\n\r\n const {\r\n label = \"Label\",\r\n onLsmSelect,\r\n fetchLsmData,\r\n formItemProps = {},\r\n selectProps = {},\r\n fieldNames = { label: 'label', value: 'label' }\r\n } = props;\r\n\r\n useEffect(() => {\r\n const loadLsmData = async () => {\r\n try {\r\n const res = await fetchLsmData();\r\n if (res?.length) {\r\n setLsmList(res);\r\n }\r\n } catch (error) {\r\n console.error('Failed to fetch LSM data:', error);\r\n }\r\n };\r\n\r\n loadLsmData();\r\n }, [fetchLsmData]);\r\n\r\n return (\r\n <Form.Item\r\n label={label}\r\n {...formItemProps}\r\n >\r\n <Select\r\n {...field}\r\n {...selectProps}\r\n options={lsmList}\r\n fieldNames={fieldNames}\r\n allowClear\r\n showSearch\r\n optionFilterProp=\"label\"\r\n onChange={(value, option) => {\r\n field.onChange(value);\r\n onLsmSelect?.(value === undefined ? undefined : option);\r\n }}\r\n placeholder={selectProps.placeholder || 'Please select label'}\r\n />\r\n </Form.Item>\r\n );\r\n};\r\n\r\nexport default memo(LSMLabelField);","// src/react/DraggableNumberInput.tsx\r\nimport React from \"react\";\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\n\r\n// 默认配置\r\nconst DEFAULT_DECIMAL_PLACES = 2;\r\n\r\n// src/react/defaults-and-utils.ts\r\n// eslint-disable-next-line no-var\r\nvar defaultModifiers = {\r\n default: { multiplier: 1, sensitivity: 1 },\r\n // ctrlKey: { multiplier: 1, sensitivity: 1 },\r\n // shiftKey: { multiplier: 10, sensitivity: 0.5 },\r\n // metaKey: { multiplier: 1, sensitivity: 1 },\r\n // altKey: { multiplier: 1, sensitivity: 1 }\r\n};\r\n\r\n// multiplier: 控制每次鼠标移动时数值变化的基本单位 multiplier: 1- 鼠标移动1像素,值变化1 multiplier: 10- 鼠标移动1像素,值变化10\r\n// sensitivity: 控制数值变化的灵敏度 sensitivity: 1- 正常灵敏度 sensitivity: 0.5- 减半灵敏度,需要移动2像素才能产生正常1像素的效果\r\n\r\n// 修改 formatNumber 函数,强制显示1位小数\r\nfunction formatNumber(value, decimalPlaces = DEFAULT_DECIMAL_PLACES) {\r\n return new Intl.NumberFormat(\"en-US\", {\r\n minimumFractionDigits: decimalPlaces,\r\n maximumFractionDigits: decimalPlaces,\r\n useGrouping: false\r\n }).format(value);\r\n}\r\n\r\nfunction handleArrow(e, multiplier, value) {\r\n if (e.key === \"ArrowUp\") {\r\n return value + multiplier;\r\n }\r\n if (e.key === \"ArrowDown\") {\r\n return value - multiplier;\r\n }\r\n return value;\r\n}\r\n\r\n// eslint-disable-next-line no-var\r\nvar DragCursor = ({ cursorPosition }) => /* @__PURE__ */ React.createElement(\r\n \"div\",\r\n {\r\n style: {\r\n position: \"fixed\",\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n pointerEvents: \"none\"\r\n }\r\n },\r\n /* @__PURE__ */ React.createElement(\r\n \"svg\",\r\n {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"24\",\r\n height: \"24\",\r\n viewBox: \"0 0 24 24\",\r\n style: {\r\n position: \"absolute\",\r\n left: cursorPosition.x,\r\n top: cursorPosition.y,\r\n transform: \"translate(-50%, -50%)\",\r\n pointerEvents: \"none\"\r\n }\r\n },\r\n /* @__PURE__ */ React.createElement(\r\n \"path\",\r\n {\r\n fill: \"#000\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\",\r\n d: \"M6.5 9a.5.5 0 0 0-.8-.4l-4 3a.5.5 0 0 0 0 .8l4 3a.5.5 0 0 0 .8-.4v-1.5h11V15a.5.5 0 0 0 .8.4l4-3a.5.5 0 0 0 0-.8l-4-3a.5.5 0 0 0-.8.4v1.5h-11V9Z\",\r\n style: {\r\n filter: \"drop-shadow( 0px 2px 1px rgba(0, 0, 0, .35))\"\r\n }\r\n }\r\n )\r\n )\r\n);\r\n\r\n// eslint-disable-next-line no-var\r\nvar noop = () => {\r\n};\r\nfunction DraggableNumberInput({\r\n value,\r\n min,\r\n max,\r\n className = \"\",\r\n disablePointerLock = false,\r\n modifierKeys,\r\n decimalPlaces = DEFAULT_DECIMAL_PLACES,\r\n onChange = noop,\r\n onDragStart = noop,\r\n onDragEnd = noop,\r\n style,\r\n ...restProps\r\n}) {\r\n const inputRef = useRef(null);\r\n const [isMouseDown, setIsMouseDown] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [localValue, setLocalValue] = useState(() => formatNumber(value, decimalPlaces));\r\n const [cursorPosition, setCursorPosition] = useState({ x: 0, y: 0 });\r\n const totalMovement = useRef(0);\r\n const startValue = useRef(0);\r\n const startX = useRef(0);\r\n const currentMultiplier = useRef(1);\r\n\r\n // === 新增:编辑状态跟踪 ===\r\n const [isEditing, setIsEditing] = useState(false);\r\n const lastExternalValueRef = useRef(value);\r\n\r\n // 修改 formatNumber 调用,传入 decimalPlaces\r\n const formatValue = useCallback((val) => {\r\n return formatNumber(val, decimalPlaces);\r\n }, [decimalPlaces]);\r\n\r\n const constrainedOnChange = useCallback(\r\n (newValue) => {\r\n let constrainedValue = newValue;\r\n if (typeof min === \"number\") {\r\n constrainedValue = Math.max(min, constrainedValue);\r\n }\r\n if (typeof max === \"number\") {\r\n constrainedValue = Math.min(max, constrainedValue);\r\n }\r\n onChange(constrainedValue);\r\n },\r\n [onChange, min, max]\r\n );\r\n\r\n useEffect(() => {\r\n // 只有当用户不在编辑状态,且外部值真正变化时才更新\r\n if (!isEditing && lastExternalValueRef.current !== value) {\r\n const formattedValue = formatValue(value);\r\n setLocalValue(formattedValue);\r\n lastExternalValueRef.current = value;\r\n }\r\n }, [value, formatValue, isEditing]);\r\n \r\n const handleInputChange = (e) => {\r\n const val = e.target.value;\r\n\r\n // 标记为编辑状态\r\n setIsEditing(true);\r\n setLocalValue(val);\r\n\r\n // 允许输入中间状态,不立即触发onChange\r\n if (val === '' || val === '-' || val === '.' || val.endsWith('.')) {\r\n return; // 输入中,不触发onChange\r\n }\r\n\r\n const num = parseFloat(val);\r\n if (!isNaN(num)) {\r\n constrainedOnChange(num); \r\n }\r\n };\r\n\r\n const handleBlur = () => {\r\n // 退出编辑状态\r\n setIsEditing(false);\r\n\r\n const num = parseFloat(localValue);\r\n if (!isNaN(num)) {\r\n // 根据 decimalPlaces 进行四舍五入\r\n const precision = Math.pow(10, decimalPlaces);\r\n const processedValue = Math.round(num * precision) / precision;\r\n const formattedValue = formatValue(processedValue);\r\n\r\n // 更新显示值\r\n setLocalValue(formattedValue);\r\n lastExternalValueRef.current = processedValue;\r\n // 触发外部变化\r\n constrainedOnChange(processedValue);\r\n } else {\r\n // 如果输入无效,重置为当前外部值\r\n const formattedValue = formatValue(value);\r\n setLocalValue(formattedValue);\r\n }\r\n };\r\n\r\n const handleMouseDown = useCallback(\r\n (e) => {\r\n if (!inputRef.current) return;\r\n let x = 0, y = 0;\r\n if (\"clientX\" in e && \"clientY\" in e) {\r\n [x, y] = [e.clientX, e.clientY];\r\n }\r\n if (\"touches\" in e) {\r\n [x, y] = [e.touches[0].clientX, e.touches[0].clientY];\r\n }\r\n setIsMouseDown(true);\r\n startX.current = x;\r\n startValue.current = value;\r\n totalMovement.current = 0;\r\n setCursorPosition({ x, y });\r\n },\r\n [value, disablePointerLock]\r\n );\r\n\r\n const updateDelta = useCallback(\r\n (e) => {\r\n if (!isMouseDown) return;\r\n applyMovement(totalMovement.current, e);\r\n },\r\n [isMouseDown]\r\n );\r\n\r\n const getModifiers = useCallback(\r\n (e) => {\r\n const mods = { ...defaultModifiers, ...modifierKeys };\r\n for (const key in mods) {\r\n if (key !== \"default\" && e[key]) {\r\n currentMultiplier.current = mods[key].multiplier;\r\n return mods[key];\r\n }\r\n }\r\n currentMultiplier.current = mods.default.multiplier;\r\n return mods.default;\r\n },\r\n [modifierKeys]\r\n );\r\n\r\n const applyMovement = useCallback(\r\n (newMovement, e) => {\r\n const { sensitivity, multiplier } = getModifiers(e);\r\n const delta = newMovement * sensitivity * multiplier;\r\n let newValue = startValue.current + delta;\r\n // 根据 decimalPlaces 进行精度控制\r\n const precision = Math.pow(10, decimalPlaces);\r\n newValue = Math.round(newValue * precision) / precision;\r\n newValue = Object.is(newValue, -0) ? 0 : newValue;\r\n constrainedOnChange(newValue);\r\n },\r\n [constrainedOnChange, getModifiers, decimalPlaces]\r\n );\r\n\r\n const handleArrowKeyDown = (e) => {\r\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n const { multiplier } = getModifiers(e);\r\n const newValue = handleArrow(e, multiplier, value);\r\n constrainedOnChange(newValue);\r\n }\r\n };\r\n\r\n const handleModifierKeyDuringDrag = useCallback(\r\n (e) => {\r\n if (e.key === \"Shift\" || e.key === \"Control\" || e.key === \"Meta\" || e.key === \"Alt\") {\r\n updateDelta(e);\r\n }\r\n },\r\n [updateDelta]\r\n );\r\n\r\n const handleMouseMove = useCallback(\r\n (e) => {\r\n if (!isMouseDown) return;\r\n if (\"touches\" in e) {\r\n e.preventDefault();\r\n }\r\n if (!disablePointerLock && document.pointerLockElement && !(\"touches\" in e)) {\r\n setCursorPosition((prev) => {\r\n const width = window.innerWidth;\r\n const height = window.innerHeight;\r\n const x2 = (prev.x + e.movementX + width) % width;\r\n const y = (prev.y + e.movementY + height) % height;\r\n return { x: x2, y };\r\n });\r\n }\r\n const x = \"touches\" in e ? e.touches[0].clientX : e.clientX;\r\n const newMovement = disablePointerLock || \"touches\" in e ? x - startX.current : totalMovement.current + e.movementX;\r\n if (!isDragging && newMovement !== 0) {\r\n if (!disablePointerLock && !(\"touches\" in e)) {\r\n inputRef.current?.requestPointerLock?.();\r\n }\r\n setIsDragging(true);\r\n document.addEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.addEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragStart();\r\n }\r\n totalMovement.current = newMovement;\r\n applyMovement(newMovement, e);\r\n },\r\n [\r\n isMouseDown,\r\n disablePointerLock,\r\n startX,\r\n isDragging,\r\n onDragStart,\r\n applyMovement\r\n ]\r\n );\r\n\r\n const handleMouseUp = useCallback(() => {\r\n setIsMouseDown(false);\r\n totalMovement.current = 0;\r\n if (isDragging) {\r\n setIsDragging(false);\r\n document.removeEventListener(\"keydown\", handleModifierKeyDuringDrag);\r\n document.removeEventListener(\"keyup\", handleModifierKeyDuringDrag);\r\n onDragEnd();\r\n }\r\n if (document.pointerLockElement) {\r\n document.exitPointerLock();\r\n }\r\n }, [isDragging, onDragEnd, disablePointerLock]);\r\n\r\n useEffect(() => {\r\n if (isMouseDown) {\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"touchmove\", handleMouseMove, {\r\n passive: false\r\n });\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n document.addEventListener(\"touchend\", handleMouseUp);\r\n return () => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n document.removeEventListener(\"touchmove\", handleMouseMove);\r\n document.removeEventListener(\"touchend\", handleMouseUp);\r\n };\r\n }\r\n }, [isMouseDown, handleMouseMove, handleMouseUp]);\r\n\r\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\r\n \"input\",\r\n {\r\n ref: inputRef,\r\n type: \"text\",\r\n inputMode: \"numeric\",\r\n pattern: \"-?[0-9]*\\\\.?[0-9]*\",\r\n value: localValue,\r\n onChange: handleInputChange,\r\n onBlur: handleBlur,\r\n onMouseDown: handleMouseDown,\r\n onTouchStart: handleMouseDown,\r\n onKeyDown: handleArrowKeyDown,\r\n className: `draggable-number-input ${className} ${isDragging ? \"dragging\" : \"\"}`,\r\n style: {\r\n ...{\r\n cursor: \"ew-resize\",\r\n userSelect: \"none\",\r\n caretColor: isDragging ? \"transparent\" : \"initial\"\r\n },\r\n ...style\r\n },\r\n ...restProps\r\n }\r\n ), isDragging && !disablePointerLock && /* @__PURE__ */ React.createElement(DragCursor, { cursorPosition }));\r\n}\r\n\r\nexport {\r\n DraggableNumberInput\r\n};\r\n"],"names":["formatBytes","bytes","decimals","arguments","length","undefined","k","dm","sizes","i","Math","floor","log","parseFloat","pow","toFixed","UsageItem","memo","_ref","title","iconClass","children","memTotal","_jsx","Tooltip","_jsxs","_Fragment","destroyOnHidden","className","concat","useHardwareWebSocket","socketUrl","systemStatus","setSystemStatus","useState","handleMessage","useCallback","message","prev","_objectSpread","error","console","useWebSocket","onMessage","event","parsedMessage","JSON","parse","data","debug","ps_status","getMaxNicTemp","sensors","priorityFields","temps","flatMap","field","_sensors$field","map","item","current","filter","temp","max","getMaxSensorTemp","sensorData","getDetail","_sensors_temperatures","_sensors_temperatures2","_mem$total","_mem$percent","_getMaxNicTemp","_gpu_stats$0$utilizat","_gpu_stats$","_gpu_stats$0$temperat","_gpu_stats$2","status","cpu_percent","mem","sensors_temperatures","gpu_stats","cpu_usage","cpu_temp","coretemp","mem_total","total","mem_usage","percent","mem_temp","spd5118","nic_temp","hd_temp","nvme","gpu_usage","gpu_temp","createMetricItem","value","unit","numValue","valueString","getItems","details","items","push","useHardwareUsage","useMemo","statusItems","index","AuthorizationModal","onCancel","onOk","authData","okText","cancelText","width","App","useApp","code","setCode","accredit_status","isActivated","statusMessage","bios_id","uuid","expires_time","expiresTime","handleOk","trimmedCode","trim","statusAlert","Alert","type","showIcon","defaultOkText","Modal","open","maskClosable","closable","cancelButtonProps","disabled","Form","name","labelCol","span","wrapperCol","autoComplete","style","marginBottom","Item","label","required","Input","readOnly","TextArea","onChange","e","target","autoSize","minRows","maxRows","placeholder","DEFAULT_AUTH","useAuth","options","fetchAuthInfo","authorize","defaultAuthData","autoShowModal","messageApi","contextHolder","useMessage","showModal","setShowModal","setAuthData","isRegistered","setIsRegistered","loading","setLoading","openModal","closeModal","useEffect","loadAuthInfo","result","commands","auth","id","license_data","ciphertext_status","modal","AuthModal","openAuthModal","closeAuthModal","useUpgrade","menuItems","onMenuClick","downloadFiles","upgradeExecute","upgradeStatus","acceptFileTypes","uploadCompleteDelay","statusPollingInterval","isSpinning","setIsSpinning","interval","setInterval","inputRef","useRef","currentStatus","setCurrentStatus","isUploadCompleteRef","uploadProgress","setUploadProgress","uploadCancelToken","axios","CancelToken","source","statusCancelToken","showLoader","hideLoader","finalMenuItems","hasDownload","some","key","hasUpload","licenseIndex","findIndex","itemsToAdd","beforeLicense","slice","licenseItem","afterLicense","itemsToInsert","handleMenuClick","_ref2","onDownload","onUpload","warn","res","Error","fileName","contentDisposition","headers","filenameMatch","match","decodeURIComponent","blob","Blob","url","window","URL","createObjectURL","link","document","createElement","display","href","download","body","appendChild","click","parentNode","removeChild","revokeObjectURL","updatePackage","_event$target$files","file","files","formData","FormData","append","onUploadProgress","progressEvent","percentCompleted","round","loaded","setTimeout","cancelToken","token","isCancel","cancelRequest","fetchUpgradeStatus","response","success","location","reload","cancel","useInterval","upgradeElement","Dropdown","menu","onClick","trigger","preventDefault","ref","accept","Spin","spinning","indicator","LoadingOutlined","fontSize","spin","tip","size","fullscreen","useSystemOperations","onPowerOff","onRestart","confirmTitle","run","AntdModal","doAction","action","confirm","icon","ExclamationCircleFilled","toUpperCase","getMenuItems","NetworkFieldGroup","_fieldConfig$netmask$","_fieldConfig$netmask","prefix","interfaces","fieldConfig","defaultFieldConfig","enabled","ip","netmask","mergedFieldConfig","Typography","Title","level","justifyContent","alignItems","iface","Divider","marginBlock","NetworkSettingsModal","onClose","getLanConfig","getSysConfig","getConfig","updateLanConfig","updateSysConfig","restart","modalProps","formProps","sections","showNetmask","LAN","QSFP","restartRemark","form","useForm","st2110Interfaces","setSt2110Interfaces","lanConfigs","setLanConfigs","submitLoading","setSubmitLoading","isInitialized","setIsInitialized","initializationStatus","hasFetched","hasInitialized","preparedFieldConfig","config","includes","fetchData","lan_interfaces","promises","results","Promise","allSettled","lanResult","sysResult","st2110_interfaces","resetFields","initialValues","values","connection_id","display_name","ip_address","setFieldsValue","handleSuccess","messageText","isPopup","refresh","newConfig","updatedConfig","is_restart_required","handleSubmit","validateFields","updatePromises","lanData","_lanConfigs$index","interfacesData","_st2110Interfaces$ind","_st2110Interfaces$ind2","_st2110Interfaces$ind3","st2110Data","allSucceeded","every","mergedModalProps","confirmLoading","centered","forceRender","styles","padding","footer","paddingBottom","mergedFormProps","defaultFieldConfigs","clock_class","formType","clock_accuracy","offset_scaled_log_variance","grandmaster_priority1","grandmaster_priority2","grandmaster_identity","master_port_id","t1_domain_number","min","master_utc_offset","is_connected","statusMap","text","color","is_locked","defaultFieldOrder","convertPtpStatusToArray","ptpStatus","fieldConfigs","fieldOrder","rawData","PtpModal","getPtpInfo","updatePtpInfo","setPtpStatus","then","ptpStatusArray","handleValueChange","changedValues","renderFormItem","_item$statusMap","_item$min","_item$max","Select","Switch","normalizedValue","ConfigProvider","theme","components","Badge","statusSize","InputNumber","controls","keyboard","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","onValuesChange","initialValue","LeftList","dataSource","selectedPresetId","onSelectPreset","onAddNew","onRemove","hasPresets","showDescription","texts","newButton","removeButton","gridColumns","List","header","rowKey","renderItem","Text","ellipsis","create_time","description","locale","emptyText","Empty","image","PRESENTED_IMAGE_SIMPLE","Button","PlusOutlined","paddingInline","Space","SubmitButton","RightDetailForm","_ref3","onSave","onLoad","isLoading","isEditing","originalPresetData","fields","loadButton","saveButton","presetChanged","initialSelected","setInitialSelected","currentSelected","useWatch","hasCategoryList","category_list","currentValue","getFieldValue","checkboxOptions","category","isInitiallySelected","shouldDisable","initiallySelected","handleCheckboxChange","checkedValues","handleLoad","formValues","loadData","Flex","vertical","layout","flex","overflowY","Checkbox","Group","rows","resize","Preset","getPresetList","savePreset","removePreset","loadPreset","onLoadSuccess","onLoadError","deleteConfirm","loadConfirm","loadText","successText","height","AntdMessage","presetList","setPresetList","selectedPreset","setSelectedPreset","setPresetChanged","fetchPresetList","presets","preset_list","firstPreset","handleSelectPreset","preset","handleAddNew","_fields$category_list","unsavedPreset","find","warning","newPreset","Object","keys","reduce","acc","fieldName","handleRemove","isUnsavedPreset","presetName","content","currentIndex","updatedList","nextIndex","nextPreset","handleLoadPreset","modalInstance","info","okButtonProps","destroy","handleSave","_fields$name","_fields$category_list2","getFieldsValue","savedPresetName","newlySavedPreset","wrapClassName","Row","gutter","Col","justify","align","UpgradeManager","dropdownProps","_objectWithoutProperties","_excluded","dropdownElement","props","otherElements","defaultProps","placement","reactIsModule","require$$0","require$$1","require$$2","require$$3","require$$4","propTypesModule","SystemOperations","powerOffLabel","restartLabel","iconClassName","confirmMessage","actionLabels","poweroff","actionText","replace","propTypes","PropTypes","func","string","logoBase64","defaultResetRoute","origin","useSpaLogo","logoUrl","logoWidth","logoAlt","buttonStyle","lineHeight","borderStyle","alt","src","number","defaultGetSocketUrl","hostname","port","host","CommonHeader","menuElement","productInfo","showLogo","showProductInfo","showHardwareUsage","showSystemOperations","onRun","hardwareMonitorUrl","getSocketUrl","logoProps","leftContent","logo","usageElement","gap","productName","version","position","top","left","node","shape","bool","object","LSMLabelField","lsmList","setLsmList","onLsmSelect","fetchLsmData","formItemProps","selectProps","fieldNames","loadLsmData","allowClear","showSearch","optionFilterProp","option","DEFAULT_DECIMAL_PLACES","defaultModifiers","default","multiplier","sensitivity","formatNumber","decimalPlaces","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","useGrouping","format","handleArrow","DragCursor","cursorPosition","React","pointerEvents","xmlns","viewBox","x","y","transform","fill","stroke","strokeLinejoin","d","noop","DraggableNumberInput","disablePointerLock","modifierKeys","onDragStart","onDragEnd","restProps","isMouseDown","setIsMouseDown","isDragging","setIsDragging","localValue","setLocalValue","setCursorPosition","totalMovement","startValue","startX","currentMultiplier","setIsEditing","lastExternalValueRef","formatValue","val","constrainedOnChange","newValue","constrainedValue","formattedValue","handleInputChange","endsWith","num","isNaN","handleBlur","precision","processedValue","handleMouseDown","clientX","clientY","touches","updateDelta","applyMovement","getModifiers","mods","newMovement","delta","is","handleArrowKeyDown","handleModifierKeyDuringDrag","handleMouseMove","pointerLockElement","innerWidth","innerHeight","x2","movementX","movementY","_inputRef$current","_inputRef$current$req","requestPointerLock","call","addEventListener","handleMouseUp","removeEventListener","exitPointerLock","passive","Fragment","inputMode","pattern","onBlur","onMouseDown","onTouchStart","onKeyDown","cursor","userSelect","caretColor"],"mappings":"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","x_google_ignoreList":[12,13,14,15,16,17,18,19,20,21]}