@marcel2215/homebridge-supla-plugin 2.1.29 → 2.1.31

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 (116) hide show
  1. package/README.md +25 -1
  2. package/config.schema.json +26 -5
  3. package/dist/Accesories/ActionTriggerAccessory.d.ts +0 -1
  4. package/dist/Accesories/ActionTriggerAccessory.d.ts.map +1 -1
  5. package/dist/Accesories/ActionTriggerAccessory.js +15 -9
  6. package/dist/Accesories/ActionTriggerAccessory.js.map +1 -1
  7. package/dist/Accesories/AirQualityAccessory.d.ts +3 -1
  8. package/dist/Accesories/AirQualityAccessory.d.ts.map +1 -1
  9. package/dist/Accesories/AirQualityAccessory.js +47 -5
  10. package/dist/Accesories/AirQualityAccessory.js.map +1 -1
  11. package/dist/Accesories/ContactSensorAccessory.d.ts +3 -1
  12. package/dist/Accesories/ContactSensorAccessory.d.ts.map +1 -1
  13. package/dist/Accesories/ContactSensorAccessory.js +32 -4
  14. package/dist/Accesories/ContactSensorAccessory.js.map +1 -1
  15. package/dist/Accesories/DimmerAccessory.d.ts +5 -3
  16. package/dist/Accesories/DimmerAccessory.d.ts.map +1 -1
  17. package/dist/Accesories/DimmerAccessory.js +50 -14
  18. package/dist/Accesories/DimmerAccessory.js.map +1 -1
  19. package/dist/Accesories/DimmerRgbLightAccessory.d.ts +11 -3
  20. package/dist/Accesories/DimmerRgbLightAccessory.d.ts.map +1 -1
  21. package/dist/Accesories/DimmerRgbLightAccessory.js +148 -26
  22. package/dist/Accesories/DimmerRgbLightAccessory.js.map +1 -1
  23. package/dist/Accesories/DoorAccessory.d.ts +14 -1
  24. package/dist/Accesories/DoorAccessory.d.ts.map +1 -1
  25. package/dist/Accesories/DoorAccessory.js +146 -20
  26. package/dist/Accesories/DoorAccessory.js.map +1 -1
  27. package/dist/Accesories/ElectricityMeterAccessory.d.ts +13 -1
  28. package/dist/Accesories/ElectricityMeterAccessory.d.ts.map +1 -1
  29. package/dist/Accesories/ElectricityMeterAccessory.js +127 -12
  30. package/dist/Accesories/ElectricityMeterAccessory.js.map +1 -1
  31. package/dist/Accesories/FacadeBlindAccessory.d.ts +6 -0
  32. package/dist/Accesories/FacadeBlindAccessory.d.ts.map +1 -1
  33. package/dist/Accesories/FacadeBlindAccessory.js +205 -64
  34. package/dist/Accesories/FacadeBlindAccessory.js.map +1 -1
  35. package/dist/Accesories/FrontGateFsm.d.ts +8 -2
  36. package/dist/Accesories/FrontGateFsm.d.ts.map +1 -1
  37. package/dist/Accesories/FrontGateFsm.js +79 -19
  38. package/dist/Accesories/FrontGateFsm.js.map +1 -1
  39. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts +12 -3
  40. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts.map +1 -1
  41. package/dist/Accesories/GarageDoorOpenerAccesory.js +168 -21
  42. package/dist/Accesories/GarageDoorOpenerAccesory.js.map +1 -1
  43. package/dist/Accesories/GateAccessory.d.ts +6 -0
  44. package/dist/Accesories/GateAccessory.d.ts.map +1 -1
  45. package/dist/Accesories/GateAccessory.js +140 -18
  46. package/dist/Accesories/GateAccessory.js.map +1 -1
  47. package/dist/Accesories/GateLockAccessory.d.ts +17 -1
  48. package/dist/Accesories/GateLockAccessory.d.ts.map +1 -1
  49. package/dist/Accesories/GateLockAccessory.js +375 -50
  50. package/dist/Accesories/GateLockAccessory.js.map +1 -1
  51. package/dist/Accesories/LeakSensorAccessory.d.ts +3 -1
  52. package/dist/Accesories/LeakSensorAccessory.d.ts.map +1 -1
  53. package/dist/Accesories/LeakSensorAccessory.js +32 -4
  54. package/dist/Accesories/LeakSensorAccessory.js.map +1 -1
  55. package/dist/Accesories/LightBulbAccesory.d.ts +4 -3
  56. package/dist/Accesories/LightBulbAccesory.d.ts.map +1 -1
  57. package/dist/Accesories/LightBulbAccesory.js +40 -12
  58. package/dist/Accesories/LightBulbAccesory.js.map +1 -1
  59. package/dist/Accesories/PressureAccessory.d.ts +3 -1
  60. package/dist/Accesories/PressureAccessory.d.ts.map +1 -1
  61. package/dist/Accesories/PressureAccessory.js +28 -5
  62. package/dist/Accesories/PressureAccessory.js.map +1 -1
  63. package/dist/Accesories/RGBLightBulbAccesory.d.ts +10 -1
  64. package/dist/Accesories/RGBLightBulbAccesory.d.ts.map +1 -1
  65. package/dist/Accesories/RGBLightBulbAccesory.js +136 -17
  66. package/dist/Accesories/RGBLightBulbAccesory.js.map +1 -1
  67. package/dist/Accesories/RollerShutterAccessory.d.ts +6 -0
  68. package/dist/Accesories/RollerShutterAccessory.d.ts.map +1 -1
  69. package/dist/Accesories/RollerShutterAccessory.js +219 -74
  70. package/dist/Accesories/RollerShutterAccessory.js.map +1 -1
  71. package/dist/Accesories/SwitchAccessory.d.ts +4 -3
  72. package/dist/Accesories/SwitchAccessory.d.ts.map +1 -1
  73. package/dist/Accesories/SwitchAccessory.js +40 -12
  74. package/dist/Accesories/SwitchAccessory.js.map +1 -1
  75. package/dist/Accesories/TemperatureAccessory.d.ts +3 -1
  76. package/dist/Accesories/TemperatureAccessory.d.ts.map +1 -1
  77. package/dist/Accesories/TemperatureAccessory.js +28 -5
  78. package/dist/Accesories/TemperatureAccessory.js.map +1 -1
  79. package/dist/Accesories/TemperatureHumidityAccessory.d.ts +5 -1
  80. package/dist/Accesories/TemperatureHumidityAccessory.d.ts.map +1 -1
  81. package/dist/Accesories/TemperatureHumidityAccessory.js +40 -9
  82. package/dist/Accesories/TemperatureHumidityAccessory.js.map +1 -1
  83. package/dist/Accesories/ThermostatAccessory.d.ts +18 -1
  84. package/dist/Accesories/ThermostatAccessory.d.ts.map +1 -1
  85. package/dist/Accesories/ThermostatAccessory.js +193 -34
  86. package/dist/Accesories/ThermostatAccessory.js.map +1 -1
  87. package/dist/Accesories/ValveAccessory.d.ts +5 -2
  88. package/dist/Accesories/ValveAccessory.d.ts.map +1 -1
  89. package/dist/Accesories/ValveAccessory.js +47 -8
  90. package/dist/Accesories/ValveAccessory.js.map +1 -1
  91. package/dist/Accesories/WicketAccesory.d.ts +18 -3
  92. package/dist/Accesories/WicketAccesory.d.ts.map +1 -1
  93. package/dist/Accesories/WicketAccesory.js +154 -14
  94. package/dist/Accesories/WicketAccesory.js.map +1 -1
  95. package/dist/Heplers/ColorConverters.d.ts +2 -2
  96. package/dist/Heplers/ColorConverters.d.ts.map +1 -1
  97. package/dist/Heplers/ColorConverters.js +7 -3
  98. package/dist/Heplers/ColorConverters.js.map +1 -1
  99. package/dist/Heplers/DisplayName.d.ts +15 -0
  100. package/dist/Heplers/DisplayName.d.ts.map +1 -0
  101. package/dist/Heplers/DisplayName.js +174 -0
  102. package/dist/Heplers/DisplayName.js.map +1 -0
  103. package/dist/Heplers/SuplaChannelContext.d.ts +3 -1
  104. package/dist/Heplers/SuplaChannelContext.d.ts.map +1 -1
  105. package/dist/Heplers/SuplaChannelContext.js +3 -1
  106. package/dist/Heplers/SuplaChannelContext.js.map +1 -1
  107. package/dist/Heplers/SuplaMqttClient.d.ts +12 -4
  108. package/dist/Heplers/SuplaMqttClient.d.ts.map +1 -1
  109. package/dist/Heplers/SuplaMqttClient.js +214 -112
  110. package/dist/Heplers/SuplaMqttClient.js.map +1 -1
  111. package/dist/platform.d.ts +59 -3
  112. package/dist/platform.d.ts.map +1 -1
  113. package/dist/platform.js +1119 -116
  114. package/dist/platform.js.map +1 -1
  115. package/package.json +7 -3
  116. package/config.json +0 -3
