* [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
@ 2011-10-30 20:22 Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf
` (25 more replies)
0 siblings, 26 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc
Hi Blue,
This is my current patch queue for ppc. Please pull.
Alex
The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e:
Max Filippov (1):
MAINTAINERS: update wiki URL and machine names for target-xtensa
are available in the git repository at:
git://repo.or.cz/qemu/agraf.git ppc-next
Alexander Graf (4):
PPC: Bump qemu-system-ppc to 64-bit physical address space
PPC: Disable non-440 CPUs for ppcemb target
PPC: Fail configure when libfdt is not available
KVM: PPC: Override host vmx/vsx/dfp only when information known
David Gibson (15):
pseries: Support SMT systems for KVM Book3S-HV
pseries: Allow KVM Book3S-HV on PPC970 CPUS
pseries: Use Book3S-HV TCE acceleration capabilities
pseries: Update SLOF firmware image
ppc: Generalize the kvmppc_get_clockfreq() function
pseries: Add device tree properties for VMX/VSX and DFP under kvm
pseries: Update SLOF firmware image
ppc: Remove broken partial PVR matching
ppc: First cut implementation of -cpu host
ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3
pseries: Under kvm use guest cpu = host cpu by default
ppc: Avoid decrementer related kvm exits
pseries: Correct vmx/dfp handling in both KVM and TCG cases
ppc: Fix up usermode only builds
pseries: Allow writes to KVM accelerated TCE table
Fabien Chouteau (1):
Set an invalid-bits mask for each SPE instructions
Liu Yu-B13201 (2):
ppc/e500_pci: Fix code style
ppc/e500_pci: Fix an array overflow issue
configure | 13 +-
hw/ppc.c | 6 +
hw/ppce500_pci.c | 82 ++++++--
hw/spapr.c | 99 +++++++--
hw/spapr_vio.c | 8 +-
hw/spapr_vio.h | 1 +
pc-bios/README | 2 +-
pc-bios/slof.bin | Bin 579072 -> 738744 bytes
roms/SLOF | 2 +-
target-ppc/cpu.h | 23 ++-
target-ppc/helper.c | 11 +
target-ppc/kvm.c | 197 ++++++++++++++++-
target-ppc/kvm_ppc.h | 50 +++++
target-ppc/translate.c | 500 +++++++++++++++++++++++--------------------
target-ppc/translate_init.c | 90 ++++----
15 files changed, 755 insertions(+), 329 deletions(-)
^ permalink raw reply [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue Alexander Graf
` (24 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, Liu Yu, qemu-ppc
From: Liu Yu-B13201 <Yu.Liu@freescale.com>
Put trailing statements on next line.
Signed-off-by: Liu Yu <yu.liu@freescale.com>
Reviewed-by: Andreas Färber <andreas.faerber@web.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppce500_pci.c | 76 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 56 insertions(+), 20 deletions(-)
diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c
index 2db365d..0ece422 100644
--- a/hw/ppce500_pci.c
+++ b/hw/ppce500_pci.c
@@ -98,11 +98,20 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr)
case PPCE500_PCI_OW3:
case PPCE500_PCI_OW4:
switch (addr & 0xC) {
- case PCI_POTAR: value = pci->pob[(addr >> 5) & 0x7].potar; break;
- case PCI_POTEAR: value = pci->pob[(addr >> 5) & 0x7].potear; break;
- case PCI_POWBAR: value = pci->pob[(addr >> 5) & 0x7].powbar; break;
- case PCI_POWAR: value = pci->pob[(addr >> 5) & 0x7].powar; break;
- default: break;
+ case PCI_POTAR:
+ value = pci->pob[(addr >> 5) & 0x7].potar;
+ break;
+ case PCI_POTEAR:
+ value = pci->pob[(addr >> 5) & 0x7].potear;
+ break;
+ case PCI_POWBAR:
+ value = pci->pob[(addr >> 5) & 0x7].powbar;
+ break;
+ case PCI_POWAR:
+ value = pci->pob[(addr >> 5) & 0x7].powar;
+ break;
+ default:
+ break;
}
break;
@@ -110,11 +119,20 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr)
case PPCE500_PCI_IW2:
case PPCE500_PCI_IW1:
switch (addr & 0xC) {
- case PCI_PITAR: value = pci->pib[(addr >> 5) & 0x3].pitar; break;
- case PCI_PIWBAR: value = pci->pib[(addr >> 5) & 0x3].piwbar; break;
- case PCI_PIWBEAR: value = pci->pib[(addr >> 5) & 0x3].piwbear; break;
- case PCI_PIWAR: value = pci->pib[(addr >> 5) & 0x3].piwar; break;
- default: break;
+ case PCI_PITAR:
+ value = pci->pib[(addr >> 5) & 0x3].pitar;
+ break;
+ case PCI_PIWBAR:
+ value = pci->pib[(addr >> 5) & 0x3].piwbar;
+ break;
+ case PCI_PIWBEAR:
+ value = pci->pib[(addr >> 5) & 0x3].piwbear;
+ break;
+ case PCI_PIWAR:
+ value = pci->pib[(addr >> 5) & 0x3].piwar;
+ break;
+ default:
+ break;
};
break;
@@ -154,11 +172,20 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr,
case PPCE500_PCI_OW3:
case PPCE500_PCI_OW4:
switch (addr & 0xC) {
- case PCI_POTAR: pci->pob[(addr >> 5) & 0x7].potar = value; break;
- case PCI_POTEAR: pci->pob[(addr >> 5) & 0x7].potear = value; break;
- case PCI_POWBAR: pci->pob[(addr >> 5) & 0x7].powbar = value; break;
- case PCI_POWAR: pci->pob[(addr >> 5) & 0x7].powar = value; break;
- default: break;
+ case PCI_POTAR:
+ pci->pob[(addr >> 5) & 0x7].potar = value;
+ break;
+ case PCI_POTEAR:
+ pci->pob[(addr >> 5) & 0x7].potear = value;
+ break;
+ case PCI_POWBAR:
+ pci->pob[(addr >> 5) & 0x7].powbar = value;
+ break;
+ case PCI_POWAR:
+ pci->pob[(addr >> 5) & 0x7].powar = value;
+ break;
+ default:
+ break;
};
break;
@@ -166,11 +193,20 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr,
case PPCE500_PCI_IW2:
case PPCE500_PCI_IW1:
switch (addr & 0xC) {
- case PCI_PITAR: pci->pib[(addr >> 5) & 0x3].pitar = value; break;
- case PCI_PIWBAR: pci->pib[(addr >> 5) & 0x3].piwbar = value; break;
- case PCI_PIWBEAR: pci->pib[(addr >> 5) & 0x3].piwbear = value; break;
- case PCI_PIWAR: pci->pib[(addr >> 5) & 0x3].piwar = value; break;
- default: break;
+ case PCI_PITAR:
+ pci->pib[(addr >> 5) & 0x3].pitar = value;
+ break;
+ case PCI_PIWBAR:
+ pci->pib[(addr >> 5) & 0x3].piwbar = value;
+ break;
+ case PCI_PIWBEAR:
+ pci->pib[(addr >> 5) & 0x3].piwbear = value;
+ break;
+ case PCI_PIWAR:
+ pci->pib[(addr >> 5) & 0x3].piwar = value;
+ break;
+ default:
+ break;
};
break;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV Alexander Graf
` (23 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, Liu Yu, qemu-ppc
From: Liu Yu-B13201 <Yu.Liu@freescale.com>
When access PPCE500_PCI_IW1 the previous index get overflow.
The patch fix the issue and update all to keep consistent style.
Signed-off-by: Liu Yu <yu.liu@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppce500_pci.c | 38 ++++++++++++++++++++++----------------
1 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c
index 0ece422..960a5d0 100644
--- a/hw/ppce500_pci.c
+++ b/hw/ppce500_pci.c
@@ -89,6 +89,7 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr)
PPCE500PCIState *pci = opaque;
unsigned long win;
uint32_t value = 0;
+ int idx;
win = addr & 0xfe0;
@@ -97,18 +98,19 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr)
case PPCE500_PCI_OW2:
case PPCE500_PCI_OW3:
case PPCE500_PCI_OW4:
+ idx = (addr >> 5) & 0x7;
switch (addr & 0xC) {
case PCI_POTAR:
- value = pci->pob[(addr >> 5) & 0x7].potar;
+ value = pci->pob[idx].potar;
break;
case PCI_POTEAR:
- value = pci->pob[(addr >> 5) & 0x7].potear;
+ value = pci->pob[idx].potear;
break;
case PCI_POWBAR:
- value = pci->pob[(addr >> 5) & 0x7].powbar;
+ value = pci->pob[idx].powbar;
break;
case PCI_POWAR:
- value = pci->pob[(addr >> 5) & 0x7].powar;
+ value = pci->pob[idx].powar;
break;
default:
break;
@@ -118,18 +120,19 @@ static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr)
case PPCE500_PCI_IW3:
case PPCE500_PCI_IW2:
case PPCE500_PCI_IW1:
+ idx = ((addr >> 5) & 0x3) - 1;
switch (addr & 0xC) {
case PCI_PITAR:
- value = pci->pib[(addr >> 5) & 0x3].pitar;
+ value = pci->pib[idx].pitar;
break;
case PCI_PIWBAR:
- value = pci->pib[(addr >> 5) & 0x3].piwbar;
+ value = pci->pib[idx].piwbar;
break;
case PCI_PIWBEAR:
- value = pci->pib[(addr >> 5) & 0x3].piwbear;
+ value = pci->pib[idx].piwbear;
break;
case PCI_PIWAR:
- value = pci->pib[(addr >> 5) & 0x3].piwar;
+ value = pci->pib[idx].piwar;
break;
default:
break;
@@ -160,6 +163,7 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr,
{
PPCE500PCIState *pci = opaque;
unsigned long win;
+ int idx;
win = addr & 0xfe0;
@@ -171,18 +175,19 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr,
case PPCE500_PCI_OW2:
case PPCE500_PCI_OW3:
case PPCE500_PCI_OW4:
+ idx = (addr >> 5) & 0x7;
switch (addr & 0xC) {
case PCI_POTAR:
- pci->pob[(addr >> 5) & 0x7].potar = value;
+ pci->pob[idx].potar = value;
break;
case PCI_POTEAR:
- pci->pob[(addr >> 5) & 0x7].potear = value;
+ pci->pob[idx].potear = value;
break;
case PCI_POWBAR:
- pci->pob[(addr >> 5) & 0x7].powbar = value;
+ pci->pob[idx].powbar = value;
break;
case PCI_POWAR:
- pci->pob[(addr >> 5) & 0x7].powar = value;
+ pci->pob[idx].powar = value;
break;
default:
break;
@@ -192,18 +197,19 @@ static void pci_reg_write4(void *opaque, target_phys_addr_t addr,
case PPCE500_PCI_IW3:
case PPCE500_PCI_IW2:
case PPCE500_PCI_IW1:
+ idx = ((addr >> 5) & 0x3) - 1;
switch (addr & 0xC) {
case PCI_PITAR:
- pci->pib[(addr >> 5) & 0x3].pitar = value;
+ pci->pib[idx].pitar = value;
break;
case PCI_PIWBAR:
- pci->pib[(addr >> 5) & 0x3].piwbar = value;
+ pci->pib[idx].piwbar = value;
break;
case PCI_PIWBEAR:
- pci->pib[(addr >> 5) & 0x3].piwbear = value;
+ pci->pib[idx].piwbear = value;
break;
case PCI_PIWAR:
- pci->pib[(addr >> 5) & 0x3].piwar = value;
+ pci->pib[idx].piwar = value;
break;
default:
break;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS Alexander Graf
` (22 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
Alex Graf has already made qemu support KVM for the pseries machine
when using the Book3S-PR KVM variant (which runs the guest in
usermode, emulating supervisor operations). This code allows gets us
very close to also working with KVM Book3S-HV (using the hypervisor
capabilities of recent POWER CPUs).
This patch moves us another step towards Book3S-HV support by
correctly handling SMT (multithreaded) POWER CPUs. There are two
parts to this:
* Querying KVM to check SMT capability, and if present, adjusting the
cpu numbers that qemu assigns to cause KVM to assign guest threads
to cores in the right way (this isn't automatic, because the POWER
HV support has a limitation that different threads on a single core
cannot be in different guests at the same time).
* Correctly informing the guest OS of the SMT thread to core mappings
via the device tree.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/spapr.c | 24 +++++++++++++++++++++---
target-ppc/helper.c | 11 +++++++++++
target-ppc/kvm.c | 8 ++++++++
target-ppc/kvm_ppc.h | 6 ++++++
4 files changed, 46 insertions(+), 3 deletions(-)
diff --git a/hw/spapr.c b/hw/spapr.c
index 63e5d33..c2675e1 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -29,6 +29,9 @@
#include "elf.h"
#include "net.h"
#include "blockdev.h"
+#include "cpus.h"
+#include "kvm.h"
+#include "kvm_ppc.h"
#include "hw/boards.h"
#include "hw/ppc.h"
@@ -105,6 +108,7 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
uint32_t interrupt_server_ranges_prop[] = {0, cpu_to_be32(smp_cpus)};
int i;
char *modelname;
+ int smt = kvmppc_smt_threads();
#define _FDT(exp) \
do { \
@@ -164,13 +168,18 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
for (env = first_cpu; env != NULL; env = env->next_cpu) {
int index = env->cpu_index;
- uint32_t gserver_prop[] = {cpu_to_be32(index), 0}; /* HACK! */
+ uint32_t servers_prop[smp_threads];
+ uint32_t gservers_prop[smp_threads * 2];
char *nodename;
uint32_t segs[] = {cpu_to_be32(28), cpu_to_be32(40),
0xffffffff, 0xffffffff};
uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : TIMEBASE_FREQ;
uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 1000000000;
+ if ((index % smt) != 0) {
+ continue;
+ }
+
if (asprintf(&nodename, "%s@%x", modelname, index) < 0) {
fprintf(stderr, "Allocation failure\n");
exit(1);
@@ -195,9 +204,18 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
pft_size_prop, sizeof(pft_size_prop))));
_FDT((fdt_property_string(fdt, "status", "okay")));
_FDT((fdt_property(fdt, "64-bit", NULL, 0)));
- _FDT((fdt_property_cell(fdt, "ibm,ppc-interrupt-server#s", index)));
+
+ /* Build interrupt servers and gservers properties */
+ for (i = 0; i < smp_threads; i++) {
+ servers_prop[i] = cpu_to_be32(index + i);
+ /* Hack, direct the group queues back to cpu 0 */
+ gservers_prop[i*2] = cpu_to_be32(index + i);
+ gservers_prop[i*2 + 1] = 0;
+ }
+ _FDT((fdt_property(fdt, "ibm,ppc-interrupt-server#s",
+ servers_prop, sizeof(servers_prop))));
_FDT((fdt_property(fdt, "ibm,ppc-interrupt-gserver#s",
- gserver_prop, sizeof(gserver_prop))));
+ gservers_prop, sizeof(gservers_prop))));
if (env->mmu_model & POWERPC_MMU_1TSEG) {
_FDT((fdt_property(fdt, "ibm,processor-segment-sizes",
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index 6339be3..137a494 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -26,6 +26,8 @@
#include "helper_regs.h"
#include "qemu-common.h"
#include "kvm.h"
+#include "kvm_ppc.h"
+#include "cpus.h"
//#define DEBUG_MMU
//#define DEBUG_BATS
@@ -3189,6 +3191,15 @@ CPUPPCState *cpu_ppc_init (const char *cpu_model)
if (tcg_enabled()) {
ppc_translate_init();
}
+ /* Adjust cpu index for SMT */
+#if !defined(CONFIG_USER_ONLY)
+ if (kvm_enabled()) {
+ int smt = kvmppc_smt_threads();
+
+ env->cpu_index = (env->cpu_index / smp_threads)*smt
+ + (env->cpu_index % smp_threads);
+ }
+#endif /* !CONFIG_USER_ONLY */
env->cpu_model_str = cpu_model;
cpu_ppc_register_internal(env, def);
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 75832d8..6c7ca6f 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -28,6 +28,7 @@
#include "kvm_ppc.h"
#include "cpu.h"
#include "device_tree.h"
+#include "hw/spapr.h"
#include "hw/sysbus.h"
#include "hw/spapr.h"
@@ -53,6 +54,7 @@ static int cap_interrupt_unset = false;
static int cap_interrupt_level = false;
static int cap_segstate;
static int cap_booke_sregs;
+static int cap_ppc_smt;
/* XXX We have a race condition where we actually have a level triggered
* interrupt, but the infrastructure can't expose that yet, so the guest
@@ -76,6 +78,7 @@ int kvm_arch_init(KVMState *s)
cap_interrupt_level = kvm_check_extension(s, KVM_CAP_PPC_IRQ_LEVEL);
cap_segstate = kvm_check_extension(s, KVM_CAP_PPC_SEGSTATE);
cap_booke_sregs = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_SREGS);
+ cap_ppc_smt = kvm_check_extension(s, KVM_CAP_PPC_SMT);
if (!cap_interrupt_level) {
fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the "
@@ -750,6 +753,11 @@ fail:
cpu_abort(env, "This KVM version does not support PAPR\n");
}
+int kvmppc_smt_threads(void)
+{
+ return cap_ppc_smt ? cap_ppc_smt : 1;
+}
+
bool kvm_arch_stop_on_emulation_error(CPUState *env)
{
return true;
diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h
index c484e60..c298411 100644
--- a/target-ppc/kvm_ppc.h
+++ b/target-ppc/kvm_ppc.h
@@ -18,6 +18,7 @@ uint64_t kvmppc_get_clockfreq(void);
int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len);
int kvmppc_set_interrupt(CPUState *env, int irq, int level);
void kvmppc_set_papr(CPUState *env);
+int kvmppc_smt_threads(void);
#else
@@ -45,6 +46,11 @@ static inline void kvmppc_set_papr(CPUState *env)
{
}
+static inline int kvmppc_smt_threads(void)
+{
+ return 1;
+}
+
#endif
#ifndef CONFIG_KVM
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (2 preceding siblings ...)
2011-10-30 20:22 ` [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities Alexander Graf
` (21 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, Paul Mackerras, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
At present, using the hypervisor aware Book3S-HV KVM will only work
with qemu on POWER7 CPUs. PPC970 CPUs also have hypervisor
capability, but they lack the VRMA feature which makes assigning guest
memory easier.
In order to allow KVM Book3S-HV on PPC970, we need to specially
allocate the first chunk of guest memory (the "Real Mode Area" or
RMA), so that it is physically contiguous.
Sufficiently recent host kernels allow such contiguous RMAs to be
allocated, with a kvm capability advertising whether the feature is
available and/or necessary on this hardware. This patch enables qemu
to use this support, thus allowing kvm acceleration of pseries qemu
machines on PPC970 hardware.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
agraf: fix to use memory api
---
hw/spapr.c | 56 +++++++++++++++++++++++++++++++++++++++----------
target-ppc/kvm.c | 44 +++++++++++++++++++++++++++++++++++++++
target-ppc/kvm_ppc.h | 8 +++++++
3 files changed, 96 insertions(+), 12 deletions(-)
diff --git a/hw/spapr.c b/hw/spapr.c
index c2675e1..193398b 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -91,6 +91,7 @@ qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num)
}
static void *spapr_create_fdt_skel(const char *cpu_model,
+ target_phys_addr_t rma_size,
target_phys_addr_t initrd_base,
target_phys_addr_t initrd_size,
const char *boot_device,
@@ -99,7 +100,9 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
{
void *fdt;
CPUState *env;
- uint64_t mem_reg_property[] = { 0, cpu_to_be64(ram_size) };
+ uint64_t mem_reg_property_rma[] = { 0, cpu_to_be64(rma_size) };
+ uint64_t mem_reg_property_nonrma[] = { cpu_to_be64(rma_size),
+ cpu_to_be64(ram_size - rma_size) };
uint32_t start_prop = cpu_to_be32(initrd_base);
uint32_t end_prop = cpu_to_be32(initrd_base + initrd_size);
uint32_t pft_size_prop[] = {0, cpu_to_be32(hash_shift)};
@@ -145,15 +148,25 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
_FDT((fdt_end_node(fdt)));
- /* memory node */
+ /* memory node(s) */
_FDT((fdt_begin_node(fdt, "memory@0")));
_FDT((fdt_property_string(fdt, "device_type", "memory")));
- _FDT((fdt_property(fdt, "reg",
- mem_reg_property, sizeof(mem_reg_property))));
-
+ _FDT((fdt_property(fdt, "reg", mem_reg_property_rma,
+ sizeof(mem_reg_property_rma))));
_FDT((fdt_end_node(fdt)));
+ if (ram_size > rma_size) {
+ char mem_name[32];
+
+ sprintf(mem_name, "memory@%" PRIx64, (uint64_t)rma_size);
+ _FDT((fdt_begin_node(fdt, mem_name)));
+ _FDT((fdt_property_string(fdt, "device_type", "memory")));
+ _FDT((fdt_property(fdt, "reg", mem_reg_property_nonrma,
+ sizeof(mem_reg_property_nonrma))));
+ _FDT((fdt_end_node(fdt)));
+ }
+
/* cpus */
_FDT((fdt_begin_node(fdt, "cpus")));
@@ -346,6 +359,7 @@ static void ppc_spapr_init(ram_addr_t ram_size,
int i;
MemoryRegion *sysmem = get_system_memory();
MemoryRegion *ram = g_new(MemoryRegion, 1);
+ target_phys_addr_t rma_alloc_size, rma_size;
uint32_t initrd_base;
long kernel_size, initrd_size, fw_size;
long pteg_shift = 17;
@@ -354,10 +368,23 @@ static void ppc_spapr_init(ram_addr_t ram_size,
spapr = g_malloc(sizeof(*spapr));
cpu_ppc_hypercall = emulate_spapr_hypercall;
- /* We place the device tree just below either the top of RAM, or
- * 2GB, so that it can be processed with 32-bit code if
- * necessary */
- spapr->fdt_addr = MIN(ram_size, 0x80000000) - FDT_MAX_SIZE;
+ /* Allocate RMA if necessary */
+ rma_alloc_size = kvmppc_alloc_rma("ppc_spapr.rma", sysmem);
+
+ if (rma_alloc_size == -1) {
+ hw_error("qemu: Unable to create RMA\n");
+ exit(1);
+ }
+ if (rma_alloc_size && (rma_alloc_size < ram_size)) {
+ rma_size = rma_alloc_size;
+ } else {
+ rma_size = ram_size;
+ }
+
+ /* We place the device tree just below either the top of the RMA,
+ * or just below 2GB, whichever is lowere, so that it can be
+ * processed with 32-bit real mode code if necessary */
+ spapr->fdt_addr = MIN(rma_size, 0x80000000) - FDT_MAX_SIZE;
spapr->rtas_addr = spapr->fdt_addr - RTAS_MAX_SIZE;
/* init CPUs */
@@ -382,8 +409,13 @@ static void ppc_spapr_init(ram_addr_t ram_size,
/* allocate RAM */
spapr->ram_limit = ram_size;
- memory_region_init_ram(ram, NULL, "ppc_spapr.ram", spapr->ram_limit);
- memory_region_add_subregion(sysmem, 0, ram);
+ if (spapr->ram_limit > rma_alloc_size) {
+ ram_addr_t nonrma_base = rma_alloc_size;
+ ram_addr_t nonrma_size = spapr->ram_limit - rma_alloc_size;
+
+ memory_region_init_ram(ram, NULL, "ppc_spapr.ram", nonrma_size);
+ memory_region_add_subregion(sysmem, nonrma_base, ram);
+ }
/* allocate hash page table. For now we always make this 16mb,
* later we should probably make it scale to the size of guest
@@ -507,7 +539,7 @@ static void ppc_spapr_init(ram_addr_t ram_size,
}
/* Prepare the device tree */
- spapr->fdt_skel = spapr_create_fdt_skel(cpu_model,
+ spapr->fdt_skel = spapr_create_fdt_skel(cpu_model, rma_size,
initrd_base, initrd_size,
boot_device, kernel_cmdline,
pteg_shift + 7);
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 6c7ca6f..fd17d23 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -55,6 +55,7 @@ static int cap_interrupt_level = false;
static int cap_segstate;
static int cap_booke_sregs;
static int cap_ppc_smt;
+static int cap_ppc_rma;
/* XXX We have a race condition where we actually have a level triggered
* interrupt, but the infrastructure can't expose that yet, so the guest
@@ -79,6 +80,7 @@ int kvm_arch_init(KVMState *s)
cap_segstate = kvm_check_extension(s, KVM_CAP_PPC_SEGSTATE);
cap_booke_sregs = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_SREGS);
cap_ppc_smt = kvm_check_extension(s, KVM_CAP_PPC_SMT);
+ cap_ppc_rma = kvm_check_extension(s, KVM_CAP_PPC_RMA);
if (!cap_interrupt_level) {
fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the "
@@ -758,6 +760,48 @@ int kvmppc_smt_threads(void)
return cap_ppc_smt ? cap_ppc_smt : 1;
}
+off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem)
+{
+ void *rma;
+ off_t size;
+ int fd;
+ struct kvm_allocate_rma ret;
+ MemoryRegion *rma_region;
+
+ /* If cap_ppc_rma == 0, contiguous RMA allocation is not supported
+ * if cap_ppc_rma == 1, contiguous RMA allocation is supported, but
+ * not necessary on this hardware
+ * if cap_ppc_rma == 2, contiguous RMA allocation is needed on this hardware
+ *
+ * FIXME: We should allow the user to force contiguous RMA
+ * allocation in the cap_ppc_rma==1 case.
+ */
+ if (cap_ppc_rma < 2) {
+ return 0;
+ }
+
+ fd = kvm_vm_ioctl(kvm_state, KVM_ALLOCATE_RMA, &ret);
+ if (fd < 0) {
+ fprintf(stderr, "KVM: Error on KVM_ALLOCATE_RMA: %s\n",
+ strerror(errno));
+ return -1;
+ }
+
+ size = MIN(ret.rma_size, 256ul << 20);
+
+ rma = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+ if (rma == MAP_FAILED) {
+ fprintf(stderr, "KVM: Error mapping RMA: %s\n", strerror(errno));
+ return -1;
+ };
+
+ rma_region = g_new(MemoryRegion, 1);
+ memory_region_init_ram_ptr(rma_region, NULL, name, size, rma);
+ memory_region_add_subregion(sysmem, 0, rma_region);
+
+ return size;
+}
+
bool kvm_arch_stop_on_emulation_error(CPUState *env)
{
return true;
diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h
index c298411..82f32f4 100644
--- a/target-ppc/kvm_ppc.h
+++ b/target-ppc/kvm_ppc.h
@@ -9,6 +9,8 @@
#ifndef __KVM_PPC_H__
#define __KVM_PPC_H__
+#include "memory.h"
+
void kvmppc_init(void);
#ifdef CONFIG_KVM
@@ -19,6 +21,7 @@ int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len);
int kvmppc_set_interrupt(CPUState *env, int irq, int level);
void kvmppc_set_papr(CPUState *env);
int kvmppc_smt_threads(void);
+off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem);
#else
@@ -51,6 +54,11 @@ static inline int kvmppc_smt_threads(void)
return 1;
}
+static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem)
+{
+ return 0;
+}
+
#endif
#ifndef CONFIG_KVM
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (3 preceding siblings ...)
2011-10-30 20:22 ` [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image Alexander Graf
` (20 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
The pseries machine of qemu implements the TCE mechanism used as a
virtual IOMMU for the PAPR defined virtual IO devices. Because the
PAPR spec only defines a small DMA address space, the guest VIO
drivers need to update TCE mappings very frequently - the virtual
network device is particularly bad. This means many slow exits to
qemu to emulate the H_PUT_TCE hypercall.
Sufficiently recent kernels allow this to be mitigated by implementing
H_PUT_TCE in the host kernel. To make use of this, however, qemu
needs to initialize the necessary TCE tables, and map them into itself
so that the VIO device implementations can retrieve the mappings when
they access guest memory (which is treated as a virtual DMA
operation).
This patch adds the necessary calls to use the KVM TCE acceleration.
If the kernel does not support acceleration, or there is some other
error creating the accelerated TCE table, then it will still fall back
to full userspace TCE implementation.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/spapr_vio.c | 8 ++++++-
hw/spapr_vio.h | 1 +
target-ppc/kvm.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++
target-ppc/kvm_ppc.h | 14 +++++++++++++
4 files changed, 76 insertions(+), 1 deletions(-)
diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c
index 35818e1..1da3032 100644
--- a/hw/spapr_vio.c
+++ b/hw/spapr_vio.c
@@ -165,7 +165,13 @@ static void rtce_init(VIOsPAPRDevice *dev)
* sizeof(VIOsPAPR_RTCE);
if (size) {
- dev->rtce_table = g_malloc0(size);
+ dev->rtce_table = kvmppc_create_spapr_tce(dev->reg,
+ dev->rtce_window_size,
+ &dev->kvmtce_fd);
+
+ if (!dev->rtce_table) {
+ dev->rtce_table = g_malloc0(size);
+ }
}
}
diff --git a/hw/spapr_vio.h b/hw/spapr_vio.h
index 4fe5f74..a325a5f 100644
--- a/hw/spapr_vio.h
+++ b/hw/spapr_vio.h
@@ -57,6 +57,7 @@ typedef struct VIOsPAPRDevice {
target_ulong signal_state;
uint32_t rtce_window_size;
VIOsPAPR_RTCE *rtce_table;
+ int kvmtce_fd;
VIOsPAPR_CRQ crq;
} VIOsPAPRDevice;
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index fd17d23..06cad41 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -28,6 +28,7 @@
#include "kvm_ppc.h"
#include "cpu.h"
#include "device_tree.h"
+#include "hw/sysbus.h"
#include "hw/spapr.h"
#include "hw/sysbus.h"
@@ -56,6 +57,7 @@ static int cap_segstate;
static int cap_booke_sregs;
static int cap_ppc_smt;
static int cap_ppc_rma;
+static int cap_spapr_tce;
/* XXX We have a race condition where we actually have a level triggered
* interrupt, but the infrastructure can't expose that yet, so the guest
@@ -81,6 +83,7 @@ int kvm_arch_init(KVMState *s)
cap_booke_sregs = kvm_check_extension(s, KVM_CAP_PPC_BOOKE_SREGS);
cap_ppc_smt = kvm_check_extension(s, KVM_CAP_PPC_SMT);
cap_ppc_rma = kvm_check_extension(s, KVM_CAP_PPC_RMA);
+ cap_spapr_tce = kvm_check_extension(s, KVM_CAP_SPAPR_TCE);
if (!cap_interrupt_level) {
fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the "
@@ -802,6 +805,57 @@ off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem)
return size;
}
+void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd)
+{
+ struct kvm_create_spapr_tce args = {
+ .liobn = liobn,
+ .window_size = window_size,
+ };
+ long len;
+ int fd;
+ void *table;
+
+ if (!cap_spapr_tce) {
+ return NULL;
+ }
+
+ fd = kvm_vm_ioctl(kvm_state, KVM_CREATE_SPAPR_TCE, &args);
+ if (fd < 0) {
+ return NULL;
+ }
+
+ len = (window_size / SPAPR_VIO_TCE_PAGE_SIZE) * sizeof(VIOsPAPR_RTCE);
+ /* FIXME: round this up to page size */
+
+ table = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0);
+ if (table == MAP_FAILED) {
+ close(fd);
+ return NULL;
+ }
+
+ *pfd = fd;
+ return table;
+}
+
+int kvmppc_remove_spapr_tce(void *table, int fd, uint32_t window_size)
+{
+ long len;
+
+ if (fd < 0) {
+ return -1;
+ }
+
+ len = (window_size / SPAPR_VIO_TCE_PAGE_SIZE)*sizeof(VIOsPAPR_RTCE);
+ if ((munmap(table, len) < 0) ||
+ (close(fd) < 0)) {
+ fprintf(stderr, "KVM: Unexpected error removing KVM SPAPR TCE "
+ "table: %s", strerror(errno));
+ /* Leak the table */
+ }
+
+ return 0;
+}
+
bool kvm_arch_stop_on_emulation_error(CPUState *env)
{
return true;
diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h
index 82f32f4..87d1bdd 100644
--- a/target-ppc/kvm_ppc.h
+++ b/target-ppc/kvm_ppc.h
@@ -22,6 +22,8 @@ int kvmppc_set_interrupt(CPUState *env, int irq, int level);
void kvmppc_set_papr(CPUState *env);
int kvmppc_smt_threads(void);
off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem);
+void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd);
+int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size);
#else
@@ -59,6 +61,18 @@ static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem)
return 0;
}
+static inline void *kvmppc_create_spapr_tce(uint32_t liobn,
+ uint32_t window_size, int *fd)
+{
+ return NULL;
+}
+
+static inline int kvmppc_remove_spapr_tce(void *table, int pfd,
+ uint32_t window_size)
+{
+ return -1;
+}
+
#endif
#ifndef CONFIG_KVM
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (4 preceding siblings ...)
2011-10-30 20:22 ` [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions Alexander Graf
` (19 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
This patch updates the SLOF submodule and precompiled image. The new
SLOF versions contains two changes of note:
* The previous SLOF has a bug in SCSI condition handling that was
exposed by recent updates to qemu's SCSI emulation. This update
fixes the bug.
* The previous SLOF has a bug in its addressing of SCSI devices,
which can be exposed under certain conditions. The new SLOF also
fixes this.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
pc-bios/README | 2 +-
pc-bios/slof.bin | Bin 579072 -> 578968 bytes
roms/SLOF | 2 +-
3 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pc-bios/README b/pc-bios/README
index 4d1d816..32a438e 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -17,7 +17,7 @@
- SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware
implementation for certain IBM POWER hardware. The sources are at
https://github.com/dgibson/SLOF, and the image currently in qemu is
- built from git tag qemu-slof-20110323.
+ built from git tag qemu-slof-20110930.
- The PXE roms come from the iPXE project. Built with BANNER_TIME 0.
Sources available at http://ipxe.org. Vendor:Device ID -> ROM mapping:
diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin
index 22c4c7f5c448e3002aefecf3438f5d080586d666..b9d4f35053be2cd6f599bffddf0ee99627eb00a9 100644
GIT binary patch
delta 2772
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
Q4T`A&VCCzx5WKqkKRH*`cmMzZ
delta 2943
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
BHl6?g
diff --git a/roms/SLOF b/roms/SLOF
index d1d6b53..b94bde0 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit d1d6b53b713a2b7c2c25685268fa932d28a4b4c0
+Subproject commit b94bde008b0d49ec4bfe933e110d0952d032ac28
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (5 preceding siblings ...)
2011-10-30 20:22 ` [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function Alexander Graf
` (18 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, Fabien Chouteau
From: Fabien Chouteau <chouteau@adacore.com>
SPE instructions are defined by pairs. Currently, the invalid-bits mask is set
for the first instruction, but the second one can have a different mask.
example:
GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, 0x00180000, PPC_SPE_DOUBLE),
Signed-off-by: Fabien Chouteau <chouteau@adacore.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 500 ++++++++++++++++++++++++++----------------------
1 files changed, 271 insertions(+), 229 deletions(-)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 1e362fc..99e995c 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -205,8 +205,10 @@ typedef struct DisasContext {
} DisasContext;
struct opc_handler_t {
- /* invalid bits */
- uint32_t inval;
+ /* invalid bits for instruction 1 (Rc(opcode) == 0) */
+ uint32_t inval1;
+ /* invalid bits for instruction 2 (Rc(opcode) == 1) */
+ uint32_t inval2;
/* instruction type */
uint64_t type;
/* extended instruction type */
@@ -478,7 +480,23 @@ static inline target_ulong MASK(uint32_t start, uint32_t end)
.opc3 = op3, \
.pad = { 0, }, \
.handler = { \
- .inval = invl, \
+ .inval1 = invl, \
+ .type = _typ, \
+ .type2 = _typ2, \
+ .handler = &gen_##name, \
+ .oname = stringify(name), \
+ }, \
+ .oname = stringify(name), \
+}
+#define GEN_OPCODE_DUAL(name, op1, op2, op3, invl1, invl2, _typ, _typ2) \
+{ \
+ .opc1 = op1, \
+ .opc2 = op2, \
+ .opc3 = op3, \
+ .pad = { 0, }, \
+ .handler = { \
+ .inval1 = invl1, \
+ .inval2 = invl2, \
.type = _typ, \
.type2 = _typ2, \
.handler = &gen_##name, \
@@ -493,7 +511,7 @@ static inline target_ulong MASK(uint32_t start, uint32_t end)
.opc3 = op3, \
.pad = { 0, }, \
.handler = { \
- .inval = invl, \
+ .inval1 = invl, \
.type = _typ, \
.type2 = _typ2, \
.handler = &gen_##name, \
@@ -509,7 +527,22 @@ static inline target_ulong MASK(uint32_t start, uint32_t end)
.opc3 = op3, \
.pad = { 0, }, \
.handler = { \
- .inval = invl, \
+ .inval1 = invl, \
+ .type = _typ, \
+ .type2 = _typ2, \
+ .handler = &gen_##name, \
+ }, \
+ .oname = stringify(name), \
+}
+#define GEN_OPCODE_DUAL(name, op1, op2, op3, invl1, invl2, _typ, _typ2) \
+{ \
+ .opc1 = op1, \
+ .opc2 = op2, \
+ .opc3 = op3, \
+ .pad = { 0, }, \
+ .handler = { \
+ .inval1 = invl1, \
+ .inval2 = invl2, \
.type = _typ, \
.type2 = _typ2, \
.handler = &gen_##name, \
@@ -523,7 +556,7 @@ static inline target_ulong MASK(uint32_t start, uint32_t end)
.opc3 = op3, \
.pad = { 0, }, \
.handler = { \
- .inval = invl, \
+ .inval1 = invl, \
.type = _typ, \
.type2 = _typ2, \
.handler = &gen_##name, \
@@ -550,7 +583,8 @@ static void gen_invalid(DisasContext *ctx)
}
static opc_handler_t invalid_handler = {
- .inval = 0xFFFFFFFF,
+ .inval1 = 0xFFFFFFFF,
+ .inval2 = 0xFFFFFFFF,
.type = PPC_NONE,
.type2 = PPC_NONE,
.handler = gen_invalid,
@@ -6693,7 +6727,7 @@ static inline void gen_store_gpr64(int reg, TCGv_i64 t)
#endif
}
-#define GEN_SPE(name0, name1, opc2, opc3, inval, type) \
+#define GEN_SPE(name0, name1, opc2, opc3, inval0, inval1, type) \
static void glue(gen_, name0##_##name1)(DisasContext *ctx) \
{ \
if (Rc(ctx->opcode)) \
@@ -7416,35 +7450,35 @@ static inline void gen_evmwsmiaa(DisasContext *ctx)
tcg_temp_free_i64(tmp);
}
-GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, PPC_SPE);
-GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, PPC_SPE);
-GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, PPC_SPE); ////
-GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, PPC_SPE); ////
-GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, PPC_SPE); ////
-GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x00000000, PPC_SPE); //
-GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, PPC_SPE);
-GEN_SPE(speundef, evand, 0x08, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evorc, 0x0D, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, PPC_SPE);
-GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, PPC_SPE);
-GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, PPC_SPE); //
-GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, PPC_SPE);
-GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, PPC_SPE); ////
-GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, PPC_SPE); ////
-GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, PPC_SPE); ////
-GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, PPC_SPE); ////
+GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); ////
+GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE);
+GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); ////
+GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE);
+GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, 0x0000F800, PPC_SPE); ////
+GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, 0x0000F800, PPC_SPE); ////
+GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, 0x0000F800, PPC_SPE); ////
+GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x0000F800, 0x00000000, PPC_SPE); //
+GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, 0xFFFFFFFF, PPC_SPE);
+GEN_SPE(speundef, evand, 0x08, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE); ////
+GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); ////
+GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, 0x00000000, PPC_SPE); ////
+GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, 0x00000000, PPC_SPE); ////
+GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evorc, 0x0D, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE); ////
+GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); ////
+GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, 0x00000000, PPC_SPE); ////
+GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE); ////
+GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE);
+GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, 0x0000F800, PPC_SPE); //
+GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, 0x0000F800, PPC_SPE);
+GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, 0x00000000, PPC_SPE); ////
+GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, 0x00000000, PPC_SPE); ////
+GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, 0x00600000, PPC_SPE); ////
+GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, 0x00600000, PPC_SPE); ////
+GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, 0xFFFFFFFF, PPC_SPE); ////
/* SPE load and stores */
static inline void gen_addr_spe_imm_index(DisasContext *ctx, TCGv EA, int sh)
@@ -7803,74 +7837,74 @@ GEN_SPEOP_LDST(evstwwo, 0x1E, 2);
/* Multiply and add - TODO */
#if 0
-GEN_SPE(speundef, evmhessf, 0x01, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhossf, 0x03, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(evmheumi, evmhesmi, 0x04, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhesmf, 0x05, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(evmhoumi, evmhosmi, 0x06, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhosmf, 0x07, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhessfa, 0x11, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhossfa, 0x13, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(evmheumia, evmhesmia, 0x14, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhesmfa, 0x15, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(evmhoumia, evmhosmia, 0x16, 0x10, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhosmfa, 0x17, 0x10, 0x00000000, PPC_SPE);
-
-GEN_SPE(speundef, evmwhssf, 0x03, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(evmwlumi, speundef, 0x04, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(evmwhumi, evmwhsmi, 0x06, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwhsmf, 0x07, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwssf, 0x09, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwsmf, 0x0D, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwhssfa, 0x13, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(evmwlumia, speundef, 0x14, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(evmwhumia, evmwhsmia, 0x16, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwhsmfa, 0x17, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwssfa, 0x19, 0x11, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwsmfa, 0x1D, 0x11, 0x00000000, PPC_SPE);
-
-GEN_SPE(evadduiaaw, evaddsiaaw, 0x00, 0x13, 0x0000F800, PPC_SPE);
-GEN_SPE(evsubfusiaaw, evsubfssiaaw, 0x01, 0x13, 0x0000F800, PPC_SPE);
-GEN_SPE(evaddumiaaw, evaddsmiaaw, 0x04, 0x13, 0x0000F800, PPC_SPE);
-GEN_SPE(evsubfumiaaw, evsubfsmiaaw, 0x05, 0x13, 0x0000F800, PPC_SPE);
-GEN_SPE(evdivws, evdivwu, 0x06, 0x13, 0x00000000, PPC_SPE);
-
-GEN_SPE(evmheusiaaw, evmhessiaaw, 0x00, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhessfaaw, 0x01, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(evmhousiaaw, evmhossiaaw, 0x02, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhossfaaw, 0x03, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(evmheumiaaw, evmhesmiaaw, 0x04, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhesmfaaw, 0x05, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(evmhoumiaaw, evmhosmiaaw, 0x06, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhosmfaaw, 0x07, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(evmhegumiaa, evmhegsmiaa, 0x14, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhegsmfaa, 0x15, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(evmhogumiaa, evmhogsmiaa, 0x16, 0x14, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhogsmfaa, 0x17, 0x14, 0x00000000, PPC_SPE);
-
-GEN_SPE(evmwlusiaaw, evmwlssiaaw, 0x00, 0x15, 0x00000000, PPC_SPE);
-GEN_SPE(evmwlumiaaw, evmwlsmiaaw, 0x04, 0x15, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwssfaa, 0x09, 0x15, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwsmfaa, 0x0D, 0x15, 0x00000000, PPC_SPE);
-
-GEN_SPE(evmheusianw, evmhessianw, 0x00, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhessfanw, 0x01, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(evmhousianw, evmhossianw, 0x02, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhossfanw, 0x03, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(evmheumianw, evmhesmianw, 0x04, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhesmfanw, 0x05, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(evmhoumianw, evmhosmianw, 0x06, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhosmfanw, 0x07, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(evmhegumian, evmhegsmian, 0x14, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhegsmfan, 0x15, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(evmhigumian, evmhigsmian, 0x16, 0x16, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmhogsmfan, 0x17, 0x16, 0x00000000, PPC_SPE);
-
-GEN_SPE(evmwlusianw, evmwlssianw, 0x00, 0x17, 0x00000000, PPC_SPE);
-GEN_SPE(evmwlumianw, evmwlsmianw, 0x04, 0x17, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwssfan, 0x09, 0x17, 0x00000000, PPC_SPE);
-GEN_SPE(evmwumian, evmwsmian, 0x0C, 0x17, 0x00000000, PPC_SPE);
-GEN_SPE(speundef, evmwsmfan, 0x0D, 0x17, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhessf, 0x01, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);//
+GEN_SPE(speundef, evmhossf, 0x03, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmheumi, evmhesmi, 0x04, 0x10, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhesmf, 0x05, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhoumi, evmhosmi, 0x06, 0x10, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhosmf, 0x07, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhessfa, 0x11, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhossfa, 0x13, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmheumia, evmhesmia, 0x14, 0x10, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhesmfa, 0x15, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhoumia, evmhosmia, 0x16, 0x10, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhosmfa, 0x17, 0x10, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+
+GEN_SPE(speundef, evmwhssf, 0x03, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmwlumi, speundef, 0x04, 0x11, 0x00000000, 0xFFFFFFFF, PPC_SPE);
+GEN_SPE(evmwhumi, evmwhsmi, 0x06, 0x11, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwhsmf, 0x07, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwssf, 0x09, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwsmf, 0x0D, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwhssfa, 0x13, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmwlumia, speundef, 0x14, 0x11, 0x00000000, 0xFFFFFFFF, PPC_SPE);
+GEN_SPE(evmwhumia, evmwhsmia, 0x16, 0x11, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwhsmfa, 0x17, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwssfa, 0x19, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwsmfa, 0x1D, 0x11, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+
+GEN_SPE(evadduiaaw, evaddsiaaw, 0x00, 0x13, 0x0000F800, 0x0000F800, PPC_SPE);
+GEN_SPE(evsubfusiaaw, evsubfssiaaw, 0x01, 0x13, 0x0000F800, 0x0000F800, PPC_SPE);
+GEN_SPE(evaddumiaaw, evaddsmiaaw, 0x04, 0x13, 0x0000F800, 0x0000F800, PPC_SPE);
+GEN_SPE(evsubfumiaaw, evsubfsmiaaw, 0x05, 0x13, 0x0000F800, 0x0000F800, PPC_SPE);
+GEN_SPE(evdivws, evdivwu, 0x06, 0x13, 0x00000000, 0x00000000, PPC_SPE);
+
+GEN_SPE(evmheusiaaw, evmhessiaaw, 0x00, 0x14, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhessfaaw, 0x01, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhousiaaw, evmhossiaaw, 0x02, 0x14, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhossfaaw, 0x03, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmheumiaaw, evmhesmiaaw, 0x04, 0x14, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhesmfaaw, 0x05, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhoumiaaw, evmhosmiaaw, 0x06, 0x14, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhosmfaaw, 0x07, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhegumiaa, evmhegsmiaa, 0x14, 0x14, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhegsmfaa, 0x15, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhogumiaa, evmhogsmiaa, 0x16, 0x14, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhogsmfaa, 0x17, 0x14, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+
+GEN_SPE(evmwlusiaaw, evmwlssiaaw, 0x00, 0x15, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(evmwlumiaaw, evmwlsmiaaw, 0x04, 0x15, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwssfaa, 0x09, 0x15, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwsmfaa, 0x0D, 0x15, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+
+GEN_SPE(evmheusianw, evmhessianw, 0x00, 0x16, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhessfanw, 0x01, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhousianw, evmhossianw, 0x02, 0x16, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhossfanw, 0x03, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmheumianw, evmhesmianw, 0x04, 0x16, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhesmfanw, 0x05, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhoumianw, evmhosmianw, 0x06, 0x16, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhosmfanw, 0x07, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhegumian, evmhegsmian, 0x14, 0x16, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhegsmfan, 0x15, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmhigumian, evmhigsmian, 0x16, 0x16, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmhogsmfan, 0x17, 0x16, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+
+GEN_SPE(evmwlusianw, evmwlssianw, 0x00, 0x17, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(evmwlumianw, evmwlsmianw, 0x04, 0x17, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwssfan, 0x09, 0x17, 0xFFFFFFFF, 0x00000000, PPC_SPE);
+GEN_SPE(evmwumian, evmwsmian, 0x0C, 0x17, 0x00000000, 0x00000000, PPC_SPE);
+GEN_SPE(speundef, evmwsmfan, 0x0D, 0x17, 0xFFFFFFFF, 0x00000000, PPC_SPE);
#endif
/*** SPE floating-point extension ***/
@@ -8131,20 +8165,20 @@ GEN_SPEFPUOP_COMP_64(evfststlt);
GEN_SPEFPUOP_COMP_64(evfststeq);
/* Opcodes definitions */
-GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, PPC_SPE_SINGLE); //
-GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, PPC_SPE_SINGLE); //
-GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, PPC_SPE_SINGLE); //
-GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, PPC_SPE_SINGLE); //
-GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, PPC_SPE_SINGLE); //
-GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, PPC_SPE_SINGLE); //
-GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, PPC_SPE_SINGLE); //
-GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, PPC_SPE_SINGLE); //
+GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE); //
+GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE); //
+GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE); //
+GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE); //
+GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE); //
+GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE); //
+GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); //
+GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); //
+GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE); //
+GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE); //
/* Single precision floating-point operations */
/* Arithmetic */
@@ -8199,20 +8233,20 @@ GEN_SPEFPUOP_COMP_32(efststlt);
GEN_SPEFPUOP_COMP_32(efststeq);
/* Opcodes definitions */
-GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, PPC_SPE_SINGLE); //
-GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, PPC_SPE_SINGLE); //
-GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, PPC_SPE_SINGLE); //
-GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, PPC_SPE_SINGLE); //
-GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, PPC_SPE_SINGLE); //
-GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, PPC_SPE_SINGLE); //
-GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, PPC_SPE_SINGLE); //
-GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, PPC_SPE_SINGLE); //
-GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, PPC_SPE_SINGLE); //
+GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE); //
+GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE); //
+GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE); //
+GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE); //
+GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE); //
+GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE); //
+GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); //
+GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE); //
+GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE); //
+GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE); //
/* Double precision floating-point operations */
/* Arithmetic */
@@ -8286,22 +8320,22 @@ GEN_SPEFPUOP_COMP_64(efdtstlt);
GEN_SPEFPUOP_COMP_64(efdtsteq);
/* Opcodes definitions */
-GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, PPC_SPE_DOUBLE); //
-GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, PPC_SPE_DOUBLE); //
-GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, PPC_SPE_DOUBLE); //
-GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_DOUBLE); //
+GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_DOUBLE); //
+GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, 0x00180000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE); //
+GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE); //
+GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE); //
+GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_DOUBLE); //
static opcode_t opcodes[] = {
GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE),
@@ -9070,84 +9104,84 @@ GEN_VAFORM_PAIRED(vsel, vperm, 21),
GEN_VAFORM_PAIRED(vmaddfp, vnmsubfp, 23),
#undef GEN_SPE
-#define GEN_SPE(name0, name1, opc2, opc3, inval, type) \
-GEN_HANDLER(name0##_##name1, 0x04, opc2, opc3, inval, type)
-GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, PPC_SPE),
-GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, PPC_SPE),
-GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, PPC_SPE),
-GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, PPC_SPE),
-GEN_SPE(speundef, evand, 0x08, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, PPC_SPE),
-GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, PPC_SPE),
-GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, PPC_SPE),
-GEN_SPE(speundef, evorc, 0x0D, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, PPC_SPE),
-GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, PPC_SPE),
-GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, PPC_SPE),
-GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, PPC_SPE),
-
-GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, PPC_SPE_SINGLE),
-GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, PPC_SPE_SINGLE),
-GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, PPC_SPE_SINGLE),
-GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, PPC_SPE_SINGLE),
-GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, PPC_SPE_SINGLE),
-GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, PPC_SPE_SINGLE),
-GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, PPC_SPE_SINGLE),
-GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, PPC_SPE_SINGLE),
-
-GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, PPC_SPE_SINGLE),
-GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, PPC_SPE_SINGLE),
-GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, PPC_SPE_SINGLE),
-GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, PPC_SPE_SINGLE),
-GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, PPC_SPE_SINGLE),
-GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, PPC_SPE_SINGLE),
-GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, PPC_SPE_SINGLE),
-GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, PPC_SPE_SINGLE),
-GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, PPC_SPE_SINGLE),
-
-GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, PPC_SPE_DOUBLE),
-GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, PPC_SPE_DOUBLE),
-GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, PPC_SPE_DOUBLE),
-GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, PPC_SPE_DOUBLE),
-GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, PPC_SPE_DOUBLE),
-GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, PPC_SPE_DOUBLE),
-GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, PPC_SPE_DOUBLE),
-GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, PPC_SPE_DOUBLE),
-GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, PPC_SPE_DOUBLE),
+#define GEN_SPE(name0, name1, opc2, opc3, inval0, inval1, type) \
+ GEN_OPCODE_DUAL(name0##_##name1, 0x04, opc2, opc3, inval0, inval1, type, PPC_NONE)
+GEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, 0x0000F800, PPC_SPE),
+GEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, 0x0000F800, PPC_SPE),
+GEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, 0x0000F800, PPC_SPE),
+GEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x0000F800, 0x00000000, PPC_SPE),
+GEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(speundef, evand, 0x08, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE),
+GEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(speundef, evorc, 0x0D, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE),
+GEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE),
+GEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, 0x0000F800, PPC_SPE),
+GEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, 0x0000F800, PPC_SPE),
+GEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, 0x00000000, PPC_SPE),
+GEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, 0x00600000, PPC_SPE),
+GEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, 0x00600000, PPC_SPE),
+GEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, 0xFFFFFFFF, PPC_SPE),
+
+GEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE),
+GEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE),
+GEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE),
+GEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE),
+GEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE),
+GEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE),
+GEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE),
+GEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE),
+GEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE),
+GEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE),
+
+GEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE),
+GEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE),
+GEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE),
+GEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE),
+GEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE),
+GEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE),
+GEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE),
+GEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE),
+GEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE),
+GEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE),
+
+GEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE),
+GEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE),
+GEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_DOUBLE),
+GEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_DOUBLE),
+GEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE),
+GEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE),
+GEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE),
+GEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, 0x00180000, PPC_SPE_DOUBLE),
+GEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE),
+GEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE),
+GEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE),
+GEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE),
+GEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE),
+GEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE),
+GEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE),
+GEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_DOUBLE),
#undef GEN_SPEOP_LDST
#define GEN_SPEOP_LDST(name, opc2, sh) \
@@ -9484,11 +9518,19 @@ static inline void gen_intermediate_code_internal(CPUState *env,
opc3(ctx.opcode), ctx.opcode, ctx.nip - 4, (int)msr_ir);
}
} else {
- if (unlikely((ctx.opcode & handler->inval) != 0)) {
+ uint32_t inval;
+
+ if (unlikely(handler->type & (PPC_SPE | PPC_SPE_SINGLE | PPC_SPE_DOUBLE) && Rc(ctx.opcode))) {
+ inval = handler->inval2;
+ } else {
+ inval = handler->inval1;
+ }
+
+ if (unlikely((ctx.opcode & inval) != 0)) {
if (qemu_log_enabled()) {
qemu_log("invalid bits: %08x for opcode: "
"%02x - %02x - %02x (%08x) " TARGET_FMT_lx "\n",
- ctx.opcode & handler->inval, opc1(ctx.opcode),
+ ctx.opcode & inval, opc1(ctx.opcode),
opc2(ctx.opcode), opc3(ctx.opcode),
ctx.opcode, ctx.nip - 4);
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (6 preceding siblings ...)
2011-10-30 20:22 ` [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions Alexander Graf
@ 2011-10-30 20:22 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm Alexander Graf
` (17 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:22 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
Currently the kvmppc_get_clockfreq() function reads the host's clock
frequency from /proc/device-tree, which is useful to past to the guest
in KVM setups. However, there are some other host properties
advertised in the device tree which can also be relevant to the
guests.
This patch, therefore, replaces kvmppc_get_clockfreq() which can
retrieve any named, single integer property from the host device
tree's CPU node.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/kvm.c | 35 ++++++++++++++++++++++++-----------
1 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 06cad41..c48cd76 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -650,37 +650,50 @@ static int kvmppc_find_cpu_dt(char *buf, int buf_len)
return 0;
}
-uint64_t kvmppc_get_clockfreq(void)
+/* Read a CPU node property from the host device tree that's a single
+ * integer (32-bit or 64-bit). Returns 0 if anything goes wrong
+ * (can't find or open the property, or doesn't understand the
+ * format) */
+static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
{
- char buf[512];
- uint32_t tb[2];
+ char buf[PATH_MAX];
+ union {
+ uint32_t v32;
+ uint64_t v64;
+ } u;
FILE *f;
int len;
if (kvmppc_find_cpu_dt(buf, sizeof(buf))) {
- return 0;
+ return -1;
}
- strncat(buf, "/clock-frequency", sizeof(buf) - strlen(buf));
+ strncat(buf, "/", sizeof(buf) - strlen(buf));
+ strncat(buf, propname, sizeof(buf) - strlen(buf));
f = fopen(buf, "rb");
if (!f) {
return -1;
}
- len = fread(tb, sizeof(tb[0]), 2, f);
+ len = fread(&u, 1, sizeof(u), f);
fclose(f);
switch (len) {
- case 1:
- /* freq is only a single cell */
- return tb[0];
- case 2:
- return *(uint64_t*)tb;
+ case 4:
+ /* property is a 32-bit quantity */
+ return be32_to_cpu(u.v32);
+ case 8:
+ return be64_to_cpu(u.v64);
}
return 0;
}
+uint64_t kvmppc_get_clockfreq(void)
+{
+ return kvmppc_read_int_cpu_dt("clock-frequency");
+}
+
int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len)
{
uint32_t *hc = (uint32_t*)buf;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (7 preceding siblings ...)
2011-10-30 20:22 ` [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image Alexander Graf
` (16 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
Sufficiently recent PAPR specifications define properties "ibm,vmx"
and "ibm,dfp" on the CPU node which advertise whether the VMX vector
extensions (or the later VSX version) and/or the Decimal Floating
Point operations from IBM's recent POWER CPUs are available.
Currently we do not put these in the guest device tree and the guest
kernel will consequently assume they are not available. This is good,
because they are not supported under TCG. VMX is similar enough to
Altivec that it might be trivial to support, but VSX and DFP would
both require significant work to support in TCG.
However, when running under kvm on a host which supports these
instructions, there's no reason not to let the guest use them. This
patch, therefore, checks for the relevant support on the host CPU
and, if present, advertises them to the guest as well.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/spapr.c | 17 +++++++++++++++++
target-ppc/kvm.c | 10 ++++++++++
target-ppc/kvm_ppc.h | 12 ++++++++++++
3 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/hw/spapr.c b/hw/spapr.c
index 193398b..4d2a55e 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -188,6 +188,8 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
0xffffffff, 0xffffffff};
uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : TIMEBASE_FREQ;
uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 1000000000;
+ uint32_t vmx = kvm_enabled() ? kvmppc_get_vmx() : 0;
+ uint32_t dfp = kvm_enabled() ? kvmppc_get_dfp() : 0;
if ((index % smt) != 0) {
continue;
@@ -235,6 +237,21 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
segs, sizeof(segs))));
}
+ /* Advertise VMX/VSX (vector extensions) if available
+ * 0 / no property == no vector extensions
+ * 1 == VMX / Altivec available
+ * 2 == VSX available */
+ if (vmx) {
+ _FDT((fdt_property_cell(fdt, "ibm,vmx", vmx)));
+ }
+
+ /* Advertise DFP (Decimal Floating Point) if available
+ * 0 / no property == no DFP
+ * 1 == DFP available */
+ if (dfp) {
+ _FDT((fdt_property_cell(fdt, "ibm,dfp", dfp)));
+ }
+
_FDT((fdt_end_node(fdt)));
}
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index c48cd76..96139ac 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -694,6 +694,16 @@ uint64_t kvmppc_get_clockfreq(void)
return kvmppc_read_int_cpu_dt("clock-frequency");
}
+uint32_t kvmppc_get_vmx(void)
+{
+ return kvmppc_read_int_cpu_dt("ibm,vmx");
+}
+
+uint32_t kvmppc_get_dfp(void)
+{
+ return kvmppc_read_int_cpu_dt("ibm,dfp");
+}
+
int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len)
{
uint32_t *hc = (uint32_t*)buf;
diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h
index 87d1bdd..955729a 100644
--- a/target-ppc/kvm_ppc.h
+++ b/target-ppc/kvm_ppc.h
@@ -17,6 +17,8 @@ void kvmppc_init(void);
uint32_t kvmppc_get_tbfreq(void);
uint64_t kvmppc_get_clockfreq(void);
+uint32_t kvmppc_get_vmx(void);
+uint32_t kvmppc_get_dfp(void);
int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len);
int kvmppc_set_interrupt(CPUState *env, int irq, int level);
void kvmppc_set_papr(CPUState *env);
@@ -37,6 +39,16 @@ static inline uint64_t kvmppc_get_clockfreq(void)
return 0;
}
+static inline uint32_t kvmppc_get_vmx(void)
+{
+ return 0;
+}
+
+static inline uint32_t kvmppc_get_dfp(void)
+{
+ return 0;
+}
+
static inline int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len)
{
return -1;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (8 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching Alexander Graf
` (15 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
This patch is a general update to the SLOF firmware image used on the
pseries machine. This doesn't contain updates for specific features but
contains a number of bugfixes and enhancements in the main SLOF tree from
Thomas Huth.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
pc-bios/README | 2 +-
pc-bios/slof.bin | Bin 578968 -> 738744 bytes
roms/SLOF | 2 +-
3 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pc-bios/README b/pc-bios/README
index 32a438e..0668559 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -17,7 +17,7 @@
- SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware
implementation for certain IBM POWER hardware. The sources are at
https://github.com/dgibson/SLOF, and the image currently in qemu is
- built from git tag qemu-slof-20110930.
+ built from git tag qemu-slof-20111013.
- The PXE roms come from the iPXE project. Built with BANNER_TIME 0.
Sources available at http://ipxe.org. Vendor:Device ID -> ROM mapping:
diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin
index b9d4f35053be2cd6f599bffddf0ee99627eb00a9..1e84582cc695ff6e5973e045ef31ca951ca15c79 100644
GIT binary patch
literal 738744
zcmeFa3v?9Ml`g!iB~VK|+_u}Xc-XWM*b)LHV&dD4Fm#K@FClE&AQJq@q=h6KnU{=l
zQnIS)k|o<xh!Z)s*T~^vF@Ofg9)j0m{lBxuj)m<o5NBpIPUc>m5Jv<j=|-L#Ws<qm
zl0fx;`&6A)Bf5>qO|I7+b*)u8Rp;!p&))m&z0W?6Y7vR+jG0i2mC7V<Q%z-c%?_fi
zl@HfeE%^K$qF};`H%eFdmP;T`AFbK?cu{=D70<5g9XEb1O=d5U4@h78_JS(Iy5h3`
z43F=gGLgL7ZXr{wH1DyUl@Hf|h*DZgAN}1AdaQgTUia|xfBh%Tv8+?ev~_AXAhjdC
zaam`WYymAZt<z05x<^lU{qIY`7fpsEN&7uk`}$|oewxL9+GoUnn#F(GXT*QH#ee!|
z#DBWQfBI*{|2T{Paes0Cli9`psr<zDH{RlZ{21jw!{R?<jPh@{__vQy{xdE9Gsh_Z
zSr-3UW0e017XK5*DE|{J{wI!6{wG=dPa32APqz4<JVyDy&f@>NG0MNg;@>ew`M=)c
z|N1e?{|y%ZH;hsKZ?yQoag6fswD@<9QT}hT_`hk4^8Y!D|Idw4{%^MUzj=)EpKbA<
zJx2MTV(~v^jPgI#;(zKG<$s#R|Fkj6|8$H0>0^}tTP*%>8KeB)YVm*T80CM4#s7>k
z%D>Cv-!(@0&$0N=8KeBqwD_MnM)}XR_|F}q{LixZpEXALpKb9!dyMjbo5lZaW0e2f
zE&gvGqx|Pt{O65P{_`#V^T#Ovb1eSnj8XmzEdC3|DF1UU{^yQS{^wcz&l{us&$sxW
zKSud4wD>RlFVFw~sdJ{Oc2W{ZNgySGlmt=|NJ$_ifs_PN5=coPC4rO#QW8i>;Ior}
z7Mi981Jvo!JE;B}O(%n!tMIN=uO?-#J3v{bq$o%yl@j%v@AP}5>+l{yx*F*@q-&6V
zh;${=f5H9zX%7@_o%X=e&wpWyYtEnLnv^x|fdyOdU2*q%*SejRJ9gG?dziC|wz^6l
zuiaAZT3)%c#&wr#P1R1<f;(KFFIup`wcyT0MRzP(uy9hAYvq?*U#!{jSnc+0fT{l4
z!`{5Q9kpNODjT_W{-i8)fwsxkSxVy$y8~qtwc4~!e0!dwK6K(F_}bvsiQFBe;71Q;
z-lJ0@92DND+rzm;VIO(Jl~fvTB!Bn-Z3v&BK=>SOiYQbU$ssl3BRx_{Es;iQiyWZ#
z$O-C*oTDQb6gqYxhu*m0qpk~;bm~GQbze9@XD*zeo(tzF+^bMuZw^I!eG2tfD)!z+
z#nF2}$?iR&xO&eid65%}JNUD-PNd%8&qZ1q{O8}h!c^GD-_wT`DhlV2o4={o^3ysO
zyC^-HGjt#ddZVB>3VNfUHwt>Aptm3N_JiJj(Ay7s`$2C%=<Nr+{h)UM^bUaD0nj@D
zdIv!70O%b6y#t_k5cCd$-a*hi2zm!W?;z+M1igcxHwt=!r){0U2f8^0{XZ9}H`qnD
z;k`6?LcIG+X?#D+HwyV`X=!RHW%VcH7y16+3Gn+F^#jXTyP*WXtB{7@Q$T7*>L}@4
zO*AXqOcZUR0P7Gd^t1;S@}E2Y+t#c}S(8>QC@Naun&&FnzI~@_?V7t?%hoP)Jycn{
z<?$UgS(8}X*;6F0_j%O2yJqY59rdoN?T^DEwgJb+8dvSM+MTtPTWX)EskTrgu73yW
zudLm%^=p+oPzk^H!BwlaZ>`%>v$KYq&YI*hui9-pYj$j_+~QifdfkF~D_5?YS2RC4
zT?>JC{kF&IYN~1<s;#MZmBnhy##Zduv3*C<7B<XVx58|IeU-L9SJmDsP_?sns2(pV
zkDaG1?~{}lI@qgfZL2!9s$A%XaxT<#UM+^rYPmh+dy?#>l=egTB?^Y|8y9W4s=J5F
z++3E;zAJcrN#|VrItktv;$02DM-I*taJLt6{&apu|7B~py9ho(L7rc00X>hFboM*Q
z5pIExV7w?tnO$q1>WsEgHuCLA38@3A9ci{zmgjCE7xG-dN4v%~slhP&9dZdekActE
z3&0O~K$`+SC(3f|bXw;khhex68^$+Rkh0%TN(mX!U9)!&<H!TAOy47r+f(5AFuAl>
z1-=z?CklM7@FAkP<3Mxs9H;k5<EPA5FwdlcX+n86WML0~Ob+dEiBpz&RvA&xW+NK;
zE@ejEr%Y{L9eH#i6FbxY=s%GGd><nZYv|xH$9SE8UxaNQzQYZh_rjNyYTqkR%MIf`
z_DyUj(Qm;%z6W{zGi3EU%7%X|g@5$IKf2vH<QK959<6qo+ENSJ%|3IKk}cDdPYQ5-
z5(J)jxcc1NU3FD-9bmJ3I@#S-l!3bldh)OJxhs>EeZM}pCRy3O`rPJZWsUW@2a}c6
z)aSmFtgNg)_gu2FdG)z8GYJpZgFjp1GWrkjm#pkV@RzLYE%2AD>;U*nR`wM5OIB73
z{*sm54gM$z4+}>2C;HeCv~&Q^JL8@^l8x7F1JLIR9><qs4A+`+>tUl4)q^Wt?T?r`
zx)}N%sDklVWt^-=8mQV)v>5P#X5=*^4{4zJ-atij*g#z;;sMfHp|b}m6Sj8|<0%Dl
z0Gk6?q=B3+a#xZr^d5Q&JN^ROROsVD_EDaM@HwO-c0ep*>hNMO@RR^&32-6}l)T&S
zF7XoItmE24f-ePpDT_N$et7xna%12_vM%;B?q&*AK;J8xVPj1$e?{}@A*NfS>@6Cl
zzoyX)-0820n6HX-@DgU+5(lRN>(&BG>LN3BhejF4RhltNYgOhXgXKERZ=mX<zf-H4
zJ`PlUZ)ha!$ajVxna6nK&9WRkV1x%7jUH`ZZv9}TaRxrcp*2iX2TvG%gXfGWd<}fF
z5?y-9c$@pX!AScUvhjw_530o{NG~Pl-!VS$;X+K2$3OTK&E)>M=|#>*UJ>_E=!buR
zZyGG)Jgs_Kz4uAwcqE5fdY{z2T<$(V9X!qq){-4?ISf~L5M#)GItv`7q2}}G=bL<-
zk9Yqt&Vm2nJPW65@ykPwh0O|i8<n}?U+Dq#e+%fWb9X^kKtm~I{v*Q!$ENU;dR_Q$
zbmTcBA`dYd_*c2_xDOG_<-wQME$*uE^O(qO22T3?h&OfC*U;Z$oJ3p_{wso?PR~J%
zlqc)Da}+{dM=xaB3;Fg!&g_$WA=h5WmHQ>!NJsPoble?KAg>#1m<HfJ=5Z+$+`P)^
z*-WAJ`Bb!iGh(~i4gU3;PY(raS=UM}U0V~=HTY|xYnRKW|3k*fvhh7R6h@gF?OftK
zDJNg!5X*N1;?*w5!IUqa%Z;J;ke`jbc?^$tmKoQ7%X)|Di%Zcl=5ZeDlgCxq$2tVP
zc`gh+DD1$mfbAy@`q6^=dbpK!<HmXc{~cQ=^4fSjRhwxh@+(FD9+BT3mv8FLw@Vnl
zBQAe|fPY@(ABoGK!ujwKp!*Ns=V$mf9SL8Gjz0n1OfTDCWTW09X;uTL-(g#fZbp2Q
zPjd=i5jyB*URWQvzazDXPs)b-9Ajx6_ciw~_bcP(J3b%s`xse#iS~sbLmkV;8nvYp
zR4p(~ZJ$BMT5zj0-o>#w{7*1|O75lbWmX$fe;64qMOR1}f$vd)5950DWjdvG6sXTF
zrLMLa)E%Bdr=l~cPM<+th46E*uWakthUbZFzmS{CDd1rnRDn8m;9G5h445v|%R-+{
zgnyX?xq3#HN0w3@#}EBTO&*M!(1wcNv{M*o<5E)b-W_TsuWzq$h|5%h{{_F`v+bJs
zgxr7^Iy-oM0Cck))y(iaVVizT%cL7rI%h+99e7!cw(4YCknO)PJknQWJ@&=mkGy-0
zPXOChM25k*`B~)eH@dDyBT$Nq`=tMbQP+RYP&syF9UD*#o#`9MF<J(EMjQKA<~x|a
z41N8_*8`|2eMba!BdB|U>p-_Ipw0!<VI30<aNpkmc%7)_AkxFe_c-?KI7l}4;UN)+
z>IW%(aToOQB>L_o#=VoZ8v`e|&eb~e{0tjDNcP2D%lv_p>x<0tE!zVpA0}B2Tn^yv
zvhd!3xL4pUI0U=+0pdUCkXD13xCycGp#qg@6EQ@!7)wPAU)W^9_K=O?5MSQX@*XLn
zCd>tZBk)^N7{+ToGYs@<p78%>Ub=R^SdGOldA3fJ?+fOob#gt1XCEWSyCBNlT{fD2
z5;pk{pXb=(UeKwxcM=_Y8nWrY4--OW$2!S@_Z#r8EY=~H=B;zvI?37gG-TERnH*lf
zKs^kZ9fnK}KTOe1%tPM21N19jZhvSvwio<9JdJH-tJ#)~+W!{#pNVVhZ_(B>Bii~~
zwDnA^t)k1?`dgl7(SNi*EaLD5+Q-Elb16~=i$Q-}ETx#w;deL|0S!>}%gP0;)|5X7
z{b%R74foUKdcitkBmEFL)swe<>^^C9g$|>C-b5b*AL=P>DC0Sj_TC&P`1dl7n4F)U
z>AVsj>DP*nW3ZNo64Gze4iz0m{H17zr#jWc<6WV{+1`R#<nX=;Uj+I%Pdiwk`r3^%
z+Ix2hU8J~6`bZv|8mrJ*fzXOVef3KAf$Xc@0mG2Khk0vBqj9i#n|HtQ@qsGX!31Nd
zg3^~1K<9n?jBe!JfV@xQ^4>(9bkt$LI?Jki1nXdB0niaY9x#5`!MQ~F0Ocz-P6hD7
zH`9L?XqK@V&)=<atFdzP>XpSk8069rm*^WfZkmPmbdJ-QCmDCdk5SAY>I_+Q{<I^F
z9C*J3pBK;Po5;Tb`4^EN&+DPx=fUgCf>$?EmQx$sRVmq9nO<%`x(oCqp}~Z;eR(vn
zK*yJ&+e}#m@FL{lf;@aiH^;8p&+ZWN;CQw&fAvajZ>}ohTf|)2V6m$Gpg^_8+e%*l
zDDIH*DrI>s1ic*`=LvZMr;OcLW*oms8FJro`$B#lG5NhG<kxY9{9Y6C>$pOGFYJbI
zF5D;Nw-YJLPsiHIEsQ&~;wNh8p`WXvrXD}b&y0UF7Kk#$!lAuWot!_opXHra%lX$r
zKYWXbHxsu*r(^h<e&vjp3Ae{`5i+sj+IYEu489b7JdvJ8(>u=7+~6{sQ%j@ymR+nq
zkVbPn0mN5xN}QlW$P%xlBfbdEDOZE}B~A<0g&0@~Zq7I!+U+LqKBGtacme+iP2|2n
z)z}rlle}3!f;!#CHp2Zre>TxPi~$4Zj5h`qjA{Sl4mGAb-^o>rQIU0rbw+y=>qS9p
z9+YF8D()hBt`Tb~Ifk$4JWUUsA7I+&%C<P|xP|5xe}r-EBhah&@%tR#UOF2xY)-@v
z#5|#o&ldhY$CQe*X(>$%c|LG9&7gGOx3Qi)-Hb6qx$ld4h5j-oCK_VR2Zv)#9utA1
zU4I*6+rD?43|mSW_1r$%a5OH3kJe!u^^iH0`qgplXU2>EWPF7@ZtpiX_`YdWgl`^h
zPtq;o+pnR`FAcZJd`W%~7cJzr_=di9>9<gJDDX2U+e{<m(@;gO3y^Ow%a`p2vg?H{
z1sk!hZq0>)dZR0mJ+VBRLSzp$obrbnGLFZ^%xSC};WTnVpWF%b>CQigK7}8l?5pY1
zAoyXO5jw?oum?WI(wSl%`eV(T*}p(n?(NORdTQ>EoS`M$Pn5@UlXvl6QaWbPV#wYb
z+RHlAL%zLf6ZKog7?O^D?rB^?bDRE(^6K;NtPXlsIUDZ3vpRI&2TsgK>}sZQ-uI;O
zW@JCP3SSfbdMxr4%qu^_c!qY0J0P<sD7(YJ8hY2~o!Z;DXZYs_zp_@?SNJKi!|$Dy
z^c<K$@p8;gV2{T}+M_n3XpY)SGwTcHAF9uvF)NtA!5^t12j+7wt#+!jpqac{XsR=k
zOZH&FDrXS763qXZ)4Pvez+CPW#>TDOKJyU1mE57XY|hYIki}a8Z>XbJ_3j-yD|xya
zFOZj4^1><87MTP6e1*L59S@?tH%ck}5|?p%h#}kfS>BNny-U?^uGX?_-wk@#I)i0A
zpG$Y)=d?G#rD28G*kC=|@m`JFFY~N)6H>kf++R9H`^#~=xgDf)<Jya-LDD2rz-7n5
z#ppzSI`SoKEMMkf9b(bz1!5iG!RO4hB0K>yrk^>ZNKJVTdF%6=T^8KJ`h1#cJ?HhK
zjs-Kl-qmcY&;Qo1@LSo=W2g%|x1*lTguQf8_6PjSF)<cfK4etmPR4M5{-ykX?|E`1
z@&9h=M=gJO=coDq-lfn@`2XG+u)_rYKm0P~eTx5|HSGTt;r}rYcVX_GccuR~$8*N_
zC;ET4<Y%P+4+pXT(l9mV|Nm6q&wbAF=navB{XcXfj4Zx{@8^fP7{Bj+5_1mBLDc5)
zF7+_`7|b&f`)jYHb+)%+a|i1Va(=^g;;;DnT#xI^x&Z*Tq+?9O{GuIWjfJOg<aiK|
zFLWr|>)lHaYUy(jBVjFLANdP0KfW8j#WUO7Pl64&c<#*jw1act`_iyRX6mSxUV2m;
zS9a8sZy2EYkK7j1A#aIG%(?yy^s+rz^M&Vl4FdkK8|!{Yq6g@hmY$|YPtY6DbJW$Z
z(5e0$>c(F68LZ1<{-R_uO|Zwy*13?ymzbyU1LKdy+q*FSS#cM}!AE<4rJw12n`{^Z
zg})EI_Xm~N4LG(eH~wu!0QIpR+k?5LO+(#qh-}CgYmaERE%a{2ap4Q%;&3^a;kI!p
zdYbtl|8gI5T);6SuU!@DX5Zjd$oLzX*f_A_OD@Cs(N~Z7C0U<e#$PAm!#Ey!?a{3(
zUYr3~P<)Q+I5x-p?f|#N>&6^QhIf&z0XkQ1e6pVNvCh*Si>*h&7q^e~%CLw}_nC7)
zjyK%nj7xHE!?6g@N3Hmy5_8o_5v)~4^3fjJM8DRdUsdSphR|Ub#znC<+b89Nc;Ls8
zDgisM9ln|C@H@+?A1T{L=)eUh@|D)RsP3f#lrJ^y1?zoc4#MkMqOaoS2O<`<*1ef`
zzC+Cg-wvJq{Rcd^3H=}pn>TV8H{(N}cW@hwt2KyrYM~#{CoYR$PiMR0`3JWx*F`0M
zrW-gb&=g;a4*L$^LEfT25yP>}g433%+Qnj1XF2}=1?C1amP0>lZx?VpSIKKl(9tY&
z?wWBg<0^a`{JVs#6s;=bIArMJ{E*T6ZKjXQgZUZ9g?_o<4=`r(I%B8_I=2t;5oP;h
z>yG=VNX48evIO>&nbyg8<h`dAvPM4R>_-Zp(I?~t03mNHzD~5)05p8X*6IUzVgCEA
z^+`_`sh%DxVw>eP%0+-3Xf!$o4j4xk!7s(;On;4aJ{9vKD-JGpA?CGYDAzOxDvkDm
z6UH&=3(Pt9(CfvOioe)Lb&C#AbF_gLw8Edu^>r;f+aKz91M99dx3HCFLxwNBlna@{
zw}&eg9ed156sfEOS$0D|s67q5b9s*9*VJsk&=K&&{g7zw^a5zR0KP7OuM412j#qM?
zBIhWH<|m=@pNR7kXm>W-M)6zF&v9YDmX&e5<rd*zs(t&@e+*wzi}a^RA4hr?scNMg
zthCNbtE}`fD`mc?1AYzOx&C&xJMj7f^lQ845zK{sh)Xda4p!dpd}$8V?J1x-tL@oX
z19f?FF@8ZN{W*{c=wsPnEN$ohZc*sb-jhU&ZX-Kz7oiOY()o)5<SK5YNAXUri(`G_
z*KVcmMO~B*oj6w9gTBZ#Uay!ieo4V@%7@-A$9s1L;a#Up_!DRFi2-M^K}v%`F8BrK
zvx}kouL!?-YS(SMc}=&D>5w<}U7{-8bVQqgcsp>vllQhb-X^kf{CVWlZot?-tvtRA
zs(cFYr!LR49f{9Fm=SA}+eaOag#`^D*-D3TaQmTw0WsHRf3WM|tLh%iy|ET^7xSlv
z5F@_Jd!GG4eh<BjSOGHAs-k|iigK{$?dG-X2>OZ7$NBc#KEWMkSb2Yk?H%R9-jTAs
zb3b4V&0`o*_txl9Df9MBGtZ52EvhKG*?#mA!-kroh);}e=)x9$=R3G)z`5(tt731~
z-G%kd9_SAk+mlbuP}R>t`@lJFgP(c42A__XBA2)E(rHo{Mz#rlzs&v4F+Jnwy4(ip
zDrh5%+hF`?2flfrk?Za`ZQ3x`lXhNiTsp<|p(EiZx@OE``gT3MM-6VaiMotK&<^|;
z$`Lbu(B|H?;(4Zdo@jIV^Mc-TBl?dfJ(tuG`0S&@*Z+$+eAt_g1}%JfoWeeA@K>9>
z`!8i%@8JE?M3(OtPiMPfBZiPO(Vd|W{-6rkzE2+X|H4S6qVssp`~~xEJf?~<_d*%Q
zImm_gf?2M?9c^yzPv(zh$aJ&(B>#}PCyvIfa^pWgG-<rp%yh`xqR$R`w|Mto+*EE{
z49GH0;RlM~2X<f|?IOR!=TzhQ8~kj&*Wz7^dw(47TL1^S4^|`Hfb>D6bx13aRv}%D
z^f9E%k*-0y*bU?2u?=!^0X1J@A8YO`j7f;uaNfXM@D$DJ$2)8WHl^4D0P^s-hrHHW
z_^91j^O!)Hb9dt$(tab1_es9*7(KqHjk9<^!?82`VH@({=ct=)wD474BcV4r9%Ou2
zyYKdt8!uPb$1hpG3Vy7GG7GY33b%v&S1=|oMEkP<_qOHdrUbpndx;!(?}M#uHckfv
z84E*t9<AO>E~ZVZ%Kt#nhqko9R407*UK!UHK83xC{f5Rgu`S`b4sn;_DTANH7=iaq
zo;ene@b&PQex_62OgG~iQ73OiokQ+MqYw7ig{p}z<?_rfe)U^<TsE?t%VarL-;-Y}
z)~;Q%c9Co4mdc$wYqq(nYra}rRpZ*Zqo&4H`BfaetlYSzCI{7B{v9=sJ?5JE*i6^X
z?XDU=!{}O5hZ^$8<a`|8%p%%|lbf~M9@;Kjbh&bJa$GyMZ{PaRW3DaRw{L#DE>FVb
z<1F&*YE;6dezm4*C(>n=+xXn(L$%wgQHv`*RJ*0dHTy9WjJ7}YwXbZgtlcIm;g3cC
zJ*ZQ&ZTsU7Z*pxl&wxI(eFTAKjoFXQevF@n&ywPd_9h~nk*-mzYU+0K5$V}mwx})>
zep1%DwQGx*&>}Z-&A%vfA$!4<*}${TzxMz6{1qiG&c0)0wm5bz8p>L+dZlYe&6e#|
zm4bxrkMDGCf5^3Q`{UcHAIr&-e6HWNsd8KO791mugU$2hyLQ&sK}xljl$alr{v!O(
zx`ki3^S`-0zLI6jSFAL1V}A|v$uLt4p8Sr4Q%;bI#IO?cMdUN24@Y`&Da+bL8v9e$
zBOb5FUxniYxUS3(B+1v4<hLcsKbAQEZjpUuyLTsnzh`b@Jojjc^Vd`-&i6YK=dbHX
zoL>=0oWH&<asHQ*;QvxvV)*-#;J>dYG5nX4;Q2}tJYVTZjOQzTiSq+V;420AmHkzj
zgr3Tt#P~M`66aSPOPpVwB!9CvF}%o4{Ygn6C4rO#QW8i>ASHp61X2=6NgySGlmt=|
zNJ$_ifs_PN5=coPC4rO#QW8i>ASHp61X2=6NgySGlmt=|NJ$_ifs_PN5=coPC4rO#
zQW8i>ASHp61X2=6NgySGlmt=|NJ$_ifs_PN5=coPC4rO#QW8i>ASHp61X2=6NgySG
zlmt=|NJ$_ifs_PN5=coPC4rO#QW8i>ASHp61X2=6NgySGlmt=|NJ$_ifs_RP@0CF8
zcS5`HyWf0unZM6STg_LJ`CIeMjIDkv4OnT5m9|-_tlwq6Z<p|WR(aG+<<HA*vzzbl
zTJ^WNtaAJuGGE)Q`r9_S-rIBd{JQ`AXDi=o_klCk`w=tU(sg;dO_ukV`CT1m`f#cI
zp;hyJX_1wh$?)Gi`MbH{Kw%&MCb=6w1#JEv`!LX0c+wopI`O}WI<*^+;(sJ)H!kZ8
z6J&zltag*_FD{d-w6FiA`{dKxPy3AdPy3AdPydYhPydYhANLpM|FiZnpRWJo$2k8P
zW1N5c80SB8jPsv0#`&Kx#`&K(#`&K##`&K-#`(W)jPvgp<NRMg#`(WtjPrlv80X(P
z#`(W#jPw7wG0y+ZW1Ro&G0y*#G0y+gG0y+AG0y+=G0y)jW1Rn6$2k8p#yJ13G0uO^
z80UZH80SBCjPpNhjPpNxjPrln80Y`?G0uP980SBKjPpNdjPqYG#`&K+#`&K&#`&K=
z#`!P&FVFvHef~7neo6u<38W;Dl0ZrVDG8(`kdi=30x1ckB#@FoN&+bf{KX}3=Vjl^
zr~lh2(PH|)S>Nr)+ArGv(AU1QwX#-z;7_3yt5@1=N(=y>ir<76kulj3%l8U^v>Jy<
zy~Ll{d+B<bY{6!Te6t$KdNQT7D)aXMo>}&x31^})pFi8bOM522SY;4JLqz8D^%Q+s
zJUgq5a}@ohd_G1|z-dIC+O)LJ#evC=K$VTcRj7;K9w;Tn_Stgsr?)=YVG|uP+1W?h
zf@Pg0FVi?J&(;~vG5VrDazraBJK9LD=mE-$o}i-WIdb=-|NC>OwBJYm{z}@=-$;S}
z1GK6C1l9GQBXvL_eISQg27J^uP)Y3rjnpx4fQ}5Dpko8)=#4>zx(0LT)S!>L2P^5!
zU?cSm9-#2x3F;e!*xdn2)6&ya%~8@Bg&Jzti_|_hJ(Ijol0*A{ZJmoLWN4pD>qMX2
z7F86|6dPa_yLKbPDh}-ik!EXCMZQa$Cel3ZMv)e2H;B{?ekTd(J+&mNm4fe?XfNjm
zC;!MrR55-Z%`ue4-pP)z?a?A_YFcNw<Wcu(qFMYq3#fa2O!7}nely6wy<i87ozjC;
z;zVkX=8;`f(o{S<qNSkSCZ4mSn<!gL6VI+_3%QtIz~n`bP@XnUJQqbzQIR%YJiDV|
za%&mlc~k!p+N4bq&vpH$s7{+Kp4I*^soHhoSs$>It~tbW%RnBrXxEG9wt-S=({2#Y
z?E{;rUAs{{cMP;phvpQ|M+T125$z`Nd~Dzp9fO>iwl@aC^oDk`c<vgsQ<s)4o=*+t
z(J5_;c<vr7rEbWH;m-_iqBF1;e(o7;p&o6zcn%L9p|Ey~c<viKMSa?>;yF4Prl>Z9
zpA`za=r--T-@E$r6vBHR-qF`ewMOZ$ttMqI^7HP|A-5J=XSp%-xYmN-x(E=~dd)ok
zJrLx78NWS|gLJ)FZWvq+FydQlp6YZrQ>dbfiYl5R>n4}KqWScY*2;R7y@lJ-Xa;Vx
zO?MUPC1ivd2dc-e0G{|}oftf4M4__|t?Ldo6ox+FH#nGvP&lo#7iD2CgO0@EPzX9M
z>qlnlG;q#%L;Kn^mGShSFkn*#Y|4O58L%k>Hf6x34A_(bn=+0KDhBMyfIS(oCj<6m
zz@7})lL31IJvkR&*E5L<bt3P6S{y0S?O~gq7c3}OJz22lEZFsgahVaD?m(FfW!X_X
zQU4r*vnQnub^B|_Wk1nlocBFR*?@6G9zodz=yw+E<W;gi@!O1Z3Cnh)Ec~D6VYk{7
z7k-EOw;$&=E^O58p8Ro+;-8QnkE_3c?7c%oiyl+D7r~z_IzW#XEA-W32xt*#Db@{R
zQ6s4l_~v4tO)oy6gciB*oJ0B&FDWcXc?VAm*}I+y|MooVhM;dIXs>13(HEORJ9u;F
zr1`mDB9L_ivc3RWb01xRye~lB7a;EokoN`1`vT;B0sYepnfF5Gy^wh?WZnyz_d@2q
zkU94=_itpQ?f@^DkY`b(fQV`Kl##u^T(oPK^u@usM+xU0C0yw!;rye7+b~MFz}4WO
z1DjYj3>StDeVS}Wz}l|@TXzk3)oXy&uK~7Yl&~)5-<=6Nnm{yon(W2Dg#H^Oc#P=>
z?1gp2Jp(#A2Ra0J*sOr(`n{+VuUBYW$WzuIiErdP;||Y2o4_>!PbSM+;u$p@Y)s(G
z2OY3AZGz3ob|z#p0$(xn8ZU#0u>ULC9SvOgR>)xq*@O8uXE9{i3tX4c|0~dC!9=!$
zwsQEy?+TwN>UcIAQLfjIvMcItL?6V{3AkOm_NcvoxLnrk8)X}ei+!61ev<nOeS9TN
z*9yPU^eIe>w1Y5Yo6M(N4rfHKfSYOI<Gw=QFfPPYQI%%Q(lTid_gk$0Em($O*doH%
zlAt`2Z<a@D;bT!A%|yGkm*e3vK<ER?Sw@V{Z8xIsUdRk%PxJzKg1koHcd>l`q<T_r
z++Muwc$|YCpq(rHG1_XAux>72MSix^;Hq19_Ls%MOBrqie3{7$`!vYM5OTEiKTeLq
zo-r=83tqU6MUzH;Kii;2x9%*$cy|SDvMu%rsL%E#WY-H>gSKcSu3bCq4s^t|>wpcL
za?eM-%@(bhM1oF2>^32BpUZY4<z_ot7I5<zin>Ylpw`46s{`JyxlWey!L`;2dg;z<
zuao{K)EU3<+S?)bwbw~guf2}#>UCHLV0YZNLU+)YF<p`NV(FzP)97Q}4zn$@o{i8e
zp~rFfS{P;&_*yazgYmUr1z*P~@pWVxLyYg(Rq*Mf#HVK(7a3pMRq*{K<k$W=BFIre
zs&pt+cbPm(EI;^&*@wZ}2UNCa^iTgWz<Tlx`0#gZ{c|8&(BA?aNR?RsN<UI-=|F)P
z`;`{-S-V0zkt*$24Qk0knk`ZrQbk9Z@PSrr9rMR%hjoeP6cOk_c!JU223Q_bD`@4C
ze$d$t+@4xeT7VbNN(=BZO-PwGTT<FApA-777@KaZpx+H)jOx}X<M_4O1^lZ6^GL^4
z>wyR6hy9yILtnj2_9JCy(HHdERQCDTia%BdZN+3@!#qWfk()rr1(P1n?PP~+qtOhq
zyCb+KV4a4`(DxW)?L2Rb;n=7<I3D6S$9(}~>pvLLNEUo{7Hso<qELsIBD=`$+ds|D
zZHakUFXo&)?gA(J*}-v;h-0{KWuMQ)91(F;@khX2i?)H^v&tN+#QOx!Goqm*e)8>~
zQ55>f=7fJR;p6czkBm!}m7*T-xqoDiF_BfE;glJpMSwF{y4K0#p>OZ4KW1MPEMKQG
zOa$@>dNFR=S@vFksKf8|?w$4~bgz%&j)ZM*G<k@R7ukl<7k#YXSHyql^LU;;;7`aL
zbQHb{n)YK}3|^R5))|2ZX|lE>1>h6Dlx>CEOBk<$#!<n6HX%32p|=<K(5|pW*<X;e
z@XydA&S%<L9~gH(WbV#jUZ7K9l&?Z+hittMs2Y{4DrE!;JILnSKm8)obfoP_v5qih
zXXsVG*SB|iwRT~ZQ+t1vGxVz4>%sinx0jryG<~&};hn>NNE`2)Q}_znMSSPoZ+ud2
z^lf6lA?7l*9P=5`)=bJ^AHh0WPb)swXql>xYx-F0NP|BCO&35L)A%FMHs=Ageii8Y
zF4L9mLJGQW{un9x;pPr*D_F3~87wIE2lLZ9z5B??YXUDp&YsPrU=1fK<PoonzXCmL
zQ2vM!^-M5rgy#XCJR@2NepxR4*O@f*7lQwNRM7&OT7fh4j2Cj4=JoBH=30pLiQok4
z_IA+RQkrJxcIEwz_es%uOPtzo{YOJjyBU6>Z|~Gk7Q$zEpEN#pXTt8##vttY3i{B8
z5%k{`eaAL!^<6Lk-^=}Xihb6)xW1b@3p_wZQ@WTJ@BW)Nn0+@zP26`=0?GRB3c4US
zk+%juYKA4h0??EN-P(@+jNqAN2buNzY;BSELErBnv!h;$lo?U<pE?K~;5E#ce~~y*
zU+63Fv28LArXRL8QTV`2^i{rz`--}N75=-HsFYSs;Xa5UPs%t78Ou77r&7x4XE>Q3
zvFO;<d{7O)qaO?Zjedl24C9^ooWzUuBURX4k~U(vo&v640oOajxY!SbTVc1?L57e;
zDdm=p8t+U?{t=TdeLJO>()@a^AKf0uOJcYKql7y>O1R%&0Vn&?l3PowVd%Aj#&HZA
z2G7D*A{{ArDeI0_W5}wLGuk?Ot8vk)bJu9=gj<cMRp-8|)d?;8iR$h!b&B;tZ)Khq
z3i={XV2qv$TPPr<;1yE5`)+DxUPkH%kJp?pb#gFHC#AlG4)&@HBW$Y-`VRjTIZfmH
z*AUhJkX%eN+gVhx9V?~MN~YU&lnl3yIo)Bbg$H-Q7nf#oz8k)Y=~kP`6*}CjmeL)M
zaz4`=xgTu+$1u&#<J>OWrKFGNyz%sohJMg7G4x8W%4_QG9<+6xsi&S&lb0}j74zbL
z7307-@MbrLm>=QCz6Y9i!(X6IDcA}IOa0me|IzkL!2gyMPd@zVZ!?aUc(30QYH^cq
zpV9N3e4=v0_*lwMtn;9MJn$hN$dA{2*^juh@C@ACcK8)z$ZTVwDG!tv9t2FL>5skp
zZ(Kdtn#f-)67Vs-wQS5CP(&QVdV%;Xs_&-sC}=LF{C<}ANcf0lyYA~i)3;1L(YG5H
zOKHwlhL3JXd?UwlX~(su92q}&8qfH(s*Hsgcdt*_Mwumd=#LoRz79D62d}vt`7UIR
z`bRcH4oHFH@q{=4&pe4SNXQR3$}X$-g@pA0BkGN=?ZottXuD-M;)ToGo|3Tbh$Sb;
zw&h!t!TcTBZVX{;{vpFJNJGqMpMp67bw>g7X>xAaY}PNOJkO`M1-(H#fXin%_~F=C
zgBZ~qFJpAYVCN-+#oon5j_-sFdtoQ6C+|b{z!82G_JOwaZ?V4I{*s9!j*pFIdsu7g
z;CN5qfE{14uJkL5F6e$F#JVs1j2M#&k0LLh$7;t5{U>Z~*b@>lO$%sJ>AFMgd-`*1
zNBS#m?WMH*7feIA(bmTPB!c{f9~(vlWg1OYJ+Rs6Ia`}XJ5<CxU5Eoa*r%v8eUn&I
z0x!XB55!^t9-G4(^$zy6?9&2=b-_a^ExSzDhR5(ZL2h66<8Xe#udm1l&+K2r2KWOF
zOqZt?@`X(aAG>|n$D00OnZh`(^sgnaa6aQ;zbbL?n9jb8$8@v4`vk*jfob)=C$F2!
z@Sa+8y%~Kdd@IY*jb{_yC;U0fFao(p0n2q{dAv`O{w|dJz8Ejeeuk~X<}e=-<Apko
zMvNCF3z#16Czh?NgAA?S=HzjslzjinWr8Qjh<)d$<MIjlUWO|e!_^wY1^I+-d;e2p
z<Pkn^ZZ6`yCnss6<#%-BqtC~5T-JZ}JU)6OG5ThMHpwgZ-x{<3xF1VtiSSL#qe<Vy
zKQevsV`QQ}VHnXLmTq0C7kS_3_AQ)sSLNA?2}ak)-n$uh;(l5BdoJVlSZ`u{C)F3P
z(ErPD#q?$A;TSH+Fw_a1Ny@LMpJ7dYCv3VJzgL%EVSOCF*OKD1e4+G%!j3Sn7=&F(
zf5CfP!e>~%Qo?9ca9#v<c~!U>C8LBJ7#-ZilHZJ~-AN<hW?FpYo4O~~v2GgdWd6jQ
z3H)7^mzze=m<Z?1<=2Mu=2e&TEpgUbbfQ1_{~7SQA;%|IrIF7F#rI1heAizCK0a%7
zHGKF#E2E~5&mmn6AO2s<sPXanrmNv|l#d>tV-)>y{WajbJ_){fJ;Zq$ZQ8q?e2(Xu
z^pWe`_)cQ}FT+pP*`18o*`0*#NL`6ox(6R$Zv0%tg^1Z=x`(+3$+%6-`Jk7=_x4(`
z*lsf(3nNZP-!P8;gfV-WRgdFfS@*lB`y=>g#xY#~`<K-(v21ycRX-E$B5voHkoT3v
z`WVvS=2cFtZ-v(9Q_=d(R1~b;;9tM_^iZ&t&oh-;GFcOoi6`GY&lIyUDG!T3UUT6y
zcB9tK&)F{Tn~j(IQn`opfAt<sylhw>9fO^kV<6!@YPq3)LYvMv`&;<#>(LJGYqpu|
zM}eF9aQ+Fnouk10xoaGAJ~s-SI0u-}o=51L8-9}4)-kucx_qakUDG%=SQ{4$NV~E6
zi|w)n?V?X(K7{Fwk1M1twEUU&KP9i1(KVvYYk?Uk8|IJC>J|S)v6mZXHfhZn$F-9g
z$9WyeTtmA3Esnjg-et!+l31U`8N;q*F&M{~sy*XmA^cwbobWrm&d+;C!A%dS-Z#nV
z!5KdI+ljmf;lcUYFRU^Qj#n^O>_gp)42QZG>*w@6$@Svvw3&6%tvVO2Iz#pO(Gt`d
z@?h=>cn8jFA328pfv>cEAz!S$|FPWoZC^0|erLJyYX{Tr0skEP%Qdc%^E4sL>n@KS
z%{6s$2eWuD#EU&Bnk#%V+U0!+kBjFJG*Ppc9@Qq49R*(o_9D=B_%)_Y%c5?EEAfW+
z2IttEt?=nWHktPw#hTV97XH0)_}fN@|G!7$`-A6^F`o}!B`>4RkDu?v*I^zcpC#V^
z-i-4@-OOV!i;e~-D1wK<QM4WUXc7A1<JFLtg0s5;rk&@%@qHla*D`Tl7;78l#_vus
zTs&=;&BaiL_n18nwqgu6`y&vnHR;qI*>E(rmf^E?nClq}#riR?U+|iSwrQHGRc|=j
zukc!jwcd+oo)blQo{oB<CNH0}^?LrvFnH|*dtMz(m!z5Z$e;&K&F(k%$L#mbVO{5a
zD|3JBH+v;7kXMXmtN*hT?Aa`g!#N)^zo^;on-84naX3q{r(>3l_s!>g?8jZS+M7E%
z+-tf1kY;~?aodJ*|N0Xxqr@y5zf9sDGI9U98|y{r$6rsEddB@C*JY$kWZ6LGm1QyB
zvaJ2Y3BD2X`f2v4=+CnFpWquIo1dIXE}NgcIXc`H{}Yytkj+oD<g)omAcFqYvY^B8
zN9D#jH(~~{XI*aebVE(}QuG_l^)^0VUU&%O3eGCyyM*Vk59Uy-#$&A}Ehhj#cMjDh
zI$y4%jLW&cyUH-+*>LTx0=1wC>v6zmo)b47#lGfT;A!LY(u^zqOtU<<&bat4d<y!y
z&-khKa;{q3C3Jc&=gS-C1K`VTPw_j>Zz`dWFmCMY<Gs_;7OXKAHc=LI<Sg2nWWnCY
zuw2HlTnF`6a30sg`u>mkS>8;iSieg`CqVg9^fa>$^DkwGF(48^;it(g$mjRla#eQ^
zWS5Km1)P0{-F_Iv9C0pi;vMVlq=w%k2j>a6+lx4VIzNY-@r}prE&_iF^88v$uBts+
z(%J7IN4N!TGhURV%+B8;MB6AE`F5m))PdBFG}|i6bGP6-oHlZC-|QOKqz3U#!96<m
zMVQWG1*-OX0rqsr1KJdvx1T7>HS8TMau|mDuwi_21u6Ue<{tR2*}I2v<N*iM_Xzyk
zQ{b8Rj$Re`R?M9!@VUa!y}9E+bMqW0#@3%QU%@<+2Brz+*^q@j{4u_9I9%eCWu8^=
zwVN?t`7X|TzfYOkygKseLMC>m|IvRUvHy)c@%;vL`*o|Yits&=8{ZXq@qJOL_PqiX
z<KTVJ%Ocjr=(k`C--EpV8M68v&R+l~0@w)ZpkMurn{V}@6DL96243UD{7qR-G?Vk0
zSL9c4KIdsoxmcH_iR!_XuJ%VvTEsU!wbN8y>$dvb0UBQSV65XYIS4u!mxQa&z1>w;
zMb`l~%ctXfP8DU~E&^<@K6hoZvda40nq*}w>T{cumF3sx9!yp?sXq6eBxOUtug^V~
ztn6Rwb7^K`9)`XT{%lFg_JO}-WsTr3Sy>JEOIB6}{*sl=1AocNt_Ocf$}ar}_@l%;
zT>5Zif1=+UvTyOcGw!*AKI2P+-NW9;X{TVj@CELZhN?b%@)7Mf?*FNca|>GvZbBLK
z7ka*|97h?0x#es_3-FG3{$j*R&sph*R{AeidOEnt(r*io_I3D(*9sV47V5u(bQ017
z!KNzUz4(%ee~9b5@ZK6+wvO}Pvf%42_(vsP*y9S&bBO6=x;P(sU-C8@ZNjdQ&%Ov{
zH(6!NQMOZ-v9GGA^3F$`_#ePczDC#_`z4ER?Z~i<+$V=B(C;Db-OoGQpN1bhV)Dkg
zP*seNa(rm4BH9`Vttix2ujI2`JWjX+h7mu$wxrRxLY-_F!#+MxMGov64OLM3k^=T^
z`;2bn-GIDL;_}`^opjVufOD2r_ed#?E93S@jzt*z&LzqRC|`<>KY_TLedb-DS$_AW
z?avk8kinleR&HLsvbYClFVZlU>KphB%`CL1ht3bGVw|_WTZ$j!nLpGSvgrJ2M;bZs
zehKF_;`w|N`8Oc{BJ$&TJ+%8gczs#$>PE_PYGYqpO7>Q!o7<1>0zFA+Fkx+99t|we
z@uldtVVMYdxF8SfyEyG<cL;g#_i>f^t5<4!bJbWZG+3-^KPXVGIH*z!O;d|Iq`a^j
zwx1S)-i}zj5%=8}%Pc-llKLd%*AbK7dqRF4SIF-*A-|3*<oCkvgOJ}oA-|nSS$;ZV
zy;}lcG_(Tq?}vV_hMIc(EWc3md5rxTVn2_cLwlz>Ie&0J%R8->>s$-{@GCXR+o97j
zd`-V{#><4;<L}{wOcHz(2Qv6l^zqoUPNV4^=P^fKW^-z3G~cp|)d$jOjwgV5&zutM
z%?*FA$=@&r=aj3#{1T@H>*Di#!Oe&(ce^<j?O`7v<*z?N6ZskK#jXIJ<jwjK)cN~i
zGya`Fn`mAqiSIA@n@a6}+@Z#F=R1gTQBi(dslADKD>zLRwubKji@S)PgYSW@`I^qt
z^w9YMrv0*bxZ@U@%W<xVgY`bb`yAh1IvX-<PJIUAVfY1(hYSB6er&(uY+8!5GoBBe
zO*3$I@7q)qo{o6OM|r$ghk0+O{xUfu8e+)@32{_<P8el;ZUs2n^|uj&?R&?`u%$HX
zCFU7zI2xCdlkJN4d9fz!=RIMZH;agJ;N$s)Z@;m@_f4ZBeDiR7l5TD{@-?*irQtT2
zuaL!$cdxOKaq$g(>(Xzb>`>rmPWCa4kWWJux#ahgLPxA`D1(iPOMXWg)Eixi?1|;k
z6e4@5;gmnrkZ~M7|6?@6R~qX^I1O9a=du2Br9R#H=g_C{Bb0qLeUjhd3Y}s**aIJ9
zeUDqLLw~Gqa@oH?SMKf2<^KGUGqi;JiShzqM&8AHN$HqDiy?b&XfJeJ@4?yHw2Aty
zVhl+~Kld~)p}9?eMS1o4cUA{ItDFt@-&q~H?*l%AY*#b+dtKwr$bNDaz9#zhSmY}>
z1Mm^XGqh9O0hv8P*&PPHE${lgQ+pft4FCM#SJn#q3O~hX!|AM~=fDh#mt%GUdptJM
z9<>=obJSLvSzj>!P<{T4S;71b{zwhxtvG|G)lPL5G?P~gO?5_cu_nc5cA+c5{GT~7
zM|=V2K2AY5@8b5E2b{llhu*R|LvKMAZw0)ej$YNfcj&C->1w<{US7!yr%W5pAZLeO
zAuoK#gJ|!KQkwaXT*mDo=4j(*dE=}~m#W`fjdLpB4SLr)gJm2)q`UC@8yn!#FvBu7
zSkHF6SL61}JS*LVly3p|mrl|Ca@=li2kG3n_Tp)fG>H^&*>P|&I+34_d<h%NmwDK8
zTJ(AWuVD;5_?($mi2Wn_nUmMxO?eJ^>+_pk7Tm)6e41%J=k=qG1v9<g)oiQJ|JJXx
zOq=r<>H?=7^=u~WrHisZ;9ri3*d^{e?5mDD__Y#Q|1ahLd(Y#1Wn%yDmVVUomv?@e
z|L<K2-Gu+|#kaYM{D1gm%KH@mKWo_k-zxk+&d9hTODXS4|9^|{|BUZX^#5+j&q)6t
z4r2YHVQS3(|Ea#8`;6t$8zKk$f9OOQS$qlKAHW0mC&zD?KM=1;S+RVhRxRc~<I0U6
z9ALQ6$AjYRE@B1FdzSNhf2DVGyo7Us|0ZC5J&1K)QEviZYB>+^V(eu6$XhS+5X0i!
z<#C~hXq)vfZj9jXrNr6-=OtT*2$qUD%DiA{npju5`$=-$<(m9rWqt{tD|TwtrAP5Q
z6-pbP84u4xV&$)pLq83eaYf$Ms0SKj>lqRT^&H5jwpw!Lr4uoJ#u0r5<NIkI$KhKK
zVJyJfjmfiOhvN`yB<8q@m@9Lcs)Z3F|HB=s)`{2$^DYb4C1DGiu*L*A`S#I7?3bU>
zGP95JZ=A%*1Es_E$MARWgHAGR>y)D-;ZQzwIlig$uYzxA7~iz{3GiLK9AEa;@Le3n
zHzg6i=m>msu0mfl4&R)S^eu*y4K?waD#qu)a2$(A;j=J4ompIk@8!}&tjKZRSvMI*
zJKnLzB>EAcv5V!(^xcKEs&>RjBiqCG!)MqRa9e?9!&uybSbE|z6|bT_Jh*~+bhNM)
zI)m}hlZ(Nm3uhwp;on;Gcur*3ehl3_k8k%j(NVNDS^X`>b;O8Tq*yIz#ok>R>Hr^f
z!p{3%!NC2_`Z99WZ%%h%@2h8h;GHF$w|?{ZC84J`&}y_(@Qfk)QL`_aU)W)`T|urp
zwZK#-+ghl}#j$?%NPe_*l;fK~mf`BXCcUh`A<!SpB|p<0%unkCEsO7R>6izLd0i1e
zV*EmmN`Y<|Qip@J%293;w0_L(fft4OLu~L<REu2!JaPXaMmXbf!T$h;+va?E*SkQI
z*dxn09(+VO3Y>i-d62N2Vy(UpcJC-W41B!rTAOj4WsW{`XwCTM3VESc$YL*TP!U&q
zyr_e<U#-gJ=l78ABK{p5@Zw!e;J2A$K#IlZlAaj9(63;*ax|E4^2>TLf@irW0qQ^#
z&apBK`x7k_^j%I<g*w5aX#&sDT>kpaCQW=Eh5I0mCea6@phx*MdPd4pj0cDfcn+sM
zfq0wed5Fo~<7tNW_n7NjzmZcxbSJNs@Yo^deYa#B=a`-2bM2RR@cPw<TKzOm|AqS)
zb5(yx4<i;=^aeNdwH<rN`;>*nACj%%BfRf7hVY(V+)n8nV>dt-5!=u5+yz^h4p}sW
zkNRGMkA$uSA31ll{w|CS(;=IxpJV*FX)8oZ1=I1ZMpM|!dmf%C&`GpWZ-+cx!auaT
zVQZ{o3@dN6Yj}3W>`ma;vign&U8|h+yI^zq!sgBvv@pGNh~uYX4`eccIh6-IFM_RL
zUtf%6aldaPVk*cj(Qn+ywmD^g6U^`8eco#M9(wDxy3kw73!zv3z-x4UBjH1*PaKVx
zn{VIHk5T`Ws1JQy?}C2-{lNks<MqeaXZj%ricS@`ooVOa<B6yL(`ZLkz7!qNdH@fs
zFEVB*HwJ#qz7F4f^}yajfs;m`_HL2iU5Ve@!uf}C<I>?Uo<W0N#NQAErZ~9WE5?7|
zW!!x8S_8K+fZq@rz;6i6pM^I6Kj@+L`%T3zysKDKkn2@gbExuQzs{OJE)9?}4{H>1
z4#{f{^We9cX1Vr&IOfb!thFsVOHRxm?e1GmpRE$x-Wk(p|B{Y2`~!69R<f}kv0kw*
z1w-zmJkB$%d|%<eXI$NXW8b?C`ZdIQ4;#0K-Y%Js*tMnbE#Z51dcR4U@9X$IvgybC
z`1UrP+ZE%<?(<iU7ig~?@js6jJg?;OBGhzV-SzR`bNn{3lx}#A>EtyJ_G@2y%XMey
z7ys@Q>nr<D@feZL`r&aI2JA0So8dkh(z|)wJOf?QJa-{pxs@F2^D(wy++e?l{_Kio
z<J^ZEw5PqR^6xxxzw+7z|MnC2uZUscSAtI}F8TXUV*LXB#OoGf{UYvnpg;m&X?oVM
zE(DOlx)3_-BI$?3dJ=pP_b2-!?d<|yBdCOb&jVc@>}!Q?$NkQf)HlY*ddm7~#;2EF
z1gsivq`JZmjA#3euHcfWA9G#wi*dZ+EpoB1@>Cmr!6g@*yoSd7hjwF3+=t(7+wJo6
zzPrlv^j6c))FU3?eu#}1?7y-wUZ5_Ij|~|6Lm#>Q+N~IycpS#K3))xX+=k-u!nf>(
z4b);B#yDV(0m|OH0w7wfM=Ndh*7z915BrZFkBZ+i{+;PA*k=rZMiFC%BE9e{7t1X9
zD4!-D4d)?+{}wR>%VFp>*!P*co<dADQN~n5?e0v_yBhruy0pv<eigP8EL|to+=924
zt1KTec7Y%0U2IQU{SD#+e3w@6G?WY9rLpd@4Inl@+72IsGZU=CXA{Xb0N4@owFk$=
zWE*DL1|PoQWZ7v|_ly1#vC!^pmhob3bG8`sdAw&_@%Z>05zCbOiRodye6EP?iD_&H
z@9@o~c$Tq^d-!>13qbga?V|_q!gsvCbf<&w4s-0m*jLAT6CkuXYpPSkT?MRLLLQrf
zk8FqrXO;Tz0u4A%(&x@1g<(|4Ietuw$pd&ih$Gn_F%PVlV*Ip0KkRgrbphYho(X1@
z9c5nuzD_Y;9v9PT^i}2?Jz6vN-#K1t#@8NuiFqYYH7O|XVV&2~$?pm9cSt4;z=^dU
z^e5(BF@2ngHaH#x9@ckZYix5JEWd%-5!ha14rv~o;eZY~g0+Z==rUUny6-9HcnC4X
z*U{&eEwFu{%?-o$K&$Irus6huvGzA!ZV%-~|GnTt;W0@3mSo)c!}%;r__@V#&&R+v
zUy6=D+<)@-0(qU1*R<L9us;&Mq+@uj;q^-GBkZ3bCMrHab-d<}_7_BQ@LPQBb6_*v
z|A;FVdkSz?&kI|JKjAaTlE<s@!#G3L*wc6l`xhtw0Q~>U$3Co=+xr3JgYUk1Tq*8i
zc}LfS?_-0%B>Ujo@GY3T%imX&>&Rm4w|r$>Y^dnthV@taUa{{3-lI7~k477nQ_%xT
zH_vaQCzLbMb4pLYqJ;Z%l)iqS5-mOleh(<8%=LoFcLxZ*qY3iFegOC{3JndaoY%5T
z_+%=^nm=>|=LOFCIA5F5XT^`OzZ_-MXIMmkS+Rk~1^opw(O(!d*ssYrf%~0f1oV}U
z<AKnCNspAj=$DW=|0r&xy5bY0hi!UzX-DnG(7S(N9oSj**4DYufqS_x++8#Jo<|>)
z8-IMgw^G3Ni9P}>!??RLL^;=MXyA3zKej?I^nyL6pN9T<wW&X!@190B74`*v7XF**
z4~Eh>Ki$f|$hM4pB^XlXvrmA{3s`|;M)`c`Sz;WSBXGEYW2rJ9bLJ>~+m!I%G!pX$
zdh6U>*Y%YffA}@@>w4&r7~kbM&M|Jh-pJo_M7QxJ_N@YV;CrO~$hb^JtS#2}EnDJt
zLk<7#<guLhEkZ*aKmJegeO+k(8PYW9&0eZz-A0^}&A9mvE`k5xvUVyhev6cbcQIyT
z{6pQBxV-R9&~VFu6LFLhqB9)VbX&2|bXnKeZpP9KU)+Uwhxaf+5A4bz?Sx|%!Sj_d
zOUzcdKJ&}pYzdoTIpO@6&_7EjCI8GP&e6Qr`(&eC+l6ynJ!snt8{KnW*ahR_oB3he
zC^!D?G{1A)hJ9kh($nhM7XXJB`mk7=-hb4y)Z{<76!=hwVNuVF|KjT4Tv9jV68IkM
zKZ?EPTf{T`idHjCWxU9{kMjzb;yx(+N~!NVh?jfVuNYgnjBl2e8xKNO;8Dsek$y0I
z%QWEA=`Q%GX5iBsda&>EGI(#mIOl@=V3+U@J4Nh(eD4p$c``9q;`$6%;-zfH!+xLb
zl<}co!|q!6a}B>&3z|kl59k)~;HO*I6XF6qA3-yG2|bSYC+z=4Uvj^m#l9zWg8Nh3
zh4~1_r07$QM?*jVcPHjPne6LK|2O`v01$?L(dXwmHpl0sH2xKlx9kHauQL|kPqxth
zZsE6~=d+;WFL1f`a^F!6b8S-xdjEs-8W59Oc*Xv6!z&nrZ{c;ZJ};jw;rXx|G7<H9
zxW9Tu`@lI}+Z#P9&KY8VsKH=6={>+WEt+oP=Y|gG9Be7n6!r3$De$3Sv~mRszJ}$8
zc`^H4&@>#!!!B6w<(T5`P>6MlW!Ss1(O$eqv0F4f8UQkR58K0q?{i)vdk7W}IAIg+
z_Dsbt;Q3so5pNS0f?PM=j$jiaM#VXk>jhq%4;Z$Eapw3nYzr>vZZ^{keW_!3dH?VF
z4>|v3xd`0~O{?daA~tUEp87sZ53O|@j!&$)?Y%hD=tVyrljm@FP9}eYSJ<SrMv-j)
zxZD`@X$}1CwGw3?SW4-L{~+i0FfJT~9I^gle*2sblQDe*=Ch002XMP=ch}M;>v8Ci
zh?71P<0YQazOWnE&<{gRXZ$=)h`n9dO}TMF&;vUHjYjtT>F^QHVej|8pWrMC>?Jth
zWZe~Od(d%wHz539Xm6O>>)}5<;@r_$*uq4nUz-6tIL~$vuH|?444g-AGX06LlS>$j
ze#vs6>0I6dpCs%GI)yss`41r{+lO4P-5T|?J%;pbVw)89xL4StsE0ZW7!EX-hQ5OH
zDL?2{`CZ<OU+S!B^I?<UshF3-pPT#J#@W!D7tB3gtml*)k-NBlXipgP`5`s*_ApN7
zjrm~PV;jIX9Iu<OQN+@S&+)?Z8qVXJ`%w0Yj4`jJPZ8tG_0KdN`-sAS#_6)~pBy`5
zzQTGe&jQF88}{#m4lf2BT{2#m`paXB&|&zJL}wqE{-}t-{`1)|Qr0W>&CCz<y1w`z
z+Qb?q?~TX${}%NBLGJ(GnEihX`u`yM2jfYo9x*7#BG7rrt(EZ??g3Bm;TWTIjyu=~
zaK5~?(2txfZ=rue-oG*Z$(|^FNFMr!^9qpr+2Vb$CG<b9d&;_;a{sg6V;l?%x?=s$
zuws2`FY03)6yF#9{RNCQzcu@xW2i$y=Wk(LEJMVEbS-iOIA03)T>uY!E|LwM^`s?J
zjNM|NgUk5-2Ie##tatF76XP(;t*^eyJX4I~*cHGN-*d4xXPvbaYvQeC!1-MfU(~gv
zBc8+W)fIM#_X<9X4PTRk7^f8TKreqUqP>#F=Q(FFF21=A!-pmy4%&}-t(T^I;hUdD
zEWq<p{@ppybXMRFZ14xMu5ph}E`Dde;J-fsn%KqkiM>B=yLr5eeVw59Fk%I?-H!Dd
zjyo{7jWV8CMLYy>$Jgh2T;FZg<#KM9>1u~8Ej*vPzY#i=?L|EBpq4%dXUIgX=jXi+
zvDY-)Jg;7lIRKwGXMEbhIXD|)en-XaY3cZmYTWR5R7^AH%Uj}NS^qicb*C9`7w9yF
z_wd}%173egBq!NE;9nkwM_hFkc=ji}x5|D5zT!De&&7NNwB!FlsLd3>IlfB94c)I}
zzs3F{u6;#E8JEkO@x^cjrm5kLjgDv|9f2P?#{X|3dV=1Fo};dQg--S7P<OwN&baY^
zI-rC3jN@wU2>&PJMBWpIKN3C=K2dx_petU?rx);i*^KFI2N*B!zjOQ;-bJ<s=uo-w
zkF{odN;k*nBEAJ)`CIx|@R?@v$n8gFHfD3I8jBkcv*LH8F3Gc;99!`DTkE`4CHiAh
zqzvCG=7T@b0>10OH?Qe!z*?*qzE1;Am-Gj)yB|lY1nfLsi{?7~&VHdEDeHRZzy<z)
zAxi6ARQFN=%9on@-;WeB?1=fOINvUOJ><mw$Gr0$YA*P8=<M%55a&045XKn?BZqM_
zKE}gsFs{}h+Nm|?C0r)=Wf&*h3CoS!mUCB$pXmlpY<G!E(P6K$j8oB{7>8J9!D-7>
z?P9UnpDf>BAWj2bj@`JQ<=Qm9nc%hfEFOb#{`6kPQ}{OccL`ZxFH-DT3LZm7@3)yg
zF6X(8@TV@=5zYw7eOt)ii~qgh=Xc?Av7Vw5&Il|4eVM~+o7~QxR>&IpjI$pp{8pck
z6AFb6S@Gbt%y0Xx|F_}kBGuD_|BC@T<Nv*}2(llr{^!Ob^w|LRZ^T~VUt`^j_iU_q
zwHSQM@qQrw|8?;H>9B0YoKFqCUR<g8i+$pMTr@`;XhAFdGk;SDopWp1+4vpPH+Zdb
zF81GNBkzTmav@Xr+i<0#!~ZBzq_PfV$=}%#p9K)*If`FXv;8cG2zcUti2ND<w*^E@
zq4J-oyas@FXR~c^Y^se5`?ai$<1M#<7oDno`_q4nv=-@4kv@*}EK=1<H&|(%l~!5l
zV^+$1PY3)OymS5SY<J-G1?bmy&m$O{eK?1Q@i|y|zw@OzRJW&q>a4bBV@wri7FZ@&
zyVKpEk7a|Hu$}2|QRva$llZ?Px8d7Mor=(g1L^!l0mPM!^eEn`b#bguu&+Vgi@GQs
zI&rMH2Yr!gyk0S3{E~v*ln=dKj`!{g!n;nH@F&jT6NuLl>oj043cuidb}@7x{R{d}
z?YeC@;;zf*SCNg4c`Ds>1phDLyL={s_el7BA(4&G+a39|8!+}yD~~UODxU)Usmt?h
zN8<CaT@`DS+ee*E5+0%xv|J8vvxf!-oa_hKAM85#s=5bfjWK536+i_wg!m3I9M;^P
z<@eCb82ceJtt!g<790n;c?~s!eiCOE_S-)3?YD&)R^H!Xdq=sjccg6Z+z%M9@)$<c
zz13U;V41gPntAR_{>D+!t@bA|EYJTDt9C;dw(vXO!9@ekU58#(LqEiPunT9VdZ0gG
za!)=v%{Y1B9Jj&GV$Rq>j+Y{rxAD?xoB;uhY!hqbU*>*CJ9fs;b-4{*4@MhV+y>)E
zJMhf|ja+xnY14+ep0sn!7f*40=t%YxT{C7eeY+msqXswIL|w)qXb1ia<v1hvL7RKm
zisvEkfqA0M<<E1Q4y>F1qe;&tbp$^9=<xObA`TzEA&Leqe0iM0K5Xz;o4orkWn1sy
z{nA91?-x&JyI~`SkTcF)gg*F#DrEaUdC>n0BbAEI<2m!k|HA`*MU1%@%HYEw7wj_}
zW4Q)*w7I!InLm~x)6Mde{6prRI2!St(tmzv(s;3%>5#WYpB?mW@$SF43HyivS;i^+
zKoR`F4$QAE@;iJ^HJ-o0&(?b_-nF>*$ML=eaFF|8HPQ`8A4FP*v;t`rQvR;}F{I0p
zu0a~NKXb_i)O?9=e&^0I=Mz}3@D@Bpv-<H4n}JO!_5gr9JnkW{wH7{VH`W>_Q0Cm-
z`0fz%JG@WweaGnWJ&jEV?00i4%zN|5ho7Tvwo&VMtKa1L597nPO5ONv$CoSY<Cm;o
z1wYn8nFU!ih1)^?D;Sd(qWxKbd)xAJQ-WUPy+jU<i9MT*)4@Q-!jPUP&R;QYT2=lB
zg1%SrjPqOYeS2lhgYSnOc-NRF)=fOuA?{Lmudfhe1l~7!=2$$!*TY|4e*ObQGp-SJ
z@<!A-<Zd+jV1Hd;@rrA*W1PsF?D$`A#1|sp&+iHH+Y;yBA@<g;gukONG5o?L`RVT^
zhEG3}IKSADB)>ax{^Fj*`AhV~`Aa!FfgHR^@caCU;a4QVvoZ;u(j<6F^~Cr~JCful
z!{3(}zRZ;*-<u@AE=hh{lKh^;`KvfPft*(*p}*Xp7{0tCasFy=lKdq2SN9}_U*kxU
zUza%lUOjPsg*S2j7dbnD9KMt+|5#%9`@D(s?=MQ6{~%{4X!pzB#QA@fgx|^}@KuZ^
z0sbm~lKj5J`PE72uhtX8*Cc@#%ex8ascB1srzdg#L*69$U5WEIITGjBCduF4kr4jI
zI?e|DYFMN%l3D-8P}F+2o8{xJava3RHQCu=rF~}l;tkfj%zxc{cUbU_ArtS5BAX_^
zX#UI3$<A|Dy<=v2qi(&Qu--e&)UiY7hslmdt@p2)^f;E4n)#|lCr_gQ_hL!5mG58X
zUthFk`@@8E0jE}ez)D+0`qw2zBE7L%;%hVWms{h-<|A47KfkUWHCwh<Rqm|azRk7$
z@tv;i54kpOe|%f@V>wy0V(r>BYZtlJZ`)M4t$IsMbv$gIFW<GZzOKeKyEcpQ@>R3t
zp?OtXDr>jSd#vW+tu@<rn%VTwj+z?RV|A5PHD<=L9W`ih+rzG^?OV5^-Fv>c)_1q7
zu5!oDTBc)?L}(Th6)pJu9Sgs3=YMm1d?m}4uUKiJm5E_K7-ove2)`rYloO;PF|5RV
z5&10tCtGOp$~9{%O6PrP&D!Ow%hri?kjakBBa8>-9h{E5COd{)WMA!DSHZQ0OHohf
zx5<ttEIIE2+=?&yR<HL}m_wZa9){c1XTpcfeshGZcKP%v<7qJa(ShJeyz8Y_8o2yD
zR!_I`JIr*KsXq?=4fDNmgPA_bNgSO|SadXGoB6Wc2GJfuPYb>wV3q4419L3vz1>QW
znW^|hgXuqI!MUw+iyw(sWHVgAD%Uy1W#>Q0x9HNc&G+C2D}NK&O8orH7vvc>pUl6L
z9nG64bKQ!&%a*NKz2=@+(PYO>9sDxc5mHGJq=>S~jx5ohcoF5zI%TX~zQSKonj<qs
z{-oplI@zJOQQGqLl7PvM308h{JEg5I6G|lDCRqB^{01p^aaD0mcHAf!2Y+u+Mp4OH
z-#w<`$I7$%_z~s!4;|~iWJXW?K2bCY{<<lB`PwxW0mv^h;hV!Wei$A2>NfMAveR|T
zR+p`~r=skhiWO^D`j*A1Bk+!t-&1)s(Z3e3^VU`PD%P)KEZn}-@29Q)kb3fTsaf8j
zbBZgE|4eo~y~#}V4(t7tnI_W<X$K7f3r^=0m&IQUPna_&JD%Z$Q?HrE@CwO5epbDP
zQp@m%EVzJ`>YU=T`s0}+`~rLyomb#LW|qg=v77Htm0I<B%v9R{GkuhP?|P{a!}1$x
zZ!H_ldM#~c+R6#&Xq9pn_>r~5%zrX$rm`PeCBHi7<Fejmxs=;Te<0-}?W;kz<fJkZ
z$dA{9__Fwue0|+cnL?BNYgb5ZXLzX}lE1I_n0Tb$+HJS+7FnszDK3lN-ClkfmVZp2
zEII7nWR{PV|JPkI-z3*)GvAx~%v93-4L?m-=lkM{dF$4!UmLT5VY<K3ZNlrinSR5P
zvz}+ZOTCEYTl~b{1Bv0J97fic^(1{mQL@cjz&Q9~zhv=anD5_!J}qBUu|^cf$y?I>
ztVO5nSBYP?E6Zhn$ab-LpJ|F@UfJ+~hW3lhmSlT+9i`=#l~|c5*Do)B27YeXV@`HB
zrgQmZ$FpAeF~84p#aGsQHbAx*TIPF1yZEAJJoqkKR&L^(&}^p9w9&X_zKUg~{2C_@
zX+M(xXWK3KQ)Vjjo7>EHSuW-BY?lRR>BGo!Des13CY;oFDbHPJX!6<>>nhf)jaRiR
z^-SWC`XSqw`Fg;_KQccy-b?+n=+v$LPYSP__$2?5Ui}D-t0-N&M$V_C9Y1@<gpb)_
zz<ihTka{KK21&OpA4x}p)eo}$Z(4RO<tXb*y1wb6^n2C}k8_f)Sh-4{D_OIqV%~}k
z%P?A(t+{7jsqdcUt5>Ww=^Qz(eG}s*!UD@>p+CY5C$GtlrY^GQ<*h8cXL)|U%#GJ8
zX;(3Ms0=mPA^G{1)gRw-oB7|`V5Kcq+GVD(`WFAvPf7lpC0?svV{(@MxX!|N#!TBB
zW-8_Kts^wvWW&rK$!D93#(h2(Kn&}p><5`jd~E^9W$lVDuJEnCTrMNz*MR<7^F>qo
zESCvqE&6nPrNocon(UZt$)ycn!>!mb+#fete1FqU<IVVsD@=Awvhtt63T4UK6~1!+
z8Vo-sHqp*p6RzzIvK1{J&cD%V<~O@3-EVmhhM$;j!FSW-6@H(8?Yy$Pee>3p-M_-j
z&lI>PJB)0auxkC?{&{BbWFemHFol5l#!uIoaZ*eHEf@=rZl*E4k#WdAD?ebRI;XhY
z{0H%6hnYTS>C?zK<e46`T=tXHm*IA}{8Qp~OJ7FTf6i)O_WN@<9tgi}jg-TB@?1M(
z$NWh2|L}aL!4LVz0$s$pJ59Lfj?jcyJZU;{QD55gw;2rhVs?>dzDv83>9<{0zGWBE
zUL?JZUK+oq96{?^+xE>2DlYWX8#KXJf{EUW<y?r|4By7>J9gGoGr(lWx4STotXXfV
z)G(h?p3l2XIO)HhFE!s~yU)O{RNUtm+QaxHU(W|jxaWnu@NDt*{4p!v!XxGQe4jPm
zpE1iN{%3Wp;4}R*E%Lb-?Tj3MpO2E_6=i1mbx|{Y@(kIQ37=@bkMsvGI7qoYuAZcS
zx7~z)!J<>f`BFb$u=shQ%Y>8qB<bE=q$m$0!s|8RU$p8=_^)@99rKgB%kJ^5j#Z13
z=ZgWeUTpl+&G%>P%vAbG-NGx!A2~k9>e)?r+3t&*Xq=etaW>kUlx?Oj!f(wNdFH#6
z%ZsPX_h-CjD&uU4@BioSZNTfit}@Xh=g&DULO?q=Fmq=<I{{0Pk1feb$s~?^WLu6j
zm2Ew;-5BaTwJaT5BFB<?B*iuf&*(xQ8YoahN^XXR)=hs%CT($lpoSJup-|HwYM5Sd
zI|U54a6M4KFfe3>&h)<T`q_Jb-#N#2(%w7wxhIa!`SxCW?X}lld+oK>{`sEFpudK9
zjgCnxqCB`??|cmMevjgLa>l;<^xNtF(M$U5?RoNyKKr<LylwrbE`|4b!ppfIUR$I2
z#kjzm#!H>S&X*X8!Z{y&zH|8q?J@qlJUqFo<^0?2E2qQpJZbV8@MK!f`5gQ>)1OYS
z>xbez8v5g4>4w2kGe295o2Sl}%Hu;5`-VdswO()MQ>*&ydhg#otIv-AXHG&-!c$fS
z&^#_5!|vN1dv}kIj-@q3x$yQk@o`-1`I#&FUF3`N)4z*+eQTeVbH03|`0e9g<)^dD
z>+x@|&-wG#k&c_UjSa)|QhJ=PZ?$pc_)eeIe8=;&$&ruiudUU5PxtZQ@Lu1KLElY?
zudMJdH@uHNURpDl=)sqtG<*k3H}4o88{5~b&raXdr}f$KKGB7F0&oJB=%uGu^KegJ
zD&0J^gC?oryUcI@bap{}Z@hiKdpuEIJkIvBeWhE(uW?gKibgoagn4(hbj$F;;T;Fk
z@FM7XrSbJ=XG%A23xTRAZ;zT>1bH&Pdb+pw@hkAVLKqBsafCI4{!67>FprMzc|Z&=
zB`4vB_Y)3Q3jEv7*!KndwsHQmSM=HIdwVzPJFt6uu-{iS|Lvw9T@K!UP}5z1X@Ih`
z%i-R>P{8{v;<clDhIb7QNB0)=hPa=Eol*XL>BfN;{PK4Ax6}J$*x4{qWnKKhuDq<@
zZ-1e5E9!go;GUt~suMKb<;wkV$8#nty^NrP%2Wd56Z^~U54QtDxpDaI(hv9V7}Y{j
z?lx&9{FzIoo3>nso$q?u@jeN^de_j{KBYb3lho1Kb><xWhhXSOI^S^{0T7?Oq~FD7
z$N%Pq(#>N~mmY5~+A)v9bk#AYcslPeeBGtBJNHIS!c^AxO0)mpf$LEZB=-Neeo6D+
zak%s{wexomJutdMN(q0vE&r*~%MR>$^`5;C?lA+a^T6D6?da?rRz6P5H>RaTXV>W~
z*lF=#Yj0EVN&g#q(DlZ?(oJJy6*IjepWc2>>vg;DCrobq+4=PNNyNE>C6x3-rsdzU
z3c1<4Z)ER-n0;E<)owqy-SbmITC~@H68;TKqtPh7O>)_eV*KTqQfbX5ivmkKSG4{g
zF?_B!-f&*igI?*f=d=3l^N-UN?Bc5CJ3hCM-*8ydpPA8bm#ZH!IScmks^&Z2ei;6v
z_$@+n<a<-ShR5x<fY18F@jZPOdVgeSqNw+uc`9G;$~~~Nt4!ku@vjm6e&!tF^6)Qq
z7U*$(a{9EwxqspHK63?j>E3NSHQ)z->XO2}6SoGW<K6X&`$HaoaC~kbIo>B8XFP4p
zA}gI;ueitX9xmN*aIa60on7Dj2}?g&`X*2hi*}EBP@PyOY#tx)gkHFV;S&}^`<<?L
zUeITklOP{`n(lED&wrQ08-Ly3a=X{t@$N3_1NDrENk6e(Z-1z-n-Cb6&+50^55caq
z^#Qjli+b_h_mpnfyUQ0LV?AzHdwq^q=@hDN2-7|4zvZyj|K{$}O%ow7f%)}{roVf<
zbYu5{O+8XF;p4l{TE5BWyASKL^W#0;r5n1vSc`JbUzdmXJZ|N!-uD>aU5<Xv`1Kx>
z53grsyma&M!SUf8Zr`jZo*y6A@0G*$J)+-U?%%?mh@tn$zm*k(xB7gZ_i{f6J7)jH
z0h>yx2lH|9H=i%vuxC^%2cn4A`=i*8KX<xx%N=`yp~1@WNy_!<bCaKzX}aU{Z<kBg
zZ_eK$zg>=l-BK}phwa<y4f1+Y)4f034)AB!i(XF?y~a<cv-sVPZl~Y%rGI<9{{3^$
zDt%9`>UUH9CO4s88_%JAYqi|7m-XAnk@GQ>JFEHr>~y<){JW<hSFau&e{i3|x!wtK
zby(9~uAE;#dMTg&T&B-~z6E`DJza!%z3u(#{^4`u1w7sQ{M?FuJ07=F!#dkx&G&Zt
zx3}{-*k$6U5-gEd?=Nq!<M;MDojxu-y$I*?t^1?i&(A$;bgl3kpFaNS?0Rxlzn!1n
zKCiF1PUmo5ueaaZ_wUbkbQ~f|`NZ+)@J{zLGX&`D@^sg?Zb!L)Ui3r%{gqOAbocJz
zoue>5w`naYAD>^Vc%QfadcLa9PTyP4mDZXcpEy2|&gV^D9RB$;9XAEHH|ejU-}?@$
z=dH$9_iw$u?oWBTx7XoAeXtj{kwB82)b}RC@A!gzTYJNJ^Z4}lYk8js9shg#V7Jqa
zw{cdq+uu7=Dvu298>#Fc+CCN>pU$p-^<~BPUf3P9ql$j^dsj6-)N={?e8@e3$lv#6
z3g`0W@bAO=;+~;?E0Dmiw1Gcey7AS+-(wO0_{)UzPiNQv20n^aAxROR$JdH{dEeR6
zO~VsI!C$&{g#{7M9uWlgr?cyQFKD{c{coQtt=)$WBPbiJ{IuVE{JFpA<Hx^U?>Ik#
z9b@&l9J_w-df#7y9vN$n>-)HO|JvsppGR?F13sNyPaL*y(dYOr?Tq^^oG!QHi};>f
z(ejS({g2yxeooVidhh+GOKZG$Q~o#}Z+~bX>`;+2qD#iX`wRSk68`bf*w|h%V-h$Y
zZ;sdfCr|f!e*QMB#}5se!3?`(MJl`^f5|8M17SfN{y?2Mon1fQS6b7Xq`SPl{i5dk
zIQ9CS|32<R{U<S=h9+ziM&ciSlj8Yt#549EaK|vpvE%c3E#P|!ai_i5B6LtWLM)_L
z{Xx)e{qruYmq>iW@|}LS<K2FDyttAP@o+95Dn5rly`azDUN8UV$2I*8-TGaGJG-js
zMSlFm3#A*kw20rFl^%(4iEBLvx-XSFwy-MsB>cUB37uW<Unt!IKgt7}3WoGod{y&5
zfH+17M<D%MpR)9<RG!$od)L0oc2^pLZ>^VuJ{#S!-CVrRuI^80xgWkz`lhhbD3OYn
z4WFE<Eyxzm+X=%@XV*_&MqH>66=1sa-SwEu^-ozjZ}$fd!ru?NE0+7fs^a(layk0I
zB~5p~+~JD-^EQs-3Ss$)c%NI*XSY9`j;B{jH|}Vm*FSih!u$Ae_z!ktJ^3}mdzhQz
z_xPi?+x4QC`(dmP@7!x{Ht71cr?vbC4`QKkZ1e$my@FByM7rO%qHxd5=(p43>2B8+
z>wEsT(wg9AqrPuGt>xeHY{$*fn~n8+@T}&qoH4jn{VvY`KlnoF<+AQy!N%0#i5^0w
zd^ppk&pv<nyzuje|3il@e}&)poaUd-E}s`XuHgOe^O8UR&;^BW+Bah3_{mkx_ivxy
zT;IDL;_2@{ukgV>uIjVrzxkp*yMN;S`Q~crCW)sqJCU<6pY>_F&r>cRPg_5}Gt+#>
zcWQ)k<#TlGms5xHaBn{hd3Ey(_5Lp}*Zg;1EZuP6c3+T)<-Oe>I<0WtFV0V&4~paB
zLx?+XO~$*A>mr`w`1^21I>dNGg^`XA8$Z1MU>|lFUFU6nzM#*}m-m2<(5wWX+ucQa
zuGOw*!Kb0^&Gb24Z*X~7AszUv<)6+jA7@V2hZjJXqe<xc@QT8_Jil{6pWC+A>I-;R
zv5yVvfTdFYHPL1IDcFCa^E$geT;Sg?pg;DQ^^xNHg+9ga_5Q+m>6XEl60b1+__*@<
z-sRr)wD-#|9M*aRKhD|nQ~K@t!u7sC`*#uF`_JUd7xRB{M)QBs#<A;9AKyN%KVtm!
zbRWn5{EXpoJ@G#-TfJxX+xhsBk<!h3h99tn+9>~CkGHEh-cDm4_tBg7lf%E`V4<F~
z7@x^L7$2X{WeVqU5~u6?VQ2I+OFoI6(ZPhyu8&+Qtz}r1Hm$;Fy5n^^yd5E~zN&Dc
z-;E#6XO{!d_i^TNj7JY^`5+J04<WvBp85E!<saDphwXcX-}v<L5A0y8_vfqn{N!rk
z`;0!joQ61jRnuKh`nSi4oPX!WJ36`vDxcV|Vf@KV*xA)CF7TFnO63h9Fc9&SrCoTo
zemM6y^pi!m*{*LsMA*)*b7x97^lfzsiS>JboV%oOPVd_;mpV2wNj?$Y{R`LIZb!WB
z1p>x(n_nt*+|=vgd!)M@6ypl-e_YGG)%xL=X7u@&g;^2b<2XM25VPbH@j3sb`Kaej
zRRUmt+K7I8dw%&`2kiUt;h{o2*y;Hw!BOs`<N0zQJy|O6fceaAoBIT(=4bEH@3+Cv
zkac-JChdG*rq5pg`?^Xu>}U}$aDUI`-Qhoq^BV_Sz<>0D;%$OoE#0tr&z;P~C-TSp
z=VO-c_&>I`bmPGmcI(HCZ$<ncgP*wBW)<QOa<^9N`xy4GAYLK0Nd1@Xr`7wu%cYyP
zj}7g4wLQB$c>k3$W;DkiK8Ag3zDtSu|Lie^`;~F}#Xix+_PTs}yIt=-->v0>p2+ms
z<^NaCSiaj4XD$Dtem{Zz1UvUeiDoM4dBuu;|H=id>pJ_9?(Hk`{Z})UmkNs|a87Sg
zum9>e`gMmRj(FX_Xu`h${D|{NHv)f;wfk33mu^0=#|LD@<MUJT+wCKtH(hRi4ePAI
z`~m)=9GpE{dilQLp@|(MYT!#V3Adu{J=LWt|8xGrzwRpCJTg24*F)*?etN&qh5fW^
zHQoJpw>vy;>VAIEFIN=a<>x2v(PzgO_?DG!<as>irv3hF2Je1~!#}rB>KIU9fe(CM
zqvd~Xr1bIw*n=pZUuA5ag2I0nH?Xto*KodU*G@SdHDQ$sp0yXO{NsqP?cUK}m4fi!
zpR)8b@T-F>8RevC7x{d?DuNcz0XbaY&qc-iBh}K4F_Pf&fIQ>-YG3Jwk>P_vP0F9u
z6)oQm?<)ND%{#1EDvvfFuENe4(7^_v*q*c2Z^iMpihWTBx9=Jo9oKqYK0aR6=Z~M(
zZ*RXpf85&X{rBsojx{^h6PBM?ug^C@?+Hwt_uYT~*%dA4^Wvj@`ur<r^!tg!_WcyU
z@v(94c8uFi0lu(rw<w>#4n1>V&<(;!@9FbIj{V8j&!K%Qr5nbFTu>ssj~{QJ&&$R6
z<kzv^VE2K|yZ4&BI-k9ru6KUJ`oZ;+^F8E0uJn1n)A!ToppRSlpDsr}t{uPQ{q+lq
zujmK;+-;?ffG+9JBEAn<dG{CE;d}R)(v2f~$BcoIf9?EHpU2$ac6xoBdHmYj{~M6w
z(LFfmP_TDAzVw#0+D?c6#9Hj*7=6GFIz)Qh?*4@JzxR*#Z)r&Jgy-+o=TDrs^c8;N
za~uC8>kYT)vyZ<}zORsO&(2Suuf6@hNpRv_ksqZ}#_zc9_v9IUepKke?=E{jtKUUC
z{WoDhAK2YI-+H~j<>iGRz)@8^p8rlhqW<5MaS6Y|$K7R3cmKfo{#(`34HGT=YnN|t
zr^~lLhw=-hH9KupiS_z8^76m6qV;<D;yC=R%Qz=Iu$e&kG?)M6VNLhATIi>3n*Pbt
z`t5NFujiA`YP!?;To=ZpyB|qC-X7O84*xS3aemX+L5WH}k-p;m?DMC~r|ZAx*Ro(|
zm(%C<701gbu?`V^*I3V+ti1P|<8?aEW4#d8*61!9XW!hd^_@RMf2&!ax}3Ow>Uf^3
z!XIzNpTml;sDIC2=(y3XxwPMWe(`zai7Q(Et$q64&cAy4w$jUS9&qm%j-Ix{`?R&|
zjpr3lQ~Y#X)1Chg=lu40!SzWP_cl&kk9mCLYnC3$9aj9_4yVV<IUj!;enBM!IAcG$
z-gE!Z*Y*85(7VEV@Ueb>!%04Lc73Y&d{EQ9oUc<jy`Ngq{2yP{Z>R55k9XYk;0Siv
zGdURt-fy3}tm)1-FZb!bj+=%a7_t)rv0Yxy`}<MrALrAjjsBuP{i%x`H|`&4UWage
zpI%iuise32!o20~1?bN#e*Bqk+$+$+U;WIC;wkE#&%j^Ye6U&1y8l`9Yu+$k>TqcC
zt@Fne?`IyTUF|EckuRSyJ~Y(}yI`~Qot6)F^;&)Y#64)ojvai!C*pIt4*Kt<&U=~S
zZKCU9>6U|Iv^zskI9LA@hqYXYn^o=ktbTvi`25+GLi#y<cD{yn>{U&7`TFcCu1nm=
zG=5^cU7kN%z*CI(Jb$>fX2(^^yS{b5wOIalN~Ifcs7k9(>i0PKbD7c==6UNcA1AJ#
zy*)pEo35`{1Y>NE*YEnr;or9a{f~1KN<gz;`#a;M@~*K1`$l#Q?HJL)3sCsi&njI{
zoGEqu8!as9VIIDq`93fDcbHF~vi!^X?d|dTyZG$%{v_mndn<a)t~z-c>*NQp?j8@J
z3SH$stw;Uv&aU5C$oY{~=CWPi@>Tu*oztbY@R!Fc!y%|B`D@>0`DbCr@7^)dw@#nC
zr!D<F?5Is13Xc5u_Wbl|g>$>k``P2vp`W`It~hV}l<`&d9bjA@&MN#HtNQKy`oLMl
zZ-#f^5Uq7FvlBU6J)_TV&ll&F&mDx`yS-ny$8te$bZNQIoy7WVtNgO&KXVX%XbU^d
z{m`O5_}m%n$3FOPaEMsTyF7jF1$}n;2+zikq91ypk9uX_c)ar^kI(hm=T2+-^Tu!Q
zrwb;Z=k441`Pl{RvufcdUszQ<UjBEzU#z^->v(<_`!2>>wA1S?+Lxi+LPy7atV%vn
zzI^`j`Ox8gK0I@n1v<O@J`>OXUCL_<d+j5u3SYFpK5(IQ)7~BXO`2l;pPNzmc5?Kg
zmC`Ny_eM{P(5W1He}sAFR?UAd)9)}YZnNhRe&e%&e{lZ8`Z1L6%cqC-zEHX;xZlY*
zaQoEz?>8RT@?P%uRuM<s-NJ8oI;sYLMZeu2`n?PK+|D2J`n;b1a1!Ss2W65)!N}ip
z1v&gFoC_9Lgy<7Ex66FLN5Bia{J{8i%<q$mFYwX!8-C)vrLXWCpJG2`OhlaVuzq{J
zpSV)GW&7~{2Z!C{Vs=9Bb1VAn{r8)EM822*(0J+Q2S@jh6!n4YPnR2iK7Urr7v<%L
ztY6&kb^G?YtN`Do&qX-*r=70<aJjVRPLVx@cRl6$$?1B7@y*je->vXI9|k(DUY{R}
z{;Svfi}2Sf!EuiA;d12lgy#!dpO=5~EbIfU>*x#>%e(ylg!QY#e;$7J?iTtx;J>W+
zy}e$)_h(2qI^5q4?KinD%FX9*E8Tb?IOvg1$N!T3^TT<5eEuB9MT<Cq%VkmjfAk9U
zcH;MTt}4Dyj$@wla6$|DK35pOpTAtXG2T%Z+xPhw6rZ=#*F~L=E+1}JK5^LKjlT}(
z^G~pw?@_oXGW$Mj-y{0%c1FPK@tgCSU$iqnxq^LzDIfk`;m%#aIbL`F6F#_oQ=Cu!
zkFy;&_$jJXFZ}jl#rJf#e!E`t`Aypu&o{fh?%!T6*fUoY&s+QS+vWRHBc+>qTlmdI
z|Jdch)7_5_<9Ds%b-m(reCnX4J00#HH~Gz0-t~yn_xl<5eaiWCBC=1E7avE(IFR$p
z+w1b=cz^o}?-d%J7#57lx`aLdKF(#b-pcj^yLN@M&YfLrtv`PGO2<vOm19(`%1BSq
z4pIKZe){xDR?yj1^sj$^rDM&gAKyyk#^u2Ky@=2G?E1^w>+SsX;f|ZO4?oZpKXAOE
z{6(ef_b<kH&`vuAo64obJHK6T73=-wB(Ah~V)OxFYtk;q<KwP~&-JUzjko6ya37fL
z<M%6Z1aY*>yX^VBXG=Fc*di|R2UP+@dnw?>I@IQ|JEe5mUXLdf;}Xxn4|}jh{NWE4
z+Te$uyg9fak>1jc3jYVN4-Y>0^~V7|cUJNFdeCRj>GQSX0O<ZT2djkT2Y%o^`u*|q
zSQnG{gg*QD{CHKLy`PHy$7kX992DPB;lAaNeqX$;v}SB0fAbT^jmyJD>A=n|=X)_;
z@E+KQyN3>H@uYlPKhpGy(^=Hx7Y~-oIAT1pzcR6ZD1>0(-wTbMT^DnH@`KhQ@J9p!
z`KNKNgnqIhF|t6{+LPM8i)Y~<4*O2~&aOMHeHYJTz17|1q#aJD-{azTUEB7VKJszo
z<MF31X#J0#H=3LeCLeFCYQD?=7qF8^x?I2$`LuFhz`pR2+jrT=aDs02hq(t+@qM8R
zc@a6*XP1{RoY7}*pU=<!{DpDN5A<AwA3WCV2Y)eBIM?Ul+1mSs%XvIs#A|-W9=x_6
z{DnR(SM-BdS2Vq72dyG*G;;fZl%gCf9{`&v{Kvad@AmffUKmlh(2m3QZ0-1>Jv%>s
ztAu+E!iB4G+<19kpYr+8pS}DS5my*%(JxL%=!YWz5TCqv&)(c^5$U+~^<*EvK2LeS
z`@Ha8HV=Gqdj2Eg#(lw1itX`v%>9@Ef3S4(u2%l1^_%m-$BD0V7X6R^IHPp<czM36
z&(62d|0_(#$M8R6<(y9rAME_62n_$v#=Ykk_05-{|2A(REI+Z`PXD7;Uy<&j-{kbW
zJ^Z1=iZ85pt?(J20)L)cVPaetb2=T5>km(N{(tEV?AjLVRK;=e!&h*hUAXWew$IxY
z+G+gy(nY1GSl>t1Vtup1JbogcFTJ48AGuAxoxV?CzTY{}Jb!=wyuvxZoUfssChrbc
zq~lAMc#g_<K1DjbJ&sT9GSszJ>vKAtzCXnMAA!82J>DN4?+WmTOE-`2-SKL@#5UIZ
zhi4T3AD+~2w{tyS(ZOWkcYDR<vk33?dcL>E@r3pA!-_Aougjj#>bH+q$G<XS=@<3;
zm&QBR`016jAKm_RKgHWo)FU28daKE?*XQMm_5I<q9cwmqvu=JO-$J{3G~NBm;yn0A
zh@0-fZR<gV4Ucpy@O}DOtjBR9nWf*lqWHW$uK#r2jds7c%jpm8F+Tm#NXJbGweM9I
zAkzKT^NQcc%^zL1=L`Dn^76-+cfU7W6xi8y+vhd^{g+|aKG-}i{$N4#T}~X&2Qlt8
zKgc|Ol6h^7KL0V!9qB%)U@Qro^WllZ3K#tDsy(08Z(pza;7lR?oIYR6PW|JHupd*q
z^5t6YS5BAKJa`qm@)E(&9&dNiuDrCC=M{M)j>7dAeV=_cT_<_4%3R|4mdEw`Q!}NP
zj}Pq{+q)~Z0Ac@)YyPDXvHz-kV!1o-(eFz$*cY)$5+&XF=j$Ubmwx|?_s=_Uzsg-+
z4ETcGVSdD=)7a-IcAD1X`EH+md<F5u7IAmCn_SMq^999IwC^uGOMj)kedGRt<8wR1
z^{YR7yS~^3x?0$KZhyIc^!d%pT{;Up@xf+0(c|&$%Kb^HbjyQRvCmu|UOJ=g4|c&*
z`t10N^WWz#qa7{QN8Fxs`@!v2Z^v7)&+J~JmQNi2Z(7TQ&aSf~`tAC~<;C?#(Y|`V
z5BHt6n6F*`JeMgxum3kr;+~4#n<s{MYr5n2dDHvRzdygCaBere$Hs%N8+bpz;k?3y
z`D3j<KYLlf+rnjeIOm&}^Jl037vXP)?OWiN(_gd)oqqpzx}6Sx{>7PV&}Z!^&hwvq
z3j2AsvMfK54wplx_s5?t-MAa~lsVihjURu4`DbT52&CBwo?qxwyiR}MhoyUb(c9yE
za(l<?|C7VGk0H6==Qfk;AH7m~8TP5{7>UM*w4=OYq{vri*H4d^Zc&i@JaEh71nBJg
zlU2;a>%C0mgU1hjz7KNIt>ymIzFp4WSk-iwbGNU<d@gmweY6hm?flbA(CecU!w(3V
zxZmia)$>Bf8k=m95b5*z_HAbr&iU;0_;_%7JpIwb3h(K@pC{y>&F6dnIGrD@cHB7Z
z*V?t9C*V1s$J5TP@P7aFs=|9cUpkL_or2)u9H=Oc&aVISar&z-J^u8^m$e?>7wz$<
zVmznaK9oPcf_c449Q@!u0>k%Z*drcwk#sRwuwQ?q^oj>3a6bihtvyiL{yq4CEe{jl
z<K=z)e{Dwbxx6_azKpo?$iDH32l|6CA@z2@Lg9Y|_3mpiKNr^(FCY%c`PS?8`L^^m
z#q$O5_25<JnWlMiRm-`2__}(ayNY$U7V9iu9@lbDT6u?m0{gr74XU-8%K4+FFI+!6
z{FhfsHw;Wvi431OE}S0!cD?W8!N-ZmtNhvJ(DDE2Z5?aAw}oEtaqs%t{Su$A9FMQh
z6#eQCp6OV#uLa&~>6;Ip)pq*$dZV@5$MLoFjq}ml>+4s=bf>@Q?>ax7KYxhx8CaE2
zbp`(4V)T9aLdPxe4|XJ%GUWQl^_I88`Qz<q+PB%Q?S96_htuch;KF{)RfQ|ASNs|5
zCygiN^}mn1Ck|`5c7A~Ci{BkFIBVzi>WjCJKrd8TmLKQ~o4@`HadaKmRmssmIOigB
za%b0{ohjXPr*C6O<@+)rJG;JQeDQwyy|tR|{qtuRI6mC4YCk@_{I$lzA7MXc?9_<Q
z{YjU9um8`Xx75CTX?*|kZQ7nM8oymnUt%)a@BUFcJ^kkk#$Vm|C8bzy!zZ--pPxp2
zUJrK&K9`3-zo7Xpm)@TL3;X{D!o|n2{nz53k2n7g_^|#u5L9}^R~(NkCU;(suRnRZ
z<GXyDx3|g$*az+X3V(KX{rM{1{%WawF1Gi{Rc6Mx=WkR?HwN)b;JqDxQdM}Tt0;e$
z`>@Y>Vy|sjjP-f@n#Q@e^RnU%^633x<HqZMZbjkTUJQERjHWl?@6&Xr*Y!wSJm(ZX
z@b@zMtI9NfTC}HI(|!JS{Qm5C{uAQEoX)pM-=lw)wA_C}oIbFt75<9~7wk}LPvDdB
z?ON@*7GFFbe=R(rJ*%Y~wgv?k`Qqc(``hi{6*dFy^SF6vkBxVO>ku%&dH;s`UNHVu
z70-sJ_4~pLxOck6ejAq;|MvA9mjnOybg$>95&w=azKiX8@{HE!{aYM|e}VV_`&Y*{
z`u7fn|BG%*uj=!LF-u20ESh(nUEgK#u)i=l={NZA`l`V%D7^1y{jN7y`s0@F@MbUn
z1?G{F(Y+I@YJlJ5<}Yx+7t;kCeEzOOh6now5l0U2-}xm=zpUv2eyyheCHC9z-+n-o
zf#*9vZ0Xn+w12x>%1Hk)OYh@*WUN}kPg^?TPvfsi(zjYV{J(uWC(Qco?ArK(rJvOF
zDj$i*?BTyW4S#i?k&pC^@6!Cgq#wI4;@^0|(pSlcop)FHNchL}`!6qQy7O)0xTRx1
z2H@|i@{#a1?!U5D(;dF|?=}A`nWSqs0>1Y%mVS?>2l%HfeO%J}s(d8;f_{HxM$-fQ
zMoWhsJP{VK0ncQV`^r;HugVjj@3emW3f3PcLSPc<XAK_vODDX$2ygxMl}ktujt$Ze
z8~h7Qukrz(&aR5l|5sf|->y_jdR_DX3hQVS+pB!Q2k;~M{Z}|Ae5|%qIez41<;dh>
zO|qG9<L0ksN}bF<TAy5;sVvTZzd#`Wl9k8%M`ONYK>o)p|5?qSd!#XmH>-y7n{KrH
z^J#u8f5#Qezf$U&om;9k<|gZSG3!#LHunf~^wZgOyYcU@Z%g2&YxN@BdZXvBs|noX
z^mGw!-Dilov+J*C5;!)nP;d5CgF9XNXQ-~WRI6wc!;4@w|Bf>TcdqoxS_2Gj1%~==
zKWuQ9OSjF=P2nB0Z9oYI_<v#Y^fz6lZ=0)~Xo*$e4k`TKR7>B^X3R|<uT8gsCj38t
z+TdqO-zM<VZ@ETE{r~(fgL}MGJ~6vs&0-oqIQL_G{2RPCNf|R;JF<LCvzh;8h5MTe
zrB{UhZPeJq0<M6aUH|Jn26v^jR`Hy4;YJ4N6~NA}E4WA7@~e_$>EE%HKak(&`So1+
z?=U*AjEDTH6qP@nUEg7P?aG4ZpU9WDad+i($j_Dk_OB2T>ObrGQ~C1KmVY7S=gWV>
z@?R*u5-&VP6k}*-1s7fnSN89%4DH<M`%}NYu5f>Q8}8Rj;h2p2zdh6Mzpa+O^~n7E
z((%P(m8qH9)Wh}KBQ+_j`Tx@7>Te<c4mbD6^1}4wlIaG8`*xdu{`Pc)L+9nNvEG0A
zF01!k>6;y&NW#<tGwcJn!~EIV^|u#G-{f$$Mq|Dq5Xd(@|97Q`=fq@V4liOB2>k<j
zF}eCX>_c%pu`1+$n2?=ae^)KNY~~SYl)353RO9uA1NkeKk9~c}=gXh-`Qw(qQYs_A
zQ3D%8ap3(|XDt7W<j+hlPR&eeBangoCCguxd<?NdzUk$^yCnGw%f<YEq2>ScNXMG_
z+xeTHXdk`F`sD+wn(p?m+h4zaTGLM*)^E4J9KL8z{pYhCYi3?TJs-IA;_CT(#CxV+
zLOrX-uj_5k-yiO{Wdg68!JCpupnW3${QeH-+nGLs#PwOXPyhaO$E}KI)PwT^ck7D6
zpE<1G0scJhx7oY%do&^t>pOcz;ofU{q-bydL#cGrAPW*K>E~j(5C^-caQ|>mY3=sm
zk)hYX#+0J+C)VqJthdwY{D*TLYy9o3X?>4d`D?|=R?ZL*@27rNzdf$x-ySFP`it`R
zUk>s<A3sYL>2*KmjYJFlZ?S$4{);`kKj!g+C(kIn`wKr~{0`;TYW}mA_1ozyo@;Ra
z{FgHwH@tSkLj=Yr()YMMd;9&{+wI>0&xMYgU&{mKf-2%UcUbZMqsfEA|Ks_Nwc~sD
z?H}K}ClTCO&d0s;#n*S7j<<9x-nXpkxAVc_0zXXNy_|nL{r=r9-RZ?^{BCKw7CPaV
zmsfu?jxWdWc>Zyv<JQ;O#%||&E4~-Yy#RZC*XXcapwY~yvm?p}r=xsOpB<0KtHZrM
zr!~Jgu3vbnR7Sj&H`yN0cS$Im>j9TTZ_f*>@Dl@Uq^lUe`>*g@aC?t!HH~oI&qexg
zeIZZ3%cHlaNcVqz9R4KUCZ)>ZI`Ci4<9ELOY*#+Lsh-O?*Cbox?<Jspu3caGS%OBn
z@O>CX{QqsdwDvVa6Qk*E?WugU<5zhlkKg&<j$i-n+0sq8KGj~}aUJyAIC6acU8Mh?
z*7837J=jQ;9>l#4{A=^{x5Z!W!25TG_Z8<I@4tU4$i2(yKb_%yX0aq|OZn<{gX{5j
z^QPw)_543wz<Mj*gR8H7Yi{p9nY=kYU#*sIxg!=(auR*gG#(1_<L&*yr?eeTS3ACa
z^<?Rm(LFoH4(uGZy0n~+YnQ99nqF`^|2yu(w{kmU!Pvh4eo^tf+4}FtteyV-#9_@3
z>mk+-=eMt?`F!T(Jl*XFe|9*p?<cIj=L~Pq`)jq{Cs+0RQIlWCU$n1$-8;npO^%#S
z|Nb9DhkgqDxm+sidMuq7$&~zCg|7Jg10$uiyRlt9g%bHI!2NgF(FgVvA;IrF+$$Ax
z=TF;r*AL=-dV5B943F;dcQ-R9_LIwt>u<Mb{QYL0|3h6`&hvlhf<A}*EBSoC58mg!
zuRW{z_WW&X10(J_qUqkBj?epH<(%gK;CcOa{yu#V)|vgd653<u`TzHEg5micE2VGM
zS3&DKc%|?jYF(G^?0Wrah5y>g(knN$T|oDJWq?1a@Q+?7eXHIJk6U71eSr4@gw=M|
z@AzN!)J*MUc|%sO!+*+_=Ci3rnehgVGcgX7iMq`+0g)QbS07*UU2SGDO;G3~Lrqx$
zglXlYNAEfMulxG?V&-CP$|53yH#?LqPCio0CJ}_mjyC3xXA3i@7HXUD$>!#lG9=gQ
zr?Q9V=1<I(2ijngsv=<-;rg=PSgGdK=Z{s6)cPg#R=zizc?6NJ<CWU+*`*8*6?6Zx
z`(ob1wNu+9&s@twUY2EYjLT68xEw$uK65uwW`hGrUEn{zV=9Ve>=k_H61Q36HW0K}
zYs?}jCkRr)Nv!2b?UpCM^LcECG+3&;uRK++P0m%&uo<?O0Y|*Qa60SG7MB`Xy*8K4
z)F!91N+s*d9?R;pa}Q@d<-tZaFulB>e^>?_D12i1fF}nxfy#)ur%XgZSk3sO^`{xx
zol>j*%`!(Oi9O}fU9Hh1sqHX2NC6|;J;*R##y^8-5@I0a5Weo8noYR1)L5=Pc673i
zv6OrY=-AS}`$1=!*Zq{ax2QZfyO8n!cArRbUrUfe6@vIW7;#AYJUcp%H}jPTrW^AM
zSz{2Lfj{z)tE)T9oaMQ6e*g_V<=ROIHLLg3Hs4k=N4M6FD)Dde#H7eWcQ@s*rzclB
zGC_nVm&XS(0b+K4pUM?EOkM-+x+Yjl=vJX_mrayC+Cwc_l9cPl5V_h%FiF3NYT;08
zAP_iN$B^XMm_K?{l|+&Qb<nLqJ=6)zk>Sa7;SUC_3TAh9a*4xq?&xIJ19b|%)}RxX
zX6tp9%a&$p+4|Yzh(ymKthhcqI$NtxuPdwKVmz!O18}OEspjg=s#t!INSF;$a&odh
zdyH>4tz=WRdc8N(f+;Li#_{=S=2|g~?TS@H45*+{&9)9^a^qH+fE9L-;u~y~^+xEj
zb6aXC-&b~rBRf91_;6O~*Y9;PeP;Pst+I4<X`xb|hhpi^3JL3|B9AXpA1m0A`ux<x
zGG*QUukR6+j(1Z|F4vbTGbbvw@Pd@Z^;z<^l=ayX=A~?t^i)fDbWK_ws&#I<UTdIs
zaQ@ibJi2760v6S_WvVCcyY)~uusz$kcmL>)S8v#v)zLqVY<4cg^2Z~SjZH@vQTBN4
z_<ZA3WvRBfR9Re}U8+InaDo;Ujcz|WIa}XGju-2|5ZJUn+bzX27FWhSGFe}Se5}`}
zDjEc10Dybutty4ps-~73joRE2Cg9oQ3-#J@{H{%}Lt&H=ftH4#lkUy>HZ?Mg0~y6z
zZ^thjpwDj4czs=V`=Bz9a8q+jl_RrDiy7MSs=N5JA|z3SZ)e8+{U$$Xz+L_5PT-;Z
z^j9)4RDSl|pFzWknwrhzbvl{o9ag4vv8E$a)0L%p)G)`o@Wd+kq*KpPK_~Ryl{FS;
zW{)mqli8hFuQX=>#sW&su}uBQqjNuiQum0gE~0H9so%?xwyP3ET7YeUR46_?R7eJz
zB=z)bop%%_U{sBv&4~pwu+OF{Iz3R?s8>pevZMa?nS`&tRLvzXWp<9JLzmq#HMz9F
zaRL(ww$=O+$YUC)LmmB;tA73(;I9F;9}ipjumvPzP~#u##+RcKCLW)Eq$Y!xbXgs}
zL9t`#J3w#9mU3hd;VV<~$B$1c6;^ko2UM)*(?+3ey%5<;`g#XIl<=ZA!+_lg*=%59
z2^3`mz1e^~u@324scdm!a*9JKHnh32rn)GZR@afb)-km%>u*^DEN(?lS~G~aagvW4
zfTw$TQ;)P;#Vr`mm`JRnHlj5W6Ubf*lc`b59?Ax)P(J~5>%i3f+~U&Y+|nR<I1n;2
zbKZf#QAo*qvw@&ZV?BKU;{R3|`=fhyv9b)avci{H_n;lLek$OQ{$PuA(&@=6WOuAj
z39e?fleMX3C@W(7{)KvAws7Of@=<aFQ@nB0^ahw2JB}qA*Il%6#L6}(W>PK4rJP37
z0aYS_tzZLsl&OGj=s3{2g`xonx8NDTY(zp(=zhi2YJk*UzdR{Qn7j~#nC76Nwup+-
z5ldSygNTc=5N$=gxBI+GrA|69%TmjdJxG9{WOKD+m=}~d`%OJ)KLyG6&8v>9V+NX4
zElLC@$>F+cw)uv%<MzdcI@}%D3=vFAd1sg=v=J`dVJJ=lhp}Tb_(4NB@^;z88&0Om
zH#jJTG4MH)FTx$u=Rw#I!qSIf^hN|zEfA=ULQ=$LP}Zs)ala+?XHJWn4>}RJ4I%YR
zP0qdadfZ-tzQ1Ng##$FJHk*yA*D$kC;u^EZX7pF|q(CXPzQ96az%`K{a80!q@}Xb6
zY7wG7jMgAPjZivarBw{O66T*yA3kkJAM~ROY{*T|m!-m4^v_gPf0N-y>e>C-?9puN
z{aKAZ&Hc0^=a6E)!mP{zgoGOj#n0R_jI-YQJZ7T%MX5Dh*j_A0VxwLPOUUmEHc?<t
zN0XR(pG=4{o2al`#^m>y{O&0$&B}a=PopN<3+wmj&6LOU%S(`K3_NtP^rvV-6<JXt
zcV!E+QxC`PRT*AdMp{MHCZ@-#3AJgjXalQDCVz#QhiJ=ePAEXNXr7EWjC1^CXGq1b
zC9My^6|f(h^NnDuHgC>+5{D5Y)AZ)-J`|arePniVc7ARnrcro?+42IQr>ecEm<kG&
zPPt+d1Q?AXQmnF9#`OS_B5;2;g&8^%6v$xRcQpe{ZONwYieMB){x9J7v;&{IJDYk{
zHuc@v)IH5b9ff~u&14aXgMkCf2KLO{U2IYMnEs|pl)<5Yg?9Cgn^1`Mqz$IsM$lJT
zW&PPewk5kOyE}UoD@z~K-#z8KRbH<BCGxPS{+Lk0HjvA#@gBy$@Db}4!^dw2(Nv^E
ziwEtowXS`oJ<It535J<%z?hhvrlPkv7c0oCV(1B|2u*9PB8jJ4ha;jXHE?PXn*RjN
zXi1fxfwfdQa!Q;VN>ZQ98BkLdT28QkljsV}=01q&F-&9d5LBNf33nwkp6I^egQNS^
z8rHt)Q+rrqFYL|4k;w#>1S`FuDrk^t_+K^x>?f@_8(}@x6hv2xpYF^{0+mbyJ=iOQ
zp|vO;QW4yqW2v6<EJwmDrvZEiMxkr<6G20ss3Z0jW)B^mYNZwm^iuvT#vyXuZzv02
zu?8Bz6rQrYdq?Du+xiw4YEy_#nu-kV)l_z3!Z8_8YBd+C@yAdd8Qh-@LdEvBjpAg`
zS(DR`OwPfYpPfSpw}ROe!S2|J>oMS+q&z9sdF!q7$gnLs275UX;}c7I=OLDpG$t51
zgK92<--S=Wz{bc>SWkPpH9<#e$7sl1<r7QxlvPI8w}TF#teH&IKr0*{{u~q++RG-e
zfUHzeLWYKn2kG$HBWfV<Sd2@3ceZy|(@2r~5*%VZAp)C=qN1Q=yL<r3`Z7(%U#V;I
z*yQXSIA>1L`l9Q~?tSf2?c~zd^@Cfp!G|bre3VIDeu%MOhMxrWQl(km=5t8Q^VvFV
zZP>`zKU&|IiMN0)lk?CxQ%hy3odkEI7e$gQDY9rDKr?K3DBy9#8+FQrs|BK6qH^j$
z#`@Go37eF~8_0-g3JL?(2D}H5w^6m(0)kkzCBfK=nnT$rck(VYYG}Aj=olQV6zW{Y
za7uXd??a43E!E(zz*#$rDAs)l0a*+Y`tgpV^9{t)l4gMI<{UG62u3HL*jR5gVJb(a
zP(%zSUkgaeB&dspFa~4!7><N~6gIUeDRE|z2>nHo$YD{wFrpviBNCm1#1OAa^@uF%
zgc280RDQcDf~F_M9+M)J8ia|`p7(amQCz_c|L(yeD=smVA!v1IO$mD-tX#j*0P@o0
zk$O$EOX!yM^L6YzhS$DzaJ|x_>Vgiv_nwsC3J2o4-I!>_yu<t~!3L4;D#8LXfvm$U
zjW<HYpeymzXBQdAL!C=A5-DIp7IPSQ^(RySuAG>~!jDzpIg1j92MLTp+{ej1#4(Of
zo`gEbzR}6X)Jz36)*1+zF3!v^*AWP;!S$($cXEOhqcW_%AUrP3g~b`xxA1!&V*wEh
zc7h5Fe_>R62KBwHeXyaJ{t<egonKzODl&~=CrDUweh$IXRwSg2$kp7P9iN?>J&wga
z=Li<`VuK-OJwg)_>n$;R8>+CZ(t^b%YSS167fvcJ^vLVxGAy?82h3s!uH)n6mg0-v
zIJ}l+xB6u0R?W<ir2%uqA@wqc<Z$TnK?Yv~yyE_IC#8uFjv;jR!Gi|@XqLnjR;m{%
zZ&}|)tOO)Wm>I*v?2yGg&Arm)v5%7Vh#XzZm=DE>bxpL+mnJHiwMQ%@l1&a;U_9`U
zQtfHpG=J_Ev1fZ^mDiIACNexr^_+;B$trl7R7B|4?A<Z6{lM7J#P^`y9f;v`eCy~A
zf??BS5GA47B73bygbKy3y%YOK0*(}}Ft}YdwAiLc=BH4Kqgt9r_YwZ{<S7XgN=Gpd
zYf`lu>|GG`Fu;$@PoEm38?rcmytV`n`WQ68!?5vZ5QNs)ybi6Z%zdb1^2l<1vT;ft
zg&<VPf^+}|tlKNL9G0%r%8HG|OqMsP(*sdrD3aU+-oW%oI3nUvXA#$88AiRcbJ6@D
zHKo++;V=_M6y?N4o2(%cEV3B;?#&RUjssEGN(6_jU>K~fy#!d78-cS1_>#T#K(bPw
z_MvJ#czTQ#QBb31B%bc0%X3qdLFySuB;ujn^3_xBGxw`oyf8ka1rl-2y8TyA88gQ$
zXP^vV`it$Y(cbFT?;hGRSc~kIFBrg~N?8Xq8v~@Mv2icgJR?jrCJsS-woc90=jR5&
z(;N&N2@|ynY3qhQ+mvlx#Ab;UR@)SjVKxo0l4m%zt*zlC&)@<Bvg)lmGY52@6)+lG
zBGLfrEOVs7x1I=?5UIR0K;tBoe)t5Ol4o$v(F9|Fvphm#ScyHCbd2}(RtMwEpq;-}
zYe*7|wj?DqEJ<?&gGrjQG)d6DND^X4CW+d!kO9WC<>Sb+tw<U~j+^mOXt#P2v-^%T
z;5K3lODt$f%=OG9SCg1I4G~1JCoQT;nu&$phYOiZvdsAcwbS!U^P077TJj=2)ALBu
zJPoWS)J)GylI9A^JUPtZmW)DeOwuyY0$3@@VU#4z-PR&o(+10TBa9S`w4v7wjgE0g
zaD}%&m+xZiDP-a;LY0Z3-4(peY<S`|!x(Tht+>D;d%czysr`@6Hefd{Odf->y*KkB
z#AeOn7#N+yJSls@CLh6)x9A&P8%MwjJI!hflM9Us?5K*Y>|<ugr>N6}MNj!8h$j~p
zm*LpB73Qnpf>d1J`*0UA_nWJ#lI;^&pka_}@wG+F64XD%OhFQuu{o4-Z#E=kc`jxV
z6f4rQN*k-ZDy$rPjAlAGQ~}4a-vr&cC`NWu63z5L$RJ6s-kN`g?%+fb6RpuHoFz4Z
z65qNaJ~bbj@TG8$uK>CZ+MQX_>5-z!0)lHY(Q-PLNPNUDBt%&6vUTGB1Tf5x5ytVw
zs?;zE(2m3`-<U4^6U^P)LMmLCV_eqT%GeK7Xk)1#n>?nu&W_&${5?SO8L-@JOEtQ`
zVXLg_%QW4LZt%sR6Q-yiscV`o=&RiRA~5Pw_}y42faDAIFsk%NcUD6S(Yk?b(SIP?
zQCm7ugZ~Zp!hgb5kR?s*MNoqTc1k5Mk0ePy@J}!Ki*=?+=^-2J;G8^f&<$mn&bCnu
zbXP{wZd-|EkclH3?!_J~*zRI9RvR<0S^Nc%mK%V*;uQpfbc`5!<tSQU2i-IVAc})D
z097bw%WJ*#Rk*?|i%eEAT&foRfexmLD=s*fqP?<mLSC=(9=TXtz(N34RZ~*X$g%nP
zhqDPTK5Fn*f)WF*YlMWhuF<P*iF^!8Zr8?5=^EVyf_BW$9jzmt28wN9EJ`%3KDkhq
zW}-2=cCLS=?sES?{{WnX#{3DZssM#Y{G-EjD+Gq}u_3C2&<WmoTL*8AU=kHl;HwEB
zWsguGTEtI__2{apbZe-lsH7Ri6Z<=rYwSpY{Xu?<o2GyJba$Axk<?5tA76;2T4^bo
z+j$WMXA=?GT%<+>ifh2wq?IpN&En88vh+>$x;7$mEu}Z<&atGH-m-Wvka`)#n<6jb
zuR>dd*=&1kpNw{&;av?Ely9MRkSKSKFwM#K30(vzOsd-ITLFGM_FQ67^f*GxG(fD>
zV!7LFkvUI+&yFz_`II(SR7Gf76@{G&2J$4D=d*-9i1_q0Ggx=9K^Yww8*^IF#AC1v
zHPSdWzi>+BVT)?pQ0qDhu~gTi+~?*1?m~$Ws#3Z6@L?_?duXe`@%B^doao*;A%2e2
z?Bep&6f7QSSt__t5w-|GlB0?xpZCwq!tJ+BsA}d#cpLiKFrrGBt9w!dY_;5r6;xSH
zms+6YfPE(yTmy{A3hYU^_b22$0T{^61rxo^h|Xb)8n`1$!Vt(5EECK|7F?Q?P(&?X
zDA&>|mWgE2!@4<;ane@nQbw_GAdcSd**R>a!rGzBbV~sbxzY;Z?5+4T33h?y`BB~s
zjvzi4!(Q|_U~}=pWM2*o)VcD!pWz$ywlrA&#FZim9ETDJs$y2RadoSRz~=jHoNU(7
z76ysrN)-@k9mtTfH~=wc<|n><ugKJ4QWEN4C!<s>0qOZf#(JadtV6_IcB;l^h%Srz
z;N;Tg`?=__Sw`e*`yL8ZGnLP|(JlMGEa+plcP2M1Bvv$b;4a9tceFl#V!Z+HgtDj9
zh6X?m=NBMAr`DIFMm1pU+0}R!L!yvv7*zOGQ>6iOvvKNPZq?P`EEKlaaf&q{Mk1O0
z16y*lD!Ws3Mp1Cx43mZi`dmdvOF5ra&=StJD&&iM<njU?b7ho53dMS>lx<y>gCA0k
zeM#M+mRJT8GbiZ#@0ZbR({hAkW)&eKP6Orct13jJD<>@7WK1%Qb%@J00-0E@im}Yo
z4p>@hp$%k8l|O>(s%SK#F2EkDGwGt8kfZN9dP}>eg@tN^NastNuVQbR@{?Q`T!F#s
zu-)I*L=ziA#3^!Vz!%uHIEFdg(u9>XU%N3izy5V1Q2ZgCYLkUNSl3q4sg(85{%h(c
zsawQIh*O=Nqg$&tu43`$L}NfUKSBJsEXMsOF#4FR56ZV4TnX>v0(Y`%-Cub2RcvZ1
z-N{Zeb@QC=p<s?~|L&fuPtG342{kN@9-Up{Ji&EJgxZejwsAbjnK>-|CnUl?fj@-R
zkkAoDYcCOFY;TVphGl{BEGL=W%ZR@m!MZmBLfBb4e`2F+5=@BL2b@jRmX;fH^j4=H
zE(<RqHTWl;2(28dPR&OVNOp<-i~ICh<?!AygzjZV*SWrLE46``z%uden4H@H-)wg2
z-faK;e6|k@WObWm!7(ceABK)2EVQ&V91Jg<J;+^)Lwa~ci-Q_z0U3|-2ec$o)yt43
z1u3;3vvb%b45JElX~WTGkt;RX@f1g~{PI@k<|~;}q;74d_OJK19825`MULKtf}5j0
z7YAcAEG;pVC#Sy;9p$l{J_-nSahgxU;ewDSp19vbT)bQ)jm-^aix5!}-7B0k$5NZ5
z9FXzU$7onSfV57VN`gdQLBwm-J%1=Kt|qFg3RHVENjQl@bH%1pR@&MJM}kh68JBf+
zuN&iFaG9`DA*Wty({c_4vse&6o$iu(a?3!!PHqMFMH?YpYVyidRqF;Am5EkZS}CbO
zhgxw3jjUdgTLTu;;0T9uF^vX0rHSDx;+#90`d>t?btBw3V`sLuLvWiCIk_Hw99YPM
z6Y^uSjunXMQ&7PgF%%w)U?fUiM5Hy^?UU1+5x^Gzo@PdiYIxiTavr#a5I*$J(Pe~@
zVr|AB5$^zLd@WigurJ%1AF&#fT+{O#vQ6F<@DO|!?aPOs9Ri2Wn#Vze_2_nAw!sF)
zj-mZKMmXWq#u8!XIW3%>Vgqfokr18G7bal>9>x9?1Ov09_{h;`YMcI}8m?}}OeVI$
zEW)jraawYrg6Jalbl`_pfF0>PjfDM#Au`>~ofbS<xp;ez$EM{mOLJ_cRl?Ebw%Hni
z#-cq`(IBB@%Zq6#KGTQ9Dx?sx1xD~m!>br|6R`~S3YgBqHby3~{}O>;oqaX7Co`{f
zXuod9N{|+Uk$6;0IKVM~>~+Mcm~t)DZE>oE_F}&j!UTR{o-GWJ?G1}g^(DbRJ0yYW
zq5Ve*;LfA|ty?1%kyF%%+@dC$Sr?gs&|=K8B>@wQXy)Lkw69Hby4m%@^L)KMWlVkp
zcS7>vjbVys)y<z+TDd=fz#4l2huLziNIS)+QWNu(Nyw6|mDq*MV>h<xoedM^C>Ow4
zr(16a{Yd(>({-W<U7rY=sKUT4jql&i4Nh{}aFU9ay$;{Q*71c3+q`V&Q>?fx=EEFS
zwN26}L87bs^237X0c|{B|DJ3@>CLQOl8yd^$nckF*gK)+Fva^m<&b_q((hC-ot`Y9
zrqZ~7ehK@3prk<$dejHA{A?QF&d9hBG>r{SQ#dAzX2eAE!z*(*l#2PBI}-R4Yl6D>
zK%Z0&!TX`@*e0@`Cq*Z*UjS=|iWC75@P-A~W0@#jE0a5+Bxi7;hCPI`MwTYx)`z*J
zrevI|s82VgnjbvN9T{9}OYm@eMsq4=37n0asx^UohO87e<%&nWt#xu!D#rr$Ar<J6
z5z;bsOH(RBh3G!al-rW4t<V|Vs{sYLG&7&x$*`b@iYbN~X?rXj5$%DGIb9nRUO;7F
zdyDQ4Q3;eyb~uL1(?Bxu+y~!9Fa0=v3d>XVqo@;me~o39#t|2L-E-HiFMGawF0yL@
zd-b$9PV_ctog%u*HQRW=w@2>`p^UjTVdzJ#sBE>#aJFV~7C<IouqU{E5B0J!(#*&<
zv=vt>I6;gm4DH$JRFBGKPdkPcEl+~cx`V3&uVy+s0YOvA%@C(Vm<1=?(@MNOs6swy
z(IdE@1QRogEg>pDYrk=9h_@FAWnM_vp-Hfomcm*nyE6}ze^On_O~UOzaj&usRq$GQ
zpJ95nQxT?%gtX!g`ji?ksucGi)~c#g_jKfX6`g9k&RX=X?LD(SKe=)}+4#gTu17qu
z4=N(r#}=wqvCW3Y_U#Q#kqwcH8E#JF#X+OExC=5G53pi0QnT3ER=03s7CYU&4q3xi
zkypmP$l|&PF88=e`4?S(dMY-sBW+!<$F@4nwil*3!*<QI%Fw+=JQB=klc>OL9F2Nn
z7k{Y)?5Yx#HC)SJ`*+k8qtH^PaXXcNa{()|@_u!Hi?QzM`Prp;)}?`xiF@zdv1>@@
zOicZXipb$GJ7&ipajWpbD0eiJ4c*GDsIc!VHZ0lL&--6woz2Lg*CGi!_wL^-TCdCl
z(ZO`$!FjE|1rgYCB9`9*PIf>Od4<|CZM~Libu=Ykc5c3b=!KP3_ahtKy?c1)C~jm!
zHw7itQvAb|x_Qp#Jf~%l`lj5RjGf+`R+}>>8^;#gB=huRJXyZks}QF^?y!J@RlHf|
zy4HaPEkg$ga#;_DNE4uB3@99Tw?^3Rj2qU)z|Wa{=+diwurFwr_y>cq=~{dWXjR-3
z=c1{|AzZa!aR$W0WV0xP>$vqBS5%=@1%$i}T!^+AKrGNEq>@0)CmOuKgEz7WLKqKR
zNYhV(IbbC#at}RWq6^Gdo(3soHF98uwKxz~wYWc%pLW#%Gpu1HrS)H74O~gCMoJsJ
zn+@EIV;Oa=F?cG%e;k@^KM9TG!1Xm6@)WxX+T;6cjromO{o|IpZr~8Br)`yzaR>uU
z%>ClbfD5^KGX<=!z|q8%2}ViCG$*2kJy0bv0nUH;%u7sBI#p9@kX1Uz+@u0^N?2r4
zA-h82#c%>snnt7z-F4A0YXV^_%p#aZY`QUjDopKZTf{RW$<<bNP!${gaJx60J7KUH
zPJ?btfhW<j^~B&*nvFPz^BU@y1P-nbzeE{kRl&ZnjO&uT9XZs9J76O6ERE$RY++P$
z0joR?;0HNS2LBR3l#~c4ItyxX>S63%%(7gyegQ^`jzw_$2+Cku#)3T9$DPXI91s}|
zHg4O-3w=@t07}mB$;d&>R5rrsq!!VFZgUxc+R?IOLX(S(&ykZLQpY3TB!!K2v~F55
zOW02<rzm;CC*2{cXMD_WU?ilx#kOb$+eXwdu7{b1{NN5KFwsO@B(s}G5Ha78bJVIB
z2y$#FL79vxQvjh*7=a8ssK7NBmyi}C|NMlajDQr1>sk%%6$xpgMEd(0#ZTbm0q@R|
z<5vRP_D`UJ4Q`^t5%EBk82@&^OAB;|vVByWV6AxQ8||ku^t<#)-Eqi2?gZeUwx1Lk
zmbtKE0%tulENb9m2%V_&mY|JU(Z<MQPH;Jo9g{z+`z}`;p{(3s)0(sdmpb>h+YpVG
zXL!O|{`zomzQ41~OP2B^H&ve08{Jh^P>6;QJTM-=)hhDQqdD3Snj_udW$eMq2sWx-
z=m`c|bb6IIVG{R24d(gd{3P#l<j$cJ5*`%08Wyi4PfD_kEgZ<98Nv7xBB7I#55Jkh
zot&hq+WG$~_6CmQmSM#8s7Z)SBS=A9m28<QL@<qJX{_c61)}4c$X^%9r|l>N0&|=<
zunjIBw<0_IB%j#btS<+%PIrm|P-svg#fl3L5?a&&t<kbPZ)j(=*gQtdythK+%o3PS
zyUl1sgPly?&}Y#z$vjfSsa}i{_5>3)ESfsQ1)cfE2<__d60j^6i9{YVJFtcIlUhuJ
zk%YuzF*0-TCMoP|pZ2i2=!^~ru<ziOB52!ieOMM<a?9$2S`?UdWr;VbGgzAw4KAB}
zc%$hwS`Lj4TQ$>YFtp`e;iem?2;LJSQlk4`<>!&Q+;znES@~Dp<-dqYS9T+2U2T=3
z@~3{XSRS(^m#H8~vVDT_JpBpFQ!bzg=~xRU2-2~iIo#zyzI$96KVw)L2UQhy3|z{w
zH8D)-vv5DI1fb)=O0-yUVR1%C*Y@i=xxnJeL<F$xr-1ZV%CS<E8+u@9bdL<c?uEuO
zFWkU5$3Zr6leiWjgIx?laNN#>Ni+_l0Bn!c__(&Px~$Toh@F#-m4<O|k$KwoKqLb=
zXdIy>B}L2<-Kyk-vRf%}#xWkG70VmpHuyno!yJG4SQ0%V5{79dFJ2swZYzRhQ?zkX
zf@DPqT`gAvbJwV$5eb;^)LuW8P#EbFdV(r=aU^K%Eh<cEYQ+oXVyHC7J+hNI2@03n
zgoVPu#}Y<sU^%yk9!n7V5364}jP#BDW=z~ff%Rm%UEV{osSO3CiXbl<r#7N!A+!rt
zyUD8r#YsWX1;G+})C7O2EzLE_xduD81>?Z)whVKxp=e{bM6W9NB~)R$`?@Nbor5un
zki+y#sE2C;?v=TpW|RIFD!p8*<WgfE(;C+?c1pLdgw3|1wL~Gv#y$Yq`URyzSG%lT
zdOb3?f${$!ISS*tZ6G;frgM!n5c0l>eI}Di-T}hBUO4#6(`h{DmGzam^L<tosU8xC
zX?4|);=|mn0iW;#RtFYR<^EG>Uzw$^@*H3lT@P>f5p#4(La$e$03m<ALQGCoAID|2
zv$&8IMp^%>GG3g7<u6_xE7LA+3z8qg6D+ubtPmU%8xLoEVa4?tSQ(rU?p&pEWbx=8
zr&s}9)ZOMBlUDXx7`*t>3EQ-~s9kzjX8YjKZ(<v34@#S$|6O5;Zk36sa+mNcc64j9
zV^Q_$wn!;<52m@Rd}29FHQ$L#$#~_d)hYL+wJ$40<w7<oXSY1HhxZ&Sho)}eou*P)
zq;tvz$st>ObI7q<xD6Q_yi^v(coD92jvSy-PE)Zd*UT`9O|=bU+J`(fe-&wx+iw+;
z)qo_NFv3k7l&Nykd9gFSFLeQe7lrHHpy&*S;Ki6>EWLu6!19vabp_(N6&i9;$8Fal
z6RFtis218(K4~7q5J9ImU*aypBsT=;o>N*D7>>!v5#uX&!B5J6Sx_11vuguchi;`4
zEoV10hGCZ!lyY;+$B*E8Rc`u`7&GrJr$$O>7glO_vgf+xS$%4nbjb{EE5ErJ)mJp4
zHJ9905azXDxe3uhK+JQufG!oidJ#Di2rW0(1Z+{B65@QBn$k@Zbc5>joO#j0Nrh0!
z)gM@w#Z3=#M@$WSRbIb5+o(-%Yc?Ums|jE~OTXb8wh6|%8l|wTlqF(D;3=$+i*u)Y
z8~`m6qb42fO~3FzZ*iEZi2xI}YYCIc0_a%1^-0G7$7Hy$Ntw`OrAnlyPX>zNWGPwp
zqHqgV{xKQLnYd`0+%eT$TOw;5o5M2NxYciI{$a>CO*YZwc2=i}Dq)C_rY_SFy%H0*
zQiXq;>nYJbz7t(7RLjE1_0g{=oL@-`zApMjv&cB-aZ3i)b2md<I6ZWyIf7qDGfc5I
zx8tQY!)R0XV8I!Ez>78$?(=3&^0;5k68%YC#$N+5aX^H~q$(zxXi){~&bugxy_q{z
zluAv{!NB##=VV>wBNh~6FFqE^0IlN%f)uT(0U3P`VjRWQ-b@ac-LY{p6Hp7e`r!Ti
z&E+)rb=35@=`StEh26T#n$a8UlU%PbSB~9_@V&06HI<9GD4Z*II|l?7{3_H$SoTAs
z@=1Dkxf#N#eO<N{5X+jLuPt(S{EWOgr+_5X$(<}Q5@Hs$NDds8e8r4vLo^DBNx&$d
zBS<7(cb#}zv^2~rt=cKm&DYyXBamwf&hgf*By|x=JzSySx=D+ruY>z0F?i3BY)j<#
zCS2Ril_2?z(_lgSt5ISlG<24U0UN}QbC4~k>U5H6xU#vA^_n62Usf2yx>s)+<S4R4
z<=X$l#I=;27egNzPNC(uGf#eBi+MEuugSY+$+-q?HqOX3F3{&kOA=ADt){rE3j0Ch
z*kstp-hPu@B6WS3ylhg?0#y=TB}o-*SgX*&yFQH9qD@_j>uP2@;&3P+BM+=6MA`tG
z$|VLRpb8pW*K4S<IX>-47eVv^Z|h33w!xvGX!{YtOkIISQPI(O-;&9d{n!*OsHv*A
zpt$slSVROGXa*X{0pYq@4$l-zKL8|Hg$4#QdvF;`2{QGFbArQEHa9SEYV9KB-C(mB
z(^$GzTQlrAM4kj`EO=WkgoM<G3VK#Nl(3x>Yw5`{#QNxD5vjN&R+%a%yssjqL@D&S
z#7WOn8(PG6pm1n$9+M;|AQcz|vFiGKZ~tQyk4<<>foyRIXoP#M|Ij<qB0;G_!4}$3
z7^DfN*2MvD(+G}83?c5(k0SZgf7lhz6kBAFfTvz&yG1jk`<rvwGbpBxN^`cKAtaL+
z-_`B`#$4B8G$mtVoqAairkJ?R*5!yJbQwCPz=(di6e8e`<*{X54HxVW)%W^1MWIh3
zd1)mnn0BvqkM=COMm+guQU>_CDEK*uIujqOL3zG4BWFkfXaG^@$s@RkR0Y{>QZFTv
zDkSM1F6>;A+h94p3f9Et$4;*GuAG@?5pP|J&25)(>_Qx<m;F#|ETEKHRX8ECN!1`S
z5M$vo{G~^?p{wMKa4QHX2w^fvGbO2{p@R*3jxu5e-voI>?{gJJCcB7$qq<&b)EwX-
z!J;nGqe*Ou^u8M8h76_E5~m@N8c3q|aQ>F>wGk&92UCGsS|j=|;CsCwB)*8A*tmBy
zvMwB<YJmafH|}jSdxu4v=2&7k&e+T-!%JAAOKjog2ym)I!52d%DS!~FbW5$`Sr!~h
zdx4p@SfDgsX^y9@*^vt{yl^w~Jhq^3gRV2R%|U?oZytl5BJsY<A#Sc@s*<jn!j?t+
zHlw2Y*Qu*8Cpb?qWRwuyB{Qf^^XW0A4<d^$|4zIMjmvs{_)nOH8Lo&r;SqaLc3Op2
z=q|;oGz}=}j{_~vYYHeY{gEG1i8e3DOu+Ga>Gng}gSh-N;h{*;;wIfUqqm<FyRtPy
zzY&5Fi4&pzh6soCNzz)rYb18cwHs^_6s1h%hHMbF2C8j{ggD^WHAn*1Z`eTDM49r{
zTaI~&*HUs9PT*W&n4}br>6@I0IDk}aLdi{tpkM_EpVm?lmcs2|oQON3%!J;QV3qzh
ztg=mCkL-|Q&>@qJ-g%1gkGoIhGHzLePs1FXfMoIuJ_&<RcH<WY$Yv>9!!OwmDC}@^
zk5zblL2bRes4Al=Cq)DSv`m2rDjRuODOP@Kc=s)ttIlSdTG@O|DLIX=QUyKFOnqRO
zK}1YOvQ{A+ltk&F_7vHsM+MLdwZ{b+tN>cA!qjjgc)iv}#Eg(*kW>VMA@Z<BaFt~M
zUHeCybyCytkKF^WdPsOG1aKvrF(x&@Kn`D{=!+T55!Q=h?cT&aQjwG-ApT;b^@V1I
zp(@iN+Z}6C!&wZNR)S+3&C?e81!CYmv;I-}B_jI+TL&LCiIr=(am8ih2XI`Z#kKNK
zCV1x(_fUyIaOR+?$qq}63nODwQ%2Gdp(>EJxO_y>P>#)X<F}0-{IsQo$4sboJxlvG
zOye95@`@54;WpVob`3^P-3biq=CSguF8{xF0WX&5e+(ghnmH75w!#o#(Al)egDuIZ
z^NI}5hHOD@q?@>Rfu{^WvpsU<023<bMKROx8+X|-B7k|(&ZWxq2=QdSz=u~LRu*~{
zpT5F{sX3Iv`bsi-boLg)l`1F#rAL0SfvA&|M6*jrF)y2-s!|LTJnY_biMeX8*h?OC
zv3&}+dXvKs;SzXQAtnq`nV3tluZ4Tk4;nVHYY+ugr*1Lpdu`PlyPW2iDqIHLrYe>4
zw;qh<W!utVJn>^H!#A>7alaWzU*vKZ6uqpa<J=sZiX8>=D4r=i@k$Y(4h7G-id5(>
zZeGflHB};Nf{m7anjjHs<T0?-NW@dGJc;ZRm6>KX(Ll@97iC9Rtc9m#TiU-)6RVSu
z78Q7?+xf->KLqa0l-h;DVps`rYv)0jeFeX{pE8jMu|jCv3Mg#Es~b*KpiPLRg;uG}
z*Ks)uZ^J0OB8oMDS3%&Cfye2}dQ<{}VPjsLFj*S2lf}?+d>J>`&2ZYoiD($aOEY+f
z47dtu3Wp1Wu_e7)9%zvPk>_>A0g~gdaZD!BRNH3}LM3Efl0Y2UfQlH8pSldSK;&M+
zV;F`_8(nElL)D7t6^?(T&M7@xR<qt+Ev&i2Z?z)>!Qs-OAJ#m}I<o^%qD@U_K>E^y
z5i(vK6yIiGVv*4kp<bL;thSqps-%kwbU3srmP#O%XWZkGFPne}ANW>nmuu>@h%A~6
zQ*}6D&UELn2w-a}z&|N+T@1{zqKRvHil}3h7>Fe#={jgpAIIrb6^SQfxThyAOc-G5
zvzZ2NTDF0q!#tcf3)`7RDFrKA7tRyZp5uP&wNDm_X259WZsmO4y0<^*8L2t$q{o>g
zD<%Ei-1g>!9DW8V5e5wn{m*!H=P?{NZ{U^Swh$okow$Vp7Z-4m5W>h{7sH>7Wy)`f
zWm2hOh{zUT6$MxgDh23P*yPBxi590oq<u1hmhaHLC)B65O9k*^Y@h`GnZ`$=2KtM>
zw1#!0Kyh;L79}AnYQ+}x$JTk|jW3r_=iRNQxaJbxmCOl!qs0uyxcLag$Xvzo!`I)v
zG+xS8RX8cmP}xa%mCgMEZU~U7YS#49+St0L6jz}pxoZH1uDpg(-v1d~HHZd(o9U}j
zBXp{6r%J3W?%PgYU#mk*ZUW)bg-;v8#=y(tyqQ>C)@1j%j5Aa#xjdsLb?Nk=H#LX-
znrbDYyVS306)e<grWnOSk47hqZzRPwAb;f(ucEUaR+w;y#qIVs9~ng94cckqT^78S
zpdF+|TWEu>sbQjO)Xz(i<f>8m6r<JFiExfy;?-%(l8Z%ERCODYjGyGENOLmrQlPC9
z%&hb+{7tl)CP=yrGL$rr_eeP-Yg?v)SWKgb@n)W+Z_%y9OczINM7x#^9e~I;FUDP5
zUXYL_btfWJr!WD_;h;s?mye<_yKzjiwm4sZL|!<6EfSAlU#d3Bm3U!MO3hLXyn+f7
zu0o+j7VvPtqC)FJ{G1cJ*r`Er@o<^SqDWSB$tme+Uv^96U+gusT^p^Uj0Wa9T0D+W
zC5@>30z{h~1L*FFy$_~)Fp7w!JuR0Tq?6(Dg`=Y797QU6X=_@p%`|leI=rp=5S9;M
z7qW;Z8Y%a~Vyg>nXUdR8e}pu%GE7yMgBB51;Vw!V=xo@K-6jWFY0M)|&%*F=La;=G
zRZ=yt0n||e-L+$6XyPG++d|EbSd1zT4v}H*wZT1!vT3eO!^B)<pdd(ha6gk-(HOH~
zlkC|Ol$#(EAuiAol&CieURh5|3P2yojLQ{`qTChCY?bNUC0WHG6vrzYzDZgxy-?^)
zT^N=TTsS+1u!LqNGf4qNML&$N(4#43MN{Aqb|A@JIJ~Pe^u@gz0twHl(B*mqu>^C?
zAX++RuU>y3O2N$hkcW7F9pgX1-G_JJB>cko3(Rv7x;i7H%NYuaxoXFNys)t$=n<y7
z0c;xzRMS<-41@0HOK*5u({^9W`6?~RRGU-UqFN`%zH|VQjY&y6reT+t%ILzxB*vj$
zYv}>3v`pv<Q?oMSmgnR}M^X8i=fF(cgsZgPDnmEoTc;IKV8yXjw<aB<=Hlpt<B_C-
zP=15t)}0|t5~;H)7AMle^g|Y?3EfVzqmM6fGRT@wY}!mRAayR<YpLrS2~K(R4N)b;
z*wa&CPe*DP0ouIWNI{uv(w*RMQyY60@qil6!?15-FO!K$8S7?0L6nY7Q{utrb60@F
z2zCeBkm1z<$u<>LEW%@x)~m&I0uM;4&{&8nN#|JYgh3F9>nTZiO|61<aXiNE_#r`D
z3J~enwJ(|A)U@?DTYdvSaC)#!s+P!@=m^|pkWc{Spqitgd&Ncz1d|&I1}iCFEwelf
z;x&qyPt}tyS&JjA9DtJghDYbL?~L1F(2zR(&rm6tnPa5r3XLS@&K&@>yTGkNl(Abn
zg5`TmD{^&<Yz`TT8iusF;Q7)F!AY6=3h|~qyXk{rKam}KX53L$18qG*JK(XP=*20b
ze~ZEBD6G2*y(+Z=O6U}n1L9&ukB9@FSNfu#@l$j(DMgvksqVq+j7lf~06qltgcYKd
zy#Z0J`Q!wycnnG+jyAwam=srq6w5oXj9m+51>if{RF*Q$5omlf$6nB$Ly$y&mDRy*
zU6`8ntxXjX9rg@KwhcqFJ6E=XGq55MJ$j$H&6Sv)p#c=4O+j>|%+zis%Pz$x|CRz4
zFnR6q0I$-m3paXOAB<(ZiB2xM_9k%I_oX5hI~k0#$sFFCI!!7jJZPWYoo$9p;?NQ0
zqh8H+?UI`ld4pnG;-`)t6R-Gnh^|7vG6rC;W&l&JzZ7`(I<kl5d0XS2z56Mlx?pz?
zmb}`cN?92$ItTIAe=Liq-V84<k<b_(_^x~UFLYq=*ys1lFs=Wdtg$#Vdla4tZh9pn
zw%9pL#36)N+B-7Px?N%tpI+@R;r3nNDDKzSlV>{k;0cL#$BQP9(I@sTgtC`Y6WO5b
z_7LpTM7=Sg2U`sB#&Gr`n;~Kkvrx$rym*611-5rZN(oYtX?e^R<|gq@@kRWPZ|57t
z-hYZdz&fPvr3)*kqHxHCyY<=uRNb0m->vx&7w0atkXq(J^{AZFd{jo+n<ebaM2GM8
zA>;J1+^sxFxK%b%44%ZXGjViOv9>R0x=}k;-Zp^kwGGIJv=TxB^@#IO#MVr_E7)Qq
zhz)raCo53bk}PYS0<~(K+=#3k3w&eWi0CYV8H;tiO4pTwOg5=XOM28C30z=tEj?(e
zk1g^0_eI3TSLkalUr?h~T*RIl%EAFMo5?7$1Ska&UzG~+B5Y7K$53np(=?!JkkdU{
z4ibpYu@7D*Jvk*Yn0V-7y$}Cu6$TEJU)1s@_`0b#pfJkYV!}CQ5+KT@HCL#$Io|PY
za-Ks*S(ASDLp|8kqVVDD$bFc!cul8vJ+JPw4cd@8{iknozzEn(*2sDMUPv{5+xr+5
zOy;P~aC&&Q^i}L_+;*N*86bwvAOg&f*lSp*2=BtYgV$~3N2@)t9vQFr3oZbRvCBAo
zw9in#aYtmum5g1Jn8=K-5AYg90hCGCgK>B()Be%1!Z?6y;@D7y|BR!6vjQ0|n1lh&
z$S{TkqnH@jZ9wA>FD0MEtL2v(@`3^XO><5GB-wtNk%w3)Dk4k!WX7;Kr?$RN-@Gg1
zgCM53pl`r$6Lir)cx59G=kMGrMw-mVl0FM2PgPxhz7J29A{dBrmL(ORja&?x?E4VZ
z6p!7$<ORS&hRhz)%{l@l;4D2S*-AJ2o)e4kX7>N%%&AXJwO|la|6gPhPe5aP88?2o
z`0%@hkYEVvtYba7V~Fn$n#9h3ks{a|vuS@y|2Fla2?x4f<fCsoUu2+HtOS!qK_R`H
z;NdOfs1hZ=u8JpLYQ=V%K@SkPyn$ud_E^EDVPRvxj<=;ozc7+R4dWX?1D>I$S@X6#
z-h)KFB14`#j26KoK8QqH4cwQkN&~Nf-~~_A9|Qb3;7hHV!HXCMFu;kC!ws5Mc(3;|
zxzP(P=QXiznA23WGKpgJDkbaSz~jhnq|2z10Vu;x2qaJ?k|*mDOhfns!9Y`QOzrIl
zS<+Ie2ZZ4t1cH>R)_0Po^d@D}jW?^3wT&qRLJ)S8<8#1CGb7vtEwhL<@&vY6BW4fN
zQ%w@F6-9-x8o7F`S8lTckVqJ{2BuEzrWnA+4DCi~18RXa%k^u1$<lRUS=!fox&Kg&
zTv2GY(Og=3br9A)g>VLMv}1pgTWYgCCih{e=i5VtD(z5s9EJxxPgaLQ_GU|XCE1jn
zpdsvuHn?S{qhRdGP9(TbEGTZtcY+e!ClcKCHn{64au`5?@VX&afEL*60lV%>Zq$x&
z<;AvhXxhwVy^u0JyGT2ua)JxL)API#4P3+ohkHF5T-C#j+B&b0(`y@=wIDO`+8bb#
z+1)pXZ~+l~M-BY3EHkN8#EBb+AQorj`hTH8emNn;m*z`mGaB(7*lcbo%{S#JUS!6d
zCd|bP5^yWB)G`UN!QculW<@E8=O;`#e)L#{hs1e?1Id1NL)w9hJz&HhUx0_)oH<=P
zvV2Uix5_<oe5!&GyT}_GT9Sqs`Qkk84zX-!jVEK<lN9TL<j&#lh+O|O%4P{PF_Uf7
za(c>wWDAu<Kv+Z`uUepu{A2-ROA(6Mt))l<TpWXJ$#n~p#l>h4i7IgfZKaEC#5?2I
zLcp*qRRZN*KN4dO?YNc%Ca3^<RaC8{G}M#IX$vvsPMEpc5)ROK<49OLi8Z&}L0d|$
zsZ57yEx`q#Hj-R`YA?}j1@?CwJQ$ndV(ii#+UFTTzLB#bm2fONsAyZV2rUx%ZAnd1
zitJ)qKuU%Nm6vf%BQL`SSO62iG%W$6CJZ0oBN);QA}^hQ14J$@!4xEv=nPXxGq}8X
zDO@hi;F=^2_|i1dl1bfB$YR|g&ETShkwAQaGo%?zB4Gh0rWsHwVU8$CGpJO;94bjO
zD3>5P{6jDh719bYkTU%wFh}{09F+mA47eWE3$1x)wZ7p2uNOm@k3M91z;3eEaGvx}
zCFb6XH*)B;RQ_%b7^yZ1X(WYFL7W7j{W-;#Rt>nx1uv3`F!#mAg!PAf`g$4<8{!q9
zuqw5DKZ0xFE^Uc+pc%}nV4{%OdQMXP68hIlCgVbPW)Ed!qx**^hQ{n2rQ#T#)bqnA
z?dAt=_Oea>LKojBGGCvc8&oGDhX172vXjRnJF~}+*QRG-3~<fMF9>tKsACHbpmkUe
zd{_b%cq1wTw_ql=Ux(7$=vYIE$M<R^N7}nLos_q!7SYor5!)L90=ygR2riKX5ok%j
zE}(N&ifrcp^5!l%@Y9emVlGWCV#0+mdLlL0&cX`?&-0D+XiuT%h^aAMTfmyr-Dqlf
z1D!NJF1$O_!cO!>UZ;ObmN{@YdVTr$9J;kTNhL?^*g}2wIIbH&`(46duN1R1n30q>
ztcW-(k#}POOFU~a$;D9s!!bqL9wCM{gy<GHuvvjSg2bERwA}L3o?HYrHP|dWLCG<p
z0sSLp<y9IASyi)64x0)zc;57BUo|d}K015SkXWRb1jsT7UCj8oP9)}Hwc-+RwMWuZ
z7J;R^73(biYA)`JOiki~Q~b)kmbIFI(i}*I3QNfPYGN^j<z1C+8X}Y(%J|A!oLR@M
zV>oP~SBo=VBI8aFi>83(GJUF*z_t|B76cXfkb6E92;eo_QoSy`=Af?n(2B3rX1y@2
zAPrjwbuX+QaNfFDJ3ea~5IK~3=q$X}xJ4Dsh^rW<RBup3x*4TKsWwTik@b{ap{9)M
z!O+FOT#{+;HrR{FEo-yOF}C&{LHK%VW>9X#P)?CiRpk>VEMXp#u*pY;b&e8-GQy|1
zB3!)()5z94<PFX;sw_mk1;bJlgl&9~5I4iz{9opvfV$Oyvk@b@ECEb^HdAEdC2fR_
z6$!Xm;TDp(H86^ofJC-bJ>aBCWD(w4A4hSk{>wDDw{?1c+w{CJuz<3e(dA|-a4hxN
zCF_K*2g~$4-gJUnIE#W1t)H|}S0QH_CdK?h3q&ufQNY5r4xlMC%GB~p<F?`ahM`;p
z@A1|V9ES@i*Jtb37lx}^hV#n^xcNXzd5O{8RHOxexno)kKryTkL6!iq#c6GaP~6QY
zA}G2owb)X@RI$g}wb-V3hX4<<UdN}^n9?)WDR$j6+ESrK^Fmgp5cnZC()p!GMXM@<
zje^_%`8%!LMl`(DLQmNC)nrzKr<FHq*+VK^RlPrG>j2&`!Mh$X$}ASI`TAG1rA3WJ
zS5|3+W{fWk1ap49h4aG;1I5*7iBF2Jk1w0kHzBq_VDAqkO{gopoGuuiUW5cHjJ^2L
zGhB4U?hY(T#U(MUof&v#=qw|UBJrp<RtGPE_PePzYoMwVlHdpM#X`46<%^_jmVuHh
z5_y>~B>_y)e;9&E=V_OKLVXh?1VP9{0$(EPk4CMWkG>j`p|R1SeW4VQ6fhiFK8gtJ
zy{fN}zx}|jUBh_uPytL&eX=G{t8#A=Xq1>ak^<00!=@1hU<>U745)~2p&FkU-Cd{&
z(6VxsbKRyI(#;rduwU2nO@7?kwbkzkzzZ9Z#RIl-A+ou{xUFfXf(1tjZEKo1Vz_j-
zwy+>?#BIuw8y>bb7g=7|mf}`C;#4&!tFzT2T`&BA!K?nD6z5hXn!1`csD2te2!sWa
zN+d{?l%i+dTng(g&857tRzjN=;5>Jm@Rv2{%SzPxmJ2+t0$W268mlo$s8|>pN*Fh3
z<16t79ztyKiePPQQsC(90@vX|wgvoQ;Y)wQ_Cf{zBz>-(t6>`+(65~2Qdx^sC~KVR
z#k(tW1UYLQC*MV}EW;hcpd3=GnV7FUb8!T+|M0>*SEA^#T0B_7?pD9oq^nmxorpgq
zgHVDA7!MHVY!mM3WFp4OW2i8)OOGHo5azXryZP~0%MCm>X|t^{;^uGigPFQD6TSjG
zB>oYfvb;FIOkb&XasivGeM}a=<3UlqbUKoPHAI|l*PhhXl_cPz-3$jK23xdeeTy)h
zc$foMGku+sL)lJx@@PF)RQP(R4FNgNE!mq@9lGr|UXq33uD0&_dohJDPLLCo&{esh
zQlXo14ms^!__p{Q$|kVqqj6m20dMvLm#(XM--x!gY*>Nn7Bsh^nm1(WVzDf@%Aa(Y
zwH(+gbm`FLV9;(70a57>BdBdBwaS3)v;Y@Xu?IcHIGk4daP5@ZIkw!(4F@uhRuNH3
zyE2FT5Cn=b*&5y@Q|B2&G*YH6^e=*F`u;7g6z2{QH0y<-83&uGa871e6~~*3EJ1=M
z!XusSjHYGMq%Ba*ZtS6wP1uBc`j6rnuTGaGa9vv#lsRlirG*?63`|K(F%C<Cy!B9q
z8|-Ck7o#DFV`7Bj0^b0Jwbosu2Y2KBNywOb*bkshIh{%v2@xaRnz7{B7R0m-iz&$K
zQ`&?E#eg@d=tme45C>}j$!H9;-#7x_i`n$O2EKFt#GLhxy^@m))?6>6=2YNi2R<Mt
zLZ}sLjXcOv2ib?HDb$vWbjp#9*#^|Te7v>+;co=QIY-RSfmE^>49R1hYR1?SZmTHU
z!F%m~e4Jlv+m6>e$|2q`X$B{jXZdzTr#k6Dp(pJEa9T_z-OWb1X%z^{4TJmxhZ?uF
zu~(c!u$;IT_<BB~>$P-2|6JGP7-Zpk>WVN@D`pxG2t}7Rh+<GY(c@udQ;axAk2Gzu
z3N7Lr9#d$COJ6UJjcjVASh*O{cyZ-WpN3P!yq4LqK)b)re4Y4s#d>2fEYu4<$yPh0
z&U<Z;dMiZh2NrmUC!n-QBvr8Z+`2XBMc1N1{IsqZp$c_fgVI2x2U|ix%ws;41tZb@
zV*B>y3X)rIEi;_ucsPep!>XNfotTulIYz|hX$2lyO6i1|FBL!}W!*y=lS3o(f$%xn
zp#<o~*wk-tOstUY>Gk@&J*X(wrpqkfu<DX%v}k!Oc9|p7C)X9|R3#H2_M<k>rarkV
z=Rv8@s%opTJCc2-GV5$*g802MVx)%lb-siOQl*4Oxks;Zhrgn53qqPGlEfs|xy3Db
zrPS<r{lYaf?%GJ-bK4x(3*p4j6;K<F7J@ked7}=3no9`QY%Z1dDy`MUrFq=8z)+;T
zD&F4N0%r-d=L+cZp{&k`vxECcmKw5xBCcT$)~v3A?#H<ejm+UCi()!+F?U<O7S1`T
zSsjR%lHr~6uJo_c0!YpEI2D2k*7rPLZ(*(lnto(qV|E00pyH=m5pBqFv(nC_z?$R7
zU%rCZM`F`d(VEPo%KMhN#)p9Qb$N*}f2G9*^d_h++#Ia$qj|ZJ5)<4gcFB`g?WY(v
zw?{M$_r`SRBm>B|j|X{WXVajIYxtqBDax%sYDlQ0%2m>KHaEK4ZldHFmtc!1_VMK<
z@s&h8<HDCBU~8PMLV@5Mnjn1YyuurYi$x@eH)$|I*5M;DD&M*Zwp&nXNsN&HA2!zZ
z8*6jDwau|O-J~nKOYh*W1bT$6KZmjh5ZT~jBu+?qOs}krRQZLazl?hkfd(6!1f{(T
z6kdQyA$HHgFIX%y?1IHVU3Qi2ymlP{?LC<=b(i#%tY*jv69XM(?8*V^x=kGYh{iB3
z1Hwerncc4EJ>;ZN^4elR9#T(IFH6B_Ier{|*WyN;E1v>o;!w@cXQRWz!~Fx_eYX;-
zWLC3CXsDCbiB&6>YC<_7_z}tsic!!zDQjqDuxw#gAS`^0JZpyCv1`cSTRF+?;ML<+
zKC&L%pdvSq*eW!ar-j|V0-fTyQ%>Q=<1FFSi8u%CAZ4|z*jd)S?diBb6CX%=9D7}`
z8jAh+pm!c`8HbEbfo-@83zr6o^jOEsZ#9NeYI<BSIIl3O!`*Z|^dpUA96={jCM8iw
zyy@pC-VIDKv*@PAAuaj%LLK4K`Y8w-?(W1zVAvIf)1lbEjDsF>@JN4gQ^^?m3L?mR
z*(l_iE5Dd4@q&0EZBbm5cPcXcdq{Sk${=Eg=plkv>8=<1l1)T@D(4Va8^|{9s=%OL
zLbOC~OWIa0G=(D^2l2#Im2TUrVINo~2{U+v02((<!5c?qG;)Jay|x68cTvLAI{39m
z#Lta`{SM)ljDi*nyXJUBd_=-N*E?8?ErlhnjyGCT%)>=iaJTeK6GlBW0Jr-}b<)61
z?S?*xIx$&)ST4IdF@xn}Y#E&*HzpgW%Bhercogr4PDNOFrB+<RU`7Fe8~DWBnd3`Y
z6JE=1vQ3oi7Ojz@F5=-O_iQsY8n>lidr05{4}+HuThAWbn)#wlI#Cb~V@UV(Z|H7R
zX&3Tf0DiCIF=btM+uYsYuJi5&HZ0e<-Y5G5<**5EW5E1AhfvPCY_puuK<IEjV+l4-
z@MJJNpqoWo-jmh!TsGz&4xRqKLIMI;0YZ<%*!x!D7E6g)Ln>8>zoqt=*vv;yG-$w(
z#->9t^2S%(b<D+IFh4=7`{1PgIIN{K3wlzhRcKGMj^k28>k9O!4K!XO`))aOFYZbo
zolh$6ld8WPC&8<e7V5jpGjSM%Fb$mZ*o^Zs;%*IiCXS&<CXSeFK9Q{K8R99+K7#Bi
z%XVj}sW-G+s^F1xOZ*+_+?IVS!&{mrrhc2owQg1G<}}*0qtT)PE_Om>_iIOYJ>*+b
zbv94rncW4As1}IoG4AriqJ>R45=p_{bYj7~XO<c=7s553Y2f8-|2KQ@-W}zUtoi=k
z^(hMIwSa~ak`Nf<HVAXsX2v!iz}-D#+`UVs0&1+=R!IhWJm3BNo+tA5zV%9A_de^)
zIqOunQB__dGb1A-BO@Xs(}n~P6%k);3T+M+QkACA&9)FgUe!kAo#yA6-QVQ6?-sKM
z=v{Y<8L*R>kq+mnC-9ANhyx;ozypUSDOdBeMGynbzM&j1FmxOXo|EQu`<C4+a&L;R
zNQz&XQj9(#EX4KPw5rC%7Z=(Oq;R77@!_*?zkmA8<Da6>Uvx_uE5s&jtNw8}#V4(y
zG70&(*ynCoj$EomiF-9?X0PS7-K+82!e1_Yg=c7b1s6x+M_Th2r)xWFvo-Y9pf94#
z{yOG1AXoklZjKMO#xI}$@EAF4r4Qk~#*E?Fz1IAP&bN5Mra6m^sCJ>c@+PhQ8ou6$
zB0-mNKd}sv32pY*W*`NM`BSzJ{2vA?PZXm#8w-|?3VLGIE{-^BAjNRD!>-)S2h)^Y
zmxpF$ef;N3<M>}eE;}{v5J)*SkYRtOp^T=+a(oHj%}i_VVD8^Q_aLjB%Z?^7;EU1G
z^z|M$8p6i2kt2=ZG;7gA<{x-$y%4ZVe2|^_{B^jI?_G!&ZQ$7iu=%pO@ZaBA5TX{R
z`GZn`I&A^e+$VeURHhd98f10uUBI20uqa$M*m=E&9f3izn`klZZ99uSCS@t{T`B*r
zl!q}pE6TI&q%0-E%U2r^gOALpa@=hLPM_=4M#TPI=UuAPZHH!d7)R~8f5nr3fYYzq
zP5+8K^-n+BF2(PZpDMS_JD=vi7zJ;uXspc(sf@~aiP6;NmFMaeJ#F*K7Di&UQMqm2
z`Kf;D{Tb7zj&@O-Mnn0E+1fFc@1ixMr_(^&*^H}(L^OR$?ljU4z;)Voel+t3jhFr>
zW_c|rt_X8I_|nee#Miyw%ip4ic*e}7h^omcuojD26!o5+g868NqAS)?CJ^rtN1$^d
zc!xdq=RmdZweFry_a=70P_Dei5b`H8Ob!R!eR_QumAEguzkD+}_~rD7I8G4-Yr5Rm
zQSu})Yjc|{CLjEAJl)?rd^52occP2NKwle3X6(L(?5*6VS;ws$Dha<BNCs{%HEk!=
zOC(@R?y<_hgq(o8jCyt5m(a#IK19*-`<NFDQi$qROWQVl+i%-TYXm0`9Zhlqg-J)`
z+Dmc$|I)pc##6@!;785`Yjkf^y?#Ww5myaXCt$ogn5xz^Q-fH`%)C=1HfL^F*~u>S
zl++$?-nx~d#;vC_ku`DX188EVJNUD=^I39D@|@`Aoal;7b>qsrDfg2P-bhLzK=a=G
z7oMm-O83IbB))tWO$x3XP}`<<t7SRPrH_vAN6C#MJPA34<}TH4<BlK7{8wl<j`tS_
zBJj(v)-PA+xu2<j-VW1uToG$ufAlHx;yvEW(fx7sN+$}@D^XeANOKf=C>|`EmZ3^^
z;wJX>P%IP_B(*|EJPh?C*!n*fLB{SZqE7fbo&CKS%Jqpy&_z+n7{t;1`1sIrE)?{C
z679HOrW}9!y;w=Z>!Bo4SMiYvH#6>$ZfY_=FOcycz6>M$lc$frdBlz(XBgY~aspxV
zx(RyXwNv6|7s6IQ|5iWYc0b{>E`&S%{LlLd=t8=E*x2ZT*r1o4PHyl3Z8w2_b`x&(
zK+w%@fzSF0bhKOI^DYRv7Ig}2g3WG1zn_~uY;N|uxd}SEAo~5>?4fhB-_1?%*#U90
z-_M&}bh6`gYrIGC)d8{BFEKkg?%-m13~9BElCaT9*q!!Z?k*S0<56)=pDl=)xbziW
zc8RqOh7B34uMzw!Uq#gRu_o%dlT+>t6xb3Rx_?aUq#^}yHvout+@oc@319bl0%*UV
z?-ECX3%B75MjPYj>nOg*&!LL)d49)98zTAmJO`>uZ9;!Ji8)o$&5esm(N}u07JU<*
znm(9ctoiLZ#I#;79zG`m+TR{O&(Qh%jglU|Y?59)r?WT4{Lymu=g|X|di3Jyi{}^f
zHQ#%hXfPoZT7cBF24>>7XR%Gtr1^INA<}3|KnR`Rp7&G$Y1xyk0(WARWpq81_eY=n
z?bqJEo6O(OaD$9sAqXSOLoRcp{Y4*?(kBN=-HNqN-pm@Bou|1#78)V0sY}m8{<l-2
z2(wu~l#s%cWL7Q`{V`=fnx0H?*F8L*zL}TYJKfy*n|)jna_&~C`xO6#Q>)GU5Vi`0
zr(B0Ag}Q)l6+n;QOOZU?%T3%aIS*u2Yg_-UWPN{p_y%!2*SS+No^bq@%6t;u;-?2q
zNR$}<=cVkUIpUt+%Zo8(mcD<@k^lIY1(8|C1LYnTATK`P?Xpj_k-aj4M<vr1{S5m_
zN&bF*Y-t+P*!bH+oL~=22cE!XWA6U)?cc^ftag8+&TeY@v803C$VNrqw>*oA^F6mV
z%j9lUM7_k+gc2^-6BR|fKOFpgfHP>$$Vx(}3D?R@n?K5pUKI9I_|LB`yOcXft%LQk
zt1aHV!R)omp$X+YO8VD}<9%dF9+vPb+L=#!>*B{|Vf-|(GFbSmC=JP{qj7g#*>KkF
zu=TOjq8l*NH7{G8+4@a$Tx+{RSRFl=a4b1rJ+F&5=SZr3zkx;Z{lQ8<Q+imF<yNHr
zj(wavn7@%|%^BkJxJdw}bwx;es1T}cV3^#t6Lv81zuw&1*tk1>xVM0!$I~MotUygH
zMiPEE^Id>YGzfii+djxq_3=&C_1*E)6AWWZ>#`8@mkVxhNud>ULi8hyIrzZDGkX{1
z7Mvdt-Nn6EYUc4@zJKIK(k-^h?Hv(SX=H;&zS0akj8lrB_4;%VQztV@5C}B_3>X<;
z<RC;WO&$rN2ra|`GzK)A^A=4EsI;Zfd$q02PFo!6(H_b`h~lEtR=2;O10!vULdxxP
z@d-Yl7%jfhRG!2a{RaIuvVFe6$*cn3?#9)V!sl<2qvbF#nE><5-02Kt{np)a_l?8O
zG=A1CyrsfSzh_PN@6v=_=v2Dht#s$^_{o$5oAsBoz3F0qyg%PRJpN!;5lw8kIXQBv
zmR9cRtuCC;?vB49SPDvF0qeAAb5|jR^_vg^1uIzLh=|#%Xte6JY0@T)3h48@FiA74
z@snrIUw%FQYjRu9bZ%2xEzb&hphjd>6=7fhq-HC36jf}lz_7PCdsrfey38{7jQRCd
z7<o7NXSj5o!8X#mTjeP58e6R<raah-|AvfkF}{b|!?uw6@}`{%FtW%BY5;L=J8+aZ
z`9d%Tp!tx$zdYU^vsJ9ipvjNqgOozbomp7ROG@xk1GP2-=z#uAAtv}hmPths0-XM}
zyCE)0WaWK%#Qvo)b{R@7?DCJD8<z`?PmfMU#5{M9o?Gj8wiF8-i);D38Y8oSA<F4G
z)#35tL@pM~pGQdEwbuH_YZ-O>`^5f18yNbXq%oAt9{Rz^2BQuVk7DNy0bxwcpjes{
zN6Cw5jOzegNAlnly8+VqgHm(OEh_%S$Dyb)Uq1Nio5z#Ke|!A!hnJ5>>6Y%JXOCYb
z*H1~>i2KRU$wox(%dnAn%QHk#9*U`~&BAF4X%kPE<9-s4E%uY7o$6J@!H2%i2}(ZR
z*r^?zEf-^_-f9x1%9>C?B2^+ZRfG-RVdY0h$d)U(>L*(r#9(7#Q-G7oakdyz`(YCr
z2r=S#`fehlYi^^dn7%R&JAl_`$3{)xMyZq{1U3~KFgId>#cr&w(ux0i(GLx$@tHuh
zv2ngRuS0ebZ6JTV8<qfSo3M#9s*4g+;}N+q;{#q8ccYqXi=r_1nShQ2>YhkjOnLt?
zM_5G!^btt3lH9aaY?&E_n$4yrUcAs`>il+`T-<Uh(_maR!#hLXbwL}Nw)9omJX;7s
zSsL;g$g9MR^(=72Pi^Xle^gD#d1|JUr-Wu2ji>ZpRKin>qTZP8XfTW&H{_e8sS_mR
zPMn1b>x66Z0emF%ey_NYh4kq2s(S40VtG&Dj$6%!(&T;APgB>{xymNBn#!PiuDXmH
zq!h-$_sLs?xlY0f0zoGMEJ2@`?<bV!`12uCXEQcDIv|%yRB9#<Sh$nh<=)|p=Z^PB
zYE_M>hBoW+n=c+D&IM+I%9IqJdKtbSrL^7YR7E(D4?jB~zWW}sP^F{>f``@gxRh1*
zD4Mb~nVvX726H)GrA)(GtK=CE84>D}@EFb?ZZ-T{w0>iRhSh0vJ9v`Xad)@#+cC)s
zRi1dttzA*OvFSJC5)JETI+O^U`nsJvuC<R*A)}(fK!+b`R@(74M4gB3NeSb9%L|p=
z{#J*)wEH|2!p;}Z@1IO}xF3%bJP{akqSAaroVHgJX$H*yQ7>LrTakQ9h?Pek|N4jH
zNl!L~rZzL*;0rpnJi?(Gw^b~T=;;ad%tPD|4+yqoB##Hg&b1U(&4m4meGIC_<QOuc
zq%&a_RbYx%;wE!kYkcJ92bamaIwJab_~Yd~cUXN&q194Ya^j~Cq$K~R2rmv$x!oJV
zwh-np-hUMO>~|?Y*5s!>><8*naqvOr#Jv!SH2dDlbZhSrsH2}n7(lhHWQpW<bhK~z
zfXntPjC#0#nBwL8=}z@MHgOB(l<LOA#g%K~ahAOwKDf#M5BxpV%|ykQ=gS3KFh?yB
ziI><2ZK*B1*DXFFsQwwu-19$iGk=*{S>UR%z~8y0yK(u!6m_ZX6}k=y%yQ?_@QXJq
zD%CalQ+BGhzqOX)^GanccN>#AX5{hw2xsh|wT@q~*VUyuU%11*#R(2C`VWCoJXmo;
ze$63v_x`ZA>K~|+eO2?!RgA|Z)`iL9#S5IrT73f=J2P*R`@19zNvycD+h^U|XtKaU
zGWLaLjPNLRh!`nRIus_HP&U~DA}N<~LD{>P{o>jxxaxZ>KeH8(yvb%AHU0$U6Rlp`
zP)=#sT)a6_2$GhfByeV@JJOKA<i(yx>j5I)w+P|Ya}{)vxB(AL3WkhE&pL&-UHIs9
z`Ib`Q=pI<>mFm`t(WL-nJX-PKD~`$+(c3CQrj`?KP4Cc~Ycg>D?N+`<!21sL&4doU
zSrDB+VpY1+(W8}4%Q>^trf!+!Mmw-kp12d;7ISpD?GY@wm!%$Xeyc<k3aUbFSF{o8
zNkggP{Due!)8EVHtYWB4VW*O|zV^*In6i~~<wZUf@Ek;nJ&UWH;#|F=3IEWee8I?@
zd}#o}rL&p!xX^)p9nh+jL*(~>Cx_P99ZU?3$GWde=nmKbkIq9Ev(Qs|al66agaY&D
zdb^>6wKJey9)c5#GqyyZ48mcsj@}&goO=*wc7CwAxaQ*KI!rDE_=d~DvtxIveCnf@
zAJ&93q0>tYhld*%&99B-6}haU%yB)XCQFlL;R}A5IRVp_xSYALTA7412R1;?|K?Ri
zTB&7l#1W^^=GxSW-L^?+N>D=}{Tf%T=hSq%ipOrkIGA2&$h)*bs!j2yDheq1H;4is
z!P+YIvTDxT!|N~-%FL5D*)KNP5+qLZ<sKmRr#uLOhIYEQkIxE=3Uh~_mbM3tg8ItQ
z3z>}d`v0MQzj(aMQ`VH%u7cmV`FCixAp-4^gA0|F;t9%<U|*i{Nw^WEv?`Z~$(Sk>
zI^n$)&Q-WF+l3%@h|V3pf?}?c%RK9r#(b=kyzF1l0r5xiiK1L9FPX<R@)Yt@2r=jz
zEpKKiF@&+Q<%!xk_&j|=v{$ZZz1H;}Oj9y=;E_gVk}4rUN>Ic?m^kLBE}4*?=}t2h
zDmtGY<HirDw5P@Xg!yZU;C6g30KT3(kcv*95-}uIbFARL;~VUIacVG6r3d|9gN%B2
zQk}!F*R=X(?{EjSCox*0rsr;`x9#O4b*;}2l+XXu?7%8f=JVYBNlZ$SVkNbfAC`tG
z^Km)1C*sN=5f``OL}dmQrnt%9A29jgDV<3{ta(D#JNl$;quu21Uu9*B3gzuKLVY#0
zkx@g#_vj)Htc`*$hSmangczZ@$?CI40YlZc<m23QBFm<|wuQFJlUzl;ZBE>wRBHfq
zbXO{z`v36aYLCBefySoY(^X}(euY3<#@0dj(+oqCTRT?C9~!h#v&RcYUG3z`$-Z3t
zYwLyavyf2J<O*qdD}YZWm&w&LRz0L?781j#1L#o^hfhk$ya7(7!iHfudex}k^Ee$z
z_a><{o%%~0z;-m|0oE2Uq6mf*VZ6G`DBqv;0llS(|C%o7HnZRKAIh-CsGYg24{D)&
zBR!3EPv_4_hl0Pe%1z`2H>SQ8SXGm4hq6uS)?vBl3B$Q?dTczk-65&(&jN0>Tm#%H
zzuyS_zlkIs9U{X>D--mcy=2*g?B#4-#E1FG+DKs^TBUf4xaTWV-$Bt29Zn?b>2sz&
z<+RmbAGmGH&{~rqsAK*~J)b;$@sxImsg)D{{(a}ycb#8P#@BIcsEhhKeJcMoIS*=T
z1NkwvoARprFaI7K6cWMoUxHl5`1;^C_Oa9iu>)06)W-Jl_{GD?Gfk0Yl&w29hKw?1
z9|WTk$#326W<8EQ+tP~VvxcMu^wv&+dQ<NOTOR)U*|(1?Jz!Ksx?B2LZmEqvo3p<R
zG<`EYehj@o{-##XB_GvJ-rUM9VX<B<`M8$c@SWb=nyAm~uly4-XLn3xK$rtHpp2$8
zTsuS<Rl4@n&3<-P%O;VPRtKp`0p@tv)CBcv{P*p<T|#eueU)aMQV-iwk4P_s@pmnQ
z`b$eni-J1;*4FvDQwmz51Z+N+{V#3V|Jo`0O@;U^##I@uGuheGW*@=Ns?eqvEb|Qc
zSqu654&?vV`SrZkd2u(_e%aRkp_cedDe>3x?QiAVf4`f!WXQj9G|M3WM+1^6uP|Sg
z`ahL#e=pzuahG%FmDtdvywMIXF3K5$Khku^PE33UiI8dMlWn5@q7J>NzX!N*<fmO}
zl&#n|KeIJE>1iDNhqcTrn>qA`m;LAb)B<%A?am&embIiDFi`Vggx?QmOjrCYC_T>I
zcXH{k&04frc{^T*4MI!GBkQXdYYyMMbNJ?T>H0f+W4)4)mtmstWKE%?I1@-zNd}xL
z_bFAHR+XC8zgAE(is`Iq!OsiI>#^DNnibw?G^9Su*1IeM3cVHCOiycAPvLN@gi_{@
zhnVaPljpjC7~$<`uZSFwVE1(Y2&$iLr-aK+$W96R!3{4RpE^l8;B`~fHHDu^c5Z8U
z!n6lwK~sA3r_p1Td#FND^>lEPt-FEEb96)Uka$}7Y^U0+X2k_YUwK0naar~g!Eqoq
zsHm2Q0R+DKe42XX8BO3l_~b)1PY^f%WFK))VYESt;V*;AN-L4;AR#5q)}P4ONTh86
zq^j?jno@c*0hazXIenLb|DF-Vboe~qs0d1Paj+>r)mIBlSCkYCB5?>g_@P40ucAg|
z3Y8LZ2G)`lD8`!HEwwiC_)JCRmkG!%M>;F>0JV9zJLM{(spPcscK*KT2Q`6mM=2fm
z7tbki0V94+bNzkyG$|ZKj;agoT89_?jt-|GYnN3asbd@`f_34~#<(f*E*H@yEv{_(
zv)Pu|YfEt1)Ss=k#QU}c;Vk^Q)0RMu79DZCik&FZ^kc>uL*|CK_<)jT0}J`9@z3~v
zb0h8@uO?vJ4>QR4?&NC6U*Yv)j`t?cp|6+s^md{T6}a8nHq&Ox*J?O5Zd$BVh-b&j
zt&AIP1HZ1rpHErBAva8R@G|&0yIXZj>=67!-5RWt6uI33=hv`-idhZ)uwUx4Y0Ot7
zCF)7RW;60D8G&u@Ldz43CLAJ&h@C7wcQDWdKvMpBv^T}w93_pYrtK5-_WA&O39)t#
zxU=mI)=q0)Kh-AC?^D1K>GDuVi-VmG_=sfaIDeDbC^%}ry!!97du}*|KC3C7J=Ab!
zYoQo08`e-3JNwsLcxMfVz3R<dd*d-#9LpE~oD=?CoGSq8ZRk1*p;Vn^6E+8|<>q?~
z*y>01n*Ax=QFc-|H%8o>2)xn9HusS2puN)Vu8U4f)wW;}#c!3eHHg*JAnFxb7ityx
zdbNTBRP`6ZY^Tu4{#4s4zQhBR;`J!E2-LT%OrtfU(rgX2WZ3eprGye=T20pf3_WpB
z^p~@RkL2Oz(r-!(9uqK?C$k;*CM;OAh3e6)A>+x*VcY)(xoxoZJ%9Gs*Z{A|9U;jv
zpWaA{DwBJkaS2T_B1d|SK6w0b@1JSlU1I4!*o$mL5}FjGv977|9;hFf9CNv?K0x;h
z*Md22B-r8w2`jiEc_I=d%Yw(59|u=1|KeO=)$zss>6^uDWAo<4(e2&a8@E5Z{rT;i
zH#cr>ay$(2)m3nhCA^1QN**g%a~DK!l5jZmd8Kh2>fJ6|QW;nZz&21=WmEW1uQrR6
z1Ld6b3P&>p!sOq&1Fr3!Be5w=V|d3Zar5mdCY_4fWXtW~eQRB_1BQqn6GPFeRbqvE
zn_pX2?HZq3olF(oteGlXYwBULCR4LlGk0p{w39Kf8JpaCDdV$0!v$P6nzUP##cvTd
zQ_Be&X*Y55FLie#ttM>9saU77+1}|cp8a0C4Tn!}t=V1@>nH7DUN?xDQs-;x^ItvZ
zehSvpfm~T~zKvIw50BV4Oqsf-q7{ilgo37E1@)Pt>5IC8A@zWNY*>weIkGyG-n#4e
zQ{UZny`OhRCHYK2x@DvmAY;Auo4zkt#ChYA4^;9Ii1qoY3_6A$pd;{sF=VN^G<7AO
z>M%P9KBcQGj(}5nr3aqw_88$i7TY1FB&$17^t3&`-Oqv;u8kAx%t&sw83Zj2(@jJ#
z%!fHh9VekQY`<r9R12hV&yY{!k_wI%EGN9vbp_3T@Wzm@`r1-qaqxyeOm}DU%3fRh
zcW#OC$Q2(P5A@NOoLy2QAqsHoi;hBC`Un93UB1kJK)QVS-~CzRTZW=s68VRe_|DH3
zh~WJDzmM1MULIe*t0HcQ#0rGkYR*YYj!zE=;QxK?^4+z|U##&>A2nKl)NksL{!@v5
zPZE&Jch#VqQHLlOP13#imQvLzKK-7677G45Ict~og^xy0C4J(XevnEw#q>$n=~%In
zofD2<YL#BrRT!%21Y{S=%&c_+!seJBXc()Qq)=b>TKeWA(<RS{BV>DSkuGm6_xb6_
zmNuQjNV+YNFW;PFnp<g&#;ol!cv^kEcyoFjci6b5c}i1WWnF;bSi#1S`kw~S838}k
zb#Nft;dorS4k$R37SGy_@q$05(4#RAMUBa&D#e$IUyL?GSrPAu83k&TXYOZMSMrM7
zj3u;tX?#mpIrT}pj1$C~<N1G_5;64yeSC%8=JoV+?<D(qVNIHgle6cJFAB?`3$FRI
zoT4IL<Lv0Pf?!NumOG~l-tQuEMD##%zJ&a%qs~6b-pcX8m~buppBGErwWFQ&^^JJX
zUFYfv=U!z@n7xU%pDr8=T%w5aMdngBmvyp$W`cLFw#h!_Q;fxDhggi?qyyzTU}Q%g
zd1Ff(z75MA;Fj#%d0io#%%VvKY{As}LPa0)_Ad4o0_jX|a2G4t1_)4I5)Iv-2{1Qr
zo7r*gN{3qW)sr327cfqCPI0>4;n3`F+KcR;TENC`k-aiXkjvH6!eP+iK4A+N;X|BU
zkM@`JU5!IC_7D0Kzv?`rL=ycH8u<9IQ%@I++Iph2;i_tgWqESQZ6?%H+BtyN^y6B>
zSSQirEGi7|gzAVy+I>2bdJm;_VW|vVqsh}=lie{O2nUKgBkMLA5(;w^m!~#ou`kX2
z2a+yl8eYiZu90H=U&?Z2O<L*^pPZeX8$-~n=|g4mVI3ly)RG!mj%8g_6)EY_vr$c0
z%IjFZj*uN6*O?w4Pd_NYOL);io?j}j^XV3p+upDF{0gtVfI`WNF=_0)<T{n}k1mj_
zDGFl$T~C){C{4GvG0?1jUTMJ7J+X%ms3&;xV0V09VS!8(ZI8siSL?f>^x&?ADc4&q
z=M)#VaD$BS*SLLmH_xCt;>*PxVPsvUNaF7a^JxWNZD!)*Q`13!cm(2R|C7d$FXvfP
zF*y8@NBG4^VHl8}GWS1S?%<_LwET%A({z#ww!WMZxa?%HkFQaAMRSpq_&cY2KTmi?
zpx(?oee~?1??LDqczm>#{IWp%qrF|p+Ih8gz?biPIp(&*{Qzpr+k_F_?b}$xPjYA2
z4|>9OEgqsU2M3`&gVfKnz)qe&dl|6TB(7SNHx@fhWSnuaZN{Exe;bCe#E+ekJB{|-
zM#Wus!f-L<V2v{uTb%l<azV2lpec^8A3fn*=6lZo!gotP^Oq-=ahG=HtrUK@$$WL0
zix<xPY&G*&LUBPz+*sdyy#n^eW!<oL+qM_n30qX#Gv0N%MyQwv-#wBT(B{<hmY8{i
zkAsBv7EQ^%rLM&8f~!vca8lZ{UvObCp_!3GDO$(|*}k>PHr4$=b%(NGVXV}HFiX8D
zNZtKq_KRJqk?P0g0=cbBKX_B$J)HRARYa*1%byNP$3ZUc?ZlT5YP11MK9B|;g44j7
z557P!DQs~D=XxXUR~A+E&pkOrHx-y^={KAjLd8gKyivU^m%qz(l~>@XBT3Wc7(yo4
z!?&|V8cK5J1z1fi%&8_#<gBYvVErIUTrY!G0~Or4x#&!S@br+?G(Tf0?Kkb`ZtX6X
zKiA|sl;vBtLC~lt?PPztJ3gZSF0JlIpxxk6cCs&E1OoMwEOFSUuwUzLyy|iLg9*a3
z1_S5PZzgEnf`r{;0y<>8dhN0ah7~B?A=U^z04|OWsHAkRPvmg5H>XxL%5gI7r+BV*
zx6M4_p}#3EKl{lvnukmD@Yu{xKL?1-1f}k;H1i6K=mm?t1;*YlqnVJG8S`>yrt1qU
zqi#F4#K$kp6e<d*zkePIR>nW-5rF9p{sL#|=4cL-5{L6<9FRSfVna#VYnI{9w!<Sm
z%**chqU#9&>~>`^P>VF3Y)xM(-$zbdHi)e<zOTC&IBK2l^yf9z*oLN9xoT$A%yQE^
z5o0Rsm2Qew2U+WvY3{N)f2TtE(L)xmpkExn-6gn1^I`P7oC~2JPtzn)V#5bDLJmBU
zPBreHdDl$$^VUYe*0lln7WB%(?d;@S^COf#GF2yaQxO`NrcR<2$7P?lR2G|pg_7P%
z6>hy)r4Q55vaH%QPc;Jyxvnf&`rvTdG~0#6cGpMFAZ9k3c7AyAm7DoJ_^~p;|9D`y
zI>#&5ow?E2PE&-CSQ~+hB8i^8m)Kx2IAyn(Z5i^BEmvkO&Nn**Hq}m(*($`DI00fw
zmW2E=0i70C{~OQ1Yu#N_eD?aOViQyp7xO1NA;=b@t-<Dx<Xxa6yw8>0$Ql)dD(Tg3
z4qy@z9lDgJlBiVD6~2XsTTqtftPXi4-;#BXxV?{A(zl1ZPaffob3zneIh9CXWcfrF
zbA2l4KwIA$B4H*?duS5xt*otbO_tZv{(y}CLed+ggbodb0kcxBn-<Zz?P?O=lGLOQ
zYA@0q_Wn}p*4m#Q|18fOt(hcBN1ZO0Y%0-G**#6?)@ro7DEbZG0Zo;>c7ItMo-PTB
zw2L$O>;&d1_{$Ja^UHWEyjg^<)3L*kq-LRz9dvzO9-+haa={@x-yUuH+I)RAeyA8m
za9?qRkYaoomu*?-Um@<1^<A-p*_Xb7##an&e%$=mLi-ZeDiMcdDaiE<#4$tBlm6t{
zRSaG20ZeaQmgF+yo^X##RtRl?#hbs=34+?jp{Z$CD-KNVe?YX{du@?C6}oqn3af}D
z6zv?NxbT-Q3uJfy*i$YNCr+>G&`%|JpG%|hF(~L4#IxX0X6~asIH42>MP4OR2<}*K
z57E*wjV9-}y0w&C5ENq!i^^;d4UY$iHX-+kugwSwTk8xx|F8+Qunk1Yv*;ifytV<u
z2;~(pk|_w9UlBzkttb8zk!?Mxgo8eEZ}?m3f@$OF1UBT5<ArtRA6zA&DQ^5URaM#W
zCYJB0c3GlF3q&YdX)=RIT+c_$vyGf8ol2U-TE@v~LU9%4BjDuNUUc7o;G8|a^7xyt
z9{7DCRIgqPOxsz<Q(A>}oF0WTeuYuxJ%)^(`Ka*29{MHj#v1w#hUE+0<A;x)Kl}DV
zFi8)H<>R!JpYWZxEp`|m#ADO&^897O_39KVDm|;gENLHq6iSAd%3dY^jZb78dDYvb
z*jepj>}F-6im6_dj4{O&ueLbI6THTo1tUT`cgfS3lq~RRvzKJ($aT25nG`VGg;u|`
zM4`*Q0SwgTd)De*(dwinpBn9r-WX!?#TU;Qy(WmcyBU@VtQ^w=P71u;bnG|KH&S>e
zh~UR{qG|GWiz!cDx-Y^MF(*t5qhT*l81cRF6m33{`M5qISCR~IXOH*0^=TpA+ydkv
zM0S<=n`1>7z{zTlE#^zk4yTT%?+(5>o@;yPf!q8I;0&R3PYOwYI^Em&-SBqw7KuJB
zJc0Yf;i`U5#mBU0y=Tpx)N(%6ae1AXWwM99z}bHC`1$i^&&O9B$?SlLuju|ScM4{e
zA@EGEC`8jI9Sh<p&uIe1j6FQqK7Mu}lr`Dlr9DlWoW%EnW<a6OloUZM@W=V@7Myet
zyZC!B_EmcAmk=!XaMJ;2ZCBm5fj^+*Bfx%vI(%)so)1B@I0RWaniF%+^WRq(Dwk;0
zvf(_Zr@v%hy)1KMr+LW`53yi!R*`Rlc2vIl%)U0-9_I*UYk2Bfrcbhc2$!l%^x=q6
z;Og;pyf*4CC7LylT+8s;HMG%M30X1do{h3bgD}c&a&3$+htGhy_BN>L_9q6_Z&e$C
z$;7-M?^I6dP}BIkXD@YlT%u2qu0WYYL0o%HLiTRZMhCSSl3ivCV9X{xRA14Ht5wKe
zAzriIPW}8)F3cz_pf|&=mUU3CcNL{Uuf^(HNX_YTI`+-xp)L+j#2p@OaZr_4=sk+R
z{fAwgdTA&2j_a0-%Ks4STFF3i8^}0b{(}44Kt{5I_TWeXF+KT*GJ83)1^)vJZ7(^r
zivKvfug;OiYxMTgcz1n$*RP2|DBuWv$+IW_c=YlgUq62E=<#!vNFO{ix+N^W|Kq!7
zj~+Lr2<6c&h1$7a=4QXl_s^ekL9ev5)zAN~ll^%=TNjMV6c>wZOk<rMy?JvjS-zvR
zXI;Cs{wu}Pqzx1&hr1HO+ugAsSXS$};~|F?QWMZ1H!XSMtzv~yBubl2PS}pd5kb|e
z$3l?RFCKlfp_zn})P>@w3nF>&k-GjK6&Ovf=`?V+#)hSB?up>8m*-J`@0Q{Xv1`N<
z&D32u_z7FHC?(bFSMgftRAC9|ge@7=3u>j6?p&0nI`xF(ep88{DR)MDv7%Pms|&4D
zFD<i*4{_m20y!IO<VcZgcuKy{n32{53e=(;t1Qj7)tlw2R#!j_Hncg$>K$ULJz~ZW
zzyG21uaAzr?8~6c8VBLtY~ThKmvv72a1)w6=b04F2EFlF7d9NUf?k=5H1(^ndkqAo
z(t68;!lzVZxk~@K)r3<B@t|lwYRjuIEv`6)brx3~ng_9kd0&^B&TQy3?Qw{HnMk~Z
z&u&G$;tQ|hmRBV9Vdvr#bfnp-geXGD5q2<9^3~D$9}*FyzkeA2fs2}_`}-fb_xDDI
zMmRRdMX6LA$Sl8SDV{>Chq%?Lv!nGtt`v>{d)v;I9@baNqdlwo<gBVMst#%+Zf>}}
zMBSJgc(Udty!j~V_R;VVdrr!%1DrWSF({5`x8cbtap{}EdZ2&wQ9A&)o;G>puf{f)
z1#OzZLa&QblYYuuHaW=8Y$j7|BTG%S)l^l3*<}?YKK(J0uHwEE>{{ML@|qA;w4ErB
zl5&d0jHef?oq&9}A!$4u;*wYKb;M6a?b;TzK=3F<>`bGE5)}N53?=y+od=~UQlOk3
zXd@vEf7lqMi<LEvaq*lVIA<jgP5|4N2UmzpV~d%q`*vDbjOefP1<taf0_`K#P)qL#
ziwo!&T0;eutn~5_i<r+^z&4+a6fi5cH@95p+*@)R7RXy3VsONd7$Lo_ymOi3XW0g$
zzOybbjxUL3a0{Q<&*h>$gOV9WM%Q$xm4%w%Jj7zAQYa~X$WL>ku++pO)PFdJb*9Ru
zSWQT932Sm1KY>tKYAOfNngtz@nj&viluN+jL`ru&bTaDd1nJjJd0r1%@SKma%}7rs
z2--yWBQrEhla&@e_+q8k)A~n0lxo4=$J5PHF)wJX<)|inE_R!WZcNn{<LOP25A6(p
zuE@DT@m}5%Uolm4CA`9js%?6YNO{0eiwpt96=A{w9+FYeL@d8vi9a6csF!DMbdAHx
z>iV|2!su8b<$~P~W&yc1o|qoH>n0Q*9ofrs9)5pGKk00o4j?D3jWY<)%Gxu?FYXsL
zgr})&cmX->PqBtZtBwYI!G(_`GmZ;8szZ?+>Cv@P;t!caz}8xUGikPCh>7!Q+t$|#
z(!<e^SKvO<D{UdPdfSejt=4pBLNsPkqF0WP|Df$gd`mjp#3U3?_)V<gb5R&4H5g9F
z3c*;9-hNmHsxmiL$_TZ4mq)No_&zo2sz3i(b|C}NhzrIvCCC=v#`^?XSCZ%~p1Sb2
zPrsWyfAH<(#nb=sIILlvlnKKi+$mSMf>XrkxTCh4w*C$-(#b(DA`r=&(AbGjo6Yvl
zE=9z~t;<g+cvjTiklMTQ?X}kPhBDkx@$%O?dcU1`aN$iI4A}nR!r<X~^a^3>NWRm@
z9|9ZXbkWl3l$?FDR^Q8|{F9L20pt<mHtV<Huf)wYV)4&s@GPe_NjU{=;SOR>{+WEo
z)3rCLD`5RIj2kHUuE;P5&*W>?;fKP6J?=)7X?@96GqW6Tuv*3iR14w93iv0~=)@1_
z)|Gu^2Edvb<UI(L`4?IOUE*&xOS)!#^W2h!j)%5C$o^GVf4jR<?$8f9{iX`@14fEM
zG0~?tRsej35&;E%N!JE{X47M-d(tl3Yg}XYGUoi3OY}O;iqpMUy^Yj%;^}uUUOxEl
z;bUCRpFe%Tdj!%0Gc%*r4A+l~x2u`NX|Uho@-?=tf$R_I+U;tVVmhp*LPQXklvf&c
zZ5qus*Pg?~mV}Ro4_-d}n(aMtq%g+RqkOF!D*d*nza3gz8+Z+H!fEID<uX7zhZ2Mw
zkE8j8P_RkG7gmK@YP%UAA}rSi%)Y%Smh<_~tgLuP*Ukp<)&vHnzy0lRxNyyn-%i=&
z5fAX;)3Z3T_sfVSk2ObT-TS~^G}?Rbmwa<?6bxN`aX+td&>#v)x!LH%OYqj5inyLC
z_WF8ygBZ`j>jX__ni#tL#Vu4NSeN|Q!O4>|0Wg``riSkZU^-3nn&D+Y;wvB^*EUm?
z!BgoMXzMu7M>87nYbb*kd`0}1(ja&oCC!grHp*-zrp;5}%`nXOn<Bm-s@8g#z?vF2
z69`+0kEC~sh*syjcXTAhB~X8_T}V<V?;>2tsO8(B(CZQQT0><KM)syB?YJ`|rZdgT
zq|fS`k&!Q9-)KkMCFno7lb_J-bRR+^Q*gx<%I^2<d<@5s0+_?TSrP!h$UJAU<yiG$
zEwOMBevNxmo?N*<k~8e>n|HR722v>DT#j{y!<(bNC7KnlvGa%PbvfnwxZzUY{P0*V
zXi=FpK9D7goEYhFW{4asd3ypH>hiNH>W=tIz1>5_EI`r78;qr2@_^}etj_!yd8^5~
zUOAkq=mG<*J1sRB)GyQHh2HxKwIoJD*qHl>)SydLmj-ITU7TFf5y&onfnOAU_Ffq%
zorHmKvR_9>Srp)$2q({;OdetT95p)c@%Im&zkK@g>9g-9Palnl^HnPR<=HnAWlp|%
z_ArO5*x0#~>=OGs$M<~wiw6l|lcO7oZz_X@GE6e^If6AG&qp`jHF*bIThJl9mM-(d
z6Bi(-TRbcu<)X_Cz~|1~;I!f<O(T{L@4*bEY#7Qig;_y<PPXRZob1_$y}?}Wkq<SA
z*nM_`$~?0<WxBD9)@F=BD|tB;#IKexnKbX1R74wDk|$y-Mm5KyfcBr?U7PMmmNc}K
zO}N=>KJIz%W%D3@;~E>V{=8ji4+6LG;8R-TD;y`p5qLh5yP%{!jqTbnzLcWp)Gsau
z?3`du2NP1A?skX(uG=J)JKa|s>G%}=`7#bpamxDW?l}ama~AO?2wp%Q3I}vQxs!~E
zm9N%zqph@!|Ar37CLSQL@Os#}$EFevizwI3CFC=Y+gltZDg(olOnw(gM?UUYZGw}H
z5@ZE&)!5G3{Z4}_6?8L!pQ)_czp_@zN+BxhFKC30GW431R-fMkRP*c?%=k+Fc!p_b
zceQq1py@@yUhSHHJ_L3DJP67^9|9{c2C*`N=mYs&8y+6TVz-Qc5C_~;J)>sk7ODP9
z+d2Qd`ep0`*v|~-y!vJ2XVllo&**+oO=3&g4Ao42Cm%&3yX7z$1d*G0fr=G0Bsk7*
z!I(o`S<_MSs@x8D=5G+~943b6CLqM^@t@_5b8rvkXIKi}pTx@?5VBRt;aDNMN31$Y
zB5`sPVNKVycHTMZLA*Y}$YB(yC*@DuRAt3@b+aZbJPBl*>+HVe$Q0U_lo~fNbB#gH
zCp%H?bUMaZq=l)}hQy*M=>)Sce-rD))LOXC!Qq5`mYWIUF>-?_SEL9Bq@zI0L4fg&
zAI7eCp492|)-CCsg~y|r-Zq5txW*=0uy85Bl`taCO~0X<e=k;y78CXO5ens7%%ZhK
z&WOyWtEHSG5uQ`7U*(SAu6#PTB$_JCS8kaeOQqNUbgG6Csvv^vSV*_tj1x+XA7Q=8
zxjMpSo(Ke4G>`IsYOr7PEJ30DGVXJYd%?BRqy_FvL)~Q=8^1H#&eh)B>z4O2c57ab
zlVQ0#2<g(QK+ardT4VEGZ(c)NAKyY-$}2`6`4GQ6xh!2BEsV95&UYcy3UyG4q|P8#
z3?;Sb(D>Cr1)I<uRBHWGKEY@oZVohUrEDv8L!PeALMuZ^JM`nPo^vx(g=4gx38udr
z*TR0F>w1UiJ!FxMgGQ;NSF;A|k8-T|wyVA@)pRZ?m3Z+ro>npIFjK9zjNm8sc(W)W
zrJU%aG^=mZ{iWmzn1s`lXOvqCI%h2;F*G=SNci_FBdBEu=SC)^bZ_KJhE%KMnFkZG
z4l|5)duiE6fe{7HgA_g0cFC2JJ`>X9500w?vHobeV4;TImop%m6>0{2hoLhAbV5y-
zh%Slk#Jv7G+%*7+;eoS6)~?60?NWLDolXO#iSatGGkKwR0Q5DK9hPuz$qIRE9H0sF
zwM5hB`;6R6;7ZGfI>h^&+iR8bt>JW|D`!$^s4Gk00rP}F07gBKa2~&szOtu`_^o_P
zb8RqQC#ALqk#>;aIR6S0JEM)?z|qct@Tu&L>Yv8p)Q&#+7H*l#uoA%l;~tI4EsA#j
z9l)d_hRM)qj0OvCS!_l0M`@%V5#s*_R%;gmEyiH7XLH^#1A2v3`3^f;mlH!-;<G<b
zKiuzb$#KNPU+~eh7mX$`ZYCf|lHXsw=L!N`tQi&&&J=2&$c<j7fI*F3l4n<TH>CCO
z9sEACH#l&dRb$N}2WN@5(#{5p_>6Y0joO&W>F`>CUqZ+yj_u?kZV_ieh^r<QT`?cE
z^#S&rT}HyEr4i!^bR)|aYd`T=(}Jm@H`g3MCX40a=eKXKJ6v1Dh7vDf#&v(<*SP17
zl)0`)(SL&)L8UwT124!{g%GEU**2owmr3`)%Dg2z$HPaCyM*fK_{)**{_2Rv-XNfi
ztr=@MmPpk|U?A@J3&qwxR_s;3HT(5-1j`s<F@Y5(^X*s9?Wh&^oaDIHBlFNc{=bf*
z&!%F_)CkIhw3az!Lgk=%Vqs!S4>u?f#K32$vTX}xzQkgf=rcb<5U!5Sv{BfC<85R2
zlv^1hl5ovy#kNjksezE-(kQRCmY$W>rSP~t)mlL8_O%DZD<QRv@=or{S4ZvU;Po0D
zy3@f9>=Zc2tH8pv)q4^CvaX1N-C%F2Uo7#|Y%RIEcJgTvCmDfJJjcn2?nERgvOEb=
z39S}t(Tn3hyVd3FcyV-cFS!)N8?R;5HhBsFdR;k@xvJfxZpJv$sV|tJcmO6$+ETD4
zEL=%)U%^iF%+DAXsOg%xM1q4|hrX|h&<vnck1lP}rQg`-rj)&^SFmv7Y&6KVFQL)(
z<kTin+|x08dwdjZ%%MeB<_sgNuI-A?OO@2W#wP~{2Xv8@?(VCjquHxGeQQjgwa@tl
z!0vq1nUq6;T)M0v^L@(XHPD{LnGxaW<DWDF&-wGaslN%s^ihKzx)EFfw*XAIEfmP1
zUNNk7R==%4u~uV+x>qZblIp(Z`U#@Vfhad9B#@Jdw(KQx^7^Dn8iMRbQX87XG-YuY
z*kJ(aMIZI4hjk83hsouURQcHfOr*fAfVZ-pWH+MGz;q+T$w2})a&}$K(D>ok&%bwd
z|C}FFB6w7fCO&CK8TP+2k%@aHbrw_DZupJJTF#tie;o6A;t{jtu(%}auj9a{@1v5C
zo+EO>+4i`Eov3HlQdHbH^tc&vDt*0jpP(3@m<zdtsYNdpVrbpppNf3kUa21MKo0d&
zgwQV09%KWJ=q5nq0{#JECGiAA@2v$qpK%!88~-sGk6293yr8W(OZkK?YR<=(L>WYb
zZ?tj=tAS*ToYw5%#5_NSo6Z{vQ(B!&qf8Vow{T^q&v8^G=y})$p;FTnFxCE*Pby-N
zDdJ+h+zr4+P0;UWkvr$<37aH*GOP0)>87K=CV{56$Dcb&Ch;lhR3DIcT?qa4lzRi}
z!^QEH(#>|X)()7ptIMdfHX|1-F#6Kx&0)13jHd{tF@@ajm>;{BsjpZFZYer<=-6Gs
zb&>;ix*|A#eJe*j?+r!pmr*KpN83j2=%)>=bCTeltHHBH5NWhOf6q0Gj74fsbP)Np
zwua`s(96)`Vh-Y58#S5E?h<i+9kGaTpg?Dc17$p}GSh`0^{F%Wr4$HI9}-y<ju7{x
z4KLi_Ofc*@L-uG`@k4Il+m%|;$n2Jrj6Gd*4khamYQ+S^g7=)nGRVfK>}TiBXsZa~
z6^@DlsM?sMDCsa{PszxGNSD7g$o?spBdt(V(6S7LvC=$kRS=9RJ_`>zZ+lrW(lngp
zM`+%R6sTK`;p&|plg)w`!?K7XnKp#-p+;m;(|(vunT?ICP$7eHjEH3O`$pU6t{l_f
z-QbF)_=ST=UyL!9F+&P$QO%J;A;%TJRwsrid&bhDqP79`3)kR|_-M5~p>ITI5<4q}
zd8%E-hi6Nxr7wmDs?!iq^(epD28`qsn%a=g@jB~r%JcndeLLeu=oW`OnQR7L-XOj|
z;T4BmVlO3^^=yt@4nVmC;~q>uW{}pK5*c@(-idCUPA*07h6)h#Z81f1j>C^Oj}^z^
zRQU#7I475&YIu{c*1n|Mv_maldb`-&MQT60Z`!QvIlT%skbX8!RW)gpRx2B4XXYlL
zXIH<JN-R15_%JOoRbRS(GWNoaqci#XvXZ~rH6nFShmh!WEFbb9_ILe*M3ik@m(uUd
z`s4-dqzh({r7x}w-$>d5vyG5yGUTz(NC6M;+v55h&_?g~La>X0=k0quo@`o?l2)J4
zADfrP?M4%>LPjV2W%NJy+jz=9xB+<{9G6XS7+AU~s3v*OkQ+|w^9gg~rb%YFX~t|C
za?6VClgo!!!UnH?AMLTpE5lwC+o%vXZ|MI@N*Lq1dlv`i4xEa;ao1)&j61q5I6PR_
zZO2->Ji{v_yuJl4byoZo0hxE?(m<>=Kt7J2zJmr!wMN2Qi}Sx2pf=yb%WEs)G5ze}
zGLDp;#RyUUDdW3A+PGiHv!l7-Zl%<r%#%h?7MH|*A6Sxl#a(WDhHtnw!ho}oTUk5H
zSHt`pdvCMg0eh+Cnf&G!)1ML;5#_os40932{2JeL`)<3LoaVl$@im2ere)uNMQheS
zri^y-WNi9%kaRjq?+c<pPE$3Q%S<|5Zsu{u@qpJr+PQ6ho}qrWGegkcYFp+$s{$gP
z(Q?imY*x{T7^?r6W$@sM92+!ij(VvL8&3E9>lfcVdVrxruIdXq0JR#0JlSZ(xd*2#
zD`^3vm~pwgI8GKo$u-F@P|(-)L=R9{+URO&#h{B^z=7bG!#xg)V~dg3ZNivZY_U*4
z&AGf`hAPHu>D;YA#!+k-4@M97Y-)|Y^UaDhX_o?ZfzI%-;v}ML!V+T>X#@b>4r>6!
zj73ZtH=y%Rn{O&=@;z<pz@9sh$SNOwy@IFXwc|_`r85!&bq(MHai2mSN|;;otko9o
zq?r9yx!{#!^s)}Vj8_qaX5T_kkjr#!(;KmRA6H0yYd36@pH^R0k@^xc*8-VlT_%pu
z%!oeXHgAU_kZnYH(1aDZ+~FVJPn5Ta<r~+`L0J;EMSI^oe(;yaL2_%AwpNL5g>w{^
z5`*k*RiNnx=DI|z>RN{@ZKwMiy~GaxNGR19Q7ude@`GnfRWoGbhp-<W9w}76m0{AQ
z>>ghqyZB6ZBXuz!F&D!kQ71vjLaXHTXcn_bcu{GOuXWa0+AXC#_f5Q=vR&>^e@3>*
z>9sdr>m_{$qSR{H3$<~X&Z4Vkj&GXCuZ?e{j^B)nGa0l9s192qzNh_8w^S`5G+nXQ
zMXOZ$7`l{Mv68F>;|+V}<bIrle@zMy_NS0D(o8~wz1h4*bc(oeqfR%&RLGIE2$=C}
zX&DSM2ro#Fxwmkgk+~OUNv$izW3|S~WN%Iu8iul|l%X<Gky##Udvh|UeQfyMN$nAK
zi&WN4toR<?25x$ZL&TiaG#yVW?^j7*M##wDFdXYMnptFSVr7ToIvV3(3mZ8iB!N+L
zu{kRG{Sg*JqR&^s{x=Fqs_N2@=&@lve)z+49Kgzkl9?3j-4fv@VpW}#=*K3Ta^sUA
zXH@SyK4oH|ufTBO)tvKxHlV07Tv?O-=ZRlV<#N}_?ClVkyom{f+T7>%O@z~39Y$@&
z=v47HQco)EqZSo0k*%JK6(z2!7sG-`B$%b8VghcqtB~a4*oJtNOZjO#ZrXLvyA<e@
zUo9Ycu`3)_n0|s!8)59kD<|dJyzWYmDd~f9ldOOyP2an+UukH=F9g<xy2s`QoZtE5
zvR&`g+?43;?HL`CZ)<Zs0U;Oi8M-Of6GY-D-Q<hiw1exOs43VRN7){ODVncsY1AQS
z^h(Fkk?0+|(zVp_A7MG|uL*#{+B5*#qN#Qdrljw<3SYDx07ZY*X(T3b8^V~3x-*uf
z^&UyxxY2;ftZ{pM!`!-_D8N5_<n?R3x{EN#lOJMP#JfqU5K;&vM9<B}k$NV)kUVCd
zJa~y>l0BH-XSu97i>+m&#L#Gao&QsNyu2{VWA9=lFOf*4(M~NtZ7M}jI-~++=#0~A
z_~eu*N1%?wPg7S1-0pG&=S)Q2aZ4MpkX8MK_oFleXJuoH9LP%U&lAiq1G%K?a<6!e
zgeF}E8n`>1??P*u8+e=)+kSz)b^}W<gsDzeK;%ofB_V=Hm7O?($9O4(vt3XB-hrPa
z2RRPpA*e&PNQn!pFAPRPpRBaVHgSo{rlus^Y<GsE1*7Y}1U7bf-8XWfB7Pdz6Hx5L
zStbvqZ8g_pJA0+J-moXjS;%gtdYs6Y{1ZR#R!sg2>}9^V`zrqECc3AD^tL<~o^^Aj
zodPAbMPLM}Av;m@1dOcKYUhd5W(y!Gw!B8!3qOKM%`U^PVqge6KL2<ERDcQXt76jh
zWUW<}Xt@lb#WN91zbbq+&vI<=sYB9Lr>SLH!v<d@wxB{EpPRG+br5R5Fl-B)&YCJ7
zJ9t=Hs#?%!aBzjZx3j5d(`*&Qf{91vB)4JV2r<0$g$eWb%uo4Ubo~H0Uwba+Hq}NS
zaK83D$Z%lAn<4~aAP+s?a5##{I4hRL8PGgRX+j5DvN*>gwG}B=xnEHdxipO_PC?O>
zMtWJ}ArXeMDo~yZu<v>t`NDqD-F9esl`TlgBAQ)MC!ft2&(TnGVOHul9iuEo7u_%v
z%NZ<DZDZpZkIv|StRuM|cgMBCIw@7IK}0?l@iKBrOpoMh+-va`nS8fcIcYzmE1_vD
z@9xH9yX7a-!80v}T`rC$26rbItPWbE+nMX7fDr5GP%;d?-FywDN*5beP+*pG*Ax{w
zM<zvA#57FOZaA5E68ST!sML=VGSm<RV6@hNvGpvNQfM$n?fA`;VzYDi%aT9`Q;;3n
z2hHC&#UskM0)rK)=j}lcthNWqgyCPugo4rupq=Po4T*m7d&uv`$94*Vt9aA<VH8H!
zf|uCduswpVtd8@sB(D!E0e<(81Io5;uKn=c%ctLjjxeXLe<`O3AGTA-tC$b*XEW$f
zHzq483=^}WUDX`DcQ(IgCy&kMJh>8EFOGJj7S$RI&3ULX86jJC(QKi#N4)X2YCFq*
ze05u$#a73230&LGtD{a#dLeS-KL?uj=Pd0-2)phA>-44VglRME-{<cV)ra9@+k~A-
z;v(w+m#!WH1DOl?7cOroj{VU<w$mE}=>Kok8`n?QxK*di?C1BJ^@ahNY^q%^nRddp
zqXhc#R#4~LC!x+yGjNNRL+29{!vGbSeAzJuvJ8FbOp+oW4OIF2$LgT5d@U1Ylp}(h
z<-|~KhXFPP=Sgk2ydny1aav2z^)pKf94t^CafVLuZdjV#6k9$O#+1F@jb=TlF~uej
zN9EKX^$yIcF{fk+MTZVCHKg9$iL{gIR3JMQeqqbE3u?C`>%dr%a?m-S5-w$62!k1E
zBxU62#*YST4`%dhyK9${&r@=HUo!N30Ljs<0vV<6-m6SYM$@%)e?L<ZnwRob+7&`n
zWfXGW&M-Np2bL158wpZ1mOv@_8QloswNm;P#8IHdPflOyj7T(klSZ17QSLU+K3oe!
zK}%H4e719#yPAQsn`St-1Si5En7q1#w~SLor>hPnRjNyg)l?sx^p8T}k%A7C!O0IO
z?V@34@KWJ#q6~~#?pfL}n3{-$_G)}drZw*t*W=Ilk_4VV#gBFep;AOzjbU}>|4$sf
zTS$S12pD9!m^-$AqI$>A!h%adI3>(5oNB@J_}zPkv9sVskox@G;`L;Cgtx3B&d1;T
zQZB?!u2sC1&8aAci5_UJ7hjQCizpUO9ZWXq?^cVr!{mnfH%^r@KlxB@Gp~Sh!#mk+
zfkJ$oUPB?4xk_>7AokoGzc3v0c#1YGR64@kKbqa&y}xsRa)0ms^8Wq%7g0l$g6@p@
z5T^*GgA)HKr-xZ)POsgermj`Te%V8axt+^>=5n?r=sK51@!8EdzN~?B^URwAg}2Ts
zTz1xg>@G{^Zpd2|vT1ZJXe0SiuKE__6=a~{P8;La%@K|R8eduM8`335p<6N?qX1eQ
z{5<yEp;BmlvlRL~3Y`)WDz{^?GC-u<H%%@N1m+c(a($#`PiTA>vQ~nr@vI0@`p=9*
zTT!+qY*c8C=m$qsY42Iw#jA{Gui12h(-vL3*<36{4<s*av1s1CO}in`(BrJ^jw`|;
zhn~D+GDoZW&qn3N_U>i+pRU?#+JMt^xJ&S=vTtiA%ac+E7rRQ{kWAf#+r==X?VYVX
zI*d#(KIVc?TpS5~e@_d@+-kYB{b^*91V;dv>!Q<4^24WU;;N{4hAJ-E(mQ&$PtgxI
z8?-HR=B7T77Smm4WUb2fU()NfBRW&D=kPxXgIXye6pG-@Gh}3%ZAY-5A_=k0Q^Q2=
z%}g5QB=W@)t|WlO(~Q3e9`#_F^q{q`X^Ac%31c^FL^YiaC{uj%yQ(t>K}B(EH$$N*
zzlzQv(g2jKrh;s&wryHL4;zw9taIyT#Ztp~jrvAa@7ND2d}WM@KuY4Wkskl5v?ss}
zUYsbnUUmY=hF>W}MBcr~uB{3nd94u3$t#JejQRO>ovD#s`I84##}k7|vRk5rP1NmK
zt5VIr@~sGz6q-JNNVRGNk*!wmLRhWxs5cg4HP4hlwU{v7Hgi^FY0+<0O@FK%4L$^o
ze1#36;{O3Jfbdec?V=*Bx+N5^{xfX&s-up7n)zNOJC^&<BMWm~WxwA1Eqdsn?+fK>
zmZ%|6C%v5|v&{kHKphz-KfRLJvk-)I*sLIb^)>`s5oj}rkD3S$caA0}uTPFXruvz2
zdf}#9D2vmGVG%5)6z5?)N=2-`tK;ufWaF+^n+pH#sQse+xLb{LRJ3p47B3M*b+te$
z!3eaUVw+doT9{>V-?Ngq-e6Qrmh%cXipO}>w!Cgz?#N=~^P3PXc1%IiL09n21<5O?
zYgZ*PAIwjD4T7tWUVw2K6LPxkiy8=1aaVJ6`>Q5so4JxC0YNEMQpvZcZ|0sj0@I?l
z@L`UYI0PioUOxoaSWs>Ca%1b}W^OARq@33YSMP?`t93qX@OgfVy`Vc&b!Lw5Ne99I
zE!1!@q2VF)Bn!W{eD!j;R!ne3>Pju3mpJv@ot63pW0yIs(AjytBliSd&+>@J+%Vwf
z82Mb0a(sHsx1NT~8CUO8okyCvRy=5NBs*cO635f`Z;ngpmZs;lgLxW*37;7nzutIj
z&3XAzK;_2OBVN&Y!y2s#Hs{chY)T4Yrsk`HoH4SY#fQTX=1f0G*|`;r+$V1*Cp&u<
zT?dk-6tBs4YG60&mBv-Lmy$yo?eIdZ&n&$L9n80+#ffQE@>fglz(AH1=_1~N1B0#L
z1L;Sh5?BQmTj=3zppLUVg4JpW>0y})gU>*1zpTAl5p@o4<|V0*iNpp!95Z)(hLN%8
zTZ*NncO-B{Z6ZB`rYoAPedJ0<MtwIj;XLPlu#}Xd+y;2`!}ntmTJbxm;rQWJwP^BN
zs#3L%KE)DgULzVF)sBq~dY~`eTCRF^6mAdb@#;o}a9?^#2CZe&&ed|)WB`0l>dy%a
zUPjRVot#E&UyJ)Ufkxpm`(nh2H33F;ot>PbKFXb@V3p@JVaYK8a6%UnK6k)QCR$;(
z-)bP>iux#VQcRv4YbRWJ>bQY@=gv4zt2;c8=o{M2a;HxzqL#P-4+kmyxM{ru<MXXE
zVAx<*VC*d3aMggDZ@gYy;aT}mXluIJfU+a5VQ7N<c{P4RPjKAE<wm?FsaX#R)TYsQ
zfvr!ae?b;cW9u*{zyXX`9@903)#|r;!^%u7b%pAtF3#_vG43{gryU81U14|~#@Z03
zgl)YcANfXkw`g3QDrrWLX82Fzt^(6KJ}%m7LJg+N%kdTxHH9WnV^Wa#lebY6x39Q;
znqEFaXLa<!1ZRHd^9YpIY%uzMS?8_GI%Ihe$q)DopEMj(1zs?cMBM+p8b8ww8M!t=
z&I`0;Z^jqD*pSP`FN@`Z=K-1Tr!SuA{<lxQHm653yq^cTmrrzxM`^_HAh#pjDTp?W
z75U-U51#)-94((8I(1aJ42J&e_p9-9o>BUx>Ci40+$^~GA1yvcc~dp@n6Va}{^tL#
zTC5Ttj0+W)Bx-j8j7B^at(tr*A#8J2HU9>D^`?B9Dy8n~7jYwEzbJIpH8{P#Uuauf
ztx-~pE9yP??oqIAHGOWYu0b=OpV!ID9;)W#YTQwtNlS))Ab$p$XzLi~NfCo<OZk9&
zSRex4tfEc0u4K<$*Xc2S-DQF`Q@(ip>o{V2DZ)!xB=I%LJL+Pa7mLF^=jKO+m?{1#
zYHTYm;5gpHnSz0cz|s3!JujoHak*st)c1Y(GuvkNeCYUc#shU|SG=2+(d$bEW1;hr
z?M`Bd-^!hRzIy@Y$>Cr{JY1<86hlG3E?HQv$_;(mcAsK{ES$Dw+fPG>)~{ddHgwlt
z9@kpbYsy1BgOcM@fe8J&d=%5#1j*{RTYg`OqA5Jq)77O}O7_3hR#yq{nnP^4FQXu>
ze(f`VUn#W6q2+0Md|sr-y(gqxduo5sJXR^*Qoea|P<V)%6mCdjfY!6jED<Da8zm{D
zHo94diX&K(w8c|e+rjF9I<<<3MPuu_SdeyO@kGwL^;2t!B7#q-p?d=qUu)%WwYJxQ
z_hlghSTNdEtWmG6(hLrj9<|c-=?p&oZL63cap>&`Lb#K)1BON9Ph0irc;j<0G20%q
zYP6=&VXQ9eP6uN@&A^8L)+WlfOsKr^rnUh7q^lYObq6YTHuGl3ue_+&;R?eO@I<CC
z`+@PuVxMF?BMXihRFSB$+r<jm{lG}i4pP2$3AWa(wS<F~@?6yfQtGyaWAS=>sL)ow
z75)*-W+YW_BOI7>i^hkiHp8n82f?%S)xCPB3FP&$7dJJNHvB9mQ@P1X|9&5jssKN!
zkJ^C~Q!)>$17+`Zr++ny<@{LKIwtERs_0wVg{;`g`1+K;wW+{q%mCLTwLzSPuO8se
zXvdFz+s)&!+&e(gar3NJGk19Qm&eb&%6rhy`dNE!S@~+c5jV&mR>4#NEJDRV)Y4C1
z*gwOJvs$go3(MubbPsQ+e5BRp3cDCf_&42K?9s{pyw6z>VmI&aYBr~|;L;+jVqB=#
zJ>n|0W%&<^;;nP8;YY9Bwht`sbTpahW2L2NwKu<><Ol!u;OTb}tsr5zPFum?IT)!Z
z=$@ZMtsg}I-TIes;QG1UPey}l1*Y2YqJaq`rK%5M*RX<~>OU5ykm7UkEU?@AS4KSB
zQVXx&?wxP7qGKm8J1091v@IYWi<ZIA1$g73qcRmCz|FqW#eJ&s+Smbs3>D?bfC#8)
z{iyn>7fz~!P6bJugUXo;p_~a*PST+@x~uR2VR^>eGGHOX$)XeUQa}4Vk`>PI&5nv7
zJN~9i6K=A1#_8zWsGoFVe9Lk*UkkGJ)@B{2e)W`@xP|a2wojIP$=o`|k%s|xSM*an
zs;797Lpxi)Yz!))M!YN|s#w?BJ%;J5a={?2<XydN-sTscq#~~O*7(q{8I=rx3?geJ
zQeZ+J(J2Jh3g^Bzccu!ry+5~#WUcUYU7!(r7+&>OEA&2~lN^kZ)KnmpM!dbI9ox$%
ztvjtz_UfXHthC@OX02MABSCW@2Y3UbJbKFM+;!L=<ni*Up9<>NAy7<(I^EY{4?+i2
z)~sqt_sQ9Z`hFrJVpFZ3yFJ)WB$in#jSe^$o>{+X^n4T1&gmWzuv+s_=h~FD`PpvG
z^Ne=xt2*#_;S*!qsb25oJ!3tv8Hux<cVSt<U;1>hN5Ht9cWGkvUNmpWOH=2|i$1M!
zgyM`UP2Jup4`(SnDG@sp6<r<O8XqmVy9dw8fHRr=MrbITQqRWgug6w}g2f<{-w#SB
zQzCch^U0u^p7<92Z>Zi>l_T!QTW%`Y|Ly{q?RT{)V?VxrnX99%n_HW=Zt}iXLE)YY
z)gdFiS&vdT@Y%A^!SrCd_u-$oh%Q@7fJtCoUF`C-OArO|9$Ax1C?R|pkP(>m3?_d`
zE;6@rmtx;5xkk%&Sf)ezm447rqmQFfv^pfJNc03;qy}-g&CYl=TOGZMhBuMvI28Em
ze?(+7A(Vf*_0qY;TgSk0qI9z(Ae~j(^wud^`n^62>b8PM%Unim6v$F(AjfiB>iBRr
z-{px^NY?p>rwU5At2>gEMuYDkr^}t9VfNYlTv%OBO50ugboW<cHTK`r{*f6?V_LuY
z89V5aPJ<`M^Z$@t%K~qTy-s2Zhz=FmC|w<;<s0csT#gCDDNZ;{$6ga@3Kj6h*zTz`
zvYs9!K9c|J7O%vTwuN&JfAAU5(Hf2veIwz&J^uCw#FN&sL(-u9clR1Mfz4cmz`e@9
zB&ifeGtt|C{4V|kD+MKUu9TvNB5xL!EeW&tw*3D7sbXfcMKx?ae|LGi`yic)|L#r2
zblZ+}Hh^|ox|7#T($*|Z((A>0c7l@~q|E;i&Spoa%NyH7-0h-Hk+bAq%ySydDJc99
zE;;g-u_iUiLn2XvED<UO(JT}zUI@f)pd=KE#piH*vQy#2{D$1ubWmj2^lWQ4<~IJk
zU`0NBS>F&oKAA4>ogDtmy`u8Gt<w(VThdQM?(Ze3)cQc$#z5NUK-$fLw5@@(TLWpg
z2hu)M+C!{+@m{fqGBA>zy=n7WuS!jLjrrslyRglZqZEWHa(2cyR*Qts|LD9DVSCI%
zf=h}LirC;3QGPeYud#KLL@cAN-Hl)mCb0jQ@1ITt0VV-MxGECV&kp^Cs$P@^?YKEZ
zBHZrc;Pm}<r>ILvhQh(QG+9Zk2_0nSvWK5<0`Kt+fR8A4g~sWu8`R+c)7myBJ8c`2
zp8~%iq6{P^Ay%Mv`DTofHPldlls?~Ayu}W&J1JAgly1h90&{-cnND|Uwi9>~S~>4J
z&CL^6V{dOV3#+w{Bbq-Mg}j(!<H!!Zk@PD7*fBmf&y@1!k!LpPC^+z_W;}lgtCK)=
z#1l1AF(2O)1(wqh$0)@doKPy^zV@pfRq&nh-UVJs59n#QJQWLDQ3k5bPK^UNkkUJe
zD$LF}kjl<Ekh-qagv{KcVBA!Coru*&D6nk_BTyk^&v?k?1EEc{3Qu{-mJQI}18GGr
zcJ{AJ4yoln5hL7E6uNWw3PO6_J`*43jJz3PA)Nm>B}yPq`V>}@5<aoF{a)qi>!+vL
z>-B)cZXuXHm3`3=tPpATb(Scl$Ap1&aIzr&XkJVyRAH=|(6<`3UQ*V6#%#igkY{v9
zREUq_wIBf~nfYcZZ|!nIJR04?>c$_vu6}ficrl;+vN$X(8L#N?BV9fkH-3rw#O6AA
zd$=p<=2%=iC7;2#XKy)BMg*XwEap*#xHcfMryxZ?fJjV0gdALtm^y?)t-KWhLmDT9
z46kribFA_i@}>NBElgb;zx@S<w2xCskwvL-am?r@k+t@k0W1!Py~2ybA%vu=Prv&1
z`Y)5^Y`GY!{fjcrue?XJ{e!`}Aa1a#l$&N$M{@$0rwcb4Upr-Aj5?Dvx)tK?t*NIF
zcVo>YZWNmTydV%@^Y_X7lhN%ElyCEp1!Zrinp2a)?VU*6iC-Zmf}<)JN)aZRx+f)@
zPih{+@mjvfHzJyT=*|YJ<m{%_?YW!(EQTQ%Y7U`tze8Ap{^FZwPp*UCJyu@mD`4af
z-w^A;o;>lpQ$)^4_RIa~K_Cg;$8$;Czs!B6;v4{dHHUy^HL1JPy#>1*-&*<kO!>T5
z+2?>W@awz=Q-68z{ON<QzIn{yg3AL3$!Tk{c+1wel5~N!eWjav^fpEKJPH?hcGYeH
zAf@}+oWxi*j44l;)?*a*3aqldaI62c9#^1U81-JH3L8rDJ@<CqD-im3@%Jkl`Sch3
z#I!M40#o;O+8A>!J#O@?i>1uP(ZGP?&IS5=*#X2<sPEH?MI;pd@VbYN^`+@cL&%Rp
zSgxFmFY2KO-s34Pl>;H1a1QfCHwjBL8__?pq&0}sBYXuQqs}ngJnER5i1(T|ULg^O
ziIQ_qqT%+4*}!9=q>dl_<-yZ$L<y4@PyfebC@@3v{boX}5vqmhtI4=9)E|VRj`Of%
z(GB7`oVTdefYuc)NAvuY(bd+@#(?lM+nX--nbjY|4)l{HKNi#*Pp`MStEtfWfLO68
zjwA@!pp@wYT~VZ;SNqI7I=DDEI>nl(*f4Aj%#;3R==HIz6x2ZExI7_}Sm*YNwyf0!
zld3Q}y@~|bAbsx!X@ZhAB0)6y#uBSjfI8@RbdXyA**!GKhFKNydvSOs`n+HQ!!Zs-
zm5uRNKRkKz_&E$f8~KENTMBLY4qs(Ha@x=H4+6`oNoMrlfO)MlGdLX?N^~~Xoo(l%
z)poJr0X}RHEJU^v&M+YiA&=kV!A8O&4b_`%>;8-P^MsGfoe^;QWFXyP-B06^!mYfi
z^Sef8IjI>Uy3jCyCY`OklKlA6;<dP&$xK8x0u_qCPW;>aqTm=sZ>o!+%4;NaD0Z@c
zNLdAPwsX;Pu_}1A){NFm-E%D3WiCv(KfM?Jt9`1*yDFI#$}Agy4Q3=Ws`~Feej^OH
zlvbccun5CYZx2qH7?H^0z#20XNAP7~aDGh42FqvO-m(LNQYXyAecf*|(u$*x)W=MA
zs;WZQS+Miz0VEXo&=Fwv^K~P#v_!d`!>N4I7{2wJWNG8N!k$Y{$gg_>u@(lfXJH~}
zOj}n7y~9;odK`~qi%rif1*2$(r4gMy08?pnHCJlxD8AyT`18TxJ3`g?UX|zm3~()_
zMK8SJ#*7Xv2I7l*HQYy94@o^qRF<!V1Fxf+xi}2CawyY@W@G&DnP1p>IX?L1c)G7h
zWASdi-|^6~9{2nazUAkaTTYjw+aCkA+^5j|BanP?YjpedM~d+jJ!|d5=(CUYOqPtp
zgVARn11SH2c#!}>|NOyPp9TXu{-@m_s-ueJk>CPHJWMhE=lqywpKzkM4&8I1Ku=vK
zG{fZdT7?gJdXyrNKdX^`0%+pX4h3S#ub5t%FHtlZs2UgFm}xuSenFgI$z0=;{i7E!
z7oB8f?DV@dDcs?e@ju0P7(-@1aez)$3ai&nP`axhB6|K1v4S$hQB2p|73)8p&N4%f
zi;y%R7c8&s1Y8MLw!k=MDW>6sm_yteDCS~qTTY2?<u2$l&!$irmn>UcUK@Gv?{*??
zI#^yrD?50x>K&*#0s33`$<U(F@P=Wu@NPS!x|B>T6c;_SshnT_mV#+cY8VF>5kK={
zRy(T$u08Vm+2BB~V@4S$&cjZP@yg8Gd7$NT{d#qT>^}6t=|>kF<FVYeKtXL!<g0+v
zXMNgn(e)OKaGLySN^t_f_3Oc-@z;+ZJi_IV26&K8>JivhT*X9-Ha+<8Zi=CV(}2+u
zQ4cb>&ff;MkXMiq57y+OO{q4HLe5Tqn^OG=hot_*n>56wsmNgp(5-OE%m1DYOIB4Z
zl!-TV%4y;yz$e5P%@HV%Gu2DPg7Nr;v{U2n2-0vdh4=pQjL$`w$l1P&ZQncC>UAnP
z(U_NAZM039K03wwK-+a<v~e$_!CJu1zK=0qI-f<z^MKq;gtxmQP4pX1%O*5F$sXS=
zQ+^56MynAX_F=b9|4rt8Z4|S8vK>3mWp_{a<?@ksK?D5p@=ul2oU$>#qH<U5MIywZ
ztDKnK_s&w4%RhxKI<pYWBL*u2ZXsqzs`5%O`|=JhvT56K4;hQKdE(czgA*UM%1KTR
z#LWh?+O!cEa^lVKL7_+a8@CH|%}J*)*4aj<?O3IyyVFoGZWb6+GB4&L8PT4n@BP%5
z$7we2k)_h52w|%Z5gA=ds!aZiW(M$ZWp{tRe1lSAuCS=mZ|KZhO!?)<<$A2uJy1vy
zqJTyv6BDC+2N6_!D7avZQ;RnSh6zX`CuBkkzQCbTPFv+?4A`UgKiRohR|^6j+lcnZ
z^Pm-QQA5Bzn<<Q{?hzGOUTWSGh&zGPgSXTU@PY=ma~Wv7>Vz!%eRfOi<%X&`ppB+Q
zoLTM#_cHqXSid^zPYZ)(1-3-n>0jzfMWG3;)1*V0cL11srs-!;bYf)z)Ny;A5A+Ht
zh5!4pB8JPTdfkk*B?@e({`d6Pkb<iO$)3??dg=haWibAgmvmgA(-BA(rmr5aBatV!
z0``dANf1S4S**WQ_Tl$Gd_v(kx|HKvl1+5-T5C|9be45An_%B4E*;zWEgk!W!iW#N
zn+i~_yCr^160>!7Uu*YPdiM#K_)Td0eZ9LAc8GUezEa@rdeWF5{PGI{2I2Ec=T}l`
zTpd}Be0uB%(5Y0YwNlzxz?Qlpg1R}<jD`^Tv2OhWE-vbVh9ZQ+16zRTHQjDodpu4a
z5pAMDQrONZ+61{@YH$j*GP}-kLJG+1>^YBL+_MhhTBP9(yzPBbl|y~1%F}GHhP-Qi
zF@fuic|yN^PziJ05O5XoTkP^X63Zw(WnYx6Nn`m$qv4O)<mhi?cKaI+)nYR0t3_oG
z^mQ8OmMZf9wi`1Zp+VZtm3R@wQ66b?Kh?skaHy7Q?9N|LPxnqbIBjN1XdXlGI=Xot
zGydDUeUx_U_v%L3wsyr)Ovrh)Q`xq9i=$4}fsVUuTe*X)e(he*b6M3Fp&uUEr54%I
zU*fR<X~I&5zM9x0&``&SHHtJ=J7%-wBxco-O&6l4A-hKiC&4V^U&|)ykSa4ZS`tlY
zH5sFsU^emC22t2K%$gdYv{pMI7G^kqqf=C(=!llD<Yzw=wQGu%_u%#7&FOI{=cu)i
zZRaBESRpg-jqmLo?tVxMj(shHoWT+1$5$OxGnY^c(kCR@WVWq?yCpJ9-I>3aL2>tk
zS95h-L@7B%H<TA_Qa)ytqZQKNQpwicvF3Cq+Z!zDF4t!8s<V)0_<34Ct%(EP0B<3=
ziQIm2SzXCj7f^9tRG9zNHB3FJ6N}~U;tgj|ouj8#e)L9nbA5dC^YPC7<lP*%xzcZ0
z8P4ysMOl!XTR>lI(DS_#!;GK~2XTTBs?+K^AF5xPELtPL4}D&Z{|(O>4G8H9+3<#y
zP|`@H?IA9u7!0>x|IF4Qh0JGj-6?+dTr{Z9tMSvNUT4G1;GiPYgE#XrVY85#H#TpN
zuYCF7#lxphla3=?bsOzdbnI2SSh$b+cX?Oaxho~^8=^)z<;2Z%xBTp2??WmYk0wke
z_tclgk`)n{@?>c3NJ8vPM!N_r<(5>JPjLzI%JuU5k|Cp?&;Y$AU6Ak^u~_wFL;HCp
z{lAO2hjAV?X9<;dT|Z3yRxAfiev_N2p8~fA3y93fM2|0lyk9%EH@bB*xd2CuGe&Wf
zGg)BiI?Ayx^FE`Ic?*bW3Z}pEkB(`wVgz$!8#SfY5rZ3^<V+*hRj{;qg>SKgmq@=>
z_{Se%)4>!6=D@6ZOIWYWTprainK2t6+%fV#i5<p4)@b@;l3pG@aIoiRPsa0KrhBJS
zf6^cCwU57hMDnZg-~RTuyW@8_5iJ?bY_UJxi)-iadBYH~<e8jv>EpnsU8Z$>EQa|J
zN?y>|`wW-YVazoM#KY59bC|l64W+*iAH00{b*x7oU-cu5m$NzH$>A|AS@yf^?waF>
zsp|{AZMMBy04jZX<>AF<I4+O`gTwMNFRakQcpyNtj#JP=c(58e<I$7t%`oQOc*Vm{
zIIrzT>XuX6negTknYUIl^V;Z4m0bMa97unptpKSiZqr;hhaXYYb6!aBigk?iM2EMs
z4V(5VaaeG*kh(UG&S>JtIa%``lBJnss0CPa(*Lxc_i8lN_xMAWG=B)F9{+4xv&qpR
zc1t6ZUulnQU>G5kPJPO>8cNgUhy9(yy@jl7AIhk;H^p;3LVeNgdbIg@APJF+<HLh}
zT;5o>Axh|BAbs-YpedS1Qu?>E(j)ES$U_707o$gyu|1Cuxe8@NMfQQ#4?L|;<?Tw}
z{8Lw-0yAwc49-^=J82o7cgVGHwR8go=DPS<TPGHe;wA0O-%fE~L-0DR9rMysr)n<}
z0PiIP`(4^?W(8#FN()w{qMlX4>4j^yP$oE1OdiPyX{~V~%=D}hG^`n6!K@`1W;Y@^
zb26iNV;0-<q!h}Vmi7cGe@27YX^4M#WW-=^M~Yr7_o7yf0h;P2P@8+(Co-`b3$w9I
zLLnXNB%Za?c#^EDO?ae#?j>=jiwPa>TZcZ;bY8<;{XIs_CuSAWa$}E9P*M+LS!OJ$
zbsk)L@YS>DJd$~?Ol?i2)oJvDW%)2p(|7T;Y)}$;kK*Xo&Fgt$rFFxRQ@${-aVm^6
ziMoW}Gf|jZROEfjxgpg1Tswb1pPjOK!HX-`(i)d^&~PjzB_6Hq?OZlY(G~7XT9@f&
ze)>gh!)Y{8ae8`kI8iXu`%*T^u^~>fX<C(&Zxo%GubZ=~t-`|)5`Q0Tf^d0n&TGQ?
zZX!-9xrZLNGnW`-XK(KhjPA9s;n);CJU%<%oY%UQa>uj5o*&NlCp*)F16J-p*J|#4
zRQTLYPneCVRW2H_!?S8CZ@A0hEtLDLXC5+S(b1CgHtvy^W`}#H`v*&&5*f}vK76;N
zTb-(q=kem?!{ibcLE6VJyD5=Lioa3H??4REL@6N`doA+@io3{_dJEN;_KCnegn(1{
zLqh!hq5Qat3zf@zWoX{fwBV$~6`G+;L7%=q#H)Ar`2MIkmLB{f%fhRC7o98I!4Ip_
z5+-)#;Fshv2hZ<IBNx5n>O^1HcNRak$5#k?+^lj-d7ux{Ai!~5=&`FtLL+KWvJo}-
zb+)Kc8u~<Gqa6|wW|zew0r&LM$)UvV7;#mp>u{2UR13-{YqosA@lV#I$?@qj0^?X>
zHY>fFc{-;`Fo;|8cYk^Q;9K}MoYJ2`Sdgw5@zv2P2Tol$uP1DDYg36%YYIf_?K*EX
z(x7zbnYT)iePm^1INm!gnrl}p1w{;&(S9qs(uUR_{Kyy4R*VAqOi(xK^w99|M%|g)
z#^7psAZO;DgYlBY0sU}idAP^fk7SF7p|DFFqus@`+>n)ER!Crk{FJRa2^4mCPN2iM
z-li<Cc4d=uhul`o@8^b%^ovoO2hh%lmc86&YK^UQ3>G`c;tR^*pBG2(mMEjwcOzqr
zgKRvf8|UwGdd`>)TeDR6jcMSw(oC{WCyPI_&?K}gze+Aj-{rw1lCJzKn@Bm2Gp7)o
z*O?DrxHxK&E~G`3mlHAx-&u_R<lxDv)Fe<=L1Tv>)dev6t)qw&RCIzc!uteWK(8?$
z?;PuHtJ`dRR4sIyYo^gVh-q5mC^g=)rH!X}pd=37T)#O^u2GgZRfC77r2|Pqj?8tL
z?aMFJd8li5jgIi7NbR(LioZjehT=|SZjz!*p}#rW;~+zmFZ?C7i4revi!Wtvx$-4E
z$mi0w0luHn26L74xRyS}TCa{WsdYfmEIPzkp@V^G=~#=pz1@tJojDS~h}g6C1nB{l
zyAyFq-(_4U))M-3Pg1`^_+7G+g7jH?_IQF=kMmxy;hKfE`@f=DN&0$h=~-%!*LWBl
zzSB2Jci|0d(mS3Z#j9-k#pU;`rqB(Tpicyw$veaxLMB=7Hi<L!l?&|7r3nM}^JZL0
z-bKw?LFz0gOEb;*PLA-)G2lyNXJ-wb;RgHE(GYPYkcvoy4LwZfNJk7gg<2%|zYfJ?
zYg&P+PCpb5Y6p=L7H{6nkLmUN{S4g?3wjN#m?n*vJ_51=0A+AK?*jV44r(dkIN=g#
zI=uibuI`_S%up-_QU?*_bv%5ME$3>Oip?o7py|?LmcC3B>DWp676KuMAbj6?TGzzm
zn(KTfBhN1Lo}6LQpC*GE-I64%&`w&IVx^Pi=?>M4jx-4X={}Z)PTxUPkF_w}VSmvI
zrE^ZuU;T#E0p=wAjYS+>;A10-Qs<3ir34$4EC~}WgmtV@`FnQ^b|U{*$FOAvkjBu1
zFIn+;RuIGx0#g}5O2`Nz>T%q3i;JCR4O`)!l>T(-#B#^b6#9}DSA$qw?pivD53`B}
zt2)8kYTYTB_-y!^!#+{$AD$+{lwo6evXBeZ9E$1ijvOK=MG6}HlX~V3hX+!p>B7&t
zw9J$i3D)tq(bDAIZNg3?iT2t^Bbn*q+}LYnh0wz=+J!7?k$Q?_K>R;<5Ye3fuTU9p
zBhL4)+rp?hmTy(8TrbqYxdBW<`NxLQ%#4TIg3Fs<2_IK@$sZkR*dZ6Z6h&d3HK~M5
zazSI7cX4NtS5RPQZI{%9LR?A_=R8o&R-DuL(r#mfoe2T56_~U(YVR%vs?@hXkMGf=
z1sB!xCUpGg`QhHZ<oMBupv_nHI!w=_Jm#>b#I79M3XECKyyG91(>L>`^^2d<dNiLl
zIv@$h0%rM`HcvSs!KX9#>tNcL1t}MMnC)<!Rm?WxWnine(e3dnYHEkvKdFii4q2S6
z0ci&4C4FiYNQm*BpLpBLDZ3R>Mt9;CF{@k7dQ5w(A&XR<5!=+e<A@!>xxnf67fO<j
z6hnO|p-4*#o<@eTd}#iKt=H=5a)C>8aM8_NZ(8nLbCbdpfxA>eDRaN^E1hkJQW8lc
zKA28I36TWZsf;O|l%187nNrw=7fV96$!oL4L$~s76rC|1?mC}a^dO4z=9DORxF{Wy
z&P4~+VuohcFAt%fLk7#a&c*0XTnYcnvxg79`r(@g&;L8udKT<CJUKFhzyDRNR7O1*
zXwLCb=(YUFWxR3p2wU*%^0YR({n;Jf3MjWv(8^78*=)4+*~UgM{lj8TsDPq{$_)tY
zjyzjmjUPljCPeL&d3otpo&Easz(MIGPe-Q}pc`i+KQ9K;zL~tXA{s@f(B2f;9tT-3
zEbc7fd)C5;?50eUNyL)4{55J4F<0+RaW!=$36qx(T(n@)H9XBuY&2@s_s0aQfzp8(
zuoN+4iD}6p_|<}cM+<(Haqq&I5JD3R#ud77m>{#*BfbT4S8A&fDrDv@2>VRo_sg%_
z{uP*YjmgoWl$hJK$Snee&hYiqY?XQ&B(k&pPkEt7gJI5%YnIJ$hcOAx;><dF@XZT?
z%T;>(qtEo;KY#p}r_X+PkyR~>fW?j8kwe5NU&z&lU`=EqKdmG44?5<*W(KjQDPl@I
zuS{BGu>I%H{u+kj!3nh8nIn?TUL51c-#vRde)8;x?;c%@TC`sfb+d!+EfCw{EUuTD
zLSOGKj)LYinHyuY5?H~*d6B>Vxgoc}e7Sf-3~sy#k95<W_bbuemAt$pq+CRg?7h}I
zFMI4oNaa+f)#aaO$9d09Q;;jtPnKps(X?STh8}v!Yg0GoIdyri6w9xnolT8C&ge{*
zD!qL6khmn~FXJmbMtyZe@rIDUQ2FO`RC9W{rD+AO0B=;}wm1?iFExC*9Wd-K55kxr
zgcfn72;^oO^A$~|ENMvEmfuc~j(i1Fyb*_mgUcrpaomXz&6p2e0a~u5r}bbzn$Q-A
zc=8p6?P}YU-lvyl<{&>Wt&j9VU-kbaA$zfLaL~0B3xp9YQ}XIQCt{I5>%y02p|~$r
zmJ;^vr{6t&`IMWJH0RsEnNwo`gvL#Gu`HAk-)fGG7|>6?ZnwX1u#EfkCh412TI?>~
zavrf-yp`1yf-$5ki!NI7ArCgq)l0>xHJ?z6>tk~*WwH?tMWTGPFODLCN<9U_aQ9ac
z8sdHeEtE=clLJVk8*^Yagc2~#cOl)sE7s$XL>~VSF?66aI{WqdgJc%x;WIjr?y&1%
zW8aGwD)Q7vhNwFfzfvV`Aky3B!{zTOD~s0AIoo^~20It&^-|5m-41_?9><xe>9@wV
zTF^%jE!cV($uq*0r!ZJgJexKir*5ST)V#!&li=tQrTcIsW)=577F0et>_%aA!NE70
z!T@mBl&;;X2T)heL-IL9sl>JNy#PhY-UolAJuQ4HD9E^<4ZDsicQzG+cqb_dP7M+1
zedjgPG$|;Z)9P6zKOcT89i`pSCs~UtMAFuX`g9{e(2i}xQh+nb1jXl6vU?p#n{c7m
z@liSaS^ja&4Edd#f*>|hM)=R8J&AW4L0=>!$vgItF-u92Yw`eSGX-<e4wOKb&^GFE
zgbw8$;<W6jLCG2bLuIU&1Y|Cw1C)p=Rs(D<(5}_UNy?=$lHu;B!)oUyd~rC7MHg>F
zw2MR%u=K5;)|5)KDg3^s;@QC3)Y}DjK|=fG(A*5mTq6xj#eeUpBBTn#^1>48nEE!J
ziuYiNN*YT@WWrt4D=Ju?t?_Jwu<!)2L^D{hU^WUCtwWBz(sac$p3^nm5%`QlK3iOh
z_tne@#VbQd(^TS1sCudrwQ(V=%xQHw=}mC4ihF+KL(fFVj@|68t35KzOd!KB^ALUm
zT#Gg+Zn^Q~&Q!wqNE82Ye%~!+q@WQYDdesr&V_i$U$6>O<E}<#RgxPM*Sd;FlVTV)
zl4ipshS%6Aoki?j8A7!#fm$o59-#qrxB#N+1#5H*yNBk6DM^wViZ)(wi>{eSq0s;x
zV(esVYb%a7Cb7tBIvUb~=FqMc1rM2o#7Y?Zs*Iv_V96m>k<_HN*;&o%kRt?jAD!j`
z&kn3&91}aglpS{y6=Jedq1Rx9nZ!tM1)|hrJiG1X-4Q6#er^PE_6f1Ue)h?TTpMVy
zns|F&DCu!%ZDstw6QWR%z3=28adcD*a+H2MFG!PFAyagbCA&m1N-DCQ$f2lXgL4=W
z?8)k(59e3`=I?Y0P*XS``YXG8oaRcgbUyAUUjXs>oHuS|)o?bFX$w#2z1K+Y1d@`I
zkv@^UH{~XR(@9S8?s=+r=lEwPtJJ}R=8eud4A+z8yQOq>etdj*Y#Uez*0_-8RwT1>
zBh<?M+6Z^OkT{y(u~C(OeZqmTWWY%UgXfymF*rx)iR+z?=;m{u=h8X{%5RB;gMUA!
zLw4sUkT0>~b)#TU`;^{E)w$$?ZPqOf4OQ#b!BFPqWoj|g53Q*a<8_XN#r05n3Nd>7
zC2&pm{fdN<xr^-NFCf%2F|p#$N`x^k>d4c&@NhNU*1$?dG6V0R(^z6NGLtDt<qKCk
zUZcBC4So5g<Q=#PPZa14bzryywr>kj`HHjzC)024y)js1hM=!bkHVLuw;7hfd(doR
zZtYXS7^jd@Lp2fulD}7{br!VOry9%~C^vmX_JLHd<WQ}Me}w~Ui>UbCsZ*;*zvD2F
z*P`zrZdVZJR&78n|H+KzKGy2>TL+L1_v$cAcHnbm{GDF@B#N6C>D3f#E3vY4J3{*2
zbT;Jvr9!q#PYF{W$cWh1O+{};tJONmol2&4({Z=fYI;=5I|DPPwao@Bp)A&bCvAU8
z{HM=ecR#+}fal`6g85}l(en5hrCO^@Fiph90Q}oq=d>^k%<F1EBhyt`yh{BI#UFeo
zt7o9mwZo&`=teRHNJh~v7dminthR~dJ>92OZ*vst=<3U6QY*!JOFJ?<xV{-c3L@FL
z4XGo60ICO=zqJoJRA%WO3iO<BqoVZbwXLi*lwhcKJ_&YoFz<VUF47q#uPEMKlCM;z
z@a)=<JL=bRs(m9k?_je6x-z7-D`~@&Nm6>eOkL2`v7S&=l>;9o_FpgI(uY55rP*?V
z_u6YkNj33|Uqflo+BI);rsNJoi`jDUg&?!kt`zO9(#C8vMj<U%uYV9rr^D>SYs~;w
z`(Nxr8hy7ef&uW`+CXo90-MR^5WLi>AmKx3FR5A&8nYbY?awBQ@zn?vYb`)SD=lD6
zH9)K)0rW+4d@bq!C6r00@xOn(4#esH@+Vv5JQJNZ%<p8rN<?T_IF<MeC_kN0L(~p*
zM&?Z!D-TjYHesgjl&<_}D*tu&?d<6KPq|w^USBR$;-??4&+?Zy`HL&Cv*0^3UsB@a
z^~q856Jg>Xv&B!2;?u|j!o`tXWQ2(SmF%@zeRqFMKQwdKf0BBcIPr_4>pvz`E{=Y>
z{v*%4&(WEXt`>Q40>|#3{&zBC?tefwgJ&W(uj+!>_FqUxl?shI=q*YI;aOPLU&tdv
z)X)BDGV6UbBN|c2=fejc!;A^|j$LNz3O0bnpp7M;ieo9PPMC4_pMx$p=KavpgpRdY
zC&u??)S&En(q(0=eKEQd!Jn}}!XFfGWV{utVx5-)y{9LyEY3sFTck*XHQ%*xnY09I
zI#daFa3FVJ@hhSz@g(nYVD)ivEvw#ZD#INpzau5bwf1+cMEe)?{k4+AT3fm@(U2mD
zi^Ca4CG6aZPh<BwVjMQJokVrgg+lidS^7ll%k`%xC-eQId|ICGs-si+hFz5ZoRs^z
z7*?FVbZpdrL!VcnLZg}%jfK(;6zF;18`%vp^G|Fv*?gkNlL?n{bL7{3(KUa=x^;_#
z50))7b@rm?`g8kJ^iD3JK%HA{SdYK+&Ul3w`m8m-@?wvErfjg8t=ERz>sCO$wWB<D
zN!{{}F<9`Uy}`+i(<aK1mU<o>j4v-QkKf{2vBT{Sbha+SokIDg3!BfRi+r*;-hW3Z
zrSbQW^wG)1Gkx@8;F{n2r5ScZG@w+wZ`DM-7i3`!d<RYE`H3?^oGh;p5Ynfh`7Y+F
z_H^o;5)YY7?aBK~hl7u0m$qeAm``fjB?Yai6WH|nUdj6L>64!X^G4Ez@zoMdaF^b*
zL%_9%pxkP-Q^CHi!ga%9=J|CeKrEJT^9`HCsn8v>O7LQZ@s{SOq~6L|I-FSZlK0AW
z*dY55$DIj^TItct6fviJYKN!z-&#*D$L$y2zNlW=I@N}&v|@7iKveh)k!p<d5^<k4
zx1@mR-yz7?EuNT@iAzR|4!0Lgu!Dy$cyb)IFyDt0JTH4<5&i$o#XtPv4`az0JV9Vx
zimptEBjbPEE#2<0)N-X;pH#_D{YX(kHCnp0vH7uTqVuwyN3G3UA8jnQ>Wg&EonvEI
zYySIKo3ZDkGWUmmHgyH(WA&48kO2Jl`p9VeQ+wg41Jq~4Yx%!VXrKCG2PcQzBg^yi
z(N3$<|3%xoKs#1ddB3MPB?KtX2_O(Cz(64tK#K4x0w_j62*@KMkEm#c;uSsxB2{3t
zMFT2^M{9f_0Tm-6MpTRl7!WZcj{u_KAx6Z$xjh`;&A7Km-*fx+=zGRD`gY&{e`n2=
zId|=iboX~N#yRuMU;cZpx#n8?y_3T`FPr{DOSr=ZHwj)>BknMYD{;^iJNVZs%Ku=2
zr|EFpxhm<ce_hL5df`D?S>njoyTl>?;Uy0J4=-`pUtNL+Ex05m-_ajzLs2SjvO*gW
zJf3(cuI=J{=yHA-+HTa`Rt|^H!HVp^gi1c|#)F)wpy@+-aXI+qw+0d<*hK~>jz~r}
z5&xyg62wI2O>1s^d}QP*X$Sx3(EV%enEZot5}&&SleFn`&QE9XbkmPR2X2;Tcv@~*
z6#Kb-FTDJ!%QoWaLHs>EkJsn)!Nqo#KRA%p!KdGYv~6Y`4h=#rxW{l+CBrEOtK}9M
zPFL1o=>GEwO6Z9ET>QVDo@{Ei$WY$+uU1jwpn-@y<y|=omHKn$=t^=QXHpDydaqSK
z_vA%z(MCOmAq}{Ip_HakU%P5%r{;6w#4zu?X5FwqnBL<F((|75m^07>^ToqwS*MfG
zy#3dzr}z0jW3DXvjn_<Ar|bUK$?7;;=BnR)U8(vb4WBH_8-($1{g>1Akzx||@Bg)w
zr~AZds?#rV!iND5Nnd_w`trllmmfa;PNrbX;f`#=(>8Nyl^00xF(}@^oF2sor?$Gp
zz7-uh*#2X2+>g2Je4O^8O47z_PvYrO((B1tj;FZds7=-D%GtN_S8|p%UOQ)ZWcGTJ
z_6KqQnXG5+{FStQE3ch5KDvaR((6eZvgxtoe<p3;%wNgcH}cw9Pv_C}TLFWsDKfP=
zRfBs8)Bjd1dqkzTtLB!ISc3XU)5DnQzT3ok?G)94<+Qr)5I}L8O6VA1z1jx5zjd-I
z48n)@6za{twtWbs_-wt4fxm(S6^9R+Uh?Bt2TU))+VxByv%H>sgLd$1n(p-Ro?xHB
z143*bUZYhxjFTG3K^Av4!5xEXk^QIz*Ay_DW;KT656N7Ac#Yub;DT`Q@1HjZ2e^#v
zwhb5(wfzbzAP39%pKJ8}5^84f2<~-gDSN%qWv%}YEMoS-!Mzq-g>>IQDZ?3T(t`uz
zxNhmaWAIfKL8p1S3RfrGEg?KrgEGoQ3wrL}ao_09+Y++T;3&+-3>O(L#)E;ptl}X~
zEB2*2c!Uv={Z*BNLH7v`yn+ip!POOafyZ60;w2mZ|A7J#Z`<(llYjbq_Cc3fBfO%m
zt`E6~Zcyv#<6hH!-fTf6flPvnRUbJ1jMIuIpZcy3;<|?W?}@YPLhg%arq|g`Hq#4j
z?4(@fWC#4*<rW9uI)JxrAE%$yaTkSn6$m#S$^2EZ;Ka^l9el7vhSgsX<WhKE#eG&w
zz7gwVe9GuTJc^DBh+IqX@5&DfzW<8Pht2AwYP21n6_e!kKW4nT>OS3b>19=14i0+C
zo=k74O|N_htGY1UYO;lpHT>c$@jsC-3Ldu%?sMB^L+?gJ`2c742i-}kX?}WDExv$%
zC4<@GC!TpWo?Duw7(E`xZ1(|<!w0tu_DR!gqqui8eLzG?{|+V^+)TtLx!nzdEiP%h
z&s^b2D_pwHsB6O0%gu-2a`W_si_W17*vG#!__oAgNuJT;D?IRU3cj`z8_$dJRIm(3
z+TEj=Ms(Mu1BR7o3h_IL_Ie~3g6S1vT;vTVV|dD?-8YD0OAt|$b?$qVj^T}m;6;P)
zN<`+^&*N#P>DL7Wx8D6DO~JidUJLZ(k}Gh!kMI7ReV_`p=0AAlBf##UR+GKupN3<>
z;6AH;tRYP0p@x0A5u-l1X)|5W|IeT4!)w@hgg<epZqx8<Ca~RcqVS#YU~`T4{H9VZ
z$>Pp#y9bG2OEjHHZj;38V!^S|{y}=~^2DM3D-RJFm&?qa>orp4_J7)!Ek2Ssz56YR
zPTQHKI-LhWGw1P^1#VGX7<9=cge_3;4FkcQAlaPo*%G(EnLd#ae2!te@NAlXj$1$6
zg|9PVx%f$5T;Si^J;)WT;j$+R#%cB;lHho6x`&g89)iO2{uOahX&LDBp?n+<cctX4
z*cF4@bKVH!J@8<2E_c=N(K@$t#6QQF?SJ`!PajxDW^Zgg@v)dKLStPCF=l|>hyGk;
zID>7m)?9Hp4q0$J9^W>Hec0wJu^YG|y$}211}QW#Bxw#7E|T)W_gTt8y5T&6gty29
zt%MlX%;^(}vuC8x2mF^6{O1n0p+5*u?gTU4e__Qz(`V$bbWfe}e>n5wwtf*rz?zA#
zFm~Hdy+-GGz>@V(4dMCIy-{*`hzOrY+Iu^{R_7UJ`Y_UTlgwN0?f@@%x?`4f@N}L$
z*A+aTH+ye7(GOZbo!$7Pr~BRw+l^okiS~l$l!B@9KQnDa{r@%bU{j0o1V<{UJJzLO
z&IeD*1P3(e(x$5}xPYHOlbe9LgZP|V{Ode?8xg<AlpAS$h73=4Uc{ppJSpoR@x#{g
zb-Z|+AG-|P$`2OB)7SVu0v(23h#5u+kFQO_y~*iLhuxkIZ?LTit_Sl|0g<m+RRXap
z4L@qcmV+t=nZ2F>s`t}LiV*IZQQ6Dm@PG%k)3qVkPpiP8e6|RO^$E}S21g1m2xifL
zDu_FLV3g^qjST_5+i-eVJ^hG;I=D`6(TF6C=V#C7_p0yjzYRAC#I2WKQ}Oq#C&AM#
zcAD`USJA8LrT925HU(I2x_{nVJ*zbxQf|+u2i{j+aS6Xr$!$*j-W?Czzw?BHj>8dE
zP-VLgOrLXgTh8gj8(XaTt^)e>Lb}R>8-Keu=+N}IL2tc+d#n5i_uj!LDT9xSo)fGj
z89vUtfBIxTMm+5dx6;8T=E5t2X@<^VTd#IamtJ;>`{zN}L!1!oC9!hwpW5S-MEGbY
zzQuCO12b0e@Qd)xwb+Ns5$v=*d7dcx2_@Id(1S`iwmZxJ-#Av2-?}=hw*R~^*FU}$
z^xsoHe(&x_n}?i`BIh6Gg*@6rH})B);2U}UC`A1+`$USW;QreodN7lCd@wyK3G&14
z{lN4E`LsJ`KiZvpBXIE1{WLz2afLf7!QFg(rUu^^<35J5-RvM?7Rtv7Ha7S_jKRnT
zzak%w+~Rr9SwSQ9>;n!8Fre=F(Agvh=cw$15Ap}A57%cL68L}k>mP^O?x6KY#_hAG
zt9x*<Ay}EGs~v|V8$9)=*SP6>({<jg#na=v=_eYZhDbBLA~AhcuxSbXKbf8${9uni
z{pMkeOR!1@XAr^h&Oz&QuidR_s=;8q#=~YhJM(wcQ)v7k7r#-EsbHlIo+RW^@bpnY
zze~kRTMTsa4Lrdi)3isyzZ&A@g6VfQPviM7Sf2hLPi_vT-%*3@hHN8(QF$BBM1t{h
zho)Ge^kDFaiqF5{`_88Ocm5lWj|Zij{`2?g=}558^IwDLj(vmrPM;UwTm8Ey_ubIb
z?II6}jcz(^xOMh5L6`7I={3_Y!MTP<+PW~u2Op@JK5`O#DTf<b{Uwz?v(Ohb$_8Aj
z6MU*x)z(d4etakxc7GroYzwf)sL^v9GYrb~?8+6vUp|p81>ey$-P@RMxR1rB&&T)U
z28X-ThYhz=)$wPUJa;rrPp?u3r(5B6XUFnt{xX@%@x26?byLbidcF6?sRnnR{HAwa
zHrn5RJ>T?TVfNkZ{u3Vut;fGu;dR<Ac7$@q$`9xSCojQy-qC?N=$`uk*g@-$h>I}0
zE*Cx-4CU#*9W*E!KiQj}t^j{+DfbnIvnvs9`UMpVw)g4R$c}R(I6?e4o{q$^EY_E^
zaUiocaM1LJ*J66&|AC>}(@UGUJ{r6i9CPp~X}bvCj#+{`A<P~8<`bBF_z!D?Jn$Zb
z#IoFZ1{=R%K9~oDNwzan68fN%vsCl~)7ck19*cebiKo8vy@i8jyA0We@_k+>2m&D>
zE)%<1sPYKU%jq+^!9WGe2Y&@y<6v^)yJvAqFkMgf-=by7TDpSj^MYLl+o^Le`Usw@
z4L${L9*pGw67{0vuc&?;A8W7RDjYsO!0*Gu7zE$1$QXD){&4)yl`Oum=j7u~!=c)h
zxXL;G*G=!l*8l|z^5gEo4TKBV1^=ZqX!|VuM{9nlJ~*J{WgdRI^ZW~tPZei294_1=
z4ZgS<AJoBV&Ski6J-e_wi*ptJ6%{@#hlQcWgM;|?A3Ddq_k{GRxWI8aCYQe)jDHC<
zTd=ZubM@$h5B}K4K86pcK!@+9yWpaAS6q3?!T3)TTyE3B8#i5u&rJo+x@x5wEQ`wE
z;=Np$oUYQ`DFpS}2d7o|WF4-m%&FH3_4nMuttaH*7aik!;rAQr{jHoX(wubs@!0sB
zbo$x*rw?Cu__`y!XdV7z#^&=k&aJ~tn%au|g_FAT*KNXwI@WO(U3BH#x`1rP2EhG^
zkLtL;F1bP&&+_Ni@gZ!SVa=`Ec;)$*Ur^cb5&pSplW+FF@JAZUN*%UloQ0&gV&_gJ
zS1<nt*lPT&RPW9HoUbLFvjn?{A6YKpcnbDV#a;VSda;-PtJ8~-xbzRgPfYtCclvb|
z{K59;9nkH+9Zd2H-d{+5)XBuYq33`YS)M-UR80HdW4m~5U&SxB{|0(^$@1*~N%#r1
zf3<5*?20TGQZHGa=s5huw13}dy3BkTmhEqYAHHOHw*Madgxdeugrd1QXSe!?cHqu_
z$?_ze8!_!am<twJabyXW?Qa|Sw*7O#r2U|u3p-ud2z2w#&du%MmJ=g-+A@B`pN`*7
z7q-DL+Rg@!`K9y!Fy0a0EzjY?OWOa;OMjdK`JI$MXqj8EoQA>Qv-Vv;uaJBR__s`S
zF9`mazqB|7+xB7EXjJ{kV%p#25?%T4(CC+LUvu*}f==s^wCMo`^LVzNOcw(W=GQ_}
z=B?*J-U~^YSDwF-e=Y1}%Y!&UezWb6*Ka@7`*{((0sSh++X0yVTCw9S&+HVf+XFT+
z<5y>#{yf-4#a-RzP5@8AK@;3A9wmCZ`(fZ+{&o6zrTOcKS)9!U0t_$LkK+|DlY-xm
zU+2%_AANIxr@uZr<HyMS<U7~R;#@Uw`nzCnobgS0$J4OinDLKx9H;5b_~!nUuV}#D
zKjT-qc30%VADQ*H4VSMve?8^-o6_|0s`J-K#px2@bpn3=ml?mZPKZ|vKmX^9Uo|Gg
zYhV2QKQn&iazN+iGMFNXS$)<A<3D|G#m+PR)$9*mTQ{M9^DNJHK&PwJiUXD2y|DuG
zVZ~v|xqtt^C|oe}f5ovg{YOXBKr2wE6{jk`<air=qssFyQ_kNju9)dJO&n*QpHq6)
z#l2R1b*A53o5B@+=zlQdo2pKn2LHv3e-v@$wPL7v*-`9YSG+vyuiiYY7^{3FPb{|L
z|Cq(ulyPxjSN!XYZ+4j5uB{TY`gesVz;~VTpEwTr+*WI6aW<9Q8%6Nkj9*oEybYe8
z@hhc)H28aF@qgvyz;jz|RQiE?1Nm=t<xKy-I?VmUR-aOO85iomfNW*^pvHHr+h+Wv
zo&<vayEA@tU-6!bpPup+L+F2_c*XJGfRAT+F1au(VYm8c&v$mXPP^6rJBxFb<o`CL
zzH-JlH{BAL5A!J>=N3nU{p9>U(7XPw9Qk+V<_|`{+;;xoJBpv+=hdyn8J?S0>&um>
zZ}7r|nJ=q$g~QHYfcUOmUC;T;XS|@c1M{Dl@uT|F@ccdh`58Z{s`!_|r}^)6;Tpxi
zJFAcEPr0F=|Cx%@Q2NJa{OG$Be?j#NlHkRD{a)$cs`P3*c~x%8w;DqKzafs~S#bI^
z`2Vfqe0COR<%(ImvR<?KmD?)4nzt)=pXu?}^o2ZEzGYU2E60wf!Pl$#@VMhJD^Ho}
zH?<xAB=|Wq{?VG_S?~|f_*KOzU-1a|CdDgGkAAQGgyPGN?+dQ>kDHfVoFTZ{KVIqT
zIfwbS@{U=YD_y(u9q=E`_(#!R@WT4C^1&pEO>ZH2B-)eL%3sd-Ns=etT=~o_&eeIR
zW*uIf)ftN5g$Q#i|1#5W>bW;g09X6R&B!l!b>}X+9AA5P(OmGa>n@(VdXxL((knIu
ze^oB39kPB7r{x=X9=QQ$&lh}n4v!UXz=gT#=jZ0|xEQW^;REEs2X1C>Y~W>%IbN>0
zY||wh@TtwqacRK&^3P)CaQBkmUpY5jI{3!74Ikx|-8o*C-!Q%9I~P37HEm%I_hL8T
za|?6$uxMoi&XGTIQIOzN=~6`03#uQV!|lWkcxHQZ1#xhnb#61R27U}@&eO(tscyrC
zL0iE`H8)H@s);IG?#jT9SFgC>!}tLH98be>J8NzOPr)|?XWb0XbMXzl5gIh+y$zeM
z*ua~{b3u<zz2cJNKEC;)IX<RzWw=mt7i=)iUx@p=o3|+E9KZM7EsC!Z!_xwY#_uUb
zE$}!H(!{5DrmZ1GUgg+u#))$r$E$E@^L*3iX?>?f2>x~4+(p&%t5<HoclJz2js52J
zoDHrej`&pW0E%(>1(#LLsPS7QgOQki>6aS`RqCM9)0S{o@6rqOFa!(BWVxU^x2|&a
z1`KeJxySsj@{e3}^+g|<)!Kc()271?-IA?8JV?i1s@-rgF0oHj#P<YMIrVU@dk!BU
z-C{^CzHsxjh`4m3rs0N-_>M>v`-~GeT)gR0r(m%VDrldD;)T9o?2*%z)j8D>{J9CY
zW;R@K<wxgEde>PS&OP(=lQx`s&Z*SMFol|c+!T2_U7<%yrZ~YkqHq^hrz`UYtaWqf
zUa+cc+I%6tdm&hd{Tdj21y)d?&6jTU6iZAiJe`v4i)lX?L-)lTX66MCj!o-m=KKbC
z>vay(+U0U39wox6copx+1{)Ku&0LpE^)Py5xW;t_AN7HI{-(<?E3eud%xYX0-psmP
zauNPJA?DK67pryFtr^qt{@A5ex8h8Dg0CBxZrm=OZUk|j$P?6e;zzEp1aE-zdJ_4{
z0JvY^3;6RK{Dk$~5R-@XyMwKd(C_7VSic|m!4dic91rV{2H!hEf2`vneQ-X`ojKd#
zi#raUrzBu_Jxe$-_&hoLIz7I)_61^c=EGwN*2%xX*TEq_%0v7C&KhXWxa0+xi|`}I
zFG0Qw$v1orjQh%W;K#qf{|6k+U7R=kTZm`4&_Z%+j*Hg2{%*ZXh^OIG&+*dwl;f<k
z<`U<e82*V6Ps3;YPldS4f9rn<aTkA^jWPVcg?JV|;%{?fh)bL=hj?%t1O0s=F8YT<
zJP)7oUkP#1|9yyaT%k{J!bQ|Av0aE4ou2b5N`GjGmz@605O?_`-XG#+rw@;d=)>bu
zar(PMaYTPlh>QM(5EuQ+Azp>g`h@4L({CHDTWzY}Hl{w?a=p`at2=$n{M<HNpN7+4
z7mAa1JltR5_lEQ?|LwMm;o)%<eK;TC;e3RL^AY|}(d}*@u8+%q`<VJ{e|=1x2V?l(
zMe|kMKI(CCd9I47!>Ti5^fB{xRe0W}u{`G0s{2B5gvaE+>VJ>X|6_=|{NK2H4Bscj
zoA8m(8&3&wi4*Rx=)?U@yEx(gN}TXKX*qpNf8Y3MC?ARcScprUe+qGF_g_NX#aY-d
z#GQU2W}Yv6Ax0n0N8*Irb$s!F=s1fXis4_5;ZMf!{}IiTd&TgWaZg?zqrW|dhsVqH
zHyNI{j_<G#9cPE5V|Yw`cDOM{ACu1x{}!#^@x&M&)88HcE?U3SE-^f&UprkLqrW4D
z-x=a*_*j2;`uh-fb$(O0&QAZPa6ZDXi-~i6h>Jd4Psev&7t*_Yb`Eb(ME{A9UU*D@
zcYY?Mm-sRBZI@3)>vs*;$Hm$8-e`R)W}c*C=1J=1m^c&g^YF7Be*9}8xf|Q(#knxw
z2P|SgwOhE(T?Rv(LqqzG<9S%d3dg@3EGm9@TqJ(Do)Vwi<24cSW42ejji5a;LjR9o
z5&7&6Ja@#F`rTvJyWKO;?h&Cs7Az`$5uDE*gzB^V#W8wZ@0&X;LLW09c4z%~UpyTD
zw_s8E{002fE%mFniq@}Af$tQdUmv4qe-|S3cf{z2;JZcWIiGnh80r^G9~FO(4}nMY
zcaOh|=6fc=`J6#0{+@X--VF)!@OFmFW4+k33Ufh({yMOTeD-XE7b5fz#^_%H&qe6}
zd$fKpju&$a<-gYfG5R9-dn5E4WAtAIKRrT!cZ~iw;AcnZW5#8#e}(qwE%k5S3oN3Z
zZ)R;yiO`cp>C51!Md+`N(ccWt=WasveDj?#`XPA4e0X!rc)dBiU20=_%&Rolp@{s`
zXMyuMs!%@Z>qGiBe8#yahCc!xv3{jF-!8^aIQ~C?t=p3C9kbooI}2^Zdc8O2enh)_
zSHZashuYn{4R&4x|1DTVef9y4YIh%QI3n8Jhugx4Jol-@=sEwnZwTeN&!b>b`7D7)
z#9xyDkH}{Y>-GWsgyOG>Ss&LlpnXe({ywmXeAaOLACb?#z)|_^8#9jkvThOi?^^?Z
z4}L=V?;Eqe>^p#VZG`@xz#{U03u_<6kB#A+%Tf9-#PFEy@LT>aM*lC-d_VR-qTT(%
z$5Bb>u%7OBN{pWCL{yyc`Yv(qjnTgx!~ZRsuiY<(pB}@nj^TI2@F!#VKSuM+E;0Pr
z7#=h3nV7m|VveseF?nWU^4vdWd$|9bkSBja>&5=-qVwOs1kPBZ=YAdYWdHvL6EPq5
zZ-GbY?}^qQuwxA8zBeNN0UKlZ7h-tK_UC}Vi`E|)Q?~<S>T}?gF>zwX@xX^;^uLYa
zG3)hPW9H#o4~UNQ)-z*x%s9UFQ!)CxWB8*n{Dm0)Kce|TJI3(+V)!XB{PGwcGcE_k
z<bTlLN5@&Wbqo*JpZiy=FY8W#$>V1`{P@>GGW!f1J<r>Gb0K*McZ46rPe^}AKAIoK
z{nuN!)E|Cf3~$EpyJ9$xhnZ6-pCb+j+cSc{6wTM)AI*=<fk)(j<VRvSk2j+9G5H_a
zkI}yx!<VCZj@!<Nc5^&FiQ=cm@JbB-Yz%M5@JC|!D2D%YG(U>_?TGx3T8iPU&no<c
z=EKoIQE`sudJqx+=$LkoPQ~ccF+3l`3o*PH!%N^%{VK=kIgZ>Xh3im_(br;l1DrX9
z<21oej^N*L`r!F;{2ja&l1Kj#e?;kf;EW&E|0Y_04D;E5pHM!>w87rBC4U?H^|lDk
z_3@Z3`P;c2h=~98A$UZbw@<*!_zC56>>gkd`5c=Ak7)NDjKh6QC{8{B7I7YN+@0Wh
z`#gY;?elT$7h{Ct@R50=XWgMcp4*Km{h=X!A3pT&iplfDm^@Eh!eV^RA(YQaD`WTq
zxb7G0j&@ICp6B5w947-76`x}j#cu{bDk9DuU~h0gb94T=j+0nta^|Z!_sdcG#~csq
z|2{_l-=p<~4}t4CjNqdVg&Sk|y)pci82)e3{Nw{-_~|kH6EXb07|uFG^y`$ZqWQb`
ziQ(r&b3O_k75~&bqxor^KWy90tF0RN8+AS{8^f;ykI4VDuYyO+&(r=sT7UYPF??eT
zk7@VxJEQeyaQm|renR~^BYeC%h6epTgX@dZ&!-%J88)K7#XdN<5iUOd!fPS<o>yt`
z6XItc2Nn_M%$WSod@M#k0M~hPoY3xj!^gdDeK{*8&RM^Wj(;}$6p`oIr?MIRg!*;%
zeKGnzctoD(<iR82oO2y`M7!s-!F3!rF6TTF;;s(oo&e5$X(-Qgt6=9xaBhDh+AT3h
z%_s0t=Td0Bka<$#0hZP;IeiH>BL7mj-DRg|JD1=mlz-_T!Bl)cvKQp@uP_nu-^aH#
zclCMSC&44`f4#34&ELNfT(_Hmk2<`+5u@+N@V|hcho4Zt-p_tVtVieNz;*s3_-OY$
zj&DSq^GY$C`@6&N6KeOoZ^Y;ykI|1~_&-F)`QX*y5q0}u9X#TA=7TNph;jMgOEH}D
zE20h`S_vLe&ks@0eQKx<Jk*Pdvmpf@5obdMJYrlneA4ojY4{kg4NaIs@Dpyg4;Ini
z4V?cGyu1f^#5k5S;1P8w7i0AG7=9NxV}<f852N+xXTf*bQh)yaU=j5>e_*-P=lq!d
zZcIQQQMZkG@QC_stb<3?XJbsiHZo6cBtreYs0+4N1pg;6J)e{CF}@dbo?M8ZP@Ida
zU=eXHZh#*Up??xg$7fu`zhw6iPdna*Rds$tY04`_*ff4Z`F!}xU^;#VKH`6bxu@|H
z(&JkZBIngd{yCaomIc@Ou>XjE8RKj2^1Q4W;-Y^LT<7WPaM@pC^vowB{^eUo$GQCQ
zklwX>`3WKJ^1S?OF>yvAy~N>sj>sqY+$dx2hadmK=e}Fc;oS8v@D7~g@DtW|ohYm)
z=1$S+SwhzTqlw^;>AK<m40sBT)))CE^l4hW!tt|UTHmAy`W!7@VSNEi=@02r1bvYf
zudu!hru9n{L0_T8E3B`9DgB|MuTzXySl<Uz`rx_};}0mtE36-ZY5kBQ=*P5ph4pM-
z>5m>$1pP8CULk$(IZdU1Tb-hX<dsQUyu$i4n9}p334uNn{IR7z2d?zTy8N%q$LNbz
z{|@@hrxc^-xTyHY2QuiZG5WgIpD?5j`UWjt;r_P3RQwYqpEkvKh4o!9t*=vr_&r*@
z!g`Lo*0(8wKFAAyhV^4Gt(W{K;CzMk%V1i+MA1TW6AfP>{iY<C(w~&32>KK)USWL(
zOzZO$L7%0?E3D6hX?>L<=nJ%Xh4m#ct#48UeVG=ou%7X>eoPVcHCnvF`UaTNPt$-t
zXeUD74(W&R8NWk|S2%tTOvOLBND=gXTD-z~#?$&XMbM9E@e1oFU`l^Vo+9X%Xz>c^
zxjQv_m;dGj-@q%ZPl4(9V~Q4%o71#-h4oo5r9Ul65%f7)yu$hdnATS*g1$(LS6E*L
zQ~ERN@TsrR;uY4{z?A;XJVnsgY4Hl{n_x<RRv?1D75uTKzGL-#ger*N4gT0t-v?Lm
z&kl5mKZwzftp40Qb<mG#@e1d^1g7E#=gHJB2kI^K!S{hE{rdyiLh`C)j6Myn^dHDm
z2YrSXuTVb0=iHV4yedV|=V|c@>x*DYzadW%^d(xn!g`Lo(w`rQpby%K(APtHw#WDl
zTD-#XIqo|C5=GFrY4Hl{yI@McF-sBjJzBiNdXBr+*C~R2NQ+lkKL%6!3nc!8V!Xn7
zj=R>EDZ=;p(C`(~U!4Tg`X)utr)cpC>oZ_lKc)!!ATRtG*5|>L{zCfH7ijSc>q}r-
z-=_%rGA&+VeHBdUFJ^zJuhHTa);GYE{u0qQ1ND~rw$)!opYc1ic!lHlz<7N=bo_jE
zA8h4}Gld||0Okz*g!Mx(emBv6|2};!<8QV*f;o|#zP!N4_*?aB<%I8n({iI0)-Qp*
zIfAnt9^{4e9|H<L9~$Nf@YGCS$DeHXV@a4Se!_Zc4~*bxFjb%HGw>OQ_MP|%$6@Sq
zB6tpLeFV>g@$<alI0dkv&anQ4c8hR$&KA~}z;=z`WiXyIhxHXOo|lDr6-@OP9$sj-
z2BXIDoy?EC4x{yH_~eZcXWryZnAtqM_663Ryal7<FhBBch%*oJUWm6H@59dGf98d(
z;{(_;@e}Uv5KOn*arzOgit`eEwmXJVb-2{&YZGu4XS+6h=s!-Q^xHW7#}nXM&;C%K
zw*2~><Fq<X-SIrEinG;{;|0sNmN;ebs5lj?--h`ypK6G=9j}FW-|@QTiL~Pl%Y)B#
zGk(+ZMBeFJAzpU89pcP`aXKMhcD!r(Hhsr?mM7RA<MczEI`V<#TNfQ4TArX!{mAld
ztB#K?-!A3&#Bx85OP0?koPIgPvs3;F8Z{rJ&Y$3NnwKeDNPdFtYhH6a9pWv=*^btC
z9nXb0>&5ta%damwUa)+A?06}}sbidSh|?#phIq|!TAgRh@rLCq6OK1SJnJ}@Q*qwF
z_SkOQ^7%S^@-B>Czb20NVO5+}b;n1rO21Rv@iDB@Z^Qf;e+fqE6E6S1;oC~T%Juhe
zQdYnH{S+=F|0WHi^ofq+Sy&Z+ThZsNeii%4IE9d&`*iXmjEcW%=y(}c#ovK(sjt8&
z{k-Vw;7XrZf=_(|M(cZyw_ufiJLW-s8%F6@O&ssSYJJvm##4Ikii0=<7^Ro>{cncg
zTAzl`c9&q3ejC>=Z;u##o?s#Q$rOy%*Bwv8s`v{o&rfD7m-YRVd|&I!@EJd6`8?}I
zUa)+j?s(Di1nWY5$?}D<<7La|g;ztI?J-Wx@@?9V*Dar?j`~K3w;ZQc{q=daE$2tL
zf;gQJPdVNV@si^`%YDBFAujzIhIko1^B=>gJbk|=A<q6#zijzpf6A|+QE?W>jweDq
z<#;m0OOEq>6=#0ncsj(#j%O`@W7+YX<%`RX=Pj50+BF5slgu0ay@q*3%>Qf3;5tvy
zS3;cmF;3O;Bz^K)h<6;XTfRfe@kWSC{HEpeW%!KWhEaJ=AL9dOJBrKtdrjB!9oQen
z=~*u8=`{n(eVn1?GXJj`SuV#d*NiQf?btOF%Vm3V&64FSv+$YcvgMNJrxGDPh7bLx
zQkKhn_*B~R9qCh_gNc|ApUQ))ddhLprwW$u$ov?mXnCUSc**je(vFucmpXi^65=hV
zuUWnm<Fehl<%?tZ<PFPx-55{xYo|JV>f11i&yV4gcP-yB=XlR@uOC>xD&h1)%l){F
zEPqqQ>6c)m#$`FApG@_ircwFJ@%E?LzT!JmhkkuJX}O#id^%<M;ut>lX_%-u8O!B-
z<kMNpeY-i!6E*mZpSRq%Td>^6DOxV`@Y5yBeVnr8K29ZuS1p(E`ZV)Zb>LT$2KhH&
z)Og8p<EL9zzjMOrJ669<-SIB0ivOmG<2}oF&O6?>T-Kvc4=nfn9a_FPhR^zsEcfyG
zzRE||>rXQ;#eIF2EKg+NBYr&rqw6C)71B4HJ`>W{9nZn4b{E+n#xKCA_zQe~g}ex(
z^gEXvFT*N*qV9MVR_kky^L?$C{F_!k&-U1E8%F83{jB31SQUSfKJ`5qrI-0o?}ID7
z>^JKJ%Vm7)!w~PnXZ(@ni(|)WReT?3V)-h`bIJ0ZCH}JIGEc4rHu0GU^0_u)xy<ux
zla@>TYg3l{_-V_1oQ&mi+;wd>#F+>4$yqM*`P#hYTeJVvmtZ2s>)JB7s;AGV62q&O
z%XaMAn&rN~b<2JHhUKzdy|x+RW%$g$Wx0>jwtSmDeCj)v%Xa?SuH`;X&vMznT-y)v
zGJM7#SnlHtE%*71ESLS=wPVX=K3_Yr+>h^)<%vFg<Z~TO#Q0v909WI?Gnc16X}KJ4
zT$i?7=JRzK%NNJ+87FJ`Jbm(<<x-#P@|OGf1<PgrTvxQ*$0=Dp--XY1%a%($ud7(T
zi{x3gT-LkmYL@$U>z2#7T-UIC7xtg|v|ysfr46pe#mDJbzDpB6;|ySQoQdNjSQTd%
z;j~fuWvkzw%On10k|BNF@f56zFZ=7yq(i*r^sKAWOZ`8SvwYXI)8|9H=y)N-tB&)1
z6@S;Z<E0QEIbOD0=J{tBPsNer-p|x5mvR40-SSmU_^eyQa<Aw6D*oaaKJ_ij=Y@AH
z-*pK-^<B$T8OM8;%l!FF-|}7QGtLkuVm^Fk46gD_<=|7#_O-t5_%f{0%lh(Jz8%FA
zmP?+WO<JC+F~CCdv+SR4cj7qn((zrMpDkGZwy!#U(dttz$IGxP{;HDW6<8HN)pfjP
z^*hmLo^=?d-z5#7ya}V?Z!h{5xYBRcb9%O;^xMAGalWtgsiETotKZ>Gj`Mw`UsZH`
z46EXAM-B62U6npXAN+GPO23V}e*3uuxYB<<OCj`W7^PoJOrC*J`h|+)1z4q*<HpZ1
zU!|Ar%;!oWUWU*3jHmTA$EzXUa=dQ2To3tN!}8tI@EN~p`C`g(##8MsmK<+~__E_2
z%VmA}T-S2ho_wxnxvxV%#LMuR=P<-;j*mjT<@hAT2aYdU?(<o;e7E9Me?5(=gRIxr
zCoJEsOyNTE`V>sWxL=<JS8;Y@U8v7kzCAH{)^gu&&hq(+(-&Y>yE|-loc+-4_8sSP
zN-y*C`l{9M&i*i;n&q;8xxQh!><6!J#_*QqyR$!x-?m)#FV}Zsc-L}YpPuF0mf$n~
z(DDWP<V%+CKAQ5+(?rzg^9ie$c^h1BP<3AI`t|u#NYA{{?&s5%uP(zU&sZ+~3bsQk
z{^G>x^RQ8Q7Hpi=HK#9zxa3m~@qyD<LYzA0S+!i|?dRE!%5#r|(>E;l{c2jibIa*F
zu&Q5j9pLjltKTE(^aHDZ<FeyJtKV+P@iDB5FZZWD&-ZoynW>)X8-3mJ1gz4_b<_s)
zQhblH)2A$75T3SNw%ZN1ujAz5qyCL-h>sl4SuWe*M&5F%f1_aePV^bS1f%Oycf1U%
z@{#Mkjf&-a=HW9=)pFl%&GH>5PTz!$YPV(edvbZkZ(F`iA3k}<aybuebS>Yx;q*Pr
z7srnGEtm7<#vsJY@Y(Lra=AX=7+LP~99u5u?~RG&zHUpF?^%bBc5k3jb=yAWcmh_9
z*PboM`M%Q2_Wy=-NI!<p_!-OPc;JSt<#J!<hMeV+{|$M|_o9yRi!f37l&oIrb3@s3
zS&we0ST6gi8)}yCRfo@ZX;pppDmdP-T*mQ+rsZ;7=!TZ%a$bK!+w#47@Y!z1aybsU
zp=-JCFPBq!%KhRS`j*Rm)f)yO&ivT!$Z|Q)x?ya&&u3!!d>KCDEW@aL<awSO`L^OR
z?l&eZ->E|3Lh{BmOvJd~m;qOD<UIPu(0r5a>Ww+8mvO(b5aI*)Y?t#*#ovo{Auq-7
zvgJFAp8Zg9q;5A>E%*7?EPrznKHIHZ?(=V2F6-TmEz9T2@ENBAqw?|N(zRTU({Aip
zF4qTc>{~9!V>hyXD!w1zq2+s3;WM8xj2d6rkKeciuHvNKxZISmdf6`Blnm)z{clQH
zF2~h3r7hpP4<Gs5l(Ag$zbR|^K24|3!$#zPQ_<>IG7rYDSiR4`YV|T7ZmL->^ZBN_
z<uV^`VqU6lYgjL~+p^s2JC@5lzo{F;dzQ;Qzo~Dz%=4QDmai$mXFfyAWnSGh3UT&_
z`myD{J`>AjeYt7La_R5Qz`8!NzTBL!e7+1H?cSV%QT3Gd<>s{I3D$-BjOFuX_~cm_
z6-VlDb1sJGEtmS-%=)P~GCyxFTE3<XpY77B`6=`5<_frqvt|sR`l{u=Up3291E;TB
z?)%lSeBV5L#&24_ICi{cd2s$iecN&$r(?P7PjBv8?(^aJsQ&u8^(}wX5`4Bhgi&?d
zj&aFHFe=V`+wlpk*0WyJGoI4#Tb=U1rBQkrm%mMf^z0|%{B6>5$^UOtmaon@J#AF{
ztkv(!{xE*davwi$`M%5WsV~Cl_!Gy=u&TdrVSd!J-%2mr`M<4$YkdJe^(~kveaGsz
z8aaL6>USDAPOIbB9p`c?zOVlnT<PZ}pGk-_Kjyg{;!ghszOCX&J-?8!d<Xi7^Mw?Q
z%4d6tlLl9D-oo~%&%r3Y<o|^{xYEmd^aaLKd{r4f<8T}m->>I*Da0p^mn~nLbi88u
zehJ4p?kc{oL(THFd8co{M)j*1(lc-7-?Dsh?0DPqwakP1j^*=Z_~h)j%5$y6?}s?^
zqkdqy@7K`swSD;1PheEP5(&qbVRgIXDgPqhS9%%WFD9*C#_@}(7@oFV^88}P@;8m(
zBhN49U{t%?F>mrbjLI{^JjhEhO7HV5gDbr}m-5Am<vyRP<r(I|_zjq-_)V*q>uFzX
zS-zNp&p2(%eY+jYGt7_rK8$L2mlGTxz^Z<2zwG$P>U|x?Rxj6EzBq~DOEH}7sCFfP
zmO=Bq*dOHIOv0%AWxh4j;3`gL2%q{ajM7W~&79TmPaXAn%U8KNGz*q{ebI8SFIn#U
zRknQB27I<#g;9CRexz9kSN)n#!Kc0nqx7rxb-V?u^!w)>@4_nmPH%O*2dnjE#|N-V
zpLF-#n!}L3=JXS*-zMYuQb^A{kpGw157q8&3CDA=s$IE0`K5x@FVbh6Qb=ESybP=2
zuVvoUS1jM2n7nHFuEN<r702uAmdp5lsbP7t37_#>FsffNZ@<*B`u#^v-?w_1w_h4q
zy<DI968op}+=k1uUB**f?rVH$Y`M>WV)<@a_=xjm8lAuJB)E!yK#D@>(=bXe`F}YB
zuJk*Ip79iy<C8DvEMGN-&-i&5t#3JA3~|<r`jX|VnvRz(mwJA=V)^Q>)7LEb`PVI9
zE$uceU&ZB_58GGyA5eFk{ZL%CCtq$`zC+gOJC@6RhcEXmm+}2_-|~eteC9KRi5jmF
zxXQ=ZXKcBz&ywW}lIODJlIK?vmP?*rNm{<ItLInJ;1PL#C1dpmbm604Ut#+ye;+?*
zd7|j_1y~h-fj;B#eHG_`q2py(rI&gBm5SBN@yu7MmZv)K8NX)veAn^1<v#z0<p(C5
zz6GoD*<tK>8&>6iVA^rEqx3%ip4Go;;`DvXcP%<Tu-xZAv|O&gePv|1@7LJ!)ou8!
z&k~HvbH|+H%dom%wJHB9>!I{-eBAM5NZ)jv@pK&Kjds6UfKhRzK3^?{^sYW%Em<zx
zv9Fdxyak`}tCsIdpPc<r`S>_>%ik*PHY}I=f3<1(>N0%BXZtF?T%Z4H+j1F~uXZdy
zC<C8y`Y=)T8Gx(!KA&NTOC83RFZSUx{>1V`+3_XI=N-R=Z>x5<OA#z2Z%J4#$E&v_
zEtme@!sS$)gNpDOhy9M|?=4xYm-`F1<Sdsu+>*Ck`gKdea-UBbT($cK`pl;Sqw?G}
z?|2PX>9=RSsIS8){Xtxwya}W9GS6>mh4cfbZ(F{Om~lFmAH+P!yO#TY^(<ePhfh7*
ziOOdPuJf0CMwZL^a?99q+5X%zv3y+{KHFuTRD9Xr-Lh=?IxY|W*JzYpwv%5=SblJx
zLg<s0uPZv9vRvx(wY24liqmIdBkJ?DoYn6v`n=_d8hqwc2=TJx%uDsl=Tov=j$^;Z
zcB1mBhV(7?Y?tk;_=&vZb;}pWjyEj#`7|v*xbF0ASe1{@vkR`;-E|C~`Sf9wUgrPT
z2H;9B>+jcwAx<6Rj4bzgjx9g91E2b3n22_7<=eX50>MJ^)`aB?Wyh12%YA`c(;@Ei
zyfqWUvzE(#;ntkxa{PR2-f~&LZe_kv`4=ts`jX|V%kbG>S{;Wzc{Rjqj?-#A^Ps*S
z;w{IUmdpBkE8kaf<T}i)ZOgsBW4Rp9-`cfYwoAA6EcfHsx7?58FvJJ&*{@LyAII>C
z<$ipZEcfHPY`KgV%cJY#dBSqpezuY^JY~7mvz3nF8Osmu!$%!jS<B^qUn^(1)VY<n
zT<Y8^hPbP9s}$m0_-wZv;z41+tCk-EH_+ECm*a$1-Eygat6{kux3rouob9W5>-BBR
zW!zgG%Vm4jV*gZ}y`{f>@QCeIi*-_ZdG4q+3~~0KbsJf}ICh*?#gX-;HL-lhWv5@V
z+{fYjD$XIfss1(^#bw-YOIj}HYqzB=mv(PUTQ2S1ma$yU?{3RlzPbz_b-0arseI%<
z{%v{752?VXzF@h}zhwC#EvGMA?(=6n)$ZDc(^oB@A3I(T@qy!9PQ{V=c3abOnOC<l
zFQq@E<Koap%&XhFRxjI`+j^GEe7mi0x$iIYRqZa0;j^AY%l&wbESKY@+s2mrI1|f#
zyGxdP{j%k9UFddTo#(D;f`#Pm3Cm?Wd3)0GL;CQkPgySW<o1l^vYos=Yq_j<x92RE
zd3Af<a;e+x1<Pgr++GTC>X>KQa;e+x70YFQ-d?p_=GE;r%MTsEXZ!|C#Jsw_Y4yI{
zmgS3M_>9wrQS(Rk@3(g>_i?(G%lX~yJ<E568^rI!sQB{S&h6}n;;Rzyna|L2Ux$(9
zhlzd(JgN@MA$=M?;(wh+wR>2e0G#nOFFBsHT=MyP%JMbLn{l!*5&3*QXZ43QoIY>4
zk6*C-u%6R1uc-KCt6wvQ&wMJD%kv>$uUfu8<5FL<d=2v;uUjt9b$p%uP<2}z!>7J!
zx!l+OddqSjr){~+tFLz~_xW@!_jT)8es}^t^BKTI)op0?J4qczmivB<Etl=j*Ox4p
z<D9QATRvZgk9@wtyj0!fdd@eJmP^0Bk+S^o0({2Fz^H!7{k3o8Li##<>WeT+zvo{Z
zFTtvO4sSbNfmM1rfBZ%@q#rqb&2pcA-SWeioxTYh6~ATmN93HoZMkfpztOSWx7)S+
zh!T9(p$`+)?f_iX;RxnI{m^pX?#OcA?%47pm>=UT!RU4;Q~pgF)$Vo)$CI#HUw1qO
ztMu~x@Hf+z%e?w##&XH?n_0_`7{EuK-^{~AwOasJ?ar6sQ_s38zMgrLmo4}0RxID9
z3!nNrOjNrKa1~#U6TaEBeCIrT#^Jarz3lhD*^c2I%U74-GY<1oab(=T*|U7U44?V|
zjMB^g<(osx<#_L#Bg=h##+I*7!Dsv>n5g<JTfH1#-ND6FKJr}69SO_jI=~%C%jLSz
z9c*94*>3_L`P`AVe09z7Oo+3N)aNXhak(RJ`RX!!>I)%0aJ*=_?^nrk-><Uea=dp(
z#d6=Ts^#n3@R?5?M%6*i3+`xGF5`Gd)AIEl_>9wri5SN__`Zto^JM)Lmw9+c&vM^x
z-}3cC_-vOps@;**ADMLevE@Gg#PYqCot`!#{<rwH%3qELzLl_C`t>cguk_pW;UoWV
zr7ZVx(w0k}-^y5iWEMW-<X}{uvfunx!Rl8RoxWuC3m<X346E`ylFKuG6-LFE{pPo7
zR=;-1>Fbs+jva4U?(5UET-MWXwJew8sBg6`_x0&mek9{E{~nCWU#>HMYhd*|kKt24
zf>C<kU%s#E<MW(YF4rZ##d;{c&vV)GBfId?ZaWF1+D&8~Pr<4<M-ClNTmDw&%{W|6
z#gY8mIjfiZnC-mfa=)@&uw3$Q7cI}xXS-#XsCFyhD*sdiKJ``07srm*EcbcVL%a>2
zaTrg<UzK;fX}NE=Ww~#+ZFx@W*|A*aVY_R&uTRhNU6b&c=Kv<EK0~WND&h2OU-xU-
z@v-GzKe1e%OKC4z?)8ip5&zr3noGaF&AgO8=kob>3S9L|)~|18tbTn1KI-u8JdD!s
z_^*x^U{(C17?=7IjM67tj+bGzKIeE1R_V8v`1O#UaT&h}qxAbd?l{{~@fRkJ_buO@
zm~lohDvqpo-yVajIC6aZZN}5Q51(;D<F$Lr@nu-0mvOn1Z!3OOb*jHJ2^*2mos6gT
z%p2|AnYMg!44*t>xor3D%vydF^P@gz`3}^P=V7ASEm$t=*PTVneSb@q@7ICP_!XF_
z{#LDCjzjLOSuWT2?yOtx+ih6BZwo%#rHyL04X*lowA6w5DlYrMJG++qc6*i|orlkM
z2QX3X4#8D?d9MD>k>xTE?;Kk$$N6_oEcf{=S-wz&k9@vEqw?9|8;&PnRX#^o9Z$n5
zy{s?a$ymLdw|*yUxm@4-PR??v=Xdg!`#1&54}lxx&wi*pr4HXISuS<>PTBIqm>=uF
z{;7VwvFUgXR>j|=?|1`N>3tozoYEgXaQc?zavkhDZOiu<Ieo|SHS9n0>{{;o)w6v2
zq|*;!qw-`sD$h*D>BpAOOS==x<^1tGOO_uwfX_UaEkC9<<#*AjcIEojUCdW;Ie)w>
z72-t(SV-QLwtR66pFCr^oR8m?wcP7-mTy0S&p3I@cV<7y3zqx*OP237a{6)%uUIbE
z6Yi>7F6Vc5)hw6mdw10>_i-AQuOGu_{!Pp0g|{vDaXOaoDs|{uKA(Wk_&v*Ie%{r$
zd{@?s`XNlj{Je|xQ}aR2qwgA9F7xxQiRG)y@EM=^syMP;y=&R>ee3X{|1OQvADDBT
z{Zm}}_1&c9E6PrvhK=agcQfEB&Wf7TXD#>f*}l@R6@39*#ou|Ai&M1vgV=xes|=&`
zvc39l1zg3K`S#ta<;Qg3GY;F=dgei1w|sF7pS)rDTFIwrx$MWk+p^r(p>6pwBlwKp
zg^B7{FQk|J`<Bc6`R>4SIiC6M&~l#-+gEjXTMj<+nZQKl!+vXh!RePRmwfK#+e$Cn
znY)uAKBjOXd3PE{=_Sv*GnTJo-qbVSh&=DkgR3}lU+iw?tGLXEyNj0l{7aTEj^VT2
zGK`8N^WpA_<uV`cu3GN<RkJ+H`Z9h4CaPaetM_@fEMGN-&p2%um8Y+N*K#=yxw~h%
z&$Dm&+n68Y4`HJ69EJ4EkNUCYvVXjLV)=m*pY@2y|9ilOj|mo%-%DC9`F}5E`P-Nu
z^%<Cm{J)pAda394a+XUyzgGzHGJM7_S^hTmle}!X&$D9r+u0uVHJGS8>)@(BZ)YCV
zH!Sz@o0h+w?NQ%>iHhH~dYNzE>sc<(O?|I#xv$UAa@p^HZxrHX_{?Vvqx!YF44-^r
z`B7Y+e97{~vE$2@zr8l)?5>V4d3KT^&i*5QCuO-DH+IsN&x<}|xz}f7c+PU^S0`_|
z^s7^_e0>i-^DJ8K^C?;G<CiV>@hg@eTZhm1)ev8Dyk@za2X*R}%kfyJVYwW4b()sH
zBMYDHwk-E?+Lp`lRi|UQ*LN+K^SBP{r{>%I7(Uw_ggAZjq2;oEbw-xIqYR(=2~5QL
z)mZ}9?IxUlImDSa;(VV*>1F@&eJ-cC<n#Tc<*5_{AWj-4BA@SPz*QWXKi|(<zJC=y
z<K!&&?dC0i#{fR{MVP2|OI9z><9)wuxol^?U$NY`%e++nTd|I8w+^G)mFtAxZ-OiR
zJ4D~HdO6Pge%I=KeR?6DfX{aOmapdW<U`Bly8ZV@mamq&jV+h;>-!VSSC`>4{*vWB
zKKrNoE8FvXxR~O*xjgS-KNOem(YhxY;w=VPNZymST%Jq3Cu8~i7(Vs65U)9&4{?cK
zv|Q?QPs#El=`()Wayg&9rxL@fA>M<}I5o><|8-B@@;z8D>YJ9!`N%!37~Zx##d<ML
z$8wqH_jE1Kvp>}LVbnaAd3(<QT#sWJKJ_EZ<+-wZ#+J+R^F0&GeLhQ;?@@%0_&-R%
zsC;C-`$5X;^KJOlXJC~6jpsR@g;n|IdyeN}m0tS$gM!t|{^bYEOUGG;&vr|eOTT_l
zwtOwzKwpK4YPSZi;(tC3pYiK3ipzP~4;q%sb;2JsEnl02&p0j1eV%R0-<g6>eHSJw
z&z{w<8N;W(52N#>j(lLb+{gdH(DF5`JM|;W-&uEjZ256{_|#8eRJ*=kOO_|g@S*=9
zO+>$bm;hIC=F9M@XFU|(spNRtav7H&W-OO{ewelVIQF0M^Dt5QupX-2HDmbH7cD=Y
z`H?d(r9Zync-eBF58v1NrqkD9RX%&&<#+>D>GvBs-m-dGkAB#;dU<~AhaJm(K3&U?
z$iQd6`Y<XVAAbO@@{#8ye#p8iF8jM5GGE1gyJO3bXMSvV2_~xD<&b_d)&Gb_#g}$}
zl(1ad{ZZ2L<6S*}lm?Gz_eUA4m-YQeS<6pI!AJf-%31E)&0Bs#8b0+!n5cG3;HqCI
zl;KlPtGMrP#d6<n)$$YA9^=$uRJ*dB|4|cM#Xo_|Q{RSBdifrYA9cZ%em&ek--prq
zI()_%z$pEE89q73L2-GG?nh(GeZMA_pFp2+mSI%8Z~Ekv-%F$7zpLVS5?1MDp5L3Y
zdf6}Bo3>o$!@U{H52(XOKKEuVm-|Hb<}8=<*?S8io`BCdMa$pSbG&5v{Md2!PxV*o
zc5l`4)yq!bfK_$avF>;iR>gVO#PK$)()+q~tX|fOd%KqVeAo{a|HK@8_ICgi6@O^;
zzWyW2<vi=&vE{y9_CvQ@fzNhXkBD}E%(s<Z?$7=>VY&48$4Sej-5;kcKd}KH?fy6e
zquO0dpF9hr+C8!3cpg^irT#xISiPJ_|F{^#OEJ7``Kknb=2Nj;u9N(@YPs)k&GM7j
zf5vIRsQhL7^W&D)=LSyS4e9HS_h40hR%E8Uo3nhC@B+AMSL)Uc)n~ovOE!*d2fAg;
z<@uj(#qz~5eDt>)s*ijQqFb|idG4rNw_J{Mx(&<aIJw)jT(%G0mgT#!pUkIix$kes
zav8^N*YcBCU&iUfMAdTuuEymgX?JM3+$ZghEcfk>EkA_)XS+)<s$H2sKjGWD-7>*K
z@+T=6rB9yVcp6sg>yER3O20MpW}G~X*0<r4vwupzU(4|ltk(A&uUNgz!=F^GUatH7
zq-Ocz7(Uyr!>IUjed8yrlj4OkeCnH)%kwrrVZKW5+ihDe^YAAf%VoTN(zSdC_Mh$c
zVN`t*b@=2%7}ai};P@C;>3w}BAwBbEoF&VB{>zq2{`YY))vn}!U&8VN`-%AXrC?M(
zGT-jYg!BWa&sn|Xe_!6}<@vh%3YN?M>%OApKF^Zn1@@D9R$x?~zTK+TpUmZ{uZ4KW
z@w(+QukLGDezNGBA-)8k@mrSr{M(kFl7dft7bYtIp4G1z!>7IvqsDQ*44-@mqqtlr
zxo>2-JP&i<*z&h9Z^oHeF6Yblv41MQT$j6V*>c$q{}fp3SJwy@l0Qv^IQvhY3h{yC
z=@2hFp0V7wo3&i7cl|VPxorP`TCiNk>!(G_PpQCXo@JPb@%ky>SM^Da;Zt9=e4*?(
z>!I|%-MZzcw4A;P8`Un~S8-&2{nNJP^JVzVrwgO>az6Fbp5;EDzU8M3;WG|xR6ZlC
zmwEEjvE_0c_0x&v@0L0*SuV$QKV7z5*3<ieb-yJ3{Rzw8-KKCMd4JM!iGP2}a;d}p
zY0LL?b+|tZ9#Mz;b5<|g=lk=PFOK0epMvF5hx?0``~H?JKV<@+amtp<{oMO2mivBH
zEkBt3VVpWlRKFVFYX10sH7#Ep!)Kh9<;O^#ZOe~cf=_+Na^J76<-T7%%YDE4mLEhN
z;}2n?`Zcn8dG6x=vE?$K?`J<$9ejV;55?uY`2J<f<#~(;fVE!6_ko1vvLAmSY5CeJ
z11uyTNLem*cpz>0yO{^|S(u1AJdm?`c@Fl0yybhO;WJLba^G&z@>A3BsV~DswOavK
zb(8x+53qlVpUUMKr)If~%LDZgFT<z48N=I_pE`z5eaCXSUhzOL#LMuhA6PEOGY<?c
zpD)9wehj1f<@FQGeZQ70m-XcVj;D$v=SL3$8{Q>YNIsab{IrzgNz0|b52h`b`%@2Q
zLY#GB{H*2kW5@F$&U#T_uw3pdJy^6{=GB8G%TH^=XPgR5#Jqa23LaITn&qcw;4@C$
z^7%4+@+M4FoR;MWrkuWQ`DtCpJC@7w$%8%1<$m0Qean3v29}>*g3mlhFi~|FgRA^y
z|M=j<a@qboxMaEPA0J${T=YK!*6}6JpCv3my+PqZ@@FZSh&+Fm29L<|XBo>+Z^37r
ztmTsD&vKT_an8^3mis&lmY)GPh+l$<%Cig}m1o8BGivaeXVvmui;nYs6=%NeIP0YN
z86C%)mLEtR<F_pLb!c0DMjt-)jHlxJI&>{RB;)jb*r+-TtlrOuq2+Qs{IikezTL6q
z`z*m{p35*1?e_S#%3rQW^%9mZjwxJ7_L7$GoOe8BxomHHY0Foa;WG~Fq1rtx?ReI5
z8JAwpa;Z-*Z@KKpdj-p-KE0ylXN=)9pE68TeJbE8&z;insjpft+nHX?a^K&&<vyQ=
z<;6C9#&5x>eBPLGybY`JDfS%i!YaL-zxVjQ(#w9W*SB1r-{=i2_jwL2Kcobod5&SC
z+MR&wc5CpdU$R`z<9f@MOS=zoF%_rCxQO#m5+<VEhf-F*W(=SDG>nQP=kE`(u8PZk
z<e{wPYYOlgCuh0b?|vw6`Em5A=W;5(?^n_Cec2xM6_}`gRYUqbeClhKFOD6rTfXy>
z;|<H@_~fBhh%;}-Z(Hu;cPy9n@u9BeavuFq&vH2~eW)Me><`-=SnlHwEtli@henpq
zkKr@U#B!ex>!HR)jvF6Zwp_;jVPLJ_H&3vTd^lmb<nwUSavArBQ<lG{0-td*FcIVa
zaMtSOJmTS;<vW$&Gfv*}wGGD$mV15C^2M>!GoGrC%#(*Jmdo=|4_7TeGYy~l)GYV<
zy5(nbdFq+3YS-t}w0xUBeCk`4%lJOrw){-$sP9<5^T_e8<$k<+mY>;n`T=azcnz(7
z&DiPLj_TKYiJ8wBMsb<v4^J%j`7Bxf-U58Y`8iEQK0i-@tN4=7&y$wR_VDK^%jd`N
z89xo9<4C(1%ir6CPkq+%<MQyyb1*87^y}w*U-2{9PwI;>QT-}e{hBd+>dP=H&U;6W
zS1dm+?|9X6pHI#5vr<mqfK~bIwaW2kNS}AS4XgCBU;cRqT;+LI9X|8#S}w=iKkr%Y
z^XyxG7W>0ELzt*`Sr65&JRkD&afnNQCzktmmn>h!`l8)OXjHqaZgxBYtJ*!Q?Ks;}
zda2JNX>hF{!)N@A<x-zVvX)DpkK`;ri*;d~0*q=`?#nz<viehtPS5@+z0b31^>W<%
zNG-(6@Y!x7hPN!2>nD%2Etl=^Bi#@$!)N?HjH;Wj&%knDAJ#+Z&su`dI1`wt{_=gL
zm-`WqEQdJrL!4hELY#S!CoMm_?szK1Sr_WlmampL8OzTe!lyoKxy<ul<Sbv`hEILL
za;eWRik6=}a{4lCM16iyv3l7b{i15Q&$DK^&$Dj1JQw<lhUGrbrsan*F8kGniORDB
zuEx>l*|l8Gr+(41{OBxv#_wD1^Bh?2^Bh`!P6|HbjA5ekoPeu5cTK~me#!Dfa*i)s
zF6+yqi4bQ$5$Dllh%;|;=B3(|{2xtQzH=5n^|TTBKgzsR9I4x*dCTSa^U;FkzTKkb
zM>OEG-7<`7SGHr1R>4)f=TzWR&*hYUZO8E@tkSRUIo^g<dfDzh%H@<^u9H04jp2+J
zrSDrV*K-~nST4s!j}9%D>u-;aEcg1c<z7Fr-0PPt_xfeaWn6v<toyZFn_waN%Os4d
zn~cjZ)8MKOlmz-5jMirz&%<hc#_@vX=QJEI!>Txo|LS-JR>e7|<9Hob>9@YiamLg7
zf#WT!-|s@l+pt<ccDxI#;>-N`WzXuR{=e*7zNh5L_Er32IZmwe&~n*6{BmTue2(dt
zW6Ndx@Jq&1@#XyVm&+kugO7ImG)lkwgaABY`TW@NREV=b)Tb?9EIFRBT;^LpYxz+U
zrvM&N=YG-Z3qAO3m+h$hj~Y2%wp`9<`xVQ5K2^)lrO)_v7?qFA|9%r(wR<jo>f10;
z`YyQAA0YAjRxk6a&w42RQ3?2rKeSwqi~8)h())gmEk9T4wgj&7^zANNeJKea?f!~J
z#h2~Lub7wOUeDzem+k7WQkI|0JQzO>qx6#huQHaG3h=4V!$jo&E55Jd$Z_niik6?-
zfzLQ4%MZ&tUbbA;>t9tYFLj;1YI#w3&2rzby5(m#;4_~lOjN&GR$m%9ecN)MC;O-B
z@V+#B#%ErNdwtJxKaPFNef|T>-&cgs_{=LR|1r2~*Vk=gx!l+I)sp3M{rp$UmP<a5
z0qgkhbM<^I2_BKpV=1d&Glq}+A4|iiJmq@AV;ReRyIITSI@@D8%QH3jjGu>5@sm~f
z<OR!p{G#RW8^fo*3=`F_3b=~@juCw7*^c6Jz4|fcrMPdmZuwCY_>9wpiE6iH_2<^%
zQ{RSB@n!q`SjTeNK0nsA+~?D?{1~>!_(Pbed`4C;+kwZ%Azp^hI7^nxark4)mdk$j
z*NG4>!$+K7r!1H4^RLsE&zIp-pM_EN@%o(QQiosXEq{L!KI0T&BI@w#lGV>MZ|ci1
zs$JO*{JLVfJRkMzs^vbPn&s~w!DsviOjJHitDi5!r@jrN^N~C|mdpM0Uw18k{{%kc
z^emVAAio}1F88^9Jq&TiWgPZH<>UK1w)_L^5A{nhQT<)E`n-$(I2VhE|2X@t`0g1B
z7m|;sU?So_o(5O?#W8&9xt!wiob%&Z%cWnB=Pds~4?g1*V4~VBTD`1akC#Hc44-i-
zF}!BETrYaOZn>;?k2gcS44?7aFsi?D9{PC4a^GK$gVLXtfX_Gsn5g~^t^Saf(~m5d
z_4o0y<)@{beqy=LXUXzoDpUOvG!gkc!F*Nzavt$S(sCJ>C)j?JK5coC{YM?1$XG7*
ze<EkOd@kmRyyYn_&o~9k<-W-iMayM-`$Wld-)_ZnAHQn3k6*KVuO58nQ@32||3t&`
z^WX;h7EDzA+u*96ay<M*$8ul)uH~!7@R<+uii*>>{JcDT>Ias~arF~J%YEI(mdkaC
zCnlE5^D|E@S?=R6TP}5b5?JSd?3iF7`D79%qHa&7z*T=`zw>0;a;fK&8OyysYq{k4
zWX^J*XWsI?SV!hrgo(<tWc9M&e6no$F3f{*Dwg|ptCpYFaQZrIRJ(jXsy<E2eSKP%
z%Y1vXZMoNXESK%olU>VwoSx;r&V9>MWB9DYz;dr2TJFbjWVvj&pB!86>p8LfyexdS
zy9^Ui&!_mds;AW9sf6Y7T-H-b%Vm9eDrNb689v&5Dg&e9%lXSw%u8`Oe|airxzy*W
zyyZThg5^?&r;3)JH-yi8$}mxNsDP_{WdHS4)p9v+eX3@;Z?|sw39KXAZNjK_SM?ol
z!K!x8U>?+WV3dBFy5n6~rT2OEEYDNNIDN}~o&(E22shA=V4~U`gR6Ewn1s*x6U+Vl
zS+acZK78tzEtmC(>FD?}uLcRr*H$T9NDkP(%17=`4N{iN{28Pz_w8mZe;;*>pS65-
z*YSLa=NvDDc+erlDTa92=}VT&b;tqVSN-z+tynI{?Sq=-a@;<sTQ1{1Xjpzm3qJcx
ztHyoRKRe!rRr%y6j<X(0FY|NIvwFE6JLp?3=hp+)NyYbh4lVy6b<A@N6V)#BQgPnH
zx=_Dl`M!C_mn~l$Px;d{Dvn&=csgOZ%!j9wmai!=z(Vrrl;v{Y?dfz3&sZ*bKAp8(
zt^+)svt0JSPv<T7`7kflFRAm>Ma$1D!)N}q5p{mL0<Pl7^F>crEnghNXB>`$(#!Vh
z>AK}UPQ&uG^ckmVxg5Ve-L_ngZ=dd1?(5&RT%JdIx@WnsbKi1#zUb+J<=arlJcpM1
zc1M=Wb5l=`!K3Otv3fsVOO}6#^8oEWlYohc^Gwp}WqbHc%5r(W_nEZivYmV;WBKA3
zKHJS&F7xdf=B376_6yJCEth^hQ?UHZ1boIX!Ki*E>W)`nRs0Xt9OwH=zjem(2CUK_
zFY#MeFWa$a+E%}244?UQESK%WGhNGNem>K)+}EdXxjawx%)s*F^6=U25Ju(i>o&6d
zL+lUr6Btzo->)UBm+j;;%a%*Oo(0zJO23|E{Zu~EuV<5%%lv;fWw~sxo=scs<76zC
z{yv+v{Jk~!=<l<6n27#9TL4#iN`Id%TJG~KS?=2{TmB)|k?pemsCMh%s$CzyVY#e#
z&o(WW<NRk^mizj&E%$kLEI*F*VxE1Ns5}SYQF#t6m*bOXN0$5i$Cms2Czi{3&9khZ
zYFD<m&n{ao{rU~C)^BkA`b`R4^-JzQ{w8DfhqIrk!*6m{FYCo`^580;4JG*07c7_a
z!QT`u_jz(T9f!*^P6bBg>D#SZ{aIu9)YmMR?~VCQ-E!Y<!}0^#@ENBC6V)!?*LiYz
z>N}SE{&p?*?e;9+z`Pk}0HfOV<1z~AnIH8_R`2VxZ1r-S{~Q-n`OERxbIA~A9*F;3
z%5r%Q?YXq&=ZZdK`D)==%jNm5=W>>xP=?QT^Drt;c@FKlqUBQ0=Sr5BnK$E9U{pO9
z*&cZnM#VpQ?06kk>7|~}HNdr=?J-W%a#>HGYgsP$qn~SA?(^?hem3)C{2q+TXEC^d
z2;K)*`INKpsUN~9z0ZGS^|D=kZftou1D|mwmdpC}+>+(;Jlk{2mP@~W3#{{8*Cbd-
z{x%5{k>_tyR=;Z+KJ~P!zx!7mXTFNde)hMy5brvDKEwx(7cBSr7cDPKyA^Pi|Jt{@
zIDB8_Q*Jm;tMrSHINl8DJC4&T{nj<dyCMC+@jk55XOfQdeVxzP@e!=j%RKol-&cB>
z&%d2mz9)4YmnF;Pe!*{-Ethfp9T!vaWgLH(uw2IRcPYzPmEoh^-=$$xoK>zqzsp#@
zJM*SKYx(@x@qCC694}bDSaQ5*xy+N_@qLxg`OKT`R$x?}WqbZR=BxENr*FpS+aW#M
zWBe|RiZA2%yIx37pZdP#GQPiKzg0f(OT(vrXt~#qEI*(9q<(C<ug}Et^OxXLzYG(R
zKbzJ0Y|IfXB!>yh<@{)vwA|}cmdknEFm3rpxIz4k<&ys}Yx%}9eCAVtiORnSuIf2Y
z9rY#4&lg^{T%H#iRxFqL5380JTJRaaX1QE<9o8-P{c2cVpwBprr}`!HcG$7{lk@PY
z@53m)%){XTT-BjehEM&_azBnE%Qvz=)Q>Iq<2bS0>z6F|{av>F^b~x=e?9>dk^l2a
ztCu{V=W?oFr)S_ZPTF$G^Lf4>rO#R}c|M=Bd}9wj;}>9}@+?}t)cN_6<uZSsFIz72
z|M`mLKA)=P8<*fSp9V}+K257%&;C>2vRsZso^M;8kp6bSqvCh1Ue52H=W?pfho|7P
z-M;0%Ujxf8$it_81QXTn7+l4d^YP~=mdpL_=UFGE_w6oQenAyJ+I=Ab6VdJqNvoIb
z$qVeCiZAo?g|y|e|9v52`5x4<-K^!S#*XJK_wn<VUr>k7I0egPfBizy^216_Ppk5m
z_2q@K<+43|p<=llC%jOz{D3-q=0mIE%lv<#VYzR&X}O%oz0k7U$7x$G*HK^SSnlI@
zEtmTaFZ3*zdGbQv@(Vdm?AH(`YMzX&-jCPVazB42miuvEvfRg6wp^YccoA6FS^E28
z!g84pFD5OQ`&KWeEI+0OAN_qXZTW#5Kk|&_G9O;dSuXj%n73T6tG`&V+{Z6k?)z1;
z+~;4mT#id$tXS^jR4tcrf06xG^Y+3XeD;_9ju`hBn^rIT{TEx7`}l3k7ZdOqzY7x;
zpY5xBWd6L^x7^oxV7aU>FAgoga0x!!9a-+{Gq&94Ke7BBY50t@3=@(6OMF}9e^HWP
zA^8&ft@t~#j`MxRrQMfOmY>RgGEN32s$IrYan2jVr#@%7tQRlkLwpRM`a+1;94}ff
z^?#{kxo@{@xzzckisin)Rm(42hR=NJFj4(&fUEw>Jb9^Uxol@%YFRGp?@Jxa{djdP
z_j&d#zo-nKc@AKr@*IMzJY_rZ(#Y~Nm<QvGE%)tCEWfA*pZaB(h<1O^w^h3rF>mO9
zp9pc*i#%!h;@I(&<@067GnUKs&);V)m;KuBbCzEu?dC1_?G`MTy8XUrxsPA6T;{{?
z%OOsm{jG+0&2d^)H<>5DZ-n^3>DdphPdMJP-1oO_d7=!T`E)FoasPeS@^@C8z7HEU
z?#xT&^B(Ef(DHrr@Y(Lj^2M>^v?`7qKmUGWxg0<Le#!C!Q}7vo+441oDSw$p#h2sT
zmlKvto-ZdYm%6>oc2pdx+skRoFY3cbJ}+lsBI@>X4qU~VFT<yv`6@2Y$-G>&T&~-^
zT(aEfQ?~qKsY4B1<+C;1pxru*YWKZ;_{^sXqx5qA`*I6h>1EtsZd)$n^>WAZ`7wOP
z?^^E1t7o~)hnM@7`*9pt?&AzC_w^ZBesLK-^O?Xz^>+ze^>@t}KK09%%YNz)d|T-+
zp%48Z5|+z;>JLfFCC@*kEWe}#pK&rUD$iYl0|D@?)gMVY^?4YjmvQ_<0bJ#|p#h)z
zqUEx^{R7)qdY@<6@}tx68K(-P+Lh}qf2f12IG0dIeG5kEeV%P_rI-6Yf9QmG7e3?k
zLVVzO-}1BTj`MvL|7hVu%U4UBk>zJo$9Bh-%YC0eOe|mDhEM&n<x)?E*ZEwsM6i$?
zC1F&37FRi*f>rsytK)da>ZP8etkui<HOg6DVO+MGw_N7Qs9?F=HyITz_x&naUP;4e
z{0fZf*IN4IRT$N;v-^%WV3mH6KJ`r)r9ZRocn4PLw`P9ScVU#iQg*x#tMnPxh57-E
z*4G^$!79D4^B7#|<#WxWiRH3AA1ztFkcH27mo1li{*iC1`1_{`7LtEV!l-;?z565I
zSNaO;LOt7w(&xdI{^S;X>WeT+Fa7;v$?E0$+aJr8%XadQ70bQ8YPoDD|5&qJ?mzyq
zZn>{d!}3xeKJ#zGMCH$V=>D=l)ORiS`S&cB>yv-%Tki88Snl;h%YFVM%Qt4=GoJ}e
zRQ^j=FW1lixNNx`|GxsP`zzN6UP)Lk`Mi>}yu$t<pI6c_5&68rd{sTqt;452Yq`%S
zXSvTOZ@JH>VELsf_>5nMiOQz}uJV!N_E)NwS9<Unr)IfauY09#xm*W$rD3`6Z_{$Q
zj`2#%a^J7E<t4a5K3$loelcIwFS%dvO5bvy=fHBguk^~$a-Yx0@-<obtj`1{DxW2*
zm+#MfW!dsv89w6tiALow$BlnVfJemtQ_||?c<)as%MYi|_-V_fUw_J2epmrM^*NZR
zcJtsWPdWbl6PHu`5H8O+MazA=CClI4bovTxRJ&EHm+LBjs#z}Er9ahUc*FAZTJV`C
z+gJJT%Dl<>zT)fJj?*gsZs8rvWxMyMuH~!7@EN~nxt#z0X<+#wlv6*n+{YhT?&FUw
z_wko3_wko4m-XdUVBKHQznZYz>ywttxWAgR{Magd^y}3OOvJdqnzi~})9|U!SuXcG
zUd>xB^WoJ(3@=(P<NIpKa;fvHWy`(3V)?Ok_{@|2Q}e{fsaY=L^=jR68LwBHmS2>F
z&-g9NeVyBupV5U+J#AE-dm(+t>HC)Z_yfy#rjGGPFe?5|6UWD}st%VH9AAc2dO42z
zGv8MFw>$lx6PC;P{+abqdYPYpPFXJdyFaHbm(O4PIb*qu*PpYN%RK*c&T_dg@aMec
zQnx>|A1cpFYw-U+=H3N7uHs4;t!}mDmhC{32x#!DWg8-6f<$6S%WZJWJkrL%5fhUL
zLXtLiCUOiJk#UlC+;VUEk&y$LBLg`{j$ds8TrnYhVsOq?CWgoa7%^k!DhZh=6R_nM
zw2+e#!9d%x)c5~uS8Z3dW#c60%)R}6Tea)ot5&UAwQALKZ$WRb*CR0Wa6y~GlL!s^
zkFfltXF7vE=qS7ep+P^nLE%}12K^Y)kxx4UgML}B!aETf^j^Jm+4LW&SM=RBer}(_
zdu&|W^Xq(W<olI4;*=+6<GLSwebC0w)%oUaT=#=}0h|2w{@vc7jh7@5N4|T*2n>1j
zy3^i>jq7~(R@%6(-@Qe4@)gQQ{&56`KF9PbJb}>2cX>$R^)|iM|K6lcKfMoe@^7&5
zOFI?bXydxQ>`mFY*7IJ+#&titx5dUiJ-6Dp$EVH4OPC+!%-Xoer`^Usji{vWuyKz+
z%V+3K@3-#lvT=`pw~gy|y|>54y?X4m@$2dlr~EktMm>7<GHBC#^^&)7E&o2imi&DL
z&I#=c+PIc~U&zMwdd0r5jqCB)zKD%`d@5~R`>}o1HvVarpYlX)T<d3F+{TyoAx`=_
z1crXje^TM~2#xw$o>h1wLW5rGb6?7)*Xv#ToFcpfapv1vgtNYhx7m0DVd7Z?hCB<}
z70%GWCu%;-$H0@7ioVmv7xgK;%f_$HD!j+WJ$?4tctcRp=MWnDIfrq|KZwAP=bng*
z_c1W(cPX6w4En!ID!dY*L9g}SS6xK!DEg?4pWCPKxQ**_^(Acl9;S!<eMtmHzL%CO
zyaAyh=Xnu@rw|(So}3PFlb&*ue~XQK^0eA`eHL-jGc@??^`gEG;0FK2q$7Pd0)yU@
zrw6z}zo1^x_u9Dj!+m`=UQasm&)K;4SAByv?$PIMT$gu0U{juZlsx-Gz(<jPf4GRA
z^#OVIM-Uk0nxf>~UuolBzSTB9QS*rdA1&X6O<%$|^R2USJx<=wav1V>`6g}ro;JkE
zrxC$u`KD}ot>^vDY48>s*Ym{vtv0Uv&Hc>ZkW<(D{;Z8(JBT>tY`1ZbzQe|~-`?M8
z<DMS6Z2T+Lh?9R0g3<KQTSOm6ob-JN4Ego^Yk$th!<3u!EQdj_`=kB&BAn#`{Q(9B
zy?(#@K+wi@|9&83<GQ>D!ZtpKdLjQx1f!JqK($S;$FT>ZHhyj&;^Y%YV92S*u?OmG
zd`>swq_4Me-R~br+W5JYoAeDfuKVi)jW({wu?JE%UXnzdd|D6~a_VvHfmR#W?dw3B
zjca>5khSs8hY%<Kb{qHjblAAZr_;u@-5%(&aeZFs0QG0cuiN8+p3~sHHtyL&pN)Sh
zi#X*UL}1v%7|KmNkHE<Ho}7yx3?Ve=wVyv2w&|z$Df)<w>v}&}Y2(_S4_4c_uJ?mc
z8$X|NL(YS78`pMtu+GNyImv_dHm>!5Flpo0H6Tv@3=KV$^eH@L<MZPRcMux%TK@-I
zZ2Vs8i~O?)M$>0IaD$H??;Y$Y!Wk!@t|Gi!;S3Ev4TMSGW8-%u72a#(dc1eA&&HFL
ziauxKdc1dV(8l$6?+}w2@@V}W3flNblO#MRbclK~^m9&|!XpR`KKE)oYSUjjSJB6d
z=sOi&htS}!?fFo>O|RSUp`?v3jU!GusaQiE-A)fR+W4Ij#7UpBaZeA9jo(ZClD-we
zXmYmM^j^N%)8Or=!8>eR_rHgzC!<`R9=dE?x1&SdHtv<H$HxD95OJ2P55Z{VV!4fc
z^?8y*OlRP_KRuMUah>mBz$X1yqXf<g9S$QHCEvpl;0Ax)?haQL;nWxTke^A<@)M8S
z_&wDMPuTd~n!e7)b-O!UZ{vFZ{czI8_5S<e1{>Gy?r_S+J^eT~{?!)5DSsORLqC_i
zpzth0qr6{jS2*=y(Cc<|xU+~pr|7$ET>JmS-8SyY*<<5>6GohJ_8}N8U*==TsoTZj
zK^xb0emHOA+RonqZ1T}|{zlNoJ^IjTaLQ}Qqs#S1#K!+d>F14V;G>l5ji^np#~W|N
zZQPS5VdKFh;?Ub0bvCZ`^G3ampC3n@^hpGU{2reM8~4i9Xyc765BanpFv@kw5rwxR
zH28nDSK(QN2EDecH`<HnbBeyh#`V1HjZPc)<m|HXg)Bei>_ISEzLd+5)6;XGjW5%D
zD3?L+>3Pt`b-(aN-o~|@Zvr;?G$sg~6M8d*U=%su4BPbDPTq{zxE@EnS!v@XZHSY9
z)W&sr-;CS1ZbxrYu2IVSW}S`ecJyYwjeGo)Hm=X#zS&^o6H<s%&PE$A=~K94<6e1N
zY}_j^%RQR>SsVA{Z?|zz&JG**<m|L@PtI-|_v*dJ#_vN^mbVYVX!V{0ZpiP|`=E{M
zcKv4F#?S3T9Qq_1ix0~~JZR${eaObO{JF4=-`9vZ`BWk><iBKv!mAM)^555@@Hj$)
zUi*Pu!lu{d&DGhsuJ>HMjq7^PHQ2be=N#oV<k9w-OWC-t_nc$ny54gvhry?$4{_?D
z&Bi@Bvo`L@*<s__pX54i{MJgu$-m3SJvqB=+>^7%#yvUvY}~8goQ>bti#YSmBN(N=
z`uW(<gB}<42W?!}V}Ga!Pa+Qf{SgEPpE{O@c%_YNz4b?n@Fe1-PuRHDLw}u(>+<&3
z+xXWgANe#OFv@$$7KJw=G~~QP(>pf3w&(s9n_k;nf9q-RHXFYqf;i>LA~5pRcGBN|
z8oa~CJwBZ_?&+b+#wS-J&U||i7<%x^)oau1?+N$!*|_$r{W%-g<Bk478~5bN+xXWi
z5r;f)1rZqXTrxx9A%up0z7|(_1ffZPv%<;Gq_0<a)TW=I&RxG1FQRW$^mRq_ClpS8
zCjS<NHx$vYQ#kpV^jU>F2o3pXJgIQ<GwC}O-d03kt?(>DlfFmc9SBYScPX6wO!}O{
zyKVaEuPL1T4Enz%%=+p>VDb+tocv7su)^~;{q&tKKES}FSLGTA712MS=*iEdPbj>y
zh<>TU$<L%uDm;$RkbnAIg_EC2pHg_eO@A5713e5R5t#I?3U5Sc@>lyr1LSAYw=4P<
zoBpy#6;6I8eV4+s2o3(1^(dVDO!{7hcNWp772bu=q#sl``I-Fd6i$8y{feN%b4B!(
z3MW64KH}m>7#RF#9#uH`ne<VGhl}X<C_IADq*rntsV<^#Q}pC#(l;nPQAFRUaPl+h
z9fc<mn(|++aPl+hb-t-0dXmF_jyMQR`VNJ+A~g6{s`hw<{7m|8Mc-aTulX=E>H8FY
z7ebT2YF|gl&!o>Q`rab?q{90U8uVWeDSQy2!G9LzW_iiaq_1@G-v<$z^!F&7{7m||
z!XpSx`h>#C&!kT(JdV($pP_K3GwB_LClQ+TeF|?tXwqjD?jSVjcPYFDp-JDR@GL@u
z{&LblKfiBBVAA&~ybGa0KaKh&eK!Jw{u@Ds=MWn76&(s^I+MQI#s3hp=_5-1KZJ|u
z>lJ;}rk|?X;~(Nh^bX>X^AAY`hCEYFD7*ooDNnn?TWtDiS%tSEH0gU3-ht5IUy)RJ
zCqje%n}jJ(9|D8^V%5I>K)sptm577>KZ8Z|cPX5DGwGFn{<BCw7j04W@gjOh;Yoys
zJQvMYcmqO{e^%iRLW6#a(*J+905|Eo5U2cE1Sb6<g|{O#>2nJ2w&^FbJmf=t8}zB5
z!kNzCe-UBQ4<az>D_wk$=?wbtT!k0uGnG&{)0y<Dyo1%iP5upvp6N__)&CCG716gS
zdZsh!+Z5hdMBlD(rZea-JfiT{BKmHHGo3*nUaIhpBKn-dna-fU@CAkU*z_wy3Lh+@
zzenNuBKm3<f1Bw{{t<<T5gPhjS+DRYLW6#iYA<ici|8H1QSWaj5g7Cr1{L0b(B$8)
z@D`hX(xVD*Eu!yHct;U^QsJElP5y%lXF5ZkNtFukwdubVR(Rf~pLoc{|H#1L|E;LP
zna<!pai_u~2u=EWg)^N=?<hQu(4<c(oas#ZI)x_@n)Gc7XF7v^a#rCELX*Bz;Y?@J
zuTXdvp-JDXaHccq6AJG_Xwv5u&U7aIB!%}OH0W0)70!Ay==J>ckK||2>-SUMVKM`+
zVScc~cY-#4ZlA(KHm>LI?}TmqrglXiv2kBY;gvS7=kM=S+qfrB)W-FE`JK3p>-q9K
z2^(M4jX29yk6;x2ypsfO=)u!ZgN=LgG}`#NeTb7k%V+TM^yAogO&)R5x7fI+pH>_9
z^wVbJo;+C__w>_l<DPyxY&>0!IOXX=Fq(e4fg9!W^wVSGo;<xa?&+t`#y$PyY&?-f
zobn9XxThcL&yYv!=O~jIxR&Q=(8jfXj)rVp>*r|L#?vXpA<t3jX%zh&joS3#7DXSo
zajl1=2^+6uoc!x-e7eT#ZQPSHY2)d3#L0*9jwYuA+|W;@E?0|<d;D8%Jl%&l`DYP~
z#-I5c{A+@UlfJ{oXERQ`)5i7s<k2o0_vGoe@uo21<kO2_G<o`fk0wvf#yxokZ9L5K
zkbmCBwLI_gvBAHoj=(vgcPZB>^1K@XZqVy}igzn*{M<go$*0=Jy?moK-qfS$69`Ak
zmvR~ThA1ET*W0*07x!+`#yxo&Y+SEDznijgeGckf$HvEYA<leTY+T#<yRE0e+iYB)
zi+eX~<DNd-ZCtnacROs{(`ToRuWm$~a&{vaO`knBy<X3Mx7Wtc4I@rIeKtNRi8%3`
zjeGjc+qmAZd5_7Ader9%-V55eUVnZsWaE1M`8~>I@R`o^kmtRKjca+{tG4kg5tZ~&
z8`t&nUfjmRm57sn!p1%NIvdyZ@?O1-ukJ*gd>RmpQZMf{+VtAa-%HuJw$JyR)8H*O
zuI=-^*3;l^Htxxvwei(C#3_FVg3;t>`HXsrQ*P3C*?5NOiFez$mv4`aXZjE)J@X$e
z-$CF;zPf*ZFK^@8Zr=xN((Cu>-VfTi*7N%z8=n+M9P+#$F2Z{i9<gz4pYK=NxR-CW
zjcdDoKW^imJc-lbbvCZ+{r&pW;7J?z_&3<N$EWc$c*@3gJ-+YQxI=wWZ*2%hsmJ%T
zz>RwJ<Y~9@k|g5f(}BRC_vGw64c=wro}Aq_o}ql?--lo{Idi~`e04j0f6&G~dGa={
z^CfKZaU25Ygz_N-qvV?p12^*3cAk&ecr=MP`Bd7t)@QyNxWPYIujr#Ty_P>8w{iWx
zKt5sPpJ+jx`PSLE9*5+ak0HMvzvYuQ?&+t&#+?qt$=^X>$gk&#dFF5M*ZoVr)y6&k
zZ8q-oB2ND82u9=2{7wErMc--T9{(;IZ;mSZ9)zRuXZ{9%uYUV%+^gT5jeGSw2;AhK
zN1WwiXz<tddyJ0_T-)<8me0UF`jCz5dOQ}kajl1A5gTvLA`W?uRU<IvbQB&%XymK)
za4c@)S`Wt(Hm>z>tPZ%zpZa3H^)|g%uB457d>U;0l1jwMr_sheJ}Ddb^yApLr=J!Z
zUxTRRpG9EG?;y^6+YyYWpAH-M^wVkMUb(t}8~lUhOa9#m4E|oZdTjioAw}P7<6e3D
zY}_kv&c@d?AdY;GGce@Q?fQ5SxFL_WhvUrOz;$_#hizP!_jm-j!9VCA&U`Bo7<_bj
zk5}7x3FRPt)W$vfxQ%N)98cJ|*2D2S8(-6fIQb_L7;<`gXaH`=>FJ@-#yvfxY~0g>
z1Ki*rWI35{3j%|`SFYC6;B7YUl{ahSUU}PXd~F1A=G%q9kjE=;H*iB9ue?1r?v=OK
z#=Y|P0XO&ugNQTV90G&CSKh(X;CUO@<sAZS^3mlTVm=1{we=)CCo~jBV92A(I}`zK
z&};dJDs6miBjV&!ZR1-0p{R{}^2BX?Z71U7L%BwiCkfn;N3T;2HQ2bGw+>M*gI=#A
z4W(@S+&;vauY<s#*Xu|_EjI4)Z?$nfFCJ>Maj(2t8(*74ocVSj7_Ge2har!)x1lZ@
zUx%pV({1BkzCAX+j{0T3%zw0e2W@(7&qH||*Y<D%u*IjHz&W84K?H{U+8$1XY~14$
zw()V)3;9HBT<iZtrHy<1t8HAjixW{B*ZMgTxAAqYh%;a6X%zjONCG#?rR(KHgN?7#
zdT6w9FW;1nuh->e{-fpFRzyFDIOWXRxPH&{1oJoK)a%11n9pc<r;Y3PSx$5n;abif
z8`tgeM6ZqO_k2(E*|=UmIgzt*PfnK4kkjLnw{gABIShC-`r)9B>wJepHm>zH94^8U
zrJjc)2n>0y>_VJ)rH$+P@^I9~_4@_GaT_m5AWl9E4gOjW!*w>U*X@VvZCvYrIBDaT
zb|Oyx4K{vtR^cfd_xL!c!CP$n+hN4XztzUIoe#I!__s+;`VIu9o#zzZh0xH$n54pc
z5spUBbO!x;(t-a7gHh;5Snt>3x|9U^2YQy{B<{FRfJbm=@E_O3C%~f!O#Y6-;|L9U
z?cYWcHm>J`BSrN)whMIRUvJZoCrmtvU^M;>Ha@-*and*1xW_+b<KwAE(mOWp$=_n*
z6M~47zSYJ({%tlsA&xldvj`0NOOl8aZ%1$)uHt&>05%$ZC-8-%(0AGNdVOG|y9j6b
znQxDcd*$u5aoz4l`fNPN^yHJX@o{|$AGC4ZE=KY;KBLa1FHo<BUFq>~Aq4z-Tt)gR
zgn=3Qnc0Ro<S9fEn0&~WcpSk@T*Z76zzjZr*NQml8xV}frxEy_xQh9tfEj#Ba)^@;
z<r<Ao7C3p>d_J<2@{jTGwXZTR&iTmF`XaogpniOgAIrfX^=1C5@BW*=S+VS^fBiQm
zh<nN;1B;J;yvxTwKI}gC{#O3&SC`93=7yVZ^!rtEB7Q-qErD}|JYPgK&OgEzbNR$Y
z6clmsAu*09uCaWKpTj@rDsglud~+&^i;wTq8F}SO2mOx^?Jwk`OA3Yb_UWm-PlWOn
zh352<Y2~RUB9ai#-IhesXoYanQ$<e<1x$;vJJXqq%hO9lGza<tq)!J+9>3KQ5s>od
zbC6RKH=6(215O~C^b5`3@jDZ8Yn)J~FJHH+AR?K=L#a$*?9PPfJdf#WB7Tu6+*BSb
zh|KLXMfGP3qB_%`ulsD_<&jK($>V8}xF;<FPo~9x!xeb)X5qWMW~OlFi$X3TK5_?n
zQ0B9eZ+BskI!Ldcn9@2Jswi~BSRyrGG*nyY8CqQEO_!BCKGa<38`@FG)x?E>o@)E2
zIbr6dujqK;+qg^wHZDLJW{P-v{Men4>4@`)GsAh_nH_BwjWMTC$ldK!reCbCOT9!L
zUv&%9SFIJIc8hNUct)YW#;D^LvAAChtZ{;CA8`T$)1a?ixw?Fr5UZYr&ZhrsD)ZPt
zD)Uq7?SK82JTmJJN{qS&_M*fV{3?}M{<~Du@|((Qmb?1AeYvP^T2^0o`|_7ZnwEW#
zK0~iaK8H|8KYs^@*~+#uo=#81{rI=#vl*@|DqmTi%&K3O$5x5VXYWM)twQ~MtGDj6
zt5AP3zaCY8zwzoXcBiht$Tj4N`s>Q9J(!Ypi24{nJq)lOU~2=YhXK^X0P2qRXW1TF
z1Jm=O{iT+Ph--Jl8>3}~!YoJl;#)=KtPNr+!c;U_C`2p#jm$^eu})w0m=K`pWP__g
zozMo-_fJnXm0g#D4Sc8tUMjjy_}Wk>>G6>|)VVK{trRVRLZM2CakbwUjqxpF0&JjH
z%F~{xYYJSKLLJ9b$*Y$(E%TSB%fuB`4(fheA(dKk_0njG2sO<VmsLF>v86fi&ew{{
zrX`<CG5`K$B9vPog10(>iX8BTg~Ih(-c1Xn-T8n$5Y6HqGUHzQVZnBZKS|?~?Niym
ztD}+Te6z1Jzr)v+UOF+A-|g$p@Avf_^Z9y@Rrvaj)%tR={jkj)zRt|SA=LkKSCU@_
zw!!ujO``lSzLQ#57}*f5@Hw;>S%0dYw0@C<KOao|6nT`7*q9LKu1|spc3{;F6XGY!
zV#<%ag>Jvnhdnn7@{RKW7MD+lF4u@f{nJI<)vHKoy|Nsc7v33Fx5(S|Aw}|&Coi<)
z1j_m>Z3udP6%c=3xhUVP?}!i4zYKv#Is=`;&a_X_{si*gR=ZU!g<aIGyy?Q0blG41
zLsR6Y@}`;etAPl3vM<5q3*us!LL4qi<NgNR6T>s_>P=_H?wqxqc3zT9;(=@HqC?h+
zYENuSvP~7WC(>8_K=^C7`O~#q{hhe?#kUo@sOLOvAR&T}ktT<Glxt<}nvz5P^F-Ly
zZ%MB+RRmqTE_pb8FqVpL7j>}7(uDZOk1-uD=(mIX&Q=~>p4zR2DBIAg!qrRD%Z{TB
z<#ij1ppJu-A->JmfI0~=AAK>u^pdeVKPbP2g`sYy>A%~FvmZ!r9=kKvB}CIQw+%wc
zVLp%T6+Zg;%wG8UxNo+Dw#qU?Pq|h9arM&7!e5pTJmS>HfFaFEo4XD^nf~-kzZ=!=
zplkR8@oH=fdi`fbFtcUs&Z;f&C)-Bi{Y}W@htfA3>YpX5U40jNo$;=|k@pthVQt@|
z`HcQ+P&V|d&`%@Fp|6wr9qyI-?W2B8A2r+s{f5))AP;n0yUmw8Q$7m|!w+lT4CxPm
zIT}OzNm38c_e$922%as~<-3T8r_<qq9=!7ZJX3R&{qo^MD>p;8%Ac48*q$V+;b@
z-67!DXuo3)lP-sN4sqop9F#BWmQAei%Ju`~{{r$K)&HL87~K|6JPcl{eonM_yhh>S
z`i~P0&<AvJ{9YBWm-04?M#>C%uafd2PMHmP6Q{_#c6v(cY?Qnf7EXv_S=gR)MxVmA
z%XZB=aoh0F9;BNK`Ou#nd&QM+s1tFtv17{r4Yfm^{P~<x*QTU@M&C_;7mJ|1#4(;i
zA5OoQ{^_h#X6>|cj;Ew=Y?>(h5a}O%g)aI``o)$K*`^|BKcSYXu%Y3h6l99ThJ_Dp
zWI|?FJ|5pv$YrMF>oOx4PlhozD)~9|_00E@5GLALDA2#B9s~Z|Kq|kAZShA>@L6sm
z`1Ktx-#o8SVEln8!bje)nS5sMU_8D_Ov1RthjC0Wb0=*6VlgiB`a7xk_Y3Q!@A{VT
zdHw`452$g9^rtB28OJF>cYGqpo@h_1-@B6iE62m=S6*b>NQlk9r)<ctNBS*}RX<?7
z&GtD8zpuOew#f0>S@FAf{u}8DxW0?4BqHK#3WKR7V_!-yDM=Y)E=cFrcaup!-lbo;
zeC$h2%S$l+ytusSV+Ox6^?W9t&n!u0ewc`3tTibrN^)#xN${K>FZ5vSbOL^=d(`~S
zzz@FL$@!g@{^ju7OYZn(({l0QmCIMGX<Bw?IeGK?|3IErEzip3x#wM(_WQL=|GVW$
zue-P$<I~KdC8B!KI#Hco8>w5g?&Xp629Ei|Y79Qr8-quexMT3qbWMGE;~0!<1`arF
zY`d{6e5yNdyf3y-)S;bDA}z0>pP|hc&~|<{$o}kRj1PqCs|q>vm1=xYc&&e?h!p!I
z(;u09(7)}1?Y7FcV2oK#X%p}p=)1?kH@9hf>R%?u$3eIM6e0APfeeoE(2u~*4spK6
zarRl4AAT(6pq!9{I!MEZ!Dnebgp9IBjj|s>*^zIK<Agq~hxj%zduaPfec@S;S59NT
zBYlgS^L(J*zz=Pw169GF&%t~pi5q?C`fPH<rKry=%fT|xZ?inPj1U`}MG$3Le8qJ1
z_YeA5pCQz7m^}ELarc=xlzDUj{_3%N`HW*2maq0fu?O`~hI(k%^}y%6Smzi&1*@{8
z6)R8&g9FbyZ8dQ*F4l*-SWxnK=H+)%q~#^)Gw{(_IX-%{3FBL)N4i|BuP_XKWjUUw
zZ8Sq}JxA0!YjT<+tXuNpMS7$gIomXfzHqkmnI8<KIOk7@$};B1IX-+`eeQtMnOn?x
z6y~2@DAyXNBOx}ut7tIh7IUGmF7&V6kZ%a}9Aw!!52OxZ$HjBNAn52PMSlgxGj}^(
z(X|NAkY-ii)ETU!^lIN_$S>lQhyeTg__mQ<@B?ValWwOx=!c%93<w`Zl)n<tO8sg3
z;oOh*qwNOv(oEYRfAF5oc929uj4MRO8Dw3DFxFcy^|3|F1#OUaq-^Fj=-G)Pfo$Wa
znR}5R>DazgOQz1ywCQEx%SK(3!dz31N6>cAH*_hV)y(w$^PQf4ztfxZJAKE-i{!C|
zq8`4WjB6u#WuvfRq3>aDd6w5G<0Q(DG1AkzO{lUAQbsA;nfmRYe<GDW6icNq9iK|)
z{EyGyE-qsE<j=Qlf(+05>)B0cm-w2^gmlIHa@ax~<F+UkyaMU@i0_8Jo_F&3$1%2_
z?+oTIW8M9}BG)XU>6Vhmu~rbzRR}@*H|lABTIId4@c!5NoU&?Pnw#bf5`$gsf=%Ue
z)4_YUue#}F#cwg@G|i$8<I#GIp_3RhHuU>MV?S)LzZP}VEL!__h_?RSBHO=Tw7=yO
z9dA{L&bMks*ISE4_gl@P=dB&0_pRNc@2&kJH{cV40~I1aQ0o%|i+#a?W?yJvhc7&^
z+ZP$w@2kX`LN(+|q%TJPK2evRD8ne_MZCIyv4}(8^*0MKBexFqwN@m}_Acum_C&j7
z{Y$?Me?9PgbI4uWI(K6d${sk-9HwoyW<+`I7O^F_rnx%$GZ8{t4J5>cay*vXE<Rj^
zJkXw>Osy3WF4`?Dy!ABG!-rx%EP7m?=S(I>eq2)lzbA8dH`iqz<GS4i`{gsVlRVl0
zc(t>yqwS*{r|sjIhFAZz<_LIIevp4~$Lj^mQzU)#Ea}m<Bt6zR3R!g@$Nj_Vz8?22
z5Q9G-eS&UZ)Sp~Gf{xjDpiNw$d_f#OuhG@x1&<|>knO5!ZJ_`^5kwt+4du?JOG?~z
zBcsibHs359_@Qga4|a$9!cM^a$u(!4zi!*0J<n~2q78aVf_^b%Ye2nX?WP%XnZj+j
z58xi-?ZOSX58|GDYj8gS_bs^p816&3Z^eBD?#prChWqnzAI5za_hq=Bg!^{nIgESO
zO9$@X#{CT3cjEpq?kjQMh5O&){_+p<4W_-O?!R!UwprR;dhaLXSOewhj!qR5nv!>x
zAFB|9$9y6Ozkszmkw+e)b-M_({!9dqWkg*~h3JEg&91o~>-ghKQY&wony9%+1e+H8
zl^heZFU>qrC!DgviPrJxo0oImTsTs--nH}CV}(LL_^{5n2931|->PRXTv~HY;l#?B
zgKLo9*EF-_@tTNhpXu=nt^gLGzl6<%Wxx3Zbi9Fcuo(-I;8XRS>?1BGU!9IPuk`rD
z73nE1kIWNtyflb$R9$YF@SmxDoSN74*U69V3U$?uTmGcYCUK)Lq-&tgqYh}Z!l&&B
z<&7Y1q_qrnwwr6JBg;^aJ!tQ{nHGIH?N<7E?K=VUC)X*HxZx%16Jsnn-$kD(>k~Fk
zeRAz`;F0DA*<PBk{`&)|ml^3NW~Crc3FTqlnSXvKmC23WiT?9&ZnC%x?ci&Wr8hkW
zbEuc_>`l%c-<rw%lw4V~EBMiq>*c4&SaMQ6se|QQ%PkaC`4>k87Lk4MM=y&@s~(qf
zUGEGC(Twpk`wz%Bwt1EaHZK$tl$@;?TZfzP$2e@cC_mOL8jmf;x{Hr(cKBnE>p|#C
z%5{n?kejmeqP{2({WaH44Vh{^naaeps;ny${YKO$9z{Nl2-{hYxKBZ*AmUF#f34B|
z;$dJ;jZd`IRERA#wF2$;#3srF7ye}HR1rqlj<6izqX<I?vj`_3+=4KOunl1V;ln6L
z7w(1BvEi>EK7Za`SP~Ik9^_BI*bF<KqUyO^+nj4(C(6#orX;_+VYACzTLRDf($4f$
zZn@`gD>04<gSYP(>=XI6XggwkKo_u;p{*(}+25Q^eWbta<;OByY?Q&L`GfBbA5?}j
z$p2x*^DN{){`#LPf7AHuWZRSaN={6n4Cko)CeW5JK20ooDSid;ap`}Kr4~KrOi90q
zHNckXDb$aXesk<jt_4G{vRz`$?heSX2DV`7kUY%vsWK6P-W${3QG9}>-ykpW8AH8+
z&v~Qqf$8vP`I01nVtY!vWhpHx%grc<UtyOQ%fvD%8T^pJ@7mw74Upp-D39gSiqo<@
zsw|D^lVu5z57q@)|EKU^LGY7hLEG+w@AJ_w!?$8jOGNlk|I~Bow?})P#yV$lnj{kI
z>w}&%-!rC%|Dmsz{)hWpj`SyNyH}!&H_Np;xevBUj@NU3OnVT2XtzkiUpBIA2v;P;
zWVufUefCH{Q8cH4$ozTxMoC0?v3}1k|F%t}NB)DO=RZk~OaGkw;aj*iuls_H7}sKr
zPS%&eI5JAxLZ5mEbqW5BEZ^yTh%67*GUPe~_K(xg&T{)e=!5!9Z=0TyWAlna1$BK=
zzyI?mV9)a9W%-(2{XVn<^F+)?sblDTT|!KJnRJk&PwLrNHyL$K7&vJwO!pVar|N%=
z_yGB4{>Ad?@dMXspfC0%)EV_f9l|y%PU`J{G&8@Pe@#%zwL|F*J`8&EyS90;yH2ik
zb{69V^5iA;^(V>my|<YT@`TPH&lu8pb@(U9(?4xZSnt8zvPDFk4H&mC6G7N#Jy?3b
zB<^^fef#=e4e6mXALT|q5!J?5K!>S~u=|9#NUp0pi=o@IZ0Bd6|HIP$jr=Q5%|HAK
zWmNsgS@{_&e~ho_FZI}DV4o<3-WF4*>{r--&=0KId*RZ|%YQ6yor1YB*Qut8(*F5t
z;uz<b(+Bk5y`~!V8$I?#QH?oAFpu%m%HV}dn`X{0KQ>Q9Ya%!!Gf&p9>|691j#GSw
zUavVT|NGD;mfg@#;#B=y_#@K%+4?!7|9?ofe<T08QS$%T|GE4hEG~cjsrg^<f3W-y
z7MDLcO8$Rd`Ay&Ej+@;*GTHBL+#z-9U(>*LiMFWwT&zQ%|E$vYYOg(>#rS+kpZEF}
z+QVk$U(t`yzovK1O0n-^pDg?TtSC|a)p@Zl>=W+C{LGcBOvxqV=%?r>8ljVQuo3#*
zG~}C18q#auoe-_RQ0Y>{jdZDpYDM}X_?Cy7+0T{lmvoE8cTl!L+1Gu*c@AX7pSL%g
zL`1fKvp?Rd%FFUOc#bnPUVm(jcUomXhIZ~qIZx9cvpt}!sEcwr{z2QLyr=ZdZ2PC2
z<3iv3=garsH?Vw=ujTCI`^ZK~|6eBG-}fu|TF*|t56gZNeM`%KjsE_Afs(K7EakiH
zzgB<WeL~46_j}ML<aoPyJb2Rn&U^aLm2Z^sZ#l=kX{_I>vF|mglQWKcnK!RL-<}`%
z3Dd)#+t02(Lc1mXpJC7c|0wVMFRSu)d_Z~WOW|M6{RQc<9@7FJ^Y?5cX(47W62D!Y
z5+b6{VF2s##vAJV@+spEV@@FJOP^QaeC2mobLDs&eLxz%l0MR#pTSqE@%MQr`+@s?
zsvMo8lp_Gy<-A4PDg1j2$|A?VsvNFwH_nnsUkU$wioYDA><fKd?(Q{ee`~0DVd1@J
z)%yDNlq<JpO>eX-Alx%1g$l|AnoS(zMJoc%>DJz5IqqK54cdFjkMuYv)1!Fyoa8z3
z3dW63qB{6HW&O+3ms<bi8Vu+cC>du%zCQAdc3~~rJqOc-y^|pK5xJkjGc3?E&Jk`n
zoJ0nw>(<fc)O<$zDAq?6{g2N?4|4vjIXL&lX#-b`5kB^V`h4j|xhFod1AE(jkatk+
zX}pHD&0lbz2W#x9nhN&QBAx_OePLbwXcNvKX0rJ>&U=QNmlaN=$NS4^qnV$HIMOAV
zo?~gbPQRpZq-H_kNc_P<cS~8}Kbe+$w9tE}ro&mt*ED~Q&#_0Aq(0>Sw;J#0eQ)P0
zI3&8{Q;#5R3D)&{NsBSN|8(>yTMl(I14ZDk1ntW!OA>%=A3WcMvro}3U#n~zYCOSu
zW*ed2jyD&wT)*Xh`0*Wu_T#$?9mn?<I`vp9UoliMFl|jfgLC9D`0~v9gRsdH>#@fs
z<Q{rf?n8fF+8yi$XHs7vzG|<CEG!)T{G8ol#T=|<#xTa>`2{`$enWZ{_u>3u%F1hC
z{#vp6#b>zZ9w1HT`d=}h$+<OagTz)J{;5iPqKwZnV}9<^F8LkkhTcW_SFEkY7>{Wo
zBhq0{(AS!|)6ccy6hqLxvg%F|Vg2Ad{}y-M%~$U<ixtfkBDL!FP-W)t4yI5)jp?t4
z>sEhH^wi*7`l>rGT$+AzS~=!QEvd(Fzw5H{nxF`L>tPY$yBJMl=9gdo1ole;qU3Va
zNb{$JSQ-D+Biv8t-WkrCFO_=*C}-`r-7^l&%cLy@Qex~&nJ3~REk2jxeopQ8eTmvN
zzEpZ3ma2)M9ygRc4qFYbUnl}Ac^+%Q!W8ywj^_5^S((2)ldYz`&Q33Rq&)rDFXg)-
zO~GH5r%V2!oc2h2Prvy~l)Z3I68Y;Z^90is_EbH<bC@Dm1+M^KM|tPg+*~MdPiy5(
zDBG9sEXO{SkLNvfT87w9z@g@`FL56#Ej~?|2AgJ9*HI?SD_z^5{`vlaw3*|#Wtx7M
z%Ame9#`?j!YK?0Xf4q`55nnT$hp&_4(6?ZlZ^0(tf=$x5z6HA+FwXMvodex}=)U7t
zN9p&YBGCM05tKTc`8n9gNKZ7t!`Ybce#&3o^ks2{GY&fC8MtH#o)@mCzCqV+*f!RE
zhc@vH1^mb5C^mmSXM$>9Y{Tl@ID94i`SHo{c@Fni>AR)xQ|%nK+~_8E{jO}EXou{t
zblar<)tG)UF!pEI&wBeJ<j+0p)&aEn%)WP0u^sGJ-Et<8hS$Qv;M<vzp_F^xTP#K1
zDes*V`fJGJ^2@&r`yb0V>p!{}Z3bsBQO;kWUu%T?St+-%K4;DWbbh4cn!=fAAr^n~
zY?D`B>O=J}C(qaq?^syK@8`ae^drzI&M(JNrpW_q)`n4D_BnC+PR%;{pZplK?+EQC
zAsjisR&9AM@XF|O7>m=7po~b{f%6l;23`&P0gVIO4J-<*)xdrPEDr2p1KR{F0j$r!
z*0XORf6C<A@%#7Hd;$A5vJA4_Iq*9jsj`=*rNp<VVNJ%_c&%8MghF^ZlhNMLhwzN*
zqO#I!Q{q$8YGxJ&>6@@$`^d^!mmXR<6Sj(XfttR8HaJUgk28pLLG1rV5QebFTMjIM
zdfZ7_V52{x4dquujtYO$8!vo7T~Z$QCn%%qQzftWcF6KU-@wx-JL==T?~*U`_#oaO
z;m<qQChK3%-~R(=YH-F_+r6H*(=OOAaf~GUCfyhD%rW{hw6R*8o7pgMU`^Pw6^#9c
zu$J}E7exqrLpQ@NyR>Zd8`@_`8&+q4&*V3f5SrJ(-D~UKI<TfXioM1;UBWkjb+ZAi
zrNtsBJN9#76ZN!*{6rBQ`kbhK@ONmtF%dpKB!WW|dEV&V#Yh_l9tW0Cv?<Uw%Kc!x
zKLxrvq^Sq5B<Qci*@=sB-+(a@{LVY~p^PJLUsbrA<0beIJziXqyL&C-M=<`9=QASE
z%YEv;96TJ?E=2%+?Qa(r_O54{a{jfg{qxsm!C&-GTieoq_u97n6zu<AD;kb{K~x@F
zjk6KZrL&##5AJ3?^PB>F;*<T?^8Cfx#vIOE<xhXs?H(lI&j;Ts^_WD2m#lxaJ|oXD
zn(O0Ozu<Ts^=qt;XBIOZWOnCOJM4WM$fo8OCHIjIZEYRem|jDa{m0qtt1~SxDW9?4
zB5jl7B*>|J@_7l7{yk|i2KLs4<d_ESB_US3^H~2{Juh0v`48s3ElSojLhgq+3E_X1
zd?0gcbA@;qYX=X&ZU@<)rp3Y(>csM^r=3?A^C6r&;n~ES5e5*>M(AVx;Xcgvp!-GU
z%Zq3CP24GpXN@?>y<ZY{ym0Qs&%JH%kK&$rMi64Zuu!-e_iZ>w!u~<$+q%|{cNlT7
z^L|O(@nU_Xb1~^7U>6&sr6RCMgyy6l$6oJPyzjAI&hcR1`(GwK^moR2KKVu8z*q(8
zS-0f5=uPkgAGOB{UI%VD8(yT5_M-fm_G5hS((`5TW5ycY;u!M&Y#}s<@6yVCOq~aT
z-Lnk8CeIr59p<w%);al{?^-S_^vQKa^Eq*qUhWfF&l0~%VLauf$9tZ0z+)@(Vc(rz
zC3?K~BmRW-N%)pdmR+9Vt0=t9@hQshzVnEXwhI0s)_eL1_Z>Or34ha7vj9E>{-Y`@
z?XtQld2#tQ7-MFBSQn?=+_DvW@E8}HcFDB7n&O{M9a|s->6wo7Oc&o;=wV(U@qS6%
zv8`PXA2Hf9_1ymf&p-45&jWl;9gda<@*nd7&x2=rp56fa$->tE8GYqa^oyl<Pveq>
z7+;7ov@744(z1N%2ax_Bkp5qhzAq-<i<NwW;In>7s_Dj0r<%U}In7V%;&f$^{LU<o
z)b(GG{*1b0{;;2J^aVXw*TXzH_dMQl|8Q!_{?qDT(k~OGqt%Tp&o`|1;*o=EXMDyh
z{SEk^)6^}Wqc7||9dABopCRYj+`GehK<R&$h*ITynme}RtT5i4bJssoa{WV&w=fo0
z*beeRTXN(WTdgaxeHr<BYa-+?ePWk)4q_wgn?4x*_YI2IX?>(jzjWeC?He)QsAd_J
zEa#7wo|wKQtpj=G`p-8XBYq~I%>49v6Z`&XcFZ57ALV=q=TZlrU)viSapx@w@y**M
zKm2jmn8y4e+Qo7W%Y8HUbA0D6zDAzg%<A#qX#GF=@Jcm_$gHj6LtN|OSQ7KUZvBiQ
z{9GUF!z{l#r^7i$PCdg1e!h8(^y*o}uETG>uAgCST9?H+wJImbKDiQMDdzhv(XE9)
zMpugq_+D5-lt_B6-$9<J{Va4Pd8ucU(lf@R?SA4DN)G?d0Qb4Sd9Th7>rfB7<r*18
zGXAVHm1rM>4%(7oOOhywzr57*zy~}(<y=rv`U$5?&pNA#6bfxW5M>w(_&Z9(xYnPG
z2?$GZ1@Ju7Rw8_x@Xj#qZ@|51J?Qo;Nb3EPxZ|bdmHiH)-Y<zeUVJWXPL1(mS+||g
z1}RHygP5eodG}?u9ZX?f6~<K_>yzhcLJvKMbG3cf&RBKumPgaca2;(noe9_B-2z`~
z3D$(t=#yakct0cHelKH%Y`<08#khx_8<UUi9diQpy$f>WbN+Q~8?AcnB44J)d#7vT
z0ayOkWnu#D0^)kVB<^^ze0a|D6k$ZYUlMn`)N}fRJfhw&i924@%{9{_Jd-KMMsvlv
zg(TWVW`p4R(xU!p>w=gs45pIbzI)MEp1+oDyRA%=;JXH_t1sZ*-?j{A<-iN~zE-RY
z;a+}!f&NSTE#}3G^5pJb$GR2JWr4cmTs9&8b{U_a$#?L%S(i<du1lqd-Layo&j5X{
zu1~Jfz<$QS&PtJADg7?ukS{3x73|GVSrKARE`pHZ66W#HK5-7;n~G+{hh0DLw;v+T
zx_fB52%qiR2h&jAS?k0^x#od&D~=VlztesYevjW8h`MXV>RSND8dvc=fPD3ph3r`G
z<97gFz`dV-2KSu<kD#5GU_JX9_|6URk=qK7?wBr0t2W4YbY~;<18c>ZK<QtiTfDMX
zkhk({JKcVya8Fg1W4FRltUrXCOT;;`*Ky{|fljjGvSU7cLuHEyrpDj$XsYbm8BH_m
z>+n68I<C28_WH}=&&SbUCB%JlK8kgmXPHM7zA*FcgQ@hF+;ubHFA_(%m7()G>;=5J
zHjBLcq=U~4!~YLU|L2IyAis~as=s@oIgN9pKcuW9JLh)o*@N<zJHsNJX&*=>U)uA^
z%E+}dR$hX(EGp|V8=`T1>!Yq_fxAAK8TRA+%t*R<o|u%`P)~n7BR#JAf<+=XvZyQ^
zT_l2Y-ETnD)vcV#b?(B>SUcV^ShFrfJIOqYvc3*KfH^zL`diB7u5FG~Lcc+|_W`<u
zXq4r5rk1L;+L0|-(;3J0ILSw@Z#ByGt=#s~3*2?m{6*yVP^MI#>46S<5#`V4V4o?8
z8(w;UM9xRx^SG`e?G57+tb?AzHZco*?s2a5bB`cdC~%EsNX=<zlkQ$hp`v!HZxHW?
z$@8~Z-$&m?+X+O_M-SE{#W=QMzK_*06|(nZP3#2L-S933amvDL2l|?tnW#H)XF1oe
zQ)PijO04s9y?DbsQI;Byd+fKs9?wg|HIrBEwvyM@6h!D-?_+NHKe^7~>uJ6g?^8q)
z`PBm=nz^6#>uYzWK-W$u?n~~%J=W6yDTVhFqL+{7n806;H08~(m(2Z%IO=lU%FAwf
zl=Yt$b#>Q>J$qR9i-UV!NsYsL+ZX<-y!j^7`*%8d);Ns0dMD-A7|P#{a`@6^an~Nk
zx%QA2e^m~-q&=AYnJ4*c-fWXGhwDr0LIcy*g|C>4^}Zx*F?GwM8PO&CmCSgAXiuxc
zXg3!<Ump7$-oa~wZZY3Wh_5c7JXkMkX6Wn{Vs-APY!|-Fr!ePZ+eoo(9N!O`&yz;B
zuN&QG?p*TSFA-PsN3@-HWqYfAup|OI7=eG2>nGf&8g2cIdsZK`hDO_9UEusZ`mEvC
zPOX=bn}LM~=C2FI_KHdL7xWwS8F;Th==qIp+_yO@=eM!fpaYa+)w6u3D=4JDkn3XZ
zbB+x;2acvi813ksgt%9hpY1L4DBsIC`nuG||Az8un`)kd_AKpc<Z`p#=k~dFm3*_<
zuHv*SelsCSS@h-FSDd~k;o4X9&$ch<J4>G%yB2o5$zM(zt9{Tvi8dFz3;iB_6u)z_
z^mnkQd(nhlKaclI+t}XNR=~sBFH&_CEUqiNo<{0*dCdAp+5qeTYl=g!>gV(gv0BmC
zG0~L;_RBt`JRz3L{(nbI1X`wwvgVAKK$+TnV&%rgBF%TynfAf`!g;zvd=2`#oZpVB
z$q4@<A?7wM_e;OCV=l&STZBKes~-N~rgF5q!J5S<*WY){LH>8*`9Ga}Zu+EDnd_U<
z^hJ;nvZqn!Vbpi|HSs-r7T>hzl_<tJD=&r3ChIP^eR*!=_AiH{w=YNEuzXJW%8$ao
zjK_PBZ{k~GSg%i)Mcsa|rCw}=epxTDgBjRA^EJ&v`k6?78Pd;0`kC-0Soa5AIr^ZG
z(oJbojqeKBc7XPu5MQaKF0ntfl40hre+M7nwh7RT11|l8TodBHyw@haBK^lhyT;_*
zzVbvl?ZU0|p%hs0SHiQpN!;j*<28<9I3DoEEACkFJkCil_T>8eB=`>ZTtv}Wmgfd)
z;^Kx)sB?s&*lw||CW1Zz8EpC@#*45I;5;K3eEN&R|1{qHtBGT<i?vZa4<cTQ=RWA-
zGQ`WCo`-%XD;8~>Cnmr))<wmu-{^pyJ$<bj%S{obn^yCKOv^4}8ThVxO)d6taL>5z
zkN8d<`y|?jS^peYXd6JDjnWRL@H~C~iPM!4Z26OOaydTLYXDd~k$tb(zp8l%$9()&
zS$f`hemezwvA%YMJX7Hyq(8uT5H>$gjR%cA3^^VIA9J32E7rn5E_Pfm0{3EIQg#2U
z-ylz>XCE)etY^U^I!1iFzXEd28J|jtQhtBo2I!zC2Ifr_zOOhXVnWR&Xk!lM(m%l(
z-X%C6up8sQ=R`TjDXfQQR-+Chg#zk9Y{LElc!W^rKGqB3Wvx?0=plUH0d%F$Y!l-W
z;>&VAzZrJ_%vRwC{S}!f22vbb=z3$>c<K5ZZ9Ea(B+7N&(f70NIKS?g%=&w;A3BiZ
z#Qepui`rkM{#4yEf7ID|sGm~$AB5+@cit6UUubQ40yeq~{n<LU(GqvQfCQL##ZP@6
zxQ4t~zjz+mF~c2~gBRvoYX_T`hzZRLL@4u}dh{71aW$TeVxAOo(+nR$a{heI*pqEF
z2|&#^K4Pvz(FS2}%{UVfr+<b&3(%jU42zn-h_m2v)FbD6_})X6Blnf=0gd`Dh)8A}
zIex0A9ia`3x-P}Md6C~W$$f>z%L@g`*Qw`P?W5O3{<E-nCgzpowY9K?V`tK%uH`s#
z2gZHoSTefZ9Y>z2zI9!*o)?M0wHb$fY~e1fx0Iqy@5j2(>{QwIgILq*%>E2MpZ;)l
zET0fxGW1`lrX2c;?TzJ;KClBe?2a?>{v;kk-r$DSqKthLapZFZzH<V{$12XTPAKEl
z@mUY^TRC&;4A?|@^fB!BuD-aO-#bc(rMsDzlyUs_gZO^WqdVrY51SO_9=~h1H<fq5
z=U}g<OxapJZ4LD^8zJU;BiQE^P8Q#SlX?Pw*}ma>c?Oc_(C8!3cdf``jRo^qd~*ge
z$h9W%3+4~Ii=O(-r{-rPlR(0sx6YVEgcsW*=F@?WpUbtI(vBaTel3ag${xom8{7yR
z3}s6=XC3<sl&2i!u+}EiKj1e4FO~kF_!-#oC*M;`;)WObr#4_sZ-emiz+8HgvQ>*W
z>5(_)$TIK5J>%dfzvJ+mRX0Pg*Q4I{xUz}saNmV}d3=Wz?_$s38eMn;)58v)WT>x%
z_?WCutQoJsvsRV<Dx`Pp^uB(kQFINs<<BZh5&-3<FUPI-OX5yn#m}%l6G0y=eM#{%
zrjh*-))M6Ry|6DtzwPZ+;ax9puZn9m+tFWP4OZvH5OXw<o;+A5$I@s&O*6-?xP4aX
z$D{Cf9A8!4FS=;gmuJOD)lBJA?!vjJdurE<_JmmcYt4h{IBv=maCQl60wz!9@j-l{
z&nMAlL~Oh8r=|w7nW5u6+qAT5m+WKc%j6jr&TV8{ILq}D%-t*9^CVw*nX<y>vTW}k
z!~=3*uip5Mr<#LHee3=ob8XrGt8)zA9NQQJxc2hl*^uAu@9{lEnYVG?N%r?fdCW6U
zNbg@XK2Uk@GT8D4hrVZ5s%&fpd|v~e1!7oRg>6$msev`?s$*IC-NQ*JqO>XKlr-+Q
zkFegyH3*J@cy<eODU@+|cjno#JKc5m!mG4Tl>087p7sZyAm0~l!#W<G#q~3W^mA_h
zg&7!cMwovr<`2d;V{ZF7UoaE>SG4z&XPTHN(=bo@J*KTAN2E-UhjKxlE8TNZg;W+k
z()EXhJ@RazoG0Ja%zQas#kh1fXyp1>753$zgQc*|_zsLoV2k5uhpa==>x=f23GiEW
zccE+2d<s3F>tsBN@ru+B#yvQf@tB)WL5{KDQ?ExKFpl=qI<W+6vLmyRgg+mK=rRv!
zA8I^^Z|}+P8OU!LqiyPQQQkNkV?@YtUlI%k9)X@6=x(hT6B{lGt=fV<8~VW9xH5K4
zNp#g-5m~h*5aG986XFY#nWpBNlFOsw!?QakGxQ10`}mFG4y@TegZ0~l_?&E?Je!An
z%9sZ0R9w#%sda%!@-fE;|L2Q#iK|jP?^ttjdFGCZS45jiW*|M^Cw`Y{u)fB0m6V6+
zkp4WRfv?P+&*xHKFK{0Id%6CAHs;#+S&T=KoIh`zW9l!xNsX`3HrOv|{mK1!^o1M)
zwPK8|*Sg@_YO(H6DeZ8mOh}udt>gS$Lfk3aKm0+IHUQo9C&5##gNA{}6)yWv)Po;&
zl92Wyzp?eXpP2LpzJoaEeW0&1@C_&FeXnu7S@GBPU7t>e>xidPs8?5}+l@56Mw)Ag
zXLg0_Ry_;atzA5~9L!AqIo3=96&U|az@AqD*dnaGCllhYKTmqpLznh-dcB9=OO*b`
zI2$n9JcH?Z$$2Kuim`u)P4r<6{m%1<vp%Tb^pyUm`0dBcg=|xIxa&`##r-DI%~~r8
z=&xI2o6CHe@uZPmnb#gcC;L~7yF_MhzOJe1k8;fvZ8^{V8t%hjzVGAnrfc(cu^*ye
zdM=OkxY7uG!xi!ylk{nrn^Z-FsN5jtA#D)fi|pPs3qE3fA-nqEPvyDegs7M6VbD<n
z#)z{0|D`%|>#bgnXHft3vM#;4zC(_;TpuzroBB}nO}tMv1tRnzyw_LTc#N@Qu*(hf
z>ApbQM69vE*TjbWLC>DK4x0t9)oj<FeVb_&-%EI}Y+AnmfH5M@`uDv;9N}Sx=7qB{
zw=v#=e4tPI)Oc=6$+)VlynhvGe!=JRyxP{ntMuRW-Bnw~6!b+8K$l#joRSbrWPAFH
z^$A<T8t1d{$2T)y@W=k=lJD~VFXgRyv|c2Q(8qrGPiYqrfj^(QhQhsAej6wy0ui=9
zjKd2x(}kb&M79xrt6ZJ+o{&Vm25aRzmcW*$FU0&+u9;iw6Xu+UJoT9wB=vqt-06${
zlIOLcCw^;0?(wzsi;@=D59h2cFAIM{+<gn_p+9T942VB#j4J)Fah{KTk{si}*G99x
z&%npt2ffL4jl6GUBi9D#8(@dh-=VLN`y*U0!1uWlC;N*1(mvQu@oZAGOI(L%*Mnv@
z&P2NP3t4I+q7=TkrEN0S60X7AX0>Q(n<6G9#O-BC2#Yh1a{P+4rScraY7s@=vV7TX
zm;*wVg@rd>CoSgxt=j*YK92tH){|p!YyX_(*Zm309?g#Jk>#h~T#4~D_!f`zjQ+g#
zq;B#Ru^sMv3$f3OX$kR}Wt1tl6?<#=*3iPj>(c+s85TEYzVIu^{Q3eur@V4+68S<$
zDDP{se{tKiuYAW{V%#&6Fh<#cJu}ej`E%xp!BN+{OnY+Y(44=DJuQ>u+!N~?qAPo`
z9A{yEBzEGS<0;IKL_2%}@3D_4FrR;|AEJrXhkmNgPJHIKjJv)~q%lrx%`J1|@W168
zi$t@fov62`N#{(&nr95_8!It3+br%u8w_l$;aK(4SMoXP>d)${AeT(<`lpc>Tt4o4
z*k9VVDVJ;yYJL^_k{ZvUeNgv2BZ_v{#`<5iT151CM9;G@PLty=>IP%;?9daa+t)Gf
z_4<b|{Fr%EJqsM;6zFXc#+=P^+_#tG@Zqm>+~?}J(2cx0z_XcY(3Z2FZ5wk3*|)1T
zTG}|$w69vqb%`&y_9fG)^};ixLl*p5dyh!~QXj?VBVWUwyz&{b$Kdb0v$aEuxu(rM
zNe4bMU6Ok$wzM!3t3|u`Qg2-**;}`26`pU7)XDF%<J;8Szkp3NF)xg@MN1m}4aOPr
z`4Y@4SB2~NzfeGPhexvuV_5D9tirl{=0EuC8a`{9mwO6!?&Dr$dTPJCZ@w0CAl?ez
zcpoJz=VHcKNa_z|G3Q`l#h-kSTb5sq@6$N%E`0;^$oJO0Jz31V&Gk9%!*XouV60k|
zg%5xqMqSr$KtBL~Cosn@ppBu9e6Kbw_;iYEXy{9#O_{_~e1>tru9^k-2I~*8r-*Zs
z>_f0u-`kX_d#Y*Xo#iXBSFP6FdSYGR4`Ekz5$nNsy77N3K0o+WW-G>3-;sTK5_>&9
zem`H+)NaAM_82Q>uJfmG{%(cT31m(!`Nf*E`M!1%`RNOJ@VkP0oFVLGqn}OX1jnZ<
zIDTVUGvATxkSE|*SmxOn57z6n4Ec?xOp7dkJUun>6zMUyBhPNk?Jlob=6;KI<#JCC
zJ?W|S(1YLA1JYvsvAYE}k$Mw4z}PjNnS(Vt_Jg;{@lo?Ctb5Fb&5Y;1^-bli6Jckt
z6X?ayIU{w0aakATp<bd%A;${lJ4(_{jP_&N3)AUqV~jq0<Q^{$pU3l_a?Zs08qP<c
z&Ho7F9S6zy^X8ICL_Gfk8>NkT{V{Bm-|~rO17Y3&@I4Fmue$$|`~FyqpzS5Zf9oed
z^sSxjBcoZ)4{ww6H`l-Td*=-MFNjSpxggeuH3J9wh`^2xLWgU6X-D<xDfy?Gu039!
z+3I_W_ozdxYxtd64Dmi1;@Ic#*CAelIQKiy*U0Y|V_gXLrg*{LIw=b;X?II5_Uw*6
zTiTskACY=C+Nar%-wOYRJm#Z)Y(bv$k>^sxuY#@YLU=XoYbnNRe#{~Kt&{ztMXygm
z7U;W@`GbyY{j|rA(;f}_fK5M=SM=9`{sGX_CJ&K@{N=ir<U7(sI(>nTXLnxXc!qT3
z4_QJ*ytioj4a+d*8DA(Y5~bIoOk;6IBfhB#=T4BeC`|*?#IVN}-3~k62H%OXGwIUL
z^*ogjx7P4^)3rTMHC=O4`R17=7o?~3JY~pP$>*E5ic&+aU{M|c)BgXI{*=6VneuTS
zc2d4uHu3pM`TRxl4Y%+)<SQ}cn_$Z~ycBU+zipHK=NCOoFujsruJ`>Z@*^pK)>uCY
zK(<HK*Rh{tJ7Sw+Kfv(-{XWOY332mJNZ&HWUygd@cV=fmmNSk=@qfNnz(@L;BI4@C
z@xJfZt||1?H1Rx}xC-_Y!2e$ui#e^2JTXu7BRs##k!ydGKr<UOV>iu{&(Ck03cU=A
zaV=BC#}y6dBOeDY5C#zXoGE_p-&233pu3uMXak)!NuS94%R6#^j{B>i_w0GYGW=hr
zndnn7cj5em?}xHaLtBW~M8qe_chfx7JM0i~vEeH|5k(uR!MmpD%SbmtJ@;{6wrYb9
zc@|zn{_|D-TX27!y1$w8E9wn=MKr1Wu+cx$KhO_A#;YaG$+Gc`iYy!2dNrP37u#EM
z0cqU%O5#`&<&tNz@PBr&hvH8?RvKyh8TXcN8s;;sTl*lpY}?>LJ<N|i=XZI)&n84d
zj^E^X{Zt;Z{!JdbT<E(m2fvf=jh39$?<xKs{#}kS=<i`)^#9u5pY-qVpNDza3b$N0
z`6zqKWa-=Z?oiy_D+vzDe*G-g<d|Mx0|(Z1;oUL4rZA~$b7?31><N~6)t5MCSs>R3
z*al*s7f0A0IEIUD9qxf1-SO=YWWDE{N!a&n!Wn@kaXHWJZNxiiT$|)xKk6!!5TE)I
z^JRYoxhvQ1!`k*XX_J%Wd?F*l;2#H_oG)(PC+e{tagV#c|EZZq+K8-^jF0pV=s(YA
zs6Wv*)z^lw1h#~Ge>ht4r|CuVmGhd!Z^;w&7-Xm~j%Qi^=;lH>*J`;AfU^bHxMdni
zwfOuST-)~Fh5Ht^9kjU|^bx|@%W~=l`UpZF6Wn#%8*d|TrIV1>3G~x;vg|j0Ow)i@
zl6s~-Sx%PGfu0u@ekJ8?@rkc9f20rL{+mjcMY#W#d$0FHhkKmG{`A7aVRycP3@{(r
zW$X3EG0a!%6}o7#>*<EWe9n5pvqkrB_lNO6mAD@lMTmLja0Bwhy1j1@p?hu~^feI?
z*fh@{mSq3~gphwY4jP_mT?##gV*C7Zy`0Y+pMM3`CK9xNritwcJdhAK%Jy9|&p#LP
zm2TedpWBAEym<rnJpOGm*z#PGyM~bQ*TY82B<2tggk77uQQ9x{7~M9UqishQm$tU~
zO0(cE^(nD!!-Jcf1JB_Z^W9B8uAWLNH#d*@e{lU9o<EQ9ySN_2_203!{*x%yK9K(U
zDAz(VeyoEWSTAMh!#+C7!tpC;j5U;=$0To#-+(VH{Q6x<kN1_dJ!32xu89>wvBiN0
zR&ri|xfAyC0<xW9-of=!$SBLNY!N=f7ldy4y?_@GV!Sfc6I~o=jW%P?4ebl^Ias49
zb8T>Frvse)Xx~`h3b;1@?j3xNI)!f=YK83}%`a}Ce7IkS`-^ywdTiUUSo|;AI&B{H
zHG%yC>u{rM_aVq}1pYW2ZT5dBA+9@*>F(bx{%`sMJX;ZEyKXMQv-!IG($2v<9IFVl
z#%duS_CaLXJ^BB*z?J{_QRCU=C|i7C;g27Kea<k-tnu@K<Ns!^>yB;rh21sQ`LaDI
z-NBX%>s;Lx(kI*F{H>JP&9AVO>0G}-Uo>C(%gy_IZQz}7c?-?^5~d^XYP=(?#(?<W
ziG_e}_c$AnC%@=coR7=W7rOGeZEWN<B<IiGPr*Eednaro>_2pW63gNnD{3DF-vg<o
zuV=f8p{=-m$#vTPOE>QlzRf>FTgv#`+a?LWlzTDXO{u*vi3}GO{^ezckjZFMZh8l8
zlx>Q6x578Me(kzDNRMYcJ2aMlWAhI2cr;T|+3NE*ZmOWoy!Sn}3$vXpEbLn>(-q(^
z_o*}2s*Nlxydv8VWp~@hFMmy1%=5cs-)GF%<h;UICjl9Mqpx?U{angV9ZLNnt<;|!
z?+x8H@H})k;+K1NsFS87nAKdXe9v?Kx%kEk->dL%euDnzWoaLtu2$3k%-_H?T2IQ>
zt|G=cY;-kz$qwH$xc+hT4*xoY_u={muD``O-+QC0i}kd(hG}t*I2ffr;ohC$PZk#T
zNc|Icb@huUNDp1Pdv_?ao@+^6p`5p3oCOm8Mt%Q37FV`KTLY1~PZ#ULxCLXF))LTE
zjNpF)tm}GUD$eu5hB)r6%7VV6Bvpm8e(*<^W3Jzgw*O)heAtdCC))l_?6LH)EhR*J
zCZF-%c>V%#=`VN|i0|>Fo5s#w1)t~I+`QYFrm5ns@=W2a^34n2-yHCOFGF37<GM&f
z+)zOpoa30iC>h`!jQdw}(Whd63Yft6rSYC>YZ~noV@WAH_My-(#ZexNi{&{HZ%>DQ
z8Q=Ult92&kE6+O1{n~4#zjWokR<3Vn3Ky5dXVj5SU(2z#k2Rawi<aQKTiC<J^M~=6
zKX1M2xcc6Lv|G%pW!-dQjY_R!dH){{d(`PIY8{LAjkP?^XO81rE!^|LyrzQn23zlr
z&GUsZw+qX?d-z(s|K6DSEY|7X<6i4EpHD&n`An|oT_fcm!Z;G^k-f1b^}OIGqyewK
z*t2ebC(i`Px?LdKM?x%=^@X+FiKzQFu9I@CfIjZt%^81qPL_V>#ka|4Vd14RH~eSU
zKTpM21AST*<^xFkWbOBPChes$q)~fWy>osne5-$qy{zvEfBZR|-#=B3^GT0!>?;f@
z2kJS^dwroiIm`oo&p75OeH?4k*XZxtaLy^)k6O>r|5I1LBQ{|8Ao2jeJow4-)8^PN
zAb+s+0*rGeVUJG7(QjhSiv2dnj}LHeoe*<n|KavKsGr@a6Zk^t>+>!q);XxBX7;n-
zg|ov!ezRxeT$VBRL{gv(_``Dixn*GA%6DPFPx=?wV*~l>OP){1el7MDrF~N_==2`+
z12~6QIN_GB;Lx6swjTNzbkA#iY6E%vr8-vm46A&?Za&7ll;cmz%KZALtrw9ch4;{A
ze0-0MXR&TQ=?6h!(-*G~$Tr7*=aKd9`32cujJ%EiBQdTi5~*vN_4s}9X0d1B!1^HS
zCE)J+in|8ZtPf>g_)H`F0ry<rjc)lN$3w5<%xwhgNbo;w%LuVf;|pQ@B-c62cQ}gs
zIr2@5&ooNEI|h3Z9LJ%5f!|w}1TV}38fjCoxysD4-=%7j?*EbEGhUle{s%ChckQll
z)b&p{Nc*R6QsodUXN}o`^^5A7nV>}-b1aH_rhlpj8~$WpYw3&MR?y!Nf}Wxd%9r&C
z?Vs3h@Vq(u0@#<dAJz}n)OZGp?R;GfYb~_l7_Q9YcxS}n|Hl~ni-m>X%mhSz1)h0L
z_>nG5J{@Rd9DDT7gzn1FH=X7iD4q{L!x)16!6)SQsTjMfb28}rAAmd&r=RDiUf3_?
zz&i`j1#kKD#vSJTUzcCn5dAQ|n?+x&{W<p)^csNPe}RrFP_{@Gw%Uv`ZLGk%82E-7
z>iZjRUDe3^QBNFuDZTlQ3_QQSGA2ZDP9Jm^$F&1zzPICD$PDIFQOqyo`;(uP{c(DQ
zyUv^tpZswW!l%EEIQ$IakIDEq5SQm!KKVTvfA}BDqg~<#%oWaIU8L9jV>$m%B7GLm
z6JZ|nUDBa$d>vu*37o@);hV6Y37)s{8GS$$Yb^9H?i{8@`WMQlWOM7c1T<KiNeT4%
zHGb>`ebOBdpkFCUFYU*j=UwgkZ>B{#PNu#3*D`Ouw`b)YeO=<R%vV3nd+u?$Wxjd`
z<57$S*sjQnY11q5%|SW$ipuBG{@C^~KRXNCbN%sO@ZB`Z#7owvs@pmH@oivPuUE<P
zr&B0{T-UlvmX9{UZ<V-pd)3QKpQ*?HnD>bX@s7<j?uWZ&zUoJO);|xnf9JpOe3?8S
zmbnw>$yi4GA6MG`s_R+TyQTeMuGWqu{K@aGC2_-x;|<P9*bZo;HAz3u!i=STvmJ14
zH3~Yez2bi?&1l^x+gWhqR8hI{i*ntA|JN&o_e!Gqf~amC3!jZM^jLolRc#paFxJzP
zO_$(1vTN2?bB@XXZHqDEz05mz_xdR2GZnm-Z4Z4p&Z1m7w2yPdXEzW>DC-Y>>K)j-
z!d&-f(!NmkYP6?FGyEgYi}T&;C(-@_^4$Gau?x@i`5KI0o^2v8H4f>*|Awwcy1=aa
z@xPz8ig^G0^}+V<pl`=n68N<0>|~K(JHc4g$1yT!CPA*3bvp9W7vDSD2wn>dyM9Xy
z;oENb+%ks6a$;_I7uHyN(f9VYPUbj3Od_4W@a#8u_8UH<-t$wjo{05WIiDJ39kwPi
z=3(r2Wp(;o6MP5LO~yXn4^R)!6<)|~6}NJngmtlBL+6;o&Xe{7{I9AW1r6T4fSulY
zrhGj9cdt(%y<2}s1E0DF+3_dObx41zY)bl3?xTGl|Mv;DMVpdq_G*62{w0U<Rb^%W
z*M{!}LQeR?Cayo_XD%%KbUmWb=})&ZY{xg-(4PjgTWODDd3L`PeGA_4@y&Jnqmlr>
z0SEi#*;KVZCc0P$<V#z@9wf&V7}uQL9D#I9EA?;ei^+c8sE=D6_snf}BF+y(2A-df
zZ}s7QDy*kN_Z&O045%Bvqs8$<_H20Wm?siDR$*;_0p5{Y5{NX#F@|vX|6Kho_g=>H
z_Ox05uFQsT9PjPkjJ?=$miPAMfoqZPzoV={*yjYu@$ZxY_2p0weXaT&{C3lSlw&Pr
zT;^HsJNnA$hhUf2lZO6@Z8IUNXELt-C-)KfF`vR^dsO(VG5T%EM|8V>>`EWg>2-hE
zS4h7+yNtLRk8W{ktEK;U`(d2>MIPxUo;|oq)_)4+kCxz{y~5Y<Y|SiZ%tN(X{asm%
ze_2QP7U3msI5LC0dBN}FeZlkbe_8$i;J$0l{fj`PP#9@IRj@iL)qNQELHAzdb^0H|
zzSy2Rriv*0Xv!valJ!9+A0I<H_!`}>A2r8At6qY<j`)x}9{M-g|B;vMi=bDm>u|4W
z497zp7vVmL(Eow`6aLp6>NfAz=WqvQ&=-ada!x^cv7U3jtB>LGlg|sskoK5Ly8?D`
z9P#5Sz7+8x#D`RT5#lEhKcV8+BR-7yu!_&dJBA6^+pYNDcGcNuMF6^(f$#YqZMx~Q
za-1cQK8*io4?Z-Cv?EA6;-)<zb&U6$DtS(#cH3|qXIFi-TZf~lU#zvd?}flG#qqw+
zQJi54us=^Pxe4}A{R+#IMY~|#V?E|$&GW>~J75>^-2uEOauj}fJl`XdXHTYzo3WqX
z!nSlTYM$?8#kZZPgsheD8}NT8u%B0WAF{o#WV?&s`(r!8d$V=aA^isZ2cFkyAA)t)
zU7!i6Hd3McVKx4&aL1qjw3xC+<@j@W5OwS$Kkz}HF_fl#S$%Wq$+~2^CiQ)0JqAr<
ztcQF;(zojIDEyKhv+FYp{N{ijqq2{W_2Jz1;zHYTHKxV-<I}lS+ynZA>|bfu<QuE?
z_dxy?9Gl=d=9QmlrX2b?#~{GNz?Vt<<g;<<Z^~y8&hhYkfst;UJiE0@z^{DbO5&V%
zpf9RVh?)w<ai7Hf`Mh`Y!n+J|E#nGTK0Ht|2=@%f&Y7gew;D&#f8E1-UI{U0BSUu$
zqwEm&MdewDs_p*z+HGa8E-d_5=8sUyhj6i?7x0}&WnDW`7b>4;cDv6DBUpQW)crQ(
zhXz}qqm~`w>n*#*H(K_KZ(>_DwV^_+L^)9Q=q*gcu^RZlEz|!GQ5xUsfAy{3iR#rq
ze+FZqi)8-%ztSAf#~&Pny;saJeZJ0tyVtkHntfe3!^iUym}iv?#vcqkind*k=iQ(y
zN4UqqeH!+NHL#skj{mc@TT8k$jhy#mJd8TUxs#7c|9O(1KZ~@T;Enb4l1T`;C$S>d
z2VdspIi}Lt?e9T(I#d5#8cDryqd)cHx2L6EdI@JMKPmfv=r%BGyTE$+IPA0e7RC1a
zd)@X_5_Wd@Uq#v;xxO}O?9Nm>cs!2u|JO^?Qjgt;vq7Jf_1FJ7oYC0r+mm@2{Tk|9
zf73YAj{h0AUtmA%U0FX$UO(*y-^_62-o#e_^;O&0{{>$_i29lED8gaXGw~A&AFACp
zZUy4U5q2UxhVTT!eC@XJafI(9To;`p&c%3dOnmFu9$>w|b|L%?c;yiOJ3@@Z0`k2r
z_S?<;rUTm3TWC)l3+VMHe$&A`_i(25C+Md=A+D~VeK<RO-JG9sezLGI@GLRTajLe%
zKW!Pgr)oRPS=xR2I=M=YKS77~Fw)@chyK^B?~3jB;fz}0`<x@Ea;SsDsK+-@4{x#_
zXCG!h(PkgUoYi>$<Y779a_9RqrG3JF<oC~rEi7z$k@OgE<{9!*Z89BQjQWSoCd6gZ
z-f6?MXVxigns&+gnY3Tnq_*LNnB^lMZFk(Glxq%XJM#TfX}_~xCk@96=qD0$cKdem
z8QYO--?OB?)bmQ(BJB{glUBa~n#KNCUAoKU{1|x)$^^d~%DniQM$|(u`SD#(=tTMt
zlo9^}cYPN6!y5POCgv~K8JaN$aAlJEamO!yd2RyxD6iV}`0J~fj`awBQ8&GB5z-g%
z|I%ytjIy-(N`8a+O%HX0FoADObk1oOgVgQn^*`XZgqO0c(C;q%PaUb>)oXvC){!oh
z_T$PSX0-SO_jb{zmEas1+CT1Hd1u~{6yQglq20&6hs`iiegiSS`^5MD*tZ~^lF6-4
zrk8wVnP<BGd9m*WgRiW=+6RZ0Lgoh)e@|}6TgyBk7te4(F5gk@qqHmu@e#NFzK8K1
zWT<^^C_?_a?2vP~h(}V}kHKRlX)sSa!v0svjd$F%?!e<Ge2zBZxO3>s${1IAdsOoQ
zU;IBGU+0`3Q$HWMgf!p!F~%K`>x!!+|D_8Hhb9we|BX4lTr*VXwBc)KUdd-JUta_3
zjL!@mo@YD{VXqeN!aegNVvxO6+Pr74A3f~i!%sr)7FX_>x9Rkl<2b-u6)x?`&G#7E
zn<&v`I$53%-_Epbn=BJ(N?9hhTb7UKGO<tIM%z;Li*E_cYGxXK!;$mn*2TU(@JA28
zo*m5}eBe7q@C|g|u9J3gX+P7UjqNPrC-r0S>yB?3&V%mA9QZ7j<)kj%^0Q3%j#RJo
zk6xd4>B}zvkuIi@d(YBFKl(Irm1Z4%4t<c@1}>HDAF|%VG+NfxyMBoN_)@9AIq+ku
zTw?W?HcR_Shz~cBr}QgX%7Vrl5mlHYg&z2bdp;Hz-=n$<Yp#QvKEZMqa#}wL5qh2J
zV_Wb)5FQd0(#9V-@hJ2Ef603n@HmPyUARXVTQ&v@BS3(G_6=lPvV}2Ze1VLO4FVfb
zz$5|;8r^Iu$kHImW{f2?zQo8tKp2O}U|>ib)+8jqlAqn<-H^?|5{{B3&(U(&9B+Ou
z0-Qv?BoSahzRv%?Rn;@4QZ-?7_B?x@bw6r-Q*Xch)%SgM>FS!EF0YQuzH^*tU+K1e
zhG?I%O!c;%j<YQLDZ)N2KXH8yo`Hv`FdsG(Hp_N(One{h<w-vLMgMmCQ?!ry-dFu3
zVlnR5Osjn7dwmLg9DiRGViNQElquQd;l8VSC_ed*#MAbS75>u(aD%9`-MlWz>&(Pw
z$yL`Nd{_Ih=udbI*R3Z@oQW@s<3p}Pk6l3wa|BrH<r`5=m#E)L7v43K#Jtny0v^YA
zji<@{iazAI)1MY|KLg5!JBWcBme0Bu3ICN1--Zn$KOC=B$A3t^$|rkC@|)K)t#q9(
zjt#MQ>o<wPcTrc<@tgDuiJz#4ANVe-I1@f^Uy^+2xZ-!xb{rc7{+QH1;cgyNdFO)r
zFHEarqJE>UYuD_p!XD(kXy3%m#aP?0qjl6rL+*tg2M@|SnSIz3`0Qd2&3jqoJHYj6
z<h^;J=s#7yqmb{dVF&q&IoS#4^K&X+U`vvZZYKu2F+cTbPwZJ|Q|x7@gZ=>fCSn<r
zHWyZibLAN1Ea**@e~IIY_@wlTG039}$cN4r6`LOD`<B$@>gA97st5m;Ty<<MKM&Q_
z`3W)TDu8|HOE-(U1bq+7bEeDurEPdN<-r>AmA<L`Z0P$QF^pOFNZU5k|E-dLp&q}}
zq3axS)v>qv+0b<>G3a_o>B@nwM-_jS;7hy4ElED`Yo^t)N5!!rb)fT9V$c;*x^khb
zQ}HJVzSMOFbggGv9a}7p4bk<;%fxVhd`RiahpvYt|AK!Ne5vbf=(>z)b?mS>HdNPY
zV$iiq>2jg#LB-!9_)=H?lH`_sOsiu*6vu|@66FD1%TboCD9Z?SLf<3uoT)N@sSn@l
zZ`rQtyJNV%hyRTj^o^0WeWMn-c1T_4|55OzE^xM7&$O~lw6~#U`S3S+9M5zmRJ-cu
z`vBU1@3pO|GJmNL^8y{mg+9@?&KL1c=@V`1;VXC?_H;pKy|PL81HVgTA2oFpIT)kN
zSI5^fjpOR~JOv`2I6ht-zf~PCljj%wl4*=dj;Z5w)bWry{=7Q=mO6fpIv!NVx2WSU
zIdaR4or>!azGv{}CHS3!n8(2U1joqzm76>G+|=NN<6oKgY@h>Usch<Cf2ro&FduP&
zsNc9R;ya!WL1tl0d2HX6c)k+zy0``xA$<^^`JL$seD1?%zSn?b&o}$;!+ah-Bc7Q1
zm?+xo%<p2YFXWH=N__u)Ki6l%J$!+%KNyzzgRkZTzWZZ9oOi(eSXLhAA29#ggZY36
z<^%4=d_WWC1DY`((6VKMvl>3_fi6*AyjCwse(yb=54;cf6n<tN>Up&b@Vi7&-h3WL
zd|$C6fM@#x9ZQnW3wv;{+<|ik#r-(%%TxE{7ylb|^*`<8^F3HI<6@jLUyW1pd5rr*
zS*h^~@B8I=WpWzF_~jsVAP$&Ix%eAAhiTN?PTAL=`ynxw2gj=O<5&wgf#05DEr&V4
z=eQZpoDk=>e)l|iocCFh+#}ixe#4A8mOyCcQ)13~7bIi1J9xf#?;Y4CpE<$Lm@4m&
zFedZjoYT4JICWvX71qlc<B=B;i>`Tbj@2)c{#R~}<MXe{$1&VrUnJs*&)xX^w+i2l
z&%!?734DHvIM!t8reFQIzt^7^5p(^hqc>oVUzR(*ZxHiNCt70f1s+118o>Ns2W$-t
zzsH`kp1Ls>*-5GDWfkf!=Zu>W?@+paCTFuQEJ?Pvkt<_otT**N-ml)D!})Z1zdA+L
zr~6T#r-=TS?UAutlDzL1)I-0-{G0NNKH8o&Lo9j`ON_ausQ&5%-YtB80lpi+J0Pd5
zr7pbpfZv(XhA^-iV)_oemT|zbYl&m5{ld`WoBP%Asp|McY5z~qe~ba|)BHbCzi;CG
z#p`~?am#*V+~V+kAgH}g9`;4p@jiz8OG=!{qWlr_7Nkp&{#h6Yk*-F%4Cx=LH2EQ<
zpHk^XNC%Nt{wHT6EuOiOHcwX9tK)lsyDS5R-yzRGo<IzH5W^kNq5Q|aTjl0XSw|;d
zrg&YB+)~f=5$8Une^k$BaQ>G4q}OlBKJo<DU=+V=!(3t;&&8Y=e>>cH0MDz)wwm=j
z;z0-R1joDm@O&WGzlx}5!n^Q&Mn^Cq*Mky$thnA}i~iMX-zCln(SGFpROU|cUQnE)
z@hg~z#+Usw?%6_5XKX^8VkOR`D})_k{<b6_e;48NyrbQwtm8%=MNCVZl5w2VBV&U(
zW7KWDTWS@LBkw(YCJX)i&zNT0QZaPev2Mtc<WnL(vQ1|kQ+;`#e_wuo7j)fCU5xLN
zWc*Bijs@^O%^3X+u)f5>xt_S_)A0e<4)p8)YacP$uZ#XK9;<LL-y^Rl7_;E_#`o`z
z{tf3zF-N-dYWzNCGv??f26&#B7l>ottipM{#5w!d#4w(I9p@y5&(BVf$H85a{Glk1
zCCR7f@SOS1iWOmJ#md%9=keC66L=Q%tO%ZGEQJr7TB`!T;e9!{MdWhF=LM9!7NOm5
zT9SN5>3df6xAGn_`4;TxDRCy;LN3dgvHrY%lsxV%ui$#86*0ox$yuKegD&*d6Grhf
z`j59Ly&cDTabNI9re!|rx79xNiRFYcM}HK!mFI|i@Ey1Z=RER;<D%YpbsFy|{uVi&
zO?dC1=s#sWJ08?@oodn5D%u3!n~U}VU84OfU1$TDqW_e-jvY+va%B73fw?a+w|#uJ
zuqOupq#jxR(ht@p%*mW1{O^?CDP_?XZ`btJ5mWxU)Q!1C_HUgf&V@hZF?`?kBrx{n
z9l*9L49{&ITMi7@&I`YxFg!bO43}TA4e7JEPUH0(@Y`Tl+Q9XY&=v}DZ7!S{XPe-=
zXr1|CoXQ=~85cj4DaK}nGhH6X`(*LV8o%r1Gi&Xe#P5k;x&hZ(@>!4g86Q(y7@xeI
z@8aM!!%O2@V#`0|9T)k_v0*Cz%aA|%MVB^2<uko6d3@&W?T)s2$Hn?jcVV7h`W&1Y
z7vrvC+C>h1!#lJ~qnVED*+##we;Uu{J(1i?-Jj>9{yatN&r@qIt#6G@VqY#^s>OV~
zeaj^HzeUCW`BeN<{=on4Z%#t|!QuPmMEvm#i-<pd<K2$;OX7R5mt;M4HfiPArF`q8
zZz$6-%oF<f`*=LZRZ_a{ouNKL_g=A9&Mz)i*QwJN^BkqS0M{k7VXX6b;fFusm__s#
z>iJxbxkPMmd|n^gq|fnr32|ND0ae_Fy<btpPklei=j?dx6wjgHx$Ajx?fEB+|HZus
zp3%lLPYXJ#&~_?tt^BSi&jiM<eBKdrWqHqrk&(h*JTUS8J~7_HbG?{H%jPk(HI~gD
z@m&_|#{8dXukG*R{Zn|RopHka(<nT%)WUvUJhO%0_OvHILR-n5KpkxpJ`&H%^BDUT
z+3wF2{UiHm^`58MU9A{Xw!@x{&J5VM3}ZF%{O7u#IWFJhgfb|h?P%+`Uy;vAAm#}X
z>o4%z#E05B9!tNYQC){d$!8nKuBNU0{N&5dTCD4Qrbx@@=F|Pf$aMW2GQPpR0q+6P
z*QD0&6k{Fnd*1U#Q5TL4lsM-e=V#tO@Hv758}1)uogmi#kH{Y}6yNi59vHs~2mjYR
z*8bF>Gw&TdAB6RT`D_zo@OjrHoWgBL|CX{B^+td9zr0`V5WfxOGjdCk_lo|re?v!3
ze;e;rPQ5k^WvnOY1IO?_73IAR$8**3sorsv%TnO^3P0V$ao)D{SpJiJ#8b~``Cac)
zWB&o!pTqCZ^Es{m-7m!Nuk3Jf{aGb!d`2seges4pA?_R(^PLwgk9Sxe=UhR4`!fR$
z>ZdFZlm+Tl`h9*`@_fdd?GQ126z}bIR)yOa&x|d-8Zp9eNAca8DnqY-K>w7DzL&pK
z+>7@-<>I&e_#Kz{9SNQ#N%jI82kfARy@Yf4Y#@IZIa!^HYhAV|FXq8`dHQi3e~-4C
zI3R9A-sKbqK>M$N&ED_4yg3f|v%cc4rB~1E!vk2Eh(%1UhXK7YzrKz7=pW8Gq3nD!
zo{48P`jW@x@6}R%z65+6@MFMrUw1zE0er=G^zbzZ$vAbgKPho?wopIwAG{Ct`1G%m
zn{me%;X)m^A$_ojhl_ZqJ~;Ib7u4U1sY|ccfB({YbYA-Xsd#TH+ZgYgWW4aCDBc$V
zd*d8ai8}oSp2rjMi>KnpHC=L{(~RE>B7X5<@!R&`cM-p*MEqJH89$EY&JV-U_QiN!
z0q=`%-`H0w+7Z5MDse_$B98HUryY167jZrMG~=CFNBrMoKRVDFq05?&^UIXJjqi(h
zg?lk!e*8^>n77dS3BJephV)oU{9XyM9UuR|DQvq6@9fERW~g?t^w~^j+8kuiHf<rt
zZ!YuVj%WXYEx~(h7xMcq)+<-Md;cyxzwuxY{WE@x1|stj{I5H{Ygh3&>j$5464zeX
zH)D$96g`)I$7JjO!n=;Vx`XFP=i#K(HT)&KZ<p_Yz?gy0<<Cnv4xf8MTU)U41FYHb
z!4cYC$b7sV&xaL?z6t#j*A+*4+JYU<TkT1#Z+;>AYxsmRerx7WdEF1>ZTvERKRM@(
zyp4EXYr$5m<u+daW`WPew~oqu4r{#T?Q3;%`<JV=8}WMv+2<#_Vn0Ve^3*GN<d!(2
zMfoF--1T4PyV~G8o>3R;K4kMZ!lVA4Hc}s-$;GoqWeXloF6%!#ou6kn^WAq3^88vl
zPx|Hg6WWnX{~iw4`WV(2Y7hT5kM(0c;<FB8T<;kbQAgA`plyA?^?u7D)+Vt$-^zGw
zY{&e<x}MVZb>h7}dto*=vDQI9#<{3ZK}&tQ{6C^T^?%*T*XppyIE??^&ids2&Q8=R
zwgbK^3hjX7zIid!AJ!MtHTEy4D_=P<3BSFW^sBt~D_KrXfv1a-W2pFr&V0l^)V_mt
zrVnf0XO6+UvUm-_+;g%I@3<=5c&AgacIxHTZF8>6TX);#)$O;wk=KuBZ=<7<cwai!
zD?>Zs+VCjX?tSHs+y4%(XVf3Z80KClKb~}gt%+HAtv|<pVd;#v@|#5a>i>pV!{9C2
z!X58**W;LPX^-7zdu+Y1cpBd6J#p>y89Vt7b*>Gwug1yc@5o#0&dtMmT4GLr-z2=7
zd-`>GZKx}4Q-7O>vDP+R?}HfEwlQz|(0>8e3;J0`p7`zH&%&Yh_<<;%2YAc#=`Z<$
zc!j9T+iBarX{eviJ0U(BkNgUd->E##{4hr7^tb|B*ijsfVV$_qc%C<e^*yfjp6BK7
zoC3K?{N9N>KIdSs#$M`SO4dSh7rg(|68SH}9%Md{g<5{P4W3Oxf|sxHQg#B*0`75B
zxQE>`)tUR_>0-`g`J+-U>punkjPu*PK}Z?T6QQ+JH@S*88~5B3)#rl4I7e~DuXQ(N
zteyJE`+R=38|PvkCI{zbNbd1tUYX!})-A3(U*KK>ManJpTlp{&|EK!@10UdC*53aI
zy?#{nmzRHD|9{}isGI2j58yZTw*DW#St$6N{(o}1|IZTrfB%J!i)V%lhWG!OqW`D9
zzq0=idj6RGKkh5?Ti2bN>i_@RzMtjAcpSj*ec1n_PV@ufmRjcq<1O#Ir^4u_5tz?G
zyT-duyz#*Gm@g3XKXHtovUm*ZMuz?8c(znQ-w)VtI?MUJ7T;Gl6Xzlw62JSw7#@9g
z>U!sW_tid1y!UQ==m{sE^BwptT!3qIu)h|1u*O*1B)R4=({o%gkKnBX;&2ON_vUf<
znLD{%7z1(6gP(=oxX{~gyDss3Uiavun*R}VKS&CF{B5V#U(bvQJp*fTeYWZ1In0wf
zRSag&{GOak;u_J2L(W31{X_fk%zTnI@|k(>J3sio*W-)hb@F%+dV_qAq|}l6tpM|*
zZPdrObG<p*Mcms>JH_=E*H-bHvi9@VdiOux^%vLMyF+q)S@HaV=sUDAsu+)`aVqnW
zZNb4acPB*q;5!aD$BFdw;`m0y17kp3JG#a7`I-0g+JD~1_vaP!xEPn?ew1^n_+H=_
z;+*e_>u^lW8GwuT<B9o!d41Y_kdIAJ$t^WUP>As==RX-w)_3t61(c5$&#o=9t{`^$
z*jp$G<G+4B%a!MQ=kmB$$5;j|Prm=lj5&GU-o7)RzAtah!tXD>D}EPO>XrGNDfs>c
zcCN)dYwM<IdDPeX-D$YiXFkXJPaUmUB|mD-zV=7>4Moyc-kvV%`H!%d{$s9e>6S^#
zSH=-B5WnNYb9SiHA<s8Twq@4mwKbB1zQv_Yb87gTj^tjiFY(T44VRRDUc5wo)y9LV
z`iik4>ni5~)f^7SK~61pF(1G>*Kr^3>zsdKUhNzEInT3*^JTog@Er6}LA-;E_Y~}R
zdT_1mWLs;+y0@a<YvXHgzM-QXZ4o@4_jx?1;Wp%5%3%QbeN-==V;{wQFyE9PtV;Io
zo7fTJoS|4>chtGx|Galx<NRlE{yEn_g?d<pIWL^|dGX`?KkLDQ4S~?~Z#a_=BaLw*
z?z;jxw1;(!7~ZqU_pZ7#PjN;SKFBpGll@4aiuXkHE!doV3+X*9N5rrbcrjwv8^m`V
zs_%b^<w|{+%juniFQJy@jJWca>+n0f4rkQ#(at%{2l(^&EyQf(KN-BAtM~bwgWt@}
z4sCaG>C>FMlD}*VkDT2eD{z+Lxo6teS~c|zVIQtDeAfudY6pF0elx$p_1KcFv<dd`
za|Hc(K)fF|=HPkhWbK@3%EzyZxzbXe=j~p7G|nk7&e<7UpTzG}Pb6?^Y766&7T+>2
zzSIdH#WnTc72gM)qF|q>mkAZ?oysqiM<AE6rf$T(g%Wjpye&RBzU+Ue98fRw^m0J|
zyJP0xsOwmj)9b|^CW!bWzrua04&i=aIen)6v<?0QSav9fJ)BP@Pb;fp5%)UqMOiuX
z=S){+h3gvlxr{sGN`I*@^wf#n%wInb`H#Uhycp$k&^W&fCZ@J9KI!+L-fyzJ=biA|
z$Sg6xjr(xU&-4CMy{q^u^X|ySyIDF)zIK~)QTtDEpLr|xw?2;ULq9;h-ac~|%O@j&
z=U{SLbN1&2Yw?@sIN#qJ7}$58lgsP0$EAcHPW#kQXxZoymq$muEPiX(`rj`_y>$w=
zT#GTx^G?Rv>o)FfyZTaGdlv5nmf8B;rBSBaHxKe!5(;%Wix>|a%ZNG~_qL9l7hQYZ
zV!n$tv+Wwp*&!YLgOk-ZbuON(8+yOi{(K16*TAm!AB3PQ;GzwQu@>r9i1y8KVdFnT
z_Y&%UxuD~KlNo&tc_cDL9&OiUMqBsa91V_!eymB^zN-wrI=vmIpq!`Tfe-pMQu>8D
z@FKpC>f7?5u+@1GHbXbx<C@X&11EFsRWBE;eQ4v}b@?0j;(h&@ZTHWMwrAp+>nz?I
zeQojH*4N;Rb6&LdZ!V3t#*lB{+`L<^b1o0!H|?-H5FL5V#OR1k8Ex0ii$+JjlCk|-
zj0Jy*@zFl4*^OAxCeIh)2mJX<zF>|zDBI$R0)CIOB-tvy|G|AWo@HRY4xoS9pEuYl
zekXW{<%@dQyKdh#6W1Nslu?2AU##2zO2(7@SVJ6>)!S?FKF|Wp8KK^!?#;A!;fV2-
z_D&7`eK_q;6|=lcgZMpr>)XYpPwqpEs*dEX+k4H#@FwK*yG<GE{_sjhv<GoWY|4oK
z>Xi(RZ@QkBF=)#?{G+aah8-x&u2V$&iY;?SUP*l@>s-VL_mRnZ&W9~YuH*H(-p
zYB3Lkx{G#}*EZ=5`sy5>FZ>nXjp7_$&bSSES92IZM`rRE^XP)KU8mR{c`f$7Qy6^K
z=^lL9***B4lQ<l3dJa!;dJivf_Mkmjzh6-IV*Np!hdMijc_OYuz9Rs{EfB*$=GXdM
z>U-Kp@jWfRzk`q2nS3{87|+&=?{_{=M;Lm%o%%f6xjrc7M@k3RJG<ydYgT5|<_m1y
zRpOlXZ`ARZ@)7;jdulFBe(!R3OnyItekPFBzY*_o*eR|FgP0#0&3h>JhcmZ0H=-R@
z_v1aTXdAc}TzgpLhdeoE;PWE5uZ}{Jw}S<U-w5;FbNu~#4%^D3crOy{>*RPujE884
z`renixN|(p{vPX@y*M*2`uW$jJikE>b$fZ@-nWy#$z|ngs|)<dmM`j42hZb9F5~L)
zaje%nMk(@IFMjid>&05}{U&}ZoJ5`CJn^EAfOv1xd{DUsVpyvqj1S(9@+w1n-2o`I
zh4IPTaV&;pYU5nEC=>OLgw~%<kIuurt9K3IxKqq)>c9O(+~mCXiLY##Ebntsb_ssp
zJ+BXY0z2v~>ThvyRI*o%i}?L>-n`qAy=`+b=Qnrci(v=j>-nkkW8nUH*(n%fJ?KnD
zKh?9ZvLh^hOMeRH-om$GZCyF{hM)hug*m7fK5s{8@avb)=Xl3q24+gL$9QQ^+Atn7
z^LLyq%ejFa^pD>i;kQPoM#Ew~BNyXN{$6gB7>~xpxU>)HQ^j~R&bp5A^E`PT-i4oY
zcpd7@R5=HLXJUR4t%9D74)mPpfrOqD2}q2mPV9z+o)g{jUf{$o%)^U!k^tL*cZrNf
z8{&AQllNMWUg6|;vB&Q>JMe5%H^wC5J^1S}XYaiWU-aMVdoM9xukKUDd_C@CyzhAE
zD|hMdvGZsCgX2V_BVcECVn#mf-8#Z8>VmxwW4w(u(b1+mAYm`o%iS&7c(nbALD=U+
zJY7Pcct_Ca^Z8l&HKM0&0^U)NxQhE}eE<IBD7J~C&oe)nSN4l4ugNN}@hY!8mDiZ|
zXL`|JBzIERlfT4z4G%jdiW^egpyC#%<LFFI$I;36;yA=!ajp4NTiV{Nm?%%+!5I1u
zjOl}zryo2Ib6ev2bm&oXJEOc-9XllBcjRpmzdFV*Gl6o0%o-1g^2RgZTU7i;@qPyJ
zL;Zk^wx5gmZ66xHRQq%AuKDfGvbKt$vD-eKu{*LVio9e#nJ>zGGG9>nxHDxw`6{2>
z_6rfauH-J-O?^-Pvsmw9Hux;hLe*za*5a10#chliH+fzD<5#FhmTl%TBUW7JPm9&Z
zHRQ@z9qr*~8Lz`X6!AhELwrinp4`?`GVy$U27i}}m}M-5WSwh)q>c6L+aaq}om);_
z+|9a$F$Cgs_<FDXO1*(&QZIfFAoY${dh?WCuYSEqeYiguE$SG)PsV2%qaTR;|6+_p
zJn*cK7l-~j){_Ho(^iz*tJ42L>Az@i8NIR%WETIm?QKbNposcanbevwk?n18PP)Bi
zy!xNp-VTWGZ=}6}T%!(+_F{KHw6_n%cvse;!<$UsWO;vfhgaTsrZ|_e@OHsRd9Xa0
zkEdIf%l^gWp}wTP14f%bopi$9`ADNaI;D`PkH=n>ZR^-evTYrEacFxzw$t8TKmD24
zUNI)<7B-=Op-oGY`vc62vA}yqUR3?McsBO0>DOgla;iQ1WjP;tUG|knUX^|2k(Xp&
zdE`a;PPZ)iybf%@xFFw*v8+Fz9QNu@XlwEXa-{u75?)@E_WX~(B=bN1qRjvJ3o`%X
zJDES$snqg!cKPJL)}H^+_uHUdqx?>c@oYjG<#(LzpZy7+=aKC>&Uhbxk>fh_<0(GU
zqj7CI=ADo9sYoC6{9Um1a4+hMsE4AD*m}Ge=kImomKn=Q*FEYOGG4=Vxs~gVVqTB)
z-Sgt|zQg;zSv{L@$>6hrT+Zu8PZ@!=dII5jFXP>RF^tg`1adJ(bE((cJ1)d`7kGY0
zaoJx@;d)o7XZ=`D-sO4`Xd_(zAutEy<kqag($>)<U&MJ%k>fNY9@TA*bI~n1p%F+=
zndvxng_sK|beysojuR=0IaQAaoKB5%BhuTnbR*JTi0$BlCjwauHV1NH^Y{f@0|g5n
z4$NMUb8pFUuWWNpcW=q*yAt)Q7}&O<7~azc9Ye7|e&~T@3F6<#xv;hc_%0V?{I&_#
z<!%4E6Ty4qBlH3GPeFMf<GnGTE8{aa_)Xs17+Y~{GMVw=GmnfBzmsO1LL1W0jN|^I
zmwhttFGPD&V<$0=^2SaZ@Z5tMJ8?|Ku@vtmSq88V-#sM5UU?v0hjeO=4{6ww{!Sa|
zGNg+&KKg*9(53WMA)V^Oz{mTfla9u}5%&ZGj@&Y1Bhqz&9L|?>z7=Cb@x8;AYZ0UG
zi)&Yeb*gR2&E9uI%fxpQ-xKRWmEc`WA>8AJ)OS3Ssf#<$;We`T6!CqTyD;R)@675D
zQ+{Xm1GXcq7ed|PveGs+AIvmtN83sc`Ob{bPtTc@{5j{L3-BJc=?><itCG(w{YAmT
z8*lAdi04+bZ+yFdVVjFOIqAzMZkhV-iB{ClWlr)$YZcaLtirs@=gc{adn2|llo#)_
z`CPlWAL6~^H+Zid2;seQm*BTC5q|fBDUoMkrg%n__fGizUk2Y#y(D?pRO0B5Q}x69
zO_aCZJL>=_+*0%G%pddVwQS?5=RsjhFgtnNTl<@BpU)er=SwQ4qfgp*t&_w12HuYz
z#=RKk9HO}YDr^6q%lRy<=hwk`W$|4B+S=>;ssy(P^C;pRrukjmVMw<3_GdBo2fMah
z;Y2WI<bAB1YllRgkEiabRUK#j7IhwRqF-Uy!M%Oc^sVi0efWlWPr^U;m!do;P&f5a
z5A&d|Ep5oB4)?=oM?B{JK8`xs?@<3?;)Z_O4V}x76}Qy)W?>|_>-V~C=Uo+TJvL94
zC*%7zp8bMe@vIKYSv>#F=K?pPoa1;uT#UN^u%3Em{v7_hB31#`AH-1j*q%JFmG<#C
z`xn&ZfweBiqt0*f>=ou%H;R5F)au~f<>Ea`B3&GH@IC#Nuy0i6bJXwc=$9Pg)Oi?^
z-^YnKfgt8Ew7E4AZ`kj}1ZudY-aQ*eg8m<VIT<<pUNSl-f!|Q}ImN8cM*_*%TyT%z
z{X$3Z4%)dWvm<!7HRp?4zdb3+_j7sAIn8tNOp}@~I5HvGab!WV^9bMdh4+w)Ymtf}
z+QpCORRl`sEpQ@ppLI43u5&Kgg8oF^9|T+T@qBuGw}UyrLX3yd?>gJIPeM%b-Ee<J
zAjaPa3_^P6AeOzTA5K>$eCP2AfzsBf{BCO>d}2B5gJ1jM3uCb#w(W;)-g}e0cP8zJ
zU*7%g=e;k9@oHa!HITUu8?I$+8|?dAv-{;W?|jjIs&UWp`plS92l*!CYRI=B`TJhV
zG9|Glph)Alm_jxyNxymja3j(@zme?@zHXc2;xoSE5!Wg_@7PvxTi*6*xK`nwtwZKL
z1$`{~Kg@?BCWj{=Ca{mOL7(15`!Qd1_kq_OXYNJfUE=tjD=Qay%$OU-^ZM(ZyOHKv
zd0v^6wqD@$&P_O3s1x1u`cM|yoDBMnMXB*A$3d9SX}k9b*DedJOFAz4g}n5fLbB(+
ziyq{)DndKF9dkOE|Hk_fhtKKo`J!E)w`1NV=kt#1$554f!0#D~W$e;1JVuhr6L=ZU
z;j>P{2AHg5S_kuQKXODoOUeG=zVH4Z`XrvMT$21ij5nk0_>NdSEAUPm{cV2+-;E<?
ztyP1ixK44M#308J`%q4;n9IU_=|SxMUTi3zV0*`L(cU51-dPS9rxozHI2UX4c`@%o
z-%Knxiffk!Vlw}?kCWTJage{Q!T2)0K4IJ3BYF4j{DEBCC4sq!KGYvL_T*Ho=_<Yt
zIPxC#dE+1WnY(@8&^)&P(h2B!V*Gjs%N_aTP(ROQ9ym7;OrYOH9@LL~(0?9T&vP->
z6>XU3dF>qYWIa3|b)@#*#D$Y_Zti_6pN#T*7@kWV!glE2zXZ<&z0n!GZ}DTOV@HZa
zo{Ju1p1F8W%de$9$D@Y6oG+&D@Y|X`yw_u}P3bG3MEl4<e^ra|e!fb>_v2#B|J7gS
z2hm27BF<Q|to@CTqawEd?94&=&)!!Ni1B((|G1_l`W11_-G42vbBN2n3a6W8+1At<
zWO>p*#*lV12A=<j`5etg++%$9Z_>tNo5J9EyRt6__SWNmuom|gVec5_Tzt=nexS*_
zM?s&1@#oQpJPy(re;#es(yNiK2adQOt%k(-^XPI&j607mgT#3A=u$|GGmkEU#Q5^)
z{2&?^uWg8vi)^_CV&mk8vCiA5-suhLvUJLEkPho<{qqftZbMB=d304>i@RcVLsd&%
zV}o0<rlPLCqO!gQi^5ejxDAahZeygT!JRmzd7@icQ&q9LxyD^lS6|~+*ECl()kRtw
zo80=k<`%cE8CvS=M>|SyU1L>Cy-l%qyul}5b-byjs-|uYGP9T_+*rKyYPY_zqPnhO
zrMm)F*Hlj!%>#6*=91##V&yE;l~t<*zNV(7)+^wdO)VA8;EcYiadmxl+Esx=6Au?P
z*WHUyh;8)E`0O^WaCyKjm=c}pwlp@n&8sTv>+#85RdH91+g#JoTqDeIMqe$A;vp~^
zt14P*s@+vJs~Vfux+@U1o0cuOnM|MTow|nRmWqa!I-FOeOci#RxN=@*3Pw{+MRif6
zs;;Q2v0+8sN~f-JRiTMd(LGId(5w-KcHDG=Z#zbOb)=f+tf;SOt}VKJc2Pw`bx~7I
zWn*KDJkK~TH1fPv6%7?Dz4Pi;;WKV{*EYA*tV*5ktgLA%YN=aQQ`ESksJddU(`=?&
zDw<k~sv@hEoy{$ck)r0B`V}g@?8YS`28f#ExmAceVm<|bQTay#tzFf;5}M?RRrQU{
zEMpI^uBlwT5(mBXJrzw2sAH*gO;b~26ZlOv^)(eZlXfzv%8IJHsFCf3az$N3b#={}
zx++zHA{9+F4Tw`!ZC!mejz?;0sK!}aS0mEY19MfmtXfr6-?);;MLm=SvL=EPMOqZ7
zNIF&Z6?Ln?Yp$sg`STFZ6Q@AZwxU(2_>BT)oFh$*5ocyqEgWxfW>(bK!4EbCv7x;P
zN&h1iXfJAG6^5dUs-lYO>ZY1z?}VlrVWv~j++4S^p{Ck9>}hPMSS2DbNu5?yRa0M&
zlP9rlc?smvRMD`K=TtSWLbi3H4`SBWF1)^QjTXo?H4W8`O+|Im8^@7{(&;9|ycvC&
zhaf)9&1ekOsvPPXT2O?mBQ45-<`#4z$Op1<HC%U@DK=MjMCj;PhG?>@8>(GYpqZ$G
zJe75|5`imP(NuHy>Y9eCwc<3iTj-B8sVK^J(bTwVMKcPt@vhYoum8b#37b5J|7AMt
z%$<puA8blEA(28_N!)9QZS>-sZo2WNxuZsnT3Au--g47Y+5I^~ag=e3%OX%m(ch)c
zLl1v(i;JRctVc&%-MFfv4qZODZo#4(Zbo0$w5Fzs9Xl@r@Cda9eb`hlpKI#Yu<u<R
zaVu89WwtY(CZf^Y((H9eQ>tfpe*&tkuMqaTt}A3t&XnR=D9q6oeWDH;8gp`T#Cez#
z6C3on`~ZAP@uk(6T&!$tf}LLeHoc2Vt|~Ru@_eBfZY){2w#BQyPG$XF;wpganJCjK
zs^YosP2v*87@$|In5+C*%7`zxYKa>`hfvefJQsnXE$%`zC|<A-s!L{E&Z;D~#h2n*
zHP<abyPN8!F9vMJ?)3|<a=q5Z{N&Y6L){gqTB?d7qvBc7xqkoj{4O7!UmdQ;b?6Fk
zje{lkG&bF()G9MY|Hm$~x>oj_b&)lf^BC<y{cmnzAg(R->~+`FRk#apym49ST$i-Z
z<*_^z&0#z)8EzlCEloT0kvGfZEx0LFp1j~LyLwrvSAPq<+J|a5Rb4D;56=&J=gX$h
zSlPlRpr4&~i05z{;;$GAiNO)w6(@=k(em`-?ux^6RjuK5iK7UwvQ719j;si)8}4do
zyhqvMU2;VJw0pK^x5%+_^@<g!R2Z5-T_vk78*O@U!qLVQ)!RwG=XmD}``Nrj_l6qO
z%(z^Vs*gf{MO78LdlYD6Jv!z_adi`VE=iSB9j>%1E9zwga0P5i6R9s%PD9*kL6_f5
z%dcGo&&a#fv#S9EtJPJtQXj^gxKi@?m%QWBZ(Nc@+eD3B*~pO+hp=)iDEX=K6@J!4
zt7>Yhn=w+0)~#B-N-9qo;SKeWPw{15KG$A#eW@!tOn0J)z8GJ+s~gZft7^qSS@f_v
zpm?~*wlr2X)(;`$SOmS3iSd*bO%*Fwp@)@TG{92S5e%^0MOULLw>Zs>tDA5gYQjYd
zS0gdD6ge?2L+gX6E^cF0)#|1u>hOB!O7tkIQ$pt_hS%uJcz()X5m)Q^tLkulM+-+4
z!<8V?h;gp0QanG^pJ?ZMCseYOa9W{T6OGiM6Ga^r&^;JNqca`tUd`bos=*~QW}{bh
zU6&U$RjF0)H^W^VMgP>Wa>k4qs-=K;OEX52bJ<^s5vhB7V}w<p`40E?`7Ci>%dWg5
z&A(9|o+}WXpW2F6h>z)$T&WNPR1{YQM(kqHI{dsUaUO;&yo<82*<Yl$q9*aVspjhl
zgg>ADS2V3$&FauR#C2FOniUic)c;Z;9Tq$kOq%E0#fuaCt{dWl!hBs<cGGEv?33$o
z`IqBCnJsyLMQ{8U`&Ff#yc-(tk>!K>Aj^^s0sZTWmWb{zFShb#bqYo!-tmR9x5QOK
z-nz-&aWw5txAwX2B5_5NjZtge-c<_u-EzZ{8*cpC4RhV5D)$Q1<O!lVBA>r_ofgE=
z5jH0^dgVZS?(HgpqHiv|Lk_=+>LP`=SJl^{Cg9^8g}1N74cI*uYniyckYiBv2cn9*
z?v1!!q_0<=rC3Uj8NpxeqU2({yIOSXskq86Ma1C?Ie_7@=%T%QpVXbY(g-is+&-oH
z4qQ_Nf>z4m9Ph(L<C4)re+cXN`4)A>lg_#okw|?VZkpMpGYbyr!k~pm^Tr=HU%aE{
zLHN&0UnR%q%@~`?;jMd1LoGT_oThUN7T~6RZKTGXQkU`@Is;#1$5rgo*_U1ZrQn<e
z3$I$V_-dS^Z)zm3M)YcAuSWP{Xzz{i)j(ek_Z4rfFah&5fuHQsl>!elJsi&vwBdMW
zpPirW!_V&Y;V10)h_D?$#Rne~v-8LF+VN9eAH38DPuTI(eE6sJ+4*COeQ+Ost`Glo
zs<D*U86h8hz>ep2_~3(f{7lye$KwMwd(QO9_v}(T|Lk5no*%d4=jQt05j%dK5C1$L
z{o{S~j8EA0pI_{Q$9(VsJAOgJj$at_!Q(!7!UylO<1S%Ky^=Sb!}|d@Zs$*MeQ=+6
zPRzCQCwANMNg*G+*N#snZ1HPy%#KeXY~fFd+wqHBAKZt3u@C=ZAAW&Pe5Nv6i=9(_
z^h^uc`P2IB`1F_^FLZtIh#fETvA-y6=g)9`aG&y>>634<kDg0HcKx&CK6sxUzs$#;
zFZtkeeDJwG_RlM}=Q}TM$LABa)Q9<{K6u=YU(w}*zv_eg_;qE-&c8D3gU5XExDTH2
z!Tap^mkC?q^W~5a-syw;_#4W#^Fu!RLt!6&%m<JA;0Zgvpx6hG_~3nZ{Hm}I9`nKD
zK6t_h@3Z5JeC%ITYUeM`^}&7gEcVkAvFo|o^}&1X__ZNBeq*N{FHP9-n?rW|mbee@
zW6xKM?fkD1wzP|{xjwj`o>Du%EMdoQ>$Bs_T{|B3@vFio--@_hPo)oD-EHUBB<%PK
zAH1&E&ae03H@bE{zQ@5feB8Ch$Ig3t?fkVqdRl$-wD#Hc+?Q*|+g&@p!3W>uW6zd^
zUC$GpcKjJ1`*()z{GEMv{Cht9?<MT~zaeZXmt8(~J|D94zwcxJ4<dH{3o$$XBi9Fy
z+wpE6{oMn0{);|({?13w-zDsN{#(cgkNM!ec6_%_zJDLK^Z!2XgAds8fAHb|)V1?}
z>Z9kSVmtq(upR$d!jAvk$KO}_?EHTsY^k6B<fG@G5_bNpt{wkH%m<JA;N5ooe}wJ$
zzx3MiH+<}W!-xMrOYM5zjN9>l9fpTN{I9gb9nM3FZLISr@f_D!=g-9iAWP(tq5sD^
z$!>Z4k8)nfN%qL}iLjK%Bb5KQZDXBJmEE5zdq0iQM&Pwd_DT8YT}tkOWPH4xFgFpi
zvCfCPnSku2^tQ3i$1Xnu@0ao;3Zy^E7a#C1;M^%b$_ZIKf3o4`D#BhGpR>Y(A^xSx
zh^eu&-VH;P@-sHmHXf&+-f=l;E2zW&;T=ZL<JsY2K4%UYY&}=VlGgKtEInL-wLF{*
zXJ0r2?<Oc(fM?iCTF=dV4zjfMJRyU8b{pwpJPR4Zv+iX}vF1t`S#jsa`Q#g7jw=%X
zm;L)<{%6AfO!!~;AMXDb%s+<w`>@vL%m2~w|6=)P!T&7yKm9++|19{Q1^=i0C;6WZ
z|Fhx$wEuAb|FfIJ7c2h}@P7pSpL&w|KN9|rg#QI6ssB0fKL`F_e3JS<3jU9R{}-L4
z{*Q+Lqv8LQlhprH;QuM`fAW7t|9{+8i{BVlIK^%E3K?o!CuGUK%Jn(>@N_rd<I_4i
zGkQZTYXZi2#cj2CzdXizZTAXU(zY)1IgI;CIqv(<zMlPi^Z#Pkzf)2Er=t8P{#Pvj
zFEIW;4gQ}7|0kTJ{*Q(KW8uGhlKP(u|8wF0g(s>1r^El#;r|6EssH2P|2X)6{z>Zp
z8SwuM_&@$6^*;~(=fVH;PE!BRg#Ty4|8q}L|IdQ|XTkq-PE!BRhW}^7|NN8G|9tqL
z5C6|TN&P<u{+|Q?&pJu{KNtR=3;)kNN&P<${+|c`^G;I#$HV{e@c)dH)c^D0|M~EL
z+)3*H1@Qj@_<#CI>i>oC|3dhmdy@L^!haY3k3C8Kp8)?S!2i=uQvWBy|B3Mb)RWZz
zN$`IX{2z0Y`ac=|Plo@eoTUCwf&WwB|LBv{|BK-NMeu*rN$UT_@c&}?pL3G>UjY9L
z;Qz>z)c>jQe=7VRagzE!4gODq|Jf(0|I^|BboifjlKNi={|n)N=1J;*5&SQL{~0H#
z|1;qK4EP^7N&TM*|7XH~=YPw8ykGlY1{XM?!3w7YYqXVOjkYqZ&lVnhAez&qb3
zI8nU!J%(p-Iu5UQIuAeVbRB-#i64H?*>wc(cRn(~*?nYzlQ>f0^c-35^d5QE*>mJ&
zr|-ynPXEz>GjMc*GkA1C0Pp$^<Q!ce$UXXOAphvg0r%*8fr7SQ@;%~#Vm`|=Ka6Ly
z@w9ogYUFFxRb%maAgBK-C#S!1y)!ro&-?UbJjZ8!+IsMO56}4}p6`a;{jj?qcK5^X
ze%Rd)yZ6EFeXx5U?A`~P_rd0Uuz4SB-VdAi!{+_4c|UC451aSH=KZjFKWsh#n-9R|
z1F-o3Y(4;+55VRFu=xON#{0sH_2<UN24?N#^F3n&S>iFDv4MFZkv@H$c-B4rJ`?qx
zl39HLd3<AhDDSO^NIN6sbN;7qROi3dDe<>@lvK~}znvq`-x$B@ymvPIufLo9|GBR|
z`MnQr{_KA!+&jNmrOSkjiR|(G`=7%i9Z+^TZ%dx@iOk>mBq5Jyx<a15QR0DhA&IXm
z8G<{1ii@=Kc0}TvqC%$i%e3=$r{cwx>{W75%6D>=EKt(Rr(30^AI>`wmF`e7u4F>V
zJxUHp`7Q<gepl&#*H!6aAy41bsnQ`OWxfIBzw>Ub!j&KI##GunFRs$vLY}^{Po;M&
z*(2qlkdhH8KMG6vZm*JkO7<%`pyZ&GeH8GcFGtCIB@2`cDj8C;M9ESm%ap8DQrXcL
zRp|~TJC%$pxm(GEl6#cwQ&QRa9+R-|y&NU;l`K#)sAP$fWlGixnQAxhMHL=XvO`H_
z*L%BEx?9Rm6#j|I@58vnKlIM)QT#nZ2E6*asb8c|-xwd#elFSM`6Fc@Q`&RM1Cl@M
z-H_CGxK`@RjLGzSgF;^Npy&|B&U(F9;=iZB?_ge+`8)6DNc{a=CG(YZl`K%QSjiG4
zWq!{4-74+r>lf)+zft+UKcJ3Fdz=rLM7ew*^#(FKM0(b5)cMLj=L41B2SLRTDOsXq
znUXOfXT2ly4P-u~aHZFa&j)dZcPY6`NoD^B%FYjZBz}LsI_}|pDm^IWURTLlCF4pe
zy?dqJK&HxX?{0OxPs-orNcsLAl`d8?qNLLEyFQuzz2g7AK&5My>`+qX=lovj`vYOb
z`46s=rAjLP<C9f-my*i9KlG|}zm!5iPrs}1xWa=<MwL|O_YcbSz8ocsl?*ExQBvi*
zZ;wpxSN#12Dy{6@ACu|5eF~2&*(0SFzXMFdPA^^ul%4}2i600n8I$tqx1{{TE+v)y
zf60HZo*d|w=N(XX92k)4FKYk6kmP&zA1ssUgDO4;V=CPtWvV@>d=9Go5BAFA1Fqut
zDcP^2Dvv)hiTM1nK+2z}<9{qscvQ$)@5*!_Ga=G}%(#%wYt>TzQKo10F$sNpg4bMi
z72eKy%?-Cqb!X3*J>xQQfd6JRuU*wrQ3=_CcVtu6dY|yRxQZF_#d6LJk*IIH2k&B6
z3A{YinZcJh;w^j5j7q$gw5qneo*z?hxlZNs*L-ksk{p0wElDcy#z*)VW7-L13ZebW
z)jpqx&!S(|F!?dCOvDi@yF>t-g5Ap}M{)BZi!@wh<c-^qZ%p!L?36O~-_t{&0J~5A
z2m9q2SuA(v?>VC9&sSD^`c(e2c8T)>v#1+ePE3gOKks}ZEMuSiKkOsHan1?iAM?*<
z3Y&L6{r@s{FaKg5#CTQa8<@L`X>6xUk^1lPDNC?>X=T40?}`;IQl||0;N?&7X6#<t
zJYVL2$<CLDob5Pz`O`Kpu0v^DQA2KJLl30vB~05hjN>vHxKf=b-hVd+p!Z%x&tArF
z6n3BdukVnGM*LaI)PFBtDZustN(E1A4}u0<lq2plWPH@gz-bH1FQgy}>QH)yxXBnQ
zd`t|Vz0Ji3FW;~SQbIresDEg611Q_AS8qtd23*9+u;<coDgB?ig6KGm<F#o#^?PoP
zA4=2siKybwhx}R^9~@9P^{h<epY|zyJmji0{)vJ!!}zc<g=4)cbznK<11a1|4k~;R
z<YQ_4%tD1zd>1FH_{(vmI`;ph`JaUp7KD5;jUO(Rct$Pc&(rv^K8ZVAbl{)U_-7po
z&x8EeG%m-Tjx&OGzMIBBizq(h^T#xv6y*bKC-zU$_$Ohcu>}s{Uowp!_Tum=j*W)D
zmiiFLM}w4cP~&!44FVI=dd_sIU2cJbG(HehAY?$RC-QghIL3Szr1>8+j@(*--<Zbb
z{VH(8GoaOz69a<nIEYW+&NTm6kHoWf0k2BqhrRe9Zh@9G{$X6{NdVuH#^wD6j_n5i
zcp8`QAwamQfj^bT2fC%60P(*`;ei11<2Irb_>WV#Gbmxa78dx+Y5Y)J9e}>T>uFrx
zuj5!5aIKzvG@$s5+wao+!+i=T|4<rF#v~p<y9gXh<40fzw~X=FN2c*Z9TI08GV;^-
zVc5qlV;T0zY5Y^qu^{m2>G~t*J8(iN@Gk+E{gS%>1`azjwEFN-0vNYVz?bHF^-#^P
z$U_;ort>`x`?v+-;5TadA}uzQf5ts&{+|?{bqx3>=vVb$&iBYuGCI@z0as$|-!kH9
z{Iddu)8FrDxU$E|1OB%f9@q4w`-cGIE4DK5d$jn(748E6pJ_dVyA+-e{OvTJ?2>rk
z1>k$r_@4(9e;e=*)A&bw6b?T!PNea}Jqn+U(2P#w9}g-#4*ZNX{%225H}HvR{7|pr
z!`{qkX<WYl0>|=!7pHM~e-Atad|?_tRHpRAfiFqp$8r=-J8w_pAA0;!;CH9-Kkb(M
zfD8QIH2&wP(nI_2PveIW7qP{GKa$2jDOUIZ@UAp2=Ob|JRp38L<Hw+vTQ=%L=6_4$
zM>{1xVkz){O5=a(m$*axS84o2Lg5F2|4SPGG^X%;;J-=Z$GRk*+Y9`i6drKmiVvCj
z`xNecRHE<};D1izCw6K4&(gSjZwrn+1in^(l0n5s9I{5G`NwJ{o>2<?Gz}kA{3!7A
z)9qKzGvZi2@JVTY(p7xenWfdMkClF2N3yi*j(pDy&e;TfZd%Vkj?zQ@TK{uAB=JB8
z@N3iU(HnOKT;SSu=VMO~^IehF|0(<wTRrf*()jUy2?tOvS?y{3M6tqO2mV+ZKNgdC
z_9EcVq~fFIsc;PWXQi(@&WSye@5~3T)kE(+IRV=9|EBZ@*xtm3`kD396z&{}OPJTw
ztk=@`ao8<3#{aiz{OEv$GiL*TH)W@qU&b-osf|zM`+I;hZpU)H>w>&INL5buDQW%5
zJ_Sb5mbCuo)1bohfot{TDAL?G(9NEj)^im82po21&r9Q<^-G-b$i6y_A1{!2fczWM
z_z{J3yqSGR8kg@W!a2)<*Qe``y#EL80*|Kod4p0v|7UCCkYuUC;a~QnX})|vsyvpx
zD~%8CQGEEF{r747BjqpafA)V*;~#e`KK#yplTI)_^nN7!-_rc!Wr`1d+3%<E0oW%t
z=G&jf562`NC<gvf8b5-p#FhvAcp4w<RCo!-OgU-%<5GpAo{Sim#!u+{bJDnc?-I@#
z5B>#d{76XYA%1ZhPu41YGVqyc{Li|6?RxZ~rw8Ya(5^dIysGp-jHplRIRSsfM!%Xh
zT*16A7@=KvP9TolGIs%gJl&2qdG?e6*T*5flJB5hk9Z-if1p(1&^JPB*8^P&$9W@u
zk>-Eeqj1JYyH6QZ_5`B9)Ab?Xc=@tiwEB?L_52~NKd(dS$2?ZKSi-LSu9~KXntDu3
zsm0~WF+0_?)|tU&Y{Wt)<yg7`tJ77BCEm*A^j5i8er!cWRgJT%8na$lN3W%+Dk7HC
zE60*ev&+Q-GEI(HpV1Mk-(XdrnsT*>M>*D@a3W36vcg%@tUk=Z(h7~`seGMstZlPO
znS+I7);Myhh4PA~2$z?GTv;AzX~L3pE#+LIf}a|yMfT!&b4?X+tli^a4sKQBni^+i
z{puQ+Uf1HOT3sD+%H<@T42QF#8hV@H&<t1tBG<tyZ)v;>OV~9*Np*SU+H$V#;54o%
z*Vf*{LOsa2kvTC8Vzmj{C1T;NttE6}Da3NQW@0%{a>Sx-ut6-^##J60t7N7u5Co?|
zMTgq3ES?uZ=I^bsC)VI&?!ZX%ic<5kyn1y5%cupbP<n86Lo?4HyIii^SAMB?jCNx!
zATBNDG&kH;4$oKDV<{f+<wt(<)+Q|XY6ZgYV5vlSgJ^JR97IkS?6g#ta{)W2T&~9`
zGEGIEr=^Tm1<s-rrKtPNQkNxN*Bq^`TZ!@!>*|$rWi%{#)UZ;PzHqeOQAW!W7iI5R
z4BP6<QTVmhO(FzhaYHP5sTVLaL*{CQ!(mmJ=gGwnRkduvx-cTlqL{HBCC=u0l;v_A
zl9e?Ltg&lSR$(!_RWgdG1<Wk68mkSObwp;7TFpe|C00jMH5Sg|&k>c$Tm1w;L)EH?
z^o<Ko3IG*zb-J};Q9)8@w%44RQ8QO#a=M&Wh`OwFh{YsDMZC-L3W$}dE+T4&>_fCp
z0kIJaR5n*O-IcBp%{5}_spd;(4aY8@?NvQtkZQ@a0X5p;nt?PDi(xf6sJE>8C~BdG
zAGt!JsAy0vVw37c7^JGZQ2Dq%B%(l<Q}tE!fR5Myh|r7HAiF@ZETB+_R)vnmt2`os
zl`hfYpg<eg-n}YNC2N3e#^qS&j!RXtj$-*3SxIM@6}_%mR%Foudkrbwy{0-56z!^t
z=DWNFLd)f9ZL;aFT7@RJ(kbUR45`L1`!DuHvQeaM#G;|7{&imMS4)N>I9SU{E-cCr
zi+&RQMFi`t$(AVkfK&&Vs^)SzR$0x<QI0drKr-yLO~VTdT=o`-t5~-dNpU8E+AK{(
zkl8|w>w?Ufy|`RdRV^}BE{kN%3e{nvzo}s_E-q){vWNL!7ayi#_vWAR5#uc<@O22@
zT+Cz|8^)^wzZXKs$0+<hg>%lITQ2`WPbUP%FvIk}3GB(?c*a6t)bHsL*ZHwdhG`FV
zLVres;(K;tJS=d}PESvP!Z$(kdmY2yjK_iL`34pLIRnp8`1cj=<*VY8@gsw;;*i1d
zhb0afZ`tuoa<9g2*vb1C&P@%&L%?pb;LCtn^3B`^{F>qXEHiE)a1iHgN(}qVe6wi_
z=gyR!e+=O>`8yyUz;4)|-3RQk;rIx%+)KcL9x>m%!ouGQOfRoe$sai%(xQK43vf#u
zM*gFrCxkTe&0)Q>_?0sexSnqaY4T~Kjx#R6M_pjxA%$-+@UX%=AT9omdK0*A4|&vo
z48r2?=<9&%_JoiIf3z95sKQwvEcuRp0k}o~DYJm<`Xf@$DYNZ*PFZO1YZZTy51;MA
z(l4Dd2;5SRV_4t5g59WZV|D`DV!;pk@DBmMdpQ5pcYx{s#*julPkrCORk@tz^-Es=
zqxh#a8GQDS&@=W*1MgD!@9lW55C8Pj41QedIei)AJ=l%-oNn5=OYzPAP}wt%<yJ6U
z&p5N+*e&&pdjL|8Terd=f}D%puxH%U20wu`;xq0$2HvCa-x_#A;%AJ9T!P)uf5r{K
zbbI1RL;o4A5L)~CQ$pddLF#-Jhck{CxZ>xHFmT1sqaC`QUZjz4o>^Xd6h6-2_bJ>g
z_qf7KAuaaj@puRJLhRULS^STDcR}zw28ri>neB)88xXpkg9<m}JfQGCNa{4=eC8Nn
zoVzjciNJLIO3#@y47?v{*z;B~1pT^*X~%i1g#UquAauM;;a(g(epujvj2y@n*cDC`
zdIA}_5arlSJRcaJYcO%z!+y!cgTP`IJOnIm!RZIvqp64Xv;Q%1#-r1M4*+}0g0tLi
z8;*;wm6lp?#)oy$$Tu?=*aQpC_*^#(cf>rSRxV&*!+X``2gkY8`=D^@*ZE<EQ$IJ8
zUjR(w^P|vTEIth9hk$GRj6U*U5980x)L#Zn<BR4(ewbuzCO-m9=Xa6>ev}fM$?pKB
z^AjY2FV4e9lOG4B@w3B7lfR1+o5|k|OyiFZlLUT(5}V2I1*Y*&iID{U9!hK`zaN;+
z=lSFhP+~Lqe<r5!$G8OWJa`TzHj|$ZOy`%91inj&&EyvY)A<RKzz<SlGx;UJH2$fc
zejzRVu)*&`n)+)gv6=d#z%>1*(LVBHl-NvuCorAgM-up5l-NxEE?^petf#+Qu!r*#
zL;1Oa2K_xg{5?bY<3i+t-$#kfv}XXAX3sdL$seS|X7I)LTh9U?+Rr!x(y-xt7u*dN
zegQCUrv4zX3$dH}L%_J1{8C`N)|&h>lCc^5vyAI_K-fLjIg66lHsgAC*15p6>z#c5
z0{m$PUW_#2b{5Cad~VRxLpx&@yc*coE%?2_^n7_f^~WISld1m|U^?GLn*7%cT*Mvt
zM+WX9P5!3_&hh|$_Cy1B70$Tp`Iac$7!L$oh0lW2`5}eRHE>tq#&{_p$`$tT+NkTv
zSA32GE%875Mc}OGDsHm<Lr<R%&I_KdKa4cvFaY6VH{yS`8Mj(+$Ugz0>xoEQnCs%R
zp(medogY<vj>lZ=CjTs8IzNUq^37)kE_RbY5tz>JK$`r?5H5C;Z<b>xIOG>YxY$j;
zS&m)ckUt;7#cuMi2BzB+N1A-rBNw~LzX_Pm--R^!ygzcWoBTV0>HKb_$qz%g*iHV|
zf$99+NRwX=;bJ%WYk=we1k&WQ++6G?-)xUP;DCQl1B9-J<wu<LnSFtw=bYaHv+?`w
z{By?{{92@;|J)$NH0*}{bIo?wtN0<v6&C(hV7fh?{+EE;^#97>??IaOP+Ih#XV!D2
z|GXCPE&9)U4!Fgh@i}(>c(WXp{_$Nte6t)C|9lQOE%uy$x!s=gm;3NH`|w}&;eTr9
zUr=J_U%+;3vGW2Szb?$T^Dp$V|H2K1J$*={d@uZt9d~JG1p8?0sco#|n(e)x2Z1x*
z<eK~*U^YE(0N3lo0MgV$eHJ|vN`T*?jzP$6tTSO3K3Vin_z7@b{~*r*zZb%ye<Jl;
z^h`ATrAq3V=y45yC-&j6cZ^iAfxjOgG<(GTGxSVi{j}IKi8?HLCb93)_2eQ=J=-8`
zdW<+{u-=f*I0w}^gv2)1nOuMmmV750*O3gDCxFj;UrWA|eadC>KY*{>&-|$8b-SJ^
zF7U6bV-Rv1>rA-_pL9LSuPN6Vc!+0!|5XDoR`_iO&X|zj17V57l;0Zs62(6VX^F!{
zJZ{l*k(qC))N>K9Yc@ST_FQDzQ>OIz*mJRuJr|qygr%N~eeAh7f#VjxF8&p8y<BRQ
zp0^+^eihJOi=Ki?Lk~G9mx5LZo1RYKHa$-O*X@ZSO+C9IEPAE}fm`%UT?ky)6GIw$
zrqVx~o;|>Adfo@F>*+umdZy(-SoBPzy%s&wHUQW4bRtbXyC5ujrso5<=$SqdxUQ!Q
zY3P|=0%6m$8@Nr+E5LO<aipoIAHt%ia1rpE)iDUUjdcoXzeRtc(Vu6K2mOV6AT0We
zW&^)L9fOeDSf_~oS@aiu2e@v3H_rgS2g0I%Mi{t7&y24F*Yz-7&@;oQf1Y8s--P1t
zg`9|;d8an$F~$`c^dI`g*QS>HteH7DY|%4w7I588`bj;En~i^+!S7Z4WstUfJAenU
zEBilIahUlyFg@Qsq?zwd2%DalfKSG5#9=1;Hw#{THE>=30MgK3Tnb^)e+hln`TdfA
z$-@RdsPG+-Ha#x@*ZuYMyb7GU4Erx(e`v!$0<PI3=9gjrtSsP`d}mRw&d))b{CppN
zp%1<gxUMG`Y3lJQ-%DBk7JDwG-!`1(VDWc$2XIT=X1{3Qs{YJozGJZ)@w|+FTl8Oc
z7I4k44B7_;mlgZ)%Ya+#zbqn78=f!y((PAvUe5Be*mJpAUMwfrbNP4(OTL#+1g_bi
z=^{;j0fgoI$IIse*ZJg;zZAlz|0aXaxR4))u<=&_*YyXHCcnjpf3Lw0Ax(Y<giSwV
zrt2?Je4loA`FDo$Gguzf-wk2W|E1Z$S*MNq^Q9(WTE1RA`BDtHP0uzT+?Zd=NPq`>
zf-L8W*o}OH7XZ`qRrMjbVJMziiZu0X9*SqE@(OM>a8)irv%d|2M?K#e%FirQcmmSm
zZ}3kBKa4c>Fy1!)5#X9%nYEHXhvEk8MjYnk0n^&iAyw{kCIZ*>M3F|mb0$OZn5l>H
zsIlP2{E7U%IP@?di~V!hURdW${a*#9+tZ0O?YYgs;|i}d@D7EW?WjxPG01DNoB0~$
zm>H3LHh0@NWG>Iw?cAmK1&};u=%35_{D=kb2FAQh{yzZI^^=D<%;j~>qJKW~y+s{^
zklR>iehWTbjNQ;b|DYYeA{V$t&lS9`S@c}7%!mI3aNYjhNaOqK%pe5o;YCb4&VYx9
zkkIj79tFR2DE^VF@Uo%!K)=GnL-7v@Q%|jd=L_5!Fz~zqg-0l{@w<oAHr5%4A)(oM
z7VSg140KRpGx=S>bbc>M;KwPknfz{G8vpD#N#Kh(;iJj#0jBZK$yI!jkA>f7@FR-f
zPl?UcKL||If3DIm<2s!GA&=|)IMT5HLlJL$H1vO108Hbbr|kK#nCD?L`5|CBKY=v$
zmr!Ce`DMT~{&=Am{4mMbOg{71`7x5fk5XbY`5nM?{s2kfcT!?A`Eg(x|NI2f<nN-y
zX7YCf)A$#}NCH1WiOuBq0@L|%lEB|XiOuBq1Jn5llE4>!;G@C+h=+B49|5eBo<oVv
z<mUs^`24C<@Llm?IKLRU&KErB5Bl&+41SzE@JlJNnf8Q%Y5H9kY4U3+v6=iRFr6PE
z3H%r(Hk028Oyf_;B?<g4N^B;77ciaQO%nJ*TKEZI8h>I4Y4Uq0v6=e!0Mq%sB!S;Y
ziOu8>0Mq!B1PS~>@nINW{BBd{$H*J&e4OjUcY$ks4l@M5KztakKL}js$H{~K5G6Ll
ze(^gujX%XD3H&ljY$l)OuJhw0fghp7X7XdeH2y^{(&TqgVl(+&z;u3`B=CjAN0Z+T
zOygfH;t2k3;M`0;%U$EkFoNGJ*u(jK20u<7`2CdFO#OqvH2qUUB#m_rQE)T(hiI?P
z?;{EPd`fI4p9X9EX)%((FQ&w1@<YHh{&W{<@=GYOnfx+fIzK`Z_+d(HCZESOej)uK
zKT3(s<aYqm`C*d4@1(?L^5eiXevykb`MW5wnf%?rbbc>M;3p`tnS37C_%k9Tfxm|m
zo5}A7rtxRGB!NFbiOt}DLQLZqhX{;yKFOiPX7claY5Ys$B!TZzVl(;0z;u2eN#F-5
zv6=i5U>aY{Uyxra*u(kZq5R8x$pgQZ5}T<%3QW@<^!PE7v6=i%U>bi;ge2(iqQqwM
zcLCG*bBjp=znc=9$xi^&`EjJl@1ewI^7jDK`11q_{66tvIDf$4my!qmpq>9|j=_(U
zH`e(ymlB&{&!;Z1P1x1=AD^&+Um!mX;|GC%3%kh=+4)zz0bIZDNRT(y35_#w5ij6p
z8F;VaFEnt)|CI62;yGXOKP}^V*i3(Gfoc3JLL|Z82qiX?9|NZI!$_0gL5a=ecLCG+
zF_OTKQ(`mu-N1ByoFwpfQ(`mu^jqgANCIE@jgKb3517tpn*4rBY$ksYn8xQc0{Nc_
ziGK$Fvs_?0KSUz<`IOj9egQC@-$@eq#gy1geh8S(7k+|YLNYd!Uj|I$f0_1Cf0z=R
z$&Ucj`5}_Pk5XbY`5nM?ewZZiJ1Mc5{5UY3A48h_U6j}ie&{>E^!BocB(w|84{&g1
z%o{A=VH>^__?IpG&A=@B7d+&n=O;e=mw+>NhCK_Z+oFHr7#}`u&$H;+VCd;X8gW=i
zJFBsq`92Ly&$l0G@)>6v|5YEH1F18y8~U$eJ(_L7iCOetRS8_TX8>u~bCv0rhkwV1
z|B4-7G|LCS$p=pWx0KhS-x~Zuq+#cxcZT9wgn=(M`)y_a;(Q!tJy&u2EP>DD``EcS
zh{HC%kNu0weE3^|YjMuXL7MqKJ`~UN?0nw`|NT%rrHApb#O>-<;FGZ%_2lYpcKn*_
zfNOSo_FO~VA?${pYhu7G_39eVH(KnuW-ss%c2mzWV4V9i@Ddhi$b!=+ty~6KPKako
zF+>}7Q_tT4)BMWHMVkB`2#ftCw3B%ldah-;+3<YemVB>$4!D-D7tib7ABubSTxXUq
z^}^02l$Lldae;@h8+I-sW{J;|MZkH?<Sz$iiT{#%;1<7@yaGG}JNs^Io?lD$Bcb7*
zUrX7qhOis?E-eIR$#*I3w8VMoGT;__uKy}<OTO3F0<Xqy<a@o*?!0z%{VPNDcz#_!
z2;36?8(kl~0C)(yk?)PfEdJhD2HfKBjSavpe%)yFC!U?9CE#1^EbRi$I%L@Ml|#TR
z`QAi(Ec}~Z1ztQ{&rN%QwGYQ{rtO;jo}D*W+VN%8z%BMH>$BsxECsIDbNY$)a!VLu
zJa)t1TUvoVG#vkG7O)#FIQ4zaf_DRB*%<o2x(67qB?kUAVp<%sT%=*=*ItLP_*>Ql
zT<5bsfnOGd7=zu=f9svVbUw=n{98LAwD=q@Q}|CHb-t@`^LncA+bAu1ZVLgw2fJa<
zZ5=-N3&1UUZqEg7`JU_cbAemzynPYy2zDdi+v|Z@;&VIWX46l5*k(*UuLJw01%C@z
z{&0MGB{1DiRbI<i7`Tfx%4Iq2vDmqM18`kWQ1KbhTd^B<E@xk&^Fv5ee;mTb{}FJV
zPv6Pk?ZfZ&!OeP7s`T{R`FHTJ#hyFpk8V#HiDR8R*miAvj$>_jC2(C&7-{OMhG5+?
z;&w*@7~71AvwSV(atHmg)So-4+oI=A_A?eecWwr*+gXb=?7XuB!eZy0ZvwaFYsO#2
z?aqVXTjEpB{>`GNoaJV*vwXP^KLT8DzqA|nm$yKigWZT{Ipc7)1@8p*v<2@5w!nhF
z0Zflu6lvzW2O<}{k#CrNs>RN**$>kn=n1o4S@cxg23*fKhBWvU^w-9xJ=AH~Q!xn4
z(w|i30WTTOue=DDp0A2?We~WfyedP$xf}UbE(69`m^j--z6Gb97W=DmfLqG9iaIRi
zTU894z8U#e?FJUI;61=-lga-rFg*^PNF)AL0}vL!s&j!`;!|A;+)}Tq&3e@Z9`skU
z9Z{EIPxYt3EcR3%G4MFj&{IQOEP85O;ClV+N1FV?p*YnF{7MKt-)@D6AZ_}a4E`>~
zkJ|Yw7)wh$SCshR)pop=?cJiMj&(uv_ee3)@VAckM6eriuG;`i_m}mC{D&Zzx52-w
z7MLa9`WzqpH^43W>-+8eh7RDC{<C4H5C3%^zK{OKF!+`@H2ws*Zf62%#G$bl!s2hE
z*<MuK8V`bRiCbhmaEo7&MZhiBwMdx{zr}~&1KeU~<PdPZK7^5mUw5-!SnRobnGeqT
z!@km}4|jJ1d(?unTr7Uw&G=aGrdr^Za%tKGJcQlIx2X%5#owkEfZO!=#HXpxuBSN%
zxE?q9kGM6n980hp_B782X1VS(F9n`&;nOdR{mr|9>-jP-=DWwh!wP3SPsMK9GYIS(
z!|@iD`xpyOJ8gIrxW%59Z9e!5KKS1O*V`A%1Aet6AZ+>W1#YRIs{z~U&+2i&E&5lp
zye#@xm-^^=+R&3g8g{OxUzU2c`d7eh`St?0<;!vmVK>Ta^+8~k`ml!e(30<(Lg0G2
zu$*A$nh=Dgey&*#+)_W+)C14QZrHQN?B5dLP(RDXV$VHUz(d##J@-(z#jks4zfBMO
zAB$i2)B?Bobx#Lyi(mJ20k`-SrG0vNC6I<+QQET+yJ3HHAuyfKawVU(SjPX+un*n}
z+|utw<G>eVH}YLu0Bno}pAF2?F4n#RT(>iUH0)gant}HyoaJcKf5?vCOWnHuJyOrT
zIgq*74g0zDzz}{P(y-@V)&(1%@o&Oz>RAL#uMY{NsizdeGETm?47g>Sd~X;y+qS8n
z<+8wnzW~f;=ZnB?cD?~zk550+wDU~}i=K584gR3yuk(q|I<{X+xvy&huE$4}%epS$
zmhxRkyDWGs%dr`|5uessz;wR`kcMBaK?sXqtv?yc&nBIGW8CiHZRZ+%+5vvsGy`W|
z#C`H@+u*}z9M)nt{A%+lm$vr}J<6W@N`Oa(>$&eHgO4Qbye|sDbBuiNdjOag&+L4p
z!RM5&tsiS&0bJ+1B!VA<u-MaX>L;E2Cm?h^1qy!&(o(P5U-!Y^^1%<<@mL;kOB`aw
zK74Z728_7H%6#~YfyMq<hmW3ZKKvJa@K=5G^!o7o?D%@XHow->PrY1JeOT{f=lY#K
z`i=R<Y*oJNcl+>J|1ELb0N7R!H_QO8+esek)dsV^v0RDMeoMRCV2rP_gNh%A%*Ae$
z`-W~{TK{&`MVk8Qm!<#TkN|G!|2Omi*Y%VlO+CF3mg~aCEZ_^U8}@88=8Lj(z=58P
zB@nuP<=4hq;1)YKMu1!F+!zIJv1b$eY+b*LH1gdv4ni-NkizpIbFmxtZ!-HU+D$#n
zeE4Shl1@J3Z?lK}iN)VdY)2M<H@yK|w_n9`^W_F!fHd;mOnV>4Zuqr1?1RUETk84d
zF5uPJO+7ySz-HQiiG|O8PmhBt_xtIS?w6`>_wzc=vN!U*zXKS3GjaN=>&ZtNak&2&
zgeBh&w(H5*4Lu!u?ffmY*P>@j47g=n{eTPHGG2Wk<b#*_;87pE(+4;E4eCW49*9F&
z>iGlT2d>90j5PTyUmHIG+)^$N>;Zlmb|an-3;=5yjz37<miqr-K5$F@f6xWK0K1|8
z!4NP@z7H}_-7ne<zaDIXVBV&l7_dSM-UY1Ef*beg+2le0Ls<}(diBsk;JQ7#72l^n
zdFVca->dk{$726O3E&mj4Zpr=)`wl-z|L>RAuM{n`66&m9+-N51I%LoH~W3`oG|za
zq>=B#;~~~!H}pTu*l)JrL131C>EWfo@3-(Hz_^?G?**pYugdG;IB-jOJ^U*0YV4+-
zy>|SOF?KzVnAgEQ;2{o=6hm0z|HzfVbvxrolfMYU#xDbIvGb8u;Onp(_CG?u@3i2(
z!0xl)eZXpm<DEIcA{LzGdzJ-fdD-}3A3O%!Vo&Ez;5PlQ`tVslE&NAmzePWn)*2H3
z7}ALUqxleF>_$8voe#{WpY57uVDcFQOL;xo>4Vc>)*(~ROTZ>u@LvJb>rV&Lw7(Z3
zjNR1pJ}{k6JIH6;!q^S|R@QTizgvmvdRWh(XKM(;avj_n1s=g}>Sz8oKK-@CZR;N3
zmN;x3u=5}DX{V1BfN!zqu|>cw_2jWlz%6lj>;)e_?XSgd`1{yiV77b@0k`PiMqe%V
zY?}?-qJP_RyZ&u0KDdux+a3pBFW+vYQNG*a5R9qe*ESxv^yk|Wz%Bjxwl{%W`txmO
z{bapiz6T*J`F@KwYIcrbxq|<#TnNi`=Ua@Y#hz~&_i-b_;873bY}2y{xJ}Ouz;%0A
zM%1$m!ltJhxFv4iVjZ#RXL(uT_N^Vjd5%#o-}*i<&7SN&q-oEK5Vm|@1FrK26~7nK
z7XLorHa#pai~X!tHv1nx4Y-!?h+-1QI*(sD6we+|cnPE>o{yISx7hPI<7~5s^~(~^
z$BlWR5i#&+PaMLQZ#QsTzU&8V`7)lieBTGI#UZ-~Y3A!w{~tew!<Kx%odevG@3+ST
zx8(b6v;M1g_wD)MTm1d@QlESoe_OuwKKZh5)BGKQB>nw%2gDfcMt%Nv7ciT@JAvEs
z-3{F4@2`OC`7&P2m;I70-@U+X`LaG*^6kn3ZppWceY~D;F4D-i%Z0Gy+f@wQl5ZEw
z#g=a=a9h5W!1a9dk!HRu7hArqz-{@mTx|L70B+0oN5J)bU8I>W%f*&&4{%$)EEik8
z{lIPc9s#cB8$lZRZf7}L>hpHS!;<gz$-pi7ZVv*t<h%Vk;99=fwMa8x_Wu@tw^swV
z<x6{Q`ECMk%h$YKGcL?`Cxp#kpZ<S)0(@J(jK3{k=40c31YC>5h!Uh}&me@wo+omE
zTl73(jL%1~enZa_EH9g$0v|oIfa~^@Ax%9jN1GnnYqRGj;JTg=($qtJHa)e#ZF-u3
z>w0Jh^+X|Tddzmzq4+OB=3+Pc$tQY&u?`vdljDI|#@kOC@fk@wV9%4Z%cB3uQs9<(
zm?t*?*ZtaqH1)9F+Vpe+FT`%zX<mQ(z@Z-YGd4Zlz%BC_Pxb)62)n8OH^6i|2a%@!
zeh7>H9dn2BN0JWyj`<KaekpKEd*8vhTIOwbFg~r=4Lf)I12E0bkrAYs@2e2DeBU3+
zAJL`wetvyq@Z*Yq2-2qigu&k>`A<<;_)pOv&HfSHiqF{C_~!L-x8mpf@FxP-^(Pd6
zvJZcS!5>ik7^J1$J;i>q6uVI_PZ{-RWDYnem#6w5Y<}$ruGu+~9P$tP@Q(rChTX{b
zX>**`3l8)=JsZN3@6!u`>-iQaeu)qNHiI8l{N+A;qaPbttN5(vHhZ=L*X$Y5ulTH|
zHoi~%pMGtqo{_~$k5QjT(oe?c5QIhlGqgpsXJo15Ka=IdA7}8(6hF_0KhfZa6yK+Q
zJ~PYU2NmC^e4klp@beXaDWuI`vwU5}ulC_L0oUR)qDS$gK75X4bbhDeKjg#T3p|3|
zsOQhH{#Opi<Hf)%^C9sNaMnFTPdp6F#%G>3{s!Qh{Uc*YqyEG<LF8gL^}h<trvFXg
zHvO!J7JuVLzdCXcc*ytJEC@@!&yELfx&A(T1908`E~Kfa6vC#5?Ya=V;n%Z9xsQy4
zLp?1JHa#7{E!W>?<G}xa_TD{8&LgW6Ov!4yoc5rC@eUd=%_qs-s<M>jtkT0}`Jq&)
zBuXGlLY5mrSFbB8GfS1Ntjz4pEUCn(?P{i(qj~%xcFvjgJZOsUo<`lgwCpge8CXU@
zGpK>#Xn}K9Jhl<dV`R+PBX&450@JPi{qBwUzKF;#>tVYG4>;`7m*0&WH*VaxapQF(
zzLfs=2ZQm<16P4Z`q%JCqfdE0hQE-{F9GJ3_Zr?whjLD#^GQbkWBdhlKG_G@-%Ww<
z0xV^J>XQY)Q}(Amc^vRh;4h?q3b64M_=f>=`M-{L@c+pg9%=ml2;eDl_~gF@+@*5`
z@1#SyrqTJe0RM);r<_ypKSlYlZw|`!De6v&{(tHjz-LqNPXd-kXQ2n3i#_Np^`LVN
z@HBo{u9R`_r|zcH`SjNT?#lBL-XYIVKY~Y!d_GMbck#(L@dtX~?+x%T8+^(wh5l#$
z3E=-T{sQ^`&~d>2ehPdVFqfZOcn3c}M7{b>{DpKr-UEIG@U(n?1@IJkUZy=s!N1IW
zQ|3XJKLfbS=WV=$&&xgZ_VUjK_;(Ec=kZLD+vRYa#`-4xKTF5|EO~eM=_5MuKRb)Z
z6Zi|{_SwKr_DKTZQ=iYJ;Qudxx%A01>A#9c8vf@3{7nX*^^%5v9q{+zFXWTu{y;bU
za|3{VFa>@BFqh8=@8I)uY`-aT{@e`U4*mnokNDK96#V~o74UWVW4l4vx5R&O-^(>V
z5rX?({@V?}T>NW90{%@t5kmaifI0YuJduEZhfjn6U)Xi=n?%}}xhwUVg1-qc7ylOC
zi68Na5YlJ<4*u8_k$^wSCqjrn0ho)wNF?AN=My2sp90LqU&1@_XZb`3@fQGd@vjjH
z_=|iZg!q>LbMbEx3HYz_i4fvn2F$@f!15FS3ZDoe{x!f{d?_dJuM-&|#J>rcgFoI+
zB;eoT6CuRE1DK1SClc`Q@`(`O|9Kx^F23RC&n2G}{3yV0;vMw=e1K1ckp3uO4*i1>
zk$_*|6CuQB{x1FvA_4ytp9mrTEMN})M1e@a7ryW_#9su=!9RKl@5H~zCqjt-Dqs%&
zv1>#E{t}-EA^sJ>9Q+dnA_4y@p9mrTb-*0_lS@Pb{tZ46Li}5Rx%h$y{M$rE2=VU%
z=HS1WC(_2uU+}>Y;QvKGU=BV_so-ytAKmx^fV=n+@jzel!OxI>0WcTe@-qQALx_J0
zFc<$gkwAZnPlOP^37CWb9oL8i`~^M{Li~$>Ir!gsi%7t~#3w?CzXX_r|G^0F#J|iZ
zLWqAAFbDso8$<&BH9iqSe8xNYQ^$z}{F{6tg!s1sbMcpm1pGUEA_Vwv5a!?)mk8LH
zd83a{gb;rdU=Dui3Xy;x@re-P=K*u@%h!km{82s;Li`E99Q?{PA^~5@jh`X@6krbi
zEb}A&ET0G={sLeQ{+Vk;0{$YO2qFF@z#RN~L?qz9$|pjIe;F_bztbcV@UQTR5aM40
z%)y@*Jm6m^GD3)d6EFw=><uCT{}!JJA^sh}9Q=hQk$``fPlN#fFZ%#<@c*9S=P&yO
zyBj|W@NW@sW9Bah_(TZlj{@e<|ESOfeu2mcA^vf|9Q>CfA_4ytp9mrTEMN})$0EEF
zzsV;;h`$J!ga7vh5BL{}j1c0#3Ydd`@fwkUzr-g(h<^nz2mha6A`<Yg@`(`QUkA*=
z{{+(${|283A^t7E9Q;pB;hp%m`9uiu?*iuH-y+h+%$NCK2=Kq$5151h=_w)se-obw
zA^rehF8(zl0YA?tLWo}g%)#fhNbo1*M>qZ{z#aS_x@7RDdf+#G{L2O6fu99F5dwaG
znEd~*_zUI{KU@H;(+&R-%3&@AJ`Nb?egT~y<vb#V{*RK+6goe85%5=2==?NbDg6BC
zO~6y~{W9q|a{KHRyi*P$Kl}{j@Z}}I9Q@CbKjL5J6CuRE3Ydfc!;3@${xv=k0{kB*
zKi`1AKt4ZC`pheUfB6Pr4*egE@J{+HFGE28%eMh@@t24M{5yOi1o%HO2ADIC>l-D~
z#>`K!9{ceZ@beQt0ho(FfOq2m8$8nRe=WezEB;URki$>*ki%D)%qiE8H<iv;`uIc$
z%Jr2^fVud0h_o^Dm55J-5TATG`2YJ7k$^Aqz|RnW0x$>vCoMn6nGPYup90LqzlL|x
zpXC!F#9si+!T+}fA_0GqPlOQv5@0U=B9VaqDxU};KIQD<-yjn3ukeWw;9tECSju|N
z)tl+?fA=upllTkt=PTC$bMpN^ns{fvq|XrK`xVl6@UKo03HZ18L<sTk0OsN^5efKr
z`9uit@AU!Z;xj$)@AdPE5aLIGIr#r>3Gc)o;1eOh|Ec4EaSbSt!%t16!|#m(?$H1D
z5#C9^z$ZdL|EKQ<%x#YaA_1TIx^!&0PB9)KpmT2)FbDsq@<aliCZ7l){vu#5{uJJc
zf00jw5dT%c9Q>cYMkL@b@re-N|A%0|pl^am8#6z91&=fM3*`B8q@M!6M|>yWpONw)
z->ZN#1o_^(4w!@gv$u!@{2P2C1o%IH1hB8gU%=13TYx!qeh#lf=eGRlrgI7K?f47n
z+y%^~qx=)1A>=2tx5tULG4u1J^8@(v>8}%;?b5#n9DIjJ?hN2hpZ>c0t^jr){&XF0
z_|p-7^Sebi@NnVEXXf*>fPWYM{CqQ?|DAOBFHoK-_`mQyfV+Br3hyY_FMJ#i@^9#C
zI|O_w9sVDK{j$C(;DOFBK9Y|Ai?m@W^sjH|0Y3@&82*CtUSCMZ{{rcx*wruO0Z&<P
z{{s8v6n?(I{x=2wOQe%R|Cd;<6#Bo^=|Sf=(&4{c2AsA&DDN-#p!3V02X4y##V@m6
zr11YMq?5w`uPgzc!vC+3ej1&>1U!Y$|3v;%@c+{y;3@h3>IT45>i1U%(&_x_#{o|%
z@2_4?$G;KES=-UNjHR#bF7xvd(zBhiei?#xnkfLravA*3FXA`xC-_7N@!6hS{3Rj*
ze~M3p5TAUx_*aMoeCjzvh<_0<2me>6hy?sgd?JMSOMp4}H*OFK_>>z%h<_C@2mk*f
zf5gAWCxVZk`E|ll?Cq~_0-QF;*XMN^=I_$C{M-bbA*9a*!}a*v$H+{kZ<haV%>4T2
z@NnVEXXZEZfRnz-_ug&%2L5l{!ebbJK0le8TL5$Eh}<`3ZvI(1{%=xmQ}p>ash?@^
zYk(*G@E5|y%x{u@0?$}Je=G9fG5&8I0^H@($l<rxt`j;5KKV)D3H^W8gU;tY{De-}
zj*L8io9!WmpWh~5Nxm_i-=<s>xaDVEhV%$G?d#W$<2Uu~4xb3VKCBah4*st%5ozPP
zb$xsyg!t4$2md#ghy?tIPlNz}!xUim<InJeUkDr5y=MxKH2AG_`29Wb@9%;CKo5NB
zS5xwRum^s&2mGNP@P~WA|5gw9*St65)w{}l<GPJK@cVnfzqSYb>w3Wdb`SU?J>dUS
z5BT5d0ss0Q@J&77f42wx8+yRMu?PIo9`JAK0e^1~_&4`}M?K)1d%(B!fN$*qf2;@m
zeLdjs?*ZS|13u6LKG*~Pcn|pY9`GGK;JF^~p&sxjdcgBN;KRM(|231zoW|cE{^GE4
z-SA)Fh45`L5I;7q8=(y*{5=7jHiPgD0sL$5?$~XbMxk>Vk7x1se!klP`d9G#oA4LH
zuL5>o3j7*iv=Jfxb->sMgzy`HkqL#XeP_9D0`^o4#}5X;Z{hJY{z5vp0ZYr5{YXMT
z^V?0llg?cq{vMVeaOn>A;AcR8XP=M%+m{S}e*kAWNoP|4Cx3)TKKyq`m+%2RQp&Zn
z0C*Zd6M(zr%Hy4MjtBUb{wcs0@TcWk#4iNkPvPOv`G5IN_$(e({DpF80_NcVj?I^}
zx2E7P0ydNazX;fqDey~xolSwi3YepB1-uHMOL+Wk{Dpj81}u%v6~LcK!M_TaTP~K9
za=3;^34bB|>wu-n=LX;|9m<7tZU%6clki&sd<pM_-wxoUOZc4te%HYHbn^Xw`W3#5
z4;MaQ;C%sn!oZm>k#qk<)4(?c_@@j!3g8x>`MCLBH2C=dzGUE|0sNYQ7XtWA11G;O
z{W}JJ+=qXWV90G3`E~HW*l*xd0X#DB*#J(yNvDa&KgVC754#osbLkiGPW(kYTsZkA
zobpKE>()mGe#wJpzDPcZ|7rkdeuOUt@I|~6emQ`XF5y=K_>zHN4dBEh{xv*YeOSUf
z;n(p<_|JTi=?T9Pz==orO&|VW3I={FfHw{Nwh#Z)DFeUb!@tP<NdImCzoqcqe7Jm)
zF7S8v1#r?Oygz`GF5#Pe`0o--c!Y;T|9453@PPo%^n~XFIPnM{4d8qyyb!?oPWVIs
z=R4uY132FaKNZ0FPWV&+pEYnk-EuVzoKF|NVBmbZ@QVh%7{D(XIOARXB?D)?3%_dM
zuLkgI2EG))ZyNaJ0DjBBuLSTr2F`q(d~Xp<`CP-ph4&fw^#H!fz;6Wb0RtyrE}c;W
zzZJkI4E%NgKV{(L*QGOS;CJy%8UJwT;NdSQ{+_-7zG&e60sNwYZwla-3_J?pmkoR%
zfL}52Jf4gT?B||Qz@ATm7Xag!H^iR+?8OxLall;pT*o`=anGp$e$&9G@Jty$?3o4J
zv3rLv8~i4oDdV&~iynUdur2RJz+Has;GO(j^5E;%FBtf%cqaMgkJ)^e0B_(glmp{8
zrNEhglJC0pi+E?gS3P*<)?EX?hNqh^*Mo?E-GdK*ANeNy1|A9h%pVd=_)R<#I>X=h
zs)66a)4~6}J_ElU!21pSP5|Fz;N;h(6DgcSNe@0?;LOLx&l@=Nap4mN&U{?>tbs=X
z{EC4y9~b|ofioW$e%ruD@pR<#FE1H*0Z$kIj)9Xe7tZoS&QBiq;a?({@KXVt{1HCo
z!Pl+7XyCJWy8OIq;7t!duHPpYeE66027fVtj~Y1harpmI!N4yC@CgHF{x1G0178Z@
ziw1rfPlx|c@tx(pf=5DU-THrG;8#6(=1b&{_}B1AX<tuX2RxyZ`O*^JiGL%2lW)Rr
z25`&ItpHB`h<`hP-!X7L-F(Rh@$dTZf3Qj6qkOpdhR$eT0KY}Vjq67H132jtPI?ZV
z-;WHOPZvIG-~$1C$-wgg{IY?QQJ2mY121^+b?aX>@Cgr|`TeT~emsERGVoJA{15sJ
ze9DLa-c19a_2GX&zA1-h0Ovd53jy4gYcYV|!aMOV`tU!r{9Fp)0|x)q06uHrO97m8
zN&j*HzhdBgI&%I)Ti&Za{EvuEI@j=U@c$^nJK@&@_;CZj5x^}!%*UZ4_ePP<Eg$|z
z<eTu@0i661ekXu4Kf><@aHa>GOGR$J|C#TE_XY6C!25mpA1xX9CLjKvM-4m*;0p#m
z5Wue*cs_vNHE_~%<a3++k<UT^XL`aX0{E1H9}nP713wkOFB|w&0KaMAvp)Pa%Ma-}
ze7-hd@D~C&`5>Q*0i5rIU-aR>f6Krx`S9144E)sqe%-(s@9<;W?^Bn3_#YFU`Cjqi
ze{jpduln#mw&l7OzzcXM9p>-k`^QrTej|V{8aU<Z;D7(`82Bw8ZuS4E+X0;XG2c4@
zocR%cH-Ixe;CuOS^0oTEw=aN4L<D}n5C0PLBYcw&|KlqL9tCj9h4=#j+|tSWaH~Ii
zM+5kAypv8LfG^^m@ChGo^=B{BIpwwbv-gw_f4zWr(wV};!MFOech-l$&h*4@25`O;
zz7W6{4V+Jh{_7VFoKFXC$4h%J1@Jot|5YFU`V|9T3g9;k{4$=;;V+mM>}5J9-`8*9
zo%~-7;I|F@S^&Rm;MaZlpAbws%-^B^Cj$n4(}(|Wmi{dt{wEU#pYbl81p~i>r!%hm
zbf1BfuaDs`C@-gEnFA?srgP~3LYasg*FD|u!~bN-z&GLP=6lV+BRm~C|M%!U6Bv)9
z?vw|guj(`YH(#%GUOHRp%v#7R2ag<Dzn-K_STEm$7r@3v3(OSs*Ta-U25+Oty^wh*
zW6Se^#%C7!wCU^<E;=k9!oy8{ihr8<DfkgzHZK0-B|hD7p>O?XUfZ(R|Jw9o-(C2%
z-Q9fe`$jYO?tQd+>i9xt{nRTz40gUhQ+RD_rtkLj;--(5Ke%xF!A$1v{>;FI2k-mL
zYt>Bu?ZcVAql+6h-v(@SDw7%AoN3+$tqXnkedg$5CIbD;;`+tME<Bh4&CKTg-;>#q
zM;=dAGwbjkU3h5yBa9=xQ84!^=sz`>SvQuscXtB!2Y_Ve+wR@_5j+^yEy_dxVSdcR
z0c8M+|4jMvZ~Wf9yBE%U;{wb0#?RinbKw(P7heC;;sDC~vAeHiGJn1=)AuoG)FSdG
zO@0Yu|0gn!p)89m%j-z<I%$|P**sp`o|(A)J&U8GFK0F^CzmHa1v!2q^XTnYkPlk$
z?e&Wj-?tC)zAw{{vi+;q_5n7%Sa@v^a$Z5cz^|c*4C@xxCuN-ifaPWRq`W_{bzyW7
zb*1(CvD3E}Gq3;L;=n>VvtwaH=4(cmP}XbsyQQ0NPemyI%bEU(%md#(l>x2tH=Zwi
zPbQ)aUitku7SiPK8p|@hc>L*G_wKF4JNUi|vJ5fb!tefjH{K}TyLsWezj5Khzuc;I
z^s#%l_AM@E-uS_Lw^^Rjzv|1dOmA$ycO7-MpLO@jm)}@e{N{`}1x$e`{~*UrAN%G^
zw2*oKAAI!i`bR!m%?!Q%c&6_~M82|EKpm{>KR@;LzyI_#)bICXPA&eU%!XG!ezUOu
z`!m;{_%zD=i3k1->b)@f@q72qpV<&Cd^{6<^!#@{GWzk%x>pYW`oe{Oc;9E3kNvy&
z5M*~Iv(C}kJO6ZZrt?ofmT8Vot$TFw2hcu#Fw>mKyhrr-WBW3Xj6O)ce;|5dDU-Pb
z{-GEBAA2?vJv+FV`93_K_!;Wny-~>h+ABZ*UsUcW_v?_;>y#68@O8-Nb;!o*CEEab
zdhJ=Mk5j9ti%H@$56WUK`5+m?x<yzesXx?<v?ZfwsDnPVqrN8=Mdw9-*rr5(f;L3?
zKu((`G8;AnC4=@cz_x-q7+{+~ISR|Q2jJ(|h`(u#_@isVXW7|aXvbJ)+Kfw(g=-HH
z#jtJ>y?~V;b)5KOpHRn?=NqVF>Ob`T+h6}($n?D`Q^;lq^0*@MB(Bi~(F<dztUf#&
zEsBnfF7{_&Zz9TcbSk1;N0*bU;4PwV?(5IMKITzJnY-VNI$1?J;BR7Crb>$&fS+G3
zpWFWd_4lt)?pHFSDA%9dzK8n%A*ugc;9=7fpOxRgVd~&lXs@2hEM{JNZ{|34=luIK
zaO!}=Whryt!u_ym_hr_d@B8?A@LB-Rk5IQKGV6W;>==8tZt>|QI2gjV(596B&&A9u
zZ@jU<c>W>Jg3-xGFFg4Fp<nvb$1knRbe{fVUxsa3+w!`3;=b}Tw_#82-FWS3sq-tS
z^L0|^rcP|V+jc7T1ASoKP`<F6Q;^TH_Wm8$9=<s<Iy!al9&OkDPki|T%W>hp`xa1+
zW!ov!eA~S*A2H>gU8&sYD>(LHShx5dxfEy%<+d>Mv;Pq?KE-}*bSblLJd+XlM<>>Q
z24jWXM<?$4%#Qo8xqyD_*=XZpaq!_&i~lh5$c6I6kI{x-!f(<cKXLqLGyRKS0M2{z
zg(K|mrZOi<pR_Fw(!ox_URN`Z3~W&Pq;VJedG`w(|74=upGKX2KGTPOa{;>7XL)-H
z=|1}Sw=I11!2=5yZa=+n;TLx<T=>lPg$v)ib;0097Wer^dA?SO+STu_L<8@u)#jt=
z^PNh2FsinrPNNY`S5I%wW-^(>W6$rX<!Z$`elu{)xi`Y-vs^h_Emfj=qZ75~o6Sb6
zQz;{X#vg388m;JkwQ|(1)XUZS>8M#OovCypp_$MbZ#9}tMw=`x+6UiPR(|Az@Cp8*
zVzpK&13N0#YK>B{Q;Fs(bB)&dm~fbXt8%*9?o?XLq*}+1nIgE3*&t~dBlAZXHZDGN
zkuW^%c-KP#{FI3=n5P*ZD;mblw-oM=hc_;2mf<)V@H^@F>zC5u8>Z6X?^#NR>-c@+
zqK@CepM;Hz4_;Ax3%7V#8Al=hrp7;bTc45)a>+{D!85P$?38(4{FVa;_C^EWa`eT)
zXxGrLA#9irwa?FWiqm*@TKb%|zgm@Aaj4WNS29D>tzx}2`%<lw84~E}27XPq+Zn{q
z%~k3h&HC;5Hv$n`_YaVul?Q$<@;#GzXh|N)KW_bgBfuMyDEHUbzN&8<C|8WK<9tM3
zc;AFS&NXfRuq2{qOMGH}bxEIH|JwA7;3jOZ^brvdn)-<Ub<+<6+JpbUGodNg9mkXW
zTRfYd{6CF9`)>G;=ZBX6Dd4!l;uBWDpXEPKKoa8ee{BMjUlyNF#!0>b4qhMrK?6G+
z#M$%&^Y{87-n?$SqCeKn;z=`jzlpH?v;34xkNm%u@eF@YAMw9#{xLB80iuHE=%b(j
zF7*Jrv*e}$T=+w~?hoL?UkbkHyNiq8>yX&eX*zKa0dDwt(3XqQU;lM6{GkDZ{|9&u
zICStc4!im@_x_Y`*8Z57{R#aTmp_gt^keu{{F+SgAN+V616@zxeb;07OE1BCyo6pT
zGc<elrP*S;G+S&*H}%q-^nou`>(x$1(b}D2i@!|_Q^hYD=cWNYc5g4$8mFtJV(lgN
zl7OAA)Y0FRVh(6m*w(3Q7{y2sxd8q+-dwoo7vM(&xX2ywe-OZh7~ucNz@HF+-bu)O
zui>3Esl#yqoPl*pz8E6@1GwampW?7e7z6sH`|)u3%p3T71NeY}&jj#M1OFERe8Rwg
zEPxjjz8)&z<!k7#rvu{O!e3CX^<lop4V~Xgr*q#$z`v%O&VBziz(0j|$YH~W1GwR5
z!)3rz=)C9Or{h1scASF$z{wu)PXu(P@D6_Z{#gK@Re1IWo=*MRaZL7R0B;)nI|1C3
zH+wgL7Zm>?K3w|!2F|Ag&)hQbO?)B*dL?$l!RJqw>!G~-=*BMq?&6bg;!p625YlHk
z9Q^f5L<0U4p9mp-6EFvV!xWK#zrZI#h<_0<2md`wcqjfPJ`n=^J}z|A_6B;}_Z7fs
zt1$zSAmzchi*1f@vHN&hINMzs{+1s2V?FQ>rQ<)e1UUP*_v0@PDA#4YkoORN1u!Z_
z2)_!LBcBI}NBLaC<9_^w_}2krxkC62z#KYuT>8*WA8yB~58VpjxAD$=`Ft3EA^kgm
zx%B(+PW-z8Jg;z)@bIS$oatOT7yb48XD$&BD+?deXZ-I#wOkpRY2z?qRH<_$oWo=#
zYHx|Q7R%*UrQObzDzzHko0u_GTAlORe2B=YTo=~fs9X_p^XTNFXgHd!EaY6!)7ib2
zkc(oN5YW@e>jV3bym&BruGlF?D}~8uy4bEnhVN(w6G0B$i}iAD8gsTY9<|{&MXlax
zHENMk>$K)8hP`?t*Qw4`8uKV=dYFu6YDLU8XNw)oTqBF!D3#`0n7-yqQFP$g(HBnc
zKYB9SS}ITHWK!IVmMIoQ+%C1M%??T`JVgV;BW60C9nI$xk`Q0Bnqx&}M*_G)_eMa;
zl{&53=4eF3JsfS1s*PM}bM$mCHq1=C)KIZt#)~>7og#)TokBpU(1Xxq)T$KAm{((t
zT<64^iRasfR2lRNQC>AbI6BvhP!vr@L<c>~2wyk*se6{EJ9VYiDo}Mr`&1gs<qdRH
zM3VVTrP$f*CtogeqC*)R0;M{HXryRrW4Zj>l@c|f)R;#LPS^mI%>k9=*yur}HeG~j
z>~v+Z92KBPwZ=Jz4H78$1ePmIDuKDp(XO>{Fjp=69LyDb0xNOQMPPPww0kWa%vMj&
z`Yg;Ad<rYE5KusyLv8L^Ef1!NCfWc1bjnM=90y(LOLJx9|Kw`(x0WhlKuv>3U^xcV
z7>Ed6!v!|B)*H=q%alMTqx~oMN9Y0gJbpNvA5Cl`NoetM=;yFRm>z`0@xxK0UOOKR
zus129m7O1iA@ym|isek}Nhbvh<FoTrK%%lxDb05(=qI_vnJZU|r|XS&r;6UehLA)t
zAYqm}EqdCsXNii#eu*$NsCTL}=W|Nbu;r2LNvl%oLCa{AM@3)4qV2^RZU=R9x*ZKf
z^(dE%2D9b)W;Q=8HJU;p1WjtK9hfcF(Fwpd$}c3x8tyrCyE~&=d$u~$i9j|Q&cnu{
zFPo{J&cRaUc1bQ+@um6C4)0nfb~u|KaXQeD4euR&RJC24#uB)!3b*E)owg*em$Qct
zWry?GgGXLCn9b+2CnpXb%_48geRK9{`6<ihIwq1HUwd!#^=KRj8Z%d1$aS!s*`BGi
z+`J*+)^rsyt@At3q9BFy*#jpI?mu}Dl9s-syfxa5Aq3^qu~DY-F(`3ICLT(wf}X3M
zo1ULxj$qjgHVmP5sa?%s^jLS9>H0m%ky}LEXlA}%>Qozb4g%V<jdP*|*-{JtM?+gU
zR2Yh0kWs?k2(QVAW5{4=q-0?+)b3b>aot29hDCss3z3bNeT3YJ%IPFtMgunf1;{IR
zKzdr6UV3XAe`IWb?g;unhrV`zF2eKJQScGaKe-4K>^%|=KmonS5L5wTk>ck{vz5{r
z5^=(SHWi9R3e84?=ry$)Y{qO8+S_#CO8dBv`iV+F4It#yq~=uA6vB{bs1BMOcDjFZ
z#Mfz6D`zp*tJE=M=R`r8_MSZUv{nw2PC6vmqpX3i0qn}aYDQRUtDlB+WjsdS2Zd*j
z5Vy(HqS)!swl(V8vSmzcR>~5MmRKkoRgqSL$+e}@Br$8KjOfx(4`N^%s@z4RjrLW^
zw$u*oiiSiYxlU!Ft3xsbBnlfC*jUPrJQY>usvR{Is2VXHt0@q8WG&1!PzUq%`8H&w
z8l}t&LGzQ^cCJ|M<S?N^>5Jv_+0(Ggb1)h09z{*S;F&9%GT~`u#}0nWVKr%@n9*on
zY;69S=aLlhFHGm=+vkn?b*i-*y93m;Guc9Coc)f8!$%IriF*E+jLuiu(h?Hp+vkeS
zY_4aLBw{kcDr;%J#@Pv{ZY|hwnmSBYE7?N`(f*_333~T0%DOyXLh44eXZO%<+S^9G
z42EEEX}i+|V9Bt@u(<&-POMr#Q>>u{fo>ufRfiJ?kHfT!dW*$~>(H%e<}nbRE!LvB
zV*895jzmC~gI>=`^kLOb6{%G!po2N_fK>Tl_BmVOBWi$pQL*sJm=EphWDd!(TdI06
z)nrszXu=XF+8e5erQP*JZv)ECRD7SSNsfkN3fNmk-m+pyAt?G>V`e5oYi!MM+Js(u
zb-E$x6OE`Wlq!`n#38miMKx07z*cp-*1+^k+M3(+RfW3JMA_DI`s(3BLbVEpUphpf
zHNZm5PMRoDN(^_=Ny#R;BpZm@T)&Cx^EFjQX`_@&v^~q;z{(Cs#$0+irM<w0z_~zY
z#JT69bB$J6Ua%BYZe*W07v)Un=q4VJB_w7qtjIruSu8sQ!Qe@}MXt}E(@|<VE~8yk
zMIXsyF7YgTSCLCTQagU+;QkLJmQ5SANW#+2p4*%~a_rb~O{Ox9?2rljMU|SxWFyD;
zW~+3JTUD}bm8LI0Fv0FSLAJk8dFV*%pp%cDh%m~1HadKWBd{l;=l7c))#9=>K97YT
z)YKEv3$^0eij*Q!^cRk7(E><)jzo`RG|h3uK!F+K*P!&BLJaoKxOmLZO;=i3Gd9J7
zRJK&Wx|SH*yvPd)F{8?jx2ovJ5Vok~6ny-!jWBtSj7V>paP0lEU6oNsjMAI6;`!)Y
zwKEI4h6&nh&IE$Mw4%gf`r5?N1-zM7V-Ee8jEf~shB=_JOUCN~8GTjLgb^5UApcey
zD=Fyf!=~b=jeBzp%p(l(t2H{F$l#)F`d!xdxkC2b^h~XaU(+Zbh7PpN=^ZdCbf(&B
zcZ3OOr=Ov`Wo7iyiv*-1-JB($*yoDFUGhU#)p`lz5sa$51>8EuL0Pe5Mw_~s@N&Uu
z@L;`sY~}?WA4!|wLanuGJ*j}MTii4{KC$eJM^7F;(#?*6pld?^(wMP|QLexa(NjsN
ztfYxd>+7Laz)~SK%gG46Hdoxx{HS@%Su3yHn8#$ZW7|z?YL;DR66koMCuxbKamoNu
z=BhHR9<*&(CyQZ&q;2R5s95-Q&Eg+)0$lwlOIzJ%%Y&vc4D07<gcgRzI>Lltd$eab
z+o~0Em@=mYYChJFcaG%9d=ags+UWonGOQv`8I#C33lrP4AnhKjI>?RuIn!#fRYRpB
zM(EYfc^#7vI0(^JL2j!(mFaq7CY~Dg3x%vvt_B8bQm|c5Ic<?^@*Iw+ebq@W@E?CX
z!aR}!^qk#btC<%NtPo2DymW_^l_I}Wjp=aev}-athuHx}m&1@Pl}eWaF#VBT6)ej<
zo6k=V>a<YId1O&!o#NSOcn=HVbH5oNqe#h+Rd9k5&<>stw@RXRBbq6;bbtd%N&kX>
zk&WF{iOF;3(!?Hysg$H&AH=FYM4pevkICwRY%*k}Z#}melN}f+_NzMSTZT$D9#hM_
z$j!`8r7Ku=q=4*YD3g!&fdN`ihfC^0m^~)`Sahwa#YSPX`5Dm{bP$-~b_EEocCL87
zEfXfLL~txXqEM!Rktc_SMs^L_g{1=5y{LOWA&|gg3^u1Q$HDTLu1B(c4U8ZBK%5v%
zr3G5#PIqoxzDQ5uCfGSNG`vT1Kmx4zrv)d$@b00Z(HI|l6luZ1NAdH6GWKMh8Qoz0
zAU9|>_fC>}!W>5G2M;c%$X1F}227R!xEhYZF#b=fupP1Tm!}Si=ISjq91xZ)aCwY(
z@iPeX@dCt(Y(X1qqS~uRhC}M}bCFDjRgnq6+{I;sr6G7b`Q?use?Z{`X6B15jUyP5
z6pJcAWA8jpIkpsuN#xepD9U&fgWau6i9xZbJe3_>$ZtGbaN<RV2t8>;TcZ<uW1@pu
zmpPNxVP`;)O^&j0$?-4*%-UTxSi@ec)K6o?2gV1pNsH^9bRhc3Jjw_B>EWRo{Fku<
zyEB^JH8fl0Okh=uOYJk&W&~embl#nFAVG&{9Vk%pV10J8v{(F^<4Um6E~=aey%%>V
z6Na8StIzREu3q6Z#S$+>qjn*@i<0&snu`$)S0!y)ELi%6!zGZC7Hgubn!aJ;mdx68
z$_CZR=ATO)WVo54nXucCjbL=Pb{%{lrhG8A%LR0I7;?}HU0OiO%+O8E<tYy9MY`~l
zP=gAQ7F4^@k+=cGTUB(S!+SVPX`|;z83o4)#Qf6xg5x-jfiartw9e~nZxxGtZpEK7
zf`o#`$}p&tF~9o~#iCzf4yC{fzUl2_rjj265YR{La=)|`wB;4U05H&$ous0IcCVmk
zD^=qyHV;)}l(1Iix+e@5l~{J#v)s@#JQIjlzY548wm`VVjDa4u^!(vWb{94WN26q|
z6Z19rAxN=;B{I?(d*M6xLZwcOf9Kv|JidMJaCQ$y6kJzOx;gHcRIz=}xo!|9W4*M4
zscr`jOx0Knbzun7+t*2~eVYM(J34;&SV9(((q21TYpk%ojj?~DdEQEc37IeComB~>
zZZcR7V7RFO5Qq^M*2uYhB}0IH5f)v{L^>QR#RS|RF)>;Cg&%$e9z9&m3RjM?kt+k{
zQB<bC0z4Uwll>EwkIYxvo!ppZW#u(1GhD_RMuatM&Zo46+X<<5J<Azgv)@?7+>7&m
ztpF-KS;5?I#a1Fx#B#Z9^<sCkNzd%cD)l!wXjM;F>sZV)6Q5OeKxTDLmg=(XHqpgE
zim?&MRU4_<nc9bBdTanzT6D>hpeuoNkRh&-ZICkE`p^Jigt{$hSKFc;GU46kWxUM}
zR=_uUPz+Y7o1Fe%(528pw`t0*<n(;CRu<$O_l0zS!?J6f$GAJSH^PSOsw5(b2hbwe
zB*^xG@iArA<5k)=n+yivqRN;&E0Z+u!nDltoFai5WGQ8WGx<j_)h#iHb|rVFa-L(2
zt<lKt5z~&v`Zz^2N{I2U65;-B2~+BNL^CBe{B13sS6JEA&2e8r`IXLDwSpr*`n%aN
zN@~eC;!*CF8HJLbjw0D_E;ks}K~ozdOC5S!#>}%PP4PzHXm;7KO!7pZRY0nYQbbJ3
zH1td!R~tmSVvn6rk($;a_p)q5drd=)%@-EsxgJa7B+_j=x+zTCm6BeB)w=g+gO)-r
zE;?J#4EOzX^eGFmX6fPWZHhf~)fUI$NOV=k`gAB2=L=_Q5-b(<5(D6NvLVYP-YU{+
zx?Ck}q#3l0nCX-aWTsnX9qiFO@b5dN4q}epp>+_CrDdtq=}2NpTIqWo(%Zh-s&-Pk
zKR4&__awIcF*IVUJHOBLJQ%ldsZIj6**mFQ?WXBzKcecCYO~=HwW2GB^pNP&*nbgS
zoi{LoY_!t%8-h~URcmw}L)sN$C<|ATo%>hF8}qAni7x8#QDPB9&uvp#4zJ8LJ8%Ky
zhL!QVu<W25bnRe=jKzRjb*74Kt5r<X#22i@m1jSxS>CneyPuOHs`)vouO{6W>zy4@
zaT<rAW&T3nkX7Ul!X67NFIRZzAJJK4qQbrR%288q)q~<K?2=D9P7`a~BBzS3us@EO
zg)Y`4%h~7|M-u<Xt=vV8JP0%oW16j<MyFWA?}(nLaIYiY<5)g4UU||dYG0ef8bE?B
zXEM~gPMWY8(WD{C2poAK12IZ=@U!Nz5|{2Y-+-;{Q2~A!;<+j#0*MyiQPbUc22VHh
z%)}iFT0K^5W1Y9t259-&Y6J7}cJ(xl3BXg{&i-{(ETM?SGA;$g-m54%FARWT)HQ+F
zQfr&H+kRMI;kv*Mvp67)scom{&T##}AsMe@wIJTI*Wr51@=8BYq&YPCQmN9!tZ;{J
zk8y{LS=+6up35OA)Ky8jypP$t?sjl!k9ExD_B&GuS&((><=E1ZI5uf9k1du(8WcMw
zFS}rB(>DGrDf>jB&tp%zi~%G)T#yP$_gPA_h3MeeYA88m#4{fIy<;H53fFpulC#D3
zs%^4krs?tR5m<25O851~49{0kA6q{6>8cbMNmrh3sj2y8YjKIC{^sZ$?g>z9o-0y2
zEE|x?KWwkq$fY23o;fOeeZA`nwjIbIY?dpc0c@sP2dlwopE6?i9Ho^fiy<p_9h%(f
zK=gc>?2|j4mD-1-7>QAp&aOB6qz~;7hgi-PcpA&yK-{NBS|{1c%<}(EBEuc9o7}jE
zrzjV)*jHm6N4R@BE7R*ztzlO<dXS4<GsL$!-aM5hBH0VB;i3>&=oz#Q`24re7`I9t
zs)J}&JBAe(u;cu#7)I!MLH`}>Z#7%hIXHet@27!)?;(B<W~JL%E!~8wHi>q`4GWV4
zk46~hpEjL;2D7^K`QZqDTWK3yF|+OuHDul~J}&biKQwE-Peso4#V<6XX6;>-{7Kyz
z#UtHoa1v(#;4-}<!eH05Y*=0hq^|B6Xfe_NVMra#b9uDCCvhZFOpV!h&PhvjJ3qyg
zYV^85<WY@2te)+Go0cWcCo|w-Oq@BH$K^5X^56w$xmNcO+ZwT%P%1<RbSoDwQr^(p
zlvyOl7LFYoJepN*+{c|^uW1W5F5vu&-6{4h;%P|Hah@REXE;Yti-QF?5rmzM(hAvi
zevpwNjn1B>z^1#|i@iv6tGfNAXBvR)o@U5?aNCDcR)S(x>oq{xoW%*&5;o)Jw$QJJ
zrZGu_D06dyv_71M-9m4q+B}=OjH2lblfz$nFr)uj))fz(s%%tSjj>=tB?Uof!BfN_
z<V6;H<ru~)1mO+ok|OmOr->M7Vb&@IF?jGV=TpiefFwV4S|~MjgGzi7pUx)sj0d;<
z^T>l!03i&%PoMF>`59ewmov$P+9SXiJ5;vDM|ew(+WcI7tGb4nV=vV@+(g@zeQCfP
z4$4+4^?ljlQG>me1l!r&mi|^H+4fSy0iun$sP-9pxTX!`R?eA-a)k$8%B|u#Y?2gP
zXrz_agOkz7m^emb=K>=Ov;U!vPpzyb5zAqiT2+Eh<Minoj#&#st4bjQ|FvW>4T)e)
zO9Zv597Nz)(_Kr7HqMYIvTCm?A2_n26JBd7j8&PJRP$Q0SwjNWJMLg<Jh%dV+*{UY
z=DaGz^o!>g2Qk^(mJ$o=;Gtu9Fral$NAW?kj7J9@=%=`-Acd!z7$|uZ%o-2SOd@H^
zTs@2l*H=SVebju?w#N)9L(6ei(rT?`+GSH%*JN3A*j-E~?8>%?xKkL$w<U~IA~7Zf
z1ev;}a^mV<W5)UUT*C*+S+%-pri{nM2QtR6hJrAxgkyWWH5c0>7dR3_wWL(2#B!O^
z8~e4F+gLft2IL?in1|wgt;02DJxwu~b!m&d)C-~xpOHW)c}l@UXZ^Z4jI5l+$Qtt)
z5qBq!@tk77!K93RNGZo)^g$ZO4`Fva=W|z-z40`jG1;drH}(!pH)`c(Lp&`(8ovgG
zOX$n6S3cwr>vgew7FW7CG^XL*1xL3oN}YL}p%di`h;2`ZsWq+E#hzfLM(U3PN9l)<
zEyomEF<s^=tR_|pI*K`N(+a)q+fCcZimpT$&5@jTQ93Ig&Ov;TltF-=h)on@r5lAd
z5^FG4Rm(U97r(%~H=D>A=R&KjDrCuO(Y-&_dd?S_aa>>K$5YXCrE?DbCmX0+)4IHH
zU_TD58r1#Ku|tN*pbjm6(ZQqR#|~NiG2)woYT1HnOHXz{l7+R<oz&Kkm*+SW+n8=H
zZH$-ZAkz#)hYp{5{@~u|fZE-o++;a|=8gJ4+K8~?RE*B?ijQ)m(vG10b3FQjX_i*g
zvgONq+07t3I7<0VHx`BE(2W)YXsn7yYU1r9^)!W$_qYlz&WK;V-^$Fr;yW!R(e}7x
zo?5HCp!qgh)h+G>vR<R~1^8`b)r<ETJHmKhz+BymM+`pp^C{RKtDeLQDcFW~JW6c)
z85~bZl43{PmNUmBL1pkD2ZUuu!hRl2CNNQE(6)~aT1U4@G8>nT$)L|qqW38cJMPoP
z5U>0nNz2HL8@RZY(0a>R%`+>fn~hb)4u*_<MwYhGD62Gc{6hq-B+0nrUn4o-(zqoe
zGNXf7WbE>=G}PVkc0oprppJl?YcQW=)~e~?#Vv|uI0jpQC+yKTD*<D$Kgjg)0FDRs
z>!$ElM2HW|3znoi@x_!iy@*zIm`3{LF0pir&IpR*;<&3qeloZ)Lou^G(m4n3&Qb*v
zMjVym`aiENfCsG)6(f*!pgNE1oSTL}shJGorNmBIlLC3Vq$Fi+TbLG@Lj^36g!a9n
zNqoa~NdiR=ZV@D5{9ckRlDPL*r%-jzplc(0V=nb@V1TzlociJjU&gdDOp!56TMiCX
zvE*aRC4)rN9GbH$C>bA$whc>1YwOvlttt{0HQ@n4HIRb(T1L&B!I@Igl3>iD$)|BY
z7-LhK&r|3zPwpSXEC=zH?vq%<%BlMv#TE~xp5f>NLNj=wt=G)PK=A`7m7q47eI&wh
zVA4(Ks7(_bV5faZ6G-til~+>jCUhEWG<v!XmLIe%gEn)?3yVqsyy_1pUtI%_3pAW_
z%3w>yR-l$3DJoc;t_7<IsCq2`Ge#fE$_`MnF?(jXsPFCQIclvkgL3+n7UpeoL0+OJ
z!k(<(_;WXBP{}SVH(P-dIQ(x-`w`f=Y8e|&7Bqu95_AE}v{thYlH-v<>pRS26mr*y
zSxBk2a~Pfr3YtGLG4h-(V&e~<@vzixJhn9Th-OY3QCv`c<sjQ42q6m6CE&$chNO+5
z5f3MFQ*tusAWg8qT`(TA9Ei5bttR4Ag+)Ux#98c_vBmPf6Y%W3Ziy<G({U+sZzRze
zFP5h(l^GXFG%b!0`y+Wv)0OtjiJwk#5`vnwvbrrUnGp<*oYD6@!G>h)(nZ7-)#UBK
z{*wnL*qlZrQ~fv0j6U3)1(+5?3LZd-sKiXBMsnuH2?$QNO?=5IjO~JZDt^j#r8Z-H
zI=98Y{p2wi6zuPq$O|V=ym;VbmJ6d8#2-8|j-}dq=Q+9^b^%q9LsX;kA=u10x`<$Q
zCo5K65nE5!&NpY<+4#P{C&)?Gwi2EH<Fbu9*2y}p>Drk{5KQl8)(6~pnX<*Dff1L}
zHJcN#lm}-#Lb#SFqJLW$WlDv15XRVYVXfZAN#3Sd5q4folBE5)OrzCc1>W{`IM36V
zn`vVet#O9!lU6p-`GcnppVSU^54v|<AHrJvF<!-Gc5iV)bYXM>=M2e2JKBuHk)n7>
zQa5ue(L`E2PNPki%Pu0;q3LQJRE%+PlcV_$VGmFj0eEK2N-zfp&SIS%0=!DK6k>$g
zD`}gpoaW^r+LAzq&4)~YhIqbe6&Z3?__3(1Y(?K)hHQCML$(`D$!EupVe+V(0NQoI
zOH~f48EAHUe7=z@U2)MZJ=TNB$Z%AEZ;>2~agBeBq|6s+?UIhbwl7(OfrkhpNm085
znuF&|`I$t9J-qipeQJBLgi;7sv0%_8f>XF13D}BhyBylD*15lB<D4Y97-$7uz&eyg
zj7#j+^y54|AbCh_6|kwvYSlj0kJ1iSdLKuysAp8(8mbzCaFW}4(R!8*TNa!(yqzA%
zIOm5GeWu2px=ogXW?IF$is|LxY~70cX*J?uhi;&132m2t4ja_CjH`pYI|5LxGLsAj
zAUJBc><Z+zwi@T!Y&9}Q8`aiehoJ<c@wupKu#*V~QIb|;Xxf2}A&Wg6X=FXf8ti2$
z&rFZzrg1gN>6WY!hO=Z=CsDAySMgEoY*-dSi6TZ|MARIWZk9e!_gfV-s7=IZ+2gkC
z+Jxx(r5PEX6FRoYU6jI<%zs1_4M#}vTW<T1cT6Udp&K+lsZNZ@-3pH$&xYy(41><9
zhWcAZb?mGj+Rij)P{id(v?ZS0i9QY$r)`&q(?WB_rX7J{CTGTkSgM5M#aU=A4$Nr-
zl5>j@(n`A@)kWJ;tiHjz5UTp6<y66#2$>~l&(eaY8kUx|Ux`(VRY&oRC^yKC&D}H$
z{VhU-{C$20v;I47J#xj&6Rx@}j20>p%9q@U#7tcQN?S&kL9S?Va!l<c(!ylPnQGJH
zQ8FLYDS|69IbSZr0CUk67khjymUcs!Q&o~X%5M&3%rGm?%3z)0rQ57xv77^Bb9JJ0
z_L$!CDcir&|2n@s@x*$Q3^}cub{j{?dXU!&kUtk69=I?m*pJ7pZrGG|hN>}ne}Bq2
zy=!wIwWN_~yV@#w_>B&?%{a|PW$DyKa(G|5plMtaH5@Hqo+1KiO+!R_j2~`7+<MMw
zy~9s~RP`n2h{-l6DJXGdGZ}iw-?~T-L+^G9a$OV}CcSQ{D9IXqc0`zvYnIqEXjjXE
zlUSnSN!6g^U88isnUmZqi*I98Xrk&)spnd}b}keP3g_VPh`I_#YF8)HTG1$v7EJWi
zip^WQjjs!}b=@|G6q%$IlQn1t65GSo>W~Db9cc-`31giW9P6LAIQ&-F(RO9JkyKvD
zILZ~XB&Yj(@zuQy9W$3Em}OcA@`PVn*EX0`wk|+$o=WD_{E;KSfkAv?e(=<qO~&jp
zxav+JTHOtnNqbJOJwWxyE2Lm;r|D}|8FxxOivmic@fxQ|DG_SXNJaEe?<}KMirR^)
zx`d^q#ySSV_xo0Jw}+~=)!y!<{=a_JvK_SyZ4mX8ilowhb?QhhWA3X`Ro+U6anT%z
zj&M{2cUkxh!mEQ`KNb3^qyMs1>@6~y4ykLDWwg;KmZzJK_p~)KSdCX>-V|x6nI{%-
zbDOpjX(S7AmnJvkv=%l;3%IpF&2n;uAGO_E`!zx#+-I#DVuh2esA<P&1Q6SoWEhPz
zo9@H{(>jj*G(L{9X355ycNq!++n2K2lubU5!^Dp~LBh!xIY_L0Iz3j*Ygb~K9C4A1
z<@X0B$iV}Me<RU?Q2_9KNQ~(9dq8vFV<fLPA}z;xAV%u$8WM6Wr;JD1F?zSjN(iT*
zd+HBN_dTZRsS%Le_ZZ37Dd7>mB3A!nG_Rck%YBcLl2Iiv;+LcspP$3LM5ZSgXzKVR
zG5Te1xdROc05%*f)Wbs-<5S#i2-oWhf8zhnEEa?@CY1XaKuw;yNNOg1WoAd&nE_jF
zS_hL<2!idvO%%jo?dfj+%KPLyGWdiQzhC2qeBkPu!Ia8g?9N3gITa|5sH^!WS<AzH
z_$<4+ROjkgY{2bgTVPI_rD_gG;)-oJ(CV=CF?>E#R>J48Bt|5eJ#zV6ZoTiEZ<_ND
zah!O}Zi$evR-@k)@1%;7^HqsEF;lqy!a<sN$<@W-T?gW<EMz#*l$nUUCAS%I-c2kF
zl;_T?l#rJ?rsEnZP3vbT7b!&9!}3{|0|&8Ha^mp*F<e$$t_V8L2%3EWv6ziBMV!PO
z#L@~DR!Q0*fhac%<T{q(>58aW9Eq72#g2&`i;gwRGx%gGcH}T=;%NdNVPP69gn?^Z
zYSET1S8kq%6O~?zDBYyo0ZDVLi}0owN%ARZL`;#W?Mmeg#05gU_=peOc?3b}8D<m(
zED^^k3|6YN7U%Fe*G5@-M-i*Db^r>nHP`}G3XEQs0!mtK&l)Ap`hLdupHk(&|C`)K
zfZuuQrD~kI8iQAes5xInW}c!YN~6(~k$xorbH0cPIQ%wgqm#!Jgm<}oljEHZls`#=
z;jTpzc`GemFS|xsNRmzqUoTiIEhI^&g?a2+X(35EEnbPV)-v{@#bbkOq=h8ue9`W%
zOiUDpm;n(s&a7nxW+@Ih7XV*z+I{*QN(O9&f@(E@$a?4nt(ce+i_VC@RXy9$1ik?>
z-Kv&PSF&V658C7^b-9_7>G#8}(Y%h~gyi#b5@$z*`+#_Q=J|uq%V9&@icvgWtk#E=
zN@Xq~AzT;=_^z=*7d+fC7U!hgnpa#2V@}^V0wIP39(oezUoAJ6W~EzI^YZq}OZYUs
z2TY)fh1Y=L<dAty#L0CvSNdt(vRx`YtXi5YSL~*hShd7>ytIXNs!g3x-R|XQhG1kz
zn26mSE#XUIS2{kr=8}dk$514#TIFK9y$my@8sbA<1Sl6gn)|Xxx|s5F!2kei7~6h!
z$C9VFN5`d9?yPVxTY7MrtV>?2MfM~nDRsmkUH?c?H~z7*=i!+Ow&NG!RcCl+At<R7
zp5vhwh+@cf0!D`uio15n$i#lK4QJcb4olyU)A-fuz_#&iazhM?iw?u@SJqEyf3kj?
zKI4C-U(v?8)_#Tj<K8Pem-Ctx3>Dq32QkzlBH6w~OoG&4d|ZjA2;n%y;g?inm)0t4
zp{9J5wARz7n6Xu8lUMPpRS+#2t{IZA;Nq$wD05Qb6r9chM)1{$H>EOI-T{$iRc0(!
z8KQcYI<UIFam@z$^}S}?^1YA5nx#KRN!NUfv07=Xjxh>X-6AHDRSx?oW>6(VGTm~=
z4OkY7w>}!X00$`=OYs20*Oln41yw^M;tl9nXZM2ZmPEAq`k8v;9QMSq#a%jY##CDZ
z&p_I+IA>|>Ib`&v_`}Ue${&x@Cd?^Y3HNZuP9hCAxRb=Bohg^PV|UuvYSSTX)9$jd
zxLh4$L>o-LyKO8E_$84xEiSJyJbTe5?UP9?<Qa!h(9otfj&e6z7}2jrzC7z;_pA~-
z5Z6Ml`j6#{5jwueSm}_ZP`aJQ8B9rd<-O&^m2Ei|pGg->w%EZ5OcP98EZ1tgT(^-X
zE|x0JN!Q9V)uzKs9ETmLIj|u?({W0q@&@}ziWvxk#^GPl^E8dzxst@>TQ5mdq0_0!
z=<I2?+T+}S5x1w&-NU<JyXTt4P8FR~EI8i8Yp5*rpu+Q&24yD>A7cLx-yyA4T8TK4
zBBwOll}o;BrIM%HikPdjXl@Nt2T~DM+)44<+*waWiCbj{>r&0xM%}SFVTI1YO9x-z
z!PV|-ur#~hV(Bm>#wY(g-j%PUbU6Iop7k({z9ki-RJ__-xnlObMb>9AcktOtnnJ=o
zhD+T@w$aDcQ%OZLl8Br5Txl6vabt%W>YZcKv`cfPY8N?^V{BCG^B5d;Q8QSvapm0&
z-FOBI_r9vZphG$CP7kOVtfwqi8y=<li9KD7%1Lny)_#js#kU0O)oIuZmz-iHYJvWf
z-KUOTVnoHlzdeoBlPhUPZ)1gHF4ZE|h`NI*f@8IY_w3r8$6%^EMT{FO$nc)sE8)g!
zGQ4NcO1QDI4DWezCEQqLhWCuFgc~c)@SdlZ$8}6IDjKVgTv-c)k;8D(oTjm~RE3`j
zuML4Gzmqh^jb&CTHFLv53oeq$AjXYlR;^Sj!y}{YMcf_$_!jrj!C3h$uFjhrwhgY+
zr-)H);_|SrdN#N_lm3SnRwRA6D~lL6?(tN2(o)2@u^d!)mc@<bpt`dxZlF8M;L_p9
zH2%}g>a-&$r*MW}e5=jkwsD&ZJal1H!W4?j25xbA=L;6ru@C@-@G4Jn@o&#&KKkaH
zxh(VY1EVQfx&srK^&AFKK{-s3^U1)D_P-m^;_=>2wV_xt!fhYD=)rF|##=~1H1wRN
zSDwSoU7^OuDxWkvvIpGsatsIM=t4C4I?X~pY8Oz8o7#w<Z~HuMznPQIz{{x2!HZQ~
z<ky90@^zY6s}stOni%87&5Pyj#x;13TF*8*xn^ztv@b-1=c;r$$Ke9eTAh^frL8wp
z1l;~pZO+F1h|<HqJyn^<f!@l51lL4PH@pUC$`DHgOR+(H8H~6N=5U3aJ26b;8kY{9
z+*m<y=olKYNjZ(>6<W&#MKO{-y;^VL!*;IDDhB@TDII*9<t<64j2meaj$(yLm?8ou
zY;qeI?2w&*EXNa%TfLPU+c~<&Wl4pQG@M<j(Q#d&Hape%xU<pJiJ2+ZpnVB>jZUmf
zlOMxs#w|&scgDtNuG)0Rj2g|avZ)O#HSEO?4XT1hC$cOx=aZamG?04MF3+JYE6LuY
zHGIdbat?ncLuDoJ*hgK4=h~s57zD?Vwf*6}L2xY2e0w@KKN}CpEkYt|A~d=Y5@{2m
z(v1MeQzK9ybW1G1Ga0auf-_bzJUC`-raH~LMD#{8tG#*Ge$Az2!J{L#!|?~?CW|K>
zgeJ!I?K#_b#R##1sS@GLwC(g`gji<<VY=4wI{{o~WqH6zy3|NC&ro<OL4f(OHJO<G
zMDuhc9#{5ibZ>km-CJRDUu~70c1ETU4CAq6VC>rS_%v>=>X=SNO4O(|;~7Pl(r`>^
z8XuAEG#VXmI&CP$a-MEAaCR<rYLzG@R)RaZ(fr8J@NiN9r8E*}=O88OqezL=+5T#{
zY0hI`k??QNR)6qKNj}MzBe+_viY4t1KEYshez_cZNyV~uCcUm>X|&;!fe+|aa-Fl<
zT(ywN;3-BZ&X>uORfKqO9wVG>VE-sVh`Y}if!9qk6U`zib%Ibii@SGLQEX_~n<{qP
zD$P0}wuwru^Gy!Zwe*&`q|ZWCz}pDhsB^3o7e6e98>gCX|5Z%<+e>lK7~WcW%D9=+
zmcZs}pPGA8BKba$H{h|Dw)9B@#)T$r+(XE+cac}RN$bPCg~ih%rS4gh;wDv2Rj?f{
z$0%zVI;Dz=q@AU1l)&tDh{%n#jS<X_1kMr34I4%_Vf3(#Rx1=n+pACTQAPGQVf0R$
zS{p(by~{@HN=6vH+eYi+MHs!uM(c7{82zM;)^)Bh8pmd|+`7OOMn7evb!97z-fyGF
zQp-JNqYtD;A6PzmeEH~u%SRttHX2G{%ALv@8lk7A;;V<A+iZA2|1}!_dhK``=R5de
zhk`UC9FxGiHOV#(j=?xCqJFiGdk|ez+}DCQNKxQ6VGgUv1!%lW6d=7*a!{1cqSAdA
zXQ{BUr!JG+QRXO<LBMtk#3n!&1D<`_{Cp<Lg0nUu?Okgj9Z-#P#4&Vud9kqu<rWWd
z+@oCSlxCA}8ht=MFi&D|K7b7L$Y>8q!ZBv9c%~AK?LVRS^J_t*gl_Vb+@<E!gG4!?
z|43@`X@L%A<;;Lr1~@1oBz`c$yZFF_^|_Nfb#8@P@jx^#t`Ic;SkX{`WFgyK*NO?x
z2Hd=_I9m6n_8n@I_yR+vX+9qeZs78&A9rzcM+tdB-CN~Tc;I;0S4;@%?cx*7VGsAS
zdT?rchFHiwBpQfA6q29*c4dO3VMUnlI9e&9J2VI7{Ext?a$%K#o?dhG0+;R9RaIk3
zyX{@vfZe#(L%y@QutCRic^fK*pXCV6R{p~9(9o_6yP@S?!_h<CF{Ap!vde}zhHr}P
z*W1HSm|LN7+@1OaKiHmOlKybC1^e(N27_!44iD=QV<a_K!*9zEZ{v5DVJ5122XIfa
z5-}M)FI$9$zUxkbcnk*2*nr3}E>vU;7n~f$lJM~sF4=*l6Q?Eg(M)2-3u#F_bPOkm
zZpIHDI+{Uh4(RTf#EdD@l1L7v*^V&876WwCTPpfdoZKm@d{7^)lW^MRRWi~M#s~A@
zuz*7_xwG(Sho?BZ5&ooqZ;kyJDqft%3nZByCf$TW0f%=rtvGGRpD3Qe8B1KZH>aPO
z-HLiUUB|6O-NB=1`7mgbN?b3=o$<mH>q-%*_qsV877!*?LySeFQ@s?BXy~Q1@E~aU
ziaFI@BA}+P4o!Sb&JS>IqAaW8>j=6$7)_cq4Mys;Z_wZQitS#!8rTKl%kX2FCW96O
zM<7<)a}mCNmsF<5%Vcyxt&bJJAaAz_xWhe(agn{oZhJ}6fMO&CB@H%q6oWOP!qs!2
zUiSXWq#P+UM}lR*=Eaj&e&i6RbUSd3SI>73!+)8?T`^fUu;l{$cPS%$7ESrZwWS=G
zaJ9hRQ=eKdwv+PeW%RGEUQ)`ab!!w`M_bxWV}3SMJ*~r9DL9NJYD(L4&kFVl*&4<-
zf#L3mO;Y*pWp|yk)0N&AeW{tm39Bx1&pih%Hw@xhe(uUkZRkgpUD`&GgkVobMHAUa
zSRT9Su(Wb~HAQR|^wrQt_72O1HEJVT<(^%fU1%GQCo0s#aHK?&2Bo#ZcFAHOIn3aP
zipA_%4Cgs1rXLNN>$h-Z4~>*VS5oQth~h^ViH&!+1%Zv7BPl%7rls)=)riB}%Ct+E
zIV{WcT($9LB^?hk15txyT(IQF+bU{g@pjAl&2haJS@XN-T^gOL9f1JTwIe{Xl3q#9
zYvCAks}z<~)R~hoCwL4~_m}C;p+#<gF1<faE`@<+RSvFDgkn<pQ42lvA=6Q9=6)?Q
z5eGiK8@QDQF|B3A7reXsXyu1!$QQFBvEv-Kn=e|ma8$`(BXLs5asiMr9{|%h>fxbc
zuwk<|hgjI#oH+LU+AMh}F{K)gD_o1!t&JENm^B;EWa&JqI|D+@44I<fK?zB>Ty<M2
zQti*>vmBdSSlW}K5u6v~7zjm!Z%NOh0+`z{rvS!koAyN_vINE-OpT*|s4r+CZoNKy
zEH}mhfs<@5F(y5e?c^cX==tYO@||w-*zEVt)g(XoJTvD<kCJ)SAO><t5y*=%$31!3
zv&-XUx0^ifHhc48lBe@x=1P=YYM?j|zOetmikfLto3Y0Jv12DrT3E`HbWhIWQZCjJ
zzlA899V-rmEhQNcJCh6^$TbIZpyNC|t0P0P8yrPtM@A#8LXID^6vF2u=gj!V96q^@
zj=n==ng@P48*d{|ikeq31Pp^|4qYQrS@3hl7k)agi^lm7y)4bgao>QC>Dw+^lTkY(
z<X7w#giD^`&cdf)yKNcPj{77`t1!lfr^Ab9i&Y%d#Sx`InC1{m4`Jf#HE%(f!~Y`)
zbM&nW6Pu+vP-TZIM`fUuJTaqVTlvMil^JW*G$nc!1K_xlZ7)pI`~v5KCLmwQp{e<C
zwc4&1uhdst5@NiCCg<Sju9?v5)Cv|APquF9yE#x44b|mqd~p#|EOfyzXl$fiY+<2*
zXSh$`P&ZPVr2$U7dSu0nl(f!_ENO=q{Op|(^TT2BI6rrp)UIT^V-w~l%aE8S&?w8o
zh7?eW3kX9>ekKPdfH4|{&kF;aGqz{3D2XddI*DyzHU|Z6?3fOKgn06gmyMqRMjVFj
zo?QvqB&m~u_N7>(5*0~M@GCU~tdg#txYWN#Gk)=i<CbY&NWY5U&1HMzvw-DBeH*`l
zf%-Y$!DrF*`;@)YBr(#xtTe;5=sMGF%nYE}4dN>)qtO^{s?&`N8i8g!w|&<N$hi1j
zE1*{3z`It!H!**mtw6k3^yZB~>dJx8wWcU}zT<}i+H+clz0N@Q)7eJiemSi#wrTl{
z`(+&fyy<=!&Z_VB%g(6mo!BCim0wo_x_^iLGBzQ*`ej{He78wTzx<ADk_X;xlJERZ
z^6hGpx}f(qH^-jK<~nf<C(FJeN$HsWYNpO>Y@F&u<4#?@a=l&sB~E|5+h6_-=`YQi
z;+t=sD{muN9ql!GwekA=AGB?Ho`)$d^zCY!?{=K;{EpMQP-5*ZXBXmRH5gty<bKV|
z#ct<hT`rf~%(E>j*wnM&u4h`C<G$SBirac2sY%`B<EAb*B-jm;P&>p+$&r_nVhc_7
zY=fakyosh{Cb1V-cU%OSL)6CoxNud&$u6!5%7!A>>D<8wQ>T#PZXh;wWi!#N@4GXI
zv?RFoaOX%?_7Cl1pqnHm6G?%pPqqwo$IxV`yM=0ndt|t0S5`I&ZH8`=^bE0_?PUn8
zm9}ZUdcvwKHVOUqW>wMZxY?fz)x6TSJ&N50!KcP`O<XtQyo}OcCfQPW_Yb}MxL+?V
z2j`>C`}pQClh<LJ%kpLSi~{qzIX}6)VJA*J5JhY027wKn6?YdyI+M}4N`wyzR-!$;
zu(r*Mm}CPIx+PyWN!w}kh&T<Fa-+RS4c$eKH=K-<qc~Hf8lZrn?pZ=cxHKD|VqvSL
zfohAuO&eZuBQv0hl^a|dh`V)hKlNeR&%~wm_zdVgZu~0K)q<A|cB>37AVkhm!J+4d
za;cvj#C{C+Roq)l@rl`rZgz@wl&cH7EbmuWC2bY&<QC(b*0`0nV7ujPH4Yl~CN-{G
zm*54>Td;KlQ%{Nfjn*WoPC6C_rjY7gtMWUd(gVRG!Lvaa1&SL~F03{4ZW?>nZd%Yc
zA`?M5u~%}@@wR*|wkKUU?!3S~+GpTapM;g@#$Uh*8Xt$Q##>6}tJWrY^j2O|G<$qF
zC#L?k@^8W&b19ZTJm2o9`?QTQzWvh_wj<tH8t~Xk+iaD^;{&r*+>I<^v*b{PBF&!k
zjH&M0XeED2&$rAg(M$GKz0F|Z@3`JJ?=jee9=~OYi|w@w^|pV>m?7kGW(YYlTb{;2
z-J15)F{ommy@&;w@*{TOam+9q5B;HXEz^R?q!{|ZWdhBoR}>t5v;)OXe!ACyom+lD
z&+x^(bsIORu<_*O8V9Cr>JkLc7ju+K(weqOEs00&j7X;^%7p8D@s+YjiQ*U>#w$TE
zM8#ydRJ(}^K{YKH7TY;rAXOD8w@K*J6!+l9T_KIvL2(EQ$Y5~w_S8);kB&E4H!`D6
zks`_~&KfG7G5VbB9Nr5<*DXfYwV(|NMp8q)>fNb!9&WOfQ%E~xSy?s%jJWv;JNTt7
zuczwRGKQ4mG_%?aB&$6;_hLf~Z6a1#s9Io6sd=gwA}eMTD`U5uELjj_cNP}rz^V#!
zgh{0|tIR<2N-a&yYx2V>jpSrwR?ZAL<RPwIU)^T(Hd(mgm4v-!3kQQF27=~}dT*MP
zQFWE2==$*Pm0FQtIIRful=f(v@f4+VDECxyAuBp)GBB-3W^ZXeV%DOVR>X!Xp<5SJ
z$AS!!E`T;hgp-(mcC%u-jexwS!(5ilgrub;#^A_-KITH<OHO{b;MIZ_qDM&*s#+$K
z0k3Kj+JRMn8#)IeA=7xST1nq5PPb+d(sLf)d)}@G&UJbgj0?2vlSwzmsb{@W$4DVr
zGO-6?58{H#^IgQ^e$2=*Ahv2kaZ9%K5fH*jUu9q=H%oD^gqvDqzTm(c;`vo>nO|dk
z{#+hyX-gz>#xtJ$GGC7BmY?pf<Xg9bPaQLG&On&VaqIhv?%FcS3+4z`RPhr{G&x{l
z#--utgBK9B<O)fAq8BQ*D(#AMFh9_Ou+ZSFTy!rGc}apHEzW@C>TuP>(J{^yRtzW?
zJhWw*1XrhFva&)tFFTx0D`QD$FgteeTMi!;Z`<#fIE;@rtrRAsBX9=Ck_qk&sGsJO
z&BKtx=}0t`+;>-6@qw-MT&b^^ls>2G*gMb3=v&OmnD|o(y^#^)<tBClE<SNtX_(m9
ztF4dVMk6%b9<;QBH?t5HFIEp8{ODj+*G@c@fR}5Wp*XTOD{x3&DQGF{6`VrBcaB%a
z_wtKNcjDmjgZodelvffj#<9eOJ)U$@?V+KA2BwDeTvuv+At|pl*5_-r5FvQ?aup*L
zR|dX2fs67zTNNa>BTpVoh$kamI4;06{b4)5MP~f?!`38IevCdek+6~46-i?t#@6f%
zFaIzd6sfo`+k-c9;E}-K6_>iS&&blJ9{td6Z(zJ~Hfq#s=LfS-I@Ga}u_e(`3Wgu$
zz&)9cbm9ySpZNBz&pzo-)hwPEM#FXNQpjf2y;Fpp3Y|A|wW&LLZQg`BHvmPM^y90r
z82iW(S~NBhD)(=6!D-cJ!N{PH!;u10$DTH+AE4bvfH{h%w-^~EHD~<W*-QCn4osDk
zGnyJ~8kt1iqDZ1$q#!r-%;8&VoG9ZY0!`(r9NtZ4EYCa8mp#}eOUfMll2cH*BRH1w
zEDjqD>>R<MT$cij=;+KIAH+@3s=t0p7f%M?Rk}4Epm^Jq4muYfSzo)(t?dNWJHyZ|
zcQW8zLl+n=^SZ`EJG4}4=y0|Do?U5%?r)aT?Rr<~(CdG7Pl~OeboSV8>UhpS(VSuj
zSMOhE8xRKj;`z<n`^cJ%URGMGu!-$c)-I5m7nR{s`!Y|5E;~|7628?Dn@j0Ujoe%U
zV)^yVH$A3gRJ*3(TtZAfMX8&l7TEhqd;aE+Dq6bnhMF0usW;OKGXvH+)*<IBTu@2T
zsMI+^Pk-unM%QUqIo}<w{Z$Ru;9!)lcd_SDy0$TzC)9mA_9na+-#%Z&l=-M`3G{M6
z4BYFmYOp#7M8DNaqfR5`Iv|=P$%L%SWl?f>91y$baG?WXk^<%+Sxr|5#3VyAFzT71
zbwG47v`NxR1s1<54v4Bu*8h-K-O$FR-44P&&oIlipss+WW4UQ=9-eQwl-(@TCuq2D
zL{>9B7mAhF8>G+T0w&h`u>!S<6$)iC?wh#2o3}0xTt1zphe#n|On%vJegdDc$8zUM
zI>EXjg?n){8C>x?Q|<d@o5m#=|4yL{qCIX8VMoZDOw<<&SGuHoL=sK9n%JDg*~yQT
zJnaq5riy8xB#=}rQ4C)=ig804DOIYJ`&vjW_GRQEeC*H28U|^kv{fa(e{N23p>PWn
zeT-#cu^8z!EI>@-L^LjTmbGKYn5tJexn4>L$MGp7SL>REZO?MGUc>^uI`zgh)A(HG
z?j5rDH>JkukK~3PH69BzrFsH2etT+sHJ(~7-{J2RK6S6Mf{)?S-lpxc=?)G*B8<%&
z$4S@X%YAI|CLq6ChixlsyhZP22asl)RxkP7bR;+V8dr1q{<!%~gBD+LX1_CzvN%>B
zOY|C%i$AQK@MCgPY6S|xPieC0ow8LqTWzE7Kw3Ygjj*|P<te3;EQ6F<Yz~n0BN%bY
zodM!jii{V*2Ad-=M?NoGIpMKbC}T`9mb6~DiVdlKyu~lvhpA4_?T`vlG}%7PQS^=~
z$hFLt9$W)D^X-Dv%v1JS)t$2X?sEqDwkx$<8yj}`(xJ!KlQvy^`F0)~3aHJQBEBLw
zjSF^j9p1#q?~>Vsa?`ftx~Es_J$vS6zZ+jxZ1R4rFy-!EspiWwxi-8_@Le{S(Ih_+
zPq8#>dg*<X1SIK~wnT(nty-_hoIK2(G~ykvLX=J;Mt~$F_+_`lBBQvB^qn_s6}hc1
zZb5U^dhRsb5jw6<EoB}@FjJdjlB~Fps}+$bYy@)}0V&{{w_VBF^Y)uuy$TBq^Ep7a
zKuf@vI;q%}pDwb5iem`Ui5anVA59Q5B_1d7fHO8^=2kUQOqVsjxK*&HUpNqjK%1>9
zKJj^8zqDm}32@pK3{T4|V$Dx$zm3l-$)~+yYPPDGy&kJ_)Y0)K21~M&2|RTKO++mv
zHbQCF8t}7nNT3*m$>(jPNZKpJYGLH!xDka>%gNcKj`f|}t0@(rB;+<WAT+sgsUK%(
z%*=2Dnx;=K50$QkrG`%fK9}0bVREuPqJNfionL&XIXBp)f_tzi-QPf@E-MMexPV^s
zV#8iRvuwLHr50!2Y6)M=?ZA+@&Q}gCtq`osxdHcM@Bk7Ar;Lw^tyb|o_O8wG8*??e
zRSlQTfQs<|Q4HJm;2soBSK!$L>im+W-6w|X(31(wZ83vK=^tE@n1qrknSx+Yj)?%i
zgx!v|FikABq$y2%lNsZ6!`Xuhk~6nDzJZM6L^uh=t6m`|qYJz?(h$O&z&MRSE+`R^
zKm)UDd~!X~PaEod#7YEM;;BL_?Xs`wS%O$2;p$tDIcGZQRjT;F8O3BmoG+8Q2(J5@
znhu);PaR3cF5TqWG;2C&;Yh*BV=_eYnr56{Q`6f_@3&19A+}j2VW?+1AC4Uibj`*Q
zt4ZdHRTo(8wC=yZ7;TP*wKa-zB}W?1amJAj1erm&X99m`GWTD@KM41~qR;r>QMOu>
zS~YWMrp?&BW(6WQT|mD&4-W-2XP6WD$vP$|cEa*q%8|q<0+DDyOb+MPP76uWY1P(F
z3rW&xP2+~-wU%*n4_fEeP76uW`NDUx*2)(@rKOE9kbQZ64wILaDpHI%F#{rH^!T_n
zlHHRv`dpac!s_h#Ht*0J8XD5yxZjeeVrDA~=vtCgY6B)=B?*JIZ^1-o$E<sHa7qBi
zX|_6}Mnc<9eSU5li%I5mrQXooZlaHjJ-mJYWm+m+VN2sSGhdf)(kqE9v=+SrZ<ICX
zYD~f;0iq2qNA~QR!(hI#Wefi-(4N)e!<k2HnHi24iCIKfN)VoO_Yj5t(50SwwHfiR
zSMVDCG)|R^(@<ONef*V6b?5SgY8<)``N9~BCl=~%9_DINjbk=hsu-cH>H{h^pUuy5
z!I0YEN<_1fH3{{RRegxgRZ$*fc65Gj$Dum@UD3J8I1^K1!ztPH$bv3&CZE-L71N5*
zjjmdU{-@QZ4Chd#XREl-84W<}cRW~Q(gwbIHK6ep+2V=D@O$s*Pa7p*QBN$Ap(s(j
z;x|T?kN<R0B-BHT*(OmTCX{8)$GPS{He)n0v%V*s$9V*dTQtj?EkImQ7NUK=&N4_=
zD<;6uypB`S*b|hFqSnB9Aar4V|MkFa?Xe#CvAE~bANlzvzM)xpX{J_e&$8>9Db_$h
zHyH(p&vTqZ-6>v9L9>-w?A2XrMML<wp^(vN*qBC*hDMMhej7eI^c~R_xN~QL>V@1)
z^vp~Z4Hw@=e@<ieMu*5uG{eLCjEe>;L#Kz}RomG+IgJnezJ!RO>1us2onp5KtVgki
z4*+9Q!LPZe@zd=n?xk+PlbjUfC`dHG{qqPX;8A_`N)LWYUV-`IQS4OETR>P?cf%*k
z(^&GS0bK-`P|P|A2?6SX))P!aIVTy2A8vcTME~S{XkK)V7o0Y4VHk$-#hQjD5;cyc
zq>K9+gNf~FUEqjXb1-6}c4A<%qBdd)MDv~Og}vpo&olSz+nswGwy-pd^%xY8CuZ?L
zJ9T8hfxToZartMSBNv$K9KiI)y33;TqcRd>i_UPM?^;-K8eqc<i(SDNt?|Y2Rmfcn
zt}V#qD%puLY>r-#639#pcOp<v$j9a_*yd4TIYrcJ@Y(Si<v_HhgJr-iU6mh9GrP2P
zGJ1jYPHKKEi!45kg!8lKus+d+F8~M}y|Q%3c%S4kW|$Q{S7C-OYTz+%D-|S3_>Yp1
zB>Z}N3ygn|&ktdXR_n?wUruZiMqS!*96WXSq}B^grT54{GekDB8e{X2Ptlo-W^iqd
zTU68(^rPI!v3YEXVDfA8u%1SB-Fn9eU#p1LQ}$3T^EJ}cI46ORQ%-P_hM4@)<Bk!V
z;7XKA38lmsK<#4Ycp?sJ54&vD9*g%Fq*C2>z~<^SoMx9x4Wfivi!?QEOUS3_q%0kK
zrEdlNh;`6r(8U7dx>=AE=`5r*3x@^HCnc}~*v%QCgF&fuWg}IoL{}4?N~%KTsK>b^
zJv+lg(tjy%1|MvI3^#9<{!bS;p{2g<5%S7g+P{<03G6p>X~u7aoT&!=d|tct`~NKL
z=NINMYnU^WQ$*rh)d!9pec|N(qbH+N&*xq^Hi4Yc)a82`_%z$B>^*1myF9dm$4&~`
z!FoB@n8|gp0@$9b;y#>4J)7U-q3%EMZGyVLbf(@o2N~e&UBkOQl%x9<<!A-nJC^%n
zynOV5{YPFr7%kxZdIb|5S#+Tkc*aP+JC3dQ7-bqmzB60V>1i2pBni6+xH^`*u$}5$
zh2ut8eu6IGo4;84*ow&uPLn(iD&xnpXDa7qa|F-m#iK`#9XlSes<p0$qq%mLFnnTF
zx;B$ZYa!PJ%UFj&E@rzX=wF7r8KQ`J0!vtq%yfWyna7PDXohOMbPOgu0RN;G!C152
zH0zXNFTy)T#g-w=Nt!*?5$hn<TWe>wMlZ|1wveUSGwpePgmaXWJIJrQoJom<)N*8`
zq6V|dpBCTL!J+;9#6Z&MNOY$j!Y^T7pM+JAH#d{m8%mZ>yL}i(Wmv{-D5O+<eg>aj
zsh3kqsvVJX-^DOinv<OTUmnlqyBW}SRb|t?sWbwrKAGe#AP9yRVA-D)l^rlTOS6Sb
zq&$74{M#t!Fo%#a2WS}jYMLJ>$9l9;8&8)OvT~kli6d9mm=jo8Lc7`v)EpQz4;6GY
z)FOYQ-Ij^{KR)iGOP2ESFd3Qhl5sRXqc;JcHm&;<>xnkUqFCz@7nC12*UI(EkMwYr
zu@_yLTa&bLZPk$$ia_%vMR3d%$a#YE=(rp>{Srvgu0md}T(sMy1U2F<<)*}JM~D8$
z<oRsY;a$vP^xU)2u@l)BkDfey#Fe7=+pQWNc*Iwi;#*J5B?7&!MuPUK%C#z`O7$$d
zMm?|Os3<km*lTL04v)X1h{bno0bz$i^@1NxJ@x#t@q^D}@=49c>|CZlN$2e8Jz4_$
zM8Chhzd#t)b@h?_J6f*H6z6N0AT;V7PBxRM@K?VHnSPBK81OM3d+cTT-$45weSBcx
z(QNkdNBb0#pUAI&IA3`9>mJtk(ed%ZmXi}Fx0nR|hOT+d^!4|%GWz>X`u@JY4G4XG
z30{Byg?^U{z9+FtsIPC61G-?TJI{PxUe*h3<XO--@TXx^-}^T8X?Qe_M~eQauwdW8
z-KGs2#tnX<P?(r_nMpMMWdIg7tY5#u;6EA>fGiCD%VR7X%WUZ(iX51D{(c5o*mq))
zb;G_S(swO^@K%WW`!*;&{QENgivwf84N9P(N4MZ@6Xa*awdt|3qbH6Q3Xg5l_)VK0
zL;a2+==%lyx*-4P`!idnP@uxpmS^;RVVt;QW8<d0EdR^$kH*LE1(SY^$&ZeWne<Hi
zvXkF4n@lkAR0ami-`M!X@u{if6XS+IQj=iHJT~+4caf&$e{6dC#EEbH)<cI3KFTY>
z(rZqPk54p7LHRTB-}=}$=)1-z`MozP6rxQKsmbqU%de52Qpdke`Nkkpo1cmQt{KD6
z7$Pb2m|uA(QOzIv!pe)rOn!N5x>TJr1!+5IGwTiiMt%EieLiDz(s=h@AsHD(a3V&>
zH#{@GR{@mFsq*-E`BZ{1I$kJP{bb!db7Xw{h$%0zM#mT8_=mr)zkgJ0N|Jupk?|wD
zjD{QX(0Uu+myss;X!34~G{GVR9~yvKG4jh>gEeaLGntc*BYZe{KSlYUP2L~ff)LZs
zWKh2HDG;_8%HM{#MJ=GbNo*#w>9PJkTc5~YiuZ_V|D?g}tp4yFg&P=f#7y=ce}pj_
z5Zylzmp_x)vgMISU?d_N{|q%i<qPA%04oVQ$#`3QKJf}eiU0$H5HX(Nv6B<}!~C1@
z<M$sA%__n}J3aJFW}t-W8fRO3qkZbHFuX^*H7?Oy(1G}1c1HGhj6(x3biB5&*ecD!
zi9xzS51;;E_+XVmo33J)w_L>+8M`sdn7>U|Dl?I0fvHBc*<{DxHVdr!(OH6{ktkb&
zGfBk|mp$g3Cgw*KB?mAp%fktHvkWjf<HG)d;P5;EeitNy(_D#=tuBes6f&N(Npv|9
zZycXX3Q7E7?4#vyy95cF^d=(@P1ZGJI2h+|(3H*AwDPhK4i8OC#&etrE3b|E1;`!@
z)2*#ydB$p2&MfUTS~-c5^-?h62OwdKZhHQ-Odm1&po2y^0-n3d%^}<n7fWQwmxvB_
z$c7$-5?rB|M#!knst6feEMTQ@)W-P%ENk1aEJp@6AQVN}4{rOA>RSQ6B)BfO%ALXG
zNEKp9`8;t68yd(pkFKidqGu4XJjvG7gJi^Uxk0dn#521BH8?PeT)N6?sTqV7>7)xk
z;R?$s^lDm>4%=e4HbkbGGj{VbG?r7%$ZdO_#u;4f(&6?Nw(R)b(gDq4D~IMX5yQxw
zS9d_JF>1738*T&MhSj;b3TzXa)j)*nP~z8pni^CVI@?3&U{<cx(&@TdkS4rt0%C45
zq2p3l&lYtp73bodY(UHU2lsP@Drn+T<l2tJvfz&0P7|9rxF=7d1Z@U>TC&f+BOAxJ
zEdn*Rv?Ia|Gxc&CKAmt@;z~0>bdgu)Va!B4T`~|&6j=^t9RV6yf7lmbVq`6`B)Koz
zG-3sue(_`o*02nw%V*Qj?lZ>BORb{eRTe7Temrylt;w+HwGvqjFeY|1njex4z`fBH
zE+T($3)W~1=tBUB%`>=NdC9iV$rD)Ulk#AL8``V>jLEVO6Kk<`eH9aPXifC2xC~$+
zTNZMC+m00mW9xV5WZh$5%-=%iIq^0Zr!~DbiL5?Ii-6+KV^LpNm#erWM^)yaZBYk$
zkn-vH91OMN{@`gWwd_ke^20|D9C>m4;68k<^fZPKe&kWC62u6o(oT&-3^A41=QBDX
zouH{ZT$#ijKz5F@7Ly;2@`qrWJLf9cG)CVqtwM0L1~4?hC`3xGCK#!8B^U}(#O<zV
zZi89ddB?=9K_xjq)+H;M^@zr`ml_>st0|3JgA^*>QA$c>Gv<?bx$%Z!`o)-!zJqBn
zY}`Vy`Ngq>QASParP1Z3Bn|U3s~K)SnwKaJw@38CF6@V42OE|HpQMJ7X<`@<@Jv-1
z&PB<fM(OaKT@(FmsQ*~i;7?NwcuPoCiZy`_$##?0w9+?2NO*O#(RyJLJt%r~SwzF4
zdAVX1@NDggfHk2R7&8BYF8!$a>QtJ3W?fAfn}@I^;J+(Icu~TJJCiY;9McnIpJpOi
zrU}+*9x!u(`)>y0?7R_5qh+=>;3z}u28THm93I)SBbra%)n1$}wyNygFjmXPzg6QX
zgb;>ifdx|I6d^-)9TsHKSX`*-!*!6X5lO>0V`mp%2aj2-HNi7Wv*&2lc`szQu~Ugh
z8;rKM;yL{;cLXEtj_Kwi{#KK+$uY~Df$~r7DQ9uktu~L5ubG*|@53Wc?xq>B@nUS-
zYJ8O0>G_!%Sfb=bFCN$?3TEw&Ww8Kz)P~~7Eof|Tj-EwNCp|UIR$~snll++S={iPw
zY%=0vur(6f%yujG2Ezy-v^#K{=Ga|E+tU8f;fQ8qRS=yp{C71y21r8@H{y0gLYW4^
zt`3Sp*Y*0?%+YC&cmMHQ65xT(Az}-Vxf$u?M&*bL+b}v8K3eAr(eB;FqIgbZ(>O%_
zaKwVwSA;WyhC_UsJ{U<#2c@<zuZFjqEs<avW0cSZ?E+z`ykeLG6T&MFaKgb944<2x
zsi8);qcX*{O)e|c;=s3acYfE-T~F;EK~CF_A2@ts+o0KqNGTor`onc-1RPX>8;ut`
zMH;R75<Ue{apcajqcL`HKOnZw;okE9bN6=3aV1HbSnXbI9bK&HW@US^vcqCa4HP?B
zi68zHtBOSs0E@6<5f}jMo*#~8fJB1GF8p;SP#{OGk(sVmkDxcv<vxbqLS}jbeV@BW
zgh!lnG81f;c1GD<VCFdy9ue*y9v&X<9x}Z0oJ*gIh?HE@htK4;8T1qP#)!Kd+_~7|
z)$p`_|M+43d~16T`87)hQaiU?5hDZa==nB%re2K3XE#XGt`as8NLWx<2)z|{k(EjM
z%^n`)$dumQ<2l_4oZrdLDsnYvIGiLi)MKL7UuK0t!*^FFl_)&geYvhC4f^Fyy|Y&D
zZtbmi4p^?MNi{ZKY;_jp2r`_$Ip?`6j`k($s{^Cq<UlC&fI|X>aB{=+8&D&ZoN{1E
zG+}(3c!8x12jNux;Wng<*oqAz?=@2<D&}RuGVIy8UH1MixI&I6glS9xq}pJL8)tD`
zwPgPKX(9q8PL3AAB4R^9Ik}-zlf%b~hl>fKGofgccqZ&7UQrcZo82Q{u{)&%wjF3S
zSO~B@;{VYL(ZoS+clx(Gx(@!^|Groc7gTSg|9L~L6NQB48MtbQ*j1xYG6gxkDiwGL
zYOmkP)i$xVq#}>Bh&V(goiM#$o(*C}i^yP8MK#>y1A(UaaRZ@XnK2M@_KYH*03DnJ
zGg?`iUF0u9YIzQJ?;n+q?%gT)sUNigdjZ$NLGJ*8X;<RuvQBx2KoR=5$kQkF)((WH
zY1#KdE3h`)OxAzI4zb3@XAw5WOE@WWF6mt-3QYvZ{d%l##bBlo#jh2O_6e!KfPK&6
z6NL!idxRRQ;5`n9A^O|{lnn*?bns&rq^W*@yF|E4pA7Djz*YaaC1|7ORqb8*&AJsf
zwrXann6RAw6t!5<kUkm4vp#GJlqI?W7GH#KFiYbjtNL4R9q5f=A1pGl2o%Ue8Jxab
zqThc066?Hu@N%hm`GtSEoWDGT`_JG+>Z0aK{_^|u7B5%xmkTtJC}g~RP`tbs-{R%N
z;^omr=n-B%Dqg}0V{h^DarSZ)28n<B_0reb%RlBX*Rq#D-w=jf0SvIui<cM2u0!kD
zOIwiyINIFEUV5(wyxh!Q`r~uFe38BUGV3iai}3XPDu0>N6Y6t(-LID&J!|j@SM%_}
zTSrj7r7bsn@YYe3Z|Q9kK6vX$%D1EQUl3QR@A1~rlyCj@EO_gP%C}>UWRc2v>!`}N
zPoExyW<l0vM^?W5$_*HA9bNhM+P%ixoUm}GqVX~`>j=xL2Zu2Zkj*;E@-2d@eWx60
z<?X?H|JKo#Z@oKizs5xgk+^&d%^-g8)=^j9K8r8WE3A}R-Qj!qb=n7S3-ZFc7C(4f
zkeA-k;e)pYc_GK+2X71V_P<S_@wOl@q;mY=Z9(2X+)=^@ZwvCeW;tF*ULrEo!@qc$
zQ#V1CmyWuq>Bh>Mj<|Sv?cn02qb*<NLoG;q?fTott~@8tbvD%1g0$`>`m|b*)-}tw
z1!;r9j|jorg0u`73jB(<1!*^S;SOmZymh3-a5vt>cLeMxi<jHK-`sUI9bxfu?+<IS
zDr!2q;^nS*nQC3U%*onwZ}BoG>;9W{x|GTXFLSc`pfJ32WaZqE+kH}1M^~9y7dUuL
zZwtc8ej>hoP!LwN5q;gS9~6Yuy;FQ!5LQkw66Aug%d+Q-bqm5S%bp~@EeN~p!t&57
zM_7(`*)1b@>nO{&*X}jmI?_sAw?5&mqb=Wl<;;|Ln-lk|8yhSB!AnP6sTxTjZyj~z
zZIZdHTab5fkk(tgEy#P5zb(jnn!SBkkoP=)TacF#3!&wH{jebK%>j<Q?Sr=kc~A4V
z1$k-i3zbo~ATQeuOBCJ~<o)U<(Fkt~@_u!iy)DSAW=8Ea>K5chkU;$4ts^gK1Ousm
zThRC3o%j+Id|1%;S$fI01$|+^iXXf!>6^bT==&{9W8u@U9~JZ+q?c&-Q9)nVWxg%w
z%K+r?!P|nq40R44ye;XQzb)vy{4CVuTzFK_cR8<H&{tx&tUBrz^hL;BoM(7j(3b~m
zp=G=+=zGp|a0#-bFNlA7BL|W48dVGO-kkE(Q|sbwN#4V(Zb9C|ylz2WvwB*)uv%qW
z(e-5#Nd5Y8LEh6r_O>7|BLG5=9~Z=xFa>=H0zEE>dw6m5At(}fTM+jtU#GeSan(K&
z(ohk2L0_C_##xBB1%0p2C52l+M?v4=`%5I>h=VHVo6KJ1y2p;bu;ICvpms1|5fqAg
zY9j*MVr(fBB>X}fWWj>)49W-}ye$Y%_iOjIAiSIrM95zkgonK?e){#-p74yGzqm%g
z8*-H_pxhxMNN~0XwH}v%S+*#qPezy^22cPhc;tjJJE;=|rN6x!-VsY*7nHuf8+b(C
zmSo1^MyQRtC7E-`1(~n!hQ&c37i7M^AK=PcPiBml$NS-fc0FbB)>Y+*3Ua!td|Qwc
zwwd_B+k%`tmkF=?^;$vB-@uy51PA=!Z9#>j(Ywegcw5X>92mwA-nzMp0RdY4;H4uV
zU*<I({rGY@R%DkP`S@}rd+Df$mxoaT%U~Sw_%g%NT0y%*x(M0_jTW>sZxwluw*~D^
zhByvMbqm_zu;(3b`Q`_83)<ae5_+wq-Hn&-&kNceE_{oeSwEYF<++=R9PYwXSiCMy
zX@Oa)pF6_hCBiGsIL1Cbcf_G+;V~itpm|Wrw>fnV7oG&e4dLe0Ib4v_&d?)A9m3^X
zJwTQ&Ir8Y+aQZB7OZq^d@K!T|MzbY-7Ub|Zv|G^UaDhj$!!bLKx&?g>7mi26Q%3m6
z+k!q@6709W$+tkpdV>VtNJYLyXkd=z!-cD0SL4fK_8cw@Ff+9_-sZFCZ~>-Cdykin
zK!QiSH2WD|=Jav$i~Y^%<HQ$VI{E;tlbU?#$b*+SXc~?o$0J*;7X<o^Tmwfu2%a2)
zP+L#<VU*OD1%1MKkG*yDK~*@0#ScWvh9dyp-V|^1IRH<!_+j0gJnkjNTW>h}0P^*j
z*XHYuoIclQ$q2@}If0JC1_Q10ZI0(7XQkxZ9MQ>fOY0VBPD+@*c6jC_61Q6$Ghus7
zL)U;i-eh!$93+Qh&TgVty?X^0tdJu=xua@p#pIAPN7Qm3{K6Hev6tGV@s*SJD9l1R
zr38|b`&K9?m=s!djVYv@ZkXph0`MO;=MaHD!K}*QTi+`d$_I~0<_i!a3po)DNXY8L
z!%~KG*#~y#zUw!s5))R1G61yH&-)#+6viSfQye<DT!X2x;_N}oI0h6ru0!aL!C^ib
z2Pf~3l`)Sh7Gr<%Szu)}GEE?{Og<No9@5$f|FBFhv*@038eT^@ZeH*i`i-nEa18O8
z^a#t%5R}m)q-7+f3jkThO%s$EP2e#KZt_e15-u9{Y>P5uWW_@YhwvesoI_9s*;<bg
z3K|+?88=DL7MEJ>w}+E6QN!PYxGoMTG({iMV<6e<<Qm?#QYNRX+|?JFk$(v%ry1qT
z8FDuS$_rin!2|kymR=e(!pUg{aX*@z_@S{(zTDX9UCw9zC<1NWWn#gsJ;3p{K$aO?
zoL--uyHYHZOAvzbYoCk@UOAqo3dWZroSg6F%w+;^srX@;9EVn>H-SzvJZDjs$@%^W
zx6Md$i~}TP6nVrlIezp=QlV&bER(MmR~PTz!J8bxv=b9+EaT<|@B^o8q!lUQ<n!VX
z2>Q8ErkEFU-sB6htzurBPjDucMuyD%D3i|%%w{-smSysJfeA=Bj{1aC%nOB+m+^)~
zj9u`2dhzbU)9Yc*8^`oAMfNo+fe_cA2HNsQMZi()!EG1UpXzL8nVdJQ%+2TsC-L%O
znVdIn;1PF0?fNowh-Gr#urjAZq?$``^7-W>X;Yb;rsQo#+J=^NTsci?(e$IzGC579
zj2o4f$!YpDZwO6tTsciy#4QF^Ca3A~;p0O10**I{kfti<#ho#XeHmWZelBz29cMS-
z;y}?aynw@X7xFow2Yp^H)?M*nq(uteR;jI=rc4$lc`LFqIZX#lA(j<lTRBaoE%-a1
z#Pej9$z=k)LNYMY=UgWI#tMyjd$xQCCzlBrJC?#&0Hs(a=bw?@+WYj<ZtvAHIsX8T
zBoowj_?K{U-q8N|fw4@^8^38Fk!5n;Sipjc++btLkR&@JlqqzM$u*Lr!|7DadD1DC
z$!QUNZBnPD+lAUOI6$T=UxY&|oFlGI#ux5%MTcMbNXU{3bi<8b(jaSFIjU_b%+!+Q
zLM^c}naZ_Xs3qbdbPkIHG=QVjBs=bCV%m~O;i6lPDpHC7js0_QIcWySNN+}4!x)<M
zDhl<po7O^Z-m=hXYazE#v(VrY`;(G1rEA4aYausvwYfG(j$fqEjd=LF201!6d8LrL
z0T+eb>`jH7rb3=7RG#tsXATIzvWz1P5HNo4&LX5V%j7hnH);Ms8SnZ)I7~8|eOShk
zgk^4?WhJCPr5nW9AG=6#0&?pkM?d!GNwH8tk+DDCiG>P^=;=d&$I?aORLE8qDk##t
zkDeXRg&bHi-!hUSEBPWRaTsngDVE%%!}z)QNtUySPr}J5%S9|-xmYHrEHwj)Z)$ZK
znS(Ok^MP%>PqsmAj%9Mne%nS5?*#!kr>$@tVNvF$wTz=H%DngXlt5PR7r`>mB4X?d
z`|Rc!%ajaDS`<zaUnN%{2Pa=7zj~hxI9iBs@<sB!JA_VUa>@PP9Ve$UIsd$G6AgtQ
zg_bFp)w@%0?9LjT+RFLo{b`G=TFv=K%M@)Do2vJx>1;5zRcxx>x5>p~Q>A6fwsQV?
z@6Iq&Tb_T+Pd4}0{ty2}AODB{-Cl=(7A*Savk+braxF*O08Y{@<FGzLglULv`c`bz
zPhGT9R&shxwO>DlGkAoTH#Dt!sPYtU_jxS|;UZ?HS3kWte;NXrasV^yiuL?y2$IT1
zEEJj6uo%~+)8YUh&rp*`dA~2$>cYf$cJN2+Q@?~~#RG`zdvxl%7)xB7`P0TqA)>By
zRIkdg)DT?!yA)!1xbQ_0P^rheDlMB3Qb;n+TX_H&1C#Z@*}?^$;Edw8ZGi8JYqlPV
zNL<Stef(a67LP_q*(A5=#dHkx;eO1}GkB-LwHhAGn7s&p<RyygKDpdWL;YT!A?Fiv
zexVK%s?ihrh=w3s7ln-`m=W%e5|t$W;m>M#CH~>%)~iiE-`(8VT-(<uMmj>Wb$uyq
z>gzgPMP(ky6+-}HR*MiQYw`A=vxN9qBq!n+nWgmo@aRsJ@^)Zo?Iea8F0~WVgV!^n
z<xdaZY4}<L!?gxlD53R4p^nHQB5RM7MB(f6tI?^3Bt@!^j#Hp=6<QY%%PH1W>p1qb
zK*f@<pjM1eRj@iTMCMp9Kj?L6j@`oki%kw~4z8MKa0l-WaOsAiGY)RZB%QKRXoM5u
z98h>pcvxyt9YJuL^jQAL(^gy;{M;ON9;X<OC%c9mJA62N2OpL;q`5=PnNSb_+zRCQ
z_~z>38x4P1w0R&*guE@73xj2PuF8yHc%GC-EauN6y*wub9^w^qWEff*Xd!9)K8J}O
zfnf`jQ3%p-%z}gU5T0%EbrN8QD8a1UU5#S2A`--goWog>paWXG*y|0XwnN;2G#l6|
zYuYA<5?PC{TJgZ^v&uiPQPDGLR@sMIR^kt47Jj6Kk@sO1*vDFuDI#VSUDu)rotse-
zhoyoxIY6CR*l>&(T@N;+7&!<KgP>C~hPXeIt@cvH_W1G|N!l0cF|_+L5p+D3<1@yu
z>r;k#BWW#y3xRx$2?-Fd$GDC4ihffEIBpo@I2Jh|A<RXDL&zhEq=d&@qJ~Tqg|sMV
zeu$J$uul+7dxQH_JHXpzM(}NxYjsi+x`Zz+;Jn*rB4)%Pe@lGom@S(u(W0(ooao|9
z5A|UPhoJcI?`lM_XQGlW2G+>8u-QZDN#~S*-zcod<V;9?N`&$sMD>QmBz)Vb0`g0(
zRLq_<O5&J36}mWXN@<<G%%i}$ukp?!+y#Xc-?m(ogA?9!P~~?w;6|4atdqKQba9KC
zjPprV@#_|KCAcV6=FeNy*4U&}U4Gx9zJ?N|`trNLjB{#vi<?cviv>w#U@O(Y&8Tu$
zssf7JPMEk!aNos#Q>In2Hfxw{<^ZAWNwRmhQ|IBInTBfVK}7Y&AEpM?#P5u>C0I*W
za9}B=8Kuuz9FnRYjYO&B<+QNzjz6F&bLo-Umwu&83Q&=lr~iFi#2`1?hR->#O2NYQ
z{lyx_-7EGElCHA!)?BGkHEYoM459ZhW%A~L8`!!bt*{~B)c}xd@1Vyb6dZN&i~dD$
zxnvl%nEGvqX=s*UBP9!qZK?uUIHjlpL0wB6Z;(JqHOZDiih7jP`AS_!>7!lunz|X*
zcFlVfr3!2mq9@_sR<%XlpeoyHBBR3ZARZ|8Og2VGC>F6jCCc>6a$(1~SV0hKZjPrV
zG~{p?;$#8lVA-cJ^DF)j>HG%QCgFeJ_J4x^nY^s!?tv4?e`L8k53%1zcO;G)wN&d@
zPK8`TRxI-Vp}AL8-|9{<^)e!)?1WY`pRIh5X%>s$bA}gl#agI0pTvY$^sl&QDh=0#
z7f(#G#;a=d<vqC_MldBy#_u!*LLgph_Fh_hWF6J?Th2>Nnr9jd@$IlS)7>)}$>_d&
zC0NQ&CT#ukuHA2IB3@Vb(b?tc@C;KIl)>G5$YOJRJQ|Gf0Ny#@^fbG#jtko*1BP#?
z?KeQuaP(#g#ZoCtxbiqXu|-MbolR%bN_=bjp&`i+ZSqPoxmBSnDznRqOQE79wYfz_
zi%RFsU2$aA=jkn4n#aXzb^eNA=rF=2qeBS+8c-yR1u3mqULKoMk>PiM)dwmV-ddJr
z%NvEwLrf6x3?99hf)sn<#!TEmqVrOUhifq4hNJ=8!y}Z}i)^Hwy(b|8TOjS?XBMH2
zO#&Q$Q9%O1rJL$cAWNQ}k4+>z8g_$u0;Dm|qxsry*hF>-$^0N1W?eB+V<WL3mW%OI
zum#r)9X~LmiP1Agpr&j$=E%l`@!CAWki{etA5SV>eGFta8jT5qvKw3mwMA;e`U<I{
zB)2@4)I=qu=oERlc7`+$*B7{iO;u^Fq6&2!`g~L(-em#6xZBb#)@ldf7zcSCqOjtJ
ze?d4~>SGtw$w!b^9V00d)`iFXi(^OpMd%QpzyO*5eaN@f(lVbzP_U$YM<@!uBTR-*
z9`Nt-k$fNUZ}sq4en>NLWr(kR1w`QBxjw;V3sON_kQWBRw;<q_<!^-u0@VImIs?9v
ziU*IRCFnE1gSsPw;W`uePcTsBKkdYqD7`_3i)_cBjD{;Gpx>O~KXpchJx7z@MJGog
zSqLu|#*;s7zyw64f0?|9w-QKJEW&UXH<6B@p;@ML`}M#5&-ysz9SP>^&-!xzCDOc1
z{-Hl$3NG{+=iXSV5i~KW{|<9oqA=*dfWz5gdHuV*M4kHY<Mm3sUoe$54~pzMQy^H+
z`Eka6*t<C46`bsXC61>kg^qDNde_5wAYBikwxvgRBvBGP%%BP(<)EYi3p}j<>dmf9
zYxEpr(2_{V2LT9qzyZUBt-U7d!*Hy3(CQeh0j8~gvxl=5+^t)oN7lc_sg`s=v(ibp
zLvYE2Y}KhwKw;F((FNSOpI<<`mMmXtS~V<94w1+5`Y^{)hGo05{um$G`0+lRh!gD&
z(ZL(J6$(=Y$aT5LAZpcLQR7iNRm7A)Xm14t+b;nL<G&gsrgjMFW7qF|Q?+!r%K30-
zK{;>x|Bf7}U-}LS@+4kv6S8>;s-*1<vEPA1V-Z26DCzJZ!0>o!v|;!Q2ph<K@6co4
z$--DA%!QPG5unLkBV13SCEc~#{jwmnu|_Gb-?9RS>o1va1q)cqeV15@%F7|S{+kPi
z)n{)c4<cajs(Xkkt>%k;Q|%!c=lXv27515oB&e^Bo+2^w)i`@HIJ_*LoL?PfB@PkZ
zg_#mb@YU53QZO~3509QA5W>U4ldGdYU0o(<`s5^kf*pbbK5PYkGI)A|{ho&|kB*RR
z$yGkV;(A^s1`wu?9e+94g#(w|Zj_3w)=bV5?oK)x7%Mv<j~gY<FnO<BiT)sm0j?=Z
zz*#731tpFqho=sPWOZ}>Ku_Q%_0E-mS4#$Ca5bjB>q``^U{lWF_!7(==UO?uKK;1_
zQVa$_Sjqu`D@O+8=zLhfK)#8r1cp22<a21xV7wgcV3oPR4ttN6#Q1VWhsP&4U>dCX
z5=DQt#B)~y2h6TF;DQsha)q1FQ+MD<>x!HV#wV8r1>yeMR$|!$Y4k*ZtW=a{Du?74
z3Cp%$GN4}L)2n|^$toF-9@hx0gC+;hinOwXVmm*rqd4;*u~>!t4`rFUMwz|cSVok>
zHc*>?y^lzO2x_wp6v`~8G6W@th2_LWf7o~lfhnKJS-UTHdh6?ZeE7CrzaERj-@0A}
z&s)ieeSqaBtFyCdb#^G$Hg!3-@>rCb<#&DgUAaj;7MJol_#Iz-=i&xNpi~^{Uf!Ga
zJ))W;$a-F{V`+N_sl{u@P$_R>S1RF-M2^7sC{}YdxPtXIc6xi8`)_uD#Rw|A*nYDQ
zL^U37y{=Z;o+1tO)&>t`AEIN@J^1Up_IONm#2IuM3hC{GUzddjS)o-KXrmBJX%5l@
zDfFm>G}J<C+9xR^*R{nlu}?CqabVo<f34k?a<1dtds(00O12_}v{$as2|O?*$2m$@
zQjA5EN?Ea`F{2fHAw@%0Xt_~Hd<p#cPA*p(g<5*Gnib-4d0U?@Z*V<9=o1UI^{G*)
ztxt_YZG8%bKp2C8CQ&f4)yYIADsSMc)<PNfJTG;*gmQTy_Pi*x+$cndMWK~OArvSJ
zt%gFt5z(X{^egq8ETvMhT3dRt8Ojjtsn8Fb`@Nsm{<`<-&1;oKSb{BgRpiZ$wf(hz
zZ-4uTA6{)@#^KXZXekux)2(}H(15hQ-g~jTx%aZSkNKH8vA4g`+ui)DH=BF=Dg=6a
zTYtNW^?^`U8c<N$NsDP^RB%iy0U1K<!hao~IAWM<2j`$WS08*tNH<?DQG6h~LRt0X
z`jAzHERB~i((+~hxIYxwsnIK3I7a0T<k3X-)JefasRRkNzp)3zXaUq<)`8OzCbB3W
zZ7;5HTW73+b8o5AgXR?<o*lgJjZb=1qSHe=%fRtAw7eK-`}?)st+nUyT|v{*EVMIT
zlnK=?;)lK5biD*J+j|*1gN)-XO`x7{B8-iCgzZG)2oUZ>Q+f}WZ@lBNgl%ieYG;>e
zyc?U(-~5namxqu&yXzFo-@z|Hr0lG@UzN=}ECTR|r;T$m9MZ|<KvMj2TZ>y|VJ?mx
z6c2^~Y+hLE2qYO2-DKI=e6jZC)qW57-rwDR)%$5@kA|g){*BGwZ>?|kHa7Rxcei%-
zw|9H5HedTywOL^QZ+13km*{Q3c!4DvmWU~B0r>i>wY|Mi_|de&=z1szy*@&H{^r$>
z9NvqqAIf2Tol3oY^BiwwtkNQI9U;8l?&-70uRJxoz7%JA-fxP}Td0mSVomh^J-$YK
zBCkKKQY~Dzt&vGmMQSZcEnKIG^!O4zrUhCU_z2e&NLW+LyFq*x_?q_+FGYsoujTC5
zO8kYBwef-6fRNaia|v740L*4@{B08e(HYR#kZSY<QBa~??PC7YYDDjv-qSjJMx7X{
zF5lEI2T=cL-VjYW?hp+va4qj4^StQdqN1;#9qnNf;5C7;xNH}@ioYCe;jm>qzHh~C
z@7OHv`t#xpb+Dh(25fWHtikSMFE9jb^k{s=;>Avjp7Ejku>oqX971nN8?en#X9J=5
za#q~bd)I*VClp`Fip%0!xAX_W-_SD0y*0ESYEY%*Z+;pLXz}NG<%{z-KaJvHKd8mS
zFIWo8;>3^GVn%RKKKRhX2^kLLHhOCt8(7%)^h5$Tg)28V_k6G;ZSZ;sxaDkafD~dZ
zmBPruLf|MM78EwjuDb%kxKb;*VtLqCPA=Qa>#Jt@tM2l6Rg@12LR$KxuY7sg7<vp{
z5kpW}Zh@iwCT4(^Bj7D!L@^bNSq)Uh7rtwNf#+iDYOA0xniXKBX+bU^@kO(^TFOdX
zp}4*9H5$kwPmf2JIJKFy@D(?|I7E_jJD1m$z4J`?&u}pk!)D^qU~{wnnm=w?sRMpl
zjIe$3P_~axUQF%)`g5&U9WPeu!pNHSk#!5$%aEAYU#!eGn1>rO<^E|nzUblN@7@6<
zeQ)@FfSl6|(ft`M1D2cxO4rmw2CyN%;J8ws-hp)c{BtR#m@y|B6ftg?RwU3ZhZ1^a
zsuwN3rjCl%hCWG$Ol7sRo|sO*%JoNhZ|Y&tlmbzx;7$pZFA%PJ+k?uFPW)8*UQM<z
zU<nmeLInyKk^<x<sj|$=`$AjxB#h^~ng}h3tSS7n)_T%f!ne#BVp0G*%~;g*23FX*
zD<n#O=mOqF4Vvmag^uJagYrpQP<aL!<iZhFtl5N34aK&cn=!|BM7xZNPn1tQd?cTR
zhTBp_dB39)9hyHUs+go-&*_TsWCLUug;Db@L!%6UDH{~Pq^S~PbJdoXb&|~4wnq-y
zowM6SwOS9!h8{);Gbre4xN8hbn}p+;ZIgt=N;c!!B^HtDMH%s+vzOT`y-8tXTi)q_
z;^q=$##L-oQsbOZ@EL?uD3fjQ#M%Y`scx9c0dto#wbf;?CO#Bmx-C?ewjYkQtzDaP
zBG_1Udc`!Zf}v(t<+PL7@z62$rH8{rxlxGAg7g&9P&!Ez2l^Nfo2qY5SE{%bt<5V?
zqer?Mp;l0r2Yt$9UO-~aG8|HF{W)Kn@<tUOs$t0@oe+fHt{5L=B#wh((Oh)eO2!u}
z!UN0JkBE`Hbto!02AG1?&f$_63zCV^s6qcQ!GBsGyYZM$N0I&61T|2`Y-l0cHRKV5
zs!F@hKM$>1QBHN@r>G%VD2fu>@*IDPSB7p6MTRER*;epWN!iS`$g+hZaSr{x&?KPH
zmzqS>yH%5rH3G#lRYDaks?|}IXfHxdy(rS6N|?<ktYJ}=*xcA_XbQQVD5w(LNKiN7
z2q|iC{A{v9O;(ocGOn0(vuw_xB(00uaE%I^9IuabC?qAGZT@^E=e&hR0!-SjBB}|P
zH`6r|qUAfg<xXd+f$m|{0?v!Ws%<QI7P(nC#msmdXPg8y)MaYM@Cbqx)In`nE5Q=J
zs8PzP7i>9e#pFQw7=Rj&Y#_RQK&Q$A=t%jf><{)1#c0reYc)>T7R<qDw68f+k>ZIS
z->;y4-){#Y>jHDa$`%=2BZAW0O4@449HCE&P}h^j@Y2M$IcY>_!A?#X)oVSiKvtd$
zi2g`lAhR%^40r@z=|2d+5>Fa+RsX}m_#C%M!EZ^*=&nrDX<{m+oxgaU=wgJ7!B#js
zMP?H?KK~PCcT`}}2e{hXF2Ypzp!t4@1Z|i#sk20q34A05qeU8*uA*}O%&^lsh`i)H
zgX!4#R5tU%^l9xYC@JcX?`!^ST3_>$x9qDik+cs@qs3M%rp<}RZm?Ct<GkB8+o%>z
zoaU$wKlNTac?;w}!_C7WDA=r>?y|mvKcGGpHSZ{&6$o<hRNxl0aqx<o1}_?NvABe;
zwWH2~N|g*s!bgHK1)UC5s%fAoTTbWzC+T+LH0k$|$28eyk;{V{P5*gY?^zvs?wueG
z%e$=+EHeQaz)VZbXJ*BBvJ^;arPzZ8jit=Xb#pD`c_fX<%KgaKF+grcUP)*3JQ<3~
z0A{7c@f!|YMAqquAdU=<Y_6>sL_$%F!%0okf9H1Xu9g5>+r`Pn)OKN+hGqL&Y&AHi
zYag_l*8QLxjdL^$7!Ix->%rTEiY?V5P#3>I^<XnMs)yq1FE@({zNpx}S)b02v}v&#
z3{>JkFbA<3{ieGmGP$XYEor7_0B)38`dB0Ld}-f}S%mB8!_n>fa40C~>chto(T3Ls
zx;UsorT}IV1oC-R0gfSsQ$b=JB_a`@zSW=`x(3!qmo*O0XjXp3!{3)Q?}(C&rC$|5
zYF4wV$DOEduBR1W)PU-#P#3G<up^#4HI4l2VmPc1D)S0=cM|E_F}eh3>$OO)1V|s)
zC~pA>o&bcD0O^DI0g-Fnhk$&F^$1AIbfOZMZzB@L(HNHt+MTl-JGj*zp?UCAJ!;*H
zNU(TtE!NF6x*#b7k^#^4G5<QHOYYj7yiV6Ii$D=p%xEYa6<i05Yh_M>aR_XomO4C$
zhjOmQ3Aylx!&zp|4RTmnGFynmlFm|%V!9z!_Qzh?&NI|(-BP&dX7Xui9kuUyUX#ZS
z-bJRhdK$aV;u3`63ezmP$jD4y;p(FQkAST&3h81Dm3MM|3J2(9mQl-pbNx@<APN4N
z);cn_VjtV1dnP@AK5zE-bdyS2!6!0~or_<rmlEJ<1Q%A&x`+iwR+ZG_beI%HSb)?5
zC`Vr?nE%_TR#Z}v1|<@6S!|lcdl6D_i@<By;<vsI)6udC<UMHnWxX<l2=B{T62n-G
z5{T2wxHkur11LJx!Nk4}YQQtamXvvUH=nr$h+FY)4(Ybco7Y~f?(sY@&UnwV5&?#I
zC>odIG2=qmFF<I)`<6P?4sPgyg0_FLzrigTS5f->Kq<v3?7G|qOYws{$$2QEmRK6*
z%6euEgNe1}WhTIIiUQfy1p%bD$t$|qG5yc*5$yyXb#`+kSq0`s>6y$U34D_C6*cR!
z0HSf%5D$fJ3j*v25(v>#9JCZCT{vtMt?}jnW-~ZB^%z*t`_rQ1KWwQ-XG0u95>G)(
zG5mza6i2R7`kJaobfuT}EtSczM%CBpvah#gJtsee9=YP~>teMAQ*zq}*#Q{$j`1KH
z1V+SiP=$MpisBo(p(@UnT9R%P;#(x^K&lV0VCyG!O-F0y6FqywZ9F%+89?(w9~B|8
zQ03q<IOJzFqR?alTdJ^0tYDcg<dX82gAEW+bi;++wVxKN0*A2@zPyD~Of1b5B-fWm
zI7d9Hzpo&f{JtY~5P1+J*p^ld`VcXm><LjQyF(8>e8))C@}Zo&sFPF}Crwff62OVJ
zZ3>|<y}mxHU%-|ImYYD~LFlgYV=Qe=65&Kf2FGA!guB<&-Q`lTePdtW!a6)bhOL+D
z$P7R}P)#LmPs7%9DQ=v?5T!QRLfp!<eMSx`C)r8J^2%|4d59f~?8O)rg3WGYv#veS
z{MaI-q+D>=GD}(w80Z(nWV&Hs9Pq$8L*x|Vha{*OA?9>6?@PB)U&Cm+A%qP#JkQQ2
zh`5$R6%Qc<(R6@#i`dE2pAn>)Rp$nYJrFc77O0~(2@<x^VS5V7yt`lFiZcDAy?G}l
z$qF!gZ0~IDuI+Dazg~L<|M-6iggCleBRmHYvW&T*3(OkupyFRQu^b}i&IN8oh@QGs
z_bw30>3nx%$PRZ}K{Mb|XE?Hd5DUs(WzAbsu@`|~z6Q|gqDZ_#DVpoUOG^OAD$=zX
zdT8bQgjKWa1MzV(9Q;i456prBX;N)$S6Rmm4^V)!&)XV)t)V8HM<flHxv1KhQ3zrY
zi6vnv8u_xYzO%EKx5+T576e*<B`r(6`?5zMm3Zfh<=hM?SvT_^@cTXgz?@M$IUwRD
zi1|IjH%8!yoCPC10w>4<EQTTo;PRu3jz|}+33CmdQQr+!gnl|E$mvMZ@bZ+|IM!}4
zbpmjr!6=TiSAbon7Fb3e%KR=1<4b5RxTE0U122k3fdv-a+1}szVgE0slgzUj=molA
zB;DU!x42l48>e3Ai%d{1D{_YoR+a&k_YYxl={gQ@&ok3|Se(Q_s%Z+Ws6>D}PxjD)
zb9^UzhSIL2z>*~g>OH21I>ob|D-^(m*Zvj2x>f{SwAi~B3c^2Fl<+=oYV5L|N5{zZ
zKnql+ib0j|we%RuKY3g4ZteZ}1W{s;49>A0%PFyae0p&+;Y}tU3|sLqRNbY4pnU#~
z1wO-Ye#!ZVVDm5Pt=H?X-fV1cfU?2hIf0gf#Ug|fgc%463jL?4A42=}O>&UfAp{K=
z898qIS*Q{87{SB4so&R7GA`2i<o@e-kR^+`H{j^yyFsNN{Z4-F%b05eoP^0IVWTb@
z0~REZKMk24CChq$G#e=5#{sSz7#+ci?mlK}Q$y~1Di6iS0V^;m&SPfkVWY)s`AJHf
zQfdWEuXNiXL?U9RzV-TtCx}Lrgng930g13b8|NM(0N_5_36xCU7~17V4=4~k+emDo
z-jI=eSwom1)(QRORJw!6E4ivWqaE|}-f#tD%9TXY9*uR_&mSP%%t907JFUW5LE49p
z51=Jzewg^TPhz<LSB@}>#<>QGTF6FmJr;cu3=;fyqjOVNC)qD&c<vZVEU{9+Sq#Xu
zz`*9zpgBM?TqmR@T!J&1%(tbCnx)j1;7}q$u%s|n#?$L_^h}U^eJ+v$is?AfMZb|M
z+$rbs!3EvrG?PQ?d0@hf?3v<$@{j)G30iis><RCWw>#vgQeDnqbTjj@gI->G@gnd)
z|NU1oa;^oO)SA4ymC=FZJ-G;A3(4NzCl-L9i&L}U`gy9jDNq!Tb0EZ{mdF&dYUdnS
z)!S&&^q|5kq6VtZn>|FFzk@04q<)0}?`z(w!?YduE15VV26fJ2N5?yxvauI@Y3olu
z$LYFz%Snjw7gMN|yO<6Z>}nzjRa8V_(~O<`3nW!v<Eewq#_0VBl}G1%u_oC-J&Z^Y
z1ZFWt+kHxA4tmVyIj)aWMfl;WSeB5}2XP$SginM@a<@t%1u>>lzhxb53H`Iq=K?Dn
zE>g$o!Bm1fgoEZY#80G4yc(9e58|6xI=%<~LUrOy#vUFJo{uQYRzOlBET@LkY3q9q
zsNCmyq9iEyoT3E!wM2L(=Zj~EN|P(tD*vnvlWot83yjkdFIw|ICZR8bN;4d^Y5{=N
zU}Gr6V!2ffjLHc%gd4+OG~7!9VZ<EWdLk%p`?~4N$5uM^Fuv0QEvXPbV@EdPimi7r
z;0&wb48(exvW@Hm74b>EDHnLMo7{b)r?~Uc!D>6VL{%A9(h-91B~DhThK=P`HwJp4
zdZBKz;k83>CYuY)iOJJaGWlvw#|A`kh752J1A#Tso9NTV+gGqSM)K^zcof*$f`YNb
z<&1!;>?TGzfRJw~4r0@0AO<0!iRFOPFeu|}TH0m}Q8pl*Ovhhon~yEoQkM}X<TDAr
zA}zbS%s3FcxB{E4ecpoNBcxvz#K9Eu8XIjfeISk==B(?D?R8kiVRH?ar)fRp48|Ms
zO?b&poa6Q{^QS>rs~FM2F2<A)iRZZ70TvX%Wy)-6v&A)$!`eX#m8|dHh#0KF2ij{<
zgUlja)DfFqfM@3p&R(MmRKprfJaKZY;r{ei+en9DBp5|t)}RFn_QSUB&@M(~ty&%h
zS`CfCMT`c@q<`5Qv!3c}Y<DZ6JW{&Y(AH@(FWQow%2q9jBg>^^eQkgJCH(osw1RAL
zf=3f6l0MF49P^%!FR;IXO+w0W8_NAoF-K%h2{NbHIg}rQbbTELjj>-TTfi(D*#a}M
zXd}nv+^k$LeD~AE(Tj~m9GfJJwthp#S>8>5P)mgx2SV4#Po~M`H(xzp%X?skP)#Zk
zXCPTqEF-*wRPqbO;mNGZ<`WWCf^Lmj2698TNm3@s#K$QpmRZH1Oe^`5QT#SW(!3XH
z(k{EfgDbhw*Ez_sPikQmyIW9Qf(VQzG%}rYhlH5!{posy88z%7Nh&{Y>$M55GzG;$
zb{vP?zy*i6h9wBH<_O|rstvAc%HfixFfoiT0Fk!rlq+KQr7$w`_46EQ8oR<cg#wcK
z5lNvBCe>$op1^PZi>3wq=6}<F<6p@Wm@HbKeHQLrdX2PI%(N2JLEsN@fhlJIb~d=Z
z09W8ZbH+U^u^cnW9`zWy5+7Y6uVIfzrQ?(w!Reg6!5PyEET9_XGq1Mf(K`3TTr$<?
z2ct`BF1JI&%O0*t!fIBjwdK!61p<T1yw#KFf?%+rPrV(1Q>@I}ltIL4EDym~<geb_
zp*;{UDnRqrpJdO-2|jO|!6~QP-+%7z2T%x1&=7e&BjTK9ga`u`?719#bo3C2)XgXn
zXuBVTYxP5#of4L;X&r5t`;P49WP|2#R5srrr&Q2f+VsolWSmAta12>%PObrH#<TF`
z*`l$`+7|jcv!mj&rpR9om8e4J{N3oLR8v%cg-g^^&Dm8U3hO^z<7N}xbZf9V7nGTe
zYOSSvD!Z5OiBl2xNILgjC*<oq@a`?6A93aZjp8Tcrr&(s5->X3%3jRZ6`QuLmAeqL
zScw~b%P|_jl!Hg2a}f!xEok9IlT}lS1mO|&crjgw8If#`gZHBki_OLx>{IfsX#Fc{
z=wtI`?`HzA0$}88oUQ0*ZXi}UOri)2GDp&zT4<nw<v+It&5$p`Izj%8^5AwRti?(^
z=>UPTb7o&MFmqI<dO_moTBFC=%@wSHVUVO%2BhBj{38xG^CL$+htlG~z<!_l;TCvS
zP|?3Eb6NFXr;zm`&;@;%5?Cgt_#@85Zs23iE(K+7deTUH>Nk4z-OGEy6}$V>(TlXY
zQ1oA_t6wK!yUEFpCr-~juGp!L=EH3HXd>nSBI(#2UHeJIkaZ8<iZQ#Mc?>%`uBzl<
zjB@K|#t>wCu!!t`a!{oUQVX1Upcp9bVHhvn0!1Fp099~vLWu?((7iurWc83#4pa}z
zvJPSk@+z|H>0T11bu)1uj{v5z9HUk>)KiZ3JUSEw_C9ISI&||I*7BVt<FTJ<dQ0i(
zPZd20e`Wg#K4n@YbvRlL?KFDB(s2k$gv%uHE~Ws`(H6LzND?iLiSC8PvUcaF7`qT>
ziOvuxw&pY24TLRA7fdsjX=8`V9kr;}nPk(NjdNCqX*q4Rb68Ch;HfO%V>9q5j9Vrp
zL<p*}SQuBevy$d<L);DO*kO2pVu3KXg2FmD06=B}Ugm-S=bzc#5WE)X@<A}pSvwp@
zS`!hrwa+l+l;=-8lynP=<ab=d&A+gh`7qOkIRb)|FV2!E2c~~w<;Z0-T_#h5ixmtN
zmXp`^%q?+<5wgS@09Sr%p7$>H#**Nq&3Rr<e!0Tx#9D$5I|Bs&@e|7zNOFy2Sg*eo
z>!Q@{tgOzjQ{0cWdduI~9U9cU<Folkj*w>sBjT1sws$G<3Xip8ZDw652d=rDrXV`j
zUTikp;F(xhoaW)Z9R7vdb?9JFEF0r&RMry)j0}r9PhZh}44;kSejV7jyBPh6IP$1@
z7bjBQ<yYL+?tkI(uuEkANAv}rO0ie$(kjgRA~N~o0e;YAi<Ok0*(3ANFvgs@uxdHR
zyB#o*SIMd?#zZs#?5)!s8c6Luwfur1^WY1O{D7Oe9OvN>VuG8UBn2UEDN2dkoV*gT
z*g#@>(CD)tZ(%}1c)52C0V1CYa-k}b{8Q+@_#~^ju3^@HEywfwYp-76{IDdvj)B@u
z^#IAQ)vXbng=4<ObcWK#L2J*qcP)n%ah%55_N_5~%m>+%+oXVKZhm4VN;nto(AXHV
zsw?c{6kzjZv;cf-an<2?bae$+92lK9w$F#KtqiY+_iKbw!yrsI|NFYSIbKuW#Pk4q
zN$#ymqcX0tdq;OR28dV)O>;2i6W8Bak=CKAt5Qm_LVSlB9xEm}0{f<OSWE92>bO?G
zYM6+lGsIo!9k;L&<18l4CXpTDd8a;Oia#^9G(>IcB>7k^B%#%gf0Gqf6!+4)*jmeu
z*Q2TsUGv20u-s5|8>CAG!3>7aL?|GA0m0Gajl>q2$y+-WdOp*h4WT|dhga(rcR`92
zu|SL9%1ojG@Z}X%ZB2<P0pr032YzPn;LK0w1XH7@Lk?CbLt}{=Q%1b$y=fi+i*;B(
zST@^mbCOOet6QW<Qpbl}QHqT>mV|Ub!8%>Vb1P6A^sZIZ%cO?O#y1u2B#54z^Z`ox
z==!V8wcVF%ul8STuI<0sWeR)E)Q%%2B!Iv)h)+0`sOf7;3}|~ye-qS0I-N;uRqq%U
zeFSWBkN`mgM(<p2%aUz^DYM?2sR=j^z4(Gd^$Btlpc8P~<~c{~Wl^yC^KI-7Ez9%=
zDu*7<Z6u>MCQ5>x%{v|=Mi1rKP80l`-cT)rcWW#zrmL%lA7acJF3DJs#TYrxb5dm9
zkD-Y+PqOgN5j6oVG4hFqgubT!fsZsSK|>3Vly&4iGslt$T6%=6Q~VKntWG7jaa><e
zK<!|m<V47e)i_E{xKT2h5HhjIc_>x`-Ymuk8faH<|M*2Mno03o6=J*-jf1eAPdZ$J
zsc#m|WE03*YD_S=|0h<?8gCTkW|}zTB#cg3?fv<vo^Y2P;m_zwR(3jWphJq12f1a!
zNX6&)2B)a;8CPgL@yEmVNcW-KWu=qj2mw2qn4ToU(zm)L<3)1W!7y5Z23XItl9^-*
z)+KjPJWp+RW|f^5>*24S^!UGmq}GA?wHbog!rj9;kF3^lQ4*|1ImR!y8!Jxy<n&$P
zB)fl^BrYq471AI4&fBKi5!1=9Z#jXq^WSL=s&Y2pK&5Q5j@qg3Ex6*AY+&k;oIQL5
zU3kM_(5x1#;v9Ew>T)V!{?Nq*N}ueNX}*od@A*&{pe$C{ocPbJs^42e7ldi4T!C@Z
z)Sr`AQ$HG~!gE3pqS$FXd!a^AJAU<(Qod)b7q%Gi*y0>9dHjT1b~%@}E-}bC$VKML
z50lCZESuMyE@3jqLtB*+x)BJdo)673wt~wg41j{~VLHDJQ0?Da0H^Q_2hpHkc25m&
zIfWpWOh>`wtA^u{&Ln%K)?j@_-v)T(hFY4#NnephcqOCCTjX^X86844qa9WJ_OSrS
z1@^oXbsOH!dNXP<c>cTv0-(1b6x3hOL+eN&F{Hga^uH}wIqvDOP}~Am@Fj4}oO;;8
zggFbgphq61QZj)X2S%~p?4AOLZnsDRcPW3jh2;(Va#*0t1N)|+;NMAy96v{};gl^Y
z*MU@wN@)*qmBor{0ZTSm?2P7{4swH`Tw(JH*5dp1U(pC8_8;6t0?Uvod?H3Lh2oN)
z6dBKA<pIEKBfrgnCG;C}=`Ai|hSuBO6;X)UF47Op><0@ALe*#4b%bxqqXz4RP4>6Q
zK4$3&wJQikoY^3T4i7)3n-JZg(QHiB(9yO^lQbPLVT*IaeEwx6gZyukMVW}{77(q|
zui&w?5G3w3hRgqnHYf2Rkz=Q5qT{hISlEtfY@PM`v@Sb9_|3`aG+Z`juI0_*ex?4_
z^`c>-@X%~&!?C{}xVw7z+Nf$tf|!s3hK+^n7%fi)WPkv{k`)qB(GX!a$7#9NaXu41
zDK8AKjt0V71|QS0W4UoS#1MdQ&J|Q6XU#rsaaB}BfRilG1mYPB4m8BxE-Ol!{<gMa
z730>uxj!^p4ej)r7$+ES8ivy-3LprkeKf<)xo(ibwzymzj>-YNNQs*h2L9@+riB)c
zlA6o2O%$Nzw>;F4OYPL{8c{acY%8__#4l_!ynk$PRXxJCn@sg6oUrRQJPgPgad?0s
zS})Q9w6US|1e<y>MuqrQu@&T-c%9(Oke?udm&SQNXF>=P2!uKR8BrvHK_mogL0~RZ
zXp0WxYyCHIW5HUC^#Pmd(;5vuIIM?fNF{K8Qa^wI<X0%F4{*_EeiUPed2+H1tW&X-
zqdc3ON!Z|QZ!Mk7sNx};+8`=3u~76LaXCCXw+6JAl{t{NU3L_!2NvZy3dT1&#)%6j
zPpF%V@>q?m$K)pmfp>LFB5F-uC7n~b%3WW<&vX<E62UyastJNl#C`pH?zxtSif%TR
z0YW4MvT|ui(NF^1jxLZ{rVW3bh4hD)%wd$0l8}XGzRk&w48eAE<YIviF?c1dj@&Xs
z$tq$Y5Khd|A}wo)^d)7Q&^ZuA6s|B;{U35A%={pyq>u})P{x+@hM{PykVtbbg6v%2
zHL+_@@=HnLogtS+4%j9bS`P7PQoUYkqEOC&`dO)dvy^a;tYG1)O}RluSJ_1Aq(!$L
zEyWdGz<DVXbPplY(FF}=VFMcdmQpi9vUx03!Oj))C`Jto4P?s7Y*m~(eSil$8xL|c
zAVW24>67B)&vV(}<~*YMNa&)r&T1lTo&#nB`E&rbnV1H|lQ1co79&9dQFUl9)bwHl
zZGvcnxPXQr6F-SDqC9S8rk(E<s$#X!KI?VV4LvPcbEC@>ELB()^}Gpe5F*0jGqOeF
zVX)H2Qp$vlay)ZvJj9Wf#e~J`96EWHciV@~NOTd7h{A7}{zpgGv<tfl6mp;dzkWnv
zGdSziGx7YAnpgnGA>r0@5hgO`>;M!uBB8}?=U_G(-zDm}B2j1={IdR5ZV##!3b|r!
znrtxfUu;%ddP%%_c~X#71z*bcq+G_o^9?VUH&Q+MHl;EUx-F6^u#8r1t06`64zqAp
zRLeM~bl~Kj<IQ;~pw`_5P+a&E8a|@pAR5qdV_|JX{-$D5An^1Q0s~CelW==sfZfLp
zdtnsCGVgg%UVUe3bVDxa{w)n&oR=cX3#4WkjojkpMA7563YHte?Bt7;$AH5Zzs|0X
z%0PG!N_BHGM6SNYObAGgBP1oneIg*H>K?OfJN;{HF2EM>`az6B;*5|$H}Fn}hkT${
zus3%Q7W#7lRB%o8Yms&i;!LIO9Q9`s7ch)Q^H5hJGjlSE#wLF}V$Br>s=un*IqeG`
zm7lR6IJ-^@T3bmx3p9;~2;Wp1o14e){-^&-pZ=%+BS!A(7m43R#5*#w=mV(2_=yXD
zHILZ&!5MOZiMAV`aXE(8JUpi#BQpIV2j>^{U0VcugW>5ZenX+Sgm=*gEWAZQT3H&U
zkl9edAx$h(j7d@pf}{<L&#<n;^@LwA*?IHG5)8TTp#n=Mq!u;fBe)=-QwBu<usnby
zh>KR&mrW{7GrLOE9bBf3_zb@Iy^Zyq_#1qdzJKr;@{qTu)_g#QTS;+%K2vA~bTJAH
z!xzIHuvp`w`Fj20>{60~H%m6RA*ci=%5dTH7d5lNoPCJ!6T`4YO&uoRh@~JHz^ed*
zG}M<DxFP58v}Ic<Yq%kh91wDO!IX{Gf(#Yc9@*#;prPtx`y?AMgAv(Fl4T!5C>}A$
z{`!oWS{~O(A&qO6>K*u4ZtmB6TYtL=-%@P$$2?Ib^ECWX(LLrLpdrCB$p#x6G`iN@
zFpp`r57ZZQq#>s6N!RW)6MvA!y9v;a*wC2Bm~W6i7@o6|l0kDpB~P%E%gdWFIf-SK
zrj-#3mqJ=qDE#XoAwjP|T8rtvPyl6p8K~S$Q>Jj7cbYGQ7zBmW??3GKmtz7eSLXWg
zXd-YP!<4Z7dT)R2^?u!w7^zxX_V3GtL$44i^0k8iP%pNA=xuE7t?zE_>?3zCOTaD?
z+vvUs3t}#oYEMx#yM*QYfe-H#PyoLEYHcqh2dW-TD@;b%e({37Vqd3n5EU4tU_(Gb
z48;atZ};q3*at}f7DbZo+4z&0#oW)8^z-s!`SP7#fsk)P5(jUKTeE)u;o{;bC1}VT
z?O63K=H=mstKmc@n!K(r<(xKE8k~f*lGfN;h-y}n``ut4gyy3vU$rItvA&58?{2L<
zf3;c1#7iyj;w5I)<Hl8SiU8d<TJu0Fvl{z*=(N;HxQ&i}MbQBvyDqTFCSbP)xY*fW
z>sq_iK)Ud)y=$@!)En(mrC;aTIJw^~nG#_m%5Yd->}Km=`@L>vTKpLA>UdBDiS59A
zQU7Lu{`8na1WQ^Y`6hTaCYPI@j<=-&IZ$vA8jaOpsbDS*c^^$tNKW&z2F@(ifZYNb
zKw49%wzkk!c%Fvf%8zuVT>r~{>zi3Hh_kHyMh_b$W`S%^soB!QM&8Xf$j*)=U30(N
zinrV_5gz5mGyW6nIJRY?9YX%s$X=t`8(rJQN=d<(a(+UCEcWqkd<oi=CYhUCG+s%m
zE{Z9&79^d!OZ}A4BcDf&qwq6EmNuyX6Q|F>qmI{Dp!mP+jp;ar5*b*>CVMe3>ivPY
zicafMsCA;f(^@3!#GPNS+Yw`}ofZNMrn?bs3R#Y}*kc-#KQX4KcUfagr!a;oez)i^
zeDePy)|lR5Tj(JJ&}p+DbuqOmw#~k0^;%KR1n^cW=A2#40nN?ptplPEBe%Q7A-1Ru
zbEi!A(FWfKMLX}#omyNNGWLnNs}rtr*c_X9f@Re{W@Hdg+%|?Zn~fZ?9BWtyh9a0e
z)7kA<pW_pz4#*-$0YRl))l{rrjg1h>vXaoHAyXXdsHdJu!$rvbtf?D0y5WTtbU1*6
zY3x)cHN{?<cUezjvr(w>y%KM%@aMQYH{<Q|W&EY`{pAWH0qI`Q=y?(>?0D?Wzf7zN
z(qbRy##pRT60?o);DRnb`6RRl{H6Yi8Or4=T&_Pi-U}^fLj(WsFrlk*60ftGFau>9
zV{x9i2o%XkX_plQ&|pcS^yi;b^IF$*qz3Fsof1-lQ!G(wM^al0dTC|wGP@`CcoeHC
zbticdRuXUT%BG+EXlDEj>`OHmawRC;k-)*cl<OdJi;<f-?WKaQHM1amHT=|!(BSB$
zrcoWHg_`TI0`@~;pDP-8XqpzKTBwCA0T*hf#Oa)*xemKc#Adhe-9A3Kbh9s+;}Tbw
z=I(>tRf}_6l3*)LyT-O|Hu66s8uJ$EpB1rf?TWGuqX+Ur@9u8z-no-5vn?}2N827o
zZQR%ul0FsXT-Vg_!pOmA<Zaq}rz3#d|28_c*sTbyg-hn3j2<(H<KP$dmtV@kF>Rrs
zq1O=10}KV4mSZt1b|j*fcfrUR(ES1l3*bHrByiR%w>a81T2N6UE>)aanq((2KjaiI
zg4qMCwIhuSHIKCp`>E_iAnYOEc(E3TD-u-9QTOlD>5UW7NlIZORrcV+Z`Z-MZ5cw}
zG6@Zdz{aEv*%Kkn2E6wg<5Z_H4(D9F8-XC*WUysSaAXCz(=sIIgvQMQyA_oo%sOas
z=(A%_826fXP2;rL<vLWfh?QW10G8VA1fl_D9YSCb=EO3Sw)40vLjX^*sFoyH(>SG)
zP;@~^oi!mF$7e7KN&pj^c#U))2Rv699m!#dwlNJjLOlO^Yd@@O9#aqEtk(2YxQk12
zQS($F@B0XLPo_P!9HjY?M^wMU`jyuu;;NzsSVZAP17rQQk<vc_AjS~LogjtoFHloi
zx%@%|lvsAb__V<4y27jq<Xl)ch6iV|;!KE2k)<!>ETzfQc;8wZ-B1X3YN{*RS~2ZJ
zK}mf}Xij!z)f^5peb%n1U{-i!&ZtHauf>doil9-Z$VD#hj+(Yvensy`jDB(fmq`^<
zl(G<A2a-fXeJK}~`je1nH8hDqv#mfs-F9%8qf)ZS5JxSgEroPlnmWrvzlsgT`3_H<
zVK29h+QDspuKOSVS|9(%|JGiIe;$(r5nMdo{p>T?tz}3c{got27P-Q8htkO|>}Xko
zve)hk3hp6$6BzP`!ej2wf~;m9YEX-KO&c<9X6MJ*p=CG?h1e^5Ch{KZ19mhMt`$uo
zUjRn1NIH#<-BZ8<Oyv1%(YOp?N!+>sX|gkc<?O-3j_Q2Np#$&v#V2^aF&-fa2Q-(#
z=`|98V>D&s6~Y*BA&zNdn#vUk>n=yV$zU>y2fI|1W5|bBNQNrZIC9*cbZ~xs4BYzy
z$ISveW26kuOCeHMZ|_K8q}1MUJi^7Gz+bUEEs5<wHo~FZvI3HDlf3z|wq!Ei^|zxQ
zs>=a?QU3@X)eZQJc0>L4ZXC`WuhlESgrDNDlFgc?%I#kxE?ucJW3)x9ba{$kgm(ld
zVcG$?so6AFKd!Nkw&t43pQ6RGp=@e@Tm!X?sRZ1d;L9*na}nZ>)*?@!;#fpUl4P9f
za+<vLy0^I_UKmbFq;m9_VIwTN_1YB?9Xl^4@DM9IH$aqi5Jh$8O|g^!(?4AtSfXd7
zlU`+JYAVVX;owFkKD{15U|&K3qHB<LCN$b8FS7w>zDOf7PL)&u+SYV{tHvjzW2Cgs
zw8ZZ7{1)|iN?}f|G<$*>0&STZHcLn5cFgOSsvsvCv|WU>EZ5bP6_fB4yA^WWT?{Tx
z3(4sOc~)w2eJF@3io1oOy?Cg^O;Fs^czrwQMS87w+SRvhZp61pw>V)RnYKq$cLy_|
zaj&$X3*uuWN9ySgHZFzss<~E%Rhd_B;GVgBW$s*aANL>qdQC_ti~d7U?5*!@_11Th
z)oHV3v+0-e$8qUfJ!E3U@OfMR9<d@9<E;%mT>qOL<QdwtOP}3_@*viJ_!v3)wEEkS
zj*k@|t@BMk-WRRfcE>c)(>+la<~XlR`|)%*8M-h37Ivp}@6gQV-6oz&+N_h)+x5f&
zN75Hq`;#Sx1_;_>M8ZgFrx1bn<(D`OAM0$0n-&q&@(1yq(GezGpqp@kd(ZVC_(04G
zxV30Fxx|frLs`mN<dp}v6gN>pc<CuTWOp_a2%s=c#oU8oWl0{J8${nq(P<6S8xu9M
zPuGnkZj5rwmo|ldW8E?uFMPT8D1;C<*M`J|GXITNGpY~uVs$utH#*lf9jRoqPb#J<
z!`;ibOiu`JrY{+%%p;dXt--VU*gWYA03M25ob=Q6`&VyX*9V6<Z$Q{TLomOu?Ak8Z
z7`_&e7AuLRtiU+heqP#s$z5j?+wO)t?>=CsOj%2>+|=oUS^)6>35&tM)a;d<B&}T5
zYNrSgBQAKv41dCI+LpfL<9@ax2b(+h-VLI^5zU?na-5y_IG24Jv1mLrs$y43%0
zo+t6dq%_R`l1PWE$-No`rF9^ocJQpRpA$>Lr&yK3{Oq+h+h&59x7FUw_}~&M+O#!M
z=9sL#K?#G0ldPn0uU)`Yhp*l-D8UV?Dl6$xR7k}30L)?Y{{*`q?&uXpSaif1)%2d#
zcy1i{L^B{Q$JYK6-i2jNLVtsO@IfD<xIl>J*h!fdG<KEI-RORcI)Pr|x`Ul9%~`>b
zHP>Q`K<z)sp*W4<Hc%caluRi=eQE=9bb^e^u_$&EZr+^RZCx;bfey&@NVL;wzKNqE
zqE@K=^YFvr#laXUB6ACpm*q>DCYmN1vZb`{__<@}OesFGc-&IMaocZqaYojrpNG9K
zkI>Qrk~Y6ZGi29dQ|%i`d+KtB(r&Vv0j&g*?O{{TTDw%%ZERDuexvSUbE8VW*m}K>
zw1RVOD^WDtrY5w;T@hCe+m>ly16tsm3k)+&m<VT`U0hEP7?QJ<r^Kftw}<)>^v$Z5
zMCl|bYn6o?6b!o(LB>p!MbUfsfpIu0anshPu}kK$j0(EP5DwKstRF<T<pzQ00$!`=
zcv8Q_wxLT9_m?zX2@_&f_;GP;)#^a^7U{hZ-UVtiK`Uy)UnbQT4763w_{3^b+Qq6!
z|LKGrdfx&?8^mAfcvwnh9hzNP);>*5pkg+n%GZqqkub=nbk&S=hH*d>!o+1&=RtWR
zFocV&nSRsP^bEigA50LXEA0)uGuedxqVhr+H^5~hk{;nl62j7EnDz$=HjEHwz${aa
zy)yQ+q8o2^Jd?e#Tqw%3+Gq>T6zc(7x4PR?F7bsnGQi0J&x$1{e+ZW=?z_DIpY<T+
z{!igR#s1a%E~Cldv(JDjn>;Z-F2u|oo?Z-oj!z|OZaIXxfjNlezc6a<v5UBuZ8H+$
zBElhs;mbp8as0ER!6npxEo1L{!{U)7)-9ePYp(_`=CxV0cus%s&_aIDiO1IRU~&_J
zE&9Xo?D$=L7RrUqZQ}(mn81F!@thTUj4@1Y$s_e!Y>5pSod66HU=bHnUc-%m^n^~)
z3_a279bPkH$w#EfCWPI<$7pi!z8B)K5rV{5MhL=|ZcAzX!v*#D;QADvst*wJ^qkQ%
zi&c+F+#EdV77y-1O(eI$rRGB<rNTA_hkDTTVj1d0{o@oEq_(B)pMJv5GsF~uFS&3V
zTldoKu2dP;U%lDbOxL;!0}b5$t@_{$S+QJ3h!Hw|1v?$m3+Q{L9i*8fjeeILT##|J
zMj-oM2uVaFaw2T_VI)nOz0v_j*Nivn{-%mR)brgFZw_SAH$PeK+_KjRu3R`E8@B>-
zR$iJpx<0#%ww;Fz($+GV?{DE7ae-TwB?#0mBEb4#DcAbnRhIvZCX6KpJ~4w{nqE-S
zJ;&G3vY}EaLOJjAnU-n~FOekcbaFB}=EW$L3r~=3Y<AZbbz#B0g+d1c*iZ3LE4vlg
z&i*w3p{C?D14l*biJL(B)rREs7Ln|*5g24lhYKWl3P<-WMYC7^J>A6(T~SDNa8|?^
zgkl@Qn3{Y#zKY?7pL60Z^)FP+{%s&nG!s%p?G_Oip%yJ3@T{SS3h7d>@BN_-8A;mK
z8;NT^DGojX0ve--x(e1=H)%1s9&qhGzCLYH41{Yrn}RMEYMIL$?3cg|Jz(Fpgfpv{
zVRhB*kZH}gY%s*`280iWqhF{&@B&2mnJEbXU3|_8hW`H@HMW1Ohm>G&9}%`AR$B+|
zcy6Hbm&!5(qOJxcEUNB_<GlFPaFLLe$9e3D&?Q}PE=Ea!z|#|KHR{dr7_tm7^rt4J
zgLpX5X#m*(({Q+tpuK-lj$y*fcb)sWRH)=l4vr?R!I0M*m@zSQEoV8;K;|kLJBY6N
z4mPb*pR9Aj&$nUkJ#31|-0ROf=vn}io<akF1eTm6;kROrFR-#<B5O{-qH;_;Csr<o
zhq}moF`2`Ft7mry<AXEx<)o!yaB=wo+R@>)>G8`hx_Wf}r|Z%9LkNF?sAR~*1ioQV
zLF{GNNP&YmVWa8LUN;F+F1`U!Xa!CIP<yqn8h3*ox%2~w7@fjic6ft~Tv^Wwm@T>(
z<_(u*@dRT_F})fr34#`d9a;)YqAA5?AH@q<R}NbEFMb)}9x}S7GRfyL?iFI<7g<v~
z02KP0neX?aTt5AvvT*D5U%lDd{Tqo!Y@)Jn87I|iO#U_+9y}w}=vVyP9e5aBo}lli
z!79wW-oLFEb~g5H3rjs3yH+d<&tGk?|Hv?SN)*{F5{}qRpHsy)5Y>ZNV|}ByyZsY>
z#u^B|58$?U_P5s8Uip{wbJMnVH#d6HUaT40+J$(4h^VtRDgOAM*8aX;_@cg#V<gGG
zxeRwt9sw;QdIGlPNnv_zM-q>F;bvv-A{wm9T_wnht9tO;xlNRmy&rh-3K>;((QKyw
zRC7U=ol|e}s~4>LVwU%lc0B4My}<!SF@lSS*(=IvmKADpNHH;%fF*j}aDrtsEP&}P
z_0ue)e@3P#cg-sh5>v}u32|zH{Qy1cbV_;9Z1;hw&>sg}Gx-23=;>3+{_!uvBb>$F
zX)r$cVax?Ce&(F1kIT(f=j4PV0WuD+Avwy{e%BNgCF)lE5GdYc2rlcAkVjJ!DoYgG
zyMkg%@V06Zs3j!eNF@7{x<5$t|40fs+PAb5$$>98Dm*$=J6t)d`g2o3l^rHKBBx<3
z!<kcaB4FO^Q!9GIf-o=azuBt~enH&D!Ql|ny-qq-vu=6^^r!-6S6yUK*G;?5r1<9h
z;ousEgC<lVoX1A_-IRE{`M0&H6gV=}cACwoo>0Peze6HUB*5d<z_(}Eg2+w2jp@fF
z>y%O{>wsA)Vki{G+Uq^7|FE{T{{)WkIoETa&>W_Du{f~)tDQ+RVG$S|D+iPz9DGlZ
z<LVq2BFUAyzI^sQRu=z;en{_^l_4wB8A5EKP$|kzOJQug(KK}L<-?k2u9tCr0+Tv%
z!K!$^O1Bq$3Ser@K%%;?Pbd#Z<GUDFA4(e1dx>(5rPDqZ?aJ3PuenSBRpkUh;6V_y
z2KH2`$cIf@2+JuWr46^PXt=Ud(jd{=kXAHYo0p#BT3VY((niY;wISnR(rXcN8B{0L
zP`ZH7wXS)6k&-G?6*KSw$?4y+uADZMQVv~d*93QIi@*i~XresB0dv@~pMGc}{PuG;
z>wI&@VsnoGs}L%cD*+u#id3Qce<@3p!}pxXj;I6kC0t{Il3}DjZeb}}le)}HhQ0LN
zk62U`{3ph-^sx=M@Spjwf!bEQqAyd?`j;S;us=CYFD^@zh656Hck{oHhs(_Se76Ff
zdNLgT4CEsnU+<J5!js;~hzbZf2Nwr0AudGp>H9z8dO$j-^`gDsEdOFv|FWhrm6s+#
z0PYc_SW%u3AeNSk`t)G@4g&5ASuyU{5(s~vyDF?|awl&W-1`K&NU-A9s3#P0X6P5h
zUk!(h4IlKDmLEMp?k}{p^mrv2>^Mm5UF<X_9=9O&S<^C|4X;j+VN90$u+acgf&!nC
zUC?J7n?(ukp)hU-nnMi$b%YZKS5SGkzAOJui1oV!8VVZj?-giwnBLW8BAmiFOn;$t
zyGImrGkDa2>-$I5;Y9a`g6C*+g!7;r@0dSnNWxfP-hSf7=pj>vhmqhe2k_6}XC;7g
zjPXe!`<mDYXINsBC`#joIBa7tN7!uJ@&@%Y+CXN&f-azXj!cWjKoYr)ELlh3(3y_W
zzM5S*V1gdM*^V)<+GsS?3$-i?scStJXx%{4s*!e{-{(EBU&!ym@g-)oeTcDsV;DGC
zg=1B4@1zEaRT&2bFzu~Be<jIbddH(7j-+lz$P<HQ9%qeW``dVKcMn>CYioD>_BnQ8
ziem6<=>%~y<|0-(DCdZUa`KuqfdYz5n(0{d3^#Bb=zbM{uf`uBgwGCs9`@V|aI$De
z&@wX<Vp*=K_`qBxwoRT}nF4;tP66flvzj(j)t^h1T#rP4V*gB=W!};Q(X${N%F_p&
z6<brHZK<{o_)D}b>aRQCe(nLD)oyS)YQzAby`=y`u4NJf5abnnWfp7g2Rd-XI7V@{
z6!q5<E{rDN*aNy2`rBbLEv{hzk#(KvCnnS*ds`bYl!=fhwvP`^p<DhLONqXNX$se<
z$r<A@J|JQ6pyt8Y*#SZ)&);$VWN~;M)oXj}<^i?5a)9En#c^--)8@w3o1f~}+xs<x
zBQ{^}*9-7QS~;lu{YBi1gI!lPZX{6Ap^J0OoqGLb2yquP$c_&X<NwtNjf!{{yha?T
z3kyP3m_^mvf3^LC*cmr=w|>7V-Jq4`Z(vd1dcC#3wf1W3Z`by>wqMt~o3yOr0RC6$
z(+ZQkhCZ#Yy(T`yTx9s^)o)(^_<H*fuj?1vyFab%qZbGP$uJZAcx24P$l1YFG4$ZQ
zBXdvw$o>!eyG+d3&JXI$=nT#cOMSfmQl{y`caPx*VP^-4<Au>x!71lptpPn)gAb0G
zMD&Zu^GLNjI)k=wpXsEz{$7no!wLQk@fp+%?(=FMShy;+!<KVWJkovN;ouL04dP<M
zmJM9)_KKg3=ebtCzz0O*9=xwS9pZkV1Pk9IGlHN-rir*r@jMg9SKq_q4zoZ*&V2v*
z-SjnqK=)wyX78-`R&ZW$06)!o_5OqV4^5q{_s0hx>TR6f-1$Pa3E&T(FiXBjHX1%|
z|G3^l37`)|ivflWiuM)EjoqjWC17z?n|ggeK1w$4Uym-7Mu9GpTRFyK5wny>#3~-H
zYB&{8_T|ez^dt`AOJt|n*j|^5goI8ayt}9k(@a)ctTQ6za!dyd!<`dp+oJpvS_M);
zfe-RYI781W5`E))b_O4PAKUppzHd(QG~H!1$|9)wJ(V3}5l%Kv9Y(wB^4qXU32Usj
zTo?-d7BL>cszmo-Y3<vZs`vQbiqc}ez_K$L{E2_u0s_o2zX>ijhh>XMz|Ez664o6-
zMcx$#iNqDimUR<e*0p#`x-5Q!(+f;6`ygotLRhZH@bCZ>oKMs@7h}22nMaAZkq^<2
zg0ZCN*u4RP+Z$8l^qF*AeQTI=D&H~2hJzQGLe`)yo!;2swN|6tI~qd3A`d$>O`Z0o
z^@#EP75V@Osn0wt&$OuY>N~h)CAB_@`{a~Gu4$weE&;MYQ$GsZO`clw=#2kDxnW`C
z0UrE}O)3KU3(c=;U_4L@|MFH-80%e^4~JL=aakK+Qn}U~^YR`iuAu{Izl&bPAC0c?
z<!FM7RdE1tik$Vpcj%`CBEd+Y8)!`NgeqGZxxB%>0lR!n!kr*N45e2R+=P8UmOvFH
zp$@`oKwyv;1_LARwBvwy5<vPGQ=87*95sB=0W^$dG2%rCQ@$iXrGdH&_vmsfaYv$&
z7ZRlFbbRnkRYB;;6l1o=lM9eu15QHtIPfMHad2D|9zY_Uv9vD?AnO}ES2pkIL<?ct
zAY>cBCWiyczUVc~fw4z>&)4e>%=ZDT?V{^jYYmPz$T-3-x_NPVH9~sp2IOsh4(0#s
zV*Fu7e>Y30<BtCBqQA&Y9Q$kCoen;%8IioqECN57>&t>4fRNUSY7`*-ZH_vcz#fEM
zg=|!iT4!`H5eM8%3X$aaFy>kPZqqFO9rnnlr!|h<XcoH}kFKuZjsbJq7a~|Hx%MDP
z#bA|~#l^zIZjf*?&-45IH;>ity!w9%KXl3O)AZ0~ejn%HNvZ07b|-tjWft`!`!iax
zs9eJ7ZUqMMBgtKr#q5ILCj+>6z^R`7HApkd&S-|T&YHn4Qh$s4ZT;f<e6VKs%M^#v
zMJF1N@|M9b4ZlS)Fc}mo3~L8JwB$I3D)L_Z?9Xu>y8NO88h=n&h)pTj7pB6>yCeBA
z+N^DGe9SM@(&@=7UFqKtY*{emM6*T&lPsw0NokSgXb;X0PCxKopUI7F*O{LQ{Rakk
z-yTHjyWrCe1%857^@vxjw66B-rrab)QvpSLJPeWL^+GgA%qrgIOjO!5>5`aax-68B
z#s@5UIEZv<N<5kQM(D#YL|7P#8fSRWh!yga+?>PCg+wuu*X7f8t`VKA`d$0|GtqaN
z-sYmsyUsB@u&Zxrg8XWj3y$z`X%0P;v<p7Iv8{V?>i$|iixb;ii-9ufSeDSIrDq@4
zv4;ImH;#HK7GsXW5doJy3MdgkscSJFv86{`8Rau?*Is}0JODKrr4%TMu=**?b=zLi
z#%HsW>$P1d&LH}RGBs^BKxoDeZtA7vFfWmfVDy6t2~r4KHuyTj`T_+J=Uu#21R8jQ
zM!0la9Xz3eu}47^n@=VVQL@*?ehQjL{yzErAnYrvIY{wUV8gXj?5eO!Lv)Zhf70kx
zsHs(|0T(>Ze~_iTo56TOfyf10D44RWq;x8?R{ta>f;^SIKDxTzkvKFEZ+JAl@0MI7
zckMR5QNI-?CRN2CriaNp-p~SKb$p34B6J*mb}P>loVMbEbr}Q}L}au&A0E+ZlpCr7
z<>K%z3NZD`xF2F0Vbk=>0m9y~FTlcPU*e+O*bn+%N=H4Av{huT9(KmJ8LQ?k8vq`!
z-W*)w`XUiA81UZpC8N#cQYW76av2P<qs1U~;>alTZC^P|S>0)6d8Ql4fDc%Ato0DU
znd{B}{=MqU|9)kf-kj20XdEZ3E7|sli?8kg7`z!@{rdMG&U3qAC}V52-GB(6($<Ts
zVoH+EP*9&WA^0EU6NbC^BJ&w6N0fuWQ~R41-Lx#I)8cw8NyI+gUcha8*gf~NyHB^=
z1?3r&5)S6r1T~~diNZ#KmR{S+6%<vjIY}RGXtZ%T3gzjX&E-nB8uBgavVT@(Jw)$e
zE`Mr`7MEt~qTbT6TlCB{may=CNMh%{TnIVD!qs*iWGRtAzIc3Rn}6ffsTV-nniz#(
zqdR&)hzta!pvN@=a#d-el?8x7_mOlG)W+J-)PW~lB*@rV+1CE06!c<2`b4R1$qA4@
zI{HI)C<i{z)DpT2{3O+&<Lat>;T26(#EdLRjipxiTt95?_i*KBk14gb_Ub=u?;@|}
z5A~C#N)wi=)`U~d;xgtaJ?jCJkK^c^5hqhVNG}X8EQm&Alj>usMCMR1*eFkF*+Eq*
zJ?(@wg0?VDqbpdm*%()8w7U~hZ%%2ljUPL~3Pb~*Cj<SoEilt4(u`_LoLk&G#eHzg
zln{;aHVD#@gmzpL+GhJ+?G_COLUgxNHjxiD?5n$){0R6>p)VINx@h|*0?9_w(Q-pQ
zf4`Waz~i?u?(lN!by}CIxGoh&x|S|BQE`hVD|ROh4nznN4Yr(=7`@#5Y$5Hi&a_0}
zzo6C7rZh<t6Rl{u7Dj7bNYn0<JO5Yi2o)Cfj`;Nu0>m;0RDq8&r&6Z*kbUGD@?X7I
zWjC@sP%{(Af70$@%@09=mS;wc8@~=N%5gWOL~J%sYn^7hi&D&sloFz|V1SinzQ!6_
z&dk@cl;n+cC$sjo%TdZ~FS1#O_8MjLWk28p{R_rxXDgVN^NU%$Vc&1j`*CDtHYhn>
zwkEhEaJHw)t8KcpTb59Dtv0m|zTn6vaZcwHYQ#evcYTl}0&x;epexy0=lkw2|4-d-
zfBC-_`)<jb6w-cSjGtjW2|we;nnn#SG>sRs<EH6MZV39(QV@!d)=I(YObGrC=9Q3_
zZU}e*<M3q6X`j#0@@=*=z3adL<mT%y0<08wdwOvG?ppFoxE28gZq_ipg85$kj64SM
z!TQ1F1W#7elfA(h58ySVrl_9}br|%~2;UnjS@8hQMRf8`cd$J+U}0l{3$R0v+U{0w
z-jA()fqcKd6!Qx%dhaU4PHN5}j;b(3D4a987}FIKCLDc|Y>e>{u9bpuiykDQP>7Py
zD*VMLiS!GXmD?}a*W&ld;6N@Ji4WL8$%K<XL9z5;_@Rd^J@NPO{Uy$^dk8)YEfABC
ztN1TI(w~|}OFLyxEHl=;)FUww_D)~gNI{x}M|wX9{5?*GlD3EvgFx*t%;#vbvh)lB
zrRBb$!RbUU(o@<%@aPxqX?YSF;~CMeqTRkMSIbNNui?~vn(B+qk2jSEDDFv6?i
zL3Mfu0Ro7tUP_Oa@;WUnsEvlci%llKi<_h2HY1LPZH0^l@||`JtO<=n-YG+~F|Jex
zOB|W}C&SG9Yhzr=pQdY4Yp{e^CW(onlp;q^+A=yaOg1Vm4#ni2_EWPZ7)~g-0T7<K
z*OyoE*cW|U=3{WKrEC+rSRFO+>+32qtQF6bB6)LKTc5JNsGV4t*ta}7mPV{`<jod;
zNkO^dogS?#kL$5!u0s7ddBr&u?gE%3lGTc$;(C&UBMiEPhmSbO1|XR4S+^lH6&zoP
zvuibkqdD*uYDha-o#{V9%5&dA@<xDH_Fy_R4p^^{qePP)+M!K_wfbDn{0CQhFIb!v
ze<}Z%@QB=_UG!Lf4BJ{{6fbKWACHc+q2-*x%Kt(c0Czt9YvTZJ!FVC#0uJGhM7Pu%
zoxyW)L4`1Gr5NiPCB%e6E8hr<hVZ>8s*JSwv&LU63JiU>talt^HnV^tO-d!s1e^or
zFl3iHpscRS{G0)0a5X-i3TA0(CK$r_2XyBjj)tfI05t^gsHmtaj-E;z1=D66-1vd1
z$$lZ$h4(T{hDYC5Hsblgyv0E+d@CJ@)d74m=LNt-k$DfGqK=1$7Z+EE6>Ld7ptl2C
zI89?j*#r9YLQxoDVdd?4r_|1CxbGljnimN|_9BE(q>wU4R=N8JvkIJ@(cf^4xKpIK
z5VjLI@<*(o-PPOQL@CKmsnS4EbWN5QDlgP~5TNVa+khGQD6%w985_*e-b{Lm1|{-`
z74LzB_lTen!WgvARD9aE#u`*HHSx3>t?#g-8y}ocPD!n_STHXIM_ct*NwmM?_rFK7
zG)aSub?Je7dKjNRbWaEI=_B_PnVgup84w=3r^ER4YxndxK0R<x-^Hhg?&(Q<I&e=%
z@#&F!`p5VbzL{}sKgXxX?&)cG3a5!w_AEYS0_%XC^Z1l$sl!t^jOd7$R@_s$S^|Zt
zC6C`f#j+m1*ist=k6*<1+Eb6;tN7I8_c}iH`28h5_4vJsPd$F$$EO~@AL3Jw-+ziv
zJ$|`a7Rn<HX~GWk8_QFKg{7z5qw7<TUtG&>Pd$Dg#HSv=Omd|VJboX=ryjq^pk!q|
zevx0xo_hQuc+H*)ewmp}ez#67eF#en73&HayD-9~Fk7bA*julwWg!bD${bBRhy0rG
zj)@9MSI|s9bbo3y`v-^BvJjL}d9w$y$5dm8L3gC;MTB@_e;1#6V*g!uip!!BvHw0k
z^~8P~pL()>6Q6pr{x&}KWc|nZ)RXmh@u?^4{rJ>Ro3Hd~wIY;DDv{b@>h}_+qbigx
zWro7HwOMKq4yq)7G+bF)S$c3tbv_z2tWBZN+xo>)wIZYghoJcKtm4bnicn6AugogG
zQmqKtwD{_*;;Yq)&{K;)m{t5iwIYPp;*Vw(e^|kVEn?>Jtm2QVRbdT<{`IWlkE>M?
z5L&!HtN7Q|s<4<ApG~HI1?4k#ekS6Vma0`@ONBoZ^GnOss<39_H?i_{vm5q$Y6n~m
z5{B$Hh1s|}+&Z6BtByUFXOw@5yO66@$Dk`SD(t*_b6G(tjhI@UQDI|vTCF-BeK4c^
zChlfhbxitjM){q08|T$(VAIv<{U?fc5%@H|xIxUa4Ptfr5Lo9`s1q1=bvj~MXCu@J
zT)R4*c&zg#)DhNAtRgn!sjQ+_<p*AVnw)E2D&A6mhxdB@Rb4&s^7TtEzskC?)|b@-
zFMh*vQI<C$XifF12VOego2#XJ)q`8C$<~rC&5ylWWGm0-EnR$D{}FjA&k>_he}EN*
zI{>hECi`1z;nCar0-KaEQ8}sM*Q<4S7l~Xaf>i-l==Q43r$O--{XCK0Rwaq+<~>(!
zdqM2Ykjr0=5x9B0fF~ZdHxgHjD_q*^gbuvbqoD(?VgG~><XCfQh`aEx6Xy`1M_|w1
zH5}|UF6uYDDXi9U(-xJsaM6Cy*7eYh_^*sbZ3_Pah9btFfRZ_OVl%c~z$rM(wq18j
z56Lv=XZA2tobQH*UX}Vyc<9yU{~<i|>ec@g9(w8UKZb`blfPQ_lN<L)QHQLS{p4K?
z553m-58<I7rcLu|+3Sq|vz5$L#{VTe^uzpfc<4v;Bs}yZ;z=C)x#CCk&*7mT(YN8D
zAJNnB(Cdod+e4EHoD0%OWLNppkOPR-#xy>E2SeE0vH(CVqL5b`+{iwi(A`XuIh90%
zt_o8n14I;Nofa&n(;VEKMmdA8A9zV?Tf*vr-+$VUu)=DdW`J!7s|SAfY5T$If#)pS
z4pt95XW4GBdf++BHiOkezZtR3R`t+xmhGjghkgRthN*h!*)8lN5<c9wxF+5YD@O;H
zxH`?1<6}4`0W{tjA<azW9p#%_EI<IqY&i@|P$LnIzgXIOmTC5M$P_%K@iy&y>>5Te
zER*rzc2pkmI^z>SN&a;+kJ2DH!D$Yjf-_?q74Kq1?W2oxi!G<sPE1(5i&%31gQbD5
z_*@n`z!+SQ8C!$w;}KeoT<h6+TCmj7-iQ|9jmu!cqL9WVMEEi=nMenzQQzm^*+Ht9
zwXqdtaw0W;6NPd{%WNfzJ+AM;+L$QV{DwSTlS4s|)MbauqnN5d{#*+zaEo$n#KDk^
zHV*LdvDng^{mY-&1tdi2A?_zqrNSbYQZM~6UV55C!Y}X+Z^MOFaSkUJ1t>=fjgqq-
zFl`1>52>|UY_xi2!Q(S!r;<TtLDWeCVuk}Y@J?~QYPpDW{+WX|&;aAH-thfsa`nC5
zOq`g`h{4qer|#d?dJ{?LvL31(s2x2hE#U3YRU=32m#0R2Xu#gq`zK`a({~pLUOPGC
z9K9J|V6M=He0B{>J!0UGNAHJ6ck~X`(2K5r-_}1q-@vpUPR@UeOV6;9`YsydAxFy5
zaD3+u6Qb+YyBI2E5HC#X(0)^c!r53P9c0}6I=l&%_y8!?D8GRObel0rlIT(8=Lcmq
z_j|@ld4}u(Bg@<j837-1aC!7C$>0!0^msz%tkHl+E=aDl`~c~%WDj$@`QTX#lw?en
zDkw)))}z#u=B`1pJ351!4-i@ssVXVPPcE)OA20+Y6ym&xNJvv(Nyz~=+aE-;nGc1x
zLEkc6@LSM_!DgsKOwq7j=?^X^^CJ!Y2qPu3!f2J%XPt0y^&*Z>u(mk$EzYsliHGaj
zpvpnJ6Rwl2P<o82-U2oU9EY@i4M$%{FY?O>H>q;+RI~b<L6S^ENf2?mn^K@lTH4qJ
z{UBf4;4<9@E8s?TIm>g)pNK8aVq|6-oo0>Vhpix@51e0K<Dht}MY6I@YfnP&E#xug
zdPQn`s0eau*sn#EkjRa+27k|9NRAxw&p}#D<b7c<2!lDoquz3@DQ~`!<${Ss%I?nm
zEqbBckqi+mS>SjXVK&=Zc()TQ1hO(@f+dVGWf`3UOP7D*+TwM^tpqoo&;fuvc*_s0
z2sphxp@RYPslc=*esTsZ_vNG{6|YkMd3t$(jH4{4saSjhCs8ADXL0BgbE^=pxKpu{
z;eq&)`3H&Ga+)muY4Tot6UaiEh6q8Ux!>x)`$zRx{dfOe;kWusK(;yBS;48!nq>es
z1%av$o&J$5LLWA=`;DXnK~Co@V$%K0g8^$9n7aDWU5<rKV{C>Z`ob~Cig^)EPsGwF
z)ZL2+7~Mc%^`{K(Z1kTzlr`gqFa2l~n9}dyC<*^vy+Qsjag{ub&TR9#O8yFtk{taA
zs|)rZ%6T8-^odNV>BDImU4grtKCu)8PNsPEH9p4WGo%jCA-E`E4C|A6e?DI7KZJv;
zdbncDdDmxne`3%d=le-iNzy9J+`aZhHW1merZgiIQHSvlc11g-ECOVr13C=3C_q)F
zJAhY=oy~wMs#wm~S=N8RDzA<I#4U15E;sS10`&;nP$sHC=4DNeF+GRHotC@4lY@E9
zD>sBOMTcmvb-I&MNe9h4=A|-m8s%C;7HY;)*V5P18-msYyirU;KDw4*_AA@Ugqvgi
zMw6E1g3Q!9JXMb~a7A+sQK@Z!=-9&TwWhIX@FTrkV;90$f?O3z<XpS7OY&6Q+EX*~
zO!d#UYls}CarQh1O;vI@OgHe{kS%fWFEBSJCs2-}K1bV8=ZvJ|S)pJ28`CfT&2J0+
zLgHfNMtcUu-~(LC&qh#8{xpw>`3VX?@>3vX@!T;iw9C?dhPkFUksn@PU11aF!dz&O
z^+l$J)|Bw_&>B<kM6>g1*b~Vag%Bfj0x{FrAJfhVNp=6d{H2;I-O3$D8~FY4rQ-F+
z&rAGDM%5G^@!2oPd4tSH2iTm-E6t|bkObIHVYgvcRhFr-dq?^tL?|8AzfCoNTOlL4
zT~TSEaA&vh36SZ);u^P8I`oKP%NGIuY3{m_2EvX_7iqif4w-|})t3qq-NTIq@WPZU
zFtO#bYcP>Wn~~`))#YY~&>vm}asCbpI85^E$n}raf;a18XmrJ_PCB93d`_K^_!3D;
zE1sMH2HVjD-2x6|!qj_fKlN65!&67cBzt(k6vrj$dj%R($qtyHNXtMa7Q`dKrDsp%
zx8ld(m}#K#0&^0p`TF*2Uedm=fOz+Jk;}W<L!9yYe)ZMh^A}s2uQtkiyq+?gR8y6R
z^_iG>3!B_Ywc1euKEZO^U%<UoxIV{(J?d^H!?V^TY82aIX9bdZm&yqDH&8Aan)C4~
zksCuaG-`IgV*HW~Dco+y9kU>^9Z<NbFuS2gi4nSL>QHtS+SBloH&ZMy+MTy9b~J&x
z;Yevr9B;B9?`lPoccq2AdDiEWxY^qd(yp9TD@NM9_*{g|tB59}+@swl^XNw05TJa|
zyR!gZu3}A0lEVsE%=juiye*4lpu;>1*O9o)^=u4ju|*-n2-2NZ$b#MV@#Q5)@9q<E
zzLtAW#?LYi%leV{D>Z1`!kL?w1)%itO`@pX%#~FrscqM!_?mhb4J6m{gJn2VbbJB<
zgGl8?N{7(tzLyI)$=Xg{iRxnzTj9|drVE8c+oEO5L5Hb`dP|Sto6-7V1VNt94eC24
z56(bNr}U*Wj|n^SN2c#J8=%-E#H7YQtzBq5G-Q%dkdyowKsi==YW+n5(!l$X20<v~
z!UQ?ja|nUkRgfemk&D>KsNgiaA}5zJ85nMJ8ZxF`#5^ijkT6LXGKf9g8S-eUkVYLv
zmlo5KQ|pqWx#Ed%UKOkNG23GEwtmz<sTaaAg|2yvOfdgw3D2?Y;!#{M7a=>EFfR@#
z7pGWRTVKXJ^+rs%v#s2}zriync}1=FclE|2{N6l2+CJtjDA#AzSEtQ(M(4*Dt!+d?
zQ3Ju}ZT;<c^)kFL7kJi*#5pzPJUZV3G~`C?299j~{)2gObObBx1rpSzA+-04+5X+9
zy=wg@TrS3Cciaj@E(;~KV6JT91lU8C3|Y1Zt<}+4yZDA8d;;7czy?Y6pr{?d(F)o1
zp$#$Hq#TY;s@4TRF;EcY+@q(bZjAO7Gu3h-w_SOFLe&%jAHm6lgZ?hCWX7j93sxRH
ztGTmBi0327R=H*f0%8T{I(XClK|e_(fxSFuVbnk%ZN(cKv_`-4WZS^AhV~rvLSvFL
z3f*&~!97BM)$FS8US7Camg{J^UIOEJ>Y=B`fsNQ*S0NQxR52IGXGhT7V~I@53E#X{
z3^0xGdRFx3)Tz{l8RVf3B856{E@_cXgJ;#Fq1=K2AsKF<0U_acYcdS_E5fc8Ch$DQ
z{@|ApZ#h5Vq3ch3&oTHb%~Zw(Gw-zIF|$>Wsj)Q2rtt_)-1v-xNJ%A&k@E_v^7F4@
z+}7uIvNP@Lsk%#+WAmI9iHLjRu?8|@=i^Wh!Zv-Zm013sOdG9{6^vEhLT2|4aX_YZ
zaH~wXU<R{>)%hRiDl<3Tf_|{k<x-8xUbw@d)Zp!Tsm-yI*p|JA_kG;Sg`!wfn;Wuw
z_2%z)HhRx7oP}RTS6C~sCq6=g7cnn$A+<d~fWqr5<*YX10}aZZmcr&-$(nF*X~i+l
zMTbWKcvApuszU&1y97x84dyu5I`2J~T)oZy1YIa~2i3#F+inK}wzHk0J#-C(ui%~L
zj-cE;hU)%$`?vK&UB_sJ(0!mIws;SGjt|-?n@C!HAV{$>AKXbE-(_V}26OFFZaWRY
z0^*=qHY<lhO^V%wMzL%&`+TBXZFCdSq*M(&-Ku|*eeJr&Y?GV#A4pMk(Ym8T8P<u>
zC0x_N!1{Tc^c7id&9*J}LojtalrTk>$Y<?E;Ica5-2w4~A!`C)Xehi1vkoN|mVUSV
zyA_#2?Vz}t^e|!I@6z2KBz)K=Xp?Z%xZpgM1ifLR^y<}a5WEFvGG$2eUIa#aKjr-j
zO<9lgxvQv$5%cI`jKek>Gx>Q76z~yLxG^0<xPN=tR?|dHs)|)j7RXQ&n((xGV-yx*
zaMNaAQ=7~Ewz}5app3G&ydg%^WSJNpx~1nf9Qe10YI<q(1_-PejIKWL_B9bia=)sm
z0Jh%|6ixesFetLoQokqSi_-vuf=I@VXi5Hs*3eL~2(*`RtbJ;D@gPnQ50Ys1FG4-H
zptQYSX>Zl!NxQo4-~_cTm|hf<g2Wb7so@O@w^}N^Y;iDy8N~o();dbtP&Cp@B%y0g
zYb1#qDl}1^E}PZrSzEcd6;;GT%0zCtT~Byu+pNzLmMw(VDJw}@N%77S=>njcv=fkl
zfK*|#IpFZguUJ(~?@lemo0%8q+-(IAwg<>|UJkW7R@V+LUt<s46WM??su+4|DPL9z
zmmoJbAm3D94`+*ohkz#^J<8xtP<G9_z=fAH{tY7H;hZAk;T$63;Zv%I*q!v?TLyX9
z#vBiyLQdcg_ID@UZ%+|w*uqy2TkKvKC05VqOS#f2V;*t`EsATKh<O;S>a*DNVc^hG
z#DE}9o?yF=4evaku;~}0TV~5o{Dgpwahc3wq2`8!+r1Vc6uBez0Da^3QFi_ga6!;a
z07(m2e=rbVBPTCvaA977<KG+~F0g8mQw0yz#7?8u%^;=PXnY#3;ZEbu1)^9t6NF40
zcH1#yg*Gj6x(eBpc@HzGDEv*F5Da7dVEBR~k=UYsLU!v{&(~TRJO_elAb91Kn79=A
zc0injia_4+7Q0;Q!||6=A@0%~y|p_~v3Qm!Q1}PhBRs6BpxYbjvJ0!Q++X2p;chta
z2S%uaDR=_s^uqNBffN|y<;jOh>gA+Op)gbvCpa8~L6JEt*{$Qz80XBut(g1(YVzT}
zj+Q%q)%Y8u3z8uW?=2Kfa;olg6*u{w+O{Aiqyzx95yrz?Y%n*1%*a=@<|NhXpI~hZ
zfb^(H*12-#x36lUqT`(Qing{XlZOQ^UleVH(;`r@L`rnoTmt6!Z??1sC_0CVg|?V+
zoGj=I^2>LDfhAJ}Ze03t@QHZ4oVXOIXY}n*%gj<g9Wj{7o4qY$XyX376gZ-HigoXx
zcO-7C;Ok%%$qQZ%kS8>^j(F3^y<jGh)9fxFlk39-C7!_M4FwLzdKs)Kd4a|by{omU
z`gsO3Oa)y&vsX&B?5{T-U_@dcQX^3~W1q*at{^*MCG}6&U|Oo(k$T?8Y$1l6fXlud
zG-L*tyh=8r8GYd{K_(o$m>dHZEQUq5Vb#gdvq)iwapXW694N~@R~GocKxD%81b3re
z!efN%ab7oL$}Zzj=!1+Pub=TF``<)FORWY2);FpLM8AiI5|B6R)Bv6Mt>>9poi<HC
z)^ONapqP7?iC|4?ojodGPq>@c)uLnaxN>lglGDIex!}slpl5?4U1dW)3tkWe9df|6
zEIyqaPrII+AyTSgzTbCGX{!R|(-McvO2!gq<_f`N!E#SM?rxs(_T`_b!@d&VE8hQg
zA2C0YgNeq{E&ztqfdKfb))UuyAL`58AOa!-j8`^cG5}reCzR<JzQXOeaE!g5jf4I-
zk6V@@Q7|5+^~Y;4<!(%86wLOIv8@UR*9zdNuIF6!;HQRU%!eo(^wI~SwSo3I@T`i$
zMitdUp&n7wYc!*bZiQo=bG>%}%A&wTf^=rYIH3Pl-ej1q9ssgOVaiQiU<^r_wOyZi
zK;gS-7k8t%Ac}-}){;i;8LNl&BU?6r##Xz%l@0r?27SevE+|Z$cTP4Bra9RJbHnic
zU^wI{`03~jhc(?^HcJ6tE&mo?HV5Y)=rTDvs+H1ul9+~JTw(4h9v-&s*bs%j1-9U9
zUXsMa(?+D3BaNkPizS2VbR6<6m)|)g37$sSF8o2m7U^zf9VyGF-<`;?t|>M+CNW@J
zLgu*Reb_QL1Ev%`s`=V1C0ck8(N#Yzkg0#*HX=EnxT4@R)=p)>U<wiKV9Kg#?AmTo
z6zS4jF_-_}+OD>{ts6Nf?S2VA_7~hJ+fyqW>V=lQN^+c-qG*S;L~1F@X`0Q^p=e5G
z^g=C3#qys1nEudy=<_@S;Ns$5Qc6#kC$UJp41mF4Fc{1XmNL0m%8t20m0mi@cSlg1
zrjv{c7Df&h9XO>%<RdXpo;Lj1H34!lo8scW$Q{wC3RdTQaA8B_?^B*^L$&6P#0l7k
zIT|ohW@(V?mVHXB>31<UgIa>I&dqwI#UbPybgIbU2yB^fEV422)O{^Ww`jA(=R7~j
zaqnco5<Ws@NtC{kA~6JglCS-cUJ1?m?TO1%NC^mz&kKHh)$5{Kr!-u?EE?6D|8^tA
zn&F&UK0GJBo9wM9o~m#(Mg9Gwes9oj4PcaZ)cY!Xb<)&7r`@;da%vPAmEjG`N&5c+
zaW@{hIF>BA#&=qBeqww>mgshvqU3<lJz_ZpHB6+sg|Wo4PoN^dJ%!nRjGSOlOE4a{
zoZt*n()VIHIb~__vfs$95wx^r!l)J-!g30;Raz1bGhq<Xa!QGzRQJK<6sAnu%tOnm
zQF$se8MeI3l-MQ>n8GlU`E-nYy_VkFEve$Guh*~@kBbrtb^ttEXucs&TtP(qlFT)S
zQc?CkspOTC<FbxcT<Vd08LnQ=C}wC^Mb4EF9k{r4?k$yNbw^so<l@$4-TZBB`>f&|
zBP&d}|KYh*T6mUtT9Tjeww#%z<tEoS-sPKfnw=kP{YfJ&aXbA$_h&P4UEa=0_L9J?
zou{_Ts7)<3?!$f?*U=&b1bnE}gJ+Tqn&h`of>W~O5*)hr<xn02r{vioIB4$X-5Gpc
zU56g*4=i#MMXBIiO%c^6`aB2+L|X;N?B#Pn55mC_r3#MF2rtSdnbX^%Se0NsZ{K}`
zRUV&G`XV=l|2_QQ)qRNXr=5uS|B}OES_Aw%NlF$G_^cEy2yDp{(vCM{EDhKt@Je-Z
zj!-&NceuKloSj`+Y_Vl^e7eJ#sWQ`U6_%VGGFWfLj*&uetMP%IBdJxngH(%S2pXOc
z7H$OQ<MCygZy_<kbHqfL=~)mAr~L7Rkaz<go47|Md428VDV1E!d)TYOe#bi670!ms
zNfw(1vLB>Mf{I8{)4NQrSG%M_j;>@)XcpQw?u^m`r<?ySyPFlb3K_b3#)2l+A&yGF
zVO@@~(j`h|8PFQ%-i(L!5!^N-WmcR`qdcGQ=P%BuqH>8YH19%jf_MuUf$(dl@Ha9g
zpymLtM^GSi#++8t8wW9LHEad37%H>35W11sGT#53_X7I4LtFmO_3i|7ckQRbzR>u6
z!>+y-3?qldEZYGI0SZ*BGidKs25;xyo3%p65fiAp-+Ki|YJ99nzuoG+ZTH*z8QzRm
zX)7Yp+lq91gRI|f?*9~kSrP0w9?D^RzjJa(5IqCp8rsQ={Lt+0|JdxeLp!d>v%E;>
z;Gq4wd4R_La?(B?pgC(ucd^!&lP=;YHV1=tchKqKnL=OW&pDL+=AfCmgOl~xpzP*F
z_70leH(Be4cFQBkihP|HdCQc3c6`)sbzXH^p)XXBJJhv$M?YoFy<UIN-j5qP%Zs>N
zFs#GFW|yU`A#KSvqPM++lf!n#NqBY8`!N*J>nK*_uyYImM?ju66QF?jTwhMQZ@Rr7
zg%Gxmk2M4vO%Vkml#Z!VlwkmZkn#uA+N34DF9tta5EH2hKk2~;)jw#OZpE&J*S($_
zrNMXqS~FW97wfB#N(Q~(@iUb71`o9OV!l9j*ycnRp<${F+TO`=PIbPJ9~=AyU9o=q
zxZQu-WP@z_)j_9~QxCLSuGpY?{3bhY4{(q^I7k~s&|X)p*=lCZ)}Zq?pj$25ND+`B
zhE|yVs2KTz4WT?UQL%@o2a!vj)*F}@#1h2unt=lr{A)r#Tpns?n5XPzwo>kaxIkwV
z7f?(!pmtoya2F0+j3v41LumuI_vnj?$^#!E`Lm5#*1&r>q$LjcYx=q&P#I7uVv{o^
zu7UjLukeAwFc9WLa1dY=MrI4x*ULbJn~-{j{b%V%HcEQVjzx`vgDIk?VN)i_NZp?Y
z^D~m^RTWyGsufx%pWR)Ar~^{ZQW0NOxR~a!1kJK{$&({r1E}FW8g9sVjq9$ZidFRs
zvGRZqn9L+vP^VQv{mpC-Zm^g2W7yvt975g91~L|JIkRNsm|FYGibm2TSSSv!Mu-`K
z>r=Bi_vqA=QY)TEM*=s1J6rrgb-fXVXrV*iwcE`FMc7i!P29oB<tE8O|I-f?SGoX!
z)_*vGTi}f1;o`$Idk6JDZnieus=(j}d-+1n!MLgLy;9hQ`}_Nij~|O3$6;v8#&t2d
zST(M!a!}c3+{4%99=h&%;16^UeJdhVt>%N}A=75zdVFENlWrPlha9k7?A2k?E7v7L
zFq;X)U|52&Ww^SWT){iMiU?9P6}xh|w`Q{fR)HDK_Gq)=NH{oU=MHci-b&vucV6Wf
zKg4@|Vm!nRpGL5Ncq%84^EJ`5udi$Dl4Ap;Ep3wd-F2Zn6t(o6%H0_tvqj}A%Lc!N
zY)55luAgFGQrt+8WndL<!Qxdux@A$wF0w5JwX`Jjh?x86CdFFhgw;9ztmcTx%#~p*
z7~Se>MoC22_>xnai%Q}u1LO43$17xbiDZUL8&jZYCBy6xcj(#M=D|tZ?049*L=Im&
z{FP@i;#i+s<Q0XcL6@MN@{)Q1QKb+y0Z{%0Amv}IrUkZ6u!@qTPI!D(^a=}uTc;vb
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
delta 63814
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
diff --git a/roms/SLOF b/roms/SLOF
index b94bde0..32e3430 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit b94bde008b0d49ec4bfe933e110d0952d032ac28
+Subproject commit 32e3430c018ceb8413cb808477449d1968c42497
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (9 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host Alexander Graf
` (14 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
The ppc target contains a ppc_find_by_pvr() function, which looks up a
CPU spec based on a PVR (that is, based on the value in the target cpu's
Processor Version Register). PVR values contain information on both the
cpu model (upper 16 bits, usually) and on the precise revision (low 16
bits, usually).
ppc_find_by_pvr, as well as making exact PVR matches, attempts to find
"close" PVR matches, when we don't have a CPU spec for the exact revision
specified. This sounds like a good idea, execpt that the current logic
is completely nonsensical.
It seems to assume CPU families are subdivided bit by bit in the PVR in a
way they just aren't. Specifically, it requires a match on all bits of the
specified pvr up to the last non-zero bit. This has the bizarre effect
that when the low bits are simply a sequential revision number (a common
though not universal pattern), then odd specified revisions must be matched
exactly, whereas even specified revisions will also match the next odd
revision, likewise for powers of 4, 8 and so forth.
To correctly do inexact matching we'd need to re-organize the table of CPU
specs to include a mask showing what PVR range the spec is compatible with
(similar to the cputable code in the Linux kernel).
For now, just remove the bogosity by only permitting exact PVR matches.
That at least makes the matching simple and consistent. If we need inexact
matching we can add the necessary per-subfamily masks later.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate_init.c | 38 +++++++-------------------------------
1 files changed, 7 insertions(+), 31 deletions(-)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index ca0d852..73b49cf 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -10043,40 +10043,16 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def)
static const ppc_def_t *ppc_find_by_pvr (uint32_t pvr)
{
- const ppc_def_t *ret;
- uint32_t pvr_rev;
- int i, best, match, best_match, max;
+ int i;
- ret = NULL;
- max = ARRAY_SIZE(ppc_defs);
- best = -1;
- pvr_rev = pvr & 0xFFFF;
- /* We want all specified bits to match */
- best_match = 32 - ctz32(pvr_rev);
- for (i = 0; i < max; i++) {
- /* We check that the 16 higher bits are the same to ensure the CPU
- * model will be the choosen one.
- */
- if (((pvr ^ ppc_defs[i].pvr) >> 16) == 0) {
- /* We want as much as possible of the low-level 16 bits
- * to be the same but we allow inexact matches.
- */
- match = clz32(pvr_rev ^ (ppc_defs[i].pvr & 0xFFFF));
- /* We check '>=' instead of '>' because the PPC_defs table
- * is ordered by increasing revision.
- * Then, we will match the higher revision compatible
- * with the requested PVR
- */
- if (match >= best_match) {
- best = i;
- best_match = match;
- }
+ for (i = 0; i < ARRAY_SIZE(ppc_defs); i++) {
+ /* If we have an exact match, we're done */
+ if (pvr == ppc_defs[i].pvr) {
+ return &ppc_defs[i];
}
}
- if (best != -1)
- ret = &ppc_defs[best];
- return ret;
+ return NULL;
}
#include <ctype.h>
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (10 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 Alexander Graf
` (13 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
For convenience with kvm, x86 allows the user to specify -cpu host on the
qemu command line, which means make the guest cpu the same as the host
cpu. This patch implements the same option for ppc targets.
For now, this just read the host PVR (Processor Version Register) and
selects one of our existing CPU specs based on it. This means that the
option will not work if the host cpu is not supported by TCG, even if that
wouldn't matter for use under kvm.
In future, we can extend this in future to override parts of the cpu spec
based on information obtained from the host (via /proc/cpuinfo, the host
device tree, or explicit KVM calls). That will let us handle cases where
the real kvm-virtualized CPU doesn't behave exactly like the TCG-emulated
CPU. With appropriate annotation of the CPU specs we'll also then be able
to use host cpus under kvm even when there isn't a matching full TCG model.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/cpu.h | 1 +
target-ppc/kvm.c | 19 +++++++++++++++++++
target-ppc/kvm_ppc.h | 6 ++++++
target-ppc/translate_init.c | 8 +++++++-
4 files changed, 33 insertions(+), 1 deletions(-)
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 3f77e30..8e5c85c 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -1107,6 +1107,7 @@ void ppc_store_msr (CPUPPCState *env, target_ulong value);
void ppc_cpu_list (FILE *f, fprintf_function cpu_fprintf);
+const ppc_def_t *ppc_find_by_pvr(uint32_t pvr);
const ppc_def_t *cpu_ppc_find_by_name (const char *name);
int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def);
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 96139ac..313c7b2 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -879,6 +879,25 @@ int kvmppc_remove_spapr_tce(void *table, int fd, uint32_t window_size)
return 0;
}
+static inline uint32_t mfpvr(void)
+{
+ uint32_t pvr;
+
+ asm ("mfpvr %0"
+ : "=r"(pvr));
+ return pvr;
+}
+
+const ppc_def_t *kvmppc_host_cpu_def(void)
+{
+ uint32_t host_pvr = mfpvr();
+ const ppc_def_t *base_spec;
+
+ base_spec = ppc_find_by_pvr(host_pvr);
+
+ return base_spec;
+}
+
bool kvm_arch_stop_on_emulation_error(CPUState *env)
{
return true;
diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h
index 955729a..b0d6fb6 100644
--- a/target-ppc/kvm_ppc.h
+++ b/target-ppc/kvm_ppc.h
@@ -26,6 +26,7 @@ int kvmppc_smt_threads(void);
off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem);
void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd);
int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size);
+const ppc_def_t *kvmppc_host_cpu_def(void);
#else
@@ -85,6 +86,11 @@ static inline int kvmppc_remove_spapr_tce(void *table, int pfd,
return -1;
}
+static inline const ppc_def_t *kvmppc_host_cpu_def(void)
+{
+ return NULL;
+}
+
#endif
#ifndef CONFIG_KVM
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 73b49cf..62f0a6b 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -24,6 +24,8 @@
#include "dis-asm.h"
#include "gdbstub.h"
+#include <kvm.h>
+#include "kvm_ppc.h"
//#define PPC_DUMP_CPU
//#define PPC_DEBUG_SPR
@@ -10041,7 +10043,7 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def)
return 0;
}
-static const ppc_def_t *ppc_find_by_pvr (uint32_t pvr)
+const ppc_def_t *ppc_find_by_pvr(uint32_t pvr)
{
int i;
@@ -10063,6 +10065,10 @@ const ppc_def_t *cpu_ppc_find_by_name (const char *name)
const char *p;
int i, max, len;
+ if (kvm_enabled() && (strcasecmp(name, "host") == 0)) {
+ return kvmppc_host_cpu_def();
+ }
+
/* Check if the given name is a PVR */
len = strlen(name);
if (len == 10 && name[0] == '0' && name[1] == 'x') {
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (11 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default Alexander Graf
` (12 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
This patch adds cpu specs to the table for POWER7 revisions 2.1 and 2.3.
This allows -cpu host to be used on these host cpus.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate_init.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 62f0a6b..7de097d 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -7333,6 +7333,8 @@ enum {
CPU_POWERPC_POWER6A = 0x0F000002,
#define CPU_POWERPC_POWER7 CPU_POWERPC_POWER7_v20
CPU_POWERPC_POWER7_v20 = 0x003F0200,
+ CPU_POWERPC_POWER7_v21 = 0x003F0201,
+ CPU_POWERPC_POWER7_v23 = 0x003F0203,
CPU_POWERPC_970 = 0x00390202,
#define CPU_POWERPC_970FX CPU_POWERPC_970FX_v31
CPU_POWERPC_970FX_v10 = 0x00391100,
@@ -9139,6 +9141,8 @@ static const ppc_def_t ppc_defs[] = {
/* POWER7 */
POWERPC_DEF("POWER7", CPU_POWERPC_POWER7, POWER7),
POWERPC_DEF("POWER7_v2.0", CPU_POWERPC_POWER7_v20, POWER7),
+ POWERPC_DEF("POWER7_v2.1", CPU_POWERPC_POWER7_v21, POWER7),
+ POWERPC_DEF("POWER7_v2.3", CPU_POWERPC_POWER7_v23, POWER7),
/* PowerPC 970 */
POWERPC_DEF("970", CPU_POWERPC_970, 970),
/* PowerPC 970FX (G5) */
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (12 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space Alexander Graf
` (11 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
Now that we've implemented -cpu host for ppc, this patch updates the
pseries machine to use the host cpu as the guest cpu by default when
running under KVM. This is important because under KVM Book3S-HV the guest
cpu _cannot_ be of a different type to the host cpu (at the moment
KVM Book3S-HV will silently virtualize the host cpu instead of whatever was
requested, but in future it is likely to simply refuse to run the VM if
a cpu model other than the host's is requested).
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/spapr.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/hw/spapr.c b/hw/spapr.c
index 4d2a55e..08c7399 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -406,7 +406,7 @@ static void ppc_spapr_init(ram_addr_t ram_size,
/* init CPUs */
if (cpu_model == NULL) {
- cpu_model = "POWER7";
+ cpu_model = kvm_enabled() ? "host" : "POWER7";
}
for (i = 0; i < smp_cpus; i++) {
env = cpu_init(cpu_model);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (13 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target Alexander Graf
` (10 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc
Some 32-bit PPC CPUs can use up to 36 bit of physical address space.
Treat them accordingly in the qemu-system-ppc binary type.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
configure | 2 +-
target-ppc/cpu.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index 4f87e0a..f8dd4db 100755
--- a/configure
+++ b/configure
@@ -3309,7 +3309,7 @@ case "$target_arch2" in
;;
ppc)
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
- target_phys_bits=32
+ target_phys_bits=64
target_nptl="yes"
target_libs_softmmu="$fdt_libs"
;;
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 8e5c85c..f36f375 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -66,7 +66,7 @@
#define TARGET_PAGE_BITS 12
#endif /* defined(TARGET_PPCEMB) */
-#define TARGET_PHYS_ADDR_SPACE_BITS 32
+#define TARGET_PHYS_ADDR_SPACE_BITS 36
#define TARGET_VIRT_ADDR_SPACE_BITS 32
#endif /* defined (TARGET_PPC64) */
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (14 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits Alexander Graf
` (9 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc
The sole reason we have the ppcemb target is to support MMUs that have
less than the usual 4k possible page size. There are very few of these
chips and I don't want to add additional QA and testing burden to everyone
to ensure that code still works when TARGET_PAGE_SIZE is not 4k.
So this patch disables all CPUs except for MMU_BOOKE capable ones from
the ppcemb target.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate_init.c | 24 ++++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 7de097d..f0ae1d1 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -10047,11 +10047,27 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def)
return 0;
}
+static bool ppc_cpu_usable(const ppc_def_t *def)
+{
+#if defined(TARGET_PPCEMB)
+ /* When using the ppcemb target, we only support 440 style cores */
+ if (def->mmu_model != POWERPC_MMU_BOOKE) {
+ return false;
+ }
+#endif
+
+ return true;
+}
+
const ppc_def_t *ppc_find_by_pvr(uint32_t pvr)
{
int i;
for (i = 0; i < ARRAY_SIZE(ppc_defs); i++) {
+ if (!ppc_cpu_usable(&ppc_defs[i])) {
+ continue;
+ }
+
/* If we have an exact match, we're done */
if (pvr == ppc_defs[i].pvr) {
return &ppc_defs[i];
@@ -10091,6 +10107,10 @@ const ppc_def_t *cpu_ppc_find_by_name (const char *name)
ret = NULL;
max = ARRAY_SIZE(ppc_defs);
for (i = 0; i < max; i++) {
+ if (!ppc_cpu_usable(&ppc_defs[i])) {
+ continue;
+ }
+
if (strcasecmp(name, ppc_defs[i].name) == 0) {
ret = &ppc_defs[i];
break;
@@ -10106,6 +10126,10 @@ void ppc_cpu_list (FILE *f, fprintf_function cpu_fprintf)
max = ARRAY_SIZE(ppc_defs);
for (i = 0; i < max; i++) {
+ if (!ppc_cpu_usable(&ppc_defs[i])) {
+ continue;
+ }
+
(*cpu_fprintf)(f, "PowerPC %-16s PVR %08x\n",
ppc_defs[i].name, ppc_defs[i].pvr);
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (15 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf
` (8 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, Anton Blanchard, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
In __cpu_ppc_store_decr(), we set up a regular timer used to trigger
decrementer interrupts. This is necessary to implement the decrementer
properly under TCG, but is unnecessary under KVM (true for both Book3S-PR
and Book3S-HV KVM variants), because the kernel handles generating and
delivering decrementer exceptions.
Under kvm, in fact, the timer causes expensive and unnecessary exits from
kvm to qemu. This patch, therefore, disables setting the timer when kvm
is in use.
Signed-off-by: Anton Blanchard <anton@au1.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/hw/ppc.c b/hw/ppc.c
index 25b59dd..d29af0b 100644
--- a/hw/ppc.c
+++ b/hw/ppc.c
@@ -662,6 +662,12 @@ static void __cpu_ppc_store_decr (CPUState *env, uint64_t *nextp,
LOG_TB("%s: %08" PRIx32 " => %08" PRIx32 "\n", __func__,
decr, value);
+
+ if (kvm_enabled()) {
+ /* KVM handles decrementer exceptions, we don't need our own timer */
+ return;
+ }
+
now = qemu_get_clock_ns(vm_clock);
next = now + muldiv64(value, get_ticks_per_sec(), tb_env->decr_freq);
if (is_excp) {
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (16 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-11-01 19:28 ` Blue Swirl
2011-10-30 20:23 ` [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases Alexander Graf
` (7 subsequent siblings)
25 siblings, 1 reply; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc
We have several targets in the PPC tree now that basically require libfdt
to function properly, namely the pseries and the e500 targets. This dependency
will rather increase than decrease in the future, so I want to make sure
that people building shiny new 1.0 actually have libfdt installed to get
rid of a few ifdefs in the code.
Warning: This patch will likely make configure fail for people who don't
select their own --target-list, but don't have libfdt development packages
installed. However, we really need this new dependency to move on.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
v1 -> v2:
- no paranthesis
- no fdt check for config_pseries
- add . in error message
---
configure | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/configure b/configure
index f8dd4db..18537e8 100755
--- a/configure
+++ b/configure
@@ -3422,7 +3422,16 @@ case "$target_arch2" in
fi
fi
esac
-if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
+if test "$fdt" != "yes" && test "$target_arch2" = "ppc" -o \
+ "$target_arch2" = "ppc64" -o "$target_arch2" = "ppcemb"; then
+ echo
+ echo "Error: libfdt missing"
+ echo "The PowerPC target requires libfdt to work properly."
+ echo "Please make sure to have it and its development packages installed."
+ echo
+ exit 1
+fi
+if test "$target_arch2" = "ppc64"; then
echo "CONFIG_PSERIES=y" >> $config_target_mak
fi
if test "$target_bigendian" = "yes" ; then
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (17 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds Alexander Graf
` (6 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
Currently, when KVM is enabled, the pseries machine checks if the host
CPU supports VMX, VSX and/or DFP instructions and advertises
accordingly in the guest device tree. It does this regardless of what
CPU is selected on the command line. On the other hand, when in TCG
mode, it never advertises any of these facilities, even basic VMX
(Altivec) which is supported in TCG.
Now that we have a -cpu host option for ppc, it is fairly
straightforward to fix both problems. This patch changes the -cpu
host code to override the basic cpu spec derived from the PVR with
information queried from the host avout VMX, VSX and DFP capability.
The pseries code then uses the instruction availability advertised in
the cpu state to set the guest device tree correctly for both the KVM
and TCG cases.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/spapr.c | 10 +++++-----
target-ppc/cpu.h | 20 ++++++++++++++++++++
target-ppc/kvm.c | 23 ++++++++++++++++++++++-
target-ppc/translate_init.c | 18 ++----------------
4 files changed, 49 insertions(+), 22 deletions(-)
diff --git a/hw/spapr.c b/hw/spapr.c
index 08c7399..933af32 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -188,8 +188,6 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
0xffffffff, 0xffffffff};
uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : TIMEBASE_FREQ;
uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 1000000000;
- uint32_t vmx = kvm_enabled() ? kvmppc_get_vmx() : 0;
- uint32_t dfp = kvm_enabled() ? kvmppc_get_dfp() : 0;
if ((index % smt) != 0) {
continue;
@@ -241,15 +239,17 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
* 0 / no property == no vector extensions
* 1 == VMX / Altivec available
* 2 == VSX available */
- if (vmx) {
+ if (env->insns_flags & PPC_ALTIVEC) {
+ uint32_t vmx = (env->insns_flags2 & PPC2_VSX) ? 2 : 1;
+
_FDT((fdt_property_cell(fdt, "ibm,vmx", vmx)));
}
/* Advertise DFP (Decimal Floating Point) if available
* 0 / no property == no DFP
* 1 == DFP available */
- if (dfp) {
- _FDT((fdt_property_cell(fdt, "ibm,dfp", dfp)));
+ if (env->insns_flags2 & PPC2_DFP) {
+ _FDT((fdt_property_cell(fdt, "ibm,dfp", 1)));
}
_FDT((fdt_end_node(fdt)));
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index f36f375..3ef4eba 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -858,6 +858,22 @@ enum {
/* The whole PowerPC CPU context */
#define NB_MMU_MODES 3
+struct ppc_def_t {
+ const char *name;
+ uint32_t pvr;
+ uint32_t svr;
+ uint64_t insns_flags;
+ uint64_t insns_flags2;
+ uint64_t msr_mask;
+ powerpc_mmu_t mmu_model;
+ powerpc_excp_t excp_model;
+ powerpc_input_t bus_model;
+ uint32_t flags;
+ int bfd_mach;
+ void (*init_proc)(CPUPPCState *env);
+ int (*check_pow)(CPUPPCState *env);
+};
+
struct CPUPPCState {
/* First are the most commonly used resources
* during translated code execution
@@ -1844,6 +1860,10 @@ enum {
/* BookE 2.06 PowerPC specification */
PPC2_BOOKE206 = 0x0000000000000001ULL,
+ /* VSX (extensions to Altivec / VMX) */
+ PPC2_VSX = 0x0000000000000002ULL,
+ /* Decimal Floating Point (DFP) */
+ PPC2_DFP = 0x0000000000000004ULL,
};
/*****************************************************************************/
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 313c7b2..a090d79 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -888,14 +888,35 @@ static inline uint32_t mfpvr(void)
return pvr;
}
+static void alter_insns(uint64_t *word, uint64_t flags, bool on)
+{
+ if (on) {
+ *word |= flags;
+ } else {
+ *word &= ~flags;
+ }
+}
+
const ppc_def_t *kvmppc_host_cpu_def(void)
{
uint32_t host_pvr = mfpvr();
const ppc_def_t *base_spec;
+ ppc_def_t *spec;
+ uint32_t vmx = kvmppc_get_vmx();
+ uint32_t dfp = kvmppc_get_dfp();
base_spec = ppc_find_by_pvr(host_pvr);
- return base_spec;
+ spec = g_malloc0(sizeof(*spec));
+ memcpy(spec, base_spec, sizeof(*spec));
+
+ /* Now fix up the spec with information we can query from the host */
+
+ alter_insns(&spec->insns_flags, PPC_ALTIVEC, vmx > 0);
+ alter_insns(&spec->insns_flags2, PPC2_VSX, vmx > 1);
+ alter_insns(&spec->insns_flags2, PPC2_DFP, dfp);
+
+ return spec;
}
bool kvm_arch_stop_on_emulation_error(CPUState *env)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index f0ae1d1..4dfd7f3 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -34,22 +34,6 @@
#define TODO_USER_ONLY 1
#endif
-struct ppc_def_t {
- const char *name;
- uint32_t pvr;
- uint32_t svr;
- uint64_t insns_flags;
- uint64_t insns_flags2;
- uint64_t msr_mask;
- powerpc_mmu_t mmu_model;
- powerpc_excp_t excp_model;
- powerpc_input_t bus_model;
- uint32_t flags;
- int bfd_mach;
- void (*init_proc)(CPUPPCState *env);
- int (*check_pow)(CPUPPCState *env);
-};
-
/* For user-mode emulation, we don't emulate any IRQ controller */
#if defined(CONFIG_USER_ONLY)
#define PPC_IRQ_INIT_FN(name) \
@@ -6535,6 +6519,8 @@ static void init_proc_970MP (CPUPPCState *env)
PPC_64B | PPC_ALTIVEC | \
PPC_SEGMENT_64B | PPC_SLBI | \
PPC_POPCNTB | PPC_POPCNTWD)
+/* FIXME: Should also have PPC2_VSX and PPC2_DFP, but we don't
+ * implement those in TCG yet */
#define POWERPC_INSNS2_POWER7 (PPC_NONE)
#define POWERPC_MSRM_POWER7 (0x800000000204FF36ULL)
#define POWERPC_MMU_POWER7 (POWERPC_MMU_2_06)
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (18 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known Alexander Graf
` (5 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
The recent usage of MemoryRegion in kvm_ppc.h breaks builds with
CONFIG_USER_ONLY=y. This patch fixes it.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/kvm_ppc.h | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h
index b0d6fb6..f9c0198 100644
--- a/target-ppc/kvm_ppc.h
+++ b/target-ppc/kvm_ppc.h
@@ -23,9 +23,11 @@ int kvmppc_get_hypercall(CPUState *env, uint8_t *buf, int buf_len);
int kvmppc_set_interrupt(CPUState *env, int irq, int level);
void kvmppc_set_papr(CPUState *env);
int kvmppc_smt_threads(void);
+#ifndef CONFIG_USER_ONLY
off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem);
void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd);
int kvmppc_remove_spapr_tce(void *table, int pfd, uint32_t window_size);
+#endif /* !CONFIG_USER_ONLY */
const ppc_def_t *kvmppc_host_cpu_def(void);
#else
@@ -69,6 +71,7 @@ static inline int kvmppc_smt_threads(void)
return 1;
}
+#ifndef CONFIG_USER_ONLY
static inline off_t kvmppc_alloc_rma(const char *name, MemoryRegion *sysmem)
{
return 0;
@@ -85,6 +88,7 @@ static inline int kvmppc_remove_spapr_tce(void *table, int pfd,
{
return -1;
}
+#endif /* !CONFIG_USER_ONLY */
static inline const ppc_def_t *kvmppc_host_cpu_def(void)
{
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (19 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table Alexander Graf
` (4 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc
The -cpu host feature tries to find out the host capabilities based
on device tree information. However, we don't always have that available
because it's an optional property in dt.
So instead of force unsetting values depending on an unreliable source
of information, let's just try to be clever about it and not override
capabilities when we don't know the device tree pieces.
This fixes altivec with -cpu host on YDL PowerStations.
Reported-by: Nishanth Aravamudan <nacc@us.ibm.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/kvm.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index a090d79..f3d0861 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -912,9 +912,15 @@ const ppc_def_t *kvmppc_host_cpu_def(void)
/* Now fix up the spec with information we can query from the host */
- alter_insns(&spec->insns_flags, PPC_ALTIVEC, vmx > 0);
- alter_insns(&spec->insns_flags2, PPC2_VSX, vmx > 1);
- alter_insns(&spec->insns_flags2, PPC2_DFP, dfp);
+ if (vmx != -1) {
+ /* Only override when we know what the host supports */
+ alter_insns(&spec->insns_flags, PPC_ALTIVEC, vmx > 0);
+ alter_insns(&spec->insns_flags2, PPC2_VSX, vmx > 1);
+ }
+ if (dfp != -1) {
+ /* Only override when we know what the host supports */
+ alter_insns(&spec->insns_flags2, PPC2_DFP, dfp);
+ }
return spec;
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (20 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known Alexander Graf
@ 2011-10-30 20:23 ` Alexander Graf
2011-10-31 4:03 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (3 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-30 20:23 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
Sufficiently recent kernels include a KVM call to accelerate use of
PAPR TCE tables (IOMMU), which are used by PAPR virtual IO devices.
This involves qemu mapping the TCE table in from a kernel obtained fd,
which currently we do with PROT_READ only. This is a hangover from
early (never released) versions of this kernel interface which only
permitted read-only mappings and required us to destroy and recreate
the table when we needed to clear it from qemu.
Now, the kernel permits read-write mappings, and we rely on this to
clear the table in spapr_vio_quiesce_one(). However, due to
insufficient testing, I forgot to update the actual mapping of the
table in kvmppc_create_spapr_tce() to add PROT_WRITE to the mmap().
This patch corrects the oversight.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/kvm.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index f3d0861..429349f 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -850,7 +850,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd)
len = (window_size / SPAPR_VIO_TCE_PAGE_SIZE) * sizeof(VIOsPAPR_RTCE);
/* FIXME: round this up to page size */
- table = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0);
+ table = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
if (table == MAP_FAILED) {
close(fd);
return NULL;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (21 preceding siblings ...)
2011-10-30 20:23 ` [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table Alexander Graf
@ 2011-10-31 4:03 ` Alexander Graf
2011-10-31 4:12 ` [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate Alexander Graf
` (2 subsequent siblings)
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-31 4:03 UTC (permalink / raw)
To: Alexander Graf; +Cc: Blue Swirl, qemu-ppc, qemu-devel
On 30.10.2011, at 21:22, Alexander Graf wrote:
> Hi Blue,
>
> This is my current patch queue for ppc. Please pull.
>
> Alex
>
>
> The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e:
> Max Filippov (1):
> MAINTAINERS: update wiki URL and machine names for target-xtensa
>
> are available in the git repository at:
>
> git://repo.or.cz/qemu/agraf.git ppc-next
>
> Alexander Graf (4):
> PPC: Bump qemu-system-ppc to 64-bit physical address space
> PPC: Disable non-440 CPUs for ppcemb target
> PPC: Fail configure when libfdt is not available
> KVM: PPC: Override host vmx/vsx/dfp only when information known
>
> David Gibson (15):
> pseries: Support SMT systems for KVM Book3S-HV
> pseries: Allow KVM Book3S-HV on PPC970 CPUS
> pseries: Use Book3S-HV TCE acceleration capabilities
> pseries: Update SLOF firmware image
> ppc: Generalize the kvmppc_get_clockfreq() function
> pseries: Add device tree properties for VMX/VSX and DFP under kvm
> pseries: Update SLOF firmware image
> ppc: Remove broken partial PVR matching
> ppc: First cut implementation of -cpu host
> ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3
> pseries: Under kvm use guest cpu = host cpu by default
> ppc: Avoid decrementer related kvm exits
> pseries: Correct vmx/dfp handling in both KVM and TCG cases
> ppc: Fix up usermode only builds
> pseries: Allow writes to KVM accelerated TCE table
I added these patches in between as well:
ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate
pseries: Add partial support for PCI
Alex
^ permalink raw reply [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (22 preceding siblings ...)
2011-10-31 4:03 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
@ 2011-10-31 4:12 ` Alexander Graf
2011-10-31 4:12 ` [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI Alexander Graf
2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-31 4:12 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
The CPU state contains two bitmaps, initialized from the CPU spec
which describes which instructions are implemented on the CPU. A
couple of bits are defined which cover instructions (VSX and DFP)
which are not currently implemented in TCG. So far, these are only
used to handle the case of -cpu host because a KVM guest can use
the instructions when the host CPU supports them.
However, it's a mild layering violation to simply not include those
bits in the CPU descriptions for those CPUs that do support them,
just because we can't handle them in TCG. This patch corrects the
situation, so that the instruction bits _are_ shown correctly in the
cpu spec table, but are masked out from the cpu state in the non-KVM
case.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/cpu.h | 26 ++++++++++++++++++++++++++
target-ppc/translate_init.c | 20 +++++++++++++++++---
2 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 3ef4eba..e84108c 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -1856,6 +1856,30 @@ enum {
/* popcntw and popcntd instructions */
PPC_POPCNTWD = 0x8000000000000000ULL,
+#define PPC_TCG_INSNS (PPC_INSNS_BASE | PPC_POWER | PPC_POWER2 \
+ | PPC_POWER_RTC | PPC_POWER_BR | PPC_64B \
+ | PPC_64BX | PPC_64H | PPC_WAIT | PPC_MFTB \
+ | PPC_602_SPEC | PPC_ISEL | PPC_POPCNTB \
+ | PPC_STRING | PPC_FLOAT | PPC_FLOAT_EXT \
+ | PPC_FLOAT_FSQRT | PPC_FLOAT_FRES \
+ | PPC_FLOAT_FRSQRTE | PPC_FLOAT_FRSQRTES \
+ | PPC_FLOAT_FSEL | PPC_FLOAT_STFIWX \
+ | PPC_ALTIVEC | PPC_SPE | PPC_SPE_SINGLE \
+ | PPC_SPE_DOUBLE | PPC_MEM_TLBIA \
+ | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC \
+ | PPC_MEM_SYNC | PPC_MEM_EIEIO \
+ | PPC_CACHE | PPC_CACHE_ICBI \
+ | PPC_CACHE_DCBZ | PPC_CACHE_DCBZT \
+ | PPC_CACHE_DCBA | PPC_CACHE_LOCK \
+ | PPC_EXTERN | PPC_SEGMENT | PPC_6xx_TLB \
+ | PPC_74xx_TLB | PPC_40x_TLB | PPC_SEGMENT_64B \
+ | PPC_SLBI | PPC_WRTEE | PPC_40x_EXCP \
+ | PPC_405_MAC | PPC_440_SPEC | PPC_BOOKE \
+ | PPC_MFAPIDI | PPC_TLBIVA | PPC_TLBIVAX \
+ | PPC_4xx_COMMON | PPC_40x_ICBT | PPC_RFMCI \
+ | PPC_RFDI | PPC_DCR | PPC_DCRX | PPC_DCRUX \
+ | PPC_POPCNTWD)
+
/* extended type values */
/* BookE 2.06 PowerPC specification */
@@ -1864,6 +1888,8 @@ enum {
PPC2_VSX = 0x0000000000000002ULL,
/* Decimal Floating Point (DFP) */
PPC2_DFP = 0x0000000000000004ULL,
+
+#define PPC_TCG_INSNS2 (PPC2_BOOKE206)
};
/*****************************************************************************/
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 4dfd7f3..8a7233f 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -6519,9 +6519,7 @@ static void init_proc_970MP (CPUPPCState *env)
PPC_64B | PPC_ALTIVEC | \
PPC_SEGMENT_64B | PPC_SLBI | \
PPC_POPCNTB | PPC_POPCNTWD)
-/* FIXME: Should also have PPC2_VSX and PPC2_DFP, but we don't
- * implement those in TCG yet */
-#define POWERPC_INSNS2_POWER7 (PPC_NONE)
+#define POWERPC_INSNS2_POWER7 (PPC2_VSX | PPC2_DFP)
#define POWERPC_MSRM_POWER7 (0x800000000204FF36ULL)
#define POWERPC_MMU_POWER7 (POWERPC_MMU_2_06)
#define POWERPC_EXCP_POWER7 (POWERPC_EXCP_POWER7)
@@ -9848,6 +9846,22 @@ int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def)
env->bus_model = def->bus_model;
env->insns_flags = def->insns_flags;
env->insns_flags2 = def->insns_flags2;
+ if (!kvm_enabled()) {
+ /* TCG doesn't (yet) emulate some groups of instructions that
+ * are implemented on some otherwise supported CPUs (e.g. VSX
+ * and decimal floating point instructions on POWER7). We
+ * remove unsupported instruction groups from the cpu state's
+ * instruction masks and hope the guest can cope. For at
+ * least the pseries machine, the unavailability of these
+ * instructions can be advertise to the guest via the device
+ * tree.
+ *
+ * FIXME: we should have a similar masking for CPU features
+ * not accessible under KVM, but so far, there aren't any of
+ * those. */
+ env->insns_flags &= PPC_TCG_INSNS;
+ env->insns_flags2 &= PPC_TCG_INSNS2;
+ }
env->flags = def->flags;
env->bfd_mach = def->bfd_mach;
env->check_pow = def->check_pow;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (23 preceding siblings ...)
2011-10-31 4:12 ` [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate Alexander Graf
@ 2011-10-31 4:12 ` Alexander Graf
2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl
25 siblings, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-10-31 4:12 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl, Alexey Kardashevskiy, qemu-ppc, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
This patch adds a PCI bus to the pseries machine. This instantiates
the qemu generic PCI bus code, advertises a PCI host bridge in the
guest's device tree and implements the RTAS methods specified by PAPR
to access PCI config space. It also sets up the memory regions we
need to provide windows into the PCI memory and IO space, and
advertises those to the guest.
However, because qemu can't yet emulate an IOMMU, which is mandatory on
pseries, PCI devices which use DMA (i.e. most of them) will not work with
this code alone. Still, this is enough to support the virtio_pci device
(which probably _should_ use emulated PCI DMA, but is specced to use
direct hypervisor access to guest physical memory instead).
[agraf] remove typedef which could cause compile errors
Signed-off-by: Alexey Kardashevskiy <aik@au1.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
Makefile.target | 1 +
hw/spapr.c | 36 ++++-
hw/spapr.h | 2 +
hw/spapr_pci.c | 508 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
hw/spapr_pci.h | 61 +++++++
5 files changed, 604 insertions(+), 4 deletions(-)
create mode 100644 hw/spapr_pci.c
create mode 100644 hw/spapr_pci.h
diff --git a/Makefile.target b/Makefile.target
index fe5f6f7..2329df5 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -248,6 +248,7 @@ obj-ppc-y += ppc_newworld.o
# IBM pSeries (sPAPR)
obj-ppc-$(CONFIG_PSERIES) += spapr.o spapr_hcall.o spapr_rtas.o spapr_vio.o
obj-ppc-$(CONFIG_PSERIES) += xics.o spapr_vty.o spapr_llan.o spapr_vscsi.o
+obj-ppc-$(CONFIG_PSERIES) += spapr_pci.o device-hotplug.o pci-hotplug.o
# PowerPC 4xx boards
obj-ppc-y += ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
obj-ppc-y += ppc440.o ppc440_bamboo.o
diff --git a/hw/spapr.c b/hw/spapr.c
index 933af32..bdaa938 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -39,10 +39,12 @@
#include "hw/spapr.h"
#include "hw/spapr_vio.h"
+#include "hw/spapr_pci.h"
#include "hw/xics.h"
#include "kvm.h"
#include "kvm_ppc.h"
+#include "pci.h"
#include "exec-memory.h"
@@ -62,6 +64,11 @@
#define MAX_CPUS 256
#define XICS_IRQS 1024
+#define SPAPR_PCI_BUID 0x800000020000001ULL
+#define SPAPR_PCI_MEM_WIN_ADDR (0x10000000000ULL + 0xA0000000)
+#define SPAPR_PCI_MEM_WIN_SIZE 0x20000000
+#define SPAPR_PCI_IO_WIN_ADDR (0x10000000000ULL + 0x80000000)
+
#define PHANDLE_XICP 0x00001111
sPAPREnvironment *spapr;
@@ -146,6 +153,14 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
&end_prop, sizeof(end_prop))));
_FDT((fdt_property_string(fdt, "qemu,boot-device", boot_device)));
+ /*
+ * Because we don't always invoke any firmware, we can't rely on
+ * that to do BAR allocation. Long term, we should probably do
+ * that ourselves, but for now, this setting (plus advertising the
+ * current BARs as 0) causes sufficiently recent kernels to to the
+ * BAR assignment themselves */
+ _FDT((fdt_property_cell(fdt, "linux,pci-probe-only", 0)));
+
_FDT((fdt_end_node(fdt)));
/* memory node(s) */
@@ -308,6 +323,7 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr,
{
int ret;
void *fdt;
+ sPAPRPHBState *phb;
fdt = g_malloc(FDT_MAX_SIZE);
@@ -320,6 +336,15 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr,
exit(1);
}
+ QLIST_FOREACH(phb, &spapr->phbs, list) {
+ ret = spapr_populate_pci_devices(phb, PHANDLE_XICP, fdt);
+ }
+
+ if (ret < 0) {
+ fprintf(stderr, "couldn't setup PCI devices in fdt\n");
+ exit(1);
+ }
+
/* RTAS */
ret = spapr_rtas_device_tree_setup(fdt, rtas_addr, rtas_size);
if (ret < 0) {
@@ -478,6 +503,12 @@ static void ppc_spapr_init(ram_addr_t ram_size,
}
}
+ /* Set up PCI */
+ spapr_create_phb(spapr, "pci", SPAPR_PCI_BUID,
+ SPAPR_PCI_MEM_WIN_ADDR,
+ SPAPR_PCI_MEM_WIN_SIZE,
+ SPAPR_PCI_IO_WIN_ADDR);
+
for (i = 0; i < nb_nics; i++) {
NICInfo *nd = &nd_table[i];
@@ -488,10 +519,7 @@ static void ppc_spapr_init(ram_addr_t ram_size,
if (strcmp(nd->model, "ibmveth") == 0) {
spapr_vlan_create(spapr->vio_bus, 0x1000 + i, nd);
} else {
- fprintf(stderr, "pSeries (sPAPR) platform does not support "
- "NIC model '%s' (only ibmveth is supported)\n",
- nd->model);
- exit(1);
+ pci_nic_init_nofail(&nd_table[i], nd->model, NULL);
}
}
diff --git a/hw/spapr.h b/hw/spapr.h
index 6657c33..df88f6a 100644
--- a/hw/spapr.h
+++ b/hw/spapr.h
@@ -4,10 +4,12 @@
#include "hw/xics.h"
struct VIOsPAPRBus;
+struct sPAPRPHBState;
struct icp_state;
typedef struct sPAPREnvironment {
struct VIOsPAPRBus *vio_bus;
+ QLIST_HEAD(, sPAPRPHBState) phbs;
struct icp_state *icp;
target_phys_addr_t ram_limit;
diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
new file mode 100644
index 0000000..2a5e637
--- /dev/null
+++ b/hw/spapr_pci.c
@@ -0,0 +1,508 @@
+/*
+ * QEMU sPAPR PCI host originated from Uninorth PCI host
+ *
+ * Copyright (c) 2011 Alexey Kardashevskiy, IBM Corporation.
+ * Copyright (C) 2011 David Gibson, IBM Corporation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+#include "hw.h"
+#include "pci.h"
+#include "pci_host.h"
+#include "hw/spapr.h"
+#include "hw/spapr_pci.h"
+#include "exec-memory.h"
+#include <libfdt.h>
+
+#include "hw/pci_internals.h"
+
+static const uint32_t bars[] = {
+ PCI_BASE_ADDRESS_0, PCI_BASE_ADDRESS_1,
+ PCI_BASE_ADDRESS_2, PCI_BASE_ADDRESS_3,
+ PCI_BASE_ADDRESS_4, PCI_BASE_ADDRESS_5
+ /*, PCI_ROM_ADDRESS*/
+};
+
+static PCIDevice *find_dev(sPAPREnvironment *spapr,
+ uint64_t buid, uint32_t config_addr)
+{
+ DeviceState *qdev;
+ int devfn = (config_addr >> 8) & 0xFF;
+ sPAPRPHBState *phb;
+
+ QLIST_FOREACH(phb, &spapr->phbs, list) {
+ if (phb->buid != buid) {
+ continue;
+ }
+
+ QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) {
+ PCIDevice *dev = (PCIDevice *)qdev;
+ if (dev->devfn == devfn) {
+ return dev;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+static void rtas_ibm_read_pci_config(sPAPREnvironment *spapr,
+ uint32_t token, uint32_t nargs,
+ target_ulong args,
+ uint32_t nret, target_ulong rets)
+{
+ uint32_t val, size, addr;
+ uint64_t buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2);
+ PCIDevice *dev = find_dev(spapr, buid, rtas_ld(args, 0));
+
+ if (!dev) {
+ rtas_st(rets, 0, -1);
+ return;
+ }
+ size = rtas_ld(args, 3);
+ addr = rtas_ld(args, 0) & 0xFF;
+ val = pci_default_read_config(dev, addr, size);
+ rtas_st(rets, 0, 0);
+ rtas_st(rets, 1, val);
+}
+
+static void rtas_read_pci_config(sPAPREnvironment *spapr,
+ uint32_t token, uint32_t nargs,
+ target_ulong args,
+ uint32_t nret, target_ulong rets)
+{
+ uint32_t val, size, addr;
+ PCIDevice *dev = find_dev(spapr, 0, rtas_ld(args, 0));
+
+ if (!dev) {
+ rtas_st(rets, 0, -1);
+ return;
+ }
+ size = rtas_ld(args, 1);
+ addr = rtas_ld(args, 0) & 0xFF;
+ val = pci_default_read_config(dev, addr, size);
+ rtas_st(rets, 0, 0);
+ rtas_st(rets, 1, val);
+}
+
+static void rtas_ibm_write_pci_config(sPAPREnvironment *spapr,
+ uint32_t token, uint32_t nargs,
+ target_ulong args,
+ uint32_t nret, target_ulong rets)
+{
+ uint32_t val, size, addr;
+ uint64_t buid = ((uint64_t)rtas_ld(args, 1) << 32) | rtas_ld(args, 2);
+ PCIDevice *dev = find_dev(spapr, buid, rtas_ld(args, 0));
+
+ if (!dev) {
+ rtas_st(rets, 0, -1);
+ return;
+ }
+ val = rtas_ld(args, 4);
+ size = rtas_ld(args, 3);
+ addr = rtas_ld(args, 0) & 0xFF;
+ pci_default_write_config(dev, addr, val, size);
+ rtas_st(rets, 0, 0);
+}
+
+static void rtas_write_pci_config(sPAPREnvironment *spapr,
+ uint32_t token, uint32_t nargs,
+ target_ulong args,
+ uint32_t nret, target_ulong rets)
+{
+ uint32_t val, size, addr;
+ PCIDevice *dev = find_dev(spapr, 0, rtas_ld(args, 0));
+
+ if (!dev) {
+ rtas_st(rets, 0, -1);
+ return;
+ }
+ val = rtas_ld(args, 2);
+ size = rtas_ld(args, 1);
+ addr = rtas_ld(args, 0) & 0xFF;
+ pci_default_write_config(dev, addr, val, size);
+ rtas_st(rets, 0, 0);
+}
+
+static int pci_spapr_map_irq(PCIDevice *pci_dev, int irq_num)
+{
+ /*
+ * Here we need to convert pci_dev + irq_num to some unique value
+ * which is less than number of IRQs on the specific bus (now it
+ * is 16). At the moment irq_num == device_id (number of the
+ * slot?)
+ * FIXME: we should swizzle in fn and irq_num
+ */
+ return (pci_dev->devfn >> 3) % SPAPR_PCI_NUM_LSI;
+}
+
+static void pci_spapr_set_irq(void *opaque, int irq_num, int level)
+{
+ /*
+ * Here we use the number returned by pci_spapr_map_irq to find a
+ * corresponding qemu_irq.
+ */
+ sPAPRPHBState *phb = opaque;
+
+ qemu_set_irq(phb->lsi_table[irq_num].qirq, level);
+}
+
+static int spapr_phb_init(SysBusDevice *s)
+{
+ sPAPRPHBState *phb = FROM_SYSBUS(sPAPRPHBState, s);
+ int i;
+
+ /* Initialize the LSI table */
+ for (i = 0; i < SPAPR_PCI_NUM_LSI; i++) {
+ qemu_irq qirq;
+ uint32_t num;
+
+ qirq = spapr_allocate_irq(0, &num);
+ if (!qirq) {
+ return -1;
+ }
+
+ phb->lsi_table[i].dt_irq = num;
+ phb->lsi_table[i].qirq = qirq;
+ }
+
+ return 0;
+}
+
+static int spapr_main_pci_host_init(PCIDevice *d)
+{
+ return 0;
+}
+
+static PCIDeviceInfo spapr_main_pci_host_info = {
+ .qdev.name = "spapr-pci-host-bridge",
+ .qdev.size = sizeof(PCIDevice),
+ .init = spapr_main_pci_host_init,
+};
+
+static void spapr_register_devices(void)
+{
+ sysbus_register_dev("spapr-pci-host-bridge", sizeof(sPAPRPHBState),
+ spapr_phb_init);
+ pci_qdev_register(&spapr_main_pci_host_info);
+}
+
+device_init(spapr_register_devices)
+
+static uint64_t spapr_io_read(void *opaque, target_phys_addr_t addr,
+ unsigned size)
+{
+ switch (size) {
+ case 1:
+ return cpu_inb(addr);
+ case 2:
+ return cpu_inw(addr);
+ case 4:
+ return cpu_inl(addr);
+ }
+ assert(0);
+}
+
+static void spapr_io_write(void *opaque, target_phys_addr_t addr,
+ uint64_t data, unsigned size)
+{
+ switch (size) {
+ case 1:
+ cpu_outb(addr, data);
+ return;
+ case 2:
+ cpu_outw(addr, data);
+ return;
+ case 4:
+ cpu_outl(addr, data);
+ return;
+ }
+ assert(0);
+}
+
+static MemoryRegionOps spapr_io_ops = {
+ .endianness = DEVICE_LITTLE_ENDIAN,
+ .read = spapr_io_read,
+ .write = spapr_io_write
+};
+
+void spapr_create_phb(sPAPREnvironment *spapr,
+ const char *busname, uint64_t buid,
+ uint64_t mem_win_addr, uint64_t mem_win_size,
+ uint64_t io_win_addr)
+{
+ DeviceState *dev;
+ SysBusDevice *s;
+ sPAPRPHBState *phb;
+ PCIBus *bus;
+ char namebuf[strlen(busname)+11];
+
+ dev = qdev_create(NULL, "spapr-pci-host-bridge");
+ qdev_init_nofail(dev);
+ s = sysbus_from_qdev(dev);
+ phb = FROM_SYSBUS(sPAPRPHBState, s);
+
+ phb->mem_win_addr = mem_win_addr;
+
+ sprintf(namebuf, "%s-mem", busname);
+ memory_region_init(&phb->memspace, namebuf, INT64_MAX);
+
+ sprintf(namebuf, "%s-memwindow", busname);
+ memory_region_init_alias(&phb->memwindow, namebuf, &phb->memspace,
+ SPAPR_PCI_MEM_WIN_BUS_OFFSET, mem_win_size);
+ memory_region_add_subregion(get_system_memory(), mem_win_addr,
+ &phb->memwindow);
+
+ phb->io_win_addr = io_win_addr;
+
+ /* On ppc, we only have MMIO no specific IO space from the CPU
+ * perspective. In theory we ought to be able to embed the PCI IO
+ * memory region direction in the system memory space. However,
+ * if any of the IO BAR subregions use the old_portio mechanism,
+ * that won't be processed properly unless accessed from the
+ * system io address space. This hack to bounce things via
+ * system_io works around the problem until all the users of
+ * old_portion are updated */
+ sprintf(namebuf, "%s-io", busname);
+ memory_region_init(&phb->iospace, namebuf, SPAPR_PCI_IO_WIN_SIZE);
+ /* FIXME: fix to support multiple PHBs */
+ memory_region_add_subregion(get_system_io(), 0, &phb->iospace);
+
+ sprintf(namebuf, "%s-iowindow", busname);
+ memory_region_init_io(&phb->iowindow, &spapr_io_ops, phb,
+ namebuf, SPAPR_PCI_IO_WIN_SIZE);
+ memory_region_add_subregion(get_system_memory(), io_win_addr,
+ &phb->iowindow);
+
+ phb->host_state.bus = bus = pci_register_bus(&phb->busdev.qdev, busname,
+ pci_spapr_set_irq,
+ pci_spapr_map_irq,
+ phb,
+ &phb->memspace, &phb->iospace,
+ PCI_DEVFN(0, 0),
+ SPAPR_PCI_NUM_LSI);
+
+ spapr_rtas_register("read-pci-config", rtas_read_pci_config);
+ spapr_rtas_register("write-pci-config", rtas_write_pci_config);
+ spapr_rtas_register("ibm,read-pci-config", rtas_ibm_read_pci_config);
+ spapr_rtas_register("ibm,write-pci-config", rtas_ibm_write_pci_config);
+
+ QLIST_INSERT_HEAD(&spapr->phbs, phb, list);
+
+ /* pci_bus_set_mem_base(bus, mem_va_start - SPAPR_PCI_MEM_BAR_START); */
+}
+
+/* Macros to operate with address in OF binding to PCI */
+#define b_x(x, p, l) (((x) & ((1<<(l))-1)) << (p))
+#define b_n(x) b_x((x), 31, 1) /* 0 if relocatable */
+#define b_p(x) b_x((x), 30, 1) /* 1 if prefetchable */
+#define b_t(x) b_x((x), 29, 1) /* 1 if the address is aliased */
+#define b_ss(x) b_x((x), 24, 2) /* the space code */
+#define b_bbbbbbbb(x) b_x((x), 16, 8) /* bus number */
+#define b_ddddd(x) b_x((x), 11, 5) /* device number */
+#define b_fff(x) b_x((x), 8, 3) /* function number */
+#define b_rrrrrrrr(x) b_x((x), 0, 8) /* register number */
+
+static uint32_t regtype_to_ss(uint8_t type)
+{
+ if (type & PCI_BASE_ADDRESS_MEM_TYPE_64) {
+ return 3;
+ }
+ if (type == PCI_BASE_ADDRESS_SPACE_IO) {
+ return 1;
+ }
+ return 2;
+}
+
+int spapr_populate_pci_devices(sPAPRPHBState *phb,
+ uint32_t xics_phandle,
+ void *fdt)
+{
+ PCIBus *bus = phb->host_state.bus;
+ int bus_off, node_off = 0, devid, fn, i, n, devices;
+ DeviceState *qdev;
+ char nodename[256];
+ struct {
+ uint32_t hi;
+ uint64_t addr;
+ uint64_t size;
+ } __attribute__((packed)) reg[PCI_NUM_REGIONS + 1],
+ assigned_addresses[PCI_NUM_REGIONS];
+ uint32_t bus_range[] = { cpu_to_be32(0), cpu_to_be32(0xff) };
+ struct {
+ uint32_t hi;
+ uint64_t child;
+ uint64_t parent;
+ uint64_t size;
+ } __attribute__((packed)) ranges[] = {
+ {
+ cpu_to_be32(b_ss(1)), cpu_to_be64(0),
+ cpu_to_be64(phb->io_win_addr),
+ cpu_to_be64(memory_region_size(&phb->iospace)),
+ },
+ {
+ cpu_to_be32(b_ss(2)), cpu_to_be64(SPAPR_PCI_MEM_WIN_BUS_OFFSET),
+ cpu_to_be64(phb->mem_win_addr),
+ cpu_to_be64(memory_region_size(&phb->memwindow)),
+ },
+ };
+ uint64_t bus_reg[] = { cpu_to_be64(phb->buid), 0 };
+ uint32_t interrupt_map_mask[] = {
+ cpu_to_be32(b_ddddd(-1)|b_fff(-1)), 0x0, 0x0, 0x0};
+ uint32_t interrupt_map[bus->nirq][7];
+
+ /* Start populating the FDT */
+ sprintf(nodename, "pci@%" PRIx64, phb->buid);
+ bus_off = fdt_add_subnode(fdt, 0, nodename);
+ if (bus_off < 0) {
+ return bus_off;
+ }
+
+#define _FDT(exp) \
+ do { \
+ int ret = (exp); \
+ if (ret < 0) { \
+ return ret; \
+ } \
+ } while (0)
+
+ /* Write PHB properties */
+ _FDT(fdt_setprop_string(fdt, bus_off, "device_type", "pci"));
+ _FDT(fdt_setprop_string(fdt, bus_off, "compatible", "IBM,Logical_PHB"));
+ _FDT(fdt_setprop_cell(fdt, bus_off, "#address-cells", 0x3));
+ _FDT(fdt_setprop_cell(fdt, bus_off, "#size-cells", 0x2));
+ _FDT(fdt_setprop_cell(fdt, bus_off, "#interrupt-cells", 0x1));
+ _FDT(fdt_setprop(fdt, bus_off, "used-by-rtas", NULL, 0));
+ _FDT(fdt_setprop(fdt, bus_off, "bus-range", &bus_range, sizeof(bus_range)));
+ _FDT(fdt_setprop(fdt, bus_off, "ranges", &ranges, sizeof(ranges)));
+ _FDT(fdt_setprop(fdt, bus_off, "reg", &bus_reg, sizeof(bus_reg)));
+ _FDT(fdt_setprop(fdt, bus_off, "interrupt-map-mask",
+ &interrupt_map_mask, sizeof(interrupt_map_mask)));
+
+ /* Populate PCI devices and allocate IRQs */
+ devices = 0;
+ QLIST_FOREACH(qdev, &bus->qbus.children, sibling) {
+ PCIDevice *dev = DO_UPCAST(PCIDevice, qdev, qdev);
+ int irq_index = pci_spapr_map_irq(dev, 0);
+ uint32_t *irqmap = interrupt_map[devices];
+ uint8_t *config = dev->config;
+
+ devid = dev->devfn >> 3;
+ fn = dev->devfn & 7;
+
+ sprintf(nodename, "pci@%u,%u", devid, fn);
+
+ /* Allocate interrupt from the map */
+ if (devid > bus->nirq) {
+ printf("Unexpected behaviour in spapr_populate_pci_devices,"
+ "wrong devid %u\n", devid);
+ exit(-1);
+ }
+ irqmap[0] = cpu_to_be32(b_ddddd(devid)|b_fff(fn));
+ irqmap[1] = 0;
+ irqmap[2] = 0;
+ irqmap[3] = 0;
+ irqmap[4] = cpu_to_be32(xics_phandle);
+ irqmap[5] = cpu_to_be32(phb->lsi_table[irq_index].dt_irq);
+ irqmap[6] = cpu_to_be32(0x8);
+
+ /* Add node to FDT */
+ node_off = fdt_add_subnode(fdt, bus_off, nodename);
+ if (node_off < 0) {
+ return node_off;
+ }
+
+ _FDT(fdt_setprop_cell(fdt, node_off, "vendor-id",
+ pci_get_word(&config[PCI_VENDOR_ID])));
+ _FDT(fdt_setprop_cell(fdt, node_off, "device-id",
+ pci_get_word(&config[PCI_DEVICE_ID])));
+ _FDT(fdt_setprop_cell(fdt, node_off, "revision-id",
+ pci_get_byte(&config[PCI_REVISION_ID])));
+ _FDT(fdt_setprop_cell(fdt, node_off, "class-code",
+ pci_get_long(&config[PCI_CLASS_REVISION]) >> 8));
+ _FDT(fdt_setprop_cell(fdt, node_off, "subsystem-id",
+ pci_get_word(&config[PCI_SUBSYSTEM_ID])));
+ _FDT(fdt_setprop_cell(fdt, node_off, "subsystem-vendor-id",
+ pci_get_word(&config[PCI_SUBSYSTEM_VENDOR_ID])));
+
+ /* Config space region comes first */
+ reg[0].hi = cpu_to_be32(
+ b_n(0) |
+ b_p(0) |
+ b_t(0) |
+ b_ss(0/*config*/) |
+ b_bbbbbbbb(0) |
+ b_ddddd(devid) |
+ b_fff(fn));
+ reg[0].addr = 0;
+ reg[0].size = 0;
+
+ n = 0;
+ for (i = 0; i < PCI_NUM_REGIONS; ++i) {
+ if (0 == dev->io_regions[i].size) {
+ continue;
+ }
+
+ reg[n+1].hi = cpu_to_be32(
+ b_n(0) |
+ b_p(0) |
+ b_t(0) |
+ b_ss(regtype_to_ss(dev->io_regions[i].type)) |
+ b_bbbbbbbb(0) |
+ b_ddddd(devid) |
+ b_fff(fn) |
+ b_rrrrrrrr(bars[i]));
+ reg[n+1].addr = 0;
+ reg[n+1].size = cpu_to_be64(dev->io_regions[i].size);
+
+ assigned_addresses[n].hi = cpu_to_be32(
+ b_n(1) |
+ b_p(0) |
+ b_t(0) |
+ b_ss(regtype_to_ss(dev->io_regions[i].type)) |
+ b_bbbbbbbb(0) |
+ b_ddddd(devid) |
+ b_fff(fn) |
+ b_rrrrrrrr(bars[i]));
+
+ /*
+ * Writing zeroes to assigned_addresses causes the guest kernel to
+ * reassign BARs
+ */
+ assigned_addresses[n].addr = cpu_to_be64(dev->io_regions[i].addr);
+ assigned_addresses[n].size = reg[n+1].size;
+
+ ++n;
+ }
+ _FDT(fdt_setprop(fdt, node_off, "reg", reg, sizeof(reg[0])*(n+1)));
+ _FDT(fdt_setprop(fdt, node_off, "assigned-addresses",
+ assigned_addresses,
+ sizeof(assigned_addresses[0])*(n)));
+ _FDT(fdt_setprop_cell(fdt, node_off, "interrupts",
+ pci_get_byte(&config[PCI_INTERRUPT_PIN])));
+
+ ++devices;
+ }
+
+ /* Write interrupt map */
+ _FDT(fdt_setprop(fdt, bus_off, "interrupt-map", &interrupt_map,
+ devices * sizeof(interrupt_map[0])));
+
+ return 0;
+}
diff --git a/hw/spapr_pci.h b/hw/spapr_pci.h
new file mode 100644
index 0000000..213340c
--- /dev/null
+++ b/hw/spapr_pci.h
@@ -0,0 +1,61 @@
+/*
+ * QEMU SPAPR PCI BUS definitions
+ *
+ * Copyright (c) 2011 Alexey Kardashevskiy <aik@au1.ibm.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+#if !defined(__HW_SPAPR_H__)
+#error Please include spapr.h before this file!
+#endif
+
+#if !defined(__HW_SPAPR_PCI_H__)
+#define __HW_SPAPR_PCI_H__
+
+#include "hw/pci_host.h"
+#include "hw/xics.h"
+
+#define SPAPR_PCI_NUM_LSI 16
+
+typedef struct sPAPRPHBState {
+ SysBusDevice busdev;
+ PCIHostState host_state;
+
+ uint64_t buid;
+
+ MemoryRegion memspace, iospace;
+ target_phys_addr_t mem_win_addr, io_win_addr;
+ MemoryRegion memwindow, iowindow;
+
+ struct {
+ uint32_t dt_irq;
+ qemu_irq qirq;
+ } lsi_table[SPAPR_PCI_NUM_LSI];
+
+ QLIST_ENTRY(sPAPRPHBState) list;
+} sPAPRPHBState;
+
+#define SPAPR_PCI_MEM_WIN_BUS_OFFSET 0x80000000ULL
+#define SPAPR_PCI_IO_WIN_SIZE 0x10000
+
+void spapr_create_phb(sPAPREnvironment *spapr,
+ const char *busname, uint64_t buid,
+ uint64_t mem_win_addr, uint64_t mem_win_size,
+ uint64_t io_win_addr);
+
+int spapr_populate_pci_devices(sPAPRPHBState *phb,
+ uint32_t xics_phandle,
+ void *fdt);
+
+#endif /* __HW_SPAPR_PCI_H__ */
--
1.6.0.2
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available
2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf
@ 2011-11-01 19:28 ` Blue Swirl
2011-11-01 20:42 ` Alexander Graf
2011-11-01 23:59 ` [Qemu-devel] [Qemu-ppc] " David Gibson
0 siblings, 2 replies; 39+ messages in thread
From: Blue Swirl @ 2011-11-01 19:28 UTC (permalink / raw)
To: Alexander Graf; +Cc: qemu-ppc, qemu-devel
On Sun, Oct 30, 2011 at 20:23, Alexander Graf <agraf@suse.de> wrote:
> We have several targets in the PPC tree now that basically require libfdt
> to function properly, namely the pseries and the e500 targets. This dependency
> will rather increase than decrease in the future, so I want to make sure
> that people building shiny new 1.0 actually have libfdt installed to get
> rid of a few ifdefs in the code.
>
> Warning: This patch will likely make configure fail for people who don't
> select their own --target-list, but don't have libfdt development packages
> installed. However, we really need this new dependency to move on.
I'd still prefer the submodule approach to help win32 and OSX users,
assuming that libfdt builds on those platforms.
> Signed-off-by: Alexander Graf <agraf@suse.de>
>
> ---
>
> v1 -> v2:
>
> - no paranthesis
> - no fdt check for config_pseries
> - add . in error message
> ---
> configure | 11 ++++++++++-
> 1 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/configure b/configure
> index f8dd4db..18537e8 100755
> --- a/configure
> +++ b/configure
> @@ -3422,7 +3422,16 @@ case "$target_arch2" in
> fi
> fi
> esac
> -if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
> +if test "$fdt" != "yes" && test "$target_arch2" = "ppc" -o \
> + "$target_arch2" = "ppc64" -o "$target_arch2" = "ppcemb"; then
> + echo
> + echo "Error: libfdt missing"
> + echo "The PowerPC target requires libfdt to work properly."
> + echo "Please make sure to have it and its development packages installed."
> + echo
> + exit 1
> +fi
> +if test "$target_arch2" = "ppc64"; then
> echo "CONFIG_PSERIES=y" >> $config_target_mak
> fi
> if test "$target_bigendian" = "yes" ; then
> --
> 1.6.0.2
>
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available
2011-11-01 19:28 ` Blue Swirl
@ 2011-11-01 20:42 ` Alexander Graf
2011-11-01 23:59 ` [Qemu-devel] [Qemu-ppc] " David Gibson
1 sibling, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-11-01 20:42 UTC (permalink / raw)
To: Blue Swirl; +Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
On 01.11.2011, at 12:28, Blue Swirl <blauwirbel@gmail.com> wrote:
> On Sun, Oct 30, 2011 at 20:23, Alexander Graf <agraf@suse.de> wrote:
>> We have several targets in the PPC tree now that basically require libfdt
>> to function properly, namely the pseries and the e500 targets. This dependency
>> will rather increase than decrease in the future, so I want to make sure
>> that people building shiny new 1.0 actually have libfdt installed to get
>> rid of a few ifdefs in the code.
>>
>> Warning: This patch will likely make configure fail for people who don't
>> select their own --target-list, but don't have libfdt development packages
>> installed. However, we really need this new dependency to move on.
>
> I'd still prefer the submodule approach to help win32 and OSX users,
> assuming that libfdt builds on those platforms.
Then pull and reverse this patch please. I want at least the rest in before the freeze.
Alex
>
>> Signed-off-by: Alexander Graf <agraf@suse.de>
>>
>> ---
>>
>> v1 -> v2:
>>
>> - no paranthesis
>> - no fdt check for config_pseries
>> - add . in error message
>> ---
>> configure | 11 ++++++++++-
>> 1 files changed, 10 insertions(+), 1 deletions(-)
>>
>> diff --git a/configure b/configure
>> index f8dd4db..18537e8 100755
>> --- a/configure
>> +++ b/configure
>> @@ -3422,7 +3422,16 @@ case "$target_arch2" in
>> fi
>> fi
>> esac
>> -if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
>> +if test "$fdt" != "yes" && test "$target_arch2" = "ppc" -o \
>> + "$target_arch2" = "ppc64" -o "$target_arch2" = "ppcemb"; then
>> + echo
>> + echo "Error: libfdt missing"
>> + echo "The PowerPC target requires libfdt to work properly."
>> + echo "Please make sure to have it and its development packages installed."
>> + echo
>> + exit 1
>> +fi
>> +if test "$target_arch2" = "ppc64"; then
>> echo "CONFIG_PSERIES=y" >> $config_target_mak
>> fi
>> if test "$target_bigendian" = "yes" ; then
>> --
>> 1.6.0.2
>>
>>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
` (24 preceding siblings ...)
2011-10-31 4:12 ` [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI Alexander Graf
@ 2011-11-01 21:05 ` Blue Swirl
2011-11-01 21:41 ` Anthony Liguori
25 siblings, 1 reply; 39+ messages in thread
From: Blue Swirl @ 2011-11-01 21:05 UTC (permalink / raw)
To: Alexander Graf; +Cc: qemu-ppc, qemu-devel
Thanks, pulled and reverted libfdt patch.
On Sun, Oct 30, 2011 at 20:22, Alexander Graf <agraf@suse.de> wrote:
> Hi Blue,
>
> This is my current patch queue for ppc. Please pull.
>
> Alex
>
>
> The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e:
> Max Filippov (1):
> MAINTAINERS: update wiki URL and machine names for target-xtensa
>
> are available in the git repository at:
>
> git://repo.or.cz/qemu/agraf.git ppc-next
>
> Alexander Graf (4):
> PPC: Bump qemu-system-ppc to 64-bit physical address space
> PPC: Disable non-440 CPUs for ppcemb target
> PPC: Fail configure when libfdt is not available
> KVM: PPC: Override host vmx/vsx/dfp only when information known
>
> David Gibson (15):
> pseries: Support SMT systems for KVM Book3S-HV
> pseries: Allow KVM Book3S-HV on PPC970 CPUS
> pseries: Use Book3S-HV TCE acceleration capabilities
> pseries: Update SLOF firmware image
> ppc: Generalize the kvmppc_get_clockfreq() function
> pseries: Add device tree properties for VMX/VSX and DFP under kvm
> pseries: Update SLOF firmware image
> ppc: Remove broken partial PVR matching
> ppc: First cut implementation of -cpu host
> ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3
> pseries: Under kvm use guest cpu = host cpu by default
> ppc: Avoid decrementer related kvm exits
> pseries: Correct vmx/dfp handling in both KVM and TCG cases
> ppc: Fix up usermode only builds
> pseries: Allow writes to KVM accelerated TCE table
>
> Fabien Chouteau (1):
> Set an invalid-bits mask for each SPE instructions
>
> Liu Yu-B13201 (2):
> ppc/e500_pci: Fix code style
> ppc/e500_pci: Fix an array overflow issue
>
> configure | 13 +-
> hw/ppc.c | 6 +
> hw/ppce500_pci.c | 82 ++++++--
> hw/spapr.c | 99 +++++++--
> hw/spapr_vio.c | 8 +-
> hw/spapr_vio.h | 1 +
> pc-bios/README | 2 +-
> pc-bios/slof.bin | Bin 579072 -> 738744 bytes
> roms/SLOF | 2 +-
> target-ppc/cpu.h | 23 ++-
> target-ppc/helper.c | 11 +
> target-ppc/kvm.c | 197 ++++++++++++++++-
> target-ppc/kvm_ppc.h | 50 +++++
> target-ppc/translate.c | 500 +++++++++++++++++++++++--------------------
> target-ppc/translate_init.c | 90 ++++----
> 15 files changed, 755 insertions(+), 329 deletions(-)
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl
@ 2011-11-01 21:41 ` Anthony Liguori
2011-11-01 22:14 ` Alexander Graf
2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl
0 siblings, 2 replies; 39+ messages in thread
From: Anthony Liguori @ 2011-11-01 21:41 UTC (permalink / raw)
To: Blue Swirl; +Cc: qemu-ppc, Alexander Graf, qemu-devel
On 11/01/2011 04:05 PM, Blue Swirl wrote:
> Thanks, pulled and reverted libfdt patch.
Er, this broke the build:
CC ppc64-softmmu/spapr_pci.o
/home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’:
/home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has no
member named ‘lh_first’
/home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has no
member named ‘le_next’
/home/anthony/git/qemu/hw/spapr_pci.c: In function ‘spapr_populate_pci_devices’:
/home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’ has no
member named ‘lh_first’
/home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has no
member named ‘le_next’
make[1]: *** [spapr_pci.o] Error 1
make: *** [subdir-ppc64-softmmu] Error 2
This is from commit:
commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8
Author: David Gibson <david@gibson.dropbear.id.au>
Date: Sun Oct 30 17:16:46 2011 +0000
pseries: Add partial support for PCI
And specifically:
QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) {
PCIDevice *dev = (PCIDevice *)qdev;
if (dev->devfn == devfn) {
return dev;
}
}
QBus::children is a QTAILQ, not a QLIST.
Was this code tested at all?
Regards,
Anthony Liguori
>
> On Sun, Oct 30, 2011 at 20:22, Alexander Graf<agraf@suse.de> wrote:
>> Hi Blue,
>>
>> This is my current patch queue for ppc. Please pull.
>>
>> Alex
>>
>>
>> The following changes since commit 375847a6c0330e3de0fd1589eeb5a364692b791e:
>> Max Filippov (1):
>> MAINTAINERS: update wiki URL and machine names for target-xtensa
>>
>> are available in the git repository at:
>>
>> git://repo.or.cz/qemu/agraf.git ppc-next
>>
>> Alexander Graf (4):
>> PPC: Bump qemu-system-ppc to 64-bit physical address space
>> PPC: Disable non-440 CPUs for ppcemb target
>> PPC: Fail configure when libfdt is not available
>> KVM: PPC: Override host vmx/vsx/dfp only when information known
>>
>> David Gibson (15):
>> pseries: Support SMT systems for KVM Book3S-HV
>> pseries: Allow KVM Book3S-HV on PPC970 CPUS
>> pseries: Use Book3S-HV TCE acceleration capabilities
>> pseries: Update SLOF firmware image
>> ppc: Generalize the kvmppc_get_clockfreq() function
>> pseries: Add device tree properties for VMX/VSX and DFP under kvm
>> pseries: Update SLOF firmware image
>> ppc: Remove broken partial PVR matching
>> ppc: First cut implementation of -cpu host
>> ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3
>> pseries: Under kvm use guest cpu = host cpu by default
>> ppc: Avoid decrementer related kvm exits
>> pseries: Correct vmx/dfp handling in both KVM and TCG cases
>> ppc: Fix up usermode only builds
>> pseries: Allow writes to KVM accelerated TCE table
>>
>> Fabien Chouteau (1):
>> Set an invalid-bits mask for each SPE instructions
>>
>> Liu Yu-B13201 (2):
>> ppc/e500_pci: Fix code style
>> ppc/e500_pci: Fix an array overflow issue
>>
>> configure | 13 +-
>> hw/ppc.c | 6 +
>> hw/ppce500_pci.c | 82 ++++++--
>> hw/spapr.c | 99 +++++++--
>> hw/spapr_vio.c | 8 +-
>> hw/spapr_vio.h | 1 +
>> pc-bios/README | 2 +-
>> pc-bios/slof.bin | Bin 579072 -> 738744 bytes
>> roms/SLOF | 2 +-
>> target-ppc/cpu.h | 23 ++-
>> target-ppc/helper.c | 11 +
>> target-ppc/kvm.c | 197 ++++++++++++++++-
>> target-ppc/kvm_ppc.h | 50 +++++
>> target-ppc/translate.c | 500 +++++++++++++++++++++++--------------------
>> target-ppc/translate_init.c | 90 ++++----
>> 15 files changed, 755 insertions(+), 329 deletions(-)
>>
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-01 21:41 ` Anthony Liguori
@ 2011-11-01 22:14 ` Alexander Graf
2011-11-01 22:16 ` Anthony Liguori
2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl
1 sibling, 1 reply; 39+ messages in thread
From: Alexander Graf @ 2011-11-01 22:14 UTC (permalink / raw)
To: Anthony Liguori; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org
On 01.11.2011, at 14:41, Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 11/01/2011 04:05 PM, Blue Swirl wrote:
>> Thanks, pulled and reverted libfdt patch.
>
> Er, this broke the build:
>
> CC ppc64-softmmu/spapr_pci.o
> /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’:
> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has no member named ‘lh_first’
> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has no member named ‘le_next’
> /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘spapr_populate_pci_devices’:
> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’ has no member named ‘lh_first’
> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has no member named ‘le_next’
> make[1]: *** [spapr_pci.o] Error 1
> make: *** [subdir-ppc64-softmmu] Error 2
>
> This is from commit:
>
> commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8
> Author: David Gibson <david@gibson.dropbear.id.au>
> Date: Sun Oct 30 17:16:46 2011 +0000
>
> pseries: Add partial support for PCI
>
> And specifically:
>
> QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) {
> PCIDevice *dev = (PCIDevice *)qdev;
> if (dev->devfn == devfn) {
> return dev;
> }
> }
>
> QBus::children is a QTAILQ, not a QLIST.
>
> Was this code tested at all?
Uh, yeah. Compile and execution tested O_o.
Alex
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-01 22:14 ` Alexander Graf
@ 2011-11-01 22:16 ` Anthony Liguori
2011-11-01 22:28 ` Alexander Graf
0 siblings, 1 reply; 39+ messages in thread
From: Anthony Liguori @ 2011-11-01 22:16 UTC (permalink / raw)
To: Alexander Graf; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org
On 11/01/2011 05:14 PM, Alexander Graf wrote:
>> And specifically:
>>
>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) {
>> PCIDevice *dev = (PCIDevice *)qdev;
>> if (dev->devfn == devfn) {
>> return dev;
>> }
>> }
>>
>> QBus::children is a QTAILQ, not a QLIST.
>>
>> Was this code tested at all?
>
> Uh, yeah. Compile and execution tested O_o.
Do you not have libfdt installed?
Regards,
Anthony Liguori
>
> Alex
>
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-01 22:16 ` Anthony Liguori
@ 2011-11-01 22:28 ` Alexander Graf
2011-11-01 22:32 ` Anthony Liguori
2011-11-02 0:12 ` [Qemu-devel] [Qemu-ppc] " David Gibson
0 siblings, 2 replies; 39+ messages in thread
From: Alexander Graf @ 2011-11-01 22:28 UTC (permalink / raw)
To: Anthony Liguori; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org
On 01.11.2011, at 15:16, Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 11/01/2011 05:14 PM, Alexander Graf wrote:
>>> And specifically:
>>>
>>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) {
>>> PCIDevice *dev = (PCIDevice *)qdev;
>>> if (dev->devfn == devfn) {
>>> return dev;
>>> }
>>> }
>>>
>>> QBus::children is a QTAILQ, not a QLIST.
>>>
>>> Was this code tested at all?
>>
>> Uh, yeah. Compile and execution tested O_o.
>
> Do you not have libfdt installed?
I have libfdt installed on all boxes. I also verified that I could see a PCI device in the guest, so the code worked.
Maybe the list type was changed between the pullreq and now?
Alex
>
> Regards,
>
> Anthony Liguori
>
>>
>> Alex
>>
>>
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-01 22:28 ` Alexander Graf
@ 2011-11-01 22:32 ` Anthony Liguori
2011-11-02 0:12 ` [Qemu-devel] [Qemu-ppc] " David Gibson
1 sibling, 0 replies; 39+ messages in thread
From: Anthony Liguori @ 2011-11-01 22:32 UTC (permalink / raw)
To: Alexander Graf; +Cc: Blue Swirl, qemu-ppc@nongnu.org, qemu-devel@nongnu.org
On 11/01/2011 05:28 PM, Alexander Graf wrote:
>
> On 01.11.2011, at 15:16, Anthony Liguori<anthony@codemonkey.ws> wrote:
>
>> On 11/01/2011 05:14 PM, Alexander Graf wrote:
>>>> And specifically:
>>>>
>>>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) {
>>>> PCIDevice *dev = (PCIDevice *)qdev;
>>>> if (dev->devfn == devfn) {
>>>> return dev;
>>>> }
>>>> }
>>>>
>>>> QBus::children is a QTAILQ, not a QLIST.
>>>>
>>>> Was this code tested at all?
>>>
>>> Uh, yeah. Compile and execution tested O_o.
>>
>> Do you not have libfdt installed?
>
> I have libfdt installed on all boxes. I also verified that I could see a PCI device in the guest, so the code worked.
>
> Maybe the list type was changed between the pullreq and now?
Yes. The patch that did it was old but only recently got into the tree.
Regards,
Anthony Liguori
>
> Alex
>
>>
>> Regards,
>>
>> Anthony Liguori
>>
>>>
>>> Alex
>>>
>>>
>>
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 18/22] PPC: Fail configure when libfdt is not available
2011-11-01 19:28 ` Blue Swirl
2011-11-01 20:42 ` Alexander Graf
@ 2011-11-01 23:59 ` David Gibson
1 sibling, 0 replies; 39+ messages in thread
From: David Gibson @ 2011-11-01 23:59 UTC (permalink / raw)
To: Blue Swirl; +Cc: qemu-ppc, Alexander Graf, qemu-devel
On Tue, Nov 01, 2011 at 07:28:45PM +0000, Blue Swirl wrote:
> On Sun, Oct 30, 2011 at 20:23, Alexander Graf <agraf@suse.de> wrote:
> > We have several targets in the PPC tree now that basically require libfdt
> > to function properly, namely the pseries and the e500 targets. This dependency
> > will rather increase than decrease in the future, so I want to make sure
> > that people building shiny new 1.0 actually have libfdt installed to get
> > rid of a few ifdefs in the code.
> >
> > Warning: This patch will likely make configure fail for people who don't
> > select their own --target-list, but don't have libfdt development packages
> > installed. However, we really need this new dependency to move on.
>
> I'd still prefer the submodule approach to help win32 and OSX users,
> assuming that libfdt builds on those platforms.
I've never tried compiling libfdt on win32 or OSX. I did help someone
out to get it compiling on FreeBSD, so OSX is likely to be fine.
In any case the core of the library is pretty much pure C with only a
tiny set of library functions used, even. So no changes to the core
code should be necessary, but it is possibly win32 may need changes to
libfdt_env.h (which provides that small set of functions). Actually,
if using a submodule, arguably libfdt_env.h should be replaced anyway
with a version which uses existing qemu primitives for things
(byteswapping, in particular).
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-01 22:28 ` Alexander Graf
2011-11-01 22:32 ` Anthony Liguori
@ 2011-11-02 0:12 ` David Gibson
1 sibling, 0 replies; 39+ messages in thread
From: David Gibson @ 2011-11-02 0:12 UTC (permalink / raw)
To: Alexander Graf; +Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
On Tue, Nov 01, 2011 at 03:28:05PM -0700, Alexander Graf wrote:
>
> On 01.11.2011, at 15:16, Anthony Liguori <anthony@codemonkey.ws> wrote:
>
> > On 11/01/2011 05:14 PM, Alexander Graf wrote:
> >>> And specifically:
> >>>
> >>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) {
> >>> PCIDevice *dev = (PCIDevice *)qdev;
> >>> if (dev->devfn == devfn) {
> >>> return dev;
> >>> }
> >>> }
> >>>
> >>> QBus::children is a QTAILQ, not a QLIST.
> >>>
> >>> Was this code tested at all?
> >>
> >> Uh, yeah. Compile and execution tested O_o.
> >
> > Do you not have libfdt installed?
>
> I have libfdt installed on all boxes. I also verified that I could
> see a PCI device in the guest, so the code worked.
>
> Maybe the list type was changed between the pullreq and now?
It did. I actually found this one yesterday when I rebased agraf's
series, but didn't get around to sending the fix out.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-01 21:41 ` Anthony Liguori
2011-11-01 22:14 ` Alexander Graf
@ 2011-11-02 19:59 ` Blue Swirl
2011-11-02 20:11 ` Anthony Liguori
2011-11-02 20:38 ` Alexander Graf
1 sibling, 2 replies; 39+ messages in thread
From: Blue Swirl @ 2011-11-02 19:59 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-ppc, Alexander Graf, qemu-devel
On Tue, Nov 1, 2011 at 21:41, Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 11/01/2011 04:05 PM, Blue Swirl wrote:
>>
>> Thanks, pulled and reverted libfdt patch.
>
> Er, this broke the build:
>
> CC ppc64-softmmu/spapr_pci.o
> /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’:
> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has
> no member named ‘lh_first’
> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has
> no member named ‘le_next’
> /home/anthony/git/qemu/hw/spapr_pci.c: In function
> ‘spapr_populate_pci_devices’:
> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’
> has no member named ‘lh_first’
> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has
> no member named ‘le_next’
> make[1]: *** [spapr_pci.o] Error 1
> make: *** [subdir-ppc64-softmmu] Error 2
>
> This is from commit:
>
> commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8
> Author: David Gibson <david@gibson.dropbear.id.au>
> Date: Sun Oct 30 17:16:46 2011 +0000
>
> pseries: Add partial support for PCI
>
> And specifically:
>
> QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) {
> PCIDevice *dev = (PCIDevice *)qdev;
> if (dev->devfn == devfn) {
> return dev;
> }
> }
>
> QBus::children is a QTAILQ, not a QLIST.
>
> Was this code tested at all?
I built it and ran a quick test for PPC.
7f7623662781fa152c5aa39fd63a2e8766516a2c still builds fine here.
Though I don't have libfdt and no test for pseries.
> Regards,
>
> Anthony Liguori
>
>>
>> On Sun, Oct 30, 2011 at 20:22, Alexander Graf<agraf@suse.de> wrote:
>>>
>>> Hi Blue,
>>>
>>> This is my current patch queue for ppc. Please pull.
>>>
>>> Alex
>>>
>>>
>>> The following changes since commit
>>> 375847a6c0330e3de0fd1589eeb5a364692b791e:
>>> Max Filippov (1):
>>> MAINTAINERS: update wiki URL and machine names for target-xtensa
>>>
>>> are available in the git repository at:
>>>
>>> git://repo.or.cz/qemu/agraf.git ppc-next
>>>
>>> Alexander Graf (4):
>>> PPC: Bump qemu-system-ppc to 64-bit physical address space
>>> PPC: Disable non-440 CPUs for ppcemb target
>>> PPC: Fail configure when libfdt is not available
>>> KVM: PPC: Override host vmx/vsx/dfp only when information known
>>>
>>> David Gibson (15):
>>> pseries: Support SMT systems for KVM Book3S-HV
>>> pseries: Allow KVM Book3S-HV on PPC970 CPUS
>>> pseries: Use Book3S-HV TCE acceleration capabilities
>>> pseries: Update SLOF firmware image
>>> ppc: Generalize the kvmppc_get_clockfreq() function
>>> pseries: Add device tree properties for VMX/VSX and DFP under kvm
>>> pseries: Update SLOF firmware image
>>> ppc: Remove broken partial PVR matching
>>> ppc: First cut implementation of -cpu host
>>> ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3
>>> pseries: Under kvm use guest cpu = host cpu by default
>>> ppc: Avoid decrementer related kvm exits
>>> pseries: Correct vmx/dfp handling in both KVM and TCG cases
>>> ppc: Fix up usermode only builds
>>> pseries: Allow writes to KVM accelerated TCE table
>>>
>>> Fabien Chouteau (1):
>>> Set an invalid-bits mask for each SPE instructions
>>>
>>> Liu Yu-B13201 (2):
>>> ppc/e500_pci: Fix code style
>>> ppc/e500_pci: Fix an array overflow issue
>>>
>>> configure | 13 +-
>>> hw/ppc.c | 6 +
>>> hw/ppce500_pci.c | 82 ++++++--
>>> hw/spapr.c | 99 +++++++--
>>> hw/spapr_vio.c | 8 +-
>>> hw/spapr_vio.h | 1 +
>>> pc-bios/README | 2 +-
>>> pc-bios/slof.bin | Bin 579072 -> 738744 bytes
>>> roms/SLOF | 2 +-
>>> target-ppc/cpu.h | 23 ++-
>>> target-ppc/helper.c | 11 +
>>> target-ppc/kvm.c | 197 ++++++++++++++++-
>>> target-ppc/kvm_ppc.h | 50 +++++
>>> target-ppc/translate.c | 500
>>> +++++++++++++++++++++++--------------------
>>> target-ppc/translate_init.c | 90 ++++----
>>> 15 files changed, 755 insertions(+), 329 deletions(-)
>>>
>>
>
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl
@ 2011-11-02 20:11 ` Anthony Liguori
2011-11-02 20:38 ` Alexander Graf
1 sibling, 0 replies; 39+ messages in thread
From: Anthony Liguori @ 2011-11-02 20:11 UTC (permalink / raw)
To: Blue Swirl; +Cc: qemu-ppc, Alexander Graf, qemu-devel
On 11/02/2011 02:59 PM, Blue Swirl wrote:
> On Tue, Nov 1, 2011 at 21:41, Anthony Liguori<anthony@codemonkey.ws> wrote:
>> On 11/01/2011 04:05 PM, Blue Swirl wrote:
>>>
>>> Thanks, pulled and reverted libfdt patch.
>>
>> Er, this broke the build:
>>
>> CC ppc64-softmmu/spapr_pci.o
>> /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’:
>> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has
>> no member named ‘lh_first’
>> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct<anonymous>’ has
>> no member named ‘le_next’
>> /home/anthony/git/qemu/hw/spapr_pci.c: In function
>> ‘spapr_populate_pci_devices’:
>> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’
>> has no member named ‘lh_first’
>> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct<anonymous>’ has
>> no member named ‘le_next’
>> make[1]: *** [spapr_pci.o] Error 1
>> make: *** [subdir-ppc64-softmmu] Error 2
>>
>> This is from commit:
>>
>> commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8
>> Author: David Gibson<david@gibson.dropbear.id.au>
>> Date: Sun Oct 30 17:16:46 2011 +0000
>>
>> pseries: Add partial support for PCI
>>
>> And specifically:
>>
>> QLIST_FOREACH(qdev,&phb->host_state.bus->qbus.children, sibling) {
>> PCIDevice *dev = (PCIDevice *)qdev;
>> if (dev->devfn == devfn) {
>> return dev;
>> }
>> }
>>
>> QBus::children is a QTAILQ, not a QLIST.
>>
>> Was this code tested at all?
>
> I built it and ran a quick test for PPC.
> 7f7623662781fa152c5aa39fd63a2e8766516a2c still builds fine here.
> Though I don't have libfdt and no test for pseries.
Yeah, libfdt isn't packaged widely still so it's understandable. We run into
this a lot.
Pulling it in as a submodule is probably a good idea.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30
2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl
2011-11-02 20:11 ` Anthony Liguori
@ 2011-11-02 20:38 ` Alexander Graf
1 sibling, 0 replies; 39+ messages in thread
From: Alexander Graf @ 2011-11-02 20:38 UTC (permalink / raw)
To: Blue Swirl; +Cc: qemu-ppc, qemu-devel
Blue Swirl wrote:
> On Tue, Nov 1, 2011 at 21:41, Anthony Liguori <anthony@codemonkey.ws> wrote:
>
>> On 11/01/2011 04:05 PM, Blue Swirl wrote:
>>
>>> Thanks, pulled and reverted libfdt patch.
>>>
>> Er, this broke the build:
>>
>> CC ppc64-softmmu/spapr_pci.o
>> /home/anthony/git/qemu/hw/spapr_pci.c: In function ‘find_dev’:
>> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct ChildrenHead’ has
>> no member named ‘lh_first’
>> /home/anthony/git/qemu/hw/spapr_pci.c:54:9: error: ‘struct <anonymous>’ has
>> no member named ‘le_next’
>> /home/anthony/git/qemu/hw/spapr_pci.c: In function
>> ‘spapr_populate_pci_devices’:
>> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct ChildrenHead’
>> has no member named ‘lh_first’
>> /home/anthony/git/qemu/hw/spapr_pci.c:400:5: error: ‘struct <anonymous>’ has
>> no member named ‘le_next’
>> make[1]: *** [spapr_pci.o] Error 1
>> make: *** [subdir-ppc64-softmmu] Error 2
>>
>> This is from commit:
>>
>> commit 3384f95c59e5db381cf3e605c8acec71baf0e6b8
>> Author: David Gibson <david@gibson.dropbear.id.au>
>> Date: Sun Oct 30 17:16:46 2011 +0000
>>
>> pseries: Add partial support for PCI
>>
>> And specifically:
>>
>> QLIST_FOREACH(qdev, &phb->host_state.bus->qbus.children, sibling) {
>> PCIDevice *dev = (PCIDevice *)qdev;
>> if (dev->devfn == devfn) {
>> return dev;
>> }
>> }
>>
>> QBus::children is a QTAILQ, not a QLIST.
>>
>> Was this code tested at all?
>>
>
> I built it and ran a quick test for PPC.
> 7f7623662781fa152c5aa39fd63a2e8766516a2c still builds fine here.
> Though I don't have libfdt and no test for pseries.
>
Testing is easy. You can either run it without -kernel which should boot
up SLOF. Or you find a random ppc64 kernel and boot it with -kernel :).
Anthony did fix the problem immediately after though. It was basically a
merge conflict.
Alex
^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2011-11-02 20:38 UTC | newest]
Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-30 20:22 [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 01/22] ppc/e500_pci: Fix code style Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 02/22] ppc/e500_pci: Fix an array overflow issue Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 03/22] pseries: Support SMT systems for KVM Book3S-HV Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 04/22] pseries: Allow KVM Book3S-HV on PPC970 CPUS Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 05/22] pseries: Use Book3S-HV TCE acceleration capabilities Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 06/22] pseries: Update SLOF firmware image Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 07/22] Set an invalid-bits mask for each SPE instructions Alexander Graf
2011-10-30 20:22 ` [Qemu-devel] [PATCH 08/22] ppc: Generalize the kvmppc_get_clockfreq() function Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 09/22] pseries: Add device tree properties for VMX/VSX and DFP under kvm Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 10/22] pseries: Update SLOF firmware image Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 11/22] ppc: Remove broken partial PVR matching Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 12/22] ppc: First cut implementation of -cpu host Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 13/22] ppc: Add cpu defs for POWER7 revisions 2.1 and 2.3 Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 14/22] pseries: Under kvm use guest cpu = host cpu by default Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 15/22] PPC: Bump qemu-system-ppc to 64-bit physical address space Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 16/22] PPC: Disable non-440 CPUs for ppcemb target Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 17/22] ppc: Avoid decrementer related kvm exits Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 18/22] PPC: Fail configure when libfdt is not available Alexander Graf
2011-11-01 19:28 ` Blue Swirl
2011-11-01 20:42 ` Alexander Graf
2011-11-01 23:59 ` [Qemu-devel] [Qemu-ppc] " David Gibson
2011-10-30 20:23 ` [Qemu-devel] [PATCH 19/22] pseries: Correct vmx/dfp handling in both KVM and TCG cases Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 20/22] ppc: Fix up usermode only builds Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 21/22] KVM: PPC: Override host vmx/vsx/dfp only when information known Alexander Graf
2011-10-30 20:23 ` [Qemu-devel] [PATCH 22/22] pseries: Allow writes to KVM accelerated TCE table Alexander Graf
2011-10-31 4:03 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Alexander Graf
2011-10-31 4:12 ` [Qemu-devel] [PATCH 23/22] ppc: Alter CPU state to mask out TCG unimplemented instructions as appropriate Alexander Graf
2011-10-31 4:12 ` [Qemu-devel] [PATCH 24/22] pseries: Add partial support for PCI Alexander Graf
2011-11-01 21:05 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2011-10-30 Blue Swirl
2011-11-01 21:41 ` Anthony Liguori
2011-11-01 22:14 ` Alexander Graf
2011-11-01 22:16 ` Anthony Liguori
2011-11-01 22:28 ` Alexander Graf
2011-11-01 22:32 ` Anthony Liguori
2011-11-02 0:12 ` [Qemu-devel] [Qemu-ppc] " David Gibson
2011-11-02 19:59 ` [Qemu-devel] " Blue Swirl
2011-11-02 20:11 ` Anthony Liguori
2011-11-02 20:38 ` Alexander Graf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).