From ffef24abe69bb6303b9ea94cb5e8ae37e290d951 Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Fri, 10 Mar 2017 14:48:41 -0800 Subject: [PATCH 1/5] =?UTF-8?q?Remove=20=E2=80=9CBackends=E2=80=9D=20folde?= =?UTF-8?q?r=20(merging=20=E2=80=9Cbackends=E2=80=9D=20with=20=E2=80=9CBac?= =?UTF-8?q?kends=E2=80=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../checkpointing/Backends/AzureBlob.scala | 178 ------------------ .../Backends/CheckpointBackend.scala | 25 --- 2 files changed, 203 deletions(-) delete mode 100644 src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/AzureBlob.scala delete mode 100644 src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/CheckpointBackend.scala diff --git a/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/AzureBlob.scala b/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/AzureBlob.scala deleted file mode 100644 index db3d580..0000000 --- a/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/AzureBlob.scala +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -package com.microsoft.azure.iot.iothubreact.checkpointing.backends - -import java.io.IOException -import java.net.URISyntaxException -import java.util.UUID - -import com.microsoft.azure.iot.iothubreact.checkpointing.Configuration -import com.microsoft.azure.iot.iothubreact.scaladsl.IoTHubPartition -import com.microsoft.azure.iot.iothubreact.{Logger, Retry} -import com.microsoft.azure.storage.blob.CloudBlockBlob -import com.microsoft.azure.storage.{AccessCondition, CloudStorageAccount, OperationContext, StorageException} - -import scala.concurrent.duration._ -import scala.language.{implicitConversions, postfixOps} - -/** Storage logic to write checkpoints to Azure blobs - */ -private[iothubreact] class AzureBlob extends CheckpointBackend with Logger { - - // Set the account to point either to Azure or the emulator - val account: CloudStorageAccount = if (Configuration.azureBlobEmulator) - CloudStorageAccount.getDevelopmentStorageAccount() - else - CloudStorageAccount.parse(Configuration.azureBlobConnectionString) - - val client = account.createCloudBlobClient() - - // Set the container, ensure it's ready - val container = client.getContainerReference(checkpointNamespace) - try { - Retry(2, 5 seconds) { - container.createIfNotExists() - } - } catch { - case e: StorageException ⇒ { - log.error(e, s"Err: ${e.getMessage}; Code: ${e.getErrorCode}; Status: ${e.getHttpStatusCode}") - throw e - } - - case e: IOException ⇒ { - log.error(e, e.getMessage) - throw e - } - - case e: Exception ⇒ { - log.error(e, e.getMessage) - throw e - } - } - - /** Read the offset of the last record processed for the given partition - * - * @param partition Partition number - * - * @return Offset of the last record (already) processed - */ - override def readOffset(partition: Int): String = { - val file = getBlockBlobReference(partition) - try { - file.downloadText() - } catch { - case e: StorageException ⇒ { - if (e.getErrorCode == "BlobNotFound") { - IoTHubPartition.OffsetCheckpointNotFound - } else { - log.error(e, s"Err: ${e.getMessage}; Code: ${e.getErrorCode}; Status: ${e.getHttpStatusCode}") - throw e - } - } - - case e: IOException ⇒ { - log.error(e, e.getMessage) - throw e - } - - case e: Exception ⇒ { - log.error(e, e.getMessage) - throw e - } - } - } - - /** Store the offset for the given IoT hub partition - * - * @param partition IoT hub partition number - * @param offset IoT hub partition offset - */ - override def writeOffset(partition: Int, offset: String): Unit = { - val file = getBlockBlobReference(partition) - val leaseId = acquireLease(file) - writeAndRelease(file, leaseId, offset) - } - - private[this] def getBlockBlobReference(partition: Int): CloudBlockBlob = { - try { - Retry(2, 2 seconds) { - container.getBlockBlobReference(filename(partition)) - } - } catch { - - case e: StorageException ⇒ { - log.error(e, e.getMessage) - throw e - } - - case e: URISyntaxException ⇒ { - log.error(e, e.getMessage) - throw e - } - - case e: Exception ⇒ { - log.error(e, e.getMessage) - throw e - } - } - } - - private[this] def acquireLease(file: CloudBlockBlob): String = { - // Note: the lease ID must be a Guid otherwise the service returs 400 - var leaseId = UUID.randomUUID().toString - try { - file.acquireLease(Configuration.azureBlobLeaseDuration.toSeconds.toInt, leaseId) - } catch { - - case e: StorageException ⇒ { - if (e.getErrorCode == "BlobNotFound") { - leaseId = "" - } else { - log.error(e, s"Err: ${e.getMessage}; Code: ${e.getErrorCode}; Status: ${e.getHttpStatusCode}") - throw e - } - } - - case e: Exception ⇒ { - log.error(e, e.getMessage) - throw e - } - } - - leaseId - } - - private[this] def writeAndRelease(file: CloudBlockBlob, leaseId: String, content: String): Unit = { - - // The access condition depends on the file existing - val accessCondition = if (leaseId == "") - AccessCondition.generateEmptyCondition() - else - AccessCondition.generateLeaseCondition(leaseId) - - try { - file.uploadText(content, "UTF-8", accessCondition, null, new OperationContext) - - // If this is a new file, there is no lease to release - if (leaseId != "") file.releaseLease(accessCondition) - } catch { - - case e: StorageException ⇒ { - log.error(e, e.getMessage) - throw e - } - - case e: IOException ⇒ { - log.error(e, e.getMessage) - throw e - } - - case e: Exception ⇒ { - log.error(e, e.getMessage) - throw e - } - } - } - - private[this] def filename(partition: Int): String = "partition-" + partition -} diff --git a/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/CheckpointBackend.scala b/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/CheckpointBackend.scala deleted file mode 100644 index d17aed3..0000000 --- a/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/Backends/CheckpointBackend.scala +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -package com.microsoft.azure.iot.iothubreact.checkpointing.backends - -import com.microsoft.azure.iot.iothubreact.checkpointing.Configuration - -trait CheckpointBackend { - - def checkpointNamespace: String = Configuration.storageNamespace - - /** Read the offset of the last record processed for the given partition - * - * @param partition IoT hub partition number - * - * @return Offset of the last record (already) processed - */ - def readOffset(partition: Int): String - - /** Store the offset for the given IoT hub partition - * - * @param partition IoT hub partition number - * @param offset IoT hub partition offset - */ - def writeOffset(partition: Int, offset: String): Unit -} From c181b729eb177f0a6ec2fd29e1acf42167acc715 Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Fri, 10 Mar 2017 14:49:38 -0800 Subject: [PATCH 2/5] =?UTF-8?q?Move=20=E2=80=9CBackends=E2=80=9D=20folder?= =?UTF-8?q?=20content=20to=20=E2=80=9Cbackends=E2=80=9D=20(merging=20?= =?UTF-8?q?=E2=80=9Cbackends=E2=80=9D=20with=20=E2=80=9CBackends=E2=80=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../checkpointing/backends/AzureBlob.scala | 178 ++++++++++++++++++ .../backends/CheckpointBackend.scala | 25 +++ 2 files changed, 203 insertions(+) create mode 100644 src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/AzureBlob.scala create mode 100644 src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/CheckpointBackend.scala diff --git a/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/AzureBlob.scala b/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/AzureBlob.scala new file mode 100644 index 0000000..db3d580 --- /dev/null +++ b/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/AzureBlob.scala @@ -0,0 +1,178 @@ +// Copyright (c) Microsoft. All rights reserved. + +package com.microsoft.azure.iot.iothubreact.checkpointing.backends + +import java.io.IOException +import java.net.URISyntaxException +import java.util.UUID + +import com.microsoft.azure.iot.iothubreact.checkpointing.Configuration +import com.microsoft.azure.iot.iothubreact.scaladsl.IoTHubPartition +import com.microsoft.azure.iot.iothubreact.{Logger, Retry} +import com.microsoft.azure.storage.blob.CloudBlockBlob +import com.microsoft.azure.storage.{AccessCondition, CloudStorageAccount, OperationContext, StorageException} + +import scala.concurrent.duration._ +import scala.language.{implicitConversions, postfixOps} + +/** Storage logic to write checkpoints to Azure blobs + */ +private[iothubreact] class AzureBlob extends CheckpointBackend with Logger { + + // Set the account to point either to Azure or the emulator + val account: CloudStorageAccount = if (Configuration.azureBlobEmulator) + CloudStorageAccount.getDevelopmentStorageAccount() + else + CloudStorageAccount.parse(Configuration.azureBlobConnectionString) + + val client = account.createCloudBlobClient() + + // Set the container, ensure it's ready + val container = client.getContainerReference(checkpointNamespace) + try { + Retry(2, 5 seconds) { + container.createIfNotExists() + } + } catch { + case e: StorageException ⇒ { + log.error(e, s"Err: ${e.getMessage}; Code: ${e.getErrorCode}; Status: ${e.getHttpStatusCode}") + throw e + } + + case e: IOException ⇒ { + log.error(e, e.getMessage) + throw e + } + + case e: Exception ⇒ { + log.error(e, e.getMessage) + throw e + } + } + + /** Read the offset of the last record processed for the given partition + * + * @param partition Partition number + * + * @return Offset of the last record (already) processed + */ + override def readOffset(partition: Int): String = { + val file = getBlockBlobReference(partition) + try { + file.downloadText() + } catch { + case e: StorageException ⇒ { + if (e.getErrorCode == "BlobNotFound") { + IoTHubPartition.OffsetCheckpointNotFound + } else { + log.error(e, s"Err: ${e.getMessage}; Code: ${e.getErrorCode}; Status: ${e.getHttpStatusCode}") + throw e + } + } + + case e: IOException ⇒ { + log.error(e, e.getMessage) + throw e + } + + case e: Exception ⇒ { + log.error(e, e.getMessage) + throw e + } + } + } + + /** Store the offset for the given IoT hub partition + * + * @param partition IoT hub partition number + * @param offset IoT hub partition offset + */ + override def writeOffset(partition: Int, offset: String): Unit = { + val file = getBlockBlobReference(partition) + val leaseId = acquireLease(file) + writeAndRelease(file, leaseId, offset) + } + + private[this] def getBlockBlobReference(partition: Int): CloudBlockBlob = { + try { + Retry(2, 2 seconds) { + container.getBlockBlobReference(filename(partition)) + } + } catch { + + case e: StorageException ⇒ { + log.error(e, e.getMessage) + throw e + } + + case e: URISyntaxException ⇒ { + log.error(e, e.getMessage) + throw e + } + + case e: Exception ⇒ { + log.error(e, e.getMessage) + throw e + } + } + } + + private[this] def acquireLease(file: CloudBlockBlob): String = { + // Note: the lease ID must be a Guid otherwise the service returs 400 + var leaseId = UUID.randomUUID().toString + try { + file.acquireLease(Configuration.azureBlobLeaseDuration.toSeconds.toInt, leaseId) + } catch { + + case e: StorageException ⇒ { + if (e.getErrorCode == "BlobNotFound") { + leaseId = "" + } else { + log.error(e, s"Err: ${e.getMessage}; Code: ${e.getErrorCode}; Status: ${e.getHttpStatusCode}") + throw e + } + } + + case e: Exception ⇒ { + log.error(e, e.getMessage) + throw e + } + } + + leaseId + } + + private[this] def writeAndRelease(file: CloudBlockBlob, leaseId: String, content: String): Unit = { + + // The access condition depends on the file existing + val accessCondition = if (leaseId == "") + AccessCondition.generateEmptyCondition() + else + AccessCondition.generateLeaseCondition(leaseId) + + try { + file.uploadText(content, "UTF-8", accessCondition, null, new OperationContext) + + // If this is a new file, there is no lease to release + if (leaseId != "") file.releaseLease(accessCondition) + } catch { + + case e: StorageException ⇒ { + log.error(e, e.getMessage) + throw e + } + + case e: IOException ⇒ { + log.error(e, e.getMessage) + throw e + } + + case e: Exception ⇒ { + log.error(e, e.getMessage) + throw e + } + } + } + + private[this] def filename(partition: Int): String = "partition-" + partition +} diff --git a/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/CheckpointBackend.scala b/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/CheckpointBackend.scala new file mode 100644 index 0000000..d17aed3 --- /dev/null +++ b/src/main/scala/com/microsoft/azure/iot/iothubreact/checkpointing/backends/CheckpointBackend.scala @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft. All rights reserved. + +package com.microsoft.azure.iot.iothubreact.checkpointing.backends + +import com.microsoft.azure.iot.iothubreact.checkpointing.Configuration + +trait CheckpointBackend { + + def checkpointNamespace: String = Configuration.storageNamespace + + /** Read the offset of the last record processed for the given partition + * + * @param partition IoT hub partition number + * + * @return Offset of the last record (already) processed + */ + def readOffset(partition: Int): String + + /** Store the offset for the given IoT hub partition + * + * @param partition IoT hub partition number + * @param offset IoT hub partition offset + */ + def writeOffset(partition: Int, offset: String): Unit +} From 19f30e120867c49a43748eab8e9ffb372c57b98f Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Fri, 10 Mar 2017 15:38:30 -0800 Subject: [PATCH 3/5] Use sbt modules for the sample demos --- build.sbt | 6 ++++-- samples-java/build.sbt | 3 +++ samples-java/pom.xml | 3 ++- samples-java/project/build.properties | 1 + samples-scala/build.sbt | 15 --------------- .../src/main/scala/C_Throughput/Monitoring.scala | 2 +- .../src/main/scala/D_Throttling/Monitoring.scala | 2 +- 7 files changed, 12 insertions(+), 20 deletions(-) create mode 100644 samples-java/build.sbt create mode 100644 samples-java/project/build.properties diff --git a/build.sbt b/build.sbt index 4d8c381..e163037 100644 --- a/build.sbt +++ b/build.sbt @@ -36,7 +36,9 @@ libraryDependencies <++= (scalaVersion) { ) } -lazy val root = project.in(file(".")).configs(IntegrationTest) +lazy val iotHubReact = project.in(file(".")).configs(IntegrationTest) +lazy val samplesScala = project.in(file("samples-scala")).dependsOn(iotHubReact) +lazy val samplesJava = project.in(file("samples-java")).dependsOn(iotHubReact) /* Publishing options * see http://www.scala-sbt.org/0.13/docs/Artifacts.html @@ -70,7 +72,7 @@ pomExtra := /** Miscs */ -logLevel := Level.Debug // Debug|Info|Warn|Error +logLevel := Level.Info // Debug|Info|Warn|Error scalacOptions ++= Seq("-deprecation", "-explaintypes", "-unchecked", "-feature") showTiming := true fork := true diff --git a/samples-java/build.sbt b/samples-java/build.sbt new file mode 100644 index 0000000..9c9ddf2 --- /dev/null +++ b/samples-java/build.sbt @@ -0,0 +1,3 @@ +// Copyright (c) Microsoft. All rights reserved. + +scalaVersion := "2.12.0" diff --git a/samples-java/pom.xml b/samples-java/pom.xml index 1583feb..678e2e5 100644 --- a/samples-java/pom.xml +++ b/samples-java/pom.xml @@ -16,10 +16,11 @@ + com.microsoft.azure.iot iothub-react_2.12 - 0.8.0-DEV.161101a + 0.8.0 com.fasterxml.jackson.core diff --git a/samples-java/project/build.properties b/samples-java/project/build.properties new file mode 100644 index 0000000..13d3ee7 --- /dev/null +++ b/samples-java/project/build.properties @@ -0,0 +1 @@ +sbt.version = 0.13.12 \ No newline at end of file diff --git a/samples-scala/build.sbt b/samples-scala/build.sbt index 12d7b84..9c9ddf2 100644 --- a/samples-scala/build.sbt +++ b/samples-scala/build.sbt @@ -1,18 +1,3 @@ // Copyright (c) Microsoft. All rights reserved. scalaVersion := "2.12.0" -crossScalaVersions := Seq("2.11.8", "2.12.0") - -scalacOptions ++= Seq("-deprecation", "-explaintypes", "-unchecked", "-feature") - -// This repository contains development snapshots. Production releases are in Maven Central. -resolvers += "Dev Snapshots" at "https://dl.bintray.com/microsoftazuretoketi/toketi-repo" - -libraryDependencies ++= { - val prodVersion = "0.7.0" - val devVersion = "0.8.0-DEV.161101a" - - Seq( - "com.microsoft.azure.iot" %% "iothub-react" % devVersion - ) -} diff --git a/samples-scala/src/main/scala/C_Throughput/Monitoring.scala b/samples-scala/src/main/scala/C_Throughput/Monitoring.scala index 45243ae..aaf5107 100644 --- a/samples-scala/src/main/scala/C_Throughput/Monitoring.scala +++ b/samples-scala/src/main/scala/C_Throughput/Monitoring.scala @@ -16,7 +16,7 @@ import scala.language.postfixOps object Monitoring { // Auxiliary vars - private[this] val iotHubPartitions = ConfigFactory.load().getInt("iothub-react.connection.partitions") + private[this] val iotHubPartitions = ConfigFactory.load().getInt("iothub-react.connection.hubPartitions") private[this] var previousTime : Long = 0 private[this] var previousTotal: Long = 0 diff --git a/samples-scala/src/main/scala/D_Throttling/Monitoring.scala b/samples-scala/src/main/scala/D_Throttling/Monitoring.scala index 448b2f9..e395243 100644 --- a/samples-scala/src/main/scala/D_Throttling/Monitoring.scala +++ b/samples-scala/src/main/scala/D_Throttling/Monitoring.scala @@ -16,7 +16,7 @@ import scala.language.postfixOps object Monitoring { // Auxiliary vars - private[this] val iotHubPartitions = ConfigFactory.load().getInt("iothub-react.connection.partitions") + private[this] val iotHubPartitions = ConfigFactory.load().getInt("iothub-react.connection.hubPartitions") private[this] var previousTime : Long = 0 private[this] var previousTotal: Long = 0 From d7d7768d5afd81327880013b4cae3f8d4e6b808f Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Fri, 10 Mar 2017 15:42:06 -0800 Subject: [PATCH 4/5] Run demos from the root of the project --- README.md | 22 +++++----- run_java_samples.cmd | 16 ++++++++ run_java_samples.sh | 18 ++++++++ run_scala_samples.cmd | 1 + run_scala_samples.sh | 1 + samples-java/run_samples.cmd | 2 - samples-java/run_samples.sh | 2 - samples-java/setup-env-vars.ps1 | 41 ------------------- .../DisplayMessages/{Demo.java => Main.java} | 7 ++-- .../{Demo.java => Main.java} | 3 +- samples-scala/run_samples.cmd | 1 - samples-scala/run_samples.sh | 1 - samples-scala/setup-env-vars.bat | 41 ------------------- samples-scala/setup-env-vars.sh | 41 ------------------- .../setup-env-vars.bat => setup-env-vars.bat | 12 +++++- .../setup-env-vars.ps1 => setup-env-vars.ps1 | 14 ++++++- .../setup-env-vars.sh => setup-env-vars.sh | 12 +++++- 17 files changed, 87 insertions(+), 148 deletions(-) create mode 100644 run_java_samples.cmd create mode 100755 run_java_samples.sh create mode 100644 run_scala_samples.cmd create mode 100755 run_scala_samples.sh delete mode 100755 samples-java/run_samples.cmd delete mode 100755 samples-java/run_samples.sh delete mode 100644 samples-java/setup-env-vars.ps1 rename samples-java/src/main/java/DisplayMessages/{Demo.java => Main.java} (92%) rename samples-java/src/main/java/SendMessageToDevice/{Demo.java => Main.java} (96%) delete mode 100755 samples-scala/run_samples.cmd delete mode 100755 samples-scala/run_samples.sh delete mode 100644 samples-scala/setup-env-vars.bat delete mode 100644 samples-scala/setup-env-vars.sh rename samples-java/setup-env-vars.bat => setup-env-vars.bat (72%) rename samples-scala/setup-env-vars.ps1 => setup-env-vars.ps1 (68%) rename samples-java/setup-env-vars.sh => setup-env-vars.sh (72%) diff --git a/README.md b/README.md index 480b7ef..69679c1 100644 --- a/README.md +++ b/README.md @@ -293,8 +293,8 @@ The complete configuration reference (and default value) is available in ## Samples -The project includes multiple demos, showing some of the use cases and how IoThub React API works. -All the demos require an instance of Azure IoT hub, with some devices and messages. +The project includes multiple demos in Java and Scala, showing some of the use cases and how IoThub +React API works. All the demos require an instance of Azure IoT hub, with some devices and messages. 1. **DisplayMessages** [Java]: how to stream Azure IoT hub withing a Java application, filtering temperature values greater than 60C @@ -320,22 +320,22 @@ All the demos require an instance of Azure IoT hub, with some devices and messag connected devices. We provide a [device simulator](tools/devices-simulator/README.md) in the tools section, -which will help simulating some devices sending sample telemetry. +which will help simulating some devices sending sample telemetry events. When ready, you should either edit the `application.conf` configuration files ([scala](samples-scala/src/main/resources/application.conf) and [java](samples-java/src/main/resources/application.conf)) with your credentials, or set the corresponding environment variables. -Follow the instructions in the previous section on how to set the correct values. +Follow the instructions described in the previous section on how to set the correct values. -The sample folders include also some scripts showing how to setup the environment variables in -[Linux/MacOS](samples-scala/setup-env-vars.sh) and [Windows](samples-scala/setup-env-vars.bat). +The root folder includes also a script showing how to set the environment variables in +[Linux/MacOS](setup-env-vars.sh) and [Windows](setup-env-vars.bat). -* [`samples-scala`](samples-scala/src/main/scala): - You can use `sbt run` to run the demos (or the `run_samples.*` scripts) -* [`samples-java`](samples-java/src/main/java): - You can use `mvn clean compile exec:java -Dexec.mainClass="DisplayMessages.Demo"` to run the - demo app (or the `run_samples.*` scripts) +The demos can be executed using the scripts included in the root folder (`run__samples.sh` +and `run__samples.cmd`): + +* [`run_scala_samples.sh`](run_scala_samples.sh): execute Scala demos +* [`run_java_samples.sh`](run_java_samples.sh): execute Java demos ## Future work diff --git a/run_java_samples.cmd b/run_java_samples.cmd new file mode 100644 index 0000000..a52b66f --- /dev/null +++ b/run_java_samples.cmd @@ -0,0 +1,16 @@ +@ECHO OFF + +ECHO Select demo to run: +ECHO. +ECHO [1] DisplayMessages.Main +ECHO [2] SendMessageToDevice.Main +ECHO. + +SET /P opt="Enter number: " + +cd samples-java + +if "%opt%"=="1" mvn clean compile exec:java -Dexec.mainClass="DisplayMessages.Main" +if "%opt%"=="2" mvn clean compile exec:java -Dexec.mainClass="SendMessageToDevice.Main" + + diff --git a/run_java_samples.sh b/run_java_samples.sh new file mode 100755 index 0000000..f632738 --- /dev/null +++ b/run_java_samples.sh @@ -0,0 +1,18 @@ +echo "Select demo to run:" +echo +echo " [1] DisplayMessages.Main" +echo " [2] SendMessageToDevice.Main" +echo +read -p "Enter number: " -r opt + +cd samples-java + +if [ "$opt" = "1" ]; then + mvn clean compile exec:java -Dexec.mainClass="DisplayMessages.Main" +fi + +if [ "$opt" = "2" ]; then + mvn clean compile exec:java -Dexec.mainClass="SendMessageToDevice.Main" +fi + + diff --git a/run_scala_samples.cmd b/run_scala_samples.cmd new file mode 100644 index 0000000..7530155 --- /dev/null +++ b/run_scala_samples.cmd @@ -0,0 +1 @@ +sbt samplesScala/run diff --git a/run_scala_samples.sh b/run_scala_samples.sh new file mode 100755 index 0000000..7530155 --- /dev/null +++ b/run_scala_samples.sh @@ -0,0 +1 @@ +sbt samplesScala/run diff --git a/samples-java/run_samples.cmd b/samples-java/run_samples.cmd deleted file mode 100755 index 87f66a0..0000000 --- a/samples-java/run_samples.cmd +++ /dev/null @@ -1,2 +0,0 @@ -mvn clean compile exec:java -Dexec.mainClass="DisplayMessages.Demo" - diff --git a/samples-java/run_samples.sh b/samples-java/run_samples.sh deleted file mode 100755 index 87f66a0..0000000 --- a/samples-java/run_samples.sh +++ /dev/null @@ -1,2 +0,0 @@ -mvn clean compile exec:java -Dexec.mainClass="DisplayMessages.Demo" - diff --git a/samples-java/setup-env-vars.ps1 b/samples-java/setup-env-vars.ps1 deleted file mode 100644 index 0e8fa7a..0000000 --- a/samples-java/setup-env-vars.ps1 +++ /dev/null @@ -1,41 +0,0 @@ -# Populate the following environment variables, and execute this file before running -# IoT Hub to Cassandra. -# -# For more information about where to find these values, more information here: -# -# * https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal#endpoints -# * https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-java-java-getstarted -# -# -# Example: -# -# $env:IOTHUB_EVENTHUB_NAME = 'my-iothub-one' -# -# $env:IOTHUB_EVENTHUB_ENDPOINT = 'sb://iothub-ns-myioth-75186-9fb862f912.servicebus.windows.net/' -# -# $env:IOTHUB_EVENTHUB_PARTITIONS = 4 -# -# $env:IOTHUB_IOTHUB_ACCESS_POLICY = 'service' -# -# $env:IOTHUB_ACCESS_KEY = '6XdRSFB9H61f+N3uOdBJiKwzeqbZUj1K//T2jFyewN4=' -# -# SET IOTHUB_ACCESS_HOSTNAME = "my-iothub-one.azure-devices.net" -# - -# see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible name" -$env:IOTHUB_EVENTHUB_NAME = '' - -# see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible endpoint" -$env:IOTHUB_EVENTHUB_ENDPOINT = '' - -# see: Endpoints ⇒ Messaging ⇒ Events ⇒ Partitions -$env:IOTHUB_EVENTHUB_PARTITIONS = '' - -# see: Shared access policies, we suggest to use "service" here -$env:IOTHUB_IOTHUB_ACCESS_POLICY = '' - -# see: Shared access policies ⇒ key name ⇒ Primary key -$env:IOTHUB_ACCESS_KEY = '' - -# see: Shared access policies ⇒ key name ⇒ Connection string ⇒ HostName -$env:IOTHUB_ACCESS_HOSTNAME = '' diff --git a/samples-java/src/main/java/DisplayMessages/Demo.java b/samples-java/src/main/java/DisplayMessages/Main.java similarity index 92% rename from samples-java/src/main/java/DisplayMessages/Demo.java rename to samples-java/src/main/java/DisplayMessages/Main.java index 68409a1..5aac3a0 100644 --- a/samples-java/src/main/java/DisplayMessages/Demo.java +++ b/samples-java/src/main/java/DisplayMessages/Main.java @@ -22,14 +22,14 @@ import static java.lang.System.out; /** * Retrieve messages from IoT hub and display the data in the console */ -public class Demo extends ReactiveStreamingApp +public class Main extends ReactiveStreamingApp { static ObjectMapper jsonParser = new ObjectMapper(); public static void main(String args[]) { - // Source retrieving messages from two IoT hub partitions (e.g. partition 2 and 5) - Source messagesFromTwoPartitions = new IoTHub().source(new PartitionList(Arrays.asList(2, 5))); + // Source retrieving messages from two IoT hub partitions (e.g. partition 0 and 3) + Source messagesFromTwoPartitions = new IoTHub().source(new PartitionList(Arrays.asList(0, 3))); // Source retrieving from all IoT hub partitions for the past 24 hours Source messages = new IoTHub().source(Instant.now().minus(1, ChronoUnit.DAYS)); @@ -56,6 +56,7 @@ public class Demo extends ReactiveStreamingApp }); } + @SuppressWarnings("unchecked") public static Temperature parseTemperature(MessageFromDevice m) { try diff --git a/samples-java/src/main/java/SendMessageToDevice/Demo.java b/samples-java/src/main/java/SendMessageToDevice/Main.java similarity index 96% rename from samples-java/src/main/java/SendMessageToDevice/Demo.java rename to samples-java/src/main/java/SendMessageToDevice/Main.java index 33d6954..bea6664 100644 --- a/samples-java/src/main/java/SendMessageToDevice/Demo.java +++ b/samples-java/src/main/java/SendMessageToDevice/Main.java @@ -22,7 +22,7 @@ import static java.lang.System.out; /** * Retrieve messages from IoT hub and display the data in the console */ -public class Demo extends ReactiveStreamingApp +public class Main extends ReactiveStreamingApp { static ObjectMapper jsonParser = new ObjectMapper(); @@ -63,6 +63,7 @@ public class Demo extends ReactiveStreamingApp }); } + @SuppressWarnings("unchecked") public static Temperature parseTemperature(MessageFromDevice m) { try diff --git a/samples-scala/run_samples.cmd b/samples-scala/run_samples.cmd deleted file mode 100755 index 7c9cf44..0000000 --- a/samples-scala/run_samples.cmd +++ /dev/null @@ -1 +0,0 @@ -sbt run diff --git a/samples-scala/run_samples.sh b/samples-scala/run_samples.sh deleted file mode 100755 index 7c9cf44..0000000 --- a/samples-scala/run_samples.sh +++ /dev/null @@ -1 +0,0 @@ -sbt run diff --git a/samples-scala/setup-env-vars.bat b/samples-scala/setup-env-vars.bat deleted file mode 100644 index 62dfdbd..0000000 --- a/samples-scala/setup-env-vars.bat +++ /dev/null @@ -1,41 +0,0 @@ -:: Populate the following environment variables, and execute this file before running -:: IoT Hub to Cassandra. -:: -:: For more information about where to find these values, more information here: -:: -:: * https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal#endpoints -:: * https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-java-java-getstarted -:: -:: -:: Example: -:: -:: SET IOTHUB_EVENTHUB_NAME = "my-iothub-one" -:: -:: SET IOTHUB_EVENTHUB_ENDPOINT = "sb://iothub-ns-myioth-75186-9fb862f912.servicebus.windows.net/" -:: -:: SET IOTHUB_EVENTHUB_PARTITIONS = 4 -:: -:: SET IOTHUB_IOTHUB_ACCESS_POLICY = "service" -:: -:: SET IOTHUB_ACCESS_KEY = "6XdRSFB9H61f+N3uOdBJiKwzeqbZUj1K//T2jFyewN4=" -:: -:: SET IOTHUB_ACCESS_HOSTNAME = "my-iothub-one.azure-devices.net" -:: - -:: see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible name" -SET IOTHUB_EVENTHUB_NAME = "" - -:: see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible endpoint" -SET IOTHUB_EVENTHUB_ENDPOINT = "" - -:: see: Endpoints ⇒ Messaging ⇒ Events ⇒ Partitions -SET IOTHUB_EVENTHUB_PARTITIONS = "" - -:: see: Shared access policies, we suggest to use "service" here -SET IOTHUB_IOTHUB_ACCESS_POLICY = "" - -:: see: Shared access policies ⇒ key name ⇒ Primary key -SET IOTHUB_ACCESS_KEY = "" - -:: see: Shared access policies ⇒ key name ⇒ Connection string ⇒ HostName -SET IOTHUB_ACCESS_HOSTNAME = "" diff --git a/samples-scala/setup-env-vars.sh b/samples-scala/setup-env-vars.sh deleted file mode 100644 index b9a5717..0000000 --- a/samples-scala/setup-env-vars.sh +++ /dev/null @@ -1,41 +0,0 @@ -# Populate the following environment variables, and execute this file before running -# IoT Hub to Cassandra. -# -# For more information about where to find these values, more information here: -# -# * https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal#endpoints -# * https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-java-java-getstarted -# -# -# Example: -# -# export IOTHUB_EVENTHUB_NAME="my-iothub-one" -# -# export IOTHUB_EVENTHUB_ENDPOINT="sb://iothub-ns-myioth-75186-9fb862f912.servicebus.windows.net/" -# -# export IOTHUB_EVENTHUB_PARTITIONS=4 -# -# export IOTHUB_IOTHUB_ACCESS_POLICY="service" -# -# export IOTHUB_ACCESS_KEY="6XdRSFB9H61f+N3uOdBJiKwzeqbZUj1K//T2jFyewN4=" -# -# export IOTHUB_ACCESS_HOSTNAME="my-iothub-one.azure-devices.net" -# - -# see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible name" -export IOTHUB_EVENTHUB_NAME="" - -# see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible endpoint" -export IOTHUB_EVENTHUB_ENDPOINT="" - -# see: Endpoints ⇒ Messaging ⇒ Events ⇒ Partitions -export IOTHUB_EVENTHUB_PARTITIONS="" - -# see: Shared access policies, we suggest to use "service" here -export IOTHUB_IOTHUB_ACCESS_POLICY="" - -# see: Shared access policies ⇒ key name ⇒ Primary key -export IOTHUB_ACCESS_KEY="" - -# see: Shared access policies ⇒ key name ⇒ Connection string ⇒ HostName -export IOTHUB_ACCESS_HOSTNAME="" diff --git a/samples-java/setup-env-vars.bat b/setup-env-vars.bat similarity index 72% rename from samples-java/setup-env-vars.bat rename to setup-env-vars.bat index 62dfdbd..bec58e4 100644 --- a/samples-java/setup-env-vars.bat +++ b/setup-env-vars.bat @@ -17,10 +17,14 @@ :: :: SET IOTHUB_IOTHUB_ACCESS_POLICY = "service" :: -:: SET IOTHUB_ACCESS_KEY = "6XdRSFB9H61f+N3uOdBJiKwzeqbZUj1K//T2jFyewN4=" +:: SET IOTHUB_ACCESS_KEY = "1Ab23456C78d+E9fOgH1234ijklMNo5P//Q6rStuwX7=" :: :: SET IOTHUB_ACCESS_HOSTNAME = "my-iothub-one.azure-devices.net" :: +:: SET IOTHUB_CHECKPOINT_ACCOUNT = 'myazurestorage' +:: +:: SET IOTHUB_CHECKPOINT_KEY = "A0BcDef1gHIJKlmn23o8PQrStUvWxyzAbc4dEFG5HOIJklMnopqR+StuVwxYzJjxsU6vnDeNTv7Ipqs8MaBcDE==" +:: :: see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible name" SET IOTHUB_EVENTHUB_NAME = "" @@ -39,3 +43,9 @@ SET IOTHUB_ACCESS_KEY = "" :: see: Shared access policies ⇒ key name ⇒ Connection string ⇒ HostName SET IOTHUB_ACCESS_HOSTNAME = "" + +:: When using checkpoints stored in Azure Blob, this is the Azure Storage Account name +SET IOTHUB_CHECKPOINT_ACCOUNT = "" + +:: When using checkpoints stored in Azure Blob, this is the Azure Storage Account secret key +SET IOTHUB_CHECKPOINT_KEY = "" diff --git a/samples-scala/setup-env-vars.ps1 b/setup-env-vars.ps1 similarity index 68% rename from samples-scala/setup-env-vars.ps1 rename to setup-env-vars.ps1 index 0e8fa7a..07aac01 100644 --- a/samples-scala/setup-env-vars.ps1 +++ b/setup-env-vars.ps1 @@ -17,9 +17,13 @@ # # $env:IOTHUB_IOTHUB_ACCESS_POLICY = 'service' # -# $env:IOTHUB_ACCESS_KEY = '6XdRSFB9H61f+N3uOdBJiKwzeqbZUj1K//T2jFyewN4=' +# $env:IOTHUB_ACCESS_KEY = '1Ab23456C78d+E9fOgH1234ijklMNo5P//Q6rStuwX7=' # -# SET IOTHUB_ACCESS_HOSTNAME = "my-iothub-one.azure-devices.net" +# $env:IOTHUB_ACCESS_HOSTNAME = "my-iothub-one.azure-devices.net" +# +# $env:IOTHUB_CHECKPOINT_ACCOUNT = 'myazurestorage' +# +# $env:IOTHUB_CHECKPOINT_KEY = "A0BcDef1gHIJKlmn23o8PQrStUvWxyzAbc4dEFG5HOIJklMnopqR+StuVwxYzJjxsU6vnDeNTv7Ipqs8MaBcDE==" # # see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible name" @@ -39,3 +43,9 @@ $env:IOTHUB_ACCESS_KEY = '' # see: Shared access policies ⇒ key name ⇒ Connection string ⇒ HostName $env:IOTHUB_ACCESS_HOSTNAME = '' + +# When using checkpoints stored in Azure Blob, this is the Azure Storage Account name +$env:IOTHUB_CHECKPOINT_ACCOUNT = '' + +# When using checkpoints stored in Azure Blob, this is the Azure Storage Account secret key +$env:IOTHUB_CHECKPOINT_KEY = '' diff --git a/samples-java/setup-env-vars.sh b/setup-env-vars.sh similarity index 72% rename from samples-java/setup-env-vars.sh rename to setup-env-vars.sh index b9a5717..4aee611 100644 --- a/samples-java/setup-env-vars.sh +++ b/setup-env-vars.sh @@ -17,10 +17,14 @@ # # export IOTHUB_IOTHUB_ACCESS_POLICY="service" # -# export IOTHUB_ACCESS_KEY="6XdRSFB9H61f+N3uOdBJiKwzeqbZUj1K//T2jFyewN4=" +# export IOTHUB_ACCESS_KEY="1Ab23456C78d+E9fOgH1234ijklMNo5P//Q6rStuwX7=" # # export IOTHUB_ACCESS_HOSTNAME="my-iothub-one.azure-devices.net" # +# export IOTHUB_CHECKPOINT_ACCOUNT = 'myazurestorage' +# +# export IOTHUB_CHECKPOINT_KEY = "A0BcDef1gHIJKlmn23o8PQrStUvWxyzAbc4dEFG5HOIJklMnopqR+StuVwxYzJjxsU6vnDeNTv7Ipqs8MaBcDE==" +# # see: Endpoints ⇒ Messaging ⇒ Events ⇒ "Event Hub-compatible name" export IOTHUB_EVENTHUB_NAME="" @@ -39,3 +43,9 @@ export IOTHUB_ACCESS_KEY="" # see: Shared access policies ⇒ key name ⇒ Connection string ⇒ HostName export IOTHUB_ACCESS_HOSTNAME="" + +# When using checkpoints stored in Azure Blob, this is the Azure Storage Account name +export IOTHUB_CHECKPOINT_ACCOUNT="" + +# When using checkpoints stored in Azure Blob, this is the Azure Storage Account secret key +export IOTHUB_CHECKPOINT_KEY="" From 7a837e0ce0df2b40f765970b5c0e56f71c362f27 Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Fri, 10 Mar 2017 16:11:05 -0800 Subject: [PATCH 5/5] Disable integration tests for PRs --- .travis.yml | 2 +- devices.json.enc | Bin 81680 -> 81680 bytes .../it/AllIoTDeviceMessagesAreDelivered.scala | 131 +++++++------- ...DeviceIoTMessagesAreDeliveredInOrder.scala | 160 +++++++++--------- src/test/scala/it/TestConnectivity.scala | 144 ++++++++-------- 5 files changed, 225 insertions(+), 212 deletions(-) diff --git a/.travis.yml b/.travis.yml index b418f54..54c0623 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,4 +12,4 @@ notifications: slack: secure: S6pcmclrj9vaqHOFMrjgYkF6wXrYF6nB5joYY0rqAwsmTLf7crXRVKZ8txlatpxMHc20Rbw8RQDM6tTka9wwBkHZZfErrcPsS84d5MU9siEkIY42/bAQwuYhxkcgilttgFmSwzLodE72giC/VMhIYCSOyOXIxuR0VtBiPD9Inm9QZ35dZDx3P3nbnaOC4fk+BjdbrX1LB8YL9z5Gy/9TqI90w0FV85XMef75EnSgpqeMD/GMB5hIg+arWVnC2S6hZ91PPCcxCTKBYDjwqUac8mFW/sMFT/yrb2c0NE6ZQqa3dlx/XFyC1X6+7DjJli2Y8OU+FPjY1tQC8JxgVFTbddIgCdUM/5be4uHN/KNs/yF7w1g06ZXK4jhJxxpL4zWINlqDrDmLaqhAtPQkc2CqL3g8MCwYxBbxZY4aFyPfZD7YLdQXDzJZNcfXn9RQQh5y+/zexbGc1zZ/XUo5bK3VbElSs+o2ErI+Sze0FaiK8fW+QeitBdGvjMY7YVKi0Zzf5Dxx1wwxiHR1PQ1r0hA8YZQxwwdpa5lWLFlSVu2w+upPtXqfINMeFktQPbOs1JWIvUvLV0A38dS6R/DsM/W1a3OEVbHQ0Z6OV1nffDnGYPLUl5kRDPFuYYugmCpQHW73lqJdiM0O+Ote4eOQniL1rcajtt+V5cn1/JRWzdJ4PH0= before_install: -- openssl aes-256-cbc -K $encrypted_cbef0ff679f7_key -iv $encrypted_cbef0ff679f7_iv -in devices.json.enc -out src/test/resources/devices.json -d +- if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then openssl aes-256-cbc -K $encrypted_cbef0ff679f7_key -iv $encrypted_cbef0ff679f7_iv -in devices.json.enc -out src/test/resources/devices.json -d ; fi diff --git a/devices.json.enc b/devices.json.enc index 4a0da66916706cd702125c021e7361db57c4ee42..3af902b1c8881e6a2c5d543856918a0e0a137717 100644 GIT binary patch literal 81680 zcmV(hK={8wu0M^+csVXMluDZ2Lz0sIiWF(WxZ)Pm)Gj7Ln3EC0jH8deH3~bO(IRL< zRL~Z~bs;?x-T2Gvx$&za{AfGU zJ!xB+B_7{+@z!N4)$*9pc0AA28uLO9#fX?@ZEr^fTUB9(KWcM-z{nc1GLYFV!$fDQ z4oSFZq@Z-T^gQ_<#Dbb;t@;}a5^7n!1|AJ=p&wb;uL^gzIuCc+r6LzFI?c4~3o-WvR;Qrb+JpEpF?Z`nkvHa!m0>w1-km*vt{m(+@zXPc|MNr-DlKT?g?PAA^0;ub!s-reZD4Nk5wx>`kxeHHn+Lr{++{ z1H2pQh6K9-2qbMxr?~)4I=%NWiWX)k0hi>-GbT}}2Wq0`ym0#F<>)CFaubvBS(-%6 zU$EGG(Y@({TFgAUv@NSVi{*#Y_iCz9JyOx`WDYw_{EiGd{mlTrLs!sot?z9*8GvoA z)}3%0&3LPx~}(6XITIS8*LIvm46se*pCtdkAN#Y6~ys%%W7{ibDnX%XD#3@s!5wK92hfvI5f08v;B(W zSy7s>*|~O|AmuiV#<#W%nPwm_Twv}@MPIkxQw#$Kt+AoCJxf*rp%pW#0BRwOSW!2PRASNWyYJlU3N@ukC_O{( zZn7Z_-p;WENENU5`pdrXm~G?RxYo~y3dFLtM4iCKM!x;b3!kK`vilVbmU2?W>z+a7bFh5!{*@>$S@Zuo zg3?G(ObK_Q4&owt&y~1K zfA8?P2Ljyo7{UMKoxI<{2Mk7Q&Q7xqOSB@>Nkrt`B>>qKP|RS3dZ3T5+5YXfXKYS! z*6+ONh}smO3Vm_1XpsSqE<-zxF)>6$rRKuTIr12cj46IC3bw;?=M z0?ElPS#_xLxY`J{+RlNP?fD@}UwxG)+TV)E!pf2n{Csj(2>z47nh9&ythhz)cw!4$csG!k_biMT2@cMa{TPAH7 z3vfeUZ1&RXy#{;l3RZRw80A`=_~RnmSQ83Bbg~J^Am=Lk_X>vDe1;!aWlk7Nfi|`s zLnz9)q#4X@&l@=Ukx#uQEpE9VDT4bh8gYMXLCC-N0-HGouLBwEq0!vpYj&S|^RT#y zf(r2^f10HWHX!=r4pD7Ba=gBNN58_he#p#k=148(y+1ay5^blgt z7q)5tLEAS(V#w+Xjfae{Pm*irXf6y@#A?nz?`Cn01hdxKpy(?!Y<}X@h}z;C6R?`x zK5Yk6uhb<%aAHaRL9Q_Cb?D$33XE#`v~Rg%Rpt3!81IK?qDYlV%+A8Jg&$KNWj%jG z6N?!nZVq8VCDSgm9fHp~2w9!P0cqZ~0quSJa?O^N`xC4S0^eMC2^Z14RDJ*6bZRaw z2b~REGz*;civimv=e+hP;=TZFX;OY)DU+kim#+WwaV#P|Z(_3;QJXnQ#D+A9;|^1; z^AQ`Sw3ba>suiMRDWt1Yb`JcWodRkeVjGI-vKBI(GRjAfv{#1@Zkuqoe)sm0O7_JT za#$j3hd8KHZ=)Oyt>d#U%8Uldq?E?5-IH+ZsfwJAPePK;TUNvCl(zt4wBgCgJ7QF2 zESGAt(_1Eje6Dj12>p#1AVo^JwhN+U43z&F3TS_lzWyg&=8(5F7xslK1sUHeakYPv z>ZaqYCB5!3*so+N9SL;nNuNT~Vypb^jIb>ffRq#`X_YIRBcvEf1ir0qsf>sEA=+hl zQA^^+!Dfj)?b(LaiCE#6MwCj&j6ifjTB-JXo_8Y}!c0u^Pm?9>Xsam$ru^WBP+*5$2q2=#AR z&dl7h$-+e{O!}wkA@18`I>{Y(SPlNj_8%?m%|V%Io^ub@n+)?CwQkI`N|&tXZ04UE zEq_m;h`V5OT}#`~pi2d0mthGv7gzdvW-qmaG8rGHDHd&5RVJdHLEizRc|Qv?nvOd! z-N;n`cyBKuyFzhPN*T;%aMHz;T=8nPH&1lTLS^@fOrkj)ZSitpMrl7y2Ja@#10ioq zom-gV{M!x)Vx$yfpWe);+g_h9jWhR0=~m5xP*fglJJwHK{w z8rnJIyg@3khGaBrZKbEV%}sVX%(F)#Y}pEPQ3)*wK`oL>X@ze?aHI(j+5;R7o+bu? zrDq^HAIy5j=MdTj2Yv(RhGo%@;X_V}HKGEDC$v}7A2qZ{I5?=Xv&3hlTvPKn?RS#0N>8zaHHA9SjqL))3bJPAz_HC zw=Dx+CE#l-;@5B-I9Rv(-$<(t$_4tJd(L%Fi?QU+WamT;N#kyCe-Bxx_+q+KtjZxC z4F-$YK5b)Y*Yvi?Hsj;82{~DrPzy_S+CYfyO+rCQoGL9)PWAEMTMZS~dXpa4B5QPa ztStHMUKJIh&-mKF49i4Nyiau3_EO9T%&RqDTE_?s?&Zh;cFcW1@K-1Uwn%klU z;;lFE9C&eTB%njmoR~0;K2p(?OKUc&zQ=KUf2~)&2^=Ioi}oyFXzSa>KeFTP z2Dl!e$@b|%uOQ&YC(~|3GSu;&oe?vP+P(`8hflngaM@3(RvpF9n9ntdiDVKyytkvamrKg5zfKALn;!ngY+49wCL%$@P^y(N{V09{9+_ie zMaykPWg>raxd%m=RTp4z!v&}*u*d`vs;)6^UcTv`n{#QFVaBO%hlDf*>V;=wSG2lX9fq=sKe9@tfLZ-hkowv3KJ7H?X zEdg`vwF?D{;kyxh{#KK<#rmFu#@L61!{t-<(N8nWk*jAUC1)||D+CITT`g1Hp5t#AYDO~jzO5JYbnA1@Iq zI@1dw)H{V!{6H3*;hMJPMsanr{g^)HP=P!e#a>pl?GyA?2@+F65bmPVY3gY}a1&+P z?HT=$;t3HaDwL{^2G(B4irgd(i$Y*Fg5p)nRC^QKaD*-048Ic%Q8PHtG~Pu?BlsHg?kN=O)B6Ylew2lqS(rW!YNauMQFo`QXtkq<{v$@rq1tk=lt;?KH+k47yi}@Zd9jF{uXM^n3BxilPx0;0T6#C2@hYOY z+`e_^WUS=-17U*>9rV`Xjfq-@W9J2ycZ#1|G)ux#bGitW-K8bbQ10&*gm8+4L9{~t znuNU$q>sz~B^($Gt(}_%h(SjLvxO;K|M86nY!jCB*pn+a)q|rO`*}JLBu=s4znN?X za_WAp-Lz#SnN_Jmfm;?eO0KW;=3oFqrW?=$2MmpC8r!OEa;MV~k8m~ns~`zEiG=de zJmmGU#kdNtWKTp_brbvj{;aPW1cM-Xb_DgVfDG+rbOqaXb=zTtZ)4hg$wPD3-*Ly` zR|Ch@a9F5xnM%qw8W*Q477SkVYKcK8&Vu})()ZJ}1^DVpGHfHn%?8*Gtz^CZ!0kze zm^M_s`n~i~5w{*F1y9C?)wfYhapueRc%Hl*vQ8>KN`Iry6dHdCU8JIQV?JWwR1a)I z8Nys#^keIO&x5*4peH+&vljh%S|h01c}R0$S2X;P#5ILk|089JmUeA$e{-KYDTL0^ zc0|P1x{We65@DJ(9~t5aTF?dq@7gHWHjRc0!o`kyB90shTXnRLuo6&UdYNyvN08sv z5&{%Pzfx9m7EZswpXt7Hyj6KiTHF2^{qmk{CN9f^KzA(@JGmd|YAyNOV`VwwxKu6D zi&8u6MMruTOg7SDENi-^&M~3Wyg1(ldg$~DOFAD0L9V!4@>wb?-4gGDA-DPV7_<$| zfNX$R=CexGa7P33hd8CFzz*IW@;mf?XW0w1aFc4c_*g&EYO1PdH_9p1Y*Ha^8vw8^~tH}zfLAX7T!sRr*yCWAOBz)vMcTltq9`bSSjcII~TG%zFK+?bt269LP?L0W{r_#g!5610Jj;s^D=i4oIEWYy^h-zpi!kXgNo#=|;$xCBXrQte%;hV4pp&C@Nk|*-EAQYk8 zjs?$sVW@jC?OqXWfQ7&hy^zJy*d~XsD`o_cyU&r#fA{h~K*Ux#xg#^0K^F-sCCs7O zwZ3HlYy7npx|5%&yD94xSDKPcn$^4y?KZ6;gSus>KsGe9axnru`KrSNfYMQ1&WEKn z4v7v~%L3}4ZaN>6-0ZLUo4yuWvTsS7>B9;gU9gfqaB_$@FUS5*T!-rb#|H;4e}MnZ zh5{ir0MAD0#w6?k_}RnJTP$?_4F(wViyo76P=T3x-$9NnWd;JOA&D#4pTa%Ox86Q5 zXjT(gzlYnCC(J|+Nk0Yf5~qlW7_u?`K4_(T0+PZWW60CNeQ%OhGpE7|MqYEeG4}YM zAXn$8greJP)=|>R7@oNb@)e?@rfi#KJXGO)AV9|Gb8M-SA`&W_+T8WO zW!hJ`u|n$gy(R{(L&A@ns!H1G6w8Kbl}N!1<1U@h^SO2>FuQY;u8SF?YzQ5WQe8Q*-gI1Fd0H{Kas^ zN8b4a`r{G(qmPrR*nG=pXV=LwEK4S8JLpF<9DxfvAH`X%IfUx5LDzSWwh2(g!C-Tzs+cnj-jlpaY{p(GGN7{JJgW`g|Ppt3x%2pH{3!+E8R^{FVZaQ%pKZ_S#wrhCTAQOdCF7*gD83GFm(e!o; zN+O>g7`I&On2OHU<6tcL1Iq){!?t3YJFbtZ@XIukE}Oq`eL!l>C?yU5-$Z~|Lkv5l z8$&l!G_^VZLlSa6Z;<)zkeV516d-Xe2nJ$aOfdq0#bZOx&MprAy~(~e8@0t+|LX#1 z7euuugm^05wj;%MWdDMV`tp)U^J581m36W!eDj4v!taMoo~eSwiO=wT_nAo&XN$Ok zLx}_V2;u1!pEz1UNI>nvYdCofUZ{(zMvy(d;B zCq-i^*EEZX0;nqXaHuyl%54=f$oc=FdNyW1{hu7Rs)0J~D-Vl ze?#K2VJNF-dmTZ-n`0U$dwG(8)Rc1LrD8Mc|D;2=nmZRHFuiX!eNI;y@xwg8G!SSm z?Y&7Q>O%nMmDq))Pv}sBQ&21`EpSB}_G+28*D=pL?mOpSQLe*XMrz!7S|-|njkMG&lk85}uu$2d9CNldKy{x^LnGIFL&nz$!D-gJ7h^4PB@1FR+<+yYEJnYvN7A%!Au zR!Eyt9eoN&U*j>6NjRLo+hej2IVDq=#?Q|}hK~WUw_l}Gzj!>1L)um3eh|fB@&6r- zt-FCecFh9(1aS?HF*tJ~AceA(ur?Va28AnG&T?{XFR!P;81g4og7XxEykIT6hy*Fd zx85Mg{lCR-%#=s>o(-zH00IzFS!3?<;Ze|hJD6ZsHN74R^_f9}xu%a!!Tx9eK4aRq zpMJ!M#$;nDx=9=o{3O|~nYwPE#4r=hG1Dyv^wmK#(!Ua9YDopN|K)#0VVaociQKDGTs0wHw#CO!S^xe zrYwe#z{u05^h@O_*Pe;cie4C=z6r~Ze^qvD=nA?Te^*=9mGX+SM9c`D76=9UG^G^$ zIFFS|GY6`RJ%BOMY((@hGJjiWGEWGSu#wth7D|xJZ)y)x-{QG$KN$4~r5XM_jn>43npUBOH_nSn!z?V?`$ zF4X79!35o2Dj&@W+GrzwKPfVmd0M&Qo`po7*t{UILy8lB824D*Vg8xj<|6IjaSGDHcJRc zzS4j!#KOg47c85xVxMe4ye$20L>JojXn|p5e94BZGVH6;@cpN@T9vIX$zU}T=tQ92 z*&ovZ6)m=>Cgf!~#f%0dc=VYDt!9-=G`@ahrpxnOU^ffH2@gk`A2e{%xRitD{Bz!jvCEy?4B1m$$p+qBz2288={Q=3kk zuYV+Z8m^FdH3K;F4}aZq{T!SFL#xEWEMwMT1sVQJYW|TRN&WlGn~VjKa@?b+6kH$D za0xkrm6eli63mWP7Rdgf%CcyS*tsk`)_n+x5BxNg#j%OzPhp6;BtP0bk9)iKx||I= z;9;F%1u-qa1iE9v%|ovEblo#}aST&lL*00_a&Oog_;~>v;8sz{)_4z96={NX!pp^^ zx_Hks?HR6r0TL-8oM=9u2XoOf2B(r5%X#URm`v{*$V*P`0BU9xNG!iV;0dzSt&P?Bf={u9 zLPue(*CXa?yE~!EhCGh*uK)DNBF_gOBwG{NQsQ=nXTSmoJ|KN--LT_w?oE*|qdl4F z>cAx(nJm?H1S(*AcS*B&g~OjwS!5swHe|fU)cn7lw=Bc!3Xtyd7!q8K=6&RHG z=A)oUyMRSxjsx*O6?J7aMc!+fvIIJP5hnv(b=_u?Ees&H6NMKxqgEG+`8grBS1!Yk zQvE++===D`V*<7_*G=8i?Or$DRIs)XD7HC0aV=rD9+LeA5$2te2=SVS8T0ywU-;zlq==H?2dzV)7*HzmOd{g_^bp>RB< z4o>@bUwU1oIZ?J7-RWCCK`Sh-FNh>3&zLO`8n)+gad<$Ld9R%h^p<)L%~rcq2&PTl zLxVbdcFe++$&8FVbjks2FL%Og>~>w=XP4J@uW=Lwm=~Fy=7$?284`hjRTCZ5=AXvW z%)`v1a%U0MtYJdU{dgF`5qtQ`8?npxA84(&$1C;PHXXb+OIE|9?O~LE(~gpgfDJ>n zgM+6cvyOWYjTL%#ty`(RH37f^OYNs@nMny+rfSEol%?iRwi;bx?L^(iL$hKIm5iSF zHbCqZz$915hj^b(DjP?*Ub5Bv_?%^YD6WZF&lClNWdNo;&rgUWIN`RsA~9Bh^BQ=` z!(iM#wgMV0MM%#%!(zJBG3rk>N|U&UtbxnC z5%&pta2rv*LON&tRp*sCRs@3>g0l6&>Tq*hSF{6LEz>cu8S96dqr#I7s0A;#BD-2@ z#H>Z!N{0gdUFCgX{#aPmDHu;1IDp+qxv>s}{hru6MyC!Q#vhYr(U@qcG0~Awdm}g_ zYM#`zmf)9!fy6y@6??R^CJ@pU1d9N+aqr$EbpjK>ncxKnxfEJJJ5=iDa0}@c#wLir(WBvlM1W8;(MRx78$laeLh zZ0Y+lXt+Tri|>kM4XkQSXmx3mfiMH2%=+}lqj5HDxo6$X*R60#%Rj!^`@trkgbGmK z8p4&a)VTcRd;piYI>^SBVDcKRV)u=i#<$-mOOO4Du76w6-w+>S4>36wCh8)|xpYPa zDwVAl7V8$jT0c|1<9Hx-6-fkWs(G$od`1Blhu^B?eqn%?;m#Ue;(Pr){M;*58lWxz zJEmJR13Y36906ox0<0F2kgYM%MfPsU>men*=pq(e(?aSmDjlTiYgkH96s*nzvjCW6 zA1)Xi*o+8Qza@@PK!qq}v~!n)7^C_|_fx{Ws`O+N#kKSMUe!CyBo1=c=|0>z-=TtX z9I8YD(5r+Q7?92t&WWA+l^Bw6U?o5E@Lv11fM=Y33|N3$t}U&3zD_1E>KqX<1`59uf|k(ks$@2w?Bg4DhuyxhTUuxTK=F=-=L!H?98 z-V9Xpa6?Bkaj5F|jw&nEmd_qei{Q*SFXVO@F7@R%a_{n=;~)N62NXk#nX|b_>t%H< zgj{K#jbd$K z+%?H&<3f!E)=M|Ka7}V#`hbKUH|82#Q|6Rha@hgt1aT7KrxVZ8}&uhpSvw)kd>KYMZZv=PZgVTVA z-uR+z7#taF{_vD@)YCk&kW??PK%Gvra-u_^i$g%YHH!KRJz_}1FTI;JJR&64fmM(C zlX79aJekkDF^d~34j&7&QgOm_g`B}>2-RrOaJ-Q%O9ab>@?>>jK@p*hge2oI4_APa$1LjwA{M2ar8 zihbnoR}{nSk;ESaU9BQx?!MYL^WrHYdL%dYT#@`On@_-86+()tAym!|8dPB_5WYPU zE{nauhXObcBc^D4Az%y0Fg)=$ATV>MitH|uxznZTUxU%l4wP^1G`)(RmbBDXE>Z84 z>48AM>y9An1FfBJ9T63|3r`-h&Xq*3A_}saMx(x5lEHWe874)a9;dF;D?Qk$oNtyt z6hRt_Y?)r$g!qu2gg~+ZTsm3-&|BCE1qqFv~lJBl;(liVH^!lQx?k2Sm*0 z6RK)^r5_FUfF3-JzKQzA-?{d?e^{QCLj zr?uRo0UOF34q69O8eEVA272$){cju!cp3M@W@gb-^+Wr?L9V8nIIHky01D0#B=j4V zzkKA$25my2N-FAEWe#w&2Prs{fWgJThki*Oh-*h#0=Uv@=WS~cHlRcaogR5K5>0m= z7W08N2+K2&Y4nE$%V)T}FWDtqKA!(a@lWd^t3s{-1Bha2GFK$F@PYzzQMrB{F$-YX z_zfJ2j}ir!9v)rmcaZnJKj1B>xK;FQg8mn#5PV3ccKf*WCX0`?UywnkpB z7Yg_>mVx>91oCaxiJoo}8OZlx?G(CC`laSv?Ro1mlkN4LJg*?ivs+kD!zQmJ}RQbcrFs((bs>0fYYnG*Uo1WxI@+VAHdu7lY;hsmNeSP+^V#R!{4OJ z&s3;5x80pvd54cUFNN7?wam_-pBJBcB6EF8PCe)*2&5X|zbgUS8-lym)vqWl%eDV5 z`EoZrZ)$TQ>r^77ZAi~M4R}R7IQXN+=~A<93?}IZscv9Nz&4f0gNRlaE4s8DQN=o0 z%1KcoYp96{vU!|C9wU9GNibJJa3w|MBrC=hyVvKvJHiYMAH;_R75Lh6!K)+i^98?N zfmJ5V%tokicIc=U4blJMk9}+5(NwtI_s+Lga{`Qrc?mE4HPO<>1Xp4)9e+Pm3Gs}w z@dO@8aoPyiVeg-`DJVnx3+H)xbgTY0q{^XZN&~a*il7#6Cy&f#qe4rB&!O2LChDV> zX|%X>o&8{~cx%jGUMJRlVMGM3F`#-GvGET{b&-#+@-r_*&q?ooT$K|c;TBHG{GGaWneR3gtL}+Etn}(SA`4GD;RyTu|#Jt zsTTKMT#^@96}4@-d>SfYn2#0c|81B7Q#Hpv3nu>>3KM>}SI^0JTDbi}Y5@Vyrc!)n zb4)~xm5nObRk&#fdaCECeF4nL*kL`ap>B##cMB3gh$ZWC(;J-}>yvvMZN&i$iL}gr zYNPymTYGXx8>T%;vaF%uc5lg}z4X{U?aOLn*|ke}L#Bval)U~%gDMxfwVSC41JcS zMX@|`5HCEX?YgE>5Bk0o(B_3m=K8)uv>cf(&;_z{mh33)0OZCua?-3TQW-JM?h}hI zQb&`r*$2FUZ#F>LYt5fJ*4-$`43Fc34X|%Tl=bh@xMjg3li*j1e3-+J{SWnmvdoKj z|J)qGHW&xQL_Wqx|2Sb;BaqL>BZDKcaL#uKK2nbZ?Lcz47NG#lt*!;z-5(JE*0^^tb~hQBdO63Nu>&Gvreg3t`+*hbO%UXcxcX; z$$gPA$O$8TCbZ3opXd}osFx|@#-)^_5i#mf%#CNA;iDlfL0=D$;UE1FdMhayfsLMK zT!?V^-!)pJI%>j*L{B$KjOwe(+q@FTAlt!^CeDa2`pI6Eo4kN|RVlGKPu#wkMx~mV zR*{&&=Ug925Ye7`@LP}vu5{SiC}Ex#|No(I#m!hW8p!kxVwlT)!~ls;D%OHc-@iPB zN39gn;(@{M%IiY(JE2QSi7a(k%c>+EX9VKAbSd3LbYJxmq z>M$ln(0|nCYb6M>NVButskX?9Usn^^*wV8Pyfwrv3N5v=iHMjUt1iNgQVlF~M0(5T zZ_x&XOD6D|e1hzGMG=Cgwv?u2z9UzBAVYA zU6cm(mHZkU)fjT&UV_*(CP6}K=oO>>-D2n6xIZc(J%X_jCS5GLUL7P4@9yLkGwX-y za8NaQf#Zl4b!Jag{Flmaa!Pu4AOf(qLM`%J8^q-r6bx=>viTw3GrCTGuU6xlSmNE# z*oI4RFu|#1T$=^MYzGdNNh_3CG=+i_By~@g+p;s=EUit5_$fgx1|}|^q}W0fCGsia zmU4YNEtW*FDs%uIz_xTV1IF5?jsVcK+(N8PH!z!4^$5?6Gb#cELfs~U6Qg;=enh6` zctTlIl+e#v)GoY?6h*@W6z;YbYs9376y{cy#bz^;;MH<#?My{16n&7|gELH2FM_8YTB(GXNWLYN_nH!XbOyajP z<$JiJhgz@T&UveUpSY%mV44fsRO2%7pKcr2WT{m|9U`xY%rIrU$4PqZ8TY+2`%m1aJJu{Y^uF5@H_|inx9fjfyE4&e)3`jvLy=u*zf$PS+QXwj_ak5Bmi*+?2mqsvKo6V1_>xa4 za2GJ39a5aLU9h~C&}B({=uJH|ZwQgbvi|t#`lM{zJn9FHOUPaHI?=$cGhCsTHB(1k zkJvk+!UW9k)#&xFZjq@$!!$6EWS=rUNAytdPWNAiG;ZSqz0S%(<&|D^)&XCijTR5- zUH#;7>@7`ID}dNaFok;X-hP6)weq-}eL<*2XLHmI;N+N);kykgRP%iAyK4$Swblib zL+!hB5G@O3rbO>X6O$d(kY55~l1{R1c%|J;?{Iu0%SA{yT{$1xQekns&DbIHECBYQ zWz1ptQ+Ffcr;+-vXRV^nvu3!C;&|Li$W+~Uyh-GU&dn1bH-c1d`3C~ zVfV}_Wx%uymU3xCleqF-l}v_!oWoncR*uQBE$?EUL4!7-(|vRcf!hwY!I4rm9V*Hv zAeiTICdV>WdPJQ)WW@+o(?v8Ak@ZG9>9-zDg+8J?_-{YjnR!b(J2T|Yi7i*TncvmZ zR>#<>;cp=1LqIHZ%I?pv;xavS;)0QtMf}5huQr`5%2@Po=!-S_FajZ*StRqv(h{gM zEYUxgw$l=kOos>mniQpDhpBcYTCW%s)61pQhal=E7hWvOF_|(?{a@OMraFj!PE)s` zfX-Od1_rjqgSYGYEX6o!zTCcB^OM z6SM{a6!yLF%>_GRc4uOD;Aha9=OQD-4u}f<$$LE!P^x};CEs1ZwfFOU08JaEu!Cj?=~Ni2 z9$^D;4CZB7)SU%TwcHOo>q*(&dFzeTGV8pdodX{;vJu5945-@HAu-gPzzZ1Kh{4iC#W*-&hb{C{Gls!bM|yh<2d6=ihnu(| zYLO;H;l8ZXZP4;M+fV6+s=@`GTzV6Cbh1NTv@=40Iv&6Q+nF|k1R zrQ?b=+@D2TPUuZoy1$IcJO1XNYO9g4id;LowZ3EsFY=h`E#KZ?X~EJ&>^|a2#nB3i z+lfxSZqpu2%4SwT6nxhp$)nqF(30d6KC5Y6w~l~cF#DCSIa8a4{pZO=? zlge6_(B)&MZ)j%5ywI91SxO+BDa46>*KlB#3T_0sV6P!E-Z4<;*}WQiy54o0(bx2u zE2xk{m75-cVN@~MmE;*A^o(7T*dkzVcXuAnClx~?>tID}=aU8T7<)M=C;^aj{YU?O zN|mExAs7{Ng|mDpMvb!hP=b)s{`akZ5?p=h)!-&1i^gG|^{wj*Z-j=LK-3@h?xQBc z{|!7@C~W3L5Yd9$aoyFP{BkZufu|uYt=A;D9~>wmI0mz%NA?ZQW9o1c+I$ygRVII! zh%XA9G>KE9*p7O^471BHl5>MVxAJVy21cN?_5~$=n(pE_AEb%5p-$#%*lJ@<1tZFw zKWH4->jZ}qc>ROs+Vfhc{O<(aW_B|z(;7V=&nT#a72cLlajjpL#0&;@Ou?=MBX0M4 ziw(Rt0zQ)Rq!{RU2(V&`l0zAzo;|K~>0zy1S^rwk1<*QVvd!NG!{ZH11_+;pLMa#1 z`E0!hl@M32Eu!-H7q9%E188x>{X=s+KK!I8NaP(wE}OzQd$a^?N4>ZDvm%;BU(Xew z1P*3Ymy#+VjMtU)cMb$s(1z#%hql8o?hN~JNL2r5w@xCVz{M?H4h)4P zAw*%CNho(g9mY_gM&VAPQyl5>-4r+5`?0zKo1wfU=Pwhf7mL8t8(#dJ?5to#?F_2e zU9M9EuD__WHox~b@#oExbfW|s$fstqF&#s79jUqPk{=2R)Ep(~rq>dX-Xs*CYTKiW>tKUG6oAvN3HHE!!zE%U zrD*}ct71FHFaPj^rbK&Suv`plkF?pqf~K8koV;=do92)rJ?N5Y&|;#I1jK8%+)w# z2U*H%bUV+yG=+o?$us%w_&q4$oL9iH+GxDmI}wz$l;;N8;3*k;;5m1BTe@iNFb*=? zFK?vV>mRw)uGN`BzrBtRTUPf{a|*GuxNH_+B3=jHRBDh~^MXX;;U7TB%sigLiFJse z-w@7Xkv5z_4qx}os4@+_KjWIX*{Pa_32nvS6omSyc%@Z|G1!nS&cH!BHT2@75$_3{2_C6cvUfAejmhHK z#Vzqw%7Myz2#cShW>y};rB{QCicoaYa@(MdW5a#lxkQsgPvhr0ZsEcCtTU09OfU<)lENu@T(By(iRXPXtaI!mk$dj*Mq>`&%o$iU^d(JKC9{DaF6HlF;bI`#DU3bb*`6b9JdesUCk!+VgD zI7-PGI!fg-J^Fn4S27GGVbPtq6D>j-V98)pW|Mbsv7(oQ?R2$RE6{Bcu`;Fk8!4u2 z3)Rvtt0-mG84H3>Y1oCrF|>Q|@&E{6ll|18$=d4y?=rXa4z2vsk#*i=((f-#dmDdQe?mPyg7WP(mgB z9FYh*eOYmvb7$zNogfmTQmfeRFAbHgNW~8#E2P!C|Einf2#;KEj@-Dgq>wop=hVtg%x8m!{fk$z zJK>j&BB>2KV$T1;Q7M&`4lHB$b*=z@#OUta)W=d+nWvTkwM2rm1}2(w&ELod(39_% z3n8+-xd8tuc#Q!lMF}ghWgH5-hu7&+?YTB5Mb->~+BWJ%m5hqcmychbD z`|rIDaHC{qk{qH^>`{fjsJ>=yQy(yC*QWp)aP+LT$uBH)AR#!+8Hqa*7u>a~nJeo* z-~iiSnbi^CoMv|2r z%51;dPkx5mH+O<~$=Gbq-u%&M6+0;N{JK+M@R^5T`9^_SfeFJHI#{k#|HQ`{Q=t!) z9uPj(qT*5sdz(ZW`AzlNunAe-%#7pa1RmI2!}#ouX}JX0j)7Y<+qX%oynDFZwAnx_ z$*#?XM6NA<@uon#+z`S?7BMSjafyd|g(7@5{%hq0y5fQPCmLkVY$oF#g^e*&e_U1Uvkh%74oe$vKz^Ox?x&Xwo*V=ozyBLu zf-|9)2b(sVaNW!TC?RLS4X5bsWI~+0C0WsEL?NV~!&6HawN}~v14xxQ0;D`& z4MA^a7-U9!Jtqpa4bZ{@X{?#KLP5z%;tEcqQ!R5ktNbcv92k=%khZYryF_n>-SS-s zwEJS0G+1#D7}$QWZw>p-t%~8Yw=$uUz8c(|MRWDv1gX1MsS@6I1IEGY?A$+=cQ%aY zWZIjo`eKv8=Gt_aHRp*V>s-i6)dQlcaV7Jn~6Fk zy&@fE9b%ouCAo_aHA5;Oc6LG!=kK-6_Zvqj-kBbL$Y4l1(Yx*^H-RF|UX0?R1V+Q% z(vR^*ix&3rKkCi%k|>sH83hg38v=N=XO~U!w06V54I(@R;il8bmlFDX7%?GjiiM0c zg0R@xHL4yldAH73_o3)H@AuR4FLrpO1-7r>?XBlw4j;2a9`JuWmS-Rdb4~Ms{aFYW zxt>afvJSmB*ta=l>NB2W`>}KqWg;3>c!hrsz_I-@*rrDvvQwkJY|3V9W*)Q(+z4eh z%_T^rD@Nr{3i?|COOc7S9&nl1FUbjA`E8NehaE@RFbj<;7&M$3z@vo zE5OQuIZ_pL$pGiQAPMW1^v9cDcb3G7A)rf`po=*wMb|?RCFTrU;dZhE0;}yW8a9M~ z4m7CpxT8%Y->eyjI|E3opq|!@@U5 zcU65f=PW>qW^^S8E zXbb7|LlP&mC%S9PNALxCH?E{y-7(P}k^R`*<+?eU)qk|%M6i2CD4x;+!YQQd+Z#v4TcI@+LVW7gLdAM? z=H(=rDMooMrShg%2LuOMa}p$z8CuQkVm~?DNyx}<CFsu6rjOg*kIyug`r^gXN58uTl*SZ6Wa!R_YMQb>bYl)jp5CO@vEuqMJim1&Z z`%$g~>pqDX-%mqt$=KBh#{@VBHi5@H^9=Gf4zyMeHXoha>Cqnb6L!pvlezbOpG3$E?Ng?CBp!a!QJzw#uQ!6 zv456Fx8_}lO`d9Ukg2vc!-P7(5GYKneSyqhCEQTzEVJn5b)6u}mSP=)c$w%z)Z$Nc z%ABYmZP80UyxeJ}q<5rIwzP5WJe}>OeaX0UsC;Dht=}+yJ$uGRwT2=WxB7jKXw=@h zy*fatw}U&mtOK#bmUVGgcb&443XNFdYqzwJeqW%}Y`wuf;2YHH5rha7t~TmO!Xt&% zy?9LsmP>)kze*8721#Y))X4u@*9FTXlonN;UMf21l>{usTc8TB^*jc?&;F$ev!{1# z*fy79n@>8DPd|SM%mw4}^8+2|3!|C7eVR=+s=y1~w(S20X-uEfEoGoE(4qK1$h8Sc zXZxx{8c^3tqnpJ=tEc9*zBs5upeHFH7vR)Sp{0o<6S1gMt_kh7D%r80NsW4Yu z296hw5M#X&`9Q)e6~juPCNqke00ZyM#hGYk3UUjVbCGy}H4U_05oH#Ts>`S)Dz_zH zT#~>6gqlr6m=z&=&J(z%$LlgTK98h^Gmz*r7jh`@QPDwwQa!k)VDxkxGtnJ!#)>Fl6bKmTbPYJ+@pwWm9cO z2R<9isJoVu`@s26$ODDMFq^%WVOnh z+Os)fWllAwG_rW_FUFsB(4P#L7M|oupG3>a_wKpgH4U{n3%o8w3YW&p&Mx%4HbSeMEwlXN8ylY})C?DGFE6)e(#a2;s4bUGr<0q@$aRHy%= z;VymanRAN7mELQr*QVRd7k6oNixf_3GcJ=%AUqV;wdP;De@x3wo>MR#V!&f89W`w2 z-q4?cobg!C?q2M_$rR%BK;K9T*8%uuVei)A+tN$x0pO=j(Y7?F+JF4nL&wjrXR?nv zIFnNFQ{u=90e7iiiDfSsCb9{#Mlo1^I|-O9j=O~U%$mM1y8iA|*lj7xlwB>3VHR9H zVWi=P6QEhh3-s3?i1uRa0Tp>N3lN>`wX;%Zj{^olgSH2a#v z-#0*~L@O{tzd%tT4vQUesL#`{0|^_RjbrG-SB_P}dTfr7Cy@&Z)Z|FK^68^TSqtdx z6E>qRwnSpSg<~ILA*E#5W&)(&v=0Qla^3?%?#|{$wK-BS&)Jk?5^VMama=@28JJ%(MUEB)NPQwc%{ltn;T%^51ru z)KiQ$ua2?s!|pEX6=exJ{=9UzELN^|l57zkuU#P3cIR`Yn_3qf%Bv%iWGjl zyZO$EDng`|tu*(3>Mq&pBk&=mfRyU%U45gZ_N%hVRR=(?u zc2@P6N|_mub$%>jz|wLI;;MF|w=9{F_&GkeRrI%xK_hR_e*)xx5KESfeRi)34Z{O2 zjV2)jbyAn8L2m2&3-uTA$96_cHces7yc~(pUr`-8)L?6vGZuX$^tFOM$Vo*H*~KOq za_;S#n|0PE`2htU6U)dZzeE&npZ0;!8mMMs{jht)WBgV{T|rh{+462#;R-;;e}#Ki zxzu~adNAmuQGLckI00(xw4o~m{`uAghGBZ67y5XiyX~4py`R<Tlu_2l-nZ9080nQ-AxMMG`NGpci9Y zQ!uz%@)h%qyP&sUatfScF3?Htytce}w_8A$l0WQwW&duhFm_*U-EOR}BTVFJHZlxH zqcH-)1xf`|TF*T?#=jwm6Pq$WND`3L=7Fk%L|{78?qvDlujN>VUJ<`#e~A=^{|v`l z#X(5Iab0>IRIBOFDvW?xb@Ij9K5o5o)h46Xl{d0U@YMad)tqskW7918luCYk2r62Q zDefB`pRVN%68p2v?qzA6M>tdE6zbMJ;g$NPe?RTTU0q1xG4?dV{f(c%HF0waDx`c@ zGvq%xlqbaj9nLAO%+v*H;-tLaWb)+K`q)XTxKh(gIx$XH{gb;QL% z{1CP_-}`EV-yl34-BLJ&+h@Zq_tc)e^!=j7Uyr_{Lt;#o5~Tlr#J8yQ3vMz~ry!xf zw#`weUO-#NXIK3jt?hF!70DyLQod^sJ5GqB2^)GoYl`F#r;58#hKhAC#^j~f7Fp-f z@s>+EJUMM(rT>=ON%WjaFJBBZB!uFKp2_=Z2S1Z)VPXtH%-ssel1MXmP^Yj8?X)vW zlju)X5;sVeLa(E1NS7I{>ql^ z`Z&cADsI_fDn$yEhE_y(u(X#weOH97EHWc`+F6O|mYS1guu#7NY&A@drP1-#)u?=5 zd+LPFh@!auJ||0Sf;KJB7WrPx>gQnZ+xULM4bY34+cgrVxUE$Z^QM7m*QU1X+_1)2_QA+S!t9ol z0lqzVxy_exXHR4$g?jNx3-jH?TybWa#&J(TX3r#wL}y{!Liq-H+~_r= z!#)2?prXw?(rDl3pZ;NsrL$9j6RjCzcV7&s!NZi*kdxu1rTW-Q5T_cbu>d8$T33Y< zZYnYRAuPq=XOrh+D!r-&Rs2UlG5b@;UkOY)qPiq=>`|$n{`;2r14fh#M<-+{Xg{k( z<2w*6GhL8)vM{s}YVNAtgSJo*qXP>bABIWvcC}@9d=@kXoq+Mhn!@M)bvC1G59h#e zQ*{Ze?9@P$f~VdzRikNJU0AH}UuED9=#PT7BnfF~seSZd^M|C{l1F^W!9OzMV^*M>j&H+vVEw5e0*;g`$Z2 zRDp1IO@%nFbw!MJ_6MJ8L^S$T=`(X{wN>S-oHZZE5(Amht1zJYXnmV0EK13~W={XM zZ0;I-9O=M;7VNMS4IbH)TvCj}_utyE{}g$)jGS#-w;|zJ-H+nB-W9!7$o_xO4S}=P zG1ws}ENm5qpFj45KiYzI>O;skm6RNF>>!y_;ofP#a3v%hgrzdsbv#eBVSE>M5FUL6 z*XD9`;iEnM^S#(~*+yZHD)I&zZj5%bVO+UMxfyFlV#$AX+I0dQJ-XX*gf#eS6vb%3 zf<9t#_Qgi(ofPKTXrD$*j5Y9m?8jg#m4GTl0WuG6JS#KM%vUsMmtZSa5m+0HniGU8 zK`P^M3)O8ya@G6?+ehi1hs(3FD_9#v6-9vLs;5Lg0=Pn_8XUA>EYcIXIINW0>^orM zNb+Y@!I^~8ta4{7MY>V8yitg6&1%`~=DTt}*N$R)5Ptl>It$~7g6OqPGl_O1Qw+3K zkmOdsS|Y;DwLDZ2Eh=wu93BWBI#9l@Qq~i;(p9#c?j?YdRi@)d+a$*B#0QQ{(Z*#% zB(OWCr6+;-g`Z}ymw=;xnS;wPR^DB*eE@g&LI)NDmBqJ(1=DQ*6V_nemrTSHwgy~i zfjD0=-z4s1A69I;Mfq=}Ukw5Xr4!YjcdS#+NrOQbnHsHpKm zT4DyNJDl`tl=&ddqK&`e(av9$klhIU4g-UH0@LRL;E+aKmL)w(-I9 z4Tjg<8Q*LHq^%bzsS)}8>u1NKH|;~|$Rs)P#IAtQH!41P0ubXKAxMgZa@96)v0g%v zbCjvDS#^K_KI|*a5MgZ6Rt}HP?*C-K(~NU-C1XnTmGN)l88Rzppq>ojNwBR7CAHJH zp%&)E#A(O(`{mO{`FVb3+;c2X`1g^i$+g8^@MP%=ZwA0lwj-)I21@6Ly{y0UCv`_j zR)I0f?WWn0vO|9^$dUeGeuZOG58hTgAjmlv(osqkR*lh{qnhBytCbYY-8;Z%>O=pj_@CZdC{lNwYD-|E< zzYce=%dW1Y-XwdVa_@xm$#nRzI&Os1s2db67C6C6# zt364G*l4WX0IZg5XI*4zyUQ3N8=m7IR4Z*Qk2)odAuD)esA>tpi>kh)p7{g;0np@02n;9`o?R_6RJ^X9+W(;;pw)K6Ya` zG%Ez0i?e>4+NBj*IxPoXhhGbi1tyERN@X!&0-WA^oaC@cx`ax?OYSn+&`>7XNLRg#T{lpwbS+gz0|^dpV{`281a z2%dWDoO=L`f>B`_mn<>ic_}m4-(hH$PbM5d)DpbjPV- z7pdkJ9}v_g`uAXd+jO4qtN(Pf8F^v5Ol%W-6Ia!^XCCXpkOFR20n+7FD&LY0V>buC z!Z3Ao0dgVC8;y&LSP9ZtnuzKomdAH_1wL z;>AX}#1UyTg@l|vVkqImaxJm-KtTh$JGc^4wPcW~d`dzeR`stobJSmjnkzEzckk+d zF^b6(>-Iy+zH(4)y9uCTf5MVM{s)4f+QB#e2t_=In19)@b?&Oo66iEp(a2GNLc7%= z-+*B>F-}$3$9}At-sc;&B%v?}a7eOGm6I0+q!bNxw=1%VMLFbi;XJ#uY#P_hgAVnl zxGO~Y)@{}GMUi6b_o6XXKE8&DoQY3P@3@?(JHQ>g`K#|QT<<~TQ<_dT%_d!?+k;{ z%~_Ez5KAq`r-1XW=o$Bdizc8hRoDlGF*$vc!SJk1YDRy%p=c)uVbFV4&iwR19cyrCl0esz7ZfMosGmyz*G=JrX09B+#iTFC7sxC z73@ft9fjDbr2oAwozT^BjZ`+n9DxtHY(r^p1W#8S&EUQ#MY2 zZ^+ZOPhs1HCFbbKjA_nZ$gtCWdNq^8ND`)GdF&}u1bK;GibmInAT1QwA@(|oq*v<@+MX$_)$7hMccdr3r;(*!@D|R z5%w}qweF}W5Q|9D`vF1P!Fu1Jd;z}SVy>bnJ+v?@feHpgH0(yM^ry&RWuLCyegslp zN6fy@{AGHGY$^>?4=9Mg=-Ai~P~dvmB&Bj7B^%W8C7aCeIs#mVPKM09;$>_6TzZzz z1DgEsR!{{!opB9YFJ%)+Ya>8=m4+wo8D05(_cXEO+Dsx;kd+wx&2yvtDkjP}svvdW zrhEV0UxMi=9m^~Shz?s5sCyNXw31KNo;xHOMHQW6Bb$Wa=G47}-dUSGh_I{!l#l%j zrG%j+t;khZ`U)5r|H9?5a=>xys_Y(4c7R~$kzm)EkH*e3i1MpmWrYze@1r+p0-bfL zGvG$H8Y*WevZ_jG13W2{%SOM*BFZRlpEPhwOGte92nxjSllRi}-jqli%q5byy*pgg zQRVa-dtRdFb54@_2Iy2vBdHLOej4Lgj$6k2X$|h(g?py6i>74J$anSZvxd_Nm~qLbb?Y{k z27rBks9_-ylf%Mx$4S) z@CdRnTY3T9ysEb(^*{biW}!BxSZqsMTLhS#>ONAYghG4HpV9A4Y%ZfO z@z%K}EDg)lG<=5h7_rBD(O2@SW!h3-vP5exfL&i?8=!kYl&>%eQs>-+>u?l!%oGphWZ!e+K=@yGy@{ zmEmKN`UcrH2&WqIC;sZ1k=(mgl86kvEPwuK;p#+_p9)u>3c=idAq-P`WVBMeo&0%~ zI?Z?{O6CjXAd?o{18kmgxr)0i-{IQsOr`%E zxhd(pZwM6ycm`WL{JtP-LRuD#FUIlp1+>q0m&69`6tOG63Sg{}zl0H@UJZi@*=7Gg3gpAs@DP(cDRHR_-=tOK?vpAX!=@i4;2qy4v`E#RZ|B*DW^Epo-W(do?Xo}AbfTS!MwXq0cR%`vxZsJl+uQ4d4 zgqR+4tS4DUHNZ2V(((3zNo~Ch&jtBh{kGXE>iVbtyIH^ou6hj=uL1U1I#>STz!5P$+&XQyUQ*^N*aoZklNP zi+a`hUBI7xbu#1Y_E2*=9Vwq`vNY^XOgsPlt2`|%FNEA*f3O8 z)oQvtNe)gE7J3ZUk4sH4*qiolOEd#$U0n~7*m&(obq1d*_slYzgsFzVG(%NNH5P zX@4t;CSJ~1b9L^G_K~-)uV#)8(_c)gj4feeOPH$OeHAb623^X$b%XMG$Bv_OX2jzc4{>f;2};@D9%eHcKtkCY$Xg2pZ{0`QM4dBWk6Q3 zI6}TXLZ>L&WE3I~{4*wdzmcTmnl6%`+pSrDa>e6k>DR><21lmxz>)UWFAuGyvWbkH z$?a>iA)F66zNj4K-gQKk!oxd-s@1t$}9#XyFgsaGT-@}ZsG8kw}9%B4D zdAS0)L`3m$UZU=0ygJwW1fyQN1CAu-8D_6Bu5~b-ff@OpuyrjFyKhLnt%?z)N@_GH^9ll) zaSGb>Nc9Ezfkxd~i=0=F-K6)+Twk3PMtluH7Lam0$hpEsWCFdd=UvVWFTBNlm4L<+ zRa5SZm-hZ{I3eE`tXHtogqzu0YKwX?$wXD*OMvyBO?3kGSD7@(s=^|UE1DWEY-m9Y zVEa99-=5(Ejw^D%K>1=P)Qa$aiMWtR+q3J>Ck!(WJ_+}~9 ziuDgWTLJ0vf~T7VtAYj7842!q9p91GM8&PRhWDWk3x}mH9qm$rHHqm_KB)t8Txx}T~>ZSr1K(hjDh>Jq22lV z4r@=jLt$WuSjW7b{+tZ2eqH@rok%X&E+Gyw4h+`VneDC{^7In|fvJ5bJZ|lSH&Js1 z(IE*l?nRxYFQrgsrtTR)y^&^ZXZT|d+8EIuN#GdY^N)kU;)ZcLDRB(dFSV?nb_ZUT zVdce*;S{`tA~4=$D{PdRg7Pe!K33N;M6;}EFGek0?iR3(*1Z4lEz!es@D3^a+SYIM zilo#8WjUUiUhesY=NbZCv0Fb6&|P%_4~DYiS42J~FVaDH@!-ilFdc=6l$xbI$pP>m zQK4safkIN&b@0Wz4Wel8eq#xUEwfPiQ`Bo8Csh-#$~5hUX|Iynhnb>~wbX|~4^ zA@CtJ2oG45mXm-ib)@|FbO|#Owv&Nk(HBP1EiCJOY|gf3A$w5hqAagzq5X8&f@hce ziJ9h=T75EmwGDPBOpf$g0}ma3TXo;%Gn(UCke*;`VPw2q8m*qo)XyhAzH zEN(d+c(J8bq1AeZd)ANj)fYI_9S|r_JovQqEQBD2QYmampqr3wYLg$$I{shl%yv*n zwbqOb4B=53o^ulaPaVK$k6TVGL|`+BrWn|^l)DF|6>6AqS^K`K59YZD{VfRRDdZU? zoJK5Ke9peY*@nbHw>lFmfN|MwkQ{h*5hr&Z_LIDk8TLFmM7%Q|n-=p2!Y0rXBRX11 zv&$2>Q3Vw_a&UYnU;t@%!0+`KpmF}WWWJ*S=s6yv8{;c8T4KybW|AyjSgE%;#_g25 z1IYHaczX-Jg@p)a5kub1>jJeS&Yn5($H}=& ze&n=mtq{$jO8cGUrhrh00h##WQ5-c+%raK1ypP5o z3%K7dpLVZFGy9R+$otq==fB_Hp|2ojzoz&{2Sm7+(X=Tn|=!|JV#^ZU{Kf# z`D$0)TpS<0`>yI(7~Vy!H=Hx!096LX-MZKMgaZ-!)@X1u3FBHton`Klz-QEPxcPrY zRUv*id9n8Lx34&3)>?Thjr$8`;+ATQ^k{d*UX^hA@wP7P6Qx$BHJ+iD5`6J!%Y)|2 zyj6k!QFlvZM%efv&(FJTvx}v!qx&>%d4!mRlOu+zeR?Or%bQVj-EmrM*uIiMvVfTd z-|@K7q}SJ?hlz@$ZO#9KAQB`&qXRsZ zO)SM#pT8mtSTV3dTkzS#wMZ3;jke?aeX0dt;A zxo(z8Sd=1RB{1!CNkJ(5`k(T%r8*&z$PT@Gpix1TUre@)n3{~aXZy)*mIVvO{FC-w z`UR=2rzG;a7@j(g$XBtHqa4$OMvLX_H2WMrRL#2F6rP$1VzZXjdgQxu4yl3=A9*GL zR9r`tIV$F2v=|C3`|=G5cwW+$VMkLKg@@2;{OpMq#J!m8L9N1xurU0|#&W78GG zGL5rb-t06Kjth(dWuc9!Ru{0cdDmMs`} z3Z%Rs9l%E*ZEqCmb|lnQ&$RazjPoKS{wqiREq2J>%lz^ovc{R!L%pnKMD!qc)Q5pdBR z@3alC&|XZuul9ON<9e;AjTM}_^P>$TD5hyI#^bz zS)!mH?9-As992Q0OG)*m-^fJ+HW>(TbTeqxNq7$5~cnL?=a1JF~;QhCG)oz zboRwd`cxU8fTgUZ!D`P3qQw|NJX>Jjj0{5}q-! z&p1$-`Tn2~kZ`o&TcM>_8gRvL@u+gMBA){vzi(?CEKIOIC>xYlTOcpFhd*(bG{}fM zV9uQ(*`%M?WaJ0My48k1V0J2esMxSV(pD}YOUuw&#Xh)Ad-aUF* zccGp;Y;*-dYYbt>sV>*9a>0=VlQ*aW z`&~830kqojbS)>-Y4$#-2+L+bKbH*H@RbJKN;D&`2+{h(j*4@}F}>*l#l-Z`B!hYC zrmKBygB=%dCaFrlI~a>4Ep|AAp+(uqjw7gYgdtre-E$oG=Zgyp4!5u(z4sF$l+R2^ z|9@*0FiaP5I}SY|h155ZPV~ndN6;#5%O?;MkWn+4x`t;ZI~69?n!bUi*T8l2Kq9QW z)tKRFVv!mvcCh@{`heD6I2|_QGzMY{=(TiT(;0x5PArZ_ z3dprcbW(4gA}4c%2Et%Fz-j$B5;)?;0tGH)cn;@lE2o}8%VEMW9TMV&H<-ECR=ZM} z&-B7giNcr%2K+!i+Po;6b5FZ!m!l^p>YxtigY5N(`%dM_?Sp#K%#32wYaUoLihQOR zuW;>xfgkwp7(%tN^5#)P`mOc*p=kA=h^|$HKo{7s5MQ<8p$lU)Tfh+sgS#ioPD~LW z;~wI2)R|P#5@#9OoDGL7+Le?qKsD;}bI%o|1a7pZf2N55m$_G_v=9u}4o0-TZdvXv zO&>fUYNt2X*-$JwHOC1yq9QJy^LG|`8Wd+ARiHdaNrQ2szkSSmokjwd%Da-bUn>W26ea|h!|2=1dpO|-Qg{X8X%G%9jQZ)A9{`%}Eh8Aad z9%pLg^DdtTB>A@~z$ryiT*VUfAPxiR?1?>QibCn?g4N+u=g!T0ex*uvUzW1$BGQ5he^-MEaZP2zY}^HzWBj;WyMd;i^LN!Q9z9Ppn%Jz2#2TgK^@$TFox{op`Ea_WlW38`xK7tqXY*Bi3G zIarWw(`FQlHnSIn_eHCI;a7UdZ`fOHpu?|z4|X?^I(mTotC+2{HJf0L12w?cFH`zf zzIBLyS_?OzXG_-D{k&L5bz4@6GA!Z>B_B)HZ)XM;sdVMob_WV8Okvt!RzSP5sN!BzS4}Ld{Nq?WPl4nJzJ``qW;29_ zr>JKW!UKFX^ND=~C_x)EX?F5sMHP=BA*1jGR>G%85{s1i!&u9O$6Te&h8yEbbt}_l zJ5?5c?!*C`F#2q!y^|}Jv-mHIs(nZlXRdsh1egx(7hGQ2F-URTp~fP2M6Ps9SjsKX zrJH*o$2(<@{kfI*ci@jUMi3^Hp2#l5#>&2jELT*EN5?TPYeGb?yZXiza~Ma_Sk;K& zL;7o?d2N0VRc7&+ViU*&-(FS~yo7-FwVv?l9IttmjTQV7Q`*NgR$l?Wq_c=sr=oge zX%?h1mWMIX3wliVw+q&V?VeipiPFXBg|H=2Y^EJHQ2h&IxP+D|88=rw+v)bAx9 zCU>I2b#y{#Q(3Y4Se-z~AqMN2>E-Z!!4;n7VAQq2@dB+o!~pA3mqwyMRK*mtGX>(@ z;(#=}zOlbO)NcF<+#?Kytgkr9?;jr62ny{OaH!|3oUO@DJ~Rnw{qW(2hNVw>NKO-` zuDt5!24sP#wz$l#co;f?{EgX6NjSx^|}bvybh_iX&IZs z|2$<$OfHh#zl^lyy&S79()BTe`P2?Jcnx zYxd&s!!A^wHAYF0&@zT-qM-&e_VpwGxlyB4VNuMrDh8upiRAK!EGLNFllT89#yrD$ z9fVTm?MX`jRR^cx&i~+q2-sD06nMB`IQFF|w)0Kbkx2i0NSU2ZmpRS%dLi`ek`Ueb z1?;ri_L^4TCji&V4R7PNiq@&du4&M0H(rdxIKij}d0Kjvk`uO0B+fzxk7;}-PFX$d!Cb4bZ8jv?m zk6X50?0=b4xd}ZI`x5_kZVF4lZYkIc65h~_GLw(;tPJ#DOMw@cRdL7QYA;~VSsk}mDorl#gry+HBf>}@&$DhdpfuuUB|Uz zgIa@$_J@}^B8yAT$rs4em8o2=#hN#oSU^xzE`mLN=o^hcCZEGOF7zKe(rC%QqPlT-A0;oqTlWO zV~CZdrg19p^=!;JMI0jYrJ6+np0U5(5|M&OG{H@sVBfXGQnKn$-@t=0lx=yHI86A* zl!4$3a1Ezg@D+P9E+d-gXx7XPWfMm&6KPvt&W&v{8x_yVfN-Iyep@$*$5V|CDo*t8 z;aAi0gG)80a{eSFkOw;>=A7L->VC{c#Y}uU3HGP*k-8I?i;GHzg1RIKrZU+ScwOFR zk5da9el00wl?SdSX3?;i6a1-ZRCq`JhaT3U{nxv|@Sg~I4Z{#1$EZWV90>{a9eHf{(S`rQQ(~9{X-0_EAe4EZ zurR(0x|u!b*^cR=r*YE0_GgS#JXgfE=bO$dk;!qd1AkzFj_ZNfZl$bvtGaVKV8IaO zKkHN_lDo@b+xl)`SAl-LtYq+)#s;A4F=}-rW8)psb}m7~)wO%C4G!*YBJohnirOep z(TQY(@MUoykfu;h{p~OfEPcXBoGLBZr&y(=?|>3&zpm~dxWq$s+%8hynWy`&QeQ>ka0J-_LaU%_O#2}|2Pya{ zA^cT48Pp~>?@2wU2xsAf=@VdHEQ~f`M2d*P9ZE$43${jL!LZhGor+`E38+742BhR< zDXMl#YL*XZBWX$$!&rjCMLp!eynL6TfNPb{?XaY-_xUvK@EcyMzO4||p7{elMVFCy z3uYx=&z7ndXE(Gp zhIJNGj5yhaWAo62pOrNDrs0O;Vn?_?eZ*XMB(9wzfP~*(W!t-_z=)BX%ltaW{cmD< z7HMy9!1p{5^a^|~+&XvsJMT!g>(iLD8r($(ZD{JABH~|)>}P=;>a$i$eq zNj`c5nzJ?66A6~y8M#6*nfi`zht2LyIGpwIJFFsBxYXdkwpa3ZdNEfhhGNp-$8Xw@ zdU)*~)r-PMNL*%u7k#_EUUFYtFCM`0^ifk>Z&72^Rcdj9NAh`?D^Q@J7OSXFUV{Vl z3CJ0TrM^Jmn`{y;Q_gQoiXm}Z&S`_#_P$GgGUbtN{Z~ht7EGd{Ym0{aDIP-z-T4CL zjzy6m+4P=j=x7G{|6x>@Lu7_K?K6&rEIG|6oWQUhKp-<3>n3X78`K?V7emr$$)l{> zCXPb<^hXXt<3&qWx?p~5TZ%x2FflxiSWo_u1*|3CDnwj2`aM;bzbsKEz^1XG|p47bW z49f^OPVXLZjJ)<2kA&wQ>w0VtVqZ5}lb(04%5LcHO7re@O=@t}MO=*5nQ7Q|-uYTc$zbOv z+vKgfmml0@`?+hOAYyDbbkMth(2^zd;4HooG%mAxpiuMTaTv~W-7)aUa=cD0lU?6& zLW2jU(43ihW!L_Ic0-ya(JuqW|6)MGNZR0UExxyQHF_J z+spGD1OH17w+}mTIsSWu`Qr6GM%`uzZn4(p9A=AmmlgFAx%#f(pC^G**#|If{hv4G zU04hrURGLns>VU=Jjn^MaSv~l*8Ql7ok-(Uu_Gzuf8zB*83VCMapfLjF3q6wyBi>< z7*w|xNkbkNU!8~gGnML}(Xl-;v~$SsCA?0g-EdZ4trYT&HWAyA)=-Q;&L{02LzuGb zNIUJ?UKOd-`XLTV1DuBk{;@CQB$WZUUwZ(#&}(T{!FUy8sxPTv7_8Zr5CGZh&vv}G z(+aL;nUH4bxw84VxQ?_WBH~bsjZ|`*F1mMQf!_?_?(**=@)DRt!zzySJF@+k1wwqv z(v-6X%|>9Ya^Bk?8Hh3ee>e=J<2Gg_(P*oVOpKYYGKUe!>j=rB4@$U0CwG#9d1dFX zeo(xwsf}&KSm2%zO--X%2U@N&5OU&t+#61?3T-sr@{$jjn$UEMe zd4VLXL!6inDo>|>q)yn;N8wPn&IUl+IL{O4^^19wtno4)ln=A?p5obnNo3l3Cx{-g z@`jCw2M~*|fD>C$jV$ff%<5ftOi%*TgJb2~bpa!IdvkI_w2FXuCH{{cZb5>CgbF22 zu1qDe{xM&1zoRPRMUr!BtfCRU;3FAS-8kN(5@G5{p|R=I$CFRZ#@6;7A)1vp zkR;Ll>vu!w=-8{Z8bo{*?1OjM8YXFwzkRqj)}-mZQAovDkHGCxRibJ}qxop2%(=c7 zgiTVKQ}GNu=1BCam_DSu+4wdy(ztK!4!^f@l!8L3JW--)f(0038*7FWGKB9X!RoWw zwRfEduiXy8#SYY`rw{!Yh=HBB7A+BTS?EGWCn(v#;z-aaG8L6x^iA5%Se4`HoGU?u zo$SscfaE~h7D{h2T44!pM#$aHE;(38oo9zPp!3>1zPLWsw z^J&aJnBo_D4Y?;kk{86pnV7kbw`D$B6Iz|7!&1|Oa_p$1S09#~B+wE~% zlTDhU|EUZ@mx_GHHVQ2@E8i#Jie%=li~f>}5!LkqN_l`$49)G! z6joYRX6{2`9|w9_uPbZT29vFqo&)LC0diLGZfXVr(h$K(TexE^2 zmj95k#wS><&${6Fz(LE01C_t7{0SO;7_28to1?5rL3K@Va&Sha#7YMRTQq^wavV|% z*lVO6&&DCHmx;S925pRqci$WZ!BiEfg?QhB*EGShg04T_>7EID2Lr#c5(oPN=$%Y+ zGgKR~j8zYy-Qe+{AY5cHH1fYxM|6Dx#nZG1pP_pLMN~NfW`jb`?qg1*l|4^*r8cK* zV@Bs0u>%Oowx{Xkgh=fHt3%W;Z;ixfqE^MQJNYlyQNp4-Zdn(a6~=Zl%Pqg@A8^-` zRE!G)`NaL{juP1rR@BP(dC#8`Ec#}T-t5jO14vQ!J!@D4fOby1E=CW{&$aEyL3%vz zNEBU3WOzt`921tWW7lTU1ql=!ic^C7`RB@v?)Rn6{Z4IPp zuJ_7{{t>?_B@>aPk3(3`wDl}hIH!2O5t=8OU+Is|Wmz{oM9`CGze0)od;_7p2FIla zpFo3)XJIoF!Or_?gG0-4%?)N5A2)-mn#d1wANi5cF?csFVUGt8N{)r}zowg|mXT zxx3^;MQ`K~@O+FKLyIOPnO_hMgZwB-fkiUDK0h=Ws z`CCv5!X8ijAsxScJ$u*rEfDw^lz*;atbgdBtsVEqW4O^(6hC=+aB$f$-Qj}6%5U8C zcc_yf%>u`5CiLP2Pbe}!aNqmp-TAv_*?i-9W~rYsl&3pn4NM-R>mqM{_Myz(Y>~@XP`U zth-_6D&XCRk|qZ(g*bJyl51=#?XKPI(OQWpFZ7=+5$5_)r~<@{(umM>tjKxLZuM?e z#wZ>KleNTRm%<{m{~ve5qHX`>wM87LVQ#=!*1L!~W*?HQja4~XOQLo8Kh3Hpk?l2| zp{R$J4v2Z)%VNzIE_8>ojnKo&`>}CbJV-iWJ+baqX0Pf zBpS2big^`aS*vn$>n87cY1y2%YTFpPjKZM|Xr5T>q$ZvMR=>(t?1Dba-Uk}VG zz*ns+%-}V!o$B<$RU|1$thcVMC-VFd!MmLduR%?QbQiGQLYxu^A79}hBiT?E3f}iS zkEBA4eR?!!BNV zl{QQ+Owt?3Llak6rS~4-HLt3>sjA9i_5zCi>)H)P_S+0{LPdubDFl3$5Eh-TF8!56 zR4fG_U2lQ^VUsTsVvta$J0NyF_vsi) zAjx0~9x$y~5%N9FW5TSw`?sM2<9ZKwRd5p#x9FXT@{lR?|7jaq;0g`(<_$L4Kkezg zJzEk~c8Dv*j5Y53-l%^)`hSzh(8K;fI4Y2&${rEizo#>J{Kbxqi|V%H|9@n3$5J&! zziXD#^sm7$r;K1Qw()FFN2uFw4D$*eMIzahhpRX!{B#u&jHIiEItqy(o^hqo7o-%JghXKHRz7sPbhTREZrwitAlhHFDfDt^~!gjpzEN?fTG)LtnvEy$Lec| zik!xErv3`uS|E$Z!G@C!oeh_ z_?Dw=4-dMu_SGB5h0f!e)rh(;cKKFZ{6I?-f`$*yP1MO;giTbfRj8%Ihg+03!wc%$ z*zySd1g*+*o800%X7Ws&%H3-GyX+M-ExRE?K9_lzUcG0%BP`pSkF^8*Jciz3+dDyD zo1DSQT{a7>?+x{x#(+c_R6h8qHfeQLAj1yQpQBTZ9Wri%n?J*`pR zXPFxfy=1}@$$P;vTGb-(0Dz9(+93AMSYG#fUdxEvUElF~u48J)AlX#yi0nv-TY!T3 zDJZ8hH-JfC7D%%zZ7uW>F4s=F0;5LI^LCQDYr+$l zj2Z&7l~KH_xMRjGx()2vxz>|v6kF4?`{nFY-1nx*5^fRYuD=I8j>DZZiT`E=+HAnj zu7ouu4}=1-J?J=A0bq$mkv{9bejBMB|}N|jyRdf{AUipO|SQ(d-6ul#uAzrgcK8ZqFPkrx2x{ny>(?YbMxd&~S4 z#|c!9jZ;fx(FHKfYRAWQan7_;+Gk7e8^B7*g_D2y^}CicYQ&VCkIq#v29vX&5Q6$) zuOL^Zxzo|nAs`RL<*W;mh5m}Ll5}zRC0D8N?PcHzyd7TIMAHmG_V7MFl$=7*@fzss zzM(Z>-h`p8zWAW8ioUetBv2K)G(~;N9MjJ3DQu`j>Wth((ZgkTnSsx|=bHsexAOPW z%N6!_%;d6qguO6!sWodNaDgB|5B~D}>WaO?p;Dp28&a40vs|gu$alsxF}*hXCf~{y zLv%d9#LniV6ah15A@rkEBWbp|yEgRW)O{fsmNWER(C2JNAhK3Ew-91HlYaIa7_${@ zuowPuXipq>M5nWe?aXTN4Lt0jj1NU!(pw+Xm8oo~V0*|5!I$Fv!?<`lF)B%%j9CYE zSL^&S%uZZoroI}W`ql3X^YR1S17y!&WB%CUg^=<8^9hh-%nr?*W7_A}Y<|xlF#F`A z4g5&Ih#zGp*DQHa&j3{Fx!4I1xrw`W7|j~dQZK7tuD#Y(AUX2i^oViYgTNP*CF@?s zacvU}EySI~meRf+QWMiV8`{2P=LBvG5y-s=fb)5fGDxIQh3EcHkN2yAcgcWxpbg+3 z+Rf_wA)NC_l@r0J0RWI*_wN^gsg0W69JeW#>hg+|+*`k|K;w*%uuy0O1o<$0ly{Q~ zXrfOb^2HlA$Yl5NTCqu;^p0#gEWgYROF7m2827hUNy~WnN8cg;Tz-1!bkAL$vNI2i znS9*i_||(!2wHEX-q4GoUIZ>K3*lyDLpokzTO#Y)F9|q=h;YXRy{xW&HI*!YqBT{ZmjPC`9W5=P(v&Yb)705uMNo;pcqB-Tl!IxL)o7!2EbtK_RDjh?Uzf~;5~stHP7Y0&k%I0kPTetggN^~G zS%=rICLUm1US?T57=h z&9mNhFA4pSlQP}czAT$?3ZDC5NLDw?P?h+IP7B`KXfW<-k*z~k^}#cY1EX&1^|b}Q zq=v%!AfrtW+X;}ep6S7ByaBVUMP`AU{ZC1=0>SDwc(QQk*^>@-4}2_l`B`fp{DyyR ze=*uHIi2`SQenbSqUZ{4>eZ2j=XB$Ya&vZ96%M2sU|azdk44p`1bB)AUE!(z3hn|= z!&D#^5;-i%;|Ekk^kV5fdKwI+X7VWTcB7~88s&)ne%&Jf1JQje3U%0-#5Z+a&PJ;j zsRmx?T|MMTB#}6eVM&B!Kvv)z!oS)BtU_@Mn*hSo->qh=V5zU>2hFoZYp*j$a-+xb zfwfeY^nCWE)nqC4#hulIdmke=Dqit%;D;|H{}=M9CtfS50gI`|ElAXnexrwvFw<5b zdR0RVAj)RY8md$*sj#?Oy3tIrv)6o^noUMlvch8IR*Wb&VI!wa|++H zjyTLHf`NQnq`^k;3|hB}`{rc+*WkXa!f^#vWZKj7md*F@^+FX5yO2~dN!6{2415DB z#N9d!b=%}xrww{eVtS%5%8B!6Drw# z-q@H^%_oMOe<+)P^rH^x=!xa zbpPw~;Jo7s5=Z$TYt9qql-b>zLnPpiekZ~7ih%_lSt8fgj5|E2_6hz{ufGxRS3$Qk z6&0Gz@EVy&@9^OUBia{C?)|668g{kkn+dK4F?7a0C{erWN-$i7 z^8>5{Cr~&iYp&{nwVj(CVjX7N2Xj4cJ?A;{RnfcaGG+$tBSt)Rjw}*;doN@1N7;Nc z)*)C3otu(Zx%{sPiD;Rw)d72F($;*7mL0Z^&uC2W>$;+YF=e#kbdTF1Y8H!U@*A@g zrqCT{)R=@2qpaYFX@)Yj`&BXN%z^*036~B*qqo_t>{TQ`qI$Rw{%~$_?clM3dXa5S z=efu##*rBo>-w1|l4)t5v8S^O=){!}T|KJa#>Dn0DImru)Kqk1*|Z|ve?=6RF~nqs zu5KBuPL$cn8ZGy_J?;B zeN_3ui+FR=uf47Ns9G-IEZ(JP-}X>dst4wzNKo_5dLYosO`PWSXGaTXgppV6Vcq~e zgK!o=6!J~#co5K2!C-4LGY8&5kgCzEhNBAdQ!7W0nB~?0zZKTmTR^Ql=O~g|L_sJf zAd)8S37cjwbZC9C_LTT7GM9V`_#kSC?hDs^V@L-+hYQ3L4cU~;odG9YQ_h4w5^7$s zYwrv3-})qa-7d;%{dzq9Rn?FFfqW$(apHWV@zz7`!cOU2Wp?z+Xr)%U8NFsKn?%G` zJ$XWHIdFMAE1Y|^9}6wofcSL~fuU%(PyO{C|97)d;6o@SQ=z=uD%odyfx@ZeM)3h2 z1ce1JNdmufsG*4il^EU5DwY)G=GSUa#7I%tfm8TYBDP`?goFDit{=?p8+31I#B%lX z&@u%ozM9_)y)xN~u3gudVs3zFugv9G0Ut5*0DA$w_z}Gdp)WumH@^=~*Yy?HqQQr= zf%`B{>1c}Emh<{7u8)GjEYkWp*>ix8uj5Y9E}U1JMd&4ASeGrag1v6%fyS)u23TUhqKUJjnh>d`N0B+&q5sdn6fqr*5CpT@Xb}^l=EjN9-q5BQ(?4 z%wLzkMLzOpS+Zd5YLL*t#xpXI9Vb!}b7$9kt-3h3IfQ{cd|zGaYmoa_FX)>Prc2vFj|{;c)H0ixT+d$y&wMmGSSO~VKCf5Fa>+K%0PrwG1NjWB@8iwe|>d1>2zfoHyLto z6QGc$bOK?FDV{9LZi!Y}3+6H*8fTxXZsY0!rZ7W*5`8BQ$iM!`G%(c@K5kgaD1Wss zDoOGc(x!W=KKHp-x%Y(l7A6v^bJ9XXC*UhEJWW5&u^QkTZnCau{bG@x%O09pSf$7v znzzDw5MW<2MN8B*pfEqx+}sKCe+Oz1@DiFs8wEI}0aCq7OT3N!R_MOi0k`?fQaZOp zev~TUCe9M*E(Zb$_H7&;S{~Hhx>$~VXZP9EgCNyMvP&9~5;C2`zUZGG8j4g%TCEkx zSEMj`5R}7hUlPL}q7yCMicgcHxgZ%}HhosV5$&kciqx5%;MZJr03``dpFq`E@0yHO z8GhI}DUuhlxDOJD>Q37&KvFIHMSuW^5Bu{QUHWi#a5X{)DWXpl{=c4{8pMpV@((Ti z%pmW6(c5F2?QPoP7&6}*=K{?by=j-Eiyv6R%#gNYS`uU;4aT2S;Xq#3`OaBBvUs6l z!>0iaxhtjxnw*b`Bkg9Hci?D`80a=yJR z4JqG%ivKmKnI6k!#cU1m@!bJa0>texgUQ_{?@&xia!g>>x6!F@kWv9D|7@ZqeAD(d znQQ~K%n5$L2}59S=qW9=1;@yifmdN#-8_Zl8gVk-LKATHmcwkyHA-%Kf#_4_z zUN~v+AJbJT4Vc4hz;DEA^Y-KRh0sB25Nb2vE%X~mnS$LPE!79yFZAA{WqIJ#!Y3A% z+!*-;#_bR@zH~;16lsGYn zzZAq{)?v9hKxaH{rm7?_wp3*a^D+|qxV-=qA-h5f5EZ4+&y*!Pc8L~G*g|(|uaC5# z?T8PxRB4@po+X4gZ_QGqPcKZwfKl#%lc&by0P)eLe}Q>dHrh<0GUJ_5I7*0+YDg+z zP;;|r#?7#e09hfwi4}EBi5fHpxRJ8j*nr_`a{yy|Bz!qjux{xG%xIdQ>HoW-&(LCA zMB7^aOYm0zHvupk1-rt+Z{kLZ2OTcMlbQMZ}7V z-b@ki(Xc2w*e0d`eXLie9ESOwN&YuIt+dyKr_)j`f--YYK2n0JDzsmX+5k6KRF&W> z&%-4kM?7?Wh6DUsTk_6&)wD+h9}t0EiQ=#>H__5`#|CU!{3qd%nJdjanFEYY(v{*% zoZqZv0|eO1WXQVNl1YPPZSm@V{%@LBo^T$>TIi6{49_f1*ew75PBuG!he}ZDmv!4+ z9^D0!3|`mZvkK~)0|KcUm) z^JsY}}MY&#%0xMs5!IfSPe+6v*_j2}V0FdJ0w>T|Cs;l{^yS;PqV-mnwFg;s@LrYBC-k$7U;iwaMqRtQ=) zL5nU{1Z!DT>QBFoO)dTl6K?briM{L+eX24uFM9>MR+G`7{GQUqQiO;_o>Ktbq2B%i z59595GIRCc7aAW{WWwJibE^xC)zmyz5tna8Hf}Oz9MGz+oa$G^*?Gd5;0&Fhs|n_4=5)dq5Vjbg zWJ|p2v{jOk6W6v)KZ(CI15g^LV?FR03Qdre zUq^R%2r=4k(^U&8f|11`F@-bw~uqkB3r4awHS>5A6OXyR5<*;6siWIQ=xZhPX z`oPJ#vVKCTHksuk0-gJbY~^&$fTyIY+GhPRMVxp=OI2Q)*xdG}$)^J+>`Hc4*t%CM zQW9^bN%)mN{uF${F-EN)D8iPEbixRRkbzmF4meZ8AW7=-@+JbRIsTihygg0~tE z9$!jLhp0031yoGIF9JHhW38V>#r)7+rw6#e7uB(~u=*#^Y#dQRwi}YZQqI zC{+~y1!{bY{***S@Din-A7-vQ_UNrxsSrJX=s53!@Uri>lDPFstU-7^!4z)Ou@D5oV9LDa{`ClK2DGN#q73a@s+Vg=JjbH ze-y9~OML)XG^$K16dFs_0JNQRuEg)2>kirw1g!R>;S+LQIEtX;khk_!T|5;3t^k2> zeQO7Tl<9Xz-&$nn$_$0zU{Y+Aj;uiu`4@ftP%-k2VMPAqe(%5>9Dkl3gI~#ar}D%p z#l$zaHa*sw0iYX5iC6jm{yyQv@1D}!1=rFqlma*i3x+;_^-xd1!SQptz-ibqLDFop zNBcS5D4=JEm01`SgLU~dfXXiFM~}051E(b3*U7(?Np1Z)0|S*{jgFGKj&{Mqmte$X znDq|jH(xviRZuvX1<~S; zCc9{bjGAa-;vQUmF$VX#Mj=2WK2|;AAYutg1YHJu0aGWyKOB~!hz z8mPXtbjl9m@Iw=8SPjugn^-L!?+tTYg{=j#ikQ?vForU|M&;&p(L{%^di`pB zKJ2RYv2dZSiucHu(K{S<(KM;hL zP_Y6Lg?B=XW^hsIyUR4G@dY2bALO9|jk$X_iu+o{<34EEc+@^VPSLRWVbWm(1;Ox@ z%@T*0I)g5Fg9g~6C4rnOx_3=2xidJg4>nEHk(cWemBIa@P5o;ka5LEuBe zH||(RcJF^Hh(<{V$b&>ULXyc<#jci4nNp%WZwQ|{!KO#RnQq)%4nL*+2_Hb}iA(E_ zXiz&gc0dlTr*ku~t96}_XSO~* zwuUAH)$#1PP2&13)FmjoZrC7sMt&JCSVsWzzb}Cr+btjuyCud2?efg;SSyDNydB$H6L1O?5Al5QCEGzjZmb!@( z&*Jde>tx7#?6CDOT~wBAl(Z{0I>(_q5Bm`U`0ldN?G zI(8R`Ox--Wz~5*e`xDnBfm3Vp?rS-nlN5=xyFXD^1wUZr5F4O9TX25g)%xk$ViwZM9I zJI-#ii7X7xXHe-XO6M12&{$NTKKM3%(8ak;tVMj2c&~MzjB2vb?!Ur++-8)~k^|x3 z!^!IT_^}hgt=RgzM4t^nKHQo<+7VhS>Oq9AFIau1%YkQW8S8-!ex#S*y<8XV0?x_j zOcpq&SjHFNXC0S1EKYd9bpPDYX`Ohy`n=4q#e@l*9>$MDa+;2B3k&D?ilmDeihcy9 zL~^dr8(v7cIYEbR8C@KnK6xL(*U6t0%=5s5Fm~bdJ<&38dW_kBAtptk4>9kgaNRQ* zVB~f8k1<-F*_@tlme#*NSagW4SuM|10z_60>yW|KC<2OTi-#w|_^sWZ&K~#vUuG7r zUM;a)@y~CGR8h)WnNf$VbX^ADRzpu_Rl&2GLM0ww{@C$g7N(r z9ywjMUWB%&O6*NStN>=g86yHbdK|Qk@QTKqURjA_6w?jNfh^%Q0KnAOxSSqf8w&cY;zh*2px?rur4xaW`y=Hm^+NZZm^m$8F=+SONhvMR!`oYw7 zu*#WIJqmSi(im}jEy6|0n@ts1pVD4C2tkCOHAnuD@5v*T*xI0N=tGXe$KaxjLFCgquP|m39Jn77S zoOK{7i8aPj`rm6JjPdYS{m9kf`c*5}d*JtQ+qnkcMN2^+{eso_AY6+)V)?|pTk1+#w-qZRd`otXZ? zbU!HWxrl0fqr+JW!UUuxrEs!C0C3r3yrnj<%`KIsYPW%1R{aVGFihhPvIzl5Fc*@i z&sEd5G4&t0gKT-P1$vOo#ibqqvN6S2_hAxlA}MBBWu~)LCYH$}UMInJIfYe(bNm0}v^-i5%m+q=|RV5Yc^$n79B; zE@__zbu7RSVK?W%rVOK5zEd)!qfMT5+>|HIG`})qOL`xMQf2n-0MG2Iei&Pp z5REZZK^Cw@G!Nqsh>`(Q^LafCrsFWePAEsAQ9qC=aWs~!6?Uh=dQ^47Cv)X{Dtok=mmtzcZF1@qCgIN=+k$suJ#yw&h zeWdEXGTEcrx4*h>_n(=Q)8t&&fNmRXidKq>U7dsxAtV@;@OrFcwQ?v!$aTYEltTt% zSR`H*8m14yUJd2|Ngt^4TBlbf7C9UJr%*@+=?~9UJX^i#nXZCvaLDp$k-t5PFtC9V z0O2BrVoWrz5!N_r0VYb(Wbh|oaeSu^)Nmr?r%plubDbT`T4XhbULUWL2KVtJv(u<8)nFguc;HR|7|>)=A`3WM<4E(ElZH> zp6-#a$IB3_V7_9L|5`x(B9ePIFrX0oS%f7YZ6@x^7bq0h`g4{G*Cv3>uj)oN3wgQS z$MDtW%AR0Ab~0Qv2W3m29(ZsPnrdL+USnz|Y?A%OQe1CM?gCH2RQ$bmjykthwdV46 zTVhL-oGWR5)2CLuWJl>xM;n@%-4vOh2x~Lf-jatQA}RSAcXKBYlCdMvYYJ=VpWN=y z`FmMRk1J*VvPk~#msV;Mxl{x$&BEEyTv}l{8>%oMW}5=bN#Y*AR#1 zuFtJPTr8IX1le7Uv;LIukNrX0hZ5Q4g6b`}Of*6hAtY+A1z9%II2(PO+^k z^G=MpWab!=x?;&rodK9{X`aR_yGF0NG&eCNv0%)X5eMDl_gy`MHeQg%ARh<8aOoXK zGfbNMwP-lway(40MP_>$kS4)&<#n=5e`(H5tTop)nEiNIu_sR1Tn(-hs~7Pc1S^Yu z$H-eq4pCn2#hw5PzpV0h(g+B9r+2aruo$X80kG>N-h4~AO z`*#4kS4A1Als*huYu7Hv);dd{73Jq?YE&hB?ub0X*M9SuJ{%75;!`O3w9>ZLJceVk zH%p)SWMuZeEo0=>*g}E78GP;UGBglp12H49N$6o0;Y_{U?}e|LFp+1fj-rW)G|S>J zjB(G%9ps*ImuGw&VHXNxk7eL4K$v=sU-ghs|Ec>E*8qZwF zlTHwuT<1b2{bo?sy_9fu@}YXACR&Ps8~1F4FvD|UV+dVpLmT?5gftJnKeecDOJ5x_ zTPkOs_UCy1-H2}SR&Uh%A!=dN_=tMMRiaO{=cK$Ub)xZ6R8{Jy$TJh#zDcNzv1vcZYyKWQ9r%W+6;{Wt=Y}2rn7wa{wM8)J^-c$#O@9 z_^Q4KSf|^=-c#?1RBeE}+bX_2{CpIt#;sqYiMtW1Y%d8%RZfp!iD-WcWg`t!HYwj9 z>IY@I_u*6@q z4glHP>_LbBctmUvSiDDc>i03^ve4%{X4HP{hZAnZzY$xjc8at9KTua-`!kMt_OThm zZM85od!Y5^v?o!YTVHENX>2>s-apWmgWWyfev^7^)s^dY>mlyPP~#z6)z3#lAkHWT%wD z1-=4sMvm$YYjNI&$ObEok(fFBd5IzMwSV_tj1_Q!UR2Jb(0kWR343yx-L9PB}jg=|;7qXK;j(p{Ba*DCpfmnbJ0 zplu2xkx~+D8*9+=dy_ORQ+{9{y)j+45M$2FAycl7qgfqh1;p3t zRjj48BA$1o-l+os#)@XdRUqBJ&gA z#P{Y}6T-%_vwy$_=~InEVZw%;ZE_4P(8o~&2s8bnjE4PR9#CZX0qH`i4sm7t_}UN< z?ap*YI3*U#^)eQF>|zb^eBan3khlf7r+6GzHamNCB6RZeT^Fki9<|yt!R(a}$+xh3 zOw25ovFS^Ig)lDJs^kT#7LGZvMWlV6UkqEfCj+6`j0-iAIYjl0PR3~LZq1aShe~bF z5d1eQH?`L1%`i|XWlMr{DLOQt->}I~N)plZ7PFSt6&dlnb!2%Q?(G12xj^#50AH9Y^>VYVYifrCY&$*zhSIA|axU?HYixRuaBC*cgE? zkTzJM?V)b$!d;dr2Cf_! zLcO-5^V-|oiw{|H%(y@av>S)FEzrSwH3e(Ij_{8vYTxEJEO0&;89=u&HZ5q_)zv0_ zUu2K=geaB{69hZn)I?qb*P0#KC%RXKO* z=uJ-U`PveEMwMuo;)7U#Gra}5schiIE>nu_XiSOoY%RpLdrZ+nc-;SHo9c-(^IE~Z zm=7&Jj9LVvD(2L#zU2WDctOz)j6?!y=I?{X?zbwl`-e)aD#D^TE`d}SA7;LosW{PD z?5w@8*%1G$RVXDsvOk<#Jy26$vcEFiKFC?Q*#vVijl1YR=ElEoEZG%f?hd>Jc>?=uCxjDOf=W#S&26w74bLNoL97H|MdQs5mWsiB+*6qu$D!G16-tN0#eZ9^;`X!r20v zGNM~aE-N8esa)XJ}nKGCOG2n(;&fwKlFBJUG zI5xmprk1ZE5ogY)WbU%2LiLLP&=75ZmS9Th!_F2VZk}g%aqRdTbIn{RH@7 z)nj@hXGMy{U3Tr4n2}}cmk*FX|Af+R-|`5GRi*#eQZq*9){VteLLEDqrvZLh;N_Q^ zJ})TwpR@dav2)5u);dh1rg!{)MOB$ZBgkEs{eb|kn>!2>puhn0c#0RZW?mWa4{vT& z&?<6TB1YeP;W>+T=Bm8VhGdIe|jXmm1Okt3eGN2c8 zmo9ORy`(R~j$i4(7=R`GPC>)V9?+?`1bFvJ%%3jpmKrA|s8^iATHF)7H5)d9ABYn! z$U-f#C+B(WIPPUoi$g4`6mOL4s<&PE3Lk!sIlTcAz&k~|UbF`Y9% z*~zhlycaUK$$<$AiKmwNj%khKcE{zlBV{^9FE3GKdv|Qh*`1@2t;ufCNuNqEQ<+>v zj$}+@ac`!E7f@b=n@eev$=K#eRWJEjS6HHzvbTj+9bw6XJQF9m&5_TN~!}QjL&FGzHytOQ;KhpULn0Vy zGCw$2W($V0O^umv2~iV0hxaxM-fRE9oXiL=?E2p>F5(?X^hZl`QzC0BW70qsc~IX# zLH*|xWQF_yjNypotqQES9=|T61L)OvZvHN{rL`~ZBag|YDLt~?UkRR$1y4fFco`#- zUh=SZoIGfI)xN}cX9B8|WpEv6*UB3ehLR&nxw{MX&sbQarQ2Veg4ui!({UDPqHbu< z@=7#Rc`cgZG}J1?POuB$Cy6@G{ONA{cQ|PUTwS-S&tCM_@Ve_0TUL|>Ff!os2;BmsUt;n4nauC zB6Z$m8wn0Rz|K}WW0Q{k56#jeevsoF2y8lVHmdyyZ3jorQ7@iq6jY6C%oD+GXS1FD zur+BG_Uh~Q?@Ab;)_SDw_uo?_soYyTUpclqI?1tYThpLJQaOJ z#oEb}yrgA;EsUkt*_D)n0u;VabXO!+s%_IQzn0mnA=xzcL5g`{{16})g~fGnw!>Dk z*stb)b;VOy6R`Fp&ya07b)_a9XK5Jlz7?|d`Y}J)$>{t8--*L7Hsn&^lNw=jg+6P5 zd6swk_!1h8^r+ZheHGvpWHjBqIq^jeR|dC+NK;vU7R$oL{^KmnLCQf64D9u4Ok?x0 z0jGRfIc%evmhw&eq00gz2M1k!Wo&eErN@}B#xWip* z*jmFI*W$GtLlS^bz1*|SH$aEZkeMDCS&UF@k8#8PXI$0;pGWGSJB~+#;a0lSr5kST zT3bzwZe-qxFkb1&8yMU3i$wvy&+mk8NAl*~K^p|IMxmmC0>5dWD!8{_p6G#C+T~Tg z9qZ&jKvwQuzYQA8k+Oa>N%8Zl*#Q#E{eBzVPR+os&<4*%@h-_S43D^wuC)V5=NB&J z*@QOq1nR1!>}TfI?Uak;QHDX!%IsCe`bZ}HhEqfsW-Wm?rqQ1&(#5Z%XkV&CG$H~R zrSh(jEJ@`vO4+K7s6~${*dP!1ZOb4TOqbhY+`Ac+Wf%gmO4mQqVlmd03$hxEkLvnd zf@b6O7ss=)9s=5ibv5jt)yL_M-V|@46gnNHO9Yp96j4Yro;%wKG!4}+dC{`wCODdmL7Dy#B#)j_U;J>BV zj13&P3X;p#$&`_@f{SB`K|}kB${x8ch83Ak&dRUAYi(nF0-hYlVFLZPrU7?ya5A&|C46VnH*_0K{Im$-r?-`?1!Tna?4JpYo)Y$1Q9FOAIh0 z(L7yDs2n8TPhT!0*Ixb!tP-t}d8Zcy=~`1I*i8f9!A^cJwZ9A1$TG!|=TG$i0~^0P z5#+BFfHj-pJsL=`!3kG{7r8xH6I;+wS6IH+T~!i>dKtFT=ttv#Pu^{gP%y4}{rVWQ*yQPdB5B(s#5w-bdT!gG+wo*6Mwe&tqjij~) z@T)=-Z;aewPg@`9C06h_TlfoEYgGH#FZ~cN)281e9IE+NV`(EbD~WKbW@*9k@V?p8 zqSg}_paDz^{^ihwi!HX(_$y9GblTO?eROw140hZc2>(5;XCsN$@p%Q^sbf*J?i*p{ z%o@>xx}Vc}6h2Q(nwEM|)-8Z>X13peaNRk;bISQf+4vn#oST|E#&{Vxp$UAH_JZ_V znL7glp9)S73VA#7+zOJ=bMa7IO?NE##@ZD=$Fx&#ApV?9cfJACiIL1Agst(X`hL)N zwG{A9PC#6h3J-2)#26R@n^PJ|>nZQ#VO#j_m8qQH2i5yGoq=*Rlmk(a=fl z?BYX*$W2h2U{)sV6!=rct09C$p;4pzzdDwik9EKk3=M7QFZxSpgjP^x#dtS&UKxC> zLjvd#xcr*8WcxJG?go-ZF%3Pr_#8aQUc)WDt~FxVRm@7kNVxI&-yzaa$PLhmeEKbB z)WMQzrd3r?nYr`;LO{L058@S$x0&gJBvvGCR|cr!3gFx}aeQ3Fl}sf5vtO^o8Ok(H# zjxBj>pf>{HI62SaN>SgO&KVQ`Af}9L0#HdUo!C1b*EWZRhlx#F{eC5b>+5T$iGW+@ zwv1ttM>%a~mBy1!(r30XeFo?exLyzF*4I{2nW-?m?>n{! zIrxB`nW)}0`9oj)hZo`J=&X0c2?`on_dpR>IkXaUxq^aQR!e9TopCf_(b=t?m-ub2 zNUjlJ+wZ^U=b#CS7x+M{%eXYN-7d-L0W*WOW(b9|fsNZtfZX)yyv?6PmBM%{;+D3?qgaM1{#mmtD0$&9g&B!W@#@YUcF2ER`7f2@z9lZqe*19 zUy<*3ZnadlMZo_vR1avkx#Com@L8KDC}Y#f$%A&Y6DberQQ6Aps@uKR3$I@opY_7h zm?}7QYuCLcSzhA13b_k{Z7iI;*#-3wN+&sZNcD|++3P`%84l!LPT8wLu-*4Js4kv< z3C;k^*YdtQ|I1r+zv}aasx*kw&$a@JtjYl#S`6hDGzK-jx0%Vo?o$|s+sN;t3(KBS zt#1YbY{W5Hjg5`1!P*Wj=^Tt`t6Z=>xq+we#O6o-&OZ9xhI)eAHMEKM8xm9@Hc@Ow zU=+D=%WFY1rg%P=Cpavu+vd;$HsTPov7X~k4068w&a5??6|4m67%g}ie|B&E+jGrM z!4p}ws7qqf2@@=018U1WX!UDF5`m-5edNmMS-Y~;AK{D2k#E4hblPkL;`$+a^Y-IK z4Pbfl<#j3Wy1T;dTwN!^>WGj>3?L6pyE5_6oj@c|3Fo@~>*{US6V{Aj1)E6`zJm~W%v%%5S;hNSbB86}aj3Ia?#<^n6@H~{ti^Xoozv3{4 zA6dXDEehc4EM|+hjG8Qnb$y@7Jofxt3E&fO?4vG2D>8@aJ(r=_sOU{gQBnVuu3pSg z0GDo%{NgbUEErVyYjR($IG#nDyx?bff)^#ozSM}YIiXyjr@nw2?-FGI#aUQPF`zK+ z&%P&(N0s37*04&^k~DXzht`=0B|>JpCVF@^x)GY7CRIP`uW&J)kRo;`v_Go_-{RP` z-z7#47V?Mn?^gLtiI$|WsDD(cf8Np=;N(Rt@^)^vZ|XHIr6;FLgiqJzh4oNIz*?j+ z2P=Ozo~JHwWSRXMOY12GdBWPKb&30_8KwyE#2jl5S&OI|&}*)@%82EhSiu~4ji5ip zoJKSQe;Iwj4#!@LB)IQ<%@V~ckp?^FHO5suM0Rmybi>k{YwKdqZYqI0ZWb6~>nV22 z@i&w#wfY_JaKiZvwhlZUvLbAOk_(uF>aR$KUqu3_5ad0Ef6B)SHI0;F4e4n~P!h4p z)sD>i?w0M-68m@Z@@xP_nxqR|7%|tj6u`!gtlU9Ug=Q;HU>vqvsUS1(+D54ZvbM;i zsuQ0^LE^{^kl8(&0AQ(_B;zSgWY@fODB7WNfJ2yuytO zn8|N;;5wth1bJULjJ&C?9DSm1s}7ui6Q$X_(_AN4=^9$31XN8bz}-?)?puRCtq!sY z0TOcMdBR-Ww&+#3Mj&_1r}xG`WoQVKpX^;!Sm@U&Apf?B=ci;~aT!;0nz@Wmaq-chVE%<;kn)qz{&u5{nd221cxbSbX0(cxr3CD>#tvKh zTQL3AS5K^@oq=*7*M#HOxO-wuufHeb2<7Wg=mIQbecveleSywlw~<9L#(`}q3@Ce+ z+~J+EbQ@VmrHuwvNxt{j@&*EWYwQ9aK-Diq)(8C~SCW0yu?kEyh^7O;zs=e%uz5Im z^}r%S2oHGf7&pgSbAD4qW+8vq(E&~ z)8;?ICM274f2KLud5GO1J1k>1c zx|;ZD`hbGqIp*0#uiCOkEJm_p2ZcG9bV+ktF<6G_SwI6wbW=UOiK{U0Y7fc3Nu;pM zp>BP{mO@+}3yi~fV0XyaNhpjUT%46?KenxWb6!z;lZgly1pg?moo?yGGV%E%!Lm>O`o5{~L4sIx(mu>6g zVs*;AMtaQimI@wGQB^~ECJCjT@G+xloyC3mwZ^ZOHexHn7h^sv-sr5U~Wj zxhJmV)b4fJ!^aX|!Zpn}EbT^x^DJIkeo-3{YuD%W3bs1t1s<9UekiiVJX9pvbQ35B7P)VO~tqgfr52?pdb))^m zzl>#TJ?#IGDY<(#F)&|>7@h6TH6JMHSHT?Gn9wb+uts~2fWH~~*QV{&&(-I=t3joC zx=0t~(7|Z%jaQN!vgc#^jO4R*D#k2p^U5fZhW7Gz4W^?cGAq^j!8LV$ z1p&sby)O^z&F|$~K)_TB00+I`&#BL(t&UAg-)>~P??PS1_4KwA@QMAI);#=(vNCZ0 z{bpI)MGP;UCgGB1w;BV_O8=8p(S01#*5vv;9T|#eZy65^a@nOU``>@g1@5QXXDpaJ zO{ITOqCCDT^~V?gEW;MPT&Ys{vQ6*qNkz<8A+G>tzMd8rX$!)Ku`a%+2@w!|Q$x^& z>ki!Yp!Y%Ar0%qrV`BF`;G8NT6d)c|PaHK}Y z)s7;xB#OxP=NPoZvZ8)A3i6{ZqPG-cKo-K2M~F_R?fCF*$%4FP?i?$2AFb4ax5k5-H&;uXYy>HlbK;DV-f7 z-qwRPyT1M)TjkL}bcgI=iWbjRZ{Ibd5qBqi6Cu76V7^q!Ex--J2*{|JaP5qiUO;5w z8t!rSyQl}Q!7V-EUhj=NKB9aMA0nyctX+G2f_YD}D05IJMx(hBD>dwiK)Nm2gAkb7 z!!%W0)q=N1l&D7c??)9*0k*G5cZlOInkFTxFxM+@Vl2c7&T{;85T1jKeC~V-cs~@8 z9lQi2RzCX|`)|x)4Lt^9O|pBb-7S7}kQ{>qQ=HmpVZ*Kj>R_~~G(ccvY8x4^X7Kur zRh)|fRp5Hh@pq1huGeOoCLqq_af9{#SeI>+dn`JAQK$=H?*faf``Pa2To@CJjIllN z2-oQE9 zm}noaOSDwy)0W5eJp(T z6yM$}QbfTv8QnWZGljMEkH0+@I+1r9P4rmP4z+|g1cv>91~67*pLcBx5gB_ltaBKT zKvcHo(*KKrI`3r zJC^$kpXWlXaF7O;g!V#{=6U(hOvJu+7!`)N&k|4>x-p%Q_Ed-dbq#}#68@iKSz*C5 zh{|unY+W6sVqPO@Hs+tTmRe769mB-l0R{e9&MPwk>~>rn=NSC^EfG)B(lbxiny8kJ zc!%&epVtkF+1{Q3jM|@mCV-jFP6+QQim|Bqj?`2GoeQrOmaRXEchO=!#@$X__vv=0 z4IbrHz*y&)W3c?vOudGRV^6Y`nSnFfeClp@@_YD~PM-Cm%>d9KW2oGI=bT4+>DS{H zg)Lu!7qJetTNO7=N^xV@C}+a`Sxa5thrvtDHsmWJun2(NDm70!@RjI3q-^4qeY&7x zKv0oY5Q1FwMFJn2NRKh9iT;O$?B0=js*0?YaS%-q)U0uPb%Gq-JD(=F&J_lFCb;UP zp3-DBr{0H4Bi!B$80nf2mXOVZesj}>HWt`wJJ zF`IHXo}xt~7L#SDF(GzQ6CnoUS>o)2yEb0*m=*7b*8syxWB+eqCRP3fjhjI7C_;a&pPV5uS1wwmV27*c7qqGl|5arc?s9h^-Zv18U-iQM^f174J0u01ZS$!FMDV_NHODKX;|ok6XbRP zk21{5qe{IWcT@sGK;B_zq1mX;I=9mMG86aQ$qG6?1Lkci&gQ z;(4?m*4#z(+I=xlbaF+*W@ibiCn-mY!Dg!>oEG}gBZmZMM&^-cYWYXPpR=)TV;#St zs$kxsWIzod3Gn}OGoRE7cJ4oJTHqfE(#P!E2rw!j!2D*THt=Ao=y2Y(cI zgXuXhotNuY@1%Ih#dHFcG_7-PTXD@9&ToC+<>}~cQ!|Sl zpo(5t45`azN6}iCht4H6&kVL>v+F2z{dfHfkH~3;l1Z5TlxNSb)N3;P$|=AqN~YLn z&Zcp5vQQnZoFv}Ze|Lk?msig^2E1@Q6q_>JEX*69bT&ee)fKf<1rw+K7|#~rU7I>&6h+*!$HJ1lS;q0TBsOt9|LM}fb(0sY?G@BDbyyVtQ;=}k_$zQ+^g&Zi z4CIdD_M6YqL%)q{uM|vq!aay#Bu`d7t#Iw=%O-M?jjbyMu9U!Wg^L~7x;I<7YDWl= z2$59>9br1*h-ZE;73P6QjLIsSX9{>g(7jO(1@Hw$j2?G zm;f{Y%VPPN|}FhAXVahQ1jBoIz_&W)J7TvNT9Vk417;4pZ7YtuD2m zBUOHfChBEoUROX?@0ojK;$U?-fuyull{5!tKnofN{L*jX?rBXnDS;`TOQR7#>ca>; zr{3VnPS5n?63Sd_dC}v;(0dW`S6avy+BEVYQa5}VB<}fG+7Ve2h8?qgEU#Q2R5|Ue zAlJ-A0ziUL5jZu3!Qb5xl~J@~oC=Ewgb>2GfaHU;5G$z<;u2yE@&+p!T?g;vKgt39LaN+4iR&~(46cJi2x4x z;~83lc+d9>7^5Ts5Y+BS6r7DQMlA!hPBW8 zDcG~EF6Eca8x)UUGU5|IKmhxrRGFU58SMSuzNiYNZNT?=b< z)GV3)Aft^q%IuU_xpnI5^72zV+T<;XR~s%3lvYb!W?onX-Ht05RO%(`o(G1ZS!N9gPdON!2zMe5))z{_= zy@@IKjye9I-dOi0H*YQ;2(Q`6sgwZUXq_n{6$+6xy?7pp8xJ|J>3yoqC&dqb+`eyG zBxXJ6{IiI5TDY6sbs1>0^?GhLn80nXTVb?2o8&^@a7UowMScVVFiZ4pBOTI)aq}2NRDta}fBVG(Q@7e* z&GP(d-y*4!Myb={3&^0usYkOYUG_}2<>vE)iy_wgvNQ4J{70-Cx9($c)EQ*x0p4Ge*{+)4t?D5W#7Q#AMXaU* z`HnyHK7osxyTvS9a=QffVzGOHj7$WGs&3r>u$YMiR?pg(ga~o-uSY~~Osub9iarkDrBsQYyl`4WGnIV%e8f?NHjwEd`Px+{- z)v?}UtBUC&1wN}u-&!`O;TIGavwO3NnEE!lR#58VL`f=Gp9HX;+-#;%R^~ z*W7)6zu)cSKA52N`}2pGheM>yv{)M?7oPaJr1%syRo?PU0_GJ4HS5MF&kL>Dkfo(& z&Ch>RRnrNh=(=OReV1PInqrj11gScB532nbZC@P zM@D%2{^p^-6!u8oc`4UFr0rPssSHFxjegV>rLK-;{SAFQBn0xxX zu>14W5EwJj%3_t163qwJQA3Kx4Z$zQZ$dU}iduhR@p1~PfFh&{-pkrd?s`!k~S z8EF;5@NJoRRpwOZbOQ^|!)UbOE0{9+H&rmJUP{`Y`)q|M>+cJ>y2aPT5oC+jaembI zdNQ?8U^#L|fEtZ-`wfRD$&z@?5g^JuR(i_MUTb9+@|n!afPqMd9#;ttU(Ew_aZKR2 z(E>+G*uD?8G4*>_)84ddM39S(7LMKbstvNZYmG*pL`1tR8Swf*zqY0bgXGQCb7a5j zXos}I%84#=;Njz*w>$K&^omC;6fxGt5;eCMevS;D65Kz;ddkyS<4RD%aaeqqdcZHJ zyE7(6e59TQBR1z6Q&T2Tl#eRh3-rc`dTo)Tf`RUv<;^p&EBV<0yNqa1l6JnjDD@03 z*!RKRZ#upT8niNnBG)v`Y3UXuIvqqnAs)6}pF9M<4JlUNaaqX;@x%6;l%>V`jLNB_))vG{bVzLL4558@#26(x1&(zsCmXT=rgv zDgxOr0Dl&6Jk@lY(zJQ{-d7(6Km6Gkr@CeV+0OhhHo zV9#35NSANKk8!CSyV3>=vg6$<)8FD2{RHd~J*b?PcWHtv^R<#`iP@Sl6h(@j-mMtT!ZwqKEq0tXR%?XnAgBx%Tn zm&~J(%XVxn4OA9qp&E3Zi`spt_8^S<>vw7~PzHfd=b;!xtRK;hbg?4*}IMj8V^X%?JXx_p) z^1NOWh>c*qVbGycO%naj$gxi_rC3ZA^Z@T$@0T&0lvK_Rb3|Jj--Tt>x%qPf1m zE<3Tb8uBE-$s#JzU@!uzsbMAyeY60EzzXiea+>jsAdJMCxa+2uLcNE&E@*0^Ow6ae z7}9%tWjcR4d#9EV!UrT8A}=PGkPppanJ&2Ljpp1%hyn)jpmJL7zN=>+rp zdj#g{)yDj?a6q4zZ4LuQbgW{6AQDWULwWJ4LJBFK&Xw1jjnt^kK%1-I>LYBIz14^VpQ@X&-b&WOivWQhJF=z{hPC5t&aqZAw42_Ovl{m?Yv;{F?tH|I z#Few}4hJ2D1&Uom> z#ghd6SA>Bnzw44kca0+NLMJu6 zO98L+>&1IEc84xSW+Wa+5!1-5hB)&D(eLT^KTa0JCi1uZ4 zgki(K!2|9gfBC*_tl1>hD_(W@9?`TcDp=sOc2U7R#&r#Srq9#et|j#3`ip2J1yt}I zOR=)lU<(Uc89DaNx59nQxL>g<+kDsh5>r z4e3{KoG40atD7P-u7uNf%f(0r^_?(=l1H)*?T~}}=c`_Cs-}cMOv=iN1E{b=gs4+s zG}(|@A5iigo#0_=F<3Qw2-tok;o_W`d+~mTOqxB_Fn4YdUEWe3*n%}8Csvf;AaFD* z5!hF!2F8QcTtgfe%c!OpO_UvY#Z$X0t9@6#!yd*!hP-^S%6oisYdcr~+o&pJa=zpm ztZ`|Z<9mpmcFrMW8gEy@;o$Dck9HRok~Ij!C?NW<7>WU0yP^kc?P@L0?drPDtO1>4T+yU;gU}LtBPJ^5HNE3U z-8yQ=u%^6?;a(SDVhY44)RYGxjhwg@;~M-w-u>CuaW)*@*chE(;2Q!6hD&D6itWbS zwOntQX;PK$Wyp_r9D9~jROr8F_hXwR8&}^VlTgr9b|$6r*WKCcAjPO}3NF#;n!mj< z>rMe>ScP@>Wa)q@a}Mp2wJ|IMy@L&`V%qvU<^?yDyE5FETd69xCmqcddqv1#A*aVv z-U%Zh0`$2NL#3c`vo9heco?j7zJ@fKa>Eo+qV!9cg0@7*>hn?tY<2`(&Srk6tIo(0Nq z*awxrlfj|V#vNu+xX_g+0qM2@WUa6SeA+BeP)~kR zT$xXH(P{);$|9a`^rTQb0b)(Mn7X!BG+$T7<> z7n2_F-bv*f-IVG8$NIrc!rY`@M{+10Qkbn#X?~F5guc*|Pp{amw`20t`8-3u(Y;|V z$vezK|7r5{Nq6O*W&|>w*Ri9(B2BN=0E^V?W6f@A*6R8y5|bbAoS~;li6?A5`+_`~ zUPP-!$730d>+DGM!H&J?i;2gvDww`|)Ti)@4yu0F@JH0CnYGF>@GOt5(uZeh9+2pQqM63I2W$K_QFgx0bvz z`tt*Bpwh=uPN!b57HnkNqB5 z_m%wRKgzJndbW!{-D|(n-@TGd;krTX7SofMaaSEU$YaFG2M%OrAzF)#)T$3m2H}4R0u)fj+ z&eB{Im?P!#RY+N7lKq2`GM?;L1rU=N`@aNLO{yJr^nI1Hc3oJ4u9_F_%~1HVa;VY( z(kO42LU3zHkeWqub{A-mC(oEDG`0}kBQZN%rIr4kQ4(}NCB(;OB}lZbD(eVt*;|p% zO}zlDPMP+1S5E8uQxyVu3^ zISnj!JOOOw_(8W5SE{Fl+E8iGa;bX^An?Y4t%YSx=u4^NF53iF|rt2w$P z4>?MrJ7yuXBwCod7fooG?EPVn4W=pi#zOm?pesp5od z^h6f;L0hqfx^R%C4|PkV0v=P#n!TMk5^pi1f24=RD8v`GZU;{HR?s6qewGsU{GHXk z9;n9d&;g~(+Dgs?Gelr1FEh>^s3MrJt^#`#2jx>lN}{SR&0m|BCFZ%fB+AkAIP<2R zv0X#6G|jb2OWoc(b%{G|*%}5C2fC|iw469&jj@1jw7KG;xT-(vtVW@^6#1jY{%#k+ zp~l@AECPQ}9?nb=fuPjIM~HNf7A7O4p1Z~?LZc!{CZT+uqzAnS7(_4Jt<~_&5N@fT zkdD?uj2ebsYQPOHyvd?|iwekXi}H#4~y-f%w6iK2dW*~|NlXOBYgkMscH z;%7>85i5+6Wt+=^Bp4a?R{F=GRwa;{nLHw?SxikungPsiZ9lrHO<#jS@%#5pP z^2jW!{epZMwU(X`xj^XMgQm%$V-jGxZm_l;;LX};FPD@>#Z@BZn#@Lu-c}sKSBQkt2HCZ2oP8q2MEhE&1Q!ZQ=$NpUYYKz z_7CdLs>I<-bSvP9|+dHO*8P0uucT`bq9vbOXmfl7+~{B~u>nL)tGl@sK;d z-y_Z2IHt=tW<*#x@7&?|P)FqaITW#Vl%OWbnrUG2FU=`5OhC)WswG4vQKy<4iWVF4 z0ZET%U=F^Ttl`?tl`I;v*g*)iI$KjoN7N^&EYI0`E{SgUG18QLjCwgLVY+l6aWqON zvY~{#=ZI3kQkgmgLl6URv(8qLp09XRMJ=NZ91k;s0Aob+^=YJbw0kWDH44@?e`-SK zow@+PivkJ~Svx~82z~8?Ef677@K&JApn~XVSOTlQ4_e8sR#3Tgqq`Ib8!ZRDdW1}f zA`k$mDdRFmI&qeSy^3?5agZV_cqrxa=;)*88`U#6H3}~(fxr@v0CWe00Z)CE@ae^b z7_sd6jG5@G3>5)FE+^kxCGh5BOdI>_CELVhJw@uJ3#XKE7iZgk1Vpv8_KrqpHq9&f z&VUq#6U6A?*ZxWW!FOyn|2y&T@!H8y)-hp>TlI11ye>Ry$~wT_nxt+AP!IKx6UkjZ zgc)4>;Pf6eZlS~xhsUKzb%q<}Rqr!sF0N1W1E#=iK8q(;%X#Hb7@X;eMiyNQi>wa^U;VfQ zAf<<=oh*7+{W9Q22fOaGpw1i;kW2;i1i#iulqi-LbZsWLXQY<38RrIXl^fU=3TD`*kcCw<21R%RK`%^(}4VG?H$ ziqhbenV2mIuk}5f{5RQdSU`~?ocjZy405HdLqj;bt15z+?m^A^tKN0bL&X8+A67!I<$TJy?+QQo+&+r5!t z7&}0QV$_Yvc2FX7Uh#>#E%OgJj*a%&iczUJ#^&(oJ){;U-B@pKCi@!b)m>2REGoC0 z8iPoYU?Js(4Qh6mPjYYtb7TlJ};vzVj)=eJLGa6!_^EP`x;9H{Oz8XG-bv7FyN z6hrAFSO5ueufn=Y%k`yBjcuAGr_jB_ak6J68=cBOE8_hkr%Pv8`^^y$<>2SU!_X&+ zV05Jep>UE%Tl9JLcwLQ*ERSA6GVl%xZY=l48A2ICo_zVux^+k}T zJhwLMpba6-i(_=PogkYu0DI*xlztY^;rCX=FpEfZ9umLYWTh~cv@6C9&Vk($Z?6xE-4&uCz{v(|k+jZo+po5|P}jdO~?X&OAWzcHF6 zw42ul-UNftXaPCt`TNC4*$TiDq)+%W?I2H_Rq1ea#i%TY)JP6pxo%!fz z1cL}r$^igWc%<1*@F|To9*%j>EfTXK&ksY0zZ4x~sMPMs^&TUVT`Xsl&{! z`*nwC;HyhGWh{4}d5bi_ZK}mlWXwSzxrEc?<&;gs3&1Olp4(%esU9Kh4p|0(nQK0Ewp`0y9SER*%BovLa4L+>E<7mtNV+4yU>k~ z(ipyXgL*hdwymTO)ieL~t;vN%b7Fy}&zrXd?KF;blLQWz0lXR3x;xmUC9iDc4E^+0 z02SFI$30-c1zATH)<8Y&+f41sWx&k11tx-vMaELjFfVps@w$&GvTG3F+mWi?(JUE5 z*CdMQ@0!oY6d@JMuhgRx_iC||i^yI)x20WhC48=Cd>NnbhXP{#?o+bsc4M8bID<<5jtbUM2_lr<8B5_0oRapAfAu(1KT#;Bje|TiV z`T6HkJ^w;F_>UP?FogZd8O-j8e9l{wi0lx;VWTY+d(e!CH+$dkon(^NYXwe=(HAx1 zF>(iA#})%o1O2@ew;(ZB%oA?XCG@l#TFE`&?6YZG-(SN=w~H=o{#juSY{cm)i;NB0 z$?4t2H!K>caF5{s!la&$(EDVb{of4ZLV!~+?7!|&MGoFU>j=!FhEr&B0$O)$s7Af_`A91QNA@!CI+z_T5jx_m_ZQsh2GkW zz>xMBf55*>0uo78Z7CvKdMG;jMzxD@XQl*blX4`!8{*aP)-tTBv?Q8|Mtw5wg z+Y6w^Z}x)&9UoVdnGM$+9iBh*^W6uYy;BfV!7j(9oc$eUvf#qX(B)hzf!~1@Roxi( zVaTM*h5z=^K-0A-(oKRH#KI7QfvZi9ey0^Javi64Ueea69t11wLl}rqpOm}E@~_Dr zQ~cR3>{FyelFhWc9i6=MFGcCbvNLi}5Q4|s4tmWL`c?+<|4INgbs+dW&laEH@g+l| zP1gp(DQh$QN&SJ6s2fmV8IjymFp}FukVmj%YjIbCK5}0^X$wTLO&S%J6KR_V;*rBJ zZ(x-rmdMBW77R9B-Z$sxsl?LmUj~{<2OFojtK}tc9|1BxNjD3i54+CRoX6uEDv?fC z5OI&qz?f8_YMxRV4QSWYTJ>;Xwx!Rd4!fhcP^^*rszHcY?$TlaIl{= zo?&yW95jd(raoSifju>uJ?z1(YCc(8wKljM9+h3^3dGP|rY?t(>CAyVY5$mv#pv}~ zC~Uqp@ZO4<&@rlX&;ON)H8|g=gfeRCIG4+>2}!JS8_jd1~;j z6N!xvVe%&8!pUpPA@ZxL7cZF9L@zYPUYpjOms#pF0QPfe`mAUs8(${Rkll^v;ivWP z=>$}6-v7fhbDRG~5F1bSFW{qHlDs1R z)R0H~V}n{W57tZVwsCRNy*(A7nby7Rsf#LmBfrATplBYy@2yt#Vb?aV9w|83L41O& zNXu~o^`6NkS@&ixsBVjQrUZj? zqaX7)OA{%LY)Bouxf*Mf5%MqnRzg z=LhvZhzOGlHZ}>3QsD@W^7-LLDo%O1I;E&g?o9gsN0z6_rHE3v;oJ2eaAnGchRcFl zmfX5#JJP$1ZoXwT+g|ew)2P?uf*U7zV#CWxJ!dU;3S0`%!%oC_hV5gp-S#gOiYP6^ zCC8|sSmPl?K|blCPw1;y4UKxVsoT)p7Krr|Fccr}|E&7-9qmSY;!;JzZw&Jy?Rk4R zkJDs{&I_;ye`^OMTil(jIuI+wWVwikDRo27MbF^~&jDS5vR|6bcol zb1M2DT2G}=L7YJ=)EuE{9%-)k+2K&C=<7(Pi8)fdYv|g_y)fc!ZvHT(B|0Q|?`ba6 z0g$Np=Ti}E*7P@hB$g~!co%<*IhFOvm<)0*@ZGkh1Bc4-0H!R|I9RLD*#KUfd^!Qh z0${@)fi_7}a?}N@BSPyb66#ZgH&54y&#K>xgGk&~Hce>K$7}f6`MSi*b_rUJ2iPaS z_XdtQ?pCUJtvU_AA8EMcBzk1l-YqO?+Y#bi=nF{XG@$B+g38EjJ%yS{F(yx~8lETN|v?3TJk{!li4zqlWw*=I7CSJHngp<;Sg`9c$ z=xo2EGUSb1cq>^Za>xsS)!9%w5t21Xf(p4|G7ZW~(+3$}y!oWypf+*~7FOh$+p%X$mVq#wxuXef0#cW>?Fa zSv`A5tB7(#r{B=MwdZJoUwx@~*nuphT<^6tdzT$|Xjrg@TMj(1wO6Fba*{?q38=n* z*CAqcJXGN*yQ^%(lx8?G;NVNNLmg=RIEVj|(Q?s>W|ks~sSfSzcHV3tUN9sp9`o3I zG-c!u{jyZSul)f#P%{ze8ZnZC(8>Ep2&3!PzPw9>o~)~i1MO*b-j+68vd?qU(tQU| z$?}j3mP}1ss4lMCSIC5Gk_DxvZHW%KidZO4OV19MvqNF=PvBe!&4yp$)Pq>RImE9j z=YoQI9)y>-;Fyj(FI*+_IaauSA%~Z5tOS3sw>_(hUMdPHK-7-*L!-+*=W&tqnn(J1 zROmAA+i{PTUE3qsI2BLz`~CXX#*onVr^&8G@B+2! zVq{-!ivvZd?crc+tS0}*TG+Nl3d?mKEX=x7`9GKk+M*u163|}ANAkb)B*=k;ta_1E zMuvW=p4CtI*Eg`M7oe4YL_i zgJNKNo>O^mXjz(^zwcdouNTNIBH$l?Kg#A1sgL{_qwm%e@o$uJ=qiSAx$D^E!aXoi zP}90o;=|nt4UlD#Y>aoU6e`r!aQYz!hs~^C57VH`$T;4&u=+S-9zdtZO{#9l(o?hh zVz8n&a@m@(aK z4&tR{vD2zw-ZQJMXr%+3KvR6a&<_!$TAH;b&_n{kb_Ha-mPjpuO8x;$A2(v>ezk~j zrdA8PBG=b*c%xy$HHV1$ueG}{X~N~Sw+~Mz0@4zZ1XZ(`-^H_{WNM|~P>~m^aNzN3 znk-oGYb3s}`#&r^+$AcX|IC?&l9TX(Ar}6+92@GRmjF#LBGMJZU|XaGH0>zX!;n+M zisSl}VFb3Fq$daMsVJ2<{2TBA0UtBbD8QiFO4F&KD4EFmN8)8lB<8a-;Wx=gQ+S@+ zU1^G@e=sJL3@a3ZU-s_H8LEY#Af+xxMYb}Ax=}NfM1O8P7bZ^FxP)nh$9k8gx~1iC z1(JRB#%BnT?W_HBXV>0whp2JXRu`K|G+!=oPn_W~6tXf1t^RmxYf*TlRd9g9;5jN~ z5@duEXKmfntIZ6UlT{6g;VRiWRzUXL?m9e~)<(ejx%>vOU-&PWzD!1rZ17!{}L&>tGGn2MmbIJCX<3zKnjKYUY~{|-C+yO)rc0Uw=s zj}--kHXvVX)i=0#A&($l(I4?n82XW(3!7zBS>ax{c7Dz@teY)>_SpUPj? z-6E&bg2h#Fx?ZZOA#X}YGz?B%Lv*;zRnI0f1m#79BX)`5 z-M~`i&^MKdA}eMUHeDc$J{gpZAi+E31~7OH);v|5Z*Xd1E}sH!d=3`3C){1i7pxqT zk4ZeGG_?K^2flQGXME;+TxRrIie}Q)sJ(fhDe6D&sz0MGwKKwqrOI7*W}HY=FMD;+ zvRHLg9a36>eGU-eHo%4iGL%l|XEHgD`DQZv7dkfwc)b+xzI@$d!;a{%z!VlgG{I0Z zgQa?~&Jk?uJt>$>d9LaF0JhQu`L7%CZ#YfA4(>L9-v@|(AHDz+Bv3k`1nylF@(^Id z!B@N!L`gjZ{n-ZXqsDf}jH9rLg2?j>m`9E=7yhPF zUEtJs2BJ(iTp;Bh#^&Oa%f!KJS;K^j=RyR*7!3wY7WT)6?QxXVlUTYN+qlE*J5IA4E9pP5B`y?_ zGrvP=%AddRo{a&jsSTLkeWL(hYJvex32%yr4OpDZ{6@C@!9V6T$U|*pkR54;cEBvc zHHW(49Cx4ijjO*L_tQ~xsSybyg$Q>_a;4W6DfKs6V=)%Eq#pz^KN=R9D-6|x&Ih9m zP2;p?e+k6jL>DN5tE=_?%PwdRtCZ4C`I4`gM#MfbfWv$@LT*OzCRLs7yfhxV2ofCu zgeFV*D90U%;`H{`0gTgXMFur8sA3HrBzeyAdQtz?_VT0J^4j(qjxjz8&t<=xRuHh8 za+;zTUQKk72!qt|D%$`qJmjSnNgUtzC&G%5mk+bRyb$MB{Z@x+IfZrnuLgF`fDSZ@ z%i~@4)1$da4Aka2X7TKlcKM@DO%qFBeia+XIIDWU3&HWJ? z%nPPufcLC+>(?aW^bWAjCOhL7)=iFZ4=wpn(J{h5n$klDL26FS)9>-S^9{Js^IAfw zv*OceMGs%)cW*i3t4gjgbJmn`6K2fqj|vT0KD#Bv-UAHMoBQJ$cw<{o*sCFaRGmQb zFy^QD-kt)ZWz)*#QU*?6(PAUQ*x4`c1w~~%B}=-15^;r?hW4#?tC%=AQK=RJ%|&Nr zqU5^i0TD)Zd+zd-DC`F6UYmZ5(pi62$ex4WxAo;xI=jyZC!V>z9bY`@KnoKQOq~9R zL}DazECRh2pR$rqE3@pYBzx*@-4TrDflvo?h#@iF}h9l+yR`H}(Lbd2=)mKM5n1NE-dFo4GKDtwcrcf!LBfGb&tbBqzE z?4XcjSLk=ir5G3#cy|C_vVq>`)d8O{8$T|Is|23{(?)-#Cm^kmQ1{Tbo^~zkQvxn| znoCKx%RTG6Po<7L7xD$PN*?7Rk#HRCF*&W>&?Ds`LIr#WJlC$3vT;zHRm?&dD)s2d z0pj)&cH$Gr{7?x)iCSBT-+JCk{J)$06Gedwls037Xp!BmGK^r4=9mhGD3q9$b#k88 zpa9cID((B~!(zn6-(1l2A1BU46ZGCded~bwoOS!(AW4$yTNL69X*WZaHxGAyyAqO*FN85^swe#@_|)UcEVIavu3&ern}=;60OF<&0L_J81F zyj?0-N@%G&4jp=}za5n^5!el1Ph|8K2|@<-HxDn6F}z$zv%N9Om9AfSt4#yL6S^M; zm&*WKfCznwk(pUK&P5GFqQR1ZtY4&^X8Wp}dN)i5G6~*xZs>a9z=4H{&c@~QV@3lX z6SvE}2XgGxw!KFLNL0g1_vM0xbr<_}4U7dKEQAGFOaM#EJJ8>KyvyE256#PdSXPlc zwZwyqxos-~GL@4OYs`C0 z<188%!u~A)h-r{>aynO`?T&-XAWIVMaH4R390vL)(JwWzw~I;$nYJH0I%^5FDlJ2G zE`YhDPlgN1lNBTvzimw1@pC(;<7kC%R!$EP=s0(}fK1N^9exBxxj;BTUIIlO{<_lX zzV=2PX&D8FXRNDF6Fmr|qFGj+aGe+xDfh71rN6VzU7!ij?~^8Q%-4v{BS!vJsc0QB z>tHAM(`zSy%!l@N4ClX0Qb7?lq7NAJ(NgUJREk=QXVh`4c7Map8w#vCVJ_slt?PC7 ztmk>*m(uAkPwz(bf9QSQr{f<Vd4xuD?&R9o9oSN!2;)=HasCMQ$@e47K-A;n{ z@0&IUc|)dxuKW4L&DOchArZFWgouUuo1ZLX&l`#PGh5cpWS|nnZ8)?p(zp--^C!U6 zu6_Px87H;NATC)1aD|^yxbG2|5)JRorgo|Nq}Q*qPnS?j@{3Y9q&C!}eR~c?U!0JZ z`ciornE=JSp31&aCLxgPWGRKn(eOTbIoDZG8sz|+U49zS^b*oSs2;_cK9mtMh*g4x z8gdw)s4H(`hy3AgXjP#Qt*W~}7iAZ(3JOT5P&C?9YBd%4POkWVA3!J>6*&Zi{FeuC z%1I1h|EJ8{TK|ibt8o}+=k=H6z@>yRqoeeu4_(jE7P*aUKZ1-f}`VA{C;kZId-;Xxxtgip#to9%O}t-vW^%iL z|JO7s3cUWdHg)C-%ub8pv8CR{&*lVZgD0RzP_{lXf_I&6;z?@1VUA!S2b7S*l$%)^KYL{Y$^H6+Q|BOf%#zXy?5*#Dx)lu+q;U zC8p%SQKgltKYai&kQ@m5d&{b`59jrtruQ9ICyzuHJzdNe@|=rqB8vvxH)b z9rdmo0UutgurjYd!3_V8hanPi2YpPdcva|~_6M+~pKM=ZmSkJjz4x14XrJ!_ge8rc z#kNQyS|AnXlYAvC;~H#tCIx~J)ptxp6Pm5E-kdkpf{H)*R|Ms^gyg7eXvmf&yWpQ0 zPQut-!C;h9v?+j^?$Bdvk)=8=HHv@dSJHV~ZK;*+wh}$Y;tcBx6^=ppSYmb!+U{LA z>0_Ll85DA9h~;vZK{gQ(sLsobTt`Y-&)FW%sktQl3mdrQIQa^rWU%9pJyiigXj!D! zmup5K75XMKsH{jn; z7&-(WS&osz1(%qDclYycY(0E34=7XZk#le8@EA- zp1YT6Rr0%6=su3j2x0zol@QqFrTNT1S-{QPA{y0-nuRTu(M(jhCH1ci7y?DhYC~)N zv5KF$naO-K=y-Uq0!e}wOHxdMHUPTA?vdCr+aGeCn5Gs8d7HC0L*Kr$i?k+UD04>w zn)%3g()It^^{mHk9=QU;;qRG?P86|?Maj(kp_+CCaD8s4WMbB2%v*VGl4pM-uowF{ zy7D`Y&7S~CUE#JNxogjU2V#K*VUOEVO0KP6OPpn}R3{rE00PBlwJ*7HfvoMnaK$#( zBBv`WW?)wc3fJ{)D-YVnbLOcFfujuoQ&pX%RQJ28=Fh07LY`4G*PunGRkMkt6K#-u zSgbMvmyMc^jTs zA`|$!yw$7o>0hr7#VpQ*LI6R(l$TX!9&rsX{y+QCtzN6C_aRsN zn3P3&>A=q|1}f!Z9<`3u{n|&U{!<#Kzp;Mv_8M!Ps!*$nqq#4EJN#6{6D*@7*c#Xi z=p(~)9cYKQ>jrGf{sgBXlK9>oV&<^&U73t}VWBW|E<)LOiE?5Xl8b<2{r1O&TXmDfk@+5F`zab5zA%p)8=Bflq6D|@7$wc;|8{+;?(c+-R&{=-}8_iU&oT#G1UK+FLCr9xHO7m z7I-YnB-bca7C%Nj_cxt=^J1 zyI84ENT|A%_#r|_DmrE-i%b#{hZgYMVn$u4F3x-OY*RT5q-IJr33}4~ybCpQcBN#5 zSV5tR`5hah5z4OJc#Cp|r$8GtB_cJ9wO{w*96yT;7~`lk#AF$7E$Zolp=zXW%wGe* zo%UFBY1kVpaC7r&+G_9jnT4mAy{>L7bE?D$L4_0L4bRocvJu3LfCxdU+S*FscCIf8*qAU5sUP>53; zCQytL)HRY++PkTrl%Y52hh6amdQArX7tE*-+^_k%0yh7y-neeXU@6xK`PzkTI8bX| zAz(!=^Fk7dIdc%<=X&=gSB#`lnOsS;B0#^p(#xA#mxD6~KXK}wuz`?Zbm6;2wlnQs zx)On)w10m9zrv=Me(9&?frRf}sT$MP55%JNEK+n*o(qGWg-p)9adb9T#(SgW$Rq>}pd z=zh*P+Pn0(4+`wM(#AOlTgYW}QoHwl?0@ifOf_^TnV6nG*zvN^Hizurm}{kk6L1K3 zYFTOe`rdx!u_<`)O#Je%I3wN+FyRDRP)xMx)#FeQk0Y+)d!f?CjB^aGMmus)3jPy7 zR`lvOP-(UJwea-%z?$~5eDKh;s#Dsz8npV1K0N`C zXV^QKqzO@6RS_+=xL#()$~DF>Rs}5{{+fp{Gt}Csq*=ege(NzWE6Q{$>Yafwnc!$A zZNEemFeac_v}DMyvs^yi$!Ln(*(WUBx;MvA%A?P|r#NbFcN9 z+LM98_J5**h5Be?@rkKA#{G=A4RQ2e{FUOer$##L^emJ0dq;!7zgHz$Mh_zygA~X4 z-p-_D;8(NKA6HT;7(;6_V5%{DwL7Q)g_`P7(i+XEJl~ zC|XD=qh3pP&Ux>vi&7HguA|7|4?6O zX`(0CJRGbp2}0|}G`;clk!bR|(YanUqyF^&G%aagoihkW7KD1$T*K47Elu4ewv{$Q z$gy+Cm+nizTma(kWtX&Dp1DH4UCc(VlHb?7_Y3L!nG|`@b=#D&Tq2__$nu_;h*Xum zkjWmuCUfaS@Mq!{j3YFmIL01`3+$FoCMT2Lgy|PS1px`47(oI9yjzyOfp|=0IdUpn}$u z0o>P~hFemntfOjAeLok*b7ak4qtMW#$(U*@2&>nVd{u=ekMILOytHa+p^;QFN{=*5 zz7s%WZ^tTZA##bQ&N_A#459d4o2Pi3Z7pW4HWEVTbr5iWnkf1I5Z}AQ9?=D zJnCy+5r?){8jNid55mt^cCevQ=&~K4nAK`HISYr6`qw2WJTul*lM0cB#K*=0`kaL5 z6l9oi850xayp}aEA|)_AsQTmOC&r2&_)pVJ5WVihvBlr&Rcy}0uIHo5Ld=v%eP>t{ zI++Ar0!9EqPmnNf6&SVGe!zl=JHMlAt^1OJeZ!%l*`?u|PNMHq zlU_iQfEfp^L@ZL+PENThzo5pi$-14s=I$sVk*m5?^M?pxORjYyTS@rjVF*`2l#2!3 ze`pZL^L)5Evfy66IY1U5D$;CLSW+(@PhiCng@G4{8bZ78IryFTC&>*bacy0#4Ko&- z-G+k`D_!KHL8tSc20_3qNlI!i;=5}HYC6=&F_}@UjLV$LDu4vs^=~m zikV&1y%Qg4w;}>*s#5EPH$zLIChy8`-v2bR6$hRh;}vNw`ELtPYFcgC%2pv8>T`HY z?gu%O`&GhgQ~SO(T4UgD|KF3SqPTPlbfT^ChQ72cJ#2zE5O3+Af<-h1sZU+5&jDix zqv*%2?fythpD2Bx?qOYSilKM5Cyo0&Fzk`{`OEYbDcJyH{dUPxhT++GM4w%pl^%&T z4ifN>q6S5Q^S_H(?hKM;OuUd=;Q-&rI{mNz(30@=yM81rEJh3+w-lJ9o>GT?DU5H1 z->FAsc%}Rp@wylXp)8ue)ylQ|_MvZ4H3k=qVDHMW7p$-~QIPS7K*mzK>A+=5LlQ3_f1&WPo$(Aatgz>GId}ji!w~k>ti^RIHrQ z2ug#In$U}dm;(fJLT|t3XlPWR}+SE}T z>RigoIi|dIkDo_hrp^48DrySUS7uX4OLZ=#1b8OyLm#P-$xtnf4I>42w^#AQnTJqy zVgo&J?C-{4;W|C zJ})O1i+$FdfpPv~g#=59h%%)gHQUJST4>}4*7^!ayV!>e(4#$>#^@#7SAk6DkhH!& zr21voWECX<=0&*OLMpi3NU~fb(x%iSE7_m#Ssj+;`884#4%GO5)%(M>@E8cXOnyEf zm38di6`3Mmy`a~E4M!DD2SyFsv+C8ULs-_v`O>F=g}J3Wm36{vy-Z!#Zy)$#b5nBT zG`2HKlXYoE((F_jKx(5g*0zYp`$ak+3DW9B zo_6=2?}wN;n)eS>(_G5Nm@s19t}yuw^Ys;8Uz{CQ{~D+KqVf`hN@aW$Gj$_RABL!8 zU=66tk;LG&XM9p)y%?!r<>=+iEE!EXHEO(TL_UqI{>DX~HNV4#|HObkaDx(+of)+C zPl&Q$iW@_1@fg7B=9{_8TmjvzVCvN`BL9WHJA*gX22n&v-l-2+KfY5S3r+FgJ)xv~C?gMH9t$-3vI!>d4w5R%T>z~^_Uc-bgvMt zgXqyG+4FGIobq(n)q$G8VDK3AoVMYq|luNNlJKuo*5eC(*NL4y{A%> z!&8^AaU|{R{@#m1sQ?e)-E<=;9quhhm#~U|qom?fiHaPR+`k=PSPlK`Eddm>dbA)< z7Se*sNe2EVuGbc9dkU>2 zmI=946V`amXAk|aJGg(2gsq&xk%tkZZS_@I7!%?%~W5u;z0j=_+)P6A2>*Y z2gRQvs9gyYv}-M^NgQ_nImMF{rn95SM5XI2*&gM!b@zxH(MM_Rk&ZuqTgu6+*AP3~ zneobiavec^^6AGL?010m2~=i>%%9k$V@Zw6Ni`|I zpzh^TabSt6F)$@Fq*1-78__npzTYR5(drOppd0snsq|OWDK0yp-kt#;2J&LWTOA3Q zdaMgNG-DXEjy~GuH?SROPUBQ^v{$v<)m6f{4PX=aqyR1chkA)Y@@0G3#`uB{LggyL zwcO{CpdZ{L(d;bl-&*fgqu+a}nPLwi2^?W%w&gW}qtPn+t0sPo1=DT3d`0L>i2jDo zmPd7zO%J+30J~R~vI1rO}1nq^0t9Hi`DLShAfpW4BXq2NyB)a^M zTBJOvhnEam>8;WYiZ!7z!q+2N<3Kw2w$rm7r;FK-5bx0OsFJ83#`v<(u2uT}ZwkBd&(_WnQYfUzJp6pH0|JcU1yXMV_$5}+Kt6Ll= zXiZGkdR?co_jOQd8t)&k+z(SD`8pYlZ)s`8gH4BeAmE=^lZ-_(a|TTFrlEgy1{dZo*@ub}ZiL7t^ zqoFuF0VKd?fOk6OvrDk8CdImE=Ok7T`1Y*@o}Wme8KjbBRmP$~!c=b&t%RZL*qRoR z^c6AE6MAU!A?Tm8&-PMiMcL5hviP0+ZE6UP9Ru)|%d!x6Ex-w`aL!B3!%;tNS+4bC zScW4Af-G2e8w-y_2cnnlhAGz*c{BhF>W}IaQ+SckSf;8TpNXeZG_I= z6PR{Qs=(2S57&y`&^ubp@LWiw>0sQg$0CCO$rVZ1LYJSnkmNwzW+}S>u|EH({un@_ z5(b>nd`s|>>md!%RyHqVwMsB@0HFm-7c2DQdGtEl6u}*;)#br}9U$fEA|$D#p~bv6 zf>K3-!4P{|O*;x{mfHehZvarh*RHnP*&=IR|4*u0mQ0BGakd4PJ$LHCXRya3@r>AM z!e8d3d1?FaWzFbt6lp+PhsnHgea72DXJbUFo$B|rNb;UY0sMgF!7_AoeHRFN9`k%>P^-oo+P=ea z_a03|%DIL<=0`@t$+l}Z{Qzuk+<~)jAd3o{+W-_=qZOR7tw0Vl)MQK}h{lU<=GB{v zhU!NsIB6wy(5iEo>UAGmr+vF*_WUT}ukp|Bf~$9UuSbLGYl2(VW2_ujj(yDOhI~+n z9Ak8i37|E-gl)l48a5sK&VX!6YO1RCL!7~cw3$zV5h*Ml*sZ4HP&rJGtRwpGfb{{o~x0{tR<1pY4p6 z#_R-0#&NlYH&R2^on6K}9z><*@;>Kih_05h&0xb-8cuWes&Wf`S5Q$2_rvD>W3Ogu zrU47${VtOeWPJ3yGTMoxF@cO!uE8SXFzLNvrOVk(liFB++ZhUo827X&{8UZY7lOkM)q0o6Po= zf;zrWc-(?rXV4c9Pb(4Np(6#nsFYaE;YP{ZkdJ5Hl@SPAA6^{ z7}t?ai)uxyOn@nE^tjJ_Qa0E6V&rUs0|$v#$t%3wcQg07`DE;!y7A>NyeY(UyZi&U z3De+oPBYX>Jx%ydI(xVxi3tnlMMGvoge<0afU#pr+SxPnV~-_UC_*{>S&v*d99t|R zePl*S8{I*fn_J>g%lgnydc?$1e!{^gk1J7l&=YS+hAl_aH~CbCu$D%5Otp>UNBwcN zTKnXe1&`qRoD-n_g$d5jEh5tDb5&2V+>(qT5!2jN2$@d{e+ihNs7L-hV6}#3o+iMg z!Hsu8Y7nzp@%vq9P*gmjN+l;w1%kDvjFROvg9hWrrO|a&O-(Z5mK5J8xt~Jc5U0QI zl%K5G<5U#WXmigUUJ=ZQBN8nOt$j+6PhFL&W?FEad}}38Ou9i_P&0ZIV9T#@27~0~ ztD1{D)=T7X1m+##(t^WUjKd(=`!ODjgfTio@q7z}O`E~?-~(7|)bbI&W{&vuv;X%0 z!VYz4_VP&_mQve(5<{n9xt`oVpkrt5g&?MOYk4Vj5*_9KEpyYFGSk@9^2`Z}zd=sc znWEF1f=|zk4#wFzX!1=&@Fdl?yFhR1ru6+tJ6!c-0b&RXlxzF7 z+vsAJy{0_dIg6a23=2noV@|0GzJX05lVhFP+qZkqPBsuhvfl%!44J7*JfFh&P)xBl zEQB#+Gs8>UmF(({^?NXD^Iq%iTk?nxc}tKvHJJvI_nbU_vI`Nw6@VJbFkRj(qYm^u ztK`XsUsL6+fcnnkf1E^MNWc<2~FweCCN zcP*SFiKeu$&b`@S39E-S)lHsP4XW-0?$7K_9!2oR2%MRcc7fMu_E>%^@}S6(;o}0G zUFx0m?y5S;*#OE$C$CY!XiwBE3mB{#1>iK0zTa7`x1v{yf@g%dYj{5F#mwk_X$rQ-GA6BGSeS4i!P%~V~YFR1?_T= zZO(zrNfyAz-u=whsof^Tw^k%Q4rBfhN$tb{Ab`^LsD?$s8q5$y-!!QN>aAv;kDjuT z4ZunTmWz4cNio4Vi{_Nu1OEE>v@Y$>)PXHu>N(!@1Q}R8wT?0uYJcDgN*sfpWsWp* z6q770k^$->zkfP=KCq{Q{m3Xj*C*)nKdDs9GUhIzdB>56IZUC?aWUJXVhEeBCRigA z(D$6Iw{B_-qG$icDn$F)K)v<2E~92GJQlHR=?8TIAyPHtL=Io>f9BA~BnNUh4zEm0 zWAHJ;{>y3^x|o;TIW$2%sEoIJGTz))f?3j=xw&pDu5|^qVVUl#k2LSU-3?^0iOvL6 zi(6-d`n7!~sDz5pRpK3I59gI-km(8Cw}Ze@TWx_7$a~iIqF8HqaVSr8Dy)OiwM2#G z*A#`!Ze#0kFH*?P7-GO$Qx-6&{*i?C?GE%NRpj^oZ{;9mOtd1e`NQnUu?3j#I8qfE zp9O)|Y3jxM$8VJm0$ECA^j+pNg^|>R5<6DXI=DAjWU+^LaVt5n7(d*-I1%^x(Myc} z8cqwJfv~ZOiKsDTRBF+TZ$9O^8bH3O;MUm(BWRbjZl^IutMT7cn?0WWNNlrNd%A7} z-n-YM&$>Xyo&NsW- zz3h#%PxRwkZgVJJ1NRfqSl}6`6xA1+@s?U;4C3nV6{Dw>NV{ns22n{Z;-uwglVx-Z ztzNw3U2bjyg?LeV$gL(qDrn;3@+MEJeCcXJ*@lrckMu?aZV*No0COtj4+zjrooE{I z7kut$nYKRWHYBb-RX#)#gGyAz^rn?$+vERVSoq{-=y77HMYB4$F4V+A{(DdI9_trJ z%Jr)tyl_=Ud7?~G^B7CS)kF{9msRqf(IFbPELaGbiL>gBpev`& zc6HgLq-ZjJEM;;7UAc;OO_Bo4N_M+(*bX;&SFIFViPnF$0Jk_^<5T52+tv7J%s5zb zk?)FRgCjPH(;pd0P=lTvlV2^*;dA-d3BsT57+dB62Wu5?_4uj*>~_nbTMkLr^_LIC ztPn@+x$DKdmvw1grFZV2O|=Y=u`Ts?dU-QG8io!}GvI9}7|~(%@UL=j)8%!)K1FSy zBl+f93Jc%_wtd!j8{ z-zW;{*Rb@Jw(U06JtYDO-JYGnCl4kMvMdI&5hg$`c&$$G3J)*PpqjZaN8cC{owP<= zgHiMx^p2H=c8v#Cczv74O6tCSLR#!@v)p?k!u^5!ke#?1yM4#t22|l*pPkwm5*TQf zAFC<7a?D)wLC3{yyQrV`Rw6LO_6B)T;S~srhC$hIaAxW}hQANdmN~;|VT}uVznr;& z@IfanD0MZlTIE+`#jiqT(xX=(JM3y;&RbjRT?v2e6RbfDiD{dZtdt3SqnbC5n58CL zoP-*~R`mHxfuc9#W!^bj1PET0ci@xbKI+ewzbWn7chkk`a?5y)M4ZN{w@pD#^|9VO z->4tGiDPiM5Mj-Wq*jYkGn?uVh_L9TeP7ZG{ z8#Jsizi076muPb_f0lUEFA?Z{>Su94=#ItwPXz+gUotm9_ za5XaxyKL^ai_Gf@lLQ4&zk!XIQlz6}Zo1%xXMpLW{JTf0%{lwhm` zj{DksOq>AR{=vE>j-5$P6v2S4z~Yedt??2f?SCzg8-NWoG4cu~TIj`f` z!;ZwbY7==WZn`)FW+P;%{fJ9Z@oXm^{uud4ld$_df z{;T_hPGsU?VATX^I0Q67O`C zhsl{Oc<$v3r+9E#p4ue(D@=cTZz0*b7HU#Uic^gE?Nuss?Z_=|5MTK(+4%(*!lq zC+_v&tI9R+Wcp&b*jFgSbEB<{@Z8b zuf{!USvO_kAKc7!*fsv@8Ks|JKHy*)xu`Z(r)jocHwgkY0*;qnAgZ?8Kx`+qQeZ|b z$ljVLn{Zwm0N%Tugi0jFgST!FI}WWX0i416M}(5^Ad8TK3n?0~O%-dkz7rJk(BpSP zi8Fl3N4oHxYfo%wZrcmYWlP0l@rtV}J)V&O9SdfG!7ImcA>dLjtkS!jI}K5QL8$>keSRL{JI!@GW<5 zaBh+`r&*Ba$M;_fVe%I`iCFI-CuCTsL_CH;8=oW^U%FGGO#3Iox}8MZ!Ya6>(Rsv) zZ$liD=}~#(0fDBzy2*7vF$klj)j=q?dZUGC`l+rT>bog1P0|*nX9)$4a&2FSN`F-_nvNjEw9 z!@U%B%xDLquhJ|PqQ<~l`D{Bn62Zt}ZDw548oqlfgrDp=$kGZOPS$KcYRRu)-f$;A zN$^oTf>E^Yu;AyryrK%#ojB7F3803Hv#lWr@p8gzR2wS${#;ySL`y%vrI>h^{lF;*ZIb!fq>5lgZPNv=1?#Fz z7HXt=osATpiPy^OIp_=@pI_$&h0nr*lXL7Xd(lm-9f}`pLMR?eBe1nlZHoEhu9*ef z1uzi*R<8ZY*Q^&&0~a15tkjrnXra(_p{lFCy&vKMrkqNB9h9~TI}^#OHVCP|=(;J+ zmcdQhtLh0N)HH(_#uxh;Ok>sb!xbV~fEdJFGca5MBPy>H0gD7M?G3&9gW+v#?bQoo zlr&u&$AiCqmzwl0oJtKo&TPG7SZwf3OVqbUT7mPvcgaf_&8FT$UI_+XM($2~p~qvD zuwHj|hTQE9{yi%~DLOXDyxQ1|n{rW~w_ezyy#FK~0}6gSG5pFj*M)%`G=>`fDBO-) zU)5m(oD1vy1Mtt^hd||{i?QA<$CBqOeSswIVsHlBeJb}d6Kgy@ihP0_T>ejP7vpSh z*mrGs2MV`2;g5CPP8_5nmv95^W*E+a1kAG-mCHdgnVEMV(`Dlypgj<|E70 z%kt|}v9fq8fC0U^gzoZeeq?K&L&xOFKxM%uNR9Q~AhM*5>&NaW&cva*YF1jdjeI06%r#r4vk@Tq#Sv&0Yp^8z`hB@|2&&2gA*xXES6LP3oi^d!B zsc4wA`d{in=h7%#mCFB~#GcaPAX({$MDn7jS$_i5G|XwvI>}lg2Zo7oV>;X}Wn?V& zS8P;M3*HaPnNf#1t;?hM)dwTom9FBC@jtMn)b%x^iS4VXJN?>ZBWF zb?UTU%s%fh+(69xxt#;Vk>-p+nm^@6!3cEDlUQ>jK2!UT0d`p+8YU` zg-Fl%R==cfZ5H{DZ6ko|D34+pT=8i+FaNlCZ2ShlS9~eDND3liLEq0jh?#1@65YnB z@MdzP?#>QUWB)b#s+$NnOf)1 zgK7!_3ywTV%XDuSiI`qzbk|x=1H#T6F7f8W2iRI54&zI_6t$=gzp?;3jwv;2XwyWe*J_r zyW}O~Y$eLjlYD>Xw?v8z71(B> z^-BRPx?oJF2fVVmVVV!7iS?4YTVF#sphW6E_t%|yl`&dmQ8H{0n$^}cq(h`DMmO_S zKg%EPDGsl0sZ?FhXo+x$)wuYh5}PV<7$hU_0?1gJQW`hena|g3%7qXHG=}@G@m6-e ztfS}`b54E4ys+4C^c46H$xDMFng~8BRi!a;ni)m7^~`hx650BWRS7_#Ey8BzxK^;#Tb*s@xi~ z)^YHsH~fbpvlsnEcsxv|CEpb1wRflIiNZCTHGJzVniHr81W^LCGXliaKx%o*T!3nE zC@akh6X_Cnh5s_Daa+WShYC$BIYu&qFLVUeI+*Fq3YB;Pb>U@;prl!x&PFlwzNlA| z)@S-3ba9_$f_+UOvwf_wFZ4x3`DE%U&kyC~8D;>E)B!YH#6=o=Q>>UB`9}VBRi@fPIOyz2fOguT$^;%STiLp9Q0bKdg3Zo4u|-jIDpAV z)I*aL?5*XHJl-?zT2F0#+T=-5F9s)#jShmDsM1|^pGBdi+D_#`ank-?8-mWl`zHGB zO2wqc6YcFNM1U_-IOp<^jZA>IR={}B6r1YWgnIP@Jw%5TOwfQdsqcv?b68Cr`5r2F zH{!lE*#wdEbZQ8JH5#gAZkdGFm4nGz1U+wA( zC%xO{8ZU-M5t*dL8V8p>7Nmn`9z5rWq?_YKRfA+&&#H%vgj}9mA2=(=)5CEi@bRbI z_8gNuoouM!Lx+?uK#-Lt57C(^!dZ~*n%rg%n|=_cjn2*Q8IY$&c%Y@)UY!X13t3I` z8s}|f2R`HFXw1iqs4q-j}AAL8Xyy^uCBPdVkyOz^7Z7mW_e6; z=wPqqfaO4oS?B4*;qksi^?I2Cuu&p(Ap+ zge9pRoh~HVHSuCa!7Z2**HKO&Yo^g?mKGkZ6=?P4C9#k2hOXp7Y7i=qYkBC#eqf5$ zr(YK4?|4=7c8$*9Cjk*BbW{pIU3Yy~-9{RD9X|LjCn5CM={)L$D<;(~8>Uhiutu8f zRJ^x9-Q%2dA>ZunBma>Rn!U|-hIzxgvLhxNwjd1ecpkUNkTTO2X)vOAcI?C1rH4~O z53|B<5y`oerl#rZ`*7P*F2yjCdA6%jh*D)g1hE$mg}k@kD;J6X{tN-zI+{9YJbAn> zAN{EGoeN#Q^4Zia3t96wX)FX(s17U3G99m8BgBBPMfL~@7P$_x2>jJdOQvGSy$imt z%_cCIw!P($dY6su23^O%0#4EF(}oL0fVoC`wawuBbwez6jNM9e51pp^ge_F6D={IjHr*g!*ZXcFX$DpKdowm*?J82 zB&Vb(KrZchiB_gNZ#+$*BjpMjF_nU?&?+F^iZ^yHZ3-=Vj?f9N0$@?(?9VCe1=;B3 zoCQ#?&|G$t&))$;XX=9}PV(^9`Ry(@DP=}_|DaPVF)!sgtU3SuG)N^B8iF{$dhR_c zF7{7HEb7LjK(#mW>fi!%ibQ7SJ?laXNzj1yV%6@U591?y0?LcFS<*!^PT`slF47dO{2ITny@HWc%^~q&uG@X1>}+qlM8W*9H~IkNXC8+s z(+8%ZXtMPgvn(NusxuC1DFrp=H-FLk;uL^{_gaHz7xQ^k^<)d~qyT-fXK{1mm`aQJ zwu5yH{fJ+ZwZd9`QGM#FwzLrx65p%NG5Y#`Nr=bTdq#O>Z}$|!i+f`>z%3adMdiWj z5!f3gfM}NgGKZ*gWVk?AeLv@(x}2P=u@D?oTw!3=12;ub93S!!@)_`?IG1VAWcUxG z_`J28wpdCI4bccAIQ4%qS37cXwWZ&r$%jT|X;Fob;}YlXw|W|(<{YE~Gy9=v>A>X< zvw|!dtC48cJ!#IcSk4e8Qx}`ce>->}yW@S9Den@1qF9Fh)Z!|it>U4IWttB%3VwOO zWGGlJAKIeJ0FVb7<5YRimRQSn4Bm2*p3$A%x$pKynpsnqKW+e}y17YCw}oP)G8Y1d zMhmyBla`JQ;ZRK^@+PP>@3}E=B|-fm zY(X8zSyvVox`0=qh~UPE(H4saqE=m`p;`@!0$#QXG!{OmjW;}uF4y~t#x1EhbYV&> z3l%RRx7sRa~18CGsa;5>e z41f!sUtl=}AUTCMsOBzAWD95kB8=x1X4(J6&%%t1vm(v?MB%#5yfusWJ8DR&-voMW z`Px16UeX~r?kD&9zW#xiV0e!ss9w@e^5H1dYZd=_#ML)%juY#|6aGP?bwu?jKN>oS z*~dG^oyX=`qsjR_PG430(x)WtAP_x34$>1>3UYujo%%xpBy*+4RM}P-c%@DxqA83q zGlO8V78yN#LVS41Ez(uMJzve#qm;0cMqSO4^mFEKwm48m-y+u?LZFDaiK`p(x$tZE zSs=*=o_)B4L!$058=Xd4ZYs)8gc84!ZbXs#ni)7LU$`FHaCVhqRxi}msm0?Lp?sO* zcpH068DRS0u2oVg=muGCPwW^_)eEkU2VgXfLB4z6qdL|~WMVFwmIG_NxwtnuF>)WW{H z=-lx8uN&1@HVZv+7@U+9I62~sea1#lMzw`j+{Rny zV4dq%*<3^)X0cH^%D&LYqzH-3BN%M}b2j(9hv6-*P41fH3Pc9A-M2MS5kjYCi) zz9PhRjRNKSyO?l~ww|0pN$M@@*YbXXM*rKWQ51CBD?)EYZxUtSpN4pXFXG;uPHEFG z4&-;-@=JZ-C+S@ZHGmc1a)hwE=KVtjdo;UgXxgP&Ale$JOYB)4%kihaj5orff#*)h<)7f&PdN@dffbicOHC~;US~JI=Etf;xOXSY;o1D z&)4iRUp`bj86ZLj={krl9TixTAY5fGe+i`efviM!ze83fvijCe4EDbN_(M;9pVe5h zABV`-<&{WelP8{7f0c`9mL<|lb`l&6#a4L+j9DD7F3&>l!@#AUPJp6XU&jQ$sRY=dVT3I$)SD)?=0L8E(j_F7=*N`#b^WGM9pSDgjFj_`z0h66u z2}@OwA^i8q0bB!f zfo7Me`E(P%GK-i5!7x5pa_6B`co-mjj8XW2s?}KPmP=<@@~p_t z))pUbI@wAORb_4fRxUh>{cD!eW&x62I&I zK^_JfvDA#0UP9enefG)d5)YixpP7+=geEbkvp}uBU^tg4XS=5}wV##BF@5eDL71O% z@mnevaBbp6;c)tk$PfPs zt6u?;_9}#5MQAIhCZ>3g?$ew@f{YE5H1qeyMc@RIR9HO>(wT`Nnb({Ch=lnE|F0b_ zGh(^TER1W{Q0_$QS-4#je~7Oe_jF_2Vij%f3>ot1zfXjB;s4=>tQuo#yM-E@55~-p z(GTJ||8oa#T76^Uw~wQ!`J5YuamgmoC4!av`-@?Qk3-kceD*8L)oDR5)-n6ooq;6Z ztZat8unyryDB-B0GKxmG!%NggOzIZ~wjy|5S4;OU?bqzl@n3vJT~}L6mFI1kfIg&= zwjfV)y=iI$3KiY&cJ?QDT$hRXDb%Y@d8*m$06MRyxlQ-;vmB4p;qM4C10WUfI!$|0!#vc&=k6gZ3nce~r|Hw# z0K%bWr_e875ZExk@~kpJEC_i=`Hlq_(3_EzK91#F(FavU7h!mJL^I(C%0_H;(O!-+ z1xroe)Gy#`%dTaKt>=AnY;4GlX*obPXYAFIIYyNLrxkE&{UiCozH>+RJ+O@*@5_X< z^LJWq3L_6S1N@d8@>{&|`R-F_jO8;`sJin4Q%ngJ-}vHdE?gJcE=U+S<{bF}1vNgq z%rG<7iiI8hF~TvkP!JLjxb0=G@Y!!`0IUJVDDSqOqQfP~uBXww)IkTp`6T+PY)sz(x{dI13pIRp2-37hCjB$v!x?;?xq3|ahL^VgAZV~ zq^9neTb8e)5lta|JpGnS8hcfvOoUv8WsE@Tn#%Q2PF#UR8W_~dYe*bh8S$|K_YF28 z9C|uc4F9(3`wOHjmF=LGkpSdxFMNP!fQ(uz@s1bEIDZ4+p!MQ*F=>&t|L`ASm7nPgO2zd_foywKbkB>02Z#StwGUP%`1Pv-Pq5`Eex3rRYE+4)_ zoBAaz%K<4CulL0(Y_}9rvHTcQj_VjlRZ#6b;aVvPKM+En^|<&^Zr{gFdZhXpg1bHZ z%B^>mZ~RSZ;f&gAN;?4;f+DlAu9y?UL-soxdjg08$>7=L^Kx~JZizNW-@k!K9h3Ai zZx`Ft5ol=lXp=gXC`l8hkW2FAB=SqoDrL$#LpTBXYs|`>dT+i2huB(#p^u-roN}P& zS(XFhaV7%i+&$W|AnSK2RkGW*Lop-5>>d@Ch7HTAj$u<{F7{Ib%PrXL3>>KoQNbaH zuNFz4*~=?RO&jbG){hPftlJZ(aO0glDrsI6^ID-}6h90ij#AqP1o=}{_TIg>(l2QL zi-Aa{0l<(Ufs8j>53r#ZZki^~t2j1Sqm_B>>=Ka>V0}7esXY4R)MpnF)Bx_8Y-m}t zm>?Y*WSrGw6xQFO4Bx?O?a5pim2_Q&^W>(aJ|W>t%ROI|lLDTtfc?;*`eK9es|#J( zJ$Jv#TH~rED${I)4GrBbQlaQ()0Oi;_-G1>%+05V-{$w2o==_bNLVc6e{Z;P`q1NB2&C=bKOu&zW=;YIKC&PRQYCz_bx~8#d7`novD*s~OI*f5`8x3LRO#eQ9si)9Sj!h2t(8 zxDfwVgjbP(nZ6qFSx`vbF5CsnuS<;RFL&A;OI*(&RbiH ztqsESaVv6Ok?*<@vJr#WLw!t+e)kBe-mmMm7!j>^s+rY+u~7FW-A1{N#@ z^R{(@-~f9jJM$vHeD}2~N3tkw6XdM)5;qZe<0*|pnb{vebwk$hnkZ)aq~@@jaJLAP zb;21&$va|;cn3&s*XC)Ho=O6g?OwEIRzWtc=bAGoi*1(V2%^UZHkp{n=5A?$^L{6$ zlqZym#F?>5&LoJjnSb9=mO~k9T@CeEtUu%vJ%)(6 zX#5TEk%ycr@E6}2p#Pbj=;Ya)iV=2k5-|vV_e$bTIhOM^816|v&HrItcMP@Gz5Gx3 zJ3EVqh^-4~!*q?>Dn6_r9h3&+^ake%4rNZmrClAEXuOOAHlp&{$U}QmX&lQon1;=q z;;lT%s0BKi_S1)Y^UbMM!wn<&<%6Kl5CO5081YtQ1UYKnPWeQkjO%TR42ZI^MP@w8 z6A)ca-{((_3Y(I;Bg`v;yB;ABJVi>Q=iW&p_{QhJkmJwtKU*}#N zk{UtiJESVRc_R4W*ytkF5hJ1w8+C8-SKkEktncyFgXTuUN4Vu&Nxg-72Qo0OD-$st z`G9f528V1S3;M&NI`Od4=CYlu{I0g{Tz7CF6ylhb?pthBjjdI@%r2^J<+SzjeqM4_ z=%R4zshj6CeM|+}U{QG+m(6MSAX>mUB!Ry_*y*sxX~Y`4*8Rc7*TNUvSPa17R;Ukb zz9GBksKRIu*PIUdVtZ%rao2Hd7M`MADrfuN<0UidCxIOW=_);IA%e zyrqOQKxgD&_Z$zntjDt(P+xl=m+hx?BnMP?rpV;P0iUQ*l;6W3wLf-sYi zxI%i8j?|#DU5GsfwShkoi9-iQ($rer3J(#=OEx)4 z5!!pgJ8d3uI`Q8Pm{(T45x~P2102eF#lHbMSithZk}gs?ZhVX!Ds!HD;eo$^G|@@} zeNPovPi3gOr9)+Q$Fj{ydqqSXWLXcMoMNOMdW$8x!1~Mh95(%<~hmO!{d%fhpUL-))OUR^z#~)WoK~9 zcg)uh_QAnd>kPb?_&(*(8w{LL2ypTpL=#+ILJV?s-s*~?#Cxdl3FxxBMe*W5=MqcE zRm;Xyi~T$wiOyg)`Y2)%lp+L6|0=NIIio`N^w}MwyBCxPA|nW5sk|JX0#Q^^%!uEb z$ttuZ3I73uldkGC$3-=Kj#0usRI1CS{s~*GR5p;??1qz5QF=5*w1A&BnWuk2027b+Y3P zkaGFiCB#LC;!k29agn;?1H;>;HNi9*8G%$i#2Ndh5M$V#Sx-61Gka3>F+n~r($CQe zj&Y#4M}f`;#hav7;q%NaEdxHo&k9kO@*osF2!}%A)Nw^$JXGTEAT+IOe^Z&eY8W0# zFHxvQNL~e_NN3irbR~^E1pin#26P2KVg;trWph`M3;(5PdDlrmAV?k)AUP<} zxG5mxR(Y0cQSd4|c0rk-M+@>X5!HRuq5j{&8!k}5PeeBi0!{Co0gWs$=~)x6H&nP(JYRmhrXV^t$AJ{@f;p59aYVJXiD#xXyV6z2nEpypXjpM zf)dumrKi!1$j4d1arwMs{>>P;3v*Rry-r9S?^V)ahr0MG6qb^RJ{e8`wLlg-|Ce=D zi6}ggr{xI}ADy9(=r8^2U_(BG@)5@1JH+?>`r4w_tC!ehW^`Y^FEBp_K(f6pK%k?x z!h0t9lk>~Z^iWCZc54e2?5aZ--H(?E-7&Iqz}W?DkFjt+7KyRlSa1g`%7^0@YvEfe z4wSfw#-dy6*XEOsY<_}Kzyb#=7Nc1Lq;~tf0X&JP2XJEu>%BYNhx16s0W(}+XxSp4 z2FjIe6YNh*FYxJH;wgQByDSbeGSRL=B7o9moO~m>A|5r%8OJe^x>HqMTvt0k@F#%D z2%y$`*Jb+T2Cn)`-5-u0y$|BWgE=sl$TV2yyo<;)e8mp!HUQ_Oe|6c*Rr$~#hJXtI zIe9iTQJ_Dk*LHyO5iNNina$5|d&)#~eMHh}f}niV>*-8yFkQ%`I`EUbayabU>8>#G z#C5=|cnWsISfGR>nS*p-L?hAp#fn)NS4oAElwTr|lT33YRD zb@e3_8Q5Ktxf>Ph^?x;Wq4cCCuTqSWvU}h~-LH>z4!ROr$JQK%c<<%g$)l;c#{9xM zzsRd5YNZ|Fn&TJ?sAUxe_q*YN zw-tDb{^h(;i@K(;C2958V=Dgx*~4Z8S?R$b zFk{lu@I`E-@q+B48t4p2oYU54s1Fx8d*4Mkwe((AUMUkU3HT)lrRxLw%=w*%-gP-2b!n&Dz~{oXz&q@0e7L2 zbZOkwH*HSp)wkiSa{5yydXyGQh?y7X_pM77Iv~3%No{G>P`C$UDI96LNOt%Va6-*M z5ihTyIvAfIOV30+;|7{+`Bt&yE$m-h-8sJ*Pk~ zJI3K?uj^9t?pn^eG%#-wH}|ewq|H72&$l#jp3T~{RHZ{MEktK&CYYPl*?dYqlxzJ! zwI2$nGinP=K)i*XxA~M&b-VT$7Crs|@w`I<9&&5)}s9aLLZw(!r zs?|Yy$Vh!}bOO&@uNcI!T^yLw#=LUH{(0-{?@Iu$%U|Q$i_o^lOEZ_5o79@o0Px6x zn4^iVdLp(k2@}#ns(yfkmjXfGZcth2_hKE3z-Z`Q$QeHg=VldgKc2HIZ`im&&YB*a z{%9gq=~>3 zq}M{GVV~-8%a1dFsoum0E`aCT6t(+uRRb+Dy(#wt)4%AH>C(U;px>zWEXJY}&0~25 z^}AwG1J!KK-y&=G6Pw*YuWgN4I&{OFKOAAU8v2|$fKhPzKtB*Npty6nZMlG`W$jM9 z8RVDY&p)DdzYK&s>YGEo$-(xk*bJ_a-efxHHmBZR@TPk$8U2afxj1p%>@tuVpq>c9 zdFk7Y)9snPH3E3n&2^EW;wZtAYt)f9iF|N%!oh}Y3g5rq8KgGbbxpG)#k+*%Fe_~i z@Fb=H?ZAd(_D4Nk-nJTu3$H5y5q2X7P>}dc&FIQ~sl{G3YwMV{ZY0D)!d$Xf8@n*h zw=2L5juR>_I6Au?Bd=1ER25nb2DzIrpud!8@952n!AKO<5f8Cu8=_taLfC=>#gSQ}nafZhYy z61ige%$K-rw?Lt5!`@{wR&PRC;RIWD)I4$U=7{Af?#n^y%YUp+j+BIv$DACrNvP|K zzs=t37>`PUg~=&}sLd*sRF5~h&y*cw%mQr=-zB0T)Yb9 z0zE=>BZ|V|Ue7+8*@KL|S(C9ZV@p7#kv5j?xFc!)e9lXJnm{+HlG^@(ZuPvR*X}XR z_zDgDA35Wb_a02Lj$iYl2CqCO+c0m!O?jr zzsRgS#}~eLpG2H5dg$0l2=JQP0{b62KN%6h&v+zn2b zryO;t-K%6cks5^Q|DIAa-aHj z)%60Yqe&x@Ka7jvq{V(`YB^vMpYt0Rifzn%A=^91K%mZd+)_lf(1yl3-?)r^Q`wq+ zs!R~dE;YgUi<+l^M)Tu@y*xb0c$x^^o;AMOms_@ewZK}p5g$gX2kX3xn$sJvhV&7t z8uS+xzdf%n##Zk8Z;o`9qsXaW^FDMgy4(TBU?0%h)m zreuZM2$FWy->I@}!Rcu%2FNm-lMSyF6o?19f9&6Qs%zfd2a8Jn4ltz0H6A&hKPsq& z#J-hUWPJr}pqx*RZkhW6a|PEBWiJ+Mf9oDTYn6%Vjq-VZepJ^53;py~!n}g;dc?OO zCjmuGGS)P|T_i6RYFj9}TS`jdEP7umqjV(b3|4wXom~eqGmU}=ruRjBK#-@dSRmOm zntytuvd_`Po7)gd)(BODmu@ZXX2j;gZ(v4n5YuC6!2?bRNfUznrK_&nv8w?kvG7n! zaff&4(zan?oP2bV!neTOXb0_}F^lQag)vBdYl+{Wt@WawoK<`W$QW$sZ8iew$7_fm!_E3|d z-5xNMg0Gp1+a?c3kIsMnTOEw983te|HG#i#T^@<*Xig*#%xXO~X0w^6;4@&2ui^9eqB9JKVfqbi`tM$P-YOf?8|_PU6z7^0Mc zTICGD#@)CAMRIMc$ITa}!&Q2Jq7o&h7@?D8@XC>$PX?$GBr3*RehAmoEHi$NrJL}M zTzmAp3 zQgsnr?O~k-26aFR)1y%yic6E-MlLm1o&Iy6v;dJfa0Lg9TID|pOr9Hxm>9;yi&5vp zl`f(4sRg0l9Kp_?6NwHq{*+|FWU-%8m33aF1UY#5_{HlQA(^$~9l}Vy;HKTp0_%ZX zT*8eBS0jqk3y4Cwkj`#ABvp_(j-4`*xbSxmHS}v|OoQJ0=@}5K9FeTDEbRUS!fS$% zyX37NyGf>7bi`M$1oUAVQ{u~HaO(Roc0R9}R`C2&e;Cuc?C2_;#Pn$(%$B}q#DlAc zT~N#S?I{F3Y|%@P*%?q5GL^VU2n{jIms@y!CGaohCWUHuGPli@2K^Lr&K2f>-4Wmp zvDnLC`jQnRXx#8-=361!?B&xb+$fXEvlGqci1_Z2`e^(D=Xj;E1oHkCy|jp&dsX%x ztH<4#sw2|<>gU16yapW3ZiATY5DJUFLAMe}iaAqr?03&MLX8sh;4w{YksaKWMrt04 zm2$8#f)sGWaIDDm0NQn>3irNE?f(W!LU|a3FIS}YzjoQDl?k+yQ_B+^78BvS344Dh z`Me|NgU{`qy*i}62i&lGSfPP26uYs(E4{jQFwXh6?DC6SQIb;NE!fFQIcraao@S0N z??FbIZUV_6pckk7r6$4X6*3|U8LqX zeC@P-hmblzemc|BEGyo6=!8x1HN!bHRXl($M2N>}mTFh6MHsz}fRHO;NE zRO3VcOoeqNP&I#&#K(sB>3J8fniS`{hYa%2SH)tJ`)bA&xaW9FILFIlE z7ku8J`YTSU%2aH_;m zVR;JY2LWXL?@2z^tzU#Iv)aVkZ22b^mzc8&5o*PwJ3V0=5a1F4-XCWn65F{J#D+Ut zZOzobD~ubI+ZV2L!BZT+bbaEnW*}#1k{0Ah;KGKd#tog5@6Sf7jj5yW!1V{T*v^YD zgdr@^rBi&3QEMD+(dV+Qr?t1~gcuS2Un}->*oDHi*ZxzuA4KdM2i|6k8SNShCq|Yr zo=3pC&`W^5=c?<#pCM`mWmOsl&+Nrxk zRf6rOw8Os0ba5Su$DvGzG}=-RQn#uyAr$$@B-8y$HSb_5}(aU_O8%!kg^RNbZ}DGsOczuiub zb3pk{)m5X~H*1KsaSR$ld3N#^O5@4;(~JMukt#Q%w2Wv=o+Cy-RU~N0NqRwW&#+I1gl!5 zWyWqLkKNCzoEk3xLIA}KcItt6($@bJ(=dsN1ZM5A-i~@7<9S`yxpznwPas6KHuYKj zBM&6B*{2Wn_@-?fyyY3rJ#>g)fO?#CkBntHUQx9(*bA@>A57P!89O~o-6Yhi^!AAF z5gOXv~g0iHm^W)GfL+dt+pEr97DrIjg(Z;tU7I-F2s& zZsW+TgB_==A_#R4Wi4j1IPD36V@GV*q;L#`>r59~qia$LEWuZ%%3xnJ6p1S$<%m!C zZ}x#v4rM}wrm$dCfmqmt^9NxL5>^4S%NBWAFydM4d&X;h?_Po7%7qfCJJ?RM7o)%2 z>EvE<(g+2@qw|WC4_U^9IooLfQqa)5dSlN3}HSnQHHu&tF3`I-YF^EYm zLg*y0ie?E2Fw?5`^GA$<(#rAgD#qxL(_t_?3p4UPS=w1CG`=Hza(`#AO#$s4eo(B~ ziE7csfT@}nf8ezDss-?_P28?ClFZp30|AoI>xf}_<$~f5;)xd9|DRly$+wgN3Ufv9 zGwLp~T~T2X=u0`yJKduiD`0eiAD%HK zZc9fKcQFt9qwmC%VhJ&P{mCR5mU-y2VW+#@-RLy*HTE4`z8}_qF)_o*z9~ALbMNS1 z)};^q>>X!B9-|)hG`k12h`MJAJRK%C`4rBGW zmkfb`v`X?fN`y7XbZM+%7z?C5B^11%>NBSov~eYM`rVP z#tB%w%^2ruG1iEv)q6%FClIy4v&Z4fLnCvc!2t~ZPK|gy74ZgKI(K1x6kep$FT%othnZb54`5Wlur|!O5Sl$oi(YdE(B+hnTj6_W8@gt16od3YFf#yh~$AAXPE z`MsjR|G96NnfhljwL3T>1I?&GRwa2~n9B(gCR_1t;@9;A78MMPvxc9R1g$F|rp=%oJn;L;^RReq{7yDPnm_GC}$H!mHpPxUygs zdvGbSL{^q2NFeUJ!fvlcIX*kUVXLH;yFw1iry>j8Vdy#uGzdG zfB=IS!FXZ)!` z@#E&Q5+C=1S@14Rr9ZNkwsJP2qvrfz6fgT zpg%fjSHhg6lzO%A&FBg!F?B1e6n4R?8vA}Qb$y1`g{crH{}wNvu<7f%og`HXBBf?Igj-@zdtT_h ztDcXp*bwXtx2`w&$l7l0weYfA#w=R#Fwz*-(SDEB*db6RSF_+*mgPy2bwTP;x6xAf z%QR3{QLn2$Mv+BwpHB|tIf!#&ZQ=Iog>FSdva*&qoVgP-BBz5dGuBk|#nbt88oQ$J zGWf4499Ls#S7IShhv>qen#2%`Y+5xe1aU4LwgV0Gk*vtUP|PiPjw1#ZH+a3Jap#qIp-Ezm{EQX990DaiX&A zi+B1DvfS2~B>u(?bh)Im6v}tu+;!aVhD7gF0vOA=QKPH|ocP5YlAh(uWV_{(@u9)D zeBW))BYS3xbb!puCc}+~pkdSRMtXG>dbwoiU%H?Z=P>sn- zd0(~tMOAVJQKJ$b7~`&W@cI;R&t+1=*6hQTFCZW3Z5g9oI8xl)Q(94E2P_JJj!`|mK1S)Vf7GMewVw5{@yPoAmVr> zl5$*=Hz9Puw?JHCQ1IDO;R*t!1I=|P*6*^5-Dlrilw$anq`QV$+!-gzEMIicxcGwoLh$ ziAeOAQ$>g5Zi}vj={h>)x=(DgHqML?->+31sQM7ywjo~>iy!gTaC79%=o1Tp!Noaz z_Re`pllGAuHBc>>VGx&+`ek83UwXN!>rJ?*tDqdpB=}^nrUy}Vd1WB<9mJee0d3rO z^oec@Kuf>WxXIA`QNg~VN8CMaM=945=fhKPK145D_&`^X8Ypq zdri#>40pvK<`1Kg;=Xru+f>2=8IJg5CsLohxvZ+OK$; z!Dh;iCBAr#1^&>|$6B1fj{|vKCQFWh>QqWSq(sUm9yb4vF z?VCwFjnv*Y7_2%@9mw5sYd-Zi1{RsI}K_a)q^nbvgQa7Y( zYpD*cE`n)isOU%E_fO&e91G@%90D$sD`Q2FYAa6KN%8KnOLnF}-7)c@`9w`q{uH4U zH}GOVsDo4!R2Zh`$4p!Tp5uO@3IV^&Bd6Rt1$xMwKpKvJDc7rU;vO16#bYaE6N$o}TDvZ9FCs4@mCR33uFED(04vT=Yil&m8_OUp!muRbr=)q@xb;s!l1|ro*LHrcHLFThxm3i6R>rna0lz! z=Z*y5wR%@_wgb8uyQ8l_V0IM905(9$zkWjwC*7qEw+3el#ggGMGioEalVz6V2QZ$6 zFKLKZF}#-Ztlx*VGV^C(@y_;gy$nnbuAy-K{c~$i%g>_!%V_}K>o&@QQ5J#Ns+xcP zfQ=CfrwRn9ETl^cT+?VuxO3ZkCVw1_y)i)|Z%Is#s$Q;j96e7NeKIl%f6a{5u}S!^ zR37#P5N$Pd=v>$-Ro?33c*da#iiJ_mZ`Th)z#z4}E1;JjpTj))`hOckZI2YECjTDf z!`!BrY1M7>4lBR2P{UFC)OxBnQ#F_h1X)0~qrat!T0zwUOUWErWDW5se?Tk~YKir> zw({2m{TpRJ9wqUw1~*0j?m$_aX-;{iVMOgN&5@enzE8~x2IH08fE1%Ee6FF!u*}W` zaS9@|V4RVcPsmcX7rpMd6ir2hZgWaR-@X3L;fw7}2Em9|5#5ajRyiCEpOB-RY{J%j zjk;GTDou$En_;Q5aLWWM!*cZZ_u0<)S^x<%#gO?^Ci7O)E*WQBFZt#V$gbprV>`Vb z_chgI$!f|L&&x1+SU_)@q2lUY?8sp^X!Oi);w-~eIgv<2PP8nBeb-77DCM$8s^DDOZ{CwSduXSEl?K|2Cvyskgnp9nrsafl7;o6fPL6;#;|qh~l;zsJYCSDo&^z zdqb36=^Pr+)Q)ZXiE`cneG95*q;2?hb-0GL_HR8OQfWW6e7rnX$uLDb_#C}<;^=$< zIec2Oz#&S5CiGi?A%gFKmy~P#2JGG&_BVS{EuTUPA?A@da`jS27W04KTzcv_E9L=< z>)SV3K?GUbW0uARe1{s~NgUk6>hk@b2sP3z3MxO2TU``2;w4BtmCSE6{iuqVZ&K?> z>3~F|R?*%3e0Ic1C%G(efSj4A(}$W@kW^GBb0i?HNV_fD?TM^ScysAB z&P3IvsI&@^wk^X{2+g;|mrJFQ8oE&N;MgOR5Gr$fO0i@aR%YJVjdxV4z@kN%L@~^3 z@i>YNQYv|zL=joQkh1z+zG(bjJMwG#3_9gyZez=!N4}w9)&Z60rRQHjSTZJKFei0Q7*(;|X5FnEX0`coKAQ@_c!xvz$l1X8k(~AegP{IXTEbo!OePt8lv? zjsw2e)jmO>82KG|>;^ujr?n+-SQEqq>Kyw4y9t+$nZ+f&EjEYR8Y& zTU3W*o%|pX2Ot)MAzn%EVcD^9A`nG$)`7KLU^_;Uma311z7?v=eJIRFA{dgwn?V_O zp^%hRK%F|pFLX2U$VCp#nD-M#*4~(W<2|q~Mu6aVyE#O+dR&qsJL{q%V~^C%+AQ}L z0sEb=1ouu6Ud$X)O8wdJCZgce-WH(mPBOWO9y`p?-*ff29Ha%S#Xb(cgc%kxPN{f@ zC(%>+p?T zj765ICNzUu(1{&aTGK&bnaH9x^BJ((^1?M^`r-6OTPjRF_ zAlSEbyCuzfFJEPr!1n7P8>oV?2);c=y9;)fC91kGD0+CqO|PS#U^&k~+;N{FA8?Ik z44vjcWM%Xh0$|8ngm_O=S~4e}=zU=h7P3tb{*YnQNAc+g+OHJXjCs17tT39v$09NZ8|{F`)^OGoN%4{=zK}8 z6WR`bD*n$O#$QX87w5mKmRju*eHd+d34x3A5;}*7hX?u~+;hPij_!bu!c)}WL6-8P zCnqja?vu_7k*kRc7opvaK`pt>TxvR^wZ;6YpFrhN1EMj0V9@Z$p)eL~&xd(hHtS1* zN!nkWxrv!C2r2UD(c=y=n`>5p8=8b_O5J1+fN|&4Ys94A8r-@a_=lA3g^=WgFV5BX1Lv&~jM2ozWW+b_R9lQJlwz!S4^xh&GGW3N7G6 zUVKg%SxmssL}OY(X~$#A)K%iAe?;C3Ggapf`(_~2m$QxDv9_U2z==BqFDn&bmK4K` zcvoCZzA3E^WQmSRXMuY5&$w8i+4%AQe;G5Y^s2rhOpD|vKx0<403%t1F-7x%qigSM z6&>2TxUql(D@!Gn;-CKKtQ%UX$d^KBtZNiK$Vd+LH5JgK09>$%&K%EjbK+TLFJEdn zaxB0(fRDiEAbCGgI%ZLOcs!+3q1sAwxhj&UHs6K*Dd6N-=`&$<^IoAYk{J&c{~W*w zm+rYa0v?L6HN++qwSM|i^OHN6rCU{!6FO+*o4ydgXA>sEMH(Z?XASujOcEp=7icNHxI?I<03#9SO==Yd(?5%Zg2xzNb@%sba<(Qkrylht7CGZ@!oh2MJuE#JLaIY{BU9Q{g%qb5sq%EC3kCTnHeLo+_2Tep)HiYGf z`A8nJ=3PIdOQ{-xy`^xglZv2a+0$ekP2ZrHpu!PR3iBqSure*(hjnN76|^y6kE`hU zBX5&v9?qdlF`vd74aBA~f0XJ;Rb-I`Bzzi43ASne1WdT3egoULKXbo|{FhB-*~bv- zeO7C%UM7c&_C-<3#h4fFH=psem>HGA3+E%Xng+@$G7))KX~)Ep(#(xn03tMni~(SM z9QS&KYS2s+?mg~%cAf#iqGHCR(lYjA_OppOBPS&?H>91pa&>uC0vbtNQd7R0t^`Mx zme1h17X+NoqM?W7H56;L(uErlHh;0GTaOugI%jVasVtvg4YnCR2G(P8DVLpI)>N+k z#(@d!+0J#zZL5U-JHFdDa~zxujU#92oEgj7ApP^7f*pm(ogH*rvAMvQyWgp6@6gk) z?zllp(uy$RQsY!u%wx?qYO9LMjJGYDO{V1ZM}ft&e5HfJHJ^zAT~Sov=}Umk_(PX{ zS~TW{4+m+J$I9CXg&E*2g=ToMu_2XbB(2mOuB&U)YKT<*w)j>l2HTU+&mfK3)M&dY zO!dDNM5#~3KrFx&3Nonc(QIYJIR?ZG%8)AFJdROnx&18TF^^@iY!+_8;U^qj9r@>R z)NQEYDbJh-$3rM)T(pz9r5&FpzW|rd^Advh&b1wJ;R=Pbms_3`j5{>OIW)VA&y5u8 zb`_x|ct{#m1?XoqG5ZXMinK%=b&1Hwy0!ZOjogM!A=v<6<-9*)?n1f4?FP=d50D7y zXDn19mqOQkBdG?E?w*oNnb%UaT-R9_objKWHB$mX>Yn9j{0rtM?Cy8(G>yYD{cM0W zZB4fGe3wzux4Pa{@E!;|-6mD`J~4i%WetQ_ssevhHJ6RuCB-v{LaUJyNZ&Izitjq+ z5GY&ATN+|uovfW3NdWuwZ>AtAjx1&Nb z!Oq3k*wkODfcpe?uWGp&p86*N5WQy_sGaQG zf}j%*{c|7K7*-rj6%Z%-#$0(c!Br<3@4vJq=iPw2`zpjEHj?+FB@iOq}m+%dAIMxL1IhZsR~LssU2!R5|Rz-*f> zK6p7lgzjR>&y2>;$@RA^Rq&J)!L39hpIt}zT8C($yLX@taRV7I!1A#|ZV$CY{&w&@ zkmhQ&lX{ZjtCDI^no_9+K@2mW1?^PkK{2{KrTi90zo{-ssbrHzpbD9&8*${U;&@`3 z$hTvE9VrJ2lM3zsJ-zWtc&U=fgOkKrfU34($ZmE3ePu%~%>=H@1zqHM1$s4cvVd+S z5y+(DXi2u^L@p$yg@BJ=p3AhF-;pe14)2vzySgf;7tU zq;?oQK<|RVc0#7W2YJ8H1iRxREz}I^9iSN?v|^7jP~4chDyQ|h-_#hbdSFp`!?1Ze z_gdC)hV2cTLK^$cEkss<34^99LkDJQ9Tw;EoACIW@j|UgztfX`S_j(w(jb!|f5F%a zlE(W2ALg4{Oy~m@H)q}~Ih`f`Efx=rB;cu8iD8K{ zQ>ll}SYpkS>Wdi}nA7=3RMEFG6h#lEV-*>>p#nS8a$9H0ub4LeKtpG(z<+L4o|#Z^ zi=gA%{8f1H_ZrdQ#piNKpaL09>Wls$Pi}9 zz-Z9o&|3WdMI(urPtZ0bSKYFeP2)~vU^kG5ux#M4tfjZ0QAfNtsRs7y6y9*a!VAc$ zVoz?YLo5B9`#NpqWrfVcy4%=#*etC1>z8hHePVqi#kL$Y;m^S{a|!834FRte_Pqb@ zC9t4}o)HT(OfJc0PxPak{la3cx|C3;yGq+V?$jV49+z9NIZl>VnO5Nq1G03ZfM2B5 z_mdG=zVo@aQ$DWzK!B@;SNyNgH5AYuQ(?598quMIm%*t8JxHTXqD;p7UW_FK;yK+U z_x?NOmK+8yDdbAB<{?X_i#J!v9_45Eli&hy|D)Tz)l7T$(4aM}PnB=>XuDgo1_U;+ zG+*(%TXCTJ{^ti`0QpYsouFZPDR<@@q1d&i+H1)sP%N{xpC$mU;=S-Oq5UBfFCN+- z-wKr$hGpa&OPo}Kg$>ZhDj$6VZuH}?>l_((Y-St&h$)|gpN#B))P&+_5R6TrIh;_3 zJu6g2b>0doRfho4#zN!z6z}X-+MKSr1#|0S=P^tK7*a@zlZj9!qeDcq5)D0{J24=hsI&f27!nQkkMP z3DmgDZFyxF-)j5Je|gRJ0c9rMjdqUV488z()k%rRAg8vn>MyfvGdOfyh2w+D`vr;+<3-wEv4p_^~kScl#OHX#o-rrIhuc1wN- zEP{2l=5E@KQgOQkZg%~f)Ib%+Xvx|bP-3Yf4*RVsF=N$uHboeRy3Zj43l3x;04C~% zDCR#Q+l$)IDMnm2YJ}D2-5ZY*N^(W@MlY=rB(_ixY90}m^fcU*5XcTx({^8Ar2zPv^mt# zUJvp;=PH#t%pLkRIW8QcOk|UXkmR6RyDeT6bO`dwC*Ck;o};K&+F$V-d?gq9?oq+9 z+MD{(@gI{)>D>IUGhZRM`OJPpmOoI(){b5ZHM-$;{$DQWIYmhC)O&c>O{Q5T2mVga z{uADcthizzUI57}151SCDHEKf_SOW}Ngce~Uyj^Fj*I8H(grv!rq;#B0ddgdh2w6j>2m z{RPN3UGWiys9!B+VMDy7eTC-QvQHgSAswm-0`FvxD_lxD*q~as<_uK_mKIF4-&s3U zANw#!8o94^K%-G>)i`QS&#T8<;4B=%!aJFrDo7*VYywn=Fl$*yDng@v6QqM>erT}m z>`llXQV&UsX{P3qk)51LZZpwxa`{T#{$xC#c9j8gh~xuiJOti&e~=R8NKGPvQN~jU zMIE6HoeQy805e2=Z-jPRe<`moqZE@|HI6ZjiKEG2SV{pisu z(rl_0KS@unIul{i-R-$&yB?XkFE{h(nAZpY{Bi%prE{<04MQB4aLdeF!4o_i)*WXbYDcEXoc6avE|s17f!;>V17Ut zUH8Zv>{ff^X8lEc2Hv+&JLft(K@^s*~8Ph_v1<3Azf8{_S~S8?gS;7ED9&f zK4l@mV8Mc`tFt2K4li&Si+(5z)k}|y8?UxI(zf=?iY3bLBAx`uiCZ(TR3{uQT=pPC z6$qtqRe<*{p}V7g<+1_invrE!E3f*lm6p^ISJB2)`56;q{AV$#m!Rm;d){4sa*HEE z*JntBr{~u5tu|!|peKcAEz^#U5kaOVxcxDeUs}!C>%Gv)FKAVQbBB_1_kU1ccLcWJgAcQbn3cbL8eHyA;GP(>rK7*c^b2m$I77;ide(iU3fHIxKXQH;L zQzm!@@+O2wT;P5SLPm1o_cO$D$bwVy%-Sg@z>)EXemI-2nEx+(gT(}uG}2<2m7{~Y z@c{T&m?|K|ej=Bqkt#w>qWG!xA7C?Tdo4080^zfsBXG%Ai%g9=O5>^S+MpPu}Go2{f>3fk8gVs_vO2d?>{Hc3~9u*5=UUR-O+ zk`4UiXU>=H0gn}wU7-lD@t`r$-*UtMt@uMjqGp+nBPa9WX|!eZp1iezMAG?a^BbFY zHNSzu`vLj*-zMLGidv<3m&d29c*5S!%i5nPuEtYsMUK-(w!^YGWdh^oy&At7rMPx{ zym?2XK-Jm59EVCA?Xsy|@Nz8XXkdQ4@Z12+G@RgQ%t)M!#>pmU#{*{%wzSZgQPPEw zXo%(3hE(LGzjT2%Sfsh>qy+%H2VMAe@jPutsS;-WJ;o?zV&~3x@9VtVZaRJA|9$oJ z`SP_87Iw=uNL4djd=7IJl215XK$O2--24b};vHnWaJ%4whp0~eG6@l&zK97hzNFFp zfa|Q)gvYW}m_?lY1EETO(Bx7Zr@#O6!_T^1H34sS$bciY9(?Id*!S|}=Rhp;-yLLP zLTue%p#_ck?6M|G{VPrZ5IeIbdqLH7Yk11G`6Z|!a@M~^#>j~|ez;UM#6yMFRai`& zS82V4$R?}a7)jXQgt((dM-HTk%F3BgeNSP^eHN#b{) z9<*wudPWH#C76My6Ark7UmWK9!wZH)B|<8ta@k=l45b;9Ir@EQAHji9T249UKgew_ zA;f?Ph5>#+g-l*}@sR~qM;Mf0Kmw4L3EYXrP?LbzhxPU_z;VNWByovq?mly4eVr*Q zbDE)iZp>eOG`sIaezkw#wsYCSwfk+>*k+!{ag%xe6=G+PjjUJmffU%@Q!r8|Hi`TI z%oT2LobO^TOJG-&5B7^mjOL=8>?G7-MUv^>LIuVrfh=9`H=a;TcfYtk!PdEjP%UhE zP<=06q3DJ^_TLtLH25{e@jUWu5{;_dp@*EOaptk!3|+ReIAbyc8&vP~^hd;vO#wFo zoUeJV1u-X(ay;)31^aAn$P#!AFN6n&H{67byw{g5iFYro`ou!_nUVWFt@$WlW}R7> zOPZ>J7qsj1Wb!4{;mV7zNfCIPg|k@eRy~^95t6L|sn#@ucN3%qa^c~CwEcZYXBaf0Q*K7UciRR0re`xBr5G)-#)akleLkD{JZoRe=LU-@URO=TqR zgu1)Ex?uA$Ing8SG4jB`-HjG@t#Sme3o<5nb(s0qMkJjjLL_+ukHJxh*yYk%H zXqlS3(0xb`r?MMMSdx%JA`!ZLogwm0PN;&T?r6d^$Q8vxIT-?t{NPDZ?iqjnRZ2uC zvNtX+P|(zr%q91M`(1r|98oapqyhsMA1S18JJows!UQ#}b~P%(f?n?vWCJ2>)@K zekgz3&nw15Qhs}TJFr1ppRkW;>M@FvTqGQdt5seo1zcx*(95PGhsi4gnF{S#%=@@V z-=g_(L2`ejusBTo_{wZ}p!32|EmA5|2_!ymXzlWE?D}$^YKtB_ zU;4`4Nc!c@Bxprpsrywr_uR*xxTp};&jo!fN@AD-rS%c3Qo$NMqF%9Z4xyMnARL11 z{U*)!DTuUrDGo0^5VDscJszHwSg4FZaZR888^wOs<_uG-m`~wY8S>%M5zj>}efzf0 zb~Ki7k~%@tM)=TrYZcsqL0TLM)tFcH2!lGt^7UA8xa@Dut~oT~!ZDIz27t9&-GyR> z-U<)0Gb(AD5ZXl>?UVN<%6vaH2MHIXZLP>ib0bO`e)ZTeI+=;Jd*@}U&_o7M(+-54 z7bFZmj=^w`THhu1fmZXMK~n7fmauE2okGIAZ2^b1M~(C(J@qEvM5Xi|JDq zOz|`1F1dZhtLi+y-CFH6%S5vRM(Yg{yUQ3a*K)Fo)Z?9xJcimMqkJH zZ0S5`XN;8N$tD#d+PovVeDke?e=jkIJD|`$KR*~4&Wn9hf8f)U>|;64d4-k`H4ReU z17>&uNXe-x9Zc->{7(@Nya?&q^}wmv=#(g&o%-Rg3eert$lc3XM9{MF-PDl&I1z&<|?=T^{XAG`AI%V254lF8l!(}f#Q z8C@kN9mE=7W`i(C7CuI3nU&+`XZCYzv~N`H@@=FJ`Dcca-(Eqn_#cr_Ns`k^t+Os^ zrfET_oCw$)E*S*k2#4OdqqzwmU}78pS#R1k%_eQHVA;Tv@BIfVzKKr1% z!Jt$%=>VwF=$@L}Hd_=tC6K07&4Tll2_WbV?()AQXxswzgS|#x;VeT^w-?pCeNtuRwSXZ7U6|5K}_h39mE7)Da|-y&yoEE-a6EIEzTP+L25E z63-ukJj8{2_%+y7RLLcq-k&khNp6gl0?xbp`x)_H98g%hsx({A5b8mp4qXoN&jazb z5wDDv-_&u5?l6N}4DnohoyJj{jNH1>hxh&BifwOPXkR$?e`-c(c89+kh zqsU24S2Y9d%MkE;e%fW`?2GWHG+sr2UN)}`WpUyEb10N;r>JCd6#xQjOR-Sn!I_^| z8sR(vvR|!vrDW0S-?p$`#1-&v)a`t|q=h)`=WugT9??bYTJ6Sp`fZQ<{~VEB*7Q3( zWin=eraQS?Vq?{&_0J%<#$V*(t|u)+&<2ZY`iRRWYZ|8qF4ro@5$|`R=xYmO07>cX za&$|ZeFJ&jZe4{yL$2h4caPd*hob-a*&?nq`JUDXVve9i1WWj@%pUTR7U!`Q%2*f#i;!34 zhW}x{Rd*cgE~2a+p}>!-5j=p`LA9m#4Y+K6a7-Z}5_WK5i zmaBvt@G?@`kTMt5G{*q@SIj%M?=h^C1;(@$Z(wSWzcaNcv<+*QS-qv=>wW8SYzpk4 zZYLl%sDfr)$2Q*Y1En{Zv~BUgZ_g5cW9TQJBkKX&1xh}}Gq1eWaKK_vYQ~L=2;)k! zyQh^iH0u}k){7PPJux%x683VRz1-MXwk5|0sh$qbO0fl)+&(LdsmP)SDum#8!x!Db zzEg)_uUKQyyxojg$(my6HFxl{%jd!hWP*_6u%qX`_yuUS2k}^!4GYH%QGho~YY0PG z%%hu3&YjmNVs2V0iSZ7VWqLJ!0h(j(36lEQQ1t$S_m}U(#BP zHT#9H2pN#Vw43&3f*Gu7P@P)15}&?4g;P&cS^yITrS|>0FUokQx+u{xkpKnSVWSUB!dG zCPlrC(GU|WiUukI6D}G+s(2hs<4j$1BS93>I$81IDdo;E7v>Za5+NgSq7amo!y+{` z@}?#!Sv)|ta4352SSQ9y0Y$HGF7WsDI2205(?&tixYcfZ)N)8W49{V0^!h z+h#miF1U@$2;QaBT$s*zw@a5hN2r)Fiwfrn1X(IVI%{SQm6rZz^g0 zk;!*PeD038#37Mc_tRLKUoE8>@IPP(>M|ZF-kLmv?E`FDpLF6}YPRX-Hr0O3SGpD7 z{3Xv$i{O8eEcO@zxFZy7{5y87u@o^+wFWr&8@6Xkf+!db+LrP)?((>ek<3X0HN7vq z>EF|cVQ1k|@UOW&`SsA{nTD)WDLaLoo1YtaV}v+8^7e7Ze!d#v*?g@ExJ{`xM>FLHNlrIx3!jkL5?KzI zTl_6fBsd8mpzCe1k#d#BZ6jdbsHbsNq3aLkh=;C~fUETf6o zliv}e_eKK}W|+eLDH$~$u*P%qEgx(nZn)qE zygpyrQ}6X|p$!U2Hq1VS%c|v;KtM-A!t-nrVJiUino%We*J)=IF0pxj^({>A=25&X zEAwb23zBf&Zx_=cw}m`v%cLZw49w93jgcso`$|A0l(BZ(b&cWxQ^4psN7+7XT2;}D zUmaGU<~ZVuil6HR!OQ5oOVDZ)HHqRv%VxF$Dh6q6J-y=;QBU6cWoO#45O^smMaEwZ zu|DEC)G@}n1tI!(mt+~Napbn&d8}E|iN#&OtuY=b;{DY(*xj+_#(h7G+S>0=nZV4S zvLZ}|)!V{=i~)$lnHAF|8&*v?iXpb)MskgXlOapQK1_=;q(2P-TxMaY`VCd?C`Mx< z{IDDHfJ{E`DGabh%*SR9P>#xb5EO-w*2ozLkeEE2;d=8>7c-BhAIW(LmQrY>`@{iq zhZaPK#JT9gDFTO&y*0X;=0m)J$nDm`X}*(eJ8(04)PRUiy!Bl4TP)LD3wzw%#dz@_ z=Je-7p+0l0FkL)P8wKJpV|SV}_j4caASOlqlrW$v+j1M%ayNz8600vzG~KBX-NwY$ zYdy7E6tdfFWGZ|Nz8$kU;xg(pfr2YN>uG0j~1*6Cpjj$st=U`heXP(5JP zA(Xqn6gTFP1&*$-G)>+V*|SvTg)v~HKl#xfD2dwXGDJ`VDyQFZ_Y&)&NQu|<_~!__ z?xZ-c!PxCvwAkxnqa~Nu`gmFJa5_Vvuq20H{dL$d@w!YJ`gv_=0ZMiYWj&;+Hf*v(S{$w9c3dw}oPM zvY-IOpQBpESLmia!F&)_IL*d?uvl3Gmxf^yuFTcsH)HX+V8(9_PRh*X*2K^K@OkR2 zIV#`(T*7G5;kb?D@T&gXEkVOy`w6Ot50~L#BayHNL6b}>h=N+Cr>tHiGS)WJdzL$8 zI~2MAX*WSm-v2|j`q1SL2+v6M5}j%}5<7qWF=CEez2GG5R_8@Pd}HTkRg)NDx9fP6O>sC zHxKvCjQ`gaRj{H1;+Uz1 zJwsB?OAv>&xg}ju^z3I;?_h#a4)@UnUNO~)*$_Z{0}mRAiPO@!3!VnG)UwP-?a1jE z(hc^H5IT^k`ps_;JycmtQqw-}uj<<~ZjBu>+^X zoD4ndopuZ5^Qz$uexj3P!gF%+9qctrc?M0H0@=a;dv)%{(4kZ0*4pz$FWSDxf3)B* z6GrO+@=bL7?#4NjSZa$P$y>JL^&(qGWg*-w3pld{)4 z35&rykz86?@e{XwiPa_K8j@%(=GY0##tp>pJ%JgGWI8*2E};1T-6v*;SGOxE!}|X^ zL>bS5aL}#XWz4xrg(;N7e2~FiYXT`&w*|q3Yr{M{C8tH6Ys3Pk$%%KSh();nxPD=2 z^U-sPkvd3T^k#uIO)ejuAB9hOqx%^wxX$F3Jt6NrzLQtt1LZFI%o@K$hYiOflNHhHJ6ZCe^9dhDvmek%l zL6oLafcPN8p43TV)O zM?Q>t1Y3WAzRthjVBwb-@lT$)y`YpjwznAyWgoDf7Hyw+Qtk5wsDBF(!ie>;aoiyR z_;!}zN}R&3Mc7}8%`JVQKrAWdDcN4WO`J|g8ac`Jnmm17q8;vvL$(W&e=n(S_tYXB z*p1mN5R{3==1A)oyBbbpYqdDmHhB%}>Ga}H=4Os>7y!N~aSyufP()vjK0^|P$j9H? zwmz#MPA`K`Hh0REBS489y0DqN{WWNCE^ToHI?)eKZ|C$Sb~*?ALm9Q?gKDtiAwul| zt@$-o3u21Oh#17hKFLxBJCK%oM3>dM#-hIDcYRKYf^uxhdA79G zj0OGHTXinOIt|vwx?FJ~RVF4e`Hh%i-qL|!oO>CdorLv-kOJ!bus5363Z6$R;Kn7g zX$B*1f_B@DDflZlWcM(_@8o7t5h|EufmA^Ju6f%X%)9jCa|uVA4b`ep+%1;ixB#Kc z`?c;()_}JpmPZqpx0eWD0g|yH2^LnEA_>ofW!!~#duz?>38*&z*7z`4Q-H0R_c4R8 zMc6r9CF`LRJM9gog;bk^9#K5F5E=J%*ydxgy?pu0>lYL7a-SA1@Z~77_azI*5|}1| zw2)H|n9y&!Rroq?5M_yR_8HFzKd>+Zw8$AaL5|^&V?th4(5m)|EL90-Qhn`^SPdU} zexF*2thO_TaB~|E_Yail<5)%;SS`avkn6q&b-gD^Y2Cu~C32v&j(OMkP%8u&rL9dD zdIm!&bnV`1n5(3xBH=GRG?|0W8n`*z58*6zNC74oy*Zj7*!U$X=`X+(6BeAPr!tLm zpe?(M0UH38H?Wz_kqO0!@a&+9qF9`&O>6%LR9t?6R3uuFoVzK@!qSt|c)UMHy9{56Oet8-{&9uy`) z8imm0c&f`g5IArNnFHQY@9T#J4pc4pO9Hl zmR>Nvv#>oE>C_P!qYT`#o$#2xrk`dxK^OiT%Z$Mf+>EdIE&^LMqmt|*9hvV?5yz`i zrA*=lQf((QQ}Kh8hZt^Ka0lnpCGw+&@^2WY%) zfg-JrG)c0=@rvgiq~Rq06{=tk#pOoV0E2GcaeH^T{$O#E4*OaDdByQ|fcXl|l$3y{ zc(EZa6;!&qNC0?KxxV9N4{X&8Gr?5ow-b z8Z?k&@G4M2!>Aw@lH7W>8rH#&elobv$i}52mZuyDdAEmqE|vW-NNMd=W}>AQ+kC%c zf|#>=l$pujk@G>_8>AmuKCNaF>B_X0u~^sfR8r3kdY<7SF;prUucZIh5C5(4^+qoc z>0~qT9`lLds02D4^TvTVk;Hj882cSi3tP)p^>MV-5C6zw{Moyl+cz+YgvLSBMUtc7 z@(NK)`HZ6ku0uC@K?7;(kLIvpWHn<%EvosEsw=0}*bduvYlbt4;-@bM^Omxu%wjCt zixw1x1&mV4^-^6a$*8{k6c!PUXza)pLF}DrLR?X3y+4VnEO{5s@gIW7#&vLWtYrZ4 zM4y-|1KpR;U7IM2${r1d@=YI&G@}gq={VDuJ3Z4DsW(hI6J}n)a3fL&3YJlXttE{QDbJ>x8*_EmF%#E1;vI$>EtKPycLGBKcXxrbCtlII)z=$1GJn8G^ zkQrFJ?jMi&XIw>^qA5Lf=M^OgvYP>l@50*F!{nTehSJLc{>l^~tjz-tG#-5Z*pwA5 z`d`~95u~>-6=hiR63;k12m5^1j_OfFn^tV92Z?o;J|2;|TZogO(Fe5zRD%!>2{y=v z`*3?Ie_G%xbhW#6v*WCF;C4YrO$9Gg)c@WQevWd6S?w%AL{)UVg>t1KkJDBu?piM` zu>@^8r{z8lTO@|FXp``lXI$uz2vJvV zcD$BI9Fa2S<&Ww2d@FF>@BoduEDX6Z_wL?vkg)s}>htsjsLp)BKt<|606Bvq4*>z}SsB#P)YxtXal4sk{6-7yO*@D7-w zvhYF-Leblb0@T9@H6Hr^n@k^WW)H;E=c$&jdYML@P*@Z$XWv~=CjbrU8$@{GLTIg+ zLyB@nh7oSDh?T};iI_Z<^kd)9x6KH7f4w=Noq8R}aMOF`(lr_fZ}{J{+)qLiNHxN;ABzN#Nc_iddXV^M*x5$3^a0my)-Nn>pVFt z?>^;Giq#I2?gYEt>~c>wUgGTN{-u1Q<9aemD4V|XSj1*T&xuTK^TucG{mPsy`Qi;D zYM{OgTVBbbCSGu-Xd_EHLhW+khj4*uvELh8mFb#MQU0g%`6KR0gD6g)I=550J@)&& z1d%p0$PTb@P=0`0t zGw^DL3r&zD{M)XQwT*#Q=YhV~&V_VFJ!JmPlYrCu$wf6mXqUynVm?q7`hjh}+G@ch z>|Z&meLpyHf6~e$3qvM+M=HSTzKzfTrNJr=1Q#CI=1mhU7I5^Lmf8%SKRz{8h^4B# z7*3+3_2UpXy2bF|h~wDO6#%eJTIQ$w2k=86liU74r?N7rd-9#(DoXi4OF^A4K5C0~mucXua_ZUWaP| znceA#1BLSf2}g}ayk6fFQbU97%chH57>xawWvG0R|5O07HpWR6_hnb0dC*3?r(M$D zNEg?3Kd8~81z(T;(FxSI3lA+ivhY<1^~2c1bUsqG0Tvu3J=~c?vgoU4m91IXzmIa3OW9N#N8Cl!Hz(q6-nEf-s~04>~9ayA#Gd^Wcd@J4r> zZwf^)*XE9l#}Y%mw!I*k%dJBk+1swmqFL`)1j06<6~mW88M|D1j)H8cM@v3Ef@v$U zxX@k(m+x@v&K&Kx>2^3@7uIM#-*&oy8hOBwr+W=!8$8 zt~(Hvt>a`{bEk^28GxB{JI=#b*Y#4)WWcG>f$4D9bM4%03E4!^s4x8Qpqp}JF@hN& zM$Ej9zF*2d&K)ptlbn78h4RMqTTaapJaL-|=1%0cz46&Yxh+HB=zjsGmj%y|1d|2c z3Wiq@wEIJfQrLZA__+8d7}30{57}drc;3552)Amm1j~6~-GUJ9&^I9^%oQ025y)%g z-8ckJ8+5EfM>L&0<804(n_dG28tkuj{(^h3zYbNu{zXx1oHWRUNsQ_V^l=+ei)OEK zi6BEq{%#r{>9Xk~frG$THVbb7jiZb8M&b&QkBm%{$_M%0=BW?YV34Utg8lP?f%||K z*e@dRUomyJxvJmUylCrD@&G)AW#yOsysXUf87TXH9LVYsXCKf`4mpc*WpF4}Rpl&~ zx5|oDQj!?DL3(O5H(!f8=P6oYgFA0!MY$N}Ox?jp#78d_`{3HYwz;iuDZRi z>3{$b;bl35;3`sJt}WpyOUjNDSa7-;bBiZNx`R~C`CAZITa=Xh`M~8|)pL+li99?j zmq{JGE=jOWT5Rrl(I{1fLH1_4DA2zQll+jHxXnl(KN7>sIT54kX;L=~V=+-WP@m2x6Jb@>|VnBuQ__(RS`6Yk}pj0lAf1UV^uUXneK~-LVSOc4;i~*w{_KdEXb@5~`rq zzTfGA=DmJ14b9XhicAl=AmJz+{Nbu+zNIZ$MetbIIUSLL%bx3Vpa9jC=H z5k35xZwWJ9$v{8ew?+2c(g5HB@SFZ{(FMj6==n$Smm))vxs<(1H=7$|e9;_oosTlHFQDgUx2cCH{nPLF z2{>W8 zlIcM4w+MIsKim3&d$fkk7q=|CfXxmxC#;@0gIQw$KS030`7EX@Uf<+nL5$h<^Cs9Y zNS5`O6Jr_Pfl#p_w>Q^Pf8<1T{iXB|PzVcO@+@WOXsn%%5buIv@H2Cx+O*>n;Gr3q z!3lJvPHWz~ZS_(>35|RM@Q9}SVkC3qk=~>T7}`FAsga*rQhAMVoCxGmX>r$aMn7O1 zWhPBv;e}5)Q@ZV(R4Y7#Z8dL+G6xSrDcgA6zabENp=dcauzbi7BS6-@31`pCDG@P! z+s(^YYvhz+>Tbrm6$>_r;}bJ|rTsqLSS=lFqeAyKuzoogOnr6a#l^9oWl*=OhUV7RMPOTvAMF^sH$!BQRN|BTCGVG)z z5dgMMssR5w4eYeLJ|c|H0`#{fKB^!eTMu_Ds5ZIt#g4Z5U1&`i(@dllFdR;Qm3DeL zyWu~jNax3=hok6k#57x9>F-Bmwc{+pjqLu{7x<>(YO`Fat4bNR|2nhA)J*Yc+I#(n z`-2dokcyguu6p?ww7)hfFaU+2rHnJa&mvd7H*bnXbVd?SIezOo3CI76CSFj23L{cd zb|b#g7Q%{0{Is8r26wGUHB)6r#vg5bzR9Smxb1L1wten6OFBuN+zLltuY4x zOzh2rXJ{~#)`EVbj{JGQdy|33=!Qn{zA;+^<7Chuo%s@!&0g*(YsBNExbKu5nzI#_ zcLUSI@P;l;UbDk`$mFIhJn`~ZhU3C*!S-kKYNg7Dxl@m6d>qr4SU^T5QL>5h!@cKk zqJdHgcJ}4hDUyBgt1*G(q|FDP+8w|* z8frA{EaC2vCAY@SbpXAy08y>O4xk5mqtxBzE3eVM1k6PdS%mS zsMYoD3N6c;YV=+^#H}S5L~M+xw2yCdlt6mLF;y=?5Hz?l51j57F#a$Zg&LM?ziq20 z2+Qf2WR#=(ajgI&VgqWfdp?w7QBX3l%&XXq;X_#BQZenF3Zp5l_Y{(s9()k(XCcf?Uq5KfDQt|@}DSRR-dkbjhx-HjFPTe zZzvd8OiKg2b%V~So2!ysK0@!WymvFxPBv}`e(dWs>4q4Wd&M|N}Z( zv(SDND}2d`0uQ7H^u{7aKFdxT5Mw}~P~o2cGA82;i6^;bMhn4fFPnl6N+0}-=q_x2 zFd`o80s^=Rx+wtu?{!!Y{31f1T_E>-^4^(3W|2 z!;7&4W76+|wT20Syw3nLx^&K;WD%U<1qpI!1sJq~{%@y#6P!2MX-SKi-uNYmt5OD9uP)y?$o8>|GcAP+t1MRl-h zc@W&--(5l#AYQSD)3LX`u_p$!yZXO&sY1?wbP;0A80Z})Z0RX>(1ahTT_=dUsQE>e zF8-0ii7b5=>nLy;xz7|Od=gn?7c8eEr!1L85Tt^k^mH7}ZccNPIO!n$+)qAJ5-<&= zG%r7UwtKBu!q&~`X$k9;!IBnI$a4Bxi3M_C)JCR4oYWCL^t{h+^KIb7;5xu%!#>pMRyT1BSN`WU6xR}7L1)vNACArnvAmM=r+Su_O+ z^No#zQ`PCll|C#61kQ?SLB>M3d2s#=k!yWUCFmZ?n(|!24ABT+yX3-!+1-6pjVS|i zWLw*KV1L423_G*V0)8ZyPy@{9>B*=d=88+ z0ExmJQ0+uT_V?(imsr{yP2c*jIaBE~j@>;pe!D}_G_)RcC}-~Z^t{ZZDW!?n4F~XZ zQDwH(fBUI=JYkaM>OY=~kM*dJuo+-^Qf#}Dq1}nF;**K$D1BATM|M=n=;x#AIsgt- z6jttEy%5WeU7x0f8O{UV#}Tx#teszH!^Dx2@dSry!D@yx&nH(%Z!?Sk2tn^M@oJ+5 zZ5(Y1d7^dksM2r8)zZ#}yzXcoq;l0sh7__==-yx>M_Z~%L4h%(2EP|@^pj|XwF?<7 zmoSz^7ZDu0J%Bnk@2E2o?M|!O$%=I{Tto53Wb_bOUe@bMsRx$sH&v{+Cz%31$z4yC z#&v$))5-rs>3DD9dKl}{JL;hcDrkxRn&QmwmOR51&b}9=Jk^0&fY!V!0HCPi?etC@ zH4KmNv_O*?k<0fBqXH`50DzT)Xc{m)>se51Fp^2F$9dko56AE}zl>UiFITV~SV0V| zu8?)Y1o*+sa17Ge20D&(iJFYy38Y$zPi1_@Vj8#jj36^*#uq;>z8r#*aZ?ak-mTr7x`~ zSFgeaKff{5a{drtNVh66fr>&dXO7W;mAhsa-u&8WxN_Y;v1yHk+Pa5vlS)|eq)Efs zjdQqeDg&3$^OKasMOOq+Xtwqm6SQ=Lmz8Xkg!N~+;%c$Y9nzgSI1 z_@1n_TWHEK22N%++J?hOo%Mrg%wD6MoDUH8QCG@byG!SOo4ap34+V=5Nha=l@lj_p z?sbV8a&P5vcBQOIY1>e~Wxe>(?T2Yc%jtkzo&^PWS1b260f2 z@cLNvJIDSA@Z#p&uG+GKPk<*Hu(qsgqy{^S_qtIH7n@k~ayzHCmnc)U=Bp)WVfu+{ z^SgQq(VOzIcuHJFPZVLY^y$9_7^}7yB%R$`S1yvUS-`T|R>oY=^CpIR(bi#S$Yjm& ztEMz&?UqbNAV6&2$()ufGphGaAfnZk)o||_&7tZ-Z}2eDAraL}Sn~6f0H)bPnbzaPm*&+JFlc@C+kA+~coG1pfGxk7h~EHo@p6O;$TKOBo5ZI!M*L z3L@%d4BgMsjBtuIX%=wE&SR>>o({x^kl%J`)q#H+q{i(qg$p?pTU;s!S?ABNF2A*ezd3(vIH-eXFjlab%M6X{-{jJ*yE(_bz+}>WT=%xuB#LBi zm%_Z@BA{hTjXRZxX>0xXbsDSL^cgzXM$L!_7~OLyd^cuC<4tLzlMf&90hJ#D1WT5%ml4 z8p$pv;^?n?G77d%I~S-@ulQ!GQY!)5$Cds7xlhW?^yz|9gtnlP-HCBlR&;)QWk_eP@L zOpSoU9Wl@cX9Gst5l=j*Ra9sVypJVK)^BzvX5vou6#NZD zdNp{tk;+_-aAo8(DNq~%(c|AP1=vyUd8ZY!0!tXl_TN9065D09G7|VfQ=ZJ9pMX(w z`m1NegK{i6K&(-v3zc9XWznrCUkx<(3_zZYGC&FGxi)|0vJ`w7&uOsan+XO!g%nNYDbLPFmjWnoGN)n6{i;LH!qYl98jd^;}v9k)ri<8MII^46ch1XwG@r zfPxUn^EzSC^S|?Kh)W0PjpyEfUbbdg&adrV+)pv9d(b(nYpE-BhI;3>cxp5$0avuH%gE>IE7{`H{Gr1;LCTa| z*M6|0!t*+dj2BhR+s%O=AZ-4c6>i5&Lg?{T#YI41Z9pivB$cHB@7h_&!0DBNhs_Kl zqO-$zuTD@pIhU5zJI`($iX8W$Z3fJCS9IGZlX|jwTixAZu$63iKkVL(X`yXE96CKIbp+dRv+MmoX#Dyp*ORsw>L~NuywiDt=sr<+E z)BHFo)g)-c`>3&5(>`MzyABHSvk1hOR=HJen#yAS9Dx+)B2NKJ@tY2OjN%pDc{ADV zsXgKaRvt*XqbCB4xR`6BVHR%N^X(6!rdilt7AtMtumVCw%PPq<#Q67ReuwWIyKi&1 zuuwG}!h}fuvO4b<-F*QnJWL=1#ThW%D#0^ZF1gtjfGxVf6Yp%EHY= z_0}dj;bgT@Io~{HlZ5_P0Q5G<@qMZPy){(>5zT~%@@`&~xbOJw21jPB8hw2R?8!Vs zD}Gx0ls{`7?1sYR`vX%HBZ5M)`Ie=};d1=u%JeG{@I@-kcI%AgyTpiWqboFG8=);n zU_CmFpJ4c))!L|r*JOly4?@zRdtiYkn&fnxjP3p0TdSLHI=E_N-ysVmxmZe1TVZFi zq5ra%UE-vQl+ZMKwuCQFD&QXx!+9@8 zb|mmNN(dMerZsK$r}FM*WG@9MLq@-PiZdP<3AKL8Y4j`C>c`Je*#|gYH8b;~e zxyn|<362Fw0?#vlz8G!pTzCk5t~M*!8|E4W(-7YVWzl&eQH8jzX_m5r0xx{+#LZ8r zcsQfpe`8z;tk?D^RY)+BziWf@t+9GgiE_N_hn%{6t^l3Vu-_YUkY!NMfh9a#)qlG( zHBgyTs0nrs&{1eyzno)=7Tf(0>xgx1g&wc6eqwHms=!sIt!$sU6qvHE|d>evBh2~ue-LD*g| zSq~OC?1CS-;deIu2v7(vVze>J5+UxPN*4j z3L>o-e298Kv4?ZrS$e5dDp(r5pYuW@vX>C-bxz+17j<5$5}?6`HdID*T`*NV9Cajg zi}Rr*yVn4)xiIt_bxXB2d#eq$U>|_pw7K8HJ5wu-*evki;e5LOuX;COm7ltd%>AXW zjDAoF4RWF+y<&Kt_@46C7eOVwn$$xQMVcvP&(j!`+vG)zlh+}Ok3t!##=Jc{Z-aU4v z+60jxW*I#qt;;ACnIAicVI-RIi@Cg`n4LYyt0IO|Q5`d7kthu7vM%aWUb?7PwA=|^ zua97hQ5FvBoPau67t`G@3z-Den^KpquTCQ$eH366Y=LFi_=cC)uUF+Hbpd!|3%63b zY7UTf;50}fu>#3**9QPfJ6Y0wd8b3k-Mth#6DG|D8s;SI9EuiN{!>dYhTyRq?o5x7 z+~9>@^JweH_!2mf)>4*l21U7Ny#X!)Q&}(6zt7|tTGlRDlb*D0MDmep=&<(U$NfkwwLbv zfG?nHcR|>+m1Y!E*)QP^g#?X~-;%pW<J{41-4;B}AWF1N{<&TPQzvY8{w@i<-5 z=RbX2K~-Rq=i&IER@iH`-|B98W$ z*oUVc8pibRm7#WlJ%i|WN^owUc#^=f*2_>AHp3MMdoRi6s=d_w+VHQlw-R&VjJ z)f39|CD2K}LHetZsq)OmQ`#>-z>n4*5LS#8BEVY(+KM(lu*5E%sSc<cLB6ADg%g&&I!|dSGLVo>h}x&8xKGcK!b|jkjxnpAYb@ zKE`sF8NxGk-DCsAt*{TrtfuhU19d-`I6~ zE7e8?&#*5hR3MSfU<;{Dvk zjr3=6xa22%Z6K|AfhROtBri&%rY}rQ-P%k+o*S{UKl~scs(sAnZ*C*k+1pez0)={C z9a3 z#l{x;i~HwJH_@C-;Q{iL9&y#Q(|fJc?!WrKnH}y2Cln{1OE?nBTVHEl^qgqB9$rhE(waLd?xDaA59KnMsl5cQ9d=TsaS+B3Y;$gsuz*QDUcc4Hn`XphrU;ags=#C=vq^ZQbDm|s zCGZDsQRyO`UIO|&_`~#|K2{6cCekHw2LrlD*HGv;4F?vIoZ(0Kd_#f;Dr$D8&op*W zua~~xnIk~PHwT(5^k{nX}}O>hlnq`$7^0XQpaSZR=jDXu-lhS~toB?mzCzPsD>w2~M+$^$hm zqY(a`2Gv=>Z`6(WV16xh>Ge?oKoHW};T?y=mYN%NxVS!na59ouQP>l|yXEp5+uk1o zXv<)|87$dxJ(YlCTA8c85@g_IE8l|N5<+Vm}N&^u_3E#VxWUQ1xRxX+tarhDj}? zp~py$kEpbWzx$jesK@2G9tZ^3fEYflIppEVp&;CiJJ1Q=iiR0M#@JczsAK%sG{htY zMYS^YEx4yadNfu}KFdr8kDNrpl~{^i&Z*$8c&zg5hmSLwTDY$!@HLL((GdU#HgB~{ z><@>fia<;w>)s00W%fz9K9OfV{9U?O$zp;YA168kGz`f}|{yZ6qi`NphwdtnYX; z1pOgrCAq`~97(z#l2jXy)#`bhM8qf8f`2znkQ;{)48*#Q!`9H71IzzF9{5+lZw{Td zUSEa(GXlTJ|Ec4eohounhWDu zB2NYi_e8GA*6mFj3%|uw)r!Cm-6{F>zSxtJ2=x20tt;kr$^s zi zEE^k*{RROpo0n~%I>P8HDqB3Tjq{egLPs$t-?g8o+Pmhw_`4BQFG;Xqk)q>-W$GO- z7TPD{zt|Dnfp@?ivzMOZR$B?>rFgWu);v1?Tqtu?`S}t`v2-SS=xr_4J$tqI{~$>{ zlxEO;x=~mb)$_*d^(8}lJ~$(iok?KbbM<%NNF8K>obJ9e!hbmzvV13iV) zFVkjI#nidc3ZPc3fKLbYq!HQ0GowH)>}5u-UQS^3Yq6p{iXn z;P}O-!d`CHkm}C`bo}tz_V(s=ET7wcL#TT5r(Q#>b@6m^Oqmu)vXf0DQ&3cs18=m@-%-RVC}ZKNNj%R9~!?0y^k!!@8cP zYP#K*Fn1{xJczE`@Ig}5X;*;dG=`yfT?!SG$VuAh;nWoURGeA0SU6OR@9z*qI|lkM$mNaIZttN&|8eYJo$`FX6A zqr6+`au5<-)<6RwHE&DG>2KotnYNHM z;ctbo!U4C*T2(~<5Ue3cJznzd?ja8;U8;jDsPZ{o>&HeqPhllCKs~{`lne|8O%^+fd@^nnQIS>uM$(Ah_U z>>-8Ghgy}bZJ*@lb27!H`RF*o_M8XY9+U@r&i~xT@6z8M_zy=xgZ)^X(? z^OBgCLc+v0e?CCML`?qeqct=5a=&?Uk-=Yq}$w;P!7EEb~5#BMsm!W#T zpV}71)JIaVM`SS6b??5{9B{R{)9-Wh309k8FmVx@o57~}^JIuinA&E7gMs~h!!{pS z^9^#6O7)_f4B=ouh(v8M61v;Bf?hc7&=@8(LsZ9n3HQgTfy4%_PJLAA1q~4+gxue$ z_TAMVuB;B)=#_MQ!omYnTmV{VLO39ZP14!S zKm~?6$#Y(S-+QdGBvK=^Tj^2L>z*L=U%zJtXQ?6O#xpA>cn3%T8Pbj_M8s3`#>?P>Co`tJt48+@Fo(==YKV>1bHKk9~NBVMd;~ zAxkHDfC(>Q7n-61#+!9c}X;N zg$>GZF;mNvDQhHZvrs4xUL6g*4HzC=(~G`bQ)W%V7BcwQr5Uo2bMzC4f8n-0Tz;aN z>;*Ua)HbqHDXYT-04>mcQM50D)v&RWe`zs*6saze1lAay_Oo{)QrV(>OEplW9TFnj?lu2CI1()w7hvGbl`EB#& zABWkwL|V`$v6PH6sZ1(+RO;L+U;+CeymCjs6VW}cORdjCi`R_v^&R{`N<}Lg4^F#} zK#vAK{-x%8%~#QTgI=W$Vin2BNI<6p($gQrJPhtk0$>qltx^d^RK ziHJ)_cSc*euy|^flDGy2v<*T)k8rV;k)M(uUz&J9&{MpFzalB|72>gFx?jwAa&aE_ z)pwqqS~NZr@7TQ`oGbbR6kI^sT^c2}X%BbbneCEmC4sPhEZ>Y-yds&H-Qwk8l?=sr z7(oTJwD+4?(AX5IpAplHJ7FsH6p@M5VQln&+QXlJ;s(~$H~J)j4i5mcXqgZ0h_os=Mmt0MfVTNBnP&$;cH8n)-X2^eNexu!f z-h$c+t6GAt=@y(W(`QgO_*p~42!d6h>bCuNUKLGseF%@+ko0D|jbIfELoM9os!ob#TsNt+{wbrqj!*1ks)67}iw7H*GA8BcJ3J#J6|L%5!`D2W#5*jYv z&6RHJP)?l>@K-zz@nCcVX?&PCG9N{bvL-siX0e2ew0X*20b{CWi^UcjA)jgu8uAnK z|MEQ*6o6R5Qcd7O%^UvulQv-2w{Z!Tr7v~C)m-y_L`r&76_IlTxZzoQ-$bxCtYr8D zaTZ~3{s~%~#8)-xTiSOZ2HWiohwbJJdkU}of#?@>F0qy~g?)?3TO4Z%ZdZ^P}kNvL?# z*o?*#nF=rM^f6B&^Uvsjw9+)rv)9X?Q|RifRuP|nD^zV|#6}Gu9#DI%kLSbGbE)t> zs%{NFhU$qCB}GY~zf~0sT2f8s*3}eLDFY0$H<)O5&bFYcqY8lY(dX&SZ+U2QaCddh zhJjS9!xfmT7r%Mp_qi+@GCBFl= z30vu%?)M^~GtaVYcI@l#nwuSiCHC(o(-V6}VFk%73RGAR{W2+&)2dvwo8&&G#-s}7 zyU4_;;i>y&Ja2Q6F=0+j>%~R!$_xSteDesU255-iG$rk^iQ)a@^;oF#<(z%MJpz_} z^nPOhk4&to$jL~T%_cm~%u%FdlSfgW5uRi*Pn=u3%>?=I*>0d$>U8n5^REkito4k__E*(@F6piFT z71=a)4DUcPno=i@7xnqR%+gsXbINF87s>a~y=YXDQ_WKS z6!lzf=Yb*0okQJIOH)~OpQmEF7UxITFxB|Rna43LN1 zOzL;dxxtI0f|!PAZxn`l{Rir&JzEao2Y*Y!wl>7Zf_8Y2R2D!oi|zc5ls0tRXf|%O zz-qV$Uy(aT1=|-4Dun+`lpID*&2|6HYmy16hGJg-q)2R6_AnLRj!y9I?z`2Z1zWp_F%2O+IGb_w!RVRl_N$;~Z$Z zv~jF})1fJ;mx45U&kRkjvuE@3`6$_atVTKfglhXgd!m1IM(qiw>B=xyCjn=FU>&sC z=cP_r_G`bU+#bv(%QeBMCoZ~%gVmeZ?=`b3%l5*NN6&9&=vNiI;f&~B-BF`g5n`C5 z-C=O!6i0ToCey!#6C-CZ$g{1fzgT?RiTlJ6X6NFwe0(4EY&k;KuX+MMIeoW%=%9W`}GapXoI8;e3NUW~19-ALg@ z+L9WORl{ap^?(OH_vQM+qq=Q!c^4|0t%Jw)EdgU@5Vgv@D2+LDnwp&tk0|G4I6YtF zK6=)y%*`#0r<@sv*IOJ1t{uG;>gm;7uB*XH_tFdLKRfK+td*gvOm%*T)ho=eu}eMk z#JM%PLZ2wArE znqLCF1C)du#&;RR=Y{A>9yO&2&wX?4Dr;t&eCs9=$c|+GA!|`(9fs0^mm*#N-hAnT zc||NIleWG@m|?J3+eL+!WY$b<2?o?mexc48Vte_@e%EYpQFA%NS}If|_wC)K7acS& z@+pLByvE|2im(g#hK8$E$Mm(l@Kk^+?=wa2Rt!qYcZ)ey3JshKtWc#`^m_o={T{ZU zR`QX+F5h{38};uSigdtUWD2ba;R*er>Kb}+gO4G|8I%Vr zhq+;%3P<}+jqZ~+@LRK6{ozX7kUTOfc=ujZv5#)DDfFJ^;(@Ls3N{Gwm-;A~yekP{ ztP&Xgl!~l4OYyPJCm`Nszbk|qg~|b-*!3F9=#;Ogz{c^hQ;eNm>`gHY3@y_uZ@`;w z-SbB~Vf%Nnn5hiR_Ov|~lZSvQ()Y|F0nfAXnR_|JDU^#w@7 z&pjR4-Yqyk+^eB+!3lpVBVwH&3K^h>Z;e5?xChL6(v-^B=19hJ!xH$D20n9fSr?I@r$0A~1!~Bsdac(f zS$6+5krvvFKGW;Wr^5;Er^Wf|_Eg-+*rSZLa^J!w9RNno0mUkW3e+HLhqR)A`i}=y zk}*c}+VzQV$DF707nY*qS_G`K?)w<|i~M)5q?;V}>id0Vh6 zf^+1{h_=lx8Z&u7=0$4+PU|}rSD*lNs69Id^a+~FQGe-Y<%vL3I0cREgTI@h<&-aG+A1N@%Fgn#LfW#+$)DP>#}13W+ED6{e=TGd z)e%jG54BY6k=WTrDtrRw6Z@TB?90+t+8(p76u~5v%tljE;lOBEOff)`TI)E$G~LJA z&Td9p(vou1#VkKSsmlpfLTqnlIlq1;fspSwU9DJ>kE0rDO~ zlG;^dIJhmq?08S;^w#v@pVlqggvUM5(ajE7Xyz#>8CVKDVxO;dv%V`GPLrGhAf!2# znfLj{H;vCo%FzJslUG=t>M6FarB43Zlh%4WMQbEX^u5b<$(?i!3Js2p0J%bXxqs zM5gQ=eY~gs`nNaO>&JCMHklY|od}GFbvo$2ETNZ$95$^;^qsl2LOUiW3wJ_ zmMy6D4|?v0UQJ^|Dey$ZD8i{TH^!35C@afWD;RBG|9zCs|4>|rzc?0|z@t^3i+4a& zL#uA@s$U49x7;C(+GFjx;5I7J#?R!`m~0U2`CweRg|p}wHv=Rnj&%!?t)#a_8{<%A zc4C8og9T~Y=HWAu4&2<*&wrGQUmO(Ca@*nGRL(d*P_A2xDGxtGdu45{u zq={Tk4f7U$23=GCBvo@a9jzK5)08;q?DP{9 z4#@<6%l$?+-c|T;@(`(Nh@05$coA3=E=6gzj_GI>N6cXho5xsDc_a4(N9-sI&KUW# z)-a#m?y0ohRU}PFp#WKtO~+fDin|s1g2s+S$2nEPIUeBeYrv{#@PnnwLcQ5GH=mHC z!Q-Z-!sqz$8Zc>gFCvlKQ-$Kzjq+tL`uKu%$v%m8!8)owTQ(|qUk0ERO_owgo(MVL z)TSxMT{=|+O<~_xaEn!I4#G7s!~DK^;l`Wk5l~R*apMkD1B@xAzrE-E`#4yYgL9Va z4`}9`kxo{?P%lNha805*MxC4rnVn1F9$d}stqnF=tl}D0o#3E$zy~c;$qI6ad%L7O z?10Fy2Rd5pTWdpB2z<@*vKr8zdmOk-;-J(V!@e2~v?q)AaDGuGV!;t~DgQF(X$OI+ zUZYuiF#Z5c)QvN@rf1OcDV$CjY(sB_aYrb3b8dC-Y|EJ#-|v8Fk!4r4xAdcBi?oEM z>LkdbTOoBngG#7r5+GD4T_1_aLN(#1&o3@;L7bvH3Y)|-Y#9K5drwja{zqTYE;a6_eof0wG||BW6xp9zIR0et}>_ z#z!CHYvT6au*Oz$J`7G+9_yu2#ur1%07 zQXVynxvjY8cmjWO*rHdQ8*<4ngdTx1wjlnj7VaogMo>>bfr=9?Z+Tsiv2tuU5^tw- z1117w4rb9*u`*RurLv3C&rVlyVDqRg{^1HYOu-( zbb^i6_J?+HA%B&K#62T`5l-+ws$gFf^2u;jJ)|4leY420!11Btyw+y8WCAM9mySHx z;}me12HO``aP_A)GD`Pt@iiOP4q{Bcw-RNn+t^GR0Z7=k?P=WHO^A$mOKZ58@s?_; z$DJY(Bl(DhzBa4(;~9o3uk)Kh%-9>usy7*x3QZs$C*>@L)gyb&!QOl(V7L7TlwO$> zJ$E3noloT$EUNymbzgqM5l*ATW*hqN%DUD~-2CA;j;d5UZ{Tpvn7X>Ri2IP;4`op8 zrft#f$A>7t{rs=m_D8O|En%GLx(S!GVq%lH@y;K;$_U+fAN}o>!43!Gake6rtX^4E z;tuiy)mvpiUgTfL-D{BTH~{A&4+=J*!Ed53*zPFm`ckhwGkF@E0z;0~iOZlbD^d02 zS|pkfP0aHi2;0;LiY7(YI|qk#%OzIuSdSU!EcLxk(AiU@vcNZ2jx|ZdaQA!k5p9C+e_`Y1*a~JM^vzTizc&o@e>uBlqsqy^<~S>XjZs=J#L>De+<{tBresh^Zf0_(Eyg-`Z1 z>mEc*$h;3c#Tw;d=zvfB)RBrl^El2-!)w8n8amg9?arqz*?R5E2ZD&v9Yfe<`w@Fhbe$(M;tNk5f0LaaQ7PwV6 zIq+$wgfw)+t$=|6@DE-Xk9*2NQ@n|3<18Z=Ruvb4;P_ir{97TQiX8tUyF#L^ zpzdTXKP#491>xfD&Y9G66E7U6T}h?2`BF)0tkol+@W+Y@7~q0y%A7MoUE5W;7j& zAWJmnZSM+78=XzRB&OVtbF-iTz_xSCS7w}e3eWnQAyowR+XS^3b42LBq?CCvd8=(9 zc*Pl(zS;kt@zV)C8^IiQw@sBe-c-lCeylFi<5N@AG9*V~;neXzzWLQ0 zmEQ3n8^IL4cYLUIAU(^=)O8-=6kN0q!`s$JDLxi3>SVuZ0PXrd0>41ko>d8X=WEaj zh!CmKy8}+=?V*haq3}!hRJI>TVDxB&Q#YJL&tMc&-HnnC0Q;>Z$H=)9pGI(#$O*#N zObg%fq^CbkJmh%@emP1pMHo6fOszf2-(eSxj^3(e@zbQ8Hh1Yq+Q!G+kJy!?Vvi{( zt>gZbvCPk@O%Q`rUnYTEKi%%C?|FRl3v_rDapG%nhZkKer!H)z6g8y1P+U%c74!L|dcvHLvRO7E&UZc!Z*w zhK*Jm#$4=^7{oHr?6!8IiVmu&<%}kDNqi@Tgu;8osu2+FhW2a`b8=7O8dSN6ZobO0 z?(h<|ngWD=SnnvYZQQ3%FCW07VN))RayJYkzL_pt>n73}yjoNP?%zxGWyUtmYXNs0 zx~=Sj!0ptQK#J6cJw`VA~~kDqRYQ{BE$;D~7t(&#oD2x}wYctYwH#w`eTO`v%H3wYyd#ckao zQi3*;;53$S`C-l#vX(~j)@lBn5B%DInzoUD|_2EU#c7#e&qR1vBQ7E49~YbF%7PZ-}GP_XLStaYGeoNcyn2UG@1fjYl`T+!OsN4{qh_VpxE43)SvH&wCNYZ-9|9 z;*XCMyT(bKYC#crv}W_R*1vw@6vN17PpM#axZ;UVE&Cm5-Jg+lo1*qn`DILC@2RN| zvvh3gYdjfEYK|jRJR)JnO+37U2=>!R36SHlpoWN_*Ts=_3cXtcgI`K*nNI=qB?P}I z^LC1FP^(?fkUn6loYV$V-N`%vjO815f2WXnV2Zw*)!&QOg*Ft50Hh*q_t<32zg)?bo<^iz=CYWW5m?+=Q+zNnb?;lo<|I`Ozws)$${@cTnWheaL!_MU%9rwdS(nh1XDq&q6X}$K;mZg;ex;N++ zl8OY8(F262;5L-eJt3K}ZNIf-$hz{@xZh|CjjSLj!VSO;Co3U?z*3T0#E!Z;( zTJrYX;a`Tyto$>=^>kTP5ZBEvJWQVxq?zbjhYQeWoRq57USK~< zJDKuuZnc3sT~f{B!-)k26~i3}5rc-zpS4k^8H2^vV}@~4KGi+goLMtQNIJq(qo;U& z@hmuvaS{Ghz1{oyzS|rrTq0%~3!u}NEA$Ns39TaRYGq2A^j<5lHcc{mWk&0S&>E(PE-j@e0pl)TAq(-o~=1n;%{prD20wH;q#>Guf6heAF5R~}k%`Vx{6cg7dyt3kj z-s`|Xi1~2Wz)2Z2JdTY4d6h|fXxRVH2J6suJ!?!TKAuI*F@XuSSR1u|PfD|@>Y%*d z*UiVk-Ull5qlFpAtO1tK24(buE z)f3EBV&uHV(ccfeYEFTR_1ib5J4lJ_`dgA!nLPD4xOrh&qJI}AQiTxG3gvfbIJEh8 zYy1LMX_JA#OR%TduV^7m4na}j{KYM5nsh%|Lf595#AzgsRu%iQU}gW$)q>6@$)a!Z zlX`n5#+Dpln?wIF>he~t>9H=W0w85@W92jCZMT|ZJa;!llOt7hC45Sd@6x=5R!|gu zEjy)icRUCiyYD{8Ml4>##V!-BBq8EMB%+U?u!jHCnAADF z0+{2E${}3Ao*r}T;O0D(G@;KN=EPg;w43z`W18ZM4*-v|S|`^~r~gQi8-MfHsP=-j zMJE@><0(;Oei_;bv~H>GY3lhNI9RA;Q+3tP1W-&-E}z;?7srA5P-M^_fC#3Ud+~N6 zNu!`e-H&oyCNy(BxVq|Y;w|d_icgeXN_W(mD?0q3DCACTlESpG*Ium@8d3{w(A-zNplmJk=N67j$8~myuuPSt#8?Q8#|l)P8{B!B?KHO+F zpw9a9Vvv9)521mSD-ixXM=;2|NPRYmj<{h=}o;UtKRsl#RnsVWh9~R*pBueMO~{Ud+~IDQa{1rN&^;KJCMvm zEN~GO@DxwnxQ9x@i5X~o0DVMv01(MpDDq|L-w04QCoev_#^OiYH%rR_NRw6S^F0M{ zuYj!L9PkY+NmWo?h^kT^nC0W?ufHOdr{N%O;Y8$W{E-v{P|n*;s_;x7vZxoNJmN8} z{;7(77X_CoPTn46WlU&SHxLSLuCQ-pYL^fI+r`bV<~u0-8&Q=lorR$oz@g@sB; zxXB2mwWw5xYnwFZzrBB2SO~ww3SY*)#46zo*Yim~PdB7+vVwr3eA_*_O7RTHMaM9D*W@U$J^7Kx{H_mfrjq9#zvgfnHIS6S z?uGYPu#A#xzlB#Up{?oiF_6BFm*TY$s~@tyI+gfXKva1>s+DuI+C@Ct*Ge&VUp?|{ zg^>sV^$?fK$j-cw1q;Lu@R>Q?#a1}qJHVEJw;p1f8z z|E7+3!}nDdOHXTR9Mj7ZPt-8UpMD-OiZI`tQ0MzB`6aU^Y8=oEqPG}`6pvVJByOc0 zrrwwSUb-4Dw}NZR=m+o6b^1*+DE6eULjo{>pB2bR{8r$ax~l$50Bhuggya*DQB$K- z&dgwS=_87@M4PyW=0^ob$S%FN5)GZgpEZhl?w`24uo?4Pc3dnM#S$z+Pf{1)*ek)N z0OuLqDR%$BitQ8xPFKBfr6-oX&pMAt`A`PUlrGB=S@^hkPQHvcGAl-BiEP>A0Ve$>^hR{Ob&H=J z5A}k05Zd+qr@rT3hnN>l52vQ$LQ{PsQvga!6hmuQTBf8 z#Z;3sI>`XH-8&Ta3{l(rue>Gi_*`Ek`A$x*I-lhh&B!_`j#{m*x#>8cFwKHEisv=- z(gt2B4VtTdCY4*q(xJ_Kaz$qb03ZfI`W6oO}jVRTda2SlAoA;JgBytdXHKB zJLLS=-)6-MTxsf)6g_!dQ&%Mp6hdMmMxU^SOXTUSc;z328@y`gJ(t`6>SgAnZEc8) zd<=l-&d55%(o2akaec=pPnV{@QCQj`0SDNy|1m~b#D&)N<7W2`6fe8#l3!^sDs&!E z?~pJiVis8X4tG1u&q7xL(FfdFES3$`nfT~F*N&&h5O*3^u@WUE>I0Ajw82dJQ7DOC z=X~%^Iuqw)?%K^I&WNJ|QBVrPdK`&yOTQz!0%G6*Zhn98g4A%R$HOvfv8%oR&P5&39c$v*0q zd9-K(^2=Hoy8=}n4piY6)O~Czg~=ZaeI|7L&pt1W`EqVZ&*B;C4Bv-me(C+rk+5ey zGgS=o@ky{^al&m(?eTAO%;HF%oTnG1Yn!x0QOaW+y-ZO}K|M#TMQGI~+&l)Y=siA# zIB(&j1L|A##nq@T2{~DH-u2Hq95@*HyE%z+BYHN%L-SZr5=7Rmi**nI=_$DSofNzU zTuiWk5!)Pj6B+>a!FMHQI>cM$okJP@wWXFM^@Wxv$Co9p%H4Z35Ba$+Ahj3!P$?Kx zNc_{5j!crj$u{cz(yjLThNve6rBAtf%q&i}0?SGe80sSgY%$`8Dpq*Oh*Fl^ZEeNY z-^Is?k)?((LiN_wQ6np`vU!k{lY}giB&afbp$uUmYj2%`f1V-*NF}i?dq=XBsxTkm zec_~Za=5YTPe8YOC6P_xH!06YM4k!&Lk@q<#TQDpM;rqerlKc9j}=Iz_y+KE9t4>V zcEgS=i4M0R==jUJJO>=_dv4+P_obKI$y z@D(XcvsYInJL=ALRR>4I0U~rNXg0uDfgZ5;Fu!g-{kLu0?WW%&#Y~gkw^>FQjgjR#aN2RTL|J=zdojlFG5FLIbV3`t(QMS)ebh5TR7z zxa`4jq^(K6yzW6?9 z`3tQpz{N23ttc`_=XO3{UdpMMbF6X5Z00ZP;&P2ivhAW@kge`x@C@6&jKOwd&V50k z?CiE>Xh2^k$mK^~qElR8u|HWyH6F75F}6FtM03hN;`RNf^HsIH=rmlL4uVEwd%(9K zS4{S1BENQXdlYVln~Ua#^#c=7{FSdMvH||O3>>*6q&^Lj)Wo?3I_T_uHAM#TU$gA= z2{&n9RkWsK7;j5cd79xs$Sm+3o+usnjB^r*j)S#YiUpl4v8_tMtPq9)YfHDTtNvrP zwIKcwG*P5Q8Vn;J4Ey^^A`3F=F{f)d#5_0shS08XQj`G^&x7zt-ebW-f6X)R&ESrL zSVuD5e*UrxEL%Vd9i2NP=XG8ol#GOGp2o%=_lQsB(RYKbo1+I{r)YK5W^2*jD^Id4 z%U=gQ{RGHV&I-T}4YDU+c+~KC&dBs+jM^&kVn{)Z#5T{ zxcUM94;>k&a!M`D8CS1t5>^QUP#p<>Kj-u9MnOw^=k_`0m|WUBnqFls#A$UR?;J|4 zs0aaL3#C6RZlKLh=c2|GW;vy7%n#Kl;)i_z3W@jd>sFb>yDIcBq3&MngB2ybBf7X! zFb;p@V&>pXKB;K)oKW5ktYloBSTlDIrWB0arePJ(FRdw@ibiuZfERi@=c91(i`!2L zIR0<+kC(3cLgm7yvHbmt{9rjn&nqsln!#Ak_^tj~EdjByQq>&nmGz>I>&@-)s8H(G z;;Iv1@NgH7ovGCnQJuTB+|`Crxk0(kZnkyI+L6b&01%eQeeW}V8ja%MYE!Z{*zrnP zJZlQ|!RL4apNVaVgYcUr)xPMRI!D$RbFjxpA$=@aZvHX<`7IEfk~SvavI#t@C{gO) zqcoc?2Af;=gZYJ%K&~`Dt>JTxkb#3mA~7?ga!>oELE*`jsBOHy_C!Q-<=6i=#wA#A zp)j3_`qlKut8o|9Hnl`bE7tLXt>Sf_hjyDft9X5bIur_;*X2)`PToRsz%2y8Ev@*l zB=;CJuzo}#au4`qrbP>y7M&Jue)KBI8NyxH09g$q9{y>o>Zk7$crc!)JN2U`#Gq-c zb0A;C)U@+JoAEWhVa?X#!dXobiDy5sV{TVLV;S4_t3Nxd7U7Hxc`JyoD|Y#djrbXr_B4)XHc6htOt0QQ zZ#9%$`W5lm8Df&-f+UC_67w9*Ie1H$GN5zHlUJ1R22w-ke_i7T{k=qH@d*+GGBLe$ z$M2yBS!{%oet->D^_`xvJ4>P2$0*r6f*rffUn@ zlWDAc{1y6aBPI4m64(fT7e#D*;L2@HZTM9k*9%c_B4hROV^C~%7{apX&0&B#0(wLN z=D;Sh;$BUH(vQs#+HK{&W`gJsz7HFEh*o7IcrUPk1z@A_D>$bvtZi|Ec{llRlDD*&MVUHb)@qRit8&! z5w%U`wvwSLaVJc~)0kKDm=LBnIG}gwUJ&R?B80F^-AcsfK`T<1;VSZf+?S zWfjxdH|cghO*Z6IjPppTq0Q zhH-;KImpc68X&ThcPVX1U5}~&EItb<$C)e>{YVHmze(}KP`zA;(h@<3Q%AW+V}0^) z&n)XO@*Gz9-4@UO8n1!DQaJQDSzK5Jdi=RJvf%m&O(Az-XBWj+Hx%#Qe&hs($#>v5 z4WrPbVQ!HC`!j_X>ha{6tg~=xnb>7v#W`ObK|@ejZ_$@y1-seAOQlI4`C~N9^XeDMb=i%sw*@N8n zl;vfQS#yFQ-rwt}CT!eikZ$%Tb4EN7 z?ZFS6!^MP=rOXYoA1GHa;DzF1*Q3vGX@R%Rx9r5A_SQO2VOYtx$H^l}D49MbPtpF< zkr?0Kf4f|PIn`v=<5hffH(W7 z(Y~K(HQqq#RWq{6C`k4;dn2!-Uj`Ttv4%G-8;gc(vni39l%4HXp>Tdpi-F?Y|Is`$ zTgGu7QJE5ii^y5^ram*7U1;OP7;b$_6rw;$R*`oiz-))EdAlvi9Srd1bkt6gfT@5uB|6}sn|=-uJ{rfLcUEikjZgLYMiVF&uGrxLB6R$ zlOT=##DJWYtGWKukS(vnpr2hFd$E#kChbb?H*lKS582{c(n{X&?vxi9|6^$LzXQZ5 zKMT7I?t;XM4KT!s$AKlYRJU&WE=7;O?$l_lQ|umpbEemc8tIU#G!6f{_boQ3zvM|) zc~nihN{2)MZnaQpoPX=I8&%J0 z=E@kLLqpT=Q3u@eDqI-~m|3S>60%@rxI=n}vP88J|Nk_+=ROXs4}wo29-CY5zFvM! z;P9g7{lFTUOsnq;*2@5L%;3pHmO|khj0~wlACv+4%urkM?1E92$zlNj;E6qRCInIv zk4Mcm2b~|_E`Af``L=4;=c~9$jlUpF;C~v$Zlw%>Kxf6csvtV8pT>ty%iI;}qUs(7 zIgb-OgccdOJPu-EPc#gbns!Qb;_r4$zpQz&gI9DYF*8mgmllW)ysYye@qo=fdVT5V zEgO~6;*o8q_dkm2u7Kz0aeT1=(F%`;5}8!R$@>vAkiL=p!Ok%BTc>!;5c#hTP0AJ&W@s)Vf^U>?>k?V8_erL3`L$is+*<`XGtZ`b;+gs=|oj2DQb-T z8w{_XzN}#$TDo}5TRUiNKmKC&(MYEqveU|VQZ^+L$$8m8saP1?fhJOvb_2Th3q*rq1C4kf;uFOM*c9cVj!{J4wH$dyJSvYk5nXG#q2ogfp&+WO8b0?G_K4xU!w za`aG^Lom!q1F|C@g#xg(czQz$J<0U9Jr&#Xy11~qVF#G=MRN3gBYFtTOtu+nx#1;p znRRJmN^1t_91o25KI-n+k#}K)2J2xS?aiBPhW{wB^B>>j3&Yajo5z)u2%F)vU)jEDmiy!nl!% zflaG;%dC%(61OPvk#(zMPj}UxNj^^_RJIHmClk0@d4dM4<%s$t(741ZKzjVVT6_v@ zQ{Ef9#Rq>m>)NG;NB%N6C1@c<^IZ!mY{`94yA>@K@kIS@kaz^_n4P^Ow5(Wys4pP_QpG~Q>&E4jDH>mI`%3zBz1>3fp<7kN8fl2$&LyE z32KS#p)8M(bax`(+}1WFGIS8lUS#p77tPT}cnH8hcdDYH*o+c@bH(P_tamEuDjWEN zRkEP3xHoJ2O9=RMM`1afdW6fPbyU%*{K{OH?B&q3kQr<=380xr5fsA?9IYa)B^y{z zlTz$T$&!S$J|eh(y{&o6!7R{>$RvZ*#A>K~9nYVI9o-`cnN~fh(WZx~0*&(H0jGh% zxv@^J*go&@6#+l9f^eeqgEQoFlj9KFC+a^&@AqhJ9{4>N1CC6~O&OUxOk*BjmsRnB z`EbfN-%^YX&w5;0y9W=}^Y|m65_x>^P%p1U$RZ)}Or^FG?y;_%pMa&(rI)jdHDqyA zRl(!Mm&-}#H^Z*3zFOzB#{qNzHM2VY_{H5_S~EPfJl^2r-5w0Q&Nk-}wO_s5sKitl z-xKS@dBwxQSwef8Ve+dlqH0*QcD{sG&qMnVRRq8Hl&uUxB1Fo*U;un$3oSkxnm-3? zX=T@O@0vW0;dkVj$NGQ>;63;7c+7H}hN;?IjN3>uuXZsNu)OO)VvGM)6B<=RPs0SxEIIEir;StzI_mv+w z-Ty$q+s(D;9Z#0aIG_r$P&0DI?hmYC3(eL-_jHoQ^=}zPYt7m{_M`@arMkX=jbIB? z_Nt3ml9<}_oWp{b-oOHSdqEJ=oCvQaM1?pr1J8_gm zk2*#9noe6EX>rv0uFeoCM1PV$Mug&dp0tmGh zknX0F>#70-5<28u1*CNSEx>^W^L{0krfNW-$OE5bjlQcDG$P1y7G$~k`1RDaHw$4Y zHUol^`P&tprOqGK@Z>As4ml&28lXX6EUz?enC?nzwPZB?SEsRSB>KsPMF zmwnI&9DO99JT=#F!A*#B%6o6PS@1aAjpkL0xy|QAKX-_68G{3-!P2f^36>s&VE`IX zg+(%hQ|s-%VH~2!UNg9ufrq zkJ3ebK1a86W8!24+Ln!cNeaRWwdHO;o^ihJD|`6}GVKUs2Xu)#Y@{~y0z;Y`uKlCcRS{VdFDz@SnL>SP6=}(S(SbI z#RKOrhJ6x6MFaH}g)+qnEerWkH`mCY8N@(bz zI{=_pP25IlwYe*u0rHXGSBim8IBtH}UJIWurcY4Kt;g z7nuzKzm58n2uPcHF1utAl62_ZO6w!bV4j=9#U&-gwR5LAB?%eoq!!mRBj@SX^i1^D z!8|$5S~(G8W4;1!8$I~DOJrl{$5~j=z_2G845#~iR;{0kVar|h=Mb_$2fj#_!c9k% ztkSBGVOY>0B^@(s;-QgY29+M@S+asrq>E1wZAtkcEg$om#v!*dZ@y%mk#OWMkJbYGmQ+G@gxth z`__|dwc#hGW3u=gNN_kh5pc#XeW^GMyqmwO^B;Q5!QHKBZ~GNsI^bmXTx(y7(uh&I z&2$N70c^Y?Ra+B#3p>oN5I!zyom96E70sQ zB`B*D!8I4!;vTO%BLGFvOoN{v;{`XZxPRf&LgOB8ElUQ;C`J(rMHBh7x%@}+3(4j2 zI}Vm=QHN0xq66RVk=o^t<-)cBlS5XLI5uAi{1JsN4qXmfn7CRzX6a?P5lc(JjtEe> z*OSF-!|8X6s_{lJ4~ZqC?gvPRuMyehPDUb#j4_#^`h*}=q<%yNNq8OsASDLZ;L~$Q z8Z6fY@ogdO8Y7m~T){UF2{}=)>6(2rg&lb_026vEvy+4RH z95{RLx5lR6+a5WdH*{o8@l?Jd(p+^O$r^^oXE+mBl2vKRCdC z4FET+XCw>Dm&e{13*ms6K&!74ZEDW`-bh|Ps2a&3JvQQhYCBqQ+XGzxvX@fRTCZyS zikLldFvoE5=fK^Mr5_ke5pzZ6f7=#Udq}iq0~}6j50Ep|-h<&pgu-d|<;(39-lyj> zqI0OZ!XyPoXAzZu^#?@x%Id3t^ivf0r z#yDuxG`K!~qDSFIBpAGNW&*ugJGOY3>=I;ps=|${wq9=!R{BS^J8H++frGKpV%Uk;4fhq z(_crAI%qI5sm0-88$wtV!owhX2rqB zL$#jRmmXLhS$u3buHxp77v2rmwoPsPQ_$Q8}Dw}1`WyXLb@E=ch;}kq|*4Ll3t$dGJu|U zaMyrSb(cwE4QMSuJjCbmpHxrLLA_;A&!44xK_JOGo1-yaWOK7KZNI83IY}+|e70^g ztQcJGh8A8!SczOMOMj^F`DGmT|@CG%S)hqRdsTl zqDF!0*d>q_@r@WuK5tDS{P_2ow?+VZuWy;p=IwUFQF))iuxQ?@SuvQOyjK=MTOI!u zO7d>6`Ms0;Qr`oDXoit}zDdNP_!^&(muLFA4oG|4uiQccQ)(N{L+8dYKSz@i#eh7z z)+xMxSF1L?xd$D3Eum6_v*EOY>SR*x6nfO_W0dYra3Wcjv-oERyE&awSX;u=Twl?3 zBoX1`h`3kWxV^F`VYjwRTQt%s^WN5`>zv>~Qmm|;T~A`K0-MVT6 zX;ykpVV|7mVAr8})1X!yBUYHaD*(AlM~4-O;ezRg?YU7UJ=@o>c(uY15qvy;~?yPXk5Xh+XAmU76klnosJm)M$x7hf`1>tx>n z!~!MpA1xUQKolux@&W=30qH8D^@Idf#7}y2ucu99R7%{dt${V~jrDY?O*;3TCN&2K zOA6AFxak^!>2H2>bNo@uxXh6Jc7J42C$Ii#Cn8=t{^sMHR`hbhdtBKOvs39+zjFSw8nlu%Q^b@LQec4~?ekLrvvIkXU8C=A;WcNL9KdzR#3(1Lp zXuNWG!V1K1Qm{c{ADxnp-Ef4_ZW`kry$|Lk6dU3EPZU9oA7jgPUfa^Zo#-o|b$-k| z0zPYxtHrFS#*1@2*Kl8g`W?)fRAzC#;`T{x4>v3ljBC3$7ZK~((JIeF#-W?H2sjPJOQza=qL{vDG&QSM4S@mS$q3cn^5eRkc(r3L zmlNM(K5M$x%3I`ZdjfETw`)ng3EAJ|*kJsJ%%F*qahBu6U)vs1~Y-RP6OZEj`8Pl0?3Uerj#?`PmG@U7KC&Yz8@2SD`k zF(tPdFjy%p@(oJ4EcW;Oy9nhXg?nZRlH1%KYXhBjxBq?~nqdX+iAns!UuuFgw4ix< zhMh-cbV||a5w{Og^qQj=(ik0gsxoG$1B*E1A)tpai?Swv9C~63-F^J6HZ;FCyjJZy zqMs%oNu_kxtR`Ih7XC4!H%~m4pToO1Hb6P~tJx+Gn``2rhGcS5>Ft6SwyB2qb;WqkX#Fs_-!Jr3q6N4MddAgfdB9cEKph`k9#rzfM z#^PUgude*!eGt9sKx>do_ABOnQd+LA@Xe1HI;|9WPlsiS`1T)GC}<*8*V@nuXbWx( zf^RHu3kEGt65BpjWcZW2)NRLv)*xZc1K#N0+@(kSRpIDSRsLN0M4>>ey^$Lq$!1TG@nM)c%B;~0Q6nPz^JBrH+wxk#xA(@CL0j6rYyHd)IRh(O8I>&PlF|3Z5 z57GW++dN%O@KM4OxN8%Gl7F4nMBgsUhsg~c@#P^VRqhY$k%GT9WI99{AdpGXs$f+K zI^dcE(cqr{OrBNGc|6!~vN7wUcmEWT3Hni+(A$)I*sb5%R>c=o2=zIy9+l*b5i-Sjxag7b<#oy!xc8i^2qc z7~8PJ5%Y2sHn(V&P!2Ak%q2{YzK8u*IBR5k`0lF%z<~v6eVT(j#(1=3=qh>-8buUN zluK8X-1b(^eriUgsM25oit)jc?j z=Tzu@V@@4j{Tj>ma|W@t>SsX|AM>ag1fPKYnt@H;PYeX@2qI96${&U>gi(_;k@JDs zjC~eSlqhG{Ocjhh>?!( zf>Mj|QjT@I&2Xf|ng;slqhXU&9-fTcnARV)paK&8_~r>_$mUEN;Zf^B0>!4LYk5P< zMMQ0~Oe9hM&l$hqF@3D$YEvR}7MzHjtS-qwD;SQk^R#-Zit^tuIg;Rs7;Hj8rtBRO z__2Y&Ac-0psA%GA{cpZHE9tGWPkbQUpeZ&ZnJJ#%YdMxtiwS_U>1Ry?PzT}1Pnev-ZGlZ>QUy#;IyF< zE9Iv{Yf&Zn+&986>8PIrL$((?B9$E_hr=L&+TCz8C}*`lxGRGfMLl*SvI_YK=tzP< z)adrJETYmq7kLk=dsY&BTHr!xU?qmpX%>E8OVxp*XgV>{U|d9B_w6bWO+rxk7|yavth zhb&9vA>D2*acgspX43RWTW=1F&Z=sg;j_z1YEIzBs8~|YOCO0J^VMKaIRbio)jg)T zk8f&yl)wgnY4ftz7GdU8jp&GDA+k7&QAsTo)R(x!~VSx@aJh? zcw8h_>3s!Etl%1&nmZ`ti>%3SMYR(G+$NY>0i7t&^%61_dEsBbo`rsb*tGz1*^fa; zogr{Nd70v*W7DPFasn9grfA!^LbD*{_R-q0`*e=-78X1UhEeC({IZsl2#PEEltW1@@DN);XL_b--u&iY-v{ zWF7M5ieD+bv6ZJH#iBPKe%c3=Qh~O|500MIyV0M-WA!KFDoJXIUn4bE@_N-T#0&AA zXRX4MNczgcud^rY@CyRZo1W~Ol6And(X*fb1u_4ed^ZnBYXUv*n|fwyc1zYmQp?e# zvLP}4&s~8t&wneZ>xw|0m28^z4B9`=&elkCr!hZ4<-M7|Dkpv~+)T00*m1{1!mB{6 zuWVJiq{0sPf1tahl{QU~B~yQ8II;{m48x63yY%}6iXDO%%16Lj{|byD=!pK+_K@fv zUyi}f@+M09)9oS@i42yb1wL6m1te!g#`6cvNZU3UB_zP~vyB{Kv1_QaEt79Hz_(2C z=DS_HncCM_5M}c^FPgDx6F7>WORzMIOtuV|m9+AE#cc}jfgKtQ4{Ql9le6vmHdQ7( z5PDsaMFc9sXn2XNA^=Ym)J-M1{8ON3(WfXw$+Us&-H%bLaRC%>2JQ>I?DNQHCJG00 zcll-)4Ui+oLWGzJ(0#NKsl<1MW=~^ZN;OUJ#Mp$#bEs3?S>P>vg$4bp9GcnmiI5OV ztE-2@y*>2i;9wj!jceCWYc|J~n6^Yqva`*kfWEEBxYN5}y4Fbktq6COg>gYeZH4$q z={dXRi*P)+7EOKMK*ete?oBwgVv?9Lno=C+NBaV;ZeNxv+n@oqHTcnUH=vFZPx5~$ z#!q&f3`+|DIBjAG2>Ho?Foto2HXzxi(QxQfG725hx33 zqb=uhCI)qC&zJvs`PzNSN8t~ykTMfUPg=2~HrL)?sTvcHc5VwPX0r(!Qa3TjdO4)q_fw_tN3{}r! zI4@#V&ou&o86r4vasPYNssDc@9sg>WZhXUKg~6YR5mtyVMe;%ET(}r|{kE50ZSTAD z)JU#w{P}QceaK{AZ%U%kSK0T-rZLU@2|G%yIf8ZlCF!6SsQ6018hkFU`N#Y$tn&b* zSqU}G&^zS|#yvhSq(NW3^CR-%-fbd{jhUlz1(JYANK<^Gm%*1NH0sMJ+MY(uPvSGY zXhaF7P2ZTrIyXQX7HO&X+2*@N=0)U?Gwo^{BQ1~nXqan-fl-!cJc&!fwLzTsKF#)G z6lEQ)5SK!57p4ZocJ2p>ibgLj5>H>Efi1f&$Z5&ZF3rvS2>+e#YMW~*?C9LsonABi zdZany_httJU$g^t%JNwBJF}(kw^SY4^#b1TT@x`{Xo<+QR4g8*I&TpGXayY~H%~@a z#$PzAKqk)%^4GZ?1a7ly!DC@`2r@9%IB=-;ZbaQ#+ zUj}?7LJE9HBFNKtDmC1%I0t7K^Ewky75&~PO%{JVT~peu+9fJi(6~_Ys2t3X#`zJv zl6Vf%WPVW&FpS;-LGNJNp{566emw|M8@IxkOv!`qil^^T!pF^HI=A#Q%sSzG!;qqoVUgJW^0A z^Obzm?20^R+}mW9gXVYS;Qj+F-W`ueC)TO@Nx2n&nk}!I%j%_4SWXt*WQ{f4A`^(+ z8V+G7FRlO$uQ?4dlJ!0|}$z-aMd8RV=qpIgL2ZRz16?upd{#xY?61U23EKfZFS)7%6*#dTgt zns(g}4PfZH(f~Nfp+n#GLojmQ7}4VNq)Z3Y2do51?>Lm#UQgdx)0}$=R@|LO4QvhY zX+(;7#F9#5j4zT!13hwXc~8r<`(B6qNLPdBLcvv;0C1S4(;A-tWgvdY)bsT9ykPNo z9;Uo@DB~b+W;uWc70WTl%~{Z2e`io8N9|xtI8cTl;P@mj1X^TkC}$T0Bn8d|VFH#V z%>h?Gro`g}cQClbEW1p`3$9uvoCo(s-lWV4+p5rX1j4XVSc#UkBtP`(8#g*w-OUZ= zCO+^Y=At>$OcGQgk?H4no>pY?uk@`;jc`b9zX{r|KQKOvtF@bQ;Ci;I=s@Y?I5O3QPk(CQX-lBc{$j zqH@YX09fP|W61*8ef0bE^7CWWzLK)dQWR)f^&G}B8wmJKvtz?1si1qs{7#Buf=m)y z;&;%xISmHt>tKDQ#`7fEMtk~MvTUY-Uuw~Hg(m;8v;y2GM%KGv{*C~7gL;f6M>vBt z&&ceh#H!;i>3}*r3s01MexELSGcfORusUVVK14ogorTZ9QU(;3{fn?ch^C^CKl4?{ z)NUbNSoRy~Rr_ar^|GK-I60sM(KfFDbk=2j0I05s5oVOp6lfX{pLNH=2fb!@pn!wS ziglis@_S=(s&)L{Jx8xBt#BRl(O5gcfob%MqQm4@`7@}W7myJ}APW~bFxE0^nqSNO zj)E_2)ge0XMa<>Ct@Sy^R=$Aih40UKZ=HdzTZ`*m@uvmASgeNoO`jB8zZbaJ zkTi@nTwJlookBv#w3DU3bMiKhHJD}1!{kVkzSuA`MVH5=pahca3s$@|moiOF<|iNU zMv6>Xk3^$j%Z}2@J&L`~n)Bf%bmY``fp(;`C1IRQ>RP^KuS*gv#g6iHS1Xx2X5RBN zc+oV4o=U&44x1?@cQ)*Fg0j>tpzX4GPhOL$2|Of~Ic5S_jV==yRGa1{vKivo)GN+c zTys0^BXtx`xuBD%=`8I2aSC^=GT2y=fc7-V90v-RKy=j8PPr_E`bJTzTT}@S68(`V$ zoiCNwotsr5NC{A3eCzOB4N3@cR3b{;+gW0D9bpFLZ;Q&r{kg9suEZ9L;PjFu4n+YG z>o1+F#AjNB*c{bZ&N6SCTww$ZIv_F<%dAq-Z?lSG=V!C@FjG%f<#@|FS(HjJvt71O zEc#38bfx37t9^&hF2hWBvNL&*ek1~EPbtDnS#)Y1D639F7zX@cRY(}$_W=XL^@6$E zJ@tCefZ(uY=hb(mE}aJ>OfE2)G%LsumT(M)3|E$T@mY%T6KP1AGXy#@%FvD#{4VO( zuDmTb*VXg53+hmQh(~F;H6XQjtH>wgj3F&2T7G6DYk#k;(E>M4X+Qz_2^=m)oXw|h zIIesDfw|b8n9!ZH^mIND7M3qeA(h61`zwgJ49e33j)6Xh?kXjcpYv8zY#bJUL93uZ zCV*i>HiOKW^(e`c`5%W_)IYtR*eAd+z+r<@N4~PmENk*I?_#66<`6IR2PP;@pKpy1 z50{zy<^q_iow_WPeDm@(kO<2Sb>x#Fg3^TY0q3F4SA`OHjYJ^d&uFxkgZMH|VK#cl z*~vbXY*2-#G0)wn3@qg^aZ&k^TQy*)kF4TpNoen~qE%}jL~2+gl$~6#F-zY9?wumIm&!PW zl^nM3$Wj&?A(B@AFO(DG7-($%Ek3soL5^|Y=VGBR`Ll1Vy@cjb!WfB92pFLdPq}Og zH;X_4F@ck$Zgy&p#Sn)@l7Pwt@oeL+H5E;KbV zHh7xlA*6N!Kj2`~&@2m|o37KIlgGjSpF(ZXQ1zWWC)j%lwD1Ifby=5En`D=<1Sq`D za|?!}2JTw|s?^4UJv&#sw?CX6-uU-5*T!zwM6Oov01l4dFrp zowl8=$wm#&?+cl|n|hD%N+quF?3PgYiV z<6^e3ojBY(C3YF7vuiJXbB`nwq?`r)ljb(uMn|WstVDH1u_*ab-?~4O*uBo}5yfow@o>B>MTz$JY zxqlHmLP_*uPPTF(?=+eQMv26iKFNBSp5xbH_v5y5R-L|)g4J(?#~UK$+83@JWlItE zIRoi#%Z`d`5?MQx2lW%GFus}s)|WDcU-pPB43(hp?i;|N_jaxE5L55AcMyAG;#=0-$V6X^y^J=cX5~kgBqfyO~0sCN9&3@25D(eR<3QC zsl3TnCp<{?Uqt;LMtB)f@$TsEEj&WwzmVy`d1C#he03s$>lEk}hrl*(nvAU3d7|yv z`p$8*_Diw;`?y2RrpO-DhqG9MBDoU1HAGS85!Qdfm`;_A(xFdCa<2 zV%N`xDS|TzvUdVY=U(giC&s-5Bx{QU_b?Su@Cwm?Bw>^iVa(b)McOqt=*uPW6ihLi zBd#@|{YcV6v8N1IfZwT12tAK*@>JGJ4(a@m)z226k!Wd(;VhhOmoJ3=x@8`6_Q5o_ zyTTo(v}_P;yyYg7-V$CQU#~X9h%f|yCaJBDb${<&OGbxml&}=4y&N|H^XI2Y2D=qf zElP7mZlQW9>cF#}*YeKTzSB^s6As>zGr&v|%&Dp+1m4x_V2~E)^cYP1pv|N3(X+!M zMlG*oR?vYaw&NQ`>h*nN(x;bZi3`J%GXfnQjUBxcZMl%XhG!Q&q3Nk&q6!KwT5wK0 zEgzs>Wgk^T;Tdf|ofw8h%Qb0xJVee~Fn}3faw?K!pKE5TL z^(}Y@O)$~2*pyn9k+yLQg)?Xyx=!S&??(QrNGrR<4vVj&B>y)Z?JG4q>?^xL z&j{Z5o8_L?#TR3x!&355nP+ElHV@$ILe&u^ya&A53BW_kh{m-ZB7j=t-`pT3#h@N{ zlD@HN>$7HTfo-SO-BeH)G!6b?ZjG~r+UWJw%be8(ipMuPKog&|szx}t`-pCq@~lv= zn;U+)m@uNf_BC(2v$Kf2WeTlJOVEJa4dvoHsn6;OTZKvn5ys~Tzvl9{i{4SvcS7@i zAqJIvjOnzFP+H?zC$-WPGdzHamsPlf6Q04du$s3cIfM4j;0vv6#^jW%XJ96+&N9_-qWi z$L3Kp4i@}VC=odWjjPZnXH4_>T0+Ba;GdX{0KXLN0l|GhOhvEzce52cWcKm2DKKqA zhC($S@p8pCTDr5$BM~2P(Eui5C;l~xUSiXec$Zz6C z_l&0MgSocuGn^5f`Qp%1MNgWTUZ0DE1(Y5|@WcXOwKXUUxffJZ%&1@TgyYOlzQSws zX8ulIo;gxU=GLQ5m6Vy{NT*ZCTY{_dflE0UY`5vJ|EaijDK)5j-56ug$2%#Iky-2I z`1Qkh{Ml5~5aNNaL_A+FEiAoRr>DUZ(Zp9zti%*!u5-Mg3viU?-6RJt!K0bjpI$&; zmYR-cuMetsiLbycCef<8A+NIO#vT%QKlpKF)%kB*H73@Qv-bIOoGgu7FEEALPx!Fu z>qaYv3BF@z?k=<%Bfqex@m-eD_tgXgJLWzX{OBj)DIy$uokS^S4NP8|+$f9yj@siEb9N61r-qzE0T^ z%;wq<3X@IR7yP-&vN1CB&h3Z5OY?f0iE5F&B+f#mnr_iNJg7%^@ll!bFRT6wvkt_} z!(9prWb6b!aNZ3jXgm-Yc&zQK;_{5ptLs;B!jjbrg#7W$) zDh;8EtWD7PSe&VaZZttdr>hlQ=R1otr!PAn`V;*u9&_F#J%#~P#J1K7Oc$Zul^qQd z3@jCt)GLDmEbZPxhg77?B5kb+=WW0~{6HOWDX*wQ38ZOU4tr+dkrnOht!EVe>7XwA zQNY6m6kS?pi=k7Sqq;dm1=35Dldv4tk?SIHR5VfW%nqGa#rjk#{`a#qSDe3na5t6f zX?ajWz-}^``b7sR5ugnz`NyLZQ8R!yolqT1Uj>PcZJNiLZwV!LpyZ1c&nh$lSf;xH z4F6&(C%m7z>Pon|i{!hgGTyuADcetDC!e$&#XuBqPr%zj4i?6Cbwp*r06*ImoU-wX z=VxTzg5m`Wm8!w~L{ao$`XGX8pU!n3Rh>e0Nwxau=v76RIq3Ow+^-f>`uUG_ z3>2!Fn6whsanL!;rF&}JP@!dr9L01|w-fj0>TE9vFpTQ1o?GAFYRUcVkAHwp%O=Qp zEiQ^Gd-pZ$Ct3--&)BFU_by4m15h|9Dg;QWR9^y=iwOS=BM&93DNeW(wk}DGacxfC zH>t&>K}afz>ufVyi%wI)2hKhzQZu5Vo{Tl#vK9~LO*e!q;$j$?)lP}`L@s6W^fN=I zA3M-mbD-d?#D8RKC0uu!KeAVUX=H8I39j_lCTgyZ^_%k2HC$AAH^Tin`{(rgq52}{ zLJ6aB$Nz_cJi{0v4cgIK6s7k`05Rw7`8Re;O4Ki#_?!Hife7gTpd2c3KUoH3x=d^u zf_mKTMl5_`5X}8OA~;oZU#Z|8^i0EN9rj0S$@P)+cT2&I7z6-Vv231TX?C13qMxcj zsoWsg&bRG`$?w_`r(1GMk=x2Dc(+R)7;0EBt8=P?U26SooO3hHJ#K!MA0)bl{{9@g zrJXz+{8mzCJk`6JS@7@K#@BHUuUfum)C2+wvRa-)>5N6SQ!y^)l~@jlT_Y2E{b1?# zoBt0M)Dnah65>1x@l-GaHkNu@z%*1}QhwL~%iYtXu-Bo&V31hvm^2beUv@FdT2G*A z2k|5W8S+UZoOV4RExnxHgY_h%fywbnb)hn?1~0uOSy8XiYY*S=&bXA`K|xw=>`m*x zyGZlM9|fMx+Cy@CuFx zJ_Xdb4l|=_@xS(bz10*-5ZN)Ld@C+3pM>2-ZaT2asscvx-W^U!UW|tvOXV-ZDgpf6 zYzdR>8J=bc6R~8!o1QS|fqWF9eAErh@f`{ZQc`hy^fjtcE!-n0}7;OY;~m!n1l_dtMAuFM>RcdAMus?kLSPUl$zqV#+xmSwO63_md0PH zY`-7}J_{l|#TAy2vBb`y3mK)3e`B-JQ`fR0~}6lby}nkzqW9)ay(u zcMAQxyl7F%#-pMDWa1Pw2O(;vq}mOu>ab)sDeE2h0Fm=!OYxs9VdgEfFg`XAFWw9W zPejq)aWxdAUN0}{?jHcleo|U7fwu2|X+q50;!kgJ7BiuZ&aZ|ts#Zyx0qfOW!E%4| zjMWA3irO%*R~KgR9sD*ZXtdCg13#TGOy3eLU@?k5a@w#~8Fo)0URx>OSx0?lX)O#+ z+U`)q0{#UW0AFst0g#rG(SC0c}+;ns-lUn+yFE_{F<4zf8$IvJ2w#tACc{E=!E zKKitzLNQLP#&>+TjU`TFeP)~fZU2`4DTDpR)WN;2v}9ksCi@zcqc32^lcEK|ZqL+F zG%ID)cEu4G5UR75%t%xCXQQM3w`-oMt-1oDO->Y6lRJ-CscnmWMI5lzCn#B8(6z|% zO;CO*N2Pd6Q6uq+VLSjNPfoirb5)ulPi{TvmCSTTI@0aw2tehK6k5)G{JB+(K_$8u zL5oU?uuB=iro|#Vtx*F~;@fNM!MQzfWX=H{ia;?)hyPgqH7Pv_O)>vZZ-p zy>ZFt=9A9kPeU`){ZyAI<<)A2F;{RNN?(MXwrTb9L)mkE+GGhh!$9XUdTKnon3ai| z0^12ftKV1RJqqTXD6e{*XaD@G*0k&BPK>6f!y3nxFju4oHs(AZhdrI*@|(R))706~-md0|6twua z!gTtj08c(-?hEGo&(?x1M?yVFg*|d57o$hlfI!P10B-<`-5%s<#PzD&5!ee0DwT0d z;{|wF-6FR_noud*$5yM)Zs1fjASlk*4dFLYa z5Um{qIMUuWtt-TKAEU68J!htVH*Sks&bW{{SfO&PtdqpSh+k`hCAIhWgR(R{+xp)KwyTGkY$OWLsF>7aQRGWL* zPl1NmoOB1W42wuR0zb>fTNKgdH43*y2&!WtI)QMic{|5ZW;oxHQ+6?E#0qb5u(^5% z>Z%h5uYRG-gY7t0Tv&SSaM)t#Yy=Id?_NHq_&zL>wyS}$JFxAP6FOUxK$q0X{(d2z z{Ok)P^p1`lU_N>Iy~PI}&z#htjZgX{cqLnMK8e(;!**Ie^|;MiZS-mbs2E5R>J@VR z^}k+mCj>_!8Miw8(+P91r{$1Cem@^A)-o6h7^GC2Z-Xj&odj(KC8b4t^knpPbxR z?BU;h?1{(5(;c(6(4ohUma*Hr#Dy?7D8<4OiBG&xph@qHjQK_O@rbvna zXhQ1FFh?oPkFXSMk+cmT?yJ%=79g7!{%J*<#Y@KdlrB@coRrS%v(*+bFR-F@Xv4<~ z>>VAzWh>_QZmV9UBMEaWDq?L$Uc_ ztMzTZvsc=y7r{EaYGT@v?`^y<7x^q~Lw!hzUv;VpkCc0le$EP14@D&)`QGN zetCV2!4gf=>C^^Gb%NO4o&wS`l9Uq_bKt6CA9dYQ$PMu2YK5-L7j3;~{$Hzn`_Bkg z_O*=B1r|~e%8W0GH0ngzArRXM0^U8)Wp9@F{;ZRYVk%59bDLyVqBMlPW}G97uE}$R zI}YZV9l7(yi01v+I%zppd?PK{7|XT{&<{M>S+CxNv>!=rS*yp#g!hZ)?PJZMG(DAR zMy_z`?`bO}_kodo>r*dhYf2d2Q{w~FB0*>rY=7dN)#1s{&U_O{ZtP(>wmFdVEf5#o zQb$4!EuVWeGhPC7TA-W=_fa8LK`%;&^d(7f$-qM$dnhON&nwVwjWq)T{%yN%<*>U* zU?o2>h3AV}VHF5drzWdysN?n1;b#V|8M>r-9d93+Dab-1eTW|M2W%jixMWz~Ps;;d zA&DTt{O5tX*PQ4+;(MIc#2H-()Us*T%*na???u~(3`^%N~kGfGHm8(ecShmQq;)J zwxJg#K?p!ZUtV4$MoMiBSBQJC#l@A8q1t3Idr-#(s7{E9TIcHG`RM~S8>&QuPK`V^ ztLr_&77&n*+<{Z(73zI=;yfa($C0uDJQ)bQ^!_3rqMq*Ox5`Jqrf6tEc@MwEhGw4* z(lyIc3defbNN8&trwaWv%C>U&wdT<+lr*0<`)qI9L z2HT9NJeifVUJmgZSaBvSf;3vqJ1J@&tC8x&jO>&!i+M}Dt)7uIHamXc zApOY^ht0X&-V?66dhcplI!qZ(n|0@wmb+Lw49@Hynk7H91VYwr0R-e}Q-%qh+6pre+vL8d9+Wa}zV2h_MSMt%4RXe1=&R(vK zgu_?G1G-1*Lx~fb@|>pye`sF90#Sf6GNa?~m~l6anO%L9zFH8|z2+fOL0X?if106M zPiB5e0fREhtO))msS=(6$UYoUmvq2r4(z6XA>tKY&GAmihg|=XsdM@Zfv7PsT*p-2 ztD|rp%8gn8f)Q`H5vx}69b`WJVq84 zwWA?M$BX`YloeuZg!*ZgleE42BDed;^b3%!G7rn%$HuMzRCN(J)rzb)y*WdfQT^>- zbta_)cE0(_vviMQYk2yl&2m;Udlu+Ux1v-m+}JGQ+h`5KafO|lP2@1AGkoDDA-jA7 zi{6}JoCsG{Ddjpo{z;{en%RU`e<9D5W z)!4oZ4UO!W0vd+Aq^1mh*0rs1O8 z&k%JH#yzLo_8Sx3P~=|eH7jJr$zqKc1WGwjuU;$tD7!ZOZIT(=Gs;i)i&=Y#)PT4e zRGE7ng%w5k$2e4Pj>D=O_Afu9I`O3HyD!SG$0Ecbw0tmb!VsArA zF}6}ZEOcvCvvItSTvb1}9FPULnk@GI7jmN9HhjL;v6g=73gT`WApAPP*NBUYKe%xY z0;C)JIV>@T8PaDz>R^HLGeA-OOeN}(sa<%77z>pMan-*+uBuAWo`EwbcDO+I18}M& zl0A(9wv8$>zdrr8u3}cF=!}gG$dbYy5qZAGOIE)EF8QFu<#@4$ZKgu$Gxeo3&*A>? zfT)>~4YthARV{01AJC{MB#Ei#kFi<4D|f>KM#@lyxDYbcyxYC}X%;DicGBHOMlt1M zp?7L(c|*7=P&Fd}5PFJfv2@y7X1ApWy*IWeXjNa~xhz%~DKZDO&O+L%o9@IQ*m?`Z zeCcA@!WkC&4zAN66@J-L9NPU4=^g>tZTUia9@t{r?4#w}T*}4aFdk7fLEi+d0cQVa24}Mb1;VwpypZjldUCWmdDPQ4y@bC(EV4{)bFsx zit5$b06ED2L~DK{lO0>PQ{d|KLgxu@R>FhaetT0P5V)4_@7?V~JXN&~7mb0*<2=dT z;pfNWN52mh>i87T&kb$UY1k|YfkE&NO)I}P!6Lem0wqs}H@PBk-JB~NLHk&P;3lP- zz$dyx5Ng4f6B#qOnpgch;(;D~V7nb!a4>jGgK90#{StH=90st*@CGpSW!`wX3?m31 zCQ$UJGYdzYlucPvW^rMLSS*r?=dF-m?lVaJVnv`&|2!V*20d%Ye8j2szFL>IHKdqM zK9SD%`B%lx@w>X{D8~kVcS!x8fHD%VS?4zF?m~!UmfPyL45uPaA@-CBDYtRGE8(u{ z1-9x9Nd{xbdE^^fRW)Ug>O>kxsKYYCn#=5S)E=wJV9+>4xTBW)fhKp7UR~C`R#HEH zP1I%Rk+jjI-sgQN1j9HMHjx2*!|^=i)9ry$pmnrpd)|fv^VP12L^KSVoQlC9Etzwx zVExtf4FK297HuHNy*4Tp>$R9}pw_{Y4GA9r>?7%+&62B}DtsNY;@voBadZz%C$bEb zf+ofH6lfSyhx8J*`M$o+5;a`v8nIrGFR|l3MrFODbx|AbD#;q$2X*i#6rC7>QSsvPHLOCf2uB8*~wECrk zqVNe%Kzhv?z91B12VHhs83*{5=jzf6+@WZ5oDeD~OTV%^r`-QXwatMi1>{GolCLvn z{TeNyLDb?oA;xgcs}zf#xYkIikOW#!D65^wM44a-?oAxAgSYKsNy? z5t`6*u>s#CzA`PiLL>AahGI%{GQvah;NpBmma-X}*|XJ)!;OnKt9t971rOTLz;dYh zCMfW;+a3a@`+ULx?OrcgQcc$*O*8q{YbGq}hIYd$06ubE!eJ!x1jQI%i+lT$ZoVB$IyCrmefH1LYNG!)Y-#8RSpaqs` zY=K%ScUY>z#?E=I?@U<|?jzRei?xa`W|;-h_-5Uj!A&%Rf&dMsdb9c+;phG@kh(jm z2#pHAVItYEB)^4QUM@T?A`}Uc4yA5Pw-hR&(Qm(0)}S|sMh&z|f)8Fybyj%` z7bR39JCE{*g<-~oin>%x{a2M1gc>WaCJ~zJx~}J`8wvX zKsH}D|6FgaFLqO-Xj_lwfXg9$e-?>SWGy@Zxw_N``L&%h)Gb}H4>wk<2AqVeebH=s zyBuu{N`;o4)NWRyoKEqL2|GNZ(=ziamrApGl)tY=b|^jlKXLXXTS9809p&?pEE45? z%&&fIf$UKojvr3I7>zU0JY=CfX7{g8e~@X&tn6?P?NX@If1|y!R60MsUw-x}FMt_lRK`-M(ggPDa%9Z>ZDpe~8>vDzp8 zkZ;5Pe&aS6t4DmGDLQl5IU%}FX(FvOBOJ^uq3mwV0HXIxO;i~t|zXI1E@_@8e6+%k7qhIx_4xxv;3bP$7|gf&YZLbEsj&B6_fk5l)YQ; zDO9r?k!xkuY1i|Qr(c48FB|5H6_znBE>!Y0V{pV4X=Go7kXX#9$}3<^ycsm#FHI+= zTv4nv8ATzzIgjV2Rt^XEDvtrs@I+h_Sf1l1KQIi#5%5Mu*}_eUU}K;W#e7CMZX+^? zt>>bnT5r3#%U0rD^>&(}U0Z$F9ZmQ2*9;0<{|`+}#rh$em?z^zJ}N^&U4?WxN8VFl|iJz~j|_ixuGDB6j9) z_LmPsOBEJ$1g#CKK#llzzy>oXK=xvw2?Cq<^gBv2q1@*?6ZJryy`JQ}JH&g7$NjQ< zl5<+)yDWKABDI(g$XJJZRLc$o?HKVMF)ZhsZakVRQtT#W31%i(m~n{n3|#5-OeM2i zQci;qEo{*LC`OR(_Tg)rcbHs#BWyzTRp>vS%_!x}YGbzU%nn)`gJ}Z5L62jv;+ru5 zYB$D5Rv3R;&KI{;Jv&9qTaup&TXeLH@y6D^BBI3uG8MA#{~2&s!?OXwaS+nEq@iPg z{Kp!9Uw8!)P-mRbN%WHbQf|j(*U}4QKr(F5SW*^0?upH$6U60v@olbwE>Ad8MWrp4 z)X0PctBji7M?{z;Yj*$04`L5`O3E4$%nt5`O5M8>ISg*2KRE6nwg5N?hqn4{(7kU3 zRbDei7wDK2TAvj6EQ%E-(__dYM=X!Q(n{~l!i6eW zmbfqT&Au{JrXO1CRdvIA>5Z7zX#kvm--SG<;!~27A*ifv4IC#EDA2Z?p|rJ}&cFB1 zrBV#z+coSu3tE%ep5}#U+p4lx^``exSisPnX2Cj6zt}LhY;u2k|AahO-AUCjQG^b& z3M-FqdXBVO;lY%28d80_LQ!;+dW0#4X;lj`b=(h|^wY`So&*(hMLUo2W@uL1U|$e; zmbB0+Ehc79X?bz|;+8?a_3D-o+vEuT{9CZhCtYPKblR0>moaHebs`$s1fA9_cYu^( z@pI!8>DwN(S9di107^qt613W~(gK~HVs@dB=XgDVcr!!#Q1Fxh#43z#nG93XV=kO8 zjv)iS<7w*Sm>*}l{_P`!R4cD7tDEeLb*xEMq~G2jhrQf8XLvH0%Gt%MdXS{Vqz3V% z*3EZOG|NLi;tYMSiBTw~HyqN<;ROiU0QWm;E$pMBQdp-GnlM~LOJaz~n==Fler8Rf z)e`x;Z6Xo)pw3G-rsRQQx&XxrC0*cklB0GsQ9xplyie=Mxm~R952}oXsMhp4CwQIH z&Cj(35s$Q&sAkQbxBV2o|8BQE*B7Ymx1KdH9AKI2xw)>_zny13UCv5=q-otJLs@zX)fpaXGQvT( zQc4q>Vp99p#)rQ6zd6%3vci3mkxe-6qzI>VF!2P;A%}P!U-21xZyj$bTY`6J+@{ zKAXMGU6H<@!p4c+RYo&g%zS`puAn+k&Q9Q}@G|8vEoo^oepx+#9*P2RBJ z;xF0fTIUmprNbYv)T09n|6PxW(05_v^uQ~g?fug+Lu<-0kXA+8TgH0@`0rd-lzCf( zbKa7G%`KKqtdrJkEhX?ofp~A#p-(W|App`MF!@@$oFKqaYPj|XEkNS3hq|{h8DPk2djwEi8ce@|DjdKDEt~Dl;-o<_U`we&X3@@Of-ZW!mT9m1e}WZz?>w|KrkeESe_tT20Rbo1ob} zjgk`|n9?CplP_11Gvj47G3WjX)1pHXq?_H;$T^y^)JygP@WYXYHv!s0e#CEw+=PAj zsb^fECP}~@q4=GmcFb>hZC@LLC>6s8WK{2eqJk{sd&Q48Evk_Gt7se(D0Brl9Huw! zAQkPln2Mo=1+MG%4l=aB1OHoJ=ga&QyuG1YC7(ss2gMRS5qPo&m)Yat1zj00-^OP6 zzb?l@96KNV02Ad$^l-g2kD3zuHqE61S?f*Daq0ssG3;3do+q5^y~M4VG!U9IFw{vY z<#B$6ipOVxJS>dCFp4LYt7b<;uh@x>Q#Ret|8f7!^L-n-L|>^Q(G=%Y9v?cmMiXph zw9(|A!5Q2rBd;kk`1hv)G|f$K^tpBTj%o#-X)TDCN;&pwDk&X$r&46hFHj}u+VFaSbLh56F-+;D`Y%1vQqTJ4Ux_4AH>5w*(;j;pzY_=q}81si0h5Ki+n z%$~igdVSDC0Q1r~4GXsm@1E~^BS3q-&e(<2h{&L$kV1Tg~!3?eJ&XYD!c<-z}_ z722bRiL1K#ix#R94VxOp`OE3c@nX`osb2akeVh3<{(^yrWk(rfeAod6S0K2qOBO~UO zhO_M-nSe#GA!g#%UEW}QXTOn#+j7m2DcADPmyk+|2#sV*EDOs0wgDjrfoqRxQp`;% z;1T#D5dEN~$v^(7r5!S$6qEWtMGeIf{fK7*4d|JQza4E~O2l_A*i@ThaZ2traH9hI zE{!@X?>)o+1>p|$awU6zN7(0Xtb3NEJY;v;1X6O-ea_o3I{{>`z9|H(`Ec>Tx2!`v zTh?1AdG&{4Uc##OEucBB5%Y-;Gmas_tuBaToN<^1h1{w+H@~Y{7zbM@zx`VuM zSzi)+BVN#K|0Y8{!)o?HTuhVwLv^*^=PqHB(y;JoTCV#q0Ji?x64|P1i}&H*z!!ti zhS$tR0N@C8x{NX zAOTe?n^0sx1BwM_P^i_2#5wGypB0RQ?W+hCWhZrjQo}CSI(`T zvmhdbfidv5uFj*@!Eg+g%+t*zK2c9`dZIWt*-)9hAh$ZKMgp1wN=%)lX+uXpY>wV& zg2P?Cd1y<)kiwHL5H(6#=g(+^Jx0HK{gP$k=b(AnhGVr34i0fz0Y# z&=t`gdpuNVGtl@Ar4x4Whm4TJGBrfkJbcLfF!4#jC54;7*ebQNazE^~8MLC+Q6@BF z0#Zc9yl-|B6$m0uni}LbaxLo@S`W@V80uyz;k>Gnz}6e^Yiu#_*R7S1s%^4XEHH}h zhokQv&TFIo0g=A&=uw?PTf^r0b<07TQYb^!So8Z)ZwsgFE81su3TGcCCG79sx#ZfY zaj;h7q!8^iX%2^=xs%ZCF=G7k-9G0O5~lJq(;q{AsNF=?(2DeYrr7Ht3Lp{o2e&X? z`?b{e&9Tr$$G5LOf)i+>YJ!1v5CYgb-~H7VGf|WKJ?pG4w6l9{BgH_sG&+RhUOMWW zU-|0FpNHpna@rMdDF5V#Tw@axwD|J(!!S4$1hps_Nu*fd2{xpapuG|*!Yw}viRLt9 z+_jkqAp$RPQTqZb{O8pW_<~Tn$LBK%7}%4_I?#0DtFJO(Nc&klpWcW3@COJvPk&iS za;yJ$+FY-QL1X$pNksN->?r(qfe-9@6@usTbs{R0`r$S(!h1MJ?>l{zByvv>^TTW{ zDQ}Yr5@ii0vC9_d!Gs!zqorTN2P%ozQ4oob1jINeSkC+^3mfo61Cc){Tg@zI6lVUj zT{wbc z>{`+}9hT1tWgrspCVpjFJ$0K{CgK&kIU2+d`q5zyJ4uw!b>iACFZd3YhEy3)8h~q! zvcg{Tk39y4zVx4^Vg<3PVHun}Kq4i)>1u|CfBuTgqe232TQpst*BaTW+g^VMs z!Hm55tY>XR@GeKI414n6U(dvK^+c^iaDQ601{B$aSA*VWD7SG-hG24MLUk0toLK@= z)Q8y6X2?gipOAe3Plns@6wRa8WQoimIp>Wo$Lcs0Uh9xo zNo4#b&rZM9*OV-9A2W5ry>_K^pO!x~=y~YXP;3ZDL#uV1$>MBE)|A&pV?6qU=W5F) z?4D^49Yj#}BG32zvz|iV8ryx?x1k;x4~tt>C}n~8yO%0t4~OfhH~r_eVerOx_ZiIP zxJBL?&XD8puU8*8lI>AM;(f^lJ}vTLkPgpCqs$w7W6Lsn-6X_|9A@S7W`rb+5l zI2rJ&#wQ!2X~8zl`R)!3H^_V8`IyL1dc_{^aI+M5mm%saC9|_5%h%A{@oGbBk$8eH zz0sGIU~w?b4bIoD6>er+*>v7(a%IK$o{-i@B8+3kCn%=0(~o^=wfD-yYRMnyK#OijTc_|7xD2_vJc=eT7JD8kNiWb*#J+23LUjTAlO zwveFm4YEG$!uQNPxI-nKp;n5R!T}U`=Msiz(olSVHoY+JlM=2Z7B$wgOrAVHN6$$y z8N7~^9x^W@>n{ZVwfvZ-AEydUyvGS#5)~5?`&pr>Z$;0|=K521CPsyy*kQJ|g)m8j z*BmA@oVc&Z;U?|aGkmyiD@hd{e_$Y0hx45#U-o{@k-npO-^O@20taut_zuu}xp5s| z<9$`GZ5r+`I1dGSHrwSBO;7Va?%zYfwBK1^4kSY^m7$WDaU(@>CufpV_=i7)=X&DzU{}E<0)dwCNaN?0%X3SnVT7(Z2|9bh`X0+ zlpk}LWxFLYsxX#%L;P#gIF3F=1YavD-tDOKhF*AOv`Njr{G)lg78M|3o1Vm@%(hGO zP`O(~9e>dib8q2!IiW~<54Gkwltv?cT*L^C4&M~hS}-EDf*D1+zKU|LVad~&O-zg9 z*cDZuSL+6>%z`6R`seqX@=fp1u2VoFHW;RgaUtrD&@uP`MMp-IOc`moH#$qQ{rE{p z)3eoGi@PR?y2tyWK0_7OvdQfivPI?t^LQu!h9L$V;dE)cCh@C3FKQ4#$5hVelhS|F zeYh<9%+*`a>|QyrI65BP0TjAe#SW?ADDHU89~I8L@K?xqSR5snn}zwvmCb*N#{nXa zZr4N?5qjP#7hj{=;Dby=!1h9MyYw4!nhXDVT{fYhpeSTIixy-=y!8%xLlBIBAVGA# zHKj`{4JM;3>qW60+9CsUdn`9dz_iiKm{aFl&KnM7S8T!g;rC2Xr`gIVIN>vPRh?5h zWOa-uvhbcwk?vU$OIFr3?Rbci7FTSM&b9$pL*|y%?%#Rb9gV^4Gs$-=pvES*T9#t; z=R-*^Y_)IVge)M-;V4itDYF=HDN3EsmHkvElBY>)H{{J#a4n2>FxlsvDp&x4q8p9B zAUBvuB(TWC->dRO^Sra4;}pfttCa*?l(X(NN!LeKxPq`x8d=M~X#ila!Snx0(I_rW z4TrOv5d``_#4@H}XaD~W+G>_Xy);@`I=s=>*QBj0$hiCgzK;Jt1>bS379};~@%oYF zkSmw?^P9mGmgn3ZI_#l)ajm|?Nm~7VQM&pB*coLv)C4V=DbZ1Dr^C@D9lb+VVdDOo zcN2|%oP3~=#mSsmfq=mJU^PhuTd9>d+7eM+rtAeBd*xo-)HsaZt&mQj z2Vuff3-+#)qnB8k7om)vlDT%sR&UU4LVfXDOTLuD_n-UWaU0dg!$km{1;avM)ADeI zRs5n>RC?9Iy^{@j!DQ=9s~gL0&J?!-U}m!>$`(HGe@Mo_(cvKJ;Pd$@H=%FbUp+fR zGkFKg#x@i?P)%it<|C=~raPduVbvSlADDWfQq9O&cBw&QVtrTRY=k^g&?i8V@agPGk&P2OUdZh}fypi0nv}Q}?iV>bUVC3sV51E*k z&~9v2fK?%U_%!T)(2EqxKxl!GOeO8QMsZ zy|k9JHD+Yr!Y1wET^4$zQfe@)MaMrmx0D^p7SLpkeP}n0|p2^c1U+rtyx-m~RVZ zE%wMsDaq8I5ds*Ar~F5l9-JfU#CR{B?tSn;Jq^9C~Ms8;iL^ z%(laOV-zH)3Z!Xqf=DHS^z#W4+F#vIOelK42St~6)nMhR}oA*ygr#r9zYnXKoeHGcE-F^3Ul;D#QcdLUuQHGL0I|| z*IDnEt(n3$93UDDgRdCocCAHhoUKdh{(S);e0E?U-cC0n<3(l49DRQ|w3(;8Kjh|i z5_N^$_f`h%ZKVEL&YbX-?oaoC$MmIJ+#OC7f;hSkhJW&K9nKRw-H+=C@x>=S#8zH!bka!$zwZ S#66zJ*G@7`jkI=khU5>sdrJ=h diff --git a/src/test/scala/it/AllIoTDeviceMessagesAreDelivered.scala b/src/test/scala/it/AllIoTDeviceMessagesAreDelivered.scala index 6bc26fa..bd0f026 100644 --- a/src/test/scala/it/AllIoTDeviceMessagesAreDelivered.scala +++ b/src/test/scala/it/AllIoTDeviceMessagesAreDelivered.scala @@ -19,81 +19,86 @@ import scala.language.postfixOps class AllIoTDeviceMessagesAreDelivered extends FeatureSpec with GivenWhenThen { - info("As a client of Azure IoT hub") - info("I want to be able to receive all device messages") - info("So I can process them all") + // TODO: we should use tags + if (!sys.env.contains("TRAVIS_PULL_REQUEST") || sys.env("TRAVIS_PULL_REQUEST") == "false") { - // A label shared by all the messages, to filter out data sent by other tests - val testRunId: String = s"[${this.getClass.getName}-" + java.util.UUID.randomUUID().toString + "]" + info("As a client of Azure IoT hub") + info("I want to be able to receive all device messages") + info("So I can process them all") - val counter = actorSystem.actorOf(Props[Counter], this.getClass.getName + "Counter") - counter ! "reset" + // A label shared by all the messages, to filter out data sent by other tests + val testRunId: String = s"[${this.getClass.getName}-" + java.util.UUID.randomUUID().toString + "]" - def readCounter: Long = { - Await.result(counter.ask("get")(5 seconds), 5 seconds).asInstanceOf[Long] - } + val counter = actorSystem.actorOf(Props[Counter], this.getClass.getName + "Counter") + counter ! "reset" - feature("All IoT device messages are delivered") { + def readCounter: Long = { + Await.result(counter.ask("get")(5 seconds), 5 seconds).asInstanceOf[Long] + } - scenario("Application wants to retrieve all IoT messages") { + feature("All IoT device messages are delivered") { - // How many seconds we allow the test to wait for messages from the stream - val TestTimeout = 60 seconds - val DevicesCount = 5 - val MessagesPerDevice = 3 - val expectedMessageCount = DevicesCount * MessagesPerDevice + scenario("Application wants to retrieve all IoT messages") { - // Create devices - val devices = new collection.mutable.ListMap[Int, Device]() - for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber) = new Device("device" + (10000 + deviceNumber)) + // How many seconds we allow the test to wait for messages from the stream + val TestTimeout = 60 seconds + val DevicesCount = 5 + val MessagesPerDevice = 3 + val expectedMessageCount = DevicesCount * MessagesPerDevice - // We'll use this as the streaming start date - val startTime = Instant.now().minusSeconds(30) - log.info(s"Test run: ${testRunId}, Start time: ${startTime}") + // Create devices + val devices = new collection.mutable.ListMap[Int, Device]() + for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber) = new Device("device" + (10000 + deviceNumber)) - Given("An IoT hub is configured") - val hub = IoTHub() - val messages = hub.source(startTime, false) + // We'll use this as the streaming start date + val startTime = Instant.now().minusSeconds(30) + log.info(s"Test run: ${testRunId}, Start time: ${startTime}") - And(s"${DevicesCount} devices have sent ${MessagesPerDevice} messages each") - for (msgNumber ← 1 to MessagesPerDevice) { - for (deviceNumber ← 0 until DevicesCount) { - devices(deviceNumber).sendMessage(testRunId, msgNumber) - // Workaround for issue 995 - if (msgNumber == 1) devices(deviceNumber).waitConfirmation() + Given("An IoT hub is configured") + val hub = IoTHub() + val messages = hub.source(startTime, false) + + And(s"${DevicesCount} devices have sent ${MessagesPerDevice} messages each") + for (msgNumber ← 1 to MessagesPerDevice) { + for (deviceNumber ← 0 until DevicesCount) { + devices(deviceNumber).sendMessage(testRunId, msgNumber) + // Workaround for issue 995 + if (msgNumber == 1) devices(deviceNumber).waitConfirmation() + } + for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).waitConfirmation() } - for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).waitConfirmation() + + for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).disconnect() + + log.info(s"Messages sent: $expectedMessageCount") + + When("A client application processes messages from the stream") + counter ! "reset" + val count = Sink.foreach[MessageFromDevice] { + m ⇒ counter ! "inc" + } + + messages + .filter(m ⇒ m.contentAsString contains testRunId) + .runWith(count) + + Then("Then the client application receives all the messages sent") + var time = TestTimeout.toMillis.toInt + val pause = time / 10 + var actualMessageCount = readCounter + while (time > 0 && actualMessageCount < expectedMessageCount) { + Thread.sleep(pause) + time -= pause + actualMessageCount = readCounter + log.info(s"Messages received so far: ${actualMessageCount} of ${expectedMessageCount} [Time left ${time / 1000} secs]") + } + + hub.close() + + assert(actualMessageCount == expectedMessageCount, + s"Expecting ${expectedMessageCount} messages but received ${actualMessageCount}") } - - for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).disconnect() - - log.info(s"Messages sent: $expectedMessageCount") - - When("A client application processes messages from the stream") - counter ! "reset" - val count = Sink.foreach[MessageFromDevice] { - m ⇒ counter ! "inc" - } - - messages - .filter(m ⇒ m.contentAsString contains testRunId) - .runWith(count) - - Then("Then the client application receives all the messages sent") - var time = TestTimeout.toMillis.toInt - val pause = time / 10 - var actualMessageCount = readCounter - while (time > 0 && actualMessageCount < expectedMessageCount) { - Thread.sleep(pause) - time -= pause - actualMessageCount = readCounter - log.info(s"Messages received so far: ${actualMessageCount} of ${expectedMessageCount} [Time left ${time / 1000} secs]") - } - - hub.close() - - assert(actualMessageCount == expectedMessageCount, - s"Expecting ${expectedMessageCount} messages but received ${actualMessageCount}") } } + } diff --git a/src/test/scala/it/DeviceIoTMessagesAreDeliveredInOrder.scala b/src/test/scala/it/DeviceIoTMessagesAreDeliveredInOrder.scala index 5de7edd..fa98aae 100644 --- a/src/test/scala/it/DeviceIoTMessagesAreDeliveredInOrder.scala +++ b/src/test/scala/it/DeviceIoTMessagesAreDeliveredInOrder.scala @@ -20,102 +20,106 @@ import scala.language.postfixOps class DeviceIoTMessagesAreDeliveredInOrder extends FeatureSpec with GivenWhenThen { - info("As a client of Azure IoT hub") - info("I want to receive the messages in order") - info("So I can process them in order") + // TODO: we should use tags + if (!sys.env.contains("TRAVIS_PULL_REQUEST") || sys.env("TRAVIS_PULL_REQUEST") == "false") { - // A label shared by all the messages, to filter out data sent by other tests - val testRunId: String = s"[${this.getClass.getName}-" + java.util.UUID.randomUUID().toString + "]" + info("As a client of Azure IoT hub") + info("I want to receive the messages in order") + info("So I can process them in order") - val counter = actorSystem.actorOf(Props[Counter], this.getClass.getName + "Counter") - counter ! "reset" + // A label shared by all the messages, to filter out data sent by other tests + val testRunId: String = s"[${this.getClass.getName}-" + java.util.UUID.randomUUID().toString + "]" - def readCounter: Long = { - Await.result(counter.ask("get")(5 seconds), 5 seconds).asInstanceOf[Long] - } + val counter = actorSystem.actorOf(Props[Counter], this.getClass.getName + "Counter") + counter ! "reset" - feature("Device IoT messages are delivered in order") { + def readCounter: Long = { + Await.result(counter.ask("get")(5 seconds), 5 seconds).asInstanceOf[Long] + } - // Note: messages are sent in parallel to obtain some level of mix in the - // storage, so do not refactor, i.e. don't do one device at a time. - scenario("Customer needs to process IoT messages in the right order") { + feature("Device IoT messages are delivered in order") { - // How many seconds we allow the test to wait for messages from the stream - val TestTimeout = 120 seconds - val DevicesCount = 25 - val MessagesPerDevice = 100 - val expectedMessageCount = DevicesCount * MessagesPerDevice + // Note: messages are sent in parallel to obtain some level of mix in the + // storage, so do not refactor, i.e. don't do one device at a time. + scenario("Customer needs to process IoT messages in the right order") { - // Initialize device objects - val devices = new collection.mutable.ListMap[Int, Device]() - for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber) = new Device("device" + (10000 + deviceNumber)) + // How many seconds we allow the test to wait for messages from the stream + val TestTimeout = 120 seconds + val DevicesCount = 25 + val MessagesPerDevice = 100 + val expectedMessageCount = DevicesCount * MessagesPerDevice - // We'll use this as the streaming start date - val startTime = Instant.now().minusSeconds(30) - log.info(s"Test run: ${testRunId}, Start time: ${startTime}") + // Initialize device objects + val devices = new collection.mutable.ListMap[Int, Device]() + for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber) = new Device("device" + (10000 + deviceNumber)) - Given("An IoT hub is configured") - val hub = IoTHub() - val messages = hub.source(startTime, false) + // We'll use this as the streaming start date + val startTime = Instant.now().minusSeconds(30) + log.info(s"Test run: ${testRunId}, Start time: ${startTime}") - And(s"${DevicesCount} devices have sent ${MessagesPerDevice} messages each") - for (msgNumber ← 1 to MessagesPerDevice) { - for (deviceNumber ← 0 until DevicesCount) { - devices(deviceNumber).sendMessage(testRunId, msgNumber) - // temporary workaround for issue 995 - if (msgNumber == 1) devices(deviceNumber).waitConfirmation() + Given("An IoT hub is configured") + val hub = IoTHub() + val messages = hub.source(startTime, false) + + And(s"${DevicesCount} devices have sent ${MessagesPerDevice} messages each") + for (msgNumber ← 1 to MessagesPerDevice) { + for (deviceNumber ← 0 until DevicesCount) { + devices(deviceNumber).sendMessage(testRunId, msgNumber) + // temporary workaround for issue 995 + if (msgNumber == 1) devices(deviceNumber).waitConfirmation() + } + + for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).waitConfirmation() } + for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).disconnect() + log.info(s"Messages sent: $expectedMessageCount") - for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).waitConfirmation() - } - for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber).disconnect() - log.info(s"Messages sent: $expectedMessageCount") + When("A client application processes messages from the stream") - When("A client application processes messages from the stream") + Then("Then the client receives all the messages ordered within each device") + counter ! "reset" + val cursors = new mutable.ParHashMap[String, Long] + val verifier = Sink.foreach[MessageFromDevice] { + m ⇒ { + counter ! "inc" + log.debug(s"device: ${m.deviceId}, seq: ${m.sequenceNumber} ") - Then("Then the client receives all the messages ordered within each device") - counter ! "reset" - val cursors = new mutable.ParHashMap[String, Long] - val verifier = Sink.foreach[MessageFromDevice] { - m ⇒ { - counter ! "inc" - log.debug(s"device: ${m.deviceId}, seq: ${m.sequenceNumber} ") - - if (!cursors.contains(m.deviceId)) { + if (!cursors.contains(m.deviceId)) { + cursors.put(m.deviceId, m.sequenceNumber) + } + if (cursors(m.deviceId) > m.sequenceNumber) { + fail(s"Message out of order. " + + s"Device ${m.deviceId}, message ${m.sequenceNumber} arrived " + + s"after message ${cursors(m.deviceId)}") + } cursors.put(m.deviceId, m.sequenceNumber) } - if (cursors(m.deviceId) > m.sequenceNumber) { - fail(s"Message out of order. " + - s"Device ${m.deviceId}, message ${m.sequenceNumber} arrived " + - s"after message ${cursors(m.deviceId)}") - } - cursors.put(m.deviceId, m.sequenceNumber) } + + messages + .filter(m ⇒ m.contentAsString contains (testRunId)) + .runWith(verifier) + + // Wait till all messages have been verified + var time = TestTimeout.toMillis.toInt + val pause = time / 12 + var actualMessageCount = readCounter + while (time > 0 && actualMessageCount < expectedMessageCount) { + Thread.sleep(pause) + time -= pause + actualMessageCount = readCounter + log.info(s"Messages received so far: ${actualMessageCount} of ${expectedMessageCount} [Time left ${time / 1000} secs]") + } + + log.info("Stopping stream") + hub.close() + + log.info(s"actual messages ${actualMessageCount}") + + assert( + actualMessageCount == expectedMessageCount, + s"Expecting ${expectedMessageCount} messages but received ${actualMessageCount}") } - - messages - .filter(m ⇒ m.contentAsString contains (testRunId)) - .runWith(verifier) - - // Wait till all messages have been verified - var time = TestTimeout.toMillis.toInt - val pause = time / 12 - var actualMessageCount = readCounter - while (time > 0 && actualMessageCount < expectedMessageCount) { - Thread.sleep(pause) - time -= pause - actualMessageCount = readCounter - log.info(s"Messages received so far: ${actualMessageCount} of ${expectedMessageCount} [Time left ${time / 1000} secs]") - } - - log.info("Stopping stream") - hub.close() - - log.info(s"actual messages ${actualMessageCount}") - - assert( - actualMessageCount == expectedMessageCount, - s"Expecting ${expectedMessageCount} messages but received ${actualMessageCount}") } } } diff --git a/src/test/scala/it/TestConnectivity.scala b/src/test/scala/it/TestConnectivity.scala index 0c71e7b..e08d3e0 100644 --- a/src/test/scala/it/TestConnectivity.scala +++ b/src/test/scala/it/TestConnectivity.scala @@ -15,86 +15,90 @@ import scala.language.{implicitConversions, postfixOps} class TestConnectivity extends FeatureSpec with GivenWhenThen { - info("As a test runner") - info("I want to connect to EventuHub") - info("So I can run the test suite") + // TODO: we should use tags + if (!sys.env.contains("TRAVIS_PULL_REQUEST") || sys.env("TRAVIS_PULL_REQUEST") == "false") { - // A label shared by all the messages, to filter out data sent by other tests - val testRunId = s"[${this.getClass.getName}-" + java.util.UUID.randomUUID().toString + "]" - val startTime = Instant.now().minusSeconds(60) + info("As a test runner") + info("I want to connect to EventuHub") + info("So I can run the test suite") - feature("The test suite can connect to IoT Hub") { + // A label shared by all the messages, to filter out data sent by other tests + val testRunId = s"[${this.getClass.getName}-" + java.util.UUID.randomUUID().toString + "]" + val startTime = Instant.now().minusSeconds(60) - scenario("The test uses the configured credentials") { + feature("The test suite can connect to IoT Hub") { - // Enough devices to hit the first partitions, so that the test ends quickly - val DevicesCount = 10 + scenario("The test uses the configured credentials") { - // Create devices - val devices = new collection.mutable.ListMap[Int, Device]() - for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber) = new Device("device" + (10000 + deviceNumber)) + // Enough devices to hit the first partitions, so that the test ends quickly + val DevicesCount = 10 - // Send a message from each device - for (deviceNumber ← 0 until DevicesCount) { - devices(deviceNumber).sendMessage(testRunId, 0) - // Workaround for issue 995 - devices(deviceNumber).waitConfirmation() - } + // Create devices + val devices = new collection.mutable.ListMap[Int, Device]() + for (deviceNumber ← 0 until DevicesCount) devices(deviceNumber) = new Device("device" + (10000 + deviceNumber)) - // Wait and disconnect - for (deviceNumber ← 0 until DevicesCount) { - devices(deviceNumber).waitConfirmation() - devices(deviceNumber).disconnect() - } - - val connString = new ConnectionStringBuilder( - Configuration.iotHubNamespace, - Configuration.iotHubName, - Configuration.accessPolicy, - Configuration.accessKey).toString - - log.info(s"Connecting to IoT Hub") - val client = EventHubClient.createFromConnectionStringSync(connString) - - var found = false - var attempts = 0 - var p = 0 - - // Check that at least one message arrived to IoT Hub - while (!found && p < Configuration.iotHubPartitions) { - - log.info(s"Checking partition ${p}") - val receiver: PartitionReceiver = client.createReceiverSync(Configuration.receiverConsumerGroup, p.toString, startTime) - - log.info("Receiver getEpoch(): " + receiver.getEpoch) - log.info("Receiver getPartitionId(): " + receiver.getPartitionId) - log.info("Receiver getPrefetchCount(): " + receiver.getPrefetchCount) - log.info("Receiver getReceiveTimeout(): " + receiver.getReceiveTimeout) - - attempts = 0 - while (!found && attempts < 100) { - attempts += 1 - - log.info(s"Receiving batch ${attempts}") - val records = receiver.receiveSync(999) - if (records == null) { - attempts = Int.MaxValue - log.info("This partition is empty") - } else { - val messages = records.asScala - log.info(s"Messages retrieved ${messages.size}") - - val matching = messages.filter(e ⇒ new String(e.getBody) contains testRunId) - log.info(s"Matching messages ${matching.size}") - - found = (matching.size > 0) - } + // Send a message from each device + for (deviceNumber ← 0 until DevicesCount) { + devices(deviceNumber).sendMessage(testRunId, 0) + // Workaround for issue 995 + devices(deviceNumber).waitConfirmation() } - p += 1 - } + // Wait and disconnect + for (deviceNumber ← 0 until DevicesCount) { + devices(deviceNumber).waitConfirmation() + devices(deviceNumber).disconnect() + } - assert(found, s"Expecting to find at least one of the messages sent") + val connString = new ConnectionStringBuilder( + Configuration.iotHubNamespace, + Configuration.iotHubName, + Configuration.accessPolicy, + Configuration.accessKey).toString + + log.info(s"Connecting to IoT Hub") + val client = EventHubClient.createFromConnectionStringSync(connString) + + var found = false + var attempts = 0 + var p = 0 + + // Check that at least one message arrived to IoT Hub + while (!found && p < Configuration.iotHubPartitions) { + + log.info(s"Checking partition ${p}") + val receiver: PartitionReceiver = client.createReceiverSync(Configuration.receiverConsumerGroup, p.toString, startTime) + + log.info("Receiver getEpoch(): " + receiver.getEpoch) + log.info("Receiver getPartitionId(): " + receiver.getPartitionId) + log.info("Receiver getPrefetchCount(): " + receiver.getPrefetchCount) + log.info("Receiver getReceiveTimeout(): " + receiver.getReceiveTimeout) + + attempts = 0 + while (!found && attempts < 100) { + attempts += 1 + + log.info(s"Receiving batch ${attempts}") + val records = receiver.receiveSync(999) + if (records == null) { + attempts = Int.MaxValue + log.info("This partition is empty") + } else { + val messages = records.asScala + log.info(s"Messages retrieved ${messages.size}") + + val matching = messages.filter(e ⇒ new String(e.getBody) contains testRunId) + log.info(s"Matching messages ${matching.size}") + + found = (matching.size > 0) + } + } + + p += 1 + } + + assert(found, s"Expecting to find at least one of the messages sent") + } } } }