@zwave-js/cc 15.0.0-beta.0 → 15.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/build/cjs/cc/AlarmSensorCC.d.ts +79 -161
  2. package/build/cjs/cc/AlarmSensorCC.js +12 -50
  3. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  4. package/build/cjs/cc/AssociationCC.d.ts +63 -199
  5. package/build/cjs/cc/AssociationCC.js +9 -22
  6. package/build/cjs/cc/AssociationCC.js.map +2 -2
  7. package/build/cjs/cc/AssociationGroupInfoCC.d.ts +66 -166
  8. package/build/cjs/cc/AssociationGroupInfoCC.js +11 -22
  9. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  10. package/build/cjs/cc/BarrierOperatorCC.d.ts +86 -294
  11. package/build/cjs/cc/BarrierOperatorCC.js +12 -44
  12. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  13. package/build/cjs/cc/BasicCC.d.ts +85 -331
  14. package/build/cjs/cc/BasicCC.js +15 -46
  15. package/build/cjs/cc/BasicCC.js.map +2 -2
  16. package/build/cjs/cc/BatteryCC.d.ts +237 -835
  17. package/build/cjs/cc/BatteryCC.js +7 -84
  18. package/build/cjs/cc/BatteryCC.js.map +2 -2
  19. package/build/cjs/cc/BinarySensorCC.d.ts +34 -99
  20. package/build/cjs/cc/BinarySensorCC.js +9 -29
  21. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  22. package/build/cjs/cc/BinarySwitchCC.d.ts +45 -197
  23. package/build/cjs/cc/BinarySwitchCC.js +6 -22
  24. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  25. package/build/cjs/cc/CentralSceneCC.d.ts +77 -296
  26. package/build/cjs/cc/CentralSceneCC.js +7 -30
  27. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  28. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +45 -160
  29. package/build/cjs/cc/ClimateControlScheduleCC.js +5 -24
  30. package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
  31. package/build/cjs/cc/ColorSwitchCC.d.ts +130 -457
  32. package/build/cjs/cc/ColorSwitchCC.js +23 -75
  33. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  34. package/build/cjs/cc/ConfigurationCC.d.ts +32 -100
  35. package/build/cjs/cc/ConfigurationCC.js +11 -31
  36. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  37. package/build/cjs/cc/DoorLockCC.d.ts +512 -1823
  38. package/build/cjs/cc/DoorLockCC.js +51 -156
  39. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  40. package/build/cjs/cc/DoorLockLoggingCC.d.ts +11 -63
  41. package/build/cjs/cc/DoorLockLoggingCC.js +4 -8
  42. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  43. package/build/cjs/cc/EnergyProductionCC.d.ts +14 -29
  44. package/build/cjs/cc/EnergyProductionCC.js +5 -17
  45. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  46. package/build/cjs/cc/EntryControlCC.d.ts +73 -324
  47. package/build/cjs/cc/EntryControlCC.js +9 -36
  48. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  49. package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
  50. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +5 -26
  51. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  52. package/build/cjs/cc/HumidityControlModeCC.d.ts +31 -131
  53. package/build/cjs/cc/HumidityControlModeCC.js +6 -15
  54. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  55. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +17 -65
  56. package/build/cjs/cc/HumidityControlOperatingStateCC.js +4 -12
  57. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  58. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +51 -128
  59. package/build/cjs/cc/HumidityControlSetpointCC.js +10 -28
  60. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  61. package/build/cjs/cc/IndicatorCC.d.ts +123 -365
  62. package/build/cjs/cc/IndicatorCC.js +15 -61
  63. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  64. package/build/cjs/cc/IrrigationCC.d.ts +826 -2317
  65. package/build/cjs/cc/IrrigationCC.js +29 -233
  66. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  67. package/build/cjs/cc/LanguageCC.d.ts +31 -133
  68. package/build/cjs/cc/LanguageCC.js +4 -15
  69. package/build/cjs/cc/LanguageCC.js.map +2 -2
  70. package/build/cjs/cc/LockCC.d.ts +14 -64
  71. package/build/cjs/cc/LockCC.js +4 -12
  72. package/build/cjs/cc/LockCC.js.map +2 -2
  73. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
  74. package/build/cjs/cc/ManufacturerSpecificCC.d.ts +77 -239
  75. package/build/cjs/cc/ManufacturerSpecificCC.js +5 -26
  76. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  77. package/build/cjs/cc/MeterCC.d.ts +119 -393
  78. package/build/cjs/cc/MeterCC.js +25 -69
  79. package/build/cjs/cc/MeterCC.js.map +2 -2
  80. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +66 -166
  81. package/build/cjs/cc/MultiChannelAssociationCC.js +10 -23
  82. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  83. package/build/cjs/cc/MultiChannelCC.d.ts +119 -499
  84. package/build/cjs/cc/MultiChannelCC.js +18 -46
  85. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  86. package/build/cjs/cc/MultilevelSensorCC.d.ts +46 -130
  87. package/build/cjs/cc/MultilevelSensorCC.js +12 -33
  88. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  89. package/build/cjs/cc/MultilevelSwitchCC.d.ts +160 -525
  90. package/build/cjs/cc/MultilevelSwitchCC.js +13 -107
  91. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  92. package/build/cjs/cc/NodeNamingCC.d.ts +33 -135
  93. package/build/cjs/cc/NodeNamingCC.js +5 -16
  94. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  95. package/build/cjs/cc/NotificationCC.d.ts +262 -702
  96. package/build/cjs/cc/NotificationCC.js +29 -112
  97. package/build/cjs/cc/NotificationCC.js.map +2 -2
  98. package/build/cjs/cc/ProtectionCC.d.ts +118 -524
  99. package/build/cjs/cc/ProtectionCC.js +15 -50
  100. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  101. package/build/cjs/cc/SceneActivationCC.d.ts +33 -132
  102. package/build/cjs/cc/SceneActivationCC.js +4 -17
  103. package/build/cjs/cc/SceneActivationCC.js.map +2 -2
  104. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +34 -61
  105. package/build/cjs/cc/SceneActuatorConfigurationCC.js +9 -21
  106. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
  107. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +34 -61
  108. package/build/cjs/cc/SceneControllerConfigurationCC.js +10 -22
  109. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  110. package/build/cjs/cc/ScheduleEntryLockCC.d.ts +95 -299
  111. package/build/cjs/cc/ScheduleEntryLockCC.js +13 -30
  112. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  113. package/build/cjs/cc/SoundSwitchCC.d.ts +72 -261
  114. package/build/cjs/cc/SoundSwitchCC.js +11 -43
  115. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  116. package/build/cjs/cc/SupervisionCC.d.ts +17 -33
  117. package/build/cjs/cc/SupervisionCC.js +4 -9
  118. package/build/cjs/cc/SupervisionCC.js.map +2 -2
  119. package/build/cjs/cc/ThermostatFanModeCC.d.ts +44 -195
  120. package/build/cjs/cc/ThermostatFanModeCC.js +8 -21
  121. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  122. package/build/cjs/cc/ThermostatFanStateCC.d.ts +17 -65
  123. package/build/cjs/cc/ThermostatFanStateCC.js +4 -12
  124. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  125. package/build/cjs/cc/ThermostatModeCC.d.ts +44 -195
  126. package/build/cjs/cc/ThermostatModeCC.js +8 -21
  127. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  128. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +17 -65
  129. package/build/cjs/cc/ThermostatOperatingStateCC.js +4 -12
  130. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  131. package/build/cjs/cc/ThermostatSetpointCC.d.ts +49 -129
  132. package/build/cjs/cc/ThermostatSetpointCC.js +10 -25
  133. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  134. package/build/cjs/cc/TimeParametersCC.d.ts +12 -63
  135. package/build/cjs/cc/TimeParametersCC.js +4 -11
  136. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  137. package/build/cjs/cc/UserCodeCC.d.ts +311 -1066
  138. package/build/cjs/cc/UserCodeCC.js +33 -98
  139. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  140. package/build/cjs/cc/VersionCC.d.ts +289 -1003
  141. package/build/cjs/cc/VersionCC.js +7 -98
  142. package/build/cjs/cc/VersionCC.js.map +2 -2
  143. package/build/cjs/cc/WakeUpCC.d.ts +49 -201
  144. package/build/cjs/cc/WakeUpCC.js +6 -26
  145. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  146. package/build/cjs/cc/WindowCoveringCC.d.ts +126 -220
  147. package/build/cjs/cc/WindowCoveringCC.js +16 -128
  148. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  149. package/build/cjs/cc/ZWavePlusCC.d.ts +69 -329
  150. package/build/cjs/cc/ZWavePlusCC.js +4 -25
  151. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  152. package/build/cjs/cc/_CCValues.generated.d.ts +15814 -0
  153. package/build/cjs/cc/_CCValues.generated.js +8723 -0
  154. package/build/cjs/cc/_CCValues.generated.js.map +7 -0
  155. package/build/cjs/lib/CCValueUtils.d.ts +14 -0
  156. package/build/cjs/lib/CCValueUtils.js +93 -0
  157. package/build/cjs/lib/CCValueUtils.js.map +7 -0
  158. package/build/cjs/lib/Values.d.ts +6 -105
  159. package/build/cjs/lib/Values.js +13 -107
  160. package/build/cjs/lib/Values.js.map +3 -3
  161. package/build/esm/cc/AlarmSensorCC.d.ts +79 -161
  162. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  163. package/build/esm/cc/AlarmSensorCC.js +2 -39
  164. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  165. package/build/esm/cc/AssociationCC.d.ts +63 -199
  166. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  167. package/build/esm/cc/AssociationCC.js +2 -14
  168. package/build/esm/cc/AssociationCC.js.map +1 -1
  169. package/build/esm/cc/AssociationGroupInfoCC.d.ts +66 -166
  170. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  171. package/build/esm/cc/AssociationGroupInfoCC.js +2 -13
  172. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  173. package/build/esm/cc/BarrierOperatorCC.d.ts +86 -294
  174. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  175. package/build/esm/cc/BarrierOperatorCC.js +2 -34
  176. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  177. package/build/esm/cc/BasicCC.d.ts +85 -331
  178. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  179. package/build/esm/cc/BasicCC.js +2 -32
  180. package/build/esm/cc/BasicCC.js.map +1 -1
  181. package/build/esm/cc/BatteryCC.d.ts +237 -835
  182. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  183. package/build/esm/cc/BatteryCC.js +2 -78
  184. package/build/esm/cc/BatteryCC.js.map +1 -1
  185. package/build/esm/cc/BinarySensorCC.d.ts +34 -99
  186. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  187. package/build/esm/cc/BinarySensorCC.js +2 -16
  188. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  189. package/build/esm/cc/BinarySwitchCC.d.ts +45 -197
  190. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  191. package/build/esm/cc/BinarySwitchCC.js +2 -17
  192. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  193. package/build/esm/cc/CentralSceneCC.d.ts +77 -296
  194. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  195. package/build/esm/cc/CentralSceneCC.js +2 -26
  196. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  197. package/build/esm/cc/ClimateControlScheduleCC.d.ts +45 -160
  198. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  199. package/build/esm/cc/ClimateControlScheduleCC.js +2 -23
  200. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  201. package/build/esm/cc/ColorSwitchCC.d.ts +130 -457
  202. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  203. package/build/esm/cc/ColorSwitchCC.js +2 -52
  204. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  205. package/build/esm/cc/ConfigurationCC.d.ts +32 -100
  206. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  207. package/build/esm/cc/ConfigurationCC.js +2 -15
  208. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  209. package/build/esm/cc/DoorLockCC.d.ts +512 -1823
  210. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  211. package/build/esm/cc/DoorLockCC.js +9 -127
  212. package/build/esm/cc/DoorLockCC.js.map +1 -1
  213. package/build/esm/cc/DoorLockLoggingCC.d.ts +11 -63
  214. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  215. package/build/esm/cc/DoorLockLoggingCC.js +2 -5
  216. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  217. package/build/esm/cc/EnergyProductionCC.d.ts +14 -29
  218. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  219. package/build/esm/cc/EnergyProductionCC.js +2 -13
  220. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  221. package/build/esm/cc/EntryControlCC.d.ts +73 -324
  222. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  223. package/build/esm/cc/EntryControlCC.js +2 -28
  224. package/build/esm/cc/EntryControlCC.js.map +1 -1
  225. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
  226. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  227. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -23
  228. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  229. package/build/esm/cc/HumidityControlModeCC.d.ts +31 -131
  230. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  231. package/build/esm/cc/HumidityControlModeCC.js +2 -10
  232. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  233. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +17 -65
  234. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  235. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -9
  236. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  237. package/build/esm/cc/HumidityControlSetpointCC.d.ts +51 -128
  238. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  239. package/build/esm/cc/HumidityControlSetpointCC.js +2 -19
  240. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  241. package/build/esm/cc/IndicatorCC.d.ts +123 -365
  242. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  243. package/build/esm/cc/IndicatorCC.js +2 -43
  244. package/build/esm/cc/IndicatorCC.js.map +1 -1
  245. package/build/esm/cc/IrrigationCC.d.ts +826 -2317
  246. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  247. package/build/esm/cc/IrrigationCC.js +3 -222
  248. package/build/esm/cc/IrrigationCC.js.map +1 -1
  249. package/build/esm/cc/LanguageCC.d.ts +31 -133
  250. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  251. package/build/esm/cc/LanguageCC.js +2 -12
  252. package/build/esm/cc/LanguageCC.js.map +1 -1
  253. package/build/esm/cc/LockCC.d.ts +14 -64
  254. package/build/esm/cc/LockCC.d.ts.map +1 -1
  255. package/build/esm/cc/LockCC.js +2 -9
  256. package/build/esm/cc/LockCC.js.map +1 -1
  257. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  258. package/build/esm/cc/ManufacturerProprietaryCC.js +0 -1
  259. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  260. package/build/esm/cc/ManufacturerSpecificCC.d.ts +77 -239
  261. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  262. package/build/esm/cc/ManufacturerSpecificCC.js +2 -24
  263. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  264. package/build/esm/cc/MeterCC.d.ts +119 -393
  265. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  266. package/build/esm/cc/MeterCC.js +3 -49
  267. package/build/esm/cc/MeterCC.js.map +1 -1
  268. package/build/esm/cc/MultiChannelAssociationCC.d.ts +66 -166
  269. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  270. package/build/esm/cc/MultiChannelAssociationCC.js +2 -14
  271. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  272. package/build/esm/cc/MultiChannelCC.d.ts +119 -499
  273. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  274. package/build/esm/cc/MultiChannelCC.js +2 -30
  275. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  276. package/build/esm/cc/MultilevelSensorCC.d.ts +46 -130
  277. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  278. package/build/esm/cc/MultilevelSensorCC.js +2 -22
  279. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  280. package/build/esm/cc/MultilevelSwitchCC.d.ts +160 -525
  281. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  282. package/build/esm/cc/MultilevelSwitchCC.js +5 -101
  283. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  284. package/build/esm/cc/NodeNamingCC.d.ts +33 -135
  285. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  286. package/build/esm/cc/NodeNamingCC.js +2 -12
  287. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  288. package/build/esm/cc/NotificationCC.d.ts +262 -702
  289. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  290. package/build/esm/cc/NotificationCC.js +3 -85
  291. package/build/esm/cc/NotificationCC.js.map +1 -1
  292. package/build/esm/cc/ProtectionCC.d.ts +118 -524
  293. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  294. package/build/esm/cc/ProtectionCC.js +2 -36
  295. package/build/esm/cc/ProtectionCC.js.map +1 -1
  296. package/build/esm/cc/SceneActivationCC.d.ts +33 -132
  297. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  298. package/build/esm/cc/SceneActivationCC.js +2 -14
  299. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  300. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +34 -61
  301. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  302. package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -14
  303. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  304. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +34 -61
  305. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  306. package/build/esm/cc/SceneControllerConfigurationCC.js +2 -14
  307. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  308. package/build/esm/cc/ScheduleEntryLockCC.d.ts +95 -299
  309. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  310. package/build/esm/cc/ScheduleEntryLockCC.js +2 -17
  311. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  312. package/build/esm/cc/SoundSwitchCC.d.ts +72 -261
  313. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  314. package/build/esm/cc/SoundSwitchCC.js +2 -33
  315. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  316. package/build/esm/cc/SupervisionCC.d.ts +17 -33
  317. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  318. package/build/esm/cc/SupervisionCC.js +2 -7
  319. package/build/esm/cc/SupervisionCC.js.map +1 -1
  320. package/build/esm/cc/ThermostatFanModeCC.d.ts +44 -195
  321. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  322. package/build/esm/cc/ThermostatFanModeCC.js +2 -14
  323. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  324. package/build/esm/cc/ThermostatFanStateCC.d.ts +17 -65
  325. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  326. package/build/esm/cc/ThermostatFanStateCC.js +2 -9
  327. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  328. package/build/esm/cc/ThermostatModeCC.d.ts +44 -195
  329. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  330. package/build/esm/cc/ThermostatModeCC.js +2 -14
  331. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  332. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +17 -65
  333. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  334. package/build/esm/cc/ThermostatOperatingStateCC.js +2 -9
  335. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  336. package/build/esm/cc/ThermostatSetpointCC.d.ts +49 -129
  337. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  338. package/build/esm/cc/ThermostatSetpointCC.js +2 -16
  339. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  340. package/build/esm/cc/TimeParametersCC.d.ts +12 -63
  341. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  342. package/build/esm/cc/TimeParametersCC.js +2 -8
  343. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  344. package/build/esm/cc/UserCodeCC.d.ts +311 -1066
  345. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  346. package/build/esm/cc/UserCodeCC.js +2 -60
  347. package/build/esm/cc/UserCodeCC.js.map +1 -1
  348. package/build/esm/cc/VersionCC.d.ts +289 -1003
  349. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  350. package/build/esm/cc/VersionCC.js +2 -92
  351. package/build/esm/cc/VersionCC.js.map +1 -1
  352. package/build/esm/cc/WakeUpCC.d.ts +49 -201
  353. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  354. package/build/esm/cc/WakeUpCC.js +2 -21
  355. package/build/esm/cc/WakeUpCC.js.map +1 -1
  356. package/build/esm/cc/WindowCoveringCC.d.ts +126 -220
  357. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  358. package/build/esm/cc/WindowCoveringCC.js +3 -103
  359. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  360. package/build/esm/cc/ZWavePlusCC.d.ts +69 -329
  361. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  362. package/build/esm/cc/ZWavePlusCC.js +2 -25
  363. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  364. package/build/esm/cc/_CCValues.generated.d.ts +15814 -0
  365. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -0
  366. package/build/esm/cc/_CCValues.generated.js +9187 -0
  367. package/build/esm/cc/_CCValues.generated.js.map +1 -0
  368. package/build/esm/lib/CCValueUtils.d.ts +14 -0
  369. package/build/esm/lib/CCValueUtils.d.ts.map +1 -0
  370. package/build/esm/lib/CCValueUtils.js +62 -0
  371. package/build/esm/lib/CCValueUtils.js.map +1 -0
  372. package/build/esm/lib/Values.d.ts +6 -105
  373. package/build/esm/lib/Values.d.ts.map +1 -1
  374. package/build/esm/lib/Values.js +7 -104
  375. package/build/esm/lib/Values.js.map +1 -1
  376. package/package.json +9 -7