@@ -10,9 +10,12 @@ class ThermostatAccessory {
10
10
  this.targetTemperature = 20;
11
11
  this.targetState = this.platform.Characteristic.TargetHeatingCoolingState.OFF;
12
12
  this.currentState = this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
13
- this.connected = true;
14
- this.isOn = false;
13
+ this.connected = false;
15
14
  this.hasCurrentTemperature = false;
15
+ this.hasTargetTemperature = false;
16
+ this.modeStateRevision = 0;
17
+ this.isOnStateRevision = 0;
18
+ this.targetStateReconciliationTimeoutMs = 30000;
16
19
  this.accessory.getService(this.platform.Service.AccessoryInformation)
17
20
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
18
21
  .setCharacteristic(this.platform.Characteristic.Model, 'Thermostat');
@@ -30,77 +33,146 @@ class ThermostatAccessory {
30
33
  .onGet(this.handleTargetStateGet.bind(this))
31
34
  .onSet(this.handleTargetStateSet.bind(this));
32
35
  this.platform.registerMqttHandler(`${this.context.topic}/state/temperature_setpoint`, (message) => {
33
- const value = parseFloat(message.toString());
34
- if (!Number.isNaN(value)) {
36
+ const value = this.platform.parseFiniteNumberStrict(message.toString());
37
+ if (value !== undefined) {
35
38
  this.targetTemperature = this.clamp(value, 5, 35);
39
+ this.hasTargetTemperature = true;
36
40
  this.service.updateCharacteristic(this.platform.Characteristic.TargetTemperature, this.targetTemperature);
37
- if (!this.hasCurrentTemperature) {
38
- this.currentTemperature = this.targetTemperature;
39
- this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.currentTemperature);
40
- }
41
+ this.updateFault();
41
42
  }
42
43
  }, this.accessory.UUID);
43
44
  this.platform.registerMqttHandler(`${this.context.topic}/state/temperature`, (message) => {
44
- const value = parseFloat(message.toString());
45
- if (!Number.isNaN(value)) {
45
+ const value = this.platform.parseFiniteNumberStrict(message.toString());
46
+ if (value !== undefined) {
46
47
  this.currentTemperature = this.clamp(value, -50, 100);
47
48
  this.hasCurrentTemperature = true;
48
49
  this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.currentTemperature);
50
+ this.updateFault();
49
51
  }
50
52
  }, this.accessory.UUID);
51
- this.platform.registerMqttHandler(`${this.context.topic}/state/mode`, (message) => {
52
- const mode = message.toString();
53
- this.targetState = this.toTargetState(mode, this.isOn);
54
- this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.targetState);
53
+ this.platform.registerOwnerCleanup(this.accessory.UUID, () => {
54
+ this.clearTargetStateReconciliationTimer();
55
+ });
56
+ this.platform.registerMqttHandler(`${this.context.topic}/state/mode`, (message, _topic, packet) => {
57
+ this.rawMode = message.toString().trim().toLowerCase();
58
+ if (this.isKnownMode(this.rawMode) && packet?.retain !== true) {
59
+ this.modeStateRevision += 1;
60
+ }
61
+ if (this.noteFreshTransactionState()) {
62
+ this.recomputeHomeKitState();
63
+ }
64
+ this.updateFault();
55
65
  }, this.accessory.UUID);
56
66
  this.platform.registerMqttHandler(`${this.context.topic}/state/action`, (message) => {
57
- const action = message.toString();
58
- this.currentState = this.toCurrentState(action, this.isOn);
59
- this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.currentState);
67
+ this.rawAction = message.toString().trim().toLowerCase();
68
+ if (!this.targetStateTransaction) {
69
+ this.recomputeHomeKitState();
70
+ }
71
+ this.updateFault();
60
72
  }, this.accessory.UUID);
61
- this.platform.registerMqttHandler(`${this.context.topic}/state/is_on`, (message) => {
62
- this.isOn = this.platform.parseBoolean(message.toString());
63
- this.targetState = this.toTargetState(undefined, this.isOn, this.targetState);
64
- this.currentState = this.toCurrentState(undefined, this.isOn, this.currentState);
65
- this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.targetState);
66
- this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.currentState);
73
+ this.platform.registerMqttHandler(`${this.context.topic}/state/is_on`, (message, _topic, packet) => {
74
+ const isOn = this.platform.parseBooleanStrict(message.toString());
75
+ if (isOn === undefined) {
76
+ return;
77
+ }
78
+ this.isOn = isOn;
79
+ if (packet?.retain !== true) {
80
+ this.isOnStateRevision += 1;
81
+ }
82
+ if (this.noteFreshTransactionState()) {
83
+ this.recomputeHomeKitState();
84
+ }
85
+ this.updateFault();
67
86
  }, this.accessory.UUID);
68
87
  this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
69
- this.connected = this.platform.parseBoolean(message.toString());
70
- this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
88
+ const connected = this.platform.parseBooleanStrict(message.toString());
89
+ if (connected === undefined) {
90
+ return;
91
+ }
92
+ this.connected = connected;
93
+ if (!connected) {
94
+ this.hasCurrentTemperature = false;
95
+ this.hasTargetTemperature = false;
96
+ this.isOn = undefined;
97
+ this.rawMode = undefined;
98
+ this.rawAction = undefined;
99
+ }
100
+ this.updateFault();
101
+ }, this.accessory.UUID);
102
+ this.platform.registerMqttTransportHandler?.((transportConnected) => {
103
+ if (!transportConnected) {
104
+ this.connected = false;
105
+ this.hasCurrentTemperature = false;
106
+ this.hasTargetTemperature = false;
107
+ this.isOn = undefined;
108
+ this.rawMode = undefined;
109
+ this.rawAction = undefined;
110
+ this.updateFault();
111
+ }
71
112
  }, this.accessory.UUID);
