From ebaa8e10d81f16790234a5fd7732251b0965c9d9 Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Tue, 14 Jan 2025 15:35:37 -0700 Subject: [PATCH 01/14] updated specifications for tes-http-serverd --- docs/spec/executable/tes-http-serverd.md | 41 +++++++++--------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/docs/spec/executable/tes-http-serverd.md b/docs/spec/executable/tes-http-serverd.md index 7aec01144..993496e6d 100644 --- a/docs/spec/executable/tes-http-serverd.md +++ b/docs/spec/executable/tes-http-serverd.md @@ -6,39 +6,28 @@ credentials for other processes to acquire. For information on TES, see . -The following is the current daemon implementation flow: +The following are the requirements for the `tes-http-serverd`: - [tes-http-serverd-1] The `tes-http-serverd` daemon will use the `tes` daemon - for acquiring credentials. -- [tes-http-serverd-2] On connection, the `tes-http-serverd` daemon will - validate the provided token and establish an http connection with the server. + for acquiring TES credentials. +- [tes-http-serverd-2] The `tes-http-serverd` daemon will validate client connections + with the provided `AWS_CONTAINER_AUTHORIZATION_TOKEN` (see [tes-http-serverd-ev-#]). - [tes-http-serverd-3] On request, the `tes-http-serverd` daemon will validate the request and headers. - [tes-http-serverd-4] On request, the `tes-http-serverd` daemon will make a request to the `tes` daemon to acquire the temporary credentials vended, and return to the caller. +- [tes-http-serverd-5] The CLI arguments shall be the optional argument `port`. +- [tes-http-serverd-6] The `port` cli argument configures the tes-http-serverd TCP port. +- [tes-http-serverd-7] If no `port` argument is supplied on the CLI, the value for `port` shall be `8090`. +- [tes-http-serverd-8] The TES requst must be authenticated with an authorization token +provided by the client. +- [tes-http-serverd-9] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message. +- [tes-http-serverd-10] The authorization token must be 16-octets long. +- [tes-http-serverd-11] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. -## CLI parameters +> NOTE: Requirement 11 above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's -### port +> NOTE: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-ttp-serverd in the TES request. -- [tes-http-serverd-param-port-1] The port argument configures the port for - which the server will run on. If not provided will default to port `8090`. - -## Environment Variables - -### AWS_CONTAINER_AUTHORIZATION_TOKEN - -- Authorization token which is used to connected to the Token Exchange Service - server hosted on `AWS_CONTAINER_CREDENTIALS_FULL_URI`. Greengrass Nucleus Lite - will export this variable for example the AWS SDK to use. - -### AWS_CONTAINER_CREDENTIALS_FULL_URI - -- The URI in which the Token Exchange Service is hosted on. When a component - creates an AWS SDK client, the client recognizes this URI environment variable - and uses the token in the `AWS_CONTAINER_AUTHORIZATION_TOKEN` to connect to - the token exchange service and retrieve AWS credentials. Greengrass Nucleus - Lite will export this variable for example the AWS SDK to use. - -## Core Bus API +> NOTE: The tes-http-serverd URI shall be provided to all generic components as the environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. \ No newline at end of file From a23ffa865ba2301b09f2466e876e7ad2be980c37 Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Tue, 14 Jan 2025 16:41:46 -0700 Subject: [PATCH 02/14] Update docs/spec/executable/tes-http-serverd.md Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com> --- docs/spec/executable/tes-http-serverd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/spec/executable/tes-http-serverd.md b/docs/spec/executable/tes-http-serverd.md index 993496e6d..50322acad 100644 --- a/docs/spec/executable/tes-http-serverd.md +++ b/docs/spec/executable/tes-http-serverd.md @@ -28,6 +28,6 @@ provided by the client. > NOTE: Requirement 11 above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's -> NOTE: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-ttp-serverd in the TES request. +> NOTE: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-http-serverd in the TES request. > NOTE: The tes-http-serverd URI shall be provided to all generic components as the environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. \ No newline at end of file From 9a5ad5799ea87d5686d3a12252b83aa0391bf8e3 Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Tue, 14 Jan 2025 17:22:10 -0700 Subject: [PATCH 03/14] note 2 typo fix --- docs/spec/executable/tes-http-serverd.md | 28 +++++++++++------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/docs/spec/executable/tes-http-serverd.md b/docs/spec/executable/tes-http-serverd.md index 50322acad..52c905053 100644 --- a/docs/spec/executable/tes-http-serverd.md +++ b/docs/spec/executable/tes-http-serverd.md @@ -10,24 +10,22 @@ The following are the requirements for the `tes-http-serverd`: - [tes-http-serverd-1] The `tes-http-serverd` daemon will use the `tes` daemon for acquiring TES credentials. -- [tes-http-serverd-2] The `tes-http-serverd` daemon will validate client connections - with the provided `AWS_CONTAINER_AUTHORIZATION_TOKEN` (see [tes-http-serverd-ev-#]). -- [tes-http-serverd-3] On request, the `tes-http-serverd` daemon will validate +- [tes-http-serverd-2] On request, the `tes-http-serverd` daemon will validate the request and headers. -- [tes-http-serverd-4] On request, the `tes-http-serverd` daemon will make a +- [tes-http-serverd-3] On request, the `tes-http-serverd` daemon will make a request to the `tes` daemon to acquire the temporary credentials vended, and return to the caller. -- [tes-http-serverd-5] The CLI arguments shall be the optional argument `port`. -- [tes-http-serverd-6] The `port` cli argument configures the tes-http-serverd TCP port. -- [tes-http-serverd-7] If no `port` argument is supplied on the CLI, the value for `port` shall be `8090`. -- [tes-http-serverd-8] The TES requst must be authenticated with an authorization token -provided by the client. -- [tes-http-serverd-9] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message. -- [tes-http-serverd-10] The authorization token must be 16-octets long. -- [tes-http-serverd-11] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. +- [tes-http-serverd-4] There are no command line arguments. +- [tes-http-serverd-5] The server socket poort shall be OS selected at random from a free port. +- [tes-http-serverd-6] After the server socket is created & bound, the socket port must be written to the config key `services/aws.greengrass.TokenExchangeService/configuration/port`. +- [tes-http-serverd-7] The TES request must be authenticated with an authorization token provided by the client. +- [tes-http-serverd-8] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message +- [tes-http-serverd-9] The authorization token must be 16-octets long. +- [tes-http-serverd-10] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. -> NOTE: Requirement 11 above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's +### Notes +> 1: Requirement 11 above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's -> NOTE: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-http-serverd in the TES request. +> 2: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-http-serverd in the TES request. -> NOTE: The tes-http-serverd URI shall be provided to all generic components as the environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. \ No newline at end of file +> 3: The tes-http-serverd URI shall be provided to all generic components as the environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. \ No newline at end of file From c1f80b62a1824139d6fb05d7528476a309ba887a Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Wed, 15 Jan 2025 08:51:59 -0700 Subject: [PATCH 04/14] Update docs/spec/executable/tes-http-serverd.md Co-authored-by: Archit Gupta --- docs/spec/executable/tes-http-serverd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/spec/executable/tes-http-serverd.md b/docs/spec/executable/tes-http-serverd.md index 52c905053..1f5e3433d 100644 --- a/docs/spec/executable/tes-http-serverd.md +++ b/docs/spec/executable/tes-http-serverd.md @@ -16,7 +16,7 @@ The following are the requirements for the `tes-http-serverd`: request to the `tes` daemon to acquire the temporary credentials vended, and return to the caller. - [tes-http-serverd-4] There are no command line arguments. -- [tes-http-serverd-5] The server socket poort shall be OS selected at random from a free port. +- [tes-http-serverd-5] The server socket port shall be OS selected at random from a free port. - [tes-http-serverd-6] After the server socket is created & bound, the socket port must be written to the config key `services/aws.greengrass.TokenExchangeService/configuration/port`. - [tes-http-serverd-7] The TES request must be authenticated with an authorization token provided by the client. - [tes-http-serverd-8] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message From 4b50b5403be1a1442020a46d789659c041b960b8 Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Wed, 15 Jan 2025 09:07:28 -0700 Subject: [PATCH 05/14] inserted CLI requirements --- docs/spec/executable/tes-http-serverd.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/spec/executable/tes-http-serverd.md b/docs/spec/executable/tes-http-serverd.md index 1f5e3433d..80bf253fe 100644 --- a/docs/spec/executable/tes-http-serverd.md +++ b/docs/spec/executable/tes-http-serverd.md @@ -15,6 +15,7 @@ The following are the requirements for the `tes-http-serverd`: - [tes-http-serverd-3] On request, the `tes-http-serverd` daemon will make a request to the `tes` daemon to acquire the temporary credentials vended, and return to the caller. +<<<<<<< HEAD - [tes-http-serverd-4] There are no command line arguments. - [tes-http-serverd-5] The server socket port shall be OS selected at random from a free port. - [tes-http-serverd-6] After the server socket is created & bound, the socket port must be written to the config key `services/aws.greengrass.TokenExchangeService/configuration/port`. @@ -22,9 +23,19 @@ The following are the requirements for the `tes-http-serverd`: - [tes-http-serverd-8] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message - [tes-http-serverd-9] The authorization token must be 16-octets long. - [tes-http-serverd-10] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. +======= +- [tes-http-serverd-4] The `tes-http-serverd` will accept the argument --version (-v) to display the version number of the serverd executable. +- [tes-http-serverd-5] The `tes-http-serverd` will accept the argument --help (-h) to display all the supported arguments and their use. +- [tes-http-serverd-6] The server socket port shall be OS selected at random from a free port. +- [tes-http-serverd-7] After the server socket is created & bound, the socket port must be written to the config key `services/aws.greengrass.TokenExchangeService/configuration/port`. +- [tes-http-serverd-8] The TES request must be authenticated with an authorization token provided by the client. +- [tes-http-serverd-9] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message +- [tes-http-serverd-10] The authorization token must be 16-octets long. +- [tes-http-serverd-11] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. +>>>>>>> b07a2fc (inserted CLI requirements) ### Notes -> 1: Requirement 11 above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's +> 1: Requirement `tes-http-serverd-11` above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's > 2: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-http-serverd in the TES request. From 6c3eb3ae5a7fe7de7c2963e766ef4ed67aa7f197 Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Wed, 15 Jan 2025 09:14:54 -0700 Subject: [PATCH 06/14] final newline added --- docs/spec/executable/tes-http-serverd.md | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/docs/spec/executable/tes-http-serverd.md b/docs/spec/executable/tes-http-serverd.md index 80bf253fe..14d242a80 100644 --- a/docs/spec/executable/tes-http-serverd.md +++ b/docs/spec/executable/tes-http-serverd.md @@ -15,15 +15,6 @@ The following are the requirements for the `tes-http-serverd`: - [tes-http-serverd-3] On request, the `tes-http-serverd` daemon will make a request to the `tes` daemon to acquire the temporary credentials vended, and return to the caller. -<<<<<<< HEAD -- [tes-http-serverd-4] There are no command line arguments. -- [tes-http-serverd-5] The server socket port shall be OS selected at random from a free port. -- [tes-http-serverd-6] After the server socket is created & bound, the socket port must be written to the config key `services/aws.greengrass.TokenExchangeService/configuration/port`. -- [tes-http-serverd-7] The TES request must be authenticated with an authorization token provided by the client. -- [tes-http-serverd-8] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message -- [tes-http-serverd-9] The authorization token must be 16-octets long. -- [tes-http-serverd-10] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. -======= - [tes-http-serverd-4] The `tes-http-serverd` will accept the argument --version (-v) to display the version number of the serverd executable. - [tes-http-serverd-5] The `tes-http-serverd` will accept the argument --help (-h) to display all the supported arguments and their use. - [tes-http-serverd-6] The server socket port shall be OS selected at random from a free port. @@ -32,11 +23,10 @@ The following are the requirements for the `tes-http-serverd`: - [tes-http-serverd-9] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message - [tes-http-serverd-10] The authorization token must be 16-octets long. - [tes-http-serverd-11] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. ->>>>>>> b07a2fc (inserted CLI requirements) ### Notes > 1: Requirement `tes-http-serverd-11` above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's > 2: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-http-serverd in the TES request. -> 3: The tes-http-serverd URI shall be provided to all generic components as the environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. \ No newline at end of file +> 3: The tes-http-serverd URI shall be provided to all generic components as the environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. From ad3d60c6cba5e2ab0bbd799f5e01ca6b3246539c Mon Sep 17 00:00:00 2001 From: Joe Julicher Date: Wed, 15 Jan 2025 17:04:22 +0000 Subject: [PATCH 07/14] formatted --- docs/spec/executable/tes-http-serverd.md | 36 +++++++++++++++++------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/docs/spec/executable/tes-http-serverd.md b/docs/spec/executable/tes-http-serverd.md index 14d242a80..910e988d6 100644 --- a/docs/spec/executable/tes-http-serverd.md +++ b/docs/spec/executable/tes-http-serverd.md @@ -15,18 +15,34 @@ The following are the requirements for the `tes-http-serverd`: - [tes-http-serverd-3] On request, the `tes-http-serverd` daemon will make a request to the `tes` daemon to acquire the temporary credentials vended, and return to the caller. -- [tes-http-serverd-4] The `tes-http-serverd` will accept the argument --version (-v) to display the version number of the serverd executable. -- [tes-http-serverd-5] The `tes-http-serverd` will accept the argument --help (-h) to display all the supported arguments and their use. -- [tes-http-serverd-6] The server socket port shall be OS selected at random from a free port. -- [tes-http-serverd-7] After the server socket is created & bound, the socket port must be written to the config key `services/aws.greengrass.TokenExchangeService/configuration/port`. -- [tes-http-serverd-8] The TES request must be authenticated with an authorization token provided by the client. -- [tes-http-serverd-9] The authorization token must be validated by the `ipc_component` coreBus responder with the `verify_svcuid` corebus message +- [tes-http-serverd-4] The `tes-http-serverd` will accept the argument --version + (-v) to display the version number of the serverd executable. +- [tes-http-serverd-5] The `tes-http-serverd` will accept the argument --help + (-h) to display all the supported arguments and their use. +- [tes-http-serverd-6] The server socket port shall be OS selected at random + from a free port. +- [tes-http-serverd-7] After the server socket is created & bound, the socket + port must be written to the config key + `services/aws.greengrass.TokenExchangeService/configuration/port`. +- [tes-http-serverd-8] The TES request must be authenticated with an + authorization token provided by the client. +- [tes-http-serverd-9] The authorization token must be validated by the + `ipc_component` coreBus responder with the `verify_svcuid` corebus message - [tes-http-serverd-10] The authorization token must be 16-octets long. -- [tes-http-serverd-11] The `tes-http-serverd` shall not cache or otherwise store any credentials. All credentials must be obtained fresh via corebus transactions with the `tesd` process. +- [tes-http-serverd-11] The `tes-http-serverd` shall not cache or otherwise + store any credentials. All credentials must be obtained fresh via corebus + transactions with the `tesd` process. ### Notes -> 1: Requirement `tes-http-serverd-11` above is to encourage the TES HTTP server to be as small as possible. Any caching should be done in a central place to the system and with c-groups it may be necessary to start multiple tes-http-serverd's -> 2: The authentication token is provided to the client component by the environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send this token to the tes-http-serverd in the TES request. +> 1: Requirement `tes-http-serverd-11` above is to encourage the TES HTTP server +> to be as small as possible. Any caching should be done in a central place to +> the system and with c-groups it may be necessary to start multiple +> tes-http-serverd's -> 3: The tes-http-serverd URI shall be provided to all generic components as the environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. +> 2: The authentication token is provided to the client component by the +> environment variable `AWS_CONTAINER_AUTHORIZATION_TOKEN`. The client must send +> this token to the tes-http-serverd in the TES request. + +> 3: The tes-http-serverd URI shall be provided to all generic components as the +> environment variable `AWS_CONTAINER_CREDENTIALS_FULL_URI`. From 8354ea3385d184f376037d66b2e2097e6cba0b89 Mon Sep 17 00:00:00 2001 From: Joe Julicher Date: Thu, 16 Jan 2025 22:03:51 +0000 Subject: [PATCH 08/14] updates to iotcored specifications --- docs/spec/executable/iotcored.md | 121 ++++++++++++++++--------------- 1 file changed, 64 insertions(+), 57 deletions(-) diff --git a/docs/spec/executable/iotcored.md b/docs/spec/executable/iotcored.md index 4d1ca661b..5565a34c8 100644 --- a/docs/spec/executable/iotcored.md +++ b/docs/spec/executable/iotcored.md @@ -7,63 +7,70 @@ by the `iotcored` daemon. For information on MQTT, see . -- [iotcored-1] The daemon handles the `aws_iot_mqtt` core-bus interface. -- [iotcored-2] The daemon connects to AWS IoT Core on startup and maintains the +### 1.0 general +- [iotcored-1.1] The daemon handles the `aws_iot_mqtt` core-bus interface. +- [iotcored-1.2] The daemon connects to AWS IoT Core on startup and maintains the connection. -- [iotcored-3] On disconnect, the daemon tries to reconnect indefinitely with +- [iotcored-1.3] On disconnect, the daemon tries to reconnect indefinitely with backoff. -- [iotcored-4] On auth failure, the daemon exits with error. -- [iotcored-5] When the number of subscriptions exceeds the AWS IoT Core - per-connection maximum, additional connections will be used. -- [iotcored-6] A compile time flag is available to set the maximum number of - connections used (default 1). -- [iotcored-7] Configuration values will be pulled from the config over core-bus - unless overridden by a CLI parameter. - -## Config keys - -TODO - -## CLI parameters - -### endpoint - -- [iotcored-param-endpoint-1] The endpoint argument configures the endpoint the - daemon connects to. -- [iotcored-param-endpoint-2] The endpoint argument can be provided by - `--endpoint` or `-e`. -- [iotcored-param-endpoint-3] The endpoint argument is optional. - -### id +- [iotcored-1.4] On auth failure, the daemon exits with error. -- [iotcored-param-id-1] The id argument specifies the MQTT client identifier to - use. This may be suffixed with `_{N}`, for some integer `N`, if additional - connections are needed due to exceeding the maximum number of subscriptions - allowed by AWS IoT Core per connection. -- [iotcored-param-id-2] The id argument can be provided by `--id` or `-i`. -- [iotcored-param-id-3] The id argument is optional. - -### rootca - -- [iotcored-param-rootca-1] The rootca argument specifies the path to the root - CA certificate file used to validate the AWS IoT Core endpoint, in PEM format. - Ensure that it has the trailing newline character, as some SSL libraries do - not support PEM files with missing trailing newline. -- [iotcored-param-rootca-2] The rootca argument can be provided by `--rootca` or - `-r`. -- [iotcored-param-rootca-3] The rootca argument is optional. - -### cert - -- [iotcored-param-cert-1] The cert argument specifies the path to the client - certificate PEM file to be used for TLS mutual auth with AWS IoT Core to - authenticate the device. -- [iotcored-param-cert-2] The cert argument can be provided by `--cert` or `-c`. -- [iotcored-param-cert-3] The cert argument is optional. - -### key - -- [iotcored-param-key-1] The key argument specifies the path to the private key - PEM file corresponding to the `cert` argument. -- [iotcored-param-key-2] The key argument can be provided by `--key` or `-k`. -- [iotcored-param-key-3] The key argument is optional. +### 2.0 autoscaling +- [iotcored-2.1] When the number of subscriptions exceeds the AWS IoT Core + per-connection maximum, additional connections will be used. +- [iotcored-2.2] The maximum number of auto-scaling connections may be set by a compile time value. +- [iotcored-2.3] The maximum number of auto-scaling connections may be set by a command line argument. +- [iotcored-2.4] The maximum number of auto-scaling connections may be set by a configuration value. +- [iotcored-2.5] The maximum value of the autoscaling connection count is set according to the following priority: +1. command line argument (optional) +2. configuration value (optional) +3. compile time value. (required) +- [iotcored-2.6] The maximum value of the autoscaling connection count shall not exceed the compile time value. + +### 3.0 endpoints +The endpoint refers to the AWS IoT Core address used to establish an MQTT connection. +- [iotcored-3.1] The AWS endpoint target may be specified by an optional command line argument. +- [iotcored-3.2] The AWS endpoint target shall be specified by the configuration system if no command line argument is present. +- [iotcored-3.3] `iotcored` shall exit with a error forwarded from the configuration system if no endpoint is available. +- [iotcored-3.4] The endpoint target command line argument shall be `--endpoint` or `-e`. +- [iotcored-3.5] The configuration path shall be `services/aws.greengrass.NucleusLite/configuration/iotDataEndpoint`. + +### 4.0 client id +The client id refers to the device identification presented to AWS IoT core. This id must be unique. The client id is also called the `thing name` in IoT Core. +- [iotcored-4.1] The client id may be specified by an optional command line argument. +- [iotcored-4.2] The client id shall be specified by the configuration system. +- [iotcored-4.3] The configuration path shall be `system/thingName`. +- [iotcored-4.4] The client id will get the suffix `_{N}` during autoscaling. The value of `N` is the autoscaling connection number. +- [iotcored-4.5] The client id for connection 0 shall be the bare client id without a connection number suffix. +- [iotcored-4.6] The client id argument may be provided by `--id` or `-i`. + +### 5.0 rootca +The rootca is a PEM file used for authenticating AWS IoT Core to the device. + +- [iotcored-5.1] The rootca argument specifies the path to the root + CA certificate file. +- [iotcored-5.2] The rootca must be in PEM format. +- [iotcored-5.4] The rootca argument may be provided by `--rootca` or `-r`. +- [iotcored-5.6] The rootca argument is optional. +- [iotcored-5.7] The configuration path shall be `system/rootCaPath`. + +### 6.0 client certificate +The client certificate is a PEM file used for authenticating the device AWS IoT Core. + +- [iotcored-6.1] The certificate file path argument specifies the path to the client + certificate PEM file. +- [iotcored-6.2] The certificate must be in PEM format. +- [iotcored-6.2] The cert argument may be provided by `--cert` or `-c`. +- [iotcored-6.3] The cert argument is optional. +- [iotcored-6.4] The certificate file path shall be specified by the configuration system. +- [iotcored-6.5] The configuration path shall be `system/certificateFilePath`. + +### 7.0 Private Key +The private key is used to generate keys during TLS and certificate rotation operations. + +- [iotcored-7.1] The key argument specifies the path to the private key + PEM file. +- [iotcored-7.2] The key must be in PEM format. +- [iotcored-7.3] The key argument can be provided by `--key` or `-k`. +- [iotcored-7.4] The key argument is optional. +- [iotcored-7.5] The configuration path shall be `system/privateKeyPath`. From 300e797f06dbb1f24930f4621408e302b93a9743 Mon Sep 17 00:00:00 2001 From: Joe Julicher Date: Thu, 16 Jan 2025 22:10:49 +0000 Subject: [PATCH 09/14] formating for iotcored.md --- docs/spec/executable/iotcored.md | 82 ++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 26 deletions(-) diff --git a/docs/spec/executable/iotcored.md b/docs/spec/executable/iotcored.md index 5565a34c8..6b5eb317e 100644 --- a/docs/spec/executable/iotcored.md +++ b/docs/spec/executable/iotcored.md @@ -8,68 +8,98 @@ by the `iotcored` daemon. For information on MQTT, see . ### 1.0 general + - [iotcored-1.1] The daemon handles the `aws_iot_mqtt` core-bus interface. -- [iotcored-1.2] The daemon connects to AWS IoT Core on startup and maintains the - connection. +- [iotcored-1.2] The daemon connects to AWS IoT Core on startup and maintains + the connection. - [iotcored-1.3] On disconnect, the daemon tries to reconnect indefinitely with backoff. - [iotcored-1.4] On auth failure, the daemon exits with error. ### 2.0 autoscaling + - [iotcored-2.1] When the number of subscriptions exceeds the AWS IoT Core per-connection maximum, additional connections will be used. -- [iotcored-2.2] The maximum number of auto-scaling connections may be set by a compile time value. -- [iotcored-2.3] The maximum number of auto-scaling connections may be set by a command line argument. -- [iotcored-2.4] The maximum number of auto-scaling connections may be set by a configuration value. -- [iotcored-2.5] The maximum value of the autoscaling connection count is set according to the following priority: +- [iotcored-2.2] The maximum number of auto-scaling connections may be set by a + compile time value. +- [iotcored-2.3] The maximum number of auto-scaling connections may be set by a + command line argument. +- [iotcored-2.4] The maximum number of auto-scaling connections may be set by a + configuration value. +- [iotcored-2.5] The maximum value of the autoscaling connection count is set + according to the following priority: + 1. command line argument (optional) 2. configuration value (optional) 3. compile time value. (required) -- [iotcored-2.6] The maximum value of the autoscaling connection count shall not exceed the compile time value. + +- [iotcored-2.6] The maximum value of the autoscaling connection count shall not + exceed the compile time value. ### 3.0 endpoints -The endpoint refers to the AWS IoT Core address used to establish an MQTT connection. -- [iotcored-3.1] The AWS endpoint target may be specified by an optional command line argument. -- [iotcored-3.2] The AWS endpoint target shall be specified by the configuration system if no command line argument is present. -- [iotcored-3.3] `iotcored` shall exit with a error forwarded from the configuration system if no endpoint is available. -- [iotcored-3.4] The endpoint target command line argument shall be `--endpoint` or `-e`. -- [iotcored-3.5] The configuration path shall be `services/aws.greengrass.NucleusLite/configuration/iotDataEndpoint`. + +The endpoint refers to the AWS IoT Core address used to establish an MQTT +connection. + +- [iotcored-3.1] The AWS endpoint target may be specified by an optional command + line argument. +- [iotcored-3.2] The AWS endpoint target shall be specified by the configuration + system if no command line argument is present. +- [iotcored-3.3] `iotcored` shall exit with a error forwarded from the + configuration system if no endpoint is available. +- [iotcored-3.4] The endpoint target command line argument shall be `--endpoint` + or `-e`. +- [iotcored-3.5] The configuration path shall be + `services/aws.greengrass.NucleusLite/configuration/iotDataEndpoint`. ### 4.0 client id -The client id refers to the device identification presented to AWS IoT core. This id must be unique. The client id is also called the `thing name` in IoT Core. -- [iotcored-4.1] The client id may be specified by an optional command line argument. + +The client id refers to the device identification presented to AWS IoT core. +This id must be unique. The client id is also called the `thing name` in IoT +Core. + +- [iotcored-4.1] The client id may be specified by an optional command line + argument. - [iotcored-4.2] The client id shall be specified by the configuration system. - [iotcored-4.3] The configuration path shall be `system/thingName`. -- [iotcored-4.4] The client id will get the suffix `_{N}` during autoscaling. The value of `N` is the autoscaling connection number. -- [iotcored-4.5] The client id for connection 0 shall be the bare client id without a connection number suffix. +- [iotcored-4.4] The client id will get the suffix `_{N}` during autoscaling. + The value of `N` is the autoscaling connection number. +- [iotcored-4.5] The client id for connection 0 shall be the bare client id + without a connection number suffix. - [iotcored-4.6] The client id argument may be provided by `--id` or `-i`. ### 5.0 rootca + The rootca is a PEM file used for authenticating AWS IoT Core to the device. -- [iotcored-5.1] The rootca argument specifies the path to the root - CA certificate file. +- [iotcored-5.1] The rootca argument specifies the path to the root CA + certificate file. - [iotcored-5.2] The rootca must be in PEM format. - [iotcored-5.4] The rootca argument may be provided by `--rootca` or `-r`. - [iotcored-5.6] The rootca argument is optional. - [iotcored-5.7] The configuration path shall be `system/rootCaPath`. ### 6.0 client certificate -The client certificate is a PEM file used for authenticating the device AWS IoT Core. -- [iotcored-6.1] The certificate file path argument specifies the path to the client - certificate PEM file. +The client certificate is a PEM file used for authenticating the device AWS IoT +Core. + +- [iotcored-6.1] The certificate file path argument specifies the path to the + client certificate PEM file. - [iotcored-6.2] The certificate must be in PEM format. - [iotcored-6.2] The cert argument may be provided by `--cert` or `-c`. - [iotcored-6.3] The cert argument is optional. -- [iotcored-6.4] The certificate file path shall be specified by the configuration system. +- [iotcored-6.4] The certificate file path shall be specified by the + configuration system. - [iotcored-6.5] The configuration path shall be `system/certificateFilePath`. ### 7.0 Private Key -The private key is used to generate keys during TLS and certificate rotation operations. -- [iotcored-7.1] The key argument specifies the path to the private key - PEM file. +The private key is used to generate keys during TLS and certificate rotation +operations. + +- [iotcored-7.1] The key argument specifies the path to the private key PEM + file. - [iotcored-7.2] The key must be in PEM format. - [iotcored-7.3] The key argument can be provided by `--key` or `-k`. - [iotcored-7.4] The key argument is optional. From 236e26390ffed4b55d4f264266a2c455a4f0f7f0 Mon Sep 17 00:00:00 2001 From: Joe Julicher Date: Tue, 21 Jan 2025 17:50:35 +0000 Subject: [PATCH 10/14] initial checking of architecture --- .../gg-architecture-drawings/readme.txt | 1 + docs/design/gg-architecture.md | 489 ++++++++++++++++++ 2 files changed, 490 insertions(+) create mode 100644 docs/design/gg-architecture-drawings/readme.txt create mode 100644 docs/design/gg-architecture.md diff --git a/docs/design/gg-architecture-drawings/readme.txt b/docs/design/gg-architecture-drawings/readme.txt new file mode 100644 index 000000000..83aab5de5 --- /dev/null +++ b/docs/design/gg-architecture-drawings/readme.txt @@ -0,0 +1 @@ +support drawings for the gg-architecture document. \ No newline at end of file diff --git a/docs/design/gg-architecture.md b/docs/design/gg-architecture.md new file mode 100644 index 000000000..6e10fa034 --- /dev/null +++ b/docs/design/gg-architecture.md @@ -0,0 +1,489 @@ +# Greengrass Lite C Architecture + +## Introduction and Goals + +Greengrass Lite is a size constrained version of Greengrass v2. The intent is to reduce the memory footprint below 10MB with smaller being better. The potential applications increase dramatically as size reduces so there is no maximum “acceptable” size defined. + +## Requirements Overview + +The most important customer requirements are listed below: + +1. Reduce size below 30/15MB RAM/FLASH, Much lower would be better +2. Support unchanged, “generic components" and their recipes. +3. Support embedded Linux first but do not prevent other operating systems. +4. Share the MQTT connection and “things” with all GG elements +5. Provide OTA and deployment from GG console +6. forward logs to AWS Cloudwatch +8. Ensure proper startup/shutdown of all components +9. Provide tokens from the AWS Token Exchange Service + +### Reduce Size + +Target a small size to allow integration into IoT gateways, home routers, and virtual machines. A scaleable greengrass lite system that can be “right-sized” to a customer application will open many opportunities. Every MB used by Greengrass reduces the memory available to the target application. + +### Support Generic Components + +Generic Components are the external applications typically written by the customer and deployed via the Greengrass console. These components can be developed in any language and are often deployed as binaries specific to the target platform. Generic components communicate with the Greengrass system via the IPC. Support for generic components requires support for the legacy IPC system. + +### Platform Support + +The immediate customer need for Greengrass lite is to run on embedded Linux systems. However it is anticipated that non-linux systems may be targeted. The architecture will need to isolate platform issues to simplify adding additional platforms. It is acceptable to have multiple versions of platform specific services. Different platforms are referred to as hosts in this document. + +### Shared MQTT + +AWS IoT Core connections requires that all connected things have a unique identity. Two applications running on the same device but seperately connecting to AWS Iot Core will require unique identities have a limited number of topic subscriptions (50). Greengrass devices track the number of subscriptions and open additional connections as required. Tracking subscriptions and managing connections requires that all connections go through a central service (Greengrass). + +### OTA & Deployments + +A key function of Greengrass is the managed method of updating the software at the edge. Deployments allow new software and any dependencies to be added to a device while OTA allows new software and updates to be delivered from the cloud connection. + +### SSH Access + +SSH Access allows a console user to get a direct SSH connection to the console of a remote Greengrass device. This connection is very useful for more difficult debugging sessions of remote systems. This function assumes the host OS is some form of Unix. + +### Cloudwatch forwarding + +Cloudwatch forwarding is the task of forwarding the host logs to cloudwatch for review. It is important to include the entire host logging system in this forwarding to be sure all health/debugging information is captured. + +### Orchestration + +Orchestration is the task of starting the system services in the correct order, monitoring the health and shutting down the services as required. + +### Token Exchange Service + +The Token Exchange Service (TES) interacts with the AWS Token Exchange Service and provides the tokens via an HTTP proxy to the local system. + +### Quality Goals + +The quality of the system will be measured against these goals: + +| metric | qualitative evaluator | +| ------ | -------------- | +| Size | Smaller is better | +| Reliability | long up-times. Longer is better | +| Compatibility | Works with existing generic components | +| On-boarding speed | Fast on-boarding for new developers (internal and external) | +| Low CPU load | Smaller is better. | + +## Architecture Constraints + +### Single Responsibility Design + +The system must be designed so components are independent processes. This will ensure the following characteristics: + +1. Faults in one component cannot leak into other components. +2. Data transfer between components is explicit and performed by copy. +3. Features are added by adding independent components +4. Components are isolatable, simplifying some security concerns. + +### Process Orchestration + +Orchestration is the process of starting/stopping processes in a coordinated and deliberate fashion so the system starts-up/shutdown correctly. Many orchestration systems also have provisions for restarting and recovering from failures. + +Process orchestration is performed by the host for all anticipated Greengrass systems. Where possible, Greengrass will use the host orchestrator by adapting the Greengrass recipe file to a suitable format for the host system. This adaptation could happen in the cloud or in the device. This constraint does not eliminate the possibility of a custom orchestrator. This constraint expresses a preference to use the host native orchestrator. + +### Host Logging + +All hosts have a logging system available to all applications. This logging system handles log rotation, log viewing and other log related activities in a host specific manner. Leveraging the host specific features allows the customer to use what they are already familiar with. + + NOTE: This assumes the customer is familiar with the host level logging system and chose the host OS for specific features. Greengrass is not a complete operating system so there will always be a tradeoff with user knowledge of greengrass and user knowledge of the host. My assumption is the host log analysis tools are very rich for that host and the cloudwatch tools are also very rich. The greengrass features cover configuration of log coverage but not of log analysis/processing other than forwarding them to the cloud and rotating them on the device. + +## System Scope and Context + +### Technical Context + +Greengrass consists of core components (the nucleus) and some number of generic components. Greengrass is customized by adding/removing core components to provide the system functions. Generic components are typically developed by customers to provide the business logic for a greengrass edge device. Greengrass is responsible for ensuring all components startup, providing system status to the cloud and maintaining the core services required by the generic components. + +### Solution Strategy + +The strategy proposed for Greengrass light is to separate each of the Greengrass functions into small independent processes. These processes will communicate over an internal Greengrass databus. The databus implementation is isolated into a shared library that is dynamically linked at runtime to ensure all components are operating with the same version of the databus. Where possible the host environment features will be used to implement basic behavior like orchestration, logging, rollback and permissions. + +Building Block View + +Open-Box Overall System + + + +Motivation + +Compatibility Existing generic components must communicate via IPC Add a single IPC interface component that bridges the IPC to the internal databus. +Single responsibility Keep components as separate processes and focused on single tasks Keeping the components in separate processes forces the components to be fully independent. +Use host services Reduce complexity by integrating with host provided services for process orchestration and logging. This also reduces customer integration training as they are already familiar with the host capabilities. There is no need to learn new Greengrass versions of the systems. + +Size & Compatibility the databus and logging interfaces must be common across all components Sharing a library for the host specific elements ensures all components in a system use the same mechanisms. + + + + +Contained Building Blocks + +The Greengrass core is comprised of components that provide the required functionality for a specific system. The key core components include: + +1. Greengrass Core Databus + 1. Implemented by a shared library +2. IoT Core Interface +3. Orchestration Host Adapter +4. Log Forwarding +5. Status and Telemetry +6. Deployment Interface +7. Remote SSH +8. Token Exchange Service (TES) + +These components connect to each other through the databus and provide function specific interfaces. These blocks will be discussed in detail below. + +Important Interfaces + +The databus interface, logging interface and configuration interface are used by all the core components and connect the Greengrass core component to the underlying host systems. The recipe is the interface to orchestration and it is critical to launching a Greengrass system. + +Greengrass databus + +The Greengrass databus is used to connect the core components directly together. This interface can also be used by customer developed components if they don’t need the compatibility provided by the Greengrass IPC interface. +The Greengrass databus can be implemented in a variety of ways but the usage model for the bus is a 1-1 connection between two components. While the model is a 1-1 connection, the actual implementation is up to the host interface library. + + + +Databus Interface + +Access Functions + +The databus is accessed with the following 4 API functions. + +connect Open a connection to the named service +close Close the specified connection +call Make a blocking RPC call on the specified connection. Return with the result. +notify Make an RPC notification. No response. (equivalent to QoS 0 publish) + + + +Service names are converted to appropriate addressing of the destination databus channel by the databus interface library. The details of how the addressing works is an implementation detail but one example of a point-to-point topology could work by mapping each service to the path for a named pipe. Connecting to the service would open a connection on the pipe. This mechanism would allow a fully connected network topology which minimizes the demands on the databus bandwidth. + +Databus subscriptions + +There are some operations that require long running commands where data is received asynchronously. There are three basic strategies for these commands and it is up to the API designer for a component to decide which is best. + +1. Long running command. The calling component makes a call for the data and handles data as it arrives... forever or until the connection is closed. +2. Polling. The calling component make a call to start the data. The data is cached by the receiving component. Later the calling component makes a new call to retrieve any data that is available. This mechanism could have longer latency. +3. Reverse data channel. The calling component makes a call for the data and provides the name of a reverse data channel. The receiving component connects to the reverse data channel and sends the data as it arrives. + +Data types + +The databus interface normalizes the data sent by providing a limited number of simple datatypes. + +boolean +64 bit signed integer +64 bit floating point +buffer array of 8-bit values (bytes) (this includes strings) +map A set of key-value pairs. +list a sequence of identically typed items. +could be maps or other lists. +64-bit unsigned integer (Consider this, but hopefully it is not required) + +These data types are provided to simplify mapping of data into a host specific serialization format. + +Serialization + +The serialization mechanism is not specified by the architecture but it must be consistent within a host implementation. The data types were chosen to be simple to map to popular serializers such as messagepack or JSON. + +Communications Path + +The communications path should be chosen from the forms of IPC (not to be confused with the Greengrass IPC) available to the host operating system. Some options are: + +1. Unix Domain Sockets +2. Named Pipes +3. Queues +4. FIFO’s +5. COM +6. DDE +7. WM_COPYDATA +8. File Maps +9. UDP/TCP to a local port +10. Binders +11. Bundles + +This list is not exclusive and some options are specific to specific operating systems. The databus design is not dependent upon the choice of IPC so long as the performance requirements are met. Validate the databus choices with benchmarks to ensure the system performance is sufficient. + +Quality Characteristics for the databus + +Speed GG IPC is expected to require ~100msg/sec. 1 IPC may require a few (10?) databus messages which puts a lower bound for the databus at 1000 msg/sec. +Simplicity The serialization is NOT specified in the architecture so choose something simple for your host. One suggestion is messagepack because libraries are readily available in many languages and the final data is small which helps speed. +Topology The physical topology is not specified. Choose something simple and fast. There are additional speed consequences of some topologies. The star configuration will reduce the speed of the databus by ~50% so make sure there is sufficient performance to handle that load. +Debugability The star topology is slower but has advantages for bus monitoring & debugging. + + + +Error Handling + +Components will generate and receive errors as conditions require it. When a component encounters an error, it must log all the known data before returning a basic error number upstream. Consider the following: + +1. Component A calls component B to perform some task. +2. component B fails a the task (The internet is down) +3. component B returns ERROR_RETRY (or similar) +4. component B logs details like the internet being down, the endpoint being connected, any host os errors, etc.. +5. component A logs that it received ERROR_RETRY and what steps it will take +6. component A waits a bit and retries. + +No error data is lost, but importantly, component A only receives an error that informs about the recovery options. Component A lacks context to fully evaluate all the available options and must quickly pick one. Additional information is for the engineer and not for the program. This information is for the log file and must be logged by the entity with the most complete knowledge (component B) + +Some data + +A databus implementation using Unix Domain Sockets + messagepack in a point-to-point topology has been tested at ~100k messages/second. On the same system, the GG IPC performance also achieved ~100k messages/second. This system would be considered acceptable since the GG IPC performance requirement is ~100 messages/second. + +Logging + +Logging is intended to use the host logging services. In a unix system, it is expected to simply use stdout/stderr and rely upon the underlying orchestration system to direct these channels to the system logs. Using stdout/stderr (where possible) allows components to be run by the user and the messages are reported to the user in the terminal. While running the same component through the orchestrator will send the logs to syslog and by virtue of the log forwarding components, the messages will appear in cloudwatch. The logging is handled through a simplistic logging interface which allows different hosts to map the log messages to their logging services in the most appropriate manner. For example, windows system events are not an exact match to syslog so it will be necessary for a windows specific logging library to be used. The logging interface is expected to be statically linked to the component. This is acceptable because it is not necessary that all components share the same logging interface so long as they have the same logging destination. For example a customer may choose to develop a windows specific component and directly use the system events while another customer may want a more generic component and use an interface to allow different hosts to be supported by linking to different libraries. Two components on the same host may produce log messages with unique formatting and as long as the messages appear in the host logging system, they customer will be successful in debugging. + +NOTE: The log forwarder will be host specific as it captures the host logs and forwards them to cloudwatch. The forwarding strategy is critical as it allows 100% of the system logs to appear in cloudwatch so long as there is a cloud connection. + +NOTE: Greengrass has log configuration. This configuration must be translated to modify the host logging behavior and it must be used by the component logging interface to modify a single components log behavior. + +Orchestration + +Orchestration is the process of starting the components in the correct order and ensuring that they stay running. Greengrass components provide a recipe document that informs the orchestrator how to start the component and what the dependencies are. Greengrass lite will use the recipe document as the input and translate the document into the host native orchestrator format. For example, the recipe can be processed into a systemd unit file or windows system service registry entry. The translation process must be developed for each host. The translator can be performed by the customer during component development, in the GG cloud console or in the GG edge device. +Recipe documents contain descriptions of each phase of a generic component operation and any dependencies needed by the component. These documents can be translated during deployment into systemd or initd documents and then the translated documents will be used by the host to automatically start Greengrass. A Greengrass system monitor can keep track of the component health by using host native interfaces (systemd/windows has an API for this). This strategy requires 2 simple host native components. + +1. Recipe translation +2. Component Health monitoring + +Each host type will require these components but the component functions are well defined which will simplify their code and maintenance. + + +Component Health Monitoring + +This component provides the subscription data for IPC for monitoring the system state of the components. + +Example + +SystemD allows processes to collect process information over the “dbus”. A health monitor component can collect the greengrass component information and provide that to subscribers over the databus and through the IPC bridge. +Alternatively, a file could be kept up to date with a list of components and their current state. This file would be updated by orchestration operations (could be a script) and read by the health monitor. + +Configuration + +Greengrass has a global configuration system for all components. This global configuration allows the system state to be backed up and restored outside of the component operation to enable state rollback (not system wide rollback) and system state. All Greengrass hosts have some form of lightweight database available to them. These databases have transaction logging, security and rollback features. The configuration interface provides each component a direct access to the host database. A configuration translator can update the database from GGv2 T-Log files for migration support. + +Example + +SQLite (https://www.sqlite.org/index.html) is one popular small database that offers small size, speed, and reliability. Putting the configuration in an sqlite database would provide fast direct access and the sqlite features can be used for backups, restore and security. An open question is if components should use direct access to sqlite or if they should go through a configuration abstraction. The abstraction allows the database to be changed without affecting the components but sqlite is already cross platform and widely supported on all the hosts being considered for Greengrass lite. + +Runtime View + +Show a “typical” generic component publishing over MQTT and receiving subscription data from MQTT. + +Simple publish by generic component to IoT Core + +The sequence diagram shows a basic MQTT publish from a generic component. + + +Sequence of operation + +1. The generic component sends an publish message on the IPC socket where it is caught by the IPC bridge. +2. The IPC bridge determines that the publish message is intended for the IoT Core Component and sends a connect message to the IoT Core Component on the databus. The connect message is needed because this is the first time the IPC bridge has connected to the IoT Core component. +3. The IPC bridge translates the publish command into a databus call command and issues the call on the channel made in step 2. +4. The IoT core component issues the publish and returns. Databus call’s are synchronous so the IPC bridge was waiting for the response. +5. The IPC bridge places the response into the correct event stream on the Greengrass IPC system. Greengrass IPC can handle multiple simultaneous asynchronous data channels (event streams) so the IPC bridge must maintain state about the publish command and place the response in the correct channel. +6. Later, the generic component sends a new publish command to the IPC bridge. +7. The publish is immediately translated into a call because the previously opened channel (step 2) is still open. It is possible for a single channel between the IPC bridge and IoT Core component to support many different generic components. + +Observations + +IPC bridge knowledge dependency upon IPC message handlers + +The IPC bridge routes IPC messages to the component that can process the message. To eliminate a dependency between the IPC bridge and every IPC processing component, IPC processing components must register with the IPC bridge at startup. The IPC bridge will maintain a routing table for each command and will forward the command unchanged to the handling component. The handling component must understand the IPC form of the command. The bridge will perform minimal translating of the incoming message and send that message over the databus to the processing component. + +Minimizing IPC bridge state + +The synchronous nature of databus commands allows the IPC bridge to maintain ZERO state for each message. The message will arrive on IPC, it will be routed to a dashboard component and the message handler will block waiting for the dashboard component response. The response will then be routed back to the IPC source in the same function that received the message. Incoming IPC messages will need worker threads or similar mechanisms to ensure sufficient parallelism in the IPC bridge system to minimize latency. + +Long running IPC commands (subscriptions) + +A subscription on IPC is an example of a long running IPC command that will be periodically updated as new information becomes available. The IPC bridge will use one of the the databus subscription strategies (above). The exact choice depends upon the size/performance tradeoffs of that IPC bridge and it would be possible to write different bridges that optimize for different use-cases. + +IPC Security + +Generic components have access permissions for IPC commands. These are conveyed though configuration settings. The IPC bridge component must validate permissions before honoring a request. + +Deployment View + +Show how a deployment will work from receiving a job, downloading the artifacts, executing the recipe + +Basic Deployment + +A basic component deployment follows the steps in the diagram below. + + +1. A job document is sent from the job service into Greengrass to be processed by the deployment service. +2. The deployment service downloads all the artifacts into the artifact store. The source is usually from S3. +3. The deployment service consults with the Greengrass service to ensure the correct versions of the job specified components are being downloaded +4. The recipe is fetched from the artifact store and converted to the host specific orchestrator data. + +After the orchestration data has been delivered to the host, the deployment system can command the host to activate the new component. + +Example + +In a linux systemd environment, the orchestration data arrives as a one or more unit files. A typical example of a systemd unit file is shown below. + +[Unit] +Description=A greengrass component +StartLimitIntervalSec=3600 +StartLimitBurst=3 +#HARD dependency +Requires= IPCbridge.service +#WEAK Depenency +Wants=TES.service +#For Version +Conflicts= TES@1.2.service + +[Service] +User=GreengrassUser +WorkingDirectory=/opt/local/greengrass +Environment= +ExecStartPre=/opt/local/greengrass/componentdir/componentStart.sh +ExecStart=/opt/local/greengrass/componentdir/componentRun.sh +OnFailure=greengrass-recovery.service +Restart=on-failure +RestartSec=10s + +[Install] +WantedBy=GreengrassCore.target + + +After this file is created the component can be started manually by: +systemctl enable .service +and it can be configured to start at boot by: +systemctl start .service +Of course it can also by started programmatically through libsystemd and the dbus API. + +Motivation + +The deployment motivation is to reuse the host system to the extent possible. Greengrass V2 builds a unique greengrass orchestration system so that it will be portable. That system is very complex, the initial POC indicates that supporting multiple translating systems for recipe files is less work than a single common system (at least for a systemd target). + +Quality and/or Performance Features + +Deployment happens once so the key quality/performance attributes are: + +Accuracy Ensure that the correct behavior is translated to the underlying host orchestrator +Simplicity Ensure that the deployment process is clear, debuggable and maintainable. With multiple translation systems for different hosts, the clarity and maintainability of these systems is critical to the simplicity. +Traceable Ensure every step of the process is logged and auditable. + + + + +Rollback + +Rollback is a feature used by Greengrass to restore a previously operating condition. Typically the system state will be captured before a deployment and if the deployment fails, the state can be restored. That state can be quite deep as the deployments can affect the entire filesystem. + +Constraints on Rollback + +Size/Scope Does the rollback cover Greengrass related systems or the the entire filesystem? A deployment is capable of modifying the entire filesystem. The operator knows the extend of each deployment and what the rollback can cover. +Filesystem Different filesystems have different restrictions on how a rollback can happen. ZFS/BTRFS snapshot? +Backup Copy of Files? +Links to old versions of binaries? + + +Basic Rollback + +Rollback is implemented in a device specific way by a failure component. The failure component has the task of correcting a failed component or rolling back to a previous state. Detecting a failed component is the responsibility of the host orchestrator. + +Example: + +A service FOO is installed on a systemd host. The recipe is translated to the following systemd unit file. + +[Unit] +Description=FOO +StartLimitIntervalSec=3600 +StartLimitBurst=3 +OnFailure=greengrass-recovery.service + +[Service] +ExecStart=/usr/local/sbin/foo.sh +Restart=on-failure + +This unit file will restart FOO 3 times within an hour should FOO fail in any way. After 3 failures in an hour it will execute the greengrass-recovery.service. The greengrass-recovery.service is described in the following unit file. + +[Unit] +Description=Greengrass Recovery +[Service] +Type=oneshot +ExecStart=/usr/local/sbin/greengrass-recovery.sh + +This unit will launch the recovery task ONCE. The recovery task will take the actions appropriate for this host. That could be attempting repair or it could be rolling back to a previous version. + +Note: Windows also has a similar mechanism for system services. After a failure, the windows service manager can perform actions specified in the service registry. +https://learn.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_failure_actionsa + +Rollback Strategies + +Different filesystems have special options that can simplify roll-back. There are 3 different scopes to a roll-back. + +Component Just the failing component needs corrective action or a roll-back +Greengrass All of greengrass needs corrective action or a roll-back +System The entire OS needs corrective action or a roll-back + +These scopes need to be considered when creating the recovery process. It may be necessary to partition the filesystem to limit the scope of some rollback technologies. + +Example 1 ZFS + +ZFS supports filesystem snapshots. These are named points in the life of the filesystem and it is possible to revert the filesystem to a snapshot and all data newer than the snapshot is lost. This is very useful to roll back a greengrass device but it will destroy log data that might be needed to diagnose the cause of the rollback. Using a separate data partition on the filesystem to hold the log data is one solution. In this way, the Greengrass system can be rolled back but the logs are retained. This is not the only solution but it points out that some care must be taken with filesystem rollback features. + +Example 2 OSTREE + +The ostree (https://github.com/ostreedev/ostree) system allows “gitlike” access to artifacts downloaded into a running system. The system uses hardlinks on the downloaded artifacts to do transactional upgrades and rollbacks all the way to the root filesystem level. i.e. it is possible to replace the entire operating system. + +Example 3 SQLite + +For a component level or a greengrass level rollback it may be sufficient to move the configuration database to an earlier point and restart greengrass. This can be easily accomplished in SQLite because it supports rollback journals and the state can be restored to previous points. The rollback process would move the SQLite to the previous point and then restart greengrass. + +Advanced options + +per-component failure response + +Greengrass Lite consists of core components that are each started by host orchestration files. It is possible per-component failure recovery processes to take place. This level of detail is not currently defined in the recipe files so the current recommendation is a global roll-back. However, a future update to recipes could allow corrective action on each component before a global roll-back takes places. + +graceful degradation + +Greengrass Lite consists of core components that may not all fail in the event of a problem. In this case, some services may be able to continue operation allowing a “limp-home” mode. This behavior can be created in the recovery handling. + +Logging + +It is critical that the cloudwatch log forwarding task be as independent as possible to maximize the chances of cloudwatch getting a complete set of logs during a failure. The host logging system is the log path in all cases (before forwarding) so even the case of a full roll-back to an earlier state, the logs must remain intact. If a filesystem snapshot is used for roll-back, the logs must be in a different partition to avoid being affected and loosing log data. + +Architecture Decisions + +The architectural strategy of this Greengrass lite is to be as simple as possible and letting the host native services handle processes to the extent possible. Memory safety will be handled by using industry standard tools such as CBMC, valgrind, and fuzzers or by language choices such as RUST. These decisions can be made on a component by component basis because each component is an independent application. Dependencies between components are minimized by their isolation with any dependency caused by RPC needs across the databus. This type of dependency can be easily mocked for testing allowing components to be developed and validated in isolation. + +## Risks and Technical Debts + +Risk Mitigation Impact +Host default orchestration insufficient to run a recipe Write a custom orchestrator Only orchestration component is affected +databus performance insufficient for some tasks 1. Databus can be customized behind the abstraction +2. Re-evaluate the component functional division of effort +3. Some components can make a direct connection to AWS 1. Only the databus library is affected. +2. Multiple components may be affected as the new function division is implemented +3. Only the performance components are affected. +High Process count affecting system performance 1. Evaluate the databus thread usage. A star topology is slower but may have fewere threads. +2. Combine some core components +3. Consider more capable HW 1. Only the databus library is affected but performance changes must be benchmarked +2. This will be complex and introduces the dependencies between components. +3. The system may just be too slow for the desired load. +A expected host feature does not exist on a host 1. Change hosts +2. The interface component can be more complex and implement the required feature. 1. Even an OS change can add significant complexity to a deployment. +2. A more complicated interface component to maintain. +Assumptions that multiple small host-specific components are a lower maintence burden than 1 cross platform component with multiple platform abstraction layers. Test the assumption frequenctly. It is always possible to write a component as a single cross platform application with the platform abstraction layer. Some greengrass features may be best implemented multiple times for each host and other features may be best implemented in a more centralized manner. This architecture allows each feature to be evaluated seperately. Lots of debate on the best option for each feature. + +## Additional Areas to Discuss + +* Configuration store - each component has configuration associated with it, that (GGv2-classic) is timestamp merged with multiple authority and available via IPC configuration functions. Related- if someone brings a new protocol translation, how do they apply the security guards on that too. +* “config.yaml”/TLOG - debate on if it is really necessary/desirable to switch between GG-classic and GG-lite. If you can relax that requirement - in which case the argument may be asked if it’s really the same “v2” product - it relaxes need to capture and log config transactions. Related question is how the top-level system configuration is applied. +* IPC security - there is rule-based security around IPC, and also finer detail in pub/sub actions. This doesn’t map well to file permissions. Deeper dive in this with AppSec involvement. In particular, there is an identity attestation mechanism possible with GG being orchestrator that allows a component to provide it is acting on behalf of a component identity. GG starts component “FooBar”, presenting a token representing “FooBar”, that the process re-presents to GG to prove it is “FooBar” or a representative of “FooBar” - a non-breaking alternative to obtain this identity is required as FooBar is now started by systemd and not by the GG orchestrator. +* With GG-classic and previous GG-lite design, there was a path on how components/binary signatures can be verified to allow end-to-end attestation - how might this be accomplished here +* The architecture is thread heavy to promote simplicity. Do an estimation of an application that has sufficient complexity of pub/subs, and number of threads that are likely to be consumed (but idle) - what is the resource cost of that application - this will help confirm that the approach isn’t going to be a problem. +* Any other potential issues when running in docker? systemd is one +* How do we get to an estimate of time to implement this that the team can stand by? + +## Glossary + +| Term | Definition | +| ----- | ---------- | +| GG IPC | The Interprocess communication system used by Greengrass V2 for communications between generic components and nucleus (GGv2 application)| +| databus | The IPC system suggested in this document for communications between core components and future "native" components. | +| host | The collection of CPU, OS, and OS details that create the running environment for a specific Greengrass system. | + From 317605a494b1433d79d7aa7744e39982468fce69 Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Tue, 21 Jan 2025 10:59:13 -0700 Subject: [PATCH 11/14] architecture drawings --- .../building block view.png | Bin 0 -> 107877 bytes .../business context.png | Bin 0 -> 88440 bytes .../deployment view.png | Bin 0 -> 56241 bytes .../interface options.png | Bin 0 -> 68259 bytes .../gg-architecture-drawings/ipc runtime.png | Bin 0 -> 60697 bytes .../technical context.png | Bin 0 -> 30439 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/design/gg-architecture-drawings/building block view.png create mode 100644 docs/design/gg-architecture-drawings/business context.png create mode 100644 docs/design/gg-architecture-drawings/deployment view.png create mode 100644 docs/design/gg-architecture-drawings/interface options.png create mode 100644 docs/design/gg-architecture-drawings/ipc runtime.png create mode 100644 docs/design/gg-architecture-drawings/technical context.png diff --git a/docs/design/gg-architecture-drawings/building block view.png b/docs/design/gg-architecture-drawings/building block view.png new file mode 100644 index 0000000000000000000000000000000000000000..acd86f4dd427de91311430cd5c3d1ec822983d57 GIT binary patch literal 107877 zcmcGWbyOT%)30$04uRkn0t9z=3qHX;!6CT&;E3h*Qbp1?}br%Ypm* zU3l>v`2QZ)KcDz1HmDm0Mhr$yN?hFo_8=3v5np;HR6#tl_!TxbBBJ9<^x{&~wZLNQ zk#cJ(_7)izb}B;W?$0_uGdLUH;Dd19ccG(EizC1@zJ0^?`^mR=>fSdDbt%5tdrNTC zxv-^#v0bCVKC^tR@12ww!vDtywWKv=eq9Z7XF-e0s77o$BSPfP+>pz$rcp~x3HRSe0d*w;^&b2K&LF0! z>)VU$FQF4ayyLC~&6B`dwW{vrx{K5Pw~gn6ud$s}4ra10D)fQ{B@%zcck2;r zHBDjA29t>o#gBW@p4b-={F8_F{wgMUyO{Wwkp_>u;{GI5Eb(fxCK)YwLF2RBc2%zg)R zhA;(2QcXBsxEE$SMq_WrhH}($p}EKsnPVQS#V}A`oWW?}&0|n=Hr4~&po5+`LsZT~ zZngwJt`o}z6aA7EHYx0;L-s|Y0TuZG>aOyJOM)FUMzg%53m`RFLBTgaQy6S|voMVnXP3#b&0+F$W5=^QQP z?oN2l z2JBB|?kMWzlAwv5kFxQ7Sb}-U5}x*(8{DJW@3K0gX#|(?-OA_XmM9h|I!P89lDa0*=L#c3_ zbkK_`UGWfS1Q!Pz_U}i)C)zP0L=)Lc-)jHExLKFH_6(P8N6RxGIa1FUGE2Gx2SY3~ zi`44{2?j3gIjbeYJ%LQd)r{`w#{G-s$n(kF6nwXzZ89KxcX(N1K1PXjiB#mm{t7330;}&^lfMgh>rlf{V-vzD^wH)G7X8OonWFrb z+cJ&Va72nejQ3KT7$#eOmsRPk*hDy}{Q43^kMY?xH^BoyRDm=bH@A6czY_5bCdAUH?Opwsm=L|{;T0HB8Hr~T^ zxQk!=Ppr;k-@Tq1$?sImlf491fB!DBZ0^Nqs5H#V{^SYe!^7U?`gQ8jcgQR*x(6fuO%uKYS@f>l;> zQJ7f%h#VuLKQ|#H0yE-ag3UN=`U_|6Vx2-d*%e8yg+y}55r%8G@}&;Qt=Y<-6h-(| z+AvvzDhG+hMy2nd**NNC3&x<+IQB=nMbs$iLD>jQ3~)!!^d_j^-_s$ojoiKuaR|C$ zl5wG6I7UB67z6F5#FD%Yh(pDo4825ynrA3CuLgrV!rC!hJvXO%%R$5>LMy0)%}oSe z@GkJhT5o7so4v^#+X*i`cCJCuZ(;-Rh?Q6yBhdS8HqEnMCDFV~&>V|D(AlEciZZiH zXl+A?CXrl`H)K^LcLi3{XLeX3arSZ{GlOUMDM8(-%(aqF0l!4i%v4L0uy5!k!TD>{ z!3WO^r53f8*##ltkxq;uOybGE8aj&U=4{DA6q4SSyD!EYMvgiBy5tR6D*5^2@do!3 za`mLI)>)d&Y|)rm&irD$;bA}?C6|bDNE|!{95Mg3cy{QB|07{DO)X=B6Sm7M7g*Mb z;M=@_aooZ2ERtN(mvYJP9r$qN-I#hN#(Hw_-EJQGB%fF%b^MYgkHZRIoR7NHhr~gd z#}acY#9PD~{Nr{R#^`cPop2KLx5NxGO!pG69Z%^m-tMgAwsw%Yuw8i3Lp{+31q=uW zdCpmP&c|%x$`(zqKZ;yf0>1lkY&bVTG>6N-jf2P25kERA_vxLXAPv3e_n^O)5#aTo z9e){)HX33(!XRd)nj1M*Ks!o7WzbT87W3U2? z58s+ET2x4SZtElQoq!8{0-08G8CC%kEE#42Nn#)I!wQxG{NC9G%?J^)VDJ2*V@UuT zGch)c9l6fq3{vC~cJ)mU15C0Ojudy^Pa~`3 z7NlC;8$V(edn`@E9T|iK7b0ue5H>MDoYqgUStB)lJ?Hjn4g4ddqrU&^u6)X!4llrxyhu zvbJ#xr-{-ShAB@sI7{?4SX^FY_RVH^eZyX_dt7q6X36DE z*eI|~%KUTO@kF1c=7}kKsooS3v=H>jazQ%gEH(-&j7VfE+ z#F^7y={H%bQ-jK^Tf18R)pcwxVg{kN9Zkbu91;;bv25X4;kx{$2-0OT3E5*PwKnr-c{62t6|TK6wMvWMXOI05 zM~(Q;qV`8orwHI}aX%KpV@;*YwY+>!pB0%yKNWa}{T5cy8$wJ}+#lFMW_BN}`%+&2 z?SC5z&bx=m;NJ9yxrLC>wsCmDhLeTBNNy7m2 zQu*&j#Sp&9`LAdQA?}9|tn&Ss(3yG%D)_?KHio)7EcwubCE8kro-7{y&dHkMMNgBvk&}!iD?mF-{dKr5l+4PC3=z zlSx%EMMxy7{1$@*tLRJ8dbd|X@wk<4KY<S z|3-J98iYofo!pJ1cG@sXn&ORjFOB99FoiG1+G=0u&(-Bz{PV3jmT>8$e)p&LR7uU> zOyncPCf6qXcQ}?2PU>^WXLFQoQQ`apwN~=c>dIB()nQ3{BN;2svvdJ zTwH&g3pkESlj2m+`oC}1jIMItJbl>vdddA-Tp}-APLYHLUsAoK5iyz*^!weCDi{jy+4cfqS}Pai+R6{{}GvEyu)CVg0Lsx zek2s5_eTETX@^e{ooXt=t}OEUT9)4x>Sx_@i9mcf^uaKtPZZeYI#fn4W&WASQk2UG zY$TQuiJH2*KPbRAMiCP7-^dIYg6`8|MD7Oe@6ShH%Io|>psl<=8%kHs6i6j=o9iO= zy%;w?tcx&oCgOV0{!n6YEAz6spRcY&v2tpL4Lg|br=VbG2w0Y{Z=8LGo&p0%XVNVc5Gcg&E<+Ns8u=@w2 zke8ts2lLKEE(>XHhYQmmEysMG9%sYG;*zy?3;CFkS zt5Kq9K9(cS;X|#bHqY5NBDK=)JA5!-bNJ41D2choyL^nSt^_TB#f0O%jaF)SNqy26 z`PRkti5Y_5=@ufyK5bUj>NJz({Z|}5>(jq&?5wbrd^gQ%PGUrriu|%|lI#cuoesO$ z0+rFiRa$xwX$df%NLZUT;@nNbHI(5$>l6e?`CY^eMdigltUH}9I*P0_1`zOd_G{yz%yDvi+FLfxF1SVgu=1g76_pe27LN?)NgYZ@8=tjkVmwVoK>{ zHUbB=HRw4W+*Rs!{Km6u6oL>hQ{Pakhr3Hbl-(IbrIz<&FlQ7Z0p`PLOU~ocgmt2; z{_s9#=4Ev=#uh$b8dkt9OZFWP1pDKZkua{7EA0>b?P%nIbjlQK^wWSEA(GgWubx6^ zcHK9Zi6S;z_C6M#Z1cWWl|2>|sbgFzHeO?Yd-xWQsjf~@eSM!`v%ZhP!OvH8w06JA z*9Vqyn*ol|gzWHovM?>1jl?`LI#cy1kx%E-_ktwf^)GadERWHYyH*1F*t+8<5Q53o zH^!Nx)#5eqk~><#5bU)=WDJs*Pi$;nG^~p!R8HN9Khy1+zo)XBgv$6+YYB!}e4dnF zsI@Y|$YtYE0JXerJ^Dta+om#9OrZ=@f+yVd7wvzV$wk9rsq@*ST0vWIU$$nf5qZna*P4dfO@&zhM2%9#R z3rQgy&ld?pj?DlHiD~slMbq`;J}-=Y$%ao_r}m=r^4R7rg9&uc^WsMj^C#P=zs}mT z)Y~oi*cN)43kiTn<}q-aH(Pl(s#0!EB;K?mb-uiR1M>+gQGInb#LBt29}*n(E`=xK zn&IDZ5H_r=zhEN^yyGl5nj`QY6rPm5JBM~sS5na~04m?WqCG@|AI+3ORe{;&XNIIWuY zZ$&A^2n!A}$RcFU=#8$?0-ULCG@71Z%~w|@ed@U_{sp0Mr6@N3{Z)=q;mvS`3~ zD=S|PMjUWtiw?g0t>Qk5)!}Kgzk@YHK+Ju~+;MG$voHE|S>fl~vYq8UQdD*RaJ>Q{ zJsYrYJ{Ngd>+>BSZ2upZP6uhaN32#f{D8DU1-1S80bk)ij(*7=~SpIGsj zCA@bt`GXyll-*eB{b_>W$;IyEaNVq-^|I%7rW0MkjdV^S%4^&&0pe&(H1sIUw-||? z2@Glrp=q$REPo9Yhy(8F@w#IeP-_-5Iu>NkfJYz#A7E#u1VY`7sz^R{IjU2yZv2WL zwkparmx&=a__C1@3S=D!;5Y)S{ZZ$e$al|0#i<5M32~#1_K39q4!<_vIP_rfrli}q z&qq>-F59%8_L+AFqnd9F#BN=$`0*0zI|NwGmS;{+s)#OqEGrov!I333x|+A3a0bLq z8sJ}7T=r*%TQ6tyh-$*^L$y0dt=4xY<>)d^!MB@));=zPH`aFte^~?&{DwT40YpU8Kk8oT`WI_aqSHne=Q9ZZi~R7(brI_|4%^Y{fgq z5OWVY;P14akJPML-2jqUlIWa87Er2ZcwceU!F?h5pcpX){9?t5vC2zyQVqEyOv32{ zh7bRdg^1Xei;Y#>=C3ZGF`_&{NEjUONa&U9WtH7%TWQwi>|Af@xe~H`&g9OspYHp? z1na=qaJG3}%KK7xdv#-BkoeGy-Wgbz)s>#Fb_ET8q06$wC}%h6dqr$SD(nU5j9~@V zHdBlO(Z`z}Vn(eGzI8-AHYvA&B*N&iZ8@w*TKQ2k3xp1hYg>{{XSYW!$7zIy9$nEl zY^TqwgIJTvda_W-7JTCB4PIN$+6N+*91pk@^Ol{iHO{w0;v(X|^llJp1@&)Sb4Z`( zpBO(%Y1`ETk8X7Nq6akU>VDoLyDk(ZDpb#|srUYFzv6qoRin>oFQNH%raKQ1xio|- z?7dO$izc&vqnu&sb#-7Ra<@Yx2-o8QM2jpfb|@?3oGU)(QEk_Qj1_Y^$fOQpZ_!G{ zxq(2Xfb9D>lWY-R8!tc^Ra|m9Zz+Db^|{?l9;VCoF>ZF*HO6QJ+-EBI;clJ}Q}BST zX4cSq-uVHzPW3GR$eck=t?>VmcBzBFt!sYFEdshRyp5U`4U{*pdh$woM_G<{A6HX|J{_S}9Z^5+W z!7%P&&_Go=H@J-B5&pv?3Rk!6)7GA)JU-vxOgvPAC!@Dmf_^K0Pi+PiT@Al+aXyp4 zmM=9uJ^rz+=Qr-gA&EY6xUSty(i_QgPScGbU{;k*=dy~+jSa?dE`@w5DKiJ(tc6Ya zUZdXwi3K&gXN^9{I=cgEe6tP2R6Mfep7}any9L95KrvrBe`vI_y*>MGp&=62b$s4* zO)GQS2rE;vHLL_>8g2UkO0H?YTj2WO`m)B!3C*~C>eVstimyeQ5r$5DLDJx6UH)~- zC~N!OU}^o?pt*+S_mB*5(D(?4nTf_8S5G*WE8kaE;rnoz!27r#rV;tv{OaPJ zL~z6x{)+5O8s*s7SLc8QcuoY3ls0Xp6$06tLY*4(ts7{JiY@1FZmh-7YsP!$VY=Qa zrSisk7A%pQj}Y=yUVFM}lA~w0J2x}`*wiSLuI{8@syx{YOvc|p5R}L)=!Eso-!>?n z^#0J^uO<|8cHxAme!skBAte-@$e2&Q2I%>;ycm(@t|6>)ob_4`yHc^W&kI z>aiMt{9DH&(~R#jl7{zLe3C8cSQR9q7uAo$d^-Sy;qt2I=seHE2B(^o0!vfze(%y6 zpN8^!49rtDhVL1}WUHS0BzW6EDa^o~mwDeS1w!H7DvnTdVzc=0GyeBmhzmE#aZQEQ zcw5-~d4Bxx@7i$*!p}0@tH|WFr}gtjbT#WqdgY5)UeI>)VHTIt;S*t}V!U%W*rTJbks6V)@Up-;*^<(*|zONX|8e*PBq6$5t4=xLOQmMFLc8ltnELSci^E-hiPSsPb5g`@hnYK zr4o5=VTPf3ZHIq+F|MjAhT zwQ9b1+Deebdhm_B;uyzW#?oot}|ox%uY|!R>sFi#jI5#mSTjCL@6alrtlQjzXk%JHUu~O>Lc_p zgDj3MWSS4CE^(@nDWXYOFVbxvQ?~E!?hv*XASbWP6b?F`9)0zdS<{Q05YMTfWby5s3#R7UoV_FSg_c={_5ACGXN{hc5zk%2*`HoI38 zK`YYH}FTSFa{TZBBl8P?^mMXlXz)rVirLLC!2 z16{piJn7*3RDNy6946bMw|LUtxcB*(Fq%VVfR4VcrJ?D5$y+Q z9wrfdQ{`>ozJJ`-PoWfIb|=~<%<}TMIM==K=yKUwg=BOrf~C@~Vp*80>as9hyWw)7 zG_$dA#n0w`rR}uYRrF7>$QS67r@vCz>9XIg8Bg1^mJV&z^_4Il+b31W7AH=-nO{V0 zSSm{`Hwp20f7YJX)3Fxqm#TX?Zx)?xnj2=Z-rf7=Md8xr-v3?+(lRva@x7SByJ|jO z3!`23+JW^3_wZXlyt9R`ZQzhh0zDy~E#;_vYi9|}!tN`_v6m#FU+L6Udl2;Di{XP} zL4RbEgl3?x^tve2AIa5U`MLh$g5|N_D_46*vs2Yit}q?tY(c7hoe1aKWWyk6c%XTxV>ogZKQ z;5_h%E;GeTK}zNbwA3Gu%9LAnw>r(pOuV?SgzlXwN@BH$&{{5ziN<)eSdWHvqnLOa zEF2t6V7-J)zR?d$-E=!$lZ=W;WJrgHqDod5D44`u1MUA@D|0tqZuR7em^n-02IPN`xForrlW(fo4E7yl}E)OxPGKf4)!nXWPsMH%Tf z&o^h7Lf6+TV9~ChIe{{`i8WcMdYd!e!&e+RStm)%gg;9@32FZ$NMj#asnavm+d~8C zuy(#DG2c#i)1fu>3SyW7l$(p<^B07unKs-MopSk52(xLrq= zir9OdiEUkfJxOw9yvmNq?q|PVibqrM)4C8AW`B$gQv*BoPF9S@ey>#A|G{~;U`-5) z{IgK=Xi{M>aJ=|)NYbuh+k$)?vIR?HdgT=n9bwqXanBi4p|T-Anr<(;?Z_U;MTS}T zA%p|h?8gwO{K%nXbd~%CUF&8!bRq0hERf{*MSw^{a;31VW#F2)c0uJrsx~QcpDVPZ9GeM>dK?ANiuN7F*+nG=cDF*9PP_EmZ`W~Mt z(#OD@Awj^q#;e>&1=kVZU8kw;(#)(^4JAfa4(r*8FmUd=luS)IZEvt+!%e^o(Tnf( zT0>@R8a`1~U~d2X3Mq9h4U;a6G;o((yKy8&uUh$|X`>#0jNKh>k<2Mg(!D=zM-yC6 zi8!C=uy)Z03jp&`oDHC-=zAJ$4L zcNvoap=I#WW~A+XFrKm{n^K8*p({=bOg7Q{OcLUk$R~vxam`k39h-2+uO1r>90+`E zQPt+>(k<9m6uDmph~v4u6)WB`sj>RkHGQ8-CL%oX{ffe}T%(1zN8@J=tl92j zo3qXj^}R8ng}yo zgjvs3_2T0gF5KuZwid!}%Ia^=gcRT;u^iZ_&czl9fvDM0mZ8D{VsIUWTj4!5+T?lyMY)@2kE)%qt}NQZOw5U;#S}ax4M{^^MOY3mY%LJ^ce?m z@HM*0(hM?=+_>9;@5gU)yZX3Qxt8aamw5VZXv!Z>?0==p5;iCddHamnB>;#aI3^jmC7MgNqIX|ve(n%y=I(n!&|&$6}PeO$Aj+St^s z46!rO>aZN;%XnBH)jLHF`LgBP-do5=6TGtDc-;QS=2bM` z4H@%k4K0)42L4vE{b18MK|_c6e3kOxvh!^fVHSlQ>Too+VD0??)zG@Yfc}l*+Uz1j zt1Q%?%r!c012Qs$6yAj;c(7ku6J5qQ!%gVnOatq-I3J+$WG>HQzT3OW(}iFC%>%mr znKWt;NS*aXx5hGKkVT^yJtSWqgZaAUx-MiSB?CxE9WFvC8uCxqwB}?ONXypg(M3~! z`Bau0=&e2IKi(J(`*cfRhtxj2tja9MBc8Oe<_f%N80HxiQuwAK204~(iEc!N3n3wB zjUcLLEMe^f}F?!R39l7XsTph9-{$!$O-~4^vW#xCvQ&|Wh z^&+;><7mf6b<@_}07A=qQBNTmdrN(z@D!`6y>IVnj|gOYA|Q5ZY`w#@)|zKFT}wh% z+89kAbLL5D)H~LtR|64Wkla{w>Ya4l4(7V2zBu(ep?t-bvS$&+V)xiNOzPCj$$qQq zR8SaUXu}~w?9CN8q5`&gr3SydD5jtF6!x^6@N3dyZoJx-O(K!84JlTAy!V?gaY?b* zTlsJ?;gMqa`0yYyvLDbduYKT-FxVUHHjkt;L}Y$l5Qu8oH3_}~=t`8vKbptOZDp`O z*)o#)l!=RKs?>&dZ4MHet>m?t+O?++7wT%r2MiIPNo$OK?%`@7p zuPF%Nv0LPG?jy38<5~vPduvrwX6M}QrurK@J;gOq7Ui`(LD^)!2aJ8bgL2b@Rj0SF zXlLtNW+c(UmX=OZ5lC238p^DKKpxDtKYcTweb>X;WkAVs=x1cFD_DouF5Ojme|?I^ zo+P(J_-d|)ICnAb&xfbGWog#D0*YUT%^e{7N9a!V)p!t(+U-a9+_gZ+%#%IRA8UvlTQ?(LlJiam4C!231Q*+T*%=OIaIQLN@kabdR19Y z`D4oK#+>C_Sy{d=#Pi+2k>bmqC>*wq<*d9Q%QnX@;T{tbeeYp|pFm2BD;m@NlacUJ zQ)70-66fajdIW2|QB~-#zK}x~HOD4{mc=6v?d;g*evhUXr0#q@wN(h{eN)1%1uD;Z z)?MjAui?h-uQt2JdzyhHf}NFBX2zM_*z%1A(~S}2J*ql%O(_Ml80ahN+D>Mq`WGr| zNJK13%{8`_z6CGN`wJS zt}ZmXI|`rw;yXF(>Psy-Y*C`pHgABE@yeZ`70wn6qDu~VGeY?%qr-vNY1u+SM8qaN zWGhn;nS+V9-9gZNOM$ig`h}T#^cm99tAL2pCdV#+yl9mN-zuTS%fkWRD`khO4!z3J zCFt0^$}N<|lJ{D4)KJvxGABWF+wW1&{!Qf!-DdVFN2@zslY)wHLDz$@_r*J(^M#$M zJ`}bT)l(;UguZ?kBEsnw_;iJ2*+>Ffw&sMh{>&p5(FZOPt#XgWJ`|c`(m46#(&vz+lQ~)`nyey_vFxO_HJB%%I_?2HU~|6b>!FItMG(A z@5k=Kz8~gWxuK2;sOd-C(4XzvRno8g5b3aoJKN|`Rj>C1jf$~f<39|tZ+%eIgNE_w z6y~U1v|4$M8r=}tXxNG#>@GI3SZOHo4)8n--ztcnndENtzOQsy)Pbx^BgSt#+3ki6&GJM1D|r%X!OCVnzpNDO3HjgJ z7iR4puk1Mg*{{o_MbpqpR(|H2?iZ}J)-0#g!*<49yR|~w*I9f~@uQT=dKE{xUl2+&;p(uTr>`3^m`+PNX~5z1}{$k0S0#Bp$G;#XbMeE093nky~EbKAr1+PDtxinN(*vUj~qD6gUPk8ce|j-09Mr zW(*EkNl&Sw2pTq_6C4}ci|%gz87R!=YX$R7hwr^~<3fw&p3$bUW+Rr>4~mmZ0q0to zhqK!7id;Y%?6cWPxCmO2BmoEQ+T)OlPWeVE=pgMl-A$`yvNBtdC%R#gsV7S6$Ph%(^%}Q1b@l zzW-^}xp){eyXX*lI#&5jwNZ1Js0MwA$M5VH9faE;LvxVr^73+KZreqTSV}P+347M} z{k(GHa@@Yg(h!|bd1twSGljPXSyB>AQRS&*@ojJ)+H}PjXm_sNK=XL$o9~U>tn`@W zFIpw<*4k5=;gfISX>x%-;~9M3@G7(Z)=YBBPiDY+@1VzlmI@-5>coO&3Km(65xspb zYzDBQIMha1|7jHV{_e*9B9HXFQoJArIFcFMbWYi8+wsK96j!tua(E4-W<0H79EC|L z_|c@~R>0XL6AnMa(!)U~ne;7cbQo{I?f&~{?(=4Z-u7M#SASAutT8z3Du&11kFWkL z=7fe470&BO4#?zC0F8!YcmDnyAdWln4uq|HM)DT6HPM>n6H-FsGnTVK*@?riJRFx0 z=1*egOtY|?Zo;Nv+wp*{+d*!y9~S(2Enmfjj2X z$kDAaRY2<>QW~L|nZ%>p`{u6_9kvOaT@apa2L)7KeMUM50ihC;b8Jh8BTybjSmON@ z?fH5%&Y&G z9sErO$!PRgtP^xfBjeRy<(;Ts0ekmkqA=Vi5%r)Ga}5}BirAI=A6_5!2UWD+ed;-` zbEF9dlIYXm*U9^_`j0l0&!rftX#Zo|4eDfPGkUy$Sn_`Itn(jyy@3s0_^-bve)tu5 zp8dLkF-e^+pmLA5)TN|`AW!QD{j`0;8E$RiM1zOLO`}Z*MQv%w9k5slYNXwAH?DhbtG#*}a_U_lOxKEz9uDJkZP7oMQ+&wHFNBvRYyA;~xyL`a}S$W|pZ>5I0 z2)D2Z-=srM{z;wcA3Q2&1EKPW8I-Lh1Nv2x^9^T)rfwWW&M7BM>bx|H z|EAgwXsuc!FY;dn?@|yQ4%BB0*B4 z>A>w9X41?4>-J^gh*85olugqNg_NE%aOvNpF!cZPHc-_68U!>;>Ok#LLhkw2+*hS) zO;Q>l#3Xtv{sq=iRzFu2O-l-QBB!a4crnUT1{Q1i`Un}n+#NaG>)zboo}2Wlr(XWA zhz7T=m(}@pcgQrXR)MA1Gt3bcWcivNv#yptW(0;pmj0|p$AbP(n*>1gzNUGZ7;EuSERqL(aspgYP zyxg4Tzu5pd41)?;zM2$)FDf5+vDJ3H%xPWG=Efg4KvcA#p)6F@M&#Bqh@kx3>`jYw zRoMfNdpXhMHGa({>Jv{?8rK(5)5K2PRrSUyUJM=xX7dPB&B7-m5YcB>@k=n?%)752 zRM&1wB&+R+_4%FH*oZ_YWAWwu$u=gH1&1#VAq@j5_(Jjs+S#SEZ0M9upq6k|YkC92 zZaaXU`SwiD+%J8bo0${0Yk`oP?+qkFv9xL5;iTLR4%Hhy>o_J3TRLI`G2owC3RlMcF2GtZIPWez{5&FL+wy|0guZn*&a+_Vc&&KXopF}9#VY1QWJ9S6$)SQtoMnN~K6SpW7#fq< zB!1_ul;@01?WgHM!0NqIgHjvlrE>P~()f4_cwgB#|2b?(Ph!?HztR@h0w}j`7B$ts zD7PQ~FXcAT7;81_{AWNhiiFdzwd}+;-HyB>9E++U1Fj#ZEu`bgO5ov-X^l&bIn{>o z`#82hk99~r0J4t#cx%yp*$5#UG@;EW|Dw*(CZE7i%Qa_24v={|03L9l8^<{+H2F+A zFNg@%5}zis31XDe%@EGQR6T0Pyl3;*hO1-ryL`p{;k~_9s>ffzn{NYOJ-1s5@3Ckn z(=1rHB`G*__qeK^=isoW|DJF8xAnrD{^_P|ACc6!J#69-)qdFJ&%1TvoXv$Yi+y%Q z_~Neu~gj^pVPW>=q>d zmZk7D1wY!Dq;>PWp&9r#rb2|WL!^mRtbw~(5+9b1F{{r7mtgoh8vVT$`Z(y!1pRwi zfm-BDolM|24T?b}Ot?AM!*Y{o{;d;ILzj}@2$uJiHG9ibMIVy+J*7VsAk4kb;WJrq zC7m02O%0NV+Z`>v*jFtqXk3@2gwTTuApd5_eSwwP^x1u2(dZf$UW-9P$q;$#IPeff!5ks+=_vVl zC+9wAPl11;nL)o8d|D_QWpI`VvYvN5Gh(B4DgTbcpZ@A;y(Dg@Xm{er~iRfkG9 z!a|I$gJIl)d8x}YMcV&w^To4;J!4b%}%ib{!^x7 z62<*HP9X_g`1-loGSVAKC|OwWt(b-E%T-@9E&C&1qaU6sHd+ZjNMGS!=9{c_@6f}& z2BzSGxCmSUF`}y8kZd#cH9V1c!SSwUe&qPOe1L=qeYoqv6l6-wwOeY|;RSnUIRS~< z1?zSLr)q$$(`$G(X#m;QQ(7}35Zb5G;&zCBY~Z<>IAR?{BbcXnoEt{|X*CP%2(YBO zei!NG$p8e??0ybx)krak5uRbHn^G+Vkl(`hc`}9W$IDwq*WiWJgDAlNEKf zR%4aJw?wc`HhgGOPd3NstT+KKaN@w`K=;157wP0h<1@0#r+Z+fXPX z9^t-gg%8aCi$jZ90jh4DiWz+4&5J;7_<4s;)izLsju(ywutM?`&uudA4T{esR;fas z)$;&IrUZa6zn|GJ0Le95(KPTrtlI*%x9~pQj{5xu2r}CqPrpTohx^6yd6qrEofoQP zi_Cm=JZdd`rbI^=T!oGrp}&DGKIS~j9wyFryG43I2LLXWa>vyA_x}Rm0V=mDgDUvS zmBLpS^c#7aXRFJf#w$^&FI1p%WHXdgpL$p!2-zVc#i**Eh-cAD++GIj+Wwj5EUn*P zQQ39&C8QS?au0?!1aN$LCTX2Y1mH4ar1_6q&-p~@$8#l-y?p>|uk;U)*0ri|U-5PK z#xUtOoID1MW&%*cZfrZ6t@vOJRN=3DYKD1gz_&ero_Q&_P>sRi%nYE!Jo5yPCG;`# zqa|(qlAGRspU)!DHD3Ura>!GKNxQOh*&5(_2bmvC0nm;?RP^b-rtJafB|0_^vnAk_ z^S)a@nfq&f9e}Nh^8hHjQo$i0M{o#`ah#5T^?pOZqMy2W^0FPVR z@MW*)0O8}$*TuakJw23f-=Kw*QNytrA8>~BOBCQc;-}Sj_eS_<8J+&9sC4q~sx-l+ z@Vks2+)DohBTIdV&Wm~5s>`6Eg6QX zgm`I!z^;P69mzwOV)k<&u`NG9R&>|ONQ&_k$S33W28#vxq0Io>< z3dj6%TB~8UClsTmKhu4Ap1kVo3OVnRi&~K1-17#92Iqw)JIkicq?+sJ*f7Y-aqAg# z1kQ->n&Jy$u)JFI8aU%L8^rgv0AR$Len8nRk^_eCkco;z(Afaj4A?@2A>@#WJ1gW^ zhF5qx@2zhwwYyMPBHS!=0*90fY^Je2Xr>D-u&L}q0`_ejoRlo+up>wu}5Go0vt zUm|hX{V(YxAAKV+LcV`QnuL^&OCUE`lgKC^_(qP*DIsa&R_ zk9lWe5w0JW7nQACru5I0jBK(wupi=(+fP&9QQCXC(a|I*mfd^gZ2T**_b#K09%re& zniuVU{Kx?@@SG@8uz4KCc)L2G`-Uw9FfghTQF8iRs&hK@1+W|8BYZ>+=v1;&vcf%6 zNcXt(ZnAuJ+#UIh`@jx~#8g0N#gB`PF~tbOKb|pMHY7-%y@R=nzt8d*k|T z%QQq#;`Fp>{hdSO?uiTr^|R_Tpqw)OLfX>MOKL*iP)Hr0QJi$@lw&(pDo zFi#j}bMNXPV;fJNKu4uu7WnW2B~6uFcs!5yVVNVuH)8VD4F+pKZ6Vy=LB{Tz^Akd4 zu6<3H27zjq00OK`c>j{v+3wu5x%Hfb-_2L%+?nk^-?M~gzQk|anHol{`%+Xk7;QTXKn4w!&oii9l)U3>m+9X*z@*$B`9r6pEM7 zwl1XD`1`f$j$qL9k#{*FhXahdw?@T4^c_2`fLSnwbw#}PBPWl@=r!7Qpc_=K)au2> z*Tn0TNH~))cj+_ZwfrK(Sf)H%!&;~VyFV{-85S()kAB6Om^LjaHGhGN{`@4ZaE8Ya zr=;#6wCuXG%;ExET)P7G0NLxVXx{n|7;1CepIEGsE42{FGg;|===GkH0)rQ1@e`SSy(uVrwEQ?rif(o~6Uyz`g{n_iW6 z$?>s=nGYnjYL#c!b*+r8R}I=#dZp6vR}HLsOQ;Ce@$Se{I^s^}cPWNw7HWhIhHmq^66s zB6bOr>!2N1J}nzAH-+5mErwrWSbL(osYq6?lg^xQEQRU^*sbl?R3o`?cFy~Te3)w6rnrUgl zn(8g7Do7f)nu3&7D&(W9=0@toLnY%Xs8QAyM@QDb{<&)GsMYN7DfqE#%n-b=yw~*y z7CEhxQK+LIx8h39<^1aU@*8Ecgq|d-Ey^0d>Gfr~?^Cv?+R$sMtm{j5HhwHBEQG8Q zBINm$Gv(nnx7}s^POch#yJJ=#TGz_rz`9?T(;EqC>V8Sdz0DFT)&f*{R{N3~1?`Q7 zw=g@eM&l2TsZaic=%~o$rEBN?_zka>Plo3!5*YlVP0NRicgAlikp>{f6E*( z=(sq9Xdq151!dkn6(d2tgBGi0{Fv%+zW9#~9hmGrArxpIPDqp5uEQy0HhCBCMGEJ? z`QiMm$sBzTJ3q*#iQD%7@;IUrvZRB(VJR9Ap{mv^yuu&NyqB{aO3|Tp!t23F8@Q$b z)q&QC&o7i==OBT;e?M?M2o>7lk)@vEmwNbKcd2N>L?w) zI-|EZ0*EU(i&EUw_Z6jKhNRTsSCQXh6ovnX$Vos2uzn-*$K#+XHc-ywxEneuX@pbm zTVrO^#Bkq+$v=-U|KC0j7FN`FNGh@I6GeSC#*JsAP3(`O3S}AdLi5<+7rS}*`B^fo z^NSAb8!ye3W?Z{iWyeDZmlyH_I}6L%`10Dd$L>H^xOI^R8kz&~;? za73G+%vtb$Q4DGYu=Ot9dRoeVw}$WDA7#`4#E4dfu_V;JC%I2c zb3>d)IOl(J_#aTzj=1z0OSx15SnQ%&4!?fumrkRsNCqmW>i*GR4VQ;v(dYf^=ll<< zrzH*sL{Ho^$NWdlt4M1pya){hO(!-?DQGx2a2R_aU+W$10CqGC$^^Cp4ymC3Ol2uG za@KR2xfC9&3f}j4z~@ez!YGx(oWGlIieJZiOv(~|)|7hcvT>*t{ohIaXDW%+;e~Jo z#)>i+n1ISR@B7AbyYsH#3+R|0;xt^owtrKA1K4HcP01+tIq_T=4Bp z-Rj|6)7nUxV8`#83)>G!6?gR>eOHMGH_#`=QtTOn_nA~);`bbR@NqfC@sJNz)?O@6 z__A2wI%BtCHuHKw>aZu&^Sgm6*^S81x$UG_{hdUUqmxB5Wf+Qh#SZ*@mkt^&p0xxL z3T6mVq^WPO`oN80HaMvO8rItLsUi`;!mJc{#5!r9!NoH%vyC^35NFVt^+ztGcI}H(Ww|it-xr!~_q&1^)HKnxnCv3c(6^`mnv7eyKW2RQqD-AcmG9m1 z2~MnSTPoXhDg~MqcqXbmaTtp((Nol_ewMt~%{#p@Ox7sPvDu(|SPF7j;89T1^<;Dv z(cU%%_svv(&R%LRRElOQvx+d+?*evEUiHV0_gzMa0fbO~%U(;$l2bZsESBtTkv0f3 z=89f6p%rOYy)^n7Y2ibNAO@FznymIA(JR9X#T;Wi%k?noNfnJ2b|q2bk|2nHisAa2 zKv*{FZ?Q+W?##K9ilEfDFCV*JEBnooBrI(2U`{b6hTkl1S{6sQcdPg_aEyMNdz#Mi zO{+L-Irjnq0tX4pqq8u1SSh{E8PuVajRV7g$TKba`D6J9Yp!icA8S&;~TM7plf#4MSf&?+&CaCEV?L5+fCOUNd5Ltqk2zWwOD{@q{v+1DRY7XN z?24}*8s5h_0Y`O2We7+VvgsnlzGhYQ$~>p+&4?t{?M zyRg6{4lb|2LR9&D%in^*=Q(+wyyX}mGRP+~T^-ihHV&z6Co#nv?7u7Q0yN>V(x{-w z501%kdTbqouEmOTe6ITh^CO|l2-O+R;2-YX7VwAP)-BH1<>+>_>6}^3=3E?m{kR93 zz|XPo>jz>pYkf$jOAA#L5heD8OvGay&@}WGBLrZV5A_%z;RK!EEZS~3p{DefGnO{% z^+}O@v>Q7$A3hnwF1B!WU$(FmtLt+=N#&qKSk0=|ItrS+`)y8zV2OwLs1|(wQ$)Ds zlLt}@C}lR8EbigW^UaM^xo%nl?FlaIsaIo5jcC_0E|sUY5F}i~l1;$$Cssieqe9;3 zFjKcS7VjV<8a$(n93h*l5FSx(_{Cl%A3KuP;dFP!S+Mut`s|g1f*r~1b1YngWZ7OG z!X3PR)2q*pZ#lFdB+5#>d_g_Faz!z{iLSNuerf7OpeHLt6wFm)wzo>)r%_flf5tvm z)qmlk;V4%{^~)Qz>EUYZtgngl@^m=>GuV`037|eraB12ot6VD}TJUSHERs<0CO^Xu zcHU1`-yeibL zEUQT^&$3s2JW{h&I#!wh@!9-P>GMMGR$@b0D_>Ddm3Y@*^WastsM0I*5RDU19J#%> zYk9wlCz7Cimghh?pa^I(8%EtgFR2;Urp2DC1Krzfw(v%ReSX}Y#N5UdgA1Ir;N0~$ zw9?CO3ts6aZW-sP39gh-UmUz)b!u8;(n=PT$w`XGKYGs8fI*>Sv36R}!Y~>fETm`` zT=tAtF^pF(BwPA2r$nH5^YfPPKg_f;7D;tzO4UW2Cdd1pomtAlt9>CRI+GS~a9iw4-_^7vE+%d|H zwWNNrNKDE4Jn1`ZaQJIi;GLH1Rmnfa&q3o@(cd9-W`lBYH`c@5pJA{U#O!wW#=f>P z+!Cc07fP};^*S+17?F#e-*UCD%I%oPA8?r}OvnQ`Te0{~^~j?t+!&3$lsAp{0Z-=e zy_b8*-eIizQ)3mH3NuJS(0E@lO=3ipVjeQ=;*GmCjbe4KL-90DQ)lg;BKq@SEP2+7 zt67qlqt;8lsyIa;lz8(|J)TBV?4yrf--k$Wfs9pu``@=c6q_#Mli!0UUp|cOEpru! zDwewodH!a(@xbA87FYu~P@Yi6gXMO3$;}EZ|($!9=Be6ZX|4X{^xFKSgAm(tu z`D9A@!o3)c+jdglkd8uFvWAul`N5TyD;-(#7 zDBfw3uHL6g!);JjX*0(3*cg@3U6w61r4Zgpdd?SY`bq?=2d^B7#Ps_E+GRj6WI(9* z>ezto0sr$jq=EUxSV8!U@#1(R*IttENHpaZ*mHH52rvEtQM((8G^T-X+kM6|GQ+w3 z;*s;B?NGWU5+iB7ZKXlN*_i?_tN>;vT2ZjD4rK0?jL-eLA`vKGH1h$1_t3P@+tN@ABQ*@Jc03E z2rYxCz@nX+=c=lE2h5$Xx`t)jSyNgygNp17asy5?kWic`z&pN=NZ-9Y0k%n@G*h?e zCO{&r;!oOQf`7R`9Sw_9CPa+En>Gq!hX9!D{CUyW;nUMEA=$P5`(H5r0Fq&FlQ~8h z6irr@&xUp9l>h+3H|!@RQ#v1U zOgV0h=10d1FN)LxXXm3~0B%EzUm1Ck<3t0uu+iCfp*fC&U!nNMXCQt@aI8o*tq19V zn*nh7?hVo&xOfGS%=^HDE(0l?jYb0CsP`TsG4NSG=4=;PNS|SW?Z~@m;A<4;_1ZJd ziUe>IGXUM^!eT?;hGd7bCo)$ z1u=v+>-O{mcskAVc+v=KDc-?n-8^l;cTPVBVs5}6ZUD1qZO$cdBKJ_p;kb{=VEjC{ zyWY?2n+A+A5p#~mYr#Nsusdix(c%>dtsp{jWsLT?$X1s0?YFWT}>w6vpvTn zX~$Us2l>~DM0`cO%0Gc+dglfJp!}}DylZSdbaCW2!9T=ZW_RB5bcWX_p4OIb%sEBg zk&~kS%lgBK27%LE{)T?~MoF=TwBEg8vmpgMpm{;LWz`&UHEB>$?o>CBE#Y#h!0Bd1 zP4OSkfhbj>)IREb6+Rq-$fqi$Iv#Psp%ti5g++uTt-^rL7%cb~{U` zB^kINBS;Nkgni%KkS58gkw({5VA<`2^LYQX=02Ns;Jz2yTTwq{jI>xcIFaM>0yRg& zdiHSN3rB$Q^YhdUad%w59$OH*JhyCGXr_Ma4w%2%?Fbve(Z7E>}l}M82-~OM%C}@N=S)pN7Sb*$ks^Ns2I>tMd6^nqMFfW?+dmx z?EBLAkO2K4Bz&hjMAn7n!np^ew=DVx4GMaTAP;suKK%t0~gst{qG zjDYPh)zPGZ#m}qsn77SJp;0-nm<7yP(uZvl1@P=1RsuroG*en2sr4hc54`8fz)%za zgpL-^%PfFZ)x5>#kk0EAmpya++}&&WklIK;j?Ktkq2%P9npA@aj^(%)!6v0y-$lK<$zw#qB{$T}P(pCR}zSD0*ewXSg zCJBF6Y_z+#Km+1Q$x^DTGT|V7j|bJm3XfZ)26Fl6m#w93`@oEmC!;K1*x}fR+be-! zmL{=@K$gaRE-7itY}y2K99pS)vsps)Jz`%2<$o$T`py_aseHS+VM$@gju(!8bn#>KD z7WXEcdVVPmwTd5EE+n7Gg(mO3aB&-t05K_ZxSZEc^_8}USe_gjD-uX7qViG1W1raD zpXWpRW$}3nNnCe@YLN-Si`W5}Agy=P*%nULM%o=M4-Fvz@8vRfB!8wQN6l-c*KT`s;9O8kJ>mFgbD*6=K}pkQhW3nKDb@J##SOCIVeh)zlO?09%s zN=Up$kpP$LGD|wBeR)i~^K3wmI{ov;a=MiFdr3RHvtU6J-vLd$(8z$|b+3(CJ50zBj&%)%b z*UVD?K&U4_zO>V-@-DBV`0&Ay$8hHkN~6je-gnh`4}T^ebN^}G#fl=vd`0l|d=oCC zXtW%j=)=?}{WI#dw39WIJh)7xiJdB(!w5qywjW$M zT=l$Ng43qf3mG&I=KYVpeWchUFeOj~#UU)mk+Kdo0+zat4d=I5a0(*hzl9~G>pXw$Tkx`>O+X=`XPT zO0lJ?BThfjFz2Cj(pJ4f)U|=a6%I+%gonR!eT}vj;?dC@KT-AmQpQnoZ(Mwsn|Jh7 z$w)*Yb~|Q1MKHqJ)YPEoh10wpeeS+>B}jJrxG?_|lmtRN!8_0I*=B!vd_NYuq|5a< zlvcn-N+hJq9ZM-t1gp1R-2CgGy_3~-s=nBq*NPhRJcz;8PeW9xuH#1^!3sgY5ptLs zI&?b|?dnMunhH9diAP}H zpnN9=st06i*)bTu`tW`*3V;(zKfZaQvD_U^t&gN=n6)sw8|HJ8b*6vF;Y&UnmN-%i z9V7WCM`_a=$V&vN#b0rF>IjnL0#3iesS54#blrIfz4G&rN$}%O{TV>@qG25 zcxXzT2I}D1Lpe8@b!Y=ce#kXZWqwClxw*T{k5w6q8{rH&d!@e`KVcSIlGt8p4=zQOWL@RkG(Bjg`n3fKT-) z%)2^qP}jK2vuCFwTz5wAD$EnFt~a`vM%|CjCmjiu2|Mc&Uz|@V&838D#5~f9Za7&~ z`}k=v=wT{PbL-|-s~aG|R#h5S2gmeOE?|1id);oX zu1_?ZiFazxU^WWGbCfTYsEpqKanR*>#yUqb{yV`c)9Jz7A0m;}MWH{EBgERQbD8ff zGhi6*AUAla9!}IjMRsXS=X`be&X%nniEEB|uupn43cv0Z$M09j{XA^C_eM|c8{Em+TOlE8FQAhw4EH0j`ly;2t0<30!!W{VaKf<&pOd(>wjso zRRw?(dQXzMQ%?T{&*k3g%C&E0VKXm$7rP{v=fkZ3|a1Ao#!(B zKly>YTN46AKTh70doEHwYe)Kca$$E52ML|qKW+pHz-n%9Jc!fh=oDjT^#rzr?VDJX zT1NRRuIs59wCV0^o3ID9uqa@qWA%Ukv~|<>gpDyO0$&Ni72<>*K#-|=+W-BcNn+z2 zP;hmg&Ww*Qc>FJnmH;0DZjdn;W@~&b2&Pcl=^S))*-^t?r0MY6M0 zK>o+iged_!V!5_DHRYg94sbUujYUEs>HD;!2anh4<)JFF024}u7Bc)t{Edhqidr?! zi;>d_Az{+m@o2P3nxoD)km29OI@4@i!rsL-yT|r_3&l(6krYJ!V1l-GEN_SqTvT+W zd($}}|C{W1kth`&0xw(xaT;++TM}X$4HJQUU09wkO8B4RnwKuG9?o0(o^8O&%}Zp7 ziFE?D6-WF?R`~e+aoYNPPT-n`%S)^xUV(wtVqL<0b#Sm3icE?B*&c}5DbQl%1zCt5 zz=*A&yhFI}8vA}_&shbnySkSou7nlJFw597QEPVB8XTJbmoz~J^&;4q^0f2VDreYO z^yw8x_gKz8fBksYolL77AncQ~xz9<3A=e_)@z}SKw*S#rcWU`gG9>Z!tx)3s46Fti zSTHi`HsIX@jn#!-k)WhYTPo5VSAD-LQY|$1-kVzyvAXs|o zL^kY#?!oW_T{QVZx_V_WER$B1}L1#c2uc6<(KSJnF z+HY+P!hHqgICeeM{O{qgfjxxBSVUhv)EZD8J%2VoPmo_b;*l*30wv#&y~!^8KQjh4 znUn!%KB=8JX&xgRM<<*UpGBEXi$XBoJh&QEux?tykd%gGC1aIo{=-Vr>4DP)k)P_! z=HP%9q00?#Qm$6LIRuuXM)~&LF+H4F*338b{EBG__a7q<4a(&F-$O&PV&PEpujr4E zhX#57QQ9MruinJvns}D-(#wwBj&WlP1j%1(ZQ-zVu>Std;Z;!hfAMkfYfL+0mRnCl zRVJ1m7y~VZ;FS-&GWIBc)OD0Qe_kw$Rxtp>S29I+orNeb3vPQP`#-S!Hvs+riMwS} z1?QW(Ryjd&9|p*W_7^X4t)0D37`Q}d-SLj=A{zM2b8x3+Mwj>(Qww3gkp$!+3YNFu zf0-}2F$*&@GxMNhct@ZOi1`g{8?;b^ojdBv#3J*8{$a%SS}HGNwB9kOcRKqON=tSR zTBJ@Q%T4{;QzAvI@C0a6>u~Sa%~8Sp78%V5yog0yNqk=v4}KP}uofIPB#_BKfCkwy zoSL3q|BfY&ABaQRL9KPmpRC7?`k7VQQ^M`HvIW6)owlNUP+**|Mf9L92M`yLR@#5~ zgOpL()z|B+J&)E=c<(KrHxC8+=e8Gbm^GbD_B`xaZ;_0a@cY2HY#oHDveZe9he zCKs=iav*rN8h`9Iew0r&<^qC@E1p@eszaqUntznEl>dO6&tD+r&Hsup&i5pw3OTj_7d8m2`n{U@*ghODdMJUjJD@oKCQlsj6KYTNpobJyR8Gv+OY?n>wrk}%YBcC{Lf3xt?R?nw$gzK^w8qY1S ztB%wRPRVdqpbaYOIdW2F?9bak!~4xy(=w1}#{X2_Vo-Qz=i04Vr)ioZH8)0w~Q zm%dM7Y+}&Lp-8NI`+s(ZkwhQf z|K)F+FuRXSM!O%5)otIVn1B3%JDcAy8&%g1)6AR9BL9HJ^yEHxqPlsSs5&6{w4a!K zlV>t_vQ&!{Cx`;Qe8Pu=Rgj7U95%bymmM`R2L?M?S2~(REX5pHl+=*kx>&2ZXC5pp z%&Bx*Fa21HEADdG-sK`*TlkuM9&Nwu0ab7LX)U^2nbR#Nl*oU=itMs z^+@ZVY}7?gHiwYUvSakjSOL<4Hr^TY+=8#!(dhUYPey~d+J#?fs zYKwuRCvRC=NTWK%(#-RF{tns?{)*!$L9CRFvRUKjT&W(Fb%Z^F3g6&CkJ+EGo93b} zU~b{iuG>H~UPTVS!V`-LrUjXl*II0Cv>o`bDBwG#_JdZN+j+BAIEPac&R69^ifo#j z;I<;?8*yP>rJc8vJu&t1Q&~@r$^)7CiC;P_C65Hd-QL^s9E)u@Yccz+{>Jo5mXL~F zH6NA!G5>$Kt-)90BUygZfrD>l6sS}ofr_{{=g~IHshctP|IwnC6l5gWSy7-3n(+qC zCeunc>5eT>LD9PiK8(0_e5sW6ifnmMdrhfwFX{({?}KB}jgMMYf@0WPg27JRf;I*l zy{Br@3NHx$>u=cIrJ>g#O3$EFwJP;8z(uJmk>z-A4yuJ1Xx?P zM+@`jB2~Zhn{}}$FnZ}Pih!OWm@SfanpOR7ziesw&h7VO*S=ho67CvxA6&c7g6frV zK?{nNP~Qj=14at8!x2r#@6zS>uQ;xhM}5EIxVwkG$?MMVhbIQ>T*7lu1s<$t$pGx8 zQBWwJVes@nr8H99bL&57APQ>~KJ;%CUltXw{+BztzOQ`8MWPgBhf+j27r6RH8gO!* zk|oDD-xOIIS`-m(M+b{fOpbn(&WoCVz=gdwre~CyqeJj&QHX5&-FM#`j%Jj{kZEGi zHh9;MCakuB(bnZBx6Y6h3n;h&g%Y>3`2l?0XOT~GCI@S)r&3y-)y=Nla-!@xKMj)5 zpicLt-va>FWT+zI+EwKY45P;T*6C~`lmo{(0WLc6T+q#<^T3`ZKJ%Rxg`l|)CfO!B z0skMx*QDN(+n@^r9Sw9wbS*TeU^Dul^i%2jj|URh7=7AwUeqW4>_G=W*l)P+3$Xom zGmTRcmzBF(FB%tJ;&obDVtECHcw8;Gw$_9pETk5}WJOO(jC%(o?Iex2;vS&akCV|Z zw2Ets#f>vF--$AdDF}(8vyxHRX}((*o;N*}Jl*@eu)DM9ES1~jsN2CW+%h7?KQf&2 zK4LGRvbx3yzo-4V7xvZLw=o}F5mdR_9(a-ITc;7{)Gl;R;s@LtZA{V&Hb+*s-kLwV zk|5NW=L|`T+b*;L$H~a##0erziF}~?Dj?-H-zl%c(es0Vb{|?h)VV5 zK07*Cz;Z=DT3kSFWNHLX*tt!29L)80Bn&Fs_1QTIt}=6O2Fvv(w;arU&?F2_1Z7z8 z|IFi(I8UAZnwMNTK%J2686n1xeBo}00qurGMhBU;x>kesUynQS5p_n9lpu#_*6kbT zB);@@o?-%3nbgH^qDoQ3Y1pC^x*csD(Jc0E#ObH8T8p34UV}He<3FlfFU77Xt|%@Q zIHw@B)wR_=@iLQAWcozU2E)%Qd%BfFu3Dr`z8*NNs5T+omM?Y4eBMD-2$F1ZuPVEj z^D#2RfGw?DmAg%^vh`!_LyH1^2}f##LM&<78x66?Kz^#}aA;iL#gkTH-J$X}h^lFB zrn+^jxBZU-liB*pmct}+uSMk+KB+=g?SE2VMY#)(K{MQzqdnevH=u+$j2^<-^&}Q> zDGCC5bW!fZJifr*_li+L^Y#{6%0URM77Er>&s12%ub5Lg@d8OlmmLG4I@vnD8L%7s zp8wz7jJkiUs@s}c4ta}7tLey1Gh4vjGoB1*ffS$(KJI~2OXw*QGRPE30}%BFg_{0> zVtrI62%nww-L5Q&!0W~N^^EH33EzBqMma8+ut4M_{s`cDX;J=}G%A2|0sQRP@+#B7 z*mC$wV}i)ir+I%299{B0dV~n(3>VZ=n|bQ>&^yU2iaZfYspY!7EoZ=y`2vH=ecrd7 zfvGMSr8=jN&)BQ&!F*^xzH6!paO^o}3@{0!6!-CrlLVP8Pkp<-f?d@w9t&>8tvG&Izr{xbz4WvijU!@x0 z{+w!%?Imj8a?v0(K%;mG8Km}$>PJ~7O5=BF*5 zBL1*cNYdS@nyzx4gAQ%8O^1rECZ_(>LvX^6kth6Y)ikLc)KUadAFFK&Eqo>!lr4^8 zXxB`&wq3IE$ijtIr&59qsV{1ZAMo+tr$a@4N*N)O=Gb~lEJl;W1bGB0A&ORnkAtDg z|9rn*))PPVJ80{1PUjv{x!@FjNDvdeJGCtPBqsSkn{+}T z6A+_O7>Ddb$YYbpZN{P?m21<3k(eO)>$_+R^=pO$uc*jic_jz}bH<69%O#u~@t@ss z(8D>Cm~g*XO~k>oGxKhBw)}eknid~pe5?2B@nR#2Nc+z|{y8{%`C#Kb3dD0EeZnYJ z*cL;5Gpog?7at{!t~aiEg+?Jc8PX9qzmATs=97Y*A)iemkIV?sAO3UFbf~c~E$nC7 z)-^2om=A5J@y37sGABx`ho{8^$+fz63=D^_xZ>h1-{qa1%R!_tN5!%=wQv+658=p< z6s8vTZzAGQn*_LNX5Kp=zPps&F20m^X%6`7)s%=*H5YS+e|8fU+DT^NpT8J%7jObX z%KMW|&592eyq3yFq^>Hswue=0(}LrT^FV;FOdDWXx4^HSfS_mV=gW716vJ8_1d))L zKgDKEYa7Gza1T?nmkU4sUF)vcW#kA=f+J8WyGgWMB7wTi8yGI1lxXBkP&icN3(eXw z)`J+-4*=&kU#2fKUjUR+^|RTq%Z)<|S5(;J#TpnVZe77KDC&~s4*LiS{Y**bi~s11g(cQYDS;N zQ;F(0*7lMbccWEKfsEtw>hBr+N;&?AU+vpYrp7%n4^PQu8N#|TXuRPkyK@F5kJe~=E zQ}WLDL;D{=^Isi_cbt8(V7;0o+KRc{t|u$eXe0Yr&{*7FXjaS{uBgP@7WF-d%k_Q? z5q>s65Kg9UzIH&-v9GfR0$8V9wT0gUl>$W2=kQs*9pO$StDy6uL_LVv-aa7l6a{X; z<5+UjD?rm%<$eD`j=d|@*BcRmZi=;5)p6_l9ZFH?`1z-zdOA;j(l96i-UID{#johv zk@D+sm}mRA%GO<(_Ym&6;x+5aU8;1u$>)uxQH2#T31x2fcM0H{Ov0$8T*Hm1*I=`9 z{ApOT0ex-1#Bx#9dN}AiL_(kc5XEQPzR#vDHLKy%oKwr@4KnFEdDFtzVzEmMv?B0O z%Y1}0$ZTwEd%nLM?g85Rn9h(PRMs7bGdNcqfm`Y_6J`^>FLDQHP?E!BjI1uH!={Tr zS)PX3WZ&Z!JAj|XLkxq~zebAGa)j`E!eUz1g^s6ETha(<+mZuh4JLoTb*JH-0b7YU zKr-s3&U%P6MU<#q!xqUnjSD@Vadq6Ioy@2DERr>7h5d#jwXiW@gj#qeLo6tUJF&*K zdF3OWW5&A=cMgrGzc(WKSeb@>|5?5o6yWaLXjjVtYsLNp6q%Ye&2+ylw>e_S;x za|JQ4cH^F6hbui9QURAbYpjBSlE8MEV3+D?8m9^R0(7{8)&-l^K97s~iFEN_exG5V z<@s&}+F!AxETy1Yr>60{;)8_LesBI)g+qL}jY)4G;D0d_kW7FDi#fli=gv5mS{bCM zEE@cqDm?5{?_5^n`cA2RC7`8IKqgl?LDhVd6^&?yv6nW7yBF~>Ji@N!nzzTyUpK0} z^AO&6pcFi{eC=w*avud%ZI#cNjCY+1&zakg1H3nM=s1xZz-EV4V$zO{U*uzU>G7L(XZvzT zzTja9+xWOz$z8{{p6#B1ENVSn2#tY!VcBn9rTY69;s>p)eU#=RDfm?ZSEnja#!5;1 zsfr9KgG~(gqk}*7ASzIWCMjk9xLyc*JK|So_bxKV9!*mT^5WssLehGrq)jh$2` zK_9LVx(Jl#A25q=mg!;J*f^oG5T;j2%s5KFWUyYWez6B$WA=%A67zVmv1{=ku87Yb z(+NUfnqWg+o}1zHVK`8Bic+i7Q@;o#0aOI;xvpLnf z{x!^N&@W>Gb^jGUUhHM9M&FI1mPHb+9sHNRMSy2p>I>4#FWq)ddAo>kQ4w;2PC3j! zkIuuWY-PjZ;azh z$MFAa+fgjB)>pkEvbPGzYF*mq%7$edoNQM1)3!dt>@zo~ z?;Tgo50>(7BKfV|fDojP6h`44cQLwCs9y6(xA^@8#P7^U3nUIZ$GDO*<8Lde~82=%*)|OGXhY5<3+E5(53*-+Er;&KJ zg6enlU3mJDOzru&1hGML!X`@TU(lISZ{QF#6dPUVsSF;@LUDTPlHML6955sMNoV*A z59;Ex6`4C=jhu);$y<=2B+thh|NTfk^L;$Qui5SD4s))@Im}M))AbRjT`8~Kh7H}i za39Q)S`(w*P{~r^@W6GS%?3_BF_^?h=cz*aP;Pi^;AYh2_QX)An}T)>AF2ktHJjkl%a}!a${2d*f+i931gVf6DWrxf+-b z^cddfkX3Z=CJ6i6QSiyy$7LlV} z?IqfRIucbxJAvzR7Udq7)itL2hjy>DhM@kCmEquOJkDP2zSG!bYicdN%>DVM@R#%j>l9R%X zpK{?7W#;&wkMl+l%46%Wguq1bNN*S({vD+9#XZM`ezBA?P9Y<61G3y|VvUB{zBn~cN@0^H>H*-YgEl7y(@ zga^8{mMI1~$Ip)i&l01#$1SNcxU0LrQ9SZWQoORlt*Y6dO~H(yTX9hyAtfu~K-#+h zuxvm4pik`sqKuL-6dY?HitKTbGT3w362G?&@yK~PlQFC@(8WU%a$Kh{cf}7DT!-7L z&HjEPhjh{V3z{~yqsuWj?wuYUR%*qq96-qAVa~+nb#<9O2aRDKNmWg@Zz)CwBIC_A3A^u;-TEdC*ScYWk(%oB%#(T%;aRJ=#dIF|T}=iPE^tH4A*$l%G9 z>J!o584`&Kw9Qr{oLWw%8I1BP`HEq3mi|chioz^(?7?pn)4(^c4oEkde!IQ)VsIk+ zI%yc?0M#6BNlbjRYD2_I&#x|s@NK}e4WrXOAnPMFdXs-=;++)U-Az&P%95Zr7}G(( z<)e@+Er=c{^6iXBr8277`=vtzZ07C3q?ZFN&&nkk5 z)St&?Wto&_^Q#AbPQn!iKHHBAsto)0nv68VU%JT9S5>B2p-nH)m-^!g@RL54ifBDE z0=ag0Vc3Q;hpTiiqc0q6L2Jv)FY=@)+qc1#4x-GN{fhbp^OiP*_57gtJ7aB2q^z%4 za{X|ig%jv4@_I8&b&c{AdQ0}Xk;SI$AvFJc{C@PoJ#Hy^)sk{9U9S2`R*6PSiOunn z#MMdRID)X+@89yJe|;fXCH>Kr9({m@XH9oVCP#tSCmkm$LKqP5Pha?v6(;9AJQ%VM=pJ}5yRQ)xsrF*PZvYR4yNme$M=?G9S z3ibYySmWHumZ{;CrD$})WV~0I#$}H~X`J2-kU7^6W^fA$TZi?klbCo*aCBN*6w_=B zxpw#S(l88Bvcp6MKFze2jIsP`#$?~tc>5vDKP^9rc~MHH)KxmkpxG&mPQsAfJ-5%4 zMNmd{`STt$jAz{7JEh7oufzt35XCStP5GEY6f$3&s4fjRCxHIS``%sq(~8zwrIufo zppVDs?8*M9mFxh|L9O5o4u!i&;eq_@zV}!tXBh8UR)EBOG?PvME`Bh91OXm*@X&dr z06i?Lu12A4U+d*?{`GTOSpu4uu5li}=yo!;i|0l9vR>JlwN-tc6`>a1(Hsdhs~Cmk zUzgIFy~2Dr*?w^s|I&W@mh)$Z^zN_wM%`}ng;g%u6b2AtO+TWfWd_@$Bt*NJI=DuD zub!r}g;8=$T#De+qdUvz+xPQANf@CIcH@2E!4VkFp9%4t`3_!vdmo=Au_&8SrmQth zrWwf(A!!#!No^%8?b(-MBvzi53>f)sSv;(V94VrawjzQFSbaT)H#}@Kv^{E*%W80H z_T$vYryJjpYnhc9n!zfao(YX~7N+NhK^5VAnZ*3x>$3@d-`-i%24ERG@5pI=X$Gc@{=j_!FFPSpS3?444%`Hnk$QE;(azg8!&aVi7s}_Xcaa{l;**xN`E)?+pe+ zbqs2?^37{uc`G&P@1lZE)oKBn3<|Irnd7PIXY=??YoLk;+ouQGBgrqqG@^8T{i8V*Q!FQ*8H$}4fNb9JGg@+RZ2G44^z z7fUyVegIyB^69jAHaP)<{#sbl~ zQBV+rWRdOTLV{ofiikCFo@yG`rT5|QukGJUwqX~vV`AIR?Y~;s_W2Yld8D53alcgi z;taZ3&u)=$z`9^CHPqN&g&kRtZ;=csn+Kqjo*G{=G77pm!Hy7_w?U977_x@-a#_a@ zk>A28QnO)tVo|&|INPoaQJe046`$0y%2U)p;G%I@xuFX>9RdX^U!m3`W?Jt5fRZhR zME8$cx)4d%As?my1D)`X(|C=EO@y7)@fqQ>`0&>ke={LNb`(UJ1UxDk++2}3`WA7~ z8b&5z(;i}tywlMb(1vbxi^aMv-5SzJ2}@oad=kY0zU8~Wcek3$mJr(JZJmt%^{OfDLUdPggM|F7h<&aa;iqk-lp$f#&9wF%l2&s?$21X&8hXYmzkKl z2{=%D!y&%*oOFI+>$C^e1WVsqYk1KTw`(3nrHL2hPb^i1z^&9itcvTpfaY#LmWD!@ zcytv5={tWkaprBj_zf3`=V_zx}f{aDExB-@b7Zw zO^~kw3^$dzZk8%$p{%c9-w8hEZ@yQ>N6p|Xe!4hwPA?a+k;qwqe!e6}6h$WLf(#dW zdbBB4(632;)TL-0dVn{}>i=@w?o<3J8iljSu|h+1U?KzY)&;=1%w)ddzB#s}GAI7B zd}YWNZP@>nFYR%5C%H9kyJnl77mxlK=&{BM`PZ-Jh##NS-_ zyez@gy=A$wA}XoOX8E&nVvu`M&~x+-+9Niv{*G+x{P(Owb)`e1^B;IplBbL@b|~Tj zZF;EwfF#qsP){c2w^4OZA@mA=3bwPPrQp%RmFLeqC!Z%}k_%{^Ct%g-SlvF+ zTg7s|u7tVc%cEqHz^eMJXW5{{c7{EWqCiXrhmbl_lc~cE4CPk&WI_0) zpVm1#vFSlyI;s(Qkn6vgMr<7>j9v#HEaxX-Ng?&50#3D*!1eS z%2^a%(nNGVbl~*7v=?3K#3N zysR<&Hh#6&dW@MXJps9Zrs78gKBL+zTgxU7VD1ckqsR5mIv2hNJs~bB7>Yc< zabG+p>M$H|BrUS07rRstJ=#?!+x+5D3;R0DM}GLF%g1m}cB!k&heKb9+~=D)&s@wc zBo@(#&PenB(DfeRRKMZ>IL8qu>lh*P*s{qAaSkPlB4lRoEhEZ0_8!@@Lo&+VB-vyq zJK0evd#C=->7%~i|L=GGuB)!g$4)^f*275X@A`deixE))$Qxzv@9j ziD}=3_G7Nzz5hMZyK`bD`Wb^eo8rt#+FkA4USS1k!XD;Cd9}Qv_eGGGv}u!}k09!`%oo>%F-?lN z(C4^Ce3C?}kjtF@HgY=k{44(M{9o9b)+WtjwSYN#nU^p%W)CUqg*QPQIT>BYza7F`Z!kKn}l&a=9U6{Dmgu`SY75YNKvbc5h_7ao#7V3JkaWRj0BJTQY+D}4B z2BLCO5rnrmU(H4&-)j}>0Z+S}?i(t>?bT}azs^oygE*IoiOJyo#`4<6pF1wseb-s@ ze%)fvSwQiiuh_WMud~M&m?`z74#lus;fxo9h@@5z>1F9KQz%K}>Wl`sW*qUCCa66B zSg_ols23+Z;lh;MJRkMV)OFx(r=Ca}MJ`Rmn<08$Go4{lf_D0?T$T~LF=x`1PoKg6 zPqkn2@FWuQ4x^9vo=|&7d_q>^Jjv4BK1Ouw5RDeBZ#UIL0{_fHv@I;i%G?whN(&PYiwWs zI&<>2)4x*p%~V2GhMkx}QjPwzCkS`Aq=LXE<{d-bkS?xUF~Oez&;bGbR^oJKos)p$ z1CaV%eRB!7J=M-*wbh5BhYr^k9Z<(z?J&&O9)0=aQ9{bFrs+n2tKH-NNZQO$3(bzu zYwm`9mn>rpaQF}}Q-*V%rr(e1d-?~PwYVhw$Oon;L; z+a|h2zN7ScI=rk?h0aLEmqSSC^GhgABNz-gcE3x(fycrOYE3TS8JJ$=oSJ>X zgwfJRI2uYuH2f1uOVOwFp~H;~U@BFCQzlJmpMl%0y1}>@KR_s0 z(o_kxir$+Sav;@M+@hwYL+qBLk56=B&3m;o$zqieywF1YixbZ*zmtvUyRQWu9^ZBV zJc)XRXk9n!^oqOWbT&~|aE~n!0_L9~f!EwSg0H!&JZ^XIXz!z6>X6T6B5?8k>^@;b zA`!%^lF&YVQ{{W-D!!!0Wz(_G;^9}k^6+r24s-X)y9&0gR#Kq;?>Da8H1Se`SipKR z<}#tQ55(01Xtt3dbsycP*yA)$Ig^|iO6ongO*!&kje&r@2TG()>cY>PNB8RFTXGqN zrHh$~oAS}~tq|7(7NJW8ks=63Kx>)!;qE1ltgkt$-|aMXDI5|Ltz=Dq#y3wuqO)YA z;%ksLKkSB&jGJ0hM~Zc;6yM@6kpwZR?7K^QZxTbuv&lPV8ufrjYTt8(6i74p@a_|D#-r9Q|9S+!)_l#6)Kb(qnLvKfbeq4^iN87H=xV1K>ypYg zJgAuxn39?ad+5`2E4eG)mbJj3x7Y4HM{2E$^yN)U6nU>###0tn|JP6J2o-Y}|FBgg zO`)pZQvB9{z$r_E(80@#29a5eGJU1y?Vqs%l}| z3&;A&*9}&93Vc+|h~FAL15tBvm`kQ4i>!(!F`ju8v^|V zf#g@aUM;fzHPk;9AvbbQl9E$^F8&0dpM ziu}F--b?Dx_s=p&byomXH!s&;%%F zI#Mcc=xkd>hSshIH_a*6Ds<5IIal7f1!*Oe0nRrwj*uF8H$bpDntOAcT9DR0#PJ5s z_lN`4whAK-)LU^c&M5#m>H&bG&RJJf4RUDiv{o$1#HcF&im9N|{iSITRl4&LJbLl2 z2X%5l#mFP9BA#6mAwy8=rVQlF<`yie41S{`~ zy4n8&XLFEE^a}rEE$h)-WtqeEsR`S@H^~hgV!$c(y{`P)Fg&jm%uv{ErMuOiOj;KJpQ!h;<4M&B_tSt z1wB=|2o$+E0DOTbjvb*qIbEjY3{*KU)YJNj@v%e1k!f9XCau7)xSzrM=BF+otpvr^ zO=F-FvwVTq+}?g^8WSsfqT~SBGi?txrfdNM;y{b}LgjND%~O!UNyDjWJH+-=?SY8o zY0{Ywy9zAfhqj@GC4d8&t~QV_#cKLAGHt$gHsgwY@Zw}HVUl)5O9_iT`X-mMRqvsb zz^Up;EH5mes+QuNU+{kX4o=$_-9<7QIXr^JTEof(L4X3arhtHc*DtplLN3wS`M=v6!#j9ytFcX1|lPTRs(F&&0g9ZQXyXCf6z(4 zT$Q8kj)w|bNKpuyQ240kBhj+At6Dvba~DK{gDk^hpb+x7I^xeai1vIjN@Bz^ZeP`~ zzIJ!u$Q={Xw$$Q>Sl_DVnif;;_Dy0xJKC*%39v~~*v1~N29)Bb%bGYYnx)d9{tWMW z%5wcd4_mDF6+MhE>RTrZ6jh#N#pJ^xU(VD*LHc z$)=Kil0+knos{>P>r-WsQU}XsqnssgwD?-~yb?y!`N!`|djxIIx=9|?xK&f$wwbCw z2v-TVV+=7gkcaQg-uvkzdl6ma`YG&p+btbn(zp+0aCup}Ed$^yP{`5F0iX}gdsf~S zR`+B-(J9E%bd(S}JTyGSrQ+}M$*mqky#R2j4pKZ12wtj~`Q1^kilSh#R!ZIJ5@RIw zQaG(DJ-Sc%mFB&ePV6TG8GHm9Nt2BP#HvP}82MWeb~Q$bCsL(te`88x?Brc^Bd69J zJMGn>J#xZEYHNV;`>3s)oC<|dw7kvr`~B-9o+2+aR)bJJ*R_+3I@aw|*xZAkq{nB; zm5f(@NpHKc!^8bkdw&Hs@%zf$XN^*Uu$NQe65=%&+$CaFCS>DQE5U!3xAun0I~#$f zfC72F{ZX`@LTkka2nCMd!1AZ~I0^X%U|`fB?AJ)=`o*!WLmy-|_z>VZD=6xv#z#|W z!K|=Buyx@CmFdBZe@HbR(xc~bVeD9q4PCfuX9uhAS~r-KSG*Lk6+enz6g=Q=F?{6s z%2OpU5V==$^r@rl3P6>xQpR1wkoDZ+lZ(lOQv&qfFw|KC{h*^hFNl13v#~X8QPUzr z)93a5%be-T0ETB#sjFKQ1_hVd3pei!ala3`6p(&9|2O=1gl93XlvdLxMm_=|vzaOP zNBmQpT)(bu=M+oUk1PtntRcX`JTX!8#7t$GT`d;+46fMHKn+RN{@gS;X7;9P&;yR4 z?uqd*zEaHY9G>`!<@Wowizpi9e69wOklJoZolMuV!ngV{_sD-M$s%t}#q?~tDnQ~1 z0b+>Dk6y&Qr%fqbNCXz=Ki*Vd!+JsaejDLVSuOIJrVoj}qcVm9ybO5A7x$$&w(9#Y z?3l$j@?{Ij!$qYOane~%{irvy7ekyNsA2S*`#({OIbv;((ayw=>yPHXUH=t_6orsH zeB;4L#}Dh`#HA2|8fQ;?vayferWHOmCDK;K?H`4Cr9DY6X~-vP1rN3`aO}d+R<#c( zTaKCl)xu!-i@3fZrMxm;()_p4l)qoBXP!z0G1p1=xtG7Td;W$Up5BrwY*zZL=Y>31 zOBlP_Ds~ZC&`$X+^d>h}4D4`myXy@}LYv~7-_v^`i~u@TUbzNJ@z`fTBHmVg&Q{1g zeTp4iJH$UF)kG-b90mi>jH_|AW^xB98`Qnm>SwjR(IIybx#R3JyQ;`iKeq0&FGDr_ zja>>9Ve<2%05~9;EP2n!@e7=8aEF1rR^)sc|Bad28^MAG6vr-G`(8yqeokEy+GvPnnCIbD65<^|M7M6zUCCqdiQGVVl zg&}%5*#L6jDH1j+T&zGC#nD(i&GSrs@2k{A?))R(r_PR(;Az;qt9}&uHO~jI(q2Ik zSBF1$JAmN1`?&7p$bUETI3y3aA|^&ynzGp4GX4c#C3lnDkya1b`tn&QIs?CaSnQ4n z9d?cOtZNU|D09z}e0ZSl$%a@Mfi3!Vkut(G1N{l*H;ZehZ8!O=`b9EgXoXE1Y?oU_ z&oR3Q0kAHeH=lho55idvKihow+n3wm)nc1ObSZ{#_nDP@(Q8Q9hk$7%`*NUcpj~v}0k@aA`VD z5Kr(2=w&J)Z+|h=>+m@xndT2W;YX&2IhpnP;MOdx8gqdhJjWdfy#YKG-d1;stkoxL zdb!u&Z`E?xm9H}Gv8Qag9|Drpo?Q2e_wlN+qkBNPEHEK|%~Q821t-Y4AUqTmMAZ2Q zAz#B0=a(?N3zEMJM!SqsUk6!Au_)#(l)oN=IgU1uiLmLK&&i&da6$ofQnUi$tDD!- z2w*o@{l(;g2j;DQ?avrB_Gefn51_noF3^F+y!X}jRdB9))TW3bB_>{xQUzc^-0XJ| zP7lqG-u>Dy3lFCW!T%2}jlcyEW%wJ^bxJH<|Jr25Qs~aJ#@M5Dz5VD)&cf_ZQSSEy z(KFW%t%-iTxpPTqu3F>C>$YbJf1Xu&X+T149Iq!|=Rt$R``}I5RjcNAU{}1mrOK<~ zZ5z<0W|lch8CORVtIQ$Zz9-ofjQRUc(ZdSlct_gvn^48KfC|Tt8rPcWiiQHkmt1%v z)P2PUAD7(UH$Ff#{} zDhoxwAC{ak1!JbKTE!%jdjeYs0haFv@1>4U$Gaf8D}UdFnhBuiV|jhm4s7LsQNgUf864pY;-+$nbQD4AlO$^C$Dm%J=| zYyKKsL#hRBlv;m;nEmNXizVpD)Ql9Lz8a*I1G;%V>Sj)$5H|8WwRNAn@Y%VwbNyGIs>s>tts9o#oIKO<(sBVCDH*EC-|n8Yo1pfZZpLa2favv+mSQnnwCb$5g#LY6alt&awNn#r%%|y8DIhBLM=x z?==&%J-f>-ztm3r(7y?Oas7PfJkzsyG*x9pvpPFb`Z#~^`TY-U3~g5Nc$NA zH1A^T>?VGEeo&&P`d)6;*h7Ug(-4*&o?cGzpAvN;@A*P0@~M7gKVc9G3yOU#b_8S4 zNM(9PT8!C?x^kV;X%ypX7d98nj^Jgi3yX{>)Zt`KQscC^2x&RYw0YuJfn>ib5t(<*V-GD+x#{2vtDt zu$jSmoCMha+(5}-D2zSRp?nA=OHY8JG5NWC`$H@L9<+&!;JeC?$;Gh0_7r~(VBM(9 zW6>eT)*!D269R_5e;qXe!30#v3`_Ay2SPQ%S0q*|@_!4}xUgoCgb+(H4OQ^ntBly- ze;qBy8VhP`2>TQucfcsBMJcmc{tg0xRs$bi433Uh!mL2Kp<@i!uKt^~9v(2l%IV5t z?QzgvuU=%O?7zN*gG(JZ`9^;tRGu6Ir@Bbbc7A99^@TJ8J4bA#m5ri24JR0pp&x2- zuA6Wvl<+~F_dlrcvBRhcMfo>eLZM16;*jh1yl~LJ%Ur|lJ11f~hRveXWw#81NptXR zOwnQcBy-NW31+_YCh3~8Dxvv6M;=#U@3f`;AS43R34ew`(Q4u4ORv%*39V3*;{ zYEmJf*H!#sKh)G_H~Xw{@9Ru{Mp>@va|vZtA79HrXbgvwazUu)0SP(|LZh8=T4GBE z>uFXGpbkD?G?w9y&mNW2vd39KNbXH{vQDln~o zcK?vz67zk7zM|Sxi_#`;biwZXq(m=#H60`3>>2)7lKi2)%wHTaWOrzbS2dRIXMqrmQm%`keLMa)PnIB(${I5zX3b2g9(Os+w z{*hp*Xo!D2`)k>YLvny+)MD*eXE&Au8{?pk{EpIJc{3&lb@JH~QwKxkDZu(uFueG; z{-eyGY^`iScgY?UB@TF4l>8g$E36@o2Wjz)Jq`!d2}4>X{}ZWiY+xUrOh<8Wf+r$3 zG>Nr+_g@+NJS&LzA-eEb8Sw>_y==nO_5L@AHSB?R5|xGr8+`@_h*ie_J}km+Zk~+j zU{3TiY^68aiT;(bW2kD78~E&T*RlI>BEOjY-*iTST@gW!z2w~iqW|BH{CljQV&j2~ zGRkkT!wJ9`T-40z{#BWVZH_Y|DTx(#ERp!XVHb18RW-V8)0Bp?Uz7P|p2iA;a)G~c zwgk6j8y2Lhnx0<77qICHwIS_m#fxx%y0zlL;?kE`RZwlB!$%Q@#t}maBhCM4UNs9y z15d%wGSGq%SPLRFD3m=;7%~dAC`Rcr{+pAp*Z~a2U5WD_0K>)}WAy(9Hvr^F({;H& z4r+TBD2svks|tU=!_5F?=C14I_Uv#nFt}}JbDn>LyNoq}UZ9KDLf|rkN{{_J{zr-K zV-?h1oS1vKcKu&sF7C0z+XhBn#?bIFs zW$<4x8A1}21za^Frck;H%CI+~tbb+H*c(DXe0Utv7A($fRgDVFzdnv(`zTf@qDoPo z0R;NZr_h)GbWfoOsPq+a>iY!$V9-n5Np8OX!f3EM3#e2gP5Qz9V5mLVTs^hazy)+W#(}BSkUWiM> zhw0q*mydf%(r)^1n`p*jFG^;8iOL8P(3_VzNji%EKGeZ(b>6$2ijX4E8*X>iF35iu zLol&7z`at9>Pgfc$P_qRxaq(5=>41SBlfsQ{A#fm$BNzF%DWlf6-M87F#7f+;x$v# zSE_(N6M8Pj=tPR1FzO!ipAEU3Us<{-JIwBAzk^Onc-OvdA_n$vitn=B6cE_eZ)ge~mA5-9DB=sy9ba1@!JN zX#JaqD7ba*C^+FC?`mb(xN;SlyzO50#xM23TzF5>JozQ!-d6n&LQ$pYg~*4cM>pOw zYY@IVWNJA%pDQFIyeE#jr~1Km#@V77Wz44&Hnka=h}iYmuv^hrpkBy@EB{)uC%1ma z$RB5udSMDJAzrL=ymv9$Y{_V6{Leclx)IFkVfg3HWSf5Ju#LK*9|6yJ48|*Oj&P^S~*LL0K6K@mQs53)L{ib8t?Njwl%A}FUMr3;8j}3m@ zVjc?EA)A)qhT?N{ZRv6d@x8uuN8#-b*>!QMq%%b817kTQc=Ju&?kTeDG-27eKSniv z*4A7glHe&2jIkZDn6_bwQ$U51EbTf`kcfMGqHyy*v4o2(?~WcDQPyTAYKNmJQ$Y?h4Pf3EV&+=dYAUBuyhm=F7~By+X>_A?V( z)G@(#`cY^_?3gsJ*YWe$k1vFe$;s_=B-b^Q^S1iJ$&C}gZV;${wcv8h1RcU`>=BIz zL0{bjI<}@qJ9OSyGQ@c(+&+T)s2+5jPED+=oLMu$@ySR`6?4!}0ktQ_6?s7ORe&ok6_Fz6 zvj-4r8`hBsA=?Ir)Qbg^WVzyI%SRg^W344CTIU2cya`dQf9S^`Mv0>f1A_k>ntnvq z8^<1Z4T7dtvMfD-X>)&tbn#H9V5f(dW58D}T+PQI_BAsxvxH=wO@?FpPj3cyY;^Ph zwOvt`)IMpo&^uYZJdc_ipFRr7fA=i7Qecaf!I4pVopEf$^lyXAZ^9)w&_x3rMudJD zW`n>`)7CBK45NtQAL1PJML2o*z>r80hac>nn-JaEYuK9)E6}l8L4A28oGtjnF!9)% z5bjglQ(VGwW^)WPl4!I+Rl-ON{YTP#f-Mk0O#WRodMSGrL}=PlLN!ZXy9oHl=yWkG zRx#hmqZN@lMJYL7j-ubxgCd8h4n;IN>LO_LktL?8z*$v;7En=lrwkW2-{O^5SYBT z;59Tjo1bwB%#wW=dx&qfvHZdI>+A$|+l7bT55s!0bO@nem@9^$bccb-{L~1QJS2kq zH^wJ09RsobF$%*K2)b9EvjpaXbt2=EV{_LckUI4F?;3ksTK=dwFRWb+7kw@sx!Jt zs+-u*U@ZGXtlTfpDQ9(ot_B>b+t=6~Nw=rSkU14*ayo5+OQoF+jNrzs64w?w;lfyye7VY--AsxH)-~URk`Pln0*uslv9y7?kaY+?%#r z^Q~(j?ceArFqBp|f*7y$bXRpw>0(QJS6u-qtSkabTD8{(TT>9TnL60#9wP|Q35k<*t9CFONMKHjp? zqJr#K0AkeovMuy_MZZYjSF7MaQYmhGiYVZ$h=b!^=4$#3(#zq0>yAggfE$Cr-H)pv zKjn|GlZp7cg-visN1?X(BJ39YFMe6yxQMy@vbWKp@4?U0{)5AU9+nPtOF= zd=u9|gcYNDU`q6=Rw)RgRZiIlSqMj6m|+M~ z@Y*7N1g4d$&1@9}hYe3`5u45&Z7*d3zGtbrnMaYb`(5--lH3H@(pwu_Ah>sJ*VD4K z>f(=GK-KUVgw)>l@m@)@T3avd20~oA)GI3K^F53$22>;?3?hSXRo`p$2K?dKfv(Ok zcRtei{DOXo-2#yT*z2}2i}(9?S(mGC!%)BuU&UlBgh6u0RWqtzUEk}U4?%V01>#lJ)oPsBXw)SM7k} z@C%A{W`k+I_-`g#B5y1W5Z#+O1T^TgZExv^@Q+UdSpLYyFws%X948))TwvOCW+eweB!IfNnwkY z1Hkw`-rYkpga@~DZZ>-7D|LNC0TI|vWWt~zbah{LDe7wPN&(x+Pt-Jup)C@N3FBs+ zzd;^=`4+!dtyqwggL)^7Zb7)Z?Ryd52FvW84Vck=qEKD@_VYO(i4|AK9NG@PeeBNU zAp|L;0#zFJqTxYkTaf8fFEZGZHmbLCmnY?PfyOB(jx^}Hvs_t2=l&z$ytF%xjhwU<3~Uyy7Kdca>-$WQ*?(rtL^~+M88g z+p$9z(k`rS6Yl^{0x2x5yYB-e)0Z7yfyWJIdCVOwO#twKz@g&I@f!j9k?cIBeepXF|ztidW~4#gN${J9M1ohyWKpw?5fH;BOn~6qzKG zaa2_eGnlG2e>EEeZfWZ+Q*#LFn62rkTtLl>BLTTUK1qlg&h61ddbrQBDvNw1ETS}P2I z2Z2BUY!s)I3>1;bI3$cI!|I2!Ak{+*bzg=_VZ^Tin@y7A-e1Y9tiG zigp8G^4pb{CIRAWFF>ALMRO?odJ?hZ?OFe?lI4?}0fEm@s8DjPibg<>kyO0BnRNTV0quyrH!^Gb8qo@1)M<=gQh_u8v_98nnnZ^Htvh*L*?iA`f4^mV%508WHNLVa66f$m~OY3}D4*D`jo&v*WvUnR45u_P0> zg_#`YX1#56-0wRy4_eG4l5A(28uUD-EPg*mKW&D!EZYBC%8FjBwwt*7o=DrF7t3+; zAh+nl1QsJX^cQ{~6mY=}$~<%N5IsOELH}||*1uEI3;pUw#)}&`_jf3? zzSl3sfc(pq0By;&p}3Hfgyld zocl@%!jrxUVK;lsg^yF^id=$}V^|81A+Il1JM+mTyhG0tz*!R0@K&xi}}6EK(;|o zwm1qgQEU1AIri#O?$cK3{EKX|pm7gfDWGA|Rk+$*fz?VC%) zTj&gR=e%sB|Gq<8@-gD0;Sb-%aj3~fx{+YiO6)tHguh!tHNcbqFudsB0gbc6r3R!Kr<|@kg8+(m9 zG*s6cxGtC>JT~>fe-Y|tHJMaO)uICrC5{~u|RXKYZ;!N&@r!JoF+mh-L4*s}TQk){$B{m3H zPPtB7KLuwzagkW{R8z_OSwV~w-yK+AgX9+O{nDKldi}7y#OsCQY`>Wg!R#WNDs52% z;JvB#VEpzpO}5Lc7$4;+W4{>vq~hvvGDSddntoS?uguXRdNNf$BpHWvN!pSJ;Ug3D zg28h>#MMt6m#opVKG=g$@LT!Hr3Xsel{lpaQc}oZ=663;MF<6Di?6;vn!e51+!hQA z+QyU5C%->qGp~y?P1Ur)=TXmCviZ*}t~+NT`7EOS54nCzNejdu@vQwlC1T z-jgw{p6qdAkZVP1+rN{##aQDeAX7q!3g*$mfwz?=a$C9g{Z<#h5{!XpJ&vEVTv0-% z{Y++d`3MwYTR(0dz7v#X!|a5dNrjww*5QO!4{05R6>aoa*{RJx$?ZvX>KDkd0Na5fZ0J(=4i8wsH#%9pywrxKcQkB(cnyXf#% zG~G*@sXjd_pQz^`xjnb8U+#^n7iF!;dmLPPf{eHFmDjLnJL^I>o-gg|?7)6^?!`qJ zr`EIYSY*p11pQa|{J~Y$n5~?dop3I<_{9Mp2%Knrl&&H+!W4jZ5#dnUjCgPS_WQ`o z$l12W2Y^p0v6xZos@0%opq<>i?w8=?>Z)FR64s?w0$dt{Jf-Fclf19CC&ruG#1ef5AKnLKN3& zKX!Mn#6~+Ct1u~if)HF?5(+2&*e&9tiYDkMRB$zy4aMMv9NBQKBrkyMLNDt$ol<3I z0qOq!HMY$6(~MvW0Wwl^Gg3?Xt=RS+Dx6tRW6EUYO1wAc-M;Eu`1wcG(4dZDsV2fW zvC-S(-7gz~0q_22Z$9tKka$g`XWwIxUBvFqaedmnKFrf>WmQo9a6Wc} zI5htg@UEm16-iAG*&O)}vM8O<8CC;`!?Rn$y4rc1cQXrzo}OW|p4fuBuz+XOM@fQ- zcYc2E+nqEt`5$xmuryK=TMttKp}i&vh)7^wBAAOsBSLJv!mtNDbt(Q-IByohYnqn& zd)T*-BgJ{n4Ex-zGiGn?TTyC3JOU#DanUwOF4wGoJNtDoH63=C-A}7au?;P+8}=zW2>I=5_O->E z6+-=eer9FI;%)rkM5=`^xQy%xH=E#T3otTb+G34Me7{nDhsqLw-)-lm4y8l>5A7= z?dnMr66(WqW$MFO7|rfdQinL>B}+t3Q}H%yL3w4Jgagp!>k_@KzEPLF~0!tUeD5mP?^dhQ2`1)Tu;H5H>km;<4^&>RVA*Nxga zk&gJg;2jHe{I0$j<6V*MOS3Xp!#K;}O!7R7?K0OGf)u^KQXM{>Niq3OMvZS`0Y7}~ z&2=#ux)23-o3<(Vwh9UAzI87;5OHyLqlYG->Uj9dNYFe{)z|u1h54J$132XJ&^zR|4PS2n65itZJafR&QPzO~SeoW{S%a%zv- ziLQSiAZUw&+y7Wn3~;zsl~?}GY0(TJd^%|=B-&l?g;W#iw)AfkmemVsih8eZud3(S z4&{n;B61O)WMPusx@gs`6fHW?{UJtbjoYV0Qzq?Q>ATBlH~6iUSL<6Szn%Sf)kOj8 z5A?xSa>jDVP+^AvK{)f+V`)D=Z;8CWwGM(SN3`;VGsp(IfPU))o6ba=e zg`cR0g*u7z8`PH%m##=_5r%qz=hhi`?%U>EJRQEf*j})54Y!R%rSZ+~4M~|dv?iq6 z1F}#)?|T) zd@FcfNuJ$Q#o^Ng73_713aS=AvPZaF!FgJATC`hhX}`OuM1)v4!iEVR2ijzt6DG>fT&aqw9qAIT?rX@hU#Fh+tiqTq-4I19y?lYkBvI!&-%f!A;4|T1* zFlgZ+63^pn#w|ELBvp!WOrm#&m0B->@cSX+d>KyOCj=lz}oYv0rDN{i}tE(}1mgsxw-qOSA>$K!M&&)|2Exa|p= zo!WrTHGgLXmQvkrs?UeH;p<#J8F1vRgMqE1R`jWJeMVNdH5l&A8eb|6{v6LWSgyVl z(~UJZ$#(k2E&9SoS!c>;%^tasvD@6cXNgzXPAaWJuPO;R47C8$ERmL;&;D4A2|lfh zB*=)ie;9d@25+My>8?Lt$wk}Lwk>~^TfB)RbN+30sq@p-HX4$GkZ3)NB&|J(WameK zxAwz?b6Iy?%CKSA<=vH)Ymgy!)}FOKEQjFT#~`!Z3GFJmwqY`lSH&yy^h}DJE_SU) zcD;dC%*QRI(*UPbvp`Jlc)QER$baf_J!XiCY;Ue|^CnW8# zP#Dr#DEY~QAq=pls)CNh(LGleGy$DKSS?F!;8WiiOSJ8O`({K%3kr)2Os z*7tB0dxpq51E-2)H)+C87>QTExH9BuJi!ZQBdZp<(?cctkT300?pD0PQvccI)rBq7 zOQeTSysfn@AAdFbDQY)fT<+x2e`ZvD{p6Q`-MhWBGeAf-);0!C)VzVRz7v5nkxL6( z#2US6J2FS}fqI?+7N}IMP%V_40MJ~|t6wv6&K6*7Q%4VxS8@T0ubN1nE0gT}$OD2j`;g5&eRX5?JSyv%yY8$)pW9r3Gu&*2-(6RLXJzx=uAJf~-rBlIvm z53^u55I7o>a4F+9hV)DQdq;q{ut+1Q!A_8C-HxhSuzqt%mcJ{kT4;$nuW2zYjSVb+ zT^oVdb`%c!&bX^htXU$#5SJ&Z4mOa?o_sfp%RA$hLMZ7S4hPGEc?*I5nkDH6&Tve` zbCQ|(7c#HwKQ71u*R&|)M^R4vK}Ef~X1}NV{Vg3hx89{JN1)uhgdo&>ZSVCjXN6R3 zK=AODw5vsf#ZZ=Lo!7qixwtth<=HroHg_)bvL@XGSzeiAtRX zo(2kktV1?m;h&IVMEAw3#3hYneVCIrcc^x*+Bx^1G13@2j59K=qfP7~c4+5WoeTvj zN$S>H1)=V!6~pLV9lRhn6Y}9R8MK(P&N@-3m^`Oop1uK-%tZaiL>gu(nc{&2u;hj_yD2XmTG2F<>eIc(??R)pYhSJW@w=C{@8Wp=Dck~$YXDTX4 zLxFwO1Z`6h7>D;-upEhpM~Gr59x^s5emcBQ$sE9-;&9?_Eclt<3YB6ew`DDQfJes7 za@R#>i-3R46F$P4`SfU8d)S*hoR(V#ulo+x()w7!qvZ@441A(dL*3p*{SI?n_PIF8lsWO&7_zFCPRV>v=A$c&d@B*Wd-w0pHatk18P_VBVC#_4)?FGK#q3 zo=c^lJjttsc=0|KkKzFC=>x<;Aap@L(LK@EzXtgyqDlN5GpJ!Z0~4jj^xsKlKI%r7MPG8R)pU_JIP3oCRq??JS52{+Ry?+M&&!8&M-i^hvS!wv$c zD{8M5aGxPHrG5&;4Mg`<#v?BPbYZXYi*fa&M}>BDG)SwQ=v?4xj7O2$R4{iai6ZZB z5a1eHNLnZQ0-#2S^o7@o5NhCRGb6<{q+zY6&TFjyP+%bw^8r@D$~K zoX@eZhIJcPiwgEB0~|fVjEoVMmyE>V#}t*ke2E`hFDW*t2bxg6YODvEKwF4)k15nLfClJC_mf85C{A&CZ~GMIve!3pSa%7kNp5% zY>uhMe(8%?KXxR=a~C$i1C1jkUu&oi++2mDUl~qO(MbJlRqPPrzC`ye#v? zY_i4rKJoO~{VSQvnf-B2Q5R2fCm6V?gaM3j0~)$UNpdWu>sY4MHo zq|{OOZ~4!=A03PU_gsXaDF|wEheG)6RUUrl6LjvlS>!SvbB4H^j{DJ6j*yV=MQi&( zpldgY$BEnZS(>DZgj=s&pTxp;nkcO8!IVsE=UncQKx2NkA2fKQ0pO)hWe4~5XNf}C z?dE9R0Apx9T$Z*>N8y$(4x=3^(Nr$%vUS|@Bw4_4uj6F-AHV(qY&;4&as&AF)Ab@P z@NotF@0K&`V4bc0XZ}m503RIPP)4#FFPHk*#dlHxs&~hP0wi6>qDKJ1)I}89S=hM^ z`l#nQ(L#bvFgFp#Ou&Wo8(3MDF{?)#1hOa#8J$V2@N@y;xdpkx3QPbuqdRj${C1T* zD#!_eN3u5aAuQMj@B8h5Hy?mw{KisB(j@v6w+5+e^JF{_I&u%$#U@3eM1spD#xdZC za-h8m5EGk50BTW(CgC6)CBxuPR|7w~#sU^ol0TRwDzmI98AC3<7qgbkqBiGxDcGkS zpY6q)=2OLwQ4r&rO68Wv-Gi3u-T2L`OQ{32cT^Y#h_urRm2lp=tF>bM1j)SEBuFV1b0AC#@te$#cK zP~rgX71@hZgI)Uv=(d4{SU&vTIs%|OiCh3+D#L8Z@fRpuhy`w5^!H2ya9t_TV6hzq zb=dibBR4^rTMf+}5N?g33Pv12&U=DD4}+P$7#)M9i3jLK7H-rLR!RJ6Zsaaj*VQ5V z?m_mIK`(u3rS1NLo#V0ax63Tpur&~K6^sdLxe9RIfBFJQGi=c#vjKc^uu(xUg8fei z#n;ZKEQk~A8EdyFu+YZ1pp04+68VRQ9n6{y7F{~67xe`U$r-HBaz5ad_=|;$0Ns2Q z7KRIY#s@~;vva}pU(69U9${*nm5&VE#MHpZ11QWq|IRcP=sf1KRJDdRcTfe0jHVV} zJnxHU1{U7O*}n&dZi~fo^K)M%JO8c+2aG{vIII`~3`D@b7smLP)?Nu@MzckGo0wuz zE&nIUKEehx$MG4`5Af-TyP!R6Jj#EQsf2g|hR|!>Ua7~fR)9r_*tAzop9{-;3h0Wj zvM>V}fgTnydFM_==3haAgZ3yOL-wGXuM|Ny$A(2r{!TSE=w@Utq!RJF0IJ;qMe zpCA8|6SZtmcE0Dn0ZHIKbLgQvM^_^4!H6SBI4FU#_`mej-=G_2&`AnVDF-Uc>s)aF zuqi`LmPSCQ4#FEQW4|g1z=M( zG${LT|NWV&H8fb${o&qXHZaL7KxE^vKD_^m5mTKq;zRof6D~1W$FvpKp7xUU@2tMOLIRjL$iXi|FDwChgguG_P{{z z`GmDlfU*iMFzusQ@bCW2NwM^w{v#g(xO$;LMphCC)^rA6EeEtd{JR$kz(->Wyj3w^ zbYDPd!Q=P|Fdw40p$sDTkl8R``uWGW0NVK<1*h8L!cAaN!z*edf6VpTq3?+oI0Jez zh=#yljnd%W4Sij9VCnGRRIH_9r}n@31Yx>V0dxx>H1|LGFvsq)DF=OUHBdre0nM$R z!lLJ8dCx%Exvs_B2I8Rw<4gFfTQjhDat*t3KG1Px?AhT)B=ozVBK7*y+P2(N@Pw2| zmNIm1#a{yy&EXs+<>5`hUAYFx{Ec`{Kxx7H2>@~kx<_+?;XcD6%Xb`FC_tYkZvx7V z4O_BgP6g;R0nf8?mhZ_o?0feW;2c~7nH5G&ey#+z?5+-J zV=12of8X;vNq7R#UG8)s+d_#HAUv-ghgp1b9lAaSfKK^8K!l>0Wj`%8)j%Q0Wvvq` zCI^rORZ;-#G=@dL-R_hy`TU7Uuu09K@mqdlwn7N8I>_(+x>*KL6oWUnc2V~Ar)xWm zk7ry?ra^-GS25QQCgmxxeBdi5fB=DJ5F3ty5e90HZg>7)G=RSxBsU2512{;6V~MV9 zHtoh#0rr`X@nr97PAmZl-LlM93*HkW=;i;9sIQKzGFrL@Jiwt3ElP)= zba$telypi+r*t=hgmj0J(%mUY3rb0Y64KrE?c=@o{r>ca=ZXEyo|!$f)|$5flIPWF zGgF}~DH-en;6?)Q0l_p9v2eY5{=4h531ogy`^v=P`PBv57v7n0m{oron@P}tkJRTi z%GgD>`BBf`@99Z#i{CwgEBs3#{Ji-Zjx)1W3C3<ktE2I@eMWD-7OsOYO5I1dZxmrzt* z_L*ex*nO#20D|o5@M#g&U{+9&#aqDhn-G`oQuPPI@n`qIBrB?xEV}{_(}}mE906%g zi)K{CiCpLzkWvJDqx}M58idbW0l5KmoYRe8ipXD&WS-iE zMDy?jSUK67LQ=n>pwghRwISdH{sq{eDNu`io&)HZ+f|??*%8wT2l177q@JUMTe*F! zx1CkP5ZU-OHvQ^0NmKVFd^QMr&-g}$Lxq&-G{aVd-8@l@77#)|0~1%i0E@Ef{+kz0 zu14W=7?{pumkuu&Vypt18tr&0h(!NLR3K8a0hd97w-7Ie1!Zd8t?6*qsk8iuO+V2# z3HC;jrk-8BgbldYc3fM}y?Y|)Ru*sdPQH-v=i^{v+H9KtP+0$YxI~br6mvZ_ zqzdeXb|G{F8JAD+aR$hN(23y>Ha|XvX1{RXDQ|r7SS|oo4Z3Jw0Dx}}Qqr^tKBMbn z%Q#Bg0WWGgn~*x5VtuoaI{-TzMn3Yzns~TB3>UR5CoEhL1_fK>uh4b8z*T4yT&Z;M zNr|(#XEbCx9qx4(Z_D745y-&nzCieG4oKn%6O%!F?jGz2xkY|tE+gz-cQ{PNs{)1P z-Q7rVFObVE)r5k$QS}x3B#G>&j%hS^opdvNG7C@~(cc3wIrL>J30=eQYZxYqn1T%2 zHYd*e0!@_}m-{aL6#i{^pRxaqM*)*cat#kS-}FMyz;|p3X0FE(-yN64nc4&+C>{zb zPC%Xm9&q;&Jf%{3FIH7lCtq?TfM%9}@F8|8-+~Q>@aK_{?^#mN>?T|*zPzdjJ=;@K z9b$^8tyc?l&%DA)-r=dQ8k6QJW$;87E+j>Tm)O8ES3V1ro#2+bz+ttz17Fi=%N|O& zvamP0aSyygLnM^8RR^Dh0`i9c{j)old&Kv&qY0pkn3>y&cce8Enz>mhz< zIE`$~#*U;#Rn9>3$y##l2J+hPl^sO+%_56{;5vES!;J$aMs!vnOuvB)i0Wl zp6SPn`H|uG_r!;IP$@zFdrFlUhf9r2HYbFsL*>;mYRkY8Z*w(P>dO$6-*)AJL%Kwu*fLGYS2PbpE(60j2WyY(>0 zfWu(30DNm3U`SPD$vyM$Q~!biLPevNm0&iK^*|gIJl4*b5VPnPgRwA`0`LCjqTrC1 z0k$#M8IZ2|%QtUZ8!e%Gi47A`Lm#$=x3?vpT*{2sj){~`bX|li3vAJ5VJo_tJ}h}3 zFemPSAdF3bP2mXUu9wBY2j2c)T=O|9&jYyc*G3rvu3zSWz}vekmbOEQsYVAQZZN;i zH(C_DToU{cn}#d--<%c!4MKzP75ducxGFXl#(&(c4uG27{3j!vSxH)kvsa)gMvCik zS`YApi@1S3AjEv=a05tU0epJpcWXCd-$4W_AAW`urThoDF=uT4H5l1J%T9%h-~H9w z_E@fP9E$yjG^>A*WvKl3wZR0k-kpW!+7o~y=cjhus`^FEnrKsAKkW>L>|k#me#LR; z`DOelODoQi0b>CGgNr6wfzC#z>Svj)I{-}iYXj)~2V_?WUt9pinjc_#XJ!CAx}x&+ z4XP{VG}+^H$SzF);5lT8_NB;b-&l9y{U814mrU-Lu~mRl0yqFy5tt06t=K>y3_>Nv z_3ZiygpTHP1rkCEm2iwW0f4z3U#JR_su8b5oMq4{_pMm*$JlCt<5hK33ACO_nU@&i zFwGB=OEnd;6dlJyi~^)T!(eN?nR?J5m<8!}(DCPc*tpqTW(OC*d}ZN;QqJF_FvXSw zb8fk)-vNvVX!v2nbm+gbL!d71N_wvDM+*^<hQlD*V<~(rPeJg|1Yna%zpq%llQZeuHid2=vykB1eYbPoc@X9UP#5S|CNHv~ zucCX>xE!59>ht5Fsd&XU%a_mpU+?db%phAJkcS#ghLQc?!_S3lxZ%Pg61A=y#6S%Kl;m zn+rRZl%&lD_uhQl0Hv+cPwrg?N9mt>eFD2-nM{$}Ztik1;{6Om9O)(2W{ego>I~(r zaaKHT1;DFwx)bb!qg^6gTF!js@L%mB5u9;~F-Z-n19kD@xcT5@2i3+!w~QdMI?(Q8 zO1cA?PN{v%*0b`nk5*Rlh4m$d?Or87O+$9Dj*reJlmL@k~_V`_#J}a+Zxmx2xrTtneTTR2?fsQNReWyVw9yP{;Geg&sA~dR3MK(ct1iln^7ziS;~d5ECZRj zQ3Llyb3lTy6)cLl;_WAO`5@RnMufBuiGt}qrvAA4Aq1HhFkq@_?S~Sd%k(()hawQl z_}42-Q$B$f6EZwuuqKHNpjJu5RdH|nX9d8z!HU0dS08v^DHv)pl9W5Iazwvw< z+B->BQ5>xI>rTtPsi)(SuD>B}7y4wA#ZDcK%`Ne{NGnIjrPX_#dXvG_y6l9z+4UcP zz|-VH38W#Dcp3x;E$2G8DiCm4N-JCyMwOpS0(MQ{&$KWk`5?T%7MAM&?g;)zU?vPa z1ApG<&Hp?DDI%TtN7Dj+!axaG`R^xd z;3tu!jH4w`S^^}d7xG+9)>B{7Knk1={J}^=?3rIg-8o>#%p+^*XisICl4S$oy)>Xe zHRtMS-*IK}G%W@r9Fyb?d?1)H1u71?EfJHp@kI)&k^S}A&fA^sAD_dch5FxT4$U{a z6g7iP3iFKDVQE1K%%khB;m!jOkp?B;?E8sRp)m~mOUcWTuSw}^{ht*e2TSxRydXIr z+DjM+2B@Y24a77s-0Fw^yC2dUfE2_fdUu*oPv8r%3L5}e&kG_R7ZAd&+N6{P@-ttW zfw;{GAf7O@H-q_xqmhJ+wym=gWtl2G7-`h-p?v({FgOa%eQ%y{Tbu2CeUYT@2{aga zfRki{JFaFhS<8-OYip}P=nifq4=}zO3meJ&#?NLMWF%^gg%T>!WSA<%-XdU(FQaTSs?f5#mfbOVM#X>_(DMi-CMuTt>w2&(}Ixc@CbT_`(2XeEe z^V?IUcGqA&B0D%wH`>3OZ*<_TeLLnhtK_!+xu^^f% zn;Di9F#b^&53&k})r_uXHn^5Ko@|R4>)wp7QhGXJ33~M zgUL*`%mQ#sj&S&}p4<9r_DrGDQ#hJkG614~)a19?6WZ=4bi2BRY8HA>)e!T`;D`nv`4fR?J zB|TP15!lo`za*5`mD0He+rZ4ku;VAZ_O=Y0V8-WYgRhqaF2fh-E;mV(|M0gbiNuPN z=!wL2T$OMy<_a;ZD1fi zr8#(*&VR^K*i``CDQ~osuqueEVeu`<84Kl;UhqI4orJ1T4~X~FFydUa)Z5JHHa6?l zTZa;*!EWLtaeaxO^)51`M;muf2EUlno>UG3aO*0h^0}&B6x9I-60a=q91KX(Xo&R? z!h+UvUnPDBC0$GvTdMokt^oSSt-1Qr?t;C-4EvfutSUDt$;gVWvF5}N2e&l951bPqE@)^`rr3>jXMsTE%AC=Zxku^7~+^i zlZv==wo({o4%Mo^m9HBfb`U%jkfxl)g^pkxOA9>E*L6Zvp>oONbNjjWgz)g80;!?S zWueqL8W)zPBt=5o!6vS#_F{5?77OYx9sXRX7B^mKGl^2Ro}^!<9hiTi{|B}KZFUW7 z+vF~Xdu8C^{SL1&8IV3w=F&3YCB}2b#^=(uJ3XJ?wH(1f50x5JVW4jL=fJ!C!9^GR zwJrboA^6SZNFYKi&ZmPdgD-ssu}8$^)0C}c|M}AadZZ_hsdBou%%w39%aEmC_J1J3 zPkK7C@L8&#`32dO1VJDYHLQFEx|;5!QlPsr)5#+T?R~Sg`hABTeqk$!&riX3s*mYT z?TW)TP87%|>C@Fdxdf?gyIH>_2rQ;tNl+uYy7Nm&PS#vOqS8>)Y$2G;>k73(j1)ts zfsJ~KcZCR&o&<3WzN%)oMwDL-mu)SCno+MLMBnr)&9PX2=UI4gAritN6fyKN2OLSa zlt0-nW+MkX)@ zIY$WV)nFXrOWm=-d$!kqso-mb1=c8wSc*`y zwcZe1I|2hqq{JNe;T0I@nRxKfU)>g09aM*VhN{8y0&X%;T2>?xE3d!^7_04bQ`KXM zTxKoEn^*)hls5@aan+9TZ@lxk8IaII0$$Cc zB@ewkv5Cad4z7Y;siDF4qNria5J#)8?V~nm;LgnN>Pe+3w_t|~QTWqm%xd4)u9jc< zYy7iHIcv!6&ubswG;|+AwZ^9Wj=Q-_ZK@SI@tE7L&QOtg(4S(hpXK9{Khk->Gbde4$s%@9o z!mVx3jw-qGAbR)W^kE`&DIl@6b&g6p z*OIzRtCY)d?xVaRk&18mgB4bkIl+PE7oRJ?R`=WaPl|o$51L<8Yqbji<2p%j1wp;R z*<8IvLR!7XR!6-}t~(Lsn~jwn)N(_yt?st| zW?Ch}6J8>M2aOQB1|9|62x4ICmbeu7Y6i#0R9u?ci635f>sG)65~ z=uU^-<;mNe==nOYsoqAEEPmgy7&7>T#+`}U(RXP!9F&%>lpA9oOzerO4 z_LM-JsmFFWKREL~a$fI0SZuvmlhmUy>X513us(Wj{VMvraez7?^l#Dn@Cc5A$YqiC z(Qk}%`-jbM-#Irb7-|A6`=eeU^#rQT6MkR(6~HUkvP+zZ^_Z_B%qIElr{3I?QRs&PZwMj?Ey6#CP-^R;E<=e0|1F z_KJ_HmB~vVM5{;`l6F{!L7ii3)1cjQ>&~)*avJ-^74@X=p7jsu0J)#ig%^mg;w1i1 zTcf?;h)s9Xz-1tS+^Ut^^nFF zAT(Px;e{A4%x$fDOWeI0K0?!ZCa$WBLs4xs^*Kglr@VIT zQep#}JRuHiO6EC|ssv^0LxSoH!>A(=bq5}WJ%d}01vFn_kjz5Jak+MO6u;-m z+K4fsTjUxv=wOt-YCl!e_~Nk|eYLT=X%r!^^MeJV_G9Z7WAxrmneFp|Kjm^CXB>s+ z=3?QS;psxB%8AjutkzW1n^W!sCOvW{{9{hnb5iws18?=t`I5r!5@97*Bh-_>BgDa; z68JzPwUI=`FNpb~ip4W0Hf81YRGb6hU#c8$dO5vc~P7K`p1?XN`G`+4o&T)S>%9(aWnMzdeM%CUd(n!&-I zlxI@k=NrPw+4X_aCPsL=ga7T1$e@3V69#T(kPTBv+=vz( zt3`G}s9Q+HCYgUDf@WlWGt+K+y3DF@)O$A5X>_3K>a*)%HSycDBBS)TbM=po^ zE}9qn78OjSJ{#PhKfMlRE}H!qJrWW4NNEqWX04kC)wD-9m`B*}P!peP)=Xk9(GUK# zw=1HKBZgdxrY`pPv?V4Ccy1X{$K}Sq$Bb`K0t=+}C~)Tb?1^UEyIH{uOj7MagR>`v z3y80G6|z%u-G%d{IULtYS%U}NMl5rkxB8iz zcjZ2#d@?lekP%a^m+@fWk;h+VfmLh&6@_!VqIEPpr?TqN84EqBLxu2zkjvP_M9_3_ zhnBv%VbhJW6XDIGzSGX0#j31=;w*=`Qs;O2j11P!kwjL#XW*u16`e!WZ&zcB{qXE%H=uQo@^kR8%gH?wV8vL>g?bQ-_oeZXecOaB4j!pLv0 zVHF)lybe5)kBs*H?$3Dj{7OylPZWEcPX;hJM+m4`GajxdGAGN@nk~B!CJG0ub%u%z zIG24UCd)LZ%2I`g&x0{rUzWj|rc*taBQ&$&wk46~-336gTfx zKabyZnb2}P94fNu;L`p(jVOA9aWCvXSmxBy8God9F9{ z=}2{BW0-|=Pp^TEqEg>VW>NSDCf_Yk`7w@qb z{QYk*g?PR>U{@N<<8`2B`)Wq~Cb0lQ7ZzLFuL~cZr$J8dUWsz^EJiN485mM zrD|8^v_p1hQvX;ds6ZcYRy4GFHtH0NnsQ}(eR{Lru2wid(wq>Vzcr^QO-T(|c#vB7 ztuOEiBY_tGF6i%%#-3*qeF+dwyFz&W_8iHln)!9%LY5LLR)zLUD6D7Z;VM>{1H&l$ zt;Ai9=ksU5+)(P1ACZKG>KW4;L4Lk=orb!J_Ki)^?d|W<>fMBHwo5HGD;B5K4*!m% zo!`E0TsGM#U~LFK6b)e;U*0tI9mQU;L%HJ5J@#|km%WGz*DIAMw@x#9a7t>uou0RC zSTEJem|61FLTOXqC4Kypd5mv3z7(s|wkG(Fcln`fcb9r2 z&vib9=y1C?%r>0TC}UI35n2p9*mEtoJkSwmST!!bnU6Q%7ouMX z*CY2{Xc4<_Fpnxx{~RXV;5aDTFhXqT|8<{Yeg%3GJQ7X)K;dtWR~WNtV9f0D{kQ8e zvg9c6X1GqR?Y?q_TnD&I^le&`)QO7j%JWa2BgNbvKCqwqo8_C+>UMOsh&AX`_=hga z(20loqSpCIQ-qRh)@&dMiQ>?bZAwbj^qdp?k-)bC#MLp_M1WD1I&@P=q&Ck z=(8;+#@dd*EVfXT;gxQTurqFs)Px(NOWpAwHT@}@pX^oryf)WxzTlO18M_YY2{K00 zeld;4L?lxEiz(-*?P@#8Gnrx4D|EdJZ94w6M17BCI=<4#cXq+WppcO$5Va}0VI<+2 zO2EPIFmQB!FF!#a*DWfPuJ!swBJ11o*Ji!woPX=eCO9}a&eOR_E=Bz}vo>m6Q0A_y z$n733mYG~(YX~K7Cv4CF&y&VTKIJg>%5bsmD<>M?0QlBvGC-m|7rH;-E9oJMn*=G#@EWjM40&#)|l|vl;KjWMZo-sDw_y1{&&-KVHa|M|W4Do4SiPU=%*^3>mZ#n@z z-2tzm)FDqZGw6F2eqvF6HAsN=r`iPhoUd!S<;p)9hG}Bb%MP#9ZwJ0sG26*^I&bY|B0dIYg#&c08*Sfo3P)sM|2Lji!#gYW z0_Vahl%K&j(*f!&x;sPRIldN4utv^>-(Mo?2N^$3Z?=Ccs5WkU7%V~w`nmt`z23Fi zWr=w|XrMCVp-S%>Qqsc_%yuZcmOIjM%Ty7d?D#Rnk$S%2;HmFk+#}AHQ}jk2l_x|Ci?!{XRX;|qAFHNU0Rk}Xqlzn%AyNf?fRGEm|MsZe@ zrgXr>!z%2Ull7<9GkZ0M=Puojzw@EGkH|&;vy8KUi}o-f?c<-1uDTboNIb0FThH#r z++Y>bEc_>!oCn=EN(o_DwdJgJi|0MG_p9waH+=)%GM~TE9Ys$TzKue7z%W=-yqA5J zU>@@07kH}_u-_Zw3y&kVr#lr=d|6oKeBFhQ^6S~0DEzhAmW@B6)633``H*L)3eLbr zqXlxB_cSLoP!5z+c|%vO&j!;K)m#o-XVMW3UODNU&yv3uouG@p(hB(^Ln&hST|`!H z7N%gmts&Y={=g!pQ5{be^X_AXMjp~r1-YthssquJx~tPZl8vmQY=WqH0(EAwrrnoU z-N^fg_KSO&RV+0t2fa43vsc=g50>lbHsaJ|y4Vns68(~R;3Qkz2L4uhZG2Utk=NEb+F)sMIV;+qv6AJqBTGJ-F0A-_yoi zHa)D@Jw5))gKNJ0F#i6Ryj=o3QV}9KWY1pw_=5Fx>RGyae$Pr;#tKSz^IS5E(u4p_L0*J%~elMNMq6J;EG!x^Qvep1mx zQUwP2WF`|QM^A~y(O7|@mf+RxnUzU$iE9A`l|bI|v#iAlh%kA`@+6EeRLzM$C$h#?E zOx&|cwU_Uo>kK&w#$|)yzcWjW`}H)T`$F>x^L5p&utOui2PNpZ=^KN2TbWE@w)ty` z`8{UVw28L24fYG#85c30`+XSk&8%~7(vh&|35(|9G5mhTq@kvmW2`AvFMq zo8%MMJpQ8cI8YfYH#a9-d zBKINERR6j+1*3x^_O6>td~>&VM|gt$8y{>c*voK(jZI8C#yjGzj%F`BHgL<-9=#Ht z`W|I6?%(C7W3W09I#2H6MP15jqx3LSnu2*t{8&PpvodVJ1{RYPg!;&{Qjvsr`a{zd zkpjU&x|~$M_t~C%&@2m?M{<@o=SE(5a7fT!TU4zQJX+`Ok-*-`BU8IcL8PZ*`mjT@ z3PO(CGEQ^$iTdQKah|opsIatzSOqAf3qjd2E#hT@}p z3;w4CkQ9uX=I_2=hkLo7dL1GxUDsgp=z3lZwK+-slhpJvrLgfg7srNv!tdVUo=Z?> zY(J?J$y6=K>~OhA27jNQ$Fl8}y@9{yL!0N&hvu|hp1$kiMO8=})B_C{67rB1;T?YT zfbXOi@m_1e>3}_@P^hx0X3?p!05h?{_~<3iQHOd$`Q9A7yeG#7S^E34K;kI){GkJW zbk^Q#r$oB))Y_Ootf7n7=Li}3uHesm*D;G-MWviqV|U{w$ombKaHEKACZd_1J5;LK z-#Kq)z2VibwI4V_mWyMV-ug{8$9hH^Lg_{$c~hmblixaf@fyUD=-6^`HU;G7Q)xox zpZqxLF(ItDYnlzz!bayprR z%oXjaLa4>WK5UZUnhgs_(Y(lmd^6bk-s*e6lStX@E1SR2aglzT|L9>DJvxd&x9y8&vQ=d*gG&7=?Q|VSy$BDulIXI0z2Cs#Tw6>)G)nr2`Roe8gj$B_^6Te21BDBwr zbN}rlH`VeK5ozR=Np>_|F0|_>)5|CX3S$qPBN6#IWy`Pdx&sTmSD+R~IquvB-=v0yj5W%epi?0P@LXZI0ahIc^n=gEmA+Jqqv8@KdQ+YrS{*LOykQV2L6*P$KfL02nD|4?PsAIiT|tT~F2;ga7J> zl-Ns^A8iM7Hqw;V&_pJ^{ZEqVTqTd|k?JYI!>K?%1t1*IQAvLNq>@OK2bID=)Fe2Q zEoEaaG6wg1@z~F+o?0az*8^TOMGnwKHh5ew7hIgB1q>&ZvdjDB8`??iwxTy`;Y44c zYq){z@uEtJgsOL+UW7(~ca(q_m1;ub$pYVy^tF;r<_5~7DV{$q*#k8;0>q_PZAEHz z-gD(^l9UGNAE@QSIGh;jmg7S;Ycx>?_x)S8L+Duoz**27t44TwQeAJ+=6Ju=iI#TQlRh4&tC-Zrwi}n{+ zg`3adx*&-;pkGpd{xi$c{VP2(3!W13>*qcYN(tm-cyAscQPPCH&r^T*aguekxb0al zdHlfwl4wsRs;CTiJyU?D!1s|f&i*>P`DuVaed4bsA9Q?A`j-&cBPFy-%z7)5@IL8% zzc~Ty-vZ;|B7W*k`glQbz-Yk7y-Oya@|mnB`$up!sPiJg@?p;Tg6o4OiN~v> z4*5e1>yt=qB*UmzE$^PsW7JfM2%&f}bc+YC!LD z1kB{HtwLG^n4ktbFk^%Vj7QVgpCj3k2mNfDka{0!N@-jMof@+Q`KeMZ`5*gMjqp7o z4Of}0NY3fg;@ERsHwN#K9HCQ9sxM&>>mIoC2|xdfsgQBvIT%2x{0U)y&FZ)T~^xso;3slDB^MeZ8vwpy>EYWm&?3`<{FVs#`(uBx70V@1 zW#B_X5~J3f89-<6CX1mCfI)(G!Oz}-uCfmx9Kew!g>T2QEr5{YMgYOxN(t@2lGi`T zgAh&CTZg2dgfBL(INISBP7vrpZM>|0+!6UUOE-mD&5@4@bMvK1;aG zZBMtg+_1f+9x0k!cy1( z-4YcJ>D!<`QJK?l4|F8;?^QgeOI)8Ly^j>j5%IO1fciNCK13RTbT93jo?QVP!RS#x zg#!>1vIJxXz6k)G@Qx{VW?4A@-4|t7yeGA1WH?vg5_BAt3~%iQQX-LfUnH^^e$j9= z!vD8owA4s#MIJ_UZ|3WiBE^JYju4dLae&IS&@9t70hmSmN8~D^nmH^6Ex!ucME`=j zuoY#wr7zNpAzcH|KspeeoF2*G9g|6P`SIJfkoN9*a{k`51>CVw(HwepE|GLR<&d-> za#pYN`nTDfr6_%SJSJQ>NXbsjqzCC+tv-#YtG>j9^!|;UQ*&9B79mvvkM0%y@nPT-Fatmt?wH> z+hkg#^Y9gCBS!Fm3ryU^VELO|1V*A!!^8qubA@DuUI}Rl8J+VdY+`jI)%{I)H4=p&$v7_`7Pl`=}s_#cGUTaTny8A#>@~U<5u2fdX zpD*bNi+u*hmG0SzI*|zTiGlrqjtw11C#2Ejm}S7S{0>K8k>}navsa@MP`Xu_NI#B3 zfZu$K%q8GkEQN!XvM3;Ej7k$5m{ld}14czMbiEPVeG$B#LjwLY#VW`SaM}%2Hj7st zwje^-!=dtegsKH_w4=*6lD7m++vLJt+PCQXaYP`xBSN%u!edbl?SAIJ*QqiVmukQ8 z8yVO_T4J9R?``_@Og<=bj%?=s1=7nH1aa7Y4$tBO-Ol4;uyG{3uyPTnN>ME=Xl%I!x%O7rzj+@lm3180-I`!vM|T zd;!pIY_zQ3ZUQ0zLy!FtI_&-jzXHU50?^s z;fh#4m&Nh9Uk-k`chk3{1%5buMIqhmY+I-15P-R7#n3R-v`yOG_U3qS)=V!CS9$Kh z_slpweFqncej+i+V$`t!hPX|#sA(6-6J~_BU<)0JodDmi!?C9M?f?MG>cz<3jf+2H zW*+?)@jl0j)Xcy={stVgGvkQx>6?fv>}N8UneF~Uvjqq~8y{uK*|oEZ!(Xpbxd7ep zhnic1ALJ-9`a1)Ju7;F+Vgt%TM^XxL0&csO9m&NXCMB1vGLK%T@hk%78m@nH1KAG> z;Eo1@5GVvM^?bpkxV>c|dYv_bRfi8aPkkPnd{m#lnXR`;xf@@-OBD}@55*v!i=|pK z$JJm`GR*T489EF!1%lz->azy@vQO?is+GBIe~tTTn6S|F=nqm!hW&C=-N=8L5VTIG zCINQoB9>hge3wQdm{fVA5IGHV*IIzAF(Tli+4P54Wg>%WPcEFfLkEQggAn*60yiH8 zV;qFopcFQ3oqFpe*Ux__rxSrh#&GuAMQlym3-oEq2-!-*_FY$4LL0hS^o~p{x!wD* zCZ|6m7##iYyU~$829|MKPY&!)SX{3qg_93`I7FHC1o+s!Pm!599Om+DPif;C0BXDR z{1*sT^qNqrY8*4rd;ve&ou9yIsr1Dx+&}(Bh-8Ijg9+n z)`ya6jg0ui2nWzK3GxB**eyfvl$-Z&_d1rhka0&|diBx{?yFX}m%%Xrc9!PVW$&!CKW z=D)uWhf|Bxhz-FG!tu1;nm8mu2+zsJui?j}SI{ch3!~}RASs2bVTQc5c?gqSY;%1mTRYpfq4(Wm_0*LQ=Q@&|zV%<(h5duL`;Ok&~_02gVz zrD?TcbLics^W1cadVjVd$YvH>+%y2%&O@j8jKM{lIg zjIjv@76Yg#>-3Xe>SFM&f;;2?GWJ77~ZxSU*ik19K+1(zMVM@}V+G35OgvE;MiNj}J| z`15%Ph<%!E5@i8Pb@RhRB*o@iLC|{#jvQq+WcHn~FMwzlrm6Gy1~icGh%6udL-nXY z;?WR0K9Rdls-EYF_#Hr9d?>{*<$!&ezlYHV4)()giY`F|vLSVjdJ?LFPMXvXhCgAH z9hYj)RDZ!zQVu7Yat_aue0B90eH#aK8SkxJ@nG9rR0sYM z@vh~Z2&WL_@Rc7IAXVF);GLm&XkV(~f`jRrX~gpT0a0h(&(>rKyQd#YJcVV0<=+Tr zWD0NUo3vAKF393AHAs2A6UWszWC`hFEBgDTw4!F+*sfKN)Z%f++Kiyy?AUJkW3MpDukVto-uvduM|8ej?GCP= zyQ;$}A|`EH0xmHzo;B3l35#4m6lJo`GWQ9wk&e9vtGFfo?hhXBSrr(eqpwb-d5Il< zRhd{EuMP6xP_RZU$&m+r6jQ6hq!~f$@mky9sQESv$3~Yoiw@V|L*A^mxg-bz!i!zA zRKOo${Cxpxvp1^FCxlmQQv5!!)jLR@7l@CxcRqq32$~)Xc znGYD!c@m-MD6YSeGMetjnfKdPX^VC!74z~3lUAvvTJEIgU!cj?34Q{_EWAgEIb6Z4 zA<9IpA@hFsI}YDA-QK~0`0TO)eG1jrvZ4J z-A}h7=h}5a*%pu3E4Aj>1_z&U+-gx;bjd^rAQLYa@mxW-84FpT)=@8 zMLh3NdgEgp{Wd2F(uZ$Xu7E422mp6Xl~duGg;6n7xYQzz{=40%1twTt-dh}{r0zx@ zRFZ>I5%(YK!w<9EY}%Scws~5hYz*{sDu&N~$~Gd0YCXZgz@*!&2?>LD=asZ<_HYg^d(th{ux1dMedqvWFj`@?scF!?i}81;>v&k;Qkxu0$7Ri%^LIYQQ9R4;a(l?P$VQGKWF1>|NVO>_~1X8>?SS`Rv^OSXT*e?nM6Gp(Apm`2C-uwKu0JYBP zwyO;nf!8x9!|BmF!8BzCeEN(LK#j8fyUY2V@2l-%%aq}(RQ-MWC|Vw?pS>zLJJE3L z_jy}sunW_ze6xLCFNnP(VJ&nEJa)bye+izklz_*FFa(#NpXzsyWODs|3SP#N#N!f_ z(J~;#aYa$by#WAL(eKw^6&Q@x=mizw?>(>{{ELs{^t{G=-|-i-r^_(@d5;ijCWm>X z!QYSEgm9J2olmELrZ|TOq{_ux&7(tXDw@AxlapX(yUkg-#SIOVvddN7nGSOCzB{ffa$=w}AR)ccjgyZI-a3%@^Cvt%*@la0i#7t|FPm>T!AT0L~E5 zCD!Q%>=4Cp4#FP8XuM>{C3?k)DT$p_b9!E*5+muM8j@$cen05P=h|ep9cc6q-XO>F0eg zb|7d!-phqPHqTYlQJKYYZ*Q8J6~c3*+VvcY2#W~)I!*Jalc^6aa6k-~L}*Uv_lp## z-Rl0icc2c%VP>!J4PJY?u!?00BT*bi;CZxu2~sy({(apTRU*CPfopUU4j7gpW2rUj zgv4W8;WgK*#rlec?^%NLF8Z6_2Yb@^4e1}ve?Y-{@@uEXbtjpsG<=??g`%QJWGFH8 zoTK*%!S3?U0)^Vs{#9BcZtrN!Y)-R4(F}4nW3e#pU$(jfIql!q6Y3c_))aDuWeqso z=~9ye+xq%U{$9(8I2nyp`;c_aJNE*u_J17t9bJuvIvP==eSN`qf5%tu@?w9-ry|;C z{^_7}Xgdm9B*uGtv3Szg9)BhfG?r3EXm;Yne4)f7b3SXHa}y5a^HE7SL>VOI8kGd~ z`yvy&@8}QW=@d9ZQq42nmpn<1RVgJ!V88wdJv`;Ht(r+V08*IM=0t1Z&OLXF{nw8V z7)$g(^G=%NZ%8!qVV4`0*nIUqo$;r`=u#8@2gIDTXLS`BK?X4 z)8g+;##C4$(^LxloTB)xo zW8rqAht;E}urNK=mP=iWHEtd#@u`pmJt0%Q2A(}w_dUF z)Fb~jz?$YNn^|30th%KfP3Nv9A}!<3Ln0E=`mVcGL6_q#;uLO*{g~*b{$C#Z13D&KTqPSj3H~w`}mIV#sz(suu3`jw^ z`mAc~HxvLH)LJ$^ZBpTYTsh$>H1eUiL-YF>F)`Ppyd78GKZUW#VdCjz;yIl>lN;9Z z5*&An>S6zDCQKZHSf=&(l!HR1?CCjM@F=`K%4IJLtuTS+_rGlF<}gFgyF2YmLNjr} z+ZS+WX#`Da2-_t%ftR-u25-vUQ~h~?Y85OrNZd&oI9MT4t^G@V-%m_r(O7VSQmE*7 zQUA#X+3H4wH;LU#jY0bS4gDtX>Cv&U&P%KZjz>7bof;mM3tHIt6J zfMznWjryU`8mdX3JH%angSjM<#0;9#lu#rNhov@3 z9i0xJ=K2q8{e7e5T}ZTk$UK!d&iiE|=f>EgdCB+#gukKKE<6kJ3nRl~3vE$=ku~q@ z*MpTz_M->AON`J4{n6_(I^`aN&F||C<}B#J4%>Oyy||Se=0m@HkzNL1C0u2(xo-mj z7Y=QcR3ju4GqydpcUKEMnP*7)agM=kdM8 zyT_rgVv}e}B}UB#awhLbEB`GPFTg2JJZ56}=o1pDS9+|1yH|KeeS7(mHj)8NK2h-F z+};X*DdUr|&GOXAl)KFz1BV+f_a8qI(hQUH%yis8H>vGA%{7w0&<%W}t7C|MA(I?T zKxL>9H;+Rn!()o*Z+0I{wuVm@gLVsfZ0s!3BfyB+P+eh+Xu{?Xh~K}&88)jO*JM*i zSX|x*?ewyF<^-S(taJzOiJgKm35_@Q0oLw4x3K4!94JnvD?@Xfm>NzL!%B`9k``mx zcFe-7$HNQcPhTo-oIj?Hp=x?WT_zelZn3b_mdqZ6dx(Qm`e+lEiO>i6g9cnZH-j6P zUh6THI-~-Ok-#XU`%_l?y~ez01?%H9S*%a9iPM5pzYeb~R3JZj<*88Rf@zt)HbwJT z3{&$BNyVOizl$><-s@d_2eD`F|8ez|VNph1*MK7o-6$e5G)PK{)DR;>hja?k(kV!H zDBU42f*{fYQi32#NOvRBt#tF9(dYf%_%)X}aG(3cK0DT4%TAXBcdnKHt80KL!?Ibc zD9Fj#f5DC*PZ6Hsrq2f#1)fgmy(b{AJ^}8XU(q5T)T-j>OC&FN;yel!&*|ZIT2Z`M zJ|2sSd&%lweqysPuERxkyFCDn&A2jceXjpc)LvDA@8ON}o3n6?9jZ%2lFOtD85i_@ z+>ftOCNUDE4~O+@PaxtP-eqh4Z{rq1>3=a<0N#W^A52=7ZnWNPmZ z;?;DvSl+x@Wrx*=ry)M(OCH%5u6SdtW7q~M=kcA+t*%Lt-LNTaWNs<+FzDtglwtvk zi{v-luy8Bi$CFEnIBhNV#SO-Y>EzFIqddWmjXYy`nL4O$KoSN#o`r%0&vZ22&Ns*7+hoQ25|K{J#rGh z#Cpie6e&V;u^-2UgE${_d->H9^^&-dzLxw^luEzNQ)m-Ea2#aBIQAVpLA#V}_Fj9}c|M{MXa629eF& zcq(rZ`v6j%D9czX$zvgxkt#(`HrnEejN8S|1(GLwDVfum_+{`kd#~rWnlw~#dwS`! zY6#Z0FX;N&Gn1ftLOuLrsZKivd8abR=`UMTJ*O@K(U0B_xpVwYHL04GcpET zub1(1%m$xyA2kew_MgtHugsAQ-HF!mI|~U#pc3^ywK}Ch&w``%U*8eD`XE5ZUZMoJ zW1jN92;g97+)ED+ou+pPJK&mX^Pw&=uh-i^89Clh3b)v-t$fyFka#LgVj`czJLi@y z!dkrh<>Uzd{0XEA_LF$40GGN-{?=njC$Tb`5((X+iKyTFEEUPhzwm;MlTTnyxthV> zZeEkHFv6c^i810@W;Js})r7PP^E}7ib&NKqKeK>SPlR{hbjj8G`SU?l!CmZmUFnTz zhO8WRg;SnrKHhSU?k~-6*j6jtUfn8X(3egk-62L91|tfy*!I%aoYZwCR-t)_D>V@W zksZmUzFXlM)}SInCz@gMFw-?WLV`!(bRR+Qjg(h!Ve8O|)VMdKUR`c2JV=VNM-0oZ zACssrVW{(B(v-*;$;vF7iTo~POZzy>b=JHF8{9^9UZGSYHTr~6x1t`2=#wS&UjAZM zlOO3Kk@sQg7R-9fQ%U8Yi?yNnu(h}J$AD=)8SD;`d{n5xT??6eX^gTMAx>@izJ@D% zGE~w(f+<26MF`6DIM`@H7-eiU+-FVgZ1BfRZgwGi>KphY9F6O=`9g*3mG4Cw3cf!hp_-*)b+qx#U(bo|BQ@g2qj$OS zq)pm1UPLho^GHCQlQ>gWm5htyk!E%DnwvT_S*PMY7bP>D?2QE1&uhrRO<5iii{Cli zQBSVZQLz!VWWGvCK&w?fg5WTjTwK*HiEX)rB(%bg{Ih&@{MsohShg}tiNaT1z-WZS zv6INxOEJl>g##~dk};~9lyH1kb?HPAWguJ0;!bvxA4!l%UPgA4<0yy97jd9A*nm1% z)l%n#ADlu4-=UzsEX23rDfg)CVH;D7@;4$ezZz}5FfYqjUy>T6LajzkiC)?0I2les`WvTv z51&+O(w=97k=~(ITfPxmm`~als_^rSGkjKzslWaJj{UuooAzOnSY|@k@JPPny4O%J zE7s>1DzyY*9Z{B$nAfRX!Cv{L)}Di`vZQ-{Y-hD>kd+sMPD4^e+LW~PXR&LsC>aDP z_Sd)@8|Rt_w(8gm9EfYGQ1cg;t`!b59NhtQ3sQxzGABss#e3hqqGp>uL#+q;esXS) z+!qF*xJw0!z2B8=WM%W;mR=}=8J&-8X2$coI2JQGP*D%3%-MM!{pb`ywkdlYRYoc< zMKP)B7GNzm=qW2n!o}?!v4*YAii7-R^$AEwiyW*{44ww=i2(6yOpxl zG2Dul;P#djW%%h?x~A)4#^k43KUcl#w7^Vz+EscpZ;6dHA;~~5)csA@+5PvyUnT(h z{rT=2>o7uETcIcpltLeLghcWAwF)g^-Fx)ZDv|yUPvLI=7LFbBiCAPe<|T3AOHVAD z?*Yh$OXc{S1ooj=+1>A?LtlhY1aUl+;<^;l0}5`DY;6IvU7r%xIL~B%Vx-(;k~vTu zB%j1()RlozlfXixP7j5W*MB`0(L%6G3fnMII~s&`w;KX+cCttTasoFv)$n7~c#53BJ%oJaRFR z8Df+rzU8atmTxUGIE-*5$3CqQOJ_SK?3Z9-5Ds)2uriNblU9fJRH9Vc4$u3)bjg@U zH&Rb&93Tc&5$mam5(!@fxrFuTI^pTieub4 zJ-mr;z_hu{NvZ?d-hUG35J<=2ML0Cw{97Bh9}D{QYZg+9Zr7p+tN_p_JbXn>;-ClZ zR#9wBU)G-_e3$!9ngTGLxlh&C*f%a!TSfM=x%A}^Xa}9z;CDB%4i~0864`PFi760N z5tb2rCvw))#)DC)GTMadpu?4G+0Dols?eS$?u=XMJn7}+p&|6uH&O+r)|m`jQgKv> z61dFqtH2S`E}29HBZ$fEIq@F2_|Mi18% z3gOurq!{BcBg_~oICa(OBEn?odvJ@bWhoqCUau`3Vx@x^i6ws!8$iRF?WQsEBc>XD zM&Ll)jaBlWE@&()f}njyf;2@+wf!fKe8$6%@ASgcTN`z5$H`bv;SllVS_TkezCgGY z7m=^zY?1jQlLF80t3QUPzonOtsAzct%*&oVxjnacBO4@$PdH+SWO;^VP!1tUieMYY zwGiitik=om`ABebJTemC;nU!|=4{YD;8BO-EW;hLLNm^(wK1IZkf0lOpRHReeMP$AV9dty{tHwqevu$)zZ{L9_ zh)724nOr_m|9zdac8N+F)^_{A_F|41uO2JfMD}@v3(qs=D|qWOGp)ds%rqz(O(oQQ zH@Hu`RG+&1n{`c{lRHR{qLBzhZRem$K7&G``Rz^tm& zWTc75s(t{J6Fi$(sq<5Jz1*iSQW8@)BbIPl-J|DLmZz*&m?PTHf6P1=$Y6f1_qSNJ zM2p#}om z_~>1q`BU4822Q{!I$H*5lkABHr%;&)>Rb~ZJbF`@$rB0=3Z|avca~KqI!UeK!M@o0 z5uYTE8u!Q_!{FJn)W3DeFQqBSR+6{Q2yufi)UL4yC1puFX_m^gVan5S)jh8-5B!9Xbt3IHh6a;~2qM14vK^57Ht}9CXb`!je_^6Djn&+93DKiw| zhf6EW1NOAB1eq5*fPt!~^VdhAZgL1^f+%2uquKGfIQg>zNJgqR)d)dyQw&sIJhq7# z;8ISX9F{X*g_Jg3xS)%<8D&O|8EAk-#nmWC(h;1(S|^il1ae0N7>IS5NKF-wqf4?I zjBzGp6ojCyW!pL_70==Y&hXq7ukO{{OIWIaIW{3B_LT~ZF(!`pOaI00TA!uEai^vI zn9S+axqO-Q$3!sOdIsse2wkl`#sfhz&Q`I)M_(MYga`xL!^rfiG*&#Be!;eHxaW7| zahEbkk-PwmnRbdyWO1}iK+ZVZ@;_j=l>|lZN=Ol)v-B9a0I3g}2#tsIl5OxNP>fB{ zt$fP4uW&olIR@KD|UhkFxQ^|64$$@vMVc~5-XabBxpVGr3q;Kt^hu=2S1qXd{vew zq7UW%T2cxrSPRn{WL=V5=85=2G4Ayyg0xCxkvW4?qg^x6jqf=w1d5T29Hv!Fhk09P z*(2Esao^9ewvnoFN7nqm0x-tz<^w#Y$8@c|LE|L|=u4BsX+28-dh5urj;;g(-Es2y z-0@9?`3QiQUm2SF8iL)St$ZUu zDw+xyvl-*#Fa=r2OZUOABWUihSX7nzUmj%>a^LXt+@zygM$vZln~Q=h|lS+7s2 zW~#eBnhhqlRPQ6p50OUly&I=eS0{|a`0hjb@?&_FfFw6AtAR!t(tJrpJk@iPkUmFu z_O4B6zEg93$g6Td;N!04wpxcq585e#vak|h_Tj9r#Bn(h0al5t>swXGQ}%9E5fRP2 z!oO8Gq%LIdIj#%suVL~VhYC9Z=pOyt0pLjL#~H724Pv(w1Oj%_KK+}9Hz6XhHk#n& z)?l1WASb4;bH9%qb+Yz0w$?#Y*ZuaE_YIahzL}H@zz$T)?WT)c6y0eC7@R!x+-Pn< zh$K#)8WewQul#8C4e#ZvQ^~pp=NK;o655&ZEO-n|9VpiM{ zg>Lqf-!aQx9Ez^D2toO*S77i#;7(OJ84ZN0e=rP%KQYX^LTTN3KkATt@mM%W+bsRNSGD?$7%J>>+pNtMT7}o#Lbmi zXMPIVGpH!N%R(1UVn|wvD$bne_ZSE7vr4*e3jVdr?c{+$39zY0+6T}{+EYB zL-T;Q$%e}{i*b+ccm>c_3Co7KdZp`BJ1w+T920Vok=$hW{5R1aJa?J?lc} zE9t3}y7WyDQq+UoC4nrqTM8^EpI(+4<)@wu{2_dbc;nxw>JW3;pMbEqVhlqrU`;0Z zzE%$aUzKFubqz@)4k8f}&Ekbw{_+K!eqV|5zZ$*maFN5%LA1$+7voF%0i?`ygahQ` z2{1f_u60hKGE_Xqc6}nNcWHP7e~$zE8e4O>a%UKg`gJmDr`-Vw20^hKod6MKQ*or8 z^WlaL@+g~<y&^J%eW$}AMnnSzrynbbwB-R zqA^-ST2jLer&Q6SiD$u(`_&~|M{l)MJeD_||CX`IZelifg4qIfQ^^6ST*QR?7=tHw z970$GhN10DpHP0hnZ3}s@cnKES>_Xq%$f?5(q~T^QUD146$TYw2}>wFs05Z9&4&xV zi32QYeFtlUjB8`x#U6~^Fzcl&k>jl1sKI_bwPKx2UMBH-x-#pqXpv)`{Cj2@|LR&A zYjeeOdo(ReE>B2EvpAyG*>Al*A@5?=FPs*V;MM~`(mlDOLFBgs+nA(q2^8CvZ%8JG zNW+Zuhw1b5^Ixk&euV@yzy1ZO)=uPsT(~5s5~w44aE>(-+J8x?cU(9c$g7b_GEW`& zFvck{t?jm43xOMguI=`dIWO@a=QjMzz-GzZDs^1gPaP(-!E`2l>ih(Wfl2I=2spjD=S{nCW8e|?E7+d_ zLukEL!78vsa8kAebZ?=Nh^gY@~XSO zVl@DeMU|J|$pQ`yJkS-Q=d?-S><6%@D}b2mlQ&=ud_zs* zw75;j(_5Xgb&t_o-MpWn8hoTrisXYhMKT(S(3f4GEE0e8Id$Q8TT|Nyl~V&@p>f(V zYlXrsHy2#x7#n`h;s>-mX2z#%GqPD}b%K6oF{<7NQhMmng@PW`B_1*BmsfU=w) z;3fq_WagW^KK?ns3`4ln>j1tuK{OX1`ob!6P1*++Y$h70mtSDftj*>K81YvC>dLcs zsPyka1PvK}ND_{Un#iCO1@D9E8{lx5+zEUnoy2X^t`|-vKh+;d0rFIiwl@_PGE0mU zl_3?~CHghpXuxc3FsJz=pA)CyB6Y^bSPN{8wg$<%j!H>~nTIbOR(jH<)Vzpvzw_K6gz=E z&!tg(1^g4M$VtXnF*7v$ICk@&3F(S~clo&G1{?01NtEG#Ug8z0kT}TQ;lR2H|3X(c z#%e&p&`!k+(mJ{$JQ??YrN#^hw>$bjxhRxA-SdEV<~vd%U~iysSriw#oq?+g4deTv z56=ryq```m%67W@oR|-|rmhpF;poaA{-T*Pn(DPGtBsP#X0$kY77S*NJGb%Wu>+d^ ze)1WbC3&_X2T&D{-t}I~bI|$p_iAC{!upn2yFBHDfW3qaEhm{&r>&(0bh9AC_?SK; z!Pt6!rG6L1l9h}OLBq}Wf%{4k*=);7jt|76Jed_!dTJ8mZZ8cf^3;krBa&!-`&)sR8Bp! zO|hjonV|9KXutwRp!s9i@u%J9&o7mUMrV(m-o%>w1$FORcn31Xu|h5aXY7pb{Q8N{ zw(d6g4dpjzPTC>>kS0V4Dz~`Eh5#m>f43l237nBAS^t{E$Y6|qqo#b>NV3}dNc>iU zICKpaTP;n(x53nJAev`oC#lkN*Z8G9@I-sT3|Z`aJ~nR5iH|o0QU$tSol6u6X@mp- zvZ93f5zqyw=5`5LN2_UW*8}mlwz~ikX9>DHj{f#n0FyLH+DVMtMt{<1zFSw@f@Jtf ze2`J9XeAdh#7vwKQH8v-j4x1vB!!*%pn>}zKK2Q{wHT^xXutUeYqtF^rs2Xp|EHgs>^m!^OhA@f zoNU8%R^0u~@;B;?%bcfaKIZ7gPZn)K|3 z^^I{d@jksmhW9*%_exZgDt#wA7F0S8bk9QmyxZ&%QK#NVO7fXa>2isgKs)EnHFq4F z?~g|(kOlUrstnpZ(q`V;>bdJHbznKTiAX=}BCzZnz#imA-H(DZ0Qcm3ZWFu%B4AV- zp-SNrvKQ+ZUj%NM$oi9f>YBF0Z_=|P#7NN{o6d4s38FR-j>m1up!vQ2xWvDMt{T6`J{%`E;0qrMkm5= zI{ZvkkVd*nXLTs(W=7WQSC%kVZ$o;Zw{jT;a)6}(CPYAfKo)bc$`IrI{ndFAagkIX zZ+%iWPEY`SfY%j3QAx{~!5syv!dQ3@oR`{pYzighS9N?`@=V;~<$Mz!4+w7Vv#JQ67{wPBr^fm~S}V@Vw!FBW!*WfN7Z}*<1ABOB?AQ;unE5Cj~*A zx)oozjTHy*7!E3bmNIs5@H|<(i(f2sGziN$EamQsh zat%KrxxD~cENH8NQB%w?zE6F6tG*^U+M0M77J?|Wm%Tr5!5M=7-Z!l22UW_q+PMae7x(`E4TtQEwrU6@RD{` zaWNx^`$_xB`zg7djzsWftv3M=#qdJiqS7W+FX84Y8+A9e@o!Al-&n%G6+K#gE5N;{ zP0zvUgO6)g%EBoGCaIa3C=O={&}b6w2tOa|AqlzwXyICiusDKFBG+;>VSFZCk8XR4 zD-djXPhWR)`Dk~3o;%}57B_2Nf6la3rhzEiB52Ti01z4t%=A6@j7V(rSKnURtb)oj zAt~lMKES4zPZdY1t;N(oqJLDU;)jk-b%D_OKp*2GRw|BXpV~Kt^^l6)q(8u$$bA2# zP~Xsymze6c;qQExKEE9Q|Va0PBB@|KsKmPIiZ8ycFcRFeTM4 zg~E`wjav*UBCE~b&i0(MVI=#7w?3uX>7EbH@XF6%;#wOhZkwUtcp=!U6K80`bAIzq zl9zAjkcukO>EOEisAnySf5~Uki_4uovakfW&TH-4?-YPnr3|!=&rQ5RshVhSDc1L! z>r{%UpPZJ>ySgX=hAG9o4zl0(au?cf?K~Cg82Ttu7Vat)5NJE~?Ur6I^YeI#%i6l` zS2+TcfIj9ua*^b9-?KsF%@2+*$JL>-Z2&<3TL ztPkV`XMd8n_Fy%>B@!d`&PO6g)PD8^CZ+o};^_&{4oX}28jjQd%*%CCU+OWP_ZodP zWuPbsN1FgUB$=j!+MjY#fv2u8)sy5|1~&Ld&{7)$_a>{+%0weVfx{7pkEN^NB=~aU zec{%xj{u;U^Ev4EFI`oT49pUF*cn4Bx&@>ApzyHu{vtEw!k(-*fzCrH@zMsg(oeb> zkkOjW9#Hi_U@M|!_HD)SZjWM&q?GY$~st0VxL<@A%b*^a#Ps)n(0;sBF$WOLcW~xxO5i& zOKSi}1RXsfA3|=AEMf_}EFnMin0P6*9WI`I3%IHtPGiXyb{=~Ty!xpNkcRc(V(sh$ zT{Ec#xrk`0bkNE){j4tffn*m)j8jPT!D_FZH^9OO!EV@aazZqmm~QAaRX*#;xIS;W z{kS-&rN>&SbH_lkpoCtF{Aii=XnW@m5LyjaZ}p!7jt#oMgsIm^=jmR=un<9 zY7voMDQqI32~8B&NIHdg4)weS!OCA}@ZS>Mh5n53KqFncPOHh$FZXmw=`tH+s^h*K8}UDMQwbh0qT8i|8;L?A)0RO?o6R$0B z*>=o}UPwLqRexk6FB3E~ti1FoCUBpGkq0w~$zqD{2DKZySK+@_5zYtuB1VaQssrTG zUqf-6sUNu&p@psp6XFc$V9HAtmvl&Sszi{`&WPr2V0*DXQ}2ofW^vI6>5{y{)Ok=M z?9i;%;&)kcGm2z4BbP2_w5RD|YS{gja4Go3GE)z` z^x47svvb)Iu@bqEVGnJt)Ixv)X3@kQ_}RYfdM;c2?2`Fb;DdvvOwau1H$~b}4TthJ z(IFN23t^Gc#we~h`W?prs0H%$%6dHB$SYmd!NY3buPMZk4|zbQ-Wi)%nh*ec0JPyn ziww}G(imdAJ1+Xw^Xu!b=|F}Fm)Ar(5XT0ONrt$8JrgRL-^KWzKFhUSU3_{Oz|?;K z5%s2asZrxtN~{)J*3+6mVMnL5W*IgiAUrNLeOUI#H{K@NMoozE! zH(K`=qr;Y2dF(w%sX|GdCvU4~K4qmM=LOO-(19Dcy-<8sY2 zoQTAt#?uY4PUD%fkEX&sgWvhyM3-O8rbtju>Z{`xQN;b~KCI}!AC7KN2kkLIfPB~# zH*TDgOKQq8lN2Uho9*(&k@)dCt3K1(J)8bk)GQ+Bpn6+YUX^l|Y{DbXzIr1G^^Ym| zKg0U_0gHw5Udz3bj1F2T-hbgcQza9ErCluWeuSa9Eyn%H{=myzX&c*C7hf0oK5 z8y3M$VZ;+vP}Ed}2AKZuakUd;Le=iHOV|GSP=g^jsDj1cEo3XpmI1iAYy8cvV%VPJ zY_od5TQgM8Pg%RI&MEhQXBL1m=^z&*kpULW5`vE_Q!t#P@kpa6ab0G)SR&6*a#8md zi8i#+k?KFI@}G}iQE&}%Sh!|&gc>K3q&+-TgEhjBr@@foyS6HY9+!7A+rr2HwIcss zy%w4e!E_-(1VfYELMff_(`}i%#bDAFi+d}S3?0f;7F>C%O{{;rpZ@EJ|C{{>GGBO@ z3#IOA$gjnQyyzGRI@xx-=ZC)3INgzH-ng%RC$0Gm8kzQO(*I3e{m;=x5MueU3oS$A zg7Fwe@?^q&Na;Br4w5+LeM0%nj|vJKr!MZ^1Q)QyI|Ea zMH{Ror#~e0Kf-4I%+wCLgg=|5D<6r=_C`@6#<7zQ=7F#I?`8k%18xfY0bUlKPN6g)tunMMJ3;W{7JUMq4xruK3{+}}u zL4(Dv6q1CoyucncmIa&nNka8lTrVjXx*GLpk}J|ccAm;tC+UJqHZ=;3hC)w5J89sb zM3#=q+9sV*bl*^!$o$y9qXbqH*zFwM(3!h=6Pgq)8uV}p_rU18zpeFx(w>IRaAiEv ztUF#3qyHFRn@)pHcB0n=urf!gaL*anavG~yi-Sj~wUa`1LwvAq$g-s)aMdJsjH@}N z4zb+*DWzzdiI(0|Ng4P4Wf%Y3&JKe|ssuF<&{7r5{pBPEUAr-GU_-z=`DK1xiAZ6N z@PZ>3dz52ZxY^o{MOKCq|7#Kdv!w7>q`!4T`10?Yy!sHW{ipf~t{UdRD=J)lGV8DQ zRlV#G4;_(tuDIimU$lk)@2}?3lfa}$VxMQ_$bt&`R4r0=6@&683nCga%V9skq_34k zGQo&2h+@zUe;i3h66hWr=cX=~HKFr=w*ej@W<(qbKGkjI#K$N2rSu{?TZO)X9xGW- z`d1?0)hiJDB>g@zi#$!~r}Nw!`7KOptRX)vmGi{^6}tX5q5Wrv2ev(iL&Ky14}T(+ zu4<>rg#F$~3vy~D7~?&~-9WGw)?Lz|KJM@t78BYn?vfj`Mx4j$X7Yb_1`-0n+HnT+ zB6}G+!;&-NxO&Zo88w#;CbY9=O-`PGl$Ks!^}uQHGipAEX$Ua7cBN-T$yo zKd+}ni60ggR}<&tLGMS@=~e`N-qKeaZy?ic3~Gonx`ppCTT}Wv`ISZKhaD?V_sX|s zQtFlDTeLK69^aZv6n2+hUUy{OmQLs*=u%2JZ)%y(H0Y}@6ces@z1|18dI$_7Fp3HG zCtisqm?YtLl(3Akpy6% ze^r4#jyWu0tn3B#6xByQxo)nrkQ4SBKYJK54Ima{y^p|m{{PpD!{9^@m-zqb@`IZSyjfvCXfX3zGZ( z$mI#PPig&mRc+o^GDvo2Oj$K{8x5-eeiGaq8WN$bYin!oZj34-fyk=TKk7{kgWBHf z8^QYTXQ(Ygf^OsexU=h^7dO z!I4e16$=@Het%5p5-b4PjTvh6cRmJuAXCQ^?b)7}g!@|HmboOAYp^o$|7!p7&-eX; zO3Z%`*VV;R_F}Pq^5GzfMSG?`vcviI-#;}1!^F+97n+=i&V_~axeCAd^LB?J!1j0k zFf)1tl<-`325aW$$8(ee9vT0pRS^F4XS`h9wuvO)EIGp8e2S;zKNDWSGLW?3G+at5 zne@dfwShkg=kLQuoa<>5W0TD#ODv9Wf#QSD!b3S zyMcbxa#_PhaaOo75C&?FDSYF7-^!c9Q;3;NpbgGNgU~&o{<{ylWniLrWGRZove+rH z1eIWKHVkyN&2)OU%79eTR;YO{=qJh zr))WnffUn=ywN-vobeWa|M7B@7PrfVg7Ob#4aNOAh&kY&Lbd##8$R} ze@`Sfl!VY0gQN>AFAzW0qrNZ1cK}L5-cpR}e?SqeAoCK`3A`|e0EY)?*50iL`P~`( zyOHkz4alT8AQF<;<@>?8h*r7bc{OI>DDDXw*cw3J+H@hiBZy9hEiB8?>V$r&C^7J> zO;0qD9=(F&4{@1rE701#uR&=ZpD8EptW(F|@{O$?E14#jRg{M`3=49#|Ap6c(*9Fp z>^3SEks4qbjz4T6mntprvf2BS!%luMkz4pqU{J4rc8{Ni=`#N!oBk#-a+!3xi z%}i{3+)Kim8d@-xYV2*pH3OI}E;Q)S#YB_cp@L}tu~oEABpNODaw%Re%Q9qG7E0%T z;rz&7h6BhtXZ53=nN_C6URif!JTF_P&`JnhjjsAJ>Z)+M(Z3bWliwzJn@DGYHDW~y zb{{wn4M$-#Bye?+g#&Ud5$GBntbu6FJ3uNI7c6=QlU<`uca8C%TA(0#w%`c5?FvP~ z+GfA&P5C+K_zdL8J;5N~Z;pOQJqLAr-;77qpm60)PZ{V94_21MsbVhg%D+{0Qfh5B8X%w60wGZ`&r#DD7Z?ZfW1noGLRhb@3H432tVkZn92)}c(S?(+vRkg_`PwNh!ulX9 zRw6{)FlQrrU+f!>=fgnay(HoyUiO`aorza%1GS z>t}MA-S2EQ>zKdPRA1cIbw`uZtY6X_`L?u%nXR+P^TTYeK?2-pgGK!w1g3Tm3zwrd zwLV45F{-HqFsnEeBx~=Dqqd0Tm#kkH)^atU{6gTuXba_U2@racz^4k=YXq}Y)C&MM z?p@)~SoLH&7<7+Va&uohG}$lAnhrf+K2oS7(Kwyx=Q!10tAKgy*#Cu~a`E@jRet4N zZ=mdb_GdlQu1dby4u6aII&{>Z`tS|@<)n=;k;G(?AuU3i z4JGLtLbGne_csvE%D|T2Wp$APUQ3Z4mjC(m{0x};ZL}Wv^^vo?=Cd{nvYQ$AwHV|V z`vo5xs^GuL zC@JQLl0w_b;dt#4x-8S8QsPP5%RMV52M#86V9!(F}Nb51t%I;lI<&xe_#K3vLr6X~K zp05D7J;~FDhW1%<-ss`xGC|r%9!3TMyETZPJb$_4=@*gp=Ivl+FLR85OdLv<4B`Fa z2xRv?z?m%*1v-Gf_X;c|f)i&SDxVflM)D~SHwl@iJ93P>mAN3^yG#O1)Pg5kHrMY} zQ`p&h;5=Ydk<2y96NvCJ>t^npzo0KkWL%Q{na&Oc2%hzbKJMl&%e{U_Fj_}EF^eI!&J>LU$|G0PZzJN>R zG9NmXXXP#s9A`IDr0$SvAcWevw zrX|4j;O6XYP|u<7B(G)YV37U^FbfCb$pM4- zf38mZ{m-DU+F!rP862_Y=uR$o{deadmF3w^J2aNkZM>@zzzqy* zV)rIj+MSDEr_SQ#$lAL9JY@Y-9m*ca7ZbJe6S_{&T1|!P-*b3JHIc5rc?@#rI(@D zJvt^SO?K2;YRh9=YVe{Xe1U21+!y$dH^1q(@x>@u#1y9Z{h2UsWPN6J#i#7Da`mq4 z({5!KR==%44QC7o7iJ{U=cIDLjD}B9f_xoTZWH!U*_3PWZRcQH#=DLbHGM#7Hq5~C zu}8tjz{~Pn*W@7YDzz7l zgw*fgS0@RNnRx^>6{g((s7Z<%k(`XW%D$C7cqeL#1smx7k~_wT#3r^i46C!C)5Lo)qDz`jV_IT?yT-mq zFOm^g?c2CKVba4Lnd#@nr+{H-c~x4EJ@p*ipE&y(1~Yg~B3f&fwHFf?`uj3HIYN%F zN}s3C^Iqqi>h5=~T=SXyHW{w{hhulh#~)%Us}&ljP{K)beD3$o>-{zr2XFN=Q3E=w zva@^qjy+Ghj5x1}kSV<5p6_*RXQ>bdZ7$z?-AlTQ zgjLfTVL<|~2p=#p{EO`1xed6GKhLl_waL$>c~k{t%71Cg`MO5s`3TSV4(JqHLjv77 z%N?v)(_3u0F=3l_W!9a?E6;k)(>#S++I+P3U-o{q$C>_9b1Jv;u_uR5vd?gka*}q% zpWlDZa9QE*X!?&7{+4OO^Bmr53uA-TsR{2Hv1*y+F7M1;o94vRKPzO$QA`KCyN=vX z=)%%II7SiKJHD}(n~sTG@mJ^-b}X5;0ZXZ;$|(YPX- zso4IC*JSqM>3&U5jlbM}cuy){%b;P<0^Q2wQQdaktRd=Y+UfqvegCq0J6G4p_m@4) zoJl(InS(3$udQ4Wu2<#|T<(L^zMPGOJLbH=ats@?0iZ1!k;dPaqp zEq1Ip#a-Dg9MjqrSsAr;eqI;yu4GQEEZHSZR*jQ6NV7Ra?Kdo@txE0k(c@E5%E_<5wK2#D!_40dD8m6;0^|t<4wUogK2+-Lk7j&&S67fm6!qL@p9K(y zPv6h0VK>#I7cM%(0BdD>80pMKQBqAoVA8vc7+RN`?TO zfq9x@J>9ms<@9tVD$2*YtmR>O`j0;T)QEU{d+vBGtLFFh8y7PdHv2NYqcLB5cm#<% z+$!7;*(Z)`_tNWGo}PR$WI)!2oX)L8-4?gHO7P;?U+!rUB4#l?G@9tF)D+q1Ct6X> zAM&gzK&cgbYVG&-u%`Lj-K%43b4xr;Ug5j!R^gYFqtUY62>v%I1|*O4u}Sj_wkCz= zoTlxXoFADbec}8>8lsTT5Wu>d0_uEBZ0Et?^)t;YrgH&eHuse%n+zZlLpEpjgWeAv4Mp5cK&O z$Bzt?rxLRlMy|6n91VQEO>tZ{k;IvbK1f4kdk=5RpjcXn0)%&DpYI-8Wch9lmbn(H>?9?s9`P)VjQq%$q6o*F58SvWT01VewY_m%I$!U%+u*Tw z9E;K2tWiZ6xJMF)p@0auuZ|I_(!o41(x;)C5dg)D;P7O3&daEgSu)5~m4 zajE<50?!p8F!q4Qob2v-0bfteGXF|y+J~N}Q6-SXinA^sGusZA+7T!IdIr$)-D1() zGK9K0Oc)o*dU>^ppU-174L@)_6;r??@j{v|B4 z$L&8%7NtjXj}C{{>NN1^We23Q6D>tf3N*RGr!|E4ypQBqNZsC?+N{iH%$ssQcPwL5 z#&KQl7b3j%q}rlJv(3@&eGw>+R503EsPDf92367?Scol{E5h#Jtyiz%U@lG%vCyt% z^PBn*brR*;jBx>T$GX$XmFym^u(QNVo!^$z$H}M4z=$yGQ?#x-`h7kX*vIKr<<$`( z^fJp{SzLMUU#I&!aL4mLTCV-g z|J^3tChCok)m7ywlPhk_(F&PxD-#nFCzH>;2XuC2KIa)GW)i~}ru+Q89ceh2N9m=C z)!9~Mkx+9o^H!I`Lm$O0tE-Qv^(%RfwHdYVYgsC*!cGfU$W(Ip$krV+u;Oa)1?&~ zwhn;*!St3Qh<+F#2aV&q*L1?`s%U2`DHxuDabJ#dnfnQ8UIH|)!R1rZp5o)D@*Fk@ z*GLT9q^F7#3c~xUJ?@EgC9g}_GTzc$8NQ?OBjkBG@ALREcCu?$J%jR@AM(OH1I0Vr z+ah$$&fhvV+DzBOEOzIa?T0DGKM9I#p;aUI2)&-PNbu)8dt*c9`XOC$N&dE_{;lb_ zI`WpDN17}5SGId3dlWwQ7FVRzxR@6gY^Z*m_?JJJd{IgE<{J0M)^|YJ{MG>^^}6SJ zg&;5zOe{dA?(w0dI^m^zC#^%lateoDEcx}r{_PjL6_$+>DJ2UOnzmR+NYfQA`1|Pc ztvy>fh6UC=8#A^P5!Wo^T3hXd-7KUUOJBFKPROG8z7l3W6-UO~@Js%iaYu@;({x8UcOtxOD6H{*shW2fS|0+QYpDLlIw7xToRMZj^bJKt?IkL^h0O0@sK#nAbcK`QKvd-nO|;9gSjTB zmDqu7qyuqv?}w}8{Ny4rd_&UzfTfjAh>5IW!~r$g8aHnB8yU= z_(k0n`O01UZzK<5XzMiiOjyk5E0P2Z4gZqqKVgk3M5J)YA8~7WEawk~#;;%+5?eZ0 z^mzIB_x^>O;8s|~9SI?k#t^(}--ODl4c9qquH&|sBI_aQJo`PFFK2)MprlXec;XO^ zoa)pp|HgJt9_#hifxyevPLPY8K_|L98M}xAFCYnB`I$h<_KJX6N!@7PXa6;gs7Fbr zsHX$2;yX5|>>IciK0QQjxTPf`_ua?E&b|NF-d6=g*+uQbI4TIp5CVcoNDCsZ#L!4L zNFzu~r*uk7NP~2PfYObCh;(-;-AKz&XAkQ4egC;QSLf~=FZ2SOdEdR)UVFv!JPSu$ zZNSD3owCOAXsMYha1mDo7izN~?~KoAnH-ux+r6-?h6-6|4|f8MjZ96@iI|yuRkFqH zw7uy#>uh`sScv#f3M!*4>$W(bKYz}ZYW1=C#x`K4F%&ESjzk=iE*#vMlwevhqMB49 zTcH=iRA~)zS$(6*HyUx{Dm4X#6sJfw9gs8pp#$h({-w*(o}h@V^{0wD?T3zMyG%dQ z3sA1J=RdGLtsj2)=mT)PhiAt~TA!m*j`Xg|Do?RTUjkdMvI?hKFHry9+(5D*NxG$O zpeduGGW#9yNGf-HurZ^BnEYr|4@`Tr&_2*3Ol~>yjXKaJK?+9QZO8%^A&4R<<8`Nn zf*nEC{rnPEme03f{aCvI*SU5dRI{r$#0s%}Z4lh5Gg*n z)Hf03t*}P4K#N&;(nf%;aq+_#-gproEhm?~*PSmbKd6SNw?0cO)MY*7O25O%?@eM^ z-Ryoi^4t>CU!1_)ixi%d#i$ve{_G{Af>4{=~3`*la{682}HbaH%Hz#Eg!xyrv09J-ow2B>xpX5s4t@bhM+Is@F> z=^sE(Z-npcXRF607#=YV4098IL>;uurhyQ3L>T@rOm#AV`-`gsysa4^mcCU(cajnE zXs>2(gc*+1`|cY8BEkHO8wtiKyIapS?-(j&{J zL6|lQo`xrgExdiVvn6KF-ADmZw=W`FL!NSXt`h^1ZGOo)JkhFK$;W`VGnn6mOOB95 z>H_LW7osGWbVSkC3EfkE_JkP$4=Q1tJMN%0a$BvVr~`e9X@zH`OTdI~GwV!MyjnR9 zz(#j>KW2U43b1g8bJr_0F%Qm%KXR)(HXV?<0P{QNM~_w0N54$=0K)0+Izh<*d_8x3 zdE9jAF7e=XBLq$^e-}DG8mhDVnpYuTNPJ82bXeAoi3RE8QUs>qOSl3xZUzk6&iczS zmNu_mtOiWpXDdN-H7}WoVw-hqFtAK6^)!g^B#I{ZMr_jXnr1Yw zutmneXDt&6S5KL$rswx3udEQ8PCBg|dTo3MPPsxJFHFYE>_KMqY5JhxD|OY?Zh zFyPLv@+5Fa>kY`3k1Npg{HZQ|@7ETn;r3chVS%3L!N4<&BcAAz?8!{-FX~3Z-_9zJ zu7~lt9EeXo?l1sq{O*apyVtOJ<$u;&0lm~UTjkiGf`g~<)imFC^Mr_$9=+B6^b56Y zO_9NpLSFU89WY1Y7upB=S*GAvq%6Zt9sJ=*5y$OD z$5*}8;|Jw3?dxtD(fx6mTh@;%igyg3N*l)QAu={%VuA$ISfJ9czI5##TG}RjQj?xr zh0Vc+vrp*`Vk3o%bwV=Y%PVT?r##^l{d4s2;W%?22IuS8qE$8l-=;F%r7eS zdwO|@6GX|xdt5ec+ja5)f4Bej&i7yuXju|B|Fn2(2!3P)y>@HsrqQ73Y9x*7YruU? zo?)+Z-L7fBjn-Z zABaXDoV5dH>cRsWWC67y;u4U8;O`8%K5pkES?--6TOBDL2-8%#fjfA_y_T})AL*OQ zys<@XeAd!W-44lIH$PoWFf6Iq3mqo*@1Nt>VR23O6XJ~ru(HJk8+~i-=SfcWzkk3y zywhE}Ulj6|QceE|upMf_+>^Q?S)Lx_=gKk)Rc&%l*Fu-XYAir0va5?Ttw5Cp0 zT5JrJ>-J%rswMgNcOc91O_*f0-Z7@ts&txDwG@~%-qG}Q?A=mJV5ZhJycE)b$IN_5 z(Wbo_EXu2Q4)#+cKErtd|mcL8H#qiR;)V`vT_wOg-x} zhM(J^ai!=6u9l05ZtH1q#p9$zQBu(6#A4wAewXmc^o2^|?DM?2HR{;?$thmq; za9O#$e)%M;-}!RK^OB_0*(P64e?m3T_e+_y@bK^r^ylhCMyji)i)@qa422)&Q{0c# z`9pgs4L#5@MN7^i;6W=daGhD*`KgbFnX$r8+xagPe%_N{FVq#R_ooO+*V@9S6xWx| z`4O!TPRdvGFC+YT!fUR+g1&==hC8)i!lCg@c&c}gA=ETsXbdd!!G*6O=&#bX2#!;m z9=T3BGFHf86m=OUJa6!u+b6vrRA*!7?b1{Ep~}D_5m5;#9#JRThef}zL#DCU8^l( zuI1cmB+z82?YctDtlq<5dpe=4B)ynSI=>6eREtDI=_5b~a#2VlaXcT>ZYO>H-5W0B zBa0K)dYh*k2|G9kb2X0ozHfePz1^sb&36z%s2!}o_LNXY;3sH9o+er83Z!78<0M#G zV~nJ_S5s=?YSiM4wVnb2i<)q0!?gN|;d7+(yY%g%bg5e#v+*6~Accel8$^AgQMGQ}3 z6C4MfRdE4OF4CH7LcMn5muUrcBGo2`lz!zK4~etRgNA`JVZ<|UqqHG@*nwLTf?~H| zCnuH&N-0EcdCpFXKQ=gr5v_?v;Sp-jrdDW_=gUAYzXonA0cYm@+UQr>I;nepOulXA zqQxP4kH}0NEI-7II&FjL}9fPoq(P z%b6%O>vDVpV8Q?tV(4uapVEBS(AzwJEQu%L%BJJ;6hl~*G{XH@S^kyu^Y|G`HDMTK z7WrGjiDw(SmwOXbwHM$HJqg04;zXurx+%CZIRW$3NA|u&6gs6qMU=G!W$?>2Tv+0F z!AM8~rR1CS=l6r2B>1IS_8ZnpjLJ7XrWZ28Z#Vw-OFr2ay%;6|i{cnnYh6)P7K)_6 z62w%^o1>6>8J9S#krRZ)uKZ}u*-Bg>KlJf?X2Jkieq>(%7d(W{`f28BY_E;*9PJ46 zE@ktBW`n*DPem^eNEMS*j43cy#D$*WY2vdc-%Pl0PLmKuPS3d{CF64`zqF*2Q5XU- z(hP=<#YFz87 zx$^a)&99G5TL%VBUBpL30z6T)ohwKg?-g2ve9a;otV+5(5Jnv7o*jHa!{zeXv89xHk{~myEcPx zgznBi7^1=~nDTd`wlJ!+cR$(;Nu4I2bH>I)i%oW#gaNUVaZG!; z#O+jrFr4S?5p6f6ym2_?XEKIMW+!iLNU(*~eaKKh^s*JGWD-D@LodOzt`pjcSeo7wDi9^%nV zQ=daEF_xVCH+NJ9B8p(=XzlsDr?1Aod;Spi;Ja6H`E4rHtk*I)IfrO83$o|7r7%Mr zmV5c#ILUuw?J1ThUTJ`U>3GcjWnGVxr84YS!;a~QHnAc9jioZy3eiKus%(WjIjkFZ z?_tSxr(CFayg|%F*V>2ndavJV-330vfBjp#;M^TPr|kU<;|d{shUn*;#}Z4cciG)( zNm@1B6_r1w=P8(k#|CR%EORyOGW%kksx%?;^z43|R7R+-XL}IR_(-an&y%gxknWJG zPKP%cR4B@epnXv~-!$!tM<;HYD9h#C*IZX8GZfFV9Wnlp>-dR|7WEO@QkK*NvZ6Rb z<)eXMHdB430&_Jq)ULA(2!^Egb280Bh_5>B zU(r`VI$!cVgt>9mwP3~hAVUdsaX_iSEKHz&*+n^%R0uk<8kDUGlJX^3zjdKS)y$~t zQh9LfA7p5T)c3eGn~W(>m*1dHLrSEM6JbvMBc(g|7{6;4Cb$5(8THWyc2xuk^wPP# zkvbR8@)DIi5m#&H`JnI#ZK_*o-!VWFJc{oUsCUZ(kMUA;^r3z`N1mL(*xLt2`j zIYSx3_|D@p!icE#5B!ly#!LJ!po?5S6MCSp(E#J9_fnau2dURNhQ=6xwi)ll@A8dB z)Bs$@q$xqeLOB2I769hR4soYix1f7y*vVWkj(cmCXgUGJO4g7dLS3~&)4szDHPTBU z#r?~^p;~1M$-JFgzIL@dz*NhZY)U6oz?*C;}-FqGIang zaOcBSD+O8vEmkD}t>cmOrwk*&309I5r}8&U!W@d6&2S6`fw_Lll%!H)wE(jaA4Q5k zK~Du57-KWwuVT;33wYNvGWY0&5#;=t3&UJw<-+sk5C~eQ0S{>gti|>|3)YES_4sd~ zFD4`~4U_1D&=n@c8QmNVA8+&lMTBYQJE*rtGoN7toq*F?K+UXQ^)&^m?&uS<==)89gl1Y%iitzlgY(bMd81I$MZ7@2 zvJpetv>#TiSTCd2+CDYMYT0&tT)%-y^c`6>I0o`n)nM!yc>}*)_RIFLwH}Xi#K|FY zLId;hgmJ1p@xwnBV-D%Q9rt%nOxRI-pkoCiC6~`b+83U7Jwa9?fYD9MaLp_ZxgKvP zv(14~N@pJE$zXKRW8;+W7uPuR*&TOw#!qYVhIjy znl~dyd-XbH%~DehNm~I7$u@BLwgIG$@l)2VSVJcOgpjO*jgyQ#F7D@tV>;jIShJjN zFO>o&ey#6q?r*e*YeVf0K%?t9=WqB85{^hI=!WwftSaoCR{{^F0LA%|TDA3*os5P|lm z68ig-v(U+X2I=Z_8py>WF=Au36m)|n{iox zf0s>Cb%)HeDWBw`Uzqw~xDWV(b*kTA%c`Ag-@u^a9DNPcX>Wjsy+UJoFVptdj)a%x z$kMAf0NiX{-P%`@ySUF;Gw`9_>krb>t&xCGd4~Nl`Z}GM0^Uxr7G}OElzE)J4;s7# z%J58P3PuRoXk;1H8y*7qDbK~{^O+9X6tz-TdNdI4Jc1z3H~!C$4$j8L%o_i>@}Nr} z@8;vV+4v2OQhVIU}uOM;E$nHiB3z_?3j%<=@tP36f70AH_J0hofl+ij7njYPUVt8b5 zbg;JF=BdqM7vQ@6Dzzrn0cp?{0#}!8K6J9&>KM_d>()3j_^M=RnDW;BT#`(|XJkta zFT`*Q!#+EY&3#|I7S7w^I^y7U;MF2q6)zbc%?e6d;@SL9=lGK zyIvmew)+{IZIs70a0#MNM@bx?Rbw|0F}P+c!z3WJ@HOr`9lb-Qz$nSV+6nSffs^|R zo&Z$k@@dvhmRUYGJn97SCRmc%aSH~r3 zHIn`SkJ`XjuWkTp&o}5GF_tSv){P3@i3+$wN}I$rDrl$Fi|x?6ac(D_QbX)hgvj2P z9;Kf@RQ`!r-%Xa6T4~Lt^iX?JVym$S+Hr}tyzSsk2FO3N2@X8zJHUk)Qd>`rV>fOz z{XitCQ@?U3t!jD+LxYY^R+OZorGu+n@42rO-vj&cUD|3SeWa-LY!7Rh_8OEGJ=F7r znrkho~W<4wjCEHl=YL>~FRV-uQc z{Y(K=f#pyeJu)dYd|`nxGVK6+J_Z_oXW*AsamjJo+5@8Z?2+&2plkPz6Yc2r8rEa}yhd@~os@8hourd1L4c zg?sD;ttrt;SDT*J?KIUicN-w%I^gN?*M{U)DC9LDHyyS0hRgG#!gt0iHZnpSx3wl) z=!?wI{DNRNuoyOd+(S)A9I2*I7Z(^E!j$UYwsjwnz+o4_9?qFFglaf z6LQgbW$YW?0s>=%+Q#+`0}iyC#>jXpjRJx>ZWRby1FsZ?&fBApT$PFg$Ae6wm} zJm$E8{jR|qG9nrw`SP4;RbAbk6zA8~uJisIUD|h+oBjCbL?NhAvc*ac?e9?y&Fy+La`*4rQ|ps@+mb9Hd7;!IhYy6Z@^}{M=Zb1?OyabG<D%Y(M%lr}5 zaL!QTwFVmc*GGr*M&=JWHL^@cLXvN}CdqJ$K}Wth<&Rsg-c38+Zg9#;;##4j6lha? z0DN6U2ncHl?;wLZLy9zGKdp^X;pcOfr;ZQJ>m}6J)A~E9(gGD&gqNv&jOsf+_{2C9 zXjZBuUYCs`udcCkzL94rcfCS5jRx&8kCx1PF>X}vb@H@;I8EvmON6@qVm0>t`|zUp zr1|yLyG3A$Iz(6yQEXZjC)C19PRiMA9lCP-1{h&Iw<%GtfAzJ{Ith;?e$I^QnU zuJt?~T^%9RbXju*$7_19C*y(@ufM-$8}LxT_y^UGG`^gBFw_jr{Zcwqt%*_FP?mIsze z1mVGS|GDjq=b>|Q`swAx{(Q`3;^C4MGr{4sIE!J_O%SlaA;gFrWSmy}XcdvRA#!-= zM*z-wjBJ`rHdh34**Ffe<$R=-3%` zPiJWdv>7{UdAz9&0~y6|x9t{>gKY@oY;%R_+-!x})aaTv8;JG5Rem7dS3glU10vb! z5BW;dp+R^v2Y?p?f;-2(MXN^H-uJ8(+DS)SI;ngXlMNlU&JP@k5&hN6R@5BGjKKOf z&X+3iZ{BN2J_+>rC|SRw)UKpYiAcnbcOaMkW3q`Fykv!*%(#Q-caSQv>aIvsVOsV04mV$ ztG1HwS#5omuL|Z?XTR|$=|DQbdZ<{UdRp4YHhmTu-+K?Ol;}vWewrccMPHhEft7ao zJ3;xKQ3N90+85a;Gk{)nm7svf_YxQenMcO||JDD$0{<_rK)(=FEP+GKfssJz{$=`| z-$g@m`P&eSP6awcp)?4Z_;<1)pf)K?Ba>LZ{XxBKlDYI7B^zkZ2Yte$ktQ-X9gFWP z^l}`8qABwL=7qp)#GyHzuvqQhSGG!wB7&q6`MZD05MR)SML#sza}h%kK;ZR94v>DX zA_J2S+mYowrkcff+bgM_j!2H`DdJkrJ4ZI5yRdCeLlDzngmd+f4laB_f?1s1 z_xKPQ{30JtUIBW0bE;}5D`PvWly&XN272EOmEpB478U6i22cIu&4{$>gKPTj|1JT! zye;HfANR%wMrWnzoUpP{Oh)GrIv8YtT3(UD4<&e;FenB2+2CSqkh=aCBlk|A0i94r zuc6;?bZm_0q15#@!rI5T{w@v*ghR~hhc$ffRcT?&el0byV8dzgtB zgfp>d7hqv)EndB>zdI$N^7j)3(iqTxmJS#2TCj6Npu`*sJ|a;pLC?G}wEyt>!M0OV zSf}|{VUfY>zr&tn=lVCZa5zeQR6>IiQ$-B3!LigOQQn$=WM}GB`&n8zAK8KL z?B#<``=GOQa{7p=qUc<*>H(tLNqNhB^#-dd&rCWkhmgQrhmTNT5X@{*dI;<93TuRV z<#_TJgKo1GBRCdA7JT{Hl@)XK1i1m>>P=K$M3M%ukHJ*())~-OEORr#;OTGu-b)ZP zP^TpoYE%NU(zL)=3+*t$G+gvWd?9H+`JmijP7wY4-t#S}nL4y>YcbE0#ZH}fNdx54 zLD1zSI`1GD!!G^+&EH2c^A;!yPODCSAGyr3|H4Ky@+Bj>chqgJR5W#HytB<4$6JUbh)6wedPaMEEL5pKbItJm?uFWJE-u$>{?xlt@hLesT0~ zl;#~-a`hiuU6wl2j(I&Se;zMUmfSL+^9pKY3K6-gSqiiPSelee;+TqbhzZ(1p+z1A zC}ckurj06A=JSp}B*zRG=*Rl+J7R*Wg`t;ZB+P^oP}migcWLhT>HTByC=gL3rV}-Y z5oU4&^69FP{IB;2MWGBVK?N*nftJK{W3K~7`RV^IFdZHUbrL=+GC~u@$$2sGL9IZa z<=$T-0KOz59OO4-caMbAmH=YZjE^LmJv`xG9|#T;)o1((YCj1D7#)T8>jFkmzxAG0 zM>8kikgv;DA3rm6N946|4lSDCedi(B+Lzk_VXzSuD6oo+D_{2(1G{?R=S)PLyQR-) znc$N6FcII71b?Y_=(vCi=CPqN@#~gV`9%VlL4IZCl+Vc3m-t3|6zadh>2yCigYJ;| zKMRrOhz8R2t@lzcic?UR?AmtE;8&--Lp*;iKM`~w^6ru=U584FkXtU91SVx@fMfFS zS|tj28DHT8$@_hv^ZB(mvt#vmDmoy4PU7!OTEvH#QpAM`7MRVA6FV}STkVk6Tc2Aq zdbQKPpT%1YYzPO0K)o>5D}x4oAI6tI8D_xoe#NiU>*MbR2=W($DZJ1a{BfNN5(K7+ zOIA#%h{{8g#@@9Rv8_KJ;h>H*Vd?n(-HwLc9)pdQM>>TU6X-$ct&fZ zLLYrYJo)7N@F2k~Zay`}-`Bl*F`&+%KiaM}5b1XM3RPltN_<1Qo`73~>_2Y}3P1Dc z__z?8hhl3LW^WKWh3>^)J(ym-)u|yS(aE;3)Xd(>nfP~==^!>;)XWApQqeDACYBH| zp({0>Rteq_yOQ+G^!47--E+c#ogOO=-LLf&nr*BHujrIi5y6#3E|bPv#(4j%4xSNmBPJ*_aL7 z85K^5Uk0Xq?Wbh^dxBI%$&HFeuySJC)Vf(YXgpaA-`xZSP`b%owJ^+^lZ``)ryP;( zPnWq8bWQ+JUh80GV==(y9&X`#FZZ5yOrxlkH`3N@jDcoVjssXOmOEVerK56rp{I{C?mB9D93XwHR>#+5NNYTIpGumGpNxH?NF~a3NUTW10w!z5 zcTstiGyN#@Ke{k~Y1ndSUFAu|GMJ`g|1y={=SBcj^N3S-rat*ZY?(p$ls(;d^bW^b z#H7wcKr)Z49}dVU}1JX8om7^rVdf`fOBucyL1xNR%#&C^DD2U}@& zbT^Y3Rb`6toJz__8}ac-4Y*;KbG}0m#>|He8Xb?Q8q3Z&wzwIi`-8Vj4-G5W3>TET zI`Xr>bf`wpLQF^^GAQWl+xsHJCn4FaerI0w>)JfA)0_d$TF-b zR-S!xd*|$Krdurf>BQcAwQv$qTH}9en3Q4L9QH9Lxu=Q6bI{H7kKLGg0Y7&`R{u*K ztn31tmDxT@8IzK<#8$t}fCd}*`R_73mSdqWsfqC|`e9{mN14=G2F2+wY(+U-66Dz9 z4mq$*Urp6gN;EI~$Am87YwA+J`Z)M|>+Sr-J{z&(ow@*jh6!!VL?bJV=w0uf#4QAqcJofWR0)p6lWH=a_IWA?* zuw$}+86Th*QW<>Z-32OeO;n1oa%W)TIA{>MPZ1*aZZIJXb^HKfa%NPlig$re+qJkB zamhVd_~&?2=^3bS(vobj_@bW3;~N#!WZb=(_|RpbN6VR7@|JoF?rD+}*WCD7-*SyK z*J*NhDo3hGu^Vw>P7_ICe3NOT&&jvwhgOZ}vE^R$O_cl_@y8s`vzG4f4=m#_Jt=2lj_!L$_;JA^{7VnTa$8^Aj@ZTPo-Qq5YSN`n zp2nYK<~wM^j%T4f;E|D(*LG6aWhU9^SN#})GaeaXtW*F;#4r~Zcpk_~PI(YCTNc_r@;UH_40jlH8zWL`lyyYkvC81k zh*p$NFoYwRck{Uay-)k~q57(JgIZm-YTdV(j8B$K*g(dq207Ib6XliVCt!o+{Q{wU%ZI~EUl+Tf)Y50tBf9`+8E_VPP$s&p?psfh^>3?D#WJHiA z3c{Vy<*;7%XT$lTFF?og@74w~pkjr5CYP6it|!%e>e1F^a|&Po`@?_JpMNgQKLPr` zVaETp-(?a^E2d`1mR)&gWbGwTgpi^ zrK$Jk4k%I=X@0;PG(w6N0j;hSE2$(-H&KmEgXsMEr*_L%N;g0pzGBs>NO~p{G$8)G zL_ayIPV6Lk#-8CXpt3syK+v0QeK$zVzpJVn-l;m<>#A$N@5-pX_D5lip$T9t%yT`< zcd8e{)(#Yl#LuQ*FT5=VaDGdGiE#ufzji<&D;f+b*^pGZzNC!i4HR>~A?0bdgJ@Io zA_xXB|M_kdZ*hP~ss?BZapC!Qq&$w&Krbet15^i2Ew)Yp%sPg;W-TWP;jV#HRnZM^ z)1PF_PZ*aNbN_<#jEWfy_&zw|JDye=tfd3e2BAbOlqX|N7aS*mt`bvE5&3I(P~tz| zm4idX<7lp7Af3Yd)Sb-*v6g#!j>LNqQsRoM3YP*reFsva%mF1OSs0+J+k zi$F4HJ-muSwgZ7cECPnW`uP_;xq}wd_2K-EqRL5zr`F#;FWR(|#!UmP$l#%=A;4+t z1m>r7lPm!I67vK=24!_dO3>xM2eKu!T!6!5Kp83C2>3jWSZ29jCIHB1Wq)0GUZTA) z8Nkzx_kc#wktw&1GtfY@)lJ!(26&XU1?3$u`z2M&rtQv+gw*V?%(tzQ!+wmCz=Fjg@DqA4YJMREKNp38)CWBj!dyT43 zX}XVRhj;GwlEU423QGpvEqPZ1+;`l@fU@wGU)7?cy_GCtm&M>)#Nut9&F?i5bjVR& zxyw9FlHJ86pq1HZLFRrC$*<~ASj2D&I7Pb~W=+y7o7kSed`ota%mrH@Y2x9Tj%Wl{ zvwfWhB$6A1MN^DM}jEYD_Mt_!!cp!`CM00f8-yqWia znQlK*FGXd-7nlfZh(voAC_jnhlvtfr+}Gl2O*jIYSf}hW-2|+ng+g~V;0OJ}Yey2H zZ`fyEO9h%}&eMrhQ{itq<1-Hn%{q)}bGai4SnuXMFWp^u*tP&kr(+@k!a7~>MTLxmmbjLzz{IM zh)U|81{6Mod!hH94zBdIfrUf-0{Z6e@MH{hJ<=wC;y)R7TX`NdaR`RGd_&T9#t<)$ z$6sPMG3_!@A-?9t9Skz#ylB4H)Kc5U^S$ z)e+1i`?X1r`n@gC(Qlu|h;vs|@P0a+X+&&Kc~>Zv$Tx4XKBRtfU~nO>BPFVc*`7Hc!zzHF%Hm1jgmVbfQjKZ z1r4s_WL0+gz`hmB4dlYkJ7ntsoMwn}6>xL*mQ08e_9PyYf?f5{&Jd!B%q*A2iJk}t zOFKGOZanrtkNgLooOoMX78tZKSy9N=ytqHUPupwRpUj81U`~`+ zM&f4Ny5y!&yjJCTTsL>ZzBFN8*7KeZd!dSrpY>D^(wtyz&w18W)eH?OOR`CI52B8> z<}?6@@f-j;pY)XHR)R|O&xIk$&EbvzJIHEpz22s$|_9uv5X8q7}tNi8tZAq!rJHhuE)KJWclR2 zak`-%EyAqEG_K*g-IhCNKP2OUcp3Ambx`Zkr%3e(XcSh!ULEJ`>z7ED<*&-|GWLWC z0<}5YE~az1>+0-8+0*T4C0QE+9BU*N6+j~POl#AtOv0Lio+pZy5zx`vJ&V84%;?Nu z+6JenPg>`Nc8e4Z#S4X;aunQ$hZ0*6fdk5blJj}P-xJAdmP-=&dG z#&l+UpF|`a8Z3&f4XaDAm;wZn^Bj?MzY@PFXts!EBjUg#9Sm$j*bUX#86!nKPgoBu z>Ho(mbw)SYj7+(M-dezzNv4yv0&jWDvNQn8i68(flig;`(K&iLrB;n6U;Bs&_X-*L z9%kOWsF3SRSY*Shy482!x4`kkCuOVS{_Wfq7avnJO(Mtag@d!VH2e`rvyqddNn^(o zxp>U?EOYBIMgomjf2DtC2m7#O>*oWl=oBTz#FW;K5$q7H>Jur8};CA=F*GT#`dS1(TK3O#+^LyS4lCt|FPs5gn$m za)LfAWvs)=!@Nm=kk(R7Nd7m+ z|HEGy3^j{!TS<00Gq?fT4?WU*8?`LAxn?n_mdDf2YALX|zCSHpoXK7ZW2Y{g941n7 zKiV6+ep`X$;6tF1!NadqTI`t#BB5be*xP`$c<78B_j*7COV4F}GgO~2XQfwKi405z zoyp4ad1Sz#%Qm~jAl#x{&u%KjqRNOZlV8MbcWA2DYt_gZ9EphB;9V+|(>iFtYLPQs zxu`57{HGoS$nv$FX0rAgtynL&?TXT0A*J;^QzV2-&5d|2&4W`^Gyo6Rj_k{9FonFa lD$83SQ2jUBCdc-^yxHdSn3++H8U^`BLR40ySm=e%{{kVLYajps literal 0 HcmV?d00001 diff --git a/docs/design/gg-architecture-drawings/business context.png b/docs/design/gg-architecture-drawings/business context.png new file mode 100644 index 0000000000000000000000000000000000000000..a850fc118a222da034203dcf3c9dd6c5fd9d033f GIT binary patch literal 88440 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 literal 0 HcmV?d00001 diff --git a/docs/design/gg-architecture-drawings/interface options.png b/docs/design/gg-architecture-drawings/interface options.png new file mode 100644 index 0000000000000000000000000000000000000000..d85e13752306d65df5e4c99c1c5c9757a0a305ba GIT binary patch literal 68259 zcmb5WcOaEv|3A)g;>gG<$;`1rk?eWwy|OZ+$fnF}hbUzWWgdGI*;^$dlAT#(hwRPo zy3zA|p6`FZKPnyfeU10^-mlknLNwImi7sBdh=qkkq^KZs7YhqV68!mrzy+TSwO`)> z|6n`cm6yUQ?xtA)|B%AXLf=x06IY*0)~WtQ_u~jhI=y z_bXdC0)+)5@yCKQV4>aMZ{*7}q^`mlG^}8E;tg!_aw zb;5xAeNPd_>FgzJ1Ysc7#tSoz92Eo#!vzz$Rr5QV>&q~evWv-DVJ7VXd)TLcPilvN zC)u}H?9nJyM4`ZwsZRpMHM0q&e^NJ-rfxKr>X)#1Td{zZU?aeyGRRHoZVOX)gCAv? z-+krjG;-SfE}tW(#!AA{)V0Bv>FA0T+ zR@JUb;orEY1CscoLJ-^$Y?_ujMfraQbt>q(s>Bj~)?-q=8{!!)zrIOxN!*H#9eL0kha*FF#YL$2HzGWKkH|dSW{UqBQSIV=})93-_qj*g0n@nM}o}}nnhoRGemNsX}6w^CJ8xz z_9j!Ci)s7m_O;6M^?!th#s@-sJg32jK$+UX?kpc+&eX#E&(~CmNh%p9*TToiRh*B) zlZh<Ig5=p=y|OP$vX(dzoWJXGg!R}LIF|O z!Kcb}-t0@A?^)w2>?`tO-{pYSMtR=LdWyQ0)jH@U8vV zSN)oqw8~f1Aq#y> z803$83;v%uH>LbNWVrej`be>L1B5@wFhPp?PhU_Nb~txHes4@U&VN4xzn*^qmLvb> z1^j;(83aDn@r-u+zawD5Xi1w9iwN?le``9k%zUu)d?oc>;{Tlw3A-vuYsN_SPmZT6 z(YOpg)mcy+!Tz85Tx772xkwe6fODlgTX((`_>^5tQRIK;3rCp3U7v+0{AX*>( zN&CO^$pdlz{}pmS4w_qWdYrC|0sr4BnUN$0J`HjqlS#$QDtDh&EfFeUp-T}eSC^RP z7<%x~a#|w`s=oFA=GG2GnRmSz?0^04%W6YIH{V?d4$>Ee zvQJ*I7gC0Bl5V^(X^#SqiZEOt%(StR`8(DylYQQZePzze!C0!WlWF zJ}X&`sHMB1r=JD6H70sUR;{(&Na=&b?uo>-a4+)YO>xlvXPPxITC1Ax>g5u{1*XYC zQ6zyW-FKy+hrq`Rz@lQAmSq{0nNC*;odeq~Y%1#B$5=X{oa)wGWcrLZpn(|lz>|Zk z##giS#Q)=LS{X?UTp#qcyO5CSXMaWFO2&y^$3mk?5jQP~LY)qxddMuJ)FoUQZvHy} zB!0VKR4_8|j>z3c{ljC+SoKFlNF?x8BXC}BIVwKQJvNE|9PTeNMA1_!)~E%BAdgQB z3(*2_25u5q)C_yqUB*t8|L6=i4U9)6^Oygt2u?riI5Pc5ccBrQQ3#p10^D{(x!h36Q094j_hxT+jNR;b zFZTM}6JO;=x3iNZc64bma)f%wq0BxmjD~#0RYjD063M^C1WPlNJ=ikjtP1@gnjYF9 zmwa8r85UL1^cBakt1e>pG+?4afCBBvrLV_pG8XV|yx`fUaScXw;amM&H*lulr9bml zk<{pRrTl=kpK~Nmr+dv}Akn{>h{r{X{O1n{!%h`6m?AA!XHw<$7jtf-e1Dw&;a04@QbW#4Fhi!+(;{)Se zB-2M8j-~z35d^yWItpckQ|kK!NB3%Q7f$?!Ud^6GJzd_NQzd-;3bnCnMIpOVrE}}9 zFKniktU%MSk(@Wv*ZXK|D9~%AhV|+C7gn5uA$voDAc@1jA6o)1iC<;&Wlet?A#wcl z?`)!@8<|+2ARf(Q)Vqc3MBFgBk9jDvyZae&_2GBYPv_?!fJ{@3JG} z^_j{NUbkFnXfaF5)v$T@?`EI+jzX|Ghy`Z&^Wv?qxEimnHtb9wbrlEiJq#PhP5qc$O|V5?zx`-*^7zVX?NYI|cOZ%149ESDRKMfBps7c+kB5xi zTkkyjs?cfTP%|_2@sh+Ctw6j^MV*diva7E5*ps#zmMh!o84ph7tU(3ar>*$>iQ2LL z$$nzNbbdFImp;FYJ0kaM6AKYlg#U3=)ugYNz~e8uZ~1I>>*rFuvT@!P5!Re+k*kZ| zCWV zoK*T)KNn2xpnxZnx+-zJ7ST^qyV`hQ)E}cRE@a}hTw!c9m; z_2Uus(5)h}FMl_-Ubo~(9?fS&gzK=5kC(MA7KToI1GybnnoCd7TDRW8VZ3{9ftQ=3 zaYWF0R;A|E8^&`ZDa4nFOY^l%ukAweUW(+7Xy1=!ltBDeK}A&SN0l~+Odscs9@QLe zj~dfZ;Usq~Ao`jFoO1p(hPf;k>k@Zv80)QlieqNw8m>@Jj}bV8GRo&Sb)d; zo#@8bJJzD9&!_fci%UmXGdkjb>9xCfgS5JJWA2-Jr>2Sc#JKz9a_DWpv4oY~=?L|{ zg;MEP&q>Wm&U{gOD9TERkIeP$pgmoh5PSnMv~`F^)!=)tdQCdV*r{TeD}PA}FI2|W z=!64<=nt|7)^scU_$gBANx4BU`-CagQZn^Pcevlqd^#MgCl(5kbtY6Wb{>xwYb5JYXv?Nh`YuW`_5~vly%+}j9CK$1CAvP+fMEY z#KQ9o?wr{Vv$PKGedc#M3zdW*_`hA;VdGWJa@ar|4e~@N)X}Sdh7Z%;dWd;wQ8o3F zqqdLV+I_O>b5m$OLzjpk5))1b?`kLOaJPT|ijMu??f9-cN|8Ky%je{8Van~8Uy zSSo3nz!TbulBdIW0B@n{iiR^>Z++E$lT`QPQKHb0u4qz$M1ChrqTQ5Rx|YEg1KXm@ zDsOq1-w|CId$Lq~lcT6SnxF|-Y4Xy^7%-e}+lVP4_mOhzmS_0nu!IO!(qdq92hxz%ERJM z`ucWHX_=w>xa;_Wmbw_M=#Ni}~G-96acTn5jdF{qGS0 zT;9J3tdn%V2`?2+2S8Q!@Z!sj&c8n%e0fz{}sM0*)y( zmhFPy1pQdlyq9=%XuXB1COiw2_g37S>N2)(mbHISFZ}W*dN@DQHm69u#%%=o^p=s| zNS3nt)Or494#KUSIo5&~S)VFpG_c)2KIQ^?WQbW(0%KzMrsB_{9~P-pQQqD#1I>4| z{jj34`kjVVqCcdZRYOf;bnz@E4?>s&GQx#BXggo*9nMM6doL*8zi3D9&#P82_mTei zu_-lqwJDXz{ezLAq|)@utfMY1R0637V{>DBTz-3e^hAxvTO}emUy>D$y|)VPyW+;!myy(;9IamZV@z-9y(eh%o-qH; zH_^6wy0_C^cClZs^l9WAP-lFo9XwIhbYx$} zvlHKR*eXvou=P2rvClMJ#O+)gFov)+=E$`>UD{2|&Z?tI*xL{_CDJ`Ec@)sie^i->pog}Io`1>pILQmnGGA$_ zz9+Ix`mPD`xea8qq|+wXWc*R3_?)|XCVz+Mp1)dta;u68<^1&heZ#vP;R5Cf-@;~x zbbAwice2^AUK6d@s+>%(HBOr4wwJ=(EU};nW#vgKe~Ugr6>P~R$OI?58NJ`}AH&68 z2q6}mKt!A67_XM=2d>-2I*bk_nJiN@ImmcxKPoK|wZS`0axXwt-L()mql($d9O19X zgwamX^y$uLFKEerlBN(#T9B%qeAWN06(?FwDy6G>ymbF$apF1;lI`8{JA&uUBONDq ze|ZL7gpx}(CQ$eDb-L6p81;n%XZIq!#f2owLk2I>=1P$KQ=7qG7WTyxvBJM2rN_MF zE$nf&f}yMxZ9tAF+T!tL8WS{ZzFyVz73m~xoDi_f`n9xR(G8EaGZsTrmzR@%4}TG# zIs{6u`h!sBM8JWJ0tcdgx5`6CJyI#*g@?>BZQIJ@y*u;O&3NF1Xm7}j%KAj&l2EfEX1=oOXQcTrM5|2jnu}n@=M`4sZ)Qc7H;1;@gSzx zWzkEeSeumM)N07HJpo1ZzU93H8a0U{mmP(->~sjn3voVIyR8@x+d^2k7^dx$0IMy`W%J<2LVp zeE)dn{@6k7eszubGhYxpEe1ccy&SU?C~Mc4l}H6UOSlWtOuFM z_#Ah+bb;HOis06hz0?yb+j#Be!$k>?w8<0BPmLF@PWm1!>zmKaN+iq;zl=@XIoxfN zaNF8Ro$Fzh^abKDzpGpF*4#5Kk_!G(4m0Ez%Gvt^Pk-9J@&`+o(&X^kB>p-Y^5s(n zC5Www-3oW>y96dh8-E2;8&w z_FesvY~5h)rPIm)^ru4Utp#87ZXDa&-col)oE#LXo7_8iaG>FNt(A_$xoLX)MFYY6 zOOb8#C%bLqjwfm&%fB0Ua>#R1JZ-#xqVZ}SNk`g#PKWW2wENV4w9Is5p>zIvd+iHr z>L1_9%f1_30&R&7wRv|Q@ltB+MSq`VUor2aABQ*o3?S$w$*@%KVASUmE@O+T&RccWEnirBl_JqkK7ah?yM1TpCWBvh-1Bh^)3iK2 z+o)sHk&)53%l^*=Mb=~rsHEstShxPj?eaOc_eRR^Pvq(@IPo`QL;@9m)qXrp zU<4%&e_b*b+GnsWFw5TLNjDGuk>OanuHorJ-_i-C)9aRhd3eq z_TNydJ7c1sC!RQIdi!i8x0-!vzIBZ!7)6R8T%uQ=SyX$aYg})ov4(>#eG(WRO6T)h zJ0kAJpW}m7_wRf??TFIVjZC@7CW4GuWb43s6}`+#^)#`72D?#uSz=fsR8=%lPoJD-P*oP?{9+BgnlDFG`eQnDO%U!s@givicd@m{Mw+Mwcz~h z+|lT4XP^9Nk^REO&<|UQtEm^i3+3rP*{mJ|Sw3~ARqvr>x(B-3_JW*T#{s7-Trt=H=x`o5T00vyYLhwITV5?;m#Q7(G(;GlwrM#D4Rhy|ePUs6*o@ zfxb%Xs2gNA+1h)aMc#1O0CVJOQ(t>;s7>vkf|jhkx5h-AmMI?DhN?d-Q+=kKyM@|_ zbd~xFc}!d=Wi2jp*O8Ea0enJ?_`IN4M3QKnPpO_X3!3E}A(d4nJAYRz0qx1)w!^~P+M;XJ9^iB+hWgIF}J%wJi!YoIg&TLQ!fHL$lhTyK-IYM!3r4Gw2N-+p26 z7kK8?W9>!Xd1?BKbY6c-H+K&=zFpGQw}?g6eHk{T97fG`Tfb6`{lPg>**kIP;vb>k z&A4ptO0K2MZbK=4`#F9W%f)hJ>KYi%D=-=aZ#0im)3PgTA&aU3x3TwPUQR$(oB{i8 zE0-^+_fFlU>fB`zeY_txW8=Xk_P(gY4D;|Owu;>^Y*Q$3yRR6n3vxt@)dUZzuJ*p_lM4XxTE453wl?ks? zDp<|NL|KWNp-z)LD48#+URcx=7}tra-yX4bsL`jsy6bN1(6FUj)$zda?q^?%8BiL9 z+KVi1iqTLvUopVH>pQ~P!X~uECBt6=U$`J&M6$3ZJd;+E}LD``ObH4Q?Qng z--lJf8JE^pp6`fdDUal2IKe(`**D(RWEE%OwwoAPiF{8vtk2;N(!LtA+r=U7%bdF> za9_RnPvxkCLrf;5C`r7Q8dRQ~>Kh~tftlP*$Rt0?g%&(|JJp2I(h7Ps$`$|jc4~h% z1Cj6u*=Q&I@!#j0-+74Oy`V@H+UCMf0g0mns%+wMv7fc3p*g!lfz{7m<#3aPFa|0? zo`Bc!y&bzzU}FtQ^PN3)(nUCt>-}Y(1@jjamno1@x0!Hk-rOB8h>JVhp%lifm{%p- z**$nqBxllA?8>TaT@{tTw(FhVZK+26p4j?M?M9S$i??WUO?mW&fkxh zb|irzyFH7Yzs;8#KYNkq15-wq&e)f1i3G3RO(z{aF*jBm<@E76ij_$-8>NKAA>e5= zjA1oLtQ9xr(Rg%^abNI@|4kR+@w}qvE_+Du@;J$8oa*~VUDxU*zEt{ej$%TLFH?55 zaKa_hu;n>qYDM~%ej*>{?&;r8bx(0{Eio{FU?|KsTndR%bTSv#{<7g-RKZC_1NseX zFHDQRTBTrwJvlz86XAX+*YP)V?JIZHw*G>&B~O4SA7*53#AhB;LJM_QL4G#|RO10sbMN`B z@e^T-cqsv83;04vBzuSnK~G0yiUCzN;n7sS*#(xtcU=|sWhMrPbAHEjN)?m1g+H5) zmzo0b$yv1Xjd?+PA2hjxl^Du;EwGFo3|@6zDolR(l3%JaNePw@n3`yvFUQ<^2J2)!v>GL3Rkn!Z?B|l$+y=MP-dMx!?69P>o&0 z7Rylry%c=jRuls(tb%9X>4DPiQ+wyW3X8HRn7mn|a2rBCu+z!1tXLK9;cQus83 z_^rlJPDUNl5kc`BAc9ky7x+NcSIf}+bKnAJ`Y8;DS^?dA%_beEs3}r_bJmNe$$f=&OQLByd!R*^OcY()8WuoB#hlBe5=6an4Ze#dB|Oi_TC zzRoGhy#bO)8UL07d|Z?NXADX(#>^s@4Zu5@z*4IzPWzjt_rPB6HAy=~Igx?Abo*uu zlH`hEGdPH|%X|jp2GRZyqWDibF5DShg?Jpu2_)DqybRU1Opxf*B z8}L=5Y#@mi9dl~i-ot0tcGsXf%eJxL!b~IvqPl*<&t!SeHWq>9{&@YNsv?AJ=Ns0P;DDnirA#JUkpeuc+P|mE*|2EIiLxt{1|FRpUB9P2+=^PSbqsCtO z`MRhrmkS!>7Z~H7u3zxS#`Y|p2sWqH*YysC@Ys5sJn^$lU_Qa63PcJdm{(Bw#HSS_ z0r^kj?hh)6)2;^k0^Iyi;p2tphe6F!K$$q7J;MTmBLu3_(WBf?3hfh=6C7$ym!fXK z09*)QmsiAd`;5(3e)#-C-u@>kV-hQ-CqH&E1XeOZr%uC(^e3@e&Hk$qNN`sv&^glQTzj%%wva9+Jq$;^{g`EN+XkFM?i#78HXn6EK38E;k z@VGyx3Ge&eS<*m^Qc5@$holkWREL13nM3auhD6h!F6MPG&=93Q9c>C|?JRJq&Y*!* z6^&>`r<>R?SP;v*!U2cNeXSz7GryT`6=={lvwKj4Vxrv{1|S{jxsL9cvfh$smw=%; z!Dib77(EDIH*?)|H_lC6!MrYru1<6ziD#REY+>a%V;fq8@O2V>rm!7=oR}+uPFNi8 z7h5>mMDO8ihoJ1FIJLvh#Dj_Kzq+f7SKgVBRjVv1hX3OSuo0nqY=k-TZcZNEP_5F` z1fr*hE!}&dKX)`Ae5CDPp2YwZ=B^8QEChk|0AT*ERcQPxl&Jc(o5@B&L7amDM%XAq`3fh?W6x+aT4B1|}-mTjVi8?rC>I7Po>_wZ6oElAV2G z=BcXnv|z`Tp!&<^-XJ-RUbH`MiAhPR5-d#<+L@9HLs{)No@9GS9+D6f#p=WFNda`K zA#tsS#DKe+xdt<=mgTGq%qD>D$)8lv_JzYdfIUZ1T6X{)<6&<88GA#G2Rhg@$93-( zB^osWHt<`uUT#LUqq^vozOQY<2h(iXb4?^iBBI)!613H#y2hlZ?+lWoW?!1EoXO z0J73xfu-qGo=)&m1}H|9XJBnP^W&1BMX4j1(f9DdSgb%jW3Lo9fS_0az>S$tty30) zC%+;RuG6&vp<97_VA?rh&2<~~Zn!ywczhzH|Mso8S> z8VnLE#XFr8|6;r|BsEx>p=^qe?s+x>-T`g-t!II`Yu92jCYmpC@tn=VuFg@a#Ug_G#t)fog$E#?!mSNZ>{~br z5sh7ZKuU5@TpG6Rr-G3@j=1lSeVSaXgKn5+n9K%8Y%~K1`aA)rYLSHm##(zT;{!Op z5DJ7NDo}KXYk;KGRb=Cfq?mtG%$B7Kx^CMJDzKLy!c)-kN znA!T}rapfD$2a6uuDX6NofkA?T7WIy7ObrJRudnKS;H*c7HC*~U%PNITm6l=>3-yb zEjX)l#Tq9^-2B4X*QuJ5$av~qdyweDFpS@O&!h*nMv42Pj%JerMOIq^)2N63j!>almbvunxj}+Z_A()ZMOFDiRJLbM?&zfg1F|zMVbBnPrB&RE zfbR{Y*36z)kFpaJm5xVUZ2JUU{I%o! zeXHNser6{K37%2%cMouCO?EW9?9KXOAk~}ex)KK+lr}Aq+w@EQ^cEQmVwbim)JdU@ zdHS+0<;Gom*rFvICdJJrAx&n+32`8cOA(_6N-Kt_3H^Y@TPjcN*GUIM;Cd-anL` zqB)Z;h6R4_C{Izo526$b!prXA-?c4POmOk9QD!-I>khtBt?D$D?M8|?b*+@xUVJQ1 zcYi%U!@-yN#2@k_R!W+V_ZiBHlv2|8o(-htZ?Zr{Bpbz_)r$J=`aDe8 zvHG>|a8{t{6q$}+1vL-pec!#A($KUre7PQ}6UM0GJ6bhBC%O5-(LdbyWrs%CS-aNs z^{cXsRO{Uvey$qj2|{DOyhMCnYatm-j^T=n_<* zeh#HtyJlNR3N=fgP{)q&=clXa7p*$Zv95LZHh$1-&KI*Ieb{g0i9nr<2*Yx~DwZyfs7lF;l!bLcgAokNs}idm?zE78%OWx+53Cqjk)~ z#*`6T;#qKPV9}f5C+uJ>yS7ll&Rhd{560KTgxR7ra|S3wK5Y6%>*kiHXVqWM-v7dt zp*;2N3nD?t`B7mk3s+8((@R79^|pzI<;v01etyyMd;?pBUV$bV)jg5bdgnvHDrogP z7@eGwI9gB_f9tGMX&uE>-oXnhUyz~IA~niS7FKN3|45O~Te?>>7g~%Et@x>=@(wsS zvL>z{(Fgj2{Ir#c+qyTinWYb1^p{h+1%f5;?POWFaTs=o+r;BiQh6+1ZjAn(r~xE` zgI?!V?>Ujc`1`&>VkQ=`I(JXXI&V?e1AYfuY-094#_dEuTWjalD@0((rv0 z3b!q)&`tQPYZ##JE#=i!PT6|$_xYq}{yh)z^%sqI-=RigOWpxAmi^u3q-NdZ07vg> z>SAJX)%PNO%?8YueIU;N=Z=O@%9@NjG&=?MJz#IDo1fO<2(7` zfG;tub=-zel)jCFemj~8yl`3xIZtW(wx;Kjtb0@h^ za|Vj&W;}`AmY+>02Tk(*UAmS5C4NUs=%UxvUv{J~iM>u4x-vrMNWxjx&bUyc8^N+# z#3-$}4v+(QW&ZT$h;4~$@TceEn`zCu{Jl)u^LnNn@(WK2EI$$n(3ouwFDjcxq-K2| zi9H!=I_7(~lK?ZU!S@BO2M@S7BNAE7gzO)E2`0G8?}u54&<$F@2`fOunxBM~N|%hv zJU?RcO5G2^7)h&$vaIDHAusKBLbh`fvu_^43@t9&U2Y%P06={?LHzAJQFFm@mp;{& z{iPCm2&z^kdLP7d%>-p7TVU3wl9MQR9%(5;Q6+Lcq=Vsn2_sH{d#g6W$5DGjj>4ZI z{x*gi{wJ!WnXb+$*uUZTsxC#j(u2ec@KL+>s((vP_Dfn;eRt}9LLjiKIH0)TcqMW4 z*eGz70qRk;`F3%n;jfs>YsyN9Hdid{Qj%>SvMa5#rS8|EBC)6N{SdNV?SNZ@$)__gyVqR_gT) zt5qXGP=uiNi9`6gdV=A)LOGt3GOOtdo893i^+Q6f-w#BNkI3yqdk!5se?6yPaeJ&K z+z^xD-Cz}nWpBzLbnxeWU)k#te(^}rz27mVRBYDz$3FD-ycnkn=>$Jkh1FkH@j~`? zKbMN!AH9BVUbx<6_1M}wrLpLi*?NvpLx&#K@lgr{uQ|lPWp&2Is4Fx@euu=!P}A?$ z-jE0y?NBXLWdPWvM2_duc&6_6D>F(+ozz{TYnvuflXg<}Jsu4b1DuKzv%hbp#SWj= zktFTG{+|iqu%PQ0$HQIvvMM?izXDHB0fo7(ViK@rLKDz7VXSQQ=>Eg6*wcA9a%>Q+ zUeHd`gA2>BpBcO6SO3ruJES70TuiP~LwlfwZtogtvD5PR3Q{xSp1AKkFU)1i3wEUN zqp`d`eYH2?9@zs9nY3=0Zq->)8*f$5pODo)XWT%5cG59X`i1pU&1_l4uYgMYohRiN zY9?6>XF76ihFINNh#r0oiFTTSJbxuTcugYNo}j(x9b8WQ&$vFHgyr{c<#e0N^FeXu zp4uxS*`A^+M>ppL3n{UQOd53Nt<4pC_2$ z+6w4Jgfk0Okj!r-GgxfYTNhwwKDG~q94VBk=Yy_lFdrxrk{yJH&RET8GSYibsWXl_ zntl=u9&cR7J1ePCQJ|WmYT6H6)5=Uqy9K>m%hdBtNh4mCl=gJ2U`3Rn-l!M9v5w^0 zQQVL*bD_!a_JmK1>RbD<&|LyPWvRwRdHOZ=!pbt0o&`a&^MU z4L+J5s@xe^R6pm3qrTv8ZU`pv%MRD59tbFZ(7ifSukIA?VX}@_eOhT?p#uOPT-@_8 zOn&m>;B9R@u#{$Qgq3@>AWkw*XouFLVz^5(0|^@$dN%nD!Q9Z!^G)M4Zo+ZE`U<0I z;wx{wWX{2J%Nqc-5zEr))<^0h%e*_w3_g1DlegDL<(Ec9MOLaa4kp5lW|o=^c@2EG z&3Xl2GVb^=#=hU^7HQj-94aql^!g*!Y4a8TW{F(-EWnDIBN66X5@MN)T6O~v>%T}I zZ-@@Jq@|R3ZURB!LA)yNX4BLP~3PYKvdssnh{5Nf>c7J zN&IfUGe=3ilc?9W-B34_fl%Gq_b(vi%!(q-TwM)~o7A^Vo)MSv{Cd0X(>_UIZ~s@s z%l=28IS2x3urli86#{-y8Wqt}l!)HmU^6i@)rh(cIt^hV&ts$+G@c^csk!rW31ef_ zgl{wggemEE`lT=>^G}>rV@_)Tf201EB-BSGxbo~sXy&z6(y!_1!~LNqx14g}a**AN zAgu}yK_Zz0@juso2;t?19_1VAlN9N2EpZO^-d*U2JFd)cAnz_MQm#z5P>0$}~7^gM!Dlmyn*6G+d$EqLQKK-qd5@G@OIpId>Vj7~tpQ0V0lpw99(0nCzz|6{ve zUXQ~E%lZQ5azvO++pA6waIL8t&U@uL$yEgQ%@ZVO+5-1v^e`}8xv_zyhp92%B}gGd z{+FHeGt;bC-HUPhkKUH6*~CzZuN^rU~|X&B>$cv)yCsD%^m%WiR#(if-dbr+`h+?iCu83~df zbu6kIio&6`Q!Xnuzg(_mQ=bjw1$9_S3~;CwkvWMX0&COfE;K;05PtK4ksiPCxXXn; zRuy_~pY}~Yt@Dlrw*qWp*KEr&^7R*LNC!jk&F$ewiKRW12XVF^W$5*f8W+@6plbKD z$*xb{BLe5~O)tE|B5~?>bBWRTRQxjwP)jBvXd$_$0@NbC0fHcTcRzc{^dn9yoWD zP5sv4QEg4$?8>Xm+2q6SFe$igWFhaj8F^kPwdP7 z8yv`a@9EO81$xz!0he;nA6Xt-$d100F!9IxFpnJ|LHXNu9-~2|+7pe`RkK$mrx_Vx z@D4f9();0AD6`dN<1SdVsSwUh+lAG;cSmKezL6c-rYw3uf=>mJ~Q)QdR@omsqY~+%J!N2aF?5>(MIiaj#BG)x2O6c zuI5z3paYlzVkXKD9LZ)|M86Q(aBoL#pG!HtQW4pLbe@73fbs@1QmrkX;G0{VeA1*? zI1%bd%VS5DlsQ=u%K}~V0Xq8~Pc(W~9aY!5FrK=svZJi+>qCjiqXc62+!83dNrzSm z#Uv48dj5h75>QFS&@38Yi}?%ZFTLj5;u1t`Ba93==mrwX8iSCUalih?Lpaav0K$)$ zllY8GLZ}&ng{^Md^Du%7j}j(EzMGZRAGE(f?6m7lruUfyw802X23GDH=y}6@s3mbs zE?gusJH-mX0=vN8c>9`DZ(xhn4!)}YNOoka^$o(V}y&$Pn;{tl#jSPW3vuC<+Dig{yuRWRBvy)qYwQh022l{?liI5)?4cq%M%B4F%QeXuXjb`lD91q2L1@ zN=}Kj^=iCRsAXJEmnQCt?1>>Y zk1RW!42wR5N_&tlU5}i(*RNXh3F=DsK!?`&H|i?PhkSkn(ed~)TlomMCUbgfJvV{9 zjguh(7N>y#5)YckW!HQNGp3THx`v9nJ#^A!1i2Sf38YO*;VvNI&;Zs;bXg)unqj^J z!DDiC{4F?6{@+@UNao#D7IW-+A!VO`3)%|b<`ocV6@-f&+~VCu3jMGx33|}#2a7BN zD#J+d@;A8s_*>1tg~RrsVV;0}UVkZ$(x~|tAA}$)?O_FL^no!6f%X{AKIiXyKqU;_cBxDfV)>5AHVWjaqIm>!6cT^J!Td9 zJ3c;1)#oTTHrX37uSzF(zgjky^6K}|yX3VB^4jMKXcpqI*8pjI)JI#sn9sDrLi>qX zsRkgkIb%oi%bn_`Ut=+J^ntGkUmaITpSs^>1^_u+Wino03GvsBoEXidOuSFI*sW^T zHP_%*o9x%E{iKRlHeVHV6Gx7emtLxysvz6*C%aCptk$SQ5&|Iye^n6e@HrQ)7Yt)y zfGxdQ{P0I!KwC~B3v!mVUe-qVh)^52YYmX0;noQRmjKzUGXfccyI_5{(Y|4r`}Y)I zxfop|?NkEu6pG0=6i8u;Nc)4ZDXzVcOV=@z0+&b8>rg;SX=FE6_3}y6p{DlE%&Wjl z^wa7);cm#jQ9n=+M&iKZ)3^n1i)F&J6b#uGMx(4K;7%+INUJnPR+YymannbRa&eCn z7VP?JPK#i4J=lGFqTr0H>d(12Days1S~bN0cJg~qw{>O)d-)L*5zSH@lC*`epux~! z>$8OWDnvl|n5hos=-+_dc*@C3AJZ#MEedBt=lE->ccg<=kt{d zuk-`>RJX<%_S&L5mw!K0&>gn6nJ^7-Y+S5*F zGqS;;*fM`%k^2^!%aE|?sN&YhnoCEu5LwzExC;@KO#ek>a!5Wbgz*)6_C9_(kZBGS zBJ@H{8`k-E0l>~LKsPgz?k4HTQQ8OyXDJY2Zh>2;Klw-s%`c+E@dc4q6gX_AsrA+8`@~6EWze=64LMm>kP^>}$s7fEg`sctt2e`7szA^Qrayz4Nf5l$qC_0`uMwxw zLFqFJLkR}=Op{9pN2vT^8{Ca5R!jFbJ2jt)=|1QPYVt5?O$f&&f%XPEnBE{)#+8 z6W3*r5iw3!+U2pcGTa{paMK7j=he&gEBX!O+J7J26@#of7O+4FEU?yA)Mx4vAS4g0 zrU}lnnJ5{3+%S8q&%&fi|8S^IMS9bTw1+mSu(;HzB56d5K>`fT$8o~}V(&;0Ln0^x z;Iig6UFI=K?hTN4Ld|?ZK-wufxpNxJ(D@KUq=GI>j3gHyc-#aR-mb6z*fx-R(vSrb z&L1vdcIZivhn`5z2^D}46R#d+?-c_N5~o^QU&S0;#5VvP2g-gG#s&wBo!;*6+{z^%_dz4ae;3CTq z4g+|k8(-#%&UDUM7#hb1rOwesHpzpEao6|1oJ(n!E=(k=T)NZnp?vR9(k)aw6@;9v zgEvXlee<0X0Y(=*u!BDn_h793(B^$>%LhT{$M#awJ^vxt=)!eILMh zQ~51waH1I}m(Q{jM7=DC*@m2dFTZY1*5xwJ6^YPl!gn(nwc%J9oc=W9vIl%~Y||y{ zmY;y<@A@wWf;+I_H3d4F%c1__p82n|YjyElHwq;2{)d(kh$PV;+&@96p55HFQU?d^ zb?ez96vHc`ixclWMICF)7eqvIW9VMRs2KhHO9^SNJ-9R8tFLHV!4rPEFG#H(z(x>~ zgZuc?<-f$h+AKI$EZagl7uErZMs4pP@(Q4CmKAPFke)>h25yM6HGPNib0q$s2Qy1j zvB$$Mm-}>o^uUho7N?7buc4Y7RBfC-(YuYDVLf4y4m(wXP5ODZkZ8`ex*SB7Zbr@IxHjx)7P>A59#!&A3(dK zZmK(V`Zr_8$rr5kc^49q#C2k5%Gd;ehj7}Vub@vvndeYv1F-+>4d7#<#I&6L1U5&< z4N{BpxNWYll4YNmkJO8daf-+-LK(!w(fxtJ=Y#M5MNKr0r{zwZ_S zU&(Q=DDUi>GZ>U%g~#TKG4A>cj8-cXU=s(S&@KsbHKtfE9|^A3LJ7uPu-@5`zbr( zTDhY+*2-JLbp}A%#DX<|Ygpeo`+j8qk8>qye}>gL{MM8yh7kW*T)eJd=J~HRjDViL z92Mv%1UX8#z|f{NDj@R*wfenI?#YZB~x(_KPZVQ11iowT2Ujwc}A%{6A|!U5xKtfeNqT* z2oPni>p*^HFb~j|jIB`Y6AoX*RV<@+JADv4stSrTOreRRR1ip|a z9#EWuJDa{{$?JOP`gM#2_Cw8U)CpMS=C?>1Ip~W@*h~?C3VO;Q(?6oR=y~y!nt198 zNZJFy0A-kasiKUw>;)2A3yub-S)eG8(`V$Ty%hX+Wc_!9$v{p+1&DO?x_&$Xiv0g4 zoPUIoj$Wh$IH|omC8{BX@PX_CYc}{rS%&hFcl%nox6*k2 z&-?l$Ac9<>D2SIgSG9Q)e2#ZP74TQ298&t}B%EbC8HeiBCc*XU?|`P6o!A|V2PHda zJtnZ-SSTY@YWQ*AkWsmNQ5`UWh@i7_fI>-8o3kAkhosPlY&JxHB+APE(N<0{t$NIV zS~MtQsOTydYr>54_-6hJkp9<0sReaUI){-A5Z+5EaMo;MQI2AO1L{M6?ya!UCg3pV zV`&yXGXo;%X>W+3=K@-eEI#Z~t-suPr3bAPy$J2ob>FEz?%5UeKITP#ATq-$Y`7XJD$vx znN1cAfQGBj!MxL0Q@sC`EEWi9TK^w=Zyi--+rAAdZj~@-1f^R*6p<9zbcxae5+WcS zA}zH+5u}lj?iP@4P!vU^OG;20B&0)uId72XecqWhGi$!JzWM9-kIS{$`;IHl>x|<# z&OmdTqK7bZfpxI2;Fo_9ZT?lTC|F^a5lgZPCHGeSb+=&PY3{(}t)wYv!qhy3O~54{ z{X`0O+1}rM4vSF~oR_OvDj@IGft*rx1XBs3hnVrd6MM!VoO1opOduSBj@TJpw;x}G z9vL#`v>&>xFrxZkuddBgAtyi*Gkilx|BH~)e_aEP)>U7+H7t8%oZ*P-y-_qw1i14Z z*}uCT$|$f*CFjo0!S1)a1#@hmS}A?zUk2kCCI#^jkQ4~Kj5NHAKtuSGv?e*#(Zh@j zEKEt{e9saRuZ4#?EJiSIzWk?j2lu8?G=u?pF)Y|~7DgG+j$gA(Y()q({pQa9^#Kv6 zF+kXpqq68xG;i=>M4p9AP~rc}@BlOtSt;y7l0sm83E)AbzBldC6cP5GK9nkf#~VPb z@4a9pJ#6$_@UAG@p5bd1{$sk}3Jh?C1A&xd$IEe#`?vxKFwUL(Fa$;(^C4(O87J_K+a<^hp2O8|IjG9!)~6fId24z^R}1x2#Oy0)D#xUqN%@1w5Cpr{)Kewf)q%CuIp71<92uP2iZo<qo8Ba$fW zxD+no9tW(xSG?FiHW*(2sy3E=jW-dwE&S=pH>E>5imEr7a+;ubhF|MACWa`h`#Xu2 z-ceQ&dEg`wETEvTNx$fU`zYc_aHN-?)7Ag7opVX555H9HXq$VYtx+kFhW63YCET&^ zZ(`qSNyTr@BEi5YnxH5$Y;zfsZ%8e~JQVnLP)|7=#+i6@{1id03LPWN4IdUoO-yO0 zopwd@hEg(%Y1H529=3=DHg`MiM8Vumx{F#9U`L33(1tfmDc{_ zfvNSxtDrCJ$!c}~F|)_84#GRN80j-X#QZSU&*(dDI+5ht>Zr05Rhaqz=Mi18RgI`Z z&vVFuam5AshM4dHC+xhvf0+h+C=?h%_?WrK5-P!9cofZG@kMFR)h*lz_&t1}ddt9wXs{rD^H7ea<9YNuZr zli&vvhryn&mmc(5b814X_|aKHo`{c~4U@9er>357pS}4o@y`Ua-couY zXdWq6wYta-8N_sSnXVhh%%c7#J`YyodwRtT=MTSFlvdDCh&_ukx8#bif)etTZ}R3Z z?Npw~4vEJ!bu}G}u@v|Q$KIi>yT65M<_f+b%xV_GkCBa@mhr)7IfntPFI#qyy2l|^ z;IBz0-W!jwQ!2#yt4W#tAZ!t%+vV_zsmST|o*lNo$)SzF(BiYK+7CcP$ z;P)i^ZtvScFPBa#P@=`fzo>i+{^$Nl6{r_{!7Nue%z(B>{2bkO@1D7;$l4Oepw(A> z#dyP-&pt;NI8HrRxhI!LkI4!O%xFFO4q^*D(fl}TPfjxzJ^bC9=#by`PclvQCAxmq z*GxHCEgJt-xa<`}EX+InSG`O_m6i=hLvU~bc%Tq+Op~oyIqvnDH$D-$Memtza2^Ic zaCtw_a`-CRPChtUaOg^i(#hwa6lg|xhy@I%X0&vvRxI%h|bRuY8JY)wJe*X&m6@;FXWQ+NxH3FxaCfs zz7~8Toy7||Rv;nu> z>$m)AZ`{9o8=NqV&$F#jhb1Xlc2Ix2fQ`X9@j2oa?HkWSYEVZP52@jM@U)N_f@G&$ z(pP5*g-4wha42D;iYmN`G{wX36hF8`lI)m$;&4AEd0@5HFO5($4$NIZhF4JlOY@v= zXz9rLAlt(d4}1tYDM&KSwbm~PSVgi=6SQuRA^D7}ick`)q022?u{={UWq9OGyiLNH z+0>>8R1Rr7KupL<-w*M=YslTuMUdQZw2FMu;aPuDKhsPTq(;c{A-AZ5bl7@e$eF(b zQ;K-7WjZ2TK6fs;5`-fs)!}O${2f5|SG`_zll342hCJcnpPMisS$Zyn73;q~WjO~* zpMQCyN8f}W+0uX}(us)}QUa!h4J(Cf9WYLZw{W4sXELoB5+`NAyq!TY1-QSsjt??| zsjTa3Od^LgPUNOn5jw*-!I-NaigcFkh97N50^0E1`Ix=x*_@2zf0YXWs13PDYzSXd zKLD8HK;=?l_1i_Y+n+*jLO%WP(_a8x&uQ>!j{B;>Dp&?ESbD#zRq<1Yjw?0%=iHB; zZVsS&Q{}Oo0i?RtS|t#&v79;ntOWg#0bDZ^>1UAcOX>gx&G`RT)kJE^ zbb=v4jG^)2bjT3miqaHm*;O@P@6$;T)JJOHl>SkNRFVw)+SK8>8ES*4bUKVYUFyyZav6H>qG-Bw?$P6)WEtV_rQ zo*KRk*6yDpFb8t*5~VvY`_M_Gz=uueKJWJ$|8Ke!UgQRl-OiX&5o*#N3?Et#MJFG> zId_Z7(SOHF44&X{DGSiyYqEpfYcid30*Yx$^MX-CLkO}cWH4qGW!ljRFM>7kLE6w zZ(mxhAYH>4BdZ9bo-YQsVyS+(+GfZa|*rf{}+|Wo9co&?EjL8TnkIp zI(#!)tetoIR7&yDCs%!OcOQ3!7vju}I{aQJcl_uT5CfV!jUbq5Y<9E1IplY{@bU+u z?yKZHpaiMmf{=Skc9%x=pHphbt@qvI96?k`de!f>Qo<`wS&kc%WW93&>WYJrC9q!st*H^5UmO=eEDG*A8>i=*2056veapRGs_#DE{!LZ-JaL&D6?8VR+LC zkzc!L{pQ`NWpd*{PssLw zY;$b{faTwEK7yX*LO?!X-Z&Bfi||GKR75kt6Ysi(X6HuWzo)haIUCb{P$Y>hQ^5cO z#H6N`XQ;x#G(yHFu^{tI-PJSWKpzoMkLMY28n5UysaW|SyY37!ArJEGvV-9M)-~{t z;Cp!yRIt#7hSs9V0ugn@BLLr3|LI9U0Ex?h!5iy>Uk4TjNG_|?AdtLg!4bDlC5+`R zTsLkDua=R$BA#=Il3|3C=)vqOX9-zO-5ecjESC?h*dGv`Qh`U->%*YVbR{SNb9)k$ zNAEC?x0)hX?N1{@?v<9qC*Lc^J$W2>Nt z=UrXZM2>ZW;TK>4+ZBp#U?Tf{PS2(dy|B-{1OUNoyde;&(Yds{EcJBEq%=*f<{hD= z($DO*{`%taQ6YhqCVCxySg3ktDAN=Vn6ql`5t>k?3>O#g4?H3=tKpw6o{Q3P81S|6 zNKzx|y*K%jk~V$Q`SY=5sgMN!-no~&HjBWm*#f+zt!XL6L?BJP2Z$Rz81kfTm1dJP zC~dzenv<*UaiwnSK~#ZyTFFkv4#}NL^vn$5Jav zC$0CP-Ug6BCQ?s7v^(j4rOM>{5SRU2&waq=+E16BfD)mW?Po@BV5|sU!6nPRJ(yX> zQMWZ_O1|NgIOKfCx!=GIGiVEHSaVm;M%C*GJp1c%V{Ssi6>4YG>+0)(z_XqI0bBTM zgahn`Q=n)z>b(gPj~Gik{MSG?H01y`j@ooNN%Y$h*++ZSyED@7$m)JQ1Cc|pQ+~aG88VbLjA>i8b1X|m{aJGQBshV3$)td5QTlOvVcWo1 z26#puxT?(7X%#OwK2b$H){R&QB%mR4Ub#-!tXr?Jjdaj)-(kZo^VUjIi`=Z+ti=d9>6|CaaL^Q)y{kXYd+@yp#L<2e5MSW7VBV(D`QoKz)%SqdcDKdHi+?~* zaq_z_eGvA>sE3E61?PJC!|5QkJD)+uitrB@MLc0pQ#+-%zwZkRY}zGgrOa< z##OcHYHw>jQoj8t+4daWRuHV-c2se_R7++c9x6+^<$NSv8cwxTlLfzCTPS+Fpy;|DJ!GYUc>c7{h!kbA{ z{N{2EEJdz#J`t_ce)dy`_MWBfs1*fUyhnlDqg%{JkuAuZcUY4m7V1Rx+olUx-gHUt zzW58BBO4mmwz__dx^K=*-mG!i=hn|{hfjlYS}$G6B^M;TGs{Lc?x~jhcVEg-z%H3A z4e(l)@OjB|-DDG^PVO-HsCDGT+$??0|E*l(R8l_q%HPU_6GTFHK&H_&V9A*3M**Go z9ZzYen|_zHcm1anZ!!9BAp(s&;#Us^8ox>ntzq`l8`g12kkDR{1H2WNr8|(FE6z2O zqxz9;)~^0q$K~!^i1@ijOO$G_O}YOr=3|)SNSWaNTgH}z>aY9`6pl8wPvajey+%!* zi97JfdXUx^a}ENlzJGp4e*3XvEL=jk;6}FDnly#mKXn3A7o~Elvut!{BSh${U`iDT zXm9x%9Eb`aR^kM6!&P;<8WX>5(284{=7dVAVSOZ8J4>OXd5a>_pRZAJ*gHa}fP;Qd8w z$a5bEzq92Rx{l(~tGJk=Hu^Qwv#qi*>-5yyGB$mh#_1ru5}NY%1jPRxTpMpbjAZ&P zR7>PAyV#xerzQm*U-2kUBhNWl?|)oZa)po?sQL*Y~dV&GLe zbHsOt%zyUR-IxfADV!{8wJK-(rr~VtY<2bSnaaQZ%m`h`l)s^{@?%R(qyppc55B%W`LiToo-wjFhr2Oi-=?$b)JY39^h6V?s^n;@V zx5|RYW`_88t^~WS^^nUCGTrm(0$Rje9iAaIheEw&nrq2=S)2LW&>tyFe`MT&Bv)yD zVzyeC>%+WN7+!hs%PJ?_QJ^somwOKTWr*xu6xpj5+Y4`2)*VdI;xhOcu$A`m_Dbes z$J4g&LLh=c;=d$6^rDEBEXF87+KFB!@w{o|iF153eZ2U!5XMz?{1T%v$J(Rju--%j z_@sjOc{+3)zfA_McPhK}lysVW0KTl8RvzdC_s8#pftwMw%Mle@Uelp67&~*B@+W<& zz{WO07j%>g41#Me4nj$o9_pzyt$iV#D(44 z0w^G+XWJI~2fhBr6sP29%Bf2uy_#b}~iSy)%j0PC$oKC0#C?IfdHpBH|G z$zRcI3h9t*7XCdyzUXCw-yzqDh%4UBjJ|ICv3kBpUaKA?avRAxN3gpthkm#y$Q8q| zQFq%Fl<6{maCvQj?jpg**7PV{3buNKV4=QRJp)boe6n&Mm0oJwlI~J1JCgz=DPhVpC1PoqWKAOmXZjgfH}bi_3Kpz3Hs75Ka|^I| zN|5FX43T#3x=ohX{2ohRo0W?D{r#^btXPtMtK`nQHljI+cGtn;WM=I={96AK8T$m&KTC^Sp=y|yn* zc;5RZ$c0*FX^UkZNKO9hMM>)3CHG!L`hk}7PbUaoWbS&E_<2Qv*Wa4=mSq9H^wVqC zz*dWrEA>-6?}<;At`KWn{NNIITmGk9>L$iQ-tunUVv|W}wi?WW;AU1Vk8%fYAEM;B z^5@-o_Yf(yco4Jxy2fW6Tzc|v-s4O-dZga6u7<0f9{BX%-q;6^=)sp}7i}PFthG*w z{SD>mnMwI6d!~@R%*pxCQ2pU=OeZgERoA$UUmUg3$Bk;{gY_Ad8|@bLX`yVYeO5`} zo~&G8QeXVwpH$0{rWL7<1HpB6A+G7wuHRC7N;hj?PP{id_L;?;nc{7D+oy7 zDInoHC`UWmbcmi#SL=|Lp$4_@`*S_n@1O?o(&tNR&KyD2T|Kv6p_INq*u%cQlvF0s z&Y_Z|vebI3pFwMK_U);x`{15CQd_S7SkRu-Kc)0$E+_YtJbR%8h2+93AaMWg{|TI{ zS3c9T*M$FYPU6HBA$I8C=-HbhNY&v&zz!-4HcVFh8%tMDa}L>abdZICKtbPk$|Wc1 zpgby9C79M%*ZWdfC|vbZ!#xSOaW5PsI?*)O;WXqD=cl8eBA~bFnYyoRsin2*lmDgx zcR#Uq)w4R4Wpkh5X(U#%Bi8X*Nng4PSD9r9X6e-M!~Jb4F(MC=wHYqDpgP%fOq2Dl zvY=RTYjBcr-{HxiwZxclUdf1w;r;e-e;@sRY9ema?T*{#{I+mndt7{c{7(FU(CU0k z8=o60t26vHt0)EeAQ+Fq8Xwjp*{w&Y8ENhyj%%A|j!SvPG}SVXe&;THWf@IOFKVf| zK#a7;LaX3(1e;u5%wUodNy)B|J%lIxO_m(^VSiJ0|6B4RhnbuIx!eE3I6#VA*Ez~5 znT_x7t~(mVCQ?k&zG1Fv_@Ua{(Z~NYfB&6V|6dsL|Je!uRc!d574<(W>i?G$0v(CH zR@M-p0dh;sAdmB4wT0?u*5k_9PW%7V#KP&&A}Pcq!{86A67|=5?C*7NfL%%L^j+) zG8*&LM(6P_9wqZRB;cEPYU+Z95hOK($&o)*K3djqw_3YvDX2mOQQKg7PeG&M=rjny z!CIr|QVJYkMad~T%oTMqYMOT|@KP!&&~4k8s}V(BJ$hI}FLmQvgO{n8L1kqVixW_RY^lu_b`B-$< zk_4x>cfI<|L=3|({52YwoA5R6XQ~AE8CcYML+4s<>DYBjGABUqDH0>)J+gZig?^+a zW|GI3&-~q2Fz+3~P0E(aq}V0o$9ee8i*YlLgc<}0lc<%XUr7Kgjyvk@yO;1xMqdq19BKM)W)7%Rmv7{M?N8(2kJ zf#_i~a;EyDF--G;KlP|eJ~4b+zP_N;9{yK~?eAIAM1;mkVLh6&!w)Sbk1=ND<-|7p zjrRYJGmB^m2AX5s=4LLZNOj7=$-Ekh^$!}Mgc}eBdX{?VlLb7lyAF^{YuLwyD*mal z0Vo27zgLm|Rxj!TP7Vd-@uOEgFyk0?22aAC7o}1O|NU_eP7+EjFv#=hbq<#V8zCCU ztWk@;{l7o%MJamaNJ&HM(0?7SNhENI(g%5=#{d1X85WDES}Hxw(ds_9RL2XrgjQi+ z(;?*P=sJowj)y1ZbQ0kI*ZE^2375#zFrNVR#ebbeSuw}t6nkf|0ZDZ9dl=UeI=F=T z>l-Uaiwg;z0TQ7AV{K-KLQvCxrvxsg6$+PN>!WZ+kPrX)IETrTQ1ylY)_>1So(x=q z#60lkQIhEJ2Wmt!D)us1VoB~OTS=urPJwCSe?KNrdULI=5hzs?`JP2{EM&iLn6C2V z8_o}2YB(QtGzVFn7;U<$G@Z8hgkPni-CW0N2+i|$edW3u4s>^`@S8N*U7Th$@+R1m z##oF5astC`@MW%Hlr1UCyV^a~C&R|3r2A+TuVI?R>>N1fTuQ@=Jzw0DMqw$?DuN(v zhGB?=mKR!@E{Y;ATb&M%uZZQ%$mP$J7<3=@2PRE6qRG!hGreE-Ygee{{hKH-O}MIm zL@1jz@E2lsTPW#oDSX2yDO67Ww?ys-IH9fLQg8x)hgW*2sX@Cwk5sN7TXjQ))X*o zCqWZJf<=KN#wGWbB0E77upJUK#?LxET(6pqbA?8mF&25g;A9mD4m;P63|g8Wx{WLK zd18?4=K)#P&9ub)c_raW~q#5-*zU%Brri64!eOK0gjs`alCJ&FXBFJJ3uZ(+E^RR6%bvi^&2 z&8?j3!?i03@inV7l;gNx+GYw zd-;qNvd}3&W~aaUw}aH)M7`E$d;0r^?hmdbPsWHvPIWrjqz`{xTa2c|3}qXszw7v= zN%ywxILaMlpJr4A^BM}J`m{Mn!x)O6X8OJmHIzu8XZ&`YZ{yMM1~crpS{$I#V_j-%9eD!3A#(o^9fs9_s}*= zUkZvyBWieRz^K1`pu%N_75eP;I!8bQTf##*L%-~(Yx#nnun*v)A;y{w%Jl@~EdsPFxWO6XzV%I-}t~!EPfomd$itN!XH-06Xm&+DGl! zi-&=?+6CeLfY0aC!((p|Il-Rn@@M}m+$$p14qOgW<_`Vs;5pS(jj3BMa&+<)1LyY> zF0;*MB%&o_8cIyNdmP3gm*R%80b#_4&^zYzlX4^jR|i>OvWkR_mmr6D!+kbA%9ZE& zIZ6sW`(8Dnu*pz*>5m|eX!5N~T_?RBC+s~BT}W|Jj)KD)Iy&N^YNj2@ojc*lw+EPG zxCv(BGg?BTdI)^krPsAH>qnN=aBs~%U;4ggob(ul#Uc9ryvLUJ#jE!{FY;Q&#a=Uz zqHXUpcLb%K0j%j~FG=4>C`}}|uE-{K<6WtEy8wAWp)hk5$mudC^wXQZWI<8L&=^0G zH@#r`&}pPU*_2RIPIFG0`|Ks08wp@5$H~jha6^q;Uy)P(WDS+<^L1kToVs%LGBr(E zY8wn=%v&UxB^6AypsxK$auW*Vg()=vA?&7vY>yS_)7g%Kw&pjzy%jQQ_rBMfi=Z=E z=coszx?!ZGzO)BYVO0QHZDwr^K1Yr7?9aQ%0l^TAdW` z23bSoN&fI!d~7^a*Bu&T&H1a>y8`x>(vAi4cHi=2FO>Q-%6oa_VG%6{ zAZOBHMRKy97T^)HB{iiVFJNd_66O?WrolHM#aP{`jk)Puv>4^Ivo^a7oyJx*x<7iw zJ^Dz#EP9%9;?51qHsWZTY@1=wcp58!%>43+^EdGia2(&?d5;4Uq~|#zvN<+nRn39) zKXRo&kFsq{8{KrdVX^ndaU>>9ADW`N|kB^ktTTyIZgKJ2?PN0=!;v+t7{{A z($dneZB{m+w9qjvs!!1oi!85I!77dcl<` zz0pv?5|sAbzK~TIiUI;+r1@zft_Yg2{ixZ#|1I3+auEys}ayUDi_4^CE zLo&}d_o20tljJ)ot(xlaI2z>)_qEhghgWBg{nY}XCJ9f%pW59V-E=3BYHk3$0GXFl zy4;Vc_Qa)K8B=V!bTQmU=o2zqAX^!Rbhs*15L(>;2nRbNy;`f&93P&9^kDgYw@Ne( zC9A|1Rrg1>QV{9i1G!?hGNt@2NPOeH!~0a+E-W}=`-Nk-GBC?|@)oYXG7i#gbPNDH zooog?T$8JG<#H1CJpob@6!1i>Q<#qj2DmlA14tGOHj;Rckbd9`xXir<8M#y zdF-z57T!q|UW|L(_UOgk6jO82J{?D$O(;)1S1JEUVeV92CmH4nv$>ZwYb6>93aQ5Q zLW}VJ%eP~gGKFjnZ_(QFxQv6q(+%TPxqR!!b!r zl}J}@0nUiJVGn3>!>>{?4El(34j^#bz%8VMw*m>_uO8lM*^kOtynjOi{5z?pVW`aj z^^?uT1=xJl5Soy3Igq*Y~?niCw|fR>XR__ePxNB)sYKbJyux z(?qumEw=XFzX5kEFtUlzB>VwR92iuL-U|wlzx02$er*WhgXXJJ^mzL%)UUGzvas06q)1Y}qQUBIU%6S7U z#wJoat2Q^BKtMOJcE#^1Mb?ZI=!qDQPVi0M#bbb;p1q&aPo7TGkPQtXCavEjNRJQwWXR4qk%ogf$=Zy)TR1N8 z^7afBoWow#`KEpXR5~DFjntkoh`achiiQbgRTWntRbi-l=82)%pHd| zWX&>21v93FquQ03KTtp_@y6Qn0jr{HXR{@!TZ)WNdzDH^C zyZ8A;2Vz7Ccvc;RuoK99kXAQ zE>Zt+kFPucmHuXB?c*Aha#yNTqq+kp@>@}*#Z`YCr6=xGzq`A`QzrPxaq5%0lWo~f z_$YPSb&p5egf%5T`ftb)8hu3m@C$3-v0Y1c=g3D zsJ>xNXBBa|n5*!oPy4Y#d7qZ~woVsx67MP^@A~KgXt1z*V|kh1DJBLzAeY#gSKKCG)f7Uz z2w1tx_ddX*d^k%jJp3uyI9^w~zi7anNcEn;(DUxcvau;`udcmM9C8khNq~7K-U4z<6S- zc5BBHNb5;q#>?TGbT?9o`CWIfhT<{2Xw6kLm zzhn6{hwloY2ev@KaK+)tJ0e8Dedzti*Mk>j_DYho6%toBx^D||@H}JhW6H8MKdD6C z0%~zgA=jUSEvdCi`RxVof9E;rEby@N@Ci`LlHb9f|K+hUr)?tsj%Loz0s+o~Q$}X4 z^8U?}Djwc5Tn_UZOP@wwpUP}N+D@)5U)J`$8;gBPlEv<(g&k|8?E}RJ3sdeO1OA(@ zq`O9dQ`w}4Hmob1^1E~(#pJl+O}R|~tX@tdXCLgsp+9T|PAIu_V3MqtvN1^^8o{7wKBq zP&u6T=V>Q1E1E(l>`8Wc@pPhxJMC+MTcD>uiB;VgmjuxG?H9w}dlp6$+zYAx5XE|Z8%3RuaY?@BEn+OZkU(Ji#++5%(HLK?pK- zD_d7NSwxkcs9a`fJ#?H^{poPN~g3psCtUo z&L%a*W4+5=SugYDkH2JyNP=K6YHtu}A6l>rSiwNY5$EYG=xwm6;zXR!H#$|87M%bN zotnFSxagq2r**37E~~m1H^oH;7SWB}p!!iOkhB-6$}KP0Xw}pIz_ayLNlwxBLzV^( zZfcGGngEOFXEJu>6z=9B+y@Gp79kr*UftT*0o=meaCUyo~1@cMcj(v z&i>By1^Pt%upn+M$jOKpV&JhI3)X5@e-KaT(G$F~0_`rp6-Z>h2|LR>+;NtIyJ_Ge znFp1y;Rf?YF(}9i{w(3+Xt}>?8Sgee!5K|B5jDg?)()%i=k92qe0c;;Liuk%Sk8Z8FCTM_?Z&lTI_}5b`o^h2 zrugS24Ei$mOda0lgUU0eg+xNU7FGG(*X1@x&k4?dw-B(bq`|8+e|O?Z=vWCwe1iT) zZ3mWnK46FIwKCKjdQz@xg&)VD@$j*m+gZNkk_ulKow?bKEF;1M9ZSFz*cCV1{b3Ph z&DPCJU@Bxa&^6W2e?}7LwmAkR9DlKM5b0T3mlKd1Tg%t#Q2Idh`sRCPf6-^ASf|WK z;~z=X)w<@cX*J5mlX2j&N=k7VH4}UEtPF=G*?rCrdLcncZ?D0?v)|9A49NFaDhXZ< zlbnOW>b6=2fj8pR-FEuQ>n7)`>5RJ#{}?@EB@0$h3_Ej)uY>yi9YvRU%P7Ypf01uTB3(Yaz8NLg2r+1JY!jDH&|D(t zbY`M%M#PVjoR~JFhLqDWQzXOOOS+?jPeCz0-&Ek$pI3z6$u4v#O~+hj#!;E#jz^+5 z)>{|5H_<<0X%swg2-RbY1J8^j`4!3K^5VYYx-+&0(hlvVjz(j?xL%c}jT(#c|? z>36qXbeajlb9~*=-zeGJ&$}IOt)%{$d2%8>?{TB%6`|^cvZ&*sD;84H4Am$xqT35f zn}Hdn4vhNEISV>{5nqeGmdeH5V(m=1>hiFk$~gT>W>;%W-lBe*8}`KOEJ|nkC*6{~ zSi8RM`}?!f+_l@GG^iZrq~}qAy2O#?C9hnkbzXSax#7r#2wc<;_53cKn@RcT13}$* zfzu1g#|D$kuz^QOY9Zk=k~_7`9Kovd6$?8o2_>71lQQ|(1KMPej&+v{AuS;qCL5G; z3r&NHh{HlQ;0Prg$_n39xsvcp)F7L&CjAePVhb-y;KmG>T=in8EU6e?*9lG2c9~+% zBh>t;%0n4CPw;CYEYX7S%~Z}4vd_YpIFdpn-oDluFCj9vx`(~%OJ(lE5n=Pnt6Mp` z?ZLzKU$~Q8lOH_lQ&?#R`AWl0_G&ZoOsh0sO{q2Ob+wKJY? zy|}ZnaL?5_`El!LB9CQE;%z{N`?K2#&EB{6-3=G8T+w2W_@HvBY`C&{1>*1DXD_W= zDl5O}E}rExtvjFMI`Vu#shh3Ac_dmKk4R=@gG2jFk?srhUSZgjv3$10xH>RSYl6A2 zHwVlMUH*I;ch`3?mrfl1)i>lmMb*KY-9Pc3jZxDq)*?+C2X`Gmn(>B58Li4CbGo;d zdPH@0r=@V@9Cv$ORW~(cE;_fINdKsnN9*LjMsLQV&*Po3aL?C5IYSjc3j~Oio<@-t z4%i>6m7!O`tIz(oS5L|ag{2e{>9V0n5G#@ zX^1ILATKs84X20xVyI-7zLYdM!#C7ipN}7l8|wA!EWb|)6(-I|vt5aN;GWc+Guf>; zzD{fFE86=nu1L*ygWFWpP7<#fHyOe+-Xd6n7J@H4r9K1>&D-Qwei2rjI? zdAsv;dE$_RU1+*EaPRhAT5GJhB z5zo)Ro>RM5c<`O%4Mb^b)~;NA*z#%%h&tz@{+ye4VUgY52G5Hk(P_+Yq+ldzMl=~w zY}fq*8FFD^XhdF9kIxtN#d%WhM;co8O6{8R{`Vq%+k&gCH6y=F=v4*~d$?m)^3JUA zLB=oT0OBYGH-D1n4JOmmGzOo7)|XeIHM@?yq3#DoX$CixSn<>=QLMgUyCvE@pvhX4 z{V6U=C=cCBT_3%IQ+zc|`x3MbS%&kCxt`Tr=1%dg4@;1^^<%#E>bu@6IodFp!p>4i z2=Ye~rbngfui6J*p4F0;e!f&J<6LANhhnpv&l}#~y=Q1tzk1W?g z)jAE_SGu^6&EBY^HW=k|=A^CP-}Klg^XhRev84fvQHnCFJ3&Msliismk1wR!;Qe-G znp(gmWJVz{Bl5Flb2#frH5IqA7<6zJAr4RaMJh!vy^{N5=@-5;K!$g{xmZNy1ha>= zfqk@>e1Xc4_Rd}HN6$Q1o~_#Sh~GVbRp|9vhU_eCGW#F4ub)Q_Tj*N9%TxDnjI#H8 z?Kze~A4Y{$%A?be`O5Rg^>2@5svv3e1Uc2@DqFt@Y9C{2yt$&F|SK;FRXhZ9C(T~*9dZW%;kA6ah=B`Fewf#l;1aDlh^OR zdp>F+PDe*qgLczXz;>=jg|3=O|}vo{5hU#}UO`25marBzx!RfnO->qTOaOgm9l zAGpBsxPGt$HAW1tKR}Vv%hq} zg&zy29%05IUKx)_njqe|T6&w4Yu%$@b_vdJQy#w^yv8m~z4ZQq9n#OUHWZ(gMa1Op z;Rnj>A{?a58`Rf3JqO?5yA8f+iRLU4IyMXiHCKK;ms!Sgz)|zXVol%5{>AnIsU^8L zl0CV=e=%iaZ=NGqh0l-mf>lS7Xxqrt*6OeBYDa71^Bl(hBz&gF`#72B*v2#-!mEuU^$^-HFx|>>< z+g~2bl?>u3U&F8vhMbq70ctFe!sdkYqRk!__|RB%fo3T z3BU9;oOs{EdX$RuyR<$;b|>pyVpo#)o+@~6<_ILxK)V!M^(*iQhu*`19CxCMMT=tMkR}J4&SY!nn@Svw?xPviPDz zR`+fg&` ziZAVd)!aRouF)271NaHflYdG|o>cIf37H90X*{#`>M`!9R9EfxD0=wpsi}F{)3SZN zK6|(GX{Pfrgaxc76d2ahSD~cZA^Q`)cP`+_?M<6cH6tWAGTFJ;1*V1+8I#%6 zDb^tqr0P%cM(JvyO;@96u5kIvp)JX&Ta`ogh)c^qINiC@t8W%fh2koss^4Ffa<{6Q zW!gs<)%-TtGEtH@Y_=|(d6yo1$(td9hLum*i#V!5ZadT@`J`Lig|3cr@y7EsjoJF^ z4?0hWX|YPt8Oh+P3Z)MUe37YO(PKvH@(h@&Z)GkR1M)zMXw9*%0t%&y&g$N8iyy7zOEo`vaP)LhHlgK zw*_V_tdWWVUvtoM^HT1N)LcWcZloMeS3n56pD=-9u=22c`xnGqFlb>M<%f{ zB?Xh#13xmI?|FoAE0x9~lr9}=UDk7MUZt&)r{M}dZZl+0SA~b;Ate5`?uKH+UZ$}v zI)@b$ruWu{!)EwNKYOX(M&r?%Ca1jK9UUx}bWc7VTXdJ7Sj;d8Ju`2Ze?L#1rZ&{1 z^rkUm{YJ>NFpEyK(ungbO6FHM)6T}{@Uwi;3c>uWXdV))@bn96;g=JJFz7a1el9)5 z($Hn+C-*4Ls@@I0P~F9o7fIQ><#*8hngUxQ5{Gpbscb}g?wF|gGdBCDn0+?p)oy#y z2L|{b7#KPU`osGZ7-cPL3^6t2kkF8dn*fJhQ%btjdJ*@=mE21YLQIFKNQ__o=Sr>#~~z)0$TIV^g`AQ zsvg%cFT!bvlODKQI#X$8JHP9SRJ)V>7y6V33KR2PrlxrU=IT~#aN~t6O=tReJ8-)l zF6_$QjSsnabjd1F8ZHqQ@o&d^rF5(EP}gvKr1BoTOPQJ{o-`I^iaUYu?+x$=6{}ReE}S&WRSzxha)2DtKav{wO@PdkBO|6A z2;HFR$VNt*D)6mb^mXr*Zk}ER(IcoA3ln~{xT4RCf=3BLSn-!dx649ml~qy@z+c7m zONlo};Ia;AD#ON4nL2;hLzB^0DXHbI`xTF1bJRg6^$=XFTIEnYE~FmzeRb)X6os$S zLpskAVoW1Pxp(Usu413)-c#o;@l`;XH#f%Z84&6@g}~t#%{VzQ>&0c(!(zcGOY!5xUTYf&&y^*>a+(I)8IkWlMgvgmXDo&)> zgQhtPp;nh7-UPHlmLc?=M;WomGU#k@unWd+E(|$-ao^o>n*)3sbK~F_1=A8 zy(fq`{rWDs&~F`~rv3=}5~kdzK)?t7mdhIUdzMhCAFO z>b{ewm%`wNIzH%>32n|^$r-*}&-aSpe3~tmvb&wg)aCPX*hjk@9#sw=^_WqXvRT`L zHRV2zKS04hDWg6HUi|9UtT-y4!zp`*6`d}Zy5jHcOqm@kGP;L>4&Amry=@GI49S`EDK8 zD)_aQY3_<@!#OY2NtTK4LN)l(!wgD>BC)b@x1MwM^5jSMr|BxDsk!f5e1-Sx$HGQH zgpGEFj<4zJ?OB@%XdxxVWfJ4%va*QY(B!y?JUHu*dQ2g3##eF;Wo_)uRD9P`tehot5Z%6?Cg_xv$-5B66Z1g zA%vd6)CG5;+vY_{czI4V%O{9n)8_=}B1#FqU0QpDe*MoDKaXg!7cjkw@&26spZ5X8 zg~ZALb0>kny>?c`PTKf7?b$6DRsuDBGL3R?+~XWba)~t_$EU;q6&#`(2(*bUD zQMxY0qSM<&JHUl!cfN*EkH)s#%OTaf+IcjiA-;Us1_ z{H?=1NFWUP{gP+T+Z4~KMwf7Dri+jJnG1uER9MPS4E%!|1zjWn1N!lXCmdxo) zGd_zZs2~qIfq-SQ{YKbTPya0K&O84_)vYWq^mG2yze8EAY?2T832(~%6LVk=7MNZV zv|l9^xwByCwUCyHPjNlTtG$%D-!lIFGm=vAIQshD5vf=HT`eS z0`hB;k|B{1%i5e-pL2<-;_J4IM*vdoqGusy-URoLa;RS~*t+(!tf}|{skpoRzYpLU zta#|^M~k!tq==;Py09|`aijaxK7I|SnYk%8uv9wGmBgeG%!m zyK_YUmE`*WQ5gst&c1B(oybR1PUhUPrge2%XA(X(km)~JL0!0}ldR2stsI5>wFgV_ z$aQkJQONS}XwA=W85uU6xFe9_fQZAAmNKnJC?l`1%M<4_hT3 zO@hApTJO*Lm&oOz1QChD^BCm_@RMvL?kc6Gf>z0Qa9x_mWROhWxCPly!8}%jvs*m9;RV&ZM$J`sVL+{Z;FhC2we5>KE1d+_i_tHc@Nxql2V zPJaO_(@#F1nRkchGgDF+1Q{FrMw3%ImRMCu8h9JOWH5-TiK5=+3ZZGx3^~1OIgM#$ zdr<=axfAXT&SkNpmvd?ZmE9Of5?u@rlL%OqqLW>sMLbj#smj`n|V3Rvkt7wHppafng`gu-6Awj)~lMKjy&{z!W+ed2_vsY;siEPV#7mnRR7gJ zI0DhxcN07+HpJ|G6duTmtU2s-X|mpFp()})X=Mqa`Ord+qNgj88Cpw^KF5rhqNBE% zx=NiUTipQ%UO|%6hIQM|Wu{QiC7b(sYEJRCdti*g;jmRU0M-~T zGAgbNKF9~=$tQW_SiX6Jq|>q(C{oF8UT?D)X47e` zf}tS#YU)rap1;{=mfe_;>qv2t)iL#ys;-H{L)4coAX5$d@ET(wH25Z*VMVx-&IID6 zJt}6*6(n14es~)*Ps2&=Q~z<_Wpa*lziW;zYEZn4CkLEP4aC6&bg||!(E0SXni#?r z%Y04m4evg^$3Co=H_-=g>%XS|H=id`@x43`@3YA~w+?%ymC+B z3(xUsj8c&h#q<_MKd8zw%=Xcm0FSc&#;bKK zcYWxfO`bqiAgW2h@wjKD(uT8U83;PaAjF*zc}&(WU#P67sRh`8uJC+LrCn+aibfHgB_1gpf?aB9(#LRQ=IdXEe~LpFQ0x;P%wJFMKw z32&Jgv(7M%i+#EX7xtoxmdWP~N7$DwZ#Y9CB z;HQQ6^bGP$j|7}iFfWz6r>+P~B7)fpyJHW`QoKq@k`~oyNw5}WB!eqPaz-4E9x$Fx zml0f8^yIZR zOu5r17SVxeXyeC$J*L;o+S@q=)%%neXr4IZTcT3w?o%T#Hpcb2|L6w6MMU9J0@5>! zN?%rLSbs*8MXc_RHolIVW+pLpIOkEMw_uP@qyU7AC zz1E;I1wXX~d)Zz+NDEOjsK;^^okcC;WQye&>f?!O)8Nt}S-$xTAYzs*M)g1#6d*wK zjDFj_iN_l1L5uXA5+|Ri#GjPu19{?99^nE0YZX$Lg};3D0Zwo^LXH$W+Uz|(g!=c_ z96Y$05;e22`eQHYq{bj8ovA(;UlSSKElPJ5=aCqve+dtNrPjeJ*_m7aODZAsTtaOf zY%K|`0sQg8jxa?NyBa>DQKa-pZwlk=`Nsz!TsYc7L>Y-HfJ-JOf)n8JAwr3w0V0u; z_G^&LOpFe~*}L1TA`zN%iJUj4&DeSRigzPQifl<~MQ>$v(a#5glFy(@m|=sC3Sj`1 zACtZiT+5H=GgHF!Qnd?=9$~zXNPuIZXQga9%n@*-)zeAzpTK4Wz2glvVVPY))xZkk zSP0xMXVd6RgS-9D*~yJXE3D8Hefj;>{T-tpj93woBI*IAPcZdO#EGXX9V_f6=qkwb zw1?MfPJC(l5h4w!H>L%L&55lTL@iQERsX6-zcTh69tG(1+tUONWJomToXCP>S+Z0R z7YSKVAdY$YL|-+~1g98s`y_PBX3CJW)|wk4_=@IaG#QxSDw+5tU<&wsz9huqgT6Qj z4|{7+ys&G!Lpqhth`OkZjhi-DTty}5adG3zAoI64UC!>sbw~z}!PCsN5z4G_r5w9Z& z`za@@B$G1p*$*~n;F`a(#L=eCB<6zNF4H`Og7rD5Aa(7X=Bo?`x0JdpUK#%AbS*b{ z(m<+BQXl`GM4O6>gl&fVjqBkX$#0QcUh1OS-lgmG|9lI4p@X7H3?z`tW>FRMXB$5d zbjD~K>E3rtU7pvw{}d2X!V5y>3g5d`946{^Z)CKC_04ym?4t_(f-Grjh-4L+ z^lQ`Eo+6p0)Z8cLr{X*-tnG*apYZRS$ayZAu@z?!Q*}pTtV--O{w`RL@ z-tlFeHr3^qzi-X!S~)GjP%N9f*6nz&qTa)UH%!m-{+;@F{u$H9YGUgV+lN~upNd_x zJdW4Zr=)d0!E^HM&35}$Q-;*2-%kSJScab%pEd4P1h5+9YpG~Rd&271RF5?R*~e=CF*y?o7i%P} zb``P|KP%v9-E1XG8g_w#L}A`1_Ed9C6*E2>rr3yUpu)()A6D16e3|b=aC$O0Ryf~r z_4FZrN8dH5r8oKmBna+?z1mh@^#N}AlDSWkfkL|Ko+E_zM*F37m+})D&~=evU0xk5 zm^?vTN!iDs1~|*F=?0iu^*514gVhQyKX=nQ>fBLG!ocNVe@bbqiz-=m&nkkWmylgY zDQi*yPhdyx&Sp+n*yWnBM^)2#GEW+LwT@o~;uM=zWgY1!4CSD9uBb}Uwqpq{jaTj* z0&f5K`-M9=?>mAI$ zr)yD?oevhxj1T!;i^TQSf>=J1$C#;imO%$-fE)*dwy}{B_V!q zkaLzl8cAb>JeP+)P+g`H%uQa1eqoTpPigV8njy7PU8o5eM)|DQ;S4W*xMhxwgGc}toXPF>mgHR>af91RB9c-#4a$9;(p0Bv zg0TA(a4JUEYd*&PvJB(pYi)aB*;l3|m?HM9L@*_-Serj3c_*m-v}B7{u8kEwas&GD zi_MkM(ghoGW|nhI%j_i4lzVa`Qm<287`*StN3Pa!e{CdclCNriD>^tFG_fIZu*|2V z4azYttbroJuI6ot`@ib3$s8vj=_-ss#gA|mvRKVw8I`tDUK?ZnzOw&m)DfqYbKS9b zxlFd6njJYHEeVGn-RHT!R2W8S8HhUF$P)Shu-g@x%LRU2DTJ*Qo>uX)d-_>kRT zRI=sqZSTRXCpmM|o@|7Z?4Ac+IHffSM>c$vmmbWEVVs9g?Bd5v7%dvw^4b>Q?7fZ! zNpRC7eu5C2?^K{9B~IHL;SDRML@{uu8*h1c*j!Wpi2ckvHI*bIYShABB-5N$b-c%c z3t=G7rB%Cot8Wm%-ufm+0%qx~mcB#G6D@&TN<{vW@i_CoT|N;%Zbb@#uB5hC@X}@% zXaF8gz<;`JHX)jm=s;T8!K;?zM_tD4Mm5P+?~95IusyY zzIOZGUW+u9jffDGL4WzLUKl6uf+>GQWgXRP!zZ<8@!uq$!%tlv`cZf7*=b;GO*AyQ z5g=%P-H_DNcq7T_srhDAr!yasQh3y8yX7{&tLL$S*RQ3UZEIG!di~stjj7Z)bP@QuTQZKlD_QgdxT$ESd<&21T3hh_lala1J zj^D%QtLdy{#NRivR_Ak#3Okk5^S`d0D&ZX)1E^>tXuzcF?xY?T$ngjh7B+N^ThW4q z(zIQxSer%FMm{s{R&gWigEfaGx(#d)IurU-XcDt#&O{VAAdf2VZ!6glud!~CnVa_0 zM4hE%0OERy$~4Gdb6HRne3rY;2WtgcN3xNU$JJM&-995T9boYm)3AKTX{oI(V|WYs z2Y2cCMkF7-rr0waIn5xF;;;s;+lQhLWYyS1iAiE6E!fg91$<$ zrGlDj(f#?9aY&43!8QHr&f!L- zq?94{m&^^blPAZe_#0qCI&=_GpL+9nT4HlA(-nyN$p^FCehY#C!X;L(^ICOW^~>w) zMC>>b&U2zMs|``;W!8?DiBKz!BpL&=Dv-rK5q}5Tdy{-afXR)Cu6=d}k^P%gb`3qsv7qB`u!?iDVBCwR7FIYM6x;B(A zH$hYKsGRk|FQ6k`^ws=PD`{ct z(e0CbkYXdmfODI69BVUIl2j&& zQ@3BF`jQHB9u6YiP-b8#SxEGr4iy>$5VKrT3+j?br;6 zlE;U@Vc2F6p}e;b)!YnHh3>#Tt7hJY>R9hDCm=FD0^{UdKE^MVq#2q&Ul)#nD&Sc0 zk-6wcQS~>6vMTkhm;<0AYM=FZxU&lF0mE-z<-`pVz_;INVK2Bjtn|<|{bkI?1lj6T z(m@L6MTOIH@(Ri}CP|Oq+=ptDfp1^@6o2kg#AN4ym26k!*0d4(S$kGo;#AiU0;WYb z#b7eoGN||7D21-~Hbf3ax<7jDpwV#Zc^;)C$jTxjCxJAF53|xs%H`wm(E=gam!p9EiDkleq?+w zGB~z8{PAscl{>QU?uhawAyLPhFjEVsXVFpNdfU*g5;0=O=B2uP{7AI?*xJUi@M)Dr ziE$8Xu>g&Nben}V&g8<223Kx$3yH`HgD>f!Y&Q)QO7%jL$oojY6|0SbB6cL=GU1{brl<$wa$AfnnXU8eI4%)?(E3?@5<-Zr5;Mi2l%utzlif3 zSL_k{e(p4kykj(BICs?7?WoS&{A3Fd=M{27*&=KP*7cMIg2)F6Hv7G>p*x0^ z7bmJ)*m7>NikcEWO)YYPE3IUFWzZuAv14KlvEoN$z!`~RpnCI7E1zO@*;b0I1m}P^ zVR~hftuCV;Y`(fn=0+kPN7<~7*Uym~d?VMx#$~$x*_!fAZ1aHi%VlJkL$acr--`Jl z@*KQvQPe$6iQ*;w6ii~IneQAT$#w<3Neb3Shk`3hAkG1%VS3?Bf3oX^Sq_1LgvF0h zH#Qrqsn%amTHnT^x)F?)yj_;QQCRzQte*Zn@U+7mNSY6Nr!LmjETbyLYw=gpuaF*Q zOWOx9m1NllF6rrf2l|UKWzbbiP-$zW8WCqsr zAi z-yI?;2^^bEvIA0R&BZ}`JwtnMJkkyTvS%JOm(6emroLghl+dWP>QXue&BNK4QkQpW z9K%xtzJV1kz9Y?sk8%!D7K9ja?j-Gj{MCFuLE0ix28Zn|lR`&THb+Q$w@v;R6{7D^ z4{hY^^RTt$jd;F(w-irgF>1N++c`!u35?4U^)5V#P@9b8rxkt=2{b{MxUwJ-|0Kz@ zUV3w>qGz-9DDgZGW;s@%s%1FQoZ8dKqmeI+xw>@s9nRTFB&A}e(rxl|8$A?vvJ~Ts zOlZI5Xz9&o>XgLZ?pyZzXy(JQ-b{J#q!=G3-18J_fkIVoD{h?VC+MT6?^;9_?j%uS z3gceCm#HHiCuM$~G4r+J`OX~AA)Ba6N)A!h8gm(z#}AnBQt9`i-wwqKogNIWqx z2_oFvm|fX5n&<#-36eutKUe4Lp}T}#d=+I>mAybzY;dEQ2R0Ya#I2b&XQ?Xz954J< z)J-vV6m|!TOCMT3#Y|ObUZT7q-{Qxt>@GWWO4hW#h~i+s%{B_>R4+-`O0?`RwFzAg z@2TqhU-8dAbGJU*P`duu^~yV;hQXViv?$x?q^*sstEJPE3OqP1?Y-_R{qL97M)#sT zO9fu!KRk6aO2)FU=sYaMbCV)oOm0GJY{gl<8E}U+^7EJ@#W;CO7hGF*;A|(g*Sc~@CgXZ#iSC~)q=<*F7 z8=ivi`~i}&+Cja+wt5|U?C_1@62LLtFSWQ1?(Lz&)I-f55D!mdn z#+H<5+f0kO>R?0&ai-<<`H#1vJQ;`Zl*)XnrHtz7oGvMtcN*>zah=w~GPQz-hmR*d zsfFh^rVZ!5MmNtR-7LtF1#0Bx;h)*#Iltqt4q$ZQIO7_s=_UFG*t zrV48DLCgkVI0O0F!;-ad#9?9_#?E~2xH*kybbSVQbDs7j-y)T@0!;}zcx7lRI}PZZoHXLd>JIdHc={u-t);ppLU=Y zA6fx34Z2K^6JQN5r7Olwg^8}-tP#%cU_?0Z7x(&q{(^Y&-JORJVIFaqDYw_ zvXpz;p{wzcq`z1q4BspdQdmEA{G2io}7*~2|TnX7~+ zFhXK|8(6x{Ys9Icis&1Q2t!>$%a_SsNpWesHp&iXk*DrzH-*;~SZN*#Bz{ayA|LzshWgHCcJn#vDi( zuZg)$A!DvZ4y0$klU#bl+ke`ss5SJvLtPtOOm> zZ!Tgx0*PIMl$~UzpY}vs)H8F>nX+Na1Ys&1d9R&q7hKa%AYkdJ zPF(k%wziqSBsf%i;I}jGaipq_yK(Si*Okh1-QZB}yq}x#{Be^>Hw(g4Kt*C@t3Lgq zqj(Y*u5^<5D!#m3@yc*_W7exU9GCaH6MQM>NS|J{idCt{`BTgAFg)4mPTh=;4Iz2+ zfU#Bt{WhIDP5S+si~VL36{|Y%Ji@gJHpjy_%f6A)CWz00#B{%CRq#@~pHN?S_xIGt zZ(uf6U@_2N)>6x`RJ|fQdhmUtz7~eJKc{k>H}X4r#C%WrK?=v}LPp~DF}Ce z7?3e&6xDl&*ZG^IRf<)h3!H%}e<0V~nR1N2mdFU5{g>MT%IUC_sPIY-3{^ ziPd*pII^=@K@_>HJZgAfWEq4J%kUbmG+Es1Pe3VZG43G$mga5u9lXW+b~7w2tVnVN znDx;V*0xv}6`y5Dc6t-yXBuF!h2F@{p-x%WS6_9&Q_$aIc)lbvkJivW4w9N9&*?caE}bpGMsQm zRO6}{><>skjC(rU%lfLi=Jg5AB-TRZTiShT<{2d!^@>Brz5e%j-$#&KZ8uiNQ)6Fn zWcuhDh*lMGhG${DJ_wyz*V9%@@M=^WHY-tHTFUJr zF!ZZOxXo!#1RFTs0mH?_oHYC9LXW~a)wwZ)%Jt$c@6|W zYM^Ii4(`Uezm{b0Ep3Vu{icm$;HIiFG( z{3S)OpR`KTSz4kQ>?XhOs)iKDs3_RmX)J)t8asy-XIiG_-4rthnK1j9Wvv*MadP(; zzUpbG}FqGky1_;)SRQ@4^nGT$x#$@hc zHnX?hQ*2lxzq@7*8s@2>%292K4IFaR9myf0@Cm~ti!hQ8b~j{dJ)UqT{c zEWJ0U?KVy$ydr#*E%se9Yp|#jjcVd@|7vXY(3#T$Yd@7k;y2_Xg)vWH>WxK^a9lf-P7mWo%iD$OnAY#1hR4>&zz?gUtOU3-F>*^hn*A z`Imnl!OjBItmF%$+AmDEa;=B0n*(r&4~cq?zxbY#kzTcuDnIiXDm29{Bfn*0!-Bdm zk!R#2h&cmfFP=%Q=Vq3&Qu=ri86lFFH42_Tj7)fE$kw<{^hlcUyz(hO{RtaJ@ffZ?BDz?0&6ae(Xx%H?i87? z?a^UjVMEc;L-LE^A_WM^p4Zxz2+w@#sH{U9#}M@>&Su>FYHE&s4=Rtjx!=%5zG0rl zssRXC7lCE0k^YWI*PK@tm*`tU5?L;P5tzpIDVqS8RDh%`c6b!LsoPERUy__;uG{QN z1J1&VV$)Q%dC))qX(-#dL;9&vB5>v7v$C;x&!YB;|KeydwY1&4oN18HPx)o%_UwG> zP?bmUhV;N`eh^Z7xVN!Z4$5{aBEJ;Tf*4D^;Md~I_PbzoupY$Y^1$(9dzHPj7 zyRwga)?Ob|n0-%{FR>;rTjG2}&aUfLc>I+=Ox`W#!ojX&DJysJ8`|h&^gL^s z0_K~uJe63Cl;nP6S^DES$E9R9?$Byt@v9LF+>{A6UZ4eo>4+qpzhk$o|>#$ex( zj2dB1d-t9(Xoc#Hm$YtanIaAwN1kD+EFY0-Wq-m*)kuxzq%p5rAjw%sm%-vRB+C|j z=QJoD=0pPBAm$r344*E(g(^pg-o~o=$aj&_Gc}YY2gzeloh&_r zo6>L&Qw-!E0YP!yA1H`)>Dv_xC@knNod(k;78D^2B&=PI|Dj5HPEh$C*Mf+W_pw*7 z)<}7usGsc)*&H_1;YDDP`gAtl;AR@RfUr{JpJ}QZiYE6bt9_O#G)iV^2X+{3q6^L4 zDK`dsJ#9;YuTaX1pS>GKhXCEE5CU-1lV*#209!~CqOHg?ZZP+u);z~W&XUWkwJNf@ zaJ`G`6v%Z#|Fjjcdunic(%u3_Mk627Ip`%fU`@aT8+Ig}5#DNhPeywMFh8-BT;crU z*^D2U0<=$I=b}B(2j^+8%l|$pPQRLruCN7+;kG}>8Csg_#`)YbU5pD8V~vl`Nc$iq ze&^VWSH(tA)VbN~H@NMoed81efPIc^reby!Xor34U*9lW>=6=r9{9K~S=l{1VJq)t z56*%-hJ1QLn=xIA&eZi+9Kg^kAMvi7Sc?7+J?|SX=E0!dw8o2~RQcpEGzpO*{@dkL z7d77dLRU#;c<6koU&JI5XqF!aF0FWRd<8T+c9QmyAN%P<>!duKP1~g&^~cEX@x+8l zkTVAm4=D?wi!|^B;a>DS6$xc{;$Ki@Q(rBXUQAMdedV0YN35DUr8&78I0Fs7-P%>S zRvA^3dgA`UBS;};K`>&xO1U@s363YDcwm(T{MUv1J&=a z&$QM2dl_VZUu%xH3a0blb%Taw#}pX^rB>?oc?>C#6A@=cU3JQ={MR8CVT?t5TFFq8 z5@g2LN;vS(C&N5J4^0_KN$k`Z{}J>^>FipfO*_NhQ;<~wfvr3A%8hzJdrf_#XA!qm z(eDAo!Bw2jj+B2%Bue-lW3GmZf5=J){dkzGU4FS`N)-K{smlO)E`LJ!+u5@M?`AV& zzg@yl*gh1vDjA2>(~&lCm}RJcRW#u??Mp9A)9cp2{p1|`0F8ckQw?h{Zv7DJUAne8 z1)f>nW*5~CLEqBQo36BRTmpIJE~2X!cv=kkWaCBd@}Kp%X8N?(eZk1-uv|;AZx3t@ zraIwlqH-!3wiF)&1;k>(Fu#r83NYV7!6ej5d<9qs%;G@ZAPb&D+^JslTDw_yitTLf z9e_dWH9ttR4I88OTj-u4VW0M;5@suB>DUaU>HR0Fnj2;s**F8mJV4Lvl_X(|hFdeE zvZA{(G9^jdMT8~Kdb`2`$VFlW-(;I_!tJawlz$mb#;)_EPgRCAn)a=NZbZZpSi^34 z907lSt&>^#&3q?V;w$>)+t}YmMV^ETjx<%aI!?aus;T3=`bcR(ArcD32O0T+OLd41 zgd0Wp-o5y{{tM1Zm`c3R!?Ghl%Ic1rz{lGh06QKgY=pCA^`3|1eI5>Q^hBx;^#Z;j z_Fvl)U_lEG_YWOw{V_VE9p8kOJoZpZ1I1IYH;Aa-EN}DHvKm;qAjVv++ba^GpYa-eT~Xslo1y32S-EH1 zxG-2ZDf=T_dO=q$v7XX{j1TrLo`ojR#>MB-KG(tIQesgiMT98yIx-}4LL8ha{qS0% zl?BJ$)Yr(O(+HHqfEo3nW*hLbgA}FVjjtWP@|-b-O1Ivo)u9)0HnYT8epBaSYx}ol zgnE8B;g129#;Y%TG1dWd!1pcMjCDiXsxmd2D+ddTmxnvZtl4(3s5=60r>%y=@RMD9 zzv6quV@g8fGx=px7fX-#mkwfvm-VRugxT3!QhSX!3`IsTY< z)HV)t0mVOg6ec?PEa^|!PM#@;)MIe?JLy`MOV zlEjP*#3C+XR#0nVW67cAzKKaj`yB26*L_+-a~ziYWY%pH*n(S)6-rm*%iSeB`$8RSH zu+4-0C$H4O9k?L4=Lvo%QI;{kyRMNC<2HNYl!Q5L{sQ*qc|0yQ?;ya>`pYZT7 zNo>~)_ZTt_GM8^e0L7fgMpP7%Gue`PxN)yGB)K*{6OF##lUymKwWN7})a_s+bW!Qq<1J#77t8y@gv7wW zybL8Mkwk~`RT{S@x}ZJ{Tfg;PFubA8t=?aB^wy*r&Z5*dE;h0kd0vUma-C>3L=1J5 zJH0Xm-gOK}RxrPu_4>F?@%ng#NOZ9}HNanTA7@^M)*&h{FAEv#Y_d95{&x@JENQ|p z(;Pcga{H;M=seVJ-2*@CV6155VN&$n>}hFzM?dht#DyN%mdFD?N<>(T2bmHPVlZC^ zML?8W^bZJ!RJWjcwCYXoS*N6cZGwfy;){bPL6@1w@AxoEMR+#)M96D%{`S%S)>6q$ z#6ber?1E-RPJ>6yF5<%}=JCiRQDRxeN@J*`ux_g1#o5t@CZF%X`0VBKO?!4+5j;o# zD?=YsH?I`tv)(M+E|**>9=$_!29ts|sj~yT+|HFqa~D1mu7iVo1&`_|T>Rv419e$A zChAwpXLWG4!O_k}#uL{86R6*0p(ibi-C`kJOHFx>YQa7Q(i5g#nDhBs#77nTw4S5= zhCRgXdEyW>&-sD7DEk4%xad+e(~`fNR=@z}!dqivH^9y-=72lNg|vq&2fg2FCa>r` zD%fCOrmel6U*eS~^iF$dX)dwcSH9M@+4fXnpeGFR>7D;EJKD1i={z0ZM#rE@*#@59 zAac+t1PHyXQ`)b(6Vj6SC)LQ3{{nLG{DA7>6FLVslSXO#-r#9r*B@UHTw&C$F`fOZ zpu=!lmV~_25;r5aZ>&e&O0<6Z_ujDa2c}$43{_Zkge>mm& z&quV6z)|O`V8u)bF@*%LqrF>m)vKDka<{~Ck(00KedRY1hB$5pzxm4rKc$5J`3r2# zkmz!g&mm-PXyS`|IQ6P&HxH)sRz88}MojxWh308Ig-5Wxo#GN@-5$8wf0K6PuXsPse{D2sYIq@c2U>hKqE_Wo2}z8WBU2-w(SPIZrvu_IOe|Ar&93 zQOfHXt|a&VCY;$o+hlW1B8IjNK9J-aJUNlsYxx;D^B$8=4ck4aRrX#o6J#`$m>yhu z#nvsrz&Q#;Tc?&U`o5J*`>DrJ3>NDeUZlAtBer$q;5rq&wiK#;gW;Ao-OCtYNNac( zV~&-})BW_9e2!x+g(bQv#99aV(0BK-KIwCo0a$_+*FvD3v+`yS3=RA9%5zIFLI$wq zjC}VjJg9FxxZ9PXl2}_3g};0utyX&Itb>ygj&Zu%M|sGMQQ+zV+2 zT(*e<Fr46cB}NEVpg|Cb|~JpzlCgzS4xf^e|r;>CxtK8=TKx~ z_jK&CBdWiglM6SOC3{!edI0IUP{a>xAVR$0_rK*fjy*^Av4nV++60pUa*zxAo`g$=WU!Q zdQ6*Kp_PEN?F{$V^ctC%sON-3aO$5;5R6UDFcb#l%Fn|nzQcH9J5qQvQeB9Gq#u}bO zn2AHoR7RMGaCHZH8>3Gk=IdU2^JjFDq%F?X8US$G2QNz)6`KrH>l~S7=l8U7&nv}% zH8_(3^dr*Utxib4W^7BGZJ_OfeJ|U!>NwJnr%_Dtl#yz*xa5m|qTPD$b1b7`rl#}~ zMmyK#G1?Qh62fcbMh|C-D--TgkywAm+_Py9SIT>VPDl{E|FVW$wD)UZ_Xg0M40Hkq zy;MefMyoa|>-L@;#nT>i*E6~zl8MK9qgm~w(HR5Ga?98Lh`du1YxV5%w(Ji23qSjK z57Tf4$0($v>Xy21$nzz*jQ0Uiyys*R^_(Cx++Q5OxZ6JjcO`Scx|`{O3ecFALx~cr z1(UliFN{c6YN=kOu$cHO!gRW{GN17hg}v{fXkbD3l@EU~00&x=jW(JOo{OsoTnE?z9cAym za$RUga|}?5K(3a> zY@%OjR0LY$P@kCyndh%mehuj1=TS%Yir@?XJwW97%lBAUJ8t@sekwVXj1nyv9Cbj#%Y%`i3lSkNnYb8($|APA{BJ`DCQ{AFMv8< z=#!ocuZek=>?c)q-!-F=M73$@oe68UtsT>H!B>(WmmK;sRoBEJaXj&Zc2b65>Gf2E z`I+<@i|1*u?iylEKQD&rikx>}5*qD!{2f{{C;f2#`o$0?Pvl5m^khgPOhU%TjU$jt z_{etc*-DnljM$IE9c0p%|1~#&aMB9G{ixA%`Sp(~io5>m0%&Yqd4V$7h*N{kg$pOs zC-ZG)Rp$8X%p!w^7YP$r1W>28`_q!#Mqo)^0ix}9F#0Ug&d`adq}Z#iDFkX5045g6JQ_=8Q({GH1css9>NKsb`L?zX+* zyQolg9enchww7R~i~TV$H28);$SjOtXZnIA!CK^^)24$tPHcsAhKkpJo*Uuo1bT6L z4-TV0h)%ql{+pP2U?7D_BON=_NVDdLMrYp3CSFzFik4G$_@D4apc5!*Exy9zD^EK7 z5JCF3%9ouw?^qQ#WtrQwrpl=t3)BX5~(TqZVL=y^TateoI~z7H zeMRUfZ#sWNBPNkw0Ssl|$^F%ih0&h~jt|3GPe(ThbW0|#*oL2<`2*J=31yc%X0pvo zw&{$JCTQtg@0V)#- z6v(3{c>^avYxx$X#4NhJa}GLlem=l{diRyfB@g}Si~d-{B%4LzdT?`{tF^^nZKik> zSpPmNsd19lEu?k3tOd^)VAPk0H&~7)ct9H!JwVB#<2c3MG35~BZ0>n)=BIEGZ}b26 z=D*?1B;ClH&GKB2TadQc8nB#LUVHY8O$BF^1sB|wD7pFs;~fKg%JEmX7^#1@7u@6# zSf?j9e6<4oQk8n+(MTSVc=O?dPY)V`f9PQgD;bV`QMuaC%R_ED14wq?FmsWN1Y4^2 zzn3nVbPwxJ>xJnI@1cXCr$;rHuke`s0&ZKmJv4rW1+*#kIUW*mKO~m;{N}5G#CYku ze5t$JBUDm`K{K5H+bn>3Vh4~>O=rwum+p?uiSOXLQX|>oC#XAFjo>*o;|vPPV7fL% zFFtkM=(#X=W!2WFhQ4bIMM+nr&>QsE|My9mu#$8)d~F;1EovF;-KMLLj}EwjN7455 z{Tf@wZxf&h(f0~opK`&LgZzqA|NJ-n|Ajm+N!sGVD-vR72A(BR=?wMePM_4+flTEA z1tyGUvioG+{XQgo!7Z=4CBr5A6I*Eu_vIg7&Mt_dnj&kjEQ-mfoz`LSaY_DIci8zF zRhHO%iCb;Qet!Q&z}i;DRK!~N0W;_s(B9wx;&Umr*%atZ(2ziHYYyz=E7~Ar>DY}^QbN&F(-@qxzR_BE#6!! z%s*+;>sQZSxQsWbV;1TRC!oGPFzRrT(M#1ZYN9m>)axQcpkF#WDqS%fU%lC*PzU%6 z`H-Vy9kk|3kO2}pzrdyEQt`(p?~E(l7JP8Yx!#z{i&?L>$Fj>jpT(lz=sGDou6Y!G z8XH96q%P6MxG0%a23j|m;QoX%0t?*Da4cbn&^*9m$3yu!RS=kBxBPbo4P4t_ajeAw zx2{`4kvVT|&uZJ5OnTbdLhi=%i|Vr^B$x|K{)Ex1`?p20XCfr61M7F2wcGPe8z^iX ziCwAU4)7D63-;i>y|m)HyFS}GC@5uB`<2G;Q~LOhP-#51bVYoXYY!M!%;w~k#E%sL zM#TBy@r&hSDet}f25-CL!#(cNDrq+(p`C1DF>Zk%^Ki*xHH(ns<$h|)(>5W*<@*;< zT~mt23vS3_Hh>pjx0&mI4-Q&wSkz06D*4&b^^!@ZU^IkdmT7uZ?oXfO49cAtTL~j1 z(R~nePl}cbi(b8#N@}?43g;iN7`6)zs%!Ozue?8!Nc1Vv7QMV8B`{4-`_E&x!bA{{ zc|~F+|J-_zq&W6nExeHACw+`*f42Wjq@;BkER03J8VhzYxPeoe;GwH1@BfpLV5ra* zQ-#o|JVS(AikK0MVK@2|>r*fN6G>lT-SK|$tCx}92==QIJ%Mh;6)B~s3Pt~%4!QEQ z{M;dln&scl0=5b6-?|U*(C@4|ocvtJ_E_Kqz^dY!FREP)$arc$#yc|M(k1uQ))9EhN!Ei!%^P z6bM^Ig;%7+&PdGo6sbC418&#-kqZpz2 zz=|1R^WsKy7Mqmr@4we(W8K-P-_?!56-U-Qn-F{Dp7~|7CfZZoAf%KWgxE^DA&DIQ zS1Mr9VFYH}o!{w_ZPw(8E006`8=(y?y$YE+)+6S=bFsyXLSNNf4#bcH@0IjQiGqeoH0% zmK%*KmGe=jzBdE7-RJ+@Cr$@GBoS&7Xk&mi?M+IB@`R}`SdSrLv1dyGBQ)le2 zQ$4FDm_cHjW&XYrc!P@)ZE=t3;Y>v^>s44LJ}}*bJjE&o;UXbHUI0$M^V1muxy|R0 z1b`1xdzQxgd`*$i(SaAtgh^U6!c8dZaF7~l+Q5w>~YFZH+h zPROgx<0Q>nTK{vj6HsD?(2QUpuY3T`Td)7kM^RIR*m+G?BpPx&0XoRlkWWk^pc`QfWwg#Qr=2O|azh&wfSau%(^O`=&%3sy^N5E4=$p zjOgOROtuL5)%z!>qSc2WL2kyP|LA$i@B4U%w#eHjqWR3l_CE_ueDH=P5=OVo|%7ul%<$VaUIzs|lq9?CEJzfe&Wva86DEs-#m zn6YmSSxOX&Da25AVl1i1NF>U>jVxITl`SpEnq4(nlI$TOk>z)ui9X-o_s_3C@G_6* zxzD-xEce{^c^_T=r#2wlVrNlyeF&DSL-qClb6iH>vvM@n((Vz)pHMm;aAxEM~`?CjOh%2M4%+8{L+`O9#i%GdC5 zTyNfLkko9Xkh<5LTZ-sCkVkyU*zHX=>n7wT~%V7;M6@EH^u&CEe()@<=V z!ak3#>~z`IeJf$Poo|J@i~|JcRZi?mqJHZu$arViy%**h=rNejbS8 zJBhR5)`D6F66l?U-hF~e&pt$nhRoi3W}!-D_F)zgW`1}JX3;;Fj9m>i{Xp9Yzy@Vh zQBKzLZkyjRx1KDh#&bM(XnpFaKUVKr``clcuQXCjwk604n(jJNV6^inU!xlu1lgeD zGhezd$NIF+U>3n`8%~HK^vpTl>*j{N9JOJG`TTwS`g+l)%eg(NUBf}F=KRbLqy0~d z`6gQ~B+50oVFU<|+aGO*Jee$3AQV+J4x9u^*#|hphX@viy@%d~9rh=s98y07R8sKb z_Rx94b*}F2%Ypesjs{zdfP_P#bw{F$focJi%1+V&%a$ z3nUdcoHX2PrMst7S?tc6#hHQit>N=}kpgmuuHYM_<~q4zGykg8C*T5R zp~y2~E(%_b4QZ1R=Xn2U%m^{$0v7p`sjw8K zXGfLWtF1fS>pvn4sK-LxyNg#A`qLu|k~P!^G-7$`4ArBex&GdPgvAd_cv!MyzE50a zn(63?%vQY^jLgmNn82QU5xjCvANM{Rv3t_@4$+kno+tf>pSqVv*IU`FxNC-bQPqA+ zP%pOnb zojenp9AGwW&GA?}GGbbLUc`+CQHtz1EDBR8VDg4nfxH~Ee2Xmkf@&WT3o8o2OE<5& z3hfNK@0!dPNtLUj8a(NN7=M*fS~}^%cPg#9``$| z0-k-g3h$sMQh<#)L!~n7Y{UK2IrpsXH_atBwF(UX%XuY>#k8{i+a0QicuQ_z@nx|A zMWtWOm-GbOhL><3c5Uu@z_!ujX#FMQ0?a1OSs&)j7knZ%aw0R_#zC`2Th!l-3O_TY zZahP+0zo84(dK{pIM3g(DZp3qlnD<#orPAaVUw#sM&;hNTV_>Lq9rd%{k(~9-?T{G zLgobig}+S^Y_QOWB#pjpV_*GUmRT$Xo5YbfZxMPWDc>@zKd~_<$M>f4MU7H$7e2Ye zUUnnGKolR5pcJIAcA9iU;QIIKzaKMiCGk^T%YRp&6ahuMk?XwkzfCl9hx2s*-08;S z)L358ipC#FNMnPxY|@ zi_O2g(J;TFPiNW`#ors>5C~*3&7R0A`k$8tZqZ^UY)EY5`66tvy-+)azCpEq{~jh4 zY)|EM+877ehctLQ_S|yO!yB*g_xXV=8oc&&L02vctWiQ`bZIw61x}dWjHA;!+~~62 zr_(h4lz63wqc>j7M+f_5d`mw2PZ(|cw=T2vv3&J^%ka482b*q@J=m8Yc_T0FoI}dm zdKowE4vcy14i>+4Oxs;MY!OD2ORtfI8!to~8?;72vUl^{+rV-5w?~fAFc*T7%|qZt z{+L)mW~HbLt#?TE{@WBd(WJ3g8waGt2Rv~w@&%V9OE=$yGu7l>n*661Tj<1CQu&O+ zb`p{2ffGwQXU6(TACA;FMH&P2%&G&J&|<~;cm=+sOqgrUaoX6qsL5-2V(HpEu< zYAAOZ53=vsyejo0-Iz98#hR!xowP2$bpG%}RJ}mMzf>68JuJR9Hcwk1T#%|A_M+fT zCa3HTl&jZDO77wTO-hv()&wFjG3b_+Dr5vp-yBj%@^X(HT?9+&BXl026`46Vhu;H< z%?d5Qb+lMgPi%582)3EEO%iQ%y~IpW@4sPjA;Zc@78Rm%1?*`@y{xf-{)vBPgMR>K zHu)S%=xNP2>U`mVyEeClr_|wFp&Cx~c-Y2%guhK3xR0~=+QmaOKmZmHRWibkO-@}+ zzvSUKTHUS#;ew;8f*eiSHph`gzv9lq{Fo33?OnAIY2l9C?=VyOxBplYz+wcf7jzx? zPtrq7YFxn1YJSM|zmNHu&5wSwI2d(NfGVyr_Mm#3=f3V)?A06#J9kEHM&8+BSbW-; zc2~%4>=dvl_U*hIFhQR&7te;5?UUB_8xKv!^J;@o%D!-*UW0&a-0o@RUN7!{6z_&_zrl6a!Lgd3aByI=HXYe^_h+GAnj1Qz= z7^^&Owx2i-6yDyDq0!~)vxa6dD)nL?fE?qUaN-p;R;zJ7I8~hu-nQ#B!)Kkyi%qe$ z?+#pZdgO=jef#^IhuXzP;=q77I}P5r}EEq#XD*H-N%1m?c5zgMgf`Uz7 zD|lx$7?~9%+6*1}ECvY|3mfhUSI9##`ZU|Cp4J+<9X(5ZKsa@T)De3jEw6W%WF@m< zf}Dg;Yzm1Uvn)uflc7I{0d%4gx$qX0?g@llgQKuIbng}Q72u>08iaRn@U_}uN$y07 z>Q`1uFu1(V3gBt-;He|RDMs{*uirWWFz1y!LAbEtFR)n*(6sY0Mhzp-iQ^s)*ZKlw zOCI|X)&~kV!?QuvjvzG0thrqh`v4^H-p{}}2#%2f#_;{gysXM+% zBr#FTSH^Xi3CoS)@#s+EJ|Ep7tBRoDt}P-=B~=v@xp`j^#4ZuKdJSD(GPg)MMzvC4 zD5UiRi8XesEXynp33Vb?8Z^ZGNR=AFi68CT}~ma*qFx8!*hhBbsJ* zSR?>iv%OZ7kKt+3@K?KJpE{g=XUS2rc!p-W!$sfNC&Svo_z+$E-7!lc;p^GaNY$P5 zOTswMBXqxah7FINS%y;iWuEgnzl|OtP|B*fCx=93gKN~UuDYx6Rf|_itkjKcO7{{~ zx-KBy;+7ZW+r^rMbep6tTNwIuHB?PK^{<+>Iw57xl7z-H=e5+O{C@v<)l)?WE8m~h zp(d1Nx?c-Vb9QoQy0B~{{tFav8n9-qj3D67pYe(wms9g|g(wETfC*-FDu3|V>KYJW zTwN=+YxOiEv`TzJItrW$*uLk$_h~2@UwEZO?5%3S?EZfJkT)E}(vFt^ic~3JeY9d= z)w!r$i+7vcwj&<_P)d8&jP0W@|Dwg!Tyk;0?_`;j`c1}J-LgqAd{YINM9TBH9g_Md zUo)zXE&{~q#UxZ1?nj^(-hd&_9kJUw;2E?8i8jQ>*NZ@Kld_;arj0LQ$?!bNU|(Yc z=wh!7u6U~~qrFqPmt+!uCLFMjk6Y~APHW*flp-EMCu)h?VZueuW7-b;ldMMFl^6xw zqY6kO-*d3#**1q#<+OB<+LebPJ}(1Ak?2dn{aRWyo}DD=4Sx-n^qi6D$jtGee0x24 zdAnJ+yNqk*mG~?(F-pzrcaoNzrxaN;Jx=UI`OB2HMY@W%T=qTdO=Og!|LYC$ae*%- z$F=>IR}C=&6;oU-yL7O8R&u^kPA(4g=j^O*Ue5~hLFsgsuN>N{Lh>|J0%K(P&Kk(M zvU)^GdkXWi%01lOU!+nr$z2aRt`P$HXSMD!@<>v8zW_*HzoXM40W5iQwLt-871#L( zfA@DKbd;|Cs6{^a;PUwIZ4vjM{rHuz|0DgG=txEx@=Pm(SQ7BU=8H$0HnqOl%%+{# z+qSrGHPrAAY91xs7i09&o^F0{ShM=PebpUO=;id5t!#C?(%ojBjj^frVt$%Z4*AUdx4>TNcv#f0|AT(A-&kH8$&5AGO9R51=LE-*Q(bhtHLc|<3 zAi=KD#}HfFBSpwY1InwRE31()aoL7tJ6fj>rUtbC`gWqg|3vDBBd?c+`JT#ChHth5 z35n*r+If9z{{OIAT6+sh#O>70H=7~k-%!j2V(W#QR=0;J%e>FoJ#%h*%AGv#7^YWc ze65gBIThIT1+*)L>U*D}L;yqn9%46)xEpA~v)XFhINLOqc3q{?bhYGka?^oJ= zbQNuN?3i?&o>zVWuVd>{d{E_Yumv?d^!QS~3l)RqDq+h){Rp*Z&=hMzObk&YIGC3{ z^E%f5TAb+}vP1>~JXxFry!w^T+5=!Eo;>^TO#O790*&I{Y?k!mAi&H6fmqC>SS!2u z>6#3!h}$iJZWZrEA9FiSe@fYfuZvasqy5=hPOqb#rfnmJK8Xp^@)s6Mdi)F34-9pg zt;e7l2^c57J5cAYG3o_qMMaHy)P##|O$Y?GFV>s4uS6N8zdd>JyUx6!%g%~oTE98D zmct4=>Tk81Ye1EZ`{;8086*U<;no8;a$RY36zH_|--{XVBarhKmtRE<+L%n8o1-3O zEsZ27scYVRup0ku1x`DRI1O&a9e`7hCpb5^HF5xuX%4#IA2bnb)OT=jbPU^VlqBO| z>~Pnr4^39n-PlaFsnJv|3mgth943aKgWdP(uOpJkcyOsHwc{tm4vJ(Y z;)=Ijmk8et6BT3%qM_+o-!Lf+9IcYN?gf0keV2}~Mbj0rIE2cE+i-YoxK+A-Hw0C# zGvz5b^v1U4t^)akM(?+v5dBJ15vw3jMbME)@5{<#VqlzCjN zJh}=)q+^Le8GE*J%c1++?={)ZkG0Q!d}4cVh4?dJKz^u}SC#ntBd?Nlydad2c=#c` z+Z?XwnP{~^AlKLMBFcz7PlS`-@=Do0Tzb@j+9$PP)1TJMAOf-MUn`?5Al;=hPIvb& zc41ryVRL`gWtM(^zM|0L_u)lUF1Kp@ep?BF9ySGr)zGi20Vlt*?alsmq01y-)i$nR zv7N$=5yCk%@GC+Db8ioA1oQayw5|r7Ijy$G=Ebb+K+JFk{k$jg2+|cdiNsGZ zP2ykRmDxYAYc=!)dI4<7^c5!chj&5%8O({q)?w1ZN$$p18bu!owo-(gfnI0Y{OqMd zs8o54L>eD;BHe&YUF*EbNc0biWo@`8pAuvF;C?{C<5Qa z&@81t*Y+#{F=@2NUiqE$>bsnm-`kzl>@oLzPu{Dn#%+4qHg$KK@=W*-Y{aF^W3oYr z?AX_!#9=ptUC+PCu7=WWLo?fBwysZVxKP`Y^5SM4gJmwZ=y5u#Jmye3V*a!ye>Tb* zP=SwYgL#-boJDyKsQ@f`=%{U-AWD^@@w(~h#im|*(${{t<@?Wu_d3V!aw|_)amzao zU584l*M#QOG>_VLU;fX=pN9*r@iG+CBS?vV!bDaCn@q3=LbN7>bRQDTc2|LNtLV}G z{s+z*TQ&YpI^RE*V?%aje1qD--*=ovFAztXA2v*1L8vYy(@c|7aPcFF(mxdibV$_ zz(+g0Lt~<${$#|8>G6Esxi#rPd<^hO1&Su`$;;!A$~|X=7jZz{(h3_6+StfR<5GmjtH$ezx7c7yL?aa!`~uy%~?_xp*P>7I1#r?3uF z69I6nF}4tQL6^p7Ogo0{QKtm5`dv)LXYF>WyCXVOT@^P8++bZNRzZncj3FVXx4Wep4z(>G2lzs0$;kC L1{wuw=Y#(rf0bmY literal 0 HcmV?d00001 diff --git a/docs/design/gg-architecture-drawings/ipc runtime.png b/docs/design/gg-architecture-drawings/ipc runtime.png new file mode 100644 index 0000000000000000000000000000000000000000..445f0b93598bd379449f9ad485ef68a102479135 GIT binary patch literal 60697 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 cC^YPZxA8VQ3&`^QPNZ_yJ->fKXW3uJOBUy literal 0 HcmV?d00001 From 847911b2bed65baacdad1508f1cb5fb82915f84e Mon Sep 17 00:00:00 2001 From: Joe Julicher Date: Wed, 22 Jan 2025 17:20:13 +0000 Subject: [PATCH 13/14] first pass full formatting --- docs/design/gg-architecture.md | 747 ++++++++++++++++++++++----------- 1 file changed, 511 insertions(+), 236 deletions(-) diff --git a/docs/design/gg-architecture.md b/docs/design/gg-architecture.md index 6e10fa034..03f666696 100644 --- a/docs/design/gg-architecture.md +++ b/docs/design/gg-architecture.md @@ -2,74 +2,106 @@ ## Introduction and Goals -Greengrass Lite is a size constrained version of Greengrass v2. The intent is to reduce the memory footprint below 10MB with smaller being better. The potential applications increase dramatically as size reduces so there is no maximum “acceptable” size defined. +Greengrass Lite is a size constrained version of Greengrass v2. The intent is to +reduce the memory footprint below 10MB with smaller being better. The potential +applications increase dramatically as size reduces so there is no maximum +“acceptable” size defined. ## Requirements Overview The most important customer requirements are listed below: -1. Reduce size below 30/15MB RAM/FLASH, Much lower would be better +1. Reduce size below 30/15MB RAM/FLASH, Much lower would be better 2. Support unchanged, “generic components" and their recipes. 3. Support embedded Linux first but do not prevent other operating systems. 4. Share the MQTT connection and “things” with all GG elements 5. Provide OTA and deployment from GG console 6. forward logs to AWS Cloudwatch -8. Ensure proper startup/shutdown of all components -9. Provide tokens from the AWS Token Exchange Service +7. Ensure proper startup/shutdown of all components +8. Provide tokens from the AWS Token Exchange Service ### Reduce Size -Target a small size to allow integration into IoT gateways, home routers, and virtual machines. A scaleable greengrass lite system that can be “right-sized” to a customer application will open many opportunities. Every MB used by Greengrass reduces the memory available to the target application. +Target a small size to allow integration into IoT gateways, home routers, and +virtual machines. A scaleable greengrass lite system that can be “right-sized” +to a customer application will open many opportunities. Every MB used by +Greengrass reduces the memory available to the target application. ### Support Generic Components -Generic Components are the external applications typically written by the customer and deployed via the Greengrass console. These components can be developed in any language and are often deployed as binaries specific to the target platform. Generic components communicate with the Greengrass system via the IPC. Support for generic components requires support for the legacy IPC system. +Generic Components are the external applications typically written by the +customer and deployed via the Greengrass console. These components can be +developed in any language and are often deployed as binaries specific to the +target platform. Generic components communicate with the Greengrass system via +the IPC. Support for generic components requires support for the legacy IPC +system. ### Platform Support -The immediate customer need for Greengrass lite is to run on embedded Linux systems. However it is anticipated that non-linux systems may be targeted. The architecture will need to isolate platform issues to simplify adding additional platforms. It is acceptable to have multiple versions of platform specific services. Different platforms are referred to as hosts in this document. +The immediate customer need for Greengrass lite is to run on embedded Linux +systems. However it is anticipated that non-linux systems may be targeted. The +architecture will need to isolate platform issues to simplify adding additional +platforms. It is acceptable to have multiple versions of platform specific +services. Different platforms are referred to as hosts in this document. ### Shared MQTT -AWS IoT Core connections requires that all connected things have a unique identity. Two applications running on the same device but seperately connecting to AWS Iot Core will require unique identities have a limited number of topic subscriptions (50). Greengrass devices track the number of subscriptions and open additional connections as required. Tracking subscriptions and managing connections requires that all connections go through a central service (Greengrass). +AWS IoT Core connections requires that all connected things have a unique +identity. Two applications running on the same device but seperately connecting +to AWS Iot Core will require unique identities have a limited number of topic +subscriptions (50). Greengrass devices track the number of subscriptions and +open additional connections as required. Tracking subscriptions and managing +connections requires that all connections go through a central service +(Greengrass). ### OTA & Deployments -A key function of Greengrass is the managed method of updating the software at the edge. Deployments allow new software and any dependencies to be added to a device while OTA allows new software and updates to be delivered from the cloud connection. +A key function of Greengrass is the managed method of updating the software at +the edge. Deployments allow new software and any dependencies to be added to a +device while OTA allows new software and updates to be delivered from the cloud +connection. ### SSH Access -SSH Access allows a console user to get a direct SSH connection to the console of a remote Greengrass device. This connection is very useful for more difficult debugging sessions of remote systems. This function assumes the host OS is some form of Unix. +SSH Access allows a console user to get a direct SSH connection to the console +of a remote Greengrass device. This connection is very useful for more difficult +debugging sessions of remote systems. This function assumes the host OS is some +form of Unix. ### Cloudwatch forwarding -Cloudwatch forwarding is the task of forwarding the host logs to cloudwatch for review. It is important to include the entire host logging system in this forwarding to be sure all health/debugging information is captured. +Cloudwatch forwarding is the task of forwarding the host logs to cloudwatch for +review. It is important to include the entire host logging system in this +forwarding to be sure all health/debugging information is captured. ### Orchestration -Orchestration is the task of starting the system services in the correct order, monitoring the health and shutting down the services as required. +Orchestration is the task of starting the system services in the correct order, +monitoring the health and shutting down the services as required. ### Token Exchange Service -The Token Exchange Service (TES) interacts with the AWS Token Exchange Service and provides the tokens via an HTTP proxy to the local system. +The Token Exchange Service (TES) interacts with the AWS Token Exchange Service +and provides the tokens via an HTTP proxy to the local system. ### Quality Goals The quality of the system will be measured against these goals: -| metric | qualitative evaluator | -| ------ | -------------- | -| Size | Smaller is better | -| Reliability | long up-times. Longer is better | -| Compatibility | Works with existing generic components | -| On-boarding speed | Fast on-boarding for new developers (internal and external) | -| Low CPU load | Smaller is better. | +| metric | qualitative evaluator | +| ----------------- | ----------------------------------------------------------- | +| Size | Smaller is better | +| Reliability | long up-times. Longer is better | +| Compatibility | Works with existing generic components | +| On-boarding speed | Fast on-boarding for new developers (internal and external) | +| Low CPU load | Smaller is better. | ## Architecture Constraints ### Single Responsibility Design -The system must be designed so components are independent processes. This will ensure the following characteristics: +The system must be designed so components are independent processes. This will +ensure the following characteristics: 1. Faults in one component cannot leak into other components. 2. Data transfer between components is explicit and performed by copy. @@ -78,50 +110,86 @@ The system must be designed so components are independent processes. This will ### Process Orchestration -Orchestration is the process of starting/stopping processes in a coordinated and deliberate fashion so the system starts-up/shutdown correctly. Many orchestration systems also have provisions for restarting and recovering from failures. +Orchestration is the process of starting/stopping processes in a coordinated and +deliberate fashion so the system starts-up/shutdown correctly. Many +orchestration systems also have provisions for restarting and recovering from +failures. -Process orchestration is performed by the host for all anticipated Greengrass systems. Where possible, Greengrass will use the host orchestrator by adapting the Greengrass recipe file to a suitable format for the host system. This adaptation could happen in the cloud or in the device. This constraint does not eliminate the possibility of a custom orchestrator. This constraint expresses a preference to use the host native orchestrator. +Process orchestration is performed by the host for all anticipated Greengrass +systems. Where possible, Greengrass will use the host orchestrator by adapting +the Greengrass recipe file to a suitable format for the host system. This +adaptation could happen in the cloud or in the device. This constraint does not +eliminate the possibility of a custom orchestrator. This constraint expresses a +preference to use the host native orchestrator. ### Host Logging -All hosts have a logging system available to all applications. This logging system handles log rotation, log viewing and other log related activities in a host specific manner. Leveraging the host specific features allows the customer to use what they are already familiar with. +All hosts have a logging system available to all applications. This logging +system handles log rotation, log viewing and other log related activities in a +host specific manner. Leveraging the host specific features allows the customer +to use what they are already familiar with. - NOTE: This assumes the customer is familiar with the host level logging system and chose the host OS for specific features. Greengrass is not a complete operating system so there will always be a tradeoff with user knowledge of greengrass and user knowledge of the host. My assumption is the host log analysis tools are very rich for that host and the cloudwatch tools are also very rich. The greengrass features cover configuration of log coverage but not of log analysis/processing other than forwarding them to the cloud and rotating them on the device. +NOTE: This assumes the customer is familiar with the host level logging system +and chose the host OS for specific features. Greengrass is not a complete +operating system so there will always be a tradeoff with user knowledge of +greengrass and user knowledge of the host. My assumption is the host log +analysis tools are very rich for that host and the cloudwatch tools are also +very rich. The greengrass features cover configuration of log coverage but not +of log analysis/processing other than forwarding them to the cloud and rotating +them on the device. ## System Scope and Context -### Technical Context +### Business Context -Greengrass consists of core components (the nucleus) and some number of generic components. Greengrass is customized by adding/removing core components to provide the system functions. Generic components are typically developed by customers to provide the business logic for a greengrass edge device. Greengrass is responsible for ensuring all components startup, providing system status to the cloud and maintaining the core services required by the generic components. +Business users of the Greengrass system. Consider these users as features are +designed. -### Solution Strategy +![Business Context](./gg-architecture-drawings/business%20context.png) + +### Technical Context -The strategy proposed for Greengrass light is to separate each of the Greengrass functions into small independent processes. These processes will communicate over an internal Greengrass databus. The databus implementation is isolated into a shared library that is dynamically linked at runtime to ensure all components are operating with the same version of the databus. Where possible the host environment features will be used to implement basic behavior like orchestration, logging, rollback and permissions. +Greengrass consists of core components (the nucleus) and some number of generic +components. Greengrass is customized by adding/removing core components to +provide the system functions. Generic components are typically developed by +customers to provide the business logic for a greengrass edge device. Greengrass +is responsible for ensuring all components startup, providing system status to +the cloud and maintaining the core services required by the generic components. -Building Block View +![Technical Context](./gg-architecture-drawings/technical%20context.png) -Open-Box Overall System +### Solution Strategy +The strategy proposed for Greengrass light is to separate each of the Greengrass +functions into small independent processes. These processes will communicate +over an internal Greengrass databus. The databus implementation is isolated into +a shared library that is dynamically linked at runtime to ensure all components +are operating with the same version of the databus. Where possible the host +environment features will be used to implement basic behavior like +orchestration, logging, rollback and permissions. +### Building Block View -Motivation +## Open-Box Overall System -Compatibility Existing generic components must communicate via IPC Add a single IPC interface component that bridges the IPC to the internal databus. -Single responsibility Keep components as separate processes and focused on single tasks Keeping the components in separate processes forces the components to be fully independent. -Use host services Reduce complexity by integrating with host provided services for process orchestration and logging. This also reduces customer integration training as they are already familiar with the host capabilities. There is no need to learn new Greengrass versions of the systems. - -Size & Compatibility the databus and logging interfaces must be common across all components Sharing a library for the host specific elements ensures all components in a system use the same mechanisms. - +![building block view](./gg-architecture-drawings/building%20block%20view.png) +### Motivation +| Tenet | Definition | Rational | +| --------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Compatibility | Existing generic components must communicate via IPC | Add a single IPC interface component that bridges the IPC to the internal databus. | +| Single responsibility | Keep components as separate processes and focused on single tasks | Keeping the components in separate processes forces the components to be fully independent. | +| Use host services | Reduce complexity by integrating with host provided services for process orchestration and logging. | Reduce customer integration training as they are already familiar with the host capabilities. There is no need to learn new Greengrass versions of the systems. | +| Size & Compatibility | the databus and logging interfaces must be common across all components | Sharing a library for the host specific elements ensures all components in a system use the same mechanisms. | -Contained Building Blocks +### Contained Building Blocks -The Greengrass core is comprised of components that provide the required functionality for a specific system. The key core components include: +The Greengrass core is comprised of components that provide the required +functionality for a specific system. The key core components include: -1. Greengrass Core Databus - 1. Implemented by a shared library -2. IoT Core Interface +1. Greengrass Core Databus shared library +2. IoT Core Interface (MQTT) 3. Orchestration Host Adapter 4. Log Forwarding 5. Status and Telemetry @@ -129,64 +197,93 @@ The Greengrass core is comprised of components that provide the required functio 7. Remote SSH 8. Token Exchange Service (TES) -These components connect to each other through the databus and provide function specific interfaces. These blocks will be discussed in detail below. - -Important Interfaces +These components connect to each other through the databus and provide function +specific interfaces. These blocks will be discussed in detail below. -The databus interface, logging interface and configuration interface are used by all the core components and connect the Greengrass core component to the underlying host systems. The recipe is the interface to orchestration and it is critical to launching a Greengrass system. +#### Important Interfaces -Greengrass databus +The databus interface, logging interface and configuration interface are used by +all the core components and connect the Greengrass core component to the +underlying host systems. The recipe is the interface to orchestration and it is +critical to launching a Greengrass system. -The Greengrass databus is used to connect the core components directly together. This interface can also be used by customer developed components if they don’t need the compatibility provided by the Greengrass IPC interface. -The Greengrass databus can be implemented in a variety of ways but the usage model for the bus is a 1-1 connection between two components. While the model is a 1-1 connection, the actual implementation is up to the host interface library. +##### Greengrass databus (coreBus) +The Greengrass databus is used to connect the core components directly together. +This interface can also be used by customer developed components if they don’t +need the compatibility provided by the Greengrass IPC interface. The Greengrass +databus can be implemented in a variety of ways but the usage model for the bus +is a 1-1 connection between two components. While the model is a 1-1 connection, +the actual implementation is up to the host interface library. +![Greengrass Databus](./gg-architecture-drawings/interface%20options.png) -Databus Interface +#### Databus Interface -Access Functions +##### Access Functions The databus is accessed with the following 4 API functions. -connect Open a connection to the named service -close Close the specified connection -call Make a blocking RPC call on the specified connection. Return with the result. -notify Make an RPC notification. No response. (equivalent to QoS 0 publish) - - - -Service names are converted to appropriate addressing of the destination databus channel by the databus interface library. The details of how the addressing works is an implementation detail but one example of a point-to-point topology could work by mapping each service to the path for a named pipe. Connecting to the service would open a connection on the pipe. This mechanism would allow a fully connected network topology which minimizes the demands on the databus bandwidth. - -Databus subscriptions - -There are some operations that require long running commands where data is received asynchronously. There are three basic strategies for these commands and it is up to the API designer for a component to decide which is best. - -1. Long running command. The calling component makes a call for the data and handles data as it arrives... forever or until the connection is closed. -2. Polling. The calling component make a call to start the data. The data is cached by the receiving component. Later the calling component makes a new call to retrieve any data that is available. This mechanism could have longer latency. -3. Reverse data channel. The calling component makes a call for the data and provides the name of a reverse data channel. The receiving component connects to the reverse data channel and sends the data as it arrives. +| | | +| -------- | ----------------------------------------------------------------------------- | +| connect | Open a connection to the named service | +| close | Close the specified connection | +| call | Make a blocking RPC call on the specified connection. Return with the result. | +| notify | Make an RPC notification. No response. (equivalent to QoS 0 publish) | + +Service names are converted to appropriate addressing of the destination databus +channel by the databus interface library. The details of how the addressing +works is an implementation detail but one example of a point-to-point topology +could work by mapping each service to the path for a named pipe. Connecting to +the service would open a connection on the pipe. This mechanism would allow a +fully connected network topology which minimizes the demands on the databus +bandwidth. + +#### Databus subscriptions + +There are some operations that require long running commands where data is +received asynchronously. There are three basic strategies for these commands and +it is up to the API designer for a component to decide which is best. + +1. Long running command. The calling component makes a call for the data and + handles data as it arrives... forever or until the connection is closed. +2. Polling. The calling component make a call to start the data. The data is + cached by the receiving component. Later the calling component makes a new + call to retrieve any data that is available. This mechanism could have longer + latency. +3. Reverse data channel. The calling component makes a call for the data and + provides the name of a reverse data channel. The receiving component connects + to the reverse data channel and sends the data as it arrives. Data types -The databus interface normalizes the data sent by providing a limited number of simple datatypes. +The databus interface normalizes the data sent by providing a limited number of +simple datatypes. -boolean -64 bit signed integer -64 bit floating point -buffer array of 8-bit values (bytes) (this includes strings) -map A set of key-value pairs. -list a sequence of identically typed items. -could be maps or other lists. -64-bit unsigned integer (Consider this, but hopefully it is not required) +| Data type | Description | +| ----------------------- | -------------------------------------------------------------------- | +| boolean | | +| 64 bit signed integer | | +| 64 bit floating point | | +| buffer | array of 8-bit values (bytes) (this includes strings) | +| map | A set of key-value pairs. | +| list | A sequence of identically typed items. could be maps or other lists. | +| 64-bit unsigned integer | (Consider this, but hopefully it is not required) | -These data types are provided to simplify mapping of data into a host specific serialization format. +These data types are provided to simplify mapping of data into a host specific +serialization format. -Serialization +#### Serialization -The serialization mechanism is not specified by the architecture but it must be consistent within a host implementation. The data types were chosen to be simple to map to popular serializers such as messagepack or JSON. +The serialization mechanism is not specified by the architecture but it must be +consistent within a host implementation. The data types were chosen to be simple +to map to popular serializers such as messagepack or JSON. -Communications Path +#### Communications Path -The communications path should be chosen from the forms of IPC (not to be confused with the Greengrass IPC) available to the host operating system. Some options are: +The communications path should be chosen from the forms of IPC (not to be +confused with the Greengrass IPC) available to the host operating system. Some +options are: 1. Unix Domain Sockets 2. Named Pipes @@ -200,136 +297,248 @@ The communications path should be chosen from the forms of IPC (not to be confus 10. Binders 11. Bundles -This list is not exclusive and some options are specific to specific operating systems. The databus design is not dependent upon the choice of IPC so long as the performance requirements are met. Validate the databus choices with benchmarks to ensure the system performance is sufficient. +This list is not exclusive and some options are specific to specific operating +systems. The databus design is not dependent upon the choice of IPC so long as +the performance requirements are met. Validate the databus choices with +benchmarks to ensure the system performance is sufficient. -Quality Characteristics for the databus +### Quality Characteristics for the databus -Speed GG IPC is expected to require ~100msg/sec. 1 IPC may require a few (10?) databus messages which puts a lower bound for the databus at 1000 msg/sec. -Simplicity The serialization is NOT specified in the architecture so choose something simple for your host. One suggestion is messagepack because libraries are readily available in many languages and the final data is small which helps speed. -Topology The physical topology is not specified. Choose something simple and fast. There are additional speed consequences of some topologies. The star configuration will reduce the speed of the databus by ~50% so make sure there is sufficient performance to handle that load. -Debugability The star topology is slower but has advantages for bus monitoring & debugging. - - +| | | +| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Speed | GG IPC is expected to require ~100msg/sec. 1 IPC may require a few (10?) databus messages which puts a lower bound for the databus at 1000 msg/sec. | +| Simplicity | The serialization is NOT specified in the architecture so choose something simple for your host. One suggestion is messagepack because libraries are readily available in many languages and the final data is small which helps speed. | +| Topology | The physical topology is not specified. Choose something simple and fast. There are additional speed consequences of some topologies. The star configuration will reduce the speed of the databus by ~50% so make sure there is sufficient performance to handle that load. | +| Debugability | The star topology is slower but has advantages for bus monitoring & debugging. | -Error Handling +### Error Handling -Components will generate and receive errors as conditions require it. When a component encounters an error, it must log all the known data before returning a basic error number upstream. Consider the following: +Components will generate and receive errors as conditions require it. When a +component encounters an error, it must log all the known data before returning a +basic error number upstream. Consider the following: 1. Component A calls component B to perform some task. 2. component B fails a the task (The internet is down) 3. component B returns ERROR_RETRY (or similar) -4. component B logs details like the internet being down, the endpoint being connected, any host os errors, etc.. +4. component B logs details like the internet being down, the endpoint being + connected, any host os errors, etc.. 5. component A logs that it received ERROR_RETRY and what steps it will take 6. component A waits a bit and retries. -No error data is lost, but importantly, component A only receives an error that informs about the recovery options. Component A lacks context to fully evaluate all the available options and must quickly pick one. Additional information is for the engineer and not for the program. This information is for the log file and must be logged by the entity with the most complete knowledge (component B) - -Some data - -A databus implementation using Unix Domain Sockets + messagepack in a point-to-point topology has been tested at ~100k messages/second. On the same system, the GG IPC performance also achieved ~100k messages/second. This system would be considered acceptable since the GG IPC performance requirement is ~100 messages/second. +No error data is lost, but importantly, component A only receives an error that +informs about the recovery options. Component A lacks context to fully evaluate +all the available options and must quickly pick one. Additional information is +for the engineer and not for the program. This information is for the log file +and must be logged by the entity with the most complete knowledge (component B) + +### Some data + +A databus implementation using Unix Domain Sockets + messagepack in a +point-to-point topology has been tested at ~100k messages/second. On the same +system, the GG IPC performance also achieved ~100k messages/second. This system +would be considered acceptable since the GG IPC performance requirement is ~100 +messages/second. + +### Logging + +Logging is intended to use the host logging services. In a unix system, it is +expected to simply use stdout/stderr and rely upon the underlying orchestration +system to direct these channels to the system logs. Using stdout/stderr (where +possible) allows components to be run by the user and the messages are reported +to the user in the terminal. While running the same component through the +orchestrator will send the logs to syslog and by virtue of the log forwarding +components, the messages will appear in cloudwatch. The logging is handled +through a simplistic logging interface which allows different hosts to map the +log messages to their logging services in the most appropriate manner. For +example, windows system events are not an exact match to syslog so it will be +necessary for a windows specific logging library to be used. The logging +interface is expected to be statically linked to the component. This is +acceptable because it is not necessary that all components share the same +logging interface so long as they have the same logging destination. For example +a customer may choose to develop a windows specific component and directly use +the system events while another customer may want a more generic component and +use an interface to allow different hosts to be supported by linking to +different libraries. Two components on the same host may produce log messages +with unique formatting and as long as the messages appear in the host logging +system, they customer will be successful in debugging. + +> NOTE: The log forwarder will be host specific as it captures the host logs and +> forwards them to cloudwatch. The forwarding strategy is critical as it allows +> 100% of the system logs to appear in cloudwatch so long as there is a cloud +> connection. + +> NOTE: Greengrass has log configuration. This configuration must be translated +> to modify the host logging behavior and it must be used by the component +> logging interface to modify a single components log behavior. -Logging - -Logging is intended to use the host logging services. In a unix system, it is expected to simply use stdout/stderr and rely upon the underlying orchestration system to direct these channels to the system logs. Using stdout/stderr (where possible) allows components to be run by the user and the messages are reported to the user in the terminal. While running the same component through the orchestrator will send the logs to syslog and by virtue of the log forwarding components, the messages will appear in cloudwatch. The logging is handled through a simplistic logging interface which allows different hosts to map the log messages to their logging services in the most appropriate manner. For example, windows system events are not an exact match to syslog so it will be necessary for a windows specific logging library to be used. The logging interface is expected to be statically linked to the component. This is acceptable because it is not necessary that all components share the same logging interface so long as they have the same logging destination. For example a customer may choose to develop a windows specific component and directly use the system events while another customer may want a more generic component and use an interface to allow different hosts to be supported by linking to different libraries. Two components on the same host may produce log messages with unique formatting and as long as the messages appear in the host logging system, they customer will be successful in debugging. - -NOTE: The log forwarder will be host specific as it captures the host logs and forwards them to cloudwatch. The forwarding strategy is critical as it allows 100% of the system logs to appear in cloudwatch so long as there is a cloud connection. - -NOTE: Greengrass has log configuration. This configuration must be translated to modify the host logging behavior and it must be used by the component logging interface to modify a single components log behavior. - -Orchestration +### Orchestration -Orchestration is the process of starting the components in the correct order and ensuring that they stay running. Greengrass components provide a recipe document that informs the orchestrator how to start the component and what the dependencies are. Greengrass lite will use the recipe document as the input and translate the document into the host native orchestrator format. For example, the recipe can be processed into a systemd unit file or windows system service registry entry. The translation process must be developed for each host. The translator can be performed by the customer during component development, in the GG cloud console or in the GG edge device. -Recipe documents contain descriptions of each phase of a generic component operation and any dependencies needed by the component. These documents can be translated during deployment into systemd or initd documents and then the translated documents will be used by the host to automatically start Greengrass. A Greengrass system monitor can keep track of the component health by using host native interfaces (systemd/windows has an API for this). This strategy requires 2 simple host native components. +Orchestration is the process of starting the components in the correct order and +ensuring that they stay running. Greengrass components provide a recipe document +that informs the orchestrator how to start the component and what the +dependencies are. Greengrass lite will use the recipe document as the input and +translate the document into the host native orchestrator format. For example, +the recipe can be processed into a systemd unit file or windows system service +registry entry. The translation process must be developed for each host. The +translator can be performed by the customer during component development, in the +GG cloud console or in the GG edge device. Recipe documents contain descriptions +of each phase of a generic component operation and any dependencies needed by +the component. These documents can be translated during deployment into systemd +or initd documents and then the translated documents will be used by the host to +automatically start Greengrass. A Greengrass system monitor can keep track of +the component health by using host native interfaces (systemd/windows has an API +for this). This strategy requires 2 simple host native components. 1. Recipe translation 2. Component Health monitoring -Each host type will require these components but the component functions are well defined which will simplify their code and maintenance. - +Each host type will require these components but the component functions are +well defined which will simplify their code and maintenance. -Component Health Monitoring +### Component Health Monitoring -This component provides the subscription data for IPC for monitoring the system state of the components. +This component provides the subscription data for IPC for monitoring the system +state of the components. -Example +#### Example -SystemD allows processes to collect process information over the “dbus”. A health monitor component can collect the greengrass component information and provide that to subscribers over the databus and through the IPC bridge. -Alternatively, a file could be kept up to date with a list of components and their current state. This file would be updated by orchestration operations (could be a script) and read by the health monitor. +SystemD allows processes to collect process information over the “dbus”. A +health monitor component can collect the greengrass component information and +provide that to subscribers over the databus and through the IPC bridge. +Alternatively, a file could be kept up to date with a list of components and +their current state. This file would be updated by orchestration operations +(could be a script) and read by the health monitor. -Configuration +### Configuration -Greengrass has a global configuration system for all components. This global configuration allows the system state to be backed up and restored outside of the component operation to enable state rollback (not system wide rollback) and system state. All Greengrass hosts have some form of lightweight database available to them. These databases have transaction logging, security and rollback features. The configuration interface provides each component a direct access to the host database. A configuration translator can update the database from GGv2 T-Log files for migration support. +Greengrass has a global configuration system for all components. This global +configuration allows the system state to be backed up and restored outside of +the component operation to enable state rollback (not system wide rollback) and +system state. All Greengrass hosts have some form of lightweight database +available to them. These databases have transaction logging, security and +rollback features. The configuration interface provides each component a direct +access to the host database. A configuration translator can update the database +from GGv2 T-Log files for migration support. -Example +#### Example -SQLite (https://www.sqlite.org/index.html) is one popular small database that offers small size, speed, and reliability. Putting the configuration in an sqlite database would provide fast direct access and the sqlite features can be used for backups, restore and security. An open question is if components should use direct access to sqlite or if they should go through a configuration abstraction. The abstraction allows the database to be changed without affecting the components but sqlite is already cross platform and widely supported on all the hosts being considered for Greengrass lite. +SQLite (https://www.sqlite.org/index.html) is one popular small database that +offers small size, speed, and reliability. Putting the configuration in an +sqlite database would provide fast direct access and the sqlite features can be +used for backups, restore and security. An open question is if components should +use direct access to sqlite or if they should go through a configuration +abstraction. The abstraction allows the database to be changed without affecting +the components but sqlite is already cross platform and widely supported on all +the hosts being considered for Greengrass lite. -Runtime View +## Runtime View -Show a “typical” generic component publishing over MQTT and receiving subscription data from MQTT. +Show a “typical” generic component publishing over MQTT and receiving +subscription data from MQTT. -Simple publish by generic component to IoT Core +### Simple publish by generic component to IoT Core The sequence diagram shows a basic MQTT publish from a generic component. - - -Sequence of operation - -1. The generic component sends an publish message on the IPC socket where it is caught by the IPC bridge. -2. The IPC bridge determines that the publish message is intended for the IoT Core Component and sends a connect message to the IoT Core Component on the databus. The connect message is needed because this is the first time the IPC bridge has connected to the IoT Core component. -3. The IPC bridge translates the publish command into a databus call command and issues the call on the channel made in step 2. -4. The IoT core component issues the publish and returns. Databus call’s are synchronous so the IPC bridge was waiting for the response. -5. The IPC bridge places the response into the correct event stream on the Greengrass IPC system. Greengrass IPC can handle multiple simultaneous asynchronous data channels (event streams) so the IPC bridge must maintain state about the publish command and place the response in the correct channel. +![MQTT Publish Sequence Diagram](./gg-architecture-drawings/sequence%20diagram.png) + +#### Sequence of operation + +1. The generic component sends an publish message on the IPC socket where it is + caught by the IPC bridge. +2. The IPC bridge determines that the publish message is intended for the IoT + Core Component and sends a connect message to the IoT Core Component on the + databus. The connect message is needed because this is the first time the IPC + bridge has connected to the IoT Core component. +3. The IPC bridge translates the publish command into a databus call command and + issues the call on the channel made in step 2. +4. The IoT core component issues the publish and returns. Databus call’s are + synchronous so the IPC bridge was waiting for the response. +5. The IPC bridge places the response into the correct event stream on the + Greengrass IPC system. Greengrass IPC can handle multiple simultaneous + asynchronous data channels (event streams) so the IPC bridge must maintain + state about the publish command and place the response in the correct + channel. 6. Later, the generic component sends a new publish command to the IPC bridge. -7. The publish is immediately translated into a call because the previously opened channel (step 2) is still open. It is possible for a single channel between the IPC bridge and IoT Core component to support many different generic components. +7. The publish is immediately translated into a call because the previously + opened channel (step 2) is still open. It is possible for a single channel + between the IPC bridge and IoT Core component to support many different + generic components. -Observations +### Observations -IPC bridge knowledge dependency upon IPC message handlers +#### IPC bridge knowledge dependency upon IPC message handlers -The IPC bridge routes IPC messages to the component that can process the message. To eliminate a dependency between the IPC bridge and every IPC processing component, IPC processing components must register with the IPC bridge at startup. The IPC bridge will maintain a routing table for each command and will forward the command unchanged to the handling component. The handling component must understand the IPC form of the command. The bridge will perform minimal translating of the incoming message and send that message over the databus to the processing component. +The IPC bridge routes IPC messages to the component that can process the +message. To eliminate a dependency between the IPC bridge and every IPC +processing component, IPC processing components must register with the IPC +bridge at startup. The IPC bridge will maintain a routing table for each command +and will forward the command unchanged to the handling component. The handling +component must understand the IPC form of the command. The bridge will perform +minimal translating of the incoming message and send that message over the +databus to the processing component. -Minimizing IPC bridge state +#### Minimizing IPC bridge state -The synchronous nature of databus commands allows the IPC bridge to maintain ZERO state for each message. The message will arrive on IPC, it will be routed to a dashboard component and the message handler will block waiting for the dashboard component response. The response will then be routed back to the IPC source in the same function that received the message. Incoming IPC messages will need worker threads or similar mechanisms to ensure sufficient parallelism in the IPC bridge system to minimize latency. +The synchronous nature of databus commands allows the IPC bridge to maintain +ZERO state for each message. The message will arrive on IPC, it will be routed +to a dashboard component and the message handler will block waiting for the +dashboard component response. The response will then be routed back to the IPC +source in the same function that received the message. Incoming IPC messages +will need worker threads or similar mechanisms to ensure sufficient parallelism +in the IPC bridge system to minimize latency. -Long running IPC commands (subscriptions) +#### Long running IPC commands (subscriptions) -A subscription on IPC is an example of a long running IPC command that will be periodically updated as new information becomes available. The IPC bridge will use one of the the databus subscription strategies (above). The exact choice depends upon the size/performance tradeoffs of that IPC bridge and it would be possible to write different bridges that optimize for different use-cases. +A subscription on IPC is an example of a long running IPC command that will be +periodically updated as new information becomes available. The IPC bridge will +use one of the the databus subscription strategies (above). The exact choice +depends upon the size/performance tradeoffs of that IPC bridge and it would be +possible to write different bridges that optimize for different use-cases. -IPC Security +#### IPC Security -Generic components have access permissions for IPC commands. These are conveyed though configuration settings. The IPC bridge component must validate permissions before honoring a request. +Generic components have access permissions for IPC commands. These are conveyed +though configuration settings. The IPC bridge component must validate +permissions before honoring a request. -Deployment View +## Deployment View -Show how a deployment will work from receiving a job, downloading the artifacts, executing the recipe +Show how a deployment will work from receiving a job, downloading the artifacts, +executing the recipe -Basic Deployment +### Basic Deployment A basic component deployment follows the steps in the diagram below. +![deployment process](./gg-architecture-drawings/deployment%20view.png) -1. A job document is sent from the job service into Greengrass to be processed by the deployment service. -2. The deployment service downloads all the artifacts into the artifact store. The source is usually from S3. -3. The deployment service consults with the Greengrass service to ensure the correct versions of the job specified components are being downloaded -4. The recipe is fetched from the artifact store and converted to the host specific orchestrator data. +1. A job document is sent from the job service into Greengrass to be processed + by the deployment service. +2. The deployment service downloads all the artifacts into the artifact store. + The source is usually from S3. +3. The deployment service consults with the Greengrass service to ensure the + correct versions of the job specified components are being downloaded +4. The recipe is fetched from the artifact store and converted to the host + specific orchestrator data. -After the orchestration data has been delivered to the host, the deployment system can command the host to activate the new component. +After the orchestration data has been delivered to the host, the deployment +system can command the host to activate the new component. -Example +### Example -In a linux systemd environment, the orchestration data arrives as a one or more unit files. A typical example of a systemd unit file is shown below. +In a linux systemd environment, the orchestration data arrives as a one or more +unit files. A typical example of a systemd unit file is shown below. +``` [Unit] Description=A greengrass component StartLimitIntervalSec=3600 StartLimitBurst=3 #HARD dependency -Requires= IPCbridge.service +Requires= IPCbridge.service #WEAK Depenency Wants=TES.service -#For Version +#For Version Conflicts= TES@1.2.service [Service] @@ -344,49 +553,55 @@ RestartSec=10s [Install] WantedBy=GreengrassCore.target +``` +After this file is created the component can be started manually by: systemctl +enable .service and it can be configured to start at boot +by: systemctl start .service Of course it can also by +started programmatically through libsystemd and the dbus API. -After this file is created the component can be started manually by: -systemctl enable .service -and it can be configured to start at boot by: -systemctl start .service -Of course it can also by started programmatically through libsystemd and the dbus API. +### Motivation -Motivation +The deployment motivation is to reuse the host system to the extent possible. +Greengrass V2 builds a unique greengrass orchestration system so that it will be +portable. That system is very complex, the initial POC indicates that supporting +multiple translating systems for recipe files is less work than a single common +system (at least for a systemd target). -The deployment motivation is to reuse the host system to the extent possible. Greengrass V2 builds a unique greengrass orchestration system so that it will be portable. That system is very complex, the initial POC indicates that supporting multiple translating systems for recipe files is less work than a single common system (at least for a systemd target). - -Quality and/or Performance Features +### Quality and/or Performance Features Deployment happens once so the key quality/performance attributes are: +1. Accuracy - Ensure that the correct behavior is translated to the underlying host orchestrator +2. Simplicity - Ensure that the deployment process is clear, debuggable and maintainable. +3. Traceable - Ensure every step of the process is logged and auditable. -Accuracy Ensure that the correct behavior is translated to the underlying host orchestrator -Simplicity Ensure that the deployment process is clear, debuggable and maintainable. With multiple translation systems for different hosts, the clarity and maintainability of these systems is critical to the simplicity. -Traceable Ensure every step of the process is logged and auditable. - - - - -Rollback +## Rollback -Rollback is a feature used by Greengrass to restore a previously operating condition. Typically the system state will be captured before a deployment and if the deployment fails, the state can be restored. That state can be quite deep as the deployments can affect the entire filesystem. +Rollback is a feature used by Greengrass to restore a previously operating +condition. Typically the system state will be captured before a deployment and +if the deployment fails, the state can be restored. That state can be quite deep +as the deployments can affect the entire filesystem. -Constraints on Rollback +#### Constraints on Rollback -Size/Scope Does the rollback cover Greengrass related systems or the the entire filesystem? A deployment is capable of modifying the entire filesystem. The operator knows the extend of each deployment and what the rollback can cover. -Filesystem Different filesystems have different restrictions on how a rollback can happen. ZFS/BTRFS snapshot? -Backup Copy of Files? -Links to old versions of binaries? - +| | | +| ---------- | ------------------------------------------------------------------------- | +| Size/Scope | A deployment is capable of modifying the entire filesystem. | +| Filesystem | Different filesystems have different features that can affect a rollback. | -Basic Rollback +#### Basic Rollback -Rollback is implemented in a device specific way by a failure component. The failure component has the task of correcting a failed component or rolling back to a previous state. Detecting a failed component is the responsibility of the host orchestrator. +Rollback is implemented in a device specific way by a failure component. The +failure component has the task of correcting a failed component or rolling back +to a previous state. Detecting a failed component is the responsibility of the +host orchestrator. -Example: +##### Example: -A service FOO is installed on a systemd host. The recipe is translated to the following systemd unit file. +A service FOO is installed on a systemd host. The recipe is translated to the +following systemd unit file. +``` [Unit] Description=FOO StartLimitIntervalSec=3600 @@ -396,94 +611,154 @@ OnFailure=greengrass-recovery.service [Service] ExecStart=/usr/local/sbin/foo.sh Restart=on-failure +``` -This unit file will restart FOO 3 times within an hour should FOO fail in any way. After 3 failures in an hour it will execute the greengrass-recovery.service. The greengrass-recovery.service is described in the following unit file. +This unit file will restart FOO 3 times within an hour should FOO fail in any +way. After 3 failures in an hour it will execute the +greengrass-recovery.service. The `greengrass-recovery.service` is described in +the following unit file. +``` [Unit] Description=Greengrass Recovery [Service] Type=oneshot -ExecStart=/usr/local/sbin/greengrass-recovery.sh +ExecStart=/usr/local/sbin/greengrass-recovery.sh +``` -This unit will launch the recovery task ONCE. The recovery task will take the actions appropriate for this host. That could be attempting repair or it could be rolling back to a previous version. +This unit will launch the recovery task ONCE. The recovery task will take the +actions appropriate for this host. That could be attempting repair or it could +be rolling back to a previous version. -Note: Windows also has a similar mechanism for system services. After a failure, the windows service manager can perform actions specified in the service registry. +Note: Windows also has a similar mechanism for system services. After a failure, +the windows service manager can perform actions specified in the service +registry. https://learn.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_failure_actionsa -Rollback Strategies +## Rollback Strategies -Different filesystems have special options that can simplify roll-back. There are 3 different scopes to a roll-back. +Different filesystems have special options that can simplify roll-back. There +are 3 different scopes to a roll-back. -Component Just the failing component needs corrective action or a roll-back -Greengrass All of greengrass needs corrective action or a roll-back -System The entire OS needs corrective action or a roll-back +| | | +| ---------- | ----------------------------------------------------------------- | +| Component | Just the failing component needs corrective action or a roll-back | +| Greengrass | All of greengrass needs corrective action or a roll-back | +| System | The entire OS needs corrective action or a roll-back | -These scopes need to be considered when creating the recovery process. It may be necessary to partition the filesystem to limit the scope of some rollback technologies. +These scopes need to be considered when creating the recovery process. It may be +necessary to partition the filesystem to limit the scope of some rollback +technologies. -Example 1 ZFS +#### Example 1 - ZFS -ZFS supports filesystem snapshots. These are named points in the life of the filesystem and it is possible to revert the filesystem to a snapshot and all data newer than the snapshot is lost. This is very useful to roll back a greengrass device but it will destroy log data that might be needed to diagnose the cause of the rollback. Using a separate data partition on the filesystem to hold the log data is one solution. In this way, the Greengrass system can be rolled back but the logs are retained. This is not the only solution but it points out that some care must be taken with filesystem rollback features. +ZFS supports filesystem snapshots. These are named points in the life of the +filesystem and it is possible to revert the filesystem to a snapshot and all +data newer than the snapshot is lost. This is very useful to roll back a +greengrass device but it will destroy log data that might be needed to diagnose +the cause of the rollback. Using a separate data partition on the filesystem to +hold the log data is one solution. In this way, the Greengrass system can be +rolled back but the logs are retained. This is not the only solution but it +points out that some care must be taken with filesystem rollback features. -Example 2 OSTREE +#### Example 2 OSTREE -The ostree (https://github.com/ostreedev/ostree) system allows “gitlike” access to artifacts downloaded into a running system. The system uses hardlinks on the downloaded artifacts to do transactional upgrades and rollbacks all the way to the root filesystem level. i.e. it is possible to replace the entire operating system. +The ostree (https://github.com/ostreedev/ostree) system allows “gitlike” access +to artifacts downloaded into a running system. The system uses hardlinks on the +downloaded artifacts to do transactional upgrades and rollbacks all the way to +the root filesystem level. i.e. it is possible to replace the entire operating +system. -Example 3 SQLite +#### Example 3 SQLite -For a component level or a greengrass level rollback it may be sufficient to move the configuration database to an earlier point and restart greengrass. This can be easily accomplished in SQLite because it supports rollback journals and the state can be restored to previous points. The rollback process would move the SQLite to the previous point and then restart greengrass. +For a component level or a greengrass level rollback it may be sufficient to +move the configuration database to an earlier point and restart greengrass. This +can be easily accomplished in SQLite because it supports rollback journals and +the state can be restored to previous points. The rollback process would move +the SQLite to the previous point and then restart greengrass. -Advanced options +### Advanced options -per-component failure response +#### per-component failure response -Greengrass Lite consists of core components that are each started by host orchestration files. It is possible per-component failure recovery processes to take place. This level of detail is not currently defined in the recipe files so the current recommendation is a global roll-back. However, a future update to recipes could allow corrective action on each component before a global roll-back takes places. +Greengrass Lite consists of core components that are each started by host +orchestration files. It is possible per-component failure recovery processes to +take place. This level of detail is not currently defined in the recipe files so +the current recommendation is a global roll-back. However, a future update to +recipes could allow corrective action on each component before a global +roll-back takes places. -graceful degradation +#### graceful degradation -Greengrass Lite consists of core components that may not all fail in the event of a problem. In this case, some services may be able to continue operation allowing a “limp-home” mode. This behavior can be created in the recovery handling. +Greengrass Lite consists of core components that may not all fail in the event +of a problem. In this case, some services may be able to continue operation +allowing a “limp-home” mode. This behavior can be created in the recovery +handling. -Logging +#### Logging -It is critical that the cloudwatch log forwarding task be as independent as possible to maximize the chances of cloudwatch getting a complete set of logs during a failure. The host logging system is the log path in all cases (before forwarding) so even the case of a full roll-back to an earlier state, the logs must remain intact. If a filesystem snapshot is used for roll-back, the logs must be in a different partition to avoid being affected and loosing log data. +It is critical that the cloudwatch log forwarding task be as independent as +possible to maximize the chances of cloudwatch getting a complete set of logs +during a failure. The host logging system is the log path in all cases (before +forwarding) so even the case of a full roll-back to an earlier state, the logs +must remain intact. If a filesystem snapshot is used for roll-back, the logs +must be in a different partition to avoid being affected and loosing log data. -Architecture Decisions +## Architecture Decisions -The architectural strategy of this Greengrass lite is to be as simple as possible and letting the host native services handle processes to the extent possible. Memory safety will be handled by using industry standard tools such as CBMC, valgrind, and fuzzers or by language choices such as RUST. These decisions can be made on a component by component basis because each component is an independent application. Dependencies between components are minimized by their isolation with any dependency caused by RPC needs across the databus. This type of dependency can be easily mocked for testing allowing components to be developed and validated in isolation. +The architectural strategy of this Greengrass lite is to be as simple as +possible and letting the host native services handle processes to the extent +possible. Memory safety will be handled by using industry standard tools such as +CBMC, valgrind, and fuzzers or by language choices such as RUST. These decisions +can be made on a component by component basis because each component is an +independent application. Dependencies between components are minimized by their +isolation with any dependency caused by RPC needs across the databus. This type +of dependency can be easily mocked for testing allowing components to be +developed and validated in isolation. ## Risks and Technical Debts -Risk Mitigation Impact -Host default orchestration insufficient to run a recipe Write a custom orchestrator Only orchestration component is affected -databus performance insufficient for some tasks 1. Databus can be customized behind the abstraction -2. Re-evaluate the component functional division of effort -3. Some components can make a direct connection to AWS 1. Only the databus library is affected. -2. Multiple components may be affected as the new function division is implemented -3. Only the performance components are affected. -High Process count affecting system performance 1. Evaluate the databus thread usage. A star topology is slower but may have fewere threads. -2. Combine some core components -3. Consider more capable HW 1. Only the databus library is affected but performance changes must be benchmarked -2. This will be complex and introduces the dependencies between components. -3. The system may just be too slow for the desired load. -A expected host feature does not exist on a host 1. Change hosts -2. The interface component can be more complex and implement the required feature. 1. Even an OS change can add significant complexity to a deployment. -2. A more complicated interface component to maintain. -Assumptions that multiple small host-specific components are a lower maintence burden than 1 cross platform component with multiple platform abstraction layers. Test the assumption frequenctly. It is always possible to write a component as a single cross platform application with the platform abstraction layer. Some greengrass features may be best implemented multiple times for each host and other features may be best implemented in a more centralized manner. This architecture allows each feature to be evaluated seperately. Lots of debate on the best option for each feature. +| Risk | Mitigation | Impact | +| ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Host default orchestration insufficient to run a recipe | Write a custom orchestrator | Only orchestration component is affected | +| databus performance insufficient for some tasks | 1. Databus can be customized behind the abstraction
2. Re-evaluate the component functional division of effort
3. Some components can make a direct connection to AWS | 1. Only the databus library is affected.
2. Multiple components may be affected as the new function division is implemented.
3. Only the performance components are affected. | +| High Process count affecting system performance | 1. Evaluate the databus thread usage. A star topology is slower but may have fewere threads.
2. Combine some core components
3. Consider more capable HW | 1. Only the databus library is affected but performance changes must be benchmarked
2. This will be complex and introduces the dependencies between components.
3. The system may just be too slow for the desired load.
| +| An expected host feature does not exist on a host | 1. Change hosts
2. The interface component can be more complex and implement the required feature. | 1. Even an OS change can add significant complexity to a deployment.
2. A more complicated interface component to maintain. | ## Additional Areas to Discuss -* Configuration store - each component has configuration associated with it, that (GGv2-classic) is timestamp merged with multiple authority and available via IPC configuration functions. Related- if someone brings a new protocol translation, how do they apply the security guards on that too. -* “config.yaml”/TLOG - debate on if it is really necessary/desirable to switch between GG-classic and GG-lite. If you can relax that requirement - in which case the argument may be asked if it’s really the same “v2” product - it relaxes need to capture and log config transactions. Related question is how the top-level system configuration is applied. -* IPC security - there is rule-based security around IPC, and also finer detail in pub/sub actions. This doesn’t map well to file permissions. Deeper dive in this with AppSec involvement. In particular, there is an identity attestation mechanism possible with GG being orchestrator that allows a component to provide it is acting on behalf of a component identity. GG starts component “FooBar”, presenting a token representing “FooBar”, that the process re-presents to GG to prove it is “FooBar” or a representative of “FooBar” - a non-breaking alternative to obtain this identity is required as FooBar is now started by systemd and not by the GG orchestrator. -* With GG-classic and previous GG-lite design, there was a path on how components/binary signatures can be verified to allow end-to-end attestation - how might this be accomplished here -* The architecture is thread heavy to promote simplicity. Do an estimation of an application that has sufficient complexity of pub/subs, and number of threads that are likely to be consumed (but idle) - what is the resource cost of that application - this will help confirm that the approach isn’t going to be a problem. -* Any other potential issues when running in docker? systemd is one -* How do we get to an estimate of time to implement this that the team can stand by? +- Configuration store - each component has configuration associated with it, + that (GGv2-classic) is timestamp merged with multiple authority and available + via IPC configuration functions. Related- if someone brings a new protocol + translation, how do they apply the security guards on that too. +- “config.yaml”/TLOG - debate on if it is really necessary/desirable to switch + between GG-classic and GG-lite. If you can relax that requirement - in which + case the argument may be asked if it’s really the same “v2” product - it + relaxes need to capture and log config transactions. Related question is how + the top-level system configuration is applied. +- IPC security - there is rule-based security around IPC, and also finer detail + in pub/sub actions. This doesn’t map well to file permissions. Deeper dive in + this with AppSec involvement. In particular, there is an identity attestation + mechanism possible with GG being orchestrator that allows a component to + provide it is acting on behalf of a component identity. GG starts component + “FooBar”, presenting a token representing “FooBar”, that the process + re-presents to GG to prove it is “FooBar” or a representative of “FooBar” - a + non-breaking alternative to obtain this identity is required as FooBar is now + started by systemd and not by the GG orchestrator. +- With GG-classic and previous GG-lite design, there was a path on how + components/binary signatures can be verified to allow end-to-end attestation - + how might this be accomplished here +- The architecture is thread heavy to promote simplicity. Do an estimation of an + application that has sufficient complexity of pub/subs, and number of threads + that are likely to be consumed (but idle) - what is the resource cost of that + application - this will help confirm that the approach isn’t going to be a + problem. +- Any other potential issues when running in docker? systemd is one ## Glossary -| Term | Definition | -| ----- | ---------- | -| GG IPC | The Interprocess communication system used by Greengrass V2 for communications between generic components and nucleus (GGv2 application)| -| databus | The IPC system suggested in this document for communications between core components and future "native" components. | -| host | The collection of CPU, OS, and OS details that create the running environment for a specific Greengrass system. | - +| Term | Definition | +| ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| GG IPC | The Interprocess communication system used by Greengrass V2 for communications between generic components and nucleus (GGv2 application) | +| databus | The IPC system suggested in this document for communications between core components and future "native" components. | +| host | The collection of CPU, OS, and OS details that create the running environment for a specific Greengrass system. | From 5d5b2095160007e6edd5a163e740b9300040a2b4 Mon Sep 17 00:00:00 2001 From: Joe Julicher Date: Wed, 22 Jan 2025 17:29:25 +0000 Subject: [PATCH 14/14] check fixes --- docs/design/gg-architecture-drawings/readme.txt | 2 +- docs/design/gg-architecture.md | 9 ++++++--- misc/dictionary.txt | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/design/gg-architecture-drawings/readme.txt b/docs/design/gg-architecture-drawings/readme.txt index 83aab5de5..9ac1400df 100644 --- a/docs/design/gg-architecture-drawings/readme.txt +++ b/docs/design/gg-architecture-drawings/readme.txt @@ -1 +1 @@ -support drawings for the gg-architecture document. \ No newline at end of file +support drawings for the gg-architecture document. diff --git a/docs/design/gg-architecture.md b/docs/design/gg-architecture.md index 03f666696..12fafb9ec 100644 --- a/docs/design/gg-architecture.md +++ b/docs/design/gg-architecture.md @@ -536,7 +536,7 @@ StartLimitIntervalSec=3600 StartLimitBurst=3 #HARD dependency Requires= IPCbridge.service -#WEAK Depenency +#WEAK Dependency Wants=TES.service #For Version Conflicts= TES@1.2.service @@ -571,8 +571,11 @@ system (at least for a systemd target). ### Quality and/or Performance Features Deployment happens once so the key quality/performance attributes are: -1. Accuracy - Ensure that the correct behavior is translated to the underlying host orchestrator -2. Simplicity - Ensure that the deployment process is clear, debuggable and maintainable. + +1. Accuracy - Ensure that the correct behavior is translated to the underlying + host orchestrator +2. Simplicity - Ensure that the deployment process is clear, debuggable and + maintainable. 3. Traceable - Ensure every step of the process is logged and auditable. ## Rollback diff --git a/misc/dictionary.txt b/misc/dictionary.txt index 4f6ae16da..14408fcbd 100644 --- a/misc/dictionary.txt +++ b/misc/dictionary.txt @@ -4,6 +4,7 @@ argp armv awsiotsdk boto +cbmc cgexec clientfd clientv @@ -88,6 +89,7 @@ NOLINTNEXTLINE NOMEM NOPASSWD nproc +ostree parentid pidfd pkgs

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 cC^YPZxA8VQ3&`^QPNZ_yJ->fKXW3uJOBUy literal 0 HcmV?d00001 diff --git a/docs/design/gg-architecture-drawings/technical context.png b/docs/design/gg-architecture-drawings/technical context.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8400d309a643552d20d8f31a9685b578088f89 GIT binary patch literal 30439 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 qQ4kzt(EkFp_^yrs literal 0 HcmV?d00001 From 2c594a086dc32ef307632aa98b34b769827d6e4d Mon Sep 17 00:00:00 2001 From: Joseph Julicher Date: Tue, 21 Jan 2025 17:24:36 -0700 Subject: [PATCH 12/14] added sequence diagram for mqtt messages --- .../sequence diagram.png | Bin 0 -> 60697 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/design/gg-architecture-drawings/sequence diagram.png diff --git a/docs/design/gg-architecture-drawings/sequence diagram.png b/docs/design/gg-architecture-drawings/sequence diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..445f0b93598bd379449f9ad485ef68a102479135 GIT binary patch literal 60697 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