@@ -7,247 +7,111 @@ import { PhysicalCCAPI } from "../lib/API.js";
7
7
  import { type CCRaw, CommandClass, type InterviewContext, type RefreshValuesContext } from "../lib/CommandClass.js";
8
8
  import { type AssociationAddress, AssociationCommand } from "../lib/_Types.js";
9
9
  export declare const AssociationCCValues: Readonly<{
10
- nodeIds: ((groupId: number) => {
11
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
12
- readonly type: "any";
13
- readonly readable: true;
14
- readonly writeable: true;
15
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
16
- readonly type: "any";
17
- readonly readable: true;
18
- readonly writeable: true;
19
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
20
- readonly type: "any";
21
- readonly readable: true;
22
- readonly writeable: true;
23
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
24
- readonly type: "any";
25
- readonly readable: true;
26
- readonly writeable: true;
27
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
28
- readonly type: "any";
29
- readonly readable: true;
30
- readonly writeable: true;
31
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
32
- readonly type: "any";
33
- readonly readable: true;
34
- readonly writeable: true;
35
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
36
- readonly id: ValueIDBase;
37
- readonly endpoint: (endpoint?: number | undefined) => {
10
+ hasLifeline: {
11
+ id: {
12
+ readonly commandClass: CommandClasses.Association;
13
+ readonly property: "hasLifeline";
14
+ };
15
+ endpoint: (endpoint?: number) => {
38
16
  readonly commandClass: CommandClasses.Association;
39
17
  readonly endpoint: number;
40
- readonly property: "nodeIds";
41
- readonly propertyKey: number;
18
+ readonly property: "hasLifeline";
42
19
  };
43
- }) & {
44
20
  is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
45
- readonly options: {
46
- readonly stateful: true;
47
- readonly secret: false;
48
- readonly minVersion: 1;
49
- readonly supportsEndpoints: true;
50
- readonly autoCreate: true;
51
- readonly internal: true;
52
- };
53
- };
54
- maxNodes: ((groupId: number) => {
55
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
56
- readonly type: "any";
57
- readonly readable: true;
58
- readonly writeable: true;
59
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
60
- readonly type: "any";
61
- readonly readable: true;
62
- readonly writeable: true;
63
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
64
- readonly type: "any";
65
- readonly readable: true;
66
- readonly writeable: true;
67
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
68
- readonly type: "any";
69
- readonly readable: true;
70
- readonly writeable: true;
71
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
21
+ readonly meta: Readonly<{
72
22
  readonly type: "any";
73
23
  readonly readable: true;
74
24
  readonly writeable: true;
75
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
76
- readonly type: "any";
77
- readonly readable: true;
78
- readonly writeable: true;
79
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
80
- readonly id: ValueIDBase;
81
- readonly endpoint: (endpoint?: number | undefined) => {
82
- readonly commandClass: CommandClasses.Association;
83
- readonly endpoint: number;
84
- readonly property: "maxNodes";
85
- readonly propertyKey: number;
86
- };
87
- }) & {
88
- is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
89
- readonly options: {
90
- readonly stateful: true;
91
- readonly secret: false;
25
+ }>;
26
+ options: {
27
+ readonly internal: true;
92
28
  readonly minVersion: 1;
29
+ readonly secret: false;
30
+ readonly stateful: true;
93
31
  readonly supportsEndpoints: true;
94
32
  readonly autoCreate: true;
95
- readonly internal: true;
96
33
  };
97
34
  };
98
35
  groupCount: {
99
- readonly id: ValueIDBase;
100
- readonly endpoint: (endpoint?: number | undefined) => {
36
+ id: {
37
+ readonly commandClass: CommandClasses.Association;
38
+ readonly property: "groupCount";
39
+ };
40
+ endpoint: (endpoint?: number) => {
101
41
  readonly commandClass: CommandClasses.Association;
102
42
  readonly endpoint: number;
103
43
  readonly property: "groupCount";
104
44
  };
105
- readonly is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
106
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
107
- readonly type: "any";
108
- readonly readable: true;
109
- readonly writeable: true;
110
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
111
- readonly type: "any";
112
- readonly readable: true;
113
- readonly writeable: true;
114
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
115
- readonly type: "any";
116
- readonly readable: true;
117
- readonly writeable: true;
118
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
119
- readonly type: "any";
120
- readonly readable: true;
121
- readonly writeable: true;
122
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
123
- readonly type: "any";
124
- readonly readable: true;
125
- readonly writeable: true;
126
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
45
+ is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
46
+ readonly meta: Readonly<{
127
47
  readonly type: "any";
128
48
  readonly readable: true;
129
49
  readonly writeable: true;
130
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
131
- readonly options: Readonly<(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
132
- readonly internal: false;
133
- readonly minVersion: 1;
134
- readonly secret: false;
135
- readonly stateful: true;
136
- readonly supportsEndpoints: true;
137
- readonly autoCreate: true;
138
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
139
- readonly internal: false;
140
- readonly minVersion: 1;
141
- readonly secret: false;
142
- readonly stateful: true;
143
- readonly supportsEndpoints: true;
144
- readonly autoCreate: true;
145
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
146
- readonly internal: false;
147
- readonly minVersion: 1;
148
- readonly secret: false;
149
- readonly stateful: true;
150
- readonly supportsEndpoints: true;
151
- readonly autoCreate: true;
152
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
153
- readonly internal: false;
154
- readonly minVersion: 1;
155
- readonly secret: false;
156
- readonly stateful: true;
157
- readonly supportsEndpoints: true;
158
- readonly autoCreate: true;
159
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]] ? never : K]: (import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
160
- readonly internal: false;
161
- readonly minVersion: 1;
162
- readonly secret: false;
163
- readonly stateful: true;
164
- readonly supportsEndpoints: true;
165
- readonly autoCreate: true;
166
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
167
- readonly internal: false;
50
+ }>;
51
+ options: {
52
+ readonly internal: true;
168
53
  readonly minVersion: 1;
169
54
  readonly secret: false;
170
55
  readonly stateful: true;
171
56
  readonly supportsEndpoints: true;
172
57
  readonly autoCreate: true;
173
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]; } : never>;
58
+ };
174
59
  };
175
- hasLifeline: {
176
- readonly id: ValueIDBase;
177
- readonly endpoint: (endpoint?: number | undefined) => {
60
+ maxNodes: ((groupId: number) => {
61
+ id: {
62
+ readonly commandClass: CommandClasses.Association;
63
+ readonly property: "maxNodes";
64
+ readonly propertyKey: number;
65
+ };
66
+ endpoint: (endpoint?: number) => {
178
67
  readonly commandClass: CommandClasses.Association;
179
68
  readonly endpoint: number;
180
- readonly property: "hasLifeline";
69
+ readonly property: "maxNodes";
70
+ readonly propertyKey: number;
181
71
  };
182
- readonly is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
183
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
184
- readonly type: "any";
185
- readonly readable: true;
186
- readonly writeable: true;
187
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
188
- readonly type: "any";
189
- readonly readable: true;
190
- readonly writeable: true;
191
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
192
- readonly type: "any";
193
- readonly readable: true;
194
- readonly writeable: true;
195
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
196
- readonly type: "any";
197
- readonly readable: true;
198
- readonly writeable: true;
199
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
200
- readonly type: "any";
201
- readonly readable: true;
202
- readonly writeable: true;
203
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
72
+ readonly meta: Readonly<{
204
73
  readonly type: "any";
205
74
  readonly readable: true;
206
75
  readonly writeable: true;
207
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
208
- readonly options: Readonly<(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
209
- readonly internal: false;
210
- readonly minVersion: 1;
211
- readonly secret: false;
212
- readonly stateful: true;
213
- readonly supportsEndpoints: true;
214
- readonly autoCreate: true;
215
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
216
- readonly internal: false;
217
- readonly minVersion: 1;
218
- readonly secret: false;
219
- readonly stateful: true;
220
- readonly supportsEndpoints: true;
221
- readonly autoCreate: true;
222
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
223
- readonly internal: false;
224
- readonly minVersion: 1;
225
- readonly secret: false;
226
- readonly stateful: true;
227
- readonly supportsEndpoints: true;
228
- readonly autoCreate: true;
229
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
230
- readonly internal: false;
231
- readonly minVersion: 1;
232
- readonly secret: false;
233
- readonly stateful: true;
234
- readonly supportsEndpoints: true;
235
- readonly autoCreate: true;
236
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]] ? never : K]: (import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
237
- readonly internal: false;
76
+ }>;
77
+ }) & {
78
+ is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
79
+ options: {
80
+ readonly internal: true;
238
81
  readonly minVersion: 1;
239
82
  readonly secret: false;
240
83
  readonly stateful: true;
241
84
  readonly supportsEndpoints: true;
242
85
  readonly autoCreate: true;
243
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
244
- readonly internal: false;
86
+ };
87
+ };
88
+ nodeIds: ((groupId: number) => {
89
+ id: {
90
+ readonly commandClass: CommandClasses.Association;
91
+ readonly property: "nodeIds";
92
+ readonly propertyKey: number;
93
+ };
94
+ endpoint: (endpoint?: number) => {
95
+ readonly commandClass: CommandClasses.Association;
96
+ readonly endpoint: number;
97
+ readonly property: "nodeIds";
98
+ readonly propertyKey: number;
99
+ };
100
+ readonly meta: Readonly<{
101
+ readonly type: "any";
102
+ readonly readable: true;
103
+ readonly writeable: true;
104
+ }>;
105
+ }) & {
106
+ is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
107
+ options: {
108
+ readonly internal: true;
245
109
  readonly minVersion: 1;
246
110
  readonly secret: false;
247
111
  readonly stateful: true;
248
112
  readonly supportsEndpoints: true;
249
113
  readonly autoCreate: true;
250
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]; } : never>;
114
+ };
251
115
  };
252
116
  }>;