72
113
  }
73
114
  async handleCurrentTemperatureGet() {
115
+ this.assertAvailable(this.hasCurrentTemperature);
74
116
  return this.currentTemperature;
75
117
  }
76
118
  async handleTargetTemperatureGet() {
119
+ this.assertAvailable(this.hasTargetTemperature);
77
120
  return this.targetTemperature;
78
121
  }
79
122
  async handleTargetTemperatureSet(value) {
123
+ this.assertAvailable(this.hasTargetTemperature);
80
124
  const target = this.clamp(value, 5, 35);
81
- this.targetTemperature = target;
125
+ if (!Number.isFinite(target)) {
126
+ throw this.communicationError();
127
+ }
82
128
  this.platform.log.debug(`Publishing ${this.context.topic}/set/temperature_setpoint = ${target.toString()}`);
83
- this.platform.publishCommand(`${this.context.topic}/set/temperature_setpoint`, target.toString());
129
+ await this.platform.publishCommandAsync(`${this.context.topic}/set/temperature_setpoint`, target.toString());
130
+ this.targetTemperature = target;
131
+ this.hasTargetTemperature = true;
84
132
  }
85
133
  async handleCurrentStateGet() {
134
+ this.assertAvailable(this.isOn === false || this.isKnownAction(this.rawAction));
86
135
  return this.currentState;
87
136
  }
