[libvirt] [PATCH v2 REBASE] lib: provide error message in new blockjob event
by Nikolay Shirokovskiy
If block job is completed with error qemu additionally
provides error message. This patch introduces new event
VIR_DOMAIN_EVENT_ID_BLOCK_JOB_ERROR to pass error message to client.
This error message has no semantics and should not be interpreted.
API and RPC layer also have reserved 'code' field to pass semantics
loaded error code value in the future.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy(a)virtuozzo.com>
---
Diff from v1 [1]:
- replace block job event version 3 with block job error event
- add code field to API/RPC to pass error code in the future
Peter, I decided not to use enum/union as this looks like to much effort to extend
code generation for this simple case. Using typed params looks unsuitable too.
[1] https://www.redhat.com/archives/libvir-list/2017-October/msg01369.html
examples/object-events/event-test.c | 20 ++++++++
include/libvirt/libvirt-domain.h | 25 ++++++++++
src/conf/domain_event.c | 92 +++++++++++++++++++++++++++++++++++++
src/conf/domain_event.h | 13 ++++++
src/libvirt_private.syms | 2 +
src/qemu/qemu_blockjob.c | 10 +++-
src/qemu/qemu_blockjob.h | 3 +-
src/qemu/qemu_domain.c | 4 +-
src/qemu/qemu_domain.h | 1 +
src/qemu/qemu_driver.c | 9 ++--
src/qemu/qemu_process.c | 1 +
src/remote/remote_daemon_dispatch.c | 48 +++++++++++++++++++
src/remote/remote_driver.c | 34 ++++++++++++++
src/remote/remote_protocol.x | 17 ++++++-
src/remote_protocol-structs | 9 ++++
tools/virsh-domain.c | 24 ++++++++++
16 files changed, 304 insertions(+), 8 deletions(-)
diff --git a/examples/object-events/event-test.c b/examples/object-events/event-test.c
index 8499e0b..23d5a3f 100644
--- a/examples/object-events/event-test.c
+++ b/examples/object-events/event-test.c
@@ -936,6 +936,25 @@ myDomainEventBlockJobCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
+myDomainEventBlockJobErrorCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
+ virDomainPtr dom,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message,
+ void *opaque)
+{
+ const char *eventName = opaque;
+
+ printf("%s EVENT: Domain %s(%d) block job error callback '%s' disk '%s', "
+ "type '%s' code '%u' message '%s'",
+ __func__, virDomainGetName(dom), virDomainGetID(dom), eventName,
+ dev, blockJobTypeToStr(type), code, NULLSTR(message));
+ return 0;
+}
+
+
+static int
myDomainEventBlockThresholdCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
virDomainPtr dom,
const char *dev,
@@ -1082,6 +1101,7 @@ struct domainEventData domainEvents[] = {
DOMAIN_EVENT(VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED, myDomainEventDeviceRemovalFailedCallback),
DOMAIN_EVENT(VIR_DOMAIN_EVENT_ID_METADATA_CHANGE, myDomainEventMetadataChangeCallback),
DOMAIN_EVENT(VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD, myDomainEventBlockThresholdCallback),
+ DOMAIN_EVENT(VIR_DOMAIN_EVENT_ID_BLOCK_JOB_ERROR, myDomainEventBlockJobErrorCallback),
};
struct storagePoolEventData {
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index 12fd340..ee55ab9 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -4370,6 +4370,30 @@ typedef void (*virConnectDomainEventBlockThresholdCallback)(virConnectPtr conn,
unsigned long long excess,
void *opaque);
+
+/**
+ * virConnectDomainEventBlockJobErrorCallback:
+ * @conn: connection object
+ * @dom: domain on which the event occurred
+ * @dev: name associated with the affected disk or storage backing chain
+ * element
+ * @type: type of block job (virDomainBlockJobType)
+ * @code: always 0, reserved for future use
+ * @message: error message with no semantics, can be NULL
+ * @opaque: application specified data
+ *
+ * The callback occurs when block job is completed with error and provides
+ * error message in @message.
+ *
+ */
+typedef void (*virConnectDomainEventBlockJobErrorCallback)(virConnectPtr conn,
+ virDomainPtr dom,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message,
+ void *opaque);
+
/**
* VIR_DOMAIN_EVENT_CALLBACK:
*
@@ -4412,6 +4436,7 @@ typedef enum {
VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED = 22, /* virConnectDomainEventDeviceRemovalFailedCallback */
VIR_DOMAIN_EVENT_ID_METADATA_CHANGE = 23, /* virConnectDomainEventMetadataChangeCallback */
VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD = 24, /* virConnectDomainEventBlockThresholdCallback */
+ VIR_DOMAIN_EVENT_ID_BLOCK_JOB_ERROR = 25, /* virConnectDomainEventBlockJobErrorCallback */
# ifdef VIR_ENUM_SENTINELS
VIR_DOMAIN_EVENT_ID_LAST
diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c
index 9752070..54f4cf4 100644
--- a/src/conf/domain_event.c
+++ b/src/conf/domain_event.c
@@ -47,6 +47,7 @@ static virClassPtr virDomainEventWatchdogClass;
static virClassPtr virDomainEventIOErrorClass;
static virClassPtr virDomainEventGraphicsClass;
static virClassPtr virDomainEventBlockJobClass;
+static virClassPtr virDomainEventBlockJobErrorClass;
static virClassPtr virDomainEventDiskChangeClass;
static virClassPtr virDomainEventTrayChangeClass;
static virClassPtr virDomainEventBalloonChangeClass;
@@ -69,6 +70,7 @@ static void virDomainEventWatchdogDispose(void *obj);
static void virDomainEventIOErrorDispose(void *obj);
static void virDomainEventGraphicsDispose(void *obj);
static void virDomainEventBlockJobDispose(void *obj);
+static void virDomainEventBlockJobErrorDispose(void *obj);
static void virDomainEventDiskChangeDispose(void *obj);
static void virDomainEventTrayChangeDispose(void *obj);
static void virDomainEventBalloonChangeDispose(void *obj);
@@ -151,6 +153,17 @@ struct _virDomainEventBlockJob {
typedef struct _virDomainEventBlockJob virDomainEventBlockJob;
typedef virDomainEventBlockJob *virDomainEventBlockJobPtr;
+struct _virDomainEventBlockJobError {
+ virDomainEvent parent;
+
+ char *dev;
+ int type;
+ unsigned int code;
+ char *message;
+};
+typedef struct _virDomainEventBlockJobError virDomainEventBlockJobError;
+typedef virDomainEventBlockJobError *virDomainEventBlockJobErrorPtr;
+
struct _virDomainEventGraphics {
virDomainEvent parent;
@@ -309,6 +322,8 @@ virDomainEventsOnceInit(void)
return -1;
if (!VIR_CLASS_NEW(virDomainEventBlockJob, virDomainEventClass))
return -1;
+ if (!VIR_CLASS_NEW(virDomainEventBlockJobError, virDomainEventClass))
+ return -1;
if (!VIR_CLASS_NEW(virDomainEventDiskChange, virDomainEventClass))
return -1;
if (!VIR_CLASS_NEW(virDomainEventTrayChange, virDomainEventClass))
@@ -420,6 +435,16 @@ virDomainEventBlockJobDispose(void *obj)
}
static void
+virDomainEventBlockJobErrorDispose(void *obj)
+{
+ virDomainEventBlockJobErrorPtr event = obj;
+ VIR_DEBUG("obj=%p", event);
+
+ VIR_FREE(event->dev);
+ VIR_FREE(event->message);
+}
+
+static void
virDomainEventDiskChangeDispose(void *obj)
{
virDomainEventDiskChangePtr event = obj;
@@ -977,6 +1002,59 @@ virDomainEventBlockJob2NewFromDom(virDomainPtr dom,
dst, type, status);
}
+static virObjectEventPtr
+virDomainEventBlockJobErrorNew(int id,
+ const char *name,
+ unsigned char *uuid,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message)
+{
+ virDomainEventBlockJobErrorPtr ev;
+
+ if (virDomainEventsInitialize() < 0)
+ return NULL;
+
+ if (!(ev = virDomainEventNew(virDomainEventBlockJobErrorClass,
+ VIR_DOMAIN_EVENT_ID_BLOCK_JOB_ERROR,
+ id, name, uuid)))
+ return NULL;
+
+ if (VIR_STRDUP(ev->dev, dev) < 0) {
+ virObjectUnref(ev);
+ return NULL;
+ }
+ ignore_value(VIR_STRDUP_QUIET(ev->message, message));
+ ev->type = type;
+ ev->code = code;
+
+ return (virObjectEventPtr)ev;
+}
+
+virObjectEventPtr
+virDomainEventBlockJobErrorNewFromObj(virDomainObjPtr obj,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message)
+{
+ return virDomainEventBlockJobErrorNew(obj->def->id, obj->def->name,
+ obj->def->uuid, dev, type, code,
+ message);
+}
+
+virObjectEventPtr
+virDomainEventBlockJobErrorNewFromDom(virDomainPtr dom,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message)
+{
+ return virDomainEventBlockJobErrorNew(dom->id, dom->name, dom->uuid,
+ dev, type, code, message);
+}
+
virObjectEventPtr
virDomainEventControlErrorNewFromDom(virDomainPtr dom)
{
@@ -1787,6 +1865,20 @@ virDomainEventDispatchDefaultFunc(virConnectPtr conn,
goto cleanup;
}
+ case VIR_DOMAIN_EVENT_ID_BLOCK_JOB_ERROR:
+ {
+ virDomainEventBlockJobErrorPtr blockJobErrorEvent;
+
+ blockJobErrorEvent = (virDomainEventBlockJobErrorPtr)event;
+ ((virConnectDomainEventBlockJobErrorCallback)cb)(conn, dom,
+ blockJobErrorEvent->dev,
+ blockJobErrorEvent->type,
+ blockJobErrorEvent->code,
+ blockJobErrorEvent->message,
+ cbopaque);
+ goto cleanup;
+ }
+
case VIR_DOMAIN_EVENT_ID_DISK_CHANGE:
{
virDomainEventDiskChangePtr diskChangeEvent;
diff --git a/src/conf/domain_event.h b/src/conf/domain_event.h
index 3992a29..456026c 100644
--- a/src/conf/domain_event.h
+++ b/src/conf/domain_event.h
@@ -138,6 +138,19 @@ virDomainEventBlockJob2NewFromDom(virDomainPtr dom,
int status);
virObjectEventPtr
+virDomainEventBlockJobErrorNewFromObj(virDomainObjPtr obj,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message);
+virObjectEventPtr
+virDomainEventBlockJobErrorNewFromDom(virDomainPtr dom,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message);
+
+virObjectEventPtr
virDomainEventDiskChangeNewFromObj(virDomainObjPtr obj,
const char *oldSrcPath,
const char *newSrcPath,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index b31f599..303f28c 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -589,6 +589,8 @@ virDomainEventBalloonChangeNewFromDom;
virDomainEventBalloonChangeNewFromObj;
virDomainEventBlockJob2NewFromDom;
virDomainEventBlockJob2NewFromObj;
+virDomainEventBlockJobErrorNewFromDom;
+virDomainEventBlockJobErrorNewFromObj;
virDomainEventBlockJobNewFromDom;
virDomainEventBlockJobNewFromObj;
virDomainEventBlockThresholdNewFromDom;
diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c
index 617e4ee..4df4ed6 100644
--- a/src/qemu/qemu_blockjob.c
+++ b/src/qemu/qemu_blockjob.c
@@ -70,7 +70,8 @@ qemuBlockJobUpdate(virQEMUDriverPtr driver,
if (status != -1) {
qemuBlockJobEventProcess(driver, vm, disk, asyncJob,
diskPriv->blockJobType,
- diskPriv->blockJobStatus);
+ diskPriv->blockJobStatus,
+ diskPriv->blockJobError);
diskPriv->blockJobStatus = -1;
if (error)
VIR_STEAL_PTR(*error, diskPriv->blockJobError);
@@ -100,10 +101,12 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
virDomainDiskDefPtr disk,
qemuDomainAsyncJob asyncJob,
int type,
- int status)
+ int status,
+ const char *error)
{
virObjectEventPtr event = NULL;
virObjectEventPtr event2 = NULL;
+ virObjectEventPtr errorEvent = NULL;
const char *path;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
virDomainDiskDefPtr persistDisk = NULL;
@@ -123,6 +126,8 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
path = virDomainDiskGetSource(disk);
event = virDomainEventBlockJobNewFromObj(vm, path, type, status);
event2 = virDomainEventBlockJob2NewFromObj(vm, disk->dst, type, status);
+ if (error)
+ errorEvent = virDomainEventBlockJobErrorNewFromObj(vm, disk->dst, type, 0, error);
/* If we completed a block pull or commit, then update the XML
* to match. */
@@ -213,6 +218,7 @@ qemuBlockJobEventProcess(virQEMUDriverPtr driver,
qemuDomainEventQueue(driver, event);
qemuDomainEventQueue(driver, event2);
+ qemuDomainEventQueue(driver, errorEvent);
virObjectUnref(cfg);
}
diff --git a/src/qemu/qemu_blockjob.h b/src/qemu/qemu_blockjob.h
index e71d691..18bcaaa 100644
--- a/src/qemu/qemu_blockjob.h
+++ b/src/qemu/qemu_blockjob.h
@@ -36,7 +36,8 @@ void qemuBlockJobEventProcess(virQEMUDriverPtr driver,
virDomainDiskDefPtr disk,
qemuDomainAsyncJob asyncJob,
int type,
- int status);
+ int status,
+ const char *error);
void qemuBlockJobSyncBegin(virDomainDiskDefPtr disk);
void qemuBlockJobSyncEnd(virQEMUDriverPtr driver,
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e2a8450..883652d 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -11951,12 +11951,14 @@ qemuProcessEventFree(struct qemuProcessEvent *event)
case QEMU_PROCESS_EVENT_GUESTPANIC:
qemuMonitorEventPanicInfoFree(event->data);
break;
+ case QEMU_PROCESS_EVENT_MONITOR_EOF:
+ VIR_FREE(event->error);
+ ATTRIBUTE_FALLTHROUGH;
case QEMU_PROCESS_EVENT_WATCHDOG:
case QEMU_PROCESS_EVENT_DEVICE_DELETED:
case QEMU_PROCESS_EVENT_NIC_RX_FILTER_CHANGED:
case QEMU_PROCESS_EVENT_SERIAL_CHANGED:
case QEMU_PROCESS_EVENT_BLOCK_JOB:
- case QEMU_PROCESS_EVENT_MONITOR_EOF:
VIR_FREE(event->data);
break;
case QEMU_PROCESS_EVENT_LAST:
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 2c27dfb..f3b262f 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -456,6 +456,7 @@ struct qemuProcessEvent {
int action;
int status;
void *data;
+ char *error;
};
void qemuProcessEventFree(struct qemuProcessEvent *event);
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 5673d9f..cefbe52 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4748,7 +4748,8 @@ processBlockJobEvent(virQEMUDriverPtr driver,
virDomainObjPtr vm,
const char *diskAlias,
int type,
- int status)
+ int status,
+ char *error)
{
virDomainDiskDefPtr disk;
@@ -4761,7 +4762,8 @@ processBlockJobEvent(virQEMUDriverPtr driver,
}
if ((disk = qemuProcessFindDomainDiskByAlias(vm, diskAlias)))
- qemuBlockJobEventProcess(driver, vm, disk, QEMU_ASYNC_JOB_NONE, type, status);
+ qemuBlockJobEventProcess(driver, vm, disk, QEMU_ASYNC_JOB_NONE,
+ type, status, error);
endjob:
qemuDomainObjEndJob(driver, vm);
@@ -4846,7 +4848,8 @@ static void qemuProcessEventHandler(void *data, void *opaque)
processBlockJobEvent(driver, vm,
processEvent->data,
processEvent->action,
- processEvent->status);
+ processEvent->status,
+ processEvent->error);
break;
case QEMU_PROCESS_EVENT_MONITOR_EOF:
processMonitorEOFEvent(driver, vm);
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 6a5262a..12b156f 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -1026,6 +1026,7 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
processEvent->vm = virObjectRef(vm);
processEvent->action = type;
processEvent->status = status;
+ ignore_value(VIR_STRDUP_QUIET(processEvent->error, error));
if (virThreadPoolSendJob(driver->workerPool, 0, processEvent) < 0) {
ignore_value(virObjectUnref(vm));
diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c
index a8a5932..07c9dbb 100644
--- a/src/remote/remote_daemon_dispatch.c
+++ b/src/remote/remote_daemon_dispatch.c
@@ -1342,6 +1342,53 @@ remoteRelayDomainEventBlockThreshold(virConnectPtr conn,
}
+static int
+remoteRelayDomainEventBlockJobError(virConnectPtr conn,
+ virDomainPtr dom,
+ const char *dev,
+ int type,
+ unsigned int code,
+ const char *message,
+ void *opaque)
+{
+ daemonClientEventCallbackPtr callback = opaque;
+ remote_domain_event_block_job_error_msg msg;
+
+ if (callback->callbackID < 0 ||
+ !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
+ return -1;
+
+ VIR_DEBUG("Relaying domain block job error event %s %d %s %i %u %s, callback %d",
+ dom->name, dom->id, dev, type, code, NULLSTR(message),
+ callback->callbackID);
+
+ memset(&msg, 0, sizeof(msg));
+ msg.callbackID = callback->callbackID;
+ if (VIR_STRDUP(msg.dev, dev) < 0)
+ return -1;
+ if (message) {
+ if (VIR_ALLOC(msg.message) < 0 ||
+ VIR_STRDUP(*(msg.message), message) < 0)
+ goto error;
+ }
+ msg.type = type;
+ msg.code = code;
+ make_nonnull_domain(&msg.dom, dom);
+
+ remoteDispatchObjectEventSend(callback->client, remoteProgram,
+ REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB_ERROR,
+ (xdrproc_t)xdr_remote_domain_event_block_job_error_msg,
+ &msg);
+ return 0;
+
+ error:
+ VIR_FREE(msg.dev);
+ VIR_FREE(msg.message);
+
+ return -1;
+}
+
+
static virConnectDomainEventGenericCallback domainEventCallbacks[] = {
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventLifecycle),
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventReboot),
@@ -1368,6 +1415,7 @@ static virConnectDomainEventGenericCallback domainEventCallbacks[] = {
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventDeviceRemovalFailed),
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventMetadataChange),
VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventBlockThreshold),
+ VIR_DOMAIN_EVENT_CALLBACK(remoteRelayDomainEventBlockJobError),
};
verify(ARRAY_CARDINALITY(domainEventCallbacks) == VIR_DOMAIN_EVENT_ID_LAST);
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index d3b588c..0d30bf3 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -405,6 +405,11 @@ remoteConnectNotifyEventConnectionClosed(virNetClientProgramPtr prog ATTRIBUTE_U
virNetClientPtr client ATTRIBUTE_UNUSED,
void *evdata, void *opaque);
+static void
+remoteDomainBuildEventBlockJobError(virNetClientProgramPtr prog,
+ virNetClientPtr client,
+ void *evdata, void *opaque);
+
static virNetClientProgramEvent remoteEvents[] = {
{ REMOTE_PROC_DOMAIN_EVENT_LIFECYCLE,
remoteDomainBuildEventLifecycle,
@@ -611,6 +616,10 @@ static virNetClientProgramEvent remoteEvents[] = {
remoteDomainBuildEventBlockThreshold,
sizeof(remote_domain_event_block_threshold_msg),
(xdrproc_t)xdr_remote_domain_event_block_threshold_msg },
+ { REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB_ERROR,
+ remoteDomainBuildEventBlockJobError,
+ sizeof(remote_domain_event_block_job_error_msg),
+ (xdrproc_t)xdr_remote_domain_event_block_job_error_msg },
};
static void
@@ -5533,6 +5542,31 @@ remoteDomainBuildEventBlockThreshold(virNetClientProgramPtr prog ATTRIBUTE_UNUSE
}
+static void
+remoteDomainBuildEventBlockJobError(virNetClientProgramPtr prog ATTRIBUTE_UNUSED,
+ virNetClientPtr client ATTRIBUTE_UNUSED,
+ void *evdata, void *opaque)
+{
+ virConnectPtr conn = opaque;
+ remote_domain_event_block_job_error_msg *msg = evdata;
+ struct private_data *priv = conn->privateData;
+ virDomainPtr dom;
+ virObjectEventPtr event = NULL;
+
+ dom = get_nonnull_domain(conn, msg->dom);
+ if (!dom)
+ return;
+
+ event = virDomainEventBlockJobErrorNewFromDom(dom, msg->dev, msg->type,
+ msg->code,
+ msg->message ? *msg->message : NULL);
+
+ virObjectUnref(dom);
+
+ remoteEventQueue(priv, event, msg->callbackID);
+}
+
+
static int
remoteStreamSend(virStreamPtr st,
const char *data,
diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
index 296a087..051a773 100644
--- a/src/remote/remote_protocol.x
+++ b/src/remote/remote_protocol.x
@@ -3103,6 +3103,15 @@ struct remote_domain_event_block_job_2_msg {
int status;
};
+struct remote_domain_event_block_job_error_msg {
+ int callbackID;
+ remote_nonnull_domain dom;
+ remote_nonnull_string dev;
+ int type;
+ int code;
+ remote_string message;
+};
+
struct remote_domain_event_block_threshold_msg {
int callbackID;
remote_nonnull_domain dom;
@@ -6135,5 +6144,11 @@ enum remote_procedure {
* @priority: high
* @acl: storage_pool:getattr
*/
- REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_TARGET_PATH = 391
+ REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_TARGET_PATH = 391,
+
+ /**
+ * @generate: none
+ * @acl: none
+ */
+ REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB_ERROR = 392
};
diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
index fe163db..567f307 100644
--- a/src/remote_protocol-structs
+++ b/src/remote_protocol-structs
@@ -2541,6 +2541,14 @@ struct remote_domain_event_block_job_2_msg {
int type;
int status;
};
+struct remote_domain_event_block_job_error_msg {
+ int callbackID;
+ remote_nonnull_domain dom;
+ remote_nonnull_string dev;
+ int type;
+ int code;
+ remote_string message;
+};
struct remote_domain_event_block_threshold_msg {
int callbackID;
remote_nonnull_domain dom;
@@ -3269,4 +3277,5 @@ enum remote_procedure {
REMOTE_PROC_DOMAIN_MANAGED_SAVE_DEFINE_XML = 389,
REMOTE_PROC_DOMAIN_SET_LIFECYCLE_ACTION = 390,
REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_TARGET_PATH = 391,
+ REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB_ERROR = 392,
};
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 2b775fc..40d3c82 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -13286,6 +13286,28 @@ virshEventBlockThresholdPrint(virConnectPtr conn ATTRIBUTE_UNUSED,
}
+static void
+virshEventBlockJobErrorPrint(virConnectPtr conn ATTRIBUTE_UNUSED,
+ virDomainPtr dom,
+ const char *dev,
+ int type,
+ unsigned int code ATTRIBUTE_UNUSED,
+ const char *message,
+ void *opaque)
+{
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
+
+ virBufferAsprintf(&buf, _("event '%s' for domain %s: %s for %s, "
+ "error: %s\n"),
+ ((virshDomEventData *) opaque)->cb->name,
+ virDomainGetName(dom),
+ virshDomainBlockJobToString(type),
+ dev,
+ NULLSTR(message));
+ virshEventPrint(opaque, &buf);
+}
+
+
static vshEventCallback vshEventCallbacks[] = {
{ "lifecycle",
VIR_DOMAIN_EVENT_CALLBACK(virshEventLifecyclePrint), },
@@ -13335,6 +13357,8 @@ static vshEventCallback vshEventCallbacks[] = {
VIR_DOMAIN_EVENT_CALLBACK(virshEventMetadataChangePrint), },
{ "block-threshold",
VIR_DOMAIN_EVENT_CALLBACK(virshEventBlockThresholdPrint), },
+ { "block-job-error",
+ VIR_DOMAIN_EVENT_CALLBACK(virshEventBlockJobErrorPrint), },
};
verify(VIR_DOMAIN_EVENT_ID_LAST == ARRAY_CARDINALITY(vshEventCallbacks));
--
1.8.3.1
6 years, 7 months
[libvirt] [PATCH 00/35] qemu: Add formatting of JSON objects for -blockdev (blockdev-add saga)
by Peter Krempa
Diff to the RFC posting:
- host_device and host_cdrom handling was added
- modified code to format and parse node-names to status XML so that we
can add other node names easier (for quorum, throttling, etc)
- added test case for host_device
Kevin, please sanity check the outputs whether they make sense. Thanks.
Peter Krempa (35):
storage: Properly track that backing chain members are readonly
qemu: domain: Format storage source node names into private data
util: storage: Add shadow copies of few disk properties to
virStorageSource
qemu: domain: Carefuly transfer configuration from disk to storage
source
qemu: block: Extract formatting of props for 'file' backend
qemu: block: Handle iomode property for json 'file' driver
utils: storage: Mark that a virStorageSource is going to be used as a
floppy
qemu: Move virtual FAT disk validation from command line builder
qemu: block: Add support for accessing directories via the 'vvfat'
driver
util: file: Use only one #ifdef for __linux__
util: file: Add helper to determine whether a path is a CDROM
qemu: domain: Store whether a virStorageSource is a host CDROM drive
qemu: block: Properly handle block storage in JSON generator
qemu: block: Propagate 'legacy' parameter when formatting disk backing
qemu: block: Validate node-names for use with qemu
qemu: block: Format cache modes for disk storage backends
qemu: block: Format 'read-only' attribute for JSON disk protocol
qemu: block: Always set discard for storage nodes
qemu: block: Add support for creating 'format' layer for blockdev-add
tests: qemublock: Rename variables in anticipation of new tests
tests: Makefile: Sanitize entry for qemublocktest
qemu: domain: Export qemuDomainDeviceDefValidateDisk
qemu: domain: Tolerate NULL 'cfg' in qemuDomainPrepareDiskSourceChain
tests: qemublock: Add testing of blockdev JSON property generator
tests: qemublock: Add basic 'raw' file test
tests: qemublock: Add tests for all other format without special
options
tests: qemublock: Add tests for basic backing chain formats
tests: qemublock: Add test-case for the 'vvfat' driver in qemu
tests: qemublock: Add test cases for 'aio' options of 'file' storage
tests: qemublock: Add test for raw luks disk format
tests: qemublock: basic qcow2 tests
tests: qemublock: Add test combining authentication and encryption
tests: qemublock: Test handling of 'unmap' and 'detect-zeroes' options
tests: qemublock: Test handling of all cache modes
tests: qemublock: Test handling of block devices
src/conf/domain_conf.c | 3 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_block.c | 430 ++++++++++++++++++++-
src/qemu/qemu_block.h | 6 +-
src/qemu/qemu_command.c | 16 +-
src/qemu/qemu_domain.c | 61 ++-
src/qemu/qemu_domain.h | 3 +
src/qemu/qemu_driver.c | 3 +
src/util/virfile.c | 61 ++-
src/util/virfile.h | 2 +
src/util/virstoragefile.c | 5 +
src/util/virstoragefile.h | 13 +
tests/Makefile.am | 11 +-
tests/qemublocktest.c | 314 ++++++++++++++-
.../xml2json/block-raw-noopts.json | 12 +
.../xml2json/block-raw-noopts.xml | 12 +
.../qemublocktestdata/xml2json/dir-fat-cache.json | 22 ++
tests/qemublocktestdata/xml2json/dir-fat-cache.xml | 13 +
.../qemublocktestdata/xml2json/dir-fat-floppy.json | 14 +
.../qemublocktestdata/xml2json/dir-fat-floppy.xml | 14 +
.../xml2json/dir-fat-readonly.json | 14 +
.../xml2json/dir-fat-readonly.xml | 13 +
.../xml2json/file-backing_basic-aio_threads.json | 62 +++
.../xml2json/file-backing_basic-aio_threads.xml | 47 +++
.../file-backing_basic-cache-directsync.json | 91 +++++
.../file-backing_basic-cache-directsync.xml | 47 +++
.../xml2json/file-backing_basic-cache-none.json | 91 +++++
.../xml2json/file-backing_basic-cache-none.xml | 47 +++
.../xml2json/file-backing_basic-cache-unsafe.json | 91 +++++
.../xml2json/file-backing_basic-cache-unsafe.xml | 47 +++
.../file-backing_basic-cache-writeback.json | 91 +++++
.../file-backing_basic-cache-writeback.xml | 47 +++
.../file-backing_basic-cache-writethrough.json | 91 +++++
.../file-backing_basic-cache-writethrough.xml | 47 +++
.../xml2json/file-backing_basic-detect.json | 60 +++
.../xml2json/file-backing_basic-detect.xml | 47 +++
.../xml2json/file-backing_basic-noopts.json | 51 +++
.../xml2json/file-backing_basic-noopts.xml | 46 +++
.../xml2json/file-backing_basic-unmap-detect.json | 64 +++
.../xml2json/file-backing_basic-unmap-detect.xml | 47 +++
.../xml2json/file-backing_basic-unmap-discard.json | 0
.../xml2json/file-backing_basic-unmap-ignore.json | 64 +++
.../xml2json/file-backing_basic-unmap-ignore.xml | 47 +++
.../xml2json/file-backing_basic-unmap.json | 63 +++
.../xml2json/file-backing_basic-unmap.xml | 47 +++
.../xml2json/file-bochs-noopts.json | 12 +
.../xml2json/file-bochs-noopts.xml | 12 +
.../xml2json/file-cloop-noopts.json | 12 +
.../xml2json/file-cloop-noopts.xml | 12 +
.../xml2json/file-dmg-noopts.json | 12 +
.../qemublocktestdata/xml2json/file-dmg-noopts.xml | 12 +
.../xml2json/file-ploop-noopts.json | 12 +
.../xml2json/file-ploop-noopts.xml | 12 +
.../file-qcow2-backing-chain-encryption.json | 34 ++
.../file-qcow2-backing-chain-encryption.xml | 31 ++
.../xml2json/file-qcow2-backing-chain-noopts.json | 130 +++++++
.../xml2json/file-qcow2-backing-chain-noopts.xml | 113 ++++++
.../file-qcow2-backing-chain-unterminated.json | 25 ++
.../file-qcow2-backing-chain-unterminated.xml | 24 ++
.../xml2json/file-raw-aio_native.json | 21 +
.../xml2json/file-raw-aio_native.xml | 12 +
.../qemublocktestdata/xml2json/file-raw-luks.json | 13 +
tests/qemublocktestdata/xml2json/file-raw-luks.xml | 15 +
.../xml2json/file-raw-noopts.json | 12 +
.../qemublocktestdata/xml2json/file-raw-noopts.xml | 12 +
.../xml2json/file-vdi-noopts.json | 12 +
.../qemublocktestdata/xml2json/file-vdi-noopts.xml | 12 +
.../xml2json/file-vhd-noopts.json | 12 +
.../qemublocktestdata/xml2json/file-vhd-noopts.xml | 12 +
.../xml2json/file-vpc-noopts.json | 12 +
.../qemublocktestdata/xml2json/file-vpc-noopts.xml | 12 +
.../network-qcow2-backing-chain-cache-unsafe.json | 57 +++
.../network-qcow2-backing-chain-cache-unsafe.xml | 31 ++
...etwork-qcow2-backing-chain-encryption_auth.json | 51 +++
...network-qcow2-backing-chain-encryption_auth.xml | 40 ++
.../xml2json/nodename-long-format.xml | 12 +
.../xml2json/nodename-long-protocol.xml | 12 +
tests/qemustatusxml2xmldata/modern-in.xml | 4 +
78 files changed, 3155 insertions(+), 40 deletions(-)
create mode 100644 tests/qemublocktestdata/xml2json/block-raw-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/block-raw-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/dir-fat-cache.json
create mode 100644 tests/qemublocktestdata/xml2json/dir-fat-cache.xml
create mode 100644 tests/qemublocktestdata/xml2json/dir-fat-floppy.json
create mode 100644 tests/qemublocktestdata/xml2json/dir-fat-floppy.xml
create mode 100644 tests/qemublocktestdata/xml2json/dir-fat-readonly.json
create mode 100644 tests/qemublocktestdata/xml2json/dir-fat-readonly.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-none.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-none.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-detect.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-detect.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-unmap-discard.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-unmap.json
create mode 100644 tests/qemublocktestdata/xml2json/file-backing_basic-unmap.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-bochs-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-bochs-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-cloop-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-cloop-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-dmg-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-dmg-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-ploop-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-ploop-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption.json
create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated.json
create mode 100644 tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-raw-aio_native.json
create mode 100644 tests/qemublocktestdata/xml2json/file-raw-aio_native.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-raw-luks.json
create mode 100644 tests/qemublocktestdata/xml2json/file-raw-luks.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-raw-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-raw-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-vdi-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-vdi-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-vhd-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-vhd-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/file-vpc-noopts.json
create mode 100644 tests/qemublocktestdata/xml2json/file-vpc-noopts.xml
create mode 100644 tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe.json
create mode 100644 tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe.xml
create mode 100644 tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth.json
create mode 100644 tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth.xml
create mode 100644 tests/qemublocktestdata/xml2json/nodename-long-format.xml
create mode 100644 tests/qemublocktestdata/xml2json/nodename-long-protocol.xml
--
2.16.2
6 years, 7 months
[libvirt] [PATCH] util: Clean up consumers of virJSONValueArraySize
by John Ferlan
Rather than have virJSONValueArraySize return a -1 when the input
is not an array and then splat an error message, let's check for
an array before calling and then change the return to be a size_t
instead of ssize_t.
That means using the helper virJSONValueIsArray as well as using a
more generic error message such as "Malformed <something> array".
In some cases we can remove stack variables and when we cannot,
those variables should be size_t not ssize_t. Alter a few references
of if (!value) to be if (value == 0) instead as well.
Some callers can already assume an array is being worked on based
on the previous call, so there's less to do.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
Based off a review of the Coverity work from Peter:
https://www.redhat.com/archives/libvir-list/2018-April/msg01613.html
src/locking/lock_daemon.c | 7 ++--
src/logging/log_handler.c | 7 ++--
src/network/bridge_driver.c | 7 ++--
src/qemu/qemu_agent.c | 35 ++++++++++--------
src/qemu/qemu_monitor_json.c | 85 ++++++++++++++++++++-----------------------
src/rpc/virnetdaemon.c | 7 +---
src/rpc/virnetserver.c | 15 +++-----
src/rpc/virnetserverservice.c | 7 ++--
src/util/virjson.c | 5 +--
src/util/virjson.h | 2 +-
src/util/virlockspace.c | 16 ++++----
src/util/virstoragefile.c | 3 +-
tests/testutilsqemuschema.c | 18 +++------
tools/nss/libvirt_nss.c | 3 +-
14 files changed, 97 insertions(+), 120 deletions(-)
diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c
index 7afff42246..78c33bd29c 100644
--- a/src/locking/lock_daemon.c
+++ b/src/locking/lock_daemon.c
@@ -248,7 +248,6 @@ virLockDaemonNewPostExecRestart(virJSONValuePtr object, bool privileged)
virJSONValuePtr child;
virJSONValuePtr lockspaces;
size_t i;
- ssize_t n;
const char *serverNames[] = { "virtlockd" };
if (VIR_ALLOC(lockd) < 0)
@@ -281,13 +280,13 @@ virLockDaemonNewPostExecRestart(virJSONValuePtr object, bool privileged)
goto error;
}
- if ((n = virJSONValueArraySize(lockspaces)) < 0) {
+ if (!virJSONValueIsArray(lockspaces)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Malformed lockspaces data from JSON file"));
+ _("Malformed lockspaces array"));
goto error;
}
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(lockspaces); i++) {
virLockSpacePtr lockspace;
child = virJSONValueArrayGet(lockspaces, i);
diff --git a/src/logging/log_handler.c b/src/logging/log_handler.c
index 40dfa8ecae..5364e06dff 100644
--- a/src/logging/log_handler.c
+++ b/src/logging/log_handler.c
@@ -292,7 +292,6 @@ virLogHandlerNewPostExecRestart(virJSONValuePtr object,
{
virLogHandlerPtr handler;
virJSONValuePtr files;
- ssize_t n;
size_t i;
if (!(handler = virLogHandlerNew(privileged,
@@ -308,13 +307,13 @@ virLogHandlerNewPostExecRestart(virJSONValuePtr object,
goto error;
}
- if ((n = virJSONValueArraySize(files)) < 0) {
+ if (!virJSONValueIsArray(files)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Malformed files data from JSON file"));
+ _("Malformed files array"));
goto error;
}
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(files); i++) {
virLogHandlerLogFilePtr file;
virJSONValuePtr child = virJSONValueArrayGet(files, i);
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 2e9191f75d..fa9ebe2d68 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -4124,7 +4124,7 @@ networkGetDHCPLeases(virNetworkPtr net,
size_t i, j;
size_t nleases = 0;
int rv = -1;
- ssize_t size = 0;
+ size_t size = 0;
int custom_lease_file_len = 0;
bool need_results = !!leases;
long long currtime = 0;
@@ -4179,11 +4179,12 @@ networkGetDHCPLeases(virNetworkPtr net,
goto error;
}
- if ((size = virJSONValueArraySize(leases_array)) < 0) {
+ if (!virJSONValueIsArray(leases_array)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("couldn't fetch array of leases"));
+ _("Malformed lease_entries array"));
goto error;
}
+ size = virJSONValueArraySize(leases_array);
}
currtime = (long long) time(NULL);
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 488a19d4a6..ef869bf15e 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -1490,7 +1490,7 @@ qemuAgentGetVCPUs(qemuAgentPtr mon,
virJSONValuePtr cmd;
virJSONValuePtr reply = NULL;
virJSONValuePtr data = NULL;
- ssize_t ndata;
+ size_t ndata;
if (!(cmd = qemuAgentMakeCommand("guest-get-vcpus", NULL)))
return -1;
@@ -1505,6 +1505,12 @@ qemuAgentGetVCPUs(qemuAgentPtr mon,
goto cleanup;
}
+ if (!virJSONValueIsArray(data)) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Malformed guest-get-vcpus data array"));
+ goto cleanup;
+ }
+
ndata = virJSONValueArraySize(data);
if (VIR_ALLOC_N(*info, ndata) < 0)
@@ -1869,15 +1875,14 @@ qemuAgentGetFSInfo(qemuAgentPtr mon, virDomainFSInfoPtr **info,
goto cleanup;
}
- if (virJSONValueGetType(data) != VIR_JSON_TYPE_ARRAY) {
+ if (!virJSONValueIsArray(data)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("guest-get-fsinfo return information was not "
- "an array"));
+ _("Malformed guest-get-fsinfo data array"));
goto cleanup;
}
ndata = virJSONValueArraySize(data);
- if (!ndata) {
+ if (ndata == 0) {
ret = 0;
*info = NULL;
goto cleanup;
@@ -1928,14 +1933,14 @@ qemuAgentGetFSInfo(qemuAgentPtr mon, virDomainFSInfoPtr **info,
goto cleanup;
}
- if (virJSONValueGetType(entry) != VIR_JSON_TYPE_ARRAY) {
+ if (!virJSONValueIsArray(entry)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("guest-get-fsinfo 'disk' data was not an array"));
+ _("Malformed guest-get-fsinfo 'disk' data array"));
goto cleanup;
}
ndisk = virJSONValueArraySize(entry);
- if (!ndisk)
+ if (ndisk == 0)
continue;
if (VIR_ALLOC_N(info_ret[i]->devAlias, ndisk) < 0)
goto cleanup;
@@ -2035,7 +2040,6 @@ qemuAgentGetInterfaces(qemuAgentPtr mon,
{
int ret = -1;
size_t i, j;
- ssize_t size = -1;
virJSONValuePtr cmd = NULL;
virJSONValuePtr reply = NULL;
virJSONValuePtr ret_array = NULL;
@@ -2065,17 +2069,16 @@ qemuAgentGetInterfaces(qemuAgentPtr mon,
goto cleanup;
}
- if ((size = virJSONValueArraySize(ret_array)) < 0) {
+ if (!virJSONValueIsArray(ret_array)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("qemu agent didn't return an array of interfaces"));
goto cleanup;
}
- for (i = 0; i < size; i++) {
+ for (i = 0; i < virJSONValueArraySize(ret_array); i++) {
virJSONValuePtr tmp_iface = virJSONValueArrayGet(ret_array, i);
virJSONValuePtr ip_addr_arr = NULL;
const char *hwaddr, *ifname_s, *name = NULL;
- ssize_t ip_addr_arr_size;
virDomainInterfacePtr iface = NULL;
/* Shouldn't happen but doesn't hurt to check neither */
@@ -2131,14 +2134,16 @@ qemuAgentGetInterfaces(qemuAgentPtr mon,
if (!ip_addr_arr)
continue;
- if ((ip_addr_arr_size = virJSONValueArraySize(ip_addr_arr)) < 0)
- /* Mmm, empty 'ip-address'? */
+ if (!virJSONValueIsArray(ip_addr_arr)) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Malformed ip-addresses array"));
goto error;
+ }
/* If current iface already exists, continue with the count */
addrs_count = iface->naddrs;
- for (j = 0; j < ip_addr_arr_size; j++) {
+ for (j = 0; j < virJSONValueArraySize(ip_addr_arr); j++) {
const char *type, *addr;
virJSONValuePtr ip_addr_obj = virJSONValueArrayGet(ip_addr_arr, j);
virDomainIPAddressPtr ip_addr;
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 24d37eb41d..98aec3ff10 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -1627,9 +1627,9 @@ qemuMonitorJSONExtractCPUInfo(virJSONValuePtr data,
struct qemuMonitorQueryCpusEntry *cpus = NULL;
int ret = -1;
size_t i;
- ssize_t ncpus;
+ size_t ncpus;
- if ((ncpus = virJSONValueArraySize(data)) <= 0)
+ if ((ncpus = virJSONValueArraySize(data)) == 0)
return -2;
if (VIR_ALLOC_N(cpus, ncpus) < 0)
@@ -3595,7 +3595,7 @@ qemuMonitorJSONQueryRxFilterParse(virJSONValuePtr msg,
int ret = -1;
const char *tmp;
virJSONValuePtr returnArray, entry, table, element;
- ssize_t nTable;
+ size_t nTable;
size_t i;
virNetDevRxFilterPtr fil = virNetDevRxFilterNew();
@@ -3656,12 +3656,13 @@ qemuMonitorJSONQueryRxFilterParse(virJSONValuePtr msg,
goto cleanup;
}
if ((!(table = virJSONValueObjectGet(entry, "unicast-table"))) ||
- ((nTable = virJSONValueArraySize(table)) < 0)) {
+ (!virJSONValueIsArray(table))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing or invalid 'unicast-table' array "
"in query-rx-filter response"));
goto cleanup;
}
+ nTable = virJSONValueArraySize(table);
if (VIR_ALLOC_N(fil->unicast.table, nTable))
goto cleanup;
for (i = 0; i < nTable; i++) {
@@ -3697,12 +3698,13 @@ qemuMonitorJSONQueryRxFilterParse(virJSONValuePtr msg,
goto cleanup;
}
if ((!(table = virJSONValueObjectGet(entry, "multicast-table"))) ||
- ((nTable = virJSONValueArraySize(table)) < 0)) {
+ (!virJSONValueIsArray(table))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing or invalid 'multicast-table' array "
"in query-rx-filter response"));
goto cleanup;
}
+ nTable = virJSONValueArraySize(table);
if (VIR_ALLOC_N(fil->multicast.table, nTable))
goto cleanup;
for (i = 0; i < nTable; i++) {
@@ -3731,12 +3733,13 @@ qemuMonitorJSONQueryRxFilterParse(virJSONValuePtr msg,
goto cleanup;
}
if ((!(table = virJSONValueObjectGet(entry, "vlan-table"))) ||
- ((nTable = virJSONValueArraySize(table)) < 0)) {
+ (!virJSONValueIsArray(table))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing or invalid 'vlan-table' array "
"in query-rx-filter response"));
goto cleanup;
}
+ nTable = virJSONValueArraySize(table);
if (VIR_ALLOC_N(fil->vlan.table, nTable))
goto cleanup;
for (i = 0; i < nTable; i++) {
@@ -4575,7 +4578,7 @@ qemuMonitorJSONGetAllBlockJobInfo(qemuMonitorPtr mon)
virJSONValuePtr cmd = NULL;
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
- ssize_t nr_results;
+ size_t nr_results;
size_t i;
virHashTablePtr blockJobs = NULL;
@@ -4591,12 +4594,7 @@ qemuMonitorJSONGetAllBlockJobInfo(qemuMonitorPtr mon)
goto cleanup;
}
- if ((nr_results = virJSONValueArraySize(data)) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("unable to determine array size"));
- goto cleanup;
- }
-
+ nr_results = virJSONValueArraySize(data);
if (!(blockJobs = virHashCreate(nr_results, virHashValueFree)))
goto cleanup;
@@ -5114,7 +5112,7 @@ int qemuMonitorJSONGetMachines(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
qemuMonitorMachineInfoPtr *infolist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*machines = NULL;
@@ -5206,7 +5204,7 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
qemuMonitorCPUDefInfoPtr *cpulist = NULL;
- int n = 0;
+ size_t n = 0;
size_t i;
*cpus = NULL;
@@ -5257,7 +5255,7 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
if (virJSONValueObjectHasKey(child, "unavailable-features")) {
virJSONValuePtr blockers;
size_t j;
- int len;
+ size_t len;
blockers = virJSONValueObjectGetArray(child,
"unavailable-features");
@@ -5494,7 +5492,7 @@ int qemuMonitorJSONGetCommands(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
char **commandlist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*commands = NULL;
@@ -5550,7 +5548,7 @@ int qemuMonitorJSONGetEvents(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
char **eventlist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*events = NULL;
@@ -5614,7 +5612,7 @@ qemuMonitorJSONGetCommandLineOptionParameters(qemuMonitorPtr mon,
virJSONValuePtr data = NULL;
virJSONValuePtr array = NULL;
char **paramlist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*params = NULL;
@@ -5646,17 +5644,17 @@ qemuMonitorJSONGetCommandLineOptionParameters(qemuMonitorPtr mon,
"return data"));
goto cleanup;
}
- qemuMonitorSetOptions(mon, array);
- }
- if ((n = virJSONValueArraySize(array)) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("query-command-line-options reply data was not "
- "an array"));
- goto cleanup;
+ if (!virJSONValueIsArray(array)) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Malformed query-cmmand-line-options array"));
+ goto cleanup;
+ }
+
+ qemuMonitorSetOptions(mon, array);
}
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(array); i++) {
virJSONValuePtr child = virJSONValueArrayGet(array, i);
const char *tmp;
@@ -5681,12 +5679,12 @@ qemuMonitorJSONGetCommandLineOptionParameters(qemuMonitorPtr mon,
if (found)
*found = true;
- if ((n = virJSONValueArraySize(data)) < 0) {
+ if (!virJSONValueIsArray(data)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("query-command-line-options parameter data was not "
- "an array"));
+ _("Malformed query-cmmand-line-options parameters array"));
goto cleanup;
}
+ n = virJSONValueArraySize(data);
/* null-terminated list */
if (VIR_ALLOC_N(paramlist, n + 1) < 0)
@@ -5776,7 +5774,7 @@ int qemuMonitorJSONGetObjectTypes(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
char **typelist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*types = NULL;
@@ -5832,7 +5830,7 @@ int qemuMonitorJSONGetObjectListPaths(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
qemuMonitorJSONListPathPtr *pathlist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*paths = NULL;
@@ -6062,7 +6060,7 @@ int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
char **proplist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*props = NULL;
@@ -6161,7 +6159,7 @@ qemuMonitorJSONGetMigrationCapabilities(qemuMonitorPtr mon,
virJSONValuePtr caps;
char **list = NULL;
size_t i;
- ssize_t n;
+ size_t n;
*capabilities = NULL;
@@ -6272,7 +6270,7 @@ qemuMonitorJSONGetGICCapabilities(qemuMonitorPtr mon,
virJSONValuePtr caps;
virGICCapability *list = NULL;
size_t i;
- ssize_t n;
+ size_t n;
*capabilities = NULL;
@@ -6493,7 +6491,7 @@ qemuMonitorJSONGetStringArray(qemuMonitorPtr mon, const char *qmpCmd,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
char **list = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*array = NULL;
@@ -6890,14 +6888,11 @@ qemuMonitorJSONParseCPUx86Features(virJSONValuePtr data)
virCPUDataPtr cpudata = NULL;
virCPUx86CPUID cpuid;
size_t i;
- ssize_t n;
-
- n = virJSONValueArraySize(data);
if (!(cpudata = virCPUDataNew(VIR_ARCH_X86_64)))
goto error;
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(data); i++) {
if (qemuMonitorJSONParseCPUx86FeatureWord(virJSONValueArrayGet(data, i),
&cpuid) < 0 ||
virCPUx86DataAddCPUID(cpudata, &cpuid) < 0)
@@ -6958,7 +6953,7 @@ qemuMonitorJSONCheckCPUx86(qemuMonitorPtr mon)
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
size_t i;
- ssize_t n;
+ size_t n;
int ret = -1;
if (!(cmd = qemuMonitorJSONMakeCommand("qom-list",
@@ -7096,7 +7091,7 @@ qemuMonitorJSONGetIOThreads(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data;
qemuMonitorIOThreadInfoPtr *infolist = NULL;
- ssize_t n = 0;
+ size_t n = 0;
size_t i;
*iothreads = NULL;
@@ -7178,7 +7173,6 @@ qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitorPtr mon,
virJSONValuePtr reply = NULL;
virJSONValuePtr data = NULL;
qemuMonitorMemoryDeviceInfoPtr meminfo = NULL;
- ssize_t n;
size_t i;
if (!(cmd = qemuMonitorJSONMakeCommand("query-memory-devices", NULL)))
@@ -7196,9 +7190,8 @@ qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitorPtr mon,
goto cleanup;
data = virJSONValueObjectGetArray(reply, "return");
- n = virJSONValueArraySize(data);
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(data); i++) {
virJSONValuePtr elem = virJSONValueArrayGet(data, i);
const char *type;
@@ -7664,7 +7657,7 @@ qemuMonitorJSONGetHotpluggableCPUs(qemuMonitorPtr mon,
size_t *nentries)
{
struct qemuMonitorQueryHotpluggableCpusEntry *info = NULL;
- ssize_t ninfo = 0;
+ size_t ninfo = 0;
int ret = -1;
size_t i;
virJSONValuePtr data;
diff --git a/src/rpc/virnetdaemon.c b/src/rpc/virnetdaemon.c
index eb0b822545..31b687de12 100644
--- a/src/rpc/virnetdaemon.c
+++ b/src/rpc/virnetdaemon.c
@@ -322,12 +322,7 @@ virNetDaemonNewPostExecRestart(virJSONValuePtr object,
goto error;
} else if (virJSONValueIsArray(servers)) {
size_t i;
- ssize_t n = virJSONValueArraySize(servers);
- if (n < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Server count %zd should be positive"), n);
- goto error;
- }
+ size_t n = virJSONValueArraySize(servers);
if (n > nDefServerNames) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Server count %zd greater than default name count %zu"),
diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c
index f4105b1394..5aeb188900 100644
--- a/src/rpc/virnetserver.c
+++ b/src/rpc/virnetserver.c
@@ -411,7 +411,6 @@ virNetServerPtr virNetServerNewPostExecRestart(virJSONValuePtr object,
virJSONValuePtr clients;
virJSONValuePtr services;
size_t i;
- ssize_t n;
unsigned int min_workers;
unsigned int max_workers;
unsigned int priority_workers;
@@ -492,14 +491,13 @@ virNetServerPtr virNetServerNewPostExecRestart(virJSONValuePtr object,
goto error;
}
- n = virJSONValueArraySize(services);
- if (n < 0) {
+ if (!virJSONValueIsArray(services)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Malformed services data in JSON document"));
+ _("Malformed services array"));
goto error;
}
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(services); i++) {
virNetServerServicePtr service;
virJSONValuePtr child = virJSONValueArrayGet(services, i);
if (!child) {
@@ -525,14 +523,13 @@ virNetServerPtr virNetServerNewPostExecRestart(virJSONValuePtr object,
goto error;
}
- n = virJSONValueArraySize(clients);
- if (n < 0) {
+ if (!virJSONValueIsArray(clients)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Malformed clients data in JSON document"));
+ _("Malformed clients array"));
goto error;
}
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(clients); i++) {
virNetServerClientPtr client;
virJSONValuePtr child = virJSONValueArrayGet(clients, i);
if (!child) {
diff --git a/src/rpc/virnetserverservice.c b/src/rpc/virnetserverservice.c
index fb19d09dda..23fc23cab4 100644
--- a/src/rpc/virnetserverservice.c
+++ b/src/rpc/virnetserverservice.c
@@ -325,7 +325,7 @@ virNetServerServicePtr virNetServerServiceNewPostExecRestart(virJSONValuePtr obj
virNetServerServicePtr svc;
virJSONValuePtr socks;
size_t i;
- ssize_t n;
+ size_t n;
unsigned int max;
if (virNetServerServiceInitialize() < 0)
@@ -358,12 +358,13 @@ virNetServerServicePtr virNetServerServiceNewPostExecRestart(virJSONValuePtr obj
goto error;
}
- if ((n = virJSONValueArraySize(socks)) < 0) {
+ if (!virJSONValueIsArray(socks)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("socks field in JSON was not an array"));
+ _("Malformed socks array"));
goto error;
}
+ n = virJSONValueArraySize(socks);
if (VIR_ALLOC_N(svc->socks, n) < 0)
goto error;
svc->nsocks = n;
diff --git a/src/util/virjson.c b/src/util/virjson.c
index dfe00d9280..bb4e3c257b 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -971,12 +971,9 @@ virJSONValueIsArray(virJSONValuePtr array)
}
-ssize_t
+size_t
virJSONValueArraySize(const virJSONValue *array)
{
- if (array->type != VIR_JSON_TYPE_ARRAY)
- return -1;
-
return array->data.array.nvalues;
}
diff --git a/src/util/virjson.h b/src/util/virjson.h
index 0f098892b4..e4a82bdbc8 100644
--- a/src/util/virjson.h
+++ b/src/util/virjson.h
@@ -81,7 +81,7 @@ virJSONValuePtr virJSONValueObjectGetByType(virJSONValuePtr object,
bool virJSONValueIsObject(virJSONValuePtr object);
bool virJSONValueIsArray(virJSONValuePtr array);
-ssize_t virJSONValueArraySize(const virJSONValue *array);
+size_t virJSONValueArraySize(const virJSONValue *array);
virJSONValuePtr virJSONValueArrayGet(virJSONValuePtr object, unsigned int element);
virJSONValuePtr virJSONValueArraySteal(virJSONValuePtr object, unsigned int element);
typedef int (*virJSONArrayIteratorFunc)(size_t pos,
diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c
index 41af0cdb6d..3364c843aa 100644
--- a/src/util/virlockspace.c
+++ b/src/util/virlockspace.c
@@ -293,7 +293,6 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr object)
{
virLockSpacePtr lockspace;
virJSONValuePtr resources;
- ssize_t n;
size_t i;
VIR_DEBUG("object=%p", object);
@@ -324,19 +323,19 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr object)
goto error;
}
- if ((n = virJSONValueArraySize(resources)) < 0) {
+ if (!virJSONValueIsArray(resources)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Malformed resources value in JSON document"));
+ _("Malformed resources array"));
goto error;
}
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(resources); i++) {
virJSONValuePtr child = virJSONValueArrayGet(resources, i);
virLockSpaceResourcePtr res;
const char *tmp;
virJSONValuePtr owners;
size_t j;
- ssize_t m;
+ size_t m;
if (VIR_ALLOC(res) < 0)
goto error;
@@ -396,18 +395,19 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr object)
goto error;
}
- if ((m = virJSONValueArraySize(owners)) < 0) {
+ if (!virJSONValueIsArray(owners)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Malformed owners value in JSON document"));
+ _("Malformed owners array"));
virLockSpaceResourceFree(res);
goto error;
}
- res->nOwners = m;
+ m = virJSONValueArraySize(owners);
if (VIR_ALLOC_N(res->owners, res->nOwners) < 0) {
virLockSpaceResourceFree(res);
goto error;
}
+ res->nOwners = m;
for (j = 0; j < res->nOwners; j++) {
unsigned long long int owner;
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 531540ac91..117ba8430c 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -2924,8 +2924,7 @@ virStorageSourceParseBackingJSONGluster(virStorageSourcePtr src,
return -1;
nservers = virJSONValueArraySize(server);
-
- if (nservers < 1) {
+ if (nservers == 0) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("at least 1 server is necessary in "
"JSON backing definition for gluster volume"));
diff --git a/tests/testutilsqemuschema.c b/tests/testutilsqemuschema.c
index 21f5d119e8..46bbc4f1e5 100644
--- a/tests/testutilsqemuschema.c
+++ b/tests/testutilsqemuschema.c
@@ -101,11 +101,9 @@ testQEMUSchemaStealObjectMemberByName(const char *name,
{
virJSONValuePtr member;
virJSONValuePtr ret = NULL;
- size_t n;
size_t i;
- n = virJSONValueArraySize(members);
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(members); i++) {
member = virJSONValueArrayGet(members, i);
if (STREQ_NULLABLE(name, virJSONValueObjectGetString(member, "name"))) {
@@ -188,7 +186,6 @@ testQEMUSchemaValidateObjectMergeVariant(virJSONValuePtr root,
virHashTablePtr schema,
virBufferPtr debug)
{
- size_t n;
size_t i;
virJSONValuePtr variants = NULL;
virJSONValuePtr variant;
@@ -203,8 +200,7 @@ testQEMUSchemaValidateObjectMergeVariant(virJSONValuePtr root,
return -2;
}
- n = virJSONValueArraySize(variants);
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(variants); i++) {
variant = virJSONValueArrayGet(variants, i);
if (STREQ_NULLABLE(variantname,
@@ -342,7 +338,6 @@ testQEMUSchemaValidateEnum(virJSONValuePtr obj,
const char *objstr;
virJSONValuePtr values = NULL;
virJSONValuePtr value;
- size_t n;
size_t i;
if (virJSONValueGetType(obj) != VIR_JSON_TYPE_STRING) {
@@ -358,8 +353,7 @@ testQEMUSchemaValidateEnum(virJSONValuePtr obj,
return -2;
}
- n = virJSONValueArraySize(values);
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(values); i++) {
value = virJSONValueArrayGet(values, i);
if (STREQ_NULLABLE(objstr, virJSONValueGetString(value))) {
@@ -383,7 +377,6 @@ testQEMUSchemaValidateArray(virJSONValuePtr objs,
const char *elemtypename = virJSONValueObjectGetString(root, "element-type");
virJSONValuePtr elementschema;
virJSONValuePtr obj;
- size_t n;
size_t i;
if (virJSONValueGetType(objs) != VIR_JSON_TYPE_ARRAY) {
@@ -401,8 +394,7 @@ testQEMUSchemaValidateArray(virJSONValuePtr objs,
virBufferAddLit(debug, "[\n");
virBufferAdjustIndent(debug, 3);
- n = virJSONValueArraySize(objs);
- for (i = 0; i < n; i++) {
+ for (i = 0; i < virJSONValueArraySize(objs); i++) {
obj = virJSONValueArrayGet(objs, i);
if (testQEMUSchemaValidateRecurse(obj, elementschema, schema, debug) < 0)
@@ -423,8 +415,8 @@ testQEMUSchemaValidateAlternate(virJSONValuePtr obj,
{
virJSONValuePtr members;
virJSONValuePtr member;
- size_t n;
size_t i;
+ size_t n;
const char *membertype;
virJSONValuePtr memberschema;
int indent;
diff --git a/tools/nss/libvirt_nss.c b/tools/nss/libvirt_nss.c
index 62fe589bed..ec73ea575a 100644
--- a/tools/nss/libvirt_nss.c
+++ b/tools/nss/libvirt_nss.c
@@ -309,8 +309,7 @@ findLease(const char *name,
}
VIR_DIR_CLOSE(dir);
- if ((nleases = virJSONValueArraySize(leases_array)) < 0)
- goto cleanup;
+ nleases = virJSONValueArraySize(leases_array);
DEBUG("Read %zd leases", nleases);
#if !defined(LIBVIRT_NSS_GUEST)
--
2.13.6
6 years, 7 months
[libvirt] [PATCH v2 0/8] tests: Mostly fix 'make check' on FreeBSD
by Andrea Bolognani
Changes from [v1]:
* drop the virnetsockettest changes, since the relationship
between the errors seen on FreeBSD and IPv4 clients connecting
to IPv6 sockets has turned out to be just a red herring;
* fix the mocking instead of dropping test cases that don't work
without it.
[v1] https://www.redhat.com/archives/libvir-list/2018-April/msg02611.html
Andrea Bolognani (8):
test: Introduce VIR_MOCK_REAL_INIT_VERSIONED()
tests: Mock realpath()
all: Use realpath() instead of canonicalize_file_name()
tests: Stop mocking canonicalize_file_name()
gnulib: Drop canonicalize-lgpl module
syntax-check: Prohibit canonicalize_file_name()
tests: Fix mode_t usage with va_arg()
tests: Build virpcimock on non-Linux
bootstrap.conf | 1 -
cfg.mk | 10 ++++
src/storage/storage_backend_fs.c | 2 +-
src/util/virfile.c | 2 +-
src/util/virpci.c | 2 +-
tests/virmock.h | 13 +++++
tests/virpcimock.c | 118 +++++++++++++++++++++++----------------
tests/virstoragetest.c | 10 ++--
tests/virtestmock.c | 13 ++---
9 files changed, 107 insertions(+), 64 deletions(-)
--
2.14.3
6 years, 7 months
[libvirt] [PATCH] tests/Makefile.am: use LIBTOOL variable instead of hardcoded name
by Maciej Wolny
This caused an error on Debian, where the tool is called libtoolize, not
libtool.
---
tests/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7b93fbde6..05db6b119 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -487,7 +487,7 @@ VALGRIND = valgrind --quiet --leak-check=full --trace-children=yes \
--trace-children-skip="*/tools/virsh","*/tests/commandhelper" \
--suppressions=$(srcdir)/.valgrind.supp
valgrind:
- $(MAKE) check VG="libtool --mode=execute $(VALGRIND)"
+ $(MAKE) check VG="$(LIBTOOL) --mode=execute $(VALGRIND)"
sockettest_SOURCES = \
sockettest.c \
--
2.11.0
6 years, 7 months
[libvirt] [virttools-planet PATCH v3] Add Yoni Bettan to Planet virttools
by Yoni Bettan
Signed-off-by: Yoni Bettan <ybettan(a)redhat.com>
---
updater/virt-tools/config.ini | 6 ++++++
updater/virt-tools/images/ybettan.png | Bin 0 -> 105973 bytes
2 files changed, 6 insertions(+)
create mode 100644 updater/virt-tools/images/ybettan.png
diff --git a/updater/virt-tools/config.ini b/updater/virt-tools/config.ini
index bd3b7ce..ac9695f 100644
--- a/updater/virt-tools/config.ini
+++ b/updater/virt-tools/config.ini
@@ -182,3 +182,9 @@ name = Fabian Deutsch
[https://kvmonz.blogspot.com/feeds/posts/default]
name = KVM on Z
+
+[https://howtovms.wordpress.com/feed/]
+name = Yoni Bettan
+face = ybettan.png
+facewidth = 80
+faceheight = 80
diff --git a/updater/virt-tools/images/ybettan.png b/updater/virt-tools/images/ybettan.png
new file mode 100644
index 0000000000000000000000000000000000000000..e44e37821b82e37c7a8a00db3ad36c7baddc3add
GIT binary patch
literal 105973
zcmV*1KzP52P)<h;3K|Lk000e1NJLTq007JY00C170ssI2`UiA}00003b3#c}2nYz<
z;ZNWI000nlMObuGZ)S9NVRB^vQ)qQ`bY*g5g3t*703ZNKL_t(|+N{0XjwDHvB_>Bi
z)XdyHA}@96%k(UV<m`f+A+W%{5Cs4Kjc*ISkxPKRJKM9}T{Tr%nGxY;Dk6LkRW<Xt
zWcL7!Y2<iihP#`oiOS{3k)!zE|F?fn!9)}h;qFczt|I16M8Zr&n^z_hmZ$5Lh?tl-
z1WFuC667EbataWFNr(dhCt~4<2oDb@A`k!oL;#JSi2bDp2n_O|_7(ty%_}n#v%7n^
zyE8L`5g;OfoCrWr`zW0RfHE^!5JZF^crb~8NsxCNc|pvZRU-00L<EIVz=Md~J+Cez
z|0VKuUOmun2<@c`o4c7s1TzB!aD+#7LU1r4Knx}dkkEBq^OFLEpaAt}fr#i|!4y%=
z4j&6<cA|*zyfkxWR%Rj!a}Hu=W>mNzRyuz;NLc8#A2(|c0z^dl-XIdNhntxYn3)Og
zZe}9I-SbkJnS;`R07SIE7lOK>KXDM4IhZ7$Wd0Qqk&_dFNJMvo08zlmiHJc&Ou42+
z$W<fiD@9D)zT??FA1y41+`&u)VSpr8Q$*^cfe^XqLHiZwv)Mlm`91Cqpb{|$IRQiw
z93&7#kW-oz1qFkGs9jzFa3VxLYeIn9$AgZq#%}`z5Qu;va*F7N#|)s^N|`hbJ^KCT
zOEBj*ps#g%2~abi$m`3cAWv(g=pU3z!6Nyk5y3%31dj+}1zwsG=&c_Ch{*fz<jv=w
zx%dGf`ZD*=&Tr%(0DT+5<FMz6DBRoi0?6GEMu&SCuX6|Fn<Mr=(?>nGA%G$%w=<*t
za^Il+jp*)StU&h+<9S3pyNqYnnqQv(cVlt~^UdE*XN&Hf+LP^{kK=cZX9z?@UQTl`
zyNS13?*6%7G9#BeU2H_4KQ!j{?YT>>d&P(#!uU-9zCVP>k0fRwZL=9!voK~v?qsA#
zclY><2KBG}$)~vco&2JRba=Z%XU=aQkHJBjrkP6^!_tJ6l!#cEh{kKT=HBvQ1og*r
z41(Qym^s~VdiW7^jz-g-S+}R-j&%2QNCYr=Ja-01e?v1Z0F>s_R)B>8;{0zW0T2Wr
zY6JoV&wT<)3+tAIaZ|$t$Bt?dlQ6u|xc9?uOoL!%q*n-YA~LrTR5>FV5R4iT`=-rJ
z*z6`Z{|E&HmIwqHIR)9_8UPB9qs22b2+Z&|Yz%MyJ&uNX{I!fB$NvP7yAFq(fk4dM
zA8}hN6@fdsN8Y9Tcu$P4IlT5gPUS~7TX6z2Bf5X<pU__9???L*FjLQU+FRNk0K^C)
z_aJgYE*=2(W)Rdidjx{Jhv;jQ;q!UQ7e=JaEzSaw(aoDrb-oF~N{9&O{K#%$6zL`-
z;?)N;zK!}7Lzsv-f~X}xoQnXma1h`S=4d`L7lw$&V<RxpSO5yjl?!(AwrP=x3RyUL
zS|%}r2m&VN2qXBv%3U=h!z;Gfw&KCxGeFc#Dmdd3#dt*hBeWaA!JkEBicLi6A;;@|
zL2tG%g;{1H5oEUK5YBPj=xrJL<qq#K@?3JyD{kp6QD!!qJDMXod?|U5fGE&22yU({
z!$tE+6b!a7CJ2N$-5)WtQ3PXD3^=Z4dPKr8F&Lrh&4<K%{MUXXA*y{pMP|woWE4{=
zf%eJmuY(T30T2Ore0zIL#3JGOJbUyGkP}I(yZ~ZIt^@uxu8eMt49AQGnQPl#kP(5{
zdm%)-3AQ|=Ev%*iF{3X+yqb-TaJJ`RM90@7FS%V}Jj<&X-BLlV?%YkSnM?k=H&;i&
z-6%))1B5&E2hy?=v=@%{;T$~;L}ZQ>gkTUOeG^m5*<VS4+YM7s*!PWr7r(zR2qTRJ
z{S%;qXx=EVMSAAIM65WJt;5r&twpY0ep@U1!rB55D9FQ|!Xuc8N5a?A6({01jfuV%
zF82-B^RJ#-zo@cUB9L(~lPIHb3T7Tl5=5HuF`d+KDk9D0j2HR3FZ5w8Ztb$|wuq4&
z9I_c2<@b0nOzejcOx*-)A^~m=!iH&{95=~$zfbqzbUXoy+&s;r0nsufLCb`~TMic^
zx5r)sz83!4@8Nl6d1GNC;~eQ-Gsj$3psw4<i$x@pvH(_F_XmnmjAMsy_RDMO>qxUe
zAO?9vgg{!J2ZDuBP!Qby|I7Q2;S$ZH02YR2R=uyrxQnr-T8ix1M9b6=;VkKCEMo*k
zm|1!<>ScT8L4AG0yaLd|nSMn0H0cNsncIP*mDlZk-h2f`M3ka=k;)tj4r!qZ0VZJ%
ziU`YV%w;t*5V$B9)r=5Q^twJ}eJ5aW5HY!vJF}XHcm!i0MOj{q7#)Y8HceC3AH(<(
zr>oUO1PqF()jgcSBJ#LCfgvL8U;9Eg^pBZE5*Vqup#g%25daZlX0tGJ6*)NghzMo^
z*s?BYPMs1Db8uA4@{fpEkYEHeZ|<+=WO&uXMFJ`mqZ+4Cknz|>oar95!r6Pll4g;f
zC|A$B1?i!-JK!#@nu}vBh={j9yqCa1?!|mO&!YSAcE?Z7*NFh<f7)1JP?kw?%<`Ej
zBcEjUguLfKAY4RRZ3qM+I!eP#4GAMM>|qhF`7<2A)?*bJ%^Y{n&BV;?Oj9X|U$olr
zkk7e$hQrts21kaK9jF`?)n2ad;7<4D!5C10(E#2u-^Rd-{ZOd=b)L#8gbuLwvo(3$
zSbJ8~7RrM;Y~7BDtnOK0TJgbLc5n3}Og#sY_vG~E6B-6Ff_?uvgwfXww7($+MA;A|
z5Rnf=CLoYRma*e)Jx(2*co2EZm>Z%SJ$LoY>x82LnC&f+6-T$Tqmi}jB10jw5c#M9
zMdDbHw)%@AKR?oSJ8<}LLZX=<i3komntChkyLq+E){EgiK^z|zH(PpOI)9ZX8-Ks&
zopG%2aHttFgryV7#grDWgChJ8)}2BR`NZp{c9Z54zJj|9xN4M0`P}(XmS&^o+5Q;+
znq90TJe$T*-9{$|2b6DM1K7(7KK>3e)4R#SZZ^z#Ur-C#&5VW}#4APyk^RaO3?(9<
zTHVvljG)X6u2x4Ok{=<=01+I1V;Mb--Pbwcp2$oH9iOC|GLZXEM62k6!RR*ruQ0M`
z?VB6-@}`mXHETs>OEY@-YH>6|53c$UhU4`MddriIT<<0+2h4ozvBRfD?*$B_Y}V_C
z2j43L4CAv7uC;9tXvHb@g(e|5i&opRYlc>Bw9m=fGqU;Bz5R<+VdUtXx5UH)`#Baa
z$GgtUYuHEJRB8j7_hSRAZKLRp;0P<C7XdgtnrIaZVr+IB#+aF2egfZYC3>v|^0p)E
z#r9ukWMBp(`@8|TJGq;Cw%0r#S#(c!+~gh5d*OKB{xQ1&X^*ycn_-a1X#G-8&UULZ
zce*k5v70#}xS;@hvN*D|1~3DW4O}|}xfbvc>BIB8GQi*Fl+Csdc^ET@*xg6aB+o|f
zo?IR?fie|u-a5$L&05dnux+vr?e0M2YD9}m&sQuf{m~-wfz*JI7KTH9o*4pw-kGMO
zy}Smxe%;89V9i@brXox{l6o_E1onPoa|b%I*JIFp%S7J#d1;ib1AmLFjYo2<*AD4F
znLmdT4z0c8N+3WTT=l@w566IDc%VG}j?>dHy?mUpw|#DR$g@nmeft5IxrHtEzDj_|
zojl^uuOqZ#k3Awhn5iME9mRzcqWe4a&ijq`={}Wq@0g|RGq%8+#`N|BjhjsFh^oAv
zlhOXq4c`WcL3V7nw8VcWmgI}Edq#?UbBPV@*#A_P08wJU9!`NErzl#S0v0~@A<M|o
zZ`=F`4xz*6f?FerV%;i5030A84kijfh>2aYD1#Fvr^w-=lDvQ<^dQ`Vh)9$gi6CxL
z+U8RM!A+Z0zP`5(wx2F`TUU~-@gZOm4(>gTp6YeSIrcn=c4h+wg&Rv^H`#t-&#Y`T
z+9}cuecwnVXgMDBMlC%jQXKz$<A%_H>_bV1W7B~9!^y3()irv8!H^((<`EiBCaOnF
zwO4--RS|J_t2H86L`1fytEeioMMSL@q0A%_wGtqJ1ETq~;6$-m0tw979tjXr1hW#t
zcDL$8OkwU(mI>f(y@r#j5X5aeO{WMWVkaX<z>@;wOsw2Cbc6_ml!$!uTry@R215u8
z5LN3P(zMgIdX{j{v9JIIQEi=p)({$%U3G(SnsQ=AMnNDBgnN*O-8@P3ep>7mw!?#U
zB5w_)ibTa#i&hT;g2LV08ivj)=GUwxs@b}2ZpO?k%-~+E1rui$nSFE?Fw~>g>Osz}
z<Pd^W@Xen@o7u8Vs#>?r%qK}Up)24X<~E{1-otsCuD1D>Kp!}q!>Uy?qX>&|3IcS1
zvp0=TkzNT#Ye^0)uD4qpkW7Su!AaxWKT)QE5?MnmETN*2b#?Q0N(j5f0*SOdB0&1z
z1d~K|BeRJljgKX_)T3unyLu2Af)s?;l9Z#h;ee6d(3x)I{_~z@=A$fx*SJRRFaOp-
zVFRZ?cViU2O`P3HVheL~_XrS}1{q)n@)DI4>V*sC0w-F@yGx2(Pj1%u?9YCwX4!19
zmJGDk1qn+7#Q=(MHzHyhz=Sud1i1*iI}=54Ymo2F6Et#F`mjW~1`eKl)X1y?2xf}#
zmN_+ayF)*1rS%Yq@xlUL=3axFGFs_x{r*jHfSbhm`R_y=LB(TH@~k}cw6JLPV<Okj
z%<Gs}9DfeUM*LN=^%<$In|^vguhx7pBOJ^eFH>|7n1c~O_?}EB=91-0=D0U`)mM{j
zRRz)+@1+A1Z?*1C@k2V%%{-nrl;Y;T^_b)iMqYN-a{q}41LjT<>ERj!bEggM;ow<a
zS!+G=5t_Y@PQZcD&}#9zui{SG;GLFpbE!$%z$<v(C@eY>(V#MPdhxTTf9$a))i5vB
z-M`Y?7#*jP`?}RvJ=u{IdCY)3oUoS~;~MH#MFh&p?HlN^`*s6>vyWVF6!)ECM&96S
z4AS#oO#F*#Z|!ih;?k$u)pl}d?_Ya3H!>y1E%VgO!`(d0%*^yzg>_>qJ0rjS=lHm1
z{@^WV6O7l<&jTdZNHqyH_2xY|n?bFuo}T%p#%j*TURJm?Ao%8CTSsPx8*oESp##G>
zI;X3}_!n)N&XkIbY;jY?v^T#>%^m;m2<nD6mTPCz_f7$0Z%+*t+W`a^^#5G9Z1=Sa
zq9@q72+_OJ1GIUSNYVi&$#m*qxCCIDrUP>c5mBi|3%+2652DhGFcJ}pw?m9{TzlXV
z3?#DyegAp*S2(^?(N0SY9~Y8q8vB+!8p_~ncz4>&Y=<uIuvG^!BwoW@6gNB(H%sc`
z#QJIwd)8xZ&7Z)_-fIJm-JjP`jfTf>;D~mN*A31^pCm|X+`*8ic}goZvrLk_Q%v_T
zCOe-d4G3*=VRtEDj>9b+VT89rx|_L2W8AoB6IoS{iNW*u8yHRTP6vb&bL0HPtCI#T
zJ4xT*;qK9$C)~VG4xm9L>6l-MDSS+6Z+uweRvbLyZ9ri#F%7o&(ZX&B-}Exu7_{s-
zFhuZbX-zMP7{~V4n0~k+XFoT}q|8RA<$Wz5i<eUiZH13@=na#={e~s=A}wn?a_jRW
zd{_m3HVM&O&R0p7J)L3^W;P->!$=HzPwY8x$Q*<H_iW#d2Kh@*=H@CY!tT*JH=rZ+
z;0CCS=hfUm1*_Fg{A=k^07A6Yt+mLGz#owv!r#kg!?RG?{Ae5oY5E$4+iti#5*D~Q
z2fY!_;+Q#%?mh6FF_xoybl4r8)$3o!)Sh{fodtjVCjh{DU5_@cs;nX`>-BmhfRA#@
z-2)IxULB-=iF+K0ZiK%8t7qCAL8{t@hI&j(Uo~E*nOvW)t!G0wb3JbE=@Z?}Ovl2R
zTSR1I_<TCGrik0<7Ux~53XzPcp9#TWTZ|2t|7A8x=)J}zBIyaHkFe&^+JC~0(NB=6
zc=*+}I6xlzj<I0giQqlCM(*rG^*J`cO*o4iPZmVv4K>ZSHvm@RYSqmNq}u3fRxO7V
z@?EWe*NEbH)peO$M|-mLh6l*Wt+vf4M=Dz@u#OE-ujXVPEm6r|v}onObxL$L>!Z5{
zFb74^GB5MCZI6$SDtdo^ztyd7)y$Y#i!yVqwQd!)=2vgqw$V23rPewUvcuiE2ooZQ
zWXBj~^3S&GX4VKY&k_IprCJ+CqOu2LGvnKw<}b$h4A|+_{5Y`r;xRYeD2EMU&&=uV
zF34Z%di|CB<DR@9%7E4q85Os8uG{Uv-tGL~GZN{o|HI8#&rLCYi@<%2#MOIKw^w}p
zoM<T8P3QKOXPf=QBRDmBfX|-n*P9(?PVg*S0I*0LyU+a-G^whYhPE*VX7g>ZM~IN<
zoVz=A8ZBX`P#&0dd$W10K^(5wI~ytv?kzg=i<5hJQ$W!xPxM7^?&!w8Vq5W53~Mk2
z_Fr?~JLA@;QyD~WaO|)HD$h9C&o{$?XLfu`tA)Szd>b~=*>yx9Rw0khtx24`r3pNy
zHG7;13O56@N>2>j2@sVCJcIGRGSKjX<4F_)HomD6^cjAQ+vqd?@@3-r*EG(1=d@E{
z`{MZ<gJmqjEyJLJ?x6Fu-W;!a(F}eTw*JbWh@0#+gQJM#3{tM0h-72&*p+WP>R@nV
z^F3S7BfrQ&5RM2kKjPuf=QX~%;5$x<Xc=c4IBla-Nm%N1JsBt$1FGuob=%y71tL<b
zzuL=wtBw(s99hX0p}TKet#uPFeqey=Yxy;#bIb>-ndx4AS<-*)fdviKf}FSCd9WDh
z_OVd-`aIwp{}wN^tfT4e%jAu-@LFT|wd;>QKLyG$rwDRxGmwq}8aIYlAeiO#a&o6q
z++ei;d5)3}BrW-W>4f6dJL(k7+gLdouh=_PS$_IX6K4i?q?*Bj1F!-f*!{CW|9Y9+
z81v?~3zyui-e2@&1JNF_T!iaw0rj=vu-BsdJ~V*W&B)BgICUD3xxHN!#qpWF1PBIa
zyUka<%|Cd{^KtWGF{;!ffD*T!EDrAfE3L4jWk(yoxVejnujRN27X@zQ8rri<y@JNW
zX<eC{*)ZXb*W3UQ+^2<KrrK|Xf(%QwR*P!2E1rmyq7+fh4-oPjp3KaS4y@Z;?3=zX
z&5d%zpxh2g0m8G3^oUnM@gr{xbc{O@&nbpCM)p>N@^zzsW68!)E^a?9Gudzlw?4~j
zxd^_V?|)?zra?toukX`I+7Nua@MQ5KIok&#GhH0G|1+-JVb6FYK#cK-o~zvupAJsv
znX<${xm7i))&4n6T4K-1+8fw+B2g;<ohW6Bn3+{om6#)9GYh=#0N#wAIWB~xPZ^O@
zQ`PZjl#S#SCudMZR9RI;guyRkr8llNKSyHQhY&o;e;Ml9|BR3W4$l-K@?G4Ah^bwk
zCkLP>lh$yCHpUm(`^dVb%?csLm<zoz9etCW<?NCN2g&#yzeWFV35AZE;LbrD)Tfr)
zha7>1mzC^JG0&8dNSLKp2Y=NZKvxYSqUAJA(<F*)t88`K)@@x^I*98KkvbtfMM6}#
zt7Nf4*ooYux+mudl5!F|7}mz?JVbcFX59x9GuOu7qTt{_M1!H3dEKhJYf&b+8w2w^
zueF+6Sk*}>$lOJsS{~Om-*+=IL}a#6jO7OJ5R9uR5p7}20+m{;ZyO8mDRwqS!vQLS
z2qwUYJMk!zl-E=(1QzDrMmBoRY7OE`I5I#K1t6l$YDB0=;z2o~IVL`c&{7fZ5;Z~G
z@G{A?;d!0g)srZKEO!satbGyL`9DE9|2PI@l;x=6p&~ibf;JR52wWg`Z~fTDCPwRN
z^5~>V!wq6H+iG>U<OaBVkPGuXO^=UPCd{HWoPu;TH=+mo<7>1o5FPZ!a7@&?*woI}
zJxo^mQJ^Ju)t`0)+($LC{t0sdS#Pa?cWmvZw~hlBtvRqm{0i=qZxn<GSdat=66~$b
z5R?-GgQD%`sTIOIp}BEi=ypmf^_;e?jugDBb`T)8J&&Z%#_OLW?D3*b##hj{H{aXP
zso1-Bhd>%QB<#7hD6^pG<dnl#KhHWMc4lFl{L672F!A-_v4&Z#*=WWPL~(Zyv+Np^
zzDh89vs6Ct0@6Un8276!6p>@jwCnwZx7I>FA=&5pA+(RbX5mG+QEiE1^hx)ymybE*
z+o(rIVd3H6K62f}VA{Kal9LM$a59>+!Wlip)|bDn2yc4{F+2znM^tYtz&>OP1ZQO$
zgk8(YL6+)pZx<qmiJL<^^7cY-3}MO0IM}H)j^kc(aaZ>M;hCyRuH?>+IY{lbr*q(}
z=TFTBz9$2M%)&M^GbgsN>dERoB>pd<@@LuK7}XjAJj^?bA>uFRYI{;lk$H5+j!x%t
zVP$5=^EYa5G~HgJ<EV&sWL2a9U4(g%kW+K2j8U{Sn+FA;7}IR@T3&+JCu?>lwHpyf
z7@k87I5zcrNfdu2fOlB`H#;BbB>EkRh~s!4-xM6^8}f$M_U!4zn~j_UbuSufs1z0s
zqU!Fo+P1FSRx`~T9Rxi-I6o+{?35Dh1!HP7WC77QgJC&e`7E_OL^kgq$>U1F!OTOC
zA~l698+m{bNt>bQJC#X#ARAe4b4eiLohRMHXc&^{ohgG6aR7iyPh|4Wl}DG;8{E|w
zao=l)iOZvT9U2T0-sL#=`)vf_o>a$e_th!fSzl0?b{^j7Xhk1>d5Ptu50gFO;i$(m
zK<r_BK0I81Z}e%<7D&<cP!9T!BI=!8*L#d!b5li|REn^Othn~>NOlqQRT|8ZkMNRl
zn0Z+5@Y7LH>8NelSA10UN8T8#3I$u2VvL|fr<w7rUBi@f9|Z5^)y|iCe)0JvEu7k@
zD~-upcdu02U@5`i2ucYP6^#HWOB}L3@5O;gp&+!tlbWd8y0uNi$jeK)f_2-TE#RQn
z{xz85U-V@BVr*>i+eQi%hc^ySmTBX$u)Q69jc1<wS!d~1UugH?o4K3SrkUJ8H&wkp
ztw++79`&C7Vp?YV&dBlkIB3q$E+282dOF}njsqIqLZo>(i3mXMV1RRYm5H5%Qc%R1
zI6%Z9MAoFjdPy;u9LNcs$njbP6DVZBl^&i}Mbdh#2@SPb^ifC*A)b6NPC2ELtg%*<
za#K8`2rwZ6sl3dG0daJl-=_9Eq=Yjtr9Rn<#Q(^Re5M|{L;JKl^D(&AlCYkFJyU}l
zE}#`UwM|~3Pgkd2TJ({*A%9G9i;X3Zfe{QivL$2|X=rBd=5Bkf5D`SIf3f9$EO2VA
zLu2gNz~^CKqa=^yqRLBrul;^H!#<4P6jTt;I(H+($T~M7y5$iM<*6ft*4yy1KM4R}
z4+|@$Fd-#mg^<`76V+O&e>GAIGwHQM4KHhcYTq}PX%Em2vaqN@);vV)=E4MPiS|(E
zq9Ed+8u8Xt<nd1i#w5dyg&jyE349#0u`csgN3q$n;WR#KsLO2*nn81D>hA2i1A>p<
zcaMOoxUUp2vu&$pR_kWw*%h@~BODa+@BZO`Aa1~7i!Xxeu2bQnK>=o+Cjz#06KN66
z-OQ@H<?c_ggn4JtC7h<Jgz#_=Pdb;XsET`LjwHg#NlHY+-I<|TltzFlA=!1?+&yP^
z4<t0Qx{V#<VVOxKL&V)YLLfyY2N>a@LGSPGQ0?*aXJx)j3p}=MorHzS-J=>4CKY8=
zGqX*Yry`{kkp^l3w65z^wAQ+=YtacrwQfa}lE&rkwT8RpeY$HSzD0CB5@A*?g$sem
z0}N$R(InX_w=w55EM^w4aLWD=r}P>#0|HiX-8NyKMA0ZSCg7sl`V_sP#$YC5pqc@h
zDmBv+<|eBaDQD53yHSLyC>ZIj#<a-wx?ZoFyNReKmgdetDSCan`nFA)X#QJ0GWTq%
z6H&=sD=kF4q!l!Dp7{tg12C^U0@-OKW_Flwex(c4GYrZh#&9ppj<mYQN$QSE4wX^<
zJrmJ9shKAf9PW}FRE83<83)b61w?i8b>(pPC`E*MwOX&&&DNyd&eLRdeRzB@GeA^D
zOA)A<!F*<&XI0U4+pyVItK>K=<uEh2)A_4e-n{M-@(q&EfD;f90<wBYrNC^r4(Wn6
zc+};+yMN-rXeD@`=@N8W_db5c$6QcYdd=Gy-tL6(EXffhLr*&SPQogJV0X`<p71uf
z+asfeN4Nt}a8wg=uuMhETSk_6v6+v=T!cj=v4NLTN`sR7QXv8eX6@>_ZN~Sg5*i2e
zM<DJstx#06ZmsSh=2RCS139BKA=`0a?h^OeoC#0R6@(ICR<VfdN^4c3nT5j^<@0ih
zYSU>Fk<IG5uE8->JVq%ULEBcJo}M1AUsTFw54rcfI=j!zDHxmhi!f&}3U?5~97j>I
z9z5HyUc+-SsvO)>HV*3EH?}ouNfsT%3;|~(FiVw?7!!ee$C_Ju=eOjrlnv!bvjqV)
zhMITVGYAil>b7kg5sW-J)lEglgN3e7S6H36EW+n$(zm$YS$mgKh(<=wME0z=b1XUr
z>8iH^AcBE{bbi<oR=s7DlINsDP7&`lM0e1B@L`@|ChCA!T977>h|Mb^BnV&$2snd{
z)h+5qb(=-*rfE{1%k=FxA08ea=6P1te8gG`GuNn(k57$2tc8f4uItY~fBO8(7m@Pi
z;nAu^txxrlS?76XMNMS@Kv^>-N*AltpAcbC>mo=fqRUxe<Xx>GJvjTWn8jenZSK`^
z2k+u)I<|MTM$M6o8xb$by89#Z#z$j-i7kSOEW&DQbGfH9RPx4FNV(03&D|`B5h8M$
z%e(XGyqvT(kq`9L0Ia8Ys!gxJA`q^<2b9;I_2W<??nO}tmjKn$xZmL^3zyAUtA4bt
zVJJ;6V^pDoy~IvL92^6ZZpsw<ybzGEeUp%4K%v>Nf(Jau&+MeLlyY9CcX#(HGHdzf
z{{EEd3$qkHpU?BMxX07$aWz2z03ZNKL_t*gARpeZ>$+_lfO$HpmiS%N>c4#Y^2a~@
zu&!%0|MABky~YgG&A<`1g-D)yk!h|b;!HzmyJ>z?JC=r@5kvqO-k$Whg`^u8o2O1S
zCznFBhvJF$)T#}+r=)A^5agtKgD7JNz>Xogex4OE1_yl~Zw?C%4kCw<lUX1x^E|2C
zoiFcBr_1T2Z;gm03l#lKC^KUORK|SKE>n|C{#JE1E-xRrF+M1<05e1+jjZ>SN8uSq
zVT630<w7335Ps~ZrA(m^c@Q7Sbo~&k#A@BmoZQ6;Oy@Fx`{Dh0S>{si&u5B=YP4-1
z@9xYutHHnwo)vYA)ooHO(?rvxszv9-B+cS7&9PNgRVn{`x;#ET6)m5y4?lkTDa^<t
zL_qLb5yT>?deq1V-o*W!NCOZ~!ILmgSt|&`qi?uzuvfeL=mkOClBTkG(&*P&@+Sf2
z8M2rnrWQlij}GUUaL>h$P@FQSbVJ+#r66YO3<*#WTtFzSM5k#wpXT@H^Zn^`n&;Pz
ztQ4))jx=p%F4{1x-bdr4>oc=i9iqAcIYiGGY4CuvGaBx_+ong<b5a5cA0?=nd%VCK
zI_GeJ!bfe}9)jEEwW5-;%%v=<cbED5j~|w0A+M*R%2I0;rqeumaE<^o0&W7Dm^r+Z
zGS71<GZAfTty`_tPV+JepHHW|ySut>+qPZKcfUM7Ow087>Cv~!MWfnQE18jpFk3V&
zB97Ku4Uv?+Qm|3eqLG%CAOP*b(UAjBL16FH?jv5`c;SScEb<8M1BlPYaff{HZJt9p
zea#~K#|9xafQTuanX9)Ew|yWKZc%GpJrYUbS#=S;JD=_^r;nHWyVG*gqOZ;=oTk}u
zg}EoFECiNPO5Lt}gR8ZsOEnXsEK0HnZ#^(hQSMHPi^!B~%=C>TZz98n`4Ew-wM~E#
z!#3M@WIs5O;NImjcU`{-4k|3{;Rq&D;nO_7zrVjbpJ3bl<s{(8&yPlOx}TQ0Ff+Lq
z5hZNdUUDe&X+BR=3XtIX_(TK|d3SeTO4&9mDj@f2wygqO&I>s1zxf}3{`~XP<JHL@
zK0mr`8}lUWZYh?QN2w_h3p2CT5DG>h!VoDPEqRPZ5(t1na!s5$6#%0ns7Dx*S==nm
z1;SkeHOqD9JTr);Ge;;}97bI|E)c<a`ovz{3xgu8o1wYaS|jSVZMBM)aH`eWOqp4D
zo~Fw@eZ1VizrTF*?*6izPNMSn|M+i%5a340Vi0JnYb5sp!OU7jRDy%Rq!L8c&52|x
zQq)1r0%kOk4n|Q`g>v<pV)L0ZM$&tPnNiJZt*OE<EDR=u0PbGhA_4*yPUeEu%@H{-
z0T8)|TevUtT-~?L;9ej_v_O<lobFEZd79Wm$S?DBIiJo``R4utugW-|W&}MwJ~8w8
zbS_f?3$cJW2w}kxm7+QmiAb5I1$~TEwE%FpZL1=Dxtz@E)AeyVO&)f>JAeD}8wOn;
zpU&s`yquq&9;Qia-H80O%;&i<MVOJBG6|E_RS>7ScwNKn{&F$5HvWOw9T2zn8zNG3
zSei_z1Dx1G5Ja?0v+C4{B&qEjej{er6LA8ul4xRXLST?&>=99BX)@D+TI+h<sySF9
zsG8O5=E2)qsd`~ONx78yeqQe8<@@&^Ki=KFJDnEQv!0$$khd#INFqE%vz>^-KyWu@
zg#e9+#uib{rE}iVIl(CkC#v9J;)t-U4Lz7?v;7PufdDW!H*d;Wt@+HExP^yICB0w`
z7td5zh*3A6WjYs*2(Q(*YG$wyWz;fFvRuwZ%ia0B%!@LG*C0X^0YfQ*BVygwq7yTh
zBBc}xPEdxm;WE=S&GVcMkBCT6@Z*P%=hHcz?o^70muY&k`n0XJUQf&NcYpV{(>z_j
zJpTSa<I|^~Pg6;@qt&`zpNOcGGS3A-AtK?0ndWJG+OAIz8r+UGCG;eL0e7T6n^Q+D
zo8}~#7`x0^n-p*rr9g-mlA}yj3OC=d;#&w7$16Gmmbmgb8Zbd3K!_(PQFtkQD&=mP
z-kp~F^YY>D{Qmy_{rR#?WzzYePj+Zls_cx3!|6<^W0ME{wT5jv9#*{(Hr+)hDT#uf
zqQeoMV?99}efApdJYF*gb338LTaB9ITPc`8*2=Q<h9dI$;Q>?>#6f1}W(w#e-@X4>
zR1^^Ax#)RbnAxjAnOTS#!m5Q>BI3HOL98MK$uudmS!}t-96~csr4-`WwypXmg)jH#
zX(^eY%%{oBY7nYf3K;{lmiznrdUqwFAAUIh^z+ZZ{PMY0pH%Pe?i&}r*4#zzwna>;
zx?tUGkYv0g8=3VRQNRImgycC<K@n60erRkr{lJLo8}%WPcKTxD<MT5PkN0k0j8ji?
zB)cDeH8f-PQzC=B8e53!X)5=p)4OH*aJjrYpYN9GvYgN7(=ts(CT$XYID*2r6A*Z=
zl>oqTt5MUfZfM3ak>^ni?%uM3evWW}z>UchQKM;c6Sw(&4@5#X9Z+(oR0=sB3gPY(
zgsg5`>J#zha=t%Z?oOwV@87pEBQr!Ovxq=t63K(E8n+n8<#TZZMcrzx(Euj~W11$b
zTY8;jMb}!ha4DrQ^Ywa-h*FBXe|fsHsLrRkl&7bsUw--Y<;$15%jq}2{`L8MdiU<#
z4?q6+>E}=D_3BQlIxll<YecB>x~@+TPp8vTO7Utk&Sf4aH4~!EEO2m0lcj{iv+WJg
z(55sHM>tUHwo{iujk4;Vw{t|_@!C*e_5yNR*O~|<xqGd(R)Yt*3-hUz%jtZ7KHs0F
zcbB{Om-8$<mr_I&T)^5`k{I+(Z-omY>A8$u3{e%t>=9cM$P_FrB(G>y4)I;I<UK?W
z+I-x!93oQKO@blfk-`e(iNhsdfv{a`B6LZq$&PK*dO4r!^;&Hc;rq+w{rmSHE_dg7
zrii&rOPN4^y<Y3}Da~Rm-*v5Hi$_FB3RK;OOjl7>m3f}8m7Hj`N|hrU2rM;xQW56O
zjfl!T=U@wnb($`x^Ywa#XBV>QTx|0X_aA@#>)-z24}bXm?|=XEr%xrQsLs=Db-gTS
zv*llY`iZ<Mrj4T2@rS9IEF&wx6dpUp5_!^HcvmMF=W!!I$|V`%gQac3M?S@CEkzGB
z7|)3!yoM9V!?H<eR<~^>-xxB_lQQ2g=Xdw#cc;^3p59&V-kncN(epAbWm2$a>*mml
z^yWwrL&a$5!32m{nrK#+d6l7z2Rbw^8oHW1tH#%$#;j*X)S*P;?QnI@^X=gT&!Lkb
z^iwX!RDn>V=ca0JVQ3LnnWp*O{oVa?D!{g`Y(c`4o(gMh>%(=e>&7aVyGwS`YOU!`
zvLSZ8=4ox5Ew${!swx+jklymH9sSqQfgQr1%)BfM1yax9d_Mo?H@`NsZQFkS`O~s2
zS>=5A@cwf7pC29`|M<s0|M<fnqsYVO&kDV}zdJuI$?vFJExW4qm?HK>o;flDX^q7Q
zc*0)Pl%z)MDH^}1$*k=MKE8UEckpc!ISCVCNuegHR#SE*%-jq?Qz@ruT14;9=l7Sp
zySXf-Ohu+5cjsj(Q-J^|A{yP4@@zQ-fm_VR4H?iQ*u#Yd!csIMAZ!tqTC&m4jPHDs
z#wTmqY-C~X&ctwpHTOnfa>{U-*+MFFc;lURW+n@QxF3}$1Oikr5$5@{Eb}ri%RC7f
z79KW<`t|x4ab><fK5f^hF!SJTom6$2CIGd1QUvmKp0Ivwlx1)v^3F@D?k*zCTC3H%
z5_yv9+$*!rbCHlQUmk7UmNMO)&P4R^v_3tq=kxiepMKglo2Jume*HJhd_Mn|a8qA@
z_~V~G@lU5^%I}_(H#y3jK@Vq^Ckri`?HOl`!ij{@PPlB;y5=aVTbr`$C-Sw%OwzUE
zh+8q=@}^Qs(kW7g@49WaZNg28QCUyZd@j>Tr+25*`{lIEWfnO}nY7GWW+{@3B}Kaq
z`%r%!8jC@G9OU#Mw-6FmX4Qt!dbL_@n)sR0&EQisVyc<d>fx=$9&M}=(OMaq2aC)R
zS#39ZL4<LTmJ;SvE8MdXD53>)H_eyx>F#ow=b3{*F71r7czSsH`OD8mz|5C<ndfOa
zpZ@&QCuTm)OVMIhSxR9E5YI_7U;?|Dxr3<II(uQ}S&K}C%vY<0MOB5+WWZDsEG;a{
zyr@hm(Vcp^B64>=GxN4>zy0lRzx&nqKY#l4@bF}2cXyY6_@Dj(_35V{f2`GNt!u5x
zY;!Zwf;iCWXbjE;DA*}@ADnawN^FD3^4B~f%py*6u{N!i-H^<uVKuu8>8=_TJ6frV
z<1Bu*L~ByTszHc6gfOWrbGe)5%e1^ZpYHEYCoP3>o~O%cUUZtKX)4OhDwF)f|N0Lq
zZ0-ciODUx^jr`Woh6t;&s)!1)q+RbM#2^6MR+D;=&HuD5RT=1T4=Ez7%p%NYwyt&C
zQobH$QL8P>iO^0#t#y04UfE+V(_BiuuC{JWm>5D>O1VERzy0>x^E?R<W|PQio{CCT
z6PADeum2Qo-+Xu<?r=MwPNk?vuprzBp<q=#E%W8>tRgC+!pu@cO3_KRlrj~S)V+_y
zrI-P$_U`^ZX#z!cndf<$gxRatTIYEZV5@5>dcK^^?BUDjGR?^$Tjp8Iv~AnN!{hbo
zF}&X0->qBy;~)P_z&9U17S$Y%or*HWwp{@_&y#@G>r*Kz;3BGkFcc7=Wc#48Jet<5
zFk~E)3t|ds$S$EZnp?Yy#yQgwwylZ4nHzD6NrjnVoC<{y4;8*F%XvPPpbwYJhx@yw
z=)&c4TJF#1NoAR4#+Zs=9fVpQ#H>E>c+f#=uSFQ%G(3)nGNmWW&R4<>Lqzmhfx63L
zyi`#PeERe$0!2%i%B)2Q2xp>)Up`C3tfhb?Xc7MQ{{H)KKeGF2n&vW@Z)R4nYea<A
z`Lula@J?Cgc{<J0wpCRrEFa(92SW%B;$Q-i+jd<~)9g7;2u{z$!47w?Xb>}N<_X{c
z)phf50W(k%wFMK=R(+nPh`=?n>#Tx#p69t#?>srttSzqd{P5+c<#hVnfAin{`ZvG+
z`KMog_?I6A_;7#!<@1-hl=JyCm$E&r*Xt_Gr+M*?P~<SIA7Fs!XU#;kVGw6>3WTSE
zu*2aLAO|B7_wH&Ey%#JZ%y17Qw4$=sx^300URN^{f-(zama;IvTh4dq)A=+ns<Y~8
zDofExbSm1Nil9Y&I57pmnurY?2ex}!oOi{MKF~9!pP8uX{#R?qZv$p-?l)5^O&U7C
z5Zn%Z8Ju?#ph&6a;U3kQNu0vH`jw;g6K9pnvfN!x-@SkL@&0~$c(}WqmNIQyd3<`b
z?Mgx97FNIg_%Wx2&(l(+ZgnGy`@6d=HG)VW5Kf9eBey$&0$qBELC``%MFb*6Bmia3
z*%)S4W?>X271kt21x>;cQ3c*|HB3`deIuvcCsC0LRHjMS?crSHo^`YJy4s(9_@QpA
zl<C`VK0ZA>{rK}Q3Z7I7khtLb^wf!H?ZLE@nm|s-a~p!w+Tck@98+Eqd88A<8Ej2P
zAUxVMs04(Fi7Oehhm@#J<5gEw*P@F~OPNl~aw+rs%iZ1Oe4ds`r6`w4N-0I9@ddl~
zwgv-1%#AeHuqeE)AQv?y8he+pDgOij+iI;g^ohdUyo%_NFOYeI^!93-jZC^>Pyp{P
zcVC{Kw(A;o3+5D7D!@FKr-v`G)p@@A)i)o%d;fmYvOPSUPxGu(p6ER(I~QsMV7!0-
zZhd^Zu4^f!OoFGFmuX^D52Ik_X;RfGJ#KGT(Scw>2A<MI@52ie)j+f?%g)m@r)q}m
z9GhjIB8<$u60;T+Z%5!&cM@e)o##?(neXmJ<ni(G(=R_m%dda;HxEC5`t<Xssg(8U
zfeG_66)nDP9<hjePh-3*;CWLi<p5bExoAJxw^9%&%R?s^dFo|Yc!SoQ7}3x4bWVIS
z2UgvQB9AAbPWvuW&hv7f=F>D^=6RW?Sy&muR0Kt&WKXv9C2Kf^sw0!-{=|tCy>Et8
zfbQpX=7B6nz5CWq4%@0%CvSSaAP5lPKFQhCwwkd;9;=j`=yvKO0s^`|J=N<q+@wsZ
z8b&Y@3R~Bi`E*`B-rs+7xqEjx!{h4Pq7!*tH{0qa;AK7~=Uc(=&X+HQaAQR&i>RJ2
zOI<f%q973z<x)~_7ph9**o7O#&At?eL%EYGGKm7%w#~g}F=Mt8#fsDw_pDHfNQ;=0
z$P^p4Z371sQ^<8Hckka{>qhG~UoO*hHrpP~chj=`)9?TDd0Bq-;p4meyZUtf^6;SG
zSxr+^qh}%3kCn{v$D|C|fg0F+L05@Edu|S5r>GIq|EaZS%%n3|C~*&R3TF=n72!o?
z7MVmA)v4%GrYzt@SXE0Ys>)1V0j!NbX@i}{nRrB=;%I|`v};?2s#<c4Z*ncq?0}Q1
zm-!WQ0jySUJ;-jF(Fm3@&eQEwbS6AJJ`hpSGEW7db*<~;gIk?}Uw`|}Z@&Hh!{vM~
zh22hNzF(%z&AWu83Q8$j#7qk~|7M=2ERUyIi>OTD4)-MB2f2Y+kjX+*V`bK1WZSw?
z)4aivtXsFOsHQw|wiQK$Ld;jP8jkEPvq&&JLW{CaWtkryA0t9a5fP)<2oDbrDCKW{
z_iyTT{lg#rpv&^#|J%R6obP`6;m?2k@yDM(eR_YnyId|5alKwoT~EauUo$hD?9%N*
zZ+;jH&oF6dvx5PqAcG?yIarvjmgvU@<k1}FhyVpV*u%p`c;d2@Sw$3>SWYs{lji?Q
zk)@Prnz*zhdaOyq!U!5518Fik+=3kaP*S>?Ww%~lG?=edmmcJSoNQr`NA^-1${+m%
z?Q!T{`ZjX{BU^7Cnc*=o>y$f>%&OUXUCBaO-d`@?e*ES)zxwV}6q`-JqB2eTWqpF^
zTr_b)RV_tJDL_1}*I9L%rtA7>z7<|-T~)Y<P>gd`LIonSZ5ybAWMmC0W67AvjX6r=
zpkK4f6auPwau!HH1`>gV=YcA!oE&*G_rQ4;W^A==+r|PGDKSZP77e(}OAzZaN5p(O
z|HJ?CkN@xg^Pm2&Uq1iv(@!9}EZ+;$_2~+Q3@kF+OaUiqhiSB<vD&{fdFm4M6N0j9
z=h6pM)6T3Pj)OjU#|_49&1TO5B+>ije4dwCbP_#H^WEh#muZ@&%)_$JMns#Na7q0U
zOQl8eJY_9ATfyy=I^rbQg*UK@*mJbS-4EpH1S~T5Pvi4#>w@npd60yqZYAxb{T?~c
zI3`^aW>k@FtG2E+h^&@~yZg)g%jLuU-S;2fpNh`RI?1A<pzHcHi7e++DJ4nL%v`cd
zsrqT%PRnvWpMUzv&8&!qS28Ev#Y(f+G-W;5jjSDtkv}R&<qL~Q@?fI4X`KnvB*#*O
z-PUkoW+jdAZL3?Y5j;;SI)zs=<85PR4!S!p?jJsV`t<qdPpbO;cfWf0<@4vypB_Iy
zeE9CWfBzrO|MmC3|KX2+`Y(U{=ljd$PD>-k#;BnpQyY$O5F%tB@ov=W-UCGhNjr~}
zBwGWG%$NH<E6}*5U^tnRxlYqEO{ZnKET=*|3!hH&{rMEUADNY~dEKH`lclt_L6BKh
zZKdk9MFpq&up($R4|fHLsIY{)n{D<mP1B^ZuG?z0Q>>ZXy|&u4KuL&+!cfCGGO6<%
zfoYUY3kouG1PKXIu#=lT*>%>kl!YRmHq(d?%lU7=`_<(%-JehAQUo+J&r4wfHag#3
zQqGB+PvX;5=DBcCxxaUJzh2*;E)BPv79hn@Absb#Q(bM+d0Q)i%2cue5ERoSe$aA8
zPEd&y;acnZ^ax4%KCSC2QYI-+51*$=%B-vccMG35WG)e?+tth_VV#$?)^)vF&}p8m
zu$<3kwr%$K_{hxf?>{^~JrQtvH-G;-|McbQkN@qTjpVm~_p9|^eqPt7(`h-)<+@(U
zojA6qt4z}6L35n8*_vphNSPVn<^*fuR3Ld+wh4mB2p%C*dAMF5uU8B5@O7=>ahgve
zT(~Hh3CmROmT8$a!b&+!vZ&0=sfWxgP-e3>C6c<uN<D>7^{H%7Cv&%P+j2J7!!6p4
zctnImQ)wG*jDcu`qo2Z3^3+2kNrfu}H!UqRVWu{C>H(sYP7&rtLUcb*=VkuwH{bmF
z+iy-Pm-Bp@3L?Of2|Ftq)y-W%q9P)Sb|aZa3Fj<bfY78?SdwL=NpYqK=7}|wxCxUm
zktfYk0krWkba{DBhM9;E%QH6KQcCJRpqdd`_~zk^qLVuaDf{EfOgbUF6kTfZYHQd=
zBqFM%ltP5ZrzazS|K0chIM0{+yFdKlzy2Tp@jw2DzyEh2)QIbs$GTmYWft(dUGL`$
zH4~$7SnKX4*41?}QdUe5>F_`SsX4Y6;Sq$C;SN!u2&?0GLsFI^BFrKv%z5ChDCTLI
zrg<t8IB`MAVa<M=1@f6I1&|{s+>eouAqs(RQIY50Fi{?DmG{E|^qJCe*m0y-M7yyj
zblDnj$CJ8mgv^Gf18uch^{L3+vV8O5-8UaT++WV;sVpig2=}Zr2*ijXXCfk#v~G8v
z#F6o6@Vo_Fn876Ed6KZ?;1BYt%TkE)C=f@U2byw(EbS0uK-|5$n|q$g0?UKMv%_J*
zIH^$dW0^X=<>usd1i&H;VeL$dcKC~#Q7E%c)BBGfwm<#p%jZX(`TpJe-~H|Hp01C7
zetP=DpZ|0z<?eC{P##B8v|Q$eBa^dnctRM02;rV+2NOU!EdfW8smLfas796%0jE4S
zQ&kbZnN!awRJ7!e7M@BLl0|1#Em}k*cea5vL$yjIvpb>^DWY+@!@4k#c}*Ov=jd%L
ztwCi@0GWe0<w`t=iP@t+m!6j9{9}%%p$GXC2ZiRTwY&N-h>|`WF5!!m_xG3YKYX~q
zJ5R#1<Z&)}YESj1JhlI*>O9Sf38!F3@()!w-L3*!gouQgiE~CM^~#u7z>wTlAYf8O
zP{7T$2qBMlXPuBGkj8;K&<K*rM{Y@lfU<}POE7Ezqbv|%6(u;RA}!3E@@#8~i0k!Q
zN;#d+IWhaVZO-`k?f3IE|I`2dpYEo)Ec3hjI{@oemH9lM>UuqBv-S9Z5Q2}B_ZkDV
zor4^0_AWd~g2>4bHC%$h@alPA$~;YzfQ4CAMT@GcsHSb*%B{5paF5_2_v9XWQ0hhN
zGq!W-sl&4%grtH=>uW|><oTDmy2%8m!&wXI>b&OhDug^>HXm^cU4f5oEMu;%*TR0j
zEZ@9;_cz~v`<w5+d3SeOL?!{}sYlAq%`mHKpiQq7Ek#v?Yo%b;RHp)`@<#^}wT;>`
z2hiF_oK2(@<r9lwA%*5p>qefsE@4?kH%0KG>f@k0;;GT`b6TIO*Om=Cd4i9SKH*~w
zkv1htld3S7F-;RDmTC`=PY+Lzyl&GpeOMOT*2gaoPj=<G@T%Yb?zf-*^yh#6^z*dL
zWzzM_dVPGF8PbuI)^2K<4s%wZjW8N{Ze*$wc^gQNf;RCcfgoH{1Eh-wsOnrMcqAHj
z`%}hn`4DS&@<=eYJNXDGd9cMUb8enW#>^bxh?YYIoSDNb5mNX79Gna|izX5tkrM&O
zPEnuJOp;xmbVYUB!T|!4H6|(%DAuRXr@Omv-`)M{n~&dr{P^+ya-Iv^IrXOlA_!sk
zDonHT<{*`P>P?E5F^d2YKt)wG6(^Z_63GHynw))b1Q><cEdwjF**IkgzOfdE19BMW
z5MqS)iETo1ZCljlV!lQoB~vrkso~4{lH76PiV(93utiR+wca){sCrV+O5y5EzL|SD
zoj%M3tO5G&oA3Y6&!7MB!w*FCoA>YTms5#|>pF2Ecpe~BnT<34r2<MHJr8HFr^Xw&
z%do-vOdfG4@oHq7MO`x`l^m-=a__RLE-FQ&aM=wnhFB9()5SO>M=J6EvGs0Gk|f!A
z-?@22WM)-$RbOU$X9rk-1POqYAev17fh5x(ESb^trdK^sGJ^;~07>j(xxnsRdZxRp
zt1`m<T=a0<BeQ3>W~{BPrn{yp)5HDvIp6pD_Dr=A!C^s;1ZmYx%}5|Z4v=AofDIr6
zI_?Jh+-}AJ428-7(DfEDc4jal1ns$)S-^zPEH7_PZ(l#WetCa;nwO+Ho9Fcvh?1ES
z(Z%OkgNjJOPD>*IlAc;8=>-8q>!xDX5XMfJ4s!rRVx-_Gg~PGBMPN?5!vVWBvYSg_
zC)rX8^D{go+%4SIY?>GA$)HHNN4cx{RlEzbd4Q>@x}g^WFGVb%s;2&;EOSbR*0ojL
zj?;W|bHgH3<oWT_i`Q>j)5qs$Fr8n%J}q;nBnL5o0Z77DvfI@SA^{Lg7}0^I0qEJ=
z>%0WV@C3btSy%%PBJ5&rvw1p5*-No9J|tgMpx)@UaBwqAkwm9a8@P}K_yuQ*4j#e1
zRf-;wmd<V<_5g%%@AlKU<Z9$~fns1GgVG(^otD`QM9*ECvY3Isw#N8D-#pyCef{wE
zi`VzJw+AVLz#aiEjOq253P%s02|)_NiCBhS*WEcQ{s@9Dp8)H!T0%es&Q&!~nMor{
za#J9hYSQ#Zh-7y!cklmr6z6%76vz#3h=x*UTo9qKV3}qqWbS0@9uU^y6k%Wh7G_$6
zCMiYcYMN_hn#y!IJbrqf4~xvx`T04(TZBd^#K-OY>g%s=Z*P9{5C8Dp_dgs+riXjm
zHZC&`e}(rvfz(@fXd%bmP44ED07}51gOh`Kq?9z=!2&P}q5)z=223&a)*zEG7vaKK
z9QVSjheUw8s@|NAnKIOGU4QkLe@fvLP7wki#1k>IfVrz-Kw&9T2oTf@arXDqUzr}G
zoLCUy|Aemq03ZNKL_t&%cSl?D`jLsiY+%(g2Lb^J0*=SS`T1Pe^IQPJKs~>tFzL3D
z>&>#feYpG6ufKY@yCYLU6a)&NCjpO%xk$f|k>E5<#DaiK)Uj1*eM(ujNNVu2I4Q!V
zq)`b{pOfvwT_Oe!ZXRyE4+{YhBJ6IL*jNNYU}R#_R<kb5{|7?k5NTbve8xSJ<Avt7
zwOY#5R1xWPJQXfY)h*^}3V?9+a0oO2Q_CrOGoO|j37aYq&4*c7973k)>G^q?W~=S)
zczE~S_qT_`!;AZ=h^yD8z|1Vw%-!c{a#Nuc=MW6HW?_kL;tw^2R69d7^{uH!7BHyh
z>LF#iIUHSGM3#A(gaxTEFY~-C3$t`yB>|_0n~+7;b#sqqzO@z({NMjKe<py*A7mg#
zBp`GH2XLqSOhDF7)Y&Xoac8N^&W@4$fM+G-(x_tvyRW3LddM&3bCE(6))4&maCrIR
z_@`h0?5j6#Zk7cBrd&N36ANUv>#+7_Q9($U6~hia81cn&6{NUp@Cy<^P<9Y5nT2#^
zqPf_!(%8(x$h#jor%PS$6j^3oe;t5rtGSPwxh2pL0Niq7n0TlN5Azfd5>r4hu@okj
zR2ZhomYB0X0|25twCUX1-R-T`c7J;t;Xl6n;rs8u|N5)1o*th7p_u~0yv!I-TSEw@
zC`dVE%`qki5JDEQd%6N5n7g?(vu0MSdYA<eQJJPvrXppTmz%?3mU%8xq)hX~!q7(}
zJA<b$jvo4MUR%|wB4(WYnSScIhl9H$HOKwJ%8y9sizaqrEEfzHWHUE&B9aWURWSGL
za*UgP_AekJ*4mayrovXM*KI0ve|!4!)&1)icc*0nH*3|)<n9>02R&U8QhT`|#FSND
zf{h1oj}p~{D1%r@BcM7fr9EM?U+wWai!S#6#LRpNq6)i&gye~D?l9(20nB-0&_s6+
zd^M4%88b(q)&_tg69lQ5yPIwr$kU7@g2aI4F|njueVz{*s^R3o%!K8upZ)w-&-Lbx
z1VaC0``f?%>)(F(;Se|-jvl&gb@3(frG*Fp5>*p>N)-Tv7tTN@G609L2yk<41n8}5
zs}=|>InF@<DP3VvO5sxWn-dc__Tg1WMr7loo3S+_)LqCMA~8^xhPw|p%!LJ>Yb4*f
ztk}Hg5y9{hV;VuwoH$wh>R}qa4d(-!ItWuPsiW1E!C%~*-oCzn`|5#_tf{Mo8kU^6
zg?9`|4@S;1oGx=lydc*R2a__!)^*7fO}9m#gLQ|Pf1Vq19V3c>7-rXC$6l);AaD#r
zJX}&qa9I`rg8Z_>;7vrXZJMSC+_o(oM1+{o9n9NSw`SCg%VZw7!|o!4n5M~H&vkQm
z<}%L<Pt(oqi|x~g<^KN9@9)<7{15;9&wujv?cFp%YuovJZjA#FaVgVQ*UnZMY_n|1
zhdBa-buakN86~6?ZgoL02zqkgE;wmsVlLM~+n+IkuL1zP16o|>q<c{x7il<ksRYt4
z_ZlNvLU07#Qy>wncTyemhC&39hB=S0mI{lG_a>11d&Fg74AY9?x5vX5FCV^q`S9@K
zZVDF>2Na~k;UGxbB1c1nOh`zX`G6g~!N3==0T5yeBJ#M*8gZbLaX&(b*wBauuG+6B
zTq6&)8<V?fBUKN*1nU!=?r844n}|~8W=0W+6ya(H5ln<`oP;(a^HfFwA|95dwbs<#
z4AGcqk|IckTvZJa5Z!@-NMxQ4lbqhad;jq8@}0E>gCYL%zx!{$d-vV9pFYYY3)6f!
z0HHU_?zNi|B60Fefe8f}na;H#fgmUX6JVeqFre*EYzj8IA#pG56VXH>!c++5Gt*vw
z7XkoutM0zFw$`n+kfoH}i)#deY=EksEv=*hYjlrtKWREoKXsVMc%hZ{og<M?NFLgG
zY(&^MAi{7)*y;w_j`Q^T?(XHy%`(Y^u*}Om&&~$s8FLrrfy695Hj9w@Era)mX}H)1
zTa@-n?UF_?g17KOcON~4YeW3!j)a6e?M_C@ULpginjz*jIWEq9MIp6Fsjc_vfCV%6
z5M5k^x30wvAr!(QG&O8{1~)MZALeD6e69Mtty&u~Ez2@bOOfT<Z@+o->W`(+_UXgB
zci+Bx`^CTfw}0{XfAcrL`Qf{_FYe#m-cob4V8HFXVha9ye-a71rL?doa#SP0QNu-<
z2*Z>hgiv?kPzDTNfWVM86(S<xRAt5`^9!!CnD(V7g)veH**{C%?c#(8#-!nl*$_{E
z@9;L$rL&*O7l|rOa4iN9;}~G#VC{NVu(^%SLT_F@ynXZP#ocjc5(1&bYj=mdnE_BK
zb7EK%GYLS@w<R2rhJ(b4m~>hmn2p@Ac7uGTpkTjh#U-yO_d_3Y-RLptM1*?`$3V<Q
zSHySS*+7ys3npY$L+oqX-8fK?0@EEB(=?I#R%>Wm=GmHNEf)c*-kLT*5M`RC<3chu
zH#eB3NtmoDh25NPYt`f7#;m>i;>+VC|LWiVo2TceZ-4#k$MyO3-CZ-C0H&#&A0MZg
zn1B-vk!gKdR1l&dI27u)wFHZ6tsTOEWMlLs!ppo&Q;x`yP)6a6*8`i+j!q_sAj@+j
z1Oq@Jfx$h3e(YP6p7`uO#t^o30&vdCv#v+9hAcTHi@u792n8j&|7jrb!vJ6|g`FNw
zhp)eQ^VOHH=Rz~ZvMgD-14Rt`r?A}IoX+R-Zr9G)PM(&b;S5YY;`NexnJ4t<8|{%C
zU0R9UB>+3(D{!Y9U*PrF^K|wArM-`hd?8L=MKUUQNyo29PKrweiHN$nJ2R9r1GIJ9
z+&!3TtH?CrM1U34x2;(~z|-^N{c$-QW({XvSthmm^z=kj-@JbF?#J&P7A(`h`HMgM
z_ILkm;eYv8fA#*|kL$LbYt{4fk;{v6JQENzCgFcau11jibzDd~fUGrdRa-;%g6SX5
z2rLqj<1&d9rmNteOE%y|IgLG=vC|7JT-};g5oF-B8zl%o2(ge@pL}!SRD7l100_yl
zpGxQvY@iXsoB>X0?*{<0XswyT>3GaNX_`e<+qM<KrO3D6fB2&>9^QWO%4(JQ^!oMv
zyYIe#ad)R}W57UfZDT+retv$MrKJD(!f|j%#B!K>8w-#TONOdOLYsR;LZYeiue+go
zAlmTCc4oBh<?5Acf&udQ00aYI&cl%bprxO*mmvhi6eI*5I!O>wSPe{hHkp}+Tejkw
zBGR-R0KmfKxLDI|UANZMjV6|+t8G#J@$vm^M+hwQ6o`Z}oeql}%2X7hMVwAIyqxBn
z`y$KD@#g>fKmWs8n-d3-f^S||s|=jOKc*yp^;qBI;ZV(7n=l2TxiWwt9jD3G)zqc%
zyv$Gv7YfjIJs*#>2mc~40(lywKxqfZ5s$g2)>fa^_4!=at%{IjE1rh1-ylY|dw;wK
zUcTcvade2hljTE53SXpsS++4uL0ouhwWiAr&B>jE3es0^U;q5=7ccH^y|&XLjB-34
z6EKlG1do|35m^@LcmYpzym?pf{xl<(I$8Yk@8@xnJAu33YWlG9Gb{*Dgf`#F9?5$2
zu%E^s?JNm&7}-tzI=-X0WI}hyZ+eFS7ug~T@eP-v?fJa5=cm@%*6NJ3ZqEi#rs;6H
zDTkvreSTh_pU<JV91eFcA3Wl_A3p%fFaGRbiu+&w&42tq{{8>{!{g&0y?pri-FF|J
z;^zJ~)VtFpk|Nt1ZqM76%r7--meC<Wh=(#a_3#D+;f6ur9<J0c&~bSTyQm{4h?Wk?
zh)k-m-SX}T4j{rER^#pz;fXsmu)IoM<wlJ>l+Iqk00%&(oRH-8%_H2@q2~@~-!t67
zg8-0`CSH~T;9vjjt1n-_VdgRuQLO7qh`E?XgW_@@^rqeLGCrSg*L7-37X$o$TpwMc
z2h-FFS2gLiq7AQ7jrL==b0_{_&{bUJj?-Y~59&-NZyJnTNHat;2+d%TWTdfl#lTgY
zAXof$-dgp;?al2AIUJ@YViw_4Ya`;r;b87hpPtGjH@ElC@8A7T|KtDs>;L@AU;XX>
zdt^B-M-P8K*Lf05-WrX<5`&1WIrhm1gjzmkg{YZ}kT?Z#if4+5l!+M`L3&LV1c@tg
z5n|vGWDChGb42rw(M-c8|1baU&j|=HC_W=dAqD|5M)m~|iBn)3&e@YrlSL3Bm|Gzc
z5z3pdrT10x4ODA{upH+?$PCBh@i0w)`irmcZ*RP{gD@kux?W!8(M^>h@5T|w)FTV>
zb~6?kCfZ=I#Ip^1@k{Ou70hk@v%HI3J=eVFtCi<DbRy#HX(9p=@4Hvlnmeg^xFN5C
zn+IJdJep~THmFx^X66x?(T?g{t#xbej?87AJJcMYd+C`WLd{>jdadqTYsZ`0yZgIT
zFo?+eckjOX*;f<N-~Zj;oj*N2ym+BaDY3B_0ZEF>7y;=&FCh>%w_01(<_JjKnpIPa
zAR(SgnWp7%xVgEJBFj9_G8K`DXfBfwA^0@Oh;0Sz6`r}-d0n^K*0pWhx^61m?Ur2z
zMhKP?<$Re(?>kFlPt`&6dqLu2D2S&?xFAzRh>~RxGs*M05t<+plVF-KLI~e}`TEP(
zuLbeEZG1dTg`-tLGIUOH3G9`7V0d~)lZ-!bf#`Ng8XP-W&h^JBhL<jW4{F7pB)JEZ
zr6-XI|6oX9T1c~3gvdiTJTh_}EYIA;c=wgt<DDP~`p^aDSyD%r@?)|<k1((6GYAvO
zGS7fa!ql{>ZJ<QNA{5ZJdZy=6=4G1Zd470!kZD51WjUho^ZESY@$qzf`>S97=8ymM
zU;OJo|BJu-fByR8TI=)r=YR4?&mZ1{JEe`f3uhw&)qC*6wzajkwOPuEkx)c}kXV3)
zMV6_|r7%e$E<y#fUD>hPX6B(?r{iX3XRSIunzq(jtxbrC!VL(>tta{gB6vV#0OVCZ
zsODv$zhMBtMoxhq(%(ym2|4vl9zGT65)+ItZFLi&xyb8>SJNc1wQz+njP7(2rc_A~
zk;ERuj<R#q(lX@X8QVJ|w0D#m{h<WKpr1s&(#1*|JsavL%d3x)>~dZ5z>BG5)Nq_}
zy*&X02nGqPYv>X@j)hZw)I+NbECpw3E-=l9<>s*51b%ut|M>B-Zck~m5Mm~Dt!<;Z
zET_Zq{rmTa+q)MJ_wU~S`00E$GvNut0{OYM)6HqQxjU;V5g$+Q9-k;cfMX;sG@yVE
zEQ#=D*4%ZENP>`gng}U^guM43f*~g6>@jhwiF@-tF143CnD@2SnyMwLNY%|u3Lzln
zRUs+f`B$xb_+nHfonaA!WtZ=<22x<Y0j8FxCnK6$bC_ffChJ@UV5ZyS&D%Gxmr1M{
zy3Z_H8>)v|s*^9{i%ix<+LbnOow_}`6#<_GV~;qA%QexjMv|0&b_a3gixqK+QND@+
z0Kg#1vbo=XKD#tPfFlAAq=#Yl10xA?0M=uP0<CGJ*`K)+DBZzgn&*hHwwZ{O`LHbO
zR$Fb&yd`qd+&~dGYnyrNJ1BE&tyVp6&o?(WWh#$PpML&}U##yxoL)ZMKD_?0Zm;j|
zfA{{!H#diXU_>Tz#2keY1d~+t>d_*QgeT5-sM`byN!XE)Scn8!7$tE82#CQL6mFTU
z?Z5#Lp-Ev-Gqd%)<xzRw>hrpa^oI=H4TA&sR(Nhq=_bi$68T6j%K^1xNLnUKQB?~M
z=&nXp05d}mVj^q^3|M%6_3+~Bw?BhWH$5`J;Xr1lnh|+1KpT>SBS2v$qVykReUr=~
z8X-jlNZoRnl4HCkrTIYVU0o;P_ai>9V=*qjK@u*3mk}q9*+%@Kd|kdufbQ0>xa4Di
zcQ+selvJW3Ez^A7*5^-8+qNyo8!7YYupr{53Qe1<HKKs(zS0@F{OlLMcxv8SbAV-8
znkh32PgdqvZ@&Cb-+upB|L%Wydi?b7|JVOb%5;DKqPCV%+<=^j%j6EI`PSOGZfcqZ
zgh59S8vqjvF$*KfGEH;oZhy)ZmVE_u2(;RoTd1k2nblUet!~=ZZQW`+*S4<pyj97T
zuBw{3xl#7t826~!3<=1#c0tAryiB*gN0(M=D~N^I0L?TYnBXAO$J!8KDpHWatxR%r
zn9t8oH>ZQurc860h@#caJseP^5QcO;q$5#!lWvcP)@L-Cn>l1gKq;Qh5Xn+X!s{ga
z(bT0Mk>2Ah-uI~I5m_ApwbtJ3#Zkb9hr5QVcNqvX15w`6dj=(4u#72TnwXoas&$%a
zAi8<K76SlU(})m8VF?6pRhTeJZSDN&sVq)hCYIB(wDt+iQ%2%uVU01q{qEZ@zy4zY
z2!UD+z~8@re}DJl;r`{1A3pwzKl`)4{ty56>BS2<EVLXRw|c-BNnW~enI~aHHPxoI
zHAlo!970urXqu*V+oY>Lfq<u}Ol3mEo6}9nHxYoq6EA7z%W`ys=57|vt*TbFre*=T
zhgG#|D(UU%m+Bne5GBYZ61?c1&m?3FGz^Dd%FD71nv&Qal+^bTL%2O2w(xe|R^4Wy
z7q<^D?r!dGPw0+00W}3T?6ucb@?7*7sx;5{_6qcR&<9~~N<Yv*^0wAYb=$Vna$x2z
z3QAEdjpk1NLy%ocFaQcdPOi}S3{r5$Q{d>ET*t=HRov%AqtWevox9u*`P|i@TRZ|k
zOAyzlj^OI1YMH8xTT@@=X<0>8y;W8903lx2mCMxXdc3*0IUGOwr=2YH?*03NaMT3|
zUw!fR;q@CM2IiIq(#~V`aHjyRE``FyOat94sx||Vu+Bp!>WL{NFqFnuiHN(xB0im;
z&7!ug*4o;()@|F?YVE_vr;qFNr{`@`U8~B#*IpS<cA;NlDxy=SU>DEiO$Bp=jJ8K{
z0VEyW2H}W>-J-gBtMlRR<^98p+nYpkpgCk6;1=e9G%+I&;{tZE%nqo^0i%roxxDdt
zC}Y8q@Ez`<X0@r5U3t-)7l_`IBoQ!&WE2=k5Evw4;3+;w1W(*wS6c}7eDRD$&P>UR
zi8Py?nU-a4yvP3~+Nndbe8-UBAaMjjxb~Pk4|8i!&EZ`2=Kh`#(L=3ifFm@P?YxS}
z<KxGh)9G|PoX<~lVSuT%b~-H>@M%3e(f#W;cQ0Q(K7NpJE`>4*+QGA#VPWCLv4&|F
zM3~z);w1_(G6xB=ATx4d7UB%mrOfhh1Pc$Rrp=L>TFsBPZMB|jtxX@d^V9i!UTY0I
zt4S$y&fPM}*en2ThdOub$A~oIuCo}4vVA5kh^Ucc1_(d_(15^Ltzq~iT*~S7%ZJx5
z?<eM`Pap4&C+q1El)=p`I0TRVc1a$4mb>;QEefImq$wN#wynB{A!gr>m{DY&=eQaZ
zW%#vql5g%Vsq&{Rod6v<d&(&@B&5ht7BeH-TNANI$MeWvPhERHnUoFctKj1F)pa8J
zl_G7QwI>-40jw+K(A>dneSU6Rb+zsUM+!BqE7tP({@u$Lw};c6FrAhefWH0V@y(l;
z-t_$Z$r0wma(eON-H$)WG8<7t%HuL9b8*9*nriET1n5M-M2K99Yx=JQL`bH@n-WPM
z88AeIVbAQ@)B?PjwPstZwb@#?b*oj|R_j*VS=(l|nTZ2>45|(&U_xB-M#<T6+_kN#
z^yx&g(dkU9MR>nc_0q=zASi+fmPyJ|9$wrYrYRz7t#CMkrw`DQ5JwR-B0iC#!>jiE
zN;e1(rk;^7{8IT&Cyh6EKNi_lirq#&8e^XRM?wG&3Jl6f2nVB7ymizP1r7cRT(U^R
zbSML0g#KAirO7m{{m_J*h~y4B<_DQF*;S9wnH9F@8=(;bpdu2{cHTm*hYLCcMANFD
z{O)w9+xh(bX`0GB$$?8#D@c#;KX}f6n4s|8tC#Z4Z<pg?eLklwD-fng=m;o*J2b=q
zU;+;?r0lAv7$}G^H!~@i04%^jvVaIMb0ToHt*Ql7)3$Eswr<<DZri#&udSVHJJ))y
zTQ%F<MOE`zWFnCz$?dMz-I61=ZnsLO){_weh_ibOfJD+OOz1g3VCuLOIcsx@MG7;i
zsxTg>8QjnVOoJ!_r0Z<E;dB>=(UrF1%BH;62Qf|4L<D|)H-v100~3t2#~~@{4VL6u
z<p~!E1QHM!926X77cX9UEpf*Y<OCu{YWB#Q>6~cJWSTz3?SrY(kzg=-F5?dbSf=Ym
zxEmsQs@KBNftU(rprpIGYEx||(+Q-mPv_@S%A6s8x3{NHpPm8WbX=C>!Bt;8+)wj#
zZd$cDF=i$i0vhE7UJ3(9*WZL!SMabv!GeK34zZ72x~{fA&t_S^n_0>#Th+~4ZML<#
zwtB90YqhCvu1&3msewedeIhVL>i2Mz7#P<YK0*XHgzPR5q+=r8jx5<jM#}iXF0k=%
zZH<MO!!n6z+a${2aByu|%Xd-s?`e|8AQI?e4+iis4Bw?bx$6<-)jXRWka`@tbY;6N
zNSH}17>M^|;XOge!f9BWvPByaS+J-6wlhlyrMM6B`z<$D0=PS}PzOner<^L%`Wqae
zISjCISON$UAa?Z}46Dvni1SGNOh6Q@&!6VgysewVhtthni}1kv7kA6DJUu;~PA7N&
zxUF}$chm9k<M;0hvEj}E@D|=T5lDxD<w($WC3Kgsk^wqUAOle#p;I`ThpJmRQD1P?
zysB=sZQIsb+qP}3wYFMKn`yPyAS_UXi=kp~!+NNzswBrhi3*+InJfzOoO%->qD3U}
zvlqoNBDIrj6MkOXTI=m}x;dSeW%Ak#lp#ZE_dFLc1cz|wbd>9L7TIq=90u9g+xJYQ
zTMI@Mp<(lNa&Q}3lE@5;j4U8#R~YN7EAn<dnGZuq_O&d+lS7H0UwgY+Aj@^8Fwf4N
zLpX3DcgtQ>Hm-X`0bzKBKkT!pASwA(Ex-a0I0Xo5)d0Qa+aIM&BGMQ?JwCm7c+lEf
zRU)CP$mQj$S9iBBzKJNMAc8i%eQ|StfB*60djgbxLQ^0a0Xj8+tyOI;zy%3_og)xM
zq(%S*5ip?;3<U@69YizR?co}JUY~2Tbvtj{`n+z>+xfh$=hoI%pVsYp-3%a*M3|Y-
zn`&zj#z>RQ)G@WWw9?>)fnnJ>>yki3KxU!<Z8}f$T%f7unU%<$X_{8GJm6+x;{a3J
zRw3k4BEp((YRpv15}bq*Oq@`@+_}YSPciR#@z_&W^)SsaSmQO+Jcw9Mi(4S&tHoV9
z?C9=AWHge8lqrR=MI4==zxk<-iU8sL&J2Z0pg}~KF_QOCF=R|(05tbaH2_&kZ+p5&
z&TaN=YydzXFrYLTl6tIp3;~*hnJx3YdFN$hZcBuN;j6oc^>OtU%kd_v7iMC9{P@U4
zPRHZ(`uw|ZzB%2T=DKXHzIyfW@rUmb>AUZ~`;%Y%;={*}9&k7w*rYx`fk?L#g#ic#
zoH0nyIUHK^AdpiLAa2d(GP#CB3a-LT*V@!-)3w!YUDxN_%2YSA)$H-SsRf{<*+W7#
zHLOVDI$GY>c=&F2$|@XtzyKm8j@S2CpV-YR3}^u6c0M-}IUQ~Uv2N;Cr#=ybZezv(
zLLlm5a_`*||GW<4RCe!TvJ~lGNhiD~KZ0gAl`$cJ(eHxP58UYKFx|S30LY2oWZ(p^
zlJ}oB!a81fP)xFohM1O%eS#Ylly+(1;v=&$EdrT3rTy6(NXAT5+*9W}=ZavU1X7%k
z4ZbuRc_u@<BM}*byH(Yq!t4yovOJxizx)0>RV{^YZf|aGPk;L#f4K-8j>|Nc8Z8(N
zeKU245Xm09dnDBZJOTq5qM$GZQH9uC#V5{gt@mTgF`KSi)26Mq{8wu;+gz);ngyVP
zdrzwXaWf`jVh422BEYWFR)*;^0~Wem7SMwMI{-FEJ#N`3Ct+d?bya&lKi|H5bvhjp
zaNSnMNZssD>{E!>w#v_i6=PbL3v0K*^(P@dPi-6p-f$%`?QuzP6}C3OVAvBR0f`}#
z=?0fMgWEfX0W3>~fSxIaltGwXdtu(^nt2~IGw2=09tNGX^ASJOqjw$A+=*ELoGAc-
z86wC@)%S}95J866r5@PLys4I2D~Kon2&?LHJlx&gl~T6t{QUI%^Pm0fzy9)<+w&ur
zX+9mQHe?LM%_|XkNwiWVcF4m49Kt7>xUjHbkh{0m8Y%$Qgq2_bfPvN8wz{?2)~#-}
zom;C_H?y_1+Ulmw!fjl_l75|W0@)OB7+#N&>adUM0!LCf{a*55A{t!{pf98R7S$tt
zq2})HGD$+-g)bT8xi|f!tG<8c!i^bI#SUfa;9R(heZ6eHe8sEYiKbTpqMbu#W4N?)
z`7#7XBLn4gt~F!<0Nn@ffG80SlH)-mcs}xBOB}cL5VEe1qY|MbsT770vbkoMRYCF;
z1ah#FLNDl;2xw%`g1IXhni;e$5RE{>SxR#|oQ}7rn`K#k^~)c(ZTtG`uiw6X`^*3G
zF%YK1qUM=xs%jyGP8f!UWa>l|1EML!rSLRCGq-52O%++tM|>oLdNkLyS*_cqZELkQ
zT}`W6Gu_;hZ(#XEKwzL076=Hlq?ISKF_~W3&c0T^WO`DU%X(agty=V$%IJM$b+=N4
zklbCPXBlO()grRHrmj7@?%k@D-b!ZP(*n~1x!2)o(vIGy!uSj_(AR0Mq_irJHnRD3
z5_d<&3@Rt}1hagk$h-R-h#>;P+yaOZjQ}wOpuuQ%_-MJLd)9kjtViTA(Uqehdc;nq
z$bzR?>T<WB$RWjk3(mev1U2(ub2n%ju{mHk+TvWM4<A0Lw#;N*rupV{I35pWnV;)c
z4s+CsQ$Zq}y&JnCLsOVN&8&bC=E_Bg7zC13VGtHB#5tp|=weq@t!lN|X1=L4t-4<$
z001BWNkl<Z^J;D$=AoGnA7K#&!H~@QFbhZzUC&*LtI*)fjT*p%<EJr6J)ApR3L`Eh
zGppxm27uNS89**^p4V|Wh_GWT%mTpnHJ58^S0w*L@0HObaV1Oax4At@{r7Z;Hm=Ei
zm<SZefoU#+Ui<){TRQ5SDnQR60K~yuV5D4qg1Cn!LjaU9OuUYkih-OUBJp8{jsW!i
z=+ABijaQzLlIT2;TtI{j)cQee=4j26haeE9UTZy_j_%%t?924kS3m#e`)|Je{+m~~
zH^CH4KrxkR)0S+y2mmJx)aYqn#Ssb_2020jWCj9{Pz>})jY6}wR^4jbT3fAEwdT6H
zHuvhTVHuIB-i<a+AZC`Zo3yVDuZUkpgyTibpvk=hPM7XAm^l&?p=D-@xrYZrDI@j<
zDI!{HGxI!`Yk|#mt_*i_KJKe97ujydy+q`>hdYp5MfKr0^3nx@hL{73tH3bWf5zyX
z#N0x7AXgCsf-;VQ^4oSAZsnx>=NN<%_(?z+!jR`pqW>r}Pp#wd{d$j0%}AoQlKB{E
zvvCHxKozhfxICvZKm-`5t@Ap~Es0`WkXs;V^EYo^uj`s&3FlAeFTZ^I`in1q^_&0t
zN_Z~ws+$okH_Q2{0ZCF$+%XKm!vY9GfRQNzjIa<ROCVVbFb$7glX%|Nb=}U|n%QQ)
znKvC0NP`w((Om#(DH3%nTv(EaVBq24nG_d!naZ%(K`z-dZw#XAF#z11kcl&T)Ox7+
zRYx>eNp01qsg$xOX<k?N0GJJYzS<A|pyOkYV(eK0*sr~WKgmqbPEV)prEDoR+&y)D
z%#AD@_7S9yJ17hfW(E;DI0p4GJsJ>z0U<aA^{!Z|fG*cab4$w1m<8_!sgx}tcM(9C
z56>T9I5CM~?Sje?ze8!_3JmY4UdM0+FE1Y+{_)qp{_)*AGkdsuF)#B!{pO#Zx91lx
zUQ}(!#7pt5DmcunXFuJY3?dEst{Df7>=vqlU>=MSBp?Wmie?U=w#%uvs#R@kY7o`6
znX7w)FtY}(-s9u**<t``>eDR9_`7eu`T19GfB61~c`4cy($L!>NnH=R`EZZ>Wm7SP
z&HY5u%r`Y;TCJU{N|_?jX~MhLD9L?AN^XLPm<Yez=W4AYGPsbPiQ*23nR9?$e?*il
zbEt_O?F!&9U}Pe87__nobpQzI*5FJCb{ur{JUB2suc5n$C7srqy@pKigy9!S6Com!
zL|BU14EDL?_1AGgVCH6)#brd8ww>5*h*h`rXvrjwT$@Hj)8>&BIATV}2uF86F7u|%
z>c-PN%hb%<R)hHckMD(8w>B^HhacYm@coa6c|pOu_Tuf=U#S^|mu3F=`2O|HA<nE5
zs+yw(M?$2+05n)6EW)y-Cyt;1BHU_IQ?0GFrmD@&5m4B+R@F4XiCv?bYcouY=-6Tq
zK$J-VJU{_A^UWR1fjNa$7*|fQunsJao=-lEX36wMjnUg7(hLv0+Jx};O0mzQvLI=R
z*ZxNyt<-(Ya<#D`VpbGAYv|(jj$L~m*PW3F1S9~boR(9bZX5~e$VOXaQ8W_%GTieD
zU)JZR0ZEWd2u(lGDH0X_nH#T%GVdu=aV@63?BxJS^hF2;1QvA*3k%EpG$0D$x@}<!
z#DIa|#5v9Pww<#w#)`>x1%SgeFUxGrOPPR4!|vZaynFh<hhh|70GK%tk=+rRLJ$a`
z1sZ}O1i3@==8o0XRhwyZQ`4r_)YNQiTAQs+EiBo6c_#Sh6|vCaU^#f7=0<ERihL3E
zU%wWag&s~<?FL44ga}r^=Ai&g{r8|gOWznGuE))zN%2$9cK3zb6&*Nj@~V2xC+ZVx
z|E#;#(X)XzoaT-^0<6GNikDr!&P&MqbqpUH5O9VG<)y$eH?TzRA@n&d45jdZtLLS%
zQ=b8MZx>;Ys2Ya6{d~_mO7=i0+~M;!Aps*g5cJ$*Cn81wW@0GBz#{pU1vnCToS&Yj
z`Jh|%rV~p@arb#yZe6E&HiW|D7O!5t{D<HC^7i$EhGv2p4;?{*Rhfh>K!F`YNt=Ti
zY1CF-Rn=P6)^ycYTWzMBT5DFD2Dn;ueo~5FuNT>J`vM|FXsV6p8RwbiVwOm#*tK~X
zOqn9qo;Csq`z4+z05_mOA`%5^ju^o1;$~(c9VoN6ByvE}dkyf}QrqkO{epJwi@e?j
zcBOyTC`f1-w{cy=4IJ*C;W~0FQdD8cOj-1F8&ofOkT5Jc5@Xx;-mPbZKj;s*ss(ZX
zbpSZ9*O7z)80t3e=hvkt2WZ!xgm4nZdxZ+7Lfyn2*^Y5ktJW+6X+GB0-2LX}hMCPw
zh)<`}*I)nqx8MG5zFQawC~#sbL_ivy9haJ2nh2#7AT&pgPzVo=a5Jc?s^QjDtF|^;
zVzs6Ctw*+Hy_=#_9q$*7MRwa-6)DF+naX@)(<BM~@BI1zAH2m{Yv)dnmDk^FA|L{0
zBy{E$(IA94fyDh9Ksd4y^8!h|cXbsp$=Ol?f<U)0a7Bga{q6y4@7YxVfGB;^wOb1N
zsnn70yU#m%Vn?d1p%>){gv629^xO>59KsyO#R7NSL3-Z6Q!E}m;-^RanP%U-AGFB~
z>b6iC-!6cSZOjpDoUNRRyI~`1k6P8hU}hl-VgRV>X02L9CM1Zc0SqM2A!?N3T5U~h
z3->TLvogtF{_8*g$A9|u$zz)2@$uvB-A$kaBL=uSxVodDOvFVv+$qV^>Ih-3;p(a>
zMzU}XQ#UtDubVbkvy4!Us~a@IXEYX>PPh8}EX#CYW~Rw~o{DLUFmQBNFmTUxZ_7M)
z>tlFWfE#!YNQjxpBM2<O;L(GLg=CN)Iv#AN9HtQ?r5t$OlD+Q!XS~Q~0`s3%GnqU)
z4leu*KQ@9r`y$ISEc>?JGvDBnk2E}XJy{t7%=Z-;J;ysnKKt+6&GXVt9gG+K#EhX<
zYP%B)_epPDuHIeMXg%Q}`z1ug9K^Yi=f2JaL|}-_Ql`nNn8)*4Gp{cDWLe0zZ3Ez+
zefjq0aBQtjw}<!Zhr{c;XFKNu08FuW=D83Pw9FuI2zS%8gF|>mimI7=m{~JZv*uB|
zP06}a)x#0GC3Y0_6d?2I)B@(?G9Qjvd@jqpt!rOo*1*8Cw+fETnV8-=;n5eFJCwp6
zXrbrxrhx`XMW%Tw(&5zmx-qk<aDw%_?QR5WTvuaoZ5+)D=T$+Le?`M6CoY)vAzyZm
zo>iOPmM*j1?=a{+hDH+R-KS{%l^U^Rk;PPi?Mngy1TZX<WxdNPvxN?5d8_C<+3;NC
ze&&~NI|v=oy;G8YV$n;paUQ1bp1nH6;B=Oi0zjE`kBEYlZ)!cSIl4HX&xga|Fwalh
zvufNfFTVQuSO4(af4nI#rkFhpiJB`i$W%}mTaZ&?P6ASiZ=s56n0fFJ78a^znE~!*
zVP>i}f=@aY!t>`2{G2K1QVu6kD~A&U2AH8N%RDWo-bKvhpHaP=wVqZ90FK-*X{M@~
z8mZb=4FIM<0iI==nF=E(b|7tL22h+ZLxYLIJ%H10<Q9Z`auWRBo^gFYjn0#a$VeV?
zA6iCtODJ)6Tq!(=qtC@@v}Ls;eQ>u+dPfIhS4tCMzz|S*?5Mrw3Lb#L0Z5GDNJ0Rn
z+b$Q&bz=xTx^ca}yb_lEWHb@OgVM2hZdnz3K0*u(&M4|()mkX218tjzO!Hc|X_^qQ
z*19Z<i1@R$TI+N9>dlvb|EvEzi5$x5eSLx>wX+p2R78M)Fsj8^PMQOLGjvDKSXQcL
zserKY(cH|8s1UJW5OW}aLdriw?V?8vl6OBo9u7w?$8}wQ_Vz1(_l}4RTXqD{gWNGP
z-zLzE#v)54fd@MJ#Qfp${oU;i)p|l+&;MoSX$FFAg~BL66A6*9q%O4-f&k4RB;tt+
zGa+I*6o>Etcf05X9SdcGO8`fgoDE4*jLG59mYM-NIx!$)s5P@N6`2;A0$DB0YI^gF
z6c%td)EXl;Jbl9qoc1UH%yb_x2M<k40d+5ld6+r&)FL$ZjGbp<!Z0xPy45;QB@>Es
zWJClY+`{))(mh=TnJ5qLpdQUY!(cGI5y;FojX;>nG)n<w1!VGON^a|?Ct_aa*;Jp-
z=lk2cr|0+e!^f{)zrI=KaA;<y`}-f)$8x#_h8oeDG2l`p)aqL0D!$Jx(A>8Mo1-}f
zO=ZSFt)FVG9<VIOr}H_-UfwJX6PZUdadEd?A;cuh%`JG)G%v`j0rAXJAvS|R4})Oy
z{Cz}Bc{&8<?x8tyLEyrbX}LMZdPa?Dnx)z#0-=OZGS(p=z$k<W)SM|8C*sZ)c8$m*
zonr8VX{Rgp`s4~Lj6IvxGn(^iYZ!(Wa6}0vGV>9@m>ws`alnPS6OhWVe~+Fqd3cuk
z`$5*F>Agh}ISGMG#O{9-h@|tmuWB{w4#tu4nFdyJW;WMd?386(I5-562nBN9Fwh{(
zLe08y3>Z8OSm~y53@D6gUL+3`RMn3kR|+L^t!*w--8NZDH2@MFkqn5zj=^0|FT`OG
zWI=S9iG{bVdd=-i*KKRsG$I^@#o*Fc>Sc+0Kscp16ERTkUq1Zs{W~r)O;a<aBJ*Lf
zrh+-ra>xuQ@2v!iUizlo&{GakcsU*CdA6{pi0oOnMpGHE<X(RHI175?o|!4Av$(^Y
zkO@eT2xZ&>03bYAs1Wac4Q58+43UUz#_kEPoubl}LMRdDeJQ(NoGE=wo4L;Mdr-4%
z+j`z19R{Ec;kuukL(3Qww!ByQpjrYzK^hT_AbnUBK7!lb10gZC!_7W$xyf>3#2|`v
zv4_QIzT~CH0Sr*x)SQJm@Vu>NHc^<vdVacD3eB{x>*09(;p5Zk_T_4gi6|V0HJgYC
znTe2Hw@RvJ1{#o>iU5c>91k085ekGyLKbOmgz|Jg2Sp!+cLPuaIx?Z-K$V2Nc=_<n
zH{YoH;dI!Zo@6S>oXCfC^CUtf<pE&;0ejd&`o#&rAfyx|0;Y9a)lFMFC>JT&xu8*u
z_bK?O;zzf0G~PV&HNReA2%u(#2nADS9ub_-4eY8~NMqmL=pXwZ0|twMQO*E|j`w=d
z4geC@go{6bk)k0w-+3?axgDVkDmim7;U|+>ziRq;So0B!^OFxx;YFxc3j}iH?2~~Y
z1@~*___odSU=7>Wdbm9aQrl{?bqPn3)|yTvz*X&dy!of!zPqO{Lu*0yd|bSjgcKCv
z=x9y7DpU{i-rplaLaVyfx}CTDF%81QEh;dg<?Yxp-GGk3X*6`|ajhuxVQFqvn*(r>
zl<oN*%taWU{Qdxd6dTf&ddm<3!L?2@6CrzPZpe&8rIgD;xq_eoK##OYE$vnRqIb86
z_Stn_u{eWyAO)7_ozsLw44vB(!&;s<HbG?cY&@llq2C!fz*5hX(e9!9ui%7;j(fK{
z;UM1cIwLO;MmAL+hwQwGy`}8bHKdSvC1GYc%JcAW1Pe5vj<Fd|K2J3*1jIbg%}uSF
zuCsqDL~VH1128-c(gqH-)&rdKh*;N^h~~p#p66!S>BPA#+giz>fIzq*<s>fU*NzTq
z-mHN1RKL7s=Hx6vEDp_643_&cSOjybO@^KoJ%-#X<-bS(fl{?eDS=S6m1SycRkzf{
z=k9m;wR0iI*`H?;^&aCql`uu5b=$I!z*9l6F)Gf2w-3mn$VEg1d6~?rfc8OkH>5-W
zz$7ALPC$S=x#OY^@A~S#Sa*<nW^Z5VJTB!@r`F{rpIIO~2e9v~J>RZ(z9O!{Reu=p
z`I&0`lGDTeKx8v@cLq#twe?v=rf*}9rbN6u-E7*<TWh8kkYR=nT@g7ZG1)fta03i$
zO56vR{lpNd+oo%!gAgVG4sPe;85)BJLAYB0LI|)$VBkar5H>J(a0}bCZVgtOsN_DK
zmo0;|6z$};EKn37OMoCkPa8-gg@63`@#gMU=6P%N=D4Vz0huB!`sJ$sieQ-~1i+E`
zHvov?U>#DA$#Q&J&zgbSx#}a#%suH6m@cE*7!f70vdBbTYbZ$ler2A6fE*kZVhjj#
zB$9CyX10%AWYvsBX;Mx{d+smkAVr`+2LvQ14a;*HkvUo2Elr#NfYx=Yf#I&y8#Y69
z9#?at-XZB2w~p4r?pcM%x5U$TK7uB@2OmAs>SEzxkO8dFpKVa9?uHZufS!4P?hYtr
zUuQ7<n)z`)Ka&VE9uBj+w{>fr6UVqa-G};w6C2(gZ+Uxm3ShEuL!|&lb~eXpQU`3s
zi^is2TS&p?#kR+@0Y;j{OslrmT13oq3B(vdCh2*g03r;_MdAP;pB_Ig$Ky0lA3uD&
zBdTT-b2aPR{nf8KwA=$bV+qj-0D+5?sccPC!hdmdV2nkEIMg;N{}&NtWM=6Jb6{rq
zmX9`A@+Ik7Il~FO$XF(KEZpU=W8aWIcfZI@9aA}k6p)1K-N2m)Jib;$5{>|`PWOvT
z$kg>B`vZKkz_cjFHDok3dFJUC4KoY%Q1b`~Mkd_r{Y=q85WtU*k16p-CQeI!KxAVN
zkrN@GLdi%kzMtDOvCM}hnP=;|HaC)KbA3Q@wV4YW+?4|~gF?XI5Ke~3h1krEtEi!<
za<kdu=(aW6+?$^tpX+&R+T6X?dfuK}Z9ur5pKWX?*XNIF>!Jh)4;K<vxApOHTILU*
z9+3$ch0DeG?*Z3BMaUs82o5k9V?;bYJ-xiW`}qBHYEJI%?w&q9Ew@Kz&f?6>T5~}v
zWkSR}{%WlTUWzbEo`y|pYmJ!?heIhvaxZK>yFO3b9t2*BrTwMrIXD1S)m0C43WNT`
zv-FJ#hO!xLv#P3j?G>h`mO;fhbUqdyYKu&85m;WbgYwAsTynO{Umbv2xVv+vnNVlb
z6Ni~$Mt1>Z#-O=Y)oD4D8GYNrLqq_vsR9HGGjUSM!JQC_P!M0s(I5iV%$u2d1Pj($
z*Y;eb%yT(EZimD1)4TV-{oQY0-aXV$|KA_I`Z8L4adYPoGL`fB3<VC$;qmcPt@`%M
zpMCiLhrrgL00m6oi?_|KYT+qvylJa-YptE^4qPn)(6?H*bv1J$jDXf!u0=O*+RWU|
zgovbw6j_$V-JkWj)s~Qj-~SllZ0XoRLrDJ^O#-Hu);wgR0h+d=psLJ_2=16;B^iSw
z9JaQeghG^&cRA>E_v+^E6U*)cpm9+EB4&|@>={`=m^*^?yd1b58$?$xX-{9bOx`i8
zt@c>oOJkz{-2e^e6q!)&Aej=C$z%qO5$4DcCN2h1Tg$e%ri3*;(jLH^J~<+C)jmWa
z?pn*w;b%-Fh>n=@*<9KTz$^wC9VgkisoF5W-H-EpHbn?ix7u>b4&Z9_bUGcT`Sy6a
zofqEp_IOK-j)8#(o{6a7G|$Hxj8EJBbTU$94-If|51m6*U)<fNfuy$P+M1bbbBJ(V
z)75L8OJuDz)o@pHGtJ*iT{l-Fq9_w1X4G=hW-gJCW8ymyBZD2#k13y6R23}1BLl{|
z3wZP_L_~;L{(r{a>_@UCIrFo{m$O7fF16mR??Ol<L^L@ZQ4lZ!A?QIABnbL5Mt`OR
zLXVst%}A8Gd&q9~a&OnIs@!5Z=lEh~dhiojd6%A1J|qfNm04L4e%#H?zVG+7y!3Nd
z6&_c>dW5A~oM-2JJ7}wEBgB*A5BXbdQ8qE-<APu7^@d>t5p7`lhM`<<libewY9@%*
z@KI_Nm7wk1tyS9YAIL;(Ch+J41ZsR11Cy3j2h9fnkL?O;6+S+VG-Sc*8bupxqcJG5
zkvivcE>&Sg$is(uIWreqapmpVW?~}{T`%~+q<~eWUA&kXq^fF_TBVSZ^C37lP1Cr$
zB)~C-t6{VyKXbik;owRs<ofnrxQns&_2&M;_k)T_5LH7XRgh{TjYVisYu2i@<XTNi
zHAS^ltK?Em8BoBWN|p+uMMX=kEjzUdZ%QfCX=?g~*u|XkkM3lT&YUL6Y8HSN&Z}qa
zB_WWlX@QU8i1xxcw~Af8bIv)k4_&49aMvn^ElZKs&aHQy^N7eukJ^6#U}9uSsQ@A&
z10gqk0x=-wTwq<wv{J`fD;!rXL(4sAO<iUNgZhC~VT5ZgS~WsYH59ETsvsthe)V?m
zR8w5tgP@J=+<b0A=irEyZqWAGRVlR!MjSsbthT?drY|#6J40U1C1z~{SvdP)t%ZMe
z-nI92wFop?8xaxJT%+SsQUH2!akWK$*7c`jrEI4ucQMAu1a!T*B4SD^Oog#sb*q6X
zsy9__Y3mr(n`*7G)+)J`$hB4xGZ1LXU;)u$ilRlTwRXN6Vr;9b)#Iva%w+b%@>T$9
zyUgnfumb=gfEJNis<=u9ft@2}Ku=U_sg<P7QUQ@rSw*Dj%1|5MebwEI2z#f^!z$7^
zqtv`yE6fNVLD%reD}XgP0?8TEIe(<mD(qk+dn~I&MRHLQ=NvI=^TD@^DuAG!p$3o4
zDioszx_R`Q*m<yxYc~hige(Ms)|giVqqYfxTEmY^ZU0=ekTm0zb57v{Z%{;9Iyf0A
z7!mM!uvTkbMA4&3i>ft4YHxGbb#-2d0g)6GE2ycIl2UHpQ*)7&UhOWP4dV!0vzC(l
zvUq{0=)J!{?&FxZyZ1|R2(=k+#VWQ9mYlcM?}6=&5|PqOvg;TL&auyGssex_b)_8v
zy8V8CNtev*g9m_=QfsOIu>JGho$S0l2uOR(YE{)HfPKX4J9^@Ady-i5Bh?-vGWjkL
zp&_=+6jd#yCeB@qf<Qm8AqC%^wfL}h3)CLPLLx$do){RK5~`MxQj+#YvRkcnveGfu
zxRVcw=9a4(p1~{(Y#tZ@e9oDg8vq;rh#RhgnE{KPTXeXp*br9OGcl5r)fGp~0NnZz
zZ6|AJidAx_W@kt0IaEN6wN2A?<-GtSl6SoXMNlyjG0_60R#~Q#5S<QtQrX|$1;CCd
z?+^8GWWcUMNQDhqpx!*>q4q`|379-kK|?S?(-ukp*tt<La}E^Ln_(&S=^}X=bNP6(
z0f1Yk`N6<@KMaE-me!Hd4<nYx%8L<X1yaCMR|p%h0yZl>vm<tZpsE!@AKIq%C`fFJ
ztk%ZvqH_sCj1KLCdlH#A_%_VWB3=~`<$Ob2r^#o}rmaTn6=8vh#87M1DgqdtCnC%>
zt0FdW*ash8lQFgFA)jXrZ9cK8n}FzvOmZ~|tLcv<n3$MVgKCPaAlYEuoPstyEfXL^
zW91^)nr`#d7r54BW~Nfqv<(Ibj0mbKAUoIG<ZDw_6_^>ys`0F~di3PUIcElGUUox2
z9S<RP-tcg9r#bf_c3nqiC<eK_`}!L-@D~@>b!$d4Dk2aeG81!__EHEivLdvs24oQ>
zbdN&Rrz&|>HMgp>+{MMkJkKemMtV9&nSOr{I}3$TTd<6xqOpM@nzg6Dne<(I@`^Sr
zgsFmv)Iz|9=){R?8?UnC+D0bK<cJ8|k`ps|?>#d*_qhED7@5f`9Q$BcDpm<r*aR{;
zB47f-Dk24{l=VVNR0!2DvMa;{;GJW3R&CWTH)!#iQNgXwtpG?K(3%`n&eFQa<fR|J
zK1(hlMM@QsRli=vw2q=8)gd_%G|M?@6-0KyuLdVtnefz#d>5)%wF06*<{HwKsH(9e
zVpbr-s#UA1h*pJKWGN+;Dk7naF$4w3wMZ>j<Cu>7h}b)xa~cUp!flKyT5Hu(-+%k|
zG%c4Oe@ri)V_Xxx8&e9&)DfbAwss;SYAa3{NxTpdvp<g^WX*R#Zc`}$C35_~{LlZ>
zcC&qUeSLF#+gKH6l>~fGA-Ga)1f;3}8ltq0ze=e>W^5=a?{9C9`$I0-I~rmfLI^%M
z=YtD<-#g+e(s#XErP!uY)r1_z=otW1%+xz}p}n@~yeDQPBqqeQN5z0(DD7ovas~$H
zS*1?%)anL8^xioi0I^h&l4Y5-3IZVzD702G0eKfi&4r$vpHopHj=dnwMXF%QnrbsG
zTdrkE3BAiw=bWdMvearS076*B<|<XJ8cZplrdbt2?2gmCl%kE!XI4ZER;-yyHPbdH
zMFMugg}6VR*n0p!&$$YW!-mLD(_*5I9j!0}BIkg7Qq9c*?j5!e(%{*#lrqMk^NDJO
zyj+c=lQQ4m{pshQLoM6r-~Zv8fw`Qf|MwsM!Kq$dUS-o^yB&uiYnilY$JNo47o}!x
zKBv_-Mvo{p<XWTktS<VN|DXs)XJnT{#AR7R2y~7dYrW7Py<M`k0RTO+bnGmBVZgv{
z&c_(zlok|;+wl<&wbHNzkeSwOE&?M&Q^J-t)I6@ObEc{w0*K6>98c52%-*phW@ya|
zCicuoEnd^)LlC%DrXcIH)pX<fh(zE<8rOz=(ndv0DHl}?8bZe&l(860xz-9TEH+E4
z5=$wiltfFCc8ABc>DshPNWK&?Q3H{jaxM#1S&cqvLhHK_V?;GoEm9qzR$=Dg0(vU7
zCaGywA3Am(2|5D;tcF??j64G)prHZ~F%X+p0W`o=N~&v<$|I^;O0zC%Ip5sxUtH}x
znCA5H>sO}LSxxgqQuntv^OC)prL4;$Ol3L&VKp%mMFn)|NL!XH06$9D*Fmm68H4=M
z&yI)=hl6uYL~_m{gp|@S41cVJu_6oB`7*9R-o{e&d?@L1yGzsT)cP2qrY8SxUb7~$
zaE_WNh=|Pykj+Gassb}Bt=w`_6R<!{%h>LF?Z$=<NRbdoREhL4SH^?@!I(biD8NKS
z5k;h`GNBQ!hVS+GGgM1;setCAIbYX&jq-5VSL0Hpq+FzwQc|8%N+N}sRYeiJ_aOu`
zO(~_6yzkEFUO+Vw0n;=iBc<siT89|Bt^<=&3Wx?~0O-1I33Dx=001BWNkl<ZM=rWf
zTdP*ZxsaujQ3#>&i&ZK!lmEbGbIi&PtE}=Hky2{AZ#s6UQcKZNNcC_$eERBz_nu5%
zzI=JSyJLiDnh^2*{e7Bq-*;NHq=ZA??)EL@1{CU}{kFj!3|8v<k3qZO$MC-Z;Jo+q
zGW(-XC7D@_u{mjf^h27w6$F8wd@n@=G-U)ddGYMpBY+97{4P5)c;IZ-4UG%`I5041
za1=8!HB@pyu84_9k{lG6y&;(*sDV}o!br?j+n}bU(GW*4LI58@;JzkSIk#9)wf%S2
za>}h*5>XYXrHWKTwmFp|Do9y170GI;<lFs26`N8jOUhD9TBd1EDT$VG97T#Egy6c^
z5m7EVrPQq3%<P@_#Et7;ia4TNil|i6<D6>Er504{*n?Tu_tkI<t<DL=nu^p~5ixqt
zNVQfn2q74mA&9O%0CJAGu3}Q6J_N-E|7OV|B8-?)+KuC87@TvPegJ@JnmWSM=@gxB
zQ=si;dpev-DSe2|cgASkifUA=(!%HI{AQk!T3|mM<^I@*3n4U%wyKs|j>n_-{*V3b
zvn;b^1~k-?nwn#lETGCryT02D{d_n{EujSrt5E9?G5`}W>6sb_P0j<h24-k$a1#m^
zk!49$%(>)TXd<6xWOqo8iJ3wd10y#%hzcrs1Zmz6ZQ(e8S`ksJzz45LTZ5W&sZ|@H
zekoPv<y7P_&8bMP<^HhW&(rZVE%Tgf$tj;s$5INS^?fg*X66HrUFV%QGtt7tKDZd8
z_uhNQjqhVtiHRt9PXu`>b1teHoG*q_HBXDtDH+8+gwTcHthw?;3xEKsswZwF1O+1^
zV<Kj7>&KGvqiZ^)1zO^B6%jp6r~mBpFPtMpySlu*zrRl@<y!K*#I5(<*DQTEXttUQ
zs6nYxDmrq6Rc(!$QNuH`1|MM&e|(XBe<wr4?PlA&b_RBHd-KKTU;ME}hN#dq?JL-S
zEy<WbO-f0QX_}@!23?ktQtU{ziWVf-bl5~Bs$JJfOY2yXlI_Q`WlDxCmF~36$J41)
zWo7{6R-G|N7us79f*%~Kqd*L}&K!zpOLaiA##In32>i$=D`*uI45Zppk`z^7AXinT
z)Vh@SxA&(!r&5p8bi2R5f7nmcRBO#8Pt&wEa%mN1FjE&o@Xk3;1fpdex_;QSYmN8L
zvuoG(5JJyP<cvj$iI`&`<7%av9dcUk)t&q>48z!UF(Nx8t)lJGZJkJTt<l294d0H=
zxftU-EiJ}not>DaoJv}jB@@8Kc1Noi&hGB-q1HUjAfl?<&CV(Uz%cZOTFR89f#UiI
z!65?~IAX19f0Xn)U^>DdyJP=wCp(=^!!V?j#I)4%=FPWXefgD{{qdbl)=fy;R9nfU
zg_yLb{LMGtAV6?U_ypAiYhgxq?7Ro$qDrErN-4FRy~wJds;4E@s#P_m^l&_!jwdnm
zA(Sl6xfp!#VTk=O3}ZjU;K$UDW4{?XX7r3=;+RPdP3h68yUs7kXl4HuS)0d8Ej3pK
zCz{m2Bb{=&KRi6_kEzNr&HLm2_Wtg8IGSlGbzT-i=wcKRX7<EJbjmU_1|OXRFzEt=
z)GDB=#kmjzGm~Se#YrHC<UIQ-rRIhxQEh4zT^0c7=4rExG5XzR(+4ji1mL`5f>IKr
zCr9j@5-MRs289r|+wJ~%NF|q2YFT&goHL4i@#!bgd5=nf?{98W&QOXW#4ZZp<;6wK
zl5@V=Ud#^<Xa-fF3L8`aR;ajUKk~T_dz98G!hht%`_3Xe91pKvzAB|Ok=E_)ZM)_D
z*w=ml96Ui&w6!fpYhUs0ySG&eGqc0iEN<Imvwj$%6nNMlmr|BF&+WQaRjY}qDJ&(=
zOFB)*hlk^FIuViY`sFmSb1`&X2z}oVT|bUv4DM>#?zY?IVl%|hb-tlBnlOt@`OzqM
zZt}I}m99-tZDwdSIL!;P8`zan=6N|B4@)W2G8ZX1r<9VKNL8r?&aaGfE;zq(M$c^U
zaU8bW&1N%-Xik-xx~}uycU{+d(d~2-ky#{{y1zd%JMWnsmr_e9DHk!Z2Q@R?j-VEZ
zz4wf^<P7cMVW0-J1tlWy$nSP@T2AxSa2RXQv0C)*i_bo{oPrO`{QmvB&bgG*cIbQW
z*=X2q!r?T}^DqoyPDAXn_sUL*1u2_B6=}GmRlfdV3EBVeqRj2KyHd*UzyAGS{ENT*
z`uAUd^Yz!q<MG9d7b&HtxOxoWAf_ty%wt_s-HC`iP1EW5ZWjf9@#}vQ({3Ez{O0$&
z-79GdQX~Z`YPpJN&9xkkrzz#rX`bd>s#H}n5WtjjE#)*X56AuKH0N5GnTu$ZIxpU(
z?J%C^1?_G(?yjF*h{-SxqHtQ0s!FNi-EO;4sikU_N{Ec?kObIJDH1t`D!Ehy?7Ge%
zpN@%$aw&IrcS+4Ta*id<L`cQZw4HtADKjHt7h(vZJ&NA@HX`U^?4kpd-EP-9@4MZ$
z9bTJ@p_LU)@prDHT*=Gj<;AjO)#}J^He)qat*KNKNh!^q88G$(duLK}&fbyLB7hWP
zjFDqZ#TF^2(?mqIlr%3f_+_3?5Bp6&Y=YNZx)|$nN=jyMcX#(}yCugjUcAUt$~ngn
zV(fCR&N=V>cyalDI-%NhJh{u={xEgBjaJ1c=c3{h6rp{eXZXW5zT53~Ip?d(tKa_S
zx4-?}@BZx1{tOY@0HEEK+5o`JYSwkC_8pcX0qFJB^M||JjdOiJ9Ox#*?&8_iobot0
z;^6w|eW)rA`~95q;WRHx&P8%AIoI3*SVTqia5y!!!cy{5axK-6C}*iAD$!Q}U|^{=
zFS*oozxPG*)#b%z7+yZRcH2=Daw_!X0c$ihCI+IVrdAJ&2q?Bf&OlVfL~^OsL~2Hm
z=-4@Oq*BMhd+$9WmLf#h_q}sLnyZ4E(@q?_5Xh{C5D1-jWgN#w_H*o3egc4r=9&PY
z^Rd6|%&6}xBC;bhOHvS{cdq0)_FWgFR+&?R`+IJNopoaQm~OTzTtf77`hYt~Ddk)|
z!Z=)X-UY|H?i4nT<MwigqAU4^z=b%BLyVy_lTw+;J6E5u(^Q&>e@&eEpg?cb^zWXG
zKcp}LfcyC`evXKr|K#&j@@6xB^wH~|{p@Fd{nvlJ*=#}xIp?<hw%5x?hsd~MqE|qx
zDf%u<Y1wuc7tfx3^Uc@AblC0cGSw!kH$0UhOD?6Hj?-~Eou;LTse%fqS`{rts#KNQ
zCNWt`Emc*4&<uTaEXeE{4qR1pE~jZaEefE={o(rRa_nN?1vX_c&(s*o3Ju5thD69x
zTa3`ky>4+?h(;)8MYO0Ip!h(Do`_~L7A-Nh11RTe2qA=&imDJ%^Es>30!qb+=F|Q}
z*wl4RJV&75!>Vy==;#(Q9DFAtL<2J`TF%*3=9Q^C4#O~X(L|@?X@5LM?_=MKH8p}&
zFbBqFxFWflwnH5g16rvj8v8iLjsZ=iq%0+=lrBVO4nD{lE(qRx=zHf}@G#}vw&xb^
z9a<!hhybuQ06ox?v2F9%;CCZtzXx6g0Qc(Ut6%@~uYdlFpD#I^*~=F%o%g5dGz`O|
z9-$2YN-5Nc53BL)aj$^8hhsl%`t2?_KkT;mw>NCij~mfxD)p30N@*$C3~H5<<>5G)
z;rXY<Ht0oAW)e}bie|w(c0R_yK9rQ(dqW0htK+P70i<Y}mLnhU?;adjAH59y5CX6C
zvlVDfKtSj?5bBy%i6$%c7+Q98>vZ;kO}R81OJ&!GS_zPAtyOClN!o6&O{2@J;!?G$
z5Yjv)vs6lMh0bQPDLL1YIv-u%4?cpAjgo{?0}(I~86lu&c1GxkvFnDWZ}MGSwc3xl
zbZ0+~h_sB+$HXy0^xiu_b}q)S-E4-wS1D4Z)Fh=iM(3$W9b(s-R!xDz%pzyS+Y=qi
znO7jHr~pn|kAJ0Yo`ah4y8?fETrf{}vR_<YUZj-9ad6HZj)$+l`tp&m^2j=DE4pP}
zwK5AoG<<bGPp_XpFD8Qa(Wjs7_xszoZ$oq{TykEP`EWdzQl0Zn(?ZOxAYZW&M2HLk
z$A>)=#I6HI_R$CLy$52gQfjHSf?^ZjdLLr&sv4XF)qI+6-oDS%akm-p`ieHAC-%-c
zW;@?J0M>{?#i{~DGw2Gf#+LSl>aa2Hq-q8QkA}<@Osc60nUWe*A*L3*=^Oz7IYgom
zydy@k=2kB$FR-Y}{_d{tVst)@-FCAX`yn_6fh^gxH&d&IOg=bvgBfNmjxpz)3_=K-
z&8B@fRSnU%G^~2o(zG#;_rCA@aU5IQw(|i)2_ZzsWl4bQkl6ci>~@=h4465k#Letz
zMnokQJU2laNqJq$rj0R=XFBycjo?Q-HIJ8r?=>gfcDw1i?*03l&;>;N_S<j2_~MIK
zFJC=cZC8~JllQ(^j;&=RpWhz<iv7?H!|j_tFxW?*e!476O8IcOcc`V7X<ANmYR*A4
zs8zezH#Ae*y1n;E&Vh|FP{U|58)1=}a!xsqeP0S!7Og@6jNEExEj5xiQ!`oS*=oTm
z+pc4S5Ipw1!<K@2_768lzJX&_BnA1v+}EO#8_!Oq)UsGLs*M#cnx*CH1;;=r21FD>
zjGG~bo;}AH`@U~m$`CsddAPq9sitzcf2cXvl$Uub^Q7C0&1MYF2SV4N!v;tgf{%S?
zW+`(F-b@I|IoHQ7gs@C=k=nv{kqFO$vMuJg_rCc`_WQl2;=He!wbVQ>b6T8Vg$SEX
zA40Gy0#<7ct}{U-V4z~fdl!jHtxHPg`W2%r;(~7zq~?#rCz)Gl@I##MV;%owC;Ry?
zzWVCR&p!L~^6F}uCJ}YcU0q$Zh1{CRW~QRd45HQ;zD=XL4oh_yhN4mwVvOMU`O6n6
zE&uR;{aeW;&1rv{Q_9Z!z>Wc{B<Glj0*BajeTa@-`&X`aJJFh|R28XJ1kemjj)#3S
zr=T`WGv&opVbc#<6+n?ui%w+%tuavQhGFQz40|9Sn7IuqT8b2Sl3KNjnRT8)SSu~4
zRZ0~pT1Cs6q}v?lRjd@NnGwi&cFeI;1Q%lHyBGsI7y54OMgl6O>^56s@a&k;JHFrC
zq-EAprRI{#ULR^rn{EifGl35t9V;N3A{a6Gz~1|zMQ*ABK#UOpVVMo}X;jo2qroH!
z<1mz*r)jD=cfo53?J_GV8MspNe*aKwj^4G9<YigLZI48t));9qMq{qEPV?N2y>m`f
zvj`KauE1tNc!~{aXo2r#fSluFo-DF=Z{Lc@)%Df!bOOS^_=}(Z<zN0~tu-yF1z)!N
zMH|Uk8#>ZcAn2Opn{yt<aX0pd{hru;`sruC`sFXCX-P|&rn#iN87Z)f&5eZUeHglK
z=*PbAnc2idD%4VPosY*UEoR8x#SpvLP4i5|4%g5fRjs+?T$i#aD4+(%h+1-*r-Mqq
zzPc2x-npirBnGF1f{{Dt9GH3U8#=$yib}05E2CjwSiuu>AjWktTWcjDKxW6zM+K-=
z=X|QCxv11yfnAJY+i$07-VQ_Xep!|mSC`MPuZZ2VtLLCK=Vd+}OIl9*syTPD8*m&P
z2gfQ>k|3Ik0fAHspi0%#scMxFf`}EV*t9&T=NmH-8zL>oDF){qF_<8B!Ap&n5_-qN
z&hb2#ySqD)vfT_ldk>VCY{S`}fQ>o8K89?XYY7OzzD=}<8AaNb!q&vV`c$F}x@H_0
z8UY&`kuz++qiEz}7eD{}CvV@s`&a+Xzj85(hyo-PbwuR#tX#EbV&)akOlOBbwDe&W
z0vN{4blmqbS^^hBANvA+x}PoS)wt_o2*87n6gy@vrH*}fb+s*7N=}{c`q;hu!^8c<
zo%5lj9J>C+vlshmW~S}#BB$EsGxPDV%(Ee0UT@X({msqL_s3;g3T?)IKBcjAIp@=9
z3XY?9eQ-oR1lNsS2tmaFFow<)QZ7c+4V$8Xrv(Hxn<z*D6(q!dGv3_XiYW$XrSxMz
zj@yT6UQ)e3oswu6hPQWjxA*tki%TE<-P?Z}$I&78F$`U}eK@{(fAjkKdYSXbuU>j~
zc}c@X#{epYh~_!5ciuZ@LKUe6OaYN_4SQLQ?_^SIswuMXy3xgWnx;}0D5xN{s3VlJ
zXw7|y0cn5#P_vNP;dI<YceB4g?DsETzPQ|MYRZLcCfan}{oUQms~5GFlorv-o;H^k
z?{D74%}~(9Y)NT%dC@{c(8xW)lFlYJRYh!UaK@&a0WxURBA}II5AJur`~7F1e)ix0
z?cc^26>(0>yPKOZbnR>+B2X~ImJWfScJ^4G|G5>WLg%DQhfb&j_TEPV>bz$i$FBF@
z1@^%^MB8q+%d+&rGnjyCt?&15_xJnlICin$?zUY&Qt;dDu4OjObNcv`kH>y2CEwje
zlUk*I`|TS*V^1-9c7STN)|~V4bjm4T?Y4av<xD9@#Ljszz;mh5EEt8Tb@@e<ke%}=
zVpZES^zQxpQfliG#J)3xX`XY=p^INW|MItgc=Lb%hyS3&RqY@D`8V6m_Sxl&Z*Sf&
z)4a^nw(tAsfAY~s_cyl};~*tnUF^1-P4tYWpvu9Y(o(C=^TN!|k!NRQB2{u0Fp)+f
zYMOP|_q}MYk~Kq-Vg^V;U`SH3ty(As&CvSNYE|2)7T{vHd-d%3cGGo+!8=L0bDXo0
zDI)>1nN7<)m?{F01Edu{j|5-@OfA8sg?}PZTW2k6832IQ46vQ0+~7V2&_28W^<V#M
zX1;!Q{p(--`qR&UvboqkJUq0k<#%#S&#-lZwJtcb+s-2Zm34B$Y(#CA0svj?hS+a5
zJt8<qy^jq+-3R9#=ai=7(u}WFYCrU9*!4rz>6G&H?&jg)pkTlK?eFgo`!00jW^jZd
zxYw^f$~lP?N9fpzR*`DDLZcq`4-9a1aq-9^MFS#NRD*X_q?Q6^U5utWO;eg?E%m7b
zq5+YYC4~?SK-FT5xk}Et>ta>=$!DMS+ubjJ{p)PT4u`J$AOH4$C`EquZ~krR)BD?Z
zV?We1_gyF@{qF0Vhue2we)93BAHOyu@7!)2LI{_p=p7S~;}BfzyK0hi24Y3XS?6VG
zPfiHL%xYL`HL+UjN(x7Ov;}zYV~nh4j=iaCE)}H9&F1>@(v!-Zw8~m4AU0i4jA5FV
zTuS%Y!XQFelj+rT)z_~;aXTloz?!J{gMRGyn*Q#u{^ehN^Yu5!!}0R+GMAF2#u!`N
zOWVns-4~zmq#3Azg6xd-VdiGZ`M@A%iqR`*jINK}xEWN18Dk6$WZ~HXz+r#5y?yBW
zZnwLPAvhm%sdo<#xA*&-{b5?t=`@SMI1F#z-JFi6-DVia;dDIw>7V}RDVI$bpdZc5
z5n%@=wYX#=o$pL7%_*f~iY<;;tDqrxAhl8os<{}f%5s{T7f?-Gc2KRgZGjiNU5xQ?
zJk86}yWj|2*FAsr>gxL0<@4*!#qN`jUjOR1zrB6fXQ`JLTdCj)<7POW;@Ed5$<Lo%
zLoFob{^8*dj>pbL?>2ouhERzvuCG=dB1jV(HjAE!A`yA5)z#8Sz{(Dh9U7<zs3ET=
z%r=`jJ6oM`BMp-0IJgd454MZF54FsB$><r1s0fH6V(_8wy5n(L0E!AAlVc!SeLBom
ztwkNMw)654yZoVv^&JHG4-5bM`}=8{cF!(9{p{2K=jXo&UEE#l%swO(!#OKXRT*1S
zHyW+o*tV*J4^}cWE3?w-pLXop9}VL$4x>q7#u%K`;-af1FQ?OVI@X%Of|jzRbiY4|
z;c1zsr7WpD9FD2fQdA6HynI3AZ|`q!_s6$y{($UXUSB!|MniyMyXj*GBJ*_GKiv1@
zSaLcXkMrrI*Vl|h1|s5I;PwzU$VaWU<dTzVvlCWTCBk9o+hY~HBcgep+gy*q$8LP}
z{KXevef8%3O?3X%^A}&gd9&@i_Ye2~$KU<k$FDzq_wMa(81r<>jvc|(b`yhpvEBUc
zcmGUiITuhx)Au(7WJOCi^dW?zMMTMA!(kleDa4+LSGFD?0TLoRuc&4gh~b=(-Qrgt
ztxD|)LBtrs&^b+@8Dj`tjNq^{>Z3p2?;Wv{dFO)nEz`XPkQpI6r%Vkx3e0Od8vtWF
z$C}Mjg;tOE2XWa`NceXWNxH7<y0oM>e|XdP{l}kv{Pox0#IbJy5p9BjO%Jci!8yd1
zpwRm1diE=?XQ-n!K?sq955cpezU%rvnh+B>#w3La_lMIo%>;0{+4?RVj)!mFzN<jn
z?Irtoy}2O2zdub@HI?Pz+rwY~m;cq5Uw-+&|K0zV=H+laq*S_LeDUmBN_zM1t<-9R
zjWN7_@%n1q9*_HnC8c>;mQ+O$nTZ^dLuyeE-nka5*9535)|DAzh#`*S*hWBicel0H
zb_|6W&Cth=z}~-qM*y#0z4+pjkAL}(zX;(fc>k+k{p0@jK}+6kUyl8!&n|YRvKf0u
zaNbFN?NF{Rwwu03GzJva>2PXxH*0wl=#YV!Jh5XWWF-|vGm(-?g>DFl=8%K{5VZ<&
z6Q{XHI~@=bQ4Ddj88*>T^l3gZ5&(1|0MHNvi#Z_h*moTv=alAosWGCM5u<a+3<At#
zjrYdrln?<;0Lhvw6jywy{ov#K1M+X*e7h`5za3Af(@(zqVktSL6ozi4Uq8Cim{#H@
zt^}zyC-Tf`T0_y!%@QICA#BD0MEY@vF@Q3Gfwl>?mAp8nE=E;bmgRIjF7x7t@#5-g
zx4js~&2N7H^>4m@V`gIT{Kd=9zWDslfBMt^^B?|Q=Yp6V_J=O^fAZCrl2Xn2;r{;a
z{=Rha>hf~C-PV$4KRbfpyhlPcP-Ju_Dps0)#;nfsQd17>h7cZmJiFcYVz+BD<$0PO
z(!T5BIE<!H%{;r)@n~kxU%&QDR~Ng>?RI}W#p^46prLc0y!w+*Km8;Sk3)wh(L1YU
zJM`P1e8Og%p?h|D0V+~!=)5Ql!w{oa1VClykg$mO-Hw<<u-4l6LdC2|CLYNlyTC+d
zAR<gnzetbF5plxad4*vZ`oJCai)SrGOKtjYQ{BYA<U&LoBPdMA<D60)hHRolj#&v&
z5!~8}XJ%?nByG@DA)-~IYyWAnj~j;J{{H^6uRc#HEz9!vKl?X-^EZF<=KVW7Gw~g*
z<~3z);EPuE%M**asut65#&ih+d1mjrae$ISaNaws=33BPEiuO3ICdc-xo_XTef#cx
zttB`f$MNNh7gtx;T{pbHyCb3)Bapkfz5V;Y|ND8K|LLE8^;bXrY2WuZ?{8kcda)hH
z{_1j>=iANZ?)}X)9UpG*N=X-+v5tcy+;jsow?K_`I0ME=NNA!drJ4&7bzR5I4iT8P
zo6Rr`IcGE5Znx7sdGE(@oK7=IC4^<3x~{u>_wLP`Z_(_({+It^Kh2xX28bQ|=g*#-
z>O7wqVKa0dkO@%gX6R*^wU#b;QDB0ri%U^(fgO>eGLbRnTuMshyolsfa>^<|-V-1K
zlqI?7S~^la2je-wT#7yV7|yoj_6Elo8FW6K9C7D^^XR~8IdcM>1F@<q1flPy2FD^a
zWFtl3C-iZoHC0`o;;w%v!T1rWkE#yCa6BHDdAWY^{Ns;5xx2rA^z45ad^RXZDQAFG
z8{VC9&<O3V+TWczA7YHh!w~@bA?gC$dYUFogoK@AlX`Wri#{AqQ%*~oCRL5Y#uIIZ
zVY?Zt+Ur*@pFg|$$6x>E_3Kw4`tSeUzn@Q2AHpwx@k?U7*lvbl==**?>@UXABRYk*
zTJP@f$Dsp&aTud#W<~=?j3(3R5S?$R|58Myc&0)yFN>+xTENsJi<FdRRqeWfXjhjP
z)3i*}M1~EUv)hgH@c^4GJGPVu@5kq3*LCdOu-PJ_Bf8o|G(c02NNDq^NM4+0_C!Q|
zH?qO9Ohhim!Lu{eGu{yyL26lY5ornQR+a_WcU@Gl&WAQuir!DlJWZ4H{&<|9J$sgy
z5<<9rce~wg4-dy?k<PV5@2hji<MCpM{brl?_bF!+xxT#0heNoyBFBf*@zv13IURQ&
zf1=SJ)8b;l5Q=IS2NHeS&~LOqM1ZqVXbnO>$8Izx@P|eA{{8#D@8@aGIp5yiwV8jF
z3TvuHBatBk&^a!?2~NpOOj?P@d?p*3$=T?s04W!T>Vg}(2!#V-=f+*%bzPU|Wxqd6
zr=wQsyWo8ow%cc~Ki+M6&o~Uj(Dh$@_UX5Oc(cE|+l+lq^UclMQgZa}>hkjCCm&r5
zeVV5{FF9vI>xcO4Vut{mp*N8#!q7aNW*`jciA~m6n#Q+kwQcZzp63Q?Ln6uLbe7Pi
zTuLcTI=1?RKwFZ0A3S%#dtXg`2yqzLJ0^Ed+4T;I37i?4?)t!lR*Onuq~JZH5rcQp
z2k)87N*V+v49?}Mj<A_S*Yc+gjSaL4D1hUZciw`ScH^cg%BN{smZjF}$amu~c=9IB
zR6-!+CJ?kDF@#yQNFCx(m-*ep9mfEk(XkRK5D;Rk^Um?zv{v)l?w9R2ePql1CyvXv
z@816TfAQzXWg?<!nqrKP@$%Z(y9(H9J_GjrxUsD^;YStrcR!kU&OnGD#@KZchyvoK
zi`;dN`F&ban(8tKN0+-z*AL^k?YjsyYjzy{I1ZnG^3lx~KbceVAzWW<x)6q;C$Jdf
ztLM)i9&RG&ynk3yLNqe%yFh?laCs4Aa!if@P}!8w2u+*RmPk}hE2(%wihfyU*X-+N
zwH8UzgqimbhvVr~ig@olaeH=9HJ6zkMpQx$gn=m#IU?`5sDKC=ctUP>aw%O5WLg`h
zj{r>wnUTCBTElA9Y)vl@>;S5&BTxtE39=X>oun|~$N&H!07*naRMF#>YeldSA|q8q
zGxOdp%hG(>%>3^C`>TuVwl5Zu+MG2_i(bl-5~v|!6`?NdkJJ6}u(`Z2CiDTA8UPij
zQO>R58&C~F5y@c1QW#3J6t(5>n7sH15`4Oo-NY`Q(%f}jJ|4TiYb)%-_DCPTLPW^U
z0SYZn_54RwrRW-dSX;A0Rm^h9^KuFdkWw|pny`x1dORGp)ILNeuV603&<|P`S*8Mb
z(mLbGlm6MCd@*dc4~IhtAvk*d>h(Mwr+IpIarx%W8|jvmmwBEDl#yEU;yhIbWQ5>3
zM&GrOo(V{$mJoo%fFNqB1i-|BS@F@e3;@v5&zj>1+E=aaFi?>$gupI1-(nA3@Ue>=
zd>3ObrPj)zj<^{HMPWMZsj<vdI`0sh91v4VnDI=fw6zLGAOmil3C9S|+nQ3c2K?0e
z1d3}?YpwH~Qw)6wq4VAEe*gQN^EA&6gQf**C8=Q8So%xN%W1m4x^6)ehtmm|u3kQ$
zrLgxa<{X)bWM$Ul3SUuM(})oem5^3g{ddXVYc%E4MfT>+o8#g5hzKyVd73%;N4=1?
zERv=rts(#|9}>A~?bgNj__6L}h+<kwnU6=6iXvXsi7Lz`r=C3-?1oW>AxSN@k`G-s
z0CMjctd=R|EL!sQ#pd$zax=tX7_^j^SGzr1Wc>K$Gb;-NI7gllR{S`biAX^t$Jhlw
zbfF8*5uvGQ?Km{_e_J%vggj<3#-(HxVdfBnnNiLurSaJ~FR3i41)SGfTbdHG){=Mu
zGa<*KMXUH2pyZZp#bC|Kr>ZK&%!rAZ9J=6q7XkrPu#&5)Sd&zPiYlN2Q5DOzsF5S|
zuIX>F&04JGpjD~4R4F+t5F!Q1MO|#|$)*{swIW6}GgCHWwNeVBwyw=~vpJ-4b9Z-l
z+{dBsx10UL-i?<=Eax0W{Seyx^jI`(XXW?EUr+LZzTfe`xw*N!yW3pukkEU-E|J!;
z)epItYtBvUz|ku0*M`q0d|X~44SuFiNcUo<k*V{}fq8)5x$Q8tAE?xNoR_8K5W9Xe
zB4QO&Rd(!|hoLjXT2f@}Jy$da?Sn6q<mnV0mQsiy1P7*$*i4MDRz*=}7aXm#X9BP`
zS$Y(Zpd)s~TD6+4nmIrsj4?7Z2k)FywHSg&TJa2L5vquSfr?P6MZ_|QE2aAB1hCH5
z2#C!gBYA30aOY{|b3aCT2Jag#$PjAPR7$BC2&+OVrA1vhU`1+{K?OnP#^295&v{vj
zDP!L`L_8jk%d#x8#28!mSP*0lFcD4lKvv16Ql4F3;n-U)Z*Sgbh3$*$BDEqAvo+RV
zOThqrdQojTp@3i}h$`*o_uaMj<2Bjwcsv{rFF$#0W+4PM>xVu|{g0P&Ep|oDHw-gX
z(JJz^A7^Id(8n;2!*;ukh|Y9$o&lrdwwg;-a*or&E_6PKh*{}^XCD=jyeD+0c~MnQ
z=)7aJi%nM+|8RHH5Q)(_caDlytp*67%z6fPikhGhc^@2utp3#IY4hGUw`tqqodZ5|
zje6II5T<Ey&Oum1CmO97RK54PRzqO#0HB&Ovkzg)$vgK5?IyJ7ymvIuGr~D062N<p
zW~CH@=I?+eKtf#F?Wz4uIKxNL48#PXYVoaUd=^18<Y&%>93Kw*T4kP=uJ4;?F6Ep{
zb|NTZwbn`yTnN7Jx;&ju^ITM}p1&L~FYfja6uVZCsjPu^j{<2k_zt1%jLF6Cw)X$n
z4ZtnSe4I|+`_u6RL|UX9`|qKnSU*JDw(w;`I0v;rQ_{6Kv1+Jb+VDY!sz5}MgZCb5
z8`@A8y_70ek=S=`pxy{d6)B0(bv_K65r_}d3?lv5xBa!0GB3+P>h<NW^PymR_U!uh
z{uU8ILn91|Pz5kkHsr>Js%BNp2S(-)HCGgA1*&8A-j`C?AlJ%>>^(BA1GL~n2p1O@
zAW&;<DtkNsI+e2Iq^j#8tCg937jvx`0;v_PHRZ;@3L!-ATCGuX@kEXYi5O`<O|5Kq
z&N(7a-pGs)Ooa@P8mjWFUNl?NGFr9{GkNDA`0jpx=*Kao?7cJ5?RGPtrZg`IPF10K
zwE~3L58I9PaV~j(KP{rZ>tBBI5r+7yKYV+!*%l^2EKM`GGF8N^Nn*9GB#ed<Z*jxA
zMl+F-k)nR@*X^?drfHe?5Btq#JDsLYKcFFVSYwYGY;i>+sSj~2{aRe;y1L1lqQR^m
z`qOE4j&czfd+#IGYNC109b)vJ98WnpM-Uv6tF_M4yp$AO7{{@(rCP+~ZnGss6>ZS6
zF1S8ks_OAL<t)Vh=Jvki6r=YsIP-Z)wJN#LyI68&LZSe`Ouh@fCtv2oE`UP>sI{hA
zN?ALxF~+&%QY!+65S;e{R!Zr8AV*9N(F7QgYpsyUk>_Pu0V27Yf*~+qBxX~q1p$Kd
zNXAGGtcAdI&W$lL(i%bM+%Xj-VnZ!LM1Aa;U9L6P+;;<e@0@GtVZduf<7t}5aSWk5
zmEywCAwBF*RpI`A?_IDeB`<gHmrq{5?z~%0)AiK_N<H4*M&{vS%g*hW*}xLwDc9Ze
z=i<WKn|p}8hG9lXQjMvBT@4^Q29;|1p=>hH){Dnx##FTRI9t>DR?O&!-*KVuzj^cK
zzy0s7B-iU_*UPea@3npy6Rk8dQDFrpIAeMU^@*rMKLn}~G5hwVwTLZgG0Y)0A%6o_
zR6{Zf0ohX=IskA$3?R1t%u3oi&5WdkVkV{5noB9QRv?T%I7iYuBtvp$#yB`vODZBl
z$fi(>)*>Rf26j3iJLk^O2ODb3caH4N`I@*!*aMnYq_)ctFtK+<A>^EM4TQc5B5KuT
zS*!{H#@G?Tipd2fqL%2{h!~7OfV9RM3IL2<Uqz~llv0U+5P_K8Zqq3>DmygPd<$^(
zKGc#09z|7TM(7HPEpyUR8ylDqr|DGkvc1@N=hPIKm>v5Vy4b7SKOBr**aq(UQ?7#8
zZ+CteN~!W>F+Ir`ZcLo-`9{!v=seKV&rNX&xPEp7@X!DBt3JlN(|mDp(WpMoxhJzo
z1^{i~F#M2$^)&LBh-<BCw$?hqx33K`$l})6C6WJ+wl{B*>&WiK&XUW$we<o5T!x&5
zBaI^Dko5)Z@E7p=){gfgY=^gSJU@??r;$b+5_@-7-Fq|hEdC>J6&fHwQ3|<((QFbx
zb))K3<~hIfTU4=!2!NrO5^+i?rNNq6(NbzHqDTSI2v>)6Vqc|ytF5NH6LJhOq_B-i
ztXX$3@1~v(wL-|*nwVMl-nnEk^*szD1tdcvKy)y7W)9RdO~5X>oJ4D{79;iyl^CKy
z2q7iw24l<&2FtS4d1+GfFfd~vrn7~1q&`J(_jvcN(o}UJcOS>Glp;l2Yu2H#5CR9{
zxMs=u<>zN2XJ&6uMNFgzvv)2`-}k#}AWAXil$g8iJgaKw0T{BX8aRds$Q1EvyN4L>
z?(eI6-fU$>20msP_KDV<KiRauKV8;ZTWj+?#~9~%UZ=uGZ}i8Q2Q%53%;=B4HBmp?
z0D8p5s^Skr$~ue#GXd76oTQMMgQhX5X)6^Sddy;5>bb}DVyG)TgG^+^JvL>Ck%y5G
zyPUzg!8Wr3bOCxVj>OC%3L>mY?5l_LWB2UK(yW8#=)gowsNkY17nxS~t6oFi@T|4O
z-F91Qb<x1g$m1|9X<n8kL?(iObm4P`b0)6)YQffZn(GuFV&4(j>V%0-h)jz#1GjE&
zfPmc3M*=_t7irp9k$_3fsx(8JN*Pl|qL|Y#3?YW?IIO1Hsy)<9OqZrjJq{T}V;&dP
z`)Puh0^r-bI~zClv4Z-Pw~E-uO?^JpU4q)xe*gB>n{R&k%U3U7ZFgH{UQfHV$oP_G
z&|}~9{Uj@QX9DeB`tEdzAPJ$hN@~c#%-cLWK}L#+8Bi2VnmPmw0gyO2c?ePZr2g(5
zj1JH(WXExcF#~|8T93kN!ihuVVp3X_Dgh}BgR7xvSBtNP!pyLy=5QDMlM@3wt`UIU
z@szp_(GAR<)KD~~Xpa2OnmRFe3pa(<|IaWCkvPRDXhhVxgs!%FXQQiGZ<1{lETR*l
zlZdK05yzMu0f`*Q6wG?cwE+Nd04HJsA}0dAWCl36i+eLGrOeB`*^K5OwFY8Sx!P|x
zd0=z_&lH9nQ_SX|<`{ygFRE2d5mF2Wu+-|q@X@mQlt0w_Cg7hOGeZ;E?RMY&>AP=#
z``dShFi4L!?R+8gsM|Sr=AEHSPc7=6u4~%VnGI}BK@|-dkT_(9A?Fy`#6hh)xCY`l
zjGVfT*;W^zZg0M(BJ@oiqnOyzM~!}lnR((6LN;CcPeM#%%JcEm*`a;(tF;ymiSZl-
z{*GQp=eXU~-54QsS%bToOKa8yy55wDks!nnBRDWKuyvL;5phaA(v}#hpH-snfdG-b
zFFg?vG4?Nv$k}QYBY;2w$)TH!x|(r_2##jjQ)QtiFc@+oX6XJ%<_LgH6oQpz;KMLz
zZIcSsf~Nl2Z6I=$KpZz|%n_NINEK~n)x0i6iH7ZtQdS~Lv3>lu{A7_m-Uj^$;d*>s
zE{lo%@Tc#m<7vCuv{IRwIKJa<(>bqpU5Wxex_8gLzxQ^+%(SiV?-*lBQ5O_d#5j!G
zZQ>NOd2{nF&>hm4Frs;i9AjK+vG-bm^>SefYjTWRZz@-DFGmj8MS49zncz`KIZ+^9
zlUB0f#c|%&Iwk-<^LrbZn;~}+Gql#K$Qs=0ZmL~J#7M~0cLNk-hqcyd_8$91gne{y
zbT9%W0z-8tbO2ZAR8KQh^XOpcD;|abu4dKNI3Qh@_<hVrMF96^${`?;oA&vw1J2!4
zy0?iT1S!JIwJt6V5yKdef*34S7SYngiA${*Q`l@4wNg$L^J+Q&GrF;J@$t{{Cj)aS
zWuE3~nw~y=`s&rI?iIDdfM><Xsv_wx(&ZvMPnX`+03mdT=#_pQLQZ*dYPD(%lrs@&
zYx6v9_8TTj9W8L`YDXtaA#`GAhv4<x!7#`EQ}>`hL?jA<xw(j2H~k4jM&#zD)-`L5
zDE6%1o-si2JgnG-GZHRzCUNUb6Aq5xYKqFtolNVZ;-;!W-3dd?6eBVRGi|yadv4%N
z29AL4hCoj5mMqxgU)k5tLNJ67vr6q?k%Ft4fSY?Qiy;7VZ-$%@937#|wU`VcVt>Dx
z5dk7L(Ro=~Ydtk5g<y?{$fT*rg%jq0f}}`QjY4dFDndFg({Va&Z(|Rqey?19vdBJA
zihuID)F!W9zB=r8TH5pPzQ6wLHiR%u3)8!(T7OhkAAPKtQmyqeH(VSvQXX53(LJQ(
z=B;YVX|vhH7<-(mu7m}Oz~sn7>SawmZIlrl4FQo?4|XREz35Tg5Fm#bDZ1z^vz8h|
z8uI9DO-d<60mEikZITe(3`4@mF1AWBz?(>n5s-R?nL(B24mqx2m+U|>_BnJFIlI?+
zzMSd(4M{{XXX(ZbU_Ez<I&u!m90^cWO`AC)g%kkQ+#?wv5-R{2qdEW(H&Zn?!af8;
zkNFvg)5G1|>UOgU5EjuQi>Tb)-#vT!>~xyOl&<&t)58e>?%v!Dq>(V@5zUL3J2dsF
z$$f2O8aCIr4dA#e&0*XhoN$>J<lv7Y952_xCr&c_pc48Qy^B~IiLT}gfy=bG88Xku
z6EOAO<x>vF{-Y}Q4g?_nC@zU91afC)GABY?(;o1Akgi8%&;Qe=J<b;ad#Y&f)-lA(
z60P4${l1&Z1nws5q07v@96ND5aU@1&c7&#atws#d*GxAjJX0U2wWjAey0uo81qf3L
zu<~#m0|r1v2Xj!vz!#eaIurC9$==04Gr9qF-(`l?LhfCrW&evPs38D%W&`xVD@SOm
zYSy}Usv9VnnSyf<9T%DBSpktlj>#K5xw*N!yMO)m<tF7XZ=d9pw3fO|jsiLLpcyk)
zhvsg?PTU-<HAO1!m7Ji<Y=i&kvg<~zpE$AT#})RtI{QZ$Qv!h3Z(f&DhRs-(LPT+-
zcSVNp?q+`620rrM^Oftpc4?Q3-Mw$}!GIi9yNRYNd+6Fwhc)4iFfd_P->up%X2Jk{
zg#t{S$%N<#?r0|N8jzZ5H@4_I@6JN**%>S3bPn@st#JkgzqFWLt?Wd#HD(UX-HD{u
z+H;v*O$ck~eK>cBwi5{Y0CY}vLIQLoM_k|B=!i@`>I|HeF4+e_d`V~oS41NW%;aP!
zj>!E9>wrgp4%J=6)GY-iB6DAsMI7>WhltuF#}qjPKmue!hE6btR>}}U2Wy&26Km=Y
z1R+;P7ZIf9phyM?B4Q?w3{);x{U_!DFv7=c@yi!P1ZN>rH@1h?<mC@9PWKPbK7Xc7
zLJa*u9~YTDg4ljsWPLM!sjv$HytG<c1A{6J!GR#U;iESSpM$-)+f1ZH<am~?8iM!i
zBf4xCI)$M#J{*xjTTd4xKtytNG2xC>(L4G$A|eN5qQKqD%g=HI1E;{|UR72=h)`8)
z6;iEWW=1JcNDw*1*t_iB%{=OJvD@w8CG;I(_1^{nvYxZDo?|_qYZd#iiLGeBM6Dx5
zMC<^a+66@51g^Gv#Sw)?w5df^sr7g~P1BM?`10B3ImSeEygz!Y+q|b3hZKgKn7N6~
ztrY=f1`Yz)sx$&41_E`{b=`bPyZ)p-=a1X`ACvtb%P?1D|L*SY&D%G>GDE}|V-bDF
zCxdrjh<)O^6zxzkU+RpA08vbv3K}-m&{rlDkZct@5gB1bA`C=<kYh-WMihF5QGYa`
zl{b90L_;8TV0RJio&y&iTjwue>_%vgw!X3<gkcy$2*|<Bkl3l`F}j)&b6HAjOF#Aq
zS<IGFGNKh(YNfy-<v0#qI`={9eJ81_bv;&pRXS9RfY_;J=88aWfOL*3Htl(lJ>?jY
zA8&3}5$zc_W@aa>wKxI?W<UZ2wPvj@%Q8)Iw;xktq%tq3;{%9XZHAkh-F~+jhQWbE
zwKi>r3Mj~nSyfR2XE(-v$)u3ZC(wKS_oq%WJx`yHS+0*oa;r$))KUyC`tbIyoaR15
ztv-5dtmMD^@vdQdUwPNDYy+205JBYFZKKwJaD)|y>rZ79K_&;Iz)S>0fV`>-%-r8s
z#Q=eM56A$u)<i^ljtTYFsCP@N5Smkr&J2N3;c}9Be+!w_T9;+%nZoCS2BOZIw&vzY
z5SUspgc#8f0R3Gu`pQsWMfTl7;({gtJIX4S?nVk-Mr+z#{dy!i7<88vGz3u-bM;Ot
zLj~{sqL{@5l=7P4YaT*4><{FAygwp924JKRV+>)x-R2m{VbPUHV!(#f)D=tt1fY|O
zv{T1g1^bA6@>7RdGyiDg|M)B<qOdH>_4QTCX`bg=s}qXI1+;wZ5QP3O6xrh&bFHDk
zD@E2ski|*C8G7TeE++x8r=ltX6R%=v=*ku9hd~cZ)irg|`%)6R)!^9)xA#&_9RQ>?
zLZnWiIh&tV)qpF(`W>)9WK5<8gzNg>-4Sw1fhm}|le#$~5u-z`)m6BP6B36@+O<16
zaknDxBjx!>TO-qf%nSgjui((^>{SD2UBsFtjYve^Lz-1Pj~)#O&{9g}bV8AoG62+C
zfkF<EB5P~S`t%lZNZS;z_xtXTDY{HeYc&PH5I6<|W8#Da=nAS}gh;?v<S_}>tmAZ_
zo-XafRpnV}MBr!Rd517f)6LCIPPrEchloy(S_=r^x_Yj`8iNYmbZ^}uDgqfQ`f9&n
zaJFD105S(Nt6~Kq5H@v04HTUaI`06_*D_#EYp36HyFs;IEHP(1M~d|B84<f5!lP_u
zX`<?eKpmA}<`@zMMqqUiF*5H4U*1n42lwvw;Fqu;14n?I^EhOgXK)Iz#%L;nHmTLz
z3o-?coMMa-&6y23U}Wg$YyS}ey(^~hU3&UuTi0Ea%|QSgfPpEv5|~4XQ9BRSw3|pF
znj>s>`?=Ir6{gyxaWDW_rc>mQbA+bgpr*{jxZ4(+!K@k-@nUEcAw)_UQB#P<7{C`3
zbn$LM;M}>miiU>b0_x(51`5VNk3aYE=A+Z)g<#QNpfGNSd0Fz1Yi&7=McU%!aDA=a
zFVqzP0(w80M6CC+jDX(l#T^lH92~80V}>-kyNRbX=3#U9FhAMt?;lRjzW5@L&9#oh
zp^9Wqz};hk9K5G^t2XzpE5dbnAZF%P8#7}d@1%GH^(N95tK<&k3U03877&SO7}91l
zgglseZ59}jGI0!X1PY7|u@k*kqE8GgBGwEMSE(6-nJ8c$Mlqk~8HskgofE<`594rJ
zmic%DfIJSk*+7g)(rO#WO$b4xnS00?H~^TOrqycIyZ!8%goi{+H8FD{Ad*^(ikYd&
zQc5XhCHc4k08(%Oh-sRpu*`?6o7VI+Pcfvp8AK!k55qX-{D;5)hus%n9+$Gc9$w$S
zefuyu#m(U+Z4QEQ7UMihuYd5^ee2xNky7l}7P|r>IU!*JBV_Z=mwNa41M<X&*aj2Q
zIt8vg95X}WloJH*;q%ZvsQROzt&O0adyb276cewB-Sk1wA)*CNO>J6gMy}=oFy!n^
zn{kYZV_+geHCJ;(V{Fz42q_{tdhfy4zYHR}d7mqhfde{_Oj=5rj?=O%A%v7t_fqNC
z5>d}mrj%1inL;{Sod)8_)^jq=x-=(-sIfD8x{{Qc!!{wJwg!l;wfp<~PJFN)kuK6&
zo2Kb_|FGF?@;HQ;n22x)Ovns@L7S99Oc#9T9rXyjNrnFHh?+`Qe03TXGgAy84FMB{
zPAqF@&~lZ>_RT3H5w})1n@vF6Z+ADhHzB8x(?7p_Wf8`!t2plBuyf9$NaP&zda;9%
z2k)DHbp&$959}?@g%f{lc=4%gRL?~GwefFFOqW{5bv%C5?sfN$b1cAxmgtYuvLAbd
zelW@+;O^?c%%#@NkV|VJ@Q$cwGSV4VHg_Tfq`s&|#Lzo#AYBXkymin{N>c{x1at&m
zN;{rrGaJVt=M0A3*#^M58&osKz}&rH)PNa?Qe^V(PUFo8z%Th?-HEL?ZNo6M)&ld8
z^GWr1I#CRpaa6Ow?3h|>^XW9Xmr^!un}@NPHmO6-DJ25a)@m&|=l5s(-ejKXap&Nz
zdNzR3b5q;>d16jIe`%T~V(yLX#m1*diy@WT4*MjnRR@gexD<&X4r$mP_SbRPDuk*O
zn2<=FB9MUsdN>CIIro!-9=F#YI1YbMd7m=E=zpVkU~Kn}bMVfa5C>H`x5n^pZO{`B
z&wIcR=GBjm7-)QbeZAf9r`K<tu#^%#s1CJyDaD+DiHU+kSebpXw06N}dcJNC^##X{
zZ*}IUHB)Uxnj;v31&SEDNwe6R#<0S8=+xtiU8F&vK)^r@fde==se`Jh=viQh=X6f%
zn(PjCr<9gbYOM^;yB&8+Hs_vlJkN8zzdy~>{%{q`QfpmuPAR3>UEaCYdfCgJ^^#`p
zMVgs)GSXC*Wmya%rc~ycVi42T1PIgFQhJ`JaonuRTX*ey+lqmsf>Yr6bW*#&pQoa7
zGlrWlzKTQUG#Fs5&>T3Wl=7)m>htqTbK%wV@LXi?$wof?`KJTC-W3@UF@+e@Fbv}`
zi2u}|KU2;>JWf9-yGuD^iZ?em$Cs~Fthsm!9f1@#R3Pffzo-sfTidtVt8t8~s=9-M
z2aaSbY)b$t+DbW<**U0V9>yFa5lE@6H3v^UYmy)!1Oi3}6IJ67!2&P=I8fKHVwWs1
zAQ0iIUG7OGSZi%nC~%kfil`xqT8yz@@`M~x_N6==Petlf%6_-)`LbZDttS^{ZS4aL
z$;=dCWt6v8Tbs)wBAg--i3ox>6*EI55kY2IFA5W}R#go;^9qT8aNKS%1tlux1^nvj
zYIl3PyL}?y?x+gRNF0Ep5fcRi=S~QDycBo3yuLrC?)=zM@l)63Wev3!*#&e^)h6<2
zBjo2i;QlY~p_6BSypNw@@119WBJ$bO&;R-F|4>>RDE3p7I3O|+BXOVc`(@Ffr4TNF
zNH<RMHT8}=kaR{|wTY;BmDWr-hLp3rmr@-eFo(d*92uD@1`YujRb0)5O~6)1u)cU+
zR}Rd8<_^|fCb0)r#tXF$0J<2Hn3;L)hho@lHmbUmI+gkE{!Uf9pV<l@h%}LKelZ>&
zW(wXTx#wl6(nLhuz*t0psY(;kK5L6er&o;Qz|5!V_%KhSSQ=J+<svPmd_OP77-Pa1
zzWDm9albEWjR}!4hd|K{)uD<~SRuq-WN^l(90-7ZKHK6`AZ?8Cagp>FRZCe;r)iod
z@ej~1Tdy8^v_JX8PV|HGtn*~Q{`%|R|DXStER%Z_z|&kp4pfRkK#UjyI1-{77=oU?
zYI_iNN0$16R#ls}xy-G#4)Oy4rHDNa34y#rvwj(6dNgN`(?)Y}a}_WJmB+Cei2aw>
zoq_c8!|9S!Qd_IF&aK86H=E679J@Cl5hj2Tf+L721)i2^UQRzems-o=uumy5b8DsB
z=YDXQbp!J*Bv}uB^VV8_d6uP!NX!WUj`Ko9!;sgM5L?dzX4cNiG#ke4i<hs*akJSE
z%Cx(^J(aq6548!1!2unxx|?@9Cb;z9oh@P=bpiYd>dpt3)u)Q@GIjb{_7Ox()tWRF
z#SmhQepz*|!*kyPzw-k9V5{}xitf`>%<1X%ZQgFmd=&Gh@=#mKTuK=vxsRheQCRbW
z2(^<_9kdexS4T-|OEvIP%V|1_NT=-pz;3&3W>TA)cN>mo3Ia?J8kfL`Xkn$LSx0XB
zKRu}Uyo7G5ebFvv+FCOs3}P@X(^Bg^&+|NsNX|LL$SF?qZ0{6^K+NN2L(CzC=dWMf
zy?AjyojzZl9B!_*!{~%mt0eku6951p07*naR3R{+A&^6d0c>5UJ9ZNwcd0I|RTYk*
zlv1Q^VnFw0S^BYBYvULYF~!i6G+U`lscGDXm>%XiZMJF1ip0Zkd~=s?Zh!*-Eh4Qo
zbLhl)ZL)S_Xzb{#2^4e#x*y~Fk6+)%1=qJDKXJnK-^`ysxfzGCwf60|zx~Vq<}U$B
zRf)N086iPRDW>4y(j;)eM_b{`GWCNq>|&a*ABWT3-Eunp{onolvnMyNUp)WquYU9D
z&8w6WqGRWrG57dm6Y08YT_2F7W03&UQfh6bEK94kHFf34c^pqo+Nxhy0B0mqUFJCk
z&Z!5KQy>m0Fp~iSa!d(g1VV5FvnEno1EkvIG%crjR&!()wTIIQi5{l;?%`pnHRin8
z@AEhUqPd5dh(q_1;}}CsNLaP0c@<eoRX0H95X>Q_l=2W_T01!oNUYX<38dftmtIZO
zM0Ht~regj7m=aS=Nlo3IIdBNfkppv#fCxxGynMOa?Ky-OuixB$_AI50IXkjCsDc3y
z1?q$pa5__XiGTpR|1Tnnn!mrbeEgdJcv-%R|33DyO3j#wC?McG&pBszKOIlwet$tY
zKA0arwZKCBq*nc5o)U#GzxsN=-!z?NK$GwH#z!e40;8m1L(tKqK?EceX=x^ijFOH?
zr%DV&LMNR{cQ|U)mqtoKMl-2RNo4}k|L6DOzgK&^XWM<wea>}#u6)BOSxN7tBT${#
zn_z0tuEhkznc<oaE$BaB>iruO?PWaDfa#=BO?adWi=~b>kI_V4W%(*6V?dE&T4j)q
zh<}cbS7La;r1<QPh>d%gEPuHhTk2#<UK{OC&}0?WV?Y52Y>8aMPpT&iB>Jhrg7yS=
z4#?jOCWg3$Cy5jwg36)+>Ty`LTlV=Ckdf21A;T0+sBpRT2MyR2#?{!dEHv6|TH@nl
zA4diVkhyO6=Q<SHU>>3Ua`xq0UlkrV8FRa|Hq1PrS^*`ry~G9HuJS*1-`X6UJ2@>@
zIJlzz!$o!aRCd~E>{b5eu<F0HmzjnmK>5A59;Tw|!EiN|9T^gbJWE8L{K@SgUJ58}
zPL&!B`l6Io6~8T<hSnue*a|$Tfu<_K6^-pcQjN0i&?v(`gAK*pv{qG~<f*XLA=e@J
zZRe^=8QG`<cwHtZx4?bNLwUST4W1@(E3_s7UHz64%=t{_?zmn#7C--R-o!~lulhi7
z0?pwt>&4u+&NEsc&-D=sZ3NdgGXUyhdfYh$gkxnvA@GQ?v|-5S%ZT~HuEOaKM7q+U
zRI@Bpv{;5&s|W-ANOx0%)Rto2JYNA(|HR=S;HaUs{l*%FjFTSw(a9SKVQj}NTJoB{
z&Hin*hbn2~WU@`z3HRR}EI+wyg5thw{(M;uIDi4)hG)2N+xCRyNJ?^^W4;J(<mQ^Q
z455n`S;E@?LWY5?(hSH4t_@#RspU0SZ~GD|Kq<UoDE7BF?KCd#G;RtA(@BhfYkVz)
zT~;ykkkf$Z`VMi|7LJnLDZKykQ%td(uNJ*hX2lGVc9_L9L+_r!#%GL^HPH!X0Qk~X
z#>mhTxO9Iv51fXvC~@gvVR4Zj=SW?Ud3Y%?#RI*uuq00LEC_WJqAboxexdR~vNK3I
z@l;)9+G62VH)L|DcfmiHfT*sn_}gr4IVS6>C+h6w3>h5PxXTiCH%*6DefMbak@l+U
zhN8Znznli2$vP7UMHKz_T>3Fy%PnKO+fQHg=|vPPU(nkRP1tX=TRP^l3Vy_5=G|^~
z<kW|TRRu#4_xJOk)rb4MJAeuH`6%-2Mg%Q?<>>w|c`BNooBM|Ps4(o++y5MBk(o*W
zEqp|}D;#ySI+h)`7Vp3j$73peG}Vyu#N5cRL{xKrI=#5bWGsi4C2q;<_SJ{FUVUQf
zErRd(u2JRnp#i6j!qK2>R`Qf<)@`t8aSl=20GEMVsFRzT=aRVI{}mE+b<J=|e#;_O
zYyBlXZ9KW9BZ65<YXAIC(B<at)5WaSogIH&&8|FzCC7d!9bPq8th!0Ya6y5)K6?aS
zi@rS0p;EV8AigYXojV6oY$fd$WlvAC?Uoi7RWX_0KwncvXZ)CbWN_W=w4yh8DA3!V
zVh$wt*(13=+~6II3~GryCyu#geb~p{e^IQX#N3lSq?+$GZ(#!NR+;F7Gxq+^`<H)l
zxVPLMOx`|pMgy6P&YU6M8q{s>WqEGH+jO0nlS5!MwbN_n?5_uBSTI<o9};t3LYQdj
zuW0=9Jwg<H-`qvpuxryoyi!(EC|N!T@0Qs9u;Bivua~RW8mhRQpG0m~L=IL`mio%9
zL!JpFeWQ{ym9qC0K<aD~W6=U7W1+8jcx$}pO?1oMQv5pGI)##ghdxg1@fi;O;!m2I
z^6tDK`pj0&o0RMXTz~F1Fd8e+Xzp5#ost$bMZ-a~IR-T5IQt$>TV@5VTP#Bk(1bN-
zoY^ph1)7j4((3<9x(zwwgp;9EzH@Q?Yp=u7*HZQswR($?+95N4+#G&B&53j0*xjC(
zM-|ng{J4XP`9C$OnbYs~c*dSilQOL8=_>i$>*%nbkuCyJ!qHms9iL|LSdqDu2}#dU
z_sA6fFeo(g<l>m@iU1JZXU^LQZyBj=X$MzC@e9#?V!?9;D4u0X&o$PuyLi~XnY($-
zMo+DEiT5#ESXR1g`CzcB|7!;ZXMxS{znorbu4k|e4#5=<Z9h~lD5YjjSGV4P4CK%b
z#ozd*+?{PQ?{T$z!R7br@tZh+var?cyT~yqwVpA^@lC&N<JlDja>+d-Y9yNXmZ0g~
zt>Q8BrLUg;T#mOK1DU}xi9D0?YOSr0vcE0yCow9)Gr7w?y$_6aIr?hluztF_Gx^^3
zP6hwAgqpeICDN#gJriwXw<K1)&f0|g=2rQ6-F{mw`gI@=Pj1TZPs;6sLYEP9k9h{<
zjl6f0*PNRp{dx)70$~RyyTj9k;!at&1Ei9ailbOf>3(1X46$9|p-1O$(y?DIe1<sF
z5kI2M5wwXf0>1b>)y*WeT0EY<BK-W-Zc-@%@g9lbC7Ps*;1J&trJ4TvL*GkXRmV*u
zU8gB{v#ec3EPU*BwqJ6>q&Xq4vK6GvlAVcK|Fyq=^719JrR#21*{3*Gkh<-3zwMy?
z;%)$TI@tQ+pHXBEe-gk)nQnA3`pmXfWgpd7NW;)a^NeR8g<0B`b<_4E0<p9G;Md{D
z=kcw9u2U+2{$fB$e*_~hcvTo#ASc&n@rypNi3e_{d_Jh{EX;o|U-i+i<G<p^LEY;v
zmT^v*T_^qNA}7<5ogw>k?|l_?S+3@fcnGgK_l`~?erSFDpxr{WtvO@+?KRenY`KY#
zepAKG1^Tzpb)1d=@;^QFqRpoT#q}jADP{q9JxfBC#eLA@uF%up#Ea()tnXT=Qk4?3
z;l!XUl8LCV&r~oh_o?$UAhYmbY3aL2f6%+O3=o(ap?lY`5mMw^HQ86?dbRAcd}iA5
ziefyXyc#3?kv0R#GsWSj>%eYGEbtoqMY|qXY0DQU(*G^BP%pwPrY(ly&Wj08N}1|v
zjD?w#HG5!w^6hfDE1g|9QK#covP+Ge^y}01(Mc|-yeC<D@90#-GjcY)frsRZTlzcd
zajU{Sts%-`T$Aqs5u_8$(eIm9LQMGWlNCY65iC5JUQwc3U*I1mBekzQ^w|_Xb7@EQ
zOH16bynP-}d_i**;<7<_jF;&+9^}9I@dh-uwAtusd&I$cAmOq(^1Nz#BPfg`)@DoE
zOCdWar_SzPwMe1OcZK|lzk{Bcf&yCVWQ){ip|j^RU7`%ex(7`HRzB^ms_QDxo~?73
zB!Ef*@%2{ogk49cngNk74idYrZa&}pLhRia>4WK8QE+6rzlcAAcpA61@T)LEn#SKM
z4ev?GIsc6W-D$~b%7zyoSUWH*y$`GDAFb4NQ59qX$3Ym@X2bW(r=o0f3-E~a;P)Q|
zr4*U9gu82$<WPGp+48@1o_LocDx+1`=|Lj<J}PaeN0(<yJ7cQ9yGJ$k&HKT~M5T>3
z%%rX);AED0<C^-B!5ROaYg8TENdG%X#Slvzi*TJDRU8bq&f=!1c&+IYcGO-yvN{x*
zbmbR3e9P{xL+6_LU)z&kFS3Zo$7E91*|awwA0H7xRxHBM6HHqVa(?E&9?VmE_#k@8
zW{d2Sf5|@?%W+q7??sk$Os_q^1O3a>(Bg6)Bl3u)_tUQ6C)%3y?T9ot(`<J(1(xD&
z=gFdF9)@aj88{1)p69zI<@LhA6|ZOSoTtLv8uW3V<EakMoEhTLZ4pJEm^rBY822^N
zL-DEqy`>~ObKEIaG+r;z9%)dF@?Gb!=_pq$&y10^N|u&1Z|fU<nYomxIm^=|I~9f)
z4S$*jTw>m4XT)LRC_q)OULI|Pz>4E_Ott8Ez~y2nPd0R_gR<UZg!_13VlgWUr(_d;
zxlaT31cF`CRJ>FX>}sVJs?X2VP99$Lr;>TOfn<Y-+3hAJ5)i^D(f^NdestM8k}mnu
zS_`f7AJqdW9Yv<KTH&o-)*8lflZR5+49X1fRHLLSBfLM#k(m~o=3IIFa|2d6<rk;|
z1ntts`Tk%{t*cn~ncEE2w;zHF*NhR`!$SeFrs-o-nX50}<Hh;hJb!Y;bF#d8^4>bD
z-ZFXk3KUr}TI4o%Ye1a`@Hc5o1ya+E78=c5AzoA3XrE(%7(X*H2VIB6FfA5fW6=;t
zO0(|S;*O3~buAP!;HW#t#LZxECzis9Y^H18$nomcCwVosx2&%vm(5PNP0aMfQLa3u
zyN-9d#}f^}4%<W@S^DxvGOLijCd`t(r7iC`)cXwfY;};0+|r|Jp04)TC7B{lz?~3{
z#jAy1o~vD~sqryfH7swmPD5Ocej|Bi6y?p&Q@s}+3I#0y1vy_Ob8l~yCjLgbZnnF7
zHJqg|;hC#H;)@BlK(YNg6YC;g2Ua%Ohj_--OclpODL#cHLMEA*1!6E7KN@7OI+oRZ
zNrXvVog5l-w05TXw)+I!+fAjN@SSl=Hc68!u5)0y$hUc};aGYs-a$*Z&p}7&s>&zH
zb}mjO?$*1Spx0<H)s@7aNg6YxDnqaA#JzatZiNLfFR@9ix@_19gG;HPc$_7nCl}3j
z|0C0yHt5Zs{;k{-Z&07f7uOK9YX*sh^unQ;fnTCM(nca*1T)x0CPZc4OEZs~$WzI5
z2iz=|W6fQ@N0<NdFV-Ue@n34{l;72?b!ouKvZN0EGEM%s#`sW?#QJ`yCl!Dj-Ml=y
zyr9B~fHKlW0ApwN7?VSyl9Hly{H93-OM?jYKsW44pua5G)HAwsi8%IkVn&KSIEn}L
zfKF)w;=?IQF<n26xTXk~NqxflK0qWooPd7mJLJo8wWoU&0<h0;bDj=~Xb#PJBE&R<
zKS_(pRJ|{n^`-O`-P|pr$MaaCTkKa>s)t2P(CFvi5boC>yNky>tI&&U${2uvzxAFk
zbQ)JQCA=@@M@%l-mkSL?jV{f|7Q>7GwCLwvUvuH>_$d8IpA)8{ve=49^tC2-?8bkc
zju>4$R$?Rn_hp|-;ja-qQnkY(;idV>={}Ko!Wj9lmrR<d%~zS*ZtBpIxHsq4^sg~g
zTCvnj>hWVaGT`1>xZH_6x4Ysj_Xt8U@0yh~IQ71g8$h=R_-X9%1W@~LiBS3Xa!6l&
zzbZ`o+_`$%gxy>SDZP`nn3{r2fa~f{GAlC+9Cb^)_hoTNS`>^io!<+@?MTG3I%oml
zn(Y9bml0*s%i#QGmVmy#CoGnxV76h`wN1A+WyLpv|9yLrL%0Wtb|#*9IqJdgxWV{P
zI<PSr?jTdoYLx`K{>Ew;b1ahy=@vzmhPe#OUQThKlE5yXW=mI>-stHLad$=ax3>D9
zl}Cp_On_cKc}jMRe*t_pN)}UDRP$gA)dC21mpk5F;pD>$;9*?7J<rdOy(8TBwb|PC
zx*73=g)uNQV!~7KuL0+k-N%PUYL^XfKF$UWT`LB5tDXRl#nz0C)<HK1$<^@E5*%>#
zuRYpw;oi%H@4llTW4DghPI+HCj7d+oL0^@cHG276CO35gBB1=CbxTw`8r{6G<JD{c
z^Bm00iorBj78tly8&?KNrK+RpEh^y8|2SomPS?!X%Qw}95uq<sYCFA_)?a5*eEZfG
zuV>Ak@crR|V=EQ)O+&vxPG}FCus{-gAV)I+8(%Sl|Jus(JJih<SoMC}(}QWf2n)R#
z3mG&{>(|Dz7JN8v_nRNPFlSraRr5_eAEkS8a~%-qPvqS@y*OqpUHj#u_*q!b8qb<D
zRbIXh5qyQNV!k+90YGsDBfCwPCgXpOE7J*K$Jz{k;s9Ul@y?DU(7+o-o|Uc#U>DAR
z#qmd+AEYlawXT0&+BM-jNRC|eh}~MqZfycaGql>W!n^cecAT|_Jgu`%r&s2uQR7J|
zlXY`DZq-wti!f~m_G(&!aXe6^D6W5nPm;>HK*XG*1wh8WBS{6(WPwd<wV58s-doH~
z%7m>e@+O<+QU%G`8p@PP@si@ERQhbDOX5sXJ6}{l&qdHos8t<egnuac<bYcf6+Qn2
z{{V|eyiJXR$FSn=y?|l$43kP75;DuUP2b^2zA}<}w1t?SA4)DS#ER*@I7d6dEaNoa
zGYfQu{W+_gP$PH_2Isj3{>*;<>likgJ9;iL@b{d3=TpI!!+77-n;Q;xX-CeTN99Ne
z<FOCwp25^jyD;C-&`>IBkfdE_*#4@MQOt7E6X)GK%sru`%}*eq%Yw;2`uWLlJYL^F
za5fH;7Y_Io`SbKd&HF)a;^I<JzoR1RmbUq&d|~ABp6RG7cG^*35b<T5J-#~!&3s!f
z9$u4lh=j(Xm2Ri+hX4A>lu{O%G#ZX-M*N@z{j@PO2XI$H1<#zx4Pqlu<P|BeX8*jK
zGU}m0EuvUx8+wtT7R^LzHJs|<G4p)NZtiLDv@^ujIWAjNCN%UiU^cPq-w8l`vSSm+
zovYrGe=MWN$`D5d^`qTg9@U_AGlV+Kc6F-7Umt5!Hgi?i*AhYK<F=Y5-^c^?qya79
zXYFix{b!9udT?fGuk-cimjF=GF4X2cy4NU07^ex8*XI0t!3UeuQ!aLki$J|dgfl<>
z0waExS+U%o_;mH;PLf|a^45!)9F1yo1ke?f4@*WK>=4c`yl;DIzty~BE}Z3F3HnjP
z^Y7Qx1nbk5<|VH#n)XP=etepfD|VAIMVs<Kzn$F;<}V|^`+$-stw8`v^~lqfV>IgL
zcoZyJ-=6lr_>?<Rf`X8?Pj9A83W5_V+@#s8D>Arx7#T}Xr>H>GCB>u80~Ezr)^|7=
z<g)-2r6avTMFM@W)tCL>!0JJv>x`IfFJsa@@7TPw#8Y$UNAC-1wp2iq0B7j^!2o4;
z*i`1Hv*r9zEGzT;BcReK{7m!;MpIjnibtnMIjnU%+LY1XnV$1BaFiuroJM`&ffs1~
z9g;rgGM4W2=j!B=rsvMZ#qttAA74bI3gx~X0EzHEJncQ0j`?qi`;x;U(DL$5$^QNP
z*_i*Zc+9(aJpNAX+S1>COS>KK+T_90U{^Tf*!IPXw#XLA<{72foSw0<m6es<vEJ0h
zNhvWFmhRrAa8b7Jj^!^4(uy&w&QR$jLFPDhSaLO+Rvw9ymlhtEp(riTV#&a@R$iX{
zD!A0MpXv1QQ@-1hW&za=H<6!j=0A(UV!C@3>0!kju30x-1G1dKwA<!SygwLDL964N
zidi+<PWIn){cBWXjL+{1`2*O>2Uz`*^eS}<DohZxtb(Pil>u;^rEBSwM|<KL-sg(e
z<0n~ltuNnX;OH}G%PYPk;?WeL^I6}yG&xKpsw<x7roVZ*vt4rKa<_E;q0Eq424wM`
zhx}SL4u>JDO!P|Wlg-?hKsqdJF?9(;p=);Ohu^$?>hZy&)O)>$847P@%d;I)1N>13
z(=&wsu^RsQgtW}Ptq`g1?C6p#25P4c1=U_aHg2jO%dVk6`ttcGm8_Bh*(O^yv(&Vj
z_h&QHE9G^b+FGxW=;rJja2)Q|9|~z21=MTMQ22_sv+&oVlot`(DGJ4yVzFHgO?o&S
z)b>ZmP=_8~is_kN0q~)~#NXs#<2vd^K?$8<l<b%gDJU#RfUfKKK!FfOmIKo;03<*K
z_yYmEO%r!O{#PB-jneI~M-nmb=D++=6L%VVBBKcnWC8mm#%t1+I=NQM^_n19u0fbu
zTBqk1c{4_}v9KSm%0R-`@h9fr`MZBFJ5(hqVp2@mr`P#3f==dK)}$^jj=C;Kx=t!p
z=!1s>(uA_yst<1e^-0bJOLSZY$M)0_;%Vbpr+)trNOE*J5qZ&DNy7Q6D@bkCn4=A&
zVbR$OmBD%1pRrkf>OUm&!Vc43n|I`Iy~rB*Tn1w?)B{9hB1%`U^29+(6Nh$<(}I<9
z5fU(JADvNYdSR|Lx8JZUAm$~gOf=r+gJMj}($3+j?Ko$~@-o4f)=j+lGr?2!@{C;B
zYyUKjKO*R{?i@W}2(J34z39;di<P`wB?H}_5)Xr`{+i-;El?&Do85$~*+BfJw|oK#
ziAu$v#e}@&l}d4^f>4I+vEKIf@D|J0_RqR^?VZs%(D>$(O;5S&!rQm^v$hnAq8VtV
z`U>0(s8{2TUtX%^I`S_%B-?&j%+23!Mi0HLt*y~oZ!9&^6Ss>vnBH+QlFxqI8ptAH
zdK0XAnsy#k@Dm&KYvIIDh&sRryyPKImQL<f{{aVhLKnaIFCz3`+6=Re)*Rw|b%GPo
zb({|zRrrj&nmFZO_GUaR$<UzZX>%15Bw@_P{&NR|uK~A;xbu}al6m*S_cJSJCKq`?
zOF1bTKTchl18Fkcv(s7=jL~qCVxlX@QQUbz7w>>4-=KZ-!fq41IHf0`83$0J&bJRo
zB)jx2EmMD=^5>-^0#B)+9U){3-T`}uT?fO+KR818`G_~@B~!j?xS!%S(P?;1YW;gr
zg{$FX?XTx2C!3qZkW^KMQ(&<+&8pNML2i=2U*yY^`uu5v@&E@~D!CkQkxp3`yG6aq
zAt>kvtdwIpc*7c(nk;J7LN{GO3^z;blO(EDGcHfwZ&THso5qUX3{2K*GYUE&j*;>s
z`7~ztjxLY8&eGLR8`W^Fo#i7QA9=r1MAgmp2krj#HD_vLd8c_f4;lt*1~OieRiKs<
zut|H=#}H>*?cYTJlxP9C^QHXD-N*~0OBR6)*#{Mfy(C8OJq6qnJ6nxclR{i2e`n<5
zN&)4Mcjuk&dc>}{brC$}C%PDq0*@-12&w3x*R5<Uw?6_yz~d>&i?fNY^V-YbjD&M?
zAOid3{#%&0!UEx9`UZ<!>e`<m<=m*Bhlh>XTfi&Zmj^Wt3@Uw}y8XxDs?*$jI@WOe
zBV;3odG|=bFXy)N^4?MYy<?AgeM02XYqUzRAC7Z!Y)p=+Y!iTLbk5P|LR#*6B$rM(
zzt{YM(XcZU=&4)UKFXe|><9Jz9qZ)<uFE^+7>Fm5E7rHPBI^BTVe`e{p;r0qG-fn<
z){I+3uuNA#Kt{ZOjPq;O=irs4xrU~=q5xB8m2B?gt_l0Ya+>dV$@vrcD#O9EJ4a5L
z2A--0GYXcl-+P_s<Yw>Xr*?M58G67xjGw`BSC?An-ha43Mo<)ZiYw~bWbp!#SU~xJ
zLWABMF*>Y8+Xi7hJ13lVty`qIHgdXIn{Bv728D#<2-`sZ3-oFgR{7ie(q^*sVE5qE
zx6wQs!T=M|)t=$hSI|6bNP40eGXb0qz}j$ryJ`GvtTsZf`2kGrc=gTL!E|=(+3JGb
z#p(=U+xw{3OXlfL(~PBJ-_G>3WaMe~XF}hOq7DC~{md+X(O2h|kV8)T&$v0@%Wvo1
zcTQ<C9=+su@IDlq`;dE7?aD~X$=NkCzXMtVao;c=1LEhkhtptieVE5(F8+<+*~gn*
zLo4?gtTA`wwHshh%uwAnF%@m5&UyC9BaC;w3)`Z+P9NM`Y+?JLv)JgjCl|JLx*?=L
z)xO}>R5|t{$7|0kamejw^-5)B<v~E>QdQWV71}BlRF?LRb);@T?$=Py`BwvSn6H1i
zR(4~qNN1ZG<`sNq3+JHY%G0~Mt-<E)wW}+k5v@Bg=a8sNsS6Q<Q4cOYfm73O_%-fS
z3w3vH>DV_uZQL3?p|5g~FUNH9Kee$_i`f6GXgKc}R(gWq?$XcD^CJF0-?q!0;ukCt
zzbOTW$Q5(2Oq+bhmk4;glB;Gj)003{T6jtd^@iB$&g~tA&2xT}GLTEhP*tRv&?huE
z?To5a)o*dj_j|h6wjZ!W(cKncXKt_Wi3ibD+W+f_{Cj$N7J0(2UFf(olMN7`1G)f%
zE_uM3z$uN}apoCx1-R!_*V8d&t!3PEx%ug4M{%EslYRK&_45}hNozcmoUQF`?IHW?
zOd1kSxO)@W{mm`l=xj2oNxWYsN8~{+^D~YIY#k9?iP=At)or+SW3@b*pYSIIYBSLb
ziL>3$q3Y)N#0LKOCn$%w_VoZizvFyEr}6-iW3`9I;(6R9ilf-KZh(v4oh-{_2j{(Q
z9ve|AeTNddwH0R42Tx0cf8cnpv(WJo;h$9s^d@~8Y2~Q!ex(6*p%-E<I8V}BRF(QG
z4&5Y&YCoRkwc?*U7bm%;Mw;>C$Ce5+x882)($djZQPU>sco!*qXBwV~j2Yo12syeP
za)rva=@nT>`ulOqp?f!gaR;Q&HBVcAJagD;F9&LNekl|4?@%pPN4>(^_%bS6@NY!q
zzoo8A+~uL&`ABWoKUvG%LkEVDKZ*eSA$Ko8bA0)<acS3whr5<F)!_@{PHfwf*OjfO
z?d^O=4zLe5Eb*{G-#msm&GF-lpq~T&=1%Uj)?mIS?x|y#wl@#UYfVNN^Z#oB9GnG}
zM0Kk_v@y8d%QWW}9Dj`*dW7cnb;)7xPI#8MTY7WiX%WnEj|AgkoC?A6oh)+*;$>5w
zq4*Mnns+1}*}%{iHNM;}x}Wx3Z(DLID^pP8tvSw;Vbc3n)fU~XCJEJdlQXc-Ui#+6
zKl5o~v54k)%>nO3;X@qyIcT7c1~5_)e7U{tsamkhHB;RcDZZJlgNvZ&CGKN1`sU?n
z?{QN{Fe5?^b(q5U&Mh)|i9!YZ=M%ZHNo@13%iC&fG*c6<@pdxbUVsa_Oh>G!RQO`J
z_Mlq)-QM7efRvu8JIk<UGzCQoQ{cjwN>bOqkuH@5PsY=ZX4T>!vmOfWd%0+IDzMHB
zJ_Mi$CME$7m;@y1k0RvgVe*qE^~+D(H4@BGYJUe7$Zy^pIOpntT^`LUCy(B=yt$sp
z&BOHuddueJkS-8TNuZFHqCkb>`W&r_L?}v>M&rOD$_17aUB{JnXFEZPTurbCAjO4T
ztfOIKQOJD8Te*IYN_O}_a5C+!&jfxC5-B+1&+0}1j-2ZPHr8#`*UKR(ijTDSS$zoz
z6o#%T?j%2St22i-`T1oe{Fm}k1nBV2KfRH0Pi$<mHSC*YZS=B=^bZgJ^RFK36{#{h
z^?A<gTDj7f&rcfg6+-#67T!^Q1iEyE9ol79t1dbE@N-6^p~E=MIJKaY?}!BzRqQ&4
z!?;t2b#A_$O8DMA0Wr1;JaH+6S+Mi*;|me~*N4X};O7#LyU{w`AlfM0(r!!FUdQF;
z8_88>+dZadT(^gumTpuYJnL{Nak54xMsuXmMrqDKx}_zf9iveaxm%!uE!?!5`bP`(
ze%A4TZ2NmmjaJ!ua0{k7LQPR)37HL6NojKB7QAx{e61oc$qhK2%wlZBjPufZ$Ii*M
zc@u+kQ2t%UxKlyO9r-8TxpGbXc&uCEqeS>};fix@Nrl*~f9@WR?gLtr{#ICI;4FV~
zGQZlKM-!aXG#47FxV*fxcQlBhdvkvkL%#6Iai|-hG!@qd>)eWNU3bj9E7<Y1Vo$!(
zoNzE;EOSh=j=9bpSb30M>oqhRnAh1jit5@V)k*0kl>5^o!sl(IqBF}<Z~PU%j@xUx
z{gknM;ln{&<!@!C?7zSLUk>lxi=Zx0dN@f3>S=gdOZzSO=)XArI$F99711|Vq6oOf
z({txHXfgJ9L^LdAHQu!XKo?5XN+kZ~zsOd*71ev;)3gv19Duh0xWG0!EV({HQ?k<)
z7PC)o_m~w1vp`ovuo~UtID0v(`!4!ZP@^eobg|j31Xu_ub=LX`XR6ddOSG}bdWL&B
zv<g0hDYP(<%WrCR$oyokvb@aebvV%#!Cv~cl|l6Hav=UF+*=DIP{N}D0?7{?@iJH7
zDcNYz6h;=g!8U0&o6J3xTkggxYHBPlgTDH$`cnX+p`~?+pZMtI+^lb&!x-!)GhZwP
zEh#uj$=bnBw`iUd5xfvgs^;jad_#V4oyHtwgZ!E>c>w<Ht$O))^=yB2|7>-Cvw!4f
zs~J?8;>o;Wj)n5EOz*Jd@!f{mt1SOcEF_zSq`Y?%a}rPaJLe~k{c!ORjGwfdOwZPs
zNO2X2|6(Ay>R?IAjK(9$pD}&?iSJ=7&*od}d#})t^`^C=p;802m|zty_ZiK|h^Euk
zMkBlS_VL!L(<C?X)@>jzV6MjOV3~U*UDECv6zpd1zSOp7YDks^(on3B&RX^j&@Fo`
zmokKXb@?>MPh4*B^PESnzeh%NVm+eJ!hZn4{y-XO9RG+TQv{#kJ}SqKhV1~%l$WBh
z!SFj<US;L<=iS|~BE)BQUQ#*q-}p^xCmkS5E+sW46GBqyFaGWq8Y%hU@YJ_U&0}J`
z8U@>M%_>z|1ghC!uYHcg7aFF_QYMk-UpV6vSIqWh4V3b2oXRX9b)#G3Rk)hQfP3@>
z*!9Fd9Uc=AEZ5$Dt&yjLYNARVm#_Jm74+x?(gOZ4<;W|lbF;3m(_h-k<nM{obZVPM
zkXnMnn{r=mBXJ^1@b_}>^uEBr0?eA#Y8O8Tw+`HJbJJHfIgn>^A-|hnC8lV5Jh}H!
z#W!v~;<s}ngFR>RC-UyYu0P*^HvEei06*_|;(Ztw-n`jn&!)j~lBeDIZ}mF-f%{ts
zAX>uNTBV(@{7lSb&`Y>pCS4$q=V`GpJ&;g!`ZUAa+k4N;yVh=5${r}yLEkHiF|y*p
z3@L61WKIbeDkqKWeQX2I;I9j*UB;1%7M_x@95Qp$)?1dfYSe(?pdh58=TDFa^319M
z<;4+Or1T+2j;aD%LQc{$8G}DWwsv*#$4;OB;c$o`<=)m}HOV7xD2fBHK@yW6j84}?
z-E_Qs-8U<pDFKknmN-#FeWv!PYT=>T3g7^EaZ4e^V-p3A%+7+a;tIDm)mInaCN9=}
zcp`tlJ|a0?yiJZs)X~!)?GcNOxdzr@x&eM;W*)S*dKyr=v!Wk@65SO)tyAbKadlJP
ze{W5g8bLjHF|O!<(#4vQssn4b;>H3_U-O@VQix1ifCC#6(>$8IFtbI|F~f;uk(Iel
znSZNc?Dq#9G!lR_d0X_#zO|hx&WJoLy}Vc|H3CS6dez}GwRrbETkQ;@k{AV>wLT#*
zT5%jz9uuP{!Ij|j3E&Y|!QdYqesu_%S53c5VK%$B%b3-`=8)0BK~V+Y@a5XuUG<eu
z2&OY()l3+K^Els#7Xi}cH)o|Me<%xIo6;E4Xy~&pjAhlNLvqAarfC@8A4VS>YIzC*
zIQ!2^3~?#wIpyTOKIu4FLzFg8>Bfnd9msOaQ@gFRwVDlKM-_wJ8H#d)$qBi<b#VUr
z-`txWx2e!5kx{MZi9+jj(PkC?%R$L~gTZHSE`MM0l>YgYtlAlJ_Roh0xPx8z_>6}-
z5MAllJ}-DF^wxFZZjydO>X!Y?!bao|ai#O_veYU*AMETtg|#j{AJZ=t;&Gm@nh956
zdQLbZk#1H_>ssl4W1_kiZrOi&D1L0*q6)0L`c&nv^H5jWy68O`X^7?+mtSCv{QHTu
zr|UE@^1C&+L&(8qR$n`L95>i|u~nPz*#yK1K?Lf5{}P-wHpu#qiAw#E-lNCZX8>=b
za4Q$Csj!W&G*`1?u1ay>If|2#Brn;wFATb7GCFXPxTY?M!V`}jzCipe9&XPCrFjy#
zk(9S$-T{B(!QPdi#X;6|4pVXD?8&%4d%QG;*fyj;_Csa^gZfetc!~?YW{&k&tlG+O
zq8njGjc+K%!K2M&EqT+O=&nO<ezgHqXlXX{{Wk929Zt?=vA@G`5q|!yPi|<;R$b$)
zk0RRWiT8}+ok26eC)~Sev15$uUD@9JcD&)F<Jz&TKV_viSJT{aBs9R9Ht=>Z4!b-v
zY=L80_;cU;w?$Vo!}&5ryA*i!8s~qsvHiLWzj`><R(x7$zXdQ{`*-7H<w;qa!V0L%
z>?ftjcj0GY1?D0Zh9gkwnmrE}#*x3{pKf<u8eROFxI81pZKXHa-50O*I?4|}-##xj
z3Lsey`WE5)#XpoK&@xkP&>7dWvs0UtymP02%-U}(S5-0am~ilfWHJs(ui%oy*|gk&
zhB!24*fflNhzjYe@y(&-e2I0d(bFA~Eyd8*V*q;vtdAp{P|qY2&r+9D(3g|W5k{aY
zRJGcT<}tf24S>kXp%#e{W@!n9o1ZgEoH8A%(B<pBD=AnJzdOeV;`fao1Ag#1CZsqT
zOAf&CHEm6Qo#P=$RVyC+q6O87Tnjr}xr)6tbX*(pCx7|)IRBthjw3W6K-IuBr(~Xe
zpVDl4`Sjm2_@%{@&1%)TTEg>_nx}8`pXNfM(q0t^xv2jh?`JwO@49=Ju+y|uX90pd
zt+o)l8UFg(k#YuK%MU^t$7ooC42aSr#VESzdsG(6<Kbi-*RGfM-qBGq|Gmw)X>x6T
z_(gyExc|A^!CCgrt?A7_p9Uk(6(XmOY^!g$U8hTNk5}r?Au+{swC+5}wK>ha6T_id
zrA_hjadhim>`urm!%_eiVZCs-nG<iASf(t$6*2o)la#~MDDnz#W`YKO9YHGNQ><%~
ztdpQ;Igs9g_&;ekT*}Ieidrer_D~Otet4W~rm3NLuDbBv-5JKAD`1im;0j%ySc~8p
z<Y?%5xBpqJysX|i{(km~3Y3CLfSIeG<K}~()k{^D$pN?}XCZ2=7NxrJEt4n&wv3rF
zemH7thnRfv(*>#DjF5zk!JpoXSoI*~))p@k2p?GQiW<_x2lmCikH%j79J_tG1V4U4
z2vcw(4K5fA3#IE9&~?)y9rIrADLYj8dg1Ohj>DpSoA7oaEVWcyMX8q?%4uj0TCSgO
ze>ehb^ddZ`%h<ur4d`E6JKg$aPlfD2KDBdl{^i;9!P4BZbv2gQ&Ua<+6u}0L2d5;s
zi3nkA=%RC8qUqlo-z#Ql#mwjY0zU$qh`?^su=bjXe!_FO8&X<nSd~1|D@SmLO2n9<
z{ukPk=5*!j)ifZ#pon!&hj423&dPp-#%&08Uq08?Gu8&dYp9ihLiD^tQEIq)_25%=
zbcKk1DoM3o-b752Jwq$&w9<y}Q{8H$zTt=XnDYDL?)q{i%%-~aM~7j}IAy|)MF$JA
z43S{(HK7TvM7mlg_~^`8oo*k$Q9FN=pRX2@Q_<PpdiuvZLgUufv~Gs1i|9w}_ndy8
z6ZWHj_p(t0&w);fTLfj~@;i^;pO)GH5_E1L-pa*b#y`q2Cv(s`KH}fSX?l9PHueMG
z!Hsu!I#O?SvN@Jo4w~W_i*7K_fAq{NeKVqGd;{)<cX#j@owGjb<&U6cQv;eS5~1CS
zQFP08_}AICSoF}S1wHfnJ557#iVRE{Gb^>moh(ybc=V*r2ncYqCW;i<_>~*$<&?hL
zm!5!WmC2PbrO{TvHnQ{*d^1ah`mPRcmE%KtwD9jx7Iy}?)Pin3yZxmF^SLht!tIiC
zgur4Dx)#$J4zz{O!Ko&?6`(#PQm-PQhEJMW`orY@)Gw(#Iww7Y$dUEpF;}22!0{z1
zMGFm@`E7UHUGO5bwgET5E8f>I^<z!ozq0I=blBV#9re|dJo-!E;Ii`}HM!g*GcTX7
zFut`Sb;vc?dXLLz|ElZiTBwcfg#ITP$p15a(7?MEUvZH|-d>Oj3TygilJfkgvb*QP
z7iKW&Ty~7@$FI9a%?pht(;-J~5kaC?!+4jx4=m~BPyxnavzUj*uY_o}ww)WtmC{Ty
zm11WD&o6fWjZYn6F-B^qf9ty95WUR6-HfEaR$?|S)c1A%(LhRLecE5Hr=_~oJ@nPH
z6d++O5o0!Wy>S>V(hyce?Xxd)vk-%-b{h7L*8`@!tUc1=rU~WM0rGz;;K*vBUXP-J
zahOCf48axD;^yCUT`waIR>A=&CZUB#s_QIK$ZIRRUTTJGEn;!Lo%yBk0j8;U8p8(|
z{X1M><7pctt-ZCII6h;%wXqQhR#FB=qM9VyYv#0Xr4$5M1;DUpQ{AA{qs}{C@(Y*$
ze%VDHpKTD&JP?$1f6v_-tz|yq+xS9WRltrk^I4;QhccEnCsstVIsTHH-AaG8?S@NG
zayN&+iqfMWQ)=RmWpa=>*j^nCNJ2Ne;4psNs`9ACnVtle$~;;MLX~p8y>9)tYkYT7
zXp?L6R3Z=AUdv{flW;;}VjA7q2b*hzvwt3q$A23qfIib=>jNB$uS0`j=II<JhF6BI
z1o0A(A`DYEGtdDyZMDk@yW5%!X^Y}dx-TZP*aV7LO-74H?X8hjAQZYBlY!DN|4vCu
zQ(z{f$;O%)zSmaB;?3q>Bb4?cgXEgm!0zBVbA(4|@OdckmaYYjDi!7E4I}$Pk_*(S
z6ZI0C0m?N3slO&|M_4Mh(MW`^CkPDG!Ea9`ApFoUF)XX3bK_=n_JNlieeM&vuX2!A
zbf2VHOtu`G8a}g5)9Kt9SXv}hH)jLFw#bvxTYix|rLL_lZDE(^M_9beMCal7z0Nkj
zamsI)j}d_vZ$G4@VnA$_BC<3qFmKJW+aY7kggU7(QC5x4S+6R8%`VCUOafH;4LKLp
zNm)14ztO)jz2P=3s5UB?b$yLW4ME`t`}!3##+HhH>JnLd(}GRCkaLTa5<)113SQIG
z?2n>^^|9*3TN?4@+UA8{Y>*~8kBPrRjY^sNXyJo((RC@5g1|GgsOqlBYDj}d<7w%j
z&+u99!-!Pcm=9%2XhTQ}{1#Espq{-xARdm#=!zg7Wkid97wU&gOy2$7ldE}K#Eh0s
z!^Hff5;Zgc&s@ObK8sOutwDUbxKJ%_nX5uRI(2=K+oiN^xiIaUSL5y7H!D;OaCnE5
zB=xEiuox53m0ybb@DkSSdTZ|CYwrRhHf#x;ufN{KEmei=xeqIqAm}Ktw;xw%sHXCp
z6#|uk6gU0Gvi4%X_OgUK_M;DQe~`}}d6;fXxFp`r=WtOyJ)4>iS!+|p<mldjGrd2u
zpigJ*RpA7GPoP7GaA~tZ6lMkj?ytaL9`E@aey@;p`jW>dD2xx*9}kb>t)Q&#S^0^m
z-R(0ER1<vQ^Z5F37o(Ai)AJLQJ!MsGcnKH!T4Z@-0JGv}NcU^$-5W0;Ot0W3_aFTO
z4w3xM%Vl4cvu(oV>6<qw^A@$m4<-^#E=v8`H*4KsO6eFA!$*4G5c5_qX%j4<j__Mm
zQLuCjYP8(U*3ay_*$8V|!kqy#(3TC&Sh1MUO=Cx9(I(V0YD4++ETD53%t7i_cWG+j
ztu&ej5NQ~bN7~V5GV%YGMcpW*mMIE-19H+`pR)Qe0CPE0eD*@P!?l4N-D)3%$8?HD
zMmjSk#f_Q;uh<>8#!cLyB`Mp#i~Gu6mPsouTxQPnVQ1>sg~XVs-@Chc^mb40A-v`D
z!w(K*B^`Hw-`)ArMRUZ-6r<|DXAF>0mee4Z^c?wY-Z!A<x-c=+xOGNHAmVz&_04ca
zBGYws3iT*Tb@UBvDY`GruTGd!3!G-+C&5_>{YVk9L@zTCjq%#s9q=^+NMvG4-S2~;
zQ2bRYq)T<h>abG_6sqv<Mp$Ib{<)uQw9tp~x_Z^<xq!pK2+|&x1~laOOjPvj=UJk;
z_wG^UxLWXDM{w4ltG%<Z`d5<?8{}9k7kq%jJ%__w2VQLAuJq_01aGqdNlq{WHHtvk
z3e5CqXsY_2WjtzGqVXQnH*_pQ^mBMUd5vy;{LXLrMfO3!-2s}+L^3-hU3YX4#&byi
zd@H&wngbaRF;{m_WaH=dE&a}_`GpfpWR?0bK7a5dF#Dk7iIN`HnaBXvKm%s~&v-6K
zm{iKCyd?!_x^qwW%S>%eAjyUQ>_>--q#Z-=2{Q0-KOiy^<(UFxMp}08$F2nB^jn)_
z@gaNZz;Kh+s&FrK#yz5!YD4ZZ18W6yUWRblGrso8<F|jiD1X0ybG@35w)*;Qt;IX;
zefT+`Z$9|8G5x7>M5tuUjm%YnFMD`9LU)9Te|8sLEg2j2yF(UZH*I`>eN9#b+Q7pQ
zhuC@_m=|`o#vggUkq(>)v8?SVAXLP0wXu<W+WRd5ZSS5zjU_TU4A&pTypeYUQ*y%%
zs}%4F^>l7Fw=GiotuzNpctm}*h2Th<{yVN;<VwD-mOPf^)?M|#XYTGl4vZ>L;aMal
zcYjTnDr>(Sl!dcEf|6uC(1>;f`FE&|!_r*o27NQrI8eTw<nw2VkE3mLt<r+?a=|q}
zv?b)T$vYv_N6QILH9|_@UK?GDF{lSUi%B`nfqnZYfUnpUO(v6_;sIe(_KsKlpUT?K
z`>U>b{AwX$$jG&a{BGYKrl&*w&Nrt+tPIGBT4V2-%(9PMra!8`?KT5HeLXRc2g$cK
z$>;GhtLmuy^jG6M-V6(*d=F~k<%S|^Eyc~!nM}rAa7+EuG%We~wo>qTrbcv%lne{-
zPwk*p(}({4PxWw2ez2BNx_b7g^85m%bN*Ej{`J?7^J>CLb++Y9e&nBGx!sP^Jx+L>
zFSD})rw-?%3|2SY^6!&>^~r$jIynCE%XowPceM3tlx{z>7md=76`kZsn`d$oOGv4Z
zfQ{?r^fZi`Ce~x^?Lw(#Way|q9*hG6SQx@|nA{M}dfzIQ!9Fv+8;>A4R0qbb%}f9z
zvrb#&4Y(wv-^OH=%pBhW^lwQ0;&u7$+s57-NL(k-m*O>Vug2s$xp)wQ_qeLCu7#k_
zQeXj94|JIZ6+KiS?W0y$aIkAf<ng9+76~X=e>z8C=N*LO(19;rSn*cA<cB0N0cFtv
zE+|xf0HK}$17B~asPH^&EYK;vb=63|C+N%kapC2+$-vH8&#bHW;Dtz;*?V^v;Ej|;
z9D1-y;6^k(J-s%F%<1%{*?b*r*UO0t1&P1lL-2aT=9lRk_J;W2MUG*F;~F<{^XmGj
zy67Ldr#qM1KorM0;bNyW84xtq%*3q)MMQuB+<cX>7P{Q`WkD_-JYA^7h7~QUJ}$Q|
zYp}MWSezrOE`g<7w>czpAQ2`!nu>;N_E`*M*|-c8gKv3pR79l*80^~=oFQijfHR^r
zMt^an+2{$;3mMtN@!6f%t@m~r?e0a^6ZqW=GyL?;KL9Z>!B7T!C7wYcF_7C^Ukmk-
z3bN(G(uNmqw_WDDb>ks#K?S?>{&)}xjR9A~&vJ!@K+LN=AEg+3Q&4YV9U=ZKnquZa
zgoX_0pZCQuf6x|d9cDF$d(aj8s~TRxg?wHuWd0T=lbz;3(N5fcX;D0dzt)6HH1Z|r
z_N58Ds@R_kp!#|?1*Yh$!?LSaWBaNOv__Y`6!<TGQ+Zfu{fj-2`be2`r$p!E!78C<
zWKZ7X*D3ML!1u1WYsVbq&q|Qkn7(?DRqf@z+QsT8{`1)<mzI&|mUdwm=3nNl7-{u0
zkarMO*nzCWO1V+>?^ik;#hEO7D0gm&PBlbhObt=`^~97BdzDdCjsq=x0xkwmH$lg6
z(EP{gyUZnsoV9|FE4#b}3-~NI_((ju7G17hjeaD0SFcA;=Zi@y;~=bPf1}a6#23;;
z&Oz$G9Uz5U-glsb2~+#;^v7G|F8%GDYa`HiHhRP>gZIQCu}<Z!^qPCQ)p9HaWQGC|
zWkmLSQFAk`2XwFl+sME`ONzatxZrCYdrzMdcm~(@F2;d(PnAdx2`)F&XPReXQ|Teb
zUs^G`9v~@vg*w~9HYb-t<ADfmRQ7%$4O?!KjI);*H+5M>Sm#oKDuy0y*oQb>-FQ>8
zl_&=?*5e#3-&zE;qyO!0+gSBAeV?yWx+Y*9jaIjl$;H~@0P>S}o@19=+(e*ec}Qqr
zX;gZ$1UiW4q1L~D?~PQ?x2JZT$^X8sUH;9F@C9N+|8@jk|5?!pqoMgbZtc$c`2#P+
z$sXyRS*)=D{?GYg3Xr*jK{)6lAZaRwdgj`~z(s(?9dUK=?q2lCc=HE+FxWj8g~t(5
zTREC5Hgw?n)C6^W2_lTZxs|L(TfF`e@G#yX&dp4agan7B$KVg3<E?xp4z!STed^r6
ztwNMW*}<lVf)&oM6SW%8`Ca<j)Ny~XK9~Z(^+B#7S}1)x=jZTR!L@dPMyFk9A*{?Z
zu;cYaueH71CT(MG#;z12F)?v@*f^mI%%Aha_J{jFjhy<nx3{$5aMwq^-<>(2s)xvX
zh`}ujg#D=$;Ty*8Pacu*vf5$cVOUIJ27k&Z9o^#5xY9#F`SLPDz7kTrT~&`aT%$(Y
z&Ww#9tB(I9t3~|%`KTK4*{gX$D0<++rh4Ya3@xKZRDe~7Ja5Fk&DE<CUu)?atlUi4
z9A<}@HOFEyST|)2Y)Qc2Op3m5Kk|HqUo~Q%;k$HlT<M;Qa?+;?2F*yG<mIdbXIqq~
zWd>MJj4n#cV!K_|NYjakw^mH`yVh~kD}|P;e&F7W+@rS_(r|yvue@i={Zf#Uv&Q%h
zySj1N4U^{es%WUZ`@L8x$&t@}u)g#2Lg@1HBJY52V1O{*U@(>Ta~eXL<zQUNCCfF?
zyHDz9ynwyRe<SSfqtni-eZ+!#F_d`g-d&e5S)*|rMvxMdLk#{iP!&sI*2~k5LTrUJ
zsxA_^>w%n_gE|Cn@|tg6<jF$UIX8dg_ZyXKvPaoid3?PEseLDG+?>L5h9a|ue|Pst
z$0J<9;33l2R&DoaJj>LhYu6kCB&dL%SHH!MxhxnY_+p>lg-<C;f5Yvmc68u8jh(5t
z+b5LZt6ytX&weN*ViTTMi5JUS!k{8!(#@^bYM`OQ4Vo@x##65p*t<@7C2eypN}6t-
z*I?X}+SH+V10}$|hyZU<-_H!{upZ1%_YVz_PZo5L;ks|n?u=w+cMva!QZ`!MF5^Hs
z677FR_gk^U$20A%Jn@zG9PQ1^#@xgJTavPOqN~Cy<_0jl<k16u^-1IS>y&TG6Q-Dv
z<<{{2u<$?yKB6l^S6m3d#{)wHEE#Y8>#jGwrnpst%;!zqj#Q2(a6}*B72#M`V=Uh7
zv4Ep6yQ~J1!)>^j$*p?2?!JbY2sE0t=hf|=`X-lKJ$7oLonj-*Q{;5XT0XUlf49}_
zNv4nMBN+6CWmsN>4-WKa&@m^Jql+u{;;g=?7>z5rCsKM?Y+V^NH)ao5uJ=j&qiC>v
z`u=a_f%6Bc{xB43iksB#Ld<z17fazMktqWT+Cz=!M_wF9L<a4@Fz5Pyv%Z{Plh#q|
zApK52*B9z7Tx_wo2ad|k=`2nBAVfJ0mBi6}Gkv7N=3emM<VZj!6&HCpk(dHssyywT
z3we9%XwWjd=C0bpbcT*7_`6xmTUjINe{7Au|E~pjcI5$*)&BN_TYa>qhqjUazV%`d
zSID~8w5NqTp%w9Y{dr*qyAjlJo%)^OHE_lphv|KHJOYG9b87yV07|)!`X=0xK?=?U
z<h#}IMA^3vu(<>wjjzz20Vekwg#~GbZJu4s)b5ElA=RTrK9hWssK48Zjbj5%Wv?u>
z4T^=LMKs)KAL$Llv`B6A+V1h>Tgcf=^1<ebPtg9))k@3Sfwliauj}^)yuVfzXkUdz
zQen)xZA9-l_LYSk{1YkX1JcB{Oo28qvVLi)JxDc(;LjW1my;QcowHF5c@Y_Tc_Is;
zv97hmZt0F!M)d1ENQvpF-ziVeK+=l6DhNC}0%Vk9clT614^wLE@95FqIosJ?u9cTM
zHK%>$O*$?enBVGBJ^<lrfNUNg6|?>vGNbC*%H6$o89pykOx*HE_@Gd93cEb{bJYpo
zeQ`ZhSDI<3PDNQP=X9$VcGFa3{1GXxa-^}Y$fi+*!#mENsnA4L6D#%#6kWQzr5RW^
z_UsMb#$6vaqoLKq{>-A^q!5#ZVu0|L9{VT~%}B0Z*Pkn06@Gey_j$Px(!x>Q*?Snh
zR5jzW;7{MUQSw2<h4;CWx-bR0?>WcIdW?yj%t!1MH}j7P-8*2}R(Z4O$=IY~M>95u
zfCah8WAjJfm~8F3s<7ka?Zg{ou|zFuY!4N4k;NUXML)*9T&hZ8E11%p+5K%k(kee!
z2?BM?zo*0G&H!VtrY4BU1vNh1z~C#fGQ?xDcZqAri(qUQZcHg1G0z*?6E+j#8+-ul
zyklA8=QySq>P)tNF}Z^eeQZ^4MgJ>tT${1Kn!;*)|JrAGshOUr1HRWStK{8kzgJ*r
zWb+g6=#5IrE?t;PTgYOd=9hYzCVa>u!F#51{BEyU-;IQMd0`zaITySe-aJR&ab(fb
zIDXeXx?0ATbl2qu%E3>jkWC&sHqlPW0d}qd8Sq<R2Qa#@sP0imeOfrNiVjXX?OpN7
zVHjN7**R|z3v3Sb1!5nSwB5%l0;#9DpyHr@X~yN+IIl*olkw`)LKH(KRD%$VlrX<<
zuGLpZ%kp{9&Z;jsuB_lg%IEJq*%?o{)>5OZ<gjj`1?DULm0L<BFc;ZF#*2kZhTL@f
zGUQ2(C>f01x%!u;o|!_={7w{vShIK9IRT-sy!iHiG@bW9mH+?8520hkA?b)RvJQ$v
zWMp(4>tr7LWbZ9xWM_{f>j+sHha3*sA!KJKIaYYv*~&P!@A>@jJ%7UMcCPDsJ)e(p
zUsmn@b<3>cjaD^NrJ>M*Up;|@!|jh{uoQLb-pX!~)#vSO+v@c+eGdQ-OxAP5OF;2D
z$`@zTwQo$UwR%x-I<7i)>4|?b-$PpOEECN!9(2OYZ}sndtZ@zj4)ASqcUJD@)|aj1
zUmZ4HbzNT`h{&I3cS%XR;Q!vu$mna?YRM4EeqLPLo3PT0RzXgXe=))9RSrAnlYQp!
z8iA<Tvq;WoM$<z8hOs@4{oI}S(2-x!YQ|m>_tSBT-&F*;o&*L@<hVQ@{L)R51c-fq
z{iWFHAsLzBYu33^4mr1@2FTxw79)|AT_cAhu>_`)X*v+>5vi-?uR&yr8Z}-bNal!)
z@k2vbEHhr`sDrjq(gw1&mTQrfCEZuN{Ny-zy;VI$WVGS-AiI5onbZTCS*D0P)K+m&
zU%-g;o$re3TgR?nT4X<k@3=mvz*-p_4KKe2OK#oTLyT}mW~P!B{OzVC>Wp=(e{eM@
zeB{aQT6D7f*?z>Zv;XN*l()ONJwTNEmLn&O!rwdiwvq;KW117YD&t?X$v?u^`GncC
z@}m7)^Bymr%m6C{1pz|`K%EwMpQ*iEZ|U{9fP;Si_9o$j^6Zyfq@^gLl5o<tWgro=
z60nyk<`_rK82d#Gtl~h@w3m_0ITG(RzfXf`9zJ~H`4uFo&1Baw5=#?iNWnsq5SS^P
zE3t}f05vi*7|?Tob?wcA($g!cwxH90AqwvfUVmLMGEk}rHyrY9g;6{jlPZ@EXW=`H
z&J}N!;1)(hRXkj8*RPjIekRDyI!lsrRa_mo;hVP^XEG@>+jnAa#4duCsjXF$l}zz|
z^WO(A%?6q|N-ZvystmOkMu%$V*WR4{@p}5M5BFzMR@}8)4G#dtev@hJwiO~?3TpLv
z<b~R_n&j_T(=T7WB4t#*E<|hw7`sK^dC2rc*FxFg&FL`hUhsm?r&l?>cGMzO9(nQs
zPonMO`qxbL1hF#fnQu(iQkfjxHsiif_{<y$Rh)d}DR1vRJZ|Zm@*|Up|H$y9>n4$t
zmwWHGvvF&{U+Wh0j7;Xmy^9roEGG0Q^ok?K^Fi}&_M2_il#Q!be{y#wQmk;PWn$d5
zR?*-hA_ahJ$iQ=}f|%#+e(yq(N!lR6K(8Mi29K7SfYAV%y|OYm>(@{z>g)+X43nPx
zyMmAGYhM)Dt338d^$GX;oTvw-l6WVN0u*@|edkNS@4>ltFo|e<b@_yIt@*9_mo|8)
zas5`%2qi+IyEt7Zr=B;;eya}-t6L$z<E>i(41<T8W@YKnz{)1hE2YC4eEAfi=*VwC
zl~``A@z;wv{_QPa@9piaeP(A+)lBwHsE=Tz#;&0%iD~ujANXEh{c}FwE<fD7I-47o
zCGmByFGjDoMXr`cBTq_0*ZJFz`ul<>AB_uZRs*mwN}Z6szeOK}xP8qO-VH8_9(Un>
z30l9EUJr+l+|#+mbvz&FLfWn6SDY=b?T*McqTEWH3etv}u?=p8SlqzBOO^YjJ|CX4
zUu%zi)e*0Qc(@hc(zhh7q!x(4Z@rF`jBMUyQJ9~D>ms{*?kyvM>w5H9W=2Ww`4-He
zlt_04yo@}qE<m&gj6hN-y0t!rc19;wyHadKx>9m8))s?dh7^kCUU~0%OP-Zlo87dG
zPX*@-J)j?F{u!c0nzTKs^?*+s{fOsX?C<rLeh}}jJLD3}iZRF=Gtlw>T1d3Qg2rC1
zWXVNQ?t*(ZGA@~)37s0b(2o-`X<kFp;t7n5_T<*Q_)nBx-<v+glC6=)4=L-SB~+Zt
zuq!+EvZKqX|K>>3Iws}%O5s9v&Yrk3N3@Bm+%p**Xt_Kv%2^ycLuZ!n8!uJhBC`!f
zzb#w+ZM(Y=dNz>})fBHkp)G$poD_0lL$N=C>MAcFdAJPfqroR#ehY41ECxf^Uo@^7
zrm)8bFP!9F!g%CO^4)y1%MXNRO~`9<iIr9LYslx>>kL*x>)PJYdv}9FuQlUQ0D#Mu
zOnq$%fNi0Oa8F4C@;1*rE0*MGslQqey*d!p)XsnQ&eI-luLi*poJ`(>6MeXkc|zUq
zA*`g1h_`A5$eAWkFDBOfB4WFR37=rIFZ%(?^^U{Jv;el7L-5q{-K4(1QX(&&4GmsO
zSuD(R(8sj2Tn--%KN;<<ftC>Gr4xXWQ^dTidYtG)4oDF#wJx*%mDqYfm`N>+1>4)#
z3=zN&=}?IhZf_OgD=Q+=@M0_h_d2y*hva$4LBdjT>2Gm{j>QMazBg^s?C$h^(3OSL
zo7WS&V`)dLc1W@4Ko_c#0JPA;9-)PX8B8y6x2w!Bw!XW#>E60nXUK=j`CzZplN4@+
z;Im3mxxlO6(EIPscYIy&J1z5mxkp;)WT410lb&0?dGJ2h!!?!2$Jkhqc$HB(<|oO3
zAdpnClPrM6Ab;K*nPXdLY2dz|)I-io8kFNGaEKY<L#_BHE^g>*!I~*P@n7+ssa_|e
zB#-}J5mHKbXEmW}_xQYJ*2u_Vwr^H-`7#(S{g{kQ#v&5|!PPTC0$CVGi|?p`0SHPD
zQ-eotTD0H0d8o4RJxmb<CT|>Nykso+bws`rrvn1<bh43B2W~yoxBQos8(r8V{gRdo
zoa<Ncwb5n6uM@2tToGjeAgvI}CD(^A6XQWAo<K~zm|5e+)9N9DKa=-79ZzEM9zuJp
zTzOR1x6X^YYzDfJz(*Zh=Q+0-S#1!H2WyO#-p7j-yu$mKtQmV*S|Ch3jLy5HH1%Y(
z?$yXm1=CvuA8eoblN^P6CN6z%9_TUKB<_(oghwJIT%g2=o))P&Jm_#t73pH<Olii~
zzzx#?{QOY}K<Swyp6hVejI5@vzabs3GacE-ZgAp(M~?BMs>wac{<Z{>Q!Krkcg*Gc
z*|Q!0kNvLb>iIwbkPD+PlpU`Bd{m^W?P9amVYHn~Gp6ec$2*;YLXdSN5})lt$!8;*
zp!4DEmOkyTV^*o1?7EnUu-Gy}YU<iAVr9R-HKHCi7}PzJ{FCGgLm~|JlElRWN6$S!
zlsbh<k#zsjgJ1KXeGD_v&_~Z5f%E{;Ue^XT!V=mzuoEsSJ`o;k<nR*yEKYF&gsVG6
z&`PY0ztn>GjJT9%%mewjad%vVE;w{zhLt{UHIL7NoCfvl4Xe#i#}To{vmyO2M#MLe
zOLyD-rAHI0T;H<OysUjm%vy8^z2dL*Q}Ey07%n#&|4KJ<-JgFo-F`WFJwtxAyl`H1
zy{K>^GMPQ>pA*TND?Va^kB_9d!-mAMl8HJ)AgW{%1XGd`X|d(J<*yVAuU(B{j<;J9
zqFUaSGhe3GE%k_CeNH^K(Wd=z2k@sr<MP-dDl>~UR<8_;F%_(hmDoBub_hN6cyCHS
zesPqLp>TTAwfg1y@IZva!qj-o7`NsH&d724la<Rq>{!fQlA~8i;fPL7af;hXtWG&r
zNJb7w^s#?1C3)Asf2UH8-5`lWdr7|P%03@hnDgEr4j<elxe3efiu8K&6pl0z{0F6F
zZQx)<6E&b<!NKmo3t^2S2|56@1a%wmkr5DE?UBvR{d4K#CDKMCQN#)k)DGN)@^&Fz
zCQQu-1y2ixhE92UAOI{gfTs|Nc$^rgtA~)_g>N@M#uimKY{``IyJ-I+sq?AIwj{TL
zam9~Y5p?$%u2jeS{LZ^n+bm!~fByy4K4?4HoL=_JyCR0}Yx~Xm46SZe<v~9iLwWBy
z@L-wr9!vbfY5e+O$8t;j1~ATQt?Nmpjq8;;kCsf|P`oi&`(08cTbumPc3RWZ5p@DH
zPgvMT|9g)a1(Usnxp7i4VK|kX`uA#A7R~dAeS~e9z1hH>jocBP(&(3df7<4Pr*CIl
zKW%xGP{XPh{*XFuN%1Yui&voUK=jl|AHcVb=eq^y+qI%Rk0R5zx7?7ox3yDwm3fro
z=88XTyB|IKt0j@MD7Sw9_%mT3CfNONeCl4zna<rPoQ%Un2r+<A8!|c<NL)Cn-MguQ
z$f~VPn0>09D>hytI56M{C_`!p8*p$BRI|r4iwZ=6*kf;yPB%h-hQ2FV_3Qh3@{g{i
ze2hwPEp;8Z3R-}?nwcq+^2MKEb|rA|x4b}wJPTnFBa*=_K9(=7Ss>nN+}H)S4<OYq
zSjP!tK99((*F40(vd@1uP=muEUASlJvYT<5CLeN$IQ{uVWw?vagJ-to2kDCd0QmU9
zTzT=C>Jw_Rk3VhJTwU;ERGz=x8=c>jaW^nB-i{;?3>N$-%bRn);C|Hd72p{dxc|X3
zqAe$PLC_OVjm2X<?aM2UtB$UO!Hw4;COLS5n_Sk#(85_yOnyj%G5h=%&lfd+8YA2X
z3OQ69gk!<5|KK<f0ktQ08v%Iu96^<p77tgc3*0k%s|A6qioTm^u6T9%DFq{p?QR#W
zy;v}EHoEP_Me#xh22!)<;#o0m!vK|jeZ=^*Sbce>aNWT$AK)Ki?kthb;o7(plOGhY
zHS@QAxeJqO8TB2(wq*)*0$+O7V)dD^28h#SBsUc~&ked6QaLY7yGRQX=n_mbBtSt;
z7ALB5$hy&8T(8U(pwO_@Ft^)0w%1&_*8+|()cLjQDpOB*Kf<D{YfKAcj!J|wl{5?1
zLSKQKON4WL-jwOpR+JBfqoGj`ypM`8Qdl`|RWdo8AiTI0QCa~#Z!pUaYA~aOIIO4t
zIB%1$s)b-Tab6?#KJ&-HCKB^86V6V>BBE}OMQD)(X3dQXpY$g!W?M?XzQNeA05nT_
zx}z$ZFylUZeIycGP>EBxJZ?1p!=P|>$Zv5qFtsxuupV6Wt1fG!q|$4jpD!Y||DUVm
z3r3~=%v$hUJ#H;?L|FyRJTZ8I7_2MlV>k!{xUJX(Jp<@)7GoI4+p9XS5TxonF4oFu
zz0+fD7@8~0Corj4ABt@u?zSC8G@gf0U`H~9^b9ApD)Ay5^335y`3C8RKf^v~l^RTd
zOZ%Yy-K)M&u|H8;P+ko_YI+$Or@D8MU4N9;bP#W$B78?PnVr&DJcyH7jnqHTl|X9E
z^BvE%Fs&mYNxLeyGOLAOYz-BY%AT!xu==`RzA73rk0i-kq1f5=4aR)trfxxcpIzA7
zKLh|WA-z)B!|1V8<pl=jBJavFAs30=i09H=Z#iu=^2YnX_<Dp;Sg@PjN4`SEf$VE0
zK&HUm>4ys9V%}y?`6spJz+^lzi8nY4t-viI<!88k9}4-L(TwcGLkK0~LoqHf_b&gS
zW@BOcg<#^G%j7%Cf5lmHZ!Xt*rn`vpXa4g~O8X}5)8c@i_<c6&%-v=TT1d43Wx(;u
z+0_GSE(8yyj`1>$k-oACiRE$l*Tv$pEQpmOx&zfhG!`nuqy};@{<V-02{rxxT_VSV
z9*fbPaTGt!qqv)fGGT)zQuC^nO+*|Fmga|?Esuss<&KbCbAfxIpQU6j4igpFU_5J;
z3zU0_(4m|lXU|CtFM`JzD@JHaMs6!DZ-eL}__$Kw_iiu=6d#>gnHUXO*UlX)F?>`U
zi0udeQR09(+an<R^EWxLl1d9V6eo|ihV7f2qChAmM1NA(l4Z#2FQ2veIU+$=iE;H>
za}S`NlSEj0B(suJB8xEgH6aR={7N!c+&kXiD+mr<F{;8L%J13KBqTDbKi_?zBWf0R
z&S~3LEjN#1(lyXT#&c0{`Lz98XM0~SsbGsi_Nl7E^(X5k<K+y7CbcW^yK;xYdohpk
zgk#6uOGo&zQjOwf%zqM}aA*HrYHv1&oNv3fqBus@wSTu=M(nkE)=BYjaa#kO#&^$-
zv|N%KDq*p+W_=jg;e99<FT6iIj+)1I8X4QckhamCS?D&q;aX5n|F#Zl^z!vk#qs;C
zpwHL-1p7AL6)nM-@Kq^$I1f`Lj#VFMh1O-N`PpmoIiSgTT{WR`{>}N!(bibZ!s*V!
zmFo3`!o~Xa#r5ZgKP~Qu4}x_7*y^$K^Ol`rVWh#@`JOvi5rW+bBB<GmqEvvHNW@3F
zzVB~#s<)JY<vS%Vemn(UTC(@mY^i{Utpv&FCsg^-Z?m3eA1`@LxIgU=OoeeKLWJr0
z(wyXS3F$)CXfFR`YxeV+I;;<(>=`2z<-lJyR<hLs>U5PEM=AK9y!yR^34f!vH|hfs
zA21N5eLnN29G>;8{>`%_x4pRF?WJoeQ*Q=d#z03aGXws<zR{3HT2)omu{(oYV4DiJ
zdrSdL{$k7{=>-4YDdMgr!KZB2cLmBj(=*k}Ou<#!Fc);Pc$1%Bl@xTD!}wS``^{QS
zPQPrtI%+?kOE`B}xZcf{LAO;HNKSz9CW5RfJhV*0(jGt{ml_STu<;5<tJ~~pM+(xJ
z{T$)&d%LLOi(I#YP=vw*sbmF|3x|=NH%A_K4-{bs;AB+R0z-XslL|g<HZBD330YkI
z<G7gTC<cWt-n}YHQn;dEgz_?JL~>CKuAs*dVmj@!(FJ-RH~ZlxcRkg<7wsjn&|)PD
z{`7HKc~!D^By})!g~6C~)tu1%eatrqrrlsnG-GGwR{c*{Y#T>I%cGPj*O_7aY}gM3
zg4fLC{+$3xj}Ofs^wTAJ@8R$0XoQzl3Odx2D{H`j2aYZi>6E_ySoq4_zH?CS<rvE9
zF{eG(cR7Ss$ZumGJ6Zo6?G%Ql-xRj@b03`RS>TPb8xm8@7Mm;6KKjn)LJwTM^f_tD
zg<PI|f<{+&)ee`;`An5Ie_BiH8EQ5`wEXe0YIZ;0t=F^BFv0XrAK4#_%=zUI7&xAt
z7+o(}jFgV|EGgR1g)lGwphk?`<Np`~f+095slT5VAq8`vrhoy!jisfFnT_F`2{ZY#
zv;o1dGx=6<IQdFa)c(qXc*I^+<tK&02FId0<qkM397&UU7aA~pxU$3FewjO&u{H5E
zYyQny*7Y946(^ldEL3PPq~%`B2(@^=#)qzH_okWM8M8*4jwtVx?=jynUSn)Ue!-(W
zn=)#UM$&Fa$-1tW;A3X!vw0p{#u3gO=dV3TRaS?*6s?$av45bN6iE<dsYsW3mXmKT
z%aY0qxcz1ii$O(5Qih45)FCO!toVTnE)}@_*sprSnVSj-DS4Ujp66&tZ!t6Y7T{ym
zap+2tn0%~>Txtv;49Fo{{-D%weS`K}k%`GJ8~xf%!UytiVDWc0;tHa@zkK9`Ib>MC
zg^J|VTF;Z2o{!)LoJ#NMerc|BP=`ndut#~8)NRg;S*;E&jxBEVFLku8!+=VY1*wzy
zUwrmzM-v5owDd8g6{0OP8m!6zvZ29D0dIug5rD;osg=#SKi?#M2y@Lttvz?728Tlw
z!VOSc7lY!^v7)1yb~xG0j<3-Rd!tS6YG%u)Eg?-NM5`ytCZi<;l+h&PX%TV$I!)nh
zc|9+f(DaWj^l(@qbbSu|5ZMjRM3#(+)pA;QvrWF6)LNizb8D2RzyJ{U+1Y=G?!THm
z>ILT)5+pexSSp3H%-*piLEw){0p3r^qGtt<P2<b9q8r@ezB@)h=z{qp_eltJ0~T!U
z$TUvJ@WqZPBF;Jh147w;VegG(_CBkwR^HG+^q-qP$+?3fePo#p<273*P^>nt4}|5G
zwuL|`qVTV%AMKl~tdR2mSk?UNM;=B7P%tfjolCpc{LqV%^|%MvPulO84=k#)e$P}0
zijJZ(NbhAPXso|A@$XfHVxgoJD^q6}6M|-~#cyxE`KX(8)@!%5x0`pQ-rYMCxmXIl
zXulf0ej)1{z}}41D)G^i+NRnI{+$6t!YC+4zR}uSdo_H+n39_7+EG<!m3PT2AMYVo
z^<?g{auqV~8+q9&eSZqbPI|p3$IUcoHq$U$$tFYiAll=bb~i01<U%2It1;x#C}gKL
zNj_vMsa}ZgQ$*2eUw-gcb9}TfK8r7{L?1mybgI+1Ic{RLb81hz<juLq@We{@{Bm!!
ztRpvgZ-9WLT~Z9HO`Thz$L`n>fSICnHt_|d@~O%f&~PMzrnC6<vDHU%KhgY=l0<KM
zz0U+^{K39VU<2_k6<-Q-8QrTXqF=9I`9zPiU80#Vy;Sj0fLk#Sw^@b}t3oD|xDWu#
z<CvZwrc&O{e&eKQYo_RhntTrisTLRes|cI7>Qz7M)0o$iD^aV#5AO4{f8D_y#?%dg
z)9c>3SI4I!Btd<zPZZ6VUiJa!bqiU;LT^95dL|a-IeRppWVT=-E8P@G+)Z?Os^u~N
zqw~)*X8{_1*o;pEs1S$yMN9_7UKf@bIO1&(%DQ6S3qJFKTR2a4N&)zaB82x=VD5Gw
z=JQ2jW%oDXJMWfB8A{><Kx8%UlcqtQF#Tq~?fx<Y$Gk=3OYASzz0gBFh0CXTL1#_~
zfrnKO@~&s9u3Ptl*0l*cxV^?ATYNe>>jiMg&dPVz7nwh_u4i}XDwciNGPr6FrgGbH
z2Ybeh$mIWQ*hAO!{^_RUjO!Nl^_q0S1HweHV>WcL0+|pinlaRJPP*_rdIlPY!Jm?v
z61l$!_pHk>bpv2LzW!`%il4!kBwBrX_O1UVIjjHsg(D1d(*1Ucx~^#o=wF77yi*;O
zPLlU}%`5FBUD3+3fj(en5`ZZQRau_iT_c=FQdDucPdJ^}=^&PHVsJv%?px+d(PI`t
zyDtsB<NzARb5R}6w-6P+?Q>0WJdI0vP0lDoiBEm5mg#D2Q{|S~LVk|<c`rxE3+;h2
z2^HW*>%wk>yvh~=x^0Hz0TYQ@WjYPB_<O&W_NVwB^rbLup}MXzmt%z~lmRXnXh0~=
zj_SYVp(j*$PO9xbt5)->nR<}5Wd4L^5jvgScmNu8e%E2Ijc7i*V?TVjy%<pyd{j;f
zQcf2){QP~rJw7;ifWzfAd8<OCZp6;|w#aNvW+XJrn3(Fh#yK{je1aA7IW*Rv(i%Pc
z`bB>rathfAObMXjQY$cBJhRGtwB}<#+ndQ$O~s{0vs`%>gO;p(Mc4#~*V;>F(JK+V
z6SMjGW8~3pv%9`6{kBM{()zIhu#MuHl>jaG^PyM*>K5S~s&e=Q<&tQK#GTp-MjAgd
z+8UhL=<i=#vTU6fz|slenMn>m>TQk1ig#oDkmqW=iwJkSHP_2k)n}RI#vi~?)g&Od
zJtq7(T`=;euUK}~)14nZnw_WpM^=B<DT@n#2%{|_kxUglV7y;80h4HNhsN^>s!7v4
zfIg<DN52)`^u2VSWZ*)_p8W0O7%drJ-CPo?YC9ujdz7tvm}VenYZ{cR*`inNxAYF7
zVY)M@_v9&&%t)7lZ_VLRbt7^Ihq?cCjV+FiEvZF(7+oJr%Cz2aHIq(utrtc#&NtW`
zs`l}x*$3>+n>h^fyUU;MZ-4!SBSpZ^9oB>68w6jQ@O0!d^hz*{h-iDr|LrKvL+
zaCy)o<a9YnULZYWsrP93^c27KbcEws=BWKdU0dMZ)#>!Vxa>yB>|yuDxOtN2yBLC(
z&@d(#m>IiN7$ygO#B3H?bH#T;$mY*Mg{g>$chus~c+er>mOrX2YG6?noAgIHwT9|C
zO!1u$G)l(Ry@Ouq+=-&HQ@m3tU{+u-52KB$ZMt8P@Y6Ao`ng)U=3@LndRCNJwpQtI
zH$#DN{DgCE5Cs=yNr`~Nc$}>vO(bWs*mZ6RGZsV;0Q^9N9~UsB{=XLhB<&~`qaRLz
z_d)c>glQmLus*$wjxH2>bT?G?=)zX!&mWiY?Busz|1}CZ+uDLw1}@x$uei0a#^4X<
zeQo@Fp?JiPkEQjhUUtiMw}qP(cfbMh!XU*+42*8;=#1oM3OTB3WwFt}7aj5qTpY<<
zB)%5mcV#O3l8!6#2qhp9{cVVe!cjAvkvfioRwGBv5d_<>%Q7^$0k{;+%g?_*M4#7o
zF!W=m*K^24IZb`;v~ADN>~PrCI^o~qY1d%Fs*pv13F0WxBV=o4BXQE=`f&t>1Ku|)
z-v$j;_9V^+|2WPL{l{Mwx~Cm?Dx`3_>2bN{aaM3Gt8h&_SBb^69qcId#vT=W`WR?_
zI9~`nIN9H)9hLW6UiowG5p;g>R?4DM``ukQ*v7UWmQ2;9s1gokdM#JNlX+lj0(tcO
z#?oV|`_D<UmoO#v8<IP<KHX5qSg)x@IAMSV>)o4KB3Mz4AmhF@76YcHzHMZO<?T+6
z6<~EiSDV1$sokkxywb_^W{@>Jg%drSEBjN<bHv~R48vka>&;q|@jYLZi%AV3iV&~H
zRT2W;`bqu%;`_fhSk1L05~d`bOcO58*DnBJRE1em*{34kLGQEQ&+w6>qDeWgwy}$Y
z-BTU+acT-Y>4;e;A}W8s4K0ywb(b>|cf#K$PqnpvVu>C{y|mLGe{v9U!^X8TXTo`7
z09Hf#moc*o)4#TT5R?q1wn?U-X6Z(fTfv6{T9c7#eB9J9vC@fug?p8x_fK!;;Ogqd
ztLh!Ur}<wtaR0n~s=qeoX>2-+?OaL~>pLbObIcVkPYy<-=kv|mPj@CQ^0i70XA3`>
zZWz<NHAg@wNPU2-M&{=k*W>M%%L<o-&;#x34gUO)!^^$)Q;X~6Pz`u~=<)Q<_{;h8
z?57?QnrRkGo`+_W!HXk1pEE;_7xQcXTlKmh^x3cv%#>z;a^WOBQ`L_Hs>sktf&fc}
zA~hBh{qms9Tjk|L;?Iwk5KxgW3q}xKW@=(oSw~;I!k&}MT|INNW?R<-<=n%m`>Nzu
zI8y8;sl~H(l&u00-wo&L0p|*p<2D;!+J~H#l{Qzle3ddnY^eSY>aW1sVs%xxHgM4o
zCL0gzo>q0NX`A-|a6tzdnPA>Myi@eX(r)Xx%Vb5pO*^HHG*n!6ow+uENAPG_w728X
z?3P!p8y1r8HH3yJ(;yK)YTS$(gm>p!{5(Uh#$q@KnsOFH@)sv*ZnI)biyZ~JADI8_
zOr=>;A`s6tcm#NvKE@e~u1~3Q5lwH=JU4D(n=xz2(k#s$Uc0)CDPDOk*<wsu!9?m0
z2bupe0Jh!l-3V%MpT)V)lbVN|<S2i%UnhEe-S13*#d4j5u;1X_p#j{1{r25jUS8e{
zAtp`)9O+qHZpLr~?W=|!#wZXE6hyG3H(etMcF<td1eTBVWY^ZJGOIKc`6GMR?WNI?
zX!O|mk^MM3hYFmt4q?$zQAc%8M~w_2fETW<=@k%Cyk|q>V5%!nYL%bEt@g_5ML9<I
z9>CN*(l#aXd!O$Elv*;%1)u0Gi9Eg|_((smVU-}OMDFdmk`UT}8D2jC!4`-Ba>j(8
zBkQ+a+{{=)z>pqK_9p^d@b@txXxHm6KAW2=p?7qPYR8y)fWzwEh)mB9u;WYrttbap
zW<Ei-yTw25)e+`OCL@)Br!6O<BrAreuOuH7Ug>MYvGiu)$cY&S0NPsR1n$lGErjk}
zZUlv#Z_HLcCQX-3=Et+{+rg85;ff4UR)-X+(;ugxhtJ>nFu`afX^NTQ-;v=zJ%Q=9
zx>oHwyI1=$JbS7glO76-CF3m&90Vl=lc6A4*S&?8!YtZy#Lnr<bA|`c{I~FpAxl^h
zA)~M7BQ2w?Cxwzxph6uPEKj;9!Ni4z@9wy}><QSNbmtz>Zu=M5e%{iU_vNT3!yIL1
z`t|aRtzhfY*MBFysu+W*rvjn#M%RfUCr!wI|GZ3?-CIqJXl8ub*1UPS)(g}A6LQDb
z&H&%9SZk0){_I7iWy|t_Qr!%<#pn#EAKB^}<Ml}vgCLCmUZw!H8wqv;XU1aQ&j>vK
zi0{8^lFAKLhS}m0J%<R=1>Z_zW9>||Du(Y!W@`fe8y}T-c-xoI#Pd$R8_b#p0!Sx?
z`8?1ur=C$zxpPX}kZ=iW=@d5Pe#rE&gr`{%uRSxf)#x5QR5%%*##0#bClUnV+Y3hY
zv!v_hWJ<cxR_^w3@lD^30;iBt8AUhUgj0y}-9P;1@;(_DeKF?)nOoky2x|UOAx85f
ziR(Bx14#QBfV9hy|MaYm41!HRP%lbHc{B`8q!wr1f6!F;!)`+<^ZxyNMtNqB&;K*i
ztq5ojIymPD-S24exISGt?Xjq<yqM2k2;JxrAxx}XGRRx6*~>r%#gN-iABhVVVZ|zi
zEon#F_d7{NreCB;L%B!jR_Mvz)wxTI>Scg|iG#^?_gxDT-mW~HxsJ`Zo9E6K+<q==
zpQlXrt**~=JMpJ<6<j6Td=m)qB8hm?%rHLq9S(+4liT4ZXwc;AXu=1|wbCR@6J|;h
zO-=*Cim&}I>*((LPVg<x8+_?X4!3NNtr7B($)j_^aJxn=v?sV%uJuKkROF7k5pzSC
z%T^uFYTe%s2028(fz?)X!@XF6D%VT9zWE7+mi)Klq72pin*bGCZWg4#qh#{vkV9cx
zlc#Pi%W@J);?$NhS<JoPnv<XiNa;94gResXV#m`BW}?Mn^a5RWeP>A}357$M{6<C@
zTX(>%Te3XtdbX6!uVlEfm}V>gmFT&fRD#qWIg`FIsyo`%`4UP%eIel148;8h4^r#7
zRFJ4+xi_Ooc8hjh%&OnK|0VHixZPLf`m+6+t$TlifizGCx3C30h3l*x9=;aKH!!&0
zIYl(<&V=wSTzAN}ABbG-UH{{_?6RL4Vz|2yxO|k+cKGwl);s(0iOU$$28>}>0T{dU
zW2c!6K)REUZEkP7RvVknpSy}>89M}W%=r3A<vL<TOE5@XX4kA(MQTt*81F|AkD3}e
zwIcYT(*8VHITo&tP}kBf6?c)~W#(QN02YIn9TOA#UqGU20W?w`R?lNouo5a<f@J8N
zOlm-KAu^ugos}9y-+-5wL8%n`IET6@>9MJ-%m6dXdIi6S1g7#+PFnawWiprxFR!Vm
zOC0dQ7T`ht$CVf_1a)0utKegdAzc`q4ZNVPS{Z!PhL-0YS+2L56?;Ge*v56%&}5Ze
z5$)D;M=&#-xtp<Hyf)>YzCGC1?7q#AtUht{fxf1hemX|Xd(+pZD#l7JGVps7h?`=~
z^<a8I8l>yAT7kzo*P|?C<;~e2ZI(>?UUm&)-9Fg0WSg`|%ev67)kZ`-T?p7Z_qfWc
zId-`2$`9O#T0i&Q>a#@iGUb7wx$|GENh9=sQJ^@GBG|_IaPH5-MF;VEZL*Co(y{U7
zsxVXKq|3sQ?sw8y+Il?T(wmu<mIn9tePaS9h0Uh56;4;C9rEs}hWfuIxBAmyHc5<&
zq8QFG8tnkz4mT2JHHJ9VYpJ}z=J=pk*J&_?uNrWISf0Z7srY)Z9w?7VEL9g*L#ZYm
zX(^Z{Y8PIn8}?=}<<s7Ip<o5{l(}Er170^`wn`dN%5hJ6Uz=r!&VBWaNP)3a_e@VK
zfi8OPnmeuv-hLAdhL(UMpwrQ}k}`fRQ>z8iqLHV;htl(5qETTX6dm-!HR!lA=#$#6
z02y&zgr0w=`=8slxyf}&f7aKiU+F$0ER-+PV8S`|c2)&&jvyes82t#HLMI$G&ex*`
zC!pZZq~**)57<VUK&i<1=dfA#LLz!<&sU|xRqPIY>}C;$T!PL<A%Hrbx2`3(;W6WE
zArRd1->A_G<Yve8bmr3bpD)gQ9Kjd;vkLzFsb9R;r$vG{_|JCSr*_YF40-es((82+
z>lt?u*_oo<`UVqTO{R}C3?{x_9+QSgZ~vf+h{gpkWhfn~X*DwyLlOozUd!Za<OiHV
zT<{cMJh$xkE?dw2_|xKJd#gtq%SS`~{h$gOfmU)S%(wNPz7AesE#EBpjC#S%`{i@9
zXs-Y-PY+mFjraI%$Yteh#pM4u!b(8YR!Lbo&blK~SBSNDo*WEmsoZJKt;XTld#8Tc
zf%}35Zu52MXShq2>BYk#=o{E#iDKquDgBZ6Bi*9CqShMyF#~rr4gAb90@EYG!63B}
zumjq5ey17Knf{vt_62bsa<P>EP(Qx#d*(rGKQjxZMdeF9L&kp9pM(#EUrj61k+svV
zt>%UX*m|v^Q5_)Mbym_+kiVWHHZpjhG3|$-M}PwWh8_#7O6(u+)OdpuW)Y5Ju#(BH
zW=0A1V_<5_QYD!mnyY7?7~}$})4Y|%bH%(B-dTamaT+jZo5!;aS@+e}A5Uf*<p(xY
z@RtvtE$;>U?#<7QkGoi0msN4xzi*L~dw(LWn96LU-*)pMX+ROOdsmfPVU*omi8Wl$
z$bkQPGW<V*2k#M_P(Q!j@TTI;RexWXl-7V3aw2$=^g7HlSCDJ=70Vh<`F{HmOTrFG
zDL{4B{oz|J&eAH4=~I1!wQe#eOB*}?vl+yH|C~`8LP>DqNac{BoMEo4G<}Sa5HMgF
zX@arbtc|b&*ZssG(Yh(1kvnUQhw!b-ARVEiCu_IM1)f8a#oE<TyAKcJJJngBw-<|t
zoF=8)QeuI+z@PWf6C`yI9f=4xeDe!J_6>|>cKm6i((~KZ-0q**smX(+TWARDBXO*(
zG816O*KgWAzvZAO7Oi2K_-g>Hlv>Dv|H*AH`M!=YQ$p^LhWz-*@!{0RWOX2j>DXHk
zf*q2`(5x6~I%?QyuEe?E@6+^xeeB%O>M!*ihleu5F<wstM4NH<UcQ%)^lh{wvolM|
z6fAlg;XzL?Lde$Y3_Tlccimb`YCi~QadW6WoeW)bXxopH)%fL3Q2g5V<#*+K;cw2e
z*&^|U&VIqO4KXn>>w|->wt^?MEeb*FJB=0feNR1_Yr-(#mCHb)*zM>zYqYl9<&bqX
z2!>w%K_5KJU<FRne&;*rqh~Z9$S3`-t&(r<bGFQ^yDt`+@Fp!^aKKi9&ZW$C1O2n#
zdx0Umfa-QH=dp&r9sULt#1^6Mg0Ex#o)q@=dj$_|w?G^*@=exGL@XvOY7E8nh69PP
z6juM1Ss{_inwgII7M}9Yz&N5e6Z8;}iGHZe3<szE`XHXi1W^3+JF2Wz)Yr#dE<`#o
z==Sy|E3QHrz!Oipu?K^h{wA_%zn1TYH@rF*$><E+qe(;3bS0-%nVG2IS&PL~Si6ef
zQgYhGl2B{<03Cz$F_~U?q~>_g*{Q<}7|ZEx5nuC5rG`Q}YiO<31o$`T&GapEbxS4<
zVPn3vSeVmigK<ocLw;z;K^*@mVJnU8X~@Rj)m*~Snr!HyCdVbMNXTDoMw?W&#`%sR
z!bIR<?Bq^Q?yR<nQP98Bb&l5Sw_eKA8p*2>HyLK;c27>G?vzyC19<Kn&KR{H*AM#A
zj?iuSv~Rp0v>Si&?W<eklXrc6eRd{-MP|BMby~3Zc1=MiqL!xY55oRy+uEHAePshx
z#cttflsIfCei+GR5DO}4x_KzojPwouoIR&;L&q_S-)s~tcM^}w?DgypL%yJ#x#y71
z2uG;F4xxx8I@Hq{DJLuj0do@WUCE)O=HvlpX`XYbFq30yP(lzrwanw752_(Szfiz_
z!~kieSA<g!xn^?BDte1C17quM9+{d<i3{xtZb;t!J>l`Fn69G~(+o`pk&SO#LbHZv
zD_>O9iFNQZ(NTdIb(wT&JoBw^oE~?8$rm=jFjXuaKv~!J1(4fNQ=Go5!ky6K)-v6k
zW|OZXC-ed!;q;*=sBKGC;iTD>?;xUu$WbwCre5Q?dHR;E^UGF@nF0wNcuJxPEH0e9
zw78xbz1rpoT|ZiNmXMY@nJKRtSwB!Wu|zO;$=~MeF6xIfnmzO1KaI&3o;^P4O+0;T
zN6B?cx)d$-*N>CF#$vUP*k3f6nosq+PPj*ghs<&<y_V4=ootSFY3XDYX~L=|pf)t_
z-sml^hrwJPSz50}mI=F9rjjQML_Rqg6Zk<`34{V7!=P|3K(TO+5;K^@6+}XL%aov0
zT#=mWJh+^xn>5dLNuJLvMc^_WqdFhU`CHNp!Fj^H5%K}XR+`RK@vlD;*c-+yvzJnu
zY5jU6-L85|6<(4VONlMFjF+pBe{r2^B3gtFH;{kuAZh7bC|Lro@V;^=$yf4*(qz(j
zPqqF)QU^wlYJ%Y*7++jRSZk1JLDYJ(QM$N*6~maxi^;#6*uns@e;zvW7Temp++vh=
z`$}|haDb@9xjuhLdx>4oOGh@$-j4$Hb&x+fxWThnp*KLh{6Z`5MXyt1pcfjjcNO}V
z;p(|`?$w&dwU%`5Gvdz|qraODR?@WR+x<LR=Hxw>Rh+haE?Zg}a%CJSz8<yi%?0j%
z&Kj`@TwOiw|C{-$Y0e4n*D@y>!jzV;!6&?84b8s)K>mwq;GW0An-aJGC9`i>xCFoU
zm&(;r0!sGGxo0aL2P@Fcb^IOciHKp;D=;uI(3}Hu!O&(juvZ)x0pnVmH5J0ha5;cg
z`?o?x?ahAClA#K1NTNJiUNoWR)ksqbZs4cWt#BzOY98wU>c+%~xVM>Ml#Hu&HxdI#
zIYK%Df+beU-b^3iq7my<%oQp6u830-!G@(|60)?n)_`#F74k&ZYrVu0<J1Fx9nPP8
z*b6s8Of7%>)R&*BfO>En=4^mT{}b)GKRCRWm970yT*!>s0B8<Oi2zjiitXlqjS})I
zk`%zwsCI_^%&9a@;+FM^`-<d?PG%x#)@B$bUx;e0i*qx6Rb@Uad-;^)_MLeoCW~!F
zq6Q}H&5RqRq)go#2YnNeS_};I^miQwC$3LMuck?}!Sd7V#_LOm(B1X6ivc6GffA?3
zj~}xnP!_-Ty>7Gi6m`NyZ5Wlev27N9^*%4#SS%>t+9}ylV&=>XJ#Lz)lxy*q%F+P+
z-JJ`B+xE$~Yb5k6`ZkL97K4j1%DVRdna?&H6;pF%Hh<s{#^JUnvvHM-W0)vtiSUa(
zIWCos+LF|8Qmx(MYxiz+I3~58rTAE$`-Kbp_|(oBu9DUW&cpo^X<{d6^vggln$+Y2
zz)*oyNZ0vwJ2Bn0*PPbql+1d<H|y;{1-g+b%+EiqNN3c9=b_bM;P<d(PTrnh#2eh3
za<5(5=hGKvT*=R0@F3LT<i94gX4A|0%P$n(Zww8g*6cjV!!WN7$CCb@%&5aDejo=z
zhN@mc>26S$Vd33Y>}=GitwO=))nTn=d6_n7u0kXdAZimLg<b~h<!JFKqPb|eD$Uvr
zzgXAKzq|ZAdn|K!>07_s(9*N$IX4vk1^iHJJ%N+=U7Mw+F+q7;V@+I-rTvVp{jW#p
z_5WI|sxCIG+Ww_a5@wG{J&uHp4Z&X0tsdofdDx8jyFK6P-c+YSyZ-Hi=7O1Nj`nlm
zN{gy`lf4Fx;H$qorTGNOy|Gf4NiDoLadd<?vw>r_?R;f-PSLjbbMHN}@xmYQkUu2i
z%d{5+V_g=cAe9V<Q{#VjPj_mk^;5)z$Yd3AG+Sk#266Fxwr3A_`B3-@Qmt03NR|L<
z{R5w$;avOg2IH-cn;J;|HC)+dXZnCBcS%PKNJ0RPaprh?8}{9=2#52VeZ)=kFftj!
zdqam=`H<_W1&MB^{2UHml6t2h09O2L%M`Ad{Igk9l1Ce+!kpAQK|#l<tfubrrk)sB
zzmN@N-B6w057fAgx<%3n+ZsKeMso2j{yyS&uew2d>+LHr)k~@JZGy)Wow7)9jPFz#
zE>(r(ljY{DA<r_)hQK+V0XTsp8ley+Aaj{83Am!cgVi9*xQu2pmzB<vc<3r(<iIeZ
zm89jW>(=aEBUL>tJZ+t(HmMox|3p?k@4<ulub027uGd2uvPMQZNW?}Vk@l0H4tt>j
zvezq%f7h<2^;;qWkS4V+&15L=Ei)+ihw8pp#TM+)jEiO&)(9H*SEVjc^OVLsk#R_;
zaCouBx8)|)<mphqOaIPeJN1w8>;59kK7sSA<Bqq9i!;`bc_hY51ZZA#CW9sK(-(M-
z_+6e^Ph)zzVu-iC6${z`<^2^%O=Ci-!mi75PHtZr#$q}@)V$JA7m_y<E-_dQ-YaTU
z5w~e^G1@x5@X9Jw#Kdx|&@jef>)n59+yUbgsfrX|kcHdLt8Dqoi3${ufGVClh-Bv`
z)1F9S9!KSHrGN781b%=Gj4cmSb=9@3n9-#5tz#k?-WXx~Ryf&?n~}*0p9LxYuSgq{
z3@sKtA!DTkrZ1XnM8;9yp=PJ*LZ<*JAuX&(s5GdA+pTzvtEa#2aRpoRd=@OS*hr|_
zOro|hYD)0$D|U>Fl=`ib*I1r+V=s9V$wZq!X!57^+t<cHM;PcO2Q^Lf=g)T<*i!VZ
z3^tP0K+ZOYfB(km5NMrnRQ2Zgrw3`{E-^6-?+54H&xh{jg|1e$4h(q&?F}<1oc`x=
z{d*zgc%;^FI^TaWp*Qot%T=%bOujS}EmX9=e4=uW{SiF_-|+6@ddSrC#bPP~_gi>B
zb)*ZT48zF?b;9;#R+NimltX_kUhLNf5_KRH67PztRYVm$11{sn*%J6Y;4Z%Mw`>lx
zD{lrjY(aY`Y92ibOIBW_*?RJw8N?%0kP89mE1*$q5FTzawf9E<n2c}11$A{0_RNaD
zV{bnOQ#^jr0f336P<>DJFhc^lbO)4LRhML4sF4sVTS88t2*is)O(XR=BC9@-E0X*z
zmjhdZkg+9|T!O0lM`^S#gY+GkT!Z0vr0rKc2*#a?iMQ*eLO|X|VVJFvO!RkeG8nlj
zM33$%TyzdrRr`d8rT4<2ypUtBO1m*|{q4xq=`8)J`$gL~c^DtwsU&eJ_(9QG4+}M*
zRWw+PC@;R=n^zZL6SS`jiqb*J;+=P%Gl02IISnj%v4S7^Po0l?iC5dD?N>*#B5lU{
z!)c?xO{ylJ{}5@r=(+xH%cA9aqt&fNNoi-gt0<yp>BO<=EAV-v8Apt}-<u}0DuxgC
z^{Bu9nS7RL5TvQn=Y(<bR6oLlSc&PFl(^4XTJk5`dXUw{#SXuPQ+KV4VY8oKo%nq8
z3=B-(_nNH2O+0HRjGthI(5c{XkUsO{mt(j2_z-G_xEg^>r&gz|H}bi~m`ExBFYmVM
zT(49a4E87z$@!MD1`|%{)w$}-%j=Sit!M4)L&Nnm?f|-1Zm0go^W4!8sn}T@R;57-
zg_RYPM`2=he<YbQL3ld_;<7|1e<$7IhQ2(yUJ|r&2YbIU!<Md&zJQ1)KM2u}6^;b=
zS#GXfSjSl^6|P%ca7R2bQ18}=dro8hp69u9`4VSy0Y~`L@v=wpza<eiFz#hzXFE+Y
zRKb70sUN;5vjm0!ABv?h^Q`_CESLQmQ}mx25VdiheT(+Zs~}D2voC&o7grG!IEF=q
z^LmSxt8P5wM$_Fq1t}SHYLbV!N6AEK{@k3YaCspe1VIV3W<SG~#W~G-@GE=z`}+ro
zDwwhV4!pjB*LR{3U~@>|VSc!KD#v4kR#9UiN54lv97aV%lC-PXu#G#0#h)TGC5K-%
z1^vx(I55`(a&c0TAx%iov%!rDPnBGSpv>OKsKKPTr*L&=d_7GFSdtBpsmZSfJS<wB
zQjL|iLR;JOltdz&9Nb_qw9@1aASFzzBweVE0Ea{hnCO(SF{z)883$|!X#rZ#)Wx7v
zQ%lZ%Pl*j(qLHG`T#5)1dHn1z&8!PClv?|Zf$fs#)oc-rXQnG9HkOf99U}g2PO{?6
z>SO2cfTcKDlKIX$wpm!Nnn}lzH}X5%4a4eqCD?In6tv;hCq=<m2Fe0%i^iWoDbJB3
zBfPJbu{7Bf4{JT&W8r)pT><q30yi&@Y?fC2r|hte@r1#I1~d1D;+>AgMT^kY31`U`
z$Hwb^k;~ME<6Pp^#g@W>__9=9u7V|kztP=1FQ1L&$oAjqTp)QQ2qQ{2Yk2=L4Hv&1
z8DMbYUtOKi%oD~G=8uVUMYR}xu`TGppN3htmYv*<gO<5>nHN&X`0<FMgHic*pRKhz
z+>3Qgq#RGuZRPlRaoG5i?1}hJPAnQCsAFdm57ztLP8%ylXJhaV!rM>IlU(SU*Mv;X
zfs)qp5rD^ndSEuDUa*jnXzyGJHnTfu4LxAG?mp{`k0Q4p&}5HbhJoFl2mmap&(|#_
zpWJh+x9Sz1MSy5l9vBdTkmN^I(<_-#)J)`8g%6JXQ&xL6E?zhTcm@<S47CM#(bPP(
zVLO#Vn`gWBf#*>of?F5v$=ste7+=)70yPh>{&Br5-G4b0%CH&=TGT+RJqtAvAWb>o
zXeQ%=*VoaXIDAz=<G_8#$AD1(h+XWS+j`8+fPjG3owKJFp_f7RA!pNfNo=j2+0kdS
z?7~{^b7yfG7EXRGqoF6K3m0b#GR8ylC$E$_>m>(QH|L1+1{542Bm*U>51mBD5o*j2
zK*X=O&*#Xb`I<pkZ7OK)D#bH$ebgF4fqx)hmVGlR;sx`j{VF2%PLIl;n>rdW_cXZa
zAwmxCJ>;d}s=EK66eP_U)}TTg4HtU_WRza)s4K%Ecou~2z?fmiHYPMBn6A@*P>|kc
zOu=UqLh|E-emur%040aY)BLVBbB`Q>{G~~%vvBuo@x6PNr&N)EP@@TXy{-6(BpA{t
zDn^%?sqdWk?5KXs6OvNCvT(U2u3gSOYEZi_tX*=DMfCq3on&=0@&CO5&8XCe&4MBW
z`y-}N03$)Qcl*OVAFTCfNWQeNqjd)h`De|)UDcdm|KQY$>YAL8S+!zzYfiu_jT^ph
z1}qfcX<!FV(?=<iBG^Sy<d3GLCSwH9$Iz+HiL_{nG?20ZX`jqhfA8#FurLl$#UvS{
z`m}9-`;lAw#iq-IYf0T-^87bfO(RJQ7srkH&ED(Rr=iyq9@it+N7`4jp@p~9@byCG
z7ykxZ3`jcJ-kkrx{tSyix5n9CH9NDO0%F_U?+zJ*AQ*(0<@qsvf+gJ^U`-XquFoGi
zbv!%0^ygw}>12i)4B|?(xd~v=XfZL9eU>A6dohCZeK$g&%=?cRr0A`qe0CN8i<I76
zZ+K*++9&T2AKxibaWJe~bJk0bW&?xdAu6i!Mk3<{P~~y1JVOvX?Co5VEEXx|-|qDC
zxqgOnrLJ(=I~hxBJ{!&Gf9jCiJ;Cx3bqI((f;tL>PzU59xwQfpj%`AEgV1KDM2@~2
z_EySrOuOR!3WN56DaY|<$@L4Wkq9PXvWB@Z*zTF`OTV4NXw~o<ZZ~B7Tb(q0G=>RO
zvod%jX#JBA?(@^w0Mjhc;iv|4a?7djSI1M3+{k!RKkf%E3adJZ>7?HcDl(GBoG#IS
zeQn!nl4Pg;KDUuyT(;}}MRQ*!qqL#H<PUwL6bz6i02D)Y`uI6{_X6ksTLndifQe8h
z3Nq*TN7PI$@tVHnEx2;Qn9QK&F6q9K)+5VFxuP;SH;9!K)MX^j+cZp?Z@pwJr!Uu~
zZz5!pTEWgp#f+i*<N06DUj;WRT>NnemFhd;zg`Osz4|vnqDW3&pIu*!li(K@2{t*<
zO=pSj9A}O83%~Yw)YW3>-~7-oEu>Qa!Qru?I>OGEnOm2$PWSTVA}*mu$v>hhpDsAm
z*=D|g6jH=n#(xza9Jew?Ui>T9&XRsD-wO`kO3~gUbvBe*yq0(ECGl9QLC)E~KAOc=
zpPCP$lYjTU;(B)1R16xxfq-Chv`RsdtgU{pC697W?*l+2!br2Q^dp1mn2|S)!k!bv
za!obqbm`#(qzxRtUQGDu9GHlX73CB!OsjqK`R#emv+dgj6BoTtN{b!*@4pZ~R|xl;
zX-vfYJ>fb3lKwQ~=eyD4kiZ;j+$NC_a`wQ5RNJ=2&^YjKarblU*MPqp>mF;iBUuc#
z&W113;|QI=&Mz34d>t*T*d5VF(%Q7Oda%MZ_Apa~AghaSN3D17N|QGi`+KJWS^zp*
zLN-Hrlc|;X@85w)a~mns!q!WAeEd8XEZWbu$LDtcktpt^3g=23o!P{_k~a?~%RTGq
z&8<xl6BTDy$B#>D=3O7>KZDj<)#K_h?B~M)bY}Z)xBKRt^)}biw2wzpybIXcnnFn7
zl5?9|TJ+;JGZhP8Pj_F-1pS>@moQ}dU7>QntM=&g)AKQg5HP$>|Iq{jZ%b40$)Fww
zJ=kl%3ZC?_@%O!4o2{f(Qh3rI7OU}S6>h0T0r1i~_*&7cJEi@i0$X_|FEwea!e6-;
z&d8pG{Y7GdpSepAP~QFP>m~zDu!mnp#@X#WwQ^`<ja{V2=~FU$r27DxSM={%DrIxE
zVp5~6rqJam?}y@FV(yQH!t+8e9zFR#06Rg%zC>J!k%+u=jdz!FX6E1nB2F<b%hGxO
zeKrp1A=z7&tnB<Lrp@K$;<}3`PyXUB{>p}7$u+Fk`|HzcH3p``&Cv~=<*Y#W`=ej4
zx5J>~muko;2!M!uzIQ(6he-rks_D($&2D#TX2UQphm^HW(}c|1alE<T*IeYwAN}M%
z{Q19s`TFy?EPwK^|IL5@FaM=@f12m*#V*!5&-3qp_q)%(_+qtM<($+CfOX^et6%=I
zntk&6)yr3(O!KU@TF$`<6KSo>e1ejRTnK?Z`f=>psSh;tPYK6y^vu)o&PoMXo;`W?
z?e%r&x+aMK?(5$Y^STdU^^+GbfB4l8YA%#ZNtsJEZU>KuKr`l}rjj#}g%DP&)&0A7
zDdpZVA~_~PX#EqdY3nde-P|{bp$M~c?d9C8H_d&;DLG;@0IjuV0IRCl9uLgkIYDy5
zc(x4_F@tJKshPPu*FDrD^ZA~RN+zWgB51y=oMUquh7h=!9X>kpnp^+>&$)QK_&=Vf
zxs=D8QgaKo|5{@{Xf8^4I7}7bxTJTd!+-W){*(LDL@eEEtEE`GCzQIxNM;UfI-Qnf
zQ3Dh~=Ruq^;Jy<-K()tWTtfgNP(<cfYfjOJaCvnZx~_obQf_Z<s;Q+kA)a-?|K)%F
zU*Ep{?oa>p{}7fx`uWcZa6X;Z>viAxmGgIpLyhq#KmO5XyGEkWxn)^8>F#dtudc3M
zzkWSzHiz3AVPWru%m|lhTJDcG-@P4u2+m{Zb(&9-mr__H_`V-{M+7<u(s7x$+wK4L
z%U@2X)Bf&$?1w-5v;XJ*`h$OVS?1G^KL6s2&t8A~=YP3#9jU1y0GXjRNd}0$gH)EB
z#Zec!-NnW4O-sq>g^?XI5rAToH=7e-UY5m&;Ji3)IKJFM0B6+|SxCr;vAM)d6#?yg
zT8t5*Rt0_xKdM@(ilvl--`9Yum8!X&bUDWdW3)DAmUAwI@W`WV7?uBsNBMEz*~dJQ
z^P4Q^*3~E?T8eYdL375Y^K9YVQV-<%SoW#ZpZ=Zy<o<YK7koE_TBo#l7Z|O?Wz~gs
z2ydq;#fXT$nGmg&dlNI~oK!)zHviB0>oH3yy}S94VhkZn)5-O{sm{lf>%x)~ng!zE
zz5Mx~{c0Rn`}^CU|NM{sr~mPP_{-mZ?fL)!H~an5XU|ehyWMuT*>>J-c3bi8_U5*v
zy1lx5w!8ZAPk!Q@d;a`|2vRAwoXE@$hwJ;>+uILEL*y`AUd{cmI5&%@7+pV9&4Snq
zUp(2~-`_LhumAF|QjE*8%!lJ|e*Nn=@7`!xF1)+kU3%woOx%skOe}MAP+1e1OEKfK
zy&ai(99OmRg&vTC4fWX4O5{X@05H~a?zKrVR!vJXvsSz8n6n5JLuN0Im{pYk1<6#g
z)`!l;TC)LwM|53#eaS#mj%OAIQRC;gbGBA|*!X<E)h23v^7UhE-2>_AZ*@UD(gjP-
z&E2J{MVr{m&N*xfNVSi|Hch1f(xN)&^7`}7$BT<^_Y?YXoKBVfe42z%RCCVb(0PSr
ze-J?KhH+dA`?;E;n&IO?+^&6RA=?1W*6a1}zxxINLf6F@*Sp=t#l>#7%UY{eG+PbB
zIIiTg*Pp$6`{rjq`RRZ2U;WqbKiuta@8rb0-7Zfjs^u^K{8xFI=hG2Qb4-Wh(G-9C
zH@~aJV$7d@`sryp?k;y)GnJTg95);1e189-jvG^*75eo`f_E+)i_Y^BNMcT_;44$-
zq~sjuWtmT}UcK7wb~o?dIwm1HosOUEUO&COh^J}jdQf<D&7GwoWD=gI!^-pHi_vvm
zF2y<j5Up-yFfHlI0lWycrx!LSm>QWDE&KibcDw01FXD?9)eLAvAi}EDm=~tC1++y-
znM$dq#f(M7i7QreDTYQsS~Ca{pb!g_V?hH1twqg@3BB_oTuc5KHSjTc;L+*&XmCBJ
zf}4Z}X9$^nG<C)pE!QS-13+As{WK@Do5Mb8`FsE19~_P+@qGxxhvSI@ra8I6Td9-_
z=X|{1-(TNseD8bTg@A~v6<RdD73vs}5dt%xr%NC*#MT_b%%{`oqLef*XyAyw^Q1Zs
z!`Sumvp@K0nU`sQc=hbXzx%g;cKP&bJ{^w;4&lSMZ~pX8{<kUTPhNe32G{T2-5pOa
zUVie|fBFCZ_P4*Cc9$`w`@4Nv7SAM5>VAK*-LA*gcD?CeDiIxvUVZv`?#G3w#I(=Z
zdmrQMoIBj!oNjMo$z94rH~j1;KizFFrv3f68lTiBnwQ;XJq*Kse;7i@bE>trQgR|>
zVnP<v{bBzgW2&lp?{dl_{LugVeYFWOJCtg*){-*<K=aNArVv8Sh49=g=Dn24%~g?$
z0-~|Bc5h}TH19nJ$~l*sh3TxYYqe7Od;YCH&WzYriSU><_`ZUq4Ze@FWc!7sln}yW
zg0lS}KI8^k==$+}*?xX|qv=Da(adr#rx**#w8U|<{kwnv@BPKMAD+B;n!=FTSEPBK
zS6$GhI^U7O@qX{lJ2NnYnyS?T+%=0Vz(Zk+83O{65LLvgN<_mrUR+$XjMnYV^*qnW
zBy{F(SXKGepZ)T~n>XWXeDmFRFJC-c_v3E8Dy6Jf<A3<;zt);J>($HW&pjg%dG8VV
za5w<K>({SO$5W2+c0M|yl_Q)N+ic8gjj40K?|V>OUu;h(#ymQ2MYor`<KeywU2-l>
zsqg#uA3mt+?qZXcDaUl!AGQ};vax-AB~><S9Rl1+1=>as&tFdnVLBe$@2Bg!mQ-uF
z+GdI&Xr;ByPNyG1lR;IDkccFBG@F;Hh0dI~TyitTBa)JSd@Dl(Wb;8h2mq)RtIEWE
z=e?Y#yvNIX>#C_*+ePgW9%g_0ug3xNk(KiCK=9cAa9&Zs-+JujoI&-WY!Iw!$~on%
z?WAXZ^8D#~yOVeOaWxY8=g*%XrX|Ov4^m6=>ury9L3sWAWllP5HsiR05SD`64_()#
zqUVCWTx+de7l4@xD^b6@`1IB5+xPFj_~OfP9Iu`}`Q6ul^Wx>p`~Cg6TIG4}eP9Ez
zT2oB_>R<h<ufF_>2x5%SE}n(nXR!U<|NY}1{<z<+zxv__)%5w(r>mH9trGalFTeaJ
zfBeS|urp+Y)Bd)1T?vJp<Y_q^k6S=;0Z0H{DFxUCFWmFftIIxkjq&R0nO@|682;wF
zx2I{!sqUw{{d{_N{r;;bKic#IroviR>`|i^3XYj+A&{b0vlY}_SHTDI4$KUMxC^0e
z?MTp(IAJemZym&Br4kV%2|Is2bXwxB^r4R_E;+RpAMc#0mXgQy002Q;Z~{OzM>IgD
z7?%)&_g+;~iD=e`t{+BIPAQq08ls^ZnwgbsW-K5N6(Ns@W0Uw>j{+kBw`sPSx(yBN
zqwlxxR8y?>*uV#7wbnQ<L)T&Jph$69;*^$@^9&5k{kT0%GcqlyoUHcSi^DWAHkqvS
zj(V_;Y4!98P;l$bcy*N+V2M1A-D-1MqI1DJ=h!v0tTCiqm9Y>8=Y>5ZH6#eL+g)6Q
z&|O_#Oo!t-bbUX_IEEko!4H4_i=VfT(dJ?Y;$nr0n2XkGFP^=e4%2qKtp?k1_{-n?
zIs~^~uby1&=G*<V?NiJd`i)}wE-gzfgf{g3x`HT$ZZ*dmx-O?I%ws?3G>PdkmDOte
zaC38-rrYDRxx6ZBp&Nex?p?RNsGtJafj*VKU#2>p#(vm1jGEAF<NH{tED6+%z!R{+
zbeJ~%@ay-t+tpf-8&{-iP6b5Bi)2RC+WU@xNI`%J8MJ~S0M7G*2%YnueGm@-6)RiL
z%hJ*sgw?w)1lJxsK7^_oQ*zFAz6Ss_QiWm&z7HZIQc8+B3gFQ7A_S;lK#WMxio?A3
zTGS7t<+9|Qic0VTc#2VD2BzM55(2PTwN^E=7?TU$IRV6$MiG%Ngm{`8V)$@4?zY=^
z*Vp6Nf44v2uzLIM_P_h5fBfs;e<S1W+c$6h=Hh<(?(Vo3wENq;6@iFcfBUu0$JK6k
zUubi20W8b1gwP{7Ep@xusKRNPOI7K+s5LJ+mSO<W>UZD0{r21M4#yMu{{8KpDQd1B
z-Qi}hG5zfC{6fgd@woqI|LmWyR;w5z2k*NOOC^!R@fdS)T|W$~c87p!CN(d!neBF4
z(=s?8fY?Y0mzw*o6CdK?SZWoMnllh9u_N&gnb{My4<s@zRb4;a+}|FTm`WAzPjUYJ
zn{UB!*LR(Fm)>6teScaq;=I2--u1J^1E6-%$Wt@|1T^m)16-`eG|lUA#UP-DEJPrL
zfEA4Zl!=0PGPYt$TC0hG0#&V$00EduRZGzrQ#*7TAU2l*R=pbyYE~nIwgpmEAr=-o
z3#W(%L|B0p*$@qxnOntX6U-EVO!51jH|CrjlA56!FtC9VIpQvaTuRE>QYxk7T!_#M
zcU{L$=pmcbu4}bc5ozNB5lzdIO6d*RyF*M*p1p{vq+-i{KO0)A_sdjD5i*TO5;#TL
z-`vET8&o`TPn+$yWp*OIua2_XvMfu?$J1$^mR99n+E9!*<@n*v+v^Y4cXxXfx1{*(
zH{bmBH@{zvL+AY1h3$H`yWEL^{^Ni0j{tQkc{}#(WSUYC`S9WWvMl3vvl=&D*CUZ?
zDf4o7dt+5!Jbjjyxb?wet*U@fV(LTaNUrA@tV$SCR(4`c*bH1E<hX65eUO;bYQ6gU
zyKi#NfH;ohx9{G({qEb<dh{YGB^id6^e?3}JWfg_swy%vqM|2GDXwabF<xxe_jh;Q
z&>L9JsXx~ZwM)4onuvrhn3+}uRWe{=I%^90cp1t$qn%$Z&pvC;DOai?1ZFCwI-=kM
z0k-)=gg>sub1V&3#f${RAdQi(B{zSef}(<<5`iH%VdC)&Ev4v36XhcVwrMe{+E!=S
z;vpZkZ+P#{ZfxP>X-c`|Qh{i_-v0FO{e#P=PcFE>U$poTjdg!}IvpGXJ6sV^NoJ69
z+3ycG^@Qu~5Mv>5{YsrAHD&g`Tb4PcOhhPWqBMyNHm=s|-Q{k(-44TGh{xk`zrQ~o
z?uO7^UF=#KPk#L4AAk1wXE)b3&F<(BL*Fs;yXz0J<fr54yFgyd3<0OZa=71j-o1GK
z!fJKB!=zvps>Nj*FGd7S(}|fw-&M@63z;aRwPWeAAcMe8(==|k`{S{ivU7&;+pm95
zfV<t!%;w_>`$1DFOVrY!h0ZyLT8+fOtSVN`xs+OCE+jI~b9c6U*`s&#{FY)MqTqcg
zB|pei?FFmlyueY_oC^Rrp$5D)1Wa}^Ye}^xtQ$+$)!KSz1y~s$h4@m$DQE=*1p`xV
zQ&}yI*V?G!O=u%TfD+g}R!lu|(N*<$I-QFtTfb*IM+9=tWZFiGN9tW;y_`;yA%J1Z
zNfD0Al5(Z0Uw!ohGaQChgd&^Gspu(Z67ggm+s+|RM|$?GIM2Sj9JcG1ua#&YXJ8H?
z1o6HL1(1ZhP(+*$T}w5yh=M(T{``12eDdm*>q4=zS+Acwd79ILRcqD5;qd0W@8qBU
z<9}pUMQAr{im5^Ex{zzV-QN@QuwEG<Jc!ZL=~#1qvfVwo*uqjgVL?M8By|LX6V0bQ
z$AP(;p|EtmFy>lIyTmG!5DP6+T9!GbbUK|BwHw3Xbo}P)uUG5UcC#t-A$Yglu3g|v
zgv=?|QVj^1#GF)Rg_5+ky-;flt7f6^R+}}URj~F1Q#DX+OJ)Ei18zm%W(dl}*j%Y*
zOD-`-trC2D<v_tiq;0`#tu^HqONuc<^Ff%k1h1Nk5vavwCgw_HP|b{*h>|P>f2IaQ
zlOD8v+#-KJTAmw10a#km@VT6^WrfJF8DdrSY_NXV473MnDJ7R`go?!C_J^r54_&|6
zTppH8eO+?(rOvT53PG)z8xWpkx7meZjV$HjDqKE|rRb3{^lt3gbz$gZsm{5aDl)aa
zbk?dlPjQ*&SsW38X<^~M??3(Ylg|0+cof26>{FcO=Rg0&VSn&LHw@$L@t8|7!a3!`
z@fgNoz1`a5v|RP}_O|Bo<m$?*GFZy7=0vrO!H-?n6WtxB##V_rsq^BU5^4idJq$z!
zfP~(MwxeKXKlHbU{j{8z*-9aR=g*(Lc=ntg5Q%BYhCs|BOnqnOie*w$OT|EZ*Pb*8
z+IL+%9Uz1z#+oWOo&<s!e!K*1&xZCGuu{)ISZj>QiBo07_VEpguxibE)}`io@#5M6
z`KT-)af42^N+gAf0LaaUSV&b-QJbyW5V1CtVT=IODx2FMa`PrJ^SmrARQK3kBSb)K
zZOH}pG0evh3}ML$kdcHO9^?J9SD*dCAO3uM`NR&hgf7%lij`cLrSH2k9|AknI-e$v
zsVB;%oKCY1i$3r*+W&f)X9Fsw)T)AL51u(d)T$+C5oz3ihX|mn)v9wI%(i|1?Ag<}
zKgs4|b#rse+^ZH5BF9T!Ztm`n)8W%6Uu?HqFnq*Z9ruTh<>k|-kdtGV<APQJidAxi
zl=FPQcL=@rnu{MoW&}h+5brPqCDaCGt92NA)xwOa<gxE=@2<~q|5}5%&tAR0+U-ir
zL@<mUG7ZBp_q`*i!5am^z-DPVs@ZC@2Ged_Er)yY{`z{pSg*}gtrD8^;+;daq}7D5
zxe7o_sjAihDit+&Vd_gQDK00_q3?YNX0>xdrZJ_8>YXFRoFbo_@YqZlP*tn2Sw&<r
zA%m=0kifB-rL>d<+nWQak@VZQ+-kTUWwX}Y*3y?v?|3wJH%yfgw<K_*gs3&`PnVdx
zzBgNPDN3Y71?aOcfB40hU(PWaaVk{}r)imECYIHD6`}T>_!_5LtrQc9IlGPXAt+HV
z<cAdppDF<1GAGE@iq;2%Cki7GGKi4#UPKgYbFmXq%1g<SR;wX&*cB0^q3;+lr5L>L
zhM~@Qe>f~DbwfX{#%W&8&fua#uo}i!PoI0_i*c3biHJlnO*7S8HRZz;kcYlET>9-Q
znkj;axITyr1#HR5sxHfd!ppqmoDYX1IH~i=7_N3ZFSzpj?AencbY)6|bDOS5H;185
zBBojt8h#v!!?0o~j$N9Mo6V-oCm(z*h0p2!b771)f@)A8gwUEF&bp<Y*{Y_+`_9bf
zd79^07xmr`jHOm_u2BfvYfp&jp%tnfqb)=(B4$u)bzaaQ*TP8NJJlLvJntpBZBfr<
z^=9UMX!S>}fVRnIk0uKd8T!7R*G+y)jRa(hh>V6r0FVKeWm&D)NR(0mBn3p`=dV5)
zFD~x)NAA{|DvGbEkZ?B+ZS#vJ(rV{@ScRY*i)SD#T2o3!QOv3lFs;TB04Qcdu&M>E
z$=xx=<#<ZVQgfCd-Z=)WszX1NB|TbE=x}qr-K?~h^?Hp23R+6Oxw(G%$;)vZ4WQ&=
zW?sVm-EEo|Hr=d-br({cyDnT@Y*cG-7=%Z0)7_mz=)3Oi&2<<D6hr|-ttFdPYl)qh
zod{Ij?Y5`WVLBZ`@9*|^r{n4N_IkY<;ymY+$bdjwJUXRRYgGgzRD=SU0SlM`O!KT-
z#f5%cb^Y-C`O8wx(7GXrqf&F#Qd6n5uEx<ZBS0fg;3H(9#B=L{R;HGyWWl!EW<Ybo
ztD*NIF)lf#zU_{*npUe-Yb_-&%Y4}HYssg>;dsAarYXmHo~MQeI-U;A5L;_qV#>Li
zoyB_RxX}o@;D|uA1TU(U5WqCXd0D1fb9?x8;yQ7ibB^eIiF;VC&+{_Pi?*C53Wedt
z>(5g)_AYD9Xymw^NJT4Deg6De%|%t$<ESO&xJ=VjYfZKI;2Z4+5!)U!rL@e;S=)P{
z9=G01akO5KBGd+>^=1UrQp#?(n@`7_;(8oq=seZxm^8;yiU<7g{@r(PzR5)|E_ONR
zi`_+9A~3#x^R{#Ta=Te|Ly8k4nAUkd<s55TR!DJ<qe$nR)zS?iTP;e4gaCp>hz>Bf
zBt<O%Fda^Z`+ce9v_DSM6oMbSFda{h*)w^eq3`jqG*S{0k+7M8h#`R@A`_U@4$N{~
z+C6<3Miz-F_Kpxyggps!vl6KHu2yX)6gCk6wAR}Du4;zX>yuN;X_^q3w!1Ad5uCNL
zoX=art_!6wnlUq|wOAxG)tt^7A;ki~X3aYGxE*TqV=nn@&=7k>S~Ry=b73?T=Erfj
zhlCZUoJ-9B=9$4D#}so~=DAdzQ#2BC{<OqyT;K1H!F8K$2yR@A5&#HGD;GHD_Eby4
zoWYb3d*=$X0i^Tp^~_431}eY@P7%>LgT)Y+Qc6*P+H#0sr^E4dIwh9i9XxEqh)vV!
zC}t&PRP}&2*VohjI1IznXHRoXoex?p$8>XZqouxh`n(s`lnIf{meam!M5{u0_;8Im
zbFTC0wA!qTYAUhT@}Tup(*ij|$!HoJ&&Sj0{=kU)!~L?%+ts@7`@`MsYUn};A~KA_
zIpQWlPS^<vlQ4-Vb|7Ay?}wE*A9DdF>B8n>Bf>d-Pw{N&C_+Qf&iT$sVCPAQ0kCz_
z7!#P9s)>+iwo;cEQ_j;gr6rcq?%m9YW>BjNkr1_-l1E$X$FLnltY*1tDK({xz+j|?
zc(!ynV&OKG0kqJ^BfR*0E}zSh{+3{NW<{k^a{)EAl1rTDrIea-GQ(mB$kP&Ee)9U1
zQp(kJ-LPIU(Yg7{J8>kA0F)R?Ni`<|6R_ZY-}jF^y%t<>PNco{ALPHsY*nj2ch31B
zK8OgJ)>^BTx=g2dn%W#qWa5#R6vg{F&ftC0^5N|}5q|Z_OUIIPzPq_s)zkh^Q(j8m
zt=2W=GR2M<g>sHe(0T8X4%gQZQx=*MTz>jIfz_%?XTN}znrqdROU|m+V_4>CI-PnS
zj)!AjQop-&ET@>BTwaa+z<6ep5Ro9U7i7m|D2&8b5rB{^guW0d!r;5=!)CK-5hWsG
zJ_oN`UoH`e(4&LC^<OlLe>;&8&AYzw_stBn-rwE(F0_kLYgzy}7x#V4({H~)5dr?5
zf^O%C@A)pDYk|Vd$Slar?3m9*W--P`r~l(R-2QfF>iH)yiepm&(^_+_)p9YYp>vhE
zBY(<T4GiV8uYS-CBMP@H?iA;x5Q!%uYa(vRo(Ms$7Du2pk?*=;*n5Fe890Q{2X6?f
zVv6!GvmmOp=M#`~?8TAb*!K+q+Vr!wR`p)+Tzcny)$E9<8W~)_eRp?rg9cYuSI6VA
z3t@kI`{e1<-@Uu`=sJhn^`@qTrl3`Q=H&nYAOJ~3K~%NLGlVT~P&KB(ht7F}?1uiB
z6G{*fCrsE(cU4P;Qnh63e4eK`pZeV{9%J*MYRY5RJ%9du=zB~#E=xP|%J)oELzZ*r
zJaW;r4qgC*_v5fy_V=rC#mvr$bHb=v&ssbYJyx=bV?-c8RV4(GrfnJnG9WNHC$*HE
ziy<~0wf#~SbQx={Lf8%y=a><zw4+&4;g8H=Y-Y&kQ?e*nsRCS0(Q+wzF0r7q!^X75
zEt_Yjd~c<vbGu_(b~$2kKIItaxTK}lO6?;hPMHpIPAPZ8`1IL}VSC}$D`c4CG{*&a
zaKX2&Ln(={c8(OmK$$>uBJa_Wf;D;KoM=~g4Bnj;V8HV5k0s@tqo6xq3C>p$9L9~N
zJodd1TUAMMW(CXH3riRN>TiC-%wn+ahZ^(c<xZ3JJ{<RZ=iKwBm%HsY&r|OMs+AN=
zO=xghQaVj+wjFyv2FB2?fijHNpv^>P0A>x|?vNNzORYHzF&YegS8HB!dG+ks)7@oY
zazfMXv=M>Y{4E58W>yglKoJx`D*!QxN(kN1SJi$T`_)K7!Xl&<Dl;Jhg37}~-k>&w
zld2M$urOoSb@cFO>Aj0pV~YLQKXx>qEjoYO<Mln1{=wAR{_XkkLr4k=(0Ba<wSd|z
zm94T+)w1rpw)}3MeR}xsf1F}^jK{S|i`AOaGS5p)vk{W`QY)ZU)2v3wuU^0Q!{B_^
z4Pya|OH?oyScFPd1XR^rBX-Veu38*eDM`>$iV39D^SqVw!=e}4)$_6K@H}%o?m`}~
zkLN{2-$%7ZI@X$GKAy<=R8Q(XoBjGXzd?W}yGv%S)pE|8^?HAEcYAvar98d55|L?%
zo%b;>*^;W}k{#IL?!M-dmWT{8hE!rPZC(g16%ABPOGT@Mh6W|)xGdA*)UBtI%P_3d
zG&ADMPhNJNueAmrjwy-wG#|ma2k{ZrtTqP?D4Nz<u_^+INXca!$K7r>-(Od-UPRcu
zG)1Wrp|ny`5PB5ML0iFAU@@~&D*_B%&q&94YR{myvukUpb3Io5KJ<Z)?bwLKVg}9N
zgJ1|q$jl_-)WFP`ngtD10TGvF8N6?h;#zC@h$;NoP1(-SMxJ1xQfrNQiLo>jIX!rN
zQ4}PEFkW8#(Jy`>F0gY7R#J+!wES>3O)1e?KPdp5(o&bXvuaws@FC}dVDOPs&CVV;
zt%|7Bbh)-keOS3Ze8Fm<?TM~hwd97ytXc&Pn0YxZRy7;^`Y-?555uRQeQv2huGeqg
zJ$>@z_kZ*2yAN*zbH{9P$){;8KBfX-?Rl{3yTh{7c{-d<$0>|-r7?haB_>oS21*sG
zVkuaa%;GZDlJ54mH+Q!<g!wcL!*Dtt`qk=cd(oC2!F8uvybt@FL3}34$OR2RRM`y8
zuo_e~Q!A!MShTJ}*lsra4{ueKIWVAiVzm@VWUV!X3|m1KXjL#WvzSU3&b{Cw+;xG8
zQz@ED1ym~P-Fa8&P|WfY;ej*IavhHkv&SbKel!s*%hJ;A5R8~Xji61;?7d^=l+vRQ
zyBQw;qXH#WEhUQ!rR13Alrw@kafn!m;N1Mot8TcudiLX={^9lhh{8);pt@S2UE1e)
zN%P`*7X&mFDF}14Wdh~`X3nW9Ffx&lYsYwdxT;ly3WjP0pqhc1m^H3VsY<n$T1w7Y
zYi)_CR5BtuaVVA6>-F(?Bm*zuxIfjHYc3b7_5IDYAgsLTe3Cks<82T5vh(@&Zd5wH
zyY5WNl&1UB;Czj#EOWfSeX`w*<l>w*7f<d_5r7~kDrGPTrRwn%@AqY%nTZ{}zkY9I
z^K{&9*6+XhdSG|DJ-mGOLTlBM)A49AE{A;=!m;KF>1cF6*XdB8uqmZdf!*EVP)&Up
z)T~>LSI?fbmnY>60PAssN>*Wzp%y5q1{XRXKtV`$o9)o|DQ9xbJ`C&C=3?u+5Oa<t
zAtD+zqO4}E#d1*t459bKfX-LLrPP$ll8RO!<Yh_B()mC@HCJeDvPFCE+U6k5b6FNr
zg;M7IDTFZ3%RDcw+T)RC(B5Yv+<yG={GHNCH8NT75<2I-7jcdxgaF3lxV_&`KmWzw
z|N5J6w--AkSr02z4J>`%VXk#q9BLpXEIk_^536N)#=)zeG@k^b8iSNr<Ge5uBh<X0
z6|G4%n-xO^P-x$3t+k9}k7&ok-mDVA>3F!ky<X<|{k!)=Ka%rEBKy;+8c5ewg@5~J
zzr4P_{)a#L@!9jhn3p)m<@&?><#bwo^1`*KC$U+9s%+q$b1vlLl$Y2!4{Agbx?!on
z5*ne444|sz3b~L05S5(N@%`!8oCWi7&xly{i%-9}SY6CzPfDJ7-G#nVD%OpI8wWqE
z0%gJ=e$awcGV0>kyWrD8wZRIBw!4dOen&)P6;h17bHF6bLK0kPPj?Z=OigVcy0Mih
zJ$mz<b7tUG3m{bexSI_Kt7$6*V<$pP0F+C+=$t+MfNhu{I`^QZm`cv3P23}41_ma#
zEK93rJ6CFBZF0s#8`pVgI1@35mRL$jkV|t`BPgO|05fEfX<9!2?DJA|b9He%&0#gv
zoV6Ap=M1Z1N5W_#gf$1ikuU>FwP=9C9Gs_CsfCE(5r_ec30bLytfCS^1uKo8fmTn4
z`{VxJ1wZuOb-s&@MN0Sg_o|vpI-QP`s~Ah@I1#!oyuZEa$MN--KVTR7aa7fUG1q*v
z--FPrPd{ZBki?`KbE?%yx_<QDXMhT}+3wJJ5%0F!yOhy~N=z)kQVes|mMA6XtR^77
z+aI{=jd;nW??xcLeEOu6ayrhwEU8BkF|~&Kk1;O1#8{ZIDAjDNx%WU$BzPA*6NbJE
zL;vY#um1Yq|2rqbjPpEiE_V!KrL?KDlnP+ZbxoimqSb0#;@nc1wbs@z<D6*~P%GzN
ztaHa;b3YK0bAkdw460}VRaGsQ+&)*$x1oB5Am?1F)`l-Qx9+ta1Df|@4{I(}YD@Y@
zv8|L+YLx~sS7jzM2Ne;tNmf8YC{T^UIL+~=fA}+YvR<u!|MuPUaY!j*t-xxjKm|=%
zO%+9JlAJ78OPb~-Th>;Ul%kr`oRLhEH$=_3YIVfU6rnn+X0;M9D1feq-Vp}x$9`B+
zyt%&q@aDUmvvY2>8iJD?mmXQV)w*cCySu;GY{&Kb^;chw+Y2IceLqjL_@D~FbaD0M
z(=Wdg7mNiQSt(h~go5vwsIY|4Z-=cz(ysH{i={5)J)k4!h+WM!11LLkf<BPhY<hn>
zt+pE!mr`1-*R1gD`SX@~b##_exhe|`!^*qPc^42_0;6P8GRtWeq@sch?6_ZzB>42{
z(}w#BK1^{Y04pV@#W~m5HzLw?K~?8@0ze-Gu%(7->(}t!ElbQXF>}RIt6DVz5M*LT
zCdblpDQKo(hyV{omS;l3gNWM93*WalfTolYOVwIy4xLw}kMSxWqtV;V>~RBV5A5UY
zz^O5lhzIsc!YGyfu3NqO^s|Uk%u=o?B{J|R3Iqj8%w<l|YN^pQipE+rFVW^D)>H#R
zESaMj)l`wJE)LO3t}3#mcsiUwSe8EKT!}>_)^dM${qD`1-PKdA)v5~8YPD*gw#&_S
z=zG?Rj1mDr#Khek4tLYst=1R<F@v~@k$iw$$%oyuetWSKqYNM{RV1b?&UweR%%{_W
z#2A7i(m3KU*kTlVL=xu}UDc!_h=k68cMP!KU+<@7*lt){Uu$pyQ(moBrrLEKW63E)
z%ruv(AR<Os-~l%WXixzZ7z{Pm1PI_IbY0Ag?>h1BG@abjD@G!Olq0Horm6)%MO+uW
zsy4h50Q6m7YHF#>zUx|}Oj;H+D3q$2+F7-7EbWv$-=bnXkCp_gXP6$q`P?)!L}+OD
zwk>!tfGL6zk*PlZtpEt1m6RxW@0|<5Ka`|eN=a+2r8F6?BDOjT05Cvwt|-2E{TiGb
z`tkmB^nF)~I&A(zs#P@?s7hd<2vtcHi$YbXKt?U=MrZ(SY(KM-Q7bD#$)<%WLaA6P
zk`e;eVpZdD%EM$arnn&JD)^jp%$ZeLE7gi>w3J!^H%~5q_vY=_-@PqF-FoGQUYV5%
zSniI;Ty(SDRYY*Es3k-d$pqj$5zVLN_WH(<Pbp<&9LG$|VMOoI2XM|9E0Q@c-2mQ4
zpu+U_=H?VLIj_jwYK2V0dhLkkd2Z8tDW&-(o$mm-Hdgp~{>qk9DR~%zA3QRUBS7TN
z$DCK2_3p{l;c!q@aZQoeu?s^V2%2oiZB*?05W3dr27KO^@Z+3FL?L+ZeY5}PoV652
z^dchcz3Y72Sg{l5op0yt$D`$=648KGA3vy=*@=5tXlib)t!LN1ek}Jt?mcrUkJe%)
zN9=&ah$~X82I8K-dYwu&pm|9by9+!|wWY=yW6rVEVhGF+3PmZZr9L1XspV4@zt0u7
z(c8?3gz-^Pp_WZ@D63%*Vo*!-a=5!+rg@p>_ix`p)x&;Y=GZ$Yh63J2Qzrl0Z@vlZ
z)$>=cfCT`u0kGs+-d<lHm-xfoC6X9X){0C;M1{x+Xq^tn6ytUnV^-%J#L`z~ws
zfhuE7rUoEFEY)DHDI;Fr?<-P4nwPlRtW%z!Jbm))>9aO3ab-Xf_HA2M90N7MhM1r#
zm{vkN%~Pl*hL)1X2q{&A%cswN{F9&j)vtb4O+}c|1ZmX=W>#Wq5W|v1c<g)-jxjP4
zqA8%NLN#Ix>}x-?z*z+YfE-hFuIoB!DH0J9vCvhiZF!PX@&t`@NDKg26&Vl_%UN4B
zRa3LGo0zDnnr&hLfHpC-1m#1eO>MTK_RjOnhE|b~1la*g0X6_~VfXCC(^sEV@^_~b
z2zSFU9gi$toHJz2R!xBrnUIOun`X5P$Ry5_V^LsXaUdS5H6s<0K~-g0PD@M`6$SEA
ziXp0Ts^zdho~F4UhnzDbUaU7)7rVpVJ%Zg|U(eIYi<BJ2g>Zj+w;bnpAFe<B>Z>n*
z@T2?Vu^UDL10t<>zdx2zSDUTt1}rsKBZmd7wy(I>G%p>=<#v02caJ`R_s3i+QY=Y2
zC}5yaK$#dsYSE-tn5LM(u_4XN42Ftud3m`S*Cm}!r@7qU?%#h1`xD>HipbL^X_{`l
zKN*HF)~s=w39An{j=>R?n0iDHDkWcBY<~0yKV~P2<lCzaDlA%S-*v`RtK}StLI}Nc
z+5)R>3tnoYIQtNM2w|FzjmUC-y;E)<eJzS~CQ`LaSk6UNy%$6)wFt|{1Ssc3^?`m^
zN`t$$@e@B<7&Nzc7s5CWt+ujOeY~6zQHcuxAutgevH}%=Xt-H#pT2&*zPySR-hTbf
zu)Rd*D$vF5LPA%Sbt<JUT-CgYH)0kvwi)`~6Cqo0mHXcNb@9EjV?<f40L)WhCtK;j
z4<szU3#C>>=UvVvjKhoPFD|Zj>-9R-v&Zi4_IB_u4)^={cto?fOmusD`^l>pH@COI
zv_BkN@WW~?BBc~!cYk-^wk4a*wgrcX=<av~C)By=G&vzl1*`7w_XafATtvXR+x>KL
zdF4XqyAFj6(U^|&yq`~@A7a&S-@W(U@c#Pd*|X=_bUq%3aZE8n)x+VCbME_bnwIPP
zdq5_l5PIia(OPTvUWP7+(6UT@YYyzX-IJ?fy<z97!MNURE_Pivym^1^yRf;~><<T~
zw&?-ycr^|~AA}H0g-MtRQJDMCbs;oY*=ihu56w9^4uc><RR*-G7pqkeXQh&wcP^Y&
z`?_AOHtTI41_VN&;JV;@Lh-KayTQAFz)r$?wH}9+uy@2`*P$92T&_2rNLiw1LA9DP
z8LWq4>^i8bxiFxYa5$dUtMUGD>Q-y=p&)Y@p1ypwy?Sy#EpM-{lR;4x76qGXJ;pSv
zRwvwd5S$8C?@qPKFcf0&-n?H-!MVe-MC2mD{7_t9xGNmg^%lkmPKK39w<wwG&<$Bd
z*<Ih>?Jlpjo1IqJZg%U<Mb72o;^KHXY&P3vn&;zGQx;%4P0Qi1H^kLy1w=8%VHjEq
z{k+U+i9Up`3(K-#s))!=44eBBG^R40Hr>#P%YZI;a}JQna#brOB3g;r3<S}+uo%Rg
z52w@J{hpl!CLaQ8y}G<w_k)(4;;h*aS+(@T_~d23**$q%HHcrWM;o;dgA>u1$;uCZ
z__<nn^X+#Lmy3(5j_LURt;R^=e(`tz)BA6~{_3kAl%n}GiR!#8!L#Gg5>2WWQ#$X?
zMTEHq--f}Kb8OF*^=fsRrsi&K3mgILL#JTPv&s(*0L-ig%-nT@S$%+}lUbdn1>n4l
z0U+lXfDmKN7Gp{&rNj;8HFRCARaF2CAh)|<v)}>%6J2aCa;}?;P0Y#ltCWt<o;}+=
ze}T>~xrA{%UEjZWy**8f^Bo8qOC?sbBCMb)3}R5JkVdHgUsvxIWZ8M1=Y9Y8pVny~
z``pt#gBc74zyJdfBq34)MVJspiawMrIx$U^9NQPPTv1h$O2tvdRd#gY*yY5EOuJNa
zDTy72tk{xbg|aD$MyR5A5<w7Wg1`(g(}S7rnLhVEuET%)a<O^_O!h_J^hNLLz4lt)
z|9<cLybwLb;1NMcmL!G&06JidF$ahMju8WN$RjWh6afK{7!N=MfI@@_5f~x2-p$G?
z1R_A0WExqLWg!G>yhzfdEX&z!CWTmDT1u3f&F6}DD*}mN>&7-sx9D`Uyc$h7v82$z
zSrl9`kt)t6rSKuwl7|pD60%6tQp}sC0T#gf7$QRJQfm8rn$c*ozrSDfIuRHGG*x~6
z%({}I$nuK3?j-$$>(NBXbeX4Fr=Mfw8|$+)op>uyNMO-8!EtAMr$6X*dwtf4S|{Wj
z<61~iX>sA9hraYD-}u;5Pc)`1@?w~0A-IU36xT|5AFOi>0Fj~O#u_E1l9D4@=T3W;
zh49|@dfoQEBD8eQHFd)Xg7;hq$wm9r<G?`5oUyX1lvGMG01BsxPUOe{c#MH_&p9Uo
zjtIbn;H1=SHf{5H&Uq<ik|aOQyK5iQ_X!$6&@GCSvdnseacvm#!1&_oT6bY#W_$>Q
z94FPh+v^>VCt02mqli2JYdl#7#5o8a1^6fe1qaaPUOYlnTqqe(0_QC$!E<E5d}PR3
zU>F%jMgbTg62pi<1QC@9!4i>F6sW8lu976nIfEk6MYrc;Fy4tgFQ&7Dx+%313kwTc
z%0x=VF_ApgiFYPC+v_alNn&XvxJZ>Ig>%<1Mv8OhtOAxW?wnzQaVb0y<0!bI07=3f
zdC3F?u+}mJL>@wz&1Q93E-WtwZ+VR5%=+?jp;M)lDS476St{+}xUTCN#7WiA>T)wL
z_vf=wT?-Tf09}v*iz4H|VhrQs$({Kf3_e$Skfy!<!b6uH?GFY%kZlZ^Mlk^LMXwM-
zAa7YL>b_^t`FM|1O)Z@!5;^akbKOqi5>q!#qEuOuHO5(2mSvizT5HB+%N%H#KUtb_
z&N<2uooSr)2B?)qvJf4|AcUX@3?T**LQt?}iAkc<B(=^aO1I5RLU8BaN3pasndE{(
zR7z<V7~@Lo+WEBG>n|=lV3l)4zq@m1x3P{mN-2>G51tsh06v5eAs}a55O_cazyOhP
z9??gJJ_5u@oJC}jafWot<&DTVwEmaawxis`zeNTlL=zw|!G&Tn8f%MQ&&SY|bD5?^
zw--4_Aw(*;Gqp2T3YjM<#h7YEF-k5HE^JwIf<mVPKyslN7eK&b-IM|`0Q1vn%2<lX
z2!zr)ON>OxL?NZ8$eAYsDR`vVI4iVB(k$_IJ{h+xV8*!;DD&chjg8@;Uu2o9N<{SD
zl}+7@r`DkjL33W3`VgUxp~#B}NKNe-n~g^YoC_g{SoB^auWK_qJ{hJ-Kgpi{$VW$a
zw$n5V^*qEl=yn-r5PW-CXsM+XA&`l&)9nF(_W?p|XZEUWM)OIlLP#kRt@9*}Ayn4c
zy5Rs?Ybhmi9)SSBQ*=IP)$*rA2o9O$mWK$)h;!i_XAndbL@Y)h5ePg4kes)A*ZrSF
z(DJ}yh(y5dv4(}<Txuffb~=;B7QMl2TCSa4msxHji6rd}7QXeui^JitF;=Ika~3!P
zZ?oyq2S6?WAOxZaD7X*`q!vE<5PWOlRW3#sDKd&NYId4_lK`>Z)VKb!cE<(;s1zZO
zTm+O3Olh4+Ge0_U1fH1EDGHUOxnKa(+05FeNVHbmH?<TZI1dy|T~)JbqExSw2WKT`
zg;cz?4#p@1XU;eCGFOR+#DZ5+D5a_pB10~D^aK>VGa7jt4^~ogrDKeD@7&>xL5NZ!
zMC$jty>5|kJlxwo8J#qTCS^nihhaRn7Pyf0bm|27L~^NGI;O8n2dvxaCP}g|Ttvj_
z$rKq&h49Us8K)9H94^1{{qH|<@m$gEbd}JWS#R&Rt1<>H0{zF!B3o5mO6lDxqdEd9
zrHVY)Ld1}P56(N`M7wViQVPV#84H1cK?KIyt))<^g}2A|t*tBos2HPjtr;4X5=~yz
zrZLv?d#xH-mfly??kjfp524n0Rp>zAff2){rIp4y%yl>Gcz|g+f8?>pJVgcE#-RAA
z@i4}Sgo25{ki0nsP2P*<vA|F9X5L0`eeeh@1cwYl^dUmqsKXgBh{OaiLW&%i5Q>CA
zE^Lg(g~~di^rWl=W5#*UkZ~ciTmVo#pHT>@PBNV|&SgS)3J~IaHlI&tYfH;3!$k@)
zQA$e{h*}bJsx&p$R^?C#;R7SkLMnmIIYUukLeVFQm<Ja^;EW68LJI55;r{;7;Xylm
zD5ZcxuTuo;rj1+5`$bW>+A|8h{=n8AMpcqzPDr6N3M`#5O>L`^Ti40*qoYGx+w0-R
z?(Xh8@4PFJt*xvkj6U+@lNUemcu{m2<HpC7L+$KjRt<-_R9tX%Z+lIMpp>fXx|Ix0
zDHuxSIWy6!wqIVg9~I?!CK%erFoM&V8h}!&z4Rjif{3vtae|aw2)e)bj1d5Q>jfeL
z#yDc+;EE#m!TS)hG;Om$_ut9=h3WeQP(aR^bD`Vq9#_?HIP49FCzaJ1lSy*@=1rm0
z%KDm4v-xb6CRqqhAPNM|5D*3DjDd~7B{GT-A`6j)h;7n`qa#8f&VWNi7LhSzgp4?Y
z2!R11AfpJ3A~6DRAw<By(8V@?Eb~t8g3q$Td2hT6F(yh00M;}$0HkS}B&nItIU;cK
zG1gV-o4Via^aow!B($hwa6W_}1Vv4OOk-w~nD@BW90KcRnB}poVvGWbd@OV^1x_Jy
zp;~WoHLrJfcbs#>em_lACr^D<XGv-sQ&;uz&Ym%5_hgS*leu_sW9#U>yId!glGHCo
zF&xb%)vS!x_OonrZS`pXz*#?BSm<>JRaH6X-??^e>)N$HSY7_jU;DMB=v;XCVIFPe
z?Qn6pw7g{NNum?2RjXP-1c96@5nZE{VhoKjMC4+K7^M)MZr29~NRr4ItCW(+$KFdV
z5ix|oLm(n~PYO?T=3KZBPXqw(qxFU}!8vQM;TS=903eC1tW1k8N5-=(V~m=nNmHF9
zDdz~#hCanTQB5RDM~36tuCA=^y?1-_%$d$$VHA#P=M$oLZ@inNX|LN;2**vcIPA~n
z0TC5K!oYJTI0X)b;k5p#JywK35Tp=FN-Kakcp}a)5sWb=2(=K7YR)JEF=)46r`Q*3
zn^O~Sq}CAI@AehfN-0yeiXadQ+&eizod61{wJ}X16^mr%l@{Dq^XYi>-~*eTZoapF
zhiAH!!sY3#oTUJ|u7`}MDm%Fz`^I##BZ}M2oOQEKzmRCU678%~O!3HV<2q?(jZHi1
z;AlTaBPAp9M~4T)VP7fr>MJjg$K$4{Ui!g{<#;xl%uB@V!iA$;^K%=?nYHC}=a+_y
z!>n76rr_e!Pk(fMZR4Xq@ez)6;llZi&2=Vt-Yo*Mv{%fX{YPK?rw@PN15+1+OnKfH
z*}$V5F0RzIF}2lFGh!4#as`nkT0;aPl2S5(#+e8)FADE{qEjK2(7H1mpp-Vo&Y%y-
z%etwnhNDnI`o{UjWkLxGoO#Xy!_ZPz+m)A4Jk1lGN-jW1=oG5g(Mig=;wHGrq9<Q9
zmC!sZ(s?~=-vB^#&U@<+xDr|^)fiV>n-`sv`8+FnYn$ip9v_J`^_<JRIGIkKc<KYj
zH1oPTyS5y>6^bLW6rrQI;@*aNMRTVDU=V^Qf(wQoB2iGtibQo2#l6uGibN<x0iZaC
z5Ve$vRH;6FDW$mLC^1ozyp;_4MWKPYSv4PzQ>l1FZ{6zhS`5_GMxfw<K&MI3>9smg
zlBC|*VSnlF-JM4-KP-gc2!r8(b6$hzgor2^X^LbTjG?xMl%gzUMMh~7IE&t^5GW!7
zXAzawF8Ibf7kyK^@pP<GHC$RKI>mf4vDWTv?^L7F+QO1+>{B0n>WQbGYK)o9=HL9z
zw?F!spEJf3-QH|A>ko$%Xh+`s@Q0sXTV53$6^qY&>|;N8>E-heURpb|zO}WrxV&_8
z>$)NMqyOjmr=NKIzx@aQ!x#VizrVJ;c5DCcFjvvDM60~hRZ@8$y$ui`k*cg4#(@z;
zWJt&uwscw~*5;G~=Ss?UFDZnujfpWzA&CfyPFI#OL}CyFW5AKOiO&F}qxRkt3Zm#)
z08b%?=w15{l7cI#Jo8L2K;(iE2<Hs|2$V``EfdCA2xKaw^I|fc3vO*-B;~lN)4@`A
zW%Xz_pOrJ6rA4PuO0W=3T^sL7N&u7q5~Ea%X-TO}Ao%Hw5w;pPW8|P!HzOm$wl0Sv
zivftWWcT~{Dr!4Bk#S(0VyBY}j?Nm2QAx=WAd(hxbaIj<T5=Is)JZBTW5&}7L+lRv
zz|mVLB}yfw<a?Q++3WxS9RW#1K~#HtAAk0z8)x^A4v}F0=nz!ly|s<y<dnCptb|q!
zg^z?%N}WWZ3{fNy!~|m|1Rq1fk)tT<CNegi%}>S?=OZBVF`^Viw0-;5-mTjL*p-JL
zE6e(S`K|v|NcqxBKX~}^qut(MVQJY~dvI_t><<nP_l>n1o10}>O2Hk*&5g6)d*S;;
zbpFBxV@z<q$g<=8!z+(J{=2{Tdm_5O@>f6ijX(T@wT;c5=H<z*E^;5i&MO4QkT=$~
zw5^s11Dp}Hay=p<i_mV<+d-|J%!Cl^o~hkA=e*QfGsbFb1m_VV!T*QIf4|5Q5jk)m
zAPR&SedNFt7rE9Bx#XNPCXl0G$VB_0vevA~M2Ox44!Q%w6HJo*gQIj|nW2(8*}l8W
zll=NS*C<e`6UBw#KpfL7pBM|kLU6_g7o!F85Q#<Rd;|)f7~@=NL1++yXEK!-2_wkU
z1ZYcChBlNO*=g;~sXEA5Q#ajSCo9sjp2rw_gTCZqHlKKBR?lyyiJFupV<c{GZ(qIk
zPTnm%#j2^xvdQz@dH>$6ZBMaN6tn4UUQQGjmY_RWb<S0@W9^&DnRs{-eQd0mnV|bU
zPAo)lM2rB16ez%$2o!-pa&UrcF+JRyS7p-cMuzjc%9Et%bgQP>y17+PXD@v7yHZNd
z`S}MgTz=xpU;X^&-@f)vn@m(n8DmaPPA*@*ytK45IT-=P`Md(aM<2T~pU?O9_RgL=
zcWdire=uMn93LN7<I$h~>GvNx`@knY`Khmd<@eTx-IY#9Bz!s=S5>t%7;3FrLU@~}
zVw@3!$bjyhyjtqS|F6U0z8N7nZ>_abQbvq1??aL#1d)J6WbLZl)B7MhL<WpAU;vR(
z1b|q#qrJE<TeN>A&og73wayp^OlmE-kW%QwNx3^76~l$BH#q<3qj|5NclyVT8;>W~
zu3c3^#t_S@$&_@p$#aouMeV%g2)#vM0vG{Hk}M6xIS0W7FkmP(7g7bm(MN27L@4eR
z&*A;kH$;fcL*(tp+L$JIA7c~(0YqJwb)*=5r;}eie?C?E&@{m%V*Ad{yEm?%IlFl>
z9&^sUkKX&>?e(iy*Vfi*Yl}`%mJty<DygcvF^y@gbB&)(N87iP%2)H6beb2L?iF>6
z21sz8ptd3sprtseO0Hyx<eb~y*_qe%!r2Y3r8hxnMfV_YqtR%ozaXXFIJ^1Q+t+^K
z7k}}ccdjd?7@`p3+_`h_ynVH<>z{h&rx?Xfk$dm+JfBP^>zij^_}=&4yS@GKXP-r6
z<!oM;<<C6((_3#}y}Q5nAO7&GPyNcTtZts09Pj1{lZr>KxB@11WPr$3l0XdYJ%bo{
zitR<lT9E@WvPb|(bU!n9s&2#x6vMr~cg|5t$q;~H0E!U<#g<nUV~bW~ky?u@`j(Lx
zSzCkJDr69ee$4I7I0tCA;K&#cz(A)4=EKh5{P_!uo9A!s?^~5+dFN;{qsY#j*<9>(
zDFC!o#|Vv$gb2=CA0si&1R_U35e&FsjBDm|$p{1^At5psC`5_?f|#cW#M*C}l#;~=
z1hK6>1Zv4^oo?=ewYKSY3JNqjKIFibmzU~!xi}mk17w6TipT&3PmA2g;A4<dk7v_V
z%h7c5>@&}B&KH-Kv=$U&R&)<XH5VdJrSd7nuxBiHac_30djmI_vQgetRm~t(DRHkD
zdW^L-O*2KQ9Kf`xUVHP0GgI9;*ey&i#^|lvozCvuxs&FdUS8bYKe+PP<D<#s@)K9C
zJo&_(z1{N<oS)97byX!va_iPD#@NDOaQE)rEJ+bD%ZtW)Z{5<;@_asbjXAfu@zs;#
zwWX!Htk0f3J38EZ{YP*87yr%Q`SQR2%6I>--??-1Y6vb*(mcyOKwXtQ0_U87TL1p(
zO6Oh(ou4YbrwT%QGLTZX5WLou*2e5wl4H{}Lbi_c(?=vnevgHYgds#039O~oLxzYD
zi4h`WLdbTu^FCHp!&uwJtWZc#=tHcDHDn+E@JE(6H!2@?0UsCO==Ki)6_a{zcmLH_
zUpqNEI=^|gu_S;5uuh%>0t<)?2ssm+`N$}c13@tZOc)qofxw4=Oh}YmYQ_apYy)hP
zOK6)78Mq)YMr@Cl42iXv<p=-|Uc68go%wtQL`%y{nhVpEb#SemnI~E+&Oi4{Uzp72
zmmYa!ef<myzPPkxjA0b5wNE|yBxBSmir9u0r4lNYLZz9`mDCic2S;mzp%6+IMLJxh
zZnt9S0&ymIAZK0U9B@9b8xy>X@y`C?pT77arpctPUG(1B=>6@RH}BlOT_lM@QKWgN
z-#<P+`SfQ#V@#v8ZcKA<e3a%{Ih()n+N&2Ix_I%zc`1dGqBj^=AAw<rab;;qOS!x_
zJiocQb^Tpu>S{KP-WF-m?RB@dwqE?!cRu&|&zriejERJ4k_8`}^IR}S#IWtAWdOjC
z0kYPO$N`j)5Q!1BqZ<IU*hC^Yb^RlA!MB2$u@-<3d1OElVhcfKr?{8)uEhvq3^90W
zL5%<{sV~twOELs>!2?6&iYtX&+Q?mi0O+_ntnI}opOR@Yvwl+6XU?5xQoZ*28?U_b
znzf!I57wR>9*&NWf!M*}u}nGy;CwXBw56ZueKaOxJRug1F-=VbL88j@Vqu{Su?Z0X
zq)?KJmQKqMn%Yx@wu+*yc?4jQ!O8f9ah_!vGT;CZND8sFb)(nqK78>($&ph;B7ss2
z7Zz65R#mFe`N3c?pUw{V_j<h^03<qT4a%Gg@0}3Z8c#lW?*+pw%Qn}~nYwXGtJSr#
z*MZ<`=QI~-#AvM#uIT1XjFG@G<{3Gn^^MJmsgQG^kg6n}b_?P0@yX(F@!C7re(vW!
zbMew8=UiYhNs`E5I-TCy*`Ckmmo8l@%W`F9<>cr%NfK148&3+(ImKSlNu^G;{F!Gz
z{>RTh|H#D$bDg~Y`l|r2aqe8{{r~ZAfBTpJ=3jf^yWc!MIMOL)D$Ruu5KUFKX6ZJ*
z4Fsaa<Z~XZ`|(bic775<*n9R@&bf2m7!xBUS}7@|5<*Hs<~<Od8poQZVT=Srh9Eds
zN>T8PaZk=hi|7GR38{r}F)+iWRLFTGtc^DzM#fc|sI2qJKl4$@yL(3`=O4O=hle|N
z_ujmA?Zp>gy8QU#snQ(r<YXMJq2NqoM&qfxeaMss7Ogh~UP_)YCPJJN<U%%++4%Ux
zcn1Qr`FsHo`@J$a!2|;yBMHXa?@~)g^R0)LbHersAGK6l@4T9($;Y34wv%UXy!Og;
zI)xZE*4H}Sf~*6erm00c`L@MG^H7aOqY%Q*?OQ+p7k}Q=Wg;aac8Vfe$AoG;r|1z$
zb1a*B(C?RJDY+6trFkCmGz%dU0)cB2Bxl;2z2l>c4_<ul&Q6+TbPI|>ufM#Mc-LR(
z-@1N%VP$#iO_(*!P^K})$!xl@ac;P{%mlYhy}Y`*yL+eG?RxJI4o;T@Yildh>2z&<
z#d&Zpb~>H?yLWndwz083JwDpKb$g*(eCB7LW08XQ{eGV@cI)=e!<R1o!Si3gbm`*b
z4?ViG`z@7sM~C|x%L}vP!$hd2sa0#k71%cA#u&jyh~$hFLTDu!0T3WC+nAzL%*)bR
z7l@>mC^!IA#&E`@5&+N`;~jA+P>T0=RzS!Y=ZFDA2*w!K*wdPbAM5FrQV;_Vz_{2y
zIAS_avyN%}GavhjiDPG0mX2rjd$)E#Diq0UufG2Hl_!)^OG}Hv``LK3&>xnQu@5wz
z&W~>Gz3|e@z-i;$MsSS)*cc8Hf`Lv}78Xv9jt);o#jx)ga@+7;&xK$pAn?g#c4lqu
zz1{7V#pV6|{dP9Ex4#5vn}-FTPsdk(^!A6I{vb!Jn`S<p&Bl}H{9=Dtm*ue2o7W9P
zE?R@PQp&i~UgP<Eu9S+-dFyQO!5Ge>X$<F5=pOjU6tqU~$T>!298V)_HE%)$O$td7
z00{3w2*EfTVvNBb93CT=E(DoqA=L8fnpQGK>ZpW>ybrxzmUW9OPkn$GE-bAeVwUBM
z;b=4hfR(k?GiS~aQMcO_40Vwl?d<2B?wR%VPMS;)_fG1v35JtzX44zjuYdNlpS}F(
zBmejB|NG(6!b`8eo+Rq;|HFUujjw&}xljMu-}{|^`}AXv%*uNI@aVCN4_d|qCq!hC
z7z02iIcI{mM&$d3{nj)F0ImfGpI#Yop9FEgr}DnVzx|bzvIV*j1Z!Oz;?1(G3=mxe
zBF<Z`Oe7){oC!6l8e6+ZuUwhbu6A_kk;mV=v%7xj@(<s*y0EySvt(AAU;m%}@%al6
zE)EyE-ELWyNveyrGr_uuoGWd8eCef^N2Bp@Whk|FzTUoh^X4mKY?|e6Z)0_3ZmkJn
zl^#$<?n|m~+?e<f1tu!xg5ABli@;3P<au7#H6qeI=+J4wx8z&bZ=4()T>a78!~OsO
zP7V*7#yoI#BQH`dBx4|?kV*(+jB`#Y<*aMZO^5sYXE)CF^VA86j37iMSdBsm)tDdw
z1Q829L>GedArMj88)~g<DL4yE2+6eqNF=u`EnK0L%8T4{eli&^E-z(S)&y5I&BEeh
zIXbb{4hO@5PJEhohl`tM&p-OumABsdVXxP(Ow}6>>$*NXJPaW`c=6)e`f4+q7exny
zPqKVzY03IvOd}DOhXYox)RW`cX!73mcXzjM{q0}+TmRW#{~OPJ;<*=JdAT!Om`!Jg
zd;7oeH^1<kU;Lk+dG@)jH(&23;*rabAMf4mrwM?6KdB)FLsY<!^ZNi`!1u)qQ@hsH
zh}cf;@IJ))RINZEPI=XIiX;Lgu+CazoU@#<B+=1R8EXWtQza#L&Ibaab=lag({WX}
zd3UdJbpGO_D_1^H9Gyg+axRya2H*bE7ykEu^{+qviBCLo`O&T0x6Yo~n9XL$xX#j<
zb1KWnW%c@xespwnr1PTF>lVGvpr2q}I)IfVW6m#hx=9RP%Lgu;?=G*Db>k7qx}Af)
zqoa`$;*cFBTK}6beYv$}<$2NVcJp2*&+@D&y4`MC<lA?5yG3`QJ6vB{8;wpVz}s*B
zD3hZ5(;q`bV~n#-rdpV~X`hu8qvU)#o@{Mx^^;`h?g3cCfr9s0s_MFyLJL_~V<1Ly
zjjd~lfpaO4hxVHDB6yEngy0$zf`ukpYi(Io)`jtSy0g8#w7J<dO%UkodU?2Td+&HQ
zo-HIvk>r>b0r<s-9zsN^Q=wI?$}~&2w{OqqbAWj1(j|dhYYh}yX>@sMdGGMB@y<I_
zXtgpNOrue*_D#7w96a&Zqkr^=e{km9*+(v4e*3Fmz53R*OAkMCczpaTfA3fS&oBS$
z?X7qF{qEMy_a59>iFE~$cuR$00Bxr?Vw;3Jy)#8<`PKJq`%(yM8<X#ci{59IaUOt$
zd!?zTc=Zr{xWCq<7-Nzo#yA3MTYMYm0+HZ+xYV1}E^;^+jh^_>Pd<F*16x<G<=sK5
zsn_d&{p;WO-~Q#l{M4sDb?M^8YF?h-JZqaKPcuX`jpa&dj@Pf>c<1`{a~CcyEH1J_
z0FsnaAu))<JhQVor$`W8u%&A<AQapfKU`coo=&5Wy<Sfc>-YOxTU*AMG)>ESd3<~v
zyf01ToISP02I5lOymmcU7ec7(Dpkp|&pxMhN)#Jos=DS3#OUP2d(Q}*b*R|w_ipdr
z-YGu(bW_(d1VAu#lM1wT0}{$f?Y$Q&qOHpDiEd0x1aR)X7a>3-DL5BWBbPoxAi=rd
z5&*g2CnqOOZPP3_5T#V!J476fPOLQ^c|)~8w7}OkHg9e3EG;ifDU&P<G2XdzM@l&u
z3?F#ld^MZ&yPaxYX5C)pe6U6dxw5>hqx03&)uklAvN&8G^xpi@TQ1U|*V)~<lMM#L
z!Em^|eD(U)=l=44`mH~H{<r_lZ-4wFKl$C~|Kpi%w=A0!fpad~qaIK@dBhONpBjGH
zJxk;1Wye4W5!t<(h*r}F;P*_e$OT6X_e8H2v`#(%Bc)V~7@T#^DVcF0A|u9m%gq2}
zfUGfg@92c*{qql9+PwH+O{{eO!shyGufDOhwe_Vhf9dBw^O=u)@Tr}>{VP|Vcz5f1
z&`H1FHO{w5<L&qEUVZoanFr1-bQf0FR;&tKvW~`CmW-`&)x4*b7Oc>jOti|fq$moZ
zv~|Z-t&>ck%(J|j&SHe%<MQ(A-R*6uq|~bY7IEaKb~Hf7*v{>pKYsrC@o1zHb$oRA
zmp}XSXVz92KlQHzGI8_W>v^v~o6VdH3xnbA&YdJl^1N`3L1Zj~t!t-5T~=N?jyeWs
z8*9cVCwu#%uAQDqsXHrcp`6tS4T?lc#sy;x@W)Dx1MO_zZAX?60y!syXqu*JnqhxI
z2ZBh*@PYH^S65eW-@bj8pPkO8X_`#NlSrhsKC`|$81zh4YOQT!q!Q=@3Pm*6LTCb!
zr@YYz2bFQ=ul%LI@aUxnfBiRq>t{ao>6O*RyGP@BSpqU9<eOKoJ$UJn-}!f6IlsEP
zdG2f;{bX-PWC`anBDCzm2oQsJ3^W(*5mE?2?Olr6bXr7q`ZNqNp3*mg+V0i+mewEN
zES+|Ba@5E}U^aM5z8&N69=5X`<vhj7Y$~<#01K<D<Fe8$dHAu%UwHYouYKh!>+9<f
z<E4uaRrB)f`r7vP?Q<JvcaM%vJ!c&E?(Tj62QS^c_1<Uy(tk4EJ?wNkwe(WbVmFm%
z&#qa&k#+WW?grDSJW2XJktxrJ5fNag*KLTZ**r;822fSi;nC4-K2MZ9?QJD$@vsC0
zgq%yMG$*WQm1`Vhtf`u&vE{r@Go2?Y$ukBZocDvlK=77G!^fl1#q;MMzVuKvndMq(
zDds2RrG@_C;h~grIxW5TAvTk8!YDdp>HvmWmKG)(pH$TpK$ZPM=cx%C*s+<7s(DdW
z^QM0Fm6zx9+1)#Ls_0dbcYEDC)7j|cq+4{Lsxm;O(x-poqgl~Ovg~*?vbG)!dRMQ$
zHJwg*jE_Bjg@^`&fwd;jvKF|YigY|?ZHq@or`mT8g0JVZ{k^@Xo_yjT{_5YmwRcz)
z-KReClUKKX<MGF@+_<$nt?PO=9j5xXfA@EP?H~N=Z~c>h{Ik#eM0tD^pcVFkh&-J-
z4TVnb!<*=yxQd7|c+NR6xbNx_LI6d<g+J|?eE)TCcPSWBByZj6EQ^TNI}{uuy0$o+
zBOrzlhD!^jr@0q8N&CYE!}RxFdigj0`ENY);SYZG_rLOmFMOd$wD<0C_wLG>jV#r9
zs@qk;$;s%YS6{ht^S$w8Je|(ZoY`1h9L{-TL*>0ih-soV$FpmzmABOI6&q_}d0FO#
zgoIn~xG;f{r*5~`Ti@K@-CbB%u+}ohz4sxw_BJ0Ggb*lz)T)`5ob%(oL*q>z@^+<L
zmZfvXH`0e75yiQ4=N@_V(dCupu)8Oftea}>;Y-muQ<a)Ajfg;;b1oPvk#-7-K|zv+
z8c!C2l0B6IlgYx6x}6dj8UrC<41mNKlgI@Vh)BrB^NB9f00czUbfOTadk2R*yJxxs
zH!l;F3dNRImYp>ZKKS6l!LAU@TKj_+U-Zsic;MXT=K9IO(O_Y4`})n*<;7|?&pKVx
zm_*B!UKg8LoQ(Wzo^UZ(T`#)5cW&K17>^g$H!Byu_Vqu0?z!i>!=>J<Z+`0=-+bhu
z3o3>;-oE;;zVxM^`Sho+z46+)r9Pv;C^Di*B;j;H-iiwpqHEh&+laZ~?SWAcIdq&z
z3ZYup7X$Ke+KkQuQCmDh_n3(k4Af2IZNnJj3}bLY2to=rgb+aTh}=bHYCCuA%*BgI
zr#CH|Z@u`vSKoN^bD#f(m%j7OkA3W8o12>epp{%*U73~T$-!Q?=(-q)=x}fU#<h3a
zBgl&{egDsX;*%iRaAApKRHkfd!;N1AZ06;B+}PlIQp+S&Nv60aMb&hcr)gc5)9G|J
znZA4VstYt6ELv-=Yit7u5jir(T=2p9_8y$3X>A+M83Myd)qL)av2{JC=$y&2Oyqek
z1RB?@omt&}?^dTsIFffwzmo|d@GdX1X;tbhBOz?8eQk4z3t5KUToqX_FHXuPTU~N_
zH=yLs1F|$rxwlQ(5V3xL*syqg`&Msl3G>8w1D@%K(lkB6VO}*LJ1X7TJG}Db`ue%E
zORFoR(ed)y^62R3t+(IwuF3PX-!G1j52fVCN5`FhZ!)X9-9cn+(M&MaEVt!Cs;(X!
zEcb_=5RyT<lnT{<d;fS=&C;xsb~`Jpi$DJtK6CS(w@g#rc<)v(QG4U57uq5}n$92D
zTvag~?(H$)-EJ4T3?bOk<VBjK=_xA!DEMHSMr(}`gpfQ%YpoA~Sl~+5)_@Qc<J_3m
zl@BpiRU;S@5JUoiB+0xG#u#H8!9W7}wwQ-&kK9LAc~V(Nr+T=$c`~zaT>H_VeEWOP
zeEbt{z4LBm-7oz4KUdCYby=O=+|W|o-rsxlvB!?b<D%ccb?dzp+3e&f=@gwjA5Tvz
zs8vr3DVen@%JsFg<KszB3RhMA;R0XX%m*uu=Zz%;Roz%*{OD+88`sH;JGXA1S>Ie;
z-;kUqX<ApMw{;5-G{zWP2N#)0bY1|XL8h&(=d)=q%QfR2l>z`D+dtUHTnVl9!omU~
z#u(=Fxe%OUP(sK+oLb*4v^bjJy$e2449=5nSO~nukZ@k~y1p0ySKN6*NK%Etl~VSG
znPnV1`rW<T>*qGoL6;aY02zU*=ABpHqQ;EtqnPF1`IR$gI-Sm>oGYccV3#jHeCO`1
z;jmxV<=J!Rh~m-FD0o^JEGD^<N*n7r=ZTVwy<C;?<mOf{OAimn>lYq^!P3sojvg#u
zK7aAXjq7i{`LdAk^oKuqcr^ao|M@Td;Ki5w-R|A(TfhIcKYI2jKeBS>jHo92hsVO1
zT<cC!7;CH27DeHrjXqdo+Ci-CcyE(%6oMlPt+LfN-#8b67(+m0oDdl29FbxavPEnV
zdGDLX7}M6%2yzW^DFA%CJ4ea6kb=*uX7iy7sMCM(&;Qx>-qA1rSO4`JZ@+V6YwPd)
zm%p58vAnbl6yLjf<I;l{9(m-_D=)pcdG3M3y}f_-YyaeD|J<Md>woPR|Hohd_3q+Q
z%G2+B|JzqSc%|R(P4<oyij_fMEv+8iy58ya>$;xT){G{m@ua0dY8um6s^(P)0dmkf
zK}5j?7ow`l;2oe4nrk7mEF<Uw3g_EWJP?9;Yl|!sg0HWx^*UW*(9-;pydy#gy<X27
zM~Y^%S(ar0;GAXgUU;zW0ReL4k|YI0>6$h^A46=HPK_~MG*&{0)OLk3Z=7=s?9{qm
zvADgxT~#&D6ULcVN^>DI9-UuVTy(W9(%jp4{_F!XNg{$VHH-A_jhmy%c;no;$1Xpz
zy0|2z@-DV4bWlkk(1~`zJ9e5$98YH}{o&n%lkUP`#(1~er9gS7^PvxY=-lSo$=;o>
z|H(Idy}_S(_BpB3pZ(+~qiO!#m%mh-X1c$>l5lTo9eg)Sr4UtJhu~50EX#yIYSB7G
z_lYcRPipWjz=RWn7-MMd{Sew3I7Eg31i%@q%StJ!kVA;%1B;YMr6jLs4%=e0$lA0j
zLngV%l`M+lpMLR+Km6gF%Nq}T>)YS`&I>R6-M{<ajc3zD569J<5p{aK{llZim@7{{
zb$E3AAD@3d%d)rMe*34EmLGfc@}#T+#d=Z+CQM_~G*vN<<|RrwSX$yt2t?w%_92EK
zG0|EAu%(ry!9wj^SXfvniq3dEF8V!=C|K7A7by}sZ(Y;a7#tTWEBZbHgveQ-5P)N#
j*x1^~&>omtQtAH-lq+qk2>n_M00000NkvXXu0mjf`|%w4
literal 0
HcmV?d00001
--
2.14.3
6 years, 7 months
[libvirt] [PATCH v3] qemu: avoid slash characters to the new domain name.
by Julio Faracco
The 'domrename' command needs to check if the new domain name contains
the slash character. This character is not accepted by libvirt XML
definition because it is an invalid char (see Cole's commit b1fc6a7b7).
This commit enhace the 'domrename' command adding this check.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1333232
Signed-off-by: Julio Faracco <jcfaracco(a)gmail.com>
---
src/qemu/qemu_driver.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 7484b00e2..70ae18524 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -20757,6 +20757,12 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
if (VIR_STRDUP(new_dom_name, new_name) < 0)
goto cleanup;
+ if (strchr(new_dom_name, '/')) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("name %s cannot contain '/'"), new_dom_name);
+ goto cleanup;
+ }
+
if (!(new_dom_cfg_file = virDomainConfigFile(cfg->configDir,
new_dom_name)) ||
!(old_dom_cfg_file = virDomainConfigFile(cfg->configDir,
--
2.14.1
6 years, 7 months
[libvirt] [PATCHv2 0/3] query-cpu-model-baseline QMP command
by Chris Venteicher
Implementation of libvirt functions to support the
QEMU query-cpu-model-baseline QMP command.
This is part of resolution of: https://bugzilla.redhat.com/show_bug.cgi?id=1511999
Signed-off-by: Chris Venteicher <cventeic(a)redhat.com>
diff to v1:
- Replaced c++ style comments with c style
- qemuMonitorJSONGetCPUModelInfo{ToJSON,FromJSON} use To/From form
- qemuMonitorJSONGetCPUModelInfo{ToJSON,FromJSON} return pointers not integers
- VIR_STEAL_PTR form used
- switch statement uses virReportEnumRangeError
- qemuMonitorJSONHasError(reply, "GenericError") treated as no info, not fatal error
- virJSONValueFree(cpu_props) during error case
Chris Venteicher (3):
qemu_monitor_json: Populate CPUModelInfo struct from json
qemu_monitor_json: Build Json CPU Model Info
qemu_monitor: query-cpu-model-baseline QMP command
src/qemu/qemu_monitor.c | 13 ++++
src/qemu/qemu_monitor.h | 5 ++
src/qemu/qemu_monitor_json.c | 175 +++++++++++++++++++++++++++++++++++++------
src/qemu/qemu_monitor_json.h | 7 ++
4 files changed, 178 insertions(+), 22 deletions(-)
--
2.14.1
6 years, 7 months
[libvirt] [PATCH 0/4] tests: Fix 'make check' on FreeBSD
by Andrea Bolognani
macOS still chokes on it, but hey, it's something.
Andrea Bolognani (4):
tests: Fix virnetsockettest on FreeBSD
tests: Fix qemumemlocktest on FreeBSD
tests: Fix qemuxml2xmltest on FreeBSD
tests: Fix qemuxml2argvtest on FreeBSD
tests/qemumemlocktest.c | 12 ++++++++++++
tests/qemuxml2argvtest.c | 23 +++++++++++++++++++++++
tests/qemuxml2xmltest.c | 3 +++
tests/virnetsockettest.c | 10 ++++++++++
4 files changed, 48 insertions(+)
--
2.14.3
6 years, 7 months
[libvirt] [RFC PATCH 0/4] qemu: Forbid NBD migration with TLS
by Peter Krempa
Currently we can't use TLS for NBD so allowing it if TLS is requested
creates a security problem. Reject it by refusing to migrate disks and
setup TLS on destination since that is easy enough.
Note: That I've did not test this yet since my TLS setup was broken.
I'll fix it later today and reprot the findings.
Peter Krempa (4):
qemu: caps: Add capability for TLS transport in the NBD server
qemu: monitor: Add 'tls-creds' parameter to 'nbd-server-start' command
qemu: migration: Use TLS environment for NBD server if requested
qemu: migration: Forbid 'nbd' migration of non-shared storage if TLS
is requested
src/qemu/qemu_capabilities.c | 2 ++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_migration.c | 28 +++++++++++++++++++---
src/qemu/qemu_monitor.c | 7 +++---
src/qemu/qemu_monitor.h | 3 ++-
src/qemu/qemu_monitor_json.c | 4 +++-
src/qemu/qemu_monitor_json.h | 3 ++-
tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
tests/qemumonitorjsontest.c | 2 +-
27 files changed, 59 insertions(+), 10 deletions(-)
--
2.16.2
6 years, 7 months