253
117
  export declare class AssociationCCAPI extends PhysicalCCAPI {
@@ -39,7 +39,7 @@ __export(AssociationCC_exports, {
39
39
  AssociationCCSpecificGroupReport: () => AssociationCCSpecificGroupReport,
40
40
  AssociationCCSupportedGroupingsGet: () => AssociationCCSupportedGroupingsGet,
41
41
  AssociationCCSupportedGroupingsReport: () => AssociationCCSupportedGroupingsReport,
42
- AssociationCCValues: () => AssociationCCValues
42
+ AssociationCCValues: () => import_CCValues_generated.AssociationCCValues
43
43
  });
44
44
  module.exports = __toCommonJS(AssociationCC_exports);
45
45
  var __validateArgs = __toESM(require("./AssociationCC._validateArgs.js"), 1);
@@ -52,6 +52,7 @@ var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
52
52
  var import_Values = require("../lib/Values.js");
53
53
  var import_Types = require("../lib/_Types.js");
54
54
  var ccUtils = __toESM(require("../lib/utils.js"), 1);
55
+ var import_CCValues_generated = require("./_CCValues.generated.js");
55
56
  var __runInitializers = function(thisArg, initializers, value) {
56
57
  var useValue = arguments.length > 2;
57
58
  for (var i = 0; i < initializers.length; i++) {
@@ -93,20 +94,6 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
93
94
  done = true;
94
95
  };
95
96
  const { validateArgs_AssociationCCAPI_reportGroupCount, validateArgs_AssociationCCAPI_getGroup, validateArgs_AssociationCCAPI_sendReport, validateArgs_AssociationCCAPI_addNodeIds, validateArgs_AssociationCCAPI_removeNodeIds, validateArgs_AssociationCCAPI_removeNodeIdsFromAllGroups, validateArgs_AssociationCCAPI_getSpecificGroup, validateArgs_AssociationCCAPI_reportSpecificGroup } = __validateArgs;
96
- const AssociationCCValues = Object.freeze({
97
- ...import_Values.V.defineStaticCCValues(import_safe.CommandClasses.Association, {
98
- /** Whether the node has a lifeline association */
99
- ...import_Values.V.staticProperty("hasLifeline", void 0, { internal: true }),
100
- /** How many association groups the node has */
101
- ...import_Values.V.staticProperty("groupCount", void 0, { internal: true })
102
- }),
103
- ...import_Values.V.defineDynamicCCValues(import_safe.CommandClasses.Association, {
104
- /** The maximum number of nodes in an association group */
105
- ...import_Values.V.dynamicPropertyAndKeyWithName("maxNodes", "maxNodes", (groupId) => groupId, ({ property, propertyKey }) => property === "maxNodes" && typeof propertyKey === "number", void 0, { internal: true }),
106
- /** The node IDs currently belonging to an association group */
107
- ...import_Values.V.dynamicPropertyAndKeyWithName("nodeIds", "nodeIds", (groupId) => groupId, ({ property, propertyKey }) => property === "nodeIds" && typeof propertyKey === "number", void 0, { internal: true })
108
- })
109
- });
110
97
  let AssociationCCAPI = (() => {
111
98
  let _classDecorators = [(0, import_CommandClassDecorators.API)(import_safe.CommandClasses.Association)];
112
99
  let _classDescriptor;
@@ -257,7 +244,7 @@ let AssociationCCAPI = (() => {
257
244
  if (this.version >= 2) {
258
245
  return this.removeNodeIds({ nodeIds, groupId: 0 });
259
246
  } else {
260
- const groupCount = this.tryGetValueDB()?.getValue(AssociationCCValues.groupCount.endpoint(this.endpoint.index)) ?? 0;
247
+ const groupCount = this.tryGetValueDB()?.getValue(import_CCValues_generated.AssociationCCValues.groupCount.endpoint(this.endpoint.index)) ?? 0;
261
248
  for (let groupId = 1; groupId <= groupCount; groupId++) {
262
249
  await this.removeNodeIds({ nodeIds, groupId });
263
250
  }
@@ -295,7 +282,7 @@ let AssociationCCAPI = (() => {
295
282
  return AssociationCCAPI2 = _classThis;
296
283
  })();
297
284
  let AssociationCC = (() => {
298
- let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses.Association), (0, import_CommandClassDecorators.implementedVersion)(4), (0, import_CommandClassDecorators.ccValues)(AssociationCCValues)];
285
+ let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses.Association), (0, import_CommandClassDecorators.implementedVersion)(4), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.AssociationCCValues)];
299
286
  let _classDescriptor;
300
287
  let _classExtraInitializers = [];
301
288
  let _classThis;
@@ -327,14 +314,14 @@ let AssociationCC = (() => {
327
314
  * This only works AFTER the interview process
328
315
  */
329
316
  static getGroupCountCached(ctx, endpoint) {
330
- return ctx.getValueDB(endpoint.nodeId).getValue(AssociationCCValues.groupCount.endpoint(endpoint.index)) || 0;
317
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.AssociationCCValues.groupCount.endpoint(endpoint.index)) || 0;
331
318
  }
332
319
  /**
333
320
  * Returns the number of nodes an association group supports.
334
321
  * This only works AFTER the interview process
335
322
  */
336
323
  static getMaxNodesCached(ctx, endpoint, groupId) {
337
- return ctx.getValueDB(endpoint.nodeId).getValue(AssociationCCValues.maxNodes(groupId).endpoint(endpoint.index)) ?? ctx.getDeviceConfig?.(endpoint.nodeId)?.getAssociationConfigForEndpoint(endpoint.index, groupId)?.maxNodes ?? 0;
324
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.AssociationCCValues.maxNodes(groupId).endpoint(endpoint.index)) ?? ctx.getDeviceConfig?.(endpoint.nodeId)?.getAssociationConfigForEndpoint(endpoint.index, groupId)?.maxNodes ?? 0;
338
325
  }
339
326
  /**
340
327
  * Returns all the destinations of all association groups reported by the node/endpoint.
@@ -345,7 +332,7 @@ let AssociationCC = (() => {
345
332
  const groupCount = this.getGroupCountCached(ctx, endpoint);
346
333
  const valueDB = ctx.getValueDB(endpoint.nodeId);
347
334
  for (let i = 1; i <= groupCount; i++) {
348
- const nodes = valueDB.getValue(AssociationCCValues.nodeIds(i).endpoint(endpoint.index)) ?? [];
335
+ const nodes = valueDB.getValue(import_CCValues_generated.AssociationCCValues.nodeIds(i).endpoint(endpoint.index)) ?? [];
349
336
  ret.set(
350
337
  i,
351
338
  // Filter out duplicates
@@ -548,7 +535,7 @@ let AssociationCCRemove = (() => {
548
535
  return AssociationCCRemove2 = _classThis;
549
536
  })();
550
537
  let AssociationCCReport = (() => {
551
- let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("maxNodes", AssociationCCValues.maxNodes, (self) => [self.groupId]), (0, import_CommandClassDecorators.ccValueProperty)("nodeIds", AssociationCCValues.nodeIds, (self) => [self.groupId])];
538
+ let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationCommand.Report), (0, import_CommandClassDecorators.ccValueProperty)("maxNodes", import_CCValues_generated.AssociationCCValues.maxNodes, (self) => [self.groupId]), (0, import_CommandClassDecorators.ccValueProperty)("nodeIds", import_CCValues_generated.AssociationCCValues.nodeIds, (self) => [self.groupId])];
552
539
  let _classDescriptor;
553
540
  let _classExtraInitializers = [];
554
541
  let _classThis;
@@ -675,7 +662,7 @@ let AssociationCCGet = (() => {
675
662
  return AssociationCCGet2 = _classThis;
676
663
  })();
677
664
  let AssociationCCSupportedGroupingsReport = (() => {
678
- let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationCommand.SupportedGroupingsReport), (0, import_CommandClassDecorators.ccValueProperty)("groupCount", AssociationCCValues.groupCount)];
665
+ let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationCommand.SupportedGroupingsReport), (0, import_CommandClassDecorators.ccValueProperty)("groupCount", import_CCValues_generated.AssociationCCValues.groupCount)];
679
666
  let _classDescriptor;
680
667
  let _classExtraInitializers = [];
681
668
  let _classThis;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/AssociationCC.ts"],
4
- "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport { type GetDeviceConfig } from \"@zwave-js/config\";\nimport type {\n\tEndpointId,\n\tGetValueDB,\n\tMaybeNotKnown,\n\tMessageRecord,\n\tSupervisionResult,\n\tWithAddress,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\tMAX_NODES,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { distinct } from \"alcalzone-shared/arrays\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type AssociationAddress, AssociationCommand } from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\n\nexport const AssociationCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses.Association, {\n\t\t/** Whether the node has a lifeline association */\n\t\t...V.staticProperty(\"hasLifeline\", undefined, { internal: true }),\n\t\t/** How many association groups the node has */\n\t\t...V.staticProperty(\"groupCount\", undefined, { internal: true }),\n\t}),\n\n\t...V.defineDynamicCCValues(CommandClasses.Association, {\n\t\t/** The maximum number of nodes in an association group */\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"maxNodes\",\n\t\t\t\"maxNodes\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"maxNodes\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t/** The node IDs currently belonging to an association group */\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"nodeIds\",\n\t\t\t\"nodeIds\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"nodeIds\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t}),\n});\n\n// @noSetValueAPI\n\n@API(CommandClasses.Association)\nexport class AssociationCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(cmd: AssociationCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase AssociationCommand.Get:\n\t\t\tcase AssociationCommand.Set:\n\t\t\tcase AssociationCommand.Report:\n\t\t\tcase AssociationCommand.Remove:\n\t\t\tcase AssociationCommand.SupportedGroupingsGet:\n\t\t\tcase AssociationCommand.SupportedGroupingsReport:\n\t\t\t\treturn true;\n\t\t\tcase AssociationCommand.SpecificGroupGet:\n\t\t\tcase AssociationCommand.SpecificGroupReport:\n\t\t\t\treturn this.version >= 2;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Returns the number of association groups a node supports.\n\t * Association groups are consecutive, starting at 1.\n\t */\n\tpublic async getGroupCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSupportedGroupingsReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.groupCount;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupCount(groupCount: number): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupCount,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Returns information about an association group.\n\t */\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroup(groupId: number) {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Get);\n\n\t\tconst cc = new AssociationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<AssociationCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn {\n\t\t\t\tmaxNodes: response.maxNodes,\n\t\t\t\tnodeIds: response.nodeIds,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\toptions: AssociationCCReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Report,\n\t\t);\n\n\t\tconst cc = new AssociationCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Adds new nodes to an association group\n\t */\n\t@validateArgs()\n\tpublic async addNodeIds(\n\t\tgroupId: number,\n\t\t...nodeIds: number[]\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Set);\n\n\t\tconst cc = new AssociationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from an association group\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIds(\n\t\toptions: AssociationCCRemoveOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\t// Validate options\n\t\tif (!options.groupId) {\n\t\t\tif (this.version === 1) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`Node ${this.endpoint.nodeId} only supports AssociationCC V1 which requires the group Id to be set`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (options.groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new AssociationCCRemove({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from all association groups\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIdsFromAllGroups(\n\t\tnodeIds: number[],\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\tif (this.version >= 2) {\n\t\t\t// The node supports bulk removal\n\t\t\treturn this.removeNodeIds({ nodeIds, groupId: 0 });\n\t\t} else {\n\t\t\t// We have to remove the node manually from all groups\n\t\t\tconst groupCount = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(\n\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t),\n\t\t\t) ?? 0;\n\t\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\t\t// TODO: evaluate intermediate supervision results\n\t\t\t\tawait this.removeNodeIds({ nodeIds, groupId });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Request the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async getSpecificGroup(): Promise<number | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSpecificGroupReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.group;\n\t}\n\n\t/**\n\t * Report the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async reportSpecificGroup(\n\t\tgroup: number,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroup,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses.Association)\n@implementedVersion(4)\n@ccValues(AssociationCCValues)\nexport class AssociationCC extends CommandClass {\n\tdeclare ccCommand: AssociationCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// AssociationCC must be interviewed after Z-Wave+ if that is supported\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses[\"Z-Wave Plus Info\"],\n\t\t\t// We need information about endpoints to correctly configure the lifeline associations\n\t\t\tCommandClasses[\"Multi Channel\"],\n\t\t];\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(endpoint.index),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of nodes an association group supports.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getMaxNodesCached(\n\t\tctx: GetValueDB & GetDeviceConfig,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): number {\n\t\treturn (\n\t\t\tctx\n\t\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t\t.getValue(\n\t\t\t\t\tAssociationCCValues.maxNodes(groupId).endpoint(\n\t\t\t\t\t\tendpoint.index,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t// If the information is not available, fall back to the configuration file if possible\n\t\t\t\t// This can happen on some legacy devices which have \"hidden\" association groups\n\t\t\t\t?? ctx\n\t\t\t\t\t.getDeviceConfig?.(endpoint.nodeId)\n\t\t\t\t\t?.getAssociationConfigForEndpoint(endpoint.index, groupId)\n\t\t\t\t\t?.maxNodes\n\t\t\t\t?? 0\n\t\t);\n\t}\n\n\t/**\n\t * Returns all the destinations of all association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getAllDestinationsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): ReadonlyMap<number, readonly AssociationAddress[]> {\n\t\tconst ret = new Map<number, AssociationAddress[]>();\n\t\tconst groupCount = this.getGroupCountCached(ctx, endpoint);\n\t\tconst valueDB = ctx.getValueDB(endpoint.nodeId);\n\t\tfor (let i = 1; i <= groupCount; i++) {\n\t\t\t// Add all root destinations\n\t\t\tconst nodes = valueDB.getValue<number[]>(\n\t\t\t\tAssociationCCValues.nodeIds(i).endpoint(endpoint.index),\n\t\t\t) ?? [];\n\n\t\t\tret.set(\n\t\t\t\ti,\n\t\t\t\t// Filter out duplicates\n\t\t\t\tdistinct(nodes).map((nodeId) => ({ nodeId })),\n\t\t\t);\n\t\t}\n\t\treturn ret;\n\t}\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Association,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// Even if Multi Channel Association is supported, we still need to query the number of\n\t\t// normal association groups since some devices report more association groups than\n\t\t// multi channel association groups\n\n\t\t// Find out how many groups are supported\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying number of association groups...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst groupCount = await api.getGroupCount();\n\t\tif (groupCount != undefined) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `supports ${groupCount} association groups`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t} else {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t\"Querying association groups timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Query each association group for its members\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Skip the remaining Association CC interview in favor of Multi Channel Association if possible\n\t\tif (endpoint.supportsCC(CommandClasses[\"Multi Channel Association\"])) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`${this.constructor.name}: delaying configuration of lifeline associations until after Multi Channel Association interview...`,\n\t\t\t\tdirection: \"none\",\n\t\t\t});\n\t\t\tthis.setInterviewComplete(ctx, true);\n\t\t\treturn;\n\t\t}\n\n\t\t// And set up lifeline associations\n\t\tawait ccUtils.configureLifelineAssociations(ctx, endpoint);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Association,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst groupCount = AssociationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\t// Query each association group\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `querying association group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await api.getGroup(groupId);\n\t\t\tif (group != undefined) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCSetOptions {\n\tgroupId: number;\n\tnodeIds: number[];\n}\n\n@CCCommand(AssociationCommand.Set)\n@useSupervision()\nexport class AssociationCCSet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tif (options.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`All node IDs must be between 1 and ${MAX_NODES}!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic nodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId, ...this.nodeIds]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCRemoveOptions {\n\t/** The group from which to remove the nodes. If none is specified, the nodes will be removed from all nodes. */\n\tgroupId?: number;\n\t/** The nodes to remove. If none are specified, ALL nodes will be removed. */\n\tnodeIds?: number[];\n}\n\n@CCCommand(AssociationCommand.Remove)\n@useSupervision()\nexport class AssociationCCRemove extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCRemoveOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// When removing associations, we allow invalid node IDs.\n\t\t// See GH#3606 - it is possible that those exist.\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCRemove {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\n\t\tlet groupId: number | undefined;\n\t\tif (raw.payload[0] !== 0) {\n\t\t\tgroupId = raw.payload[0];\n\t\t}\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId?: number;\n\tpublic nodeIds?: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId || 0,\n\t\t\t...(this.nodeIds || []),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds && this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCReportOptions {\n\tgroupId: number;\n\tmaxNodes: number;\n\tnodeIds: number[];\n\treportsToFollow: number;\n}\n\n@CCCommand(AssociationCommand.Report)\n@ccValueProperty(\n\t\"maxNodes\",\n\tAssociationCCValues.maxNodes,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"nodeIds\",\n\tAssociationCCValues.nodeIds,\n\t(self) => [self.groupId],\n)\nexport class AssociationCCReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.maxNodes = options.maxNodes;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.reportsToFollow = options.reportsToFollow;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst maxNodes = raw.payload[1];\n\t\tconst reportsToFollow = raw.payload[2];\n\t\tconst nodeIds = [...raw.payload.subarray(3)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tmaxNodes,\n\t\t\treportsToFollow,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic maxNodes: number;\n\n\tpublic nodeIds: number[];\n\n\tpublic reportsToFollow: number;\n\n\tpublic getPartialCCSessionId(): Record<string, any> | undefined {\n\t\t// Distinguish sessions by the association group ID\n\t\treturn { groupId: this.groupId };\n\t}\n\n\tpublic expectMoreMessages(): boolean {\n\t\treturn this.reportsToFollow > 0;\n\t}\n\n\tpublic mergePartialCCs(\n\t\tpartials: AssociationCCReport[],\n\t\t_ctx: CCParsingContext,\n\t): Promise<void> {\n\t\t// Concat the list of nodes\n\t\tthis.nodeIds = [...partials, this]\n\t\t\t.map((report) => report.nodeIds)\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\treturn Promise.resolve();\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId,\n\t\t\tthis.maxNodes,\n\t\t\tthis.reportsToFollow,\n\t\t\t...this.nodeIds,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"max # of nodes\": this.maxNodes,\n\t\t\t\t\"node IDs\": this.nodeIds.join(\", \"),\n\t\t\t\t\"reports to follow\": this.reportsToFollow,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(AssociationCommand.Get)\n@expectedCCResponse(AssociationCCReport)\nexport class AssociationCCGet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCSupportedGroupingsReportOptions {\n\tgroupCount: number;\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", AssociationCCValues.groupCount)\nexport class AssociationCCSupportedGroupingsReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSupportedGroupingsReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupCount = options.groupCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSupportedGroupingsReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupCount,\n\t\t});\n\t}\n\n\tpublic groupCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupCount]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group count\": this.groupCount },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(AssociationCCSupportedGroupingsReport)\nexport class AssociationCCSupportedGroupingsGet extends AssociationCC {}\n\n// @publicAPI\nexport interface AssociationCCSpecificGroupReportOptions {\n\tgroup: number;\n}\n\n@CCCommand(AssociationCommand.SpecificGroupReport)\nexport class AssociationCCSpecificGroupReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSpecificGroupReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.group = options.group;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSpecificGroupReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst group = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroup,\n\t\t});\n\t}\n\n\tpublic group: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.group]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { group: this.group },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SpecificGroupGet)\n@expectedCCResponse(AssociationCCSpecificGroupReport)\nexport class AssociationCCSpecificGroupGet extends AssociationCC {}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport { type GetDeviceConfig } from \"@zwave-js/config\";\nimport type {\n\tEndpointId,\n\tGetValueDB,\n\tMaybeNotKnown,\n\tMessageRecord,\n\tSupervisionResult,\n\tWithAddress,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\tMAX_NODES,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { distinct } from \"alcalzone-shared/arrays\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type AssociationAddress, AssociationCommand } from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\n\nexport const AssociationCCValues = V.defineCCValues(\n\tCommandClasses.Association,\n\t{\n\t\t...V.staticProperty(\"hasLifeline\", undefined, { internal: true }),\n\t\t...V.staticProperty(\"groupCount\", undefined, { internal: true }),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"maxNodes\",\n\t\t\t\"maxNodes\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"maxNodes\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"nodeIds\",\n\t\t\t\"nodeIds\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"nodeIds\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t},\n);\n\n// @noSetValueAPI\n\n@API(CommandClasses.Association)\nexport class AssociationCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(cmd: AssociationCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase AssociationCommand.Get:\n\t\t\tcase AssociationCommand.Set:\n\t\t\tcase AssociationCommand.Report:\n\t\t\tcase AssociationCommand.Remove:\n\t\t\tcase AssociationCommand.SupportedGroupingsGet:\n\t\t\tcase AssociationCommand.SupportedGroupingsReport:\n\t\t\t\treturn true;\n\t\t\tcase AssociationCommand.SpecificGroupGet:\n\t\t\tcase AssociationCommand.SpecificGroupReport:\n\t\t\t\treturn this.version >= 2;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Returns the number of association groups a node supports.\n\t * Association groups are consecutive, starting at 1.\n\t */\n\tpublic async getGroupCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSupportedGroupingsReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.groupCount;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupCount(groupCount: number): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupCount,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Returns information about an association group.\n\t */\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroup(groupId: number) {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Get);\n\n\t\tconst cc = new AssociationCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<AssociationCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn {\n\t\t\t\tmaxNodes: response.maxNodes,\n\t\t\t\tnodeIds: response.nodeIds,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\toptions: AssociationCCReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Report,\n\t\t);\n\n\t\tconst cc = new AssociationCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Adds new nodes to an association group\n\t */\n\t@validateArgs()\n\tpublic async addNodeIds(\n\t\tgroupId: number,\n\t\t...nodeIds: number[]\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Set);\n\n\t\tconst cc = new AssociationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from an association group\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIds(\n\t\toptions: AssociationCCRemoveOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\t// Validate options\n\t\tif (!options.groupId) {\n\t\t\tif (this.version === 1) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`Node ${this.endpoint.nodeId} only supports AssociationCC V1 which requires the group Id to be set`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (options.groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new AssociationCCRemove({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from all association groups\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIdsFromAllGroups(\n\t\tnodeIds: number[],\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\tif (this.version >= 2) {\n\t\t\t// The node supports bulk removal\n\t\t\treturn this.removeNodeIds({ nodeIds, groupId: 0 });\n\t\t} else {\n\t\t\t// We have to remove the node manually from all groups\n\t\t\tconst groupCount = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(\n\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t),\n\t\t\t) ?? 0;\n\t\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\t\t// TODO: evaluate intermediate supervision results\n\t\t\t\tawait this.removeNodeIds({ nodeIds, groupId });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Request the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async getSpecificGroup(): Promise<number | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSpecificGroupReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.group;\n\t}\n\n\t/**\n\t * Report the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async reportSpecificGroup(\n\t\tgroup: number,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroup,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses.Association)\n@implementedVersion(4)\n@ccValues(AssociationCCValues)\nexport class AssociationCC extends CommandClass {\n\tdeclare ccCommand: AssociationCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// AssociationCC must be interviewed after Z-Wave+ if that is supported\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses[\"Z-Wave Plus Info\"],\n\t\t\t// We need information about endpoints to correctly configure the lifeline associations\n\t\t\tCommandClasses[\"Multi Channel\"],\n\t\t];\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(endpoint.index),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of nodes an association group supports.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getMaxNodesCached(\n\t\tctx: GetValueDB & GetDeviceConfig,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): number {\n\t\treturn (\n\t\t\tctx\n\t\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t\t.getValue(\n\t\t\t\t\tAssociationCCValues.maxNodes(groupId).endpoint(\n\t\t\t\t\t\tendpoint.index,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t// If the information is not available, fall back to the configuration file if possible\n\t\t\t\t// This can happen on some legacy devices which have \"hidden\" association groups\n\t\t\t\t?? ctx\n\t\t\t\t\t.getDeviceConfig?.(endpoint.nodeId)\n\t\t\t\t\t?.getAssociationConfigForEndpoint(endpoint.index, groupId)\n\t\t\t\t\t?.maxNodes\n\t\t\t\t?? 0\n\t\t);\n\t}\n\n\t/**\n\t * Returns all the destinations of all association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getAllDestinationsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): ReadonlyMap<number, readonly AssociationAddress[]> {\n\t\tconst ret = new Map<number, AssociationAddress[]>();\n\t\tconst groupCount = this.getGroupCountCached(ctx, endpoint);\n\t\tconst valueDB = ctx.getValueDB(endpoint.nodeId);\n\t\tfor (let i = 1; i <= groupCount; i++) {\n\t\t\t// Add all root destinations\n\t\t\tconst nodes = valueDB.getValue<number[]>(\n\t\t\t\tAssociationCCValues.nodeIds(i).endpoint(endpoint.index),\n\t\t\t) ?? [];\n\n\t\t\tret.set(\n\t\t\t\ti,\n\t\t\t\t// Filter out duplicates\n\t\t\t\tdistinct(nodes).map((nodeId) => ({ nodeId })),\n\t\t\t);\n\t\t}\n\t\treturn ret;\n\t}\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Association,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// Even if Multi Channel Association is supported, we still need to query the number of\n\t\t// normal association groups since some devices report more association groups than\n\t\t// multi channel association groups\n\n\t\t// Find out how many groups are supported\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying number of association groups...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst groupCount = await api.getGroupCount();\n\t\tif (groupCount != undefined) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `supports ${groupCount} association groups`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t} else {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t\"Querying association groups timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Query each association group for its members\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Skip the remaining Association CC interview in favor of Multi Channel Association if possible\n\t\tif (endpoint.supportsCC(CommandClasses[\"Multi Channel Association\"])) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`${this.constructor.name}: delaying configuration of lifeline associations until after Multi Channel Association interview...`,\n\t\t\t\tdirection: \"none\",\n\t\t\t});\n\t\t\tthis.setInterviewComplete(ctx, true);\n\t\t\treturn;\n\t\t}\n\n\t\t// And set up lifeline associations\n\t\tawait ccUtils.configureLifelineAssociations(ctx, endpoint);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Association,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst groupCount = AssociationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\t// Query each association group\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `querying association group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await api.getGroup(groupId);\n\t\t\tif (group != undefined) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCSetOptions {\n\tgroupId: number;\n\tnodeIds: number[];\n}\n\n@CCCommand(AssociationCommand.Set)\n@useSupervision()\nexport class AssociationCCSet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tif (options.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`All node IDs must be between 1 and ${MAX_NODES}!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic nodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId, ...this.nodeIds]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCRemoveOptions {\n\t/** The group from which to remove the nodes. If none is specified, the nodes will be removed from all nodes. */\n\tgroupId?: number;\n\t/** The nodes to remove. If none are specified, ALL nodes will be removed. */\n\tnodeIds?: number[];\n}\n\n@CCCommand(AssociationCommand.Remove)\n@useSupervision()\nexport class AssociationCCRemove extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCRemoveOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// When removing associations, we allow invalid node IDs.\n\t\t// See GH#3606 - it is possible that those exist.\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCRemove {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\n\t\tlet groupId: number | undefined;\n\t\tif (raw.payload[0] !== 0) {\n\t\t\tgroupId = raw.payload[0];\n\t\t}\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId?: number;\n\tpublic nodeIds?: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId || 0,\n\t\t\t...(this.nodeIds || []),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds && this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCReportOptions {\n\tgroupId: number;\n\tmaxNodes: number;\n\tnodeIds: number[];\n\treportsToFollow: number;\n}\n\n@CCCommand(AssociationCommand.Report)\n@ccValueProperty(\n\t\"maxNodes\",\n\tAssociationCCValues.maxNodes,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"nodeIds\",\n\tAssociationCCValues.nodeIds,\n\t(self) => [self.groupId],\n)\nexport class AssociationCCReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.maxNodes = options.maxNodes;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.reportsToFollow = options.reportsToFollow;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst maxNodes = raw.payload[1];\n\t\tconst reportsToFollow = raw.payload[2];\n\t\tconst nodeIds = [...raw.payload.subarray(3)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tmaxNodes,\n\t\t\treportsToFollow,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic maxNodes: number;\n\n\tpublic nodeIds: number[];\n\n\tpublic reportsToFollow: number;\n\n\tpublic getPartialCCSessionId(): Record<string, any> | undefined {\n\t\t// Distinguish sessions by the association group ID\n\t\treturn { groupId: this.groupId };\n\t}\n\n\tpublic expectMoreMessages(): boolean {\n\t\treturn this.reportsToFollow > 0;\n\t}\n\n\tpublic mergePartialCCs(\n\t\tpartials: AssociationCCReport[],\n\t\t_ctx: CCParsingContext,\n\t): Promise<void> {\n\t\t// Concat the list of nodes\n\t\tthis.nodeIds = [...partials, this]\n\t\t\t.map((report) => report.nodeIds)\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\treturn Promise.resolve();\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId,\n\t\t\tthis.maxNodes,\n\t\t\tthis.reportsToFollow,\n\t\t\t...this.nodeIds,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"max # of nodes\": this.maxNodes,\n\t\t\t\t\"node IDs\": this.nodeIds.join(\", \"),\n\t\t\t\t\"reports to follow\": this.reportsToFollow,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(AssociationCommand.Get)\n@expectedCCResponse(AssociationCCReport)\nexport class AssociationCCGet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCSupportedGroupingsReportOptions {\n\tgroupCount: number;\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", AssociationCCValues.groupCount)\nexport class AssociationCCSupportedGroupingsReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSupportedGroupingsReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupCount = options.groupCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSupportedGroupingsReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupCount,\n\t\t});\n\t}\n\n\tpublic groupCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupCount]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group count\": this.groupCount },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(AssociationCCSupportedGroupingsReport)\nexport class AssociationCCSupportedGroupingsGet extends AssociationCC {}\n\n// @publicAPI\nexport interface AssociationCCSpecificGroupReportOptions {\n\tgroup: number;\n}\n\n@CCCommand(AssociationCommand.SpecificGroupReport)\nexport class AssociationCCSpecificGroupReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSpecificGroupReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.group = options.group;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSpecificGroupReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst group = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroup,\n\t\t});\n\t}\n\n\tpublic group: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.group]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { group: this.group },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SpecificGroupGet)\n@expectedCCResponse(AssociationCCSpecificGroupReport)\nexport class AssociationCCSpecificGroupGet extends AssociationCC {}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,kBAQO;AACP,IAAAA,eAAsB;AAEtB,oBAAyB;AACzB,iBAAqC;AACrC,0BAKO;AACP,oCASO;AACP,oBAAkB;AAClB,mBAA4D;AAC5D,cAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+BZ,oBAAgB,MAAA;8BAD5B,mCAAI,2BAAe,WAAW,CAAC;;;;oBACM;;;;;;;;;;wCAAA,YAAa;WAAA;;;;;;;;sCAwCjD,+CAAA,CAAc;8BAkBd,uCAAA,CAAc;gCAsBd,yCAAA,CAAc;gCAoBd,yCAAA,CAAc;mCAmBd,4CAAA,CAAc;gDAmCd,yDAAA,CAAc;sCA6Bd,+CAAA,CAAc;yCAuBd,kDAAA,CAAc;AArKf,mBAAA,MAAA,MAAA,8BAAA,EAAA,MAAA,UAAA,MAAA,oBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,sBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,kBAAb,OAA6B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAmB7B,mBAAA,MAAA,MAAA,sBAAA,EAAA,MAAA,UAAA,MAAA,YAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,cAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,UAAb,OAAqB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAqBrB,mBAAA,MAAA,MAAA,wBAAA,EAAA,MAAA,UAAA,MAAA,cAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,gBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,YAAb,OAAuB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAoBvB,mBAAA,MAAA,MAAA,wBAAA,EAAA,MAAA,UAAA,MAAA,cAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,gBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,YAAb,OAAuB,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAmBvB,mBAAA,MAAA,MAAA,2BAAA,EAAA,MAAA,UAAA,MAAA,iBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,mBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,eAAb,OAA0B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAmC1B,mBAAA,MAAA,MAAA,wCAAA,EAAA,MAAA,UAAA,MAAA,8BAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,gCAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,4BAAb,OAAuC,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AA6BvC,mBAAA,MAAA,MAAA,8BAAA,EAAA,MAAA,UAAA,MAAA,oBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,sBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,kBAAb,OAA6B,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AAuB7B,mBAAA,MAAA,MAAA,iCAAA,EAAA,MAAA,UAAA,MAAA,uBAAA,QAAA,OAAA,SAAA,OAAA,QAAA,EAAA,KAAA,gCAAA,yBAAA,KAAA,QAAA,KAAA,gCAAA,IAAa,qBAAb,OAAgC,GAAA,UAAA,UAAA,GAAA,MAAA,0BAAA;AA/MjC,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACL,gBAAgB,KAAuB;AAC7C,cAAQ,KAAK;QACZ,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;AACvB,iBAAO;QACR,KAAK,gCAAmB;QACxB,KAAK,gCAAmB;AACvB,iBAAO,KAAK,WAAW;MACzB;AACA,aAAO,MAAM,gBAAgB,GAAG;IACjC;;;;;IAMO,MAAM,gBAAa;AACzB,WAAK,sBACJ,iCACA,gCAAmB,qBAAqB;AAGzC,YAAM,KAAK,IAAI,mCAAmC;QACjD,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAC7B;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAGhC,IACA,KAAK,cAAc;AAEpB,UAAI;AAAU,eAAO,SAAS;IAC/B;IAGO,MAAM,iBAAiB,YAAkB;AAC/C,WAAK,sBACJ,iCACA,gCAAmB,wBAAwB;AAG5C,YAAM,KAAK,IAAI,sCAAsC;QACpD,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACA;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACpD;;;;IAOO,MAAM,SAAS,SAAe;AACpC,WAAK,sBAAsB,iCAAoB,gCAAmB,GAAG;AAErE,YAAM,KAAK,IAAI,iBAAiB;QAC/B,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACA;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAChC,IACA,KAAK,cAAc;AAEpB,UAAI,UAAU;AACb,eAAO;UACN,UAAU,SAAS;UACnB,SAAS,SAAS;;MAEpB;IACD;IAGO,MAAM,WACZ,SAAmC;AAEnC,WAAK,sBACJ,iCACA,gCAAmB,MAAM;AAG1B,YAAM,KAAK,IAAI,oBAAoB;QAClC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,GAAG;OACH;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACpD;;;;IAMO,MAAM,WACZ,YACG,SAAiB;AAEpB,WAAK,sBAAsB,iCAAoB,gCAAmB,GAAG;AAErE,YAAM,KAAK,IAAI,iBAAiB;QAC/B,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;QACA;OACA;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACrD;;;;IAMO,MAAM,cACZ,SAAmC;AAEnC,WAAK,sBACJ,iCACA,gCAAmB,MAAM;AAI1B,UAAI,CAAC,QAAQ,SAAS;AACrB,YAAI,KAAK,YAAY,GAAG;AACvB,gBAAM,IAAI,uBACT,QAAQ,KAAK,SAAS,MAAM,yEAC5B,4BAAgB,gBAAgB;QAElC;MACD,WAAW,QAAQ,UAAU,GAAG;AAC/B,cAAM,IAAI,uBACT,kCACA,4BAAgB,gBAAgB;MAElC;AAEA,YAAM,KAAK,IAAI,oBAAoB;QAClC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,GAAG;OACH;AACD,aAAO,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACrD;;;;IAMO,MAAM,2BACZ,SAAiB;AAEjB,WAAK,sBACJ,iCACA,gCAAmB,MAAM;AAG1B,UAAI,KAAK,WAAW,GAAG;AAEtB,eAAO,KAAK,cAAc,EAAE,SAAS,SAAS,EAAC,CAAE;MAClD,OAAO;AAEN,cAAM,aAAa,KAAK,cAAa,GAAI,SACxC,8CAAoB,WAAW,SAC9B,KAAK,SAAS,KAAK,CACnB,KACG;AACL,iBAAS,UAAU,GAAG,WAAW,YAAY,WAAW;AAEvD,gBAAM,KAAK,cAAc,EAAE,SAAS,QAAO,CAAE;QAC9C;MACD;IACD;;;;IAMO,MAAM,mBAAgB;AAC5B,WAAK,sBACJ,iCACA,gCAAmB,gBAAgB;AAGpC,YAAM,KAAK,IAAI,8BAA8B;QAC5C,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAC7B;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAGhC,IACA,KAAK,cAAc;AAEpB,aAAO,UAAU;IAClB;;;;IAMO,MAAM,oBACZ,OAAa;AAEb,WAAK,sBACJ,iCACA,gCAAmB,mBAAmB;AAGvC,YAAM,KAAK,IAAI,iCAAiC;QAC/C,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B;OACA;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;IACpD;;;AA7NY,wBAAA,MAAA,0BAAA;;;;;IAmOA,iBAAa,MAAA;8BAHzB,4CAAa,2BAAe,WAAW,OACvC,kDAAmB,CAAC,OACpB,wCAAS,6CAAmB,CAAC;;;;oBACK;qCAAA,YAAY;WAAA;;;;;;;;AAA/C,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGL,gCAA6B;AAEnC,aAAO;QACN,GAAG,MAAM,8BAA6B;QACtC,2BAAe,kBAAkB;;QAEjC,2BAAe,eAAe;;IAEhC;;;;;IAMO,OAAO,oBACb,KACA,UAAoB;AAEpB,aAAO,IACL,WAAW,SAAS,MAAM,EAC1B,SACA,8CAAoB,WAAW,SAAS,SAAS,KAAK,CAAC,KACnD;IACP;;;;;IAMO,OAAO,kBACb,KACA,UACA,SAAe;AAEf,aACC,IACE,WAAW,SAAS,MAAM,EAC1B,SACA,8CAAoB,SAAS,OAAO,EAAE,SACrC,SAAS,KAAK,CACd,KAIC,IACD,kBAAkB,SAAS,MAAM,GAChC,gCAAgC,SAAS,OAAO,OAAO,GACvD,YACA;IAEN;;;;;IAMO,OAAO,yBACb,KACA,UAAoB;AAEpB,YAAM,MAAM,oBAAI,IAAG;AACnB,YAAM,aAAa,KAAK,oBAAoB,KAAK,QAAQ;AACzD,YAAM,UAAU,IAAI,WAAW,SAAS,MAAM;AAC9C,eAAS,IAAI,GAAG,KAAK,YAAY,KAAK;AAErC,cAAM,QAAQ,QAAQ,SACrB,8CAAoB,QAAQ,CAAC,EAAE,SAAS,SAAS,KAAK,CAAC,KACnD,CAAA;AAEL,YAAI;UACH;;cAEA,wBAAS,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAM,EAAG;QAAC;MAE/C;AACA,aAAO;IACR;IAEO,MAAM,UACZ,KAAqB;AAErB,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OACjB,2BAAe,aACf,KACA,QAAQ,EACP,YAAY;QACb,UAAU,4BAAgB;OAC1B;AAED,UAAI,QAAQ,KAAK,IAAI;QACpB,UAAU,KAAK;QACf,SAAS,gBAAgB,KAAK,MAAM;QACpC,WAAW;OACX;AAOD,UAAI,QAAQ,KAAK,IAAI;QACpB,UAAU,KAAK;QACf,SAAS;QACT,WAAW;OACX;AACD,YAAM,aAAa,MAAM,IAAI,cAAa;AAC1C,UAAI,cAAc,QAAW;AAC5B,YAAI,QAAQ,KAAK,IAAI;UACpB,UAAU,KAAK;UACf,SAAS,YAAY,UAAU;UAC/B,WAAW;SACX;MACF,OAAO;AACN,YAAI,QAAQ,KAAK,IAAI;UACpB,UAAU,KAAK;UACf,SACC;UACD,OAAO;SACP;AACD;MACD;AAGA,YAAM,KAAK,cAAc,GAAG;AAG5B,UAAI,SAAS,WAAW,2BAAe,2BAA2B,CAAC,GAAG;AACrE,YAAI,QAAQ,KAAK,IAAI;UACpB,UAAU,KAAK;UACf,SACC,GAAG,KAAK,YAAY,IAAI;UACzB,WAAW;SACX;AACD,aAAK,qBAAqB,KAAK,IAAI;AACnC;MACD;AAGA,YAAM,QAAQ,8BAA8B,KAAK,QAAQ;AAGzD,WAAK,qBAAqB,KAAK,IAAI;IACpC;IAEO,MAAM,cACZ,KAAyB;AAEzB,YAAM,OAAO,KAAK,QAAQ,GAAG;AAC7B,YAAM,WAAW,KAAK,YAAY,GAAG;AACrC,YAAM,MAAM,iBAAM,OACjB,2BAAe,aACf,KACA,QAAQ,EACP,YAAY;QACb,UAAU,4BAAgB;OAC1B;AAED,YAAM,aAAaC,eAAc,oBAChC,KACA,QAAQ;AAIT,eAAS,UAAU,GAAG,WAAW,YAAY,WAAW;AACvD,YAAI,QAAQ,KAAK,IAAI;UACpB,UAAU,KAAK;UACf,SAAS,+BAA+B,OAAO;UAC/C,WAAW;SACX;AACD,cAAM,QAAQ,MAAM,IAAI,SAAS,OAAO;AACxC,YAAI,SAAS,QAAW;AACvB,gBAAM,aACL,+CAA+C,OAAO;sBACrC,MAAM,QAAQ;4BACR,MAAM,QAAQ,IAAI,MAAM,EAAE,KAAK,IAAI,CAAC;AAC5D,cAAI,QAAQ,KAAK,IAAI;YACpB,UAAU,KAAK;YACf,SAAS;YACT,WAAW;WACX;QACF;MACD;IACD;;;;IAWY,oBAAgB,MAAA;8BAF5B,yCAAU,gCAAmB,GAAG,OAChC,8CAAc,CAAE;;;;oBACqB;wCAAA,YAAa;WAAA;;;;;;;;AAAnD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA6C;AAE7C,YAAM,OAAO;AACb,UAAI,QAAQ,UAAU,GAAG;AACxB,cAAM,IAAI,uBACT,kCACA,4BAAgB,gBAAgB;MAElC;AACA,UAAI,QAAQ,QAAQ,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,qBAAS,GAAG;AACxD,cAAM,IAAI,uBACT,sCAAsC,qBAAS,KAC/C,4BAAgB,gBAAgB;MAElC;AACA,WAAK,UAAU,QAAQ;AACvB,WAAK,UAAU,QAAQ;IACxB;IAEO,OAAO,KAAK,KAAY,KAAqB;AACnD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAC7B,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,CAAC,CAAC;AAE3C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,KAAK,CAAC,KAAK,SAAS,GAAG,KAAK,OAAO,CAAC;AACzD,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,YAAM,UAAyB;QAC9B,YAAY,KAAK,WAAW;QAC5B,YAAY,KAAK,QAAQ,SACtB,KAAK,QAAQ,KAAK,IAAI,IACtB;;AAEJ,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB;;IAEF;;;;IAaY,uBAAmB,MAAA;8BAF/B,yCAAU,gCAAmB,MAAM,OACnC,8CAAc,CAAE;;;;oBACwB;2CAAA,YAAa;WAAA;;;;;;;;AAAtD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAgD;AAEhD,YAAM,OAAO;AAGb,WAAK,UAAU,QAAQ;AACvB,WAAK,UAAU,QAAQ;IACxB;IAEO,OAAO,KAAK,KAAY,KAAqB;AACnD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AAEvC,UAAI;AACJ,UAAI,IAAI,QAAQ,CAAC,MAAM,GAAG;AACzB,kBAAU,IAAI,QAAQ,CAAC;MACxB;AACA,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,CAAC,CAAC;AAE3C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,KAAK;QACzB,KAAK,WAAW;QAChB,GAAI,KAAK,WAAW,CAAA;OACpB;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,YAAM,UAAyB;QAC9B,YAAY,KAAK,WAAW;QAC5B,YAAY,KAAK,WAAW,KAAK,QAAQ,SACtC,KAAK,QAAQ,KAAK,IAAI,IACtB;;AAEJ,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB;;IAEF;;;;IAsBY,uBAAmB,MAAA;8BAX/B,yCAAU,gCAAmB,MAAM,OACnC,+CACA,YACA,8CAAoB,UACpB,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,OAExB,+CACA,WACA,8CAAoB,SACpB,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,CACxB;;;;oBACwC;2CAAA,YAAa;WAAA;;;;;;;;AAAtD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAgD;AAEhD,YAAM,OAAO;AAEb,WAAK,UAAU,QAAQ;AACvB,WAAK,WAAW,QAAQ;AACxB,WAAK,UAAU,QAAQ;AACvB,WAAK,kBAAkB,QAAQ;IAChC;IAEO,OAAO,KAAK,KAAY,KAAqB;AACnD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAC7B,YAAM,WAAW,IAAI,QAAQ,CAAC;AAC9B,YAAM,kBAAkB,IAAI,QAAQ,CAAC;AACrC,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,CAAC,CAAC;AAE3C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;QACA;QACA;OACA;IACF;IAEO;IAEA;IAEA;IAEA;IAEA,wBAAqB;AAE3B,aAAO,EAAE,SAAS,KAAK,QAAO;IAC/B;IAEO,qBAAkB;AACxB,aAAO,KAAK,kBAAkB;IAC/B;IAEO,gBACN,UACA,MAAsB;AAGtB,WAAK,UAAU,CAAC,GAAG,UAAU,IAAI,EAC/B,IAAI,CAAC,WAAW,OAAO,OAAO,EAC9B,OAAO,CAAC,MAAM,QAAQ,KAAK,OAAO,GAAG,GAAG,GAAG,CAAA,CAAE;AAC/C,aAAO,QAAQ,QAAO;IACvB;IAEO,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,KAAK;QACzB,KAAK;QACL,KAAK;QACL,KAAK;QACL,GAAG,KAAK;OACR;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS;UACR,YAAY,KAAK;UACjB,kBAAkB,KAAK;UACvB,YAAY,KAAK,QAAQ,KAAK,IAAI;UAClC,qBAAqB,KAAK;;;IAG7B;;;;IAUY,oBAAgB,MAAA;8BAF5B,yCAAU,gCAAmB,GAAG,OAChC,kDAAmB,mBAAmB,CAAC;;;;oBACF;wCAAA,YAAa;WAAA;;;;;;;;AAAnD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA6C;AAE7C,YAAM,OAAO;AACb,UAAI,QAAQ,UAAU,GAAG;AACxB,cAAM,IAAI,uBACT,kCACA,4BAAgB,gBAAgB;MAElC;AACA,WAAK,UAAU,QAAQ;IACxB;IAEO,OAAO,KAAK,KAAY,KAAqB;AACnD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,IAAI,QAAQ,CAAC;AAE7B,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,KAAK,CAAC,KAAK,OAAO,CAAC;AACxC,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS,EAAE,YAAY,KAAK,QAAO;;IAErC;;;;IAUY,yCAAqC,MAAA;8BAFjD,yCAAU,gCAAmB,wBAAwB,OACrD,+CAAgB,cAAc,8CAAoB,UAAU,CAAC;;;;oBACH;6DAAA,YAAa;WAAA;;;;;;;;AAAxE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAkE;AAElE,YAAM,OAAO;AAEb,WAAK,aAAa,QAAQ;IAC3B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAEhC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,KAAK,CAAC,KAAK,UAAU,CAAC;AAC3C,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS,EAAE,eAAe,KAAK,WAAU;;IAE3C;;;;IAKY,sCAAkC,MAAA;8BAF9C,yCAAU,gCAAmB,qBAAqB,OAClD,kDAAmB,qCAAqC,CAAC;;;;oBACF;0DAAA,YAAa;WAAA;;;;;;;;AAArE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAQA,oCAAgC,MAAA;8BAD5C,yCAAU,gCAAmB,mBAAmB,CAAC;;;;oBACI;wDAAA,YAAa;WAAA;;;;;;;;AAAnE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA6D;AAE7D,YAAM,OAAO;AAEb,WAAK,QAAQ,QAAQ;IACtB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,QAAQ,IAAI,QAAQ,CAAC;AAE3B,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,mBAAM,KAAK,CAAC,KAAK,KAAK,CAAC;AACtC,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB,SAAS,EAAE,OAAO,KAAK,MAAK;;IAE9B;;;;IAKY,iCAA6B,MAAA;8BAFzC,yCAAU,gCAAmB,gBAAgB,OAC7C,kDAAmB,gCAAgC,CAAC;;;;oBACF;qDAAA,YAAa;WAAA;;;;;;;;AAAhE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;",
6
6
  "names": ["import_safe", "AssociationCC"]
7
7
  }