88
137
  async handleTargetStateGet() {
138
+ this.assertAvailable(this.isOn === false || this.isKnownMode(this.rawMode));
89
139
  return this.targetState;
90
140
  }
91
141
  async handleTargetStateSet(value) {
142
+ this.assertAvailable(this.isOn === false || this.isKnownMode(this.rawMode));
143
+ if (this.targetStateTransaction) {
144
+ throw this.communicationError();
145
+ }
92
146
  const state = value;
93
- this.targetState = state;
94
147
  if (state === this.platform.Characteristic.TargetHeatingCoolingState.OFF) {
95
148
  this.platform.log.debug(`Publishing ${this.context.topic}/set/is_on = false`);
96
- this.platform.publishCommand(`${this.context.topic}/set/is_on`, 'false');
149
+ await this.platform.publishCommandAsync(`${this.context.topic}/set/is_on`, 'false');
150
+ this.targetState = state;
97
151
  return;
98
152
  }
99
153
  const mode = this.fromTargetState(state);
100
- this.platform.log.debug(`Publishing ${this.context.topic}/set/is_on = true`);
101
- this.platform.publishCommand(`${this.context.topic}/set/is_on`, 'true');
154
+ const startingModeRevision = this.modeStateRevision;
155
+ const startingIsOnRevision = this.isOnStateRevision;
102
156
  this.platform.log.debug(`Publishing ${this.context.topic}/set/mode = ${mode}`);
103
- this.platform.publishCommand(`${this.context.topic}/set/mode`, mode);
157
+ await this.platform.publishCommandAsync(`${this.context.topic}/set/mode`, mode);
158
+ this.platform.log.debug(`Publishing ${this.context.topic}/set/is_on = true`);
159
+ try {
160
+ await this.platform.publishCommandAsync(`${this.context.topic}/set/is_on`, 'true');
161
+ }
162
+ catch (error) {
163
+ this.recordTargetStateTransactionUncertainty(state, mode, startingModeRevision, startingIsOnRevision);
164
+ throw error;
165
+ }
166
+ this.targetState = state;
167
+ }
168
+ recomputeHomeKitState() {
169
+ if (this.isOn === undefined) {
170
+ return;
171
+ }
172
+ this.targetState = this.toTargetState(this.rawMode, this.isOn, this.targetState);
173
+ this.currentState = this.toCurrentState(this.rawAction, this.isOn, this.currentState);
174
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.targetState);
175
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.currentState);
104
176
  }
