@iobroker/gui-components 10.3.12 → 10.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,7 +36,7 @@ npm create vite@latest src -- --template react-ts
36
36
  "dependencies": {
37
37
  "@emotion/react": "^11.14.0",
38
38
  "@emotion/styled": "^11.14.1",
39
- "@iobroker/gui-components": "^10.3.12",
39
+ "@iobroker/gui-components": "^10.3.14",
40
40
  "@mui/icons-material": "^9.0.1",
41
41
  "@mui/material": "^9.0.1",
42
42
  "react": "^19.2.5",
@@ -877,6 +877,12 @@ You can find the migration instructions:
877
877
  -->
878
878
 
879
879
  ## Changelog
880
+ ### 10.3.14 (2026-10-25)
881
+ - (@GermanBluefox) Added Icons and texts for new type: TV
882
+
883
+ ### 10.3.13 (2026-10-23)
884
+ - (@GermanBluefox) Fixed: the object browser showed an object twice and copied its row while scrolling, if a sibling ID began with the same text followed by a space (e.g., `BLE_Steckdose` and `BLE_Steckdose 2`): https://github.com/ioBroker/ioBroker.admin/issues/3693
885
+
880
886
  ### 10.3.12 (2026-10-18)
881
887
  - (@GermanBluefox) Fixed: the object browser did not scroll to the pre-selected object when its folders were not expanded yet, e.g. the first time an ID of a Blockly block was opened in the dialog: https://github.com/ioBroker/ioBroker.javascript/issues/2410
882
888
 
@@ -4,7 +4,7 @@ import { AiOutlineLineChart as TypeIconChart } from 'react-icons/ai';
4
4
  import { GoDeviceCameraVideo as TypeIconCamera } from 'react-icons/go';
5
5
  import {
6
6
  // FaExternalLinkSquareAlt as TypeIconURL,
7
- FaImage as TypeIconImage, FaRegLightbulb as TypeIconDimmer, FaInfoCircle as TypeIconInfo, FaLightbulb as TypeIconLight, FaLock as TypeIconLock, FaStreetView as TypeIconLocation, FaStepForward as TypeIconMedia, FaSlidersH as TypeIconSlider, FaVolumeDown as TypeIconVolume, FaVolumeUp as TypeIconVolumeGroup, FaFan as TypeIconAC, FaWrench as TypeIconInstance, } from 'react-icons/fa';
7
+ FaImage as TypeIconImage, FaRegLightbulb as TypeIconDimmer, FaInfoCircle as TypeIconInfo, FaLightbulb as TypeIconLight, FaLock as TypeIconLock, FaStreetView as TypeIconLocation, FaStepForward as TypeIconMedia, FaSlidersH as TypeIconSlider, FaVolumeDown as TypeIconVolume, FaVolumeUp as TypeIconVolumeGroup, FaFan as TypeIconAC, FaWrench as TypeIconInstance, FaTv as TypeIconTv, } from 'react-icons/fa';
8
8
  import { MdFormatColorFill as TypeIconHUE, MdFormatColorFill as TypeIconCT, MdWarning as TypeIconWarning, MdQuestionMark as TypeIconUnknown, MdOutlineMyLocation as TypeIconLocationOne, MdDeviceHub as TypeIconHub3, MdPolyline as TypeIconNode, MdHub as TypeIconHub5, MdControlCamera as TypeIconController, MdAir as TypeIconAirQuality, MdElectricMeter as TypeIconElectricity, } from 'react-icons/md';
9
9
  import { WiCloudy as TypeIconWeather } from 'react-icons/wi';
10
10
  import { IoIosRadioButtonOn as TypeIconButtonSensor } from 'react-icons/io';
