From f6d0f3c598f0b1216107f35883d80fff956fba9d Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:56:53 +1200 Subject: [PATCH 01/46] Bump version to 2024.9.0-dev --- Doxygen | 2 +- _static/version | 2 +- conf.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index cdff1cae97..da27607a96 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2024.8.0-dev +PROJECT_NUMBER = 2024.9.0-dev # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/_static/version b/_static/version index 092c4094c9..620b3657cd 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.8.0-dev \ No newline at end of file +2024.9.0-dev \ No newline at end of file diff --git a/conf.py b/conf.py index d9d29eb021..40c12c45e1 100644 --- a/conf.py +++ b/conf.py @@ -67,9 +67,9 @@ # built documents. # # The short X.Y version. -version = "2024.8" +version = "2024.9" # The full version, including alpha/beta/rc tags. -release = "2024.8.0-dev" +release = "2024.9.0-dev" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 5954531cd0e82648e8c0edb499644b7a16d76c4c Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 19 Aug 2024 08:44:29 +1000 Subject: [PATCH 02/46] [lvgl] Update layout docs (#4165) --- components/lvgl/index.rst | 37 ++++++++++++++- components/lvgl/widgets.rst | 91 ++++++++++++++++++++++++++++++------- 2 files changed, 110 insertions(+), 18 deletions(-) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index 50648ea8ae..16b903a309 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -436,11 +436,27 @@ It can arrange items into rows or columns (tracks), handle wrapping, adjust spac - **pad_row** (*Optional*, int16): Set the padding between the rows, in pixels. - **pad_column** (*Optional*, int16): Set the padding between the columns, in pixels. - - **flex_grow** (*Optional*, int16): Flex grow can be used to make one or more children fill the available space on the track. When more children have grow parameters, the available space will be distributed proportionally to the grow values. Defaults to ``0``, which disables growing. + - **flex_grow** (*Optional*, int16): Can be used to make one or more children fill the available space on the track. When one or more children have ``flex_grow`` set, the available space will be distributed proportionally to the grow values. Defaults to ``0``, which disables growing. + +.. code-block:: yaml + + # Example flex layout + + - obj: + layout: + type: flex + pad_row: 4 + pad_column: 4px + flex_align_main: center + flex_align_cross: start + flex_align_track: end + widgets: + - animimg: + flex_grow: 1 **Grid** -The Grid layout in LVGL is a subset implementation of `CSS Flexbox `__. +The Grid layout in LVGL is a subset implementation of `CSS Grid `__. It can arrange items into a 2D "table" that has rows or columns (tracks). The item(s) can span through multiple columns or rows. The track's size can be set in pixels, to the largest item of the track (``CONTENT``) or in "free units" to distribute the free space proportionally. @@ -482,6 +498,23 @@ Values for use with ``grid_column_align``, ``grid_row_align``, ``grid_cell_x_ali - ``SPACE_AROUND``: items are evenly distributed in the track with equal space around them. Note that visually the spaces aren’t equal, since all the items have equal space on both sides. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies. - ``SPACE_BETWEEN``: items are evenly distributed in the track: first item is on the start line, last item on the end line. +.. code-block:: yaml + + # Example grid layout + + - obj: + layout: + type: grid + grid_row_align: end + grid_rows: [25px, fr(1), content] + grid_columns: [40, fr(1), fr(1)] + pad_row: 6px + pad_column: 0 + widgets: + - image: + grid_cell_row_pos: 0 + grid_cell_column_pos: 0 + .. tip:: To visualize real, calculated sizes of transparent widgets you can temporarily set ``outline_width: 1`` on them. diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 1700ee2b38..ea9ac7ee88 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -116,6 +116,67 @@ In addition to visual styling, each widget supports some boolean **flags** to in LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. +Widget-specific properties +-------------------------- + +Some widgets have properties that are specific to that widget. For example ``label`` has a ``text`` property. The properties +specific to a widget are described in each section below. Some of these properties may also be updated with a corresponding +``lvgl..update`` action, e.g. ``lvgl.label.update`` allows updating not only the common style properties, +but also the ``text`` property of a label. + + +.. _text-property: + +Text property +------------- + +Several widgets have a ``text`` property, and the possible ways this can be specified are common to all ``text`` properties. +The text may be a Unicode string or other constant convertible to a string; if the string is enclosed in double quotes ``""`` then +standard escape sequences sucn as newline ``\n`` and Unicode codepoints will be translated. +The text value may also be a lambda returning a ``std::string`` or may be +specified with a ``format`` property utilising ``printf`` style formatting. There is also a ``time_format`` option +which allows use of `strftime `_ formats. + + +**Examples:** + +.. code-block:: yaml + + # Example label + - label: + id: label_id + text: "Text string" + - checkbox: + id: checkbox_id + text: "\uF00C" # Unicode check-mark + + + on_...: + - lvgl.label.update: + id: label_id + text: + format: "%d bells, %d things" + args: [x, 10] # x is a value from the enclosing trigger. + - lvgl.label.update: + id: label_id + text: !lambda return id(text_sensor).state; + - lvgl.label.update: + id: label_id + text: + time_format: "%c" # uses default time component + - lvgl.checkbox.update: + id: checkbox_id + text: + time_format: "%c" + time: sntp_id + - lvgl.label.update: + id: label_id + text: + time_format: "%c" + time: !lambda return id(sntp_id).utcnow(); + + + .. _lvgl-widget-animimg: ``animimg`` @@ -388,7 +449,7 @@ The button matrix widget is a lightweight way to display multiple buttons in row - **id** (*Optional*): An ID for the button in the matrix. - **key_code** (*Optional*, string): One character be sent as the key code to a :ref:`key_collector` instead of ``text`` when the button is pressed. - **selected** (*Optional*, boolean): Set the button as the most recently released or focused. Defaults to ``false``. - - **text** (*Optional*): Text (or built-in :ref:`symbol ` codepoint) to display on the button. + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. - **width** (*Optional*): Width relative to the other buttons in the same row. Must be a value between ``1`` and ``15``; the default is ``1`` (for example, given a line with two buttons, one with ``width: 1`` and another one with ``width: 2``, the first will be ``33%`` wide while the second will be ``66%`` wide). - **control** (*Optional*): Binary flags to control behavior of the buttons (all ``false`` by default): - **checkable** (*Optional*, boolean): Enable toggling of a button, ``checked`` state will be added/removed as the button is clicked. @@ -522,9 +583,7 @@ The checkbox widget is made internally from a *tick box* and a label. When the c - ``lvgl.checkbox.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. - **id** (**Required**): The ID or a list of IDs of checkbox widgets which you want update. - - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). - - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. - - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - **text** (*Optional*, :ref:`text-property`): Text to display beside the checkbox. - Widget styles or properties from the specific options above, which you want update. **Triggers:** @@ -799,7 +858,7 @@ A label is the basic widget type that is used to display text. - **text_letter_space** (*Optional*, int16): Extra character spacing of the text. Inherited from parent. Defaults to ``0``. - **text_line_space** (*Optional*, int16): Line spacing of the text. Inherited from parent. Defaults to ``0``. - **text_opa** (*Optional*, :ref:`opacity `): Opacity of the text. Inherited from parent. Defaults to ``COVER``. -- **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display. To display an empty label, specify ``""``. +- **text** (*Optional*, :ref:`text-property`): Text to display on the label. - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. The padding values can be used to add space between the text and the background. .. note:: @@ -810,9 +869,7 @@ A label is the basic widget type that is used to display text. - ``lvgl.label.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. - **id** (**Required**): The ID or a list of IDs of label widgets which you want update. - - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). - - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. - - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. - Widget styles or properties from the specific options above, which you want update. **Triggers:** @@ -1060,13 +1117,14 @@ The text will be broken into multiple lines automatically and the height will be **Configuration variables:** - **msgboxes** (*Optional*, dict): A list of message boxes to use. This option has to be added to the top level of the LVGL component configuration. - - **body** (**Required**, dict): The content of the body of the message box: - - **text** (**Required**, string): The string to be displayed in the body of the message box. Can be shorthanded if no further options are specified. - - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. - - **buttons** (**Required**, dict): A list of buttons to show at the bottom of the message box: - - **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display on the button. - - **close_button** (**Required**, boolean): Controls the appearance of the close button to the top right of the message box. - **title** (**Required**, string): A string to display at the top of the message box. + - **body** (*Optional*, dict): The content of the body of the message box: + - **text** (*Optional*, :ref:`text-property`): The text to display in the body of the message box. + - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. + - **buttons** (*Optional*, list): A list of buttons to show at the bottom of the message box: + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. + - See :ref:`lvgl-widget-buttonmatrix` for other options for the buttons. + - **close_button** (*Optional*, boolean): Controls the appearance of the close button to the top right of the message box. **Actions:** @@ -1527,14 +1585,15 @@ The textarea is an extended label widget which displays a cursor and allows the - **max_length** (*Optional*, int): Limit the maximum number of characters to this value. - **one_line** (*Optional*, boolean): The text area can be limited to only allow a single line of text. In this case the height will set automatically to fit only one line, line break characters will be ignored, and word wrap will be disabled. - **password_mode** (*Optional*, boolean): The text area supports password mode. By default, if the ``•`` (bullet, ``0x2022``) glyph exists in the font, the entered characters are converted to it after some time or when a new character is entered. If ``•`` is missing from the font, ``*`` (asterisk) will be used. -- **placeholder_text** (*Optional*, string): A placeholder text can be specified, which is displayed when the Text area is empty. +- **text** (*Optional*, :ref:`text-property`): Initial contents of the textarea. +- **placeholder_text** (*Optional*, :ref:`text-property`): A placeholder text can be specified, which is displayed when the Text area is empty. - any :ref:`Styling ` and state-based option for the background of the textarea. Uses all the typical background style properties and the text/label related style properties for the text. **Actions:** - ``lvgl.textarea.update`` :ref:`action ` updates the widget's ``text`` property, to replace the entire text content. - **id** (**Required**): The ID or a list of IDs of textarea widgets which you want update. - - **text** (**Required**): The new text content to be displayed. + - **text** (*Optional*, :ref:`text-property`): The text to replace the textarea content. **Triggers:** From 78acfdf550406d34a29f2d9141614162fe76fbb9 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Thu, 22 Aug 2024 02:58:14 +0200 Subject: [PATCH 03/46] Add output source priority "hybrid" (#4175) --- components/pipsolar.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/pipsolar.rst b/components/pipsolar.rst index 466be5ab39..b6cb09678b 100644 --- a/components/pipsolar.rst +++ b/components/pipsolar.rst @@ -242,6 +242,8 @@ Not all possible switches are exposed as they lead to the possibility to make se name: inverter0_output_source_priority_solar output_source_priority_battery: name: inverter0_output_source_priority_battery + output_source_priority_hybrid: + name: inverter0_output_source_priority_hybrid input_voltage_range: name: inverter0_input_voltage_range pv_ok_condition_for_parallel: @@ -256,6 +258,7 @@ All sensors are normal text sensors... so all text sensor variables are working - **output_source_priority_utility** (*Optional*): output source priority utility - **output_source_priority_solar** (*Optional*): output source priority solar - **output_source_priority_battery** (*Optional*): output source priority battery +- **output_source_priority_hybrid** (*Optional*): output source priority hybrid - **input_voltage_range** (*Optional*): input voltage range - **pv_ok_condition_for_parallel** (*Optional*): pv ok condition for parallel - **pv_power_balance** (*Optional*): pv power balance From b8582c08e50f80b2b047b94ba261b74faef9dfe3 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Wed, 21 Aug 2024 17:58:53 -0700 Subject: [PATCH 04/46] Enable verbose mode from env ESPHOME_VERBOSE or --verbose (#3992) --- guides/cli.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/cli.rst b/guides/cli.rst index 37910334ca..7dc145a681 100644 --- a/guides/cli.rst +++ b/guides/cli.rst @@ -39,6 +39,7 @@ ESPHome's command line interface always has the following format .. option:: -v|--verbose Enable verbose esphome logs. + Can also be enabled via environment variable ``ESPHOME_VERBOSE=true``. ``--quiet`` Option ------------------ From 90cad7dcc887ef00eb699f5739c20f077e574e98 Mon Sep 17 00:00:00 2001 From: Piotr Szulc Date: Thu, 22 Aug 2024 02:59:38 +0200 Subject: [PATCH 05/46] Tuya number: added description of new datapoint_hidden yaml key (#4010) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/number/tuya.rst | 21 +++++++++++++++++++++ components/tuya.rst | 1 + 2 files changed, 22 insertions(+) diff --git a/components/number/tuya.rst b/components/number/tuya.rst index bf05ac960f..3b87b76520 100644 --- a/components/number/tuya.rst +++ b/components/number/tuya.rst @@ -61,6 +61,23 @@ For instance, assume we have a pH sensor that reads from 0.00 to 15.00 with a sc max_value: 15.00 multiply: 100 +Hidden datapoints: +------------------ +The above configurations will work fine as long as Tuya device publishes the datapoint value (along with its type) at initialization. +However this is not always the case. To be able to use such "hidden" datapoints as Number, you need to specify additional ``datapoint_hidden`` configuration block. +This block allows to specify the missing datapoint type and, optionally, the value that should be written to the datapoint at initialization. + +.. code-block:: yaml + + - platform: "tuya" + name: "Alarm at maximum" + number_datapoint: 116 + min_value: 0 + max_value: 100 + datapoint_hidden: + datapoint_type: int + initial_value: 85 + Configuration variables: ------------------------ @@ -69,6 +86,10 @@ Configuration variables: - **max_value** (**Required**, float): The maximum value this number can be. - **step** (*Optional*, float): The granularity with which the number can be set. Defaults to 1. - **multiply** (*Optional*, float): multiply the new value with this factor before sending the requests. +- **datapoint_hidden** (*Optional*): Specify information required for hidden datapoints. + + - **datapoint_type** (**Required**, string): The datapoint type, one of *int*, *uint*, *enum*. + - **initial_value** (*Optional*, float): The value to be written at initialization. Must be between ``min_value`` and ``max_value``. - All other options from :ref:`Number `. diff --git a/components/tuya.rst b/components/tuya.rst index d941b8cf6c..57596d6dd2 100644 --- a/components/tuya.rst +++ b/components/tuya.rst @@ -140,5 +140,6 @@ See Also - :doc:`/components/binary_sensor/tuya` - :doc:`/components/sensor/tuya` - :doc:`/components/text_sensor/tuya` +- :doc:`/components/number/tuya` - :apiref:`tuya/tuya.h` - :ghedit:`Edit` From b5003314a73c518f93bdc97a26867a189528ca1c Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Mon, 26 Aug 2024 23:41:12 +0100 Subject: [PATCH 06/46] bl0942: Add address and line_frequency options (#4126) --- components/sensor/bl0942.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/sensor/bl0942.rst b/components/sensor/bl0942.rst index b2757725ee..e75d66aca9 100644 --- a/components/sensor/bl0942.rst +++ b/components/sensor/bl0942.rst @@ -59,6 +59,8 @@ Configuration variables: sensor. Defaults to ``60s``. - **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component ` if you want to use multiple UART buses. +- **line_frequency** (*Optional*, string): The nominal AC line frequency of the supply voltage. One of ``50Hz``, ``60Hz``. Defaults to ``50Hz``. +- **address** (*Optional*, int): The address of the BL0942 from its strapping pins. Defaults to ``0``. See Also -------- From 16a8c052a4ef8bef9eddfbce3ce435c63430b038 Mon Sep 17 00:00:00 2001 From: Angel Nunez Mencias Date: Tue, 27 Aug 2024 03:26:03 +0200 Subject: [PATCH 07/46] Esp32_rmt_led_strip_reset (#4194) --- components/light/esp32_rmt_led_strip.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/light/esp32_rmt_led_strip.rst b/components/light/esp32_rmt_led_strip.rst index cb19142449..f46e05716a 100644 --- a/components/light/esp32_rmt_led_strip.rst +++ b/components/light/esp32_rmt_led_strip.rst @@ -67,6 +67,10 @@ please consider adding support to the codebase and add it to the list above. - **bit0_low** (*Optional*, :ref:`config-time`): The time to hold the data line low for a ``0`` bit. - **bit1_high** (*Optional*, :ref:`config-time`): The time to hold the data line high for a ``1`` bit. - **bit1_low** (*Optional*, :ref:`config-time`): The time to hold the data line low for a ``1`` bit. +- **reset_high** (*Optional*, :ref:`config-time`): The time to hold the data line high after writing + the state. Defaults to ``0 us``. +- **reset_low** (*Optional*, :ref:`config-time`): The time to hold the data line low after writing + the state. Defaults to ``0 us``. See Also -------- From f2c3524769947f7361cb65b39fb4f3badb789060 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Tue, 27 Aug 2024 22:09:08 +1000 Subject: [PATCH 08/46] [ili9xxx] Document that invert_colors is required (#4190) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert --- components/display/ili9xxx.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/display/ili9xxx.rst b/components/display/ili9xxx.rst index 1e9f4024f3..493e49f9e6 100644 --- a/components/display/ili9xxx.rst +++ b/components/display/ili9xxx.rst @@ -61,9 +61,8 @@ beyond the basic SPI connections, and a reasonable amount of RAM, it is not well model: ili9341 dc_pin: GPIOXX reset_pin: GPIOXX - lambda: |- - it.fill(COLOR_BLACK); - it.print(0, 0, id(my_font), id(my_red), TextAlign::TOP_LEFT, "Hello World!"); + invert_colors: false + show_test_card: true Configuration variables: ************************ @@ -101,7 +100,7 @@ Configuration variables: - **offset_width** (*Optional*, int): Specify an offset for the x-direction of the display, typically used when an LCD is smaller than the maximum supported by the driver chip. Default is 0 - **offset_height** (*Optional*, int): Specify an offset for the y-direction of the display. Default is 0. -- **invert_colors** (*Optional*): With this boolean option you can invert the display colors. +- **invert_colors** (**Required**): Specifies whether the display colors should be inverted. Options are ``true`` or ``false`` - if you are unsure, use ``false`` and change if the colors are not as expected. - **pixel_mode** (*Optional*): Allows forcing the display into 18 or 16 bit mode. Options are ``18bit`` or ``16bit``. If unspecified, the pixel mode will be determined by the model choice. Not all displays will work in both modes. - **rotation** (*Optional*): Rotate the display presentation in software. Choose one of ``0°``, ``90°``, ``180°``, or ``270°``. This option cannot be used with ``transform``. - **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``. This option cannot be used with ``rotation``. @@ -265,6 +264,7 @@ This config rotates the display into landscape mode using the driver chip. mirror_x: false mirror_y: true color_order: bgr + invert_colors: true data_rate: 80MHz cs_pin: GPIOXX dc_pin: GPIO13 From 57d41013de8bbc08746129fb0df86bd50720748d Mon Sep 17 00:00:00 2001 From: Angel Nunez Mencias Date: Wed, 28 Aug 2024 01:40:23 +0200 Subject: [PATCH 09/46] Add WS2811 to esp32_rmt_led_strip (#4193) --- components/light/esp32_rmt_led_strip.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/light/esp32_rmt_led_strip.rst b/components/light/esp32_rmt_led_strip.rst index f46e05716a..fc27cc4863 100644 --- a/components/light/esp32_rmt_led_strip.rst +++ b/components/light/esp32_rmt_led_strip.rst @@ -34,6 +34,7 @@ Configuration variables "ESP32-C3", "0, 1" - **chipset** (**Required**, enum): The chipset to apply known timings from. Not used if specifying the timings manually, see below. + - ``WS2811`` - ``WS2812`` - ``SK6812`` - ``APA106`` From 53e10fff429b8371a2ff6707e789d843afe3fe24 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:29:43 +1000 Subject: [PATCH 10/46] [lvgl] Document `lvgl.widget.focus` (#4172) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert --- components/lvgl/index.rst | 52 ++++++++++++++++++++++++++++++++++++- components/lvgl/widgets.rst | 6 +++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index f55b8b1003..5f68bc5a93 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -10,7 +10,7 @@ embedded graphics library to create beautiful UIs for any MCU, MPU and display t .. figure:: /components/lvgl/images/lvgl_main_screenshot.png -To use LVGL with a :ref:`display ` in ESPHome, you'll need an ESP32 or supported ESP32 variant. PSRAM is not a strict requirement but it is generally recommended, especially for color displays with resolutions larger than approximately 240x240 pixels. +To use LVGL with a :ref:`display ` in ESPHome, you'll need an ESP32 or RP2040. PSRAM is not a strict requirement but it is generally recommended, especially for large color displays. The graphic display should be configured with ``auto_clear_enabled: false`` and ``update_interval: never``, and should not have any ``lambda`` set. @@ -635,6 +635,56 @@ This :ref:`action ` shows a specific page (including pages with then: - lvgl.page.show: secret_page # shorthand version +.. _lvgl-widget-focus-action: + +``lvgl.widget.focus`` +********************* + +This :ref:`action ` moves the input focus to the nominated widget. Used mainly with encoder inputs +to select a specific widget to receive input events. It may also allow the focus to be frozen on that widget, +or can be used to move the focus to the next or previous widget in the focus group. + +The required config options take one of several forms: + +- **id** (**Required**): The ID of the widget to be given focus. +- **freeze** (*Optional*, boolean): If true will lock the focus to this widget. +- **editing** (*Optional*, boolean): Sets the editing mode of the widget, i.e. encoder rotation will change the value + of the widget, not move the focus. Defaults to false. + +or + +- **action** (**Required**): Should be one of ``next``, ``previous``, ``mark`` or ``restore``. +- **group** (*Optional*): The ID of the group within which to move the focus. The default group will be used if not specified +- **freeze** (*Optional*, boolean): If true will lock the focus to the now selected widget. + + +The ``next`` and ``previous`` actions will move the focus to the next or previous widget within the group. +The ``mark`` action will save the currently focused widget within the group, and restore it when the ``restore`` action is triggered. + +.. code-block:: yaml + + on_...: + then: + - lvgl.widget.focus: + id: my_button + freeze: true + + on_...: + then: + - lvgl.widget.focus: my_button + + on_...: + then: + - lvgl.widget.focus: + group: encoder_group + direction: next + freeze: true + + on_...: + then: + - lvgl.widget.focus: previous + + .. _lvgl-conditions: Conditions diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 173406ec8d..e30f12eacc 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -1807,9 +1807,15 @@ ESPHome implements as universal triggers the following interaction events genera - ``on_scroll``: The widget was scrolled. - ``on_focus``: The widget is focused. - ``on_defocus``: The widget is unfocused. +- ``on_all_events``: Will be triggered on any event sent to the widget - this is useful for debugging. These triggers can be applied directly to any widget in the LVGL configuration, *given that the widget itself supports generating such events*. For the widgets having a value, the triggers return the current value in variable ``x``; this variable may be used in lambdas defined within those triggers. +Each trigger also deliver an ``event`` parameter, which is a pointer to the LVGL C type ``lv_event_t``. This may be used in lambdas defined within those triggers. Refer to the `LVGL documentation `_ for more information. + +There are additional triggers for pages - each page may have an ``on_load`` and ``on_unload`` trigger. These will be called +when the page becomes active or inactive respectively. + .. code-block:: yaml # Example triggers: From bd726c598bd2608ef12fce99b2d3c6df1426cdec Mon Sep 17 00:00:00 2001 From: Aiden <37043404+tarontop@users.noreply.github.com> Date: Thu, 29 Aug 2024 08:52:53 +0800 Subject: [PATCH 11/46] Add BL0906 documentation (#4196) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/bl0906.rst | 207 +++++++++++++++++++++++++ components/sensor/images/athom-em2.png | Bin 0 -> 280550 bytes components/sensor/images/athom-em6.png | Bin 0 -> 284731 bytes images/bl0906.png | Bin 0 -> 20326 bytes index.rst | 1 + 5 files changed, 208 insertions(+) create mode 100644 components/sensor/bl0906.rst create mode 100644 components/sensor/images/athom-em2.png create mode 100644 components/sensor/images/athom-em6.png create mode 100644 images/bl0906.png diff --git a/components/sensor/bl0906.rst b/components/sensor/bl0906.rst new file mode 100644 index 0000000000..0006beb95c --- /dev/null +++ b/components/sensor/bl0906.rst @@ -0,0 +1,207 @@ +Belling BL0906 Energy Monitor +============================= + +.. seo:: + :description: Instructions for setting up BL0906 energy monitor for the Athom Energy Meter + :image: bl0906.png + :keywords: bl0906, Athom EM2 Energy Meter, Athom EM6 Energy Meter, Athom Energy Meter, ESP32C3 Energy Meter Main Board, Split Single Phase Real Time Whole House Energy Meter + +The ``bl0906`` sensor platform allows you to use your BL0906 voltage/current/power and energy +sensors with ESPHome. This sensor is commonly found in `Athom EM2 Energy Meter `__ and `Athom EM6 Energy Meter `__ + +.. note:: + + The current ratio of the current CT clamp must be 2000:1 + +As the communication with the BL0906 done using UART, you need +to have an :ref:`UART bus ` in your configuration with the ``tx_pin`` and ``rx_pin`` connected to the BL0906. +Additionally, you need to set the baud rate to 19200. + +The `Athom EM2 Energy Meter `__ can read 1 voltage channel and 2 Current channels. + +.. figure:: images/athom-em2.png + :align: center + :width: 20.0% + + Athom Single Phase 2 channels Real Time Whole House Energy Meter. + +The `Athom EM6 Energy Meter `__ can read 1 voltage channel and 6 Current channels. + +.. figure:: images/athom-em6.png + :align: center + :width: 30.0% + + Athom Single Phase 6 channels Real Time Whole House Energy Meter. + +Configuration variables: +------------------------ + +- **frequency** (*Optional*): The AC line frequency of the supply voltage. All options from + :ref:`Sensor `. +- **temperature** (*Optional*): Chip internal temperature. All options from + :ref:`Sensor `. +- **voltage** (*Optional*): Use the voltage value of the sensor in V. All options from + :ref:`Sensor `. +- **channel_1** (*Optional*): Use channel 1. + + - **current** (*Optional*): The current value of the channel 1 in amperes. All options from + :ref:`Sensor `. + - **power** (*Optional*): The Power value of the channel 1 in watts. All options from + :ref:`Sensor `. + - **energy** (*Optional*): The energy value of the channel 1 in kWh. All options from + :ref:`Sensor `. +- **channel_2** (*Optional*): Use channel 2. + + - **current** (*Optional*): The current value of the channel 2 in amperes. All options from + :ref:`Sensor `. + - **power** (*Optional*): The Power value of the channel 2 in watts. All options from + :ref:`Sensor `. + - **energy** (*Optional*): The energy value of the channel 2 in kWh. All options from + :ref:`Sensor `. +- **channel_3** (*Optional*): Use channel 3. + + - **current** (*Optional*): The current value of the channel 3 in amperes. All options from + :ref:`Sensor `. + - **power** (*Optional*): The Power value of the channel 3 in watts. All options from + :ref:`Sensor `. + - **energy** (*Optional*): The energy value of the channel 3 in kWh. All options from + :ref:`Sensor `. +- **channel_4** (*Optional*): Use channel 4. + + - **current** (*Optional*): The current value of the channel 4 in amperes. All options from + :ref:`Sensor `. + - **power** (*Optional*): The Power value of the channel 4 in watts. All options from + :ref:`Sensor `. + - **energy** (*Optional*): The energy value of the channel 4 in kWh. All options from + :ref:`Sensor `. +- **channel_5** (*Optional*): Use channel 5. + + - **current** (*Optional*): The current value of the channel 5 in amperes. All options from + :ref:`Sensor `. + - **power** (*Optional*): The Power value of the channel 5 in watts. All options from + :ref:`Sensor `. + - **energy** (*Optional*): The energy value of the channel 5 in kWh. All options from + :ref:`Sensor `. +- **channel_6** (*Optional*): Use channel 6. + + - **current** (*Optional*): The current value of the channel 6 in amperes. All options from + :ref:`Sensor `. + - **power** (*Optional*): The Power value of the channel 6 in watts. All options from + :ref:`Sensor `. + - **energy** (*Optional*): The energy value of the channel 6 in kWh. All options from + :ref:`Sensor `. +- **total_energy** (*Optional*): The total energy value of all channels in kWh. All options from + :ref:`Sensor `. +- **total_power** (*Optional*): The total power value of all channels in watts. All options from + :ref:`Sensor `. +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the + sensor. Defaults to ``60s``. +- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component ` if you want + to use multiple UART buses. + +Example configuration +--------------------- + +2 Channel +^^^^^^^^^^^^^^^^^^ + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: bl0906 + frequency: + name: 'Frequency' + temperature: + name: 'Temperature' + voltage: + name: 'Voltage' + channel_1: + current: + name: 'Current_1' + power: + name: 'Power_1' + energy: + name: 'Energy_1' + channel_2: + current: + name: 'Current_2' + power: + name: 'Power_2' + energy: + name: 'Energy_2' + total_energy: + name: 'Total_Energy' + total_power: + name: 'Total_Power' + +6 Channel +^^^^^^^^^^^^^^^^^^ + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: bl0906 + frequency: + name: 'Frequency' + temperature: + name: 'Temperature' + voltage: + name: 'Voltage' + channel_1: + current: + name: 'Current_1' + power: + name: 'Power_1' + energy: + name: 'Energy_1' + channel_2: + current: + name: 'Current_2' + power: + name: 'Power_2' + energy: + name: 'Energy_2' + channel_3: + current: + name: 'Current_3' + power: + name: 'Power_3' + energy: + name: 'Energy_3' + channel_4: + current: + name: 'Current_4' + power: + name: 'Power_4' + energy: + name: 'Energy_4' + channel_5: + current: + name: 'Current_5' + power: + name: 'Power_5' + energy: + name: 'Energy_5' + channel_6: + current: + name: 'Current_6' + power: + name: 'Power_6' + energy: + name: 'Energy_6' + total_energy: + name: 'Total_Energy' + total_power: + name: 'Total_Power' + +See Also +-------- + +- :ref:`sensor-filters` +- :doc:`cse7761` +- :doc:`bl0939` +- :doc:`bl0940` +- :apiref:`bl0906/bl0906.h` +- :ghedit:`Edit` diff --git a/components/sensor/images/athom-em2.png b/components/sensor/images/athom-em2.png new file mode 100644 index 0000000000000000000000000000000000000000..7a58a6195ca7ad224efd62717078c08a19c03ba7 GIT binary patch literal 280550 zcmV)pK%2jbP)PyA07*naRCr$Oy?2;pS9LG=yE)XY+}+h(p>wx7NNTB-5C{ng1V{#h!31MVB!BO{ z8Qaf18-w9%h7$27f%O?!2iA2NSf7FQ z8Caiz7kLKOf%Qe6(Dlo$&%pW&tk1wYu&&F%`V6ek!1@fl$TP4GtS|C}u3v6_2G(a_ zeFoNnbzKJ5XJCB>)@R^Fo`DwySgph$76Yi>K>mI1k;Y;%{cP;VdL+5NeD_EBq0j!P zKR?Q~f824~IHO};>lvQUwXbwtdF=2!{V3O8JqIyePnmC-&nB8p`PW{v?_FuGf0Vhs z(s!S0+|ld)Fxl|mztVNDv}Qj{j;_2GYs=u3=fuse-P2v$)`Qj}Jfa_WE>>S#)_1M7 zTx+b)HP=7xT+mpqG#}w-H`(KF{80IGFhQRU&+Ct}AAZ=HUr}aXXn}yg2tO*=J>S8u ze{X#T)@NXS241Qe_;HM~=$M|j#kv-tzL0^uRFk!SpY<77pMmumSZfBNp2`csv*!h@ zQP8v}hW9*?tW-)P9|^3$MCuQK6nQs}ep$Nip2 z_}8M}1E+_b0p~>6ANpN#gJ=wOx^I*3EVqb>7ok7#SPYH8$1oRz9b|Df^gH$(GERA} z@R(OGugrsUi|F&@@VVhX+_pFxjXIAj7Nclu+flO!5VttJ;qBpj{MsMk@i z*LiG-L=wqllE-bb8*ES-Yl5Cv*5Ch$#c94}Lj-d}pHixYWkBWI_6E%}O)t$uT^~-Q zMdViYRGej&UZFLhkNM9oUz2A_CK9OCXGmhdj$1RCueizs|L%=P_DBP9+NCOg{A4_5 zA}cyI!9PB3$&eGgu5xX+@8rGbM^)N{JuhIDhjM~KbGNXtjPdblluFA;@OtR`B>auK z0+a|6Z3vot8oUo21ZcF`3^3e19I7#R@t?-Ec)-!D^K}~x2()==krT9q8D0Xsrgs&v zXp_r*Vu;JY`G*9FF@c3hUT^ZM$4O-QZ;}mK$9OCbq8v%cVzGv72*o7Z_$sTx80ax= zOBtZa*yVM5Mq70HJ}o|tfvzdaLxjtiqu@GdqE@Z(CWt3!o)f%TV)}f|8mkYv4?TBM z-e*mM1ZuS!60rooZd#JAolFx*5Xdzc4EZ5Fyx`}LH<6&h^Z4W*wVJFufq{8Cq@3hO zH!07vzQO>lN=oON=Gc^(0BH=3dQ*Xc)-KLK-mJ^~H0m``DZ1zk7)=6j-TbkX46zwU zgVszCF4$xSYKYNTXjbG}!Mc!gh$YbEK|A@BvC*`NlAv+QTFKfv@U1Jj_yGxC4S>Lo zHoPsYJP2yFD$gkaqWf`UqB#)Rm3bvll3y7Pbx+Dz>6sYhNdD14BA(>ELkgo&tFhb| ziQ7b-_ay@x?JZq9Q{*)7?!F=y@fhuagvbIKsMZ^xH7Dgs63hFBhb!~q&%cabmX2hm z&frfC=-RuZJe#Uh4=hfrEBBAZR~1`!=98=oelPAf?ZO!MsvjE{>7a4cN3+yol@ zVbUJl*?_Mrz$?}+Lj%7~Q)+uvHl>V0e@FxCYqD@U7M^Mvn*cox&K8WW$bSXVI1@^F z2z!peo(uMf0G6z}2nj2bKr@P<8+eHICNLNNk#RA8DOL;Uy3N6&q61)n=V^9eD`Q}@ zFZdphi6246*`Q6pb4}lu#gREtqzi`SP&D|Bl~^$Gym@H->Dl-{odA9|{##cmWE~SA z6AaXOsDxQGU$kA>a$xYKA*$7=a==?w$H)qqK10gcyDx8e79o8ulR>eWdGiKCq2Kwz znh+yhWG_%Ix}bu2A}chH@_ij=EXJ4^NT9FH&BF?A8b^#2AJ35}1bWbr6sW@HxBNGB z51D-OJe$a=(Zh3MN`4gr*d~-W*0#`Wl|{fm)zC54_iS_RO0K23*s-laV9) z!H+%b)%ZnqaJqYe*!xu*okT~gahgB+O~JaI3uf_WTvg71ATqHXl*UX zN_&CwAD0$*-oR>_w^FHMY-|#QIOv1Yqk6jbb2Q!lc);By1xEcDMqkkF0^< z+vbDZV=6oC&8X2+_p$zR(Ktp1fv4qt9UAXqG1nn$uFE9>_9~=Ljq<&&cG_ zDUj&)QY%X?&W1vhEOfat%^zF$0qDrX82B0b8#K!r({nLI>es}Tv`e@dqS2aX1H|+* z>RO113c3@ht1=UPL)xC`64@I(>Hu_`47&Wo&o00k><_26 zW!2Rh3*=Xgl4d=IX58e}>{w@G8+F4Vtk>avXMd{{3(zQ-=~k2d2vBch?Fb% zl3S?YcMbmzqMAYX=ac zUWvS7?ls9tKuM~nq$sLrCNjnL?4+Ks$&Y2m*Jt~ z*PYkr^s;ZY$`h!Eri-S|S_CxZlQzrjWO|-yFn45Ni8&BRO#sT~iKtade15Z5Lyah| zdJ~008-r^;pYteBn-5+8AM(!&0#>^A^z0m_rzVk1CXh-dnYSS>k6k44={WE}){nZZ z=4$e+DyK?9X<*2kQ>01Ue4j*C3nTJSj*payv>yQj=jJGG3*Z?g5phexmzL!VYb@K0 z{-(6Ms@@ECvKxzSVi~Ij0!To491?tz-<{RTBIFG5;61^Ba4xBh+tCCn>;Y|Hf7?CG zT60`2dy@fAql!VL-*HXOVhHSnz#_J>2VyT<-V}rPK&G6-T)jbrAf^XVL7*)v&n6!- zzY%^xm{A!+z~L&be%E@1h z&?5NvU$r{=g2X$*)`M>d(0jTkSUvmmp<`3UN7g0%>N6~!f1<_>&9|(J{1`PRYZFLk zJi+r`tJgTLKpZxCG~~5x>ghpWZ(k5-mu=+l=jgMB|9;-UYJsPz>1oW*&mxsdBALi= zbXhzm+PD-wm0*V>r!Bf_3lauHUQ#6uMbn45jR=4|Id7{Fc zrU{(6SAN2>2&62)YDqNAG$kUYN;u;nxR-4%1-mGTZhzb7C2FhomRCSw0!%+1Xqlg=QWOfxUU(Q7irIo(5nm3XlrFcLsO06=2o*(?i2gtf#PmZEI{onv#C ze9~FB4gV8fd=Y3TU{TA|0fehEG7DR+Xj|XF9hSQ}t5dCXwglW}4gan@sy>6bGGfJw z8?0a%+U(K$nDX&KJz^QW4+SneHd_hz^!9c(HUi7+&J$K4OseKNZ^@iJi+%c-0$M> zD*+af9Y>P8Ad-7-yT5HGPltKznsM$T!2TG76LmCz+dr~yYXhj;o5HKAatQ4O^RiZZ zQftjY*i&`i_2<_-QW_U!h!}k$_^I5bSDk3Y114 zqb{Vks2t7q0$pZd`5Vm_QeQ(EaG7BlMEzF*m$Q~_0iDIUTF9Qu1rLLiuQ8qG^*O?fVSq))V*tZ&;MdT|NANU=Z8Spu!5C$a)Tm-=@3pRK(je)B(Bz)UVp4rCi zUpow7>U${og_V@egYdxa>b^@Ew(NYs4}q5QhmKP5f!~d2wIYtf%xa(s0M|UNU_yM? zI_%Z>AmYoXn=rx@p@RgtgRaqZr)&6*{uiM+sATZGO{U4Vd z6P0nkzvjnY3BZH=S?_ZJ%kFt!oMRlJZ5-8N@dKf4Sf+^zsMk?zR2XC_SV<{@{e1)2 z(%bXW11npslVq{ZB9qB7xVpd<1*;@rB^pe@m5FKFXr?)RdO+O)Z|3Q{c3sIY^<5TT zl8`3#0oD?Q%~H@$>(#}bUrP%+Zq}>;)p(k&qY5t=rA1XO8QcWZ#u_aQ@b4KFV&hxQ zng|1+Y%EbuqQq=d1VU!oItYMxE`2}~&}+&Y26=tT-+9+GWg_F1*^_@|4OY#a?-KLS zR`cRv3rS=lnxO4lu)bFzu8eGCkrX!vP7cEKky&Bk%^WbPfu(EjucahIiYAbr)z2SQ zkp6Sn^$q0Ms#SUR$L6d~n>&$j`Mgui_8p!(4%Ybbb?5Op1taSrDSE=gI%7eu<{J;r z+Fd)gVV@_;&-Xs8s3%Gvg=HlO>&ksO!mqOI0jJM>`{2mm;Q}LDjPSg0kXwI@7q{2= zZ_S0K`JgNY;#uppDymEgP=-Jg{rv;z>)RYW+jAK|VcB{CSpg;#6BFZ@pPxf6mqRL* z){QQkwqB?FHM3rQj>j#OEl5-VP543^jCrc4#&(tvJ)BjD1l1}^IvWScIi7whiQmx0 z2p;nq)G8KW_W{fRLj|5qD2=vr#fw=OZo2)ZB_fa-S@nQQD$(e9NKlQZ^@ZKL9#^?I z!HNQ$@2dI&Ve_*Z0BqCAJ#79g&?nY%pc6wJSI7djU|SFZB7qN6A-aX5vUtS+6^|^S z8raYCczDM{Uddw#KeO-pDnNUdx6Gpj7b8#{;;udSTZ3O#^b)cPWr*qR?RENByd#z6AV1l#I~;(NI8Yt6 zY6aD5jZ?4cRiLlGA6xo12Xy622CO7N>#a-UUubX9cS?iqa63P{+kwxR>Ohviv{Mdbeo$g0(-rGo;h zzV&DWa+HA&`u40s&3fq|!NxU<-dTmVL5!9#!4VnuiTrTzf<7lzC<4?zB@+O=DtlLg z8@6Q4+V?H%fY$M>V^uerf6GrS@W5X*chQtV*q#Zyx$b$)+VU-0-{Lci*q12>^hQCE zQlNZM11o32ueK+5d{&f$dYH;fif3X5j8=AOR)t;D-y@cPOBH^skhx4s zg)AtI)$9o?LeUFQ6`T;DE~0O9N--3!tg_TUMONQBbqYW^R$KBwQBhH#WCNIyEERcm z#wyATpbUXZrH=mot?2LX4VeCy3|I;2$zokxoJTsHMKYPz+FRp-WU!PpDVCTBs6`Oot^B;L5_|#1pH0_(u<$n7D?I*PRR(i;4*12-ZB=8r5V2uH`1AafaxO$BK zy`sOHjQYO2NBfHeL?lmrKOym6DaMSm*487eT~lrbHrSIwto{dy4rREArXAGc~! z0U4xWDm7>&yFSp?xetXOT$MSO7l|^lq%Svqx*f%Xm;$I((Wuo?Dc8`ym4J0iB;_+K z>sR{g1qQF`3aksvu@V(v83FXL1iWIYSayIdvJ8iTHqfAs%M_uMsJO^km?I1ea@g`= zib5BiT(H3N3S*mUq3DYmpfOj<$_#CVHHs)h@_;iKDFM4RL=o#G>IU2V=<2)ZrT>h& zT7uU$Mzi|FC70I?^jBN{BITGEhx#qqnVn8iaux$wX!!jpUyY7KE;HUe9l#H*`eM?ZDBg$pE`tk^%n2YaO zf??nb%Px&;Exvs<7p-1P$P*Sy#pGM6lpL^fS#SW%^d2{_5NlH{VqrPRigZnPq!=U& zlKc#7@VTynP3JEdg9)uGJ27rkHoN8mhqtS}rO@Y>aJwP^`%tKmLJb+2YcCZlC=C`0 zf<~F({sc|L8&Zu$BMH`1^XzG^m}-$VoPuTPX<^W6|jJ8HWL7=0UvV})B#7! z+GK+WaV}b47hj2JTUuIBYbasb$k+1z#tmCDCXDj00IRcI{qKccG`HbZ2CVX1N>81i zxjI5f5GA2{((iu}V3~oO$*~qEcvfW?5W~PK$|{<$uVu7evc3ay2g3eus{=-2g)(NV z70OL*Y?HZ_4U7Qc{mjNR#jRV$ll3SD_%da(B3nPsy&LF9%9Z80s6y0!XxtRQs#eP! zyduo1RU7E*--iBv;#kA@u=dl3UwsiQ)=8xT(nzN>o`pqT0dW^nhim+jEn<`xj7I-V z5d4US0d5E&J>U$)J;E!k<;F!VWgl#8VT4|ADweD>sqvRhB;WC^yKwr-S_@z<4FeVZ zpSDn33s~23bpvbF)g)?SwMgA+7gT!=1j50i4k-xZy@N3X7PTcp52=nZq* z3<#YiDs#JSqlYgpEY3ApnXWLz%0M6M&;Y9J?ial7wYR-k4=+-ONhiTV7zO|oFE8biT%bUkG>9;FrmF4fXeg)e(X?khjq zEl;ymRDy)w(9U#ZW7n&-z+x3(t)sVZ8wLh?*QknIYiCEs_k4Q=*rp#F8{+~23SMP0 znGh8q#Q{PIFu5M=PMxrb`>|F!g%buz$KdWs?AoyNz)QbtAy3bf|RC>)?V209?LV~Hi6EsIO1g3sR z6n`B|MuUg(tbNZj36d<;3*vQl$>t$r#@2!7*|1q^)LV5MG$*4$VCRlw9Lu!Ki4fg~D0x*3_qb9LC^ zln$G{z!IW1Uu?R$74$7$Ul!c!E?a?@EFkfPyW~EqL2jSABka1%PV%{4+1P96XGQ^S ztxe^B#(&>kH_97paLha^@7@BUZsXeql{s+MN*EOU>xJD~8-w3%&Ub;MfbZtoIA8%j zD<%lFB3y$`urxRe3R>XB=3CyE_D-U}!dVZdMBKg&KaT@$qZ5Q$@GV*kj0TqI6}VVY zT>iY8Vs`-^nSXCRj7ITtGy_nNaK_=(BcTW^7Gyn7eJh#vj~M?F;gdiJ#v*jFbx?MUhjmaHqDmyslKB0a#sE2(F#)oJ+n|{_UwOy zPCKfwWcGYd(I~F4Y+5@_4dq&Ymx%JD3<2tvR;^b-o%*EdIst1PeSHHz8DQlCfr)X< z&dwp5%W1lmvz91r!K^3=VEJyeHNd7R)YJ>FT7oA}-ICy6S}xVtjx%x%t;I_ZZ!FXw6zQq~BS)PL+6n$J8l1t+en}07yl_Twz`zZ#EXOeI_ zlyvo!PHEbgUkzjD;?sA`O7&fE$tjg4*|N?~`2@XMb&{-Om3%_?mT!*+wt&1B%)jS# z*uA4(7tgPjUN!2dR2t~-@5k1y{V#px6?K}K z93RIV<*^d5QtwPXj)NZF2Uep6OqhsQrw5Y93v+J9|M<~L$&`q3pH5o+Fm0e@e9*hp zX-pS6x5aj@sBL!JoT>{0Yt;HpYPe_>mlxf{K7Y2hW#@8kX}u+P(}AJ{Da3yAc}Sl^ z36IHvl^lQd5bzjW%gR+kWbV2Mty&Kedc_A#du{_8e*-$s%%y?( z$JSWxr2tqM^v&Cm_rgKR=sMCp?HC-|NTSFrr`9Z?Ady*~*`pX%2hq$*a$VSL?L*HO zP5SrO!J0waXRMwRgs%^Z0!$9{xd@?5D|SE%!oX?UXp_!(;45Zq3^2+TV@SwX;& zPN0w{5DGwCAm*>D&g+3^s*OLr*d7X#r^S#2g5>{3DSShK(B8xSK{=Po+4{XsLxjL8GDW}!H zy`bO~J<#|VRbI^_lg%&^T}`**4WwYD){jzIQrqM6t6E|iguH?WaFs)W`^{Fp zoOLC%gIdN~rNt1&^om4xdAyn;-~ty8Oq|v0^|3V^3_Bu$Bs-4OMUn-6OlMgssA(3J z6uq8L16;|=5ZzBbdF7&V{D;aHbLO^|mLeFQE7#b>x0KalW8>7T>{~-=DPJay;uS=t zM~^+HjwPsiljU%LCjc54DiNO61*0g?Q|ITDo+i;?XgJ-@r+p_~nE(JF07*naR8Gt| zaX~+uA5+Ha$(re)=a`8xVU6E)9(}XcY*1aVa3QRpjwtsbIph7Q%OA{vao;LAlpD;g zSXAj!m1wo9y#ksIR4YOSki}|B{>n7iiwvxkNINk#i3M%Kl1wCpW7TF6Oa#{**UH+G zYjde7wJ`r-7e!ARh)@E&XhD}6r$y;?;hxlWQUjj>S~qbd0IjZ)6L80C`a9ShionV9 z_)1$$c`qt_&ZT$dfV9xkGeIl7s5drSFsubs)a+iOUFA$D>A=pwXG5Y?kyYy``N4rj zXdG0SsR~5PTqXiJ*`E<>RIeXkS)ggm+Atn9T*(z!wW3A?N6&$rTG-zBErRS;M3;_F zo{%-sMqhGGU0bnw1n`39J!Tped{8y@-C=}b1n2RQq7E`b^I_yZd@b5e z4#V_!u^5?-Q^4k|4Xu->AZj!h)-^U4N`bHMx%OfpIjhwSCI_rCf6h3uzkMS{6^{Wb zjfpKs4QP6nF3A)dEt-A9iqPv&X8Si7ms+&a{!uFzS^2B%@-`8}#tt>5=V>&E3Mivq zqkgOevXpMM9b30b<&_^aT@9lzGO%)Yt4RV@s=T7pDyj0yHQ<$g0g@3Q|Ek-|n?^XF zXk;;zRBYPCTpi`(2o6@KcZi_c!EFJVPx)%hKj~qAkwyZZlZ=Cep8(vqA^=73q3oUcm-4RldKPPXvXHKb>uv=5p;QA&a%>NU!1 zfwdzi8t|DHU8E7&( zUqk66QtW!Dq0EmqHYORMhSEHh@;d=55OD=t%{$)TGMaY{xuSxmkr4G`UIQob+uqQi67$7R5(&dI7i8}ixkTsUt*?&E`=jmdZ6<=&*j!K;L1jR?Za@y~%4X-bV3b5{0 zLB9`eIi|BREch;Ka{VdX>T zfi-F}wzk#+;_)O(D<%G$PT(w8YrN^{M22dm!d5;}EUdLPBO;khi3@JD5yjS?s)6Ub$= zdfKRNIP1uy2M5;Z$ZzfeoM8Wz@4)6L1xp!?rPzdy(5 z@wJ@Psh4R|wn$A}OQyN>bPNU=rlx2t&>9J2wX!Vfm-6juQb$*K|n;}c>lq;w@$F_%ek z?q+d$na3*og~n*3(K%G7T0Ao^_-U4;hcCXNA^Rm9Ec5}@=cX0j6+fMY%iG$nL3>os zUz2g@w>-+j;sFNiqT;n!fgpNY!>&%yfWcgRc>rE?)nano zi@YwzvA`{#sl`vEts3+*5)_cslW0no`&%cQqvX2VX(5%bHBZQdMHWu^G~drvL9n!- zLZJnh$0qS7fAS}I;@A`13|tn71V7Fjm2-a+an!4I*|>2!>)in>0VTap-;F1dsFcgR z(OOzs7#!qpadqf~Tt1z+QAbNQhjb>z`FJEKnRJq~HrUo|Ncv4Ol|~{Z8#g#EJ0@-? zfm@AG5=|uOz&jdOqajD{So07)9Fn+nQUU}>+$z%CPkmN8U4r&3b!lguv8FYAtg_5K zfd+xPRHuRGgYpYWz`0uyTdTtS(mb(6OqR1&>6tagN2s$H#N{~iP>V_WZVaiE+$WwO zWspEJM@L~N*ac+Th23#EzpX~{M#@YT0;_jcx=l3VO;&_T3h`@X^^mh4ON$cY3<)}V zoQ@BtM(}(%p+?#haUKgh^9;O%@^ln6yBwPBAZx*(rFq=6`770`g1T_XGry|%y2|guEE;bP6X9-9s_E@U`I{J2DHT$zEal5rAPUEstZav zzfIg3b1xd`?C!$g&$``w4p-Pwu?M<2B*4OtQD9%>UX(0-)R({>|OktQpW zH;PzzoJXNRNq1UVsk+E3S-JeoblPMFEiF0WlF&pxpJfoBP08&XV+1fMIq`u(HYFPu z39(#sC-J?#gmjt{;rnW+RcZnNaRQB`%o!iZM!A4~-!9RG&4z0uX;unlk#Kb$JyS-g zB(jcIiWMv@F0x`?UM^y3xx(O00L-=D%_bI?i>zH+sH+f=Q&{sp&c&wNY=P zxKt7AE!{+4cNYe>51`Vhplfq04jkTtdc7(*QPXpgxN$pKy2Qh2 z{|mBl>kXa@QclvcPAU$0os}9$G-y-_l*`nbt}L!-Qj~-=*CBVFe%F8?c@hRPq%2e! zvA3o9;WVo<4)QSSq7V}a-glL9l@%cgOu1CY!u%}au_PM~wElft2JmYi{4e;qcm6!) zW@k~Ulmi;TEX#npQzOMBeXYI;K_E-P(Wnhe=?fI7S}8u*i770bJqSjsg}8PAO`e$* zJe!GFbUv?fxT{lSZJ`V(Z?p0T(Zg-~%7{03JE|1U7bd za*iBVb`YOaC7=;5k6|boLq3yL3V}8zZFU7Cj_SsEep6}6z!1Q*2&n3Co{Us7jy&~l zNC2r+9NAP7xoif>c#=022@WX{dQP&`;$%6e(;#}GMj)X)69Fz+f;Co-+Q-)K)Es@PYOXAg~%MSMa>T>K?o)z2n1>Kkeg1fE%UDA@gz7YetvNo%gYsXbZo%f z%si%N=A^HwmH?C5Yi}>GB|Sek&mgA8h_^bju5^%Pds{2gsRS;MT}FF*2d=*EYAo00 zu=ARJyz3W#8pV1E<&`3@VVUR`@)XF^AlrD<&dGPsA-x6iTM{^>)(i%CU(KI_}U5SC}A9t?}zAY8O;U|BI6tE~K&u9uV z4wOFPxtDXUD37(?q}+ST3W%Y%zYhaHiSAZD$4b@@fva$=;$D(fV*xClMD3->R)DP^ zPl41cbCU$k^JBX&(kQ{2+e+@8?^4L`aul}mt!wmZ^iSBdeA?hF91mE7x@lP*snVf{ zEORr)!#Zo%PYaU=5I(1^qa7ndllbH(KZ&Eqj$wLw8jFhyC=?2~`kDi1EwrFqEb>>f zxja_N6+C_X6sD)9`4F@H`wyVAvz;|5DPq26;}Q-W`^~nz3)4GVz{^}9 za3U9)0YNpNbgnWbA`xz7*TtHp@sQO^Kwhn4ZhjdnD|Kw#)QidKSxk;k$ykXlZ8rGa z_rr$|Bb&?O@yDLP`1m-t*R#U_>G{}-CF{L4huiPC9r;`q|MI}Mn9n|V{Xs00r?Bh# ze!Sy9yb1G5b66>tCI6Lztu%guK2~6o-$*|s<1|+^7i1Cg>BFoqVjRGYCy1YQ;6wAs z@=geTIyVcp}a6 z$QV`EPWaU-ALyA(Wl&kJqL3-z((z&Z#UK91Jkd1qPE9SnxAR5XmfG`>r#t z)HLOBX*P`edBZNA8pZmWQUO*dK%z^=1UI=Ruc}$c%1Q$R16w&O;7TRl z4)Rz3_5wLp$qJaAo#kEu){oVA60=yXwAGB3wFV?El<$g1tFbK2N?+&vLHV%~I__BG z9aYSb&0wpXR?uj|*)~D?j)r0bx7Vlvi>-;lEQ=OYzR3MUG=y?Nw4qzuS}`^{flqz< zZ}9M=4`XC_1fvtv*s`G=*B-hS9i8pGndyqDM1pyFO5*aek}{@|o?k1kBy~sKJWh-h>($no ztW@R~EwY{zE4)&vVPSq5#bOn0?VXsLU%>RtECVa8XQ^Dq=AKQs_WJ9PNvAL}G=j6| z&Y@Ubk#W*>DQJZl%C#CgI@)pj?YA-YapZg7$L#Dh4qUqz^D9%>cjH#P`91eyW^op! z@(LHZ5Z%ClNjcXQF%I&%JX+h^kWlv2z>SeYdEA=Xhi;K)vma7$3N(8W$)~`= zlq;-^(#a&xAyF_SqU>=s;;5GEXvySo`Sch*^MCyVCNEDSpJ_uPnMR?d74N?PK78N< zzlH?@)-q860-u2=#M;SH>a=MPc^7u36dR0wdAQ%9EPzHYh-LagGfK3N2=m=RYMg(5 zmhuC7DMu$*HmgCshbYEZSayV3#y;j)Q+o0hXs$RG#K*FTM?vyg)ygX>5LgZJ&jqRS z-irXN6MQsFDn-F7$_#MFQ24z9L>t-Zldf_qD5DEmu&#eV0FIiTrK_)2l%SqwfXG`R za9;a5^f^Csz|O$oYiVGoL0Xifq{`LmTv|l(O3f~OhPbVx3zsg9;Lrc!lQ@6=0%m3> z@x;*|pl8zt+;G!PD73e6I+buEWbveM_RJX^ee7xM-aUY84;?}_ljDF010VN4YhrSI z0;kWM!GcmSE0 zdH-wivO90ULUE2QB}q@JBOOnnqq7^WEggt8l318s!QAvbceQV8&!V-f1=*Gas?`!E zCnvDHyeJ^9dyjZ>65Vp8iq?DqW2YwZSO4uFFg7xY_Lf%OtGQer?|JvT@$0|#>uea6 ziDT8ARr4+!qKF}AnC0?FMQ&(U6T?nagcvyllnSyQuu))^vmW@uBv5Mrl*y8|bPPUE z>!K-c)?b2iiz%?Gf@_qc<7Hi;h;Ioquqri3IAHuL1y}9a?F4}VvRI85wy4<;$JG}D zSSffl!+{5}Sd#$(?Mhlr6L_`EY6&_^)$c6icpi!JyC2Q+(IA1h!L{j&xJYWXuqRK# ztrqJV^nj&vtktA~`CcynlgMol&AmeYZM2;DuKW54c(kQ@YGXJVQFbmz#w2o zn#|j^6|zW?_10)0ol2sROCys>xxK=Gq!tOQSeiEtR8bzS1`89Zq?cah0(p`@D^YiG zmEAc*oT{tE6SlqAeScp%Pob zb+6owd*5+4#%Cr_t5qa;rW|HlYZp>z!O`!Xz(Wr_jIqJX$YpbAZSPRKRydofkGjJrBWH!-mwS2{Cn>~ zGhW5Q(jsSEkj!M0Z5Tc`iPOi<qPwxEAUKW@DBY8-yqRj8tf zp^;1ctmJ7>;E3zpS88Z)X~)pX34Hnwzku=KDF#;JvNM?+-uM3Z<2OF|K}^rgpu8fU zlYypREh&8^M09Mwu+_?C+2RrM9_0iI+mp0sC;+GB!kU}SJCPGe6##U9)Ad}s7T+n< zp)FD@X3)&ROHOyA%oeiPHJgHmqn5R7U&`f{TMLyE?wcHN)2!gADNBsIThR#u_T$HV zei*jCV2f3PSF`M9B@)uz%J>q=3a}`tYGgU(I^b2=I?!N`?r*lDj8@|4sh)Mi-wJh2 z^MWHBs+m)G`ihL;;O_p@7MWN&L4z`eS_k z8(+tP{rhm+D{jO0j~v1I^XJ)uES8F>)M{vJZNu`?GK0rGKXng=hcDyIGtV$clG{go zYC4l)%Y?YMYp%W)7Y8q4aPSf`X(`Gu4xbF$LLrSTah8p`1heuP4lWAdk*7=>Laa&# zCr&XEYm_}{&QZ0ZkF+)>5kt`2dHJ2JRSLxL>M0dy?dxpD)O8E^L2|bx&Bbc?>zXfH ztrNdh#nRFWN9J>dHZ067VsU;Uu%xLAQFnJc_U^k1@l=B6Cf`y(xwwMUr%!YGAJGOh z7}{*PTn5+QcmwCeo;Y~|(=*f9y>BOK$z@#g@*Q}?J6?mC`DyMRFHaFeXJG^8r)&7? zXTOQ3j~qvDPcN>%<`6nNx==3HP_b5+@j8kt3m6``h`~!2Q0Ok;p0~Xkx4!x?rl-cS zu)K)AO}%*JpMHQp`Pkn8E5xTKv9eObO|RLH|MXw)L#eWiYNdvbwr-3K&EtFDI*JpI zK7+-XMRatuVsq~%rXpf-qGuYIpIgBA#02M{?$|egH{JJoTyxWIj7|(AH%PUzfU<8O5`P{@lNC`INOQWb*VjN}Jc7P)#7Raa zmqpU-)R57TgRFj~>N$zxx;t9K0Iilam;{bO{;a z*fb4`Mwm>*kk6-u3ZQ6v0-O*|7Ay0gnnWMeyK5y9gR@pkk??UqGM(d4G>InVv$ADC zsXeUqt7PrPXd_V3@v0KK%dgx1z}j`j~;IEQoRE}Bp=pPbLt>C)bcH!Q)--+qDY1Hae6p=(n`zDNCn8!c<)mO1Fv4mIMb{7s_ zeFH9!PU4x!94zsuR8`lxp$#2fIV>zp;E~6^kGbU;yz%E>hdb`M4U-eY%y%TK zDSYPt`4YbSzz-Pk_a5rQ+kfc|*ma;E3yaH0C-ayZTEgJ*F-#0jV`S(uwhj!SuXlhu zEuoP_nNz4JkV&Rj6{F+BIC=ae>ai+b`?foA?>p|m^2!{F#br)0tCnkME3{+c%nUyH z@y}swcmk~itcfJ^w(oo2`|%qe`VGuZO`*&IQd4wtW|pNkMgvMtiF>8v)>%rMB}omp zuCwkF&KuPy2;{z)#v_$iD!>Q#db8h`RU5XW3Qh|FL zE-7;$8HADo7bTSU=E9n*8V-waJolMecAqG)Msw?eza?bOt{5#Q9amE-uHaLj`YU|q zGk=TTEn9H-@C`Wf$oDWkIe~*$AHKmvv}7#-i>lOhVLJF48tRr`7<<+#zQk#7mG99 z(z&S}>1-Xxjvc|s)F|HmAK!{szwQ={jt?=-QY$ua{=^`I+P1yDNVla}DI^kE%#0LK zyj;Vc{)2e(i4!<+@+4k!=Uv!;;2M1WYv028a~HV`n1U+wlgh-=(bbArqKwC%co-w2 z=Wx%@y%9fq|2>#nn7~455w%Jkt@(D0pP9j5eB$#MyEuW?)>fp_NzMtr|2^-)2Y>y8 zny#k6%0&_yl=9M;0%OB_&A3M%kXA8q;fAK&1r~`StYqk}j)U0#aa4dG#5R18F}cdH zaJMO@05t&STiBtTTUF>B;8f#DsGkPMF-Uf}ID&(=P4o}+W9znopG;N&Q31qR`RP_R zQJnbA$>LJ)ZXK3{*q1U@nM`?N^U5ufF99Og-_%O{w4PA-Hq!G-++f7K7x961%3U! zY{`-9d+qhtPW?b6z8fY*;mk%In6vL=xF;o~^kE%?+20QYk5yc=D{VrOObj5y#-@IpV@&U<;GxgZ?8BAs3mH zlgWw9Z5^3h7W?*Hg?yn6Cr_Tl;^HFq?%RhgTQ*~AVgl#RoJFZbykwIp0LsG12at%$eQaQM!>xckj_V0LaEnN$XGWbx&{`34q7mhsNF+=uDuB|P|@@3Y%Y ztua}-sK|2R3vI?)jpcvG&aJrR=Ie3t%+vV%mp+S@?hO8ykG>z>eXW?8o>RAeeIuk?hYQ6-%$g{6gTt48lbh(QL#3IG!4`Mkw9+0qQJM-WUqS7vt*;-7`@)wZcsRA=3hhdTt!gmx%2rvNAExUo4<(* z7cOA;o;^5q`UJYW+OVZ}GZq(@xl#CSue^iH5Wn@!Z{py!*Wl9N1v&*=PXG?Sh?#U7np^dcv`m+#RhfOsN_7-7(|eRywxB(L@id1EpQ}+ zfwe-wTB?Am(I^mES*c)Qb_wwmS&9;v#S%7lcHrRES99vpv!_mDa(W5_+k27kjN_))9l-5Bbt{8cdutbteeWcW zJn#d&{Kh+hdJ0D$d4etWR7R@1q{>GU%4uw^`78$$v)LS{Elo{NVx?5X{;PLkzC43k zzKlEHd@IV863R77&(iwzYK>`;_ChBf|MwI4!Gou#FI}xg(D9=%8G_N#?>SpjFjM}&FyI4RKUM~``bvi03Z0+FQT<4hoRw1=xFW4 z&<`f?=|A`^CdX${$hEMwO3!lN{qMm?Kl%~QV}y!Iv(+_OUS7uWr;p>)pZ+VHJaJrl z)+S=O`q~4`t(HnFSXx?UfXHN9@aU0;IqF@hR?u3=;ri>ZMO#||%f%JWBv@Qp!G#M$ z!D*5!9L*&TuFiGm`}XZYds`dMpTCH5i5j~IMUYCwxVnlgS5A*oZ@^q7a~JGL6}B!o zgesOPS(=o6Ko%PTYK;X@(pDt?pt-En%Tpu9>}F|G3j!f=#ZUcDq-%M+{O}!k^pVGL?C6ucm&nV@ z=JUAwwXeh7ufH4Lf9U&o^x?-qIqX!$B`qZ>y{?I^yZSJ{G>s$Q{|@f?xx4T)?|CgQ z44&sQ*74I*_^aRlBBmxCu#z0V=e_U4hd%USNw+GmX!KM1CmTiQ(_w2-W4vzyRI|=C z;hkzRDuqub1T1J7q#LMbx|U%SGF&Y2U;F!7_JZw23$9AupjgQE6Ue&2xR+WdZ38)H zTRVJJs!jB3@XGA4mlRm3nush`Cd9SYn+D*HzSdT8T;k{=cUN+;-86)IAVwG1cL$v7 zBC{yfD=tbN1>h)YZUAm$T6HgTq_Y#MM$tqK(K-Adr^YGYnak&}Yxgb=_)#j_v!_pULBVy`Ux${q zR-8Hg3`R#sv2}YtT6#J`tIkeb~P zH`>wBhR&`|PP4jjhSIw(^L@;%lva;b=3#&Koo_)iU&3;15;xs-2s6tw%r$c$rq)1P zwjIOgXYie`K7#$*58<|#-GR*iPbvJ(-+Ts-KYom@R-zf&T08JlZ~AE*yzUUb^KTF0 znG>g(e>T^>+NhzWHG|&m8}P(qk0RX){HNc3H|nt>_Y4?4HI2XigD+xgbQXoyyyOF; ziTA$m{rJ#tdeeJnE4c&Z}iB%iAe(>vZ4)1l}8t;uz+yTGGz^; zC~PI$zLHj)N*|~U@f8*Eq6Uube|rx1KJl;;`BeaHu}3>ffM^l1Hc6v~E{76$o6yFa58-f+wFk!Mx|x)FcDo z?XSEQWNi{R*u7yR&RrP7x$_jwmYl)zauIDEdE9&N>#YsmUqq*tG-sTnjFo zKZl9wDfA9(LdTX2ZoTJf+%>SJ}HiE~$a}M440o2RdsfyYR)@#V+^XTlLl(5v=deNzSZI!FO=RME zJacRiXMZq(LZTa&2S+#^Z`Yok`0U^P51c!9mdlU{s5`s6@#dd-3wG?>g@1nFTexuc zBIk{hf+H8U+N@&x?taWqkK^?D6S(gKZ^f=deQZUaKQ@BD`{OTRZe|%Rxg7V5sMgDP z-+TW9KKz>>!TjtD2XCY;q3#vW(lhxs?$UZG2Xarf_5#Jc#x@ru5LUv&DbswU5`SV% zWU|t5Ij1h-jSAHoP!A4lS9_Ms#jbHWF3C-BgQ0_btvJrc-=S zl__>~U<_vVq-vinPD%mcwYt z=Om*dmBz)P5j^wkIb@P4w6(WmW@Z|>Y#MjnbtjjmE-x=}lJiq1Phnze2Dw}ds%7FK z34oeh#!4JxHl4xp(h`cL5?eG}TTWI4rAsB_$Z_9XzhjlU^PH}ww!bD&OT1sXD(xi1 z{Tev%DCd<)FH)(xVY`KZi2EvN4_S>6OCM*qaW!@z`K-jhQc#OZ39EI<6D^bMG>}fF z86ex*+A%&pg^B4IR)|Dv>>}`N$>ZXMOPHA=z?Gd>X*AH+y9EQ=wz8|dys#LQhF-cj zh_UG@^!N9mYika#y!Q~Uec1t2>kXWIbP&fM9zy?yz1(Svqy5z5wo%9Y+#H4mFS5&D zDX&NX$ScF75?312=AMn%+`9#RJGNqRWe)%Loo`~>flavoSKf}L(gK&w5-*yJB~eIs z;(P!6BxXk{z;YIY=Pq&2h#PM>#Mk-S*S?0!BO_dVL*=X6w(r0%+WGZtFp(mUGWdSSXLRZvfl2Z4E&FC8YugSc#({YgLK_ z#D(N08|tD8E#TaXKm!Kn->jh?LuncI4X26RM25TJL^&Es`H7tN$i%y7MDFp)E$7vO z}OtWbo4R~T(t+i zTQ;*BMpLs=D&zFC=eU;t`oo8D^27F=tEv>Le6-l^Pxn!Bcmb#LyV9rmWi3%zc@N=?4YD*~)U1rWtVrKpq< zF*7%Z*_nB!1*oCQwr$(F9pc4{LztPKk*Kj6LuB<3-`d&L%{jw#4^lFhhle>Upm$(1 zw(M-jtKNJgc3!;|lnr)*fc24!xZ`E7$EFRv7``-wvuB=Vu9gZthz=n6rY0w3;j(pF zt8pLPf&M-myyhTodHE}lZ7JZX6Hnvf$Qe9&{0QIYt?zjw7Rw9VMT#DqnxwSly71sP z9>>yX6ScWGCMReuiCb;px5eavyuV3P9KpOP&)27l!0Y!l{>b2UnEzjJy7O5p7$5Oox zPS*PKO5E&PU}%P)Shg(u!O=oWybUMT9m z#G*>QsEQjRNOHhli zZO>uctA9`)TTSw;WK~jN>i_;f{}`Y9+-EtVy}!Q?r%s*blFUt;He!BumIa;4BrjYT zWF2U6XMw%c3hX*6pEpeMi6)goYLmHdIe>$dh!4Zr5(Y-Uy`G*>6wBw zEZz)aYVh=1Iu50E(V>rIwI<@IHi1%^fVIlynDwey+1X5ntyb!IH8;D!bOQZ7uyuf= z@t1~%Fgr8H*B5?G4zg_T=sWqy&hXO_TeAD^ktlX_KaBHu_QNKVKv3_Tw`v0*Up_dbj`KczGD~SnJg}i zjN<7N$1y%Ogtm=2j7~nw#Q^ud^VOJ|6L6;ap|xzycj3qb$FVrtL}doJJT!`YOPkcw zCt|qu<{MF3S;7Mke1qFeQt<+{c)a7TyYRZ#y&jKz?_oT0_3q?#Y?iqg%1@{UqjEBG87JukRm@n&=J{Ue=icOKh$_Yq~1`7EC zN~I$H@Q?lwfB%Iq;;OxSv18{BJbmJ6l!`?Z@_Cet%g7Z9=o=Wog$tMXV8&Z+xrG6A zh5%smMn3DD0GcX?YPAOczH8SmOioQzy{5Qi9kIjKQu7^VTVzFXoH($m!nZ-RD^X36LrYaq-VKjY{m)*!(c#Nn3_!rz*_**D-*^~%5AESJwu!+-JoL>c(YIkIigQIA zdFcE6tQ6p&F-xvv4XrH&?A*NzhpxR2Tl%(RdAZEx#dHME^Tks7TQ~oZBJl$;xz7l%dOaXu$P;G zpM2;%zWB+npgaq-6!I(=lwbY+U!;;&$zvsYgAE4G2yl6*p2=e&sF3_e_n%SV+3S*a=Z@kw>(hZ`#7b5E$ZvDUuxibPpQGO^9qmO{dV6~tb7Q~%`@fGb zeEtjAyLS(E?A(dtPd|;NrFpcq6xf=&_YH4EZ*L#|`mg^M=PsVdZ7;tKLqnH1s6dr6 z)I*h?qobn}^9$7JX#u-;@5aRBG$tk{IE9LYq`z-7yQ&1v)=!j6P5CI18uw)_@JRxi z+^;e(u95sfAV>F-2q_hE5C?0=gb2sxrvY1#Ra|{@2Q>I#8%w{yRaUxjtgZ&aCoN-@cW1g*{J zGP=ovRqj0>j$QL5_Hyj|5>*QI{xz=Fz}h!z+&$g30|3`XFO(}y4SK|o&5G`)rx^Ty7n*wKvfer ztm%~ZktE9C0#Pg2zjDa+SBdd~lR@6XSiy-0-kCnk8~ZRHj$GQ}vf=B#V`Sb#Z~qGO4+4dwVCYy6P$nUK->gg6pok4igjO94KjRYt!Rw;#?n3 z{3&?}d-v|e+`1X2HNehuzN5!g+nFn&RUDrvR*tVKg!31FXhR)B#BZF0(E zrS9p}-O9Shh-obyxhb`Tt(Cyd)<&PfsEpHd0Lc%be_C%(V+ErR<8!M1WYh0{1m7rt zCD#_Cl zNCTAusjb1lQ?nWEQW@LIjG24X~w&2AdtL*&h}Pp-Mt;d zvx69#dKRy`=Pc#9b(KA8q8Ph0aji=)|jGUgu@ab7BPt`CrKFcQqP|!|}5U=xj zRFp#2+0lw;o;iitnQ5LA@`kqW-if!p>m8i(_00#qf{BHTxcjXyLswrrCdNk5S?I#C ze?5aQeCq4m2ey#TGH@&}ui))(dmDcD_kNF+5}$d+9)*;4x|BupW_V{guvNokEn3XH zL{`XpGJxR)E1*!emE}r@b67+4fO;Xu&-=hC``uDng{QIrrg#Tr6eyI&sl}k_2^j=u z$Z!iw0#@wfCd-w>|)plBUOAYX*Q>1Bp1LCeb-o^ZYDXI@gPG zANk1bIO?$`D$NF#R;t{0l==h+&q|G_#kwX-)q;q6NRFm@k@ct6Z;(l8yq;SxQ|x5L zCsT257TwjC!)q8=doi^z!xd$@bUPNOnmGFJC()JPfS-Q-oAA^Vr|_@e{tl;I<+FJ` zddE5}QOExp2MITC*^IsW_hDrE0-ikeFs^y|Zd`ZkJ}j0NS%HfDdS(H49?KwJN@4KC z3>Gd|F)=d7rzcRn!T^M_?I*I(x?6j$vQYMmPCz!^&RgZi}iQ8n1r%Xm5b}Khfkj^!})LA6n#jkCF9AJh8)elCQ!yYw;1B)?|MuW_(b<+qsZ_>FqmFHTThQL#&iALe zq$bPL(=%9DT;W{Td`lWz`+L~}mFD{~t~#PVoaE;7Nk<0$f!db&lT%9RXzetoSEZ=X zhJZB@Lsw@zN3*H7LyjWEsWi&f2BxRyIdyA(k@965$hYLU>Zzk8hmBqBT(w0O86Sj5 zha6IcSSpQ7I?J3c!5cLxA;qz%i4KddM+4|0@Y>%rCJTkm5Nxb zC9+uMP&`V4CySYygxIfLtXyDP{bg9;kJi7byxa-Zg zVB0nQn4X`Z(@c;^WKhU;;QUj=c>2g$?CLv!bR&a{=ZE>3*&^o*2jZWpxlIyno$c7# zKY(5P_u|>}r|`%R{uTRg+KTI6z8?!EqA$uE%_q-|_kwyK))6Y3%A+*Zz~wWGSemF| z`ZAq`MNxX~SH@k$s3I?cLx&FVIauF)@H^}&_H5pSgV!BIyrqFgehF6{9zZiu#nSR3 zTV5T74S4(;$MNOA{T7mRM0$p(0BW^Z!rR~RcKr5l{|*=UkP?%$BMV-ci!Zv{ycDUT0)cH?i3$i;fj*Zq36#k5Cf+tnUE}2mdEWWKcB(^#`SliI0E$6L{#Mhtb}VXCS4V#NE4hv4uonN`OpbCj~|B z9dV5tx;i-WPsfPRSxRJKQgS&3t_aLUX#Dw<(*=y+Cu@{SFs1QI9PxUM&vV+ep_6%A zQiSPj9@BI4Tq3(bSqF5CG$ra&AcNP04%BO+vryopP&RMsWm=!#_QgGJGNcji>bLOt?Z#Z)il~#I&ks$7*0NV5goZr*x0@qwMrAEl`!#9Q9_7W~fd{tjnUNY4pV8V*!_gU1;({7JPGU2l*m z;H=^#jbl|8-C44N2WG*FGL%45bnhFD5L8fUQ3?aH*p}J@B=S|x=e8qR+p(Kg577)TnX z27u{x3J(l5Z2}VJQx$Nz!;*9(;)C_dTJjlIM#NK-z|g#PZ|uV6 zO+7ey`ZS;a)Y3u+2gcd*5&l`uR(C04k`X1@EtJ1XjjEGuu~O5Jm|BY)H*S=M*Lv99 z^z1yAsC>4qjom?ty3+&@2v8)RETx5od33h5qPKT5^4Tm3tyu<4s=+4_rA8|A3(J_9 zUqESvj&^SH!G)v6IqyoU<|w61jsjs@l7USAlYCnGsWvLuxS<;xH+5okau^+(v$*G- zccEwJCO)NAw>Li%#S6%do}Vb;nPV4GoUS07Y)7n_M!gy1rZFva5^k)C>A7)C&yS$3 zJAVWmucY=yt2`RmAb;Co;D0lxXU ze@B`dTxS$mm+_`Iy&1ptJHLgc#YF~I!6oqkg!b|ZYoe&BMXZvyY@jH><{LMG1uBDL z(9^n9Da_GXH(=#8u)Ofd@1`92Qi`z7>Xp?Ce$)Zx0sPifNjV{d$ z;HRhqTYge`tOl&)N)VZDfh!hq0#-dv*4%F2qO`>bxJ;dtu+=J&WvX)zfhJFsX-(Eq zO1vBIC17gTvK%#=bhBK2j#aiLrG>eaAkny5hH1qC@^E5BXmCW6QM`>QciOPI2ZNV} z@VmeD+c042~oX4_ex3 zaV1g-WOHeB_q1ZeKnHsIyHKjEV198<)he zbYNy=0na{t4(UuBd#~Gpbb*d&As}>skV<5cj^(g4S;pd28O8Z3iVJ1wT~M#1Tv|Z6 zx{OpV@&6I`Ch)$VRe9*z^FI5`IVUG)P6A=bKoZ-krGpi*Dq{$0dzGKHdaYV#iVOin zK~R~jAj%cBinS_I1T1*Pd8obpm4rYNNJ1hIAmf>*efD_vz0dT%-+!Nz-k+s`;}3Jr z-v8nI-tT>%wbrwqwN^dpy2sU3Uw%a`uAZqwM<1$Xv?au6t&Xvm?Zyq8>xzRM@ZDhD&K2u%!w`?L=QgaJV9>!CoupVy9Q z8C$=8)?6C+$X)3ZK-PP!NqXfI1GI_?<>`;UM!kZE{3>5VdH~IXx`Px@Cb!DbLuyLI z;s7{b-dnhDaIBYov6EN1>GWe&Icx6|5MWhCJv~|VF1g+PK@0(}185pC zTr&W4t|{*qc&7S`Tc)}Dar;}cDwQS#(RkF>>bbpM5@)^vUGj*0q+9LW+s>Wp74X{E z{$zdZwola7t(&DR7zfw6jURyo!{pQyy|S}s7VIft49Zk(-?5#c3J3MU<5~iD27$b# zFfD24OgroNbzNX12&}WyOnSitZ{Dz>_Uu8}dah2-FDThKKE`_ceFqQJ0}no2haWjq z%V!tZQxv@n(3u}Ivyfn$oSmtKC5ZSJqzUG*HiS>|8Uf%a9|iBaHaS-J-~V|kD=+{L z{SlsU#S;i~=#>g;V1){UiJHWTpD22}XwJ+gEQ?F>SU1eo605P!ddq7%L()^6$~^{; z)ph7rli-TrS$gU=jpms;RWJC?=hruU%U4l~bo}(mT3J5J&Q{{u#mA<3GmLtMJ8syx zp|)(=#2SCx`?wp7puZ|ekke<*aAXU-em0`<{syo^ulmW4+*cp?^*^d34<6^e{{5$2 zSTc+PN*6skGFwNfzX!kXeSdX!*YmIe)|~f5 z$~__$%#LBQ@F2<6s02)XqryhNm&{7j6Yv?}S;4V>Nr4s0fJk+6gQNjk_$`&d`gUY_ zWNId_Mkk%e33iQ!BXU*;rKOZ{xm?nnl>kHu`?C=U1QDkX{@a0mSjIOr0KKmOj3N&p zJL!9bw|A8KV!Bk+qjjM>ec=Baukwy}yrVvH>qjLtN5*|}q7Ghqkb-}P{>x~lvRe0l z?(-akhrjRGaS^-Wqn#f3>r*FB(#!k&=kKo*nCQt$D20clHwLm3$+9pm1PQDu0xN>! zO&exw-`-2=?Ba4AK6-+EUiaKO{h)0 ze4QI#tLa(v@|_T{ozLf`>W1e0@ksboIqwBqsnbrDfiNEQ6dWk z7-hU@#xilLUhuDPsIT~j>p9hQZEU5cW*`&9cn%%l7~mXah_!lGeapnyLD^aafUo<{ z8kbw41dR05!u&!lQhw$}<7{$-YPhj_-0sWkzy0Cu^{(IeK$V!6 znjS+$DaQv_j&;7_h8yY?uXsfrJAt-=OH57zS#Sk9t6p!HBj>ENwP~~827bl`sDL4G zcJDJ(gWk&tyl#ud*BAj4opFzI4I=RGV9O71Q|pm#S_T*mBFuRASOQJMK*UAOFsT4l z=P}oQZj9yUUv#-uKoR^ZyjFN50D*8HOkSahak^VkCkEh5cm2`uBH4J6(7pbcb?SPe z77c`=&O}iGD_nRSasr=uIEnw|=8v=nYqik+oju;r5~_XIVN^(%Lo42{%U%i+;K;t=`|*?Ld3uC!2UXU;uIwzNJ>o4%(7Sj%|1?@ov(v?_tix^ zcGSZUKg4y#*zDcAcXQeRI^d)0QZ9{2tMt%xSto!Bz&brW!7bxuY}~}86eK=NXXj}^z{{>pOx1m#e~3*z*twqE>I$ig zlpmro3dU|@eU?|2RN_nzX{}b+4iKjtusF`~&j5IMoYS)akSPwdBd|ghu!wSK@Xj+_ z7l1CqbbNxnN(_p_^-WEVX|BCFaY)9nHUL#@2fPcJ^t0n<>f8R$8|$gh`m%cP(1UDl zta@K73A{HW2~1K07s83nY(8TLz&#Sg^McAqib@`zw$!6O9 z#je`9XLEh~i*BrKdpFnd`4f^(IXp&R)QDstMPvI%l%`EU9bl!!80Z)zN)@QXnP5_F ze5x+maB=<7@BB^u^`G8c7tL*D?^k%W%n8|p0~K)N^KYz|zw#AzQ+yW=4}u5 zw{jER$;rR7?>i88&oi$%&m$eQ^-IaQWKTU2M!Ly8fE%DwA|->G$O53K7J{S6DphUk z9P4w3)Puyd6IesymWFO(Dg!1CH(cmy8>A=12bZ1r-S3lh8B-WtCV2 zh|49ol^25xT|vJ9*WV5a@pzBCSav}2W(1+lRWc}sR3WyxK?Di&Uh#oVwc>KLD7L7b zg(3j~4kj-SIM?RA!rK^5VWsH3clIH;!V56Z&;!tB3Ox&I5XSI;$vR>}zyqJZzkcbL zf4M$+?>)7+U@6ty90vqGaQ}mK?mo)1_190z}mTE2Q$u}`OK%;RC#W8W9`|y zkDZ8)A3tV)Ev*itjA(fQW;~^1o#Yf(RAz12I9HeK+QoYNL&r`sM8E97zPfb(J~q=n za`+IXTs*B~YqfdvmfEs?Tb(#@s_ug~4MhUy!%O!UAvx;aL0KSSHa9y{TQ+Z`aRX%m z(8KZp_t^^W+*%z!h0@fsn)6Ozon(f6eqo_bpE+C0i|1=GY0x`83#g+|{3E3Y-r z7CgeSnnuSd0}w!$9v6WX-km%nCNL+@)VKZH7u2)A_38DupS_opS<%Ap+!)%#Nyn*A z6^OPfytX+NCi0J?CM9F+MP-;Bnt2id#omDt4p2)NjD^oRAxOm$#?i*A4_ zV1kuvG_IU>5nKTku&)jr_>uuD>eW$2q>7+W0q|I*3h0du$XVeqsrOf$EU$k!RlQzv zAKb4!)L2W3&jq@)()KEu$Z3m`L3S!nQ+F+PD&U_HVCDQJe~0U&ht@fXw;X9~%6LrK z1f9TlfNI$jJiYtxzrSAp`q$UTKK?OQzVOdv)z;11>%=JlBy==Yo3?DO1q_K>@QYA! zG(A=;%%b~k=w=V0JZ}OUARpLXGV+%VvsD{sH<3reYcXRUO}0;*ny-f+Im-5X;CE39 zd(pP78XO27&)x&Ze>`*;6Cxg})zw9c**DB>;WO3*UUBDBlhch8Lm~zdSS894@ie;y$t~!GZ^&&#uGj(L`|bzo@w@l3qu1$^ z=kJlHKJ_2f8(#l<(leZSrNiNZp1i(G3%Sq3L5B)k$B)vW3}<1*Fs#q;`}zTj;Xu1s zU)pEUu1G#%dGOy>Hf7}ielHCxiwP`j!*ymHHa~$LtLC_=8W$B<<6v3&I&kdq#-VU= z56s#_kM+Qp&SM1?fD41iDyyXF0UcPC5E8H|`%T`yp>>OKl0SR=cLc z19!~gXR>*MHU?Dy_BQFMHqrBdVxTvJQ`al1lGNhmAT(p8k-g{GQYS~`NXxs?2IyAa zzpBlfwy@mtw|@J#>z12u=KV@Xi+-Hw*o1EGIuz)bKYwOkeK9fKcxsy78XAz`8nBiN zON*>bq5HjEg(9BfQ*tWpHf*sZPA=DE4rdGSR|5FI&uoc5auKGHS14}?XN zpbqREB54F~Zgy^_rlw|E0uUZ9t`ncl;dHS0u6z?mr)P*Bnr!F-E|6ZOfChlB?DHCn z6+l^_fB>E;Q~;|hYiwl)d6DQoReGru7Bi?MIYVL%bb;Czp04q+*&1gR8P*g$kuxZ1mN!J1 z5w5|KH$4#CBP4Mi0c|j*YhL5EY114h#o}HeYde1Y6xWG-HH#DANtw>dKK7__KW+oL zrZzOtz#dwa*Nu6-m<^4#gl9$%$ z6Q@iSD9UTbAru%jw9&03wcr{=e z`lSQDFu4OS(?WC&Tq=r#<-vN|o(cg46xe9EKlCou?~=7dyE|;cMV7Imj5Cg)>CCFyLkh@;J5T$iTg7 zysy*=vh+BYtF@BqrirRaC<~^bGesDQUZ4=pPip=;`Vg?E>jW!_VEu9bswEw8Qe`xxECL(QBe_M{b8 zERP;xR0=7dKH%gdPp( zwLs!v!fiN{T$P3w8-HqSvNq0bqE2&V`CJ`-VIONPN~JeuQS_Vl3JfXba!bL0 zstio;IgmY#H#7N_VV9t(0nU^xO23N#aWAT!hDHaua&q53jAl7F0`8;M>Cyl71#ztZ zGhkKam9mzi1;UFOyb>}DWESFfhNX16aDk<)i9-IU0vxumE1yH-iTO$V5g`GSYnF=TcbjkQHfRcN{C9diJs`6iX*h5u_ zrn-tQz*SA4ISl1<2>J7Fu0~Twz)(fk%OMT~eCIvMiK5>bhqR)VPAA^ooqeM2&b$OlvpqZ3DtkXa%5%(j%R z5)$fyr~=L_d}{jK*4PB+*N#j8E)Gg)!JfqOel|bKMxt1k^j-z0>f~DYM6nE_*s#w0 zufZI9Q}2(*8s666Y}u9=3?(|DL)5--aty%AM6e=Vof}=}o;~|Gl_LcNU$o>Ez6j;4 zN?vu26${L<#w+p|N~dTY|JGqu=yjfS6t~ zP&^oW z*!SDsVoHhaaq8zWvRYLFMGkGYnE6Wn)1M&_2<6q!jJk^Vu_Sy_%}O-V*G5C@ppsC{ zAcLXi-jAG!N(X?;FnaS68OY@O^ikMa-_fwXKhyjz>IieEHY)2uDZr^)h?EKsLY{si zKG_!;UeVZ2M9~|yB89=DKsQrZ^&aha;0%_J3Kq)*@pGsGIMUtw1Wk7GefTUSuf(x- zI^z8Mz3@-IV2`x}D@rKAu_|N&R~SVAr${ctI|~usyV8sTstz|Fra2KLArvAGxl)wN zuDZF4ywLnlUYNYqc&AYy3`6~vz=Fp_k3`2ay$7_w`2Rvw`Wi|0x@2_-()9GwXgMX$ zde)pt6)l~}Og#*e_1?U?Z)-zS_iQjl*xItuEh3W#ra!$IMidOKe9*73uh6_yzEjTL zU^8{0cK=5GjRy)IK*}6P+u*j{l{JgEF0a4qj+w2+{n6{on)WisM8c`P;Nd1Xrd+q< zpEC2&CmMtr2Ojs^oST`_#LH}kBB!r~-vK}!b#?2qE2wAhWmfd0_e&wsatv4(F4(=f`4QZ#^I7VTya;U z#RScBZQZukHEu~3X8<_*Q3rw`V>Spwne>}&%_DFwlLpYE1@Aa=kO?wKg23y>Yn&M# z9N-KB6fFhMRh%yKR}LW?xQ^*SX6Uef-nD@ZEU`Y8B_*pJuRG<4;_KqUHQa2QG=L{> z%NLxanjyn6y0oj*6q|b#rA1B)ylHEwF|Z#w^ulG4=@gA~q>By0=}{eD|jt2L9DnETEHVDXrc1U6E%iEM9Ots&4J# zLU1aoJul#4@(@G5GT~0Ac9a9)HCrMjMMHpJ3z|n6gWlOvh1oh2SYvq?$&-YdVRy2o z2+(`tBqfnFTsOkKK~)A^=R;dXYcd4o09WK#Tw8-|z*R=jo~)G{X)8$YmL;m91o)NF zz%rPT`QqnKOfY`{8bQD+Re)GOb#GJPHCB6fqd?$G2&@>-f&+|%1}uU2D|nS?qyd06 z7}`<=Tmv#gPcjb`iJFA42od37@MmtM60TJou3McAC0CgYYHbPuHX`~4s#XMe(C?Kh&4dR$q^l*M}P6B;VwGqQx;t&YH^yxB8G;BN@zD|2vJRnvO@Kqk9 znDsN}@%iCEG6Bwe$OoorO*BNhW(v0Xb*}agcI2J_unaWRrZE%?&5EB5BM@2$jgwJS zz%SP2`C;(+4l>R9cMlQ*1_XqG$1cDU8s$_ZQ%7`^HV(0dx%8-RZwo{JD>+A0)3M-fL(C6%QC#Nh2ui4=)b&i9JGLfhiQV@1VGfKPo(4KssY z0Zr&10OV|W0CM*@(j`mben@6{K^U4Rxm9MKYj3IcTTNB)ngDC_J_gDJZJZnuhmH;r zm0-##Gf2_$s`@AoR=UgpWWq$Ch(jrd`SN_t-8I719v5Af9B7gH!eyt9G6Sd`7W0A) zK>P4N3Z)xfI~*Tuvc44(68riA?g=(+98|{ZGiyOSC0!iostY#VsLRcVn^$ZX!W)k_ zlLU|f-4a6rv!6%$XSUBHk`C6KfNsMuJm4~AE$M;RFl0}d9By-13Y}|ido#TUtQF-x z&~wXjE0>Q?Ricgi4dB|E^Uw#DOw2krk2MTUPikKXAhCpldzMsF_w?azrJ5m?G7b&qqHweOkvj5|v5DxewqWax#`q-3g%makc;eAOJ~3K~!Pp9z`yc5%zv0DQ^wHPV?>~==UMkc8=x8Om z7~7l#ebEd zQwEmRP?k}(KCiCsiggs|Dyx?nTjOI&^n|m`YZ+47vNvjg7h`>>L6TvdGxiP3oNY$S zvv@iwD^P{K=XXl32St|k6WVupzA zgN_3zpD7`EoSB?G;hZ7CI$&*jvC4Ajy6YA`Qzv&+DG<+m#ML{`JBl}_>x?2o2hYVI z#uQ-yB;4k=&DD+ot2x?uYVDxK81V+fb802zarX;rA?@&oF=PX<4Vt#G9|rFj*ZBL9 z`YCIkDlWg9Ed={`pGK7gS;KvLKjC?$^2jP6dAv4!gz{F?ubUE>4pbBFrIEcNXWTA* zGnRwrGAM`8-sm1_6c_!Rh!Y(GX1vrPm}Uw@ezx9g&A;b&~=C zLbMt|u^hHvc_;=-2FKMKLSC!7$uXhT4u`Pl+{#+*-FM(iLD+sepjq5LhY4vZO~3sn5I`(hWLa zLOp@Ev(Mge!z5cfi{{gGR+Zt+{-k=KPl51fk81Fm6KAi1`a~vn?UOJ$gwIrH+qf~h ziuUr_{@2f_oo#t5HRl!Z*jnSDI;3wvY<@KyDF`KQY?OB9&@;iJ`xH9@(=m)TOj%?d znLzRNw9IkyzdBW5PP5Yq?hC;+@%{UIWP^J7Yy&p)qwO&JQT8^U-OE>Y4%e2h_|Y{c z*<;uqmT)q4uXtWc40%-T+%*oUMfjJ3bWfz>HwTpcVSJ12 zTceWVZO2M_-5LzWLznl$9R;wLgOE&M4=-Yzv`=h;l3*K@wB~nwa=uPcLEU)dUqirb z`+v}DwHt!GH#9>(J6baJe2w8;&%creaK3_TZ_PEgwe_m`E{6YXi54BJ-YdFJ=PvTD z?y;WF3+H|w?Z00z6>$8-F*aerCPvMBEY?tNg?jBYkI-4vP0+dzLU`#_71|3_p$1s3 zrE|*!)nq7hsFLm1>*Tcsc=bI_OgXdMJmzd1Dh|AfOyG}rF!n;Z&@BV6#>@oRwwpRF zK(Er|J%M{51=6Oq62RfJK+s(Xxar)wFzlAWl2F&E0^X35V*?M&a7<9dYggs%k?(bl zKi7rdr;F#@Dwhm8)mLMyD$Nv4htHQ#Qos?(jU@$H17=?x4u|thQb<^DfK{SLhnvT} zbCPnQ`vg~yCL!qhcLSoqoMI1shrd%*oP@NjCFi>0BGjUg$s#ku?npx;3H1_l4+;hB%{NkC2-wea_~EQ+A~C)q z3y<4ZmOjpLA|K(iJy`B(Pol76!sash4g*iXH^xls7k;>dWDn~@OZ49b=t3)m9vISY zeIiCL_Z`v;*q`XBDqz+8D$xZ3O#mnw!|Uwm`lJF-u?zo;VVEu&kW+^R0jD}%d-hyX zmtA&nKu>h<{V@erY(cafqsLn45U*YV4C$?7g%^qH4|TcH18jik_I{B{fmW(`a8PdRLpHq5aET3E<3aWSkejSIY0gF` zT;emL(ugo>4@+m1zZyDKapPKIt|!uz^pZy^3T+^{q6gxHl54{GQ7sg(HQ*3ERdvCiC`=-uay1c4REJ(>@&v@!WYkf`){mMzEE#$k zn}K0A$mcgW%m{B8y~MB>sYDwmBku~k0pCy9w$_?SPk9qm(eRI}+r|);#12w}i)S*a z*GE<6%V+k!XJ*y-x}_F0sh1QEqC+>5U|sVLdfZcNUP0$0KD-=ROn3aJ|xzIGy<8SjB@|?=sl_NeN&hmJn9% zQTKmYHKq@cH>*AXEfr)S;o1zMW?AIsdOH-h;)5WlXRdEDu(EMTga~;qj@p{XEX9B_ zfZfZKyK63+l!W%G_LwT=+LI*8SqtrE>H>HOJXTqb4Yh};Az{7x4anj&szWzP`bP@C zDax=&cQvJm=qk1|bmN)6p03C<9TFhqatA2$EFG$I&D?8M5u_C@jDloz8aU^R=#lnf z0#pO4UqIIoXHNr@pjcwXVH+VYU=;vIk{IVprNdAKd`W;6>w~c@q5_H?>DjQ?010r7 zI$+p@1z|e}(z(k&)B`QawX(`)909`>N~t_i6?O7#w^f8Ubl9EqX+(?=fc})(9y%e7+r>}Q%>G_DE{TlH0f z7`tFPUcPoWm6H%$uBzw>b>R2e=%I0_h~{k%WMo3TP|R8rCp37bIb|9fJ+rkG8ltQ+ zK{8&?nuX|XO@GiWqDPd--~3)bb!ojI8-n`@k7w_jknC$5VrQb2cz~&}X$zJxH7yM> z{T5GmTyoetWFWIg3rK-`{{`;X@@7-dle<)<242SD*rbnssMl2UF)KOO9s}<1|Dm6 z_4?%7dK=H}@`X-m1+YH+uv7tq;BwsrMw+!)dh?<5V9wRDJ21iX z#`O{|F_m;lpUF~4qL4xg9d7%j7ENOtvd^g7nXy=cO-JxqV|5Mub~4?4b^E*_qj`6WwV zSShp;r9&h!p8w_gd2w2LuJj1eo{-N;bFA2LERjMJYWp)BimOu;9Q?*&{7;+)oD%wluO1gXK*d!{BP)hvbG-ArYX>r8c7<)sE zxwoxN8L0)VonVDpUouB=2Bg`Q%kO7QmO+hF#-`-P>$}aXn*&v&8Sgn73Gm`*>@)bd zh@m0$$9JR5n{rRDQv*-^UXwWNrCQI5Zf)$xifO_V=o10Gy@7Rgt@fd$_0ogxF&&l6 zzu_3h&jYApHL_UP}Jk({z zE}u6-ghrwP6^hH_67cBksX+z2A^NE4N#IySdrbip$!j^O?BB^xLr3;@IMMb_Ntqn& zw7qNLy{#MOHc1YsElltj>guW6KgoJ)B7Jh$dPTOumg$Ft(!BTBQpQNrqKr5^nz! zT>ZOytWDWgJgcg3Si~QwQ;W~SUrB!w2a3=%dLnNEz<}cWA zlK{eA9(&%VLi<2J<9J0W{cNv|rj$0nW;Gag+E`jSb=VXYy!sEPC(KB#8wi0(ISn!NYW2-)nX% zV~p_mjQEx4VuLr2<3WWP){l*mU~t&7(Vi;b6xENOI*FVPw0nQNjMi$wQS_ya@NqE>Z z8hmEvRw*&&U6VrsaD(oz?e_kfmZTo6Q0z!chy)pP>4RVNAhlPu1xdpdwz+4XMFivj@s7H9*G@K#8Kesa3wA!X{x1QmD5x>YtT5tuW_qS(XVADg zD6U0cg@q;M)H~be!mm&~yOJN!RtZ zCMRukWH35#1ub}QtDI&U?E}!P!yswK(3$Gd&D!*_4zU^D zI0TKiB%`I!y7{5bSdUoqb~OrXIYH zndc={wAxuv!G1d+gC$@?aT1a-PW~3Um690o8hj%Bt7KNCu3kw^AGa4;I>k-7ClBVtc0_b5@F-N#nj-@$eOTmC*%MFT*T9I9vW#kp#K z5YU@dOBaPc)lJ~y5W008l;MvX;w|N5>N>!PvFdnd4^_}6zgBm_;uX*0$|;NEnFux% zp4KtFRDFru;FdWP^swiA#+ckle_Hcopm7KV+E?j~+wn&FabI1N!)f5ja2Kn6CA9ZS z>tJ0cYX5=#wQJW!dcSXE#Hg=Zs=qU^swuG&R1ZJ=2nXBE&d%24&WzPA2_yfNK{xm0g-y9wnGZyDg&eiDI z)8>lNw(HZ*;<|IS?s3owMA8+>b>>=7tW>pS^VYiT@&g>uIgHvb^fb9{e^*sNh+6OqmMN?VIOs!jS@?@w#NqkxvXj19A8n&`!oO$uhijhC>fqhY!uqg5pVil^ zJ(G5r`c)3sxvfDwz=5(oW0(bAuGDJobc2X>q2M43ozNMK?fQ$~FWw z3xL%7AQn;XJ{ko;|Tzf1jhO>E?Kyqmo0SPh@tU3Z~u-S;BI8JABJGoJ>UM!1i*tHsQlV^`q{+cO$Pgmj_Xh+ zG#bHa9c7@p=jZd-ILQ8<3xg}(KkA6^=(#wd4F( zo79YmAbN_NFEZZl&)b*Rht(S=A+?XBPq+cQ@t1>wfI&nMd}!SRhsqBFmG*+^3(Li_ z=RTo~kxkXW)};8ANvtlme`ymR*ZJ0$RRFIj-6Pswi0(qK{0Mr`Fil`VG`s!PN|re)@$Sa=J)-|)xE0&SU|YHLZ2th z9eSYBtFAwAqu?yyA9@ADnr~SK=sx;%2OUDgn%6F^;<`7RgrmQGoueA;=Jz&3hxE|k zyA(2Xilup00|f#j7bC`?MdI+ek9x^DIRo~lai9LIfp@9>8-9EU0Qh_M=DKJ_yI)`x z&f4Xm!>CQp`!E_>cWt9LVeng*d}&^7`s8*#Ti1}@9IDRBpZ>f@dvJ*U7>%mhd2}C< z^`7sLj}}Y}N~s6)uKGUf&Czx4un=k)s%I6aMprwe{)XpGf5-hPM?P*)(I3Jyyi>oq+hLcbj|cpg0QrKBV^G(?q;`0(@!%VD%jdhJ86D9|EK#i1dm#tv6czw>VeR_(dju)FMd#1qs59DL9P zBAAhfG~8?rUi^LDUjcG{ZjV?xZ#@bC3Fot~>E*Uv*Td@zQ5cbEMHA8t)c}ys2f_2h zY@UWT76$)ve}QHUMCr9gD9QA12y82cR(Bh-ul-Kf7ig>H={@ZE?XL= zs4yUjRyhKSVB~zQKmYo@;9{^IeTy|<#b_ydt#lm5>fnKcb@8r?A0sNj*+z`kJ$&?V zojrSo-l~#UJrk!|c5Oy@v8-ldX5ZGE+>|zR`~P+vV|n5Q#_JGQ8_TMLJmg#g>T#5t zr5fR9v#^p_v6)FgBdFCL;)Q^K3^Pa-#`}%uX4zS9x;9P6ky5y2wj}fr8ijq|}UlA3MR{>YMKTJk+2JE|i4VdFTb7=cQgC zIn-V=pctAb;!Efm_X}I>^T5#$2jd!B%e$g@zBSth8 zN;2YM+xmV;`NjY|68Q{ED+jvK;a(asBD^Ps&H6J`iUcGLJ{Fm247ZI;OXdyteG{;@ z&CG^4PDTzXhM~iu#8Ge9(>=6qO!T1hzeFXYi8Q=KM!q{U`mEl;N>r_ZYSeNx?lqox z<3Y_q=cb0Bn4b;7uYary0a$6(lb_;L`x>`BWFy;3&08SRuYVNdt%W8PfTR_GRb!%t zz}h3;Avlj3xxX{V%C>RiJPw&?d`3_>@om8 zpXObRhMgmcV1sP4ID?%Y?=@NG^`L>DrzwaWz-~E3(hqf~qlu>TH^I8l&>UF2v7tW{ zT46mmIsEteyr;Y}C1s@j71$ve)e~C%ah~tBYK^67v4!vn##%R_x5Tsvr!!vL-8<^|6rIl{An8OyKgRozvsS?d6@<}A)>o(H!JAI2o z@Lun`Xg%Wv1t&YO*zSzbP~9o+v{3j{EnPqK+PC8K@~c*THV|S2pNABZ)@_g!_QM~_ zx|G}rf^@xZ=Peyq=0>8@X)?f}`eyii8sv@MyK@*L{e0UQ9jtEqYaFcZW%fO+1gEZb z*xGRbf<`IeH}KT06CFS2j%Fj2?4x@s`OeWjvOb)?@MGzneoRA{ zM(GaAI$C&0X*>$$qHkJHW;miu<>I4U&V_z_L2feE~9AIV_=tbCv@2&gr|q#w8$NRJvQ@xiL0?|RQ}h&>r3 zoz70{!9l=+rW)!L)i_Rjdg=41`_yJ*zXXQ2124J7)9Xn<^U*DoQK@bkjx?TG_THEG z|9|+`Z;25@;_yzNHt4UpF2o<<^V$XsPQNemR0tz8R@B^I1)$M zv5o$L@}U{>Xowr6>oV9k~y;&Q-G*>_?m-95PQcP-HV|oJCFP^U-*lAY=z& z+y+nz5O(@&e>!!Q+@t9wc2q+oX$jt-a*qLR+5@iRW%InVw1$lH);H_W`XNM>%aI51J)x)sS233DnP9~)jG@PJU4OvOZ9 z!**qQgI=yIS1azTJU%YaZga`}ffz;-BaF@(RD$b5n;cz}S-)x<+rzt`HIaaxUuw(U2iL2F-JpJ{=>Vn2&}fk`m+8Lb&~gy>JK~aoO`n3{n)h)uSwCNA zLRZsfZ0PLPk)qhTL5neH1}v>sa&F6j|i_ z@IVdD(U3gx7@ckb2K^R&jl*nayP+7;<`nnl_N@Z5uLqt_pZttCI=22_~HR;rvkvS+Vawy(v3(KBDq59gTo(DyuY?q%ZrOOF*B_$m85Na(-~8q5ieLfe*Mr377+W3%z@e|FdXJAWb_L$j^&xUcQk0n_z`@@;^GqP z*cJ2z2&LzZuOKW+)tm};@b8K7DKWm-2W{S&Lvr_uP_CU_YS{u*S@ua9B(@FA%rqJl zHL+n*&8y4rQKm7wUe16zB=b7h*Msc{{l8V5Q#DwMe6Cqt4h@t+9k%^Je_;F{8@}LL zR`h*1?_5tehsV87L$!pnx}=t-nM#uUha8zWEoy-pDgZPW@ND0{1GQ(*W8|@h8-v{H z(2+v}k9E3PVm&yFsmRpBNSlU&=&_obn5s|RcW>Qu_uVx$JzdjNvo$?4RWmaiYkGRJ zrl)7vl$PDs?G1&P@3O6+lYwh8oz6Y#*pD_@#-WHtgZBWCQ<_}BT6p&@h($IJMZTEQ zB!G@29GsOiHdadj825rz5lB}|@=&08_Oe2qI11dYuh&W0lzda~6=jQ8*9q94g)PaAE_17Gok*;MFX7h+}jY-4cN(m(XV+j>H z{?k4JgxP@G!tNwRox#TU@s%xl!r_!r6Coq0)97P?03==cBXglnV3{bu`D{+c;&o}5 z3`aoYZdLK4M%AkvQs+C-=evP5)=X5_XqY{WaPT~{-{RR~vM6tfBi?nkhCMb!En(z{ z9GgUrT@S(C%jXh$fg~Mes!FC|zsL})i8`sXHT04d?qIqGeh1@@A85jb4UiUGRDwr= z4~;XfTO+KUm})&$^*(g+PrueofysHv$QTVPv{f`LCpRGe7k~)h^kfnwpw2GT<&S$@ z9k}$;T3TGBgevNatkD=J5%*G8JS&WhLV*B0SKR+&3asH4Fka>85tOvfQ^PtlgJ!U@ zHUuF85xV6IOj`(R?iGsw;Jp2g+v?uCKVEZl8)|wQz`CJkXXgmC0A9?bvF(*Tp>=fk zaXJQ>Ii(}f+Jw2YIkzxl?zCWQOj`pwd1>f24-Yt<|9iNiKGfzp^L+#k-<$0)J5V(b zsiSDi`qJPCK;o4)j*@8A{-55=FLvycZt1>izOQ*J5%=r!>1ib#;;pAqpc_?ZtT)}7 z9*ei;$s9VT`%mM%&L{S=$yTwH@YfOKh$!335a84-56Ao*&7Bm64@*Ln*7vH#Xgn;M z8cGOo>cf=Hz(3;C!~%6QiP}T z{9XCt70mU+LUQrDl0H17)V{gos;WBvzf1amD&@8l8 zpuQ*GvPJ(crH7HnNT{XdrCM5Cs>?3Dyq@sHC)VQPBLBxY(cPg<8)nGxV(v)o}R9|?)pT1`qO_~ zv(r;GHNAndt?8K=ejX-7!UB7yngEh`lW2OE71Clq*(hFezv-GRMx?&_>hPtFECkSk9}ZA;}drNjb83G;`dzk!#c z2AXO(5&-rg>J41Q5`l^tbZ&Bcdwgr7scA)w`;&J>6|BtfYE zxRFXrdO7qb=J%-Dr`>c-%1RyLCKr%y___b~6}%WdTnX9b1oSR4af*~Wu^PkX%f!t*`ibmHYRj(4tMlnT4EIssspdioxk3Cw-Dd|e>j_r5-_-ve!F z+w1yl^(E#29>Xi59#Mv(Q6e5z)fcBn@O^rJq7I|8j0U_;7t0{pTV7st0&0n4Rv!QO z$B{+}u)-@z(%@4hulDTOqto|TC9mL4A3b`s78Vu=kPLZS0>zfn zHRK3OHqlX895R^0o`oE4NywfC0&i-N8 z?)}biFV!pRzOT_7eS$Ksj`IugnMC<)XwB)NUxv{h=9jn@36GlxV$K%VOImYW2_A;~ z8c*E56Cskng=>kSe;8$9@?M-?97=0L@w*81M|f<2_XGzH)`Z3vD|XDN4(kW5sLBfLB-1Q765|yoPZF*(*{aw_&UOfes2$k5B(e{^yH{D8i*T4G=vVHUce!O z1AZCzh)|!?J~70SJUB)y>j;zIWAEUBjV910G|gslBw=(8Xi5#D$Y%(bQVk3Q_$eIfOE$%XlgV~CoWhmf+|dgoDxX(Adwac2dz%P_1q22< z11q;b?=dFMcblbe()IAcUJp7g-g7oK-Z7$Ad~P`Rilb}voVbr-@aeVdjDh~bd4$)w zxHMn;4_sPTTycdx)&&D<&lw0Tb**V44{%;sIO_rdaIE`l?_O}MiNgD{?2xR#{V%Hm z1gytcOAC*6$en~34oNIoP*?2=d&XZrW0_8#Y#r!CU35 zQ}c(`rDA@NgDyUN4mML05-zkmqj!hRQ(D1;vKhBITZG5z2F7WfxT4in@J9IeWG$mZ zK2Z~&>k+)(Ec}@ds**B|_HN>L4(THYsv(K-K4nl%O<0n`!^ft@2(7Y9G!YaVWs?0k z6}p6C_a5Z+f^re}q)?XJukgmBa8^8b$s8RGo$hPoln2&4S@!n*>P5H!d z=8)$-?u5i(YLFbF;p1mHVV4RnchbUQD%sTuKOC8?_?(B*bGC3=2JFv;#A5ldd# zHYwAr5so*f0HHRyR`KjhuG+(%XJp6;OPZRj)|t&QH>HC4ldAON<@y=0xe4e&+BnVn z;$H^^Yg}I@OV!M&DL0sKc5Z>K{XrF+t2In%jYpk(Vgt2RPjx+4XXfYYagTd^J@Ls; zs)hM^4mypesysvof6{v%c8bq{{&DL!ny`w&P&nLMEo40MRgO7U>a=wLq8jqC^CK+Sz5c$8zE-KBh zjjhh;V{79zF{z2DOkOygMd=%}g&_X(5V*lriOxsFtTV0=$pL&XK2_n8s>kqG09Y)w zXQ_K%X53yZH>QcQyL!u<3RuI{X_I60gj_`!DbBTB#`te}NlG~P%|@@pNws(+JeUZT zaUk$rSQnx$bEAAcGxbSQ*mcduXHbUqB9Lm@C^GPPA5;xBhP4cSCSg=Hj$v}-(w&!w z;j$(%p|_gs;O9^%c>FOFlIrNeDl2%EQyMVHHKVhMVS_77q)pDu)Y9@<-5;J4Cn8VO z$}+ru7(^xWaIfe}595O0%d@FkURh$4q-?dk(R1TS!Yt8K!pt_jhlz^S6;e_#1}kgJ zH94WGLhLcDCPrH04-^;N(NrklnN0BeF@79(mt+la5Ticg#Ub&;vw~}3qHxkJ?xchX zVIgG(lpV`NpYcM^V{S--60Q~dmC6+%FqI-1HIIFZWRuQ7)zXT}Gm#<3*}{D$C!xfc z#>68G#?SE@I{0p&M30!EGrmdpE~mtmQOr~#xr@XrMyfAM{W38nBgUkXnx#VlgXgk( z4$ltXOTj}fU?q;e*`0_dxBqcz-P;L>-?d_-e$2{B$g)8a-IpK@jjrWY_n` z3#B~AvM+M5lp2XPGG0S`>n zMAK5hdm0p5D3()58E+@OB*FwJR`Y0YQhN4=TV!I!0EWsTEL8?X6lL=x=V7$b5^((B zHr5+*FD1^>F^ZPXj$ukMwT9ACik{FKcgDKSe503VPn}*?#%{X-6^)BN&jbU3MRqm) zj=fi~hV9wwo+w=m*f^S((=C@W$*w#%MLp51b`f%hR_eONE5j^+`%ies=!D+8)$7S; zni^>?cJ`QOvMEmiuUnuG5Kr#{M4T{^6HG!wsk2aL=TFxB>BYKe$4)k?US3|Pg)?XQ zy;RE(qfi~HNC^$zMQ^BA0Htj!;#k4cK87A^dIexKO9xiosI!cmpX20}a^F|#CoLffQZPOScdem>ip6FK-{^C7q3f(ta4nC7e09I#hIn_19af38b z7&#DvB74N)eQXz0#nq)cG!8m8Ewm(Ra%yHER%?!Hphg(4WgE(b`tm@jAM`s!T&C!#6JyFt z)??50nQ!$qDiTbl-r!0NsXX1zTk7BXdGEbTeXT>{BqpK(stCUOF0o)Vo!1qXhY?g1^~SxP8iOO_ew^_bJ09tari*}r99u}$aM!XN-4|< z7wj2c>G?Z0Rx{J6=US>m4}PwW9Xnc&fBX~b$}68#i;D}jaP};{)p2tWD@|u_Z=42I z1x}zk;khm^qonmQ1y%{;5kg^t062(@W|0-wflZ}@90(lx%(ho@17Y9n^v1gN){oR( zciqKJyz7$vwPWYr8lRf2@yY2{nS>CF4^j?i+d$-?c>er5KX7Fh?Ouk{bfpu}IRo|j z5p>aN>){xQPWQ5?y(CV@%Z&B4<#pUE!MV6l{LyCWJX%629hA-w(!utSMQV5PckNUs z1(hvMc3Fl)G8%4XX~G&ODY=nG#{eWmMf7Xt^|6Y|2Nj$!uSnn9ga$TbxNcEBN>V|j zAc4PC8U*ubGfZJL{!BuBUQ#?0J~Ir-9XvaWl}hHi4pVHa^= zbow=x1fG}!6Vf@>G;sY?sz`dIp`)+U4ZmqFxoiqEeap>TZ+6I@t-`DBmHLL10K!*! zvVd@8yw>2QHt-DR?frXhg?d%ZywdA=j`--r_p(~A3HjqqQ)sOX=m`_H*>xgyd_~{fe2sV5k6atcU9CS*ZfRv!>|>Zd4s%1gZfHexV=q z_|z0Bgj+s*OWk$nUHrwaU3==HUHfWcYPMB~V8Ot#DRfic%J#sy;rnQb=rCz@TNvxn zx#A*fP3nG+$@O9|%ymbd77_g3+>FV+Xus zJMA2_ZtSw4T3>U-HYS2f`?uNndAk8p=hgrkkI5j5CC#0+>K~4h#-{CVgvA0X*f0mh zgc|D{hHd3!_mo+dghxg~m8=~j1*}Yj7#PL)I04B;8)x?35ac9rkGo}PtTbuYY7eT> z3=*&F5e)h=xPTzpdMG5CE|cq*>o>J*U~hsrW~6&RiihY-U}lj@v;6P7fa zw1?@irh`F_n$eKIz>Tl*tcm$v>XsLcF$bpS(K(t_a;ra+d}KgaG=WRMEd^sP!Vv}T zpAJHdexky2YXsKCGso)FpZX-%<*KW%t|u{hwZH;_biPYuB9!9^fQ^b#Ask{69Wi zci(wuLA7(q?gO=J&*j#xPBkwFiKqawytAJCX`o~(fd7ufXb@gBA?*6TuU}vwJJOUeXA2pJ_s$(Cr@ zL!^G#z~vxT-0ZLbC9~{tm}S!)hATn{y@2mi*Lo*WNsDFQ+jQ~Kn!on*COA4HpK{G% z^Jqi{(i?m4G(3~RCm(KoZ|>2*5IIHF0NyRWGnsk~!NdnB^Uv~RI~6$^>VKeq1mV+_ zL`@?1oTaaDUhMs6-`Vw)s{re1iovQ3CU0F1ES&c)ism_&M=DJoJkKB#$~qG)El=fQ zGgP_>)D_L2I$WRs%-{07T>X@*>&Z`kaxE;NU|>OwqC6Wd$^bcms=teZVR;E0t0ISe zdk)s#eV{5I17HnOqvn<#>--rC`jJH)1y(m^4&k>D&&nF@86Y7XtXWEgUx6Uv1i2 z9j=tzxiZHaL>w-W$`4sSD0ocDm(3q3WES0!S?dWOb!cs&TL_8+i`P1|wpG_gwy&!v z-9kY{a>>p*1d6=MpbY{a8dGjpHVtuA5j``-K>K|n-0MDs&_y#x4NHXg=rSJH{{--@Bs!hT1J7J9-g|v>$oSpRPhP)0a8oI z^9^tkM&q1Fk6nxyYt_#Q(}Ww~pJ{E$88Myii zMrPl>gSB_>UhhL0sYm&O93em@Bp+xFaZnT9MPmv@06o9P z4GEz0a9cvhA+tjG(Y^-C-U|ei2Z*;QPrz|*Vj(#i+yK#E_KhH~r9T*#Q~JH~DzcW= zRpK73V#wi?XCrV*LJZ(UF+7ql2m_oDQQX+?Sxr)8^#_+M-qXg9-k0w|wk=vxC0E3w z*(3C!?RF39hEO*$8cA-(!&MDBQU?N0fsrf(N|~dF7KLCRdr+xHE=-hW*yk2Wk<9{BzBsESFR?Y#~>0o0fO0+C~B~7dR0N2b$U(Q?GdR=PBGn<5~d1&KF z4rQpCsflxS>d2wG@4ipch+KEwb#?XCS1Wn7FyETcBp;ObGuj@M#V&F*i~0@#SW$VE zX!U{V1Oa%gXKQM9x+YP6$_FR%7zYmW2gny92eP5%p#*g>JuP6p^UgbKd1<8% zTzYx!xa43}Oh?Vz$>aqL^V(wpBInw)Q60DFk*KI7xD} zyWCp9o8H^hGm3H#;i-~f%Jc1>(;yQ}iI@ShrT@+OGF+3Gnj4H*)V=1k2P9yUU$vsa zmL5J+GDEvzC^f+rq9n7kMS#KaEw62y`@Qznwe{FP&y7xwdom%t@2kwZz(`iiy|L ziV7S@rBRI|gC;2pnHeddpKLf9M{SQL=ZygB?q}4f z%Tt9TlHv>pHj0Mgk;<&u+4eqm0;;ic?HLYwaHw85C)XZ+lnXA3F*K;bjHb0tPfgV6 z#ZNHkKg_YY9IGsdRgt*y}#Dh zCTn6GRDcdY^sIw?sjak*UOX?&|52Em?@P`CRZk3^6-+CMr7M!t=7Xf{ed6P^BWrP_ z_p;Ls+*JK{Zr>`-&Q&!K*o!~SMj0kvl<*P<7UE2aHlQnh$JTB=*&92f0FWcTx>Fe`=p`T%IUD!^VLgio*DoX*P%D z<>s0*u>x-oo-{Xs0eg^qOMeMWrI7jr4KqA=FV$%YTfxO9@-RPZH(cMtWQ&l5RXjAr z2I+RlLoa~NuyAv= zrOeH6qLKUR0#aYuo& z*?;iz+OcaNyO^sb8$NTQCMMOxQ=sM0#3i1D1b9lZ#)D=MEQmEn$fno;$Ury0wnkjU zc&2&q+Vx$FOQPJ?J$$E=B;9^mQldE7e7Zt7QW*^W5*jM(YP?(1*@l~pGht1s!#;*4 zj06O7%A|{G;Z_EpOK(MDb~%Cr9yhKVwzv-#DuYrxpAJ6?i{nw?JCcagXKLNWv#FBI z2GbrImnerNg&6??_pQ}4MYOXdvA?}3Jl7RxXXZ9+s4bhfaYHYzEY`}>Vx3!Au@TS- z5=V+>J88YCq(xTe!XhsA;nS@tbG7cD@P}bhxGO~E&a0KiH z@^>yspd%s!pahq_PahBMaHFdeW~$N(2**nf$fh6zZ;RkhYz2&V%F<;>291?)#s<75 zoegu`p^f67Bga5s{nRJPtY3TGwRPo{R}xr32PC|26_%liOgGR=ZKGLK1-5(lp4z{E z-(wA|;aEp?tO}I|9IN$V(Wu2a6csRAx88bd-G1Bcqzv{Re0=S=c#lfy2(DA=A%Kdj zSo?UGc$n6oNd?foLA3u<%w`L1xX=i7KnV z#oaQ*v1jbhOfwW_a3k$97nKBz0?r(6Gq|nrTsOod0F8uBdHB{Uc@FY|6+AVrF9)IV zaX737dWJ+=FV`BhaK3r+NlZBmmYeU8*B)3jf&6Bc!^+Ra!3S90_OXxD2S4zEy7s!i zSI>CXv&hi{JXyABuXFRZt#$n9@%n?`|1b65{_9`Vu05C3|M9Ias3$y8!tNfjdwtWA zGP1Xn8HbDXR9f|;m6tA%^~T_jWuO@Pdl~@@{@r(evi|z7|0^qPp7zyW&9;~e@SazT z<&D28= zKU{zHSASWD4;`+l=^62kU_qYLUV~Mmc{vHIq@+$xXP_It3HSd)VrW zc7g#;OG&jL^+}F-66c<4pfS)|2nOP@9;?sXdp8qz*I$3Vf%UBF|H+$nC4(YsnZG2k z+W700)mmL%tKItmtngR|xY2KUXZumM>I@3<+p1#rS6nPk~Eg`+B{LYO7MlRb9{VW?JnaN@(X zP{8AKAEJlcHi}6DQHd?HufJpSq9iuWJGwUnQ0^V+QwarH!#ydTrB0@7v=Xfe>%NnI}$@Xpap+ETjdhKg}yuRw6eNFwuYu`|(PoJrU<>i`Sl4^~f+UZlL z>g{j)x%%&a^OtqWu3dHQ^L!+=R1*|bjx zk0cqzvFXq%F{xev0L86ax77#V|Gs+Dn|`V`ZroTu^um|aS3T{k>&(e{dX3YwQ+3IX z9rf?u@cMfH``=UF|NTEwH+G_Z!Y?|9ppSa_; zdh5@qCP{u4i7`dupsC4WStf z9@A)ov09eU`TVsUjf1DYMZ^6w6g05v%%Q^m)bYc0->2@Sak=)o>*~rYpInRNSYf2q z7El{ay z=hh}`-@(gj$Ijg~J~2yhoq`-dDSbbG2OSO}Ta@eH0wC}#80IF!>|Gp8;m@5zRz}ov zAA4EqD4z$7N+3&-S|--n>F`yg8#INC+@n#6aw2x`u`V)0R(Y_Z?@S112~);Brz>Ks z+!CdLkH&^=_c!#gZF0F~6_*nzsQ2_l0kl=5CypvBG&~{b2wZttX#i6xN|!E@ykjF5Ch6BtA^TCk`o zl;Bg{eSDn;AlXaqu%A+7+Mg9QN7=S@OMU1MK2UFY^Uu_S466uSH9av|D=YK$xzF57k7{Oiy3U+FQ!~@(%C=g+@~gjIw|?}tdf82{s%Jm%`StL_ zN92dI8N4I+goMp|8#q$dAd_}T5{wc!fxI0+MLi8rjaTL|Thw5AUUMeh7>DoU`bYKB zClsXYP7S=^Rf<#_8uO@!bO}SsAUsz<+5HQ6pDt}B{ov6(V{0{k;z)h&v!CL}UwzHh zbrpbhaiPvGoMGeYG+#m4t(Hya2G0VH6815gWM@h%1_^%Al2>QXqPx|U8(q8ookR2t z?;1SX)_4QnD8j3c-U^TPjyktCQ3o%(qPFk2q{i5b6+KzidN14*frVLoFQ&mx{TTZo z9;!LW#hJg%)3^5$fR{$ODXx16Ke%9Zpg-T^=1cGkS6R_bj%L!dgz~4Bw5U&=Llq|& zlob$vl{RVdx)P)g5*B>FYmiW;;zzP1okFn`^`D481vQ!uit+b>hU)HsVEVVLD;0YQu)v+Pq~8 zyC}gk*f29&@A^-_QLlaVkJmr{`e)RSz4~=^{KRQ)SWp2wFS@8cd*5g36)$^H&25;e zpL^Rc(7-;>aA~nV}0<0 z@2wyFkr&l-p8rjC^zd=bq5^%@d;wKjMZe5;eDMb9u_c=$n+#5PZgzvBAam)PH_ow= z=vA-0ss89gAF3C<_?7kS=RB_-I((RW3dV)c(8x$|a%7Xet1w+>36UHwuhCoK%l-TV ztnC;yuDt7+heZrY9Fyy9QZ1MHXG{6{Frj59fa(D13*K-1WUw!8rok*W|=ejx|Y ze_L1mhve1SQ^)J`pShQl1g^dIn!5U`t7>6URDc|gVbaRFaNjGi3q1YeBKone)avp| z?cIOC$*ael3PAGetV>$eS`CYqaxqP5g0)IwQ!UY+xbDC2zS_Kb zQ+@5zzozc`_^ox*O)sgh`s#mPKmO{Usbj~F*TV7=$MfvneR2KXyMMQS{w;5+8=iY( zz3?S3t@|H*gfoZ0GqOdT;vUNMfZ_Mw_gOZhzGTmynw&v3mJ^kU3JqpWAu*(OxSlQK z(B4FQK2R4ERhR7CUhn#?|5U&EAOAz$c*Aq+Q=hu8?zr==dey66S65u|q&jipcC%6ZpT z+3IiO?1q}19$7I*5M<^1gu;iy&nb=p9!OdXAB*xxcG4P z`0r4S;-hKROmkugROvaO(q&5iTJ)HvGVZ$OXie=Qqf7u;s+uVYFG(`hLeim+V-Z&s za-g9cr%sgwJayK3z$$KB$^%6-q8-L)Am>jWqW6!slGk4Ml)8$^t0e&|OYYtDyHNpp z4vHuMtSAuh%&XO^-Fx@d{{4@cjL>$bp$&=q)Hj^ZMR+!Is|lbE1~KA8?v@gEL-Gast($eu16%Y+xw#_8rK z<78~z2kRaq!;q&v$HM?;`efdB9C-v>$ z@tyVLE3Y9)s56vWyGgsPWXX|79;yHM&R?sWKm0c}HLg)HCr+HIv9am;+GpHQFZfsg zsK(uMmb&xykJR+E)EyV^+Etr3Zmc_Qzq7vnna`=4e(Y6s z?D$D0ur_X-t4(ur_2$>Vu72mY-d*4L%{SJIUwTuWoL{7l5Ci6vXw(qIjhiWpkE6xLlsBT!S4TwBuXX^Do{hIpoKl$T&NdwlS0wwf9 z7H+!I&V?4nP@9k>2yEyrS8BK_9yHF0z&IB?N*4?x8@&i^C|jnu?`w}sPxq|kFdS2e zyLE+R>-#{i#9n?AS^9j~;o%t{DQIvg-&S~x(bCz|hwD@Kexg>Fm+SiLQ6O+lA;Jc* zrtDt)u)tU;8Lfk6W}&Oq5*>);Wi`6qf8a4rUSVzw3Iy<9=~&mvtq{h5(`&WX)^d7- z;lSX1H{bj}>f;~(I9l@7{>z_O+jj0I$Ajj|Z2Id&O`?6uI5;{(n@letdx z1e`3ez4qpd=60NAmy$6J>!Eucyd7En-UK_q0wE%r3S%N9iW?gFPOthLn-_!oVzX{E zK3-iZ3}A#Op^c-^C!~98z+ov-OR`9T=)}{YCf+=7fEE7*zc)KQU55@mRBw6n8|t3B zZ?9)Q>zVbHU-9Jx+Xo+bu>R(+|GNJ4&;P0(|HLcnMK66tJ?W~e=yf(DM&}LeX4RQf zr|Pf%@{ify^7`wqsksds>%j*esQ0|*ef4L5@i+CX=RL1};z47%w zS-0Qu(fa0Zd~SXH*L^)31>bhtZS@C#@Q3y3zkRU2>0f?xz2xPusN*M2vd`tt9T(Ln z@4TyC|I@FoTR-;ky7nngt{1=TC+eDOuj5R$970W`U8+r+H`UteQvKWS`p$af;fLx? zKlcmulxx4Njvha*#2SE=A%9O24YSp)Xu_DGXaWt7Q4nyBdTdx=jWA*cId2_w@z3;B?`+*;+8=eo3^|X83 zcF9~zf*Qn0{g{(hVy#!r#p{A$=6+fmtCi)&nw^=djdQd0(?9u|`qMxDP`%`3udL@h z_xbhEk)zxfY-UY|LBtXxCMOZ8cQp#7o0z^n@;#$(l1W^boR0*X=}wk&Axci?0o}E1 z#?mmyGzfLM+~bP1MAcZ=9T4LbSf4%f!&3P4J>LMHFO>oafY`LNNWU6qlvLI9;HCMK z_1VwdQ;Q4pb=`H>)-~5$V;!rKSDeh;_*Eq`SuE(r-kKnQCM?S=h}yURz!!^SML*Ud zu=1F&XeSoByR^KA?csqakY%QW=4%W(9Q~|d)Uh@_b_E;Sdxyyj_WmY@)?}?;q z=a%a3yKb+^*~$9KulUDRtK;NUH_gq|>heOp*-(nHTCjWy}CBcZL0aj z1$pi9;9M3kJvCXAQ)8THu)Mm;(EiNnLk79g!ds}G*O^=`QZxV*(C&L#3Nt@^|W)xc2W~R`^MMRjW^y{ zKmGcjsSp1C`|75fUS0<-y`o<8+Sk`LPkD0v(Jq&w7HsOtcIBSlcZ!c-f%!fm(bp{hACPv0atI>Vp4+Hc^VxgFx@_~8>u)WmTJZG z;{gjz=I3F6RkWs`aV8t+x=1CRmr${a%5C99sQ{tNyGZlpHi_t(0Mh6NJ3#Qsmd+fn z&wu_tDgnT;UUk)#bOfaeQ0Bk)-SxVu_cf=FP;LcaWr4tI?b)->9&2|Jz2N8l=L?ow z4XJ?jy#hG%-hZ-@62@k->&-XcTz7zDot~+K2cJ+|wq0CflPYOV*`-@eC`plL)8s;f z7#h+cTg@iJiFc44)OZ4K!6Y3zEU0k5WoSvN($IQ&_ zm=bPd7}2pt4;9U77S1fx*~P`WX!{Oo;pR5XF)M!J)M@EGQ*S;HJ*C8!*FeIqdkeA^ zy`qZ+39gJmlrTBAMwt*=GoFH&d`UwNk!09?$@V&a?2-C+Klnp+&pr3lPrUYx^|Ysd zT|IL6D32vG>}*OrUK?gN)TT`v>{Pq(VPd@Y?Z3D_@O$sA@BTO6T~B-3)9T;9^%pt+ z><7O0yXwCC{!%oM^QHLX&mgF%ni_j0>b;+)s_1<^CtKR&E z*VeP1b3@(q${%CXkvF~Jr|Nfp=RNg3-}C+TqL;q7e(KdfUhn?h->M&a;g8nyzUf=) z2;@&L4jF#G=44@AJ#Q`2S&}aSpJo;ujw%_8$ZTe2sy1z$tv9{yC+kBW`ar$t#jmJm zJoou^m>#Q>SD937NVy446%}-6Ual@P6mDij5C*vV97^Ykz3iUFdP93pjyX8ir86g3d4+KPDc4?8 z*IW&bHNfimTW&ZLH9{f^fGL1=abbz0agek{p8!z-|C@oefuozSXf(@W&Ca3$%P19q z*HS0OqVhe;}&!6C-o}3z2c(!>< zZP~i5W@aD{o2calOoYU2CCz5RJpgFYVCLlU<8|!#u{v{VzP4|_s16>yj2r)v!^fpn zG*_i5o8F-|0yIY58Efs}hFn+U4=v?M0sx)?Gtq3;a*p25B^U3gU;U+DtY3KRTkG4t z{X6RiUijiVcH(3$Ew9!%>+-8+re^EDPv2Mf+;GwYSF zdTkv$exkN+-dZ2~=q>f?SG}~J`qZx^sJ`J1Z>V>@>v!u%UVKyCaKkr|4$y%I{R1js zOV!G9{owcgn|koU2kK{k?(OxYtFGkdG0JgRGqjV6lKV6DN$lBaYce^2uEuNk?p^hs zcl{25^m#WtuYTZ%ey}EIrdfCXl9&7_OLBkZmw&b1_rCYmJAdQX>PKGql6ubbzlDl{ z)c!}Mpwxv9z6M1m%>#_gI6W(Sy}JNwT#mbnGVVFKv7pEXi-3ujK$r|-RsICLG7 zS68X>YT@hx4JCSt$Rm#;AjvDptz^hCK>$%E{95_%ha@DVO{Vwvote+Q*51!KLI3%F-;Lwt5;AW&=Q+=_ z%i3$N-G_B+H{#vzc^7WK>t3u~^D0jL?8#_pX~m68?m$glJ$ickVY<7MCymE1e*WKB zbn!wQe$Ax&r&X`E5A&{7XnE z?;jc>rO1j9w)Q2XBlz-{zJN`eHevD2w`1>pW}}maRYfDZ5vS6r1I}gd$aGM|Mgx}s zbQe}Jj&Ml{CQY1xhko(^uD#}ReCWd;!I#cD8$Dg!XlSU#_rH5TzH!f8`0QsthnlJy z+;G-Wq9@{$&-pGV#lxgIGvrsIvp?5y>DSn?dvv|?SJAv##S67yywx$}_ zTy+(G`|vODm9Jii_a6NrvI1-m8rC1#JaJpmic`acYfU+)Iwy;n3qO-`SsuH0yPJYw zhn#fH-u|4p`7u#7)9O&xze5jTo*<<7fev385}#ERVktha|IUiyaY2FEI>pZ60`Xq$ zD@RdTUW(ztZoK;9bNrV1`x-02^jHVk7Az=0t*S93RF1}KL%JqLtV0F`j8Hz%rUy*l z8HV*=N30qqXa${E$f&Lb?MfG%^ExISR$0N8*1!MtZ!B(@oKwmFY4!a%^_!UX8&{bKD@soC8JLkI(JODHI*$3OUwKKZi zWtVAa7}rXSaCpcBM?8k0VYSpT#t27iU>H>2aNfI5aTZ@E&Bam}5RicxjA0uwF*1V5 zyG+CrkNpkjoqalX+kJO@?WU!utgJ(~6|u<3D8eaa9(yQ^d zcfOMj+z!5B_Vx9)*G6&L=Rb?hTQ=jyn{UHjdm06*mjcL9uoUs%_fFvDKE+pu&pXy) zKd>4vcEp4UxdNNP9FwJTI;?!?PiIPK^p~a^5U;hGMJ^v!S?}HygTU!UA3l*do= z4mm)M5ce~c(r)fbXQHt1D!mAOXErgI3Awj2t8yPHSJvQ@T8DGRV((B$Q!a!_d2p09 zR3)P;YhtjQY>rg)GWfyP(bTPq{oQ!=mFHL_wc=HXunY|Jc^yd9HZGT6E2)+a!Pw_o z+qD^1+k2CCnS$xlrtMrPz@`^&-)?j(YY+&!mD_xOkRtMC#M|&Zr1NkzOAQ`d@fZzj zc~v#0PMv|K<_RdPvZ=4qcU8an|Y7#Qe9VQ2uA)#WTcwT_>NwoRMy^M@Y9AAkQ_tY7~MiiH7I+$~kBud5+$SQsf_ zXsF2E^1|>4BMPzuO3R5GzU$ow;i&h$pA8b7o!ywU%QQ5#w4%RnfYnE3O;O6osWEYr znQ(JPx8i|t6(QH%Qh#?!DP^jqkzk5oBbYdTB37?@8t0yM8g|)r3U0XhHdIwN6Rt2Q zzzp)PyG+J+?)?Vty88}BlAk~I3)r%C3!~nN6DHv1#b3kix896Tefl%_;u&XR+qO2G zdHQMO%-*o%7QE-c1M%91*EwBcw`o)H{cqimE3dc|3ywGn7cIP;BIm#O*+W>e_&U7% zJqO{x&OHwUgM(;pY9iI?j@xdM{w#FK7-d^--H{N z-iCelnS+jwE=KRvEoDxu>NxjDIMRe?`kX5lc}@nvDSIugt@znb9>C%ouf>Nx^kIDI z%(Jn*-RNOMm^8T+%l`Nja-1D;MDXA3g?~x3tmWR8$Jn zCjv!QMA%t{y`ga{qv~DF{DaH)(TD| zO8BS5VpU~*!%8GfqoT5shik?1<>aweRo7wav^`MY+=|jNGt}07Wf6!Br&1g(e_DO4XHC(*4xfw4# zw;C5-_*K-_HIO~9*FG~bJTQc1fB7SpEWQS$37kG*-A@4Nf!Si1BM9D2xs zIRD~HIUlIAs{_j){R{5D_v?82>DBne$Nv)-FT8@M`|7I~;r9>!3TK>o4&HzC2eEl; z8$Wa1+E;PzIcJetb>%fT(xG*B_mHwyS6hpk3Xm1BVe{*_>6SaN*PgS{-qA$|Y^q`k z0=;15k(1ZI73+9SN3)Xxr?beXNDYMvEv@*`559{VzjiH-`H%m=Ip>~_w(Xth?;AvY zLk+6Sfje)%8F$_F4NREOjC0Sw6o(!8enKC{i)Mp`13OA@-N<`!GF_WT&N9SO?U#0e zvjWJi9YIZ16>6%=aK)mF@ta@$5*J={DL#12e{#Ld5V57zX+}X+5=S%d$5%MdBhT6QWSrTYBTAgl<#xEr&$U;w5)(jG ztEf=vK0>52h9mMNKC0dEYpa74270mXm6zBiJb(T?%$sMjfkRC1ZGEgGi;;JlBB164 z+Aq^$wV79JCNNqSFlEYQPHO#MH?02>3h1|p<{!ic>?*)vZ*#%0mDVJt$(WLQQQQ zmM?ph5o={tHKy&p4;ou0uvx&0VKjW!9_Z;(0{R`mj+B6ghdtOCI4u zP1*OJf|*2yw$ycGcmQ3U9i*?=L7q5e7rgYsbGZJRtMSB&zhGSRI2?4yLHNiq$KV|Y z9Dt^l@yx1*2MbihH;lN#d+K|8yYTc=PvXI!{sh1K?e8$q-;bKQT6)bHd(OhAKl54a zy6ZFy4q2)(6(ggi=pP)~0aubC@JNIUnwzK@xUt(-;cGIW7Nv&BvcULJrukDQPr|)- z--+w4y&j+a>lUwIJ|CQiT^ zUp^aeefvAn+1-l@3JbU6wp*9rmp}h4rte{R)b42C-iH3ZZsOCMH*dlL2Ofs6Enb3` zUwRqmo^vMG{hI3+W73pq*tWF|^$iV7xvyNb5WoG+uW|a9&&G%U<5+a}^pg`?UuTB3 zl!nzJ*2QL6_u2>BJG!}7tYJjKj4;2z+JhIV9TEg5&og~K*63(~zin!4z@Pr`Fz&za z9vpPgq4>{FoFql0q7?NT8)~s}-7C2LwwthZ+ZLSixzq8kcOQb@z5%j4IQ&vOU;jT5 zF+DO09nl;P8qpb5hQp{CpRzd08b(!B8E(I2G5+-X-{K3We;Eso_y9V(yZKU!(g_wJhpr}R<3-Su)wa<_eO&mR^zc6@z^IsT9g+vrT9og7SNrln8!LUF>YEFofsLR zFxMWaW>lph*rQt9`io0r^(zpq$^*)wP2)1Ns7A3gTt zsBdawq||4TNFl)|SoN~(N zP+#AO>iTAkYn_OJp#mEZ6jA$3r^INmE$!W8Y=I33!wXpgk%cdom1Br{rYzO)@K|4d z*FX577o2k@UU}ttTz=)%IN-p;RblqA{{@617;ujC$we@RJU0Z|w z-||)*b>s&yb+*+6M=^@ZbYK#EKQm+2vyNl%tM13bSX=!>@k*D>RO4 z!G}J03|6mx1`q${SJ-X0894axBN?>}4_d@nhQ|6DtX};T{`jZgVfWql!n@vc2ue)% zw6_;cP4%cME5)f__$)ST+=%OMSc+M5=CGaAUX$@6P2@wJUr86#N7is9ybU-&6^?2l z-lkO8SRhv9u;QY%)l!_>lN;MB4K-Eh?d_!MR&8SomA5z|hc$t$tBw_C+ls#bSYZzy zZKTdos1$IPC3z-v?%ZUn4fl1nqr0;Mt&=CCrnXr^^2BsiI3@$fGq6BFqAO34L#75L zxWJhb9#n@gIE`0K?{&t6--50!37hNBDd2JAoM5apvr2jv)O~#;jVsQuL?$zqPZY=e z!+n174xC#}74{-z61Z2SUQ=bASDje%;<^?tPwJ43*N z5T7({#Y48X7HopR6zsk;3~N4O4OV~^Y^<2(&z=Fgu?_`&eo#^y#8h6l0a`s?uR`|rh(M;wN8 zFT51xRW<1C>0_kDqJ!C(7_f&iG}an+T!O;r5Gu;6$>1=jz=BcgRhOr)t|~)QLp=&3 z!zc_5(J+}4wG_;_xu%6X&_6^?SyQyK_Y4dUkb_FCf}%Z7psKnYHMP|!6x1DK3=-@4 zZfR|%(fic#pTx$E8*$66_h9aR^U&7b$*B~U5eyCuOKdt-<(=;2QNJA~0Y=$?$`It? zXc*_YS`n4nob1G5u1sMcMx`7XRK_NVLeU)I2%WkHYUVT`Tu(Q&O~a{&(vwhvsBVY; zsSK>x9(*VNY`O{-`P*8mKBY*MnTb1#z<8sl-#D07nu+Cyf*;50PdfL{~u#UrGE@O-S1f($`7KEoju zofNa}$VM>3Iy}&gm!5l;80)_Ct@COwAxvYxupxvPYgW7x+9Bg=&r@_OX$4p|C%V-% zWg-9D<#AOnW$bUPktj(0c3!sJs6OQ)(TN=TkJYDGby1Q`tndf4kx%-mhX2m6=xHUC3dg032lA?kw zx#n2UY;3Y?EpSnNxF9Rd5^J~nHL`gsD3T|v_Mgym)pZK8QZq@W8!KKb<4Jes`8iEq zEqACVFjjj#byOokcdRu0HVq$PtQ|rH*U8AL@r>53Bgzd11D~9MlJg9uC|#$$GznjG z;Gha#(pPm1*tLxVR#BLfS{?kH>vICDRh>hEEQ$-V@j=46v-?%t{ij31l3hFSh0KsCkRwk*JA4Q zJp6~Vj#|>}5xl@?5)AcYa%PKHB zI)I+;c19dbnLFEY!FgZBi!ZLm#TQ?KGrs&~Y-{U8PoMRKJ3QlfkkUk&P$=o6q zG4P;jG{~e$t@y(qeurzXxe^;UyvA#I>s#N6<4-;XWtBFXqy<&AjXd0`h!w?cj)!r< zw_vgGTEe)F5z=`6*_F8O8+T&Wvn$EksH&_&e}5loPVafo0rHW5F_m6 zRyM&X*jf!E6$@=$EBsm2IfYzN@z!P(ey;0K(b5_uJQ^WHqV`>hzDCS6hEX%v)P(R& z?S)T^7;LN5*4N=Tzx*Zf&c2>5R2l|e7^JAQ?MG`EFvm`_SyG0hKky+Od%_7!%gr!K z1Hp?~jNIg?0{<6u5E*WWm21D{2RG_9R>gK~F^Q~LtfzTQ(%y9gK>wlfiIGvo2=j!I zN1@FVIxZ6(jk9U&ECqz7o)eEe-3Tgd<(U!#L8&(312fM4-(gt8Ze;L?7x<#kXCLR! zA<>UK&$GB$WD7mhT+--u6*p=@;CC2HX|`Hdbuc^>VU(@FLH5wu1TpAqh0$Pad+v zbSJCWGP&Zh6ta?W9qaSOogrZQ*O)v3YfTG^ezn1MHB%?LP3Y_Viq)L+Mzs9 zwy9}iIjJ>+06d;o_1KDO<>lz_>%?GxFMIkYP8yG&KJX(fx#>o{``z!t?YG~7>bfQ} zA*?zr5od?#d5JM8RFhVz5$k;i{4N?B9oUMha<(WMrO4#z%t$o1j>m~7ej4-keG97U z8c|!@L|Ht3vZspj%@vj|A6OTd=8_%mU>{==>lhRxJqcZ@2Oj=BGWdoE(*jd_ z1+^e@!|pul;ChwX45(_Xd*wx}T=_Q)4)!L|or;QbR?Mj-;0*z`$7aua6Xxu@KaHTc zjou&cDRZB1#U+yu!ugcHS9^Ul#TcV3VTu~+ zqAG&%zPtrkO(^ls9DU85NN_>9f1|a<@U4gOTUaWrRDY5|efAfBrXH!}^{(6wIg|>g9(3{S(kh@GaaHv4~ zq+zXQSa;tU4FY=bdLV)Vwx-UjsN&Ox&>)CDq6^OG7}{k9Dz!yyImjg%h543 zH#g#?7oNp+S6_vdPd&xd|A_a#AMbtN2hlWc0td=ji>U%pF#_b59G%MbdK>*kNqo$r z*WCN6@(MK9*Q27Yl9-@97b}c)w0DpeRAG=ypj|vza(+CBI}~8jiTB-~VRmWkh8xm! zuxNz*K+~uxhFA1x7bDX<7JZm}saqpngHmx@v%11KkgAC4)a&wRI$BKBy$a6B<0xlm5BR~Wr17i^?IvXEl`Me)U)0dr^Q zVR60%Gnjs1{3)a2tPTqY%vi8W9tPFr4Wkfc|CaWvBGtG*caiRtGtm;M>-!!G1Lak& z#IJP?)-2wN#sJ;N2%Ta~AdnGOvjEX{-#m(>xg3t^dJ5nT91?8zEf*e0*Pl{*Z#|0z zPWY|XLznFu$bRR1uj3_kwG}7~_2PxqPh+6Jm$brt_uZETRm1dYSdI7}!Hd@_7y-Ls zwStxX!=ZvBqnJEt5~fd|zH=j1@mMwUN}X52Lbu|o)SG|rFZ#t59wja23W z7`7z5)o4%E|CpV0`>nU)M?d&JHBI00w*P};KYko0?XoKczl&p%B}~&qtt~_RBhQuY(+~;!cVzfZQtp=)_SgesJV57Dgpue{h>({(Mxyk+Zwa%-#+4$=n)U7--bWU@MSg8?EAisIIIEG1+ zCSkXoVOV+5DPkSM)~%-UUdS0%PgFfp4OuREzbqQDm9>g^Wo;dv{QKj0@`)!%Y1wVh zS*WXTL20O4DYg}cl*U`^U`-MeA)>9kz(s5}N%N_A6r^xLg7Ta-hTDw{pkw=1RMu3I zulCH-tFUO{1$fUtc&dwUT#UiNB6|9ID5zreiwLeFhfYbBdrWD9MhxT!mpe%jm%ZMo zLx1_xpRi={V!Zg`bC@${9!@^xGng`EH`F(o%2y5L%a}5H^v7-$et;rEcV%ja4Bn=% zKMzTXFwfvB(pd32yt%;tJ4^H&!{E!jsF26I9M!P4(xCK6axRO80@F*o+!0(EtvK!a zMnOc*wam>p;&t+Kg~_pk>yZf!pbrm}4Hva4rQk;LwsGN(K_>h+YDHc@%lj!B4mx0; zKNcglOUuyPW5ON%sBfsH_zuOWJx#V}Yz``_{!w7z-ixACczUOMIdYWFlAtX8$Pq>A zufOA+8}{lEozduwiC{E3bC5PEK$g`ri5x$hBW*m-xA#SwAEq@b^x+gOQ<0C1)pk5< z)Zik6_Cl>+N80vzD9R~g%xG0vrW(9d$FluCL-a18@) zhXHW3G}#c)+D%kh@YHe#zj~ z*45zk4X@#b>#oJ`|M+{%oHY}l|NN<#Jb5}A#!Ww(_mX@66fOpa*e$o-y$NWrrIlkmztyD--UzA(PM;*>W7gn zACwL@zeg5d#QU)l{QT$tL-7-v*Y)9JKEg`z@QBUFlEAb&twegyGBf>|PQa^v9$F+t zrWg?&MmP+G;EPfXa&%giO~JMGv55rYgB#Dl4y{eW93JRHXHPpC z>#8tq*XelZzyBL|-*X2}J@r(4@r$QoTYD#URYMyxT1T^Um=$`ml+_QgU1D*V8?(GZ z5{qUiE2}Hf+0n)V*+UOLNRRsYFMbJ=CrzQ?cX?$sX&%N+(i!!XJ;4p~^n5P1NjMGE zDz={XMVn!Y^^}}Ons0N#6qqO}7pu{XxN{ZFF#9k^rmxxn{GKqFiI16Zbc-Cz@t^tvH~*{yFKcDGK9h5_4}aMO0F=f0-L^D8A@bIp00cLBp>5p zr4!Tbz0u-m&&qoAYs$-U%hH?hjeEa^JR61#|VaOx; zTr@h0QAYd$4Jg|T5L%Q$iy}jUF*1&X(T{o|JYA{hhPHS%!iVr)35I&xvHsPUq{q6S zH3-bX(4dWGF&?lWJw?^Q1$QS%2FxgRjEzsu27zJ`Hl=m?^xgjVG1k0c%|uvif`D~i z{VT&7dWZi^s5OdKWmOecxCl#4eFKYE^-V1(DXpNG36p6GFUzo&I}cADF()QL+{e=? z7Prg@%hNJy3d~PiG#yX_zYQX&t}MsUP%k>$t);RK(|4VQU;g6fxaXd)b1cWFKmBQn zFKbrL2p^p4W3KX<@jPXZ432LS z9f{Av85x2lVj#8X7L3Xm+4zJ~`(v@c001BWNkl%&QjLs;^$u0PDqilCQgj8IBABps=OQx zHMO|omYebI?|c&>EJOX}-wag$3hnCcf$nLz6!CtI+={ctU`?2$CE{2^I5FA!Ttf?rIWCRV@ zrVi_{idWXbXcGiXk5!oZ|03OLN5d*T);z`<3ncPwF%9R+Xj(Lhd_bnSZ&B-CQ^eYc zX?yO4y1H>b`q~%)K7rCZfta<09)KSLPmG1h@PP{B;kD)p5Oxjp#cp^FkHlCRsZ%B- zTpS)i`?js9t*gegU3bMF|L_OgamP}eaMDRQ{j}3KGrq5{pDDMc2|+xt0M$S$zf_CW zNqg|ATImPgH=HBIBGhNkkZWML?QKhM!uP-TUA*CwhFPk=+URQwnZTAhBxxA~?CS z3~W7Sv|`w%MX8Qg@?44hnvt*VTD|ds@3zA~;!w54%Q*v|9F$VmbdWvci~ShzJqh#t zza2L{4TMKs(rX1u{h->K3aicS57?nczpT4zCwA$VKZbd zYnfrY!oJ02RWKmxpQ5x>OiI%q+`0$PHWgWAuyoJ5pF(krIuDat#^KxFya!8ex&cSN z|7cur;ic#s9At`XonR562QS%n=%uo} z1Y^Ykyz;^e=x%1|7q|#u&gpLGZWzvCeG+YcvOcUy{QZrx}lP6Eb?z`{q zfyhoYtXsF5VKpeAMkH^?RANKrJFlXEr41*;YFyU8{!I-6HFeFHGIa(Tnp+41lyK&i z=|@KT?~_FN>|*T17_5LS@9&1wtI!r3s7hEWT-4$}-w3wRIQ`QS;G*;{%S#GqYum=n zJ9WwwiZ@(;-L*L2fcIeG!plf6GYtVU0&E_RGXaDnWkgb@;bkF3rh`FaZV%iIt6)~^ z4ynMlt($Sv4L9JShaSX7K5`6BKIL;Lj+UUhx`~FBHY8V6iRJ)RY893Eil_(_qq{xI zq+#V~YhkAL>LQ7@J|l_gpp2U?Rk))4jF?DyZsakeuIQ;q5u$fhnK91Uq)yc5lc`r`*^a(iYzrKQ=-aZ*ti&Uc!m~;rT z&ZRsz(wxcIm8S&ch-S|)n!=Ycj&W0wKAuq+a<|h2$JKyA}@FR|TAI`t% zGQvdzL&FpU*Rah1ZUSSD56hsm*jIecK4C)Zs0coiJD;AN1U^)z9I&tFOdMFTH>- ze(?+(eCPrU7J=HjMnVCEjck({wT3ab1U{6~+V6e4F|^UW2j?{mg*9ntm3$X_+O2g` zWFah2k!_^Ti5uxDENz{qk21z~g0ghieTZYWfqP~B=%OTrVfCj*N1&KqK2v;D!4BS~ zMPu)wKF3?D*cB0y($nCP+8zsqsEC|H{V1?G;gGCm8`++iu6pvx8MT8oJVLQ#n~r+t ztvBNv_uP-;Py8eet6{8zg<)w0czbCS82L03b0bcA*51kI#e4Dl@x`XY^3mOqf(OIJ z7Q+fCb_QBn$KeO}--nxTx}Jvhf`yCFKRArRfg;K(y!|^MiKIEK=fdF;aR9`5vy1M@>YtPjDVXHk4}|holW7g)%fdQSKwJQtabI6GHp-P zHI2_rX%&yvq9{fcIobueeJoUX+n*a#Tc*^19??yBI-Ot{4q{^3aQ3h2@=EmfcA&q% z2aQb)m@vKtKmPvr@TWih0cW0dCXPJnz3A@hM{i#*J(xiV>LoYgy>Ejuqn`Ll@$`$h zTU0WAvVi)$`Q8@p?%g{eqz`&r* zVpE;Nih+6-V)rSl;_T>bz@VRj2zJQ4ac-$FbLSoBx~r%a>y$nQ5xFJ_u4 z$?REksK;uUsdZn;J~_?Lbprw}BHhZ0TLlx>k-&~k8=g36GIra2w*>Q~LU`ssGhg!m z($cB}n(w>{5f+=aY0LoT0@?U$8diH#Jh99>nBtM?xc-&JtCgs!Yrxc9_dvZ#u#s+M zpJyU0iaetoj|SG00zPOxfj5L{j!}_RoKKehzCE3FHVh3wRe2>wM+VW=(MDyfNfRex z?W-?SCI8KDc{9#E_dE(-Z*S|w;9$Q`4fXpo7{WJj9OeW!QK!%hp>z2-9z!&yEw69E zx4->O{NiU1;+SJTivK+JI1CJrpr*C~W#!c*gIkqW2F__^)D>~sR2Zf=bho(Yz*wZJ z)JCvCB7`zrgMjc~Y<;smK1Ml*zcTZ121aBZtQij^l)$W(J8{ zWDbeBM0(CA%eAp160MnL1QXJixU&H-L^Fh79(`8G(vqKzP1Lp-nqG?s+VbGlvJqTqvD%yLvwnuq;l z0o@fFXY}vGqhSl^X=FXXe z`Sa&fCxB3ZbzOz?N~{164C!D43K;U)SHqYzc^Ax>F=J;NRx4g@r}!|(KZgj*4iT$Y z#T}eW#>Oz#s!B@GS@G(rl`BzO+lVRC_CRBkc&ruyGYTedNzpx;{%gi(^If^$y^%Wy|r6yKm?ClC#e`2jj<2 z#_(7Qu7MvoJ`3VP`ly>vwJ`|Dt@UAhM);|r`GsmO!E(5xvdL190 zRsR)`xJnZZf>XT$CyOAFFp!FA7HR4(eCmCI8|-gmEVoDBo)RjK_8*S&QgrM=bYdX< ztB$ecXX9FOP!NCThteW^F+-ymGl~*gSiQjTH|o*W)!_D}H{O_3`9K%>m zbbAOTHgbpbC8EG?0L+j_bga9Gt}LZo!63D0Uc(C+;pGdhd{@TYFk@#pXn9E~#v8`^ zz5B5Eh8uA3flb-)i73zSZAGljteIi8a9kKow6tcDTv{OUCgl~3YGv5$ie)Bry$ZDrO&ZN&hSds7 zWCTdK*jr9yv_@Gs_RrIXVN}boM?f}xJl`f9MH^btH0AH?QJ6t2EnyFRa2IVH_vlDJ zy4ts+vZe~Ht>e(Sy&d=6dmkF=8*t{?XJYr=cEv#dAbL&Qx>yiP!28rwB&{r3Fa>EW zj#F7-1f%F57{HpB*Wf$%-GgVIeFi6-a3T&p{3vvF_Mxh#0Top>7&AQ99&{*kGv$;K z$duwU>Xb^)>a>bpb(RMrWDH_|vOHEUb~q%WM`nsDX3-eZINJvVbtb3V5UNmijWpCM z5~=tV?W{IhM{r3THW{vneEbmm_s0N00F=h1dJ7q4DhIZA1+B9w>;`H1~v1EGe@nqzDj8nWo-@-+&q*dQTJ z59Y&n1sgZAam^tmr2tNc+=27%=l(kDz_a25j59 z36&M)*lX{-F?a54%1hcHNJ0T_SS76Eg&f%$$i&opK7MPML_I!2{a56`al$P5-!bTb@vdX-QBivC&n(dnuq}ImYQCcm=|K=n5Ob1lU zAV(8hn_HO$+vrrXli?7GMd7JON728qX+_SSd8f})YhrmiVn0-QBY@-ErwL7Y(13Odm+*zQnnM5*|tNB<x66_Kz3gwNVJ&Q3+6x)*_1M|+asknY`z$2L#SHitSM z#mphoz^}t-d$t(j)q0_n1@5TPI1S2oXo4^NjQWPiWpN%{`N(hj)RHokl@-ykbpy6- z+CTyHnKSpHVYQ+=$6qHXK+vUc4sHbt49%WUi@|h$X;?=ve$qtjzVk8G;IY~S0b#7! zM)2ayh>a`BaM?(iZH+6djc#SKfy?pq%9U&km@;JsIh?i-gaRyb_3j^MwRmI_5rAoV z>L4>G@m3=po6>zi^~@-lZ8=kbq7wzG_`mexOZe#nKg5$y{vAgg zaU_mA{zUZj50ayI{ z0{*E>F5Op7wLVDoEP{DKh^d-gkKZRFohX=u^D*lZRqira%cxQ4?8lt3k;83{S8G!f zZe6+rx7~IZPCDTe`0520p`*JCL&Xsavyh3Bco4p)qPkAq(9E%WVk;3A8aDywp~=9! ziy46Q57>^XJdJz8Y*uqqBOdtScX0EP8*u1?!*S8VMHniKGK;dQ95SJi6&R&3_v3|7 z8djg|n>8h5ugk7EifL4wO?0(*Z$Pbrzp`(N=7BI)+`qD=qP4(cr%L;L3S*tBsS?bF`-%;Yo;30<33fM!|A2Dp$n9l8vy z?FBQe1_iKDpjhC*Pn#gHlUV_wZZ!mH1!UA>H3*oXTRjaaqn3Hp90*vlwPas6dBNkTJ>F z0etS(TOaCOjxpyQP8bE9bXS0~Yv*jLF%*Z3sH`eSOJf6WzG*S;yz^e1c*1e`%J~Y8>gf4niTaV+rsF~Fy$Dy7x$@jnro062qL1?l4yO#Pz-#X!vf1NS}br=G&VNk zfggMax88Ci4q0$G&c9?4m7;7w9_e3nUwUwag!qARHXR!B^-7Zhe1GUn*cs5|0R|m@ z^t4Dih9N=|M%>^uk0eyQ_7pMh#h2KPzThkS$D&^v?0mbnr$Rxc({pwDPI_43dYxYA z1WH}I@K$4Vv~7M3uWwvKD(K9av+$-j?aNL^WBy3eG%K`g*&PmWc8Er^2xB!UV8Xu# z3Q)vqJ<}!|D0Ly3G+O+kd7W&Yj272DwHem(3L27_(rT(!Q+GAP+M-C+qytmREB|GJ z8Oe{4kLqJEY(}^(hD{JDmseva2}j~83W*-`xDJj0p&<^kukcxxTuRC~71KnoySmzV z9j2dZGq7IYxSr!=Hg0?!6DLl>>^bwW`<{DZmr1*@Dm!Z5IWkIOac5UIr3TlpeHG8H zT7@;QyoAQ4dLD?kyyb1^XzM_C{}AdMn>ha4t%HnHEQ%B1*NC>iI=$ry>^_P8rNh37(Oa4>L5JlGy;$M4#W}k+fP5Q>?

bg_&+@Q0aG}2zjpP7Ox|Ce(J{3fz0 zu8I9_MAK0#D^Oowhowty#NBt@j}uP(IKFz`h3M|;#Ncp|bgQsDC7d;rK`>g@C>ANg z((iLzQBvSM^-kDf2nNLvL_rFM2by7R8P|jde(-H9z4>cc;B>12Qiux7w&-jebGBe2 z8gmqccxvy}cV&ZO1jtBgFPJl?9AT0N)HOyInJ;lNl(M-#^wLjg;I>&&Sul>4JYsi; zavY9|j8@yjQD1o>MX-Fo>NL?*q1-)oSjHGIY`=T^7Hr<~8Xe2bS^HpL&b+dS)fxn( z#~Ls|1QPsw4~|lUz^I+)0>)36j2Sa_I^8Ou0OPS5#;VaQGOQZg%ifqI#1N^E{ksH) z%bM2dvPT}l(@(D=&B{8j>Kj@pf^GOJn+_Ne*nxJ!zx(w>6C%CFr%DFhCKt3Suk!O7 zhTs3fs;qjeKz#XiVL%ooR92T^u(uOkoozh4%}vc{ZfT~V%9QP_YfGQi1H#){v)sBws*uJfe^bVWFw8x%%Va~jHsP#z%O#hpkQBhe#o~10kt5dmy z5+gzzMh4HeeavRky@`;O882~3We8Qt_e#I_mByLpXWIQMyiN0u$jub~ki$`^BNCa z);D#o5nE0D`rh%y_vK^{z42kBP()>A8ODuk#w|;3!tJ-+jpI-JIL<%Mpny)|nq`&7 z8x4%b$JzuYo%UQ#Z%hU>DVW&l&=P z%NhvsMUIGk^+1`Cgm!?Nb?yYqo)UvYYfPu?%^?aLEGAcrZq#q|I;*XWqI3HeY}ve? zpE`5aEbNoce`!|G6g8CK)5%CO2X(0JzH0Ahmtdl`{vYl|lk-Z4C| zOsl1|8MjqpC{Bj=Lz$O)v*K8}je;H-KyObcdV70OS67FI`g+tiG%!8uXm7{%?OV{c zt&N`0CX+_>wY;(tb$I&lK28YYw2-r0q|{(jU}*=IDNq}((zg~d8?OQUS4Md{Ai zoi?|5Xt44?$f2kqLI#KZ*K|g)5e2@aG~Mq%b&GqE$KF6h($`zu33rAbsfy8I9~_ZQ zRF5-u0ym|%NZR_cyTuBRKG;r~X|NkyoFm4*IPU1TqDSeP5UJP}PD3s{@u~x-44yT4 znRJ%H4OP)aHa8-hOoW-gV%{rHWrT3USgq6P)|+p_ZMWWqlTP|1Bi6Qm%tE7@R0Ss@ zO81r9)7UK9X#wX1zcs>kU4G~YgnmGFb|eoOuz=dJ?HL>WtD>R=t&NTN?sx8^zJzt@ zo#%9`fuSMK@HCPogJtCCY$zj9pf}*Gp71b|)^iIT2hTKii0oY!Q^eD>o}tI8wea;7 z4v>N^JwJDyX~vq@MsoXH@QxNSi|w_hTEkqGIE2g-aX6ypQB+ryVcX_)*znpqQbA|U z3XF9a1B3m7I#|H+EXYS->)FMWR*A4!eI$bdjK`YQjr_{~>0kdJbSpEgE_7{ETJ6CF z=pF;;3}cOU&K$+UF5DUf?4Q3r_86XCxe5(UXAZ3)<(MK$5Q)M2Q}i>IF?2c<9vD(&h6_W)n=qP%;^VJHC3pu zts`~Jr1Hdj8|FQ$xuKj7$)-ZuxR9aZFsU3hwe@IdY~uG)3_?fE!SVvx4&;G4Pgd8a z!jWxvCh%-HDI;-Q1aN@?rgO`~ZPA5u^prIVdyDMXMvMmu-wdENUf3v{SR1ZG7(h>1 zwf+ttIITwu=;Up06U;_*XiY;DoJPjSBWpj0le4O~j*=?c8F`*KVNja#>ik}m6aMbD zG8b{lu(--u1icnzQ@P4ll!edSgiyEW#ezofR904?xv2rS-LeFC-2M%meDZNP``q)< z(b2(TV_Ahc4ymrGdhJEMw3{-l*qN=F_NYrg%KpfNux_7bO=YQh7*_kfag9y*(f97d ztxIp>*z^l7TFBPt-k~AtT=3)4_@b=tAv+k3F<>G+4`Q8;Z3>$V#&l^?>U7JW$GOVEyActu8VBM7_zCv}Ykr5WKCQjOA=j*XrE9)E8 zt@0Qv;Q&{VaqHzqR*P?5#Ad~>pkaNQLj-r3wmYh-8>!Q3I4cdB<3`+Oen7Zg>{ zT|_aC(XnGGCI)yhg0{ztGotf3Hsg^7|I-hss@E#K1bSmdtn$hd>bCax^`f`e0B}=r zH{F9u9zu>haXnP?hGs}dhKHH57@lkfwX)KjP&x6*q(iaW7nY;nj-Fl`(JY7zO zppVlAwKQ45)f})*-)(GY#1Fr7KXKm!4>=eYU3wW%T7mun8CKarJ0TKN*`cWBsXB{< zoCc5^S;H^%io6%Fk_X~5jA%cDnIc??4HpoT6JnAa9}At{!ykT-EADDkLGb5waV>O? zcYs(Kc{r?}K84sjN~swxX$Ew~ise{EC}13R znYugb8^%%9DYOSnu_ts`#f5X_c;AqDN>0!(^uWBN?Rz3d5C`rPfvsW%@4`t?kdvxY z=a6rFiovL3#SXG5j2DMB&%Q9M$*qE=RFtuMtfir>qgb^mt&fgIgyis{dF_!=V$LIl z5j^+YOX%zEMO9rbEON4wViQU2yVSd+RL>N!%y^UQYkXca>MndEK4Z#lT?Z5>3>8Q# zDy-8_s80-1u>g`0oAp;ij8zz<~!JjEfg8;=VI| zSaYCyR#E)Rtw~t;H~c#l^W4d0U1Ex)zE>_^E$*(!V0 zf4{3+6;07BqywWtK=oV-@r)Ev93G}&wevlZLf8Km!zw*iGYW=>DoQb`l~vo6&M{T> zsg5E6E9@>Ww>H>vtbFQ8tbBSE%FAo0ZdKjT!sY=o11teHqY=Hwt|S>#H?s~Fr_1nx ziZiJI#IZ+58J)VCRC!V~5g`)~gbpz&AwDEd4%=0g7zrDH*6zhqDz?=cd?9XL(IQ!k z+HCv`Q*L`m1{J8c+6;eExQ9iO1+bESRG8T_t_z!}Of_8|n;D^}{tO_!X@WDc{8`woni^7fPZ2X_Ou=bqoQ;DIJB(9K znckLFWIRh=i5pg)3iU{-)h!wsH0C6T@PT>qIV4D~l$$k*X)z(wMACIAz39dFSmY5v zv3FJ(KQY)6i4d+r451g72;_6|2#a_lFWFcOPN^Xl=uHx2mk4%=z)Y+bGn{2;tgokD z#GSX_gA-5uIL`daIzellV|d7y8Yh?;kZiqJAT zmdAk^WJIVy*lbRwBhkjx+35S4+~GJs88jDZdPMW=eDrPO&9%&)bX{UEs8Lc@Ta-J` zD0aYVgYBa=Vk-vUQ-bQMO0;j;h)o+_MR`RT_S$;}=FgkYf|OCyY^|-eJlG+r&}(tN z!P+cfNqof`1V##@nDFmVw^GDv7;7=nt%S4q0Wpk%>M>6Fh%OnYT$s>GWqCPPJ@X8n zc>D=eRMcSl9{ZrKVH`@zE8MV3E7Q_q1xrzx&S)B>RykdUn>+#8LQB&~k$fS@w`*)* zj{}o2-a*C3J$XcCAwif54C%U*7Dp3;+B>z$1Nuu85RL@7m46wU>hUhfr@fIhbY{bp|(wG*sm&^63ey%k|=A6(#>hv zGiqv?fD=yoEZ+H^gV8t8&$PSTv{D0?v)2bE;+vPjIgMG2?g-gC(Sovj%?-x$B2~MQ$ zF=bSQHp;v;Mb^uuF2$uKw&^|cW>`zh#xSY16+igiw{XMt*Wutp55q+ZuV7(|5wulW zJ>8G_Up{0y39Up#n&wPd)SoMereGsIZx2#(R69kLqduKj1xE3r9V2Hpqp{rFw|*~? zE$U2)i6Lw{g8T@DT~i^)*_LAu7{Z;rx6-EeZ>LJxcUM-FVEdL$*tBsi_xa43GqLZ! z^C(z7*x#=+Wl$vzadd=cJXXu5h^^YVduj!YVA7;$Y2C@itL@vjQ#LRn)~MjBK%kl3 zLAMGzOwtOdtYV?XW?rp)Y9;FG8Zd2-y;0ZDBE#x4w8Dc^eLsh@DZ{!P zH(gFAQ8%8KOl%A&4YC^=Qje5E1_tYpuE!0EP~FbDutwIhC(z#`UEd!fj{AXf!nHmu zG*z=v7?v*Dxu__koG0N0t2P_6K!!0U1*phmG#sOX*a5K=(clDKc}9G;2@Qs`Qm~p! z<#0^IHH@4=**P1BLscVYfNB-a-@h{@_^MF?(n46-;2fkoS?>dbQvv@(r{H2 z5<}=xbv6uZLbrV?s4I2RQB#E}8*`%X^`7?_nGw&*1-^r$nYy~%Swv);%R%|s!-WD{ zS`7*?jP>r@@5aYIaSSI2^!5*-e`t^sFjV>0+EP-lw46mu?FIYCDT6*aS2>aM6+%+d z;SM*?awtC3(TXfK(YRoE{pbjq8yfNRpZ*lL+_D(&KJXyYt$+%iLkV5W(CL4Amg&c# zt`tZpZcO6V@k%Pe9NzY=8?f=UwXA>4o;@3L=g(!$!&m{P1u$lmP)6LL zVG_JwO>m8%ghgq?SW|<*PByIh;#Eu#uoV#$V0xtyt?E$*}z_ zY8xBHV{K|BD?mhZ6|ij0c1ZsNgr~-45U5AJfavQ>`pjokdYbjny2Na zkYVB>^R!WCRvuQtuv!jfI8=3JktovGym9rEOk2>RuPBNMR!GJnthGZ96&%NH&dEsM zWV%{NwnV@~X_Ezm)Y8dOje<%U&YYc-}}5sqs2P_VSeSrQhB z?jU9B*OwKI+-SyJ_^9Y}Bz8{2l@=#($T;31u&fBgV~{MW&mhXw0L%V%AGfUxKn1eA z5toXW?Kh`Yd1n)kx(_FeNS6-T4UpcGrI|6l#}0IbVXSraxbv2qar+%#$LGIrG8SER zJqCvh=pP(JMWsnQdKDc&VQh@=F##6CyKT6iL~TY<92RbGM$e`XnAtOjXwwR8U$8aX zquOX*A!UreD?_n3$mcg{LL=_I=YA}__W@6e|1`%P8gmKh`mC@#e z#z|u}vfprA;ph_sAd96k&aDSqMosH#+k_44U-gJ}7N-cyA)>7SG$nIB+j6I=U{h7|7C8!||3aTY*)po+15+daUDG zC3Nj=Z;beSth4=*CLy)1I@#E{fo4flFHa^Y#0XHBjvpX1)~*z9JFT3XEVN@?4bN#o z!UJ~{DUNDw^6C!k?}!7*Bj-1>4!!qWdn+nO2Ya+k4Mo< z0FkyiHxy2<*R|N%Rg{*azNQx6`1)je^ zTKAQ8Z@DpKW-c2co-%PmE6$mdD<_m-udk@m{<1%t5tX6$6y5f!K|)lw0{NNC|MGkM z>}L<+z(Wtm#S1T^_CxPbf6lPVpp#`ly;&D6V&T^ZS;k}bJ!%F=Dfy0RN0xqjqX1vy zI=XH}DZUc0Oe{6CKcmsP9)rVA5s*aulAaASPL1GEQ-e~9d;pY;cY2(1+c%?WrS%MIi(F66AH;4NOdGNxD z<5a3(J5K0C;*?Z-duLpO8WePh0%sJ#UJf91XyxNA1&$^rVb2O4T-q%vbK$!jA2ow) zqq^N3hK1WP+H<2dny6_KRLM62=>D@d&{UktMej18;W&KBlAwmVY0?tY$mqK4V2Y)b zA7-aQma-0;hH6ING9fwX=*YA82jfE%6f(|oTyyZBBTZEH}?Kz8M z`I!KQ<3ikc+3WS%f{HFE#rr>WG|s=|GU^xi_4ZM_fN%sMpR7eWRn-%XN>N!jJLye$ zr051djXTM?G+mOgQFU&aEp$x;AM=w6xxWnM;&9s7h8sn6rtKb*ZCVed!lqm#3^W_as3B)WzY_Ue1|y^gfC+c7+DUE&BphH@o@%7I8!quk@2v)OPtjsWG{3I z8};anmm|i4OrJ^MnNid}dFH9VVday5LvgS_jR-R5XA*Sg*sQp!OhiyrWNK7!68@Cv zJC@E$8iI#pUcOHcH=m(X1B#p;to5& zL#4B50-*y_u{L{bu0s*V+n0xOS3{FNwy-0C5@}esC zl8E|Jv>6-Cqg2B#?EqR;oN+AEBu_uw0VvANe)4n^nTF_h*Kt(znNenByfV5`7O_hU zlZ6dWJ0%)o42UdxVymhwu>L-@7xJxx(e~+{Hp73NQj|09F@=b@uw!MZm=mh#{5ol} zlCUlRosAWbtb|5U?VNeGgCZ6wg(#}bx9DKk zXkipxJws%1#H_4v?3x~{Z;PPD3D)l1wMJ~BA(O@KtKd#0Kj$oAIC6#Dvrfo&->*PpFwQNVQ2tYhb-w|+H z5S4Yf{6U3?MDCh`2|z$SX?sSATNoe93*L>Dv$uYrgF72(m5)JoGQBo>I>ov_uLIa0 zZ1dDLSR+9R2KxK>Fd5Z2F3cic9=~*nL*ID`W(n-d)?Z>7c2Mk)ir#H!PWK@*CFwT* zozGwzqvBDX-^eZJoj}61_+H0{m3F$6V9sE>t#?R9okeL0IBrC%=&_!T5QF+~JWi#f zQ`GpAgegT~Ea&?22bL@i7vzqLwW4cxpb3d^L6W%G9QRoeg{z?XbsE3bSQc~$@{Z(5 z@<3`HQ0kIP_CB$_v{yA96ntNGWfeuUskh3J<2g*G!35HE;C=`wDJ-&QbQ&Myy2uIp^;!j=K|DmOTS$-Bei*K>!Ni?j z9&U?7A=ccBShN-LyAh=7Y{hd=@ozwjau5MCngR8643*_281C!D`ZX_;Q88=IY|NiG zkBv4~yfREV&sq|D$+tagHNgsy2#eJ|#!nc(^JiXJTbNC0rP6w3Woi&$l;g5w_U9~W zjUteYt|?oYh{dCixM6K*!ft!)gW85>DO;6VVW2Dti8YK zoqKLe?>w?*)G`w3e30Lho6p2OqJxMZ7h^{9aDiKV?ubNqN_3lS?5G=7H|8oXn81t8 zi!Vn_bu}J-_%~R;ejOGpI2@C9nT#RR9pJ9AC??Niaz8E$nY1&*NNHpLvtcDr!Z1G* zsg483_rw^PB=wgo=y^QHV??8(10=dsmhvaKz~i%EPRI!Blqj0C)?B$d6^&wAr?9TT zTO;C9$BrNY(zyHtT5(F}PWZWKI5|xOFUW*bi^_L&V8saz;hcOeKobfaljjU1t*ma` zp^WGX^GKJ?A9_XliS#=`Hr_#KoaBMtK9sWy(JKF06`eMdYzQyHvx6&3qsd|+)+{VW zOOuVH)|z-A6Omk8k%F@<`ruu8#}t1-6Q51|V7Fh0^0T+~Eq}ohD6tKrf z=`~YWGOgA~*&Pql!%%c%pDZeteuN3dUqmFL6qtBs^jdR9y%Y5P^H~XY>`(w>r3j6d934L>#{90(%s2A1R=| zhcSgWO_bU=5~kJe{!p&ak<>|P8qbI!pS&9 ziY_yyRi;9cLK9t+KS#<8Dx^<^DK-+w!jobaBbgZudRh`qTY@7rqMSC!aQi6Caj^s& zBr+f!l|3t`>G5p)_>K%jcapz~hrEj%lwwh&I)FS9j19$3M7_45ww9ySzjOb+IBdb; z`1mJJM1Nl&hDVJ9TgpO|AQoQ_zb`RTRNd!nu^juw>~3T@vH!EGd)gSjxpR&>=LGDk zHM1f!pxg#NhF(-Rm-a8l!gTk&ec`n9AT+E}Ie`|itP6fxEm^trHnba_#cPk6HhjfSln3}ASx zc&s}aW6hud!&oh?7glCJj9B@Pf%CqwsaPNbYaCV+Vp+CKk=P~0d`i(Wd#KC!Y!wG9iW=3aI#UTNwfh~romWTHgI5p77DDa-5;N=@UqAVI$ zhJjXn&oK`8dFsruaoR?i86F-W@!bASm27)Y5%qQTC=LzcymQXRv(K!=MGG&-VTT`y zj;?M^=M2MY*COQ*rIb-cC*fYS6J94hy&I~)KhnTIt%dxX?k^cdk0cZ^W|4w9H}W-Q zDZHgM>waOuMtj>0pz}mibx#;7ZGyMWI|JDZQ!;$gBM>glR5xgBUXU}RNh9nPX*wr& zgZXI!5$36TNtiVYj!p;DF_qH2M!2}scYbRkd-5>L5ybUJ@s!Schi*PDx;KQFfzKEY zNjuoS&loZQCsI80lON>FFS)AN(LLy6g&UZ*OOMTEXeW{;VCVX3fC6xDqFnkeJVt z3J>Z37O^BZ1vbGj;c!DGN}rqWP}Es)W5#EZWg2#_nLT+&nEjECi2*~LsvV=rG z;=M6lA~39!Dfsth(S4>-q2Wii5B1v=ta;HZ0y}$+J?p;iZFqhCtIP^#&6Xak8OZ*D z{**~ahAms|#djZnZAC>pufkZxW8Eowta+Tqr0@(1urOOtz&{IJ$0#~+<1(Db7PF$N ziV^E0e|`ijS3ZrV<`&G@dln;Bqg!c;fX`C$N+kJ#<(YP+qR*J}s6r4AY(y;zYElSF zeNZoAMY^a>B*T!eSB4YUJ;#THm2&SI(WxC?7xIX7+OE}#b9Uf=_v>F{!=~5qzW09s zQ>RR3KR!LWVZ+5DYHMpSS{TMTXP<%RSFggtMOWg0gAYe%Pp^u*7NsY4KrTDVwR$G( zk{lP!*JNcpyQzrzGZH<|R19=;b5oib(CluNYUykX1_;EOGIuEpuqewJAdXc=#FeGT zevrK&MJ(8nIu`G8(WRoTEMn2)^u6RAPXW{Ms+Vm@Ne zz*sQU;69Du4vQ9_7s-7TXoZTfp~TLm&o|4?mw$e$vp8Vv=P|OR$TlO>^qkP`LzXp( z;gXXsjAQK2FV3ex`=Cw=L$~K+Iz+wQ+bA1o>u=+)_nkkVMz-Iy0z6{P7q8Upp#4jo z05_-_&0-Pjgq=gTdLt{Kt*wn!GmBVFRD}jAqSXkseFefBgn_kjE>=zb%U_mZl|`%# zE!cI&-l%ODNAVJISvBp`_9;1?0??9?2?#(1SMShrZMi&ENuw5QOL@iJ_=B7WpDChy zu%_qahu$`g!5TaMxX6k9lKP{f$yoF>S|UE3U5+WxH`LW)c(5Pmo^vL<%NAXE4URbS zz1Y01jT_tqS}e_IsIOyt>X~0U6)(N`EEZjHHQsgLq3G)A6D5fa4KnZ1FrgxhZ__j< zOCyB+X4AZ>yfm*p#J@7aul3A!p?a>9Re?+iI6TstxC7I=kg0(#mH@o zq8_FFOyx^UP+!-;XUS@Oc?tW(d-{55EU6e)Qi9qVO^7f-a}ztSuBl~lqYPyzjEicWjp0Gh|Ovhks} zyPL1)n%Fg!*@&QVyf=>Ewr(qHXsxP7U2QFfY($IUhol>(&`%B|qJGZ?SY78H@E-hB z+!9+Ru*PVQRnQu$VHqXPy^>6}7t+}Dk|Qkg{H0Xg9{{oWHwG%XBB&1z;^!w=JBBbu zkmi|DI-t=cGRo2AJ)LdXxc(Ie0yguCS^;DQ^toY`I8qpA>6(OL_2QN5v6>jm_c|_rug_U-pd;V5zdg_TM(bwIBBaS*88#ivouYU6@tbJuI z>gpTu&Ud{7Z+rXOfw7_rkG>YQ^$l42@>=}mkw0VIx>wQISc`)XIuN~G?YQQu%W>dA zhvK43uR?EMKddPH{BzG^V0aL-X3s%geI3UfnZSzeJ^S5Iv4FXA=d#<&OqLZ`RzLe3 zp|#ob=CGsDm|9B`%6Ya4kJe6=UN0{$716R_AWQp0d|T(;VK;}#v@12joKR!w82UQ5;q{H{V41TS z)_L>hFbd5KtDJ2(*9cfe!<2Bn1&)kf3!@l6@!vB3dJx;J^NPi*DjLG@Koq&=KUp8{ z4y|jZp5(gPHSha&xT~miD3R6o=C2%Vd{bFLjy*b zz;MwKlO-JDHJIv86h%DzppDaL6;BsA@t}w?i^z;-R9=Rv+8R_=S6gn3p~4U+*4m+F zAgmMgS6z*%yH2MH*>kH`NrSTS)Naf4$Vw2F6;DTap)Asa2J(-q{)>4!&3JW}BQD#A%jU;B{?{a+(!WeFJ6Rj$SA(9m#9&QrZp`Eb(YKCopBD{dEf$U-PT4U zV;ZdXpc@1h2gO5*A%@A-X!Z z;lz_p!26E=0JR|gzG4M_{G;z<<>RaIAD{d<&N}-mKuI~ey4tbug7dL)(`HbjvH>i1yiT(MhI^8s;6+?SI)#9GxoxDH{Qeso9@1T zIyNQna#q2Z5#}51pXLL7W(MH`8CQF)8fSv{?5q$^WkRG{F5NOjFI{u954HO7uGRx_+>X|?Ge zLASC1Bh>(WdIkB)-qvcgD;v==VZtQrzB7gi{%gZ3J=VMysXTx>8?qKiJ>&@ZD=W;f z8Y^HqR;^lvhWaKO7qAV8X6nX-rk7^e(*i~=9mACb?Y{!yx5|yit0-2J#!{LcHHs! z*s;grXAk}qciw(0-uHnI;lz_qL}7FcPe1h(?p(SQufFm;qq^v2W(#Xs8Pi15K>gh3 z{x5Iu9j8@!ZI3Ue_ulAz02Q#eD2j?*)EJFMlNe3W*ifW*P>P^{C7Q&<5;ZZ!Bx

t^EPVPITztuJ{Nt@R@z1~imGD4qg``Au@7)taFS!)g4F4|5I(J4* zO^s55q{~PsO34YxNXfvP|9k^qe!T`iy7fmm?X0t~n~U1$dN<*yn@1F zoO#wcxZ0TwU*1Uq+bLqlB+ql}W$PB{I{b8z|9SD|y) z&Zv`O9ScHQbP+0*o=uleRzpgiT9+==4W*1MV`k}g38Nx!hgF2fK|6yIY)_CO(AtKa zoJ{0qWnj+C>3HkSf8f3c9>V2UUdwwC!@BT^$MDAAUdJuB+=dYkjYG6GhTPmtPUHRQ z?LX%F&6xEBP8>840+l@X%#(QWr5ADgkLC5F5Q&OmXhHXG9XSbL#`NioSRWoUj@Ys| zok?TI;=rN9m^1eY^eOL$0|yVIsHhOpSOgEGtYa6#a1~###e^{rp-0<_2uj8Wc?P0f1~tq_fJwR2M7kY;fU>pzbc?MpDz55-nS{jD?--++1|-)Ds!Gg*3P#gspg~ z_wQQ{;~hoDU-hc8w@~t-`@9IF*97=3bHO-(&mv*s!tHIyNK40#oxAY+XP?Fg?|p=B zopW&3*=M4>Uti?s=hHx}tJr`=A1`7wc*mW;Kx2Iko_glj`0fqEF=g6pO3H27{0;v7 zuYX|Ij;$22-o0xVqR|+-bm@%3!hA%UV$?>s_WGMKVBlbglWA>^;KBQTft@?HV%DrV z*t%^OUU>0&w7164t5*+{6c?c}62aa*`|-`jT_`BY$B*y03pd<&3nC&aVaAX!Kmw4H zlZ`#Q_u@CtEX3Pyy@~wXBn%of5dHcO;Jwt>)nez)U1VhJ-&>8rr=Egxz|$d5!`vN0!&8i|#wR^pMFk3wc-J@?#`sINVWPMyn;lb25{dFQU(ICMCI@_s$> zz=+Yf`kLWbv3xn6|LwE*YV`_^GAS%7L~2SB>T2t-Z{H!*HUMXxa~kfx_d)bO;Y1dT zB$^WFBkTs!mSg9dhS8E$^^HEpg1jAKPa8GBwsGBr4pb%T7;IVIXETnHlM<1emraBC zw?DszpWl5CzI)Tn#6NQ~Gca@dR4n@RV@#et3&SqC5*xnRh|Ek$>r*jiVV7Nr(PPJPuw+eD zB_@s?gM$Z;VAkA)=r>>h4jwp!;-UgHw=`kIefQ$X;X`VyWgu3;kms@i2NlsNwu z+5r|Y)#9*a+(IiiqUtpDNhr)?cs^76&}b{?RUeuPbz6PKRN$7GIpG;GUaxA=Y&nlitu1})w#`-!u`S={X{nk4edchgE>+WA-(BLx|wJEhGnNh>a z&zIx(zj+qhcWg&)ZXWjT-Gj@oxEdqJPC{Ls_HIk6F40frfxQ?vZWO-R^bMvxG830w zekH1_>)7%qLl3K}YdPt)y)A}OBk#q=b!!Q1QA{J)4=y#&zrP```Tz|96=vfQ=i! z#_-|8G3=6y(6LK5q$H=HuCX4gK3|E~UVa&0t=ozlZu}lbj2z7a7;S7uVu~s?`N4FW z4y((gQ>n5Nje}`A=n+-z2by8y+{!kJmy`58NVvn&Re7IKYGi&}QGOm4&Yy=rz4izE z{H|Z(`?uVNy2b{wH)c+oLc=PU=&(zL;c*zLsVT@vNy4~sBeC|YuP|ZqBlzz3ZosOQ zpW)#L9zc3}24+1zAH}7eP*+>Sy;NLWjQ8Jp3o~a-!>~&)$LO)+X;^A&sxW@c!`Qd~ z0OmgaB+C1rguVOsqo^n!?SjLPd;t6Q?!~7xFGhA-Hf_R$aSx+gj~H0gA93G7*+^6HPJt zgcq-r6=2E5w<^J6JVnK4+0x}$w{9(Ra`Vu+Yi|`{Nm6J*W-G&lB0E=6P$Mg z>uHJick_7JHF?`5sX2x`$wx||MK)W0ZXW*l%FB56$tTdePd7}N_9zCNcrp%GRv{|m zavgb0NI=KZV(i|z1&_>_hEG3Tfr9*WTy@R0c;JCCsEb6DZj+RV!n{1RHZ|a(2k*m% z4eK!TvAH;Z$S@o@c$9ox`H^)LRzO>86w@b-!+Y<2fRf@|+sAk@y0*i#a(y(6hFV`9#mJ?YyWvl5}m{!p8p+w``oW^+8HNe{Dev9 zU49Y{A3chem=+3TZ6tCmF3v}7btUG{dmOL*@$VRV(GX0SI1RZuxu~qJMrLLPAHm$& zkKn`i-bQL_0Hf9AP>n&srboH ze}U_6{63=5W;8T3@jBDeQ<0gPiVy$&HXfZZ6=@kcm^@<+PCof`96nm5qiM{cu@zSH z%s?bX@pKolQHmQGo79VtW9h>Ttx#q9tTf8R*;PM5&5qK6=(bpO*h}hNIEw=lU4jr7JZ2Eoso)hV@KhuHLEag(sbN#)6H1E zWHF=I+}r}pp1S~fMTMxXsim_hEG)!F|9%H^W=|&+GiJ;ru5(TGQA`{+8vFL|#jH6C zG2o;@*u8fz3i5N%7Hh$n(Ic>X_YQtuzw!aR`t^d#PZ*7!J$qr+g82eiDU(4aO;`~s zJ`!bNF=#r`sNWU9WRFqt&G1!c5s)8hJaKn+K0by{%Og)Q#wO0gU$Yt%mnR3M4O7PQ zXX|H`qCCo*HiRdD1XfsJ`rwqGibPo}Sk z*JPWXac#t7(c`gONXDDAAUit?4Yf6xFnR`Aoqtz4>9@a8!>}T5lyhD=sR;dvCvu zM;@7uQ%^Y+GiE-9gp_2+oTkFU0(`S!JtmDEiQ1Y#r8h!;8Or9$7i*_~Gq8!B2jAFAg3)N^F^}${ds3%8Gfye;40o zOr6Bc`!rsA?Iry5uDfv4Ek9=QDnC05kIkBnk3ReWV<%6; zuuHDMzWw_MUFBtGVbb_f_~MJtF=pIk4FB$Tv9Y28BS+jvj`f@;7NWSgjBEqJKD&4A zf)77Qznf;@7{gz=$v`zkd#WpD$YF!`IV(-v$Ujwugx_aw#XJ<9g-*-85k9xh3%ocC!^wVLF8Z}Dx;l|iu1(woWlsaC2Ag-NS^$(m;q&QDd zq~Z|BaEga^OR9Q`M%Vh?>1nBGs5*q5J2s=ey%~M`3M*hBpRpQNF{&b99f~G-vxs~g zi&rAu*xZ7cV64IlC=$9=4`t!R38crljo^>}D~vVXu)1s@mDFW^m5opd+QNK7s}&iX z3#@IgLe)v4?&|VoOR#Qj1#Z`NbR z?8oq(^M+#ofg>cGi-8vGRW^aJ7sihsfi+*O#Dqyxam{r%VE@5Nh;Nd}L$1LoY|;+7 zVcl04J@S6!=Hy}a6HlVFtP>g|O(-hJ$Ddw(5zjn19~WJG5ynlJhNf5x#d?M9px#(? z6QmN{PPT&>TZvp>dGWV+Y|cVlapfhLI&CJJqB3i%9Wp9r%H;8Q|J@HTcFYLe^n=?O z&B_53T?aOX81`LQkdOa*^9?*Ub2_^9?2ehUA4kWo-EiQ*VX{Ctc1JdDYYUQ65|N*s zjpv?x60g1T2i$Vo4{_H$_o22iqOF~l%5wcV-5^f+iAqn}jS)m+0oH1>$V48I{?J5c z80y$K8ZTsu!)jH*k<{cgl$4YpFE0Z#rcA*fUVI)SM~%j9KfVKd_wGYxdK%`=dK4dh z^Z~|Bn1YKgy&U`Z?k5{0Co6+dk_Eus~Su-WpR^PgZMw>F7e;3sHpxt98O3&opnzNmsNF+J!BH526=Q+Wz{gs z#-<0fFQa;S7m@Ol^`5lzN{d&L_V?@8S39qQh*bhVnWn6|o^F)YA&cOS6yMFTN^5H@ zhT@Wr==Gl{UWIzB3Izmlq$$Nn9zv=Vy-!FEme+~F663mj*$S*%_q9f>oqHlXuLy|= zG9NvG9+#96?|)Z~UH=**vRiS>qEM%QDBXiWz71E?E-oEYA)PW}R5gW=2=JAceurNz zT!7)j8)AJ%MCa5H;jbnoAR{9UzyHlMc>Y(v#Z9-}gonmVL`_|U zMF?4qoXku_n;I}-^n+NxaUG^TG6xq7y%Yxy9^(B8MNOi(3^rJ_VbqBGu(4t-CQW+; z7hZfRs%z>Xqt7X%tWTU9AvZS*+qZs$(GTCxNPO=6XHeF$Gn$&jNT=Y5xwG-!yZ^#3 z?;AmJ59yE--2&Ndf^7xZ7X@>K2;IsxsQ7vnoj`tGAydu#q9QcMS{X@AnK%wBS1iSZ ziBoX-RoBw6O4XM-u~e$k15uctkEM$~!K4YJNlklf-a;fKC$o)LaC17jb{XH@Or^2n z!d(2}_rJq$fAcJ^yWvLMcmGJ#G&E7^NenNwSuH&z_tgbjSd`Ha)>~>lyY;S8Wz!kX z$cRSu75M*s>}-I?cfirgDjYg+fJL@9|M^!e`Q$@fdG$58>WXVo+_99A{p5+`@yRD2 zVeI&+xcthivG2e^M(P>=JrQ@}xRF@1dKJb`nvNkCU4oWq1pof8H}T}c1t{y(6+gfG z0rV~J$8=v{f;a#17wq1)3*Z0Y&A5NW7~;U9%JiG(euWo*|9dh`?)>>Zh(?>Z_8)!l z4wf%piGc(AVZx*t=+UbmH8nPFk_=@Ox_9e_+4JV3-3+Tt?^ULZ7k+Ijghh2CNE65_ zdfRzCN#6{syuXF- z0DXQkXix(tjda8Mv-K7jXzU7F3jHJ|wxPbZl9P|6Hc{TU&#{J8Fx2>YS3%aIg*vfW z(*7!qJ`$~Rf`DiR^g0f#fMcP6CJ0wkS}_IFQ(BQxGOT@&g&`jS5pbN;;CYn0R9FG) z)}x@H5S_dBLb|lHazLLz0jd|Eyb!G%Y9UY%H0cdjZ=>ybA_Ni0F_NM~3YF+d1|yMd ze72D0rIV_qmC;*4K^|wvzxvYear^B*!R>e6MXa>7RZ=5u9n}q?#)D(16BCe^n}y0ztYam4=tY;|z@bVS14*%^_{ZW^ zdkaQCbT2B_t;OW2kKm$VSF*4r28Im^HYiSvc7A>?_U_zY3oH89lFS?W%Ey?0+%hb)ys9r06oSmMZmy08Z_F~kCdr0|tWX^o_?|%{+ zBT;t7NV>lA^A#93ZZa;rO0KPrMp9aX1)uY77%|W*mMq5jQ6s5=Idk4ZI?;wmL>-ig zo~XDCP+F9aKfUrYo_=Z}t{Q$lMvfkby81>mMWdv)$zIUbOBF=%l+;sCre$p^@}ljT znyDz3ZZn=}5G-*eb<5ndiEeP3MN%@}dF!9}>!1F>s&TZbp7gJbtSp>z>KXXyUH9O` z6Z&D=r14m~d>JFm%Z6Ra;+61xWgX_unvROEzsCI|N8#+V&O;;`L2GlA?1F#1@mH>q zjQ400arlgM6z1h(+xG1^@BE>-`@V+=3uR=cu>oQJyg683u^uI59a$Wcy)yXZldxm^ zc2w2WW8|pu=zqe=%)B;ksKDe2W6-NtFU*|#INCd;prIi`9=K+F*5PElU){%Uq{8ZZ z2U|y1>SF-JPF{frv|U^FA)Q+sl}agHA(l$!04Y$)p;bDR8cNA>B;qBHI4+0wXA%~{ z^jZ7-D;ilBUN^CNYJYIlwmML4#nm`EB{>20HAgt5wY{|k{rdL7z(E6z$Er|(r2C#> zdm+=6vQ#TTrnAPF)#_*#QMWoShBcf7pcrc2g5~NKuuK$}4$HYq%yOoqi5HwBesfg~~81_KL z5b1-osjY^Hi?Nl36*pN>n1^TPKaM~C;bq+Uv!COKKm8f%YDElJg$g_sRg72-t9)ir zK>=QW^(8D^I1krecRfapnSiR=Ms{DxwMaW+Ypf9y$Be{=jcYOW(b>50;>$>-(N32R z_oiOO`sZ?Xmy> zAOJ~3K~!S$#8K$muRmr!_5>0I^P^#vVw0xnvW8+5%SsCI`l~PF$p!Pt7acueJR0gF z?0Zj2)nR*z)9L-o1XMkeDnTgtGg~H!5t?B&jE=F3O$tzBV!EA-eC=~+V^tq^`?k&4 zv2}x_Dp;~~3BF$YHO@cp0!E+Z{Z67Hm1I{{Rn_R*?*!x*79tjt@zjFlw$mU=^F?|2 z3CPYXAby{oo`i(9Hmq8;3}1Y{0=0Fu=-jC*&Kq(8`tT<$XV2bv zWcFjkSOpUnyp#`xSf+Q*=y-LXM&S?+;T$$ycpJ2}z1rJ?d^D)|Dg2|x(~?MYnt_hC zKo88$yT|hCq{s3g0h3Ek!Vd=6J?7S){EJW9CW;Lss;nTF(%Rvae&u{N zuUuNMKdW3ur;>`Y0pmJ~TcTD;DU6U~hl(zTLU85Eb6vQtYA`P2#H@%d-VFmC)*Tz%d3#B^D((^)p^Ea-^juOemF zM!MU+-CHqc)C1(WK00SUyM6?>m1u0*Br&YZFm~J|Tz=IxsHqbj1Bqy)b=GEwK|km7 z6-zN`{KGV?!nc%EzOgZ??X0$z6152wB-Exqz4juWUbq04UpX9OCQL?sLlYqqp}EOA z()^o%0r}gqLrif>Aym^N;PDjpgk>3`e`{1dopNBrZWs8FYiX5kTmsLW>{-^agj%W7 zr%b|IZ@ocw$ko^0fOQocSt!cM&LURbP+yN`(Q%-$7MQCISy`D#N=ZR&O&yw>TNSSq zm9yj|W(1@vaj>3DbZtYVDM}|J__r`79HNn1lV*hUv}8tK(xoW(SyNl9VmTcWA?kAS z9YrNYSo`Id#CLmi@6J7zn3T?lwL`M6i$7hCEUyy)%xD>ud^yb_`o3 zTxthdsc&i&tp`4y(&kM7%K0*%rc_C-^IPO8e>9BO$IQ@|s`DmK-2{F(S50v! zqYCIJCnmI`v91#PckMz;OO$l0!6y$^*}w*E5C|s-cs8T>s?H(P`b=wc3^6mTg)Clm z4<_k`4&a#E*Gp*+*z^DMAOGiX!iZIhS1NQZ69m$TOHt8>WMbJs+IhtYR{fNHoc>PU zBOO*t7B9j2_3KbrT!OAW%8{IwO&v~32TD)563ZC1NyHV;SPePjEcn zP(iniH5Cxdp;y%CS_&@z{+AS7X5jQQ&cUQtofckXb4s7IUws8$UTe=8SCXPi(NhxN` zoXfPexkU<8z?2E&@x{vJ7&mDOuDEhIs;WdQR;mOhoNbL6LI?Y7*>X%8KawIMGiN_R z<0fmFk}5(q+Ab*$K?v-{Mfv#Si_hc9`SXb>j-5CS_4N&iL}N%~#A-Au3xinB;BY-L z3RW%V36(6u+EiUK&<wDc9j8Z|zjdkE{Kw&6bvHSTRnEW#ZK3y&}GDG!5I5I{Z+KNV4b> zcSz#jDPd?rCTjd-wpJTEvQ~ew3X{e@h_1q8owopKshMm~me2NJM|r)5HaG8s&mf>JDy$GpcJMAK%S!cug_;A@>a~DM3SR;7pEN0-{$QVJ4!{k!|9fCD z=?Iu((b0Hzsx>PY`O$1foKvIlSa4xpPWJHi&Wvl^C zX>DP5V}3y~n{|9d`TwC|4Z&xLSPvaKNcvG)nvlr7LBMDaLQ(MW+PJ0`ukw&<8*DNb zFa8wkH*7$G6t8;pVOk`t01mtp5f(}H48x;WHK1IplgCa0mGq8Yk5xYP$Q0H!z}vmC zdt|Zovca>`(s5w_PD~m%k^&slrq0HoQ%@&{m1DSVupukcCX1L~kdJNKw&KyrL1Tmv<aFt@n@_8cEk(Yz! zsIUh_kF^3*XUxQqp~G;bvWA9Ls`Bv|QciX@yShe=xR+4Ne2G}gy08*ln4gFD-+ddi zXHP@lekWq)+yzL_%tm!pjq1Zn1VbQ8DJ!j(%I4?i;n}Aa;FXtN#I@HAC*`cMsg=QC z>VMl#1^Zo>XdX&!|KI_cI4&eV#U(Mm@;t;`t?5%GiN@=s%}#>M(S4h zEM(wY2b2`%<4-TYfG6iajw`OY2BXGJVLN8DxkVj;884wuu@GtPnVx>i=SlRZ^*x__ zK$mGPk~Vjqsg!UhEeqkE@JXf$6D1h_Clswc+qa{->L_~jDW^bClMMc&@Qm#zb543g zKFdq#K5Dux4&!uLi}L8i+Bus_jF+%6oNmvZD-oF~j_FIiFJ7Iy)`zv{pLnCeLTkTT zg9URRMW;@kF?zyeq-AEaSSVSQQk4V-a^qv@N_;nyDWd7UsMBymrDEWg@r5%rti+|b zCLMtp)&x?xl+Nc-ClfepN!OvBa&vKpl^j-;S=6L7ZhqV`NURz`U0RK--MBerPWP8i z*lnz@!v4Ji1w_%eZ(nvEic^b3M31#iB^j-)SLtOY#3V&`j>m36Yb-{+4hfbD3uWe2 zkK@tOsw=NhfCycy_N0L8Zdm!?S-o!288W90J&g71zQmNNGjQI8 zm!PV)R>d%AHA3Zn5kQf#zG8@FGd?l@DHL_=f`*1hXobT$dvJjG}d9<_(>Qt^fDZ(tVU|8ROS;{ z5c^`~XP7W)I)+}X_^%ueZ**{VF=>}w^65v6dJ&15Z0 zit_OHzx1B+7FBq~<1y#Zge33SMe}RL;&~8^s6g;3+;Q z8-fBO1_^L0n8@uhVl0}+AT>Fa0`63smxE?mk&i?%8QEZJhF+T)FQ?O5cEHHXQ)U_k z-M4{JkTb!s&S#OSfzx?gK3dzcN~@H!YOTfE=2#t*LHsxJ zSgED#bWC%I<^Y&+3tOg5B2_W0&7oF6ubz5u|Cc;gM-AMt9+n9LgaTx$sz!F)(k2^7 z={{Q+f3K=giAuU~UlXxp=?YY=TL-}}N;~&JdS(t}9+qHL@_D+o#9Lcq0Ou*`XM`D!Zzf)qnVpTs`X;>a!f)}$>o0RtOKNiUHP_*xhbQ7_T|JtkExhjRoJ_Pun=pC& zD6IP8bIg2f9)57!ZP>Nz2~1uEC@!({b(v7ony`EAOnt zTGdsKK~7c<_U+h?QKKHH)2fh3N^%l1veK~b%QcukZ#I@JUXCB$_I>>Pp8JuMn1=es2Flw>7u+my!rRn z@x&94;o^%g!|3r-(a_X{SaT~9<@NC+T6iv16p&nG2nI>e&B*?76B9hWV?k3RDA#Cl z+|N6F0w^FZ<+Xq)bj6g6RmOpq8uXy6Y@P9^S=eE?W~BhHxXU@PNY~PFop2CxI-Ngi zz_(l0paH|`L{`hw`)7Xxr@bc8IZI(vCj5FG!pnTTPTs#}aRE;0)q0NYF^R};Dfg4g zW^?Ae0I0(x^+${*C%M{M#6twEet27}7g$U-kkf%p$3UZVr8#jwnGB#tq4ICK`Q<-^ zun6H!T3^Ek0o4lVN98f8?l(!q+NKj~l@(w!&4O$}K3^y2ieZ)D zQD}#SCB^98T`<<;*&q;Y!r{Y*Xc*E`1us2z=9TLm>WwNW9C#xe%_8LTB}KSFEMcTJyyUoO{k$B!|EA z?mPJ2jo-(J(GyTpCw<70X0#(MC7H_Z3+K(o3opKmE3X`e8*ly*52HvBmX(!h=T$}q zT4NDR82td&i=f7oM{x15%TZZXYqY4iIq|Knyq0~tcjMs)g>KbGT&=WYR|-jdp8=d$X)f6p#9M#zYe%^No1imNZdJ@=19q4c!Z zN66PrPgg;1QM&*9v*j2+X&NrQ>>5FKC%i0D{zJ`Uy1O0z&|aX$X``YTxY#9Ul5>>sH$v11>5Lud4nl zKUrA~{JUmywl~z!d5WTaT498xM$95X9xTbOtYR%VK5xs#K74Sb%}ew5TBnarFZH6B z8djwpl9OcLs`UXy#=^XbhMnDB$w)~`X2+gRUZBac_+0m{Ep@Qo4!^`tdGIkgK{{;( zAur_1^@P~3OYxcdmBAu@#iU6FMJmk#gY#>*7xU{Ih;s#?j+s}_nYm6XWLtK+T}5P>uZFk%hVt+et_dWFdbIxrj$ z^s;!Bsk5i&EfIQF8pz8a}% zDY*2qVffiEevW_s?VngMe<5za^QZXb10zu>z2IzXQLd~Q!PTplUi$jZr(&(^Jr)HHLq^`49Z%&ws+kP1{gdn1hm%j>yc&CQa^0 zWhH8k9z{-GHZHyFGF<hrFJj)@$8hCU z*I>ew8K@&Gpan^CFW%!%yXcb$Ep7IQC{BdeF<8edeVCxaQA+#M`AZhL#YMJEB@@-K z3jClf5KBRgA4_xRG&K_qF$rycpuXI`i+HXWMu}?87;uBeSt1ECWST~zG>b%4BQ!{v zJuFnC?-3&Dek`IXeNDd7haJlE(60!sAJ^NW)=)0RKU-lmkFqtg)vQy`ROq05@_?It zv;B;QnGMQBdBPq>sdFVdNzcu?vly(AR#5EbqYW&or=2>QTA4sWerXqNOaos@g|1D1 zRg1fF)uT!z#rqDT-J|WZ|`V1jk3h_xa{XPDx{Gy=1AXTZwW^nFw8H>C7vs zhEg_AID!VA>D+W%MBf)IV3|0t<~W{=apS4Cw|SynY4jLqxUV%5qOs629nV%4XgH3Z#y^@WH$$bF_HC1S<0PjIxd66c&h1UY%7Xlaq% zqB*vTO{hUh5ykt48hrG@yPUx!g9pX%su3_uT4t-Kr6M~s4ZF5(;%mQH{RIy0KY&Q1 zM30Fm?bs0~pK>bBJnLNaA21N;kc|3hlxwWqV3|IUi1ef+EL!v)cJA1POD?|>rJcI4 z71!;9j(*X@BvO!v_V2-a@BA0K_w0cShYm$lgkQMvla!hzdx*XJ?d&>RU-1<_c>f)o zeA<~9deP;CN%$Ja2-%A1bFwU3;a-fJ@5NS4g$neLD?d@UjzycQr)<(rdT6DvBF~-v z+c8>?75VX2xen-phUc1f@#Ya?e%1g%<3%jd%%S6lR@8ALuj#BYS~Lw~Z9-84<8E33 zSZ$>-5S(6Q>;w%YWI{9ApJH&&wDZ zo~Fx7$Y5lV(L)?f<#q2$L}Q<0e~pJ1&2xm%iks1Z_-e(*0C%-5}S@ps8}3 zbdXsSgD7RSh^UE1DcszQDCF;L)B}*ngme3Ze$>!J4yzX3G_p=lO=0>YR3nWrXx=Op zRzkL7a~chEEDI-w3LQuO&FO7sUIqI~lnyWvwE?2h2Gks_RAZi;jGXK|YN^VYlRDvL z3N45&uZGT9&AP3ZV#%=9Hxp#E>3=sOz;kWn$b#N>W)4idFjO zSoznwmoy6Y2qTX2WpxC)MT=P5rAfykN-vHnyFzZo#`LIpw|a;cn)I53gJd=@WLi*z zgRC2FXl+Qf^;4TEdtb59V5XI0r;fM!dh=^MQq_sFisaZiH3chmE}9ifWK2I5zm`V3 zlIuuKmWZ_ydv|U}dwa}AvluIY#jBRU$ul~)yLDJe&as@&mRK|xfBhdZtU^$(td#NB z%3~!Z$)Yr=5W6=}9;<`>`k+{KP1PuO$zties-SXAr!IZiAmBOzfu3ZL5`JXo3zdn&1GDUpd) zL~ZXgmbLU%ExWuffmJ0I7dj-+xJ#jfDXWmur3boAa6J>Xk#(>|;^=HEJUDepaBik_ zQh4yR+^I%3omQv6T9=n~sfCqbPTMkjq0Jc{>B@U}-`?#e8IU|EJ}d3+Qr@CHL+&dt zZK}nMOR$5Ygg8{S`@Y`VlO77Qo47|HS7+j*!WH2f>i*?Z<9F*b)qj+AFo7Jae5=zp zgXo6S3M%}!V?;>QQ1H4LT`Nyo*E`Jijs=h<+Be+SjJmgBsu5GCp;4?Vc=0>rnjMC* zbyJS1JTIrQg_N`aqqc&tj?Xr)=KF&5HE;P=LmQk07K{}Zq;9JjL{{8`Rw;9Y0y~)! z9T5)0UAY$0?Bi|N+zO`KK`24r&w#_TPHR1vrk2Lqqu9G^JK6%nI+)n1v@9!YNdpnh zZgjo%W7H1l5J8Pt<-cNByLT5J>v1ezDHNcFRg9!)1$e5W-A>x^6dG0AJGNP6f`AyU zWlOB3m4>yq8dhNiFzS&g(}8m-;83SWt9UvIJ4~5G9Y-P{JAiu76qECGPTtR&qG7ap zM9ms;a@LMEZ#(lG5O@KtbCMYd5 z9j&0dzNKz5J>>d&T_Y=kSP14#jcUB~neh1slR34(qee<|3yGqL=CM#9QM*PwG(zKQuz}Ew8Gf}1Rs@Vo9n}C?wcI0PzQ+utW23eOEJ(MC zQb@pO_m5e28c>HO;|{zU9yiMN0?P`xHm0(q7^wyzTHrG8Nvc+y*n1F1Sk!6}tBcaO z?+sW2aj==<4RN@y+I8+PLO^yjRGL-ATS&L^sdJXv>y??fi)}j>YVmU?YzpuB=e@Y& zH^{|If|`5dvHI`a8PIV0=jfqUhevo&GdT~i<@Yj7P&%&;?A?vl)+Y4rQ;xxd2Q$bC zWCNuUKrroKFS#?)kxy<|rL9%?`h|sJSdTL+Al|SZGxN$LE~&cFD5wY44Q#lPM67Is zO~lfrOR;usg+c*crFfN%5~Mla25Y;FX`MNMK)=V^{FK7uadQ|^*r5`0 zWEr0xTD6!8$C;t>h~28XVMu2p8-coeD0LjrgSZzpVplj*?~#`)k-Oo4`kg+eSl=Of z4tfdV0F0es1bf}6#$BXIb)4L>Hs23k9I>vMfPSL~n9(K;yBZzK;*Hv=LnJlDHmJZv zLKxIA+EFK@6@GP`Asl6Cq`GSTJ+lMbuQqH?;3Knhwx0|m3=q_?o5)YLLnI;B(VajD zRj5>*7F;y_Q~^HSj&Uppp^oZ^VlD7^YQ%G9?FA+hq|Zs=81gjDP;u(5*|X59g?dub zVyn#(4yYM>hTr9&sO^7C3*|eQWjMrgOuAqe+Tj7x)D*l7Sr590)rnXk*>)p;AEYMQ zxyF~V@TD@K@mAC^>%dva=qH(ZRVP{jy8y^|quy)~aG`5uErpS)rMecu%Jx@vE0Gp# zj3DLg@KlqrWXTd# ztgGOluCh)&kd~RJdaPEsqK7B9O&<=^Lv`FbLEbWA-~G-_lT?6IARcx-c+#(C6=j+#-bflLnqmr zkq;R9_IEFeS=i|KoQA~i7%aUGidtb98XVrBGOV0f%@E}M#)l=n%a8y?BLipWaGz&x zfkpNY35r?fN)?o~R4%UZn;m`*UzkCWi?HG++dKU+JMM$txlGG7-ss}PJ)V=R+zxqL=RV~|C*fo6%8&&8cj6VkDD zRc9kvl;h}OQ-RtceV%mNwu~O!OOqeRUyHg`LJRuz?uC<1Jc-YUsd(Yz!1spLbK!)K-^V{}3MVvpZzzjjE1CPhn{Y#$ptJ<9+9AOJ~3K~za(($><9 z?VGofQYEvb2A(_^r5(#ODqwqUE5{kj!HhzP4PflQ` ziCn9QrU>!8Nd!My&T-4h$)iOcwqa(Z%6}KFp23_hA5D z`F3MVry7SVdnO%ML{noLkBjP;%d_L8Qr|D;wA|sTAyi`$cx}6Gctsr^R#d) zfJ-z(^6v~qZXEwp!xO|;`e)lVp?%d~Xo{`5o<{EaKa`;5i)~VddOrVFYq@q~AO4<^ zdtBBNP_Tk1Hz-ww!3vktBXYZTn~LnL1=b~GD4$IzkjrVcP965e1(>fe36ywG+N8?{ zx{+ zO(Q@Gj$(s+K#YDRWs)dJL3VG6WU4~ZS9zWq?K%d-bMG8R2k@=1rjURghB#bK;1IcP zQH1gZ1;$l=DuHuNYYrnsbp zmv!*K0YV#*`g*MSat%&9{Y>=e)063+;NH?cd+s^spj)?Y_+-&1XsD~l+2@>#qm@T+ z=)ghb<>jHIa~VnaM`a*ntOa>_`DkctKyzy=ii-19U!bxQRaI5U&o4wqS_WdRF;*6g zHDm#qsXGNVKimIo|;)3Qn!836WD*0kOht zcqQhXorw`g>$Ge_m?n|hD(u<06|L=JSOp3=iQnfKt3WKWyNFnN`@Nm(aQtp^O2pM z%`qP`-b47JG7?&T7i*58Oxvl^$KdI~F*@4xpU zhF&}jr<`#%9m&D{2l4SoAEIaX?kFlMpjKy>E?udh{@G`rvE?y4CkrQ@G#E##kK)TO z)==cRxvd%LsTpW#iQ$yfPUjTS)vG>7b#*n;GqQ2Y>1U#}QzxT{$x3LoS$Pnew+Fs6 zsEnKO;mLAKq|S;(1H&=>;4&t1{-@R8G_ul^Feowv3vGrh;BngijQc({zGe&D^|KIS z_`7au-A@`G5;~F2Id$ZI-G=*Fs}S#*`z@qW1r#OTt}{jK8vS04nx+K*xUR7f`%w5L zh<)Y5H0yJMzDH(yS9*OKPg*%WXiJq_lT0HVO)oFh0L{gUw7RY}5HqX}$kLYTKv0@> z6G}0=8u%72Z%|Cqnt_d!FkIRTm--o`H4-;>r{{KC_Yv72#+FeUoxxMqK}pIXZM!l@ zoO-5fpx@=g1m(=Nv^42x7U{f_w%sfmtOH9z>dX~il?ejPDj?t1hJwN(EnZoZ zgHqc5-#`B=*}(XSRp?e?SS4K*!>V*E=Po*pK|5@`Xb=zTOXroOpi34nWgBNnX-9PK z(i2H(S?C}l*9j?<<`K<-l}ZO2LCe~e)@I*MnG?Cvrh zM&B)3XVl;GL2?|dAPR~nig-$pO0qy^8$A4F;9u1)x3T@T`e-Euqh;#nX{VirJtAaW zRD!~yLM&Oj6z84$9qik`pATEo5TQq1bn(S_|KIPhTTG}Q)wOjPKKwcyJaiZ#N_lv7WoWS{wZ0!#6!m0-vGdp&{lSpY`}> zI-aM@2?;E{cx6Kv)ec(}X2R~ANMTyUmMzKj3tqb$95qe6LpjXyT;=;E-3%;L-~_DF z&FL7j|BWYWX}gYW)~O22=6H#Q_WBy>jR&6{6t&`tO-jKE@yYnYUVJe}eTZj$F7;<} z<5Ii~AOpFM&<=Pp)a`$uP8R2Hk1?)>0S9#yW;JeD74X)`SnfTp5h7sLm{zN3ktB6M zr0yv8?AVUxwkQLO!QV2h;@nwaH^-q6W?0~qXCs-pw82X2enD~Z@lv;P;~||_qHc94 z;IaBJLC07r#KKVtUO=+$kU-rkoe}FNpL~Lf_3Keq)(K@@x+7I0Rx_-E+loRx`>f+A zGSo&*6tQ3_?1Y^$G`2QwLH=D2oZ>th&ANbwrk)B|c@Cy2tOYO@<-~g=-N^C$Sw?L^ z#ZylkS17Jgnnu}-L{(KKX&_nY>G=G!6`UL(bE+g|7geg&tJYx1h38?*)*Zw~7h}hc9r$A9N(?&nG?bKeq7vBALkIB1ie)(ef+6VB zw=X{Y;3F!gi#up;YscB&IS*g2UX8k%qZFzrF6)F&UAj>i`?S+eMs;m1c5L4vgS}8! zUxPlq%F!V)6*;+u$d+aTV+W`Zhw>v8Vu>q!ap8r3=&`It1s;h|oF^0!*N`jB67;b+ zpU$6w{#WBeP4)S#jLc6R39hwKZ|u7~ZP#}zoDewUpcPi%=fpR)!XXzm2uyg-hU0M^ zYy^oF+5Ec|m(+U*qVf3XhRh*jGDu_`ph&t0>AC_qLk*Ra*aLMZVqR{@?4I0sJMYsv zvEuOtuj1=18s2TRHQm8saaPZQe2TZ09SCR6UFJ z09|1_@0|0GQ#B2*S4r-KuY2HLR{~MWO4s(Ja;) z@5MjaS5jAy<{V2l-lRK)ZEmvNQd2eE zU%X@~Dk?S*7%uDF9T{19G_1m9bSOZLqPGmHEFm%7xIT3^c;sg?diF6fp<&~}G`K+j z>>EcDFF(3^$hH4bH-i=nyZ{gySI39+AZQB1VGp{;nEvUSiO7ZwHe2=C3QiR$E-pcz ze&wjHu0vjaAu==4v3JiN(n1a$KE!CUxTpxLSFWVsiCodZfdg3OZ)rLFsN3R}iRX%#?Fbawauxs~DVyt-uCFoP$582syM$1uJkW;fX>d-=9kRCao*w&I8 z*140Co?0sBdL?QwltN`mE!vGK9%7jBr`IStp4J+lQJ;|)JcDwT`nsSY#1FWozwQz_ z>c7gx$*AHWEsJQ631qGC7Z_WOHVoo1+>{haEgtDLn30RqXYfc@=~u2W zE1zYJB7vZFsFxd;?ghr&BU*JNYV?9LNr2Y}lG-)VsT!>?tafq#xE`xygslPv^e?Aj z4P*lY!>ZQWdC$%gAl*tjucT`NLZ~N>%ibCFY(7(q?T{)T7xaq< z{M7^!ennuHogv=J7w4Rn0V2!>o2xDx$-J!^3)P~GH?-VP%!4$AU~!98(zuefRbyRb zBHGl5NPRW3vT~4~m4*7o2#Zdlrms^^H3F3D6xFNR>KZge8jzWtiL}%V(mq5;J0(pu zaD@dR8&Zm4a*%|`+!AZCmRF_R$Y+YCKtn@4s;jCvGDcc+qfJqC;9R5x7O*%Hn^Rjw zaVwoP6EVa>r_0VQ&>|D7`JM{9fl>!Ua~6apY6M+SMEz7)-FA~>*{pq_J37}1@KjqR z=CoPBG7F_hTd^pvT{OT6JwnykQKKL$c5qgbVRMFkhS+$RS;ga*0hP!&vOMROnj89{ zMGcOXRYR%{Ax`OuOclc$ZJpGiI|ixyC#anU-BY%{)<9rhn@gxgS&xkM^MiQVA~-D| zn=_>0i=zyN{x0xBe1`H~Z}8zaX;kPPiYmpaKcW7H@sAyQ_AHZ_g=dH6G2}XoXYK{R z;4W-!C^q8}5I@2pJ>}Vk(Y3cetMioekkp|Ag|4NgwWTGZhSfw^nwoUV2Vodqm*Ks% zO)h3HIJ>d}wDZbX0mq|3;QxiO3M)YLQ>71Hjh45FsSvNG<6)%hhE?VUNyNj^EE_hU zsHhAj9lIetBL~uz#i%t=W&aq>`1omyfRy?p-xp#&G`LK&tmCRxDMj)GC4NwbfNlrr zUuSABk+yAqaSoEcl3U8Es((%pdc;!(Eo!p|VW|%9&(c%BSH%_$H)G#@GDkfK^~CXK zSt7aDAUfk=aRRjk&8*Dn=GJa0Gx!$BX<^V?G~Ed*Q$ijDry&UKtFbKDE&6(H2{WuAM4*S?=}&G{gFq+{?a`ua;27dke7$!! zs&Ub>y_iKLA6#cfG5&MR{P0)0auxyGjIMTZYEDlwxP;{aYZq1Q(cvoAyNxI7QMlIy z!b!Eq6t-*ws4+XXnZhp0(>hz~V;L77J^DR~6kyP#VS6)ZLJ5kJwuku)!=@fyf_g4< zQgKj%)2w{oI~CZv#$>OiBqkuzScCn0wxcB$;o!!T1`Xo55xSL}aS0&QsCwk9`%_!; zwK<@bqgf1oAOpZ;>y%lbrb3;xpLoXwoFQ(TES_^{kdk-9#IXRwYw>i+3~P|y1g(oI zi>Nr3+^Q(%3prUlsUCS%aSwuLHDY!hPKM?f8;^vXY;RZ<_a3>#a!6&yl})k@x^=Wl zAIRewx*_Z0t(0_d#1}*36Lb!F*b)>^Y|S(j3ovXos!ofGKiCdu+Z(I`er!~BY;n+S zt2-=pS{hZk?t(_b`kg$aPF3PMnP;%ebBd8h!{#S~gRSq@4HZ0=P^9GB``gLtp51v| z=S>RiKJrR^=!9IK#*MZvou=j5d8RmZ@JwjXO`kMyiuQyozzGgNgBvkg-X(Xe(bN;* zRr+|@L9<-^k3CF}9BIs?{-F?1aQ?Vwwa`dqy0{6x{`|fBF+Si5meCvo&x1WC<&jGk zqar>kbmZBQBE#y`-1g|$pGZRu_U_t-)|LqARs#nP=2{BfitwbsH9>aac&ipdz4JfTPDsMy#X`4QPbi?Q zv+!8+D0re!fX;=|B@X2QHN;Y*OfM><^ z-!rsH~|e!^kcmRl-yrmZ|%@g$D`eEn&MjPt6|8R z6{w>NqpmPzx19MHC+q8@X?na{GBZdcBHu1^<7FSn6P60J?uTO_wIIgRXj<>cB3l+* z^gZ7;x^C>_-lV&il7?{xRw)X{Lb*i67PTomm zwQ=uIvuHXntp4cY!(5AT1)J9E@@sZO8VCX&yN7I`xOZZysr2^quse%iC7jv-U)6|G zeU9^6P1TCdAS^6vlHmo*P#@Ooyjq0TSz$rF#8zC3Q?9cR^3;Qj(6cW0mmS)WoRENM zV=Z>?+Jab9Bg)H_ZY4irSe=dGXOx9FVy(Jn$7lu6utpjD_3YU*F8d6kivJO`{{N<1 z#ZPHft$?s_;pwPPY1OFdSR>2gRYIZ;6O@Rxq$5f@c1KEPF4Clv%cSRAAjGTCeg`e) z!RgWCB+G&%tt}i*riC?m^tRE+QPf;kuUjX~@}H^nByFZvC6;-4x4zl})lU^kSQ2`H+R(VdGxnOCp+6Oh5Vsy1&q)`hc_YA6t zCyj>zq~T;ii>(_6OZi#2vy8&epQ$^m0gXGC-k9N$kO!lI;#82^$Azi9Ase$TDYoB- zK`-$sb5Jny48awSLPzg00@{v1QftAhVwE? zusvyO6Nn$hWeDzs#GtV*<4qteXoeIjb=I~=t(#GwK$vZWL7S~i;NX?|F6veX_6o)t zMXz4HsK+YjR0_1=Og@8l3=?L`DRbIHZ~0K!F!v_YVxtTUm2)HK0Zr7)wz1QoJVi{eoe`=@LpsW6j8q;Ww7525T` z&Y0Ke)D59Tm?F;&)uFCl<`soJQ4f+b z(=(BslgCSt`)#amL~UJdi1*q-&|;d(+IjsYAv2qYvXBQrCL znz%wKl=sQR0TE($b*Z3lLe$QP#XBu6j55C^F6D8(7EIN<+rA2Qjom0~$DOw_D>R{N z=d}*Y-@P!$$6|Cms~Ko;A9kp51%oJ$o);#Hr%y*NQYo{cmJ$X=pew4Fx}VpKOuFjiIQ6O2_@0ms#_ej5rnbnqZ=A|*`* z&c$hP+K6aZkJ0tCDo-HVy}G4z3KfLK24NP6QI(FO%^Npi+op{;xNkq|YHRp8IXT(r+`T)_I_GS3 z@6{W1^)h#=o%g4POV7JZgw4s$K|_5#zS+1D8!Ns><>3RUtE=Tqos{%66c&`CckezZ zA20x=9Xk`_5?n__X0~kEg6&(jvCt;#R9IYqlLnlK6b^+`{Z{#re*L{WcVpYO?KY3T z8AYX~IN`(rTqkib$7+jev=>Cz9Xeq1rcF4w=Kx2_$R^Q-2Vp;G1TExt>8)057wFWb zGdgwc#7(OhWmrY_nLt+m)zLRWcxN`$IH~d1py$Uprl#JZlr}5G9m7dBnL&elEHU>` zEy(f%3ZF&zVe!rkxu=L0eTRi9PsbF3GbJuj*%HW*{vkT`~8TC>kZOXjU;Fx-e;H zrq$P{?}pU_08+B}mpGL!uB*CRHH!-ADWs#<7wj*C$^ve>$sFqU7~Ro6gJXfr7RcvI zK~`U<2VaENn;L4dZ_jqbn(9eE6uOoCG>Ri@kpiw`@*z*20SW6vnr(_fm0^TZZ2pf# ztlA)OkYDav0bxt27q4tQhQ$*h9MBFK%_8akl24a#{B==LDM~warMi`fuh6(s<5f~@ zEwDHira-kVfIU@Bcl3nIurd#_wDn(kcsg#n9g9Brm_zioZeEX?s-uiViJ6KAlQAhN z$>`aqA8xw!N4Q|;bmrJ3_nIUmEXzs^J)lJVR#PveiTzC@~3G}??IL(juQqsKFH7h^5gBL*`wGXpRD z?s>fS^7Gu75@nwCo%1nv>?EY7XYsuqk`uX+f-uz#Vp>`<>S}5*=aCs$ws;XTvoa|3 zqQ$VJkalAuSO|f%wd1<$Zp7_B`x!@1%j*S7VKZBt-iNHGa?~X{w{+9+wjj!--He-# z%Ex2T9(|pxx11)4_~i=>tTF8XRVVYPNco*S;$F2=?1skb?ab}1j z|HGl4dcW>&`4n7;MIUi!#N!|*EjT$O;hC&g`#md-tB078(-u-Q$QBK&Es^)CW1;hK zZ4$fBNJBOD?^aeo-|{|$0_4SlvC5ez`^RD~r?-j52pN^g!Os3x!AsS3#LyRhp)fhfSk+(ZJSNf zYf4E@ra_lK%joHjUAp0+kz;V?Ip?9arj`bpBe1iw@yUlD;Wy9B$F@ydkzbI4l=M_a zi83yin42&W*!~GrRyU$c=VFW=HyOh&y^=Gho_T6M{`vPmBO^T(jg1kUcKTTuJ$^Fs z3yM)M<9Ur7E!X_)uNL4hue^x#j0^||@8nZX!`MlWAS*MEjRb9p35@>DS)1``W4mfY zLp5eho`|KNe1f9VT&{;~DDl9Q5)`{66Lw|TKyw>v8d`AUP2a_X507Wu6m5wjIY}{B zN-~<}YFMSx$b*rqMJH_U^rDz`646lDkTyGZL18nfgqsv15Iey3lv+f& zZ<6y3VlW3xNJb(jN$03r>g00AUr?RFQLoPT6509CEvd*2+(9mE?TzX%* zxq0|%^-9c|F&UdTZbeaXHjW&wLt1(g?iukQe)N-{qq?S!M!?5&%Uy`pL3^`mmr8Zs zBSsGBl}#t*wdbRw8sQKZIU{a%hZzU^I)1jmH^QpLr!RgCcZ&Trk#nC_t<} z4Qp$wX$8d1*)d9q4-@ptsbgVccm!jV11&AB(j8RRsVhoKyCOL)i*ze7uFgl*erc~f zd)}$%m|NH?v)cO{3QOysWwL;JpyI+JY}@<|#*cmwJGX5``G8*NRN4_~8EG6Hy>o}O zlGY%VQ)d%Vd9(^cFB*mkQy!(*OtiTb1^M~xQhH?CMC{nQ3Hb#%I#Rc(5d}qs=+(0) za&q$c&>HINaNyuUY}&LL`FVL5Gj1Y=U3DGm>znY@{CW7-TYqK~fV8!qcG?*jIc6d< za|#q|l_FSD0`l^5@ta>ig}=V~2R34eq~A#=4#t=XQ;?Tmgou#*<)AQp2#L~SOhodp zIogET)2CwjvX7CQlSSHyI1(|^;)&&l<649`smm+?03ZNKL_t*B+uY30y6Woh;>MeA zgP^gZcE#R(M)E>~OQHi3oG?K$3MmXqfv&BUZO##CSde){o-!IfE;yn52rpKe6+||Y z+O#raxTS>!g-9f7>7hh}h8KHuBr=kT3EXSRX(=?^N+4@Ntf`68hE{|&k?Rh;P8L>q z{bCe!kIG?*G}JQ+W7=t{rtCLab8%7&eW zn0uPazJ8H^Ohj@*E1sA$3m-4~2sv5Ve4h+ulznyCmDl0E5hM8i+S+=qtL&MhM=CLQ z)>M4@@y94E%q3Rd&{)swx%19@@cmnVgu|6ptRYAxyhX-ocj!QoBROMSV`fqRF5f=X#{yXa=7=!J# zm4NXba8f0BkJQy-kBnw9jMWV*=~l+_ac8e|w$Pz_@k$M=M6NRa`ai%5kc$(#m0XN( zUfrQu&D5$}Typ>;mau?DRzP9`7K;c=MFq+_b|EVuH9Z@NGF^a`b>p#mw~ZAA0&b#z z7r$0oU@g7mmUp#(8%xsGj)J^=Y+Uyhe)s&d=+vF6e)}Z;^zsX&s0n{~;Gk15Y1*U6%E@Q6E2C_*<5rCX9a%e&oso&g zNIf2%G6^e|EkagyIt|#63x?qKpWeZUG|~_WqI8J@gw&mtSAg`)JROT8a70E9Qj$~9 z+T6;{t(uxj)YsRbwyuuz*0VCwQCw7v;?hpYly0*6I^|f}oF&CVfvns-G9`BH+K%0O z_H(qb9DKRQ?%lg_xS>Q7Ld@3mPC3XK8Cl58$Rsu?Q*8GiI*dqt9hHYfV^-9{L>0_2 zGr`ewa&l;-Ypbhq_-HlhGO=ikhA=lL2c>1DghoV?Q5>6r4BSJ>Nh!LIjX@;uZSA0K z)KciVFc#5;G^G<@*hyL4>cX(yw;Wdq*+ zle=)stv|%kqeqdRnL+K`g^$m}n{WIH85t^CBtKHL5=U|8Pw&AGZv6=kRaW!f1?m#J zF3^Eo*U`!<)YjHA3KZGN-27}h#M=5=v_!QyCk9T6sFLbV9QzPfuUf&tLL%N@-ZKJs z{OlK8Zz;TTD5Tt>M1+YQkd~2-)RZ(d)<;lNTZd>&3fU>h$_KskoboGYeO~m z?%s*k<_7fbD?HXgjEozb8d*>l=pcZVOpT9>9m|d+s1S^m@LnwTpE0cAXqHwrtTyG6 z7ZnT>)V5YdKUK6s!C^o;ucQ-b>5?U61r!z*qqK8xWMs+At5l7K7-`tVP{X=dP_dB| zvbi)pRYR(kWChk)6tR?nBzq*VcysvR0n}6-L7(1zk&~B)>gp;)BF#umO+?4iQvCYa zC-Kq?&m%cm+B}<)mtTy@(`RD934+gbz@FW^F?rHh?A)>$Svk@s+JJuj`(euTS?J!Y z90&Fv)()@aBtG2itZXJId-ur*?H1%07b86_2MgvshJU{CN2F(n@N^T-IP(lV_|Q1E zjy5z!RcNFQC@n3*3%_|9ue|&sGBeW&Bb;luHr^DjVCgBVDKWF!?$NzcUk zb?flayYJwuH7jxS=pmi<+74u7WTU+Q09=06wK(_O^QrDG5QkV}5#p98Ywg!xWA)0< zv1M}wDn&~nDwG*X=abNYR z>TLAx+Yc99d@0U8`y3iWIm8uTt--r*zez@f*pRI391OqVdJG&q7oB(Sx) ztYcS<96bTw8S)(lC4c|RU+~P+kE1mj;Te+%SDtgMS#)s|amSr^;RmEJXUsq3FxHzZI-MV4OkPC6{kRfbg78p;w$ETmXk2R}Tp%RUPTQ+aPp+g6$87v1mJFfsI zpLRNiUUCW2gt;OMA;Q>k(?`4zt|mb`B^7xR!6s4uXMtFXR}qa^TVjpq)2AnStg_bR zv5MU=ZCMXQbYibgT9%C|j3C)JYFL}8@6oH*ap1AiM8;_a966#;08>Opn3}hR!vw8c z#Dy^ei8C>*rpLPYQ+8ezmvlnM&OMMK5vz<^HkN_H0M2joX`RknGhu5jTk3!ib`cp+ zZ-J|}tj4vJrlcYkiJ-Y9%BV!r0y)eb%S!R~Ki|N!PtNDPNNSu{P=pyXA4BiH{TW3s zTl5L$&YsSLEuCTFS$}l<&v5%4cVn-}{YmWXvWD~`ZAeZ{=KYE>N=lG|RxTFKn}aw0 z@)|NSQW%BGhMzTiKC)Wm6c%Oyjl45b59{HH5E)Zef@m=h|HaPpZh%L?6ddUYp?YR zE}cJx8Y%syB$cKBfbh^jlokUqbz?B{`H6V+@jfWbE8yXKBP$c{z4I1+|8*-$36WGY z`;_1H5As7vp#$O35r~UVMXyI6N69}K`IcWcW6j4O;M|#$sIDqUaZ!owsK774kIgH= zlIz!vM&H51@pRw52nr6SD%i60G@L$u7QO*qTpPol8-+3BCm}B{pX0z`q2XBd%FB4? z^|u5(ffTJ>yWER8sc8t0h(d8msX5VI4OY3AKAv9ibgRa~v?Tnp>1PB53ltz_vt~%r z02V0Z?vD3ietJ5tUcQXD8Iy7O;zjuT`J$w>n88)57NHBdd3a#t=!tlGz%XRxfs0L+oBTQFQesA;U&CFP14Ug3~Kx6|I zU!|Cefaa#jz(Sv0V#`}J1RgWyX>D?a3Z<}w@=5K1K(Pv=Wl8#s8QWCNSRf)Y60faT zif_LBlxByr2=2J+F3d@t&(he(%M)LG_90fk^(wUyn|WCB{yc;{JrNWbf>&N%im$);2!2xbR9EAsR<~i~m85D+L- zu4;7c`XB}jc?Q*P@*S%A{HiO2R#@vdcF#e(ES96q!U;o&0WT|w-)ZfqTvkeQj8 z497-z#iI(%cdSVdK~%=7|QP=tP?R>)F2^n zh@y+Wa=8BE5Hv3-0h>4dj6fr3E~A!`9iBaN9^T|{d*c4C-B47Jj~##h&bN`nph?pv z5PG9DRhdmy%jZr&zX3y#Us#N=kT87n)#rHq)tC6p`~!TLjRuE?F`yRY=QDFHbvWSf zAB+i;rs3)S{gIV%38~5P*t}^ABBH|#FIB~_CD0e1K4tEq3mZR^0!5BSu0-IIx>^E)Ph=mL0A}6;Hb?bz& zx)tjaS?-dM6c&`AakHC{nzjV>8#O^uae+3ooo1b`2{l%o5tc#?tmPG@ zXwjlMZfo0y#5fUqm!63{E6W0~%{^x$t4i=?zV7A{AF#?5gfE1UO1PguooSfz*)f&uo0 z#u6A9gqN2u!Po0Pfxn+*=U&Vb-92S-dh`3JV!qOM%FBvL7n24^NpUIe=+Fs?NomAZ z9hH@)TF}OfHfNRpC^%N`Kk8JA=B41Toqr%aEKtQ~+&$sr_aDfN zR9e3P`i7&js@;@^p6U)=n@%!(;s&ODZFlflL7&`PB zDt7(;`!>A1Je_iga-fP3#?Zlo(W3Ru_inOR@9M->`hiLX?yg5o!nt zi^P;EvvF6aj%2F*{_AF}Se8z$TKRbk2IeF*Xw;nV$u2x06{VvP`>v`Y7VPa+gVe-$ z{JL!`yY7zC5{w)@5;xs+6A}~W5E7Eco(PRoz0BR62f@Jp1MyJL9$2(^Ax@q?g`mJd z)Kt4;#K>`Ys^36<-kDR!v2cD0PMtW0z#xCFqb^;#px2|1@IBY9{Q_IJZsis%C@5xT zoH93!>vGSoKXB;Ker(^i71=r2Tu+h|+;ZEkXy3ja;O2!^x3r}NP<53XKKkGteE#YC zdT_YausrVbgir~a;_#uv`1aeck)4%I*dRQ*4yH{@K)c)TKv1wh)_(FK-gs>#1F3w! z*g7$|r_;U6;N?DvA6s~MEbhI(8~lSpd5Dv>;^b88*0LTF!J1tgaK){XGMOQDK zAr#Q8c{8+aD?C=M(sZQNuuVv9b0vWcwpG&bt3XACz+y7eT8^lwnEwU}_@4s;8dwEm z6+sp49NW}dgR6)f*e`7wR}wG`-AYd9ZQC~E`0*2nju9xJ5v^G$!XhSjhM%Y)yJox$ zSQN^rCCO_zdlFV8i;!NK2lB-Me-mEHr=(#Imw76cv`DvRr9FKE9sB zb-mp@F?`fB>;@MVI{3NLq)LvD!;!-W;O(OrW7@)WJlNwAT+O(K=%`5i^y806O`Od@ zArvB^4JD_{N9#82a5dv97S2n?uAP4%DA1oKic_c0#3PSA2}flOe7(H!%a0qFW#$)% z?yLto-~S*cPMnPTjT+(SpMSv0Ws8xYCmXc_?b^4)@)fUB*!xD-4Q98iKMWJt3ypi z8I~@ckKcd$6@J7u-SAZ3fm{dj-6W`P-0+oC5BSNx{V`(n1U4WgE90T)oS6_>lQgfy zWy1>|)#aF*oPeD>{^S~v06KWcP)wfkB9<>(f-lysg^#yCD<0twOB1kN``fYd<(0_D zxQ6lL$B~I6Sh*;VjUGK7PYxK$Z0@5E-o<*3_vl9Rc9M}F z(lD)-W}zD@N{eyj(ixPL6jCdoUE4N{PXcE!PDzZgd|oH@O5>EZW)W6^1XgL>iVvMM zSrz*FUsSjHH{GffSy?xD0TNhkqlxDQ)vY9BHGc6158?EOQR=qh*m8;r-6|%w0b=Vl zfv1;0JdIkGV1CYVD?2u0rnu}){o+4;1Fyz=iXtNe2?lvDMA3 z@#6G2+ly+B{Mf)+oHieOcJCnOEF$C6rpKfGU3YUDFFGm$>(+k4 ztV$k?9C&U1$#$16e+6X~<(N8YJexw26vV{V!Gss5;jWIIQCL{a=OY5`mV>O^S()mQ zs?GzbD#yaPbFlNzKj7o%M~YwHeglx0oPrDI&mn!$eEjjpZ)7b9jv5sci)qv2(7X3z z`0m>cSdf;AoE(9hyx`⋙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

+5m@#h2r4;y_lDpgeUqujp5IZq%>e) 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

qix)Hwe_`9EJ{r@8)*hX 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 z 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°)TEcP)1BZbKm8=X*n%R?_{_;X}YlqpBV5 za&)H$aLFZS;exBr!|Dy6p{;8-CQcg6_OmVU+Fb$AN z=CJhnWw2))IPti7c&Q)_Yg%@?BJ7)D2D2db(f7}MN@+z9z^rqu^D4=LWLx<5)$CcLaH!GNqC zB`;IDQd-7=P!NgUG~RyYeGK$RG2^f)m~rqF48@1Ic}5StRP2ig)Htn`Zbj2|Uv(Yo zgUe{pP~v@)nPvLK>#jgPRlpN}dKM$eavXX1QF!L@7x3;I@51Bsi_Uy_7(?+G7A^b< ze!A#3)}m8EO9K|u8$`u$nk)co1;0{oEY*`*zi;J6_1CRm+dH-2yOE-r3qTME}+k1a#p!OR50syrPITmxs-+i&tNAgMbOFH1moY1Y{voIw8XZ zg}0(qh(T7RNLEOY8@u;8W~~;Q57qP$u>OWlC9I&Szb_t@Qsm)?Ls#eTk0@sd>uAz-HgTwwYct%D-fviAr_CT+2>MRl1->97gjlzh@)B4sV>SWgr`Y`9jSvdKe;{kh~U7Cz8Amwaiv?5!k)0#Ld2N74x)w}XD zQDtyW_tiWvzHiJsmNCEA>TAJck3NmXH{OGEEDw*1?v3L1to0JLNa**S9v2s_v{{DQ zN%CoxNevxBEFT&fMlk3{zAS^t((;Qqyb##>81=BPT-#YdrqPr{Q<| z*!!1&X)qqcowwbNTW(p%z?x2{`1WyItI9N)av@to?H(mJSjnG+&CqFfsV9ftGuEI) zgPT>lW&OU@i(+4U*@_$bz3F!d2#Y8OO)IK3V~v2hBB2ITD!4UjBw03LAp;g_$&O78P{BM zEjruU;0^lOFMu9&BAMV3yL8+T&q@(pHlKz+Pyx5kfsWV^<{p0_u3mH*vi4yl(@CYM zpoO6nz$z+dI4hw)_%0fpokXB?$PgP^Q&oq}t9Rg6H{XXXpY4=8696um|1F$z$v4m+ z8{h~=#(fhO3(a80zs1f~`eYP?W!34V*hjuLMV#^fh-0KKmrNFJmk-Ugjd<;;cX9U( z|AT0M0s(K(v@lfhqAEr3h6slI2nK^3ZKP5eQ1@RlnUXnLD$^hyF%%3TmWU&rN+J;S zqhQORVPZ9|SadPqwz1u1$R9v+OB2%h41=qNQdP$B zT)0`>5}yV$dbQgeNDL(q8;YT(x*DS!N8{ex|BT1~_#AwW3OLHiz&nqjL;|-jx(y2# z{sdj!oyerqhH(o;tJ*YM2OdH$QD7oP#?q*BU%`jIXI2h%Utbd(kQ81rI_c{dkS{KL zSrSnLOs(&24U+VGSsN3y^2d0dmMoJ1nk*H`sD?(86BQtGt1lT?W3d=IIy?CqDGDRc z0Fw&PGq1=ohkPStbgl8HsGr-6T1!(7>jTsZBvajQei%vsZZ#zF|x=x-grER428xHGUXdOA~-XYa_BibQO>xj5- zsA|A}9(@_V`PoD8+nn(FeCX`z$BfzIaoYn6Q0{Y}Z(sm+0(@2=m;qane}HaQ(9yp| z#>P)t`v+(MQdM<&X0(wV4iB2@8u9*;6}an~-=V)}0Df=4*i1|#@q1I@rwsmpA6{Pt zqC-*U!zk+Z_}m!i8$vvmkZSpGfm?^Gt0SNq0CgA<7#D0=w9aV4_is8My#qa1wQ?1j zMm6H7xknH{ZN!H9nnt|% z_)^?+#{($K0wG@*-Ms@CKXVioKXeN`RZa{=qeg^mtZ~)JChJ_QHH3RL+B4Mn6+<}9 z-n5!?C63&VWHgDPfgywfRT$GU8vnfa8QlNtf1twVhSTBVh&7Rj;kMgu$IZ9=7+sxR z$}~y1be3JI;gPy)QXd*$M5X<|0j=I~dX$hgThzcxONM}y_8T4Qx&>DQxfKlmH_*23 z-{Nd^Z)!}oKOOc`7h;)co+b(8miIgW1zliSn z)Yn;;(SmAjTb;7+eHxjBxfNjL@0OlqEfiN)Y?^fx$kifuOMGmk4LbUhNYwgZtcyxh z82U395vwv-CSa|pt;P$_J&)_IyADG`gNQ_GkW9o`HKE0a6baA>64n?d6L5K*@C7{R zkM-cllV{@xH+>H&q>;`^sw%%Y0y}{enck4j)#*?gSDJ1r^LjYSQN7;6GxuBm8dRAJE^OMkwgPU_6C6^Jd`2yMKsb7cdwd5}#O0+C?!KM^^`4eD(#58ql7zP}>G{OUbF`6E7l<1;xOLcqmWoq=;NJ_9|m0UnLQF(6g? z)p9H^BVS_|>zhdpLWiiN;lrG&lN6{>$nXKlnE?C33LV6NSfJsH<;bM6$Y+KT3Ra=H zz6no1`~v=P=Yz;40JqD{(I_1{ciwp?Zn@D-j5L5zkPh7*$0>O}|QN=d!y|$lCDw3va+}bK^VT{tiBUXAN$; z>Sq|}8(@BtfR+0LRHRIsoWPtYfT6)bBvNT%$JK`lh5YdPy@*HS80;T_%k4xYQiXUj z$wGJm)*PDmtHu09KS1-?QP{eD3v&6a6z~Y^^9BB#!B7?QX&csjx*qFRZARPn-AKig z++FCba3UB9fYb)fW1BHyatnMR4`S&d8TUe3T~#2AgsRcCs}HaIXBoOXx-sMMDVTfG zY$Vd+eaalRijfKIg1!)Jc^mq=2hi5mg=jRvJiNQY4WG}6+PW%)t3#Z|N8?fCa~Ubd zunbyM8Z>9kTNtywQ>`M)vS`S(r6j`H3m8cj2fKUlmhC^jlhCt6s^Q3^GBkfGI&(eg|UX2Jkj z^%c!2m44lfpta;?AN;0jX|1ZP#4E49jGrv}DcalH85nasa>5){L!ZOvrJ`0Dy8C-^ z#MPd);6j|JCZz#0yPFybs=)btu$ee0!YXsyS<&>%;OBCnyjV{Z6; zA#7Q{3(KB=4_nu7hu`f-QzI2GYT)-(Ad^p{yQdoi{rw0ALx|K=p?+)x<7PB+(J!4P zz?XGP&(rJm!sqsKW|l2vF*q3IUVT}dHk8B8TrhIwSoQIGtod{uQqdHgP9I!OWgK4) zB-1hEkwJA`0Q=9}57TB$#bCT2ef_;k$13khhhd;1h)i!9cVB-WKKpDFrnXMPKyMW7 zd)ncz@F}`Pfc4J17UTLGZ{)0#xJ8*!N3F&}A+h9K%N8s}$>L1T!n`ZXKmEXq_)em+ z)U;yr>)NzMk?_X*eQ^}5Cm8UNuSU;U0d`*?FR_uiU+G_3A)wbL{hu0DOdTsJWgK5k z#2Smm`Lv^prYK5utip{@WX7&J)JLr=kF@4m^1!>SMCA>@dqP>e&)>b;*8KaU{b;@$_s=69WmoCM1*ItM1+qc8-_ajFd zUy4#yB%B?|@&+bSeJB~jCD(ilSN`-u^hW#8A00rFqCz(6wZrcZW6!o;Y+th*9h>`* zN#xPm(u!~>%sA9H7y~upIXpIGY*ECr1E{SHV&Z;dP*v?mJR9SRyE>!UBbGpiQoiWm zAkwLXbWSPZyT|Q^%kIS+FTRJR&%O=Eh#OO;?2j?c;}8nhu(?W>+>+8%h>Ihcj-oHt z2A6LbhaPnxCQccLzQHae^9fE}>AlI1)^88vw>LkC7ytg6a52L~C3&Sd!YQNb<>o?| z4VjT)gexjgSs4apNd$_NuAAFY9(X7egwN;U!W(hP$#@d6WE>#^R#zS^GwN~W!V3|p ztHeNT&^T1xP9J>EFy4IiL%j6lt0>DkF=x)vm^@)RhEv1HWrvy5r6GvZrcLJIh)bSb zf@RB=!R2${__L41^f_ZO;>_~FB+@cvU8nA+438XvLuCPF!%l?#)#&ez;*FQzMcdXc z)K!f_b!9y~ZlXg(>g9CX;i_{;!rQ4}HxFzW)C0I9A!$oKT`Gvy$kj`iW` zG<9By%NN~?mKJGgwPwgAZ?(^V{-0V}tsJZPv68!$T(r35kl}BlG{_@K&W5N6d*u8rOc=5^CFm}{< z%sci}ILrOmwQU!ou{d*~6e&-fJRTQ*?|i)W@+-J=@nY=UwG*vlTJhb>&qZjo6OM2J zF25bwf>0HDoD4@pN;^!EQaQ>|8E8QJ_Fg>y#A~o+%5mWSvyhJ2uw(l!#Nr8LGjva> zLT-c8?n1CCh=$SCu=|Fwr+XV($2Q{BlTScAKZMQg8!&8>QS%{h5ZV3$esSF&@$uWA zA>EYtO_PSIk3qUk|c{VeWIU3e{l!>aBR@Z_gvyTfkwnjz-&- zHhlcSM;x`Bbka$<`>wn3($cr_{E}B-ce+{VTwPy@iTjO4xj%=2*e*<*+Jw61Ds=UB zB0oYKR~0{K6t>btQL)73^uUb(o_X|TmSr7t+#^+bH0Vle~0l= zl(%}#8s^}pPMv}?&-*6U@A?dmP!4lXI|9jc9LWqt>B2A5Clg?$6;*~RUoB$2IXwCB zv#1T#qoH~X)~(%wuC5+FVCmknF^n=kmr+O5NK%HQk2?Yf95xlpKYbseS}&#?JQj)k zATqfaH<5&WVI;aU_~mu?Va11Q5%dO)178<=XpIsTaNC`CaPf+$fHWOc3V?Y$JvS;y z|G8{G}p0aW3p4@&4yE;;%`)6F!- zFPopm`0N_6xO&JFS@-5$6<=+=U#3}wagypvzMjqg#ghrFFJuC&6rqYwRg>V>zf=0) zNp#QG$3593`nPe!O6lU&S6_`?yLK@ZKs=Z@`Y0GtBI`Uw`NJ7}cm5eT^YRnX8|&u> z91hi>w|x+Q`Q6`9NC79zJp~gd%*4BIzKd61c#-Yj2(T}^>~b7@@L_oJnP)LDl;i?L ze}6AL6?V)%=3qF2S@aL>!XdNwgFOKB40K7v%vBIU}f#Ep@J7QVtbWg?%*w2{49Mcwq^{3|1jEIE+8t^Eez?53arPdhFTRiTB=J&i(avmy26{ z>Cl;X;_;Ze-&EZClSO#$`R91eS4AQ??)c*{Y&mkWLW*>MImM(iA9i8o{sHjkrVdb83#zzVdvYhm|(bzl+ zhs~aaOe%#BKY9<7_aBc#j-7$N{BC4zF{HB@guEf7yK`8);6AMS=yPr%)Y-q)7N0(vhM6`m{(b(#{? zd#E(Uw+2?lG@J%V6B~58uOn3JOf2jEHj3KhtY(>iWd&Ed2RsBdpGP)JssIO?zd9W& zajc?aB|3mkae659aOk9^$W?B%=u3qV7Z*@H*V_te5@AY2C^xtWN6mu0YO^clL*@7N zd~;m@G5Jq3D6)X1Afi$I+?zv^(^E@8^ogezfR&CQN`S`FP$XGXTZ?6{y^i_UT!Y;T zSb6pkMKEj>sZ)KTNGM{>*b$H@W|G@`KSKxwgUxZovAAvNt zx7zXBU;YYfSFh$u?*RuMh?{S^8K10Jh4+`QfZge32~=#b7m?~PPWi^Mh~~PG!w{w) zIssin9Z00(D7Vw-UlkqXMo=BDLD!Bb9{r!EaQMu**niqAy!y&gM59SK2~>@79pd>( z8=nA#n?Z~8v3%)8F4xBTY!KU2lgx^((dv1CVFa3Qfe4c=S zh%){#gy?ECj%bN=)GFh=$#a!Nz~zcFFim3QFclS#SPBv{hr$62J9C&yzs7TZ!TGmca|*21!rH3Dt`@@zPb$M<>b00zQUxzo^{{>IQ`U<@y7=r#=U>|1Ix;2 zV#Z;IAC5Uk9*eH-9^~?AB!;^YYAnOiryRnROEME@IMo7vGI6O3H)8plpW}nqR^Y_L zPsXP8+pzlcweWa-GLnaicQo3FBtN+v+%6Y$$C0WKs|2?1*p5w`HX@mb;rNq|!}*t< zg`8&)$+AAA3n|tC$9Jc2_qBh(>J^(1^aoVLDjQ1_a00Bi-+sGL0VKD|P=kQbc5H}k zaki2@qm4|o{7U|?JKNe z07Db04{7ru<%)Y@7P6zI8^#) zb|jArt~v#0UU4e=qC*IHE788K6Mwqr@0dREAbjV{i}26K{)LX7UR-m{0(|nxhj{Q0 ze_&uEvyYo@z8S5pt@!I>Pa>7KAx}k@bOQ1C01iKFCgz@WI96?4j+#+^gd2V6?(Yz# zfEpi8TwWwlk7xe!B6_yP@V#>`!}8^yV#9_lOb_t&(xz7%U%F(<_&_BEM4&Q=Krn#X zx?2AH8#k>-N7qiwop&&%A2A8*cC3QkX+yArfK?(^A5#IM*EB|n5T~YW(4-NWWI}fC z{}(BYx@KcMtVFpoZBqyi#lG{V30DO%Lcltw6<032m|da>ob7ox{_@)=Q0E(s?|kb* zy#Cr7Y?ecXG>)S4S&Sb$24|e{b*x;q3b!m;gtnb~*b!^|#ECfa=&zxFD1{B{*TV1f zV$6g(l>1{i?3ihAMeOJqB8|5g`Ovx{xmv|Y5dVDWKd3+@Dl2NSa^)IwHsFkbewL+* zJQl=;a43Mfx_UN9*|d2R+IF|Gu%8OW1OV05Rk-1X`8fEvY1rJi1_S9%1bqSYZH?mR z*Zv;s*KFf|vs;+T2z1auh38+~eHX5~{st*t8D0T2=|dT@sEE~?x?8!>eNk`LpB3D* zMn-#&QP~$bl?F=`h3d9wT`SQ;H}!jnHdTSY!T_#&Sj@Dgjv}YD4&Ka}brb~3NEX4b zJV=ZFm9(^S=T(Opv9iagUCXU>@roR-_~WVBS8^*$AAr8W*3e%TrEqs5RSL$|$|pTAj=qgi8FFgU!e6%RO)R)(0jmOP zY9dN-ElIeH))4b=^K8Pe001BWNkl!H1u$fy3qD z4yR;n03J^{PCfl3pdy7hdNApLX7t6oSs2a>d3YEBUl57D9RB{t|KPw0hhu!pbiDfV zYltOM3^ugc*=(@93_dTlmIgQ~uZcupcas&{2)1n9jFl@s#isQe(7tC6JZ={*zUo4p zap|ep*s%&D_8h_$Vf@d{58>HIUzXyPjS2^*cG3`utA|1~f#2&xWpx$$disz|sB2dC z+9E+#@;we#G|e&s8XHtu6-L3C#eRpk;zze$f?+$^=eg0otrt%`yadM_d?H$^$Kt(r zK48@XWdoEFh5|mEbN07*R@t>T+<^B#cwe%JNCYRGI1hH04;waZLN=3x!)3?Vam^TZ z4Px?vqcC>=QE2aLlb~XR+KGYcKn-?p>BTEgy^E%BD|$Pl=;`j|U_^r|jnoPFd}wT_ zMScX>xM?G{ZQF`;GQp`SJ!kqu9D2Faj+0M29!H#X5Q2?PB+w6!rwm=22XNQ54`Acx z+qpZ9$zoM~k_fPXSSpEM+_@OnUUw}YCMK|ol1EFF^ggmuW7fS=3XJ;-R3wtr`^+@A z)~~5ElG0j>4vMs(pMX>LCwWhpDh2tzrtnNffW{ar2dlwV(;P+335BdsOx)T!tbn!o z%U1=&<8cO7x=5?L6`e5Jghlw)Qo(WY{3?^nu}ldqDj1nY$HvW9SZExG#$UAgt%Y?n zXa!vav$TAw7^gI%H40hkb#?mxMG>w%S(V*$B_FJRT>AR!Sh(=V=qK%Cz%N2<_D_() z0KFdRQwN6z(H|Ye#n*ll^S(Qmqe4fS5BLA_Q4Dsb@uMHyfaULej1P$ab5~%-0n>2l z4==^Po_qq2{^`#gwN^(W_{H6eQCr`Hd+&c3S#s?!0BN!xObz0oLl3~D8LimUzX`3= z8US|=iR6%sY8e6QtLw4qqm5Yl%=1%19M_6@CQ#evZ!E9uH4a zjm8GBW7{^Y+prE@-Cc+d4Y1`JMX^NwQ=k5^^NztcE<72@@?Inh1Msn zc;d-_@-v|huw#y%iz!oPV$J$>=pX1+ODB)k@ncZtO{1o@0y7Suh=GLYL)nVZW@oD5 z-PcxN^C!E}T0aFF)^1ZpBcXz*h*=$}Mn#1SJ9h8H*3DbFyNke-qID@6iAf3t4K3rx zVCt-i7;z^s>+nfv9AAwQTOJ+jx^efl4`I{#9SC>>hD*QZLFv5+Sns~`F766scPnUY9GP+1b-!pAD&7i9^nBlF+ zw5|%8EK&t46`?(qORvQQQ*%U<39LlHSbqw;_%ZCKq{R_yg!ZK zFMb#`q0#v6w=ctUPcOl`wHx7dx)BZsaoJ@Tqp7(O^RK!JTenEmdirUn;AV$nGKfgp3Ssb~_teZA<|vj?3Wd(hL=n50Cx5}ye_etKPe4%tq8pUDo_X(S4Uj&wD(FX5btU?`d(qe5 zX9<)ff-CZArM6jH8JtvIFS8+1Q;89G7E=!yi>nu1f-taP3?(}uRX_}P-n|&tU3WdYyL*tyq?9zWc(O7_hqhtlD10`85T!F#<~*e?|7N6F z47k>8kk8B#&*kEXRXb-1C#=Uw^3PB!FFE|{`BfTljm%SaJ-c)1qNq^>)gzj8{Y6K* zs^Fd_DnJ55hr@~H(f>b)SovgCeyqAdK%atQ<{&W0H`F-wN-K{lOxerM&n!S0Cy~l7 zgfFqq%+mT(sa~6zp}Apo1ZquXN>4cbpi5H}^XqZ}*5A_$#wcFB{yOGgJ)czpKEID6 zORj)Z3nGVTS=K3LlNrDT-16%mV)ncl7_r&W(>8$L-ti!&jGc+&=FG!0&%A(+j$Sy+ zom>(*c=jxO|I&-_$e;db*BQL>Q zL2@A3D5}J1Y!7uDax~}jd0A>j2R5a_lKvZy)+lgM%P*OA)9aDWI+;nLuC^8@qgLu??4F`P*yo{wtqhYST=(?LOoSBgmwZm^5JwF8=<-So`@p%wMnoTefcD zgQvE>9;coDP1qe3ShIFL(&>bXtVNwLZt^(5mth6Q>|>@No{O?1j4sY)wH|vaCDG{ChD^TXc3B>I0E(DfnhxtKRb#{?ur(l|w>L zRMue5*Jn{3S#iM{Q0aoRP=VwjKwwHHELqmDvKquGQ(C{Wh?R+Xw;L{(OO0mHEv@pP z#4Sg~Y3h`c2V{oi8j#EzTRdoRUy-hWBXO|$fe1*;&C;i(S!B|jj(*6c<_`Md=xea@ zO4b(FqTg3N?TnEMw`md5Ytu-FH{W`bfpy1@9qi6Tpd_4=$X4igC;FGOW!2sd1RJ-02A z9O;ZR&cLEYx8g64K90BES&j-{hznSex&X#bYDB&wil*^l)HDS#7##pfy=a6<*jJ6M zpLO8lW$Q558As>tE_8Qvam2{I^mYeV%PB2oHGtCmN#rriLnT91RV*_b-7*>zrj2K# z?loIip}l7dPB`rd_`($+3GIV-JcfTh^gO)8vGRCn>GUa8fzYF*Dy`S&MMFaaHwX}s zV|U7|q7hnHH0gn>*22}2c?qSlZEbtlSh}I19yWIYV-Bdrf<>1C?lO$zZCJH@6W)CG zQ%r7{fuOI7jY(=FL0t6R^AQMy@PjL_!qV55a$(8s@#5rDPebdt$yl{|Ee3jfh5BI& z#{%nj$4zNLe54P-`f?m{)KtV$QEvL6Ly(GZK~E)?Jh2QLKW@h%`yIt@UhCJb>PJ?l)a=@F^OcLxzPKZ{ zH)F>fo!+aNNbIW#ky|ZYhHI{wkDWVr!e<3ml3ek$PQXEv0Y(Z)6|y+({3CGYrKg~> zDuUk5A^d*vUrUX4{fj%k8XKE% z-|z2*&+Ee-cTv=8=izaY>IyVXtV7Nf#n`De2sii;jSexm6RJyfE8qVd zYgT-Ybc$Lu$z8b&!&EU^DGKF1jdw70*eM^KJ z6de8>jy~Zq4BK*W+ueBdH~+$)fAa(bD-XuDHcjwDws5S4Jaepdb#>_O=|Oi_FICWZ zh7|oAHwlocf(T^-S{i3+cf#Xv@;a+;s)fxxjK-;zxaOyq!R>dj#4PN58P`+0|{w@ZXt`x znlPHj)}w83BgXGvkLj}}Vkj}hdw_nHK4Umo&BoX7JiiiiXV1fyja%^H`|ooWL%?f* z0MCgV=ITEwOB$M*;r03u9g1OKs2|x(nmN&y38OJ-Rx7$=+c0%T3&u}v0nK^bzN#I+ zxc)(G-LOjmt4gO8_z+;mV=?^Vm%qSu*Dl}&0RmRhdP?RXv+DHVPIEuVwpFRNWe=Ia zYo_?>r(}N@SuIPLB7ClBr%MAXtK`zUS9LIC-E-Q-P0xN)A)KYHRq#fSb}_O_OFYK4 zAZj-!qido9vbnF8V=Xeewom~k$0~e`9&<~7w*qT%F-UWv#RPU~s{KXLZE2cfzP3ch zrIdmBkaVPLMoh+Qsg4=V!CE6~vDK4BDCE0vLG=0P=OZ=Mcw^ZzTr>X~X%L{|6`NdW z-betMs?fBNXnN?mSIomVFFl#Tj{5ZPUHoSZb!Tws0Y_rvx^3v|9MC;Rya|FqAI`hr zTvUdF`03AXWB!x0k7u8A7H+=rCfs-bLwNgx58)?ZY7D_&>wztp#{LJl!d_8^crvC( zCb9AK(4GX^*7jrD>UOO9cn$jc`b{p(1_smGnrbwR8ijG=#-p)m6!)Q%F-m_=KR1lf z$nU=1Zg#t$a?m9BYHX-!_Tr#9(|Bl|-y6gOcRr4P-1i^&Dnfj(q&J;oAB&rkq>Sl& z9yQ@0>Khx-v8SCmK{#DJ>5A{4%1|UAqr+1uC(W-nk7;JPRcMqG*WG>vg0()R;wcPg z9eC=`FCn@ok15SlF>%~D%$a={-h2N;)~ojR^>JI{q)Ah7-0}0!(LI12JGL7ggffO& zw60@Xn_v%&pewcwN6njwNK=TtU`2;3`bxh$gq|HSy!YZ7Y+1b%XR{nh(fX9O zQ}PFJBNPgwrnUjWV3@57siiiNO0dd-?h&1J`yV_V?z(dH#dqS^6AweU+RM>(`|2Jn zzWxDh*{~Bqf5?1(nhIb)+$`?8>n=X@sdz;kzg&aKu^Pvl+B>>dq&4O`!?Q+!*4bEA z`4dxrY7j3+j>L-7KH(=Qz+FnYSpnP{G)bmv>_mg6(64I}enxCo^cSWCq%*((bk3^t z!)!j!z7E+u%3ThO9y1z|%E(@H-@aej{ObQn$EsBUv?F+e0H3-NwMlaTRlsGV@Srj^ z%DU(TqKdE@kVcUwrS|gRtfyqDwzW9o6wX!&pq1HzXd3kcD*;v&9T69&e^-0~)Z#8O zZ4j`vf-pZ6%Ly!FbhTHibj;9eN2+V^I<>T3qkxr6Sa@8B0EjmIC2omMT>@5W5IF0K zQxHp~P+3{amGjr1eIExObOaIu1$6A{#0ZVLr%%T+uL5QsI1}eza4!D#=wtZLGtY3L zslL7*|MS~>cv#_WKf41pjkTCOV+jgt1dbv6(kDA^gw6NAT1`&%x)bfLY$v@x3 zVKe4n!If8|v%MR4{(Ldkty|A)s5$0C)9BT(VPu9Y3QbHRPs zxwYK@Rvs0u=|?r}^Jlj&#GN*YCA+N+`?R=~s2rS$V#3ss_N)%(nvh3fsO zJU6Tc_v-NDZaI~;()QN{WX+FiI!`dctgo2uuCymbr)mY|;y}$hfK=^u4dAL^t%(cn znB>tcIqq~Lrz_%ETgJ4Yva<5a2G%6n+xIYdT8*yh!;0ieNjL~xhpF4hg6QgI>Fz62 zxT{TQ%~MQQ4~rvGwUPAfCv}500Gg&MGSE;?SMzk#r>zk4mLITqN6Jqdzi6at%;+fq zXA>g^))Gyu&4zHK5^pShopr3tu~LHotFOi6f+9<9sL18Gx10dv>>r$j^A>y){oEiB zM921C-23x~5p>s}b<|Ys-o6KkD7obmUnG1|C=|fi-#&{s-miZBD<17k*Ld!?zm2PZ zbQOMn_s`Ln7(m0=TJ$D%;;^~PFN04+GmJ_;B!ZZw9nJ!l`?jFZkf9AhUpvr)Ly_c4_S#WY`Wup<%d7Zi~dx2v!5i$Iv~Ew$lig=3|Ij)8S_3o0XD zGO*InxjlObSha1SRTV(QyO8f}(4pGp_LZ)i56gUbaU=({CPWBL`k2KKVhgdp=Z(VW{F1YSY^u-3bl3N+9#*>dci&y{kHl|OW#T#?i z_Fc$ji2HLgz>_)0p@$xVBaWJbzx?ITSn=s6{2pV*jKM?q--l#2je8#aE&9`YFn!K= z%sKX8?%<(&N{hy2ccCzxM^8^5AAU{Mqw(_7ud_k&l*tDn5~#zDt-D29MS4^6lvT#z zy4Yd#Sd()Wz!h?5s2s6;C+3|w7vuLE%NBwJkoA>yxOdT?@%SGoVy%+q3i6e(Dtff} z4J(DTwUTx_RT+eCeKrhS#6y&zm3UX$m{f)#&2PbxLwvXwH~;b~G>oZ6XJI`VXUy8JV|`pQd8&rr+i>^VmYuezs$tMxLNlI^%SZLh2*uh$&f2ex76 zoN<_S)C{DDlWf{T6SX_`^t0)BRc#3IWE8`>5!kYBEMK|?uRZ-1`!GysorprghMq2R z;}Xj{GMv_vHYDXE-j6h~IgFb=4wZF5tlhj4lMigh>1Q90R3V8(DupqPqpd?w>A^vOO+LW{tliz+QoN!_m7-^({vj%SZA2vdv^Z@q-n(XIr+q>6 zp0VzoV&^GytPq2<3Lz!fQPTxfaHFXTE09_%{nqwZ>)zd)Mkuxo)L?IPUgcy;D^2ET z9z6z;FCAD_gFv38ARgB0QN@@RgyvWYSOvT!e$bnzv>0R-sI(MA3zAL7#30DI?LvpY zW)aFb4K>%M7KpYQ(~C=HYATB=I?=S&wWO$J1@2-HHzQwqXw0vci61PbC&T25Iy{0% zO)cJh^Br7u<(1gITZ&g)aV2n7?Iv!g6M>K)*>nb71HCx?yT{_9o6f;tI?kpi0bdBI zSPp;unuo!att<8=5Cq;jD|k0h@!W&Lar;Ls!s3rC)CIQoYA z*ks02;YDqz4)-p62>-aBfHfk*cdhT$5+6nH7_}0%SRCdekjvwe^jXb+;+4fCRcvs& zU0m3q1AvA!W`~C{`-nqOC{Lj)wi`eG_0?#Z(8O9%3OmbeG}gwBO&@K?j#ZuLZW}~@ zcRykAJs9ea z;j!O6h1DOdM@7hsW4}2EXI^v?66qA|BX%VEbNI)@&!TJBAf`_}5M4WZv2pztuHMsu zNuICVxIv$d=iF!Eay!u6(hP5v3!8R+&QpBPzVHAQQl+CHI4Y}_4T;>#s|>e zF^G`Yr-B#OHq!+K;M{z+M-3Wj7qTDzO9(W>rlDwa)I_lOm6jf_(V zGpyo}i4szPmXuycs73FsvPM0`v9vRicvZdct#qA!e=~DcMmVa$z|3ORJys^)Ld%eD zH_MK7#c2>O7p#8u7|Nq9Z#^UJe>=3_9HeivKJLW6$Vsy<70?e_He1o_f)1js~ zwXkYYrF(|qPYV|Lyj9cX_z9X)t-T{jv%Sq!4(NiBDr#8#R#lv=PIdEkm8KZ<9X*TO zdQ<79)7KfI6>m#>kbE4Mz4;cdy5b7#?%2f!8EpQoMuBq*oXw-EGQ{Ju_jGsSwDXU_ zB|kn7gUJ}noXTx>geoi1v85A_{{9JUThor#(UVXajBsmbGMYk~E4o?CJ??9mJ!dxl z^zfgsZPONv8PkkVbpYFUuSea45YD^gTL@GKc$79pN-sVBDxP@YDGc^!;0^)bx$113 zdEqG-jK$z}`{1xu;BS9;63bs-iJEXD0=_WfLouY1DH#(?T0c7t-7DkDIS=0Rx?yt` z0A~tEpK>VX9Cs*UsUdEDpvUKSc~Dzfhu_`$AfCAYdHDPhQ3WU+D?cw)?BwUIoZMc1S%PL%gWram%EftLKcZs4DsY3 zh7vu1D~rR9pMiO2%mo|;rYUN}b$IyhC-9FyK5rCkDk_0neseWupKu_0d;8(52x8aP zEgw_7E9>!#8y`ehS1&^TFiW>IAI4zK-H=)QXGvFfuGXxq69 z;Ybj*En!rT31H^zsi>^4ME^h^!l5c`U(=4C&;JeDw|65L2=LU*?+u*H(&Sw!)Y7)r}98R_HdQYJHi7DiCay=?y+IiggP8^+H4$n*mQ2w z%@tCxQRO>70+-u`+Hfr%xczVV+wY%-pMcdyezfN1*Aa-(RYy{}@)3+`9)-q+dbI6o zW6dsYe3{HD+$`yF8yjkHzyUM3Ibh|=RZOXz@y)Lzi#T?5ZoIiu%apw>JfOlT`1a);)yit1x25|NjC*ty(&O=vkFYgf= z@6yrMkJp}g3u`{yfONb7cbS(#T{k~a=NesRu8=_@6Nl4d!|b^;aN?O?gFE2F;9x(S z%5WiXxPXS5Myz>zGZrtnA02zTdAbB~hP>Cbf`U{5|DAL|Q(CXT;d+i(iDM-IrhCD& z*tp=VjB)nbW4gW}Q77$Ts|-p^Q|yLr)yiv{plfbWbHACuO4$U5QWiTxO%Ld=Y2Xx) zE;e|vz7PGp=@C%eOhjMjvu1>fSK`OY_(cwK_HvAA{VISp8D|X~p*%$qPM3ogvxE7=;I;G%jEbXoEjkVRp5spCjQtxfr=TZtQAr z!@P6m;If4mV349b^2nsA3>4*4Yi4Bx4!H5wOYh;W7vDq2j$RhJlZ`(G5n6xe3A)kL zT!+TiYV0>_BKDs>6(jZ$^bPc3BwxU&rcqe+?neCls^4IsJBEhFTC}%!p&|s_{Objn zebPZ_>mcA7MkEwrFkSiH=lEdhN7%A<2a?e=azv%_f)>s(6!xKId?ThFI1#gsoB?-L z1$uhBkq7yFs)f(dp$Byw(LIU3{_gMa6L=fNGg%;fc3P^^>0A!gkuauCoyx`1bsILp z<8ZLYg0Ys=KBb|Jlc!F=N%Ky`8*jXcl`B8Rxfh&=f+K^C+gIVn#aAI*7how>nS(0! zGj)!8wu9p@!vm(M}PMW!1oCV)d83Pb+qMsD6&%i1{NG_kjZHs<}>kN)HB~1w=HBwwECx{k1O(Uh(3Ji;S zN38n9bJ+x0E3H>d*_qL>-n(Xy#8j)1sj4xN?V`Bi3*@{Qo@_AnCh&a4KHOAhH|}m7}f^68q9kqllGAbK-|!lZcM~sw92; zjwp5Hsdh{0jVeti^n=!?lYSVQWS7%OiTk1A)!Xm9jjOM^8auY{;FeaZ_G<2oT;*Mka#V)GyfNClJ8|l{N8@|forRvE zK9*(?MZnA+n+XGce-JfQwTKTSv2ERUtXsJO9lP6E>O>KX-Q_@2OB1FaJQYo2YGC&` zk;$czOee%NnZ|d7LKse!;SWFkGd_52l?r8mgO8hvD{lQB96kr4v6vhZuyHlMrn;JZ z4biou8$Ejl(bpa2VhIVggFz3PTIx|hx*mb53dA!Bbocb~06lJ^;BFYH09UvxQ01?~ z!*@Q0fBp4&1cP;|L4X>3wU4G4T?-ro(Nqef8|yG}@)T@ZzX?0qcf;p$8(KsmcjRY> zVsX^hL~!o;=VAGWAL8A2-@xTp{s_t3AXcpV01NK86oHxmo8r*4Pac&+0}m;xDYr45 zMFlNVaM0DzphFtfO%XNu(bD`Wr^m^YUCBQnnxN4w1=vO;!lEF8CfXK~Wq9i07qI-b z6{rZgaKc$f;Dj@dK_VUFaWPVarJpZ@x59@|pbEp;5%hKTqo=(ev3{8d;PlccZ$D~B zRUsS+A!i##Z(kSFKeX|=^N4+>hnf3sX=uUHr{2fCcRYwp99%>bvA^6Qt~U&mUNbGg zN)c;!H_}SS$~K=RU6Q4IsdZnL(r~hWHs$4u{+s@^Gg9%D?r8LNpy8|@P)ZO zE^ap@OFR0&Bpo6mSU$Y8aSj*E4@5zXPN|Kr&m8P^Y&-~QjP@Km*69puCaB-HWb-^@G0r1c` z6kjc#xc@mk_w*a6^wt{sNe!%OKByseBQuw##s*B^e;U@VU58z}_JE3h^mGVdl9?=g z6&`q8E+i5O)I_TA-HX15ciw&*%a*-?>uo1McoG@fQ=AcL<%0%j zdK5N{svCt5UtGmqZJA^NPKVQ+7sbse)QmvInH(10vQVf1mRluNHl>j#WWE;Q}u71 zm2!TmMvwFU+Y4B!c0gQf4tA#tEiJ8I1;?6HwtW6MMv(^$j<7*6i zWh}`dc@Q@UL?U?qgAZ}X9e1LqvlHQ9fc+jtz9OAQG=()9i?XrEKynBN&z*)-zH>C< znJChk6v`b=E)vmVpdoa$iH%{3B(-um;C5AT@raEixE(LcDg*KYrE8+14s8I&SDQGE z@qofm6++=4a%svgXs%KUgRvo*`k*?=*oEKHk;9P$WdhvJOKJ%5$P|uLS6;QwLaM%G znMayHnj_@0J5d{Iz_R~*f|s6uAAToIs1=ohtPuHQ9BDRim7loPIY%6Z)t{}#$E(*P z>~{0LtcyfYS6`1UTef15?_(PK?>`+s_`whG?|(moSC=lqg8A3OE))0XRFy#MTdCUs0V6}9Es247c zQ1t0^h|%TeR1aM0Yz$d0JUk3Bf0AD)|L zdDalw;tBMSG=x5*%#0FyI98*PQAwFNB+0IqnM>RW&XE!UEJbNzOu^u(0KsP0_l3mi z8t91L;o(%$=dDEKoc=1HrMKY@C}mEr3w;vV$)>WGJK?bhuysu*K3laOuz68YUXEmz zC?g)nY4GZTT;)I^fyz)7X3m_+AiQ?%dhSRXiuPmHjDv9M>8IkYx8KFbAAQOavt#ET z!;V%@|LZAi-nIp^X3d1tRgSLyJ%}{=xcEe$pW0Qqos_{*qdLi*lvY}i5lnTe&&BIg zrKD2i5ibB)-C`TbYk-~!X?`hkDlcPc7VQm@cu`9y0au<2PybJQUm9fTS)F(8*6Yk@ z7R^X#nHdR;aSCk57>a;JFiOP|H=Y7xj^&O$njAlmCZPjRcy6^q& z_r1&Wp7WgNoP*vtlpJx=IIFxGCW;`8!6O#?JR!dxK`ltd$gs#V>~3~!*S0-&=o=^O zv!D5z^(84TU$M@(=K5y;;=>=Ypa1!vvr{Ke@nC29N4D4rS)_MgZN(w7*IL0Z9fy$u z>&}}1FD%fe1sp-Az=CY#6mG3$0OeY0N3+`h2Lb`Mz8D55(v0H_W~nP8IX zT6Z@2H#Uw&MqCtlRTgWZY)xg|WM%;*#^b&o)h!|K4)V*B0o9kq6Vy}2D#lM(kb9Uw=K-saEMJYG+5opDASmYc-@%a za95FDj9^}WW*|3w-46+uo9Mt0Pe)l%r(?5&f!9bydZ~c1!$VKk!m}W#L~6t7o**_5 zj8yd~b;VU_KGhnHFVF@!IO*~eFhq;t8q`3SN@_aD@cg1%RGU<_HZX5p@~c=PXwMV# zhek}DL7Zo@J-}1bRI|ha zfcR72EVWjEfR%vZ(MJW}#J3_{@W_*gxv<&NWNv}2RnVS!2K8$P=poJFrN9r%e-eXR&Qn;i-&u8FxkI#T7O+#DqHnvnwckCvqW{0?Bf5 z$tgx)i`Aq$)^T}M&^!;Pyf4Ni1pqjo;5w>R2-O41v}5moGU1y_FY;_)Nm8{h+6Vw@INRnoXUZs8uoS^sEW+1 z$CYR~6c-s1NSBr_+HJSrK{*i=0c&fh$ErG~lr~ph(r2klWU%HvZ+@|Iqj8o+7PI*Y@CoyND=^fo6ZOn$Ra|ZhnFCCAi#>r-9>SAgGTh zyDSaaNs2a?5VFKF+#uwu3J}#OXKYDqbez7zW>5cho>kU__GD94;nkuX@B$+0KKF5V zfKiDyQ4F*>!rR9*xMfQ|!A0pjRN2zndnm>O5O35RPClz#X1-5Th#M<6*0Q_ z(UQ5?_Ad4YwE;Avk5`s}tV7Wwgdl=ax3p--T)FOc9mX>eR-$SD{$}v#?{86s~&01o^@}M3hewD(?UmgaOAou1!#7$;wSz zzO=+*HmFi|*IjopIe@hun7rZuo=OEeZWnOVKGh*D&8v4N@B=ObTLrMK0G+MJHgLti zF9(t=L&^oObs6h4JYzr3i|1O_lOMcVm-P@+*+5yU2o9s48;a;4rS-Z4D<K`NBq?(e!jtY7y$^`O6#iX#Rk@Hn4`lkV_?u0lk6_*xgRI`}iKD7(I zC;cK7AwX9a+=xs zd6wKmrW!Xg11QuJaKjT@3co9G;mnT7DBh3Pq-CVrJqpnTx-Rd#hnzm`m!eM%Bft-0Q3!gCEM(PL zWt*4L$W~S^u@4$5YTbF~eg{@?tcs09#+3{j%|YHv4X-oyZ+JMZN>|PI)jdTo%qzq_ z9bM4e|Be?vd*KdJnwydfZAcXQ+97ak)u9=^}6d=0jvmK zp*Souuh^#t)&T20D!Rr=^^;Sw4-R!b{i1^^C$U+3F@Pc%xZph7uWN&0V{_$Ej{$9I z^T2yb3nCjK3RP#Twp65WX^l2bt!h<1#?1^wa{-zspE_ZO9)FzAh8|I?)Zn6>( zisRM~T`D8o-DeO^QTV#itKx*Kj6pN$jkSSfq2`S&EJCdUSH;uN)$6%2-7=%is0!s8 z45gz*3N)0u-E6B8tj<`Y5>IBrI29XauPgWRzbJ z^IwgV0M=ri#v#}WKE?iNyY%f?Nx{_gS(*}INA@%)x$jjO)C2|^Dc)V0NfId6*zMk! z1c3sqZn1_cfKf~*!+FCa0f3CI7<7^2(yMN*oD=*=@UCrqY`YQp-|^b`tlFfka%I_g zjpab;4fCVL|HXvids&V0Ya=bNTBxZ*LI7*GPas8aqQ@S4l7OIUmByhkJIXJT8!RS*gQm-woUcY50k^B=bVe4S^;!1OzqVSR2wp zrENwYy@FL;f?V@H>iH#Jnbs{EB33PE+#^fC&2;2~h6$Km+ ziH!<8{eG7>C;5h4bw!=MwXu)Cz!ZZT_DP+X3aS-|D{yAO(|iV357kt&~L zSwa;xRk-!J`b1 zdL03}=AlHYqkNoq48>-t(e*TE)Lz1Z*PkZqqQxFK?cx}HT;fUNfD1u;;g^dBGAt9f zy2DT|R*-^E#G2yLN84wurFvGx&oj@KYfk9rv@T1PCkI7%BOE7yrj!xL)PaY=Ndvd) zL!)q#dp0B`>)O&d*Uy(Vre=BYc=CD_eU`s)_;pzXTY#?6l^Ov0cxxsLP-0DEU#=`K z+w$@y+qds_Hp`1@WuS#%1TjSxd2{tdOh!hGqk9pl08-pt2G;n#8c$DOiz6&gQi$aw zjCpZ2NCN4=it@gqG|;n$`yW=e=HH1RAA1F_pa%z_s{J+oAP$1y-YvJ>a(#nWiIzA)?n99Xz8NIkQ)y2#e~UibK+A8bFx&l;$L5nxF-&?wVn!axg2uUz@rfsd+Is zt<<`3qvDOYzh(++09+%$MTzKUv0wr;kca)m6OR$`=H}7KHdFz#>}`b3reXcXM$4ZU z))6)gQ!eozEHSq*BeoJ94ANr?%p4R#2~g5D3*n6|q%TI*df<0^^Z-t93xa%H%=e%5OK-TR{AJBB6q+2 zY2rA~7E;^miS?*tikiY4>W^X#mIdLoi5GU)JURdeP*RKB2FV&Em1pPo3QvYuf`eA_ z{_2JCh*iMKCy09~mHLa`UlHek7ItGeB)*7Gp0oVZ9wr)M{O?#t>13_=#SxH?& z5#SwLXJ%&Yz<~p{bLR~JR#ak#+Yc*D0(eEPA-9U6xtolHdi5uTu?p|%Q&JEu2CixH z#KaZ2EQ_qZzIpm*kex&m5cslw(4{7Ltt>KGCll)d_-zERw%h7ffb7_rGpFpxkwfh1 z1S=IB>%!t9gIJ(W`W~4Mw~E0g7xyayT`d|N)Z$k8ZL0U3#m*T3Gf?5Z1t^^>E>>>@ z4+D67bCtee37{FMYSL(pO|P31V@? zX3AC#@1+D>s^TQSKKQsg-nB~v#+#cl3Us$P_sr90%Ts`rlnTDt!^;UzsYKWS$Z2hA zteiWIbg>+ljQ~y*_b~g^JOcFprmkO+Lv`+FQ1)f3V z1n>uiz}cLT^FLXGUP09ZxFYUF>%{tN1+?>==liQ*y44HGW9S4q_XV~0EDxzpt?(vc z(O-8}0Aw1+j~{3HSG2zd$WX`(9c!opJaZ<)Pqlr|sC`$5~pj z5AEvQg3T{%W3Ugum&^)ug3w67t{i+9*p)*^_n%zH^c!W^_yTt;vswWqX4tS`n-})O zD^U#begrWhKo*hK%N7_Cbz!1-!Jjsj)V9jwegnu0C^{V=Yp{Azg?b5{F7?MsWN6fl_Q7w1LClGs!QJLk zoTzC$G!CkCkd#9!x-evA05Xe)E4I3dW|jNwuDka$aHaamiiVfcfrVmeQBO%#5}&2R z&;xU+`#`J{%~4~;m3VL-gR-s?z0;tM+!%@jQ0q+Nl6%+He65t^(xNTs<$4ho)->5v zN-MZ@)Z9Q&`-V^f1Xg5T4W(lR-xwx3cvTjFxyKYKkuDla+__>;Vb&syYhK4xLjr^As3K(b1s#W@uQJo{kb z>HS;ydQW5RMj@5teY6jMt!Irsu5#Zotr>RBx^*XA_PG2~eCPP7gu$rPQBO}Y6E`ocX!9Gom; z;{iN9OAVlD&9^0(RY{~ZRqYEmzj*suHpbYj19a8Zt4iC(nhNj0x(Br>D&RUN2#8}n z!A4{%!ZJf}Et)x|5+XY3qV|a5c~v0tE|E4DtH4LRT8dg!;ykx*=4O%r+(dD9loff! zq)6Wk4k}xxnZxAIvw!U$7n4w5tD-WnvZy#ni!Opb2+GaO4D7^-lLXc-fR*(W7Hl3= z08|02tR#*#z#5XPh?v%cLzXiSB>F|ZP+3hWTl94U22kqcmJ6H5A%LerD@e;#BwPh} zQk9vigiy3Uk6$^UQd;383$PfCrHYxf&jG%b3#+vWn7PHQv07UIua8V2d=3t(*pva# z*^RHON0~x;zjL)7lnijM_fmgfWn+~)h1ZeCAzWjgiO#1M`XyrQZlO!kq^e6>zv8HD zy3NH(^+n#KE|O)Lj1*E9z7J8wY<+c^3Q(KeY5U)k0dsH6hjVxG(T4>KEPepdZf~ND-Taf2)PyRqb3!&BsOJM$%T`8goR@gzZ%b= zoc*TLK?|>8*^K?5tD4lXcrdm3P{E~Q-ek$iiz-GzC_E-e*f;|I^NDi1BzMXywjO!1 zmMWLpsU}55Dx}R;ezsb!O+evZN?kVsbi&x#*bo)4yu4(4cI}fYV0B13fEjb( zVoRA%^&+cAP3E+>S~+ytLsyx+o(hze%E+#K`92JyOoOzxeHbob9cS;VdC1gt83&iz zD7ntq!CSI6Ju^Mk^$lCwya|9cs#`@$Yj9<%6QI89@g=n{#k1S0@ zP8p4Ngv*{6`XuO$K}9wN77k=As9aPf&9Z_dxkwDJTR_>(lr>YIN3N~(oY}RB`@qIW z@Cp_y+#Fc-b93{yupnSXk1#!(yEAU-WjCd|m*RX`D23gZC6HI+H-Sn9xp?ld((?h7 zfq@&@OC1VyoARq_AqOSlG9ceq!Eb3%;{rMqrTf)*LbxuyvZ_1LN-XbhT5AZeAG4a8XD?F8hv~d_@OTMw5 zqvnI!B3r+tvukg%C{bEgk^BLxwPAgGDMqSFT*J%uMsBg9VjpS+?AWp6`pc~{u&Pt5 zmpNNsQ^8+8D*g}7RRVNv;AG(yu1lM;(u%>4Zr$*Hl?n2RmM$|m$Q;%7d&-<&40v@z zWf5%!nmDOzz#^_A>&u1rnD9ZL7VF_dk1;fdw#Z0pU6|iSjU1{E!F?^8%Uj84b-3kG z3RpVI?p1eWo=av9{WBg)V@-t5YoTA$-V+HV3tp#~dkO1PI;C4%6D=skRw+h^2 zy~gj_a-J-5r&KTT!fh`>YZM1yPCRK^q*>ON0cEmu5b4jJ;1OLR(m@zyFGHomK#ZSY zq5{;N6>V9Dt3%thd$-+j$KBp>SM9IEcu;rc06nMrJsp_yR?rqP+Zgytf=5CP4UwW` z2-?akuz871rOsxq6vt1jyEvS^NKs3w7BLj+zM-)Wl?`txHi4%xGd)^+tKzQLJb=WC zt-n!#MIEMLEZ%+h-E7kn<2aeN*?PiXRoOrVuTI+f8st{6#?%5ElZcxO{!5F~EAx0R zOgvbvHXiP5+@xC(>F8;1ssQIaDd7fBI_>h~$EIx$iGH4=jIme(Y@*Ct6}`)9jXZS^ ztT|_g1d79l9_7T$F+o780MrU#={(<@1V@*7F)hF=Wn~RzTM@7Y^y7farS5B%v9H&S4O6Yv;A=BQPyw`RUUmPn<~9FOn^a&He^mLbhTc#=0beCEtkth5yO8`` z4?=30G}Be%0QYJvEJG;jQN5yghzEE?CQjLLq9w9>DJn<@Oi&h-(xX)4guY7hDm*}& zY7lVCdjbm2z>Xxx$Uh<~;@wlaj5r_^iD60!StSN?wq85pscY zQ~Abg@Pq=|xR;Q4=-<^^j(aM1*R>?5S8J?0gwf zXs3cH6LG-Oy(W2*q6Q@>60UL3G#VdSC-uIo@H>9ycAZ`wRX}`jv*lSAZ%X(;V9z%f z-WwJ$GLtI5=`jjFlwy-<+-u9?@N(KfSJ#rPBBh=*y@q-ii-OWKOT9utxO2`JK#q6H z%84Lid=9D~sV$ACH%npJs9PGZjk#-B+bxPAyZ;(i9bh$J0@wN&xj*_mEne z>a1oX^pWvuTyMssKwfA@8RsxWUyuOFt@4pQ_MlEDUOGi&x`|K zg|0yZh;PO^*tWRcUUJ7v2(Z`RVm*GGCm=o?*;fEpj171j)p*3h0}W6&^CTB92Bun) zl^oCRd9ieShHENFhFZDe=QI}0 z6u}(y%8N0^t@4S!_?;PJY_jm6QK+QSC?T2AvkLsGXW#{$(YB>1O1$}Dsp(0WXwV?p zd#O3;b=KnGZ61y;2_nGxAqLR*O|Jq%ag7`R#Al0#6FsDcd;!!A$I?&SOd;s7thH8U z$pz3Tm{_mj#jn|+K%f9!X*Axf#)VAls-6iBHiEwj&{27iN_7J4M(eA#wlcIGJ9pU~ zUN%sL>AkcdU*Dvi$`Rfp;9r;Lw+m$qH&NFTsbc7Imyw8 zqm*sob&=(X8^nnn8emm$ zcM_gps31_=qSiggVyX)y2hr*!JQBEFuUQj0>TCvh>k)(M z$p=(;0in08l#vc!9UMFyxs%-kmdeO=$r=ldc@2DVy_6uL7ng|w<8aN(;hKYek{4>Z z$gAPU2B)5Cqu^(35{a%1Xl--plI`5N+xG3-R}0dI<~%7%2xKKlr&66;L8=Lub^cQ5?yPO)j)b6=h0M-50V1yXBa(J;& z^JyB3;Bw&F{<-eEf>pJy(t?(c=&7g9-%zeqCtjOtY!@z^v(v|q5g-?D*Ii!N>%!z%#3b{dTEJ_uhGnUXvxx%`>HBVQZ>YZ<(5G@uymSdYq6OP(+2MVEV*|9 z)Cv*^DZ0@eCRtn+eCj&U!HMTmgk2Tt!*WsU6ODPLICAY*)t^Z5623MzT=8f~>DAJK z)x)U#F5bhg3;sCyAkCgs{do<5G&Z|$=xPuMD5F}NqYwT109n4@%L&$6r@q#bWu@z+ zniySAQb4~&_E%Kb-8fWquL>9jjnY0e!}EcwkHZ@vf`aP+j~uk(_;?U2_N=yK*nO_2 zj@lK;!;0cS^sw?ts8!8v#bu;KOEroN%e~Ym(0Gd$t0}}`cQWW2g7&5WqwJ|kX3$oH zswz{cvhgutbu0WCZP-2c9Q|t60zhSRlTU)_QU2B9R?6S!IPu zalXF2%S;%Bie!-mi0-lG@ZmE{`3?!)dlM z#{gDs-cV0y9Z)aXQegzRwY`vdKVHv1UtYvnElX5SG}dRVrzT(OYYZcX&E8ixgpmBH zcA~DEznZ`*3$)C)CWk)@E?YpV4~ZaI0Bb(bwf@5qkm0cv#AALk#S#aeCOOt8@4F~8 zs%5MUGEo?iAA*j;o{hsSXrchtcy^A9cjcWV1q=;(>AT2VZK57w*|(~iJJz6H7*`}DMksz%7Dki;)v=H= zc;+qbr+IqP*fh%AQ09#4jfM(9n=LGX#=xZq$=AtZ<=Q%?z7q@i(xoM~7MbZoTGeM? zun?A;;^UjM#^ZvB>!^p2Tjqa}g+yS30xC4-~OB>dntd!xyDR6a|k>7VdV+B59~; z*?TMS5QvAxjP=S?RqxP%%51s1QZs;}aTJ*0syQH7Jv07}V_4_hQ`m~Il23uel&E!4 zMBl;X3TA|vl}}H+2FIG2WS&e=)+hlava&ET2q??4Ra&m1;;~I@z&Jb<=wO4MsRmO7 zs2DQ<$Wea{E;lFkR5@RD$$kBK3N=nYp7p*4K!r5fgrJMCmI8zU&OZ0iy_VJWYTz+j z{~SG+w#6Yr>wR-zlEJd(tTgOe62Eh=}(WrR9EQv||l z#KzOgb#?*TQV~@vDNa63uy$&&4bC9&N;v)H{e_hkmVs*&JqH|<0rwZ#N5!?ty?zQ; z7yO(9?q&e5gM9P_LxrcJ1ND=*p#+UZFYcAErG+PpCIs`*O$-7~ZqR0Li%8KZR#?oSdqzn*Tc91z*M<;wAc z2%bRU!JY5cp%-3+*0Im7-5s;sVokjr1-Dbv2`{!QzR3U3o8Mem?u9^EA(o2 zu8DrTD$c;w;We5j z)D}oN;uF(|$|V{sFb?YsSs>uAa8JlXh9x2zpvtG5iK45m#U4H6M2m>D=jH-nKD z>VPMhN7_9QgU>-VruE^_mRDANoHzKnaW?kY6&3T3K0+Pqq6!+uZO~VO4W5y`zxuA% zMC!4)Pg$KJ=SWL1u&MjP{7ZN4945-Wv3>D+qhe37zC6&!xkM&he@1QF=Vw)!&9m1i zl;=8>sf_y_^m=SN&h^Yrx={c|EwJ&7s_3sZquLXR91ManRcETYTy6G}c)*1eUWBKK zdaInuLk1nz6lnx^9)u=5pTOs+9>wN1ZcNnTHqJ(*7%UYIVGa-|D-9(;_kRbimpo1F zE4_x^AXA(}Z|#8WE#kd{i*-9F;3PUCD4~cG2Vc!kj5hO)Fv^%UkLev@Uwa$}UJ`5? z&X{Xg(L8i^W|m!&dxO3$%+1=u!n~uUEPEME&n$&{63kwe#k!R??bamwdJggh9P%M@_c zU{DRB#Tlu^73p`Ozw>UNH2UOkN(Y$ksc;c)sl-kB(v|g90~96jA>@NSDvp^T2B{xC8!CXTXNQZK+;Y11PHk0kq8h6Dpv#! zFuur#k$>ZV%IqSa&9>lpm@)IqvHg}$owD_(p0dvJij)w}0QutT#JD0GBKW9JL<+CEZf-1%em!$#F}Oe8j&4q`Z$dEMezGITW#W zLW3F{Ye@vy^yqr3cJB0%uZk4MNP(nOy)Dvv{oJx~M+Q)s4?!125K;SG-buqP_A#d- zqkOs6%NIgkb8+J0FyfZ+*N`q^CPY}QG7yxokX1L10ls&*E%09U6mz+mcXW<*SUiMo zhcx93jGTT7?q;y?vCjDRy=~OyE3OJyV^a$w1W7eZ=E_XxE4}gQ>z{)WNPzwD@BKIX z^sjuvdM6LtE$qRiA~pDqe&uAp)JNF=w{x51#6I*yU5gpaf7%ggq^{`J4HZ~npW zTj%U4o9m7ZKG9%q-e!>K0tk07dHn3M?R&!;?595Xe%o=|KK8hxg<80ys3%-MjQ|B} zypfS79Y*DRT6OG=*I2kNB-k)+2=m~QQLX)u6xfAW;g4EnUd@sVi94p)A2ZOztKR!KFi9y)5@`Hf$HXd7l(6b(zJ>>qkFogWc+Z^lUfX)(5LF%KbE<+Ecuzy{BS* zYgqFkGwD+t#M@Efryc35+kek~60iQ9`AEq@KYm|ooz^t(I$ZP>QT1 zncL5t6mBlMXENN^2GF0$C%v#J(}!)b?=Cj|HU&~-!J4gi zy0)}qkKOj;Z?QYyc)zVc^9>7h1JPEua@{Lm!_VjE?Uwy7vD*(G5JeOgTFVuCW+Ur7 zqrVt*$mVd(9{Kzi?9?|Ov3Y1UDfZ|PRGIn++G%}c-Qm#s7tYz}|2=H0Pd;Lu^<@Ql z+!Y?6Xf`-taK-(;9betF`8WS1`}6PrfZ2AWZPyku&+J~Ouew=A;F)93v%lkO2CUEi z7N+mK;UnN#KLS=o=fC@#zhhtf#K&#-nWMIi%>&gIIh5>DyfGSJqrt4LZQpGhvpa0m z>oU>~xy&Y8TtFg**Y$0@W0x&_|I6*x*Sy9KzTtIt>s_}u07~5AGpCU90UGZ;^!fj5 zPk!ptw)U-W+1l}A)>#{o8y24rA|F;a$kR<5j8?6?e9=b3B^!J3k+=?mpGfNHAb{2} zJF;rF>urDC-uTNOG@Dfgw@?Dy@cEnGz)d#-Q((R6rsM|PPy$whg>~%F-~4U+>aTp< z_MSa%i{J^Va~xZT9d~PR1wga`aD^7o>#yV>C1rI0vu@umS3)0VPydwN z`RX64T0sw4T!|Z2f(r`w+WNUm_V^$Cp`H5FAKJyQec2W_Rv6$6ZL|)BOX=T zP(C1{A3eN0Q1j=Ign+TbCdSU&OPH4j;7#e);`&>3{zZyKNv~g==4Q*i^zODo@TT1n(l; zT~-_610^Wny2DP-4$o}2m;B`0><545@7d1pyNAydOnQ08WhjBR1V*~&t_{zfwD36Q&$b_tdzrBV2vt=YvLQ?fT!gF%969~vsZr+&xQHam7` zaEra_AO92kGw*o2?zffg_S{U&^s3L-5tst&^L6H~@qIS}jMT+;?b4UOWDmUW-PV2h z>$YpQZ)2ErBURDgEHWOZy}8L6`r-ed->bnVXyj|f5ST4 z=2IPjqGD`mCB67zqyB_+(E#_yKlK?~{gcnxna_UOI>!&$95QT>P!Lts*i)@5O*Hf3 zRrj=17QpXtNYGk!IV@ym)6h>ywzU+p7&XQ_illzcZbM}P~{E`j6^-bG8)0g|aUi;36z}r(BYW;w0hN`H5|LNLBr)S5z z^EUXiKWeZ1*`Kw8_rKAt+)^#Y@fenHR7FzitqfvG!&uCw)3L)}{IXsA+@!+uFs7Y%Qdrq@?CE=ol3G<**TWeAoLP$Lqz6Gyp zV>_}uviaA(&hGobhivW@uke}zF7eWvuFs@QKjnEh0&ncg*Z=?q2uVaiR8wGm-c8wa zd&7-1f@=w@~dkv`x~6< zwM`CqZs&7)^&2w+Q((O@<9<_r>gB-I9(}~V{Qh^@xj%lucG7ZHu@+TDN{33Mq)1WWepX3v&)@3TAK^cQUJeQ&hgKlnvX32ZvLhGZET|B>J z7f+wDrDG>;cz9V7hwHYsv}B{xXKm)p85=)&$dvg9RJy zeTi*5c(2Xuxy=TPw^(n`wT+c!+crFc~H^+@#7F>rb_V~a0pgsEQzhT?fh6F!0w2Su0QC^^wwvr@EqWl0qf5x7QpCk2j zI5s=Kx@OBGvoV@3_6IiTqnzA^bw}$qvpKSvj@cXv6r;v=fVkJbql4a(e+4BWb~R`V z0X!S?bvt%$vuC^Ce82thKYx#P_V15U_EY!&=2(W$yStbI>+^2PZp;n03+d1$-rTSg zzxMC!+yC|xbk7IOqLT1lr3I@dRd=muyE;H9v4Ac+dTv3y?{4}Cg{C)Dn7fwdRLxry zMhDl)*R~3`1gENUf-dl9D;gD^R(5MD(MR{cV;6b@yZvo{&0hJ>-fecvuBoMZW0u$p z>Qkq{`huFy=k8$|maA8!itx?Z|NL9_^^bnU`bUo0{QL~LPE>;5L^c!fm-SC-w*wu=f!1^5J38Y zDBHDlR{8JP>e_~_-*Kz`$UEO@_x$~Tpmx{n4dq~*5+<(U5Kb@kA{l`xu)atp`dU6_ z+j=dsrpLZx5B=(Yu%{mUirLDl+1k)XYwD+^fRVr${iImWwb!+N4;^d!)@Q+#4I8cw z)uF_@jIuWt+i0L$ESeYLZ~PmrO#0rJYRrPxr~`m@&S;&2#(!wV-k+N{>-VfTJIn98 z^K;gjo44`8qHX_ySK2MFd7ZbusRzZ>QoWX|<;8ieDX_jc=l!am`m)pjxz%+u6qa5a zvNx6?1=dUU@q^KQprluM1U~{!u!d0t1x*#GuhkSdIQ&W1g5}xU5ERH|6yBX wSy%ALx!B;-TAAsZQ&7Bu0iM3}x{bj92eqydHNfUpTL1t607*qoM6N<$f?iuyCIA2c literal 0 HcmV?d00001 diff --git a/components/sensor/images/athom-em6.png b/components/sensor/images/athom-em6.png new file mode 100644 index 0000000000000000000000000000000000000000..fddc701fd7927ff8f2154b1289be153b2ff998a9 GIT binary patch literal 284731 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�=cG0*?d_{kQmh+WjdDu#v;ZX>1(B!> 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 z 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

RV#nR&^vDu5$tuHd*Yl6E=8lpO|U;NPy7MY zMn?+$ad@+4l45ye_+a$E{T_7b(GP#DTp@tS2HIRmQ&Q5gcFl4OAJkuh^tIP_$3>T3 zBl?xRy#0r?*n~%fBR)O}lg5q2 zjA@h6@zgVLb=RI~->xIVA|nN0@-y^dIPCBy`1Hd$czWc6xbKnCIPI(pv3u9{Ix!(; ziKRGq-53RCwla`1=ros zSJHy?F*3nY=2U7rR;~C658QK`_*QVuxbU)T(5R8p^BB`XE^OQ|4(!)iSiC7S=3#vh zKnMZOs^#A!GQ1imbv#AVkhIiyDx`E_fLY&buIJ8EqyOT&<*Ok$)w&X{TiQ$mVMg<( z)9nI3y!~b@rrlx3tyHrr!Z7tRx-y0!AdDM^N@1fJADE7Dm=Lk*vN;TG&#q;gwob&f zO;y!m1Sx8h!x-eGWkhYE8;>nGo!d&byBC^gD&Em5ku)uz?30c&&ZWCy15TO<@+px@JdwfBN4+_?k#0xCsJr;xED`s_%;7=XxG|cl%K=Uah{NZ4- zM3?Nt#*G_LSX_!E0U^Oj$H*mV=uDunZObOS|L$~rGXFi9?5CZ6Hg4>5E1G7v!hQyG z2{1tG)@@{w`s|bWcz*nJG-%Wq1%*mT=%tFyIC4S%<%gwsXXfidb0_^D9e?H3U2sk3 z-e5zZg1kJWq^6-Te?RUXcoSN*XeB!=e@uuSWO;n{pJ6YIk3X1=x$n-vwyhg+)G=+* zv)}DF@uV}6vu}?xKN>b{g2i8cgnRGmFRag*=U*x*CzJPd@Ud<|kQkpRnvofAOvdL6 zK9u=>-i4P*P|e6X3^_S_1PC2|coPil+f{bt2LnQ!dk_*LDaO?+ev$nAqOU#`?EqP+ zZoO|oLPD|@09T7o4#C{uTiJAO113zJEt;16{S*wVQc~|2@z@*J{f>8MPQ#}Q=E-j6 ztaC0BodiXZruvP6w8!j%5La~ShO)9s z@i|~%OiRy@&CGR|o-XOW`yPD;`}XaVY7H-i&HGKg4LfOn`T2*KJ@a*}SoSlTWw*pN zoo~dY|CgFll~omJ*yu2Pv-mSSJZvDk_ZfhG1M9|wm^FmeT9xHx_|Hdk@ZLMqv32t% zv_9$>5d(KT{VZWd%=6Q*aT6^0@)H59cMf?FS6$y-G&&}DoBPc7Qx_5*9)bn)=VJC- zZ-^d>=ija8Eh3mEn?}JjQ$nB2pN*#Xn(^7*xNbGxnfVI7`1E6ma%Z1+ zF}n5akBqEF0z^fx5*>rajSs`HJ8r_NRV(n^gx8Ufm?HOryI>#9RCTqajaL7*93RY? zfdvcZ%X~fe{Qt+^d%#;(RrllT*4Nv-DZmt_0)hyLg<^||i6)vvqfrx$VuH~iMx$tq zM8zIKqbMkdsHmt>Y>BZe(kvhr)&4|YaO!E&(bdP!>-Y`=uK(e0pDp$OIVT4Sgg}YjeB-s!S!>A& zC!Wl}N$7?aiWNq(p2tFC@>IjR?!Y*+vO5NxW)74^8+cG^>at0h@V4)yF>UFaaN*!R zGUPEmm$KCANom>k8j~;(rwK4JHiC+&lVq3h1GgX6Jh;OxYtV#plK-I^mXL)qE=j{i z$U{XqqcCum@wIv^^f@8T)(f~OB@)l0!5eAx=YK99HF!!%V7kra~?cEV!xoMeQdLBAIh+Nk&i>1T!f+lG1WnU!=B(RxFDE zy_wdm+`jR4nVy`|-Z2NLSXt_(qHyf&WKW)L_uegE`P`@FQy;%T4n1_WyyfikWWn$f zD%`b)AHhB^5Vp^M;i>YXm%fUw7|@>SJmjy9*+WWcS7(R(^2VRZCoeuDvt9<^_kI9!V zyOhDBZ$0}%vTN5)o|~1c*U81_pCcbS@7;37>)tF+|I6pg#@jbat)}}teGUinxHjA$ zh^M-9%SJX9yY!Na8ASNjbIxOH@K&QKOIIwHQ=X$B1l0M~`xz7Bpi|esMAocUsmKjK z`>}lD;`8OI?|qYv5TE~|e_%`k?t_?>e|pLD z0C*{hT>qnMP50~!v@AXTyy!iU-nvAfAikm zG5LLqEHSt!&_(>J%fBucU-&-Raqqoy_PH0!5l0;(yLav+pawJe;=g%@9DK-9`M^b= zk*!;|a*S3kDwA>yIfE*=h@$||`oWdoWroe2cithdd*eIhiBEbOo7SyZy@tJN&Ux#< z$eCxILndU~elj8X=g?H+ez{}Q2Kn;mKP{jA)Wvf2F~`e0-hH7=PNM);OV%Ft5V`c@ z7s&h0ezUyv^w-F<|K?P=bMs~m+SbL$#0TLXNR964?v~A4Hppe4{+L|$*-yyhfA2~1 z`nSA?3@Ww(_5fnS(2oA%&wTZOF(Ehq;zv@e&dSLroh;MMCSz18W+;0gsFLKdpk#Y9 zx`HwdL8g0~_&mgj#$4*U(NAUTi}*M5%(zXk{$qin_zXfI2tsP88-(65lLGw=po-LV z?X~8asWGNfy)X()>>ye1H*16vKB{XPybVcaO^CxZomsUM-OjEaf_#ub3`{*xOvn{i zT*ZJpP}j)YcMzhCLsMp(5osg(CS@>eN>Gk0#CiA!SOt!$x;{CYx=U{f7eJAT{z-pL z(#THpY!K*(S`EmxPg#&K;kdfRX*d(2*EZx7N-xKZ7QD?q0*G}<-p`=p=v2(?!nr_5 zz9Eut_&~$iGkfnCToitP04rq2z#Y>wu<(Edrlx`&iWZ$G(VqnME{;2HoqX;yUt~bp zKfL_4@{H%4!pFH|!>#hNQ~ydHdh{{!rnAqN$?++fm>A8bbEUIm0dhUPeKJ9}PE!^P zEtUlf2jvZ~IbFW~-(QkXeEu73a8|8U7}WMpr@c_t9sUqG`~4r0TW`6Ahe=EK=V}XB z3Tjt(w^Yhi?Qc{r$%^Hx<-Q&F$e;b;qva`2eWsj##=r8p5JU9pmz^SaY}q6iUh)N& z{YRaIv^il$ft$}Cu^*tVySlpMh$B|Wh38)=?>pzs@=vdOt33Hno+0;ayIWQsx>8O* z^|>-SIwtRW-$g{^=v@-5iCmt3JCM@U^Ty;983KTjLl0dd=l}cJ@`3lBBk#ZPQaS4A zhfA%aD&PP1*W}Ir`YL(qpFLAv_oj1X^QH}SXL;aY-h}~wZcpEUOioYIt%EiR#~im- z-uAC=mXBU^o}BakkIIopKb$pImMvQ$FL=(AIVT_c?0?IhcmDc*m(r(2W@*`2b6BK{ z7A=v5iwEU}&w3ic$Jy`yD6MQz^~j+3=!ZWbZ+zQ1^7~KubGhg4t+6U|LE16<8Fly2 zb%%4lY}sCy2E8;*M0Kbr$13vty)VEyM6mMS#t1F`Oa6rEbjui z?Hd39AOJ~3K~#GC>*dThpCczf;g6UNrN*m;-52bu?C}Fo=+n3-+gGbrA0!|B(1r4z zv(F;9dBPw33BPjPwO7fRul@&l?Bjo5{`GC|=Nu{<nFL{NW_D`>nA6@ekdBYi} z$>Jpk%fFrb5$PKkqM*XwaG#)0vkOTmqv@$hTC0zI^kd|prORb!0N- zU;M0m{6D_Ntd;(uL1|4+%HN;zEII7(hsgUbJYR17`DT8;h-G1>RNsKyc*9Q^vjhta zdzZCVW}5Q!r<_Fp_iNwqPS#g=`y0=Y8-9A7oO{uwa`dqelP#O>CZc!R*vF1%(eA4a z`Nhw#r2>7_iI0_S+qTJJhpmuHF1kqG`|h{NKc4XhW~M-4tXi`|Uh;zHu(;cK7kx&W zv$JydopOgZ^+Pn5IX`2m8SoxAU2Tm?G#W(AsdmW6=1?uS>&nze_^5l0`(OeQFd z_q_ezPufKFF)gSx%NjI=v<@>T)~1hg8S>2H(XCQ)#IP|M^xef>XQ?r^0X&C zN}lk6qU(Boue_byqw>=3%;&VI)mywkG{xn4%+>)DoE_k*kD@FR|rbw?h}0(1{Ka;2Pm&b#F! zA9}Bxd%>q=*`cd>9Wa!C`&WO=%)d{5{ws3J`Ym)N6e;y0ps}~tC}$WnS(RV?{2Hm3 zXXK>EJXS%-LN@V)%hQ8z~--??mO(0d}ZOn@xYyu*Db0bw2ztvscMyQ?UCh- zyk1X32bA^4BUw~s286WejzPs#kOC;-9#eoBF=pVwi;7}Qrf1#KPeF+3NGA}y*-Bu% zTw5bJ7UQUt>Bg2F?YP01 z5P*;a850644u0U7Rzu!-)@$S!H~duo@;NV%qmMma?z#I;`PfAtkj{=SIq%|6%g!A; z$WVX=Jmu7v(Y1j>L{M@kJ?;;re_%nV5*da0te`t9Y8{;U>X$Ik^I6Y5MHU})Ftb1| z`|Kt1drx`_mFW%FUnjr1>E|-CYp49@mp;SVB~SbF=MZcjdCc)VU%t_O4`Sxf9{j>{ z-$~#4??35}avpiA!+-~BrM;g@~x6SNBd=&64p2OY9p9&+Tdba4T+XX>2TcJh4-VT4SIGfsN} zYx1BN)}brc$ogO1B%iwE0y+GMhsuQ?|AKt&tCz`H|ME&!HATD&YUJ$Pxq~UT4}aui z7~3&D4Zx;u8CvQ8la4&LXSba3@)yxM$ND1kWXq-v^5GA@M~*uB7|`{_rxbNuo7$h z^Xspbe?RXMIr5>$$eFKsseI#$m&vnVbSi6X+(Y-?tgJoaC^_n3$IC=g{S`{8f5DJ^ z@iQNj3(k9woOse>mhE(fy`O<$}D%W54LwVKf-YS3o%)gdz{MQ#`*M0ZOZMXi4 zY#~0k?y#d|%@Ie+l7p7+vwEttQ7G2+FR%K0y46r4=kUWH!Wtl#T>K$9Wa)Cb@DpE@ zYp(pRob~!wN=LOOfAhC5k&dn&*|zmAx{HoI{$%MNT%dhe(D<`8!#%Zg$96gM)h{Ku zeEPGV%QLp=*7fqS4}U-&cHAT6&F?x-cJJCLSAOqXPy;MzhJB7gW@v!+s7F7R#kcmC z(U}W~1Q1d#%P#>!sv?gu5Q3P-R4=%EpF1ek)Hncz)%I}tUDQPv@3rZSwh|BRZg_td z4>NE;k|t1~mzv(Y%JYoOFO)!V5Q2F};4R&_`j7$3;Ou6`6=EO^r)WTkCUbaf2;)8? z)1}x&lTMf!V+H=OcF-AMxJrWFF{>D|aX>)G56Fa!%fdyANTUOJsUm>V2bNGk0mR0- z7bIu&p_B$H$*i^t)ORZSSg=@xC=G`gAhvggt1P?jYHA^bh9qGzZ`gCe<;q*_Bi zoR)0fvYD=q-hl%bn94b$3#d!BZ@p74z2rjq*-w7V;G;&XA%`woB`V~iE9Dihd6O*tpMMcIf=AS=q& zI_h-$JoMP(<;IASji=^3@k#GLzWpdGn{#_OhqYHHh zs}H04>vR74Me?k_K2^5w*cN0b<{N%??z~S9JNzhl&6#f} z2!V1}`Iq_(=7JpUucwU9uYUeRsn;uV;z=hmr5GT@S%>|e-v@FS>5~=dEgL zk|`6IxFkftT`QL1L6@$74#ohU1^Wg60jxVPj4I8HaZB69jH0S385VjdRNj+mab0a4 zb(MWdK#1vLd>(rmdX%0BhH+JuoS{9+)~YJuU|=S;F20jGkvUkJf~n zK}?8&5Kphw7HrWS!zp3lZ&{%w16Hl0t`%ZoaTNy*?t1b3W?NxyQV-n(2lYRYtvh~h8Wb4*DImhr%PfSi}+(b!Owine$u^B7n zy3CeZJnR65+C;FuAA}2u;f0I2kvH9bD+TJ3MN4GK(xr0mJ@=A9!6Ae2gWu6Bfs9ViDOy4_Hf1rp!NYR4QLcvaxKOLlxC6gHcj%5 z$Fso4j@OV`0M_k}jT>a!y>~G+aoO_KbpNmfHvQ$=M?rfjDG0~;C|C7F>`Qt3`{<*B z;L+P}yG3^I-a){(V%0j?y=#YzjiB(ES}Uk^LZMKplf`mtFfc@kK-cHea^qk*?$~@g z=V`&nwcc-`an!j2ZCGe8E`V;8r1Z?eLqJEt}s4iy}%0Dc-saU8y}ISD^|#Y zp+$1vj{6u?r@{@jVz8$wQf6aAf1U{9+hSbGWm&xVU};QF$c7EK5-_h=eyH>h4Krp! zm9tvy2#Te@+y3@uT`V%?HH&h`#PbR)zah4YJjXk z9gTX8ad5B_1#4em>0_^8uP6g zugsL~X=J9M>F4H+x696*+oZp5fh=FKlIspY4i^FDhq6>kEUypt4n4WJ-)!yue!iy$ z28N}lw@bEc-Yh$I+#^E+!_4RbtA;l7T!Ti7Dd*ZcUfl#-muiJEX#Vp+KnTutNYSmA zEOcrZrhB#h-g}p}d5{tQHv5)tnWWHJ-rbLTr@AEurdw*QM?@yz z%w0DCdWe5Q#;P{x^Uk-h>vcZUaugZ4Mos{Ry|X6TMJFj_6uE2k3kqwR27Nshah zQ!k)RJVQ5iwdg|O2*g(dG6N-KF(LQ_0{yMC07oe+YV~eEa+RSg{p?d}4Hr0IX6iOQnS1 zu&M==MavOq4Z*W{u;YK@Upxnt4Xo-KESc#k?FU8Wpl(4FVN)M-oPW$c8n^8WNacmP z-xI7%Z%@Be>J?J=V9|6hX^@v~T@_`*Fb?NI<)(U`6m`)ZcKyI{jm8^-rl{uwalR&&aleR_w| z2pVvIvWT@B&x7vQJ+yFjzv4R;txV})!zlKmvsSRRGN2l3k82{P1p(k-kFkfb?*WMT z92Ps|xrs{g&lGlQ_IX2^CKCHPyL(v;6_)wP*eFk!vl}?my1wb2Lh9`PH{&aMzKk3w zp|?s^Zoc8iQm@a*2`8MyUQ|<1(q1u@UuZ8fmR`FET%>@ZNcLpLX4qwKpaY+GgVmouXS!nVLdO$drtrp(6CJDbq}#sbxU8yC;mBzr>8K)UxHiw-@pd zjBCmBiufx8rgo9_niXwecfhh^F2DRrnF0s_6EZ$VdJYSU%|kbg#a-%Ssb?xsJmy=1 z>qV8mMGB)V83aC4Up1x#ExeU2QN*ngyJiV6DPDFwpFE&t+qrh`OSIo1m}uF1l#YqkmtDI^m^nzvGa+-%OYYkE9M~WqcYwlH zVX%l{$&Mq|vGJu~cT9_ga2FAtLtl^Q%&!xl*Ru^cQ<=5Z`8S|r2dz?5SC$8&`E%&E zqklYgQ|*t%s$*0us|6!~^P`4Dx>xW#exGzs_O&K1Tsil)pAY~|cLC)`cFi5GaX(dX zHe>V3y#f(i5YCG+N=U8sK105*il4#jYGfIU6iE4gRrvr=lgf>jG7&a0yb8{m0l0nd ztMq~6iVm=JX%YIe-x zq<2gzqaRQgT}%={2!h-^MHe81VudyFXQhP0PZmV!XBJw)-_|{sPiTRr0H74o5E2ex z@Hat-#!sX_+$%;XP~ha=1OP#=2GGm!i~FX~L!p}ujf!|z`?4>pe^xh3t~0IyWv^v} z4_NRuN8rB~Z8RUE3t)9C6t`;*2-s_=SRkQh$8_Qn zLu@>%J7bMhS7MPgh(WCx9jjX-WavOY(||x1T{K`simnHyf(bbg4eS(zT+SOI@^x}z zl0IDo{AtHpt1)jNB6icYz*CL#uz*#yikNL{q@030_-bKUqoA21g%~swEMD7{&J^I% z4nmMp3M)nH*gNvKyUem(PiW+$o5wbQ_8N-xT&AS7i=9S|}`&cG|i?hb5qp_Y^hAqZ(Q{%Lg%gz&!3;>_mFk^R_Hj?CfjzT%22 z=r>-lU;zs?p@AJ^Lb!4*7Ap&ykrSptOdJHcAt-bG+dM7|XaywkUMb2_=x4Oman>6Z zz^KvnPCKKOH;No}cB9Vjy^=#x%I#?^uk0^wQ#wb*oMZvSDHs!Nb` z;INJP!87R$koNI*&iT#AMYC#zOn;i1W{PfOx+&fBAY?yw?)*pQXJCE?{$HE{*IAIs zH~->?Qm@X)NhhIB$gDIP6Pyy4{Vw-YmQ?3V6)b@SwUqr7`Pp)l>}-eXAb0m`T5Dl( zN&_Vvw`KN)+hwv-N{nwJl%NY(U5FC^A=A?`x@S}xt!Yv!3}m*VknTFy2UmToQKzPB zS^QJS$;gUa3cOcNbvDZ>cu&(s2?_L%f%_cZ23AZxFzy(Dkna`8OxCcRES>r{luMFHUEOW*TBkN7TKkS<3zbW!N0)U_o zNoT!VTCA0F5q`s@^hgx8ZZ8v={`wOmb*^mu#xNBVDk zAAx!blsq`KTJInT*|-TYAyd-ZzgRkZhBHo~{~O|C{wd~XV15SXXW)U&Kn8@|@I&dS zm*s>EK$G-r(b523 zq%+0|l0ivaKmJ{h6`}47^*Pe)m?@?nkL(^{?IeH&S7Y3~8F+?rNje#rT9@fYOG=fhtU2_5B_?E;F(Js10g7ufm|{kx z8Ke50?V(=@lR~OQvyACtVK8e|O2}i@1}#iMV~DHw17RG7`mvNXv7aPZk;`2|nrDv; zpm$7nF9Apzn2MS9@6Hui<)06Y;|zpw9|pEV?~h(GX_F(}tLcWb&sj&tq9f%@i*985 zykjG;SHQX{v+SbFim6D^MFYE`Me`u!fyt@)Z_m%b{0#gboq+&C&^zXaA22ZW@S7nf zgw5tW5Hx}Y01>V!fe2zn5E6kF;{YJ)mcdsQB+N?HQgvA^!yFw>6 z!J$DxBPbM2K_3I1L!HP#J6UPkY=k({6m_g=9se|Flp!LlfEqJsG8;IcX^nTuZ|?NG zD@_(taxu18dC+}`R!acYOKV*+-JF(91R;~sJG5lp9rJ%wfX+YG{0z*`zyq6s3<&x8 z52UN3EGM3Pl1xuEC`X-HFJeA2WfaW#)R@3%V8bZYpi^ZUwBmI(MZl|IL;Y9+jk#o0 z*5_kUyocCabxE=y#H*D8gf#8B8k!x`Xeg`Cf}7B*R_`ddR#ZQ01tZH?vM>n5k-#nG zKfyadFoSgZ=#BySKv@kGUqoeJ#DuVZ5>j;6X6uAJXdncL>#D1+mdVK}86F;DWj!>r z^VY!XHv+2>>j7wVuBPv*k*|@pX>vAS@c~pzT?aPL!f=H00LXZj)AXMtTPqNk{k40ZY++U?O1t+w(IpKLhhK@Y|b# zG&|;|pI;+gwTe9IgcF!C371ShDAnUHyl`16+XE}_t_#m5v2qXUno$svHX|*UTIRN| zSebOB&bm>aZQqffsQ``)1Z6`7V!8BcrN&}q>{{GvvGAW3LyXFs{lfqNAOJ~3K~$BD zHEG0Imuzx|KAUQ0#D|!@9;%D$xMFo&>SK4un75*eF1jq+-XYV|u;k0yMR)O{Oq0V0 zDLZCHuDtw8nQTnT@bCimLO=sM4P4RM8HigTGGrNPMO+MKX{9y(${;QbrCE>*SOye& z!~f_q_PBU_p)P*`-?D7(_vKOlqs1Jd2A6;nM$Hz@T?RI?T|;$@S-QvY3n zi^ZxWMT|Ti#5c`c#cT5MCK-y)T{jGl)i|0N^95?Ov!ar)@z`avhedXnqT8I6o`GTM z=$=o}{q2dl`8&_g!2AsSuFgOPg!~L3MC8#YpG*S|RhiS!NH5Ef>H&Q&)k9=5z-&i? zz}{1)-Qznn(A5!&((1}8fYH`#`P+IeH_X+!q0yeGU83y@6iHYc0n>M?2GtdV|Cpj{ zAO!udMo0HBRadX9WI)XH&{h%=kihd`rPG``pO6%ih#a^uAy$%t@%1}L+ zL9$I;UyGF;usR{%``+cuJXy48vFzTxTP7zh-3b9Z7%;0HD)7+2+-y;7TM~LALOFI@ z8CLLcpa8lElQL758T3W)HDjl{q(rz?ONGYn?dy}lfqv=k>0|taXUDiwPk})2wRsQ_ zgO7@fh~d@&nI@G}i;B)@d`hx%R`oD*jZmz{w>pAe)qkivMBOyH(VPkCVIc7B8#V|E z?tlrYcMs|3epe;I{J7?4V15SXXW+Lm0}+Ij<>ni%mF_N)rLz@*&V@_se-MY21IAKB_)a)1(D+9xTIw7c*iXtgwK>!00RN+}Hq^=N< ziWFT%TR~Zp&9Eq3zNaxDe4nMbtw0E~Xz_hh%0M;j6+@M-4e&H)my8SggY@?g2)cu| zS4@ovFAetL-b<^M<$#EvpOD3Zg__MaB1+Ggf-G;$hk4QaroCmnFiv4$D^i>ZO0`H1 zk@aj@YF(YuoSKqNn>WdHqba?p6M~AV^C0B6AmZk4IX?sQGw{1S1MbeQR?BkhP1i|h zeO4ZE{0Y(o2x(4+V9RVwi0YLz!N85jGE-R{804ic^iWI6(9k*XQq&xe?hI3LAw0m_ zgoK_+?JD)kw_tLd603}eY zzLqI&Z|Lb>0)QvzCjb#7PN3(LdLOE?X3feB2yxKFe;;UIDwq(&hM<`iXf61nm`e?J z%S_V%h0;8LO+;btckVU&14v)^7BD&x@ca|W<-?iBt+!!c+#?LZh6ii63 zfskHSk!vqjhH`2x{2zZZt`u{J6m7utvqY=rLdhILtLd&;GcmTrSr`W)e$VJW1?pq}F&LIUM^Hj+1vOJt0+x!g7&%pok47j@mU3qU? zf4y{8MUH>uqiCt8Oo+QX=E{(Xu_D&W!va)QC#Z}L9oa)w?QHgBp8arr5~jo}YTFBG z++zA!4}w*OTnnk8HV3kOkgU*Xwq#`YE@?EI?5s^91sSLokg7(l-_?R_J!jOapt2(~ zz=bOn3vSi$097^O=I2f$gv<;m7qnt=nf1FNOyNH z(IHcAExjmp=Y>8oy26>1tbDL(dUmvcnSl^}vKAE=>1f3Q`60mwS$hf&{Jy5BR)cPrR$i`K_+CSrWM7_d%)O5 zQ+K9tcz;}yDY|9$HbaUoumQp>)E%?>rcbD3B3wFTPc;L2NhEXhGbx%my@CCLa}Un z2#qb3k`B9ZgWhe#?=FMB^ zYU%6iy0zpFxUeq8f2Fh2voy%}&2f}qK5cW)4BO~^x!I+`&Y03n*mnTa%Qll{S7 zHe)r_5An%7R>a~y@J4E!CRI}PGT8>EPAe3;fO4OW0jb)LMgvnz(qsd>Y3j6*kv)tL zAwy%&M?XRcI1Pae5m}Tpo|Ebp{{$CB@|1Qh>QE~p%7BW{MYl_;^*S>+@!Fa-Yh=-) z1C$+u-ZAh$Av*>DM7!t$SfM(ps(J03gFIv_)t>A{4?N{}9GF;Iu7WjXPN;-ExtgvT zi&Xab5XOX%a|o!gr@K%32ZyAm2iY-=u+c)nm4IHoYFA$lLVkO4ZvM{mGcZ2` zzoRqY00VCA9osfbRVL-|!;fSp3EUU{el|-cGS%6_lgaDe-ZYbG8Fhzdn^-w_E14eC zcIP&D^9FGIJ55+Xn-PmTWaGH9)S>vB4H+Mwq+1AqsQ@Idc^TKi_zp&>s>yB%GkFk( zd-`K}OpPzE2KvUu)?#PcK^NJq^?Ik&QPsNvKvR}gaK|iKc%YaN2O-0B$BdzY9SWiV z@tHeCJt@{MnmNXn7UWe+2{1J0$cl3X}EEaMa7GBG~NQWpq@!Q&~NqYt9_FRa&Q)Q^t(D|dz+p79w?g2{rQZ~M^OHWxjxq#d2?8cS=e*$7Aen8%i48^(dg8&?Xin) z5hIWV5|NEiV>Me5J5EDdrag%du@qnZ9txMWcVaI}RB#=WFWv6(Aauu6DlAeqHLdQL zJ$v>@V`_@vK$AlN7_`2YyJx%(21S9pUfeZh$s(4-t6+`sATvxlQ4pfp5FAIjEY)g- z)l$KPC#$`-hoG+oy+Y|_n>Kc_{3NbzektXWg>KwJYl?v6p63j$L?fpzsQl$nZykl$2R z&L!QlzEZta z&-=5U`RmVh?R{y1RQv61-Tb|xwJG|Z&sUL_pKI-l_FvJQ?(enp8Z7^;S!olI(p>A1 z;o=KEG}oG>AKlk8y1zPhY}Ie?&pZ~L*S$T&Sat!ihw~rjt}1{VmPu-99eLGz5O~_^qFQ%`gfce&jXP3 zeUyF&s9|8L#e^U*wJ|-VRl=>{rS<={%u#b*lk6o>mo)no>!<>$Fb@f9iMy**#iHTQNORcdp?wY<{b*S+%!spy%4c;3fC z?Ms>M&vo_&aLw9F;DR4geydIA?gfx$-YPl=`PUvyaGUP2A~}$s$9(~>{RL0y{O4uF zTwt*sU~~5&HltFO@m;@`(#({sTz5D_23phEz*NZBB4c!aK!}eveqX}|sN})u8|&eq z$aPPul#9wX47bt5npul4i} zN~zXiMQ36~S#?jLzhR^sQ(758Q$b-n*fr})gO?JzlkfWh4^AjuDU0*LylW*s9kbg3 zdYSaQx%mTQxKLBU3SUr zxUn_UPLn<#Iv3on)+##nu~KweKzdL-8XaaonkrZPGl#PAw%SR~zsiX?V&wL#__M-) zYP|3Vy{WZ15$YNkU!Boe%0}{Pd7Z<*{e62gG^vcMY$u%e2T;asW?EWsuLc^L-L}=Y ztZN#ZN^+1Mbf+6knMTvvUON(>p{>Sicqb}lS-sk0mh8quT6+e~bL4l!HQW-iZRI^c z_Q{5XDfAMOTFpqCoN2ZJ?^ddWP`wtt0`KR zgh;ZKI{@Jx32qZbk{ca1X;BjF(ET-@TOZ#=iWg`TjokqMLV6V z{O8iL4JH-?*v#kvGd6>vYPtnu*lQw#Z-=B+iGmPh$JCiE30({pVsvcGm=Iqs%!;-K zi8H3ZkqPqpAFiuG0O0k|Z^r&s&kp4shK;mbY(gw`wWjVEZD7}wN~J0*R~~xcvSYsY zy(?vAM(c#2MhO06vtS@9TY*5=Bn$0@R&*|+QqjU>8bcDmNDR6N0wheSyJO-x)mW5r zS^7{X1n!t_ZT9ALTahcqH(-ijz0jCf%_Ccp1gGlZhfj~&M$?CLW#4_AbLE`}glh^Q zD%F_2<=0U3>t)-!xVbiN+C-Gw*V`-gT8-ci_4-l17i04v=9KMG<)=3cMQ8|U&EH2~ zpZUPJDYfFBR&BMzYQo5zXJJD#I0@>+5Vq>bXu)vZ6N4tmG|DP~yOx3`%yX-$T^TDV zMT~eJufSW9O07yEPk*jo(hf>GPXS;eU<$#^XeVHk$jZGgBboc|L0PV}qeb9ag!Nv4 zvn<9LWAaA|`kd_x#8Q^=*aZ=dzX*&cx zP!YOC5TIup{Xi_1%mM*@emU+EiZiKE;@80EA^&{N7^Khrr>)j8=YA#}oan*Q{|jSD zacMI5y3e%hxP}B~!&Ow7D+U=d zxOb~nvN|CLAUg&M04cgygrT7!nHV3pF1ki%86pjbhJwtZX$>7)o{WmFzj6bNCN0oz8_V4$ z!GbI^eudWm91+ob^C5aPa@s2)@m;fGaK+gf8@0rXOi{17uVRC0p~q&6S~lFrgYW=rEG$oSaId1O5TJ%<}g?}jsY?Mx~3|CO(;1k492T9wc?&O zpkoE}@N893RZ>!;!<4iGTfL?VVDzK_3qtBPC|BIq1N*#}h2F#WQk*C4J*A9@Wdy(+ z_8LRp*wW_Rkcr9^05KE7Q4tzkvgcG?7}->=AJ!KcbzxuIc?sv;)Sy|5{2V%b&ma@8 zsSFF49&Y}U)GIZq)Np>h8JYFo@I&Gtl!D(tVF017pw$w!@|Suotgp#af_Dbs+gJnR zX0aqrFql@!fJO(9zH#+{gy2IZ`K$@4m6=v@QqQjTJc(?HZV7db^LwQFeO&sUW;ohO zU`1`;&~6+HQ-nr|6S+|jF2&-~6BCUa2mU;dfn{|`rLrDRrRIZHHpgP8fvFnwi?Z#j4opl4 zZgAz5C|1^zMT;~hWMX_Q)S#!ah{I&aT@|VxCek;2Zlgx2q5J_Y*2C02Hv;vM(T&9a z71Bmo#g#BGRW*wBs>)O(v|bPo7Q3Q8MD-P_DhgP^9?dOx7cOz}b&U3Y z00J(29XQ1-r@$)cF3^BzJ5UO2v@So=zSBcyXOi(kUY%B1A5DLYRD*f@h>xOc!#15= zJGxh*kpRJG4Kb;xR7eMl)Tnx9bHyAhn;*4owDFWpUao^CpW7J~2M@*!xGRLuZB=$- z3vW9w<}To0PMHTLBMM)q)6^)^d0|6J+6|VuMy+R+fZX^%;98~1vks-q^mng}?956T zuEI$7suM#Mimn>iM*t;LbitxFSCLt{I%(0=cUn1=IkfSC!kVRf67y^96ZQq?Sv3py ztkchdWO0_qwYbN#K?xZ^FhvQ4N9!7m#F{OwB3VX14P_^F-zjkL{iKaO6K2i;I0;F{ zC>X4={gcKJgwyQ`-p1jhQt;>s#!#`Zxzp}}p$tVMG^4^~nKGEpSmetx>xUxn4JcC| zH82@E1|LrVFZ^-@8NQUvs5D%od(@^bxB?7}VjhEK@7FPOX>JC@CSdgF>b`5&PU-3D zmcx!Xl4DCjh>o`%gtVAd5`VJnM>adgUC{YB4t!f*(|sNPb{(jtA-ri`{{2j$P9h=& z>)gx6grJLV=pEB)%ATEj*s{bN29zgxvF(N-9@~27>0~>DWUtdG<9w<-3QUacCHxI0 zri{SUT8DIW)Ma|wddIBJcG1hZ_*)aeg03of`v@Be>P)0^ZgF9xng|4+a`j}^| zRty^ZP&fp^7k8Kn%mjoa`+>qbSO!)So~cJ}Y`{X-1+G=9(#K{v-$R0Wo%+x zI%;*$KeR~UbuQOnO`CP=%98@ntOI=-{=Y{#psh9DhbzbNEkKsa=7^Bv`T+l!g3qj* zf=>b<2ohz;4b;S=tZqaX_$HJ&W}~vv1CdOF9x_eyhC9Sr6jK~{hJgG~;7$cS$O4|Z z8KCi!RBI)=Q7DXXEg*SR%O&Nn`>r+H_o;_NbV6rfCC6t;bXt6U9_Jux$*<|6Fb~ilf%t)KeaF-P!%9IB-diP6}c;h9s4jBjB1v=9PfIT-NLuPto1Ihjl}A zd&iR*s;9aR=JWd9t&fZYLo=R80;pA&bJ42o=K06J)hhLq_OVebET5vAg6Id-zz$5v z_rHGykt9m8A}DoyY}_(pDE&i?5F36n5h!e;6Qc&6^GmU6slKaLx5`-;3Z{u^l(<93 z1hbuWDAJyuUKto1l+KPWqC;mv;=j3tu|-aSMsQu2pm!vjQgLJ`7{icitzsr5&w}{o zib1H<0#TSHbRcISa@n*pQ6Uf2X(4b32mojh{AL>z2Mbmig^Vj#+l-Wzjh04j8$w34 zJ1y#F^9?esS~W#erhgv7824lBPs@K#kB`QsFq@}hst3W!uFUkrQ=sbexLDNtYO_B5 zVe~o_b=6-0m>ml37L{Nei-H6E2Ui0QzIUNi zaH8K&=f`=4EK6d3=nzK$E5YtVi4z?s7(2!T>OS@u(zpT~l6p|b$raMlzls~-#HJ7SU_$s^P=6O1Y33vlAPR??~ zBE~J4JaP~M1y8GxfLlQ%;j+mr-z@~9AxKp}ABiUwgxEtoC$`J-kwXn~WnXtvkWGH$WaLQh8Gw1c<86vM)0q_F=jmU<&z(L5BS6(g6*0d~IxJX7vMr3?!Gz5_;m8^a`9$!9>TO4uY2*(bSgJcv>wH26cAt$+YZ3%z3o1_m`>*(`QfFiN*7iq!79xxzA5lq?86 zuC^+nd?1q3Wcy-3!uJfYPmyG#A54H|HqMf{9ioWA2rd zwhfbNZh;Umn6M|731YlfxO$*agIte=UepKdhu;1F9&zmyACE!;xcoxx{T--`tq70q z8DG~FkT|2{u8<^1&jQ)nrp8)nBW6Lz>`tY0EC!D0H&4l01Id9(Nd>jfc5KjznC+ippA3bwW+!|M6F1=L9{*pyu{u>Xr_d@GQx&6zVdIMKH}}8A_-mX{HXm z6Gn^ICHt&n(7odw%8O)7f#CF)Y^}Y*c1&C_4kTH^wk( zpVCRhx`BNF2ti8^kOaGT?NU|?28XSOPeowiOnUKzo2x6t>Nr5Mm=N8PrdRyF3RgIO zu!I-~n%4n@Oi$~+T(f5NgBKH$G6UGCC{_lfg<@ss8#6vWszx<^aB7*6nX)I>2}_7s z>ZeHcGgic-=NS;_EJ)VZr~4+&&A>rGe1=+cjY$Mpo`l|B^z!gY)CP$ly&SZO}_tsD5pU)4Y z?=yct1$3FwB#ctro9zNAvNTcn>ik7(K<{BfEET@C(>Y62EV^g2KM~ZlzaH=D@8Rni z13C%V;~a#u6xkZLICX7OVCsUG1B;{ zC~RL-x4@tzEuKbKp8ucjvs7_K>pGoH2ig(r=J%V*90#ioxcpP``Qq|L=%>;vW|L+8 zQEhih7y#Qt$uh?^ib^qVn+USo&x2-koWEz`ZMhK^Z18cB_6YA(+~lNzF>-YLU9? z{?=<|6$JhURp)g=Iy*Y&aL1U{qFRD8?N$K(MCzRy)>f)L*JzH_;v7ii^kk9SC2U-` z42Z;)O3%AvSWVWPo{{|sswlZs^wGJ`dCmi560`tvWY1YL$G*W+5ZNw#V$f*%+$l;= z1(I&^xq(QQ35wT_iZ}@zwCoo3=jL?$oVqd2KpvzNKAURD0PvK7P%61-uH$PCx8c&! z!FWbc`Yd_D=PXcOcD4)7EVy?iP_$M>;4mtUBnUO9yds!$D=Ds;tv;26#7x= zrF%iQTGoKbpNGiKdT?(08QCiau{Se{AQ(KJ-J&0g^W;~I&!YQh?`xFbi$%aA1&(=e zsq!a%n)K{Nqd_IO0VL1B)by{I)fJJ0DcZP~Q?L`poIte*(hbDtg2apFJI{;dm)J3D3Fv*guZ4irVPmU zx>^b7SA}S*M%`o{JlB`8`%;K1$`+z`5x~cH6S6_LxOifS8 z;w6h%AO#>qqr(A0S{9(CrP@`aYYHMa7dQEgH0bZv2S!>E76Mh)Ky4!K0e(t=19dMX z`S;;mSnFZ9RIJM^9_?#E z+Ut5yj3xd%eP|P8E-rJZKXcqN8G{k!M7Kj^Y&pLwHrg^_!Znk7yC}(6k*V-YTxW`s z)9dOLqq`@%e)7t0F0j%5dNG^g0yzD=-@|>p`kAOO^8U{JTKY8|B&8rA{B9BFMW95V z-7H~?A1PAu%9f~Lw5^|6o0NU98MWt#tb~3yu|AWibmAb}rz!A>iq!%HlcGlPdb*!9 z`#C;K{@LQOHM77r&Rk$4|N4G|&0vjreFEQO7S$X#al(dp{7yVIehdPOY(i5Ha~4EI z5Q6X9Tye8Rw?mqd=6BKW*_tFQZUhTzsr$NR=ODUa@@pHPBB4h1gVjv;Xfc=zXd;=Y zjD}72v$`GA{hh`&Xm(RJej=4w>0b5ci(_&oF1lgU&!qD)mmJK#o&{fdK$HbZ={HSM zhDQ{hdc<;I6D3D@PO>7)a_ViCAOHXz-v(jsqV|im0*7T zH8hSx{3AdJim;81?6%l4JHHH))>=n64>QeKnQBbwSWyIzNC*Yo)TISb17n+Udgl7k zpmujDT{8m{R2Y`!qY%cOpunH-7_-6)Ph<^HKZGIgLtiffE@;$ zMOq1No&NrQ=|^B{y;GV1A?D9yx|R#}B$!dtZ_Q%G4klO%>N>MuiYPXWdrl!>ic6Jw z3~wp24AMjHO2A8HL_tV(VetxjNQwl0RJifL=xYulvI=i+huq&w4`KABrt;03B^3xi zo6o#;msj?AVHU2QXc_&CWsg`YE9cWJA5T}E1diiDq9t2qFWu~6NL$|~^8 zCUKcYJ-@?wG`);cm;)bnSc8pFv$8`S;U3 z%Dd!1jlY%(-V7+S+tZa~O)66b;f6yxcLv>ZpiSp4JgZ4`rG+EdOBo*hyaz33OlrG~ zIfoLxpH*HS&y;2EblzPyWUt!>>}@YO73}1Jk25a=Vhl~{hRUj|Fb{E)=ReT?cVeid zE~CQrw!yU)ex(7f9wTMuZ4Tkr~9xx$V z^bvD|a0RB!&or#4WnKFE`dQ8bDYZT)2(du+71Eh^?byYD>dvk%)y-B~Ac_?O_XtR3 zif)x|A;zbGj6hA6l@DT_kPHa1Iw8~34OzTsk&KRwFe;Y|Pi8}_T(UCdjAg@^k7=rj z6kd@-4mm_ttXLt77A@u^WPfI5YO*2sZr>qWw{Df)yYCAT&Uz2c7znh5ecAXHG9iP5 zL(;*()TXA`d8#OV0=nE8K#|EQL$F>FKo$;LI|9x`EGJg73rtmf@q7OHJSDz&Ns=uH zmeS#=@*sXPOH9`*Mfj0U4beExkR-fkUTDlUE*-xf93PKWJO>vE9Qz_G3oc*g_N#I6rAaP%AMXsIqAA&&y8QN2!w<^ zWZ*gqUmtxI{1t)u6riO7+vhm@9Yw6ZU-k3ZbK~bKjx9bnmDn#;@d{RrAq_gDMg@ats$EjS0h zSE8{LCo9MlFFmkVxfR#29Z>lmau-jj&3ZPP!g~N;G;DZm6!NGxy z=FCgUU*C0?Y}vd?w%@y5>h&7SUoh9v%j+8(h!6|r?Nw@w2cc_->H8H~y=Jv6ey|$Y zVVnPOo7D!iTmrSD?X4*a1()rpqO|+_nCQ`R_(xk$q1$aW+#W`&m<3QCAxxj@Kz>4!{CvbUxnC3-eS_xWyfroiOVL5=>>% z$~9nT-Fx|*!95cLgmbzxw|66W4tz zM@v)J%MCcx2T|aVP~&;coPU~}LXEQ*?ZS{AYYdHtTZd=0VMGC^FT{CFK~5Y{k@7FH z1hac2RjMA8mF&wwbbRaQa!8OpC+jE0R=M5-*pnfCpVtKZ;C zK2_{(N&{!rdR&A6;v^=?0Y{ua1JybDF#-Y@SE+1DXp{^~5H037rWo^4G`|jDNnHk#^mX1;^>UdvZfMr|lp^@8aX-`_7^FD@#`#e8^HcXvv~5MQZ49M~3^SW5=tv-L^q) zS${J#Pf-vvh3K3|GQK5N+Xf4QHX^9j8Y`wQdhp#bc-ZfL_q!bY!bJ-i4>CSJVimV% znG%HZ(_RMzAYfu@icRGn{pb^=zrR;g5ZODzBy?^krUDoXvuoFg+j^Nxf&UXQh;C#rM(>;`+-VH zT-)ri{)4T(0Z6BG18B&c`dIWSyM}qI-^mzLz$P^lQE0TSk@X3pO6NVSv8AXfAhW8W z7C*qx$MYMv3h(Ivz!@nM91hBO-&7FBDE~RFs^s+N6=yszex6j&>i8na_xv;yd3)QQ z8KIP($2_o(*NXcp{|rUvN{1D*JEAhg>uD{SsBAL8%$V2wzK#!-ol~wrI5$S!8)9ug zKdDiYIotfPEEz$|Fg3@d}Wd8+9Er{uJ<*X9)RetPkbM6<>Q zghj%h0t12juuez|bwYM?tD~IWqZ`S@-jdc^{YDQfk3=y$;-AMsK8V$+uo2ROP0vU$R3#(8w~@aBZe*zO)DLr z7?aMpy1R568tIqRhn z4yu6`mGrR$Yi6&duB$=;=(C(YO=^|5i;-fBGi%4>zg6^|yg+wdo(lA=Vk%m{>I+SJXbdolvt{AiOjO%BRkt)7YEMTYF&R6v@cl4TT}T94(iR5$wkT5N zkpYF|6gk*w+dt;(jv&LJl4T{$39zF8)??DfK&D_mg0!pxkFv7Ops+{KjGVZxE~)f7 zk=eoDk-5wpZ7Gn!d$Ar-JR1crT$3>ofW*q!dt*j?Anro;)lk2y>Vu9t>V&jpVse}w ziqWxAJ{t5wS67c5a_~}FykuC7@wVumY`j;xMsCF59=F_btK71Fy>xWdBku>G;&nn$ zw!PjVRdn=af=WeJuU;vO7ass7#CylI8Z8-KjNUPOWO{6zn3bh}?MX3k_^75^O?kxe zkB}9It_ZZu-Va1^pbs|IUBA9ZHg39Irl!Yu9~7SP0%R0c>>Z;qAz(s~Mx25Wzc1rT zGL~pNojE7kww=~?ppsnj>>+f2QM&o@ds4tEvB=sEV4AUF41*3KQh@G~$s%^O-W5ow z<(>HnvN<2uk$%e33SGx%YM7`?C{;>46k(g&_%g!FKnPEQ7Xk~SK)=bk@LsnX*qJJg z%({fK?Y3tu@?Du5D{hoLcCiH*m1dEZZY7|He*jncS8o*V(eQuV;Lo{YwawpuX|dqF9qD$d3S}IGBerTmoiLo z55|m=*t5$Oc4|oazK?S=_ulq(iLO)Mkq%Zh^NTAHfL-wrWU zt0po<0ciT8dn)Tj-`m*Jb_yP+mAe1@yLkiG|1JU``B=lSb~Z7(HhR{yWO|Jiw3(vY zMCH^eK4V8`mmIYCU|F{85N-BnRVVZuX4lBanFV&~ITX3>y6a`zwylg2@%=$f1}3Ch z<$vfOqn-+p)vMPW7!ZQ`^jBSV73;$MfS$2M1G0w8uCaOB}YSsWU$3_&`ZF$)c zna7~I%yR}dwm`Uqq3V0C#QYCuM&$k~&F604?}76fqjeaj-IXou0O_Q6}iQ;2A;NhH#enX?w@oS6DSvEgWgmBn|ja zWQU)@w92gFD|2ro5IZkVHSxjv8hHiyWZs-<(5F`f$vu-YQV9!{?p!xc$(HG8^f(*P zZD(lwE^Z(=!1T3C!Aw?O=-zV>$z8F~0|50^t%9$LVH%$+8hnFyaXqw}|J zy;p9zd|+03`{0flR3-%3F{Fl4!Rf!Z$2nv+WC1N6H=%C6xKMF} zrB;#(Hn;90V%PhmLNFWKko6r~`*m~0gyL@W$EhHQgn+8?^l)o{Q+%C%NCS%gyrGAW zRk{s-I~GeaF0@xh)(Xcwq_3-xhzBw#9=qY(sv)uCEH1^nJ>shoy~k!|oXKQ7wz~W$ zsd5tN*4VQM52t%zmRVd1C?iNVE6$to!HPh^9|xlRF6x}4v6rzQd9x~PsAMATHE;6Q z#!xx4!iBV*;&mF5x!2TlV|<9nEpC81AU=l&Q!2p}%Zp?0r1R$2(_S(WgtJqrRSour zf;#7M4`V;Yj-A$3HzDLn=c2^ERZIo`Rcq2Gfx1Ixr z6trgDK6X|)73q18u5iD8syFi2OXteRp0ZL7iqsdQJ#o+{3yl<~CZ}Y&(IObZ8Cbe> zg)CcfuAl20z0KhGk@AgubW{ENa%r#N?#(_w~zTAM;r0=+YAEfx?OA zd4A5@{?2ZU5~-$}Z@yV}@7_Uaft+ObeZoow69RWkz23=&MR3{p0%XyhOE>SS5I33* zq8*)Pk#M#E(OeG_-HqSUrGiX=YY^6q@t4#Kb&6~==EQsMNNjjuj5Nf5QMs28W z+Gg3rCx~o8d@Tx!tYUyLkB1BA!g&bHpbL8KWXV}YEjwpDAfV?`+}4AHt)xF*lJ2zjcWhLbShg&k?28dW zf;XoN&zM{@@iq}K08oQrz-t>9U?y-I@)LLdU zzm|30PWFd>Cmp?Vb9{2*dIk2%Vi*%>&EojFo1-}Z%=s-7nihg59bVisVb+{6;+W!G zw#yWs8=xU=Z0GZl2jcA@!~ttOFX@?%Y@h;bt?QI#>N%sP`@>yfJkuGZIJb$RkDpB^ z-55Sh(qiuzkOWgx)6!Y*VixLx zg@bJwo%;ho^mb|RwFXv0_ios*L2C6nZIi0CX(&~zY?Xox8H@qyY~4DzV;-bpW$Azv zgj~tV9v&WM$G(Y)QLW!$fj`(NlT%Z&e8r*i$VVKnbSr(nX+Y|}wx8>PylVt5nOo(~ zJGZcVrFW5KWz^EF^!E?Y9fN#jOrkcbOZ|MhA*0ey^^Hf=M*!l_UQETg*vs~_i4#Wx@_5pvB`$Fjp4r z6c46bVIIJz)N$4yt*K&OaLJFFhUO{Fs&OfCK6J07z|SaY0~tysYnF}%fBM1A1ss~z zjTKW>o5b(53q>E3KSK~ELH{P-36*0DD&aB>RF#$s8ZXS{K3mKQYi_u!&ajS_b5<9o z?*&zZ{+~aQg4aBVkJt@+**g)tDviP}vPatVQDZ$^YfHPnx=-Fy)=_r|sre{+2;cS8 zbThbI)ZMCQ--D#N_SR|D*_5DmlCknVZRDhFkXF(=PdnP1UYU*Mg?qaD=V369~D0<(Iu_d_c3X=>v$HhUa_!Tbc>{H1at&` zLLtk}QPsP?wBm(4hNx ztzH#WZ{_(z+4i+-4p7C^MoX@|^82J*5c!Jw9dOCO#B~}Dhh}_oQdX~7E5{ytOkk(> z7lGxcBn1H2u(#j7Nj7cTB$aB5rDo|~F!bKb>=?LXG$zE;ft`{|ubsVaJM)nl2M@0u zB2!ku_2Q~MQx_uwnk<0H0v%UY>4x@$hJTUegTinK0LDS<9~h8owZ_AVXyne$4q8L> zl~SM@AmCoNH7Ql4T){k9_hEA>Fqq3M&ZszWX5jPFlxE#%Wo~jhAnz0pzh&Y3nE zGNjURxKTA1&uLb$OYKrin;_yE4Qs8<_TQ*eg0Ia;wFB2QcTD7!g11F=D`$m5mWssU zo^aqC1PY$Ro=-cS0&r**M4ShD^t_cQZ84e zqoZb2s%C;=EpR=J4^Rc{ib)$1Win3y03ZNKL_t(Es*=S2n5CAqrpFW;7(^diwz)PT*pbqvt? zoR|>{`3W$EbsZZY;~bBTjmyx2MY4M33hC*GRP$aU9U$9fv#Qf5gFw`OH*Y(mzoTPMdI zckBb6gggkj?Y2#F*Ijpr%r?{=1IiUuT4!ddq!$b?l#Y&0)(Ju7xFnb$q5mDJ>m<8{ z7cDj2RNQDLh}D#Iuwn=|$s6~1(#@mRoLxPKMtMiR=GIxBX~BJQAffadO*ADMlhM%; znVgtX7YkVe6&C0P-~u0l2tt>^K~Dc$Mne_C48pKnBD3QCd@y&FD*E=Ql7`O$AJfBY zZXE+I0>*<8ojR{jcBsoY1EFbo<9KZ5w)Np znznj(N*(E8033({FIS<6W<{DBj*91ke^i%C;|aKeiVLWa=$b=sgsQf_o?(|_6?_yp z7XQGxh0^ANlE)JOYwRfu7keA?OzRMeiAsA0c**9kLIuHK!xE@c2z2~zSwBjjB$*vp z7l1Jp{0oK#SzBjvVp4$zm6@8}*e4o=USpYN23k|NVI_19FbIsPgaSk6n!+qGehT!h z4qPg=iu!YBjncL{3fuxvPMkl0Q4M}WjesVAYzx;16HgtQ(opcRYB|L!l~wh>-PXmQKX6UH3NXaAU1v& zbER%H7e8pRZaqN^oDf99u&5ePabPg386j9#>`^dGJZEJGoEG~+(1PPolA1k-x}p_) zWB+?rm9vrz=ttaKv!yQcR!gQEaB(QGs-i9g$BhPS2r4lbHtvn)* z%n-|LQ+<_Qia^L6cWjYLMK=%?h*8@}(S@4`=}GFF zN|AX)lPoxsi>`KBFl8kigeX!mYR>;L%hR@Npu7F=U?L}Oh?FLEx-hN$m}bC45CQ?* zlJz&=B0swJTA7@hl#b4B*|K?~Tz}nlWThZvaA3Q-It^rK?*J%W#3EE-ku^1&2*QyT zbW45wYHe!6zybuFKa0Fj9eXY^GO~J`xHtHgy zc(1C90+wRE)+rOC<1#%p#qW3Zbjj4@G}jLn3qT2~0`~X!vDqMc3+b4R6Nm5x=xS<_ zt68*Kwgc`RDhVKJ04bQGE*Tpcl}6Irh|lVo2TFtR9^fz_sHUbH(%aR;X9Oz+1&leN z0Pn1`dn6Q#K_Xs@49HALrY0r``dICkG`%Ve)nFwuS_D{NT$&A8x_p`J+O=Eu?Aa}~ zvUbSC97Fh`p98Foj?PY*GNA*3kNsZhsLM>FA&8G46H!I6A_bFF1QyQ#>xtj#>QDgb zeUpNS_ds3k2`?C!2?qGHJeha)Yyt)`O@WFp#-&%7D-v34b@WI&`4ISdFd0{8+EJHU zhp~SI)9P|?_Ng&78RAORrZ;xUf?LbAD%o0SRR95HC~%!B*(vHn1j&+UGy2`!4fwpe zqZF91pcz50DogD1I^9y(H;@B(o+@n;fMc+O*w>JO1Xwb|wZs`Bz=vg9uSsW5S9l$O z7s!og7V=?cMjBIa5hr<{j_XXG;ByY}u%4*6iNHn3FN_WQnFa^e+E`pXElVpv-cWww zOeovvU>j+mcqW1eYfy^k#u>y9dZ#Q~wn7d&;t0m5xq*UbIQZa$<=A77rH<(B>E-8P ztU&gFB{za`AdSa(rCdF7}#% z9B(x%vSuAXNbI5;=i)aAOie+E$AmzEE?6)mBO{|SF+Qe1gVv8)CR5XsvU2q*IriA& z9&{#T{rU}Z=bf8rZD{t3B1#B{zTSQrTrkX@G(`DE)AAVtAV~_OWvUoveR}S^c4}TX zSxUD>rX*1ENm^j^$HzrfFyk5QM%TGAG*s!E3;#kmsO4Xg>wkK^Ty^DDQt#-LMN5{* z6_=DpIID#^-b;-`1JEbu`Au>~yp}|4M z6d~w2{8U8-h6ad=8cn!3VA;VctWXJV-?Lj}YC1Cp*yEfV^Pa%+0gC{k21?g`*$ULu z!r{Cj)&SIRxlX~0v9--x?%5U}bg)b}rb4Y8C~>#~q%kX_dv?k6gs+m0s>(s(w_pgfd^!IV?CZ^EGNv%q-fVc_;Jf^|v z``KBkf$b_)W#^9VylCOIb%?TX(PAnp^nPOQi!omHYE34_CuL;kZaL`SgQc&xmuwL# zH-fd>anC&*@6e(l=^f~!ixyxG=Lz+LIuOi;eR=P_d!OH`$k4(eDu~JEB+q#TOccQq zSOyGK8&UGwvrXx%_Yh?7-oC5&;q2M);KRdrU?jTAOCdf8~K=!O`A5$`t`pe z5Cx;^ZeljDtD%1kJP_)dMNG)zq>FBP|NEUCgD?9eMi2s}FeKxnqcS-@#$nT6jbCO& zCK^++aKS=3`Q(#n(G;cW{3eqyJ=Kt#Zv2(pw`)5=2s`#cu@M2yvVq;u&;pi_Mb0#> zs6eN=YsRRxWKmQHB~=)M^Us10X-UT7UCLp_{iSj$~fO;t)&8Y;-0(#XIxLNuhD`7*a z*8e}+z5~wgvP%28y|?LoGU*`=5<&u@hZdx$tF9Cg1!N1Neo7Y+b!jfRBA~7`QLupY z4uL>=Aw831(ldSL&fMPHx96Pqz4s>Q_xtv@YjzQm+`0Gu|Nr-W&vTyhoafN{l7N_I z4T#mX#b$xi?!tKgD2h3u4Ov6LQUe*7M1Y5w5U0<@*`c&yil%|?kJ)HJJRIk&yW){b zAFhvzB6lr#0)Ey-WHXW-QgBvZtpHd+r@zujqZuF$+N8ZHAQq0YE>dZQsVx7QZs1S^dihT1J0kC8Kr9kRK9!Mjff~RkKQARI z3Q)DRHGEB6i!TqZ0=MZUBPm43!~ETdbrLTfbS3OU%EDZpwhZb z#S&br7d^$%m2fsdG#TI}07~o~F`v37!Uw9lqNDy*;>p}p-HL?5Fcb)=$g|damUR=P zO|V(v3Ah=s5fi}ojl363Mh>9y@hI;b&i)IcQ=vU%vRM#l@bmApnJlk6X8ZsKpRrJs zTP8VVsE4Na9kZ}BVxrd1HOT_84BDJsI}5W^M6zRAr(E_lTI6hvCz!#I(w5d8sFE@* zO|uDBr(McpROaFCCIbv+1Dp;gve6{36Z(77o2m4XzmwbJLMoeLFdb;Dh1=`IcyJu~ zY@UGxcdICE89zfV5mlH+VIsvVhssxs6x3gr^{e{jM!9nc^|YeFb-BNmB> z0h7UsNelvNjv@h$E&Kof#$b^S7_npfHuMkl!e*f|k5D_z*qhBT)1W)ERmxz6A|`gx z=l>lvA>x?2n!7Y;P76I)qJ_D(r-Wn_N|jDoVei1yK+EXay4AYz+=H;Lr!! zU#smMOU+dfXk}sYUQ}77e!bR+Fs(||tiiy-DcUd}uUL(hYgfbVaigWB6>q-&IzIT| zUHIG{SV*91F~Mx7MIhqEGT30oK#nUpFZAq#%6%2EQhgEesrdpWixD258*Zx`J2q~IgO~@(OjMtF`G_T;V*%VgF9#&5 zCs%^0l$$civ^3W+!yzOSY1U+@0wteyd1DdvO?4=l4FWLfODcVi#b`t}o#%|6evUyaZ4mm7Dq*46 zY_^IBm-n99tir*SBARlpQ>mKvnk!JwIYa4MljoZWz)< zjP?$5i6*PWn{;bURx_9Ac>YK_g{JmKbj+B5q5c6R!%5L#6Fe9(Z^K)Y8m9}BSBwhRX3jmW$kdIo|g&;6);lGTW|4%F*A2xmli0RX;+4;_@`k%}>Z_*cR>%GSArnH~F)Nvc@cDd* zE1wX~a9M57QHU36I+wxZ$x|?E*3ADl8vASYHM$W!JqK|3@FC7rSjfkgzVx7^Hpv6* zd_LIiPR^S03a!a&)ak|lEssiiB3k9 zjsz2^4WO72y#^^iqF_Rr2l+F-+f~Y_0*ZW?r%jkjGtfS*lM|CjFj6Tu@nvfJJ!KkI{k^JM(5nHp5R!Ub>E)(6 zXB2=dKdW+0UD4ir?V^fiFvm=iLUr_<)x98=$K`S%*gJyQSX2bRM9L6wFdMmCS=&?x zlg-3T2$y|1=n6n!wu|&X%$m{12?9~L7X=#f$!C)?z>|!GMXXi$OBjVR|F7u+(6S(=;j2MRr3~|FW<(Z>78F(LZxS%eIJR86IhMYo-|Jp_`U)fKRl9le`6vsYaWN$0kDc%<|>go4OD4~*O}@{p*5c`Wzf>qipJU&ta@=d!Xx9b+o%IU zXcu~atHZ`K9g3zBPQBzTjEs*W8VpO@IkR{I;>rgc@e_NeZe}Kg7@y;poQPC5iT?dVvaYCfrRyWAN?P`r(IA8GfQFKCzstc$v2wx$@Cl$< z|4)Sq0m3S{Yp){pJPFK{vu#sl(yhs6Mq7J3`n!+d(5{29(ZNgCZnJQpjwWLqq&@XM zBw`5^bHqMsc1Ke+np&&`or?HT*Z;L|i_TuuHS<#YGsQVX z{qwS?RU)bK1NwXtP-l`^c;Q)E$%0;lt%0@$nd_2_QwYV^oVSiw?C~na?=!k*Ke4#KMIq zDengn_*4hrPnS84erWXf>2wBr_Uz*UI^uaFB^d2TEL5?HYkh&5S~wgwWHQt_LuN%v z19H^FHQow*9Y+g+=+M_=w)F$6(0u|%wX>`8?G^r~X^3pO0ccG`tnaUEWmm zS^*(O_5?|#s2j$Lb?evT<=0<@*B`*7$y4zD+izpl>W{g@!Q!%F_L=iwaDWAX%uF$5 zs{T)_%d4n(M%LUbD^Zb4L#hptGaHprG0@ZXi@vS_NiTc{+4JUS*$fV1Sn@;|?aSTF*o%~96cP$|IaaRH_hN)`i7y69Al zjt^sOa15m!b=}AX^1()3ILhUd_7{UyVhQxXKz?=-gy_m75XraY7FTAD2ylvGhV@yh zRxkU5+IclIqQrL^0`Xpz70y|#S-K<44l}0AoQa|C0jz)fBlz6D3ect2PKya{pOXc~ zB~uCW&p!#tLKeMy55a7Zsh=FkC;%!z%q)>QKguGVs+za}Xwj?aO;|Z8G=NvsmfBO* zyaM~8(le$cN#ld^#R;V>J{GiSfmz4T!N86_Y*@Au9;cT9GBF`^{lUlxrp%pz39~0- zptld1SegT}1|s6GA{{xbp-_v5%6oF&Xa-J&JOZA4hKctFzr3pS#abhJ_O!+n>Bski z+i0adUf&yfMg#&S86Z}UYW7CnbF?-mv~^DQ)7sE`xR3QsrF;(gtoYXC^I6`Dx`ml}pj-jDLJkGeT`}4gzYeDJm0*#( z^4L=cA`<7WJ*6q5iVw{M<1&$~JNDb5&Nl^G%iVblREVY1C0B!F<3o&*2 zR7qNm7DR#}w70b4w8f{fh?|%Y`o*1VD$y!i$t%%ibGDkZGs}j5YWJ0g^2ugo#<2>75ZIz?Ax#KtbwFigD>^#5(B9T4__azT zrmx}HWLSUo>R7dT^A-#a4oa6?*$h%@ZR}cWqK>SJFqPh8V%NmKmoSx>kdHV(N;xLZ zUiGwbXmJShpeZ@Yq=`N0?3{oTPME`Y?^uiSV^L-WjY&|*WDD58cOUu(`pe!M@;O97 zEB%9-C`cegd_u@RR+Q_y7ljWbT}M`cq%yQl0S>h|G%%^A$*Lb3hbZ-4nkA`TJQ`Su z*5YX6G70Wf`xe?G9PvrzI3-PsycLIAuPzx+?KqKr9JD0@h zo>BRT+5uaenvfn!;>jQW3WEpx;C0d7ojsoZtqm5wTi6r8WEB5eWv$d28IrQ@OoiQ4go!VFfwx~z+P*t zn0i+X7az2$C65K7^!V5P001BWNklg)EXfz%*3fv5Z)iesyCOxZKlpDBVU)@ z>A*mE1XE^A#LUx=$AN=~kc?1w7=3?Y5h)OsP@;9F$TR9_lWQ%ocZ1kPP?=E-)EHRO z>#2R3Km`Fk3$@kC*}$JofP;kC7IMj?^-F7>YVjfnq%|FhgkZASxc!s>Jgotu$vH?k zNUU2zXHyG4e&$`g_~f5Z=dDFf8Q}>464(~XCeYYXkIQbq7WI=_aOBVt33{p=L$4zy zT3VsiKBNmN6uDcDKs|{S`FT)Mr?8!7Xz7~7b4DC(RnbX!I`;Zdh?DM)i9kr6^;Ps* zD#O$B;%!&}PiyB`Kxaz{sPp)7V8d=S_!_w#H$&Zp1|tio+Zvj%;DiOtm{aRG{al#| zVZ>9#d{(j!NqDMsf%4mmv+J=8!qLA!+NA90Ag_N{Vam(zt=LwLYsw|7su;oGkwn-< za2%$6LOM<9W)$6%)#gHHM+cgl8p_(d|5qhKeeES-ZjF+KU0E37IU$F>nC0kUSQYm|2|QfxRj!8Bs8Q(iqkTxqOHCWv=+_A4z<;fo z2MHeJFsVV9bPjCVx)s~@baOvEDdpdK^)+nRxQ5q-)oaFOw_Ssx$AV})$$?cmNL0;L zvmM$6k`G=57}X&l3sVdCgw3IUI3uGPI;W9hb6pX+s?$Yn4C);(XQ!-dQMF+DH)mv$ zG4S^T(ACv}-5+ejGj~6VfTxZhj(`wq2Q~=(?KENW=g!0#mo3HKefwax+L&$O$)0@s z#2k#i9%YN%hRZZ`iQ9MSuw;FW`Yv+FlOIMAW|J8G2u)7FLX52Fwy{Gb`BzZMO06%} z^Z!AtUXndSbBELc(RyBxvAF&xQddXG+>Zt*Ek2I`3tD z5;JAz_Z80t6+_sNjjb67kf=eF+UC4+WE#-bISC&>^EUqUAHRXmCFL0Uhwn9;n;8*| zhvBPn;oA@2g06+Lv2*7x)>^P`Ox3xWlO*b%{y+^Xqmmmv7Y@XwBD*j$Q>Es2Xz^g4 zgs+O0W-k?OlTF}-K#LmPKui(CV`AheFy;yj#0X?lhc9K&q&4FEXfkl%nlxb|b}rkD z=YIBE*z-mPnN*5#d0aR$+K+F2JO#rfz~lfx9%w zM6Mw8k78bkQWs{6eL=X!Zi1COQiw^&k>jd}%4v)8*`rhtlxT6XLLG>O0-R1e2cT#? zE{1lwtQfp8Q&>bXTf)TV7A*VCYk2nIr%>msLyisQWUX-0W;7y^Pa)7&i!a>t6$Cn) z(cjxITAuP5PkItzLr3E1-L(UN9zJz_% z$(l0X}f&o zOEFEK-=8jxDDmwv0Hhqh6e}g@MLN!^|4yz!fn(NJmDpQHowU4HXdN;LrT^BfPL*wg z?kwfASOSG&Ii>POUN>}0DHhW@WML{>5Ga<7%2ZYtni?9=+}Z@{Tob%irIc42yPP~z z?2W{*cW)1Z!BO`Ak-VM01I2|(v5@qcoa9-oti{Y{vz))s06TJ3|7)GG|3hJF4lBqp z)d2PhA!8Kr3DHbQRUu6yHX2n;{rkBr91b@++B?wN+RR-Zf9n@fN+Tmd3=Iw<5)H#b z;>0qYq?Gi!-IJ}1rCpP}AbdUoAwv0z&9$b!D&jTi(x}YK5IqasWy+YXY>Y+0o@%6A zt`v(!-qd8!mQ0e}Z&tYqRu-RLfR%v$=_{1OR~pPjuvM7}Ll0NzRXG&sze$)%L1^=i z9az5VBW|;+t*OULFT8+t>sP{VvZ3fK;F`N`MA`v_LSfFRxJyOdBXI^*yO|NZI6+o~ zPinK2MQ*AFt0Ax26q-4r*#H9kbZ{3Ig$08mq~Y(+YyrKL^(NYCykfoH(b0|rD|g|k zAN&jfS1sQxLei3D$hwIaBl!G3eHjz>ZR-Z)6>H0kpt$HW8%;CRH9@Ka*Np@ySao@yz|dMxC!7 zIcn2Y`%SOSNHK}li7mM7_Uqtk3}B$IudElNvrxJr)jwHfg2?v$0?x&WSMI&Gil=gw zxKiZs8x84dM(9inV`7$DUmNFU{l0k&2=?r4=n8*;A zrI15_jvWGGH8r)Ut80M2#s`c>$|-P`Y_^p!&RC z)=aQj88ac3E{bw1gjQ-R)T--~)VAgK*D%QF>+i$Cg9k9s+mBQx3A^0|x7Ur<<|e+m zP0fw`U3 z{L>3qw_z=8MiVl&46eQNMi^@B2#$rAaga4E6e}+tc8(O6PjO6D(^rY+)j~wIAmzuD zD3Za2Qf8NhnnJVax}@~B)BBjD^-#4u(hLWtkgYm96m0@mwhacfG`FE|<9~krQAxh6}H~6qkJKDs0`p6BcUMzpZRi0)W&S+E8ByQ__G(ZoC)$-TUD4 z1ULZdZ$Ph$BtmGJ(u&)Ee;x=#!v~`YYW|YDNlEMGS02 zP+ndhY@;u0gU`t-i+?G%k-ka-5;1!dTHCPw&GmTV?w<=2lB3d?xXIER(2vB5DYQ*( z!DV+`2YbMczTN>YNpfH%a6!Uio(Uv=F*G}hyTVEaB%)FFyW!SXC7dI`tY3zOYMFxBMKA4-9^O`8vFrleQzTg11&i7tTQ-qBt|I_ zj-s=%6?3Q0;zX6K+X=LbPe=uXRL490-e5@cr3|f6pDWY4E$a%ubpTlERN9SCWTMO4f$-vrD(IVQjrrMil5O~luK3wx^)O( z=0dss(wGLP!w#2=5^W2g&$M6(EG3gEo(D%R##~M>x8tZTRJ|7!iqa)Ka#5z_kQhI* zP@wzucLgCIfAld2xj=wy+v7;56cfVpN^}%cUI)4>L-n}R4dl8rb!3n&aTUGDOG(wC zDcg{e2ipK0-F2dlrHaNwP8@o@*XxDHA7GF}3yj-61-?}+G&yA1D5zLu#-pjJ1%m@a zc<1f6@xh1hWAE3 z{NqhuL&?f5-A{vvKGz8e#YP|e?b$gj&ji@BU z-7pneSO(b{S!C(+2VjDQDSTSizU5BmRySOEg4_Zz(OCpTr#GX7Yv{kgW?j|u`rE8!v zluFi2Ik@SJQ9UOPUOco+%0tC$0am+}{UaPUJF@vK2Uw=cxx6E``T7}CMnX=b)})b{ zklyaS@RDvq3G&3U-XtJoYCGH$*kr_o{LO2i*4b7>ybR5wy zIrA%Rfzn;0C~ei6uAO4bVNaP0F@U1y%h{3mX7Fp+DN<*AQVO8|o!l`AEC28=e)p3{ z8H9)f@aGTk zn;$#~kA*;pnL9qH(}JE`prZk|K6MXLraX6T(VFD*O;1Kv=ae>nV}Yd>7V|SxC6=lw z(Q*=0!1Ym1z8c8TbusHFrDkgV7SJqO7zWF#<3*o)>gMtA#I~ju?0Rn#UstWSt~~le zO3%VjMT;r4PjAQNcU}jJ*Tr5Tr1jB^F`d)oqvCOSkW1$f8XiR=9*5Q9Ktp>I%nmD( z={Q28<7GoM21GntN8*Is4>_NY3hJzJGQj4t!|n8NuqMVYpU-gTA6+K}x?DO_ncmL& zCV9^WzaN|5-H1kSBhEelJWy$rKyNw`M`uGj=1!l(rj{<{6LOR$GSBCNF3YP(12;vr{jeA^Kr^4r=Yc^ z9l_uTcb@7PSgqlx21Hb{r7{Tp8L{(JT8c(vC{US_7BrW7LJq`mJcIoW6%|YDn?6!qNeNQ94gaU>eT1Ir^CVP z^~38YpAZ2d>?NYW0KJyKi&m!>3rx$|Y!1Bq^2_+`Z=c4VojVX88-v+S*{}@;vsq>s zsG4RWpG7WC57+>2V?7q1dOP3_-Nep|)B?7%ryHx+twT1IfzR*5dvCpqb?etrdV@fd4_~_V8e|+mJed?< zfAu-UrjQ z0Oxw71wL;8@n8&t`}#0?XpoJ=n543pP~YB&$@8Yd;&&kti?W!G7d>eP3oorJ~ zAZvV_N?_C(L+Wt@Ga>#!0M@J(zy8*}IJ{$zfDkozhqDXuCLEM$|ZUE2d zu+X$y3sdOyXY^iHvxxRXKB#;-97pb4#Gs6O~)ug}Rq)PejK$ z+tYuhI~s^mrhQI8oB&Y1kY^LJ99fEUsZp|c0bev1CBve|)qhxqr|xcIK)Xb&*ici0EmS!V~NtSf7R0GE{d09>f z7!WFr6_;y@c5L6a4UazZD3&k( z5W&MoKpZHGjBQ}umvkHwJ4dd<9(V(OOq(_n=bpC|7hil4YbQyMA-|4hT6D5QEG-F> zsU*w7)NGE=B2EPPtQE&$(WPi3N!{YFJMgpvzjz+;{va^I@ma*J6m*6Bpt7N2jZ`xT zCt(VNSjeo5+O>-&OrimHjg{FkN8PVd8Oj`coB#IjHToi?wPJ;I$B=G<+DFMQTU(@S zahg8mwf(M4<IQS!J=!o>JpXeU6lh=1}z7c{2X_C@S#gVHO&LFHg4IB4O>3p z5}42F!ph|zVeR@2oFVw?{kZBU|AM5o$dsNOZd8M|!EJM6^Oke zH*bb`Qb0{So4~Bo=AmQO1f-DV!^2E1x*#T`9?|{d`1yB!0Kd7G4?_A`eR|V+A`o)+ zl}qvEJFds}?p@;7z?~^{fSKU5+L-~1jYb#@)%t6Y$)qtB4x?x`qM^MWu7DFGqhr$T zLoAUB!jjljTkcD(Hl0Yo?Qmk+)M-d0GuZs`di3u)gmjGRt|a!e!0NW6sjC??PMV3v zwr2Dl>0>5?f+;aS)IH`gI`P;y@5la6cEaoSm%Ci(Q|THAgtX0Q$F0xYi{W^L+pEP5 zQ`Vc??P6d(ba()Vy7yzOZ-l{-)oO&Vu?B5ZJJB|^i}zt95|(S>bt>yuA7EuBgV(Zv zHv(E-kB?b~*jNPFSP~?Or5`5n(Ad=ihsT9TIE*y8g6gTk^!q zLMr+zIWTE2MKf{Kx7FZ=hi?UH+!*X17V)G4ER>BB$Rnz{fA>KkRpcN~ZQRZpH|%}~ z0u6OM%#Rp5-5*|V&#w|vi>^eOg~=(+*{;XuLpG5`cw|gOyu~71UMFfAY8jZ1jg9i$ zADtW#Tb50y8HB9*!~1ypuAjkY5Ac2>&_`!kG?PG}*^gVF{t41n1J}{Zzf^~j#bkxU zY)3kwN^F!-8Vzs;sATL#(UiyN5HSTA(c{QclwW0o!OEGypqt%Nja=$WM$*{5X%`0e z9zt?l0EaW+LTzgUCeE3PrjBML)5LT}%OXSy{;e$?=-tqRpMU4asI~da^tslIk%%{1 zOk%>UNx15+e}chg!rX(8h$5JX z;NV~%nvd(m>7QG|`yxCZ7H<(M<&YPU7N~MukTcrl@t~B*Vc)uLj2#^2?iY{8#mq|1 zV1V83!1NhY(KN9c1F>NkeO4qhIo3ij%SbG-%a4t(u0~sJE0$bv4&MVR?U1u=TU|3| zO*xJSyb-G{t;W)!qjOd9b*iw|^542#Q!%X6VN?sk>An1ZKWb`g@w?wWjbA+Ua~$a2 z1&f=8B#H=DKVnf5kdRp#2sn_lpxXj}O$`<-ScI=!^;JxtF&!f#!)nIN(J@792N{GE zWcVPJvd2SXTzcf8g`A=3oI@5Di|+XgR9be~Em&76RKlXQbRrKBb2;ItWPfu{g|cs; z_oEIl`iDRrS#wOCIvGt(O@Ak0>WWn?6s3bdk)*i~DTRJ?cZ>!S;!4ODUPh3*eYYIh z%MV8%p8Wc}j)+dXETG;47^O7*tYE#ak<$S)Z-lumYqqR_I96x>F ze!Tt08z|(`FmWe^lxP^S>jPaa9o;fZ4}r=SgyKnT8x4kF_xo_;x4wlt?)W~A96rJu zTig1I;7k<7TJOOpdU;_VEq2n2OXyuAXQMQqWZkAuuwnBj$mG)S+THm0gAcK4-CEd< z7UVrST=u4Z42!yWg^B#*!~xfQT)FNG`&b?L_G|x3nU5FpLLpybC^)OD2~xc+^g{3WQv7 zE-t_GU$L!wmug{@t^=>nk3=NFht|N(!&rFyNoZ|sWriqQ$RapChGa2?IcJ=J*^7@y zB9mco#5u1zUG%IACJe~wH<3a^pa!$&%*99VeS}ZmTMKL2$oILBqSBn1nF-P&42OqN zu;egn@$oqA!n4soIEY{*#NtI#;0J60JbJ@D*t>o!vjtppS7i%&pJ+UUDGR3I<|qFR zhew8x&Sj<3r%>X5VEj0_H9!jwrUT8!AVXEU0nc3|3x z$H8DVGPqW6!h3G=gsE8hySMPnJ&z#ZtrMM*YJI2uOCT$nj-jEm0srT*JCJi*(ceGB zG(O#HY9pn&I0rWO;K0V+X!6#h-W|ZUOqh<3p zo$v_QmrR}ySEiSZTx(B^Cvb4nUW^{%!lwy>2Js!x6MLG@`ww4I{x3?A*B>u}BD>20tdvI}WXLCcshSK$gc` zi14tru^B^~598l&xE(e2I+^0D^j*vdKtRZp`P1>0?|%bXV;-X;|eVJrbH1QJ5BMmqia$ZYMbkEaIhD9diG-4OddikNZC*6p8f9N>CAcR;v3gTue zztboOD_p(+Ybw5a_1C#XL(^-I70wDXCW2Sm02GS}ghZkd1_IR0q+yRXJfzR1HNc&M zy0oc~FTa1ei9@UFD%v^*P%3GYpO<7wTN>D`1VU{59f-Z0K79rns|MKpuQ4GM5XrWk z>U4C|scx0dq!hhI^scZSN-Ctf0cre_9_gVJyE;$Pnh#NRC@%`B5A*nI8u_jUL+SP< zSr-Zw@|{tNeT#`FwNhZ>0d{JENvxqPNdz<0T1@o(Lk~TOH(q}Q#axCLBhk=AL+KXV z1XCnP001BWNkl+O4X>gbOP0W-BBlfE_S^5mO*h|+{d@OU1ar(^ zRX_+oN0o_}H6)5PIf@BkZwoU69hy<+RzD zeZ~nGp-G@h@Tm&(LIXQo@VjcU;jPuMW=)vZH4W)V6uCr(+uq0~o*1T6PhE^PYu6x^ zjKgVnz*`?c+X+)}Aa)3rIy={rTRYp4JQT+L|8gsQ#sFsnWNO5VU2ZdC=?Koc>^xj~ z_rGAr?jA-8bl}ta8#*|ILmT&^FqTG3Z3`AHScKg>c3{VrtvL6B^O4Tw@$uS~h-IVj zch%$6OV32kT;M6Mdd#?NE(zSZR2Dw73v*}9!uzi;!p@h~#6;h#Y_RNf;a(LNpO)pj%@P;1~b=WAtp;ih!4x9vbFIS|#%8Ffs_4 zFt-c0KK%f<=+gWLy6DE5Mx=u&y!zyy;DHUtO_+*WUmfo!+T>ocNjH?RulFE!?AwK; zHHXu`d;uoTnu>w`e%XJddE!n39neHz?6liq%$qQ}Zxs91>;w{dd}hf~6q0eQTC*CH zrc6c4gifseWIg)E2jT6g!SqvRqPC?D5mMeOhH%P+DOmQKm+_~Eo(*QF_6P4^&BirwG`Voj6&Ip?dKX59N6K51O}v!4NADf#&?5hf;NcM*+}MNsXcA77 zof8u(Wu}O^H5O5@lrS_t1bdSQr(ALtU*BkuK#sIC&ze04@Bijy{PDhD!|$XC&PJZK zLT4X?kXi?Bd-^_<{C1vDEhS0=Y@~}yA{)`e#IQNgmH(GulwFd*OMk zRUuGc%w*AC--emfj$?pIdJJ~=RPMxot3aUVmX=wJV?YQ23(*QT;J$nQ4G-P(Z(Kh2 z1!_4S%J4y9{mE8c%71dW5lql_4-`kJY)BdpVuWfMn$XnJhAS?=0`umb$c$YX0IBnl zzzd0ADQPD5mrB{8hyo$p{V7SfsE6bn;Lb*=t;qZFr~u`^qgroO2|?+$s+bhb(lQky z-Ir9#CC#Kv(Y2`VnEz#;kZMtkOws+AKTP|CkT8|etQsW8HOR66kEQ2Qm*hTZ`90CO z0#!t9FQXO63`fz(O!K7?Cdsv;4HjR5skhdDf4N; zJn{JB_`@HbMLH2fHcK>Co@F_}0p5jx(qWeYZK+svDorn;_N zu>zYu*@%2G3s=B_uiW_!;O*JD6X{4C^XHv}om;ju#V(!# zIb&xO&%2n+!u&ils;5lTmq%p?`hDo>coK!!AM%B%&j z7cKbrAKZ^KPd*bzdJf>jciw^1;eyBK=lewKj0Bb>8n(LZ@YMTZuW_Jxb|(T8YA_TU zhR5qegR2(5yy0GSuik`!Us{mGi$T^^I6980i)P^F$M3XZtkpD_RhP=7K*s#mfP@`mtVk+z1=W4%{Vl47@xWJ3uv9% zis1OT3fMw}mJ`#w0X23%jL{-Sx_e=W<#BlLAtYikxZNJUf00-McDI`cB96z$ku~K2 zzX@~CosZ^8tqdq=El`W@hflnYXCHVB0Y?oV_FRrJ8j;GTVe?t=-6!sbxz2^qctqM1 zOJ-!oGe{kdB6N5d=Pg-^L;LpO^;chk)nUigU;8TJ<6-RBvIRx60Rzz>j*R!>#HEX| z;M~RN>+3HwkaF%x+ppDVL3>RHG6QM!b@yZBP!NV}ktZBeS7IzOhL+Yk+;PiIc`iK95R3U>zJOx9vfc&8-FqXyO;lrq_^TI}5kHr$)ULOm@X>AkGq{aZ6ab>Vs z;cBSG@Bi{g%sl5rw9aV9(9j^C%PjaN9S4l?m>k&i(Kd|l8-mX+Zl(nEshr%>){dr@ z7Cv)Z+S|}OJb?b*0h};zE_V0q#s?c#;*?8IL(xuJm>^o~ny~gSE6`TohBMARo1eY0 zP-1u2_J$_RoIVpZ$1owns;NM&9k!402GQkpojB^aNLs|MiCr91ZvO6#uv+ZgJsFE9 zkW7hGfno+-3xP8N3OwvpNd*{4u-A*kKuSER-L5%DN_g#Q5r@iu2#WMG&6c4 zeU*HGk}C47q7t`_O!I8yRG#5``S z3Qnn?`La2lOGk$859eA{IrOWfM@>4Vz+85o)qV;}C`k{;=dXd!OPUa?fCSY>#x$$R zz#4?rt5@UEM}L9-!-tTFM>(_PP8wxyB#IMd^{&1LEfRXrnzp2cNJ3oNcvNyAaW0A8 zLL)&Ozvv{q{>EGUFo=~n8fa)YN2UBfMmusW6GETMj(-+2HgDU8jaxsF8g9OX70Z`n z`?f7&(B(DY>bw6HdA9-Scn*e02}3*jas5~S83*?r!1DLsV~2>&u8B;09zJjgW1}P7 zDMR+lq+!Sx$W7IX(P#)MYYt~zej(z8q<|nEjh;t)eG9^UF%0bN$C5LaVss#cp@AXP z`h74Ivp9HQ4^Esn4`-coHr{;mZEp7(9vR|!C>>qx=nW1aT8Lxf>Bqs~F(csfB0HSI zegAwXd~h(mNd4@*Hq7{6CpMZxRe2_uu*-OvGwtd@CGpP}?&zOt-{riz8VI)sq zEwS}>i?yAZU=eQk`RzC`&1DKsuiTNu|dMNrVgu%)jUqz-hu* zXpET`DQ%HqmKhF{1F`*KG#l%%WyNOf*u0fXXSdvT3o`Kpo`3$2Tsr&ub=Tv?7yg1b z-h2}-p9eD*&Vi@HkA|7e?0}jr7BIPU3RXQM<(S60Ch5%3qH)^61Ztzhn7&{(zWvzu zF%TYS(J;A>=K9hI?;FJG_ddc~k6yD)S1Y|NfF2g_EykBA|Gi?9C@`bPWV zb$VeQ&ExK`-vVn+c?JN^Krz25hfQXTjX<=N#*C9@;IiAUVW$zYtP zs7~tYKt7wn*!VcJ!9@SlxlJX8L?X^09cD9T%$|!6H?G2lJ)hvB>%WBF!Coot(R`Uq z9xkgLkwatHw_+#q(G;9^CmU)}vQgjMjQJ-nV75IPiDA~vS=h60FE(%b1Pe}_kGb>b z;klQeN6eDK$(NjlBS#LwZL(p*tE5E&R)%;DK*}}dwCGK=2kR6Uj zP+*M{iAp8W*WXv`j#wJNah8;)l62FQWu5V}S!B7|poGI^db&aaa3>9yhiU4x4NkWk z$#|R@t4WilprLAj-T$Z@b1W0GV#R7$tt6WBvOx+3aSDXgi6VGPW&>zpi`JHw+x`?q z#AFmZOqKCg^?#OWWQGLX8mfVTxDCohDHXc18mDp$WjsW^(&v-LL+H(-%7pTG`l+Yz z!Ls)-Iy}gpBvOhYTWD!llC-KadYNu8A#)leNA06r!{ce2l07svHS>=}LSeoiq!GF2 zp$GBp@BAMQT=JIk;Hv9-^!w@u!!OXUEz!cH0d^)vxK#JsvST|oZQsUa9(ubE-gzHe zKKX<*WRn-T`bRe+<21nU_Ts?${TS{Z#1}645(WY?LkX(6L#&` ziIi&RrGUmB7Nrtw9vAiw9KfW-Gcft&S?C`cVzf<&o!T-tz4r;+B`;21a60zwImF*F z;C17`zCEb%yYY`-z6?8d?nGa2F9rtsxZKm#H3@^m14tKh7)wXsp5#N*>^3-@E~F1d z@W2gsa=n=cUa^mflr8Arp;!>7{lnS#+5_K3clRzd`5Te!jl(#WLGPZ!*tLBZTAEvM z)>&tvW8xI7TDcONHmt$9=bVSGNt5xDyMKhS@lkyC^Pk1MQx{>wj!!W4lvx-zMi5Cy z6-8M@CYr+hiL)`St_#avdLOZHlMh1tN<|Yk~Wd5QTB6Ls81ZiF1a3Jj{qEKtbjKy=% z7aUagQ1%T8c0&io5lDMb45skYr{Znk*_3sZojKBQldA#@j`+Q)2 z{>sa+zxM#Wm!kIH;=ccWQjE$kLp#hBzjp#qp zivtG^adG(U($8LuYrpXg96WLa$1j+Ng^LzqWMq`YVR-e!*D(L0 zlTq7I$6gZ7xC!@s?N$`2%t$Tg*&HWfTQP&4e{HEteZ$wF$r#1k)&xPMU_XIBe=9iFnm>9H?PJ=RY z2dp@>b}!Ug>SZheC5rq5A~KfV2uafE%+Ot+ z(lkLDEn(OtwurMd#jrqK113(Hj!eFQuU>sMi={(jRQi({N(Pge;{=tIvY8AsAk-~K zC42&}Y)PP6 z*h!NnqQ3rrsXOK<5R%Pd#flY-zQ~=FUD|kBt@OZ`R7E4ds!v~qAp#?)5P{i7*Zl=U;^mC-hrf;0eWEgPqBH?lokvb*VEH*SZH8B-N z9T=g(5zJn2BHn)QT}I)w5w)q6?vg2sfV8-Wk*LDmx;sWKN?uSVBer$#WFSIqi?msm zz56b!BRn?B-83$bn>Y3D z-Q8TD^#yzwqacyV!0C0NcVqyT7B^1*;u4I8Lws#+s(X4H@zI|@#KeY)m^*78h6aOh zSZp}7e-G>yGp@P*S_}n)7#tcy-@*NSpJ&XRg+x4wAbmE?7_u3V^<^>b^qKI~_%Yry zi2wNR{qV!V*FsDI-7nT%)JkK)wNpNX&i^d_ERPzdFb>QBO(v0}x$%a~b9rZPBb z;VJn17rub!|MUlZ@XlK}|AM7BW661V;J*7XJUoC29j*B67ry|r--UtHC>oA$!{L!5 zT(d1?a$L)w(K-c(H}1vWO?%*VQ1_36TL2@m7?<*>pPvBf?j5_ZcI66I+}AeLFimfF zyU;MP9iBEn8jov*wa&o;#iwrjIX1kz5?&W&)6$yDo*JqgGk@tKT>sPWVIUZUDQCi( z=Rd^1UVc6HZ`+0St5#z6tXYUrcSs}#tJ%T_F&!8(Cq;->avx5RTcRO{oX>#3^hVg~ zoCt--8OYJk`5Zos>==M0Sj7IVJ?QTpL~UIoqR}wEe%-Z5CBj(t_S@*1JPDus;urC& z$NrP+{j`4f?d!q$U$_wF7CSs09+=!_w6}NS%}1WcOAkMT`kKb_>>l>DDHgaK6U@Xg zW$q;0_{bedL@@D!bx;A+RR7vEw1Ofr^)-D=?unS3S- zzt6{s!tU*VuK#Xx)r4KrKOIJp@Ob&Yuc@z?Oe&z?ZQUB{n8 z{vmAnUo0YS&*Fzq-3M1&EfSF!3gcNA2eUATau^#N675bPfD1lzDV}-y85}scA7`F^ zIr>FA9QAZg3s)X$#90!(6AiFs+PX+XX|1M4{8w|KC2 z#TpomR@BusqI<_C%%3+0-@Ne#Jp0@q@c!}-(K%@%PC4ad23x;+>`_dgHG_38J>&av z#uv^*EEtAAXUCmaeuq2dxNTVrnJK^$J5!2b?&1@0`R)J20WCL_LheWc9sU-c&9ZIB zb}p^a`fKm#;GZ8I9Yv9bmS!>tN5Tk&L(B%$G}dG8@yBE5-fgf?_QTue$N1PdcbSo< z#a*&v``hbLii*8D#Q+jlwzail?z|JY+l>C)AE;&4g{AWURVuWa4Dk4Uh~+bQd(CpR zFPMb3SsjQD1hMYr6=-Yhz&YogheS9A6A|#)9GYtz8H7;#yo+Wz{gv4^D4tH9H2LoXLI`k> z7J&jjiF>HcQ))osIUo~1Rp$Yt3qgO3x>U`LYvSqwlP5q~gIJz2D4GZ<&uF`GWiP9O zwy-S1kSJS721azyP(UT?brPA<&yyI7>T#q6AwQ6J-gyW8M-E_gXn->fLXkWNK^rY8 zHiUT*WvoRkiEcqO>yh`m2cI%q&LW5!GjsXG?r`Cm-~SG$pK%uU?c2*6U0Y)dBchO$ zW<%7y;peMt+hwY!bjQ%aw{6ExY}&qs%S?38FJHC{dv_up5Xv0A70OFAd65$ZOd(-!jEtar)?FK%8_wC+^ z#->J?%vKByjv|{)p=d0?;YFhaWR zR77iCBObr`A*^}hL-^b^3|?6;MKxff3Bk}X=AJc=9Yx1t5tw5pYW7{Z>d-8^O5U)RWfD%V{5b?ol$#_KP?hT@ zZbmGfLUb^UL{A7ktGD66t{!gZPN$OGR{ow3M_ao5W3TLYihsF+J>DNDpgMHLtmxa}2hTrBxrZfBYkM?AVHv7B9lY`P1>*N3Y_G z-?^IIV6D*{esc9~$iykBB8Ow0wSx!mg-Z#Xc+Nt6>3d&i{n6p|J^0i8zlAwxz(0KM zv+T1m9ttsNr1PF49?#!F5jKkjPPF z`S1FKR5KwALRPNit_t!mpx;xUJC|b=-9(2hqd-!b>w!fIgNV3AZUR3XYM{tYnE(JF z07*naRC!bW^+Jg#t-A&xQW&W?CNi9S~!qI()c~4a2BA$?kH%R_nr%_z^6){4%s>h?1}|2A@DUp) zQR(N5GtR_S*Ib7`KKCr%c=;uqfBt#+?oGGguDgDS&6_r2!h}xF@;atYLT_vU^DkZq zYn=;YkqC;}JnG3kGMdHu*H@y&)qrFuhR&`D2o4W307%3VY!F5V#-yoJ(9+t5+CVLK z@7jT$-MbKu#$fbVu;j`M&~f5qgc5OdwY1~$TOY#8mzTlsspV{10-1@+F~RX+%sY1h z{`F@!W1x5J|I+r}@o`qy*6`94jYc!ljC!*yS;gJP#@G~hY*P~m5HP(LCxIj+H-Qu& zfh0GC65!HHAQV#r#Pnji3$D1!mSy$cXQUZvMwOLRWVOHh%e~ zh$LNl`4#xvlg}VH5JE86kFNF(l+T=k(xXbyGSq^3C(VaHBNuP|^(DOd@Uxg$TqZEF zT$j@+s3EN#x`%o&Z`lH@dEjRB_65=3(2d5;htaaT4kIL3+id9Sq}pZ>f4%R1?BBN+ z&p!Jsrca-NJMX*`zyHG@v3=V%5w+{-?ZM)cm*GIuAxvK~6BUbQqN%w>3Wbs2Fy>7- z3XPi%;4NzphCe7YN%gHE_2 z5WzmihW{+SkigaV?`6tWd zPG@Hq($mu57`7p)HHzVeL45Ji7ZTuS&zyxLHT&_an{Pr{Wf^Y%?Qg~EV!?68pL~hG^xU_qQT7mW+y$GDIW8(&`BWRiA|CKyP=iv;qqAb1-wpG$f}uB`N6} z9)LUDha|Thu}lY&^WCBuLd_nI90%%paAac@Jn>{WkR;q4#?fPrTOewpbcM~x^rN<> zUJ~YHryZl=FnnoV(XnX@_Tz(%pCM;PA?B={hrXsxeDTu9C@q+T2SMKWe+jVk557p$;Y@a{+*P{f>LynJRV$q<>h$)&9{(0u~7YAC^G3F zmoFmc3Mr5*1h{Y0=-fLptWz?)*~UYR`+&R}iFqPds(YM5V(h_jg!4T2k zF=nm|JG>u4b~mDn)EZ*)nVd?UkP#X5_>U4({|`>ch7IEI$ZV38g&-l+r8nbN79(FL zQ@GU?k+9GZF~BkK79XaX9gQc@jA?twtq@m5^+(WNxDg$(pfZ!iv1*{|9DM;;-B?Ko zZ(3SAP`ife*r&EW%Oep0^qgKl(Uo4%ZmzTV=aj-)m4UO-jaq5q-cWnc;&E4-Lse z+e1#szFneZ$q!Bue6w>KV$ldvGkv)D)@xw%rvMQl*T@PTDo6UWI5i);4PN-^c!+U&=>E);&YZEIn|9& zO91y>{|BUuQni!bF;QiRlQbKNpsTk-^h<7d?DxVB-}A)|4Ak_)9dTm!*V~bkorR`` z25~+8&26_~{rdIz+mlb?q?1-+%?&@ny?=cG^|dv~&&xqiUk@f9H68n!4q^WHjz?B$ zz6ATx$Ov*Xb1>2$#>O{4gLl+}y<2t&)LdFpB2_dIt>%UXd5^jI1<1(GMt)%dO3TWH zv$19CW|{t(xnd3qXO$pgi=%A9L_Br#z4-F=kA;}ZDJrfx1{(HHTUr}&{P&h%&D}Sl zdUp-x7tO{qcRqyeTeeBRnG1t3YhHF1mM>k5P>|?H2!3C>$ig#_clY(nC~{TJA=ETB z;Hv-n5y}_M!Z)>h5KmSG()`>)v>t3i-+@j9>wD1E)QS@poPeh0W*No4{HiPD`Kzu;xcM;O@KbK{z}h(EJx)e2!ITor%Np^I$wPDuu86x;J93Dh}e*n#mO=xUs6+Q?jI?}ve@&( z8E9&1l@{`7|1ex#fUPrz57vEv%*-5&jt=3wr=Nr~&pZ=%{Ncax`Ilc{=A5JOqZ_Wr z`VT(B$M3#}%F1$(k(rY2gS#jlpKkdK=l=9kxIL*r#{m9(-EHXW=o3ze<@+Tumde0M z5iB_MIGpqID}^`LQ`?D#&DAJ$XCrAOhDbOhIvY~4Cp#q`aG(?1JV*$xWf;c<(5x)_((c%z-HRCpJ5Bb8|6$<_sNUO-ho3 zmBxQWy8F7jk?!@t<8dR&=|D%YA0KY~9K{RDMGvT}t`!?!U5`nH6D8igsG_dn)VQR+Ztt7-sHvVskh^gVt5Jg-@@QFrVaQ*tH#5c?FVOc-$#M z_~&Gdh!n_;=db{QCv|FNWSzaRxTYk3uxH#=e165Z_DyC1LiB!KIvt}KI z3og7+CXg5##2C*(UR07Gg+w8Gx;fo7EK=-DfD)~?aTk?vdN;HKW%T%g)+=G!fYsfUB94i*qV;|!+ zHu$xRgfqVnerd;W>Vtd}x(V9FE8xKX{rKBcPob&q2s&Dtg#5(h!)nI}tVkv^38AhO z;iB+{Dx2AuLy5wjj$4ua%`Ba=$7AA@N?N6W+rq_5@Zw9a2>dIu;l_sA$~Y3qojx72 z#&ujv0Tcb2i5@G1UHkW9Pt_ibh+$I_K6(EGY~8U%R0U(62rmEak73J9g)h~I^)J4U zd~bmWfVI{&ibo3*GgbiPuhiAoqOZFHsUEk$@`O7Ji;J;o!$$N4`w<)&LRMuimR)=r z>Kf~$4Z-WB{sJdA++inj{5d#r;bP?F=3~pY9kLmid@&(SPEAE!eVz1S`QF*Cim-af z@S!Ep4DTcljyq$i^bb>q9r(+2wf=q`GEwv5O?`IXBlbMCvZodPce)bt2fAk@objm6C{_2ZmWSYI{+-x5L0|AuH znv5;`w_y1NC&OQyi!O3rVxve;PDPr-jaTk}0p;0~P`&Gb7$TCe%XKwl`gBQb_w4#c z=Km|ERElm!Bsz-9DO2IeNJDS57tTBv(o3>19E+m7umn&4_I`Z++6PEa^_ljeQA@Nt zq#bj@*~@U%pKe4`T^r^WPRHZFzaKj`ZxP`(CbTSJGBf~BcG0>0Y=bnnJ$@z$-C1ErvE(VANMTKZN)QpBr)kqCF(0HT{xjA_v=TDU2 zqKhsfEa43xOsk1P9?p!?n=%c8wJt8_nEX4lt(u*i7E=Ff>FX}p5F`DMUuzM5> z&sh#njvp;8?NV*q!Xtu&4Al=}>*rhK+0Q>_4%V!>7O%Ya3LblmlQ$9k=GI$;uXNvC z_ae>hmN8K#11V`<4140(erP8yy!l#@cuyXP;m&JrL2pMdJTA8;SH??+NmhSS2*;ju zJTCan8gzH`AkrVkp-*-pHJF67WVfKmT!%ETQygwOjPrkaIl2Npf-1_hNpeVAm4!{be+bT`B=|Big#R#c;zWs~IXOAlwQH9o zJ(4gD41c9#@rCE3rL|d58lt$|vs4Zxmxir*9{5c1SWt4x zjhzFwAjL|-oM_@kE1oSzoX$q!GEUzm3)iBoVk)xpsT)#+>#kcP6Hz?3*h&-cEW`yd z7Y^#K>p0#AUzf>-5^~iuifdmzrc|tqq*Osd zQfP{oDm+O3{>qBU$j;3i=cV)?YR9lj-L!F&a6;IdV)n&DQZLFRAmUuAs;8>TMpZh) z5EfL#jPgoeq8Fk_$T$Nm0|7}w#^l7HAWAk?=5<1`O&}qg99VSr&B)A>Bt()2u{L)I z5oz1j?Rf6*PourL0j&Yp$UrEJNt4P@R$hjWKmQcF5ADSXXD&zO!WpP*te5A_+fz_ji2ALEvE#i> zSh`>#&N%(Ms6KQAZLRHyMuv=MPYf+>?daEU zOLd6yC<$Fo*fDuhC7!{#_6At7$!}w zgwvIR?r1M67fnOXlp^#5`Z1%T0?*#^5I%kReWbb5$CVe#LZ@u|%1che_kVeXtdnrZ z0N(%GI+W#4f|EtbNDS%TRN)v9WuyH($KrWt5Dj616r#Th`8S7Yq9Rp7vN9l1d&Q28TnF?=I@Pk;rP>+ z#MN*l2s^~Q;8O%5X%F}mz<6bYuBU5nTg)!4zUwv44`-+*AX{2 zlWzVFPg<&wjVX!E17s89glx^QKKWQd5mpD_7!}dGqk# z1Ai53`QT6pje#D7oe{)5F`TjH0)$4{I_edoUz#fwU3*)QJCcR%pKXRO&4WiDdJyk_ z_%ZIh`%ZNA_DT!p>T9mX$M1fOH(q}gbLSo<#89WhhO7zs*xz~>!Q>&Ff8!PCZ0SIe z+lSv>_8Tf)JLblxgyZAQYn{&+a%re|T_ zhda=;>jaGxD&!#!BK zdKDtHg^0wl>9x;LQc!|L%a#h7N@LBTz#xk93USO)b0v`*pM)ePFD=DTlWNGH^Xq?) z*?^3FZ{4y57hQP15dS%C!^A^PSGjey_|}07ZE29kAoBP!2%)Hh9ONbm(Fqw%M7X9o zs_SxlB?-wZDiY0*HP@|?bC-Yszem)*l6ESpmcjy3x6mmL=Cl(h5?U0^>9=c{6 z({M*bs7%#|B_FXSHKpUAQ$76P$;ZS;zQvN8w>hLR=f5&B8y)#SI3fQzBqS2iB!sfa zIXS|@CCgb%r;HS~IN>TkSP~Fz$Bd1qs+BYU&ctN#S{NhHh`5$b=AW zD7qBYIcpgkRRR~GcqTkj?U^^nufat`5|-`$9jG!j`y z;7xMl=vJui!Z+%d-v?c`j6hnf&~k(bmc0neeOl{^>&JF_Piwv zv3b{4L{r09edCpA>1>tu4>u;)!nDfC*!=bv*!%Ggloys^-;QrkR9J-E>>SkBH^>?x znU>;7MHBK-S9?T6>BvFq3j`2z$8p9F&Vj$Y0Bzk}m@{KKp8ws$Sikl?r2Q-Kt6zgA znh=4}kOghWl32!vEfNike-(FKBz zG&j^E9E#wAi!Z~6AH9!#d-llWN|MWgvSVgqZ_Q4ea>W_&u)+b8CteS~Z+f7sa#c$UjWRD^kBG*U-y>c^h@Wpc< zBYoHfZ`^_Iu0G+VFkz(Ml4w_?xP^;TTvCjJi4)P)(+RgX1x{}Y4%Qw-U^s}WOO8TT zF{RLp@#cLm;H}5k!sn%$uT7FYD#0@5^u@Zd<}bg-5|5*{p%HWD&XdFZ(7`HHOs>Rjx890B{{A*exCf#Uv<~zk5DOx=G6!d@xezr+ zYE{e&K&CGfJxAK%XpLgDGmH}!9E-`7lkuC|ZWRvAoTKO9njc(;X_Zs)*Sr3T4PSkU z>C>jl=yhgZ7UG^{tpEBmEII!qOkX%xJakIZ^6S0jue^!D~6&S%auV`Nn90|x4Pv3=c_C@U;QPHrBuvNQ4VM;~M6 z%;^}RR}$sSZ5#Np6-+BC?1$&Nl0RFH37Nn-)XCUtSex{#EBEIal=MYG>s02 zkm~ga5+cW%_$(P=Lh}bQpds84%B?ekkI@czu2}B1JX?8vOfHzTI9;ijR5ls;6N=%> z$ixqS_#;`*eDCx=60x$_sFG}{nEJ0tGmDB~4O=8~4r9`&j0V$rFbPNEP&LVhrW}f1 zh?kj3UZe$MEDE$}RwZ#YiKKwzkW2{uJ2CY?mW1%)q#cv&l<62=xafp%3dJI(%6P7} zSVaF+NUBzqWGsZGJ!8~SEmuC%h!QUk3oT(HBW|f<+8~0Am}ccg7_`wIzSbG>f-Aaa&Rtz~ICNa{?!l<+g2i7KiF7gwCfuK6HCU7gg zLTvU2Hva!idaDQ@)doO2e|zW5UAn;PYyvwm*eqaU}Z%_Elwu307tPL#L~htvRT z-@ya;X5VgvhoeF;-MHaPQ6eSgHe?^dHMjo+qZuwCh!y1)pnCg$?0kOc?ITHhjVD`!L;h#vE?m?N%u|P-?t~d!ox$XAdjaV>a zJ{oIkMfhytk|i?#Ut8B;D3fs=O=fU%xzHW#M0dCwr(AO;+_^pk`}?KMkrs8}z90P= zk>HR(h+I!{4-8;LV(QFg^RVW=o6y?PCd#E-KiGsL8>+-9lSxQ#dpk-dPQ2`A)FM!<{cYw>Q&#vl;dWgt)oi`p2k+(o$L}Zw5Naf zFtU;};fTc1)6oe}3ddc0LB&z7v(BDwF=skv{xRt8??ctWgE-P~1PfLji*s(c1ht)w z=EJO!~q<_3{$wFLk(fN39-P`Et>_Asn4=%gnYDu7}e?nXFl4%tf zL>OUL7~lWl#pv$uMP=n=ymnrD~XrqUl#6v{L`KI)o*@{Z+7nxfw)=6&BeAoUt`jO zsW|b%)6vq_sxgN#W@J{?O2%jEfJ3!m=iv zZWks^sYK2#65zGZ(f5gPB6veD9b9qe_wMO zjvQ)0ac+T3Sg|$AY|fct$54D2N1wJ3XaCn#sH?4!)>(dTKALtN#)g+aLV+g}N6(s# zq}Zq+ptO$QJt5-C6~}S&y5=_QJ9H3{4WKD;0Y_ z+={;HR-C-zBve-&lDJ$@R3PnapEpg^tqXEDUMxNDWb}vnrA?CU_T!^x*I{z$WGr2|LilX ziRr{~2(>wcwI%ayQ#<|@MauT>-HX-dorhpwH@xZTat{*)wl!wKm@X5K>L0@*Q0$?i zN@L&$QG7)~^m}Fafrol>GLlm~C@Zf(c77r93yN^{b=RT4rysG{i0HCdO0|@2R|C5q z`J7NWHPbzoZ_T%OFXPU#G4z8H0v0N7CSgR_#IPb0%mJO=RMk{UDzLas7DR^U3yG<0 zrRh|tb-tO;|4*EdNEBav^`$^>nOWItA1q!Us&L5<9&%$Jn(b*`p}i@3uM^F%43%U| z*P3Itl9zarS_m6-W!wwum)fUM(K7Q7ZvaJT2(>wrQ%tXq{kT!lRv=9H@Iw#cz~0?L z4kDbcig{{cB$b>nhQ}mZ8RB^8cl6@= z|GE)(-gP$)9js1_CRsmY*iHX-S>&6j5fuOBv`>N)l4Qf4Lsi&)U@s!kAq)==VbfO| zuzmYB>Fk7TVO)9J^+?L~pu4jZt|S+7vU0I={nt3~=8Eoxo&7v&u5g-ZbOZ$j z1t_g3$EL40VPG%_Z;>B4Q;U%^xd_5sU}1`1`9+Hg^ho18RMqot25Cz6kF7(Vt)&v58GM zS>@v%GJ=D>s9Z1|KY8pnG!QzE1MVaz-hbi^gqjCXkeP?>_I6}v_yr;j1_p#g%AW1j zS6z!Io_Zbf@5aQ!pnbp8t*^z zh9n`f%nkR;LPC~Za565ubqx;H)yn?JO3%QncRh!p#y+fCyc`&gV0dsq4H?KdByqZ@yQ7uUXo?K`(4dqOVa$v|6w8_vD{0%VsJp{K7GQ_3sw z&%4*+ou^)bKb@jPs+zgqhd`VMv=dDM>P`Ud0{ za5;H64>-KL3K{-v(@G<%3=yXrwU1){nM-iy zk1xiNBS%CZ#SR;?eLmFgti~6wdaozcjyyck($LArkw^?qk|>8paQO4R$g+Dd*d4^8g~wy(u3dr-x?N60 zhr%c;n~33&IQAZ@#?HNaker=@W6xLyR|ZW0JESF&>&}# zW#?l4++&cDk!ciD6$wei<-~NRp$Lp~HXk3Xd9ZTQi5fE(U$`1I)m8BMv&1}9%va6% zAm(_c&CX;&4Ckop!GQ>>nu<6W;2_c<2f8KQPO&lyfVq*HmWHy5$w>2OVCL*OIRE?$ zWypdb+~0gXz8{{&M8Q=-mx`$g*I46#tCRtizZh%%n`VrecG2LJ;DA`TdOF zgty3qNzgCucSYE(vFAyXCdobe&nF?#C^mh$5zZ8+pbPA;%GesIR;+|1xzNv=DOjk8 zy7%dLkM^l}5R#xJLT5%>#3ImGlfBj`ktV8^pR4xQG`Z4;$E1cW1Cp9JwZnFdh^R?V zY*favn6W+i5v}S9Xl8nLUZm$R7AtFB{{pj!I zdlv&Ao2f``Ho581p%DK1;3K&B(koC^bx@$SZ^2&)`muGdEa`gHMG=;?_z5_SVyaX4 zAbSq%l|V?Y%GQmWuygBHN!CK~FfRG+b#UgSiC7KU`TW^TeC*p2<4?UY`rKRpd8 zPM5-&aYzr-lkP!FS3BYJf{EhbNR&*V1 zMeXh?vAOqneR4lY1Y?yNj)V}34kEKS3n!d?BJwJV(AOW7N}eB?>FG!g#qie~{){+n z+>`7IX_~`KnDK!gR2(}4KYjdGG_<#%zdwlLq6uiPX~4UWy^dJl2r|7sIaty?USX%R z!l!!f+2@{zmtT7w4XsV+4R*pmDHGqh_B`0V9!a{mudK-cYtvH6abjU14s6_o51)Mp zuBZb(4=wMR4^WkmiJXpSlS?!-GK82Xj^n?(5R1=PiI&bD3=D;(pF3mnRQ%(f=kfki zuOTgk?HILV=Vx`o?Z)zpPQm#%Uxn(1dVw)Xa7zlu@y316A>7=LdW;T~D zzPbkItzM0Z1^L*rc{BR@`*G=2S7ZI>pW@368{zi5&>8H&3Ey3Y5{do7uH{ef7hbP&McqAgNSE)jsYI`mQmox)p8_pR+N1$Eg^A~+@1zI}W z<$I2rF&i)3{)9n#vSoRQ4+v%Roi=n2cHoj<{|LvPwN%8=#)*;|E46_x1hXqQPjnmb-{*=1OG{387L7e7INB!ILD89498OX2i+(Mcsj?EIDB*zFPk|s;jC*#+~~r)su?6qC#xjvlE@eeK_OV z@1uOdOtiMO%bs^T?UNZ zh!OfB8CO>x%1*lzNfDr7TNN^r+%oaBdD9k5pD_(?M+#!25g9|}KIsVbBB!hXb5|Y% zm)~tr>L^lOZe+TB`0T~^P+Bwzi&rccz84Wzir1Co6$yglOV1FKIG#76OZ0DkG2;); zZyng?@Fq$_!N)YO2iIPGCEj`cpVBU5QOk27+2xeSr({t@2>ItM1UOAOGDLn zm0an4)<9q(J92uGA|S~Mr%s7_#6@pNN_%;In$#K6s+r=nk`JAxq1vk<$dkV!NC?|8 zqo}N$giQKG{il%-W;qn>dQS=niqEST_L_n1XKh3QMgD5I4 z#kzOjmoZgxE|>sWeK>1TYmhM~L}D>;VHk*xeNdBx5Srcc&35dq+Am2^XkZ9?ckaa2 zEt>^-3XOzu+3$V;dyW@9J>7D^i3W?!j-1RK^tE>3;O2eks%=3eqzr#9HF8~?UKdJ_ zs=$=vXCj$oMvjl^O4Gwm5(dM)5urAbXXg4}OmqE^IVA^8g06pLZzv>ABo{#WqM<7<(Yk}lPR&f{y<83^`b#bu}C>|b1l zn)-UFNSQRypf4Vc;=L#SfyV9CC@q+P3Au&H@cSfiP#dHt*e@-dfzcrp%_zZ=)h8i6 zHxoTQed-w_5yz@?v`NimKReTpP-g(|JpLxytD6PsS#jbD*khw|Sn#0cA$Fvx5xe&6 zluCWc_g7&4NhhGQuV2@^BMDQ=EAh{JUclQ=5DB4U=oq5J3Q3ZXSOCkvw-OiKvPS$h z#KQ?T_|no4?Hj`8bzflrS342u4Pn{x6-aR=qx!&pY0;c=`ggH)*ADEi+J*eeLY#K_ z_mELifbKvqU{|KTjQ(3pImX!)jAv}Z=c5ddsJlfTihVGYJHV?IAtw?u`$+WHmBj;_R+KR6$$ z**W`%@ky%bY?k1!<61vM2zdw<4r+& zQYt=q{yj{cJPpfNohbYXiKFy=$}PfN%C@Kb;PH56kLq;Hzqet=aTKj{!0K0U;**K2 zGa1Dbi}2Tb?#7>fe=EHHY%^l3+m5J|3`fYdY7)XTM6Q$F067lH58?Tt=L2Jcq9x>m zxZqAr5mCU>vI;noQ*q6;*9p214APTKkrj#c;-X7i5z4mrB0|3}qdKm|uSrPES*EqN z5dt+M!WI)@j0-}pCAlCfd&ZYhN`bm9%RiF1+NDS(BEqhLBtwxAR8*Gz?<6728aI8l z2`+cCOq}p04-;CGc8nh23g_^sVWq;rr+>!pk)b3rNt38#j3AihIb-<9DrT0LS}`)X zGI?VOsf;7|Qg=b5Cc(PPaXTl#wPsX_TQtaz6PU_FnW6fu+RW7<+bpgKgWtmPv_FER0KUxeg8@Azj_N z=EU4fufm_^lgfN#a0r3kfQ-nI*OTgXBQrk>Dd`?`^-^h1brASr7rhiyk(r*aW+!Th zCaDBv>r;}2A4EcOI1s{6U_cV3^sIDvv;AU-MW#QW2M;FY_~=2LnVtq$#DNEX^hb;i zvdv{jgvi>McAKugG=j>93EEfem}Cj8ECF3{mCM<Q}N;B|HMBZdKMm+FELpq zch7DYBxJ>t~^YKO;+O!wp-Z0{<9)*Yv3}Xb@CApY> z!W@(yH3fsAL2nMf@$;-UqiM85!wmLIUj% z52CHN3lpc5V!>&PP&#)i+S}S7z_ne~F{hVL$Me5`2%o+54l?|?#^Kj&9Li7=sTu9X zvU5(x1;4pge3Yy)d=e8=Jzn{pwL1=B-^LwiJ=BPdvkSQ0RvjUD(H+s5z^*W5Jy1~6Q z9yct-qY6*to5p;KTNp&kx zGp?eJW%;FeI;=4*sEV*oZl5(W!$9)>MWf%sQk%&oK$3>i)|8$LnN;JqipFT?y&r zM|!3Y?sT`bJ=j*01i~P2Jc~H-LP51p*S?3NX3W8&Jq4FotpotLbjRoq!)|R1#h|+1;rDP=F7&6S+jA;rI*P#I};og470)EOqQgG=s2&3 zF1l<%i6TV89oHZrEPfb}4mu>?K)$0@ZLzJyNe@_Teq>d$ft#c)7` zo1s6eN~V@OujN2%aW}?#UgU9b3@=TRkPIQ}2{}iyH=CdZ26Q5c>m=O`|AZV=95r3Ea=NHAYI?weLL?<&>ZIxT@Zs0+kB6Q{W=5X0 zDy%Vgv6^sjf}{`2&psI!-g2Fo4{8fm+nC%lgvnVPU}O|M?L7$f_6zKv;&uzls+YrMX$`5IAni{Y(v(nH5v<{O=#fr?0#tNC=Z>nlaKePm++KHk@_cC0Kg?DQIYJ zNgTMm4$V}ma}O<;evLFoX^DXG*nH`q3Iq`1W5fCr)muta?;`V-|vWq9rEw{{GxTAve(SFgg7^G?Q*+IndrIP5N@rg$(E;Y8E0AwG_ZL$>9m#rI%pK5gNe zHpiHusTPpj;F5rhm_pOUMrp@WYifijwys6C*5gs-_R(vHLR{pi@PtfgFU8p&jfzkj zl~=!f`6EoJoQ4I9j*}SVN=`v^Xc!Z+^D(VrnzX4Yh{kpaD|hSuBv8skyIg~VMlEv> z4at)4heTYq|9|z%pX0elpF~z+jwl>kEnbytH?JWUB31#X+(XgZFwVm){)Dt@w@U&> z3433LADMZ1usPkh;U_nuqP$$VjQSQ-Nt{WDa6;%EGZIBdPmfG!k}{wuh~<#0zf8%#j>XV!*kkBu z>lFTn6);4fA{H0&VOpA3SlTp}V=Hbnu4F_pbQ0r1CTDuD%|)3FZJlFd!A8*ob@h!C zVK6>I!a*{@m0k_JGPe7;88zM*xOrq0QzuWshL=CV%lAGCH_}yL$wVbVLV{g5^M>=W z;+nH@q`pqj9ZA@DpJmF-_$SdP!{ve}J>3wCM+Kf942HyX(Bha_LPXYBp_V-68A;B| z3RcICr1fL7!;_v0U%F5BCOIj*1|BNBXPhJyp=SgM zQ5R-Sw0Y1IaR|jiIQERiSbft~s5*F9gE`^j5$YCLm0C=K7bm6o5#mG^EB4f6ga*SH z3Q_%0pPj@)xi1<~ROQ$@*!24JlG%z#y_k7o`lp? zkFqrOZ+ zW|U7683(pwWHOR_d;GOngfxR#TSbXH4ohLww8!|K3kvd4bGRB;U4AKQ_Z>oBX`WFL z*L5mrxfH9W=+qZ7NCHtkL*zDgAVd{XQfR#B6$_H#QDD_cr{Ra!-++z|t~166-Pd-T z!*D`02_XrasIxqOlQ>8`(&J0dG0jU1=R=EMc`PPDvCcL96*?$Eq()9|gQ%%<3eN_G z8!Uxyu0?U1k3>Xs>VJor%681A%|bvSF_l3}k&rR8BEc#&A=%2tq?wPI8En;Fn)~ zChn@CK(Dlof&+sBWpPpR^_fhmOR0srXdt&9zV%s0uT&9~63FLYc?s_OpNG)h(zm{9h3J?K8IB5HX+tY|Cdk0N-kuPY2dN~2^SZW7hQ{50c#zj zo1Y6;Tw$e6rhQNI7eW^o16l7%!!A7aSw*OLb5)j;x+KE2zmv( z#ntr2M{mKPJ&w+fPD#oVsFLw!kYEwz0y7g%rm{49K9S8^*oR!B^_K>=)G9&SVWx=C zLt9QeCLac7C1KaxC(S!z0(qNVDF*_R+VV*i*z)EVc=6t+;f^{4CF0tZgjU4LII?^; zPQCs-)Hc*38qrG98flX|t=XHrAxjWUHouUUnc!)4qxZv*L#<5K3M^*LDd$?lj6O%* zV|-n%H$iHw0zt)l^qE@drEFVut(`q(7GC|!Gx*@|uOc&(NQiPm7?>pqp>;yiFpfQU zxlDcR+pk(OTD__^kVz#H2apx$t&Ns=KI1AgNpehY+KQ;MOCv_iyh&&8R=`;qtLlSwm`v7JLn*!k8* zRF+j>>a3aa%!z`JMn+MTk&77>Qw1%TapG9~|42ggxYiHr>>ASuF%QGUKGFTK+fZ6s zinY%_hhP8d7l;pskmmCX>0h6}J|{_l4RmLsI_ujSNmxCVTFC`RjfrWi`yI!3Nu^Zuf0AlPF72_ zMc=u17pe|dNd*@QhEa3qFm`O;Dpu#=SQuB_ay`-~Wud#bTV90i6lT>D@TAq^90vd> z3rb-&{iTGW`3-zV^evETIYw7Z7i>vAlaQh^>#YON7D z60t0zs}k>ce?~E7@??Dd##eaiPmjSh6q8EQVvF+D2mzdO`8hcM7uR6#{=M=xdA}{*m9=-d zIHYo;wK@sayvIaL_)H83%+fB<_pJZbWW@59Qc*+;Ceh!eP_i6grcknu5fb+j!B(WH zP36kpk2q#kPQ_afyoz;Cy(F9v5e}p#3k}L#c7#WVu>9havHYUbMLwQ^S1=ee0;z#o ze+MgjO~MT#Xj+<5QA(JzFjuqIR1a*=)!!D#1^FdLv3Fm5IHA<}e0PGDRcxZg^f%6`JiB4kpMtWjme8 z9iIhF3N^fI(qoDk-AG!9T9?Hn!-PGP0UHETH5`RL0ZfNOH8;+oW4;=Pl7QI1czOWi3qjvYZ>)4o7PH3_z<|*sdJx~n~k^M zehZI1{0Lf`8sJXW1ACa{DrVYT=n2w_#y4F6x=%P!Gtl0Ll&mzI_5E{k^KWi}*Gr?k z4%5w5RA7AIx3W!rKf0jDh>-?b)KVA@d$MG+;h~Tu0Sw|*)m0cCiDDoa5(nE2Uwnz0 zxL$K^N~G^AD2<^Lylz8O7DZPSYlfNG4D`4-N)$ zj)xk{X$=~NVa*Y*1bmq&+-SAN;G-K_4^=tTj2{H=AyJL8k}}k6-H&JPcm#p| z5HeETQcXKZ<}J#>k;a2K_53sO-D}QAV{4OK6RQc{Gdeh{!m6$Zc?UeCWkgt~mc$-X z3rsoS81%@qP{4v(BIM_=HDwSSahvA*RqhcJ(HKUAHo(^r;Um$^QU4c7M5M*aezmq^ zI3dDqI(PaUJo~#x@Xp^}MrKxlB3yj4b{o7I9>i^NwDi>B^ov&G``2HJszV3m@Ax}} z2q{w4e9mO|vo*w41W`32GjVZH<|wdC+BlNL`ke)B!U!&1CvWD@VDPQh%eswP$o!t&-qNEqY(^_ z4#Dg5V#TGWV8w;s5koN+2ZBQIp2|V2U(1C`YgD0k76Yu3iN;8RWF`PrM?&4Z$uDCJ zBL|7sDpnN=BPr_4+bqO*l5%zIl_(hIEZ$E4eOOJ>|aMchoqFGY~kO2GI$ z8K2p*)OL&(wVhOSV7JiA$;n2V$b*T7qL`4AFD}4YnG`+qNvm5)vsPw1=7^qXA#2Z1@1ne2qoQbmf-%)Z zBHxfB@DKgZeR$&0N6_EW0e^wtv^}(4W&Il2%_MKj+O`Y5f#bWJauQxeG=|FQ)3N5d zA7Jv-siF&_Nw|4`5~68U!dALd6aFw&RHGtRCR$c@8rw-)Y})Ilcrg+bQZzC_wAN`7 z&u>eplV8hIOvDl`$QT#ZXipGhn-&6G$Gipt0qg)U#!;;7KbC}y9pIXT$aGAq8yOis z(^E5IWm5fGEPMkiN-tD1V?EnU&@>sP1$T|lEe&v@*{zH=83^Bqhj8s_0ut4QY}zMW zv`j)co6Ks9?^XK838;E3g_T6aj+ioTNXBhoa5F|M za3FawQEp5(CQqG#i!Qzd-#`BX@pS3x>Xd`iT5aN?V-W<+A)*Xa-Aoo_suh!wf;XHD zk%>13c3f!ts;aR6&^{4ZVy4S0|9t&NsIRTZaBLW-oOcHDDoW5vB*gS+<(3=PwTjIc z2E2gSpRF(!b}{ILPs0g@;oFiGWc2C13|=0GQg`9c$gd!OaDfZ6CF?0L!3Qm25WK| z3iI>eh}!VXosXgMP_48J2ZqDQ%F96I{3+tOGjGYUIO@1#(9zY25t5vFh#1m?w#D>N z69-EZ5am2d*cVu{{@S9kl0m6@cxV~4Lm!*KQ95BG?$qR{G2m-5EZ;AOvb7@(VrCr{ znxD$!ol!9xZ$JJjUVG$eWak!1MM)GS)t`#8xs`Bu9B6B9#nFovVE(d&qGT(iTZS=> z=B&#lkm==GQ*YYtkwd_$(4=%Td?T|~6(O(^h?sCbWW3bG98EGTWJ{4GO;UAjBq~3y zWy1;JAxT8X?QjZg|HLg1;PZ9sC77~}!ME%3x-b+SLXz8tCFh)k<4;OpzoB;57$-{bJ11IW!UMtXiaa?0{B7z_v!J$2q3Oqnqq-95ds z9!=;r91N{g1ii6Z%a+HAJX9@k)T_i?w^e+Y`y%Tu(MnGo8)L*xgVt%nZ?Y6KU8!h@ za;5mpHK~k?ZAW^l2Zz4dj}*Hb$If4%33Yr_ra4E3qR8`SV`|xCWMyW{S;4|Xl2vm) zNvyEi=ZwRKw`4s#O?nI=b{vW*tx^(IJs#mfyu0pAJpSmzs5-D0wxkg_ovCs_CnjK$ zm~bi))j?HMYAZRJRN7>Gd;T%U;rxp(MqyE*6tyPx8CS3>dPFW7lNjDh4lr=-_Vx87 zigImT8WhX4Q7Aemi__Sk$Rn~UYds+nSfllOb@3WR)wH1#h^gVQkq*HEE;KYK-~?OI zng1zb>UboCLL^^*{k0IivU9VPghJAg;RuWglJNjCjdio(V+Q3gSgJ`b$FLI3HH`p~ z;FJb_H29ZnMyXJ>O`t?3RcU08kQpeV4E_CTN?Uw!@= zHh#4M2M_E=f3RQL4YVk z+tgM+Q1-MXQf9p`vtOl>qEjI&IJQ%q!rtah@7l!9IUDqj|h&~re~(&=vDJ6 zk&4RcQ)ODBqq7^yDKy1{v~P6$EhZj1JgJqerhFH5Y}R!pnLn@3&{p*1GwaWc9wvgL zHG*udM>FlL=bvdgT5HNe{}NKidOz8_&h+_Fm|1|w|M(!P_EjS{&5w@0P85{oW9q_L z=xA%j^f_}ddFC|q_NX(a1YJQYG%=K8a&D5ei;NxRrO>$UiF+eVq6fV3jgYJkpmqC~WWr;-L_oksFw+Mg#^JCch z^>$=uWazYq+m30+&%%f;ik{9M9J_QON-8IbZxGQNtL39DGetgR-^igkhI-0`Am5|Y zq0iY&Qsi!eim0TW(;$z||b>G)STq1I)oBh^J|d>GLwlm+^hK z>?#uRLd6>lvM|QKl7h`j%rru3@@04xQX@$LKu(Aj7dlC!X9l%rLS4ORs;EBAw5Pw{V#47>;FI?KtZqb*)(;Oz{HUD_V$I$)1&MnpWZn z6AmYe3JZj+`s&LsVdI9+(cIJ|NrH0j)FGE7P8M4>yHga%Iq_CjHU-BoT#V%_R!aP5 zQL7<)jHIUPUpJ1lL7YxOfp|9ao&@^)wP=ya8}dP9HEBL*aRRNjpj?+;jMX}nm1c?{ zYrjb`H?9q&Ig3I1Ov{r9t_)HPM}%WEiAYEWTT&+39@oc8`u{r}Gd>An!m(k)m+*MK z$jQ!811(Y8)5#aBqLBkfW|B>HX7Daue5RV#rh(>@Rz__eyS1?O-kWxfWY0?6Q#VTz z^%TEj6-L;SA~c-IC;Of47_zu^>*#{AG!rxnA0vCErn=>4gMk35st$guMq_gwdIoxtp5?=$Q&u53OwS7CC`d2Y zj5W$)Hj^E?>c&;`rjKoj!I`VjL(ufEEmTMu;%0J4p0lZxK&M?ZW*t{TtZW#*4=Gx7 z!CO_f!t8dG6->a!e|&;Z{`sNE%TtfTVRxcuunT#G`B--0NeGQZP&lC&8M!%9oyocw z(ci1&VI}KXD2-Hy78OEHg2c-ERuUoa&8nP<^ck_jO;k0(qkOe$>wGnOm-De2Ygd$ke(Y4MB)vaG$SizA`wW9>msZSWxH zC3{m`m^Psjci;2}R8`j@-F*y8g%w07fk@ygL+Iz9&#dopp#ec|pbf%@?s3r4o^r^>U_l})%AB!t05GC1hfCZ2yf`ZR5&WUKF zQLO$JkIm#OhPOmAr1GzfWxe5z>7is|kyHfwBE0X3!_$JP_;;quCY%&%iU>hf4JUOX zFDh-k%(OH#>^lrw)P`BJX2I)C*F=yG>vTXKiXcBT2c^ZOf`p`{(d%VcT94#G=>8Z- zAh39evQJEmGst2BwNA8{4cCL{l}y{vuPjT%<7#RSVdu7Os6JRFZq&hnfa;*QQsf-X z&C5gKgbA23c`ByQnj=cj6jKa^1{3Pp66fUIC8WdTzVW(=r0_iCbPU%A#oO366d^MK z?=*3;)`}9@jcdCk7TP-096{Tmf>Fx%D0;4?p2m(b)I>Rj)*9pa$Ku}-O)D!a6LsYO zl_Z43RN5+MWoHX9mGjxWconcokO~rqzfx$0dNd|nW{zudN(E>WT9(Y>Oi|zYw{F`RHitQglOLYE5D-)yzZ; zwuqF8JlBxt%%n$RBZ^RxMm!;N8AB#{O|EB?q)2eIhHoXw&=E=D5*Th0c{>WDD=&i2 zfTC3?0}y|efzE!>#AxsAMCt4@%sYJv4jw*;!ignF&(20~ARq~=>?3KNG07&+h3kuB ztsFU}2a0k*43;p4{MZQRYSPQKr~FpEHd%q@`D^m=Z9^_y2MX)U9ktpB=2$ejmPuj( zZ?YQ`JX!erUmilZcR;2kSdDR7!j* zPFk&cMfzTO&1|)h-KZn`mRJ(MM@NR06etIxRDDD_OmZ!6*r1I}RIKM{fpkXn&e>0jrYIAh(mY@4s+o+q|0C?YSe=Q$>mJkI6PC!Tv8nPP;nG0yIk;ucQ;W4hG zdqmbeldCY%dpUU|F8&VW$2dp0NfS3_;9+eV*luBD1iMBi@SmUiDqcBp7WMHeCU?zX z-;p~}nW^K%nX{POy9-Bt;yzOx?pckjf)HQ)z7ct~p;z{VKvI59JeQO-tsvTv5Y991 z73NJmz3b@|3o0n*KImDR-~1|yCJ<-HECDR0m@L^vL=Dz)o7yksVi^TCWITBecOAGJ z2M*k6X;GfeReoJUVGv{c#5U}ieGR6kW-v1|Yn6EFbrymU9b_D!^ORB8)7;(;pt<_E6WVx|uVu|EwaZd7(IW{(ldVS3Hy47aWh@C>CgQiD- z(`mz0|3}p+Y8=P4N4+PmeO6N%qUNH8VGj*-4-I5MKjhE#{O;eK_n7zuKa_;Se1Zb` zKFzO^SecsHh2Amy_wT=UL5PBCIW|VC>;^eHHfj-Ex6`u?c@3J8RD}dED@`3H@S&}u zB=M{Yju4m_Y0*!b#N^anq99;JE_m5DJ-@85}DH8N(k!S@c8 zS;IYH^d<C=3cW zK7dGWRwfn$JH{t)=9!~7{;ls~_x4%UyIX}+AH!`Us2|#e3!SFraA$YjVY1{Q9mE`u z!M%xt*Jf)!+_)G(ks#-(38uG1$dtss2&n2@Yyh#@MH{jj0Q=&k!*``z%|CHKY?HKq zQa5IPi5fcbL@_Y&r1DY+bKiLh{f1I|9J^?21of#2oSHj_JMOz1vxoL#ag|7jTEH6u z<&<7thbNvC&Q=APaXP5EV$nt*@M(U96iy(Gk%OS_29j>KiVT~63gC=DX%$J*$+2e( z!As(_ypK>ZMx_v;z6>;vzk+zRDG7^0mqlTEsj<2 zBf*yhWHjg@Ojql`*%d4uJ7fA2yn-tN^z*&$QD(^EgLL%p8@JF1N?(q`69u0}+vc&ZqRY)|8m=^PD6h~WCO~f=a z6@l4lnYI*iz{xpM9KlpC!t&8m=q@zT>9^61d*}>$7G%w}S8(9L`*F`tz7g{ai`I9= z0z${ek|3Y!-2w%1di4EDwb?y6fzsxpOBwkuLku{F494VF zGvo;Kk?lJecyf(+TM!~5?H&rfKIUIMgZA7q?z{JX?3mqYx+YwUydr~CR{0HDJ?xs9 z#hnKZV*jComQv&X6^a{zA5Me9^sp%Z;0V72YkUKzqvhHNyt8oVRlx+2xq<~lMJuPZ zQgP>C5J_hbognOJYa#eq4;1Wh5YScIhh21xB=bteDrs02+hi}Sg1C^`>_z%}Sk>9h zPfhdW&$K^<|6jjF$|p)|O6ZZm1(SLx6|KmC8Hh%sVc8LuEwcjYx*;LF7|WcrF{=b= zqnkFQ!AW~Yh_iuoyu(ol@8_kDyEEYq!pJN*2^|i+#wZY#+*QhcF;-TVY!DcMQMBrn zId*O2BGT?I)_MpM(&*fDJ`yz`PAKtAlK+K#nUe$UBWh}Cau7qWwG+M2|29@+>Bl>IgG z7!@*kYSpQU^C2KUu`6uawOJ}$WMzvTiOpUUwK`Ugoc>(2aubN<5giL27?gx--uC+Bc&ZEpjR%Te4&r=MW#D~A>aH6F zkuygm2cgVUx%3cJNaa>|3e|V5eB0Ls(KVG*2Qf3P135--a>dQ85Mi`Y#P-1$stjuT z`W|)$U1>H{v(IcpuUh38Us>D z&(67LS`7p|7z8pPwoO=@DIGdhqWPI}R55aFz(5AWo+*HF77 zDaE$K83S(ybzY{+^scR!0Y(sEqFqAqTpJVRx;2|yZgIRi=*C?v#cf2dnM8fZG};3S z*GV78e4?i~1L_-6N8xXG;6k~an`8oQE+{5ZtiVgl970`xg8xSJKxc~ z!v>*5-whQ}$#B#epmF>>26Juf-+j=kU&co3sFtgiqT@KQ>1J!WX&dFfy?ad2lU>ot zxeGyFcJsFFD8US}yIc0vkV;h0te{YzOaeCNV5vaEtrpTdzPE%ldDyEq3L;W>t<8si zk3k5VHZC=mjFZS8t5WkHK36z2+a9&<@ANfgnJu)+v@OX#b$D+GLejr=h#+E1RD7wi zj8dtBd+$9WzDiJuy%wC1;C7E5{XSlL=@@2r%v$%vtZ_7PLVdn-IgDURrz-f(vunvl zt>`iVz>-|Jsxh)ZI$bL&419(#)J&1I>?AflHEro4LU(FT6yVNu<4<1`%9H(D*YFCL zfWZeSM!a{QouSA-+^5hS3B*XuMQ`*Jg?}*Q9@nIzyb3HE)CA%ZxdN1yXTv0lUC}O9 zauyG9@`opI^o8dzKYtEO{U!>##!%k54Xpvsp^BJO^hj{Ksa1M@)$TLo|78WYg>Kyf zMwUyOuo+2WE+$0#bEB|I3stg6ZqfsQFf3kWqI8g!rXSkW`4|O^poHpbjCwo5)YybI zkkjgCPBTIqEi85#XjKNN@0mrHYMujj`4!nuP`huQzS;2Otc?$;HcmVK3MI&w3)nH3z*LR0 z?Pc#1AyKe})&gF*a0315GKSTlmEaC6wA{`Jsac>EHtGaOGu9;^SaUfRH$sdNFF)jP z5}s!RHjbsEVmA7L!0f5ip#Ewbo1egxPo=XdVWeC_Wf);}DZ&m+qFQ7dfRdFuTOcxE z4~w?->^Re&!$Pf%cw5zwyJ44`nM(S#w}ppTi@X>*J0RSdJN3c2OQtI{lVk9OOgr&5= zgF0NY5&Fc^t|D$nfJkk+gw51GzyVG3X`4-)kebS#5JKKfuZ0q*G?3CHPdO@Kq7oHo zwR$FE6BS1!c<&2vwY_R}{R@lp*5VrF7$+9aV6MA>!3djeadAbaYoLubyF<*5PhzAWVXQWaT8+I~xFHkq=o)0)8mwX^>R>MFpcCl?Z52|! zoh5kf5)SXY3%hsjw)fj9-C%lPwbR7+jz5nET6WqNY93o7I=cC& zSV6=zD3KO$;|ix`rE3fXr2llX9tn8X5xURDf(lrz925ggY@0CM5EBD5@h(-$sDg;= zjy!^{^&9CrZ^L{GIVrw@5RD^mDsJ?#ueJjZ9(sf6*;rd~-!S-KJajZ$EBM}t7jS-c z9)%jKK#EeSv_;4iozez0iXnBL#tJRU2k1$U!XSHZZrJIf!Bj}3b_2E%S;?yc8&(2v zeV9)m>fwTe+ME@T1q828i<-WW&>02@td1$NOtM|ZeLL^Q_WHC{wkUY*quU|>V;QIB zPoseq#M?&Dio|1xiCEbJVo7cw(<;bS>P#FK{@3&&Y~pCWsTr7lXR3^c48CF_T^7`; zAHb6dmM|axa$t@aN1*MVHOMZ(O6kR zv%6}+EUn&ZchRywF&pUx7`V_}L`(-`h@;O(lg961SR@+4=L(yzAKBtQI_!?l29MRc=6AP)N|>hTtNgYhe$` z9&9h70k{}q;BT$ZB-r0Bvyh@A=6pSypn!mgG8>#y4K}E*sxm9I4oDB#X<(y(Dj+7= zV2iIwV@IF?*NpKit)~^A*>yww+|9YkTcuAULeG@f?%jJ#%6>hX6Q1L$gOFrn4unep zON&d^4x4vj(59mxwxzkcpJIo=7H}ja1RmzW1Ggh3-)OpR0EA^~7r9Kc}+TG!RjT$F5zI+z<@IwT5W5R1}^j$+)PF)hKP*UCk!>T$M4TzR$E$y87{QL|ov2r8 z2{NZN70^W=a~IB`JM5xgiZNjHX{j9*36|_I!}OpCw000Oz{ihL-c-}(g8nsGho|%}1?mU#leV_u2HVh+4I79miEgB%c!$ zG|evbZIoRgxtacrbEHG!Z6LTh2gJTy$hV!J6GaABJ2oE9O5qUi1Y-(c*$_c=SL0eh0Nu-PRcW5K{oPTGhm}c#AABFxTc< zPyC%~+N?TM@LNg6>kT}N=_PSSvguGf*v*xL;@{fQ_tcS5u2r1RIxYQ*$ z!I*{#r_yvFoP?7d8lPwuM}$&3{=PmFbkRlAG*Ak`X@HeqOb1(otDY=@AeMbD4Ve2v zI~7U^F$8{Vzt2~?F_Pu%!jA$hIuJSIM4>BzbFvWPrL1_9{JY1Zwm}Tlu{i)qX5j$u z2Dmy?ex~3<_EA|R(`ABpE%3M~-FJPTSx!OoCQOe|{(OC}tZ)D3Xa62w|Kum|!1S0o zN1mRlQQ63cBmk}!%9y$L^*H?2w^=|!1ckv7HTZew)#+)x;XUsFwoTal6pS4@Npn8h zTkS_NYY6)F+S19F@%+~w$J{edp|>z+oS_J6BU9W|1w`IXwtvX^AOLX{+ zW(O~pM)BL9`CIJ0@3mWDuKXIepas&SYxr%0!>p%RmlhYTLv--Jdfb30r9L~&zNFFw zq5Ew}uOxH_MHmSJ9}d%5bi}Tb;YY0hoBu}N&O@5L&xoKxSgp5{^X>R=MAX>Q!-Cy) z-+3d4FAG|PY((~ct||x#U$7BjX1zggGz#h-U$d zXV2q%|MG7*{jXm|>*#ZsEDJVJa#H1&D(GSZuM(naq%w1Z{bM}4)W=W#@t@*N?|Ywc zjqHhT)7Uy70k1wIvfETRI$UkI{-b{09&HWw9}YX0nAICS#QKkfhuQ!^-t5~m=k=`8 zgf{NvL)oX!9KP1@CN6JPZX7aPdi)eVT&tgKx$d?5)@yZln~qgdb{|G3Jt$xAYhN_g z5}L!s0hf){)p0^}nY9tlRzF&Py)+nHZ;Nc?e*^859vhOIu%&P@)OA@mnVcXl(-&XX zm)?*!xid?iBjdQ&__?fNqu;2VuCi|5zhonuB<~F~O?@F8Tq{Y%|>rK%c;ORyWKmF(*;H|&)n^y5*MA1!t#KF?T z9eeUA9Q)!I(R%8?FxhXSM%dk3E{G852o;kN)Z#JKVD;~Ley)WFKJqa<@S%^`cZHI_ z%NfSC;IsdAIZMS)m78rr>tXFp?{(EnKrwJ?Dc-6Amj?{v88Xl zvBA;h?U3ssxh*x&x{GBOU*eP39cb*SJZ~MCgBFEz$c27L<4Lttn$FP6U#LUDv1|5kFD(I+Kj+s*-a8Ilzfs>&y#M$LG zPR{JX?|$Vgz~s1zMM*1VgYBBZO;kc>v4QV?{!4iIYyX7m`Qw-vQQ%^EZYLH8u9oSP zF!@7bbE$ymUuojt`yR&I{^-v|p0%nPr8~D`1KH{^%ddC+EpVw#_4?nzwZFox;*-LY z-ZX9u`OfIalapU~uZ2-@xM^{}}f7o0uH0E0`b=nI*(tv0_p!DrPov zqKJY;9BuY7^UinU-Jkq~1o5)E0tr#i6+H_DoPYA$c=oS9jn;R+jU5rIR;0sX`aBP-6bn6aRs)ef*=?-)ms!Rez}Am`eN@U|2~pIU`;P)sADl*so&uJKlw# z|M2glvTwI4Ba*%}PREOZ)&G4CPks8+SbX|_FpCyOyvoXg5Gt2?b&9J**mtlz{P_F| z1`oakzw!@X0BWOa5D;@>HxUW%)|w6Z-R2g!@fOH~kQ+Y+`5ojI*is8zl$!BW$@wS$ z8~^-~-^2dZCCrSCqHj7Xp{t!x3KelP2$6;g1Aty!#7nCMln&mFLvMdOcHaL0Mt4qw zVFe4b2J;Je`RS+dgD1X@!pURURioaF(lAoqly1D$-God|0oL&A^o3PiICKQ>{la4? z&1{zfZs={32OwKIZ}N-f7PuZ3$b*pUVb%OQa|_($7T7EhdHGx4!k2&N5ghCg5gA3F z{Z>L}-oW-TF)5R%Qt2&qMFs;bbb&^(g5ktARHkMTvo}wtjp5QF3dXIXxGxdkq5fjkJg zw2kt2ai9TQ~j)2<4x)ad<;MDOs1YivMRDoKn??Qy+PWsvwDAS#v6?)33&yMUkhlRv}j ze)ZQ}qT6#cIS1sb$2k9BZh@QC0(lT}vyM!DU%3Ug&;pyKW?J7riZ49;Fs6R^687yJ z$G|!!lDnY>hZ3Lj#(C=2m-ZjBt}US-3ftMM*N)ob@kf1p*!-|kE}`3r@l2zShaP=j5~YHV5NyKfA~W<_2iS7 ztf-^1bzUvR=#ksO4y(jCN)aj}RYN^W5y_|(6ru=GwT990ag@hKQ5&B?tzJiMVjR_} zNlff|4GLousP5f|$%A(aBXQN%JovZ`Ct3bTxdk#7$b*o4I^-6}EwIJ{n;{~6Q|pJP z(O$TKc+f}D+Qt`9DpxU59Rb)9z8IlWt4X@OG9vb=F;mk^yjo+jHN7>QkeVYP`2@`^ zaQj*y4?=F=vCW?>x4>0fU`sk=Z&3A;MLzPLFjqZ%`3G|g+%gu(gOFQhsPY@lEwIHF z2uOrAFZ6m^dyPa6-3tp{UbS)h73z5;&9@YdZ1DrqbIIJ2*e{?)2c> z;~g9$*3sJe_51Ma@!Qtl_VM^jM@>;oQsm#~R!~>Pz{%0f)xWvJ%f`>Rvb|kbU#X$3 zp_rtyskLchY?zOmkBF0gcY%k0igj*y`zrRt002&%Nkl$-RY62YN(E%uriTo%e3?5 zw18DluCY^TR05eXe!>cp*4^`gb#^l(W!Dm|G;4$5yH)_fgt`0l?&PBcKRuR2(KalD ze)B`K%-SbNRy-@BL}WbrY((eQH_9_b4$X&KHYEgVRgS+Ah~x!zvx_m`7N@KGW$&&D*;o9z1k|KCJp!LiTGeEZjH_JZhL z-y0bfnOvP}Q}t5qI99oULRr_ydtFzpGtf_-Vlqovp>lZn0?<06wCIZcC@CS+Nm=!6 zUp3wQxc7;+F+Z?o8g94S^>VpQRidMxEG{mnqR0Z2B!yJ02PwgniPbjeSd%WaRBj5W zsOiVY<8g1iXT@bZoQ|jC;Sg?)mq%MCxk`T!tv9W*1(?)kzkY`*!lKzHWdSRSO^BjQ=0LB?HDI;_qH3mak|gLFg5K2Qm+SqVr@1daD|7%X?E*>jqUcE zM{|h;v8;xFNo5G>89>3HjB$&7l~q+55X&>t%N-8@S2x`_PUAE`hU@u4P#b)$tPY^H zd)e>8Tcs&2AHTkHN)QqNlE;}>RupAPlBE!jb8_+tN(D17s;cShSQ%$k?u@}7QFQ1) zL3I|FLJ266BCc?^-|hCNE(W7-FRd(zMOPBe)4zmOq!Xhu8v_>e09lfzkb@Z62<5ZDOrVU6d9lpELZ}l}*=;5Yl6~Tt~yU?C!()$fJ*_gj0ws zdNJ6AyD$`PyB%&{AT8#z#FTXzN8dzS+zqgzbw_2|CfEL{L!6ir3PPE(HVI_YG>t)U zG9Z^)nz{yDJ5WwQ@+xkH7a>@I&W_i>J3O%AOgyz*cf~wYYl}|&78ybL zma~ypR%+V5)C#OP$2hQ(Nf~{IgO6iOYtW6(()3F?`R;ex`Q>^&0T5t;6)(^dt^gD) zu*e9m75bKZ3GaD|K7<^b#-!h12HI*dYbhNO);4mOftAG@lACgn($?DCm5AnT2N`vR zb50?Z!m~zjLR~M%!?QNhZy>V^kCF&eS16P|p27iyCR_5@VW(cCB= zi0I1cc0@@$0E`8dWCIYw51<5c7XX#e!b|xh0;H{nQCx!=!YXqmV?p$V7kWBpt4aRU z=q>acB-B)Oj`l!4S80|@5XBeFe0p5Y!{agBtK49(FuxAsWnLJ)WZ(xT1CZ?39q%%Un|jrkz{5`n>xw0s4KR4S(=;zb0u1WtCj}R%5Wn3 z!bY!~FQ*$$zRP3050}?XxO5)7?0^(S0STN%U1YVs03Fd(z_tviynQ(5sn!{36?LML z7_ZgW$f#T%prT)IODE1|gvEo;a5=0+X-UmRi?ddy7+`c5W4dm>U4ZKR`g%T!i%aiO zD3De_Amk-ARLDBbrTL)#%c*v zIlypVuH_Fh+#R%KUe^F;C^c)aqPo$}Pse415l$O{B?%#5<2@_f_$!&=bKJ@w6XH&U zwtv~o==cOjM~i)7Y}u1me}xPIT}e(z95-*CUX&t1$4pwLRJcQFEv%{*4s~yvajbbT z#vobG=krCT7%_Cg1$pu3w?_fP6BVO+064h#Th!Cg2y6d3449RW)W)uNAjM}M(dV_H z{Ea;tYcq|ea*2pbp1sSh6*G4{3!_Yvjj)oLZ=QQtzrs84s||)20p+&`yojw60F%O7 z5&=W0h=}}n*~n%6n6Ng~GP8;Z!r<5T!WCtmyzMk}M#{oG2y`I=_o=2s}><-#(%G4?{1l zm*YIm^Zh;nR*}RU7*zW4tf(6c%d|S>!kjG^CpOZ6gm1bzLtqY5N7XG%qqY!lhq=YX1X^8R8O~Pr z6Ij8Zd>~M{7FiRP%Y`5zInFW+Ri$$X2^}}VwNAD8hAaDtsu~8wg!54%f-u5G;<;oc zN#+~A7WD-3{eKI8fN)#|B|!`RjxPq&Th})|)`eYP!yk0|8QvZ(n_-3Yf<^>Az=Dfs znlrKn6rE8<0D~q&K}TJ!@TnYz#qcVMUos*M~Zmv1Uwj)*t6KIVEv?TbDw-#u z|DRR3PK!cJH0kdpJ)Fm)todNpe9XcWr(T+6hy!n6StfB5`p}e)3p^ZhRqa%QO-q%e zlod)T)3;o`kkxhQ>z;!Q7)hMs3SG>c&Bs?%)Y@ko_MO0@WEOgV8y3lW)B%4)k)#ES zuL{5dEgfy&oz^zZ=uZd+Ph6?8j8S|)FN@N+9A?BL&~Sm*Rxv(h#n!c5RrL@P#^U1* zpvXsh?|J%hEsV>bNCJL6hnnF3gY~i(Hfx0Nq{Qvkw_k$m)YoNQ7fs=~Fn#AvjI`gF zD{WI5lYOX4SCe-jr8LtyUKe~GGmS;8t%NNbH`9o)KA`c)Ddcdx#3^CLZw4zelQ{J@ zOHnj@EBN2x{LM97dlp3b^JK@j_xsnmP?~G43YN-$c-H&Dk^?N4Pz5WOinPrlI#q5p zh-jTbcTk|A;3p*J-Uuw5K;?blaQyqRmH$mZ{+XY=2$@0GwB$?pEOw8#|5Vf;cizp{ zambH|&p$MLlr&GIyQWCeU+?^Xjr_{cQ}Wo#+SJ3^0#p{kt;coI9kVH>X;BydGJ}n8V|L3gpz4&(vbiya%r5WW-?jD*YM=k${3 zJ(UF&#{x^o`j;=s2B~#bk!Mk+5>#%jl1B{P$R`YQts(s$zJ7w6Zve{2s8FUD*(dO4 zIpoO?x{#douT`)SGNL63v;v-*^sr#@cX@E@>H^1g0=4UR%%+jDe)-E$CfY8r&~$(S zWg~sU+67l)>WZlftZvskTzxpR_g;NK2qc%&sR?OqG>PjZ7|7kl^yJf#C#uaA!X>S{2$t`fGu^L>3+37*(Mqi6rl+% z)Pjie|Nq}NXA%-@d%4TLlD(Ebpeo17GJJ?&A#v9idjR4}= zM-Pk!K^1@!KnU<$BPXAp*<>O+fPBAXJ8c)U+!&4P<%O{uBI z{t#YMYR*uf-He30HIW7^iW^GqQ1F~HRuLK)oXdg7Il06p3@e`)ci&tv_vt|^WdE2y$a?YtYSM#uPg_}uPyFT_k&*nG4( z9=LTyBd&S)kSwP}xG)7VM?w_fx#_{!q?aYnr@tk5!EmWEO-X@E^{V!yzSs4VLyJAo z6lO%|??T|o;u4cNQ7!u5k`z2)_uZeqPhZ{J9NN{U-5*dJBTdDS0y1Ix<@I04AOz>q zgvSt$g0uH66EbiNq2w9Cs7VyXp(gTroyDEmb3%Gw-MC1ydcK`_Sh@Bl2pb^BmgMT%TbfTfHwDnbj+$sMgdd(zc{ z@UdP$-6yi@MMtE7#DC)D;GV=lNkv}6vPd)mJ!I6zCNoa_%Xw%-Dk&N?m^{{MPE=IdGW%$tWdYf^``4dhS>NAug$`lM3hTsljbNb$IH|U_ygrFwoy+qRo z(5kxoQi=lkeX*oj$b}4>&wm<$IP%ZtjRXe2lHp?RlOPy8TSaiDUXO2nxEM$&iz+^y z=lejiCv*JAwp*;YFJ3?0PhfroYhUgi{yaxCD_1lng9A1}1vJjJu)IK~5~9?Wh7#vl zBFA|=y-5aZ3{_eRQkN?iJup606KVfv7;Ey(w=^iMAf4P*c%ZR3DF>eL{?Y*|XP|e+ z*$0{curOr013^^UIPYn`8pY2jDgRBLzrsI70xK=GNr9eDgaAwR$M>#<4YOUp-B*m~ z@@CgKuSOmk>_-#3k8Iu#|nT$aR9TH}4waJx%egIe2s+g_=DguftYU8xh&iTexe*ufqd%+JwCNIZeMO?;>>fGn~Sv8dXXUC3Tpf$Ve z9!??)t9Cu#9$dhx_mDoh^#Yud@U4tdl$fmZ9(_R?h(cp9A$2vR4h&5Z=t9D1oV+II zXi_m)sUOFh9ConPp?!w;35w~aCZz5K7wW^0({Xp~2?GX;C78%%F8+qP@3l0Zz@g!Q z76q6G8>7gY}D!+{#;*pa8_?dgsuvpg+M zRynxQy+>eKW>X2I$UCL$duIqrWgJqLu{28M2rYm$<^E(E0F<;<5Zgm@nRsjndrJLJs2cMvlNTKv4*Uos_w%(@oQRJ9yt?WEdKN zk!qd+SaGquE&+yz?5RO;;aa_#_ZhO*3)0qxZtsH@yB*qtHWn~w=S|?FvFDf6Btp}8 zBsBR031tlnsMF;%E(I`2U{zx%uY)|!R*7DeJXiTri0^giCTzO4BgJ$MulL*U_gTrG zw(GS8UoWlm&Xx>US_q>62PS$rczH>9B&fXRp^_zgh*uV}fYzV%KwdeofE7rdyZ{Tb zc9gKu6nkeYOV_g3oAhzCLVr7JJ+1cNr{2a^sMOBuQ04@0LE>2@IP2lisN^Uvl{GFF zlE&#W0wqOW`@+8>0yVV&q#RUC@&1vK(Vp)y4gk( zp9|VhfQx^QZP@F5B=h8UwOq2%v;J+c+5?PXSfsfNp%5fM?m{==IG4&h?R&3K9daSv z_!w2rp_^gFAoEn=k`xzCV559J7N18W_~M6kBd1k~yTG;lfjsdDueQT>25RBWejTjt zB=N2wgK{3S#;{!>CkO7(6+$_W3P)EG0C7-ZxQ2>-U&MI^!RoYV43-a<9c zu*8Q^KPW2r4QUVLVSI!)eTBxwuO35bF zq>n{+5e$zXOyNt#m=J7g%KB33#=E9b$X*UE+ay4NLl`)=&si(wCQ#C!B_fYVxRi5z zIDxj~i5SsMd;}ju5kg+Xno!Nx=LetJ30Gq9PyJT1BG(seGvSb-?h82x*5X*%WOkW{ zRIK6{Dbb{mIY*098^C9@7|x_|>q{sl&(GM#Tl7#%RZdidS$~jpiIXk8Fp>vL^R;U` zBJi8lj9Q?-2iD^o&QlGcg+pgw_Ffyqrvxy2uu{o!aFvEt9EV97iRn4!jB!{Y%jq1Q zZm@nhB)T$0WP`5|V?~rhblAmD89l#pN$RCOy|e2MC&4{4T93a|5Uv-S8HEJJX;EWa4otQ2rMh6b(%aZ;RJ3LIzkFHxc0^(Y27>|BYBa=>{rJdwP`N4L5%-} zzUs1j-?rP$lCgTKA<4dcY9XVOh?l*R#zZ3pbRp_jl6PG4GhVaQY{hgT3>R*sk=8o} z%0|F~IUph_RCz%ZH-k0W^keof&ofpYwh-fK{I7>~0xROW9gHA^6;k}>{n(d9b&*#L z_rfL?M910#8~@M}Gd!$f`G&D7iV;5pKhRn-Sk6fPKG0f=f2=WRC!q}R>S}lPPx{sm z`YaDEpXa$D4UpXke3I_t|A5teK^-G(i-*Sun|PP)x3>afQ>@{H!pb;Wq9Ts2IW(Nl z>5jnC8Xvwvi9IFYNxbH17#SibM=p@hokqRvj;<OQ~m`~an!*AYj7mS-?TqUaM zQkb9{ z2+mx1sUKk2D!Jc_Sn#Q|#3}78e@CDp ztoMPf!$B{BePdWTQ;xwLk1tGeRQ87IbTK#s8J%Cv5TY7^G*Ye?3qySaevb)B~X(Tsn+pdNCikJkPIg`E_X}~2|xnZ!pYs`r3&aETL4m~guB><+@alSY`Zu%m^|jx9 zkg~knlVaMTiGjpb-(kB6MuK0&`Mx&f5Md0jw`9GLG}2@ zq@wWtWvTIib+0iJuPXzczV!SoSDIc`Qabc?DQB6Uu)FTv`diYk*z4{4{`7^zF}5A; z4B?45ziA#mtQSkHd>mTyHL8Mkw|#y{Mw;iNm7)Sz*#}}#&Wwi`gUGZagXJ3yWz%}_ zbYU8A@lCDaw69smkDtamHX9}!K|5jbD@LyG>mC6dywV@OzG04seR=t|zu<>vEM`2tJN#MT;AAKeK3c1i)ugLFMLu1Q7l$g51&$$J`ZU%# z@2$1m3el=kKJrhxalF$@J5Ga%!zcB*RI(bEPS;0KnXmo(7AGxr9jRM5tmD=MKijSd zCf<1Y_%J8u*LE`x^4P;8!_`47MXHTryimpfEIE>xN2pn6)TK#HYJ-WzXc@_eYrPG?-*-kGl3mI8_XBgp=*UbXE4 za04Y=$7I#k14d2T3WQWpo*&e|Nr;pL$x_DGCINp1*Wo^n`BZwe`7sFJjh$0#d;kxw9%K8hX2bz|nX}RDcObrsA z9JE79Q%T2x7B(7;#x@demre{Vz(|~y)mC9PqU7;{p#13&>yA9TG&@-S#SU$ z1|z_h3KUAL5(kFiMB*T*Gw}O75|J={RZ94T$w{o1b}FFxUz&;2Bc?@2I$8cWL z0M=t{c6n1tcD`TU5Unjvk~lo48enMU# z1&mR#H8GC&F_&d4Iqr2%e~Gq>ZkW7sEnG|(!B@AfXacabD%QO}KovqO$0esRuuxW2 zqBEDvaZIn1vG?J1a~tC7P-}Ey&Okpx{J_a2DIyJS^V~z*i-Dc1elp;M#^L$uP*pUo zr$bx7D|1~B)}|?Iog`Y_=-On`a(|BtGL}<(Ps}~2q=R5 zwcyOir?=eqj427`kYgXla#&SOvLyp(!PIOcQb7s92lPw7bLqfPbE3hq%eGc6c@jW> zgi$YSEFSgaoCsQPof%&5bxh3?tKtT_u9ZAPt4m!gSjZZi?&b3#_%J6}41BN;&ut4& zh8!g-0?*VC&>o^(yRzn&T*H2tTxvmROcoyeMV(}JCthp0-qLOD z8=xhYM&C8{kWaw8%`mYNV}ENL8rvY_tX^d!Qo2u6$UTISbe|L<$9=dfmz?~(op4LM zB~(iuxwOG)6YIsc#!*y=xQ+L$Rb+#J$Z<^vC;hJlW4-jqBs@PAw5v8+s;L%}z{0FZNb130 zEQ>zC;`?Jc$T>4~=INU%63bz?1?qEE|q#I&YNZ?6Y zYlAbovZ`*oN~1PLZtWvKz11i1Yx9>xxR??w1loCmg&QREBcltwbAvHB*;$OLSQIkL zB39Uk&q$%Ude)25izHT`M#8S=g=l&;wk>~m=N^QL$82vM`?^K#4`BVd*zcd^z5rBP znASGK$Y1oV+xlnum9TKpL*rPTh!NrWL+T-Uz?}=Jq+sC2xsj(Xhl|W8W3*&wA(-Jm zdP&W523#BsN*!k!M*Eq3WKWFw;27*DXZtX`9lCNS6C6bkSTw1b^5v=WgS8N3+nASg=LT(h? zgIqY3>Eq$~_?AMVrt~sDbnuaS6uhevfb?C1bj^Q{%WZcA5I5-d0azAaDPA*Ek*vI_ zZ<4VdeAe3)xA7px!Lu;)F<5Bl5$gO_TyqU!d^KGla??C@J!6V9JA_I$tPp)Q-P6lc z*?rt&_X%A5ZKpiS<;=7MP)KP8cg}Fhgo|_Cd8@%xfEK!j(H!N*O@=e06#=A;z!|a%aJ2jn7=QTZeSnq?G>Ys*6l7^a7Zvh2!VS*YmE#69iiI=dg`<- zCum?Qr~#}?0SnvhzTMaaAj-6G2>|Qaq9hMmSzNJ8QgRaJvn&*ljb#W$V{|dj2e8dp zf!wPS6{`@&H(7TqWvV~!``4z>H^ozlZMei*lQhNBvq0qm3@%-6n|G0a04oN*N5 zg<`MvWK?=sJtV>Pad|)#WLFO(Rk93j3uq02gUNKn_ZTicFM8HRCdKQMQqwE-4Tk{2 z;(YAJy|fW@;+2c)%6YH1>wVi)2+=eTAF$f$i5c>U7ObUmL9lYCZ4lUzKj&hj(>f$T zz^wr=^g@z!cy%Jk`2a{BERMHLs8V-UR%fR@2WiqcYZ5#`&66<|zm~|?iiG8v*K&^% zWW7Qg-(0C^TP(|FS+Vdzpl*SX9u%Xbvv|a8TYTKFI5K&zd?h*r;>!ce-pBWWC7KUu zGjo-gxcLCqeNUzgrNtNtVUIhidq-B2Q|n6?D$qh`AYW%#v90b|s?&SSUMZK0D|?#| zmJ(=!C0OAUP-;wt*IG7J_4EdfUy|UeQ9`^dwa$&Xk}Jvs>0gz_U~ABK_oONofeSOv z$PjYS|5`N-Ik3V%pV(uVk_xJ$AKNCTd+$P20Xy^0FJ)Hgadq8QXwlbM#Y1OLLp%=I zB$oUrR#tpz-r@)rLao@KwZ5eUMwqB(NvjVz@tHH@cH{+_mOtb`P>fZ)mOED|@Y@z6 z^MHvi7DYLc!?}dg9BAagdtvuRjq~x4>9LV2np~huLZ>1BFSBUYdQMeWXn}u0@85l` zLPFElz%>1-%}su>+JLSV8f8_mc~<;ESxe|7PmGV|a9+3J%A0vc2Lh5(#J`x_8v_Ul z6Y@oPKfHxRT6`SUEcwF3<*E>{L^YW;2)G($hOcg<1HFv7X6m&7R?)tE-g{iP#fr|y zKTsb=dgL2)RCw$mH$Z9j9(`v7+A-qt$@$U=tpG< zcpLZT_m^-Jsfa|ySPc7PD*F`{=_!3VeI+<8Iy8?vA0lRu9m=}8)XdmcAWwPs(257f z$au672vY;WX;EEeSU0-qIvgY?dr>EqX8YIU%4w{K)%Pf&IIU-2$5fMS0|02$-p!R? zF_+{t-zBT%sHpK_JdD(ciNqx^7RSUf_!C$;1AULKDwVWCP=RN`(S|5k(3rY+fkzKQ zgx6Xkzy!a1-MA3IBkpRwQ618{-o2uKA`J$XqJ;o}gQqXo(C`CiOh=Ahq4JH@wME5rqS|wjBtL2Ra>uDKc(GV;l#Nf1w&8B=8!un-b zRN%;Nv-ea@%cLN^S}O_`wISZ@#yj9Mj1)`2Oh*@rtEsae0E(ie@1PSvxPM-=Aou8u zI*sN{Bl9*C#!qOe>L#`sj?6<1I}L z>&Fxk#^Y^|;T~mDZ9CfH{E~d~ART$&tp^zmU*Yn60PB2E9{3FJoizw~fOgTlXROhq z9CLdAc>H*Ms+Sd-pElFLIy^1aX`vr)i_-)|dz39Kw_a>tQW!BO8ne|%I7LEt4DnQRgdKpj1Ga2SRfT{@~6R=0(4JsiAsj6w6 zkIWuL=7<5qr;BBkf^{$r>jwwr26{M07(tvh41LsjpXZa1M!N6lv6A@rSBDM4${WgQ zArqYfmMCv`uPs}qGHAVRt)U1YdzxhxDiz^AO z^`S;YO`PpPj1oE7SXF%WC&(b_*9s!MR)}=vLrs)|njjVm;Gi^h8WU)!$*nP%7B7k- zED}1jGEcCG--9AGw=FklqM{pcJU#=Vbtw{LK6rG?h{ybi?vf-H!LKfVd{-}PN z4PlWr>MU~@#Ype>pDRAb%u2c=wbmY;sTnSBS8r}epZ||X4m6D9H}vp&8r@eu$J8c* z0>;$2Bwps>*}nQxrQvltCF(GC$Zzr!SiwvSnWP4H{x_J;+cudqj!wj|P-|U5klXUy z$V%7ddbEHQjs-)RhjIL-I2^^-n8eiUv?zk*&(I1=2y3aa_voP?C!8BE1;#TzG7{{( zP0yD#pEPa7G;W3!19+k}$Ney?bguWV>`(Bo7T2FAy>28GC;--44QsJ(Kb3lbccI&M zjN;XH&XO{R;9;d)lLkk$6olUfmdgQQG?ervcea0Z!qS4SZNuTjbLGuIYaJjC%~WG5 z?n}{XmN(ZSwOA-)T0yI#XX8d#&}brwgLgpp|>LG%$05O;r_qrzfE(C#JF{qy@F2A~&@ z>;5g8oQ=|$>2?;ukXmnqm7+<5*HTt1>zc(hqZr)BkJo-`9VT>>yt;im~Nb}V9V zhrDno0I3fg4zxIT<#wRh^+;LNU>q1vV3YcSoJ08ap_K3vrj<R1!6T116ueLjUy&XT^5Bml*L^f^u z^0qycYdxJ^-1$aDg|!XnM-}#IH3yqDKbbdmfYfAMsF!nh^7Y9eWXI16mSet%ao1$nu9l7n;)?b9(&@)V_G)|d0(ZHBh3MBu@7 z!Kn0ri#(8;(g|ZuT|HdZALcP}EKi5O+FhD-PP+i-b=f53>h_Ca^`Zuh?kEX>oP4rhT zCWEE^Zm(t9rQJs{@uARja|u?_G>12kmwAGCK5&FVH?YY?nSo4|tY%xo-l>D$QHq(YL zV=UCBLM?3co|~+b+`J|iztQQH&C4^e3Y==bQn36vSWtoMT&>5L%+rqhodi|JP(&c%9i^^5?ws50UJh&|07yimnA? z+B6uYc%^z7rUk|neFzGcEb;G$ep0oel~C(VrY889_I0B1aF@j$-TA-}EW1%oF1&ej~XOTqtMXSJD7@nTK{ExeZfHUG}M*YV5ym$$bsk!+RP zYbieK_RlS=*>@GDJy4HZb~TTydsD8oSE$zglZ zcGY5`@@I5VmGoD)y_wPIr0P)@0bLKrMiMHnyEt0$y%Yz_0FN^b z-=VQrFzp~z{2z;bg;8i$Eu+E*< z9gwn*OX#dr0|d?wKmIm$<^tC9JjUV%KQqfT%{Z|#lQOL4KFs8g=iTCe0t=n2B|GpL zg#s)jh#Y&PU{y_4ygow<$?i3W%7wGymhUfn259i9M{tp?ix(7vg`{JP3qEr0dHfht zEN(qI^fRdLG;jc%_irzh{9TV0+|?52flw)bQZKi=J)&E-KcVH~6IgMUPSB}sF7PHE z0=~V1b;l3P9f7|oT4pw}6ON-{mdE!v+xdkG9k$-cZ2~F8S@T(tkt=IDGco=0^0jvDbq9Ln>98BmGBwm*n6zBL*r$CSn_k@-Y(KN-*(2hH;5aI{E zUzin;0#0L~)O#v|sD^!H?B4kcYZz}$rFYr2!t2AZWMO2@;g~ao$F~l|O4y>zNIp2+ zo0Z8ir22~xu)E;l5u&0iQmP#BUap& zG_ra6f+q04w{H6Yx5%{Z5U~R&R4GdbT)YuAu5WKO2wYIGs1W8-CKv{~%a^F{W1duLHJ1@UiNS{Vuq}A|_=&@DKPic!J0G?5~-X z-uHBrX;b2i+iktCvqpBL_8GsfRJ?3xaUP)gBCn9}CT}iYfB1>Ai}M!ttTzVv+?~(n zF`Tf@9-QZ^=M|X0`{Pqwb$eZPM>#-N({Tveiom985Gj3Gp&&))lEaJtk z-hDoPw#x-P@?Ss;YOSIISiLM>=+;fWD^cIkg?*TY(A&$%X}RC36aXvctbKrgcb5}A z4J`l7OIflR!^-}!hr`zn(;Q^&UUzJq|2uG@aT-wRjGARB9=_4C*nrleeSql5Dq?yD z9kBXE(je=nh!o+hr8DunBK_VxVp9>!z7uI8y!h(MQlP4fy4|mNA%6)h)E(Drwx={g z_;rO)Ki_(&cMm?nAQ9_x&%x8U@N3@2-4wW&%uB!BgMJg$OwJr_^Ya^_ZktSL}O5?j&C z53$CO@)=G2%L3ma+RXIs&i#LTXQCgc&a`=_LpDRO!2)5c1rkC?!2RFf=qa^~`%JsX z^Zn9i`I36yv)S4Fx0b4>N>$@(d6nhTONeynATwAVq!hBdUjR!;&5I@&>by#+S(Rt0 zLro)kt*tRyDgS`SaqvcCB_yK5bJa5*YWwIo{J5+7dz9AC#VPRGwW%x4)c(QnKw(~; zb;tWnQsHM-TgiLXON~FgY7o)=ngbq-NeMh6ptqTlx3SH}Y4}Vn@R}<2$Bk`QPEVR6 zt55GFdCogZUwK>c_99KnRN{1z)j2KPeA|i!!8Lc|)De?IJ7^_`VZis`ENzxxMJEEK4{2$Y+#TZy4_I_B{!eR&V$hgqy~-`uQSBMF$8mo7^d-uE zAtC5!uAY)oS~qm@3#twB^mI4b`tU1Zh1C-*Pr~v(U~^#Ysc9Qk%i)NRGa2yQE49zO z@)izuX?_o2B~suN?IRc8r~8NFwwl2lKRwRd7`pD=AH4*r0c5;wBdpRc>tt|fnW4z; zezj$(vp%WSSy#eKLCsc5^Axq7L5fNpFdcxrh%>uXn)mf`dJDh^(`6{{eB#@L6v^z#^>h|4!62le;`65E~(lN2T|U=W~>n z_g)>>J^AxBcT(uD-+Gr0bH(UwNv*bV=<;qDU$%M0hSP&J-fO@@>T_6DRIV9gS$-Q< z*oARqvfu)li`ZNre*Cb6XI@dO+6%g0g$KL_yDFe3i6Ld#Q4DnT5Wl<+?LWZVF}vw#-cojgw-YRTP3`(|Eks!}6ShkjNmO@w8^p z6EH~#*Gl{&rj&zyZ$bU#zxSNPrw}@=wE!!|*|3^$`!sS3uy8yL1Dq<^60Ac7SRS}+ zd8>t$#mkia9(sdrbgCfq5Q+wuek5`%tca5)1WMT_R2#CxC=?`#0I=b>ginU z#C*huC!Fk*G31*C}vWx^1zKmhs^>`~-2fWD>CCSTqCwfMe-bJ&|MK9LJpJ%gLK?_dm zelA@QmOn1x;pQWxD4G5K^bK#hY96eX+r}ueX!;d5A7D++mZ+3!^zreyx?l(cn^@bI z%lYLv&fDTA+1&^hUY1e!Bbo<{7b=Hjfm!Q97>z{E-kpOk#P`(Yla6q~_q=$*hbMaD z`26YV8aS9PP~dy2!J=^J^{Fhi963g@ZmRp}Q1+E~lsC{GD=y|6A;QL7LCHRWRv%KQLNoc2GSl5y<^=zo9D2 zn)?;O|bI1#%O;Ey2VXAEmU$#tA{}bRL#z+ZPCe%w+N$iG|!TXm&oZPScs!VOO+7lC10~)T8{Up@(vV~#?F&OuUM4N=`2BfVm+|NQ!)yRb%3;uYay$)w?uSH|rza}r?9Z-K2 z@Md^QJ*(^Kd6uG<>v1G1dI)CiG_fYnk)YWEQ=?(Fr}I5m^TWJBl-Z)pM_g(GRg0oz zeVbr4f}=%@;Qc@W<1J{xauNU&tqw!cd0CWIL#jmA*26SELsH&f_Pw{JzFa)a8Hd$E zZnJFiPHp411uT}r7&A@KHnXgp=5cez;xN}WK62>H^Uq_r`Ci7&%O+h+?V#$iE#Ua{ zC1Am_ikAgfgK^&VhuaCIuVn$L-w~Q@lx5q19WDXw11y~AyY6x!Bu@YME5yf%Zgj?Z zZ#Ioadec15n>RLwF_Ymrre#-leAyfw<|#m~+`~f%`HmFxy}D0LFENLRRKdMlLtgS; zPtH$PVGZ7bRgm#%Pfv7|w_JxOg%r;VS_a#(>0_Pc>-~9mK$h6c1LV&6(vb(^|rB z#D{Kf)Wy5xr%I;)3!Ac5){ls%Nn+kB@-E}TYrmf_+cJKl6yNNPf7$wY^GQ-W@3O3z zAmE*1K5Jxqpf6U=l@0@bkobcP{?OBonohSu{y&q;!H%dok>ko8!vB zD#9v@l6q8kt>C@X(-Im*?x50zcj@2?vM`lxn3t!g`*~7jC;X=Sl<4zL1T4+4E+@4! z#(aQ~4#I&(bogYNjV=2HqXc z-JrYMvuZ>^mGMQ}QCf^wU9IiV*JT^i8DVH< z$zes?pj(vUZ6USd)C8S;FSY&*OY218BH0TJ9KfBbQD11s73a$E+Aj&b$5Mbf_L>S^(()Rkp9 z{fcaSoKwsv?jnN&H!0?0B6VNq>)Lk(`R!t zWS?heWxOu+vdOS1n!!y`?F_IHc?_fj=fyOi@_bfO{TE<8pVUskIxUk{DO@K-S;MJ1 zDRCJ1i+Igt2X0I+ zjdRYjomGm^{ux?mq=hD&P1Us}H9tD9dJ7gqAMLhdX!(Gy4~wc}nNr_tZ(4LDu>ls; z&ZwgsM%qu)&(B-R^W}GhzFt$z=d4J&K`v^#_rM>p=tp)8g;=_Wkc)5MKW%Yo$+~SC zl4nHKTtrIMlYE#wN-*Z*qT=&v#C&clp{PjXmjymNX)jjfG3W4dT>VOFC!^hyW$m<4 z6$iZ4y2(#5U%}ggHZ~V+6A|JScQ7<)rw{xqXf?g;X-I1veVDx~e&M}q%?9fhdI1vU zPV3;A=Xq`YMlqj6&?k%2i#({E8yqMjPEl?ysS;Zv8OEvz0#1f#qw*!ttSVZ3Tk>x~ z6*&}?`s$Ilc<(^K)kb4aaolS|1!Y)6(9BJZv%FI-YA+fk{H!Co16~5n<8fX*oJ|wJOI_WtyJPqaVXTzI*<}{oVRghW!U2Zm7BDx zyPL#(zp{r2MbsYv8=sF^=O!zugwg1_p&77xOlqf>?E$caf1#TX)x@exunt0U5gRVm zR3d#+i7KWPULfb$?&bZf7FP1{vRy*^fS!YU(ZNk1#Y+~k8_-GZT-MbgXA>xt{y4A8 z;%LuS8DL@ccBFPHsGVGN2^K_ufI2@lv+Q35D@%YrC^tf!ucZMj30MQG=m`R;oy#`Q z+cMQTU}c>d7i$AlT0?o7Bb9T>c@M!^VI07lh4k;YEc-C5RAX5NSkb4VE=h44^$XNa zq+@JJL-!%AFOqSHoh9ep>zZj*U2r7_L)quM|CIgz!a`e1>wL^0TUq9Dy)i0Rd>OY@ z7kM!FS<9kIm=KJmEEW89A*7wWGYq@%zi8RVVRg!QPhP@=1WguGddnD4p;BGP^BsrQ zrdy=>&hva(S1^nAw73iZ)3EM71Z!G7JppkpNt+GxNTA{w%}_*E8Pv|AD!>Y5nQ!#F zGUnUAzcN@X- z+YH+lhjj7j4GqMmS`>bTf%CjLm_cYT#NKFqp7f{7+9r4>n;~+uvYSdl+)jd z7A~&{OF4((cF^h=e=Xl7Sd_ae>Cl1?g;L%&UW30CEV}Sx#)nN4jeA3i0m{K?z$6V( zN2Zk(`A+8SUw$uGutRN}DvKh(BH=#4LW#3Nks1WN-`Wx^SZTZ#g`iExd2xt_3NHy% zR_^KcKd>t84KFxlWALuwl@>KH<7Kx8GJjy9Af2@}Wq72jn^gQ9r`4o@{CBp~{T2_c zX;Rp8RFWnDD_Mm42Ufnz^p&)O(gs-`DkO<%D=a@4QT@$rPYt8C6Uo$APkk{B`UlqD z>m`RuRsSLNu4OwcB$0#tA$9fC%H9@)UsG29SoU^l{pT*d{{!RM(!LBs;OYPX002ov JPDHLkV1hfdagP81 literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index a89c4cbea3..14f70b0125 100644 --- a/index.rst +++ b/index.rst @@ -401,6 +401,7 @@ Electricity ADE7953, components/sensor/ade7953, ade7953.svg, Power ATM90E26, components/sensor/atm90e26, atm90e26.jpg, Voltage & Current & Power ATM90E32, components/sensor/atm90e32, atm90e32.jpg, Voltage & Current & Power + BL0906, components/sensor/bl0906, bl0906.png, Voltage & Current & Power & Energy BL0939, components/sensor/bl0939, bl0939.png, Voltage & Current & Power & Energy BL0940, components/sensor/bl0940, bl0940.png, Voltage & Current & Power BL0942, components/sensor/bl0942, bl0942.png, Voltage & Current & Power From 4846dc4067ab0f2e5dcf0e4a79583f7ca62f58e0 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Fri, 30 Aug 2024 06:20:16 +1000 Subject: [PATCH 12/46] [gt911] Document reset pin (#4206) --- components/touchscreen/gt911.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/touchscreen/gt911.rst b/components/touchscreen/gt911.rst index 484660afd0..97cced192c 100644 --- a/components/touchscreen/gt911.rst +++ b/components/touchscreen/gt911.rst @@ -34,6 +34,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Manually set the ID of this touchscreen. - **interrupt_pin** (*Optional*, :ref:`Pin Schema `): The touch detection pin. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The reset pin. - All other options from :ref:`Touchscreen `. From 30637b18e937c04c6abf1f9788ac46914af95080 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Fri, 30 Aug 2024 06:27:38 +1000 Subject: [PATCH 13/46] [st7701s] Document delay feature (#4189) --- components/display/st7701s.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/display/st7701s.rst b/components/display/st7701s.rst index ec217ad310..4c921467d4 100644 --- a/components/display/st7701s.rst +++ b/components/display/st7701s.rst @@ -130,6 +130,8 @@ The ``init_sequence`` requires a list of elements, one of which may be a single sequence (the default and currently the only sequence is 1), the remainder must be byte arrays providing additional init commands, each consisting of a command byte followed by zero or more data bytes. +A delay may be specified with ``delay ms`` + These will be collected and sent to the display via SPI during initialisation. Example configurations @@ -165,6 +167,7 @@ Seeed Sensecap Indicator pclk_pin: 21 init_sequence: - 1 # select canned init sequence number 1 + - delay 5ms - [ 0xE0, 0x1F ] # Set sunlight readable enhancement data_pins: red: From 24bfb50ca2b852d88716c4ec383b5ddc7184ffc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Kry=C5=84ski?= Date: Fri, 30 Aug 2024 01:43:49 +0200 Subject: [PATCH 14/46] update documentation for esp32_can (#4199) --- components/canbus/esp32_can.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/canbus/esp32_can.rst b/components/canbus/esp32_can.rst index bc973f08e2..2dbd41d33b 100644 --- a/components/canbus/esp32_can.rst +++ b/components/canbus/esp32_can.rst @@ -26,6 +26,8 @@ Configuration variables: - **rx_pin** (**Required**, :ref:`Pin `): Receive pin. - **tx_pin** (**Required**, :ref:`Pin `): Transmit pin. +- **rx_queue_len** (**Optional**, int): Length of RX queue. +- **tx_queue_len** (**Optional**, int): Length of TX queue, 0 to disable. - All other options from :ref:`Canbus `. .. _esp32-can-bit-rate: From f1b0f2e58f3b42cdb6a8e108c9c2b770b913305c Mon Sep 17 00:00:00 2001 From: Piotr Szulc Date: Fri, 30 Aug 2024 02:53:37 +0200 Subject: [PATCH 15/46] Tuya Number: description of the new restore_value key for hidden datapoints (#4191) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/number/tuya.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/number/tuya.rst b/components/number/tuya.rst index 3b87b76520..97a7b0a603 100644 --- a/components/number/tuya.rst +++ b/components/number/tuya.rst @@ -67,6 +67,9 @@ The above configurations will work fine as long as Tuya device publishes the dat However this is not always the case. To be able to use such "hidden" datapoints as Number, you need to specify additional ``datapoint_hidden`` configuration block. This block allows to specify the missing datapoint type and, optionally, the value that should be written to the datapoint at initialization. +TuyaMCU restores the state of all its datapoints after reboot, but with the hidden datapoints there is no way to know what their values are. +Therefore there is also an option to store them on the ESPHome side and they will be set at initialization. To use this feature, set the ``restore_value`` yaml key to True. + .. code-block:: yaml - platform: "tuya" @@ -77,6 +80,7 @@ This block allows to specify the missing datapoint type and, optionally, the val datapoint_hidden: datapoint_type: int initial_value: 85 + restore_value: yes Configuration variables: ------------------------ @@ -90,6 +94,7 @@ Configuration variables: - **datapoint_type** (**Required**, string): The datapoint type, one of *int*, *uint*, *enum*. - **initial_value** (*Optional*, float): The value to be written at initialization. Must be between ``min_value`` and ``max_value``. + - **restore_value** (*Optional*, boolean): Saves and loads the state to RTC/Flash. Defaults to ``false``. - All other options from :ref:`Number `. From 31f188f26217fd724560281c514b1b1141e20611 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Fri, 30 Aug 2024 19:00:00 +1000 Subject: [PATCH 16/46] Document UDP component (#3918) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Co-authored-by: H. Árkosi Róbert --- components/binary_sensor/udp.rst | 49 +++++ components/sensor/udp.rst | 49 +++++ components/udp.rst | 300 +++++++++++++++++++++++++++++++ images/udp.svg | 1 + index.rst | 2 +- 5 files changed, 400 insertions(+), 1 deletion(-) create mode 100644 components/binary_sensor/udp.rst create mode 100644 components/sensor/udp.rst create mode 100644 components/udp.rst create mode 100644 images/udp.svg diff --git a/components/binary_sensor/udp.rst b/components/binary_sensor/udp.rst new file mode 100644 index 0000000000..a4122ed56d --- /dev/null +++ b/components/binary_sensor/udp.rst @@ -0,0 +1,49 @@ +UDP Binary Sensor +================= + +.. seo:: + :description: Instructions for setting up a UDP binary sensor. + :image: udp.svg + +The ``udp`` binary sensor platform allows you to receive binary sensor data directly from another ESPHome node. + +.. code-block:: yaml + + # Example configuration entry + binary_sensor: + - platform: udp + id: switch_status + provider: light-switch + remote_id: light_switch + +Configuration variables +----------------------- + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **provider** (**Required**, string): The name of the provider node. +- **remote_id** (*Optional*, :ref:`config-id`): The ID of the original binary sensor in the provider device. If not specified defaults to the ID configured with ``id:``. +- **name** (*Optional*, string): The name of the binary sensor. +- **internal** (*Optional*, boolean): Whether the sensor should be exposed via API (e.g. to Home Assistant.) Defaults to ``true`` if name is not set, required if name is provided. +- All other options from :ref:`Binary Sensor `. + +At least one of ``id`` and ``remote_id`` must be configured. + +Publishing to Home Assistant +---------------------------- + +Typically this type of binary sensor would be used for internal automation purposes rather than having it published back to +Home Assistant, since it would be a duplicate of the original sensor. + +If it *is* desired to expose the binary sensor to Home Assistant, then the ``internal:`` configuration setting needs to be explicitly +set to ``false`` and a name provided. +Only the state (i.e. binary value) of the remote sensor is received by the consumer, so any other attributes must be explicitly +configured. + +See Also +-------- + +- :doc:`/components/udp` +- :doc:`/components/sensor/index` +- :ref:`automation` +- :apiref:`udp/udp_component.h` +- :ghedit:`Edit` diff --git a/components/sensor/udp.rst b/components/sensor/udp.rst new file mode 100644 index 0000000000..7d5d798c06 --- /dev/null +++ b/components/sensor/udp.rst @@ -0,0 +1,49 @@ +UDP Sensor +========== + +.. seo:: + :description: Instructions for setting up a UDP sensor. + :image: udp.svg + +The ``udp`` sensor platform allows you to receive numeric sensor data directly from another ESPHome node. + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: udp + id: temperature_id + provider: thermometer + remote_id: temp_id + +Configuration variables +----------------------- + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **provider** (**Required**, string): The name of the provider node. +- **remote_id** (*Optional*, :ref:`config-id`): The ID of the original sensor in the provider node. If not specified defaults to the ID configured with ``id:``. +- **name** (*Optional*, string): The name of the sensor. +- **internal** (*Optional*, boolean): Whether the sensor should be exposed via API (e.g. to Home Assistant.) Defaults to ``true`` if name is not set, required if name is provided. +- All other options from :ref:`Sensor `. + +At least one of ``id`` and ``remote_id`` must be configured. + +Publishing to Home Assistant +---------------------------- + +Typically this type of sensor would be used for internal automation purposes rather than having it published back to +Home Assistant, since it would be a duplicate of the original sensor. + +If it *is* desired to expose the sensor to Home Assistant, then the ``internal:`` configuration setting needs to be explicitly +set to ``false`` and a name provided. +Only the state (i.e. numeric value) of the remote sensor is received by the consumer, so any other attributes must be explicitly +configured. + +See Also +-------- + +- :doc:`/components/udp` +- :doc:`/components/binary_sensor/index` +- :ref:`automation` +- :apiref:`udp/udp_component.h` +- :ghedit:`Edit` diff --git a/components/udp.rst b/components/udp.rst new file mode 100644 index 0000000000..59a92fd322 --- /dev/null +++ b/components/udp.rst @@ -0,0 +1,300 @@ +.. _udp: + +UDP Component +============= + +.. seo:: + :description: Instructions for setting up a UDP component on ESPHome + :image: udp.svg + :keywords: UDP + +The purpose of this component is to allow ESPHome nodes to directly communicate with each over an IP network. +It permits the state of sensors and binary sensors to be broadcast via UDP packets +to other nodes on the same LAN, or to specific IP addresses (which may be in remote, but reachable networks). + +Nodes may be *providers* which broadcast sensor data, or *consumers* which receive sensor data from one or more +providers. A node may be both a provider and a consumer. Optional security is provided by one or more of: + +- encryption using a shared secret key +- a rolling code +- a challenge-response (ping-pong) key + +.. code-block:: yaml + + # Example configuration entry + udp: + update_interval: 5s + encryption: "REPLACEME" + rolling_code_enable: true + binary_sensors: + - binary_sensor_id1 + sensors: + - sensor_id1 + - id: sensor_id2 + broadcast_id: different_id + + providers: + - name: some-device-name + encryption: "REPLACEME with some key" + + sensor: + - platform: udp + provider: some-device-name + id: local_sensor_id + remote_id: some_sensor_id + + binary_sensor: + - platform: udp + provider: unencrypted-device + id: other_binary_sensor_id # also used as remote_id + +Configuration variables: +------------------------ + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **update_interval** (*Optional*, :ref:`config-time`): Interval between full broadcasts. Defaults to 15s. +- **port** (*Optional*, int): The destination UDP port number to use. Defaults to ``18511``. +- **addresses** (*Optional*, list of IPv4 addresses): One or more IP addresses to broadcast data to. Defaults to ``255.255.255.255`` + which is the local network broadcast address. +- **sensors** (*Optional*, list): A list of sensor IDs to be broadcast. Each entry may be just the sensor id, or may set a different id to be broadcast. + + - **id** (**Required**, :ref:`config-id`): The id of the sensor to be used + - **broadcast_id** (*Optional*, string): The id to be used for this sensor in the broadcast. Defaults to the same as the internal id. + +- **binary_sensors** (*Optional*, list): A list of binary sensor IDs to be broadcast. + + - **id** (**Required**, :ref:`config-id`): The id of the binary sensor to be used + - **broadcast_id** (*Optional*, string): The id to be used for this binary sensor in the broadcast. Defaults to the same as the internal id. + +- **encryption** (*Optional*, string): The encryption key to use when broadcasting. Default is no encryption. This may be + any string, and will be hashed to form a 256 bit key. +- **rolling_code_enable** (*Optional*, boolean): Enables a rolling code to be included in all broadcasts. Requires ``encryption`` to be set. Defaults to ``false``. Can be set only on the provider side. +- **ping_pong_enable** (*Optional*, boolean): When set, requires encrypted providers to include a *nonce* generated by this device in broadcasts. Defaults to ``false``. Can be set only on the consumer side. +- **ping_pong_recycle_time** (*Optional*, :ref:`config-time`): Controls how often the ping-pong key is regenerated. Requires ``ping_pong_enable`` to be set. Defaults to 10 minutes. Can be set only on the consumer side. +- **providers** (*Optional*, list): A list of provider device names and optionally their secret encryption keys. + + - **name** (**Required**, string): The device name of the provider. + - **encryption** (*Optional*, string): The provider's encryption key. + +Wherever a provider name is required, this should be the node name configured in the ``esphome:`` block. + +This component supports multiple configurations, making it possible to differentiate between consumers when providing data to them. +When receiving data in such a configuration, sensors need an ``udp_id`` configuration item to know where to expect data to come from. + +Reliability +----------- + +UDP, like any other network protocol, does not provide a guarantee that data will be delivered, but unlike TCP it does not +even provide any indication whether data has been successfully delivered or not. When any of the configured sensors changes state, +the component will broadcast that sensor's state, but since this may not be delivered to a consumer, the UDP component +also broadcasts *all* sensor data on a timed schedule, set by ``update_interval``. Even this does not guarantee +delivery, but in practice unless the network has failed, updates will eventually be delivered, albeit possibly after +some delay. + +Security +-------- + +By default there is no security - all data is transmitted in clear text on the network. This would be appropriate +for non-sensitive sensor data or perhaps on a fully secured wired network. For other cases the data can be encrypted +by providing an encryption key, which is shared between the provider and consumer. + +Encryption alone ensures that data cannot be read in transit and protects against spoofing of data, but does not protect +against replay attacks (where a threat actor records a transmission and replays it later, e.g. to repeat an action.) + +A rolling code can be enabled which mitigates replay attacks - each transmission contains a 64 bit value which is +guaranteed to monotonically increase, so the consumer will reject any data which contains a rolling code +already seen. The rolling code also ensures that the data in every packet is different, which makes brute-force +attacks on the encryption much more difficult. This is enabled in the provider configuration and adds minor overhead. + +.. note:: + + The rolling code's upper 32 bit field is incremented and written to flash *once* at reboot on the provider node. + It's also incremented and written to flash when the lower 32 bit field overflows, which can only happen after + a very long time. The consumer side does not store the d rolling codes in flash. + +For further protection a ``ping-pong`` (or challenge-response) facility is available, which can be enabled in the +consumer configuration. The consumer periodically generates a 32 bit random number (a *nonce* aka "Number used Once") +and broadcasts it as a *ping*. Any provider receiving this nonce will include it in any future encrypted broadcasts as +*pong*. The consumer expects to get back its most recently transmitted *ping* in any packets it receives, and will reject +any that do not contain it. + +Use of the ping-pong feature will add to network traffic and the size of the transmitted packets (a single packet may +include up to 4 nonces from different devices) but provides a high level of protection against replay attacks. It does +require a 2-way network connection, and it only works on local networks because the consumer can only *broadcast* the +nonce to the providers. + +.. note:: + + Occasionally a ``Ping key not seen`` warning message may appear in the device log. This is expected, because it may + happen that while the consumer has regenerated the *ping* key, it subsequently received a *pong* with the previous key, + most likely because the messages crossed in transit. In such a case, the message will be rejected, but the next message + will contain the correct *pong*. + + Because of this, ``ping-pong`` is only recommended to be used for state transmissions, which are updated periodically + at ``update_interval``. + +**Security considerations** + +The encryption used is `XXTEA `_ which is fast and compact. Although XXTEA is known +to be susceptible to a chosen-plaintext attack, such an attack is not possible with this application, and it otherwise +has no published weaknesses [#f1]_. The implementation used here has been modified slightly to use a 256 bit key which +will strengthen security compared to the original 128 bit key. + +When encryption is used, all data is encrypted except the sender node name, and the initial request for a ping-pong key. +Broadcasting names does not compromise security, since this information would already be available via mDNS. +Requesting a key in clear text does not reduce the security of the key, since it is the ability to encrypt this key +with the shared secret key that provides the security assurance. + +This does mean however that there is a possible Denial of Service attack by a malicious node overwriting a valid +ping-pong key, which will result in packets being rejected by the legitimate consumer. + +Configuration examples +---------------------- + +This example couples two light switches in two different devices, so that switching either one on or off will cause +the other to follow suit. In each case a template binary_sensor is used to mirror the switch state. + +.. code-block:: yaml + + # Device 1 + esphome: + name: device-1 + + udp: + binary_sensors: + - relay1_sensor + + switch: + - platform: gpio + pin: GPIO6 + id: relay1 + name: "Device 1 switch" + + binary_sensor: + - platform: template + id: relay1_sensor + lambda: "return id(relay1).state;" + + - platform: udp + provider: device-2 + id: relay2_sensor + on_press: + switch.turn_on: relay1 + on_release: + switch.turn_off: relay1 + + + # Device 2 + esphome: + name: device-2 + + udp: + binary_sensors: + - relay2_sensor + + switch: + - platform: gpio + pin: GPIO6 + id: relay2 + name: "Device 2 switch" + + binary_sensor: + - platform: template + id: relay2_sensor + lambda: "return id(relay2).state;" + + - platform: udp + provider: device-1 + id: relay1_sensor + on_press: + switch.turn_on: relay2 + on_release: + switch.turn_off: relay2 + +The following example shows a device using encryption to read a sensor and two binary sensors from two different +devices, one with encryption and ping-pong and one without. It also rebroadcasts one of those binary sensors with its own +encryption and a rolling code to a remote host. + +.. code-block:: yaml + + udp: + update_interval: 60s + addresses: ["10.87.135.110"] + ping_pong_enable: true + rolling_code_enable: true + encryption: "Muddy Waters" + binary_sensors: + - tick_tock + providers: + - name: st7735s + encryption: "Blind Willie Johnson" + # - name: room-lights # Not required here since no encryption + + binary_sensor: + - platform: udp + provider: st7735s + id: tick_tock + - platform: udp + provider: room-lights + id: relay1_sensor + + sensor: + - platform: udp + provider: st7735s + id: wifi_signal_sensor + +The example below shows a provider device separating data sent to different consumers. There are two provider confgurations, with different IDs. +The ``udp_internal`` provider broadcasts the selected sensor states in plain every 10 seconds to all the network members, while the ``udp_external`` +provider sends other sensors data to an external IP address and port, with encryption. The node also listens to data from a ``remote-node`` through +the port specified in the ``udp_external`` configuration: + +.. code-block:: yaml + + udp: + - id: udp_internal + update_interval: 10s + sensors: + - temp_outdoor + - temp_rooma + - temp_roomb + - temp_roomc + - temp_garage + - temp_water + - humi_rooma + - humi_roomb + - humi_roomc + + - id: udp_external + update_interval: 60s + encryption: "Muddy Waters" + ping_pong_enable: true + rolling_code_enable: true + port: 38512 + addresses: + - 10.87.135.110 + binary_sensors: + - binary_sensor_door + sensors: + - temp_outdoor + + binary_sensor: + - platform: udp + id: binary_sensor_unlock + udp_id: udp_external + provider: remote-node + remote_id: binary_sensor_unlock_me + on_press: + - lambda: |- + ESP_LOGI("main", "d command to binary_sensor_unlock"); + + +.. [#f1] As known in 2024.06. + +See Also +-------- + +- :doc:`/components/binary_sensor/udp` +- :doc:`/components/sensor/udp` +- :ref:`automation` +- :apiref:`udp/udp_component.h` +- :ghedit:`Edit` diff --git a/images/udp.svg b/images/udp.svg new file mode 100644 index 0000000000..d9e02adc17 --- /dev/null +++ b/images/udp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.rst b/index.rst index 14f70b0125..0370be6c7b 100644 --- a/index.rst +++ b/index.rst @@ -204,6 +204,7 @@ Network Protocols HTTP Request, components/http_request, connection.svg, dark-invert mDNS, components/mdns, radio-tower.svg, dark-invert WireGuard, components/wireguard, wireguard_custom_logo.svg + UDP, components/udp, udp.svg Bluetooth/BLE ------------- @@ -1156,7 +1157,6 @@ Cookbook Sonoff Fishpond Pump, cookbook/sonoff-fishpond-pump, cookbook-sonoff-fishpond-pump.jpg Arduino Port Extender, cookbook/arduino_port_extender, arduino_logo.svg EHMTX a matrix status/text display, cookbook/ehmtx, ehmtx.jpg - Share data directly between ESPHome nodes, cookbook/http_request_sensor, connection.svg, dark-invert Do you have other awesome automations or cool setups? Please feel free to add them to the documentation for others to copy. See :doc:`Contributing `. From 397a225f7e965e667b3dcc39b3b18c5dcd16b4c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20Skowro=C5=84ski?= Date: Mon, 2 Sep 2024 03:57:36 +0200 Subject: [PATCH 17/46] Documentation for CH422G I/O Expander (#4210) --- components/ch422g.rst | 67 +++++++++++++++++++++++++++++++++++++++++++ images/ch422g.svg | 1 + index.rst | 1 + 3 files changed, 69 insertions(+) create mode 100644 components/ch422g.rst create mode 100644 images/ch422g.svg diff --git a/components/ch422g.rst b/components/ch422g.rst new file mode 100644 index 0000000000..6e01234d10 --- /dev/null +++ b/components/ch422g.rst @@ -0,0 +1,67 @@ +CH422G I/O Expander +==================== + +.. seo:: + :description: Instructions for setting up CH422G digital port expanders in ESPHome. + :image: ch422g.svg + + +The CH422G component allows you to use the **CH422G** I/O expander in ESPHome. +It uses an :ref:`I²C Bus ` for communication. + +Once configured, you can use any of the 8 available GPIO pins for your projects. +Within ESPHome they can be used in place of internal GPIO pins in many of ESPHome's components such as the GPIO Binary Sensor or GPIO Switch. They are not usable for PWM or other situations requiring an internal GPIO pin. + +.. note:: + + This I/O Expander chip is used in the *Waveshare ESP32-S3-Touch-LCD-4.3* + +.. code-block:: yaml + + # Example configuration entry + ch422g: + - id: ch422g_hub + address: 0x24 + + # Individual outputs + switch: + - platform: gpio + name: CH422G Pin 0 + pin: + ch422g: ch422g_hub + number: 0 + mode: + output: true + inverted: false + + +Configuration variables: +************************ + +- **id** (**Required**, :ref:`config-id`): The id to use for this ``ch422g`` component. +- **address** (*Optional*, int): The I²C address of the driver. + Defaults to ``0x24``. +- **restore_value** (*Optional*, boolean): Writes default flags on setup, overriding values from chips cache. + Defaults to ``false``. + + + +Pin configuration variables: +**************************** + +- **ch422g** (**Required**, :ref:`config-id`): The id of the ``ch422g`` component of the pin. +- **number** (**Required**, int): The pin number. Valid numbers are 0-7. +- **inverted** (*Optional*, boolean): If all read and written values + should be treated as inverted. Defaults to ``false``. +- **mode** (*Optional*, string): A pin mode to set the pin at. One of ``INPUT`` or ``OUTPUT``. + + +See Also +-------- + +- :ref:`i2c` +- :doc:`switch/gpio` +- :doc:`binary_sensor/gpio` +- `CH422G datasheet `__ +- :apiref:`ch422g/ch422g.h` +- :ghedit:`Edit` diff --git a/images/ch422g.svg b/images/ch422g.svg new file mode 100644 index 0000000000..f94fa67709 --- /dev/null +++ b/images/ch422g.svg @@ -0,0 +1 @@ + diff --git a/index.rst b/index.rst index 0370be6c7b..ee5de2264a 100644 --- a/index.rst +++ b/index.rst @@ -267,6 +267,7 @@ I/O Expanders/Multiplexers .. imgtable:: + CH422G, components/ch422g, ch422g.svg MAX6956 - I²C Bus, components/max6956, max6956.jpg MCP230XX - I²C Bus, components/mcp230xx, mcp230xx.svg MCP23SXX - SPI Bus, components/mcp23Sxx, mcp230xx.svg From d41d2d6054281d952af144de148abc6da644cfb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Mon, 2 Sep 2024 04:29:26 +0200 Subject: [PATCH 18/46] Add enable_pin to RPI_DPI_RGB Display Driver doc (#4212) --- components/display/rpi_dpi_rgb.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/display/rpi_dpi_rgb.rst b/components/display/rpi_dpi_rgb.rst index 2b5ae9526f..5a52cc232d 100644 --- a/components/display/rpi_dpi_rgb.rst +++ b/components/display/rpi_dpi_rgb.rst @@ -77,6 +77,7 @@ Configuration variables: - **pclk_pin** (**Required**, :ref:`Pin Schema `): The PCLK pin. - **hsync_pin** (**Required**, :ref:`Pin Schema `): The Horizontal sync pin. - **vsync_pin** (**Required**, :ref:`Pin Schema `): The Vertical sync pin. +- **enable_pin** (*Optional*, :ref:`Pin Schema `): The ENABLE pin. - **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. - **hsync_pulse_width** (*Optional*, int): The horizontal sync pulse width. - **hsync_front_porch** (*Optional*, int): The horizontal front porch length. From ff35867d96d2fa40878dea9e0093f3196f329a3f Mon Sep 17 00:00:00 2001 From: Dan Greco <21044725+dangreco@users.noreply.github.com> Date: Mon, 2 Sep 2024 18:35:56 -0400 Subject: [PATCH 19/46] Add Gree model YX1FF (#4161) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert --- components/climate/climate_ir.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 38c062bde6..a6e6764df3 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -162,6 +162,7 @@ The Daikin ARC remotes (``daikin_arc`` climate, ``daikin_arc417``, ``daikin_arc4 - ``yaa`` - ``yac`` - ``yac1fb9`` + - ``yx1ff`` .. code-block:: yaml From 3bfc52e12f270e540b39b4bfe338527e14e997d5 Mon Sep 17 00:00:00 2001 From: Tercio Filho Date: Mon, 2 Sep 2024 20:56:22 -0300 Subject: [PATCH 20/46] [modbus_controller] Pref to allow duplicate commands (#4203) --- components/modbus_controller.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/modbus_controller.rst b/components/modbus_controller.rst index 264f078379..7eca0e6a0c 100644 --- a/components/modbus_controller.rst +++ b/components/modbus_controller.rst @@ -54,7 +54,9 @@ Configuration variables: - **modbus_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the ``modbus`` hub. -- **address** (**Required**, :ref:`config-id`): The Modbus address of the slave device +- **address** (**Required**, :ref:`config-id`): The Modbus address of the slave device. + +- **allow_duplicate_commands** (*Optional*, boolean): Whether to allow duplicate commands in the queue. Defaults to ``false``. - **command_throttle** (*Optional*, :ref:`config-time`): minimum time in between 2 requests to the device. Default is ``0ms``. Some Modbus slave devices limit the rate of requests from the master, so this allows the interval between requests to be altered. From 9f7548b7a481196c824e3efb1a07637d90ebca19 Mon Sep 17 00:00:00 2001 From: Jeff Cooper Date: Tue, 3 Sep 2024 23:48:16 -0400 Subject: [PATCH 21/46] Voice assist improvement docs - conversation_timeout (#4213) --- components/voice_assistant.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/voice_assistant.rst b/components/voice_assistant.rst index a52cee8986..a2d1cac08a 100644 --- a/components/voice_assistant.rst +++ b/components/voice_assistant.rst @@ -37,6 +37,8 @@ Configuration: - **media_player** (*Optional*, :ref:`config-id`): The :doc:`media_player ` to use to output the response. Cannot be used with ``speaker`` above. - **use_wake_word** (*Optional*, boolean): Enable wake word on the assist pipeline. Defaults to ``false``. +- **conversation_timeout** (*Optional*, :ref:`config-time`): How long to wait before resetting the ``conversation_id`` + sent to the voice assist pipeline, which contains the context of the current assist pipeline. Defauls to ``300s``. - **on_intent_start** (*Optional*, :ref:`Automation `): An automation to perform when intent processing starts. - **on_intent_end** (*Optional*, :ref:`Automation `): An automation to perform when intent processing ends. - **on_listening** (*Optional*, :ref:`Automation `): An automation to From 81f8f3d0e0cf0f4e9c37211aabb05fe62c8b09e9 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Thu, 5 Sep 2024 01:09:09 +0100 Subject: [PATCH 22/46] Add calibration values for BL0942 (#4163) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/bl0942.rst | 70 ++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/components/sensor/bl0942.rst b/components/sensor/bl0942.rst index e75d66aca9..a64a2e26fc 100644 --- a/components/sensor/bl0942.rst +++ b/components/sensor/bl0942.rst @@ -26,6 +26,10 @@ to some pins on your board and the baud rate set to 4800 with 1 stop bit. sensor: - platform: bl0942 uart_id: uart_bus + voltage_reference: 15968 + current_reference: 124180 + power_reference: 309.1 + energy_reference: 2653 voltage: name: 'BL0942 Voltage' current: @@ -61,6 +65,72 @@ Configuration variables: to use multiple UART buses. - **line_frequency** (*Optional*, string): The nominal AC line frequency of the supply voltage. One of ``50Hz``, ``60Hz``. Defaults to ``50Hz``. - **address** (*Optional*, int): The address of the BL0942 from its strapping pins. Defaults to ``0``. +- **current_reference** (*Optional*, float): The calibration parameter for current readings. Defaults to ``251213.46469622``. +- **voltage_reference** (*Optional*, float): The calibration parameter for voltage readings. Defaults to ``15873.35944299``. +- **power_reference** (*Optional*, float): The calibration parameter for power readings. Defaults to ``596.0`` unless either ``current_reference`` or ``voltage_reference`` are explicitly set, in which case it is calculated. See :ref:`bl0942-calibration` for more details. +- **energy_reference** (*Optional*, float): The calibration parameter for cumulative energy readings. Defaults to ``3304.61127328`` unless any of ``current_reference``, ``voltage_reference`` or ``power_reference`` are explicitly set, in which case it is calculated. See :ref:`bl0942-calibration` for more details. + + +.. _bl0942-calibration: + +Calibration +----------- + +There are two fundamental calibration parameters which are dependent on the hardware: ``voltage_reference`` and ``current_reference``. These can be determined by using an accurate voltage and current meter with a simple resistive load. + +The ``power_reference`` value can be derived from those, and will be roughly ``voltage_reference`` * ``current_reference`` * 3537 / (305978 * 73989). + +The ``energy_reference`` value can be derived as roughly ``power_reference`` * 3600000 / 419430.4. + +For compatibility with existing configurations, if no reference values are set then the original defaults will be used, despite the power and energy calibration not being entirely consistent. + +If converting Tuya devices, the factory calibration values can often be obtained from the original firmware. For example, they may be found in DPS parameters 22-25, or the `voltage_coe` and related options. + +An example from a Tongou DIN rail power meter unit. The result from ``tinytuya wizard`` included: + +.. code-block:: json + + { + "code": "voltage_coe", + "value": 15968 + }, + { + "code": "electric_coe", + "value": 12418 + }, + { + "code": "power_coe", + "value": 3091 + }, + { + "code": "electricity_coe", + "value": 2653 + }, + + +Noting that the ``electric_coe`` value (DPS 23) should be multiplied by ten, and the ``power_coe`` value should be divided by ten, this results in the following configuration: + +.. code-block:: yaml + + voltage_reference: 15968 # DPS 21 + current_reference: 124180 # DPS 22 * 10 + power_reference: 309.1 # DPS 23 / 10 + energy_reference: 2653 # DPS 24 + +Alternatively, the values may be found on the flash of the unit without obtaining +the Tuya keys for local communication. They can be found in the "key value store" +partition. The same device as in the above example had the following (before +flashing ESPHome) at offset ``0x001d5000``: + +.. code-block:: + + 001d5000 60 3e 00 00 82 30 00 00 13 0c 00 00 5d 0a 00 00 |`>...0......]...| + +The hex values 0x3e60, 0x3082, 0xc13 and 0xa5d seen there correspond to the four +DPS values reported by the running Tuya firmware. + +The formulas above for deriving ``power_reference`` and ``energy_reference`` can be +used as a sanity check for the values found from the firmware. See Also -------- From f50349d261b4c80377149e3c450b6292766c575d Mon Sep 17 00:00:00 2001 From: Markus <974709+Links2004@users.noreply.github.com> Date: Thu, 5 Sep 2024 02:57:30 +0200 Subject: [PATCH 23/46] Add documentation for StatsD component (#3802) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Co-authored-by: H. Árkosi Róbert --- components/statsd.rst | 53 +++++++++++++++++++++++++++++++++++++++++++ index.rst | 2 ++ 2 files changed, 55 insertions(+) create mode 100644 components/statsd.rst diff --git a/components/statsd.rst b/components/statsd.rst new file mode 100644 index 0000000000..47881c92fe --- /dev/null +++ b/components/statsd.rst @@ -0,0 +1,53 @@ +.. _statsd: + +StatsD +======== + +.. seo:: + :description: Instructions for setting up a StatsD + :keywords: StatsD, metrics + +StatsD is a `protocol `_ to send metrics to a Daemon to store and aggregate them. +Today there are many monitoring solutions that support receiving metrics via the StatsD protocol. + + +.. code-block:: yaml + + # Example configuration entry + statsd: + host: REPLACEME + sensors: + id: some_sensor + name: test1.sensor + + sensor: + platform: ... + id: some_sensor + + +This example will generate a metric named `test1.sensor` with the value of the `some_sensor` sensor. + + +Configuration variables: +------------------------ + +- **host** (**Required**, ip): The Host IP of your StatsD Server. +- **post** (*Optional*, uint16): The Port of your StatsD Server. Defaults to ``8125``. +- **prefix** (*Optional*, string): The prefix to automatically prepend every metric with. Defaults to ``""``. +- **update_interval** (*Optional*, uint16): How often to send the metrics. Defaults to ``10s``. +- **sensor** (*Optional*, :ref:`sensors`): A list of sensors to generate metrics for. +- **binary_sensor** (*Optional*, :ref:`sensors`): A list of binary sensors to generate metrics for. + +.. _sensors: + +Sensor list +----------- + +- **id** (**Required**, :ref:`config-id`): The ID of the sensor. +- **name** (**Required**, name): The Name of the metric the sensor value is send as. (Prefix is added to this name). + +See Also +-------- + +- :apiref:`statsd/statsd.h` +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index ee5de2264a..743bb24f6c 100644 --- a/index.rst +++ b/index.rst @@ -204,6 +204,7 @@ Network Protocols HTTP Request, components/http_request, connection.svg, dark-invert mDNS, components/mdns, radio-tower.svg, dark-invert WireGuard, components/wireguard, wireguard_custom_logo.svg + StatsD, components/statsd, connection.svg UDP, components/udp, udp.svg Bluetooth/BLE @@ -225,6 +226,7 @@ Management and Monitoring Debug, components/debug, bug-report.svg, dark-invert Logger, components/logger, file-document-box.svg, dark-invert Prometheus, components/prometheus, prometheus.svg + StatsD, components/statsd, connection.svg Safe Mode, components/safe_mode, restart-alert.svg Web Server, components/web_server, http.svg, dark-invert ESP32 Camera Web Server, components/esp32_camera_web_server, camera.svg, dark-invert From 420c7b27a7e4892d8e77a19f56cd5efe4f99b7bc Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 5 Sep 2024 13:13:33 +1200 Subject: [PATCH 24/46] Add supported domains for HA switch (#4215) --- components/switch/homeassistant.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/components/switch/homeassistant.rst b/components/switch/homeassistant.rst index 177adb3af6..502ae3a1db 100644 --- a/components/switch/homeassistant.rst +++ b/components/switch/homeassistant.rst @@ -22,6 +22,20 @@ Configuration variables: - **entity_id** (**Required**, string): The entity ID to import / control from Home Assistant. - All other options from :ref:`Switch `. +Supported domains +----------------- + +The following entity domains from Home Assistant are supported by this platform. + +- ``automation`` +- ``fan`` +- ``humidifier`` +- ``input_boolean`` +- ``light`` +- ``remote`` +- ``siren`` +- ``switch`` + See Also -------- From 53b81203fc1ce2d39c06a346ad53d11ab4fe9909 Mon Sep 17 00:00:00 2001 From: Adam DeMuri Date: Wed, 4 Sep 2024 23:08:40 -0600 Subject: [PATCH 25/46] Add BMP280 SPI Component (#4064) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/bmp280.rst | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/components/sensor/bmp280.rst b/components/sensor/bmp280.rst index ff0c6abbc5..e5385c842f 100644 --- a/components/sensor/bmp280.rst +++ b/components/sensor/bmp280.rst @@ -8,7 +8,7 @@ BMP280 Temperature+Pressure Sensor The ``bmp280`` sensor platform allows you to use your BMP280 (`datasheet `__, -`Adafruit`_) temperature and pressure sensors with ESPHome. The :ref:`I²C ` is +`Adafruit`_) temperature and pressure sensors with ESPHome. The :ref:`I²C ` or :ref:`SPI ` is required to be set up in your configuration for this sensor to work. .. figure:: images/bmp280-full.jpg @@ -21,9 +21,9 @@ required to be set up in your configuration for this sensor to work. .. code-block:: yaml - # Example configuration entry + # Example configuration entry I2C sensor: - - platform: bmp280 + - platform: bmp280_i2c temperature: name: "Outside Temperature" oversampling: 16x @@ -32,6 +32,17 @@ required to be set up in your configuration for this sensor to work. address: 0x77 update_interval: 60s + # Example configuration entry SPI + sensor: + - platform: bmp280_spi + temperature: + name: "Outside Temperature" + oversampling: 16x + pressure: + name: "Outside Pressure" + cs_pin: GPIO5 + update_interval: 60s + Configuration variables: ------------------------ @@ -48,13 +59,22 @@ Configuration variables: See :ref:`Oversampling Options `. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the I²C address of - the sensor. Defaults to ``0x77``. Another address can be ``0x76``. - **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of ``OFF``, ``2x``, ``4x``, ``16x``. Defaults to ``OFF``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. + +I²C Configuration variables: + +- **address** (*Optional*, int): Manually specify the I²C address of + the sensor. Defaults to ``0x77``. Another address can be ``0x76``. + +SPI Configuration variables: + +- **cs_pin** (*Optional*, :ref:`Pin Schema `): The CS pin of the BMP280 sensor. + + .. figure:: images/bmp280-full.jpg :align: center :width: 60.0% From 0379478223dc09e54ea2656436d0ea20d14e6d02 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 9 Sep 2024 13:59:12 +1000 Subject: [PATCH 26/46] [lvgl] Document msgbox changes (#4209) --- components/lvgl/widgets.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index e30f12eacc..39f225b6a6 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -1124,7 +1124,8 @@ The text will be broken into multiple lines automatically and the height will be - **buttons** (*Optional*, list): A list of buttons to show at the bottom of the message box: - **text** (*Optional*, :ref:`text-property`): Text to display on the button. - See :ref:`lvgl-widget-buttonmatrix` for other options for the buttons. - - **close_button** (*Optional*, boolean): Controls the appearance of the close button to the top right of the message box. + - **button_style** (*Optional*, dict): A style to apply to the buttons. Uses all the typical style properties. Buttons cannot be individually styled since they are part of a ``buttonmatrix``. + - **close_button** (*Optional*, boolean): Controls the presence of the close button to the top right of the message box. Defaults to true **Actions:** From 0d63a2cd7ebea6ec52c9ac902a75ad6876ecf746 Mon Sep 17 00:00:00 2001 From: Anton Viktorov Date: Mon, 9 Sep 2024 19:25:48 +0200 Subject: [PATCH 27/46] Support for light sensors LTR-501, LTR-301, LTR-558 (#3616) * LTR303 and LTR329 light sensors * LTR303 tidy up * LTR303 tidy up * LTR303 auto mode * LTR303 auto mode+ * LTR303 auto mode+ * removed param * LTR als ps * ref * typo * ltr501 fam * readme fix * gain/time combinations * table fix * table fix * table fix * readme fix * readme fix * gain update * ui pic * Apply suggestions from code review Co-authored-by: Keith Burzinski --------- Co-authored-by: Keith Burzinski --- components/sensor/images/ltr501-full.jpg | Bin 0 -> 9999 bytes components/sensor/images/ltr501-ui.png | Bin 0 -> 6892 bytes components/sensor/ltr501.rst | 193 +++++++++++++++++++++++ images/ltr501.jpg | Bin 0 -> 6666 bytes index.rst | 3 + 5 files changed, 196 insertions(+) create mode 100644 components/sensor/images/ltr501-full.jpg create mode 100644 components/sensor/images/ltr501-ui.png create mode 100644 components/sensor/ltr501.rst create mode 100644 images/ltr501.jpg diff --git a/components/sensor/images/ltr501-full.jpg b/components/sensor/images/ltr501-full.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fef6751fe19b8b048cfe9a6e881252e850c295df GIT binary patch literal 9999 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 X6JDrEFfFl} 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 KS*T$f_P+pgSgsHN literal 0 HcmV?d00001 diff --git a/components/sensor/ltr501.rst b/components/sensor/ltr501.rst new file mode 100644 index 0000000000..9b01e18478 --- /dev/null +++ b/components/sensor/ltr501.rst @@ -0,0 +1,193 @@ +Lite-On Ambient Light & Proximity Sensors +========================================= + +.. seo:: + :description: Instructions for setting up LTR301, LTR501, LTR558 ambient light sensors/proximity sensors with ESPHome. + :image: ltr501.jpg + :keywords: LTR-301, LTR-501, LTR-558 + + +.. figure:: images/ltr501-full.jpg + :align: center + :width: 60.0% + + LTR-501 on a breadboard from Olimex + +.. figure:: images/ltr501-ui.png + :align: center + :width: 60.0% + + LTR-501 Sensor in Home Assistant UI. + +The ``ltr501`` sensor platform allows you to use a range of LiteOn ambient light and proximity sensors +with ESPHome. + +The supported family of sensors includes: + +- Ambient Light Sensor **LTR-301ALS** +- Integrated Ambient Light and Proximity Sensors **LTR-501ALS** and **LTR-558ALS** + +The LTR-501 device is available on a breakout board from `Olimex`_. + +The sensors are very similar and share the same datasheet. The :ref:`I²C Bus ` is required to be set up in your +configuration for this sensor to work. I²C address is ``0x23``. + +Proximity sensors are the same sort of sensors that you find in phones and tablets to disable the screen when you hold +the device up to your ear. They might be useful for automated turning on or off of displays and control panels. + +.. _Olimex: https://www.olimex.com/Products/Modules/Sensors/MOD-LTR-501ALS/open-source-hardware + +Ambient light sensing +--------------------- + +These sensors have a linear response over a wide dynamic range from 0.01 lux to 64k lux and are well suited +to applications under high ambient brightness. There are two gain settings (1X, 150X) available for use. +Use higher gain for dimmer areas. + +These devices consist of two photodiodes: a *CH0* diode that is sensitive to both visible and infrared light and +a *CH1* diode that is sensitive only to infrared light. + +**Note**: These sensors do not have internal data checking and do not indicate any errors if +data is not reliable. The sensors can be easily saturated if the gain is too high or the integration time is too long. In this +case, readings can be very strange. It's recommended to use automatic mode with a starting gain of 1X (default) and a starting +integration time of 100ms (default) or even 50ms (if the sensor is in a very bright environment). Automatic mode with starting +gain of 150X is not recommended; use it only if you are sure brightness will never exceed 200-300 lx. + + +Ambient light illuminance calculation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Excerpt from the datasheet: + +.. code-block:: + + RATIO = CH1/(CH0+CH1) + IF (RATIO < 0.45) + ALS_LUX = (1.7743 * CH0 + 1.1059 * CH1) / ALS_GAIN / ALS_INT + ELSEIF (RATIO < 0.64 && RATIO >= 0.45) + ALS_LUX = (3.7725 * CH0 – 1.3363 * CH1) / ALS_GAIN / ALS_INT + ELSEIF (RATIO < 0.85 && RATIO >= 0.64) + ALS_LUX = (1.6903 * CH0 - 0.1693 * CH1) / ALS_GAIN / ALS_INT + ELSE + ALS_LUX = 0 + END + + +where: + +- ``CH0`` and ``CH1`` are the sensor values (measurement counts) for Visible + IR (Ch0) and IR only (Ch1) sensors respectively. +- ``ALS_GAIN`` is the gain multiplier +- ``ALS_INT`` is the integration time in ms/100 + + +ALS Gain levels +^^^^^^^^^^^^^^^ + +The table lists gain values and corresponding illuminance range: + + ========= ================================ + Gain Illuminance range + ========= ================================ + ``1X`` 2 lux to 64k lux (default) + ``150X`` 0.01 lux to 320 lux + ========= ================================ + + +This Wikipedia `article `__ has a table of some lux values for comparison. + + +The following table lists possible gain and integration time combinations: + + ================== ======== =============== ======== ======== + Gain / Int.time 50 ms 100 ms 200 ms 400 ms + ================== ======== =============== ======== ======== + ``1X`` ✓ ✓ (default) + ``150X`` ✓ ✓ ✓ + ================== ======== =============== ======== ======== + + +Proximity sensing +----------------- + +The proximity sensor has a built-in emitter and detector. The sensor detects reflected IR light from the emitter and +gives a raw count value inversely exponential to the distance. A decrease in the count value means an object is getting +further away from the sensor (and vice-versa). Neither of the datasheets provide any information on how to convert +the raw count value to distance. The only way to do so is to test the sensor yourself and select the threshold +according to your needs and environment. Exact values will depend on the type of the object, its color and +reflectivity. + + +Example configuration +--------------------- + +.. code-block:: yaml + + sensor: + - platform: ltr501 + type: ALS_PS # .. or ALS or PS + ambient_light: "Ambient light" + # PS only section + ps_cooldown: 5 s + ps_high_threshold: 500 + on_ps_high_threshold: + then: + - .... # do something - light up the screen for example + ps_counts: + name: "Proximity counts" + + +Configuration variables +----------------------- + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Default is ``0x23``. +- **type** (*Optional*, string): The type of the sensor. Valid values are ``ALS_PS`` *(default)* for + integrated sensors, ``ALS`` for ambient light only or ``PS`` for proximity only devices. +- **auto_mode** (*Optional*, boolean): Automatic gain and integration time selection. Defaults to True. +- **gain** (*Optional*, string): The gain the device will use. Higher values are better in low-light conditions. + Valid values are ``1X`` *(default)*, ``150X``. +- **integration_time** (*Optional*, :ref:`config-time`): + The amount of time sensors are exposed. Longer means more accurate values. + Valid values are: ``50ms``, ``100ms`` *(default)*, ``200ms``, ``400ms``. +- **glass_attenuation_factor** (*Optional*, float): The attenuation factor of glass if it's behind some glass + or plastic facia. Default is ``1.0`` means ``100%`` transmissivity. ``2`` means ``50%`` transmissivity etc. +- **update_interval** (*Optional*, :ref:`config-time`): The interval for checking the sensors. + Defaults to ``60s``. +- **ps_cooldown** (*Optional*, :ref:`config-time`): The "cooldown" period after the proximity sensor is triggered. + Helps to avoid multiple calls. Defaults to ``5s``. +- **ps_gain** (*Optional*, string): The gain the device will use for proximity sensor. Higher values are better in low-light conditions. + Valid values are ``1X`` *(default)*, ``4X``, ``8X``, ``16X``. +- **ps_high_threshold** (*Optional*, int): The threshold for the proximity sensor to trigger on object getting closer. + Defaults to ``65535``, which implies it will never be triggered. +- **ps_low_threshold** (*Optional*, int): The threshold for the proximity sensor to trigger on object getting further away. + Defaults to ``0``, which implies it will never be triggered. +- **on_ps_high_threshold** (*Optional*): Actions to perform when the proximity sensor is triggered + on object getting closer. +- **on_ps_low_threshold** (*Optional*): Actions to perform when the proximity sensor is triggered + on object getting further away. + +Sensors +^^^^^^^ + +This component offers five sensors for ALS-equipped devices and one sensor for PS-equipped devices. +You can configure all or any subset of these sensors. Each configured sensor is reported separately +on each ``update_interval``. Each is an ESPHome :ref:`sensor ` and may be configured +accordingly; if you don’t need to configure additional :ref:`sensor ` variables, you +may simply use the shorthand syntax for the sensor. For example: ``ambient_light: "Ambient light"`` + +- **ambient_light** (*Optional*): Illuminance of ambient light, close to human eye spectre, lx. +- **infrared_counts** (*Optional*): Sensor counts from the IR-sensitive sensor (*CH1*), counts. +- **full_spectrum_counts** (*Optional*): Sensor counts from the sensor sensitive to both visible light and IR (*CH0*), counts. +- **actual_gain** (*Optional*): Gain value used to measure data, multiplier. Particularly useful when "auto_mode" is selected. +- **actual_integration_time** (*Optional*): Integration time used to measure data, ms. Particularly useful when "auto_mode" is selected. +- **ps_counts** (*Optional*) - Raw 11-bit reading from proximity sensor, counts. + + +See Also +-------- + +- `LTR-501ALS datasheet `__ +- `LTR-558ALS datasheet `__ +- `LTR-301ALS datasheet `__ +- :apiref:`ltr501/ltr501.h` +- :ghedit:`Edit` diff --git a/images/ltr501.jpg b/images/ltr501.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8ccbda564ff53dd76a0fb2b3942450dd0fd339f GIT binary patch literal 6666 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 P@Bec~_J8?)BqRR@lnv Date: Tue, 10 Sep 2024 02:12:04 +0100 Subject: [PATCH 28/46] [bl0942] Update docs for accuracy fixes in esphome/esphome#7428 (#4237) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> fixes in esphome/esphome#7428 --- components/sensor/bl0942.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/bl0942.rst b/components/sensor/bl0942.rst index a64a2e26fc..5b2de80599 100644 --- a/components/sensor/bl0942.rst +++ b/components/sensor/bl0942.rst @@ -42,7 +42,6 @@ to some pins on your board and the baud rate set to 4800 with 1 stop bit. name: 'BL0942 Energy' frequency: name: "BL0942 Frequency" - accuracy_decimals: 2 update_interval: 60s @@ -65,6 +64,7 @@ Configuration variables: to use multiple UART buses. - **line_frequency** (*Optional*, string): The nominal AC line frequency of the supply voltage. One of ``50Hz``, ``60Hz``. Defaults to ``50Hz``. - **address** (*Optional*, int): The address of the BL0942 from its strapping pins. Defaults to ``0``. +- **reset** (*Optional*, boolean): Whether to reset the BL0942 chip on startup, resetting all internal counters. Defaults to ``true``. - **current_reference** (*Optional*, float): The calibration parameter for current readings. Defaults to ``251213.46469622``. - **voltage_reference** (*Optional*, float): The calibration parameter for voltage readings. Defaults to ``15873.35944299``. - **power_reference** (*Optional*, float): The calibration parameter for power readings. Defaults to ``596.0`` unless either ``current_reference`` or ``voltage_reference`` are explicitly set, in which case it is calculated. See :ref:`bl0942-calibration` for more details. From d1eb610d81914be28adb84fb71f7448b6c916730 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Tue, 10 Sep 2024 11:24:21 +1000 Subject: [PATCH 29/46] [LVGL] documentation for gradients and meter parts. (#4236) --- components/lvgl/index.rst | 42 +++++++++++++++++++++++++ components/lvgl/widgets.rst | 61 +++++++++++++++++++++++++++++-------- 2 files changed, 91 insertions(+), 12 deletions(-) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index 5f68bc5a93..ccfff25e04 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -113,6 +113,7 @@ The following configuration variables apply to the main ``lvgl`` component, in o - **disp_bg_image** (*Optional*, :ref:`image `): The ID of an existing image configuration, to be used as background wallpaper. To change the image at runtime use the ``lvgl.update`` action. Also see :ref:`lvgl-widget-image` for a note regarding supported image formats. - **default_font** (*Optional*, ID): The ID of the :ref:`font ` used by default to render the text or symbols. Defaults to LVGL's internal ``montserrat_14`` if not specified. - **style_definitions** (*Optional*, list): A batch of style definitions to use in LVGL widget's ``styles`` configuration. See :ref:`below ` for more details. +- **gradients** (*Optional*, list): A list of gradient definitions to use in *bg_grad* styles. See :ref:`below ` for more details. - **theme** (*Optional*, list): A list of styles to be applied to all widgets. See :ref:`below ` for more details. - **widgets** (*Optional*, list): A list of :doc:`/components/lvgl/widgets` to be drawn on the root display. May not be used if ``pages`` (below) is configured. - **pages** (*Optional*, list): A list of page IDs. Each page acts as a parent for widgets placed on it. May not be used with ``widgets`` (above). Options for each page: @@ -243,6 +244,7 @@ You can adjust the appearance of widgets by changing their foreground, backgroun **Styling variables:** - **bg_color** (*Optional*, :ref:`color `): Color for the background of the widget. Defaults to ``0xFFFFFF`` (white). +- **bg_grad** (*Optional*, :ref:`gradient `): A gradient to apply to the background. - **bg_grad_color** (*Optional*, :ref:`color `): Color to make the background gradually fade to. Defaults to ``0`` (black). - **bg_dither_mode** (*Optional*, dict): Set dithering of the background gradient. One of ``NONE``, ``ORDERED``, ``ERR_DIFF``. Defaults to ``NONE``. - **bg_grad_dir** (*Optional*, dict): Choose the direction of the background gradient: ``NONE``, ``HOR``, ``VER``. Defaults to ``NONE``. @@ -519,6 +521,46 @@ Values for use with ``grid_column_align``, ``grid_row_align``, ``grid_cell_x_ali To visualize real, calculated sizes of transparent widgets you can temporarily set ``outline_width: 1`` on them. +.. _lvgl-gradients: + +Gradients +********* + +A gradient is a sequence of colors which can be applied to an object using the ``bg_grad`` style option. Gradients are defined in the *gradients* section of the LVGL configuration by providing two or more color stop points. + Each entry has the following options: + +- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the gradient later. +- **direction** (*Optional*, string): The direction of the gradient. Possible options are ``none`` (the default) ``hor`` or ``ver``. +- **dither** (*Optional*, string): A dithering selection. Possible options are ``none`` (the default) ``err_diff`` or ``ordered``. +- **stops** (**Required**, list): A list of at least 2 color stop points. Each stop point has the following options: + - **color** (**Required**, :ref:`Color `): The color of the stop point. + - **position** (**Required**, float): The position of the stop point. Must be a float between 0.0 and 1.0, a percentage between 0% and 100%, or an integer between 0 and 255. + +.. code-block:: yaml + + # Example gradient showing full hue range. + + gradients: + - id: color_bar + direction: hor + dither: none + stops: + - color: 0xFF0000 + position: 0 + - color: 0xFFFF00 + position: 42 + - color: 0x00FF00 + position: 84 + - color: 0x00FFFF + position: 127 + - color: 0x0000FF + position: 169 + - color: 0xFF00FF + position: 212 + - color: 0xFF0000 + position: 255 + + Widgets ******* diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 39f225b6a6..460e6a7597 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -40,7 +40,7 @@ The properties below are common to all widgets. - ``"ACTIVE"``: Show scroll bars while a widget is being scrolled. - ``"AUTO"``: Show scroll bars when the content is large enough to be scrolled (default). -- **align** (*Optional*, dict): Alignment of the of the widget relative to the parent. A child widget is clipped to its parent boundaries. One of the values *not* starting with ``OUT_`` (see picture below). +- **align** (*Optional*, enum): Alignment of the of the widget relative to the parent. A child widget is clipped to its parent boundaries. One of the values *not* starting with ``OUT_`` (see picture below). - **align_to** (*Optional*, list): Alignment of the of the widget relative to another widget on the same level: - **id** (**Required**): The ID of a widget *to* which you want to align. - **align** (**Required**, string): Desired alignment (one of the values starting with ``OUT_``). @@ -116,6 +116,40 @@ In addition to visual styling, each widget supports some boolean **flags** to in LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. +.. _lvgl-widget-parts: + +Widget parts +------------ + +Widgets can have multiple parts, each of which can be styled independently. For example, a checkbox has a *main* part that styles the background and text label, and an *indicator* part that styles the tick box. All widgets have a *main* part, the available parts for other widgets are specified in the widget description. + +The possible parts are: + +- **main** (*Optional*, dict): The main part of the widget, i.e. the background. Any style properties applied at the top level of the widget are assumed to apply to this part, but may also be specified under the *main* config key. +- **scrollbar** (*Optional*, dict): The scrollbar styles. +- **indicator** (*Optional*, dict): The indicator part of the widget. The indicator part may be used to show tick boxes or other visual indicators in slider, bar or arc. +- **knob** (*Optional*, dict): The knob part of the widget e.g. a draggable item in slider, bar or arc. +- **selected** (*Optional*, dict): The currently selected part of the widget, e.g. text or the selected item in a roller. +- **items** (*Optional*, dict): The items part of the widget, e.g. the items in a roller. +- **ticks** (*Optional*, dict): Ticks on scales for a meter. +- **cursor** (*Optional*, dict): The cursor part of the widget, e.g. the cursor in a spinbox. + +.. code-block:: yaml + + # Example slider with knob and indicator styling + - slider: + # main (background) styles + bg_opa: cover + bg_grad: color_bar + radius: 0 + indicator: + bg_opa: transp # Makes the indicator part invisible + knob: + radius: 1 + width: 4 + height: 10% + bg_color: 0x000000 + Widget-specific properties -------------------------- @@ -776,8 +810,8 @@ For styling, the ``keyboard`` widget uses the same settings as :ref:`lvgl-widget **Configuration variables:** -- **textarea** (*Optional*): The ID of the ``textarea`` from which to receive the keystrokes. -- **mode** (*Optional*, dict): Keyboard layout to use. Each ``TEXT_`` layout contains a button to allow the user to iterate through the ``TEXT_`` layouts. +- **textarea** (*Optional*): The ID of a ``textarea`` to associate with the keyboard. If provided, all key entries are recorded in the ``textarea``. +- **mode** (*Optional*, enum): Keyboard layout to use. Each ``TEXT_`` layout contains a button to allow the user to iterate through the ``TEXT_`` layouts. - ``TEXT_LOWER``: Display lower case letters (default). - ``TEXT_UPPER``: Display upper case letters. - ``TEXT_SPECIAL``: Display special characters. @@ -785,9 +819,9 @@ For styling, the ``keyboard`` widget uses the same settings as :ref:`lvgl-widget **Actions:** -- ``lvgl.keyboard.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. - - **id** (**Required**): The ID or a list of IDs of keyboard widgets which you want update. - - Widget styles or properties from the specific options above, which you want update. +- ``lvgl.keyboard.update`` :ref:`action ` updates the properties from the specific options above, plus any from :ref:`lvgl.widget.update `. + - **id** (**Required**): The ID or a list of IDs of keyboard widgets which you want to update. + - Styles or properties to be updated. **Triggers:** @@ -851,7 +885,7 @@ A label is the basic widget type that is used to display text. - **recolor** (*Optional*, boolean): Enable recoloring of button text with ``#``. This makes it possible to set the color of characters in the text individually by prefixing the text to be re-colored with a ``#RRGGBB`` hexadecimal color code followed by a *space*, and finally closed with a single hash ``#`` tag. For example: ``Write a #FF0000 red# word``. - **scrollbar** (*Optional*, list): Settings for the indicator *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. The scroll bar that is shown when the text is larger than the widget's size. - **selected** (*Optional*, list): Settings for the the style of the selected text. Only ``text_color`` and ``bg_color`` style properties can be used. -- **text_align** (*Optional*, dict): Alignment of the text in the widget - it doesn't align the object itself, only the lines inside the object. One of ``LEFT``, ``CENTER``, ``RIGHT``, ``AUTO``. Inherited from parent. Defaults to ``AUTO``, which detects the text base direction and uses left or right alignment accordingly. +- **text_align** (*Optional*, enum): Alignment of the text in the widget - it doesn't align the object itself, only the lines inside the object. One of ``LEFT``, ``CENTER``, ``RIGHT``, ``AUTO``. Inherited from parent. Defaults to ``AUTO``, which detects the text base direction and uses left or right alignment accordingly. - **text_color** (*Optional*, :ref:`color `): Color to render the text in. Inherited from parent. Defaults to ``0`` (black). - **text_decor** (*Optional*, list): Choose decorations for the text: ``NONE``, ``UNDERLINE``, ``STRIKETHROUGH`` (multiple can be specified as YAML list). Inherited from parent. Defaults to ``NONE``. - **text_font**: (*Optional*, :ref:`font `): The ID of the font used to render the text or symbol. Inherited from parent. @@ -1050,6 +1084,9 @@ The meter widget can visualize data in very flexible ways. It can use arcs, need - **width**: Tick line width in pixels. Defaults to ``5``. - Style options from :ref:`lvgl-styling` for the tick *lines* and *labels* using the :ref:`lvgl-widget-line` and :ref:`lvgl-widget-label` text style properties. - Style options from :ref:`lvgl-styling` for the background of the meter, using the typical background properties. +- **ticks** (*Optional*, dict): Styling options for the ticks *part*, which will be applied to the tick lines and labels using standard *line* and *label* styles. +- **indicator** (*Optional*, dict): Styling options for the indicator *part*, which will be applied to the needle line or image using standard *line* and *image* styles. +- **items** (*Optional*, dict): Settings for the items *part*, which will be applied to arcs. .. note:: @@ -1116,7 +1153,7 @@ The text will be broken into multiple lines automatically and the height will be **Configuration variables:** -- **msgboxes** (*Optional*, dict): A list of message boxes to use. This option has to be added to the top level of the LVGL component configuration. +- **msgboxes** (*Optional*, list): A list of message boxes to use. This option is available only at the top level of the LVGL component configuration. Each list entry may have the following options: - **title** (**Required**, string): A string to display at the top of the message box. - **body** (*Optional*, dict): The content of the body of the message box: - **text** (*Optional*, :ref:`text-property`): The text to display in the body of the message box. @@ -1129,7 +1166,7 @@ The text will be broken into multiple lines automatically and the height will be **Actions:** -The configured message boxes are hidden by default. One can show them with ``lvgl.widget.show`` and ``lvgl.widget.hide`` :ref:`actions `. +The configured message boxes are hidden by default. They can be shown and hidden using ``lvgl.widget.show`` and ``lvgl.widget.hide`` respectively :ref:`actions `. **Example:** @@ -1204,7 +1241,7 @@ Roller allows you to simply select one option from a list by scrolling. **Configuration variables:** - **anim_time** (*Optional*, :ref:`Time `): When the Roller is scrolled and doesn't stop exactly on an option it will scroll to the nearest valid option automatically in this amount of time. -- **mode** (*Optional*, dict): Option to make the roller circular. ``NORMAL`` or ``INFINITE``, defaults to ``NORMAL``. +- **mode** (*Optional*, enum): Option to make the roller circular. ``NORMAL`` or ``INFINITE``, defaults to ``NORMAL``. - **options** (**Required**, list): The list of available options in the roller. - **selected_index** (*Optional*, int8): The index of the item you wish to be selected. - **selected** (*Optional*, list): Settings for the selected *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. The selected option in the middle. Besides the typical background properties it uses the :ref:`lvgl-widget-label` text style properties to change the appearance of the text in the selected area. @@ -1508,14 +1545,14 @@ The tabs are indexed (zero-based) in the order they appear in the configuration **Configuration variables:** -- **position** (*Optional*, string): Position of the tab selector buttons. One of ``TOP``, ``BOTTOM``, ``LEFT``, ``RIGHT``. Defaults to ``TOP``. +- **position** (*Optional*, enum): Position of the tab selector buttons. One of ``TOP``, ``BOTTOM``, ``LEFT``, ``RIGHT``. Defaults to ``TOP``. - **size** (*Optional*, percentage): The height (in case of ``TOP``, ``BOTTOM``) or width (in case of ``LEFT``, ``RIGHT``) tab buttons. Defaults to ``10%``. - **tabs** (**Required**, list): A list with (any number of) tabs to be added to tabview. - **name** (**Required**): The text to be shown on the button corresponding to the tab. - **id** (*Optional*): An ID for the tab itself. - **widgets** (**Required**, list): A list of :doc:`/components/lvgl/widgets` to be drawn on the tab, as children. - **tab_style** (*Optional*): Style settings for the tabs. - - **items** (*Optional*, list): Settings for the items *part*, the buttons all use the text and typical background style properties except translations and transformations. + - **items** (*Optional*, dict): Settings for the items *part*, the buttons all use the text and typical background style properties except translations and transformations. **Actions:** From 9800b81513b1b0ae1553fed9cbb632be30d17f0c Mon Sep 17 00:00:00 2001 From: marcovaneck <67060615+marcovaneck@users.noreply.github.com> Date: Tue, 10 Sep 2024 10:23:02 +0200 Subject: [PATCH 30/46] [dsmr] Add internal 'telegram' text_sensor to support bridging (#3890) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/dsmr.rst | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/components/sensor/dsmr.rst b/components/sensor/dsmr.rst index 4d5fb1fc2f..200ab7f614 100644 --- a/components/sensor/dsmr.rst +++ b/components/sensor/dsmr.rst @@ -256,6 +256,11 @@ Configuration variables: - All options from :ref:`Text Sensor `. +- **telegram** (*Optional*): The (decrypted) unparsed telegram, marked as internal sensor. + Can also be used to trigger an action based on the last values. + + - All other options from :ref:`Text Sensor `. + Belgium - **p1_version_be** (*Optional*): DSMR Version Belgium @@ -384,6 +389,42 @@ actually make it work, serial logging must be disabled to keep the hardware UART pin: GPIO13 baud_rate: 115200 +Bridging support / raw telegram logging +--------------------------------------- + +You can use another uart to supply another P1 receiver with the same telegram. See configuration sample as used for bridging. + +.. code-block:: yaml + + # define multiple uart's + uart: + - id: p1_uart + rx_pin: + number: 4 + inverted: true + baud_rate: 115200 + rx_buffer_size: 1700 + - id: p1_bridge_uart + tx_pin: + number: 10 + baud_rate: 115200 + + # link input uart to dsmr + dsmr: + uart_id: p1_uart + max_telegram_length: 1700 + + # log the telegram and pass telegram to p1_bridge_uart + text_sensor: + - platform: dsmr + telegram: + name: "telegram" + on_value: + then: + - lambda: |- + ESP_LOGV("dsrm", "telegram: %s", x.c_str()); + p1_bridge_uart->write_str(x.c_str()); + See Also -------- From 3c927f750d2d4ec65d422dd17adebe83cb4d1091 Mon Sep 17 00:00:00 2001 From: Mike La Spina Date: Tue, 10 Sep 2024 16:20:44 -0500 Subject: [PATCH 31/46] Add ATM90E32 Offset calibration (#4157) Co-authored-by: descipher Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/atm90e32.rst | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/components/sensor/atm90e32.rst b/components/sensor/atm90e32.rst index 251f4cba58..c878fe857d 100644 --- a/components/sensor/atm90e32.rst +++ b/components/sensor/atm90e32.rst @@ -79,6 +79,31 @@ Configuration variables: - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. +- **enable_offset_calibration** (*Optional*, boolean): If true it enables fine grained offset noise 0 level calibration for voltage and + current sensors. Buttons are required to operate the calibration feature. With multiple atm90e32 sensors each one is enabled + individually and it's buttons are mapped using an id value pair. e.g. ``id: chip1`` when more than one is defined. Offset calibration should only be used + when DC supply noise causes non 0 current or voltage readings. Calibration can only be performed when all voltage and current inputs are at a 0 value. + +Button +------ + +.. code-block:: yaml + + button: + - platform: atm90e32 + id: chip1 + run_offset_calibration: + name: "Chip1 - Run Offset Calibration" + clear_offset_calibration: + name: "Chip1 - Clear Offset Calibration" + +Configuration variables: + +- **id** (*Optional*, :ref:`config-id`): The ID of the atm90e32 defined above. Required if there are multiple atm90e32 configured. +- **run_offset_calibration** (*Optional*): A button to run the offset calibration. + All options from :ref:`Button `. +- **clear_offset_calibration** (*Optional*): A button to clear the offset calibration. + All options from :ref:`Button `. Calibration ----------- @@ -258,6 +283,7 @@ Additional Examples sensor: - platform: atm90e32 cs_pin: 5 + id: chip1 #Optional phase_a: voltage: name: "EMON Line Voltage A" @@ -287,8 +313,10 @@ Additional Examples current_phases: 3 gain_pga: 1X update_interval: 60s + enable_offset_calibration: True - platform: atm90e32 cs_pin: 4 + id: chip2 #Optional phase_a: current: name: "EMON CT4 Current" @@ -315,6 +343,14 @@ Additional Examples gain_pga: 1X update_interval: 60s + button: + - platform: atm90e32 + id: chip1 + run_offset_calibration: + name: "Chip1 - Run Offset Calibration" + clear_offset_calibration: + name: "Chip1 - Clear Offset Calibration" + .. code-block:: yaml From 20cf2ac20038932cf9a8db421be65f3026bdb370 Mon Sep 17 00:00:00 2001 From: ArkanStasarik <103874616+ArkanStasarik@users.noreply.github.com> Date: Wed, 11 Sep 2024 12:53:12 +0800 Subject: [PATCH 32/46] Update max31856 docs to support thermocouple type selection (#4119) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/max31856.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/sensor/max31856.rst b/components/sensor/max31856.rst index 1a571fbffe..0a1b31e5f4 100644 --- a/components/sensor/max31856.rst +++ b/components/sensor/max31856.rst @@ -45,6 +45,7 @@ Configuration variables: - **cs_pin** (**Required**, :ref:`Pin Schema `): The Chip Select pin of the SPI interface. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - **mains_filter** (*Optional*, string): The mains power frequency to reject (``50 Hz`` or ``60 Hz``). Defaults to ``60 Hz``. +- **thermocouple_type** (*Optional*, string): The type of thermocouple used. MAX31856 supports: B, E, J, K, N, R, S, and T . Defaults to ``K``. - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. - All other options from :ref:`Sensor `. From 42ca53f43aa8f789f3fe39bafd5116c2a60d3a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=5Bp=CA=B2=C9=B5s=5D?= Date: Wed, 11 Sep 2024 07:12:22 +0200 Subject: [PATCH 33/46] [i2s_audio] Add more options to speakers and microphones (#4166) --- components/microphone/i2s_audio.rst | 13 +++++++------ components/speaker/i2s_audio.rst | 14 +++++++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/components/microphone/i2s_audio.rst b/components/microphone/i2s_audio.rst index 42aa8f3898..952a23c0fa 100644 --- a/components/microphone/i2s_audio.rst +++ b/components/microphone/i2s_audio.rst @@ -40,13 +40,14 @@ Configuration variables: - ``external``: Use an external ADC connected to the I²S bus. - ``internal``: Use the internal ADC of the ESP32. Only supported on ESP32, no variant support. -- **channel** (*Optional*, enum): The channel of the microphone. One of ``left`` or ``right``. Defaults to ``right``. +- **channel** (*Optional*, enum): The channel of the microphone. One of ``left``, ``right``, or ``stereo``. If ``stereo``, the output data will + be twice as big, with each right sample followed by a left sample. Defaults to ``right``. - **sample_rate** (*Optional*, positive integer): I2S sample rate. Defaults to ``16000``. -- **bits_per_sample** (*Optional*, enum): The bit depth of the audio samples. Note that while set to ``32bit``, the samples - will be scaled down to 16bit before being forwarded. - One of ``16bit`` or ``32bit``. Defaults to ``32bit``. +- **bits_per_sample** (*Optional*, enum): The bit depth of the audio samples. Note that while set to ``24bit`` or ``32bit``, the samples + will be scaled down to 16bit before being forwarded. One of ``8bit``, ``16bit``, ``24bit``, or ``32bit``. Defaults to ``32bit``. +- **bits_per_channel** (*Optional*, enum): The bit depth of the audio channels. See the datasheet of your I2S device for details. Defaults to ``bits_per_sample``. - **use_apll** (*Optional*, boolean): I2S using APLL as main I2S clock, enable it to get accurate clock. Defaults to ``false``. -- **i2s_mode** (*Optional*, enum): The I²S mode to use. One of ``primary`` or ``secondary``. Defaults to ``primary``. +- **i2s_mode** (*Optional*, enum): The I²S mode to use. One of ``primary`` (clock driven by the host) or ``secondary`` (clock driven by the attached device). Defaults to ``primary``. - **i2s_audio_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`I²S Audio ` you wish to use for this microphone. - All other options from :ref:`Microphone ` @@ -54,7 +55,7 @@ External ADC ------------ - **i2s_din_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I²S ``DIN/SDIN`` *(Data In)* signal, also referred to as ``SD/SDATA`` *(Serial Data)* or ``ADCDAT`` *(Analog to Digital Converter Data)*. -- **pdm** (**Required**, boolean): Set this to ``true`` if your external ADC uses PDM (Pulse Density Modulation) instead of I²S. +- **pdm** (*Optional*, boolean): Set this to ``true`` if your external ADC uses PDM (Pulse Density Modulation) instead of I²S. Defaults to ``false``. .. note:: diff --git a/components/speaker/i2s_audio.rst b/components/speaker/i2s_audio.rst index 92023ab371..f1ba0d190a 100644 --- a/components/speaker/i2s_audio.rst +++ b/components/speaker/i2s_audio.rst @@ -24,7 +24,6 @@ This platform only works on ESP32 based chips. - platform: i2s_audio dac_type: external i2s_dout_pin: GPIOXX - mode: mono Configuration variables: ------------------------ @@ -34,12 +33,21 @@ Configuration variables: - ``external``: Use an external DAC, for example the NS4168, or UDA1334A. - ``internal``: Use the internal DAC +- **channel** (*Optional*, enum): The channel of the speaker. One of ``left``, ``right``, ``mono``, or ``stereo``. If ``stereo``, the input data should be twice as big, + with each right sample followed by a left sample. ``left`` and ``right`` mute the unused channel, while ``mono`` plays the same samples on both. Defaults to ``mono``. +- **sample_rate** (*Optional*, positive integer): I2S sample rate. Defaults to ``16000``. +- **bits_per_sample** (*Optional*, enum): The bit depth of the audio samples. Note that while set to ``24bit`` or ``32bit``, the samples + will be scaled up from 16bit before being forwarded. One of ``8bit``, ``16bit``, ``24bit``, or ``32bit``. Defaults to ``16bit``. +- **bits_per_channel** (*Optional*, enum): The bit depth of the audio channels. See the datasheet of your I2S device for details. Defaults to ``bits_per_sample``. +- **use_apll** (*Optional*, boolean): I2S using APLL as main I2S clock, enable it to get accurate clock. Defaults to ``false``. +- **i2s_mode** (*Optional*, enum): The I²S mode to use. One of ``primary`` (clock driven by the host) or ``secondary`` (clock driven by the attached device). Defaults to ``primary``. +- **i2s_audio_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`I²S Audio ` you wish to use for this speaker. +- **timeout** (*Optional*, :ref:`config-time`): How long to wait after finishing playback before releasing the bus. Defaults to ``100ms``. + External DAC ************ - **i2s_dout_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I²S DOUT (Data Out) signal. -- **mode** (*Optional*, string): The mode of the I²S bus. Can be ``mono`` or ``stereo``. Defaults to ``mono``. -- **i2s_audio_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`I²S Audio ` you wish to use for this speaker. For best results, keep the wires as short as possible. From 6bb4798f225b51a816af4fdeb96bd992f09b0749 Mon Sep 17 00:00:00 2001 From: Tercio Filho Date: Wed, 11 Sep 2024 02:21:34 -0300 Subject: [PATCH 34/46] [Modbus Controller] Added preference to change command retries (#4202) --- components/modbus_controller.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/modbus_controller.rst b/components/modbus_controller.rst index 7eca0e6a0c..8e2ea4e688 100644 --- a/components/modbus_controller.rst +++ b/components/modbus_controller.rst @@ -69,6 +69,8 @@ Configuration variables: slaves, this avoids waiting for timeouts allowing to read other slaves in the same bus. When the slave responds to a command, it'll be marked online again. +- **max_cmd_retries** (*Optional*, integer): How many times a command will be retried if no response is received. It doesn't include the initial transmition. Defaults to 4. + - **server_registers** (*Optional*): A list of registers that are responded to when acting as a server. - **address** (**Required**, integer): start address of the first register in a range - **value_type** (*Optional*): datatype of the mod_bus register data. The default data type for ModBUS is a 16 bit integer in big endian format (MSB first) From 18d8cbaecbb468bd70130ec5b7dc8d8c7a47daeb Mon Sep 17 00:00:00 2001 From: ajwahab <1449672+ajwahab@users.noreply.github.com> Date: Wed, 11 Sep 2024 01:25:48 -0400 Subject: [PATCH 35/46] Described new esp32_camera frame buffer option. (#4227) --- components/esp32_camera.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/esp32_camera.rst b/components/esp32_camera.rst index cc146c7a71..9402af34d3 100644 --- a/components/esp32_camera.rst +++ b/components/esp32_camera.rst @@ -74,6 +74,8 @@ Frame Settings: Up to 60Hz is possible (with reduced frame sizes), but beware of overheating. Defaults to ``10 fps``. - **idle_framerate** (*Optional*, float): The framerate to capture images at when no client is requesting a full stream. Defaults to ``0.1 fps``. +- **frame_buffer_count** (*Optional*, int): The number of frame buffers to use when reading from the camera sensor. + Must be between 1 and 2. Defaults to ``1``. Image Settings: From 30487f1bc1f12672bf5b50633feb43e2a792be0e Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 11 Sep 2024 17:27:54 +1200 Subject: [PATCH 36/46] Bump version to 2024.10.0-dev --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Doxygen b/Doxygen index da27607a96..0841f1c170 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2024.9.0-dev +PROJECT_NUMBER = 2024.10.0-dev # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 1683244729..aaf14f9512 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.8.3 +ESPHOME_REF = dev PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 620b3657cd..135cd558d4 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.9.0-dev \ No newline at end of file +2024.10.0-dev \ No newline at end of file diff --git a/conf.py b/conf.py index 40c12c45e1..122ba0064a 100644 --- a/conf.py +++ b/conf.py @@ -67,9 +67,9 @@ # built documents. # # The short X.Y version. -version = "2024.9" +version = "2024.10" # The full version, including alpha/beta/rc tags. -release = "2024.9.0-dev" +release = "2024.10.0-dev" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From b22cc0b0eec87b9de15e555a24c2ac6140a636b2 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 11 Sep 2024 17:40:05 +1200 Subject: [PATCH 37/46] Bump version to 2024.9.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Doxygen b/Doxygen index 0841f1c170..a4851c0255 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2024.10.0-dev +PROJECT_NUMBER = 2024.9.0b1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index aaf14f9512..d1636fb0b2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = dev +ESPHOME_REF = 2024.9.0b1 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 135cd558d4..7824c0829d 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.10.0-dev \ No newline at end of file +2024.9.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index 122ba0064a..3cb19ec093 100644 --- a/conf.py +++ b/conf.py @@ -67,9 +67,9 @@ # built documents. # # The short X.Y version. -version = "2024.10" +version = "2024.9" # The full version, including alpha/beta/rc tags. -release = "2024.10.0-dev" +release = "2024.9.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 311dbebecead722c89ab2a84e7587b47f097b187 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 11 Sep 2024 17:40:15 +1200 Subject: [PATCH 38/46] Update changelog for 2024.9.0b1 --- _static/changelog-2024.9.0.png | Bin 0 -> 201182 bytes changelog/2024.9.0.rst | 181 +++++++++++++++++++++++++++++++++ changelog/index.rst | 2 +- 3 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 _static/changelog-2024.9.0.png create mode 100644 changelog/2024.9.0.rst diff --git a/_static/changelog-2024.9.0.png b/_static/changelog-2024.9.0.png new file mode 100644 index 0000000000000000000000000000000000000000..8a086d85f2e5ec64b89f1c30836e5e67b40f648a GIT binary patch literal 201182 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

3nEVDY5_T^SZePt`VM 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


thz32`2bv8l8zIs`@rTY6}L~e;jf64Zp6M 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 stYFrNnNOBCP4ZW@Dvc`3k&m>`kG@`DEk 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

FvV93P=KfJm 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 Og^Q=FpUXO@geCwRIPls4 literal 0 HcmV?d00001 diff --git a/changelog/2024.9.0.rst b/changelog/2024.9.0.rst new file mode 100644 index 0000000000..1d42ad64ee --- /dev/null +++ b/changelog/2024.9.0.rst @@ -0,0 +1,181 @@ +ESPHome 2024.9.0 - 18th September 2024 +====================================== + +.. seo:: + :description: Changelog for ESPHome 2024.9.0. + :image: /_static/changelog-2024.9.0.png + :author: Jesse Hills + :author_twitter: @jesserockz + +.. imgtable:: + :columns: 3 + + UDP, components/udp, udp.svg + StatsD, components/statsd, connection.svg + BL0906, components/sensor/bl0906, bl0906.png + CH422G, components/ch422g, ch422g.svg + BMP280 SPI, components/sensor/bmp280, bmp280.jpg + LTR501 & LTR301 & LTR558, components/sensor/ltr501, ltr501.jpg + + +Full list of changes +-------------------- + +New Components +^^^^^^^^^^^^^^ + +- Add support for BL0906 energy meter :esphomepr:`7339` by :ghuser:`tarontop` (new-integration) +- [udp] Implement UDP sensor broadcast :esphomepr:`6865` by :ghuser:`clydebarrow` (new-integration) +- CH422G support :esphomepr:`7356` by :ghuser:`jesterret` (new-integration) +- Add StatsD component :esphomepr:`6642` by :ghuser:`Links2004` (new-integration) +- Add support for using BMP280 with SPI :esphomepr:`7053` by :ghuser:`ademuri` (new-integration) (breaking-change) +- LTR-501, LTR-301, LTR-558 Series of Lite-On Light (ALS) and Proximity(PS) sensors :esphomepr:`6262` by :ghuser:`latonita` (new-integration) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- [ili9xxx] Make `invert_colors` required :esphomepr:`7292` by :ghuser:`gvdhoven` (breaking-change) +- Add support for using BMP280 with SPI :esphomepr:`7053` by :ghuser:`ademuri` (new-integration) (breaking-change) +- Move I2S config settings the the base i2sAudio files. Phase 1 :esphomepr:`7183` by :ghuser:`nielsnl68` (breaking-change) +- [i2s_audio] Add more options to speakers and microphones :esphomepr:`7306` by :ghuser:`pyos` (breaking-change) + +All changes +^^^^^^^^^^^ + +- [code-quality] fix performance-unnecessary-value-param :esphomepr:`7274` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy prometheus :esphomepr:`7284` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy ota :esphomepr:`7282` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy e131 :esphomepr:`7281` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy wireguard :esphomepr:`7287` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy improv_serial :esphomepr:`7283` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy captive_portal :esphomepr:`7280` by :ghuser:`tomaszduda23` +- Add HMAC-MD5 support for authenticating OTA updates :esphomepr:`7200` by :ghuser:`dwmw2` (new-integration) +- [const] Add UNIT_LITRE :esphomepr:`7317` by :ghuser:`Roving-Ronin` +- [code-quality] fix clang-tidy socket :esphomepr:`7285` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy cstddef :esphomepr:`7324` by :ghuser:`tomaszduda23` +- Add output source priority "hybrid" :esphomepr:`7322` by :ghuser:`syssi` +- Enable verbose mode from env ESPHOME_VERBOSE or --verbose :esphomepr:`6987` by :ghuser:`ptr727` +- Tuya Number: allow to set hidden datapoints :esphomepr:`7024` by :ghuser:`szupi-ipuzs` +- feat: Expand ByteBuffer :esphomepr:`7316` by :ghuser:`Rapsssito` +- [ledc] Tweak fix in #6997 :esphomepr:`7336` by :ghuser:`kbx81` +- [ledc] Fix maximum brightness on ESP-IDF 5.1 :esphomepr:`7342` by :ghuser:`clydebarrow` +- [lvgl] Bug fixes: :esphomepr:`7341` by :ghuser:`clydebarrow` +- [const] Move ``CONF_LINE_FREQUENCY`` to const.py :esphomepr:`7351` by :ghuser:`jesserockz` +- bl0942: Fix init sequence, add address and line_frequency options :esphomepr:`7250` by :ghuser:`dwmw2` +- Add supported formats to media player :esphomepr:`7318` by :ghuser:`synesthesiam` +- Add reset to esp32_rmt_led_strip :esphomepr:`7354` by :ghuser:`angelnu` +- [ili9xxx] Make `invert_colors` required :esphomepr:`7292` by :ghuser:`gvdhoven` (breaking-change) +- Add WS2811 to esp32_rmt_led_strip :esphomepr:`7353` by :ghuser:`angelnu` +- [lvgl] Add lvgl.widget.focus action and related triggers. :esphomepr:`7315` by :ghuser:`clydebarrow` +- esp32_can: suppress compiler warning :esphomepr:`7372` by :ghuser:`mrk-its` +- Add support for BL0906 energy meter :esphomepr:`7339` by :ghuser:`tarontop` (new-integration) +- [platformio] Add environments for ESP-IDF 5.3 for development :esphomepr:`7371` by :ghuser:`clydebarrow` +- [lvgl] Bug fixes :esphomepr:`7370` by :ghuser:`clydebarrow` +- [bytebuffer] Use existing bit_cast operations. :esphomepr:`7374` by :ghuser:`clydebarrow` +- Bump actions/setup-python from 5.1.0 to 5.2.0 :esphomepr:`7375` by :ghuser:`dependabot[bot]` +- Bump actions/setup-python from 5.1.1 to 5.2.0 in /.github/actions/restore-python :esphomepr:`7376` by :ghuser:`dependabot[bot]` +- [gt911] Add reset pin config :esphomepr:`7373` by :ghuser:`clydebarrow` +- [st7701s] Add delay feature in init sequences :esphomepr:`7343` by :ghuser:`clydebarrow` +- Add now required `invert_colors` option to test files referencing ili9xxx :esphomepr:`7367` by :ghuser:`clydebarrow` +- esp32_can: make queue lengths configurable :esphomepr:`7361` by :ghuser:`mrk-its` +- [code-quality] fix clang-tidy web_server and web_server_base :esphomepr:`7286` by :ghuser:`tomaszduda23` +- Update MiCS Values :esphomepr:`7173` by :ghuser:`TrevorSchirmer` +- Tuya Number: allow restoring value of hidden datapoints :esphomepr:`7346` by :ghuser:`szupi-ipuzs` +- [udp] Implement UDP sensor broadcast :esphomepr:`6865` by :ghuser:`clydebarrow` (new-integration) +- update logs for bluetooth proxy :esphomepr:`7382` by :ghuser:`tomaszduda23` +- [font] Make display an auto-load, not a dependency :esphomepr:`7366` by :ghuser:`clydebarrow` +- CH422G support :esphomepr:`7356` by :ghuser:`jesterret` (new-integration) +- [rpi_dpi_rgb] Add enable_pin and reset_display method to driver :esphomepr:`7383` by :ghuser:`lboue` +- Bump actions/upload-artifact from 4.3.4 to 4.4.0 :esphomepr:`7379` by :ghuser:`dependabot[bot]` +- Fix build for esp32h2 using esp-idf 5.3 :esphomepr:`7393` by :ghuser:`mrene` +- Bump mDNS and follow ruff's suggestions :esphomepr:`7308` by :ghuser:`HeMan` +- Bump rp2040 Arduino platform and framework :esphomepr:`7134` by :ghuser:`HeMan` +- [gree] Add support for YX1FF remote :esphomepr:`7298` by :ghuser:`dangreco` +- [modbus_controller] Allow duplicate command config :esphomepr:`7311` by :ghuser:`0x3333` +- Better support for task blocking ring buffer reads and writes :esphomepr:`7390` by :ghuser:`kahrendt` +- Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0 :esphomepr:`7395` by :ghuser:`dependabot[bot]` +- [api] Remove id from ``MediaPlayerSupportedFormat`` :esphomepr:`7406` by :ghuser:`jesserockz` +- Drop max BLE client connections limitation :esphomepr:`7088` by :ghuser:`syssi` +- [bl0942] loop and overflow cleanup :esphomepr:`7358` by :ghuser:`dwmw2` +- Bump peter-evans/create-pull-request from 6.1.0 to 7.0.0 :esphomepr:`7405` by :ghuser:`dependabot[bot]` +- Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1 :esphomepr:`7404` by :ghuser:`dependabot[bot]` +- Voice assist improvement - configurable conversation_id timeout :esphomepr:`7385` by :ghuser:`jeffc` +- Support BL0942 calibration :esphomepr:`7299` by :ghuser:`dwmw2` +- [micro_wake_word] Remove duplicated download code :esphomepr:`7401` by :ghuser:`jesserockz` +- Add StatsD component :esphomepr:`6642` by :ghuser:`Links2004` (new-integration) +- [homeassistant-switch] Support different entity domains :esphomepr:`7331` by :ghuser:`jesserockz` +- Add support for using BMP280 with SPI :esphomepr:`7053` by :ghuser:`ademuri` (new-integration) (breaking-change) +- Add voice assistant announce :esphomepr:`7377` by :ghuser:`synesthesiam` +- [lvgl] Msgbox fixes and enhancements :esphomepr:`7380` by :ghuser:`clydebarrow` +- libretiny: Allow specifying version of explicitly imported sources :esphomepr:`7408` by :ghuser:`dwmw2` +- [libretiny] Report version 1.7.0 for 'dev' and 'latest' :esphomepr:`7415` by :ghuser:`dwmw2` +- LTR-501, LTR-301, LTR-558 Series of Lite-On Light (ALS) and Proximity(PS) sensors :esphomepr:`6262` by :ghuser:`latonita` (new-integration) +- Fix armv7 container builds :esphomepr:`7426` by :ghuser:`jesserockz` +- [gh-actions] Don't produce docker build summaries :esphomepr:`7430` by :ghuser:`jesserockz` +- Add BK72xx support to require_framework_version() :esphomepr:`7409` by :ghuser:`dwmw2` +- Switch IPv6 platform check to use require_framework_version() :esphomepr:`7410` by :ghuser:`dwmw2` +- [bl0942] Improve energy reporting :esphomepr:`7428` by :ghuser:`dwmw2` +- [rpi_dpi_rgb] Add bounce_buffer config for ESP-IDF 5.x :esphomepr:`7423` by :ghuser:`clydebarrow` +- [LVGL] Add color gradients :esphomepr:`7427` by :ghuser:`clydebarrow` +- [dsmr] Add internal 'telegram' text_sensor to support bridging :esphomepr:`6841` by :ghuser:`marcovaneck` +- Pull in new AsyncTCP for IPv6 on BK72xx :esphomepr:`7431` by :ghuser:`dwmw2` +- Bump LibreTiny recommended version to 1.7.0 :esphomepr:`7432` by :ghuser:`dwmw2` +- Enable IPv6 support for BK72xx :esphomepr:`7398` by :ghuser:`dwmw2` +- Move I2S config settings the the base i2sAudio files. Phase 1 :esphomepr:`7183` by :ghuser:`nielsnl68` (breaking-change) +- Implement all supported thermocouple types for MAX31856 :esphomepr:`7218` by :ghuser:`ArkanStasarik` +- [i2s_audio] Add more options to speakers and microphones :esphomepr:`7306` by :ghuser:`pyos` (breaking-change) +- [uponor_smatrix] Modifies sending algorithm :esphomepr:`7326` by :ghuser:`skasi7` +- User configurable frame buffer. :esphomepr:`7360` by :ghuser:`ajwahab` +- [Modbus Controller] Added preference to change command retries :esphomepr:`7312` by :ghuser:`0x3333` + +Past Changelogs +--------------- + +- :doc:`2024.8.0` +- :doc:`2024.7.0` +- :doc:`2024.6.0` +- :doc:`2024.5.0` +- :doc:`2024.4.0` +- :doc:`2024.3.0` +- :doc:`2024.2.0` +- :doc:`2023.12.0` +- :doc:`2023.11.0` +- :doc:`2023.10.0` +- :doc:`2023.9.0` +- :doc:`2023.8.0` +- :doc:`2023.7.0` +- :doc:`2023.6.0` +- :doc:`2023.5.0` +- :doc:`2023.4.0` +- :doc:`2023.3.0` +- :doc:`2023.2.0` +- :doc:`2022.12.0` +- :doc:`2022.11.0` +- :doc:`2022.10.0` +- :doc:`2022.9.0` +- :doc:`2022.8.0` +- :doc:`2022.6.0` +- :doc:`2022.5.0` +- :doc:`2022.4.0` +- :doc:`2022.3.0` +- :doc:`2022.2.0` +- :doc:`2022.1.0` +- :doc:`2021.12.0` +- :doc:`2021.11.0` +- :doc:`2021.10.0` +- :doc:`2021.9.0` +- :doc:`2021.8.0` +- :doc:`v1.20.0` +- :doc:`v1.19.0` +- :doc:`v1.18.0` +- :doc:`v1.17.0` +- :doc:`v1.16.0` +- :doc:`v1.15.0` +- :doc:`v1.14.0` +- :doc:`v1.13.0` +- :doc:`v1.12.0` +- :doc:`v1.11.0` +- :doc:`v1.10.0` +- :doc:`v1.9.0` +- :doc:`v1.8.0` +- :doc:`v1.7.0` diff --git a/changelog/index.rst b/changelog/index.rst index 0d8b249826..614356b809 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2024.8.0.html + :url: /changelog/2024.9.0.html .. toctree:: :glob: From ccf863aca1119748452b8c84c1105271a466df4e Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 11 Sep 2024 17:41:06 +1200 Subject: [PATCH 39/46] Update supporters for 2024.9.0b1 --- guides/supporters.rst | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 2a7385f247..185aac36cc 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -49,6 +49,7 @@ Contributors - `Chris Byrne (@adapt0) `__ - `Attila Darazs (@adarazs) `__ - `ADeadPixel (@ADeadPixel) `__ +- `Adam DeMuri (@ademuri) `__ - `adezerega (@adezerega) `__ - `Eugen (@Adminius) `__ - `Andrea Donno (@adonno) `__ @@ -141,6 +142,7 @@ Contributors - `arantius (@arantius) `__ - `Ryan DeShone (@ardichoke) `__ - `Ariff Saad (@arffsaad) `__ +- `ArkanStasarik (@ArkanStasarik) `__ - `arturo182 (@arturo182) `__ - `arunderwood (@arunderwood) `__ - `Arya (@Arya11111) `__ @@ -198,6 +200,7 @@ Contributors - `Ben Hoff (@benhoff) `__ - `Benoît Leforestier (@Benichou34) `__ - `Benjamin Aigner (@benjaminaigner) `__ +- `benklop (@benklop) `__ - `benniju (@benniju) `__ - `Benno Pütz (@bennop) `__ - `Benny H (@benny-aus) `__ @@ -260,6 +263,7 @@ Contributors - `brianrjones69 (@brianrjones69) `__ - `Ben Brooks (@brooksben11) `__ - `brtchip-tuannguyen (@brtchip-tuannguyen) `__ +- `Vaclav (@bruxy70) `__ - `buddydvd (@buddydvd) `__ - `bulburDE (@bulburDE) `__ - `Justin Bunton (@Bunton33) `__ @@ -583,6 +587,7 @@ Contributors - `Daniel Dunn (@EternityForest) `__ - `EtienneMD (@EtienneMD) `__ - `etzisim (@etzisim) `__ +- `EvanC-Au (@EvanC-Au) `__ - `Evan Coleman (@evandcoleman) `__ - `Clemens Kirchgatterer (@everslick) `__ - `Everything Smart Home (@EverythingSmartHome) `__ @@ -680,6 +685,7 @@ Contributors - `git2212 (@git2212) `__ - `GitforZhangXL (@GitforZhangXL) `__ - `github-actions[bot] (@github-actions[bot]) `__ +- `GitJRS (@GitJRS) `__ - `gitolicious (@gitolicious) `__ - `The Gitter Badger (@gitter-badger) `__ - `Frederik Gladhorn (@gladhorn) `__ @@ -843,6 +849,7 @@ Contributors - `JasperPlant (@JasperPlant) `__ - `Jas Strong (@jasstrong) `__ - `Alex Boyd (@javawizard) `__ +- `JayElDubya (@JayElDubya) `__ - `Jay Greco (@jaygreco) `__ - `Jay Newstrom (@JayNewstrom) `__ - `Jeff (@jazzmonger) `__ @@ -978,6 +985,7 @@ Contributors - `kghandi (@kghandi) `__ - `Khoi Hoang (@khoih-prog) `__ - `AngeloGioacchino Del Regno (@kholk) `__ +- `Albert Gouws (@KiLLeRRaT) `__ - `Kilowatt (@Kilowatt-W) `__ - `kimonm (@kimonm) `__ - `Kip (@kipwittchen) `__ @@ -990,6 +998,7 @@ Contributors - `Kevin Lewis (@kll) `__ - `kmoulton (@kmoulton) `__ - `KNXBroker (@KNXBroker) `__ +- `KodinLanewave (@KodinLanewave) `__ - `KoenBreeman (@KoenBreeman) `__ - `Koen Vervloesem (@koenvervloesem) `__ - `kokangit (@kokangit) `__ @@ -1461,6 +1470,7 @@ Contributors - `probonopd (@probonopd) `__ - `Gary Morris (@progrmr) `__ - `Mike Lynch (@Prow7) `__ +- `Prowler2 (@Prowler2) `__ - `Peter Sarossy (@psarossy) `__ - `Peter Stuifzand (@pstuifzand) `__ - `Peter Tatrai (@ptatrai) `__ @@ -1872,6 +1882,7 @@ Contributors - `Vishnu Mohanan (@vishnumaiea) `__ - `VitaliyKurokhtin (@VitaliyKurokhtin) `__ - `voed (@voed) `__ +- `James Vogel (@voglster) `__ - `voibit (@voibit) `__ - `Xuming Feng (@voicevon) `__ - `Manuel Bichler (@votacom) `__ @@ -1943,6 +1954,7 @@ Contributors - `yousaf465 (@yousaf465) `__ - `Jevgeni Kiski (@yozik04) `__ - `YuanL.Lee (@yuanl) `__ +- `Cj Fraser (@yuniq-neko) `__ - `Yuval Aboulafia (@yuvalabou) `__ - `Z3LIFF (@z3liff) `__ - `ZabojnikM (@ZabojnikM) `__ @@ -1950,6 +1962,7 @@ Contributors - `zaluthar (@zaluthar) `__ - `david reid (@zathras777) `__ - `Zebble (@Zebble) `__ +- `Wojciech Zelek (@zelo) `__ - `Brynley McDonald (@ZephireNZ) `__ - `ZJY (@zhangjingye03) `__ - `San (@zhujunsan) `__ @@ -1967,4 +1980,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated September 3, 2024.* +*This page was last updated September 11, 2024.* From 3331f92a2f67c0eefcb6f3be4d849c6bd7b15a82 Mon Sep 17 00:00:00 2001 From: Tomer <57483589+tomer-w@users.noreply.github.com> Date: Fri, 13 Sep 2024 08:57:59 +0300 Subject: [PATCH 40/46] Update ble_presence.rst to include information about Manufacturer ID (#4183) --- components/binary_sensor/ble_presence.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/binary_sensor/ble_presence.rst b/components/binary_sensor/ble_presence.rst index 4c0ac32586..16dd9460f2 100644 --- a/components/binary_sensor/ble_presence.rst +++ b/components/binary_sensor/ble_presence.rst @@ -101,7 +101,8 @@ Using the configuration above, first, you should see a ``Starting scan...`` debu boot-up. Then, when a BLE device is discovered, you should see messages like ``Parse Result:`` together with some information about their MAC address, address type, advertised name, Service UUIDs, iBeacon UUIDs, iBeacon major and minor identifiers, -BLE manufacturer data, RSSI, and other data useful for debugging purposes. +BLE manufacturer ID and data, RSSI, and other data useful for debugging purposes. +You can find the official list of manufacturer IDs `here `__ to help find your device. Note that this is useful only during set-up and a less verbose log level should be specified afterwards. If you don't see these messages, your device is unfortunately currently not supported. From 7d61eb1ce5afa84de3183ee8f70ca06bfffe9c93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Sun, 15 Sep 2024 12:00:17 +0200 Subject: [PATCH 41/46] LVGL cookbook (#4110) Co-authored-by: Keith Burzinski Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/lvgl/index.rst | 9 +- components/lvgl/widgets.rst | 29 +- cookbook/images/lvgl_cook_animimg_batt.gif | Bin 0 -> 8109 bytes cookbook/images/lvgl_cook_climate.png | Bin 0 -> 1672 bytes cookbook/images/lvgl_cook_clock.png | Bin 0 -> 8115 bytes cookbook/images/lvgl_cook_cover.png | Bin 0 -> 4539 bytes cookbook/images/lvgl_cook_flex_layout.png | Bin 0 -> 5015 bytes cookbook/images/lvgl_cook_font_batt.png | Bin 0 -> 243 bytes cookbook/images/lvgl_cook_font_binstat.png | Bin 0 -> 2715 bytes cookbook/images/lvgl_cook_font_roboto_mdi.png | Bin 0 -> 2278 bytes cookbook/images/lvgl_cook_gauge.png | Bin 0 -> 4154 bytes cookbook/images/lvgl_cook_gradient_styles.png | Bin 0 -> 10498 bytes cookbook/images/lvgl_cook_keypad.png | Bin 0 -> 5951 bytes cookbook/images/lvgl_cook_pagenav.png | Bin 0 -> 1312 bytes cookbook/images/lvgl_cook_remligbut.png | Bin 0 -> 1696 bytes cookbook/images/lvgl_cook_statico.png | Bin 0 -> 700 bytes cookbook/images/lvgl_cook_thermometer.png | Bin 0 -> 11532 bytes .../images/lvgl_cook_thermometer_gauge.png | Bin 0 -> 5872 bytes cookbook/images/lvgl_cook_titlebar.png | Bin 0 -> 2366 bytes cookbook/images/lvgl_cook_volume.png | Bin 0 -> 1264 bytes cookbook/images/lvgl_cook_weather.png | Bin 0 -> 8364 bytes cookbook/lvgl.rst | 2242 +++++++++++++++++ index.rst | 1 + lint.py | 1 + 24 files changed, 2276 insertions(+), 6 deletions(-) create mode 100644 cookbook/images/lvgl_cook_animimg_batt.gif create mode 100644 cookbook/images/lvgl_cook_climate.png create mode 100644 cookbook/images/lvgl_cook_clock.png create mode 100644 cookbook/images/lvgl_cook_cover.png create mode 100644 cookbook/images/lvgl_cook_flex_layout.png create mode 100644 cookbook/images/lvgl_cook_font_batt.png create mode 100644 cookbook/images/lvgl_cook_font_binstat.png create mode 100644 cookbook/images/lvgl_cook_font_roboto_mdi.png create mode 100644 cookbook/images/lvgl_cook_gauge.png create mode 100644 cookbook/images/lvgl_cook_gradient_styles.png create mode 100644 cookbook/images/lvgl_cook_keypad.png create mode 100644 cookbook/images/lvgl_cook_pagenav.png create mode 100644 cookbook/images/lvgl_cook_remligbut.png create mode 100644 cookbook/images/lvgl_cook_statico.png create mode 100644 cookbook/images/lvgl_cook_thermometer.png create mode 100644 cookbook/images/lvgl_cook_thermometer_gauge.png create mode 100644 cookbook/images/lvgl_cook_titlebar.png create mode 100644 cookbook/images/lvgl_cook_volume.png create mode 100644 cookbook/images/lvgl_cook_weather.png create mode 100644 cookbook/lvgl.rst diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index ccfff25e04..86a0a5651d 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -16,6 +16,7 @@ The graphic display should be configured with ``auto_clear_enabled: false`` and For interactivity, a :doc:`Touchscreen ` (capacitive highly preferred), a :doc:`/components/sensor/rotary_encoder` or a custom keypad made up from discrete :doc:`Binary Sensors ` can be used. +Check out the detailed examples in :ref:`the Cookbook ` which demonstrate a number of ways you can integrate your environment with LVGL and ESPHome. Basics ------ @@ -146,6 +147,7 @@ The following configuration variables apply to the main ``lvgl`` component, in o align: CENTER text: 'Hello World!' +See :ref:`lvgl-cookbook-navigator` in the Cookbook for an example which demonstrates how to implement a page navigation bar at the bottom of the screen. .. _lvgl-color: @@ -176,6 +178,7 @@ You can use :ref:`fonts configured normally`, the glyphs will be For best results, set ``bpp: 4`` to get the glyphs rendered with proper anti-aliasing. +Check out :ref:`lvgl-cookbook-icontext`, :ref:`lvgl-cookbook-iconstat` and :ref:`lvgl-cookbook-iconbatt` in the Cookbook for examples which demonstrate how to use icons and text with TrueType/OpenType fonts. **Library fonts** @@ -378,6 +381,7 @@ So the precedence happens like this: state based styles override the locally spe Feel free to experiment to discover inheritance and precedence of the styles based on states between the nested widgets. +:ref:`lvgl-cookbook-theme` The Cookbook contains an example which demonstrates how to implement a gradient style for your widgets. .. _lvgl-layouts: @@ -388,6 +392,7 @@ Layouts aim to position widgets automatically, eliminating the need to specify ` The layout configuration options are applied to any parent widget or page, influencing the appearance of the children. The position and size calculated by the layout overwrites the *normal* ``x``, ``y``, ``width``, and ``height`` settings of the children. +Check out :ref:`lvgl-cookbook-flex`, :ref:`lvgl-cookbook-grid` and :ref:`lvgl-cookbook-weather` in the Cookbook for examples which demonstrate how to automate widget positioning, potentially reducing the size of your device's YAML configuration, and saving you from lots of manual calculations. The ``hidden``, ``ignore_layout`` and ``floating`` :ref:`flags ` can be used on widgets to ignore them in layout calculations. @@ -594,7 +599,7 @@ This :ref:`action ` redraws the entire screen, or optionally onl This :ref:`action ` pauses the activity of LVGL, including rendering. -- **show_snow** (*Optional*, boolean): When paused, display random colored pixels across the entire screen in order to minimize screen burn-in, to relief the tension put on each individual pixel. +- **show_snow** (*Optional*, boolean): When paused, display random colored pixels across the entire screen in order to minimize screen burn-in, to relief the tension put on each individual pixel. See :ref:`lvgl-cookbook-antiburn` for an example which demonstrates how to use this. .. code-block:: yaml @@ -801,6 +806,7 @@ The ``on_idle`` :ref:`triggers ` are activated when inactivity time - light.turn_off: display_backlight - lvgl.pause: +See :ref:`lvgl-cookbook-idlescreen` for an example which demonstrates how to implement screen saving with idle settings. See Also -------- @@ -811,6 +817,7 @@ See Also * +- :doc:`LVGL Examples in the Cookbook ` - :doc:`/components/display/index` - :doc:`/components/touchscreen/index` - :doc:`/components/sensor/rotary_encoder` diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 460e6a7597..1909bebcf8 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -83,6 +83,8 @@ To apply styles to the states, you need to specify them one level above, for exa The state itself can be can be changed by interacting with the widget, or through :ref:`actions ` with ``lvgl.widget.update``. +See :ref:`lvgl-cookbook-cover` for a cookbook example which demonstrates how to use styling and properties to show different states of a Home Assistant entity. + .. _lvgl-widget-flags: In addition to visual styling, each widget supports some boolean **flags** to influence the behavior: @@ -114,7 +116,7 @@ In addition to visual styling, each widget supports some boolean **flags** to in .. note:: - LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. + LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. Some examples in the :doc:`Cookbook ` cover how to do that. .. _lvgl-widget-parts: @@ -264,6 +266,8 @@ The animation image is similar to the normal ``image`` widget. The main differen repeat_count: 100 duration: 300ms +See :ref:`lvgl-cookbook-animbatt` in the Cookbook for a more detailed example. + .. _lvgl-widget-arc: ``arc`` @@ -345,7 +349,9 @@ If the ``adv_hittest`` :ref:`flag ` is enabled the arc can be The ``on_value`` trigger is sent as the arc knob is dragged or changed with keys. The event is sent *continuously* while the arc knob is being dragged; this generally has a negative effect on performance. To mitigate this, consider using a :ref:`universal interaction trigger ` like ``on_release``, to get the ``x`` variable once after the interaction has completed. -The ``arc`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. +The ``arc`` can be also integrated as a :doc:`Number ` or :doc:`Sensor ` component. + +See :ref:`lvgl-cookbook-bright` and :ref:`lvgl-cookbook-volume` for examples which demonstrate how to use a slider (or an arc) to control entities in Home Assistant. .. _lvgl-widget-bar: @@ -466,6 +472,8 @@ To have a button with a text label on it, add a child :ref:`lvgl-widget-label` w The ``button`` can be also integrated as a :doc:`Binary Sensor ` or as a :doc:`Switch ` component. +See :ref:`lvgl-cookbook-binent` for an example which demonstrates how to use a checkable button to act on a Home Assistant service. + .. _lvgl-widget-buttonmatrix: ``buttonmatrix`` @@ -596,7 +604,7 @@ The button matrix widget is a lightweight way to display multiple buttons in row .. tip:: - The Button Matrix widget supports the :ref:`key_collector` to collect the button presses as key press sequences for further automations. + The Button Matrix widget supports the :ref:`key_collector` to collect the button presses as key press sequences for further automations. Check out :ref:`lvgl-cookbook-keypad` for an example. .. _lvgl-widget-checkbox: @@ -656,7 +664,7 @@ The checkbox widget is made internally from a *tick box* and a label. When the c .. note:: - In case you configure ``default_font`` in the main section to a custom font, the checkmark will not be shown correctly when the checkbox is in the checked state. + In case you configure ``default_font`` in the main section to a custom font, the checkmark will not be shown correctly when the checkbox is in the checked state. See :ref:`lvgl-cookbook-ckboxmark` for how to easily resolve this. The ``checkbox`` can be also integrated as a :doc:`Switch ` component. @@ -988,6 +996,8 @@ The ``led`` can be also integrated as :doc:`Light ` comp If configured as a light component, ``color`` and ``brightness`` are overridden by the light at startup, according to its ``restore_mode`` setting. +Check out :ref:`lvgl-cookbook-keypad` in the Cookbook for an example which demonstrates how to change the ``led`` styling properties from an automation. + .. _lvgl-widget-line: ``line`` @@ -1139,6 +1149,8 @@ The meter widget can visualize data in very flexible ways. It can use arcs, need id: temperature_needle value: 3 +See :ref:`lvgl-cookbook-gauge`, :ref:`lvgl-cookbook-thermometer` and :ref:`lvgl-cookbook-clock` in the Cookbook for examples which demonstrate how to effectively use this widget. + .. _lvgl-widget-msgbox: ``msgboxes`` @@ -1362,6 +1374,8 @@ Normally, the slider can be adjusted either by dragging the knob, or by clicking The ``slider`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. +See :ref:`lvgl-cookbook-bright` and :ref:`lvgl-cookbook-volume` for examples which demonstrate how to use a slider to control entities in Home Assistant. + .. _lvgl-widget-spinbox: ``spinbox`` @@ -1437,7 +1451,9 @@ The spinbox contains a numeric value (as text) which can be increased or decreas format: "Spinbox value is %f" args: [ x ] -The ``spinbox`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. +The ``spinbox`` can be also integrated as a :doc:`Number ` or :doc:`Sensor ` component. + +See :ref:`lvgl-cookbook-climate` for an example which demonstrates how to implement a thermostat control using the spinbox. .. _lvgl-widget-spinner: @@ -1531,6 +1547,8 @@ The switch looks like a little slider and can be used to turn something on and o The ``switch`` can be also integrated as a :doc:`Switch ` component. +See :ref:`lvgl-cookbook-relay` for an example which demonstrates how to use a switch to act on a local component. + .. _lvgl-widget-tabview: ``tabview`` @@ -1781,6 +1799,7 @@ This powerful :ref:`action ` allows changing/updating any widget id: my_label_id hidden: true +Check out in the Cookbook :ref:`lvgl-cookbook-binent` for an example which demonstrates how to use a template to update the state. .. _lvgl-automation-shorthands: diff --git a/cookbook/images/lvgl_cook_animimg_batt.gif b/cookbook/images/lvgl_cook_animimg_batt.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1ec7806d9f4eba88f68f784037efe8f1383581a GIT binary patch literal 8109 zcmZ?wbhEHblwnX}s9<1F{Lk&@8WQa67~pE8XTZ$J02KPk!Xg5sb%2-wq-;5efg3P_ z0TUAwGcz*_3kxeND?2+o2L}fi7Z(o?4?jP@kdTmwh={njxP*j+q@<*jl$5lzw2X|5 ztgNh@oSeM8yn=#)qN1Xbl9IBrvWkj|s;a7*nwq-0x`u{^rlzKrmX@}*wvLXDuCA`0 zo}RwGzJY;(p`oFXk&&^nv5AR^si~=%nVGq{xrK#=rKP2nm6f%%wT+F9t*xz{ot?eC zy@P{;qobpflasTvvx|$1tE;PCcvmzTGBeM3V-V`F1eQ&V$ub4yE0 zYiny;TU&d3dq+n{XJ=CQh6C&akmMvSpeEEtMD^{*txoXv_)vH&pS+i#C+O_M}ty{l-{e}%2Hg4RwY15|7n>TOS zvSsVmt=qP3+rEAKjvYI8?%cU+*RK8h_n$s}`tIGk@87@w{{8!(KY#uWS@8e=e~xs9 z|C}-&8x|aF<`CA3Ik92k;dTLKuQ?tYl@2mV7)PC1QK)phpH-#liH1>%V~;BDqMjX} z7I}8)vL7q4_#E%sW}2^e=I1BH^HbETFNtJL*6>?oCEE9fqj=@TxqiA{bG^2%y1F`I zBO41S?=gV$9yfy+0~-S)p}dDXSE9%Ob0{Q#0y8HkCnp~tpRlknFgF5o;Aq|(W_fS- z?%jL#?Ag0_@4kKefcfyifddB*9z1mD(BZ>}j~qF2^ytxJ$BrF8e*DCV6DLoeJay_6 zFr%J1bLQ;Xv**s8JAeNCg$oxhUc7ke(xuCnFJHNGgPoF(|_Wb$t7cXACeEIU# zt5>gIzkc)P&D*zc-@SVWEDk<=`0(-L$4{R=eg6FU%a<=-zkdDp?HjO+`0?Y%&!0bk z{rdI$_itc%@%QgvV2J_Bdu$Bi95NCD$XP>lG;54jOJr0_BOq%C1G5Gbm1+%O6#}d{ zfUUaGT4UI^*oIry;9!vCknspea6qm%ghuO)(RyRF-oVzR5**DMqgi7#YhcS7{G&~( z(X26=H8`*~srW|gjnT|8nmMr58@!`gV>D}wW({mvgJ(2rjAo6|tbxcH|3rNgQ&JVm VGfOfQf|H9Gu-4m#b`8oD@{u1n#P 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_cover.png b/cookbook/images/lvgl_cook_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9fe2987167fe988d4d2efe28cfcf0c58a5a55b GIT binary patch literal 4539 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%0D2(KoskIQB==m9F_$;C81@U>R#n-J_Huy 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_font_batt.png b/cookbook/images/lvgl_cook_font_batt.png new file mode 100644 index 0000000000000000000000000000000000000000..6803ee049bae1b86ed99f7393698c631da4950eb GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1SJ3FdmIK*oCO|{#S9F5M?jcysy3fAP;jZI zi(`mKXY!x_|LvK#G74Yyl`);tx}d9g`uVeS?ZnUdp7SxgWV-0eh2Q+|@^A0sJy-gv zL@7fta$C44~A=k!nTEZi|eW$4{&vLWn*LW89hjbZSA!#~$R)^y6gwy2v? o6BUm(*w3BB+vYx_kHML7C#Pj{4*P6zpo1AaUHx3vIVCg!0L2wqhyVZp literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_font_binstat.png b/cookbook/images/lvgl_cook_font_binstat.png new file mode 100644 index 0000000000000000000000000000000000000000..4315ba8cceafce83febc3b99d15b3ed9ef839e9f GIT binary patch literal 2715 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 A(f|Me literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_gauge.png b/cookbook/images/lvgl_cook_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..11379cb9d92fb2804f266c5d22b6591b3c4844df GIT binary patch literal 4154 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 TzWxJsFb+^r(3G!~wG8<$^H^HV literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_pagenav.png b/cookbook/images/lvgl_cook_pagenav.png new file mode 100644 index 0000000000000000000000000000000000000000..db7b3b55f008b75bf4ce25b1dc35119aa73e433c GIT binary patch literal 1312 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 JWt~$(69A@pIDh~E literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_thermometer.png b/cookbook/images/lvgl_cook_thermometer.png new file mode 100644 index 0000000000000000000000000000000000000000..ee38819578cb9e3f9d0f7f34c11d9df3e0998c09 GIT binary patch literal 11532 zcmW++Wmpwm7ah8hlI}*j8|m(ny3$?J-JQavySuwnr8}iNE+CD7f_(S=e$1KY%*=D< z`3_gxO zaG0KEXnAphiZYRcG?BbAk-WtpC⪻Zu*3B`h@RP3He3XW>QkLh}P<8*%EbOmtXmb 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_thermometer_gauge.png b/cookbook/images/lvgl_cook_thermometer_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..6976d767d2e7529d13ab324c3c1f08f833a9107e GIT binary patch literal 5872 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_volume.png b/cookbook/images/lvgl_cook_volume.png new file mode 100644 index 0000000000000000000000000000000000000000..3d42748c97934c4cf05925a6fcfc36f17a9d9aa1 GIT binary patch literal 1264 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 Rq5m+zP?A%VEdd$_{x1_sDER;Y literal 0 HcmV?d00001 diff --git a/cookbook/lvgl.rst b/cookbook/lvgl.rst new file mode 100644 index 0000000000..bd90892926 --- /dev/null +++ b/cookbook/lvgl.rst @@ -0,0 +1,2242 @@ +.. _lvgl-cookbook: + +LVGL: Tips and Tricks +===================== + +.. seo:: + :description: Recipes for common use cases of LVGL Displays with ESPHome + :image: /images/lvgl.png + +Here are a couple recipes for various interesting things you can do with :doc:`/components/lvgl/index` in ESPHome. + +.. note:: + + Many of the examples below call service actions in Home Assistant; however, Home Assistant does not allow such action calls by default. For each ESPHome device which will call actions, you must explicitly enable this setting in Home Assistant. This may be done when the device is initially adopted or by using the `Configure` option in the "devices" list of the ESPHome integration. + +.. note:: + + The examples below assume you've set up LVGL correctly with your display and its input device, and you have the knowledge to set up various components in ESPHome. Some examples use absolute positioning for a screen with dimensions of ``240x320px``; if your display's dimensions differ, you'll need to adjust them in order to obtain the expected results. + +.. _lvgl-cookbook-relay: + +Local light switch +------------------ + +.. figure:: /components/lvgl/images/lvgl_switch.png + :align: left + +The easiest way to integrate an LVGL :ref:`lvgl-widget-switch` widget and a switch or light is with :ref:`automations `: + +.. code-block:: yaml + + light: + - platform: ... + id: local_light + name: 'Local light' + on_state: + - lvgl.widget.update: + id: light_switch + state: + checked: !lambda return id(local_light).current_values.is_on(); + + lvgl: + ... + pages: + - id: main_page + widgets: + - switch: + align: CENTER + id: light_switch + on_click: + light.toggle: local_light + +.. _lvgl-cookbook-binent: + +Remote light button +------------------- + +.. figure:: images/lvgl_cook_remligbut.png + :align: right + +If you'd like to control a remote light which appears as an entity in Home Assistant from a checkable (toggle) :ref:`lvgl-widget-button`, first you need to import the light state into ESPHome, and then control it using a action call: + +.. code-block:: yaml + + binary_sensor: + - platform: homeassistant + id: remote_light + entity_id: light.remote_light + publish_initial_state: true + on_state: + then: + lvgl.widget.update: + id: light_btn + state: + checked: !lambda return x; + + lvgl: + ... + pages: + - id: room_page + widgets: + - button: + id: light_btn + align: CENTER + width: 100 + height: 70 + checkable: true + widgets: + - label: + align: CENTER + text: 'Remote light' + on_click: + - homeassistant.action: + action: light.toggle + data: + entity_id: light.remote_light + +.. _lvgl-cookbook-bright: + +Light brightness slider +----------------------- + +.. figure:: images/lvgl_cook_volume.png + :align: left + +You can use a :ref:`slider ` or an :ref:`arc ` to control the brightness of a dimmable light. + +We can use a sensor to retrieve the current brightness of a light, which is stored in Home Assistant as an attribute of the entity, as an integer value between ``0`` (min) and ``255`` (max). It's convenient to set the slider's ``min_value`` and ``max_value`` accordingly. + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: light_brightness + entity_id: light.your_dimmer + attribute: brightness + on_value: + - lvgl.slider.update: + id: dimmer_slider + value: !lambda return x; + + lvgl: + ... + pages: + - id: room_page + widgets: + - slider: + id: dimmer_slider + x: 20 + y: 50 + width: 30 + height: 220 + pad_all: 8 + min_value: 0 + max_value: 255 + on_release: + - homeassistant.action: + action: light.turn_on + data: + entity_id: light.your_dimmer + brightness: !lambda return int(x); + +Note that Home Assistant expects an integer at the ``brightness`` parameter of the ``light.turn_on`` action call, and since ESPHome uses floats, ``x`` needs to be converted. + +This is applicable to action calls like ``fan.set_percentage`` or ``valve.set_valve_position``, too; the only difference is that ``max_value`` has to be ``100``. + +.. _lvgl-cookbook-volume: + +Media player volume slider +-------------------------- + +.. figure:: images/lvgl_cook_volume.png + :align: right + +Similarly, you can use a :ref:`slider ` or an :ref:`arc ` to control the volume level of a media player, which uses float values. + +With a sensor we retrieve the current volume level of the media player, which is stored in Home Assistant as an attribute of the entity, and is a float value between ``0`` (min) and ``1`` (max). Since LVGL only handles integers, it's convenient to set the slider's possible values to be between ``0`` and ``100``. Thus a conversion is needed back and forth, meaning that when we read the value from Home Assistant we have to multiply it by ``100``, and when we set the volume through the action call, we have to divide it by ``100``: + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: media_player_volume + entity_id: media_player.your_room + attribute: volume_level + on_value: + - lvgl.slider.update: + id: slider_media_player + value: !lambda return (x * 100); + + lvgl: + ... + pages: + - id: mediaplayer_page + widgets: + - slider: + id: slider_media_player + x: 60 + y: 50 + width: 30 + height: 220 + pad_all: 8 + min_value: 0 + max_value: 100 + adv_hittest: true + on_value: + - homeassistant.action: + action: media_player.volume_set + data: + entity_id: media_player.your_room + volume_level: !lambda return (x / 100); + +The ``adv_hittest`` option ensures that accidental touches to the screen won't cause sudden volume changes (more details in the :ref:`slider doc `). + +.. note:: + + Keep in mind that ``on_value`` is triggered *continuously* by the slider while it's being dragged. This generally has a negative effect on performance. For example, you shouldn't use this trigger to set the target temperature of a heat pump via Modbus, or set the position of motorized covers, because it will likely cause malfunctions. To mitigate this, consider using a universal widget trigger like ``on_release`` to get the ``x`` variable once after the interaction has completed. + +.. _lvgl-cookbook-gauge: + +Semicircle gauge +---------------- + +A gauge similar to what Home Assistant shows in the Energy Dashboard can accomplished with :ref:`lvgl-widget-meter` and :ref:`lvgl-widget-label` widgets: + +.. figure:: images/lvgl_cook_gauge.png + :align: center + +The trick here is to have a parent :ref:`lvgl-widget-obj` which contains the other widgets as children. We place a :ref:`lvgl-widget-meter` in the middle, which is made from an indicator ``line`` and two ``arc`` widgets. We use another, smaller :ref:`lvgl-widget-obj` on top of it to hide the indicator's central parts and place some :ref:`lvgl-widget-label` widgets to display numeric information: + +.. code-block:: yaml + + sensor: + - platform: ... + id: values_between_-10_and_10 + on_value: + - lvgl.indicator.update: + id: val_needle + value: !lambda return x; + - lvgl.label.update: + id: val_text + text: + format: "%.0f" + args: [ 'x' ] + lvgl: + ... + pages: + - id: gauge_page + widgets: + - obj: + height: 240 + width: 240 + align: CENTER + bg_color: 0xFFFFFF + border_width: 0 + pad_all: 4 + widgets: + - meter: + height: 100% + width: 100% + border_width: 0 + bg_opa: TRANSP + align: CENTER + scales: + - range_from: -10 + range_to: 10 + angle_range: 180 # sets the total angle to 180 = starts mid left and ends mid right + ticks: + count: 0 + indicators: + - line: + id: val_needle + width: 8 + r_mod: 12 # sets line length by this much difference from the scale default radius + value: -2 + - arc: # first half of the scale background + color: 0xFF3000 + r_mod: 10 # radius difference from the scale default radius + width: 31 + start_value: -10 + end_value: 0 + - arc: # second half of the scale background + color: 0x00FF00 + r_mod: 10 + width: 31 + start_value: 0 + end_value: 10 + - obj: # to cover the middle part of meter indicator line + height: 146 + width: 146 + radius: 73 + align: CENTER + border_width: 0 + bg_color: 0xFFFFFF + pad_all: 0 + - label: # gauge numeric indicator + id: val_text + text_font: montserrat_48 + align: CENTER + y: -5 + text: "0" + - label: # lower range indicator + text_font: montserrat_18 + align: CENTER + y: 8 + x: -90 + text: "-10" + - label: # higher range indicator + text_font: montserrat_18 + align: CENTER + y: 8 + x: 90 + text: "+10" + +.. tip:: + + The ``obj`` used to hide the middle part of the meter indicator line has ``radius`` equal to half of the ``width`` and ``height``. This results in a circle - which is actually a square with extra large rounded corners. + +.. _lvgl-cookbook-thermometer: + +Thermometer +----------- + +A thermometer with a precise gauge also made from a :ref:`lvgl-widget-meter` widget and a numeric display using :ref:`lvgl-widget-label`: + +.. figure:: images/lvgl_cook_thermometer.png + :align: center + +Whenever a new value comes from the sensor, we update the needle indicator as well as the text in the :ref:`lvgl-widget-label`. Since LVGL only handles integer values on the :ref:`lvgl-widget-meter` scale, but the sensor's value is a ``float``, we use the same approach as in the examples above; we multiply the sensor's values by ``10`` and feed this value to the :ref:`lvgl-widget-meter`. It's essentially two scales on top of each other: one to set the needle based on the multiplied value and the other to show sensor's original value in the :ref:`lvgl-widget-label`. + +.. code-block:: yaml + + sensor: + - platform: ... + id: outdoor_temperature + on_value: + - lvgl.indicator.update: + id: temperature_needle + value: !lambda return x * 10; + - lvgl.label.update: + id: temperature_text + text: + format: "%.1f°C" + args: [ 'x' ] + lvgl: + ... + pages: + - id: meter_page + widgets: + - meter: + align: CENTER + height: 180 + width: 180 + scales: + - range_from: -100 # scale for the needle value + range_to: 400 + angle_range: 240 + rotation: 150 + indicators: + - line: + id: temperature_needle + width: 2 + color: 0xFF0000 + r_mod: -4 + - tick_style: + start_value: -10 + end_value: 40 + color_start: 0x0000bd + color_end: 0xbd0000 + width: 1 + - range_from: -10 # scale for the value labels + range_to: 40 + angle_range: 240 + rotation: 150 + ticks: + width: 1 + count: 51 + length: 10 + color: 0x000000 + major: + stride: 5 + width: 2 + length: 10 + color: 0x404040 + label_gap: 10 + widgets: + - label: + id: temperature_text + text: "-.-°C" + align: CENTER + y: 45 + - label: + text: "Outdoor" + align: CENTER + y: 65 + +And here's the same sensor configuration, but instead with a semicircle gauge with a gradient background drawn by a multitude of ticks: + +.. figure:: images/lvgl_cook_thermometer_gauge.png + :align: center + +If you change the size of the widget, to obtain a uniform gradient, be sure to increase or decrease the ticks count accordingly. + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: meter_page + widgets: + - obj: + height: 240 + width: 240 + align: CENTER + y: -18 + bg_color: 0xFFFFFF + border_width: 0 + pad_all: 14 + widgets: + - meter: + height: 100% + width: 100% + border_width: 0 + align: CENTER + bg_opa: TRANSP + scales: + - range_from: -15 + range_to: 35 + angle_range: 180 + ticks: + count: 70 + width: 1 + length: 31 + indicators: + - tick_style: + start_value: -15 + end_value: 35 + color_start: 0x3399ff + color_end: 0xffcc66 + - range_from: -150 + range_to: 350 + angle_range: 180 + ticks: + count: 0 + indicators: + - line: + id: temperature_needle + width: 8 + r_mod: 2 + value: -150 + - obj: # to cover the middle part of meter indicator line + height: 123 + width: 123 + radius: 73 + align: CENTER + border_width: 0 + pad_all: 0 + bg_color: 0xFFFFFF + - label: + id: temperature_text + text: "--.-°C" + align: CENTER + y: -26 + - label: + text: "Outdoor" + align: CENTER + y: -6 + +.. tip:: + + You can omit the ``obj`` used to hide the middle part of meter indicator line by using a bitmap ``image`` indicator as needle, were only the part hanging above the ticks scale is visible, the rest is transparent. + +.. _lvgl-cookbook-climate: + +Climate control +--------------- + +:ref:`lvgl-widget-spinbox` is the ideal widget to control a thermostat: + +.. figure:: images/lvgl_cook_climate.png + :align: center + +First we import from Home Assistant the current target temperature of the climate component, and we update the value of the spinbox with it whenever it changes. We use two buttons labeled with minus and plus to control the spinbox, and whenever we change its value, we just simply call a Home Assistant action to set the new target temperature of the climate. + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: room_thermostat + entity_id: climate.room_thermostat + attribute: temperature + on_value: + - lvgl.spinbox.update: + id: spinbox_id + value: !lambda return x; + + lvgl: + ... + pages: + - id: thermostat_control + widgets: + - obj: + align: BOTTOM_MID + y: -50 + layout: + type: FLEX + flex_flow: ROW + flex_align_cross: CENTER + width: SIZE_CONTENT + height: SIZE_CONTENT + widgets: + - button: + id: spin_down + on_click: + - lvgl.spinbox.decrement: spinbox_id + widgets: + - label: + text: "-" + - spinbox: + id: spinbox_id + align: CENTER + text_align: CENTER + width: 50 + range_from: 15 + range_to: 35 + step: 0.5 + rollover: false + digits: 3 + decimal_places: 1 + on_value: + then: + - homeassistant.action: + action: climate.set_temperature + data: + temperature: !lambda return x; + entity_id: climate.room_thermostat + - button: + id: spin_up + on_click: + - lvgl.spinbox.increment: spinbox_id + widgets: + - label: + text: "+" + +.. _lvgl-cookbook-cover: + +Cover status and control +------------------------ + +To make a nice user interface for controlling Home Assistant covers you could use 3 buttons, which also display the state. + +.. figure:: images/lvgl_cook_cover.png + :align: center + +Just as in the previous examples, we need to get the state of the cover first. We'll use a numeric sensor to retrieve the current position of the cover and a text sensor to retrieve its current movement. We are particularly interested in the moving (*opening* and *closing*) states, because during these we'd like to change the label in the middle to show *STOP*. Otherwise, this button label will show the actual percentage of the opening. Additionally, we'll change the opacity of the labels on the *UP* and *DOWN* buttons depending on if the cover is fully open or closed. + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: cover_myroom_pos + entity_id: cover.myroom + attribute: current_position + on_value: + - if: + condition: + lambda: |- + return x == 100; + then: + - lvgl.widget.update: + id: cov_up_myroom + text_opa: 60% + else: + - lvgl.widget.update: + id: cov_up_myroom + text_opa: 100% + - if: + condition: + lambda: |- + return x == 0; + then: + - lvgl.widget.update: + id: cov_down_myroom + text_opa: 60% + else: + - lvgl.widget.update: + id: cov_down_myroom + text_opa: 100% + + text_sensor: + - platform: homeassistant + id: cover_myroom_state + entity_id: cover.myroom + on_value: + - if: + condition: + lambda: |- + return ((0 == x.compare(std::string{"opening"})) or (0 == x.compare(std::string{"closing"}))); + then: + - lvgl.label.update: + id: cov_stop_myroom + text: "STOP" + else: + - lvgl.label.update: + id: cov_stop_myroom + text: + format: "%.0f%%" + args: [ 'id(cover_myroom_pos).get_state()' ] + + lvgl: + ... + pages: + - id: room_page + widgets: + - label: + x: 10 + y: 6 + width: 70 + text: "My room" + text_align: CENTER + - button: + x: 10 + y: 30 + width: 70 + height: 68 + widgets: + - label: + id: cov_up_myroom + align: CENTER + text: "\uF077" + on_press: + then: + - homeassistant.action: + action: cover.open + data: + entity_id: cover.myroom + - button: + x: 10 + y: 103 + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_myroom + align: CENTER + text: STOP + on_press: + then: + - homeassistant.action: + action: cover.stop + data: + entity_id: cover.myroom + - button: + x: 10 + y: 178 + width: 70 + height: 68 + widgets: + - label: + id: cov_down_myroom + align: CENTER + text: "\uF078" + on_press: + then: + - homeassistant.action: + action: cover.close + data: + entity_id: cover.myroom + +.. _lvgl-cookbook-theme: + +Theme and style definitions +--------------------------- + +Since LVGL uses inheritance to apply styles across the widgets, it's possible to apply them at the top level, and only make modifications on demand, if necessary. + +.. figure:: images/lvgl_cook_gradient_styles.png + :align: center + +In this example we prepare a set of gradient styles in the *theme*, and make some modifications in a *style_definition* which can be applied in a batch to the desired widgets. Theme is applied automatically, and can be overridden manually with style definitions (read further to see how). + +.. code-block:: yaml + + lvgl: + ... + theme: + label: + text_font: my_font # set all your labels to use your custom defined font + button: + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_color: 0x0077b3 + border_width: 1 + text_color: 0xFFFFFF + pressed: # set some button colors to be different in pressed state + bg_color: 0x006699 + bg_grad_color: 0x00334d + checked: # set some button colors to be different in checked state + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + text_color: 0xfff300 + buttonmatrix: + bg_opa: TRANSP + border_color: 0x0077b3 + border_width: 0 + text_color: 0xFFFFFF + pad_all: 0 + items: # set all your buttonmatrix buttons to use your custom defined styles and font + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_color: 0x0077b3 + border_width: 1 + text_color: 0xFFFFFF + text_font: my_font + pressed: + bg_color: 0x006699 + bg_grad_color: 0x00334d + checked: + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + text_color: 0x005580 + switch: + bg_color: 0xC0C0C0 + bg_grad_color: 0xb0b0b0 + bg_grad_dir: VER + bg_opa: COVER + checked: + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + bg_grad_dir: VER + bg_opa: COVER + knob: + bg_color: 0xFFFFFF + bg_grad_color: 0xC0C0C0 + bg_grad_dir: VER + bg_opa: COVER + slider: + border_width: 1 + border_opa: 15% + bg_color: 0xcccaca + bg_opa: 15% + indicator: + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + bg_grad_dir: VER + bg_opa: COVER + knob: + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_color: 0x0077b3 + border_width: 1 + text_color: 0xFFFFFF + style_definitions: + - id: header_footer + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_opa: TRANSP + radius: 0 + pad_all: 0 + pad_row: 0 + pad_column: 0 + border_color: 0x0077b3 + text_color: 0xFFFFFF + width: 100% + height: 30 + +Note that style definitions can contain common properties too, like positioning and sizing. + +.. _lvgl-cookbook-navigator: + +Page navigation footer +---------------------- + +If using multiple pages, a navigation bar can be useful at the bottom of the screen: + +.. figure:: images/lvgl_cook_pagenav.png + :align: center + +To save from repeating the same widgets on each page, there's the *top_layer* which is the *Always on Top* transparent page above all the pages. Everything you put on this page will be on top of all the others. + +For the navigation bar we can use a :ref:`lvgl-widget-buttonmatrix`. Note how the *header_footer* style definition is being applied to the widget and its children objects, and how a few more styles are configured manually at the main widget: + +.. code-block:: yaml + + lvgl: + ... + top_layer: + widgets: + - buttonmatrix: + align: bottom_mid + styles: header_footer + pad_all: 0 + outline_width: 0 + id: top_layer + items: + styles: header_footer + rows: + - buttons: + - id: page_prev + text: "\uF053" + on_press: + then: + lvgl.page.previous: + - id: page_home + text: "\uF015" + on_press: + then: + lvgl.page.show: main_page + - id: page_next + text: "\uF054" + on_press: + then: + lvgl.page.next: + +For this example to appear correctly, use the theme and style options from :ref:`above ` and LVGL's own library :ref:`fonts `. + +.. _lvgl-cookbook-statico: + +API connection status icon +-------------------------- + +The top layer is useful to show status icons visible on all pages: + +.. figure:: images/lvgl_cook_statico.png + :align: center + +In the example below, we only show the icon when the connection with Home Assistant is established: + +.. code-block:: yaml + + api: + on_client_connected: + - if: + condition: + lambda: 'return (0 == client_info.find("Home Assistant "));' + then: + - lvgl.widget.show: lbl_hastatus + on_client_disconnected: + - if: + condition: + lambda: 'return (0 == client_info.find("Home Assistant "));' + then: + - lvgl.widget.hide: lbl_hastatus + + lvgl: + ... + top_layer: + widgets: + - label: + text: "\uF1EB" + id: lbl_hastatus + hidden: true + align: top_right + x: -2 + y: 7 + text_align: right + text_color: 0xFFFFFF + +Of note: + +- The widget starts *hidden* at boot and it's only shown when triggered by connection with the API. +- Alignment of the widget: since the *align* option is given, the *x* and *y* options are used to position the widget relative to the calculated position. + +.. _lvgl-cookbook-titlebar: + +Title bar for each page +----------------------- + +Each page can have its own title bar: + +.. figure:: images/lvgl_cook_titlebar.png + :align: center + +To put a title bar behind the status icon, we need to add it to each page, also containing the label with a unique title: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: main_page + widgets: + - obj: + align: TOP_MID + styles: header_footer + widgets: + - label: + text: "ESPHome LVGL Display" + align: CENTER + text_align: CENTER + text_color: 0xFFFFFF + ... + - id: second_page + widgets: + - obj: + align: TOP_MID + styles: header_footer + widgets: + - label: + text: "A second page" + align: CENTER + text_align: CENTER + text_color: 0xFFFFFF + ... + +For this example to work, use the theme and style options from :ref:`above `. + +.. _lvgl-cookbook-flex: + +Flex layout positioning +----------------------- + +:ref:`lvgl-layouts` aim to position widgets automatically, eliminating the need to specify coordinates to position each widget. This is a great way to simplify your configuration containing many widgets as it allows you to even omit alignment options. + +.. figure:: images/lvgl_cook_flex_layout.png + :align: center + +This example illustrates a control panel for three covers, made up of labels and discrete buttons. Although a button matrix could also be suitable for this, you might still prefer fully-featured individual buttons, as they offer a wider range of customization possibilities as seen in the :ref:`lvgl-cookbook-cover` example. Here we use the **Flex** layout: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: room_page + widgets: + - obj: # a properly placed coontainer object for all these controls + align: CENTER + width: 240 + height: 256 + x: 4 + y: 4 + pad_all: 3 + pad_row: 6 + pad_column: 8 + bg_opa: TRANSP + border_opa: TRANSP + layout: # enable the FLEX layout for the children widgets + type: FLEX + flex_flow: COLUMN_WRAP # the order of the widgets starts top left + flex_align_cross: CENTER # they sould be centered + widgets: + - label: + text: "East" + - button: + id: but_cov_up_east + width: 70 # choose the button dimensions so + height: 68 # they fill the columns nincely as they flow + widgets: + - label: + id: cov_up_east + align: CENTER + text: "\U000F005D" # mdi:arrow-up + - button: + id: but_cov_stop_east + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_east + align: CENTER + text: "\U000F04DB" # mdi:stop + - button: + id: but_cov_down_east + width: 70 + height: 68 + widgets: + - label: + id: cov_down_east + align: CENTER + text: "\U000F0045" # mdi:arrow-down + + - label: + text: "South" + - button: + id: but_cov_up_south + width: 70 + height: 68 + widgets: + - label: + id: cov_up_south + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_south + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_south + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_south + width: 70 + height: 68 + widgets: + - label: + id: cov_down_south + align: CENTER + text: "\U000F0045" + + - label: + text: "West" + - button: + id: but_cov_up_west + width: 70 + height: 68 + widgets: + - label: + id: cov_up_west + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_west + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_west + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_west + width: 70 + height: 68 + widgets: + - label: + id: cov_down_west + align: CENTER + text: "\U000F0045" + +This saved you from a considerable amount of manual calculation of widget positioning which would otherwise be required to place them manually with ``x`` and ``y``! You only need to determine a common width and height for your widgets to distribute them on the page as you prefer. (:ref:`lvgl-cookbook-icontext` below shows how to use custom icons.) + +.. _lvgl-cookbook-grid: + +Grid layout positioning +----------------------- + +But there's even more! With the **Grid** layout, you don't need to specify width and height for your widgets. All you have to do is divide the space into rows and columns; the widgets can be automatically be sized to fit into cells defined by these rows and columns. The same task from above, in a fully automated grid, looks like this: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: room_page + widgets: + - obj: # a properly placed coontainer object for all these controls + align: CENTER + width: 240 + height: 256 + pad_all: 6 + pad_row: 6 + pad_column: 8 + bg_opa: TRANSP + border_opa: TRANSP + layout: # enable the GRID layout for the children widgets + type: GRID # split the rows and the columns proportionally + grid_columns: [FR(1), FR(1), FR(1)] # equal + grid_rows: [FR(10), FR(30), FR(30), FR(30)] # like percents + widgets: + - label: + text: "East" + grid_cell_column_pos: 0 # place the widget in + grid_cell_row_pos: 0 # the corresponding cell + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + - button: + id: but_cov_up_east + grid_cell_column_pos: 0 + grid_cell_row_pos: 1 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_up_east + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_east + grid_cell_column_pos: 0 + grid_cell_row_pos: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_stop_east + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_east + grid_cell_column_pos: 0 + grid_cell_row_pos: 3 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_down_east + align: CENTER + text: "\U000F0045" + + - label: + text: "South" + grid_cell_column_pos: 1 + grid_cell_row_pos: 0 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + - button: + id: but_cov_up_south + grid_cell_column_pos: 1 + grid_cell_row_pos: 1 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_up_south + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_south + grid_cell_column_pos: 1 + grid_cell_row_pos: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_stop_south + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_south + grid_cell_column_pos: 1 + grid_cell_row_pos: 3 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_down_south + align: CENTER + text: "\U000F0045" + + - label: + text: "West" + grid_cell_column_pos: 2 + grid_cell_row_pos: 0 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + - button: + id: but_cov_up_west + grid_cell_column_pos: 2 + grid_cell_row_pos: 1 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_up_west + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_west + grid_cell_column_pos: 2 + grid_cell_row_pos: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_stop_west + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_west + grid_cell_column_pos: 2 + grid_cell_row_pos: 3 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_down_west + align: CENTER + text: "\U000F0045" + +The big advantage here is that whenever you need to add, for example, an extra column of buttons for a new cover, you just simply append it to the ``grid_columns`` variable, and add the corresponding widgets as above. With ``STRETCH`` their sizes and positions will automatically be calculated to fill in the cells, while the parent's ``pad_all``, ``pad_row`` and ``pad_column`` can help with spacing between them. See :ref:`lvgl-cookbook-weather` further down this page for another example relying on **Grid**. + +.. _lvgl-cookbook-btlg: + +ESPHome boot screen +------------------- + +To display a boot image with a spinner animation which disappears automatically after a few moments or on touch of the screen you can use the *top layer*. The trick is to put a base :ref:`lvgl-widget-obj` full screen and child :ref:`lvgl-widget-image` widget in its middle as the last item of the widgets list, so they draw on top of all the others. To make it automatically disappear afer boot, you use ESPHome's ``on_boot`` trigger: + +.. code-block:: yaml + + esphome: + ... + on_boot: + - delay: 5s + - lvgl.widget.hide: boot_screen + + image: + - file: https://esphome.io/_static/favicon-512x512.png + id: boot_logo + resize: 200x200 + type: RGB565 + use_transparency: true + + lvgl: + ... + top_layer: + widgets: + ... # make sure it's the last one in this list: + - obj: + id: boot_screen + x: 0 + y: 0 + width: 100% + height: 100% + bg_color: 0xffffff + bg_opa: COVER + radius: 0 + pad_all: 0 + border_width: 0 + widgets: + - image: + align: CENTER + src: boot_logo + y: -40 + - spinner: + align: CENTER + y: 95 + height: 50 + width: 50 + spin_time: 1s + arc_length: 60deg + arc_width: 8 + indicator: + arc_color: 0x18bcf2 + arc_width: 8 + on_press: + - lvgl.widget.hide: boot_screen + +.. _lvgl-cookbook-icontext: + +MDI icons in text +----------------- + +ESPHome's :ref:`font renderer ` allows you to use any OpenType/TrueType font file for your text. This is very flexible because you can prepare various sets of fonts at different sizes each with a different number of glyphs; this is important as it may help to conserve flash memory space. + +One example is when you'd like some MDI icons to be used in line with the text (similar to how LVGL's internal fonts and symbols coexist). You can use a font of your choice; choose the symbols/icons from MDI you want and mix them in a single sized set. + +.. figure:: images/lvgl_cook_font_roboto_mdi.png + :align: center + +In the example below, we use the default set of glyphs from RobotoCondensed-Regular and append some extra symbols to it from MDI. Then we display these inline with the text by escaping their codepoints: + +.. code-block:: yaml + + font: + - file: "fonts/RobotoCondensed-Regular.ttf" + id: roboto_icons_42 + size: 42 + bpp: 4 + extras: + - file: "fonts/materialdesignicons-webfont.ttf" + glyphs: [ + "\U000F02D1", # mdi-heart + "\U000F05D4", # mdi-airplane-landing + ] + + lvgl: + ... + pages: + - id: main_page + widgets: + - label: + text: "Just\U000f05d4here. Already\U000F02D1this." + align: CENTER + text_align: CENTER + text_font: roboto_icons_42 + +.. tip:: + + Follow these steps to choose your MDI icons: + + - To lookup your icons, use the `Pictogrammers `_ site. Click on the desired icon and note its codepoint (it's the hexadecimal number near the download options). + - To get the TrueType font with all the icons in it, head on to the `Pictogrammers GitHub repository `_ and from a recent version folder, download the ``materialdesignicons-webfont.ttf`` file and place it in your ESPHome config directory under a folder named ``fonts`` (to match the example above). + - To use the desired icon, prepend the copied codepoint with ``\U000``. The Unicode character escape sequence has to start with capital ``\U`` and have exactly 8 hexadecimal digits. + - To translate the escape sequence into the real glyph, make sure you enclose your strings in double quotes. + +.. _lvgl-cookbook-ckboxmark: + +Restore checkbox mark +--------------------- + +If you configure a custom font as the ``default_font`` used by LVGL and this font does not contain the `FontAwesome `__ symbols, you may observe that some widgets won't display correctly; specifically :ref:`lvgl-widget-checkbox` won't show the checkmark when it's checked. + +To work around this issue, simply import only the checkmark symbol in the desired size and apply it through :ref:`lvgl-cookbook-theme` to all the checkboxes in the configuration: + +.. code-block:: yaml + + font: + - file: 'fonts/FontAwesome5-Solid+Brands+Regular.woff' + id: fontawesome_checkmark + size: 18 + bpp: 4 + glyphs: [ + "\uF00C", # ckeckmark, for checkbox + ] + + lvgl: + ... + theme: + checkbox: + indicator: + checked: + text_font: fontawesome_checkmark + +You could of course simply apply one of the built-in ``montserrat_`` packs, but that would not be beneficial on the binary size - it would uselessly include the entire set of glyphs in the flash. + +.. _lvgl-cookbook-iconstat: + +Toggle state icon button +------------------------ + +.. figure:: images/lvgl_cook_font_binstat.png + :align: left + +A common use case for icons is a status display. For example, a checkable (toggle) button will display different icons based on the status of a light or switch. To put an icon on a button you use a :ref:`lvgl-widget-label` widget as the child of the :ref:`lvgl-widget-button`. The coloring can already be different thanks to the :ref:`lvgl-cookbook-theme` where you can set a different color for the ``checked`` state. Additionally, by using a ``text_sensor`` to import the state from Home Assistant, we can not only track the ``on`` state, but also the ``unavailable`` or ``unknown`` states to apply *disabled styles* for these cases. + +If we take our previous :ref:`lvgl-cookbook-binent` example, we can modify it like this: + +.. code-block:: yaml + + font: + - file: "custom/materialdesignicons-webfont.ttf" + id: mdi_42 + size: 42 + bpp: 4 + glyphs: [ + "\U000F0335", # mdi-lightbulb + "\U000F0336", # mdi-lightbulb-outline + ] + + text_sensor: + - platform: homeassistant + id: ts_remote_light + entity_id: light.remote_light + on_value: + then: + - lvgl.widget.update: + id: btn_lightbulb + state: + checked: !lambda return (0 == x.compare(std::string{"on"})); + disabled: !lambda return ((0 == x.compare(std::string{"unavailable"})) or (0 == x.compare(std::string{"unknown"}))); + - lvgl.label.update: + id: lbl_lightbulb + text: !lambda |- + static char buf[10]; + std::string icon; + if (0 == x.compare(std::string{"on"})) { + icon = "\U000F0335"; + } else { + icon = "\U000F0336"; + } + snprintf(buf, sizeof(buf), "%s", icon.c_str()); + return buf; + + lvgl: + ... + pages: + - id: room_page + widgets: + - button: + x: 110 + y: 40 + width: 90 + height: 50 + checkable: true + id: btn_lightbulb + widgets: + - label: + id: lbl_lightbulb + align: CENTER + text_font: mdi_42 + text: "\U000F0336" # mdi-lightbulb-outline + on_short_click: + - homeassistant.action: + action: light.toggle + data: + entity_id: light.remote_light + +.. _lvgl-cookbook-iconbatt: + +Battery status icon +------------------- + +.. figure:: images/lvgl_cook_font_batt.png + :align: left + +Another example for using MDI icons is to display battery percentage in 10 steps. We need to have a font containing the glyphs corresponding to the different battery percentage levels, and we need a sensor to import the battery status from Home Assistant into a numeric value. We use a :ref:`lambda ` to return the codepoint of the corresponding glyph based on the sensor value: + +.. code-block:: yaml + + font: + - file: "fonts/materialdesignicons-webfont.ttf" + id: battery_icons_20 + size: 20 + bpp: 4 + glyphs: [ + "\U000F007A", # mdi-battery-10 + "\U000F007B", # mdi-battery-20 + "\U000F007C", # mdi-battery-30 + "\U000F007D", # mdi-battery-40 + "\U000F007E", # mdi-battery-50 + "\U000F007F", # mdi-battery-60 + "\U000F0080", # mdi-battery-70 + "\U000F0081", # mdi-battery-80 + "\U000F0082", # mdi-battery-90 + "\U000F0079", # mdi-battery (full) + "\U000F008E", # mdi-battery-outline + "\U000F0091", # mdi-battery-unknown + ] + + sensor: + - platform: homeassistant + id: sns_battery_percentage + entity_id: sensor.device_battery + on_value: + - lvgl.label.update: + id: lbl_battery_status + text: !lambda |- + static char buf[10]; + std::string icon; + if (x == 100.0) { + icon = "\U000F0079"; // mdi-battery (full) + } else if (x > 90) { + icon = "\U000F0082"; // mdi-battery-90 + } else if (x > 80) { + icon = "\U000F0081"; // mdi-battery-80 + } else if (x > 70) { + icon = "\U000F0080"; // mdi-battery-70 + } else if (x > 60) { + icon = "\U000F007F"; // mdi-battery-60 + } else if (x > 50) { + icon = "\U000F007E"; // mdi-battery-50 + } else if (x > 40) { + icon = "\U000F007D"; // mdi-battery-40 + } else if (x > 30) { + icon = "\U000F007C"; // mdi-battery-30 + } else if (x > 20) { + icon = "\U000F007B"; // mdi-battery-20 + } else if (x > 10) { + icon = "\U000F007A"; // mdi-battery-10 + } else if (x > 0) { + icon = "\U000F008E"; // mdi-battery-outline + } else { + icon = "\U000F0091"; // mdi-battery-unknown + } + snprintf(buf, sizeof(buf), "%s", icon.c_str()); + return buf; + + lvgl: + ... + pages: + - id: battery_page + widgets: + - label: + id: lbl_battery_status + align: TOP_RIGHT + y: 40 + x: -10 + text_font: battery_icons_20 + text: "\U000F0091" # start with mdi-battery-unknown + +.. _lvgl-cookbook-animbatt: + +Battery charging animation +-------------------------- + +.. figure:: images/lvgl_cook_animimg_batt.gif + :align: left + +To have an animation illustrating a battery charging, you can use :ref:`lvgl-widget-animimg` with a set of :ref:`images rendered from MDI ` showing battery levels: + +.. code-block:: yaml + + image: + - file: mdi:battery-10 + id: batt_10 + resize: 20x20 + - file: mdi:battery-20 + id: batt_20 + resize: 20x20 + - file: mdi:battery-30 + id: batt_30 + resize: 20x20 + - file: mdi:battery-40 + id: batt_40 + resize: 20x20 + - file: mdi:battery-50 + id: batt_50 + resize: 20x20 + - file: mdi:battery-60 + id: batt_60 + resize: 20x20 + - file: mdi:battery-70 + id: batt_70 + resize: 20x20 + - file: mdi:battery-80 + id: batt_80 + resize: 20x20 + - file: mdi:battery-90 + id: batt_90 + resize: 20x20 + - file: mdi:battery + id: batt_full + resize: 20x20 + - file: mdi:battery-outline + id: batt_empty + resize: 20x20 + + lvgl: + ... + pages: + - id: battery_page + widgets: + - animimg: + align: TOP_RIGHT + y: 41 + x: -10 + id: ani_battery_charging + src: [ + batt_empty, + batt_10, + batt_20, + batt_30, + batt_40, + batt_50, + batt_60, + batt_70, + batt_80, + batt_90, + batt_full + ] + duration: 2200ms + +.. tip:: + + You can use both battery examples above placed on top of each other, and switch their ``hidden`` flag depending if the charger is connected or not: + + .. code-block:: yaml + + binary_sensor: + - platform: ... + id: charger_connected + on_press: + then: + - lvgl.widget.show: ani_battery_charging + - lvgl.widget.hide: lbl_battery_status + on_release: + then: + - lvgl.widget.show: lbl_battery_status + - lvgl.widget.hide: ani_battery_charging + + Use ``x``, ``y``, ``align`` widget properties for precise positioning. + +.. _lvgl-cookbook-clock: + +An analog clock +--------------- + +Using the :ref:`lvgl-widget-meter` and :ref:`lvgl-widget-label` widgets, we can create an analog clock which shows the date too. + +.. figure:: images/lvgl_cook_clock.png + :align: center + +The :ref:`lvgl-widget-meter` has three scales: one for minutes ticks and hand, ranged between ``0`` and ``60``; one for the hour ticks and the labels as majors, ranged between ``1`` and ``12``; and a higher resolution scale for the hour hand, ranged between ``0`` and ``720``, to be able to naturally position the hand in between the hours. The second scale doesn't have an indicator, while the third scale doesn't have ticks nor labels. + +The script runs at the beginning of every minute to update the line positions for each hand as well as the respective text. + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: clock_page + widgets: + - obj: # clock container + height: SIZE_CONTENT + width: 240 + align: CENTER + pad_all: 0 + border_width: 0 + bg_color: 0xFFFFFF + widgets: + - meter: # clock face + height: 220 + width: 220 + align: CENTER + bg_opa: TRANSP + border_width: 0 + text_color: 0x000000 + scales: + - range_from: 0 # minutes scale + range_to: 60 + angle_range: 360 + rotation: 270 + ticks: + width: 1 + count: 61 + length: 10 + color: 0x000000 + indicators: + - line: + id: minute_hand + width: 3 + color: 0xa6a6a6 + r_mod: -4 + value: 0 + - range_from: 1 # hours scale for labels + range_to: 12 + angle_range: 330 + rotation: 300 + ticks: + width: 1 + count: 12 + length: 1 + major: + stride: 1 + width: 4 + length: 10 + color: 0xC0C0C0 + label_gap: 12 + - range_from: 0 # hi-res hours scale for hand + range_to: 720 + angle_range: 360 + rotation: 270 + ticks: + count: 0 + indicators: + - line: + id: hour_hand + width: 5 + color: 0xa6a6a6 + r_mod: -30 + value: 0 + - label: + styles: date_style + id: day_label + y: -30 + - label: + id: date_label + styles: date_style + y: 30 + + time: + - platform: homeassistant + id: time_comp + on_time_sync: + - script.execute: time_update + on_time: + - minutes: '*' + seconds: 0 + then: + - script.execute: time_update + + script: + - id: time_update + then: + - lvgl.indicator.update: + id: minute_hand + value: !lambda |- + return id(time_comp).now().minute; + - lvgl.indicator.update: + id: hour_hand + value: !lambda |- + auto now = id(time_comp).now(); + return std::fmod(now.hour, 12) * 60 + now.minute; + - lvgl.label.update: + id: date_label + text: !lambda |- + static const char * const mon_names[] = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"}; + static char date_buf[8]; + auto now = id(time_comp).now(); + snprintf(date_buf, sizeof(date_buf), "%s %2d", mon_names[now.month-1], now.day_of_month); + return date_buf; + - lvgl.label.update: + id: day_label + text: !lambda |- + static const char * const day_names[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; + return day_names[id(time_comp).now().day_of_week - 1]; + +.. _lvgl-cookbook-keypad: + +A numeric input keypad +---------------------- + +The :ref:`lvgl-widget-buttonmatrix` widget can work together with the :ref:`key_collector` to collect the button presses as key press sequences. It sends the ``text`` of the buttons (or ``key_code`` where configured) to the key collector. + +.. figure:: images/lvgl_cook_keypad.png + :align: center + +If you key in the correct sequence, the :ref:`lvgl-widget-led` widget will change color accordingly: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: keypad_page + widgets: + - led: + id: lvgl_led + x: 30 + y: 47 + color: 0xFF0000 + brightness: 70% + - obj: + width: 140 + height: 25 + align_to: + id: lvgl_led + align: OUT_RIGHT_MID + x: 17 + border_width: 1 + border_color: 0 + border_opa: 50% + pad_all: 0 + bg_opa: 80% + bg_color: 0xFFFFFF + shadow_color: 0 + shadow_opa: 50% + shadow_width: 10 + shadow_spread: 3 + radius: 5 + widgets: + - label: + id: lvgl_label + align: CENTER + text: "Enter code and \uF00C" + text_align: CENTER + - buttonmatrix: + id: lvgl_keypad + x: 20 + y: 85 + width: 200 + height: 190 + items: + pressed: + bg_color: 0xFFFF00 + rows: + - buttons: + - text: 1 + control: + no_repeat: true + - text: 2 + control: + no_repeat: true + - text: 3 + control: + no_repeat: true + - buttons: + - text: 4 + control: + no_repeat: true + - text: 5 + control: + no_repeat: true + - text: 6 + control: + no_repeat: true + - buttons: + - text: 7 + control: + no_repeat: true + - text: 8 + control: + no_repeat: true + - text: 9 + control: + no_repeat: true + - buttons: + - text: "\uF55A" + key_code: "*" + control: + no_repeat: true + - text: 0 + control: + no_repeat: true + - text: "\uF00C" + key_code: "#" + control: + no_repeat: true + + key_collector: + - source_id: lvgl_keypad + min_length: 4 + max_length: 4 + end_keys: "#" + end_key_required: true + back_keys: "*" + allowed_keys: "0123456789*#" + timeout: 5s + on_progress: + - if: + condition: + lambda: return (0 != x.compare(std::string{""})); + then: + - lvgl.label.update: + id: lvgl_label + text: !lambda 'return x.c_str();' + else: + - lvgl.label.update: + id: lvgl_label + text: "Enter code and \uF00C" + on_result: + - if: + condition: + lambda: return (0 == x.compare(std::string{"1234"})); + then: + - lvgl.led.update: + id: lvgl_led + color: 0x00FF00 + else: + - lvgl.led.update: + id: lvgl_led + color: 0xFF0000 + +Of note: + +- A base object ``obj`` is used as a parent for the label; this allows proper centering of the label as well as emphasizing it with shadows independently of the label's dimensions. +- ``align_to`` is used to align the label to the ``led`` vertically. +- Changing the background color of the buttons in ``pressed`` state. +- Use of the ``key_code`` configuration to send a different character to ``key_collector`` instead of the displayed symbol. + +.. _lvgl-cookbook-weather: + +Weather forecast panel +---------------------- + +Another example relying on the **Grid** layout can be a weather panel showing the forecast through the `OpenWeatherMap integration `__ of Home Assistant. + +.. figure:: images/lvgl_cook_weather.png + :align: center + +All the information displayed here could be retrieved to local ``platform: homeassistant`` sensors as desribed in several examples in this Cookbook, however, this time we take a different approach. Instead of pulling the data by ESPHome, we'll be pushing it from Home Assistant, to native :doc:`/components/text/lvgl` components. + +The weather condition icons we use are from MDI. We import just the ones corresponding to the weather conditions supported by the Weather integration in Home Assistant. For all the other labels you can use any :ref:`font ` of your choice. + +.. code-block:: yaml + + binary_sensor: + - platform: status + name: Status sensor + + font: + - file: "fonts/materialdesignicons-webfont.ttf" + id: icons_100 + size: 100 + bpp: 4 + glyphs: [ + "\U000F0594", # clear-night + "\U000F0590", # cloudy + "\U000F0F2F", # exceptional + "\U000F0591", # fog + "\U000F0592", # hail + "\U000F0593", # lightning + "\U000F067E", # lightning-rainy + "\U000F0595", # partlycloudy + "\U000F0596", # pouring + "\U000F0597", # rainy + "\U000F0598", # snowy + "\U000F067F", # snowy-rainy + "\U000F0599", # sunny + "\U000F059D", # windy + "\U000F059E", # windy-variant + "\U000F14E4", # sunny-off + ] + + lvgl: + ... + pages: + - id: weather_forecast + widgets: + - obj: + align: CENTER + width: 228 + height: 250 + pad_all: 10 + pad_column: 0 + layout: + type: GRID + grid_rows: [FR(48), FR(13), FR(13), FR(13), FR(13)] + grid_columns: [FR(10), FR(40), FR(40), FR(10)] + widgets: + - label: + text: "\U000F14E4" + id: lbl_weather_forecast_condition_icon + text_font: icons_100 + text_align: CENTER + grid_cell_row_pos: 0 + grid_cell_column_pos: 0 + grid_cell_column_span: 2 + grid_cell_x_align: CENTER + grid_cell_y_align: START + + - label: + text: "Unknown" + id: lbl_weather_forecast_condition_name + text_align: CENTER + grid_cell_row_pos: 0 + grid_cell_column_pos: 2 + grid_cell_column_span: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: CENTER + + - label: + text: "Feels like:" + grid_cell_row_pos: 1 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_forecast_tempap + text_align: RIGHT + grid_cell_row_pos: 1 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + - label: + text: "Maximum:" + grid_cell_row_pos: 2 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_forecast_temphi + text_align: RIGHT + grid_cell_row_pos: 2 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + - label: + text: "Minimum:" + grid_cell_row_pos: 3 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_forecast_templo + text_align: RIGHT + grid_cell_row_pos: 3 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + - label: + text: "Now:" + grid_cell_row_pos: 4 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_outdnoor_now + text_align: RIGHT + grid_cell_row_pos: 4 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + text: + - platform: lvgl + name: fr_cond_icon + widget: lbl_weather_forecast_condition_icon + mode: text + - platform: lvgl + name: fr_cond_name + widget: lbl_weather_forecast_condition_name + mode: text + - platform: lvgl + name: fr_tempap + widget: lbl_weather_forecast_tempap + mode: text + - platform: lvgl + name: fr_temphi + widget: lbl_weather_forecast_temphi + mode: text + - platform: lvgl + name: fr_templo + widget: lbl_weather_forecast_templo + mode: text + - platform: lvgl + name: wd_out_now + widget: lbl_weather_outdnoor_now + mode: text + +If you look carefully at the ``grid_columns`` variable, you'll notice that there are two thinner columns at left and right (``FR(10)``). Reason is to add some space to the labels from the edges. And that's why we had to use ``grid_cell_column_span`` for the widgets in the first row, to take up the space of multiple columns. + +These labels will appear in Home Assistant as `editable text components `__, which makes it very easy to update them with the ``text.set_value`` action. For this purpose, we add the following `automations `__ to Home Assistant: + +.. code-block:: yaml + + - id: weather_cond_forecast + alias: 'Weather Forecast Condition' + trigger: + - platform: state + entity_id: sensor.openweathermap_forecast_condition + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_cond_icon + data: + value: > + {% set d = { + "clear-night": "\U000F0594", + "cloudy": "\U000F0590", + "exceptional": "\U000F0F2F", + "fog": "\U000F0591", + "hail": "\U000F0592", + "lightning": "\U000F0593", + "lightning-rainy": "\U000F067E", + "partlycloudy": "\U000F0595", + "pouring": "\U000F0596", + "rainy": "\U000F0597", + "snowy": "\U000F0598", + "snowy-rainy": "\U000F067F", + "sunny": "\U000F0599", + "windy": "\U000F059D", + "windy-variant": "\U000F059E", + "unknown": "\U000F14E4", + "unavailable": "\U000F14E4", + } %} + {{ d.get( states('sensor.openweathermap_forecast_condition') ) }} + + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_cond_name + data: + value: > + {% set d = { + "clear-night": "Clear Night", + "cloudy": "Cloudy", + "exceptional": "Except ional", + "fog": "Fog", + "hail": "Hail", + "lightning": "Lightning", + "lightning-rainy": "Lightning rainy", + "partlycloudy": "Partly cloudy", + "pouring": "Pouring", + "rainy": "Rainy", + "snowy": "Snowy", + "snowy-rainy": "Snowy rainy", + "sunny": "Sunny", + "windy": "Windy", + "windy-variant": "Windy cloudy", + "unknown": "Unknown", + "unavailable": "Unavai lable", + } %} + {{ d.get( states('sensor.openweathermap_forecast_condition') ) }} + + - id: weather_temp_feels_like_forecast + alias: 'Weather Temperature Feels Like' + trigger: + - platform: state + entity_id: sensor.openweathermap_feels_like_temperature + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_tempap + data: + value: "{{states('sensor.openweathermap_feels_like_temperature') | round(1)}} °C" + + - id: weather_temp_forecast_temphi + alias: 'Weather Temperature Forecast Hi' + trigger: + - platform: state + entity_id: sensor.openweathermap_forecast_temperature + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_temphi + data: + value: "{{states('sensor.openweathermap_forecast_temperature') | round(1)}} °C" + + - id: weather_temp_forecast_templo + alias: 'Weather Temperature Forecast Lo' + trigger: + - platform: state + entity_id: sensor.openweathermap_forecast_temperature_low + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_templo + data: + value: "{{states('sensor.openweathermap_forecast_temperature_low') | round(1)}} °C" + + - id: weather_temp_outdoor_now + alias: 'Weather Temperature Now' + trigger: + - platform: state + entity_id: sensor.outdoor_temperature + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_wd_out_now + data: + value: "{{states('sensor.outdoor_temperature') | round(1)}} °C" + +The automations will be triggered to update the labels every time the corresponding entities change, and when the ESPHome comes alive - the reason you also need the :doc:`/components/binary_sensor/status`. Note that you'll need to adjust the entity IDs corresponding to your ESPHome node depedning on how you :ref:`configured it to use its name`. + +.. _lvgl-cookbook-idlescreen: + +Turn off screen when idle +------------------------- + +LVGL has a notion of screen inactivity -- in other words, the time since the last user interaction with the screen is tracked. This can be used to dim the display backlight or turn it off after a moment of inactivity (like a screen saver). Every use of an input device (touchscreen, rotary encoder) counts as an activity and resets the inactivity counter. Note that it's important to use the ``on_release`` trigger to accomplish this task. With a template number you can make the timeout adjustable by the users. + +.. code-block:: yaml + + lvgl: + ... + on_idle: + timeout: !lambda "return (id(display_timeout).state * 1000);" + then: + - logger.log: "LVGL is idle" + - light.turn_off: display_backlight + - lvgl.pause: + + touchscreen: + - platform: ... + on_release: + - if: + condition: lvgl.is_paused + then: + - logger.log: "LVGL resuming" + - lvgl.resume: + - lvgl.widget.redraw: + - light.turn_on: display_backlight + + light: + - platform: ... + id: display_backlight + + number: + - platform: template + name: LVGL Screen timeout + optimistic: true + id: display_timeout + unit_of_measurement: "s" + initial_value: 45 + restore_value: true + min_value: 10 + max_value: 180 + step: 5 + mode: box + +.. _lvgl-cookbook-antiburn: + +Prevent burn-in of LCD +---------------------- + +You can use this to protect and prolong the lifetime of the LCD screens, thus being more green and generating less hazardous waste. + +A common problem with wall-mounted LCD screens is that they display the same picture 99.999% of the time. Even if somebody turns off the backlight during the night or dark periods, the LCD screen keeps showing the same picture, but seen by nobody. This scenario is likely to lead to burn-in after a few years of operation. + +One way to mitigate this is to *exercise* the pixels periodically by displaying different content. ``show_snow`` option during LVGL paused state was developed with this in mind; it displays randomly colored pixels across the entire screen in order to minimize screen burn-in by exercising each individual pixel. + +In the example below, pixel training is done four times for a half an hour every night; it can be stopped by touching the screen. + +.. code-block:: yaml + + time: + - platform: ... + on_time: + - hours: 2,3,4,5 + minutes: 5 + seconds: 0 + then: + - switch.turn_on: switch_antiburn + - hours: 2,3,4,5 + minutes: 35 + seconds: 0 + then: + - switch.turn_off: switch_antiburn + + switch: + - platform: template + name: Antiburn + id: switch_antiburn + icon: mdi:television-shimmer + optimistic: true + entity_category: "config" + turn_on_action: + - logger.log: "Starting Antiburn" + - if: + condition: lvgl.is_paused + then: + - lvgl.resume: + - lvgl.widget.redraw: + - delay: 1s + - lvgl.pause: + show_snow: true + turn_off_action: + - logger.log: "Stopping Antiburn" + - if: + condition: lvgl.is_paused + then: + - lvgl.resume: + - lvgl.widget.redraw: + - delay: 1s + - lvgl.pause: + + touchscreen: + - platform: ... + on_release: + then: + - if: + condition: lvgl.is_paused + then: + - lvgl.resume: + - lvgl.widget.redraw: + +You can combine it with the previous example to turn off the backlight, so the users don't actually notice this. + +See Also +-------- + +- :doc:`/components/lvgl/index` +- :ref:`config-lambda` +- :ref:`automation` +- :ref:`key_collector` +- `What is Image Sticking, Image Burn-in, an After Image, or a Ghost Image on an LCD? `__ +- `Image persistence `__ + +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index 192a61bc65..271cbaa47d 100644 --- a/index.rst +++ b/index.rst @@ -1155,6 +1155,7 @@ Cookbook .. imgtable:: Lambda Magic: Tips and Tricks, cookbook/lambda_magic, head-lightbulb-outline.svg, dark-invert + LVGL Recipes, cookbook/lvgl, lvgl.png Garage Door Template Cover, cookbook/garage-door, garage-variant.svg, dark-invert Time & Temperature on OLED Display, cookbook/display_time_temp_oled, display_time_temp_oled_2.jpg ESP32 Water Leak Detector, cookbook/leak-detector-m5stickC, leak-detector-m5stickC_main_index.jpg diff --git a/lint.py b/lint.py index 106a4017aa..390cdf95a4 100644 --- a/lint.py +++ b/lint.py @@ -396,6 +396,7 @@ def lint_directive_formatting(fname, content): exclude=[ "components/web_server.rst", "components/image.rst", + "cookbook/lvgl.rst", ], ) def lint_esphome_io_link(fname, match): From 300327649e8d7e7035b3e74551cf479c7d599b15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Sun, 15 Sep 2024 12:00:17 +0200 Subject: [PATCH 42/46] LVGL cookbook (#4110) Co-authored-by: Keith Burzinski Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/lvgl/index.rst | 9 +- components/lvgl/widgets.rst | 29 +- cookbook/images/lvgl_cook_animimg_batt.gif | Bin 0 -> 8109 bytes cookbook/images/lvgl_cook_climate.png | Bin 0 -> 1672 bytes cookbook/images/lvgl_cook_clock.png | Bin 0 -> 8115 bytes cookbook/images/lvgl_cook_cover.png | Bin 0 -> 4539 bytes cookbook/images/lvgl_cook_flex_layout.png | Bin 0 -> 5015 bytes cookbook/images/lvgl_cook_font_batt.png | Bin 0 -> 243 bytes cookbook/images/lvgl_cook_font_binstat.png | Bin 0 -> 2715 bytes cookbook/images/lvgl_cook_font_roboto_mdi.png | Bin 0 -> 2278 bytes cookbook/images/lvgl_cook_gauge.png | Bin 0 -> 4154 bytes cookbook/images/lvgl_cook_gradient_styles.png | Bin 0 -> 10498 bytes cookbook/images/lvgl_cook_keypad.png | Bin 0 -> 5951 bytes cookbook/images/lvgl_cook_pagenav.png | Bin 0 -> 1312 bytes cookbook/images/lvgl_cook_remligbut.png | Bin 0 -> 1696 bytes cookbook/images/lvgl_cook_statico.png | Bin 0 -> 700 bytes cookbook/images/lvgl_cook_thermometer.png | Bin 0 -> 11532 bytes .../images/lvgl_cook_thermometer_gauge.png | Bin 0 -> 5872 bytes cookbook/images/lvgl_cook_titlebar.png | Bin 0 -> 2366 bytes cookbook/images/lvgl_cook_volume.png | Bin 0 -> 1264 bytes cookbook/images/lvgl_cook_weather.png | Bin 0 -> 8364 bytes cookbook/lvgl.rst | 2242 +++++++++++++++++ index.rst | 1 + lint.py | 1 + 24 files changed, 2276 insertions(+), 6 deletions(-) create mode 100644 cookbook/images/lvgl_cook_animimg_batt.gif create mode 100644 cookbook/images/lvgl_cook_climate.png create mode 100644 cookbook/images/lvgl_cook_clock.png create mode 100644 cookbook/images/lvgl_cook_cover.png create mode 100644 cookbook/images/lvgl_cook_flex_layout.png create mode 100644 cookbook/images/lvgl_cook_font_batt.png create mode 100644 cookbook/images/lvgl_cook_font_binstat.png create mode 100644 cookbook/images/lvgl_cook_font_roboto_mdi.png create mode 100644 cookbook/images/lvgl_cook_gauge.png create mode 100644 cookbook/images/lvgl_cook_gradient_styles.png create mode 100644 cookbook/images/lvgl_cook_keypad.png create mode 100644 cookbook/images/lvgl_cook_pagenav.png create mode 100644 cookbook/images/lvgl_cook_remligbut.png create mode 100644 cookbook/images/lvgl_cook_statico.png create mode 100644 cookbook/images/lvgl_cook_thermometer.png create mode 100644 cookbook/images/lvgl_cook_thermometer_gauge.png create mode 100644 cookbook/images/lvgl_cook_titlebar.png create mode 100644 cookbook/images/lvgl_cook_volume.png create mode 100644 cookbook/images/lvgl_cook_weather.png create mode 100644 cookbook/lvgl.rst diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index ccfff25e04..86a0a5651d 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -16,6 +16,7 @@ The graphic display should be configured with ``auto_clear_enabled: false`` and For interactivity, a :doc:`Touchscreen ` (capacitive highly preferred), a :doc:`/components/sensor/rotary_encoder` or a custom keypad made up from discrete :doc:`Binary Sensors ` can be used. +Check out the detailed examples in :ref:`the Cookbook ` which demonstrate a number of ways you can integrate your environment with LVGL and ESPHome. Basics ------ @@ -146,6 +147,7 @@ The following configuration variables apply to the main ``lvgl`` component, in o align: CENTER text: 'Hello World!' +See :ref:`lvgl-cookbook-navigator` in the Cookbook for an example which demonstrates how to implement a page navigation bar at the bottom of the screen. .. _lvgl-color: @@ -176,6 +178,7 @@ You can use :ref:`fonts configured normally`, the glyphs will be For best results, set ``bpp: 4`` to get the glyphs rendered with proper anti-aliasing. +Check out :ref:`lvgl-cookbook-icontext`, :ref:`lvgl-cookbook-iconstat` and :ref:`lvgl-cookbook-iconbatt` in the Cookbook for examples which demonstrate how to use icons and text with TrueType/OpenType fonts. **Library fonts** @@ -378,6 +381,7 @@ So the precedence happens like this: state based styles override the locally spe Feel free to experiment to discover inheritance and precedence of the styles based on states between the nested widgets. +:ref:`lvgl-cookbook-theme` The Cookbook contains an example which demonstrates how to implement a gradient style for your widgets. .. _lvgl-layouts: @@ -388,6 +392,7 @@ Layouts aim to position widgets automatically, eliminating the need to specify ` The layout configuration options are applied to any parent widget or page, influencing the appearance of the children. The position and size calculated by the layout overwrites the *normal* ``x``, ``y``, ``width``, and ``height`` settings of the children. +Check out :ref:`lvgl-cookbook-flex`, :ref:`lvgl-cookbook-grid` and :ref:`lvgl-cookbook-weather` in the Cookbook for examples which demonstrate how to automate widget positioning, potentially reducing the size of your device's YAML configuration, and saving you from lots of manual calculations. The ``hidden``, ``ignore_layout`` and ``floating`` :ref:`flags ` can be used on widgets to ignore them in layout calculations. @@ -594,7 +599,7 @@ This :ref:`action ` redraws the entire screen, or optionally onl This :ref:`action ` pauses the activity of LVGL, including rendering. -- **show_snow** (*Optional*, boolean): When paused, display random colored pixels across the entire screen in order to minimize screen burn-in, to relief the tension put on each individual pixel. +- **show_snow** (*Optional*, boolean): When paused, display random colored pixels across the entire screen in order to minimize screen burn-in, to relief the tension put on each individual pixel. See :ref:`lvgl-cookbook-antiburn` for an example which demonstrates how to use this. .. code-block:: yaml @@ -801,6 +806,7 @@ The ``on_idle`` :ref:`triggers ` are activated when inactivity time - light.turn_off: display_backlight - lvgl.pause: +See :ref:`lvgl-cookbook-idlescreen` for an example which demonstrates how to implement screen saving with idle settings. See Also -------- @@ -811,6 +817,7 @@ See Also * +- :doc:`LVGL Examples in the Cookbook ` - :doc:`/components/display/index` - :doc:`/components/touchscreen/index` - :doc:`/components/sensor/rotary_encoder` diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 460e6a7597..1909bebcf8 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -83,6 +83,8 @@ To apply styles to the states, you need to specify them one level above, for exa The state itself can be can be changed by interacting with the widget, or through :ref:`actions ` with ``lvgl.widget.update``. +See :ref:`lvgl-cookbook-cover` for a cookbook example which demonstrates how to use styling and properties to show different states of a Home Assistant entity. + .. _lvgl-widget-flags: In addition to visual styling, each widget supports some boolean **flags** to influence the behavior: @@ -114,7 +116,7 @@ In addition to visual styling, each widget supports some boolean **flags** to in .. note:: - LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. + LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. Some examples in the :doc:`Cookbook ` cover how to do that. .. _lvgl-widget-parts: @@ -264,6 +266,8 @@ The animation image is similar to the normal ``image`` widget. The main differen repeat_count: 100 duration: 300ms +See :ref:`lvgl-cookbook-animbatt` in the Cookbook for a more detailed example. + .. _lvgl-widget-arc: ``arc`` @@ -345,7 +349,9 @@ If the ``adv_hittest`` :ref:`flag ` is enabled the arc can be The ``on_value`` trigger is sent as the arc knob is dragged or changed with keys. The event is sent *continuously* while the arc knob is being dragged; this generally has a negative effect on performance. To mitigate this, consider using a :ref:`universal interaction trigger ` like ``on_release``, to get the ``x`` variable once after the interaction has completed. -The ``arc`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. +The ``arc`` can be also integrated as a :doc:`Number ` or :doc:`Sensor ` component. + +See :ref:`lvgl-cookbook-bright` and :ref:`lvgl-cookbook-volume` for examples which demonstrate how to use a slider (or an arc) to control entities in Home Assistant. .. _lvgl-widget-bar: @@ -466,6 +472,8 @@ To have a button with a text label on it, add a child :ref:`lvgl-widget-label` w The ``button`` can be also integrated as a :doc:`Binary Sensor ` or as a :doc:`Switch ` component. +See :ref:`lvgl-cookbook-binent` for an example which demonstrates how to use a checkable button to act on a Home Assistant service. + .. _lvgl-widget-buttonmatrix: ``buttonmatrix`` @@ -596,7 +604,7 @@ The button matrix widget is a lightweight way to display multiple buttons in row .. tip:: - The Button Matrix widget supports the :ref:`key_collector` to collect the button presses as key press sequences for further automations. + The Button Matrix widget supports the :ref:`key_collector` to collect the button presses as key press sequences for further automations. Check out :ref:`lvgl-cookbook-keypad` for an example. .. _lvgl-widget-checkbox: @@ -656,7 +664,7 @@ The checkbox widget is made internally from a *tick box* and a label. When the c .. note:: - In case you configure ``default_font`` in the main section to a custom font, the checkmark will not be shown correctly when the checkbox is in the checked state. + In case you configure ``default_font`` in the main section to a custom font, the checkmark will not be shown correctly when the checkbox is in the checked state. See :ref:`lvgl-cookbook-ckboxmark` for how to easily resolve this. The ``checkbox`` can be also integrated as a :doc:`Switch ` component. @@ -988,6 +996,8 @@ The ``led`` can be also integrated as :doc:`Light ` comp If configured as a light component, ``color`` and ``brightness`` are overridden by the light at startup, according to its ``restore_mode`` setting. +Check out :ref:`lvgl-cookbook-keypad` in the Cookbook for an example which demonstrates how to change the ``led`` styling properties from an automation. + .. _lvgl-widget-line: ``line`` @@ -1139,6 +1149,8 @@ The meter widget can visualize data in very flexible ways. It can use arcs, need id: temperature_needle value: 3 +See :ref:`lvgl-cookbook-gauge`, :ref:`lvgl-cookbook-thermometer` and :ref:`lvgl-cookbook-clock` in the Cookbook for examples which demonstrate how to effectively use this widget. + .. _lvgl-widget-msgbox: ``msgboxes`` @@ -1362,6 +1374,8 @@ Normally, the slider can be adjusted either by dragging the knob, or by clicking The ``slider`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. +See :ref:`lvgl-cookbook-bright` and :ref:`lvgl-cookbook-volume` for examples which demonstrate how to use a slider to control entities in Home Assistant. + .. _lvgl-widget-spinbox: ``spinbox`` @@ -1437,7 +1451,9 @@ The spinbox contains a numeric value (as text) which can be increased or decreas format: "Spinbox value is %f" args: [ x ] -The ``spinbox`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. +The ``spinbox`` can be also integrated as a :doc:`Number ` or :doc:`Sensor ` component. + +See :ref:`lvgl-cookbook-climate` for an example which demonstrates how to implement a thermostat control using the spinbox. .. _lvgl-widget-spinner: @@ -1531,6 +1547,8 @@ The switch looks like a little slider and can be used to turn something on and o The ``switch`` can be also integrated as a :doc:`Switch ` component. +See :ref:`lvgl-cookbook-relay` for an example which demonstrates how to use a switch to act on a local component. + .. _lvgl-widget-tabview: ``tabview`` @@ -1781,6 +1799,7 @@ This powerful :ref:`action ` allows changing/updating any widget id: my_label_id hidden: true +Check out in the Cookbook :ref:`lvgl-cookbook-binent` for an example which demonstrates how to use a template to update the state. .. _lvgl-automation-shorthands: diff --git a/cookbook/images/lvgl_cook_animimg_batt.gif b/cookbook/images/lvgl_cook_animimg_batt.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1ec7806d9f4eba88f68f784037efe8f1383581a GIT binary patch literal 8109 zcmZ?wbhEHblwnX}s9<1F{Lk&@8WQa67~pE8XTZ$J02KPk!Xg5sb%2-wq-;5efg3P_ z0TUAwGcz*_3kxeND?2+o2L}fi7Z(o?4?jP@kdTmwh={njxP*j+q@<*jl$5lzw2X|5 ztgNh@oSeM8yn=#)qN1Xbl9IBrvWkj|s;a7*nwq-0x`u{^rlzKrmX@}*wvLXDuCA`0 zo}RwGzJY;(p`oFXk&&^nv5AR^si~=%nVGq{xrK#=rKP2nm6f%%wT+F9t*xz{ot?eC zy@P{;qobpflasTvvx|$1tE;PCcvmzTGBeM3V-V`F1eQ&V$ub4yE0 zYiny;TU&d3dq+n{XJ=CQh6C&akmMvSpeEEtMD^{*txoXv_)vH&pS+i#C+O_M}ty{l-{e}%2Hg4RwY15|7n>TOS zvSsVmt=qP3+rEAKjvYI8?%cU+*RK8h_n$s}`tIGk@87@w{{8!(KY#uWS@8e=e~xs9 z|C}-&8x|aF<`CA3Ik92k;dTLKuQ?tYl@2mV7)PC1QK)phpH-#liH1>%V~;BDqMjX} z7I}8)vL7q4_#E%sW}2^e=I1BH^HbETFNtJL*6>?oCEE9fqj=@TxqiA{bG^2%y1F`I zBO41S?=gV$9yfy+0~-S)p}dDXSE9%Ob0{Q#0y8HkCnp~tpRlknFgF5o;Aq|(W_fS- z?%jL#?Ag0_@4kKefcfyifddB*9z1mD(BZ>}j~qF2^ytxJ$BrF8e*DCV6DLoeJay_6 zFr%J1bLQ;Xv**s8JAeNCg$oxhUc7ke(xuCnFJHNGgPoF(|_Wb$t7cXACeEIU# zt5>gIzkc)P&D*zc-@SVWEDk<=`0(-L$4{R=eg6FU%a<=-zkdDp?HjO+`0?Y%&!0bk z{rdI$_itc%@%QgvV2J_Bdu$Bi95NCD$XP>lG;54jOJr0_BOq%C1G5Gbm1+%O6#}d{ zfUUaGT4UI^*oIry;9!vCknspea6qm%ghuO)(RyRF-oVzR5**DMqgi7#YhcS7{G&~( z(X26=H8`*~srW|gjnT|8nmMr58@!`gV>D}wW({mvgJ(2rjAo6|tbxcH|3rNgQ&JVm VGfOfQf|H9Gu-4m#b`8oD@{u1n#P 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_cover.png b/cookbook/images/lvgl_cook_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9fe2987167fe988d4d2efe28cfcf0c58a5a55b GIT binary patch literal 4539 zcmcIoXH-*L+D-^fL8^2J3L+S!DIi4x*HBat0wjQ-geFo%%01lBGL^SAZP+Y zL<~ugs&s_Vi!^Bx2)#48GxN=zA9H`qTJ!yQ&N^$a{qD8TyPxNMpM9RfEzOP`mOKmq z0FGR`Xlw%j099GOyRZig+^iGH{MA!f5>$B?(a#J4Jw&VnVOzAL$%IW zX{ynEv;?dx_Fxr?M#g~RiznDwU}K>s2bs0wL0BYFNA)L<^Y)ExN$cfu+#=Z{27SiL zIC>k#Jp-BTaSK^C)9QJ>Tc>_Nxe8aJGR|Eo3v6zwm)MyPhGbKc{iL%qvNAHVg06qt z44dfZxjLWdv-T5D3LGnY91QUjH`RO57V*lrYS$Uov*w}ZvEw{{me<`Us7bSRcdaVI zb*G6x5hww_Ts;8xRBOjQv3V8MWD%+E?O#=jmQT585p_QMmsO7s$rp9a{Djc@Ojm)G z@YA}{{Y8I5v84XFw2LQfU`5J2_Bqf9$6`9pFvs$Qki95j$bq5}cCTl9;B!FS@p*JZ zTf(pdh1rUtURqbQg%x>3Ef0wG-hMZdzUy)(<>K!025S9s9fns)_XiZYJGDsDv^3Cq zo26=C;IOaT%7ZitD{LoqUG@fw_bUd=#`qoMvnrXtnCQISYYqrP{cIYXdc|`#K}G^@4;Wi>|{31IW3m$IlVIU-2*# zcNLAuxEnR@%5-HI{=Rd7>19RTQ~qJDwXYT_2i(kk6JzWm^7KE#YyY;CZBf0}&`|Yu z&cOi;3zeyD)aXnq#F3~cKut#{F;|?&)o$Tel;L#CRz`{U@o?ya;Kdx@ZnKCs=0+^ZIwr|?Uno>@ebGn(T-C4Yu8pTT?F7` z>$NsaIaibOID!#@_wu{Syo-ke#XFqXL^`bNu?0Et1HB9#-Wiqqhrjmz#kT+IbN-w0 znF}Hlg5v1uD8Fe7UYGra+g8|Y@e-Mg-0t@gU8)4<) zoGVi5E}6l>M6V42BL`US;(Ee5giYs$SDgHCcH5YH_4@2Jkp*zZVH4q{>rxBImSJ04 z<-=5R=@}QNJB6`{;51je-JXU9WY!kA*<|xqLlb79=PBef+KXu`rN}8=?8WR#cmdQG zC=o{TMgwm0tAt1~gSb39O-0IqTHr}%n7Ed0!E+PGL&#^&{BWH`SMyQQJLR4jTFQ}oAvJ2mesvczb6DG0t|a#V z2Re9he*4c_Ng;hQ(Ljm<94Ldd*w`Gey^-7huYvQaaLMo>V*cx(lVkhv(0}rwGsdJK zRYBI64u55t7Vpqa$_BFZ$BOTE-^MsI(Fo;9jB}?uql={sMfS6K6Bagr7F6r_L$}J< zsm9J4VG80ZY>#r5Sg}z_XX2#Hq~I3Sz>Z0dO_|i<11hT1&kd(yVwPamCm0;P9dmqy1YUFwzsJq6>p^E(b7UjtY#bjMhfGpux zR;tIo-_U5#?kAEF$go>fD7O94)DChOXvhR8`N2NKQtH}y={*>RS?uE9DHmANRT z<>LruEsYJ{1=Dx>PWhVMV;2V@z_u@TPZP!j%1`e}4JZ!OVsYYH;5KpWTkwLtX{ks@HR4e z1!X87B??fDP-MiXskot4&GQR!t#8y**)aN6-31laeea^_FbC-`r(mGuQTWT-*pgEQ zMR>U|+g5(xSMK;F?#E_{jbT@g)B!bhRRIC>f~HBnMk{5l5`q9F!^QqPe6-khKj!T{ zYocgPg}gW|acFk?b>f~*opM#?RJH<#Q4|N7TlgSm$XjLa#$MXF4bilol25o*fe*0F z_0yISQ}^F&?Kq6UUrk(;sULDm592v|K#4jYC8qM|zRu4PqfW#X{cwS3l!>pItFg>Z zsQiN|uJ=zQTlw6_6pdj@Y4a~nr*#&D9;kjy$^D>-w|d75Xf`>jn4+8LWCCz-tld56 zQCsh*t8hm z)!eRg^npWZc>=cRG@9b?ck2MMWIEK56GX^IMP;AN*#d z5u^O04mM4;CWh7QSR{@*gRd6=s66@w-&^ve#D8&!*m2>#3JfKv{-I>aY6nAB{-_)( z@uiUfhtFJqm;UaN4j{ys#ye2AzSW$of+ETJ;Wz(6I+v1tO1$gbop++h`IWbxG}!*> z!;9XPVRH;ofQJyPb8a1(8bE@_p)?ib>055QpEJNUyCt3wtx)rRwTO@6HDwQ_cY4mV z)OHB4qa|y-`@G&wCdxCBj;eB2!G}_dM}1Z{UPB=IkBWp@MQ9mxjfy-t_3ct`vp9`# za$93V6q^zDQzbq!;VDpSAJTv-rqvmeuzVYWxMp*bW9vSy9$0QxIb!_GJh+*R=+&qHTKjQ|41L&J}t&?|J`7!MbMW2i;kx;$~#Ealk@rMufSns zU0LCJ#S8p7Mr6(FY=wSb5fxq~+iH+@ksM$x6XO4(^~2R7#QEoErTNU(3c+2Zm!uvs zPow*6;F5bHPYY`|Z%fGuI+*;43s)*KE~^m6escC0tR>R^&r*JDU-4%xoD9;w$4M$F zY9ksU^|i>gxW`Ld+}|l-1O?Dxu@(#igdj$<=izl|4{C5b*>$Y;td#_Cue|)t6PLu3Hx6fi*Wie(MNver1n*H~$mZykb$fZtuw^(<1M4@Gm5#ea=X?w_S?hufNDj^vfE~kW53cj~Ro;Y4^h9r?7yx+dmsNFG9^12bCxl=+Z5^(5`#z$wN1KtS4HHFkX5L=@G_evM z$qY~!wr!KvSQChMH(eFkh=7R0KOW->wij&24vgC2M?UQwiVjKhAR^1v^DJ0i@=YwD z+aF(r)Nb~CYr}-M1?WiA^U)T)&OMH(bRfs!yVXCDC$M}I|DLzaD4Y{i$t@#Pj`dRp OaLL5dm~g@6!QTJ{E^!Bx39-R704u4YCc!-eliuER#Kzo#PR-?xNJM8=Y7 z438SJ43Z&)ck1~)%lpUg{k{Lb?{$68^*#4@Ip@C4eLkOat~>UQp*9&~)%!G}bavBwVZ?Ejrzw*s;6cb6>s^QB zolR&^uUvo;l)d=cL?)m?p1#ImF|R2YZE3!i{`Esnw^6rnNOJ1?;f<7~67A9MK)=PI z6d$HXpTF5m(9+Cv=s5K-|2v5&+CnKivqauKwm+<)oR{Tc1~yw@#7kHr7pUtQNyt!D zm;5^+EnSOm%YHb)>tUC8uGrS+R1@q1Nt4q-$JfHE%&S2x1(phL#$w-a$?ZGdS z%9#d%I;!ic^au_qR3xiuR8(*{t?k8-b87gOtx?mIv=SCMzV#n&LqQi;^60>VsWGK9 zo-m{4=BC)v+D0vKMzw&D)?VXT$A^bcXQ9;u8!4W+nvQ)umW(3CXH<{a15dN`mkpIA zjz|Fv3=C(FJq^4(A~lU?O|{s^PZq-EHNJpky6x9d#l_G|JV52NAja+Hvx_w->Uh)Z zz5C#;JGy@f_)$|$ZbQu*@cgv^=gCvkw}K_eot_N>=XR0bB6sox0mS}w#A z*0v8vr=*odgLXU5WMHa@?WSjeP+~=C@XFw>+PPf*w7La+_*}D86gv6s(z%fRylL>c zZp#L|AvJ97jj+8#1a(wFS4S87KH$A>;L&Y2?1F-;VHJbrvz3?P%z?^HD_eo8yG9qN zF$7OQC;h}_SVRHl-m+Jk0t#ei@=RJ`6}$T(P;)SN#M#$7pluW3xV4p~Nv=QEPRrxw7tX73Ol&^RG zj$e7%SdW*Xeh|bSVP`Jjv8jq|pBAEhR=i+#Q0A5~&#l@Ffhp5fbfWf|&fi8zzGuS2 z%7vYWFh4-HNj7TA%GbR>yov>s`J?da9pOTM*419uu+P0E97UB%VYQZFB|LX@y3Vud zd2mdhtFDY(KsaiEu66d$?t7AvJ@N+N9{_PrkKX^H)VF*XxzC!;?C;n38lQd{Dfb+FGdGPi7EId07Ra#zV2>) zW+aL8d5E32=j2Cn)0Gg%WgRB%}qq(r-$(?OOv0Z6$G!EnAIs zUB)R@{Ea*uFN2Vc@A-0w3jGkgqPr)k%0D2(KoskIQB==m9F_$;C81@U>R#n-J_Huy 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_font_batt.png b/cookbook/images/lvgl_cook_font_batt.png new file mode 100644 index 0000000000000000000000000000000000000000..6803ee049bae1b86ed99f7393698c631da4950eb GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1SJ3FdmIK*oCO|{#S9F5M?jcysy3fAP;jZI zi(`mKXY!x_|LvK#G74Yyl`);tx}d9g`uVeS?ZnUdp7SxgWV-0eh2Q+|@^A0sJy-gv zL@7fta$C44~A=k!nTEZi|eW$4{&vLWn*LW89hjbZSA!#~$R)^y6gwy2v? o6BUm(*w3BB+vYx_kHML7C#Pj{4*P6zpo1AaUHx3vIVCg!0L2wqhyVZp literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_font_binstat.png b/cookbook/images/lvgl_cook_font_binstat.png new file mode 100644 index 0000000000000000000000000000000000000000..4315ba8cceafce83febc3b99d15b3ed9ef839e9f GIT binary patch literal 2715 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 A(f|Me literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_gauge.png b/cookbook/images/lvgl_cook_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..11379cb9d92fb2804f266c5d22b6591b3c4844df GIT binary patch literal 4154 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 TzWxJsFb+^r(3G!~wG8<$^H^HV literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_pagenav.png b/cookbook/images/lvgl_cook_pagenav.png new file mode 100644 index 0000000000000000000000000000000000000000..db7b3b55f008b75bf4ce25b1dc35119aa73e433c GIT binary patch literal 1312 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 JWt~$(69A@pIDh~E literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_thermometer.png b/cookbook/images/lvgl_cook_thermometer.png new file mode 100644 index 0000000000000000000000000000000000000000..ee38819578cb9e3f9d0f7f34c11d9df3e0998c09 GIT binary patch literal 11532 zcmW++Wmpwm7ah8hlI}*j8|m(ny3$?J-JQavySuwnr8}iNE+CD7f_(S=e$1KY%*=D< z`3_gxO zaG0KEXnAphiZYRcG?BbAk-WtpC⪻Zu*3B`h@RP3He3XW>QkLh}P<8*%EbOmtXmb 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_thermometer_gauge.png b/cookbook/images/lvgl_cook_thermometer_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..6976d767d2e7529d13ab324c3c1f08f833a9107e GIT binary patch literal 5872 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 literal 0 HcmV?d00001 diff --git a/cookbook/images/lvgl_cook_volume.png b/cookbook/images/lvgl_cook_volume.png new file mode 100644 index 0000000000000000000000000000000000000000..3d42748c97934c4cf05925a6fcfc36f17a9d9aa1 GIT binary patch literal 1264 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 Rq5m+zP?A%VEdd$_{x1_sDER;Y literal 0 HcmV?d00001 diff --git a/cookbook/lvgl.rst b/cookbook/lvgl.rst new file mode 100644 index 0000000000..bd90892926 --- /dev/null +++ b/cookbook/lvgl.rst @@ -0,0 +1,2242 @@ +.. _lvgl-cookbook: + +LVGL: Tips and Tricks +===================== + +.. seo:: + :description: Recipes for common use cases of LVGL Displays with ESPHome + :image: /images/lvgl.png + +Here are a couple recipes for various interesting things you can do with :doc:`/components/lvgl/index` in ESPHome. + +.. note:: + + Many of the examples below call service actions in Home Assistant; however, Home Assistant does not allow such action calls by default. For each ESPHome device which will call actions, you must explicitly enable this setting in Home Assistant. This may be done when the device is initially adopted or by using the `Configure` option in the "devices" list of the ESPHome integration. + +.. note:: + + The examples below assume you've set up LVGL correctly with your display and its input device, and you have the knowledge to set up various components in ESPHome. Some examples use absolute positioning for a screen with dimensions of ``240x320px``; if your display's dimensions differ, you'll need to adjust them in order to obtain the expected results. + +.. _lvgl-cookbook-relay: + +Local light switch +------------------ + +.. figure:: /components/lvgl/images/lvgl_switch.png + :align: left + +The easiest way to integrate an LVGL :ref:`lvgl-widget-switch` widget and a switch or light is with :ref:`automations `: + +.. code-block:: yaml + + light: + - platform: ... + id: local_light + name: 'Local light' + on_state: + - lvgl.widget.update: + id: light_switch + state: + checked: !lambda return id(local_light).current_values.is_on(); + + lvgl: + ... + pages: + - id: main_page + widgets: + - switch: + align: CENTER + id: light_switch + on_click: + light.toggle: local_light + +.. _lvgl-cookbook-binent: + +Remote light button +------------------- + +.. figure:: images/lvgl_cook_remligbut.png + :align: right + +If you'd like to control a remote light which appears as an entity in Home Assistant from a checkable (toggle) :ref:`lvgl-widget-button`, first you need to import the light state into ESPHome, and then control it using a action call: + +.. code-block:: yaml + + binary_sensor: + - platform: homeassistant + id: remote_light + entity_id: light.remote_light + publish_initial_state: true + on_state: + then: + lvgl.widget.update: + id: light_btn + state: + checked: !lambda return x; + + lvgl: + ... + pages: + - id: room_page + widgets: + - button: + id: light_btn + align: CENTER + width: 100 + height: 70 + checkable: true + widgets: + - label: + align: CENTER + text: 'Remote light' + on_click: + - homeassistant.action: + action: light.toggle + data: + entity_id: light.remote_light + +.. _lvgl-cookbook-bright: + +Light brightness slider +----------------------- + +.. figure:: images/lvgl_cook_volume.png + :align: left + +You can use a :ref:`slider ` or an :ref:`arc ` to control the brightness of a dimmable light. + +We can use a sensor to retrieve the current brightness of a light, which is stored in Home Assistant as an attribute of the entity, as an integer value between ``0`` (min) and ``255`` (max). It's convenient to set the slider's ``min_value`` and ``max_value`` accordingly. + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: light_brightness + entity_id: light.your_dimmer + attribute: brightness + on_value: + - lvgl.slider.update: + id: dimmer_slider + value: !lambda return x; + + lvgl: + ... + pages: + - id: room_page + widgets: + - slider: + id: dimmer_slider + x: 20 + y: 50 + width: 30 + height: 220 + pad_all: 8 + min_value: 0 + max_value: 255 + on_release: + - homeassistant.action: + action: light.turn_on + data: + entity_id: light.your_dimmer + brightness: !lambda return int(x); + +Note that Home Assistant expects an integer at the ``brightness`` parameter of the ``light.turn_on`` action call, and since ESPHome uses floats, ``x`` needs to be converted. + +This is applicable to action calls like ``fan.set_percentage`` or ``valve.set_valve_position``, too; the only difference is that ``max_value`` has to be ``100``. + +.. _lvgl-cookbook-volume: + +Media player volume slider +-------------------------- + +.. figure:: images/lvgl_cook_volume.png + :align: right + +Similarly, you can use a :ref:`slider ` or an :ref:`arc ` to control the volume level of a media player, which uses float values. + +With a sensor we retrieve the current volume level of the media player, which is stored in Home Assistant as an attribute of the entity, and is a float value between ``0`` (min) and ``1`` (max). Since LVGL only handles integers, it's convenient to set the slider's possible values to be between ``0`` and ``100``. Thus a conversion is needed back and forth, meaning that when we read the value from Home Assistant we have to multiply it by ``100``, and when we set the volume through the action call, we have to divide it by ``100``: + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: media_player_volume + entity_id: media_player.your_room + attribute: volume_level + on_value: + - lvgl.slider.update: + id: slider_media_player + value: !lambda return (x * 100); + + lvgl: + ... + pages: + - id: mediaplayer_page + widgets: + - slider: + id: slider_media_player + x: 60 + y: 50 + width: 30 + height: 220 + pad_all: 8 + min_value: 0 + max_value: 100 + adv_hittest: true + on_value: + - homeassistant.action: + action: media_player.volume_set + data: + entity_id: media_player.your_room + volume_level: !lambda return (x / 100); + +The ``adv_hittest`` option ensures that accidental touches to the screen won't cause sudden volume changes (more details in the :ref:`slider doc `). + +.. note:: + + Keep in mind that ``on_value`` is triggered *continuously* by the slider while it's being dragged. This generally has a negative effect on performance. For example, you shouldn't use this trigger to set the target temperature of a heat pump via Modbus, or set the position of motorized covers, because it will likely cause malfunctions. To mitigate this, consider using a universal widget trigger like ``on_release`` to get the ``x`` variable once after the interaction has completed. + +.. _lvgl-cookbook-gauge: + +Semicircle gauge +---------------- + +A gauge similar to what Home Assistant shows in the Energy Dashboard can accomplished with :ref:`lvgl-widget-meter` and :ref:`lvgl-widget-label` widgets: + +.. figure:: images/lvgl_cook_gauge.png + :align: center + +The trick here is to have a parent :ref:`lvgl-widget-obj` which contains the other widgets as children. We place a :ref:`lvgl-widget-meter` in the middle, which is made from an indicator ``line`` and two ``arc`` widgets. We use another, smaller :ref:`lvgl-widget-obj` on top of it to hide the indicator's central parts and place some :ref:`lvgl-widget-label` widgets to display numeric information: + +.. code-block:: yaml + + sensor: + - platform: ... + id: values_between_-10_and_10 + on_value: + - lvgl.indicator.update: + id: val_needle + value: !lambda return x; + - lvgl.label.update: + id: val_text + text: + format: "%.0f" + args: [ 'x' ] + lvgl: + ... + pages: + - id: gauge_page + widgets: + - obj: + height: 240 + width: 240 + align: CENTER + bg_color: 0xFFFFFF + border_width: 0 + pad_all: 4 + widgets: + - meter: + height: 100% + width: 100% + border_width: 0 + bg_opa: TRANSP + align: CENTER + scales: + - range_from: -10 + range_to: 10 + angle_range: 180 # sets the total angle to 180 = starts mid left and ends mid right + ticks: + count: 0 + indicators: + - line: + id: val_needle + width: 8 + r_mod: 12 # sets line length by this much difference from the scale default radius + value: -2 + - arc: # first half of the scale background + color: 0xFF3000 + r_mod: 10 # radius difference from the scale default radius + width: 31 + start_value: -10 + end_value: 0 + - arc: # second half of the scale background + color: 0x00FF00 + r_mod: 10 + width: 31 + start_value: 0 + end_value: 10 + - obj: # to cover the middle part of meter indicator line + height: 146 + width: 146 + radius: 73 + align: CENTER + border_width: 0 + bg_color: 0xFFFFFF + pad_all: 0 + - label: # gauge numeric indicator + id: val_text + text_font: montserrat_48 + align: CENTER + y: -5 + text: "0" + - label: # lower range indicator + text_font: montserrat_18 + align: CENTER + y: 8 + x: -90 + text: "-10" + - label: # higher range indicator + text_font: montserrat_18 + align: CENTER + y: 8 + x: 90 + text: "+10" + +.. tip:: + + The ``obj`` used to hide the middle part of the meter indicator line has ``radius`` equal to half of the ``width`` and ``height``. This results in a circle - which is actually a square with extra large rounded corners. + +.. _lvgl-cookbook-thermometer: + +Thermometer +----------- + +A thermometer with a precise gauge also made from a :ref:`lvgl-widget-meter` widget and a numeric display using :ref:`lvgl-widget-label`: + +.. figure:: images/lvgl_cook_thermometer.png + :align: center + +Whenever a new value comes from the sensor, we update the needle indicator as well as the text in the :ref:`lvgl-widget-label`. Since LVGL only handles integer values on the :ref:`lvgl-widget-meter` scale, but the sensor's value is a ``float``, we use the same approach as in the examples above; we multiply the sensor's values by ``10`` and feed this value to the :ref:`lvgl-widget-meter`. It's essentially two scales on top of each other: one to set the needle based on the multiplied value and the other to show sensor's original value in the :ref:`lvgl-widget-label`. + +.. code-block:: yaml + + sensor: + - platform: ... + id: outdoor_temperature + on_value: + - lvgl.indicator.update: + id: temperature_needle + value: !lambda return x * 10; + - lvgl.label.update: + id: temperature_text + text: + format: "%.1f°C" + args: [ 'x' ] + lvgl: + ... + pages: + - id: meter_page + widgets: + - meter: + align: CENTER + height: 180 + width: 180 + scales: + - range_from: -100 # scale for the needle value + range_to: 400 + angle_range: 240 + rotation: 150 + indicators: + - line: + id: temperature_needle + width: 2 + color: 0xFF0000 + r_mod: -4 + - tick_style: + start_value: -10 + end_value: 40 + color_start: 0x0000bd + color_end: 0xbd0000 + width: 1 + - range_from: -10 # scale for the value labels + range_to: 40 + angle_range: 240 + rotation: 150 + ticks: + width: 1 + count: 51 + length: 10 + color: 0x000000 + major: + stride: 5 + width: 2 + length: 10 + color: 0x404040 + label_gap: 10 + widgets: + - label: + id: temperature_text + text: "-.-°C" + align: CENTER + y: 45 + - label: + text: "Outdoor" + align: CENTER + y: 65 + +And here's the same sensor configuration, but instead with a semicircle gauge with a gradient background drawn by a multitude of ticks: + +.. figure:: images/lvgl_cook_thermometer_gauge.png + :align: center + +If you change the size of the widget, to obtain a uniform gradient, be sure to increase or decrease the ticks count accordingly. + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: meter_page + widgets: + - obj: + height: 240 + width: 240 + align: CENTER + y: -18 + bg_color: 0xFFFFFF + border_width: 0 + pad_all: 14 + widgets: + - meter: + height: 100% + width: 100% + border_width: 0 + align: CENTER + bg_opa: TRANSP + scales: + - range_from: -15 + range_to: 35 + angle_range: 180 + ticks: + count: 70 + width: 1 + length: 31 + indicators: + - tick_style: + start_value: -15 + end_value: 35 + color_start: 0x3399ff + color_end: 0xffcc66 + - range_from: -150 + range_to: 350 + angle_range: 180 + ticks: + count: 0 + indicators: + - line: + id: temperature_needle + width: 8 + r_mod: 2 + value: -150 + - obj: # to cover the middle part of meter indicator line + height: 123 + width: 123 + radius: 73 + align: CENTER + border_width: 0 + pad_all: 0 + bg_color: 0xFFFFFF + - label: + id: temperature_text + text: "--.-°C" + align: CENTER + y: -26 + - label: + text: "Outdoor" + align: CENTER + y: -6 + +.. tip:: + + You can omit the ``obj`` used to hide the middle part of meter indicator line by using a bitmap ``image`` indicator as needle, were only the part hanging above the ticks scale is visible, the rest is transparent. + +.. _lvgl-cookbook-climate: + +Climate control +--------------- + +:ref:`lvgl-widget-spinbox` is the ideal widget to control a thermostat: + +.. figure:: images/lvgl_cook_climate.png + :align: center + +First we import from Home Assistant the current target temperature of the climate component, and we update the value of the spinbox with it whenever it changes. We use two buttons labeled with minus and plus to control the spinbox, and whenever we change its value, we just simply call a Home Assistant action to set the new target temperature of the climate. + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: room_thermostat + entity_id: climate.room_thermostat + attribute: temperature + on_value: + - lvgl.spinbox.update: + id: spinbox_id + value: !lambda return x; + + lvgl: + ... + pages: + - id: thermostat_control + widgets: + - obj: + align: BOTTOM_MID + y: -50 + layout: + type: FLEX + flex_flow: ROW + flex_align_cross: CENTER + width: SIZE_CONTENT + height: SIZE_CONTENT + widgets: + - button: + id: spin_down + on_click: + - lvgl.spinbox.decrement: spinbox_id + widgets: + - label: + text: "-" + - spinbox: + id: spinbox_id + align: CENTER + text_align: CENTER + width: 50 + range_from: 15 + range_to: 35 + step: 0.5 + rollover: false + digits: 3 + decimal_places: 1 + on_value: + then: + - homeassistant.action: + action: climate.set_temperature + data: + temperature: !lambda return x; + entity_id: climate.room_thermostat + - button: + id: spin_up + on_click: + - lvgl.spinbox.increment: spinbox_id + widgets: + - label: + text: "+" + +.. _lvgl-cookbook-cover: + +Cover status and control +------------------------ + +To make a nice user interface for controlling Home Assistant covers you could use 3 buttons, which also display the state. + +.. figure:: images/lvgl_cook_cover.png + :align: center + +Just as in the previous examples, we need to get the state of the cover first. We'll use a numeric sensor to retrieve the current position of the cover and a text sensor to retrieve its current movement. We are particularly interested in the moving (*opening* and *closing*) states, because during these we'd like to change the label in the middle to show *STOP*. Otherwise, this button label will show the actual percentage of the opening. Additionally, we'll change the opacity of the labels on the *UP* and *DOWN* buttons depending on if the cover is fully open or closed. + +.. code-block:: yaml + + sensor: + - platform: homeassistant + id: cover_myroom_pos + entity_id: cover.myroom + attribute: current_position + on_value: + - if: + condition: + lambda: |- + return x == 100; + then: + - lvgl.widget.update: + id: cov_up_myroom + text_opa: 60% + else: + - lvgl.widget.update: + id: cov_up_myroom + text_opa: 100% + - if: + condition: + lambda: |- + return x == 0; + then: + - lvgl.widget.update: + id: cov_down_myroom + text_opa: 60% + else: + - lvgl.widget.update: + id: cov_down_myroom + text_opa: 100% + + text_sensor: + - platform: homeassistant + id: cover_myroom_state + entity_id: cover.myroom + on_value: + - if: + condition: + lambda: |- + return ((0 == x.compare(std::string{"opening"})) or (0 == x.compare(std::string{"closing"}))); + then: + - lvgl.label.update: + id: cov_stop_myroom + text: "STOP" + else: + - lvgl.label.update: + id: cov_stop_myroom + text: + format: "%.0f%%" + args: [ 'id(cover_myroom_pos).get_state()' ] + + lvgl: + ... + pages: + - id: room_page + widgets: + - label: + x: 10 + y: 6 + width: 70 + text: "My room" + text_align: CENTER + - button: + x: 10 + y: 30 + width: 70 + height: 68 + widgets: + - label: + id: cov_up_myroom + align: CENTER + text: "\uF077" + on_press: + then: + - homeassistant.action: + action: cover.open + data: + entity_id: cover.myroom + - button: + x: 10 + y: 103 + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_myroom + align: CENTER + text: STOP + on_press: + then: + - homeassistant.action: + action: cover.stop + data: + entity_id: cover.myroom + - button: + x: 10 + y: 178 + width: 70 + height: 68 + widgets: + - label: + id: cov_down_myroom + align: CENTER + text: "\uF078" + on_press: + then: + - homeassistant.action: + action: cover.close + data: + entity_id: cover.myroom + +.. _lvgl-cookbook-theme: + +Theme and style definitions +--------------------------- + +Since LVGL uses inheritance to apply styles across the widgets, it's possible to apply them at the top level, and only make modifications on demand, if necessary. + +.. figure:: images/lvgl_cook_gradient_styles.png + :align: center + +In this example we prepare a set of gradient styles in the *theme*, and make some modifications in a *style_definition* which can be applied in a batch to the desired widgets. Theme is applied automatically, and can be overridden manually with style definitions (read further to see how). + +.. code-block:: yaml + + lvgl: + ... + theme: + label: + text_font: my_font # set all your labels to use your custom defined font + button: + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_color: 0x0077b3 + border_width: 1 + text_color: 0xFFFFFF + pressed: # set some button colors to be different in pressed state + bg_color: 0x006699 + bg_grad_color: 0x00334d + checked: # set some button colors to be different in checked state + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + text_color: 0xfff300 + buttonmatrix: + bg_opa: TRANSP + border_color: 0x0077b3 + border_width: 0 + text_color: 0xFFFFFF + pad_all: 0 + items: # set all your buttonmatrix buttons to use your custom defined styles and font + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_color: 0x0077b3 + border_width: 1 + text_color: 0xFFFFFF + text_font: my_font + pressed: + bg_color: 0x006699 + bg_grad_color: 0x00334d + checked: + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + text_color: 0x005580 + switch: + bg_color: 0xC0C0C0 + bg_grad_color: 0xb0b0b0 + bg_grad_dir: VER + bg_opa: COVER + checked: + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + bg_grad_dir: VER + bg_opa: COVER + knob: + bg_color: 0xFFFFFF + bg_grad_color: 0xC0C0C0 + bg_grad_dir: VER + bg_opa: COVER + slider: + border_width: 1 + border_opa: 15% + bg_color: 0xcccaca + bg_opa: 15% + indicator: + bg_color: 0x1d5f96 + bg_grad_color: 0x03324A + bg_grad_dir: VER + bg_opa: COVER + knob: + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_color: 0x0077b3 + border_width: 1 + text_color: 0xFFFFFF + style_definitions: + - id: header_footer + bg_color: 0x2F8CD8 + bg_grad_color: 0x005782 + bg_grad_dir: VER + bg_opa: COVER + border_opa: TRANSP + radius: 0 + pad_all: 0 + pad_row: 0 + pad_column: 0 + border_color: 0x0077b3 + text_color: 0xFFFFFF + width: 100% + height: 30 + +Note that style definitions can contain common properties too, like positioning and sizing. + +.. _lvgl-cookbook-navigator: + +Page navigation footer +---------------------- + +If using multiple pages, a navigation bar can be useful at the bottom of the screen: + +.. figure:: images/lvgl_cook_pagenav.png + :align: center + +To save from repeating the same widgets on each page, there's the *top_layer* which is the *Always on Top* transparent page above all the pages. Everything you put on this page will be on top of all the others. + +For the navigation bar we can use a :ref:`lvgl-widget-buttonmatrix`. Note how the *header_footer* style definition is being applied to the widget and its children objects, and how a few more styles are configured manually at the main widget: + +.. code-block:: yaml + + lvgl: + ... + top_layer: + widgets: + - buttonmatrix: + align: bottom_mid + styles: header_footer + pad_all: 0 + outline_width: 0 + id: top_layer + items: + styles: header_footer + rows: + - buttons: + - id: page_prev + text: "\uF053" + on_press: + then: + lvgl.page.previous: + - id: page_home + text: "\uF015" + on_press: + then: + lvgl.page.show: main_page + - id: page_next + text: "\uF054" + on_press: + then: + lvgl.page.next: + +For this example to appear correctly, use the theme and style options from :ref:`above ` and LVGL's own library :ref:`fonts `. + +.. _lvgl-cookbook-statico: + +API connection status icon +-------------------------- + +The top layer is useful to show status icons visible on all pages: + +.. figure:: images/lvgl_cook_statico.png + :align: center + +In the example below, we only show the icon when the connection with Home Assistant is established: + +.. code-block:: yaml + + api: + on_client_connected: + - if: + condition: + lambda: 'return (0 == client_info.find("Home Assistant "));' + then: + - lvgl.widget.show: lbl_hastatus + on_client_disconnected: + - if: + condition: + lambda: 'return (0 == client_info.find("Home Assistant "));' + then: + - lvgl.widget.hide: lbl_hastatus + + lvgl: + ... + top_layer: + widgets: + - label: + text: "\uF1EB" + id: lbl_hastatus + hidden: true + align: top_right + x: -2 + y: 7 + text_align: right + text_color: 0xFFFFFF + +Of note: + +- The widget starts *hidden* at boot and it's only shown when triggered by connection with the API. +- Alignment of the widget: since the *align* option is given, the *x* and *y* options are used to position the widget relative to the calculated position. + +.. _lvgl-cookbook-titlebar: + +Title bar for each page +----------------------- + +Each page can have its own title bar: + +.. figure:: images/lvgl_cook_titlebar.png + :align: center + +To put a title bar behind the status icon, we need to add it to each page, also containing the label with a unique title: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: main_page + widgets: + - obj: + align: TOP_MID + styles: header_footer + widgets: + - label: + text: "ESPHome LVGL Display" + align: CENTER + text_align: CENTER + text_color: 0xFFFFFF + ... + - id: second_page + widgets: + - obj: + align: TOP_MID + styles: header_footer + widgets: + - label: + text: "A second page" + align: CENTER + text_align: CENTER + text_color: 0xFFFFFF + ... + +For this example to work, use the theme and style options from :ref:`above `. + +.. _lvgl-cookbook-flex: + +Flex layout positioning +----------------------- + +:ref:`lvgl-layouts` aim to position widgets automatically, eliminating the need to specify coordinates to position each widget. This is a great way to simplify your configuration containing many widgets as it allows you to even omit alignment options. + +.. figure:: images/lvgl_cook_flex_layout.png + :align: center + +This example illustrates a control panel for three covers, made up of labels and discrete buttons. Although a button matrix could also be suitable for this, you might still prefer fully-featured individual buttons, as they offer a wider range of customization possibilities as seen in the :ref:`lvgl-cookbook-cover` example. Here we use the **Flex** layout: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: room_page + widgets: + - obj: # a properly placed coontainer object for all these controls + align: CENTER + width: 240 + height: 256 + x: 4 + y: 4 + pad_all: 3 + pad_row: 6 + pad_column: 8 + bg_opa: TRANSP + border_opa: TRANSP + layout: # enable the FLEX layout for the children widgets + type: FLEX + flex_flow: COLUMN_WRAP # the order of the widgets starts top left + flex_align_cross: CENTER # they sould be centered + widgets: + - label: + text: "East" + - button: + id: but_cov_up_east + width: 70 # choose the button dimensions so + height: 68 # they fill the columns nincely as they flow + widgets: + - label: + id: cov_up_east + align: CENTER + text: "\U000F005D" # mdi:arrow-up + - button: + id: but_cov_stop_east + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_east + align: CENTER + text: "\U000F04DB" # mdi:stop + - button: + id: but_cov_down_east + width: 70 + height: 68 + widgets: + - label: + id: cov_down_east + align: CENTER + text: "\U000F0045" # mdi:arrow-down + + - label: + text: "South" + - button: + id: but_cov_up_south + width: 70 + height: 68 + widgets: + - label: + id: cov_up_south + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_south + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_south + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_south + width: 70 + height: 68 + widgets: + - label: + id: cov_down_south + align: CENTER + text: "\U000F0045" + + - label: + text: "West" + - button: + id: but_cov_up_west + width: 70 + height: 68 + widgets: + - label: + id: cov_up_west + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_west + width: 70 + height: 68 + widgets: + - label: + id: cov_stop_west + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_west + width: 70 + height: 68 + widgets: + - label: + id: cov_down_west + align: CENTER + text: "\U000F0045" + +This saved you from a considerable amount of manual calculation of widget positioning which would otherwise be required to place them manually with ``x`` and ``y``! You only need to determine a common width and height for your widgets to distribute them on the page as you prefer. (:ref:`lvgl-cookbook-icontext` below shows how to use custom icons.) + +.. _lvgl-cookbook-grid: + +Grid layout positioning +----------------------- + +But there's even more! With the **Grid** layout, you don't need to specify width and height for your widgets. All you have to do is divide the space into rows and columns; the widgets can be automatically be sized to fit into cells defined by these rows and columns. The same task from above, in a fully automated grid, looks like this: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: room_page + widgets: + - obj: # a properly placed coontainer object for all these controls + align: CENTER + width: 240 + height: 256 + pad_all: 6 + pad_row: 6 + pad_column: 8 + bg_opa: TRANSP + border_opa: TRANSP + layout: # enable the GRID layout for the children widgets + type: GRID # split the rows and the columns proportionally + grid_columns: [FR(1), FR(1), FR(1)] # equal + grid_rows: [FR(10), FR(30), FR(30), FR(30)] # like percents + widgets: + - label: + text: "East" + grid_cell_column_pos: 0 # place the widget in + grid_cell_row_pos: 0 # the corresponding cell + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + - button: + id: but_cov_up_east + grid_cell_column_pos: 0 + grid_cell_row_pos: 1 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_up_east + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_east + grid_cell_column_pos: 0 + grid_cell_row_pos: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_stop_east + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_east + grid_cell_column_pos: 0 + grid_cell_row_pos: 3 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_down_east + align: CENTER + text: "\U000F0045" + + - label: + text: "South" + grid_cell_column_pos: 1 + grid_cell_row_pos: 0 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + - button: + id: but_cov_up_south + grid_cell_column_pos: 1 + grid_cell_row_pos: 1 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_up_south + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_south + grid_cell_column_pos: 1 + grid_cell_row_pos: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_stop_south + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_south + grid_cell_column_pos: 1 + grid_cell_row_pos: 3 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_down_south + align: CENTER + text: "\U000F0045" + + - label: + text: "West" + grid_cell_column_pos: 2 + grid_cell_row_pos: 0 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + - button: + id: but_cov_up_west + grid_cell_column_pos: 2 + grid_cell_row_pos: 1 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_up_west + align: CENTER + text: "\U000F005D" + - button: + id: but_cov_stop_west + grid_cell_column_pos: 2 + grid_cell_row_pos: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_stop_west + align: CENTER + text: "\U000F04DB" + - button: + id: but_cov_down_west + grid_cell_column_pos: 2 + grid_cell_row_pos: 3 + grid_cell_x_align: STRETCH + grid_cell_y_align: STRETCH + widgets: + - label: + id: cov_down_west + align: CENTER + text: "\U000F0045" + +The big advantage here is that whenever you need to add, for example, an extra column of buttons for a new cover, you just simply append it to the ``grid_columns`` variable, and add the corresponding widgets as above. With ``STRETCH`` their sizes and positions will automatically be calculated to fill in the cells, while the parent's ``pad_all``, ``pad_row`` and ``pad_column`` can help with spacing between them. See :ref:`lvgl-cookbook-weather` further down this page for another example relying on **Grid**. + +.. _lvgl-cookbook-btlg: + +ESPHome boot screen +------------------- + +To display a boot image with a spinner animation which disappears automatically after a few moments or on touch of the screen you can use the *top layer*. The trick is to put a base :ref:`lvgl-widget-obj` full screen and child :ref:`lvgl-widget-image` widget in its middle as the last item of the widgets list, so they draw on top of all the others. To make it automatically disappear afer boot, you use ESPHome's ``on_boot`` trigger: + +.. code-block:: yaml + + esphome: + ... + on_boot: + - delay: 5s + - lvgl.widget.hide: boot_screen + + image: + - file: https://esphome.io/_static/favicon-512x512.png + id: boot_logo + resize: 200x200 + type: RGB565 + use_transparency: true + + lvgl: + ... + top_layer: + widgets: + ... # make sure it's the last one in this list: + - obj: + id: boot_screen + x: 0 + y: 0 + width: 100% + height: 100% + bg_color: 0xffffff + bg_opa: COVER + radius: 0 + pad_all: 0 + border_width: 0 + widgets: + - image: + align: CENTER + src: boot_logo + y: -40 + - spinner: + align: CENTER + y: 95 + height: 50 + width: 50 + spin_time: 1s + arc_length: 60deg + arc_width: 8 + indicator: + arc_color: 0x18bcf2 + arc_width: 8 + on_press: + - lvgl.widget.hide: boot_screen + +.. _lvgl-cookbook-icontext: + +MDI icons in text +----------------- + +ESPHome's :ref:`font renderer ` allows you to use any OpenType/TrueType font file for your text. This is very flexible because you can prepare various sets of fonts at different sizes each with a different number of glyphs; this is important as it may help to conserve flash memory space. + +One example is when you'd like some MDI icons to be used in line with the text (similar to how LVGL's internal fonts and symbols coexist). You can use a font of your choice; choose the symbols/icons from MDI you want and mix them in a single sized set. + +.. figure:: images/lvgl_cook_font_roboto_mdi.png + :align: center + +In the example below, we use the default set of glyphs from RobotoCondensed-Regular and append some extra symbols to it from MDI. Then we display these inline with the text by escaping their codepoints: + +.. code-block:: yaml + + font: + - file: "fonts/RobotoCondensed-Regular.ttf" + id: roboto_icons_42 + size: 42 + bpp: 4 + extras: + - file: "fonts/materialdesignicons-webfont.ttf" + glyphs: [ + "\U000F02D1", # mdi-heart + "\U000F05D4", # mdi-airplane-landing + ] + + lvgl: + ... + pages: + - id: main_page + widgets: + - label: + text: "Just\U000f05d4here. Already\U000F02D1this." + align: CENTER + text_align: CENTER + text_font: roboto_icons_42 + +.. tip:: + + Follow these steps to choose your MDI icons: + + - To lookup your icons, use the `Pictogrammers `_ site. Click on the desired icon and note its codepoint (it's the hexadecimal number near the download options). + - To get the TrueType font with all the icons in it, head on to the `Pictogrammers GitHub repository `_ and from a recent version folder, download the ``materialdesignicons-webfont.ttf`` file and place it in your ESPHome config directory under a folder named ``fonts`` (to match the example above). + - To use the desired icon, prepend the copied codepoint with ``\U000``. The Unicode character escape sequence has to start with capital ``\U`` and have exactly 8 hexadecimal digits. + - To translate the escape sequence into the real glyph, make sure you enclose your strings in double quotes. + +.. _lvgl-cookbook-ckboxmark: + +Restore checkbox mark +--------------------- + +If you configure a custom font as the ``default_font`` used by LVGL and this font does not contain the `FontAwesome `__ symbols, you may observe that some widgets won't display correctly; specifically :ref:`lvgl-widget-checkbox` won't show the checkmark when it's checked. + +To work around this issue, simply import only the checkmark symbol in the desired size and apply it through :ref:`lvgl-cookbook-theme` to all the checkboxes in the configuration: + +.. code-block:: yaml + + font: + - file: 'fonts/FontAwesome5-Solid+Brands+Regular.woff' + id: fontawesome_checkmark + size: 18 + bpp: 4 + glyphs: [ + "\uF00C", # ckeckmark, for checkbox + ] + + lvgl: + ... + theme: + checkbox: + indicator: + checked: + text_font: fontawesome_checkmark + +You could of course simply apply one of the built-in ``montserrat_`` packs, but that would not be beneficial on the binary size - it would uselessly include the entire set of glyphs in the flash. + +.. _lvgl-cookbook-iconstat: + +Toggle state icon button +------------------------ + +.. figure:: images/lvgl_cook_font_binstat.png + :align: left + +A common use case for icons is a status display. For example, a checkable (toggle) button will display different icons based on the status of a light or switch. To put an icon on a button you use a :ref:`lvgl-widget-label` widget as the child of the :ref:`lvgl-widget-button`. The coloring can already be different thanks to the :ref:`lvgl-cookbook-theme` where you can set a different color for the ``checked`` state. Additionally, by using a ``text_sensor`` to import the state from Home Assistant, we can not only track the ``on`` state, but also the ``unavailable`` or ``unknown`` states to apply *disabled styles* for these cases. + +If we take our previous :ref:`lvgl-cookbook-binent` example, we can modify it like this: + +.. code-block:: yaml + + font: + - file: "custom/materialdesignicons-webfont.ttf" + id: mdi_42 + size: 42 + bpp: 4 + glyphs: [ + "\U000F0335", # mdi-lightbulb + "\U000F0336", # mdi-lightbulb-outline + ] + + text_sensor: + - platform: homeassistant + id: ts_remote_light + entity_id: light.remote_light + on_value: + then: + - lvgl.widget.update: + id: btn_lightbulb + state: + checked: !lambda return (0 == x.compare(std::string{"on"})); + disabled: !lambda return ((0 == x.compare(std::string{"unavailable"})) or (0 == x.compare(std::string{"unknown"}))); + - lvgl.label.update: + id: lbl_lightbulb + text: !lambda |- + static char buf[10]; + std::string icon; + if (0 == x.compare(std::string{"on"})) { + icon = "\U000F0335"; + } else { + icon = "\U000F0336"; + } + snprintf(buf, sizeof(buf), "%s", icon.c_str()); + return buf; + + lvgl: + ... + pages: + - id: room_page + widgets: + - button: + x: 110 + y: 40 + width: 90 + height: 50 + checkable: true + id: btn_lightbulb + widgets: + - label: + id: lbl_lightbulb + align: CENTER + text_font: mdi_42 + text: "\U000F0336" # mdi-lightbulb-outline + on_short_click: + - homeassistant.action: + action: light.toggle + data: + entity_id: light.remote_light + +.. _lvgl-cookbook-iconbatt: + +Battery status icon +------------------- + +.. figure:: images/lvgl_cook_font_batt.png + :align: left + +Another example for using MDI icons is to display battery percentage in 10 steps. We need to have a font containing the glyphs corresponding to the different battery percentage levels, and we need a sensor to import the battery status from Home Assistant into a numeric value. We use a :ref:`lambda ` to return the codepoint of the corresponding glyph based on the sensor value: + +.. code-block:: yaml + + font: + - file: "fonts/materialdesignicons-webfont.ttf" + id: battery_icons_20 + size: 20 + bpp: 4 + glyphs: [ + "\U000F007A", # mdi-battery-10 + "\U000F007B", # mdi-battery-20 + "\U000F007C", # mdi-battery-30 + "\U000F007D", # mdi-battery-40 + "\U000F007E", # mdi-battery-50 + "\U000F007F", # mdi-battery-60 + "\U000F0080", # mdi-battery-70 + "\U000F0081", # mdi-battery-80 + "\U000F0082", # mdi-battery-90 + "\U000F0079", # mdi-battery (full) + "\U000F008E", # mdi-battery-outline + "\U000F0091", # mdi-battery-unknown + ] + + sensor: + - platform: homeassistant + id: sns_battery_percentage + entity_id: sensor.device_battery + on_value: + - lvgl.label.update: + id: lbl_battery_status + text: !lambda |- + static char buf[10]; + std::string icon; + if (x == 100.0) { + icon = "\U000F0079"; // mdi-battery (full) + } else if (x > 90) { + icon = "\U000F0082"; // mdi-battery-90 + } else if (x > 80) { + icon = "\U000F0081"; // mdi-battery-80 + } else if (x > 70) { + icon = "\U000F0080"; // mdi-battery-70 + } else if (x > 60) { + icon = "\U000F007F"; // mdi-battery-60 + } else if (x > 50) { + icon = "\U000F007E"; // mdi-battery-50 + } else if (x > 40) { + icon = "\U000F007D"; // mdi-battery-40 + } else if (x > 30) { + icon = "\U000F007C"; // mdi-battery-30 + } else if (x > 20) { + icon = "\U000F007B"; // mdi-battery-20 + } else if (x > 10) { + icon = "\U000F007A"; // mdi-battery-10 + } else if (x > 0) { + icon = "\U000F008E"; // mdi-battery-outline + } else { + icon = "\U000F0091"; // mdi-battery-unknown + } + snprintf(buf, sizeof(buf), "%s", icon.c_str()); + return buf; + + lvgl: + ... + pages: + - id: battery_page + widgets: + - label: + id: lbl_battery_status + align: TOP_RIGHT + y: 40 + x: -10 + text_font: battery_icons_20 + text: "\U000F0091" # start with mdi-battery-unknown + +.. _lvgl-cookbook-animbatt: + +Battery charging animation +-------------------------- + +.. figure:: images/lvgl_cook_animimg_batt.gif + :align: left + +To have an animation illustrating a battery charging, you can use :ref:`lvgl-widget-animimg` with a set of :ref:`images rendered from MDI ` showing battery levels: + +.. code-block:: yaml + + image: + - file: mdi:battery-10 + id: batt_10 + resize: 20x20 + - file: mdi:battery-20 + id: batt_20 + resize: 20x20 + - file: mdi:battery-30 + id: batt_30 + resize: 20x20 + - file: mdi:battery-40 + id: batt_40 + resize: 20x20 + - file: mdi:battery-50 + id: batt_50 + resize: 20x20 + - file: mdi:battery-60 + id: batt_60 + resize: 20x20 + - file: mdi:battery-70 + id: batt_70 + resize: 20x20 + - file: mdi:battery-80 + id: batt_80 + resize: 20x20 + - file: mdi:battery-90 + id: batt_90 + resize: 20x20 + - file: mdi:battery + id: batt_full + resize: 20x20 + - file: mdi:battery-outline + id: batt_empty + resize: 20x20 + + lvgl: + ... + pages: + - id: battery_page + widgets: + - animimg: + align: TOP_RIGHT + y: 41 + x: -10 + id: ani_battery_charging + src: [ + batt_empty, + batt_10, + batt_20, + batt_30, + batt_40, + batt_50, + batt_60, + batt_70, + batt_80, + batt_90, + batt_full + ] + duration: 2200ms + +.. tip:: + + You can use both battery examples above placed on top of each other, and switch their ``hidden`` flag depending if the charger is connected or not: + + .. code-block:: yaml + + binary_sensor: + - platform: ... + id: charger_connected + on_press: + then: + - lvgl.widget.show: ani_battery_charging + - lvgl.widget.hide: lbl_battery_status + on_release: + then: + - lvgl.widget.show: lbl_battery_status + - lvgl.widget.hide: ani_battery_charging + + Use ``x``, ``y``, ``align`` widget properties for precise positioning. + +.. _lvgl-cookbook-clock: + +An analog clock +--------------- + +Using the :ref:`lvgl-widget-meter` and :ref:`lvgl-widget-label` widgets, we can create an analog clock which shows the date too. + +.. figure:: images/lvgl_cook_clock.png + :align: center + +The :ref:`lvgl-widget-meter` has three scales: one for minutes ticks and hand, ranged between ``0`` and ``60``; one for the hour ticks and the labels as majors, ranged between ``1`` and ``12``; and a higher resolution scale for the hour hand, ranged between ``0`` and ``720``, to be able to naturally position the hand in between the hours. The second scale doesn't have an indicator, while the third scale doesn't have ticks nor labels. + +The script runs at the beginning of every minute to update the line positions for each hand as well as the respective text. + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: clock_page + widgets: + - obj: # clock container + height: SIZE_CONTENT + width: 240 + align: CENTER + pad_all: 0 + border_width: 0 + bg_color: 0xFFFFFF + widgets: + - meter: # clock face + height: 220 + width: 220 + align: CENTER + bg_opa: TRANSP + border_width: 0 + text_color: 0x000000 + scales: + - range_from: 0 # minutes scale + range_to: 60 + angle_range: 360 + rotation: 270 + ticks: + width: 1 + count: 61 + length: 10 + color: 0x000000 + indicators: + - line: + id: minute_hand + width: 3 + color: 0xa6a6a6 + r_mod: -4 + value: 0 + - range_from: 1 # hours scale for labels + range_to: 12 + angle_range: 330 + rotation: 300 + ticks: + width: 1 + count: 12 + length: 1 + major: + stride: 1 + width: 4 + length: 10 + color: 0xC0C0C0 + label_gap: 12 + - range_from: 0 # hi-res hours scale for hand + range_to: 720 + angle_range: 360 + rotation: 270 + ticks: + count: 0 + indicators: + - line: + id: hour_hand + width: 5 + color: 0xa6a6a6 + r_mod: -30 + value: 0 + - label: + styles: date_style + id: day_label + y: -30 + - label: + id: date_label + styles: date_style + y: 30 + + time: + - platform: homeassistant + id: time_comp + on_time_sync: + - script.execute: time_update + on_time: + - minutes: '*' + seconds: 0 + then: + - script.execute: time_update + + script: + - id: time_update + then: + - lvgl.indicator.update: + id: minute_hand + value: !lambda |- + return id(time_comp).now().minute; + - lvgl.indicator.update: + id: hour_hand + value: !lambda |- + auto now = id(time_comp).now(); + return std::fmod(now.hour, 12) * 60 + now.minute; + - lvgl.label.update: + id: date_label + text: !lambda |- + static const char * const mon_names[] = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"}; + static char date_buf[8]; + auto now = id(time_comp).now(); + snprintf(date_buf, sizeof(date_buf), "%s %2d", mon_names[now.month-1], now.day_of_month); + return date_buf; + - lvgl.label.update: + id: day_label + text: !lambda |- + static const char * const day_names[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; + return day_names[id(time_comp).now().day_of_week - 1]; + +.. _lvgl-cookbook-keypad: + +A numeric input keypad +---------------------- + +The :ref:`lvgl-widget-buttonmatrix` widget can work together with the :ref:`key_collector` to collect the button presses as key press sequences. It sends the ``text`` of the buttons (or ``key_code`` where configured) to the key collector. + +.. figure:: images/lvgl_cook_keypad.png + :align: center + +If you key in the correct sequence, the :ref:`lvgl-widget-led` widget will change color accordingly: + +.. code-block:: yaml + + lvgl: + ... + pages: + - id: keypad_page + widgets: + - led: + id: lvgl_led + x: 30 + y: 47 + color: 0xFF0000 + brightness: 70% + - obj: + width: 140 + height: 25 + align_to: + id: lvgl_led + align: OUT_RIGHT_MID + x: 17 + border_width: 1 + border_color: 0 + border_opa: 50% + pad_all: 0 + bg_opa: 80% + bg_color: 0xFFFFFF + shadow_color: 0 + shadow_opa: 50% + shadow_width: 10 + shadow_spread: 3 + radius: 5 + widgets: + - label: + id: lvgl_label + align: CENTER + text: "Enter code and \uF00C" + text_align: CENTER + - buttonmatrix: + id: lvgl_keypad + x: 20 + y: 85 + width: 200 + height: 190 + items: + pressed: + bg_color: 0xFFFF00 + rows: + - buttons: + - text: 1 + control: + no_repeat: true + - text: 2 + control: + no_repeat: true + - text: 3 + control: + no_repeat: true + - buttons: + - text: 4 + control: + no_repeat: true + - text: 5 + control: + no_repeat: true + - text: 6 + control: + no_repeat: true + - buttons: + - text: 7 + control: + no_repeat: true + - text: 8 + control: + no_repeat: true + - text: 9 + control: + no_repeat: true + - buttons: + - text: "\uF55A" + key_code: "*" + control: + no_repeat: true + - text: 0 + control: + no_repeat: true + - text: "\uF00C" + key_code: "#" + control: + no_repeat: true + + key_collector: + - source_id: lvgl_keypad + min_length: 4 + max_length: 4 + end_keys: "#" + end_key_required: true + back_keys: "*" + allowed_keys: "0123456789*#" + timeout: 5s + on_progress: + - if: + condition: + lambda: return (0 != x.compare(std::string{""})); + then: + - lvgl.label.update: + id: lvgl_label + text: !lambda 'return x.c_str();' + else: + - lvgl.label.update: + id: lvgl_label + text: "Enter code and \uF00C" + on_result: + - if: + condition: + lambda: return (0 == x.compare(std::string{"1234"})); + then: + - lvgl.led.update: + id: lvgl_led + color: 0x00FF00 + else: + - lvgl.led.update: + id: lvgl_led + color: 0xFF0000 + +Of note: + +- A base object ``obj`` is used as a parent for the label; this allows proper centering of the label as well as emphasizing it with shadows independently of the label's dimensions. +- ``align_to`` is used to align the label to the ``led`` vertically. +- Changing the background color of the buttons in ``pressed`` state. +- Use of the ``key_code`` configuration to send a different character to ``key_collector`` instead of the displayed symbol. + +.. _lvgl-cookbook-weather: + +Weather forecast panel +---------------------- + +Another example relying on the **Grid** layout can be a weather panel showing the forecast through the `OpenWeatherMap integration `__ of Home Assistant. + +.. figure:: images/lvgl_cook_weather.png + :align: center + +All the information displayed here could be retrieved to local ``platform: homeassistant`` sensors as desribed in several examples in this Cookbook, however, this time we take a different approach. Instead of pulling the data by ESPHome, we'll be pushing it from Home Assistant, to native :doc:`/components/text/lvgl` components. + +The weather condition icons we use are from MDI. We import just the ones corresponding to the weather conditions supported by the Weather integration in Home Assistant. For all the other labels you can use any :ref:`font ` of your choice. + +.. code-block:: yaml + + binary_sensor: + - platform: status + name: Status sensor + + font: + - file: "fonts/materialdesignicons-webfont.ttf" + id: icons_100 + size: 100 + bpp: 4 + glyphs: [ + "\U000F0594", # clear-night + "\U000F0590", # cloudy + "\U000F0F2F", # exceptional + "\U000F0591", # fog + "\U000F0592", # hail + "\U000F0593", # lightning + "\U000F067E", # lightning-rainy + "\U000F0595", # partlycloudy + "\U000F0596", # pouring + "\U000F0597", # rainy + "\U000F0598", # snowy + "\U000F067F", # snowy-rainy + "\U000F0599", # sunny + "\U000F059D", # windy + "\U000F059E", # windy-variant + "\U000F14E4", # sunny-off + ] + + lvgl: + ... + pages: + - id: weather_forecast + widgets: + - obj: + align: CENTER + width: 228 + height: 250 + pad_all: 10 + pad_column: 0 + layout: + type: GRID + grid_rows: [FR(48), FR(13), FR(13), FR(13), FR(13)] + grid_columns: [FR(10), FR(40), FR(40), FR(10)] + widgets: + - label: + text: "\U000F14E4" + id: lbl_weather_forecast_condition_icon + text_font: icons_100 + text_align: CENTER + grid_cell_row_pos: 0 + grid_cell_column_pos: 0 + grid_cell_column_span: 2 + grid_cell_x_align: CENTER + grid_cell_y_align: START + + - label: + text: "Unknown" + id: lbl_weather_forecast_condition_name + text_align: CENTER + grid_cell_row_pos: 0 + grid_cell_column_pos: 2 + grid_cell_column_span: 2 + grid_cell_x_align: STRETCH + grid_cell_y_align: CENTER + + - label: + text: "Feels like:" + grid_cell_row_pos: 1 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_forecast_tempap + text_align: RIGHT + grid_cell_row_pos: 1 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + - label: + text: "Maximum:" + grid_cell_row_pos: 2 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_forecast_temphi + text_align: RIGHT + grid_cell_row_pos: 2 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + - label: + text: "Minimum:" + grid_cell_row_pos: 3 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_forecast_templo + text_align: RIGHT + grid_cell_row_pos: 3 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + - label: + text: "Now:" + grid_cell_row_pos: 4 + grid_cell_column_pos: 1 + + - label: + text: "--.- °C" + id: lbl_weather_outdnoor_now + text_align: RIGHT + grid_cell_row_pos: 4 + grid_cell_column_pos: 2 + grid_cell_x_align: STRETCH + + text: + - platform: lvgl + name: fr_cond_icon + widget: lbl_weather_forecast_condition_icon + mode: text + - platform: lvgl + name: fr_cond_name + widget: lbl_weather_forecast_condition_name + mode: text + - platform: lvgl + name: fr_tempap + widget: lbl_weather_forecast_tempap + mode: text + - platform: lvgl + name: fr_temphi + widget: lbl_weather_forecast_temphi + mode: text + - platform: lvgl + name: fr_templo + widget: lbl_weather_forecast_templo + mode: text + - platform: lvgl + name: wd_out_now + widget: lbl_weather_outdnoor_now + mode: text + +If you look carefully at the ``grid_columns`` variable, you'll notice that there are two thinner columns at left and right (``FR(10)``). Reason is to add some space to the labels from the edges. And that's why we had to use ``grid_cell_column_span`` for the widgets in the first row, to take up the space of multiple columns. + +These labels will appear in Home Assistant as `editable text components `__, which makes it very easy to update them with the ``text.set_value`` action. For this purpose, we add the following `automations `__ to Home Assistant: + +.. code-block:: yaml + + - id: weather_cond_forecast + alias: 'Weather Forecast Condition' + trigger: + - platform: state + entity_id: sensor.openweathermap_forecast_condition + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_cond_icon + data: + value: > + {% set d = { + "clear-night": "\U000F0594", + "cloudy": "\U000F0590", + "exceptional": "\U000F0F2F", + "fog": "\U000F0591", + "hail": "\U000F0592", + "lightning": "\U000F0593", + "lightning-rainy": "\U000F067E", + "partlycloudy": "\U000F0595", + "pouring": "\U000F0596", + "rainy": "\U000F0597", + "snowy": "\U000F0598", + "snowy-rainy": "\U000F067F", + "sunny": "\U000F0599", + "windy": "\U000F059D", + "windy-variant": "\U000F059E", + "unknown": "\U000F14E4", + "unavailable": "\U000F14E4", + } %} + {{ d.get( states('sensor.openweathermap_forecast_condition') ) }} + + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_cond_name + data: + value: > + {% set d = { + "clear-night": "Clear Night", + "cloudy": "Cloudy", + "exceptional": "Except ional", + "fog": "Fog", + "hail": "Hail", + "lightning": "Lightning", + "lightning-rainy": "Lightning rainy", + "partlycloudy": "Partly cloudy", + "pouring": "Pouring", + "rainy": "Rainy", + "snowy": "Snowy", + "snowy-rainy": "Snowy rainy", + "sunny": "Sunny", + "windy": "Windy", + "windy-variant": "Windy cloudy", + "unknown": "Unknown", + "unavailable": "Unavai lable", + } %} + {{ d.get( states('sensor.openweathermap_forecast_condition') ) }} + + - id: weather_temp_feels_like_forecast + alias: 'Weather Temperature Feels Like' + trigger: + - platform: state + entity_id: sensor.openweathermap_feels_like_temperature + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_tempap + data: + value: "{{states('sensor.openweathermap_feels_like_temperature') | round(1)}} °C" + + - id: weather_temp_forecast_temphi + alias: 'Weather Temperature Forecast Hi' + trigger: + - platform: state + entity_id: sensor.openweathermap_forecast_temperature + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_temphi + data: + value: "{{states('sensor.openweathermap_forecast_temperature') | round(1)}} °C" + + - id: weather_temp_forecast_templo + alias: 'Weather Temperature Forecast Lo' + trigger: + - platform: state + entity_id: sensor.openweathermap_forecast_temperature_low + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_fr_templo + data: + value: "{{states('sensor.openweathermap_forecast_temperature_low') | round(1)}} °C" + + - id: weather_temp_outdoor_now + alias: 'Weather Temperature Now' + trigger: + - platform: state + entity_id: sensor.outdoor_temperature + - platform: state + entity_id: binary_sensor.your_esphome_node_status_sensor + to: 'on' + action: + - action: text.set_value + target: + entity_id: + - text.your_esphome_node_wd_out_now + data: + value: "{{states('sensor.outdoor_temperature') | round(1)}} °C" + +The automations will be triggered to update the labels every time the corresponding entities change, and when the ESPHome comes alive - the reason you also need the :doc:`/components/binary_sensor/status`. Note that you'll need to adjust the entity IDs corresponding to your ESPHome node depedning on how you :ref:`configured it to use its name`. + +.. _lvgl-cookbook-idlescreen: + +Turn off screen when idle +------------------------- + +LVGL has a notion of screen inactivity -- in other words, the time since the last user interaction with the screen is tracked. This can be used to dim the display backlight or turn it off after a moment of inactivity (like a screen saver). Every use of an input device (touchscreen, rotary encoder) counts as an activity and resets the inactivity counter. Note that it's important to use the ``on_release`` trigger to accomplish this task. With a template number you can make the timeout adjustable by the users. + +.. code-block:: yaml + + lvgl: + ... + on_idle: + timeout: !lambda "return (id(display_timeout).state * 1000);" + then: + - logger.log: "LVGL is idle" + - light.turn_off: display_backlight + - lvgl.pause: + + touchscreen: + - platform: ... + on_release: + - if: + condition: lvgl.is_paused + then: + - logger.log: "LVGL resuming" + - lvgl.resume: + - lvgl.widget.redraw: + - light.turn_on: display_backlight + + light: + - platform: ... + id: display_backlight + + number: + - platform: template + name: LVGL Screen timeout + optimistic: true + id: display_timeout + unit_of_measurement: "s" + initial_value: 45 + restore_value: true + min_value: 10 + max_value: 180 + step: 5 + mode: box + +.. _lvgl-cookbook-antiburn: + +Prevent burn-in of LCD +---------------------- + +You can use this to protect and prolong the lifetime of the LCD screens, thus being more green and generating less hazardous waste. + +A common problem with wall-mounted LCD screens is that they display the same picture 99.999% of the time. Even if somebody turns off the backlight during the night or dark periods, the LCD screen keeps showing the same picture, but seen by nobody. This scenario is likely to lead to burn-in after a few years of operation. + +One way to mitigate this is to *exercise* the pixels periodically by displaying different content. ``show_snow`` option during LVGL paused state was developed with this in mind; it displays randomly colored pixels across the entire screen in order to minimize screen burn-in by exercising each individual pixel. + +In the example below, pixel training is done four times for a half an hour every night; it can be stopped by touching the screen. + +.. code-block:: yaml + + time: + - platform: ... + on_time: + - hours: 2,3,4,5 + minutes: 5 + seconds: 0 + then: + - switch.turn_on: switch_antiburn + - hours: 2,3,4,5 + minutes: 35 + seconds: 0 + then: + - switch.turn_off: switch_antiburn + + switch: + - platform: template + name: Antiburn + id: switch_antiburn + icon: mdi:television-shimmer + optimistic: true + entity_category: "config" + turn_on_action: + - logger.log: "Starting Antiburn" + - if: + condition: lvgl.is_paused + then: + - lvgl.resume: + - lvgl.widget.redraw: + - delay: 1s + - lvgl.pause: + show_snow: true + turn_off_action: + - logger.log: "Stopping Antiburn" + - if: + condition: lvgl.is_paused + then: + - lvgl.resume: + - lvgl.widget.redraw: + - delay: 1s + - lvgl.pause: + + touchscreen: + - platform: ... + on_release: + then: + - if: + condition: lvgl.is_paused + then: + - lvgl.resume: + - lvgl.widget.redraw: + +You can combine it with the previous example to turn off the backlight, so the users don't actually notice this. + +See Also +-------- + +- :doc:`/components/lvgl/index` +- :ref:`config-lambda` +- :ref:`automation` +- :ref:`key_collector` +- `What is Image Sticking, Image Burn-in, an After Image, or a Ghost Image on an LCD? `__ +- `Image persistence `__ + +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index fb936ba97b..e14b79a9f8 100644 --- a/index.rst +++ b/index.rst @@ -1155,6 +1155,7 @@ Cookbook .. imgtable:: Lambda Magic: Tips and Tricks, cookbook/lambda_magic, head-lightbulb-outline.svg, dark-invert + LVGL Recipes, cookbook/lvgl, lvgl.png Garage Door Template Cover, cookbook/garage-door, garage-variant.svg, dark-invert Time & Temperature on OLED Display, cookbook/display_time_temp_oled, display_time_temp_oled_2.jpg ESP32 Water Leak Detector, cookbook/leak-detector-m5stickC, leak-detector-m5stickC_main_index.jpg diff --git a/lint.py b/lint.py index 106a4017aa..390cdf95a4 100644 --- a/lint.py +++ b/lint.py @@ -396,6 +396,7 @@ def lint_directive_formatting(fname, content): exclude=[ "components/web_server.rst", "components/image.rst", + "cookbook/lvgl.rst", ], ) def lint_esphome_io_link(fname, match): From 719e00586503333ff035ca4887dc587fa419ba8f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 16 Sep 2024 10:01:37 +1200 Subject: [PATCH 43/46] Bump version to 2024.9.0b2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index a4851c0255..cafd930622 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2024.9.0b1 +PROJECT_NUMBER = 2024.9.0b2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index d1636fb0b2..a841742be1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.9.0b1 +ESPHOME_REF = 2024.9.0b2 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 7824c0829d..c95033dec7 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.9.0b1 \ No newline at end of file +2024.9.0b2 \ No newline at end of file diff --git a/conf.py b/conf.py index 3cb19ec093..118c1e11b5 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.9" # The full version, including alpha/beta/rc tags. -release = "2024.9.0b1" +release = "2024.9.0b2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 0ca01e4a4112c65f27f32480e78991cfc6d533df Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 16 Sep 2024 10:04:41 +1200 Subject: [PATCH 44/46] Update changelog for 2024.9.0b2 --- changelog/2024.9.0.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/changelog/2024.9.0.rst b/changelog/2024.9.0.rst index 1d42ad64ee..ec72a9a61a 100644 --- a/changelog/2024.9.0.rst +++ b/changelog/2024.9.0.rst @@ -39,6 +39,12 @@ Breaking Changes - Move I2S config settings the the base i2sAudio files. Phase 1 :esphomepr:`7183` by :ghuser:`nielsnl68` (breaking-change) - [i2s_audio] Add more options to speakers and microphones :esphomepr:`7306` by :ghuser:`pyos` (breaking-change) +Beta Changes +^^^^^^^^^^^^ + +- [voice-assistant] Dont error on ``no_wake_word`` timeout error with streaming wake word :esphomepr:`7435` by :ghuser:`jesserockz` +- Improve manufacturer data tracing to identify BLE devices a bit easie… :esphomepr:`7332` by :ghuser:`tomer-w` + All changes ^^^^^^^^^^^ @@ -127,6 +133,8 @@ All changes - [uponor_smatrix] Modifies sending algorithm :esphomepr:`7326` by :ghuser:`skasi7` - User configurable frame buffer. :esphomepr:`7360` by :ghuser:`ajwahab` - [Modbus Controller] Added preference to change command retries :esphomepr:`7312` by :ghuser:`0x3333` +- [voice-assistant] Dont error on ``no_wake_word`` timeout error with streaming wake word :esphomepr:`7435` by :ghuser:`jesserockz` +- Improve manufacturer data tracing to identify BLE devices a bit easie… :esphomepr:`7332` by :ghuser:`tomer-w` Past Changelogs --------------- From 2ffb6d0bf488e9fa118af2fd9f3f9ce9d1ea758c Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 16 Sep 2024 10:05:26 +1200 Subject: [PATCH 45/46] Update supporters for 2024.9.0b2 --- guides/supporters.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 185aac36cc..fe80a274e3 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1980,4 +1980,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated September 11, 2024.* +*This page was last updated September 16, 2024.* From d9095db4b06a683e34e9729b84784b647f12a6c7 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:08:26 +1000 Subject: [PATCH 46/46] Add hello world doc; add color names --- components/lvgl/index.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index 86a0a5651d..1a88404a95 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -18,6 +18,13 @@ For interactivity, a :doc:`Touchscreen ` (capacit Check out the detailed examples in :ref:`the Cookbook ` which demonstrate a number of ways you can integrate your environment with LVGL and ESPHome. +To get started, it is sufficient to add a display and an empty LVGL configuration. If neither ``pages`` nor ``widgets`` is specified, then a default "hello world" page will be shown. + +.. code-block:: yaml + + # Example minimal configuration entry + lvgl: + Basics ------ @@ -156,6 +163,8 @@ Colors Colors can be specified anywhere in the LVGL configuration either by referencing a preconfigured :ref:`ESPHome color ` ID or by representing the color in the common hexadecimal notation. For example, ``0xFF0000`` would be red. +You may also use any of the `standard CSS color names `__, e.g. ``springgreen``. + .. _lvgl-opacity: Opacity