105
177
  toTargetState(mode, isOn, fallback) {
106
178
  if (isOn === false) {
@@ -119,7 +191,7 @@ class ThermostatAccessory {
119
191
  case 'off':
120
192
  return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
121
193
  default:
122
- return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
194
+ return fallback ?? this.platform.Characteristic.TargetHeatingCoolingState.OFF;
123
195
  }
124
196
  }
125
197
  toCurrentState(action, isOn, fallback) {
@@ -134,8 +206,11 @@ class ThermostatAccessory {
134
206
  return this.platform.Characteristic.CurrentHeatingCoolingState.HEAT;
135
207
  case 'cooling':
136
208
  return this.platform.Characteristic.CurrentHeatingCoolingState.COOL;
137
- default:
209
+ case 'idle':
210
+ case 'off':
138
211
  return this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
212
+ default:
213
+ return fallback ?? this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
139
214
  }
140
215
  }
141
216
  fromTargetState(state) {
@@ -150,9 +225,93 @@ class ThermostatAccessory {
150
225
  return 'off';
151
226
  }
152
227
  }
228
+ isKnownMode(mode) {
229
+ return mode !== undefined && ['heat', 'cool', 'auto', 'off'].includes(mode.toLowerCase());
230
+ }
231
+ isKnownAction(action) {
232
+ return action !== undefined && ['heating', 'cooling', 'idle', 'off'].includes(action.toLowerCase());
233
+ }
153
234
  clamp(value, min, max) {
154
235
  return Math.min(Math.max(value, min), max);
155
236
  }
237
+ assertAvailable(hasValue) {
238
+ if (!this.connected || !hasValue || this.targetStateTransaction) {
239
+ throw this.communicationError();
240
+ }
241
+ }
242
+ recordTargetStateTransactionUncertainty(requestedState, requestedMode, startingModeRevision, startingIsOnRevision) {
243
+ this.targetStateTransaction = {
244
+ requestedState,
245
+ requestedMode,
246
+ transportAcceptedCommands: ['mode'],
247
+ startingModeRevision,
248
+ startingIsOnRevision,
249
+ freshModeObserved: this.modeStateRevision > startingModeRevision,
250
+ freshIsOnObserved: this.isOnStateRevision > startingIsOnRevision,
251
+ };
252
+ this.clearTargetStateReconciliationTimer();
253
+ this.targetStateReconciliationTimer = setTimeout(() => {
254
+ this.targetStateReconciliationTimer = undefined;
255
+ if (!this.targetStateTransaction) {
256
+ return;
257
+ }
258
+ this.targetStateTransaction = undefined;
259
+ this.recomputeHomeKitState();
260
+ this.platform.log.warn(`Thermostat ${this.accessory.displayName} target transaction did not receive a complete ` +
261
+ `fresh state snapshot within ${this.targetStateReconciliationTimeoutMs}ms; ` +
262
+ 'reconciled conservatively from the latest observed state.');
263
+ this.updateFault();
264
+ }, this.targetStateReconciliationTimeoutMs);
265
+ this.platform.log.warn(`Thermostat ${this.accessory.displayName} target transaction is uncertain: ` +
266
+ `set/mode=${requestedMode} was transport-accepted but set/is_on=true failed. ` +
267
+ 'Waiting for fresh mode and is_on state topics before reconciling.');
268
+ if (this.noteFreshTransactionState()) {
269
+ this.recomputeHomeKitState();
270
+ }
271
+ this.updateFault();
272
+ }
273
+ noteFreshTransactionState() {
274
+ const transaction = this.targetStateTransaction;
275
+ if (!transaction) {
276
+ return true;
277
+ }
278
+ transaction.freshModeObserved = transaction.freshModeObserved
279
+ || this.modeStateRevision > transaction.startingModeRevision;
280
+ transaction.freshIsOnObserved = transaction.freshIsOnObserved
281
+ || this.isOnStateRevision > transaction.startingIsOnRevision;
282
+ if (!transaction.freshModeObserved || !transaction.freshIsOnObserved) {
283
+ return false;
284
+ }
285
+ this.targetStateTransaction = undefined;
286
+ this.clearTargetStateReconciliationTimer();
287
+ this.platform.log.info(`Thermostat ${this.accessory.displayName} reconciled the uncertain target transaction ` +
288
+ 'from fresh mode and is_on state topics.');
289
+ return true;
290
+ }
291
+ updateFault() {
292
+ const hasTargetState = this.isOn === false
293
+ || (this.isOn === true && this.isKnownMode(this.rawMode));
294
+ const hasCurrentState = this.isOn === false
295
+ || (this.isOn === true && this.isKnownAction(this.rawAction));
296
+ const available = this.connected
297
+ && this.hasCurrentTemperature
298
+ && this.hasTargetTemperature
299
+ && hasTargetState
300
+ && hasCurrentState
301
+ && !this.targetStateTransaction;
302
+ if (!available) {
303
+ return;
304
+ }
305
+ }
306
+ clearTargetStateReconciliationTimer() {
307
+ if (this.targetStateReconciliationTimer) {
308
+ clearTimeout(this.targetStateReconciliationTimer);
309
+ this.targetStateReconciliationTimer = undefined;
310
+ }
311
+ }
312
+ communicationError() {
313
+ return new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
314
+ }
156
315
  }
