From 84229fa648d6ffa3375392ca0c1041094086e5d8 Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Tue, 19 Mar 2024 13:56:05 +0100 Subject: [PATCH 1/8] Add Svetovid documentation --- docs/LwM2M_Client/Getting_started.md | 8 + .../Svetovid/Client_Configuration.md | 318 ++++++++++ docs/LwM2M_Client/Svetovid/FSDM.md | 563 ++++++++++++++++++ docs/LwM2M_Client/Svetovid/Intro.md | 8 + .../Svetovid/Supported_Platforms/generic.md | 396 ++++++++++++ .../Svetovid/Supported_Platforms/moxa.md | 278 +++++++++ .../Svetovid/Supported_Platforms/raspberry.md | 392 ++++++++++++ .../Svetovid/Supported_Platforms/yocto.md | 174 ++++++ docs/LwM2M_Client/images/raspberry_pi.jpg | Bin 0 -> 387061 bytes mkdocs.yml | 9 + 10 files changed, 2146 insertions(+) create mode 100644 docs/LwM2M_Client/Svetovid/Client_Configuration.md create mode 100644 docs/LwM2M_Client/Svetovid/FSDM.md create mode 100644 docs/LwM2M_Client/Svetovid/Intro.md create mode 100644 docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md create mode 100644 docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md create mode 100644 docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md create mode 100644 docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md create mode 100644 docs/LwM2M_Client/images/raspberry_pi.jpg diff --git a/docs/LwM2M_Client/Getting_started.md b/docs/LwM2M_Client/Getting_started.md index 4fcaaebb..88bae46e 100644 --- a/docs/LwM2M_Client/Getting_started.md +++ b/docs/LwM2M_Client/Getting_started.md @@ -2,6 +2,14 @@ Start developing LwM2M applications on your boards and IoT devices in just a few clicks using our Anjay LwM2M Client. +## Svetovid + +Integrate your Linux-based device with our Svetovid LwM2M Client. + +![RaspberryPi](images/raspberry_pi.jpg "Raspberry Pi"){ width=50% } + +[Start integration](./Svetovid/Intro.md){: .md-button .md-button--big } + ## Espressif ESP32 ### M5StickC diff --git a/docs/LwM2M_Client/Svetovid/Client_Configuration.md b/docs/LwM2M_Client/Svetovid/Client_Configuration.md new file mode 100644 index 00000000..a6c9bbea --- /dev/null +++ b/docs/LwM2M_Client/Svetovid/Client_Configuration.md @@ -0,0 +1,318 @@ +# Client configuration + +## Introduction + +Svetovid keeps configuration in JSON files. For Raspberry Pi, the default +location of these JSONs is ``/etc/svetovid/config``. Default configuration +directory may be overwritten by passing ``--conf-dir`` command line argument +when starting a Svetovid binary. + +!!! Warning + Only the following JSON files are supposed to be modified manually: + + - ``security.json`` + - ``server.json`` + - ``svd.json`` + + Editing other JSON files in the configuration directory may cause unexpected + behavior of the client. + +!!! Note + The LwM2M client process may modify these files at runtime. To avoid + your changes from being overwritten, make sure to stop the ``svetovid`` + process before modifying the configuration (see the documentation relevant + for your target platform, e.g. + [launch instructions for the generic target](Supported_Platforms/generic.md#launch-instructions)). + +## General settings + +Settings not directly related to LwM2M server connections are stored in +``svd.json`` file. Example: + +``` +{ + "device": { + "endpoint_name": "53r14l", + "udp_listen_port": 1234 + }, + "logging": { + "default_log_level": "trace", + "log_level": { + "svd": "trace" + } + }, + "lwm2m_version_config": { + "min": "1.0", + "max": "1.1" + }, + "in_buffer_size_b": 1024, + "out_buffer_size_b": 1024, + "msg_cache_size_b": 65536 +} +``` + +- ``device.endpoint_name`` - if set, the endpoint name will be set to the + configured value.
+ **Default value:** automatically generated + ``urn:dev:os:MANUFACTURER_OUI-SERIAL_NUMBER``, where the method of getting + ``MANUFACTURER_OUI`` and ``SERIAL_NUMBER`` is specific to the platform used. + +- ``device.udp_listen_port`` - force binding to a specific UDP port. If set to a + non-zero value, all UDP sockets created by the LwM2M client will be bound to + the configured port.
+ **Default value:** random ephemeral ports will be used. + +- ``device.server_initiated_bootstrap`` - enables/disables LwM2M Server + initiated bootstrap support. If set to true, connection to the Bootstrap + Server will be closed immediately after making a successful connection to any + regular LwM2M Server and only opened again if (re)connection to a regular + server is rejected.
+ **Default value:** ``0``. + +- ``device.core_persistence`` - enables/disables Anjay core persistence, which + allows Svetovid to keep information about DTLS sessions, active LwM2M server + registrations and active resource observations in non-volatile storage. Note + that this information is only persisted after a graceful shutdown of Svetovid. +
+ **Default value:** ``0``. + +- ``device.rebuild_client_cert_chain`` - enables/disables rebuilding client + certificate chain based on the trust store (either the initial one or the one + provisioned via EST) for inclusion in the (D)TLS handshake when using + Certificate mode. If disabled, only the leaf client certificate will be sent + in the handshake.
+ **Default value:** ``0``. + +- ``device.est_reenroll_config.enable`` - enables/disables usage of the EST + Simple Re-enroll (``/est/sren``) operation.
+ **Default value:** ``1``. + +- ``device.est_reenroll_config.nominal_usage`` - nominal period for which a + certificate provisioned by the EST server is used, expressed as part of the + certificate validity period (value in the [0.0, 1.0] range).
+ **Default value:** ``0.9``. + +- ``device.est_reenroll_config.max_margin_s`` - limit, in seconds, on the margin + between re-enrollment request and the certificate expiration time. In other + words, it is guaranteed that re-enroll request will not be sent earlier than + ``max_margin`` before the certificate expiration time. A negative value may be + set to disable the limit.
+ **Default value:** ``2592000`` (30 days). + +- ``device.est_cacerts_policy`` - Policy of when to perform the ``/est/crts`` + request and which servers will use the trust store updated through it.
+ Possible values are: + + - ``for_est_security_and_bootstrap`` (**default**) - perform the + ``/est/crts`` request if there are servers configured to use the EST + security mode, and use the updated trust store for those servers, as well + as for the Bootstrap Server if it's configured to use either EST or + Certificate security mode + + - ``for_est_security`` - perform the ``/est/crts`` request if there are + servers configured to use the EST security mode, and use the updated trust + store for those servers only; the Bootstrap Server will use the updated + trust store only if it is itself configured to use the EST security mode + + - ``if_est_configured`` - perform the ``/est/crts`` request if there are + servers configured to use the EST security mode, and use the updated trust + store for all servers configured to use either EST or Certificate security + mode + + - ``always`` - perform the ``/est/crts`` request if there are servers + configured to use either EST or Certificate security mode, and use the + updated trust store for all such servers + + - ``disabled`` - never perform the ``/est/crts`` request + +- ``logging.default_log_level`` - log level applied to messages in case no more + specific log level exists.
+ Acceptable values: + - "trace" (log all messages) + - "debug" + - "info" + - "warning" + - "error" + - "quiet" (do not log anything) + + **Default value:** "info". + +- ``logging.log_level.MODULE_NAME`` - log level applied to messages originating + from ``MODULE_NAME`` only. Can be used to selectively control logging levels. + +- ``lwm2m_version_config.min`` and ``lwm2m_version_config.max`` - minimum and + maximum version of the LwM2M protocol that the client will attempt to use. + Only ``1.0`` and ``1.1`` are currently supported versions, and both are used + by default. The client will always attempt to register using the highest + configured version and fall back to older versions if necessary. + +- ``in_buffer_size_b`` - size (in bytes) of the buffer used for storing incoming + LwM2M messages. The client will not be able to handle packets bigger than this + size.
+ **Default value:** 4096. + +- ``out_buffer_size_b`` - size (in bytes) of the buffer used for storing + outgoing LwM2M messages. In cases where the message sent would exceed this + size, the client will attempt a BLOCK-wise CoAP transfer instead.
+ **Default value:** 4096. + +- ``msg_cache_size_b`` - size (in bytes) of the buffer used for storing outgoing + LwM2M messages. When the client receives a duplicate request while an + already-prepared response is in the cache, it is used instead of generating a + new one. Cached messages are removed after their validity expires. If total + size of cached messages exceeds configured value, oldest entries are evicted + to make room for fresh ones.
+ Setting this value to 0 disables message caching. In such case, the client + will handle all received retransmitted requests as if they were new ones, + which may result in performing non-idempotent operations multiple times.
+ **Default value:** 65536. + +- ``retry_after_s`` - enables/disables reconnection policy which after specified + period of time (in seconds) after all server connections failed performs a + reconnection attempt. A value of 0 disables reconnection attempts, and causes + the client to shut down if it is unable to establish any connection. +
+ **Default value:** 30. + +- ``dirs.persistence`` - path to the persistence directory. That path MUST NOT + get cleared on FW update.
+ **Default value:** `SVETOVID_PERSISTENCE_DIR` set during compile time. + +- ``dirs.volatile_persistence`` - path to a volatile persistence directory. That + path MUST be cleared on FW update, but persist across reboots.
+ **Default value:** `SVETOVID_VOLATILE_PERSISTENCE_DIR` set during compile + time. + +- ``dirs.plugins`` - path to Svetovid's plugin installation directory.
+ **Default value:** `SVETOVID_PLUGIN_DIR` set during compile time. + +- ``dirs.temp`` - path to a directory used for temporary file storage.
+ **Default value:** `SVETOVID_TEMP_DIR` set during compile time. + +- ``dirs.firmware_download_dir`` - path where PULL FW downloads will be kept. + It MAY be cleared on FW update, but SHOULD persist across reboots in order to + support firmware download resumption.
+ **Default value:** `SVETOVID_FIRMWARE_DOWNLOAD_DIR` set during compile time. + +- ``dirs.pkix_trust_store`` - path to file or directory containing certificates + that shall be used as the initial trust store for Certificate Usage modes that + demand PKIX verification.
+ **Default value:** `SVETOVID_PKIX_TRUST_STORE` set during compile time, which + is the global system trust store (``/etc/ssl/certs``) on platforms that + support it, none otherwise. + +- ``dirs.pkix_trust_store_crls`` - path to file containing CRLs that shall be + used in conjunction with ``pkix_trust_store`` as the initial trust store for + Certificate Usage modes that demand PKIX verification.
+ **Default value:** none. + +## Connection settings + +To configure an LwM2M Bootstrap Server, an instance has to be created in +``security.json`` file. A non-Bootstrap LwM2M Server additionally requires +adding an instance to the ``server.json`` file. + +### Examples + +#### Bootstrap server + + - **security.json** + ``` + { + "2": { + "server_uri": "coap:\/\/{{ coiote_server }}:5693", + "is_bootstrap": "1", + "security_mode": "nosec", + "pubkey_or_identity_hex": "", + "server_pubkey_hex": "", + "privkey_or_psk_hex": "", + "ssid": "7", + "bs_timeout_s": "0" + } + } + ``` + + - **server.json** + ``` + {} + ``` + +#### Non-bootstrap server with DTLS in Pre-Shared Key mode + + - **security.json** + ``` + { + "2": { + "server_uri": "coaps:\/\/{{ coiote_server }}:5684", + "is_bootstrap": "0", + "security_mode": "psk", + "pubkey_or_identity_hex": "3030323343372D303036303634434444423130", + "server_pubkey_hex": "", + "privkey_or_psk_hex": "4573644175496D4E7536", + "ssid": "7", + "bs_timeout_s": "0" + } + } + ``` + + - **server.json** + ``` + { + "0": { + "ssid": "7", + "lifetime": "30", + "notification_storing": "0", + "binding": "U" + } + } + ``` + +### Possible configuration options + +Specific options directly correspond to LwM2M Security/LwM2M Server Object +Resources. See the LwM2M protocol specification for more details. + +- ``security.json`` options: + + - ``server_uri`` - LwM2M Server URI ("coap://" or "coaps://" URI, depending + on the ``security_mode`` value), + + - ``is_bootstrap`` - Bootstrap Server (boolean) + + - ``security_mode`` - Security Mode (one of: "psk", "nosec", "cert") + + - ``pubkey_or_identity_hex`` - Public Key or Identity (hex string). + + !!! Note + this **MUST** be a hex string, even if the value is in fact a + printable text. For example, if the PSK identity is supposed to be + "identity", this value should be set to "6964656e74697479". + + - ``server_pubkey_hex`` - Server Public Key (hex string; see NOTE above) + + - ``privkey_or_psk_hex`` - Secret Key (hex string; see NOTE above) + + - ``ssid`` - Short Server ID (1-65534) + + - ``holdoff_s`` - Client Hold Off Time (seconds) + + - ``bs_timeout_s`` - Bootstrap-Server Account Timeout (seconds) + + +- ``server.json`` options: + + - ``ssid`` - Short Server ID (1-65534, must match ``ssid`` of some Security + Object Instance) + + - ``lifetime`` - Lifetime (seconds) + + - ``default_min_period`` - Default Minimum Period (seconds) + + - ``default_max_period`` - Default Maximum Period (seconds) + + - ``binding`` - Binding (one of: "U", "UQ") + + - ``notification_storing`` - Notification Storing When Disabled or Offline + (boolean) + + - ``disable_timeout`` - Disable Timeout (seconds) diff --git a/docs/LwM2M_Client/Svetovid/FSDM.md b/docs/LwM2M_Client/Svetovid/FSDM.md new file mode 100644 index 00000000..50324a37 --- /dev/null +++ b/docs/LwM2M_Client/Svetovid/FSDM.md @@ -0,0 +1,563 @@ +# File System Data Model + +FSDM (File System Data Model) is a framework that allows implementing LwM2M +objects using Python or Bash scripts. It is provided as a plugin for Svetovid, +available in the commercial version and in certain binary distribution. + +## FSDM plugin + +When enabled, this plugin maps a specific directory to LwM2M Objects, Instances +and Resources. Default mapped directory is ``/etc/svetovid/dm`` and it can be +changed in ``fsdm.json`` file. It is expected to have the following structure: + +- ``/etc/svetovid/dm/`` (default) + + - ``$OBJECT_ID/`` - directory representing an LwM2M Object with given ID. + + - ``resources/`` - directory containing scripts used to access + individual Resources. + + - set of executable scripts representing individual Resources. Names + of these files MUST exactly correspond to their Resource IDs. +
+ See [FSDM resources](#fsdm-resources) for details. + + - ``instances`` - (optional) executable script used for managing object + instances.
+ See [FSDM instances script](#fsdm-instances-script) for details. + + - ``transaction`` - (optional) executable script used to handle + transactional processing of object resources.
+ See [FSDM transaction script](#fsdm-transaction-script) for details. + +Other remarks: + +- Any unexpected files contained within the directory are ignored, including: + + - "root"-level directories with non-numeric names, + + - any files present on the "Object" level, + + - "Resource"-level files/directories with non-numeric names. + +## FSDM script stub generator + +FSDM plugin comes with a helper tool for generating stubs of required scripts. +Run ``svetovid-fsdmtool --help`` to see up-to-date help message with usage +examples. + +!!! Note + ``svetovid-fsdmtool`` is distributed as a separate installation package (e.g + ``avsystem_svetovid-21.12-raspberry-Linux-fsdmtool.deb`` in case of the + Raspberry Pi platform), so please make sure that it is installed before + starting. + +## FSDM config file + +FSDM settings are stored in ``fsdm.json`` file. Example: + +``` +{ + "dirs": { + "datamodel": "/tmp/datamodel" + } +} +``` + +- ``dirs.datamodel`` - directory containing LwM2M objects, as described before. + If not set, **default is:** ``/etc/svetovid/dm``. + +## FSDM resources + +Each Resource is an executable script, which is called as follows: + +``` +script OPERATION [ OPTIONS... ] +``` + +### Resource script operations + +- ``read`` - represents an LwM2M Read operation. The script MUST return resource + value on its standard output. + + !!! Note + The script **MUST NOT** add any trailing newlines that are not a part of + actual resource value. Anything printed on `stdout` is interpreted as + binary data, i.e. no newline translation (e.g. CRLF <-> LF) is + performed. + +- ``write`` - represents an LwM2M Write. The script MUST read new resource value + from its standard input. + + !!! Note + **ALL** data until EOF represents the resource value. Any trailing + newlines present on `stdin` MUST be handled as part of resource value. + `stdin` contents **MUST** be interpreted as binary data, i.e. no newline + translation (e.g. CRLF <-> LF) may be performed. + +- ``execute`` - represents LwM2M Execute operation. Arguments, if any, can be + passed using the ``--args`` option. + +- ``reset`` - resets Resource to its original state - sets it to a default value + or deletes it. In case of a Multiple Resource, it shall remove all its + Multiple Resource Instances - right after ``reset``, the following ``list`` + command should print an empty string. + + !!! Note + It will be called for each resource of an instance before LwM2M + Write-Replace is performed on the instance (or on the resource if it is + a Multiple Resource). + +- ``list`` - only applicable to Multiple Resources. The script should print a + whitespace-separated list of valid Resource Instance IDs for this resource. + +- ``describe`` - returns Resource metadata in JSON format, including: + + - ``"operations"``: a combination of ``R``/``W``/``E`` + + - ``"datatype"``: see [resource data types](#resource-data-types) section + below + + - ``"multiple"``: (optional) boolean flag indicating that the script + represents a Multiple Resource. If omitted, it is assumed to be false + + - ``"name"``: (optional) human-readable resource name + + - ``"description"``: (optional) human-readable description of the resource + + - ``"external-notify"``: (optional) enables external notification mechanism, + for this resource. See also + [external notify](#fsdm-external-notify-trigger) section + + Example: + + ``` + { + "operations": "RW", + "datatype": "opaque", + "multiple": false, + "name": "Data", + "description": "Some data" + } + ``` + +### Resource script options + +- ``--instance ID`` - ID of the LwM2M Instance being referred to. May not be + present if a specific Object Instance is not relevant, e.g. when querying + resource metadata. + +- ``--resource-instance ID`` - ID of the LwM2M Multiple Resource Instance being + referred to. May not be present if the operation targets a Single Resource or + the Multiple Resource as a whole. + +- ``--args ARGUMENTS...`` - Execute operation arguments. Only present if + ``OPERATION`` is ``execute``. Always passed as the last option, all arguments + that follow ``--args`` are to be interpreted as arguments to Execute + operation. ``--args`` may be omitted if the list of Execute arguments is + empty.
+ Each ``ARGUMENT`` can be either: + + - a single digit, + + - ``N=CONTENT`` string, where N is a single digit, and CONTENT is a string + consisting of any characters allowed within the Execute argument by the + LwM2M spec (space is not allowed). Badly formatted arguments from server + request won't be ever passed to the script. + + For example: + + ``` + --args 2=foo 1 8=bar + ``` + +### Multiple Resources + +Multiple Resources are still implemented as single scripts. LwM2M requests map +to script operations as follows: + +- LwM2M Read: ``list`` + ``read`` on each Multiple Resource Instance, + +- LwM2M Write (replace): ``delete`` + ``write`` on each Multiple Resource + Instance, + +- LwM2M Write (update): ``write`` on each Multiple Resource Instance, + +- LwM2M Execute: always fails with Method Not Allowed. Never calls the script. + +### Resource data types + +Data types used on the LwM2M layer SHOULD correspond to the schema definition. +Each resource script MUST support the ``describe`` operation, which MUST return +accurate resource metadata. + +- `string`: UTF-8 encoded plain text + +- `integer`: stringified integer + +- `float`: stringified double-precision floating-point value + +- `boolean`: stringified integer `0` or `1` + +- `opaque`: opaque binary data + +- `time`: seconds since Unix epoch; same representation as integer + +- `objlnk`: ``OID:IID`` string, where `OID` and `IID` are valid stringified + Object/Instance IDs + +!!! Note + - ``read`` operation MUST write data of correct type on standard output. + + - Implementations MAY assume data passed to the standard input when invoking + ``write`` operation have correct data type. + +### Script exit status + +The following exit status codes are handled by Svetovid: + +- ``0`` indicates successful execution. + +- ``100`` - ``131`` - cause Svetovid to respond to the LwM2M server with a CoAP + error from the ``4.xx`` range, e.g.: + + - ``100`` - *4.00 Bad Request* + + - ``104`` - *4.04 Not Found* + + - ``115`` - *4.15 Unsupported Content-Format* + + - etc. + +- ``200`` - ``231`` - cause Svetovid to respond to the LwM2M server with a CoAP + error from the ``5.xx`` range, e.g.: + + - ``200`` - *5.00 Internal Server Error* + + - ``201`` - *5.01 Not Implemented* + + - etc. + +!!! Note + See [CoAP RFC](https://tools.ietf.org/html/rfc7252#section-12.1.2) for a + more detailed list of CoAP response codes. + +## FSDM instances script + +``instances`` script is called as follows: + +``` +instances OPERATION [ ID ] +``` + +``OPERATION`` is one of: + +- ``list`` - the script should print a whitespace-separated list of valid + Instance IDs for its object. + +- ``create ID`` - the script should create an LwM2M Object Instance when called. + This operation takes an ``ID`` argument, which is an integer in the [0; 65534] + range that MUST be used as the ID of created instance. The script MUST follow + [script exit status](#script-exit-status) to return operation status + (success/failure). + + - After a successful ``create``, the newly created Instance ID MUST become + visible in the output of ``list`` operation. + + - An attempt to ``create`` an Instance ID that is already present MUST fail + with a "4.00 Bad Request" code. Failure caused by any other reason MUST + result in an exit status representing a CoAP code from the 5.xx range (see + [script exit status](#script-exit-status)). + + - The ``create`` operation MUST initialize all resources for the newly + created instance to their default values. If a particular resource has no + default value, it MUST be left undefined. The ``create`` operation will be + followed by a series of ``write`` operations which may fill them as + required, after which the ``transaction`` script is called to either + commit or rollback changes. + + See [transaction script](#fsdm-transaction-script) for details. + +- ``delete ID`` - the script should delete an instance ``ID`` if one exists. + +- ``describe`` - returns Object metadata in JSON format, including: + + - ``version`` - (optional) object version number, as described in + [LwM2M Core TS section 7.2](https://www.openmobilealliance.org/release/LightweightM2M/V1_1_1-20190617-A/HTML-Version/OMA-TS-LightweightM2M_Core-V1_1_1-20190617-A.html#7-2-0-72-Object-Versioning) + + - ``"external-notify"`` - (optional) enables external notification mechanism + for the set of instances of this object.
+ See also [external-notify](#fsdm-external-notify-trigger). + +!!! Note + The ``instances`` script MAY not be present, in which case the Object is + assumed to be a Single-Instance Object, for which an Instance ID 0 always + exists and cannot be deleted.
+ When it is present, all operations other than ``list`` are optional. + +## FSDM transaction script + +``transaction`` script, if present, is called before and after every mutating +operation on an LwM2M object, i.e. Write/Create/Delete. + +``` +transaction OPERATION +``` + +``OPERATION`` is one of: + +- ``begin`` - called before the mutating LwM2M request to set up a savepoint + for future rollback.
+ The exit status of this script MUST follow the + [script exit status](#script-exit-status) rules. + +- ``validate`` - called after the mutating LwM2M request. This operation checks + if the object is in a consistent state after all modifications. It MUST also + make sure that ``commit`` will be successful (see ``commit`` operation + description for more details). If ``validate`` fails, ``rollback`` is + performed. + +- ``commit`` - called after all atomic operations the LwM2M request is split + into succeeded, to make sure they are actually applied. + + !!! Warning + If this operation fails, the data model will be left in an inconsistent + state (``rollback`` will not be invoked). For this reason, it may return + an error code if and only if a fatal, unpredictable and irrecoverable + error (e.g. physical I/O error) occurs. All other errors (e.g. being a + consequence of invalid object state) MUST be reported by ``validate`` + operation beforehand. + +- ``rollback`` - called after some of the atomic operations the LwM2M request is + split into fails. This operation MUST restore LwM2M object to the state it was + in at the point ``begin`` was called. + +!!! Note + The ``transaction`` script MAY not be present, in which the Object is + assumed to not require transactional processing of any kind. This is NOT + recommended if the object implements any writable resources or Create/Delete + operation on instances. + +## FSDM external Notify trigger + +There are two ways Svetovid can be notified about changes occurring in the File +System Data Model. + +1. **Pull-mode:** The default mode. Svetovid regularly polls ``instances list`` + and ``resource read`` operations to check if some changes in their outputs + have appeared. + +2. **Push-mode:** The mode in which it is the user responsibility to notify + Svetovid about the following changes in FSDM: + + - list of valid Instance IDs for an object (returned value of + ``instances list`` operation) has changed for **other** reason than + calling ``instances create`` or ``instances delete`` by Svetovid + + - readable resource has changed its value for **other** reason than + calling ``write``, ``reset`` or ``clear`` by Svetovid + +### Usage + +To activate "Push-mode" for an object instance or a resource, user has to +explicitly enable that mode in the resource or instances scripts: + +- For `python` based scripts generated by ``fsdmtool``, for readable entities, + the class constant ``EXTERNAL_NOTIFY`` should be set to ``True`` (default + value is ``False``). + +- For `sh` based scripts generated by ``fsdmtool``, for readable entities, + ``RESOURCE_EXTERNAL_NOTIFY`` and ``INSTANCES_EXTERNAL_NOTIFY`` should be set + to ``"true"`` (default value is ``"false"``). + +- For scripts manually crafted, one should make sure that the ``describe`` + operation of the entity also returns ``"external-notify": true``. + +After enabling the functionality, it is possible to use special Unix domain +socket to notify about value changes. The socket is created after Svetovid +launch in Svetovid temporary directory (by default: ``/tmp/fsdm_local_socket``). + +!!! Note + Push mode may also be enabled for Resources whose values never change, and + for instance sets of objects whose instance sets never change. In this case, + it is enough to just set the external notify flag to true without the need + to send notifications to Svetovid. + +User may send JSON containing information about changed state of instances and +resources as follows: + +``` +{ "notify": ["/10", "/20", "/9/0/1", "/9/0/2"] } +``` + +In example above we want to inform that: + +- instances lists of objects 10 and 20 have changed + +- values of resources ``/9/0/1`` and ``/9/0/2`` have changed + +To send the message through the socket user can use standard tools like `nc` or +`socat`. + +#### nc + +``` +echo '{ "notify": ["/10", "/20", "/9/0/1", "/9/0/2"] }' | nc -NU /tmp/fsdm_local_socket +``` + +!!! Note + Option ``-N`` is set because `nc` should shutdown the socket after EOF on + the input. + +#### socat + +``` +echo '{ "notify": ["/10", "/20", "/9/0/1", "/9/0/2"] }' | socat - UNIX-CONNECT:/tmp/fsdm_local_socket +``` + +#### Native socket API + +User can use standard socket API of his preferred programming language. These +are important things to remember about user-side socket: + +- socket domain should be `AF_UNIX` / `AF_LOCAL` + +- socket type should be `SOCK_STREAM` + +- after sending the whole message the socket should be shut down for further + transmissions (`SHUT_WR` flag) + +### Response + +As a result of triggering a notify a response is sent through the socket. There +are 3 kinds of result: + +1. ``{"result": "OK"}``: There were no errors during triggering a notify. + +2. ``{"result": "warning", "details": [ ... ] }``: In this case some of entries + could not be processed and the reasons for each entry are indicated in + `details` section. Entries omitted in `details` section were perfectly valid + and there is no need to try notifying them again. + +3. ``{"result": "error", "details": "..." }``: There was some serious problem + with execution of user request (e.g. parsing error). In this case **all + entries** should be considered as **not processed**. + +#### Examples + +``"details"`` section for ``"OK"`` result is absent: + +``` +user@host $ echo '{ "notify": ["/1337"] }' | nc -NU /tmp/fsdm_local_socket +{ + "result": "OK" +} +user@host $ +``` + +``"details"`` for ``"warning"`` result is an array of failure reasons: + +``` +user@host $ echo '{ "notify": [":-)", "/1/2/3"] }' | nc -NU /tmp/fsdm_local_socket +{ + "result": "warning", + "details": [ + { + "path": ":-)", + "reason": "not object or resource path" + }, + { + "path": "\/1", + "reason": "non-FSDM object" + } + ] +} +user@host $ +``` + +``"details"`` for the ``"error"`` result is a single diagnostic string: + +``` +user@host $ echo abcdefgh | nc -NU /tmp/fsdm_local_socket +{ + "result": "error", + "details": "malformed input" +} +user@host $ +``` + +## Triggering Send message + +Svetovid may be forced to generate a Send message where he will inform the +server about a specific resource. Similar to the Notify trigger in +**push-mode** the user can pass a JSON to the Unix domain socket to communicate +with Svetovid: + +``` +{ "send": ["/10", "/20/0", "/9/0/1", "/9/0/2"] } +``` + +In this example we will send to the LwM2M server: + +- all values of resources in all of the instances of object 10 + +- all values of resources in ``/20/0`` + +- values of resources ``/9/0/1`` and ``/9/0/2`` + +## FSDM key-value store for keeping volatile object state + +Sometimes, when implementing an object, there's a need to keep track of some +information for the object to function properly. An example could be an object +with two Resources: "Current Value" and "Max Value". + +To implement the "Max Value" Resource, one has to keep track of the values +being presented and save the largest one seen so far somewhere. One way to do +it would be by using some kind of temporary file storage. Another way is to +used our pre-implemented simple key-value store accessible through +``/tmp/fsdm_local_socket`` socket. + +### Supported commands + +#### set + +Sets or replaces keys to specified values. Example use: + +``` +user@host $ echo '{ "store": { "set": { "foo1": "bar", "foo2": "baz" } } }' | nc -NU /tmp/fsdm_local_socket +{ + "result": "OK" +} +user@host $ +``` + +Which sets `foo1` to `bar` and `foo2` to `baz`. + +#### get + +``` +user@host $ echo '{ "store": { "get": ["foo1", "foo2"] } }' | nc -NU /tmp/fsdm_local_socket +{ + "result": "OK", + "details": { + "foo1": "bar", + "foo2": "baz" + } +} +user@host $ +``` + +Gets the value assigned to keys `foo1` and `foo2`. Note that it is possible to +get more than one key, and if the key is not set, it is not returned. + +#### delete + +```` +user@host $ echo '{ "store": { "delete": ["foo1"] } }' | nc -NU /tmp/fsdm_local_socket +{ + "result": "OK" +} +user@host $ +```` + +Deletes the key `foo1` and a key assigned to it from the store. diff --git a/docs/LwM2M_Client/Svetovid/Intro.md b/docs/LwM2M_Client/Svetovid/Intro.md new file mode 100644 index 00000000..a6fba63f --- /dev/null +++ b/docs/LwM2M_Client/Svetovid/Intro.md @@ -0,0 +1,8 @@ +# What is Svetovid? + +[Svetovid](https://github.com/AVSystem/Svetovid) is a complete LwM2M client +based on [Anjay library](https://github.com/AVSystem/Anjay), supporting several +Linux-based platforms. + +Svetovid provides an easy-to-use [FSDM (File System Data Model)](FSDM.md) +mechanism, allowing to implement LwM2M objects using Python or Bash scripts. diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md new file mode 100644 index 00000000..ecc7e609 --- /dev/null +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md @@ -0,0 +1,396 @@ +# generic + +The ``generic`` platform allows running a minimal subset of Svetovid's +functionality on any otherwise unsupported platform. It is mostly intended for +testing and prototyping. + +## Supported hardware + +In principle, the ``generic`` target can be used on any device that is capable +of running Linux. It is primarily developed and tested on [Ubuntu +Desktop](https://ubuntu.com/download/desktop). + +Packaging this type of build as a Docker container is also officially supported. + +There is also an additional Docker image that integrates Svetovid with +OpenThread Border Router functionality. It is based on the official +[ot-br-posix](https://github.com/openthread/ot-br-posix) container, and adds +the functionality of managing the OTBR remotely via LwM2M. Please refer to the +documentation of that project for information about the hardware supported as +the Thread radio. + +More information about the OpenThread Border Router variant can be found in +AVSystem IoT Developer Zone article: [OpenThread Border Router configurable +through LwM2M server](/LwM2M_Client/OpenThread/OTBR_with_svetovid). + +!!! Note + Svetovid **only supports operating systems based on the Linux kernel**. If + you wish to run it on a machine that runs another operating system such as + Windows, macOS or \*BSD, please use a virtual machine or container runtime + (e.g. Docker) running Linux. + +## Features + +### Implemented objects + +Without any external additions, the ``generic`` platform implements the +following LwM2M objects: + +- Security (/0), +- Server (/1), +- Device (/3), +- Firmware Update (/5) - as a stub, +- Portfolio (/16), +- Event Log (/20). + +The commercial version also supports [FSDM](../FSDM.md) to facilitate extending +this basic functionality easily. + +The Firmware Update object expects an executable binary for the target platform, +and the update process will just perform ``exec()`` on that binary. This is +intended mostly for testing or as a proof-of-concept, not as a production +solution. + +### OpenThread Border Router + +The ``svetovid_with_otbr`` Docker target adds implementations of the following +objects (based on FSDM): + +- OTBR Configuration (/33630), +- OpenThread Neighbor List (/33633), +- OpenThread Commissioner Joiner Table (/33634), +- OpenThread Neighbor Networks (/33639), +- OpenThread Join Existing Network (/33640). + +!!! Note + The aforementioned objects are part of the Object ID range reserved for + AVSystem's private use, and as such are not standardized under OMA. They may + not be supported by third-party LwM2M Server implementations. + +## Device identity + +!!! Note + This section only applies to the standalone builds. Please see the + [Docker builds](#docker-builds) section for information about configuring + the Docker builds. + +If not configured otherwise (see [Client +Configuration](../Client_Configuration.md)), the client will use the following +information to connect to the LwM2M Server: + +| | | +| :-: | :-: | +| **Endpoint name** | ``urn:dev:os:generic-{hostname}-{machine_id}``
(note: ``{machine_id}`` is the contents of ``/etc/machine-id``) | +| **Default LwM2M Server** | ``coap://127.0.0.1:5683`` | + +!!! Note + DTLS is disabled in the default configuration. To enable it, the PSK key + needs to be configured explicitly in the + [security.json](../Client_Configuration.md#connection-settings) file. + +## Build instructions + +### Standalone build + +To do a standalone build of Svetovid, you will need the following prerequisites: + +- Clang (or GCC; Clang is recommended) with C++ support and all the essential + build dependencies + +- CMake 3.6.3 or newer + +- Git + +- Zlib (optional, you can use ``-DWITH_AVS_HTTP_ZLIB=OFF`` CMake option to + remove this dependency, at the cost of no support for HTTP compression) + +- Boost C++ Libraries (optional, you can use ``-DWITH_SYSTEM_BOOST=OFF`` CMake + option to download Boost as part of the build process instead) + +On Ubuntu 20.04, you can install all the required dependencies by running the +following commands (identical or similar commands should work on other +distributions from the Debian family; finding packages for other distributions +is outside the scope of this documentation): + +``` +sudo apt update && +sudo apt install \ + build-essential \ + clang \ + cmake \ + git \ + libboost-all-dev \ + python3-sphinx \ + python3-sphinx-rtd-theme \ + zlib1g-dev +``` + +The preferred way to build Svetovid for the ``generic`` target on the host +platform itself is running: + +``` +git submodule update --init --recursive +env CC=clang CXX=clang++ cmake -DTARGET_PLATFORM=generic . +make -j$(nproc) +``` + +To additionally build the Debian packages, run: + +``` +make package +``` + +### Docker image build + +The dockerfile is called ``Dockerfile.clean_svetovid`` and it is located in the +``dockerfiles`` directory within the source tree root. + +Docker build process is multi-stage, which means that there is an intermittent +image created used for the build process itself. The final Svetovid image +contains only necessary stuff and is as lightweight as possible. + +To build the Docker image, run: + +``` +git submodule update --init --recursive +docker build . -f ./dockerfiles/Dockerfile.clean_svetovid +``` + +You may also optionally pass other arguments to ``docker build``, for example +the ``--tag`` parameter to automatically tag the resulting image (e.g. ``--tag +svetovid``), or the ``--platform`` image to build an image for a foreign +platform (e.g. ``--platform linux/arm/v7`` for running on a Raspberry Pi). + +## Installation instructions + +### Standalone installation instructions + +After running ``make package``, the following Debian packages will be created: + +- **svetovid_{version}_{architecture}.deb** - base binary of Svetovid itself and + the systemd service unit file; note: the post-install script will + automatically start Svetovid as a daemon + +Additionally in the commercial version only: + +- **svetovid-plugin-fsdm_{version}_{architecture}.deb** - dynamically loadable + library that enables the FSDM functionality in Svetovid + +- **avsystem_svetovid-{version}-Linux-fsdmtool.deb** - + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) script, that allows creating + stubs of FSDM scripts from XML object definitions and/or downloading them from + the LwM2M Object Registry + +- **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-python.deb** - runtime + library used by the Python scripts generated by ``svetovid-fsdmtool`` + +- **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-sh.deb** - runtime + library used by the shell scripts generated by ``svetovid-fsdmtool`` + +The preferred method of installing Svetovid is to install some or all of the +aformentioned files, depending on your needs, for example: + +``` +sudo apt install ./*.deb +``` + +If you're running an RPM-based distribution, you can use ``alien`` (installing +``alien`` itself is beyond the scope of this documentation) to convert the +``*.deb`` files into ``*.rpm`` and install those: + +``` +sudo alien --to-rpm --scripts *.deb +sudo rpm --replacefiles -ivh *.rpm +``` + +### Docker installation instructions + +The Docker build does not require additional installation - the built image is +ready to run. You may tag it for your convenience - any further instructions +will assume that the image has been tagged as just ``svetovid``. + +## Directory structure of an installed client + +Assuming that all the packages mentioned above are installed: + +- ``/etc/svetovid/`` + + - ``/etc/svetovid/config/`` - configuration files, see + [Client Configuration](../Client_Configuration.md) + + - ``/etc/svetovid/dm/`` - default directory for FSDM-based object + implementations + + !!! Note + In the Docker builds, this directory is initially populated with + files from the ``dockerfiles/docker-init-files/dm/`` subdirectory of + the source repository; that contains an alternative implementation + of the Device (/3) object. + + - ``/etc/svetovid/persistence/`` - data persisted across firmware updates + + - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, + but not firmware updates + +- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM + plugin + + - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional + communication between the FSDM scripts and the Svetovid binary + +- ``/usr/`` + + - ``/usr/bin/svetovid`` - main LwM2M client executable + + - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the + ``fsdmtool`` executable + + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM + Python runtime for Python 2.7 + + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python + runtime for Python 3 + + - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime + + - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin + + - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for + Svetovid + + - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities + + - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable + for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) + + - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules + + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for + Python + + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell + scripts + +### Additional files used by the Docker images + +- ``/etc/svetovid/svetovid_start.sh`` is the entry point of the Docker + container; this script starts the Svetovid process and allows to modify basic + LwM2M configuration (endpoint name, DTLS PSK identity and key, server + hostname) with the use of ENV values while starting the container (see the + [Docker builds](#docker-builds) section) + + - The variant with OTBR support additionally contains + ``/etc/svetovid/svetovid_start_otbr.sh`` and uses that as the entry point. + That script launches both the OTBR and Svetovid startup scripts + concurrently. + +- The ``/etc/svetovid/config/`` directory contains files copied from the + ``dockerfiles/docker-init-files/config/`` subdirectory of the source + repository; this is required for proper handling of startup with configuration + based on environment variables. + +- The ``/etc/svetovid/dm/`` directory contains files copied from the + ``dockerfiles/docker-init-files/dm/`` subdirectory of the source repository; + that contains an alternative implementation of the Device (/3) object. + + - The variant with OTBR supports also includes implementations of the objects + related to OpenThread. + +- ``/var/cache/svetovid/`` - in the variant with OTBR support, contains data + related to the OTBR state, cached to limit the number of accesses to the OTBR + daemon socket, and to implement transactionality of modifications by the LwM2M + Server. + +- ``/run/openthread-wpan0.sock`` - local UNIX-domain socket used for + communication with the OTBR daemon (note: this is part of the ``ot-br-posix`` + package and not related to Svetovid, but used by OTBR object implementations) + +- ``/run/sve-openthread-wpan0.lock`` - in the variant with OTBR support, this + file is used to synchronize accesses to the OTBR daemon socket. + +## Launch instructions + +### Standalone build + +Svetovid is configured to launch through ``systemd`` and the install scripts +enable and launch it by default. + +To manually start the client, use: + +``` +sudo systemctl start svetovid +``` + +To manually stop the client, use: + +``` +sudo systemctl stop svetovid +``` + +LwM2M client process logs are sent to syslog. To access them, either: + +- read syslog directly, e.g.: + + ``` + journalctl -fu svetovid + ``` + +- or stop the LwM2M client service as described above, then run it in the + foreground: + + ``` + /usr/bin/svetovid + ``` + +### Docker builds + +The Docker builds use the following environment variables to configure the +LwM2M Client: + +- ``EP`` - LwM2M Client's endpoint name *as well as* DTLS Identity +- ``PSK`` - LwM2M Client's PSK in plain-text +- ``SERVER_HOST`` - LwM2M Server's endpoint (e.g. ``{{ coiote_server }}``) + +### Examples + +- run Svetovid LwM2M Client in background (as a daemon) + + ``` + docker run -d -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' svetovid + ``` + +- stop LwM2M Client by stopping Svetovid container + + ``` + docker stop + ``` + +- resume LwM2M Client by stopping Svetovid container + + ``` + docker start + ``` + +- run container interactively with automatic container deletion after existing + + ``` + docker run -it --rm -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' svetovid + ``` + +- run container with custom Svetovid log level e.g. to troubleshoot + + ``` + docker run -it --rm -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' -e LOG_LEVEL='debug' svetovid + ``` + +- start container without running the Sevetovid LwM2M client (e.g. to prototype your own objects) + + ``` + docker run -it -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' svetovid /bin/bash + ``` + +- run container interactively with OTBR (remember to connect RCP and edit its path if necessary) + + ``` + docker run --rm --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 -p 8081:8081 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged -e DNS64_ONLY=1 -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' openthread/svetovid_with_otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0 + ``` diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md new file mode 100644 index 00000000..cdaf9100 --- /dev/null +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md @@ -0,0 +1,278 @@ +# moxa + +The ``moxa`` target is intended for [Moxa](https://www.moxa.com/) industrial +devices based on ARM Debian. + +## Supported hardware + +The officially supported device that was used for development and testing is +[Moxa UC-2116-T-LX](https://moxastore.express-inc.com/UC_2116_T_LX_p/uc-2116-t-lx.html) +running Debian 9, however, it should also work on other devices based on the +same OS. + +## Features + +### Implemented objects + +Without any external additions, the ``moxa`` platform implements the following +LwM2M objects: + +- Security (/0), +- Server (/1), +- Device (/3), +- Connectivity Monitoring (/4), +- Firmware Update (/5) - as a stub, +- Location (/6), +- LWM2M APN Connection Profile (/11), +- Portfolio (/16), +- Event Log (/20), +- Modbus Connection (/10374), +- Modbus Register Cluster (/10375). + +The commercial version also supports [FSDM](../FSDM.md) to facilitate extending +this basic functionality easily. + +The Firmware Update object expects an executable binary for the target platform, +and the update process will just perform ``exec()`` on that binary. This is +intended mostly for testing or as a proof-of-concept, not as a production +solution. + +### ModBus support + +This target platform includes support for the ModBus protocol, based on the +libmodbus library. + +## Device identity + +If not configured otherwise (see [Client +configuration](../Client_Configuration.md)), the client will use the following +information to connect to the LwM2M Server: + +| | | +| :-: | :-: | +| **Endpoint name** | ``moxa`` | +| **Default LwM2M Server** | ``coap://127.0.0.1:5683`` | + +!!! Note + DTLS is disabled in the default configuration. To enable it, the PSK key + needs to be configured explicitly in the + [security.json](../Client_Configuration.md#connection-settings) file. + +## Build instructions + +### Build environment + +1. Install Debian 9. A virtual machine, chroot environment or a container is + recommended for development. + + - Main repositories for Debian 9 are no longer maintained. You may need to + edit ``/etc/apt/sources.list`` to use http://archive.debian.org/ or + http://snapshot.debian.org/. + +2. Add ``/etc/apt/sources.list.d/moxa.sources.list`` file with the following + line: + + ``` + deb http://debian.moxa.com/debian stretch main contrib non-free + ``` + +3. Run ``apt-get update``, ``apt-get install moxa-archive-keyring`` and + ``apt-get update`` once again. + +4. Execute ``dpkg --add-architecture armhf`` and then ``apt-get update`` once + again, to be able to install non-amd64 packages. + +5. Install the toolchain and required built-time dependencies: + + ``` + apt install \ + cmake \ + crossbuild-essential-armhf \ + git \ + pkg-config + ``` + +6. Install libmodbus development package: + ``apt-get install libmodbus-dev:armhf`` (note: this conflicts with + ``libmodbus-dev`` for the host platform, so a dedicated development VM or + chroot environment is highly recommended) + +### Compilation + +To compile Svetovid for Moxa industrial computers, run: + +``` +git submodule update --init --recursive +cmake \ + -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain/arm-linux-gnueabihf.cmake \ + -DTARGET_PLATFORM=moxa \ + -DWITH_AVS_HTTP_ZLIB=OFF \ + -DWITH_SYSTEM_BOOST=OFF \ + . +make -j$(nproc) +make package +``` + +!!! Note + Boost C++ Libraries will be downloaded and built as part of the build + process. + +The ``*.deb`` files ready to install on the device will be generated in the +source root directory. + +## Installation instructions + +### Preparing the device + +``libmodbus5`` needs to be installed on the Moxa device for it to be able to run +Svetovid. It is not installed by default. + +To install ``fsdmtool`` or ``fsdmtool-runtime-python`` (only available in the +commercial version), **Python** has to be installed on the Moxa device itself. +It is not installed by default. + +You can install these dependencies by running: + +``` +sudo apt-get update +sudo apt-get install libmodbus5 python3 +``` + +### Installing the packages + +The build result is the following set of Debian packages: + +- **svetovid_{version}_armhf.deb** - base binary of Svetovid itself and the + systemd service unit file; note: the post-install script will automatically + start Svetovid as a daemon + +Additionally, the following packages can be built from the commercial codebase: + +- **svetovid-plugin-fsdm_{version}_{version}.deb** - dynamically loadable + library that enables the FSDM functionality in Svetovid + +- **avsystem_svetovid-{version}-Linux-fsdmtool.deb** - + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) script, that allows creating + stubs of FSDM scripts from XML object definitions and/or downloading them from + the LwM2M Object Registry + +- **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-python.deb** - runtime + library used by the Python scripts generated by ``svetovid-fsdmtool`` + +- **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-sh.deb** - runtime + library used by the shell scripts generated by ``svetovid-fsdmtool`` + +You can put those files on the industrial computer using any method available, +e.g. using a USB drive, or by copying them using ``scp`` (requires SSH to be +enabled on the device): + +``` +scp *.deb {Moxa_IP_ADDRESS}:/tmp/ +``` + +The preferred method of installing Svetovid is to install some or all of the +aformentioned files, depending on your needs, for example (on the Moxa device +terminal): + +``` +sudo apt install /tmp/*.deb +``` + +Directory structure of an installed client +------------------------------------------ + +Assuming that all the packages mentioned above are installed: + +- ``/etc/svetovid/`` + + - ``/etc/svetovid/config/`` - configuration files, see + [Client configuration](../Client_Configuration.md) + + - ``/etc/svetovid/dm/`` - default directory for FSDM-based object + implementations + + - ``/etc/svetovid/persistence/`` - data persisted across firmware updates + + - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, + but not firmware updates + +- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM + plugin + + - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional + communication between the FSDM scripts and the Svetovid binary + +- ``/usr/`` + + - ``/usr/bin/svetovid`` - main LwM2M client executable + + - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the + ``fsdmtool`` executable + + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM + Python runtime for Python 2.7 + + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python + runtime for Python 3 + + - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime + + - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support + plugin + + - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for + Svetovid + + - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities + + - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable + for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) + + - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules + + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for + Python + + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell + scripts + +## Launch instructions + +Svetovid is configured to launch through ``systemd`` and the install scripts +enable and launch it by default. + +To manually start the client, use: + +``` +sudo systemctl start svetovid +``` + +To manually stop the client, use: + +``` +sudo systemctl stop svetovid +``` + +LwM2M client process logs are sent to syslog. To access them, either: + +- read syslog directly, e.g.: + + ``` + journalctl -fu svetovid + ``` + +- or stop the LwM2M client service as described above, then run it in + foreground: + + ``` + /usr/bin/svetovid + ``` + +## ModBus configuration + +The built-in serial ports of the Moxa computer are switchable between RS-232 and +RS-485 modes, but the way this is configured on this hardware is incompatible +with libmodbus. To make these serial ports work, the ports shall always be +configured as RS-232 in the Modbus Connection object. The actual mode of +operation can be configured via the device's command line using the +``mx-uart-ctl`` utility. diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md new file mode 100644 index 00000000..2189eeb6 --- /dev/null +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md @@ -0,0 +1,392 @@ +# raspberry + +The ``raspberry`` platform is intended to run on Raspberry Pi devices and +implements a couple of additional functionalities on top of the basic client. +It is mostly intended as a base for implementing application-specific objects +using the [FSDM](../FSDM.md). + +The port of Svetovid for the Raspberry Pi is intended as a **LwM2M Starter +Kit** -- a hardware+software package that also contains the Pi itself. Binaries +prebuilt for this purpose are available on GitHub: [Svetovid Raspberry +Client](https://github.com/AVSystem/Svetovid-raspberry-client). + +## Supported hardware + +The ``raspberry`` target is intended to be compatible with all mainstream +Raspberry Pi models. It is primarily tested on [Raspberry Pi OS]( +https://www.raspberrypi.com/software/operating-systems/), which is a version +of Debian, but should in principle work on any mainstream Linux distribution. + +This target also includes an implementation of objects for some additional +peripherals, namely: + +* Generic push-buttons connected to GPIO pins +* Generic LED lights connected to GPIO pins +* The Raspberry Pi [Sense HAT](https://www.raspberrypi.com/products/sense-hat/) + +## Features + +### Implemented objects + +The core Svetovid binary build for the ``raspberry`` platform implements the +following LwM2M objects: + +- Security (/0), +- Server (/1), +- Device (/3), +- Firmware Update (/5) - as a stub, +- Portfolio (/16), +- Event Log (/20), +- Light Control (/3311), +- Push button (/3347). + +The Firmware Update object expects an executable binary for the target platform, +and the update process will just perform ``exec()`` on that binary. This is +intended mostly for testing or as a proof-of-concept, not as a production +solution. + +### Sense HAT support + +An optional Sense HAT support package adds implementation of the following +objects (based on FSDM): + +- Temperature (/3303), +- Accelerometer (/3313), +- Magnetometer (/3314), +- Barometer (/3315), +- Gyrometer (/3334), +- Addressable Text Display (/3341). + +## Device identity + +If not configured otherwise (see [Client +configuration](../Client_Configuration.md)), the client will use the following +information to connect to the LwM2M Server: + +| | | +| :-: | :-: | +| **Endpoint name** | ``urn:dev:os:B827EB-{serial_number}``
(note: ``{serial_number}`` is the ``Serial`` field from ``/proc/cpuinfo``) | +| **Default LwM2M Server** | ``coap://127.0.0.1:5683`` | + +!!! Note + DTLS is disabled in the default configuration. To enable it, the PSK key + needs to be configured explicitly in the + [security.json](../Client_Configuration.md#connection-settings) file. + +## Build instructions + +### Building on the Raspberry Pi itself + +To build Svetovid on the Raspberry Pi, you will need the following +prerequisites: + +- Clang (or GCC; Clang is recommended) with C++ support and all the essential + build dependencies +- CMake 3.6.3 or newer +- Git +- Zlib (optional, you can use ``-DWITH_AVS_HTTP_ZLIB=OFF`` CMake option to + remove this dependency, at the cost of no support for HTTP compression) +- Boost C++ Libraries (optional, you can use ``-DWITH_SYSTEM_BOOST=OFF`` CMake + option to download Boost as part of the build process instead) + +On Raspberry Pi OS Bookworm (based on Debian 12), you can install all the +required dependencies by running the following commands (identical or similar +commands should work on other distributions from the Debian family; finding +packages for other distributions is outside the scope of this documentation): + +``` +sudo apt update && +sudo apt install \ + build-essential \ + clang \ + cmake \ + git \ + libboost-all-dev \ + python3-sphinx \ + python3-sphinx-rtd-theme \ + zlib1g-dev +``` + +The preferred way to build Svetovid for the ``raspberry`` target on the +Raspberry Pi itself is running: + +``` +git submodule update --init --recursive +env CC=clang CXX=clang++ cmake \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DTARGET_PLATFORM=raspberry \ + . +make -j$(nproc) +``` + +The preferred compiler is Clang, but Svetovid will compile using GCC as well. + +To additionally build the Debian packages, run: + +``` +make package +``` + +### Cross-compiling + +To build Svetovid for the Raspberry Pi on another machine, you will need: + +- Build environment based on a Debian system in the same version as the target + Raspberry Pi OS (e.g. Debian 12 if targeting Raspberry Pi OS Bookworm) - + either a native installation, a virtual machine, or a container (e.g. Docker) + environment + +- GCC cross-compile packages for the target platform (``arm-linux-gnueabihf`` + for 32-bit or ``aarch64-linux-gnu`` for 64-bit) + +- CMake 3.6.3 or newer + +- Git + +Once in the Debian build environment, you can install all the required +dependencies by running the following commands: + +``` +sudo apt update && +sudo apt install \ + cmake \ + g++-aarch64-linux-gnu \ + g++-arm-linux-gnueabihf \ + gcc-aarch64-linux-gnu \ + gcc-arm-linux-gnueabihf \ + git \ + python3-sphinx \ + python3-sphinx-rtd-theme +``` + +To cross-compile Svetovid for the Raspberry Pi, run: + +``` +git submodule update --init --recursive +cmake \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain/raspberry-raspbian.cmake \ + -DTARGET_PLATFORM=raspberry \ + -DWITH_AVS_HTTP_ZLIB=OFF \ + -DWITH_GTEST=OFF \ + -DWITH_SYSTEM_BOOST=OFF \ + . +make -j$(nproc) +make package +``` + +!!! Note + To build a 64-bit version, use + ``cmake/toolchain/raspberry-raspbian64.cmake`` as the CMake toolchain file + instead. + +!!! Note + Boost C++ Libraries will be downloaded and built as part of the build + process. + +The ``*.deb`` files ready to install on the Raspberry Pi will be generated in +the source root directory. + +## Installation instructions + +The build result is the following set of Debian packages: + +- **svetovid_{version}_{architecture}.deb** - base binary of Svetovid itself and + the systemd service unit file; note: the post-install script will + automatically start Svetovid as a daemon + +Additionally, the following packages can be built from the commercial codebase +and are available publicly as binaries: + +- **svetovid-plugin-fsdm_{version}_{version}.deb** - dynamically loadable + library that enables the FSDM functionality in Svetovid + +- **avsystem_svetovid-{version}-Linux-fsdmtool.deb** - + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) script, that allows creating + stubs of FSDM scripts from XML object definitions and/or downloading them from + the LwM2M Object Registry + +- **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-python.deb** - runtime + library used by the Python scripts generated by ``svetovid-fsdmtool`` + +- **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-sh.deb** - runtime + library used by the shell scripts generated by ``svetovid-fsdmtool`` + +- **avsystem_svetovid-{version}-Linux-sensehat.deb** - implementations of IPSO + sensor object targeting the + [Sense HAT](https://www.raspberrypi.com/products/sense-hat/), based on FSDM + +You can put those files on a Raspberry Pi using any method available, e.g. using +a USB drive, or by copying them using ``scp`` (requires SSH to be enabled on the +Pi): + +``` +scp *.deb {Pi_IP_ADDRESS}:/tmp/ +``` + +The preferred method of installing Svetovid is to install some or all of the +aformentioned files, depending on your needs, for example (on the Pi terminal): + +``` +sudo apt install /tmp/*.deb +``` + +## Directory structure of an installed client + +Assuming that all the packages mentioned above are installed: + +- ``/etc/svetovid/`` + + - ``/etc/svetovid/config/`` - configuration files, see + [Client configuration](../Client_Configuration.md) + + - ``/etc/svetovid/dm/`` - default directory for FSDM-based object + implementations + + - The ``sensehat`` package puts implementations of some IPSO objects + here. + + - ``/etc/svetovid/persistence/`` - data persisted across firmware updates + + - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, + but not firmware updates + +- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM + plugin + + - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional + communication between the FSDM scripts and the Svetovid binary + +- ``/usr/`` + + - ``/usr/bin/svetovid`` - main LwM2M client executable + + - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the + ``fsdmtool`` executable + + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM + Python runtime for Python 2.7 + + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python + runtime for Python 3 + + - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime + + - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin + + - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for + Svetovid + + - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities + + - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable + for the ``fsdmtool`` + + - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules + + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for + Python + + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell + scripts + +## Launch instructions + +Svetovid is configured to launch through ``systemd`` and the install scripts +enable and launch it by default. + +To manually start the client, use: + +``` +sudo systemctl start svetovid +``` + +To manually stop the client, use: + +``` +sudo systemctl stop svetovid +``` + +LwM2M client process logs are sent to syslog. To access them, either: + +- read syslog directly, e.g.: + + ``` + journalctl -fu svetovid + ``` + +- or stop the LwM2M client service as described above, then run it in + foreground: + + ``` + /usr/bin/svetovid + ``` + +## IPSO Objects configuration + +The LwM2M IPSO objects do not provide any way to configure sensors, thus they +can only be used to report information from devices already configured by some +other means. + +Right now, the Raspberry Pi client application supports the following IPSO +objects that can represent simple devices connected via the Pi's GPIO header: + +- [IPSO Light control](http://www.openmobilealliance.org/tech/profiles/lwm2m/3311.xml) + +- [IPSO Push button](http://www.openmobilealliance.org/tech/profiles/lwm2m/3347.xml) + +Configuration of these IPSO objects should be placed in +``/etc/svetovid/config/``. + +### Pin mapping + +Pin identifiers entered in the configuration files described below are BCM pins. +Refer to [pinout.xyz](https://pinout.xyz/) for example to see where they are +located. + +### IPSO Light control (3311) + +Configuration options: + +- ``data_pin`` - used to control the light (by ``svetovid``), + +- ``dimmer`` - PWM controlled light intensity in percents, may be omitted + (default value: 100). + +Example configuration file (`ipso_light.json`): + +``` +{ + "1": { + "data_pin": "20", + "dimmer": "45" + } +} +``` + +To use LED module, connect power supply pins to appriopriate 3.3 V and GND pins +of Raspberry Pi and the signal pin to configured ``data_pin`` of the Raspberry +Pi connector. Depending on LED module used, it's possible to drive the diode via +signal pin, without using 3.3 V power supply. Note, that standalone LED should +be connected via resistor to limit the current to not exceed diode capabilities +or maximum allowed RPi's GPIO current (16 mA). + +### IPSO Push button (3347) + +Configuration options: + +- ``data_pin`` - used to read the button state (by ``svetovid``). + +Example configuration file (`ipso_pushbutton.json`): + +``` +{ + "1": { + "data_pin": "19" + } +} +``` + +One terminal of the push button must be connected to configured ``data_pin``, +while the other one must be connected to 3.3 V power supply (available on pin 1 +and 17 of the RPi connector - not to be confused with BCM pins numbers). diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md new file mode 100644 index 00000000..c22505cb --- /dev/null +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md @@ -0,0 +1,174 @@ +# yocto + +The [Yocto](https://www.yoctoproject.org/) project is, to quote its website, +"an open source collaboration project that helps developers create custom +Linux-based systems regardless of the hardware architecture." Svetovid includes +official support for running under Yocto-based systems. + +## Supported hardware + +The ``yocto`` target does not include any hardware-specific code, so it can be +run on any platform that can run Yocto. + +## Features + +### Implemented objects + +Without any external additions, the ``yocto`` platform implements the following +LwM2M objects: + +- Security (/0), +- Server (/1), +- Device (/3), +- Firmware Update (/5) - as a stub, +- Portfolio (/16), +- Event Log (/20). + +The commercial version also supports [FSDM](../FSDM.md) to facilitate extending +this basic functionality easily. + +The Firmware Update object expects an executable binary for the target platform, +and the update process will just perform ``exec()`` on that binary. This is +intended mostly for testing or as a proof-of-concept, not as a production +solution. + +## Device identity + +If not configured otherwise (see [Client +configuration](../Client_Configuration.md)), the client will use the following +information to connect to the LwM2M Server: + +| | | +| :-: | :-: | +| **Endpoint name** | ``svetovid-yocto`` | +| **Default LwM2M Server** | ``{{ coaps_uri }}`` | +| **Default DTLS PSK Identity** | ``svetovid-yocto`` | +| **Default DTLS PSK** | ``svetovid-yocto-psk`` | + +## Installation instructions + +### As part of the system image + +By default, Svetovid will be included in the system image that is ready to be +installed and booted on the target device. The instructions for installing those +images depend on the target platform, and as such are outside the scope of this +documentation. + +### Through a package manager + +Depending on the configuration, Yocto-based images may also support some +package management system, like [RPM](https://rpm.org/), +[APT](https://en.wikipedia.org/wiki/APT_(software)) or +[OPKG](https://en.wikipedia.org/wiki/Opkg). + +The default configuration of Poky (the reference Yocto distribution) currently +uses RPM. The packages will be generated in the +``build/tmp/deploy/rpm/{platform}`` directory of your Yocto directory: + +* **svetovid-{version}.{platform}.rpm** - all files necessary to run Svetovid + and all the additional plugins and scripts (e.g. [FSDM](../FSDM.md) in the + commercial version) + +* **svetovid-dbg-{version}.{platform}.rpm** - debugging symbols for the binaries + contained in the main package + +* **svetovid-src-{version}.{platform}.rpm** - source code that was used to build + the main package; note that it does NOT include build scripts and as such is + only usable as a debugging aid + +* **svetovid-dev-{version}.{platform}.rpm** - currently empty and unused + +To install Svetovid on an existing device using RPM, copy the main RPM (or IPK) +file onto the device using any method available (e.g. using a USB drive or +``scp``), and run (in case of RPM): + +``` +rpm -ivh svetovid-*.rpm +``` + +## Directory structure of an installed client + +Assuming that all the packages mentioned above are installed: + +- ``/etc/svetovid/`` + + - ``/etc/svetovid/config/`` - configuration files, see + [Client configuration](../Client_Configuration.md) + + - ``/etc/svetovid/dm/`` - default directory for FSDM-based object + implementations + + - ``/etc/svetovid/persistence/`` - data persisted across firmware updates + + - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, + but not firmware updates + +- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM + plugin + + - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional + communication between the FSDM scripts and the Svetovid binary + +- ``/usr/`` + + - ``/usr/bin/svetovid`` - main LwM2M client executable + + - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the + ``fsdmtool`` executable + + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM + Python runtime for Python 2.7 + + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python + runtime for Python 3 + + - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime + + - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin + + - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for + Svetovid + + - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities + + - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable + for the ``fsdmtool`` + + - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules + + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for Python + + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell + scripts + +## Launch instructions + +Svetovid is configured to launch through the System V init scripts and it is +enabled by default. + +To manually start the client, use: + +``` +service svetovid start +``` + +To manually stop the client, use: + +``` +service svetovid stop +``` + +LwM2M client process logs are sent to syslog. To access them, either: + +- read syslog directly, e.g.: + + ``` + tail -f /var/log/messages + ``` + +- or stop the LwM2M client service as described above, then run it in the + foreground: + + ``` + /usr/bin/svetovid + ``` diff --git a/docs/LwM2M_Client/images/raspberry_pi.jpg b/docs/LwM2M_Client/images/raspberry_pi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa6b7e65c4cee8669f7c248bc62aa4d5cd6e929c GIT binary patch literal 387061 zcmeFZbx@qm_b)hu6D&Z`0fGjC26r;J1$WmWz~C^r6C@A_OoB@WhrtO>aDuzL>mUIV zoRFLM?pE#A*6!AC@7{lIecyim>3aI9?yi2$`SdxTbGrX5{Mi6JRZ&n@004nNfYRRw z@Mjqy3&6p`!p6eH!N$hM#l?Ao|BL`14-cP;gp}wRE%kFcT51{^dS-4`dPYtr8X7j? zmz=M71q1}1vx-WJ@JVp<3-JBZ2@n?-7atFwl7N7ckAa4P@Bef8(+ME{XCf2mKt=!> zF%X>?_@@^@0{{Ymn15&ce-un08af6RHqPHx&8Gk$IvNHBItC5~1_mY?8Xgevw~-i= zgn<`JTFZ)*(H;94Ul@~&c2aIl*CZLgwFk58<{7zwPB@Dky!IT&CQsM1o8pDwl)P;z#6Uy;=Q{upjTjx{?`YCmn52w+ zR%h;ENx75HYPvR=Wcanu$(XINWdAGy@X`Oyix{04@EUOaOAbs-43Lup5DcCtUu-y?xh$W-LmfErFr)5EAE!Y(@xMzRQ*; zfI=BNdYFP=JeE0lBo5s$J0-RBI<<(Y6zR#Qw}=F)9TZa4D|9oyWd9dU{{KR$e1c<4 z>2ihaqysR!6M(jU_7^H1b9y+zO)Y!yG0N2(L!kQ&yH&!4Ku~i zq>yOnnQ-T#TxPcP1PuuNpi;wLc$&ZTuk}U{^#nXn_EpWoJ9{w%?bIDi^<9S?rr!Lb z3Csirw#9r~R1zeRdo1>7lQ-MaMC;_OEi2aI7^U0G{C30>)6TSwMd#3t&<=4b7C9v? z&dx}p;6k+V&o7sg(+2-f6zTt{t;jkfkKKDsF>E;<43Q@gk{Vc%W#Fb=g*?~#pgUt{ z@2#I5AzyJ{Qai-?rL@zW((h^_erM-%+;pw|8efT|Ok zG@p{*!E7ldpbgZnwO?koI}s=I-#g&=qRN$BuD;q)Vn#~0NJ-a?r_{t?IEdtylcQ&3 z1jNLkG1BA2g#KIoFRa5{No9DJ-xr^tq*Aa`IsdGzx>V8zT?7nIFJ9?P7AL-~@qR{U zKk!}VfnPGYne0p&vM)=T7(b#)keKTYoMdZDL%YW3K_zz`8GgvD-TT8j0C_T~y=wpu zS7HAHXd{z!DhnXe#Z)M*Vk{lohqr2EJT-9DZIn_*MZ1&$U(8XPam{O|9_Ceq&dZ@o z4{G1#*#m{a20IxX&Xo~A^d?+R{OLKoUV9)UUq53l1q*lRnK`!<-JdKP{6>XBt0!P! zZoyd|&q`#60Om$0k888i=1o}9r=Cx@iovVh@doDiBsh!81V#&jU895!7_`z)kk|yh z_!#mp@0iAqzbtCFaFcylLd3-U3orjQ%N)15*;tUW;OUCMO~OgzT6p|!sa8yvhI^*? zG6}U@g0(?CJ3nc6bm}sysC(%w)%VNEQ~F-+LG8#I1>THeFea04wic zBa5IQPl@m*(}g5gU3Bdfy|(zN4FvTi7+c@2I_m!L8CjF5OH7ROFCP8B;&Mg6GDtONV?q?3kK~P6z8g$vW_=SabME=31LyYa{NwWYa_#jab?oj-#tlE4V9&06gIN$S}SC% zU?763NhPw7ui`*eZVmKl4X5jICsnKUYfTh$aB8V6ns{d}Z(+j+ktD{ql%wWHbaBRi zQ3stGo!SLgV$Q*V;qw>b)DdYhB(-5wy7ROyRv9Cj&9iwz`jn&^JP&fw4+JBo!2L-p zIJ=wta9lL~uA-{8e14p&i`r*&`(>fV4wy|L)Jv!XQbi{Fg*Vo4B*3#BlEs^PBfXDA z%l*DxjH&`*x>!r2pG!BQbR%9^t^(Hc3g3&JOt700H0o1?uJcxdE%Ft)^oqa)m6&ti zk^$%`*C_q`RsJj(ASZCfNI;n?%5u^}W0v~MFTL3%QkyI3hoPwikbvFiun}QTRD+=@ z4!(wgvE|3M+*XukI2xian~{Z9Ox$-Ih)Rb;W!-B>MwzY!9|)E=<&(_O48cHlBLjVldBnvI^2MYZ(UF z3{>u%m}gj zy>q52Vv>d~O0%2 zv}l_kw}n+%eRkPK;5|EqQufzHV}tD4;~?i!N-N!9LMqr!o(ZkIxEd8?VcU*)SP!sv z-E3u_e7;5ko^X7Yr5#-@8ntnpcgPf2r`;%|U@~;=3`So%|(p|;<@yfs%8e}N}A!}^Qy?D9*COQ?*Sl-{suuZ_C1Rxf+HBBNjh{u#8@`o z0uV2cmz26pSoJzaK0z0!G2YnAeCp~x=p_>5hWyBJ%z~~p-?C@yq;I(Er9osxpAht{ zNLC*1D#_&-d+_p<=BV|!UUt?-TWaey{ekfP)Sz;$ zqkoe_fA-cNfUQd&(!CfI^DUxsS7uOiew!{)@sS z-)Sy-(U*=#+t%rJ^OK%%YSAmv4prQjyEj*Uknoe9xhso{GO4pKAWIQaCC&F8>5qG= z|LvLeOVfSwCPOSdr>`sCtjMR=Xg~n%5W0#{eo6qvtx5CiM5Fg9`b)f? zUGk*3!CU(P;9}$YZtY@8j`u4Zt1*wYhtFs{eF@<{DT6ORn2McD3qx4Q3T-UD2sukr zuNtW`*%fnVyxF^QW1KU_s`)I)?SytF688t7e2jpb>LIQ$OxO_9;rghpzxuBsJhoe?`$m@+0n)$k;G}nV#`REp?RN?o% zD*}hM_K?~!x1wllxi@c1*zhOiCY|P&rCWv;#u_Iqq({yBq5!~Vl-@NR(!L@EE9yhV zb3y1fG;)9lCCZt?>S>u??u3@;ps33K9Yq76sHW+Vhsc&PMNVS*eynN!Jv45DUL4yk zGYmRx9JR82I@L$()az)$dW`slMMaZXo!ZK&Kk-_lSs6Q;h`Vh@;54Pdg6*5EbqFMd zLRsZ(|699coWDO?^(3dzyq>mlHTn^x5=vt8X_?keA0+6 z*L;wHpqTNHEj|wKw09{zkb(eB;I-)1HD;!`_YrpL z@a#co59>bXivZTF0+Yr+?of-MjNUfCs(0OvtHR^ar@TJqUdnlqItmXvq#P(|;F3ju zRF{Om-S7E1ne!m^sb22fL@*AwV12SGStBD-A^f|hMX=-MA&kCc#=*J_iax4i0!18z z0ktYBJQVeE&1iEDB^GU66rT!dQ|I`zJ52pn-V1#fjjVkc3)?x%?%gAR&u!(Fnudr8)iod+SKmf0?`?~&a3pX6QWYosYtF) zyo%oA@vLt)GMs+NC>izcGjk_PAkT6 zJAzP2x}FKdL^Hn-(UKs@H#xW=+D`u(Bc=Y{(4{~w-pguZuYFiQH!n9bK{Cp$8v}YD zx#N{g)ZnaY44c1@xnXihU|ZN1S2fUuR>!IWQbnAhFIE;r(Cxd%c>#;y-_IltdQn#vz@f0j=TrCweE-n_8tkdI^V`*~FH zYij7CbFJq%L8TXP)N0d!YWxF$7~iG?z9pbHzHXMAnVXdgm{zzDYMi~4oEpqC?Z{5% z|5#R8W{mr$oG@s~ui=OxxkA(sD5-0NWq{XkeLn+{8_jCY?d5GHKUEnv`9UHh_g2jl z##B3#2Ynl0jCpZ!vMT+;aCkRS9)|#cQf~=H4T2;ks-Ri4R5zxWGj*@{u%33={e0ar zi46H>EM!(wxAw3SV*6s)s#M?vz9qJ0DQaNMcYWWuN=OlGoWwQxH+WH&C>jtR0k1%!94`2^)t>lF1+ z9)JvU9vw>5zTVCASXrgnt7FG&atbXKH_3@DhCZvWXEETqMR0<$r7lf4YU9l3+1LCL z0K-Kb;hDol17{(ylhAw%aBbbcGG$h$xmve9!+8e5^JFi(U(ZHQ`t%*>bFxNZnrQS4 zZHyTwX>A?@6Jd0!`~bF*%cOpLib-5z@QVwkYwdI+g|T$9B$dH@l2@yR=H+((^8bJN zf9lKmYbse&V^t>_QSJcT+&IEmUnGjPBB5~SljiZshc8IrVi}@pDnSDt4jp@|uosTA zKPt;Z*41rI8S)^WK#ab`#tPelT)u@&@V0}uUG*B@^KlB}AbY8zpWIqn@%AvZ8WR@e zgaW>GLl+4j z*+h0>{QII2tFrF&e-c*g*6g;`{v0d!k{ z!2!rbS5Mo9RQAk+*UzwO@_=K!B5|3!;#`LBS+1HWY5=9OK~BLz&jPC{P51j&PFO2* zapl$DL4=u4W-U&~f~&p;Sm;IJX4$%1evO$CajKPQ-gxWxI2Vtrsl+!u{i?Q~ZH1s? z)(%>U9i7Tjl@7g8P~+-gsnNiWq|*jdOy*m@dzSH~?_GT*7pv)feQSl7FXV-WpKCOT z=<}y@Lgbr;czt%HyVjeV2G;cBqR5QPPqjJO?Zo8X@m!0BY;QiCzqv5$q$LRN-0!EM z!!#v{qv`6=3Px1;BH8hC69=yQFJ&{4r7undE`&;djeA=Q`S7C(f{8osN(MFsIIrLT zU|KEG$6GYhc&{k1Mw)i8BaZE&ix|ZFg@xiaZdoWC*jqLsnJj%>`w3*EyO`0|nUnpL zxJGA2c`v!#K@7ePE92h_e5B#eLO5RV)t9lD+0K$V7ugU+rq$0)o2z<%A&QTuV;a6a zsts4NUo<0AFlOs57i(9HLkoC$W5WZrVDk8M>Cd?VSSD)Le`vpa`E)fUscp8xhKZXC zY7(T3Hg6>LW7YU5$ud|)iSccvAmLEA2_>_02khM&^NR(OG-z6asu07QgC5(MMh@kR zW#}(sFBl0Q*c@-!auU%5)T~KioJ;l9ZnAJAL~ThloUJo80FGcVEn7X{WII1owd{}@GSa5{JsOHh4?$Z!2K(-)mfXkO3 zy6D*x&)ObI^H@$`YMzdqp;ZiSdTOUxm+LLLLSRj}C_uFE)W1kmrZPGW%$4Wpt?`|( zp?VR_E<9^K9bmdVY2EgI(sW8CQE6hX1+MC7_)q9EKS5!r^9odVY(PIHv_I%-b-9;x zYvv=Tk>+*!tVml+OhDIW=?c3pe2N=q5BV>a$;n|=GW-EB{{f`#H4oBFT5s=RZTvE$ zWBTv!v~DY1z^fr8zlW#_@Eik;&hC(Z-B<N?+k8;%$j7DNS8(TO+{?qYtaNql?vC5Q!g$6dEZ( z+%lNpcE`>wQ7XLk^^>=&oF3k79b{$Zi^cJUzs79ifAT3^0xC-Ks`$Q&r>(SRnu_n# zj+@c2asZOHORK?FJt({6aM3j5v*o>pqu`~L#+^DU6aA~^v+2IQY~}XiN!zIM!57Mg zhJOHN6Z}xN7n}LQ{1CUb`R4m%g;lQ!b~L~EAl*b$80csjqPpww+MhJHV*}y-(y_4A zi?!DVOB>zW2SyZ{oY~P!$2wrVY~h`KY0|aLYoq=)zH@G^EZwV{ik3_l%)8tg@*RR` zC+Rh3#m8Z%eDl0( z843&z3%vY6kh0(0?`QQ~{ET)`3$AcSowoYWV%KDp3OAA+k zID5T%;=cU`F?XMzlFfnPYjAjuHhzuZoG=CIt3sawx{W>EdpRQ~hS3jig<*}T+M{57 zwQKd@SS8TX@-N*9m$F?7^fSGtgU~uW6zt$hWkgPiy7R9m83c*&MpOw%1$^2utNi~C-4YE_)_m@fR#&&x*&Tp;7qPWEHFrIP%>(0 zv%YU=^)?9g?o+NX8(!`DbZuosMjhc!xggo+nb0TiBTR$I%};$0)Ci%dIc%Ll(|sY4 z5qK+yF}MDgo9o`&K+3Z_ef+V~DpAZ0As*L`ID19%bA#3o5&s=hCe|IMF`dfB|+j4Ykze3u+n)zUWF7AiEaS@I*ALmA*u zguA&z&gy%|49oo z>*$?yuISLasNm9P3bny%`7D-EnewJqAV}wMq6#4*8&}eliI-q+P9<0&K`}>h^%ybS z9y1Xq_ThW6wC48C+fw#e4#n` z<^z0E{|_MY(LA+7>yGQk=82#TQY9i_Mc73ZquHU5>m9|6NSJ3S+H!eC&lj$BiAruJ z>7dV8qh}lP87@J3!6aDwdC_H|+E{~cO!p}OdlV!}CsRW*SOX|;ic~aXT#A`e#t*xl z=$;v?qFjDk5EDMh98IrzNK*I7SCi_aS_GFRg}b}tQ{oW>gxqJ8&66;NNxP;2Yc?9k z>TJQQt(~RS1Xvc)!wppucBuW}BDw)7f@gsL0G@VFtjhNvB1>JApIF{$FYF|W3!Vi1 zXp0_H651gRzGE9Kl{}nF+Uv1g#rb98-lS8Xq;zkw`4>86g|IS!9fEEY%fUmTXt<3d z$ZX(qLF*?`haOHyC$hG|TDw~Y%(XDhrE9S=*Xdwn3xOv5c=-q--AG?LtTwG3S~{&& zh4e4OYoTvz(8T*;g#aLF31&H6OT`MyUBE49-!AWGUH<@v3QwxMIr8` zBeTnM-y$5Q45THub&-`HUBg7+JV%0iBf*AI`g?1SZ8CbpDXU^;E{Uc6b&Kn~?T&48 zzO7r^9$yP0czB9zxi0Z;b^W&sy47wtNb>o!K1BDH=lO&A7pxCLCqoVT6e^KlTlw_{w7lD)^UE?JmC;kAu@eByBV9}aGOF3-c)gV@{FLYUZnZMLCOayaG zR5!>gsxLWlC*ZTEWl|o7r2PS$CZaTHMoh7LDIbj!MEdv6hQqGe#{7s>!}5cn9bIk` z&!e~SyWIvHvM|5tyj2M@8{VlZvZ0)yoB%%eU$US73D&nuH>KML#cROCBmV#%gh*#d zZ%V)}#cq>MV!+?*TFPF|jEptl|BW`xXZMXDEb8ru7IQ;&PW&W=(bHBIFeZOeV2h<`)X}JW_7rR92qGH${A~2`4`8AsZF!ger{-{fKFEci_PScnfxyMJ z;-J#Y_8TbE6Ax5*9WRj|vM6nx08J?NL^R4ff8*N+;Iw@VMqbc7b~;Luv(^a~*iC1k zkNnO%Bd&Pf|0=3}R;?)j&xwU*Az&G@?W@3L(qo9I%Js~cc;nHx*`c4HT}R$l0k=ebWm?!{m8tX;u0>M9Y-|Ru|3Z66S51ql4Pkg?j^)i-*IUDQ zCtPwAH*yx^IQ4;4y8g$kaX8x`5yD|rCwnv&=q#uZ5s>79YHVKWK?1nJILb0=71u}+Y=Op-8uks$surKA0i1pQ zZr3QaI}2@n`~9I#JlN8aKuv>m<#rl~%Uef<%X(@J(xV3`3rpX;mFA+;tctH7^;37P z+q}i}O;Cjp0iMUikB{e-J%*zvBY+5$N+L$NSCmkqsW8Q&S*cjII2T}QSZUe;(7s$T zuy)9Z(a;;8Nd2`|K@WF3t`~)M&vaxf7Epk=rp9cot`YOX({J$ku5Q|Q)x5xlMKPGl zQPk90M{mAfTkB*_`NNI`>w3~vX2Rk7scUKbCN!XcxArfFimNyH+|Nq0f0$4scw^ZB zcHv3QPBycYmCsyo$v;4xp;Rqn_~_L$0YrBf+VL^ij;`aAN_L#@;<@V=BXt@oE*Uyh zjwp_DnQUCz=58nKgH&dbv3@ku&%z?I$G38GA&}Cj)Pa3FAL*7^xEOK^Nbo*FfAwui zuI={()!*1Fg#qyLn46P$8>o2|6 zkGWznCciR|*+KD$n^96q1aL)7t$e7X7=q#yDc?Caq=eSv;RQlI{ zx;5gzha#jc^}x5wNVIiukV>mLgeORGErk_Yf{8e)A7=?(j)a`#2Vay~EAj61F6wH7)PFK(H~C+&@;1?Mt$Ll zXENTm2Q^EDL1*-46xC7b4>a77t+QK%gMR>pnXPB$(6|7L;-0UH-3wAiW@lT5A9G~< z>sv9$zjr@C`YXNp6ZBiy@s5mQlsEfc*L?d;{cMulo3g*2khXj6JW^-4S5WN_U{v4l zy6w1OyfR3;`S1c$94V^%dsS)s}^z-jm)+a>18AoWXWcy+{PV~Gh9^umym z6RXjvy$T7>jXHguaZvsH)y?Z_ZohIaXr&+7!{@wD{COPDIT$GdLiO3q zOZEjTSb71X$+S}JbBCm^e-n<8TR(p#@Ekldf{>3nevNad{GB(qaY>jWrda>6r-0zA znO*ovaCO_`?tw21%KL;8WhkHRcH}|7@W|j!216^jakZht?n$%Yx~|!&5o%E}ele;2 zO;#NjO{9+c$2Ibld$S8u3*+ZGtvM@AMM7nz6^G}ia(X|L_8jo4pK0Yb*7uxwbESt@ zM-=@T_X%e6q{_NWPGIe^39CdSIB6NKFyrqhX;Fp0JVk4jsHwNcd0wff9^{H0e~mx; zsQBOcou|ey431R6cUyci*l}kfnW3(QCn4s;1<;JEXn}vI9Ru|dMfBzNCb6!B0M@%r7o1as+u`- z>7IiyYG-Y40H1`nfcR{|eA6nxrZjTqQth0PX$xKd8qevVD>zPXly@|}AXFhA8LqYQ zIO&V!gobodfaA}Q(o8G-Ww*aBFJEX$pnw0^d2S_Zd|1?jGTHpvBh0HD!n8bZMr7R{ zpFzpt@I~2}NBwyHYQ@NHh2c2o3(?jsFAeyW=Jb%6B4*dfb`5ioxwp2wpBVn@r)0eK zy&uLFFgce^RJncLyRom)^mfEd4jdlZ2G>Nb)cy`2EDOQw-6{)9aA>=Y)GujUe3{XC zsk-8&zapOe5AnSmq$meC36gRQb#%T?HnVVU-vv7tuf0Rt&eRU?Zz+bDkdCvVLM@<1 zT&1hJ1l)5ELrtNWcxAt2wpkY zNvc$}0Qhba=2a0qQTjvOn@#JrO?8q5qKLY9U1ug7QKM-$;bCUW?B_m^x0tkc7! zs(+L7zWQK0l7ZAXj`v5sf4GtFd~hoFG+&O$#gtDO$N&B@pf@0zR=)XR;*(c%b-!K1 z)egBt{U?A?ayD?UfiXS|(P*B)!8>J&af*=;E5sfD^Q? zU+XnAz82Il;fSa#KvOG60~YobpXrL5Z*Z_A)zqca0MJb`*|22Jt7niD&nvFkCSx-) zK6>{!tn0Bkk4G(siYGTJcQ355O*|+lObYx~TK9B?C(YXi^Yk|96L9j*&DNrG4fxsQ zP-5*wp>zYkLAu?orVRAXb@pQ)Rg4YsSU#E6A6-nk=PbMVb27dmeUe`ScN|3jBCc9# z=7Fx(?5Xwio5PH4i*jlrvD}nqr*(wKY%77n7GrbH;+sP2RHxQgU)t zC)84$hVJ8L|Ij%2nZ)dml9C|ZpQ<|IqpJdy+<$W&Wm6GVI*1-fr?2m)o*R+UQVMjE z@8#Eo$8mNKv-S1$z6Fm`3`T;w-#%1M7Jv1A&N3c5s8-?bnK!a%er<>bTLG1L-*c9v zo?~eXz0S)GI$jGUE5=E>_O8G%HM51{@r$Gy+N*@CMRoMdC&E7FtrYpD81T`f$H7>W z@Z^X$;cDNnIJ`elyk@hv=c1rT3Dka;Wv%Ynln05f)8D6Rso;EAG0Dl6*>jsBc>m%q zsR}YZMZ}~S(rg&6E~!2@btF4|_*O~2ht|)cM%WU!(ETVkdCIAUnRc~>%7BU=kSe+N5sMh1ObQim5-qVA>Wn9iQ zff{mF0nA6&lT$=r#8Or#KGewLZ+0eC#MJ>;CG{E_ zX*e!nO!uncsS)2oY>AFqWN6vNVIs9lr%Ls>D9bDXqBGo8#F*4%87snwu?mtRH&NJ2RMH|K0liE3+9s7>NXtn z%?=duG0VFi(g?Y(JuNv})+UhnmJR*IfhDL)rT}{JT({5G7x<1~+`{CScC&1egZ7M& zea4lD*gdEsF|d`yKba_e(>I3<-Ky6iXTl=6mV|SA0X-n_^R%ojaMXohpFLST(SA&9wfVH={bkd(;dm)f_12(<^F545y zpA`-X--Y`BG6LaIyKH71bBDG?_gcDj+6szkUT8fojY@7;?KYfMKWRJH_w?_rss%i1Lrv##DQSickM*1Y^Wt2MrNnfOzSpAtiw~eA>EVO6fUhg7(zmwbW-@eDX|LekS0C(XroT zoI)J~^aA*Lf(5?OJs&-=8cinaYhLlT2oQt=gY%A_U20DCnQ?|8JX_HD<5x?n^_3;u zs+&)T#4fd}_2#UnDBW6oB!m_VnTB}AXEipz(cgTGkDXOy0<(!U*^BGZ7G#$Ap-*NJ@Ys_hC_tgI3G`ZFBH{but=}8q; zj*nRE-<>0}ox!7PmIVKjLK70BH?b$djGjDTtt@VmD7aG#r!TTQn$m_1SMQ0 zNWM@I-?vTnbNk~K^}Lj+ww1rmD-7P0#u(}S3HGm|+#?saG%klUF8g$-Azw(+nxO3P z{wD*{VT3kuCy$4~q^xa$V*|y2LeZQFej!V`e}XEkIw9c1vVpo&)FdzNMZA3}RzS+C zb3ZQHX+ukBEmmBdmq8tbuBGskER!+7zIhjkWx9aEeeK_xx;hTgvLl|v0g$XjEgBPM z>#u0F>kEAPoM|%a_#Lk(OQG|+xd%My0Xt~L2St?a+ou#ifM{HkAKyMiv)Ib=ZZ6^f z0a)(NxPZ;%F=3&5&8m-Cf@7m*bwL%HI3&h z0iOv%6fQS>zWw)X1}W6h?+*Z3lgwQ)#+I8>GXi*y+XDIn(5imWm3rAr8BCUCowiFr zx*%9w_?H@eU6`4#fz+`zmg`-kao^9Xd*zz85I9GPKWh|E##~Q6ckH5Ia=&W%?V@qX z^vyIz*Y+5<hme5u%im)BnNPY8UoNaZw}?}5r0WU7v8=|fHpL|1 zK%#8kH}Xk#A(A|T#Hu_u6NvJ=53S(#-;|Y>)H2;fJ$-^z1D68*eW!hx@TtpN-W%&Z zlhqnlG%-qzsiCo}8U4gzqD56yJR-TdDBQjk_$;BH8LJdDDt;wvA#!SwDwW3$-DvB8Tu19)XH#I%ZcY-s*;4 zKlP!YP5E?`AzeeIu=>mh1Q)h-hmO<)de=0HzcghfiE8S{U$X%%$^SNB;AR9szCg44 zbCq~s1WcT*!@(y?OI^4+8WCYv<65y(?!&YivC1#;`FpRV)~El#l5M8Ei&iOWUc=I*NUS#@7NOF=j@vCNdpCI&cE;C{@@X}0CFM7Tm zmobp+*Vxw{zvZ_?dXPb$1dXyZ1x;xTTKNV8JOYEP0FiC)ZC~iCyXZP=-BAMK?ESaG zL@4_ePrOOPvpvE2iFmNdvkUH33%J z1Uw@NDQuyx1Z*2rBix^004~`_gGIf;+$v3>YbE%eqDj@MEoDvbj7oNI_%%R`3n%2m zHaR5>Z;?ufUxgFx3u5E%@yKl(?I(*BfmQALuJVZ`f|!-V}c6L{s8c%@9Rlza`X=vqeclD^|n`3Pc%UN<_Fs) zFfRV8Us~b;mndChInNuq$%K2Q%`xhj=`N19$r-+y1lZ${ofX*=3s9f=%?4Ldv6!KY zB5a>TPnoH5pF+G;SRdC@T#ulEi~GG1(oBzIFZ(oUUt76tT)xs)9Nnfp%*rXUZ;8~k z&3QUPZF7L8$B1QA{CSLup9l=Fl^MU ztSYWnFH1ZY?En<{ME>5CGK%cI9EotM@P zoTM&y7pm$G3weU6B4ug7e(df>5)M2w3Y?w6^3r@&F(PAuUt1~qa2d~Ke`x}zIh-cm z3(3M2OZDAd$kf=vP4$7AW>(7J9wW`|sgaAihoOi*kxFC~u@*Vj5QSmX%sHllgX!y{ z?AE~UB*f;3hX{s1e2=d-d{Nat?FG{J$BWJi6y1}}6)8_07LIf3ZWl-B4qsDF!=n9X z0|?#qbqfV#15P8yqc98H8oxqA#6BkzB6V= z^?&gx%rNs4>I}T)3H0L1px_;AmWYN8&J7*&wJkUs4J&J+TP7aNeX0Gi>iXP%N2_@8 zLtEzip?RFFD_Hk4UkI%fi>AB+3x{ebbuB}%h4)e00Mo^?cvNBE66_&0`)rSghiL58 z9sDQFM}pX8`5C&kxJha%GZoYIaIix37G8?BXTX=Yx|WE~1`37|KX0@69*jB){VYh` zG1B$~ZjH~_9O#Tx)?8ra`(Mn>KK}vK1+&Hhx~;l${RES@`sP^@<8g0KuB+%pDv(Y< z-cOcYRjaGs2i2}Aw_XVZ!NsexwgIVEl9}&(Lk*-)1xd_(`xBcUWQzyA^hWbx_~pI$ z!Kka00p^9s-82PKJ-qz#w3h4&hEb5n<8U6bB&7j-yJBWzm1*%vZrtHr8`3xG#lheI z2f&`6-v8?6a4U*k#`NWKa)R4TW5-%v^&?eJ4V5iC=Y>4W3A6MZz30TmY0IsHgk7sR zKMBsX27C{7Sdg1t|7}PUK`9N5ffN}pb zoA`*Z=GrkMZT1VfGV{v>%5sDmmt?WE(b_6t4TRaiBf`5;B2}nxZT{} zzogW0g=xrathanh*Ue+4d`~@vwug(6bE4Dy*Pic%rF)YFVD2+APDUYIzuXS=_n(~=^3ZI!_P_F2 zIA@1q3xLSK)cQvZT$uV|h}bou2M_5)ySJ316O*~YZ_IWxn7%F_&N|kX3G}~Yee;t% zOA)t{zn8hVtPpW9vWrYUJ+X|FOMKlgz;6=(X*76_+F6;bq|^1^Y4_$rUmQ)TwCYBqOF;ER4vk;SgQwy<>M- z_5jPZD5FQv@HHI(LH^~Rt71hfUXENlZ4cKjmKB|+?@o@+ki|aXa^;V!aKo%9hGAr; zj<$8*S-xG&e1p)XE_#^ioaEzm(@IKF zcj@p;6ZlG*t{TL;W7pwBV_06~)oS3wWr1H62j%augEf4%ETB!~=+7gh9ZLu9I?#js zt7x_~9Mk3`ZmHQVFu1AY+?(nE-yW6YvP`cj=%O?FaM5-52hCM+D_I4se61Z8c`BtZEcEVA%U6`6CL7OyXW^b5OEWvu78 z;ESe+zd4Q((QTRAO;<)B>{cCdzhWwBTJTDh(dLi0l!U+(hkUZjkjuBuOVhu(7GCE0 zNvub`QfKO?p;dizHJxdf6T*a@yB9=JYGq2L91UI%$(mCRNcqUYbJ(nNibNZ=1m;_c zaT$#5i(IPX?yNY=>7K`I*cf(Q8UlcpL8@8K9{SCadR#?IIgXqeJbZL^sBYKb;#$Lm zU}Pxt;9cBqwb)M~_DWctP$R@SW^@;GjL2Nao|bdkd@TvjSkk&+R!-_i8U^ppJ9Ih z_LDFIpGlkzDB}mAZXv*2*a4ZV4MK=!wqeNS#GLx|FooQU&M~vQ(>HwKU;|=qSa@oHHUip$s6vR5^I=RLIUN30x{i( z>Sm0DZ&l3}BK<;4aa+L8IhT4S;tBE1o`WZo0YpS@@}?p>^jpSB8zju$6mKr5uL-`r z^?aPn`=Ni77Np#LEoOI0^P%bO@%bk{!o7}s;c5#$GoO^0DRy1GXSh+qLRW0`B#RUAN?EE_kf7$ES=Jm&Z)G&rW8|NVa220(qK z&}~zBO`|iva^c1=IXM%m|2w;eM z)}XE$)K$Blwb#1WPQO_A>tg#Ih{<`yO9RKIo`&~+B4E3}FU~$i+W^-(O9ZdIGIz^j zXp(c7c6*iiP>V^S8I-p(G%==inrf@;&_1#1sx9yPhZRP@^jd+So+6iEpjwdp<@A;! zl3* z2gf6v1*XjyWcJ8IO1%9$3VQ%aoyk~MYMn35oP=~1+DSEaZ6Ll0ZD(N(?gdG3M=FtD zOK;UQmJ81blPo5_$ZQr$5PK^8;cU>d8AsL-Uq#`rO#eI%c}43txNK1CV495oSd8}> zs#oD-aO41N+G#oRyau97bs2zQWfh4X#zJyZ=zWHLmXujp8bgDPTfN!NP-&MvwHnp- z)hZ|2?Uzz`1SO?$6t5Nv8jN6d<-#=UAqG6qy_g3HlW)aYVd0?&l~`VNx^2#JrCkyD zMnqq9KLA5iOQBK*EtR)98O8)rLIh98*Wp&8ls> zTJOdxmZ)g>Zl2#{g!X9t77Ol5sSX0_XFdKHF}(pn#1Hg3k0tO+vMAX;6Fj!hcs5fp;n`PJq zmv`MEQ4eb%qHC;ui%lm%>~`5^O^J&*si&-MC8r775(*PYD7d* zKLCP$QyfmuAs)+hf3kz6c>c7)dSW-k1BKu8CZE7=|&Y9>w$?eh1@IBC_f}CzEQ@hJe zG9D}tB!-_@CAO+epov;hp2o@&cyIVO(mo>Xsz_V9XhHd;JCePuynk;5UY{s9+*vVR zSO&oI@#@t-RY}AONFDjPAN2G6F1ZkTx8lBMsLj>;2>Gye8da;-&O0qz4zp*tzoRIv zxPO%awDT1Llm5mxum82Ffp;(H=3=Qn%p1;w^`%EjRUYr7XyMrTIHF~WPDS$P+u13u zef%TaxCkVFsI5|Asp#;xzWunlWew-uxce7ggmzCyhE6h4aU>wz;D>BsYmDn$F_H}Y zCbsSlWQz99BnSQ(!_p?W$nocLbA~iRDf}w7S)Md(qsLO9A+ zxIkDztcp|6OL4{U%K{ObP#TEfrPxhRup+0Ut2?#2p`SUj_ZS~VUoGty5=!GWO42^D zg5llD!Wbr)Gaf>QfF8G1`PgeSu$m(boRk=xHiAa+hIq6yeVBA8D2t~kCtCq zWBELqtP;P9q21gkps5$7L;?Ob+xlbd0nz|v5%`DnXK5?ie5nWrZ?5wdj~JtY{T=u+ zwYK)eauM_|(`ZR1stA8LL}OzV^-bKob5;1yDMJmi7`^qdXLpA*rClRQP?s~;NAol` z5IFYJ_xQD#g)RqT*1#iqd^Ke5Rv9aOR*sIMm{Yvp<&uQb>kn8r1UJ@Z)ps6Ie&Cc1 zQk9vBXB`iXIkaf_IHi2cx8~-k-0a`Gh;EZ#G-^}(Z-D&l^d&)B+OWtD^9%LCqT%Fi zPgWJj5m#gscC4r{jK|R8dXUJm9#g_y z4uew}lwG1F#-$1I(99+AH>x#UqG3kZcb1Pu$g*{&USH(*Yj|3=h3?k{1~xmXm1Oa` zwaJ*;$P?~+_;%**SIdEv&?v65Os*92vAMs-WV!HVgIKtSm#1T5KHTu@)oTFJ8V^9{ znA^2b-icO}1lx_>3g#solcUl<@`@3}`->Q}ie)OL5quwz8pxkoDkjnY!kV(WuBA8^ zNL2vOx!PEcS3*VbrJQi7I}UaE`B8yoQT>CW>#mtFyh2_xkghudTN zw0m|qk{)}hr*yxN{5pk;vi;2JS00F^FAYqk z0fK2H8S8=Onr#0cFoV!&6U5N|I#6@ycUh^axvgfire%&t|8$ROvR>C2;Er`E8+F_H z(r0;cVpy13Gpiy++#f4tN!A#+xT@-$Bm=#*L@jI<1Xp5MIB+BCGE|!Q)+lXzGUIM! z-p=r44szL+OSavTvt(Lima(HrVRPA-H-komzdRZXPVPn|E?*xs4B)*;R-u?A_EwX# zs{aQ#y4rX<+KxQZ^Z5@ju(9mk)L>=rb|0?=>+X~wXntF$0^JJ+u*3fyprAtk4zI3rV+ai*A&6toCkRi6c;e45`>>BohL zVp=-c+n)Y@UF5q5W!|;VYaj9O+&6z-TD=8LlfK}Ru8{%+7S{MrZP!dVtRv&2MU%IF!{U#za&cTDtU~?V#7BQ8=F8NZcWsDJ)YW@00v=z6oa){J`W==qfQy{Age- z=5kz}Lfz=x=fOT#`(t< z`IK9Y`~ch}IOxG&>Nwlu`h91Z&X;zDZ>Ex-jXRB(Uq`lu z2^Z-}joW|F{8hA-(TM~ugBlmq<3cu2i({i~3YsH4LrKaNdLGiOQjS4s+?>5<9BY3` zL{U;GN4ubl{z@M-3Gz%B9CV8G3Lh@3Y7iX{HEp{%-TGDyKc_CXMb5#2H1m}!*>iGA*bE#r zpSOn6m1t9uYh~KhWJ@@g^U@2xDB0eCywkYw+LiF0DY$BoC-toN@>#ca*G-I^Rp1fxT$H3<)-4ZOYl9JK;wOe= zlJQe41hC^)MkWC6Cp6{*A`z$*9ujN*+aT^8?SO_QC5|L*N%ak#;UqjM+|iykSxTZwUrN&(i7dBSkmfUb`mtu7 zimDMzSe*XQ*px%@xne;(8qykVs!!KHf#R!Xtc@1nf)3CW%mi{ zy5CDY1v`uP=4W|-UT)MQyRkBr`$v2MJ5ukwcX@mum@=~aCS>lm_xGcY9G{O=CWvhN ze01{4o4oI;5T6MqjOkLClsY)ME|twbS@OhS_$bw3{N>T>i^Lr+Hu9&ugJvOrm8L6i z!t!25I=_i1F|<)qEpHr{qn^X;X4lLpW9%@qqUTYY@}uFA4>$N~Nbd z42B%hh*}q1&-Y^#I6Se7E@s=r%&EnL;r}te=xT%UZ{MzqCR?wZqc!UKN$IwjuR{ms z#ghMDoKcbz`jzWtvVSWZtd-fELHWuT-l$Gami4398^WoHh5g1^thr&bp<1iZZ^#Y) zWf?n${Bb#87OtKWBD!dOv~H^I-U{}~^2%$>7{{Biun5<1D}U2pca-m&7zybaD$}Qy z)vR;I!XCjCP1)0>vCHY|Gh8-oxf@~Bmyy!ho{u-O9a%EJQ^yzZHx|2bLOgy{;1GOk zaXZX}B<0x`W(_`PzQ1bqNOnZM0;>JEY>SG+DeMP4fhOU4CI#I>CfEAu0S=XDe_AKN~Z!bjbD-EQ>|@Kw3OHNFx2$bJKe;uB^l(}GV_16{Cec6 zIlMVQbw$=Xgg1V}uoxaQ!wrjGGwLft#`%y`*OhAo#MYE0@R3Ao`!||gb?+DW<9dbF zqfejNBtf^Fb-&BLbq6NZ9M!BJiB3cdlIgH#>7 zX~9FZ-ehRiJ{U8zy(;2Y{097(3;dQ|YKPr5Obq5qLED%~cuk{9%4ssBC$OigVs4_9 z5$~Xe#JO#ahA}r@{Xx4$^q#?JF<0-RIAgb8kG28{6U9y`UeYX47ETzpw=``T7-zd} zSF@UiZoXOE!(XOj_FEP^#ipuqd7=S9wPA(QN11G~>(tfNC+TnHUZi}OAr_jkCT?N{ zg}>O96!)Jp5iiqgx`==vaAjc8)>p#tgIxXux6=zKPSkQl-+uFWR3mC{;rkk{|IDXj zJy}0n>E}p_c!W@XiXd=cTlN(AIZAqsMo?T4!;)zIfiz#@A_HzvexQVq^pcHU#8#gA z)n|d9Y+T1-b>wga$8lRPD=(aw{d*q8J1t*0*fjQM_5W6P7VZah#5e%)Na;c)7|XQb zhUoJ$z681#PliOc>SPQ^Zv5)?hYkN{CoFz`{BEW!+FXBCYxIG1mbyT&YS`vk>_qF5 zjY384oVUvpQ*JyYU#8cp7W^5n&@74Owa~}$DvST>ARQMSQb}hmL%f3EbUW|CMe~~E z<9gWE8bScP`eY$5VjeOh^EOcK7`p18XR=;Cf@YmrREFP9;6OTRUX&D!XUkqW zFpqX*>xjARdLn%r5>_yzgI{%>FFfZ%)3nn^i=n~H2PGgxl|8UnF zcV@kz@1aLZ%-q7`({=)3$qv{%~#A{Y$1b6~BFj)%c z-@ehEcJ))0z`)}UPTy$ijvLm$knzf9hOm3KW!)2;c|%UPUJ3LpNd?6!^}ej3XVzA( zzr`%n$)3YHGeR#0`+k+N-4#d^{BR|VR#hJ=bABn7|4oA+Ht_Hq!B~(P-%m1KUun% zlZOA8Bq@JAw3p5lkja9+;`9C-$#rQeF3tj)0}wEhT8gx(Aml1iSx&&H zNlSa-q9D?p7F7y?0QTvm#nc@dRaAST4sUYrG?fBfkG)ZC(jUXEk|y%zB!T)^uSU?6 z+RDHKo^C4J@_aBSiGT`Vx^k4Cx*Ez)uT|Rb$7q{~N2NRumPKcu8BF}HooMR&dDx6I z5{%C0Zfjla&&nT}#I2CH9C)irFie6Mnmi8>ZNDRa(21MZ<)1aqD=4MumQq_xf=2n5 zuCvE89O2-8uYbpx!~K|(71&9cbJf8yR>a`$XssZywwd*~XgT_0reYE2v{evAyUAf~ zSB4nB7EE7F`_`l!T>)Kq(E`*o{>4b5+}=rBroxkJ-eDKR=)!@K%2p&+u#9a(&>}sG zhYs8*U+nlDMJZ@<`~0g_CA62fbj64+qc@>rDjG(9PbmvLD7DYAkUM@>yY7k4VGeB^ zU#7)ZMDe84Ny?F$UD5V+e*2Rqy`|skH6dMzr_fj%B`)T_Z_JN-=N0OQBih)fs`n=Y zw{eW#8zurY*ha4GKNl6Lx9Ww7Dk5m@4^vFn)TyY^)xXhKbn!4`<^4h7Z1{_yY2>)g z0yyMo3Eq6?HgaoHt6Y6zn>GG{Tq~Q6Ir89tWm!YH;h1D?ZXdMCxwNYa_@I6NyPzH(Ay`@&}K79%YlEo7L{Zsz6aSP&Qn#{9C~Cie5`#7Y6?{rT-y z85gH{!lfm1q1hdv1+eerbo~vL>9^zEa=<`*7a`E;UwlhFM^SaC>_ zqj1Rvn$UH?Gy*=YWbFh5X0uTLPM~k$d315Z|21&D-JJ*Ek@_~SOfGE3R{XSVK}z+& z6T!pDQ?j=EkDB_dB$DkI*N5^nK+uvA{+k+A*(2bv> z`=x7y613)V1(RGgHLn`2e_5!BU?gefP}lDw2Mse179(rkCk)HK**d>rK!SX)7bWaN zSdCFp)eBRINP)-K-2KM%S{I(*gzfBFesPld|tX^)9eeK zSq1nKX`T2ew$C$tCxQhb;Ra*nrGvwTofb72I~X%@CbV^m zD@~{BrF7bG#qd#AB}j*G1k8kOq2v1QFbFwrae59l_7TfgE{d}Fr<8dJ{tctT3Tg>6 z!Iftj8*GYO?tdI4>n}CW(n)H*qjvMF;lMGnMnf-04xi3E4gcu0xAUb8YeRaJQ12-H zA5bcIlbE-snY!q2*jLP6j={df_2k8KG@GX@rL;yPe`GC(Oe){a47vyc10@3_tisS} z4C}HCt@Q=6&rdA#8K31qp`&47BvVQD5Wz(kNF1J%HK;w9F|jEOtbjq_x-f~(l8jO2 zt$J-%CG5BZCbLqz=Dgaf*4S3DAs%?CClg%Xy0O}eIuiCHadZfKTs}PIs5f6Dw{g(l z5JLcT=GYZjY`;oK_zx&Rw(^Oh-D5Z>Nb+rA-kWW4Wf44OpTpOJsPKpsZy*?Cq*DAf z4mV_}AbhF1Hqd8>%v($oT{|l_6w^)*5+zs*UX<6am2l|TUCqfC-A;I`&J}<2^qwAz zQbrNHiT?mO5qHx~Tz3vX=XJIFom==ih`(bq8Tamd0+Vc9k+r+>_|(DpQgap;<ObV5yw zH+Fe3 zhpr^C8oh!~g&D+o%lqAfpQA`6@t?dWW{)$m1b2rplM_~(ISWl?3}i@ZzdbLs{+2_& zFt6~^FxYH&Xka7p`DQ=IjS4$ty6&SFw;zWBIr8^$W)uY_JFyErsa6zUyR{GKpTJ9w zo!-{tlUdq(EmHaZN}oP2V?X*AreG~{Rsi6)I@*OmiDM?ZAX40ZyPUw-QTd@)+0F){ z@p{s{zRF;ne#-9Z<&&Z$E)I7}#3f*6=Z5L_o%*E`=%=B_E@b_eXS9%|%v|d~UPem? zkJE%_z0?y{9AXGvAQ_gn^lE5IfXF8eU zhf5gLTZwQG>XKGc4IGWF72ED5-vc|$-ss@t3S${6xI$G>P2sQQm;7N`7!$7K&MUBF zS3SvbofO!Z)R9pCkO?1iz(!9AH5l# zF3W!erLS#p3Tnek1*3H-M$)v#NH+}XsnKdE^ZgRnVE^B?z4+j46E#efImM#+rEg7? zpSq+3vAJOUT@huT&%aq#fhaTMpY!!8KhjdO*^p*cgV?(<5#s%7$lO#up2Su8)?bnB z*8c}kf$6vY0c|N(Io`BQ#$Mg~_0{?QXys5bAp&-@7zU)w0Sljd(y*I(^ z*R({t4l=d{oDk8srh{eY={b+D-c~lc zJ`YQhNwaj%EUUoGDWiD&^?TX7mUdwW_t z$sCqk6{K=!W{G#iM(Xh{{cufXsCw_vFs0;QTDNu^9CVkC0rz1Gq#UIz{{gNqvAiXm zvU)eaE$l2bWKikAp+k(>X5bo{QB!cL2;+6xmH%t9|SL0M^Nq^Oz_oJ@y`c-{{^p^Q;r}_@t)R z`-bo(8M^EQx1z|nFqePFT}>LQE0*+L<=i+f_CE37>$fVaBT<{l?ESJOhNjqvMP(;cm%f3EXY}GO$)&&Bq9Zp)qy7 z2DE=PekY0T3)nlRcMe_4wjno9VtCqdY5iMq(>sV*V%3gIEjkW|Fv@yz5x}(~RZKhe zu8*|4$>V*X#xg7y%5omNd)R3sojKF*P37v(9LVI>Hy5#pUV$wRFGBrJ4aq} z!N!Ga98!7%voo8z@-HU+5G2_{@Q=^`fw_ar##zgsJj_~#)FnC6Hua%t&2-~~oy?=T zHQZhzs9*Lf9r*7)VXpkKI3y zotCCXp0LX)36m|<5Yb;FWg=d;0{Occd>XuZJYowQocSR$)Wvj^B~hom-2P`I_dq4-*l^?^>!LcK9S>( zEfC$&mDjchjdf+O`~BMAZka#l6>x2;Qi*lPpF4T<7*jz9`JzZ|hWrakY^-93)-lRQC1A$@(&VONd|GGCF(KX$svZ ziL_3abzJ6MaJPCf^P?uH>#~w`1Qfm~(EWQMA%SbXIw$?{w-{c4aPcuIAg zy=-PiLk^A2-8`2JlvOY=k9nlZVuVZ5*l(J2E~o6VlEJ`HZadxoM8g3}Lj&e(F&f1?q9TN(Ve^DOVEs_y;DG4`IBFCk7$& zpCK}mjsxoxF&FOw)>8#BD3py!7g>ouD)VoWs>n34e5YjO7ttR)v{sKvrP3QpKZY)! zr7SmRB66aS`CIqZzEYH&VHXSMpR>)fvK#*XD}=mOJNS}n@w=VD zG~plqngNU5z)4cjqtrp8YdELo?pBFgZf?E`JC<$}TkU>}Zkh#ltSxJ2;65IMRjGyu zS^*b20A7ac99kCBC1TC<;dbfP>Ycsdt6JuVC5`?IC1wBgDvpw<5 z+LtCLN;{-B7lKdcMJUKE<+~pq?rT5)&gv9KMN#<)_wHAj;zs=lFGIU*JI2`S7`_KQ zE1@6Mxko-IZR~=dK`9)1=LB8@*M6p3DWo>u!|5Vbei$AHIec*LnuRpeBRH;)jfgh* z?go&gTVv==p`UXvfmA9N=|^VmeyRF3Ng!j1)|+5N5fRJ9-j((2T1pc3;K4FR@b9Ok`-lqi zPW~X{b(gax<~B486JpxQB(7-2j448?17~KJ%^feH1jPjDr?^@zpsf~O^{VbFk0Q_cK3?w{fY4_g* zgDLwC;Tq;oA>BeY6^EFd7BY0U+S>iYDo$=fn5Q>{{g5$wGYl5QNgcYL z^^~POKNic$<&BA@Ry^#l{|ESer%2kT7d~Ar4I1+t0X_)SR zA!PY^kY6S;gpu5&VJ65sVa+Meo}@rc6IFj=a8D2Z0B=D-U-)Mela`i<ukR)+ ztoZ){@U|@-R(_yk;O;p^dPgU`>bDEsO&Dt7(L~P?SY~`ZN;_#OR6u&>@G?1U@g}`@ zl?fDCW-B28sa~bIKp%}Z7B0#?Y>!*vrxuVU7X}u>*&=QIr9^;M^X1=`!#kNalR^)M zJ6YxaO3rL0KpilO#*U;%j>uZuQD_o`<<3gx>>5KXtI-kRu0UxehJ@)>yy=w$zY;Qs zmk$R%hZUD{3a&*tSUA_7yDGaSkgY-52E$~{V-17{HbaZ6b zhSNs*0Q&cGio=2&br)m5V0u;ddJ%f)R!RG9w}ugXqNobT^kut_RCKfh`NV4y1UuC9 z*A(*Q@fyhCjJDCXvWA?%fUWUTq9yv7qQR<0V=<~dLt|CnWn#2|xNH*CGhEZ3b%*}f zbRyS`(+2^ib#w{2h!T*+fBF-999aA^tWGy2j4RkoZNU1jVZa#JKlhbx+8nR-J0)dY zVY^WSuVByi)gh8T?bH@oz(7+!^+`gomh+m6^Tu`M9ol%!Nb!+d6m-Zoi_Zh2a6-$B zsi2WL69s;@B}o29V#9lUB}sOG$EwE;qwT`zfo0eMhOY4(AzRN!Iq;~!M0fIOP#spm z_F7!(I;4{l(*EsjvvHyDy`+HN>qp&T;_|+y5_`^oHSx6Lp|S0=UL_E;KBlvDQbWtu zSJxA@$i2Up-!CRa6H-mYzeeG(H$G~^X=e8}tTg5D=vQ&V z@;kt))}Lq9H>%b$9f`*|gCyU1W|1%cu+c3qPWBXA+Bl}>X=Tg4!om2Mu%ly z=-2seHM);gVM}8i8AV-&akP!MFA{@$gamq4Ot;_mu=2_DRqyANjh+nLs!xb_*h5R| z2RCZrXP>NsLDIr93>*=1`*%|jg?>RlPaq4fe@ktnSudg;5YlpDbli5cbO~Ye)Z`b5 zy`465AQWcIf_t_3`>(}}bi5Fv5N?$#{6^!0#21Sexc$@kPOIIED!inWLFaH74|>_v zxmgc>WAQ=MoLcBWQIb(5+D@YF{7U^EIRpy-4!!?*pwL@eALlq}`@-bCVq)UJM6kUv z8RPRPsyiJ$pz%f}MLJl_(@UDv;&*|?hl;OrWsZUdBa_Gv0xL51a3WWINT({~rT$eu zwhZXl5_1q_JSZ$@!sE7VuataYj{0gs8H9%x9ExFmu8?$6r#VtrbMH5p05dv`Ly>;m z={Ky5Y~a|ucg@T{&F(sEs|0(K^z5Nnn%lo^tXVB=tc7%(fBYfm(^bzhTE=J&ytDo& zgRf8@yXHZ)EnALFY{lSG-C@=zmRSh`q6^(E%Y~^Mt0b!{K9PC6H|Vt|Cte~c`3q6y z@aCENouvM5M3APbpFv02Zm#?FGu-BB&4pRf%c_^alXbADA}+;+Sa+Iw)$!vm4$el4 zro5iTpn5>%6^A~CZWUFdmt?dAy1*CXh~|2Y_16W;m*WcddWaS;&GI2VL1;_00chE> zqdE5;<6}fQb;iQfo!Y|{^Z7FLgvrh>Xv-Mau;pFPmR{tvCay`AFY}j*^7t_^!JZ~* zf#~3WgT_T=?`G0_uDh_&;qQGyR!@fc#^r4m_g$RhAO~a?GtRENmDptKd#E{k^dI0# z>Qdk|e8+5!1>0=vStp5O-vP|^wvCrBideHV2DJ9=6W%K2YR<8^vVVc)fMLR2@dFWB zOf}|f+)+~DXXwD@{{Z)FcY8i@OilX1&LxqJmr#%x`NkZ}Ll9IY9`_w=Ra&zJ^CwmW zTE69vPCI5e2PpVW7{@+sCxlYOc$saa?EYvJhvmH$nFS-}BJb^P(uGLCIq=1as;JF7 zZpX@0is1u74)18sk*-vA-yY+blpJs_$!StxKbH7U>MfPoC^-tYQ|twt%RS z6fciMv!RzqyGP$W7-Kzn+-?tNfmei?+PifBeL%SoL28%(R=}OnG5P@so%aiJyf^~P z1Dh6(Bg&0avB>?#=Bp5yuvG^XuKjE|8FWf@xLU@*R4Iq~=B0&@&>F#MpaKi(bC?U9 z!)89MortuB9rR}SMuZDTrHK>myzRkxQ@(G{Ib4Jn%&jNOx}*?K zzRU$YB7f(&Z+cV;UCj+6z7tK@GYsJNe9~6>ET)9e5|hqeR3y2bPoGoL>BJ=Xf}G!RkprCB~bU4cq;WE4A8d`MCG3VZ>bIOMzb% z`Z$03lgJsDhpq@FqGOB+w}P)3@H3U1Xm_1|s9Kz*YOSQKQiD_S8#SadGVQ-vTCV^{Gv>pHxgRuG^i)R<+6>!z;n%!J} zl0flDfVQXE_=P#!xk_qUl*J(f#8-7e`PUQ>?>TFFhR5MH3I9PVOH=eH-77cO*cLN{ zT)f5F4W+u@8`B-y6I$s5N15Jmed@Q)^|x;0GVb27@AiBw%=y^fZOa!ajjYirs?@sv zj9>)g#c$`c)9&abzwif$h=@fgI@Dp8U*>0(w?EG}SA}JcMNvwngEE!)UG<*-eF96Z zn;hNfxA@W42a0$-gj`(ahi z(2kB=1DnD@P*jsfb8`l>2Szbc7ohQ=T8&ya#vT^=xerZCH}g-4{mP;jJbV&jGIE?^ zYKS&rw;>$g`-f6CUpr@PA(GX&iWH<}<6D+qLp4Q#!c|$l;ZX*OJ9m#t(%eIk&y{9A zWRl)c$uj2L@WOSrZN2^&yv?^n&O$qAYg3b~d#u>{pw9Qt7{?H_LVCR8 zh+L#l^;Bx%0=#f~%xo;$_r606*EKMj{u!TJ-K0{Mu2+fTZ56=%t+~BHM9p=z;#O^p z8-w;)_gW217$a%O>-d8;u?dgFJ%?d29d;;af1@_$L;5FeFpO)V0{D zr`8X#!rn$2i9`7ers4EP$MyVRr3^VSUXp`Mgdz=vo zLvMsA{S8yH zgmo+~!?YO+*QFxU_}T|WfVG!ZfGNW-3ei{)HijZuT4oRLKiqzXBEp}6e3?M8C;_=F z?TLbT#w`_roq+a?ZBJ>CK}hh=tty%UOVB~`JCmpBZrOti(|;>NP}1^S7=;p%?&QnDDPHaT7;XCpFXMj708*{Zk7nKQ%z(9Y z;rKxyY;0@R#bbz94%~jfYdf@f%Uw$jqOkcS$ zWO19z z%_{|=RV8s_pIA;B1Kni;H&YNliy;Xpur)CmFSy#l ziWfRSk7P~%>R{$xT}^FJaNqKgJN7d`r(v>Q!IF^YxG^b->a~#U_}>?yP`!)>nW|)9 z$%B~U!VjGpYLs!8jil#0RRKn3(cZsBrN89kK1id7KCKXX_8O#4JI>CT_On^+W}ezd zO)<~*+8u-Z7!XhUL=ce$({HBA!B>>#j7~17Ax#X{nm!|~bKcgY&_Z+7E0SM-KGT#K zZZtbg|Bm!|&HpF0-&Pety0FuL&NX%{jY_?8@3El$*$Nt`KYnbW9Hp5YPUebd`$op5 zA5R?-#w|nTuQlz;lL^q*JRKbEYv_uOO8XD+M)6W5Huwwj?KL+w-=lU!IIk~zSeq|0 zvTcU(RWB;FnNkRj>x$Uc`-~{|f$6S~F9eDuO8%$qO+d2Lz$qxsWoDSzeS<2XH%kQ1%{4M~=HE?Z#UFSp&Y$E&428?2U1Y z7VOiz$zRwUm;G`=)uo-I4E<+WgTa?s^Q^%C01ehJB(dY&WvBb$@*CmP(l4fAuWZ3Q zk)@HHx402*vC;pc*|)-A8hln^o{YUF>pHp*I-BrLfcN2tch4R?O2SX)bTh}3-lB~W zkma8@zj-9^@nsJY-Npm0G9EjQ@9|77W#2A$!(A{bOEGZdomGZ~vWEJW(?U##?#^2%zQd@VH#+Gey1!cPwb02Qzlv-Fh9DN__fm`l1&ino8(LIi-?uRF>g8+mzbbxh? z8*6!kyl|W4AtXfD_6877j%!oLB z^vbzhqv+Ur{tvLeR}|G=pJFN@c6XU#FmH4Da?zXMwX*XcV8=0h`$*@UurEcQ(370R zq)e2;T`uGG_kVzR_kIDVp)8b=s<3>l^8Av^%{Z)KF`Mlt8##TrRa2zsMa>0e;f=jG zcR$SU(kI7y#VC2po6iSZkCJpa-D;V%CHnk7vjg7p}fV>&ZatGCc8R;wrp zR0g`}iT!lE~d1W>Dku<3| zBF5iQQAB_0AJgISK_%ve33Emb@>iC}fQIM#TZjw8IQ|cfp;E#{ad9P~caBz3C+}ZV zcSI-MlgicB9MG3}Au0rFZZ|y3%@z?#n-!Q&luy5JGAZ2X<)M!9}m zWa0sKGHxYTMdR*H<*cwGnJlO_J&hunUr91f=p7SRdY@=IbSGBGH1?qbwjkNI1WM~p zx0Cxus;hBq!~W9I&`2bTsLACpnkJz= zUag)Xh2Yl69FztYodp;kSAe~Ly)PlgyRKK0!n#Yy*B=@dezGueHXa94F@=<4PHV*E8>%lFM2^X?G*1EM-C33OEPWC8CHe3$0NH zi~oRdy~G;NcI3`Br@;d$rXI_rDwq6sjEkw-a{W9%1D8oj*NCs041NG5738l)P3!{< zFg_^{-AFi&|CU)*Ml&ekYVR45JQ%f&?74Y$jkJ99u2$ZP>nQ(reA#U*x#@hThYZ*6 zq_xKWUEYA6Ob%h2DM{#ld3?|1-{?nYbA_@zrzdCh5tQ#quq9Yo$U?9F@AT3=yk#Tdz^%!WG^IFdUstP~127w*V#E*_s(-Lir{6_;b}*@zIw zb4V;ga$eqk;p*8;TlpvvOamzK8ti{yfJYHdHdxca*tHy0DYMR02!r2#Gp84*tbm<( zFjkBVdU-G^R3sQEz6XiGghc75#RtBqEacw8oK+vn`u-*f&?1jeamD3n;{BK%GjNm= zsa01ta#Kg?G?}l}XxpG>YIA72MJI&1g6TgY;O1RLFlR=)@db6T zg1bY2;O^c)pn(95H|`SL-QC??g1cMe(t(EH7M#3??<&rJ1vN&Er$$xnJ=dBoPZUtB z5uo!XcFn3e!L_n>yht;7uyO7Fj`SwanVnFsjv7#+znvd{V!UdNnTdq!L%wTN7`4P) z2xrwpcnTCX%uKJuo?joPEwZebb@XS~t|0tB1UW$NbM8sYUY>=k>t0H>JWH}xC((k` z*Hnp})3{+Tz7GQrVmOF&Sd?CY%{Th94tG&{KFRIxyE}&PcxiK1u4ff(1!Qph>RcWz zdyui{iN)73g%X*B)a$}1GrHQ(RV!D!IvkeX^hmXb4qNIAtweAq#IECd+s!U&yI3=c z&3m2f)|<`Mv-xi@pt7`-a|ZYLoxz8LWyxQGT9&h z+_Pnt5%zmHr%TPEbByRG$j&*VgO_SA(0K{KW9l7-G*LT0CGug+Ow@7NsI^3S^`*D=QY z@`WUka*;wBV}g7>#B3#RRTRMgTapL zK!34L-lSqWl7Es9YPGsx`b(SVXL-GKI$v&S72J5&wePrd*WgdS?kIY6l z;S61UV_c)1N#uj4?b#K*x1M#4)zp*!(mFGWS#kBJQFLgMF#XzH$jT4&*RU#Px7t9- zxC=K^_8k%kY`a;cw1FMfXdu1b#H^Z3luP##`UZf#!DsRR+ntmoc8NfVic2eDn2OuS zm})~u#g5jk;1SfLPHd!_$l4}?OSaGNKF=B2i45KX%LsoBjDqb^bX#+OgCC8a8C5M3 ziD3e@sohRlKAVkUQ~JZsv&uRjKrW#iyFlbIH6M#uf5g2%m6^M1xl&F^W4ZpWOO`m1 zUwgC7IG4hP5Lh4v20%MFw)HDvNrLp8TFVbjlQ&E1{~XlaKh~A43r4oSL<*t}u3pme zk;%#KRNj5C0qFjWSVhA@SdGH19rieEJ{lkW10%}D)Q=Nuky8+Iy^+EMzRRzAIvSB>&JwIX_9@;@6 zWy7Tri+sd<^UbU6N#Df?zal-x8s`j<>k^tq3rKUDQEbHHJ}@eft7OI&B;$8SW=sDP zpW~rRbE4=jW>XAq2#%d!hPAL+`81(U$OP{q;3NjzwP=b67!g|V)J0q_%Z2MX=Dgxwo#&tAOk%K zV=5TAZlq24Fq1D#!N!TeSpXw7&BVCGWLT?|oRSM3V8|^YXa}j|?L3{ojsx9Iittj7 zUy&B1Bo3J%;(&q!DQP@I4s%Dg=LgffOV$ht_U-xcv0ZM0p zz(?mZ*Q2ka`gE!|Ac6*f;9oV9XV+i*8D3nzfZP?yoB=IWw~`iCi?^SmL|wq?e+U!> z{hw2*?E zsDcwct8Uc%C{6k6c1B&7V$Ak=8nDLtbHu)38oURGtSH>{Q_QC|L-=$7!{WRn;pw>Y zmqnHA76aMBh0|MqQ2g^Yair7&8=Yy#L1FgYJdM~M69b1Qs0#eX1cH;<>(4$9uk}_l z=ifD;B?TK`IM}q}-+yfS51}FKHSTl20p-iU47i!v+PTXF5_7wk0Rm$nu%WubZ+W>) z3FkY`*g{5MU!X+`T8m4IvMd@SBUWVMn}*s&{1Ky9Sonpd3FlVU2qr3b8r?YZD9pjj z3#z1?vTEab@f#Cl68au-FDg_TBkgdAUHLxt`00d!ht*Zu(h65bwXNm3@QEENuRgPs zKpl;Z_#{4KN!B>1Ar4GNj)-YqRY^Xr05=tFQN1im}lMGJPtAy>9C8wk=T3M0p z^(&jZ%GCj_m2Jmoc8GHvSvI-FJb%lj_g|j*X^bBsdsjUjnO6-MW=~kU$fxJ6g-SwR z?(s*T{8JBgOyW#ZTQG^OvMpsXk)^}}Jr*{4}+ipV=6JzndgIP)~CRhLd;)(?|RB=9Mu zbe9G_3XMM2Jd4VwFri(-*(}{i^sL6qVfxw6ztJ{SM;aUXwqjB_)3bJDt~G)uMLt1W zGCEF{ZJe~|UQD>h>RlQ>`mz*&udJ!m;3Kvpk8Ix7{{1ey?(gTPN+5~1q6k-XC`bcZ z&a-NR>>*Y#>#l5=a`W~U6oXBW)kucR=JVu>6i1j1*=BdOmg0{Ir5f=2V!bix*@#-)ODHZR}N5?%gw8?Nb z&-Z*=zaG_i*_tLPCM8WPv+}~f^V*x&i{1uvXOP=Z?812X56a10IuCR26;5ZC;t`pS z{1J1|;I=`*YepUjKD5^B$! zlK@#>ZIaaL06X`D!p(lCPPq;35ZI|pyRv@E#+7Eb9gUd!wAI)lpI6$cp(796e_mE@ zlJD%cu`OvjY+&j|I#6qu*Y85mJUSV*pBrm~#U~p*h_-pB@YHeQ$zYv(aJB2YPx%j1 zY-y(E*nbEThw~7DTq@1bGjvBXe2##^y7{z4X8*a?Sd+J$rQ4XC4>X*c~ zjUTD4Po^JYeSkN$>Y8XY7~Byxw5+&|U^TDW7l+aCSYB_Wr2Zp^=!$PCZ?ZJ&p$>Rs zRIo4xKctAprFZsAeu2BB=T8F3wpiSOsvm#x(Y^)A*Ub2QU0YCoFFTREq0__0XhH}T zl+#ctyWz!5L!%V5dX(d#G*?CNmYT!0E@Jt4P;4VA(VQkvuuqXm2P8e?>%;ST=SUL| z&lwS7&6_pI*(09v7WOlfL0ggev?_IENMBwC)QD1@3a`bQXQ@dKM&HQ)@vzz%W;{u0 z$eM}aeQFR0a@A3R`3RVRu}|LgAbOiMzVc41fHiY)%te-ZWkr^ZtbTz03VFh)p9FRd%}#FwBkcTmRJPqs#F$#J0A#d9npG38Wc@77S1qcM-O zKerYPgW*i;t4lo?QW#S)!!kn8SY3M!d?)>*^uwJ>$uYcIteB}i7Z*(BB!s2k zSk^C!d$GmduiBL(J8m+**R!ybp`)(P$R+S{@Az8P5h4u-?o0e2LO72;L){A>? z)i}$Bwx3x#=`*kv6Z@~ijs>-{9R=_gPFOY}vI0C*bAozPDl8TtSUXj0CcjV0Ut9*d zw*CwJz&Pd16lRF=R?&RZ@otN)=Fq8r;Xs@exgTLo3lWT8S#!?gdi%%RLD8i52&Kzl z|E94hD_w8rps<^Y5qg0hbm)Djfxi2fd-uUS-J6vz_kNf*z+wWX9Mj@Neg{+~{DsF$ zx6PBtIsMgf4tdt05~1_VIRZsvVV4&*U951BjhIl%B1s9j_(~QxkJz{8a%x_UPb?6n zKV|Q;dyN1H>LH3u)*Qf$_Hn1w>47>uI_o*U@V%+N2?(Y^GuI+;&&QO;!_KFR4YBRpECDn{a-HjF%Mld{*dU) zV@=&MqNWB9k}vPdm^fI*@(Ad4^Y-L865j|8VXR_QCVaOQ+0aWd)LUQ6mR%+mN8~5k zF)f{F<-bn!!t<=m!axGuY<fm6;@O8b-p{zMSKSbg()9 ziiBBn%r{SRt`gn6E;o}<;a<^3#~+sd{G|amWbIh}58<*jup#^kNKgx*afqR&R6}bJ z%Zw^0gQ+m5^QDrKBIVrHLK>Uhe;xIpBH#J{{O%7s-nroB0rtv-HXE9Rf$t4TW&x%G zADbv3anJK&w2$tP+E)Hle9V|(taTZ`wE0exRo4ftjy}x+bBb?Z92a~5l#V}DG z4MsYr?Lvp@I7S36h(~DsY)a?m1dB0?o4XD=MAO*TUSS8ZsWM6ac$!!4Sg#6IIW7tz zFQay`-qJNgG(H41oCCZ1MUCw{xp_gbDyGUqx@pJv7zh-m4%)7R!HUBHOB=5Cnx9Bj zcBAs{8%uU9{?PRYWnq=2iXZ1&B)@}*$t3t?Kh{oSg$&9SUS=9)1YluE_dlN67JLDL zGDk*{a`!9~Nga{v%DnC76`~b_k%vE()a1%BG08>|aPz=jr)$M1?scS9TB8^(&VedJ zwr!AAU>0!ouK__FWR=W7Z?+OU)4g#U8A{!3v0tmzD1O+_Y%c*JM_je-&Wp=QUgl|H zG$%sneM;mtuF=w4m2>LNPmKwCV*hj(Of%JD=ds+-P^4(@;4m-A(BHRgy~kgKl6u-3 zf5$WU9|ESPus8+m>*j?c@$}!=9yt{F3bgRaeU0Vg@ZiUET9<^!(|dl_^S#OagfjwP z?zse98*^M-g#U|W3do@q=N8=8!pvh$M&Q-I`l%(J%}Qd+PydVe2u4OemfIASSLd81 z1kJZx?+i022fh;PD{4|$uxNkG8l{0CACgqjR*#$%ma;r#jtaztBjk9+5G(gL3TSFC zdIX-vio;j+Fb55N{yx_FaCv81b}+@};1bJ6l)cSEKK^UN+YhxR*O)w*=W-cjt5`eO=t-(%0>_x-?}00StM*IC1Qr572FXJtnGASoMU+ZLh0*dhe>(QE;x7lZF3M_=U>s*B-a$7;9Z zF#aQhSt({({G225k-5C8Nd^RRCgQoM`TIhQe1;Y9yIo(HOz^EHBBl~QMj)su)aEi; zCDMIjwamLXX694U$NBHO{4Enp)xW)rdCT)NnSLxzDk?MEe0G{bgk*s!LDE()Nam9NWV4b40kFll>&4mIR>aC&sL5+E3S|shT>O5`MQ@H9m=XZYy@$74+jj~W)bBVa z=jyybOTF=OF4ca=hSKol4<`g?d>Z%{HC<_#m)GK9F& zWM$7x3vy?z3sY7uD+{ryjYnoWuSKv;+$wQQuT2y~PI8y_TxAheX8%Lz438W3sKwD^ zw4sSD$H6+Ur@hr0o|2Ce#q6|+l##UBN+#JnIaU=$9{SC59!q*-JO4|2dqL9XGhB7w ze*mSd{W+NdZ;{IYePj@jtN*cK;n3u^v(qw0zvmSEF*fF*E}YzcbwuM9ec zmDe9N&_8fV=hRX<^FUD7DI=3zdAo@tg|UVVXbUQ=AjZi3s6TlAfz2{j-XowcZ}?To zMjUXN#&ewPovIXr$E`lt8ki6WeM;|u{WcQXlDYgxtg0T>(W2u0*+UF*v(}#6vX=YD zn7LgIdw6;#jfhlXJ0&`X^Q4tySSFvNLV^m@;@9#8JUFTLu=zh^&GMKv0Zo`>3JLDY?J-~HM)w4D*cQkVtt zZi3BTbi;Q4DwX98C(814Oh>d)vmuefs!fQh7`7>-rEn56X%1-;oQ|70ZAPJH%Y>@# z8MB{?osldG(s?$I#dvRpe2GM?<*R;RD=nl^Vuflc(z9di(AIWWGjK;mY-A>u4NM+O zZVo8sq~q}rFPns^w-FRXR;qp|wt~uF6?r>&Y^$!&sCia&o=RdBMrO(`waR0VDA|gk zP4LrP8)cI~`JA+oXlGjjrd$m5m}?AfAPye}c8}}L;%M;8W9Ko%_~*MtTZPtt=V>RQ z|A&z2?lJK-8qzt;a4Wp|j(+le&Av)2I!5fD^(nS=0i;}=KX${BM-K+f8e_ZCSy z>sZ_t1%sw`>yn$-o>;7f)#{;nFm>A-P1X0x^;Yjsb%yy!Z0WrbW4c;5Yg?*lAm$Tn zCf+u!)>lF!>WYfwwrswE3G4evW!ufN*17uD>1#PiQchq0k%$DHaH4YPjDEuM-byCI z2x3_|nPbE6gA{>^lLWsb_@1=Ynuiv5r1E3h1su`g-`t`bseUkPqwftmiC9C9C~VC?Bz%B_~5C0tY2 z#XSEqyYfTN`QQJN;`aR%XoH~ogKDnGrWvJh32*#5HO-=h*wRHxs zY(Iq9d6KKrup*Camr_^J64_*X69j=JJPn7 z9&Y|3P23#p9pz3|8AZMpw%gF0wfYayc*A04%SA&$3W|M&tb(j(yd#3Ar~H8r-1qwJ zh?8g!s2sOiHMM1hu4ZH?Q@^`G>?l(#B#4mAPwTB@&%0!wnpmvI;?v2`Z z$Sw%P;)KCOzE1cE#)K@Lp%5d;Xo&G55_&tfvzssn%VeAtJTIZXzw(b!$6}R=?KMp@ zav=+uy!!VkO6NDvf?2|}GBU8voW+qEZQZWTNW0)ovlMxjrAX`a+u4_9xq_3)U@VJ8 zzfoAGyE$~{xmCXyw0!|LoHO!N!ScZ)Ym?MeMeyvxlT(hX6P%6`GuiQ*afMA8y z{Niw}jRL#>ivcLMyyNdV71Ngdf~2$4@CCD@t`u~=rS*&1J66Jml>F=snFLdU+rg0I zpctsiN{qV>X&(}^bMREoN|(LF1oBf=xA5^{?EZV&o{K5zk*tsCBfBodEq9G$DC!4? z&_V>RM0s(&ku(gG2{A&yXzNMSKbOc(}bB&+Cx`yXFI3# z$Rvbv{zF*RS)Ufu!k;XR*CW};d9r`wPlH%HJ65cwOO0PrQ!GCz$`T&tJKgRYCP9cA(dnd%5b((6aET*79HWNh+gf!C=Dyh z%Gke!ii;A=6U&r15Jk{&%rz_mkMvv_(#9n-7&59E#-syVF1D2E)`)hbdI9|&MCkL3rFaua zD%RL`GDFx^isW|@KX)JZVg}>^W${rsnj3{z+1~4X%+X_ewD6>t* zCKb(~`&-XNWmQ`K#>x2B8_sDkW$;66I5iiuLsGF;f6}zzmt%*G{4x2VvWn=|IanfP z2lrfv)d~hONnbm63%T#jq8q^=sZhin)T9w)Hgo>|>vJrhBvwj%uRv{szro2q@d)7VP41Dlm)5h zmb4~TUm5k%s^+^ujTgmrw)b2g_vA5hp#Y01#qeL#puJl1z4oeOPLfKa2x-iONZkh& z&<7fKj+1l>*2Xrna+0uCCdaU6BGfTMa00CX$ z&fc2eexmNgtYB3(Rxf*xufypbJ`To0b5b#9oGR;o2-=*d#hpUUQU;{&rLl&9>Y-tEd=Q5=$)mQ9?}1C%u0fcVKJ-k% ztlGlYif^h+qdSLX)rDnQUE&Ce=iv5l))@)7X#Yp{ohvof7H?+6bwvj|L9cRmCt=1N z-0~1OW3jEBi`m}KoJ}v*O=Hc)egqb=hl8_p; z!O0mT%A=7xZRwJtmoLad6ZYkMllaXk5r+w3D!A1PkJ34}{r%)h_e9T!Vuo<6KeJ|I_CmL#@{(0h1m-1Wa5=FO%bc&MlBYu&@*pFb9t z(>jzRfK%IhCZ%RCdeLOTq6l!X>ZlyW8)^1-KDMrMSpIs5o6~&NwRG{>M7g^FuX(b+ zK`LoiMy`Y=H{XjK8UEeXISfr_;Qy+eFle9WztTSp;uny|r~F=Q`x8}gy|qsdc-~o! zUamTLGqm>NvFoQJCmlfspvr*)kntI+ht_D*aCPLtfM92wU3BPB`}iiYQRw_qBfY71 zoM)xCp5kw?3lU{8Uc<KU3=~k zTVJ9!5}1p?3Qfq;o_2$_BrAChp47=|1evWY&DuA0C#lU(`jotwc9m}*y+Pj$4_xcY zSC3khQrkuGH>$Elv%2{~x*x?NVXqlRn?%yTZm`+AsuAiNL}l%5w!hxx1z)8#t!L6} zYArxp1UUE%?bLtL7S zTt(tG)*1EsePWu^ZG1jn9juF8Jl11ki!&Pm{XrLtB%vSZiImq4-t`+Mi8r~JL(E54 zf?}bv_?6~ybO%C+Q^j8;Vse8=mQeCS84~7OS`$A5-Fu$um@EH7NKP`eeySY>6b&6$ zm}h;gF0W20y=QB-y>&S5AWQuZAvoRe_+ORWt+8s-LQgd2gAO;T{dd~v)U<>5dgoq@ zv({%<9(ekI^pS~j14^;9DgB%#NAHc*e)3Z)8cbQ;j{EH`qWv_k`oZu(r$2{Hc<)*4PX1qI^ zG@E&mc`uKIWUzW|rE>pv#)@OZvt<}?!U$@nM5gKc3^UJOqf`m-euuohVMI^Av4`e(z9nfxm=UHaB{;3wfs<l`s-~-SOfTSmHO>JG!V690g z_XUdF%^usEsr&sQNzvSHeG0z5u_sobsTaJux|7i-I4EJ~0{jnwn18gStg<}3v6e41 z!hkiW2z;-83iCL$vXin0pC$L+Yw9RNQFd@JzhzP6vM`w--_$pEfjMfEFUM1Jt?419 z6;$vse>(g@h}5YHBgmVDkKZW8n1Mj6@z;pCZi8){`#u5w?r%V5sv^EKPXjuC__Z+3 zdwgfq)R(7}+&X-`CDC0{Drd#F1io#4gF#qNFlVo?C}AX@WL4G`vz-ORT|+A)-tyhb zDy#F>zzo{wt)K?j?scCvZn<;_(5+D!J;wz%+Xhuzn@og z-VA?PQ_d`t8p`?G(Y^9`KEg>I!%#h7TLVL=B1pU5z^Tt z=AQc6 z0Da@}3Mo%XuAaG;o{0gZ6dtb~xaqv&dv54b<KP= zKJ?bL!>cNH6d3jn?YIC4TLVf^!}*xpL^M)MBT0UIk1Pm?1DySb;J)9fDf&g>nK#Bx znMFf$m^n*TIQ`G({X>qe;=juZP3U#0R>$V$U_%(`>S|U>HKfZYDDpo9ES8wBZ_bhJ zJ*75shd=`L_#+U4F!Qgi9ps(_>p1u;X&UclBw>9Tm za`Eux7)KfL)ViAz8l+GVxFgZQ#MTvIT?vZ)vYS#r;-CKeDyPm~!8|b{)v5#JBx@KT zM)y8LqT}$sJXWBlB9sYbWU{9pb`HSe)6D*I1Ruy#BTCupXR}Ufi;;hui*vDfGxk0r;k)B56^Ibg7{NFxy(@Kkm)KUkb z?Q73XnY!LvZ?e_l4i=2ok8@@V2DWhe&uU`z|A$aMf2X?JLCiPi$^=eS=|97^tf7%s zcht#YRSkHlUEz1w=uCDoR)c3x3kCbm9gb6!L^C^M*t%e-MN#PJ9JIDkMk?^tB6QA^IJ&qyYGW*Ad&>g*IbS&q;Q{MPQj4p`gNP zku?K3K6F`ROM^M1(lF!jNtO>h;~(Vh=@Ag~#Y}6`NZ-cUFFHSPSht++YnP{cnb3sN z>^fmi94PE+h;wp#73UTB^9u7BweNA~3|?0jDR7CA8e?a;ah(?SEX<2k(lpJ_XtT#| zyiRWP-e%~l8_tF|%LZ$RE6>QWwGw*<_kw{hT11sn`L>-0*DVD@dBfKI2Q$hMo13<6 z?@w{NK26!BLLYMolpq@d44TV;&rECjy{zw6eCw`t&dPpguhp$QuDG(j*1jA2HmK8F5`y2&M^a^sS-ANct&5p)vk zBe+X~%=)^LxZz;OQ*cIa{w*~-l{Je8KgDV1HZjb@nmP%6ICHJOgUv8Y6C?JZCyw(* zlT@HfI)%3-{Ss4w?1^ZYAyu5kVO(yv-B*j;^xOIm!613rNHUknsnX#FO&nwC8mF)YGNT-C=a;lH-}3 z?X7?D(Oc*nnUPx)$9{vzmg5jQb`xpw9jjvn%Z;) z)~|7WSPmK=(t(SoYj-Dh+m>NG-%$39NZ4^e1;72>F<}}5ILDRgrMOGoY0JpA=nyiG z7;c5Q=?>2n03d9fWoSjkac-n6Psa=avBixLh(XAk>{~|pt})|ery-X^;;WPFYbVQ z`bb{5LXIzCc6un~A$kClFK32$0=cfv+qSgc!E!b94V~~DrT1ZF>ncQ@I&VAb8UytS zXoNH%sVa@F+bai(jEh2%hqhNMj@Ca9X5EI|(M>P$xKgOn?h&>=31^ZMhqddZ3nmPc zTCM1#{K(5aNrkb42|VmQ{^)UY#2*R+i&Dab>xf4@MghZc_lNaBj9Qj^-! z{;nEtjP;3{)Gs3_@hdH5PKBeacA~<$Ym~67CNefZu;@A>@~%J-qR{GwWNBsdsyli= zhDBWx{?HG8`rL$?pid_>wZE^?LB?_^51-(p6wMO#tt-9fx|+Lsxgtl?Ux{_q`0;*? zO+o~7OdT?h7_U|@?}Z<}ehAsyZN?!OzQ79-43qb!60hK+3x~DfDn{yP>GU2l=0L#` z`zuEXx9A&*N2M#zoO>^ykClY#aBE$p>))+@4}jZ4^654JZt4#yn19KI6|C1_youdJ zP2PWMjbk^KD$Ux^p=Eh^Sm!NM%Bzol2xN-)*&;IL11-db55Tg-4?i9Gnz@Fnt5XtO^ zSV^+~nZ>MQOyYlV{(d>yePE5-ZgJlFBlm%*6$p0v)wr zabnc;R|5MMxyBIZak*+T0Ju3oRl6lV!8=acoQCek`0%^nzlnRmj-eZa7VToq=eKJ5 z=`803Th=+kJ(AOy#9D?RAaqG|8w9Zr@y>ngEILSDpR#s6gEU@7+wDU85d1=A0Y_R~ zJ|CR|={&6Jr*`?)e4_>&(*^u8!W>6}udOilSy0$LU`ztnaO|9*Emw@wXc8VZPd_T$ zmA1wc_Um z6}1V0pXIXAR%1gffkV#9p;|#Jyfv#sd}CkhkA<)4T(th;E`OtqfLgzxH(J`Mr{EH# z{QsO*(4DfWTf?Y(ad6ZqI#AULI&~Cuj%F#OG26|gMQ%AdLI=sa*@Ru=|7e9-|JVV69zROS)AGA(`1k3|xrh6K3%X|sK8WRB~5lxKNoH8(+ zs$^m^T}?G7w$G32_oBDzU#YiM5Z6=kR!e!NjC)&l^9VF~J$_56+9NqcbNqsH{9dXtSdX>(6#8Ws$!B5RT2} zh2;~d3MfunVuIHxZt=gy>K)LWtTy!3UaZ5pjRG%uT0DGu3E-BpFhu9MlOS2wLm#?m z({>!<1*jP>RuBs6&|@|misc_?K_K$_^Y@C9p`MgwZS^H-b<`M)ELv4;Ytp_=uc}&g z-L=tYp-NZP4-uHLR}`G!=~|d`tbb(0UHiz_VC-ZBv@3%XA^07tcHWwWq~X9~*x2s8 zX1)Wbox_@FrHm@Zg2EkdH7^5oYb%RzZdI~W zgvYrRD;9r83$*UpAh3G(Ln&9UwV^I{nPt>lN}BtpVB#3o`(iCmwAL~Si_Qu9vYOJYOT^^l{N|1$%!xN1UMT_-(6CRBqt9KN;jfHY!^`^aT z(8A8$1>m*I*WqK)<%i$FR1EXdmK;Vig4GB{4$bsSOOC#f6UEQ2zad}xyH>dkx!;bc zH&sm{rXqp4{n#U8){mHtA6T;6ow=Mj!J#K>R8g>QZsEL&ucqK!n=C(Ou6w&K5igq$ zO&+&>579UJT^r>_WtbpGn3lcmPrgRhjU|Yqx)#D=^by);=$ifziSFeMws45tSj<>1 zQRfK%&0^tvCYzv;l4$}7tzA?R1kKx_^w;SZHss-rL4gCq(!iUZOCqVhuMEJCV#o>U z#RA#3SQ!EP$Y-eEPV`Lz8^3U_mSxAU9I5gWO5KgKIN*;u!R44Ftt%v(JXpR1z@XU+ zb)LlZ>9Y!@5Kpr&Wq6H}UX4Y3Jvm`WB7C;dp3sKOKgMCD`!aFMKrCJD0L; zw&=G3xz7hOd$mX>$5xSdxmbc->_Ur~qr@LtL;~Pt^(uHHoa3Z~6fCg|GmiE#f1T#o zdecJNL1A)kG#X9@bG*gH?g?d2`>*e^n3FWos!WdH0>Y?6;3^9XI+i$gD^jw_q`KW6 zZj9p6J%d&qU1->HLopeXp-4OK<=9!kX(0|CRBPl|NJlzsF0h1`dV=*;WouH-%KMA$ z)nQf8*tKki-|+GXQ{);vC|d%58@QTz5{jK>uuasn;!ur}qhrZiTi;mR&NZB%;x?mF zu`McDENr{Qhi-_`U%v6vpLm!dBN-0DR2$gn{ecLnm_uB)(&{^6fS~cAs!GqxlEB#T zN(&3!6i&a0!n6K$0qu>qe-|FTDHTyws3PqYo5pAzxw-?t18v#2)OP55wCTV_DbsHE zVwn{;-+Xm`v_=6tRY(Q_y2=`dF|?!-A~lrom`facO0isIlFo^K%NKQZw7hW^ z76YFMro8p2r~%D-d|Msmovoe3Xwy>xLGU{o@y;}bv7MZv-*dr_<=Gl~dEsAsnnBw? zNu3YJXuRbnsZUCGD`-#OXrlgsDJ;6^Bmstuwl`wT`2~EdmyCexkA6*5FV1y`pB<>)Sss{Wl|tNxJD5+m7(TOGtA0TM?CIt z*friNyMK}8Ko82i+B9#m>eS+lHOl}S>wWm*>a~G=_#5P5Xx8eOtpfa9D!CV7ec%wL zu5@#d@T+~3;6=G086HJ+fczui0^JBCOx0M@(2bQ`9orcJw-qXc3$j+J^0hlVs;NYu z-4pO{7DtSmtwsTk(cskxh?mtQMpo}NW^IetieEK~X+!2WiB5b6+E8hKe`y?xc1K9# zHl~<5i1;$3Mg%_6qd__muFD1Wr1x z2#dP``KVE^&|_*~csR5&SC7i{-C-Y?}w?!wltPHBQx)86fjw*DA{9GhU` z(m~5qFRLQ!Q2Ay^%hDR8`TWVv>oi$13CQIo0GzX+KInP<7M7UbDhq*T{z?Cyn6L(P zoiE&KeIcg%+SGl|sG|!pB6JzbsXvL;c3;nd0u-Z9q{YTN|(t;rV5T#r1pa@+k^p; zrp_C~jM||0YFPasNSDldWlLX->=dh8mL7&7sB+pZH3*Fi>m3qzb36ISM4wFdQ;N7f z)I`?0Gr!|~%-uJZ?k@Gzjo0J0@z&AGCJt-<&RX#Lu0!SfaRVRYis&Fx6PPr{`AV0e z8wGKTV;R}7k;)itywLO#e$6kx$-eP780lP)^^~vIhAdTKRInlJop;$Tn3QsInAE6$AEsj_>%yD_J1Ce>?LSabX#JvC%kdnMN-xA-^Oka5M#Rlr}y1&#%cQSP6p9}xZYOy z_N(-raqeBBq}zMnlf17VOmo*L$c(gjNtSlM)AFQQp#Gw>qFW&|@lJ`CfjSh)a^Th? zZX3-6-09`e^kdO*{(1v+sH;kvCq8Ucj+vN34laDP1Mr_XVc5kb2^;#)zJ6Sn&HANLtf4w`ly23XN0@x1OvM+m@;6GcHyA-krp^TEO+)t^R#T3i3 zA9)QM(*$3(k{^b)3V^6E#9ZN<@@Fa0Df6Z)U_iFzWO|Yv&mY%)k~Ca1kHN`GCJW!` zP2-cDHq)b`qL_TVGoWX#0(ll4ZA7Vc4SAtMNgV($mNc4!l8Z{-0R0Oc#gi~%+Hv1@ z+lXi$6f94x$KuR+1_ny^^MPv$Zbj9|&cK~MA_H56pF(0G&A$d+tN%kl!S#yxsmtHc z;XYm|i#Z5pF0ixm@sJ^a`Cl<@Db}<{1nYLaVNuD3G|p1JVzCmTmzx3*lg!2+FPKa9 z6wUhz8jdZP9_-ytywXM#Mmo*61bsr^XKGRRe*HD{O*OEI#AK``7gM>L+Ph6}ffyWD zu>XgkXwy;+KF zr>aM?=@Y84E&)Zzzj)s_O?nU`4{=g{E-4R6)Lk6rHlj^!67Ovl)m^w$2V?}MQ)zHYtFVj*}k3KqcZzXthRN^R2V?IfsGBamH)63AlH41OB ztnevgRv7YGr|h1K-$>*U*H2Dzx36JyoKEREfl*4UY9cHPSDx z!jlG)y-J?dT&BZi=Ye`YkDJ)pBuoDuEpWo>{v#@S&A7 zMm}0wl{iFQF*@K*YqaCL}_--%h@P1($1n|`Sstdtjqxm-ABc}+1p!r!1ZUdUHQWB5p-Oh!A8D|;9@yz4VQq6m1Q1rL_24SuUCI{5@o)10wB%Zo_4?J z$VaIuD|1e&4VuFAFjh~o?}3Ayo&P=#^;}1Op)Shk)6x`34;TOc z5x`J?$dS4l(N{41ZE)u{EWYQXY_s~O($YMac@V*3D?Yb&!%sqenn5}lpyN6gUaQ3_ zbf`Cc>@VHk?1TiuJ@=Q!J4(Ovv;hCH{=#fiWndmFpSv)^b>3^X6Tj@mfI71tOCC6d zjS0@~qiAnv+|7|?)mrxRN6%zD03XnA+wQM#KC<2XL;?gp*d__%J)da1DbrNHobv`|=AZe@cb@0IuWQ~bM^TQA#fWOi%qnSR?WC4%eZa=(MWhn6 zL4gR>;<=jw^#{BuL=&Ff<)w$n( zystN03Qd}(br!&Bhc=IL&ht4mPX!hU!7)h#Y5TD7kLdr7!_wD|2$_9HT5r~5b-o-Q z(&!9a^ugMEci2DyDC^FD1TUxf8JcLe%`T>_59A5c`A)5og>qvA^b)Kmi|2hu$;$iP znDmwiZNUO@GzQ1}u1=}PWW>&Ey;Kr`+U{EZ%gQA;9G1{eh`m{y37dB5>pdz3@2o1q zpnql3u`YIc9eW9r7F6jbtBkRHm{jY>SYao#|4QsyS?J?Kv68|Xm9Y-T_r>(5gLmr% zX59WmAUvRy)lrv^T9&Ndg8CQx&*sf=bSWM;o%U25c_S)3PubDW+7!Dcnq(tQgCwV| zW+5~2Pn^LkZ*_?;sDkRZRD|Ie8XC@VxK5#JkDXA)>MTmpGW5fw#4$vFiaUyPDo#PR z1>Z%2A{SgO1%{}_-hQ6=DY=3>Q!AbS5SX}l(au^DWXn1vgx25Z|GS1_`-CIp{v=0v zp^D%eSA5g3D%pphk^e)O=7xdhw(tuMr3BC}yuWTx>Z5hE@!%P5jT*%uF4bjk*obBJ z3+SM7&uv7i`Oxq^(78xk{fFQ|dQUAe#1WTqPWi|)!+)()CMrcqR#@BU*Eg}4SM#T>h|VW~Y|_D8V-)7Z@qK87=R6;D#;26{ zz5gx3qD?WY%VHzCRmpv6G-r+%z4qRFf`Kx&_FY^RY#Yyay&Zp~%#>Ku^9h{<4 zXK+Y3#b4^Vi^EyN|ME$@%p$uiE_TK`CSh`Td;2mnPIjY%beN^F73}2#Q>5ZoWn{cRoWUYiWzI)zn&hORXcg#mEZzdVS z#n+S7<1>#+slTNMH6Y-1ap`k^J<8}X(yt}Wifu(@F~@io zh$9QKs&70m*AYd9op28%8NT2p$uBZr-N$^CgoHj-DuuPL*GF>uzHcjgJt-!7j@YrD zP#unHTB;r_iNA_9_P~5^YF~L_ZB9}7RZR}@dzf6O5agoX!Qtd{P8s6da2g%mq+BpI zWwP!rDj0Wi=J?Kt=trBCopIX6HfLuJ=?_o&ECKZ)-ad@6w?=|Agk$z*s5Dd4M2g);-6=62h z?D27=cfjZGT*6G^%)!AEnf0h~S4uQkPAvFmrU zAdk7&H6o=3H8#ds4=IDSKjNqbrHUfTD=G?V8gq%Mn}7h-E{9Np(qgT&9Nfk7)ck@;V;275m+pq zv^XroX`6#NO+VjOyv5ke1ao)zhDqgdS!b4t2q8cVKPP_LxR-GFIh;oM+D%gvgA%&6 z(zhQ-r0UJ27p=J>FdIEfl_Y!*8)<=|C0G>f!jdv5J(q?B1H{ zuCvr}m2`#hB9r@E%-dQzL&`~N-#PMlo;^WvDM4g_osswcC*tI-{$2Jv!Om&6w(pGh zOhLLPIwZt{o?sgeHM(f^NIhlRY3YdOz1VmcI%pq*9(`1-ai{Pv+hj!qL^uDcg^Xh^ za}fnnETTy8Z6Z*W14PCQwHS9Z_e@3)q$r;Pd)!2T`4s~lhOxbq#X+!lcPGG>b?_&ryvsLbCjXP6 zd)`?}gP@{GhMx?E*UImy8}2jTmgx^%Zn}+m)Ku(g_X-zreX{DPYT9Fc?~R&DQg)aZ zUqW5Zol%qP+4Dn5`k*buXYB@M0AxwW z`PSjsWrj)&e~NwQ5)Mff%2oO`a4Y)BZm`k(cwYdg!Nbdo?~#D-fpRc`-^*$Oj0U4cz674jho~(jk=%j)uLcP;S zfqt%PS~CXa^|B2u$%|@@&sQ12VA4i5K1wX~V<1VQ8?y1~#3aAFgC!#Ji8itQPM16E zBGd@Wz|v_p9H9XamKyO%dd+i*HE}-aP%N#)EGT*ojeRTXL9cD5vB4#u9~;~=k~ViQ zE$cjQ?&7uObyBsMTH;hM>;H*1X6?H5qW1j~Y0prCw0 zPFWgT>H1fQx;Wh=9orz>GKWRqiK*06J9$F?`o#NejUm7l*D1z$$PJb)ES6*vCQm9G zYo5GtfS+lX{Bbo|!MTni0)QKHW8`o@Nwid?$0=+(vd=q3m2``o*wQ-dgr0O|-hqvJ zzF2uH6_`4F$-%jvw&tVJJIVcr6m$O+K#rT{FR9mk`IoLJF&m?%WEhr}oadOOht;z_ zk|v=}3upA37CD;Y=Qsb>Sg-=Ax7*&jSO7UvbsEEQ*%TJt8#Grsiwfs>GpADkB1Li{ zJ8eA|?R)~auqlpZQ0|CeyE$s8(WaM5W(#=XaM!$HX+>6@++zps6^sw|(8mNh=}iMJMb2_kyvCy;7sj#-xDmwV55P`1SbWadf~CEi zrn5jkZ#VCXr3vG9p((?``*JGd{Bnfw>t2kdh%yP*Vk`yuqsAx7wAg=}4M|;h;R0E_ z)*VFr&D~#<`LgW7w`4nGYz*|@3Y-*_xWq;7x8k^!{Zf4PMJ{*zP{33Mp2az@s^VQ# zAP30CY7q8zrh6PU#VFUwbM@ldLxj7K`Zvs-Z_@eK8WY})cCd{-mv2(p$Q+j!WG>Ac zjluN0&u9PsHdQr>wIn_mO8aDpA%uJ$sM`<^u@&9AD%`waH6aiV7cht(yQgmwCJ0y% zJ$$`;OUowDIJp?LCc(yWig?WZ8%TV?Nl!}IMuYcNj0+X|;xcl2M7jKk-P2v}M6C=^ zaKl0V)re?1WKQYjCWhmP!8dZF$Z7A^NO8xMHBKDk%r4v7C!v${D_xbpsizGa*-Rdn z8TK}o}?xt=H{Iq%dUF>4-Q z6;r@#1V%tFG}-K4rx+@PBj5`9ZrUgB39i+)NsBZmX*5pwhi_-2fSp#5v{w&(Z6Nci zx9vhCZ(>W7QjZ!ZI=H56XdmR6>curSR^P!TD)<*=+(=7qy~4WGU*=$nl51iUuk9#c z?WbFlPp1OZ-udeh{xHpFGX4(AC)V+j-V**zfs=}xDbAA4sJP)OqyG@HD=mmFeRR3c znJmw7CY|4gfm&ydMaP$j^;=B{%Ch~~4ZB|chBBF{1;E-m*Efy;WrCuCwZMPh%iO>rQvBsd z%|VW=lO_PfI?v!*2aouEY^C}7QMW%#x|rd>N5|VKpJ?MV3PHiVMB`4( z?`#NX$1Vr|F1qsVdS?#@*|MXd>aVuO19-=O%^I{axNsLW!iQzm4^|r9=MlP$!4;pG z%ih0ziB*!|rz>J=LYy*Ys`}~w5So(NCV6C>l^8P62YZ91m}%Zk~mte^C= zyFq~N*RFIp>3_Sz@}?5%1Xy!DUv`?*pbwQdssPaPLMD{R?zH46gyk!8d)K`@MX_H|0%5A)R_7yYYE;>D=+=q3z=y z&p22SB0INnidyL`9xN;fx2B@$R1^Y>nOfji7DstZ(r2i?u zgrJUQVEx#?`dB$|iwU z8{Rpy-xZ`j{tqFtG^hm8KN#4*w7YP=hugF99)B)8@wwsWL6-Nc&zovG#fTWH_ z&oq9k_={%~S0GsOr1cChFKmoX(&Rz%O6oS(yXuFM+YXN^yjO$Rr{gpxET348(s8)EC*IyFy)LNikhKOk@tkdJNvee`e zHFM>h1@<6WC#z$WcSCb>;no>1H37wF)ET7TH&o6yfCt7e|AXB>)vbh{Dl&%eT1 z$$=gXn+6)v&Adi&L^23aO8mQjOV0t_YK1}mXk&b3Dz0SW%P)AD-7MQ~u!#Ct#>H_>K zPSPOqeD5{>f4at|EEwkbpXU%sFmG)R<5%Ilb2d=;UkfZMtG_EIyRE{->FY4sQBqq* zCU0u5W9kv>Oz;R75w=xXa-{W?Ggpp_9%z)9C}9uonlqLeskeUrp>{`>%&;X?JgusxmA3gZ*_dTU=^t9oPnByi&@vvF}IY1>Wu$_JC`tYi{CbCSv!gsSU~Gt^ZE>KM?c_dtTzP-a@=gI|oXM~coYzr=t;G`9%p zKKWaNIB`hFd=`t296(hY8mUco_T-;}+NjcH;wILav5eeMX6s_&brp&Oa^(mic*BO{ z)Z$FZC^NNKHPr_S2S0dOOqfBv(gp3x_3VI3`zXAI-DDsj7x0jgDr=ORyI<>_X-K3B zgs3(iTegj~QO?8=?%i(D0nT({k63lbQooWooaQ67Qh4cyglPZLjS}{Z`uSV0^J$J% z8pl^3+RRJ&9|8iGR7f%d1F>@{AdfWz!3{LWqW9wkVzt+^eL}Q?F+hABYw4RZx8L%i zr0LsGqR7f??Q`xOmSZ--Ah)5PiS#G7s_BELiAO&KvBQ`L5cB-e8GWh5NE`m3fPS|+ zgtZ$}MLhqdYA7kOOefKtQ}lj{1+ z!&;C>hE<0Kx~eQ|w`I*yzK=IM2+nc6hcR0LsT-xX)Rzy3@zLV5?ZDJqi<==nSiBfK z5fC-%)jJl7vN0c2bvJ5wEb~%z#VEW@W;iM2^?AN=x2o5H91kby(q7c43bIjA;;k!g zyRp)g<(hn1apSV@Hm7X3cFQCw>PKM&mH%fHKSP&+<|TlJwXhGY5|`0{!*a=t2-i7| z#D~`AS37@TFY1IBT>Ol_thj#CIN`D&EF!b@L=n%E#zS6ec*gB+XxsBz-D z1s11hd`;d(2(gUS+b;{D@U|)aA!oQElw03%Ro~eqf%c19p;C7D&|M#fzJW*#qzn(> ztk!2dU5-E5pZ9Q|Fyh+~?7VcN)D>k^mNCPx7-YR*ipj=hA)g<*{TiS%6oFXjRP2|R zTztynn0+%gyIY}K&)Dfu{*m74eMFvSahp+%ANz-u$&{;>8s5-A*QU@m`dnsUYf>d2BILjn!foPH9elf~gS3Y?2#6QsPAEET$vo$@+!ja?I}X7yeh)RxR^y2`N^z`Y~|`OKi>xm*C%e8`Ia*Uk(3;j~Vx*Ej<`e z?D0#+V8LOCr~W4-^6z-J+)>a)Ys5m2hPg3gEu*VQ(dnk1O$w3U8Doe#a{(W)a-6mc z97yQ0whJrr*r}^Xl=jtGx;ChaBeA5*9tE4fGkiVSivP6V`^0$e$Yku|Ix!&Mc-a=A zX0ifN_sD_8z|d5+d1JQ`H@c0##ibfKuhPe7dFW>|dT-%*xHH%QGp>b2yeOD0h=I+4 z*}wH-@;>RGiL!soj&X!L?Hq4ZuRFHz3e)6tkEVn4^me9QGXQLeq{!RW_JVCc^Qzc& ze(4K}Y5Y{99Q{T0XX^0V7MBK;-4$OPpTm@f@GzQ!M+@Yy;97e*UaSLsnsAoA;s`4I zHj4oYVBf=N*oekBH$m#zQ7CNm31-Z^oWfeGmaaZ*axI>*2k1pF^7ifQoX(VNY`n(l z0f&SifL{nKw8rMm0LEuN3Y-k5R4)MMZzpIy@c>Xff z7;Zgry+_bL8kbh&qoy)Up7?&@3Q-i)|6-1>=U$^-+x*+{{nZB=6b`K!7N>?%5Oz6U z&bqB)0_!aGt243b%g92V_g2j$o;r@^{aPMUiR+xoQb&~y&y7PyvEsCK9%W1CyELMf zbtV3>P3Oq2;E9)x*7iE~KXn^-zwg8HFHA{CENFXmNnu~Js^gT)51Coz?qiFoV9?7aSH{gQPh zWb__Hx0p=e%yVpB?^JWiiBrH4&>w?(-djzlAgSrOW#omN{oa?;X$vL1go=}+vzPY~ zVaWX$soW-1Qzn?!NGFY327{}C-eX;w(Kkk%Gp)70LxSU^4eH=gLn)2=cDeLu*g$e! zw}Omgbkd%M8ry3=99U@_JbhZP%ywjB~Oi;5pC}*~QrS*Tt@3 zgX^#eMJ)N{eOeb|T2EdyxVE~aEv_JcSKQ`AohxZ?RHV(_HAbm8d1Td*40K&KGSE?$ zA#q&)^X~et)~9#70~gH6*%x1J=Mah;*An}2L<^R@)7`7=69#rKrwK89F+Bc+d(R-m zOKttoE(>g3H+eiIf(V!OR`!yR0xAnhQH@^WUi;E=N#byE#b3h7(Z&w`r! zP)^A7&?&|#Ck*Yh70?l{sO91Vv%3Cp{WvwpPA5oI+pqsQO(vyTY8FCas?OanEN2+? z1s=i539T@nBwMWi4}opb%@jF2nXwB$UE&Az`!C_aTUUCTi|UG4mLY=j0B{5<1d zz$f!-oFg&o)B+~RE+dWhZqG)oe27WYG#rRZA7|t#hpo~Hk^{5|vZ?Ce`HpP1@dVW& zKg5%QT|I*+g^%GPH1%o1S*pF#{_*4&?LXaC1@5JFBFE4hD}!{+-V8g>48MINyR-Q1 z*-~@*UON3PX$k92!f#daoHwqjs55LCg<-s_nOZFjj-l!zSOBJ>7#8Uq2{wK zp5Kj2ibTt)*qlz5Le}1Amr!78tuhK7qL)KhbU zua_OGVmIwy`eGU~8eU3=S(tZaINjK8#!x)1@8BcGmBaUOx!lZ6ncu2eC2jwpcE{fEPFlw!dt$y)U z^{ecuQ$Pm9iq+z;Uy8v8VVmPovg<> zGXcPsB_xm+9|?t9#m*Y_=}E4gWNv|P?1{ej-=%U{iso));dkipQKXLX4u14ocU(#4 z{yg4$cm7?q-uxsJ#&a3QijV&f6H0B5jR7BF#HE4{gL@&OKT$OB5x%aq3<_$iz*+}U zNp0Nb)=X6D?4tRE-VbB>JlW;{hk#kr$$>LNX*m)>UQ`#?EJ(_&Fp}OeQ1{xut7**t zmR>8($I5b$$LFmu2Ybc$IwWe&EWOD^a19?x6POmw73h3mM;Ttj#$Y@iu$OY5M8k|x zQ!*}+#V3JTb8>DiOzgJe(*$EptUYR35c&Qe842EmD?nAsIo(P`p$ zovUkz?t!EN7pIV$0Bo@)1Eao&U$52A(Oui;bRe&6>P)}R1EU}s_wLd*K_VAzb&XZt zW`PVCeuEEpqh*#XdHc#=QUDX4y1EG<6!|mhO9u92jkC*l*|k-PW{n{>?2S80TuUN3 zqa;oNx*_4-x<>FUo<++=4EqD(A$WasY{<5*dCl~LL=akZRzh4VHX3}1^U7%y3s*06 z5sT!kw&`!J3W0pH>-RdZt-|8|2>{3w)4x37Ji7fQlBOR|-aCJ;BNQYw9m%QZulJyO zG)AQT6KQNhv!J=C^kkQL(+I)u-~gnSULFI6xjR(^v!cIaV)oy1w2L?cgR*M7aq36* z|L_*pnmec5=GGlpxX#<;df2%Bj3t&_Ea>N{@b$qj!MyzD8ro;51!(jP5Z%VwQ;B_e9jP8*vkM=jrd5ZZPpx#Vq@cEO&^R- ziv*N59L*?G3B*}Nhn|8z_C05xglW46BG=$f7Ow1_&%5}mJSP1BeQ#cs`EpuRYons> zC4QUusiR|x6L+U$ho_J~1A}uZ^I+55*`<2}+_haBxJ7(0PjK;AZ(B0ie@pTMi77Gt z*G-%N)e=ps56=>r(?Qa#gJ%7&LnDSug1K`XjEqFEhQ-`G$WogYU~eBY@qU*A>Re!);~;t!XX}!N`@MUlXXQ( zj6m4v~|pO&`4(@L5dMQsL#|V(+KOlwpJ@2kIu?UA0WaBafi8F)JdAe-P);FGHS4@rwikg*xDeBz?{*{O zfg>$x+6{HJ5p}X>bRQ^>p=TQ@2e0YOSIlqLOYEIZm{K1Qa(I|s)kc4kK^gB-jX3Od zHjCm3@Xj+-!em_ds6ffLX_5g1s3f={yWlRfQS(_vP!{-k2_6;dvdT+CfXS(e+HefKy?ydiPa9ZE7~4eX zmaH75-pNzy4=09ov>xOJCNfQz!MvPU;$KD=HH1T&WjnaS9Yb(VfPN@aF9PB5R_Dtl zRAh4Zq+uX(WXKaFFZGzwa2|Qok80nF=4bf0@tUdZ(Xk#=C&5{yopRyXXl>uov*hRC zRI_ixK&Vo%t@!1-$Yx|f9)%7A6qW}3y^Uw9D~wbRYh%u#(%<%6%I|Or4?m}!z)lG# zm(kGEpy?W*n~ZWY93d4MZNO9!!1iy8DYH)s?vUmbd@xKUGbT_7;MP}cz&^e+4OJfC zu}}+dj$vC58*rX3w_DJbQe~fSpVrt?4YyG94B+}HtFq@=U)!>b)+K${NO1fsSj0-t zQ+8i+_AGEd)wf5BI}6}vU5zZMei7@JQ&tG!4nRjWCv!{lzBV(Rdoru0dp5f7_*!38 zQ4jBTH&1HtC1fcY8y`GX5gxT&^#mJM$upX0AD)soQoK&dURFX_ODi)EyL;u0!{ZPr zBgXAT*=NJqTwy-5X6vpQ$ZNk??hOT#sAlD^Un`k!A|%P3BtKf=HY{?wyC?kRV1kiw z+}f&pw69Z+J)Extzw8!M&a$x?VC9{&ke#YZNJa6v%Y%D=<^|h=N)F}3BUZ5f@L=Vq z^=0kuKj*xTsGM*0uKtG*xRL@g6^+XAp*O1yn>|S3e2U*7&=bT4#vcU3JDA|3n1B6UQB%=LXOMTk$I#=0HE=ywwVzYuk9+ANN6 z69|7}1Dr5)t-pB*7?y=?az>92;o6AU$g1GlBcS=ZOre!t6y+*YiGLQ(lGAj}*vdQd z5r#vcFcm10TxCa8FhG|RZ!B#Nm80l=VH8vLLLRl>r`h@Een04i$Eik&(YCb%K8&Q| zrHaUE-zfp#BZoi0(S`aE_=9_3qp z-vpBC;qziIh2Vyft%fGDP_p@jq5P`ZkfnKD4XFrFkyQ8$^rVc=&_Qj6DnTGx$&BQ- zqaE$7~m-{uCR_x1FAV#KKW zD?%(N$8D1vH;$duY=dWo|@#1$PM zEgL47IHg#Y>Sk6C`R*_b`5hHx*#|;#F@{U{kLETW7fmh9E3zEdr+!fxy8r_f&(uo2 z+-`&mi{gtZDqTobysYTS&*=ZHjr8%^q=`G>3}hJvTR2BsIO(ly7<8@oVSOi-j}vkp zm28|1KmCTELP-kGGS))OaEPVLpQDFTz~7Z6nK%Zb&GiYJ%rnexDW-W>pd5Fh%SqU1 z)ACE|1~J;5MMVaVwxXR5#;Se0HqFZ6k(-$_Q}-Qzlg8zXf^BuoQY2kKA+hCIVczAR8IZw2)I!Woz&iJr_rpXLH zKWvc)L!B)VY2|?oT{czIQxImmNPU?awoE1i>EQ?Af)(e<-Y zJk5|khads>nFGrn+#5ylrpV$o{YLd2MUPeN_Du%hpuG4bt{UgLK*AF|3!Ds<+vy=r zpv~z}5IXB24Q|{}BZ2TZzD7$CFB7R-A(+z*dt4y}AGY|aqYNHE0|c8Rt;~lQo$HdW zd*$&KoDr5BYi%2s4^rvhgnc*tgM*}9J`egVOz0Mcq#4UqeY4*t7H<}r8&sVnQ*3yv zX>P}{{^XnYDX8vBic^VwZ^^Nkg+ErKpIj9Obo=h@TeWT6TrVOZXS4ysgMY0Ra%#2g zDxOstRy;9>^yzRVzSKZcUYP|Mzk#mcOFWJ5)p)E%MBI&fU^J>wB#S{-W$oPRm)&~= z*yBCrNcHS4wbjwOCvIiM(5*02N#@P8V#+8TKZo~`5)>RDt{y&{VByvz`YgVd`~Dkz znygCp#*}fW;a>CGDru%ijf|W&<*y$9S?TE+fP=>uL0D{Rb6u{NEq1^#K*9Q>kTrOI zTU$y-U-(MXhK*ghBWBA>V`02@i(R`Gs0sv%1Jm3eA)BbE!4|8kE3x{X%XEB3wywFG ztn-_c(Z+PL3)F_l)?7ga4$F#fCHw~(xqsDG^{MZa8a)UdhJ@~kyFTxhQKePTZ@bLL z2z#CVEV5Lko02Q7!YPs;7J}13tomt1%0?zUSlH>5@huC^hI737ypYG1!5)0r*OrZ) zht&`G3i2N@TPTNAUkXFxNLyD(^xBS_M&@md9|bWnR|_-z^r0ebmKlw!lux?GX*9BN z@lyht4)F_ulpgjdN!KVN)7T^wJ}Uhi6T!VMf994@w_KX|v%{ZsPiH;RzRG27BW}rt z%xSxMR5x^{Pin#lHI!hx9{@)$PA47Rn7OUb!DS5~Pgh!?JB3>AZ|#A`s#uC{Rl2{7t-$A{3M-BVqlBU_ZI$ z6kD1_LJS=ZP!2sKpyuKmMbD1m<1TxJPj4tWZ7`KIIp66%=2Rx zP8}3cJ+yZXNN>s9FJv#oFi@V+A;^{)P1-BhBq%cLGdL$8MbFWmBF4Q&{ORSRKiu*i z)ZcOjo`FpOTEOCX`{hOL2SIhK>0WdD0d!_j!E}8?pJlh{H}j=CPb+=>aR)8C=m=HN z?&)a~4|}ksnwxEoZhFhpDlSzO|L{AbDaG4^CXgkh{?I zP3w&j#%ca0l{{}h;TrfK0!l04c+j6V9rnzIQDNhEvMaV7Q}_I59F>Me(*7Q7e25%d z5!lXOvxT4@NY1My{HOjK6N>T99*M9Qid{A%OPp-#RSnN$o{4W}%Swyl$M`KUu4fNK z+mnK1a7n7KH?D?;3UVsqKq178d6Sza`Cjqog3|GX=_#d)aw~m(KtH$NEwglac|f0R zV#kgyl7F%~-$`eV)cO^!%B_}(D)Rlc`6PGH+3j8wn>cA$Pu_vC!qkmsMNJAxIBApv+PmLvBvj}(kTG6}7(Z$6%AvFB&a5GsO9BS#Q`+-ZwXE-{G zhmymJY&&b-oTQ~y&99xII-^U|>y!HavTRxr+$#?}ttx$J-}V#~b;NEzseN4!?=<}T zm6)#f5{%*q71qJwl4YR&fRIIw<+8Z8dv7G4L6=oma_T0pjYenIZ$+9K3-OJvQevK+ zUyxQC%NUqLET2}`-y$C(GjNDNi}sU$Nwpi6Y!eN_bX#k&IWJun=o5SWfU?7uHH-a| zmzzJDCj~cg-l{bMhS|qC>iW5|w7b~o)RVsKtFh;jLlq*>k2T5X9q^5@2c>iO_h$rq zNuv{aeq?um>sh6DJ~P#Cy;@{;(bz7jZEBaY2~VjaYw7jR5gC^?J$F2o%J&Em(TA$(*7SZgRW9wg^ zv{jyqqB^qn-ErC)sTAi}_nwEWhRug|DQgHDXPioRxf@$M96VemwIZ=41SlVL$m6yt zEeg)m;Hs0(Bl}y?tZv7=Hsj%&ZUl7+xv~vT+l_JC%i5H0cON-_A$0uv;NocbxCt%& z{%^1o1uM3luN2rTjQ$5*gEL0Hc>-FU94q~GqQfd#A!Bc~na|7Kw05v56KorNxRvoA zf@Zg7Rnc=G;jqruNyaYbkUA4r2izo$*gZaw;m7oqQu3Hs#WAuDC+RDmx6oH#*vB)+ ziEq9;GI^_Fv~J{`PER%3%kd=@L!0~;u{zxiqfW8wiU`!5Ox;FpX={(`9Wf3%YTtLx z2S7Q2&)yiuYo$@i8rs6>#^MV*dOuv}uS)yVmv(Q=qz+PIg;V_xfd}z*-r}gX zoYWtfek)d6j~1`|O%x)7 zbHDp@Qax8(YU%B-UcJV;zbjmhIX2QmbA8xZA`De^}i!NxatKHF!ik$H-Wbc5ID$P9*jx4TPf? z1)2khV5^dfn%b~G+gNEUeVRCa=Zw2fk$RjX2GOr4UKWQEVjROAl!AKp${vK3=T-H@ znv(CCmCp55=8r@@^o$ke?+H8LusTd%c*p8pXP(0Gk6BvhST_&V4MDnjo4xT(E~I_b zD;!VRvTda3o9MGjlL)~Kc;p>fIY&O@2z8~Wv)=g;q>=rDSrTjHxS22R$Gw?asg}k9 z-;KNJ3Y2Hr;@TIXH*>n#dw%x}ekVI{D-N!ffq=)Pp=Gn-y!!#DfO6tgqOR=#3xv~a zfU@N!8a906sp8FMmu*WfmvdE{aQGSbR}r-CLq0_T&p?D|R-yv6b;|bD;X5ds>?ze+ z*eTf(;!^YH`OFp3mR+^Kqt77{i;ipQQ~%UGW9%B9;gSN!7G8<^Av*kU}xVvsjzGI`0mz`()*h`a`7(-L4|!WeW!_RIv7zA)mR)&SD>`L=gG)7oJQ?=GRD2zd9U?EKky&V z%&7E9Ig4B8mJ^;0F)@ECfst6&K(ky)Ug)w;ox0H1!{*wWBc?&ys1*y`c|{9f-47=0 z+MX#*ieE30=v?e*5=~--1+gMb16+v-C;PzrB@&R|p7~fodPa57%HmS~3@Ubg0YHme zxlrc8>!E0VYFe~piLwFnDAbn16n)T5x2-saN1CXu54^CUIBV(cn4BK79X8*EvtJ`g z$(V1&eZM66n%#X7NXk2cHnp{p4(QG^chsTE0?OXQ-$F<({v&8oM}#XP=C7*XE_+fY zlmAhg&#`B+a0dh%wbTN;aq&)*7=*giDR{Ql8ynEKY@{kLpeo~Vx|i&iUu-~#l@lbb z%NE0za=E~U6%_w>WtiKk3ZBVAA4uBe=p*LfLOWQ}mVD6oVxYEYM*>!WJ#skE2Q2xs z>?Srbrt!Rzj(3H>dFuWTZD+aF1{Yvaik4EKv`B&A?(XhZDDLhM+$mPv-QC?ifkJ`c z?(R--mjd799cJbMl3!VO-FtG*-j1+)7!8VxI&H>LW(oC>G{(RxN#ALSg`$u!65-}U z>pgpiDJpmrSrZfFPfvi0%S|mgLm_bsI(I#NL91;3oEkV87M8`(HkBr=yBYl0G$|)M zW@c~j3+qlhGEOVX)_00R>i{uc;aJ#HPgPY>kAslZJG1Zk154so{rhx1#HrG%U&2W9 zYTDgR*I%$(;csbi3B>vjy|oS+=77ner>fF{#t3t)lg*~=s{w$D24jNqEXp%t8#M8K z{@BqW=nZAF)0M%vWXw4QjngRUu&U9kq7>|EKts*Co=U<^rK7vECr?MWE(gMMJ`4;0elsyHUiX0vGqJ#OEq6+(D#djQ@Y79X$MiqAx_?#y3~0w9IJKYEuNv#k z$-mx~O8v~dd|#|BnjVToU*1J8tGE^X4-SYtYC|4{KIUraT}2a@KPIFnW)Io->*YBX z59STkbP^3y^=#MRVszky9lPbJo992rj0?<}TyMIjb^r0R&pk0n=UY#y-~p4(oBxokQBN@(68u?L5?i)_))rtyn(XFo@nXmN#aQ0_SeaqJWMO6l$`_ZVz8jA2(g|5YCHE$l;cV`H{M$FT6S{VK;q?T@5_LrZXmK$do(}qTDDl7?v2>XIuKxJga=pc;C#NJ!qp8uJ4q&v-IMrH`m|Ib_7BSz!Lh$ zM%{YIequLavEBGO5Xe9S{o%srOktZuqCa2ME_FBT&o`CbvUTt^Zgz)_D?Z;3Rxwhb!H41P{mJbza(q+h0WQIl}l16QC@M zdhD)cd$zqT62wuMkzG~TKn%c%dpCf0TZhS4UAnOnT?O)4E!Hn~XXk4dy7l!X-}c$S zXVYFW&er#hDotaQ^-~PdIf@sWJcOG|s*|t8V<8&*9+P3RJ)^#b<)?TkTho{e+Rx~> z>^qBXo+LbDMUf@dZWIvbPK?1doF;ly_pp2_?06R8&l#3`+bc1+ynG?>8#1P8$e!|x zTur&_8;iKSFVLp1q975Dj%K->$t9#KZuS$&-`}$dqlXS|J9<@*tr35uDKE(pTYW`^ z%ddWBh->NXz$8|l`lnZ^%v)>H^MbpLP7_l2sP=j;2#!#7gIPmMFJ%*+? z&3Tl#d0QmrfBa0o6FYZg5yov*6~$DyEvpRw>vi1U+rZ<{hW|MLSiL()Uz9VxJwjr3 zji#660&A=6xk#+)`Rd%yw@t}SM^n^kq0t0!v2WEoX&CZ&*y~`^F(ecb^|W5 zL*3*qP)6^nPi3(7kLm84DwxV-BswiFpQxZ{@R$lF5XkQRO!1V8!1d@!a*O{T+?q(B zeq?H$P0Z(h+qnn%<>Da*R-66Gf^10YOb5*^Fk{E`;~}kqm1Y+R6u-6&YzL>WSs|pH~s9Y00?%RaA-&< zcBVy@1WA&QUx>FiLv6;s6?)^D{{w*Z=2%4x=;1+9e|^S^&8 zEzOG0(7Z)-Qyz!LOunnV;nrAbbSjd>a!@QzIw5cH)p&(|&Tvm6J=Y)0mqyyifEP&xNzCgQI-PY5jQQcvdwOmD>Y4SuvCMcZ;xKagPnXH0K_`$ehm+FLLB2)f z%7OinY~R|mbK`LpbB&Ps9o^8eQ8aa-Klt_-Awm28Cg*)==0k934i*Dgwaq!Shn7rJEox*?R zQbTkf@Cf3f-f4Z5Xdl`hu8Ik67(P2N?LcEWCuah(HUjpzVUtw~Mi>2DrCxVILeUW* ziRMFi2g|`Bfl<{#n=u#>XU$11hVw=+4D|IJvou{Ph+a3M%-Kg(iC@RwN_$CgV~RAj zT>I#|xf9}VF8XE-8AP3ZFEdZdiXlx+)0nhu%qa1pm~sX=7NVe+AK>CR!R74cn5&&B{@?eLgUZ zkWA`vRJ6_h3!fSC;Ol}M7_6POl0d`>tpczd;6fYMt5^5jaLp%5FT{t3qR)$#cxc3% zqFvKq|k~^$8rCv5IFUYx_&e)KSf3xn}5U%X!w8u{-D4k|$A= zzf*6eFBYFRNjJd6^dDTVDw_We*sv3_IdLV3$gZ;ttjc29{UKQJ;4mT;&$M%aKG=99 z4b^r0l;NnxJGzyw0rkRcuA%ryt~+3kspfwaHmBS8avPi%|~abvji#B?(fdWGm-~hL=ANI0e8{V)7qz>lq+kyen#3T~(W+h$uS|Ul*ug`hCJ~Ze)96Or?j9Fg)!A0*fEe+(hMTWoV zOdXbosAUrW?CYKYg-13`;fR2ziJ;IxAk!O#r*C@W)#Zn)$Il-R%tiWvL+`ew>F6TU z6XBBwZnKJ%C0_BAb_AU88#ryV>tTxo6?UoEQNt(H?)!<8bD1kD1=^==Ve7EBAo|_h z3`Y2jm}&a#s=ljwYrQ?{d55-dSjVYbd$wNU!iSi)NuK6Fm^i0pdwH4gO{1%BsiU`$ z2)XCI3g6r&FeN!{377m)JLXG9-UI?u+Ws+f!@};JvPJ|MOH~zlUtVsQ*4BOtTSwL_ zId7G-AYV&NVh>k+Reb*vu;~#`V^w!1wmASkNt#emiZU}=jIUV05}};qxD!BJqzR5q zJWEXC9QhpMc>Cc{@$ODPKAZ@6Se_tEupFBYs2zQHa5{mN_p+*dku3)(_T7ml#UYNU z{g)1=F9|jIVH))`C5mBV*gq?yXt!{WXcvBCzLjjg@q7ZJ4oIxi+3F)gq}SKaeMq*l zwy)1TzrZ(m!m(hagtBy&zT)3 z3C5ndMlv1kl@C3wF9n{xDE2J~bugF>&(l$Z_5Uqrqh-|kRuScj%|3+YXm^1}Qg z%oDMBd}U*4p-{Pz!FIz5FG@YQbhKfW*h(m!G3%J*_;Dapi=vYFbaK!N<-8pjpMO}o zl;pI2t?c|6ndgVz-a+KRbaeH|Pqci5Ch#NpOuP@c%lJ>G zwdK%SNNPcoUh63(;g6s7Y5-EDN^~!}!b#``2OL#b)JjVy8TAV#wk9o$+IQ$0)2eRU z{O1yjq?M+;T+K3?|KK=K{vCcj|C-9tTSdI=uzrOTP<>NQUP;-S@u z1SKQ>lx3I$rj>~ktSwyez_$5lf1p|fW#70zVU^*@^6PaIhi^OyDiQ8a>#s5-n7h<6 z$eW~uu6C0kZlZaGtG}OeQyJ4_z*8S4OhESkNRlArmAWil6(#Nqv%dV3H>v*vTmcz#ww$E@h zTXA>KK%jN9p@>#JckFt%y*%Xkxx@Qw$JTC@kk`P6rx`!sZ78soE&3;g#25$ve{i$> zkA^(@vvm3xJH0+ujaEiMw#do~wmH*38GdVU)O}t-I1j@U3){XCW+VL3#Jx1`K>)fp z^a;YkE)yN^Pk=KlKF=cY?x8jEBUBZIechjUNUZpN4tm~vjkr3E}udc0sD!?`pgi`@18}j(s8mQRi-heqEV6v8@Zy)+UTjBB)7$f zWrlRy8KyJKy6<{1G6MRCT{X=F>jP_N*!4uFmo+=yHWQTC({0)t-^h8KdFDG6?1!0U zR%G2kVKjuq5BVM#NZ~40Nb}eFDiDY(yH1ulGZ2Cb7tgchLvR07Lt9pJJ4{DbWn(u% z6};=nah&r0*!z^jTw#+GrPf#`1evA2hE?LK$+g*@H70R~-16{Xe_Z;WoxO z`4ASMNH}WngzUL7RRT9ZYc4Uwg}2UgD(z2+JEE)3stCg%FHEsH{_O#e9eX4soj*;t zMfuTO4UpLeulREl`Un{d3-~6MUzad-jD*ZXFPW_Q!y2>^<&su8Oz)k?0Eq~>y&YIj zbsDmZylr1}WqI0iv0cEaD=Ho7f&D`y?8s13boCO-EDvoxNzutuZD8%amRgIV02vdA zMARP4-326V%GdobleZu6OQT&M&}m+QD_Km0=|2 zDcfPxdBpx(%O%))+^}oFO8{JAt!GRGQCsj)M=yV5x$5;Mb?0B;R1eN|L(vasup_sA6!`0D1KmZQGJYzkhXhS2tx7NTE(=E z_93Qca}^=#OGDoncs1bf25>-(tRfy#>|5uIh;LvLF#QJY>{2w{#G(0A@_4DNjd-zA+r%81$VI%?m9E6+QbN3)QS?6T zEv@oL6(h=6+YDNf`~$xR#YR#0OWFaAou?%syYlCrfnTn&nmJ>jA$c-_p3FsDzKtN@|EEmglx}%SS?OeqTXti|ylY|MdL_ z=d$2Hrt9`qO>x|Un?_2#bd_@~4Ko}!##LpW$N-14?2SG3ch7@>u1wo%{->WaR#_bt zEr;c<0O>e_&}s>_ZGv=lMasCe6@@k99zHbp8QXR(nS444Pd6fN6{`sW0fjFfQIH+* z77oXd>TF*bc^+Msi%@-Qy_pY#q96+o8|#)tQB{^fy0g90a87&!IZgb3a57AbbYfkb z`XX-(A{vZm{0Y(fu8tK<+}ayqLcgCh9MQXDJ=)Z|DSg1~6jURwlID&Fel-;j9edAd z$G)RtcQ}fa7GctF{k7gUd28T17miM%rnY^{-8Xa(RQ z411KF1F`Ms6NLol{!whx-7dOAY!|JoOAVj5xNv|;NkJR3V+tJEq}QZW>7CJBGqO=t zv{?pUTyyZ9hH~14F72`P@D;`G7C5*m3eC(wJ}=AeXPWdE)D@MH2?L1E79b7_{H^IV zU?;j{G*aB0?3@y0Q%uS2f?qZz79Zh3$ zeAm$Zw4-G$bHDa*$_%slTFh5|IZcixrCSSpLsGNnqLD=;P@DBjYZB%fC*m-~r+ik( z#uqRgE3NHu0&sj}A2WQeqO!hf3WPCYNHR5CWG_|j_|T5|*Roooj1a!zs(47wbutXd&idyPuc3tmiH37Ir1|nyW@$NX54(a`j#y; zvHE$#s04!qg>!@jpw+D49fkIT(e;)03^?m9zvZ`T3#toh zlH!{1Aj(@&JZ=3(6`H-$&s4;EaLh4>Q;AY@jI3?8R>22Oct|#ED;POTR*+ZrR|oK2 zY#y(Rq`8Nm{$VUc?>@G*Y2PwJiZLPCH;$~XwT{mZ+DPDip_tvG+CGYkuN2&Ptm!F{ z_Uv|6m~o4p73^T5D8^tFw55%XxvJ_;V~L6oE@6>JPx6&ok=6&&V(xq)<2p>=q=rR9 zA@^R`^rxfAGRbJC-<|nM=B1FDU{#jxmAiS2XUWp8$9KU-FLBkOd2R%NXTj-^rR8wj zaHsW2Zp|AFsov9qbnQaaoG*uq|Dx3*v?Q5~$@*ZtcJT&8aA{#a-FSoNb>8+Idr^?Y zEGI#r_u1t4#a?yPR!?+EJ$e;;N0OKg0j#~XMBAOtP0C0K`PLmLf~#auk@fw6@aPNahBVunqbe~p1EaS0@BI8qo zYJ-8NU-*sbqk!dc%86mWN>jA4Q5oua@tFU zB>vqmCc#dSH}$c*@-S!~QgAum2|1rTo5<=}edws5>RZwdt~=6)wwa>0E=orrlYp&& zf{)-!f7?T}naavXT}B}`f*ycRB%vsfqX==e^OqhFB|PzC zW)^_?T-YD~gOh?wAL8}I>SZ_zs>+=i%CPXeSPGu5CHS7NMjD2jE)Scx>OFMQ5saI* zHHTAt>l84{hm5<6daSJ-4g9Lt1^69&O08`KUDCnJ#wnE~;eyd6R7T=Digq7q*8 z334+uKFrjFJg+l3a#LN*eevX$OC*p?1?e)w$$Ww*?a-m2}30-wU?6JEGnAx9Ja&8lgkr; z5RZ8U6Jt#X8tzD+lHfX9@p?F%E_?Z`Y++n&>PQklYOaxZRp7zy=d#PpN%Ea&9PX8r zrQ0`@_sRwozvO%UkaMEu{S@c%U^S9w`}pOs)|j_zEX( zrq0x`m!Ju zs<5WL8&Zkx;$d~R12nY%WJQZ^&B=2?7BC6zFyi4-u>JMRAv5su_;=ko>8ZbbJ5r}_ zYJs&|+n-c9eD^1hjxSpEh9~wDUGPTjFIDi&?n?`B;I?*k?ykVr4zlTXy`+$2AM`I+ zUXvUcScn!o^=Vd5&eHn$xkHr#7_aFG*E}sKnWe^G7Bqsi38cN~z<|H^L~k-u$FH7! zKX-F*rf0jkwFV`M*gJY5*^Z-cS~)w!1J2N_w*TPp^0I;w%f}yvsl15@W?m{4=EJsv zBZ`X$LGAeVLY(e6_p>KmFtzbAr(drR&!>M>eXQIv8u4CUd8AyAPX0k0TjwOb9^Z-4 z!kiWfVCgONNUup8=f&gsZw8g0BThz3;KV6QK1Q=T z$F26JA--krfaKToAXOp6)D;AYSV4%-*!eCuK_&!vH~M|?XO8fpHf|R?EEwa<_LHl$ zilXRxmVI@*NYL(&slS0>O`bUQJ%MT@kti2H(O3kzTalKD< zJI}`^dCi;K{+cG=A(Kh%&^aZKu6P)tld5Gsqm*JVDR<__oXz)hz>q6SQRogaL#YL0 z4qJaLjy96^@aOzzPomgo?w75^1v#x9_Z+q;HI)T*)ZL{2;2@{5H;e5l?1=>#F5XX} zK_z?pf2j01(6MWKq3Bc+XtcyP9Oj5Ed8Vt0ZMpL(U#?~feW2uVC8K@xbky;qf}P8* zq_%iQf(fR}4qk)tH@cgaYfj!9GGf~6d~tn1j*)P@^nTXhN{HM0|ck``nA)<=*vo4>H15##!bh6iL&QAUe*8XN0MtshAXc1IyiR?wJ zjApI|nPvOlZ6LvabwhzqBlnGBVT+&`aX_P5#$YQ#>I*N1?*siwCg>$^H;MywK+k|! zj&Y@D?HuDTXuo73CaWMK;{UACNdL`PZkdz|%1~I|ZKWUk5s>D!Z(f6G7M$fl=8{o^ zp4OduaKkx4hA(l`x({y$+lA~bhjM-|af@X#uEFr3=$>>G8^&_I(XRPRyl8v5h!T297&13HD7l zj$XS7bEC!#0FO#i0-oe=b;>XyCxEq$YaYD-`Fmn&8xNw$#4?=8JgW3znwaVFf9)j?+Ccht-Lo(^A|>PuBH>o5`(Sz0HQf@FXMW&7TWsHwELW$Y`iRrZg91t4Sq2)nR1 zp^Q7Ty{%CR*#mXz2xKiT{g76`s*Qc)($g0>r)K_Gl@!$$xPaZNbp4}&f6@kl`S-C{ z!y#@&rknA@l7R{eu_|QuZ_lH39)18V)fD2&FMaI0i;y2D2)?peN@{hc9|%~m9~%2X zT3@e;m}$b)!B_vH39SZoT_cH{99sho%jKdPlxOk8*f7dtHz{;7e90`*o9W~`1r=5) ziAk`{&=(dfCehmw5nd`WEvNa*qQ9U!f2cEycdlsaJ=c`YA7EF&;!SAXyMoTER3s zQ(mUUPyW;+y>PCl7F!F8O>NvAGDCzUL}y&2U;fOYq$qlXBZKrWihJ3tgZSjZAjj%@G7<-S<V6Sqs=~TqEhWli<*&NYwHja8Y6E}4NNzPqcW2QUSmk< zkzj3ChdS9^)nmyK>(jT!ej8NKK3e~ZvA0x|IiN4;9ntxl)F{8|$SWx?NS~eHLFn!& zMiZ&DLmq|In;59~P7%}^nA9}`V&%SEJgR-ER^i#6>T_R?LyL!9jM0Ff=lYLd7jJ@3 zCluAM-pscbOmQ4w_4LI99|!rk9!acSVZH?TF%U15Xl=&B9kf8He!(2ayX$Iq2!q-@ zUlcZtI61Qh^&O@q8Y?+OYZ0UmK)c&w~j#xU1niJrlH&=lN!BJmO)ns`y1uBZ2^ z%l&>CZE&c$ANt*CQL2|&mYB8Ev4?s}We#5}`#@54aLi%p31L=l$lXzcUeos7Z9XX* z=$QRhIJ&5Z7pGMz`zee{Q3{C`BW0d{67Jm6K|bZ|kGqqfhbvpS>{$cbl;8`}(sm9) z)Pm%=bUmc7*rBYbauZ+%f&u54qZlQ^pMD8~&=G8_^veG(HH&Q|o(bEc;S2%UZ2D7O z$Fz7DhooV)<~voF!$s;GpBI+>1oo@Nj{#RNR%RNtuMz9?oVD6hi`7LrEu~%k|9Ttffx?4 zf5++o*OJ=YnVk!$YBX?+el~?ARpS9C@6oKruDOY2syyAl1G=HZM;3SI$R4;Htds_q zYX@VudQY+VR89OSXh9Nk{Be&V;x9+iB;?c6DR&*nQ|>mvbZetb&&O{?898|AU|{j^t}mk}kb} zy$#Y9N9p@LI9P!gFJ5&@natd2a%p^aEgPYN=j6q%OR2l4kkoVRKfr*6F*VsT;73;2pV}rVS!>_4; z=VJXYEBF#DM#~W%B*^Hf=wpnl;HfcV0Sv48q}GPTr`CxyErS|Lz9CWMY9(JKJ9&>G zDg2ZV)p4qO_B_@aflx$_?T`eP7%t0Dp7 z3x6LPzr4|(_@Smgtf!&;Oi8k@hK^FH$4D*bD>#|Dw8*GgI6=Udm}H!0V~MTCK>lqF2GMsJxql!N|sA0S71O8_;Lmef9p{ zoY7G)QLs7T>t?`=^z5A49M>$wc&0pF*`)<$&eI&b6=A%*ZSZAZ@TMSIowTh>myrZy zft{c5xbxx!=Tue0pJNXzJhZcKH^$@(ysoWm+E4e2-hBn3hg2c$e= z93NyRq&1f2MjaMMbSONsoYP?47$AHTm_6BR2hSG=7<0a?v? z5vOY_O4ixOX|0_%;P~jn8tq1fp0{Qs%J-;>*s3v^u7*$Mj~UwdoWB&&YcPG>R2zPb zMr2c(AMg`iV6qnfh9MXsn;9I^dli|vLK=UV z-%DVl#jd*A3Ht?!kVMq)5?NBcpO&~MR+or0sY?An@ZYvm*(5f`OnPVrS2{PSGs6Lk zq6SLGhg+z*J1!C4?qsXobaXZ42BMYQM3>Y#qi-GZe|75{l0|eh#$IiQhK`#_D?j+P zdmQ6YsYSs!+6fQRP~)ECam$OYR*(uP{)_q&+~VNycl@1vOwabhx3tEnbK*E6X77?x zIU-!D{wwu(-02R~z~=AFyO=7|b*4Y$e@tTU%y1~r`E+bnOWN2YM_}YGM%+1DJBzIy zy#2_G&M`c)q*2v(kRN82dM3ifsxQigZ11Khf>8$=rOYhlohyP#0Cqi}@mk9rs?&OM zp{~$KDLd0cX(Q9};xY3sqEcijfLRz1N3C`0N=%5Htru~5HR_TCvqRzfEq=-C9y3N_ znoGj;x+f)^q{%y0Wa$U~#zsDj%h6ZHOP{=mD4*Grzm1syyXVAiNpe$vnWw34mqWO| zm-L0@H0-kP!b9qYW*LoARUaXT z7cvOiH%Z+AZ_ISb|20T`{di+vNa*mZ8t|btv_*$1@_O`m-v+n}6Lsxt#I?4+%_qQu zns&XKNsY5$jEbKvX)Z@{n7g#{x8uLWcW3 zyejSK=b||B0jTy9?PPNoHE$d97_ivyEHr^a*4ajrRc{B|hw!vMXqy<{v>53&3mTW z_Cu^`MA#E8ysKwRs#Hq#*ttVr+%hw7v~6J&wb6Sj=X6Y?QF@V}&8k_u&+zn)plY6b zT2z*p5nSf?FBfG!m!C(c$-eEy^Eu7*J{+(MkolflGNL0;0yK2cp2(U?&_03jfqBs^ zMUudY;EPd+88G`sFV+}{fINY#k^U*pZsmY`&9_;qNl``(N0Bow%F8H^kFXFJRQ^?Y zs6WMJ@5v24u8zo=UUqQky%}XiaEM~XqQWY@W1+OV3c^raQ=Ci*E68A=cz|3Ht;LJn z+>h@GNrV92CMh=8A0Dgb#*ZmMlxSPib=eUOSvqt9@!RKDC;Hp;mG!lh<>hz8GW%d} zeM-`>mBq#Ng((kqRn5ql^V~cNdw*jWt-&c=>%BDbWk{`S!zbdb%J~~~-#-^++PV+n z4IAb8;$f95R8$n?=;#4K05>2P^QTNiR%GN3ZUK*rqnA50o#csh2K2}m7%F^mTxEQU zvKbelOs(s$B;`*+!URq|RxnD^d}=!nB5}0egdGdhNFm;m%csQ@PF~pWZl6b75tW0h zu)wwJxkfRZ`(0%`Pr;`5@F44j5p(<$9+g(ieg*4=EaTFJuZE|y&ht=yT+jaPQ~%L( zG=iMqWDhB$cjvF5Rwe6A%GiM<&ULJ!#9G{=_+)`XQT#v$0>FR2!Ep({N%TNj$Wd}i$iywpW) z3dQ-1dQa)ri>@Ttq4oIs7zHO@zLi2$=#rcD83v^M>E!_?mLGTI|>*sc-~($=pX z`>&eZhSbQt9i77f-zWbN?#sug)_GcU9XHnwSwX=eTFPY`mv*Nb`XBP${9Xh5&Yd4f z^<(YbqX>K#y-m1JN>f5u6~ARtT8w-7EnnGNAtC8_e%nc&HtowQBOgj20tPYJ_v)sc z;fp#`Raf?(k_}$b`rSnUD{@>c@UC64{QMm3N5r!%2T{A;xSDEHM($XD&#v+Bu3A^= zis9lRS)wyp4yBF`cpM6*uW%VkQ5AVfmlvJs)9u8->T9csy5I% zv3x;xVr4_?JRBz?I@iKSeBX}TA$O0EwYs+iG(sXD4^d_9yu1oVq_98r=J#Fo6UyP* zLDH`sqztA~wdHR79|FMY(Lp@wz(BwHinXc_>B_SI;zpc(wt%Fhub1XLZ9#j$N(BGl z1!UkC#UX~18;!2EM*5J|RsEa4>PVjJwr)aS2wlO4>D@06>SKq09b`q%hu=T_X=`V= zQ*Ud>g*FILpMxJcFKmNkmqL>o zw5yYT6_!nV90ktj**=BVt1A0kgH{IrDp*_Dr$@w zCy2wK=kUC5C5DRS1!+$D|@ak=yhB5oqo z-F1;WO#Z~Ytha)xRFhtT19)%x6hAo@I3QHwbV0~q38^?7a>gZLG9*_ZH8}-P+#9My zn&CW6m{ncNuSS8VmeR!cZo0Q9Aq_PO*cG246}I$-N8Il-yFc#%0GHQc%0TqXPr4b%a7Qay7FymJ2SbCDpVW)!IkLORYfni z;e7j0I{>9g&In>1d^^(MPN?JK|wVvO%f?9(Ujm8CWEd&%VY*@d+odNvT~)TEU89H#o}%3d6*8ROIS)?gxPWw zJ`9mTpwYJU?7Cq^y|w+j1P9K`N;5#e#tp+qwO#DG*y~qemCUd+K}a}x3$I>81zQcx zJH~F&(af-DQ4MqR$=1EJgCtS>aLr|0XE^Wg9k1r^&_89G>hTP0w1a^?0ZV{Y9-_yR z;se}}SN0T-^3V)s3Nq}03C>&o%PS(kF3h^UPW0cHXUKZjRbCx2 zY?#ppNS&^4h5<*}z8=s3qPXfgr$0)9;$N5%3-kjUiDdrGcu~^@!9eEMyMlsCL#)lw zT`&uwk>#2tMtB*tDQ(^m zYkhJ6oA^Tvdz)^J&`QXiMF$w{D~(kg`s^Sq?=0_8i({LMBoo~TsnC$3B=#OyNS>1l zYs!5GOy(XWS&S1}5}q8ZG4t8h+ z)>|8f{)Zcy2Dp*?3vG7&`MrKr{c->;|+j;aw7tb;E; zBEQs;vZseRS5-X)V)kpF)xdAd@(71LYN_mTwSM0qEX#PZH2z3{_RS(jF9yt&t)c0* zJZ^H4o9}>!*;T@lXIYklaBqO8Ps0KIV-!xv#| zge-_feAd}`k?9cEHItPKG|v^R<458Tu0%agMq#sy+&rA{jG~xMh86>VEQEfxBtpW- zh^V*}ND#=|sk^|$JI3)>`0j&Pz01n|{8~B>-E?A8;0}#Xt7JX*sIDsyR~??jxkX%g zeV+wu2X_ZvOVHVxK-GcMT#A)7q5#lUE1Zo5BXLE2j7Sk7Gb88?*|GL7SKqEm;*aZL zUP9)ho-D85CXVUD59~dsryU2*qgqnfQy!t6fzU+GM5yqPEt;3uOnCoy2E(PNu)%?X zlMTJ|s4SC^oyinVP9+I6#Y+$1Q-z4dQ?S`ijrbRGW(zeV8$Bm6hqlY2^}Xl)${u5% zGT7v-1b6VCg-K&qO-0co_S*i9%zzN~c~!7@A8Px*70+dEnxD}o4qi52Sz~$}=1ykB z)cR)+BfkS!9v`%Ubfr5lJJCBaK37Yf46Em%@0D+#W^Qzx+_g)2IoTm(m{HQ&znRR2 zNqQ;_;rfrAY-@g)vbg^tr7)8kTPJGJYvm2DvT<`7p+KlZpA61-uY{x|#CSKWH*;{U z+pkw~4N+Yt84(RRe|AW-uB7eS3}*ES$?96-0!wK~-L! z=y9p5?COBRhzgV53gc{tj0FLxf~_OP$)--r!(_ z>&Ol2>$ipxQ-vKqXmv;}_In2goQgr`=6E^x)EEP_h zJ-G_1X^3fJ8@K;kJM{Mc=}0JjUX>f|qv2Yj%cFjNI>!@|2T_Q+Y18EB$B-Myw=(C% z9(d$u8IBcCfKc$x(>?aG{!U8jjZj^A?rQ79d`sI)?jwURK4du@<=O&!IhrypVQeSU z)Nuy4Q}LHBY$#)0X=TpYlpOOHIwfS!=Q9k>Q}T8L{&eZkB}T8Sg;ZAMYsh@5r0FU1 z?c*8#(Apzd*D*=Aa|{Jm(_3eZYC-65IA_`pCf4Prxf($r1b^G49hJRhTp}6HqHx?I z$56a@V|wzg9wAJH3Ky=pSZPH$qw?VRe6$M4QC6BY;g92C;2Kr?Yy9YeXX~<%G=~l@ zpFA{-gMz&mi!tfz;<62R$uKuN-eEct6l2lwzJ%E*qRi=T)7Ax#WBJLR`0 z2ViUtiP>WnpR07XNgx+_U^ z?MFY=G-C~%vJqrjmWIi3yt+;loH!LO6RD|q=U)CKJl%J!XX;X4-(F}Kp|%aX-236n zOSq1{USwfuwvTKbxKVRe24FW}2`9+8(%4)n_(J$|R99U;fkP5w2`~ zrm`qY(v)LQvW;>wE%Q@1J|O2#6W#2;ebp@0K$2KVYwMu5wPzpt-u%-T`M}dY8GFFA zkQed1*jyP|;l~kj2MO^_& z{D1$!(I5$Nx;3Jbhe)6jfl``X9SN)7u zzLY*&AjD4M+oYmoo|r5vRuvH~)la9%<^s5sIIedSbSldrnNC}m2^Z?rKMLjAAK#6(5Y1f-Hf<^a=QU4f_K!$iJDJ+2 zGb*D>o7mw0A?+-?+U&x0ON+I|U4pd5io07W5}e{*+=F{@DemsB!QC~udvFO(@#6OG zoS$&^{+tgP<4M*t?zPr+&8alP{NccX*Hxlm2qGl5q-&ffgms0_k-2tk%p~fe;T8jO ziro1RA#lYg6n@EC9vq|Xj9hIT)^T)F*aHllYnCg*r2cVb(j^2%-P7Pz+R*P`c>w4JnRKCLR)xNs2QAUL`uB@`tz8QUEWDx*2S+nS1U~ zrrIuO>j^;%PaB)Zt~>6(xS^Sk*nF?(Suj8G6+OM}!_gfqg1|+bcSX_9V#ckduBWEO zNjB@gF=))OVI!;XjTGtpW-W}{D9u#zJyC!%Pki8S zLISCQ)TO@ZX&3XD>`Es6;-&aqdGipImnEikAoI=^=0Qk!OL=~h5Pco3A{X)>0`v*@ z0D65?NEhGhk1;qD@uNPE=lh6>OK&584N7n0X@P0EO%7rqlZUVi1CIbh{b@3pnQHyg zv`G2n71ua)G^Jp5hb10TKIgAH$fa~*!EANISu~NQeiC}MI zOfE>8Dld%-D*|M%Ixv*BFw&=F*;R#=>GjNaUWqms3sHQ+aursF6%`{~nzvwWvrG zJSTPZ*)gM`4>MRw?|7nR?u^LNdSKMrQJje&+U#TCd=DgKUfRCgl3KUCei*1p{?QFj z4k?*tzLmq;%9~w<2caEWd#V94!Sa#EfodA7ojFF&ejiEmrVV?`qf_}!VWxRS@u5=r zL85VQrs-kOZcXnsuHL2TysTvHUfxi)Z}uGn!cEi~=f_NnU8+EHfkM%A$&c4^ zLh1o+w))8y^JLLho`T$Y`_C;5cOPkeV$+up5{pAW*9<(E;PrX5&CQrNcoj2datm7~ z=?wo|!`QI>pxdd*Da9?AO@nrj)-+fDXJBZp(Llcj&LUx*SrduS+OgAnA~yUpi%PV7 zAfUA+>3P_)+2TNkQb~}V^Vs_TQg|DFOhN;og zamol~m+@jtW*WJ$5JHFm>nVAU} ztzP3?XJ^8A7j%VB@Hk36Rls}b+ zP4Mgimnq$Nnl(X{m)w~Te@>*3yb;Z?m!*IIszqmli@UFl?w`qSJLZNrUc{bqr9inciHFb@so*^ z7t&~m1bk(Uz4=?agp%=l{>8U&?)LoCU2rGo|ATO_TrNb~2vJ))sO$dYvXhZ;uX>#I zs2ckccSafu_O5M;iO!MQM?&*{Ri`2e(CZlvN$Bj7leY3I3?*tBPVCr_z*DH%Hu zYO3~IF$r(U|M`oOgMZ9NKD17ov1gy2XJzbEfKL82n#e1&UUPne5?=%lUgY|^0X4lE z-;gY_LXX#`&g3GPH1evPkvSrKAy%EvFiG->Z;y-lux*<*gTFhcs5c%grC>@m;K_A- zS@7NEVg$1dP!5l0caFe=%u^bXt=DMHd{;XfG4!UR>DQCq66~jj zGuVI2dO2-Is#eoiA11^Z*I{Tm{JL?k8nug%MbGqW`l;FD?V+7d7M_qa4Z3JYbDTd$ zlMQG{bFFB^%kvdISe-TB%LW{yNZTz>Xfw{@9?f|%g?dGuHtxiQnK3CAEKy;h=Z9XCK}c)V!cyI zF`ul9vMt^(tqh-|O|nf$>4|96`w`}p(4i7%G3gDvl64Uk|6CYWR~#k2JcS}`rIykl z_u2R(Y~HPdWE+pTPMXPhU)~QKoVYyZ(}aFkgw$}$@f|d4)gkWCpKPdIVW8o92ed`1wTp^+#i98h@84Nsw-zA6Pvdgqnqebj>z4$Fqqrl zx&5`lrddsrCvnvuZ=jgIJX|7_L;$xgS>vQwPDyKlWhm_yEdVeW7knq zL?64!3H+fN@RDLgK2M;7K31_ zfK6ouxf}Mi;>@0j8iUl8)DLRLSl~p=G@|u(LPZI8p|kO8)dyB|hlBTGkXl&{X_SN! zA>iw|YM(~>zjK^kZ|&G2a+zQ`a>33`CP=^4V~6XSkq9J9PLVSjNJ5Q;5}!U@Vq(}8 z;c3ACul0KFiP>R>)x@M-Yt@<0py3U>Z*sdIS*=i<#$+NC9*`I>jy?|*ML`)>B3$`u zX!#si!vW&@fxIeWsf1hr706us3plFhU_<;)V%x%nsKE89YG(C`JPDDi(A2-Fmye>O zT8^S5_fr*jU;1$=i5~xN!FzoNQMKRoQVQ8zZP(gdNzba~Yvc-Y;^pn`tnwjBGhV=R*q4hGFYPxI zm7ZZWT6ZOj$lMmvDaEP)gH%XrV^KHBRjGzU<>#H`V(#a6R6lx{Sx|mE_PCE?vm@m4 z8!);LA2Pw0w`7@+QjxqNM0!IzVEHm2MIWnS>^St*R$?l?F6c7ysHL?ff`P9h?1Y_P z?*i@7fqQKafVW=l9T_yfsQ)|3u2o_X!=ubT_!_ad<(^e-r_(nm!oj0eJiOG|!109_ zx2q^b>@sRC6cd;>Q;irRoV}a&Xe(}luSV1ZH(|KE#dq}3{MF(`H+&HyH4I+T2ryAs zH3r_b7{*8kXY#NKG4y=eIhcdFQV2Wb{Jf9EJ_seNCJ%!ilMe zI!exLPOm^59$Q|}iq%}l57G5od#n*2qTj8^OF{K8+9{rSh+!Uilc3OL{l49|>#&Gn za$x#T4pF?way`Jrd1BrAcLklf({5t^`~H!zYSaIN4qjuF$~b!3@w!njk3|w`liGig zJC=mlWz0V3)pk~q8$Nk2Zy&@vNDX{bQ7X{WIR$^E|6H%^@k_L*MhF&8x*G9qpaxWZ zMa@k5UZ~)(h8bGWp%K60SxPXR(}Cf7dwFPI9W7cg%{r#TT(rvOa3(Q(mHovuSMswn z`Q$Wm(ee#KfFV(N4SgS)$q*Y<3l;d2RLMdQ`DBdk1$Hb5eGh^;cDs@UuTIF@Un*UxNrE^YCE**LNPM%5~K#!_}^Y&&?fpx^55;>N3iSO}%pjgB^dd_usNlhiJ58AO4b_svEU$ z&=Q(=jTV@vl>ZDaKpkFIkNJI;e|tWrMzQ$51yp@S`*b z|9W(EWm9}7dDa&GLsIJiUbAMi0dh4iSDYA9WKjFz-k>$OwLTTQsyx9no7!w{>~xB! zcHt#e^9)l*HGHo5Q`&xfJfZXwVE^-}?DomHq=fl4;JwJL=M4RF#nIUQonFwaF*o>NnATU5Yge@r7^bR}NL$i#4V_LmHcf-~UuE=j}b_n&zF z-i17~fb(w&77BP0GkWwJ>uatS*_qM_QQ5N+_&$S)8=BtF+g8O92a{|;Vih3bMZaKwV|Jc&+D=Z6=}*jyBZ_;Z0j1&9{x48n){o7hpOQB} zI5)FW{Z#t0BJ^i=Ty=c}^o-Y(f=T5PH|xO;f9H76oK6;o3H48Xb+N|;=Ns6T{EcpK zesSP)u}M0nUR#cx(h(8geL5MOuFZEMb5M8CL26%W>eVH=P!wm|J!yTAi_v_b_B$)^ zi}JVVH8UEcioRka)?jmT{xbVS)Eu0gQI2mIYFRqH<9|ycgeP3=#_m#bg6SEYZ_wZG zFU?>q6zampA!t=ymCaT<08Kn5PFxqjX_133+2GY`2m~lc^&diA(LVW9pBsKBJLH8A zDXq)CM+5Oc1p4onpx+|;p?U2*&gSDpD5+2U8A2j8IAB|Da-k+XzGWbuT=;XU#3m8s zvXtuz^V_l+X$I+M+RWLh2i=DXn}_N$Rgsv0xE*{t56hQozxy7T`*zy}&UssOKo#xd z)}%7km~*i2FTc7axq<$KusK7Q%Kmc97%%;d0_9hwtv&pA*>kuib_e_ChyQfq8b$7C zHKRu#fY0X*DAAmJU5DnJ_V-8C@gXv@N-#5VZ%zM~dA{uLD;g!aG!3{T)BQt#ORIVxGo04Vg%YO)C=X`|OH+=izyNN>; zuGCc+R`2RE^(YK&*UK98h+p^SQh}IbG9-+ahdn?ZUBaRPkrDuMRg4vU*cLGZY0&%hnD}}HB_!og&z*+xsyi7%istrk z**0cos;Dl_5bGInHXMPB@S!q3{$yN%6|dMEwC>`;D|E#aUggPmL-Z>t)#-1RC%cqd zSdFc%>|>t-gi$Dj=&7u{)=gQRd)N7r^+XCcz}l+Rn|PtUB;JRL->n;*+-ze-+pQT( zej`>C`nX?7m#+}W?b=YBjUuKN>^i>4ez^KrY=u2^uV2@CPk{%phBf_bwW{W7Vj1>Wl)ZKrsu!4nc zf}%Z}USZ|K-)_j38uDj^HyyZfncT9>srU?#%vh=D{&S}}%^*Fu;AR24!|9Wu>nFS1~woS7<3 zNU|dd4VmP|upDGGvWPe`GrIZ?NC_$(RUgc*jm&ZfCjJP*01tV)EB_dc`i!R;)fwaO zW_=XXqE%;#L~7t#C=nY12nhopQ75ijM;9dV3X4ZqYx$0%8H8Vsc_ZRugxF&ycns7M zqR)-Yx3UOhrs|S$Mu^KYtb`Mn)rJ@H@5b@ZNk3a^`Oc+e(i0}$<6S}LUjf9l%qXaO z#|&B{x=iN018d_yFE1*U7+rKNP(v|t7)I){L{k1#V-b8#Rg*^Pz{wZm^RSEVTr#WSM!oQGMoh`6oz?{`w}{MHFM6OyhcgZ%|$rrlD%wx^L@7 z5|R;48`m?KrNcM0X1gKPj-$+&$#qekT>9u>g(s}vvfe`N1zwd4uZRwczoaL5>avmf zTxPqfuhG{mwyn}|>y&B1B3-gxq%(0rf%iQ=dh?TW3j6D|v#xT_aFlAJ7eu!ce;86~ zf8X=>Tg%dr_Rh#Z6_i=vjRWub;#dyzuP-Smo@pY)#&#OKd!p*L(bvw;N02{T`BbX< zN@V6lJ;P+>SN1j??_e-7Qb`w!3CiwQ)t2y_D+a(??#-axEh zV(PcZXX6)*|9Is-7K~|VvZ?fW6odqX-1z`=JeAC^b%so+q^vVMxgN}7nY*nuX;pOj zo}XVLh^0V7an`mT)EnBl5bBTCCQyq=|G>{olH7eumm_6|dnDdEY4E|#!Ti%8VE5vc z2$lOPRr+9@Fxoj|jX(QS_w|E+=&$0Sv9p0HHT$rYkA$3c&CVi~6Ms+2&~0rHJaO^KOts$vo(8`>h33QkaI>gBkI%0?4LoGj9Etm`a)7e##QLr56kIAB0EPW! z0%f7+0{pAA=C&`~)8Rfi-{_a+-@loHBS#K7^}$AeU&SQ3^kw8OE-n)BN>hkUOFSF| z+N!M-wYKR+dAvko(WkzwgRdVY$3dC9klDL=v{`i~e4lsPlgf@(q# zzqbj?wAHT_4AzmcB z%h~U;7e=y_Fd$;i(2tLeC10p^F&~1&X13aosq=b`ckX$Va7o+agg55n9StL4}uB7~eYBtw5ZWJ~qx>xo5t3*`WGKYtUNk)xh-L{_D%a!0eP06@QYLChJC1bJ5Tv;CNRt{WAjlu*fu~<_bjTP3`3wHe< zImRZW+EawANwutepp5jH_-4}{%UU*GJ_Yr2N@AA!h?A1u{r^J0o0lah8k%1>x-V4d zYeqv=N4f1dzU>4*IMu!%9^yxjCi;B6S71C)2w|L9HjJNSCobY9O@Fr~b{X{7mD`ep zU5_O{ro8Hs9u_9e2|>?40Gwhp{|t`WNO`qmRMkfO;vPyMsIZ2_gl;Gd;uRi?6{x7V zR;~|q9{qU=2D<*-?7##|vy>*+jUb*AD`l+3O41RC*9RzJ*YZxk170mG|@sKV4W1u_!M2LV+4Mx_D%S~-yP6U{so2OdC#L)#mPk{~lde37a-aYi70Ni7 z1b+jup8aRkmpK7kS7Cfk1&)}F>phr*$mhiOLj@W1Tr4;XKj!xn1RpaLH$&s~yBUF) z{DXWQ<*`9PGFuN5$I-z12st5|3Y z^3M!~M;BgutDkYHaIb~5{Szj+dsLrU7{f@9%p$V%hzp&=oBdn&QO|oe>xXmTXkQAc zmX$d;(`%&NuWn*dHRXeejs5;~%`E_{msuw)^P;%9;|n3xyy`=Bem83Hv8j#1iJnY% zm8tw}SB;^sO-|XL8Rc$^%=Y|f*C%u8+))>@y2$WUr-m$~A>%iF5RR!Wk{#r zCayUOgJsVc-2(5~wUUK@&H7{{go5SXEIrEjr87Bls@VCtXalqb6;aKWSvq%b-H}Qf zabhO&&>DmR8VpTMSkxJRY++}pc^owx;MR#b%vAwpYQf}SSkUlRhkeugQJJih(1~p(42wGGy z)be5Zd~8LXG-yE6H9N2paK9%2*XL|Lfl=F~6a@(%}oiqd||Ry$H1F{@B}KW_J4F6-dMUn`Fop zB7jLWguY+f)vMNE^XgD<>>=;sYFAMbvryxn-8@HU0QaQmMg5}Tn#iCdl!myqIx+U_ ztedqaaR3>$tcgEl&|xt}3!Tk_Z>|(cJADu7CfY61Gkp{3x`!tyZC;Y{%ENQCNiL62 z!P6|v)KL?#?cIH7DNT9gPAp{COhVCn0T+Ab-rC4-Sv3EkV2$579BHfly51y(pKrYJ zx12J`pe$>MTn~hOjNM<95kW!?FyDw84MwcH6JTRYB5HqbdiC$j|B(|@q zIc*|46w0<8>(dzmtPa`_e&4}Paat}EB+AtHgul)WIEB$YOb9Lur8&<}J0>XoFHeE* zVzE;JrYeM~B5b`*zfW54)WpdG8ZSxHrJg)}_XXweYk7yvvhG3&qfrYc8Z#mqD!1RL z-SA)%P`)9E#k&&oAe%Qi=p_Y}Ri3M=oB@I%?)OkajxKuxxX_6Vye< zf}J<&vSKgav?l1%FmUak=2JnPFBWk3^ixcI37Kz7fu_RGqg5nyW}=Q78{OpO zPLePn4?eB;e+W`saihht%(6X5WoF(Bo4btqfc1Apm}69qLfJNJ&PK=e0lTX&oB>D< zhDkT4)s{53PJu5mLMtTKTls=ciWti4!;v%c_ds$Jio2t2`+aEoviH*bh@sn?K8R>) znW#}YunA6hR%fAM@?V$~dfcrr5^St|SqUNh#Lmc}LAz?MbZDC&OVVrEexzV`youkpxn%;RHDw?Hz z(!Zms>KM{P{VSgLpjl(wTVb>6CThMg^n6dFhoPrh!yXGRS)%z(+%D-;(;QjUkoyr81ZhZDc8vkQ-vs zDu*qw=2bCLcRQ;i#zRPW@RMMnRo8y>XQFe}SyhiD5W|j(Dp!rPeSPTe`%iCi2mZV^ z1c2T-0q8qw_N_Y7R^Dk5A%JX>Ayt_B({3ASfRC%fhXrJ$=zz0XwfJ$U}wqyiUvZJKvC@qYu(T`1c|-hSHm+J&+k4-MbKH* zmH1pdLe$jw2wvB6IVpEwv9s+ORV>-Q`OekVyQoM0z$o)MkU4+pgcpDK+hs}+XV#+v z#5lSw=OXoQJ)T5e0w3(k)Wd`nE!?p=5>6wvoKcyZU~8lL5`)e;;!E|4@w9Z(dd{;O ze&AJ}E2M;+7xCL&KdOhGeB$<32co@E7eEbt7D(dMMxQC~Gtm=v@KO)wN~CWTzW_n6JdfsL_tCWw$(a z6i-;s?+f@&1aM~&;BX0A%zfzcaz&9^C8U^q+AKZS*db`+oNRRuxH_lB$oORcJ~3Ne zDM2)q*E_WwF1eq6DoqNZ{F_2l^B<&(NH<6GbqxIOBHMy^fP_Kk;sFtgnffW~s@ea-&x>aX#Rat<1 zpqb;YI&fyu#M{+z3msI#D~i)I7yTg8xztV4zb-SFTuWMZ@}(etAbouXk$ElsS3IP9 zvNr1zP)*&#)ydMHQw)PDtsAP69Jde5+<{BA^i0%NsGTzv9K_e>NbCyBC@L2DR71_S z4JTi<-^_1=d{27Y5Rbey-+(WKAaReHBD$c)imhsVEs$4V&uyk~j#$ z1~E5H3-i0epO4#AGQPSfj!`mlo>C%v?GzL1+{sVu?GK-WCKyQ?p=QcBAO08N{Yp@! zbEM8)Dn{=&v{@Vkou-2s%s>5qt*l}1Z%P{iLuVNqBEf@5Wa8RNUqFtMfDa~;x%5#!KL&ZB@B0W~Th!w}x=00qXYxe1br9H|veaiPL-H~`z zCZpp_@-FT|0WBwOS0yD@{Htp~x3I{f5%Sc`E7cc)mk+Buiz-7ddnTgwH-8SYK)WCM zEi92|VbSkjSGUVWA|(!y#mgUtKb2CaM1*~44${zMOlA$ zYTmfB%xq?8l4JB|3d6FEcJ@_AtLVXB1?S#&;DYqjQ-oQ zDX=tg12$ZN&*Bsc0k)@HC+({rUj*8|t*=*&QHScIxqbc(@HzRC=xEj7&hIM{CIcbf zRay)l5tfXG3qN=Go*hY#OhOLCk)pkSTkq6}O5R|R48jc4=6NT9w7GYz#3D>_KqjfV zu+@VERujY6dKCpq2?(e4rF5x1gqhFdu^EmK=?CJ<_wJg=;e35v?*M%T<{%Y%o6n*1 zHwzEAy%GgJ^9@>G$peXeK-X%D2iz+~{ILV+zN$ROoYhq@fgGHoOrnxf)9a!2=$Iek zQnoC%T@hiuuMLtvsf%HTJ6!uK491q|mTm#Xo&JBp>$~3uIw`|2#3Ii{_Wp}Qg z@Q1od89!3w${#3*N&kAT{V~JjKI1!f!fK@_)7LarRO(EZU+YD0jSLZk{@^Cvka0-D zsMyIM`L#s&A&6tY+n7tQl(P4sZba{r)IgEvR9Yj}{Q9Vm7aLu3wMv9-8JQmpjsZ$R z%`sRIa9q!-oePsUSPQ$o2>$7lm55LmBs|qyPQ!?1YdkplA76skF%2v0-JJJCe#5lZ zCoHhds!~c6M9&%BLyW5jzU>#sfTfSapR|@)GuwxUY{v)Fiu4&iKHuuD6S0?M&o)dv za$$6bwrn^5hfrRLo;HL^PR{1+{2q(_p;`&o5QWjcjB&nhxV?b>OZ=sjp0iog@Mh;< z!bqyMG9FJNi3eQ0-0uzp>>3W$1dPkhq*CaRG(_`Iv4!s?cf9sNxbNKdMneY0Yo`O z7uP%JopKiW!0ih^vMmiczB=v#fAu7lTqMU0{2xuaow;|)_Y~jLZ@E6ZZ!4FvYm9Jx zLFDm-6)1YcVYCTDd>w4#HZM?~%6N^9>_aTgx#x%U zdeoFxO@KlDah(WfaR@5Vf`p98$fkkI3L4*j^{}pUDfanJCAGVK<6HJ=T;*VKd0dn@APKA!NbsH^Bc7aX zHYsVBT7j&y&@Us(CdXvVH#{hQ>s%tnJzY#q)NlL9QIVmdyaXSVARzlCudvWQWZcD_ z*L&=b*M1IU9F2!)rc&Ov@__gAvz_S0rM8ic-hT+x=BkcPX9%w%x7N~!o;18yg4`R( zxt1$1Y}fR|@$0=xCY$U7)(oY3u1~+~qecP0j1rb+TLj)p_YhQCMKNYXL#-V<72)W^ z3^Bk_Sq4(7AW?@dB2-N;14veM?DP7HDUaTa^`&YbfZvQI4%AjTsw0z0QxFX~3@0b? zbPlEZyWyfnjDj)X_}q=9pd1WCk7^4neq*#|e${P!v&o7{pY+v`5Wh%j*T0zC@Ohs} z&twl!@h(KdKc~sT*S5diYI}5g!9R6u7xQjH=Y zkPrV5%wA+@&G?im0v7N?kqy;T9h$Q}hU!+4TrPPq-$TRpoq@Aba^bw)0ah|O*(**N zzTZbHrVD?h!p9z(R8H^9?vfu*=@J2RKykFmE%U%f5pmZRWG0tkz9*(LQ5p3EuUBGG z^>V~WvSH6cYW*6ANzPZmsICQDGITp*sY4L7^&|nzAEr zS#9?u-Lt-ZWeL~T3*~40Z5Fl?%|!wKq`5dI4;^pp`b_X2OX1bHN3-0wL`)0cKABEj zd364>F5wRifY)ngT&K|;E<|S&WV-(lDsKy1XCXrNZ5?j|*)*oLecbpWQi{DRR^^hL zSALcMA%NRK*zG|dYN{iM5qICGkm@+69r{%3y_s)0?FygpX?=~~{9^y6kqS2*Y`)p# zL#||h%hT3J0!9^pYD+17vdo;)0=m$2^=jMfRqr~*n&KxvBv2Ff+&jc9mj}xu{qmMI zk41$ZKtu(WBP;?3qZemdi8u784v*Erg-YXA_ySM()%LQF2y$qv_AMvc#MO!GBQnAH z!l^}PQx0cMm91BOJzPyNIpz@ZDEWd3J$va{?jal!jaHCmI~7t@nT2e_)5I)eGxko3 zsmisrBEX5=3l&~ij>Ud>ZqF!49g$JU!aPMpoxng6`)vqgsn$9Brno@YlD5oFtMF~< zpQ@YF)cUzzgS}`ZW!Pz=#C%Z`B~X4^%5FdY+N0_|oK=~4wWQX=f%BP)5;rELo0d;F zV9}L%)jBpHcX_aC8)_Wua?L*%@}eqxT4|pzfR*q~WJ{v+*pWiJNj37vVJQ0TT+5F4 zE)&z+lJ8%I>FPo1iGS3OzpVhMdjz`Yjw2?e5%P+8l;v*y^Xun+H0%L8sA24!K!Y&$ zx_$^#Qe(>4P>hZhJf)^*GRqE06>1)RlY6Ph38Wp}X&M5n=0#ux9O*x^#DpT<+CU zl_ck15F;A!@qGPT6N%o>w*A$X=yI5EKgR0-^N7svK|LXT;kqpmO?vYAo;;PJR7AQa z`0gfWxIcT({RVzZ07sn>zWeiYW)YFraXd=X*72VNv6dQJ4!!i+E8GmG3SX(mgD*|EN%k~z5|=hTnFWbM-5KvCAB;_;>~ zT(Ozd=GGwzD`vS9m!8YyDM_x5i;D_~2}MJ@nlQa#yv8`HZMP`A zQN>kFqx)$XP=KnAE}AJkC7Njb?^e^;wqc+9x0O+%y5*)1IWfu)4$S-|ow*^yC?%yY zDOrIObAOMTPQIEla}(Ttm0sn<9rgs4K2fVaCk0G)92XOPT??ADtXZ0(!|zbP<>dWh zYBC@~aXDUR(mkq4WW)IKnYma3ey#4To;Y}3%4g+6z0}p_2kx}MGQ>i05Q$J!X*o@% zhK6*%!MhndS?xTbQ9CVxzmzCV?=^6j*r(8+P&4I-_%;?8JJZRW;uUu-TC!OG9@S9L zIyr@^)ipcxq?o(j))Un9^z=*;rVxe9kBGT;hbStMe=1UPN#JhzTEcEla@d=4;3_sZ+SP;FA;h(!rY<8FEMcP3wmo9{62yO>`n47LkPU`E_Hu-qhi8^;SW z<#i8Yyqlu5z!umr!wW|ZhlQ0;F}}2bf@;7`vx#~4R;VUPZxI5gU4zy9&(D`OBk=vg z@;HePBFcXV!efJSp*x2p#e5ApW37NW zHO&$?#@`af9cJ7yh2HkbDHVzrfLyjtFRxhiHUXAY8C5sUIT6t2q6cSz_$wX_3rptD zgo*j&jf#3VDy~HJK&i`v_9?3lr61t?c3|5%b=%P1EkiGh-)5vcI^=MW{X^Mt?=+ph z|H02BYeW-pDukhIOX-|j4J${+!lp2R9+5(^uXuox;i&k|=?eSO=HG;5uZx@2Sr-(K zOGQ=wq1ehazBLpxnBiRIC?!Kspc5a))|3dJ$BJ40)Xk&Ms*q2I-7hEloEDnE7_31; zDqeYsOup!GjUoNlSi_D7)K6ssl~VPs@6^?qCIP5|O1iG+wIaODeEZHHOwNf<+X419 z+@D19$7hxY96w$$w5TnZVSVPAuv0c5@ZFIkCAPT4zTeIujfsCkHi8W6$4+#MxL~H{nf_t3y1_JZUij})Qyf6e_ zv!x7NKeG>e?Gt3$63)S_(5L67h%Z(kYa)ns`8k>)XFA$SW#g<5c;F4w1}cX^`-E_Y zAk?ub3Z~?k?PVkEB;|V{B|KpautZLI+DF^1j59|}Vd4vPB?4Qy!U}JxFCT(NpordQ z4$z;>CUpu`9Rgh1Ul^luY0pu^W!c7b+!d(p5>Q%&Lso7D415UJAPr=fCOxvr zesQ5qkj{gl%{x@D4d{!ec&MfTJPiYN)$H#@9*4$fk7?^E-;#Q=x@7VM>Dpwo)-Toc zuEosD;47NCV%K&h@b_xDP~{&rugP2x(55HuFHO0aUkHbu7O#aG-Nd&pc9U^16|azq zpU@zR@9)1=loF=e4|*q!XK*MoJ51x0gBI!q`esu^8F%P3D8An!f#5yWZcfyIFIFYI zHWYs2bSJsTbasDSgn)Q;Wct_2k^uCd0z0eeTA0%p#==BA9BA!4tpgWK@vV9>c`-dX z&(#alx#I*RjqTjo9|M)#Q{^&;cBfmwOXZP}@WIt(dfep++mf`lnbDVU`?9yp+arx+ zt8&B*FrtiAs{;(OzhyE23^Ih{F$!4kk(Yj*Quxm!X}_@sg~BctYe@$EtN|`n zv$2UutA!KSbFZqSOFThy7n=N}D*>SNe+a?v#-aMD)hd@fB$Cp{bkTDQ-03y6l}Kor zF@}s4d~P7^IEaF@_B*7FoS$oJy3VcbOKiX7w>mAR=Hs49H#wj|7Kn>3To2^PNXiSa z;#1@8h+nCgw_&s zTH!NG$S;cu{nO#wN($WA-co>EbBRXnFS*TK1Dsk(Bd*=_&X9P<~BO@W%~hq)9m3 zR<$LHzixxtp8ek^5ILeJrp8{k)%FyN8=}gpY#(*2-dxi>d+5ZtkDGx7*034;6f3N` zAmtr(RnjzNxYEz*{RPg7-#C*Uf#BInGt;K)fV-Ai8+A!#8a#T-Lo+s$2KIx`uqijV z=|&Rt3kEwUY*nL!tCMxs2#_)sZl=Rt1=rM03x;%4w$d>O(X3UDA>NwiHrys0A$48X z(X8tm#$GE(Dsr3<;yA~}Gz1Xi4&I876apq8%DmO4_V5;)}tC7#nf z;2?VnQR%pc@z}W(Tu+7@L2C6S1&4D#PJudhamr(P%SWJmg{`$HU>2&T%0Z8!$v!ou zC!h^9ba?)Q6{284$zB@p3xxath&^MHMzwM${OQEYX z@(J4x;dy3tH=gv10A^?MN22+hBgE0V=2zADNjq>xj-`Fc>V?ljfOr3WYs+R8%C17P zSM;!;brl8)NT}$92_IL@QmX%DtlXon_RRMr=rtyM>`)gJj5vbfm2ZV~)0~Z`8&q5~ zDpHQRCy-AALJY~S=4Z&!5U7wm%dc-tKx`rZg#AmuMIo8f=}})tzYN+H%dOhnflu8E zFv!V77WX>;xMqrKeobnPyNBUVRQFvi&UN3_CJWG3d*1Z7;wz-gtUPTcK2V14`j^pQ z7Ra0Ab6Ij~chXGHn1F@D!z*&AivNk@8+%L)omXbsvd(F}hRjQIMxs7k0<8aDvRxCmF2P<+I%Z;`3C=L zSbs1*s$?(?q}bH+N)@shAp5JBtR~nq1sTEzCD3>vR>wPpBllNKqFkM00)Ah>Y3_ZO zfn!m2ViAi0e(zF27{XKMFYhnP*9f?&tiBz?ii+%_LQu>sUtg7nzb&k;WzUT&-xARh z{urwNrnSaFyh=KBhhX_9zZqo>)Wqm0D~okFYN7K;%CdW{=jsPgTNpdCq>oW*l(G=K z`>AyXKWRJ4Finv52bjBt7VNQ8@N)29%}8e9*tDOusID^@tz!&yinEoKMWtmY@63yw zIS5=lvnuv_AR_NPbb3N))6hn#UMgqSEfpa*vh`#MLM`Y!b~LaRiI%T)Se%ELHl+Mo zx&{e1FGMR#i2mZ_lHadN!ce=dvhy4c1Te>Zy%pyAwL?(&*FOHj3K5L7Ysyu)V6WBe zR42^ZbX#dT-P+I%)=aT@;~15bB1erHwmyzcPC0dV{13rhi?-B9nYP}9Q=vCv$*f&B zchX{V*2Fudsp%XasRGW=HFXzY!;JhPvrY_K(r)hVT$%{kw(srZ9n>^YtQZbDz$FukIvOmn|-Dq8YN5xlV3!GI(gvFs^gOG<$gbCc$${M1Frqv26 zLb@Y9jk%kLn13X;wf)dO)mU4Wj!7}HYoiU2!LX6^Cx5@8OE&TKE5iSuR{(?TCy~m7 zt*4RW?BqHNKI~S_qqA|L?^d1doQe?Rt$=sos3S@V_~YzWz-N3S_y$5zQxRCow1|hr zm4TwOt$R>A?pC%&srEYuV1P*%s=Czc8)J@&;7%@fj+sl-*cO8r*Atq9mL_LS=^faM zXF>ToUaCuHJ&|i6XNWZp@tLGHkqDr&$B$TqBuxuk z%{I2QvZX|)CBbx%YkPn15H^k3KLvj1(mgdp7zFL~IQo0pAc7A=vh0^5VNb0p!a0;TTF&Z!eH~K)n1%C zL-{4It7nuHrmo6^H`$oa)Mj@s4XhUg52t?P$A8v9$DZcaqp(pEZXf{C58jNSh0lrsf(cT23|t5pb30s<1J{41;lt}&|6RZZC{)1^+qMcK zhEwcLkyVwOaparQX=7*E>wR+S-mTgLt?|-Vx8tOspQbUp4T&Z=6t+f2uwJnB))Q0- zZF3HC`VoTRQjjUw?66In*L(SWA#s=JAqzz>Dh`XxAYQS~R8Fz=0wu}xEdt(Zwi@G3x>NKF@( z_&N$?U0y?}0kd-zU%3Tu>VcjJT6JLm^nxY3VZV-qZq$7CU2YCIpB( zPH+!KE&E*_RdFeeXaYgF^Vl~%kSTqSPxzKLQo3Jmg=|d+y>0E6(JG@KRKJzXZd_gB zYtCGOdCdt!zgbLNmU@DW1cO3`MZ%|5h!ts+E#i9uXM@weYX)tuIQHYi2wm1OuRN%B zXd<~`UALXtIG-ViY-sbFpX&%tnV1ZcC%gpBKh+lDT~q#2Y9f@&;O6-}=(A_Ab&cNc zz;e z(M=~sorOK9IEsj_J}Q|$sdWFAvgjMxZPG~dTbNI!Z?OynDgW5Ud(O&aDCLLYG_7O! z;-U|727OKEkO)i|SX*25a6Q~C^WCXoHYH$3>PhsiUSKv1KPFWPjr(M?;<9qf&GW8K zAvL@1h(pH#!ih;8$PynO85e)WkO93diwwufu4R1IS=y+*X)!LFUo_h$vOwws$&ZFD zHIva3!6__><&ib|Rj`omYF-oF9VGq0GiGTBr)(Wg1%LkAidw)Q)wZ)cFl5j2^e;a` z6bCb`KYV8%$Su9IE9#v#&1P?>d-ojK3wCWf%Lm0W6r(t-!hO&m7>e(wRZ~-72Gc|l ze?=IBJP>OvBje0#bRJYO`o$n9q-NU|U7cCiM2IH$p07>gN(QBtpQR1V$cR$7@TfSx zfj@jw)0Z`SMh#ZLBn}SD{g5UGw(l8-kQ`0)rdF875n>hkAF2(+zH0m2-r=AbSCv!e z3U=F{_d4#X8fRr2GKgqAD*4hJ8Zl*}@j$+o@d>R=#zqfzuz+4sl^p?wtFEUls;{Cu z=e{M6)BJwaxPZZVdQk+OWHpY!F>ogFyD8X*=C@$rN=;YhKl+cLN^}=Tu&`;-{g2+Q zwGA+^-!R1J{vz>9DVM`vFYD7n_~A;^6`zaT@WWxsylM`$kSCmOyka-;IrfYo3JZ00 zfqtVqh*H6+mH&<(p%I=h-C!kQ$2}|~vXGdE$E0)p@`BtRzZYeW3~9#TP=8J47b(6e zQs}%Y$t4q`ufApIAIKDa&E&^=MPHH2X!J}TJ5KlqW+v~qYsd%1fZY)nmEADnZ3w6t z&8~Dwgk{4#CAP0VItuQRVZ$GEfA+buFui$WJhyu#I)(=xVk$0n-tFAb^NA^jS<+&MIaD49MaT11N6x`7Cd&>nI&T(I z8busNTHDY^pB)+tyZN2tmD9KNT`1J~Vq<#LFnCGB@q_kvNDeguC(zT(Z6H2-&EJhF z)R+r9Y4_gVOsHeZBDsCDcfe+Phm?yrQf2lR3GGofXO$&+dd)FQ>$101S0xu^v`&__ zT!_2+!V@z(GPj5*u{mX*T%H$2UlD~I8j~}ZUW|wWk&@eQMW4J}^dWSQ)?vNjrpb0~ zH!Wr=04lQN+6X>rG(KvCsCnQ>&S_GmkDG#zx_p9_a7*YFr@gJ$pC6e%6u#nxw9Fzu zl)emSU-S>yq&8g^1Ois}a`0v3IDoCUpad}(VDaR%r4A(!5r zcEF^l&b%HLL_P_;FNb#s%a)YS)L8ui(3HkC9~4FaCWt}M<%OlYLD_2IvLAr`1!PfxEVF* z1uX8=zQ+CWPNfjFGzR0z#8+adVa$g&@Jz8rJT*m=v*;<}-S4ah$)s#x`*)2S6~0?( znLQBxzID|dRA^PlKkZbqvqqPfoW3qt(;YS4c&wQBfEdieo(Wc5y1V(cW!TuRNHB18 zZS8KfvZo7>UgZ!~7B!`CPl+NPq2CIuNs!GVJY0UmtCyuUD=i+NLkO2qCr#4JA^--;#o1Z!_Ji23`Cce!5|ET%+}s2kQv5me z8W=}^asPwit}>6`TASWb`g$;Z-LB`ib@_@j$Wa)vaAt-?sXLr7ctPAfYp?dT>_3=6 zNkS6S|6q8uD`OuxoEy{coWBvt|32rEo+O91spOn_zMGhPzpsD{hs#MQr$2_y7BOD1 z22yiL{r$nKE@4dNNe4966;S*9=zlQh1Kb+26Mxm^;p_zfyCfF5XORgri8$y&Q$=A< zp<)14ml5w61+7d8Z4G3-%d!6QvU0b;yDq52iypP5XS6KR+xVLOB;zTYEroVVg%#=% zSv>JSH}AE6as$-3)}SV=kKCHa&M>VM1SEikGh~l-D~sdI!n>JsDv9zGsAWps^q?d5 zk1Xxz=d+rOSV;`ET<8(`_CJ_;B*p+iDJ<${@1rjRcJE62Ky_ci>X`b=%H-}Z$Yc$K zCz63kc{((?bpOGOt6uoGjtedT|9448d{$8W`QuWqa$|K+Lvf25xIKH-yyXEY411Yo-l4r||$PI47t337es~}sR7#b2>>Qb}& zrmODYP9CVj*Sewd?P~LoGcfhFxlYd8ncI01v)T{JB{pIK6 zJTV2l39TLitcqQgyM_}B62NhP;YI^EXji-)(80y zhC07G0Rg>mu!mmO>Uf}DP2qaNx$#q3%TcS32-Y^ysQbg|eVtWcQ82;w!HbEC8q8h$R884|wCan6lY0CI9QJU6~6P-AD)Ynjd3D z%xJ+>*7k`};n9<#YtP+*!|Lk%{=?GVw7069pX~LAPRDM9VzlL9v+{CKJo0}qX2RY6 z;o}Jyf15={UkZw+nVrUv&Pio^%aS{P6^Dilg~rWS3wHm0PpG~HiXw$FR(;6lmKLXVRSB7$Gi?T=wzqPq<`KQC~|>KD~cHq}(+O5Wv*>%wR+gMtP3)yV#YQk*29?^2Md^>>{xP3*C2jka-4fh z9==vvZL@F}$_pzWjra%guguY{FTG_5%kiS8r_2${kRdYI1E17i{H&KljP^S~4~i9U zxMOg%%aR3m%n438UGWh|4ZsUte@tPcfD5U0|20Ujg zdn*9jd+Z$4h^I}MX2a+dqM^#N9il&>;k=(4V26r}f+`4rUU)ls=6#9`C{yFWGPhW*$$i&Id{aXhSHzc%%n-k%{lB+ImveLO9FFZ;H6h4Gu3vU?3?a!AgxuBYH|YRVWT=Nla=XQh5@pv-=v!4ji#(I>{V!Y6mh z8HwJr3E$}abUZ4fZgM-fpu8|UqRT*<#aFUK?vhsIY?hp$>d73V+Bb{@y%RX&RCC^w zit7`0;BBSqJ8vaSX=!$-Nz_}f2mfuCYTHR0)WjInG(<1WcN)>>R9VvmA^U*4pkp>-yL3ccor z`&^``;M<5U#JQ0==@zYGZg4tbC9{+a97DXt#3#v8von2BHw&F)D`cEnq(ULK(@r*- zc0>pqFW3u!D`77E!9_Ne2zq!`P&>FNbv*7bMMG!w-zKhP2bEx#n zRNmpCBcSlE-Gtt~f*&%J(soQLk})g-s^QVErhKJl5#Lx55#Zxpl_ zdwDuH;!hSR;Zvr&6bu=*I+862i*615nBt$#8nj4Nn1&v39Cq^vzs0Y{Op;Jsj?npD ziPKOfnoqHW3PjeuWEmt^eQ-%5bgR|r4jYk9S)MMS0{S>J51I>3fkoxz{T0U*$5gId zDwt%RCtf6Z(S1kt%((raTtt8L?KpP&Fo|nMzRdcqdkUfzj~2>ni}FbIjG8sUWA zDg1wJbQi>>QHvcDx;vv3M9Tp_=Lp6hkKYZEwtd8i;bzs|5&h`)`F>b9?-j)LSX(|> z|EZ!bNr*% z^--hWcXky;Tt6pVhCOB*a3V8(-^k3~M08qODKVeNDUCi71PX!*@c0i#q z*HctwOxNpTvQjDEJ#d2Gr#1#<8^g!TdLvs#kKarO)WISY#|;u0{k+rZH&#~%gvd2Y zRQp(~ssfbD>J2w%q6U>KyXsm!KG* z96x>6!{x7iW72E(k|uwut_NUi?QpgO5VxEG^6o42A2gYalg|_tXi*(UY;tf}~3la@_g(3Y~1yu1&t~ zO94u;^(6_RDim(VnU=(V_g_4)6L_K>4*_N^7^)n{D@%cw@u)Qj?~=DCxFnEp!r6^q zE(l#zDU1CY>1%3}60tkRz)101$DQk6AKk|j%xW0QYy()mhE~QIr9ynW}&D9 z6|7?+tyL&i+}@(iPOmkKlZC@q@!wo*6)kBFF`t9i%k*y|mi9J5Bkcy=YUwgoG#Bgt z!9?G^3&&o*Wyyf*n$AI5BO}|w2Q4ZxT#UD(0_+q0NrBIg2nmb(j0)L{UJ9JYIl(70 zJfNfRdHlrZi>fb3%lz7$O|cc#SY7e~iKaHB5EoLa)Xdx!8O)DVAp*m?qSpP6#%x_B{Zr-NBJ>q zgantB_HPSb6coDh%+wDA!S>eRB`2KqUuAmETO~(xdN=l7)#08q%p zX2|-V8~qQuz-_QipyY!Lc}ZOBj68l7szBr0Bk`A6p;9G$+=b^I5Adg9hhBm+TnwMs zKAJc|oRb%AKI!QN7sSM2R{l+rL9_nT!f{3mDb#;^@d#^Qy!{t9FBjpm8+FQJHKTxq{u_^ySD%%;)XDL+bb{`!u4Fij2xyj_5zC@>>KkB+X| zL@;FOxp8p$y1euhz^~4&G>W3`Gm7*D(|9n1yl4*I6$B~!R`!|)E*|yk@5(8upW;iv zXDnu3ofoG$f!fA+{O4t$bs&auMO7qfv73b0Dj@-*cjgg-s(LihofG?wq_z3s7&U2w zf0ZvY77m3BvIfn+X((CxDrt@nBA~~wiBu)RklQKCo4`~^u*KB&ha71$6{pNwj$ow_ z;TItuFu)vZ%pEi<$B9arRpaH&K~hcshmqStYIgx=Ucvz);&Ox|sv`Gu>&nS9Ar?B9 zea;<-yd%4Mlcax;#e;ZWbyHT^)S7UD&K)%-FHd~|GusN~6?Q(HaX?9kL)2Fz{AjSi zNu3x#Nrm$)LQ-hqCT+`J@x2X;dg3o);Ha_(_dCF$uC-f#kqBj*jMl-19>dPwSNTo+ z1oP)N*c$M{=kyvoM{jyv)jiV@l5Bu9jMcTBH+5<&IG>8y!IATH;sHR4c4#KQ#4Y$j zezI)`0)7sF+1`+nb5r;^Z?6GhZVtVIq%MK0>wbMV2h|<75w2&SKULfvY$&fZZtlLL z8XQTFeR(*jU)A>}+}ty>qTvcvYK7lNMt%gsd>MLfXCS!2V}64y!yWsLlfh~0d>Kli zUh0g)vp%M~rq`SUaHbVm5&VG?-x+FYQde>)sL3J2mhV$9(vWsu2l-Avo8>I$Xn1gP zjC%{E**8})4ROci??xTuXm|jga1DuEeO`F6_wL_+=z=bOAG$-{7MMKHm1l7`l@D3H zGUmNq+YTx{o4XoVOQZTRUE95ai(jqPfL0WZHG^eW59S%}p`X7+m+Zf#QiNZ-0d%u* z@aBfH5rbtMVc#zrjB=*0bI6S=%1})Wbl~QR6}v2S(}4Ga6ai2Euq6~dw$n3R+LNOc zH^fP0$T!H9BG>7jv#N%Mh`mP`~2v&xEbsmmDKr-Fo1K0 z2}upVzs}m96ul}Uhojl0vJ?JrzvIDAXqSXO`7R4RSbQmj$T!pJPmxmBfo`ch)TZ<<|KF}({>BI zSJ`D|FTFim4y$O1AVdmj!I{mf+B`Wya{a`Qo1o9GZd zn40Nl-`S>ACi>Nhh*{)kkH{g;JcHSJ**&MGMW@5qy(rVcwKb=fM{I|0QX+3EY-QdC zriIL=p{$26A}|gA!L(Z3kQDx8k|Ooa9ki|D3|ffyw`5>H=F<`v|AdYPC;s#Qqyu8v zGXXf!KfzW{?j!#^D@qb3r#B7jA@BYL#m<-coy&AUvn+t8*wG{_d6_ik#m_k_`qYqsasdt@+hjqgN) zQJLU@AanUU(c#$Ptdq&B1t=*d2hSj-xGp|Q;dtpN@gK|^Lw9X$B0wkh3Warp5vK%Nv=5O{QiwS@0IaTUAaY8 zFS59*T9@e9lualk?@1G_xZt5lE@a?FBIcK0vpL}hxtzCR2{smw zv!cZymSdtfPJpOj6JqnAv>lmCm?cUptXz6DlutZiW-4t8RjP2wrB^0=vUQp9F zvWJ55A51VkTpXZp3B*mq>6PuQ5Z1k&*I6`V*azD9*RQqwK4qmxN_t0a0hH){fALf z%c>}SA|b0?08yrX=J@veEEA{fD|I3_ogwlFb18yaQ}?reEPlYpw}Iel_d1eC6zkhd zGu5#R%G%#dUm)45qTKKU%#Wn`7H?dU8#i)%C0<^nuwR$9g8F1$$JsLXuQGP$DeP)8 z6FO7B4LO22{vI7vmi^WYfLYg{60pRL)c9=hb-z6azh}Fq$V@&ZxhL|FXZ%K2dJ`#p zSMV2+8bM0U*Ugd5FAb5H#%8s>4W2~4p}fa`0$5H;o`6vivt;#_mg@O{wD(Jqe5mSaYr^?aWh-lx%<^3Zb2i z?Xxs7bC<{Nnj>!_n)kQqOB6@$rrt$0QZthTJ&Y%!AdzaD7F~NTLJxgnHPh^b#(@Xv zJ@-Z}JzX1ThPa(SM+b?$UdZW%X<)z8);M4EG8Y#Fw2k{oM;T4?$|SEEzHcQJrV1TB z=cC>wpA3#YHNQifN_(y%jR<}oNfmf2?G;tVQ%#D%NzP4nflK{R*&c^>vsbJAwO=Su`S zV=T_0lOt=)!3SBPa4(9gg3L!;Q3xw*!iv)6KX=*UqWhtSbIXT5JJ?Mr?v>GtVP;Lj z_QXTjS-g0dA!FbQC|*i2JkY94*lpqc1;0>e$o;2 zd~G^%VPX9k)#lw0D~K&y{bg1rS2Zs49nk_uFy{eLtPPn({|Vi62D_BTNlQ6xg*7ak zGT%U?&N9sm%de6h^ib7d&4GLWeywYF)kcf5BzK2J;<2^FNXxpXox&Y?dRc_br^SZV z8<2DT!HxJ<+&#O>)3NUh8pxvIxgdm5DvaSrKka!Ylhmyt)N7+O>568uB8-mcA7C8K z9$m>$P0^_{nW4$1^?X?2rXUYg7gh?t;ceae)BFPxOgw7(ulIa;QBHGqP)IkGjV^o_ z;92c*%3y6)=Iw_`QJeA>N+yJpXBCr%c`b7&9BkIYMA82viu2GDrK!1VD+q6$O3U1^ z&}wPRtO5!AF83p<4v4fwqnYX6`WiG%e1khAZbx9@)T+^l+ibNlJto5Oq-`gmaF=u? zNT@3?_+fEXr{-$0&Nk19pK-LyvY>z2vg3=eTbiq|r-n}mXXI-!a$9yewdJUrMbVG$ z#N-mKZ}l%en8K=%#G}qPNB5{15)zRYy91Jt=C5O~F@l5|&LGB^3{*6`4kIdqN8U*P zO;LmbOp>{R1leOg7_80=6z)ECUgpbI@uz$X>odVIU6%DY; zOGAA5LX1qxieSeXP5aa?ld8>RJ`Im?UvwHtn1S6rtDTcwyUqqM>Y>CMGD)4XYyNl{N%!48AtAT5$nF z*fKyXH_rx3@r!H!>I1HsiKU1ZsTP&0Y=}loY)$)lNYS0vA^EbZZ-~aDM9zL%ZW=c|B?~U>7+>r?LnNd7?o|_<^@#AeL8-t${MP; zY;}oVr%P$kS89CW2aJ#&(glvKYX3IVm-9X9Y8L%4u#rTSLq?cL_CiVS!W2!UqvV9&G(#o_UO5oX+5KLt)(QGq(NoT46>omfUm24?#i6NzE-@1VTUs6I;+S)cM`!)8;#1z= z^*0G<8<5WuzS!Q>6^lrOuG9xLBX3}t1EVZ;MDM~j%F;GJlO_c2rb8UQprk=n>Q1si zN_FU(Ke5?Wy+cHW%1(hvpD|$xFS4ATN<=iv<^c8=W9wQ8|1XO;&uC*Zbxor9y1U=T zvfEiQ;mRZM_*nN?Q*r#-4EpAAJY&K&**L;XdHEk~#6E0F25S%B%JafMB%`BW4GUCi zr0`8PVu!aN&QQ+-DCb+wP(pbfF&+|1D2Jkq=% zav+7;3BYt*auy4nJD^(>%XF|j5em@LalJqzMJ}EhdH13BFUtN821=f;s7wLtpgH0YuOVTY+>4ed_O=A~DfCDcfP)5D0yNw+9Ym`mWpL-qZ2i$pJl36YihuH5}$(=5$)Grk&{3Qfc z{N-KP`W*LDQ-v=9NqO<*HiO@AqV1FgYL21hFPr<*p#NW^A zh)mKOfkrEX8~@Y=SUqvw7(0p_>W11{P$ zhKRg}F)DT+L*-W+gtl@>GIar%iWh~CR4FH{(f=+f0?5S68mE~KZg*{*d^j$`AtR4W`)#q zb-q$=-%ADb)_Fb8a7`aEcpjCR+g_pOC&_PlSHR9tLB%Ki7n0L&lq+`7JZ97Nz7tu7 zM{bb?v>3@`wZnOH-~{?{?oWeKsipX2?&Va}GF;mYU77yNSQ~qgq)yIjTb^gz+`tjZ zsn}@_)RCRQ%vaFF0QbxJfDs*ouO5+P6?4@m(d zRS|^?B!5Q;JFBwE+4V!O-EJXdQpA)~wmR8T(iHF!5PwD6^dL857QvjKwI<>7QofOR zl^FziflldIk+^wHLarwPgy9%*j9;4P*8dIHKZk?XZCq57R~$XB&JZOx7O%G#-4uP& z?7jdbXh(=v(hQz9n$;Y7$|{5=xq*CLfA#O$t6(-1RIY|tBDRxxlfO`G$iSIhBym4} zl38+8t9$uYab1yiHOg*~i`pH{8Jgm4Ih}FTneCKB#3rW_sxe5JW?OuT9_X##{grqu z>6}1GB?fby+OXFLJMh}!)AH9s$Dvis0^bdnU1S~q#uZ%%(3^kvg@6d7C4@J_14&Tw zK`i}md^t+giaj5*A;RFbB56%V<=5=H5-FUJ0OEa`v1LOs`--&}R`4&)%yd1Mj_k;o zqOy_=B0k@OBoC=!(qC^B#Dh<=UFA;80(0=y{JjUWYcx-g&)uf7^% z%ru1-Q~AblsT-=GVuXy@)YY;8o885y^`C79xK(96PW)k&sSy;;{f zMPvbOe9N$?{(gM1+UYjwUW%_HC@D>;xlD#(Ikyi6-=u5|M-TeUf$~)ed+yz3fKb#7 zpcQ3lh_=IZ+J)o>cUvvqHa4C|q^A5XT^5T&)iP#F!AjvnuArwLo;$IOlAIcr0%}GN zcx~Cnz1z8cCs~oMurCxyMU)VAAU$WQkF73|YGu>gQu?BAwcDgJ9=V`^iR3hP^HA4z z5FE!~gB*%oGy_Jj+qmW>|4=VHE933r;uGVCkqLsD&Hr5}pmV*F2}?*E3!1PlrMJtJcRB zwZ^}ZvT%i$aqJ&1O*&1QBhmJV2xuLNen?yDL7Je=N%W>_1Wovh1N2DQSj{bmXGPQ~ zt2HN44jMa|6zYx+4jOjuc-b(1y|>AbC$F$6<*n)owSAXCmKtTJalmmFes(* zOm1Ul{M+md)v>uh*KA>O@QF%DVBc3^b7R}GBlKgoWomr7E@MKNkwmKRr2?O`qv#rpPEieabcEYOn!! zf*ESxNS(e=d=Wf0A5A9Mf+O@Cmrnxh!QVW9KTaafPa@ou zYDQmXa1)7MifY6SfVVtp)y3{Eb@u<#wXFqVS12UWh<5NRtys+wjPi6ypAk(Fh<51~ zz5S$JU0=&Mh4I*`t550VV&*GfYlJTsW2k5t6uI8-@e!tom0Y69iMcP0-9La5a=Mi0uT>_?x0ob06@y+}UV5#GXM;rXIGyus zOP2FAXO&-Qt`Ual2yS;_%|{qr)v(f>O4A!6yhx297>zJW#xHb8%sJ%Bx89@V%r?#K ze^3=8G$%*DGY##Ei+maQk(WL@|Lug_TSo`^t;p~akQ|`an~}M3!ssIzlU2Lrwsz>_ zVD8aW*Ky!T-S-yjHo1rXwUX2V!KR!5T+wwDEsjNQ8R7^WlBmJ);NJg`9rjRmrnZUi zY|=7!M4}MTy3o`2CPZ>(P>j!%xt_3a5VA`qI5vp5kbpO6j8#OeP%T<0nN zi(Mp4g~#yI@Y_)Ai^UZ`v$^FhYs!TOF&3R1*24BcK0Z_8adxpUBi<&-=x!W-#&mw- zInP<{e8HZ1j8-w59AQCn>BKT}$`+EzRAJepcGefpzt(<*sZvop(5dKa0-^VW>G->8 z=~*Y=PDlgccC zhmhGJocXX}ZtY>#bK>Fo zHwKaCp9!*fji1b@5RLot&CNUW2uJPQh^jiKQQay`$@8?b;m2p#3|K1$Jzbvc#Mulv zgp(|7XPdeKu&%037PNBCTdZA6n!^u)%Vy@k449@bbPc{4S$QlSFUqmXzA&1~#}d2O zLjcPz#Jp48?#k8%D_0q;$!_=GoEyio+sm_U#?xX^@tne64$qLF$GA2GCB(pQM-7kG*X?XM=xT~+=PNXGH?FBX^U_MRp4wje5F>Z!!`@|W!9z#Q9k)jq6S9%o z;uwmPv8J_$%@|@^NIvekGeLM38C?1&<0W3uxPN-*Oy-uGLztKx6_sbAf3il1ulfUH z0I6!+1|i`PCv)XagegFu2faBn+|eqJB?W(l2we5l;PH`Z-7z0Rl@p5T%cae9)q~<9 z{i((h1|r~-oN=SiF`t`h$I~^A7|1iPYiJ+`Ge~FfVyQK1aFQ9uM0(4}Z0GxO)cm(9 zkzGB zm1jG076f!Ax<30ULz^mNZtPHmkI!Jwx6M^kO?g_i2NEgHlObjvxZFJ|H8U?9lY9+J z8Ex9&S>tEH|C+#O-Mm+v(ZwOVB*XYqm&~cb;pq!mvj!JXsLClmV6`aH{FydN1HXLF zok8j#Bg?=%z)o)mCNW$ew~ne1PyBO;E?BYQu^|Kz-) zAV7z*THxT!i1j@Gi9`&6V0MR_`lf6`w*TdP*n7~YQ((%ln(9)fOhIm&$NrvpTa}!^ z;35+Qxb0WNAi~=5+X58cde#P2pVwe4=d)*U4(o}T93=D|I-6c+(CuQ~esREhSn`w6 zJNR-@NGR1f+;np`4V4VLY^d%h*x4y3v{2Z%y)Fu4eA}{lP^ZwevI~~2Zt4np&7<|; zS&422R^N9OW;C|!HjOk@DMr-5@r-+aNF#;>^?a(yUi|iHd#m{*{oi@bnq}Rj>X^HE z{J9a#bC&IQSb^vag?E2wm#x}tl#J8TA+NjQz)6^^;9r7-%m=mH+QSVGr1eh**pwta z%4Of(B2uk~t98Yy4YptRE9q*-j7#S!HA#^$Mh6*~0wH;@x|-I=9TwE!@3V~enw!WGHY zgdLcabYVB-L5g-aUs`cDK^Wx7OpH|K>eQBB4KqqN_psDcZn4X*4nv!nTy)A9J-^Ra zW&bZW9yoai3^Y1Cwf}=0l=J=Om7B8KC$J!ill9^eIn=00o?2?NKy$*uk=Tgv=<}Gq z?}7nUtnrEpV@0`T#xfemBssBjv@+F^%x1p=6EJd!?TzJA3AATjug3bu7n^=qsKZ5N zDW?)?694{1TuYtOUWdAj?9QQYI-^&t4-bGtPC~tMP&V+Rv*M(LLweVPTUgl_K7x=* zoHI*q;7v*S#DJ(j23sbHcUP+rQO53k->gaGQbNbU9M8DM%#X`ZGe+|>(IFsH!Y?pu zxcr%UbE=gxm851N+0m-G_$Td1IuYZ)0&X#qsPJfHQz`Rk?8mzADNFnBqjqSxcGC-0 z7%ACbJI6*2Z?t~jW-Ee24)7$Hzcxrb$A}uIu+JfGayS#?^y?cNG0m-4OKolbrZCzX z6g7<-TBF+44s(knGiuR2eW|WN_1+)8*6daz7IfNNKaq_cSfkt}*p>MbSWQ!!L}&0l zpt%9hYjub^+XGy+JY`@=eq4`KSLbT^{r)E-3_zcT?Ei5kgpanTLB?lW>9Wyd^(##n z71LQ85hdgPDLC1A)@TUl)`XMs(jH$=dNHQZGqCie(%cgnSQ1g*Jl>e_lCFZTm8Xn% zD~cKHjaU2Ve^t6b%{#HW{*dqZ_Pwf&2|?aePeCkbE_IxNm=*S@zqy-Zh6zkydBSQf zQ^1!_Y235JN%^Hrt`;7bmTY6129cKkyqi7g8%jeJ_LWJk^LzkXGgIq+nwqx-H~W@xT>V6ouORXiFK>AXsH9Ye6!h8gB5~DZ;pWt z!mMSsS^jfw?rTE-Nw49CbbS$ofJf;^_Tuw8x5m1rX$j2mSN#FD&2Ix&f+jI^)EQ{_ z0Mta~ZJ){YRI1jqtc*>9%D-$iNR^Y2b&cqkvqJhti=7m2nE-#7BA1_yZW=e|mD2CH z@qpOt*|${Ct3t`u)35!Y2X#s4cfsP6XMn8??UjfyvO1&psnvjp#R7?9PkyDH5J`a`WF!1q-WR^CN8?LkT zf??B|`u9XiPIiF!lb+nB;4rI*^OQeZRKnS_SLqPhMf(SKWe|Y_0y#Un5!cfAv>r0H ziq&E&@a#$-mg;vA+a4{M%RWwRp|rc~9_Q>hVNvuzi-&&cu3+F1$V7pgPjSytmx9>a z!K9N~(g2lNo0t~aRdJ@J?e>B$YJQJxweR^;-GPZZvnLbP{tGTqQD4PXw|lLl4I(ly zvRh@uVd`{%H@i+CfnII>%*>M1ShJXrjp_4qXo$g}uW^1*K^cz^E?xtK*Yl8N#Bw9=0|%qiWq}EuWs?>4&rY zD{W_qT_XNB;p7nVyQnVjY=s9Eh=&zM1HlZB0*-7)#&S^mJXqeE{ z3;9mWdU-SuSTsTO6Vg_`s%V4u?a~aX*?RL5lYD*mUT16&DUMKn8t_AZ-WV7iE7ka@ ziXXslaD=#as&`UrMpizx4C@{(z-V+_y!3$Qm-5rzei5}0SvWJ|Bs1`G2;nN z#px~wKxtcTh-8fS#6TfDu#IQoOxUujpQJ)x!S64lXnu4n51HMh zoN*csO|&B25gldxuo8p4)ETY?l+DG{AI!}LxLgeIAD!jjDJ?8oztBGAt!cIvlL(bS z!4+!>mSs=%cWI%Qg)9vbxxG(tzTpO6ZC`svVxg3eLz_O*J~B!s=NVPyyQL~k=R08b z)bIFmKISb0WfZSd!?O};T^?I)^;fMii^YJ3$rPZ%+TP_twCk-BTX}-!D9f@7SWju9 zoZbd%EY_%6IEcY$uz60g_W1547T94ArmNJ$pDeFrU&L4uV-yPq{Kh|wfU$QqZt-1o z*aM`)DoPL8dD}fz-6_jcq!h8eyb~HGt+Q?EH-7h$t}@+D@g=J2-w1EZ3M+Prq;#BF zF|$OdIgo_zb=lN}ranx2EUgYEJ|gROvUJjC{ow}+uInmhzM+WRY$KEK6Emw%aj1f6 z2tSC05yiMMAmKk=gbez)ybU|gDz`5`ayVo?{)1U^@?=4gGK|=1!99T2Q?Qv5l{-%smE^ zmt3ab^R(?3_nyqjj)^08*p--QaVkm@DK=3TJ=AO~cs$LYuKS7fboLKepUn#fc5-qI zQDi;1;zsYqLjJz!vOU+F)O3ZS_5TMGH8(`ZKp!JhAdu~tF7e7dZAqvO2 z&5l_f-H!O!0%@kFw&k4d$8XT#KRqg^k&W_&4AMSv{$S%Tkm?-b7DpT(S@Em%(^DBN4S^NjA8Jh|Q(V0tcRU6y^)*&bdL=HSTXnsDTP z%WQ!nRa6twOhK7eR;V3|T_1!M+3|k^z2RdzYHF(EDU&sAhrikO9UlKA+Zd)~d|xtO zo)-);=c=)>ov~j@KbpN}a@e^YRW_-*-r|r!DT)5u`PX@jTXzQUXmccEUiwt4DQcSU z{*_)w4*26nIN6UfQ4qc!xXbMNH2pO_Ni)613~R$c3NJ!9o8{ag6h(OM`7kK3 zzg1h*e^v1vN%lLQHCg&!B^7-a7R!&m74aZy7dD%md=g&;fCK8MIcgFoTTUeZg z4A1FJ(7l&N=(^d9l%{?KlwUURg=oN(@jgDXYmTghBT^L3YP+>^P zp_FdvE|D(j8bCUR?gl}+Yv^udh@o4$JBIEC>8|IUU-15c{be7=z1P04Yn^9-#h4X) zHUps4xtw%8&QIj=)n>&?`TS{n0QYTqU>S%QU`Y*^Noa?<-BrDnd8r0L-Nhg7`I`MTLSW?f*& zzP~eukS_IiiXzR+X&;m=P(}}E_FV|hEhi@-5<3$^eL<^qzuYSsKTwDDK^7HNn+|=x z;23R{!@t)^A@O(v%P%&@kMnSA<=e(|ey#WAA*beNPrk1qG72^QrUfAaAAMhrN_0pC z{qr06sA|iN!$$q;5g^ijtn0?~LOXm{lvzaghI8u=lm{#f95PK(@fdYgl&>MlILwh5 z_{snJF{DyO{t)rR&hS4}FNZrdFnAll;39$63&op0ivhDdZV*@+ozBJ5FlxpUU5KRr zb86S}f$2!+^s0knPpJ0Wo*<`k-d=(8x#=rS(;spZ1c_Lxr&7~WbPhZ_BcW#Vk3S^k zy`e8#Cryb?+-l>sdU-`eCZUWE{9cz; zdB`}MWM54}C7b@BoN9b%JC2XPt?%)6^*cu;DxBb{d4yclMTVEHEyL^M_Bc)&7@ODU@OVmCcg@)oB~1yY1C#0qV(}V+nQF*cQa1s) z30}q17S5|^VaVom#;0y%gmllkHPASYVtIL+tw*43iC9IVKKVGA2=R6i`HQRxh-mau zCz{N&0&9!-`&$w>)L%ENoh!L3cS0+x18KC!#_xMJ(@vYummO^@fKbSLh4-BdbOb%6Rx~k?0dXuHH#oX*Io!o6wcU3aN=|+xS;Rr!nyS@>~lbhs>1E! z?6^>@_V{X}*58M%Y&p5XQ4L3+aN*est5Qf~|Iajt4fH;v^9jXumen3xbwGi9u;x8V znVI9<`b!FVj_Grf9B+>h|2M^^`U@(25G(lid4`a+v_>VoW|Vd0T3J+P>IQ2G-RZ;H z`N6JHL_Q}(W;GAoT7mzy1e!njQ(@DN+iXByN34|}2YKqzg zlIw2eIWb^EX#+L`mpk=_c+R|n906RfRXN=F&6guRY^{4AUTHI{N-GnE#+}E`%BF03 z6joQAJekLST2B9U(#bD|{L}|BceSoK)%naP6BY2AW@~kosqhs=jo1f`<+jhB_@AHm z9A1n%<9L|Kvko)b@3jTldZCc-P4~~3KlNrH*S>ktlp0ZtnU)RQrsXrxPmh5@0XPEl z0G=I9r)ELvf|LCajzvg@e;!)+wzl2p@R4Vp2st@pRGD2rV;8tak+4rpFJ*!%NZv`{ z+rJZLw#&VeCjUiq?uhv@e2voFKv0Mn`pVS{lKqhl{)&6|j}4EmJaD16f}*n_C1LZi zEmo<{(27-dUES+GUHbq$Ny*`rl_8rlZGCgir|>@{h`({GwH0Lw1H>K!Zx;#FIs>~H zB{%tGSDXxglVasKdxPSQhPhpjRh(B6LzHfH@YkmJ>meDmt*xT%nNRbs>87(x=|dIm zm>r5TH*i%4?@OMyyn!{TxChly^hhYpl_sy0LkvyUWJ(KtIqM9Sjl8{Ms+V0yxr%m+k*@}%+o0<)c?MPD|470_N=Gop!!jppqWB948l=~{3iYbE zcjoY?N6)x(!%q0)ACf<_=p=T(`C zw)@NStK99Fj_#dy`~1u|7JvQFJ!pO)o%EKhO-6GeBL2_OXceJCCs{DIa#JZVAwj`9 zvW>pzp&!O5^r*tboP~W66De`3mS<*<>vH?$&0b*G#AJ$(WyQ%qDLIAE&rHPW;)bNj z%M1ZsTHWcgk2ETAS*X)jY0Ur^djJQPck7BWF9d3z9Az0U$Tmau8+ltpQbdA{V{q^= z0xdY%L~?R}+~?pT2(3e(a6PWxAnF=RSnl|y%?&ChgWI*Z4azEC$5gvE6G;B)+g_g( zItpPJV>PEuAqEn?#wxQhhYle}q`|1}k0E?$>@B#M&06+Y-9%8v5<3wyq|Mk-?A7g2a>R?VIr#-C*q+B%lvTv(7I#wGdKp`2>s9&!` z`X^Ljrqa<)JD^&`SZ>~jCXt6%W?|Rkp46t{*vO^BtqvC@?BAlL%nWrjM}4KY8yiV* z{)5s2*CUf4x{OH=>+&;gFY{-Jz+Uy*U*OA#1$E^WD*xYOZx(Ox9~p<|x%ff~)DOhT ze~;rI>((8g{-6ZZEc{!5rf_lsUXeC4UFcG^$-4(cc*(S7cvS7O3YPDu#cP!%S$Y<( zQ)v`}FFro|#@oK5c31fJbd z?jYW~Uq!wWdIN6;R92lfbAiX;OSNat82!=Qa<|rRm;P^I+uCALncvcWjll=P0Ik8R zWj$oyMN50ulN=8(N0bvEeby5Z$Zu!nmBXUSw+DQd=6~pf`=EB#?>!?k0gtS)AwekW z(SmP$8(|lV$6ZdQ6^)%jWVN~*PA&Tv-2ib4b)Z+-QD};$j6JwBMRLr9?Sj#;xyTvq$y2(RpdEa}(z#ah*+&G&CLo&kp z>Fs)Wz`qrS8X9x@AtPM9AD`;UeClx1Hd)Ur(V;g2^czU^F%TW&1eu^9SCatD17CFx zBjKvVSqDEBqTd*1@~LLgxfZ;2QBC~hXe^>Ag0VcY?>6%|^CNr=be-;ICv0kvq0suX zdw^D?ntD1($mjsYhe~oP{($#%JM9HaWGFl=-4$JwRVEiYhwWPsLZtcj7NGgwb~RjI zbv>vPsBqrov3ou{p`tIfqS_*DhVMLjZv2w~5cL+BW$=+rc_T(pNb#NHtm1!2vENq$ zaM3Q__nmaR;r^<59QkW%QV>6i_^wV%{93_>Kq{>nLzLge#7JRp>}6m}4a^zDE1nJA zjB*3AKU1NmpEXfANPiJv4u-E#%sG(K^aoMoLCOkc!@o~HKANMGg#CT>Mq9R@C%w~e z7n+*=zL@XeE3iM2kR#i;rK>aH||5azz|#d4Kj*sEp~mndzT*@4o+9e3}_ z1MOH*TNe=yh(>jkDw^D^6MnF(v~6>zN`9+}uSUauh7x3dPVDX70+Lj~rK0-?6zY8n z;i={kmZqjqe^D#_Chx)nw-uLXkd}Od)b|gkU&Nr+``k#Bs+pa^#KCXBan?HKC zSL;O9chVRM&tkT)HGKqzdHg}$^fD4*(IchlJ_++I^uMjM_NSrff7awvMsiiRF-?Xg z44Vr*h}Vy-E?{+vb(od*f$w7pv-9&2$OBPBvVASSEG(nJH!vO3ScklAAH%4N+sPkY zBKW^ii7m1UNm6R#&@8XqnqmJA4$4Y5&Mhg;xa?ld6%GDFI`h2ZdrThK{FL;}5M}f% zh>e-iWs?juIQ3~3xJ1@ilL98`sre?`Lh=_5L;J71V=_=Of%bXo)ct^)lYB=z#=qzE zwObxh*nB75cH0M2_e8J8yu=q%~dFwvr0!@x<2VG4EezD*+S{q5i}_3nA09Psja`0FWWv z>`JAwm;FOQ4qj=xbko66IO$!}`cb_X9pGFVXX^r{3g1j(Yn-0ND)jb(u|H(I+hL^h zXkAL{-Zm2fDu1fK68yfgqL_D`jATGZX!C& z`u>P`n7ZggvIdff^z*HKE-cfLZAR@%d@(qGBeDMasD6b6F0!Ewg))oRP@dF>v8Mga zK-fJ4mB?k~n_{uQJSdbHG!UpgV=rgQ*pX?^uTP?kzNLuRLP_A`pXumcBC}~(dxJD7 z_k<RNzFRQo(V+dCIOKfRa|C9pZ7^>k z%$&f*l^1P?abWw!eHO9NMjtJCf;^4f&`IN>^T9O&ukpVqATClWQ zrJm+aCvDub$z#_oo*aKH@%cIm7o6Vu4=MdpgmpXZPu9i{g`;qVULf)=>fOwgg=;tW zvde`3JM8xh+K@JD$;>Wp&X_Yd+M&)|)?j3^$Fw$y6@G&BEiv8r_%g-e{ zW{+WgD#k(hQ$$4XzC{eI;E02*MhO92l(r!+p{ z^<_n#*PBj&^(f0*gWS;QDe^14Szk3>777zIwoi&pmgBg%0$ni2jkbfm#~a$&U;N$@YfiITwUsZN)Y(9=N?ET*N`qx#E6y@15aH1d*HClO(U zVBbz~OBHE47Tw1E{MJRmdT8`SQFC;B6esWFZo4lK|^ZB9$ z-aPdFHRsTT%8QELtL;YzA_L&FJH~}1h_N`^+YZ7LQf?O`H&g#Zdb?TQWM+f!5HX3K z@4;`^lLrhsDsuUr!{ef!&$vQ}UYZ<`W=ZMTv_43f=&e~~!?%hm#(ZRAba2@&7*go6 z0_>S^uJrALqE)JXyE+5g0!q8hsodm792!>0UnkD`Z<+O?SndX!x}TCM344e9Q?)Wb_P93$z#Mt>dd6vVIO>1(-9>JxU_yo82J zAs*Xtqs;Ai3okO}SmC{(4c{$}_rl^YDLEPq$^?$|Z}!zn zkHyMKLl1(YmhovGBn{H`{eA_oV|qEi|i1ZFX)LuXLx)HQa4JT8tX{;mwuh`JYBzNO>ry#hXkN1Wq8&}-ROop zlUR%5UzwA!=Wa7fw~U>a7l?)#{8J0tu@A-D`H9(Hz(Z$Ho)}##U|-PX$OyVg#%cYw zNRDMISBxGmhz7-;Lq0tdygns(rGz&Ep*&6aSk3<-HC3E+AJ!1{agF1IzsJa0-|b8p zg!-UZn4xdFuy^*_^fhawf_EuY;@|akrUs z$JV)}?%NTmm<&Zh|zgZB=YlTaE6 z^7WXiI3);8FrjqD*v^+gsIk3H2iUMyE*_GPCbxBaY&#$S4u~%(H+gc~V19Y>hZ_U$ zp-1_pHJDsUt5hW;Dvb77T&BJl4r@?g)fBkM>}i4>R*T?P^rcczM->;ZfaSGOr>o?tsF(wSu;YLlnHw?A99OFJ`ivWN>JG&m@x+oIz4;L~z^D?H`iV8D^KzCN z#?$#&C>SdlQ4;RxRj#~weQFL2v0B1rRvv|-{k`R@|3`VvnAhnQO6wr6##qz^ zp$(W{uo`8C5?=3A#O&w}CyMKuh@kgSxy3k|{X6ia=R0;TaEn7zufxgHyQ!mGeFB%b z7JVQ17}nL1kvQg-r2Xzb>8aWi~|2w z4up=IgINX*#VYj$G7G5?v!Fh$S3kpLV}3esAPNpVS|4Q2_pGL6?pP^kxI>NWh+>Fk zCBh{2f#>%wpX@GW;J|=AXSd-C*ToJN(cVo~iU&R$9-^|Wt+~InvHTq0w{1r4AWst; z?Z^~;;4-?rM6C0i0QK(v>FMU&-hU_y7w!G!jJ0oitiSGU5rJ+vBuLl(sgRz`bFj*e za#0>%DG~NFSeBb-5Cp?E6FbhLM@Naa3qWW_Q}Px{)EDj1a|kik+Y`GSOrucz9_@nz zaKY#vjuEj%Z~yJ2@39ClMs+CYBP(T5LURS$>U%#ejz`FfuO3QlCZyl-9~m021swV9MKa%TG*=tr zv$(DttM<%4;fk2P3}-fwo^6>c2#=?etf*|ndL&YtW-W;-FKXWb^~7&n^pfKnAQ6z{ z9CRwuyWOXp^k|L-(L(ZGK) ziE2otePPr5*cBhbh&{7Yy_r<6ab2T2Be|^sS5T}1*Q8Kq2kw-SO2sI!S`|Czr>vIg zVPM4|8Wn<-fPXdZ^U*3DTr2Kc6#m;!sZ>SfeUc8jfjWhy9=`%7Q_hLh8 zQq8k@*)N+0KipaA+P!yNuq&dGmTrwIt6aak=3Nb&-+C4mJiqg<6qM7Wab_6#UR#Z9 z&t1P;0;Uf;MnlvnPRpVT2=Xl2((*o6K|be!S43d@`F(%B;^4b7^?uMroK){EJSrc}K-efs{!qlAQ2J)or{uhg%P zT4W|36Wg&z9hItTCMOjk$iTJk6&+mEM{N|SY*CBs zIcU>LEsNhtzcVk-#cN*iBhau;uwZ3TSjpzPH(WnFuqBZ>!fI1`U}pffB?$JESWM&$ z{Vc6J&-^_LV>j7|{g@S0Y`an&aY!3Tk{+g`CJgF}lVt0{6R*DvhDL0$+y%YI)lz_) zMpqFVTOBMcw?w$<*!Zx~U_|+tMU!(G?=xYAqWdaym#$HE=f+o*mvSJeXXk&J{|fr% zw|_n7WEc4u1JMp`mnZf~wyjlgG899jjZR6LeBvBnJl+c__*+~Yyc<*QTnS&!kmeTD z6K2-sle9})GFc!~Sg;i~2WXu&*%Sy;fnf{eko76&{Op8y=-uHNO?EeoWCydEqY=owr27mWeqW*g$!=uc43DQ`f%e@6Y^cvYVwy;K?tT* zW>Qn{B2!w<;x0RtCFQ!jay~%E8J38DvN?&c_3>PK!iM@fz}KC*oZK>^<2&8+hzUgcju?0y{N#7G@L#lCl$y|2;RCP@&eRe= zX3ZDm#Od}GdCJiI&jnZg_lk`?-kAt4rTX8@*(k)X>Mdb#k<5+hm)m@6ob9!Ujld= zSu`e+$D=D)ry42Ag74%A45@Ni+HAb_R~I47{qT9%1p2-tK zdGtEU@crTYLofB&O;NVG=0?n{1ffn0*FNU+Ia_pb;rj(n(^8UgR!(c2CC{k=HIs35 zz?p<;)XFSywVO-6t$k;BRub0CSc6VJ#2>pNIcnfJ%2CcEI#@4U-rh54qNk*@u0ms_ zVSHqmzsb4|)KT#xWJA>@b>ta_NlD+&54@ZbYDIh-ULfoB&?BMZ!JmzKj1krEoYr)T zex*z1D=VQ{`iFztbvn)8)tu|Mou7-wNdkYNlH5p43|(Y$jfp8nvLlCMwOh*Llz2vb zQ^1-PJjpI2Y>lNu*3-XdZB?+NDHPkbsJ6#zd1MNUhgmugPgTk4%>78?T!}5Qyy8t7 zJt{K~TO!%sXj-GYieCMgFo&R=KCoNLC9Z(;cyK%rS$xuYh=;vD1Ri2i--0h<-5K>UHj$ewL+%lbA;uDsi{tf%W(oHLX3RmnRQ2VR4I9iizokcia79ZeaEgv zn~XTB0{lq~|EGwtJ`gJx779H7maflZ``+5cp|B+Ga>TyB&%*cJ6(`q~{&Ol?lAB5o z{g+W^Eau9V_S(@IbEVsu$8x?Q7fV>*1zYEd&K3us!B!7d*S*w+n>GcywKl3W8lNG{ zscxfCh@M8BPWR@?{(4J%(WeTO$%PDS&$6VlMGXq{*i)B|36HGv5iac*M&olNnuGu# zv$y?i@W7DHKaDz~RgF)n;0$3!;brP5UX;+dL8gRiZL_|IQ(&W{75^BnvjGxJs# z1bOt0Vd&Flt3`a4QwtoH@fWN}Be>mDUJ_C*rF+LS9^Dh?AV4-tW9}tvuoA)P<9qFu zlt~;sHv^MP{XUnMt#c%jRMQJ^%3)~CzZ~c7t{xS{Eigl0X8i(u<0^&y z8r~Zyq173G(L|G?;-&nK+1Gt05|prD>E^V~%sQK}Zy@b6KJuQ&eX6d0e7`kzOipWR zlV@gkVJLYKks&I>{nI7ZR+2AfJCJmg&^e!#S5F@qW=apG1Pz&%q+(j^6hwY3{b_k~JawuiAXmBZoEjC?ZR)`Vacd6Y_TB#J`$2a~EuV zdDLIe)%y`od=9!_rjjzjlN|A%(-@8}2zB>?UGZOFfzL$OAa(owC%q zcaD34nA2r-Uob<6k>yVxh?vo{;SZph30MSl%bJnb!=-RG4p8CKch__g&|uAaxCfbt?{~!X*_2h7FJ9%PUySQ!+HaPEh`+B?1$d zTb(6yHo)vBGczI5HDjf$n-@-?Tz(jdb(-aVOn%mGLjT4dpVMb|l?xU-UQEl8&(31F zAsIL;F6e<}!LwH#bjzF{Fh}MLEi&)Yy;PT;Ju;Yv0asl2YKx{UtG zWu!UZf9Fji{yY#qih&VUmrFh*I5^&1C@h%b0&rg$h9BYOj|_Zpt-b!l}N$}36HGi;?@ zn;wD+Vp0kIj;u}#tq$Cx%jK$xGf{EwUVN~mG}u*h-gl;*M%o=seN2vW>M?bGKvD@*0bsV+7&qc zksc8!>XzxBN*?#EiZ5Evebyw@$p&&YS+d>;ypCAb3Kb|2KV1y2rp~n@PrkX< zF8!sN^BWq=tDG}xFN1j=5jlr)lgu_XK9c^d6GeqU-HXwc)^7JsA9@X?HM>$V{&@oynJ_1;_C7k?dV#EY zKgetAZiox6*fdU$dt6CM-VPrb@NXtLFzom$y@fjfP_$w{u4J(__erzb&B(U0N( zkT@^~0TP$T?gz~kvVC)Q=(+Dioa4uu9R)8zyOtv7cX4{eBC2j8kzFMg)890sEhrck z5iFCx%xp#`X0m7@s3{$}*_H$Kb)GSmtn^cLcv7_d;|>#!X_{qFJ9!(8MBxFdu*oC* z#CXn(nJkr>`+>~w>NLO?X?_LlmI*6YMhAVl^v+U}v{f6>{_cZtu6w*SwgUgxy?@9Ea z;_ajEMkInO=%{0(Lpf}RTKs}V?V`z_ah?c$_-x$~#dgKF2A|PbaoFQw*M0Bdk6#Ax zF}%d*^kEjg&UPR6B$ss9Y$0?eZ3&JK-E=_EM8q5Tn>s#V3U4Zt)o#16H`n&t>L}?M zbIonvJi*i1yf#ljCN3vE<+Lol3miS{@BxcOs()C$mQ9%a8zn|cestfv8RVf{JoAL) z{!9KS9wR*hrb&>4%n-uxxu5q@+_P!|#9I!|1~a8h2juu$5ei_eMEty;zhimmzRf&` z;yvGoE(i_G8S*nIAd^8iPjnd{8KRsxB}TE`-#MeDYFXyH`0C&-Q%R&sq;I;#*Suej zLm6rmIZoLmr|G#^{s`ysy^dMUUn!do9A zkWDjlfr#)UV!ERDkRAca+01{8otUkZAlT+jxG$9tNt3u1b=o&B>b+=*+ZZa>F9VpZ zf~^|M#9W9vNrdw*rr4oycOcLe^k7aCg&4AFlVh4=hvnr%DN$2)T02N?)ig9H%lgPp zD@-c;13tJmFTCb?`QZm_3h_&BPWOKa&()t6xN9tjNs>;mY)+Up1?x*#vm2dGg7^j; z(^l&iy)=Q{nW8N)Yb@w^D`^$1~$-h-ITfj4;Qd`10(m%r5^0b1X8v~DiA{A*0cy4mk;|7sg8}X z&yja)0V?S-Hb@gc0TuwQT1Pa-hC+s8Sg!TF6mGJ=Y-4EQhEGZN;=kSDr6!0nSO(fD zOYRXxf|g2BM(>8a`Nw%_^zf{UKf_0i3bJkQSmD9GnZ^rOX`I@FRwDKKYBE2CGg>3U zBnKLeoz|xdqDu10(s^3OP3`z~omMA=17@ofH`z@28fbuwf6|`6AX|K3)Jb=bJ%}}b zZ1&3e=s*kT`6AGdHn%0_KQ__owPQDSv+BZ~e0_~0VBNeO9H2juyqUi`q^l$M#lt`F zoSfJ_GIVOMf@(rX)kik#N`QBgp_wk`>&fZcrB?k==aId(v#|E6^IL*}0ZFP0xnH@q z{3F=HYwiyyduM(3+e@};r3VbVT>Ne4GcTk7iutR~(dQ(*?vqpY92>+OFC&c;*L=pTd>~iFUK3| z*Q3;wUJen=F&skK@&7}*M5%h!YyUWt>pFy-zbX*;i5lOw@PgX4Vjr}|P?_D}jxY^l{&%Rwel=~aUh7>m7jq+Fsg z$GnUA=e{OAPT?Mg7zuae#|Ut{m@aHyOG}a30gZ#Fm7WE0264y!DzPc>KVlt#{$_Mk=cgubhRAQ8JP_37Ww}yJiQoNFc9^|3PDC|iV6Rk%P|c1V#!p>V4covB{Oa*vGUSQj|-neJ;hyJow0>k6sIhq_@h0}c^ak#$G@e0$S?Qo<6wF%ck2b)3VxkWK zbAcTU;Ct_X?opmiFz4%=Ag;C1;P@#|81f(@1* z7B&Yl#TDW!4AJmoz8`pmCuZis2%1n2Q0f{t+6!>{4je3pD$65)>?MDHj!{*zVu9}r zq+|X=isWC$w!&<+@sqFU;nQ2U+^&RX-QadIMUvWkM}K%~kZPBe=GD*w*nL*fcxP5K z!r%e!Z_r7XsF40DgKU@(zeV!C%sL=EFStXC3mr+FKRNzuf>VIN(vg;=&X6&i_c7^y z0>~?)NQ6p5vCyfNZP6`HwZ3aQ6cF~J39Cti8wu$M;WX!q780=3hS{%FYi->u1YN0* z@1sBHav|^JmilK(|7fi1cu@_vg>8IroN*;q?_OLV)tA}Zb=6cw;9-yKLUd?zp>ZSB zqGR^uOF00DAOxcaHWx)Oyd2~GiG{ddKExi$cEr_N9BJLmTlZm&q(9}70KKyNCEFPP z(^zHSZsbSAme8?AW^-qKMnYi);wxT{C+oa2&CK#AIz=VqJcJ=^`sq2YM>aGXV5Xk^ z$)D9?=hH?npGio;&%ftWVVYe2rEZeW#J{n39+NHI!b$tCwT#y{9;tRd6K-CE;&I)eV7Jr6Vu-DYXB%f0* zpD+&(r*uu;tprSp?0)?4hbh5ZpG)B!s)WgYl8l@9BV%E~gVm8zl+_4q$g_p4bDP5wwDd>>9H}c;XYJA@P9F32k zR~y;-yZ9cEiSx&P&Nvd!F>Z53;!RSo6S2M3mgwqDXnAlib%~jJK10+bSHcj-ZWFS% ztB%OYwAybVxMU;C91yleBzV4}NvEPV`G#5}`CC`vvr5pY?lP-!I?RTH!Y6o-Au>zV zpa)W@kFEc_yQ33-gqCow zT`+n8ofh=A1YYzTH_fW#=~M8^dky>|zRG(CFpE+vPpnT?O6?>(caCtR0iX3J;>Uf| z*|E{X1)}}AEBs$c;NWe|wot)rz14NtUxkY9zr389@*{fD6I+Ew;i1GPq~brd$0&Q4gCT8a-nR3@YN4f$y5&Mj3g6OAfJ=8X zJbL$0-Y&#%;Cj~O@oO~zCL6j z*=fd!&_=-1@yv=dc_A`~3-b_{gw2$QXy_t=>X^6$t#1GDO#>1b^ zwV)U3G#gUX5+#UU;+%l4&$lMS-ilPUp2gN21kj!3EFz(!DPVff!=@pCe?ZSCDalcq zO#c%mU3Y#l=ZK%Zz^j|em(`}9!=mDzFM;Kj zrrFKgy(S>126kVv;=*JT?ZfIvZBoAs+_DRD&yXOa`&EOz9z8vMJ;CfHIVUQxPHVs< zm&+m{*~<&;vNK)y{?Y$}s$h#%H1bn!AkojVC`b+g(y)AZY!d)casw*Px0zJU+$O_=nL6`ko&Y3^Un`blPm@h51-M-h@uf%GFS#qil#2oYTZHp!4O&l}&WqPZqpx**P@-Ds$HeRSxkPL-%w z-iUQAnGyzj!jI$^A>h~Vm+R*a95HnMd)7YFf=|*k35;G|=JCiyJ~8B;3adJd3$g~=bWzvjVIL~G2Kt0ilCA;?sm}LPmJ<;@K-j=_NkcRR_os)F za(;t51awoSK)Kn-Cr+Ypf~M!W^o9z7+?p4CNt5K4-;o-v=jN`$X*s2{+$Qla7ocZQ zz8`{R_&eap!KA`Mu9i_u~DN-(=JR^*v8A!M9eB5 zNT^LGZsI$^_3#{+=+yGd=|iJ$G9dcQKTdq*7^dyIoQ|t?bbX^4#c|Up+0!VXI`DWa~vYC2me&t&2o}5@i zIkJaEiR_0l#ngGWB$3RNIXdS%y9$I>veW1@{8XFiy!rfAnrVbO_&+3!nvA+KkOWeh znM>AzM8$0SF&8J~Y}o-mq{O#Ds{H!uu@R@m39yVmN3 z&i&wzE)AYaY5Y2BpUR@v9=bXwi|ottTHdgpU!u<{u2FyH+b|`=bN)CZcL{&UcbxT2 zoMr7n?l0_ST)N#&K#Qt0sW(}22X_{}qB#6McI^z+dS8W6e33=6eWQ%9k`Z^6&$Qkx zJn2`dd*Qosd6@Kn{!V`KrD)z#Al;Lf+1+vQ>SGm{(Ws^dlLVhQ$hfkILuGuO1oD%Z zT1h~LAN`WbL31abl-6S#&*K`O+}die@eha}r-q_sT*bF?f{xmF{s7VJFwy?-B}r}2 z36jxAC-KA-KDNa_I^s(ghV>s3wq7z0PhL?Wl2{X6LM&#SD8en77AfvuxfU$v-OOJ$ z5JWd^VL2}JQzUxdN^i29f48kLyl|yvv{n2B3jP%_7S+M@jPy|8R1(%71Sz(h`1awW zC1kj@o5~QSm!ce9PP;DBBl>krnAVcw8J0}u;2rrrMT<1!+dI3X24vO=y^s^QJ z42mQC-1@!Ecya?RNa9_&V2^$8q3&6{R#f522(Yt5&`)+sAHMjl|2QpCdNPg_2YMmV z#+g|Mio~`FjwUzekoG35fg?RK4Y5$loWN=|Wruq5GyDo{3@zd5MJK;1Z2VYad(zjr z)04+JL#1YF#twdmgFr@00`wE+dGF(P=kBAaMuN zT@a}zjRJ?&S>_$K>x#4PG`t~(m;aI*>M(3)>x#z1^QF+1o7LTn7gxsKs4~Fkp^(9J$~$?8c`3BC9AI-LBDP90?P8y+&1ubIHynT>zqXUNk{}oF z&~PVar>tQYV3^SKritgh43Nwpzf(R^Yg)`GuxQkXpc--MDVzVCD0Pthv#F`MZ`_eO zOIbtQZ#d=h(8*1?A|O7ucfY_fOp(gU%v+(R@rUgVbTmf3wD-^FUN&ifT6yju#}M(L zJeo?#DPU)Y^?Ta4GTd{XS4LyqufNkJA9j2uJ39jnAMc# z!*U~;9i!z3NiZKPu1tfkYnmTSeQbTd=MboFd;0{=$0Tv6$SU1uF^Rh*GrK26HMff80Jz&;|m@rVL9v)owPieh!1Q z_OOfRT~HIWdNo!?>hk5M|4Z!U8YA?;sV(Ijv~w!I9d@{&TH-*+(8iN zFPSaPSIIBHrS0-iHt3rf2U>_X)==78vMN=!wB$4{S zNu_YH6vLXd^l&jdE#LE{a^jk-~RuQ zoTEdJN`5zS4P3}l0i1_Q>^3H-3YX(1>0jy|7%*glbWQA_!TIc$=$iCCo{KmRb|ydN zqziOflc|6iN$BXQThxhj123ASjh3+0GJrF65`a1>MkcB)&&tq^2{i?oV(6P_y6&AR$Xm1&=#eoKwGT1TaiL>39iN69g1rR?k>eiDDLjT z-QC^Y-Q6kh-TZ)i?|WV{M$X7Sd#^R8W%N7XKe#`W#FwK=3(FN`2A$BgUix5LJe1s> zoe89K)UStoX5Af+8rw}lRV_(_v<^jH-JI)<2kinvb*A}w3D=SgbusB=Fy~tu_bMY- z*f=pyK(P{9J|HUQASYJ>mGHLYPE~8(#x_0zIO$Up_z{xZLtp(hInP_gG^SUhW()cK zXKGY(jr`f(Jx5cmabF{pvXr=6UI8EVm5*n!NiY&+!XZ0wfdOy1Ve$U=_@FmJ@7xj- z+8UE4i$u>)lK3S4zo_F6d`Hbc^+>cJ*@3xIZx@n? zEr*oOKV^zOM{o~^1rjr@rX`|9<`u(gx|3A$X#YfSbW~K`jUOn|>kgpu#OpXbrnesf zRrN{I*!F_K`5ZMGVEH@yI~^AuZJZl_TV@bbRWDs*;=_{GyERcQUB52Z%FK?et`~`C z`G{0bs^hZG4wFLKYtLN4t;|9i@|&&9ZyjlyL6i#In|+s|w>fr_a!0XAg%|1cv)n@? z(CQpxF-1g~1k*rFLHOeD(t^^wP|U8aOxl%)=p37z!(mGCQMB}d9Ea_Rytpy4#0T>G zv%Fesc_O>~+L{1|iq&ZK%I(CpjENOGUaJuD8TeW?62h}J|0+1&lj9?rfIl4{d&^Tj zRvmeN7M&RJyG)~92?M)1S8Zhm4vbpYMD;lN7o1$j zuWL-s@v;dLW6K4ugcRjX;xo*A)1;P&Ikm{y$L%5iC~82ACr-ai9urN`75Wjz{X9UY zKIZ16L&sL){h4^!uQR*Tcdn~4YJKXHGv?iMi?R3pP`qAR8-S{7ZMEk_4eqLkIbQ`t z_LMsKAqRBqE}n+jEGUP*y1ge> zz|6ycG@U%%#86<%H37fl6KFis37dLNH2aeUTR(&|e)cY6 zfu8D()U=ILWre7}LjFeIZOcqQ6-p0~x<1ls!|#>aM&{6f z9TUB-1mq-PX|`cN*dae|XEhDL1%Eq-!0P zh!CVE{opdBtbZ*pSfM*t#k&?ufi(ZYJ*gR=$ER(jh>16c{XeioghPHeB`a=g57D(z zAsX|`VhT^TTLUYM6mC8&I80qig{-xbxZErL&cKtMtSH*k1FDH-9ZDv*dk(UcPnCt? zRV~k=p|mNu6bN2Wv5+i=g(ysXTmJle1C6GQ?|ubx+Nkzn(oZpEUSb@oGNUJ_A+Tsw zYD$Q?+OK63E?{uaRBnDK-+{B+-y1%Jnqd+WU>-~2z(e3-K#m*hGnMX*Tk?t(~@SUVQ zvTtHx-rVZ_fTR4Uo@0litvbHmZI)vQ-e=>FJ^KNDnT3y%Ge*qed9#a?ZPMq8VfOFz z=`u_C*}17wZ^J?Krf`3eGn)BdTn$8+6MXW8zweCMvY@{0h!*+yshg`%?Hgb#Uz^ju z%0%!O*)?05isH0blv>O8Zzm%@?=p0oYE1EFZNt5U=E zCdjhsME2tScY>wGyI*NUdh02`?jI$%@sJI4eWBsA96rPcTmxE_SVAaqIEi#W>6}<= zSOY4YY-bM|l4cW<=AGG|mV7umZE0FB;VL6CK@9q9noFVgAq?-RXZ4YnKU$_A zvhduq*KWtV2aWjwWcNae_I6709|^mbnYZIw?lwqc0>Evyv0NP7{&v0@LuYL_IvR6T z7jTE5_`xr`_4w-cy(ho%7mo({LB5)MU+3?{^x5nCjf&FsqpnsS^~d=;mypA@$+90p z<+@hu=6C{%lDUxEO2X6zsiKVxtq3-ggn4{kwCzdxt|}M{`&LQa#92Jd9?8#&BLO1< z@jaJ_qOnrL87%CY%d&iw`cf2*DhZ!8z6;av8N8#DfB^v$Oh395ce-;TV z*w5ybx74{)#NxXs7uZZXJB)M_TvNtrw85Oc<$e1(l__^%46(z_p7t&hJmu|!?DRA% zEJ)#|%h^hgeE&gFjLTFlX~NED9x5Zp zb0bC_rI%row>HSyU-1cJsJNDUFRF!Y=9onn;=x50F={gq8(Z*JH(fko zb1uUH;r!`gkx*S-;j~_7V{6g6hi4#tc7LtP))@ZN>dKnE*tEe%F6c$OePOQ6Li$hN zivng(N+=RCVF_Gp!TK!;VY3djd#|#uhNxvs7xkPDGWA z12!moMV!v7kD+NiY=`NU)1J5@;>xs6xnY28z2=oP7cDlPfdSmMJJdB7eLaAQRFQd3&DpMKJDu285(#C~^#34V!^y?D%l9!PDT zC#5I|Ri`^`sIqIgt0mMB#129SmB+|ejS)ew(iN#9Hs>hRK*_iyhD5yjdJ0<=mHG|c zkWiFq?i&G|IiPlw?-APDc5uZ_|P>gU|q8E0#hMkr^Icmn^?H#k>^i8 z^(s4~@uGp>WA(ini2k@>Nv6wo)-KHLHSt2T{;_eEL%TPwXB1b%jM3pL{3e$9@0~y= zOL2k3Y~b+KvzTFFNvg^&LoDkVMU)e~=m-8uHrz9hSWNw_;L5_GV z%B1qpVo9i4$32)Y%MmFh$Z5<)M_e2#L0}S#z9EE&BKobo?|`wigbC^r9d+$>YzUea zt|uX`)3H5x7YX)hANN})OjkHL~hWYp{aPO%%sWBoa8C~@GEU0HDc9l6z zd^jzi5vFC<*im|`ptI77+A7<0@e|TEB3Wv%^w*|i{JhT-mwdAf%Qo}HxZhI*odc4H z`X8g%*=cs3QS^{4;e|fZQhF9bZ#Tq}vaa+8Y5JhU+~oB$Lz-v(`%oAXG0ywXw(5ka zF2F|uY#UJCOog@qibjol60__xjj+Z?=rcADk|e6Th(B_{pMqTBi$LjyX@Z#fT| z;q=xhF5r((%}1Ds}99kg;=jJ`hOPK?pN>LI!h{M^Qu%zzg&~Dl&j4w zaw|%rQ+{%=h|qs<<(&l!p5d|~l&Yl7k(MRrv#H&>SbLRbIDB$}i4^!%2MBAvchSt3 zms3%dHbe%#Lb34}9i0DGEh1>Uht76cDV@yAmNEhQx+rsTa%LgF(A?tek>*K0PP2$p z_6wN*gcd>bBfTxFyc) zaa4WzvVKXfd#S6~mrh88EDEmoAY_!<^1d;HusuF3xzTfDS0Q~#w@7-AHy=l8?KIQG z@xJ*LpI`29&%&*yF`PJ&@CG;CncLJat(XuyWDV7GjBrQu&lKOR8F^5j7e8Pq$Ul&b z$@0BWc~V3h8XBM@m672lCU*F_@VCqFpUrwd(G{dzkmO>evy|uLK|`sgWGR86?(b}S zbxS5Xefpu}r%R&}y|tMs`Ai-Ibp^?;RlqoDL-p^JKCM1}MQH#kmbJNeo=o!+kp)-0 z+>!z4qRmxf7(wo@+@d6#KKX*gIWsrNSN(ni&Q@Um}We_QTdwT#zg`N_X?Qktq8YM9p+g(wKe-- z5N5y>`d6)eAPH$&eX;pK;b0^)`*l42LkT%@5C|PmD=Dg~b5=LiyhUPgue+8|UU2?| zFfGZ)noh&ZuCgK%h7cq@G8{_3Dx1yGFGwN`qhiPYTN_`&*WV+pcuO3|<)kVDan#vI zeCYtsU9%f{K-@?)O1i9f$>kXtSZ}=wKporA<^0sdKt*(9@O^#$zRd(ENb#=m@t0Ja zOiCSh{M~iO4%ZUz=A{}0+MvmaUzD-;cY(ErL}t?$LBoPE6Poxl=`>b4#8~kp4|;TB z|B{913ZoZ#hu+YNklR1e>5)aM^YQ!#_Z>b{^u!g}yu}U~-SkOR7nL$Z8(DG&u>M8w z{<4ItdG22OI7OX~<8FigRWUqj>G9{6TGxmMI=ao!9W=MrPOUxO)I(&rBLHqx~-CPl6r8P6Id_KC)!VRw*D@ddB;Q;dwZ1-KdkOzG1)mM}) z1cm%T6GvTvQ4Qg&pKyC z)bgP3iW)9_Ff0=>b&`jjAQkr3~D{XzrJGuq% zx_$8)Vj=^+W(4J>p=Q+8HpvpLW+vve%9ByPrzaMe#*7JD)ny;qwXFA?l+YjgB8ACs zi_l-nD*4^q`hp$SMU6SslYi3#0HzcPF~k*2OAs;FMu0l08|COYc)tJ2%q>DcQ_8^C z)@X5F{}RcL)Tn3?)H7vE$)M2mR|;_}(r3gDzBs3kRma+MIDM(WB@=(Oby^hUj&CnZ z)zE)4mi!w>KXUAQP9aFOc@I#MaN1 zz3W8O4u}#K<}KX5q1DP8^dS&a+f&!2cjVbp+GTB&vSjng5=wgyjG56%*3>VwCy`VO zvU=YbsO^+Di`Bb}A(C=i4_P%uMgPIY;f=nePJE|H$sySCOE~*sJ9tNr5d((fv?AOP z8AJPE7=&r_T|)~~d}RidR{zW(SIj2dONl=$&6C<|k3?|->%=uIcqCAxo?c#Yh6BTd zgfISs`|yTy4qRa(qP--#z)d47`Q*tE^jqWWKNP*=b)w%aKs{<7(XC=|j+?QH@S1T7%Q%|UmIWA4p6YL+{9Fq?z8S3LTSci+v&eNh zZFCK#F81(Rd0NkdGYh*{QC6Aln-O*5OYww26Q(ENb4|2%uSq`N5zo8PoQ2{h&hH_n zP}%rdb>V31nI~!s-B*3F^lPU0V$R>@VqL$hylsNzPK#X4VzHWV8w_6D*yBf_@^vj8th*PUR$H}tUU51Ga%TK6M}9$Y`lK?+l z!jaSq#PoURPsl$ZYjbddr2V=jb6}a`yLpgk=)A%tCifSsX2QrcJEQS00JcY6mYF2! zZz(&7{CcwFoHg;0AI!vQi$kgdI!JB)=y!MN1%Z&pZD8|0r)qmli;8xl8-ZgoV|~Dy zt~#zvBxO5nsaD%vhM7$I!Svb^^x%JhJHReBFon4oO4xNv{JoM6P_aLDE)D^RV#Db zc&onk?zx1#p)cdxH~or;UEc?d8!C!V56DsCqSDIJj9d}Vk=_KoXGdXty2i6EjLMSA zB1%W4CRaaYMZC@OxRI0{c`H~j?0QE0zVv0=IHooq0F*=iRe-dlctf40K##QBd^`Y8 zJ0BwbT)mNlnN*+|_!8aK#DaGfU0%c5b!Iqikin#47Hjy4%m=+lJ)$5mk^H4_^pY)z zGW7sx(zxkWPP;}%?8t4(jK{!NuQR)K#W_hF=ZiKQ@f3;8I{hEqXg}axvbO=Txwdi*Yz7YnI;lnzb5UaeU7VK zD?3ila5drdf=Hyrc_Flm@+%DtZQ7Lo9eK26LW(z-w{G9iwG`e5a$OwWYGt^kVWh4# zd?2(*R)h(ucJyu@y%iQOwdtfxHhCJSCG?md8ou^cCV7$SptqYiz{}q+S#I8|ydjI+ zn#*kFT^YIrK!ms+No3}!Fgl=*%@c8a>uwp+nzMa_bM+IJjE2nQ5A(bdjV%&%soFdK zOiYwWRdZz^b7O+JrLtSjsjknp=_r3ZVgI&LM0cAjU!y;bFG@((t)-DHuz;F$aXTWB zmkn!cKX)QjAZxg@M+P`@G%7XN4eNHklyeb^H?>M^U=P`lK33nb|KbUr+IpJf27(2g z%uNyBv8U~@q8H$e`Isoqy;V|-Ts7@Z8jl^4Cu4I8zq>WHO5f>?%V4gJZ%|tA0E&nFknsNLKjrz&_af5J zJs_ugUP!Udnf4y7@bg}D+i+JpMd3hYN>lZs+5`q|ex(}ZQ8HrUJ86axGgbTK7zdUFVu%K5GTsMRNMRC-@aeKw7T)6Yw29OEggt8MAX=pc6vDEpLTd78lt z6O?*NX9N$CQ2OjZR1a-c5YB-R2+^Zji+4%|_m$%}Se>$!_>II>&y2#kere1df+f=< z?TyAzTTdWA1b3NRgsH3|SY4|ky~8Heo4Uo}n)*=xY>SP>;lKpvC*NGMeZ#Z={rHf1 zWJ)6K801y%mZ1>1o4e^l?$E^eak2BLssqp6jq006N$nT$JpB$=4nALnz4B`Gm^dV} zO_8g|uZLXh3cAkq3mO5+3goq75E$O2L5ZvRC_f%{K_cj|i&XM*QTv1%(r{8?(u;gt zNXY~=w`~xRRH{}?WslF)?EHNsDxuL9$P=*c)<)95ad2b_ED%J_*pK&?@9=+3%HRY^ zFM$_&rKZS&S2mLc;-}r^`?KU4u|o=@*MWc72FYuGpPJgQ^clc3E`p2!e!U4SG7mff(d{)YZ#GgNB(D~6I|5n7HLbF}YT7G*Y@Y~iQZJgQi{j=ueTt4vmE^h0 zscafg5a5U;DtG~DM;;`Z4!qFp`>?Le0Xq9O z$-`IOhccvcVW=Gy=LaUKsjKmk)57X~ z0?c3BMhuqGvc$k2)Y_Y!2_CtI8Up20pl4XN4w)R|SFd(H_Ii-bj z@buU~U8ET!&D+8++uinfTUN;S5)O8~dTmGz=O(2Tvui^Y@%S7rwU&N7yrHCgM9J7C zQx=79w#?N81djbFVgBF0!~O3Bye2`O$iD3| zqc;EXM{b-ACcenrYZf`H#P%(ZSEiD9d3BjVU@brVB*%P;tYysmwF)yMf>-wa7!mnR#To)o>4vh za6s5w!8UQk`TGJ4|H&N^g!ix?YOG}w?ZT+095rEN^@B2GaEgftOt%}686m*~;n}kq z9R)2kep=uaobpg9AC3 z?drsGjDJ#~tVn#rS&sKk=R!0Q>R}Bpc+~!xMUPB`qJu{i)X5lsA)pD~nXBz69+X$u z%maMuf~j`uU*dM0+N5?34@AS2 zY2q3%Z8@Aa--HMBgN@J;`)g$FbOG+Rc+AnXsH9Fgznjm4i0~V}1akAT{Rf9DcW%^V zH40?Lim6qegkeMzl$8l}4C@^xXh4c9MovnHW30RSSr{n%c1T{)eJ3!$? ze1tdXHs5ahg`$GX%UyXey1mJ2#b5qdz9tp^`{CXyN zR_A%Y+~(Aj7~f;Guew{*WfmDM4*r3nDI!f|wPT9d!?{16y*Y264)>zR3^oI)>yj6m zIwHwj+Y6tsJHLt!a)abQJ-HG{GnB`KaLJNCwfq%w0SxPI?Hp48^}g`>n6J9DYX@~l zO!IQh^&-eIPNLMbbTyvE)@`A9SW!iyy8H*{rfFQ^RFyrQ=k%emkNJfj=SmZ8N2)N# z6emH!OqOBh(3=S!2$O-s>l>h4C${HwZ*8)WmWJEchF#RoYN)C33lb2|2=3*y&OMIc zFTG&UW#nqsEiZd_k<{zqVU9}UQtcA0IKx#D{ng}mFTyS^#P~AC$T)I|F4t{|1WazZ z=xCdx{-vUrXASL;{_YK$PW-;8#MUNFVUPP&`rXi_1`_*yQrsAvys(c|_M49pP%B;b z2Q3WsY(0@}HaSzKf)Z4(#>Hn7&_Z2oYE)o2_JNQHsz7(bH2F!&gGgr+&=_F<{v%2} z77{kJkk(<5UOj-$#eanT*lhp)ZGaFO1XhPXC@gS*q-12!TyPzgHpUId|Ad*wt~PKg z`hi4fc-Zw=n;H^h-FYQ^2+Olq8VJ3Uz^63K$JA1THTxUV?d8kmQk~LBR^Ao!>DlC? zBi-!69E%{57EFNKSaBD76UWEf4vk2-vL8?@O$$XK!f^zOob3~QmIz(#jq|cfvUylU zSg$R3rmgwHJKCYyl4^7ALTv-5XDO3`UqU=KqZ7MQkQhX==KL=Sw#(Mz5mCV>d(|i? z8pB66w7TbQ7queL&}$o>;f`Vtxz;oPHNvae44&U_0pz`;J0qK5ZLd_2m0{OA)Cr7X zvYxq`w-+VzFPik#?BL+~%g07}V_!wZtR@Eer7rZWBl7)Pga7uI%{A_ox8zW2{XaPQ z%^45ppGl?)-`v203i8=JiS;kR8WM!wG`LVpTaHEm z(*#K_gCIsCi*LT8)eVBxoMC<468v>BP%>~hO3}oh2jSd@??zWkf|?`H+B%3JmY%QQ z+&{2fp&a8PlgDNVthqh4J!v1FB1OsCKKxw#GL51RMgcl1d>KMZY0i2am)oIg@9tV7 zE93l$_Hmijiu51u?0`Pd%J*dIVnVMId8J(#n4t_1G?v5rt~#=^RBD_M+qWZ#^*R7X zFa8hClb(_(2r1Rrj@mSkbe{=*w?d|UE>YTeB4t2a)W%9a6yl=gw(l3y=PJkw_CZ1H6*mclO zt@m#6<#TZ~8hG!5GaO8lJ8szW%9yb z6Fs*(U*4K(v=5+iofuG|I$SHh(3gx#ep5&j3;1nkppRC zwaUD{G@Z@sZ#>xz!mCIezG60#<7PeAe)ff>Inct021xUOC~;x;#F<1nJt+=kaT^_D zc9^Ko|Bbk89J@D%IAZcu6)uy9Ox=H|=Y~B(CU$`J%`u}x2CaBRh(n*zxGEym zM(A@1TN@yjw`ANQJbP{RQR|AB;(oHEkKQ-*t7&<0V!_H6I4%@B-J=p*KL6>trvBdF z{O8dl)==5eK_egzMx;r-`-0?xTI+fTejZR%_ro3=7<-y+^wT33$X&c?0U$`(hl9VW zrDN)y`1cc$?@&$HCHn4{(}%Kfi& z6|Z;ew}Qf#v)dx(XeU2ap@gS$e(GkE@Z4Rm574e*(ih(4%d#6pu9D{FSDZ7a6cKHm zEBHhE5WdH`cVs4sUPdZ0GZ6o8{?0YmH|(d}>fe4sR~pjZWZoI&?|Ptu$hpgx(#RB9 zzH~vtuSyH2_pqmSWFac4CYI}xa$GF5k;*AURbkgCvmsB`=WpKS5VX@=cO88UyY)HVDkB?H3L1W_ zQ!g@elD>#A@I}TSWD`Q~bFM*3pZSI`DcndoN}{_4vgWSv#PhpRuj?RoPms$U_^LNq zy%f{9Qw^x_`GkRWS3hg+^2|ZD&Ztg-qSE+d^ZI=(rmp3uJI^FV!h3qBTC52bfE~_B zksKm){vVtngE|hmtftbSepwv`Mx!|OpDp|lN=ELG5M%#wIb@+siVWuq|ZF0D#>OH%^YY31> zSbLT!*7nOcywQ+(Y0AjY7;4tykJT&hP&95bT=F3cqiBk;hbFBhMw8fCn_GbAm+e%r z{p%CGhCUW$E)zve!wnqBjl@NgCqAY(mb1gHQDB2<0Zjv0xhAz`z1#Ul?-VBe3r-$d z8B=Ns_}j8ToID3re@WqPSp8iWZcAFp(X_^$;loZ(mq#VNyHuZ7Dl)Shd+t+UawYV+ zXSdMCh2vf`1HxOizw(~6T66P!qOVTjl`i{%N6QsHAuyv0h=20MzRX}WP{HX-Ry#*} z=I90QpGxMSO2uMpwr(;(-&f)cGZ*O+NTD?Gp@aykT|9>?ae{l=mrN4@GxjuXVNn|A z#t+wcXp%X6j|eim+%{SOwRnXnbs0k9<>593t2rKjTWtDjtGwQy_QyKIRz)8g?GmP! zHhNYgGa`IHZz?A2xNr@Rh%!0CH5jd%QDK>w74b6#Kc_l(L>lwxQhu0ix(Lr4qscEP z_%L^(=YgQ)k(EL`AF{abC$3yFwc0+H`1A9D%MsK@k{;qcZxTMk#~{b#X5?5iEO&sI zWT2cJiDfhwkBG^;gk3e$^M>QbtM^)=-ng;bQ1FEb?qF{9AV`tRhc`jQ)`vq_S}?ByptRoorqRmt1a zy;Tjp;ybT9)zo~Ax`~MD&;6`tDQ+PS<5l~t4a&wbTSan(b3nG!GDpo-R)>a*+sl&*o>@EFo9@FsWZLg*6`&6l#nCV7DEM28b z2DI>`1#R!3x!8s@01XCl=BM(KGA~C0&|VbD`CPe%NZ5`rPt4q09mr8{`mwC@>YaR* z;LkUMQ+ak>yM(!Kz-c8}z2QGh7U4ur?iOw@j9kb>7{*+xEK|MW?9|-->{Ldd+(jm< zpKYsmRi_u`!%NuPFW!x=ZbC`39aT-Iv5J@?vJD(THHD4UjpH0Y^p*S(vp-fwh+?fg zjiw%a+p;a&6a_k-LFNA$BuoW*evQ$9vF#r1-!xr9)Wrw5omf1VbxFD8dT4)UI%nj) z7G<`7y=k)W#{5EfR&iLkn|o~k5RtsBP8^&<;>Gcty8TRP-OOLML>)?VR2q4f(9Nw- zirsJ4YXq)RtBc{YaEWB>NQ0?PBAS%f=u$Z~o^FV1>c?$W;6V-TFe8h=<>kOJF>*VayMFk9G@|9ouG4L@@L8)00L17WY3^ z^t{xKd&5Jb%|6`rH%XQj@_+sZ8DDQA=#~XFXEx|4T`h-rSO2zLKKT)tGmsJO{FVLW zOD*Ss&I&JE=iC8v=rTAaO62+=@|Tz>h~2S_D(P?a9W&-o8l9-&GOhji=H63SZqd#i z*o&gz_UEFxjudKuj^9D4a}u^RRCTnPNSl6EE#c9WX>qCR*JJg4Qa~6-WtF`krrDUp ze|=K`&s>1RWb~|;2{c^d>^|`$cz(v%X=WH(m6!cGz=+a=r&W)%RITr*3#}j_=tX{T zr;xis>f}1b6hen$l+981N|{X@YM4W$N+mIt>B^Ne?@IGZMxSD$3Vecv5&B3k^aziC z6T4c0DsM&keebE1L(L2cz~F%6b*)2!nyEY`nhni^}f`{^F6 z{e`gr1F4rR)cs0(tDC=4WUS-TDqSW_u`2AXvd+39Fhw~W+#U~gi<6pDN0gp*`JGZ4 z+FF1Pw?A_cwLc#C*P4@jNZLEHOnJ}e(LGls9Hxvs8&;Ja*}#vv%`xm85XO!!Rh1;J8*6F&Ym4B_`n5g~zWs+-+wv#~df_{A4^CVu$p|eR3 zr)Vys*s_LF0S37eD1^ttl(l`q8M2%QJ-PnSYuDp5@v}IMDS8FHJ@nm4D>6rVguuKY}@r zzUXqyv1`BzIp|K}uPojZB%uImX@wOl(~=^m^r4`oQ%Y_ zu`1ItUY%X1quf#D0)!7B!<@3{?o?ewfq`XSgKFI>#BTWP@(?U4;Rve@X|u~xX+quH znLhgMVi$&~P)@B~RG3t0N@RcDN>-WbGUk$#+0_Ej!ucMq!AR*-59*~h%1i2FGAl&V z;La4SSui7>>EH2RtDqTg4{vxtR!bx4hcxKgs|}pE&Q8ec%%<|dH5&;u{~?KG+0MKr z;ZSq#pZE*+63QPy)EtWH|5cG6r)pIEH~vTr3s%#3JYs<1!{+seUuyFbCl7)&|K@j5 zW13~fAPofk9!7z!O0z!53?$+Xtoow+N z6UYT1FRe%%LYK=fu1es-v5G0lG?)a16c?aafRTf?X;zL7G7W=iOC`$B3*U3TG+hp> zMRT2%7y&Kw1G5-C%D^uE4UbJ4PPm#F4h7vu{-@su%yxdr3j!io>#^sy#E|*tai=&i z3f|n*0-BFEmCZk=3Qrsws1Bh4*)^e!(R(%k7qASmua?ZY*189_TWj&G4e) z%#FWrH61(I{nZk$g_G5F0%n9l*FJKJO;G{;JF+iInQ(A2>dk2j17QIcSwVK=9tK5w zsCc)gmVuFrXi-4|O1V2=Z579SbydAe*H1n8y17W%3^B$Wk0Y%NAt$s zrRz`=0>YE13TSMVO?xZQC3kYZ&KCkyiD*%QB7!VUlS%@{IxZZZq4i)SGgoy7LOQ0s z<%9|bFVIwQOz?H&sY9b#;Ik=MPNfD3(0n(u2euKwF+eIR)C6P9j#8$6r%GQjJE+gG z@=5&!G)1p_#zWc*1SnujkjNstMD_8EkyM*#C}>)n0TgdQ@q=-wK2k%Dv-)r1too2R zt6S`^FIOZ!(Hf*C2ibqp4QR^Y^O+fe?7FUro0kZ7vQpMe3jL7(S9a4Ti-a7z9Et z8?1E$Ad$?Cj)8qsbd{2{WLzh=MHdcY`4s#E%o(;;P~+EXg@bQgcyYJf+C*a~v=L24x&E z${6!9@JicM@GV^s0L!O^op$|2^vZVfKeVvBX{i*yUNMiZM-%9$YXUDZ5ox{h28N7h z3QLBo(C*$gF7xt)qZiX z3CsvSqB%6T6rZ@bjx?%>nTDmLfc_DgSF5COiU7YRQE|3pP$~s`3Y|n;n!p zv0Hf|z)eMD)Gmr=iV!OY9=4_F-N1JOT1mJga(^u%v7fa3D|1kq?K^vh-)kS;EcsDs zR_!d6*nJW{uT(;AaH-a*rV$7Fi>9I0Qhiem9(#o2D-&eT^bVp|3&uOfrSR`)@M5`_5PF0)_KmsCWBf|x*n-5=j z3@kP#v$v#9GFkC7=GE)V|AyVLXx$t>RtznXAPqaE^9|r@;;1cj2TRkxjW3&erJ1)T ztayO2|7~XT{{DwRZP}~#n*C9{(!{W7)2h<#l}Ba(m|Cpo$x+cF(PAY+zQm`Hq^DSq z#9`#_#3X*;6*~0c14bp& z5@C5J143tYdt=lP38}$e$}c7Xcq7i!-j99nb4^L%=}%@*4rlY-^%7}A%9o7RPNq@a zVD5hy+e!UmgAH)FSk3%GG@tMLmGWysWf?HlmMWU%^=qmH8HRgS@lPbZ(5#LDlU6GU}$csH>8??Y!=;q$4JLdwaDW3t+Jk5&IL41{97hu#ERar)JL&P zW71owI>Hn0p4V!i>rpmxcOLkBd_roLv5MFPZ#40OQ{GR$U{r4h)Oy6V0E*0)f6{}z z*fjXW`v6EOzmV_47}Oa&;AW__&R+7>h=VNx8eVUFC8WYLoU&x-P{<^uk;y;liV@}2{0j|5CJLJGZw?9*&{EJfwmd+ZoaZ;Q`!KXWw zh3GCQ4QP!_u4f*>OY_Db^U&MmEW^(cU%>L<``08oh%x4j(XT{0or5`pJ|j?n%jvk& zT+;%j#LSR&Ccbziu`T*WVHr&llBlc*s^7PPkw9Id43jwD&4`QRr{6!NKE-qm)CI~z z8kYP@^bkq5rOE}J;sE$i|?YOA58e1(frt;0q zgGjGbWkJ2>n~m5h+xopWd^oR7^{<|TxT&(Uuvp%Bgg0jB28iFWXXYTTD4Ed!iRs0& ze90xeZ~~X?8zHR)Q%PN%nD>&2-5uuUi$QL$ydt{=Dr>7g9x&*tfey?uicEwx?Mq>QE4mZYYvvJBw^S853cz?xY+oelFl&YS>q)y1GH~fO9l#$ za3dc6^Ep8kTN#Ti_=np4jY~))phpB6ov51@i3vuq=FYpe>9CaGSIfa*cqEA`yW5s9 zpgv`g&Y+wJ9K-aDzBx&^dx43zrU9}g%fGcbjZVtX?=h_%GNPDe+j^vlIt;k1VeloaAA9rzJy8AI~4#STYP`8jSJ|`h+0P!oA{{Vp~(zSJW z-7QKL$35!$CIC5D+4xo1uy+?)+(#WnhQ_udChFATPsbqp$H9h>cCWk$X!Livrh0p< zQx;+kPO!E5O?!Q!t*;L;xx37?BlOhrrIA<_$9u~Y#?Jbv#MVm45HoR=Iw*C}=w?QQ z&>3n1F74G1Fdm0wh8Qm8CL)@$4skm9KZUBpnfJN#kuaCX(puB$5qJC15B@+ar@U3( zq>gu;;9(q{J3oP-s^dpgfbYOUsA6bLLw+Si_RY}ruX22ZkJhn^8=|NVbTgVT&AX|V6<*{!%EZj?Fl~7E(ekh~AKatacQ$S|0Un=NP`8fh zkSZyk9F+UZaXxU&|AXvRhQ>qBEh8xAJ-ca5OkC`#n+m?FJ?!72JbD|?bTScTQ4?!e zHxp9L^lqvizlfrGm^(^k+Ni47X9oc?qpM74=?*2oo2Z+b$S5{`eBC|EP|wUP0TwV} zagEd(K5Sg}6gJ_0Mm+k|yAhi1hf`9=@4-TvSv`3xz zvts+If+8;7o6emEZTM8=b%_VwmG)Q|IXSkr5`M!p?P>kJcs3fN7`#0;)}uofvxqA& zxKsMYqqkJb!9}cs;QYajo+`eY6%up<7 z7gVntoExX_GAHD?GHLd(ZE$%|mCw9!2ag;y#hFxpMQN`v$u|)RUXdDoMJiU0C|b|h z=KdeL&Z?^owcVn$6lt;I7No`9-J!U<7ncwmf(3UCQk>%MuEpKmrMOevZJ(SU@ZIMw zV`Mye*IaA<#eZda(^89yUuc!c?p`S~=bXc990v=APLQ8WPX3#&;BoW-86_<~(>XZ2 z$jt|0Uf_~mP$nR8Px?rl52D8a7S$;oYvcKqv4}0kIiH^2BiHn$e4priP-By>Bv?Y> zmF6Vvko+WZiHUj->h4|YiQE6|vDByq%s!^TLHZEG5-W~3Y&vPzD9la9P$ps;N9O55 zj3{j=m|}Xa_I=*}gDZ`QP2dxhYMUe`&9!o3L@N#K)|;|g5yCJn)fAA_|5lX$9Uh_p zw#HjeN{FRt)6$R=MT@1d=VTUOXr*&DL3IgEB+FhdjtgJrASe=%@*I4R44L|$rBIAM`3D$?Ne+WiHL=?VQLr>JuA08X9NSqI-Jj$O{FiqJ{rA+2;Pc-$=wv za+}Ur_$3h)kVY%!tWHN(9}^W*T9Xh~^lO20(fMnrO6WVQJz?TdgG-f&sm*{ixUKm4 zte_I6vIvapw}6HpewU?U0=0$@aoGlP&uWg2rEc+U5r+-L|@5CX}+*1tsd znqrjZ<=O{wAH@9{Kk@sdoM3^V@#jTK_d7;OPA<=P?#H^I`4c|`^WgcpPB90p&U^}l zCgV3e3YEiX@wR){;@;R&=4sy#7FWSsq1@4v`9+K|e>V0&Px(v)EM0R?Z1Zv~`W#4d z)^-m#u7O#)0E}cP23iM4QVF$FUQi!g8&XPZahiy(nrzVOOGXbzJ!yp(rykvxVq~+z zqS|(+L%#<;LuqnY5kE6GI{s})v}PpB1c>~Q9L4!o(+1!OVl$A(h#hcfnH#=*qADSZ zTl0 z1+S?g9{vmfH~ba~+_n#|!`2j(V4x~l+~{-rA}$v;Pu#J$24ehOnKejeRZ`d<(dVI$ z)N2xvQ2!Vs@!1V1nU8)#Jate+qRCkKVG<6FXquCZN(_0r^WUNG7{ZSl(GT9aL5@tR zaV0C8s7`?;`CQ%WC~l_C7lw^jX~c=r9#8&AMmhR3dcc<=nXQn` zYuGgWr}pLDdw}o$_|CGSf+p7NeD_iLHn+F^9PgX5#00^v(%}#T3*pSaH}PZgz@N0m zcJM`4Y>_$_(rj*xtg+W4FA^#1dF{ldt%WBo)m>}1f`diB_g!3F9GrY5C55VrQ&?Y8 ztin}OnshS=Z7V62aVx~g^ftUgCKkF$2hWFi^aC6{8LH?R1la;g=P0E(6E{g@_hYw{?t7Q5Qx-w~?s zJSXUO(zjWogPOusEC~G`#qNLH(ZkwCKEV<{@jmBkZ~s%LVeff-PD&FyXh79G;vdau zlnfNO=I=mAJE8u!KMj>giP3K`IRj)~$f_JZKyN*o7 z9AI+v#eaE5hAOs-XG{;daBFtWv@-KSKAcbV{{J7*lnU!VG>!f_tqPkR7Cn#=E?U$c z;>de9r~*|F$6G)bDP8`Ju(*Jh$@#rM)O&F3uxmE4cOOXa$~gy072N620k@K^zR>GB z(U%{9f8;YNUN~$>sLSK1BgrGDv(*E3h?LcuY_7c87P)x@rQuy|RZ%O*zCD*EQ=V?3 zVj=D7=eS$BQm+(5^;ZwXL(ZEVoJ?j)&@yEyWbhYoBSf`&G*q);F$9tKH0|u zt;}o;X_gc80e>#j8T(Rc{e%B498Eew^yk1o-28?OYDNjsQyh~BM=+!Oqh2aFSq}PI zz^RD{n=<|jhM28{6)rUVQt$cZdRtjy*8udiiye_w*XzkoId5`&IsulgaB;|IZI%%` zLNF)nQ7vkDJqYYj&27B}53jUFVt16e?WBWQ@=cAcNp4kSGYI-b16mR>`DrZ{W_Wc5 z&;1xm40&jj#yIad=J{_XD8ruD<+}Y!fNkWXe;;aulUERbhps0v!>yOC$tS>_&X>Z! zosQV4ER9I8c`IH2k#0D3dZ{#J=}7uqyEv39RZ$*klQuuIgFT}KqpdXf>T6e4n9hAL z_QX>M=@2OtCTY9BLFtaOv+5EXctvmS`joC(uJ>9Zi8kF6rrygpYu2U8k*c6g zagF^b!aO!3`2vj_VqfOd1%ZQl-bpM;x5Hilg&y5)Sy~V9@1^}Qvx%lNH$xPs)mIUm zFzmj4Rt<^ba3obTr&=N#JZ8%6M?+Yd6VUDO%AS9;7wfJz>>jbvIdahGSflf!eu#0N zeXcdF*+qsQd!1~YnJ3IraV&p+sKjM(mu6IG>0^KYD-W6>DEpiFx2NBt4khrQk_u(Q z{*$AEEP59->{SUHb3BXT>jrcX>1RXvh& zav(IZRHm`j!o`BY|K+3_-6o8m7o>AK1YcQl#MLqQV1N$jJ&B;8Va4b3pM7W?GHcP2 zi^X0gpn`!VQeyGZ$$UfxW1B26k(#cobr$U=Zg!E0>GtBNy*E9b_XDFl>t7%`U^(19 z4TkRNl$T1^k0qb5$LK>G>PCBta?12JeYXvIi5*WFb*xMt1D{TL<;ZXx?I1@(C?_vEjn46FS2;E+`_F|y3y6~cRxa$qJA_hj?@X+VOwH|LDH!pai6Q8n7*oJl!h2Op{U+* z8f8F{8W{e?^$n+p2i63Xgc+xqq*%|0;`c*KjxU(^x{>CIZx1wo1228h117d%`{fh^ zD9!?OZ8DACP=N{qX< zKj$>CuHjs!%W2|+l;GffN5RKgz}!)BX_>CR%2PpURA2H%=C3Z6P#C;9w=^TlyQTr3 z6(FG{=PK8X?|7AU;wG<7L4ujJXNe@Ae5MSBI6kgPlP8x+PvBJ*hTHTk8KSkWNFsfe zj2W&~Ph4nlsB)v&2`^_xj+74{X^dz=+`3g+aFugk!FkqdOIzSPcUkVUYMiLgn5)%W zY+B7YDWYeSB~yCVnrCgY@=RYej}-Dm?^qz~yOG9m9#MtEN?4XROsf{+K>Khfk9#EH zZ}5*8lA$ZZf#$8L!d^KZ$w!tn#7fnfV_W-0nk_b2Hv>EMERUmnEX@9AxgSPl;nfD0 zBqMWNl-#j7x1+#H(*`lhi4m&PtgK)hYn_c-@`N(Oor@b4RNIVAT~nOldz=ni0F)hx zkUwaORd2kcBuiRM8b2BgqICJ-0o(`E$o4XGR+m&I4khpQn%VDY8j&OyJxYt9nb-U{ zN>!{!YI>>dOFhzhM-v~{>y*%DNFQwI=tncq&|d=rW-23ys+xn0fq|YR$x|Mdm7PKA zWoi6cTJ#&lyxE^;(;Zjcnh5>>$nc<({09f_pBJOV>ZH?8mdfUkyPb=iW3O!ig_{qu zzD_!RSbEO6uF<)IG5_{41x?(O8{d<=iyn1zbyNgN|vOcritb%?HA5n1{Fc&^n@>^*$Cc>v)}VwcV6=~al^s2 zzRNmRJkZpuhaMbLBwW_1Hd*oNY2!7<%-*kOF#h<}QK!FcUGwER9%q5+!3dk&8qKbe zCJoNcIW}B;<^lr_2J4vo>9jI#!)hBc09 zrZjmMHj=Y4E3GLesH+(2VqOLM0Rmix9QnOhdOAG`a2NS0hHJi7c_D+B-iR3lSvqW} z^9V~&-gNu(+=A1TTn6!cEMOt$d}8hFoY9U5c9`!8J_%|5P$=f=OueEO%#7q2k~L>{ z5Bt`>&l>a!=4Y9`R2eR~Il0=6-`s6HBOJX?)hdYKk@Yehm%iQi4{*T7^H}*BHqGYB zLZK{2LVJ~tP}_O7V7%z_&P-g3qLR{(IXQ3Ml~&K@b$lb}*0MW>#~cwM8O{YM&bV)! zkz4%Y3$0ui+Wd_Kb(`x;WI1?ih&sU|{sR?7diP_@@I1;np3KjcfzB=;T)G@6^7`^f z?Vi%;$_@|K&{b?Wy5C81o27u=9CLh=UL9Q1k4^y=r&KgQaLid3mr|hX(LD7~iBA0p zN55l3f-BzPd*pLA?Z~_(Owj>c1GRw^jY46P3TZeLzRKES1@A@Px8Wnldxe)7 z-w^f;*4oBUvTLYc3>aIEN5X6L$F@Vt0Rj0gEp@3)I~n{OgS^+g(gkt@iWF(7M~q7C ziyI7|Dlc#R^;le%@}eS3C#?U(G(9m6YSrm%jFTwNB|N4}tp`lB`{@{s!!Va^E$U8X z@=rkra7p#Z7RG#;`yb!SWaGt9O(vrC)sSI=jgx{SR+kX<4g!!0tVfB&-%W}du3W0GhNDRz>RZUMSIKW zh6H&K_kVC2*>&zn@doP)SOeOWE<@X0e74c<47gxP*CZ@ng`F!OVi39)dPde5g@rwf z(lVvrJNb;YIgPBo9fi~B^lQ>AZTM)@ft%Zz(&7rR?Vp=!*(y|gNfsxku{%!BRcMjE zg#_S#Vn#74{UZuE$2jYq|KWSTzz#7AqtdY>`ZIzj{#>&p@K2hrguJUZos`Z-j*Hzo zToYNcGTWzys7mYlAD8!J9Jb=iuF$kemtmS3mC*)0$qh%wS+}!4ELN%W1T@&)Cp9Fp zYC?Zad>CcOpMNeHL_2LNviKnD&&+trIyTwGG#%yE;<WHd;Vpqr#f*e5B(?%{8LUAudV8L5h*an zgUD{>XNG{2g20?y#U62g8Y*!Zk~sJb7G)_bT&NR*H5AWB|CVdcjnQ;(e&NV*8Cds0 zI?o&7wn&QS;e?_AlIsuBmG|q(1@L2(bKYhW2kNbWPVR5g#M!s{-}1Tsl`h}VqGE~@ zT^kr2#$WON-K-m5L1wSAp)7EEZ}hMve2y|8yS0oUAr zB4#e5t^0a+$|HB)*X;4Zm75AP@q@)rGZ7;{(=~%7CP$0y%jK~L9ACeu&hKc}sPzgr zRDXQ`JqoYaj9gS*7Mf?-B9Ghmb4X|T9K*C;TU*U!-ZHPVjF)b=-bH8;vWw5}LGmjc$IRNaresxZJG*19D#t zy|P=cHF;i8hOu2#SL<4Kn!W%q=hQrBBd(pR=TQX7WLC}iYV5Wcwlo4`VD<|3;Xatc zhu1LhwSL;1F=Zr2$<$ztRs;nF>A51FPQDelKcD@~tVycUWrbZpeVx zNLOeAL=IcsL|()Rn$*XiU8Ny{&{r1)E~>=3KRh6~&Y)sKU>@152-P;}gsJUsBTWV{ z<_xhLGdYWwaXk?~g0~S}$fYJGUe5oFxmqx6r$){e8+=Ml$lh7~BsZ&h?zefu&aNgJ z`;(kFW82@uG1Bf_k_m%NbvEccjER!Y=S=(@Tn1*7)2*6M1L1xJE-S9Y%b zR$E1Xlo{`6DEULj*+_gq(c;Bv-S%TsW(_xwC88Kr)`#V|TrX^9KB0W<``}SIL2BAH zE=`SwuQIDLYi=1e23bDZ$xaqZbo$X>DwLvU#u$wU2;p>7=Im0yJr2=(0pT*TC-hV0=#JX5b;OO*LL_MP+f%2`YMKK1aIXVrM}6`@X}gv{-oE zT014j@u;NMs*5~MC{6D`c*P5IDWO`X*&&GWH;vk=Y&k=*_Z>MFO3c5_ zrB)S%@gdzI4*lA;TU#rfoZ=!#8GxV{`9^?ga`d!b>HkZJbeZ-})lYPm0%+u#B5!qGiljBsd{Zjy_+=I!!+!hPV$aA@{( zA|g$smMIr?F;;nLI!H%Y0)p;ui)7q@Cd1a!mOqLx+&GcQ5vWU(^oo)ojW@`^rYi^o zZuG)1Lc+EkEE}wah{fxGpCq0?4=oYHaCR zf|FF5yu6kE9E$<>7STQs6ITJax()>RUKqK_IHva6P_gRxpS6v3GUb6arIh0%K@R7$ znc*kslVn^V8k`MVhirtZ!7Fdm#sz{*$jQ$c;~~UkR=2K1@5BKsbQ50lul0mOh6t{4 zkDceEsw|=CmFVE^g&!jU8YTo44cLSFoYGHSc#dFn2Xf@)s!g0CcT8lqbU8~c0^sWC zDEozgyl|7@`rPDdnMi37@5UxO-#JQu>27Fq*l7>~>30c*+jB;5mSrrdfBXi93X*+w zj+4ZZ1F@5z)Ort8XCqLvICGxNL41B?g;W{_n!!7E>Ax_FigG^6&;x;Wh$0Tir0$26 z3m^sr2XtvP85Y+*MVc(r5XEUOVMTQca?h8cI2``bumHN-<65p_Qrj@EpXMe0Dd6KRkT!FqN!^ ztgK6{|2RI=gbiPuyG^KqUk&vsnTvV_QMsd!&u`lVpSzqjNCX`~>j;AVBx6Q-T;6q& zIKnNFcx`|Qk$1MME*AVwxOzFzk9?-TSr49l99mM`*ViPZdGKWgqw^U>TQu0 ztW>hUBkMSGRJUYu{X6 z_{CtIb%>9#FTALh1`i(5#Zxs)J*<7z0CQ;^xD!D*`de?%GB#&qd2q^tAL}$F_+WKL z$y`8%8gPY|y|Vp3IEQ=V1X0(ke2RjZ(DyN&<;nGbksNoFF{_4(a^z(J)vPsE^Ub*` zU^umwK3Zygo1qWQU`+QOK3vXC$qQ!uM4oYxOfuE+XL?SK-Vw-L=RQ=R2KH$4eiz+l z@DKPOT&h*CI~GszdTm%^mYtz8GZe7wxB0gybpPSu`Mn59RuDZobDWRVd!i#;FkB>I zOkT-6WW_Kk{wX3|VG7cv;e_V39$c!(6zbN|SZQo9QV(XtD6)CU-6X>!9 zW`=%On8jxwN?1-PJ^XtJx6)RwdeeC0YC=oTdJXDC+qBgZ329>+6gG zmcA@PQ!|%IQmv*UQ^hKgA6n4!)N^7;Wz4+eu>GiYj7IZ|w8M;TA;jFI6;%eRZ;zt5T*9B%;vEr zrHFieVfgy%FTr=GXDx3eQ@?`JJbci_^{YaqQ$n!%Ac}d&ph6euO}rVlE>;q~>K4_x z{vTY4Z&~!!$-bE>XhQ=%+L~(WmPA`K^peSYc1SZ^Zk?~{G5@hZdEz@`^)c$VNv*~>FV6&!y6Yf?vw{aoUS@lm7!>QOcqj8;;gC~@pX$WHDSpQrw@z{X|-%C`XJQ) zW=9dpa_sW*5j#$#Z$uq`ReV9ds2?#8tI}pOP8Nwd-qe%jftcC-RB?Ff5{y$XY%xfs z{EQge?N(n&DI0NSFly$~H>%oF|L@w8}Xh8*8%kK~OrVZ6I5 zkbe*MOfcKTIO(Ey5C&getU0*DYnv(rG--_(I@+)|6w-J{32%}b!d_?IAlTs{!8po` zqE_VISog$!szQpqgby2clH+|3I6U4V=DfQV3B09gIvYn`I@c14NeYPt84>q@(%l@j zl%icsbj_6O2Mh$+SGK8__>`3fer_!d?F=HS=Vv$sm$v(b74+18H9>bHQ`sT*EAt}V zO|h8bI*$}TfN}X`6?j+fGdG@Bf)2Jxubw49S5$Kn^j z?YP!PJqEqkd#&5I5S{Q2Uzx)9IIX>Bw0V)rxuxKi_Odl;O^Yx#EE+FK2mCSM3oLvL z!pJMlcfd6H8W6ewNOFZuJ|(A~&%Mz&s%6M#w9@fVtzJC6`>BtXTld6Ypnf}aM30i< zkyWOag-_=vHC)mRpRVt@%uJi%Kj4Y^df)>3h!f7#lE-2>$C0?F&WN81E;suk>)c9$TYLZ(>7N%sK?H?)nfVPF( zlcZnA9eg45Q#fe;hr-wq!s0Hi8!wEv*NxK+Lxg8&4a0CCP}UwL z*L*Obr@54xmE$@ne~157i5@W)nY@$e(?w=~DVqd?Oq2hE3;6O}A@Vt&$#qVF>@Ek? zw{b%u8mx*?ve@maxm2>5muyR*2wDShz{<6q*j!Pv`w-jwvSX_J5+A|7$vHE-*gTzl z^z=1-pV5>#u~ zelxg#8=Q5OoFK(EYe)QBrpsc}(U(nGQIZ=s>c@y9{|Mu2^~Cx0wa1a41-e0&xsx(Z z6VIba7ZNyRC$U}l#OsU)qcCqfGMSxsQ=o1H@{|clP&TWIbSqvZ#UtjR)n)oo3sXg{ z$52$Yt?ji$>wRG+yv*SIIxi#2RD!ms^FHTk2U>BygY6>8Z_TOe@d1!gYwX%uGUf8? z4V5}}A5B}Sob-yX5IoB&s473jqk6F)X13i4B#9Cej1fynHW4xL9>9g}f!v7fPU^!f z_k8buH@i-u9X@p7WY%3vR^YaJIUmk&;WzcEl_{l{AkqMH_{)f+mK{14X8B_5-CHZI z=Qn`D&HcV|Ivd|abk`Upd1hoCZNn^_n8{gP_?dugh$$YfS81C~tA1s(@n@Yj5gQym zol+!7rOOP<^fo4OJ=h_FrWcn1HRro+GiJ(l(<8K(UB3()8l2__pSON4w&P1E8=p0| z;x9A5pbxN-aur#^`_DuZe<}RX_^WYOK+j%6N*_)7xmx5~O*;DRg|vu$U@#?i@b&7e{e?gnY#uYU$P2Q-H}Y@7m_BTBU@KlEU(c7 zEL(UertRC;uzOA&M}onXP`)wvSJum&X-{HX2#NT8g#cMzPJtDMBRb%DbcHLSEsuS$ z`FY}w(s>V`aIl>!;PMv*hU-G=fQ*wj&c#goI27?eIgi|$0@kV-?CfX^rjj*Dx{OA_2-pR%Mo$W3G32FaWfbDt>!&X6R6ccl6|F z`Vi0*rrj_QuF=?SAh_;o*aVLh5;&(Da|Kuu>UsY8jKb_zUL$33bVRJrk_ zddTgyWx!n!TBPA)z+p#!dqzv9tOi^_i*}(Tk3fS(dY)c{A>|YckzS;KI{Xa*DMdvCiXAl-tRc&Y7V=K16fu#^dSy0l zWQ8tijq*p0X)KS|0^C+?k||M|Aup{cc+;cyT;eUGkF)a1=2tzlkrbUSkurJSP4Y3a z59T2rHV<5R0N3;{c?W+03b~DkuXTolrr|3RA%pa~87c z6eS6IX=4SHDTo3b5$EUf$Z3BG&4|9o=6gP8j*cm!vX2hUv!qfJO&hS+gqr>filuYNwf0e2)xMG^XhI8gLBn`!MF(S|;h)t3C12DTV)$aTBbV6g>m@9HfXsiPb#)d39_n=8nQBQFsUCCee+6yNWkY{wCqf+tA zkEY7MIF8~ZoYD3whghyhNRrL?h-SPQL3_p7k@wf?2EXE#0TdOHFOc@-acw2=)32KI3K`I+m4Cl>SwMcvs|KmsG6S)Iq__ zB}5CU-*#sbuZ(LVrcS+vyK>4AWat+v^+4muSH+wsqc>6-BVUN-Y3ty)c$n>$^};NI z+F#5Y!6HmiU@x^P%C+|=nw#G%oj%+Ni95M+YMgY-me}t0w636h1S`Q0HC!re$W72j z;Jj>z7lFnQ4JiPiVVelEYS;0vyb%w>P%;eWZSDG=dAr~fmLN5qOyXDT+vfg{lSABE z2V|^uct?$UG4qpGW~Aa^5|J5!?X;oY-I0))uqDL!eV1kAr>Z(ycCn)S=_*TUt5kX1 z5jbMfe9dK5p(M^qCW=0faeV5s`Mgc(`Ij%M9*4M_&wNn2ymX?)c|3vM8cUO!Z{i#h z4(a!gBw?n!$i>+hxL6anSdtLK7bMGlpQR6jol{Q2D6A7|kNf$*;{oyO`vUvmr*}{# zO9-dSiShgzpPS%5f7TXL`1()wcoTaGm4@^e?+1N57a0oj8y{1*|KR+}%J~e^d4M*V z*y&6q>sg?@JgbfYM|mQdKgb=i)skbq-3~q%xoSAev28L-gQuAJJ&PxmnI2ZH&Tcg- z18^oT;gmlYo7PHRP0IwM%_V599hr$P3cL5Ob(Gks6hsFvb^e_*iyirabEz*77aOZ* ztmtl}U5(3ziH64j-u^t02fdHdNEi$OM9?xXnXv#u`Gz@7Y#{&?vIhzYxQTiST*dNL zV3+jZHYXcg*+E>x4oQLCzNyxSZ(Ba^wQ#1Ie z&!H_hXLbC6mVgi_;yr9$t!3Z5jn*cHn+R%LFmUBD zPfls1@46yklKO+1bqO=AXb+)orG3I0M!`x>EPgisaE?|Bq_JbH1XXPj3BhUd9UR?x zGwmoFd+f5jHfaPcxh0{&^4~oLj$IBk03oq-;fR_CA^fs7c9=f!{k2l#Ke*#-*p$@3 z;fp$3&hy8rHi7T&I1sd_Bu!~v_ze}K!wp%grM(hJ8MfU5`X7+9zh!HUhCqgW`AK;( zB|Kl)tC?0}?^ z=)sUSIqP?8?Hgs_68^kbqFkTrQ6Cyk^}@TT?_I_~VWFE=;1iP%mk7rQaK241@6#{7 zc=!sZ49h!#wYqvKPBwq8cK;PwT%WYUl4N7O-S~n{2J|lWS`@BUJvb6Ltxe?(O)(1f zqpum54jn34+A672xZ4Cc(ScKpyVjz> zUwVLF>nhLQ$0%y3b9oeRb$BKKz!oqjCd*bcz{YI>=TlVgH(_hiId*vgA&A9Xn0G?| z)(X~T3MqcpZ6)n;KL2;nO2gGiqgL*{J|D#xh+LX$%O(v_Y2Jo%BeHsNTI0!MBoyWC ze-Qt0ROxt}*V4j>ts#wSpP)-Hyvl5_Ybb7R!bk5JpT52ifCjE8tL*xqV9LciuL2ompaTCav6&VR?&@DpEH z3gR2oHlXNWd8NE1I2-M9hMgx*Hn{|`|D7uZ4|>!iclX$7sF9wI?*`HxOs&##G0fs>YkqLhObHeyl~H#Dj(=5 zyE^kY|BQ>vMQ1@ivY^7TqH*Md#a!OT_Iz}0rAf0J&E$j3;qWW7uY)N%XMMJau zNS|?+!knBpip2RG3H-Tf65utVmH&N(qz1P1vbTX91UPy<1Hft}_<-}VT%>qiinxZ> z;NP)$&d3HdAYbY%6TK-L_WF)(o!}ZV#aok=&lryTC)GnerNwZ~Dz@^znD1q0h-v4! zX3JX=#E14EPxqI_2{U~Ld3dqwgeCo*^U}S)E#HJPm%d;Cm(_pUE{zlTnvNa48b$2n zP3?@2>bVI|CM%h}X^(dD^*%O*7Um7onf>}X`Ljb9&PhS3sF@&b!6DrUH%{vMo3Q|j zi$>Dsr@{2S>nfU(SezYzTp4ycU)j(5&C`z>R0syC)Z`=GPQ^~OD0w?Jyd}KJRawXi zs$m}o(L_Ietcm2c`HtxPiG`4gd!Ykak2(4^(||oPl3N}-!h8bVJgo}xjqiv#r}kOq zgtowhDdwNGM`trE>-VZu_)_#I%*kr&4k0ul2b*}GoYVc&zv;?X*#oywp$AHouT0rS zV|kG*ZZeK34PWd5+sM`(D>n-fq|Wh{p_z@RzH$sCgHF-DrAZ!%szW&Lj4?s9*4#Dl zdxah}s6{R|6zK%s@(C-XEPm;kI|{n3Y5tZ16pO#>RkkjXlFfXvq7~b4YkPdykqQDeuDYWt1O?t zC*P6M>B?e;63Uyo1dZ8peX}mlaCTMGSS_v0Dl=oeZaqJD)A>xJLEh}tmIqJqojneZ zrvGTe3WX_B+oA-hhV|%x=ZN^0$Rouuyi1>lgOJFXw0QX+T>WoI#6Ei8QP!xv%f!C% zQ?e`2URO^1ARdx_^mVdaC5Z2n&Uzs_Z55G%*_gf3>osZ zAkd>=$mY`x;vwhND|{`(QrWRt-?1P+@7gCOt7L+7I7&B?$q+T}^w2EcZ`L&+VhgnB78Je-=4YwKiKgz%cR7;<1wBC z)1hxEE0R4vstHw$(pDxmbDa#Y9~aI!I0!i6(NYv1m16BJWmXU*3p6vJlQuNeIMLa1 z{V}0T;Szf5QXz_zT&y{T{)Tg>dJi%ICw9+#8BcCOi=)Iy7dQwuKtygNcq9xwB#6Xd3s z5^hq@P}=l!ROwu7uj_z^k-I0#j(dzd2BiG-N2||e692)4jeTnlAM<0{kX~tvD9b6& ztMH!Z;3p*7bwk1v=5eWgvMtDolf;&%Mokcs2&ipKEE}pB{Y7G-g=52pSI?O8i%|`; z{x@PlMYDdrL#T>u8)yV6bbDP4+D0wQrEn#F*2mEe<(NNPd*H81E>a-=n2TPPxIpk) zMC4*UvWLX%yW5dy0q2|yO+L4ybPraOMc}zMN+4{ zxN5Y17|RLJR8T!?iWvCzm!F8;8@90{(bcw^ou*S-p2mS<31wj}9)r-@NI&C|Iad?OV1{I$yn%U~GBhV7ET+ zmp=|8e}?A`tpBlCefFluQsS8pr%qWZ8PZcvz8wh*kbgg2L&GV^n7q56FuTRLAJ}kUj{EYIb6>w zld2LsMcL=2gp)E3$UqMoq@?0@HlF;TZGn4DPysqD-b#xygKZ`ph%+@XWVSUE$Rb5`)D+mI#p9y!2S)9nM zGkr}=uMC+A9bWq(|H0{NvFl7@y#G`$mpY?om~X~NdU%-Qkon;}f?73!ddU0h+WoxB zyPBh=1zyl}3b@p7bq(l7 znc-@F#?KhMsPV!LZW-PDDF1mSUwIW4G1Se?&1=si1CRI8t^w77-0MM$>nXZnmnfZ3 z1Lp#9VvyvA_Fz}1m9EH`5fYEvH1=C4H?`u=dv=1q&pkP2da@q3C-|_>Gu{l3Mq8SQ z@<0f!WX|7+wDsZgdUqkLqt;tU(n6h9e_Gx44G5n8<^SH{{y4_NvvtS%BK%cbSl5oM z)r8T-v5otO5;XCtz|Z;L`@VjsEXovZ@gn}f1nG>Q9lKwL07;*e_ zh?BETp8c+iYfmm(WMXUONw!aRQb5N_q~}*y1}UQgWM5*4HWyYj_913v2QGP6xy0P> zRpiBMt#N0o4e~JBfovJ!^pw-i8#AwU>H)nkcPn}_6PEF9wFvuL86Op2&dbowNu0gF zI{kv6C)DI#SI7oI!!G>#^r&{w*I5KRj|c$iV&u z^k#HYfTC2G5AIc+5GK(xO+SMemK<-mHE7zE1`D{{g`FN1;4P{RXv;m)6K2tUKtDYZ zsHPcW1zzecsdr5fhiu2$UcKD??ABv3D^*P`B1EK6I`R6QW5lWE69%I#C9TJRBjvLd zSI_w)*9T?LueOW+b5BX>gz#mX0%1uhK4ErAcN*$2BcpAZy>8n6+35{QMPsT2t!zgo zL#1yI$jt+5aOdf2>e3>R&I0J7?_E6p&;O~^8y`RAV}(m$v7IEYyf=TD6>**Qi#u^( zuBl%PauGjX!U4L{8Kfd!W_k`M{l{)@^YzBkgSzbi6<$HMaHq&eGt%y@95xu2Ugjvb zot2*BtteuC3-N@SI5pn#Q6$h2{Zs6(AmRn1H1)7~T;5NGn2x))NUD+w5SHh;)0v%% zd~K+0$5Z$&HTWDVi?iEbm=;4-KQywl<_<`Z6;{+p*U#x9D}KHe+$l>MukGwz1Kr5j zpeEafjU$9S)7d;5L?_T-;uIW!n$dwrxhMJG75*6mYaZR`BW6yH>(4bNhG|^c4}qJG ze9%Y*qm9@Qj^9J;E0g#RDi{a3-%)0E zJzHacxYMyay(Bi|>zdX)(Y4mqjl-0!`Z0=ZbpTabZk(qXmId(QJxXH)=LevZA^o2V z7BZmm$bSh)1A=a-=#WIvS5ZsjV>^R+R@4=thjCwI7;-_{-jXyLrVb&gbouqe>M$s0@?yEJ| z$4NkgiYyB^_C+kmw$wn7?!G=s|VR2LM%Y1e@A+4eT_6{gd#-v00pw6wrIt)9zuK zbUPfMN@$Y%l6st9!iJ4K(64J4f`y_NljU?Ha72Q>VNlp!=hf=r=J|23o(4X#&l@<2vUxMXkXGl}>rM%nXpw zb^;Jd2ymW!VI7xL) zd-wf)bkP}83}uvLnqi~DesxW{WQ=Z<$nSleWWwc429;20weH0_>Z2WD8nT~JC^`=b zL~w96vNQRm3_1l1^?>BUCdzEoE!%z&>RlkV1c755zd>OR%0bN@-uQ1#FUqc&kP#2=1n$sxUu)1Xy2Xhrv`NLJdDKUxm|CKLGg6CN3m)pZ zrSZLDyv#9M>!dkZxk_~B8ZYekp}#gprbrqeU2V5o1_gqonMl9VZE-1)Ql3X!0sOqHIP!9bh41xqjLd^|FUBf27^R_|@lq&W?iDu@?&6z*$0fLZJCF zrLIa!z(Bv=J!~;mK$E4lrk^0ZUrcFz2Qm8dYq!sDHT<1r+w1iUL9H*vz)*~ylAOe$ zi_(7HDq_^db=`JhFpyH}YVG{zpc1A616vhumaQ~Sbn0$j6tXdQrzrPaw$f>M#rCV+ zB-p}`iJ35Txc8`k2sRw9Rc~l;YUd*t+y9{631u-7#VuBa7}c$mgw(e11@p5rGmU_< zJ3iBjq94zwtKKYVJ?sfENS+~Yd;kxG+-lg}6K%HHGrOMzLEgHZMZNq`m3NIbYR&Oj z+jvMbR-D_-NlzXr-NJgC9{6#a1I^|={4kO=nsk;q`_fl|0i1Cb0r4DEYo#=mPqZKBAfUP`P|y-MU&}JX5MSs(I;CS^ zl0RV=0;_@T`JeEAg43~832bf=JS%lF^@IC;yTZtqLyufbA#baRJ7FIqhW^XqH zCU2}ftouVd=4i{8!dNfKs6v=Y=z>tST~fPd7;x66?MTWX-IwZsCFf#tL$Jw^R;82W z8TI#B|G@v?7+A*kc}-sILssb~s-N`-XW#wmPuMTxFa$OgFA)C2aG(O0{#Yt?kVS-c0p@I3GET)1D1+ zOCz`b9{>?S?!HH~dG;4iH9Zfz-$y*X$7}MjQZ0j9SZmQ=1X%#nQfvjaD{sINfM-4z zJcC#L+`ekuBj++@mPt7lMFS$BeM6WXA%0e0QQuB$WZ}8*B~c2b zrik6QI-lIFpA_8Y=eo*G_%rvhPMH?w!Qxs7Un#zhlW)8CSq&twZ;3mcK-dij`YWUc zkTQ zc9J?rR7Fo!1HqA*ZQ{1~xIdcl`B?Tg`F%j>vSGNbWff#~F+|8Eh~2JhiOuWsgDSoZ;Ii|wY1oyGCDaQzgsQFsO!>Hu{d z?fy%~_Z+smm*H+VgA=5R?UBSBnA1x&r-}~g`-$hhs?_N$Z z^Zke(6pFtO#hX4CNXn|brJ;|6N*V~UHadLDn|!!#6f)x&gX=4AtsM~$b^1B`50%Q) zWca5M;g1xR6j(+aB@o9)1B*OI+TcCg>&Up;>wb!#4Z`bT{uxbB$)%0V4|{=phTe99 zf0r`|xE#l-&QeI)8fPwYJ3Hg3F8H?H@rM zZkJTIKZZnHzeO{eeyJd=(bNvwg{e^Nl4fn3I(Ash&9->{6U(CAd`iw7*wUB6?Gk?W z>t!zdRgRwK;O(f@M|j27xmg`I^gaO-!;-fAHGLuh}82t zE(wzsyKruAWj})BFQTc9!p;}^!r@iJn>%5fiaN@CI7b_uD@CIjh$hMx7m^3tzz0VH z-9dHzd4-a{6nxDsY=p7KL?sG{O0`|?_N<_+O5tCi=z3y>owU1Nit4}$Y zvM}5^yo$)tPiL5c*5_mJdOjV!C7>U)T${ShIb~~rSD_9pa()x*UNV9 zH&b+4ijXXCZ54)Gxdq#I8w;CVb9_U`+&{yBvaX~_Qa6St2M|}4;~Z&?as7NWSWX=| zq=nix7MD8xNgFEfUJEEcC%#_B#Zz!i^jvQVaS>sMhOxO`%x(semPY9-cW;|w?5nZ_ zWb*Ckteur=ih-t@*;~w#duV~jZIv5x>)OMbk_wAn!uMAJZpxPc=x$ZSedr2Yb6DhI zc(tywn`%`$pd(|z@b=rxtJr8LnF0l`nJ8TqLCR}pdWH>N@zb+7A{ELQ%!B6 zt@Qm>gzkVBeoGBSOjPvp)Kp5?p^2sPNb_LUjmcRHwC=pe+dXAi;o3YZl1!faIq``( zK#hX>o|hx;P}wOQe;RvY#4$;yqT$y%ih+QGP(Pa}>-{6~Qy$ECKD!F7W;u$v&9AJ7 zJVDO8+Q$proxvmUE6=!p0;a?i?onAfVp7kIW1-XWUw(H#AUE^`%qYiI{8%qO0 z(WjsunkceTv#^c1S^(U1S6E*C3e%FZI%b#8JW(>=6Wjvl@gHcMIfkF6uMgJNg{9=5 zmWnMCOzT6gEUSBL7m(s!-RL9CFuWpZoqGpVJTbp;)pE67(>TM3Dw_o){_7Td2GGM} zZ&Pwgu~X;@%tn(Ai^Q&~f}Oo(cyH#RKjW+xceXkiUsm^$)|l8s3I5}v^7;-ElQ62{ zO1WK7NPKbK(p0~o$Zv0&^sFBN#N7*96%=?yAOQH)Hj-C&4IWmXRV46k%Zg0Me0q-x zl0EM8bMhONp^0IbhZbQoQc_OHsiur)o}&I>M!}=u`Rb=A@G1t>x=86~#414_;;N;) zNgTk~e1e;g3Gp0VS0;O#_-xUm_f4cZBy#*agT;ek5#d;L1+lfo#f*7)X*Rgc%wL-5 zY4BILhtxkW^s|4xOUDx;U}S7-S~&q_dbJt3GaN9-1Ywc3%~y~JAd7>@s-lvn7%3^~ zvv?3k9&d{yK)TF`fFdFQh=>9rAP9(nA|e2Yhyo&`oYpkC#5JQ*Nw5eCrpunh_`ZgS z7E|7)U+Fez`Tom=#`u>L#F+L;F^VJpTwYQ0>avz-t_~efv@u{$%k)QcjPa%sgNHE7 z?-P&mq1W#_1?L#&v!iTXV6*hJg=!m zJV1P*WG`Luu#q|p5JiF=YrijCX z9zI&Obv!jtCd2CJs6hVQ4Tb3>gV8^#IvPfIQ*8jgDSXKeC4)dbwSXAGze>)J|PQWO0Zy zEuCTut~s8ZlpRT?jw6cW{{SCNJ6uac16|nO>)2r893qnfrI!${iL$nxr@@Zyk=hPJ z_Y26ent@RpKn^4uuz{wWzDidC;R>u)231s4w8rl@hQe;)eL+8!trM*=h}dU^s4;~@6B!woFbOxW2Qi^;HP z7bPr0N_`m3+;!DetS)tcB%VQfcL{qI$M}H9JzGW}NOjLB^AXvr*l?d^{4K()W=b!8 zslP*o$J0Hu*zEvVr&jq-bB_ z(nTvBnU8J3@B1!)7l6+=XohKv&R67c3~P7u6S&h*0_d>&ia6TmW-S&cU)4hFm(gu~ z{18R&dsrw^E^p7TH9b>d9=@Kc5>G3-b_&EI=-%dwf*NhDmYyX}`sz7hYlspzE1X?m z8nyw}_OjQnFAx&PpVZxmEQ8UDA z!@#q%ixsslV8fQz?u(+Yvy#T}crlDVY(A>RulQaYs~k2f!`<)PFT}!{shM9-DRnzo z(|5RwUjG21`Wkj#O9BZR9XDL(6L9#(>7%Kp3>c*oyjpj?fx*_-DY}X#uanJqhXuiL z=h9;J^GSlvNfpe?VI%nf57xG%sOT~53j&Sw+&zandXuNT%r4@4bNrUS6=GPUSip^Ydq$mes){f#H?XI($bE ziIC4T!^55foYwSfHf{QyR^3<8S{AsN+DW^d2_&1`l`9!{hUXVq+gSdJ8xaN01-34} z#bV^-`8o4iiG;j^mizNs6;_(6DtTosh_t!Z`p1&aB|OfDuC`Y=#OR(TYYRTMZ7tsF zQ>V$q{v||zjRbYCgZOorBQ7#IzCZ@VJHKvgro!r71q-}K<%kR2$89fSxyoqh{osmf zch&uqBa35c>Uyp57rZ!`8}F`@FVpR7<8x!I$se9Xp!0Cp+NaJP? zpJf>&E~%3&lNz^;OCc7Gr@M}ee3n$RAO@<#P#xjZMQ*3-EK+?t2ySYoMh)^03Z0)m zYO&*@@`mr3nn9u2qHW|n;-@xf?C0}YV)L{@z+Tb*L>^ej_dQ~gM!Gu-&e8QD8Dbwk zYRKgh63T}W6I*t|&nrpf7L?kvo#ccXOS5hBQ?;d!l7w6Qwnj*A{oKm7&3C{ezgl_7 z{0i5l#Y9b;#KT(H+ASMpU>S+%d8~puil&-}(9`7WY=h8sP?wP@yRSb>DLH#vXSz_| z{__LJ-W8F)67TX0uec?O$r@oU`WlGreyi@#sOj9-G`YrBJ-XeaUb?GS23z*KX2-mE za)t-Z8;f*4E@qS6X~_8|c`i9;VZMUb{{U4|(rpWfEq1WTeValBN2c;M`d?5fqS0FYw{3Z1gvYd1h!OO5qAIG18xy{oA#%~ZzeTl3(AsAC zfpNJuJ1f}>8cAz%l6=? zQ5t!Cc$zYu9NowN01E-g(U&nWNN(42jmp=2qiDtS{{H^}xp#`<$4Xmq@XXG=)oe=| z!6uu*C;tGdRwupQA#fI+Ka6sC>Z}foH$Y81oW8@5))1%n_x{VKad9;a1(LA+Am$I+ zRv8foYMGk2ruNI3YNm}UQsIc0+PG57Qf?9*|M)o%OeNMo7uFDMI7B!K}j@4c4{{SMH z+S{X_`!1FWrcyvDDPfA5oPU)IY(EXky}9KhEt(J3e?><&&sPqE9zI_zx+hZ5Q#zjy zr;eUJVS`t9aonr~$so{Xw=%AlNMad-vs`O^0@9lkCoFO3YP5^`wFt zcOHvT@)sR!NYz<;fv{GP4V*spVhhQ>=KCregP;Q1+$NU4-*h^&m5>w;Ijv$Z)mv~) zg}Ve72V3^jbwRn;zNiC*fI42>&{%7f_B{}XH~>bw_EaphHq-S$TpVw2xT}c1oc`sH zR}-Nl^*~E>b?kW{GBo$r>oXi$2sansvcq=fH_+c;6?P)#{g4_s{tDbe4|sq9RKexa z*@r~|gyL_flr`roo8=(s@+-7tjkx#%23B=gk&tXq1@N8%a{UME}3;zJlX!DP>I<0K3rI;AVHrU%o1(Dho z&jW~U?mwXPD{FRm5`w0`RsKz=o+fKzbF4tLPU-z8vYWx{Ag-l6JBq(0JdeE{Lxs&8 z=TH3(*pHflk%J^}%Wo7CTWya&lFtN_y!ja$+|jI$Zmk{8$$VNX2H`rFf87}IOfGs# ziLl&8oy?w{%>J8PU$ToJ#PUEb19qL%C*bvT`PAZV7rQ8Fu>)Y64T$yRtZ4bqO zNw~SU$f|PRPrNGg-(&?g*2qqp^X{w4;`i#Qs5*XXK(?D|I;So|-O-}r<4~OJEJ6W& zG#Yg$WWCPXt9jh=*ScE5`+h0`Qb6nXD}m-TvZkj?8wE?<*V9g@4Z2GDiU}P0X-f;V zBPbyHgSwNZ$6yrX^)shk4iyt`sy%XJE+i zJZ!#V2!A&KW7nzND6B&Pm_IfhPU#{8%;76!%zIfe7%>W|n;kXZMDdy<5XivZ{ry(6 z8AXQ>W}Vd)AM~Jk0D8Nh$wDk;!Z6zSaf)Zj47B1m=X2f&01d}`?6Bhz$x)0{O$9uj z8{g&nGp~P|q`2lGD}jn#nP=HJ!&t0FuW(_r|GOPX0rBS!us z#!x%lt(<;Hol^{LnX}IvVUtS3qns3dMSX2h%RN-GUz40l*6ap{kU|E+;B(k2?$B?x zir!!zTPuMe7UniO+m+CRBon@tX2}@=z;oF4E2O2W4-wToH{~e+_nXK`8uf^hE+(;~_q0lH>DRP~>DW7l7s*)4il$L8E^gty0r( zEw8X!Gg*YNa8?i2IaRqlBP;25r$bMJ=XXqaT>~g9Kxue zqoSI$_->F%Yc@8QeR4iBR-Gj!ZxO)xu_IFj-WwZBd^qB7G8?&ey}ee29V{|EkylNY zlz=oAdZWm;%sjhZZzCK1)+?-OENj5dtWr-!tb^028Uf29#}Ok(d_z-9;!L< zY{|m(IowYQI3;7Cs(yIGGq+P|0r*sSd))CRYdmb`*jv)uE~5_NwqlGlm9I3lEonY1 zuFg!i)JW}`HQVuAyx>#RNeO&zEOBkx;bUWKj@mAaa#CELKEFvkGPozTlDs)vg-~PD zVthc^>f0L(unU*xoNeM0%b_|8YPxx_`o2HI&N0Rl!$W|=<0UjK(Cw+da*vgROpS^(+xer0)9F-M1C*o4?rRqw5m8B9-@MU|O{*(BWSaHF%=PWeO) zj;FF4k$YO}ER1wdEpQ-?s=_VkPRa`u2FCV2s?)jZs#}*$Nad=lfzwnVpc-kvbw>lb zsWv(rg+exWBqRf+wLnenp;S9|?4Oc?1&1-dg$qUW7Fih^+$?klTadB_HI5e!aohkk zx{zUPWbLBJA_F!-oZ9**tO&_k5VBN|9$_73UIbg^(0n1=u}iYX^8 zbWVAe04`Y2ZF}$D$PQBtp_>-PDe&4`8mfl|#L{$eJg>=hoF~DIt>T+?xRnbyC z)N#4xf=B70>*XYmMc#2%6+use;Cx@hki^%}2-`Qiw0W2SH`ACq_9a`zwe*;^9vR16 zKVMGFR+xz8r*(vfwo|FLzM!bGlE|X0w}9}PDj(xs&+&NU6H6g{MdTMrcJ4g@1anou zF^WtQhZ5i}C=t`g6mE(++8lF(s00m(1Q2?zTZ;IAaeYM|Bq)Uqd<@AcieqVYxGg#s zk+0sO=c$&aVJ&f$^1I4vBsrdaPuBUN!;@UDq09Y=D7b?c!>}5T7^;*_h0A=ND=#Bj zPR(~Mw&lq}#>gThHbbtb=zwwjR_!~h>YeV9wn<(GmoA`mH|V-NBY`SsjjqNjnjF(` zBHa3wUDWwG)(rZe!FrtKD*j;R|sCdusH4e%%^Nh4@uQkkB z@`)*`qI5M3c2}{%{OD*6=3qRWfEnTi-=rwxKP067BfKJu-b#tr%`x8!%RTJyx# z0|i84M%wK+wbdFWk*#Z5TFr+c{;D?lIovCk-_+it#;Y*n;>9n6QIxU9oyDQR@+&0> zuEr~y9#={Y#z4|q z{5SW(bNEvc;rhCKN@%2jz1d*|<#Wl>z`_<9*|=*2}%3@$k>toJ#NzkQXf zgXr+%j1t+=;k;SH58ymc-k@u1a0>EcbWe8Ue1_b{?Q*Uj&LH9$;{O1KaQcr0j17{q zxvjI@--YK(2Q+9LH8x(8S6NL_TLv3ZM-=%YWT!XhVj8I%7=R{8GB)j=*f8C9JQm0-MBin%%8v*8aPclkkpd>LUkF zv#P+Tr>3W97@2CoN~B{78XUK~fhO=%qe05E2uzJPw~7YSn& z0-7u}%swA(~VfT?zXwt6X>Iv|t zLr~wRklGL!80L4=Vfn8v#xQr$O)V`;bqC5vKH+-+Xt~zq-xGQRj0Ehi0; z*<^*r@1%d&cVoz?d|r}TI@xJzS&~K`zliLsg5&dHHASyuW`;)ib3p$9f@uE9{SP9$ zQ&LuVk;LP1lAOw({JHwNKe*?g83z3-cvI0JA(#ypO)9ck`103=+UeHQ#1g57o6+pQSI&Wd7y zHLuL#KpPN#6V*c{I%K3Y6*Vy#poQ;iMe>1rj-gu0F)KsE3$@b5)>2q@GbR-~-q_-j z2YgI@>^hdKe~ZBCvr^c@T=RFZ4=<=$@{QD^BuB|cBWvG%Z>GBFva=8{fFb}EjV?L! zw`8cPe9j=Zb9Jcb!=6T$J6lBWvn|f)8C_K)iFU-DLbJv#c4p|{G`P4Uq3p4ikldxc zx++Q<&V2P3)hMpnc4avU4{gI7Y+6sk?w_*7Qz(luEdX0%)nPJ*$#7b3EP55MSw3O~ z^k}dyH&R|7QqLGT3u%4sx_%PFe~V)@bZY^tcum&1wULOS#d$}9NGi~XQYB|Z;L zG<0S6J`lsa4wKTXKoyJT2^cDSyY~)4LFu>e_goTNkUOJNgCd*j@`mgi$h@j+z*v zW}%R`BLVNt-!&py3xT!rjXE@T9F~M z`Jn>DjYrL0xKuf=fZFH!P*9 z51N2d+H3bO5%%>_DXPJ!;mk{!AuVq`LiWPqNaPoUdve63ha04&iNH0~-eYeyvmGzU zAwC(W?Cq`LelVh;p1zuA&e1HQo=o9~De@9Nu+wX*ac3EdTyAz@(t%OpInJ5CQ@3)w zt+Kt34`ZCi4U0{PS*hCh$^Z^=apkEhB_AR)@OH3c64%OPsG3Ji>k%v7U6lOpKLxXi z7gR#%<{|UHQI(>^9zYI!{%W`n3D->|W$`)y^I+V$-t%n$Xx9F#*Z6DMw6tt(bzIG( zacL4g<21##`&%>Q7E#38vuBYdN04CL0asaA)>jurB(AuojhW|l_0_vK)x- z!>QW&UfeD#dAuhF)Hrl95oUTdW}A!nXN6&smjR|_ROH%8ntZNzS3h?jMLoh8%^wm| zx}sNSuaEhWJK=9a!PD_uCYz&+`kY(++J6xvhfq?`N0SPnXu0!GE$;5+$IRlS1qhIb zRXogo$rfn&Ewopn&6EH%SO5Uz6;TwB5fK1HL;(>H1Vlg)5dcI)0TB=cMT(-P3RujO z%E;I`xY+}AWmZcxa7JX7MzMo;IM^;{5aR|gnCN26cJU<8e1hicDyuOmvrQ}Iee@iM zpyau->Y)Y4Cmu~?BKE`LXH#Fr)bQPuO!1%g-J^eUxr)p~5XE2g(mn0H!v>8XC7K*P ztO3$_ozZRx+Ry+3-ItA@+HOvwUOGJa)#ZCvq9H~bGxs5?!-BEb%<@lVJ(LwkFddgC z^?6@R=#R2A>$PVsHw{xtPGaIpil2kwB!-W@cW#d1VstkfE{JP0FCqIQNdExnd96v)Bsk$L$GU#H{4W>}alWNw3G0 zc?B&qY2y%*@JHJ>QZyCQ;Wg3LQ-PV97Q0rxr*@Id5W2iehNF-Z8$*93#^Q7pH1Wv@ z%n23-+kWACII~ADF=v~SIds#k%CFCZON#JXR>cl8g|wV5u$woXG^65-{+&YQv$_b& zH)%K5s_gI#Vmv*M!m)^3E*VrZRb!sE4;7A5`vZQfx#8?$mI_E&;<1d4pg4zE^ViXNV+m*?`W?qrZDj7sGWkK$!$J2e zRhlW$+wmt8Vb!%)4t+s3yGD%`8fv*J+m`o9Vskx?krl{mt5#J)peLFM0iCr8q(0#00G|0E0F$EW}sdoE&%Fz zC`ka!Y)Q74QxY63nX)GjWDsLx!}k~YR1GBJ&?ZMt{ty|j)*0@I-# zLi0{1;jiHMkgcb0_!-}FKk2`hpgnmk=N=Ah_^;xRW>>kcjjm|3h}!lcLgE>-^|iO% zO#s(I8zJ*Ox*li!R1P5bGE9x&TWZnf&(>AWgto4#k;?%VNK zn+K2$yDfNT9{E*RehOIZzaC-!GP<^GDroJ!ht{%>u9~8zV%nMfY`ZalhBMGDN;cHJ{uMla zE1bd{)3I;pwkW8oqK;t<0fpoj%T+F8rzWe`#&XJ1%LmIvmDO|498uHA$b>*QBcr$@ zsJAs&OGzd3$5IDdkG*GYHBcFyOALpxAsG!pchJzbC*N5f?9Feb)Nq}mn`b1HtMn@j zP(}pNLy$N8`m<(%{VnFJS2Pl3bn#VGxc>l~Dab$VZy>SE$I;itB+?3p5pd^=w*LU= zwI?;LmQQ+gZU^~dzeZnAKfq1FA5`*i>{ZVW zbFw)90Ev%c55yI&Xmdq7o(Z+#lkEg2wp)4Kg@M6Z9_1E()4t+*rA5 zi=%IcGj=Ubv%ah`K9BvtbVz{{imYvQK{1qf+U>yl7 zvBS704We_T#AWx#k#|DETM$2)Q_ifB?8xscT0EhGzz;yNJ27LMnXT?tPEDTH9UeS? zR#IF;EJ6qx$RTcxjyC0Q$OWxwrg0_2Fq>Gq%F{GZ9c)h_%kEmz)lE|-SXk*CIWeS> z`zkhdq)5hNrUm)#NZ5@B?zQBvbdNE!GoEz;qU8LR)fW#GEt0a+D&55du&X=*;$7QC_`6S2yB#i;m|jNbOub?TU&EX-#*8Zqf3tDZKjJeX=ivA1a&UZ1t7*i z$)MKz-B{yiTGtwUmF{S@i3Z1Uu~wUENxxf!1qm%~VSn8|J6`9QLhCoJw7K0jK2fhd zP!uBibLo2^(bhhSq>g6X)lR1{1G)gyV`40O^FZw{V5zgV8}wBKjci4_ATDe5xIU|4 zl3ZJr_B$1*d7f5T8hP>x0n70Q5^&j#bt`R7=Uu_0;5Yo1{t1f*wO*d1-yNvCPS1cusY;g_E;Rk$pLM_-ACZqqi2n=x#KYS zN&J+&jn5s&%>lu2ZUETfml33o=uetRoBmsm)*X-FR~ZM4B_bE)C*s=H9Ln}rH_G5z z9M=LI*9(F=FFN8p4cIq}JOcE!1U0<;KCM5Zyd}od$=7LWUiv+GAxJX0&i97RAk^=F zmv2RyJGz!uy`(XxI6Y5J>p_9edvazk<(GA|`!_GV%=f*!M%QK|=dfD7I6QW);vJYdpbOc1k2cPE)Q|VbE_SA# z*Lwjr-OkVz>KNS>HZ4m2A;TaIf$skR93?k2vYw6m2a)+MF1CzIcg7td1LAnf(5TJe z<%(QBJRGxKkneULyq0nWdtFy&K5$31|*Wl^E( zdaG<~bklM|t+dpObW&_rewX!BHg7;}%q8!C$OJmut@bKODW$rFTjn3@x&Uwam0O$N z?m#ymvbNnd`6}#qEef}{xW2@U2&$o$oBt%u;K4^6jMFb6yWYzg@x1r5mMWpIh*ncd}R=6^-J$RT3|+nMK3 zyIyKQ3Si4m|Fri8YJc4VuR5d%47G+T9iGadTW8Pn;X80}PDkptaRp?G5Z4 zbp&XD%|kSl^JO})k1*}~uD1ils&H9j#3-b*vw|(NhcJD1Tv^$LnY>qA*zK=HBZt=* z9?0ZvqHyc*{{UC+m3$mJy*rZkxc+2%hAD%LPU$RV^b6AasYrYqt$i z6>~gIb~PMvl~kW-!wrPN#Ccc?&&zMcB)bGrJ9aZOzq#6<(OnAz*kk7`jbZc}pV3(7 z__97uPIdGf1#aYVzlRUvUl;~f9!$H)>;=+O^iak|wlcf>oPT9>OwSvee>9H~gV1h& z1%_!nN#%Qf674+(fk$)v0$VWOsZ6cf!u>*+;h89K{6-mSUf8E;bg(-$fw;C;at$gf zIK+*+fpE;$27_$QJg>=HGZ^U}*G$(N+1Xffi)mrmCr#0&ozDwdQ6p0)5OIz%H8WpA z_#$H@sEVFK$b)ZdY4JGqA9|aqz%cnR**)q;Q`NRIY2F)=t_=j_4BzHfo&k(eVbRFw zXMHvzB5gc#J%q+tn&jAOUCPBlO^H;$7Obky$sFk%W1dD5_S~DK>V`eB#@4t-⋙e&*-uBS99SkD6n-s3p_k5L76gYI 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
  • jZuI-A@Ci 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

    X7}2gZI)j*}hvtZI#ofZE+ShxH9f1xzZQ>QVBzR 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 Fe*q9SJ{14} literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index cd6ff7d6..c23ae0b4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -79,6 +79,15 @@ nav: - 'OpenThread': - 'LwM2M_Client/OpenThread/Adding_device.md' - 'LwM2M_Client/OpenThread/OTBR_with_svetovid.md' + - 'Svetovid': + - 'LwM2M_Client/Svetovid/Intro.md' + - 'LwM2M_Client/Svetovid/Client_Configuration.md' + - 'LwM2M_Client/Svetovid/FSDM.md' + - 'Supported Platforms': + - 'LwM2M_Client/Svetovid/Supported_Platforms/generic.md' + - 'LwM2M_Client/Svetovid/Supported_Platforms/moxa.md' + - 'LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md' + - 'LwM2M_Client/Svetovid/Supported_Platforms/yocto.md' - 'Coiote IoT DM': - 'Introduction': 'Coiote_IoT_DM/introduction.md' - 'Connecting devices': From fa002984b86cd06f7d99ad76c12cb7550e563e28 Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Tue, 26 Mar 2024 10:56:53 +0100 Subject: [PATCH 2/8] Add missing chunks of docs --- .../Svetovid/Client_Configuration.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/LwM2M_Client/Svetovid/Client_Configuration.md b/docs/LwM2M_Client/Svetovid/Client_Configuration.md index a6c9bbea..a240ebce 100644 --- a/docs/LwM2M_Client/Svetovid/Client_Configuration.md +++ b/docs/LwM2M_Client/Svetovid/Client_Configuration.md @@ -29,6 +29,9 @@ when starting a Svetovid binary. Settings not directly related to LwM2M server connections are stored in ``svd.json`` file. Example: +!!! Note + This file can generally be left empty if you are fine with the defaults. + ``` { "device": { @@ -267,6 +270,14 @@ adding an instance to the ``server.json`` file. } ``` +In the ``security.json`` file you may need to change the ``privkey_or_psk_hex`` +with hexlified pre-shared-key of your choice. To convert raw string to +hexlified string, you can use: + +``` +$ echo -n 'your-secret-key' | xxd -p +``` + ### Possible configuration options Specific options directly correspond to LwM2M Security/LwM2M Server Object @@ -316,3 +327,16 @@ Resources. See the LwM2M protocol specification for more details. (boolean) - ``disable_timeout`` - Disable Timeout (seconds) + +### Using a Bootstrap Server + +When using a Bootstrap Server, it may modify the contents of the Security and +Server objects. These changes will **NOT** be written back to ``security.json`` +or ``server.json`` files - instead, they will be persisted into +``/etc/svetovid/persistence/persistence.dat``. Note that this is a binary file +that is not intended for user modification. + +The configuration in ``security.json`` and ``server.json`` will take preference +if the ``persistence.dat`` file doesn't exist, or if either of the JSON files +is newer than the last time Svetovid has been bootstrapped from them. In other +words, if you modify or ``touch`` the JSON files, they shall take preference. From 92d5dca619db657fae7768c7abaa43f929a35604 Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Tue, 26 Mar 2024 11:03:24 +0100 Subject: [PATCH 3/8] Add syntax coloring --- .../Svetovid/Client_Configuration.md | 12 +++---- docs/LwM2M_Client/Svetovid/FSDM.md | 34 +++++++++---------- .../Svetovid/Supported_Platforms/generic.md | 34 +++++++++---------- .../Svetovid/Supported_Platforms/moxa.md | 20 +++++------ .../Svetovid/Supported_Platforms/raspberry.md | 26 +++++++------- .../Svetovid/Supported_Platforms/yocto.md | 10 +++--- 6 files changed, 68 insertions(+), 68 deletions(-) diff --git a/docs/LwM2M_Client/Svetovid/Client_Configuration.md b/docs/LwM2M_Client/Svetovid/Client_Configuration.md index a240ebce..a56c749f 100644 --- a/docs/LwM2M_Client/Svetovid/Client_Configuration.md +++ b/docs/LwM2M_Client/Svetovid/Client_Configuration.md @@ -32,7 +32,7 @@ Settings not directly related to LwM2M server connections are stored in !!! Note This file can generally be left empty if you are fine with the defaults. -``` +```json { "device": { "endpoint_name": "53r14l", @@ -220,7 +220,7 @@ adding an instance to the ``server.json`` file. #### Bootstrap server - **security.json** - ``` + ```json { "2": { "server_uri": "coap:\/\/{{ coiote_server }}:5693", @@ -236,14 +236,14 @@ adding an instance to the ``server.json`` file. ``` - **server.json** - ``` + ```json {} ``` #### Non-bootstrap server with DTLS in Pre-Shared Key mode - **security.json** - ``` + ```json { "2": { "server_uri": "coaps:\/\/{{ coiote_server }}:5684", @@ -259,7 +259,7 @@ adding an instance to the ``server.json`` file. ``` - **server.json** - ``` + ```json { "0": { "ssid": "7", @@ -274,7 +274,7 @@ In the ``security.json`` file you may need to change the ``privkey_or_psk_hex`` with hexlified pre-shared-key of your choice. To convert raw string to hexlified string, you can use: -``` +```sh $ echo -n 'your-secret-key' | xxd -p ``` diff --git a/docs/LwM2M_Client/Svetovid/FSDM.md b/docs/LwM2M_Client/Svetovid/FSDM.md index 50324a37..2d1d204d 100644 --- a/docs/LwM2M_Client/Svetovid/FSDM.md +++ b/docs/LwM2M_Client/Svetovid/FSDM.md @@ -56,7 +56,7 @@ examples. FSDM settings are stored in ``fsdm.json`` file. Example: -``` +```json { "dirs": { "datamodel": "/tmp/datamodel" @@ -71,7 +71,7 @@ FSDM settings are stored in ``fsdm.json`` file. Example: Each Resource is an executable script, which is called as follows: -``` +```sh script OPERATION [ OPTIONS... ] ``` @@ -131,7 +131,7 @@ script OPERATION [ OPTIONS... ] Example: - ``` + ```json { "operations": "RW", "datatype": "opaque", @@ -167,7 +167,7 @@ script OPERATION [ OPTIONS... ] For example: - ``` + ```sh --args 2=foo 1 8=bar ``` @@ -246,7 +246,7 @@ The following exit status codes are handled by Svetovid: ``instances`` script is called as follows: -``` +```sh instances OPERATION [ ID ] ``` @@ -300,7 +300,7 @@ instances OPERATION [ ID ] ``transaction`` script, if present, is called before and after every mutating operation on an LwM2M object, i.e. Write/Create/Delete. -``` +```sh transaction OPERATION ``` @@ -386,7 +386,7 @@ launch in Svetovid temporary directory (by default: ``/tmp/fsdm_local_socket``). User may send JSON containing information about changed state of instances and resources as follows: -``` +```json { "notify": ["/10", "/20", "/9/0/1", "/9/0/2"] } ``` @@ -401,7 +401,7 @@ To send the message through the socket user can use standard tools like `nc` or #### nc -``` +```sh echo '{ "notify": ["/10", "/20", "/9/0/1", "/9/0/2"] }' | nc -NU /tmp/fsdm_local_socket ``` @@ -411,7 +411,7 @@ echo '{ "notify": ["/10", "/20", "/9/0/1", "/9/0/2"] }' | nc -NU /tmp/fsdm_local #### socat -``` +```sh echo '{ "notify": ["/10", "/20", "/9/0/1", "/9/0/2"] }' | socat - UNIX-CONNECT:/tmp/fsdm_local_socket ``` @@ -447,7 +447,7 @@ are 3 kinds of result: ``"details"`` section for ``"OK"`` result is absent: -``` +```sh user@host $ echo '{ "notify": ["/1337"] }' | nc -NU /tmp/fsdm_local_socket { "result": "OK" @@ -457,7 +457,7 @@ user@host $ ``"details"`` for ``"warning"`` result is an array of failure reasons: -``` +```sh user@host $ echo '{ "notify": [":-)", "/1/2/3"] }' | nc -NU /tmp/fsdm_local_socket { "result": "warning", @@ -477,7 +477,7 @@ user@host $ ``"details"`` for the ``"error"`` result is a single diagnostic string: -``` +```sh user@host $ echo abcdefgh | nc -NU /tmp/fsdm_local_socket { "result": "error", @@ -493,7 +493,7 @@ server about a specific resource. Similar to the Notify trigger in **push-mode** the user can pass a JSON to the Unix domain socket to communicate with Svetovid: -``` +```json { "send": ["/10", "/20/0", "/9/0/1", "/9/0/2"] } ``` @@ -523,7 +523,7 @@ used our pre-implemented simple key-value store accessible through Sets or replaces keys to specified values. Example use: -``` +```sh user@host $ echo '{ "store": { "set": { "foo1": "bar", "foo2": "baz" } } }' | nc -NU /tmp/fsdm_local_socket { "result": "OK" @@ -535,7 +535,7 @@ Which sets `foo1` to `bar` and `foo2` to `baz`. #### get -``` +```sh user@host $ echo '{ "store": { "get": ["foo1", "foo2"] } }' | nc -NU /tmp/fsdm_local_socket { "result": "OK", @@ -552,12 +552,12 @@ get more than one key, and if the key is not set, it is not returned. #### delete -```` +```sh user@host $ echo '{ "store": { "delete": ["foo1"] } }' | nc -NU /tmp/fsdm_local_socket { "result": "OK" } user@host $ -```` +``` Deletes the key `foo1` and a key assigned to it from the store. diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md index ecc7e609..b578ae64 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md @@ -112,7 +112,7 @@ following commands (identical or similar commands should work on other distributions from the Debian family; finding packages for other distributions is outside the scope of this documentation): -``` +```sh sudo apt update && sudo apt install \ build-essential \ @@ -128,7 +128,7 @@ sudo apt install \ The preferred way to build Svetovid for the ``generic`` target on the host platform itself is running: -``` +```sh git submodule update --init --recursive env CC=clang CXX=clang++ cmake -DTARGET_PLATFORM=generic . make -j$(nproc) @@ -136,7 +136,7 @@ make -j$(nproc) To additionally build the Debian packages, run: -``` +```sh make package ``` @@ -151,7 +151,7 @@ contains only necessary stuff and is as lightweight as possible. To build the Docker image, run: -``` +```sh git submodule update --init --recursive docker build . -f ./dockerfiles/Dockerfile.clean_svetovid ``` @@ -190,7 +190,7 @@ Additionally in the commercial version only: The preferred method of installing Svetovid is to install some or all of the aformentioned files, depending on your needs, for example: -``` +```sh sudo apt install ./*.deb ``` @@ -198,7 +198,7 @@ If you're running an RPM-based distribution, you can use ``alien`` (installing ``alien`` itself is beyond the scope of this documentation) to convert the ``*.deb`` files into ``*.rpm`` and install those: -``` +```sh sudo alien --to-rpm --scripts *.deb sudo rpm --replacefiles -ivh *.rpm ``` @@ -317,13 +317,13 @@ enable and launch it by default. To manually start the client, use: -``` +```sh sudo systemctl start svetovid ``` To manually stop the client, use: -``` +```sh sudo systemctl stop svetovid ``` @@ -331,14 +331,14 @@ LwM2M client process logs are sent to syslog. To access them, either: - read syslog directly, e.g.: - ``` + ```sh journalctl -fu svetovid ``` - or stop the LwM2M client service as described above, then run it in the foreground: - ``` + ```sh /usr/bin/svetovid ``` @@ -355,42 +355,42 @@ LwM2M Client: - run Svetovid LwM2M Client in background (as a daemon) - ``` + ```sh docker run -d -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' svetovid ``` - stop LwM2M Client by stopping Svetovid container - ``` + ```sh docker stop ``` - resume LwM2M Client by stopping Svetovid container - ``` + ```sh docker start ``` - run container interactively with automatic container deletion after existing - ``` + ```sh docker run -it --rm -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' svetovid ``` - run container with custom Svetovid log level e.g. to troubleshoot - ``` + ```sh docker run -it --rm -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' -e LOG_LEVEL='debug' svetovid ``` - start container without running the Sevetovid LwM2M client (e.g. to prototype your own objects) - ``` + ```sh docker run -it -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' svetovid /bin/bash ``` - run container interactively with OTBR (remember to connect RCP and edit its path if necessary) - ``` + ```sh docker run --rm --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 -p 8081:8081 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged -e DNS64_ONLY=1 -e EP='foo' -e PSK='bar' -e SERVER_HOST='{{ coiote_server }}' openthread/svetovid_with_otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0 ``` diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md index cdaf9100..80508e47 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md @@ -72,7 +72,7 @@ information to connect to the LwM2M Server: 2. Add ``/etc/apt/sources.list.d/moxa.sources.list`` file with the following line: - ``` + ```sh deb http://debian.moxa.com/debian stretch main contrib non-free ``` @@ -84,7 +84,7 @@ information to connect to the LwM2M Server: 5. Install the toolchain and required built-time dependencies: - ``` + ```sh apt install \ cmake \ crossbuild-essential-armhf \ @@ -101,7 +101,7 @@ information to connect to the LwM2M Server: To compile Svetovid for Moxa industrial computers, run: -``` +```sh git submodule update --init --recursive cmake \ -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain/arm-linux-gnueabihf.cmake \ @@ -133,7 +133,7 @@ It is not installed by default. You can install these dependencies by running: -``` +```sh sudo apt-get update sudo apt-get install libmodbus5 python3 ``` @@ -166,7 +166,7 @@ You can put those files on the industrial computer using any method available, e.g. using a USB drive, or by copying them using ``scp`` (requires SSH to be enabled on the device): -``` +```sh scp *.deb {Moxa_IP_ADDRESS}:/tmp/ ``` @@ -174,7 +174,7 @@ The preferred method of installing Svetovid is to install some or all of the aformentioned files, depending on your needs, for example (on the Moxa device terminal): -``` +```sh sudo apt install /tmp/*.deb ``` @@ -243,13 +243,13 @@ enable and launch it by default. To manually start the client, use: -``` +```sh sudo systemctl start svetovid ``` To manually stop the client, use: -``` +```sh sudo systemctl stop svetovid ``` @@ -257,14 +257,14 @@ LwM2M client process logs are sent to syslog. To access them, either: - read syslog directly, e.g.: - ``` + ```sh journalctl -fu svetovid ``` - or stop the LwM2M client service as described above, then run it in foreground: - ``` + ```sh /usr/bin/svetovid ``` diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md index 2189eeb6..c79649d4 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md @@ -94,7 +94,7 @@ required dependencies by running the following commands (identical or similar commands should work on other distributions from the Debian family; finding packages for other distributions is outside the scope of this documentation): -``` +```sh sudo apt update && sudo apt install \ build-essential \ @@ -110,7 +110,7 @@ sudo apt install \ The preferred way to build Svetovid for the ``raspberry`` target on the Raspberry Pi itself is running: -``` +```sh git submodule update --init --recursive env CC=clang CXX=clang++ cmake \ -DCMAKE_BUILD_TYPE=MinSizeRel \ @@ -123,7 +123,7 @@ The preferred compiler is Clang, but Svetovid will compile using GCC as well. To additionally build the Debian packages, run: -``` +```sh make package ``` @@ -146,7 +146,7 @@ To build Svetovid for the Raspberry Pi on another machine, you will need: Once in the Debian build environment, you can install all the required dependencies by running the following commands: -``` +```sh sudo apt update && sudo apt install \ cmake \ @@ -161,7 +161,7 @@ sudo apt install \ To cross-compile Svetovid for the Raspberry Pi, run: -``` +```sh git submodule update --init --recursive cmake \ -DCMAKE_BUILD_TYPE=MinSizeRel \ @@ -220,14 +220,14 @@ You can put those files on a Raspberry Pi using any method available, e.g. using a USB drive, or by copying them using ``scp`` (requires SSH to be enabled on the Pi): -``` +```sh scp *.deb {Pi_IP_ADDRESS}:/tmp/ ``` The preferred method of installing Svetovid is to install some or all of the aformentioned files, depending on your needs, for example (on the Pi terminal): -``` +```sh sudo apt install /tmp/*.deb ``` @@ -297,13 +297,13 @@ enable and launch it by default. To manually start the client, use: -``` +```sh sudo systemctl start svetovid ``` To manually stop the client, use: -``` +```sh sudo systemctl stop svetovid ``` @@ -311,14 +311,14 @@ LwM2M client process logs are sent to syslog. To access them, either: - read syslog directly, e.g.: - ``` + ```sh journalctl -fu svetovid ``` - or stop the LwM2M client service as described above, then run it in foreground: - ``` + ```sh /usr/bin/svetovid ``` @@ -355,7 +355,7 @@ Configuration options: Example configuration file (`ipso_light.json`): -``` +```json { "1": { "data_pin": "20", @@ -379,7 +379,7 @@ Configuration options: Example configuration file (`ipso_pushbutton.json`): -``` +```json { "1": { "data_pin": "19" diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md index c22505cb..7ded0b8f 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md @@ -82,7 +82,7 @@ To install Svetovid on an existing device using RPM, copy the main RPM (or IPK) file onto the device using any method available (e.g. using a USB drive or ``scp``), and run (in case of RPM): -``` +```sh rpm -ivh svetovid-*.rpm ``` @@ -148,13 +148,13 @@ enabled by default. To manually start the client, use: -``` +```sh service svetovid start ``` To manually stop the client, use: -``` +```sh service svetovid stop ``` @@ -162,13 +162,13 @@ LwM2M client process logs are sent to syslog. To access them, either: - read syslog directly, e.g.: - ``` + ```sh tail -f /var/log/messages ``` - or stop the LwM2M client service as described above, then run it in the foreground: - ``` + ```sh /usr/bin/svetovid ``` From 60ea409479d23cd1127daef0c88095414f6ca63a Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Tue, 26 Mar 2024 11:26:23 +0100 Subject: [PATCH 4/8] Add missing chunks of docs to FSDM docs --- docs/LwM2M_Client/Svetovid/FSDM.md | 53 ++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/docs/LwM2M_Client/Svetovid/FSDM.md b/docs/LwM2M_Client/Svetovid/FSDM.md index 2d1d204d..99c9e06f 100644 --- a/docs/LwM2M_Client/Svetovid/FSDM.md +++ b/docs/LwM2M_Client/Svetovid/FSDM.md @@ -40,6 +40,59 @@ Other remarks: - "Resource"-level files/directories with non-numeric names. +- Every LwM2M operation is mapped to execution of one or more scripts located + under the ``OBJECT_ID/`` directory. Examples: + + - LwM2M Read on some ``/Object ID/Instance ID/Resource ID`` will be + transformed into: + + - getting the list of instances from ``Object ID/instances`` script to + verify if the targeted instance exists, + + - calling the ``Object ID/Resource ID`` script to read the value of the + resource for that instance (the Instance ID is passed to + ``Resource ID`` script as parameter). + + - LwM2M Read on some ``/Object ID/Instance ID`` will be transformed into: + + - getting the list of instances from ``Object ID/instances`` script to + enumerate instance to be read, + + - calling resource scripts (as above), but for every present instance. + + - LwM2M Delete is transformed into: + + - calls to ``instances`` script to delete instances. + + - LwM2M Observe is transformed into: + + - periodical LwM2M Reads to see if resource values changed. It is + default Pull-mode mechanism. You can control the frequency of + reads/notifications by ``pmin`` and ``pmax`` LwM2M Attributes. + + !!! Note + Apart of Pull-mode, there is Push-mode called "external notify". + When it is enebled then it is the user responsibility to notify + Svetovid about the changes in FSDM (more in section + [external notify](#fsdm-external-notify-trigger)). + +## Input and output + +Resource scripts obtain necessary information either from parameters passed to +them or from the standard input. For example, the LwM2M Write on a Resource +containing payload "example", will execute the corresponding Resource script, +passing the "example" string on its standard input. + +Resource scripts return values to Svetovid via standard output when they're used +to extract the value they represent. Apart from that, the scripts' exit codes +are translated to CoAP error responses. In the Python implementations, any +errors are communicated by exceptions, which are in turn translated to error +codes by the runtime in a way transparent to the user. + +LwM2M Execute arguments are passed as arguments to the script body. In Python +implementations, execute arguments are passed as a parameter to ``execute()`` +method. + ## FSDM script stub generator FSDM plugin comes with a helper tool for generating stubs of required scripts. From d31a295dd1fd9366a1353d0c9e0f60059be0a0bf Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Wed, 3 Apr 2024 11:20:54 +0200 Subject: [PATCH 5/8] Remove unnecessary sh syntax from code blocks --- docs/LwM2M_Client/Svetovid/FSDM.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/LwM2M_Client/Svetovid/FSDM.md b/docs/LwM2M_Client/Svetovid/FSDM.md index 99c9e06f..81aaca56 100644 --- a/docs/LwM2M_Client/Svetovid/FSDM.md +++ b/docs/LwM2M_Client/Svetovid/FSDM.md @@ -124,7 +124,7 @@ FSDM settings are stored in ``fsdm.json`` file. Example: Each Resource is an executable script, which is called as follows: -```sh +``` script OPERATION [ OPTIONS... ] ``` @@ -220,7 +220,7 @@ script OPERATION [ OPTIONS... ] For example: - ```sh + ``` --args 2=foo 1 8=bar ``` @@ -299,7 +299,7 @@ The following exit status codes are handled by Svetovid: ``instances`` script is called as follows: -```sh +``` instances OPERATION [ ID ] ``` @@ -353,7 +353,7 @@ instances OPERATION [ ID ] ``transaction`` script, if present, is called before and after every mutating operation on an LwM2M object, i.e. Write/Create/Delete. -```sh +``` transaction OPERATION ``` From b75c860cb496a03679d43f13cd76c62bc0b94efd Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Tue, 9 Apr 2024 10:23:12 +0200 Subject: [PATCH 6/8] Add missing doc snippets --- .../Svetovid/Client_Configuration.md | 6 ++++++ docs/LwM2M_Client/Svetovid/FSDM.md | 19 +++++++++++-------- .../Svetovid/Supported_Platforms/generic.md | 10 ++++++---- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/docs/LwM2M_Client/Svetovid/Client_Configuration.md b/docs/LwM2M_Client/Svetovid/Client_Configuration.md index a56c749f..2a221066 100644 --- a/docs/LwM2M_Client/Svetovid/Client_Configuration.md +++ b/docs/LwM2M_Client/Svetovid/Client_Configuration.md @@ -211,6 +211,12 @@ Settings not directly related to LwM2M server connections are stored in ## Connection settings +!!! Note + The default configuration is designed to let you easily connect to our + [{{ coiote_long_name }}](https://www.avsystem.com/products/coiote-iot-device-management-platform/). + Please register at [{{ coiote_server }}]({{ coiote_site_link }}) to get + access. + To configure an LwM2M Bootstrap Server, an instance has to be created in ``security.json`` file. A non-Bootstrap LwM2M Server additionally requires adding an instance to the ``server.json`` file. diff --git a/docs/LwM2M_Client/Svetovid/FSDM.md b/docs/LwM2M_Client/Svetovid/FSDM.md index 81aaca56..49700bc4 100644 --- a/docs/LwM2M_Client/Svetovid/FSDM.md +++ b/docs/LwM2M_Client/Svetovid/FSDM.md @@ -4,7 +4,7 @@ FSDM (File System Data Model) is a framework that allows implementing LwM2M objects using Python or Bash scripts. It is provided as a plugin for Svetovid, available in the commercial version and in certain binary distribution. -## FSDM plugin +## Directory mapping When enabled, this plugin maps a specific directory to LwM2M Objects, Instances and Resources. Default mapped directory is ``/etc/svetovid/dm`` and it can be @@ -101,8 +101,8 @@ examples. !!! Note ``svetovid-fsdmtool`` is distributed as a separate installation package (e.g - ``avsystem_svetovid-21.12-raspberry-Linux-fsdmtool.deb`` in case of the - Raspberry Pi platform), so please make sure that it is installed before + ``avsystem_svetovid-24.04-raspberry-Linux-fsdmtool.deb`` in case of + the Raspberry Pi platform), so please make sure that it is installed before starting. ## FSDM config file @@ -396,12 +396,12 @@ transaction OPERATION There are two ways Svetovid can be notified about changes occurring in the File System Data Model. -1. **Pull-mode:** The default mode. Svetovid regularly polls ``instances list`` - and ``resource read`` operations to check if some changes in their outputs - have appeared. +1. **Pull-mode** (external notify): The default mode. Svetovid regularly polls + ``instances list`` and ``resource read`` operations to check if some changes + in their outputs have appeared. -2. **Push-mode:** The mode in which it is the user responsibility to notify - Svetovid about the following changes in FSDM: +2. **Push-mode** (external notify): The mode in which it is the user + responsibility to notify Svetovid about the following changes in FSDM: - list of valid Instance IDs for an object (returned value of ``instances list`` operation) has changed for **other** reason than @@ -449,6 +449,9 @@ In example above we want to inform that: - values of resources ``/9/0/1`` and ``/9/0/2`` have changed +If any of these resources is indeed observed, Svetovid will then invoke the Read +operation on the appropriate FSDM script to query the actual resource value. + To send the message through the socket user can use standard tools like `nc` or `socat`. diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md index b578ae64..23dce695 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md @@ -188,7 +188,7 @@ Additionally in the commercial version only: library used by the shell scripts generated by ``svetovid-fsdmtool`` The preferred method of installing Svetovid is to install some or all of the -aformentioned files, depending on your needs, for example: +aforementioned files, depending on your needs, for example: ```sh sudo apt install ./*.deb @@ -243,7 +243,7 @@ Assuming that all the packages mentioned above are installed: - ``/usr/bin/svetovid`` - main LwM2M client executable - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the - ``fsdmtool`` executable + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) executable - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 2.7 @@ -253,7 +253,8 @@ Assuming that all the packages mentioned above are installed: - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin + - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support + plugin - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid @@ -263,7 +264,8 @@ Assuming that all the packages mentioned above are installed: - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) - - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules + - ``/usr/local/share/svetovid/bin/fsdm/`` - + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) support modules - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for Python From a281eeaeae27c3d1491f8eb8801a46c3bad04544 Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Tue, 9 Apr 2024 13:51:35 +0200 Subject: [PATCH 7/8] Remove superfluous newlines, fix formatting, add svetovid macro --- .../Svetovid/Client_Configuration.md | 42 ---------- docs/LwM2M_Client/Svetovid/FSDM.md | 76 +------------------ .../Svetovid/Supported_Platforms/generic.md | 45 ++--------- .../Svetovid/Supported_Platforms/moxa.md | 57 +++----------- .../Svetovid/Supported_Platforms/raspberry.md | 39 +--------- .../Svetovid/Supported_Platforms/yocto.md | 34 +-------- templates/default.yaml | 1 + 7 files changed, 29 insertions(+), 265 deletions(-) diff --git a/docs/LwM2M_Client/Svetovid/Client_Configuration.md b/docs/LwM2M_Client/Svetovid/Client_Configuration.md index 2a221066..76693760 100644 --- a/docs/LwM2M_Client/Svetovid/Client_Configuration.md +++ b/docs/LwM2M_Client/Svetovid/Client_Configuration.md @@ -59,75 +59,61 @@ Settings not directly related to LwM2M server connections are stored in **Default value:** automatically generated ``urn:dev:os:MANUFACTURER_OUI-SERIAL_NUMBER``, where the method of getting ``MANUFACTURER_OUI`` and ``SERIAL_NUMBER`` is specific to the platform used. - - ``device.udp_listen_port`` - force binding to a specific UDP port. If set to a non-zero value, all UDP sockets created by the LwM2M client will be bound to the configured port.
    **Default value:** random ephemeral ports will be used. - - ``device.server_initiated_bootstrap`` - enables/disables LwM2M Server initiated bootstrap support. If set to true, connection to the Bootstrap Server will be closed immediately after making a successful connection to any regular LwM2M Server and only opened again if (re)connection to a regular server is rejected.
    **Default value:** ``0``. - - ``device.core_persistence`` - enables/disables Anjay core persistence, which allows Svetovid to keep information about DTLS sessions, active LwM2M server registrations and active resource observations in non-volatile storage. Note that this information is only persisted after a graceful shutdown of Svetovid.
    **Default value:** ``0``. - - ``device.rebuild_client_cert_chain`` - enables/disables rebuilding client certificate chain based on the trust store (either the initial one or the one provisioned via EST) for inclusion in the (D)TLS handshake when using Certificate mode. If disabled, only the leaf client certificate will be sent in the handshake.
    **Default value:** ``0``. - - ``device.est_reenroll_config.enable`` - enables/disables usage of the EST Simple Re-enroll (``/est/sren``) operation.
    **Default value:** ``1``. - - ``device.est_reenroll_config.nominal_usage`` - nominal period for which a certificate provisioned by the EST server is used, expressed as part of the certificate validity period (value in the [0.0, 1.0] range).
    **Default value:** ``0.9``. - - ``device.est_reenroll_config.max_margin_s`` - limit, in seconds, on the margin between re-enrollment request and the certificate expiration time. In other words, it is guaranteed that re-enroll request will not be sent earlier than ``max_margin`` before the certificate expiration time. A negative value may be set to disable the limit.
    **Default value:** ``2592000`` (30 days). - - ``device.est_cacerts_policy`` - Policy of when to perform the ``/est/crts`` request and which servers will use the trust store updated through it.
    Possible values are: - - ``for_est_security_and_bootstrap`` (**default**) - perform the ``/est/crts`` request if there are servers configured to use the EST security mode, and use the updated trust store for those servers, as well as for the Bootstrap Server if it's configured to use either EST or Certificate security mode - - ``for_est_security`` - perform the ``/est/crts`` request if there are servers configured to use the EST security mode, and use the updated trust store for those servers only; the Bootstrap Server will use the updated trust store only if it is itself configured to use the EST security mode - - ``if_est_configured`` - perform the ``/est/crts`` request if there are servers configured to use the EST security mode, and use the updated trust store for all servers configured to use either EST or Certificate security mode - - ``always`` - perform the ``/est/crts`` request if there are servers configured to use either EST or Certificate security mode, and use the updated trust store for all such servers - - ``disabled`` - never perform the ``/est/crts`` request - - ``logging.default_log_level`` - log level applied to messages in case no more specific log level exists.
    Acceptable values: @@ -142,23 +128,19 @@ Settings not directly related to LwM2M server connections are stored in - ``logging.log_level.MODULE_NAME`` - log level applied to messages originating from ``MODULE_NAME`` only. Can be used to selectively control logging levels. - - ``lwm2m_version_config.min`` and ``lwm2m_version_config.max`` - minimum and maximum version of the LwM2M protocol that the client will attempt to use. Only ``1.0`` and ``1.1`` are currently supported versions, and both are used by default. The client will always attempt to register using the highest configured version and fall back to older versions if necessary. - - ``in_buffer_size_b`` - size (in bytes) of the buffer used for storing incoming LwM2M messages. The client will not be able to handle packets bigger than this size.
    **Default value:** 4096. - - ``out_buffer_size_b`` - size (in bytes) of the buffer used for storing outgoing LwM2M messages. In cases where the message sent would exceed this size, the client will attempt a BLOCK-wise CoAP transfer instead.
    **Default value:** 4096. - - ``msg_cache_size_b`` - size (in bytes) of the buffer used for storing outgoing LwM2M messages. When the client receives a duplicate request while an already-prepared response is in the cache, it is used instead of generating a @@ -169,41 +151,33 @@ Settings not directly related to LwM2M server connections are stored in will handle all received retransmitted requests as if they were new ones, which may result in performing non-idempotent operations multiple times.
    **Default value:** 65536. - - ``retry_after_s`` - enables/disables reconnection policy which after specified period of time (in seconds) after all server connections failed performs a reconnection attempt. A value of 0 disables reconnection attempts, and causes the client to shut down if it is unable to establish any connection.
    **Default value:** 30. - - ``dirs.persistence`` - path to the persistence directory. That path MUST NOT get cleared on FW update.
    **Default value:** `SVETOVID_PERSISTENCE_DIR` set during compile time. - - ``dirs.volatile_persistence`` - path to a volatile persistence directory. That path MUST be cleared on FW update, but persist across reboots.
    **Default value:** `SVETOVID_VOLATILE_PERSISTENCE_DIR` set during compile time. - - ``dirs.plugins`` - path to Svetovid's plugin installation directory.
    **Default value:** `SVETOVID_PLUGIN_DIR` set during compile time. - - ``dirs.temp`` - path to a directory used for temporary file storage.
    **Default value:** `SVETOVID_TEMP_DIR` set during compile time. - - ``dirs.firmware_download_dir`` - path where PULL FW downloads will be kept. It MAY be cleared on FW update, but SHOULD persist across reboots in order to support firmware download resumption.
    **Default value:** `SVETOVID_FIRMWARE_DOWNLOAD_DIR` set during compile time. - - ``dirs.pkix_trust_store`` - path to file or directory containing certificates that shall be used as the initial trust store for Certificate Usage modes that demand PKIX verification.
    **Default value:** `SVETOVID_PKIX_TRUST_STORE` set during compile time, which is the global system trust store (``/etc/ssl/certs``) on platforms that support it, none otherwise. - - ``dirs.pkix_trust_store_crls`` - path to file containing CRLs that shall be used in conjunction with ``pkix_trust_store`` as the initial trust store for Certificate Usage modes that demand PKIX verification.
    @@ -290,14 +264,10 @@ Specific options directly correspond to LwM2M Security/LwM2M Server Object Resources. See the LwM2M protocol specification for more details. - ``security.json`` options: - - ``server_uri`` - LwM2M Server URI ("coap://" or "coaps://" URI, depending on the ``security_mode`` value), - - ``is_bootstrap`` - Bootstrap Server (boolean) - - ``security_mode`` - Security Mode (one of: "psk", "nosec", "cert") - - ``pubkey_or_identity_hex`` - Public Key or Identity (hex string). !!! Note @@ -306,32 +276,20 @@ Resources. See the LwM2M protocol specification for more details. "identity", this value should be set to "6964656e74697479". - ``server_pubkey_hex`` - Server Public Key (hex string; see NOTE above) - - ``privkey_or_psk_hex`` - Secret Key (hex string; see NOTE above) - - ``ssid`` - Short Server ID (1-65534) - - ``holdoff_s`` - Client Hold Off Time (seconds) - - ``bs_timeout_s`` - Bootstrap-Server Account Timeout (seconds) - - ``server.json`` options: - - ``ssid`` - Short Server ID (1-65534, must match ``ssid`` of some Security Object Instance) - - ``lifetime`` - Lifetime (seconds) - - ``default_min_period`` - Default Minimum Period (seconds) - - ``default_max_period`` - Default Maximum Period (seconds) - - ``binding`` - Binding (one of: "U", "UQ") - - ``notification_storing`` - Notification Storing When Disabled or Offline (boolean) - - ``disable_timeout`` - Disable Timeout (seconds) ### Using a Bootstrap Server diff --git a/docs/LwM2M_Client/Svetovid/FSDM.md b/docs/LwM2M_Client/Svetovid/FSDM.md index 49700bc4..f3670fb5 100644 --- a/docs/LwM2M_Client/Svetovid/FSDM.md +++ b/docs/LwM2M_Client/Svetovid/FSDM.md @@ -11,21 +11,16 @@ and Resources. Default mapped directory is ``/etc/svetovid/dm`` and it can be changed in ``fsdm.json`` file. It is expected to have the following structure: - ``/etc/svetovid/dm/`` (default) - - ``$OBJECT_ID/`` - directory representing an LwM2M Object with given ID. - - ``resources/`` - directory containing scripts used to access individual Resources. - - set of executable scripts representing individual Resources. Names of these files MUST exactly correspond to their Resource IDs.
    See [FSDM resources](#fsdm-resources) for details. - - ``instances`` - (optional) executable script used for managing object instances.
    See [FSDM instances script](#fsdm-instances-script) for details. - - ``transaction`` - (optional) executable script used to handle transactional processing of object resources.
    See [FSDM transaction script](#fsdm-transaction-script) for details. @@ -33,39 +28,25 @@ changed in ``fsdm.json`` file. It is expected to have the following structure: Other remarks: - Any unexpected files contained within the directory are ignored, including: - - "root"-level directories with non-numeric names, - - any files present on the "Object" level, - - "Resource"-level files/directories with non-numeric names. - - Every LwM2M operation is mapped to execution of one or more scripts located under the ``OBJECT_ID/`` directory. Examples: - - LwM2M Read on some ``/Object ID/Instance ID/Resource ID`` will be transformed into: - - getting the list of instances from ``Object ID/instances`` script to verify if the targeted instance exists, - - calling the ``Object ID/Resource ID`` script to read the value of the resource for that instance (the Instance ID is passed to ``Resource ID`` script as parameter). - - LwM2M Read on some ``/Object ID/Instance ID`` will be transformed into: - - getting the list of instances from ``Object ID/instances`` script to enumerate instance to be read, - - calling resource scripts (as above), but for every present instance. - - LwM2M Delete is transformed into: - - calls to ``instances`` script to delete instances. - - LwM2M Observe is transformed into: - - periodical LwM2M Reads to see if resource values changed. It is default Pull-mode mechanism. You can control the frequency of reads/notifications by ``pmin`` and ``pmax`` LwM2M Attributes. @@ -150,7 +131,6 @@ script OPERATION [ OPTIONS... ] - ``execute`` - represents LwM2M Execute operation. Arguments, if any, can be passed using the ``--args`` option. - - ``reset`` - resets Resource to its original state - sets it to a default value or deletes it. In case of a Multiple Resource, it shall remove all its Multiple Resource Instances - right after ``reset``, the following ``list`` @@ -163,21 +143,14 @@ script OPERATION [ OPTIONS... ] - ``list`` - only applicable to Multiple Resources. The script should print a whitespace-separated list of valid Resource Instance IDs for this resource. - - ``describe`` - returns Resource metadata in JSON format, including: - - ``"operations"``: a combination of ``R``/``W``/``E`` - - ``"datatype"``: see [resource data types](#resource-data-types) section below - - ``"multiple"``: (optional) boolean flag indicating that the script represents a Multiple Resource. If omitted, it is assumed to be false - - ``"name"``: (optional) human-readable resource name - - ``"description"``: (optional) human-readable description of the resource - - ``"external-notify"``: (optional) enables external notification mechanism, for this resource. See also [external notify](#fsdm-external-notify-trigger) section @@ -199,27 +172,22 @@ script OPERATION [ OPTIONS... ] - ``--instance ID`` - ID of the LwM2M Instance being referred to. May not be present if a specific Object Instance is not relevant, e.g. when querying resource metadata. - - ``--resource-instance ID`` - ID of the LwM2M Multiple Resource Instance being referred to. May not be present if the operation targets a Single Resource or the Multiple Resource as a whole. - - ``--args ARGUMENTS...`` - Execute operation arguments. Only present if ``OPERATION`` is ``execute``. Always passed as the last option, all arguments that follow ``--args`` are to be interpreted as arguments to Execute operation. ``--args`` may be omitted if the list of Execute arguments is empty.
    Each ``ARGUMENT`` can be either: - - a single digit, - - ``N=CONTENT`` string, where N is a single digit, and CONTENT is a string consisting of any characters allowed within the Execute argument by the LwM2M spec (space is not allowed). Badly formatted arguments from server request won't be ever passed to the script. For example: - ``` --args 2=foo 1 8=bar ``` @@ -230,12 +198,9 @@ Multiple Resources are still implemented as single scripts. LwM2M requests map to script operations as follows: - LwM2M Read: ``list`` + ``read`` on each Multiple Resource Instance, - - LwM2M Write (replace): ``delete`` + ``write`` on each Multiple Resource Instance, - - LwM2M Write (update): ``write`` on each Multiple Resource Instance, - - LwM2M Execute: always fails with Method Not Allowed. Never calls the script. ### Resource data types @@ -245,17 +210,11 @@ Each resource script MUST support the ``describe`` operation, which MUST return accurate resource metadata. - `string`: UTF-8 encoded plain text - - `integer`: stringified integer - - `float`: stringified double-precision floating-point value - - `boolean`: stringified integer `0` or `1` - - `opaque`: opaque binary data - - `time`: seconds since Unix epoch; same representation as integer - - `objlnk`: ``OID:IID`` string, where `OID` and `IID` are valid stringified Object/Instance IDs @@ -270,25 +229,17 @@ accurate resource metadata. The following exit status codes are handled by Svetovid: - ``0`` indicates successful execution. - - ``100`` - ``131`` - cause Svetovid to respond to the LwM2M server with a CoAP error from the ``4.xx`` range, e.g.: - - ``100`` - *4.00 Bad Request* - - ``104`` - *4.04 Not Found* - - ``115`` - *4.15 Unsupported Content-Format* - - etc. - ``200`` - ``231`` - cause Svetovid to respond to the LwM2M server with a CoAP error from the ``5.xx`` range, e.g.: - - ``200`` - *5.00 Internal Server Error* - - ``201`` - *5.01 Not Implemented* - - etc. !!! Note @@ -307,21 +258,17 @@ instances OPERATION [ ID ] - ``list`` - the script should print a whitespace-separated list of valid Instance IDs for its object. - - ``create ID`` - the script should create an LwM2M Object Instance when called. This operation takes an ``ID`` argument, which is an integer in the [0; 65534] range that MUST be used as the ID of created instance. The script MUST follow [script exit status](#script-exit-status) to return operation status (success/failure). - - After a successful ``create``, the newly created Instance ID MUST become visible in the output of ``list`` operation. - - An attempt to ``create`` an Instance ID that is already present MUST fail with a "4.00 Bad Request" code. Failure caused by any other reason MUST result in an exit status representing a CoAP code from the 5.xx range (see [script exit status](#script-exit-status)). - - The ``create`` operation MUST initialize all resources for the newly created instance to their default values. If a particular resource has no default value, it MUST be left undefined. The ``create`` operation will be @@ -332,12 +279,9 @@ instances OPERATION [ ID ] See [transaction script](#fsdm-transaction-script) for details. - ``delete ID`` - the script should delete an instance ``ID`` if one exists. - - ``describe`` - returns Object metadata in JSON format, including: - - ``version`` - (optional) object version number, as described in [LwM2M Core TS section 7.2](https://www.openmobilealliance.org/release/LightweightM2M/V1_1_1-20190617-A/HTML-Version/OMA-TS-LightweightM2M_Core-V1_1_1-20190617-A.html#7-2-0-72-Object-Versioning) - - ``"external-notify"`` - (optional) enables external notification mechanism for the set of instances of this object.
    See also [external-notify](#fsdm-external-notify-trigger). @@ -363,13 +307,11 @@ transaction OPERATION for future rollback.
    The exit status of this script MUST follow the [script exit status](#script-exit-status) rules. - - ``validate`` - called after the mutating LwM2M request. This operation checks if the object is in a consistent state after all modifications. It MUST also make sure that ``commit`` will be successful (see ``commit`` operation description for more details). If ``validate`` fails, ``rollback`` is performed. - - ``commit`` - called after all atomic operations the LwM2M request is split into succeeded, to make sure they are actually applied. @@ -396,17 +338,14 @@ transaction OPERATION There are two ways Svetovid can be notified about changes occurring in the File System Data Model. -1. **Pull-mode** (external notify): The default mode. Svetovid regularly polls - ``instances list`` and ``resource read`` operations to check if some changes - in their outputs have appeared. - +1. **Pull-mode**: The default mode. Svetovid regularly polls ``instances list`` + and ``resource read`` operations to check if some changes in their outputs + have appeared. 2. **Push-mode** (external notify): The mode in which it is the user responsibility to notify Svetovid about the following changes in FSDM: - - list of valid Instance IDs for an object (returned value of ``instances list`` operation) has changed for **other** reason than calling ``instances create`` or ``instances delete`` by Svetovid - - readable resource has changed its value for **other** reason than calling ``write``, ``reset`` or ``clear`` by Svetovid @@ -418,11 +357,9 @@ explicitly enable that mode in the resource or instances scripts: - For `python` based scripts generated by ``fsdmtool``, for readable entities, the class constant ``EXTERNAL_NOTIFY`` should be set to ``True`` (default value is ``False``). - - For `sh` based scripts generated by ``fsdmtool``, for readable entities, ``RESOURCE_EXTERNAL_NOTIFY`` and ``INSTANCES_EXTERNAL_NOTIFY`` should be set to ``"true"`` (default value is ``"false"``). - - For scripts manually crafted, one should make sure that the ``describe`` operation of the entity also returns ``"external-notify": true``. @@ -446,7 +383,6 @@ resources as follows: In example above we want to inform that: - instances lists of objects 10 and 20 have changed - - values of resources ``/9/0/1`` and ``/9/0/2`` have changed If any of these resources is indeed observed, Svetovid will then invoke the Read @@ -477,9 +413,7 @@ User can use standard socket API of his preferred programming language. These are important things to remember about user-side socket: - socket domain should be `AF_UNIX` / `AF_LOCAL` - - socket type should be `SOCK_STREAM` - - after sending the whole message the socket should be shut down for further transmissions (`SHUT_WR` flag) @@ -489,12 +423,10 @@ As a result of triggering a notify a response is sent through the socket. There are 3 kinds of result: 1. ``{"result": "OK"}``: There were no errors during triggering a notify. - 2. ``{"result": "warning", "details": [ ... ] }``: In this case some of entries could not be processed and the reasons for each entry are indicated in `details` section. Entries omitted in `details` section were perfectly valid and there is no need to try notifying them again. - 3. ``{"result": "error", "details": "..." }``: There was some serious problem with execution of user request (e.g. parsing error). In this case **all entries** should be considered as **not processed**. @@ -556,9 +488,7 @@ with Svetovid: In this example we will send to the LwM2M server: - all values of resources in all of the instances of object 10 - - all values of resources in ``/20/0`` - - values of resources ``/9/0/1`` and ``/9/0/2`` ## FSDM key-value store for keeping volatile object state diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md index 23dce695..9f7b4302 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md @@ -21,7 +21,7 @@ the Thread radio. More information about the OpenThread Border Router variant can be found in AVSystem IoT Developer Zone article: [OpenThread Border Router configurable -through LwM2M server](/LwM2M_Client/OpenThread/OTBR_with_svetovid). +through LwM2M server]({{ svetovid_devzone_doc_prefix }}/LwM2M_Client/OpenThread/OTBR_with_svetovid). !!! Note Svetovid **only supports operating systems based on the Linux kernel**. If @@ -96,14 +96,10 @@ To do a standalone build of Svetovid, you will need the following prerequisites: - Clang (or GCC; Clang is recommended) with C++ support and all the essential build dependencies - - CMake 3.6.3 or newer - - Git - - Zlib (optional, you can use ``-DWITH_AVS_HTTP_ZLIB=OFF`` CMake option to remove this dependency, at the cost of no support for HTTP compression) - - Boost C++ Libraries (optional, you can use ``-DWITH_SYSTEM_BOOST=OFF`` CMake option to download Boost as part of the build process instead) @@ -175,15 +171,12 @@ Additionally in the commercial version only: - **svetovid-plugin-fsdm_{version}_{architecture}.deb** - dynamically loadable library that enables the FSDM functionality in Svetovid - - **avsystem_svetovid-{version}-Linux-fsdmtool.deb** - [fsdmtool](../FSDM.md#fsdm-script-stub-generator) script, that allows creating stubs of FSDM scripts from XML object definitions and/or downloading them from the LwM2M Object Registry - - **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-python.deb** - runtime library used by the Python scripts generated by ``svetovid-fsdmtool`` - - **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-sh.deb** - runtime library used by the shell scripts generated by ``svetovid-fsdmtool`` @@ -214,10 +207,8 @@ will assume that the image has been tagged as just ``svetovid``. Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/`` - - ``/etc/svetovid/config/`` - configuration files, see [Client Configuration](../Client_Configuration.md) - - ``/etc/svetovid/dm/`` - default directory for FSDM-based object implementations @@ -228,48 +219,33 @@ Assuming that all the packages mentioned above are installed: of the Device (/3) object. - ``/etc/svetovid/persistence/`` - data persisted across firmware updates - - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates - ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM plugin - - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional communication between the FSDM scripts and the Svetovid binary - - ``/usr/`` - - ``/usr/bin/svetovid`` - main LwM2M client executable - - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 3 - - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support plugin - - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid - - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities - - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) - - ``/usr/local/share/svetovid/bin/fsdm/`` - [fsdmtool](../FSDM.md#fsdm-script-stub-generator) support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell scripts @@ -280,33 +256,26 @@ Assuming that all the packages mentioned above are installed: LwM2M configuration (endpoint name, DTLS PSK identity and key, server hostname) with the use of ENV values while starting the container (see the [Docker builds](#docker-builds) section) - - - The variant with OTBR support additionally contains - ``/etc/svetovid/svetovid_start_otbr.sh`` and uses that as the entry point. - That script launches both the OTBR and Svetovid startup scripts - concurrently. - + - The variant with OTBR support additionally contains + ``/etc/svetovid/svetovid_start_otbr.sh`` and uses that as the entry point. + That script launches both the OTBR and Svetovid startup scripts + concurrently. - The ``/etc/svetovid/config/`` directory contains files copied from the ``dockerfiles/docker-init-files/config/`` subdirectory of the source repository; this is required for proper handling of startup with configuration based on environment variables. - - The ``/etc/svetovid/dm/`` directory contains files copied from the ``dockerfiles/docker-init-files/dm/`` subdirectory of the source repository; that contains an alternative implementation of the Device (/3) object. - - - The variant with OTBR supports also includes implementations of the objects - related to OpenThread. - + - The variant with OTBR supports also includes implementations of the objects + related to OpenThread. - ``/var/cache/svetovid/`` - in the variant with OTBR support, contains data related to the OTBR state, cached to limit the number of accesses to the OTBR daemon socket, and to implement transactionality of modifications by the LwM2M Server. - - ``/run/openthread-wpan0.sock`` - local UNIX-domain socket used for communication with the OTBR daemon (note: this is part of the ``ot-br-posix`` package and not related to Svetovid, but used by OTBR object implementations) - - ``/run/sve-openthread-wpan0.lock`` - in the variant with OTBR support, this file is used to synchronize accesses to the OTBR daemon socket. diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md index 80508e47..bf0e0332 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md @@ -64,34 +64,27 @@ information to connect to the LwM2M Server: 1. Install Debian 9. A virtual machine, chroot environment or a container is recommended for development. - - Main repositories for Debian 9 are no longer maintained. You may need to - edit ``/etc/apt/sources.list`` to use http://archive.debian.org/ or - http://snapshot.debian.org/. - + edit ``/etc/apt/sources.list`` to use + [http://archive.debian.org/](http://archive.debian.org/) or + [http://snapshot.debian.org/](http://snapshot.debian.org/). 2. Add ``/etc/apt/sources.list.d/moxa.sources.list`` file with the following line: - ```sh deb http://debian.moxa.com/debian stretch main contrib non-free ``` - 3. Run ``apt-get update``, ``apt-get install moxa-archive-keyring`` and ``apt-get update`` once again. - 4. Execute ``dpkg --add-architecture armhf`` and then ``apt-get update`` once again, to be able to install non-amd64 packages. - 5. Install the toolchain and required built-time dependencies: - - ```sh - apt install \ - cmake \ - crossbuild-essential-armhf \ - git \ - pkg-config - ``` - + ```sh + apt install \ + cmake \ + crossbuild-essential-armhf \ + git \ + pkg-config + ``` 6. Install libmodbus development package: ``apt-get install libmodbus-dev:armhf`` (note: this conflicts with ``libmodbus-dev`` for the host platform, so a dedicated development VM or @@ -150,15 +143,12 @@ Additionally, the following packages can be built from the commercial codebase: - **svetovid-plugin-fsdm_{version}_{version}.deb** - dynamically loadable library that enables the FSDM functionality in Svetovid - - **avsystem_svetovid-{version}-Linux-fsdmtool.deb** - [fsdmtool](../FSDM.md#fsdm-script-stub-generator) script, that allows creating stubs of FSDM scripts from XML object definitions and/or downloading them from the LwM2M Object Registry - - **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-python.deb** - runtime library used by the Python scripts generated by ``svetovid-fsdmtool`` - - **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-sh.deb** - runtime library used by the shell scripts generated by ``svetovid-fsdmtool`` @@ -178,61 +168,41 @@ terminal): sudo apt install /tmp/*.deb ``` -Directory structure of an installed client ------------------------------------------- +## Directory structure of an installed client Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/`` - - ``/etc/svetovid/config/`` - configuration files, see [Client configuration](../Client_Configuration.md) - - ``/etc/svetovid/dm/`` - default directory for FSDM-based object implementations - - ``/etc/svetovid/persistence/`` - data persisted across firmware updates - - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates - - ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM plugin - - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional communication between the FSDM scripts and the Svetovid binary - - ``/usr/`` - - ``/usr/bin/svetovid`` - main LwM2M client executable - - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the ``fsdmtool`` executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 3 - - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support plugin - - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid - - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities - - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) - - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell scripts @@ -242,13 +212,11 @@ Svetovid is configured to launch through ``systemd`` and the install scripts enable and launch it by default. To manually start the client, use: - ```sh sudo systemctl start svetovid ``` To manually stop the client, use: - ```sh sudo systemctl stop svetovid ``` @@ -256,14 +224,11 @@ sudo systemctl stop svetovid LwM2M client process logs are sent to syslog. To access them, either: - read syslog directly, e.g.: - ```sh journalctl -fu svetovid ``` - - or stop the LwM2M client service as described above, then run it in foreground: - ```sh /usr/bin/svetovid ``` diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md index c79649d4..55804ba7 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md @@ -20,9 +20,9 @@ of Debian, but should in principle work on any mainstream Linux distribution. This target also includes an implementation of objects for some additional peripherals, namely: -* Generic push-buttons connected to GPIO pins -* Generic LED lights connected to GPIO pins -* The Raspberry Pi [Sense HAT](https://www.raspberrypi.com/products/sense-hat/) +- Generic push-buttons connected to GPIO pins +- Generic LED lights connected to GPIO pins +- The Raspberry Pi [Sense HAT](https://www.raspberrypi.com/products/sense-hat/) ## Features @@ -135,12 +135,9 @@ To build Svetovid for the Raspberry Pi on another machine, you will need: Raspberry Pi OS (e.g. Debian 12 if targeting Raspberry Pi OS Bookworm) - either a native installation, a virtual machine, or a container (e.g. Docker) environment - - GCC cross-compile packages for the target platform (``arm-linux-gnueabihf`` for 32-bit or ``aarch64-linux-gnu`` for 64-bit) - - CMake 3.6.3 or newer - - Git Once in the Debian build environment, you can install all the required @@ -200,18 +197,14 @@ and are available publicly as binaries: - **svetovid-plugin-fsdm_{version}_{version}.deb** - dynamically loadable library that enables the FSDM functionality in Svetovid - - **avsystem_svetovid-{version}-Linux-fsdmtool.deb** - [fsdmtool](../FSDM.md#fsdm-script-stub-generator) script, that allows creating stubs of FSDM scripts from XML object definitions and/or downloading them from the LwM2M Object Registry - - **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-python.deb** - runtime library used by the Python scripts generated by ``svetovid-fsdmtool`` - - **avsystem_svetovid-{version}-Linux-fsdmtool-runtime-sh.deb** - runtime library used by the shell scripts generated by ``svetovid-fsdmtool`` - - **avsystem_svetovid-{version}-Linux-sensehat.deb** - implementations of IPSO sensor object targeting the [Sense HAT](https://www.raspberrypi.com/products/sense-hat/), based on FSDM @@ -236,57 +229,37 @@ sudo apt install /tmp/*.deb Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/`` - - ``/etc/svetovid/config/`` - configuration files, see [Client configuration](../Client_Configuration.md) - - ``/etc/svetovid/dm/`` - default directory for FSDM-based object implementations - - The ``sensehat`` package puts implementations of some IPSO objects here. - - ``/etc/svetovid/persistence/`` - data persisted across firmware updates - - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates - - ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM plugin - - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional communication between the FSDM scripts and the Svetovid binary - - ``/usr/`` - - ``/usr/bin/svetovid`` - main LwM2M client executable - - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the ``fsdmtool`` executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 3 - - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin - - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid - - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities - - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable for the ``fsdmtool`` - - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell scripts @@ -296,13 +269,11 @@ Svetovid is configured to launch through ``systemd`` and the install scripts enable and launch it by default. To manually start the client, use: - ```sh sudo systemctl start svetovid ``` To manually stop the client, use: - ```sh sudo systemctl stop svetovid ``` @@ -310,14 +281,12 @@ sudo systemctl stop svetovid LwM2M client process logs are sent to syslog. To access them, either: - read syslog directly, e.g.: - ```sh journalctl -fu svetovid ``` - or stop the LwM2M client service as described above, then run it in foreground: - ```sh /usr/bin/svetovid ``` @@ -332,7 +301,6 @@ Right now, the Raspberry Pi client application supports the following IPSO objects that can represent simple devices connected via the Pi's GPIO header: - [IPSO Light control](http://www.openmobilealliance.org/tech/profiles/lwm2m/3311.xml) - - [IPSO Push button](http://www.openmobilealliance.org/tech/profiles/lwm2m/3347.xml) Configuration of these IPSO objects should be placed in @@ -349,7 +317,6 @@ located. Configuration options: - ``data_pin`` - used to control the light (by ``svetovid``), - - ``dimmer`` - PWM controlled light intensity in percents, may be omitted (default value: 100). diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md index 7ded0b8f..0c67f5fb 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md @@ -65,18 +65,15 @@ The default configuration of Poky (the reference Yocto distribution) currently uses RPM. The packages will be generated in the ``build/tmp/deploy/rpm/{platform}`` directory of your Yocto directory: -* **svetovid-{version}.{platform}.rpm** - all files necessary to run Svetovid +- **svetovid-{version}.{platform}.rpm** - all files necessary to run Svetovid and all the additional plugins and scripts (e.g. [FSDM](../FSDM.md) in the commercial version) - -* **svetovid-dbg-{version}.{platform}.rpm** - debugging symbols for the binaries +- **svetovid-dbg-{version}.{platform}.rpm** - debugging symbols for the binaries contained in the main package - -* **svetovid-src-{version}.{platform}.rpm** - source code that was used to build +- **svetovid-src-{version}.{platform}.rpm** - source code that was used to build the main package; note that it does NOT include build scripts and as such is only usable as a debugging aid - -* **svetovid-dev-{version}.{platform}.rpm** - currently empty and unused +- **svetovid-dev-{version}.{platform}.rpm** - currently empty and unused To install Svetovid on an existing device using RPM, copy the main RPM (or IPK) file onto the device using any method available (e.g. using a USB drive or @@ -91,53 +88,34 @@ rpm -ivh svetovid-*.rpm Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/`` - - ``/etc/svetovid/config/`` - configuration files, see [Client configuration](../Client_Configuration.md) - - ``/etc/svetovid/dm/`` - default directory for FSDM-based object implementations - - ``/etc/svetovid/persistence/`` - data persisted across firmware updates - - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates - - ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM plugin - - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional communication between the FSDM scripts and the Svetovid binary - - ``/usr/`` - - ``/usr/bin/svetovid`` - main LwM2M client executable - - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the ``fsdmtool`` executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python runtime for Python 3 - - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin - - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid - - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities - - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable for the ``fsdmtool`` - - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell scripts @@ -147,13 +125,11 @@ Svetovid is configured to launch through the System V init scripts and it is enabled by default. To manually start the client, use: - ```sh service svetovid start ``` To manually stop the client, use: - ```sh service svetovid stop ``` @@ -161,14 +137,12 @@ service svetovid stop LwM2M client process logs are sent to syslog. To access them, either: - read syslog directly, e.g.: - ```sh tail -f /var/log/messages ``` - or stop the LwM2M client service as described above, then run it in the foreground: - ```sh /usr/bin/svetovid ``` diff --git a/templates/default.yaml b/templates/default.yaml index 5b50110f..93323aaf 100644 --- a/templates/default.yaml +++ b/templates/default.yaml @@ -24,3 +24,4 @@ nRF7002DK_flash_downloaded_binary_step: 0. Run `nrfjprog -f NRF53 --program demo_nrf7002dk.hex --verify --reset` Thingy91_binary_step: 0. Download the `demo_thingy91_app_signed.hex` file. +svetovid_devzone_doc_prefix: "" From 09322f505fcb87b64fe57782b41ae07287ea0c3d Mon Sep 17 00:00:00 2001 From: Jakub Zimnol Date: Tue, 14 May 2024 10:56:32 +0200 Subject: [PATCH 8/8] Update files descriptions --- .../Svetovid/Supported_Platforms/generic.md | 25 +++++++------ .../Svetovid/Supported_Platforms/moxa.md | 28 +++++++------- .../Svetovid/Supported_Platforms/raspberry.md | 37 ++++++++++--------- .../Svetovid/Supported_Platforms/yocto.md | 34 +++++++++-------- 4 files changed, 67 insertions(+), 57 deletions(-) diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md index 9f7b4302..3a8a110c 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/generic.md @@ -222,32 +222,33 @@ Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates -- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM - plugin +- ``/tmp/`` - temporary directory used by the Firmare Update object and the + [FSDM](../FSDM.md) plugin - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional - communication between the FSDM scripts and the Svetovid binary + communication between the [FSDM](../FSDM.md) scripts and the Svetovid + binary - ``/usr/`` - ``/usr/bin/svetovid`` - main LwM2M client executable - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM - Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python - runtime for Python 3 + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 2.7 + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 3 - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support plugin - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid - - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities + - ``/usr/local/share/svetovid/`` - [FSDM](../FSDM.md) runtime and utilities - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) - ``/usr/local/share/svetovid/bin/fsdm/`` - [fsdmtool](../FSDM.md#fsdm-script-stub-generator) support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for - Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell - scripts + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - [FSDM](../FSDM.md) + runtime for Python + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - [FSDM](../FSDM.md) + runtime for shell scripts ### Additional files used by the Docker images diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md index bf0e0332..dff91f19 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/moxa.md @@ -180,18 +180,19 @@ Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/persistence/`` - data persisted across firmware updates - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates -- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM - plugin +- ``/tmp/`` - temporary directory used by the Firmare Update object and the + [FSDM](../FSDM.md) plugin - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional - communication between the FSDM scripts and the Svetovid binary + communication between the [FSDM](../FSDM.md) scripts and the Svetovid + binary - ``/usr/`` - ``/usr/bin/svetovid`` - main LwM2M client executable - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the - ``fsdmtool`` executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM - Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python - runtime for Python 3 + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) executable + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 2.7 + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 3 - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support plugin @@ -200,11 +201,12 @@ Assuming that all the packages mentioned above are installed: - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) - - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for - Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell - scripts + - ``/usr/local/share/svetovid/bin/fsdm/`` - + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) support modules + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - [FSDM](../FSDM.md) + runtime for Python + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - [FSDM](../FSDM.md) + runtime for shell scripts ## Launch instructions diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md index 55804ba7..161fc2e3 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/raspberry.md @@ -238,30 +238,33 @@ Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/persistence/`` - data persisted across firmware updates - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates -- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM - plugin +- ``/tmp/`` - temporary directory used by the Firmare Update object and the + [FSDM](../FSDM.md) plugin - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional - communication between the FSDM scripts and the Svetovid binary + communication between the [FSDM](../FSDM.md) scripts and the Svetovid + binary - ``/usr/`` - ``/usr/bin/svetovid`` - main LwM2M client executable - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the - ``fsdmtool`` executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM - Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python - runtime for Python 3 + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) executable + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 2.7 + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 3 - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin + - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support + plugin - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid - - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities - - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable - for the ``fsdmtool`` - - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for - Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell - scripts + - ``/usr/local/share/svetovid/`` - [FSDM](../FSDM.md) runtime and utilities + - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable + for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) + - ``/usr/local/share/svetovid/bin/fsdm/`` - + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) support modules + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - [FSDM](../FSDM.md) + runtime for Python + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - [FSDM](../FSDM.md) + runtime for shell scripts ## Launch instructions diff --git a/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md index 0c67f5fb..ec9c0580 100644 --- a/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md +++ b/docs/LwM2M_Client/Svetovid/Supported_Platforms/yocto.md @@ -95,29 +95,33 @@ Assuming that all the packages mentioned above are installed: - ``/etc/svetovid/persistence/`` - data persisted across firmware updates - ``/etc/svetovid/volatile_persistence/`` - data persisted across reboots, but not firmware updates -- ``/tmp/`` - temporary directory used by the Firmare Update object and the FSDM - plugin +- ``/tmp/`` - temporary directory used by the Firmare Update object and the + [FSDM](../FSDM.md) plugin - ``/tmp/fsdm_local_socket`` - UNIX domain socket used for additional - communication between the FSDM scripts and the Svetovid binary + communication between the [FSDM](../FSDM.md) scripts and the Svetovid + binary - ``/usr/`` - ``/usr/bin/svetovid`` - main LwM2M client executable - ``/usr/bin/svetovid-fsdmtool`` - convenience symbolic link for the - ``fsdmtool`` executable - - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the FSDM - Python runtime for Python 2.7 - - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the FSDM Python - runtime for Python 3 + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) executable + - ``/usr/lib/python2.7/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 2.7 + - ``/usr/lib/python3/dist-packages/fsdm`` - symbolic link to the + [FSDM](../FSDM.md) Python runtime for Python 3 - ``/usr/lib/svetovid/`` - LwM2M client extensions loaded at runtime - - ``/usr/lib/svetovid/libfsdm_plugin.so`` - FSDM support plugin + - ``/usr/lib/svetovid/libfsdm_plugin.so`` - [FSDM](../FSDM.md) support + plugin - ``/usr/lib/systemd/system/svetovid.service`` - systemd unit file for Svetovid - - ``/usr/local/share/svetovid/`` - FSDM runtime and utilities + - ``/usr/local/share/svetovid/`` - [FSDM](../FSDM.md) runtime and utilities - ``/usr/local/share/svetovid/bin/svetovid-fsdmtool`` - main executable - for the ``fsdmtool`` - - ``/usr/local/share/svetovid/bin/fsdm/`` - ``fsdmtool`` support modules - - ``/usr/local/share/svetovid/lib/fsdm/python/`` - FSDM runtime for Python - - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - FSDM runtime for shell - scripts + for the [fsdmtool](../FSDM.md#fsdm-script-stub-generator) + - ``/usr/local/share/svetovid/bin/fsdm/`` - + [fsdmtool](../FSDM.md#fsdm-script-stub-generator) support modules + - ``/usr/local/share/svetovid/lib/fsdm/python/`` - [FSDM](../FSDM.md) + runtime for Python + - ``/usr/local/share/svetovid/lib/fsdm/sh/`` - [FSDM](../FSDM.md) + runtime for shell scripts ## Launch instructions