@@ -71,6 +71,7 @@ const TYPE_ICONS = {
71
71
  [Types.socket]: TypeIconSocket,
72
72
  [Types.temperature]: TypeIconTemperature,
73
73
  [Types.thermostat]: TypeIconThermostat,
74
+ [Types.tv]: TypeIconTv,
74
75
  // [Types.valve]: TypeIconValve,
75
76
  [Types.vacuumCleaner]: TypeIconVacuumCleaner,
76
77
  [Types.volume]: TypeIconVolume,
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceTypeIcon.js","sourceRoot":"./src/","sources":["Components/DeviceType/DeviceTypeIcon.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\n\nimport { Box, Tooltip } from '@mui/material';\n\nimport { AiOutlineLineChart as TypeIconChart } from 'react-icons/ai';\nimport { GoDeviceCameraVideo as TypeIconCamera } from 'react-icons/go';\n\nimport {\n // FaExternalLinkSquareAlt as TypeIconURL,\n FaImage as TypeIconImage,\n FaRegLightbulb as TypeIconDimmer,\n FaInfoCircle as TypeIconInfo,\n FaLightbulb as TypeIconLight,\n FaLock as TypeIconLock,\n FaStreetView as TypeIconLocation,\n FaStepForward as TypeIconMedia,\n FaSlidersH as TypeIconSlider,\n FaVolumeDown as TypeIconVolume,\n FaVolumeUp as TypeIconVolumeGroup,\n FaFan as TypeIconAC,\n FaWrench as TypeIconInstance,\n} from 'react-icons/fa';\n\nimport {\n MdFormatColorFill as TypeIconHUE,\n MdFormatColorFill as TypeIconCT,\n MdWarning as TypeIconWarning,\n MdQuestionMark as TypeIconUnknown,\n MdOutlineMyLocation as TypeIconLocationOne,\n MdDeviceHub as TypeIconHub3,\n MdPolyline as TypeIconNode,\n MdHub as TypeIconHub5,\n MdControlCamera as TypeIconController,\n MdAir as TypeIconAirQuality,\n MdElectricMeter as TypeIconElectricity,\n} from 'react-icons/md';\nimport { WiCloudy as TypeIconWeather } from 'react-icons/wi';\nimport { IoIosRadioButtonOn as TypeIconButtonSensor } from 'react-icons/io';\nimport {\n TbSunElectricity as TypeIconIlluminance,\n TbAlarmSmoke as TypeIconCoAlarm,\n TbBarrel as TypeIconFillLevel,\n TbRipple as TypeIconFlow,\n TbGauge as TypeIconPressure,\n TbEngine as TypeIconPump,\n TbCircuitSwitchClosed as TypeIconContact,\n} from 'react-icons/tb';\nimport { PiPaletteDuotone as TypeIconRGBWSingle, PiFan as TypeIconFan } from 'react-icons/pi';\nimport { LuAirVent as TypeIconAirPurifier } from 'react-icons/lu';\n\nimport { Types } from '@iobroker/type-detector';\n\nimport { I18n } from '../../i18n';\nimport { Icon } from '../Icon';\n\nimport {\n Cleaner as TypeIconVacuumCleaner,\n Humidity as TypeIconHumidity,\n Jalousie as TypeIconBlinds,\n PushButton as TypeIconButton,\n DoorOpened as TypeIconDoor,\n FireOn as TypeIconFireAlarm,\n FloodOn as TypeIconFloodAlarm,\n Gate as TypeIconGate,\n MotionOn as TypeIconMotion,\n RGB as TypeIconRGB,\n Socket as TypeIconSocket,\n Thermometer as TypeIconTemperature,\n Thermostat as TypeIconThermostat,\n // HeatValve as TypeIconValve,\n WindowOpened as TypeIconWindow,\n WindowTilted as TypeIconWindowTilt,\n type IconPropsSVG,\n} from './icons';\nimport { extendDeviceTypeTranslation } from './deviceTypeTranslations';\n\nexport type TypesExtended = Types | 'invalid' | 'hub3' | 'node' | 'hub5' | 'controller';\n\n/**\n * Icon for every device type.\n *\n * This map is deliberately a complete `Record` over `TypesExtended`: when `@iobroker/type-detector`\n * adds a new member to `Types`, the build fails here until an icon is assigned. Never add keys that\n * are not part of `TypesExtended` (a single `@ts-expect-error` inside the literal would suppress the\n * completeness check for the whole object) — put those in `ROLE_ICONS` below.\n */\nconst TYPE_ICONS: Record<TypesExtended, React.FC<IconPropsSVG>> = {\n [Types.airCondition]: TypeIconAC,\n [Types.airPurifier]: TypeIconAirPurifier,\n [Types.airQuality]: TypeIconAirQuality,\n [Types.blind]: TypeIconBlinds,\n [Types.blindButtons]: TypeIconBlinds,\n [Types.button]: TypeIconButton,\n [Types.buttonSensor]: TypeIconButtonSensor,\n [Types.camera]: TypeIconCamera,\n [Types.chart]: TypeIconChart,\n [Types.coAlarm]: TypeIconCoAlarm,\n [Types.contact]: TypeIconContact,\n // [Types.url]: TypeIconURL,\n [Types.image]: TypeIconImage,\n [Types.dimmer]: TypeIconDimmer,\n [Types.door]: TypeIconDoor,\n [Types.electricity]: TypeIconElectricity,\n [Types.fan]: TypeIconFan,\n [Types.fillLevel]: TypeIconFillLevel,\n [Types.fireAlarm]: TypeIconFireAlarm,\n [Types.floodAlarm]: TypeIconFloodAlarm,\n [Types.flow]: TypeIconFlow,\n [Types.gate]: TypeIconGate,\n [Types.humidity]: TypeIconHumidity,\n [Types.illuminance]: TypeIconIlluminance,\n [Types.info]: TypeIconInfo,\n [Types.light]: TypeIconLight,\n [Types.lock]: TypeIconLock,\n [Types.location]: TypeIconLocation,\n [Types.locationOne]: TypeIconLocationOne,\n [Types.media]: TypeIconMedia,\n [Types.motion]: TypeIconMotion,\n [Types.ct]: TypeIconCT,\n [Types.percentage]: TypeIconSlider,\n [Types.pressure]: TypeIconPressure,\n [Types.pump]: TypeIconPump,\n [Types.rgb]: TypeIconRGB,\n [Types.rgbSingle]: TypeIconRGB,\n [Types.rgbwSingle]: TypeIconRGBWSingle,\n [Types.hue]: TypeIconHUE,\n [Types.cie]: TypeIconRGB,\n [Types.slider]: TypeIconSlider,\n [Types.socket]: TypeIconSocket,\n [Types.temperature]: TypeIconTemperature,\n [Types.thermostat]: TypeIconThermostat,\n // [Types.valve]: TypeIconValve,\n [Types.vacuumCleaner]: TypeIconVacuumCleaner,\n [Types.volume]: TypeIconVolume,\n [Types.volumeGroup]: TypeIconVolumeGroup,\n [Types.window]: TypeIconWindow,\n [Types.windowTilt]: TypeIconWindowTilt,\n [Types.weatherCurrent]: TypeIconWeather,\n [Types.weatherForecast]: TypeIconWeather,\n [Types.warning]: TypeIconWarning,\n\n [Types.unknown]: TypeIconUnknown,\n [Types.instance]: TypeIconInstance,\n\n // Special matter types\n invalid: TypeIconWarning,\n hub3: TypeIconHub3,\n node: TypeIconNode,\n hub5: TypeIconHub5,\n controller: TypeIconController,\n};\n\n/** Icons for state roles that may be given as `src` instead of a device type */\nconst ROLE_ICONS: Record<string, React.FC<IconPropsSVG>> = {\n 'sensor.alarm.fire': TypeIconFireAlarm,\n 'sensor.alarm.flood': TypeIconFloodAlarm,\n};\n\nconst ALL_ICONS: Record<string, React.FC<IconPropsSVG>> = { ...TYPE_ICONS, ...ROLE_ICONS };\n\nfunction isKnownIcon(src: unknown): src is TypesExtended {\n return typeof src === 'string' && Object.prototype.hasOwnProperty.call(ALL_ICONS, src);\n}\n\nconst defaultStyle: React.CSSProperties = {\n width: 32,\n height: 32,\n};\n\nexport interface IconProps {\n /** URL, UTF-8 character, or svg code (data:image/svg...) */\n src?: string | React.JSX.Element | null | undefined;\n /** Class name */\n className?: string;\n /** Style for image */\n style?: React.CSSProperties;\n /** Styles for mui */\n sx?: Record<string, any>;\n /** Tooltip */\n title?: string | true;\n /** Styles for utf-8 characters */\n styleUTF8?: React.CSSProperties;\n /** On error handler */\n onError?: React.ReactEventHandler<HTMLImageElement>;\n /** Reference to image */\n ref?: React.RefObject<HTMLImageElement>;\n /** Alternative text for image */\n alt?: string;\n /** On click handler */\n onClick?: React.MouseEventHandler<any>;\n}\n\nexport type TypeIconProps = IconProps & { type?: TypesExtended };\n\nexport function DeviceTypeIcon(props: TypeIconProps): React.JSX.Element | null {\n const [loaded, setLoaded] = React.useState(false);\n\n useEffect(() => {\n if (props.title && !loaded) {\n extendDeviceTypeTranslation();\n setLoaded(true);\n }\n }, [props.title, loaded]);\n\n if (!loaded && props.title) {\n return (\n <Box\n style={{ ...defaultStyle, ...(props.style || undefined) }}\n className={props.className}\n sx={props.sx}\n />\n );\n }\n // src could contain a device type or a state role too, so detect if it is a type\n const type: TypesExtended | undefined = props.type || (isKnownIcon(props.src) ? props.src : undefined);\n\n if (!type && props.src) {\n return (\n <Icon\n style={defaultStyle}\n {...props}\n title={props.title === true ? undefined : props.title}\n src={props.src}\n />\n );\n }\n\n const TypeIcon = type && ALL_ICONS[type];\n if (!TypeIcon) {\n // Show the first letter of a type\n return type ? (\n <span style={{ ...defaultStyle, ...(props.style || undefined) }}>{type[0].toUpperCase()}</span>\n ) : null;\n }\n\n const icon = (\n <TypeIcon\n style={{ ...defaultStyle, ...(props.style || undefined) }}\n onClick={props.onClick}\n className={props.className}\n sx={props.sx}\n />\n );\n\n if (props.title) {\n return (\n <Tooltip\n slotProps={{ popper: { sx: { pointerEvents: 'none' } } }}\n title={props.title === true ? I18n.t(`type-${type}`) : props.title}\n >\n <div style={{ display: 'flex' }}>{icon}</div>\n </Tooltip>\n );\n }\n\n return icon;\n}\n"]}
1
+ {"version":3,"file":"DeviceTypeIcon.js","sourceRoot":"./src/","sources":["Components/DeviceType/DeviceTypeIcon.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\n\nimport { Box, Tooltip } from '@mui/material';\n\nimport { AiOutlineLineChart as TypeIconChart } from 'react-icons/ai';\nimport { GoDeviceCameraVideo as TypeIconCamera } from 'react-icons/go';\n\nimport {\n // FaExternalLinkSquareAlt as TypeIconURL,\n FaImage as TypeIconImage,\n FaRegLightbulb as TypeIconDimmer,\n FaInfoCircle as TypeIconInfo,\n FaLightbulb as TypeIconLight,\n FaLock as TypeIconLock,\n FaStreetView as TypeIconLocation,\n FaStepForward as TypeIconMedia,\n FaSlidersH as TypeIconSlider,\n FaVolumeDown as TypeIconVolume,\n FaVolumeUp as TypeIconVolumeGroup,\n FaFan as TypeIconAC,\n FaWrench as TypeIconInstance,\n FaTv as TypeIconTv,\n} from 'react-icons/fa';\n\nimport {\n MdFormatColorFill as TypeIconHUE,\n MdFormatColorFill as TypeIconCT,\n MdWarning as TypeIconWarning,\n MdQuestionMark as TypeIconUnknown,\n MdOutlineMyLocation as TypeIconLocationOne,\n MdDeviceHub as TypeIconHub3,\n MdPolyline as TypeIconNode,\n MdHub as TypeIconHub5,\n MdControlCamera as TypeIconController,\n MdAir as TypeIconAirQuality,\n MdElectricMeter as TypeIconElectricity,\n} from 'react-icons/md';\nimport { WiCloudy as TypeIconWeather } from 'react-icons/wi';\nimport { IoIosRadioButtonOn as TypeIconButtonSensor } from 'react-icons/io';\nimport {\n TbSunElectricity as TypeIconIlluminance,\n TbAlarmSmoke as TypeIconCoAlarm,\n TbBarrel as TypeIconFillLevel,\n TbRipple as TypeIconFlow,\n TbGauge as TypeIconPressure,\n TbEngine as TypeIconPump,\n TbCircuitSwitchClosed as TypeIconContact,\n} from 'react-icons/tb';\nimport { PiPaletteDuotone as TypeIconRGBWSingle, PiFan as TypeIconFan } from 'react-icons/pi';\nimport { LuAirVent as TypeIconAirPurifier } from 'react-icons/lu';\n\nimport { Types } from '@iobroker/type-detector';\n\nimport { I18n } from '../../i18n';\nimport { Icon } from '../Icon';\n\nimport {\n Cleaner as TypeIconVacuumCleaner,\n Humidity as TypeIconHumidity,\n Jalousie as TypeIconBlinds,\n PushButton as TypeIconButton,\n DoorOpened as TypeIconDoor,\n FireOn as TypeIconFireAlarm,\n FloodOn as TypeIconFloodAlarm,\n Gate as TypeIconGate,\n MotionOn as TypeIconMotion,\n RGB as TypeIconRGB,\n Socket as TypeIconSocket,\n Thermometer as TypeIconTemperature,\n Thermostat as TypeIconThermostat,\n // HeatValve as TypeIconValve,\n WindowOpened as TypeIconWindow,\n WindowTilted as TypeIconWindowTilt,\n type IconPropsSVG,\n} from './icons';\nimport { extendDeviceTypeTranslation } from './deviceTypeTranslations';\n\nexport type TypesExtended = Types | 'invalid' | 'hub3' | 'node' | 'hub5' | 'controller';\n\n/**\n * Icon for every device type.\n *\n * This map is deliberately a complete `Record` over `TypesExtended`: when `@iobroker/type-detector`\n * adds a new member to `Types`, the build fails here until an icon is assigned. Never add keys that\n * are not part of `TypesExtended` (a single `@ts-expect-error` inside the literal would suppress the\n * completeness check for the whole object) — put those in `ROLE_ICONS` below.\n */\nconst TYPE_ICONS: Record<TypesExtended, React.FC<IconPropsSVG>> = {\n [Types.airCondition]: TypeIconAC,\n [Types.airPurifier]: TypeIconAirPurifier,\n [Types.airQuality]: TypeIconAirQuality,\n [Types.blind]: TypeIconBlinds,\n [Types.blindButtons]: TypeIconBlinds,\n [Types.button]: TypeIconButton,\n [Types.buttonSensor]: TypeIconButtonSensor,\n [Types.camera]: TypeIconCamera,\n [Types.chart]: TypeIconChart,\n [Types.coAlarm]: TypeIconCoAlarm,\n [Types.contact]: TypeIconContact,\n // [Types.url]: TypeIconURL,\n [Types.image]: TypeIconImage,\n [Types.dimmer]: TypeIconDimmer,\n [Types.door]: TypeIconDoor,\n [Types.electricity]: TypeIconElectricity,\n [Types.fan]: TypeIconFan,\n [Types.fillLevel]: TypeIconFillLevel,\n [Types.fireAlarm]: TypeIconFireAlarm,\n [Types.floodAlarm]: TypeIconFloodAlarm,\n [Types.flow]: TypeIconFlow,\n [Types.gate]: TypeIconGate,\n [Types.humidity]: TypeIconHumidity,\n [Types.illuminance]: TypeIconIlluminance,\n [Types.info]: TypeIconInfo,\n [Types.light]: TypeIconLight,\n [Types.lock]: TypeIconLock,\n [Types.location]: TypeIconLocation,\n [Types.locationOne]: TypeIconLocationOne,\n [Types.media]: TypeIconMedia,\n [Types.motion]: TypeIconMotion,\n [Types.ct]: TypeIconCT,\n [Types.percentage]: TypeIconSlider,\n [Types.pressure]: TypeIconPressure,\n [Types.pump]: TypeIconPump,\n [Types.rgb]: TypeIconRGB,\n [Types.rgbSingle]: TypeIconRGB,\n [Types.rgbwSingle]: TypeIconRGBWSingle,\n [Types.hue]: TypeIconHUE,\n [Types.cie]: TypeIconRGB,\n [Types.slider]: TypeIconSlider,\n [Types.socket]: TypeIconSocket,\n [Types.temperature]: TypeIconTemperature,\n [Types.thermostat]: TypeIconThermostat,\n [Types.tv]: TypeIconTv,\n // [Types.valve]: TypeIconValve,\n [Types.vacuumCleaner]: TypeIconVacuumCleaner,\n [Types.volume]: TypeIconVolume,\n [Types.volumeGroup]: TypeIconVolumeGroup,\n [Types.window]: TypeIconWindow,\n [Types.windowTilt]: TypeIconWindowTilt,\n [Types.weatherCurrent]: TypeIconWeather,\n [Types.weatherForecast]: TypeIconWeather,\n [Types.warning]: TypeIconWarning,\n\n [Types.unknown]: TypeIconUnknown,\n [Types.instance]: TypeIconInstance,\n\n // Special matter types\n invalid: TypeIconWarning,\n hub3: TypeIconHub3,\n node: TypeIconNode,\n hub5: TypeIconHub5,\n controller: TypeIconController,\n};\n\n/** Icons for state roles that may be given as `src` instead of a device type */\nconst ROLE_ICONS: Record<string, React.FC<IconPropsSVG>> = {\n 'sensor.alarm.fire': TypeIconFireAlarm,\n 'sensor.alarm.flood': TypeIconFloodAlarm,\n};\n\nconst ALL_ICONS: Record<string, React.FC<IconPropsSVG>> = { ...TYPE_ICONS, ...ROLE_ICONS };\n\nfunction isKnownIcon(src: unknown): src is TypesExtended {\n return typeof src === 'string' && Object.prototype.hasOwnProperty.call(ALL_ICONS, src);\n}\n\nconst defaultStyle: React.CSSProperties = {\n width: 32,\n height: 32,\n};\n\nexport interface IconProps {\n /** URL, UTF-8 character, or svg code (data:image/svg...) */\n src?: string | React.JSX.Element | null | undefined;\n /** Class name */\n className?: string;\n /** Style for image */\n style?: React.CSSProperties;\n /** Styles for mui */\n sx?: Record<string, any>;\n /** Tooltip */\n title?: string | true;\n /** Styles for utf-8 characters */\n styleUTF8?: React.CSSProperties;\n /** On error handler */\n onError?: React.ReactEventHandler<HTMLImageElement>;\n /** Reference to image */\n ref?: React.RefObject<HTMLImageElement>;\n /** Alternative text for image */\n alt?: string;\n /** On click handler */\n onClick?: React.MouseEventHandler<any>;\n}\n\nexport type TypeIconProps = IconProps & { type?: TypesExtended };\n\nexport function DeviceTypeIcon(props: TypeIconProps): React.JSX.Element | null {\n const [loaded, setLoaded] = React.useState(false);\n\n useEffect(() => {\n if (props.title && !loaded) {\n extendDeviceTypeTranslation();\n setLoaded(true);\n }\n }, [props.title, loaded]);\n\n if (!loaded && props.title) {\n return (\n <Box\n style={{ ...defaultStyle, ...(props.style || undefined) }}\n className={props.className}\n sx={props.sx}\n />\n );\n }\n // src could contain a device type or a state role too, so detect if it is a type\n const type: TypesExtended | undefined = props.type || (isKnownIcon(props.src) ? props.src : undefined);\n\n if (!type && props.src) {\n return (\n <Icon\n style={defaultStyle}\n {...props}\n title={props.title === true ? undefined : props.title}\n src={props.src}\n />\n );\n }\n\n const TypeIcon = type && ALL_ICONS[type];\n if (!TypeIcon) {\n // Show the first letter of a type\n return type ? (\n <span style={{ ...defaultStyle, ...(props.style || undefined) }}>{type[0].toUpperCase()}</span>\n ) : null;\n }\n\n const icon = (\n <TypeIcon\n style={{ ...defaultStyle, ...(props.style || undefined) }}\n onClick={props.onClick}\n className={props.className}\n sx={props.sx}\n />\n );\n\n if (props.title) {\n return (\n <Tooltip\n slotProps={{ popper: { sx: { pointerEvents: 'none' } } }}\n title={props.title === true ? I18n.t(`type-${type}`) : props.title}\n >\n <div style={{ display: 'flex' }}>{icon}</div>\n </Tooltip>\n );\n }\n\n return icon;\n}\n"]}
@@ -44,6 +44,7 @@
44
44
  "type-socket": "Steckdose",
45
45
  "type-temperature": "Temperatur",
46
46
  "type-thermostat": "Thermostat",
47
+ "type-tv": "Fernseher",
47
48
  "type-unknown": "Unbekannt",
48
49
  "type-vacuumCleaner": "Staubsauger",
49
50
  "type-volume": "Lautstärke",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "Socket",
45
45
  "type-temperature": "Temperature",
46
46
  "type-thermostat": "Thermostat",
47
+ "type-tv": "TV",
47
48
  "type-unknown": "Unknown",
48
49
  "type-vacuumCleaner": "Vacuum cleaner",
49
50
  "type-volume": "Volume",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "enchufe",
45
45
  "type-temperature": "temperatura",
46
46
  "type-thermostat": "termostato",
47
+ "type-tv": "televisor",
47
48
  "type-unknown": "Desconocido",
48
49
  "type-vacuumCleaner": "Aspiradora",
49
50
  "type-volume": "volumen",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "douille",
45
45
  "type-temperature": "température",
46
46
  "type-thermostat": "thermostat",
47
+ "type-tv": "téléviseur",
47
48
  "type-unknown": "Inconnu",
48
49
  "type-vacuumCleaner": "Aspirateur",
49
50
  "type-volume": "volume",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "PRESA",
45
45
  "type-temperature": "temperatura",
46
46
  "type-thermostat": "termostato",
47
+ "type-tv": "televisore",
47
48
  "type-unknown": "Sconosciuto",
48
49
  "type-vacuumCleaner": "Aspirapolvere",
49
50
  "type-volume": "volume",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "stopcontact",
45
45
  "type-temperature": "temperatuur",
46
46
  "type-thermostat": "thermostaat",
47
+ "type-tv": "televisie",
47
48
  "type-unknown": "Onbekend",
48
49
  "type-vacuumCleaner": "Stofzuiger",
49
50
  "type-volume": "volume",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "gniazdo",
45
45
  "type-temperature": "temperatura",
46
46
  "type-thermostat": "termostat",
47
+ "type-tv": "telewizor",
47
48
  "type-unknown": "Nieznany",
48
49
  "type-vacuumCleaner": "Odkurzacz",
49
50
  "type-volume": "tom",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "soquete",
45
45
  "type-temperature": "temperatura",
46
46
  "type-thermostat": "termostato",
47
+ "type-tv": "TV",
47
48
  "type-unknown": "Desconhecido",
48
49
  "type-vacuumCleaner": "Aspirador de pó",
49
50
  "type-volume": "volume",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "Розетка",
45
45
  "type-temperature": "Температура",
46
46
  "type-thermostat": "Термостат",
47
+ "type-tv": "Телевизор",
47
48
  "type-unknown": "Неизвестно",
48
49
  "type-vacuumCleaner": "Пылесос",
49
50
  "type-volume": "Громкость",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "гніздо",
45
45
  "type-temperature": "температура",
46
46
  "type-thermostat": "термостат",
47
+ "type-tv": "телевізор",
47
48
  "type-unknown": "Невідомо",
48
49
  "type-vacuumCleaner": "Пилосос",
49
50
  "type-volume": "обсяг",
@@ -44,6 +44,7 @@
44
44
  "type-socket": "插座",
45
45
  "type-temperature": "温度",
46
46
  "type-thermostat": "恒温器",
47
+ "type-tv": "电视",
47
48
  "type-unknown": "未知",
48
49
  "type-vacuumCleaner": "吸尘器",
49
50
  "type-volume": "体积",
@@ -818,6 +818,10 @@ export function buildTree(objects, options) {
818
818
  aliasesMap: {},
819
819
  };
820
820
  let cRoot = root;
821
+ // `info.ids` is not sorted for a binary search: a generated level follows the ID that created it, and the
822
+ // sorting above ('.' as '!!!') is not the plain string order. A missed level was created a second time:
823
+ // two nodes with the same ID (https://github.com/ioBroker/ioBroker.admin/issues/3693)
824
+ const knownIds = new Set();
821
825
  for (let i = 0; i < ids.length; i++) {
822
826
  const id = ids[i];
823
827
  if (!id) {
@@ -888,6 +892,7 @@ export function buildTree(objects, options) {
888
892
  }
889
893
  }
890
894
  info.ids.push(id);
895
+ knownIds.add(id);
891
896
  let repeat;
892
897
  // if next level
893
898
  do {
@@ -901,7 +906,7 @@ export function buildTree(objects, options) {
901
906
  for (let k = currentPathLen; k < parts.length - 1; k++) {
902
907
  curPath += (curPath ? '.' : '') + parts[k];
903
908
  // level does not exist
904
- if (!binarySearch(info.ids, curPath)) {
909
+ if (!knownIds.has(curPath)) {
905
910
  const _cRoot = {
906
911
  data: {
907
912
  name: parts[k],
@@ -916,7 +921,8 @@ export function buildTree(objects, options) {
916
921
  cRoot.children ||= [];
917
922
  cRoot.children.push(_cRoot);
918
923
  cRoot = _cRoot;
919
- info.ids.push(curPath); // IDs will be added by alphabet
924
+ info.ids.push(curPath);
925
+ knownIds.add(curPath);
920
926
  }
921
927
  else if (cRoot.children) {
922
928
  cRoot = cRoot.children.find(item => item.data.name === parts[k]);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser/utils.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport { Box, FormControl, IconButton, Input, MenuItem, Select } from '@mui/material';\nimport SVG from 'react-inlinesvg';\n\nimport {\n Description as IconMeta,\n PersonOutlined as IconUser,\n Router as IconHost,\n SupervisedUserCircle as IconGroup,\n SettingsApplications as IconSystem,\n DataObject as IconData,\n Info as IconInfo,\n Link as IconLink,\n Close as IconClose,\n Wifi as IconConnection,\n} from '@mui/icons-material';\nimport type { IobTheme, ThemeType, Width } from '../../types';\nimport { Utils } from '../Utils';\nimport type {\n FormatValueOptions,\n InputSelectItem,\n TreeItem,\n ObjectBrowserCustomFilter,\n TreeInfo,\n GetValueStyleOptions,\n AdapterColumn,\n ObjectBrowserFilter,\n TreeItemData,\n} from './types';\n\n/**\n * Calls `onConfirm` if CTRL+ENTER (CMD+ENTER on mac) was pressed.\n *\n * Every dialog that writes something confirms with CTRL+ENTER, so the handler belongs to the dialog\n * itself and not to one of its inputs: the key then works wherever the focus is. An input that\n * handles the combination on its own stops the event, so nothing is written twice.\n *\n * @param e the keyboard event of the dialog\n * @param onConfirm the action of the confirming button of the dialog\n */\nexport function onCtrlEnter(e: React.KeyboardEvent, onConfirm: () => void): void {\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n onConfirm();\n }\n}\n\nexport const ICON_SIZE = 24;\nexport const ROW_HEIGHT = 32;\n\nexport const COLOR_NAME_USERDATA = (themeType: ThemeType): string => (themeType === 'dark' ? '#62ff25' : '#37c400');\nexport const COLOR_NAME_ALIAS = (themeType: ThemeType): string => (themeType === 'dark' ? '#ee56ff' : '#a204b4');\nexport const COLOR_NAME_JAVASCRIPT = (themeType: ThemeType): string => (themeType === 'dark' ? '#fff46e' : '#b89101');\nexport const COLOR_NAME_SYSTEM = (themeType: ThemeType): string => (themeType === 'dark' ? '#ff6d69' : '#ff6d69');\nexport const COLOR_NAME_SYSTEM_ADAPTER = (themeType: ThemeType): string =>\n themeType === 'dark' ? '#5773ff' : '#5773ff';\n\n/** Namespaces which are allowed to be edited by non-expert users */\nconst NON_EXPERT_NAMESPACES = ['0_userdata.0.', 'alias.0.'];\n\nexport const styles: Record<string, any> = {\n headerCellInput: {\n width: 'calc(100% - 5px)',\n height: ROW_HEIGHT,\n pt: 0,\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n },\n headerCellSelectItem: {\n '& .itemIcon': {\n width: ICON_SIZE,\n height: ICON_SIZE,\n mr: '5px',\n display: 'inline-block',\n },\n },\n selectNone: {\n opacity: 0.5,\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 5,\n backgroundColor: 'background.default',\n },\n cellIdTooltipLink: {\n color: '#7ec2fd',\n '&:hover': {\n color: '#7ec2fd',\n },\n '&:visited': {\n color: '#7ec2fd',\n },\n },\n cellIdTooltip: {\n fontSize: 14,\n },\n};\n\n/**\n * Name of the CSS variable that holds the width of a column.\n * All widths of the table are defined once on the scroll container, so the header and all rows\n * are always aligned and the resizer can change a width without re-rendering the rows.\n */\nexport function colVar(name: string): string {\n // custom columns are named like `_adapter_path.to.value` and dots are not allowed in CSS variables\n return `--ob-w-${name.replace(/[^\\w-]/g, '_')}`;\n}\n\n/** CSS value that reads the width of a column from the CSS variable of the table */\nexport function colWidth(name: string): string {\n return `var(${colVar(name)})`;\n}\n\n/**\n * Width class for the given width of the container. The same breakpoints as in MUI are used, but\n * they are applied to the container of the object browser and not to the window.\n */\nexport function widthFromContainer(containerWidth: number, theme: IobTheme): Width {\n const values = theme.breakpoints.values;\n if (containerWidth >= values.xl) {\n return 'xl';\n }\n if (containerWidth >= values.lg) {\n return 'lg';\n }\n if (containerWidth >= values.md) {\n return 'md';\n }\n if (containerWidth >= values.sm) {\n return 'sm';\n }\n return 'xs';\n}\n\n/** Name of the CSS variable that says if a column takes the remaining place */\nexport function growVar(name: string): string {\n return `--ob-grow-${name.replace(/[^\\w-]/g, '_')}`;\n}\n\n/**\n * CSS value for `flexGrow` of a column. Exactly one column (`id` or `name`) takes the remaining\n * width of the table, all others keep their width.\n */\nexport function colGrow(name: string): string {\n return `var(${growVar(name)}, 0)`;\n}\n\nexport function ButtonIcon(props?: { style?: React.CSSProperties }): JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 436 436\"\n style={props?.style}\n width=\"24\"\n height=\"24\"\n className=\"admin-button\"\n >\n <g fill=\"currentColor\">\n <path d=\"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z\" />\n <path d=\"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z\" />\n </g>\n </svg>\n );\n}\n\n/** Converts ioB pattern into regex */\nexport function pattern2RegEx(pattern: string): string {\n pattern = (pattern || '').toString();\n\n const startsWithWildcard = pattern[0] === '*';\n const endsWithWildcard = pattern[pattern.length - 1] === '*';\n\n pattern = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n\n return (startsWithWildcard ? '' : '^') + pattern + (endsWithWildcard ? '' : '$');\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nexport function walkThroughArray(object: any[], iteratee: (result: any[], value: any, key: number) => void): any[] {\n const copiedObject: any[] = [];\n for (let index = 0; index < object.length; index++) {\n iteratee(copiedObject, object[index], index);\n }\n return copiedObject;\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nexport function walkThroughObject(\n object: Record<string, any>,\n iteratee: (result: Record<string, any>, value: any, key: string) => void,\n): Record<string, any> {\n const copiedObject: Record<string, any> = {};\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n iteratee(copiedObject, object[key], key);\n }\n }\n return copiedObject;\n}\n\n/**\n * Function to reduce an object primarily by a given list of keys\n */\nexport function filterObject(\n /** The objects which should be filtered */\n obj: Record<string, any> | any[],\n /** The keys which should be excluded */\n filterKeys: string[],\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean,\n): Record<string, any> | any[] {\n if (Array.isArray(obj)) {\n return walkThroughArray(obj, (result: any[], value: any, key: number) => {\n if (value === undefined || value === null) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n }\n\n return walkThroughObject(obj, (result: Record<string, any>, value: any, key: string) => {\n if (value === undefined || value === null) {\n return;\n }\n if (filterKeys.includes(key)) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n}\n\n// It is an export function and used somewhere else\nexport function filterRoles(\n roleArray: { role: string; type: ioBroker.CommonType }[],\n type: ioBroker.CommonType,\n defaultRoles?: { role: string; type: ioBroker.CommonType }[],\n): string[] {\n const bigRoleArray: string[] = [];\n roleArray.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n defaultRoles?.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n bigRoleArray.sort();\n return bigRoleArray;\n}\n\n/**\n * Function to generate a json-file for an object and trigger download it\n */\nexport function generateFile(\n /** The desired filename */\n fileName: string,\n /** The objects which should be downloaded */\n obj: Record<string, ioBroker.Object>,\n /** Options to filter/reduce the output */\n options: {\n /** Whether the output should be beautified */\n beautify?: boolean;\n /** Whether \"system.repositories\" should be excluded */\n excludeSystemRepositories?: boolean;\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean;\n },\n): void {\n const el = document.createElement('a');\n const filterKeys = [];\n if (options.excludeSystemRepositories) {\n filterKeys.push('system.repositories');\n }\n const filteredObject =\n filterKeys.length > 0 || options.excludeTranslations\n ? filterObject(obj, filterKeys, options.excludeTranslations)\n : obj;\n const data = options.beautify ? JSON.stringify(filteredObject, null, 2) : JSON.stringify(filteredObject);\n el.setAttribute('href', `data:application/json;charset=utf-8,${encodeURIComponent(data)}`);\n el.setAttribute('download', fileName);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n}\n\ninterface CustomFilterSelectProps {\n name: 'room' | 'func' | 'type' | 'role' | 'custom';\n texts: Record<string, string>;\n initialValue: string[] | undefined;\n onChange: (name: 'room' | 'func' | 'type' | 'role' | 'custom', value: string[] | undefined) => void;\n values: (string | InputSelectItem)[];\n}\n\ninterface CustomFilterSelectState {\n value: string[];\n}\n\nexport class CustomFilterSelect extends Component<CustomFilterSelectProps, CustomFilterSelectState> {\n private readonly hasIcons: boolean;\n private timer: ReturnType<typeof setTimeout> | null = null;\n constructor(props: CustomFilterSelectProps) {\n super(props);\n this.state = {\n value: props.initialValue || [],\n };\n this.hasIcons = !!props.values?.find(item => (item as InputSelectItem).icon);\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <div style={{ position: 'relative' }}>\n <Select\n variant=\"standard\"\n key={this.props.name}\n sx={styles.headerCellInput}\n className=\"no-underline\"\n multiple\n renderValue={value => {\n if (!value?.length) {\n return this.props.name === 'custom'\n ? this.props.texts.showAll\n : this.props.texts[`filter_${this.props.name}`];\n }\n return value.map(val => {\n const item = this.props.values.find(i =>\n typeof i === 'object' ? i.value === val : i === val,\n );\n let id: string;\n let _name: string;\n let icon: null | JSX.Element | undefined;\n if (typeof item === 'object') {\n id = item.value;\n _name = item.name;\n icon = item.icon;\n } else {\n id = item!;\n _name = item!;\n }\n return (\n <Box\n component=\"span\"\n sx={styles.headerCellSelectItem}\n key={id}\n >\n {icon || (this.hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </Box>\n );\n });\n }}\n value={this.state.value}\n onChange={event => {\n let selectedValues = event.target.value as string[];\n // '_' may be selected only alone\n if (this.state.value[0] === '_' && selectedValues.includes('_') && selectedValues.length > 1) {\n const pos = selectedValues.indexOf('_');\n if (pos !== -1) {\n selectedValues.splice(pos, 1);\n }\n } else if (this.state.value[0] !== '_' && selectedValues.includes('_')) {\n selectedValues = ['_'];\n }\n\n // '_' may be selected only alone\n if (selectedValues.includes('')) {\n selectedValues = [];\n }\n\n this.setState({ value: selectedValues }, () => {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.timer = null;\n this.props.onChange(this.props.name, selectedValues);\n }, 400);\n });\n }}\n onClose={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.props.onChange(this.props.name, this.state.value);\n }\n }}\n inputProps={{ name: this.props.name, id: this.props.name }}\n displayEmpty\n >\n <MenuItem\n key=\"empty\"\n value=\"\"\n >\n <span style={styles.selectNone}>\n {this.props.name === 'custom'\n ? this.props.texts.showAll\n : this.props.texts[`filter_${this.props.name}`]}\n </span>\n </MenuItem>\n {this.props.values?.map(item => {\n let id: string;\n let _name: string;\n let icon: null | JSX.Element | undefined;\n if (typeof item === 'object') {\n id = item.value;\n _name = item.name;\n icon = item.icon;\n } else {\n id = item;\n _name = item;\n }\n return (\n <MenuItem\n sx={styles.headerCellSelectItem}\n key={id}\n value={id}\n >\n {icon || (this.hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </MenuItem>\n );\n })}\n </Select>\n {this.state.value.length ? (\n <Box\n component=\"div\"\n sx={styles.selectClearButton}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.setState({ value: [] }, () => this.props.onChange(this.props.name, undefined));\n }}\n >\n <IconClose />\n </IconButton>\n </Box>\n ) : null}\n </div>\n );\n }\n}\n\ninterface CustomFilterInputProps {\n name: 'name' | 'id';\n texts: Record<string, string>;\n initialValue: string | undefined;\n onChange: (name: 'name' | 'id', value: string | undefined) => void;\n t: (text: string) => string;\n styles?: React.CSSProperties;\n}\n\ninterface CustomFilterInputState {\n value: string;\n}\n\nexport class CustomFilterInput extends Component<CustomFilterInputProps, CustomFilterInputState> {\n private timer: ReturnType<typeof setTimeout> | null = null;\n constructor(props: CustomFilterInputProps) {\n super(props);\n this.state = {\n value: props.initialValue || '',\n };\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <FormControl\n sx={this.props.styles}\n key={this.props.name}\n title={this.props.t('ra_You can use * as wildcard')}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n id={this.props.name}\n placeholder={this.props.texts[`filter_${this.props.name}`]}\n value={this.state.value}\n onChange={event => {\n const selectedValues = event.target.value;\n this.setState({ value: selectedValues }, () => {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.timer = null;\n this.props.onChange(this.props.name, selectedValues);\n }, 400);\n });\n }}\n onBlur={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.props.onChange(this.props.name, this.state.value);\n }\n }}\n autoComplete=\"off\"\n />\n {this.state.value ? (\n <div\n style={{\n position: 'absolute',\n right: 0,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.setState({ value: '' }, () => this.props.onChange(this.props.name, undefined));\n }}\n >\n <IconClose />\n </IconButton>\n </div>\n ) : null}\n </FormControl>\n );\n }\n}\n\n// d=data, t=target, s=start, e=end, m=middle\nexport function binarySearch(list: string[], find: string, _start?: number, _end?: number): boolean {\n _start ||= 0;\n if (_end === undefined) {\n _end = list.length - 1;\n if (!_end) {\n return list[0] === find;\n }\n }\n const middle = Math.floor((_start + _end) / 2);\n if (find === list[middle]) {\n return true;\n }\n if (_end - 1 === _start) {\n return list[_start] === find || list[_end] === find;\n }\n if (find > list[middle]) {\n return binarySearch(list, find, middle, _end);\n }\n if (find < list[middle]) {\n return binarySearch(list, find, _start, middle);\n }\n return false;\n}\n\nexport function getName(name: ioBroker.StringOrTranslated, lang: ioBroker.Languages): string {\n if (typeof name === 'object') {\n if (!name) {\n return '';\n }\n return (name[lang] || name.en || '').toString();\n }\n\n return name ? name.toString() : '';\n}\n\nexport function getSelectIdIconFromObjects(\n objects: Record<string, ioBroker.Object>,\n id: string,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n // `admin` has prefix '.' and `web` has '../..'\n imagePrefix ||= '.'; // http://localhost:8081';\n let src: string | JSX.Element = '';\n const _id_ = `system.adapter.${id}`;\n const aIcon = id && objects[_id_]?.common?.icon;\n if (aIcon) {\n // if not BASE64\n if (!aIcon.startsWith('data:image/')) {\n if (aIcon.includes('.')) {\n const name = objects[_id_].common.name;\n if (typeof name === 'object') {\n src = `${imagePrefix}/adapter/${name[lang] || name.en}/${aIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${name}/${aIcon}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null; // '<i class=\"material-icons iob-list-icon\">' + objects[_id_].common.icon + '</i>';\n }\n } else if (aIcon.startsWith('data:image/svg')) {\n src = (\n <SVG\n className=\"iconOwn\"\n src={aIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = aIcon;\n }\n } else {\n const common = objects[id]?.common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (objects[id].type === 'instance' || objects[id].type === 'adapter') {\n if (typeof common.name === 'object') {\n src = `${imagePrefix}/adapter/${common.name[lang] || common.name.en}/${cIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n }\n } else if (id && id.startsWith('system.adapter.')) {\n instance = id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n } else {\n instance = id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null;\n }\n } else if (cIcon.startsWith('data:image/svg')) {\n // if base 64 image\n src = (\n <SVG\n className=\"iconOwn\"\n src={cIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = cIcon;\n }\n }\n }\n }\n\n return src || null;\n}\n\nexport function applyFilter(\n item: TreeItem,\n filters: ObjectBrowserFilter,\n lang: ioBroker.Languages,\n objects: Record<string, ioBroker.Object>,\n context?: {\n id?: string;\n idRx?: RegExp;\n name?: string;\n nameRx?: RegExp;\n type?: string[];\n custom?: string[];\n role?: string[];\n room?: string[];\n func?: string[];\n },\n counter?: { count: number },\n customFilter?: ObjectBrowserCustomFilter,\n selectedTypes?: string[],\n _depth?: number,\n): boolean {\n _depth ||= 0;\n let filteredOut = false;\n if (!context) {\n context = {};\n if (filters.id) {\n const id = filters.id.toLowerCase();\n if (id.includes('*')) {\n context.idRx = new RegExp(pattern2RegEx(filters.id), 'i');\n } else {\n context.id = id;\n }\n }\n if (filters.name) {\n const name = filters.name.toLowerCase();\n if (name.includes('*')) {\n context.nameRx = new RegExp(pattern2RegEx(name), 'i');\n } else {\n context.name = name;\n }\n }\n if (filters.type?.length) {\n context.type = filters.type.map(f => f.toLowerCase());\n }\n if (filters.custom?.length) {\n context.custom = filters.custom.map(c => c.toLowerCase());\n }\n if (filters.role?.length) {\n context.role = filters.role.map(r => r.toLowerCase());\n }\n if (filters.room?.length) {\n context.room = [];\n filters.room.forEach(room => {\n context!.room = context!.room!.concat((objects[room] as ioBroker.EnumObject)?.common?.members || []);\n });\n }\n if (filters.func?.length) {\n context.func = [];\n filters.func.forEach(func => {\n context!.func = context!.func!.concat((objects[func] as ioBroker.EnumObject)?.common?.members || []);\n });\n }\n }\n\n const data = item.data;\n\n if (data?.id) {\n const common: ioBroker.StateCommon = data.obj?.common as ioBroker.StateCommon;\n\n if (customFilter) {\n if (customFilter.type) {\n if (typeof customFilter.type === 'string') {\n if (!data.obj || customFilter.type !== data.obj.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.type)) {\n if (!data.obj || !customFilter.type.includes(data.obj.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.type) {\n if (!common?.type) {\n filteredOut = true;\n } else if (typeof customFilter.common.type === 'string') {\n if (customFilter.common.type !== common.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.type)) {\n if (!customFilter.common.type.includes(common.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.role) {\n if (!common?.role) {\n filteredOut = true;\n } else if (typeof customFilter.common.role === 'string') {\n if (common.role.startsWith(customFilter.common.role)) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.role)) {\n if (!customFilter.common.role.find(role => common.role.startsWith(role))) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && customFilter.common?.custom === '_' && common?.custom) {\n filteredOut = true;\n } else if (!filteredOut && customFilter.common?.custom && customFilter.common?.custom !== '_') {\n const filterOfCustom = customFilter.common.custom as string | string[] | boolean;\n if (!common?.custom) {\n filteredOut = true;\n } else if (filterOfCustom === '_dataSources') {\n // TODO: make it configurable\n if (\n !Object.keys(common.custom).find(\n id => id.startsWith('history.') || id.startsWith('sql.') || id.startsWith('influxdb.'),\n )\n ) {\n filteredOut = true;\n }\n } else if (Array.isArray(filterOfCustom)) {\n // here are ['influxdb.', 'telegram.']\n const customs = Object.keys(common.custom); // here are ['influxdb.0', 'telegram.2']\n if (filterOfCustom.find(cst => customs.find(id => id.startsWith(cst)))) {\n filteredOut = true;\n }\n } else if (\n filterOfCustom !== true &&\n !Object.keys(common.custom).find(id => id.startsWith(filterOfCustom as string))\n ) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && !filters.expertMode) {\n filteredOut =\n data.id === 'system' ||\n data.id === 'enum' ||\n // (data.obj && data.obj.type === 'meta') ||\n data.id.startsWith('system.') ||\n data.id.startsWith('enum.') ||\n data.id.startsWith('_design/') ||\n data.id.endsWith('.admin') ||\n !!common?.expert;\n }\n if (!filteredOut && context.id) {\n if (data.fID === undefined) {\n data.fID = data.id.toLowerCase();\n }\n filteredOut = !data.fID.includes(context.id);\n }\n if (!filteredOut && context.idRx) {\n filteredOut = !context.idRx.test(data.id);\n }\n if (!filteredOut && context.name) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !data.fName.includes(context.name);\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.nameRx) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !context.nameRx.test(data.fName);\n }\n }\n\n if (!filteredOut && filters.role?.length && common && context.role?.length) {\n filteredOut = !(typeof common.role === 'string' && context.role.find(role => common.role.startsWith(role)));\n }\n if (!filteredOut && context.room?.length) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.func?.length) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.type?.length) {\n filteredOut = !(data.obj?.type && context.type.includes(data.obj.type));\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj?.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom?.length) {\n if (common) {\n if (context.custom[0] === '_') {\n filteredOut = !!common.custom;\n } else if (common.custom) {\n filteredOut = !context.custom.find(custom => common.custom![custom]);\n } else {\n filteredOut = true;\n }\n } else {\n filteredOut = context.custom[0] !== '_';\n }\n }\n }\n\n data.visible = !filteredOut;\n\n data.hasVisibleChildren = false;\n if (item.children && _depth < 20) {\n item.children.forEach(_item => {\n const visible = applyFilter(\n _item,\n filters,\n lang,\n objects,\n context,\n counter,\n customFilter,\n selectedTypes,\n _depth + 1,\n );\n if (visible) {\n data.hasVisibleChildren = true;\n }\n });\n }\n\n // const visible = data.visible || data.hasVisibleChildren;\n data.sumVisibility = data.visible || data.hasVisibleChildren; // || data.hasVisibleParent;\n if (counter && data.sumVisibility) {\n counter.count++;\n }\n\n // show all children of visible object with opacity 0.5\n if (data.id && data.sumVisibility && item.children) {\n item.children.forEach(_item => (_item.data.hasVisibleParent = true));\n }\n\n return data.visible || data.hasVisibleChildren;\n}\n\nexport function getVisibleItems(\n item: TreeItem,\n type: ioBroker.ObjectType,\n objects: Record<string, ioBroker.Object>,\n _result?: string[],\n): string[] {\n _result ||= [];\n const data = item.data;\n if (data.sumVisibility) {\n if (data.id && objects[data.id] && (!type || objects[data.id].type === type)) {\n _result.push(data.id);\n }\n item.children?.forEach(_item => getVisibleItems(_item, type, objects, _result));\n }\n\n return _result;\n}\n\nfunction getSystemIcon(\n objects: Record<string, ioBroker.Object>,\n id: string,\n level: number,\n themeType: ThemeType,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n let icon;\n\n // system or design has special icons\n if (id === 'alias' || id === 'alias.0') {\n icon = (\n <IconLink\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_ALIAS(themeType) }}\n />\n );\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = (\n <IconData\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_USERDATA(themeType) }}\n />\n );\n } else if (id.startsWith('_design/') || id === 'system') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM(themeType) }}\n />\n );\n } else if (id === 'system.adapter') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM_ADAPTER(themeType) }}\n />\n );\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (objects[id] && objects[id].type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n } else if (level < 2) {\n // detect \"cloud.0\"\n if (objects[`system.adapter.${id}`]) {\n icon = getSelectIdIconFromObjects(objects, `system.adapter.${id}`, lang, imagePrefix);\n }\n }\n\n return icon || null;\n}\n\nexport function getObjectTooltip(data: TreeItemData, lang: ioBroker.Languages): string | null {\n if (data?.obj?.common?.desc) {\n return getName(data.obj.common.desc, lang) || null;\n }\n\n return null;\n}\n\nexport function getIdFieldTooltip(data: TreeItemData, lang: ioBroker.Languages): JSX.Element {\n const tooltip = getObjectTooltip(data, lang);\n if (tooltip?.startsWith('http')) {\n return (\n <Box\n component=\"a\"\n sx={styles.cellIdTooltipLink}\n href={tooltip}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {tooltip}\n </Box>\n );\n }\n return <span style={styles.cellIdTooltip}>{tooltip || data.id || ''}</span>;\n}\n\nexport function buildTree(\n objects: Record<string, ioBroker.Object>,\n options: {\n imagePrefix?: string;\n root?: string;\n lang: ioBroker.Languages;\n themeType: ThemeType;\n },\n): { root: TreeItem; info: TreeInfo } {\n const imagePrefix = options.imagePrefix || '.';\n\n // sort by a precomputed key ('.' sorts before all other chars) instead of running two replaces per comparison\n let ids = Object.keys(objects)\n .map(id => [id.replace(/\\./g, '!!!'), id] as [string, string])\n .sort((a, b) => (a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0))\n .map(entry => entry[1]);\n\n if (options.root) {\n ids = ids.filter(id => id === options.root || id.startsWith(`${options.root}.`));\n }\n\n // find empty nodes and create names for it\n let currentPathArr: string[] = [];\n let currentPath = '';\n let currentPathLen = 0;\n const root: TreeItem = {\n data: {\n name: '',\n id: '',\n },\n children: [],\n };\n\n const info: TreeInfo = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects,\n customs: ['_'],\n enums: [],\n hasSomeCustoms: false,\n aliasesMap: {},\n };\n\n let cRoot: TreeItem = root;\n\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (!id) {\n continue;\n }\n const obj = objects[id];\n const parts = id.split('.');\n\n if (obj.type && !info.types.includes(obj.type)) {\n info.types.push(obj.type);\n }\n\n if (obj) {\n const common = obj.common;\n const role = common?.role;\n if (role && !info.roles.find(it => it.role === role)) {\n if (typeof role !== 'string') {\n console.warn(`Invalid role type \"${typeof role}\" in \"${obj._id}\"`);\n } else {\n info.roles.push({ role, type: common.type });\n }\n } else if (id.startsWith('enum.rooms.')) {\n info.roomEnums.push(id);\n info.enums.push(id);\n } else if (id.startsWith('enum.functions.')) {\n info.funcEnums.push(id);\n info.enums.push(id);\n } else if (obj.type === 'enum') {\n info.enums.push(id);\n } else if (obj.type === 'instance' && common && (common.supportCustoms || common.adminUI?.custom)) {\n info.hasSomeCustoms = true;\n info.customs.push(id.substring('system.adapter.'.length));\n }\n\n // Build a map of aliases\n if (id.startsWith('alias.') && obj.common.alias?.id) {\n if (typeof obj.common.alias.id === 'string') {\n const usedId = obj.common.alias.id;\n if (!info.aliasesMap[usedId]) {\n info.aliasesMap[usedId] = [id];\n } else if (!info.aliasesMap[usedId].includes(id)) {\n info.aliasesMap[usedId].push(id);\n }\n } else {\n const readId = obj.common.alias.id.read;\n if (readId) {\n if (!info.aliasesMap[readId]) {\n info.aliasesMap[readId] = [id];\n } else if (!info.aliasesMap[readId].includes(id)) {\n info.aliasesMap[readId].push(id);\n }\n }\n const writeId = obj.common.alias.id.write;\n if (writeId) {\n if (!info.aliasesMap[writeId]) {\n info.aliasesMap[writeId] = [id];\n } else if (!info.aliasesMap[writeId].includes(id)) {\n info.aliasesMap[writeId].push(id);\n }\n }\n }\n }\n }\n\n info.ids.push(id);\n\n let repeat;\n\n // if next level\n do {\n repeat = false;\n\n // If the current level is still OK, and we can add ID to children\n if (!currentPath || id.startsWith(`${currentPath}.`)) {\n // if more than one level added\n if (parts.length - currentPathLen > 1) {\n let curPath = currentPath;\n // generate missing levels\n for (let k = currentPathLen; k < parts.length - 1; k++) {\n curPath += (curPath ? '.' : '') + parts[k];\n // level does not exist\n if (!binarySearch(info.ids, curPath)) {\n const _cRoot: TreeItem = {\n data: {\n name: parts[k],\n parent: cRoot,\n id: curPath,\n obj: objects[curPath],\n level: k,\n icon: getSystemIcon(\n objects,\n curPath,\n k,\n options.themeType,\n options.lang,\n imagePrefix,\n ),\n generated: true,\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n info.ids.push(curPath); // IDs will be added by alphabet\n } else if (cRoot.children) {\n cRoot = cRoot.children.find(item => item.data.name === parts[k])!;\n if (!cRoot) {\n throw new Error('Cannot find root in children!');\n }\n }\n }\n }\n\n const _cRoot: TreeItem = {\n data: {\n name: parts[parts.length - 1],\n title: getName(obj?.common?.name, options.lang),\n obj,\n parent: cRoot,\n icon:\n getSelectIdIconFromObjects(objects, id, options.lang, imagePrefix) ||\n getSystemIcon(objects, id, 0, options.themeType, options.lang, imagePrefix),\n id,\n hasCustoms: !!(obj.common?.custom && Object.keys(obj.common.custom).length),\n level: parts.length - 1,\n generated: false,\n button:\n obj.type === 'state' &&\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('button') &&\n obj.common?.write !== false,\n switch:\n obj.type === 'state' &&\n obj.common?.type === 'boolean' &&\n obj.common?.write !== false &&\n obj.common?.read !== false,\n url:\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('url'),\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n\n currentPathLen = parts.length;\n currentPathArr = parts;\n currentPath = id;\n } else {\n let u = 0;\n\n while (currentPathArr[u] === parts[u]) {\n u++;\n }\n\n if (u > 0) {\n let move = currentPathArr.length;\n currentPathArr = currentPathArr.splice(0, u);\n currentPathLen = u;\n currentPath = currentPathArr.join('.');\n while (move > u) {\n if (cRoot.data.parent) {\n cRoot = cRoot.data.parent;\n } else {\n console.error(`Parent is null for ${id} ${currentPath} ${currentPathArr.join('.')}`);\n }\n move--;\n }\n } else {\n cRoot = root;\n currentPathArr = [];\n currentPath = '';\n currentPathLen = 0;\n }\n repeat = true;\n }\n } while (repeat);\n }\n\n info.roomEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop() || '';\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop() || '';\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.funcEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop() || '';\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop() || '';\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.roles.sort((a, b) => a.role.localeCompare(b.role));\n info.types.sort();\n\n return { info, root };\n}\n\nexport function findNode(\n root: TreeItem,\n id: string,\n _parts?: string[],\n _path?: string,\n _level?: number,\n): TreeItem | null {\n if (root.data.id === id) {\n return root;\n }\n if (!_parts) {\n _parts = id.split('.');\n _level = 0;\n _path = _parts[_level];\n }\n if (!root.children && root.data.id !== id) {\n return null;\n }\n let found;\n if (root.children) {\n for (let i = 0; i < root.children.length; i++) {\n const _id = root.children[i].data.id;\n if (_id === _path) {\n found = root.children[i];\n break;\n } else if (_id > (_path || '')) {\n break;\n }\n }\n }\n if (found) {\n _level ||= 0;\n return findNode(found, id, _parts, `${_path}.${_parts[_level + 1]}`, _level + 1);\n }\n\n return null;\n}\n\nexport function findRoomsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n rooms?: string[],\n): { rooms: string[]; per: boolean } {\n if (!id) {\n return { rooms: [], per: false };\n }\n rooms ||= [];\n for (const room of info.roomEnums) {\n const common = info.objects[room]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n\n if (common.members?.includes(id) && !rooms.includes(name)) {\n rooms.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = rooms.length;\n findRoomsForObject(info, id, lang, rooms);\n }\n\n return { rooms, per: !ownEnums }; // per is if the enums are from parent\n}\n\nexport function findEnumsForObjectAsIds(\n info: TreeInfo,\n id: string,\n enumName: 'roomEnums' | 'funcEnums',\n funcs?: string[],\n): string[] {\n if (!id) {\n return [];\n }\n funcs ||= [];\n for (let i = 0; i < info[enumName].length; i++) {\n const common = info.objects[info[enumName][i]]?.common;\n if (common?.members?.includes(id) && !funcs.includes(info[enumName][i])) {\n funcs.push(info[enumName][i]);\n }\n }\n funcs.sort();\n\n return funcs;\n}\n\nexport function findFunctionsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n funcs?: string[],\n): { funcs: string[]; pef: boolean } {\n if (!id) {\n return { funcs: [], pef: false };\n }\n funcs ||= [];\n for (let i = 0; i < info.funcEnums.length; i++) {\n const common = info.objects[info.funcEnums[i]]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n if (common.members?.includes(id) && !funcs.includes(name)) {\n funcs.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = funcs.length;\n findFunctionsForObject(info, id, lang, funcs);\n }\n\n return { funcs, pef: !ownEnums };\n}\n\n/*\nfunction quality2text(q) {\n if (!q) {\n return 'ok';\n }\n const custom = q & 0xFFFF0000;\n let text = '';\n if (q & 0x40) text += 'device';\n if (q & 0x80) text += 'sensor';\n if (q & 0x01) text += ' bad';\n if (q & 0x02) text += ' not connected';\n if (q & 0x04) text += ' error';\n\n return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';\n}\n*/\n\n/**\n * Format a state value for visualization\n */\nexport function formatValue(options: FormatValueOptions): {\n valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value isn't replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n };\n valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n /** no break */\n nbr?: boolean;\n }[]\n | undefined;\n fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n} {\n const { dateFormat, state, isFloatComma, texts, obj } = options;\n const states = Utils.getStates(obj);\n const isCommon = obj.common;\n let fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n\n let v: any =\n // @ts-expect-error deprecated from js-controller 6\n isCommon?.type === 'file'\n ? '[file]'\n : !state || state.val === null\n ? '(null)'\n : state.val === undefined\n ? '[undef]'\n : state.val;\n\n const type = typeof v;\n\n if (isCommon?.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.time|^date/)) {\n if (v && typeof v === 'string') {\n if (Utils.isStringInteger(v)) {\n // we assume a unix ts\n v = new Date(parseInt(v, 10)).toString();\n } else {\n // check if parsable by new date\n try {\n const parsedDate = new Date(v);\n\n if (Utils.isValidDate(parsedDate)) {\n v = parsedDate.toString();\n }\n } catch {\n // ignore\n }\n }\n } else {\n if (v > 946681200 && v < 946681200000) {\n // '2000-01-01T00:00:00' => 946681200000\n v *= 1_000; // maybe the time is in seconds (UNIX time)\n }\n // \"null\" and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above\n v = v ? new Date(v).toString() : v;\n }\n } else if (isCommon?.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.duration/)) {\n // Format duration values in HH:mm:ss format\n if (typeof v === 'number' && v >= 0) {\n const hours = Math.floor(v / 3600);\n const minutes = Math.floor((v % 3600) / 60);\n const seconds = Math.floor(v % 60);\n v = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n } else if (typeof v === 'string' && Utils.isStringInteger(v)) {\n const numValue = parseInt(v, 10);\n if (numValue >= 0) {\n const hours = Math.floor(numValue / 3600);\n const minutes = Math.floor((numValue % 3600) / 60);\n const seconds = Math.floor(numValue % 60);\n v = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n }\n }\n } else {\n if (type === 'number') {\n if (!Number.isInteger(v)) {\n v = Math.round(v * 100_000_000) / 100_000_000; // remove 4.00000000000000001\n if (isFloatComma) {\n v = v.toString().replace('.', ',');\n }\n }\n } else if (type === 'object') {\n v = JSON.stringify(v);\n } else if (type !== 'string') {\n v = v.toString();\n } else if (v.startsWith('data:image/')) {\n fileViewer = 'image';\n }\n\n if (typeof v !== 'string') {\n v = v.toString();\n }\n }\n\n const valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value not replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n } = { v: v as string };\n\n // try to replace number with \"common.states\"\n if (states && states[v] !== undefined) {\n if (v !== states[v]) {\n valText.s = v;\n v = states[v];\n valText.v = v;\n }\n }\n\n if (valText.v?.length > 40) {\n valText.c = valText.v;\n valText.v = `${valText.v.substring(0, 40)}...`;\n }\n\n if (isCommon?.unit) {\n valText.u = isCommon.unit;\n }\n\n let valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n nbr?: boolean;\n }[]\n | undefined;\n if (options.full) {\n if (typeof v === 'string' && v.length > 100) {\n valFull = [{ t: texts.value, v: `${v.substring(0, 100)}...` }];\n } else {\n valFull = [{ t: texts.value, v }];\n }\n\n if (state) {\n if (state.ack !== undefined && state.ack !== null) {\n valFull.push({ t: texts.ack, v: state.ack.toString() });\n }\n if (state.ts) {\n valFull.push({ t: texts.ts, v: state.ts ? Utils.formatDate(new Date(state.ts), dateFormat) : '' });\n }\n if (state.lc) {\n valFull.push({ t: texts.lc, v: state.lc ? Utils.formatDate(new Date(state.lc), dateFormat) : '' });\n }\n if (state.from) {\n let from = state.from.toString();\n if (from.startsWith('system.adapter.')) {\n from = from.substring(15);\n }\n valFull.push({ t: texts.from, v: from });\n }\n if (state.user) {\n let user = state.user.toString();\n if (user.startsWith('system.user.')) {\n user = user.substring(12);\n }\n valFull.push({ t: texts.user, v: user });\n }\n if (state.c) {\n valFull.push({ t: texts.c, v: state.c });\n }\n valFull.push({ t: texts.quality, v: Utils.quality2text(state.q || 0).join(', '), nbr: true });\n }\n }\n\n return {\n valText,\n valFull,\n fileViewer,\n };\n}\n\n/**\n * Get CSS style for given state value\n */\nexport function getValueStyle(options: GetValueStyleOptions): { color: string } {\n const { state /* , isExpertMode, isButton */ } = options;\n const color = state?.ack ? (state.q ? '#ffa500' : '') : options.nonAckColor || '#ff2222c9';\n\n // do not show the color of the button in non-expert mode\n // if (!isExpertMode && isButton) {\n // color = '';\n // }\n\n return { color };\n}\n\nexport function getCustomValue(obj: ioBroker.Object, it: AdapterColumn): string | number | boolean | null {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n let value;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n value = anyObj[p[0]][p[1]];\n } else if (p.length === 3) {\n value = anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' ? anyObj[p[0]][p[1]][p[2]] : null;\n } else if (p.length === 4) {\n value =\n anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' && anyObj[p[0]][p[1]][p[2]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]]\n : null;\n } else if (p.length === 5) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n : null;\n } else if (p.length === 6) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]]\n : null;\n }\n if (value === undefined || value === null) {\n return null;\n }\n return value;\n }\n }\n\n return null;\n}\n\nexport function setCustomValue(obj: ioBroker.Object, it: AdapterColumn, value: string | number | boolean): boolean {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n anyObj[p[0]][p[1]] = value;\n return true;\n }\n if (p.length === 3) {\n if (anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object') {\n anyObj[p[0]][p[1]][p[2]] = value;\n return true;\n }\n } else if (p.length === 4) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]] = value;\n return true;\n }\n } else if (p.length === 5) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] = value;\n return true;\n }\n } else if (p.length === 6) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = value;\n return true;\n }\n }\n }\n }\n return false;\n}\n\n/**\n * Check if it is a non-expert id\n *\n * @param id id to test\n */\nexport function isNonExpertId(id: string): boolean {\n return !!NON_EXPERT_NAMESPACES.find(saveNamespace => id.startsWith(saveNamespace));\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAElC,OAAO,EACH,WAAW,IAAI,QAAQ,EACvB,cAAc,IAAI,QAAQ,EAC1B,MAAM,IAAI,QAAQ,EAClB,oBAAoB,IAAI,SAAS,EACjC,oBAAoB,IAAI,UAAU,EAClC,UAAU,IAAI,QAAQ,EACtB,IAAI,IAAI,QAAQ,EAChB,IAAI,IAAI,QAAQ,EAChB,KAAK,IAAI,SAAS,EAClB,IAAI,IAAI,cAAc,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAajC;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,CAAsB,EAAE,SAAqB;IACrE,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;QAChD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,SAAS,EAAE,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAoB,EAAU,EAAE,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACpH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAoB,EAAU,EAAE,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACjH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAoB,EAAU,EAAE,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACtH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAU,EAAE,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAClH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAAoB,EAAU,EAAE,CACtE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAEjD,oEAAoE;AACpE,MAAM,qBAAqB,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,MAAM,GAAwB;IACvC,eAAe,EAAE;QACb,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,UAAU;QAClB,EAAE,EAAE,CAAC;QACL,aAAa,EAAE;YACX,aAAa,EAAE,QAAQ;YACvB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,cAAc;SAC1B;KACJ;IACD,oBAAoB,EAAE;QAClB,aAAa,EAAE;YACX,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;YACjB,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,cAAc;SAC1B;KACJ;IACD,UAAU,EAAE;QACR,OAAO,EAAE,GAAG;KACf;IACD,iBAAiB,EAAE;QACf,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,oBAAoB;KACxC;IACD,iBAAiB,EAAE;QACf,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE;YACP,KAAK,EAAE,SAAS;SACnB;QACD,WAAW,EAAE;YACT,KAAK,EAAE,SAAS;SACnB;KACJ;IACD,aAAa,EAAE;QACX,QAAQ,EAAE,EAAE;KACf;CACJ,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IAC/B,mGAAmG;IACnG,OAAO,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAAsB,EAAE,KAAe;IACtE,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC,IAAI,cAAc,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,cAAc,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,cAAc,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,cAAc,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,IAAY;IAChC,OAAO,aAAa,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAChC,OAAO,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAuC;IAC9D,OAAO,CACH,6BACI,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EAAE,KAAK,EACnB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,cAAc;QAExB,2BAAG,IAAI,EAAC,cAAc;YAClB,8BAAM,CAAC,EAAC,qoBAAqoB,GAAG;YAChpB,8BAAM,CAAC,EAAC,kUAAkU,GAAG,CAC7U,CACF,CACT,CAAC;AACN,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,aAAa,CAAC,OAAe;IACzC,OAAO,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAErC,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;IAE7D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE/E,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAa,EAAE,QAA0D;IACtG,MAAM,YAAY,GAAU,EAAE,CAAC;IAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC7B,MAA2B,EAC3B,QAAwE;IAExE,MAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;AACxB,2CAA2C;AAC3C,GAAgC;AAChC,wCAAwC;AACxC,UAAoB;AACpB,uEAAuE;AACvE,mBAA6B;IAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAa,EAAE,KAAU,EAAE,GAAW,EAAE,EAAE;YACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACxC,OAAO;YACX,CAAC;YACD,8EAA8E;YAC9E,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;YAC3C,IAAI,mBAAmB,IAAI,QAAQ,EAAE,CAAC;gBAClC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO;gBACX,CAAC;YACL,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1F,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,iBAAiB,CAAC,GAAG,EAAE,CAAC,MAA2B,EAAE,KAAU,EAAE,GAAW,EAAE,EAAE;QACnF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;QACX,CAAC;QACD,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;QAC3C,IAAI,mBAAmB,IAAI,QAAQ,EAAE,CAAC;YAClC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO;YACX,CAAC;QACL,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1F,CAAC,CAAC,CAAC;AACP,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,WAAW,CACvB,SAAwD,EACxD,IAAyB,EACzB,YAA4D;IAE5D,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,SAAS,CAAC,OAAO,CACb,IAAI,CAAC,EAAE,CACH,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;QAC7C,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CACnC,CAAC;IACF,YAAY,EAAE,OAAO,CACjB,IAAI,CAAC,EAAE,CACH,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;QAC7C,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CACnC,CAAC;IACF,YAAY,CAAC,IAAI,EAAE,CAAC;IACpB,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;AACxB,2BAA2B;AAC3B,QAAgB;AAChB,6CAA6C;AAC7C,GAAoC;AACpC,0CAA0C;AAC1C,OAOC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,cAAc,GAChB,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,mBAAmB;QAChD,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,mBAAmB,CAAC;QAC5D,CAAC,CAAC,GAAG,CAAC;IACd,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACzG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,uCAAuC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEtC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAE9B,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAcD,MAAM,OAAO,kBAAmB,SAAQ,SAA2D;IAC9E,QAAQ,CAAU;IAC3B,KAAK,GAAyC,IAAI,CAAC;IAC3D,YAAY,KAA8B;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACT,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;SAClC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,IAAwB,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,MAAM;QACF,OAAO,CACH,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;YAChC,oBAAC,MAAM,IACH,OAAO,EAAC,UAAU,EAClB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACpB,EAAE,EAAE,MAAM,CAAC,eAAe,EAC1B,SAAS,EAAC,cAAc,EACxB,QAAQ,QACR,WAAW,EAAE,KAAK,CAAC,EAAE;oBACjB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;wBACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;4BAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;4BAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBACxD,CAAC;oBACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACpC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CACtD,CAAC;wBACF,IAAI,EAAU,CAAC;wBACf,IAAI,KAAa,CAAC;wBAClB,IAAI,IAAoC,CAAC;wBACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;4BAChB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;4BAClB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACJ,EAAE,GAAG,IAAK,CAAC;4BACX,KAAK,GAAG,IAAK,CAAC;wBAClB,CAAC;wBACD,OAAO,CACH,oBAAC,GAAG,IACA,SAAS,EAAC,MAAM,EAChB,EAAE,EAAE,MAAM,CAAC,oBAAoB,EAC/B,GAAG,EAAE,EAAE;4BAEN,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,6BAAK,SAAS,EAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC7D,KAAK,CACJ,CACT,CAAC;oBACN,CAAC,CAAC,CAAC;gBACP,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,QAAQ,EAAE,KAAK,CAAC,EAAE;oBACd,IAAI,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,KAAiB,CAAC;oBACpD,iCAAiC;oBACjC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3F,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBACxC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;4BACb,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBAClC,CAAC;oBACL,CAAC;yBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrE,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC3B,CAAC;oBAED,iCAAiC;oBACjC,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC9B,cAAc,GAAG,EAAE,CAAC;oBACxB,CAAC;oBAED,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE;wBAC1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC7B,CAAC;wBACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;4BACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;4BAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;wBACzD,CAAC,EAAE,GAAG,CAAC,CAAC;oBACZ,CAAC,CAAC,CAAC;gBACP,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;oBACV,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3D,CAAC;gBACL,CAAC,EACD,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAC1D,YAAY;gBAEZ,oBAAC,QAAQ,IACL,GAAG,EAAC,OAAO,EACX,KAAK,EAAC,EAAE;oBAER,8BAAM,KAAK,EAAE,MAAM,CAAC,UAAU,IACzB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;wBACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;wBAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAChD,CACA;gBACV,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC3B,IAAI,EAAU,CAAC;oBACf,IAAI,KAAa,CAAC;oBAClB,IAAI,IAAoC,CAAC;oBACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;wBAChB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;wBAClB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACJ,EAAE,GAAG,IAAI,CAAC;wBACV,KAAK,GAAG,IAAI,CAAC;oBACjB,CAAC;oBACD,OAAO,CACH,oBAAC,QAAQ,IACL,EAAE,EAAE,MAAM,CAAC,oBAAoB,EAC/B,GAAG,EAAE,EAAE,EACP,KAAK,EAAE,EAAE;wBAER,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,6BAAK,SAAS,EAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC7D,KAAK,CACC,CACd,CAAC;gBACN,CAAC,CAAC,CACG;YACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CACvB,oBAAC,GAAG,IACA,SAAS,EAAC,KAAK,EACf,EAAE,EAAE,MAAM,CAAC,iBAAiB;gBAE5B,oBAAC,UAAU,IACP,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE;wBACV,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBACtB,CAAC;wBACD,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;oBACxF,CAAC;oBAED,oBAAC,SAAS,OAAG,CACJ,CACX,CACT,CAAC,CAAC,CAAC,IAAI,CACN,CACT,CAAC;IACN,CAAC;CACJ;AAeD,MAAM,OAAO,iBAAkB,SAAQ,SAAyD;IACpF,KAAK,GAAyC,IAAI,CAAC;IAC3D,YAAY,KAA6B;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACT,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;SAClC,CAAC;IACN,CAAC;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,MAAM;QACF,OAAO,CACH,oBAAC,WAAW,IACR,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACrB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACpB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,EACnD,MAAM,EAAC,OAAO;YAEd,oBAAC,KAAK,IACF,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,EACtC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACnB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAC1D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,QAAQ,EAAE,KAAK,CAAC,EAAE;oBACd,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE;wBAC1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC7B,CAAC;wBACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;4BACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;4BAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;wBACzD,CAAC,EAAE,GAAG,CAAC,CAAC;oBACZ,CAAC,CAAC,CAAC;gBACP,CAAC,EACD,MAAM,EAAE,GAAG,EAAE;oBACT,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3D,CAAC;gBACL,CAAC,EACD,YAAY,EAAC,KAAK,GACpB;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAChB,6BACI,KAAK,EAAE;oBACH,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC;iBACX;gBAED,oBAAC,UAAU,IACP,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE;wBACV,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBACtB,CAAC;wBACD,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;oBACxF,CAAC;oBAED,oBAAC,SAAS,OAAG,CACJ,CACX,CACT,CAAC,CAAC,CAAC,IAAI,CACE,CACjB,CAAC;IACN,CAAC;CACJ;AAED,6CAA6C;AAC7C,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,IAAY,EAAE,MAAe,EAAE,IAAa;IACrF,MAAM,KAAK,CAAC,CAAC;IACb,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACxD,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAiC,EAAE,IAAwB;IAC/E,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACtC,OAAwC,EACxC,EAAU,EACV,IAAwB,EACxB,WAAoB;IAEpB,+CAA+C;IAC/C,WAAW,KAAK,GAAG,CAAC,CAAC,0BAA0B;IAC/C,IAAI,GAAG,GAAyB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,kBAAkB,EAAE,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;IAChD,IAAI,KAAK,EAAE,CAAC;QACR,gBAAgB;QAChB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,GAAG,GAAG,GAAG,WAAW,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACJ,GAAG,GAAG,GAAG,WAAW,YAAY,IAAI,IAAI,KAAK,EAAE,CAAC;gBACpD,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC,CAAC,QAAQ;YAC1B,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC,CAAC,mFAAmF;YACpG,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC5C,GAAG,GAAG,CACF,oBAAC,GAAG,IACA,SAAS,EAAC,SAAS,EACnB,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,GACZ,CACL,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAEnC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1B,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,IAAI,QAAQ,CAAC;wBACb,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;4BACpE,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gCAClC,GAAG,GAAG,GAAG,WAAW,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;4BACnF,CAAC;iCAAM,CAAC;gCACJ,GAAG,GAAG,GAAG,WAAW,YAAY,MAAM,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;4BAC3D,CAAC;wBACL,CAAC;6BAAM,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;4BAChD,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAC5B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gCACnB,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;4BACzB,CAAC;iCAAM,CAAC;gCACJ,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;4BAC/B,CAAC;4BACD,GAAG,GAAG,GAAG,WAAW,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClD,CAAC;6BAAM,CAAC;4BACJ,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAC5B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gCACnB,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;4BACzB,CAAC;iCAAM,CAAC;gCACJ,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;4BAC/B,CAAC;4BACD,GAAG,GAAG,GAAG,WAAW,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClD,CAAC;oBACL,CAAC;yBAAM,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnC,OAAO,KAAK,CAAC,CAAC,QAAQ;oBAC1B,CAAC;yBAAM,CAAC;wBACJ,OAAO,IAAI,CAAC;oBAChB,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC5C,mBAAmB;oBACnB,GAAG,GAAG,CACF,oBAAC,GAAG,IACA,SAAS,EAAC,SAAS,EACnB,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,GACZ,CACL,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,GAAG,GAAG,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,GAAG,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CACvB,IAAc,EACd,OAA4B,EAC5B,IAAwB,EACxB,OAAwC,EACxC,OAUC,EACD,OAA2B,EAC3B,YAAwC,EACxC,aAAwB,EACxB,MAAe;IAEf,MAAM,KAAK,CAAC,CAAC;IACb,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;YACpB,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACxB,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACxB,OAAQ,CAAC,IAAI,GAAG,OAAQ,CAAC,IAAK,CAAC,MAAM,CAAE,OAAO,CAAC,IAAI,CAAyB,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YACzG,CAAC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACxB,OAAQ,CAAC,IAAI,GAAG,OAAQ,CAAC,IAAK,CAAC,MAAM,CAAE,OAAO,CAAC,IAAI,CAAyB,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YACzG,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAEvB,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;QACX,MAAM,MAAM,GAAyB,IAAI,CAAC,GAAG,EAAE,MAA8B,CAAC;QAE9E,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;wBACnD,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1D,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC5C,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;oBAChB,WAAW,GAAG,IAAI,CAAC;gBACvB,CAAC;qBAAM,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtD,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC3C,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClD,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC5C,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;oBAChB,WAAW,GAAG,IAAI,CAAC;gBACvB,CAAC;qBAAM,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBACnD,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;wBACvE,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxE,WAAW,GAAG,IAAI,CAAC;YACvB,CAAC;iBAAM,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5F,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,MAAqC,CAAC;gBACjF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;oBAClB,WAAW,GAAG,IAAI,CAAC;gBACvB,CAAC;qBAAM,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;oBAC3C,6BAA6B;oBAC7B,IACI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC5B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CACzF,EACH,CAAC;wBACC,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;oBACvC,sCAAsC;oBACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,wCAAwC;oBACpF,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrE,WAAW,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACL,CAAC;qBAAM,IACH,cAAc,KAAK,IAAI;oBACvB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,cAAwB,CAAC,CAAC,EACjF,CAAC;oBACC,WAAW,GAAG,IAAI,CAAC;gBACvB,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACtC,WAAW;gBACP,IAAI,CAAC,EAAE,KAAK,QAAQ;oBACpB,IAAI,CAAC,EAAE,KAAK,MAAM;oBAClB,4CAA4C;oBAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;oBAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;oBAC9B,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC1B,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,CAAC;YACD,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC1C,CAAC;gBACD,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,IAAI,CAAC;YACvB,CAAC;QACL,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC1C,CAAC;gBACD,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACzE,WAAW,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvC,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvC,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACvC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE,CAAC;YAChC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC5B,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAClC,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACvB,WAAW,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACJ,WAAW,GAAG,IAAI,CAAC;gBACvB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC;IAE5B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAChC,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,OAAO,GAAG,WAAW,CACvB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,aAAa,EACb,MAAM,GAAG,CAAC,CACb,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACnC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,4BAA4B;IAC1F,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,uDAAuD;IACvD,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,IAAc,EACd,IAAyB,EACzB,OAAwC,EACxC,OAAkB;IAElB,OAAO,KAAK,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAClB,OAAwC,EACxC,EAAU,EACV,KAAa,EACb,SAAoB,EACpB,IAAwB,EACxB,WAAoB;IAEpB,IAAI,IAAI,CAAC;IAET,qCAAqC;IACrC,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,GAAG,CACH,oBAAC,QAAQ,IACL,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAC/C,CACL,CAAC;IACN,CAAC;SAAM,IAAI,EAAE,KAAK,YAAY,IAAI,EAAE,KAAK,cAAc,EAAE,CAAC;QACtD,IAAI,GAAG,CACH,oBAAC,QAAQ,IACL,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE,GAClD,CACL,CAAC;IACN,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACtD,IAAI,GAAG,CACH,oBAAC,UAAU,IACP,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,GAChD,CACL,CAAC;IACN,CAAC;SAAM,IAAI,EAAE,KAAK,gBAAgB,EAAE,CAAC;QACjC,IAAI,GAAG,CACH,oBAAC,UAAU,IACP,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAAE,GACxD,CACL,CAAC;IACN,CAAC;SAAM,IAAI,EAAE,KAAK,cAAc,EAAE,CAAC;QAC/B,IAAI,GAAG,oBAAC,SAAS,IAAC,SAAS,EAAC,SAAS,GAAG,CAAC;IAC7C,CAAC;SAAM,IAAI,EAAE,KAAK,aAAa,EAAE,CAAC;QAC9B,IAAI,GAAG,oBAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,CAAC;IAC5C,CAAC;SAAM,IAAI,EAAE,KAAK,aAAa,EAAE,CAAC;QAC9B,IAAI,GAAG,oBAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,CAAC;IAC5C,CAAC;SAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACjE,IAAI,GAAG,oBAAC,cAAc,IAAC,SAAS,EAAC,SAAS,GAAG,CAAC;IAClD,CAAC;SAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,IAAI,GAAG,oBAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,CAAC;IAC5C,CAAC;SAAM,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACpD,IAAI,GAAG,oBAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,CAAC;IAC5C,CAAC;SAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACnB,mBAAmB;QACnB,IAAI,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC;YAClC,IAAI,GAAG,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC;IAED,OAAO,IAAI,IAAI,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAkB,EAAE,IAAwB;IACzE,IAAI,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAkB,EAAE,IAAwB;IAC1E,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,CACH,oBAAC,GAAG,IACA,SAAS,EAAC,GAAG,EACb,EAAE,EAAE,MAAM,CAAC,iBAAiB,EAC5B,IAAI,EAAE,OAAO,EACb,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,IAEf,OAAO,CACN,CACT,CAAC;IACN,CAAC;IACD,OAAO,8BAAM,KAAK,EAAE,MAAM,CAAC,aAAa,IAAG,OAAO,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAQ,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,SAAS,CACrB,OAAwC,EACxC,OAKC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;IAE/C,8GAA8G;IAC9G,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SACzB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAqB,CAAC;SAC7D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,2CAA2C;IAC3C,IAAI,cAAc,GAAa,EAAE,CAAC;IAClC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,IAAI,GAAa;QACnB,IAAI,EAAE;YACF,IAAI,EAAE,EAAE;YACR,EAAE,EAAE,EAAE;SACT;QACD,QAAQ,EAAE,EAAE;KACf,CAAC;IAEF,MAAM,IAAI,GAAa;QACnB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,OAAO;QACP,OAAO,EAAE,CAAC,GAAG,CAAC;QACd,KAAK,EAAE,EAAE;QACT,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,EAAE;KACjB,CAAC;IAEF,IAAI,KAAK,GAAa,IAAI,CAAC;IAE3B,0GAA0G;IAC1G,wGAAwG;IACxG,sFAAsF;IACtF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,SAAS;QACb,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;YAC1B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACnD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,IAAI,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,CAAC;YACL,CAAC;iBAAM,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;gBAChG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;YAED,yBAAyB;YACzB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;gBAClD,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACnC,CAAC;yBAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;oBACxC,IAAI,MAAM,EAAE,CAAC;wBACT,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnC,CAAC;6BAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC;oBACD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;oBAC1C,IAAI,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACpC,CAAC;6BAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;4BAChD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACtC,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEjB,IAAI,MAAM,CAAC;QAEX,gBAAgB;QAChB,GAAG,CAAC;YACA,MAAM,GAAG,KAAK,CAAC;YAEf,kEAAkE;YAClE,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;gBACnD,+BAA+B;gBAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC;oBACpC,IAAI,OAAO,GAAG,WAAW,CAAC;oBAC1B,0BAA0B;oBAC1B,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBACrD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC3C,uBAAuB;wBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;4BACzB,MAAM,MAAM,GAAa;gCACrB,IAAI,EAAE;oCACF,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oCACd,MAAM,EAAE,KAAK;oCACb,EAAE,EAAE,OAAO;oCACX,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;oCACrB,KAAK,EAAE,CAAC;oCACR,IAAI,EAAE,aAAa,CACf,OAAO,EACP,OAAO,EACP,CAAC,EACD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,IAAI,EACZ,WAAW,CACd;oCACD,SAAS,EAAE,IAAI;iCAClB;6BACJ,CAAC;4BAEF,KAAK,CAAC,QAAQ,KAAK,EAAE,CAAC;4BACtB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BAC5B,KAAK,GAAG,MAAM,CAAC;4BACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACvB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBAC1B,CAAC;6BAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;4BACxB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC;4BAClE,IAAI,CAAC,KAAK,EAAE,CAAC;gCACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;4BACrD,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,MAAM,MAAM,GAAa;oBACrB,IAAI,EAAE;wBACF,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;wBAC7B,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;wBAC/C,GAAG;wBACH,MAAM,EAAE,KAAK;wBACb,IAAI,EACA,0BAA0B,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;4BAClE,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;wBAC/E,EAAE;wBACF,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;wBAC3E,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;wBACvB,SAAS,EAAE,KAAK;wBAChB,MAAM,EACF,GAAG,CAAC,IAAI,KAAK,OAAO;4BACpB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI;4BAClB,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;4BACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;4BACpC,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,KAAK;wBAC/B,MAAM,EACF,GAAG,CAAC,IAAI,KAAK,OAAO;4BACpB,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS;4BAC9B,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,KAAK;4BAC3B,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK;wBAC9B,GAAG,EACC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI;4BAClB,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;4BACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;qBACxC;iBACJ,CAAC;gBAEF,KAAK,CAAC,QAAQ,KAAK,EAAE,CAAC;gBACtB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,KAAK,GAAG,MAAM,CAAC;gBAEf,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9B,cAAc,GAAG,KAAK,CAAC;gBACvB,WAAW,GAAG,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEV,OAAO,cAAc,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpC,CAAC,EAAE,CAAC;gBACR,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACR,IAAI,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC;oBACjC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7C,cAAc,GAAG,CAAC,CAAC;oBACnB,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;wBACd,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;wBAC9B,CAAC;6BAAM,CAAC;4BACJ,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACzF,CAAC;wBACD,IAAI,EAAE,CAAC;oBACX,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,KAAK,GAAG,IAAI,CAAC;oBACb,cAAc,GAAG,EAAE,CAAC;oBACpB,WAAW,GAAG,EAAE,CAAC;oBACjB,cAAc,GAAG,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,GAAG,IAAI,CAAC;YAClB,CAAC;QACL,CAAC,QAAQ,MAAM,EAAE;IACrB,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,KAAK,GAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAClG,MAAM,KAAK,GAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAClG,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC;QACb,CAAC;QACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,KAAK,GAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAClG,MAAM,KAAK,GAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAClG,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC;QACb,CAAC;QACD,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAElB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CACpB,IAAc,EACd,EAAU,EACV,MAAiB,EACjB,KAAc,EACd,MAAe;IAEf,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,GAAG,CAAC,CAAC;QACX,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC;IACV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAChB,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM;YACV,CAAC;iBAAM,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC7B,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACR,MAAM,KAAK,CAAC,CAAC;QACb,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,IAAc,EACd,EAAU,EACV,IAAwB,EACxB,KAAgB;IAEhB,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IACD,KAAK,KAAK,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,SAAS;QACb,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC;IAEb,eAAe;IACf,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,GAAG,EAAE,CAAC;IACZ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACnB,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,sCAAsC;AAC5E,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,IAAc,EACd,EAAU,EACV,QAAmC,EACnC,KAAgB;IAEhB,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,EAAE,CAAC;IACd,CAAC;IACD,KAAK,KAAK,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QACvD,IAAI,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,IAAI,EAAE,CAAC;IAEb,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAClC,IAAc,EACd,EAAU,EACV,IAAwB,EACxB,KAAgB;IAEhB,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IACD,KAAK,KAAK,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAEvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,SAAS;QACb,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC;IAEb,eAAe;IACf,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,GAAG,EAAE,CAAC;IACZ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACnB,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;EAeE;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IAuBnD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;IAC5B,IAAI,UAAsF,CAAC;IAE3F,IAAI,CAAC;IACD,mDAAmD;IACnD,QAAQ,EAAE,IAAI,KAAK,MAAM;QACrB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;YAC5B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAExB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC;IAEtB,IAAI,QAAQ,EAAE,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACnG,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,sBAAsB;gBACtB,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACJ,gCAAgC;gBAChC,IAAI,CAAC;oBACD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;oBAE/B,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;wBAChC,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC9B,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;gBACpC,wCAAwC;gBACxC,CAAC,IAAI,KAAK,CAAC,CAAC,2CAA2C;YAC3D,CAAC;YACD,0GAA0G;YAC1G,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;SAAM,IAAI,QAAQ,EAAE,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACxG,4CAA4C;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnC,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7H,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7H,CAAC;QACL,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,6BAA6B;gBAC5E,IAAI,YAAY,EAAE,CAAC;oBACf,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,UAAU,GAAG,OAAO,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAST,EAAE,CAAC,EAAE,CAAW,EAAE,CAAC;IAEvB,6CAA6C;IAC7C,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,OAQW,CAAC;IAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvG,CAAC;YACD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvG,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACrC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;oBAClC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO;QACP,OAAO;QACP,UAAU;KACb,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAA6B;IACvD,MAAM,EAAE,KAAK,CAAC,8BAA8B,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC;IAE3F,yDAAyD;IACzD,mCAAmC;IACnC,kBAAkB;IAClB,IAAI;IAEJ,OAAO,EAAE,KAAK,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAoB,EAAE,EAAiB;IAClE,IAAI,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClB,IAAI,KAAK,CAAC;QACV,MAAM,MAAM,GAAwB,GAA0B,CAAC;QAC/D,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,mBAAmB;gBACnB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3G,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,KAAK;oBACD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpF,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChC,CAAC,CAAC,IAAI,CAAC;YACnB,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,KAAK;oBACD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAClB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;wBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtC,CAAC,CAAC,IAAI,CAAC;YACnB,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,KAAK;oBACD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAClB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;wBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC5C,CAAC,CAAC,IAAI,CAAC;YACnB,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAoB,EAAE,EAAiB,EAAE,KAAgC;IACpG,IAAI,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClB,MAAM,MAAM,GAAwB,GAA0B,CAAC;QAC/D,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,mBAAmB;gBACnB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;gBAC3B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC/D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBACjC,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,IACI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC9C,CAAC;oBACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBACvC,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,IACI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAC5C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EACpD,CAAC;oBACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC7C,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,IACI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAC5C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAClD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC1D,CAAC;oBACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBACnD,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAAU;IACpC,OAAO,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AACvF,CAAC","sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport { Box, FormControl, IconButton, Input, MenuItem, Select } from '@mui/material';\nimport SVG from 'react-inlinesvg';\n\nimport {\n Description as IconMeta,\n PersonOutlined as IconUser,\n Router as IconHost,\n SupervisedUserCircle as IconGroup,\n SettingsApplications as IconSystem,\n DataObject as IconData,\n Info as IconInfo,\n Link as IconLink,\n Close as IconClose,\n Wifi as IconConnection,\n} from '@mui/icons-material';\nimport type { IobTheme, ThemeType, Width } from '../../types';\nimport { Utils } from '../Utils';\nimport type {\n FormatValueOptions,\n InputSelectItem,\n TreeItem,\n ObjectBrowserCustomFilter,\n TreeInfo,\n GetValueStyleOptions,\n AdapterColumn,\n ObjectBrowserFilter,\n TreeItemData,\n} from './types';\n\n/**\n * Calls `onConfirm` if CTRL+ENTER (CMD+ENTER on mac) was pressed.\n *\n * Every dialog that writes something confirms with CTRL+ENTER, so the handler belongs to the dialog\n * itself and not to one of its inputs: the key then works wherever the focus is. An input that\n * handles the combination on its own stops the event, so nothing is written twice.\n *\n * @param e the keyboard event of the dialog\n * @param onConfirm the action of the confirming button of the dialog\n */\nexport function onCtrlEnter(e: React.KeyboardEvent, onConfirm: () => void): void {\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n onConfirm();\n }\n}\n\nexport const ICON_SIZE = 24;\nexport const ROW_HEIGHT = 32;\n\nexport const COLOR_NAME_USERDATA = (themeType: ThemeType): string => (themeType === 'dark' ? '#62ff25' : '#37c400');\nexport const COLOR_NAME_ALIAS = (themeType: ThemeType): string => (themeType === 'dark' ? '#ee56ff' : '#a204b4');\nexport const COLOR_NAME_JAVASCRIPT = (themeType: ThemeType): string => (themeType === 'dark' ? '#fff46e' : '#b89101');\nexport const COLOR_NAME_SYSTEM = (themeType: ThemeType): string => (themeType === 'dark' ? '#ff6d69' : '#ff6d69');\nexport const COLOR_NAME_SYSTEM_ADAPTER = (themeType: ThemeType): string =>\n themeType === 'dark' ? '#5773ff' : '#5773ff';\n\n/** Namespaces which are allowed to be edited by non-expert users */\nconst NON_EXPERT_NAMESPACES = ['0_userdata.0.', 'alias.0.'];\n\nexport const styles: Record<string, any> = {\n headerCellInput: {\n width: 'calc(100% - 5px)',\n height: ROW_HEIGHT,\n pt: 0,\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n },\n headerCellSelectItem: {\n '& .itemIcon': {\n width: ICON_SIZE,\n height: ICON_SIZE,\n mr: '5px',\n display: 'inline-block',\n },\n },\n selectNone: {\n opacity: 0.5,\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 5,\n backgroundColor: 'background.default',\n },\n cellIdTooltipLink: {\n color: '#7ec2fd',\n '&:hover': {\n color: '#7ec2fd',\n },\n '&:visited': {\n color: '#7ec2fd',\n },\n },\n cellIdTooltip: {\n fontSize: 14,\n },\n};\n\n/**\n * Name of the CSS variable that holds the width of a column.\n * All widths of the table are defined once on the scroll container, so the header and all rows\n * are always aligned and the resizer can change a width without re-rendering the rows.\n */\nexport function colVar(name: string): string {\n // custom columns are named like `_adapter_path.to.value` and dots are not allowed in CSS variables\n return `--ob-w-${name.replace(/[^\\w-]/g, '_')}`;\n}\n\n/** CSS value that reads the width of a column from the CSS variable of the table */\nexport function colWidth(name: string): string {\n return `var(${colVar(name)})`;\n}\n\n/**\n * Width class for the given width of the container. The same breakpoints as in MUI are used, but\n * they are applied to the container of the object browser and not to the window.\n */\nexport function widthFromContainer(containerWidth: number, theme: IobTheme): Width {\n const values = theme.breakpoints.values;\n if (containerWidth >= values.xl) {\n return 'xl';\n }\n if (containerWidth >= values.lg) {\n return 'lg';\n }\n if (containerWidth >= values.md) {\n return 'md';\n }\n if (containerWidth >= values.sm) {\n return 'sm';\n }\n return 'xs';\n}\n\n/** Name of the CSS variable that says if a column takes the remaining place */\nexport function growVar(name: string): string {\n return `--ob-grow-${name.replace(/[^\\w-]/g, '_')}`;\n}\n\n/**\n * CSS value for `flexGrow` of a column. Exactly one column (`id` or `name`) takes the remaining\n * width of the table, all others keep their width.\n */\nexport function colGrow(name: string): string {\n return `var(${growVar(name)}, 0)`;\n}\n\nexport function ButtonIcon(props?: { style?: React.CSSProperties }): JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 436 436\"\n style={props?.style}\n width=\"24\"\n height=\"24\"\n className=\"admin-button\"\n >\n <g fill=\"currentColor\">\n <path d=\"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z\" />\n <path d=\"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z\" />\n </g>\n </svg>\n );\n}\n\n/** Converts ioB pattern into regex */\nexport function pattern2RegEx(pattern: string): string {\n pattern = (pattern || '').toString();\n\n const startsWithWildcard = pattern[0] === '*';\n const endsWithWildcard = pattern[pattern.length - 1] === '*';\n\n pattern = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n\n return (startsWithWildcard ? '' : '^') + pattern + (endsWithWildcard ? '' : '$');\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nexport function walkThroughArray(object: any[], iteratee: (result: any[], value: any, key: number) => void): any[] {\n const copiedObject: any[] = [];\n for (let index = 0; index < object.length; index++) {\n iteratee(copiedObject, object[index], index);\n }\n return copiedObject;\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nexport function walkThroughObject(\n object: Record<string, any>,\n iteratee: (result: Record<string, any>, value: any, key: string) => void,\n): Record<string, any> {\n const copiedObject: Record<string, any> = {};\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n iteratee(copiedObject, object[key], key);\n }\n }\n return copiedObject;\n}\n\n/**\n * Function to reduce an object primarily by a given list of keys\n */\nexport function filterObject(\n /** The objects which should be filtered */\n obj: Record<string, any> | any[],\n /** The keys which should be excluded */\n filterKeys: string[],\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean,\n): Record<string, any> | any[] {\n if (Array.isArray(obj)) {\n return walkThroughArray(obj, (result: any[], value: any, key: number) => {\n if (value === undefined || value === null) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n }\n\n return walkThroughObject(obj, (result: Record<string, any>, value: any, key: string) => {\n if (value === undefined || value === null) {\n return;\n }\n if (filterKeys.includes(key)) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n}\n\n// It is an export function and used somewhere else\nexport function filterRoles(\n roleArray: { role: string; type: ioBroker.CommonType }[],\n type: ioBroker.CommonType,\n defaultRoles?: { role: string; type: ioBroker.CommonType }[],\n): string[] {\n const bigRoleArray: string[] = [];\n roleArray.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n defaultRoles?.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n bigRoleArray.sort();\n return bigRoleArray;\n}\n\n/**\n * Function to generate a json-file for an object and trigger download it\n */\nexport function generateFile(\n /** The desired filename */\n fileName: string,\n /** The objects which should be downloaded */\n obj: Record<string, ioBroker.Object>,\n /** Options to filter/reduce the output */\n options: {\n /** Whether the output should be beautified */\n beautify?: boolean;\n /** Whether \"system.repositories\" should be excluded */\n excludeSystemRepositories?: boolean;\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean;\n },\n): void {\n const el = document.createElement('a');\n const filterKeys = [];\n if (options.excludeSystemRepositories) {\n filterKeys.push('system.repositories');\n }\n const filteredObject =\n filterKeys.length > 0 || options.excludeTranslations\n ? filterObject(obj, filterKeys, options.excludeTranslations)\n : obj;\n const data = options.beautify ? JSON.stringify(filteredObject, null, 2) : JSON.stringify(filteredObject);\n el.setAttribute('href', `data:application/json;charset=utf-8,${encodeURIComponent(data)}`);\n el.setAttribute('download', fileName);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n}\n\ninterface CustomFilterSelectProps {\n name: 'room' | 'func' | 'type' | 'role' | 'custom';\n texts: Record<string, string>;\n initialValue: string[] | undefined;\n onChange: (name: 'room' | 'func' | 'type' | 'role' | 'custom', value: string[] | undefined) => void;\n values: (string | InputSelectItem)[];\n}\n\ninterface CustomFilterSelectState {\n value: string[];\n}\n\nexport class CustomFilterSelect extends Component<CustomFilterSelectProps, CustomFilterSelectState> {\n private readonly hasIcons: boolean;\n private timer: ReturnType<typeof setTimeout> | null = null;\n constructor(props: CustomFilterSelectProps) {\n super(props);\n this.state = {\n value: props.initialValue || [],\n };\n this.hasIcons = !!props.values?.find(item => (item as InputSelectItem).icon);\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <div style={{ position: 'relative' }}>\n <Select\n variant=\"standard\"\n key={this.props.name}\n sx={styles.headerCellInput}\n className=\"no-underline\"\n multiple\n renderValue={value => {\n if (!value?.length) {\n return this.props.name === 'custom'\n ? this.props.texts.showAll\n : this.props.texts[`filter_${this.props.name}`];\n }\n return value.map(val => {\n const item = this.props.values.find(i =>\n typeof i === 'object' ? i.value === val : i === val,\n );\n let id: string;\n let _name: string;\n let icon: null | JSX.Element | undefined;\n if (typeof item === 'object') {\n id = item.value;\n _name = item.name;\n icon = item.icon;\n } else {\n id = item!;\n _name = item!;\n }\n return (\n <Box\n component=\"span\"\n sx={styles.headerCellSelectItem}\n key={id}\n >\n {icon || (this.hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </Box>\n );\n });\n }}\n value={this.state.value}\n onChange={event => {\n let selectedValues = event.target.value as string[];\n // '_' may be selected only alone\n if (this.state.value[0] === '_' && selectedValues.includes('_') && selectedValues.length > 1) {\n const pos = selectedValues.indexOf('_');\n if (pos !== -1) {\n selectedValues.splice(pos, 1);\n }\n } else if (this.state.value[0] !== '_' && selectedValues.includes('_')) {\n selectedValues = ['_'];\n }\n\n // '_' may be selected only alone\n if (selectedValues.includes('')) {\n selectedValues = [];\n }\n\n this.setState({ value: selectedValues }, () => {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.timer = null;\n this.props.onChange(this.props.name, selectedValues);\n }, 400);\n });\n }}\n onClose={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.props.onChange(this.props.name, this.state.value);\n }\n }}\n inputProps={{ name: this.props.name, id: this.props.name }}\n displayEmpty\n >\n <MenuItem\n key=\"empty\"\n value=\"\"\n >\n <span style={styles.selectNone}>\n {this.props.name === 'custom'\n ? this.props.texts.showAll\n : this.props.texts[`filter_${this.props.name}`]}\n </span>\n </MenuItem>\n {this.props.values?.map(item => {\n let id: string;\n let _name: string;\n let icon: null | JSX.Element | undefined;\n if (typeof item === 'object') {\n id = item.value;\n _name = item.name;\n icon = item.icon;\n } else {\n id = item;\n _name = item;\n }\n return (\n <MenuItem\n sx={styles.headerCellSelectItem}\n key={id}\n value={id}\n >\n {icon || (this.hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </MenuItem>\n );\n })}\n </Select>\n {this.state.value.length ? (\n <Box\n component=\"div\"\n sx={styles.selectClearButton}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.setState({ value: [] }, () => this.props.onChange(this.props.name, undefined));\n }}\n >\n <IconClose />\n </IconButton>\n </Box>\n ) : null}\n </div>\n );\n }\n}\n\ninterface CustomFilterInputProps {\n name: 'name' | 'id';\n texts: Record<string, string>;\n initialValue: string | undefined;\n onChange: (name: 'name' | 'id', value: string | undefined) => void;\n t: (text: string) => string;\n styles?: React.CSSProperties;\n}\n\ninterface CustomFilterInputState {\n value: string;\n}\n\nexport class CustomFilterInput extends Component<CustomFilterInputProps, CustomFilterInputState> {\n private timer: ReturnType<typeof setTimeout> | null = null;\n constructor(props: CustomFilterInputProps) {\n super(props);\n this.state = {\n value: props.initialValue || '',\n };\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <FormControl\n sx={this.props.styles}\n key={this.props.name}\n title={this.props.t('ra_You can use * as wildcard')}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n id={this.props.name}\n placeholder={this.props.texts[`filter_${this.props.name}`]}\n value={this.state.value}\n onChange={event => {\n const selectedValues = event.target.value;\n this.setState({ value: selectedValues }, () => {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.timer = null;\n this.props.onChange(this.props.name, selectedValues);\n }, 400);\n });\n }}\n onBlur={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.props.onChange(this.props.name, this.state.value);\n }\n }}\n autoComplete=\"off\"\n />\n {this.state.value ? (\n <div\n style={{\n position: 'absolute',\n right: 0,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.setState({ value: '' }, () => this.props.onChange(this.props.name, undefined));\n }}\n >\n <IconClose />\n </IconButton>\n </div>\n ) : null}\n </FormControl>\n );\n }\n}\n\n// d=data, t=target, s=start, e=end, m=middle\nexport function binarySearch(list: string[], find: string, _start?: number, _end?: number): boolean {\n _start ||= 0;\n if (_end === undefined) {\n _end = list.length - 1;\n if (!_end) {\n return list[0] === find;\n }\n }\n const middle = Math.floor((_start + _end) / 2);\n if (find === list[middle]) {\n return true;\n }\n if (_end - 1 === _start) {\n return list[_start] === find || list[_end] === find;\n }\n if (find > list[middle]) {\n return binarySearch(list, find, middle, _end);\n }\n if (find < list[middle]) {\n return binarySearch(list, find, _start, middle);\n }\n return false;\n}\n\nexport function getName(name: ioBroker.StringOrTranslated, lang: ioBroker.Languages): string {\n if (typeof name === 'object') {\n if (!name) {\n return '';\n }\n return (name[lang] || name.en || '').toString();\n }\n\n return name ? name.toString() : '';\n}\n\nexport function getSelectIdIconFromObjects(\n objects: Record<string, ioBroker.Object>,\n id: string,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n // `admin` has prefix '.' and `web` has '../..'\n imagePrefix ||= '.'; // http://localhost:8081';\n let src: string | JSX.Element = '';\n const _id_ = `system.adapter.${id}`;\n const aIcon = id && objects[_id_]?.common?.icon;\n if (aIcon) {\n // if not BASE64\n if (!aIcon.startsWith('data:image/')) {\n if (aIcon.includes('.')) {\n const name = objects[_id_].common.name;\n if (typeof name === 'object') {\n src = `${imagePrefix}/adapter/${name[lang] || name.en}/${aIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${name}/${aIcon}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null; // '<i class=\"material-icons iob-list-icon\">' + objects[_id_].common.icon + '</i>';\n }\n } else if (aIcon.startsWith('data:image/svg')) {\n src = (\n <SVG\n className=\"iconOwn\"\n src={aIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = aIcon;\n }\n } else {\n const common = objects[id]?.common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (objects[id].type === 'instance' || objects[id].type === 'adapter') {\n if (typeof common.name === 'object') {\n src = `${imagePrefix}/adapter/${common.name[lang] || common.name.en}/${cIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n }\n } else if (id && id.startsWith('system.adapter.')) {\n instance = id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n } else {\n instance = id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null;\n }\n } else if (cIcon.startsWith('data:image/svg')) {\n // if base 64 image\n src = (\n <SVG\n className=\"iconOwn\"\n src={cIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = cIcon;\n }\n }\n }\n }\n\n return src || null;\n}\n\nexport function applyFilter(\n item: TreeItem,\n filters: ObjectBrowserFilter,\n lang: ioBroker.Languages,\n objects: Record<string, ioBroker.Object>,\n context?: {\n id?: string;\n idRx?: RegExp;\n name?: string;\n nameRx?: RegExp;\n type?: string[];\n custom?: string[];\n role?: string[];\n room?: string[];\n func?: string[];\n },\n counter?: { count: number },\n customFilter?: ObjectBrowserCustomFilter,\n selectedTypes?: string[],\n _depth?: number,\n): boolean {\n _depth ||= 0;\n let filteredOut = false;\n if (!context) {\n context = {};\n if (filters.id) {\n const id = filters.id.toLowerCase();\n if (id.includes('*')) {\n context.idRx = new RegExp(pattern2RegEx(filters.id), 'i');\n } else {\n context.id = id;\n }\n }\n if (filters.name) {\n const name = filters.name.toLowerCase();\n if (name.includes('*')) {\n context.nameRx = new RegExp(pattern2RegEx(name), 'i');\n } else {\n context.name = name;\n }\n }\n if (filters.type?.length) {\n context.type = filters.type.map(f => f.toLowerCase());\n }\n if (filters.custom?.length) {\n context.custom = filters.custom.map(c => c.toLowerCase());\n }\n if (filters.role?.length) {\n context.role = filters.role.map(r => r.toLowerCase());\n }\n if (filters.room?.length) {\n context.room = [];\n filters.room.forEach(room => {\n context!.room = context!.room!.concat((objects[room] as ioBroker.EnumObject)?.common?.members || []);\n });\n }\n if (filters.func?.length) {\n context.func = [];\n filters.func.forEach(func => {\n context!.func = context!.func!.concat((objects[func] as ioBroker.EnumObject)?.common?.members || []);\n });\n }\n }\n\n const data = item.data;\n\n if (data?.id) {\n const common: ioBroker.StateCommon = data.obj?.common as ioBroker.StateCommon;\n\n if (customFilter) {\n if (customFilter.type) {\n if (typeof customFilter.type === 'string') {\n if (!data.obj || customFilter.type !== data.obj.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.type)) {\n if (!data.obj || !customFilter.type.includes(data.obj.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.type) {\n if (!common?.type) {\n filteredOut = true;\n } else if (typeof customFilter.common.type === 'string') {\n if (customFilter.common.type !== common.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.type)) {\n if (!customFilter.common.type.includes(common.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.role) {\n if (!common?.role) {\n filteredOut = true;\n } else if (typeof customFilter.common.role === 'string') {\n if (common.role.startsWith(customFilter.common.role)) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.role)) {\n if (!customFilter.common.role.find(role => common.role.startsWith(role))) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && customFilter.common?.custom === '_' && common?.custom) {\n filteredOut = true;\n } else if (!filteredOut && customFilter.common?.custom && customFilter.common?.custom !== '_') {\n const filterOfCustom = customFilter.common.custom as string | string[] | boolean;\n if (!common?.custom) {\n filteredOut = true;\n } else if (filterOfCustom === '_dataSources') {\n // TODO: make it configurable\n if (\n !Object.keys(common.custom).find(\n id => id.startsWith('history.') || id.startsWith('sql.') || id.startsWith('influxdb.'),\n )\n ) {\n filteredOut = true;\n }\n } else if (Array.isArray(filterOfCustom)) {\n // here are ['influxdb.', 'telegram.']\n const customs = Object.keys(common.custom); // here are ['influxdb.0', 'telegram.2']\n if (filterOfCustom.find(cst => customs.find(id => id.startsWith(cst)))) {\n filteredOut = true;\n }\n } else if (\n filterOfCustom !== true &&\n !Object.keys(common.custom).find(id => id.startsWith(filterOfCustom as string))\n ) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && !filters.expertMode) {\n filteredOut =\n data.id === 'system' ||\n data.id === 'enum' ||\n // (data.obj && data.obj.type === 'meta') ||\n data.id.startsWith('system.') ||\n data.id.startsWith('enum.') ||\n data.id.startsWith('_design/') ||\n data.id.endsWith('.admin') ||\n !!common?.expert;\n }\n if (!filteredOut && context.id) {\n if (data.fID === undefined) {\n data.fID = data.id.toLowerCase();\n }\n filteredOut = !data.fID.includes(context.id);\n }\n if (!filteredOut && context.idRx) {\n filteredOut = !context.idRx.test(data.id);\n }\n if (!filteredOut && context.name) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !data.fName.includes(context.name);\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.nameRx) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !context.nameRx.test(data.fName);\n }\n }\n\n if (!filteredOut && filters.role?.length && common && context.role?.length) {\n filteredOut = !(typeof common.role === 'string' && context.role.find(role => common.role.startsWith(role)));\n }\n if (!filteredOut && context.room?.length) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.func?.length) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.type?.length) {\n filteredOut = !(data.obj?.type && context.type.includes(data.obj.type));\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj?.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom?.length) {\n if (common) {\n if (context.custom[0] === '_') {\n filteredOut = !!common.custom;\n } else if (common.custom) {\n filteredOut = !context.custom.find(custom => common.custom![custom]);\n } else {\n filteredOut = true;\n }\n } else {\n filteredOut = context.custom[0] !== '_';\n }\n }\n }\n\n data.visible = !filteredOut;\n\n data.hasVisibleChildren = false;\n if (item.children && _depth < 20) {\n item.children.forEach(_item => {\n const visible = applyFilter(\n _item,\n filters,\n lang,\n objects,\n context,\n counter,\n customFilter,\n selectedTypes,\n _depth + 1,\n );\n if (visible) {\n data.hasVisibleChildren = true;\n }\n });\n }\n\n // const visible = data.visible || data.hasVisibleChildren;\n data.sumVisibility = data.visible || data.hasVisibleChildren; // || data.hasVisibleParent;\n if (counter && data.sumVisibility) {\n counter.count++;\n }\n\n // show all children of visible object with opacity 0.5\n if (data.id && data.sumVisibility && item.children) {\n item.children.forEach(_item => (_item.data.hasVisibleParent = true));\n }\n\n return data.visible || data.hasVisibleChildren;\n}\n\nexport function getVisibleItems(\n item: TreeItem,\n type: ioBroker.ObjectType,\n objects: Record<string, ioBroker.Object>,\n _result?: string[],\n): string[] {\n _result ||= [];\n const data = item.data;\n if (data.sumVisibility) {\n if (data.id && objects[data.id] && (!type || objects[data.id].type === type)) {\n _result.push(data.id);\n }\n item.children?.forEach(_item => getVisibleItems(_item, type, objects, _result));\n }\n\n return _result;\n}\n\nfunction getSystemIcon(\n objects: Record<string, ioBroker.Object>,\n id: string,\n level: number,\n themeType: ThemeType,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n let icon;\n\n // system or design has special icons\n if (id === 'alias' || id === 'alias.0') {\n icon = (\n <IconLink\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_ALIAS(themeType) }}\n />\n );\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = (\n <IconData\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_USERDATA(themeType) }}\n />\n );\n } else if (id.startsWith('_design/') || id === 'system') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM(themeType) }}\n />\n );\n } else if (id === 'system.adapter') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM_ADAPTER(themeType) }}\n />\n );\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (objects[id] && objects[id].type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n } else if (level < 2) {\n // detect \"cloud.0\"\n if (objects[`system.adapter.${id}`]) {\n icon = getSelectIdIconFromObjects(objects, `system.adapter.${id}`, lang, imagePrefix);\n }\n }\n\n return icon || null;\n}\n\nexport function getObjectTooltip(data: TreeItemData, lang: ioBroker.Languages): string | null {\n if (data?.obj?.common?.desc) {\n return getName(data.obj.common.desc, lang) || null;\n }\n\n return null;\n}\n\nexport function getIdFieldTooltip(data: TreeItemData, lang: ioBroker.Languages): JSX.Element {\n const tooltip = getObjectTooltip(data, lang);\n if (tooltip?.startsWith('http')) {\n return (\n <Box\n component=\"a\"\n sx={styles.cellIdTooltipLink}\n href={tooltip}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {tooltip}\n </Box>\n );\n }\n return <span style={styles.cellIdTooltip}>{tooltip || data.id || ''}</span>;\n}\n\nexport function buildTree(\n objects: Record<string, ioBroker.Object>,\n options: {\n imagePrefix?: string;\n root?: string;\n lang: ioBroker.Languages;\n themeType: ThemeType;\n },\n): { root: TreeItem; info: TreeInfo } {\n const imagePrefix = options.imagePrefix || '.';\n\n // sort by a precomputed key ('.' sorts before all other chars) instead of running two replaces per comparison\n let ids = Object.keys(objects)\n .map(id => [id.replace(/\\./g, '!!!'), id] as [string, string])\n .sort((a, b) => (a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0))\n .map(entry => entry[1]);\n\n if (options.root) {\n ids = ids.filter(id => id === options.root || id.startsWith(`${options.root}.`));\n }\n\n // find empty nodes and create names for it\n let currentPathArr: string[] = [];\n let currentPath = '';\n let currentPathLen = 0;\n const root: TreeItem = {\n data: {\n name: '',\n id: '',\n },\n children: [],\n };\n\n const info: TreeInfo = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects,\n customs: ['_'],\n enums: [],\n hasSomeCustoms: false,\n aliasesMap: {},\n };\n\n let cRoot: TreeItem = root;\n\n // `info.ids` is not sorted for a binary search: a generated level follows the ID that created it, and the\n // sorting above ('.' as '!!!') is not the plain string order. A missed level was created a second time:\n // two nodes with the same ID (https://github.com/ioBroker/ioBroker.admin/issues/3693)\n const knownIds = new Set<string>();\n\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (!id) {\n continue;\n }\n const obj = objects[id];\n const parts = id.split('.');\n\n if (obj.type && !info.types.includes(obj.type)) {\n info.types.push(obj.type);\n }\n\n if (obj) {\n const common = obj.common;\n const role = common?.role;\n if (role && !info.roles.find(it => it.role === role)) {\n if (typeof role !== 'string') {\n console.warn(`Invalid role type \"${typeof role}\" in \"${obj._id}\"`);\n } else {\n info.roles.push({ role, type: common.type });\n }\n } else if (id.startsWith('enum.rooms.')) {\n info.roomEnums.push(id);\n info.enums.push(id);\n } else if (id.startsWith('enum.functions.')) {\n info.funcEnums.push(id);\n info.enums.push(id);\n } else if (obj.type === 'enum') {\n info.enums.push(id);\n } else if (obj.type === 'instance' && common && (common.supportCustoms || common.adminUI?.custom)) {\n info.hasSomeCustoms = true;\n info.customs.push(id.substring('system.adapter.'.length));\n }\n\n // Build a map of aliases\n if (id.startsWith('alias.') && obj.common.alias?.id) {\n if (typeof obj.common.alias.id === 'string') {\n const usedId = obj.common.alias.id;\n if (!info.aliasesMap[usedId]) {\n info.aliasesMap[usedId] = [id];\n } else if (!info.aliasesMap[usedId].includes(id)) {\n info.aliasesMap[usedId].push(id);\n }\n } else {\n const readId = obj.common.alias.id.read;\n if (readId) {\n if (!info.aliasesMap[readId]) {\n info.aliasesMap[readId] = [id];\n } else if (!info.aliasesMap[readId].includes(id)) {\n info.aliasesMap[readId].push(id);\n }\n }\n const writeId = obj.common.alias.id.write;\n if (writeId) {\n if (!info.aliasesMap[writeId]) {\n info.aliasesMap[writeId] = [id];\n } else if (!info.aliasesMap[writeId].includes(id)) {\n info.aliasesMap[writeId].push(id);\n }\n }\n }\n }\n }\n\n info.ids.push(id);\n knownIds.add(id);\n\n let repeat;\n\n // if next level\n do {\n repeat = false;\n\n // If the current level is still OK, and we can add ID to children\n if (!currentPath || id.startsWith(`${currentPath}.`)) {\n // if more than one level added\n if (parts.length - currentPathLen > 1) {\n let curPath = currentPath;\n // generate missing levels\n for (let k = currentPathLen; k < parts.length - 1; k++) {\n curPath += (curPath ? '.' : '') + parts[k];\n // level does not exist\n if (!knownIds.has(curPath)) {\n const _cRoot: TreeItem = {\n data: {\n name: parts[k],\n parent: cRoot,\n id: curPath,\n obj: objects[curPath],\n level: k,\n icon: getSystemIcon(\n objects,\n curPath,\n k,\n options.themeType,\n options.lang,\n imagePrefix,\n ),\n generated: true,\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n info.ids.push(curPath);\n knownIds.add(curPath);\n } else if (cRoot.children) {\n cRoot = cRoot.children.find(item => item.data.name === parts[k])!;\n if (!cRoot) {\n throw new Error('Cannot find root in children!');\n }\n }\n }\n }\n\n const _cRoot: TreeItem = {\n data: {\n name: parts[parts.length - 1],\n title: getName(obj?.common?.name, options.lang),\n obj,\n parent: cRoot,\n icon:\n getSelectIdIconFromObjects(objects, id, options.lang, imagePrefix) ||\n getSystemIcon(objects, id, 0, options.themeType, options.lang, imagePrefix),\n id,\n hasCustoms: !!(obj.common?.custom && Object.keys(obj.common.custom).length),\n level: parts.length - 1,\n generated: false,\n button:\n obj.type === 'state' &&\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('button') &&\n obj.common?.write !== false,\n switch:\n obj.type === 'state' &&\n obj.common?.type === 'boolean' &&\n obj.common?.write !== false &&\n obj.common?.read !== false,\n url:\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('url'),\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n\n currentPathLen = parts.length;\n currentPathArr = parts;\n currentPath = id;\n } else {\n let u = 0;\n\n while (currentPathArr[u] === parts[u]) {\n u++;\n }\n\n if (u > 0) {\n let move = currentPathArr.length;\n currentPathArr = currentPathArr.splice(0, u);\n currentPathLen = u;\n currentPath = currentPathArr.join('.');\n while (move > u) {\n if (cRoot.data.parent) {\n cRoot = cRoot.data.parent;\n } else {\n console.error(`Parent is null for ${id} ${currentPath} ${currentPathArr.join('.')}`);\n }\n move--;\n }\n } else {\n cRoot = root;\n currentPathArr = [];\n currentPath = '';\n currentPathLen = 0;\n }\n repeat = true;\n }\n } while (repeat);\n }\n\n info.roomEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop() || '';\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop() || '';\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.funcEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop() || '';\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop() || '';\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.roles.sort((a, b) => a.role.localeCompare(b.role));\n info.types.sort();\n\n return { info, root };\n}\n\nexport function findNode(\n root: TreeItem,\n id: string,\n _parts?: string[],\n _path?: string,\n _level?: number,\n): TreeItem | null {\n if (root.data.id === id) {\n return root;\n }\n if (!_parts) {\n _parts = id.split('.');\n _level = 0;\n _path = _parts[_level];\n }\n if (!root.children && root.data.id !== id) {\n return null;\n }\n let found;\n if (root.children) {\n for (let i = 0; i < root.children.length; i++) {\n const _id = root.children[i].data.id;\n if (_id === _path) {\n found = root.children[i];\n break;\n } else if (_id > (_path || '')) {\n break;\n }\n }\n }\n if (found) {\n _level ||= 0;\n return findNode(found, id, _parts, `${_path}.${_parts[_level + 1]}`, _level + 1);\n }\n\n return null;\n}\n\nexport function findRoomsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n rooms?: string[],\n): { rooms: string[]; per: boolean } {\n if (!id) {\n return { rooms: [], per: false };\n }\n rooms ||= [];\n for (const room of info.roomEnums) {\n const common = info.objects[room]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n\n if (common.members?.includes(id) && !rooms.includes(name)) {\n rooms.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = rooms.length;\n findRoomsForObject(info, id, lang, rooms);\n }\n\n return { rooms, per: !ownEnums }; // per is if the enums are from parent\n}\n\nexport function findEnumsForObjectAsIds(\n info: TreeInfo,\n id: string,\n enumName: 'roomEnums' | 'funcEnums',\n funcs?: string[],\n): string[] {\n if (!id) {\n return [];\n }\n funcs ||= [];\n for (let i = 0; i < info[enumName].length; i++) {\n const common = info.objects[info[enumName][i]]?.common;\n if (common?.members?.includes(id) && !funcs.includes(info[enumName][i])) {\n funcs.push(info[enumName][i]);\n }\n }\n funcs.sort();\n\n return funcs;\n}\n\nexport function findFunctionsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n funcs?: string[],\n): { funcs: string[]; pef: boolean } {\n if (!id) {\n return { funcs: [], pef: false };\n }\n funcs ||= [];\n for (let i = 0; i < info.funcEnums.length; i++) {\n const common = info.objects[info.funcEnums[i]]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n if (common.members?.includes(id) && !funcs.includes(name)) {\n funcs.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = funcs.length;\n findFunctionsForObject(info, id, lang, funcs);\n }\n\n return { funcs, pef: !ownEnums };\n}\n\n/*\nfunction quality2text(q) {\n if (!q) {\n return 'ok';\n }\n const custom = q & 0xFFFF0000;\n let text = '';\n if (q & 0x40) text += 'device';\n if (q & 0x80) text += 'sensor';\n if (q & 0x01) text += ' bad';\n if (q & 0x02) text += ' not connected';\n if (q & 0x04) text += ' error';\n\n return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';\n}\n*/\n\n/**\n * Format a state value for visualization\n */\nexport function formatValue(options: FormatValueOptions): {\n valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value isn't replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n };\n valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n /** no break */\n nbr?: boolean;\n }[]\n | undefined;\n fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n} {\n const { dateFormat, state, isFloatComma, texts, obj } = options;\n const states = Utils.getStates(obj);\n const isCommon = obj.common;\n let fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n\n let v: any =\n // @ts-expect-error deprecated from js-controller 6\n isCommon?.type === 'file'\n ? '[file]'\n : !state || state.val === null\n ? '(null)'\n : state.val === undefined\n ? '[undef]'\n : state.val;\n\n const type = typeof v;\n\n if (isCommon?.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.time|^date/)) {\n if (v && typeof v === 'string') {\n if (Utils.isStringInteger(v)) {\n // we assume a unix ts\n v = new Date(parseInt(v, 10)).toString();\n } else {\n // check if parsable by new date\n try {\n const parsedDate = new Date(v);\n\n if (Utils.isValidDate(parsedDate)) {\n v = parsedDate.toString();\n }\n } catch {\n // ignore\n }\n }\n } else {\n if (v > 946681200 && v < 946681200000) {\n // '2000-01-01T00:00:00' => 946681200000\n v *= 1_000; // maybe the time is in seconds (UNIX time)\n }\n // \"null\" and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above\n v = v ? new Date(v).toString() : v;\n }\n } else if (isCommon?.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.duration/)) {\n // Format duration values in HH:mm:ss format\n if (typeof v === 'number' && v >= 0) {\n const hours = Math.floor(v / 3600);\n const minutes = Math.floor((v % 3600) / 60);\n const seconds = Math.floor(v % 60);\n v = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n } else if (typeof v === 'string' && Utils.isStringInteger(v)) {\n const numValue = parseInt(v, 10);\n if (numValue >= 0) {\n const hours = Math.floor(numValue / 3600);\n const minutes = Math.floor((numValue % 3600) / 60);\n const seconds = Math.floor(numValue % 60);\n v = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n }\n }\n } else {\n if (type === 'number') {\n if (!Number.isInteger(v)) {\n v = Math.round(v * 100_000_000) / 100_000_000; // remove 4.00000000000000001\n if (isFloatComma) {\n v = v.toString().replace('.', ',');\n }\n }\n } else if (type === 'object') {\n v = JSON.stringify(v);\n } else if (type !== 'string') {\n v = v.toString();\n } else if (v.startsWith('data:image/')) {\n fileViewer = 'image';\n }\n\n if (typeof v !== 'string') {\n v = v.toString();\n }\n }\n\n const valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value not replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n } = { v: v as string };\n\n // try to replace number with \"common.states\"\n if (states && states[v] !== undefined) {\n if (v !== states[v]) {\n valText.s = v;\n v = states[v];\n valText.v = v;\n }\n }\n\n if (valText.v?.length > 40) {\n valText.c = valText.v;\n valText.v = `${valText.v.substring(0, 40)}...`;\n }\n\n if (isCommon?.unit) {\n valText.u = isCommon.unit;\n }\n\n let valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n nbr?: boolean;\n }[]\n | undefined;\n if (options.full) {\n if (typeof v === 'string' && v.length > 100) {\n valFull = [{ t: texts.value, v: `${v.substring(0, 100)}...` }];\n } else {\n valFull = [{ t: texts.value, v }];\n }\n\n if (state) {\n if (state.ack !== undefined && state.ack !== null) {\n valFull.push({ t: texts.ack, v: state.ack.toString() });\n }\n if (state.ts) {\n valFull.push({ t: texts.ts, v: state.ts ? Utils.formatDate(new Date(state.ts), dateFormat) : '' });\n }\n if (state.lc) {\n valFull.push({ t: texts.lc, v: state.lc ? Utils.formatDate(new Date(state.lc), dateFormat) : '' });\n }\n if (state.from) {\n let from = state.from.toString();\n if (from.startsWith('system.adapter.')) {\n from = from.substring(15);\n }\n valFull.push({ t: texts.from, v: from });\n }\n if (state.user) {\n let user = state.user.toString();\n if (user.startsWith('system.user.')) {\n user = user.substring(12);\n }\n valFull.push({ t: texts.user, v: user });\n }\n if (state.c) {\n valFull.push({ t: texts.c, v: state.c });\n }\n valFull.push({ t: texts.quality, v: Utils.quality2text(state.q || 0).join(', '), nbr: true });\n }\n }\n\n return {\n valText,\n valFull,\n fileViewer,\n };\n}\n\n/**\n * Get CSS style for given state value\n */\nexport function getValueStyle(options: GetValueStyleOptions): { color: string } {\n const { state /* , isExpertMode, isButton */ } = options;\n const color = state?.ack ? (state.q ? '#ffa500' : '') : options.nonAckColor || '#ff2222c9';\n\n // do not show the color of the button in non-expert mode\n // if (!isExpertMode && isButton) {\n // color = '';\n // }\n\n return { color };\n}\n\nexport function getCustomValue(obj: ioBroker.Object, it: AdapterColumn): string | number | boolean | null {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n let value;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n value = anyObj[p[0]][p[1]];\n } else if (p.length === 3) {\n value = anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' ? anyObj[p[0]][p[1]][p[2]] : null;\n } else if (p.length === 4) {\n value =\n anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' && anyObj[p[0]][p[1]][p[2]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]]\n : null;\n } else if (p.length === 5) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n : null;\n } else if (p.length === 6) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]]\n : null;\n }\n if (value === undefined || value === null) {\n return null;\n }\n return value;\n }\n }\n\n return null;\n}\n\nexport function setCustomValue(obj: ioBroker.Object, it: AdapterColumn, value: string | number | boolean): boolean {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n anyObj[p[0]][p[1]] = value;\n return true;\n }\n if (p.length === 3) {\n if (anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object') {\n anyObj[p[0]][p[1]][p[2]] = value;\n return true;\n }\n } else if (p.length === 4) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]] = value;\n return true;\n }\n } else if (p.length === 5) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] = value;\n return true;\n }\n } else if (p.length === 6) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = value;\n return true;\n }\n }\n }\n }\n return false;\n}\n\n/**\n * Check if it is a non-expert id\n *\n * @param id id to test\n */\nexport function isNonExpertId(id: string): boolean {\n return !!NON_EXPERT_NAMESPACES.find(saveNamespace => id.startsWith(saveNamespace));\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/gui-components",
3
- "version": "10.3.12",
3
+ "version": "10.3.14",
4
4
  "description": "Shared React components (React 19 / MUI 9) to develop ioBroker interfaces. Successor of @iobroker/adapter-react-v5.",
5
5
  "author": {
6
6
  "name": "bluefox",
@@ -61,10 +61,10 @@
61
61
  "@iobroker/js-controller-common": "^7.2.5",
62
62
  "@iobroker/js-controller-common-db": "^7.2.5",
63
63
  "@iobroker/socket-client": "^5.5.0",
64
- "@iobroker/type-detector": "^6.0.3",
64
+ "@iobroker/type-detector": "^6.2.0",
65
65
  "@iobroker/types": "^7.2.5",
66
- "@sentry/browser": "^11.8.0",
67
- "cronstrue": "^3.32.0",
66
+ "@sentry/browser": "^11.9.0",
67
+ "cronstrue": "^3.38.0",
68
68
  "file-selector": "^5.0.1",
69
69
  "react-colorful": "^5.8.1",
70
70
  "react-cropper": "^2.3.3",