157
316
  exports.ThermostatAccessory = ThermostatAccessory;
158
317
  //# sourceMappingURL=ThermostatAccessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThermostatAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ThermostatAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThermostatAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ThermostatAccessory.ts"],"names":[],"mappings":"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"}
@@ -8,11 +8,14 @@ export declare class ValveAccessory {
8
8
  private service;
9
9
  private active;
10
10
  private inUse;
11
- private connected;
12
- private flooding;
11
+ private connected?;
12
+ private flooding?;
13
+ private hasClosedState;
13
14
  constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
14
15
  handleActiveGet(): Promise<CharacteristicValue>;
15
16
  handleActiveSet(value: CharacteristicValue): Promise<void>;
16
17
  handleInUseGet(): Promise<CharacteristicValue>;
18
+ private updateFault;
19
+ private assertAvailable;
17
20
  }
18
21
  //# sourceMappingURL=ValveAccessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValveAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/ValveAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,cAAc;IAQvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAS;gBAGN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAyDzC,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI/C,eAAe,CAAC,KAAK,EAAE,mBAAmB;IAW1C,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAGrD"}
1
+ {"version":3,"file":"ValveAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/ValveAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,cAAc;IASvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,SAAS,CAAC,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,cAAc,CAAS;gBAGZ,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IA6EzC,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAK/C,eAAe,CAAC,KAAK,EAAE,mBAAmB;IAY1C,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKpD,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,eAAe;CAOxB"}
@@ -8,8 +8,7 @@ class ValveAccessory {
8
8
  this.context = context;
9
9
  this.active = this.platform.Characteristic.Active.INACTIVE;
10
10
  this.inUse = this.platform.Characteristic.InUse.NOT_IN_USE;
11
- this.connected = true;
12
- this.flooding = false;
11
+ this.hasClosedState = false;
13
12
  this.accessory.getService(this.platform.Service.AccessoryInformation)
14
13
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
15
14
  .setCharacteristic(this.platform.Characteristic.Model, 'Valve');
@@ -23,7 +22,11 @@ class ValveAccessory {
23
22
  this.service.getCharacteristic(this.platform.Characteristic.InUse)
24
23
  .onGet(this.handleInUseGet.bind(this));
25
24
  this.platform.registerMqttHandler(`${this.context.topic}/state/closed`, (message) => {
26
- const closed = this.platform.parseBoolean(message.toString());
25
+ const closed = this.platform.parseBooleanStrict(message.toString());
26
+ if (closed === undefined) {
27
+ return;
28
+ }
29
+ this.hasClosedState = true;
27
30
  this.active = closed
28
31
  ? this.platform.Characteristic.Active.INACTIVE
29
32
  : this.platform.Characteristic.Active.ACTIVE;
@@ -32,27 +35,63 @@ class ValveAccessory {
32
35
  : this.platform.Characteristic.InUse.IN_USE;
33
36
  this.service.updateCharacteristic(this.platform.Characteristic.Active, this.active);
34
37
  this.service.updateCharacteristic(this.platform.Characteristic.InUse, this.inUse);
38
+ this.updateFault();
35
39
  }, this.accessory.UUID);
36
40
  this.platform.registerMqttHandler(`${this.context.topic}/state/flooding`, (message) => {
37
- this.flooding = this.platform.parseBoolean(message.toString());
38
- this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.flooding ? 1 : 0);
41
+ const flooding = this.platform.parseBooleanStrict(message.toString());
42
+ if (flooding === undefined) {
43
+ return;
44
+ }
45
+ this.flooding = flooding;
46
+ this.updateFault();
39
47
  }, this.accessory.UUID);
40
48
  this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
41
- this.connected = this.platform.parseBoolean(message.toString());
42
- this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected && !this.flooding ? 0 : 1);
49
+ const connected = this.platform.parseBooleanStrict(message.toString());
50
+ if (connected === undefined) {
51
+ return;
52
+ }
53
+ this.connected = connected;
54
+ if (!connected) {
55
+ this.flooding = undefined;
56
+ this.hasClosedState = false;
57
+ }
58
+ this.updateFault();
43
59
  }, this.accessory.UUID);
