From c84c15ebff05b44ccc7923aee6d6c1e7330c271a Mon Sep 17 00:00:00 2001 From: Peter Emke Date: Fri, 8 May 2026 08:28:48 +0200 Subject: [PATCH 1/7] Add P155_Smartmeter --- docs/source/Plugin/P155.rst | 191 +++ .../Plugin/_plugin_substitutions_p15x.repl | 13 + src/_P155_Smartmeter.ino | 1240 +++++++++++++++++ 3 files changed, 1444 insertions(+) create mode 100644 docs/source/Plugin/P155.rst create mode 100644 src/_P155_Smartmeter.ino diff --git a/docs/source/Plugin/P155.rst b/docs/source/Plugin/P155.rst new file mode 100644 index 0000000000..f145f39552 --- /dev/null +++ b/docs/source/Plugin/P155.rst @@ -0,0 +1,191 @@ +.. include:: ../Plugin/_plugin_substitutions_p15x.repl +.. _P155_page: + +|P155_typename| +================================================== + +|P155_shortinfo| + +Plugin details +-------------- + +Type: |P155_type| + +Port Type: |P155_porttype| + +Name: |P155_name| + +Status ESP32: |P155_status| + +Status ESP8266: |P155_status_lb| + +GitHub: |P155_github|_ + +Maintainer: |P155_maintainer| + +Used libraries: |P155_usedlibraries| + +Supported hardware +------------------ + +Supports all smart meters using the SML protocol (Smart Message Language) +and older meters using the D0 protocol (IEC 62056-21). + +Tested devices: + +* DD3 (SML meter, use model: SML) +* Holley DTZ541 (use model: DTZ541) +* Any SML-compliant meter (use model: SML-Auto) +* Older meters with optical interface (use model: D0) + +Reading Head +~~~~~~~~~~~~ + +To connect a smart meter to the ESP, an IR reading head is required. +A compatible TTL/UART reading head is available: + +.. csv-table:: + :header: "Store", "Link" + :widths: 5, 40 + + "eBay","`TTL/UART IR Reading Head `_" + +The reading head includes a fully assembled PCB with IR diode and phototransistor, +a ring magnet to attach to the meter, and a housing with cover. + +Precautions +----------- + +The plugin uses Hardware Serial2 on fixed pins: + +* RX = GPIO 16 +* TX = GPIO 17 + +The meter's serial interface operates at 9600 baud with 3.3V logic levels. +No level converter is required for 3.3V meters. + +Hardware +-------- + +Connect the meter to the ESP32-S3 as follows: + +.. code-block:: none + + Smart Meter ESP32-S3 + TXD --> GPIO 16 (RX2) + RXD --> GPIO 17 (TX2) + GND --> GND + +.. note:: + + GPIO 16 and 17 are fixed as Hardware Serial2 (UART2) on the ESP32-S3. + These pins cannot be changed via the web interface. + +Configuration +------------- + +**Name** A unique name for the task (example: **SmartMeter**). + +**Enabled** The device can be enabled or disabled. + +Sensor +^^^^^^ + +**Model Type** Select the protocol matching your meter: + +.. csv-table:: + :header: "Model", "Meter", "Notes" + :widths: 8, 15, 20 + + "D0", "Older meters with optical interface","" + "SML", "DD3, EHZ and other SML meters","" + "DTZ541", "Holley DTZ541","" + "SML-Auto", "All SML-compliant meters", "Dynamic TL parsing, recommended" + +.. note:: + + Changing the model reloads the page and resets the value selectors. + +**Value 1-4** Select the desired measurement values from the available OBIS registers. + +.. include:: DataAcquisition.repl + +* **Interval**: Recommended 1s for power values, 10s for energy values. + +Output +^^^^^^ + +Output values +""""""""""""" + +The available measurement values depend on the selected model. + +SML and SML-Auto share the same OBIS codes: + +.. csv-table:: + :header: "#", "Value Name", "OBIS", "Unit", "Description" + :widths: 2, 12, 10, 4, 20 + + "1", "Energy_Consumption_kWh", "1-0:1.8.0", "kWh \*", "Total import energy" + "2", "L1_W", "1-0:21.7.0", "W", "Active power L1" + "3", "L2_W", "1-0:41.7.0", "W", "Active power L2" + "4", "L3_W", "1-0:61.7.0", "W", "Active power L3" + "5", "L123_W", "1-0:16.7.0", "W", "Total active power" + "6", "Energy_FeedIn_kWh", "1-0:2.8.0", "kWh \*", "Total export energy" + "7", "L1_V", "1-0:32.7.0", "V", "Voltage L1" + "8", "L2_V", "1-0:52.7.0", "V", "Voltage L2" + "9", "L3_V", "1-0:72.7.0", "V", "Voltage L3" + "10", "L1_A", "1-0:31.7.0", "A", "Current L1" + "11", "L2_A", "1-0:51.7.0", "A", "Current L2" + "12", "L3_A", "1-0:71.7.0", "A", "Current L3" + +\* SML-Auto delivers energy values in Wh. Enter ``VALUE/1000`` in the formula field to get kWh. + +D0: + +.. csv-table:: + :header: "#", "Value Name", "OBIS", "Unit", "Description" + :widths: 2, 12, 12, 4, 15 + + "1", "Consumption_kWh", "1-0:1.8.0\*255", "kWh", "Total import energy" + "2", "L1_W", "1-0:21.7.0\*255", "W", "Active power L1" + "3", "L2_W", "1-0:41.7.0\*255", "W", "Active power L2" + "4", "L3_W", "1-0:61.7.0\*255", "W", "Active power L3" + "5", "L123_W", "1-0:1.7.0\*255", "W", "Total active power" + +DTZ541: + +.. csv-table:: + :header: "#", "Value Name", "OBIS", "Unit", "Description" + :widths: 2, 12, 10, 4, 15 + + "1", "Energy_Consumption_kWh", "1-0:1.8.0", "kWh", "Total import energy" + "2", "L123_W", "1-0:16.7.0", "W", "Total active power" + "3", "Energy_FeedIn_kWh", "1-0:2.8.0", "kWh", "Total export energy" + +Indicators (recommended settings) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. csv-table:: + :header: "Indicator", "Value Name", "Interval", "Formula", "Extra information" + :widths: 12, 10, 5, 8, 20 + + "Energy_Consumption_kWh", "Import_kWh", "10", "VALUE/1000", "SML-Auto only: Wh to kWh" + "Energy_FeedIn_kWh", "Export_kWh", "10", "VALUE/1000", "SML-Auto only: Wh to kWh" + "L123_W", "Power_W", "1", "", "No formula needed" + "L1_V / L2_V / L3_V", "Voltage_V", "10", "", "" + +.. note:: + + With **SML-Auto**, energy registers deliver the raw value in Wh (scaler is read + automatically from the telegram). Enter ``VALUE/1000`` in the ESPEasy formula + field to get kWh. Power values (W) require no formula. + +Change log +---------- + +.. versionadded:: 1.0 + ... + + |added| + Initial release version. diff --git a/docs/source/Plugin/_plugin_substitutions_p15x.repl b/docs/source/Plugin/_plugin_substitutions_p15x.repl index f83592e642..ff3962cfde 100644 --- a/docs/source/Plugin/_plugin_substitutions_p15x.repl +++ b/docs/source/Plugin/_plugin_substitutions_p15x.repl @@ -68,6 +68,19 @@ .. |P154_compileinfo| replace:: `.` .. |P154_usedlibraries| replace:: `Adafruit BMP3XX Library` +.. |P155_name| replace:: :cyan:`SML Smartmeter` +.. |P155_type| replace:: :cyan:`Energy` +.. |P155_typename| replace:: :cyan:`Energy - SML Smartmeter` +.. |P155_porttype| replace:: `.` +.. |P155_status| replace:: :green:`NORMAL` +.. |P155_status_lb| replace:: `` +.. |P155_github| replace:: P155_Smartmeter.ino +.. _P155_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P155_Smartmeter.ino +.. |P155_usedby| replace:: `.` +.. |P155_shortinfo| replace:: `SML/D0 Smartmeter energy sensor` +.. |P155_maintainer| replace:: `Custom` +.. |P155_compileinfo| replace:: `.` + .. |P159_name| replace:: :cyan:`LD2410` .. |P159_type| replace:: :cyan:`Presence` .. |P159_typename| replace:: :cyan:`Presence - LD2410` diff --git a/src/_P155_Smartmeter.ino b/src/_P155_Smartmeter.ino new file mode 100644 index 0000000000..3de27e7836 --- /dev/null +++ b/src/_P155_Smartmeter.ino @@ -0,0 +1,1240 @@ +#include "_Plugin_Helper.h" + +#ifdef USES_P155 + +// ####################################################################################################### +// ######################## Plugin 155: Energy - Smartmeter ######################## +// ####################################################################################################### +// +// Modelle: +// 0 = D0 (IEC 62056-21, 7E1, 9600 Baud) +// 1 = SML (hardcodierte posData je Hersteller) +// 2 = DTZ541 +// 3 = SML-Auto (dynamisches TL-Parsing, herstellerunabhängig) +// +// SML-Auto Funktionsweise: +// Nach der OBIS-Kennung enthält jeder SML-ListEntry folgende Felder, +// jeweils eingeleitet durch ein TL-Byte (Type-Length): +// Status | Time | Unit | Scaler (int8) | Value +// TL-Byte: Bits 7-4 = Typ (5=int, 6=uint, 7=Liste, 0=optional) +// Bits 3-0 = Gesamtlänge inkl. TL-Byte (0 = nicht vorhanden) +// Für Listen (Typ 7): Bits 3-0 = Anzahl Kindelemente + 1 +// SML-Auto liest diese Felder dynamisch → funktioniert bei allen +// SML-konformen Zählern unabhängig vom Hersteller. +// ####################################################################################################### + +#define PLUGIN_155 +#define PLUGIN_ID_155 155 +#define PLUGIN_NAME_155 "SML - Smartmeter [Testing]" + +#define P155_MODEL PCONFIG(0) +#define P155_MODEL_LABEL PCONFIG_LABEL(0) +#define P155_QUERY1 PCONFIG(1) +#define P155_QUERY2 PCONFIG(2) +#define P155_QUERY3 PCONFIG(3) +#define P155_QUERY4 PCONFIG(4) + +#define P155_MODEL_DFLT 1 +#define P155_BAUDRATE 9600 +#define P155_QUERY1_DFLT 1 +#define P155_QUERY2_DFLT 3 +#define P155_QUERY3_DFLT 2 +#define P155_QUERY4_DFLT 0 + +#define P155_NR_OUTPUT_VALUES 4 +#define P155_NR_OUTPUT_OPTIONS_MODEL0 6 +#define P155_NR_OUTPUT_OPTIONS_MODEL1 13 // SML (DD3 etc.) +#define P155_NR_OUTPUT_OPTIONS_MODEL2 4 // Holley DTZ541 +#define P155_NR_OUTPUT_OPTIONS_MODEL3 13 // SML-Auto (gleiche OBIS wie Model1) +#define P155_QUERY1_CONFIG_POS 1 +#define P155_RX_BUFFER 64 // vergrößert für 64-bit Werte + +// OBIS-Kennung Indizes +#define Q3D_TOTAL_ACTIVE_ENERGY 1 +#define Q3D_POWER_L1 2 +#define Q3D_POWER_L2 3 +#define Q3D_POWER_L3 4 +#define Q3D_POWER_TOTAL 5 + +#define DD3_TOTAL_ACTIVE_ENERGY_PLUS 1 +#define DD3_POWER_L1 2 +#define DD3_POWER_L2 3 +#define DD3_POWER_L3 4 +#define DD3_POWER_TOTAL 5 +#define DD3_TOTAL_ACTIVE_ENERGY_MINUS 6 +#define DD3_VOLT_L1 7 +#define DD3_VOLT_L2 8 +#define DD3_VOLT_L3 9 +#define DD3_CURRENT_L1 10 +#define DD3_CURRENT_L2 11 +#define DD3_CURRENT_L3 12 + +#include + +ESPeasySerial *P155_MySerial = nullptr; + +// Forward declarations +const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model); +const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model); +unsigned int p155_getRegister(uint8_t query, uint8_t model); +float p155_readVal(uint8_t query, unsigned int model); +void p155_handleSerialInD0(); +void p155_handleSerialInSML(unsigned int model); +void p155_parseValuesD0(); +void p155_parseValuesSML(unsigned int model); +void p155_parseValuesSMLAuto(); +bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len); +void p155_deleteValues(unsigned int model); + +// ============================================================ +// Datenstrukturen +// ============================================================ +struct p155_dataStructD0 +{ + String p155_rxID = "x-x:x.x.x*x"; + float value; + p155_dataStructD0(String xID, float xvalue) + { + p155_rxID = xID; + value = xvalue; + } +}; + +p155_dataStructD0 p155_myDataD0[P155_NR_OUTPUT_OPTIONS_MODEL0] = { + p155_dataStructD0("x-x:x.x.x*x", 0.0), + p155_dataStructD0("1-0:1.8.0*255", 0.0), // Total_Active_Energy_Consumption + p155_dataStructD0("1-0:21.7.0*255", 0.0), // Power L1 + p155_dataStructD0("1-0:41.7.0*255", 0.0), // Power L2 + p155_dataStructD0("1-0:61.7.0*255", 0.0), // Power L3 + p155_dataStructD0("1-0:1.7.0*255", 0.0) // Power L123 +}; + +struct p155_dataStructSML +{ + int posData; // Bytes nach OBIS bis Wert + float factor; // Skalierungsfaktor + byte p155_rxOrbis[6]; + float value; + p155_dataStructSML(int xposData, float xfactor, byte xOrbis[6], float xvalue) + { + posData = xposData; + factor = xfactor; + for (int i = 0; i < 6; i++) + p155_rxOrbis[i] = xOrbis[i]; + value = xvalue; + } +}; + +// OBIS-Kennzahlen +byte p155_rxOrbis0[6] = {0, 0, 0, 0, 0, 0}; +byte p155_rxOrbis1[6] = {1, 0, 1, 8, 0, 255}; // 1-0:1.8.0 Bezug gesamt +byte p155_rxOrbis2[6] = {1, 0, 21, 7, 0, 255}; // 1-0:21.7.0 Wirkleistung L1 +byte p155_rxOrbis3[6] = {1, 0, 41, 7, 0, 255}; // 1-0:41.7.0 Wirkleistung L2 +byte p155_rxOrbis4[6] = {1, 0, 61, 7, 0, 255}; // 1-0:61.7.0 Wirkleistung L3 +byte p155_rxOrbis5[6] = {1, 0, 16, 7, 0, 255}; // 1-0:16.7.0 Wirkleistung gesamt +byte p155_rxOrbis6[6] = {1, 0, 2, 8, 0, 255}; // 1-0:2.8.0 Einspeisung gesamt +byte p155_rxOrbis7[6] = {1, 0, 32, 7, 0, 255}; // 1-0:32.7.0 Spannung L1 +byte p155_rxOrbis8[6] = {1, 0, 52, 7, 0, 255}; // 1-0:52.7.0 Spannung L2 +byte p155_rxOrbis9[6] = {1, 0, 72, 7, 0, 255}; // 1-0:72.7.0 Spannung L3 +byte p155_rxOrbis10[6] = {1, 0, 31, 7, 0, 255}; // 1-0:31.7.0 Strom L1 +byte p155_rxOrbis11[6] = {1, 0, 51, 7, 0, 255}; // 1-0:51.7.0 Strom L2 +byte p155_rxOrbis12[6] = {1, 0, 71, 7, 0, 255}; // 1-0:71.7.0 Strom L3 + +// Model 1: SML (DD3 etc.) – posData herstellerspezifisch +p155_dataStructSML p155_myDataSML[P155_NR_OUTPUT_OPTIONS_MODEL1] = { + p155_dataStructSML(0, 1.0, p155_rxOrbis0, 0.0), + p155_dataStructSML(11, 0.0001, p155_rxOrbis1, 0.0), // kWh + p155_dataStructSML(7, 1.0, p155_rxOrbis2, 0.0), // W + p155_dataStructSML(7, 1.0, p155_rxOrbis3, 0.0), + p155_dataStructSML(7, 1.0, p155_rxOrbis4, 0.0), + p155_dataStructSML(7, 1.0, p155_rxOrbis5, 0.0), + p155_dataStructSML(7, 0.0001, p155_rxOrbis6, 0.0), // kWh + p155_dataStructSML(7, 0.1, p155_rxOrbis7, 0.0), // V + p155_dataStructSML(7, 0.1, p155_rxOrbis8, 0.0), + p155_dataStructSML(7, 0.1, p155_rxOrbis9, 0.0), + p155_dataStructSML(7, 0.01, p155_rxOrbis10, 0.0), // A + p155_dataStructSML(7, 0.01, p155_rxOrbis11, 0.0), + p155_dataStructSML(7, 0.01, p155_rxOrbis12, 0.0), +}; + +// Model 2: DTZ541 – andere posData-Werte +p155_dataStructSML p155_myDataDTZ[P155_NR_OUTPUT_OPTIONS_MODEL2] = { + p155_dataStructSML(0, 1.0, p155_rxOrbis0, 0.0), + p155_dataStructSML(18, 0.0001, p155_rxOrbis1, 0.0), + p155_dataStructSML(7, 1.0, p155_rxOrbis5, 0.0), + p155_dataStructSML(14, 0.0001, p155_rxOrbis6, 0.0), +}; + +// Model 3: SML-Auto – posData wird ignoriert, Scaler kommt aus Telegramm +p155_dataStructSML p155_myDataAuto[P155_NR_OUTPUT_OPTIONS_MODEL3] = { + p155_dataStructSML(0, 1.0, p155_rxOrbis0, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis1, 0.0), // Scaler aus Telegramm + p155_dataStructSML(0, 1.0, p155_rxOrbis2, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis3, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis4, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis5, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis6, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis7, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis8, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis9, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis10, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis11, 0.0), + p155_dataStructSML(0, 1.0, p155_rxOrbis12, 0.0), +}; + +// ============================================================ +// Zustandsvariablen +// ============================================================ +boolean p155_MyInit = false; +uint8_t p155_step = 0; +uint8_t p155_charsRead = 0; +char p155_rxBuffer[P155_RX_BUFFER]; +char p155_ringBuffer[8]; +byte p155_rxOrbis[6]; //|1|0|2|8|0|255 +String p155_rxID; + +int p155_anzBytes; +int p155_posDataAct; +int p155_registerAct; +int p155_outputOptionsAct; + +// Zusätzliche Variablen für SML-Auto +int8_t p155_scaler = 0; // Scaler-Byte aus dem SML-Telegramm +uint8_t p155_autoSubState = 0; // Aktuell zu lesendes Feld (0=Status,1=Time,2=Unit,3=Scaler,4=Value) +uint8_t p155_skipBytes = 0; // Noch zu überspringende Bytes +uint8_t p155_autoDataTyp = 0; // SML-Datentyp des Value-Feldes (5=int,6=uint) +uint8_t p155_listElems = 0; // Verbleibende Kindelemente bei List-Typ (type=7) + +// ============================================================ +// Plugin-Hauptfunktion +// ============================================================ +boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) +{ + boolean success = false; + + switch (function) + { + case PLUGIN_DEVICE_ADD: + { + Device[++deviceCount].Number = PLUGIN_ID_155; + Device[deviceCount].Type = DEVICE_TYPE_DUMMY; + Device[deviceCount].VType = Sensor_VType::SENSOR_TYPE_QUAD; + Device[deviceCount].Ports = 0; + Device[deviceCount].PullUpOption = false; + Device[deviceCount].InverseLogicOption = false; + Device[deviceCount].FormulaOption = true; + Device[deviceCount].ValueCount = P155_NR_OUTPUT_VALUES; + Device[deviceCount].SendDataOption = true; + Device[deviceCount].TimerOption = true; + Device[deviceCount].GlobalSyncOption = true; + break; + } + + case PLUGIN_GET_DEVICENAME: + { + string = F(PLUGIN_NAME_155); + break; + } + + case PLUGIN_GET_DEVICEVALUENAMES: + { + const uint8_t model = P155_MODEL; + for (uint8_t i = 0; i < VARS_PER_TASK; ++i) + { + if (i < P155_NR_OUTPUT_VALUES) + { + uint8_t choice = PCONFIG(i + P155_QUERY1_CONFIG_POS); + safe_strncpy( + ExtraTaskSettings.TaskDeviceValueNames[i], + p155_getQueryValueString(choice, model), + sizeof(ExtraTaskSettings.TaskDeviceValueNames[i])); + } + else + { + ZERO_FILL(ExtraTaskSettings.TaskDeviceValueNames[i]); + } + } + break; + } + + case PLUGIN_WEBFORM_SHOW_CONFIG: + { + string += serialHelper_getSerialTypeLabel(event); + success = true; + break; + } + + case PLUGIN_SET_DEFAULTS: + { + P155_MODEL = P155_MODEL_DFLT; + P155_QUERY1 = P155_QUERY1_DFLT; + P155_QUERY2 = P155_QUERY2_DFLT; + P155_QUERY3 = P155_QUERY3_DFLT; + P155_QUERY4 = P155_QUERY4_DFLT; + success = true; + break; + } + + case PLUGIN_WEBFORM_LOAD: + { + { + const __FlashStringHelper *options_model[] = { + F("D0"), + F("SML"), + F("DTZ541"), + F("SML-Auto"), + }; + constexpr size_t nrOptions = NR_ELEMENTS(options_model); + FormSelectorOptions selector(nrOptions, options_model); + selector.reloadonchange = true; + selector.addFormSelector(F("Model Type"), P155_MODEL_LABEL, P155_MODEL); + } + { + const uint8_t model = PCONFIG(0); + uint8_t outputOptions; + if (model == 1) + outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL1; + else if (model == 2) + outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL2; + else if (model == 3) + outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL3; + else + outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL0; + + const __FlashStringHelper *options[outputOptions]; + for (int i = 0; i < outputOptions; ++i) + options[i] = p155_getQueryString(i, model); + + for (uint8_t i = 0; i < P155_NR_OUTPUT_VALUES; ++i) + { + const uint8_t pconfigIndex = i + P155_QUERY1_CONFIG_POS; + sensorTypeHelper_loadOutputSelector(event, pconfigIndex, i, outputOptions, options); + } + } + success = true; + break; + } + + case PLUGIN_WEBFORM_SAVE: + { + P155_MODEL = getFormItemInt(P155_MODEL_LABEL); + const uint8_t model = P155_MODEL; + for (uint8_t i = 0; i < P155_NR_OUTPUT_VALUES; ++i) + { + const uint8_t pconfigIndex = i + P155_QUERY1_CONFIG_POS; + const uint8_t choice = PCONFIG(pconfigIndex); + sensorTypeHelper_saveOutputSelector(event, pconfigIndex, i, + p155_getQueryValueString(choice, model)); + } + p155_MyInit = false; + success = true; + break; + } + + case PLUGIN_INIT: + { + if (P155_MySerial != nullptr) + { + delete P155_MySerial; + P155_MySerial = nullptr; + } + p155_deleteValues(P155_MODEL); + + if (P155_MODEL == 1) + p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL1; + else if (P155_MODEL == 2) + p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL2; + else if (P155_MODEL == 3) + p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL3; + else + p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL0; + + CONFIG_PORT = 5; // Serial2 + CONFIG_PIN1 = 16; + CONFIG_PIN2 = 17; + P155_MySerial = new ESPeasySerial( + static_cast(CONFIG_PORT), CONFIG_PIN1, CONFIG_PIN2, false, P155_RX_BUFFER); + + if (P155_MySerial == nullptr) + break; + + uint32_t config = (P155_MODEL == 0) ? SERIAL_7E1 : SERIAL_8N1; + P155_MySerial->begin(P155_BAUDRATE, config); + + p155_step = 0; + p155_scaler = 0; + p155_autoSubState = 0; + p155_skipBytes = 0; + p155_autoDataTyp = 0; + p155_listElems = 0; + p155_MyInit = true; + success = true; + + String log = F("Smartmeter: Init="); + log += event->TaskIndex; + log += F(" Model="); + log += P155_MODEL; + log += F(" Port="); + log += CONFIG_PORT; + log += F(" RX="); + log += CONFIG_PIN1; + log += F(" TX="); + log += CONFIG_PIN2; + log += F(" Baud="); + log += P155_BAUDRATE; + addLogMove(LOG_LEVEL_INFO, log); + break; + } + + case PLUGIN_EXIT: + { + p155_MyInit = false; + if (P155_MySerial != nullptr) + { + delete P155_MySerial; + P155_MySerial = nullptr; + } + + p155_deleteValues(0); + p155_deleteValues(1); + p155_deleteValues(2); + p155_deleteValues(3); + break; + } + + case PLUGIN_READ: + { + if (p155_MyInit) + { + int model = P155_MODEL; + UserVar.setFloat(event->TaskIndex, 0, p155_readVal(P155_QUERY1, model)); + UserVar.setFloat(event->TaskIndex, 1, p155_readVal(P155_QUERY2, model)); + UserVar.setFloat(event->TaskIndex, 2, p155_readVal(P155_QUERY3, model)); + UserVar.setFloat(event->TaskIndex, 3, p155_readVal(P155_QUERY4, model)); + success = true; + } + break; + } + + case PLUGIN_TEN_PER_SECOND: + { + if (P155_MODEL == 0) + p155_handleSerialInD0(); + else + p155_handleSerialInSML(P155_MODEL); + success = true; + break; + } + } // switch + return success; +} + +// ============================================================ +// Hilfsfunktionen +// ============================================================ + +float p155_readVal(uint8_t query, unsigned int model) +{ + if (model == 0) + return p155_myDataD0[query].value; + else if (model == 1) + return p155_myDataSML[query].value; + else if (model == 2) + return p155_myDataDTZ[query].value; + else if (model == 3) + return p155_myDataAuto[query].value; + return 0; +} + +unsigned int p155_getRegister(uint8_t query, uint8_t model) +{ + if (model == 0) + { + switch (query) + { + case 1: + return Q3D_TOTAL_ACTIVE_ENERGY; + case 2: + return Q3D_POWER_L1; + case 3: + return Q3D_POWER_L2; + case 4: + return Q3D_POWER_L3; + case 5: + return Q3D_POWER_TOTAL; + } + } + else if (model == 1 || model == 3) + { + switch (query) + { + case 1: + return DD3_TOTAL_ACTIVE_ENERGY_PLUS; + case 2: + return DD3_POWER_L1; + case 3: + return DD3_POWER_L2; + case 4: + return DD3_POWER_L3; + case 5: + return DD3_POWER_TOTAL; + case 6: + return DD3_TOTAL_ACTIVE_ENERGY_MINUS; + case 7: + return DD3_VOLT_L1; + case 8: + return DD3_VOLT_L2; + case 9: + return DD3_VOLT_L3; + case 10: + return DD3_CURRENT_L1; + case 11: + return DD3_CURRENT_L2; + case 12: + return DD3_CURRENT_L3; + } + } + else if (model == 2) + { + switch (query) + { + case 1: + return DD3_TOTAL_ACTIVE_ENERGY_PLUS; + case 2: + return DD3_POWER_TOTAL; + case 3: + return DD3_TOTAL_ACTIVE_ENERGY_MINUS; + } + } + return 0; +} + +const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model) +{ + // D0 + if (model == 0) + { + switch (query) + { + case 1: + return F("Total Active Energy (kWh)"); + case 2: + return F("Power L1 (W)"); + case 3: + return F("Power L2 (W)"); + case 4: + return F("Power L3 (W)"); + case 5: + return F("Power Total (W)"); + } + } + // SML / SML-Auto – gleiche OBIS-Beschriftungen + else if (model == 1 || model == 3) + { + switch (query) + { + case 1: + return F("Total Active Energy Plus (kWh)"); + case 2: + return F("Power L1 (W)"); + case 3: + return F("Power L2 (W)"); + case 4: + return F("Power L3 (W)"); + case 5: + return F("Power Total (W)"); + case 6: + return F("Total Active Energy Minus (kWh)"); + case 7: + return F("Voltage L1 (V)"); + case 8: + return F("Voltage L2 (V)"); + case 9: + return F("Voltage L3 (V)"); + case 10: + return F("Current L1 (A)"); + case 11: + return F("Current L2 (A)"); + case 12: + return F("Current L3 (A)"); + } + } + // DTZ541 + else if (model == 2) + { + switch (query) + { + case 1: + return F("Total Active Energy Plus (kWh)"); + case 2: + return F("Power Total (W)"); + case 3: + return F("Total Active Energy Minus (kWh)"); + } + } + return F(""); +} + +const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model) +{ + if (model == 0) + { + switch (query) + { + case 1: + return F("Consumption_kWh"); + case 2: + return F("L1_W"); + case 3: + return F("L2_W"); + case 4: + return F("L3_W"); + case 5: + return F("L123_W"); + } + } + else if (model == 1 || model == 3) + { + switch (query) + { + case 1: + return F("Energy_Consumption_kWh"); + case 2: + return F("L1_W"); + case 3: + return F("L2_W"); + case 4: + return F("L3_W"); + case 5: + return F("L123_W"); + case 6: + return F("Energy_FeedIn_kWh"); + case 7: + return F("L1_V"); + case 8: + return F("L2_V"); + case 9: + return F("L3_V"); + case 10: + return F("L1_A"); + case 11: + return F("L2_A"); + case 12: + return F("L3_A"); + } + } + else if (model == 2) + { + switch (query) + { + case 1: + return F("Energy_Consumption_kWh"); + case 2: + return F("L123_W"); + case 3: + return F("Energy_FeedIn_kWh"); + } + } + return F(""); +} + +// ============================================================ +// Serial-Handler: gemeinsam für SML, DTZ541 und SML-Auto +// ============================================================ +void p155_handleSerialInSML(unsigned int model) +{ + if (nullptr == P155_MySerial) + { + addLog(LOG_LEVEL_INFO, F("SML: handleSerialIn nullptr")); + return; + } + + String log1 = F("SML: step="); + String logdata1 = F("SML: 1="); + String logdata2 = F("SML: 2="); + // ... (weitere Log-Strings wie bisher) + + unsigned long timeOut = millis() + 100; + + while (P155_MySerial->available() && millis() < timeOut) + { + byte b = P155_MySerial->read(); + + // Ringbuffer für Startsequenz-Erkennung + for (int i = 7; i > 0; i--) + p155_ringBuffer[i] = p155_ringBuffer[i - 1]; + p155_ringBuffer[0] = b; + + // SML-Startsequenz: 1B 1B 1B 1B 01 01 01 01 + if ((p155_ringBuffer[0] == 0x01) && (p155_ringBuffer[1] == 0x01) && + (p155_ringBuffer[2] == 0x01) && (p155_ringBuffer[3] == 0x01) && + (p155_ringBuffer[4] == 0x1B) && (p155_ringBuffer[5] == 0x1B) && + (p155_ringBuffer[6] == 0x1B) && (p155_ringBuffer[7] == 0x1B)) + { + p155_step = 11; + p155_charsRead = 0; + p155_registerAct = 0; + p155_anzBytes = 0; + p155_posDataAct = 0; + p155_scaler = 0; + p155_autoSubState = 0; + p155_skipBytes = 0; + p155_listElems = 0; + } + + switch (p155_step) + { + // ------------------------------------------------------- + // Gemeinsame States: OBIS-Kennung finden (alle SML-Models) + // ------------------------------------------------------- + case 11: // Startzeichen 0x77 finden + if (b == 0x77) + { + p155_step = 12; + p155_charsRead = 0; + } + break; + + case 12: // Längen-Byte: muss 0x07 sein + p155_step = (b == 0x07) ? 13 : 11; + break; + + case 13: // 6 OBIS-Bytes sammeln + if (p155_charsRead <= 5) + p155_rxOrbis[p155_charsRead++] = b; + + if (p155_charsRead >= 6) + { + p155_charsRead = 0; + p155_registerAct = 0; + + // OBIS-Kennung in Datentabelle suchen + for (int i = 1; i < p155_outputOptionsAct; i++) + { + byte *orbis = nullptr; + if (model == 1) + orbis = p155_myDataSML[i].p155_rxOrbis; + else if (model == 2) + orbis = p155_myDataDTZ[i].p155_rxOrbis; + else if (model == 3) + orbis = p155_myDataAuto[i].p155_rxOrbis; + + if (orbis && p155_byteArrayCompare(p155_rxOrbis, 6, orbis, 6)) + { + p155_registerAct = i; + if (model != 3) + p155_posDataAct = (model == 1) + ? p155_myDataSML[i].posData + : p155_myDataDTZ[i].posData; + break; + } + } + + if (p155_registerAct != 0) + { + // Weiter je nach Model + if (model == 3) + { + // SML-Auto: dynamisches TL-Parsing starten + p155_scaler = 0; + p155_autoSubState = 0; // beginnt mit Status-Feld + p155_skipBytes = 0; + p155_listElems = 0; + p155_step = 30; + } + else + { + // Hardcodiertes Model: direkt zu posData-Auswertung + p155_step = 20; + } + p155_charsRead = 0; + } + else + { + p155_step = 11; // Kennung nicht gefunden, weiter suchen + } + } + break; + + // ------------------------------------------------------- + // States 20-21: Hardcodierte Models (SML, DTZ541) + // ------------------------------------------------------- + case 20: // Bytes bis posData lesen, dann Datentyp ermitteln + p155_rxBuffer[p155_charsRead++] = b; + if (p155_charsRead >= p155_posDataAct) + { + // BUGFIX: ltyp = b (das zuletzt gelesene Byte), NICHT ltyp = 0 + byte ltyp = b; + p155_anzBytes = 4; // Default + if (ltyp == 0x52 || ltyp == 0x62) + p155_anzBytes = 1; // 8-bit + else if (ltyp == 0x53 || ltyp == 0x63) + p155_anzBytes = 2; // 16-bit + else if (ltyp == 0x55 || ltyp == 0x65) + p155_anzBytes = 4; // 32-bit + else if (ltyp == 0x59 || ltyp == 0x69) + p155_anzBytes = 8; // 64-bit + p155_step = 21; + } + break; + + case 21: // Nutzdaten sammeln + p155_rxBuffer[p155_charsRead++] = b; + if (p155_charsRead >= p155_posDataAct + p155_anzBytes) + { + p155_parseValuesSML(model); + p155_step = 11; + p155_charsRead = 0; + } + else if (p155_charsRead >= P155_RX_BUFFER - 1) + { + // Abbruch: Buffer-Überlauf + p155_step = 11; + } + break; + + // ------------------------------------------------------- + // States 30-33: SML-Auto – dynamisches TL-Parsing + // + // TL-Byte Format: + // Bits 7-4: Typ (0=optional, 5=int signed, 6=uint, 7=Liste) + // Bits 3-0: Gesamtlänge inkl. TL-Byte + // Primitive Typen: Datenbytes = bits3-0 - 1 + // Listen (Typ 7): Kindelemente = bits3-0 - 1 (NICHT Byte-Anzahl!) + // + // autoSubState: 0=Status, 1=Time, 2=Unit, 3=Scaler, 4=Value + // ------------------------------------------------------- + case 30: // TL-Byte des aktuellen Feldes lesen + { + uint8_t tlLen = (b & 0x0F); // Gesamtlänge inkl. TL + uint8_t tlTyp = (b >> 4) & 0x07; // Datentyp + uint8_t dataBytes = (tlLen > 0) ? (tlLen - 1) : 0; // Datenbytes (bei Primitiven) + + // Debug-Log: zeigt jeden TL-Byte (nur bei Log-Level DEBUG aktiv) + if (loglevelActiveFor(LOG_LEVEL_DEBUG) && p155_registerAct > 0) + { + String tl = F("SML-TL: reg="); + tl += p155_registerAct; + tl += F(" sub="); + tl += p155_autoSubState; + tl += F(" b=0x"); + tl += String(b, HEX); + tl += F(" typ="); + tl += tlTyp; + tl += F(" data="); + tl += dataBytes; + addLogMove(LOG_LEVEL_DEBUG, tl); + } + + if (p155_autoSubState < 3) + { + // Status (0), Time (1), Unit (2) + if (tlTyp == 7) + { + // Listen-Typ: bits3-0 = Anzahl Kindelemente direkt (NICHT Byte-Anzahl!) + // Beispiel: 72 = type7, 2 Kinder (62 01 + 65 xx xx xx xx fuer SML_Time) + uint8_t numElems = tlLen; + if (numElems == 0) + { + p155_autoSubState++; // leere Liste → weiter + } + else + { + p155_listElems = numElems; + p155_step = 36; + } + } + else if (dataBytes == 0) + { + p155_autoSubState++; // Feld nicht vorhanden → weiter + // state 30 bleibt, liest nächstes TL + } + else + { + p155_skipBytes = dataBytes; + p155_step = 31; // Bytes überspringen + } + } + else if (p155_autoSubState == 3) + { + // Scaler-Feld + if (dataBytes == 0) + { + p155_scaler = 0; // kein Scaler → Faktor 1 + p155_autoSubState++; + // state 30 bleibt + } + else + { + // Scaler ist immer 1 Byte (int8) + p155_step = 32; + } + } + else if (p155_autoSubState == 4) + { + // Value-Feld + if (dataBytes == 0) + { + // Kein Wert → abbrechen + p155_step = 11; + } + else + { + p155_autoDataTyp = tlTyp; + p155_anzBytes = dataBytes; + p155_charsRead = 0; + p155_step = 33; // Wert-Bytes lesen + } + } + break; + } + + case 31: // Bytes überspringen (Status/Time/Unit, primitive Typen) + p155_skipBytes--; + if (p155_skipBytes == 0) + { + p155_autoSubState++; + p155_step = 30; // nächstes TL-Byte lesen + } + break; + + case 32: // Scaler-Byte lesen (int8, signed) + p155_scaler = (int8_t)b; + p155_autoSubState++; + p155_step = 30; // weiter zum Value-TL + break; + + case 33: // Wert-Bytes sammeln + if (p155_charsRead < P155_RX_BUFFER - 1) + p155_rxBuffer[p155_charsRead++] = b; + + if (p155_charsRead >= p155_anzBytes) + { + p155_parseValuesSMLAuto(); + p155_step = 11; + } + break; + + // ------------------------------------------------------- + // States 36-37: Listen-Typ (type=7) Kindelemente überspringen + // + // Benötigt für SML_Time mit Zeitstempel, z.B.: + // 72 62 01 65 xx xx xx xx (Liste mit 2 Kindelementen) + // - 72: Liste, 2-1=1 Kind → falsch! 72 hat 2 Kinder (secType + secValue) + // Korrekte Interpretation: bits3-0 - 1 = Anzahl Kinder + // 72 → 2-1=1 Kind? oder 2 Kinder? + // Praxis: State 36 liest TL-Byte jedes Kindes und überspringt seine Daten + // ------------------------------------------------------- + case 36: // TL-Byte eines Listkind-Elements lesen + { + uint8_t cLen = (b & 0x0F); + uint8_t cTyp = (b >> 4) & 0x07; + uint8_t cData = (cLen > 0) ? (cLen - 1) : 0; + + if (cTyp == 7) + { + // Verschachtelte Liste: aktuelles Element durch seine Kinder ersetzen + p155_listElems = p155_listElems - 1 + (cLen > 0 ? cLen - 1 : 0); + } + else + { + p155_listElems--; + if (cData > 0) + { + p155_skipBytes = cData; + p155_step = 37; // Daten überspringen, dann zurück zu 36 oder 30 + break; + } + } + + if (p155_listElems == 0) + { + p155_autoSubState++; + p155_step = 30; + } + // sonst: weiter in State 36 für nächstes Kind + break; + } + + case 37: // Daten eines Listkind-Elements überspringen + p155_skipBytes--; + if (p155_skipBytes == 0) + { + if (p155_listElems == 0) + { + p155_autoSubState++; + p155_step = 30; + } + else + { + p155_step = 36; // nächstes Kindelement + } + } + break; + + default: + p155_step = 0; + p155_charsRead = 0; + p155_anzBytes = 0; + p155_registerAct = 0; + p155_posDataAct = 0; + p155_autoSubState = 0; + p155_listElems = 0; + break; + } + } // while serial available + + if (loglevelActiveFor(LOG_LEVEL_DEBUG)) + { + log1 += p155_step; + log1 += F(" sub="); + log1 += p155_autoSubState; + log1 += F(" reg="); + log1 += p155_registerAct; + addLogMove(LOG_LEVEL_DEBUG, log1); + } +} + +// ============================================================ +// D0-Serial-Handler (unverändert) +// ============================================================ +void p155_handleSerialInD0() +{ + if (nullptr == P155_MySerial) + { + addLog(LOG_LEVEL_INFO, F("D0: handleSerialIn nullptr")); + return; + } + String log1 = F("D0: Log="); + String logdata1 = F("D0: Data="); + + unsigned long timeOut = millis() + 10; + while (P155_MySerial->available() && millis() < timeOut) + { + char c = (char)P155_MySerial->read(); + logdata1 += c; + + if (c == '(') + { + p155_rxBuffer[p155_charsRead] = '\0'; + p155_rxID = String(p155_rxBuffer); + p155_charsRead = 0; + } + else if (c == ')') + { + p155_rxBuffer[p155_charsRead] = '\0'; + log1 += F(" ID="); + log1 += p155_rxID; + log1 += F(" val="); + log1 += String(p155_rxBuffer); + if (p155_charsRead > 1) + p155_parseValuesD0(); + p155_charsRead = 0; + } + else if (c == 0x0D || c == 0x0A) + { + p155_charsRead = 0; + } + else if (p155_charsRead < P155_RX_BUFFER - 1) + { + p155_rxBuffer[p155_charsRead++] = c; + } + } + addLogMove(LOG_LEVEL_DEBUG, log1); + addLogMove(LOG_LEVEL_DEBUG, logdata1); +} + +// ============================================================ +// Werte parsen: hardcodierte SML-Models (1, 2) +// ============================================================ +void p155_parseValuesSML(unsigned int model) +{ + String log = F("SML Parse: reg="); + log += p155_registerAct; + log += F(" pos="); + log += p155_posDataAct; + + byte *orbis = (model == 1) + ? p155_myDataSML[p155_registerAct].p155_rxOrbis + : p155_myDataDTZ[p155_registerAct].p155_rxOrbis; + + if (!p155_byteArrayCompare(p155_rxOrbis, 6, orbis, 6)) + return; + + int lLen = p155_posDataAct; + byte lTyp = p155_rxBuffer[lLen - 1]; // BUGFIX: ltyp aus Buffer, nicht 0 + float lvalue = 0.0f; + + int8_t lint8; + uint8_t luint8; + int16_t lint16; + uint16_t luint16; + int32_t lint32; + uint32_t luint32; + + switch (lTyp) + { + case 0x52: + lint8 = p155_rxBuffer[lLen]; + lvalue = (float)lint8; + break; // S8 + case 0x53: + lint16 = ((uint8_t)p155_rxBuffer[lLen] << 8) | (uint8_t)p155_rxBuffer[lLen + 1]; + lvalue = (float)lint16; + break; // S16 + case 0x55: + lint32 = ((uint8_t)p155_rxBuffer[lLen] << 24) | + ((uint8_t)p155_rxBuffer[lLen + 1] << 16) | + ((uint8_t)p155_rxBuffer[lLen + 2] << 8) | + (uint8_t)p155_rxBuffer[lLen + 3]; + lvalue = (float)lint32; + break; // S32 + case 0x59: + lint32 = ((uint8_t)p155_rxBuffer[lLen + 4] << 24) | // S64 → nur untere 32bit + ((uint8_t)p155_rxBuffer[lLen + 5] << 16) | + ((uint8_t)p155_rxBuffer[lLen + 6] << 8) | + (uint8_t)p155_rxBuffer[lLen + 7]; + lvalue = (float)lint32; + break; + case 0x62: + luint8 = p155_rxBuffer[lLen]; + lvalue = (float)luint8; + break; // U8 + case 0x63: + luint16 = ((uint8_t)p155_rxBuffer[lLen] << 8) | (uint8_t)p155_rxBuffer[lLen + 1]; + lvalue = (float)luint16; + break; // U16 + case 0x65: + luint32 = ((uint8_t)p155_rxBuffer[lLen] << 24) | + ((uint8_t)p155_rxBuffer[lLen + 1] << 16) | + ((uint8_t)p155_rxBuffer[lLen + 2] << 8) | + (uint8_t)p155_rxBuffer[lLen + 3]; + lvalue = (float)luint32; + break; // U32 + case 0x69: + luint32 = ((uint8_t)p155_rxBuffer[lLen + 4] << 24) | // U64 → untere 32bit + ((uint8_t)p155_rxBuffer[lLen + 5] << 16) | + ((uint8_t)p155_rxBuffer[lLen + 6] << 8) | + (uint8_t)p155_rxBuffer[lLen + 7]; + lvalue = (float)luint32; + break; + } + + float factor = (model == 1) ? p155_myDataSML[p155_registerAct].factor + : p155_myDataDTZ[p155_registerAct].factor; + + if (model == 1) + p155_myDataSML[p155_registerAct].value = lvalue * factor; + if (model == 2) + p155_myDataDTZ[p155_registerAct].value = lvalue * factor; + + log += F(" typ=0x"); + log += String(lTyp, HEX); + log += F(" val="); + log += lvalue; + addLogMove(LOG_LEVEL_DEBUG, log); +} + +// ============================================================ +// Werte parsen: SML-Auto (Model 3) +// ============================================================ +void p155_parseValuesSMLAuto() +{ + // FIX2: Bei >4 Bytes (z.B. int64) obere Bytes ignorieren, untere 4 nehmen + // (wie Model 1 – energy-Werte liegen im unteren 32-bit-Bereich) + int startByte = (p155_anzBytes > 4) ? (p155_anzBytes - 4) : 0; + int readBytes = (p155_anzBytes > 4) ? 4 : p155_anzBytes; + + uint32_t rawU = 0; + for (int i = 0; i < readBytes; i++) + rawU = (rawU << 8) | (uint8_t)p155_rxBuffer[startByte + i]; + + float lvalue = 0.0f; + if (p155_autoDataTyp == 5) // signed int + { + int32_t raw = (int32_t)rawU; + // Vorzeichenerweiterung nur nötig wenn < 4 Bytes gelesen + if (readBytes == 1 && (rawU & 0x80)) + raw |= (int32_t)0xFFFFFF00; + else if (readBytes == 2 && (rawU & 0x8000)) + raw |= (int32_t)0xFFFF0000; + lvalue = (float)raw; + } + else // unsigned (typ 6) oder unbekannt + { + lvalue = (float)rawU; + } + + float scaledValue = (p155_scaler != 0) + ? lvalue * powf(10.0f, (float)p155_scaler) + : lvalue; + + p155_myDataAuto[p155_registerAct].value = scaledValue; + + if (loglevelActiveFor(LOG_LEVEL_INFO)) + { + String log = F("SML-Auto: reg="); + log += p155_registerAct; + log += F(" typ="); + log += p155_autoDataTyp; + log += F(" bytes="); + log += p155_anzBytes; + log += F(" start="); + log += startByte; + log += F(" scaler="); + log += p155_scaler; + log += F(" raw="); + log += lvalue; + log += F(" val="); + log += scaledValue; + addLogMove(LOG_LEVEL_INFO, log); + } +} + +// ============================================================ +// D0 Werte parsen (unverändert) +// ============================================================ +void p155_parseValuesD0() +{ + String log = F("D0 Parse: ID="); + log += p155_rxID; + for (int i = 1; i < p155_outputOptionsAct; i++) + { + if (p155_rxID == p155_myDataD0[i].p155_rxID) + { + p155_myDataD0[i].value = String(p155_rxBuffer).toFloat(); + log += F(" → val="); + log += p155_myDataD0[i].value; + break; + } + } + addLogMove(LOG_LEVEL_DEBUG, log); +} + +bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len) +{ + if (a1len != a2len) + return false; + for (int i = 0; i < a1len; i++) + if (a1[i] != a2[i]) + return false; + return true; +} + +void p155_deleteValues(unsigned int model) +{ + if (model == 0) + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL0; i++) + p155_myDataD0[i].value = 0; + else if (model == 1) + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL1; i++) + p155_myDataSML[i].value = 0; + else if (model == 2) + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL2; i++) + p155_myDataDTZ[i].value = 0; + else if (model == 3) + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL3; i++) + p155_myDataAuto[i].value = 0; +} + +#endif // USES_P155 From e270aa1db62c831efc9a71a9bddd8dd91738f0ca Mon Sep 17 00:00:00 2001 From: Peter Emke Date: Wed, 13 May 2026 15:17:35 +0200 Subject: [PATCH 2/7] Update Doc PR#5542 --- docs/source/Plugin/P155.rst | 52 +++++++++++--------------- docs/source/Plugin/P155_IR_Reader.png | Bin 0 -> 266624 bytes docs/source/Plugin/P155_Meter.png | Bin 0 -> 182956 bytes 3 files changed, 22 insertions(+), 30 deletions(-) create mode 100644 docs/source/Plugin/P155_IR_Reader.png create mode 100644 docs/source/Plugin/P155_Meter.png diff --git a/docs/source/Plugin/P155.rst b/docs/source/Plugin/P155.rst index f145f39552..f904f07a49 100644 --- a/docs/source/Plugin/P155.rst +++ b/docs/source/Plugin/P155.rst @@ -25,8 +25,14 @@ Maintainer: |P155_maintainer| Used libraries: |P155_usedlibraries| -Supported hardware ------------------- +Hardware +-------- +This plugin uses an infrared reader to read data via the optical infrared interface of an electricity meter. + +.. image:: P155_Meter.png + +Devices +~~~~~~~~~~~~ Supports all smart meters using the SML protocol (Smart Message Language) and older meters using the D0 protocol (IEC 62056-21). @@ -42,45 +48,31 @@ Reading Head ~~~~~~~~~~~~ To connect a smart meter to the ESP, an IR reading head is required. -A compatible TTL/UART reading head is available: +Example for a compatible TTL/UART reading head : -.. csv-table:: - :header: "Store", "Link" - :widths: 5, 40 +* Hichi TTL, IR Reader +* bitShake SmartMeterReader - UART | IR Reader - "eBay","`TTL/UART IR Reading Head `_" +.. image:: P155_IR_Reader.png The reading head includes a fully assembled PCB with IR diode and phototransistor, a ring magnet to attach to the meter, and a housing with cover. - -Precautions ------------ - -The plugin uses Hardware Serial2 on fixed pins: - -* RX = GPIO 16 -* TX = GPIO 17 - +The plugin uses Hardware Serial which can be configured in ESPEasy UI. The meter's serial interface operates at 9600 baud with 3.3V logic levels. No level converter is required for 3.3V meters. -Hardware --------- - -Connect the meter to the ESP32-S3 as follows: +Wiring +~~~~~~~~~~~~ +Example how to connect the Reader to the ESP32 as follows: .. code-block:: none - Smart Meter ESP32-S3 + IR-Reader ESP32 TXD --> GPIO 16 (RX2) RXD --> GPIO 17 (TX2) + VCC --> 3.3V GND --> GND -.. note:: - - GPIO 16 and 17 are fixed as Hardware Serial2 (UART2) on the ESP32-S3. - These pins cannot be changed via the web interface. - Configuration ------------- @@ -139,7 +131,7 @@ SML and SML-Auto share the same OBIS codes: "11", "L2_A", "1-0:51.7.0", "A", "Current L2" "12", "L3_A", "1-0:71.7.0", "A", "Current L3" -\* SML-Auto delivers energy values in Wh. Enter ``VALUE/1000`` in the formula field to get kWh. +\* SML-Auto delivers energy values in Wh. Enter ``%VALUE%/1000`` in the formula field to get kWh. D0: @@ -170,15 +162,15 @@ Indicators (recommended settings) :header: "Indicator", "Value Name", "Interval", "Formula", "Extra information" :widths: 12, 10, 5, 8, 20 - "Energy_Consumption_kWh", "Import_kWh", "10", "VALUE/1000", "SML-Auto only: Wh to kWh" - "Energy_FeedIn_kWh", "Export_kWh", "10", "VALUE/1000", "SML-Auto only: Wh to kWh" + "Energy_Consumption_kWh", "Import_kWh", "10", "%VALUE%/1000", "SML-Auto only: Wh to kWh" + "Energy_FeedIn_kWh", "Export_kWh", "10", "%VALUE%/1000", "SML-Auto only: Wh to kWh" "L123_W", "Power_W", "1", "", "No formula needed" "L1_V / L2_V / L3_V", "Voltage_V", "10", "", "" .. note:: With **SML-Auto**, energy registers deliver the raw value in Wh (scaler is read - automatically from the telegram). Enter ``VALUE/1000`` in the ESPEasy formula + automatically from the telegram). Enter ``%VALUE%/1000`` in the ESPEasy formula field to get kWh. Power values (W) require no formula. Change log diff --git a/docs/source/Plugin/P155_IR_Reader.png b/docs/source/Plugin/P155_IR_Reader.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb77334ce6956064b8ac54c3d0d8065e7bac4c9 GIT binary patch literal 266624 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

dtOKi{@|W8h-ehXgskPn@K! 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

4(?!fjwdc+~^BL~6E`MMJUJq#XOcTJqL!|!Rt zp9^eqmH`+E_O@&9CC|G?%9jb2XMZ|=g_1z6G$SBAiA>;P^5{CwpcE*3qyQS93BWDq zq4AzQ<=!MU!!(}p6qG?vPS;sYZ+GW3xnKlL{$e2!cIArD2TXuen2y$71&2>nb<)Glmg=i5|r3u?2Ez9L&^0r1b~du!j!Jl{9BM3s_-k$OHl`| zsd*^q{SK|Rf#6Hv;p>^0_%o&KY3Bv42@Z=*jf-ma4b!Cx&3DgTwRHU^43f~QDxHB1 zIL4a}&p-y3Bv7O>EqY~oGN4)^5^T2Nam}4YQ7rOGz2+t*X>+C;fWGa2zXK>oMMmB= zC67T05E`@6l0LwWTw0$0*9L%5E;Q!3A>0r!B0z~M+#8dM2MsMB zB`!od6ET!FmtBf)_+M?!4uXcgUHw1R-=|O82b@V)k}TCRviyb=@~8eSvj=u;>8hf) z@MPx-~-OU$J39-;K1%2;8ddOJQyuNn;tuJP!Ry8QQY|8{4S zzH#@Ex1f+Q49aT4kJgI>_2TJJBv5fW{MDb0a4?*2Y^h1Mzgm0A0DvAv{f0zemhp9j z3asswAN5zX92vFUt{vPix^wFP1Ylq5zLD1#ufM}a_?cOZF<~rBX&Vn{K64v{axw|C zFh0q_YEP*?UkXS}0Aw%~%kc2fyrX;~@Y-bPa}#~Kl=k7$Z#ACQAJ*)287(NAof59VrY%C^Y$t@QC zXSTMhh%YIne+wX58e?lB274vR@zpmYOB0ni!ub{(_ri|tga($Z)? z6sK9asSHX4qen!Cd0*#TJ{VidsmVJ@-u;B>H$Qdgcw7rsP>qXDIrLW{QblhJLa*F~Tv#4ziG14N<$D+RbwoZ!x z%Gvb)-Ps2s?K^1$L~gfUn%<#Vi<8KugK?zML8$%7rhvH89XFK~2HHI?kQcqjzR4wa zIj%X>_Rn+`1t9>9oK~ZO5?J%m{H|BmH~|BH=7!(vMVspKu90Ng#XQ>dRkA1 zdlTd?xJU@)kvkDsBPk^%WjxRgl)|d)q#N1+vD8$%kl9v^%PD^R* zb*yP$cmYQrRRW0<|EHE1FzX9}oB+wdzS}42=aFHI*%43H2OzRCWqp0q-#EUSP|Tfs!`i1LcQDGXc7<=a_4uU&Jm7e(-V3 zUL^aFSioJMCBE1C^uG>+MW5So>$m!Ix^}+l&a9nOW|)uVM6C~(n~+)|tLsxkcdGY) z4sII7FRUV~k9i=kNw7d2G^GJr3$JU$RLJ5hkAuSC6YXSVusLnJKgGXn#Qr>F>Pw#5 zO@rtScH7GWI$U2&bItvxn4Mqe2Gj+ua{=e<6@~Mq__xyGwycKGZz)u zt5h*}b#dgob@QFqW4cyT=#)Vh+k8jOMk8A~sWbq2U#;r}Ubu9Zlhm4Jcud2WcMIXH zMN_dz%izP~@$;x8%Jn(1m4n#X*wHOOa z##-5`W>igWt5Js@Fu^_rLcW66@>QSZN)+uz1g{NTQm)F1y zK5qb(3XawFD0e5{gU;_6(J1vKAUq&`^lvqWzI9c;uew=qafTjvdfwhz8QuYf9XkW5 zk8k~4ja~1vmr8eXIS4Y?Y0bi;@biK74=5361+XTemm1F0$3b0yKP$tP)C9%ei0wzS zuA&>jSFvfNv$0?Odu^52F`_so(Cgs8La19J(Gf|WFZDbIY z6|=Q6b$F13G+$poHmQU>6bz!S#_V|Xas)KN%uOVE%Pj0Vo={-21I%@o(h#Vh^{ARu zUapI4_Q*gl8z(25Dvrp>hP)ATe(EVyD|^O@^}g*8oI+i87~!l=L33u@H86kmP5$MW z7i$`Qfl}fdE)b@%-X_)4VkyEI$?hY^Z$?VXTazP&dLW#+`%if3PB^&x6XW*e$ge@4 zCx8j(phad6y?&zf>E?_kUF7w~>3q!)P}kxoQhRs&T?yEM1tDrAj~8`d(SW)NgHbbq z7H9R^HZz~z|MS1@3EdYOzsmlO)vT{1W5GymSJ%`(u*BC-H16_t87T&~!*|g8ThUzA z^xZ3_&{*jrFFSv=bN2}oiv~l=r)e;sC{oO2(jz%nV$_nE3GKorhqBH{V++_Rwt23P z70Ywpq)_O0Fq|%oB5m#x4Zz5C6NZHlj=J1CGaXM+Nl#DfRIeU71kH9;3{- z8V%dBg&X0lzk5;=Lj;nn3Anz!YxTVbzMtLi{s7F$2b%~WVDKTy0t3Y{0tgC0RAtVo zeAq&pQDC!=FbV(>;J)DN-nOKpjnHV3Kl`AO~rI-2}#H2b{G)5O=_Ax6>T zaM_#Q|L<5RF@3}%_j6WS+Fx~ND61@g!1n6x<-q&nYU0a!u%rPcy11~0XEGL+&HenF z6wq<>fe8K?uFWHdgAWcO#rhbw;!E=_J$CfxS)S9XnXT_3_%c>XSu8*Hvtm3|(3dad zsTLsKq^NL+1qCh^3u6KR`Y9NIIPV6=fUQU+);miHA>4&5Vl0-u@zmMuzWCXa3S{6k zvUs6_GI~bWoh^4PW8*ju1d$Y+Jd7m(-0?j+dSOpg;fK*wU_pnmg@uWeI!KCkw$Le< z4&&p z7O>_Ty5cdMbVcRLX+~RU_bZeH2Y5SYoLcaF%J9~S2(6NSw-4JA|LCq*a z#pbO9NJM1r{#?g@Z%}Yi_k$5b^gA%_ciKOQ>)Tf6PwrNfYCBD#_~i}_Q(U)8_YC(# zLx2gh(7vfCdZ8`Mx|h*JZbSRq2w^hg6Y4W=m80niLXj^>t@jt3npF z%fJN6#dccQbYUk_!Q5$S6*p<`B#*MEJxZmq_-b3t5{FS17K6Ks=O>hc$jHW^-?73; zPcvP)3@VU7Hn+aMVG>zJiPW;-@Fml-t}S`BR4<`L5v(Y{7~i?_XKwxbEg*n1vrtUx zOG&?zQL~d`-nLIsfm*&^+qp$7M$E*|or}!^^LIxrNxvs1{XC}g2eoR5h{)zphWB#t zrjh4fUGLA{0r?c6P4Ykz2oPoOHIIk0|BA#1dM`A|u|Pl&3 ze_9hG`K&=hkq|o!t_zCC<g3KD<_VVXUr~8$B~@QWmn$jP>c}! zRA#U^KW~v=Vua-2x}e03>{lXI-bG!MV^vM+TEV9q7DIJ^b_#!h74W=Ym4v~dI;86F zAw~1Gaqv7PsW41q6VhP0c5n>=%65Dhsf=E2nxf?(EOVAsFMb)=+^^mNqYErD5yJtI z4yTa0KG>VUqHT&@nOKHp)wS4XJ1*YggLX;$okfgg?8n}otv$UzbN4@(Z*&H_DR^JL zMs*IfYmmzV(KkLPm<=g({c%OsmG}MJ{aum&zEu&m&qDCPw_?W#kuGLBuDw^Pa<_C| zpS{k!@Q_DJ2Hg~zHIvv(ui&;jTRWh6@?6(s7rOQ|BwyrJcsoap>-qC%-Ugy?0=A!l zcb@8O6~YVBNQxzF(G_wC&vZ~bjdV#9lt^he$bJ#|YVbXsIG=D!^$+2#Ny$+p9scgy z*zk|q?fJbe0|u-e{MGZ9NyFwQFqVCU4>m{3&!0eX8cH&sBYzU(9Z>i|q%m|N+D)B8z$$BUhgS4iIwKR2;wWKAt35kVEOSRYb4^rv zN^Nv;r{CbSi1e0Sn)Dk!^H)m;f?phM&;HAodqhc2Hw>B!%`Z;-oK5It`JSgfPUbAJ z&QvACdGeCsD~Z$F%%GG+K42=f4k34k_D28k$%hlS-$_i#FU?2cbrUS8qL{qR_yuQ|JVdv zz|bTis`0=Qz2Z{83OtFjPIZvHE(|r$Qin?TjER!R=?rf?0|#;|nc7Gb#C;gbQxN$? zo24;k?Gb9G^H$mcpDF(Rt7n5Cd|Nij9v@r^Zm*{}q};*yAdD_qEFqnpf|eG6OhEe@ z!iSI`MOUbZka7H>Q2=#fJT`Voe1RYCATu-fJl10-7EIr^lqF9HfmOzv@B*Ti`c`KP zGj;*{w*3ku=LIFuhxW|uw<;^*Ya#bOP>B}OG{xRON@EwDgw;{amQfdGN{D3~2JzU> z4-b%;ra-bqLZ5l<+Uo$cE=PQ8N_5baFRbR3i$UKX*ae}Bgkn%I5q0oi z?jFez6S>_{SGkre8aMWZf2OZ+wqqp)-3;3>bA$$hg4&aWIWOLx&D!0c-rtB1wYpk5 z+dZwy(;(A0%#3@;QmA`j$0E@SG&Kd1h#w2yO)d#JZmG@Hr@bp--u$?UjetI|{jtue zJ8wYs!>xF+lvwtMw7fdz&6eWReGq@<+%u(2q(DEO*0;pmrzn-0+U8Hpf*MO}EBIQOG4q(g6 zqjiJ-6%TV+VW^*(rF6(PJYX4-~an>JjN3&g<^yxtQy5{SBxVN$Yq$$JV*uXN8DRDio!4vq)&~8RUsso- z|5b>Dd1;gOOSr*B?O+iCWb^iuk31MRiI6Q!H&Iq6NA@unulE7!LcaKoM41!HumWi} z{>K;(TWvvI6OKFlX9pHT2$0cG8_{FGqva{Hu!q5ixHyLb=a}7=lZvU-CqASBW`5^0 zR(^X%_q%*n7%dddqwug;jrW83RhU8q0YKsFKnR^o(r(`G-yg@&UyrVW(eFtJdzIme zUO%wu`o{adgBYiOEax$)y`C0~xh30_ecF_Oh({(CFBbG+Jd0dz;q`x%2Yl;8FDH;* zszqD&e!->1TWKGPW{C{;BP-ViGHO0Y?0^a}FNtW}bdV87#dv!f%nIo@?0nWkX zZ}es}Di^UbvSN86HeqiQAD#g^YAh&7Q&HZ0W5sE~7ubPyX@0xm-;*He;XoO-z1n5h zL4N%7iOSBDkZDC93%ex5B5I^F_>~9G(~v{4{k{D~pi{oDt9mjHY{&7$HnHALF@VnG zC~Z#U{&pw21wbl1Xl}i{C);Djs{CYmu<`T2a*iZ2+%XCOE7&8;+wS^GheR*t7x#%t zd8PZ{!ELCRghCru70PTf7PAx!UYkVA9L<)_nb8hYdwQYP`_e4$H8Z)33p#9b7IRB8 zj)1t|u5hhLRGq^0&90TIfo|K+y1+@X^I$oK>-jvT+u-n_OkC7@o=EfHfzK}B0{N$3 zA-+X|>uT^UxNZ_8aY#=}7M?1%+H3wcmH+8MVAXq&hH~CW@tOMX*t%7;!>5D4#G&@I zv$1*%Ppt;m#^mRGek=TV|BkxSTv${hznZNUukc5q0L{+XbvwfJ`KdQstR`pVSJHBx zP7aRi^Mi)TS3{7ZD07(rKIZJY`h-Br-m)r5(=Un88jK-y6F&fIh0PyA`mCwy3e3Oz zq1oSrLS~ncy02a2m&egfdT-HfX(>=&v&BV->-zoc(%j-7DsR`JMy9UX8k7M!2A+^A znN8dHMUTO>PYg{er3gW1n;Kwt^7ZlF{Ym^D)j7bz$i!n|XAcz57*N|4-F0(njTdCQ zOUvU`H8qzd(wylihfZKN7CYc|33j1~edpD=5+zGyS;Lv-;M`3G-yvA<;L+htqw{^w z{qDW*_RXc&@Ppj4eIfvYqwbvkFjFuS78|gUCQiVW@1NJ z3v}gfGY1q{R2$WD^~ESS5o6Tp!lh~##$_7)a2&w=&n>blR3r8lOA;qzlx-{$6uf!- zvWfcZp4NeDyvtc7`_nFohg$KB*Q2_s@#}^n;sFXJ&tEi(x z=R_zMg)atbRI_|{mBYx0x)Y@j%P$ZbVG4X3q!me0;XDGZ6LjF*y5Kj%T!&jbqgDsv zcipO@mHO#^HXg#+dYV+#-+t@P+NDnc>zd0OJ4%7`KEt!%A@Qr}O$NB3{`8__D|3 z^{toQs`I^Ci@Rq5V8$nsnY)G+Sr)1I*k+8H8^vQHLbgTlPtRFWVQ5bSoC9p!KUSRg zbnO+L1?2RGmn#$?a)RKef1d^AjL?wUo_T4p6~BGC8RhTj3=RS@Nr1j;{OA%&(4aDl zN$w==0b{{RCf@d!4P}tQcQbOZs2-Rnwd)3MQ4y1qJzNdj`VF_EgQG7cn7&KMFP~uP zv4dsHwXxdy1>rjaln27*XWHcxWt4VxwpFob*L%O1(LXgxvhrW)1ezz7tmf;Vt!FU#!2f z6G+eeD2MJcxrw7$F^~b0%^z73UkkRqUuj720-!~RQ$n{H_mEI3@c4}BwH)}48xhKY( z|2UwVH&^DBt=NbB_T~feXWQCn>MxXublf|*lKhSlQfq|0a1zFclzlW3XzCj6KqJg$ z!e-p1)6i-*L2n!>RjzAN2dMEgrg!FiWMl>9tuV@^^Xfss&T{`Fey1)Wk-NU0Pf`-! z+P%2kgckh|eX#;oiWw~`f4Vq0o1wH`*_21~MDai#6ePN8E80Xo`ZXMB{Z9`H62^Aq z7ZB5a^*tz&K8Z+UMa-o4Tg*^$P|V|p2WTN5660HF*APwn6`c6~-(80gJp2x?%LsjP z$Q)`#Nu9i#KenK2(CoH1o369;(Y;w8UkL**O62{9a8gJ*_Y!5?F!}1HZIe-Y)8#4c zNXEf%V2oGzD{60{_8u{Q@AsGZ!^t_`^B#Gh=YH<%y6)?WeQ)7p*Gs`BuPzz! zy@G}m^7ji}Hp&)zc}4L?Vkwb{KHxdc2>0E{Z6O&CJDJ-DegAgD%AH?V$SSF@-$I7c z%T@l4a}Pt=?n+#{=FZcT>eZ&`6Au|cqzhr=eiM~oy4L8PR2_LioGG$SB9-G;ITQ5s zYc#9h_10f-p$Cy+iD4+ol?s8`SZM;MV$R|A@G3I}(|CBbXK?FEu4E z0YafNHiPu_;8~B8%c#*cG&?>R5Kzvp+{nR)NM(U)Vc=XyKLnM zJ_f&;KV)9;Tu5|XH!VeCzx80L1L2Dn#2r>90U;~kUv!)aUp@?YG0cpP) zc-R2eypocTFEJmh`0Ey$c#>IS)#Z1NsJ}*Wly!$ookkNDGFk(oUK7=_UVIXn(0u zcy=J-27x(f3f;TI7}gZSp=-2)md3v!?5U8#n0RefOca?$)(+<8Y=k2F-?^78HMPTR z-^Q-e?2Ckbd~_H-xA*yiq_KW#c?R79$-IT!IjbtzBVDnsM-AmDUhq!uIot&&#&&;n zbqEgLx)_{CmekeN)XW=24|Y2i;pFfKG!U+ms-T`xLhmQ(Q&J>-vJKTJ^gjtGx9k3azrJ-&!pbe39hcC_$_ zu-4=xf`lI7cp_xS$yz28m-p~tVa1NYa4e4k3HPneDmSNVUEO<{fqfJ7HPPaYS`Sa& zz_?kDM11=bBja^hjsp+O`b1|OTyH#G1M=>Q*w;aJaIvha(D#b27do?0 z*0w+FMX3Yh$3gPCUsDg6%OR?6Ei@N6f|)JOc*GfJDohKH>UeIIgMfbJA$7X?t}{n4gqDIB?z0ZNvrpx-lR)tc1WH7ko0=YH1@FyB z7UWgEL05BFYcV4ESqWzNrzA7c{NQcI%b}gZ_u5Mj+cLy6C@A*?sX=wnn+vZKKl5x` zMK)chz7btq4rlPli*;WsF3CRKTQOo8n3c(nj?6~C(B7}fpO4tvZ#t49@`h}e8FmD} zjAf!owAJ1?Z{6tYo65S4LAjCR8WNYhs;$3lc#sHLBjh9Gh(2e8x=a;}nv0Ucm)mhZ znv*7vo(TO|WIpN^f~$8WF*aEwCa*QZ zBh7`bb*Y!>Oq}JNUg3JPrvGpT0kR=V*5!n~*~na$tSt zd;2nHlzjG>CP~^X*^?o``*)?AWuyDT@)LV{k8ilL#j?jI)Ne~B`f$6Vuh-Cg&-H~| z&Q^Cuc=2X!JCo~wnMnoQ*|)K`zAnL!Z)S^Sf}GAd|i zCLgKD2b$;CManpi|-*_G=Y)ZE*6M_=^ zR_ zbn=aghztx26;ez3W6&X|N?-{I2;7a81QIZatWti``t^TtJy&kg{>cPU0AzS& z^`0uxoH9j#?Ehvj+>LrWeuGLuGo;Bg?f&Itd8O-=BfV_g@A{zr+A#l}E8^{oNF{oU z!TW%*GfC~F*FlvEj5i~El5Oa_wPX6;dR8G`p;J9%fj(;pVAT1_8dM+J1?C9B6!t$? zbV8`}q^>bl&otGk0MLDJhr{&x9RXY!jX)PTayc<0)fn>mx5>6tE0)*6Kn1$a?_FmUrAyDO{U4*al2S`n@1^)h-`_i@v;PLyN3;su({HS2+)xeh11$AUl|U{Po0#jLxvFSi1gS7=;%KdjS4Db&M8>5_lLyn@ zCS1%>)1O}(G_?hTns#@7H{OuI`%fL_1e~ww7r`-}Rl&a+E5$K(^lT(2z~Y&mI@BTR zsh9?ae*}s5M5zgQ4al&R|w+bg4topy{1*1@WiJJNi<@NOvYK^s(m5r7D z!A?&8NIDArC0^!U#m49ApuaOy_3nE*)fU(6XK|9W>oQh42ljs!N}EGYhV#`b;~z>a z7x$D6JGU~`r+pK+O`)Yd`Sh%<3`5ywo$-xbDjt}4bs;yKA zKH8pD_u#tb{j1jJh!B89{8!`S9e6GchqW*5I+!J=N}?-NoH;8BzON(&xDO_LHM?jj?^pG_ z2w-_|v^nL!IEVpeuj(uc$=9kNEj>C-?wQ%d&!D=-Ic1$Gb-}f&pHJdJS8c5O#3BV* zK9I?@K+1Li3#$hv+JfalY^h2=o9(oU065IHxW8CZXHB%n4iZbx_|9gf@FQB1XGxu$ z&EtS}50WCVX;J6&`H`Xn|G(ukWVOzEzCUw9YP=z7s=<(!q^81kHk43ynPYNBt=eOj zxnx!{G=})E5w(CHDH^Si4ROpur4|3K9x%%;Fxym46;+I}L*wwrOEOf6)bv+a2cA~H zwfS)|M^_FUQa{)<7590Gg@rVs_)J|VZIq|h4&B6m0$DW9sj3J2x~j*y0$|gh?VbCr zHl{&KOX-)#bU8k9PQz4VVx6e5C3%Dw`ZBC-*(G|tKC_1l|4IZL!J zWsnG^v;4^1<(o#M)eP0zWUB5^PpgxAWMD8`_lgj-byO%i#rf~(dF@z*a`XPX?=ZtFN9OQYx@+uYc}4$e{WD(URS50D#;Z&*WBDdc)`-~&_MrZ z3S~cq#wL15$2}@KHkR2!fgkh+@5gqV*SZP%g*DMG_9_=7kuUJCT&B4)=i9)qBcB{o zkq^>V7r$gK0T77>6fC6RFz%?;raQvn_nAc};gjz0yEPvYsvxn!6q zhm0_#?}%hhLm2bwH`=>A2_ErQ%IZ8@M3c9J&uKyQbK@gLR^;(fJ6Hv9f9BQ3Hc%LM z75yE(m$9$tlUA%94n~8{qy!EU|sUY2XY z81#mwpBYsYNE--%{a=uugWAy}>2m3I{c734&siB_ZIZgb>nirM+yan34h}9ZCl~Ye zNx5?bBl3wuwuVr?L`~oZUIR#!KPj)by!5#|0F1y~4EqQykJ`7?F2e|e0;=1g67-Eg z?Kd@ne7E_PGRDK&NAQt5@J$RiXTMsmJO- zM*;q>n?-HfVwXek35wLOHtZ;48MG7G)g@FkHGYaO2-;yT=+9>3Vh7xtQgdIqynOi* zg<1e8Y#_-(05ZMX??dyJ3wZuIPpG+UUq7X^3m>2CI%WxYQ}6hP(eA$4M--2}HMZ7$ z0f=(`i6ScA2qSx?5S8e)Y-Q-R-^V$`GQpGYgzXp?jX27L!65K!RzRD@wkHRT25Zx^ zQPF5Ooz2x9pezi6ttT&jNuKRNx4t0{T-6xcuI6s2%|5@_=H2w)+2hbgtf};k>*}r{ zi+r|3?VS8P(v$fxDGsbo*ucmZ<|3>t0a5ZN@a!S4UJd(vYZK;REv@H{cvx&S z5uUuPqik!DT_oBQ7+wjCj*&*+(r#>?E)$FdWQn81VqDr@=vZX>{9^1?D+P*ervwRl zOp4B$Gtg!M?4Cj)APC?O`nc79Mo^A?zP~@4RS3q?*}@2zO1kicF+07n+yjFRTy`E zF^v^Yg;zfpOuyEy3DwmoeJ+}+Zv?$f?z>&m0IvHRap{Rk@kySZ9;^0RJ3PhfB!BbG zCVP~Z8arX)Xtu;$RZ4q5_RzSX!ev^i=A;>dyZPt$u5ST~IDwS}NW(TsZAV)Hrgu8y ze>he@H6_ynbRSAt47^eV1IOrw#dLlEjd+G+2wuoE5mpO%ix35lT3N? z6d^OcB!Jvwbrlq2w7>3??R&D6zAI{Pt*D^US&STUE`K&;Mea5!srU6lx%Aoj;w%bN z^o8}TE-qr=-GE&Ua8Kz$PR=g}l^&@_!dG{W)OJ>_PS>At2m0CC)(^Rm%+l_xk^vnV z;9b>SQR91l+PlC1_xSIsbOFZ!{(wV%P-Y1(jFrZISenl$chJG>7-T7)ukaGApTLh*m;Y9 z8c%ich_eRdtJ6Q`CL%(-vmj+R$|UF$dGbx|)bz~EmUpdhHpy)H&Q8Su9=cY{@fOF$ zIL+-3Ze&%9e9LHE&+0~3;#a&I;O67w;^N|u?5Vu`MDcNaQJ)PNCmG#z3{##*mlLvj zgQ=|{SHE+PKeJtu9%|J(cqup#DrwC|vgS$Sx$y{&!v$AVm3ombP7gJFJe`*V6I9{! zbQ~PDHia)ZKG#)xZW%UQq@IUw2&NIoT`M0^BamtnLYP=N9c7HD6w`x9mHsR~LRI&H zQNhQ>nw({)pQ)v9ipxW^W7YMWBNNf#RQT#(PaSuQXkKbj6X8^6+{EfNo)%c=-XwI0 zoeMDAJ+~|waP%MmaqN*PSYtZScow0#IkfcK*lVDr8d-}AYHX~if=0~^?>{adW6=~9 zFX6n+r9?us@}+u=i8S?#_a6Co{r&5RgDWa2U2B!--}9@_CY{7_jAm+Kb8`VhgjeL* zmHomYX4`z6e)ZVvuTCvY1qI*qQ_JMO#(G6p6VGLQnnZKu>_kBlFlzM~$0euVAXwxq zy4~pcz0`b#>DK`f(C0X~{j$e~n}(pGOgi zrYJ7?`JeB>2n^zzhEsN#p_y}|B~%j;4~;}q_*r#1CK^wRf)~~^hRo8;9qJUD+)>;& zcp&#B`oeK((w2fO!Z-xRbaxTiEb*b$83)IXu=n9R|Ngz0ZjdHYP=J)I8S-GWXnz+t z9W~f)s(EuWMqI^bbs#2qA@~%Tb380wcQ_ui=i>$d31VVXikF>Q+~>m`YUd(3_fd0? zf0U<})OnxI(HRD=uNJ87E@ns_0=U z4<`FxZUmD{vi&zt&d<;Dy~&#`Exo;-SYsE4%IvewAuYaE!L~ntS33WGrw{kQ{zxGV zqUkJurewCZx|e<*JhS#+!#&(He0cQPa8b2;Yl1FWn^TW*!T?>?nhx|6w44uOx*x$(z~N@xhPuQWxcc6zd_mRf%D6g;f^|5Klx!VxgMXDSUEhjo->ij>?xB^*B=>8XI79@nK3(p?O zXsHzFSN1~WLFgg@fv@KCh=2YqwoJeF+}pv%cVoIc>bL95m#@E%tsD&Md+qO^JR)aZ z$TuAHr7lHk3IY8lZ`t^Y#S%f0*8%(F#m|(NXe2NS9ZN?Ea747a8;{5M<*VhoO~oQc z>9#T4+IAtaP0$5%Z;(2TMlOWvWvRt$xy%jk2?WOjo1eShWXFI2PSELj5C-o4zi{g- zHVUeemSU`o2@HqcJ``U}MQ_nX!V8BDKc1XSWORS~RuI#!384m%FaKI){I~~hoZZ!( zupo#qw^CF3C-b>aC%>VxQJktUE(xwg`dukk@U1{cC(6Xwgg7b>c*LtIsph5Vm#+iu z*9Ku=c=36WtcQQZi zMIB6my(p!7S4PrTOhM$u2My>As&MLu=+ce2KEj-(?6o0p1k5{v7fyU>5zasKluVYyqW-hDD~>z*=EqcpH`v>Nhl@4=6Lz zS?0n>2#RVCi%;x1Z%Mexyiph1J}UOgO_}}UBtPs3 zj-Lu5wY0|o1_(iWv)e1U(Vw6{`@NoN-|7t#nE3Tx#<4kHkF=?($JOJiA5iOV95zo| zVh11=9z2680Q}PS9ye;P_s8}tCT@q$K&_@uId`w|V~6|76I>)DoA!MJ{E-1TXmzli z@%~A3c>QfQYIlq64F{3&Plp~gu)^2aO0v%HE>z_v&LK1|N zi@=S>e3KG)BAab&IZ^Qq184QZrcGC*ws5YWqx0ffuPI;hB!ci(G-6f?tl4G%d4(T! z&MC(@n2Pn5?-RQpw6oJ84o&5VojGbw==pxUPB)X$xZ_a@jY#G}MZVPuU@{aGsad-Or6&Uf{cY< zIFI;MTNvw$PyeUhR_@UMJ1R;zwHtqmCoX@Zw=1-8l{2@2K4KG_vYMV6D;h;=Y4v%N zzZ+xyM!rda<>lmJFoSbIu<886Q@-M<-Xsd_E-=w(7-%t`+J=+bNRZCxsnAV3h=MNO)b??<2sV&| z`a1h`+)K{7mtM6Ku0Be7pB0d|t3~^<#FglP`)!D|b-i!h(1pxhnvEaYs^@!6TZ=w> zrhUE|oeP0MZxEUe17`f;c2ETxhGLpEp4Hl@Q5RC|Rs8tIVNXdz3+B0w!1>o1L&(4y znT{vA7;XlANI5z-anS~ZI{lkG;cW7qGk0JLh2B_TP-lCh-ryS-%}FU~hn7?)S(HpH zg&e@0PBvS78g}{s`hw%~{Bq0ce1Q9+Sy%NmNt#3e&Ev;`4s5@}3c%FTjni1nI?N1o zn0d4S@t~8-=;&sn$H`JpNh2`FfBwEd$a{IXFgIzg@dDX+n0plbHrRiQ5x`;_&#`U? z@#7;Nm}$q}EMNw3z7;6@K;UPFp-DIJsS*H~$||zaXppxZgM+Q8^9IVQ7-`;To~Fdpc)YijCh8p?i`RRk;#Tht?%;nYSzis5QP;C>gfq@nDW zgqq@gA;rsS`E1|4gCZc9xSrU#vful-&|*Hee*ZkZ;S5s}v^OzRbNrX@qjY(hX@+9p zPgyyGE zQ1v8KA%3tz90LMjJ!R9YHs97(-Sf>aD>0Ki!SRWywF5FMS5TE@ z3C5|Wtmb9h&*#V`c(ti0(K$6!-tFMyYd^p7B1;z+x0yzNLmH{r`BzB64}5IYK3mgk zKK_v}b4Q$$`L>qQNxl&3n3xzN3x(i|b%1yL*L|Kb1_*Fp-8189Z#kRF+SrhGFnsdF zV7Z#z8F%Z}=I@CO3HpfHbAB~BNv)!|f|RR5Dm($R=emRrVLe<0!Bo zCPgZ`rBlhIL|!LKHM_Yg;ajiJ$e;+|M&(2FSSOZeFn;|n6Ot2$9~iE z2qvxMoNZl{zZ3uO;ftWby-Q;PRkI?AV<$4j@*4#R#Itc!VpaQ3cl@*)k<6cSJ}C|$ z7fyEHaSb)zJ4w1xhi!l?N@Yn5yB@4E`6N&T$)OX-$DtLtOZPM_%$;saN@0Cv8z3PJ>!(jwy@ ze0=#IpFMMDDG|LFeDcUjs6Eo76pZIuU!Sb;4)h4v-5-qf}?;P2o8F-@k8Bj^B;lpn0Y5-vjqv zSzDjFGy*)I9ocW|M%a~9980jpKtSrdM@t?^yY+DHQ)`?Nv(yjyOg>xecZec8J^!}J z&CVGqu=?V`1EvrtH)v+zA9|1K;Okg(EtMjYR_R)FJQ|`BKY!5IhiR`hvXIb0x?GE- z5cWei9>Gr<_CoHZT5aq5sn8?bP=|SI_?L}nrJE`@3)OOlPDUFrnsj~XV<0nZw8wS+i z5YBe@^&Id(BA{x+a#lUYv8)B2yLykmobnwGBglbbWGjnsZtj`&W zKAXkxAJ2;|8iQ>5of@C2OBi$JXj?gOO??L6MRlACk-GfF2o#*>*Cq^_0oz z4Ta_|sAI$ZJv$;Hu~($P;hp{ou%_+phnx>oZximXe(J0Vz1kaodzZ_^w|KcIj&Yi< zW97qiPy)U2SIc|zcBGG9|MbYY!8iRPH@R>v^}nQJ13L9N}msoA2aTEgR}2Pg#@uJbmm@yIa656Woo?- z`gFMiD~w98lUCCcYGghieAIRfcPGw z>X)QX*7%YSH_Wkfa{vWcXDX}{sfm1D@l=>s!`AV;qS6iR|L^R^UfMKi4LDza(nnY( z#Kk^Q-3ethc>IJX{owRZTbmsQj*N@VR`vJx3|L>+a^Uu#-|?t7=tTDAEY$B0<1;tdp0v}YS-SX#{hbC&=ffM6 zOth5ZQ?6Nx*G@SF z=n=#_n~-Ry&oml>n9eFxHBuG7*B?P3tHMUGYUjY6!UA>_j-T1}n!ht_1t#QigPbp7`w9>{A10w^`*myc% z;UG2j=G{o~D+pxjpjn!OSsH)W7vY5=6QXH<*#o;+GNryG%TQm7?)2qK#?Gs@;>!23 zMDN=BTGXBXW<>c{YhV1y7pEKTGKV|-x*H?EqS@~}%&uZ_w zMHqgg%k+Q((2I{$RYB+4=z|ScS;9=x40feuzp&{Ge2^z)6 z*9wmUmOk(bcJp!kKJZ#*UK7pV)rTC-f2wVyqO8mTNIG?o(l^~)T-@>h4*UwAQ+|*H^U~h6@K;_X8xd5?JMMRO?8Mr9 zCWW~CeV4~3Y{nQTpB%SNl%5xzDMj#j*G`FF46u$8iC{gUsSVFq9H7I7E~p7U`KS=z zS&iE`R6Bhae7RbX4M!-;KPBywmX9BvnUncBA&MpU=Q@|1{LcU33JVKgp&Tz~9WS?6 z)+6bRay!{djGawN{`2X)`|X=A?CO959h$=>ZBtB4O!T#j>%Du^wY8ol7Q*qd^sL=W zNO@O_T6dI}J;oGkknZhb_4GR(?j7D=UmXI7GdGz` z&FHSDVx-M5J1~bP2nc9}b!}Fl3hIk_h{E_MkAc?1VW>_G@M75eCZ zE#JStlq@v9Ye(}1w7-HTZ_I_CU>9DGnwwwbEePzr56*SFD2FbFyw1KeWdL}blQ++@ zfHU)3FPbvziY{pk7I@%$P-_n!P-NXfX1U88%S-7dQ&9IB$i*aNW&54YXXpzh-ng=$ z_t_U|jlUx~z2T72+~-|WRpWHse|GLJ%CpPkPiEp4$w6wIq%0XZ&5L&+3*q=Wkp^&lx zN4${+xU{08qA~c7GY;P&07P6i=1f(4WkT{5vOi}hO9`gxudS^ev8Lz2pgGWz(KQ?B z=GGPxYu<_lbU6I0+4oVZ{pBYUmBLH&?eE0(c@#-N6kw&>3_H7XwlYeLJ|7l)Yje6b z5ZM6q9UO50l+YqEIWzO$r^X>inFtobi5GzT25xngs1pukNoNP1O2N>wK1`i7tejWiu9=fIUjm3_mSb!|(RL_~}6# z5$jLQk5MReh1s_B)S730D}3Tg&U5SXV!;OU9HMmbulmt}EA#ChSh0LZ&)2Uvdov1G0Y=R*AwI4L=GiHX!><<(IS{frIC7$| zMQTi3E3;joYJLD=?dh9Knj6RkzTl)sVhZ4>#~;2t6=wY*%hb_Et^b~vk_E(>VTY!Y z;8o{AtL-r)hJdax^3y>*NT5(<%{6eMv{<6M9XgTf4Ja!1BNgF}M7$-sp8_TTp^q#j zFx`-_=VZ(y9-CVH{P4w^oX&&xX!uK(hS%{jxIb_L8EEG*4RH zuHul+OV^s|*%f8lsrG}7IP8>WsfxVM2M90%=(oFSD2!3P1Qfo616Ga$C5O74!=%uX ztINU(d7X405WvJa=rPisQ_xm=!_Vnw1r@JQ1nE9G(|#5#LQQ&%d?uWFU!ww1BpGFv zCY$+$aI(AW0ig!{S@Vj7xN{abAp}{dgp{)kN=C7xYtNoNi!F_di*v2)P~_m^61o** z1H~5q+}vD$0z6fQhO`=gHoV+s>XtI}7Z#Xppa8qq+S&^2Y*JBxeH;KV0`l#l4KB`g zK%TR)wS{rI94;IpR{Q&G@y=o%B|I0l2f)*dX6)K%5$<#hMQVX*+gO1&gNG`gZtic+(2omI*opjU~HMFEHM!iD#ZrjrJy8ng3&0|xfQy)Z0(j$Aa$2m zW8u}xa2V%p4(?1SW4N_#Aa+XC4r~Jvww1yT$C}X`bQkwXL5(d2KU*q8;P@7guw(S=rd9pcQ3VCHO&8 zeGtJ@7F5y?jiDQ8nP0v3Lu$Ms(n&uZgw` z%tjWA7M&8sGVHN*AWi($Qj2@?nNPH-7qgWZsiW)Qg>vtrK5J>=5cP;6UH4GQP;`fT zF46H;&rPm~rYkVoMX3*T7!L^kF?G|YJDMyuEEKk#5u;(WTVmkYkdvre3!OKpmfxjF zXoJ9=qI}`jNt{ye8t#NJ@r1oIZi`f()t(j|%QuheOsYaz-*%>3gxXRt>9Xi6=Qo>5 z-NLye%x$|AJ5fa`M&m*YWzQX|Uvw8v@;hZO$@N(zXYf}>X@9duk{vI9Rr>r`I;%b$)S* zm6Zr-k_k$Camx=MuoPe5bl8IGk5T8<0*0tH^)tQ+Y2hRP=s&Poq=A=yB2_~M73CEr z*;wZV>01SNlQ-cHLDrfezY+uQ;-CFzp!)`E4fpI1!ck+4t|!&eK8>X_)$JX%8<)2D zoU7L7iwgqM3PDmiyXDMwF4=ZK$+rKWsKK(q|H!grbO;X#Ej8xI#~BROO{}pm+(&>w zXg={i$_DC=MEB@BIQ{0a)zS`eLR{s)uO1S3GuwMtc-8Fy#;r7eSj+`Dft3ikAmi?W zjlRdLoD5hM6Eph*wkE93S{jAY=LN4}5~<@Q_y4nxj*j(B;6iR(ZC4%oHqq~=_bql0 zBf|TOcy-wv_eVq=)m$vu4!@dIsN%+O{bo!%AO|TKwTDbvA$Fg6q}kg*Z^b+)F?}X_ zYe=TAOcb0qHfBaRIV2d6SHMgi9Rk9s`YaDbM2cw1{(Zzhi*4GR9cF1$HNHbk5>fg2 zw(S63$F8cNQs=&b$b~R6Cdg#QIpf9+lWXaG402SbHa)$6%X2lneJ|-vBGe5mPmYzx z=}<8#XKjv%xUpQ@sorCBC$N=e)t|Sw*J^fq6soAIs>%$js3_H(osLwGt@_nB1phJ- zP78;1O4-Nl5p|+_6?+tv${q?TaKI95zt0&mNi6%W6~ggjhc>kcw``@rAF9JJlAo@N zj)8KfGgb;yv8)-w=YWMIOK!S&v#}CuR7RaXXTg%2Cs23=DoW7)5It-$1JFvR>fedC zb^8)c)ykU?TDJ~4>b&-6)Rl&@kya0ZF8_FA&K*WtH~o0Nm~=u!8Xj_h-<_(d{tC3V zT2J8m6MP$QS}<|`&!j<0P0dg{wmfK19v@+|SbSjrh5rd~_J?iU_Pm(8Tn_d+oE)<# zq(}yBi#6g+wdXZWNnWjysEAG`C@-x#FFw+Sl zK1}xhyyaD6PNt>3jhi9J`NaP|95?shAg?JuLS|0TX5q39>zA;#NAg=Go5fodTa)JX zm37q(fxjw#`;(@}u_sG7Y<}uNeUUt?>&$=kwROG@PUp)l-I?;Y+z2HNzNnpX>{6|W zvOLMeO| z(wn!nvoHD76r^Af#-Nk5rL%7w9u1C&-GPBwx5WEr8g8?G&|k8==r-Y^VspgU!9qKs zt&!XR+#_V9R1iStC{&LXa1e#SX_8f1v&uu8Xt}ssC7XEJQ(9f}Oj|Uc zrZ-;KOVVJ&nh!{aDd^=fRhm!KI~s{@*R*Tfw4Kn-xa0 z=3m$lw*K{P4o~s~e-m)ZQ~8$Oe>WVu2fMED&1Tn8%`zJ5yT%q87imUYmRJdy=yvGT zPKkxY(Cz%|{$UupPY&eK&L42BoCpdgSriQMLf~iewfY9Vtz@e&%pN6d@WKd?e#Rc43#@u$^ZIqM zsaO|G@Ma7gpb=KJz)^x#+r-)IO@Rn#uT6(E=aH(0+ZM$>Xbl?Vn|+I`R=g2)gFS_x z`)j>grxgzkC^iJu@axxh@X5wZgU?nrRdT3;f&wfL5JaqbsVuJ@)ExLNtT?)PcyF8X$7>AeblJMP6`rdNHMDO%8k=(3w)Iqeu6gFO>W=#`Nj9M=hr|H z1W6D-=`6zr%)mJtlHCdASov}4PnFSM1`36YU&7;{@Wmj zNizo=O^E0VJiB$`k|Jv;-(dH$FTRR8O!NtDH#>e=$NerP+p2}VFs-(&ke+lZ$%vC# z%08v^78`=3lqI&%!n9m1h1ci7NuCF>KVV{ov)NVv_A?go&{oUFen_~4wZ&paGA~Q4 z6BeX_y!S~kT_67m2Bu~W0cjgSSROsFm2nWHx(d=8q@y$zx=D4*9D4^%?giNw?X!A&=eS1G}`o2T$csr8r;{vmmme!I7Amw<`lUnr@;tq|lflzC} zXvdoyj97Q<(0rWDP!$ z|A+f`d8~Xnm2)=G=z{x)@zC&ay)H=;?U?lfVeW~q3R3gJ`);Q!{+N2iSesEsaHIn< zyyxW6q7h^}s&}#gWB1^N&`8Y9_Yv(~ThzUm-KsraP zL15W!Yo_8;nmaommYPnEjg3uAEooLDurM${>jMYy-Q9Budc!Q$`%)^!xa=G&1%{N;n7O?0s9r>`dHL_{`2@UJ+Yy*nQ<5rcY`pB1?tfmCT3EOm99J{G^= zKAmVhSi9VrIf*MAI9;Bq9Tjh^sVb}Sc?-o~>G(ud5fwmJ$m76ir;n?xp9;^PIuFnH zwh}2yIqV4(!noy@5qZlbzN6 z?j&8~dGN)C_n>YFj0FHN+&Lc!`PXNs@IHcr1aB>jw3CC6xG(C1&k`=431OseX-M6@ z!~Jxro;F7OH~BdW%=Ymj-l_F{i1aJ$9F>O}kCbgzDNT~3-C{9(++jKboFa+HY}TYT z`|06uTS^A6m?zUyA(tJwz}&3~P9@d5&Op}!BXKwchy8WMExN@B2)*yO-CoB9G)pKE ze}gSwd4ucPUFvVbx>4$mvi+$-_#{bV4nAllo(Aq%q-cw0r&N!s9t@+y|5*si_vCyR zo1dt;RGk>+UO{-?eN+2x)xOjUzy&eoKRx~MCiiI~nj`-z&$WEmwPrKVG#)TdaVbxk zW^PEBG@)2l1J;=|8@30|NV-9xxE(?->6shyFv2b{HzO<&!s*bNr07XR!e?adAHF8r^@B-MYAWJbW z=zfyDZ^2M@rXmn5V`vZ?$0(Z__X-PCxetI#0c=5&rNi>uC*S*$QR}xsbjOTW;BF!* zje7~fBMTbRQM7WGvu5mV30HqjKT*28A0iu_^DHEiq3cz>orCS#VH`(4U?4xT=5|;< zjCch0{VAR5U^cy3F~q<3lVJ;F3JMQx54jof$>~b;psrZ7}0c2{#y3ci%T2F6yeelMdr9PjfDxy&BY4Obg}rK<~-)LA8YJ zfbVLV7%ICMiz3=r>!+^n4|=N|#e1m^G_f7^Ycu|$WHUw1YqC&>!u9nPRaDTg%o<0L zGVK2T{`yPpFNK~A@#`V5Y4UDByN>^4P+%LU7`Xg6_vzm;fNC4pZ1cbjzLx7*+P%2A z=0)s3dg3sjVKKVW`l-aL@&w~NnR7A4NYN#oqoK3!L-!s3kEHVsr~3c@|1sheaY#BiwxlR~?~&P? zNcP^GvPbsjsAI3lp^{`JB*|XKv5pYR-pAg1exIM;&vo@rf4E%NIj`6A@w`9o_uJji z&zE}d3GYk&uMnKqYJ-23nz{#qT(KGTSa<)oGId{XZ$d)6LHD8nWj@c1IgrkqrtQCA z%oA3jR0(U8rx@^K^uz}(VM+Kx`I|_rm`&d|cVRBK$c?stuqac11AfGbJMvf2p(j@- znX>8E?^kzAVYF+_eDQZRXh|!lR~~yHVmy)lD|r`9S0%vm4wmr79C&5YNAQ!l(b}39 z)R1Nq$_S;pRK7>$ezaxZ4NPt&Cz%yZi1*zsTD@1q35`fX4RUpPzKr`QF=Aq@3|(ej z0Z)2QGS5p-49R;hu|CiHq<1FXF|3(sumcM_ag4PSjyUXx6rCP4JV9c9L`uQk>StP` znjTp=thH(#Zu>vaBT2fWhZ$v?0@5CH(;gOW%|_yBa3cX~fSi@|ML}UW1@)!U#~}Xw z6T%*4^#pmVoi#*!fms`(@kvZnK<2@P2*r{y^***6ba zaEE9UoCh~c`O7T=_f{$Te+8gCdur)PuIG3Rl$(h7 zlv_%bCmIsQlkidL&(_gL9u`JM;E1&f4RvuTo^;*X+{AkDMS%$)j6MFj!gy018phDg`y;_}v2`PJps?$)J4nXVa7{(~3$qD?8JH#pUr-_AUtZTkY_ zMgF=F>8s-E4{TWYHaR{izwVvF)#vo|2?O0yecK~jzJz(33KUhDPho!!aOnNP;ZX8g zO0SiQW<1gh+ouX?rrzy-J!+xm%t8Ddp;eCJ?Dd`NyND52uv7SP3Ml zza#sJuyH6(By086V(7*6d6!{RaZbARZ=HZi*BX;DZjjBRQCgPar+?FMIPkRO#PagZ z)m(4wkVXmz0S(IPJxNJpdL?6X{Cyyht#DZR*Uig;%%<9(QyGd*m}jbSo>6FWMXS>P z2I-Qcg}x=U3V4rvF?(#y7XAAHHAz>JM@v4B9mN0ZCptx#Q^~y22eSuvHS%y7-5oX+ z@2jcc{F#~y-v=eh={sm{^}?A+iHN0a;U8gqP$h0SM~osw1uuC&np`S8N#*NP6tm?0 zyM!;*LL&nBXgXp^NhO8K1ok^QG){z^G+LSqFA{_l;jI-~u*Nq6TI)n`gYUnJ=hS7zYcSs*b?XOkBf zKc1Z&JC*4sTeEdZ+CC)o3RM+6yyv< z7(p`Itf)O&4+iK&s=B>gnM!jCPyVu^`~SURy}=BE@^avxeDv}Ee}GJgP6?vBVUTu+GJBUK-oHY> z+nd{7KuRj*^GbL3E@0?X@{Jo=^3&PazQ`pM=-r1#aA{;K|K~V)ct{VyKHrBbl~D)<7wmSY5)aQiK9S!r-+uIYy;b5gOX?z02!Dx zjWRJXOZ&LsS!XHuWyFE??7rdQ(GfxWe=DWNOYFOvEx!18eefU&ON#zmyIWqr+kI(q z*4hTV7@ynNCP0Py`501Y2LB7#xx9XYNpZtj$fkkqBe7x?WJ6+n)ZQ@r=60dogXvDYoW!8F5$Z8+#KQ1k5 zYUx;vMNKBS8ni_ozL&T*wpW>R&AVW| zqP{w_DR|4p;F*9UhxAbEFP$m<6pXMjTtAq|DPWJJX7>@;7@?#JrdeOI+@ zQ@GJpCOWpP^np!c2rERVC%|xHEoXrPdN<5XQ-wW>lGv7VKEi7gM`Xoj>zP1AXA}4K ze!3PrO%k-MI)_3f!`?rG3GYuwX59=6cH>MI#lx`-wur1h89AJ@2cO_o3EzDny+i^D zBPqJ{L^*<_+M3*ww-C)vi9(VQK2%R(5M>9;w^UH~ zh4SFtxvV(0nGqv}xn7v$H2iw|b*uLaAu_pSrJ@l2vCTfOglKo!i)mqEA{31vkpI`k4=+%G2g(vlhgQ-w?@mk7#aL(9>(a5$4a~CBGBGoqMJI-M+r9c^QX&%j zzbuN`qdPt6AT%X_&R35jQeH5F-j~T-mJK`jy7P?K$n6&6g$D5(BGYDhWa!d-%l!F3 z;z{R4g8b%XC{}^PlUwUFaJAB?<9273^D?{&c;u6i#BhC@1EB zwq>r{k41JB2YYIccA%M5nbS}HzoKiJnOre=2BkWv!>g)%*i%kVha>rwxnO$D6PI%Pk*j~j+StRr9Ib7ZAu zWYRu&&CNwr8EAsQos^(t7U5)Ae0qTxi|tg6F;&6^g3$L=18a;BGy){+cXmAN)nmQ86doV+?oa>nip?n-MKUp!0K$=5wTWB3$H8W+C-O_c&Mc57Vwqds@HeIv zfM6epZoaD39~i6OAJkHUdOqdLz~@TcifOqx>&dkAzlhY4`w(C2wP%no_$ggZ;xDTU zUz+%DsFY{& z{Oql)pYD0xF*Eyyy8lW4?Y3h4cg>Vf<1718iZIDmuD*bab|a<^4|ud56k9uz5p**V z=QN-2kR+0ATj>p|(Hhn;81C~!|51krJN$Q{v*!})j`AyQB0 z6jD77t6Ty)mGcdvEv$Tt`GP+Lgk_G}&(K~t2^tB<+9ccn5xcS)SFOSokDm$^EY3qr zPEyX#cenS&Uhn?zmD+(JuX*8A<<$Ixq8)7S!t(yY?`3yqn^Hm10Y+zo>}tIauuR@z z)w`gaD_+(4i^&(mRvVfJ_Wz30HQD(e*VFAt%nTdR6KjN-GD)9Fp9#$@3f*bdOdyid z7PAvtP*P6^`W88$dya%`P}YgL3RA3w_{CPaw|%h{rb&25EKU#nxn9QCL$p> z5Wps#Nxx&KNqOvUca4K{Cc!Ida^lgJk40VeZbRnR#>Vg0(6XKmKlH7pHU{Rk-0}Gj zIqaHIIAZDbUnMmojTfy*t#_uuOpxups(jA2+mN1XYGjQc`;w%AIgSE?7TU(`b_qGQ=_P9mQw;2c*=*Mb&d=Y&N-$x^&WxG|7VD zIQ_5a3eNob4o^Y!93UO4-;dh25w`G6gVb}83favhp-$A;Nv5COaG$e-G&Z&8QIxOv z2>l3sG-tHF`m$<0PpJPA`V=QF&6;PO*BIn@o`YFDn%nr0t_{9|8xwVbem?g9GEI)( z%fA6w5GHIxAzL z4DCml>ikvuuv|-Z5HPuB2u^QPAk%p164I9YRjJjQesO8K(7q;Be=hM z17DbIa|18^Nui%8BWD0=Vc5hcnQcX!b2|$C|^fM&~ZQuw!CP~ zDEHamBw+%S7xue(D3nIZ_i;51&}n^?$~9mDeB0lDj2O?0N|k!y9Yx{=O`JJAM|cYA zn?8m9H73B7%cWP%k!1Sw^K2hel`oz}pw5?rkrZM5fn{#4>l+(({vknFO14ujQroFR z(saG5zHQ)sY7^LI?SxabL1=;k+L{V0Ks8}J86>8cp)>jRM?J|02KhfNpgrvTq_7)v zUr08&$cektULMif3%5KZdD~QVyyzA*k3WAYAf+3sgKl!A%D}! z3IAo+dBa)l2$jI-($e`H0B;T6Y1+qtPM5{SQH#)7klASp**J5X`c+-I*E$>>dUTL^ zxnXG0SpV&v6NLRCOz_)?iEWoL7sUuE%IfAn1dd%0G8+aFA#zb7Q9vKidR>flXEyGi z50{AN3l!6pC`E;l&?Ke4!PocDhnG(XV!Qrz1X2KUiCOAhc+_UCIN?EuFA4k z?1%|ok`N)7LCD&&=l&?uUp+GBB!3BlBSy%L8MY}h@(@y|ZHx0yb6_agV+0W%8X>|*Pq1wtM7CL~r0#Z4` zxK>Is|JKv})gNi8b)p@C2PB?!gA#kEivXC_>W4GI|0E3DN*);#_T7{58X>mIxUWhX zPRQ!6?y4R>Y!TUHBWa;wfJmh%rS;q{(1($7=I2|yZWwTaBS#EJ&m%ashIn3oN;5(B zw@b;$=szeoK=wIQjjlbMZgNAX>rsim1ABsKrPRmHx{?m(z=Cr{gmk=Ki92{)x7$|*%nCni5BFtTZ z0%6DYiBj?w<$!pm$0MEZGSOBYdKLQj4+6Wui)U19B>W4A{qZg;6~SY`j01iPj5JzF z(fw=M>i;sH*CGsGN9zHWhyb*p8gGl5Z_T-f5KIgY!$lTGwzcu~r0J}+zMuOdA0~^-?SuwsRgtm2il3e{ z79Ck0UQE|6M`EsVASr1ij_7T?@EVT-Ci6SxxBuYWd)|F?+Hh1+w$lkKy)sxp35W0@ zy7thUcpyM|&03X{w9_QB3x5A#r^l9ztT_{REwA@n#BWZ`#@+3~<1K2&57fFP1j!=E zBh)$zzPC`%Pv|r;ZoePz@l;OupzJ=w$Icc`CSoR_@InO1diGcCf5|@4Y*7e>6%Cs6 zW*8}#1VPEu*d6ZDldeRrcgu_CEi|RK_leH=prhO_r~%nE3|&+X-5Zs=d>6V`)pW|s zdePp=nky|U(o}I#?O4uNzGd9WmnfT6b}2gQ_KzuM%n3h@KFH|PrBnbRzw z?Hs@#CTuwfVWIaaIwD4-UIUTp_l9p3-<$c?{e2M#Xew|iyAGvk6A&5c<>v!!74c|F zkdp(KY8Dnm#$r0;nDA#tP^S56#NEEEC4MAaB~jqG;P%dHLn8R(Uh)CbfDbEi&m*A05lIv&T3oF$54YZI~ ziH<+L{8mb)0}kBz{W>D2iqh1(0)b&${XTm92semTgWEAJCS zk(?@KV2UJyL&(XfZh8_g$>c$C>|rR5PGbH?#VtHS3@ZpqK@M+HQk7_l?Ch-Uoa`I< zNnx;uVLo`;uxpMuj`?QdIri-&BY`lFurRa)TBn*N6ESEBWk}s={Qiq^hYP|~OPZ!Sa z#gr5zrGJD#gAx!l$0YIjEVF_0+=)Z7c7i5nyy_6ViInzMUj6U0Cj!_mKcC}>x|u!) z48pF~CdYKGT8r3nU#`pCpA9dWsn@M=cs9w`v&+|0m4lF6^DH=zq(PPXj7YAPRy7*i zge@mfFEkvlkV{(>CR^@d+NJ%@_Y(3(2$w%+6IWa2_nVr$n&w|^*U20+PuEWC$iifj z^lDdqrJZxXDZnI1_pg&65t4<~qlg9SiJB-<^@Zzv35f9f?GloDc`xW}T`_%?^_ic8 z(;ZC$FPO3xzWe{3+#ocQvfoph$8jKh{s+2fS%{FtLU4CATyli*-2O|jx4?HuZiVS7 zU9mI%m`*gPn!2YQX;tQx@M&QRmmqAwgEh|eJ!^1jprWkt{gKaOlk@V$3qfpDlI9}n zDG#0g*Y5)bdKKdv)rkpkTjetD@X3j><)b=OI|DyJV(r8q#BXf$eHa0U?J^jgM-Df8 z_?z_jP%{0%yVt!a1et0CZpoLTuUmI^;wmZz^oqVWR#Y_Ah|3Aq*3{)Wy7>BvX$(e3 zM@vvSI5-d-9Oor0eg+;Ll+>)oFP+5V$@QevDE9VZ$))W!{^GXR*S+&~EvJnFXKT08 zNj|6l@?R5U(E+;_W)_y0rEc2&_=D7i)nV~`CFd`q=ZzqSxjz7!N~m1T>rD9Q)MDNV zS3S$Wm7mp}#Li9|K0t*cB}7p0J6)fFbx9K5a7Wm(Lv_0`m*=3N4925*MLZfj8m} zQ)c<2#t@{BwU6J~(*nlQA5Qm&0z86kt?e7$El`Cu6VtvbbgxV(^`d{<1~KQ-fU2Zv zdzB2(DDz5?T9rg7eS&C&-Kf1!AtyP=$WrW}c~sRd#l|m?sK5eckXl`wt_xc0={GkX zlkm=XK%9y=$YRB&OZvPrDdmI)=n zL2idyFnvdJ-3->f6E_>nDmyOeB>kqbdPMv=xD~Z#T+ty#IW)RjpDy{2Z2Z7fX(9{K z#Q?DeXCQtS~kO3)8w8-=UyC;v$TK9HGdPxN-` z>yd!a(57+8l<U*-SwLWD8hvvzvT?ZrCm zX@MRy3qywD(;|I9e^zq#wzG2x_&mJ@jCGRzw;{b?rNN#w>9}+=)!tfR z&bBr{XEd}7Z4i}_k`vS|2P**+1o#71bPF>biicKQUP6EK1_g3DIs(EdSmbj=hR43A z%l=!&ByM1s!7Rb>SUDd+nS8$d0~j5Du##ow*Rw)v4D}jQs93WRGqgu5)#}I1z4b`c z%MnkOIVtCyvp~GTRh6f3?f9lTBy|d@Qaf3M$Vec`?f8%h#s(y6rs6m`V_Wh+0x!u< z$nr2!T_OHYFGrrr;mt38KO~KUBsjT+mXEKTSUgNjkr~Ir+azl6{$5z9m8T~ygE01# zj+y4Bku^!fv;7M++N!M#2QC;4q+5JAxYIGM}*6$;-)( z;rMu2jAYDm5?{qZUz=lI(|O-k{dv4w(_wYFPEN^k?IuJ;HKVi%s^Fz;g^COm<1OU~y=auiexF1<9Iwtd;2O8U18x5L&e)hT&I8sH}4|H6Mk(og}< zkguaTjL$MaE(1(}aYph%mf>25m+ZqW<{WwUsLsGi?R))R>4XuZ{P+>69=)=(;5TZ^ z6mPZwl!Jc$f99F_0-W?b=IkQC3azMY+=fdHS|9X-mMH;s{}7ngXvb`cyr{g|Yb{ASx>?EG#Q3SzA@*b#WMxRl^yRo|8 z`@P$XOKBrVs{$O;W?WgR;e6`n=)mA?WuR;x8NEb6^AZur0Q{;QKxR(7)mxKGz7 z{&{tHdN_UQi2gPbybK6RGm)$aCMI6G8$gvqa~AxmE-`dma)?ett}!{Mz?$)!zWGzY z%Twoha-dXUR5JY9!`j8=!GF8eiy-#xkQ$OvI7XwhE7SGd6@B>d0}3^h&Qt))K`x;OvVAONWuwF4e~6!dUcxadxuTg!BTtlxLP6+8T`65@@CS1u76i z>Bv|uk!d#po@T(Za6((=rHw307s4791Ybg6=mFI=nf|hBv=@g|*7?52WIN5x<+d;u zcVW8_+Wo(4Q6GJFS6D(Y=bOfSo%u|`m6FM@dk4OA0>jMazy1?$9YFIvXIVYYQym5-L_#97S z^~BlB&H3VT@X*L>VO}S6rt2Q-E$jU`q@P8=;)u2QkUABYP0pvZPZ_B2Hd`-vI1chw zFhlTBfj8d4-!FHUF_%fil5j!>C0nF>W4 zdP#UNX6l``tjBFfD_OsK^;7>rV4k2Q=xAH_@s|C%YdddbX82wDC5G4ilh@1Y`Kjbi z$^2?jG9vWOgg}!So8v|xqBIW!IFuJTWHiZM{@FeW|NDV9A9FQ`sZyg-O_&POw#JY6 zcWO2x-6A2;3Y5dV@g{dE;RKc=HZ~zr4z)0Ep<-=ind=Kd;(lrZ)R$g^%4_8-znm(ci zm@1%vKAXhhpte72>fRBgUfV#v3>O1=DyIq{smy@MQ%if834@!LB4jyH3F+7h-r6BmXm@u&^wY%1gZ}?)W zOaj&176)jF{CDeE;kl(ZA^4j-U0Ylh;d#zE)xO(myA;9OMyp(gg6bp}Q0w?1)vb*! zpE``P#exvJgGtqCjCn*Zo*4ylQPhK;P-MiiQXeiU7A>;y!(Yn)r72mYe1E@A? zp)2LGC;I?-*3N6_=H|)@`3TDq)GhlXcies^ceFx%(fW)!ba#I1?C($_oz_mn8PkS^ zE8>>SgWE_URD%w>Ng-^Rm8P?g4A%V~rmA3tRxY;*OJk_|RTUZ<= zo{72L*@0v*NE<%*kQuhK@X+!`6*ifqC7Lc=e&{l5CUsp&9e>SsaI_^35q8bf45iQ= zlEP>!)6Q!4X1*tYcwoxpMc`*Azfh@_-($taNG z-1$XTO#>41I!Q)}t^!&f)2SI}1M`e6dMoB|U*YPf^a>u{9_YU6$REND8G*b2w3+k! z9y#VxEc;iD$GV51+wc$pmI(r;JSgydrX*zlxT^k8?IhveZ0WU1JZRME0~aN9751nA z26C}abP~mVGofT$6rgHOUNVbP{FGLSCrC_t(8m&P<7{Y?jq5VTT-&LGZ7vw z5DoPhw4|pA!J1Bt@uuxdy2t67_KuE(?V090w*2qpg3j51Cv$&sYAV;@m)RrHcLzm9 zaW)l3JgS8{d5kP9KumsFZK4*dW>N&8Ay+tcEo8NKsK49Q7ky}yNK&Y&c$j43YO=>BuY< zO_bkJEGHL~l6ny3js+}QjGWI6IAtOlHh>**C>$@+=f!A`5|Lo(xA;Fan=}Z@NX>rd z&3q6oF=h78=}$K6)!)w79y=X`+{_5$RB54MFlv`fH#P|Pol@SJTiP&HE~EE&`ruxK zOn<4tOwM-cO=2~Y)>5w-1Uo?&hSe>F&~HB6*w~Dyf@eO6_qgB6la!NRt!hd#a$PHe zf`JU+fi>Al65yTDO8TgXB$BzE?|vT@AA>#&7$R)sWOGV8n@~HV@5fE9hvq75 zp>nEb_+Ih-{8gF3egEUOLSNHdRHH5CF=@IFQ(pk=2FLC-PVl8jf_7ae4abE`M0k-k z6B)_Ze58P=-{{qw?9rEht`@hllq5OOGr6faxTaWxIjYmhK0JTtMLxp=rC@x^U5GX| z`Bz{2-J)DPFKB-dEUK&eR=xB0fB)I$6fUbcP15wq{VZmfQ{i$qJNN6I2k>i^2wYah zY;704vcvT-Qc2)w9q!+2PlUFI8KJ+>eQ!wo=tG@%|#n0E-@@qRYN2gWi=g`?Y z#l%3R=>QvtnI&e@2Pz8BB&P$<9qaQ>X*k$ zSKrlSHP)>2tE!_y#SCV{Y&KuK$5CCq=phP?V~%^mR*|os^t{w2xwNb7I?@QUs zC#Sr^T~FjixKo|6rKUri@eU%D$u9yvZL%PZ-yJx8PxI07De|R%({T-QJ&fxIspsRb zGz@|5rdxBHgyqg!8uhS_+|@DMgE=D(nv=PPv(3QK^0S?-Ai~+m2*k==;??4!q3UBZ zV`C$uxAHPFu<#Zu0de{MUh*??@LF02`!l!6ODhTZqlf%pC;ek|E!`e)aHiZy28*n?l zD?@i!q?>*U)YMlZlq6&j=Li48vu;z!tEm91oo04H%$L!%qhAfF_eM7-n=-ktLmCe^ z-10)#Tle~9^9uiY3zY?1sVdTbim~_1afE=HGeHuYy5a7#jWxq*fRPFieHhm9$vDN) zpZDI!-n(%=Q)e(+bHn0)`CRNAPrwwWNBE8&tS2cFP<%H2Smh7%)hnUH_#ZEa%)bKhe;%h!tTs{H1w2n9RbkkCI zxQ^L+pX)}=Tr;ZU^wAxyEWg2Xql(B|y|FlLiTRomimhHoe%!6bV960*+KVyHbv9+t zx%cctXI{Wzq1;*45N{P%awPRYeh9ErP~sp1sJwSwj)5zaXYbaisa0<^HOa%N)Jl5x z?ips%+9uN4(m?tVP-3NrG6~i9W?~X!IcNs*i%1J2MA;NbDRUr3^t3`W7`9Q-(HDPd zO?P-$)So6la5@hDFQBg?D@eppQH9GpPWtN}$NQs$op1i$6oVaH$mYg%*LiayMvvdYpW~3kan2&az+zQitB2q3DGNdyX%aX@sB(LNV zr7+7%9(_6#Wpn$(p$nfBV}iG>N^yBSoRfl;Mp-2-tiZW%XYSJ*8&_v*S6`2iucKY5 z?f1|A8j(=48PPAklDYpT;xS!0+k6sQ%j`K_hj;c*QX&bm;Zd5TFAMN6*vBIuWBT4^ z8YJs?z7Mw;k_T?mrTSHGz|D&en z2$)Xkmvk^v=|2~yF3#+Yx#Oy^45?fio{J4fV&dY3Ln~98Q?Epb!$kTWr0S%8fMB7jv)yr#Qy-M0=nMK=s6Xr=?!$}T1`GW~drEO4VP;_seA!bX~Sw&TMbvF?9fX(<}7wb#XDPj8S<*Q}CIuak@r|qw!jq_%sU@ zSzurtqHSU#D8qh@iTYQAZwY2&{RLnY7A!7C1OB<+bcmynMCqH|9W9;zS>F=Pe_ECG z43^3Z@153I%K9v=-_kLYLQqmsb=uF&{(NiDc&K+`6x;kUhZZvV<_(0ycpm*A3_u?(Vk9@v2^&$jvdGrBE7@aC-*=wZbJQq=3N~8paVc)A} zC`{=~@fhf}?y3|yhLJ?VggF?MNEKL#-@t9ve}DMELk3geAh*Ry-fOg2uen<4zt}H7 zpCg2xyvaK;wLJaPbSB=k-QFSG_G?NCj>d8(-w0DAC5lp1u^+NU-}P)>Hq7{ym}mKK zTz29w3v0p!x%d_p)u9f?C}-t6pQ>ISI|t-|RUpdfYz!z*$%;z)-<~~hPJ7DJtCD0y zoFrA52nmbg;`7fnT~lBjUcgN}5#=Cm=4d&?m2MT=Dh1M&RntaUFaw>QeLtTF~zw)WHgzG=u;6@vC@@4UN{$+i9YvQO=`jsjs zGWH!n$T-^jOZHc-c!M&sl3~5|1#t5%Z@3)8o<`yXHJ&Zr?tpjB>t@(bk<&PXUAVD! z;n2O@pjBc1U`CC?$5T^NtNr_aM~6yZs$_zXCjHz(w_8?(9sBd-r(J9Ar2?~=Vd2nD zG~jIX^${yI$qTdm2O3gh+W?~QMaekcgn=Q|zR2g1P-5r&zpQ_JZhigz1plQRQ)3HB z1Z7Oy2X-m=dajYQHQ#U}Y{&E+wRUNl`OjB7f4W3j>jgy~e(vefGAy^iU@Tv)?xwD- zF-;$1YsOwW#$WG!&a9ehBa)p^X#advj*Q-SBw4Rg0aL}0G%(X*bv076@%6A}ot|FeMbxF7I0B|M}$2qsktWJ=^!Lpk9j zY-yk!w4eOPYSbGtE*6^(YnzU?E(WJhkn#t-O~?P5&bESfwl2HxT;V|oYx=w+&wsYd zOD~>#o~DW?z;Jk&=8+RjK>_zMu|O~hUeOL=Dfq!ntD->Fs7V`3O5BPlWA_o=opLnR zw2MPmWAD;me^W`B9M>CL6^=T(4KZz((U53gelB|R8k`0}qbfiCU#8=3N3QAWzp8r< z@)zf+jyjJf8@;aj{HCXw6FZC)Whz~XNh6`^+5PSrv;T&8H?$pX1HVbXrHmc2$dC)! zG~@N)`bhhX5~@xge;cy(PmQWq5&izwYedit%*@>W@vMXcgkAv_og5)pT><`p)<5)u zbY{@xoHRcekVx5wDg$+GyP0OuTOEgl(9Dusa#g9d9Ir9CL->c9Kcg zjz5OfTbyMIusn{utPJ|v^lgt0a$Ab0#D&&HKn2Uj&bm^U#9olMe0llBYcc;`3_O3| ztLC>G0e@VqnqZs_^-Oa@$F(YbwaX=YYY@S$RYgfjll_Z_n)(n{Eb`bE&Q435Ohl?u z99$|}$0aT%ioKTLv;7=xAsUl(ol}^}_If-u&9%z*AA3(E=!Tq|rm5N2H#UEYTt^hz zcR@CM1HqB|dZj~4=ezXA8TBR;vF!j{Mn*;0)QQB zcOB3O$Hyk50yl%oM@ve^;9dX_%BN$PkttDG9*jP>3Jw;@eerU0qUmU+<)W-*W~QvB zsjjZBwzgJ~g$ilOUBsNA`uurWdHF4dwRJ2u^2~4RkLGGYP=cOCKUhei}KFSH48?@KLaikyFGj~5Qs8&gCRvLk*Lv^p!(MVti zf4;3LOAOjNY-pJxf`$n;T$3mnz@NUi)uxio!B|E!WKo!G?3Ji56T7V*f<2W7$aTE$9*ow!X= zLWM-#1=BY8f-;Jo4BbM^rdIYlP8~gaoG|p@(?^HSJ_KL#U1H7W>Gp#5aU3touF;Tu zS&mlbFp#1t#mLKwi{~Q+l8M+Hte>0Tv4*iKqjX_hsy6Oer-Cm803_y)2Dy=Tdbjve^zBdk^72aKh(H1~a;|IZ7L`Rqu7M!E|)QYduf*nVpu7TanI2 zQ=kjolac9=Nx$UwvNZH)wJ)~rjG`f^aas@p{UQ=sOlAMAps<+Uw(AYLg@)*Z zk9W`?t+y>FXVB4dBYs03Gk@cl=N-0+rSrXtq>%};zU zpwW_8SiPGQHA;6eI!Os#P5pd>M2()Npe9w3YfBaiZx#9P@mtBm(_or^V`KV+)XHKM zxEpGB&sj-G`E8nIID$q?R&@7Cv@vphvd#|-RfB)dqkSp8gWUu5WG%c!6+G?omLnWnd;({tie{6Bde|-P6eh0WFn?Nlck`q0ixZEtiH8 z6tJAf|Ni~C-#+iCoreIigABP>-=?;XbaIT$O-=u++Miu&i)ci1`l5y0eMCv6I% z?jS}!x;61@XTq!hzrqgW^yx?z2$;$HejQ(tIh)vHe}Em@ujz!_S~(10J@2X;ua(|a z(AeX8>2v5;Lw$I3cO>lZ#!+3Ba0CYz*mFW|eEI&?LIPP0S;PqA8IU&_^b~g9j{AK= z-~QNrBupLKR>`+koFEu8Q&Ma|P-KmuR-|xAeB=*ddyhj7eZBTtR)+Q$y;7uyD4){f z+RK{*-YdO+?7&Gy?kTiL*x81LL!HYCrhUtC;E#R5zUUGUEoI6P5sgWf7oM52 zdq9LtfU;ek$jLVF)dgsnThcZ^(=G%|Z*zaxcdRNE2PH9J{B8IV3#zhSxJ$@MUD*nl zLjELZ5|gvqS{=4fK-oCMyyB|$ho75|w!)S7b)yR24Qch~T-D|U{o?5c%>@litP|8q z;gYDs-z%9K5x6iiCwte+^`cuHpXx*AL9f^LdF`_c3sVVqJIMW>-3`B~;FI*NptJa+ z=~~Y<_owaZ)4_YIhD|%CTR{ia^2bX@Vq%9;*R!Y&$wQB0-Rh5~$ftxUNVQ!jCr>cb zp^Jv08-AgCHCHn&rx{iMTHc?IjZR;cP5WO^H=bhqOxId$DcKM~3o!VgxcONWKLlV{F zLKg0_29ASUFXR7iy$i4CoX?K8E@eoJmCUQCeT><~WczvEYZ;(>1?Q4^sW@KG&;&h% zgb_m(pm=p@oiXE-LTyr`FdXB2*b9|s$5H~LQxs|tvSyJkmG`B^Fr{oGn1H$hov{*H z-FspfQE#}$Li&fS6ZZDndm1`XL9#yL950Ti&wUDq?3X4dnUNUOlfq}pe^$OLqha%z zjoVd#yV>BgHgfQ;M(67zjJ)61VV45q)s!e4-Q$0*HSvNaB}nJ&`GHEC`0MPY@;?m& zLnYvF+a558U|l>XHV#XQS#&$9cI5WhJ%Lo?N40pd@RX{l@qD zS)oA{UqdiKjN_9=falAXA+D~@{@_DAsg*>QQd4gtzIl?+lPAC#F z@*Z;_E?DMUau@(z&HxYzOj}r8O z|?P-(GP}V8yDda#rs{^N#bXu%s7=~<1$F1kc{MZ!mU-*NBHwu(x@Z>)ukQW3N6P7sT;F!yybD%EZllP}G;# zpPyjA+_xy49QYwq=2#q)AsD}h5zT;Aqo|?9cb;b4J)1$B=Dc$zoNSy)`?0L+l)%Fy z-d>}+{p8?wA^;khx-l6!M^503h z4X2}d?vG#0y0^$2h){z1!y?!)1=0*74l9@lo7TmCf#V~Yy}v~*?~kY68TuWON5EA| zY^91IBv3ES9~*FtPt_BhEuht>HMJ=NXt-Air64KHr^MH z*xYFFTLcnCoyQ(N^8Z*m?{KQ$|BoM1PEn4Lj=hc%vdhdoR(5r8NXD_1k-ddD_6pf6 zBYT}>M>;my*&&4N?De}p-|KhsPhDMy%X#1T{kmVT=kxJgvo;I9eVpRwwy?NEVt z<|3$SW8dO^61Jb^wbCwpPpif8DMzeEW0FB1p}ms>~^q_3erqbdf6LXj5jPVip=R z2;p{fc_<4WX119ae2rPwJRV_T`cze}1EwIDQM@~EEn-_I+4mxmowWc>Enn2LH&fpU z2F7G}?trkekzk04x78{bis3AA&xJO!@YA+UIaj`$vKYz!QF604(O zrCbqfE?yoU`rh;QI3V~OM$l++%!wus=C7GZ%}q|@_-O7Zqfmf7`8;vZux!xhu!eAF zJk7x%8K}@SBi8acGkL@JK+N6%J;Ra+3sE$^d})b+)n9~at+(v=ABqT73QYXPh41!b z$lEHu-p1y+zkeguW?uPoxQ6j1MqLj8JGrb10OxJEHN2kP@)v{2kQ(WIg>y%+9&4jI zeV=BJeqBNVsQ$2As@8Yd`{u~>A!)Y z&6pD%!_`0DXJsEK7!ZMmK?vR}>Yz}hEJTBHHBVn5t_Q$kwZ%LX;NlcCtO@z$6TSOV zPJGu9uRZk~2Vtdr1DC%e2BloLMqQ+4rzLmd?ov9mJTQ%JgVB(ORyTcUJ^oui*!u4` z_?53EF1HB&r2w&1c3#Z`g`f?^f7w3hx8OW@HGJ>oInzZ{*6GnDe${UoEG~zu;nmAo z;}gJ)_?{*13xcwLOgSF@Z6CZkFMN4EN@-&Y2`*~*_cP4+blA#oL5=@n5xhtKpv+aT zvDfZ@7OKI^f8W8leR=R|v?iH9(~SdG1tsJ_9_lYW*(Slz8Gl;xeEPxF{L#-b9fIBC zH~z;4xi9NRwp@^3;U!Bo-QDl6dUTX=EqT$bxk@5xV_LEfiI(fP_vxRG8 zida@XU5$cH;V}&v8u+weqgJ55BH}tgqsB{*O#ArSM7S(4<|`H(j2xeu(!(xN1buBM zfPgHBcb+a{+A}XD&uS1(=JK05=HA{LJpMbx6Z5T8Htt##8Lw8$+7_6-sHq_-nuYkE zbA5fYjdc|*S6d!J>1k<_z+8Af<71@PH?!qZio<_EsDk!7Xfz*Ll{w`NLBqs|tc;*7 zAJm^`X7j398Koll1ZV9f9V{~JIs1i7e{p%vb?^I#Fh2G<{xRX&Ivq8)z4=#@lai`C z-rUAB4qEs5GiYp+-3YbGtLJy zk}EoqtDTn|xrb1AQd}J_9RM*&{oIgY@BiA=reI>@UxTNlDE=5$kkIWRGL}G2PW~vQ z8sQW+aw`+G_$cfi#41(?LS^x^tMRI+frVy`t+4H*(636t!K$^_O6rYM*<>gLRY==;QRoSc*>uL`fsHdr z0E@6RJ$z%7PVhL}c2nMrUU5gB{L^j@WgN7f%Ni>eAlpIGF&Y*W-<&KVYxLHGJYOIW z3z1(`FIkT7KwBxAJ^86dLHnyUY43Jw7M67=a5YE>efH?yu%?n&>@ETL~P+ErOUfU&^uDgMBBG8tYj^SA7X zw)~^)C3&ni{*=S|nzF2{zU|aW?l}fX=SBvTLfDZrQZzP)CIYJ z&ty(gKnB|yC%CNtB^gZjTv&U?FXg#4skX{ztl#WtDc<{xBM9%d_sTOzMrQg6CF{}$ z^|_v;)7eS4k`ep)K+BWJcFvY2y($`|rk3AS zFp6m4M?LK1BIV`cW_SOsT`?? zEz`-IpR80*=c%)5rF0n6nk>OD80a5+7*9N8#8FS6`uB1+voEiX?R{Oe*&r-#Q)}(# zK9QLzQEHIva$nR~!y|8|0!4B9D0J#e_v;MEw47jPm#_;=5+!tW z8;~zGHT#YjjDT2aad?VhnJzl1jhOXY-}JQP1|3~cTaMo*I_UvFf88_#g1cw24MZ!B zk6Vk;-VSZHceio!6k;SEL|vaKpPiYTqr1~Nf41dLMn)VO)CLBgw^aC?Jm*f&2mPGf z+zxq+PnwIlleN;t{4c9SoQAtT%VWu1J}V=?7B$Vl%*-+AIJ|f-ArO71MJhoEv1MC* z=jX%ce_v!;Hav%_2xi;~%^Ol#mT6)MXZe%=D5(^+Tc~^}RfOaaz%vI5Qjaisa*Aj{C~q~#&xbAm84n`6<~9Ub3WtLd!drCs!~e|+fGD0|(^sHhdp z@2U>nVx)0McmJgIh9VN5<0K@SeBgcGnVHq1Zm493qlbUt0>XYB%6@=z&x_ZqvjcGa)lBl&$g=++_^PZFw*`NWBRCkjNx{K4w4R9#xKkKoF7EYEP-8?l zGe|aRwc$OT(15tzCZNR?eaE(0Qrnp6-%uRC85S;`PFvsBuR+IJn zt7pQ(o+YzcYd}SDsot8nijNg`6QM7Y@u)m;9GQ?36_u2cX>G1~OdpL^`M&J#eh8tf z$sTg-62zKBvZzu(xO(M9KUwJ9xkGjlN3b{Zx2eWWj6ROV_^i#u%Ta(?f&S#zuN{Cl zL7@*%FF-eY(C-k?|1K9MT69rkGw1S+V-i(wz+C$F4TbCFr8ylRq%?4oTKC<9V++vn zA5)2(uw%8y|FkZC?{%Y?5wW{%bC&}v-!_|7b%cmzxqH?@*Zszw{^Of?eXAE(Co$S& z3*Qb&o2P#*6Q9B%%o@Y_-@l8f)$rEf*W8{4XVh@}WHYMc^%W4zz==;M_~6wg=k1JT zu21rir!0Js>j+3Tn)y0WEUlfm#k5GMcxq>=)K0(X{P`yTl^>6W(PC*nJkM6-4_Vt8 z7;SqTKg+rTS!U82N;H2WRR+-PndCWKFUDh2{^e1!66lxxd~3q*koD3~($h?^mo$Jt z@Z;1jeQfr`X1al)wD%i}mIO&NjH#!^?)l`{@=3}lJm}SJSBWypUXUPI{@7{Z@Av&e zerdNi7M_np$63%3o=LnFd=DP<;a&tX(>KWl$!BPOZW5W_$S1$ z@zs;}$VY@B1l@>WEV$sQ3KeRqlA63Wd;KJYl(i_SIa`j%k}C484k;lai86;Z-(x89 zEiAv-mdT9a%idq~6Q=OgLRYwYkLnunl9||pLKOVo!Q6s1xb9JpnHc>2d;5?~dAc$5 zn@xQS&e;Lu?OrkU_`{rUrT5jsTu|tlI}^xFtT{2+_%)spD!TRRMJw)d?m%+esP$}X zOmchPYv;26%%KS=(htri%I8`RFUzE~?or>1BY1bWSWjMpwTGOhMAaJhZqlU2RP6AW zf?zcjRBJ@2yS?h1%kC{lYfg~c4Z9EILU=24G&i zFaUfpb)&PgGVtqA{umS#v}-MpNuA-wGq}IJye#DaZqu88?LnVCL!!({0w=x-#^}3W zcp`$J3JwmF(V>s0IMcIZZU_q2L z3`b%t-L|@WwZ>Z*qdFrl*AwZjI($vF4bBZX}L4VRW60WS>M4{oG>N z_jLxiGD~|H6K~9%28A-q0*_MQk!mWoD{O2GM+s<3S^d@jCN2*uu66zW`)cP>IP2oC zquAxP|Ai=}9hCg7AzET&^WRjx8Y#`wdc9TkRK!$=Rky|+;tTr?rptR*t68VR_pVbG z^&XULH(iufw7M?^HGgx`xtqA!X6@rxDf8e-)uaAlO-={*DbFMgjxl2QEgAiJWG(W& zSSZr=UeSrSZ5i&7hM|_s!Sj+akcfg#Vz)_MO~JiKs8&p{2@RkzKqsm8jHq_p5=|{; zdtF&rz%G*Sk+}+StDurFH%dQ%E$W%hd7Eui$cH>oUhet_OF~ z_bbZdp+T~&zjTN?lJ3%Cgoy(lMiAIkK4wz80TGdhi<^hAPM8QPk&xcxPzu1(AZ}H| zSoJY-$bh#$ssK2wnE9btM65Qm=}uMccsR^Vmi24bi!g2Mz!xg04~p={4Wh~(pNPJ3 zI3z6YEps>#IjqRe;YSF>6=fg~yC41(NlKf~bo`a@MqEz=cBrJxTrfkR#`Pviq!LDh z+y{$7pTWeQm@`Ik;(yd~MdbcyzF9ImlZ6ho7u6{aBqtV%bDQ?n~Q}y=owM z-yTqOO6B$Nogz(9Tpk525i?N?HZV{nB!08(;_CG3Q0r>>>dct0d;pMbba@_*KetF+ z^)w2FV^RxpOsk(rZgjvC5cMu=!;3TLz{d1QLn5Xca^>`{%WxD ztd0+ZSRuNn`R{U$-}mxe@2U`%OYrqF7;5Wq+B~hy^6;q?zL@iN-;$o8vNJ$?o4Qqr z3ZJ#jHtJOvzdn+<(0sxLDVlMM78DBkp}$kD&ER?Es6RGWLu84>Ja`9(d?1Rf3KKL} zPi=53VNm#>$>CYJnJy{z)1B{r1Z!|*EztSN7*E_~)!;~oxW_-!?0qk+n%5tc7E+A- z4<3YdIf|vHY!YIf?LBQgw}0(8I{w`JXIM6VxH4|yXk8W|xZ-&^`b_KK?1Fe>!!V5w zQdwL3-XcXn59NB=mm;EZbm$h=w{YoKI09nN>i6c(!2gMe=$)cj_5I^A1psRMb1_N@ zBK?G&2M4Ye^>>sN-kmAzglVKd!@#gZhITc84x_<=VIpK%d-<8G_m@J+Sc~(K99CyT zJ6Z)fwRt|dnpx7Em6B5LxxX_0EeZsA>7q{ljSR-(S`Y26xK*D*o{qIkRb6OGYQ1hu zpnLlCAtLM{9<)Lq{qE`JQoNkMvbs9ax?1F~*@*u-UgloWdWlP`voCYliVm-)mikYn zcE^_K1&`>s{%Z9oPBLT2pl2OhnPhtG}TA(7B{)G^P@)(sKAnm92)%Pb9r4(@%$*yAaf@ z5JHd$qz*L|peF}U0*`UB>txTAO;VyOJ0aHx3-o3Q+|0}<$pWep91;tQsICN?Y9N$_ z$W9}(AWW?wA&h0Drv{;FYdqQUxmrqtBJM-Mr-vND9}t=W2_2R;woyV^V)#F$*NGri z0|n@Ch=pMH(+NABis?rxNuakWr>8pom)&a zEGa20DLK7y04BG*gXwApWit|1rA`CByloWncQdZ^Q^&*}K+f5pR5BXX(EOIM&P47nxO$jJGoNKrg*4U+m6SZPpE>ka;#muNUP>6Lvd@qXnrI zClUH_7%WS*eJ6n&>|JT%PkF!7s^zOS0`8uLzT}hq9ZRKr3BboEpv9{8F^L8jxB5P(5;Xetv%r0AZyD6A<0|Gv2LDO<(F- zw>OICv%u(`@s4tz;BoBg$bw&h(0T(Z+*RIVS#}4^%mnl!?nGhCy@)Fuu!$ythhL>U{~#dpo{==5;WWR z2fZ?MOA;yGnkAxBxl%2Y?bE1*zlP}L;3Wxjqqb0Tw*eAR7y zmTw%H6Bj9rhjJ4sHk5CWM^$yoY*5OV#^rE3J%^wd;jyt;`63JyWpqs+_Rn>5BQ^47 z8*#-Zt|z@_Np&G=C||gLZ^02R$4g@h8pnb+!YBgo!Q`*W<6@>8r&Z%)1-UhK&!%YU z*h0JHeyWL>2X^xI4VkFSwtL?1gkiJbYGzMUb+?J-Ad60HwAfArJzObP&yHb5Ovlj{g=H+TZ<7{?79 zA4RJ0v||OFwtt?0ykSA5S-6B1Y0l82JJC^HB&^Dyr@KXLM9&*e%T1XJ5nFwK*Xv*U ziUaE+JWR!GMDf@<@Lhn;MgcR+xC#+A*j|d;|3L3*%zt0&(rN0A;5eTXRR2sujV2yyHoCuN|kZFF6AZA%ZRI#xVrSMIx5sjCn>SQ zj7p9gVj@?0gMn7QZ(nNAc|{;a-2k0wHTf~URx-n_1n?7{Q7IaYji=bx9W6%iuXy?$ z%{50Ic&o;PEwj$xHTwh|#)qNXBq?7IzvdDSwH62tkPV6S+tHn~!5Pl!@u^y#`XWJ6 z>D}1XEN?#pb%)s|RdY+r(`LWcS$ksuL6m|6hlp@XIWXH~xZ0!!b^)#HK$c8veZA+! zO4Nd5(Pso*8eQHHGR0mqYF(ZRa_xtW72qp{h6dS)Ys8DFQlhR$2!epgd?4-Gozru@ z9zZr;hf1e}kUp)O9uFHckc5*?ZMtQy^8EMWobx&>+brt`mBFEv)m;6X{Bm10j;ewT z_L^DyBuTq&{a*S5Ngesuw$Ff!acAXf>+0C}Lel?eKDjg|Afe2=Zr{6RQBik$e@BO>o|w`eS%`3)&THZPQ^KzxW>ha( z5Bw~Rv)$FB^&R5LoHj{T)?8rVV3f*%HvpswT~uyqO{%*@8jOZO5D6)Du3K_|b zp~p~|sYD<1fJqPjNJ)-^UF{w0vc&&i%w^5hV(W`k;K238^qC8FSF1}ZC3Jv=ugNp- z|7Abx()f}L*k+8w2|!pdOq>H9f@P)TKcJQ0GNg)K2d-{-5Q<`0F6Xb}8_kAP@QkqBwH z8lNdLuB&HW6koJLNX`l&=f-h4X_j3G+1Pfl5QSKSqueS(mI#7*pv=!Jt6?Ahs!Ubi zERsNgR^e-VACXy?Bi0zm~j@(U_$ltSQkX3r1c5CY3eJk~b*S~0ii z*U(c`F?*gDrr|lIj?qNV^fk!g+Z5M7j1}6ce|RqFbVvjW2tR&swkY{7194 zgSEw1A)xBbw<%yK@XWlYXd0=|!K+HST3igytn-v-g=ZIY=jZ2t|6BZh>aAJsQxXKA zxT`i0oiP0Biya{Ji8r~pj?ia1xx*BuMN!(ixO;IkNrkKMd)vTa|51hS$&ue`h^_fQd)oLGT+^Bfj%y@LYXA)-39c_%A9iy&Aci*O)9#Ky&E5_`7H6JDt31vo3kufvN2k$$R06BK& zh+9eG@~3t+kOjcSfpob%KWV;bUUQ-KfyFkI*YNJ+wp}F#*pd3EF(93_x8GX)9>L#q zoGakJ-7i`(|ApL)x4=RtDQHMLm5{e~$}_b<;=UvXh|12-7fl4XN`~`QLCAXQcX);~ zpib)s%$A&RJR6seN{t^F$px>aDPuNkGW!^B1%Y);p0YpQJz*V;U@G8(M)Q}#@X z=<0sPnS3uv0!aNvR7XHX31p`d$q0aBR~;4+#OrUwcQDi|JEvM0FrqG$>@oxq?RdDX zfWa1l*df8WKpQJXFy2q+2OK3Wj|>;I9`r$>u8x_mmi+gOuZ&-huenI9EB)9w0F|0% zp-rkf$B18@Z{@*`3Ogw>Fi%2&>>;;w{|Ro zm-$aRCfao~>LFnu?~NgePK|J&SWwKqPM{)Bio6X{nBQ6vSR${n;wlnE?h+v=#c2^k zcp_OldgU9kM9?!&mDtjY}B?#6$xF@3exAsFr2TpQxcGieo+W#^=wfr}F%C;^fukBkX-H1)jU+@%p z3p-z=Oy=?`Cpeko$|xaS>96YynqRsX%x~0Ahge%U)pI|QH;EqCSHqvh!xA(9^TfO_ zu+gDf+SM0~NtvXPm7=G2#M&f{&+$J1Sr3a5`y~5d0P=Hk^16^B8pvD|T@?dD)H4e= z-Rx{Ut0p!E1_$~8$#HNHgsF@wrf{g1%rcUNG{2M?tcEQO4==tW0l6uI&cCN7%9+?yj31<`N8ycOr9gi@UAaa#ShP zEW&CueVcCzI^DVbDL{;Hbfj5L>+w~)8h?G$HD-8EciVu8zk>j6OabbyPs!M$ke+JV z=*~G})G;+R5;SLsiG#kTe+;YoUHXhflp#MdASCd}lV|(r%qCR=bDJjUPkN2geO+sS z&E@7aisNJzvgV}?R^m3&d&Y1UUcelf9e%O_Jk5A*luB(3ghh~T}pM>@tvcJKKwtnx`+!n0Xe^EA#`nfp^Y$b+xH)rNhs zIS7x#kz6PD$~gbKHr9J@@I{LU$OF_eYH?X~CFx_Gi!;W*$!Pn}Alq)->Q%~j<@u#= zu*8Mqo%wdio^qj4R)_I|ECd!N=)qLnK$sB#sm(gKeo0~T`z=z@SlXxltDxmpy3Mi; zj|0tyJe0-5j>~BPT|$*mTx?q*@k<@6@++vKWL+WWIt0l7s9itHi{QU>}`Sd$pwNo2tJwxGnzvlrSj0 zUrL73(S(u9R!eOhHdvs8;XnuEDDtl@6!zaGMTmivIB)k$vEBAHXW$NBbCU#a6f!1h zdMyq`^w!_4%F0x8^Z$zTiV3aJ?4h3`8VQJ$th7e(jjS>~Pru(YJ_qysHrhrI&y=B= zu9lRPL`}Uy{0%5@%ZK@Yi-lopr0Bf9yaLS?cRM^RGNOhl|^WG37c$ z0lRMSlgp67R4?lF{!rKkSGXYk329H&%+S!tKVOu-oK@F~x7ZY;%$^Jb4vRJE`dB8S zQNw{5SyFZOXNaI4I^uUHq!$n23e3>l7!7+zVx^~5Ho)KSx?*KO;+%m?ocvyYsLq)J z(iksv8!e_&URxDpOsDvjOlv+==%Gm9{G2%DW;yK{FA=XF=V9(}n=YK5r{e=$1seM} zn3i4TU;E3BYglNIlJ>wpW;eNLB7K!==IUeiTByaxuJ$bseyhhcsnRW z?nkI2k<-K5g`E=maVXUXjMFznE-4{ii7`fk$lpU@n%A#jg1yyjR^Yq4tY-VOu+odq zJx6W&3XDtGWjKSWrELR;ms#fl{G{dgV&2s$!cYG{Z7hZ=w>qSqm0saroA>sR_FT`1 z$aUD*2ab4JVJtbeG)N<28{3?nD9E0x25 z$rY2Yc}1WS;jeU5vekq6_ZFY}UGQ*-4gDe`?!yh)>@IZ(7ZAWL#xFR6ldfVuO`QYC zQP$T}hpqQ?4Zo)k^C|>X1LYn(Mycga^PD2mkdQdXJa#+WTaIW>i4NEF-0rRBji@dzUT_r2P%o<*2N%I3S5hY_+E1R* zD;YMaae}Evo7+r`^rWBb+(Uz^j;hL=4qHH81ELQ$3CnR@S2r^PrmcepaCVO+CIZsC z1|EZ?jZz*lYpAL5-rfQ^Wc|Ayr75B1vxM4bsqYk^e5y)$fcXSonnoy<+S*!?3{4+Y z1@D8~z|Y;-IL zFrz6^!YbftnixjsD^0S+eU`P;{Ha?S?KiS-9s$PP5$;XhZ5sJof{xgna!jPFQ763l zXv%_vaGi>ec}kQ2Hg#Ark~Ywv=y^8AR|oPg`Z?RBO0f2EHFrpKE>}T*W_K&+4O8dKf(*BtPF7~qnAGnm=ae4RxwRbO>G=IO>E=%kH;5a(Te#*=w~ksa zaTUHBh7~@`y{+C?L21ivZBabi#M=aKZ${xt*QBylFeWUyr|Y?T*)+tg|KTjKRVmYq zZ(0A*GGO$S^YK8y{+RQQIBuHJgF&gB2Wgy{iBYFvO=Iz1XZ$!D9C17s6-E zgaK7u^sY|BuYI8{hqz)R;JvL^oNWL1Zv)85DBT4Qjot(`o634;}Sv@2s7=xoBbLm9uAb3mP%c< zlh~vtDS86-A%L8qQ28&Gni6?_XW!GLX&nF1+&nAkzV*uC^#o39*k$v#DyGjw;E!9Q z>t;mm7smysu{kP;=_3PU%BpeN*GP)6sx_`CdWD;DuJ~25Xbb0A;e(LZ4rLOtH@dB*x3r7bl4-Wy_J0&(%%_lpK z4(?9&hm8(Rm+L(I_Y%6tSMY6Zb75ooeM7{0^GuuDkH2_Z3DG3TDcx)! zDwJu;mH0_4`yxb7|CqpZ{C=|Oor3{71W#M7^tdU?MgrmD3=>~3M;T}9bI{njN}|xo z7C8VU{)SvYbtY69;y4h;Vpnz~XQgLX#;rl$Dk&_Qa>luvchBE~l6O|i$KU7N(|;_8 z98ULz3Gz-gSS$bujU(uae+S=a09NoK3~3)dVMKrlgjBvAsuOUXmH8T>koIqVH^WaX z+~M(TY$lQPd85+f((h3WW~JOr=rJ;ycXD6KOW<}!S&>!DSZhc&HwUTChm^e2+CTWJ zPfrPB1@U66K}ftfGi$CY`roRh`&7vxgZ-``?3O)XGO#ltqH4DCvRvc0gp7|g42xQDD#Vqzb%(x#{9^=z0FsLV{L z%NEIXpwddxQ>MxfFwBG$G=*;-l_p}pu_#- zr~mYUyB&-<`e{G>QH@G$L+QlC1ZN&guz?RMab%$_N3QP$s|7>En~k=MI-phBnD;w5Bo+8=7Dm8-b=sb|JKxs_x9x+ zSZD4peLZXIPRf#7Put2$1eGwiSyUrUr5=zGlWomsMHkrdl+Z5%;`03Ymb>NIh1=Ze z)`r91?JYw2f0vF|zveb2L4q@gLi*jmp|`qf$qyc{(+lsVHaXVefnmQ2?|nQjO48l^ z5hGvU;N|Z^nTvlTT7v`qG(j19`#Y&*;SaBG7gB_%P&r#94ld5}54c?;?w*5Ewqd5uNmDUxbs*CpNp+|@<`tw#XS$=}nP1rRD*aH#TG2F!9xGgT-`7Qb=jyX3n zRBCX#EGa%0i8LYsi?d|5#c`oZEjf!Y_T=3O_)1(})~vJY`sdY*P$ggR2%Me=$y;K7 z4o{c5k9Qm^L6R;ob0wirNmEHN5G;%>AqQ?oN=^i8)3?J$R(WQ+d(BFC*l9G*W~Qap zjPvpHpENL%-k@LV=?MdcuN_aqp83OCopRnMV0YnAjsIu^b#icU|L>6fJ20>XW_2L? zr=p}_XXwQ&$4%J|k^c7jVB;SHTBZE~jyJ>arAdj)`(3_8==JprMe_JL_SmCWWY83o=v)Bk3~NKvB1F?JAIw z{Map3X&Cn>*I9Ua0RYVY4Mn)^%MWFQYBE3wvzs0_7c7voCO?HjvWttm z%~_ef+znUFp1*_sf-68>jqIHE|M((n&R5>%X^o}dBV_h_uXr3ZaFTG$@}CYPMn@{p zQMB36<-IIJT?LyN^rgo8gHOs8)+$$qC!w83Y}Kq zpqr^j^csN2QgzW69;F1rX;4Oqs1!uEi@~UC*D&u5YSV`Vq%4luV5Jk$^@7E&0=_CF z8el8tHV(RD4I=vo`Cs_$31NBr`2TtPLR3a-%ek#y@$?c@j;#GIn=vp%C8~k&3(x4L z=4Rik%Zuh_a1JX#As;{Y0P-0spXu53{&dr?SeTby*yD=-CW~=yQYrlz0iH zcx{&y(`#_vViB<+c7CQXff+B2o+eKxIE-UQ0W%Qlk=UOd`XPnTM9Ruk}vT_n(%uHM3~+CI_g`EHq6 zQm%XTtC{|5oG(u&vrf*5>+Bs$We~NY#6iH+dOG@P(EpM|_yWB;tUdN14ao!#7)AuX zcfEW4Me3Y)53|@M|q6y6w!rP5{k*219F$;f3r~!d}z^+Azc~* zoWplfUdn*H^uJu4!f+YedCPQfO1$b7!DFujP@5(nI3ZOg4f_ z<$k11lFhZxnnh(IgCn(x1*?PUiUDpV4<$wG-Yg=G^y;LK0icgsQ7}b4n!oaM>Ds#= zJ~;9}dwzD#&Zee*?hbVys4r6dl9oF;aQ*L;kjQ*5vDH#n?1u)Tv;wPVy6ge4;vc!T z>c3Uv{|E`wN54Olfs?v0F$GRsK4G8<*SKL+AupDsKayifdY>XsMRxNsBv4k2;?qP4 zC5H6n<3uqf-Eg?Gvo^!m+Y=XmFbu7|OhykppVLC04^h+JxGT)cEz4Ex?P4zDj@*3O zaSvuAk)gyC-Byp0$|3LY`W-ACsodg?+Pj_uPho?`o<6plE`N9@04bnU$uVR_K|u%t zeqDtxCP`NLrA|7QwJti;WX?|b0|Qt#;z!|hLFVXaS-ke*3qVLqGKdI>FR+(j00sfc z1haoLB!DN{XAz;!6)cdU31jbl+HXZ(bqGGkm-pm%0r!VHqSPixI*43!i zKd;9@A`IV`09Lu94D6hf)@Wsq4oohi@gyMb0jEOn*o|PdkfdoS4mesY?X; z1-}_rFUUSBjzY$95SXX2@E5BM2O;?UDHF>8l{$nD3l0-N#QA&{PI zcH8G)qBRd<=tr_T$i)4AQd)4Kwx!7X_vBACM^n zWo!s9EoUT4NA+RiQGmzu#A8^3Zb&#Z2!e&%k;C+TjDl9U)_JYpy9Jc#8gAI(V|%RF zbRr35$5W>CmmPMKqOS0SQZHp_XWiWdOstyp$&ATI$g^ha|E=2#{=n;~aRg zw2$B(oVx5O2`tV@U}@T{CS!@Tg0PG%^d#*6spC=DW((a=!unwpCt4^VH`R5qEUPXed1 zH6@J*;sw&2dQ(rk`hAtI_ss-eXSAAHit-OmX4*3IPv$AW`_pizrQA*k0W~j!Km)^r zAAOA%3Uw(dBW6X~5q;z>%tS+wfh?>+1NHEJux;3 z;}r~+z++XE*L!k3hyrX;ism=A@76&qf4n)+`G$a4dESEb$?bg0Kfz`f(DPO_*WzPW za-YoK6ue>CjElpo!PI^4y|1;_ zxeVmTZA>>h^9?TL8^^a!J+p2KM)ZBxQnIc$MlyuG%v@}D%v<+EMy~&wCu?Z5oOc07 z$Z|fbp)a6foOM01wgzmNoA&1|=fKUa*K&OfsJ2ev?&5k|(eve5@;he$W(a$iKYf#O z6eBXf;|d~0ta`qB=9IRd5E0#Rh}^dOjVNN;XQ2S%NzlztaE}0slS6Kw8E~qp<47Vt zDDxu9J0TP?SE}_(Z=mHCOhN78{PtEi$sxFJVM0=SH%45=)^qnTgT*Wpm&8~`X3;kO z4|7o5m~3OUY*`%$0z(FW9ZLVRK2@4VDrbz=@6e+A?(F8`D0-V5y|~~|qo^=sWhm5rFNknD>+T?U=jwhLw6hn( zAV303ZQ)$?<|@lJnN5R=x?T3{v9{0S$75d=819lv0;8IR|RmwbIQ08`f&G()(riZ<<>M?#%VR2DIq199Bv67NatXOH%EgfU0Fl)39kli!n>7Ih~D#^p-XJ3GG?;*Rwm}`-c2#-i>`L97B z7mRPHZNa7gH4`E`Nz&ztU5YCcq|RsAOUr!38fJA&s&kdo@S^|(pV2wrw^m&rbUSVS zwxq7ayp;LKJQW!V>Id#x2@TjRz~)tM02#dT;p1{=A==f+$;r`?eZ)zj90v=AezM;& z3*IX>2-0(=?(e338eO@xy1Hljr{Lh&TAdqTLnb$f?5nX+EFIg6{r|F`)l(0)lm<^} z0j#NbOKFn0Nu-cLb2PlrnP6UoP`ANy*(ij3l(pn7B*U|d?F zVf`&>L)Oi?UTZIRO=j$`F1EjaJ24+|TxMAEJrUR0HDSTa@Dq9AQ{8|cVLYFDzkRdW zT30Fcw0WiAYQ5 zcRJlz&r})<4yEqhzFr>j-B@SU_r3g`QZ>@FKl^S(D6Mu{CR6D2d?o90P;R7U{~GX% zOm{G2VM*u&y5}0niWz(v<{t5Nd8>I`1I2P{&(>x#c4x1bLn4>A7iRrmLl;M%e!@ zUlE`~YeDEcA4IiIJxdfPdGq7bLcbT~KteBZLZAUNmabMi-?9F}h)rIQ8jZA&y`YT5 z!$ZUcKgsEgt@@Pf=WsUM-RwmhNr9io7%ot27xP)%F4VE-`SL$JvGv)wKzf8fa+w4T z>YWoC^4&uEr{5&d28ODst0$>LztKnZRumSJOP+DSN9i3Z*}su7DyioND#EOqs#VC7KHO)JF@4dv3RD{bnjY3|wlZyP-QY!~bOKl(c@!5}oF{u7x$$>WojzkTKk>N-* zo`^?gMxjx(?K1H&BGLr&6eIx>$OJzunMTIBUPMW)^zpjIf=_`qM#T3$r~seb7(Ts{ zi--U+_^=K&0TLmm4F{RIZ%LKRCXpVQ$Zrk5H#qM8y+l$g3znPt6Cw$0H@pQtL@tyE}2QEDWgN+kU3GLF7 zQjCibY0M)o;@>s_TX6AB;Nt^LM@sgYibLb47=R z`nvS!W&IlE^*T6AD9Tsj5XJeLlI3;VwGP7SUlf@|E{@;r_@0fe()q1L7+!BH`Q5hX zbR(G}KBw1XhtuuX9R5Qy&GjLs zAHx)ms^^HP*-3D1;#rtWiZcb#O|BnZ9U1K1ev!N~8LOV$tL3+?eB7H#yJS`yJnv=e zhmXvLVDW9KMatqB2g6Kt)PhFcb&^4F8ZQWtk*ca{Zyl_?ylP8>AnZo!z@0p2sf|kn zI}Y)4SZ{OY>a$t)r<|?#I=ZoTQ4!t86A<7jZ3g-T=ZnWLe-jI0C6vd7vNv5}($4ng zUoB}R^*RbtG#zdZ1OA|{S}O8qe^A=uZ2wd=7J}_Y)aK>0vh}c=zpATyPyqyC zW0ISI{@k{<2`=p?(a=pH|Ij#-%-ZxS5E@?bb?QvSHIE6lKOXufvxw5_IXsZ@B^K%Y zA9=arAqr)yfsJLf1QXwXn}(P6tbIino^~gEczM4X8{`ir3EpX{%X}E)Qttq0;bCqF z1bfgX((H8(H*-HyIYw3Vb?~sZIL`D6fl=he>wIyJPfcYeA7~3V`G+cV=z-AYH8=l( zADA>Te2_mgGmRiF2ByOA6hzE2DzyXfhi9uD*1uqeEO&n)u7Q zcB<8b?-V0-Lp|^QD3wJVb`-x{uhhs~<>T8*cd{f-nVjSSjSz|eP<45{F){JP#ix_o z`ac>W1opDS>krYMdPLF*K;W!u1XkQZpseSQcZGz=sLa;8X@(R;D|PdI`H|uR3_h*k zoj}oI!9z9{L8TJ%AL{eWXsmUu zfJf1UHzy)$yCk$yH`+ppDDmj?zvjuw!l|s%&qI@pL$yrQ-`bSZI=JmWWk&}9+Fp0G zuitmf&;Q_H{=9Kw&NZUao)lOH`89~qB61DWZS@26IG+y!*gvJor8K(srF`+F#PlwI zeAFutg}gKiidN(A?}I^9PI`o-L~HyUN+k1Da!Xm{);e+<7Wo!fvyNH#}? zPS>8>U^rNvEFVOf{6Yj`*kfhJXoqa#?|1t522w-Cm}#XUe@$rSu%rWj(W`vL)#~hV zaB%F#cnZmsL->E)mQij~z3$2RYT$F%3?dC2 zRmkuFDmy_S2Q0YXpzRmxd~G>M7n;4!(36Hk`}v>uku#K{#D)F-o{&&{GpUKO8h5(zyJP#gq8GN~(Ib0c z4A~Q-7kKhd_|RQVh@a{PwxuHeNW&#x#^SbP7Z)khM(P!u)fgIq8a zBO2O9V*H*Zc_W3y#QPXK-c-@FC5B3bm!w$a4=*nX#Wqzp324dw6eMm6#BwL>x~WqU{@p(;&HAd3yj|_MJL?*18a$2Pj2v02fSJyEyb1La2n34n5J``S z3*l3EhvLjg+|l4ssLaS{p1KIJRA2DhM+{Y(7?&Zb#buJsv{SW;@DC0w@M1}FI}gGp z)IZkrQ7HRYM@2&z2=LYlO9v_+vRh&7GHgv#IPc@W3lYTX`}&hV68e?|Ci)A3E$!!8 zGr5uN{}$WK2nky=Vzx5Ko26liqi9QiL?_AQ|H#q68OCk;7GW&9x`4Ar&mPYGh%yNF zd$yaII`R=w@QF^1jz{a{JKqYc|Cl}$k;G%1jUzu_H74|ZS2-b2c_UyPncBX&im|(X zB_a;#3dZV_BIkWtK3MSP{#Ws+ZPH*|(l{)MSnW+qQfop;9_m>DNf_=UiC7C*I!^hQlj$EXQTe;U|N4Yg@}$4eO8~qMB=<| z67jfuB*wvuHxp-NzB@&Jyn-a>IW10GLAsNr3oX7!p!>6?wKe8bZ(LcC^2C9y zAX%MRtT0$CD3NsGb~jX4-`O%7$Wyw&Dxfw_*dmC4Ucvx!5pBz2PGSPr-)|$&DJ=Xk zUeInrk$Z;h{Mikk_ktj4yPg+U6)I$hWE2(}+sHENj21Q11#>yhdlAW`tN)7#{nUYk zJd;>zrizkm!z22dkphO06nvdV8L5NgxAU2A0On8<0)2WH)84KUh(de-n@(}7F9D%o zs~KNfKYs-*Ct=c!bHkO)pOlj(ECh|0QZA+rz&jOn2@GNr6U-xHT<@OJ6CKP0zHdY6 zIG5=ftpXZC=g(e==I;LatQ~ouI=AYF+&e_&@JktEb?F`*!-?h;VQO1D;p;^VUZX%G z0IA9#qQ!6?##LdoKZj=6@yNt)ID^2&)y?hgt#9pQnqtIfa`GL;b>1B_h&tYz>A8ac zUQ)-8QUvmK!cbz#rbdG*JbYU()8+GpafEdKW2VC~iF)>CjP@y!_+R2Lb$>0=xtdN0 z#YLTr0XyxcUNuR*I3Q)B?LLI;Ef3`BMe%0$YgCcV&_QZA0s^g~u!p3+Dfg%sKK-Zk z-z?oD;kQ;u9v&V;P2p}58ma+Fi)j>!;FH3qj*=3Vi6n%0k9^r;P^A;slJIig8=)GA z^5lfk>pyez(+l&AuW0@vTBfJ;s3^Aa@nY$b(hs{4cz&xpwLk%5r0~CoB*VH#vgzq& z-AJZ{FDeE%3oEXF?lm%>fVyWB2Kxo0E`N)NEBt!d@OM#MJ^B;gsxxsRwc6_ZDP|s% zTo%4ql*Utfhq>FEti@10JUiW;Z$LZV2?txm!bp&IcEyH1S35U5CCZw)ZA(#SWh`vW zE$7!qO2Urpaxbz~k4yzAM}~&VG6X%0J@V%4kbSe;gL!f>fMF3S+*uCB)OD>&!4%i> zt!d`kMHy^m%zQbD^Pbo3ABEGQN*@`rsE&9gO$uY^r7=j5+1Y7iD z!p}hg-0!(6tFc2ZiYvOidvgS^Acj27(1|9~XsPk_&nqb@Ph&A9W&kbe=isia{t{xX znJX-C_}T6gdnGb~wjdNP5#S%@G;}Jnus^DDxwL=#@4uVgR=`oy`JYrk5>hF2jInm$ zH8VT?mckq@{Wda`u`j1~zk=flggQ3#^=p6G>L8R%JS~ci8tEQw^DqwsbvkZC6lg`* z4MWvuaWmwg^e)5kZ?Vj6BEQiSK!jdvn`}1NDZ=}J#jN1WprkV~$q>G3!DaK>J6a|l z7|Xa6G&M9XZ%A)?yPQ9s4o)4dQ*F66BD*s(<_;`u(vo6=>^Hv!e@C;tiJ`IX)t=Ch z9-|#O(kOa42;9%|V_-&2YHhWblp%@wG`Kvb>gS5lVxk6lO3-Ef78T-9{hCayyjzRo zS;a&@PABYVphdFjaD62+FE?*%{8H)wEdm=uvUdYw4aSk00L-|`=65k+-%|W|TtQPm zXqD?C$gF`N>)~TUKqT$&m(`!Nwx+{c>`!vD-pi;cjoT+uFpYHeBF5T$^@mJMoEB>3 z^?}|EgOw_&CEYvOlByVyV{ynXhH?&*t5U-egG&9i1MK^+G$`}pm$^m^LrCPy@`H9wQ&Z%_Uy<0J3Q0^q7HV?d<>C`ccJ$8voS+(YjGhbN^0FiQ z4~Oh8mXW)|{_4WjoW0-G1o&NDIG=1i1r=fj3R2HVa(IX%gOwG)@Y* zwY87A+gA6G_4vkb?IP~{e|pm!vol()A5W&Y?3*eoS~7KNE1Q~{>VBGO&tKilflKp$ z9^ct!x4pE5>$UF7Pf$%z={r0JV)O=O1MKsSZfvN#KPJyBn^sNU-8WCZ-5$IiYY)0Q zI|Fd~b->FJX>DwEyBfAdaq`suw=;}Lu~aFwx0`PU^pVTU>FK_%E(tROEv??lL6R?K z^|B@#-XR}wfeYz|U|5@)CTar9(%2g{f6v;*ub01ZGdCFZ34;98%glag^qPW#f}WH} zG>|a#C)6#Tw^{d%2?3JYI5p2BliYfY7TwMGu#A&aOx#n%pets#MJf4&D(U>M?6tdO zkesfGNhs=*NymM6xQep6akG8W(OZJZdyr5<19MQ88Hp9Aw_N@AZ6TSJLZ)dqi3EqU zqyy0Qs%T$QPe_XKTPQ*EH9gg5651Lc z20=m*=zYU3jm=$MT|Jauk)fcdQag#dsk}TpO?XwdD13}4j%up`(=`(dx+GKuLEzXuFWM-Iy85=ewBu_k{F`qjXg zZ|fIc>qiAORu9`qR;;N~Cg!!qbrsSgkwmwPr#qU4HyH3~eg!$<#;vWbhyl4OPR^kT zvGQT<8H;xX#UA>Tp<3$djpHc*waP0vc=U|gpz-o{d%GB&oDz}qpMG5hM%((4V`R6M z5E;?`AW*5fa4f9xV%$HxemqZvILvK}CS=EhL)B2aB*kb9zk*((rt9G7 z{QwfM$eLK7r^B402wAy)GeMMXl39APS(hVOA~X*JWd7mdAq1Xi5n&4b7wmg#YOW;q+ver{70YC&ga`1@I?8W3Chf%^hu;KPUk?x^bQYw&i+_blh2<_!H8hT^T=w>X>5kX|O@`41 zm$M-0jq>uS6R-o{Hi;O}BMuIv?mmkdp4^n(tfa^A_fp-whY)?hD(6|>YD5I(CnIn z(=X`GWH5EyOh|mJxUr9tI1nLA^ir9DN#c8G=);ZOrRkdurszLM?-$P6Ig5yYVq>WV zfDLEdu9AVrFuzw>^Rr2Ef8BAcqJEA7`e1)-vM71RRY4{zf`SjJucj>u5@G+WG@r&} z2Y9DEZ^MQEYr8TkIWr}dUH9J4I|^~Z5tDgIR4p3jFFmZ8$QAj7>MTr6_1!PX4AXH%0iocRZ$v0uLxv*K2IK~G7&NtO2Fi!|_P)o%(oxFT z)Fr^n%F}u=wC8&!fD9g+ZeniP=M*_wHaDRDMV<9YRF)B8jCEYKSX{_hqLw@Q?@Z}? zrzB0i%a+hyNl7?YbYbCQ4t-H>h4&LpHLN&3nYidgI0Pj2A9!{QDN4hU35{ZgF9M=8#*54o2J~$G5 zkdrKic)QO@Dn(5l01b#7V;Ye2w&vXuL%d>f4B>%%gHWZ*=H%w)3bHkwvAU0h=T)V| z&RmH@q4ZcUp@&%bVh+Q6B_H;E1xcR-4?Reel$z0vp|suE7WCfVti2WFE*$R%(TXBG zyvFH&qSdvvUh8W^Lr&{izH1w<`BRoWWg;#&*YzhW9l0ybK}BEKgnVwMfrxyH=_sTR zA~e-@_RM%Lax})~dmyJ%SaL-u;(phW^RqV&QE{{QZK&wMI(Jt6?eF@bqc3H83`d8< zB?4XFVYHRsiPBI3zh!~pu6}$+nt@jA?iiH95e8M|(@DAQc^~gD-9zZ;=^5w)L3AU3 zxTNd_RaRX;4Hk?vS2Otw`1z8o`D4XfFq0#F(N-LbsR+nqa)|HB{EAg(MPZ>mQauTl zlrIb7r@#K2Mq87UlRKs|J{kIJghh0(y}h5H%dwR)hgmMIq-z4*oSVBl7ATWYJZiy3 zHZZ^h0)E#(DR1^7bUh>Nhdtxr{ttyfRZZy#)yARIw$^#7M_(t*nNLa}VE)_okN|~O z*vb&7Y_8ht1We&%X*xa)H6mM7RhpV4rbkLjDuPLFNaG0%j8rm@uE4k8Tc{`$A8{zi zHo)O-FW+hWa+|g!k6R31^bkuL`c3;kvrl(cuY@7c)7Z=3i(X3=w@=tqgf9xI7+MUw zHb39-J@IZFv`=lF;1v+^y*`*q-T5r=D(mzz%fkPJ_Le)a?!bWIWs*i}WAyq1dIr-H z1NT!F2q&Y=4HR3NrR3;;)Z;MDI~evy5G4x`6UsNrAQ6M;YMYT&_`_mwlh8Gl>FeeU z(m2J1WT}Jl+hKeL>FYm_Y(pdD)VWewa3WB(=)8l+i|CXml25lGw2Es{ z$%6k8IpoK?)oijB*G}(Tyc1P^YMQB(KW?d=tlDo@mGXmu?p~sr7mUR zqU#>HRLYHt|2W*da+v{qAmpK1RW|d|y$WSbzm57IAc#Swz`THBJ#~&KkvD?ix?8*5 zpOpC;y^w#y?YA}$8ex0o zing{!1kc2Z#uci5!1|w*7MI*ygG;_WPj0XEe;~iwVl;CNaZebGAQ%uAdU|@WL5^Jp z^hYaw>gco3<4W6cB41Zh!t0^CsVvmc)Ig8TrZqJ-f=rkF?#?bH)eC^qGmY8?AJ}N_ zT<%IPInVse+}zG_!*e!6&$DK7`_`*c_R;Ch`vJ6Ya5Xzpe5tYGB4caXzg`!% zJu5^}Jg~sBL2-BgW2N$X!|$$M{rkv7*z9DpXnelR89H7>8CgHW>TAph=XHp;oJ>?@PHT z(LFugop&LWi1k3UItYjmzabw2Hj7ccKiJv6e)}c%K3gYyEn>hbWL7j`JjAls zu{>rR|6R-o>YKW*3SesSv;`CNp~3OpB<3Zmo|cv}Opg$e?BMULGRD*#(}|{2duKor zbl@^x4Owz<{^(g*TMLAVX5Txwen|1zh4Anl-{$F!LiP19n&323M+ODoQ1IP#*hu z9vcUVD$W%g0jrDeR;?eMEelNgZRq^t)7sj-xv8nS7m*SD+69SDicAw0Z}=MD6>-Co zLo(LDUA33*C(JDUDHb!c9F|~)fSd3@rH+N#;J~<;b>2`@{aX&Q%!xJ8-{tbu1SLoUslva&jf~Qh%5x{rxETO>6jOUwj=IEikLzUhuTO;T0y*k$Z_n} z>B?K3ko&?~R$S60bGhGkdN8Vz`f4)MvvAbz36xqiaHV7A)>6d!!(^GEb?waf1{d35 z$UJejbX9TfA8R*(V2Om~&F33nkj=iMKXaLu$~0S4M|o!=cAyO7J%FS>Q!{xwQs*=~W&9z(bR&#O zll$fL?uPJ-je~>Jj?cP;wSw5=#uS`IDWk-HQUV~5x?h2i(0B-z5V3n*WsCdHvK5*2 zOBj)sMs}Q;>{kCpd)r$-j`ZYVynxOkc2V9P!u~?}<=++(DEe4>_vhGE4!u=R9>_6h z3}1+bwm+F@f*MzOAeE&V#%T*|y0GPdvq+}Cx~ZwMG6&85ibE1VtTBdCLM1XZsLlUG zB*mehNeuF#)##O&Wo`oP+W<^`M^I2n$!8wBCNKALB{2eqY796+ygX|9D&MW0TvE&o z4%W=9tcpJpZszp!6so4eSH9*sR!WLntHVt{$WurlgPEHlW4zCT zcbOux%I?2CDykP&C1GOfQ-#HsL2XM*?_2$JlGP2K!9m2LvOrrq(IfLS?9Yd&aW651 zH6D}!K-$NA?|$PgSOIy(RV6vpqJ*Vr>GrWLlV`U;JtZ| zh)3(UslZP(X8=9U%inns&&MTypp#XJ0z?x76_#-1e#>faxs_K3pGD)oA+eW1YJYeB zlqCxNAlRACxJb#rcJD#kiQ{h1a=}kKZq(na5PK|Sr!&9LNs=a&t!+S}V=@8K#*{C2 zvFVE{zd238XQ@V!nN)_T&r4)tDnbS~ z(F6W|-18v~CdfCqB@L%zQ+<6wVkM@e3_vQ&RwXL@++UN#=m6B@#BY_~8?GzN39_r> z*MI+3H68CKz(K_D|UO{ zkoKIr%IuwV7k-uoM$1swP)|$CK--RsOtp|cTp(k2Z7t*|Ep5(DiQGi~x2_(bdMhUU zP)mi$!(~eJAUN@=1TV4PX2a>Vj7)_eRDS+3hHeUliCGPe5F7op^iCg#(?6AMTNT22 z2$zNgF|eLji1XZO(tIqGGBMMh7@3$POu*&akMqQe{AHxz5o+ zw(MzzPk66G1uk%mZvHG^@u`~!WtF@e%2KSjjLRwQqw&})%ArU<1|kEcjs2>rjDMt_ z*dnESVS*MElD_q$9$EgJIQC)twCeg{w=9i9U~L?SD!!PQ=(Be6=cg90`FP1zO}~AQ zB}h_Hfj^Q;xHYoKLCGluNRN@s`L?YDq=b1m~>rqU7YCq04faRggSc|(IF%2YeDhXxXE{G_MisD_bA zH)+1{HrvnpqaexS-Py**BMYfCX>yw2!Ag1AL{;F5%#7sUIXyg7Z5*#rzi_a=I{){x zu#ihZ0sa69MTVPDuA;-0rLq5xEjV)k-(`lYy{U&OFU5>;1PN^!@IvTN9gpPd z9-gU&ew)+it;u-$XO)@jUkeSLHuDyJ*>4??Fs#B#-aj(}e-?yZJR*#ap3WEs7Gvc; z$ttv?Z|F1z?TT#aG4c6-aZH}zbjcxTC7Q{UVc>@5vs5vvo%{Z~eQesz}!pmKu zt-J8=^jW1w?#xzAqZ|{{fMu#o$@Gq0YTl4*)ugTk*EE>j&Ka;NE-Si$&#}NccXXSD zqi~P&7v3Vx2EqVx)fE;^Cl)`4NyX7`9O}LA;oB0gf#6jn?XK8lrnhWbm23_Hg<}tXLaTDR#BDp^%~MO zf9WRNiZbS9Ht<+I*}IItaV9ZAnvyNZ2jRia8;mKHC0is0oCx#Rb09T+HX5!gfIU!mNgwN-uh6>j;lf2Cqn``YAD8OY7gnca;p_fg8Fkdevr@#~5O6HlS^1e^07{1K1 z^Vx$3Frv^gc^`)@j0IQC{1ee%+I$;>`kfoF8iOSqrD=2F<70YWiA^E0)%+ZtA0i&SPUzL=^Ml1cu&kA<)5XhKR~h zi}cegFE6hlGt7=Fkt08-zM?^m>S{rLdGq^RrsS6yHYy_F7tU^Hqd-IhghZBWaw&N z#unftD@nnuQOL!_I|+x&gEmv`%ElVi&DnaVjwOfn(Z@kL45JoPR&PkKIA;s`D;b%P zIMn!9s><=SUsw%Q7&8qCOjRQ9cT`qlJaqYx!Q8LHsqZ%?p;7Q2uwzFhin-_fnhy-H zlBp7v_7A`@b`TyQ3q53a`2w~2EIfkyJX3@8X~iZpqP+G64PAF79Gg5=B)PS4RmRbd zeOQmFIDyP%KYFNv|L6Suhe%%0I`0kD2mXQPL3YS;Zc1oCX!R)OT{?OX=vofmgR#p8 z&P+Hk2gR-JC`lYj9GSUo*34Gt)ywe_oAlP$4=e>Vw(<0R%4FYixUA9BLJ72p4>0;j zB=W5#DQQCI+iYCyynEq@|A=vM;>T#*v;70V!*uZTRAhU6qp+Ll_U=I+hDHaT{1sbt zfn>p9oBs1;Y(Z%N&MZ!?#?NaoZu zULt)I#wo+C1dR#D+nGx0?>J1+zkIK%0Qx$^l(t~k@0Y=m^7HfUO*+yW`qQUt5`U(2 z{%#9rC^%CMP!qwl1KTXPGM|Y_zdEYSj5W?z-TVHl*CIECAb56utyxoy@nwJEvNJAG zqG{JQ8#4IUrIY(V{-7fyfH)LY{phKc6N)p_e6E!U3f5?#aI06QWDjuQVtiob3 z7}-pT{P`l=4Hlpp<0nz~JHRYdF}|y771j=F?-x9-!02}`s%NFo`J=P5xA({G<}Ae@ zc%MImf%cA~*L%l`nT^uYQZUs5|Hf2~dO4{AUBfJw>jLkBC@15}dFwYg$N4KNDP^Ef zG_YQRVKsXi?eGW(L0b+6rM8xP^d)n8wh1aW^5tAY=Up=4U=ohF`b~ zR$?SoC?r%6g~dr?^m+6+y4rR{i`bFyczRly!o=mZp($4gguY~L%NJG6naB_f6{cs1 z!UTw=(=yMDKw~O~wtMjuBiSq8KQ~l4W5j5>LiJ)({cK-Uc?aqJW3ka|fa%$0OQS?P zao80n)zlf1E*CqlVqDKQUlfT%!?b(R^K8hFGOREuhCJ?{T+%Pqnbo%i&;5ms_Mr$Y zQv@wBgc@=m7VsK@gCP9Nr}XKUg599yJtS|!-!N<#mX5u)H*4^(S6gj(1f9O9zgvD6 zUyM^ln(p>dvTznBGVub`lgAX0u>gz={~J=cV#SCId?I)Vs=jhuGJ z)LGrPY)p%C7)#D1ROIs$$oHBWTU)c9UwjbsI2z))x@oE6W(#jKf`QA0kM!{;o_Q~T zMP8tI{CQ>c9E8zt*RuSayu8v9QWN_AlK)R$Xt_k+G~amh-^`~iT=i?V9-e@b)Z=4k z)@i<085uVXvFjcD(m25&`WtiAUHWs2s_k)(Q zM@$7w$~>utYN(abhmP}U4M@vgb zS64t-c;ied47&)Q;sq5_6`pe74u>iuaK+#Q19DqMTZEK?AYicL3SyBiIx(#W~mBHcVV_#O-~p@sSHj%V71rQeQHXX7Z%%Y@j}Wm_50xQ zPuT~d+NpV#_aQ5NzfqEmJ3b^zM>)*t5B$YskB70u^2fvERg)*2`GtgqDIa}C;^?Xm zdzN}YaTp|$%~asHABAy{i|uPa)U5s!u|)&xoo;A5N=GK?hhtUBtBSD5`?R#mvRHvG zN$mIix1A5KkFxHhT2IOO?X=)Hh@cTXx|uV(JsbO{c~1V0$=qa*upNdy2m~j|@)CH5 z^T(GgR5dUjBi_GYf&(hfAqEtYWG!Rmip?xnpMOjRG_|Ks@T#JgzZ0fOSJJ2s0eXeNoqA)u6 zOU>_OIWc3?b%pU_!5n_OUC%Qcd=(gEaAe8C+64%)&%Z*>G|C;k6|hYjzKSAW%4YkE zN=qZ9?W!JP(L1PWLgJ1BC1Rlgu(vo=*linq1trB8v;U~l(sh*8vc) z*>UCOY+i2cyPqepP+Z=$pli~ffjz%M8kO(<(&)j#2f<5BZR>OLf8M?>;&yl2-1`p@CY*e1Plo5bn&+_}phfI% z?k$er;QtKn_35KcT6|avgGz^rezT)|*y%eTtQ^BFFPHU}V_9-zk)jNx;xF2lohltE zmB2H9J}>3A``TPh=6zAW0GrukK^?jEK$t8(gR=V;nf6M5(tviVY%qQJGVR*KWL3t2 zN-mjT`1W(gJd~LoCR;94`_b|^uhz*^11bHN=L407S*LKiy#N-kGYL_W}L#{6;sjf;TwtEs>BSNG4o{rAsVkH0Jr zE-g#`Bp6uHIMgTv}(nlqGsB+fraUH90p5mLc%y` zXQFtRfAL%3)3?7u>@m}aCBp?%BU@DSlVn_hXqbhBdm zt8q(% z4n*e#@0|&0CO9=94$`AB-Crw<6IF+Ga3WXe!*f8(XP#Lu777~$rTva@HGaQt4jCpI zUT5#|Y(Asw$q!mu1Pk)dbg%U}H|i%R zS3an??=nRbO-}1H$j+g(+DzX~OOs;&NOk9WM&Dn!eRietK~YgLo_Wg!$UbxA(f5Jy zyV9qX?SAgSr10(u=(HNBZ2Gu*xXPpnFoN|hj-}wZ)8bMzXJy#xdjq6-$e+D4HvNWb z$KC6Cr}eMDxRkt{C=afls8p#`2-n0+Okly{WW1pC-;G8nd}AMkz)P>ZVkq*WHH5?dWGJZy3ErNwBD~4B5BBLRDFa7?d_RGU@;c_h@OV^t_#|mrP|~ z03+HDQD74JeT7~&A-HJYJ4l*AS=NrW^K#(M%HPFo&o5LAlRu;&vZ!^NcffPP=a+xr zz9Q^9d%GFsi(P(;)ny}n27$KCeprKzy>$7G^SKGqT1Bk^t(9`#KC8 zX^~r|*W6Uy&em(xxMY)w&IVx@MVqs9r4AC63tVw z>Qn^=iMwhM5(Us-#ensn$GSd?U=%F`3XS9j*;V*IGF%!qi|!>q{QQ0xH? zSRjTVG!4)Efd{G&AO>N$*!T=YqQH#gNwqorCRNU#qZ;T~4ud!htd%kauwV$-a4wuD zh-j#wP;p`2`%N-W$stc*ahPeZt16M3cfiM{REPfb9g%$Tj9x1zuqY1;0(C!J<0q&7 z-9C%;9gg~Se@VFmCve&+!^#q(D9LcK*w%62@Oz8JW^eo9{d)uf{sw@fyR);Cn@aMkqg8Jnrp)D6f_CUh5_c=-fvjX?Jlh^0_i?>05E(v}HzOc@@ z?+J0!3iAoY$>#h5tgEc6`Yfh_k4M*QT@RjvSP^Ub0sxT%BDtx0JmK9xIm39_ldGWr z^$=2Kq^AShgu434w$ljp;_WRZjOEzVRNHkrLozpxwr_cPd7?;@O3)qjn_XQWjkMlw zT4(uOm@=5w&I#03jM{K1;spf-32n`mFBt0R)p@NOG|n}E`;!A#gUiv{12#cAkhlP~ zW^AmiZ_+bmY{ClM-Tmqs74;f>G!A(geh`y*tjY@9hFc($wgD#rx=?0B{ zi>DHCqhO5tQUwezD317}?vlhZakT=qeU%`X1+DbCI**p!&(q65prKM8glIq@*^5j9 zl#f8(ueP>!pzv>^n!1iPOTtjl8P=xS)A*lXCLWf<6912*^Nyza|Ks>|yK;?kjc5qh zyjEtiUAJr9WZa@I8D&Qzdygo4?^$#s+-$PRDC-I#TV_aBR@U$R{rRKQAC7X){d_*} z&+GMgKAz0kHf6Tijg@7CcF>251ZepREe*)$e+LGWj5l4>=e7N3m#7U%S&DW%ZcxE%{)ekw50nEeI z&mjKHqWGBnc}|a+8rfZr#X{s{esEkoZ$!^AefTRc7nO(7!*RW#&sH6dC}+F)s@^*$ zIyyQcH&uHl7kIZVxFgC@ui6GY6u@KxB&+2_wi{9xhRTZ-%7&|iBDxJ7oGSD!vs`;~ zQ+Gd6viiKymAU4Fz&~7Gx?q4GnLFr}tBLf0CrMSP=$ErgQP{m~)mn&!$6kLCIY5@< zeCj@d`_O9U_~-Z#P*vcNC^~`)*2Sf3l3`ij~ zPY{f$5<@v##=2&wNdSNLH$R(2+YJ4#42hrb;>pqWg+m@1T;h@{KhO2|sO{9u;`*)O zVZ$5+ydLDOh2^vOcMonDV<~V#%n$2pDX147G1=UcEK9^o_6dG?x3KU{m^v`PLyZ+~ zO%O`NODI!^ppkG0h0D|jL(yYT#!Hwtsg_Egh#Zs*Hbji$jQ7!$-&rCeX=L)a!-b7g z7r!txiIvNVEHP>HS{YOgs3Qbdt<=&PyRVXMw0xdR%+UoZBf_9TvzTXamG3pv{P_hH zhM};^onHf>2S?vv7(@=D21X1{{QM=-j#o=gS34qDdvb+^jzCDo)7`yfXhlPS>ZG-` zRi$W5Yw+(*j`!ig!hyB_o^^ObrWPME7-U&e5@h_&Uhad{Hn7P3`_~EnIbWm6yZGUqBUTOb#MUkBlczl6g(x@oshzQzH;Q!C||5FQI z7YW{r+m?D-WdK|*n>~rnSvq^cO9&mmRcca~C0l(g%wg6#zGj`R z+QeDrM=SZS3ZI#o)fjup?k%eDzcWXP&wdgrN(=a)%gOrs9}+)iGC>n~oXCuU18SU0 zo;QLUJhnii2^W`|8owr^svevAxD6lxgB??Fu5OO=XmHA@KFnbO z*KUmLs?k~R-NPEz<4Zen?Q-&c{I98wKqE8N$y>C_4G)@;quJV;>tL4+6P*kTu|%x> zd&3-vYIWS59ACoGU$0k>m~9L<7twb#d6T_#NdBYkF9u13A`x%_-ok`7bEInhRPL;R zOyJk66pV3Uj0?VS6Br^upCD&P5oh^g750)D(%$shlEA13tWCHJufeM@!ZNB@xaf4{ zgKM%gKq3B8`5FQGkvx`*dY>>Uw|q`!xu?9aTcW=QVCUId;kho+G)Dg*6rmG?JR^pA zBX!+I>PWGgD`+7B1j>WN8*Zq8)1YHcJ>d({7z)1g+UG{uX3_iYhcoUgXGX5{Ifn5#LR4k^vTokzzYpQ^sS}`8Bk*XZb`)T9kGa&vX_wzwh@jPEHkILo3 zm96RZ{h223{pkS@p1gtq`?@p*^~`p-R3Crnr>1H_7<*2p_Ip)5Ll*u*CmwNn8VC|L zy5cr6I?B!DM2PjxgnF1)B8uq@b?A54(d5_Ef%dEK6XP+%I+FCjb8g2EczDa)&&<)qtXXCn4VZK!HW3vX`mFUF7qZlo2eGa+ z4k~<1K^OKs&$RrHh)6v=IO9a^x-NfyqkK7r??K5U-%nM>3qwXV4kDtWIhkzk-q#^= z{toj$+g^i*uAHpmZfj0*5LRbb(t~_95fS3HBNs%htOuZ@kh^h5LJwZ`me)CDlfpI9=J6)4o zJVNMT_GJo2;vW@sVUK!NT-vdX3PN-Lh>FVeWOa07`cOkKavly_Qe_W)7f&XTE*KSF zksQgd7EUQ|og3{zVZ2Hr90POOuCWSZ=^JETZF4$k|~;Xd5tMK1-5S9^eQ19CTQIV6I)6E%xjh6JoMt~Oshhf0saMSFz z%=PGh2?MtNzZEQOp`oZtkUgrl2Ep{G_wjH<>OW2*jBEKNNsw$(`sWUTkSroMPt)y8 zPlIfzzyi1f68Xj4Z5LNzZ)+R2>k97A+I;yZr)DyO5rdxU*b2HJvm_eq!eNZ0itxX- zmzQuzo)^!}E#^?+@lu!YFer&xXQG8$^f^8MxX;u^-;axsc$uZL=%UQff~dz&ec&oI z$fQBM=f6)YV}~Ct!Db*&-7^%FB+*wv(X6Hf;5W{^i9QuZuJ$_b%y$TzcxL@(hpjA zF3n1@dp=RlMI%MS0h|ZUfVgs4&BuFi=2YF@&|t#N9ebvGsd_Y!**z5~jO+a+G6Nmg zi|~l7bGoISiek?Wf8&<7jKko+U%cGy#&DINe$AVjQa)O$DVJfvVB;PK*hLC-Ke7u6 zJ(L>lj8s3#IsK4hNFZeSE`4!upT4eLIqYuPD36EJ-Sj%&bU!qd)3Goz5W3t3k?DG* zV~cA4*@}cdYV>oJ%Zlb}le&}qAY~raX);Jc!tqIP$y zOls;&KOs~>L;am03n!OQD{gH9NcI{;Xz?70{ds$}E3Og72&yTicb(B6qK@&dp&m`3T8n^>-56Z8K4% z5QJ^|o>!xA4?J#d3dKvotw9|mA4<8blxEa>M4nV*Pd|9r=l3&Rlq2oRxQz1;0o{NW z3=+fH_b?t(EY_`pMEFl1e@D98Fm86V#nM886OUDo+aH;98k{b@zIC<`b7moz<@gjl zF66$v&z$x)cv?W)XXw2a(eQ|1T`~8_EA-%3+ojrQ^99b1bWTWeaAe7{AI90)Ra~6UgB~3kPiuiM=&qYQdTf$O*Gax- zk=tF{fVv&fP|1IylFSz+l@yB24o$poFVd??xtz(|eKdQHuuR%fLd0Cf!nlc{vA*!djMc! zi09*fwY&`A)#t0R1_WVyUDZ%1?Y$Fs-;=y31Kku6#XB##^6v$d^BnfgoHQ=dvQpoK zaGvjeE${9y?R7S_QW>6cfr&SOlW2hN)Z|KXAyc;lWTIx`demzwD)p1rulLZ25CDxY zeFCJm*PRz4|6(Lk{7+ZbD576%K8(V*u{F~*LvhMR z3UEG&c+L3Yl9I9~fS0E&Dk=hMWbn8nm>5RSg9FBgp_NQ!|Nmw=*Otky0352}CjNHy z#(faJn-K-hvvb?qFY1TzhB)G7=`_@n1eT9Ww8_DR;w6!hY0H2#gz|E2cJ!{%I0P|k zL~c_A4$vB%QusYWb68n9J~~r9-EqoDhUn%0IiO|#GCz}6a(Fre>iyd32G7dX%Rq3wGAtyTZiHf0wiikHZow5w%U zI`V?Hu!@BtN-wbB>z!OjkUSh7)|dVqmWK+blVsCktN2&&#D@2sF1~O);Wg{!iuy`EVz38QcgAGNGsp2Z~)hLG=A!4!pV&?onx@)TD%++9W8o<#Y3kwHvI~0#EVo&N5@dBrc(UAs)U>@b! zc{wjCv0F9*s0YhjuU9ld;*2|CPvUuC%urR$&l5R3PGJAfwT(fSj3(hyHEIm|&~H&M zI6-kCZZ--<{Cw*SwzMHbiQiD@K#0?u|t*X z>IHRGy@z&`x9)BZxA9*Mn7~|%0;z(JI*QBoOQq-H0^c)B97xhhFB9ZnVrC-^rv6Z& zu|c+9D~iuUC(2O*%<_tw+K=a#I%*1PGakyn3=ZpKa)Q?n^=bmY$onZW1Rw+@Y?DQV{|@pjQf7+F4XWkpK4QBK;iTX} z**j!-2;NVy=95pSN^j#CvUo zrB-Yt@I1Sjp*3!KJy<4sUdGCq8X4DE z6a-jX=6+;LyiB%sz9x9O28VXqkX*rI0;Kn5R{mbLc+}+6A#21uWK}V+?#9ie_r^y~ zldGb<@}U-goU~@9!uYfv=0=GysR3yZ5DGa#56pqf|#OU{D# zL)NA~wH1{V%t%cL^g$N;^}jI}kpT$Cpo`gsLAJ+_6~HVu5D__`8EG#3th_C;hco%%dT&q;s zbV^Z+6AojHSKki$pxt|r#*hkuQ`Ali^amH-eH;vj5(m3cOadQ5Vj<8U<2sx)tTb&GuC%^m0Mt#P`4=YD=qMC0( z)-;bVP(dMAnJjIA{>iY9Z^jh|Zr~3`^=$jTPkpKB<9E1@<+b#ek^N1tJ_HR3&HW+! zoFo(xpTr1q5}J_)N$%_v3~9ID{IJLd<=L6FGiC3^%ZjKWdT0nqKfWDjYw}ZR8Uo=G z?8XZi6RyDl8=Y*aukVz{K{N2QDi@^$Ad47qvn`EL^ycZ`eppZ$|NBk;P0`SK8HrAW zZr<3!(@=4MtzZL(%vHrznbCd=EDHStJnvLz0>jmVqxZV5ZFi8 zk@9jF1QUz+_D5K0f38OY7x<}zqH6-=Ke%A0s8%9Rmrq@~-axHnL=DM6m7W;`e>E8MTnb0&1t$88#^>5(YOB9qF)_8_v(ysfk`fFB}n3w$w!?g(4v~yiDIdp=2lc{b;RC#_C?vV^3U8cF{Q=3!2BNa~l_0 zo=l$D{yNe;{;KjwSkHFcrbcecp}+LjV~fPX59fCsyM|`dRF>^gSXP_;Uw=Ik?U-(6 zJY(X;UBf^)dBvk$yjqMW7EkO}4NP8i zajUeva1F9KO}UW~rN+iTQZ6e_zbkkbFJPJeKJ!u!;4%kh2>~IYslOOh8TiXWgW?%O zP(49R&&dP`D&mRMRU+X$L|-3j2GS4>VsR?%g~FcMKc~^p=x8Fjxrv`#4!1wgJ<(h6 zRI)q-MSt(^gDG~ub6`Q#)-;I3Fbw?3yWUCRX;SLroXtwE?*?VMR#BZE3Jz69d=d#O z7EZQXo14EH_ovsYGE$^PZ^nPuU!48>N$@?%sz>%gvSt3%^z?Kb&ZN;zUjXDO!h*1G ziCXgyh0;3pEVz8t*t7a%9!g&iy719!wYL9J-3wPYGDAR6QK637`alOx^o&8Qj;Y><>wF~+I zOgxvoWV6rHlReFQ8(4aKZHV^?$whX3faLOa@qh(plA<_k`PMTRt3;i>5CfjK&S+Zd z{&dB@Gf<;6<3HD0{R$(-D%Lyl&6$V0zrag~2;2W4Nc!PughT2H>CH20ucD}NaFVXT zcbY_mVICeo@=RpEU3XL@boix9JaMqf+lcS?qFdo zw|JY2<8J56$4Xaq)Ioo;!j#!e7JO^{43m)XZmm>=Vn3jzW4F6`8>A+GqD9~KS_N%@RRcuh9m=Q zFdi-t%x@^ zxDP*4QPGiMm)o~xB$WxfS6IGA`ZuX9m2NV{ZfPEW`tPdoV)UPH-3d0Rn^?OcA_^3A zxhQbz2~RR`{z&Kd+wJ7Qx97UQQYKygiIbjTbr>8f(C_@f`68!5VG=P)&7ihhjtZ~A ztLO=PgC42PE%XRBV{1F{vKP&(Vu7AJL^R;b9mX;!B@I*SvfqO)rDp%`gJNOux)9CH z7Yqc_$w}gJnv6G&WR}-jvuu>gl2m{CqLBzkTU%M(0&pvML0(dwUU5r(q|C3vZ~JH` zIT+2{d70~K)E9jMpXOY{^XdsuQ#rr&35CNlbcjO|^~W}HF8=d{%o;p1SRS96qQrg- z0uvn>08KmTCna<}#Qj12#R*`=*<(gWM_#q5aMo8>`jYcE{b`&?sz--99>?%SFK+O0vYQ%`S$9M#YR882Ifi`|*i7!zz;&gK6x3Y_kfG!Z^b+p8Id~ff`JY z4GQYe%&O_5t1y9%SJ!+Jw#YA%7wioMJvgjnrz%==z`5Rf>$05yZ(_XbT;9^{b5D$I z)M3&u)F4=7(tSKC3>V)LfM}nO{7PWE6y*L<`Y1!WgI~DRkpeRMAV9CT_*IW6Kj+4y z&8GAv_vgNUN7kMoc zV_q74YxLO7Ob#BdW#6nPE=mVt=6Q@U*N**8AJAOEm@#)gbw++d2wPKS?bbL|R?vq!Ft?zfdv?-7tSjQlQ(CHv0|`|kc_|>%l3ChctP4f8 z2jIST*E$hu(ZVS$eZN94cZhSzK5)uU-PhKPjAZ6t|MWElxaDLug?Y^p>1%Zo*3jg4qlo*fV%*8Xtbr*i!>H7R+W1Dyf+`{Gu5Rmb8t9UGq zR$##EHC}^Myx)n{W6sLXe(~?E;GJh$;IWdQujIj5R^HH5-XNE@(E3`qFPv+`P2Mst zhmD>3^J0gp`QNS;Cx1t|D=|5Kdt=)9_w*M5nxlR6GE3d4zxgjdo)4ix9jC*0xdG2; zDHbR0w15&TG)LZDR@g~<*aOkrAGZ^2JodE3Lm=>gKzk)6#dPf*O$QR~#ef!bvkd8u z5J@|sM2Tk>s+M1da#42>@f9#$IS|7|skj9B+U8M-MrR z&A#jVlREt(xq)Fn?hmyc>Tu=GUb^<=JS)m$BMleBc{^a%TD$*dC=dCyQ-`B;Uf;nY zbGg*vv9qc@{7$I~la;!vAs2f~s}5l2FagT1Ou z7_v~tj>Ino<@+=4C`1UeA^6>Vq%KFF2SJcq%06dHN4M1T#4E}_ea>FCbPPsOQd7f~ z-q4yg3gKMX?PDpdpItb$Iotf1RljI6s4P1@&3nNqt) zfjAHj(+e0>(;y|qS?9aQ+BR8e8!=$b7FZ0TT_ z`l&rKz$FpD>JgmcHT_!Z4q#HZw#urc?+)>3%1wPlJhAq!|D(%oXl$gJaPaG(R9I+Z z%0=Rt`#6*`V-u3Q-!!zsi6$iCKY&i=%1W25xsJSf@O2w$Q8GHLwx~)0sV+~jWq?v( z82NFy8&*zHoOV*>!a~5nL1X=_VtCa>4x|uz9doq5Xr{|q*RU(}mRmgY6^YJmePha8 z3zQd!JL_(C5@{}SQ>SJg8-KF$vpxC3nAWmJ{tf*3^JYe;;``-GU*1pI3z7t2q)LO! zm{~94NH^FbQ=`IH4u~mDn=$@tHLmd^rEI=8WxNgsr~qGG@BLaDhR7`zG}71LOp3=C zRMRYYPnqNoO;0F~kB?uWd)@jv02RD&eVONqPGIXHkV=q9BqWUh%ru=&;*+DTP|w&% zVPV7m3xkfOY!%W4Yg71-D1CB-opa=q%8vt;Xk_~_)0?rt>((w`($k+}AJAO?k3(t9i`$SGIC<9G^fB z=08qVQz;9$Bg7Ko=b7#+D4o&OpX;L}p+mZ|_@5$1!JH$}EfRmznsfA@}t=T+c0M-j5L}xN>$kKfx*w^gih9jvMo; zGGBS-0>U!sytXVIfRUQ~_e`t(AGiIJ0K6bCLkI$+(b}l#^P&InF~_ws|8J99Co#vm zVWkxt|H2^8V{XmOd;h)tyC=WX)c?z=3A8vTICZM|>wYJH&Z&GDhs&Mg(!fyo<%T>& zc=_e1FM!Sfk+{r##MjsV0qA3CK@{Fcj3Hvr4L>NqM$a-kobaQ8d!mV>Yq_aftNyo+g_M z_M~UhMhXEE&kBZYjcZ?cim@p)oVBF>@V+%q0?XO>r-oV~Ehg?N0*cpTZo~DMLlDUi z3_ul|tgI86D_r~kom@IPW3oFraCc;{WLMTV=I7LXOjJ7e68__|-uI^9$YhVUr%qLA_S9yI-*%D_PJ;}T zG(mMe@msBF>O~yiV_4{Rf2HMg8|G?%au>D}9$} zsTX~oJ1?oI(1>IDbYA&i0=@EqnanSMRUb_^dIJOiybaRR?*k3a9@*{rUKCC-Bl@&*;Ye67>xo?TJZ@UUG<$vaIhn4kbR zaBJjNiR(R!G3V+t%*%BXDY$kq7~#z8enWcaDF80g&s>-GIc}c*li$0QOykYyPyh0h zzE}@%CR9~c_BvmtaKaF?^$}|~E@4f`*^T$9Th1{nDNIgHOvz_1@lp<|Q4Ac952{re zMwtk$NimXw-7lhfoRZ&Pxu)pB@uMP!So-O?YOJC#0=tosrogp6AUqz8j*i)P z;}9S`Q@M?PZ4R{e%6YDb3MTJ;oxiBsAFN>FLJot&;8x&%9hqUWmU0i}g zL0n>HgBFWiXl?bg=mkBA-~g~UvS%UDwW9!=S#im#$kO&!NSpLnBjtF38s`v`>}4lL zpeuGz^l0gjH`hvkukc>pE)Rvr;R~)aM&y=~y>+IkXigW#a9$AwBJo4sQ$Es-ytMCLx7 z)>mBaZ=&Rc^&>WazY^oJXgX6!73#dtuBL!x2Y%cqGD>o%|3;fnOU`!Bwwq5%&i?f` zZw+T<0j=NH@xnryWuX9wEBn%x2~!-WaKtu{Qk~?V{e68l+I*(0d_3!`b3dtLd$n`d z+5{I5v)-8P?Oq)ppW7ZB_&IQ`r16yB|L>O#z&7W#0kidb>l=D3s8{pfGd=z5e=>U3 zGupIwllXVBC#6F8wg9A+C+=G}3FjZG_0@H05|2GvxAh6 zCiQ|ui`gsCBkWt(XeS+CEuUxeCtazwP5yJG#E7AH6J$Q$<*1J0_mKdUrIjSuILl;|K093{o=q{|v~8q^iC z%wb}|5OklxJ@o+(5N>Bvw|f3u^zM*bh5jYt2$+J%$;yh*_E4V#nU+DI#{5OkFfjhq z78v$z!KK(@a7nTcGz!*D?b%2{TX?!sB{F$5fn1Uhf(XyGsh%Ji6!p^PCBhg~y_}uR z6|#OSjCb|mH7ct^pA0>{m2`jF^M;!69t#&qz0FTwYhwL<*!Rxb-NnTY^_XgsP!gll z6S*v~2!;iNPPU<;gz{bn8*96wA^T^=S!*h~EsWGoq}LxjcgrU(Uz9i`Qf3MmtuyJ&5NaT=m~#^?U4T ze%-N?biu*H%jc8-BjzM}i^iIfSF;RyLL$Va#QYs?I3ansYiq?rtnkH}f(OQ6V4<@Y z!A7Z$C4*^H8Xxt8s&|Pv98+2ydml`mvy=B`LE-b{@j@Mm(<0uKU@XrvGIll%ez+X~ znT~U}pr&S!wOv@-^S%}|Uk|lna^$27$o@tJhbieoeo`v}>#jzy3phFY|6LU2i28y@ z>$7A^^z1y+{Ek29R#TIGey-&Yxe-iY%q7wgXwHq7mIC)P)3C#Hlz2yi3EAt1$MnUw zO9#|%5y9wqIGh5B<`h}bs%~}OV+e~yQ?C?*$?|FUgQjhc)3)ZBu_88N+vz_ll=FN z&gM6cD`pOR?})zF#4*FlIWL#&K?5L+6}u2f5N+#u9s7A1K!QNZGvXm=Y%T^J~Eg1+M1;(Fjz?c?29oLy1De zm3Y{!ms4~y>|~lvOl5+t%~nmX`U@Ev_@5le#H{}ApHE#En9=jE>Ku;o(IU4eF#e2@ z^_#6abw|J(_OJmEY;}3w&tE@ZQccKDBvoVzTAycOz4GbfORXzbyz)&C)}}39WRJ-8 z2`!I43DZ}qnoiNTtyF;$FVL(s)J&(`h}>>?!LA`FkX1D@K1g`}a-?po`yKYZB(2*` z>cH1Y<%RF=-`{a*+*RuR=z)Zx&2DHDE``Q+cG;duh3A4A<}B^oZ`3M)4zzvBpX`aX zubKee3#fOANmZaP6U=TWCMNO*G&D4sy&6N@@_l`Lq_UQ9wl{VAX4Nu<;#!|QIcH)YZyiwd{NHS$1Va{lG1#eXMoJvLs= z!KYPj?)%|fF?llD@gdWnEhGfGw*lYq7xQc8@&n1AeRDCBW&!~FTCbn_Nf^A zwd-Y@%wmZof>`S5Qb+_)K_i3RYTV`6{5JY(664h}zP9Vx54N{=+VF<7NNIvS90m$& zeM%J=`om7m-sIEYjOHUzxjS|WR1~jtBQLT84tRP@S?+6*V2Qn+VP{t8=h_xmHP~+v zmj>sfqt`D_3xr9oTCJGeS&XsC_``_HJm)`^12?Or z2zY+{)1T4MXyf697k}On^pi&9VEqoTyq}x@?&*l!5QYRL20=?#tg{$Y7H0mFiL}XD z8Q{)AIJe18i#`2M>`SG*B-RS=_!t~#N zwHcuAZ?6CBbHDQbZ|5wB{$KF1oJ?fbZ}Xb!>a$-lr=v1 z>rV5*-->>F2ZxWsC7n(R%8t790%mgsqic|m9#&C>vtuAt%`q}DS>3H88O$&I{SLJE zi+~?B9RR!@q`k0MJ6b25#0Nxa0zvy=TsdS!ePzXeU5}Sxes5oZF-8H7pT8Y3Rvz%T1 zY^r~U5YBb{)>*h;fPe=xLt}WV{weKH>B%iCA8(FuoDKNPD##6}5eZy8h~Z1?xu_rV z5mzqaX*SMXlLq2)05bO!tCv*aaaWjZiSs;`4h18I*N9aH_*@HyiaJK}AbqbmY%f*G z`B`R`e)TR)j^Kndt7i6Gt?oYwOarG%_P7Zh%UWL#h~K> zsx=I+`N$|LhUI+%+jo#AvB>1v>guBI|3;QYc66@_?nHUf(oWYpfSk?Bi;$Lu{(N9V8Ml{ z{bz0zA_dW(4Eb3;%U%Y*Tc3vlUjTSu3-?7i zH4JFxRQNH|KUg_ze={Qrh#^)y@X4wbW4+~_b90Oc3)?+#((33SI^=URRH!Ahc1%2P zBt~K0mq92fkvtrgQkvybmja+F@GeK`*kv-eyoldnPji{mPXQVouBuPcIQ0h<>;RUJeYr6td~gzufZZb&Cy!z@}f%+KrUbw|aAQ=+%r;LadG9 zD)5z;H6Qm{tfV#9k2pDB;U=YLr%w4h=VJ58 z`i9SmooN|Tm~`U|fS;^q$NmS6{U_gn`7~vYXE-h_0o-|I;Y)DlN`pH+5mVaxr!T2a zPP=~ooQ}G-;j=H=bV5=-+abN)&-OkY16^7;UI;{2<85%Pu#|p2J0b-Ca$wUAgaw)p zZ=LNe^<`KRls>s{toiRHrI>iExcjZ$5;bj#<%vr)6znrj^PvlgRkPh-%aKuXpOh|G z=*?Bdczpcncv}GG76q6@8yKnaT?a zP{60rB=_b{DmdhT+CxnFs+fE?hc{RnkvbC2ozP3c*EkR;U{I?ZUHka)Mvc)k-lRla zf!CFeF6#ID&{9Q0-`?UxT5TC*yOrFPMJ2ClIkC<%L7ierNFp-h1t<_a!DvpzyRZAUx;BaS@6%{)CZX!`U=IZpQmjYQ9h6?Xa zEts;^*|BY&i5UV_Ngx9~W}*B^JO5=U?AxD8utT8vz3Y{q?`!vr?F)HaMw6T)uY5J? z{E1)v6d#QfTZypfvZprI(}dacZPlMWFUz!hjw8t@r?Y9+Ict>@UwM8*rSTl!Z(x z|F~PR0AlW{aruOi6}Qg$EwgVNbVpHYl0D_SyEm7f_`58VK|*wC>9D*I9eQeZV0w1k zyfnndKtznAKImTKt(p_S3bko6Y$!OZV>oGoFJ}tfFljnYOHt;}WllR05tH#g`1NzI zt)9MyLpwqOB1c0$Dl9A(Au{9E5DL)uwjiRgxmlphmQ-EdM6Un-aX1tk_#g%uY?U`= zFO@c%Li{k0&ilFcDk@~*1$^1+6ZZ4N;Erputz7~XOYTNSWk^m+E~p7dCV@0pEb(=F za$0V`Ow&eMcI(TCe#`qw6rhwS-y@VWo; z1U-j?CkL=d*^SH;%I`x`&2JE&5IvFDR9Vpxqo9I^6vjA*?X2Z8A4lOrX3T8xM`xG$ z&Lh*q@dpt=Uh98KtGsJ;_V<>l*Gfl72qiHw(GVBK84v&!8%*6us@jXXHFI2Xww+Hb zf=rfx93d!GFnwfX6cZo3`lq+{_r~wL6`W8c&ru@C#DK(oj6=izo?VHr^_iKwx%tTo zu$FytX~kNN#1M=glvQ1vd22}k4&vjzjbrVivEw}DQ&l^#q##~RzTer8j=RODF1trc? zB;uWzJDiFMkNsbj9Yh2wMy=X0n4SN~o)Zzn+K}BIBLq@@{@+^7VMF{GefH+Q<~zq$ z$$Xku`3dnnW#W9{xfS2dXP2%qN9qZ4y$wK5w|#iM&;EPT(!;a)yb=OV&GU8>35^Vi zj7%=RdKC&sCYB~A#cm$F^MB!$e)Aex_PQ$AdMSWwv3^Rez11w1uggQqiEL8u<|}jc z;_H{F@XmR0nzDvU1-58y?f*_U^r7o+&N8bH^jlB)z`5B@sAt+>dVFy)2}CIWJ3{@i z1-tF0n`zqMS(NzV@#EIZeJqNTkg8H3$vyQ^>eJEDPEJm#9BCW)G+@J`Dw`EOB z);K=i@i8&zGw_z`Gd=txgu5z`2)m-LSCnR%W-EQI6P3uQ>p0SeA_Zd;v8XD|p~!&3 z7YDS>$1yA;EI=U`7zESx^ZGF}#gTbYjm#dslhnXe>IHXZb;Lat7gjaI8kF5mc1t#h<`yl2;Zh7PxQOzCtYB zKam@_gr*hI(=?-!Yn|<~34tNt=bSF}9?kk*;B~Zm6#8h54_Yv>ohHEn4M9L+QN0t? zhdQ}+1~-B|R){Hn^EGF-;sO}Xwah_7PRDAzz@ks+e5Ffk?(wge86}NdofZm9%_2Zfn;scyD;Lc6 z+Dr4_*72Y3t`g#lz75aJNMistiD|i+6k%F1 zpLp~TlpL9{X1@@^ zR8O~b`QOh=wZhTw5}~?6*KN%!qbuVuSBc-XLi|5A1cc)Ii;Kt1Xl$yPsUeaxy^?yY zLob!*tv6G?n65AGC$MlVYb!?UH2v8S{O|I9(;96~arnL+B@rcTWK5`Yd|VNC^Pv%M zI2Y+|6w#(yY3}2}*s_9^90W4gxPDR}b1~)%B}FcRe3)iTZOa>JU~6$z^E<%4HG@D_ zmkfG_lGKo2YsJzNJ@w1(z1@j^5C=!7zQQ0dSIrUVI}GZAz>S92Y)$_P2|&%se6+uL z6@+F*!av`8Xlz6(&eG!3(i08;d|C1;kall@X))ODuq@8aJs~7RDr;-6pxD@c3w*G* z6tb(Iy77RWp$xT+ie~j{?6Tm3JtbYdxF?sTT{Qg3dxPwupgr_`94A0ZoE#gIl~WoV zzpp=R^iaY5bQ1Vd%w)b9QpD0fcD39+Snv@0m2Yd9bZPk?x_Z_)(qD;qlUY#0!ZupoqB4lr^Kkp{f_p6Zi{^QIp67BV=H* z#2vi(ede^UptJhpG1U4Rd%oL2aD2SS;tH$(>ayQOS8!>Cib0a*huT_KK2Tk;CNO^? zR#`3ca|pl z8}G$`KJt8Z9ym_8tr(oEgXr~``x39{;#P{y>3%j^|B%XgGt1DZPjHE*(Z&s4sxRBM{C_(kDiq9_F0Yf`q(H z-j%nE890dxS5*X&NwFAm1HH4*=9{3^b-qj(@(Wf@4j52K@R69Y6d;r8mWlA9FQ1v>EyD>0m7r=Fn3O8 zp7AXL6Iz%0kP2EBBJp{WHUjcvGhpWpcRne(UW%aa}oZb=glm22wiuBtmZW*_?7SG}uxl7S)K^p~%1-%jFu7a&>3uJEr< z`bf0)NlyEWG0+sB>6)8xgZR#Wc`&d$zO zZAg;3%b%c`YzY&~(k4H%kNlD_pO*&$R~xV_jfKUwkaJGYd zbgS9rp#GiX*aa(z`m>gX!_YWiaoi`me6B_FCOC%hxo}O5G@SncpPAo8GA4 zsE$O$vOEusL_RTdh>T|mH3pV~{o>_r|EX2XwAi36?523(W^Vi_4m%NIiiLesWsleU3XZZ{7Z2{UuhJX*}~s=o^Lb6*~MMzKD;~ zw7w*%bt$$b_(UxJUAbUYdIeG*lN7gOj*nwvG--_%DWz$pRq}MS$8JCg8R|@~ z({BGZz)wkceXw(IcAjhGc@{3$K5WVJ2GBNGv+P8ES~)Q1-gG+*5@6qLywc%p{;YyhlLd?j62o8Uv`oKeWmmCI5SPjRO~w=aQVgZ=r)Z(#8QI1;Pk zPyye%x-y{@rSP!(UnBZtnm_Gsnet9e&4>L#6>bDxmp6h%WuDA(2+sn&QvRMvJo!3{<=d8#q+4T zw71)CTRJ${w14+VQ!RS_Zele%0lA{W-Z8_M1JlIydgp<=WT;4Fmn2~Ak+R6s)pM7Q zTbUuy4B~_IO{NxO&j1*-!=aCF!?Plx9|gzJr7k|6qW_s}(Ox-ym9^G7*o*gG_H3E_ z9>eBTXWtrIk;~t^%CB|S?SnuB?JafdK~hG~dYHdLWZ7SvC(Ow=W4fzu!&{$PPb_@S zF1GFP_SNvspGu|R8zGCh30)l9A zc@QP%G!N4;jh2NEAh3DS$v~bAbPv+(*phTYyB(c@$3Gz7eXUgEg)@p<)=;4_bsz9O zKP#|i8}08VXg$KLyPue|A`VPW1hH~otf%Qqd`-_LQ&(adrQUBj#hlKssj8`$KlY1G z{OqmFe4G*Bhoh-ERiSHWsAp(M0xZ=kWD2+UM^ zdV(Qcxh6kWEybqm?7>aM4*1f5hAr6dn1Afb3&4jAzRhzlasFWl@<9rsjppu-O%_y^ zn$F(Kt6ikA_7WeLEx)KZl9BMmcL}QSPDOTFA)!gTS`or;-yF#IclRE;&0AFu*nv!S zyMLEntiRJGgoH)Bw=Rwum5(x&Ms0useJ#)>u|L-NzM3hLZ)BP>#ayBAdyYa;3?nTa zshcLZJR267ANh9yyx$`uJ-2@)ZhNc0P25qCCY7WtJ8^Z{KDq0%_rZ?lN!Yh{R?oAg z$=gIz|9ItHJH)`~ejAptxZuP`~Ot)>Z_lG#FG1-zw zQ(wLbkYm&Hyzo|WPP2}CP!7HGx6<<~pRz&!Ra|y-m|5MAm1952Xhj9OHz;4|WHbc# zo|+GiNvFuf^H&h_bdP(|iaCvtdy@ZFzLF!d$}2to{+-u{L<8d|`+89&@(G`_D$MQkG1WZu1|`SXy%)px3691MTAA%&K=YA-sx)e*x$1HX^Wdd{PE4yyv~;Hrf69o z{rbviWvXD!6YuGCx`)1Sk9`5brGq^>7$C-L=T{bLi(3D0)F)275~GGAr5G(8Q?r#u zJMXo@fi<%$%tZh?}6FvUxse{w#DTQ04=gc5L;U^Zxn1Gevf zCf(p)6(TT*?s`GRnC{ElUykb-4DP)jF+oaCfU1!E@dFtJ5UK{puF|r(>#s=oBf$*i zX-&ZNULo4pe3A3)o+(L>+sALJLnOM)$)T0PaWq8?$FFczITvmn&FTKtKCozAylZ!2 za~}>*-putnT)z}d_VFG&Yt#G7c(a7dW)jJdbP-t}v;!GsGZju4(e*m#grxel!c6x+ zS7%f~cT+|JPbC^o+vZY69TZsVwmM{M=G{J1A~Wc!qAcqtbhm0^$RO!eL4Ud|fB56b zomX}BM)tec^BJ-~mH8gOdW3r~ivfdi*s;e=%%$*96 z@LQjgo1@-}?FJGV3mxlS`+@w~@$n3*IY0>DaPQacI~Qvq3@l(Ah1?Fc+&n9~asgq^K}=;LuW}dI!Ys&DZyLz;H}w8=bPNO#$*w(&iX&1Kg>3{9fu0y`DGR`)1eIzCmu4X7R?nK6kip` z@BDEH@`R7Kon{;lU*?o}{|)px`}O;^Z%-r^A*5x#*~P-by7oSdR-lcLzLHLQzp>!w zqMwyG@^#&TrN)G2h{F1FY@DHJW9bf#-l9rWUCpOIWBJ7NVX)tn2u#+b>lmX&1Oh#R9f(O{&I340=~f#uko)%d!-!*uKcduL#R zdWh{z$Hog4b@P|>uh9?9T8YKs68SlEySI}G6r^y=#I=j#ZItWg;SVq?hDiU3UOWb9 z<7Mva?*1gfB=_K2-C`NkMg?H9)+woz zVuPAom;tLw0H_>I6?a_whh|mZ#KAEhX`t7%(}pfqCF+igtSxxkQ1Ew*U&CI_?jL-p$5Vh|*~&o?T){su zabwA!Qp2g2h3z#x@m1qYj*Q+MV~R0Dn-4_0t%aDGj}HG*4?#Z4=85XAV{vb;Sm0M~ zm0AV_K7os6wcT|OFvh> z$*aIv`@zh?`OQg6IW@I~_|f(4-@D!$ff6_Qs<%-zmlP5}(l{q^VR2jZa^m_L6a9UeoTE1W(PJNuL7xe1n?7b)CVYiT##adPdiqC0#6PK+Mg z7YcyrUgtmJOsE6f55SQ-2KLg{)A`U+&tq#Ka75b+d9F{3aZuyuefC_zk667QjK5qlJA9b!JTk?g`@aNB`N##d+I&=E7j=HH?#kOF^-HnCHx>csv$`X`nPoU1iOw$@jRP-`i7Biw23J z*WUY>K-nML2!C?RdDozs|g4w8a~MI0jgypLAeLeFVaaQoF;fEa8To(e0~u)4maVS6CD4G&azpUA@SYAzM>!Ww z8E0lYbI-TBq=e0)|IE@(DB)d`tAm-Df;o&pT0@A99)|aQa@E(|p>QgNos~(FcH{=5 zACw%7pflD~UTC_&RJ)Xt4tKxJO>Oifpf`j zF!kjwugCR;GijaAZEE<^{M@C-FA$6LACu-Cf^QzL(Hq=_ zfpSk5mkq#Iq?uiFnY-L8l)HiJ*QhB$$X?lOTe+7tdMsZkAAcXKKG@QdnWIv}k%UGv zVKgVHAY`-*foxP3adCGEpL72sG~tnl^8}P5slWR}O%7RQp!Xy-w;w0?dQty0!nX7y zVWp~Jsw7p%rpsphl_E|@ARlZTs)?kfkByfOfwRbiNIqKD{El{4ey(0)XJ<1PJMKa7 z5e{f)FzM^*>2Vb+*>*1*D%}bu=H}uI?KH8TJscSUQ&^RvQf>|+z=14v_+IlN)$3%c z=EMDylefWcYG*agPUmC~n$OpgM!WqJ0I3|LA3_iI=0tsUqGe|IL5>iB`035)(MMX; z3wUD+ysbIO%n_;Uzx$~LV{FQ6Y6Pf4X=YnpmNs*bI6Ssy-S)4+NJ{>oU$8XwrOVz} zeyG9=rX0WaERcXf81zaW250KwTQ7PFsOR3?l}x>pBF^_9w5&4Z<5&gTumU-H}CdY7-;?Z z{UR|9=|(6l(ohE_n=aZB@So9&)sB}O{fbKOi(F(-n^-f$v_1}XpodB)-=!QY z?Zd)6d0~ZoKXIc)xc@x_hW!iebj67Y&B}Wwq85ph7!B9TpZPF($FfWD+od_Nyi;$( zoh`-ahR^7DkSUn8bT&O>M<2;JT;_jj;PC#fAlwvHSio!MaD*N|4jl#L^eX3)!a-cx zc2u^0hNN#qP$)i>z&Z1Tijd!Ztl)WDheEF;bV>&@J3Z}w{=@D!V|{Px?OCT*TwGOc z^!&*5oXj@KKPB0i-y>Q)wEJKMc|GGoG=#3NT)3UumvFW+DdX9oXl_eiV1M1t_Itq3-*`b98sqwUm#81G22@s`-ECfB*CXV`sO2{}CP{ z6>AZ=G*TPAOKlR}?JO?)rbd?!{*Ix$L0yyrTEJWtLEG2pCp-IIJ07V%fXm|IQu7(f z`|PwQG68_IxeUFzxPt+^JQGN4UP?b26MD;=9TjJc5qiZ)MUcI>MaZOZFKLa84w4>e zgOBenEQ#u(3{!x}cZ39tQ{0~Q8lL^4K#!6}K;O@eg`T>p@uTk1$4%W8yPe);4;kLniAuCO%4=gyyimNJh`9-NWK97+0ub zV1f)gw;d$=8LXc7WK(w!HOuV|U)2V@K3<=}V(;A9e`wSnM)e{o<6!L++zje{(9(?Ie{&X<SPPlG z9$xNmO*;<}xp#=&Vp%z#K(RVlplW;f-@l!>-RboHV|cZqN#7( zFCa~k-fzwaAc?7W;NmMXa)$R?rS>i*Q4Y+$NC|VDU-wIAs$RueD zxMv&9)SwfgS*q`ObUf|%_Y(MW1qB3(s@-KKDf^d^bV}Ro%C$GUjXdid^sT6@$USh zFQF3bkP1>VCQw1^Y4H}ioul2&9;X9oK3gjn4ez-;R?%qmbP%9vdHCJrkN$^0zS{Y1 zan}!Q-=0^Xh1L(TCDF^}l{Fl_HN`HUYQ;~=!;?jvw@y-Kzyo~13}|K)BU9_0hM{RX zh7xWc!Hur1Qgqxif4sdPD|6traGCI6d%I7pxFB zDQ))h^FS++Wd6LzZ<7y}2?*38CY8{~Y1ik1-baEyM~g-hgGUCXmR@;DB7;X9y|V2Y zj=;;}JenPyTq#K|vz3z?mP_NccPN+ExKp9TXogvJ%iVfME|a?6m%N%#nNS^DRG!d| zII}8w>ChAbjX4Pu>J+H7_Ix6LJswVjtK&0gIRx|QYjrxA`_1R*>wGo2K*B;({r{&{ zbtj|0E|T^48^F3sxh^i|luDmUWJOP22%t+go-Qs8rL3=Mth~XWhGy7uC%<(3XiGpV zsi^-`-yc7@ydH+os=~_A96u9K(2)AeLS_Q_#R!#_HjRmt!y;ysSHuY6j9EVV5+U}3&{PqU zYJVnXb+w?R>Gayb$Hij(a5a2oU~hLswKs3`-Ea#5j4n(%;YgVusAMx?`g7}_$W5`D11*a0mXqw7SDRG{B!>{oynAsU+}tuaD*F%? z@x;9EBjI@)0Zk;3>F>~@7i7PfC9az#jtFlZj>nj22_8$*lK&k|nb~gv2$PiE=Jo@p z>4K8XXtR7aaTK}9ysH;Q1U`1yT@>s*Eg2Jc3O zGh<@l(UFuU#;BfNHIm%N?T_dD%^&V3iZGgl#6GfWu)@%Y3@gR!J*N|qfNvy^jyFIS z#fs%|@X@-)*rX%6((qSBGG{hA9!U^-QY+?1F$qHA4%Sy82^5bWft^c9(?9z1hYC-F z%4|bnh}i9Blj7o}d_Hp#aZixwb51x|R9tM;bq^m4f>m68?-0U+PPbIe;&9JKr8g+M z-#)jE!%x@2f6&GVbQT40z$leWStnd$IJ0l zBWrg;zakD_`ADMhFlhS1KAmyvg5Czn07%qx*ct-@Pyh=N6i|8Twe;%(-5q)y3)byz2Nb`}CLs?~Y6YEp6mj;HLw!V%Rb(Fpp%uuO^UDR&em4D_}buWQe54CNW=x z2o0BBnbTEpJzTpy12AMP9o3!Imr))5wE6i-2lh?X)pK~IUR3H6jhy~@HpB_fiA4hx z1sxeSiB#c>?b4}sMV!H|L8(J|D^;*$Q43NpC1+|fBk3SoTX{*F(4!VJbMj;*w$Cf? zFvAnhG%}E39&0~nJ6uV?5r(_(C1)0clkSx4kMFFR%g6>FtGNM9Yw^|vrkENC2-&o% znwt9h2Fw)6>=Ml#ko6^74f!5sb}laK`9~B*)qoH&iu~dBlP_s~AX)etJuZ0q$>oyp zI;TW6O}Me5>1zJ?R6P;|aDs%{_h9F4=3@sEDpuU?`*JxZ^rDwZsiW3^yNZD`JUcUE zy#POZdHeH^gwWX4ve+kBz!?Swzi(+N!jwZ!1w`dCWEh51Q{eV{p+3k96$$t8bJj$QkSvgJQ#Snjrir&IjMPtEMdwW)Q_Tl_DBgM>@LCyuwrPq_q z2XGe^kWF^ zpAr|k@<{WwBr?)nh>%G+^iu|h#tX*13eG&}J%}Vk4fjdI&1i#9N?IyHQU8zn!w@ik z`CW5deCj^(&qik(zr4iyHwxHTDJyH8XUwnpEL6FP@E{Ohsy6AD(~p_ne9g^HctvWi z!fMsux)(7YVuelwF!8^l6D8HQmDNY-B{OfSsr|lUVfSzxW_ZbBNgeq?NZwntE|eBt zG;i;R1!N^nloHEDfiiV<)oh!COi}S@Onrg@@l)7>FL&JDJ<1A~g-!+LQ2;IPuRQu>Zy$()Tl2Tc+uMeRop_1o!)3F;`&gk} zK>jXv)oggw$(~|eC50$7Rq&+Az}`agbL)EJf+_kS?*I%ziW7(aVLSU!&`3yh;I~ zU^~jkKZ#fYw<03-v4D))bRQNO*<(%){_u46KZxT_SU1=8?E~LqaLCH{8=OaXO-^o3 z`<3Yw6f=sGkj>T2l|E&IeLdCK3T=Uunb|0ae~L&3ubO(C$D0qav}D-w|9Za>vJ<|p zcZTo0WrX)8d(K=4FyiaKB772t*4+L~1baYR^Er!A-uACr2W6-@N?!VxSa0YO)Gu-$ z>vOS;^m7AY)7~e>UsN_JBcEx6sQuYGtRV4racP{`)*k1_@iF$&=X(SD(NF?H>nJ(C zQp&ZHQjb>kPfu?d4b9BWl@y{8F0S@4-oM#T=@@XgKqRu9le2n$W>>FQ7s;YF+f zL*F(=1N`&r(@CW* z?mixNyu~t*2lxESb8N4x3XFpljP+m8bri9ve;KxP=TFv9&N|Fe@MBTH{~kXX&(T{= zc6{}AJudc9C~QDv)&Do8Gd^jCb8LdspY5{=vVLqT7V?kyf=6i@k!B7GDD;tv%KUg6-CqyNLJ9lh$LKG)zjTDx>otfx87LG-BC z;5`wd9mgnCx!^{U5t7)VO{!y|-^u|pyGsl`I?Y#S_M6<6F)0<=LKZW4QTp{%di73qw+nes&jQC3M;9 z*fMU7gG*aN$gnSE%lTW3eMan&q?8k*%mM6-U`3#cE7n43vPqH3QrG<#**zzJ(81?PclCdNfrr}Ifjo2ucZ>!8$@c+ zbsVF#G}0qDk7*%{>JYj&E32*NQ-)U=H0Mvun-Mn*FjpJq)A{C;Jw3a*7MELlu@BP% zOb5e+pPdB)_*0ZLI2%i-tZif0#XB0Tn4*x>O((lUSeYj6d2wa3((eonL64sQ#9(zi zU#of~2!(v+ID-71Kngb(+3`0j+N=o?yQ7)19zT3(Jn`CJelQ^R!AMgIVT4*a{#UaQ z?9B09yom4oyT8zjFwZOoy_d=2kPVTU4aWK5%pgdIuFJ((etXsuuTSdvAkeTi5k! zc3>Wu1_Z>5>DLQan3%ZIrcbNm61Nv=K1bBt-bd66SKlNqE2;OJ0h;gAdk0cTAu<$V zHctq9`s9hmXkrj3=TY?wG(zi=+4Ro0=->s_J-jgxn5IQz`nK zT%AngLDRD~VW#znV0r=}hYv$O#bw zi=xFIG~TN}z)tupCGbkCeY|iL3xjPv4`YQ3TFfm)zdq}5 z5~Fp$;Ah|`ipl|}4t9aAA(=81X`@K^xu)nR2G5^;w`Y8Om)py^`&BO+tZ8b}I(IWF z&;KsFTXymcGMw0Y{wsYSzTXWlZi%{=-rcusqgPZN(Cey_f{T+m(ZF_wIYq_c%k&Em zKITAO1jBUE>wQ}YHk6h&36f}4S0g6m_0jhIo6Iw)7g;- ziXzr~jg1d&D&5jmH?C3QAW&C|?9g2f!6k(ty(|-B6Nq8ov82Y|Y7t{UF9inLApuUh zz{SqxgNvZ3zGO1!l9LD!@^5cbcjT08jgOB5+!`Rb)zrAVx@su1!|%0CXjYdySOHQ? zlN;ZDObc;uVIfc(fn8_*wmTB3FixYAG7Yk>!K=SQ%)iSfnqen-`}A_O8>o#_6P1`i zV7-|dFpbg=0(-Q3GZ^b|fBUnuHkDNS!EIk|`CxD01USKadwc&&wjUlII5`=%m&XfT z5_3eX_3+aC0~kkKenhOWb?C@+ko-0tVXaD$D z>iic5!OPUkYeB?d(BkCghU_jI{whSuIGmkijN=@f66vAMIj+DAp{MHQJO7BambU`fV-O-JS>-Ou${&95J6($Ir&|YpW2TI|AyyWbp!pCF zh=~MRYyh6{^00ngn^9f`ZGy!nc>PuMD=f%=Uy`$YS8paM$pRGV!f*2^q*Yki_;>cC z9vag!c2JrGHc3X#`($?&iN5a`{8LesCOT(D0vz<9waF`Cx0? z?p^)G3AJ5|{rilCeQr*!5)Mw) zoT#X6W>s68qLN~;)RXcV+CDzaFcQ&641Wm{$r3>lII*y`-WdkrXxy)nZjnfNiYG#)j7ioNUcJ}tAAxg)!oy`MNr?OT< za+y&9bi4tAEMtovbsYBAr(A2WdpXUGfgi0-ujxO1tMZ% zVh+Z(NVoGg4CcD{vVG~zi$8qp7tIygE6re2#nGFLKGBdIr>eoAT|$Z-BR|A4(PS5H{%;J~zlV!>_m2E$>Gft>9fvB6tg>3bKOKwH z*lJ7m>v8U=f&n?n-n^Bxn8#WlP%u@?M&8r(#asHv)y}m$JXeCs8_fSo{=$iwo(jo_ z<{-ke7)aF@bujki7n_|qww)R4AHZBE?YB7Z-|Sj&d#zl31v6DTsFUczaSRrYCef6b z<4MOf754Zj^2K9tutGbtIM}(wPiH$N4uGe+AdrhdF6+SX>RiyE{!^t9{cB0-fTOlA zI{Q*AensIO5f)_*pN?p*hDb_^(~Jb<0_7%34bwt$K_tMa6~Nbmhr}>={b!B@fwh9q z!V3!kj#{ogYd0n3KhUKpc;Nr{1$0q6`!t|PoU3=V5J^dX>G28N3clvcxY8)FQ^>R8 z&88xzYD-)Vmpr%ac*?9=uY9k}>54!~@!yHw{td?NdT;+~Vu3V-oxK+wpOuxd^)L{c zGn#+D9D2pk)PvTcxpESD>9cf2NOQUI$LRBS=uh3=fGNuLStA~no-YY}ambP>k=Hgw zm0fK8MnMUd2CD_Hw97SJayQPBNkYz-TmL15!9_jx{JwYn@4#jy-F|A>Civ-Ye5;>G zo8I&OJQ_XPJ%4kPGE>XEoKG@;3H6Ml-@%KL@2taqe(%-9G@&Gf;7uev!d=8b_lZqW z>BBx$GW4xRgC`kj=zEkr5nW}?0y~O_4joU6LtKi=o)#P}ARy~Pm~g^(&1G?Xm9XO@ z@lh`@R7s3KC`sFNY67C*CMaT7J0+Q~cYY-U6DX#a2)-O*+%#^clI#Kp(6sS2gV!vE2OS+gz2W#Nm=7Xmoc&L5)jIB}d_Q z1Is;#r57PK@Us4A4bef-fog4424pf+*zi+fl$*UjW^KfPCBC?bSiuas^K7xL+1p35 z17O@;_UCN3WT8DAhAiKJ!UO&9P;8I`Ypada;rluS!qU;Bv!5sI-{r5g2)R9PJrk5T zc`Gp|;YRjdp$e7;b@i$8S`K9g$_>oi<*Cc*ec5FsH8!M5+-imj`j>7@d9KPi*34}9 zR6GowwON%|{ZOGVI#R2)+&L_vlH)Fx_1R`F7m>S{35xrWF-~;0OYIc}Wv} zCHYwyY{*x9s3e0XS$-D0`^opbT+tIr^+*m!(8;tPtW1mAeT`QSzQ>=GGrZ{EQ@ZZ< z?72YkJ~ziZuj}BY!(Zowep0F?=pG;G`>FM9(WH51&62l&BvPmzKbj(sm zQ|Ah(qzYG;)ocaN+l$>3uWE~1U3|N6n(&$;&CDE25w@wYGmvEbF0-i%lLBl)8i0xEV~X*zSBR!377X`69B=ncnv3%57rxWE#aS^VItvvvJJ+SNRT_(71W z&xJ?pKHu#kU)uT2;LT5ov(DQMM~T0FKy-C8EOFCu>b*Z2$90TH7*OB!ZP;EYzW`G! z?kY)d@-DWKgWcmt@8Qj#Ux!;gzeYxk{=1QZ#Kg?RWVz!a2o!ye>p*7rAyvd{>)+IW zvrtYhPQ-R*WIGOyZ~5D5Nl6nOvvm>6@9?jmG-qE}4!!n;5Gapa5HiwZisxD!_g#E$ zK^FEmA9CZyx+)#=-%cVW1xPh=IG9L=zBjQ6p~dFv)qEqK&6Ce0gYdo>O%rkZ*j^5k z*WEGZE9?b%%!j;{n7Ubn_2)^-S2iMEY9^uOO4)G@)*=4BEbzSLS6NkjUCu;)gF9z@ zo%~OqZFUN(ina_sn;LRyyOG1yacwG`c;I0SA;5*ao#BrfKATSw<@P$#YdvjjJ-yg2 zJ*UK??cgac$g!=iPOf1ee$2)Q*$8$3p-WI6Y@Jt6lD_3$-0m6PsHS;;dY}$fq6@H^ z#;2!$PA>Ifn#D*q%8LBYQg*$Y&*`G2lG=35)BByuqeO+>_PhtI$L_y>{gVE`5rmJD z;u*mII9Fr)7o&@#wMqwhv*ypVnVCIosWEbl)qBgam`78 zqJ20b!qbvDt9z5r;+uiP?aiG9S8D`ZODi_92G=(4ab<6S_6;O=|;iR`(d9xohAt|`a@sgcbg%!RtD-DN@TO% zmrnFnh{+Tcn7jD+2tCQghsoHklljpbR-r4F=((W>V`wy=Y6|xeHi2(MLiLxFpv&u2 z{0;lWT>SO>z7RKAv60orFFf?L#%cp`<(22&B{)I#rPUI_X z$tMR_h%{T)OH+@|BbNWF@S3~Xk;^~5A}{e&NlM0=7$T{3k3|wE{@-MRFx&Ax2!v9^ zodzEgtVXK4flfk;o4D-136b*fdhj+R2qop))e%wS;^KXJ>a#!Lvr8x^7kKThT56)H z{4G;s>mg*t?U}SC)qe7;HS#Q9e&uDa>rGXkeGqTGnB3pBf?@3~V5z9!_?8J&a{H_3 zGRFkRut{ADV$oG@Dr;grI6R=_crfIH3>?BzsU}DhdU5%_;R@#a!l%e(s87VLzSSgY zJl*g9ik!iv(YGVH&hXWCo4uHMi_X?lI}?5AzjDVL#xKVm&&u5-?n8D&*qIYTn1Sdl zL5Z1FA-KB}MK2a*5>LWBzNm(+SStX9`mz9fUk)d=yZcd*V;H4WBpgec9`8%vRG;vj z=q6Qsh{nWjRl!>&IvglDY2lw?)@s{Ah1l6u2n&oB`TOA}cp_~@t0Q7SoQ@=9*(ftOeqeldDnDoLFOhW35H8%$MEb;?>oMG$0Z= zuYl<}!cYQP>;V?w1<2~g#wcSTqEz{tk*MN#I-o0%qy0!`kJsX;?=iZfFZ2aQca<~W z0vD2k!ir=g$qCcI!X6om8uZ%hyp0>Y?b}LlBtV#PK(Sys?yk$bf?)LtM%&M9o<7;# zp?P7;FYp>ngeNJNiy-_hDN4+eBm2h${ib41{}UkVD{oUq4TLH-YTY#o?XOHm^<++h ze{orv(G)()QH9T4QNm>a$($p+ub9i$|1SaImacxoFCIKOT+FYMLcbUn zZGJD0cnDK^tbSx~g+Z%?&O04YxDnyGt1t!yxT`C=snv;5b8tPnPVGI))HXMJ&l?vb zENt>EBxQ6m+bHfjI$on^fyyGZ5HXX#bXoM>%DUyPY*ITLIZ;jJY9 zXscn*e+n8>PWJZS(#Vfqpo+-y%d{_Q#!Y#_G+2?z5dv$jh@%ir=b<*Ms|4=ir?F@% z^Q>zw2ic!nDD9&o9*@5~duQ=aeGZ2OpWGFk%RXyKBbi-v8Hx~j=6iFz@r}lkhUkez z-%Sg>4hVaH;L%a_*`KR({rsFft27C)<|(tB{&=vBGw4#!d*PMqdC9v(Ir-4h--CjZ zU+Oz2_lZZn*_RwEW5q5aTDLuSGm;0C#xv}biP0UDqEz=^p?>xSs6jMB@zSlPDW%sc z#2h2P05wGcScxH&64P-1zZ;CW9t%(;3$y11O~ zteLk0m(0EanZtjUzJ5oL5eZ_1wwWkE|zU24`a6br;n z0?WWcjcu$2=sz&Ja9so44~aD;+o7Sv=JR4MTtEID_Hqk`E=Y(KC4CY})G?Xlft|Yl zSi>i(G-K)Q6ZuA~5Sg9#pxglG6`q=htjkMPrXZF}S+Wwwr5!rD(M`JXNJ8ClW6!$5vQ(r}UPKrL@M2%sY;6p)nt2Mj`&R({V~_m6HWxPI+{CI%gd+MGK^Fo`O%1S z3eL~ayr6%Ap*9X^L1d&0*$bBsR#xqrQE*l!O);xP^ZC*@FFul%eMp>rs65kh z7HY>)T9o|K%Y6v!_-V_`q!Vk~E749R@^3^RT8$QvXKgJWDJ>f;tLIr0d?$~B;UyGR zVjl0l>A*nLzm!m`o{~CKZvAR}R|%2CS7ZFnmVugI(4U2E{oKxkf5}gRLLt&*G{x%4 zgJM1d_tSUO|||nV=Xq6L>N~p!$TDK`)O?wYSVsuKU}*ry0RU z`Cq!P3g|3jRC1q6cF6@sm3ppP14W?ST$39^ZzYE#3|&w_3LC6|8jtc1Aj}^~OESvn zrtG{P1?DxtH5CW(+vfOual!&Bmqcsz)v~bIa(&UK%)u zzRX`T8c(exIL017+I|x4WU8t#g5G$gNFUW5J^8`LX13AAM^`zeJ7>9o!vhwuGz{XS zg5vL!gsY?p-=P<@o8LIbQ^+nU_}cc%Nu(OB-*EK~KveYfuDyLMJhU~TmwsQ{mq4_| zUe9y^jHyGYIA{M|qd;*%w-cE$zYPa9ypMMsXfbAWqlDuSaTWr-j($7u&}e9RB^SC& zK6Z+C8%GI61QGY&Fi`@2soRqyi6ckrq;)uS2tvywB~Mmx-3S%|=X$03ZuLkn@_4P! z5jg77Qqr4SYqUWc{Z1y=EBR5(SjgK&%iG1WWATp30Enb7xd}OzIWJl#ZWX}zg3+M~P0#_%8~ZcFRoq9}GvsmO=JboXn`=N+bWBH|V!JWF|Lkuuf_Tx#g#B%FUtj?Wje9&%YQ?PWMEVob(!3CJ zrm1wxY{!qChqxDPu%nBMi#gF#Ad5B*`QjT;DOOmh3;&O8?oLxw&Dvus!s-5!=4zt# zVzn|?aL~}TKw{&$nlRoEy>hl>taLn=#zv?boI&AfjIz3VPewKiD~ybhR4Qu;>PwD` zm4LW>{po4?i_3(n(pqQ|qe3ajMyI2TsJ>5@NedyRhAU;#|I6cSa8``J!-&3L^%WZLQ(}rhr%c&Bu96b)JBJ>IJyLcfpm9wHv$48-BP1LK|oqT zy1w`8{rTm4@CWQT*uDF@uIKf5oF_zKLMR&;1q$qzGj(oPOntjKYSVwSNbbnc#(XoxURBLUwinX->=uw*2{-nj6Qb(q z{#e|0&aH)HO+#09=_DW?*H3rP+W!|O@^SSBy1kYW;|d@$V3@JDx9j?RmAhCCo6BEQ z$=>QeEu*au0*Nq6+s-5=4(3Kv#4)o5F0LmqTPVTMkeJ$jG?Dz8V*D>O5rP(-LJa|Z zsECVCEquK&PmP|X-b|ha%0k~g5z=oe0m92VoRp;iR=WGVCMUI~j#d}J`RCL8uT&JR$9d$)SXH`s8iMPyiin;c*Q@4lwkBlJ?p`)FUS2kQCEj%2Dkkxg z6ht{S8UG&gi|%B4Y-|Au8k>szWMpzP@rTd^`@G5RbZ$YeeVI1EQr_T^*$i}Ituy!?A6g@7Flr%Xdj7-Gl~}P)I*eNK3I}qBj@jZ@ zE;na^yMboc)#^U|lk_baYxM5_9Ohd{wBu5TM23pOP`NeNJ+KPGwM3d?1ZuCAlSTth7TM6At~b=nT%PR* zI?4!K5$Ik80{6nY>+7gdLJ{7yMHCsD&yhb#)CL_J4*|2VvP9ZCQ|?89{S||->4Kw% zG2Ouc163NTYQj|_MFl9<`C_f!;p}*Xtl|4XrKB3_L8np>fU=cZ<*+RXDeO1}=mhyjoM$KIKa01Arvm`1Nx2_=!?+#@)I1 ze>s`q($b{kp6(g&=@_>klCkzN)LmFO1CogLKyr)Stj%@z zJ$^vq0}TSOTN^Ev5eQrh>|6O`_c+w{@x|J}zo?s?gA8#m&ov+cl!(Witzk#7-{QRM z3L@1GOKsDSxx=gzMC7T?H>om#YH!;9g5KtP&%rtpyCWpJO$UcdZ)@b`Ka=JSdEv>2 zA^5&Y@B1ls70Vo2+G!We%VNPw8XX@mn?DR$Vi}LX7C%ZcHAC*=QO-WTe3ap^|00;3 z0h+(_49LC{cGQ#AX}9R#=qV}2+TO~8K(NPN@HcOGueSBuPXL&U8Q?s$C*$yX=`do+ zcaPB$5XBl1mv+0Z54qXgV+c;B5y8B>{z#Qc|IaJ3e@-oN$tX{{)gyCLR`1uxx1-ej zZ04leNsnzBaia)IGS_+irNP91I~!)6iw$FyOKU&!E_Y_vLQZ~rJ(&*?yUtlScP2J} z95wv1^!PZVX>Ie*f0KWD>sjau3+*N| zZU1*Qc5}t!b0U8eYW#{KC&)yfIEeZ9{mxR8=`HRPaJ{$F8F=?812r9~&J_nlqJmS` zF^og*fFDRciU3_$URvUVm+sYdZTh-SOZAHW$=WJFB^DHzLY!91U0&1Xd$4t%YA|;< zEE7c0U93FQ9cGF=kU1qd&dc8v#*}Q(7>rxBX=RAeSMiM8f22@zmn=q5Pll;Cm4;$R znt>r3W8WRbzU@98vPB{6M+e8VRZ|_S>7BqD90igbw@gKPwXSJ@dFQW|DQ1}1R_5G3 zSMOvp6Fh5F_7pO8>3JXOJ7m*E-`l|w{(KWNZ+DY~Hd>k!)b)G|$fzTcv@aQL7Ph3altZ-|IG z!69t!ccv{5?Z~o}{KCX+k=z<}&HWA*RS4=27-m3HvGbK3#Gr^Im&9wqpO>p1dWYxg zsjv71F5%Ct`99Y|N$Nf+Z!b;FV{=wQd@nC~vztSGzsn{+z>Fknn3-U8FKE)9Oq!aA zV4g%Ck>x5mu>mfAnt(zolyNE3`~5@%^$L%P-gP>HWU*ANc9+{Z%jdzlG!W1cdwBcJ_L=OGfm@St2;-igtaN?GS+zm5Mj_1aQ!{;}3KL#X2!DPb$Qdlx_Qh|26?Ut<8 zxH7K$vN6&`u_y|s(bDXS*FFmXy1>RghuuK>PX&o8`Ae9HO$5U6MIm)uy?A~59xttC zW-A3b*3$?=O5diSb;Yd6EZ3D^(FX$4==S^5gwEREnoH-!Dl#Mo!HCDpn>bxd$W;_| zCLc*-w}nyR;=R;s?qcJaJ_x(2myE2|wKx%natq+GR|y(6uRsL50CO{|UaORmx?$SE z^gKgteVJe7i~-aE4U`Gtfwrntgj!i4pii;~AvZrI&aZfG4qdV?C`8iyVMK5+Yb*m$ zwE<@5X9-n6rQA#O?&aEd$X6lPu%8jmKG1o6HD;wSTuRZXbEdctiZA1f+s;OYmvP)% zIxV~@X60}MhykPgKB<-4C8fc8V>hLtL3gd(pSn!EKR-TpRT&i1uM!Ja;ByqPgff`G z**MY`l(dQ-c!ISkOh))gK?ZB@>r0u~P}6$9L636kBIASZW-q#+g+G7-vu%;u5+C!C zcDR1!ScreH;d5ekhJgH62-2-obuM=evlsIE{I3(O_pw+=bObOqdm{b$X1^5({syul zw8H=iPD@YVHDCf>lhIIlc98*ir{B7IKI*(IH|B)}hwM1f6mVhfx z6_bJT{U>&XRrp%{?Ebkat^1a6I2pd{fK&jDJ!2ThD2EhbVXXBD0|zz*At;z%5r@YD z11m^DLt~^g7`AQ@+9405K%KTe_#g)XQpKa?{&WgUcCH7K_*uE}yt=>0CBMa^RHUGg zJFr<80#kE;Ts8wn>iYOvhm`Xi3Z%-e|I*)XRo%{0?JswvQ8f=eiWX4K(3+rBSDhq_ z9Xf=eu;b0)p>f%^%@O(Q1s~OY4&!XpvT9XE4IGF`t#O}+o4JQReOcMDGTb;^6b?ZK zSPB$mTFDh~ThsihoRzLRR1y*=6yX?XqPa+lQm5bM)_ z{|GvsXTH(ZbktO{w(|Chi{9^Q_JL2x?(D$sp-?KL2VQmNY>3fw3w-uC{Fqsd#5rcZ zM^SF4u2Pa7cMLZK^0SbrsV|bx!R*2pXV!O^3v?pnCcZ4`5Nuz@$)gDVtkW+xbM6-!TAojB9yvSx7qWQndb;Q4SqWfFD}Tet4vw0hG#K z2Au$WbGHMh$B!a?RPflPK`^5%Ex3@Q!8AGF8ps^DYy7vR{rHwD2Ft=iJez&t4#8tg zeSU3D++wR1l2RcUhL0qJ8`?0-J~meJXJbWCMpO6DqLV`ngkScpKbcZy#H72iZi|(* z4+hWKYN%SjxCe4{+rV^YCuQTarY26Pj><^Y#Vtl$onB|Q-K`tW5W#rzr7SnQ7#lMg zI7C<+06YsLn+k^oN>boRU+~xc6$K03(O{OJGSO?t^jD@vdf9n(&3Gl1a7l)qVySiN zy#1_=vwzF@NCrtHjG@pl90ry|x-^uU+`MUuf#tWFA%pCK?F1x>``BANDzLxtK3qI} z{PVG-@L3Ddcc}Jh8^h71W?a9E4uZ!=BhrjYS=&A6afF2&?_G~sIha%sh6BTWJ@a;R z`j$geNvgUMI4m$jfDpwFpcjcVyPh^{^H>9-Gca^G0Ivjb3}p({e+RRI=3NG=No7C6 zISNfXzIdOn0;Qm2#XD63HCdY;n!h|UZDfA}-}X-V^m!h;GMb1+j`gA6Oq!>!P)ny+ zt3ff_d!cWee!tg9>gCN|-khCXT|LG#phwZSXLLmP=<`mlObCQs{ns#%uPDn;+q^3< zPr@&3SKUjy1DW{q$5!M?lB@+0P}9-G*lyHqmM=lzS`%K93NR)(^B?i0m8@Nos6(-X zQ$8Dmu7}WUDQ;#;3W926EJTVx`BQIdi=8x)tfBR2FExmzL6Ho`$E=`;EWiVm*Lc1_ zrpMQ!J@oPk;HV1H@3g)atU_VtSQ^fdET{S_H99$rn<+av zzG-2+E6-W{qGr?YXOiFf-J8Er@ybK@6z&s%<0P4(Z$GqYXeMZC|LF zOm7tu=(XK^B&(CLnjf31wVjwbD9MK_q?m5n zN`I`y=NR4)8-xu_h>}&Dc=bvrBoFo3Bf6KD-1Qnl%+F^}sN$v=^IZFGq~<|*ie=ZL z#V{KG!g~|Xro-l7t2Q03L2(WYpHEK#_f#v8wkNH%*h~*|vNjag_A1I{M};512bhh# zK07?^xZwI4U%(9WaSmgsgX|6wV}8ucAEFFu8JoA{#Xz`WPoWwKJQ3)To}W4gKXN31 zFpHWBy-3eYWUs*85`U%8NyT3|qDg9U5(SVTM#$c@Y9GYtq50NaKxNx=SH!5HaQ+}_ zgnq}@HRj#6PM?;(lpYKNk-tQ^HfM>933O{&fh@xBeXhi1%uHBVngc zz!@QP9S1A}B1)ol2-YE&o%G6I<$}l~vdG9O5^M`?w_&-R5UyoNfc^vh>%P1feIKTP z{9eX$B*dMp(-U>jbYAW$7H}swLXU_MO6O4VfgQl>B5gDF23@e)VFNK1u< z4`4LQ9AlZu0?&llkC8r~0q@o}{=MvzA~YH%vc(EQ;_Z|RIvUzZ+lC5!VEMjIA8w)R z{tid$G?*tboH%EMCN^YovFjbKMidUa6e+4ovkDB4(#lvuiF2$_a9E8>ir{Fi1wNdE zxr+b-rIAWb3B5zc&j@BJ0*p@nPyqN_dk7Ff%&r%Cu2$vE&OZO5VIXI}fgwr%PUbCL zI=}L`UUxQaI~m1wYCc@RdBJLJDMnzL$!{?-3%s2vBm6*C@M)UYDgEMSUkA5?Vta2D zm~4HZeA!PfW`~TrXFTuF?%#K^fO!Z&Po0nCE10(xf7?$h&5@fU%&*+bh&DT#%;xPmGIN!cyJ7dEe z2+J$%c`emiSL55X-s)y<_EOtaXkFBcT2NgUK0}liwu-+JyaLYx0MMw_DCNhkB*UuTRvwhz?}f$y z#40{JhsVQm${-=&k2xc5< zahzuP!_pb?e-P2($(eUA8rh^sax;CHRil%q{vcVdIr0?(HA-Ews!AsPPR&K8t<+!o z5gi=^ivREwF%l43?D$Z+xUY-fMhJM9-^}=(YfH4XpA+To@Z}7)g8hG#we11<> z#BsA}zRec+CFJ%}D5Tbdq{1jtNkQt3WOYLnVZH8S!h14Mqa_-YMn=*DRi@u)T1DhQyzNL+sEI2&2HsNnJaOOji4#7(ZKtJ_d9qlOPBla@qU)1k`g#(=U8 zIRhjf%F#P~SeKM}-oHL{Kd?O#m9z=6HNkNK?i{X&rRHH?V>I86O5wY`;0jHHf* zy84rYv_aOAcz3Rrl5@}Ddg||zuDuU~wcsZPvBSmxa@@<#^u8{xP0wn^r>L0V{hc?R<8N#;wACE`i1(D3UETp}#PhvcW;rGCd-CrHS!ril;^Z`+f@PJrD+1T!QEx6_HN6nJ*0^@D6Z5HqU zR@_(B3;ASQ?^mr*baMv}u5@Jqj}C&e^L{#FQb%usj@jAz?LQxhGm@ia5U2rDXO5?WD(fgh+L-)?RzB8$0%{&oyVkojaRugNRTwXVCD_iwQyGXE9;~ww;P77B@ zj^8b!V51og;<}m*7+|5=cr!!-{({49{hLi&`t+S-fZ0(pP-QN^ZCl zPmyc9ttSDUze28*Qh{4pM8F_^Lo`$q{gFcv;79)YGf@zAz3O-2cU|UpbTF3gMKEi3 zKndDoPU02RifXFra5)}S);IIp0|>&GAtB<58DA*#`1uiiu(DFtjbxP4xPg&G^Tlq@ zeXEp})+Wr_#op3h;K1idP3dq_GMHQWW+n7~1R@0kt$zD%t;9t=LDr(85xI+^F1@Kr z@E<%;QjCw!jAd86uW{!IV^B5&GR_R|(AJM`VjdAOXG@8B@KM)K$^lAD#~guYG{R|L z8ley$45`F*_e!|x!f{nvsk zP^~bN7?<+97Lj_&A{A8Vgu=SCX&1bA(EU*9N>M^5H0YE?KeOw-Mx^SRQxzX;Z@2~T zHo~tX#Dz?lP-2ia*3f9-fhPGQO3m?KyE?%N5 zT*Wiqg0-;&A`3N72NaYLo||V|Hlq@^HBkUSdvqT3}>XO%Uga=|EBhMD`CHo*hdx0E=U}=rXVyH#Uaw{lF zzrvVuT-5B~IO>Ub`drqETJAK}{g@OBoQFO#91#uV#+3AR^E=6;N8~W3m2qvs)MzN< znWu-{vEPlG#HCBeKjo~eVH*=?4$xgmp~usdEEbM^t;WwQ+i!XS^&tQ|1ylv{YoT}T za&2tFYocQVnp;X(z~l|fO-`-#VxQmqEU6uKb#+_zIl#4fEv&tLEUly{t>h@2|ErCS zIYIh&H+kq#?J2;60+NxG9$*k?LZHGmQ}f}yr%3(W1Vp+PA>wzl5(l3}(PeUOX&Doo zA&l9kVq28`yJk`q#BW;i9Wa%24%lkB2pa0SOx|L zgPnMyO0aBC;n9mYvVl#}@SyB}Z)D{jr|#yz!pP6%J&!#y{W_h!q) zgW$ym5xWg?aIR!)T7EB)c`xx^x#c^mt7ZStNmSW>=NK6g;eb!jW(blz)y~s63VaBo z|JK?0ry!})`{(_RWBHC-`L!)~jMIprC=f}{gy*=VU{%TpNgL4C;fP-ISvVpZ(F^uJ zZP&L}&sy=`Z~g?7Ig~EzdhPEr>$Y-+Nv|2Cgng!yDRm522rh33*1Z7=FCw&tRV<9= zcjcn~p8s=u-Z`3?-f;m|Zyy81Q5|$%|BWq~PWBcZQ(GBj?sZxTlU?EtULOGOkwGIx zMWPx(R;94mmJ&6%f3^@NFkVYvH1aFnthA%_P8tmFpXdGgAl&l^&!itR;REZrIKqcNeellKO2Y z<+a{F49t48x7d6>x>MD5GNIh$yhx+EQv>u;Lm3Q`gm+L%-H)^=kUNhMEQ%Z-$=Pt3 zo)@n)Pa-2r)1E(BY;P7!sgEG3ILT#FVRsQ$vU%(c9q*GPyKzG$Vsag zi6oWm_p~2p_&qTAHx)Kuq)<_@)ZyhU_NWJ@lh;Wd2l+xWA9&|pX<-=03!6JNr4A0e z-&QAV1$_R}tyne&c7Ds=H5Mv;CigWueq%+KK!FUU1TQr%gtrY+QpMzdbjM1X+q|<< zDCX$dpT&&blcjK?YkN08q)xK!uBFw96T?8Eg8<`cl1YRVulPDrM>4AwMqz)WnNeq* z827swy%9vRu$-e123$3QoHKt|$8|G@Le;|+-BwOs6l6Zq`I{^FR zMUtF#R*pozW_#jgN1#IAATM<8GlG9Kf0EXZ6X6uQv(5R4a&V3f>krv8H1O&7&@qOI(N-BQB=%)~4& zj91%`0@%^;)-2CRZYFDY-#EKDj z3D1?d{Nk4|U7ls?IFt&!+p=P7es4sqxczDGS4X~0on<5SxF52^b%e_@v3D7kaCQmK(@c%RURBH0i4{59p^USl&pW^c3K*pO3mg( z$3kP1F%m$+2tiRoz`VUMLQ-xXo|o6dlOCpvZKppjMgS12*sR10dl?lFq6Z2GF`iL; zOi3A_P1~fYv*<43dG!LbO+j8`pmuit)7MbhX-tgT5Q8$+%YZo(s>(T4w9tDgUBRyMlB4OhcN+WI92 z%D})`u7gyf4VZvFb7d%;Y)|dm`C=Mz^u0;{*Cmx`t&hRJ*Tw zS0+B+$qxmcuZ_c^loZLvJcAt0l&{T_q6om>-CyHLf(XSOoe#YC9Q^(ZM0{MiT#}fV zc(Hrzg_|p^ENj7osjhP^d;rMY^J5@TI0i?{k{k@XlmBL;*(U2|R{mL4Irq+lf|ORw zrbi|TL13-E5jw-gFjIIF$QX>iDnzQFpVFzaz%{|QqF(WCkt>@i&$nLZcCpLTnG z7T7TriC?mo{i}n@|JZ^~#Fu;JY1%nYvP>mO-Tw`X=tbVxOlh@s395e!j=+F^*9KtQ zoPqkj&Ne{|)<6=H&sCW9l>L}4nHQXIXrZ8$sHV`Mei>&s*(m#(ia>VXk+8;To|*~% z5f<~^sA%eebUeiooQYyH+~rGc?IO?pP;fme266DP&3B9FG;DXcL|ggO{e{a*%o50a zNg%>mCYoVYCi$*zfnnHQ3N)~01)7A=cLjq+Ghbd#HM>|D)-pos zaoZ{3+qV!6hTvk1y(RluG)gS8Zu->0wd$xf!;9>FeMY83OA^9^m_u_HQv<|du|QdAOC0O);2|BpZqh&48pJ) zDJ;<8WSuqMH@KPhlW5*RV(#D+=s$(kmZHN!DD1$SNdXSohh_hOf@=mqFGGc^F2G`H zPBxC+0IBVE=g%DeN&viJ(?GAIQbJyuDjO`IRnY8Zy>Emlz16m#4*yr!$Cmr@jfi96 zS7jE{);dTA866`SyFs}rgs-0M^I0)Z#7_d&wvp| zzRaF#GxN(6dNJYr2@xBX!ie|vXXhV))pWB;)$z~lW{Aqv@3?g6)5nieDmA60TknnH zdsbJ!UNXccN5q0*90k8#y{?!HVuSa>h{jP>-Z#z4V93*{&xuO$niP* z>T`CrE56SsGB`Q>ihx~J_uydv0tSkSP^@Fw`l8ABe#;N+53!@1OLd||FzPA-zRUOC z$)c?-pP>xPO;}h1%O~FoNuo|eo0K>t>fI=V!WMUw|EpY+Zy5P|IG-7hQ zGK5pzq-sWfSm6Le4FYF?ijAj66nsS%OYeRsU62mv_>T{J<|!h+*k)?kb3f~>-R~AS z4AA@TQ{8rw-2NFT8l_8O`-zQ@24N*(5E=ftmHC$QQR6C~ort6k%qcDc06TX5tyi34 zEe~{VI~6yVr_}3HS43(FBv$0C_Y_3Lv4P$?I9y&tw4OG(2FvHQ*h?#k6QCWHID)e0 zr8(6yHa%iCp>F_`Y0+rLP)l$F38OugB8rSup+8txi!(@4rPnB9w3TsYI`O9pZwa}- zEFLRv1EcatTSrU=DOqaY3IFD3olBT;TGI>7#yn^cB9>&PanSJLb*27LPZ-l*orrp` zvmY{P%a#xdHLq7x-n^l|Xg)V_d1Nxum>u!{i3bp1B4PvC?xk@$qzn6a+F7kn10E06 z4CFkn4zV5F=Dbk2cd^O{EaR+$M=B73`1RT^cH1*%UR&G72P$PP++n%w0_qiD#t60% zq_LE!jD4D`6$cH@bt`*UrfoWoQU>-B7XLe+&;Tzq6ooaRzAuSHh4;O>?pmAXnWD27 z0uP(T(tHy?nFi6)MIwHm2$beGt%v865T3t3W>Mr%kStCp#pX{7O$m%#Uy`(+G*n$* zR9$Z*-TYR@>;T^RT5gAhMkl%mw^B+Os!Hoj?WdvrMl-6Wpo&wK`l%hie}@G&S>he_ zybLH(gxs`D#!zi7do8#20N3Utx;UF>Lv@kgUzcM{ya><{0h~zYjc2~odp>UPmAlnX z9-G(kUrVXq6aY{B^~m0Tdz=+JFY2$`z8bKPAlbnCDHtNl2&cm1&Xd>CFh&*%a8170 zEChb0@f^w`#l}~#;?F=ksZ?V(KR%_tO(8=Tlw18QkNqC#>B5gdNlQIVP9T&j-uB{WE?24{xiu@@7T zwf~J9u&np15_t34<;Vr7tNNb&H~+sr@Y{&XI{z>oS0v139T_g=FG+-V(L%HTdd2(l zBCYDn^*q<}s+AYik%dyF3=!({Z_Dj~YiVi)=8qIQJFn7S1a>DR04aa9s*1{P=z^%% zjPv5c{QP6}!s+*^NJzpo4?-?9G?cr>Vqxc$Vza!w-0}76lMA02jGkIKt#X~PUM#gx z_anjP+)4p3ql45<`3(Sk!lw{-heM*N^O!+DQY@Roj4V`4V!lWlKD5z45X|zJD-NdN zLe=4n@*WJ^t0fOGz`%^G6^xL02E{xcq=1cH&V`_^4!#c0UyaW{HQ8ncd`BJSC_RD% zC)z$3wETR&0-<(L&szTCe*SK)tFx1lp_{@cgMbKx!=Ni%BKaMBY!?bg5_G7v1vBs@ z=Zpbd&&@^B?Y|qG8nlMn%W7^%jl6C+I9Sepa@|s;Bft}iVne= zNVLzf{Ps?R;vww6Cc{W!@yz%j)usId`Y%_93AYz!ew!q>Kcbdf|2{D`rufKk)>65n zBs*XGt%rKPaT=qqw7TH$A6((85*911AQ_~>hEwxi&7=1^`8FBotN!Wv0JV_N(Ba~` zmF9m)dRaY+?q2FLpNvqQnw8Jo+G@#-L(*Ce(Um=M!C@Z^?wfCt4-7wPIq_J0FMjgx z@zL|)3el$|J(W+SG^1Yo3E}9k&v)k6jL%#fU0!W%1J%_R@hNe=%cn;fHEY$1r@s&k z$4)+L|HHim7mA_U?&Yiv$sJ}nxoo?TP zgam|i{rq<`8VFn4KGc#J@?=Hl<3geX8lLscHX7kFO9CkPm6e>9fLU+_#y+*wY=dh^ zdFWH%`g)J4p=Ao!;S(u+gV(di7x$kHp;b)YF&DznJLrX=Qu{CJ2qoyY6}7n>4Z#GI zm{a68lv~m${SHWh!F=|;=Y0jnUIp3Qz6;D1_GR|~tmiYoVwbq_@S-6w zGCbS6FTwPa>_Ox1+*0q>DDPf>;SPYH_<~zA-y-LccSsu&MGL1IJFCI45mh-^MUIV8 z8tKq++B|On+2nb>d^ngp^vFCcXUp0HHd59@;qy4Px2fXP$yTOxp|O;X9uE;hEfdbj z$wCd$J%<^s6vofPq?H&$LBYwXg(u7UllDfsP75l%U4L!eH+%J>N;k!Cw&<__-fnH) zuH7CgB2TMlEn}RGw@b2Md!&rmAwuh|+ZtY*w>HoKuBpA=EEX*y@ zs28o-nKU67pEFMB>gozIp2OY~my_)wq_E<>UsW6&l+!kaKIJYh19`O5&cKSLyRBYv zEfouecKCFk6c~e;a|e>dhK6dnYXd@&6BDZw+G(4>FG+03@Xlv#B@@CZD2JjFf(8wa zDRJpKdNQ0bCdsHXNRb~eKvJepDMjAU4?vC?VA?9t$#cSG>1{N_2P#8no7+Eo4TSV$ z8>hOsexdk^=OYwe9Q-7vJ^!8TVuUPa@=*itu<9WrbVgn#ic2VSyGH&Qzgs7Xdz%L4 zh6g=UE|%-oNn8i4Kc8~lw~Tpccjj?i;C`AkE5n^Mpny#T!GR0mAG>4#Zwu&3O>mjd80Pkh3E>ay6(!Xhizx0MIhMjN6s#Lf;1q{lS){cw)?TkDW zcYHbPah{-m`-9}>x0~PQX~#`MmC8=x%mIHK$$vTJN_2SmFej>;O4i`IdjXUfqUlij_yzuFa^CL!H=Ax^{2Ecu8;VTfIB= zvozyD3^@d-%~JEFZ9K`m_kAJXuc9|yuf|SED&(C`w(oXq@?8I3skv^#tN!QcAae2d z;5ysq(%j2Z@Tfa;)@+8%bxmH2(8)x#@UAETU0eANrFI3h@lGzL%S?0m)%t9qH4!zM z>*5Ep0tPIcTD0|icSRmQRS5!pji#f{KRH+4lsGDhdgXaiviMds1BG`FMZ_PwL0K-S zyATwQZLTzSr~sHn{*Tvb`X&|U4oC>_CHYfvUh->u*MSg-<2J0Uh4z7b*U#!y+;YfI z+r@g~+)zXz46F%36ZKYuTKe0S8NxLCH*S$ zb#mqCU+>n)!R_v;-xvU;S?y7Fa9|tk#7o2nQA(wZ*GY@F2*|`X1+MZhtkF;wc16v=R&x)sMb~h z5ef)N_M>_yf4<+AiKQUsXT)Ka8lNI;p4|np>{;U!W65{eMl*%$TE4_?3j1$s-XlN% zZarGkH?itBQjIW-05jwY<%{AhSkVzmU1iY8FF2Ls zvO_T&>k5ZBW=n3kkr^Qg0mp|XBPohX7nBsBdfXQh z^OBOqE(EU>XYNPrW37}0qOV|3z8VpKFSQI=3=BE zKZ?R*g8;i4s8b{yQGmtDF^558VXl8FCu#Nr7U3Z1;3B+>weWYFgxDj~HqT?a75Bes zE8cG}ZzA6&ilz|UL*SgIBe+1=Xf2erP@_zQIqnzwx}Gl`H0UZg})b`J0K#giG&wNyYPqa!h| zo1ZD(+?X@$|L*CW?fNE&5uOKqYd<^pmzQ>)n|W-l^Z2a~9hiEt;n`x9kjzq(jp79K zG7A^fx9Yt#il9r&!29MZh5l-|k0;%eVcUDVO+rKjzTxW!vZbSk$40%ivw(s2cOB`&<@}pZYbqE1+Iqinf03%v zJNaKVXU_;{|Dvy2iUJG{)jMM1V6-=TAmxvXDsjQ-JPu|86MTLXaQ9rxulg*-?~hE@ z*;En1r~B$AFFL-o)Ydl6(-D2O^d}0)Z4&sw-Od=ziB)|>EZ-`+*0%R^c@&^rFaP|B z``KAtSuvDWn4-qkPHdu$JI#q>;d*uEGjJ4}2O?!^DV*QO7x zUmE`Ak@?GghU35G9u&Y0VizZ@f?lUn1=zSOJg+jno&Xe_z<2Axm(mRrj0sZ!R#PXL zU;sxj+vrp@O#zO0+nd~YjCskDE5?&Zc`@wmUTt=A2q3XYd=E~2E)ENn*=A-;tRpP6 zhJyec0tECAq)@!&#g89=kkifBz6r{{dJQp$L&7=8v>@Zl%c-P|xZ!(iSlUx*Y)iv4 zt-Ra2AR(wf2N@nXki=BIxsiKHj&zjT>J1)h>tZf9xK_p3xE;nYCZ& z{z6*(*WV^|--mC*ksrLUNAgi!sU6B*z<=~6e13&^R^)*xy>%P?%iAdYMfvR6{~cFc zU3Up!Jq9C|0?WRC0F`N)e&v@#fOv5XWPp@8!yz#8det56f1Q`GFQ*(IqzE~JVbTFX z44UN7`F?7kClj5pK5RN`aCycLv;cPoc78z%5X}I8uCtq8m6MFF zvPskShjKxVp2pWcJLAy}xViKc5X;!^_TXT%i+Tljm99<@aYtd^ee|xn0&X6LZ!yCzkN>cxFPNBtmu}PX&xhoXWFUWk7d@94emkzB zajfvzlE_`SV~dC%$b1dU4We=F#{1sveMc(@0_o34Z5E11S5LBR9WGQW?EUjMXvhs> zj#&x;K_tO?N@UVl1S|c?f3jL&+y|h{XG&WDVt47w9I4LI3azk=HwA*Kli~8(U5*hf z(g!{Z7d<_`niQ&&z-Cpy>toM)QC8c(0d?QQ^C+KRbDzcl4W!sm>*G71AO?=^-{}vZ zg1{gkJ|C9b><$A_-Z21~V=3~e(d5|Eb_YsfWf@m}z3W^MA;$m-2v%>?JUA)~QXvH! z)I;#%Bmphuiy$bTobbJF_zxMcH*elt;xZfnpUm3E$n%@3lbZ&`*k6MWAO|wj!(wp0 zL)`=EhfkJ@S#2y8Mu&?MOk$R<+v;kWzR`q5r$3~5m#9obT05s&3l{heA}n^Z)@xr~ ze_dF5x*w8fZ9$s(EEr5bKPXhd+;@fimrhU{OJsONKWx5Mf|D-gD z=ewy}bwkp_YMxQL_%mgOaW?@iDF<6T(uOM67e~n?^n*)z|xX%!LNeP%A>-J z^WTP--aXszekRxbAzZnvrO4ZB`s%8W{;DVBp#2n=(RF9C+ z`~<7}JZW7=^NuyQt*y<1TB~NaP<67%LZZ9UDLCD^<8N?qBz9(JWMIHcH>% z$FK6+i}8!!zkh917^`QBJEcY|%eh)KHK8^HnAtAN{QhZj6dXL4xSktZ_S_tapBU*f zF1;8Bnkfs;9V}$di(j7BFv8)Cl(CZE^c=ilu?NM>wI2qf)iTq?eZ2pjjdyvSMn3Vq z{?pm^Y82<=;a*QuOHs(kR%eVCC(!r>IWyr^q++Z)le?D_vV zy6$i`-!|HTqEuqls1cj0ioF%FVn--S5o*#3oAQ=!@OYf!Cx$Lciiv(IrJh33>Ku z6&h5&Kb}x4!HyY+Iy7;R&<}i^Z;1I~cJ#ub+GO0ptfqPVo?+M^ai&VExG)5iC z+Gm6YA9~`pv>7leHSfkgsGID_7iq&t10X({PYs8KY=}M9%jUj5Pf0AV&*f_V_=*m! zRm#~}%%w+Z%K3a6O8FY{pmsx{MA~cBJFYd za4)(yccAp*M?qdHPh{BSB&DvmHi4gd|q2fCJlnrk1@L#J&##U=a#suz+(OJ)YnGU^W|JgkFtbRnG%)Qk{t5aGZ# zDq%u!Cz8DaOfT$Ro5t%47+1Wjt^=&sSgsGc|IMWW0lNz~YtLIWor{{T=-3_fPLvj0 zyf>_!W_}Cw316uPtB!$uLQoQfgdEd!Cln_ECzY93mrrm00wVl=jz?HxcT&n<*VhVU z(;j9s9jlhDRD7!RJEZk&!x;BO8t7On=&Z;o4TZmuq311@GvqZE-zUpQ=q zDlrkMdCgBdHF)nvl)vXR>g+X}<>mPz!<#VZyi+CbzkH&z5OBE8(tPo|!G#G;0FHWV zJc&l|uKe2F2fMYJaNXkjUm82Tq9s+s=uo#;QO0aUq)4A+o zz-F?%D=b!hz8(64Q+(R7N1s{jYP0vx$ntVGg*NkC!1-|yx6UB5 zyzEj|!PT2jV(AbU@7L2b_g&7(857lb!+T(_dg#X&cnh#XlIOqt6N$k8zR2FZ-}0hG z0Nwf1=F_b|If?ho3RoL-Q}qkH+qe$RQ%p87ZWQQJ!W;KVf$_C%6zx$H-#*>m$^=;3Gnwn6-@t@7l z%7c}WnPC>to#vNV3(2t`tQ$O&F%N?T-uwFg1zM)1fE)3fHTkRV8{i*}Q%8WUIi%-L zZ?7O3=eiaHw(&JSPGSo0*RrW+tP|`ucxoFJU5?&}J1?MU-m5v@zplKw z2Bfa7_dNG!rxspYktxuqaE!{WV}an3_A@H|iYgY%G@k#ESvG3Dvxk}&Do{CxU%}Ga%Qlr>e@{0j@XUTEXSOX@VGCC$o-G%r_!hs@MdrxT z6MTB9RX&F5bXM?ag+S`no+OQD*(+h?S>8N?$P-zNhzAP-t~8{ru+mQP&#UzmI9a+` zf&z#dD(B@(b; zsjBtr{OFAN$v#{}mhfCw1uIuO^>|uKui|qRYKqb38T3MMm zI_klvG?<5(>}V=2a?X`ZMgiNc7EqjLyq>7uZ@RgT^*{Po%cq0V@++|0WmF`0M!Gc2 zC0jSVL)ZrTux_-Us-61b0?G!(fN`^mrMGPbn$h^nm;)h1m6I|&wHv)9D%sJ~&(8;X z4097>b7-IiA8*_VS5Go&RPKBHFd(2Wx%0AD@U$t*T(p9vE(* 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� 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 z

NsIoR2i(6#9a`kBuI-JpqU9+r>Y{*!I?BB__$ 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 literal 0 HcmV?d00001 From a2dd1e6ee5d9d07a3fd3eb337c2c9db9d6ce9478 Mon Sep 17 00:00:00 2001 From: Peter Emke Date: Wed, 13 May 2026 16:07:06 +0200 Subject: [PATCH 3/7] =?UTF-8?q?Changes=20for=20PR#5542=20#1=20=20Translate?= =?UTF-8?q?=20all=20comments=20to=20English=20#2=20=20Use=20const=20refere?= =?UTF-8?q?nce=20and=20member=20initializer=20list=20in=20constructors=20#?= =?UTF-8?q?3=20=20Explicit=20{}=20initialization=20for=20global=20arrays?= =?UTF-8?q?=20(clarity)=20#4=20=20Explicit=20{}=20initialization=20for=20g?= =?UTF-8?q?lobal=20int=20variables=20(clarity)=20#5=20=20Use=20auto&=20dev?= =?UTF-8?q?=20and=20DEVICE=5FTYPE=5FSERIAL=20in=20PLUGIN=5FDEVICE=5FADD=20?= =?UTF-8?q?#6=20=20Use=20const=20variables=20for=20serial=20port/pins=20fr?= =?UTF-8?q?om=20CONFIG=20#7=20=20Add=20bounds=20checks=20before=20array=20?= =?UTF-8?q?index=20access=20#8=20=20Replace=20millis()=20arithmetic=20with?= =?UTF-8?q?=20timePassedSince()=20#9=20=20Add=20bounds=20check=20at=20top?= =?UTF-8?q?=20of=20D0=20read=20loop=20#11=20Replace=20C-style=20casts=20wi?= =?UTF-8?q?th=20static=5Fcast<>=20#12=20Pre-calculate=20scale=20factor=20(?= =?UTF-8?q?powf)=20in=20state=2032,=20not=20per=20value=20#13=20Declare=20?= =?UTF-8?q?loop=20variable=20outside=20scope=20for=20use=20in=20debug=20lo?= =?UTF-8?q?g=20#14=20Remove=20hardcoded=20serial=20pins=20=E2=80=94=20port?= =?UTF-8?q?=20now=20configured=20via=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/_P155_Smartmeter.ino | 661 ++++++++++++++++++++------------------- 1 file changed, 340 insertions(+), 321 deletions(-) diff --git a/src/_P155_Smartmeter.ino b/src/_P155_Smartmeter.ino index 3de27e7836..1ce6995486 100644 --- a/src/_P155_Smartmeter.ino +++ b/src/_P155_Smartmeter.ino @@ -6,26 +6,27 @@ // ######################## Plugin 155: Energy - Smartmeter ######################## // ####################################################################################################### // -// Modelle: -// 0 = D0 (IEC 62056-21, 7E1, 9600 Baud) -// 1 = SML (hardcodierte posData je Hersteller) -// 2 = DTZ541 -// 3 = SML-Auto (dynamisches TL-Parsing, herstellerunabhängig) +// Models: +// 0 = D0 (IEC 62056-21, 7E1, 9600 Baud) +// 1 = SML (hardcoded posData per manufacturer, e.g. DD3) +// 2 = DTZ541 (Holley DTZ541) +// 3 = SML-Auto (dynamic TL-parsing, manufacturer-independent) // -// SML-Auto Funktionsweise: -// Nach der OBIS-Kennung enthält jeder SML-ListEntry folgende Felder, -// jeweils eingeleitet durch ein TL-Byte (Type-Length): +// SML-Auto operation: +// After the OBIS code, each SML-ListEntry contains these fields, +// each preceded by a TL-byte (Type-Length): // Status | Time | Unit | Scaler (int8) | Value -// TL-Byte: Bits 7-4 = Typ (5=int, 6=uint, 7=Liste, 0=optional) -// Bits 3-0 = Gesamtlänge inkl. TL-Byte (0 = nicht vorhanden) -// Für Listen (Typ 7): Bits 3-0 = Anzahl Kindelemente + 1 -// SML-Auto liest diese Felder dynamisch → funktioniert bei allen -// SML-konformen Zählern unabhängig vom Hersteller. +// TL-byte: Bits 7-4 = Type (5=int signed, 6=uint, 7=list, 0=optional) +// Bits 3-0 = Total length incl. TL-byte (0 = field absent) +// For lists (Type 7): Bits 3-0 = number of child elements (direct) +// SML-Auto reads these fields dynamically, works with all SML-compliant +// meters regardless of manufacturer. + // ####################################################################################################### #define PLUGIN_155 #define PLUGIN_ID_155 155 -#define PLUGIN_NAME_155 "SML - Smartmeter [Testing]" +#define PLUGIN_NAME_155 "SML - Smartmeter" #define P155_MODEL PCONFIG(0) #define P155_MODEL_LABEL PCONFIG_LABEL(0) @@ -45,11 +46,12 @@ #define P155_NR_OUTPUT_OPTIONS_MODEL0 6 #define P155_NR_OUTPUT_OPTIONS_MODEL1 13 // SML (DD3 etc.) #define P155_NR_OUTPUT_OPTIONS_MODEL2 4 // Holley DTZ541 -#define P155_NR_OUTPUT_OPTIONS_MODEL3 13 // SML-Auto (gleiche OBIS wie Model1) +#define P155_NR_OUTPUT_OPTIONS_MODEL3 13 // SML-Auto (same OBIS as Model 1) #define P155_QUERY1_CONFIG_POS 1 -#define P155_RX_BUFFER 64 // vergrößert für 64-bit Werte +#define P155_RX_BUFFER 64 // enlarged for 64-bit values -// OBIS-Kennung Indizes +// OBIS index defines - index 0 is an unused placeholder so that +// the #define constants (1-based) map directly to array indices. #define Q3D_TOTAL_ACTIVE_ENERGY 1 #define Q3D_POWER_L1 2 #define Q3D_POWER_L2 3 @@ -87,126 +89,124 @@ bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len); void p155_deleteValues(unsigned int model); // ============================================================ -// Datenstrukturen +// Data structures // ============================================================ + struct p155_dataStructD0 { - String p155_rxID = "x-x:x.x.x*x"; + String p155_rxID; float value; - p155_dataStructD0(String xID, float xvalue) - { - p155_rxID = xID; - value = xvalue; - } + p155_dataStructD0(const String &xID, float xvalue) : p155_rxID(xID), value(xvalue) {} }; p155_dataStructD0 p155_myDataD0[P155_NR_OUTPUT_OPTIONS_MODEL0] = { - p155_dataStructD0("x-x:x.x.x*x", 0.0), - p155_dataStructD0("1-0:1.8.0*255", 0.0), // Total_Active_Energy_Consumption - p155_dataStructD0("1-0:21.7.0*255", 0.0), // Power L1 - p155_dataStructD0("1-0:41.7.0*255", 0.0), // Power L2 - p155_dataStructD0("1-0:61.7.0*255", 0.0), // Power L3 - p155_dataStructD0("1-0:1.7.0*255", 0.0) // Power L123 + p155_dataStructD0("x-x:x.x.x*x", 0.0f), // [0] placeholder + p155_dataStructD0("1-0:1.8.0*255", 0.0f), // [1] Total active energy import + p155_dataStructD0("1-0:21.7.0*255", 0.0f), // [2] Power L1 + p155_dataStructD0("1-0:41.7.0*255", 0.0f), // [3] Power L2 + p155_dataStructD0("1-0:61.7.0*255", 0.0f), // [4] Power L3 + p155_dataStructD0("1-0:1.7.0*255", 0.0f), // [5] Power L123 }; struct p155_dataStructSML { - int posData; // Bytes nach OBIS bis Wert - float factor; // Skalierungsfaktor + int posData; // Bytes from OBIS to value (hardcoded models) + float factor; // Scaling factor (hardcoded models) byte p155_rxOrbis[6]; float value; + p155_dataStructSML(int xposData, float xfactor, byte xOrbis[6], float xvalue) + : posData(xposData), factor(xfactor), value(xvalue) { - posData = xposData; - factor = xfactor; for (int i = 0; i < 6; i++) p155_rxOrbis[i] = xOrbis[i]; - value = xvalue; } }; -// OBIS-Kennzahlen +// OBIS codes byte p155_rxOrbis0[6] = {0, 0, 0, 0, 0, 0}; -byte p155_rxOrbis1[6] = {1, 0, 1, 8, 0, 255}; // 1-0:1.8.0 Bezug gesamt -byte p155_rxOrbis2[6] = {1, 0, 21, 7, 0, 255}; // 1-0:21.7.0 Wirkleistung L1 -byte p155_rxOrbis3[6] = {1, 0, 41, 7, 0, 255}; // 1-0:41.7.0 Wirkleistung L2 -byte p155_rxOrbis4[6] = {1, 0, 61, 7, 0, 255}; // 1-0:61.7.0 Wirkleistung L3 -byte p155_rxOrbis5[6] = {1, 0, 16, 7, 0, 255}; // 1-0:16.7.0 Wirkleistung gesamt -byte p155_rxOrbis6[6] = {1, 0, 2, 8, 0, 255}; // 1-0:2.8.0 Einspeisung gesamt -byte p155_rxOrbis7[6] = {1, 0, 32, 7, 0, 255}; // 1-0:32.7.0 Spannung L1 -byte p155_rxOrbis8[6] = {1, 0, 52, 7, 0, 255}; // 1-0:52.7.0 Spannung L2 -byte p155_rxOrbis9[6] = {1, 0, 72, 7, 0, 255}; // 1-0:72.7.0 Spannung L3 -byte p155_rxOrbis10[6] = {1, 0, 31, 7, 0, 255}; // 1-0:31.7.0 Strom L1 -byte p155_rxOrbis11[6] = {1, 0, 51, 7, 0, 255}; // 1-0:51.7.0 Strom L2 -byte p155_rxOrbis12[6] = {1, 0, 71, 7, 0, 255}; // 1-0:71.7.0 Strom L3 - -// Model 1: SML (DD3 etc.) – posData herstellerspezifisch +byte p155_rxOrbis1[6] = {1, 0, 1, 8, 0, 255}; // 1-0:1.8.0 Total import +byte p155_rxOrbis2[6] = {1, 0, 21, 7, 0, 255}; // 1-0:21.7.0 Power L1 +byte p155_rxOrbis3[6] = {1, 0, 41, 7, 0, 255}; // 1-0:41.7.0 Power L2 +byte p155_rxOrbis4[6] = {1, 0, 61, 7, 0, 255}; // 1-0:61.7.0 Power L3 +byte p155_rxOrbis5[6] = {1, 0, 16, 7, 0, 255}; // 1-0:16.7.0 Total power +byte p155_rxOrbis6[6] = {1, 0, 2, 8, 0, 255}; // 1-0:2.8.0 Total export +byte p155_rxOrbis7[6] = {1, 0, 32, 7, 0, 255}; // 1-0:32.7.0 Voltage L1 +byte p155_rxOrbis8[6] = {1, 0, 52, 7, 0, 255}; // 1-0:52.7.0 Voltage L2 +byte p155_rxOrbis9[6] = {1, 0, 72, 7, 0, 255}; // 1-0:72.7.0 Voltage L3 +byte p155_rxOrbis10[6] = {1, 0, 31, 7, 0, 255}; // 1-0:31.7.0 Current L1 +byte p155_rxOrbis11[6] = {1, 0, 51, 7, 0, 255}; // 1-0:51.7.0 Current L2 +byte p155_rxOrbis12[6] = {1, 0, 71, 7, 0, 255}; // 1-0:71.7.0 Current L3 + +// Model 1: SML (DD3 etc.) - hardcoded byte positions p155_dataStructSML p155_myDataSML[P155_NR_OUTPUT_OPTIONS_MODEL1] = { - p155_dataStructSML(0, 1.0, p155_rxOrbis0, 0.0), - p155_dataStructSML(11, 0.0001, p155_rxOrbis1, 0.0), // kWh - p155_dataStructSML(7, 1.0, p155_rxOrbis2, 0.0), // W - p155_dataStructSML(7, 1.0, p155_rxOrbis3, 0.0), - p155_dataStructSML(7, 1.0, p155_rxOrbis4, 0.0), - p155_dataStructSML(7, 1.0, p155_rxOrbis5, 0.0), - p155_dataStructSML(7, 0.0001, p155_rxOrbis6, 0.0), // kWh - p155_dataStructSML(7, 0.1, p155_rxOrbis7, 0.0), // V - p155_dataStructSML(7, 0.1, p155_rxOrbis8, 0.0), - p155_dataStructSML(7, 0.1, p155_rxOrbis9, 0.0), - p155_dataStructSML(7, 0.01, p155_rxOrbis10, 0.0), // A - p155_dataStructSML(7, 0.01, p155_rxOrbis11, 0.0), - p155_dataStructSML(7, 0.01, p155_rxOrbis12, 0.0), + p155_dataStructSML(0, 1.0f, p155_rxOrbis0, 0.0f), + p155_dataStructSML(11, 0.0001f, p155_rxOrbis1, 0.0f), // kWh + p155_dataStructSML(7, 1.0f, p155_rxOrbis2, 0.0f), // W + p155_dataStructSML(7, 1.0f, p155_rxOrbis3, 0.0f), + p155_dataStructSML(7, 1.0f, p155_rxOrbis4, 0.0f), + p155_dataStructSML(7, 1.0f, p155_rxOrbis5, 0.0f), + p155_dataStructSML(7, 0.0001f, p155_rxOrbis6, 0.0f), // kWh + p155_dataStructSML(7, 0.1f, p155_rxOrbis7, 0.0f), // V + p155_dataStructSML(7, 0.1f, p155_rxOrbis8, 0.0f), + p155_dataStructSML(7, 0.1f, p155_rxOrbis9, 0.0f), + p155_dataStructSML(7, 0.01f, p155_rxOrbis10, 0.0f), // A + p155_dataStructSML(7, 0.01f, p155_rxOrbis11, 0.0f), + p155_dataStructSML(7, 0.01f, p155_rxOrbis12, 0.0f), }; -// Model 2: DTZ541 – andere posData-Werte +// Model 2: DTZ541 - different byte positions p155_dataStructSML p155_myDataDTZ[P155_NR_OUTPUT_OPTIONS_MODEL2] = { - p155_dataStructSML(0, 1.0, p155_rxOrbis0, 0.0), - p155_dataStructSML(18, 0.0001, p155_rxOrbis1, 0.0), - p155_dataStructSML(7, 1.0, p155_rxOrbis5, 0.0), - p155_dataStructSML(14, 0.0001, p155_rxOrbis6, 0.0), + p155_dataStructSML(0, 1.0f, p155_rxOrbis0, 0.0f), + p155_dataStructSML(18, 0.0001f, p155_rxOrbis1, 0.0f), + p155_dataStructSML(7, 1.0f, p155_rxOrbis5, 0.0f), + p155_dataStructSML(14, 0.0001f, p155_rxOrbis6, 0.0f), }; -// Model 3: SML-Auto – posData wird ignoriert, Scaler kommt aus Telegramm +// Model 3: SML-Auto - posData ignored, scaler read from telegram p155_dataStructSML p155_myDataAuto[P155_NR_OUTPUT_OPTIONS_MODEL3] = { - p155_dataStructSML(0, 1.0, p155_rxOrbis0, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis1, 0.0), // Scaler aus Telegramm - p155_dataStructSML(0, 1.0, p155_rxOrbis2, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis3, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis4, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis5, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis6, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis7, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis8, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis9, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis10, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis11, 0.0), - p155_dataStructSML(0, 1.0, p155_rxOrbis12, 0.0), + p155_dataStructSML(0, 1.0f, p155_rxOrbis0, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis1, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis2, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis3, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis4, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis5, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis6, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis7, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis8, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis9, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis10, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis11, 0.0f), + p155_dataStructSML(0, 1.0f, p155_rxOrbis12, 0.0f), }; // ============================================================ -// Zustandsvariablen +// State variables + // ============================================================ boolean p155_MyInit = false; uint8_t p155_step = 0; uint8_t p155_charsRead = 0; -char p155_rxBuffer[P155_RX_BUFFER]; -char p155_ringBuffer[8]; -byte p155_rxOrbis[6]; //|1|0|2|8|0|255 +char p155_rxBuffer[P155_RX_BUFFER]{}; +char p155_ringBuffer[8]{}; +byte p155_rxOrbis[6]{}; String p155_rxID; -int p155_anzBytes; -int p155_posDataAct; -int p155_registerAct; -int p155_outputOptionsAct; +int p155_anzBytes{}; +int p155_posDataAct{}; +int p155_registerAct{}; +int p155_outputOptionsAct{}; + +// SML-Auto state variables -// Zusätzliche Variablen für SML-Auto -int8_t p155_scaler = 0; // Scaler-Byte aus dem SML-Telegramm -uint8_t p155_autoSubState = 0; // Aktuell zu lesendes Feld (0=Status,1=Time,2=Unit,3=Scaler,4=Value) -uint8_t p155_skipBytes = 0; // Noch zu überspringende Bytes -uint8_t p155_autoDataTyp = 0; // SML-Datentyp des Value-Feldes (5=int,6=uint) -uint8_t p155_listElems = 0; // Verbleibende Kindelemente bei List-Typ (type=7) +float p155_scaleFactor = 1.0f; // 10^scaler, calculated once in state 32 +uint8_t p155_autoSubState = 0; // current field: 0=Status,1=Time,2=Unit,3=Scaler,4=Value +uint8_t p155_skipBytes = 0; // bytes still to skip +uint8_t p155_autoDataTyp = 0; // SML type of Value field (5=signed int, 6=uint) +uint8_t p155_listElems = 0; // remaining child elements for list type (type=7) // ============================================================ -// Plugin-Hauptfunktion +// Plugin main function // ============================================================ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) { @@ -216,17 +216,19 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) { case PLUGIN_DEVICE_ADD: { - Device[++deviceCount].Number = PLUGIN_ID_155; - Device[deviceCount].Type = DEVICE_TYPE_DUMMY; - Device[deviceCount].VType = Sensor_VType::SENSOR_TYPE_QUAD; - Device[deviceCount].Ports = 0; - Device[deviceCount].PullUpOption = false; - Device[deviceCount].InverseLogicOption = false; - Device[deviceCount].FormulaOption = true; - Device[deviceCount].ValueCount = P155_NR_OUTPUT_VALUES; - Device[deviceCount].SendDataOption = true; - Device[deviceCount].TimerOption = true; - Device[deviceCount].GlobalSyncOption = true; + + auto &dev = Device[++deviceCount]; + dev.Number = PLUGIN_ID_155; + dev.Type = DEVICE_TYPE_SERIAL; // enables serial port selector in UI + dev.VType = Sensor_VType::SENSOR_TYPE_QUAD; + dev.Ports = 0; + dev.PullUpOption = false; + dev.InverseLogicOption = false; + dev.FormulaOption = true; + dev.ValueCount = P155_NR_OUTPUT_VALUES; + dev.SendDataOption = true; + dev.TimerOption = true; + dev.GlobalSyncOption = true; break; } @@ -244,10 +246,9 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) if (i < P155_NR_OUTPUT_VALUES) { uint8_t choice = PCONFIG(i + P155_QUERY1_CONFIG_POS); - safe_strncpy( - ExtraTaskSettings.TaskDeviceValueNames[i], - p155_getQueryValueString(choice, model), - sizeof(ExtraTaskSettings.TaskDeviceValueNames[i])); + safe_strncpy(ExtraTaskSettings.TaskDeviceValueNames[i], + p155_getQueryValueString(choice, model), + sizeof(ExtraTaskSettings.TaskDeviceValueNames[i])); } else { @@ -284,32 +285,24 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) F("DTZ541"), F("SML-Auto"), }; - constexpr size_t nrOptions = NR_ELEMENTS(options_model); - FormSelectorOptions selector(nrOptions, options_model); + FormSelectorOptions selector(NR_ELEMENTS(options_model), options_model); selector.reloadonchange = true; selector.addFormSelector(F("Model Type"), P155_MODEL_LABEL, P155_MODEL); } { const uint8_t model = PCONFIG(0); - uint8_t outputOptions; - if (model == 1) - outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL1; - else if (model == 2) - outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL2; - else if (model == 3) - outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL3; - else - outputOptions = P155_NR_OUTPUT_OPTIONS_MODEL0; + uint8_t outputOptions = (model == 1) ? P155_NR_OUTPUT_OPTIONS_MODEL1 + : (model == 2) ? P155_NR_OUTPUT_OPTIONS_MODEL2 + : (model == 3) ? P155_NR_OUTPUT_OPTIONS_MODEL3 + : P155_NR_OUTPUT_OPTIONS_MODEL0; const __FlashStringHelper *options[outputOptions]; for (int i = 0; i < outputOptions; ++i) options[i] = p155_getQueryString(i, model); for (uint8_t i = 0; i < P155_NR_OUTPUT_VALUES; ++i) - { - const uint8_t pconfigIndex = i + P155_QUERY1_CONFIG_POS; - sensorTypeHelper_loadOutputSelector(event, pconfigIndex, i, outputOptions, options); - } + sensorTypeHelper_loadOutputSelector(event, i + P155_QUERY1_CONFIG_POS, + i, outputOptions, options); } success = true; break; @@ -340,29 +333,24 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) } p155_deleteValues(P155_MODEL); - if (P155_MODEL == 1) - p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL1; - else if (P155_MODEL == 2) - p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL2; - else if (P155_MODEL == 3) - p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL3; - else - p155_outputOptionsAct = P155_NR_OUTPUT_OPTIONS_MODEL0; + p155_outputOptionsAct = (P155_MODEL == 1) ? P155_NR_OUTPUT_OPTIONS_MODEL1 + : (P155_MODEL == 2) ? P155_NR_OUTPUT_OPTIONS_MODEL2 + : (P155_MODEL == 3) ? P155_NR_OUTPUT_OPTIONS_MODEL3 + : P155_NR_OUTPUT_OPTIONS_MODEL0; - CONFIG_PORT = 5; // Serial2 - CONFIG_PIN1 = 16; - CONFIG_PIN2 = 17; - P155_MySerial = new ESPeasySerial( - static_cast(CONFIG_PORT), CONFIG_PIN1, CONFIG_PIN2, false, P155_RX_BUFFER); + const int16_t serial_rx = CONFIG_PIN1; + const int16_t serial_tx = CONFIG_PIN2; + const ESPEasySerialPort port = static_cast(CONFIG_PORT); + P155_MySerial = new ESPeasySerial(port, serial_rx, serial_tx, false, P155_RX_BUFFER); if (P155_MySerial == nullptr) break; - uint32_t config = (P155_MODEL == 0) ? SERIAL_7E1 : SERIAL_8N1; - P155_MySerial->begin(P155_BAUDRATE, config); + const uint32_t serialConfig = (P155_MODEL == 0) ? SERIAL_7E1 : SERIAL_8N1; + P155_MySerial->begin(P155_BAUDRATE, serialConfig); p155_step = 0; - p155_scaler = 0; + p155_scaleFactor = 1.0f; p155_autoSubState = 0; p155_skipBytes = 0; p155_autoDataTyp = 0; @@ -370,19 +358,20 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) p155_MyInit = true; success = true; - String log = F("Smartmeter: Init="); - log += event->TaskIndex; - log += F(" Model="); - log += P155_MODEL; - log += F(" Port="); - log += CONFIG_PORT; - log += F(" RX="); - log += CONFIG_PIN1; - log += F(" TX="); - log += CONFIG_PIN2; - log += F(" Baud="); - log += P155_BAUDRATE; - addLogMove(LOG_LEVEL_INFO, log); + if (loglevelActiveFor(LOG_LEVEL_INFO)) + { + String log = F("Smartmeter: Init="); + log += event->TaskIndex; + log += F(" Model="); + log += P155_MODEL; + log += F(" Port="); + log += (int)port; + log += F(" RX="); + log += serial_rx; + log += F(" TX="); + log += serial_tx; + addLogMove(LOG_LEVEL_INFO, log); + } break; } @@ -394,11 +383,8 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) delete P155_MySerial; P155_MySerial = nullptr; } - - p155_deleteValues(0); - p155_deleteValues(1); - p155_deleteValues(2); - p155_deleteValues(3); + for (int m = 0; m <= 3; m++) + p155_deleteValues(m); break; } @@ -430,20 +416,19 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) } // ============================================================ -// Hilfsfunktionen +// Helper functions // ============================================================ - float p155_readVal(uint8_t query, unsigned int model) { - if (model == 0) + if (model == 0 && query < P155_NR_OUTPUT_OPTIONS_MODEL0) return p155_myDataD0[query].value; - else if (model == 1) + if (model == 1 && query < P155_NR_OUTPUT_OPTIONS_MODEL1) return p155_myDataSML[query].value; - else if (model == 2) + if (model == 2 && query < P155_NR_OUTPUT_OPTIONS_MODEL2) return p155_myDataDTZ[query].value; - else if (model == 3) + if (model == 3 && query < P155_NR_OUTPUT_OPTIONS_MODEL3) return p155_myDataAuto[query].value; - return 0; + return 0.0f; } unsigned int p155_getRegister(uint8_t query, uint8_t model) @@ -528,7 +513,7 @@ const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model) return F("Power Total (W)"); } } - // SML / SML-Auto – gleiche OBIS-Beschriftungen + // SML / SML-Auto –same OBIS-Names else if (model == 1 || model == 3) { switch (query) @@ -639,33 +624,32 @@ const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model } // ============================================================ -// Serial-Handler: gemeinsam für SML, DTZ541 und SML-Auto +// Serial handler: shared for SML, DTZ541 and SML-Auto // ============================================================ void p155_handleSerialInSML(unsigned int model) { if (nullptr == P155_MySerial) { - addLog(LOG_LEVEL_INFO, F("SML: handleSerialIn nullptr")); + addLog(LOG_LEVEL_INFO, F("SML: Serial nullptr")); return; } - String log1 = F("SML: step="); - String logdata1 = F("SML: 1="); - String logdata2 = F("SML: 2="); - // ... (weitere Log-Strings wie bisher) - - unsigned long timeOut = millis() + 100; + const unsigned long start = millis(); + size_t available = P155_MySerial->available(); - while (P155_MySerial->available() && millis() < timeOut) + while (available && timePassedSince(start) < 10) // while (P155_MySerial->available() && timePassedSince(start) < 100) { byte b = P155_MySerial->read(); - - // Ringbuffer für Startsequenz-Erkennung + available--; + if (available == 0) + { + available = P155_MySerial->available(); + } + // Ring buffer for SML start-sequence detection: 1B 1B 1B 1B 01 01 01 01 for (int i = 7; i > 0; i--) p155_ringBuffer[i] = p155_ringBuffer[i - 1]; p155_ringBuffer[0] = b; - // SML-Startsequenz: 1B 1B 1B 1B 01 01 01 01 if ((p155_ringBuffer[0] == 0x01) && (p155_ringBuffer[1] == 0x01) && (p155_ringBuffer[2] == 0x01) && (p155_ringBuffer[3] == 0x01) && (p155_ringBuffer[4] == 0x1B) && (p155_ringBuffer[5] == 0x1B) && @@ -676,7 +660,7 @@ void p155_handleSerialInSML(unsigned int model) p155_registerAct = 0; p155_anzBytes = 0; p155_posDataAct = 0; - p155_scaler = 0; + p155_scaleFactor = 1.0f; p155_autoSubState = 0; p155_skipBytes = 0; p155_listElems = 0; @@ -685,9 +669,9 @@ void p155_handleSerialInSML(unsigned int model) switch (p155_step) { // ------------------------------------------------------- - // Gemeinsame States: OBIS-Kennung finden (alle SML-Models) + // States 11-13: find OBIS code (all SML models) // ------------------------------------------------------- - case 11: // Startzeichen 0x77 finden + case 11: // find ListEntry tag 0x77 if (b == 0x77) { p155_step = 12; @@ -695,12 +679,13 @@ void p155_handleSerialInSML(unsigned int model) } break; - case 12: // Längen-Byte: muss 0x07 sein + case 12: // length byte must be 0x07 (6 OBIS bytes + TL) p155_step = (b == 0x07) ? 13 : 11; break; - case 13: // 6 OBIS-Bytes sammeln - if (p155_charsRead <= 5) + case 13: // collect 6 OBIS bytes + + if (p155_charsRead < 6) p155_rxOrbis[p155_charsRead++] = b; if (p155_charsRead >= 6) @@ -708,7 +693,7 @@ void p155_handleSerialInSML(unsigned int model) p155_charsRead = 0; p155_registerAct = 0; - // OBIS-Kennung in Datentabelle suchen + // search OBIS Number in table for (int i = 1; i < p155_outputOptionsAct; i++) { byte *orbis = nullptr; @@ -721,51 +706,54 @@ void p155_handleSerialInSML(unsigned int model) if (orbis && p155_byteArrayCompare(p155_rxOrbis, 6, orbis, 6)) { - p155_registerAct = i; - if (model != 3) - p155_posDataAct = (model == 1) - ? p155_myDataSML[i].posData - : p155_myDataDTZ[i].posData; + + if (i < p155_outputOptionsAct) + { + p155_registerAct = i; + if (model != 3) + p155_posDataAct = (model == 1) ? p155_myDataSML[i].posData + : p155_myDataDTZ[i].posData; + } break; } } if (p155_registerAct != 0) { - // Weiter je nach Model if (model == 3) { - // SML-Auto: dynamisches TL-Parsing starten - p155_scaler = 0; - p155_autoSubState = 0; // beginnt mit Status-Feld + p155_scaleFactor = 1.0f; + p155_autoSubState = 0; p155_skipBytes = 0; p155_listElems = 0; p155_step = 30; } else { - // Hardcodiertes Model: direkt zu posData-Auswertung p155_step = 20; } p155_charsRead = 0; } else { - p155_step = 11; // Kennung nicht gefunden, weiter suchen + p155_step = 11; // Not found so continue searching } } break; // ------------------------------------------------------- - // States 20-21: Hardcodierte Models (SML, DTZ541) + // States 20-21: hardcoded models (SML, DTZ541) // ------------------------------------------------------- - case 20: // Bytes bis posData lesen, dann Datentyp ermitteln - p155_rxBuffer[p155_charsRead++] = b; + case 20: // read bytes up to posData, last byte = type byte + // bounds check + if (p155_charsRead < P155_RX_BUFFER) + p155_rxBuffer[p155_charsRead++] = b; + if (p155_charsRead >= p155_posDataAct) { - // BUGFIX: ltyp = b (das zuletzt gelesene Byte), NICHT ltyp = 0 byte ltyp = b; p155_anzBytes = 4; // Default + if (ltyp == 0x52 || ltyp == 0x62) p155_anzBytes = 1; // 8-bit else if (ltyp == 0x53 || ltyp == 0x63) @@ -774,43 +762,46 @@ void p155_handleSerialInSML(unsigned int model) p155_anzBytes = 4; // 32-bit else if (ltyp == 0x59 || ltyp == 0x69) p155_anzBytes = 8; // 64-bit + p155_step = 21; } break; - case 21: // Nutzdaten sammeln - p155_rxBuffer[p155_charsRead++] = b; + case 21: // collect data bytes + // bounds check + if (p155_charsRead < P155_RX_BUFFER) + p155_rxBuffer[p155_charsRead++] = b; + if (p155_charsRead >= p155_posDataAct + p155_anzBytes) { p155_parseValuesSML(model); p155_step = 11; p155_charsRead = 0; } - else if (p155_charsRead >= P155_RX_BUFFER - 1) + else if (p155_charsRead >= P155_RX_BUFFER) { - // Abbruch: Buffer-Überlauf - p155_step = 11; + p155_step = 11; // buffer overflow - abort } break; // ------------------------------------------------------- - // States 30-33: SML-Auto – dynamisches TL-Parsing + // States 30-33: SML-Auto - dynamic TL parsing // - // TL-Byte Format: - // Bits 7-4: Typ (0=optional, 5=int signed, 6=uint, 7=Liste) - // Bits 3-0: Gesamtlänge inkl. TL-Byte - // Primitive Typen: Datenbytes = bits3-0 - 1 - // Listen (Typ 7): Kindelemente = bits3-0 - 1 (NICHT Byte-Anzahl!) + // TL-byte format: + // Bits 7-4: Type (0=optional/absent, 5=signed int, 6=uint, 7=list) + // Bits 3-0: Total length incl. TL-byte + // Primitive: dataBytes = bits3-0 - 1 + // List (Type 7): child count = bits3-0 (direct, NOT length-1) // // autoSubState: 0=Status, 1=Time, 2=Unit, 3=Scaler, 4=Value // ------------------------------------------------------- - case 30: // TL-Byte des aktuellen Feldes lesen + case 30: // read TL-byte of current field { - uint8_t tlLen = (b & 0x0F); // Gesamtlänge inkl. TL - uint8_t tlTyp = (b >> 4) & 0x07; // Datentyp - uint8_t dataBytes = (tlLen > 0) ? (tlLen - 1) : 0; // Datenbytes (bei Primitiven) + uint8_t tlLen = (b & 0x0F); + uint8_t tlTyp = (b >> 4) & 0x07; + uint8_t dataBytes = (tlLen > 0) ? (tlLen - 1) : 0; - // Debug-Log: zeigt jeden TL-Byte (nur bei Log-Level DEBUG aktiv) +#ifndef BUILD_NO_DEBUG if (loglevelActiveFor(LOG_LEVEL_DEBUG) && p155_registerAct > 0) { String tl = F("SML-TL: reg="); @@ -825,86 +816,87 @@ void p155_handleSerialInSML(unsigned int model) tl += dataBytes; addLogMove(LOG_LEVEL_DEBUG, tl); } +#endif if (p155_autoSubState < 3) { // Status (0), Time (1), Unit (2) if (tlTyp == 7) { - // Listen-Typ: bits3-0 = Anzahl Kindelemente direkt (NICHT Byte-Anzahl!) - // Beispiel: 72 = type7, 2 Kinder (62 01 + 65 xx xx xx xx fuer SML_Time) - uint8_t numElems = tlLen; - if (numElems == 0) + // List type: bits3-0 = direct child count (NOT byte length) + // e.g. 0x72: 2 children (typical SML_Time with timestamp) + if (tlLen == 0) { - p155_autoSubState++; // leere Liste → weiter + p155_autoSubState++; } else { - p155_listElems = numElems; + p155_listElems = tlLen; p155_step = 36; } } else if (dataBytes == 0) { - p155_autoSubState++; // Feld nicht vorhanden → weiter - // state 30 bleibt, liest nächstes TL + p155_autoSubState++; // Field not present → continue + // State 30 remains, reads next TL } else { p155_skipBytes = dataBytes; - p155_step = 31; // Bytes überspringen + p155_step = 31; // skip bytes } } else if (p155_autoSubState == 3) { - // Scaler-Feld + // Scaler field if (dataBytes == 0) { - p155_scaler = 0; // kein Scaler → Faktor 1 + p155_scaleFactor = 1.0f; // no scaler present p155_autoSubState++; - // state 30 bleibt } else { - // Scaler ist immer 1 Byte (int8) - p155_step = 32; + p155_step = 32; // read 1 scaler byte } } else if (p155_autoSubState == 4) { - // Value-Feld + // Value field if (dataBytes == 0) { - // Kein Wert → abbrechen p155_step = 11; - } + } // no value - abort else { p155_autoDataTyp = tlTyp; p155_anzBytes = dataBytes; p155_charsRead = 0; - p155_step = 33; // Wert-Bytes lesen + p155_step = 33; } } break; } - case 31: // Bytes überspringen (Status/Time/Unit, primitive Typen) + case 31: // skip bytes (primitive Status/Time/Unit) p155_skipBytes--; if (p155_skipBytes == 0) { p155_autoSubState++; - p155_step = 30; // nächstes TL-Byte lesen + p155_step = 30; // read next TL-Byte } break; - case 32: // Scaler-Byte lesen (int8, signed) - p155_scaler = (int8_t)b; + case 32: // read scaler byte (int8, signed) + { + const int8_t scalerRaw = b; + p155_scaleFactor = (scalerRaw != 0) ? powf(10.0f, (float)(scalerRaw)) : 1.0f; p155_autoSubState++; - p155_step = 30; // weiter zum Value-TL + p155_step = 30; // continue with Value-TL break; + } + + case 33: // collect value bytes - case 33: // Wert-Bytes sammeln if (p155_charsRead < P155_RX_BUFFER - 1) p155_rxBuffer[p155_charsRead++] = b; @@ -916,16 +908,11 @@ void p155_handleSerialInSML(unsigned int model) break; // ------------------------------------------------------- - // States 36-37: Listen-Typ (type=7) Kindelemente überspringen - // - // Benötigt für SML_Time mit Zeitstempel, z.B.: - // 72 62 01 65 xx xx xx xx (Liste mit 2 Kindelementen) - // - 72: Liste, 2-1=1 Kind → falsch! 72 hat 2 Kinder (secType + secValue) - // Korrekte Interpretation: bits3-0 - 1 = Anzahl Kinder - // 72 → 2-1=1 Kind? oder 2 Kinder? - // Praxis: State 36 liest TL-Byte jedes Kindes und überspringt seine Daten + // States 36-37: skip list type (type=7) child elements + // Required for SML_Time with timestamp, e.g.: + // 72 62 01 65 xx xx xx xx (list with 2 child elements) // ------------------------------------------------------- - case 36: // TL-Byte eines Listkind-Elements lesen + case 36: // read TL-byte of a list child element { uint8_t cLen = (b & 0x0F); uint8_t cTyp = (b >> 4) & 0x07; @@ -933,8 +920,8 @@ void p155_handleSerialInSML(unsigned int model) if (cTyp == 7) { - // Verschachtelte Liste: aktuelles Element durch seine Kinder ersetzen - p155_listElems = p155_listElems - 1 + (cLen > 0 ? cLen - 1 : 0); + // Nested list: replace current element with its children + p155_listElems = p155_listElems - 1 + (cLen > 0 ? cLen : 0); } else { @@ -942,7 +929,7 @@ void p155_handleSerialInSML(unsigned int model) if (cData > 0) { p155_skipBytes = cData; - p155_step = 37; // Daten überspringen, dann zurück zu 36 oder 30 + p155_step = 37; // skip Data, then back to 36 or 30 break; } } @@ -952,11 +939,10 @@ void p155_handleSerialInSML(unsigned int model) p155_autoSubState++; p155_step = 30; } - // sonst: weiter in State 36 für nächstes Kind - break; + break; // otherwise 36 } - case 37: // Daten eines Listkind-Elements überspringen + case 37: // skip data bytes of a list child element p155_skipBytes--; if (p155_skipBytes == 0) { @@ -967,7 +953,7 @@ void p155_handleSerialInSML(unsigned int model) } else { - p155_step = 36; // nächstes Kindelement + p155_step = 36; // next childelement } } break; @@ -984,8 +970,11 @@ void p155_handleSerialInSML(unsigned int model) } } // while serial available +#ifndef BUILD_NO_DEBUG + if (loglevelActiveFor(LOG_LEVEL_DEBUG)) { + String log1 = F("SML: step="); log1 += p155_step; log1 += F(" sub="); log1 += p155_autoSubState; @@ -993,26 +982,38 @@ void p155_handleSerialInSML(unsigned int model) log1 += p155_registerAct; addLogMove(LOG_LEVEL_DEBUG, log1); } +#endif } // ============================================================ -// D0-Serial-Handler (unverändert) +// D0 serial handler // ============================================================ void p155_handleSerialInD0() { if (nullptr == P155_MySerial) { - addLog(LOG_LEVEL_INFO, F("D0: handleSerialIn nullptr")); + addLog(LOG_LEVEL_INFO, F("D0: Serial nullptr")); return; } - String log1 = F("D0: Log="); - String logdata1 = F("D0: Data="); - unsigned long timeOut = millis() + 10; - while (P155_MySerial->available() && millis() < timeOut) + const unsigned long start = millis(); + size_t available = P155_MySerial->available(); + + while (available && timePassedSince(start) < 10) { + --available; + if (available == 0) + { + available = P155_MySerial->available(); + } + + // check bounds at the top of the loop + if (p155_charsRead >= P155_RX_BUFFER - 1) + { + p155_charsRead = 0; + } + char c = (char)P155_MySerial->read(); - logdata1 += c; if (c == '(') { @@ -1023,10 +1024,6 @@ void p155_handleSerialInD0() else if (c == ')') { p155_rxBuffer[p155_charsRead] = '\0'; - log1 += F(" ID="); - log1 += p155_rxID; - log1 += F(" val="); - log1 += String(p155_rxBuffer); if (p155_charsRead > 1) p155_parseValuesD0(); p155_charsRead = 0; @@ -1035,34 +1032,33 @@ void p155_handleSerialInD0() { p155_charsRead = 0; } - else if (p155_charsRead < P155_RX_BUFFER - 1) + else { p155_rxBuffer[p155_charsRead++] = c; } } - addLogMove(LOG_LEVEL_DEBUG, log1); - addLogMove(LOG_LEVEL_DEBUG, logdata1); } // ============================================================ -// Werte parsen: hardcodierte SML-Models (1, 2) +// Parse values: hardcoded SML models (1, 2) // ============================================================ void p155_parseValuesSML(unsigned int model) { - String log = F("SML Parse: reg="); - log += p155_registerAct; - log += F(" pos="); - log += p155_posDataAct; - - byte *orbis = (model == 1) - ? p155_myDataSML[p155_registerAct].p155_rxOrbis - : p155_myDataDTZ[p155_registerAct].p155_rxOrbis; + // bounds check before using p155_registerAct as array index + if (model == 1 && p155_registerAct >= P155_NR_OUTPUT_OPTIONS_MODEL1) + return; + if (model == 2 && p155_registerAct >= P155_NR_OUTPUT_OPTIONS_MODEL2) + return; + byte *orbis = (model == 1) ? p155_myDataSML[p155_registerAct].p155_rxOrbis + : p155_myDataDTZ[p155_registerAct].p155_rxOrbis; if (!p155_byteArrayCompare(p155_rxOrbis, 6, orbis, 6)) return; int lLen = p155_posDataAct; - byte lTyp = p155_rxBuffer[lLen - 1]; // BUGFIX: ltyp aus Buffer, nicht 0 + if (lLen < 1 || lLen >= P155_RX_BUFFER) + return; // bounds check: prevent lLen-1 underflow + byte lTyp = p155_rxBuffer[lLen - 1]; float lvalue = 0.0f; int8_t lint8; @@ -1076,74 +1072,83 @@ void p155_parseValuesSML(unsigned int model) { case 0x52: lint8 = p155_rxBuffer[lLen]; - lvalue = (float)lint8; + lvalue = lint8; break; // S8 case 0x53: lint16 = ((uint8_t)p155_rxBuffer[lLen] << 8) | (uint8_t)p155_rxBuffer[lLen + 1]; - lvalue = (float)lint16; + lvalue = lint16; break; // S16 case 0x55: lint32 = ((uint8_t)p155_rxBuffer[lLen] << 24) | ((uint8_t)p155_rxBuffer[lLen + 1] << 16) | ((uint8_t)p155_rxBuffer[lLen + 2] << 8) | (uint8_t)p155_rxBuffer[lLen + 3]; - lvalue = (float)lint32; + lvalue = lint32; break; // S32 + case 0x59: lint32 = ((uint8_t)p155_rxBuffer[lLen + 4] << 24) | // S64 → nur untere 32bit ((uint8_t)p155_rxBuffer[lLen + 5] << 16) | ((uint8_t)p155_rxBuffer[lLen + 6] << 8) | (uint8_t)p155_rxBuffer[lLen + 7]; - lvalue = (float)lint32; + lvalue = lint32; break; + case 0x62: luint8 = p155_rxBuffer[lLen]; - lvalue = (float)luint8; + lvalue = luint8; break; // U8 case 0x63: luint16 = ((uint8_t)p155_rxBuffer[lLen] << 8) | (uint8_t)p155_rxBuffer[lLen + 1]; - lvalue = (float)luint16; + lvalue = luint16; break; // U16 case 0x65: luint32 = ((uint8_t)p155_rxBuffer[lLen] << 24) | ((uint8_t)p155_rxBuffer[lLen + 1] << 16) | ((uint8_t)p155_rxBuffer[lLen + 2] << 8) | (uint8_t)p155_rxBuffer[lLen + 3]; - lvalue = (float)luint32; + lvalue = luint32; break; // U32 + case 0x69: luint32 = ((uint8_t)p155_rxBuffer[lLen + 4] << 24) | // U64 → untere 32bit ((uint8_t)p155_rxBuffer[lLen + 5] << 16) | ((uint8_t)p155_rxBuffer[lLen + 6] << 8) | (uint8_t)p155_rxBuffer[lLen + 7]; - lvalue = (float)luint32; + lvalue = luint32; break; } - float factor = (model == 1) ? p155_myDataSML[p155_registerAct].factor - : p155_myDataDTZ[p155_registerAct].factor; - + const float factor = (model == 1) ? p155_myDataSML[p155_registerAct].factor + : p155_myDataDTZ[p155_registerAct].factor; if (model == 1) p155_myDataSML[p155_registerAct].value = lvalue * factor; if (model == 2) p155_myDataDTZ[p155_registerAct].value = lvalue * factor; - log += F(" typ=0x"); - log += String(lTyp, HEX); - log += F(" val="); - log += lvalue; - addLogMove(LOG_LEVEL_DEBUG, log); +#ifndef BUILD_NO_DEBUG + if (loglevelActiveFor(LOG_LEVEL_DEBUG)) + { + String log = F("SML Parse: reg="); + log += p155_registerAct; + log += F(" typ=0x"); + log += String(lTyp, HEX); + log += F(" val="); + log += lvalue; + addLogMove(LOG_LEVEL_DEBUG, log); + } +#endif } // ============================================================ -// Werte parsen: SML-Auto (Model 3) +// Parse values: SML-Auto (Model 3) + // ============================================================ void p155_parseValuesSMLAuto() { - // FIX2: Bei >4 Bytes (z.B. int64) obere Bytes ignorieren, untere 4 nehmen - // (wie Model 1 – energy-Werte liegen im unteren 32-bit-Bereich) - int startByte = (p155_anzBytes > 4) ? (p155_anzBytes - 4) : 0; - int readBytes = (p155_anzBytes > 4) ? 4 : p155_anzBytes; + // For >4 bytes (e.g. int64), skip upper bytes, read lower 4 + const int startByte = (p155_anzBytes > 4) ? (p155_anzBytes - 4) : 0; + const int readBytes = (p155_anzBytes > 4) ? 4 : p155_anzBytes; uint32_t rawU = 0; for (int i = 0; i < readBytes; i++) @@ -1153,21 +1158,18 @@ void p155_parseValuesSMLAuto() if (p155_autoDataTyp == 5) // signed int { int32_t raw = (int32_t)rawU; - // Vorzeichenerweiterung nur nötig wenn < 4 Bytes gelesen if (readBytes == 1 && (rawU & 0x80)) raw |= (int32_t)0xFFFFFF00; else if (readBytes == 2 && (rawU & 0x8000)) raw |= (int32_t)0xFFFF0000; - lvalue = (float)raw; + lvalue = raw; } - else // unsigned (typ 6) oder unbekannt + else // unsigned (typ 6) or unkwnown { - lvalue = (float)rawU; + lvalue = rawU; } - float scaledValue = (p155_scaler != 0) - ? lvalue * powf(10.0f, (float)p155_scaler) - : lvalue; + const float scaledValue = lvalue * p155_scaleFactor; p155_myDataAuto[p155_registerAct].value = scaledValue; @@ -1181,8 +1183,8 @@ void p155_parseValuesSMLAuto() log += p155_anzBytes; log += F(" start="); log += startByte; - log += F(" scaler="); - log += p155_scaler; + log += F(" factor="); + log += p155_scaleFactor; log += F(" raw="); log += lvalue; log += F(" val="); @@ -1192,23 +1194,40 @@ void p155_parseValuesSMLAuto() } // ============================================================ -// D0 Werte parsen (unverändert) +// D0 parse values // ============================================================ void p155_parseValuesD0() { - String log = F("D0 Parse: ID="); - log += p155_rxID; - for (int i = 1; i < p155_outputOptionsAct; i++) + + int i = 1; + for (; i < p155_outputOptionsAct; i++) { if (p155_rxID == p155_myDataD0[i].p155_rxID) { p155_myDataD0[i].value = String(p155_rxBuffer).toFloat(); - log += F(" → val="); - log += p155_myDataD0[i].value; break; } } - addLogMove(LOG_LEVEL_DEBUG, log); + +#ifndef BUILD_NO_DEBUG + if (loglevelActiveFor(LOG_LEVEL_DEBUG)) + { + String log = F("D0 Parse: ID="); + log += p155_rxID; + if (i < p155_outputOptionsAct) + { + log += F(" reg="); + log += i; + log += F(" val="); + log += p155_myDataD0[i].value; + } + else + { + log += F(" (not found)"); + } + addLogMove(LOG_LEVEL_DEBUG, log); + } +#endif } bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len) @@ -1237,4 +1256,4 @@ void p155_deleteValues(unsigned int model) p155_myDataAuto[i].value = 0; } -#endif // USES_P155 +#endif // USES_P155 \ No newline at end of file From 8d6afa53068717f80c70d7142aab0fda72f34bfc Mon Sep 17 00:00:00 2001 From: Peter Emke Date: Wed, 13 May 2026 21:18:18 +0200 Subject: [PATCH 4/7] Changes for #5542 #1 Better description of models #2 reduce models to 2 #3 Logging nullptr with timer #4 use memcmp instead of long if #5 better check of lenght and memory access with functions --- docs/source/Plugin/P155.rst | 56 ++-- src/_P155_Smartmeter.ino | 496 +++++++++++------------------------- 2 files changed, 167 insertions(+), 385 deletions(-) diff --git a/docs/source/Plugin/P155.rst b/docs/source/Plugin/P155.rst index f904f07a49..050065f982 100644 --- a/docs/source/Plugin/P155.rst +++ b/docs/source/Plugin/P155.rst @@ -39,9 +39,9 @@ and older meters using the D0 protocol (IEC 62056-21). Tested devices: -* DD3 (SML meter, use model: SML) -* Holley DTZ541 (use model: DTZ541) -* Any SML-compliant meter (use model: SML-Auto) +* ebZ DD3 (use model: SML) +* Holley DTZ541 (use model: SML) +* Any SML-compliant meter (use model: SML) * Older meters with optical interface (use model: D0) Reading Head @@ -80,9 +80,6 @@ Configuration **Enabled** The device can be enabled or disabled. -Sensor -^^^^^^ - **Model Type** Select the protocol matching your meter: .. csv-table:: @@ -90,9 +87,7 @@ Sensor :widths: 8, 15, 20 "D0", "Older meters with optical interface","" - "SML", "DD3, EHZ and other SML meters","" - "DTZ541", "Holley DTZ541","" - "SML-Auto", "All SML-compliant meters", "Dynamic TL parsing, recommended" + "SML", "All SML-compliant meters", "Dynamic TL parsing, recommended" .. note:: @@ -104,15 +99,26 @@ Sensor * **Interval**: Recommended 1s for power values, 10s for energy values. -Output -^^^^^^ -Output values -""""""""""""" +Output +~~~~~~~~~ The available measurement values depend on the selected model. -SML and SML-Auto share the same OBIS codes: +D0: + +.. csv-table:: + :header: "#", "Value Name", "OBIS", "Unit", "Description" + :widths: 2, 12, 12, 4, 15 + + "1", "Consumption_kWh", "1-0:1.8.0\*255", "kWh", "Total import energy" + "2", "L1_W", "1-0:21.7.0\*255", "W", "Active power L1" + "3", "L2_W", "1-0:41.7.0\*255", "W", "Active power L2" + "4", "L3_W", "1-0:61.7.0\*255", "W", "Active power L3" + "5", "L123_W", "1-0:1.7.0\*255", "W", "Total active power" + +SML has the following OBIS codes but not any model sends every code: +You have to find out with testing. See, for example, the section on DTZ541 below, which has just 3 values to send. .. csv-table:: :header: "#", "Value Name", "OBIS", "Unit", "Description" @@ -131,19 +137,7 @@ SML and SML-Auto share the same OBIS codes: "11", "L2_A", "1-0:51.7.0", "A", "Current L2" "12", "L3_A", "1-0:71.7.0", "A", "Current L3" -\* SML-Auto delivers energy values in Wh. Enter ``%VALUE%/1000`` in the formula field to get kWh. - -D0: - -.. csv-table:: - :header: "#", "Value Name", "OBIS", "Unit", "Description" - :widths: 2, 12, 12, 4, 15 - - "1", "Consumption_kWh", "1-0:1.8.0\*255", "kWh", "Total import energy" - "2", "L1_W", "1-0:21.7.0\*255", "W", "Active power L1" - "3", "L2_W", "1-0:41.7.0\*255", "W", "Active power L2" - "4", "L3_W", "1-0:61.7.0\*255", "W", "Active power L3" - "5", "L123_W", "1-0:1.7.0\*255", "W", "Total active power" +\* SML delivers energy values in Wh. Enter ``%VALUE%/1000`` in the formula field to get kWh. DTZ541: @@ -156,20 +150,20 @@ DTZ541: "3", "Energy_FeedIn_kWh", "1-0:2.8.0", "kWh", "Total export energy" Indicators (recommended settings) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. csv-table:: :header: "Indicator", "Value Name", "Interval", "Formula", "Extra information" :widths: 12, 10, 5, 8, 20 - "Energy_Consumption_kWh", "Import_kWh", "10", "%VALUE%/1000", "SML-Auto only: Wh to kWh" - "Energy_FeedIn_kWh", "Export_kWh", "10", "%VALUE%/1000", "SML-Auto only: Wh to kWh" + "Energy_Consumption_kWh", "Import_kWh", "10", "%VALUE%/1000", "SML only: Wh to kWh" + "Energy_FeedIn_kWh", "Export_kWh", "10", "%VALUE%/1000", "SML only: Wh to kWh" "L123_W", "Power_W", "1", "", "No formula needed" "L1_V / L2_V / L3_V", "Voltage_V", "10", "", "" .. note:: - With **SML-Auto**, energy registers deliver the raw value in Wh (scaler is read + With **SML**, energy registers deliver the raw value in Wh (scaler is read automatically from the telegram). Enter ``%VALUE%/1000`` in the ESPEasy formula field to get kWh. Power values (W) require no formula. diff --git a/src/_P155_Smartmeter.ino b/src/_P155_Smartmeter.ino index 1ce6995486..74120e6896 100644 --- a/src/_P155_Smartmeter.ino +++ b/src/_P155_Smartmeter.ino @@ -7,20 +7,17 @@ // ####################################################################################################### // // Models: -// 0 = D0 (IEC 62056-21, 7E1, 9600 Baud) -// 1 = SML (hardcoded posData per manufacturer, e.g. DD3) -// 2 = DTZ541 (Holley DTZ541) -// 3 = SML-Auto (dynamic TL-parsing, manufacturer-independent) +// P155_MODEL_D0 = D0 (IEC 62056-21, 7E1, 9600 Baud) +// P155_MODEL_SML = SML (dynamic TL-parsing, works with all SML-compliant meters) // -// SML-Auto operation: +// SML operation: // After the OBIS code, each SML-ListEntry contains these fields, // each preceded by a TL-byte (Type-Length): // Status | Time | Unit | Scaler (int8) | Value // TL-byte: Bits 7-4 = Type (5=int signed, 6=uint, 7=list, 0=optional) // Bits 3-0 = Total length incl. TL-byte (0 = field absent) // For lists (Type 7): Bits 3-0 = number of child elements (direct) -// SML-Auto reads these fields dynamically, works with all SML-compliant -// meters regardless of manufacturer. +// The parser reads these fields dynamically - no hardcoded byte offsets. // ####################################################################################################### @@ -35,7 +32,11 @@ #define P155_QUERY3 PCONFIG(3) #define P155_QUERY4 PCONFIG(4) -#define P155_MODEL_DFLT 1 +// Model index defines +#define P155_MODEL_D0 0 +#define P155_MODEL_SML 1 + +#define P155_MODEL_DFLT P155_MODEL_SML #define P155_BAUDRATE 9600 #define P155_QUERY1_DFLT 1 #define P155_QUERY2_DFLT 3 @@ -43,10 +44,8 @@ #define P155_QUERY4_DFLT 0 #define P155_NR_OUTPUT_VALUES 4 -#define P155_NR_OUTPUT_OPTIONS_MODEL0 6 -#define P155_NR_OUTPUT_OPTIONS_MODEL1 13 // SML (DD3 etc.) -#define P155_NR_OUTPUT_OPTIONS_MODEL2 4 // Holley DTZ541 -#define P155_NR_OUTPUT_OPTIONS_MODEL3 13 // SML-Auto (same OBIS as Model 1) +#define P155_NR_OUTPUT_OPTIONS_D0 6 +#define P155_NR_OUTPUT_OPTIONS_SML 13 #define P155_QUERY1_CONFIG_POS 1 #define P155_RX_BUFFER 64 // enlarged for 64-bit values @@ -81,10 +80,11 @@ const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model unsigned int p155_getRegister(uint8_t query, uint8_t model); float p155_readVal(uint8_t query, unsigned int model); void p155_handleSerialInD0(); -void p155_handleSerialInSML(unsigned int model); +void p155_handleSerialInSML(); void p155_parseValuesD0(); -void p155_parseValuesSML(unsigned int model); -void p155_parseValuesSMLAuto(); +void p155_parseValuesSML(); +bool p155_readUint32(int startByte, int numBytes, uint32_t &result); +bool p155_readInt32(int startByte, int numBytes, int32_t &result); bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len); void p155_deleteValues(unsigned int model); @@ -99,7 +99,7 @@ struct p155_dataStructD0 p155_dataStructD0(const String &xID, float xvalue) : p155_rxID(xID), value(xvalue) {} }; -p155_dataStructD0 p155_myDataD0[P155_NR_OUTPUT_OPTIONS_MODEL0] = { +p155_dataStructD0 p155_myDataD0[P155_NR_OUTPUT_OPTIONS_D0] = { p155_dataStructD0("x-x:x.x.x*x", 0.0f), // [0] placeholder p155_dataStructD0("1-0:1.8.0*255", 0.0f), // [1] Total active energy import p155_dataStructD0("1-0:21.7.0*255", 0.0f), // [2] Power L1 @@ -110,13 +110,9 @@ p155_dataStructD0 p155_myDataD0[P155_NR_OUTPUT_OPTIONS_MODEL0] = { struct p155_dataStructSML { - int posData; // Bytes from OBIS to value (hardcoded models) - float factor; // Scaling factor (hardcoded models) byte p155_rxOrbis[6]; float value; - - p155_dataStructSML(int xposData, float xfactor, byte xOrbis[6], float xvalue) - : posData(xposData), factor(xfactor), value(xvalue) + p155_dataStructSML(byte xOrbis[6]) : value(0.0f) { for (int i = 0; i < 6; i++) p155_rxOrbis[i] = xOrbis[i]; @@ -138,51 +134,24 @@ byte p155_rxOrbis10[6] = {1, 0, 31, 7, 0, 255}; // 1-0:31.7.0 Current L1 byte p155_rxOrbis11[6] = {1, 0, 51, 7, 0, 255}; // 1-0:51.7.0 Current L2 byte p155_rxOrbis12[6] = {1, 0, 71, 7, 0, 255}; // 1-0:71.7.0 Current L3 -// Model 1: SML (DD3 etc.) - hardcoded byte positions -p155_dataStructSML p155_myDataSML[P155_NR_OUTPUT_OPTIONS_MODEL1] = { - p155_dataStructSML(0, 1.0f, p155_rxOrbis0, 0.0f), - p155_dataStructSML(11, 0.0001f, p155_rxOrbis1, 0.0f), // kWh - p155_dataStructSML(7, 1.0f, p155_rxOrbis2, 0.0f), // W - p155_dataStructSML(7, 1.0f, p155_rxOrbis3, 0.0f), - p155_dataStructSML(7, 1.0f, p155_rxOrbis4, 0.0f), - p155_dataStructSML(7, 1.0f, p155_rxOrbis5, 0.0f), - p155_dataStructSML(7, 0.0001f, p155_rxOrbis6, 0.0f), // kWh - p155_dataStructSML(7, 0.1f, p155_rxOrbis7, 0.0f), // V - p155_dataStructSML(7, 0.1f, p155_rxOrbis8, 0.0f), - p155_dataStructSML(7, 0.1f, p155_rxOrbis9, 0.0f), - p155_dataStructSML(7, 0.01f, p155_rxOrbis10, 0.0f), // A - p155_dataStructSML(7, 0.01f, p155_rxOrbis11, 0.0f), - p155_dataStructSML(7, 0.01f, p155_rxOrbis12, 0.0f), -}; - -// Model 2: DTZ541 - different byte positions -p155_dataStructSML p155_myDataDTZ[P155_NR_OUTPUT_OPTIONS_MODEL2] = { - p155_dataStructSML(0, 1.0f, p155_rxOrbis0, 0.0f), - p155_dataStructSML(18, 0.0001f, p155_rxOrbis1, 0.0f), - p155_dataStructSML(7, 1.0f, p155_rxOrbis5, 0.0f), - p155_dataStructSML(14, 0.0001f, p155_rxOrbis6, 0.0f), -}; - -// Model 3: SML-Auto - posData ignored, scaler read from telegram -p155_dataStructSML p155_myDataAuto[P155_NR_OUTPUT_OPTIONS_MODEL3] = { - p155_dataStructSML(0, 1.0f, p155_rxOrbis0, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis1, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis2, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis3, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis4, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis5, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis6, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis7, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis8, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis9, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis10, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis11, 0.0f), - p155_dataStructSML(0, 1.0f, p155_rxOrbis12, 0.0f), +p155_dataStructSML p155_myDataSML[P155_NR_OUTPUT_OPTIONS_SML] = { + p155_dataStructSML(p155_rxOrbis0), // [0] placeholder + p155_dataStructSML(p155_rxOrbis1), // [1] Total import + p155_dataStructSML(p155_rxOrbis2), // [2] Power L1 + p155_dataStructSML(p155_rxOrbis3), // [3] Power L2 + p155_dataStructSML(p155_rxOrbis4), // [4] Power L3 + p155_dataStructSML(p155_rxOrbis5), // [5] Total power + p155_dataStructSML(p155_rxOrbis6), // [6] Total export + p155_dataStructSML(p155_rxOrbis7), // [7] Voltage L1 + p155_dataStructSML(p155_rxOrbis8), // [8] Voltage L2 + p155_dataStructSML(p155_rxOrbis9), // [9] Voltage L3 + p155_dataStructSML(p155_rxOrbis10), // [10] Current L1 + p155_dataStructSML(p155_rxOrbis11), // [11] Current L2 + p155_dataStructSML(p155_rxOrbis12), // [12] Current L3 }; // ============================================================ // State variables - // ============================================================ boolean p155_MyInit = false; uint8_t p155_step = 0; @@ -193,12 +162,10 @@ byte p155_rxOrbis[6]{}; String p155_rxID; int p155_anzBytes{}; -int p155_posDataAct{}; int p155_registerAct{}; int p155_outputOptionsAct{}; -// SML-Auto state variables - +// SML parser state float p155_scaleFactor = 1.0f; // 10^scaler, calculated once in state 32 uint8_t p155_autoSubState = 0; // current field: 0=Status,1=Time,2=Unit,3=Scaler,4=Value uint8_t p155_skipBytes = 0; // bytes still to skip @@ -216,7 +183,6 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) { case PLUGIN_DEVICE_ADD: { - auto &dev = Device[++deviceCount]; dev.Number = PLUGIN_ID_155; dev.Type = DEVICE_TYPE_SERIAL; // enables serial port selector in UI @@ -282,8 +248,6 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) const __FlashStringHelper *options_model[] = { F("D0"), F("SML"), - F("DTZ541"), - F("SML-Auto"), }; FormSelectorOptions selector(NR_ELEMENTS(options_model), options_model); selector.reloadonchange = true; @@ -291,10 +255,9 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) } { const uint8_t model = PCONFIG(0); - uint8_t outputOptions = (model == 1) ? P155_NR_OUTPUT_OPTIONS_MODEL1 - : (model == 2) ? P155_NR_OUTPUT_OPTIONS_MODEL2 - : (model == 3) ? P155_NR_OUTPUT_OPTIONS_MODEL3 - : P155_NR_OUTPUT_OPTIONS_MODEL0; + const uint8_t outputOptions = (model == P155_MODEL_SML) + ? P155_NR_OUTPUT_OPTIONS_SML + : P155_NR_OUTPUT_OPTIONS_D0; const __FlashStringHelper *options[outputOptions]; for (int i = 0; i < outputOptions; ++i) @@ -333,10 +296,9 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) } p155_deleteValues(P155_MODEL); - p155_outputOptionsAct = (P155_MODEL == 1) ? P155_NR_OUTPUT_OPTIONS_MODEL1 - : (P155_MODEL == 2) ? P155_NR_OUTPUT_OPTIONS_MODEL2 - : (P155_MODEL == 3) ? P155_NR_OUTPUT_OPTIONS_MODEL3 - : P155_NR_OUTPUT_OPTIONS_MODEL0; + p155_outputOptionsAct = (P155_MODEL == P155_MODEL_SML) + ? P155_NR_OUTPUT_OPTIONS_SML + : P155_NR_OUTPUT_OPTIONS_D0; const int16_t serial_rx = CONFIG_PIN1; const int16_t serial_tx = CONFIG_PIN2; @@ -346,7 +308,7 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) if (P155_MySerial == nullptr) break; - const uint32_t serialConfig = (P155_MODEL == 0) ? SERIAL_7E1 : SERIAL_8N1; + const uint32_t serialConfig = (P155_MODEL == P155_MODEL_D0) ? SERIAL_7E1 : SERIAL_8N1; P155_MySerial->begin(P155_BAUDRATE, serialConfig); p155_step = 0; @@ -383,8 +345,8 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) delete P155_MySerial; P155_MySerial = nullptr; } - for (int m = 0; m <= 3; m++) - p155_deleteValues(m); + p155_deleteValues(P155_MODEL_D0); + p155_deleteValues(P155_MODEL_SML); break; } @@ -404,10 +366,10 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) case PLUGIN_TEN_PER_SECOND: { - if (P155_MODEL == 0) + if (P155_MODEL == P155_MODEL_D0) p155_handleSerialInD0(); else - p155_handleSerialInSML(P155_MODEL); + p155_handleSerialInSML(); success = true; break; } @@ -420,20 +382,16 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) // ============================================================ float p155_readVal(uint8_t query, unsigned int model) { - if (model == 0 && query < P155_NR_OUTPUT_OPTIONS_MODEL0) + if (model == P155_MODEL_D0 && query < P155_NR_OUTPUT_OPTIONS_D0) return p155_myDataD0[query].value; - if (model == 1 && query < P155_NR_OUTPUT_OPTIONS_MODEL1) + if (model == P155_MODEL_SML && query < P155_NR_OUTPUT_OPTIONS_SML) return p155_myDataSML[query].value; - if (model == 2 && query < P155_NR_OUTPUT_OPTIONS_MODEL2) - return p155_myDataDTZ[query].value; - if (model == 3 && query < P155_NR_OUTPUT_OPTIONS_MODEL3) - return p155_myDataAuto[query].value; return 0.0f; } unsigned int p155_getRegister(uint8_t query, uint8_t model) { - if (model == 0) + if (model == P155_MODEL_D0) { switch (query) { @@ -449,7 +407,7 @@ unsigned int p155_getRegister(uint8_t query, uint8_t model) return Q3D_POWER_TOTAL; } } - else if (model == 1 || model == 3) + else if (model == P155_MODEL_SML) { switch (query) { @@ -479,25 +437,12 @@ unsigned int p155_getRegister(uint8_t query, uint8_t model) return DD3_CURRENT_L3; } } - else if (model == 2) - { - switch (query) - { - case 1: - return DD3_TOTAL_ACTIVE_ENERGY_PLUS; - case 2: - return DD3_POWER_TOTAL; - case 3: - return DD3_TOTAL_ACTIVE_ENERGY_MINUS; - } - } return 0; } const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model) { - // D0 - if (model == 0) + if (model == P155_MODEL_D0) { switch (query) { @@ -513,8 +458,7 @@ const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model) return F("Power Total (W)"); } } - // SML / SML-Auto –same OBIS-Names - else if (model == 1 || model == 3) + else if (model == P155_MODEL_SML) { switch (query) { @@ -544,25 +488,12 @@ const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model) return F("Current L3 (A)"); } } - // DTZ541 - else if (model == 2) - { - switch (query) - { - case 1: - return F("Total Active Energy Plus (kWh)"); - case 2: - return F("Power Total (W)"); - case 3: - return F("Total Active Energy Minus (kWh)"); - } - } return F(""); } const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model) { - if (model == 0) + if (model == P155_MODEL_D0) { switch (query) { @@ -578,7 +509,7 @@ const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model return F("L123_W"); } } - else if (model == 1 || model == 3) + else if (model == P155_MODEL_SML) { switch (query) { @@ -608,29 +539,26 @@ const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model return F("L3_A"); } } - else if (model == 2) - { - switch (query) - { - case 1: - return F("Energy_Consumption_kWh"); - case 2: - return F("L123_W"); - case 3: - return F("Energy_FeedIn_kWh"); - } - } return F(""); } +// SML start sequence (ring buffer order: newest byte first) +// Stream: 1B 1B 1B 1B 01 01 01 01 → ring buffer reversed: 01 01 01 01 1B 1B 1B 1B +static constexpr uint8_t P155_SML_startseq[] = {0x01, 0x01, 0x01, 0x01, 0x1B, 0x1B, 0x1B, 0x1B}; + // ============================================================ -// Serial handler: shared for SML, DTZ541 and SML-Auto +// Serial handler: SML (dynamic TL parsing) // ============================================================ -void p155_handleSerialInSML(unsigned int model) +void p155_handleSerialInSML() { if (nullptr == P155_MySerial) { - addLog(LOG_LEVEL_INFO, F("SML: Serial nullptr")); + static uint32_t lastLogTime{}; + if (timePassedSince(lastLogTime) > 1000) + { + addLog(LOG_LEVEL_INFO, F("SML: Serial nullptr")); + lastLogTime = millis(); + } return; } @@ -650,16 +578,20 @@ void p155_handleSerialInSML(unsigned int model) p155_ringBuffer[i] = p155_ringBuffer[i - 1]; p155_ringBuffer[0] = b; - if ((p155_ringBuffer[0] == 0x01) && (p155_ringBuffer[1] == 0x01) && - (p155_ringBuffer[2] == 0x01) && (p155_ringBuffer[3] == 0x01) && - (p155_ringBuffer[4] == 0x1B) && (p155_ringBuffer[5] == 0x1B) && - (p155_ringBuffer[6] == 0x1B) && (p155_ringBuffer[7] == 0x1B)) + // static uint64_t p155_rxWindow = 0; + // per Byte (one Operation instead of 8 writings in loop): + // p155_rxWindow = (p155_rxWindow << 8) | b; + + //// Compare (one Operation instead memcmp with 8 Bytes): + // static constexpr uint64_t P155_SML_startseq = 0x1B1B1B1B01010101ULL; + // if (p155_rxWindow == P155_SML_startseq) + + if (memcmp(p155_ringBuffer, P155_SML_startseq, NR_ELEMENTS(P155_SML_startseq)) == 0) { p155_step = 11; p155_charsRead = 0; p155_registerAct = 0; p155_anzBytes = 0; - p155_posDataAct = 0; p155_scaleFactor = 1.0f; p155_autoSubState = 0; p155_skipBytes = 0; @@ -669,7 +601,7 @@ void p155_handleSerialInSML(unsigned int model) switch (p155_step) { // ------------------------------------------------------- - // States 11-13: find OBIS code (all SML models) + // States 11-13: find OBIS code // ------------------------------------------------------- case 11: // find ListEntry tag 0x77 if (b == 0x77) @@ -696,96 +628,31 @@ void p155_handleSerialInSML(unsigned int model) // search OBIS Number in table for (int i = 1; i < p155_outputOptionsAct; i++) { - byte *orbis = nullptr; - if (model == 1) - orbis = p155_myDataSML[i].p155_rxOrbis; - else if (model == 2) - orbis = p155_myDataDTZ[i].p155_rxOrbis; - else if (model == 3) - orbis = p155_myDataAuto[i].p155_rxOrbis; - - if (orbis && p155_byteArrayCompare(p155_rxOrbis, 6, orbis, 6)) + if (p155_byteArrayCompare(p155_rxOrbis, 6, p155_myDataSML[i].p155_rxOrbis, 6)) { - - if (i < p155_outputOptionsAct) - { - p155_registerAct = i; - if (model != 3) - p155_posDataAct = (model == 1) ? p155_myDataSML[i].posData - : p155_myDataDTZ[i].posData; - } + p155_registerAct = i; break; } } if (p155_registerAct != 0) { - if (model == 3) - { - p155_scaleFactor = 1.0f; - p155_autoSubState = 0; - p155_skipBytes = 0; - p155_listElems = 0; - p155_step = 30; - } - else - { - p155_step = 20; - } + p155_scaleFactor = 1.0f; + p155_autoSubState = 0; + p155_skipBytes = 0; + p155_listElems = 0; + p155_step = 30; p155_charsRead = 0; } else { - p155_step = 11; // Not found so continue searching + p155_step = 11; // not found, keep searching } } break; // ------------------------------------------------------- - // States 20-21: hardcoded models (SML, DTZ541) - // ------------------------------------------------------- - case 20: // read bytes up to posData, last byte = type byte - // bounds check - if (p155_charsRead < P155_RX_BUFFER) - p155_rxBuffer[p155_charsRead++] = b; - - if (p155_charsRead >= p155_posDataAct) - { - byte ltyp = b; - p155_anzBytes = 4; // Default - - if (ltyp == 0x52 || ltyp == 0x62) - p155_anzBytes = 1; // 8-bit - else if (ltyp == 0x53 || ltyp == 0x63) - p155_anzBytes = 2; // 16-bit - else if (ltyp == 0x55 || ltyp == 0x65) - p155_anzBytes = 4; // 32-bit - else if (ltyp == 0x59 || ltyp == 0x69) - p155_anzBytes = 8; // 64-bit - - p155_step = 21; - } - break; - - case 21: // collect data bytes - // bounds check - if (p155_charsRead < P155_RX_BUFFER) - p155_rxBuffer[p155_charsRead++] = b; - - if (p155_charsRead >= p155_posDataAct + p155_anzBytes) - { - p155_parseValuesSML(model); - p155_step = 11; - p155_charsRead = 0; - } - else if (p155_charsRead >= P155_RX_BUFFER) - { - p155_step = 11; // buffer overflow - abort - } - break; - - // ------------------------------------------------------- - // States 30-33: SML-Auto - dynamic TL parsing + // States 30-33: dynamic TL parsing // // TL-byte format: // Bits 7-4: Type (0=optional/absent, 5=signed int, 6=uint, 7=list) @@ -902,7 +769,7 @@ void p155_handleSerialInSML(unsigned int model) if (p155_charsRead >= p155_anzBytes) { - p155_parseValuesSMLAuto(); + p155_parseValuesSML(); p155_step = 11; } break; @@ -933,7 +800,6 @@ void p155_handleSerialInSML(unsigned int model) break; } } - if (p155_listElems == 0) { p155_autoSubState++; @@ -963,7 +829,6 @@ void p155_handleSerialInSML(unsigned int model) p155_charsRead = 0; p155_anzBytes = 0; p155_registerAct = 0; - p155_posDataAct = 0; p155_autoSubState = 0; p155_listElems = 0; break; @@ -971,7 +836,6 @@ void p155_handleSerialInSML(unsigned int model) } // while serial available #ifndef BUILD_NO_DEBUG - if (loglevelActiveFor(LOG_LEVEL_DEBUG)) { String log1 = F("SML: step="); @@ -992,7 +856,12 @@ void p155_handleSerialInD0() { if (nullptr == P155_MySerial) { - addLog(LOG_LEVEL_INFO, F("D0: Serial nullptr")); + static uint32_t lastLogTime{}; + if (timePassedSince(lastLogTime) > 1000) + { + addLog(LOG_LEVEL_INFO, F("D0: Serial nullptr")); + lastLogTime = millis(); + } return; } @@ -1040,155 +909,46 @@ void p155_handleSerialInD0() } // ============================================================ -// Parse values: hardcoded SML models (1, 2) +// Parse values: SML (dynamic TL) // ============================================================ -void p155_parseValuesSML(unsigned int model) +void p155_parseValuesSML() { - // bounds check before using p155_registerAct as array index - if (model == 1 && p155_registerAct >= P155_NR_OUTPUT_OPTIONS_MODEL1) - return; - if (model == 2 && p155_registerAct >= P155_NR_OUTPUT_OPTIONS_MODEL2) + if (p155_registerAct >= P155_NR_OUTPUT_OPTIONS_SML) return; - byte *orbis = (model == 1) ? p155_myDataSML[p155_registerAct].p155_rxOrbis - : p155_myDataDTZ[p155_registerAct].p155_rxOrbis; - if (!p155_byteArrayCompare(p155_rxOrbis, 6, orbis, 6)) - return; - - int lLen = p155_posDataAct; - if (lLen < 1 || lLen >= P155_RX_BUFFER) - return; // bounds check: prevent lLen-1 underflow - byte lTyp = p155_rxBuffer[lLen - 1]; - float lvalue = 0.0f; - - int8_t lint8; - uint8_t luint8; - int16_t lint16; - uint16_t luint16; - int32_t lint32; - uint32_t luint32; - - switch (lTyp) - { - case 0x52: - lint8 = p155_rxBuffer[lLen]; - lvalue = lint8; - break; // S8 - case 0x53: - lint16 = ((uint8_t)p155_rxBuffer[lLen] << 8) | (uint8_t)p155_rxBuffer[lLen + 1]; - lvalue = lint16; - break; // S16 - case 0x55: - lint32 = ((uint8_t)p155_rxBuffer[lLen] << 24) | - ((uint8_t)p155_rxBuffer[lLen + 1] << 16) | - ((uint8_t)p155_rxBuffer[lLen + 2] << 8) | - (uint8_t)p155_rxBuffer[lLen + 3]; - lvalue = lint32; - break; // S32 - - case 0x59: - lint32 = ((uint8_t)p155_rxBuffer[lLen + 4] << 24) | // S64 → nur untere 32bit - ((uint8_t)p155_rxBuffer[lLen + 5] << 16) | - ((uint8_t)p155_rxBuffer[lLen + 6] << 8) | - (uint8_t)p155_rxBuffer[lLen + 7]; - lvalue = lint32; - break; - - case 0x62: - luint8 = p155_rxBuffer[lLen]; - lvalue = luint8; - break; // U8 - case 0x63: - luint16 = ((uint8_t)p155_rxBuffer[lLen] << 8) | (uint8_t)p155_rxBuffer[lLen + 1]; - lvalue = luint16; - break; // U16 - case 0x65: - luint32 = ((uint8_t)p155_rxBuffer[lLen] << 24) | - ((uint8_t)p155_rxBuffer[lLen + 1] << 16) | - ((uint8_t)p155_rxBuffer[lLen + 2] << 8) | - (uint8_t)p155_rxBuffer[lLen + 3]; - lvalue = luint32; - break; // U32 - - case 0x69: - luint32 = ((uint8_t)p155_rxBuffer[lLen + 4] << 24) | // U64 → untere 32bit - ((uint8_t)p155_rxBuffer[lLen + 5] << 16) | - ((uint8_t)p155_rxBuffer[lLen + 6] << 8) | - (uint8_t)p155_rxBuffer[lLen + 7]; - lvalue = luint32; - break; - } - - const float factor = (model == 1) ? p155_myDataSML[p155_registerAct].factor - : p155_myDataDTZ[p155_registerAct].factor; - if (model == 1) - p155_myDataSML[p155_registerAct].value = lvalue * factor; - if (model == 2) - p155_myDataDTZ[p155_registerAct].value = lvalue * factor; - -#ifndef BUILD_NO_DEBUG - if (loglevelActiveFor(LOG_LEVEL_DEBUG)) - { - String log = F("SML Parse: reg="); - log += p155_registerAct; - log += F(" typ=0x"); - log += String(lTyp, HEX); - log += F(" val="); - log += lvalue; - addLogMove(LOG_LEVEL_DEBUG, log); - } -#endif -} - -// ============================================================ -// Parse values: SML-Auto (Model 3) - -// ============================================================ -void p155_parseValuesSMLAuto() -{ - // For >4 bytes (e.g. int64), skip upper bytes, read lower 4 const int startByte = (p155_anzBytes > 4) ? (p155_anzBytes - 4) : 0; const int readBytes = (p155_anzBytes > 4) ? 4 : p155_anzBytes; - uint32_t rawU = 0; - for (int i = 0; i < readBytes; i++) - rawU = (rawU << 8) | (uint8_t)p155_rxBuffer[startByte + i]; - float lvalue = 0.0f; if (p155_autoDataTyp == 5) // signed int { - int32_t raw = (int32_t)rawU; - if (readBytes == 1 && (rawU & 0x80)) - raw |= (int32_t)0xFFFFFF00; - else if (readBytes == 2 && (rawU & 0x8000)) - raw |= (int32_t)0xFFFF0000; + int32_t raw = 0; + if (!p155_readInt32(startByte, readBytes, raw)) + return; lvalue = raw; } - else // unsigned (typ 6) or unkwnown + else // unsigned (type 6) or unknown { - lvalue = rawU; + uint32_t raw = 0; + if (!p155_readUint32(startByte, readBytes, raw)) + return; + lvalue = raw; } - const float scaledValue = lvalue * p155_scaleFactor; - - p155_myDataAuto[p155_registerAct].value = scaledValue; + p155_myDataSML[p155_registerAct].value = lvalue * p155_scaleFactor; if (loglevelActiveFor(LOG_LEVEL_INFO)) { - String log = F("SML-Auto: reg="); + String log = F("SML: reg="); log += p155_registerAct; log += F(" typ="); log += p155_autoDataTyp; log += F(" bytes="); log += p155_anzBytes; - log += F(" start="); - log += startByte; log += F(" factor="); log += p155_scaleFactor; - log += F(" raw="); - log += lvalue; log += F(" val="); - log += scaledValue; + log += p155_myDataSML[p155_registerAct].value; addLogMove(LOG_LEVEL_INFO, log); } } @@ -1198,7 +958,6 @@ void p155_parseValuesSMLAuto() // ============================================================ void p155_parseValuesD0() { - int i = 1; for (; i < p155_outputOptionsAct; i++) { @@ -1230,6 +989,41 @@ void p155_parseValuesD0() #endif } +// ============================================================ +// Buffer read helpers (bounds-checked) +// ============================================================ + +// Read numBytes (1-4) big-endian from rxBuffer at startByte → uint32_t +bool p155_readUint32(int startByte, int numBytes, uint32_t &result) +{ + if (numBytes < 1 || numBytes > 4) + return false; + if ((startByte + numBytes) > p155_charsRead) + return false; + if ((startByte + numBytes) > P155_RX_BUFFER) + return false; + result = 0; + for (int i = 0; i < numBytes; i++) + result = (result << 8) | (uint8_t)p155_rxBuffer[startByte + i]; + return true; +} + +// Read numBytes (1-4) big-endian from rxBuffer at startByte → int32_t (sign-extended) +bool p155_readInt32(int startByte, int numBytes, int32_t &result) +{ + uint32_t raw = 0; + if (!p155_readUint32(startByte, numBytes, raw)) + return false; + result = static_cast(raw); + if (numBytes == 1 && (raw & 0x80)) + result |= (int32_t)0xFFFFFF00; + else if (numBytes == 2 && (raw & 0x8000)) + result |= (int32_t)0xFFFF0000; + else if (numBytes == 3 && (raw & 0x800000)) + result |= (int32_t)0xFF000000; + return true; +} + bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len) { if (a1len != a2len) @@ -1242,18 +1036,12 @@ bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len) void p155_deleteValues(unsigned int model) { - if (model == 0) - for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL0; i++) + if (model == P155_MODEL_D0) + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_D0; i++) p155_myDataD0[i].value = 0; - else if (model == 1) - for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL1; i++) + else if (model == P155_MODEL_SML) + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_SML; i++) p155_myDataSML[i].value = 0; - else if (model == 2) - for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL2; i++) - p155_myDataDTZ[i].value = 0; - else if (model == 3) - for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_MODEL3; i++) - p155_myDataAuto[i].value = 0; } #endif // USES_P155 \ No newline at end of file From 72f69a33377f9feef72b3b69c78521518d2ae765 Mon Sep 17 00:00:00 2001 From: Peter Emke Date: Thu, 14 May 2026 12:03:12 +0200 Subject: [PATCH 5/7] Changes for #5542 #1 uncrustified #2 change docs #3 math instead of if --- docs/source/Plugin/P155.rst | 4 +- src/_P155_Smartmeter.ino | 1256 +++++++++++++++++++---------------- 2 files changed, 667 insertions(+), 593 deletions(-) diff --git a/docs/source/Plugin/P155.rst b/docs/source/Plugin/P155.rst index 050065f982..2288861950 100644 --- a/docs/source/Plugin/P155.rst +++ b/docs/source/Plugin/P155.rst @@ -101,7 +101,7 @@ Configuration Output -~~~~~~~~~ +~~~~~~ The available measurement values depend on the selected model. @@ -150,7 +150,7 @@ DTZ541: "3", "Energy_FeedIn_kWh", "1-0:2.8.0", "kWh", "Total export energy" Indicators (recommended settings) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. csv-table:: :header: "Indicator", "Value Name", "Interval", "Formula", "Extra information" diff --git a/src/_P155_Smartmeter.ino b/src/_P155_Smartmeter.ino index 74120e6896..4cb8648b75 100644 --- a/src/_P155_Smartmeter.ino +++ b/src/_P155_Smartmeter.ino @@ -21,71 +21,82 @@ // ####################################################################################################### -#define PLUGIN_155 -#define PLUGIN_ID_155 155 -#define PLUGIN_NAME_155 "SML - Smartmeter" +# define PLUGIN_155 +# define PLUGIN_ID_155 155 +# define PLUGIN_NAME_155 "SML - Smartmeter" -#define P155_MODEL PCONFIG(0) -#define P155_MODEL_LABEL PCONFIG_LABEL(0) -#define P155_QUERY1 PCONFIG(1) -#define P155_QUERY2 PCONFIG(2) -#define P155_QUERY3 PCONFIG(3) -#define P155_QUERY4 PCONFIG(4) +# define P155_MODEL PCONFIG(0) +# define P155_MODEL_LABEL PCONFIG_LABEL(0) +# define P155_QUERY1 PCONFIG(1) +# define P155_QUERY2 PCONFIG(2) +# define P155_QUERY3 PCONFIG(3) +# define P155_QUERY4 PCONFIG(4) // Model index defines -#define P155_MODEL_D0 0 -#define P155_MODEL_SML 1 - -#define P155_MODEL_DFLT P155_MODEL_SML -#define P155_BAUDRATE 9600 -#define P155_QUERY1_DFLT 1 -#define P155_QUERY2_DFLT 3 -#define P155_QUERY3_DFLT 2 -#define P155_QUERY4_DFLT 0 - -#define P155_NR_OUTPUT_VALUES 4 -#define P155_NR_OUTPUT_OPTIONS_D0 6 -#define P155_NR_OUTPUT_OPTIONS_SML 13 -#define P155_QUERY1_CONFIG_POS 1 -#define P155_RX_BUFFER 64 // enlarged for 64-bit values +# define P155_MODEL_D0 0 +# define P155_MODEL_SML 1 + +# define P155_MODEL_DFLT P155_MODEL_SML +# define P155_BAUDRATE 9600 +# define P155_QUERY1_DFLT 1 +# define P155_QUERY2_DFLT 3 +# define P155_QUERY3_DFLT 2 +# define P155_QUERY4_DFLT 0 + +# define P155_NR_OUTPUT_VALUES 4 +# define P155_NR_OUTPUT_OPTIONS_D0 6 +# define P155_NR_OUTPUT_OPTIONS_SML 13 +# define P155_QUERY1_CONFIG_POS 1 +# define P155_RX_BUFFER 64 // enlarged for 64-bit values // OBIS index defines - index 0 is an unused placeholder so that // the #define constants (1-based) map directly to array indices. -#define Q3D_TOTAL_ACTIVE_ENERGY 1 -#define Q3D_POWER_L1 2 -#define Q3D_POWER_L2 3 -#define Q3D_POWER_L3 4 -#define Q3D_POWER_TOTAL 5 - -#define DD3_TOTAL_ACTIVE_ENERGY_PLUS 1 -#define DD3_POWER_L1 2 -#define DD3_POWER_L2 3 -#define DD3_POWER_L3 4 -#define DD3_POWER_TOTAL 5 -#define DD3_TOTAL_ACTIVE_ENERGY_MINUS 6 -#define DD3_VOLT_L1 7 -#define DD3_VOLT_L2 8 -#define DD3_VOLT_L3 9 -#define DD3_CURRENT_L1 10 -#define DD3_CURRENT_L2 11 -#define DD3_CURRENT_L3 12 - -#include +# define Q3D_TOTAL_ACTIVE_ENERGY 1 +# define Q3D_POWER_L1 2 +# define Q3D_POWER_L2 3 +# define Q3D_POWER_L3 4 +# define Q3D_POWER_TOTAL 5 + +# define DD3_TOTAL_ACTIVE_ENERGY_PLUS 1 +# define DD3_POWER_L1 2 +# define DD3_POWER_L2 3 +# define DD3_POWER_L3 4 +# define DD3_POWER_TOTAL 5 +# define DD3_TOTAL_ACTIVE_ENERGY_MINUS 6 +# define DD3_VOLT_L1 7 +# define DD3_VOLT_L2 8 +# define DD3_VOLT_L3 9 +# define DD3_CURRENT_L1 10 +# define DD3_CURRENT_L2 11 +# define DD3_CURRENT_L3 12 + +# include ESPeasySerial *P155_MySerial = nullptr; // Forward declarations -const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model); -const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model); -unsigned int p155_getRegister(uint8_t query, uint8_t model); -float p155_readVal(uint8_t query, unsigned int model); -void p155_handleSerialInD0(); -void p155_handleSerialInSML(); -void p155_parseValuesD0(); -void p155_parseValuesSML(); -bool p155_readUint32(int startByte, int numBytes, uint32_t &result); -bool p155_readInt32(int startByte, int numBytes, int32_t &result); -bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len); +const __FlashStringHelper* p155_getQueryString(uint8_t query, + uint8_t model); +const __FlashStringHelper* p155_getQueryValueString(uint8_t query, + uint8_t model); +unsigned int p155_getRegister(uint8_t query, + uint8_t model); +float p155_readVal(uint8_t query, + unsigned int model); +void p155_handleSerialInD0(); +void p155_handleSerialInSML(); +void p155_parseValuesD0(); +void p155_parseValuesSML(); +bool p155_readUint32(int startByte, + int numBytes, + uint32_t& result); +bool p155_readInt32(int startByte, + int numBytes, + int32_t& result); +bool p155_byteArrayCompare(byte a1[], + int a1len, + byte a2[], + int a2len); void p155_deleteValues(unsigned int model); // ============================================================ @@ -95,284 +106,297 @@ void p155_deleteValues(unsigned int model); struct p155_dataStructD0 { String p155_rxID; - float value; - p155_dataStructD0(const String &xID, float xvalue) : p155_rxID(xID), value(xvalue) {} + float value; + p155_dataStructD0(const String& xID, float xvalue) : p155_rxID(xID), value(xvalue) {} + }; p155_dataStructD0 p155_myDataD0[P155_NR_OUTPUT_OPTIONS_D0] = { - p155_dataStructD0("x-x:x.x.x*x", 0.0f), // [0] placeholder - p155_dataStructD0("1-0:1.8.0*255", 0.0f), // [1] Total active energy import - p155_dataStructD0("1-0:21.7.0*255", 0.0f), // [2] Power L1 - p155_dataStructD0("1-0:41.7.0*255", 0.0f), // [3] Power L2 - p155_dataStructD0("1-0:61.7.0*255", 0.0f), // [4] Power L3 - p155_dataStructD0("1-0:1.7.0*255", 0.0f), // [5] Power L123 + p155_dataStructD0("x-x:x.x.x*x", 0.0f), // [0] placeholder + p155_dataStructD0("1-0:1.8.0*255", 0.0f), // [1] Total active energy import + p155_dataStructD0("1-0:21.7.0*255", 0.0f), // [2] Power L1 + p155_dataStructD0("1-0:41.7.0*255", 0.0f), // [3] Power L2 + p155_dataStructD0("1-0:61.7.0*255", 0.0f), // [4] Power L3 + p155_dataStructD0("1-0:1.7.0*255", 0.0f), // [5] Power L123 }; struct p155_dataStructSML { - byte p155_rxOrbis[6]; + byte p155_rxOrbis[6]; float value; p155_dataStructSML(byte xOrbis[6]) : value(0.0f) { - for (int i = 0; i < 6; i++) + for (int i = 0; i < 6; i++) { p155_rxOrbis[i] = xOrbis[i]; + } } + }; // OBIS codes -byte p155_rxOrbis0[6] = {0, 0, 0, 0, 0, 0}; -byte p155_rxOrbis1[6] = {1, 0, 1, 8, 0, 255}; // 1-0:1.8.0 Total import -byte p155_rxOrbis2[6] = {1, 0, 21, 7, 0, 255}; // 1-0:21.7.0 Power L1 -byte p155_rxOrbis3[6] = {1, 0, 41, 7, 0, 255}; // 1-0:41.7.0 Power L2 -byte p155_rxOrbis4[6] = {1, 0, 61, 7, 0, 255}; // 1-0:61.7.0 Power L3 -byte p155_rxOrbis5[6] = {1, 0, 16, 7, 0, 255}; // 1-0:16.7.0 Total power -byte p155_rxOrbis6[6] = {1, 0, 2, 8, 0, 255}; // 1-0:2.8.0 Total export -byte p155_rxOrbis7[6] = {1, 0, 32, 7, 0, 255}; // 1-0:32.7.0 Voltage L1 -byte p155_rxOrbis8[6] = {1, 0, 52, 7, 0, 255}; // 1-0:52.7.0 Voltage L2 -byte p155_rxOrbis9[6] = {1, 0, 72, 7, 0, 255}; // 1-0:72.7.0 Voltage L3 -byte p155_rxOrbis10[6] = {1, 0, 31, 7, 0, 255}; // 1-0:31.7.0 Current L1 -byte p155_rxOrbis11[6] = {1, 0, 51, 7, 0, 255}; // 1-0:51.7.0 Current L2 -byte p155_rxOrbis12[6] = {1, 0, 71, 7, 0, 255}; // 1-0:71.7.0 Current L3 +byte p155_rxOrbis0[6] = { 0, 0, 0, 0, 0, 0 }; +byte p155_rxOrbis1[6] = { 1, 0, 1, 8, 0, 255 }; // 1-0:1.8.0 Total import +byte p155_rxOrbis2[6] = { 1, 0, 21, 7, 0, 255 }; // 1-0:21.7.0 Power L1 +byte p155_rxOrbis3[6] = { 1, 0, 41, 7, 0, 255 }; // 1-0:41.7.0 Power L2 +byte p155_rxOrbis4[6] = { 1, 0, 61, 7, 0, 255 }; // 1-0:61.7.0 Power L3 +byte p155_rxOrbis5[6] = { 1, 0, 16, 7, 0, 255 }; // 1-0:16.7.0 Total power +byte p155_rxOrbis6[6] = { 1, 0, 2, 8, 0, 255 }; // 1-0:2.8.0 Total export +byte p155_rxOrbis7[6] = { 1, 0, 32, 7, 0, 255 }; // 1-0:32.7.0 Voltage L1 +byte p155_rxOrbis8[6] = { 1, 0, 52, 7, 0, 255 }; // 1-0:52.7.0 Voltage L2 +byte p155_rxOrbis9[6] = { 1, 0, 72, 7, 0, 255 }; // 1-0:72.7.0 Voltage L3 +byte p155_rxOrbis10[6] = { 1, 0, 31, 7, 0, 255 }; // 1-0:31.7.0 Current L1 +byte p155_rxOrbis11[6] = { 1, 0, 51, 7, 0, 255 }; // 1-0:51.7.0 Current L2 +byte p155_rxOrbis12[6] = { 1, 0, 71, 7, 0, 255 }; // 1-0:71.7.0 Current L3 p155_dataStructSML p155_myDataSML[P155_NR_OUTPUT_OPTIONS_SML] = { - p155_dataStructSML(p155_rxOrbis0), // [0] placeholder - p155_dataStructSML(p155_rxOrbis1), // [1] Total import - p155_dataStructSML(p155_rxOrbis2), // [2] Power L1 - p155_dataStructSML(p155_rxOrbis3), // [3] Power L2 - p155_dataStructSML(p155_rxOrbis4), // [4] Power L3 - p155_dataStructSML(p155_rxOrbis5), // [5] Total power - p155_dataStructSML(p155_rxOrbis6), // [6] Total export - p155_dataStructSML(p155_rxOrbis7), // [7] Voltage L1 - p155_dataStructSML(p155_rxOrbis8), // [8] Voltage L2 - p155_dataStructSML(p155_rxOrbis9), // [9] Voltage L3 - p155_dataStructSML(p155_rxOrbis10), // [10] Current L1 - p155_dataStructSML(p155_rxOrbis11), // [11] Current L2 - p155_dataStructSML(p155_rxOrbis12), // [12] Current L3 + p155_dataStructSML(p155_rxOrbis0), // [0] placeholder + p155_dataStructSML(p155_rxOrbis1), // [1] Total import + p155_dataStructSML(p155_rxOrbis2), // [2] Power L1 + p155_dataStructSML(p155_rxOrbis3), // [3] Power L2 + p155_dataStructSML(p155_rxOrbis4), // [4] Power L3 + p155_dataStructSML(p155_rxOrbis5), // [5] Total power + p155_dataStructSML(p155_rxOrbis6), // [6] Total export + p155_dataStructSML(p155_rxOrbis7), // [7] Voltage L1 + p155_dataStructSML(p155_rxOrbis8), // [8] Voltage L2 + p155_dataStructSML(p155_rxOrbis9), // [9] Voltage L3 + p155_dataStructSML(p155_rxOrbis10), // [10] Current L1 + p155_dataStructSML(p155_rxOrbis11), // [11] Current L2 + p155_dataStructSML(p155_rxOrbis12), // [12] Current L3 }; // ============================================================ // State variables // ============================================================ -boolean p155_MyInit = false; -uint8_t p155_step = 0; +boolean p155_MyInit = false; +uint8_t p155_step = 0; uint8_t p155_charsRead = 0; -char p155_rxBuffer[P155_RX_BUFFER]{}; -char p155_ringBuffer[8]{}; -byte p155_rxOrbis[6]{}; -String p155_rxID; +char p155_rxBuffer[P155_RX_BUFFER]{}; +char p155_ringBuffer[8]{}; +byte p155_rxOrbis[6]{}; +String p155_rxID; int p155_anzBytes{}; int p155_registerAct{}; int p155_outputOptionsAct{}; // SML parser state -float p155_scaleFactor = 1.0f; // 10^scaler, calculated once in state 32 -uint8_t p155_autoSubState = 0; // current field: 0=Status,1=Time,2=Unit,3=Scaler,4=Value -uint8_t p155_skipBytes = 0; // bytes still to skip -uint8_t p155_autoDataTyp = 0; // SML type of Value field (5=signed int, 6=uint) -uint8_t p155_listElems = 0; // remaining child elements for list type (type=7) +float p155_scaleFactor = 1.0f; // 10^scaler, calculated once in state 32 +uint8_t p155_autoSubState = 0; // current field: 0=Status,1=Time,2=Unit,3=Scaler,4=Value +uint8_t p155_skipBytes = 0; // bytes still to skip +uint8_t p155_autoDataTyp = 0; // SML type of Value field (5=signed int, 6=uint) +uint8_t p155_listElems = 0; // remaining child elements for list type (type=7) // ============================================================ // Plugin main function // ============================================================ -boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) +boolean Plugin_155(uint8_t function, struct EventStruct *event, String& string) { boolean success = false; switch (function) { - case PLUGIN_DEVICE_ADD: - { - auto &dev = Device[++deviceCount]; - dev.Number = PLUGIN_ID_155; - dev.Type = DEVICE_TYPE_SERIAL; // enables serial port selector in UI - dev.VType = Sensor_VType::SENSOR_TYPE_QUAD; - dev.Ports = 0; - dev.PullUpOption = false; - dev.InverseLogicOption = false; - dev.FormulaOption = true; - dev.ValueCount = P155_NR_OUTPUT_VALUES; - dev.SendDataOption = true; - dev.TimerOption = true; - dev.GlobalSyncOption = true; - break; - } + case PLUGIN_DEVICE_ADD: + { + auto& dev = Device[++deviceCount]; + dev.Number = PLUGIN_ID_155; + dev.Type = DEVICE_TYPE_SERIAL; // enables serial port selector in UI + dev.VType = Sensor_VType::SENSOR_TYPE_QUAD; + dev.Ports = 0; + dev.PullUpOption = false; + dev.InverseLogicOption = false; + dev.FormulaOption = true; + dev.ValueCount = P155_NR_OUTPUT_VALUES; + dev.SendDataOption = true; + dev.TimerOption = true; + dev.GlobalSyncOption = true; + break; + } - case PLUGIN_GET_DEVICENAME: - { - string = F(PLUGIN_NAME_155); - break; - } + case PLUGIN_GET_DEVICENAME: + { + string = F(PLUGIN_NAME_155); + break; + } - case PLUGIN_GET_DEVICEVALUENAMES: - { - const uint8_t model = P155_MODEL; - for (uint8_t i = 0; i < VARS_PER_TASK; ++i) + case PLUGIN_GET_DEVICEVALUENAMES: { - if (i < P155_NR_OUTPUT_VALUES) - { - uint8_t choice = PCONFIG(i + P155_QUERY1_CONFIG_POS); - safe_strncpy(ExtraTaskSettings.TaskDeviceValueNames[i], - p155_getQueryValueString(choice, model), - sizeof(ExtraTaskSettings.TaskDeviceValueNames[i])); - } - else + const uint8_t model = P155_MODEL; + + for (uint8_t i = 0; i < VARS_PER_TASK; ++i) { - ZERO_FILL(ExtraTaskSettings.TaskDeviceValueNames[i]); + if (i < P155_NR_OUTPUT_VALUES) + { + uint8_t choice = PCONFIG(i + P155_QUERY1_CONFIG_POS); + safe_strncpy(ExtraTaskSettings.TaskDeviceValueNames[i], + p155_getQueryValueString(choice, model), + sizeof(ExtraTaskSettings.TaskDeviceValueNames[i])); + } + else + { + ZERO_FILL(ExtraTaskSettings.TaskDeviceValueNames[i]); + } } + break; } - break; - } - case PLUGIN_WEBFORM_SHOW_CONFIG: - { - string += serialHelper_getSerialTypeLabel(event); - success = true; - break; - } + case PLUGIN_WEBFORM_SHOW_CONFIG: + { + string += serialHelper_getSerialTypeLabel(event); + success = true; + break; + } - case PLUGIN_SET_DEFAULTS: - { - P155_MODEL = P155_MODEL_DFLT; - P155_QUERY1 = P155_QUERY1_DFLT; - P155_QUERY2 = P155_QUERY2_DFLT; - P155_QUERY3 = P155_QUERY3_DFLT; - P155_QUERY4 = P155_QUERY4_DFLT; - success = true; - break; - } + case PLUGIN_SET_DEFAULTS: + { + P155_MODEL = P155_MODEL_DFLT; + P155_QUERY1 = P155_QUERY1_DFLT; + P155_QUERY2 = P155_QUERY2_DFLT; + P155_QUERY3 = P155_QUERY3_DFLT; + P155_QUERY4 = P155_QUERY4_DFLT; + success = true; + break; + } - case PLUGIN_WEBFORM_LOAD: - { + case PLUGIN_WEBFORM_LOAD: { - const __FlashStringHelper *options_model[] = { + { + const __FlashStringHelper *options_model[] = { F("D0"), F("SML"), - }; - FormSelectorOptions selector(NR_ELEMENTS(options_model), options_model); - selector.reloadonchange = true; - selector.addFormSelector(F("Model Type"), P155_MODEL_LABEL, P155_MODEL); - } - { - const uint8_t model = PCONFIG(0); - const uint8_t outputOptions = (model == P155_MODEL_SML) + }; + FormSelectorOptions selector(NR_ELEMENTS(options_model), options_model); + selector.reloadonchange = true; + selector.addFormSelector(F("Model Type"), P155_MODEL_LABEL, P155_MODEL); + } + { + const uint8_t model = PCONFIG(0); + const uint8_t outputOptions = (model == P155_MODEL_SML) ? P155_NR_OUTPUT_OPTIONS_SML : P155_NR_OUTPUT_OPTIONS_D0; - const __FlashStringHelper *options[outputOptions]; - for (int i = 0; i < outputOptions; ++i) - options[i] = p155_getQueryString(i, model); + const __FlashStringHelper *options[outputOptions]; - for (uint8_t i = 0; i < P155_NR_OUTPUT_VALUES; ++i) - sensorTypeHelper_loadOutputSelector(event, i + P155_QUERY1_CONFIG_POS, - i, outputOptions, options); + for (int i = 0; i < outputOptions; ++i) { + options[i] = p155_getQueryString(i, model); + } + + for (uint8_t i = 0; i < P155_NR_OUTPUT_VALUES; ++i) { + sensorTypeHelper_loadOutputSelector(event, i + P155_QUERY1_CONFIG_POS, + i, outputOptions, options); + } + } + success = true; + break; } - success = true; - break; - } - case PLUGIN_WEBFORM_SAVE: - { - P155_MODEL = getFormItemInt(P155_MODEL_LABEL); - const uint8_t model = P155_MODEL; - for (uint8_t i = 0; i < P155_NR_OUTPUT_VALUES; ++i) + case PLUGIN_WEBFORM_SAVE: { - const uint8_t pconfigIndex = i + P155_QUERY1_CONFIG_POS; - const uint8_t choice = PCONFIG(pconfigIndex); - sensorTypeHelper_saveOutputSelector(event, pconfigIndex, i, - p155_getQueryValueString(choice, model)); + P155_MODEL = getFormItemInt(P155_MODEL_LABEL); + const uint8_t model = P155_MODEL; + + for (uint8_t i = 0; i < P155_NR_OUTPUT_VALUES; ++i) + { + const uint8_t pconfigIndex = i + P155_QUERY1_CONFIG_POS; + const uint8_t choice = PCONFIG(pconfigIndex); + sensorTypeHelper_saveOutputSelector(event, pconfigIndex, i, + p155_getQueryValueString(choice, model)); + } + p155_MyInit = false; + success = true; + break; } - p155_MyInit = false; - success = true; - break; - } - case PLUGIN_INIT: - { - if (P155_MySerial != nullptr) + case PLUGIN_INIT: { - delete P155_MySerial; - P155_MySerial = nullptr; - } - p155_deleteValues(P155_MODEL); + if (P155_MySerial != nullptr) + { + delete P155_MySerial; + P155_MySerial = nullptr; + } + p155_deleteValues(P155_MODEL); - p155_outputOptionsAct = (P155_MODEL == P155_MODEL_SML) + p155_outputOptionsAct = (P155_MODEL == P155_MODEL_SML) ? P155_NR_OUTPUT_OPTIONS_SML : P155_NR_OUTPUT_OPTIONS_D0; - const int16_t serial_rx = CONFIG_PIN1; - const int16_t serial_tx = CONFIG_PIN2; - const ESPEasySerialPort port = static_cast(CONFIG_PORT); + const int16_t serial_rx = CONFIG_PIN1; + const int16_t serial_tx = CONFIG_PIN2; + const ESPEasySerialPort port = static_cast(CONFIG_PORT); - P155_MySerial = new ESPeasySerial(port, serial_rx, serial_tx, false, P155_RX_BUFFER); - if (P155_MySerial == nullptr) - break; + P155_MySerial = new ESPeasySerial(port, serial_rx, serial_tx, false, P155_RX_BUFFER); + + if (P155_MySerial == nullptr) { + break; + } - const uint32_t serialConfig = (P155_MODEL == P155_MODEL_D0) ? SERIAL_7E1 : SERIAL_8N1; - P155_MySerial->begin(P155_BAUDRATE, serialConfig); + const uint32_t serialConfig = (P155_MODEL == P155_MODEL_D0) ? SERIAL_7E1 : SERIAL_8N1; + P155_MySerial->begin(P155_BAUDRATE, serialConfig); - p155_step = 0; - p155_scaleFactor = 1.0f; - p155_autoSubState = 0; - p155_skipBytes = 0; - p155_autoDataTyp = 0; - p155_listElems = 0; - p155_MyInit = true; - success = true; + p155_step = 0; + p155_scaleFactor = 1.0f; + p155_autoSubState = 0; + p155_skipBytes = 0; + p155_autoDataTyp = 0; + p155_listElems = 0; + p155_MyInit = true; + success = true; - if (loglevelActiveFor(LOG_LEVEL_INFO)) + if (loglevelActiveFor(LOG_LEVEL_INFO)) + { + String log = F("Smartmeter: Init="); + log += event->TaskIndex; + log += F(" Model="); + log += P155_MODEL; + log += F(" Port="); + log += (int)port; + log += F(" RX="); + log += serial_rx; + log += F(" TX="); + log += serial_tx; + addLogMove(LOG_LEVEL_INFO, log); + } + break; + } + + case PLUGIN_EXIT: { - String log = F("Smartmeter: Init="); - log += event->TaskIndex; - log += F(" Model="); - log += P155_MODEL; - log += F(" Port="); - log += (int)port; - log += F(" RX="); - log += serial_rx; - log += F(" TX="); - log += serial_tx; - addLogMove(LOG_LEVEL_INFO, log); + p155_MyInit = false; + + if (P155_MySerial != nullptr) + { + delete P155_MySerial; + P155_MySerial = nullptr; + } + p155_deleteValues(P155_MODEL_D0); + p155_deleteValues(P155_MODEL_SML); + break; } - break; - } - case PLUGIN_EXIT: - { - p155_MyInit = false; - if (P155_MySerial != nullptr) + case PLUGIN_READ: { - delete P155_MySerial; - P155_MySerial = nullptr; + if (p155_MyInit) + { + int model = P155_MODEL; + UserVar.setFloat(event->TaskIndex, 0, p155_readVal(P155_QUERY1, model)); + UserVar.setFloat(event->TaskIndex, 1, p155_readVal(P155_QUERY2, model)); + UserVar.setFloat(event->TaskIndex, 2, p155_readVal(P155_QUERY3, model)); + UserVar.setFloat(event->TaskIndex, 3, p155_readVal(P155_QUERY4, model)); + success = true; + } + break; } - p155_deleteValues(P155_MODEL_D0); - p155_deleteValues(P155_MODEL_SML); - break; - } - case PLUGIN_READ: - { - if (p155_MyInit) + case PLUGIN_TEN_PER_SECOND: { - int model = P155_MODEL; - UserVar.setFloat(event->TaskIndex, 0, p155_readVal(P155_QUERY1, model)); - UserVar.setFloat(event->TaskIndex, 1, p155_readVal(P155_QUERY2, model)); - UserVar.setFloat(event->TaskIndex, 2, p155_readVal(P155_QUERY3, model)); - UserVar.setFloat(event->TaskIndex, 3, p155_readVal(P155_QUERY4, model)); + if (P155_MODEL == P155_MODEL_D0) { + p155_handleSerialInD0(); + } + else { + p155_handleSerialInSML(); + } success = true; + break; } - break; - } - - case PLUGIN_TEN_PER_SECOND: - { - if (P155_MODEL == P155_MODEL_D0) - p155_handleSerialInD0(); - else - p155_handleSerialInSML(); - success = true; - break; - } } // switch return success; } @@ -382,10 +406,13 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String &string) // ============================================================ float p155_readVal(uint8_t query, unsigned int model) { - if (model == P155_MODEL_D0 && query < P155_NR_OUTPUT_OPTIONS_D0) + if ((model == P155_MODEL_D0) && (query < P155_NR_OUTPUT_OPTIONS_D0)) { return p155_myDataD0[query].value; - if (model == P155_MODEL_SML && query < P155_NR_OUTPUT_OPTIONS_SML) + } + + if ((model == P155_MODEL_SML) && (query < P155_NR_OUTPUT_OPTIONS_SML)) { return p155_myDataSML[query].value; + } return 0.0f; } @@ -395,148 +422,148 @@ unsigned int p155_getRegister(uint8_t query, uint8_t model) { switch (query) { - case 1: - return Q3D_TOTAL_ACTIVE_ENERGY; - case 2: - return Q3D_POWER_L1; - case 3: - return Q3D_POWER_L2; - case 4: - return Q3D_POWER_L3; - case 5: - return Q3D_POWER_TOTAL; + case 1: + return Q3D_TOTAL_ACTIVE_ENERGY; + case 2: + return Q3D_POWER_L1; + case 3: + return Q3D_POWER_L2; + case 4: + return Q3D_POWER_L3; + case 5: + return Q3D_POWER_TOTAL; } } else if (model == P155_MODEL_SML) { switch (query) { - case 1: - return DD3_TOTAL_ACTIVE_ENERGY_PLUS; - case 2: - return DD3_POWER_L1; - case 3: - return DD3_POWER_L2; - case 4: - return DD3_POWER_L3; - case 5: - return DD3_POWER_TOTAL; - case 6: - return DD3_TOTAL_ACTIVE_ENERGY_MINUS; - case 7: - return DD3_VOLT_L1; - case 8: - return DD3_VOLT_L2; - case 9: - return DD3_VOLT_L3; - case 10: - return DD3_CURRENT_L1; - case 11: - return DD3_CURRENT_L2; - case 12: - return DD3_CURRENT_L3; + case 1: + return DD3_TOTAL_ACTIVE_ENERGY_PLUS; + case 2: + return DD3_POWER_L1; + case 3: + return DD3_POWER_L2; + case 4: + return DD3_POWER_L3; + case 5: + return DD3_POWER_TOTAL; + case 6: + return DD3_TOTAL_ACTIVE_ENERGY_MINUS; + case 7: + return DD3_VOLT_L1; + case 8: + return DD3_VOLT_L2; + case 9: + return DD3_VOLT_L3; + case 10: + return DD3_CURRENT_L1; + case 11: + return DD3_CURRENT_L2; + case 12: + return DD3_CURRENT_L3; } } return 0; } -const __FlashStringHelper *p155_getQueryString(uint8_t query, uint8_t model) +const __FlashStringHelper* p155_getQueryString(uint8_t query, uint8_t model) { if (model == P155_MODEL_D0) { switch (query) { - case 1: - return F("Total Active Energy (kWh)"); - case 2: - return F("Power L1 (W)"); - case 3: - return F("Power L2 (W)"); - case 4: - return F("Power L3 (W)"); - case 5: - return F("Power Total (W)"); + case 1: + return F("Total Active Energy (kWh)"); + case 2: + return F("Power L1 (W)"); + case 3: + return F("Power L2 (W)"); + case 4: + return F("Power L3 (W)"); + case 5: + return F("Power Total (W)"); } } else if (model == P155_MODEL_SML) { switch (query) { - case 1: - return F("Total Active Energy Plus (kWh)"); - case 2: - return F("Power L1 (W)"); - case 3: - return F("Power L2 (W)"); - case 4: - return F("Power L3 (W)"); - case 5: - return F("Power Total (W)"); - case 6: - return F("Total Active Energy Minus (kWh)"); - case 7: - return F("Voltage L1 (V)"); - case 8: - return F("Voltage L2 (V)"); - case 9: - return F("Voltage L3 (V)"); - case 10: - return F("Current L1 (A)"); - case 11: - return F("Current L2 (A)"); - case 12: - return F("Current L3 (A)"); + case 1: + return F("Total Active Energy Plus (kWh)"); + case 2: + return F("Power L1 (W)"); + case 3: + return F("Power L2 (W)"); + case 4: + return F("Power L3 (W)"); + case 5: + return F("Power Total (W)"); + case 6: + return F("Total Active Energy Minus (kWh)"); + case 7: + return F("Voltage L1 (V)"); + case 8: + return F("Voltage L2 (V)"); + case 9: + return F("Voltage L3 (V)"); + case 10: + return F("Current L1 (A)"); + case 11: + return F("Current L2 (A)"); + case 12: + return F("Current L3 (A)"); } } return F(""); } -const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model) +const __FlashStringHelper* p155_getQueryValueString(uint8_t query, uint8_t model) { if (model == P155_MODEL_D0) { switch (query) { - case 1: - return F("Consumption_kWh"); - case 2: - return F("L1_W"); - case 3: - return F("L2_W"); - case 4: - return F("L3_W"); - case 5: - return F("L123_W"); + case 1: + return F("Consumption_kWh"); + case 2: + return F("L1_W"); + case 3: + return F("L2_W"); + case 4: + return F("L3_W"); + case 5: + return F("L123_W"); } } else if (model == P155_MODEL_SML) { switch (query) { - case 1: - return F("Energy_Consumption_kWh"); - case 2: - return F("L1_W"); - case 3: - return F("L2_W"); - case 4: - return F("L3_W"); - case 5: - return F("L123_W"); - case 6: - return F("Energy_FeedIn_kWh"); - case 7: - return F("L1_V"); - case 8: - return F("L2_V"); - case 9: - return F("L3_V"); - case 10: - return F("L1_A"); - case 11: - return F("L2_A"); - case 12: - return F("L3_A"); + case 1: + return F("Energy_Consumption_kWh"); + case 2: + return F("L1_W"); + case 3: + return F("L2_W"); + case 4: + return F("L3_W"); + case 5: + return F("L123_W"); + case 6: + return F("Energy_FeedIn_kWh"); + case 7: + return F("L1_V"); + case 8: + return F("L2_V"); + case 9: + return F("L3_V"); + case 10: + return F("L1_A"); + case 11: + return F("L2_A"); + case 12: + return F("L3_A"); } } return F(""); @@ -544,7 +571,7 @@ const __FlashStringHelper *p155_getQueryValueString(uint8_t query, uint8_t model // SML start sequence (ring buffer order: newest byte first) // Stream: 1B 1B 1B 1B 01 01 01 01 → ring buffer reversed: 01 01 01 01 1B 1B 1B 1B -static constexpr uint8_t P155_SML_startseq[] = {0x01, 0x01, 0x01, 0x01, 0x1B, 0x1B, 0x1B, 0x1B}; +static constexpr uint8_t P155_SML_startseq[] = { 0x01, 0x01, 0x01, 0x01, 0x1B, 0x1B, 0x1B, 0x1B }; // ============================================================ // Serial handler: SML (dynamic TL parsing) @@ -554,6 +581,7 @@ void p155_handleSerialInSML() if (nullptr == P155_MySerial) { static uint32_t lastLogTime{}; + if (timePassedSince(lastLogTime) > 1000) { addLog(LOG_LEVEL_INFO, F("SML: Serial nullptr")); @@ -563,19 +591,22 @@ void p155_handleSerialInSML() } const unsigned long start = millis(); - size_t available = P155_MySerial->available(); + size_t available = P155_MySerial->available(); while (available && timePassedSince(start) < 10) // while (P155_MySerial->available() && timePassedSince(start) < 100) { byte b = P155_MySerial->read(); available--; + if (available == 0) { available = P155_MySerial->available(); } + // Ring buffer for SML start-sequence detection: 1B 1B 1B 1B 01 01 01 01 - for (int i = 7; i > 0; i--) + for (int i = 7; i > 0; i--) { p155_ringBuffer[i] = p155_ringBuffer[i - 1]; + } p155_ringBuffer[0] = b; // static uint64_t p155_rxWindow = 0; @@ -588,254 +619,263 @@ void p155_handleSerialInSML() if (memcmp(p155_ringBuffer, P155_SML_startseq, NR_ELEMENTS(P155_SML_startseq)) == 0) { - p155_step = 11; - p155_charsRead = 0; - p155_registerAct = 0; - p155_anzBytes = 0; - p155_scaleFactor = 1.0f; + p155_step = 11; + p155_charsRead = 0; + p155_registerAct = 0; + p155_anzBytes = 0; + p155_scaleFactor = 1.0f; p155_autoSubState = 0; - p155_skipBytes = 0; - p155_listElems = 0; + p155_skipBytes = 0; + p155_listElems = 0; } switch (p155_step) { - // ------------------------------------------------------- - // States 11-13: find OBIS code - // ------------------------------------------------------- - case 11: // find ListEntry tag 0x77 - if (b == 0x77) - { - p155_step = 12; - p155_charsRead = 0; - } - break; + // ------------------------------------------------------- + // States 11-13: find OBIS code + // ------------------------------------------------------- + case 11: // find ListEntry tag 0x77 - case 12: // length byte must be 0x07 (6 OBIS bytes + TL) - p155_step = (b == 0x07) ? 13 : 11; - break; + if (b == 0x77) + { + p155_step = 12; + p155_charsRead = 0; + } + break; - case 13: // collect 6 OBIS bytes + case 12: // length byte must be 0x07 (6 OBIS bytes + TL) + p155_step = (b == 0x07) ? 13 : 11; + break; - if (p155_charsRead < 6) - p155_rxOrbis[p155_charsRead++] = b; + case 13: // collect 6 OBIS bytes - if (p155_charsRead >= 6) - { - p155_charsRead = 0; - p155_registerAct = 0; + if (p155_charsRead < 6) { + p155_rxOrbis[p155_charsRead++] = b; + } - // search OBIS Number in table - for (int i = 1; i < p155_outputOptionsAct; i++) + if (p155_charsRead >= 6) { - if (p155_byteArrayCompare(p155_rxOrbis, 6, p155_myDataSML[i].p155_rxOrbis, 6)) + p155_charsRead = 0; + p155_registerAct = 0; + + // search OBIS Number in table + for (int i = 1; i < p155_outputOptionsAct; i++) { - p155_registerAct = i; - break; + if (p155_byteArrayCompare(p155_rxOrbis, 6, p155_myDataSML[i].p155_rxOrbis, 6)) + { + p155_registerAct = i; + break; + } } - } - if (p155_registerAct != 0) - { - p155_scaleFactor = 1.0f; - p155_autoSubState = 0; - p155_skipBytes = 0; - p155_listElems = 0; - p155_step = 30; - p155_charsRead = 0; - } - else - { - p155_step = 11; // not found, keep searching + if (p155_registerAct != 0) + { + p155_scaleFactor = 1.0f; + p155_autoSubState = 0; + p155_skipBytes = 0; + p155_listElems = 0; + p155_step = 30; + p155_charsRead = 0; + } + else + { + p155_step = 11; // not found, keep searching + } } - } - break; + break; + + // ------------------------------------------------------- + // States 30-33: dynamic TL parsing + // + // TL-byte format: + // Bits 7-4: Type (0=optional/absent, 5=signed int, 6=uint, 7=list) + // Bits 3-0: Total length incl. TL-byte + // Primitive: dataBytes = bits3-0 - 1 + // List (Type 7): child count = bits3-0 (direct, NOT length-1) + // + // autoSubState: 0=Status, 1=Time, 2=Unit, 3=Scaler, 4=Value + // ------------------------------------------------------- + case 30: // read TL-byte of current field + { + uint8_t tlLen = (b & 0x0F); + uint8_t tlTyp = (b >> 4) & 0x07; + uint8_t dataBytes = (tlLen > 0) ? (tlLen - 1) : 0; - // ------------------------------------------------------- - // States 30-33: dynamic TL parsing - // - // TL-byte format: - // Bits 7-4: Type (0=optional/absent, 5=signed int, 6=uint, 7=list) - // Bits 3-0: Total length incl. TL-byte - // Primitive: dataBytes = bits3-0 - 1 - // List (Type 7): child count = bits3-0 (direct, NOT length-1) - // - // autoSubState: 0=Status, 1=Time, 2=Unit, 3=Scaler, 4=Value - // ------------------------------------------------------- - case 30: // read TL-byte of current field - { - uint8_t tlLen = (b & 0x0F); - uint8_t tlTyp = (b >> 4) & 0x07; - uint8_t dataBytes = (tlLen > 0) ? (tlLen - 1) : 0; +# ifndef BUILD_NO_DEBUG -#ifndef BUILD_NO_DEBUG - if (loglevelActiveFor(LOG_LEVEL_DEBUG) && p155_registerAct > 0) - { - String tl = F("SML-TL: reg="); - tl += p155_registerAct; - tl += F(" sub="); - tl += p155_autoSubState; - tl += F(" b=0x"); - tl += String(b, HEX); - tl += F(" typ="); - tl += tlTyp; - tl += F(" data="); - tl += dataBytes; - addLogMove(LOG_LEVEL_DEBUG, tl); - } -#endif + if (loglevelActiveFor(LOG_LEVEL_DEBUG) && (p155_registerAct > 0)) + { + String tl = F("SML-TL: reg="); + tl += p155_registerAct; + tl += F(" sub="); + tl += p155_autoSubState; + tl += F(" b=0x"); + tl += String(b, HEX); + tl += F(" typ="); + tl += tlTyp; + tl += F(" data="); + tl += dataBytes; + addLogMove(LOG_LEVEL_DEBUG, tl); + } +# endif // ifndef BUILD_NO_DEBUG - if (p155_autoSubState < 3) - { - // Status (0), Time (1), Unit (2) - if (tlTyp == 7) + if (p155_autoSubState < 3) { - // List type: bits3-0 = direct child count (NOT byte length) - // e.g. 0x72: 2 children (typical SML_Time with timestamp) - if (tlLen == 0) + // Status (0), Time (1), Unit (2) + if (tlTyp == 7) { - p155_autoSubState++; + // List type: bits3-0 = direct child count (NOT byte length) + // e.g. 0x72: 2 children (typical SML_Time with timestamp) + if (tlLen == 0) + { + p155_autoSubState++; + } + else + { + p155_listElems = tlLen; + p155_step = 36; + } + } + else if (dataBytes == 0) + { + p155_autoSubState++; // Field not present → continue + // State 30 remains, reads next TL } else { - p155_listElems = tlLen; - p155_step = 36; + p155_skipBytes = dataBytes; + p155_step = 31; // skip bytes } } - else if (dataBytes == 0) + else if (p155_autoSubState == 3) { - p155_autoSubState++; // Field not present → continue - // State 30 remains, reads next TL + // Scaler field + if (dataBytes == 0) + { + p155_scaleFactor = 1.0f; // no scaler present + p155_autoSubState++; + } + else + { + p155_step = 32; // read 1 scaler byte + } } - else + else if (p155_autoSubState == 4) { - p155_skipBytes = dataBytes; - p155_step = 31; // skip bytes + // Value field + if (dataBytes == 0) + { + p155_step = 11; + } // no value - abort + else + { + p155_autoDataTyp = tlTyp; + p155_anzBytes = dataBytes; + p155_charsRead = 0; + p155_step = 33; + } } + break; } - else if (p155_autoSubState == 3) - { - // Scaler field - if (dataBytes == 0) + + case 31: // skip bytes (primitive Status/Time/Unit) + p155_skipBytes--; + + if (p155_skipBytes == 0) { - p155_scaleFactor = 1.0f; // no scaler present p155_autoSubState++; + p155_step = 30; // read next TL-Byte } - else - { - p155_step = 32; // read 1 scaler byte - } - } - else if (p155_autoSubState == 4) - { - // Value field - if (dataBytes == 0) - { - p155_step = 11; - } // no value - abort - else - { - p155_autoDataTyp = tlTyp; - p155_anzBytes = dataBytes; - p155_charsRead = 0; - p155_step = 33; - } - } - break; - } + break; - case 31: // skip bytes (primitive Status/Time/Unit) - p155_skipBytes--; - if (p155_skipBytes == 0) + case 32: // read scaler byte (int8, signed) { + const int8_t scalerRaw = b; + p155_scaleFactor = (scalerRaw != 0) ? powf(10.0f, (float)(scalerRaw)) : 1.0f; p155_autoSubState++; - p155_step = 30; // read next TL-Byte + p155_step = 30; // continue with Value-TL + break; } - break; - case 32: // read scaler byte (int8, signed) - { - const int8_t scalerRaw = b; - p155_scaleFactor = (scalerRaw != 0) ? powf(10.0f, (float)(scalerRaw)) : 1.0f; - p155_autoSubState++; - p155_step = 30; // continue with Value-TL - break; - } - - case 33: // collect value bytes + case 33: // collect value bytes - if (p155_charsRead < P155_RX_BUFFER - 1) - p155_rxBuffer[p155_charsRead++] = b; + if (p155_charsRead < P155_RX_BUFFER - 1) { + p155_rxBuffer[p155_charsRead++] = b; + } - if (p155_charsRead >= p155_anzBytes) + if (p155_charsRead >= p155_anzBytes) + { + p155_parseValuesSML(); + p155_step = 11; + } + break; + + // ------------------------------------------------------- + // States 36-37: skip list type (type=7) child elements + // Required for SML_Time with timestamp, e.g.: + // 72 62 01 65 xx xx xx xx (list with 2 child elements) + // ------------------------------------------------------- + case 36: // read TL-byte of a list child element { - p155_parseValuesSML(); - p155_step = 11; - } - break; - - // ------------------------------------------------------- - // States 36-37: skip list type (type=7) child elements - // Required for SML_Time with timestamp, e.g.: - // 72 62 01 65 xx xx xx xx (list with 2 child elements) - // ------------------------------------------------------- - case 36: // read TL-byte of a list child element - { - uint8_t cLen = (b & 0x0F); - uint8_t cTyp = (b >> 4) & 0x07; - uint8_t cData = (cLen > 0) ? (cLen - 1) : 0; + uint8_t cLen = (b & 0x0F); + uint8_t cTyp = (b >> 4) & 0x07; + uint8_t cData = (cLen > 0) ? (cLen - 1) : 0; - if (cTyp == 7) - { - // Nested list: replace current element with its children - p155_listElems = p155_listElems - 1 + (cLen > 0 ? cLen : 0); - } - else - { - p155_listElems--; - if (cData > 0) + if (cTyp == 7) { - p155_skipBytes = cData; - p155_step = 37; // skip Data, then back to 36 or 30 - break; + // Nested list: replace current element with its children + p155_listElems = p155_listElems - 1 + (cLen > 0 ? cLen : 0); + } + else + { + p155_listElems--; + + if (cData > 0) + { + p155_skipBytes = cData; + p155_step = 37; // skip Data, then back to 36 or 30 + break; + } } - } - if (p155_listElems == 0) - { - p155_autoSubState++; - p155_step = 30; - } - break; // otherwise 36 - } - case 37: // skip data bytes of a list child element - p155_skipBytes--; - if (p155_skipBytes == 0) - { if (p155_listElems == 0) { p155_autoSubState++; p155_step = 30; } - else - { - p155_step = 36; // next childelement - } + break; // otherwise 36 } - break; - default: - p155_step = 0; - p155_charsRead = 0; - p155_anzBytes = 0; - p155_registerAct = 0; - p155_autoSubState = 0; - p155_listElems = 0; - break; + case 37: // skip data bytes of a list child element + p155_skipBytes--; + + if (p155_skipBytes == 0) + { + if (p155_listElems == 0) + { + p155_autoSubState++; + p155_step = 30; + } + else + { + p155_step = 36; // next childelement + } + } + break; + + default: + p155_step = 0; + p155_charsRead = 0; + p155_anzBytes = 0; + p155_registerAct = 0; + p155_autoSubState = 0; + p155_listElems = 0; + break; } } // while serial available -#ifndef BUILD_NO_DEBUG +# ifndef BUILD_NO_DEBUG + if (loglevelActiveFor(LOG_LEVEL_DEBUG)) { String log1 = F("SML: step="); @@ -846,7 +886,7 @@ void p155_handleSerialInSML() log1 += p155_registerAct; addLogMove(LOG_LEVEL_DEBUG, log1); } -#endif +# endif // ifndef BUILD_NO_DEBUG } // ============================================================ @@ -857,6 +897,7 @@ void p155_handleSerialInD0() if (nullptr == P155_MySerial) { static uint32_t lastLogTime{}; + if (timePassedSince(lastLogTime) > 1000) { addLog(LOG_LEVEL_INFO, F("D0: Serial nullptr")); @@ -866,11 +907,12 @@ void p155_handleSerialInD0() } const unsigned long start = millis(); - size_t available = P155_MySerial->available(); + size_t available = P155_MySerial->available(); while (available && timePassedSince(start) < 10) { --available; + if (available == 0) { available = P155_MySerial->available(); @@ -887,17 +929,19 @@ void p155_handleSerialInD0() if (c == '(') { p155_rxBuffer[p155_charsRead] = '\0'; - p155_rxID = String(p155_rxBuffer); - p155_charsRead = 0; + p155_rxID = String(p155_rxBuffer); + p155_charsRead = 0; } else if (c == ')') { p155_rxBuffer[p155_charsRead] = '\0'; - if (p155_charsRead > 1) + + if (p155_charsRead > 1) { p155_parseValuesD0(); + } p155_charsRead = 0; } - else if (c == 0x0D || c == 0x0A) + else if ((c == 0x0D) || (c == 0x0A)) { p155_charsRead = 0; } @@ -913,25 +957,31 @@ void p155_handleSerialInD0() // ============================================================ void p155_parseValuesSML() { - if (p155_registerAct >= P155_NR_OUTPUT_OPTIONS_SML) + if (p155_registerAct >= P155_NR_OUTPUT_OPTIONS_SML) { return; + } const int startByte = (p155_anzBytes > 4) ? (p155_anzBytes - 4) : 0; const int readBytes = (p155_anzBytes > 4) ? 4 : p155_anzBytes; float lvalue = 0.0f; + if (p155_autoDataTyp == 5) // signed int { int32_t raw = 0; - if (!p155_readInt32(startByte, readBytes, raw)) + + if (!p155_readInt32(startByte, readBytes, raw)) { return; + } lvalue = raw; } else // unsigned (type 6) or unknown { uint32_t raw = 0; - if (!p155_readUint32(startByte, readBytes, raw)) + + if (!p155_readUint32(startByte, readBytes, raw)) { return; + } lvalue = raw; } @@ -959,6 +1009,7 @@ void p155_parseValuesSML() void p155_parseValuesD0() { int i = 1; + for (; i < p155_outputOptionsAct; i++) { if (p155_rxID == p155_myDataD0[i].p155_rxID) @@ -968,11 +1019,13 @@ void p155_parseValuesD0() } } -#ifndef BUILD_NO_DEBUG +# ifndef BUILD_NO_DEBUG + if (loglevelActiveFor(LOG_LEVEL_DEBUG)) { String log = F("D0 Parse: ID="); log += p155_rxID; + if (i < p155_outputOptionsAct) { log += F(" reg="); @@ -986,7 +1039,7 @@ void p155_parseValuesD0() } addLogMove(LOG_LEVEL_DEBUG, log); } -#endif +# endif // ifndef BUILD_NO_DEBUG } // ============================================================ @@ -994,54 +1047,75 @@ void p155_parseValuesD0() // ============================================================ // Read numBytes (1-4) big-endian from rxBuffer at startByte → uint32_t -bool p155_readUint32(int startByte, int numBytes, uint32_t &result) +bool p155_readUint32(int startByte, int numBytes, uint32_t& result) { - if (numBytes < 1 || numBytes > 4) + if ((numBytes < 1) || (numBytes > 4)) { return false; - if ((startByte + numBytes) > p155_charsRead) + } + + if ((startByte + numBytes) > p155_charsRead) { return false; - if ((startByte + numBytes) > P155_RX_BUFFER) + } + + if ((startByte + numBytes) > P155_RX_BUFFER) { return false; + } result = 0; - for (int i = 0; i < numBytes; i++) + + for (int i = 0; i < numBytes; i++) { result = (result << 8) | (uint8_t)p155_rxBuffer[startByte + i]; + } return true; } // Read numBytes (1-4) big-endian from rxBuffer at startByte → int32_t (sign-extended) -bool p155_readInt32(int startByte, int numBytes, int32_t &result) +// +// Sign extension via arithmetic right shift: +// 1. Shift LEFT so the sign bit of the original data lands at bit 31 +// 2. Shift RIGHT (arithmetic) fills all upper bits with the sign bit +// +// Example: 0xFF read as 1 byte +// shift = (4-1)*8 = 24 +// 0x000000FF << 24 = 0xFF000000 (sign bit at bit 31) +// 0xFF000000 >> 24 = 0xFFFFFFFF (arithmetic fill → -1) +bool p155_readInt32(int startByte, int numBytes, int32_t& result) { uint32_t raw = 0; - if (!p155_readUint32(startByte, numBytes, raw)) + + if (!p155_readUint32(startByte, numBytes, raw)) { return false; - result = static_cast(raw); - if (numBytes == 1 && (raw & 0x80)) - result |= (int32_t)0xFFFFFF00; - else if (numBytes == 2 && (raw & 0x8000)) - result |= (int32_t)0xFFFF0000; - else if (numBytes == 3 && (raw & 0x800000)) - result |= (int32_t)0xFF000000; + } + const int shift = (4 - numBytes) * 8; + result = (raw << shift) >> shift; return true; } bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len) { - if (a1len != a2len) + if (a1len != a2len) { return false; - for (int i = 0; i < a1len; i++) - if (a1[i] != a2[i]) + } + + for (int i = 0; i < a1len; i++) { + if (a1[i] != a2[i]) { return false; + } + } return true; } void p155_deleteValues(unsigned int model) { - if (model == P155_MODEL_D0) - for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_D0; i++) + if (model == P155_MODEL_D0) { + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_D0; i++) { p155_myDataD0[i].value = 0; - else if (model == P155_MODEL_SML) - for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_SML; i++) + } + } + else if (model == P155_MODEL_SML) { + for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_SML; i++) { p155_myDataSML[i].value = 0; + } + } } -#endif // USES_P155 \ No newline at end of file +#endif // USES_P155 From 6a1bd86901c747d952eebf383a725961fa747fc0 Mon Sep 17 00:00:00 2001 From: Peter Emke Date: Thu, 14 May 2026 12:17:01 +0200 Subject: [PATCH 6/7] Fix cast int32 --- src/_P155_Smartmeter.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_P155_Smartmeter.ino b/src/_P155_Smartmeter.ino index 4cb8648b75..cf0acfc538 100644 --- a/src/_P155_Smartmeter.ino +++ b/src/_P155_Smartmeter.ino @@ -1086,7 +1086,7 @@ bool p155_readInt32(int startByte, int numBytes, int32_t& result) return false; } const int shift = (4 - numBytes) * 8; - result = (raw << shift) >> shift; + result = static_cast(raw << shift) >> shift; return true; } From 84eb3985146b53398fad8fd68c1f9ff1de1ffd25 Mon Sep 17 00:00:00 2001 From: Peter Emke Date: Mon, 18 May 2026 10:11:04 +0200 Subject: [PATCH 7/7] Changes for PR #5542 #1 use consistent datatypes #2 change comments --- src/_P155_Smartmeter.ino | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/_P155_Smartmeter.ino b/src/_P155_Smartmeter.ino index cf0acfc538..8c5738d1f1 100644 --- a/src/_P155_Smartmeter.ino +++ b/src/_P155_Smartmeter.ino @@ -79,10 +79,10 @@ const __FlashStringHelper* p155_getQueryString(uint8_t query, uint8_t model); const __FlashStringHelper* p155_getQueryValueString(uint8_t query, uint8_t model); -unsigned int p155_getRegister(uint8_t query, +uint16_t p155_getRegister(uint8_t query, uint8_t model); -float p155_readVal(uint8_t query, - unsigned int model); +float p155_readVal(uint8_t query, + uint8_t model); void p155_handleSerialInD0(); void p155_handleSerialInSML(); void p155_parseValuesD0(); @@ -97,7 +97,7 @@ bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len); -void p155_deleteValues(unsigned int model); +void p155_deleteValues(uint8_t model); // ============================================================ // Data structures @@ -404,7 +404,7 @@ boolean Plugin_155(uint8_t function, struct EventStruct *event, String& string) // ============================================================ // Helper functions // ============================================================ -float p155_readVal(uint8_t query, unsigned int model) +float p155_readVal(uint8_t query, uint8_t model) { if ((model == P155_MODEL_D0) && (query < P155_NR_OUTPUT_OPTIONS_D0)) { return p155_myDataD0[query].value; @@ -416,7 +416,7 @@ float p155_readVal(uint8_t query, unsigned int model) return 0.0f; } -unsigned int p155_getRegister(uint8_t query, uint8_t model) +uint16_t p155_getRegister(uint8_t query, uint8_t model) { if (model == P155_MODEL_D0) { @@ -590,8 +590,8 @@ void p155_handleSerialInSML() return; } - const unsigned long start = millis(); - size_t available = P155_MySerial->available(); + const uint32_t start = millis(); + size_t available = P155_MySerial->available(); while (available && timePassedSince(start) < 10) // while (P155_MySerial->available() && timePassedSince(start) < 100) { @@ -906,8 +906,8 @@ void p155_handleSerialInD0() return; } - const unsigned long start = millis(); - size_t available = P155_MySerial->available(); + const uint32_t start = millis(); + size_t available = P155_MySerial->available(); while (available && timePassedSince(start) < 10) { @@ -1068,16 +1068,18 @@ bool p155_readUint32(int startByte, int numBytes, uint32_t& result) return true; } -// Read numBytes (1-4) big-endian from rxBuffer at startByte → int32_t (sign-extended) +// static_cast(raw << shift) >> shift +// raw << shift : uint32_t logical left shift → sign bit of data moves to bit 31 +// static_cast : reinterpret as int32_t → bit 31 becomes the sign bit +// >> shift : int32_t arithmetic right shift → sign bit is repeated into upper bits // -// Sign extension via arithmetic right shift: -// 1. Shift LEFT so the sign bit of the original data lands at bit 31 -// 2. Shift RIGHT (arithmetic) fills all upper bits with the sign bit +// 0xFF, numBytes=1, shift=24: +// uint32_t: 0x000000FF << 24 = 0xFF000000 +// int32_t: 0xFF000000 >> 24 = 0xFFFFFFFF (-1) sign bit=1 → filled with 1s // -// Example: 0xFF read as 1 byte -// shift = (4-1)*8 = 24 -// 0x000000FF << 24 = 0xFF000000 (sign bit at bit 31) -// 0xFF000000 >> 24 = 0xFFFFFFFF (arithmetic fill → -1) +// 0x7F, numBytes=1, shift=24: +// uint32_t: 0x0000007F << 24 = 0x7F000000 +// int32_t: 0x7F000000 >> 24 = 0x0000007F (+127) sign bit=0 → filled with 0s bool p155_readInt32(int startByte, int numBytes, int32_t& result) { uint32_t raw = 0; @@ -1104,7 +1106,7 @@ bool p155_byteArrayCompare(byte a1[], int a1len, byte a2[], int a2len) return true; } -void p155_deleteValues(unsigned int model) +void p155_deleteValues(uint8_t model) { if (model == P155_MODEL_D0) { for (int i = 0; i < P155_NR_OUTPUT_OPTIONS_D0; i++) {