60
+ this.platform.registerMqttTransportHandler?.((transportConnected) => {
61
+ if (!transportConnected) {
62
+ this.connected = undefined;
63
+ this.flooding = undefined;
64
+ this.hasClosedState = false;
65
+ this.updateFault();
66
+ }
67
+ }, this.accessory.UUID);
68
+ this.updateFault();
44
69
  }
45
70
  async handleActiveGet() {
71
+ this.assertAvailable();
46
72
  return this.active;
47
73
  }
48
74
  async handleActiveSet(value) {
75
+ this.assertAvailable();
49
76
  const active = value === this.platform.Characteristic.Active.ACTIVE;
50
77
  this.platform.log.debug(`Publishing ${this.context.topic}/set/closed = ${(!active).toString()}`);
51
- this.platform.publishCommand(`${this.context.topic}/set/closed`, (!active).toString());
78
+ await this.platform.publishCommandAsync(`${this.context.topic}/set/closed`, (!active).toString());
52
79
  }
53
80
  async handleInUseGet() {
81
+ this.assertAvailable();
54
82
  return this.inUse;
55
83
  }
84
+ updateFault() {
85
+ const fault = this.connected !== true || this.flooding !== false || !this.hasClosedState;
86
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, fault
87
+ ? this.platform.Characteristic.StatusFault.GENERAL_FAULT
88
+ : this.platform.Characteristic.StatusFault.NO_FAULT);
89
+ }
90
+ assertAvailable() {
91
+ if (this.connected !== true || !this.hasClosedState) {
92
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
93
+ }
94
+ }
56
95
  }
57
96
  exports.ValveAccessory = ValveAccessory;
58
97
  //# sourceMappingURL=ValveAccessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValveAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ValveAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValveAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ValveAccessory.ts"],"names":[],"mappings":";;;AAIA,MAAa,cAAc;IAQzB,YACmB,QAAuB,EACvB,SAA4B,EAC5B,OAA4B;QAF5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAC5B,YAAO,GAAP,OAAO,CAAqB;QATvC,WAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtD,UAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC;QAGtD,mBAAc,GAAG,KAAK,CAAC;QAO7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;eAChE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE7H,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;aAChE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC;aAC/D,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,eAAe,EACpC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,MAAM;gBAClB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ;gBAC9C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/C,IAAI,CAAC,KAAK,GAAG,MAAM;gBACjB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU;gBAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACpF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,iBAAiB,EACtC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,EACvC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC1B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE,CAAC,CAAC,kBAAkB,EAAE,EAAE;YAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC1B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAA0B;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,cAAc,IAAI,CAAC,OAAO,CAAC,KAAK,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxE,CAAC;QACF,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CACrC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,aAAa,EAClC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,WAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EACxC,KAAK;YACH,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa;YACxD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CACtD,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,4EAE7C,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA/HD,wCA+HC"}
@@ -1,16 +1,31 @@
1
- import { PlatformAccessory, CharacteristicValue } from 'homebridge';
1
+ import { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
2
  import { SuplaPlatform } from '../platform';
3
3
  import { SuplaChannelContext } from '../Heplers/SuplaChannelContext';
4
+ /**
5
+ * Legacy wicket handler retained for source compatibility. It is not selected
6
+ * by the current platform mapping, but must remain fail-safe if reused.
7
+ */
4
8
  export declare class WicketAccesory {
5
9
  private readonly platform;
6
10
  private readonly accessory;
7
11
  private readonly context;
8
- private service;
12
+ private readonly service;
13
+ private state;
9
14
  private connected;
15
+ private hasState;
16
+ private commandUncertain;
17
+ private confirmationExpired;
18
+ private confirmationTimer?;
19
+ private readonly confirmationTimeoutMs;
10
20
  constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
11
21
  handleCurrentDoorStateGet(): Promise<CharacteristicValue>;
12
22
  handleTargetDoorStateGet(): Promise<CharacteristicValue>;
13
- handleTargetDoorStateSet(): Promise<void>;
23
+ handleTargetDoorStateSet(value: CharacteristicValue): Promise<void>;
14
24
  handleObstructionDetectedGet(): Promise<CharacteristicValue>;
25
+ private assertAvailable;
26
+ private setCommandUncertain;
27
+ private armConfirmationTimer;
28
+ private expirePendingConfirmation;
29
+ private clearConfirmationTimer;
15
30
  }
16
31
  //# sourceMappingURL=WicketAccesory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WicketAccesory.d.ts","sourceRoot":"","sources":["../../src/Accesories/WicketAccesory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,cAAc;IAKnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAQ;gBAGF,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAkC7C,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIzD,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIxD,wBAAwB;IAiBxB,4BAA4B,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAKnE"}
1
+ {"version":3,"file":"WicketAccesory.d.ts","sourceRoot":"","sources":["../../src/Accesories/WicketAccesory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,iBAAiB,EAAU,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE;;;GAGG;AACH,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,KAAK,CAAwD;IACrE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAG5B,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAmFzC,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKzD,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAOxD,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCnE,4BAA4B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIlE,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,sBAAsB;CAM/B"}