* [Qemu-devel] [PULL 01/37] PPC: e500: Move CCSR definition to params
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 02/37] PPC: e500: Move CCSR and MMIO space to upper end of address space Alexander Graf
` (36 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel
We want to have different MMIO region offsets for the mpc8544ds machine
and our e500 PV machine, so move the definitions of those into the machine
specific params struct.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/e500.c | 30 ++++++++++++++----------------
hw/ppc/e500.h | 3 +++
hw/ppc/e500plat.c | 3 +++
hw/ppc/mpc8544ds.c | 3 +++
4 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 2832fc0..1aaa515 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -51,19 +51,14 @@
#define RAM_SIZES_ALIGN (64UL << 20)
/* TODO: parameterize */
-#define MPC8544_CCSRBAR_BASE 0xE0000000ULL
#define MPC8544_CCSRBAR_SIZE 0x00100000ULL
#define MPC8544_MPIC_REGS_OFFSET 0x40000ULL
#define MPC8544_MSI_REGS_OFFSET 0x41600ULL
#define MPC8544_SERIAL0_REGS_OFFSET 0x4500ULL
#define MPC8544_SERIAL1_REGS_OFFSET 0x4600ULL
#define MPC8544_PCI_REGS_OFFSET 0x8000ULL
-#define MPC8544_PCI_REGS_BASE (MPC8544_CCSRBAR_BASE + \
- MPC8544_PCI_REGS_OFFSET)
#define MPC8544_PCI_REGS_SIZE 0x1000ULL
-#define MPC8544_PCI_IO 0xE1000000ULL
#define MPC8544_UTIL_OFFSET 0xe0000ULL
-#define MPC8544_SPIN_BASE 0xEF000000ULL
#define MPC8XXX_GPIO_OFFSET 0x000FF000ULL
#define MPC8XXX_GPIO_IRQ 43
@@ -298,7 +293,7 @@ static int ppce500_load_device_tree(MachineState *machine,
0x0, 0x20000000,
0x1000000, 0x0, 0x0,
- 0x0, 0xe1000000,
+ params->pci_pio_base >> 32, params->pci_pio_base,
0x0, 0x10000,
};
QemuOpts *machine_opts = qemu_get_machine_opts();
@@ -389,7 +384,7 @@ static int ppce500_load_device_tree(MachineState *machine,
CPUState *cpu;
PowerPCCPU *pcpu;
char cpu_name[128];
- uint64_t cpu_release_addr = MPC8544_SPIN_BASE + (i * 0x20);
+ uint64_t cpu_release_addr = params->spin_base + (i * 0x20);
cpu = qemu_get_cpu(i);
if (cpu == NULL) {
@@ -426,7 +421,7 @@ static int ppce500_load_device_tree(MachineState *machine,
qemu_fdt_add_subnode(fdt, "/aliases");
/* XXX These should go into their respective devices' code */
- snprintf(soc, sizeof(soc), "/soc@%llx", MPC8544_CCSRBAR_BASE);
+ snprintf(soc, sizeof(soc), "/soc@%"PRIx64, params->ccsrbar_base);
qemu_fdt_add_subnode(fdt, soc);
qemu_fdt_setprop_string(fdt, soc, "device_type", "soc");
qemu_fdt_setprop(fdt, soc, "compatible", compatible_sb,
@@ -434,7 +429,7 @@ static int ppce500_load_device_tree(MachineState *machine,
qemu_fdt_setprop_cell(fdt, soc, "#address-cells", 1);
qemu_fdt_setprop_cell(fdt, soc, "#size-cells", 1);
qemu_fdt_setprop_cells(fdt, soc, "ranges", 0x0,
- MPC8544_CCSRBAR_BASE >> 32, MPC8544_CCSRBAR_BASE,
+ params->ccsrbar_base >> 32, params->ccsrbar_base,
MPC8544_CCSRBAR_SIZE);
/* XXX should contain a reasonable value */
qemu_fdt_setprop_cell(fdt, soc, "bus-frequency", 0);
@@ -493,7 +488,8 @@ static int ppce500_load_device_tree(MachineState *machine,
qemu_fdt_setprop_cell(fdt, msi, "phandle", msi_ph);
qemu_fdt_setprop_cell(fdt, msi, "linux,phandle", msi_ph);
- snprintf(pci, sizeof(pci), "/pci@%llx", MPC8544_PCI_REGS_BASE);
+ snprintf(pci, sizeof(pci), "/pci@%llx",
+ params->ccsrbar_base + MPC8544_PCI_REGS_OFFSET);
qemu_fdt_add_subnode(fdt, pci);
qemu_fdt_setprop_cell(fdt, pci, "cell-index", 0);
qemu_fdt_setprop_string(fdt, pci, "compatible", "fsl,mpc8540-pci");
@@ -512,8 +508,10 @@ static int ppce500_load_device_tree(MachineState *machine,
}
qemu_fdt_setprop_cell(fdt, pci, "fsl,msi", msi_ph);
qemu_fdt_setprop(fdt, pci, "ranges", pci_ranges, sizeof(pci_ranges));
- qemu_fdt_setprop_cells(fdt, pci, "reg", MPC8544_PCI_REGS_BASE >> 32,
- MPC8544_PCI_REGS_BASE, 0, 0x1000);
+ qemu_fdt_setprop_cells(fdt, pci, "reg",
+ (params->ccsrbar_base + MPC8544_PCI_REGS_OFFSET) >> 32,
+ (params->ccsrbar_base + MPC8544_PCI_REGS_OFFSET),
+ 0, 0x1000);
qemu_fdt_setprop_cell(fdt, pci, "clock-frequency", 66666666);
qemu_fdt_setprop_cell(fdt, pci, "#interrupt-cells", 1);
qemu_fdt_setprop_cell(fdt, pci, "#size-cells", 2);
@@ -841,7 +839,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
irqs[i][OPENPIC_OUTPUT_INT] = input[PPCE500_INPUT_INT];
irqs[i][OPENPIC_OUTPUT_CINT] = input[PPCE500_INPUT_CINT];
env->spr_cb[SPR_BOOKE_PIR].default_value = cs->cpu_index = i;
- env->mpic_iack = MPC8544_CCSRBAR_BASE +
+ env->mpic_iack = params->ccsrbar_base +
MPC8544_MPIC_REGS_OFFSET + 0xa0;
ppc_booke_timers_init(cpu, 400000000, PPC_TIMER_E500);
@@ -875,7 +873,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
qdev_init_nofail(dev);
ccsr = CCSR(dev);
ccsr_addr_space = &ccsr->ccsr_space;
- memory_region_add_subregion(address_space_mem, MPC8544_CCSRBAR_BASE,
+ memory_region_add_subregion(address_space_mem, params->ccsrbar_base,
ccsr_addr_space);
mpic = ppce500_init_mpic(params, ccsr_addr_space, irqs);
@@ -917,7 +915,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
if (!pci_bus)
printf("couldn't create PCI controller!\n");
- sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, MPC8544_PCI_IO);
+ sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, params->pci_pio_base);
if (pci_bus) {
/* Register network interfaces. */
@@ -927,7 +925,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
}
/* Register spinning region */
- sysbus_create_simple("e500-spin", MPC8544_SPIN_BASE, NULL);
+ sysbus_create_simple("e500-spin", params->spin_base, NULL);
if (cur_base < (32 * 1024 * 1024)) {
/* u-boot occupies memory up to 32MB, so load blobs above */
diff --git a/hw/ppc/e500.h b/hw/ppc/e500.h
index 9f61ab2..d96f72d 100644
--- a/hw/ppc/e500.h
+++ b/hw/ppc/e500.h
@@ -17,6 +17,9 @@ typedef struct PPCE500Params {
hwaddr platform_bus_size;
int platform_bus_first_irq;
int platform_bus_num_irqs;
+ hwaddr ccsrbar_base;
+ hwaddr pci_pio_base;
+ hwaddr spin_base;
} PPCE500Params;
void ppce500_init(MachineState *machine, PPCE500Params *params);
diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
index d50ae00..1600fcf 100644
--- a/hw/ppc/e500plat.c
+++ b/hw/ppc/e500plat.c
@@ -41,6 +41,9 @@ static void e500plat_init(MachineState *machine)
.platform_bus_size = (128ULL * 1024 * 1024),
.platform_bus_first_irq = 5,
.platform_bus_num_irqs = 10,
+ .ccsrbar_base = 0xE0000000ULL,
+ .pci_pio_base = 0xE1000000ULL,
+ .spin_base = 0xEF000000ULL,
};
/* Older KVM versions don't support EPR which breaks guests when we announce
diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c
index b99f74a..f131633 100644
--- a/hw/ppc/mpc8544ds.c
+++ b/hw/ppc/mpc8544ds.c
@@ -33,6 +33,9 @@ static void mpc8544ds_init(MachineState *machine)
.pci_nr_slots = 2,
.fixup_devtree = mpc8544ds_fixup_devtree,
.mpic_version = OPENPIC_MODEL_FSL_MPIC_20,
+ .ccsrbar_base = 0xE0000000ULL,
+ .pci_pio_base = 0xE1000000ULL,
+ .spin_base = 0xEF000000ULL,
};
ppce500_init(machine, ¶ms);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 02/37] PPC: e500: Move CCSR and MMIO space to upper end of address space
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 01/37] PPC: e500: Move CCSR definition to params Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 03/37] PPC: mpc8554ds: Tell user about exceeding RAM limits Alexander Graf
` (35 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel
On e500 we're basically guaranteed to have 36bits of physical address space
available for our enjoyment. Older chips (like the mpc8544) only had 32bits,
but everything from e500v2 onwards bumped it up.
It's reasonably safe to assume that if you're using the PV machine, your guest
kernel is configured to support 36bit physical address space. So in order to
support more guest RAM, we can move CCSR and other MMIO windows right below the
end of our 36bit address space, just like later SoC versions of e500 do.
With this patch, I'm able to successfully spawn an e500 VM with -m 48G.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/e500plat.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
index 1600fcf..1b8a68d 100644
--- a/hw/ppc/e500plat.c
+++ b/hw/ppc/e500plat.c
@@ -41,9 +41,9 @@ static void e500plat_init(MachineState *machine)
.platform_bus_size = (128ULL * 1024 * 1024),
.platform_bus_first_irq = 5,
.platform_bus_num_irqs = 10,
- .ccsrbar_base = 0xE0000000ULL,
- .pci_pio_base = 0xE1000000ULL,
- .spin_base = 0xEF000000ULL,
+ .ccsrbar_base = 0xFE0000000ULL,
+ .pci_pio_base = 0xFE1000000ULL,
+ .spin_base = 0xFEF000000ULL,
};
/* Older KVM versions don't support EPR which breaks guests when we announce
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 03/37] PPC: mpc8554ds: Tell user about exceeding RAM limits
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 01/37] PPC: e500: Move CCSR definition to params Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 02/37] PPC: e500: Move CCSR and MMIO space to upper end of address space Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 04/37] PPC: e500 pci host: Add support for ATMUs Alexander Graf
` (34 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel
The mpc8544ds board only supports up to 3GB of RAM due to its limited
address space.
When the user requests more, abort and tell him that he should use less.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/mpc8544ds.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c
index f131633..fb74b3f 100644
--- a/hw/ppc/mpc8544ds.c
+++ b/hw/ppc/mpc8544ds.c
@@ -15,6 +15,7 @@
#include "hw/boards.h"
#include "sysemu/device_tree.h"
#include "hw/ppc/openpic.h"
+#include "qemu/error-report.h"
static void mpc8544ds_fixup_devtree(PPCE500Params *params, void *fdt)
{
@@ -38,6 +39,11 @@ static void mpc8544ds_init(MachineState *machine)
.spin_base = 0xEF000000ULL,
};
+ if (machine->ram_size > 0xc0000000) {
+ error_report("The MPC8544DS board only supports up to 3GB of RAM");
+ exit(1);
+ }
+
ppce500_init(machine, ¶ms);
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 04/37] PPC: e500 pci host: Add support for ATMUs
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (2 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 03/37] PPC: mpc8554ds: Tell user about exceeding RAM limits Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 05/37] target-ppc: Load/Store Vector Element Storage Alignment Alexander Graf
` (33 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel
The e500 PCI controller has configurable windows that allow a guest OS
to selectively map parts of the PCI bus space to CPU address space and
to selectively map parts of the CPU address space for DMA requests into
PCI visible address ranges.
So far, we've simply assumed that this mapping is 1:1 and ignored it.
However, the PCICSRBAR (CCSR mapped in PCI bus space) always has to live
inside the first 32bits of address space. This means if we always treat
all mappings as 1:1, this map will collide with our RAM map from the CPU's
point of view.
So this patch adds proper ATMU support which allows us to keep the PCICSRBAR
below 32bits local to the PCI bus and have another, different window to PCI
BARs at the upper end of address space. We leverage this on e500plat though,
mpc8544ds stays virtually 1:1 like it was before, but now also goes via ATMU.
With this patch, I can run guests with lots of RAM and not coincidently access
MSI-X mappings while I really want to access RAM.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/pci-host/ppce500.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++---
hw/ppc/e500.c | 6 +--
hw/ppc/e500.h | 2 +
hw/ppc/e500plat.c | 2 +
hw/ppc/mpc8544ds.c | 2 +
5 files changed, 115 insertions(+), 10 deletions(-)
diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c
index 1b4c0f0..574f8b2 100644
--- a/hw/pci-host/ppce500.c
+++ b/hw/pci-host/ppce500.c
@@ -62,11 +62,19 @@
#define PPCE500_PCI_NR_POBS 5
#define PPCE500_PCI_NR_PIBS 3
+#define PIWAR_EN 0x80000000 /* Enable */
+#define PIWAR_PF 0x20000000 /* prefetch */
+#define PIWAR_TGI_LOCAL 0x00f00000 /* target - local memory */
+#define PIWAR_READ_SNOOP 0x00050000
+#define PIWAR_WRITE_SNOOP 0x00005000
+#define PIWAR_SZ_MASK 0x0000003f
+
struct pci_outbound {
uint32_t potar;
uint32_t potear;
uint32_t powbar;
uint32_t powar;
+ MemoryRegion mem;
};
struct pci_inbound {
@@ -74,6 +82,7 @@ struct pci_inbound {
uint32_t piwbar;
uint32_t piwbear;
uint32_t piwar;
+ MemoryRegion mem;
};
#define TYPE_PPC_E500_PCI_HOST_BRIDGE "e500-pcihost"
@@ -91,10 +100,13 @@ struct PPCE500PCIState {
uint32_t irq_num[PCI_NUM_PINS];
uint32_t first_slot;
uint32_t first_pin_irq;
+ AddressSpace bm_as;
+ MemoryRegion bm;
/* mmio maps */
MemoryRegion container;
MemoryRegion iomem;
MemoryRegion pio;
+ MemoryRegion busmem;
};
#define TYPE_PPC_E500_PCI_BRIDGE "e500-host-bridge"
@@ -181,6 +193,71 @@ static uint64_t pci_reg_read4(void *opaque, hwaddr addr,
return value;
}
+/* DMA mapping */
+static void e500_update_piw(PPCE500PCIState *pci, int idx)
+{
+ uint64_t tar = ((uint64_t)pci->pib[idx].pitar) << 12;
+ uint64_t wbar = ((uint64_t)pci->pib[idx].piwbar) << 12;
+ uint64_t war = pci->pib[idx].piwar;
+ uint64_t size = 2ULL << (war & PIWAR_SZ_MASK);
+ MemoryRegion *address_space_mem = get_system_memory();
+ MemoryRegion *mem = &pci->pib[idx].mem;
+ MemoryRegion *bm = &pci->bm;
+ char *name;
+
+ if (memory_region_is_mapped(mem)) {
+ /* Before we modify anything, unmap and destroy the region */
+ memory_region_del_subregion(bm, mem);
+ object_unparent(OBJECT(mem));
+ }
+
+ if (!(war & PIWAR_EN)) {
+ /* Not enabled, nothing to do */
+ return;
+ }
+
+ name = g_strdup_printf("PCI Inbound Window %d", idx);
+ memory_region_init_alias(mem, OBJECT(pci), name, address_space_mem, tar,
+ size);
+ memory_region_add_subregion_overlap(bm, wbar, mem, -1);
+ g_free(name);
+
+ pci_debug("%s: Added window of size=%#lx from PCI=%#lx to CPU=%#lx\n",
+ __func__, size, wbar, tar);
+}
+
+/* BAR mapping */
+static void e500_update_pow(PPCE500PCIState *pci, int idx)
+{
+ uint64_t tar = ((uint64_t)pci->pob[idx].potar) << 12;
+ uint64_t wbar = ((uint64_t)pci->pob[idx].powbar) << 12;
+ uint64_t war = pci->pob[idx].powar;
+ uint64_t size = 2ULL << (war & PIWAR_SZ_MASK);
+ MemoryRegion *mem = &pci->pob[idx].mem;
+ MemoryRegion *address_space_mem = get_system_memory();
+ char *name;
+
+ if (memory_region_is_mapped(mem)) {
+ /* Before we modify anything, unmap and destroy the region */
+ memory_region_del_subregion(address_space_mem, mem);
+ object_unparent(OBJECT(mem));
+ }
+
+ if (!(war & PIWAR_EN)) {
+ /* Not enabled, nothing to do */
+ return;
+ }
+
+ name = g_strdup_printf("PCI Outbound Window %d", idx);
+ memory_region_init_alias(mem, OBJECT(pci), name, &pci->busmem, tar,
+ size);
+ memory_region_add_subregion(address_space_mem, wbar, mem);
+ g_free(name);
+
+ pci_debug("%s: Added window of size=%#lx from CPU=%#lx to PCI=%#lx\n",
+ __func__, size, wbar, tar);
+}
+
static void pci_reg_write4(void *opaque, hwaddr addr,
uint64_t value, unsigned size)
{
@@ -199,18 +276,22 @@ static void pci_reg_write4(void *opaque, hwaddr addr,
case PPCE500_PCI_OW3:
case PPCE500_PCI_OW4:
idx = (addr >> 5) & 0x7;
- switch (addr & 0xC) {
+ switch (addr & 0x1F) {
case PCI_POTAR:
pci->pob[idx].potar = value;
+ e500_update_pow(pci, idx);
break;
case PCI_POTEAR:
pci->pob[idx].potear = value;
+ e500_update_pow(pci, idx);
break;
case PCI_POWBAR:
pci->pob[idx].powbar = value;
+ e500_update_pow(pci, idx);
break;
case PCI_POWAR:
pci->pob[idx].powar = value;
+ e500_update_pow(pci, idx);
break;
default:
break;
@@ -221,18 +302,22 @@ static void pci_reg_write4(void *opaque, hwaddr addr,
case PPCE500_PCI_IW2:
case PPCE500_PCI_IW1:
idx = ((addr >> 5) & 0x3) - 1;
- switch (addr & 0xC) {
+ switch (addr & 0x1F) {
case PCI_PITAR:
pci->pib[idx].pitar = value;
+ e500_update_piw(pci, idx);
break;
case PCI_PIWBAR:
pci->pib[idx].piwbar = value;
+ e500_update_piw(pci, idx);
break;
case PCI_PIWBEAR:
pci->pib[idx].piwbear = value;
+ e500_update_piw(pci, idx);
break;
case PCI_PIWAR:
pci->pib[idx].piwar = value;
+ e500_update_piw(pci, idx);
break;
default:
break;
@@ -349,13 +434,20 @@ static int e500_pcihost_bridge_initfn(PCIDevice *d)
return 0;
}
+static AddressSpace *e500_pcihost_set_iommu(PCIBus *bus, void *opaque,
+ int devfn)
+{
+ PPCE500PCIState *s = opaque;
+
+ return &s->bm_as;
+}
+
static int e500_pcihost_initfn(SysBusDevice *dev)
{
PCIHostState *h;
PPCE500PCIState *s;
PCIBus *b;
int i;
- MemoryRegion *address_space_mem = get_system_memory();
h = PCI_HOST_BRIDGE(dev);
s = PPC_E500_PCI_HOST_BRIDGE(dev);
@@ -369,12 +461,22 @@ static int e500_pcihost_initfn(SysBusDevice *dev)
}
memory_region_init(&s->pio, OBJECT(s), "pci-pio", PCIE500_PCI_IOLEN);
+ memory_region_init(&s->busmem, OBJECT(s), "pci bus memory", UINT64_MAX);
+
+ /* PIO lives at the bottom of our bus space */
+ memory_region_add_subregion_overlap(&s->busmem, 0, &s->pio, -2);
b = pci_register_bus(DEVICE(dev), NULL, mpc85xx_pci_set_irq,
- mpc85xx_pci_map_irq, s, address_space_mem,
- &s->pio, PCI_DEVFN(s->first_slot, 0), 4, TYPE_PCI_BUS);
+ mpc85xx_pci_map_irq, s, &s->busmem, &s->pio,
+ PCI_DEVFN(s->first_slot, 0), 4, TYPE_PCI_BUS);
h->bus = b;
+ /* Set up PCI view of memory */
+ memory_region_init(&s->bm, OBJECT(s), "bm-e500", UINT64_MAX);
+ memory_region_add_subregion(&s->bm, 0x0, &s->busmem);
+ address_space_init(&s->bm_as, &s->bm, "pci-bm");
+ pci_setup_iommu(b, e500_pcihost_set_iommu, s);
+
pci_create_simple(b, 0, "e500-host-bridge");
memory_region_init(&s->container, OBJECT(h), "pci-container", PCIE500_ALL_SIZE);
@@ -388,7 +490,6 @@ static int e500_pcihost_initfn(SysBusDevice *dev)
memory_region_add_subregion(&s->container, PCIE500_CFGDATA, &h->data_mem);
memory_region_add_subregion(&s->container, PCIE500_REG_BASE, &s->iomem);
sysbus_init_mmio(dev, &s->container);
- sysbus_init_mmio(dev, &s->pio);
pci_bus_set_route_irq_fn(b, e500_route_intx_pin_to_irq);
return 0;
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 1aaa515..a2e60b4 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -288,8 +288,8 @@ static int ppce500_load_device_tree(MachineState *machine,
int len;
uint32_t pci_ranges[14] =
{
- 0x2000000, 0x0, 0xc0000000,
- 0x0, 0xc0000000,
+ 0x2000000, 0x0, params->pci_mmio_bus_base,
+ params->pci_mmio_base >> 32, params->pci_mmio_base,
0x0, 0x20000000,
0x1000000, 0x0, 0x0,
@@ -915,8 +915,6 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
if (!pci_bus)
printf("couldn't create PCI controller!\n");
- sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, params->pci_pio_base);
-
if (pci_bus) {
/* Register network interfaces. */
for (i = 0; i < nb_nics; i++) {
diff --git a/hw/ppc/e500.h b/hw/ppc/e500.h
index d96f72d..ef224ea 100644
--- a/hw/ppc/e500.h
+++ b/hw/ppc/e500.h
@@ -19,6 +19,8 @@ typedef struct PPCE500Params {
int platform_bus_num_irqs;
hwaddr ccsrbar_base;
hwaddr pci_pio_base;
+ hwaddr pci_mmio_base;
+ hwaddr pci_mmio_bus_base;
hwaddr spin_base;
} PPCE500Params;
diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
index 1b8a68d..14b14ea 100644
--- a/hw/ppc/e500plat.c
+++ b/hw/ppc/e500plat.c
@@ -43,6 +43,8 @@ static void e500plat_init(MachineState *machine)
.platform_bus_num_irqs = 10,
.ccsrbar_base = 0xFE0000000ULL,
.pci_pio_base = 0xFE1000000ULL,
+ .pci_mmio_base = 0xC00000000ULL,
+ .pci_mmio_bus_base = 0xE0000000ULL,
.spin_base = 0xFEF000000ULL,
};
diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c
index fb74b3f..3a3b141 100644
--- a/hw/ppc/mpc8544ds.c
+++ b/hw/ppc/mpc8544ds.c
@@ -35,6 +35,8 @@ static void mpc8544ds_init(MachineState *machine)
.fixup_devtree = mpc8544ds_fixup_devtree,
.mpic_version = OPENPIC_MODEL_FSL_MPIC_20,
.ccsrbar_base = 0xE0000000ULL,
+ .pci_mmio_base = 0xC0000000ULL,
+ .pci_mmio_bus_base = 0xC0000000ULL,
.pci_pio_base = 0xE1000000ULL,
.spin_base = 0xEF000000ULL,
};
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 05/37] target-ppc: Load/Store Vector Element Storage Alignment
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (3 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 04/37] PPC: e500 pci host: Add support for ATMUs Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 06/37] target-ppc: VXSQRT Should Not Be Set for NaNs Alexander Graf
` (32 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
The Load Vector Element Indexed and Store Vector Element Indexed
instructions compute an effective address in the usual manner.
However, they truncate that address to the natural boundary.
For example, the lvewx instruction will ignore the least significant
two bits of the address and thus load the aligned word of storage.
Fix the generators for these instruction to properly perform this
truncation.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index d381632..fe36b58 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -6743,7 +6743,7 @@ static void gen_st##name(DisasContext *ctx) \
tcg_temp_free(EA); \
}
-#define GEN_VR_LVE(name, opc2, opc3) \
+#define GEN_VR_LVE(name, opc2, opc3, size) \
static void gen_lve##name(DisasContext *ctx) \
{ \
TCGv EA; \
@@ -6755,13 +6755,16 @@ static void gen_lve##name(DisasContext *ctx) \
gen_set_access_type(ctx, ACCESS_INT); \
EA = tcg_temp_new(); \
gen_addr_reg_index(ctx, EA); \
+ if (size > 1) { \
+ tcg_gen_andi_tl(EA, EA, ~(size - 1)); \
+ } \
rs = gen_avr_ptr(rS(ctx->opcode)); \
gen_helper_lve##name(cpu_env, rs, EA); \
tcg_temp_free(EA); \
tcg_temp_free_ptr(rs); \
}
-#define GEN_VR_STVE(name, opc2, opc3) \
+#define GEN_VR_STVE(name, opc2, opc3, size) \
static void gen_stve##name(DisasContext *ctx) \
{ \
TCGv EA; \
@@ -6773,6 +6776,9 @@ static void gen_stve##name(DisasContext *ctx) \
gen_set_access_type(ctx, ACCESS_INT); \
EA = tcg_temp_new(); \
gen_addr_reg_index(ctx, EA); \
+ if (size > 1) { \
+ tcg_gen_andi_tl(EA, EA, ~(size - 1)); \
+ } \
rs = gen_avr_ptr(rS(ctx->opcode)); \
gen_helper_stve##name(cpu_env, rs, EA); \
tcg_temp_free(EA); \
@@ -6783,17 +6789,17 @@ GEN_VR_LDX(lvx, 0x07, 0x03);
/* As we don't emulate the cache, lvxl is stricly equivalent to lvx */
GEN_VR_LDX(lvxl, 0x07, 0x0B);
-GEN_VR_LVE(bx, 0x07, 0x00);
-GEN_VR_LVE(hx, 0x07, 0x01);
-GEN_VR_LVE(wx, 0x07, 0x02);
+GEN_VR_LVE(bx, 0x07, 0x00, 1);
+GEN_VR_LVE(hx, 0x07, 0x01, 2);
+GEN_VR_LVE(wx, 0x07, 0x02, 4);
GEN_VR_STX(svx, 0x07, 0x07);
/* As we don't emulate the cache, stvxl is stricly equivalent to stvx */
GEN_VR_STX(svxl, 0x07, 0x0F);
-GEN_VR_STVE(bx, 0x07, 0x04);
-GEN_VR_STVE(hx, 0x07, 0x05);
-GEN_VR_STVE(wx, 0x07, 0x06);
+GEN_VR_STVE(bx, 0x07, 0x04, 1);
+GEN_VR_STVE(hx, 0x07, 0x05, 2);
+GEN_VR_STVE(wx, 0x07, 0x06, 4);
static void gen_lvsl(DisasContext *ctx)
{
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 06/37] target-ppc: VXSQRT Should Not Be Set for NaNs
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (4 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 05/37] target-ppc: Load/Store Vector Element Storage Alignment Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-02-12 22:21 ` Maciej W. Rozycki
2015-01-07 15:20 ` [Qemu-devel] [PULL 07/37] target-ppc: Fix Floating Point Move Instructions That Set CR1 Alexander Graf
` (31 subsequent siblings)
37 siblings, 1 reply; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
The Power ISA square root instructions (fsqrt[s], frsqrte[s]) must
set the FPSCR[VXSQRT] flag when operating on a negative value.
However, NaNs have no sign and therefore this flag should not
be set when operating on one.
Change the order of the checks in the helper code. Move the
SNaN-to-QNaN macro to the top of the file so that it can be
re-used.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/fpu_helper.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 7f74466..81db60f 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -19,6 +19,9 @@
#include "cpu.h"
#include "exec/helper-proto.h"
+#define float64_snan_to_qnan(x) ((x) | 0x0008000000000000ULL)
+#define float32_snan_to_qnan(x) ((x) | 0x00400000)
+
/*****************************************************************************/
/* Floating point operations helpers */
uint64_t helper_float32_to_float64(CPUPPCState *env, uint32_t arg)
@@ -920,14 +923,16 @@ uint64_t helper_fsqrt(CPUPPCState *env, uint64_t arg)
farg.ll = arg;
- if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
- /* Square root of a negative nonzero number */
- farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
- } else {
+ if (unlikely(float64_is_any_nan(farg.d))) {
if (unlikely(float64_is_signaling_nan(farg.d))) {
- /* sNaN square root */
+ /* sNaN reciprocal square root */
fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1);
+ farg.ll = float64_snan_to_qnan(farg.ll);
}
+ } else if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
+ /* Square root of a negative nonzero number */
+ farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
+ } else {
farg.d = float64_sqrt(farg.d, &env->fp_status);
}
return farg.ll;
@@ -974,17 +979,20 @@ uint64_t helper_frsqrte(CPUPPCState *env, uint64_t arg)
farg.ll = arg;
- if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
- /* Reciprocal square root of a negative nonzero number */
- farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
- } else {
+ if (unlikely(float64_is_any_nan(farg.d))) {
if (unlikely(float64_is_signaling_nan(farg.d))) {
/* sNaN reciprocal square root */
fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1);
+ farg.ll = float64_snan_to_qnan(farg.ll);
}
+ } else if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
+ /* Reciprocal square root of a negative nonzero number */
+ farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
+ } else {
farg.d = float64_sqrt(farg.d, &env->fp_status);
farg.d = float64_div(float64_one, farg.d, &env->fp_status);
}
+
return farg.ll;
}
@@ -2382,9 +2390,6 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
VSX_SCALAR_CMP(xscmpodp, 1)
VSX_SCALAR_CMP(xscmpudp, 0)
-#define float64_snan_to_qnan(x) ((x) | 0x0008000000000000ULL)
-#define float32_snan_to_qnan(x) ((x) | 0x00400000)
-
/* VSX_MAX_MIN - VSX floating point maximum/minimum
* name - instruction mnemonic
* op - operation (max or min)
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* Re: [Qemu-devel] [PULL 06/37] target-ppc: VXSQRT Should Not Be Set for NaNs
2015-01-07 15:20 ` [Qemu-devel] [PULL 06/37] target-ppc: VXSQRT Should Not Be Set for NaNs Alexander Graf
@ 2015-02-12 22:21 ` Maciej W. Rozycki
2015-02-13 14:28 ` Tom Musta
2015-02-13 23:35 ` Alexander Graf
0 siblings, 2 replies; 42+ messages in thread
From: Maciej W. Rozycki @ 2015-02-12 22:21 UTC (permalink / raw)
To: Alexander Graf; +Cc: peter.maydell, qemu-ppc, qemu-devel, Tom Musta
On Wed, 7 Jan 2015, Alexander Graf wrote:
> diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
> index 7f74466..81db60f 100644
> --- a/target-ppc/fpu_helper.c
> +++ b/target-ppc/fpu_helper.c
> @@ -920,14 +923,16 @@ uint64_t helper_fsqrt(CPUPPCState *env, uint64_t arg)
>
> farg.ll = arg;
>
> - if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
> - /* Square root of a negative nonzero number */
> - farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> - } else {
> + if (unlikely(float64_is_any_nan(farg.d))) {
> if (unlikely(float64_is_signaling_nan(farg.d))) {
> - /* sNaN square root */
> + /* sNaN reciprocal square root */
This change to the comment looks accidental, compare the changes below.
Should it be reverted? [Found this while resolving merge conflicts.]
> fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1);
> + farg.ll = float64_snan_to_qnan(farg.ll);
> }
> + } else if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
> + /* Square root of a negative nonzero number */
> + farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> + } else {
> farg.d = float64_sqrt(farg.d, &env->fp_status);
> }
> return farg.ll;
> @@ -974,17 +979,20 @@ uint64_t helper_frsqrte(CPUPPCState *env, uint64_t arg)
>
> farg.ll = arg;
>
> - if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
> - /* Reciprocal square root of a negative nonzero number */
> - farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> - } else {
> + if (unlikely(float64_is_any_nan(farg.d))) {
> if (unlikely(float64_is_signaling_nan(farg.d))) {
> /* sNaN reciprocal square root */
> fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1);
> + farg.ll = float64_snan_to_qnan(farg.ll);
> }
> + } else if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
> + /* Reciprocal square root of a negative nonzero number */
> + farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> + } else {
> farg.d = float64_sqrt(farg.d, &env->fp_status);
> farg.d = float64_div(float64_one, farg.d, &env->fp_status);
> }
> +
> return farg.ll;
> }
>
Maciej
^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [Qemu-devel] [PULL 06/37] target-ppc: VXSQRT Should Not Be Set for NaNs
2015-02-12 22:21 ` Maciej W. Rozycki
@ 2015-02-13 14:28 ` Tom Musta
2015-02-13 23:35 ` Alexander Graf
1 sibling, 0 replies; 42+ messages in thread
From: Tom Musta @ 2015-02-13 14:28 UTC (permalink / raw)
To: Maciej W. Rozycki
Cc: Peter Maydell, qemu-ppc@nongnu.org, Alexander Graf,
QEMU Developers
[-- Attachment #1: Type: text/plain, Size: 2687 bytes --]
I agree that the comment is incorrect and should say "sNaN square root".
On Thu, Feb 12, 2015 at 4:21 PM, Maciej W. Rozycki <macro@linux-mips.org>
wrote:
> On Wed, 7 Jan 2015, Alexander Graf wrote:
>
> > diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
> > index 7f74466..81db60f 100644
> > --- a/target-ppc/fpu_helper.c
> > +++ b/target-ppc/fpu_helper.c
> > @@ -920,14 +923,16 @@ uint64_t helper_fsqrt(CPUPPCState *env, uint64_t
> arg)
> >
> > farg.ll = arg;
> >
> > - if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
> > - /* Square root of a negative nonzero number */
> > - farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> > - } else {
> > + if (unlikely(float64_is_any_nan(farg.d))) {
> > if (unlikely(float64_is_signaling_nan(farg.d))) {
> > - /* sNaN square root */
> > + /* sNaN reciprocal square root */
>
> This change to the comment looks accidental, compare the changes below.
> Should it be reverted? [Found this while resolving merge conflicts.]
>
> > fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1);
> > + farg.ll = float64_snan_to_qnan(farg.ll);
> > }
> > + } else if (unlikely(float64_is_neg(farg.d) &&
> !float64_is_zero(farg.d))) {
> > + /* Square root of a negative nonzero number */
> > + farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> > + } else {
> > farg.d = float64_sqrt(farg.d, &env->fp_status);
> > }
> > return farg.ll;
> > @@ -974,17 +979,20 @@ uint64_t helper_frsqrte(CPUPPCState *env, uint64_t
> arg)
> >
> > farg.ll = arg;
> >
> > - if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
> > - /* Reciprocal square root of a negative nonzero number */
> > - farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> > - } else {
> > + if (unlikely(float64_is_any_nan(farg.d))) {
> > if (unlikely(float64_is_signaling_nan(farg.d))) {
> > /* sNaN reciprocal square root */
> > fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1);
> > + farg.ll = float64_snan_to_qnan(farg.ll);
> > }
> > + } else if (unlikely(float64_is_neg(farg.d) &&
> !float64_is_zero(farg.d))) {
> > + /* Reciprocal square root of a negative nonzero number */
> > + farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
> > + } else {
> > farg.d = float64_sqrt(farg.d, &env->fp_status);
> > farg.d = float64_div(float64_one, farg.d, &env->fp_status);
> > }
> > +
> > return farg.ll;
> > }
> >
>
> Maciej
>
[-- Attachment #2: Type: text/html, Size: 3672 bytes --]
^ permalink raw reply [flat|nested] 42+ messages in thread
* Re: [Qemu-devel] [PULL 06/37] target-ppc: VXSQRT Should Not Be Set for NaNs
2015-02-12 22:21 ` Maciej W. Rozycki
2015-02-13 14:28 ` Tom Musta
@ 2015-02-13 23:35 ` Alexander Graf
1 sibling, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-02-13 23:35 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: peter.maydell, qemu-ppc, qemu-devel, Tom Musta
On 12.02.15 23:21, Maciej W. Rozycki wrote:
> On Wed, 7 Jan 2015, Alexander Graf wrote:
>
>> diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
>> index 7f74466..81db60f 100644
>> --- a/target-ppc/fpu_helper.c
>> +++ b/target-ppc/fpu_helper.c
>> @@ -920,14 +923,16 @@ uint64_t helper_fsqrt(CPUPPCState *env, uint64_t arg)
>>
>> farg.ll = arg;
>>
>> - if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) {
>> - /* Square root of a negative nonzero number */
>> - farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1);
>> - } else {
>> + if (unlikely(float64_is_any_nan(farg.d))) {
>> if (unlikely(float64_is_signaling_nan(farg.d))) {
>> - /* sNaN square root */
>> + /* sNaN reciprocal square root */
>
> This change to the comment looks accidental, compare the changes below.
> Should it be reverted? [Found this while resolving merge conflicts.]
Nicely spotted. Could you please cook up a small patch fixing it?
Thanks!
Alex
^ permalink raw reply [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 07/37] target-ppc: Fix Floating Point Move Instructions That Set CR1
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (5 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 06/37] target-ppc: VXSQRT Should Not Be Set for NaNs Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 08/37] target-ppc: mffs. Should Set CR1 from FPSCR Bits Alexander Graf
` (30 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
The Floating Point Move instructions (fmr., fabs., fnabs., fneg.,
and fcpsgn.) incorrectly copy FPSCR[FPCC] instead of [FX,FEX,VX,OX].
Furthermore, the current code does this via a call to gen_compute_fprf,
which is awkward since these instructions do not actually set FPRF.
Change the code to use the gen_set_cr1_from_fpscr utility.
Signed-off-by: Tom Musta <tommusta@gmail.com>
[agraf: whitespace fixes]
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 50 ++++++++++++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 20 deletions(-)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index fe36b58..35c3a16 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -2077,6 +2077,21 @@ static void gen_srd(DisasContext *ctx)
}
#endif
+#if defined(TARGET_PPC64)
+static void gen_set_cr1_from_fpscr(DisasContext *ctx)
+{
+ TCGv_i32 tmp = tcg_temp_new_i32();
+ tcg_gen_trunc_tl_i32(tmp, cpu_fpscr);
+ tcg_gen_shri_i32(cpu_crf[1], tmp, 28);
+ tcg_temp_free_i32(tmp);
+}
+#else
+static void gen_set_cr1_from_fpscr(DisasContext *ctx)
+{
+ tcg_gen_shri_tl(cpu_crf[1], cpu_fpscr, 28);
+}
+#endif
+
/*** Floating-Point arithmetic ***/
#define _GEN_FLOAT_ACB(name, op, op1, op2, isfloat, set_fprf, type) \
static void gen_f##name(DisasContext *ctx) \
@@ -2370,7 +2385,9 @@ static void gen_fabs(DisasContext *ctx)
}
tcg_gen_andi_i64(cpu_fpr[rD(ctx->opcode)], cpu_fpr[rB(ctx->opcode)],
~(1ULL << 63));
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 0, Rc(ctx->opcode) != 0);
+ if (unlikely(Rc(ctx->opcode))) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
/* fmr - fmr. */
@@ -2382,7 +2399,9 @@ static void gen_fmr(DisasContext *ctx)
return;
}
tcg_gen_mov_i64(cpu_fpr[rD(ctx->opcode)], cpu_fpr[rB(ctx->opcode)]);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 0, Rc(ctx->opcode) != 0);
+ if (unlikely(Rc(ctx->opcode))) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
/* fnabs */
@@ -2395,7 +2414,9 @@ static void gen_fnabs(DisasContext *ctx)
}
tcg_gen_ori_i64(cpu_fpr[rD(ctx->opcode)], cpu_fpr[rB(ctx->opcode)],
1ULL << 63);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 0, Rc(ctx->opcode) != 0);
+ if (unlikely(Rc(ctx->opcode))) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
/* fneg */
@@ -2408,7 +2429,9 @@ static void gen_fneg(DisasContext *ctx)
}
tcg_gen_xori_i64(cpu_fpr[rD(ctx->opcode)], cpu_fpr[rB(ctx->opcode)],
1ULL << 63);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 0, Rc(ctx->opcode) != 0);
+ if (unlikely(Rc(ctx->opcode))) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
/* fcpsgn: PowerPC 2.05 specification */
@@ -2421,7 +2444,9 @@ static void gen_fcpsgn(DisasContext *ctx)
}
tcg_gen_deposit_i64(cpu_fpr[rD(ctx->opcode)], cpu_fpr[rA(ctx->opcode)],
cpu_fpr[rB(ctx->opcode)], 0, 63);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 0, Rc(ctx->opcode) != 0);
+ if (unlikely(Rc(ctx->opcode))) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
static void gen_fmrgew(DisasContext *ctx)
@@ -8211,21 +8236,6 @@ static inline TCGv_ptr gen_fprp_ptr(int reg)
return r;
}
-#if defined(TARGET_PPC64)
-static void gen_set_cr1_from_fpscr(DisasContext *ctx)
-{
- TCGv_i32 tmp = tcg_temp_new_i32();
- tcg_gen_trunc_tl_i32(tmp, cpu_fpscr);
- tcg_gen_shri_i32(cpu_crf[1], tmp, 28);
- tcg_temp_free_i32(tmp);
-}
-#else
-static void gen_set_cr1_from_fpscr(DisasContext *ctx)
-{
- tcg_gen_shri_tl(cpu_crf[1], cpu_fpscr, 28);
-}
-#endif
-
#define GEN_DFP_T_A_B_Rc(name) \
static void gen_##name(DisasContext *ctx) \
{ \
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 08/37] target-ppc: mffs. Should Set CR1 from FPSCR Bits
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (6 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 07/37] target-ppc: Fix Floating Point Move Instructions That Set CR1 Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 09/37] target-ppc: Fully Migrate to gen_set_cr1_from_fpscr Alexander Graf
` (29 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Update the Move From FPSCR (mffs.) instruction to correctly
set CR[1] from FPSCR[FX,FEX,VX,OX].
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 35c3a16..32c9f49 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -2504,7 +2504,9 @@ static void gen_mffs(DisasContext *ctx)
}
gen_reset_fpstatus();
tcg_gen_extu_tl_i64(cpu_fpr[rD(ctx->opcode)], cpu_fpscr);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 0, Rc(ctx->opcode) != 0);
+ if (unlikely(Rc(ctx->opcode))) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
/* mtfsb0 */
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 09/37] target-ppc: Fully Migrate to gen_set_cr1_from_fpscr
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (7 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 08/37] target-ppc: mffs. Should Set CR1 from FPSCR Bits Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 10/37] target-ppc: Eliminate set_fprf Argument From gen_compute_fprf Alexander Graf
` (28 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Eliminate the set_rc argument from the gen_compute_fprf utility and
the corresponding (and incorrect) implementation. Replace it with
calls to the gen_set_cr1_from_fpscr() utility.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 55 ++++++++++++++++++++++++++++++--------------------
1 file changed, 33 insertions(+), 22 deletions(-)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 32c9f49..18cd8c4 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -250,7 +250,7 @@ static inline void gen_reset_fpstatus(void)
gen_helper_reset_fpstatus(cpu_env);
}
-static inline void gen_compute_fprf(TCGv_i64 arg, int set_fprf, int set_rc)
+static inline void gen_compute_fprf(TCGv_i64 arg, int set_fprf)
{
TCGv_i32 t0 = tcg_temp_new_i32();
@@ -258,15 +258,7 @@ static inline void gen_compute_fprf(TCGv_i64 arg, int set_fprf, int set_rc)
/* This case might be optimized later */
tcg_gen_movi_i32(t0, 1);
gen_helper_compute_fprf(t0, cpu_env, arg, t0);
- if (unlikely(set_rc)) {
- tcg_gen_mov_i32(cpu_crf[1], t0);
- }
gen_helper_float_check_status(cpu_env);
- } else if (unlikely(set_rc)) {
- /* We always need to compute fpcc */
- tcg_gen_movi_i32(t0, 0);
- gen_helper_compute_fprf(t0, cpu_env, arg, t0);
- tcg_gen_mov_i32(cpu_crf[1], t0);
}
tcg_temp_free_i32(t0);
@@ -2110,8 +2102,10 @@ static void gen_f##name(DisasContext *ctx) \
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rD(ctx->opcode)]); \
} \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf, \
- Rc(ctx->opcode) != 0); \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (unlikely(Rc(ctx->opcode) != 0)) { \
+ gen_set_cr1_from_fpscr(ctx); \
+ } \
}
#define GEN_FLOAT_ACB(name, op2, set_fprf, type) \
@@ -2135,8 +2129,10 @@ static void gen_f##name(DisasContext *ctx) \
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rD(ctx->opcode)]); \
} \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], \
- set_fprf, Rc(ctx->opcode) != 0); \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (unlikely(Rc(ctx->opcode) != 0)) { \
+ gen_set_cr1_from_fpscr(ctx); \
+ } \
}
#define GEN_FLOAT_AB(name, op2, inval, set_fprf, type) \
_GEN_FLOAT_AB(name, name, 0x3F, op2, inval, 0, set_fprf, type); \
@@ -2159,8 +2155,10 @@ static void gen_f##name(DisasContext *ctx) \
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rD(ctx->opcode)]); \
} \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], \
- set_fprf, Rc(ctx->opcode) != 0); \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (unlikely(Rc(ctx->opcode) != 0)) { \
+ gen_set_cr1_from_fpscr(ctx); \
+ } \
}
#define GEN_FLOAT_AC(name, op2, inval, set_fprf, type) \
_GEN_FLOAT_AC(name, name, 0x3F, op2, inval, 0, set_fprf, type); \
@@ -2178,8 +2176,10 @@ static void gen_f##name(DisasContext *ctx) \
gen_reset_fpstatus(); \
gen_helper_f##name(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rB(ctx->opcode)]); \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], \
- set_fprf, Rc(ctx->opcode) != 0); \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (unlikely(Rc(ctx->opcode) != 0)) { \
+ gen_set_cr1_from_fpscr(ctx); \
+ } \
}
#define GEN_FLOAT_BS(name, op1, op2, set_fprf, type) \
@@ -2194,8 +2194,10 @@ static void gen_f##name(DisasContext *ctx) \
gen_reset_fpstatus(); \
gen_helper_f##name(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rB(ctx->opcode)]); \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], \
- set_fprf, Rc(ctx->opcode) != 0); \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (unlikely(Rc(ctx->opcode) != 0)) { \
+ gen_set_cr1_from_fpscr(ctx); \
+ } \
}
/* fadd - fadds */
@@ -2228,7 +2230,10 @@ static void gen_frsqrtes(DisasContext *ctx)
cpu_fpr[rB(ctx->opcode)]);
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env,
cpu_fpr[rD(ctx->opcode)]);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1, Rc(ctx->opcode) != 0);
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1);
+ if (unlikely(Rc(ctx->opcode) != 0)) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
/* fsel */
@@ -2249,7 +2254,10 @@ static void gen_fsqrt(DisasContext *ctx)
gen_reset_fpstatus();
gen_helper_fsqrt(cpu_fpr[rD(ctx->opcode)], cpu_env,
cpu_fpr[rB(ctx->opcode)]);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1, Rc(ctx->opcode) != 0);
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1);
+ if (unlikely(Rc(ctx->opcode) != 0)) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
static void gen_fsqrts(DisasContext *ctx)
@@ -2265,7 +2273,10 @@ static void gen_fsqrts(DisasContext *ctx)
cpu_fpr[rB(ctx->opcode)]);
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env,
cpu_fpr[rD(ctx->opcode)]);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1, Rc(ctx->opcode) != 0);
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1);
+ if (unlikely(Rc(ctx->opcode) != 0)) {
+ gen_set_cr1_from_fpscr(ctx);
+ }
}
/*** Floating-Point multiply-and-add ***/
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 10/37] target-ppc: Eliminate set_fprf Argument From gen_compute_fprf
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (8 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 09/37] target-ppc: Fully Migrate to gen_set_cr1_from_fpscr Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 11/37] target-ppc: Eliminate set_fprf Argument From helper_compute_fprf Alexander Graf
` (27 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
The set_fprf argument to the gen_compute_fprf() utility is no longer
needed -- gen_compute_fprf() is now called only when FPRF is actually
computed and set. Eliminate the obsolete argument.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 38 +++++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 18cd8c4..598f02e 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -250,16 +250,14 @@ static inline void gen_reset_fpstatus(void)
gen_helper_reset_fpstatus(cpu_env);
}
-static inline void gen_compute_fprf(TCGv_i64 arg, int set_fprf)
+static inline void gen_compute_fprf(TCGv_i64 arg)
{
TCGv_i32 t0 = tcg_temp_new_i32();
- if (set_fprf != 0) {
- /* This case might be optimized later */
- tcg_gen_movi_i32(t0, 1);
- gen_helper_compute_fprf(t0, cpu_env, arg, t0);
- gen_helper_float_check_status(cpu_env);
- }
+ /* This case might be optimized later */
+ tcg_gen_movi_i32(t0, 1);
+ gen_helper_compute_fprf(t0, cpu_env, arg, t0);
+ gen_helper_float_check_status(cpu_env);
tcg_temp_free_i32(t0);
}
@@ -2102,7 +2100,9 @@ static void gen_f##name(DisasContext *ctx) \
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rD(ctx->opcode)]); \
} \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (set_fprf) { \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]); \
+ } \
if (unlikely(Rc(ctx->opcode) != 0)) { \
gen_set_cr1_from_fpscr(ctx); \
} \
@@ -2129,7 +2129,9 @@ static void gen_f##name(DisasContext *ctx) \
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rD(ctx->opcode)]); \
} \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (set_fprf) { \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]); \
+ } \
if (unlikely(Rc(ctx->opcode) != 0)) { \
gen_set_cr1_from_fpscr(ctx); \
} \
@@ -2155,7 +2157,9 @@ static void gen_f##name(DisasContext *ctx) \
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rD(ctx->opcode)]); \
} \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (set_fprf) { \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]); \
+ } \
if (unlikely(Rc(ctx->opcode) != 0)) { \
gen_set_cr1_from_fpscr(ctx); \
} \
@@ -2176,7 +2180,9 @@ static void gen_f##name(DisasContext *ctx) \
gen_reset_fpstatus(); \
gen_helper_f##name(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rB(ctx->opcode)]); \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (set_fprf) { \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]); \
+ } \
if (unlikely(Rc(ctx->opcode) != 0)) { \
gen_set_cr1_from_fpscr(ctx); \
} \
@@ -2194,7 +2200,9 @@ static void gen_f##name(DisasContext *ctx) \
gen_reset_fpstatus(); \
gen_helper_f##name(cpu_fpr[rD(ctx->opcode)], cpu_env, \
cpu_fpr[rB(ctx->opcode)]); \
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], set_fprf); \
+ if (set_fprf) { \
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]); \
+ } \
if (unlikely(Rc(ctx->opcode) != 0)) { \
gen_set_cr1_from_fpscr(ctx); \
} \
@@ -2230,7 +2238,7 @@ static void gen_frsqrtes(DisasContext *ctx)
cpu_fpr[rB(ctx->opcode)]);
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env,
cpu_fpr[rD(ctx->opcode)]);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1);
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]);
if (unlikely(Rc(ctx->opcode) != 0)) {
gen_set_cr1_from_fpscr(ctx);
}
@@ -2254,7 +2262,7 @@ static void gen_fsqrt(DisasContext *ctx)
gen_reset_fpstatus();
gen_helper_fsqrt(cpu_fpr[rD(ctx->opcode)], cpu_env,
cpu_fpr[rB(ctx->opcode)]);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1);
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]);
if (unlikely(Rc(ctx->opcode) != 0)) {
gen_set_cr1_from_fpscr(ctx);
}
@@ -2273,7 +2281,7 @@ static void gen_fsqrts(DisasContext *ctx)
cpu_fpr[rB(ctx->opcode)]);
gen_helper_frsp(cpu_fpr[rD(ctx->opcode)], cpu_env,
cpu_fpr[rD(ctx->opcode)]);
- gen_compute_fprf(cpu_fpr[rD(ctx->opcode)], 1);
+ gen_compute_fprf(cpu_fpr[rD(ctx->opcode)]);
if (unlikely(Rc(ctx->opcode) != 0)) {
gen_set_cr1_from_fpscr(ctx);
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 11/37] target-ppc: Eliminate set_fprf Argument From helper_compute_fprf
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (9 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 10/37] target-ppc: Eliminate set_fprf Argument From gen_compute_fprf Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 12/37] target-ppc: explicitly save page table headers in big endian Alexander Graf
` (26 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
The set_fprf argument to the helper_compute_fprf helper function
is no longer necessary -- the helper is only invoked when FPSCR[FPRF]
is going to be set.
Eliminate the unnecessary argument from the function signature and
its corresponding implementation. Change the return value of the
helper to "void". Update the name of the local variable "ret" to
"fprf", which now makes more sense.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/fpu_helper.c | 56 +++++++++++++++++++++++--------------------------
target-ppc/helper.h | 2 +-
target-ppc/translate.c | 8 +------
3 files changed, 28 insertions(+), 38 deletions(-)
diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 81db60f..6cceffc 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -63,59 +63,55 @@ static inline int ppc_float64_get_unbiased_exp(float64 f)
return ((f >> 52) & 0x7FF) - 1023;
}
-uint32_t helper_compute_fprf(CPUPPCState *env, uint64_t arg, uint32_t set_fprf)
+void helper_compute_fprf(CPUPPCState *env, uint64_t arg)
{
CPU_DoubleU farg;
int isneg;
- int ret;
+ int fprf;
farg.ll = arg;
isneg = float64_is_neg(farg.d);
if (unlikely(float64_is_any_nan(farg.d))) {
if (float64_is_signaling_nan(farg.d)) {
/* Signaling NaN: flags are undefined */
- ret = 0x00;
+ fprf = 0x00;
} else {
/* Quiet NaN */
- ret = 0x11;
+ fprf = 0x11;
}
} else if (unlikely(float64_is_infinity(farg.d))) {
/* +/- infinity */
if (isneg) {
- ret = 0x09;
+ fprf = 0x09;
} else {
- ret = 0x05;
+ fprf = 0x05;
}
} else {
if (float64_is_zero(farg.d)) {
/* +/- zero */
if (isneg) {
- ret = 0x12;
+ fprf = 0x12;
} else {
- ret = 0x02;
+ fprf = 0x02;
}
} else {
if (isden(farg.d)) {
/* Denormalized numbers */
- ret = 0x10;
+ fprf = 0x10;
} else {
/* Normalized numbers */
- ret = 0x00;
+ fprf = 0x00;
}
if (isneg) {
- ret |= 0x08;
+ fprf |= 0x08;
} else {
- ret |= 0x04;
+ fprf |= 0x04;
}
}
}
- if (set_fprf) {
- /* We update FPSCR_FPRF */
- env->fpscr &= ~(0x1F << FPSCR_FPRF);
- env->fpscr |= ret << FPSCR_FPRF;
- }
- /* We just need fpcc to update Rc1 */
- return ret & 0xF;
+ /* We update FPSCR_FPRF */
+ env->fpscr &= ~(0x1F << FPSCR_FPRF);
+ env->fpscr |= fprf << FPSCR_FPRF;
}
/* Floating-point invalid operations exception */
@@ -1853,7 +1849,7 @@ void helper_##name(CPUPPCState *env, uint32_t opcode) \
} \
\
if (sfprf) { \
- helper_compute_fprf(env, xt.fld, sfprf); \
+ helper_compute_fprf(env, xt.fld); \
} \
} \
putVSR(xT(opcode), &xt, env); \
@@ -1908,7 +1904,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
} \
\
if (sfprf) { \
- helper_compute_fprf(env, xt.fld, sfprf); \
+ helper_compute_fprf(env, xt.fld); \
} \
} \
\
@@ -1962,7 +1958,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
} \
\
if (sfprf) { \
- helper_compute_fprf(env, xt.fld, sfprf); \
+ helper_compute_fprf(env, xt.fld); \
} \
} \
\
@@ -2003,7 +1999,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
} \
\
if (sfprf) { \
- helper_compute_fprf(env, xt.fld, sfprf); \
+ helper_compute_fprf(env, xt.fld); \
} \
} \
\
@@ -2052,7 +2048,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
} \
\
if (sfprf) { \
- helper_compute_fprf(env, xt.fld, sfprf); \
+ helper_compute_fprf(env, xt.fld); \
} \
} \
\
@@ -2102,7 +2098,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
} \
\
if (sfprf) { \
- helper_compute_fprf(env, xt.fld, sfprf); \
+ helper_compute_fprf(env, xt.fld); \
} \
} \
\
@@ -2302,7 +2298,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
} \
\
if (sfprf) { \
- helper_compute_fprf(env, xt_out.fld, sfprf); \
+ helper_compute_fprf(env, xt_out.fld); \
} \
} \
putVSR(xT(opcode), &xt_out, env); \
@@ -2509,7 +2505,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
} \
if (sfprf) { \
helper_compute_fprf(env, ttp##_to_float64(xt.tfld, \
- &env->fp_status), sfprf); \
+ &env->fp_status)); \
} \
} \
\
@@ -2619,7 +2615,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
xt.tfld = helper_frsp(env, xt.tfld); \
} \
if (sfprf) { \
- helper_compute_fprf(env, xt.tfld, sfprf); \
+ helper_compute_fprf(env, xt.tfld); \
} \
} \
\
@@ -2674,7 +2670,7 @@ void helper_##op(CPUPPCState *env, uint32_t opcode) \
xt.fld = tp##_round_to_int(xb.fld, &env->fp_status); \
} \
if (sfprf) { \
- helper_compute_fprf(env, xt.fld, sfprf); \
+ helper_compute_fprf(env, xt.fld); \
} \
} \
\
@@ -2714,7 +2710,7 @@ uint64_t helper_xsrsp(CPUPPCState *env, uint64_t xb)
uint64_t xt = helper_frsp(env, xb);
- helper_compute_fprf(env, xt, 1);
+ helper_compute_fprf(env, xt);
helper_float_check_status(env);
return xt;
}
diff --git a/target-ppc/helper.h b/target-ppc/helper.h
index 210fd97..2841f61 100644
--- a/target-ppc/helper.h
+++ b/target-ppc/helper.h
@@ -52,7 +52,7 @@ DEF_HELPER_FLAGS_2(brinc, TCG_CALL_NO_RWG_SE, tl, tl, tl)
DEF_HELPER_1(float_check_status, void, env)
DEF_HELPER_1(reset_fpstatus, void, env)
-DEF_HELPER_3(compute_fprf, i32, env, i64, i32)
+DEF_HELPER_2(compute_fprf, void, env, i64)
DEF_HELPER_3(store_fpscr, void, env, i64, i32)
DEF_HELPER_2(fpscr_clrbit, void, env, i32)
DEF_HELPER_2(fpscr_setbit, void, env, i32)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 598f02e..a772382 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -252,14 +252,8 @@ static inline void gen_reset_fpstatus(void)
static inline void gen_compute_fprf(TCGv_i64 arg)
{
- TCGv_i32 t0 = tcg_temp_new_i32();
-
- /* This case might be optimized later */
- tcg_gen_movi_i32(t0, 1);
- gen_helper_compute_fprf(t0, cpu_env, arg, t0);
+ gen_helper_compute_fprf(cpu_env, arg);
gen_helper_float_check_status(cpu_env);
-
- tcg_temp_free_i32(t0);
}
static inline void gen_set_access_type(DisasContext *ctx, int access_type)
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 12/37] target-ppc: explicitly save page table headers in big endian
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (10 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 11/37] target-ppc: Eliminate set_fprf Argument From helper_compute_fprf Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 13/37] spapr: Fix stale HTAB during live migration (KVM) Alexander Graf
` (25 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, Cédric Le Goater, qemu-devel
From: Cédric Le Goater <clg@fr.ibm.com>
Currently, when the page tables are saved, the kvm_get_htab_header structs
and the ptes are assumed being big endian and dumped as a indistinct blob
in the statefile. This is no longer true when the host is little endian
and this breaks restoration.
This patch unfolds the kvmppc_save_htab routine to write explicitly the
kvm_get_htab_header structs in big endian. The ptes are left untouched.
Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/kvm.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 6843fa0..911f912 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -2246,8 +2246,23 @@ int kvmppc_save_htab(QEMUFile *f, int fd, size_t bufsize, int64_t max_ns)
strerror(errno));
return rc;
} else if (rc) {
- /* Kernel already retuns data in BE format for the file */
- qemu_put_buffer(f, buf, rc);
+ uint8_t *buffer = buf;
+ ssize_t n = rc;
+ while (n) {
+ struct kvm_get_htab_header *head =
+ (struct kvm_get_htab_header *) buffer;
+ size_t chunksize = sizeof(*head) +
+ HASH_PTE_SIZE_64 * head->n_valid;
+
+ qemu_put_be32(f, head->index);
+ qemu_put_be16(f, head->n_valid);
+ qemu_put_be16(f, head->n_invalid);
+ qemu_put_buffer(f, (void *)(head + 1),
+ HASH_PTE_SIZE_64 * head->n_valid);
+
+ buffer += chunksize;
+ n -= chunksize;
+ }
}
} while ((rc != 0)
&& ((max_ns < 0)
@@ -2264,7 +2279,6 @@ int kvmppc_load_htab_chunk(QEMUFile *f, int fd, uint32_t index,
ssize_t rc;
buf = alloca(chunksize);
- /* This is KVM on ppc, so this is all big-endian */
buf->index = index;
buf->n_valid = n_valid;
buf->n_invalid = n_invalid;
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 13/37] spapr: Fix stale HTAB during live migration (KVM)
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (11 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 12/37] target-ppc: explicitly save page table headers in big endian Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 14/37] spapr: Fix integer overflow during migration (TCG) Alexander Graf
` (24 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, Samuel Mendoza-Jonas, qemu-devel
From: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
If a guest reboots during a running migration, changes to the
hash page table are not necessarily updated on the destination.
Opening a new file descriptor to the HTAB forces the migration
handler to resend the entire table.
Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/spapr.c | 38 ++++++++++++++++++++++++++++++++++++++
include/hw/ppc/spapr.h | 1 +
2 files changed, 39 insertions(+)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 08401e0..869b721 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -833,6 +833,11 @@ static void spapr_reset_htab(sPAPREnvironment *spapr)
/* Kernel handles htab, we don't need to allocate one */
spapr->htab_shift = shift;
kvmppc_kern_htab = true;
+
+ /* Tell readers to update their file descriptor */
+ if (spapr->htab_fd >= 0) {
+ spapr->htab_fd_stale = true;
+ }
} else {
if (!spapr->htab) {
/* Allocate an htab if we don't yet have one */
@@ -867,6 +872,28 @@ static int find_unknown_sysbus_device(SysBusDevice *sbdev, void *opaque)
return 0;
}
+/*
+ * A guest reset will cause spapr->htab_fd to become stale if being used.
+ * Reopen the file descriptor to make sure the whole HTAB is properly read.
+ */
+static int spapr_check_htab_fd(sPAPREnvironment *spapr)
+{
+ int rc = 0;
+
+ if (spapr->htab_fd_stale) {
+ close(spapr->htab_fd);
+ spapr->htab_fd = kvmppc_get_htab_fd(false);
+ if (spapr->htab_fd < 0) {
+ error_report("Unable to open fd for reading hash table from KVM: "
+ "%s", strerror(errno));
+ rc = -1;
+ }
+ spapr->htab_fd_stale = false;
+ }
+
+ return rc;
+}
+
static void ppc_spapr_reset(void)
{
PowerPCCPU *first_ppc_cpu;
@@ -1005,6 +1032,7 @@ static int htab_save_setup(QEMUFile *f, void *opaque)
assert(kvm_enabled());
spapr->htab_fd = kvmppc_get_htab_fd(false);
+ spapr->htab_fd_stale = false;
if (spapr->htab_fd < 0) {
fprintf(stderr, "Unable to open fd for reading hash table from KVM: %s\n",
strerror(errno));
@@ -1157,6 +1185,11 @@ static int htab_save_iterate(QEMUFile *f, void *opaque)
if (!spapr->htab) {
assert(kvm_enabled());
+ rc = spapr_check_htab_fd(spapr);
+ if (rc < 0) {
+ return rc;
+ }
+
rc = kvmppc_save_htab(f, spapr->htab_fd,
MAX_KVM_BUF_SIZE, MAX_ITERATION_NS);
if (rc < 0) {
@@ -1188,6 +1221,11 @@ static int htab_save_complete(QEMUFile *f, void *opaque)
assert(kvm_enabled());
+ rc = spapr_check_htab_fd(spapr);
+ if (rc < 0) {
+ return rc;
+ }
+
rc = kvmppc_save_htab(f, spapr->htab_fd, MAX_KVM_BUF_SIZE, -1);
if (rc < 0) {
return rc;
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 749daf4..716bff4 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -37,6 +37,7 @@ typedef struct sPAPREnvironment {
int htab_save_index;
bool htab_first_pass;
int htab_fd;
+ bool htab_fd_stale;
} sPAPREnvironment;
#define H_SUCCESS 0
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 14/37] spapr: Fix integer overflow during migration (TCG)
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (12 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 13/37] spapr: Fix stale HTAB during live migration (KVM) Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 15/37] spapr: Fix stale HTAB during live " Alexander Graf
` (23 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, Samuel Mendoza-Jonas, qemu-devel
From: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
The n_valid and n_invalid fields are unsigned short integers but it is
possible to have more than 65535 entries in a contiguous hunk, overflowing
the field. This results in an incorrect HTAB being sent to the destination
during migration.
Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/spapr.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 869b721..765a44c 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1065,7 +1065,7 @@ static void htab_save_first_pass(QEMUFile *f, sPAPREnvironment *spapr,
/* Consume valid HPTEs */
chunkstart = index;
- while ((index < htabslots)
+ while ((index < htabslots) && (index - chunkstart < USHRT_MAX)
&& HPTE_VALID(HPTE(spapr->htab, index))) {
index++;
CLEAN_HPTE(HPTE(spapr->htab, index));
@@ -1117,7 +1117,7 @@ static int htab_save_later_pass(QEMUFile *f, sPAPREnvironment *spapr,
chunkstart = index;
/* Consume valid dirty HPTEs */
- while ((index < htabslots)
+ while ((index < htabslots) && (index - chunkstart < USHRT_MAX)
&& HPTE_DIRTY(HPTE(spapr->htab, index))
&& HPTE_VALID(HPTE(spapr->htab, index))) {
CLEAN_HPTE(HPTE(spapr->htab, index));
@@ -1127,7 +1127,7 @@ static int htab_save_later_pass(QEMUFile *f, sPAPREnvironment *spapr,
invalidstart = index;
/* Consume invalid dirty HPTEs */
- while ((index < htabslots)
+ while ((index < htabslots) && (index - invalidstart < USHRT_MAX)
&& HPTE_DIRTY(HPTE(spapr->htab, index))
&& !HPTE_VALID(HPTE(spapr->htab, index))) {
CLEAN_HPTE(HPTE(spapr->htab, index));
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 15/37] spapr: Fix stale HTAB during live migration (TCG)
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (13 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 14/37] spapr: Fix integer overflow during migration (TCG) Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 16/37] device-tree: fix memory leak Alexander Graf
` (22 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, Samuel Mendoza-Jonas, qemu-devel
From: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
If a TCG guest reboots during a running migration HTAB entries are not
marked dirty, and the destination boots with an invalid HTAB.
When a reboot occurs, explicitly mark the current HTAB dirty after
clearing it.
Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/spapr.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 765a44c..720aab5 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -819,9 +819,16 @@ static void emulate_spapr_hypercall(PowerPCCPU *cpu)
}
}
+#define HPTE(_table, _i) (void *)(((uint64_t *)(_table)) + ((_i) * 2))
+#define HPTE_VALID(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_VALID)
+#define HPTE_DIRTY(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_HPTE_DIRTY)
+#define CLEAN_HPTE(_hpte) ((*(uint64_t *)(_hpte)) &= tswap64(~HPTE64_V_HPTE_DIRTY))
+#define DIRTY_HPTE(_hpte) ((*(uint64_t *)(_hpte)) |= tswap64(HPTE64_V_HPTE_DIRTY))
+
static void spapr_reset_htab(sPAPREnvironment *spapr)
{
long shift;
+ int index;
/* allocate hash page table. For now we always make this 16mb,
* later we should probably make it scale to the size of guest
@@ -846,6 +853,10 @@ static void spapr_reset_htab(sPAPREnvironment *spapr)
/* And clear it */
memset(spapr->htab, 0, HTAB_SIZE(spapr));
+
+ for (index = 0; index < HTAB_SIZE(spapr) / HASH_PTE_SIZE_64; index++) {
+ DIRTY_HPTE(HPTE(spapr->htab, index));
+ }
}
/* Update the RMA size if necessary */
@@ -1013,11 +1024,6 @@ static const VMStateDescription vmstate_spapr = {
},
};
-#define HPTE(_table, _i) (void *)(((uint64_t *)(_table)) + ((_i) * 2))
-#define HPTE_VALID(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_VALID)
-#define HPTE_DIRTY(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_HPTE_DIRTY)
-#define CLEAN_HPTE(_hpte) ((*(uint64_t *)(_hpte)) &= tswap64(~HPTE64_V_HPTE_DIRTY))
-
static int htab_save_setup(QEMUFile *f, void *opaque)
{
sPAPREnvironment *spapr = opaque;
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 16/37] device-tree: fix memory leak
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (14 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 15/37] spapr: Fix stale HTAB during live " Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 17/37] ppc: do not use get_clock_realtime() Alexander Graf
` (21 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Sergey Fedorov
From: Sergey Fedorov <serge.fdrv@gmail.com>
Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
device_tree.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/device_tree.c b/device_tree.c
index df9eed9..4cb1cd5 100644
--- a/device_tree.c
+++ b/device_tree.c
@@ -324,6 +324,7 @@ int qemu_fdt_setprop_sized_cells_from_array(void *fdt,
uint64_t value;
int cellnum, vnum, ncells;
uint32_t hival;
+ int ret;
propcells = g_new0(uint32_t, numvalues * 2);
@@ -331,18 +332,23 @@ int qemu_fdt_setprop_sized_cells_from_array(void *fdt,
for (vnum = 0; vnum < numvalues; vnum++) {
ncells = values[vnum * 2];
if (ncells != 1 && ncells != 2) {
- return -1;
+ ret = -1;
+ goto out;
}
value = values[vnum * 2 + 1];
hival = cpu_to_be32(value >> 32);
if (ncells > 1) {
propcells[cellnum++] = hival;
} else if (hival != 0) {
- return -1;
+ ret = -1;
+ goto out;
}
propcells[cellnum++] = cpu_to_be32(value);
}
- return qemu_fdt_setprop(fdt, node_path, property, propcells,
- cellnum * sizeof(uint32_t));
+ ret = qemu_fdt_setprop(fdt, node_path, property, propcells,
+ cellnum * sizeof(uint32_t));
+out:
+ g_free(propcells);
+ return ret;
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 17/37] ppc: do not use get_clock_realtime()
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (15 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 16/37] device-tree: fix memory leak Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 18/37] PPC: Fix crash on spapr_tce_table_finalize() Alexander Graf
` (20 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Paolo Bonzini
From: Paolo Bonzini <pbonzini@redhat.com>
Use the external qemu-timer API instead.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/ppc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index bec82cd..5ce565d 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -844,7 +844,7 @@ static void timebase_pre_save(void *opaque)
return;
}
- tb->time_of_the_day_ns = get_clock_realtime();
+ tb->time_of_the_day_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST);
/*
* tb_offset is only expected to be changed by migration so
* there is no need to update it from KVM here
@@ -873,7 +873,7 @@ static int timebase_post_load(void *opaque, int version_id)
* We try to adjust timebase by downtime if host clocks are not
* too much out of sync (1 second for now).
*/
- host_ns = get_clock_realtime();
+ host_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST);
ns_diff = MAX(0, host_ns - tb_remote->time_of_the_day_ns);
migration_duration_ns = MIN(NSEC_PER_SEC, ns_diff);
migration_duration_tb = muldiv64(migration_duration_ns, freq, NSEC_PER_SEC);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 18/37] PPC: Fix crash on spapr_tce_table_finalize()
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (16 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 17/37] ppc: do not use get_clock_realtime() Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 19/37] pseries: Update SLOF firmware image to 20141202 Alexander Graf
` (19 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-stable, qemu-devel, David Gibson
From: David Gibson <david@gibson.dropbear.id.au>
spapr_tce_table_finalize() can SEGV if the object was not previously
realized. In particular this can be triggered by running
qemu-system-ppc -device spapr-tce-table,?
The basic problem is that we have mismatched initialization versus
finalization: spapr_tce_table_finalize() is attempting to undo things that
are done in spapr_tce_table_realize(), not an instance_init function.
Therefore, replace spapr_tce_table_finalize() with
spapr_tce_table_unrealize().
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Cc: qemu-stable@nongnu.org
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/spapr_iommu.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c
index 6c91d8e..da47474 100644
--- a/hw/ppc/spapr_iommu.c
+++ b/hw/ppc/spapr_iommu.c
@@ -173,9 +173,9 @@ sPAPRTCETable *spapr_tce_new_table(DeviceState *owner, uint32_t liobn,
return tcet;
}
-static void spapr_tce_table_finalize(Object *obj)
+static void spapr_tce_table_unrealize(DeviceState *dev, Error **errp)
{
- sPAPRTCETable *tcet = SPAPR_TCE_TABLE(obj);
+ sPAPRTCETable *tcet = SPAPR_TCE_TABLE(dev);
QLIST_REMOVE(tcet, list);
@@ -420,6 +420,7 @@ static void spapr_tce_table_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
dc->init = spapr_tce_table_realize;
dc->reset = spapr_tce_reset;
+ dc->unrealize = spapr_tce_table_unrealize;
QLIST_INIT(&spapr_tce_tables);
@@ -435,7 +436,6 @@ static TypeInfo spapr_tce_table_info = {
.parent = TYPE_DEVICE,
.instance_size = sizeof(sPAPRTCETable),
.class_init = spapr_tce_table_class_init,
- .instance_finalize = spapr_tce_table_finalize,
};
static void register_types(void)
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 19/37] pseries: Update SLOF firmware image to 20141202
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (17 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 18/37] PPC: Fix crash on spapr_tce_table_finalize() Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 20/37] target-ppc: Introduce Instruction Type for Transactional Memory Alexander Graf
` (18 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: Alexey Kardashevskiy, peter.maydell, qemu-devel
From: Alexey Kardashevskiy <aik@ozlabs.ru>
The changelog is:
> version: update to 20141202
> ipv4: Fix send packet across a subnet
> pci: scan only type 0 and type 1
> usb-xhci: support xhci extended capabilities
> Fix term-io-key to also work when stdin has not been set yet
> net-snk: llfw startup is using the wrong offset to handler
> net-snk: Make call_client_interface() a bit more ABI compliant
> net-snk: Remove custom printf version
> net-snk: Sanitize our .lds file
> net-snk: Avoid type clash for stdin & stdout
> net-snk: use socket descriptor in the network stack
> net-snk: Remove printk() in favor of printf()
> net-snk: Remove redundant prototypes
> net-snk: Remove unused timer functions
> net-snk: Remove some unused PCI functions
> net-snk: Remove module system
> net-snk: Remove insmod/rmmod
> net-snk: Remove snk_kernel_interface and related definitions
> net-snk: Remove pci/vio_config gunk
> js2x: Fix build
> net-snk: Remoe some now unused "kernel" functions
> rtas: Improve error handling in instantiate-rtas
> version: update to 20140827
> Add private HCALL to inform updated RTAS base and entry
> xhci: fix port assignment
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
pc-bios/README | 2 +-
pc-bios/slof.bin | Bin 923896 -> 911704 bytes
roms/SLOF | 2 +-
3 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pc-bios/README b/pc-bios/README
index edfadd7..8a85e69 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/aik/SLOF, and the image currently in qemu is
- built from git tag qemu-slof-20140630.
+ built from git tag qemu-slof-20141202.
- sgabios (the Serial Graphics Adapter option ROM) provides a means for
legacy x86 software to communicate with an attached serial console as
diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin
index 69b0a5dbc3ab423528dc10817b37fde720ffd0aa..031e3063a277e769c78b637de13c93f4074389f5 100644
GIT binary patch
delta 210974
zcmce<34B!5^*Da-n<RulhM5o`ta*SySOQ^_VV`U;F@X$$K-_8+(cng^Xro3aDr!)w
z3EPcTAXb*drN)8=SH=}wTGP74R!b}{!9WwM)=-i8ox7YnlbJWI{eJ$R|NDI4ynF81
z@44%HZ_@pgtM$*bYG&FJkC)WCX2c{J1IE>sC-=Q`=IMa}b#3`&+|sB1=As5I-O}~i
z(k+)683t|JQvN!>oyw8o&b8%+H#}RuG+bN$1@JN(ln+B0;J*M~7TaXR0_hQ8iaogH
zUvB~`4&Yk=djWhKU_8Kg0QLs>2Y?9x{|K-Tz;^-m1=s>G5#XNy+5!F<U_XHG0dxR-
zAD|Q92LO`*eh9EXz>feX18fC20N}>}2Lk*Hz(D~23NQuWCjbWn{1o62fPVux6yQ;S
z!vMAc91id^fFl6@9bhWJV*pKnp935T@C$&W0DcK@G{CO_o&~TS;240%0geUuHNbHI
zI{>BuJOOY#z>@$c0Q?8Qi2yqRP6F5kFdg7Gp8c0i8RB$YJS*eUOD?^5+L~!oFFSk9
zjOqJp+y@L-&YIPxInA7wF?EJHb>^IDv*t|8NK7yntuj}xx%RrX>#i~9o0qR$pB}+o
znSI5fgsU<Lzv8d#W?cqdYQ&~6w~d}{*y>q@js7FylJ%~7LOi5Ax4Arq{*m@xT~Rs2
zwzoZNb@SplnqthcP(StOs838_-z+x<v8H&si|%3G-t><2F{NON?@*UJb0?Xx$w%nK
zJ4k|iXQ16xN)kP!IF{E}`?x(TPHj)1SJGc|Mw4wypmv(V9!#KxV^X@@JIMv}{!Z?i
zpG9I^SERMi?$t=<{XKAIA>dqxm(<U`sDbtCLsQ46balTvyqgQ1_X>$QbqOmyHGz=s
zFGs}Re0Shj=Ivw{h`4KZLL*xR<mrv%xQ7te*Cf9C9{ATz$jx{DaLj%Cycsv&)d}Pa
zE4WrJZg#H*_DCO^+kf6A<gR(YC3kfkC-JUhjl}hOBU{&(PKkxvS3PWDB2DWXCn~?-
zm^y)Bfxfhtpm>g#Lx|<=xg0w#F>ofx*qfuqY`4>dxJJ_c%IGHMPNZiA%LkdmPA7Aj
zM;h48b~=WY*{NOVc$Sx^i>i&XsuinBScjcXqz!CPKd_>qn@1wQAHAG5vMEkF$_|dT
z2T1(v@$fHK;KuYho~jUw8d-k_a5u7r4mt(EItR@M@VtXA1d%^F=vX^MryU{#0vxlm
zLxdtu3gyffIq67tI*G=!wj3I3v^TOtP9eO*NoRr2$1fs;wGE&H*!(1#2n_j2bULW<
zCDB1pU7E$KljtyZFp1g+OZwxzpf!&`OCA;paF^@L26i-wPBa<`t4g8+fqis;I*x~C
zZyGD?PiOJlV`=POxE;{YJ>MX)t}h!2_rLuuXm!t8_7PM$f$EX9UA*mimFv|8mYPiG
z0`u%e4eTPg1^XV9;G<+Z3rhV4Ku{W4;Q�uLOrBuniQ*g#(dtAp7+|Iv&WI2Z|6J
z8wjp8vO$AHDSMEJ_H`0GGDy^YB<pM`qBJW-P_9l9lv`40Hn4vr!O+395K31Lrpo~w
z8Z7F-yn$@+5Sk9C#X|)1bwfl=^AM34u16YK#}L6ecPJg*d+Mb5qrmeauvV0HuB
z1=zSL>u(u9EqVKJ=&JKZ(gZGSBu(v;@!g!K1A$vV+Fvo7-8PaAHs+mT4~?XwsD~XI
zNr%MoI6`*x8bR}?O`bHdfy89)On-k$10et_U3&t7DSHX2e0^GS<?9*V$~SF$-8)DM
z?}z*!s~kZmfU12X=#-?X$<<{rgxm$g%pImXb4SMKtR1S8GFmrP6I!{~{X5@=G>&gz
zXQk3Pz;;n8T|6+OWnv@On$a+&k!#JUa`{1WO#yiFekvUTbe*Ym)`IkIR~sR>p0lN*
zyFJi;>)Hn^ZppLlU0M}m!T=)&fl@+eFKQ%nAjQ8vN=OIfP5VwhqMbLGdB@Sg(%S~s
zISj%qz}Pt8ogD|k8ZIM0oGvU*e}CdW5r_II`$QbB^6f5hyB|t-@wm7)1Ol_K3<NTF
zo>)IKJ`mW{LFhxD6Y9P_@Lhi3L@AF8{^Mho=)sE{*p<UXjy*Drjt1R_hru|}Hk8Jx
z%<X`t96Qm`egsTz2y|B-&hYZ!SALb|_3g_5<r7ZKjt_L5N`TPRJ7`KDF+P=&(|p|6
zH3~Y`%Gb9~fRLRYN8@d?Qz2-hXsWUDHs%-&J+o;bjj_#r6?%b57bi6m9-iaB09{u=
zc<78w)?m_U13g`H--JF@Mab6yaAHpt)XjX8b(wS&@11f`9b+ohF)%J!#CqjS5o`8S
zI_<^UM$$NFz|=9^z*ug}fYA^WB_V$HVk-&7jjU}n9SeMqjiKX=;#-(Ilctz3Q5mx@
zY9ySQH!*Ks?uTsR;*nDAuesXtDKtjT3Bbde#!xf9Vo!_-Q`<KzBZH2DQ46F|tcl|_
z4-4zq+HtgRe=tiY(5)oSLzdsh+@t7N6*-Yu5`SZ)vtNy*qm82DT-+$|q2D4pAinC>
zz-f?@$-L4r(PBkQM2oeLfeE&e{V;|uG?vFQ*I2=J{#ZJRehdU-#@U3m!lKgEUA7L$
zk=efpbhp1m$SDu^KhW(V%ksEvlhve&h(9@&rqGkDDGeH5HA2T&nnC|$?Pb-iB*sIE
zAkw4gV0L_r80HU6q(hA&@NhIlpHJ{S>X2HZ1-KO=`Y(|<ZVhw0=>Qv9*&9qYMFS-8
zNtq|o@m?$`jiwnZrZWFoU{C!t8rL(D&_!3h*fWwbHr_44jX_4q)!Jx2`@EM%XE@jJ
zE_Ul%`zvle{(MFEt$}vdHU?%DnCHgR8T3ZhcPjLS%JJ0Eha1k*n)eAG_vjbnLz{-3
z7*CUoU(5%y2eSvJ(L|VGLfRfITg?i`(IGmYrC}FAU!x!JWE#dwM?vRu!L<3{1iE0*
zSm?EHPIVj~5okNL7+U8{pw&Z4=d-Q}bS$6!9-0A`WlW^~=!MJ;_E0~&V4`Spux=Rr
z28|QZzg%RD$wL-v#KN4x9VmN(nUg@+?qXJRHXUU&zbxT5^I6R#AxVVorq4v!?5e+s
z81#a1VG>w=y|z5EC8{XTf{+$heNOkcTltV$wO04H#E8ax=QCC{Exfw`(>v$tMvi3q
z<1$`3Cam*uRpTu>AIE>zGhK6Gu&BI^_bJinJX>A9Mi!V%3ysQj=A9zO6o}1$_{!D2
zW_ZZ79Wo)CrieZR9b`Bw&!GLG5p>7lO$Gx<O5cXEz?oCyxa-p%7J~>RTae>wK1vQ?
z4`hg*voC|5Mc43QYXqmtfRT6_<vBUWn3l*JX#l%$s-V1bDmCd-Y|~V_04U#{3Y~rp
zFJ%NfTv+&JSM3~N8Gco{BRu>P|9!4y_+{n4AVs0g1_mdGsw+rL^*w=rhy3GWRz4jT
ziA$!_#4v*Tdje-X<lCP(!Q`;Is(bjT_uX+`XX-YYd$f@qoeur_`wv6~OPN9KLtu=%
zxK|BtGv537+*EZBACrE7UNQrENeR1PhFCN_>7rAXjxOf?-}Q1_x%o5+@ENOO4>2n*
zdo<ZYN1YONRe=DPSh0bau7~5wJ>*{xbNum<z3SRO>s2#554J#$!nD0(-~m>aPbV?=
zOfe1@&ZGssO-{=Hv4>{D#CYm;evhnto#Nh^Qo=sThoLU!Y_Ud3J)2H3PD6mtrUQ)u
z6|C%R=%ImF*)zMBNf>y7H-54Rh3n$javqBJ&Zg5xn8&#S*UPcxW^<@N&w)SYui06%
z=$O%zUeAdt*ABfg^Y-M*ug}2nKMTgSS;TQ_0iVW4T+gnWMbCyj;xQUw4(H^vsZGSF
zvh2}hjFX3^zRbF2(aA>YpP1>QLyXkx**q7WFo25K9S3oIY@IZkkj&frvyPc`WIw)L
z6Z7`PM)};gqz)r>0Bhs?Bc5faU64FRE!WwTKdF_Sm`PLm@x_o7K+5MHRz{8x1Nm%9
zEQ}n{o3+daBS#G0J_mFRe~}HFLnjQhWk%|7I)o19o(sDe$3)Sc@1H|Q5BxzkdJl&j
zM<j9E92(P0>>>h<?B+aJkX4%^1zw#?=Ozt)7S&97gtvFU$C+au&0wFT(!PQVmYS?^
zo><hqJ0CK%kv%d`Ec)M@2TQz0rjY&T3uN~EP~;te91c6B1PIneFiEsSyZ-CPy<%Gv
zALxde6WKc?`_KhKgOa&?K_vSrn-%->Knb>VNHBCEbmAk)w6D$eH5fmari(@4%?s%?
z8-<gCriGxTo4vCTN6LXV8Z(;@hI}P6#SH^&%!^{Cgk=(+iv=q7Q$FT0zgq<FT{j(M
z?~}-bC-W!a6ZV~(P6KKfdO={nTpSoL%7lT@@daOC3}%BT(7uKZ=IFUF#U))Vk#A<|
z0Y@%-NIYNicnAz-Co+YV`!Yj)5~X<y<pyXWO&2Q>8;|F8Sv1@D+sAUm_a})I;nY3G
zrH(mt+<=o7ITO!2!C<k&1xNa4(^2eMxfwpXNJO~b;?M?Kyg0IfzRk93peKP6Bp&U-
zJ_trJmbgHK_^(-^f_)xA{-h@q`4y6zVJY=Z50&IpFZMgwZQ5XC%?k4%Y-uUf9?tVa
zeyEw8XXikgGAc~+_mHf=h0P65)-M`?3Wmy-9I*oXDu-S<QY;d~^4l^&@6Qzu9fHZ5
zCb7VHSZS%;f`#)?qyNid`N_IRi{x4k!8VdN^2s*2|IHh}ItI&l7^289zRH8m0kid`
z=cR&SxJlr9l+fi|e&7%+^mC}$pC_o^Io88K3CqoeIj~RhpUYZC(PUOG^ZEW9I^FK4
zJ=U5{`~;(s-H|P}{LR^PVhoP~I|Gpde0DY+ZI?m8Jt}L;qeBO~TyF%rZcJ!@Wy;<_
z_v~|E_IUwLXWWFc_B?v6@n;9S;2ap~h>KO6L(?YVjxRsZvS~IUG(Qk%0cvt8FSz#A
z3Lb*V$ibbOd&#zgv*(hA{D8lK`Ol#RL-PY446FQdZUrA^@&oU8{Rk77@`t^bPscNF
zJ}hJX{J++7=+yq_oRgd%_+!_UW<q{!2()MJG|E|80Ua^KDBW~Dp&r_I8&_1herUy}
z8$|g|R$4&Qe2@|`vtvD7`GI#=RKA^+?Ay(^u77@w@0%+>&q~hRdB}B3Z`<BYdjo-o
z_5}i2B+v~la+cg*lPXRJd+To4V|N2>U)W!Fw|9`<-Jg@*a)13&cNpzypgo<r^QAVR
z^_||(L1MOkPGS`CJ7L6UfcOj$9{}PryE}++;B#Uq+WMfufy$u4FI5X8_6AOM?+ct#
zwCk;DvtGIYh)-|W8#ujnU*NPN_E;0Ylp&1R8#r@dU*L?Q9me99P`6x<R2RVN;z$7$
z8{iIR3USdYJKMRGniJx_F9n3}iytd0FCAI|{h&{N;CV4}@oAo)ECUYO@%dk~_NDa6
zk)I0kV?S1SXq;2r_h5bQMb;K)q_MU_I&S9GLE2a$vZtEomhk$XYMz_T`OjjdUOM^g
zXTJ~vUi-E}*%6x`c=k^rLSw~!4+EZkinSHNGOWuB23#1VjS)+Vo(4QSpV#*^;Mwug
zfbwP3H}g)x-$VbwUj}8`_K5o)`VTIX`n^ST!ez~39pwA`N8tb`hG2pd&7bl6xqq)J
z@%0ei{3gfyM0Aax#C;Fp&5az_)8OW9T;Zz0!WRowW0-e29W+wRq)KvTq~vE#aw%!7
zX*q;#ho~1;P#NwXRy=b{q!rJsm0`<R0sO;5_?JcMditkG{-=*i{-zal;>-sGPmjnv
zEt^8vM8uM+XH!1ChB=Dq`7?V*vL28bE?LJ%nseX-R$ok4(OX!_3OZuofeRz8JCG-=
zYxb_BV~qZk3I_$*CAYzfnI^L85_+SJl3EsXE<G1+X0p<A>3~6$2vQhvFID7T4<)_X
zrgQ1n#!rb`HWkfajtw-n`Kj~hY{NL+C?1wH_q~vAPB6OGY^h%{!svXR`7fuB8sCg>
zzN(BS*^Co+ZmB96VRU@K>aPU+$-L%*tLQYtSig0D)%j;r<M^lh4_@$3YJ7FP`SD-U
z)kfYL;dGC9ZkO%CgF-%&vF*{u+owiGVf%2NBLkYRUQhQV4(@QwH>*f(LPuY|q_3UO
z5x?LSINSNKqj}=(FrOJ8LJ01l=h+i8T({ruzxDO~py`8K*pWMEk@3NCUYFBcx&hYZ
zw1eG$7tG!r&4=!yHfnUFu$m`f4r#j^w!IxJa5sJ4X!)4EP))BeTCQek8|gVl%Sg6<
zBk;ca4conuzGb{ShLzt#vy4A})_mX|`WKt==1f*|A1v%TSo3`}6~IUL(Fctq&gS*^
z(|=GXudb!DjKgq>T}zh^IV}4XxSSt2GfcMB9dH_U7}|3)y$i_i-Apf!?MQogQ3v~B
zGhH|4HIXH-=r*h1@d{tVJUpgj*ux2Mwm2S6sgKOv{?r)Y+CoPIm+OiSwtovf-+28_
z=GaQN5APTO16qRb)o&ptuZSMTW9ah3v^AlFy}Fe$P<j3~VffA4;6U$H@P8XUXK+Uy
zKeX@O*ikQFV@HF4Z+5WM?R02nM}r(2Owvt>qkCka)<a&N$^GGEysmw1N0Y1Ggr)Dx
zA~U&Oct~;==skGc)4^`u4$n>CHm#$MuWI;usQs>vhPi=`=EK|RVrm?^o;m7Z`}C3s
z85ixkjg-4C*#KMPmto&pM^}RF`|9XLSuZ@nt1C;tn#4Wr*aairL&W$IpohFr%j@{)
zSGi_rh3}4I5Q&$5EpVLnsGzx;c^(jLxb6X1P`$90J@f#5De3uhIa#G|Xhr+2#Ni>&
z=dr7PBgnS=hTd#Ew}&|%q$3tQC$oBYht#n8ub|<D+c+z*#djRy8lJmYh`L#dx@G=f
zl20uZcn}FP#y%&9i=HyZC>ahVBbGHiNS^_xFMo(0g)CmY1CD--=0<kGPT10SuwU(@
z`Np%9y|xq1ZJv30`!0bUx(k-x9nG_L(RDl>_tn!o08D(CZUJxzz=V#b**T<_&%a`l
zZ&#Q5=GTdt`4B1aWxrS9+Cchv$kVb5zuM~n^EwkUSov!-mOb@bng;@Y{4M<zfa@Ni
z7Xf(h5eVP@JGbwqk3#9O-Si{lfU|kS9(o>EeRMBm=I_sC^Y+2^tb<*&kM1&_+P1xc
z-ef#Am{m5=?MBmW?45Udr!-G$q<anHiI-*R#AEcnIAb5s{GN_5_CjC!Jv^S?{V_Z7
zdpg0`dkah1509z$LQ?FfcNu$LWUc$@?V#cO1N3G9A041S0C@LlddR5%zPaWZx|6c|
zo}qEgGY&!$4cs9o&ozIo;EBuq_K+Q4G}k{%&roB>_pJVTy3*LOqq+Ne8fO>@8QWi?
z9~!>_EiVE7H*1<R4#D=#cmN#p!zj6ZM{~QM{?jnFJ<C3M6~>@#Ygoo>FqCWq`(Fb)
zw|>SByhaxpTOVMjU!#9EYM*Xyd7W;iLpF<{kT*L2=ep$XlDU4KB%6WpFr1s#f+>gL
zw5Imc=7Ss>_rK0s-h{#F*LQAz3j%U~ZnO6-ICC=YgK__Ddfvc$cL+hZ1iI8r4oQ6P
z#^%#+)3G+=o?o(ge}rxDymw(ZyJrBadY4{iY<z;1zeVT8yDq5)#T(bMNi7iZgeF$d
z0u6FkEo(ai1E%9ofV``iW&DYrG43pG&iFIEi5hnvXOF)JX5In*ya$ijjN3P|)9=&Y
z8Ml4h{P+j-8pF8lMmDS!S{V*PC$-WUth9{A4cXWVC!-H@L-PYal?sC|xyJ<DuUY)Z
z5U#3X<`!@`tN57CN$hx^4}4QL5(-lRJM=Le%=us~SOj*R{v1wI>OZG3&-{hnYBO$%
zZLa#1UP6tVo?@T>4Km}V@$9Oj^giQ8i2PB=x*I`c8??X;vzrS(qjm#s*agSvh_i1P
z%<Y)l#%&5zNt^D4apwjq?%_YcU&Ze^jq8$o>pbN8FIdwtNXI@7_Q^4NY~<6tTC9Ue
z`EhaIW8NDBtEtcF!jZ)xWE(BWW-|8|5Zw;;{1@;PwuANi5(euNY|58(Xzz|z*Byjb
zzuUo<e@U5f;&k(gFJaOd-_d$%V@Df=(={K4)j5SHy6>4r$Q4rw{S81c-Lqg6;Fq0f
zwjHN^;^~Rze&5i-Sb!J(iyo%NMHjNPZu$#&9&>j$-Dms)TKW_;Y-uK2aSA%jN%q(&
zx;VC@eIqo$52xsr#)Tu<rT?ZAoE`0ah~Mbx_?H;!<2%@{f5WD@qn(vj(d6cqf72VN
zasK>f&uO|BZuYRQpCE6~hZa6VcN!&oczP8XC2+9b8}<?_0`w*0+}oZ`HtsTvm8Y2d
zt=^MZ-wm{P^PdbO&t@!J%Z9}nuNdAv&9Ic;PL0CE=8AY@2sM_#W3xX)LNxU@{%kCv
z%^MPof5aMjFqb=w$;P73ns+;lBE!h}HS10?W-q#cWGtKT+T@Bidc6V5W_RTq%lSwU
z@5_C!B8QMsa~H&BK-ut(e!C(+@ZHn=d@XY)&6xWFNdfwKf_6^_TQ|s<$M*L(7EIXF
zAsI)+bVH@hXM2@1Cdz|3x;vC<XtHtHC`DgMVjh=D{z>^gH%1x49!WOl8aYq1wq)a4
zBL`YyfU(HPhM{nPF~Nvk!Hx_t_Sk-eowy^}NM;)b8dvw@`3Ada;lhsumfR^&lRU`C
zG`{$etr}!J;e(y>`yFTC$@5Nl^dLQnaUCKtoP`@Z$4>(A22IL}jqU~Bjefg#<7<;|
zIV-=SV*8>|A@mNU&)gZ~pKS&LH;#`n=d=;gTX;_Me>aXFbSdZY1<v6IyD_k=9wTg%
zQ6ZnNxD%Az2}<sKZSso7UJE8}BnBvdN7y|K?hdTD3n=aaio1Z~%|)ET2Ka{rg%9pF
zthgH}?gomxUz=R{`P_<%>bpj}ZzosHfwdDFeCrp_YrWAOd_z0fgT74!WY~&(K+ip(
z=bqOl-?%Ey1P9q;DaPPZ_fA?6>PY48i4_$a-vA@dywA@kAa7>O{UH#zIY3O`uYR9A
z_vS#r_h7gC=9`J>-tpsEqZlz3w2dVT>TP7Mn~+O>aFYf8c(RaC7?8>1%>73=>Uk~2
znC(+Z18%{tdBz7|0^!S_{J<B3(N#@TCF{iQ)_)cZ0Vnp{erxQeDf<bW6qCp21_%{a
zfK~1t|Gr@EAxJ!EtD9dO`?+YV7rstLS+cnTuC&nBD1XziP26ZeYXlC$_%e(eGutEq
z7=s>S@hQdxpUcT{?YG93xvCssz|3X5EPF=B_4$GBuG@bRTQj0R;d7O7YY~~TvgqSm
z=QxOYQxP$59dUay;9BN3k@%a6;&yMo1)ixFfsy4TW%GrkJwNdEFS%ivI|IoZFC>n+
zCLvSqAqIr|$mVBB%og9dV33=Tjl+p!N;NT#4<{*5x%<``|4y!KFG^lHrfS5>vA2)7
zbWePh>njpd*-$*G(m#LF?4LvzB)1&9x#FhD#DvJ@Nkw!9SH$ITMf^Pvkay`Vo}y$}
zUdL?y8cvqZfuy^Iq=7@!SM?LQ3W!TLzeVCJ+p{Zf>_tZ1LO{uv#gp;_$JL-hT4xU@
zE{I&r@n6KWS2pH=5jm4?DoZ`9VqdQ}D!-auQTcV|1nx-nPb3ZGWlXu7dr7+6UnJ(r
z>-=_}0xK^g_FKV_6}!pVrEg5)&zgLrAVjr%P}wpV!U56XM4Y(vjSRw>IWZ7&y0x4x
zKXA8bGI+FQy4r~Cme;PUs5wSTPi2$%jYXv2=F#M;A0Hv!+H7)ZcR7jA4{RA(N+9ge
z4DOvj)wJ&*F7Q4B<UM=Kv0vN_iFv#hkR~8g0J#Tp<EqepbW6^1=qekatNiGi+XjOV
z3?TV|)0I55uv@yIV?O6Q<63!6{Ja~_;Z1R-PSyqD*$YFB5%xaixEsk2Y@9DAk@#Uo
z63kdbhZ&3Q=U&eZtiG7kxJHtC)-}|a096kTGiCvJZ<z5QfOW%-DFAj2H&z3%jet>i
z)dS2uLXciL!kCq~Y9^P$_cOOmILV$IVGISrw|UJ<(Fw7pU#c-~@X2_-A*$JU(jj2u
z$-Z(Qb&?gP8iRoG@>F9wfCqsXz^kdCulVEbrZE;u<4j{TfPB-)Hj49DjcLq*;@hV2
zVB*PmXmpQIm2i?>H`4eBP!N&p`NVri^+~pBl#vR=zZzw{Y835Y^F|Aat4AAm1GZx{
zs9E+DOFPRr$5^(8tv?H%_nu_?&N5~h-czjYEMqbh`;9TK1aR{hVcH{OptA5MFwJDA
z#~5~~=`&X7m^jv0Y!rf&vBueeeQd0te{U@4So$V&j58+0o$NdN9C+u#F&1X$lkEI)
z#^PQ}MHt)Jjbq_u;*;#J;{=y24Y-y-z|)Kg1AuG%$#~yADQ?)1Op;5BlgyW9<O9Ro
zX~q`gDD3^m8%v@1<apzJda}9C1Y@EB#aWY#JB+;H?1f1NtYeyorW>&PImzyw%&FK{
zlZ{7=MN67DO)>1o;FEn9z5?%D{0&rX_P`5YfdZwfdH+;sTq7Hv>rE4ecT5wFl{(#+
z2vYK=LqxKQ*@o#NT>GaR-x??TvQH{t1LL1zB!I%^w`Up)IqWmb_-il2aW!jSU@Y==
z!su#>6k2#YKho&Tnfp+uJ3rtM8&j?w#ta8MIjxwT?I5SpIz6sZhuB)5%Iow3oj7RW
zt>1k`XUV)$5?{KS#N-G1{XwKA@bfHdZ|L-Nuk9?IvWE|hq>IzHf8FVw!k$=YEHP$&
z%1$qY_MchHJZ|F`mvwsNz(yRdDicQNepd@&T+rIil3*Plz59vLTL`=Y6o`?RB+r9I
zQ|Sg_$W+ejd!&Oeq#Qsmh6b2Yh}c4I-%4ZPp_;MTu)`^4oB=PG?4z+4l~U;7(?1JQ
z8)lMSj7Y+_2$K@O58<;gDe(j5%`&b??9AbGl@E-rm>cM1hqH`d8Pg!&vW+i|X=_<p
zj`0`T$!xjCTmTDmp`kn3mAS^^#LfzyCE$X4?%z7up<Lr4s7YO9ERXA~08BaaFM{RO
zrbVzEi+hnBTx47W_2U*B%>a%rhS8*xWqXXp0Pgh|EUB}CN3Zg$tmNb4;344z5Wo|M
zLE^+PZ=P{BP=GSWLZF&^UT1lJAofL8muF0N#+~F2@Tb!YpM#f8_jR(5@`RbTbByJN
zZ8$4A$M`#_nVWBn8xBHXtu@aNGtnMbJYT2r(-!VU``%9G%ZL2#WDiQvoDaiIC;Mx@
zu@Ar<1<)Zo*<%I9(AiQ7%xlE8CrzyOM2>PP4XDA#>r%J|-abM@V<!s$J4hM2#8_<@
zdsx*H<54J1Txtv*A1XA4a7JKC$UhSp!2JsqvJS|B>s|moOmRt5g6f2`(o9#VDf8OF
zl%q>w+yLE$MrzR+ao#eoGzN0H`%|g+4C=ja-t9c+r_{JMbe7Mnhn(KyHY+b30?RD=
z4Yv*EXR))ZT}b-M{3aXasj|Ni=7~<$Q79tW&kLgsq>tBl1VF!KFj{u9Da#BWfG3xU
z4C`1Xnr=`LPp9Tz6#*YqKDeAa+}ym}$d54+y)350xPimU5@VF{<N#J*Vhk~UcZ$7G
zV%%i>?iS`c7q&kc?A>!gLq>DwxyG;<`a*NxUl{RmTdLyRbM21Uda#?=oj*7@#0&6U
z{5}#Nm!a^i@KR&Y;BdBHZmjk}wJ*Fnze!bxX)7?J;H#qGqgc13ya&CHm*BEHmP#1m
z=F%!rABk_V#ut`a<GrR8-e-4s{Z<ur$1-;md=&a3uQh#9n>BuUDd2q;4Y<4}3WGli
zzRMb4?6AhKYzyMk`K`R{juLSbnNjDOyaMp-&}9}W6Vs}yg+6}IFS`TgJq{yUt~83h
zmqejo?d~Bbm@=zddQ|WNTz1ErDEP~~qCUc)%gU|smp57AA!XKDR@fa^WLPoS9oKYO
z<I7v3;G@w0vL5KIQs(+73^!C+E4aZQ1s_Guuj+&J7=OUn9TjG<g5Svt@b&yIvh6F{
ztnoLRQSeO>c&^{>xG{>QH)TXH2>P4qt?`wPDEKyO{4FiQ|47enHLV$LtFp%5QDcqY
z5Dnj@=zYRsUf`GAad(@55m|kYpo=v0UQTY&H1~R~@%OuX;)VZQ@%=45D|m_HYpVo|
zFlb8@gSNP%&^KA)eU5EamK6@>w#GjY#j^*xtm$`DS>tz>bG$Dyq`TUz8R}cC@eemy
z<A3Xjf)Axv@drw~<B<$&hDTbg@w-c{@q41k*;5}$Kc6e!TN+s*@LksUeN_t2Qm?j{
zLK>pzZ#1pNHAYeMXpJ@fV?E_#2<?u?qbPXXZ!PEvhc*5wj<)DjPg&B#6!Mg5&9FZT
z{(#?_{@E&P{Bu$8FLJ!q6!MB2Dl9yBquv_-2X7R7O%!~H9E?9u+8uvrvS#>WX%u{$
zHNK_F8vkK^1fJ`+J6a<v1pec$2nK=wGzxuNn>GDsrZxWWe&K)QF!EiL(EY2*TF}3u
z7zzi^a7D`Rb|`%K6w+O9&2Y-J#{U?_(9`AC^k+(Y;#K?Gog}P+lX1(9HVMOaCr(?v
zH9p3Sg7;hEea_e@3~_Et24`<;kDYxud1R=aiKaDvNEOFNP9e@AeqIsLX3n8*Yy7Y%
z_~C8V^dqqCISlqcyK_VoK_gnM1*Mi-<IQ?&{OG1g{21=(S!QH~z#{|mT^Bi3ILEYE
zvyH8?#*cGE!AJ39Tul#p43*uP=Iv3z3vk(;6Y3=l&((?kDEKyO{3J{HkSgh>HNzB+
zwn&*NmV)fgX;JXg-PUrZb9#%Z!a2Rlnqfw%HGXEjHGY=c8t<wJ;xYb!u{-BPVVGYU
zWZ-x5vOC>TJkB&ZMPz5o3Q^1{;Ntr2&TKcok7QWXW{qE5YK@2IfN(|1DTq`o=$4kV
z(i@Dpyzt!eW?0Kv=C{TdA)Xz*!J<zs@3LlF5yh+(E!Ol=P8^)Y^*!jZP3_L&D1ugU
zdW$%%^hUwgTjN(btnkpMRz+bbF|8Qv&U34*@#oc8<0H>FE?=`g{p#!1tiFzr=7|+X
zALrnE>IiWR;r!|{IkY?PVTBvv;O-tjR3~wix|A>XFdwhx+c?KfSjP+e-tN4YJt?Z)
zfa%9k>Wb%(S05GC<xo8q>j3KNe)n+U;FcrJs(PWQZX(1PYFZ2@<-*sA>K5Qm3E?)d
zdY7o~g6dyIR&QeO^6E_vsIIiC4v1<n%P}ydno8lD*pz#XK|?lqpxSOxT~fO&rMco>
z<1zz2J39Jn=mmW?NzQM;TyFjLY6*9M0le&o_TjL`FQLC&!p&V0zOLx8togjMzNSIK
z?p6t3YLW1tQjX7gs7xZZDM8y6Lv6dnqvDzxUMBD!0l)0dt)dKul?VhOX%b&+Di|+d
z(ol53#mjIBhz>z7K*6%!La-8)(#5&$&hL*%_+y)dHEv>LdHFrR?2f+jM*VMheppKE
ziwcWYc+yuD7UdM=Engw&`Wyrp3j#l^s9lyEV^11d#cJ+12KL4#*~Xr{-x$<8zE#jW
z?_=-YZ=|?{c)RnygCsV$D0lI4p~vp%?N(H+BrZD-D*(S9xl?OESnmc|yq_%;#ZRz!
zQH_xj@4%9emvXSQi<c^}bci!1JdVYqqWC!$1DtjkmQrht6rc3hSrbp<vWha7W_v`f
zBT;FqNh7^7f)%_HF1sT!LqO+!CP~OD%FWF87UnG#vQ&M!tgk60wt_sY0KSJ5zKX=<
z6t2kgW#=n~cT`0kvE>wdc>yk9I4z*FrisK9uFNeGXu#ViDf|%<<IR&&IKBM>g>Qp5
zjfx7DAi&osd^d?%zA6*(K8KyRG&FRr1740%;)S3S3ZF)dq6Pe(Uv@{o83H<MA+w6y
z{GMNcS8Y&RLSl=wMRtcnWn^tRiOtFNt`Gs{^g=JBcx^R=f>(@Gg1!^bSzAxyiZllZ
z%24=&q?g1C29AUa>MI3w*0#XMyaFfj&Ul6IA~Zb|&r^smo;Jr5Iw7>8iWdNHlDLB9
zp1eh(`Roqo3kvT7!$R@h3hyOxnIZTj6{*c-#Fn{KBrKQfNGezK@Gg$8FeKzjDsMMK
z4wUE$U}#qiO@zAnt+?!t{%7$UF!Tta!B_xZv@YP=h>`6U#GKC2e*?b<d^g}FgIGK{
z`Zvi6IR7(Nx%oZ6fZ=liom(IWR%s1(N3uiVAqNWF{GMNc7f#xpTS@>QO0PWLQcjE#
zw;-1EyHj}q7~rj;l2C>gg=g<>g)SR|rA}T#C9K~zC{<(Klx;9$3}}_btto`g<G13n
zI|i!mveiY5VqF3F^_&34RWC6zLh%O_zKqcMLWU?i2DT|Yv|Wa-usa5wCGh7sx7I<w
zE6ge6MIMqtGI^X^n;`uQ7pe-tH;8)Y)+2l%C@7RY)$T~?tMIJfb{NWrtK{9vrtsph
zDp|XY6++QBOj)_jMPhPGaG0?>hF+z}N=WbJxl8i0L4kaFC-4rOcD9w1Ub!W?*~Kez
zd4;-w|22MVcW$d8F-u_7krjYfiMS1%DOyrELDkqDL)?l1yg4tsuviX-cE^ZI6`u8D
zMoOB=OECM3|3N&AMIPueq6o1{DdBf8&9g!V&W=za+RoNN(Kn(^)FusSAx8RCe$OwM
z(%_v)d5N-fdj+8xq7LhI0d7Eg9if_C@T+<%=$+dS5;{$@aQUJDJw+{&wzm>GJ(7SB
z8%KhIZbD~R)yK$smO`k@s$R7<gVywno~nF61Fi%P5jeY(m2iS-VFXZba;Z>X!Rr?-
z;w2d&c}D`G>|}NDGd55!DNq3+0jy`8bucxWoSH{gakWBbN0<e539`Np0yHI?-}5Ud
zRW6F`&N>t7SIOEQ^(w4&Zm2H^*85c82~lyYD+L0PB4G+t-0G^JUZ;780a#y8VzP4!
zlnRS_Ke0{8#+ktGbKqL1PDC2UO$E1A3j>^WZNRWfGX&|qvOb*t0SC|*SkRYS(ZkgE
zfEyS}EEsC67=XSU=$Bg1H$|bZC${WNoGk4@2fBb>OpTlmG73F@poQ30Sui|cO1jM)
zgwX$n!1Bk6-W!EJ17<!&@8d~=P4GZf6oyh_TWX~MJ?3no2EmAyojFyx9F(t{I7kor
zf$=wf60^#RA({tWB&NWMzFZm-9-#+K5>sMDU&Hl-0TB#d60_8bA&SQjR*~3jPiB#H
zIq30kTBLkz+6Q4w=e<MI`8G*{2W!FzTctp`mI?~gAx!B>{}5~>xZntSG&r0-L(2Cp
z=W;@Fpsp)SFnoo}1&7l;pai3555WSHM_{>dEokrqZDI17fR4+Pbiw}roBA+9J`xtL
z&~rQ{X{}e%J=iWG?hb2Rvb?#qXFYC9(a;^R$zKk;h1{Y{7^GO`P9s5YfuqSr9b42O
zhv`yNqb9{}rMpH#v_<QLxn!Z<a0G*+<obeJSfv0JY5^@IW<_yu1EParN`*DbX{6uj
zATiUd6e_x&^e_nSbd#9r77W`l$|^1XTUi@WPGYC&tyIush7KxuqRa=u8imjT{2)N@
zt%3q-l>mfDzY99R^q)Z=!3Tq(Z)u*F#}Td&MW!e_BN)n{Llop@7V+v3dVOlqB>A*q
zu+Jze6bsZI^q3>HraD~3<O2jJ)YHK(*nFmI2^I#rBt7z>95kRl9wMoCqapl?uRcW$
zg2-5(($j!?4<wV70jL-Sl_*2JJz>4VYlEsuOi^KQiO>fJLCpFcZBl?f*vXLPU9C#6
zQn>wyEN@Ox^e)vM56W^hIpL1_{+l3eIgHBC6w35qD5Dzg>1nWb03&3IdY==MA*vzu
zQqX_%2y-B+92FUK=;0b-o3_9wb2&7dF+|#86>?O71|vj)zlEj3G<}j0j1bBTheAH@
z|0oC*Xn{>!pqsl7*MAULChDCyvZ1_a4xs!;VBGL63^_^}F-!`21Qx>6aFrLLScg`%
ztrk>4Y{k>2aAvrIhHCm!f!E#okp_@2$$9^?V5kUVXeGwHc^t>DApPbrLw3i*8B@qv
z63!KyO9h`cU^k3>3l?MoQucqn4BQ;1cy|ej%UcS^Vse+Q>9$u(ft&qdf~#P;XffjL
zt_h=Sf=R8YI9KWikHR;ZyP>-+$}Ctex5goR2`&e6W;g5swWA>s!5rEe7MVRMa4w-4
zf)Vs-hEgdQ+jNfyLLPDefuY=!Ch4{|gwa<3y@i6U%JT?%$bkj(mH(k_ik3$(v=Uo}
zwkYTUPCk27lb{28<2gNAWI->+1DO9c103CCAbm(kwF2e2riWv<3~)hS77E&XMrbe0
zhQ;9y@czH2L=uL3y!Qw&SSZ+98il@_#I4F(;mH$w)Sy8)4&YFY<vm~^<bTLhgcK=w
zmqWrm@e*z;Q{^-X_2d+VZZ`<#axqf-;E+2jcg3pQT)lhd^}IKU{_oTS1?L0CeJ%;L
z06!dB>k%pF*(24G4oAMN6|#)8B94SeheI&RZGh(?F~vDJbOi-##)DE|t%?9XE+GrI
z?=uD#p}a>FnU-6^?Ts7|f1X&M78@4F20w{gn!7kto~8w@#SF#1jP9d3jcIT|oF%t0
zD(>JGJ_UlqNfkELuFxj&((Oi<gjx_xaZ55wI1;X)0Xw~-?8LsS6GX{D!)jGo%WD96
zGF?OD@in;;h@;KV7T68LoW;zwIYSzViXVm14L9kbj)+9GI+%DAPL`+29cGB7a29t&
z3JwqXqxCSw$*pcr`gTRnK}Z*Q6b>DyDfzrl24@;%Na@M&7=a_%mDr(z^p93aIz2<x
zgz;s-gD5ya%@OGk<ijom`#aeuvCS}KkHK)ad_fME23H89UzBwcY5IE7D<_z(oCvNU
zA5MwbCotD){9HeTW^03l*c;HG@K8Sn8^j!)-a!R8+=XSgPVUE4WYOTqVf<ghn@s2r
zu@n`fr6?H7dQ0r@X)un{|ILBN;ao8%Bv*oaa@GAFS8a%bP@%RQvOdQmInl!>;-z6o
z{{(nCVI0TtD;P255bVkQqC&SRdfMQScr-+JOT?GS`f!7_V#uN5CD=cMig5sw+b`(<
zdYpAjfk?2`FUwC<NVv62ZF^K()`ol925pM^LOjLs1=nxrpn$ypH<n8U=qZ+;=<138
zxykiAc>XgbddPc3ocDjdDToMpt1>`^dY|%mbA!a|Cdp8ADu?tyrRdNxoY}Bf0bcfh
zY_s3BlDOg}Q<fBpt{-f(|JFpmYnKK@Yoc0H)}x*$Ye?MkB~yxWm&pFFM?f5zdbANl
z=y8wouuMX1q9^MW-Ya3WCc*&+BcbVhC7cm1lm7>~phAcihnKYnu>M+P6)C@zgARlz
zA1cOrUsJqfK+pH0r^=(vHL4yB&5-3so0K9`L8RwJo>QiTxSm7L!+MR+*>sS^7Gsl#
zbQ|o3C<sH15qPSK#Avn<KJ@G{G*B7VbVM0cE#XrK;m3j0_zRd|vOT2;cU6Qjbi)Ed
zW~L>5m}k!4r;*qR+QOiGH1Kz&Af|waDvE`_FM**G7j_{A{=Q5a7H;70+0p$WFB;*%
z${Hj&wj>6Wc@(}>LJaKhkC0vktCo9%uX>33U?1^IdZywOCU=OFDf_~A!u#3%2dwPt
zlJdgjI9avAmr98C?XLj)vZC9!AG?r(zi*TLD$G77BDBC3(yQb@IK00`2~YyH0@ZF<
zMtKKJkQdd!0=qLpV0#Y>o%>Z;3oM6q)T(pftsFt8TY`D`&R~=#gC+Z_0t>P-PUh2O
zFmz;DkR530>836#H=mA|^(g0QSlzA4T2vqpb%Xhh;jJ|#y^?dj-l9ES0q>%$ie$t%
zB4dQYCg3Zv@UOaue^0lQxRL@3@iodnW!KZ)vW)&b!(WlH@CRE1&BAk5EI;iQa(vpq
zXG$P27IvaPH~{FfR~iywP(3(e5vK!~;HKo02Ej@OEqbO&R%p*4B3V`jxh0)82+L6n
zYK9gsv5HU)$l)uQXUdd7Q$j3<d)5qHII|#c@zPve;|qG7*mcSQoMdnjig=tAame6~
zij_>WpHTP>X>|p25{Fn^fz+CuB)IayNF9XN8O~AMp>u-fSCP@>pu=({gP{yp5MI^_
zAy<l*249)Mqc5!>Od%eZpdKyfh>sW(N22LL&v%*}2ajG`736?>Zb}&b-0oR;q?KK`
zM5yHv7+fRio`qwELVOJ)WHQ2Yn_6Eqfv}qmzOWNC3=eLi8Up+Ed8^!9J6u7&Eh_tQ
zdc(D$uSya+`B4-1u%<*H2uV?8;fZ{MgV%3XcnsmQuzsKBRy-jJQ4u}~#Yk$yTZR1d
zbpL-2*5A`CngRu3+hORjt+j$KX)qf091A>e3|fn+@mPhd-YWFMy<3(Krb&nadKx+f
z_fzA&vRtR&Hiz2J_$5B5&iBIqqE2;zr<EA3u1bonD_7#9sC%9T{x9lqX!+mO`Cj~A
zysMMeH-`taNqJZEpS^p51^zGUp6QliwRb;To$sZPCDwmU73JMC8UHtRFP4#*MR~zT
zj4ACxj?ejGJBiII$XuGw%b|TqgbPrnz&l@5eq!#u1doZ}jRE~A0&^ZaIp^Xz9l_@!
zy|Ob`WP8L*#X}_-SKL<wPM4i8u_q5ffFjU!@U)rp3(DYNQ>y}mUG^oF26_x|aRwMo
zk4UKNyJUG=gR1xTsP{R;`+jY_B*0yd4hTG-U*Rb#T*a$H0vYjyvQ*SNwE?ZNT-&Z-
z4+CJW5Mh9+2+<=EIPgpvhJzFucBq8JW@f?L_M9!mu<g}S&Y?01HGLO}8NDJei(~m(
zLAMMQ82J9dB!;R64AcvYMI|pg{cd6#tqFqsk^<^W;r-CU;-c)_^t|Az!a`0JiStQ9
z&KhiMzY3B5@Ir+UJ@CVXv>@aFIXs8_Z6qFEcY!lz{>BSlLHYNoh{A^(a;=~hW^m%*
z6s-;Dl6cGsU=(!tr3f1KG9gBmRtX-PoDMFN|7Ul;TtQ;8;9VeI;tuyU3*{~8B@oV+
z>p%b=*$V<yuiF0QgYYs@W>HbDdNQdMBr1N^?^S%q5-<r0+YP72OM)-*_Ekb9usdIY
z2G1@+B$$P_0z$nTo?D*l)i3PgSP(I&rEvzk)29bZW%es7uKH9ctU+HXC9&`-m$D()
zP%pPjfyn=giaVAu?yo@KT<*=xR?kg??^wND-BSQEyh`BMi8F+qhhqcl89hbvzp4~#
z2b5u29)G(GUr>h6eD(SnR~ircrJ!0<!YwK?S^%7(fIV`Q4(STWkHa1w^rIYIU#8@8
z`FsPg%`Xw*qs6Q6P_5XT%`4%GG*pl87mNDfne0unyiYY<O$jf<r6Q#HOtk^ntSZpM
z*V5pn&Fr6{IFm~aISf8emVb_7&Idab*{QYSdSc7ZJ(o*?D>A!ZPl2Dm%RP5t)Or_u
zfRUXI-;zY(FM)4gyqV%eK*(?6`t@aZzFtA%a!b6q*-8L*pVw8Jy<W|UgA)N7{(2pJ
z5t56uda$W*)Y;k~`E*mbWZCaKC~sa@1en$SE{Vq(2N(W$GKhk4=D?@;T7l{XxYIyB
zZ2L9po$IOLQ_kz~uqF%F61)kTxFK*Ufp4&P4~Hz4>JY8$M|&|aZyY2xPi~165t74r
z-1SB@zHSm*n7u+x3c-Lf4;N)W&l!#JFuXb9&BVD(GbRmb6O6i(P+pWdC?Fbqm>oJ2
z;vaTej2r1K*&?2MsxGAI#G?d};zGQ}XGnhBoNKiWByNd5(G7X^91Xxx<*6De00)a&
zQ<YUl;fXKSqk<zD@cPGSPRlPH7w6#$QP$5lWCOxlM>E#Iw*-X+Dx&{^u~iDf<A<H5
zETeCw)y%ZFD8m&2(Br`Cq?VG&Q=bxMbaI9)I}k0`|`@Xa(rwWA@P>WoqJN8FMh
z-?ljH56XjKAsB%-D~K^VWTwYK;mvBvpdS~gT-F9VWPJ_3`gcT@wV_8quEqN-a9qKM
zC3|GsD9bUln^i<m;9DlKrA;2swZIi@sw4HHtlJoK2_MMdp!24ZU+d-i!GJei626ro
zp;iRP6U92lK}F#q*2!v0{?HJIM)<8(nCWzgK_0$!`BuAR#9k0Jv@Jaid>dx4VjbI{
zfwl3<kcysiachE+^@WG_ZCDPb6=Q6J0x`62t4O_F9cBo8nKzlE#1-UwtBNCFy;d$E
zu3A)tea?4aeY#w81{vQ`Nrg@E4m>I@wxD}kwPh3q&UZ?QF*#%*iAh~+a)Y4%qlMT#
zFw3`kq{X@^(o|U~#K^tsR(KH^xL2XaCP2fqBX!VZXc6D*^t8zCM34UeFbMMB?)*a<
zga~Jn5QD<AT!zf<e4|Brj7_BJx+ESw{lh_!E21dy+EGp4s`@_)KCD9b-vs~B0fH?C
zD%_A`FNzph9nwH-nr&sO|Kq^0RkSS-xfNlZgt&RYHpj6aUzkUO^;+C7`7jcHgpVs1
za+J7&O}^Quk_iPM!@DW)5oO+DwLc0n;DgxLM6v~6oYK>7CfD%uSE@eEsCIkkp~h!O
zfg10ZWlT<t95x}oFjrH;>EJT?e|9H6j@;cY%QeCQ-u_{2q8D=2lJH#*>9t^K@sce3
zBAlZ`l2o^KgQVArRW9iTp^Eetg_lXl&pK4ayTam-li`C>AbN(ANkrKt=|Zxa8|Zvg
z$wT_^dhr6sRXjAUQUETMa7BZmeL`7`c)f4)N<N*8YWh9XF7Z0ct7W-`J^5#g72nnd
zS*-(S_GCvf*m4+9j0ZLVmNCFOgVgdxt=xm}^k{_@N}=*6s(*e-7h!OkwZYbgLyM!O
z2r<wIG0+HG%A^9!;Rpj%2B1Q0aqVEd<ZtA3e8s18TnW~UiV({><keEZpWq-ev!Fn|
z)~!bcz2?UZQfEOLzfJMK2g8tW5|<?|3jtlc0={5vlJGs%G+F?>E1j(cMDpXB7r&5;
z;BO~BW7U5WpmG2oLxc->AEv5;|HNOV94NPT;C&eJjgtQ)KzUwQ6GcD+ZvtG#M@9f6
zhn*51Lh4+=Ct;Xu?{!N>dhx6bz>vQWhvnV^eU79jQCy~A$aSwVrM!n!1RhgOxV4qz
z3Avd60T|xK*l)L}q{BHbTp+%$g#z`Hp@UKmCMz2J0ZaWTILzoA#F^{SD#?c8u!TP;
zlXw*KVLW{OseUXVbiBv<``mD-Ukt~N!5<?50kDtv3ORF}_bGuN!ZB7sru?~=P(dHo
zNrm`e4F!M5I>G(~c^&}2@KUzrmvNOg_<b05e=D40O7YGQyCwHW6{L4T-qQR9OEZ_K
z!$@HUF6zRie^gImIjP(Z>HKkG^M$vH4wql*^EHch3~t&!YJqb~ZUC<jnHN7&&GS*4
z!0T;pt4aC@1D3BS%3HdaSHcx($g4F1ALR4G3lNzrhUDT8=ja0yDZtqZe?<-c1Vidy
zjaad&lI*Rp-}mHZ=E&JQsOEhcKb;;QDsyo*eovKK>!cjqRfl(*4^3IG<Vkb+7~9&y
zPpVet%9E9#VlA*$GGd%sRl2nLB|e-^8`vf5F<n0Pz>@_L%K6#&asl`czZB6T2|tDx
zQ_>dYEzJ@8)yT8Hk6TE5nk2v-EieWR#*C;b;qu_B;Qs|@F&qf+?FDd%#~&h~Jo@;E
zWY7XqWO<iELY(IG#O{@NYzjRxl`B5CgnAaMmgSGTNMGScI&1x_Vb?DYe^evu(UDr0
zEPvP~A-*`O?NjvOj-fr+rLg>Qo0Jpw)C+=;CM$5>Mu-mA#>@I}#~*S_ymnlbk#CnO
zV=iJU`~`lmC+#e3>R>0(WA<NKlwiMt*rXY<3{3}DaA^LhO_pm-32~?nUl;rpo;3))
zoD5TkcLEIIUt6UB9b%;rBY=@XhzisyUGHhboBR_ONf?*6WJzvLp86I<8qn7yB$40B
z7b@(|Pgv)t#-Q;yDt@9;5@$zzuM{Ks37hgaW6-%suKS*H12X_K3ge>1HgMI@MNA2C
zN<;CVvRxovCn%C(du|nKfYmSAaq7Yuax+JRcvOq^XwJ*kvOeOhIz{5u2V$@ic5wt;
zDiI?XR5PLCgUWwwCWP2rn8<n?>gK{j9@8p4vKd3pK0mF7MF#wCfO=S^6BfIwei+#$
z1!C93Na)7}%0PXpugaTKBp>FZ=t(?5KdqM);faZ!VMuWif(pYUhjgg;SyRfz7XKSe
zL(B8?ysJVUuJKXYiJpaf5H1isjyMl5R}Lso(Ey}JgE3byHy{V(D6KtDlY-Dw6oj7W
z!KhTyVb?{7o*u0x38E>*@7!@(eg&tKqjjR}e7RZ-P<H3v4oU<HXe%duR(bNWJ>J6X
zeECpU2ne6=+hAS`k^~jp*COS$9gz?tf%`$q(GdB~K9$`VqHqR`1lD7dpddUsi0CyA
zsQ@E`-CE1<lJ)wX*S1#p<rDZ(K#mR#Ra?6#>-{1|3Jt*-cZ(_MaH);+1k&L<p?X|#
z33{Ji^kM(TB*6g%1?&E-LW-VYlYLeXujRq-esHlp9H<s$C(@&Q$p`)a@1>Nc38tQm
zI>d6#qH_e745;|;b(CIU!H>y{ZI8Pljpt3k`#(NC$IwP7XoaWfD{yWJc}gdg+MUN-
zl%8*4z%dU;+MUl<Nr(m?D<Skkj)IH#e?8Kn$C#Zc0N0&b0F0Ci^(&A;eof!XMTeXs
z#mh1d&HC3$ZXyE(;h{1`P%Ysxw(yIPSI}@BjQT%^hdy&SrMQCn+Z20i8?ONU4FYQa
zK6gv}G1dLGJa!1w>8VgHqxG`<XNzf|bS~E*uAo`RFdWhxy_-ODJ}%)5cAxWDnYhse
zUl90<d833hPN4nJ0&7&Apb3s*%3$Y?aw!iLVPAZ&TjH^=%09`5!ZcYC-WQQU_d(@R
zj|~R|{0lENmRlL@k#eysgpc=MltMl43TXMO!ZW)QEe~c67X(+h$9|3s?gwzxLXU9{
zuQerI_*)o!wBlVshyF_l{dpFieCdz^a1zIH8OK*tfTLDzyi!;#;g?6KG1)>cbR8c5
z;7M$Fh)^*`2%o6@+z25(=KNPC7$TZm7zVi|zN3LAsNo2>!iK#F0W8oS(rIwK4_}sI
zlcSy3650+p+F1cFCE}_pe1>gzlh}#T#~OG~P~{@dlsE`IYjP)|4nn$jw?os5z;{V_
zzgxoa^TT$I4(Wu_0hmA9OX0UzEG)#gHNp+TG8(R18dIfA8lV(9G558h%3)z3bQ<jm
zTE4A83cwH_C!}vt?()KdmAUDKMS1GDLk}mKA7@-_!p$jC4(4?DG;qA0#`-e(!3L)b
z2~B&sWW-#R3sv2lwL<JPm>b&QZffK$5<>s8+!EDklz{&#_-ikXfn-}MMe7JSaX>wO
zP#S*RAt4&{bpwsb#h?EOar9U#@3cJ0RLFm>rx;RHs1>zQ_`y201qo4v5yglheFwY$
zL`Ww@KhT`ocxfI6IP7#lkN3DVL9@PAanS2+zmyXmmyQbfOYw_DBM5?s846GCu-Btu
zm}+Pk;&B;^_^(T)Vyq8$NRB%B!EyUUJdMp=ngd2z8-#{@-6aL%u!R9V!8%U{1F91$
zyi1^cnyr<_X5}tc@4f~TOSPMpgY+j&8k@N|GlE_<Anb~*6Uuo)*&W^zC%rTleup)$
zAd25wUWxP@9k7-MquNR6+^_>Gz;PLmAuz?TWiVy5XI&JI9KE@jVK3Do-^o&G0Hzr7
z{UZ&IR&z5~iZ?%DR13a~COvZgqck{*;nzT+gU&z7rC=OZBXZp<>v2hdbjktUL_9Uc
zQXty!r#nTR5U3fE9z&}Q>XM4Jr&ZLzUkna)0Q)%b^;imM1=xmL{Zb$*!a*UL!cGsh
z;ZG4qQ3wJ<mL3giRND%n;1x;{8iLRnt`H4D!_ec-gEYpf$uK9hV=7Xg``l9TKV*oV
z;o08hqOlXT#9(&|7r4#Q!vSYhdDS#lBp)Y-+|yfu2!R=40?TDtB~#SMgh!;SmBua9
z8Y3Ji(*1v%_x~G(->`T8864O22i17;gTtb~r$2hvk8hwN-Rspo{0`D}S>qL7f?i*L
z!`6LkVGj<+J@&|ufr!_7l^(>a#hU&T5s26RSkn*DM_=d|rtCji>UZ!*<-cXKzJosm
z{4HDc9sCLBZ<!B3+_z;U*|Un>H`F$8KF^lE+-H5+o!{1wKFd9YtI}c9o}Ir?)c~DW
z6TuD8u>k1M=fSvML|?vDy$?<LmM#1~lw8da(a67JJ|JI)<2FjGDN#nGaTwe&VF3PE
zq42`kVC2z?@7P!08>za3;ApD1^gARwPUKphOX9Jse_JKXxY5Ji#Ve>bUe@E{H>ii>
zVSvOliU>sx$yggE;M*pN*M78+zFv6vw}Q9QiemL5Rj?=GJ9?;is|vSth!2n|fZtU~
z!P>JFRTdt@J$mk!cx>hf!!s10QuM9j3y+XkVu}IUs~D7E-2`VOK0<*K_>zhQPJrPG
zFmmC?%incLxx9(sxkhl!^*!s?9nzO^YaH>sMcMm_lA}|@lydR78=>CDl*xJ=L-p~P
z!Yh4OIRDfn3Bv_rZs`E29K};7Y&p5})zckLdrqyeTFU<y>v!ts_?srlF`nob!f^jE
zZa>ovUmy_X2X<k!7Y9L1`5(GTZ%FvuBCq;RiQ5O`7Y-3PeTNUec&vt9A=m{}i$>ki
zrpO5V;E*spqq;R-eP>%E>Cgc*d=tDip1Tsi8B+%H<DyM%k^u=%Rgn0cLh;d^K4S^>
zu-26HIzv<w=`PWw>hb54Rae4H!KUQ;U}0=`o~oyDL3P1Ueo?9fHAr~spoEyiXz;(;
z<v+s2@^5zkk0FC9o?c;tVuJp=OiA@ixFudfy~|Sd=%zm9`Y(Ly5DR|&)szCUrS;*y
zQiP{n8n5WJBCq7v?o|*fzK!7MkW9mj`otsYw>EGHyAItjrmXmPorL&s4-Le4qM{$+
zGuvgw!7u5;Q@XZY%E1%XmsMus%d+CtQ*i)U!wKP9!2g4@`3wnhI(WTJmbIbEW30!f
z3jZ5Z7}4*KAiqla3RQ;p76%BF3W@fN9r_9W)DoxCm)&`~fg}_!U6ScdhtH7Y77c16
zmm;TGzccW@j^^Yyz}-#a^Oj~86z7Egx<oL0Px~buj!2k?2z#Cz1FdMj;93FG16#|7
zj99T5!(S#9At5TnCnBHL%X%H{cv;3F6r+mraXi40Pj!qdocevO5~WZz8xo#wmw1f&
zPw)dZDnh(MUBL)p0{<i$CO8$IVfP0@riRuw&Z&=w9OCb6K^cbu%$5(!B^@3!V7+=W
zpjXXj;ET0v`1@1gKRJo!oT(9Vg3IhP+osrp4>r(SRMT1~)#6H^HKV5);Rk+!6bgUU
zCU?2$8zJ2p-3TatG+#y2=M2EOoL#sSR$8Giszrt~JYIcGX%GrT7#^2E6N!cS0e-<(
z(CZmZ#$_(N2Gk}6DNFGMIo%LZ1Sb*ZqagvrI7f(UlHySe&ZJllvp0#9!B4OjFItpa
z6nu=uyDtt~VS4m&kfX2i0|mcVAr(g`fEVI&azQ??jxHFtnQ99YnV5dT4+AqQ3|B<q
z16z0%G*hmhqk0fj<PZjFc|R%#qRNMFEtmV?$C<-F(!>y}9803zBmoZoU^S1lLXi$>
ztr|Lz-Z0@Oo%3?lr*8k*aJkE?>S;M1VZL`z;&E;akC4IMwb_EdO@e(T+G11NcaZiz
zpFdTA@%=)sL0myQ!vlwWHdYv8k+C?k;-Y+O1DE%|Pq?^vkKk8bU%96<RyQ;@F#3;W
zgkfvGB%6!IozI`=3+ID=|Giuoo@BI02hi^r2eq9)4kH!vr8fo&6(dB&2(=*isGh&R
z#>Izr9h_@$yM&R{bCXBV%P$%DQleI6T=?1rL#P=QU8741z%8$QK?&xTGKH@eFe#>*
z8u-^pLJdSm`Dz^E5OSVZ!WrR8<NxW|$cZNh7y*Q+5T}W-X&@<<9f}J{F-_Jg#bY32
z8%XSetil}mg?F$8x3^2Whw3E6j-&b7;FnQ=Eqs;<<AW!EDLoa&rO@6*@aN5nmgnIg
zF$032;_#js=cT<Qy<S1}ppP~^$~eKGh!)4eiSDHqUr6FG{zilHR7D7vD{rVA4qvut
z`mQhs;o)%^>fvYP;q!%N3{!MCUJClTih5;GV;w4rqQ@7SV(8If_y4G<jwF=bkY0ZM
z`qgC@U(0#<Wp|8RFJKbb&FkTB^@i2Q$TRY!cvBFRU3^^_f%y9b_M~{XsK0j2<>{-h
z{iTpD6b!Fc3Q9>IP;l9`Yu1Di*d4<^QT0`#{<<~ST-u|4<O^b70}ATVgY@;Q*8~;F
z{U_A3A9~wN-&Q5A4gLm8mRpg*pV-Tg_}=jxKT_k(0}2lx`4)xz#Fv?-@Gg!Ip}$n&
zy?`%p^8#FUM{2TwNqN1?ctwyQ)hjD{R{_4n%?oe=L%o1Wz2O7RBK<cS0k7iGn;lKC
znd;$AQtu-q4x+dE;_D>$s23D>7qJ8W+VvM-mwtWur5CRkfw4PAi=$F|QbIg4``A)@
zmq_x2H0J4J8<8-&U6sA8oL8HwSi$OeQTdoq&-}coLX>cXwew=UBJN_2zEE__VxJV|
z;>Ai;bhFaFplNK2DwnZpUagq>)UYNfju(T!JqecU_8Zn-yMFDu^vkYGUwh5k^@7VW
zMs}~HK5eX<b1U+`gqex9K@d{7>`8som^%?_{i^6;WxO~^70X!-FP5od9XrU2kE^1e
zwIza`X<e$^&f@J*t(r5@!7`xebIIC77wKEPJS*Lkos*uoG`I^Me}SrpM`u_c`iCRO
z*Qxp{Ri78e|GuiP57vkBPne+EGto~HxdPal<fOxIc4Tor$fgM@GKml<ZoX;-I|Qm9
z1WL7_9Rk(QHZWnr38~KRVWqtKELALHRsDcjIb*M84ZNr#Wp83FoY+*vt*i@b$Cs*N
zH%Yu?-MaNxUw3)>nrp9JCx;ljW0F$c&txtK#Cg(bN#76h!vVro@8}2V!K>3%GxUS}
zfNG3ezk?((w_s6vK_R%UH{y23WYtXlz-=yVy%g>Mx1HeU<Th0Xznx&ZUlqY^UQAI%
zaGMunRI!@X^P;lM(ZKw?=ux#tSQ{@^t77~1Bq(i?B`5T@BwOlIw<@NQKG)oE?ZsE8
zU%KX!>o4a>xa^MUirMKU3BOufz9wA|$y!l=sh~@8mXrQ4AhU)2Z3FDQBBMoBKy;F9
z<FM;F53;r-2;S6gRSh}Z-!|4hO_3)#$bdE1vVQ$-DShpZSs9Wl30j~(a4l4hCP5SQ
z4>ora=-|Z)MSYO9@?w=Lwrx*_k`mQFo~0#&s09aQZT}4BO@{a{G*!8TmGkm^m3RFs
zSWPm7ElpL|u_j)<phT4qvKCQRaq17L#>;b6R`>5_jsd*<oup4rVHvzUPnnbKVqQ_M
zQuUx-lv`98)bsLur9T<;i?WJ)GUylO21O70q3oOGS7rDW6;EDHh8*PW4ws7H0QiiW
z<K3JLn#;9Yz@!1Nbp!lVP5-{adnDe?i$FhHW%B@d&k5*fApPtdQSVC{P$4Vayv!Lk
z2$(dWM&M^^h64%@3quez)6I*VUd4ZaAO8OA@*;@_{G1h{K4}2Fnhba;hU14Rd>6bI
zo8v2*DmkFy1z9mLo>vrU&*mtD2Ac3=PAfwcD8&O^{I6;U@pF}efnNB1tt^~Q?T)zx
zN<N%6uE;8uYWX^BR*kBtf^BzZmXc(5WO)_7PU0~VSt=t3Ht|RlYWmD7MSn!%H9g|n
z_|Ib%EtYL*cVxE9cNLNbcB=}(0ToSB&>)Az%MjTe3)>VP-nQU^WQf4f6oq$7{4}>H
zJKP?HFHv|U-|bNNaxz5-nvM*pxLPtyM}`W;P|uoDAjvaPAtW^~yW3PfBy|e(K@<ah
zYB1z@rm`a?1^&83ZnjXyQzyGlvcUl<#|vcwU#jq4_@$jC*+sHb*d2>hCZv?Xw;oHf
zb>=LJSM*gRCNDcHkC(WdMe_t4oiwD2^f{+^i8npFATRi}rQMOMQYEE{9T{v(Wt|O1
zEDVbBvL_Aol4O=Y%r<yF2ve)|q@m?PsD5)1w-JNk$Ir6i)8_PSQSZoAK^W|2-XRd9
z+){y08VmymFK2bBG7KC;Y$JTxM^w3v#Ahu@=O0N6NgT_a$x$&M?1$5*CFzTba&u)B
z)?Xm#k_N*DEE|4eQp6ni)Q{RF4I%tbdj#LG?<?#h!U~Xoe$tQ>`0LjCR|<j-4@nb(
zwZmIXS+1$!5H8C9gBKYU-Ls}B>;2Ub7pop>OQnQ047H6IwY>y>qzK;_1^d+3uJsw5
z3&f<<v34MLnxg1jb5NmMSjsSscAUReqKBHy18AS3UM-}6Ej1*5X<l}2a6Ki+u@Uh=
zOYib`I7GdEV1UOAe~FiPtpB)8ma!hsJuXIqR=*;s5in_3NssbC`5PLri*J>9+y$dR
z+~d8}BKe0jNxE%!FCK1#e=*IAhsSz;6?5tJ<tDp-YwX}_rt#aJ%XO2ZGR%1k%)CVj
z{62k}ESQr=nVyyDMJqCwrx$y3;3V1<>#8~CD08y8`dX8}CTU)J?YeT4zi64jiwV4#
zAd1(lEobhl69+WEur>C9sm83!*wiJ716jSVZ(P=ri?6%VykzZqbC#KIUVZ&l>(^d(
z{WYs$@qLYX>6#nXu3nSC-;7MiFbfx%<*V1i>V+fIuUoSo>=W<&u}|KJO&K~B2`;&I
z?WLFZB)A_4gu5VvyT#>{t-rB+ja%HVyMDct#E%k%w##7Ee_a{7ZC9MIvQP88!?FAJ
z2rm=PH^-S*uDQ{?WKG${H>_QEt+{&L)#YoiS~JPKkaez$8_@j2RdJiQ!a0GjPBwwB
zUcm+hWo9~kvZ<Ut)ug^ISzpBg9N1Jj6f_mg2!n1__9|E!0{KytuUaCmZc<PYUZoUX
z)ur&t(5qdlT&19?ph#wZ50~h){KoFQy+y)nN)#-Y@ai@~#&UwIyH!QKf^G#5D(I+P
z)_=Ic3;eP>H>is8Hd!t|QoAg9nB7^fx>I?b#IIA9uk(WdHrm!}G~K`!+j^xM8(Nw7
zzJx)wrLpkc`UZA4;NmuLX_QT}^%??XhXF+^*;gFg$$G^IFb+W6ooRxu>%N3!RvObQ
z&bSkXU@0ud?!2>vwcM95qxprHURl%_pSC@&*CL~IJ@dr%Iy+%P4L6LC|3}x`z(-YG
zYvajC$q+D1BIaX27y)BMgdreCL>Li6M1+BAOeuw_B1A+O`G~2tFjB-w1xCbK5fO$D
zLqvoD5hEguh%r)&bE&1dUW;?B<>vbKPv=^Td40X|f7V`mPR==m{C=>q)_T_3Yp?yi
z&zZ@`tyI@FYe=^Tgw1>amu6XG9p6<)vVeNbrNo(!q22{_UshJXybh64by*XpI)?UB
zZI_WbDM&3@SwphBM3ug4muSS9HOA2;N<KyRQHZItmEugV3PieP%|x-Yx@8q)K1Ppq
z!=+A?0?(sLhr4CD-MT#GEQ9};eK!A^lMjcfZdv(vE)8haSD;ttWn}z>`JCJbYDGTY
z3tG}4e>f=ejN_m;cF1dJN_JL(yQWO5$AjL1>Z3%sbIlw`q3o>u%xa?Stf57V;w;A3
zVO8M2XF9wr#=Qf)%vH?}RU`hr+u>!_v*hZYmGAE2gPean`1kJ}`hb&s&=<|CW+i?$
z;om<y+%Kht-Qj*wfOYr@qnljbVZOA5qHI1lZH~%h7I&D>rcYpA^k71)`Txw@JJj>&
z0;?B?v^oX#tPb@9G_(iQOHdyFWcu-MafiB^X7$J#nz@kHG3vo6WAO6>P_Yiwd^*ag
zhv*-STG}e0jL|^-tphce`dtonO-QSsh5Gvr^?aJb>Uk|%-G+uJ>`>36<;vQr)dQg(
z+M!-Vds+SSv>GVK-5u(O=nG|?6zi^4P|r21d*;CU;S%lq38;T-R*%g={c30-lR2~n
z;LKI@7Pz80NGShgehQoaG22|o$to<Y7A^mOS+5T592(ja1<plV@{gkh>RUS0OKBF=
z?uTkcjlV;aaoNw%M7rPpJW1i6=n_xCO#R@B>#~{-^LccXy)Q;%s-Fs|H*}~M(m&Yy
zY^PR-pgv&ozJWY0cwel8<C<OeS%>*UG{uGbFQU1wEN>xNG5ymeuLJZT?FFdl0Tiu%
z;G@g+9qRe?1^cL>@7M>Aa{bd~dIx9`jm?FRIbqRdBAzZ!cBmKA!dx`R657J3rvlmo
za?$1W4%AZmgw^xY>UyZ(?@&KX7obMhEyzP-&P^v29iYpF4%CA*3u??0>+-l#t-7cX
zCMMHR!!TgfBKilTmg=xGfd0vEI($7u{jPwzI;x$tLA|9zy^yA`dTFCpZ-V;G4)vq7
z{0fvYkM=TZZo5YLfclpi^#!9IrJlWjdLX4yXsfQKF@tLqsNM6B67>UE*YPeiHglLA
zzrqzoRzYDxwETb9pLdk8fVQypT&Gs|f_iy}^{hB<EYOP{NLOSA^qV`(tLXyAHrubw
zo1i}0p`K4euY`I|g{U)sfcn2X)N^PStE+=rJv$>Kt7nHA^VOAE6N;9`wevEl$9Jd~
z(?4L1o|Bc2MxS4+QGW-@)KF*%s2zQ(D3p&yVlEL_jQ$Vvv%E#7q-1^FQR}4x$yI>0
zV5wIJb^tyvbm(Ws$p?MWLt)Wh)`ssM=-m<7d|Ft5S;I7_oWnb`^Jq%}YW;9j2Mp)V
zDIMx+`lKMM{4(s)sjx6>NYNr41g|L0ogKJGXjWlXVNu!(oH>togg9#lg$q&9!4xk<
zwI8HEgDaYc6!K3d%Ix-&4qx-BUlDr25}(p$TviBmzg&1^9t(Pa{6)ye;+W_&SU<{C
z*h&gPpZPFRk#!>IwxFXB%-$%(asLu(FUlH%0d}n$A+4&{J~86E{h<TBh!(mLk{qT0
z@j`vBqsXN@DC$NN%nfOCtR&g44s&D?=0(AFtuBLlM2C6-U10T+5>aRFfO=AgdMOR<
z4Rwvj<lHo9=Fu#u-AjU6{V}W`?TBqjHHCX49got^-l*YX9YZE+n!UZFklFMPE@Vzz
zdszbY$qx0y)UOXZ(P*s&$u?~_=FpTrFn%DQ)qr*HZZ=*HwR<+It$xrIyI<Q8;S3MO
zpf6mh)gawX3s((&(Fc8JDfPSxWmNk#3bgyLI?8x}#<F^DOsf%pchl7HAT4C|qLfzm
zf%;&F^`f`7T$MGnr(+y$-v?(60X=v_)`iT>&mu!%bp}T4w^SP|lH+oorNB^hMCaF9
z@3rc?<xrT-QB1~7_-8Zk=4SJPqP|*fw;rdgyOl%z6kC%AXqr1T%T+W@%j_mKV)8iD
ze^e$R!(^3~*-dsyjC-KwCxAM}5Ps$Py4yjC@envxYwHkxRq8WR;FsX|;=Po7-gJ!T
zw9Hmub{@rm>6Q=mJ<24?CKHCCTKtTWWp<NtWl}T|Dqcr)jN4=Q9WiE4Bi}IOu~Msj
zEY8R<)Q^kxGRVx<O$>tdDzRRz)jk%(I<4L#;qHfwA*B>YSrYCMEwhJvRtn@^aez(m
z&-g)s-$;SyA!D`8x_e*p4@Ye{7mM-FX5D=d#Y>?cqSbcmO0k{}^#h$)-!Im4wAyaH
zmV!etRdlB<LohdXKcrYk_an+_<}r#w>*(IBy1k=Ee~OO4k~c)N(}bO=*%iXB)$D#@
z4{7#GVZRpk@>25N2v;LDyNKe<)<}VuZ>I2#m;p`-=raxakvt;-$`&?fh_ItHJ5$&>
znq4pKX3ZWFR@WrwoK!UDyokT2;7w@c??z@7A|w}n&m1R)JuAt_>~w|5d|Z?(l#rgj
z3HZ&TIixg2+(ld$w?j`U*xmDl*4rAQ=Xo*zzH@VzgS=(v1YJ9~c44Zx89^eOKxK|0
zKe(cC058NpTZeL$i?3-~ZHvUUOgSl9aS7|yV!ief)<`=?vQdSQc|rm@DZ<mrH1jiQ
z<lJnEjsi5Fl59~f+%)0Pmqwuj91-CO5q?kJTY&5;Et5A=Slv*0i-bk^n4%qddxX{9
zFYjx`(w}cZixrb+H2jnb@``DSrGBHcoIKg~bX>7Y0P8hizpzI%dsf(U!uHCeBzx<t
z*>Yj0X?BsYI;vg`!tU4FQ^KAR_R6l5xD~E)6iYwenl&tQwTL1b@tLq^h0PyA@i8#a
zLm<CKSY25DL1B++@R!2sxC@FYHnt-R1(lR!cBV-0CzlW095F4}B~rCE<U0z^2o^({
zr-#BE3NqNO+3A!}wvpQ)Y^3mbteAzz&|e1NpRF?%o}|R>?Bi=O(!muW^@AZU()D(a
zBhNT^n=J9TPYJ8@*1MEqtQ{lT-u}o0*!Er^W4!kwiL3WU&2QFxvsj^za);^twXo-f
z?XyDAeO3#)&p~qCjxuyI`<&70v!cE#J2D<xWP&qtRh~Gx3RkX*U#+ydGFQbZc?YA;
zDCt@9vS}9)_U)@`PBX`6b)%ccXSuiyI2C=-zZn;zC=y0TpwG1>vo9K)A$XL2A13v_
zG;1(6VSUebp8CG$#Njv60{!yIa|ew3Q;5k3mBW4*8_dmA!lF8Onu34X_-Fj!)tYUB
z+9RfMHl>_$RN&e>Pyw0p-5#D6JF)f*B40VmD3zRfDqvnfTgovSCzQi{k&?STn=WB~
zP|T%a+#a02IxFSsu9Sk`%slc=$m&f$y(8-i$JJv*Hj!loKdFM{^R!_?*6o=)P-gdD
zUGN&$5rLdgkW3tA%Tc$H6<IgZU)e?fN^;!^xA&930t8o?ccQKO9}#J@NK=&Doz30`
zU}SS!4sc6d2aJ|RA240Z^>`cb1SQxjI*fvE)9?f(V&VunRhsjWiNJNC00<48h#S%h
zN<NJc*G@$GKb(mCEl`kpN-+{Wgvl`_OHpc!s^vA=l)MY#e2Ou_g(e71xeM-QQ|KL4
z<Tc9#vsy5R$u$Wzx#lyGo+aNTEIEZp;RyV*b&%q63AcE%g5e4z3UuZQEnO?dyf>QF
ziSa27J0r$_C-2>e?!qKQH<(g6ss`7VM<C3cMgb-}D9+@VlARRUx0INvpd~{nHW}KH
z6k_5hKa+VPtWm;lVT3V>L!ls)^wwnL@sQv@rQ~E(yyORpzpoN=orhdgQ1|h`zk6}`
z*UgmhubW3vz%YJ;Og3t1gGdik?0?1EX|2HI%D7a-j{rWIf@Le8;`qIY&y4(*ur0@f
z$|=DH(-bN*Kw&nV<<A;H1NLU;(hh&tO*CL?))jQlkKX&h1;|EBh3t)~S-oiaR9r`J
zt#@7Q`Ff1&sqlP|g3~~{kdH}!iZU4@!U_sztLzTGU*wp4S-pu8Ob&|hm=YF!g);c~
zVXML5A1VG*fU_g~e;EaspgK%uDp`nJzfz^#uu;U@lsHbQpQ1@__<^Fcm3m0NByotF
zTuGJIA^pjJ5BwBUl8KK(OlmZ2g($ZfXe`sv7w$%ozKa7Lq9#_ykgvt;2lCyERQJ4>
zw-%8~_#Hw1PqMD0d+*H}Nq@W->D_WKn&Gmqkn*qY%^IGWqyWRZQk+R1dG5pcXdnuD
zlMAB|r1W7W`dp<_VZ5XmxK{8H5$>kA^nLFsk)ILyw-kaq-oNq;F>Er$n0+GhGv?}f
zX(-5y3FdopRe|d&(@W{I<f{Ux^puEYb#)K#fuQm(&cg6X6lLomg{EVLAHD$)o<eP{
zI(&}=GW?*FGQ16usO1i8lw-tT@-howybT!fxB}D6pJDb=d$AD*7*1axYR8Qk6lZWB
zwZ1uSte_OLdK$TLEqSJcJuDzRJOhU}5;8K5UL4g(tTvpUkz**vM)OsAM%F2#%qHPJ
zCD+fP%b>*nQ=RB0oOW5D_Zc?@D9G%3kzz#iKH{ch!eZK)f%5qZtJ}rpmraX6i*=Pj
znQIjjQ4CF(fr;(3l6)!ZA1TEs-Ap&<3)^4HySZFgOnoSxj?Bn<F7vb!(Uf1LceFR3
z6VUf!GpaAeegThzG>arKi&>g$Fsf46`!%~t*!7xi5Ejj<z(<7DyQop;gq4Em$C+70
z=~8Z)Ox{^MB@IPW-m*+F*xo8Hw_yGYpy*r9Qz(E)9Fzo6%gOr}CvSAApvEW^mMGsZ
zVLN(-NY{!juO`oQVtYzZ*uru_SQXgz)<G2gCD@S?&aIQkCry6q9HpRzzr^5vmIC)P
zc$a{6hrTsI-We=DC*toT_ak&3G_PM={1~L1``wt4jKZl>xH-(xWA~$w_3GE1_v6xd
ztdl|y0M(y7Ot5Y-!Iq54bj1~gP{v&smos+1pwK!D{!+Me<eCjGPfGRmRV<C2&D~@$
z4nDq70+^@(v|u(`?{N)Yg~=5sGR%?eV!xJRqXU)-9z?jeIVkWTblDVV;ufx0IJjhC
zrEv3v!>ONzD}=-J#vEKTIU?LC;XV`YYvImIGmUeTXAYpnilx4Da9%=oScHMay>r|O
zVb=;`&m2@}msa6MfRW9b{Y=;|1$mx*VE}Mj-Hw%eE|3UQv8#pMs9CJwtUaOG)588h
z$vGH~Gpl(b<J^ufCT}%5h7XOk^Wp{@kBHg(_<0JJSx>>a%pTF=V-$M`rSui{jzPkf
zQS659y=dS(EGqRBeh?+Dnuj`~*%_TuB1d_)Se56K_hBA^52qWv99v&VG8bq-jj*dU
zyIxofbq=juI=p+rj|ks%v38}tIje9`oZV;5&l>8!ldmK@Iq==NOdU7ecku<I$q6|8
z<hbs_)zf@L^sy`mcO@yr?6>541Y`uonDYx+O-XP?>tV>A(ia(g&VZ*$JH#d?o+cev
zY!TnEn9JoYE6{g4DEJ7{ckmIU&qGluEy1LMm=vwH8LGQ`7_N^j00<i$fN0hN4B^9K
zo}d&oMZ6xG3oMfYC+ATZYWg!<cqz_K#w&}=Dj}OF@C?#E`D^klgr9G;pL8`Vw4Wa+
z1~t(__~}C-{0?_4%B)kQXrnCvUZhduDR_~Q{qEB0wBNM4Nt_%Pm#xD6oq|CXC==rX
zHhm7Q7SH|}3RT3Hj^>6*tCxtA5CtBEuMGk|p}}ciwc6Jy@&ZMVJ&Nk#z`_<?D9of#
z5&I=^Mx7W=#m<opvlhWHD26M=5F-VeqSLk#>$Tw-@-Kq>Hie?SZ10plG_4QCpfW0!
zj<r!Nr!Al)Th=NRja>}OdTqH|EWfsu*`zJMq2OZfeT&iiTohdlFF1wGNAv%*j1pjr
zcs!ZAQ9>;5T@hIV@Jb3WSxa6J`-qVDoN`?EZcwNqTdFg4i{E>a!t4YqWFrc`_YB3^
z*_XOt-9NGdy5O^vS^`+5i#$tVHDAa|A?wKxVNt|t%P)p-*Q>0j5Zl}%J^a3v6k{~+
zAY1V-n^EbX9M{jjp(LyM{@m1^G6M{O8gJOvz?qkPHHc?=f@uMb#ea?&BPhtaY9T9y
zM1>p{(kkRz@;(M6K9|A-+fpVKLS_pI3E3p1Nyw){&^6hh2l;EWhSPvroU<aeXiO~O
zwaTp`g~E9hp`O3W>O;S+#ra??|Hej+SplUh;<3U_Y|F(g?6%oot&lnj{t9(ner@+F
zalJ4LlhCj5ENfO1MIpu<8oE}UhXVIR9tR&K|KHR`_Lm;=vLHn9$C0vMVy0mh6IQOm
z-(Nvt2#RJSfR8Q?;(ldUP{ae~<4)9{Qi|OnCF1UZd&u)^xLet|y9aiVAL`8Al>9ZK
znT@a+y$EPihtJf5?7<p}F}jxfa=xSbS+-Kfe4cn{8o8c;aiuoaoi?)#Jo?H*RpeuJ
zdS=oCSiP$S^}Kl$WOaJ1X=_8hjG|BvTMb`4rnL1#JH+|Jd?(IwZI+hLKQ5szXj0Vu
zD7UGpW{z61e-w99zd;=y?L&dzpjFrX2J^>gnLi%&D;ZzM@T9P09>oDES^&#t{OiIV
z(my$_C5tG<>Kce%#y`7y2YHr3eNd}@qAZ_0r3kEX)3Ge8+`WXCN;b9Yf20_jbJIKU
zPj}HSe*BIkK8EW}Rwu!AqOSFkYdO?`&ecz}<6T;`CuUqGg%o5`!Z!Ji-&BaSD$=U@
z@o&)KS=}b$ZzCZvwd4)qhHrQ%s~1*cz6^6LYo!3Iu!~?f%bgSsVYVIlWL9oBJQwDu
zm%Awrh<Xagb@s71<H=JVCQuKe6sw1TW3@E>lcx%`x|BRmLOt>l>QSuDcZ7P7uMP!A
zp2W;Bf<iFC^=^zU=fTo6xjA%)4b7({tB*l_CI0Cyhu`p%;|evCYX#INz_D8QJXR|8
zN%BFR`6+q2se%1ue+n|b7;1BAVZlFHLQ%$lENOc(NeO0k+EzFtzXjK%>frcoguKjd
zrT~+ZLJ|~a4zHFmNpb7tJ62{$-dFY^pW=%t1+_{h_YfWRPjsDEmXT*AtQ$4@0Qs3c
z$>qTrP6SM!>MHzG*%VvJe2$jmc@o3t^MxnGo5=MP*xix)RR*3qLO$?CJZelC;8#vK
zV^6hEkl}a-brnc2iZXbR2J7r!Rwm$8rIcXs2pQk2W<+442AyeiU#5q}Dx7%PC3ZbL
zZ>_>w%;*N2>uT+K4}}>W)9ARwlc3PkkUA;FwpGBE<DVXYY{_+ax`sSJ*=MoK>b3d_
z^0Sj?#n&c9)LdYWI;6okNiaAranz0Ap26!PhIqcCZU(vPzy{TLay;Ybu2F#fD|YGm
zj%TpXW7bDeCVnBfG~qt5I!FnY;!01k(a1C44wIJ&K6l1sAjO$rZ^LAhx|I3dK?*a6
zW81TE^Se(4gU2yznZ>4rwd46hJm2xGpFFF<&ev>6E{@h<QD!mT$zp=d0f(>#+cst~
zwX)~6cyh<=6VeOU;{Dv;A*tJt7jvFkB~NP`$Okq0tZLo0O%!DGH#T%kqt8>6(e06E
z@qacYeuoRRbvYWWhr?y<0$%4*D38RkE=XQBTF+_7cdWxHlvzA@;5w|^O<`v7Je$+8
z?nm;h0qfwb<U7J$DaG0)DwAP6<z(e*5pEQMOJ24NV+~*>9)BoH96y<Dm9hU^9wpZx
z<mcShkh^#!<mdX3Yb~n32dsIv<k=G)^f^4Tff}8PpHn%WJHci0zEhR89#<~R&eQA)
zysHj&wKVwpXCv$2ndd`OGo;s^_08mkI<rNZ;rToYtV5j7=j%XxpggNLGRbj0@20TQ
z_XTU7^>sTv-=E^_u9%|FfnW__ZU}|KSf1yGvt0Dax-4hrL{ZNmKjfIu6>5P(;q^cz
zTt+e0tq^~!D9Icy64>n_(cz?zSRBtEQ%W^KnL|p4d_r7czE$W`%7;43Fk1SKQNb7b
zPy$61RY3I!{@G@V7p6tlLpvQBPNwd7U4r->*?D0Gd0D+ttM%;HB?O+;nE9bbmrp*A
zxL?4G#q2>2Ki?7QMR8_vvSoskEt7kMt0vF$;A%KifG#6H*rLsFYi`r9loQ!TAx1Y+
z@O0Ldm$|5#V$5T>GTFez^YauWINw3rRPi)s16J74<l6w1Uv>BTfZ}M&26ZY^n%$zo
zd7UqxU+ltRfmTOefY}1^_#*B^nEhOo8}S)uW^t{~<!!8_Fjymn=^W{~cH<n1Ga6Hj
ziv6X>DaAZ4)1HI%O9>UgrXDH)ibS$<X;uV1YLMtRVUG|2e4Hd|Q#r+$-60u&c@HI-
z)fwN6O%j0}Dd5ec$j2;p)m*8~%@kzzq%_YK%*M>l6!4b&DZy+=#j^#MS8Nk?NF}4$
z<gJGmM?59Ql_0aYZ{-w3@k$t2bxy=<fazYujmO<&YY&Pu8dEaQBwP1WiqVIl>;%0H
z7j`c~y$Wh`Ux<Q-vu&%%&+4^Wo$j$|b(lg><B79tBg)#2%V<WA(`el|vYpLw?I@=t
zqtT+gBJY^PR;t}!1p7)?^0AXwvMI{q9u#DPH-D5AEy!#gd0zs_<EZo94Lr}7!;XPR
z*bQzD8+x8+%p)zW$9at19HsyhpAhV&nCm0tlq$l}c$(rY{Y-guG@hXpvq`DLtF`3W
zgt=)7{&Tz<CqJmVaa@UlZG(RouGXN&Gi}eisORqa6l3-YA+3~TE-9pqTrYz|2iOGY
z>ml+n`#Hy%@7ROw-OEgSu^4ndMOpnUrM5ELC~TXc_c|h*A>G?WjP|<8yO|F=n=vf6
zQ2@Uidm`PsKjGO6S=@_vNub6C)U};Gv~y>5$MSSe)2&-5=vY3vqHtzgqJENA_a)C3
zIKwRq6TC$SVhrPS$sz4)hM?w4$uV5!uo0etbA4lY--3-#+XAW9#-B+bXS6!)JFUju
zJUjbJT5#VS3Ub)<fHqI)NpZICOHrTgT)qD^CD@wF>cskuO_8lA%1d4*xZGfZJshX=
z&CwKK7S9^F)eeRz%xt|#cMFNLFyGPCi$MjLV1=DXo^73EuT5fZ+D(2|p9gCi99=zH
z{XK<P{i9av{G`=yV-nhiGT-hZ33?m52Ea4hIr@CZA$%@sJ0JJ9;_~Fs2(AmyHQ0US
z)5-0)e1B|vmTMTN%UpD=6n*Gxi@eKfRd$Z+P`m74-*Hd^xhZ{zhmL97cGdRpShsA3
z{X4U@{a57OfvR!WG#6hc#UCC;0jN2ROmOMK<XhPl9sNpt#0xd`QHp(iY4a5pUva#Z
z_6n@qD8!_c{2)c6G&r5pn1J6Ktx)P6KXY8|T8$@u?4(Y7?WZLBI;ef6$5~v150R?@
z>LXgMi~31g9haiGFNE;VHVM6lohn<W8{g*qn1iAX805#g!qn6NY469Jlz=%FIrPVT
z$Fbv)o!~x~3?BPdbx)eP6MKO&3P4qKzxI<ZrxiS=mg93M%xWHW=3>(71r%q;L5ekk
zU=e5VGOMpFJ)n<c31bv)-<jYhlnJH`CP(;gmER&$cc;gXi!{kioA3CbjFPPN3z;os
ziHy%?9G+iAskT`rD=0N+{)~c9^PJ3!Su<u^UT#0^A-VX_O9{5Fw8gAD#D~)(yI?#+
zj6a-DUS^+A!^rVr3k8_PH2_a{Ex1JoYg{txRA%YX-V&iWqcL%CAT1wLN{l_PLF$xn
zPPoX=EM^8K+Vk&oDD)ay`}cX)D4i8j$KT`qB&D~_>4qN1Qg-Jh-)@j9axqy#@fqsq
z|1sWgfS~A{)q7T*c>fr8@QlYJVJ4*%W$;K1*4^64Sag^_;8q^$Vb*+hS*`Q=hv^ox
z4*6_yH6be}Gsyco3c;LfBFCi{fASTDAyua*?u<IY_(CgHbmAbz*{DepoPZUxy3_yL
zK=SMX8x#^FKXWZIQU4oWieMHmq%m<)j7gmodnzhYeCZ9J%Ko^TTze5k#8Q)tY@Mx7
z=aUcW%)bjk3+{%|pRn1JWd8|QNo;;do2M(G6ZEGelwk9?LS=p*i2<9Q1az*u>CtyO
zgHo(cPqx}swg;}!6sK{>i=ph(Sd;+6U169BE|K<ulvA8-C+aY?>+C9RJ4tNtwiMeS
zX|S;m>~1Ly#%n_Ca;4Z{C^LtXF_V*u*hgn}lQzX`a_sqxEsV7KOLFap6TJucGxk@^
zhGpdcdAG3GZtz0=XB@(zrJh*n9Iahs8Eow(%GQB0X8*kxdEbDGfkJl38uA$)xUh7-
zbcfHLr7*KQG>f|wW}l#xNEN|D0p_s096$xqV@Kz)yG!c#ANbC)H=$<Mfq#0I@2)$`
z=Oq+^HM+YZejxz~`Ey*fu<IIIZglH^UMsHuehJs#laEVI_nmY<3j&VL@fSSSeG^m4
zUu+9Vx3u0#QJCX-kJ`!nWeFwNn{8^(Zr9#cL=FPHQbyjHD)KUm*Fu=YRF2(Ao+3KQ
zLGpeI1C~1nYSR+a-A~@PvWC)>H?y)F$z_ycS1VM|jwEhq-U3@kahBqpdT_=u*~>BE
zLruCS$*4jV?T5@XYjm$?P>w5!TL$)px1-?8wjt{BJC{a%t*ym*haBU(31!=y_fW7L
z*MH(t6>56A37dF4Ps8t+7!pkKD2fTs{bgT^<BaYJDe%j|0xOdv_?MFuOB3GC>Y3d=
zr7^fUeH(?Z*DiDu_i$-7?jcxx3@q<?Mg8QdHmyEE;kPkt{^};zJ52jhoZ-AR+HAlX
zi=Q0VU&m02)ziRr;_a_^BkvHZHJt)S*%{vZ1$*Z=K%1TjeaUbCu(R*AT;(YvBQ5{i
zDahZ#KZzB;@K28GZ>K2+cSWCpW3@J8rBdUiC02h4u9MjQc9v_%r(ad!znvo=Shel$
zq@sWOo-3N~KFiZ;C;GE_qCe;ETz{@FCD=W0nL085=K?YRmIogHZC6`Wzr~%xVVLv8
zd`Bnh$rON^AHp;72*K?$FHQeiBCKAx{<WS`42qEJ2ne1>zY8*uqDO!|KbrhtRePF-
zMUMc=M8?loQi#>l!I?&-p`J-Gb{3Eke;!LDv$(@J%)YVp<r3pEk)6j>1XfK&rsnx0
zX8=Wg=ZG8y7>_NO1UNiiaa4`I3sHhuyxMsPj=$T?P<rerMuB18pbXXP8Yb`QZvNdK
z?vcD4i3jw0DMlU9+uJA(_M$B4$>IOrLn%gYP$(S3J#m0}0ya%#J;G9t?=#3BN08rR
zF9#U%9bz<J=5&U}WX~u(bWlbs#Rv}{SQ-`E!<Vp4kncU9zDjQ@zW;%O5EPXIZ*EMz
z%>2KJ6lMG*h2j~AIiHYd<QSNbWg+}u+&UaX=l|cn+LIn>JzBt{t^U_T0fysEoMU|F
zcwrlb!P{>pdT@#Wzku&DWH{~!-$!QnK{~T|Q++F}a~+dduAXiv{xW2cd3<}~alkLb
zvdC<UhF{i7G3K$gVs)1=C7DfXbr-C)$H9+hC;5(_tYnya#>Z?|yxhQSSd5*u6lHdU
zfSm^@!7Mg!9|D}cA@TvZ3W~RY>yG<gX7RQI6C47V;H$ZqVAIbep@YB|hsK%5Gkzw6
zg}{NTU=LgrHADOa#s3P&mp@K^u*RyYlYKcS58uafd5A)c#);t>PS@pFNtwq|#bNbC
zmtnR|s^ID(HFFh8vR%3^xww7eI^`k(9|HcdjwSbVih?gXi?U38=JKEvo{JA2F&u5x
z0x~^<|BGg7Y&uY%VDkbBWPb*9d7)M}P=I|jimT%kW-cjVUWuJC*QNk{;UlK1Yk}gv
z?IXZkI^05hG@9G7a4@GIADrSiP2=ivj}%sjT_CFKE*jjqz9`HMk55oFX^LwTF1IM9
z2UD)w$xWK?aHD8NanT4`>Rttp9hvI#JDn-_YAu(nbjUaG-T>|9Zl>r7c6frkzX$D&
zL*B=z8m?KHOr#K##|6}Tg$5muoP@NO`rl2#KY-~=UY3;$hu4NrW-X+lA7g`bm77xR
z`YJ!A7&4v0OlFej6OcvZ`IwbBpDR#IK!*f$L_qiy9Gje#;;+KXb;<@WNGqFf1bkk=
z-&6DtNb*%bqUt>9`tT3Wk3KD7l9SsPA8qD>^CN8A*Goy}a7)i*q6p_n0r>cqDxmLf
zN^p|;o)Xk)LE*h;w!tSH*;BvK0_s;o(FDYgQ;^Al$iK0&g+E;Y`U3?R?7<xgd-UM#
zPQ~}-e1q>#-hYD?o=z*V57q^lc=D*gx+KpJ<Vyg2H69VNx~mH3>K<C!SER)veU=gm
z+eXP#z;;pL^vCBFn9Ea`{_82m+(xNw|4*eN13a2ersyA`t`zkEc;sjX9HJnL@isA&
z7FD`?0Pm7II$}o8lw^GX?!Hg4RU3K!19V_91wO@cdEt-PeNLn>e#dLTD%%6=D8U~0
zD@5j@2<z~ME*CoRGxGcitcT((#pfT9HR}2&ToyepZFbEH@p27jB8Ge^iM{4)O2Uw~
zoWKFB82cEc7mo-(Q7j(qaq^4tZYn$9C7z10W8g+8#+t-sUyBE*47)a8V!76>vUe@s
z$UY6LL6rD+)(#>6pP1HY9`h)8_qCrQ5j=Zlb3)QTIk_c0D8~4b>EgX)rt(^{UkWKX
zBpsyWTW+|_>u3tPoa4GB(m$@ldzhzTJV^6{aLVD32Wjg;dc<5`EmgQ4&nZy__w^?b
zfO%~6;ec{-ug3)ZXV?$M2~|-XMHR)ZVk_#nTeER##KE6ajK!rA`VFI0=r^pD&~L!Y
zCLGKSDG6!_u3tEhL#oBgkXlNz^#;w>Q=H2hIxzAX?uLKcio0R&IP!i5hzv_FIwCvp
zP7}x8nUZ2JHuRiA?{O)}i*<oL4SPZg92ODWFdW7hHw=@#(#JK$3pt;ol#?p_VOS-V
z_8aL2!?5S(YLwzOj!Q3{DLE{?zw;cH;$0@TFKv`0m12XzJ-!rcp`s~8-KFPYZyG5s
zZUVGHDX!LmbC>=AmJb!S4l^8g>#QH1zFLu~J;SBvx8c2{yy1mXkKxm#b%s}}>J7(k
zf-Czu`94QfBWft9=;P%53&fjbp&k*}>UN<wx?~!;5my!5;cnb7W;ddH{ssI<m*7U?
z(J{NhWj@1hT0;IaV6ju?N$92xn&RE2Gt4K2FT+<wGhbGs=?E>y(=_&8mZabpaD#I{
z6Kugo@#SFd&DA2<EoL{jP?Fu;{JFHiD7^mh1^7{$B1xDXkeF`4E6D8hmJ)UfT9$Tq
zOPy5WmK~aYEOa!!L7V-K?jd1~#x<4Vv13y7St)n4j$`!4BEPkQ!b#ZOx<PM}Zf&AC
z1a$hZcxF8GKe0C6ibsJ8a+VT*V<?uk|73bDa+b+AT8-xmO8g^*n2y0`mcL|*%T@61
zF?`-Ljpx$=@aRip`iR|_VhZ!74xeOkDLbq$*tR)x$I$Zs#K(=tjMMgV;CnLtm!ZaB
zIam0Jl!84zM73AJ`Q+7EagCJx3Yq>^M#|W65g570rg#47j_Q}-#$pSL{k&uBG^x~B
zd@T2Gu%1mpCJV^NWRXNXHl(ELg?=vC7U)>aIgG|Wl1WVMVcotwAk9OpR!a8elm9D}
z>?@?eS-^`a1lH{vq~Ym670t=@4Hj5PcE-LPQav9&V#$r+!&pF)aArCBSIo^moZ>jw
zzLOHU?{ggtZ)Q6Q-S@T1t;6?&xW5gv8h3@;=15n#Z60?8_iYPob!n8k+=dr2(1YB!
zJ#Gs=t;e~B>!=s8an-5|y2tTy^n3iX%`Ug+QJjmroqH6gE}aWGHRaykM;h&RygStf
zxBDsiUm&=}_&<pG_H*R_FVOLM!jE@re!Au{Q!D)(in8?r@+kJ0u=vUeX79kQ4|}_#
zFP8y|P0@b?U98o!WjB7uDXl(D{;#oO{IM<T3U~P;Yur~<fyYQF#}ftaY~`!iH@|f6
z`5NR)^8FutKx&8-IAN58Hvu{Q2H*+HDE{9}4=O%$0v$yhjtN*VIKBy|H2ky#GT}=O
zB;Qe?-BpaF1eY~N)D`0-{)+K>I;faIQPwY!(?-QIaa*xU%ywyZzm#$(-gLoXz<uX<
zRLFF=$Ze7u-uZ+~-FJRTslUT3KIqEHoS03?{|{`QW{VX|Q_yOTiQ_~!QR}d>F?5b*
zR|t#OH<Y8p;{UEe6g&r1Y2+XHf0{7U6@$+Yv!+HdtA$ywm<D0?DCU?jcqxiK45nlX
z$2VK|zAPrSnzV>~=TMDF(tdP4h0l25BXOMnN#`Z9yL(87xEpT|u>9`6T3)Jo-K=*{
z);wMu;2PaMPxFg3ulfe$Yc+pL>pxR`(cLLq<`WX*-P8}KLHA@H+~$VS>d6uwo&BGz
zp50gHN5yEeTlEU}WWLQ{OCQTKI`sXew@mixL*`^mmprdbUN2Ei-bji6LH-U&@0xss
z!ry?+6Lt#Tl4BOPL%hCBX_UsBg6B{y#s{{L0r!;CD6(TtdggS9W5~&!awfw4-;aya
ze*!&Ip=t6zdD;3WUUk|i3G%}Y>zh@mcm#SB>#SocHpJWvQ;P*P^+y>^)9}%09!=B6
ziGG^ycGIRw$kWj8c=$}KR<XLLtwb#5eCm!qZMF8dUi?*hBL6}VwdDI2)|D7Giegq)
zG%51?`iuNNbYGU=hutXeN$$g^n8Ca6t3+w0wc<)WaomULSmCkPQ1oL;{*&##6258-
zdH)6bs&U%h3yPmB1N?tZZWUg<Qu<|JIn|<HT~ML*8?}CO=lY)wra0^!Kf{Yb=Rv1q
zOAmhH&utTQy1W_t;iuzTJ9GNSQqGJ+S}x@q@?YSViT(Zps~YD6-;B$YioZi+_xlcw
zjW1^40A}II)^|*!nokHH@MwyyAL9Z+&11O)kFOD2_#Jx1gV<62cXls)EAoT1MG0^j
z0s*#h4`fi{p#0`cgC3v@40^!RAsE`u0_@hr4ZdSo3H%*`bxMHl0|dUcS$$_Pr=pls
zfR99k_<zVl1|kfB32|pkBkBzVFQX>JM2|+q3`E?92x&x%foQcMQW}A-sUu~Hsg%2d
z8quCc%ywE4lNf-y%*MuBe9ZPhVDd331fCHk2BOS{NN9x5K=`eQy8{|gWgx1ph{+y}
z2pWix4H4IfIs;K}MNIK&MASgUY>2o<G#Q8%E5gr_b8Qm_B56Y~&xkgKK);*aju+$A
zLE^!TwAF(ytJT!7SUp&%5WUfTOKga^M$p**&b|`e?m?dokkWt(qY$23OilGuE)=0X
z7%&h)E8?D{M${UJIxB*wFXba_AfgbMO1aMio=a&o5N%e(%yb;7G-3{$n0(CCb(!Nd
z5QSDmK>L{EF%VuW;+H<~h+|HffvB({5*pz*5CJRVfi$98A<&p}aOeFark^<>!zOIC
znH|(#>kUMs74cw9BVq<3Zbi&ZBU%hZs})i0)jpC2B4tI)XP)cdo<^u|(lupyK|&C7
zT?WDfi5a1N%q=kxWmd$(D0q}I*JmL7R>b18k17LEZAB~zfoC5<1Hlqg982Qh8Bu2-
z>TQU0DNzFvvm%y8!LyGh1JPnd)Oa)^VIYz=L{uZ%3`DyPkrYIAMjBD=vLYVyXhfkx
zV5nD@*bp2!BCSpj^=h9DkkWt(qmU{qqSmVs0Rs`VA)*>lYar^Zh{s(T5jGHPV``Si
zlN!-zAeyX*UnevoZXj4<^6`X6BU%kan-#G<q!Fn!;vp88d^{Nz#6wO4QD{Z1NFzK3
z!fQjMw2v|aQDH?qmDC8ofe2U;buNvlHW0N|1b^!YH|;|q1HqA*>hg?VBkB!AqZP5n
zrx7s&5w{@{8qs1PTCIq6A&p2Hh?EuaoJ%9x(};Oa8^R}uc`gItu_0m_QDPv<tcd4B
z8sRe#ek<YypGH&}h-xc>*aA777c>wd8zQ9<bq1o|ig<}F*hkbraO|db*%Z`>CIiu8
zMZBEUh=hS)iOI+2ghsR(h;}Pt3zv#G9?nQ39(Gv~QRW#@s1TSw9xkyV(mvAD$HP7=
zV5=8AyQnY<sj?vw8WAuMK`UZgKqG1mM4c6}JzYxJKtyc_<~fc=1JPtf><DN?+(2+-
zrj+hTX+*1mXtN?-328)1A+Uze&!A{GXTD>;Gi@`!&}!45W1sIa5G*m3yVE0H=a(6X
z3L8R4Hs5a`0#-z0So^3p5VcmstLZpG27+x&aqRMFAN2;J(T0d?M9e_2#N^{OmqxT0
zh*m3NF9Xn0^OFj}IZWXrR%%l_zdddBh|^}}5vxaB27)D~lJ}(%B?h9*ir60qkCGqp
z83?}>@m5G9stiQ6715MN1PugBOmV!EM${RIdMhIC1J7|p4Mfa}I3CrACIiu8Mf{#4
zXCDcLKo%cK;_sxQCqB|<*tFYhqGGckBaK+#vLQGQcwJDa5SS1alvoiT2Q(r*AuRCO
z07(s~Fbb)%B2I=hB48kbR>Y@Kji@ycbymdbG$L#uSYm31Kc~QRRT>RMlNIqFQH_Wj
zh=dh!CaDpv2BOW1_`;(RsWf6C3ruk&<APY|G!TVW#5ZA$@E8cM74dCIBgza!g$<F?
z2)}^{SP}p7X+*VwsI?-_yEGzXAi_38R3qvQM57h)okt^L1|n`n{9pEoc3IeBAX=@6
z?}HkVG!Q8(;)j4nw5Jj3uU(n4{-Z_&T?WDfn+`-~MiM;Y2$mR#GAkl8su4Z|;kP0j
z9*w9n5Y;wBTqA-8B4kBe=Fx~c15s~9bn$6K)Ih|nh^(+iG#Q8%E20|%xV8xck%YjM
zkM17ujA%0u?N&r#NDz-^q!IkbAk01r;~G(@5STt5EwLihhXhf|qv`46QJ)pyW}X2R
zMj=&JMDL_V1Pnybis-{(v5#5<QD;N=G$L#uqBcZABN`1vlNE6lm&&EY4FubmQrb7F
z5v>NI&5F1>rV%NHz%0HfBa)9ve33J4vZ&B%(qEe_@)!uO6*0gsP8XFKhzc7bsS$ny
z5wIc#hQOn8i>eJoEd-{@UE|V-kbwx>5J8QoHxP|B1Y2+^F#{2|B8vSQ(PAK4t%#DS
zMkEbH%8Ixyt`Y5N#A2rnkrc#Ymx1tD5rcFbi%SednH6z8Tc9qBeFlPUOc}d@0gR|J
z5Y;wBx|E=S2w4%{G@{Nx)LRk5eBim1sDX&t5NRJx2BO7=2!UrG2?LRYz*Lvg0C+~U
z8Hjc(Vt7;#OES`kB`z!CMxRC$Dg<VWB_&qG$goDFXNx6lVhW>-d4#c~!YHK5int}9
z5di}cv?9jnbS$Yg5Or3>SdaD*HV{!O!j}%T(Lgj=5x4okbEI(tk+34hCpDtgK(tvA
zcLX#dl}0ROfhiy5%%ha0P6JVBMNHI@F7+q`W}KzoNFU5NOUn$C3aiOvuXgG;5CJP<
zN?aqV4MeRK;ZGw%27&`Ig+A4#ebgI>MjIlf5itW1w<4yoPp*E8foQcM5*m>-5bV_y
zNBUxWX?q$`<Fp~7;-ki8AUrmNE~Tc#K$KY#_pl2@TH`Yiej9>$MpPMyY8xV|5kUhH
zvLfzvX+)iYsJ9`a8WA-RF)O0dqY+I8qQ#21FQgF(1Cg{Ms=^x4W+2+Fi1a1>V;KrD
zJSX>AF6A=(D`s1~49jsLAI~O1I@&9v+p}6uNBcPosCb~$Mdz;Q=5##UPM!~(`FU$t
zZ*p`ezI=J0GoOZdoKE)|&X8FdV02FI8hnGE2cu$*hkXAD@G5q@78Z^*Ugg%Yri@%K
zGQvmx>~8o<MIf@D<e=HyPoCM`uDm{XO%-^P|6d0*fT>AdQAJ4(s_#fH0-q18bmnKS
zp@mmF3mj`g<UuTye+^>Tb2UfJt!T2oDg>U3jgo&N$Al3wj%ib5F=rqStqH!Pj)K>4
z1}1W0t;)M&O_HKlJM-OZQdY3xyIuLF(}-f))+9hEaIGzU%bK*j5Y$xS%7m7CtnwnS
zmV3!J5)q9oMiqw)a60qWRzYKKW_%2_7>Jor4q97lb+aR=-GpsM&r+O?IIGLo#;nS&
zt=gyw)D&w0JK?$|Kui&2_0V#*Gvgbzyv>I9X?Y6tvW%Y^J-I-4l69;%7qCPO);X0y
z2R^Cg9#AtLudZF|%wJy6uJt~f{&Ov_05t`SKMjwcoZNK*5R*TrOUtW4&G<4c4}qHT
z<CUCVDRJg5FRap_s0~!B<&B_br)hcIhTpC6EjE0;mM1~YL42j;*XOQl!!PCnnv^0}
zwWi6S8$Nz;oil$_VXM}AK+SqJHRt4pOCUG<YuETPiZx~TngN8*icnu8j=YAeAUApJ
z?$wq7E51PIJ6vnS2PrfNBeBS@?YIhNf14<#^g*rX)SC4lQ&Q>cv_5Xr|3I$m*?&~)
zITI%P9)roJ^i5iyvgz@)yGoxB{c}#69v=x&`Zlfi*z`@5U_HML!u{~MGMoPIk-@Ak
z)M~#~efbFTD!o_ht8MyPe2p~QS7?36s?TYmu+j&#zTT?89B;fTeXZ8VZ2E601^se&
zSnFG?`kZuJ3CK+y$la*%Z8rQ9TAs4u<04<r#MC@Jol5@m-1Yp6xqzfn<gVw$nGIx|
z=C1cZZpOE3JO^yXhwyFRNMLW5)>qi{hbgJ_C0ZY_>D$RQgzbG=&xthoca0#Q(pPDH
z*rpHSuN$#_Q0p6Q`rY_zN35^Y`nXNsMhT^lYJIC!pF1!zl+By8I%QM)$qW7R-U-n^
z@3iSxYPk#4l+NC5TJ8ZgRW~=L<t3mdd><C0`#)a>V#cRuwC8<Lm<<ZSvw<JPWRT~g
zI9I5TSL>^7dVDDwSEx^g)`x8RpqAHxn#&7lc|EAPyd7E|1vTSqwVW$##wV2guH5IF
zYzAR%zyOoM6<xHv)rN1>@)RX80_m*R>6+N5MT8q%pk^mr8)R!kA&5E3HZAvpn(?jp
z>xszHRZgw1u<Cma)^b0n$=_8aS{?v3`Rk=u^9|KDybnCb#o03B4=DNdxf??G#auv@
zQsiz3gPINSNdyEuDt!;Nq0y?pa-g=0ftvl*X?dIi7$(y<wAl1ft>^5U%Da;NbKpr3
zv%e-SPl1~7`8_C5if(yTLi8`Vtoq*gT%gjoX}#B~cjIL|*7tR4z2BxkKq=^#_bt)-
zYOB6zzLp0;P4V`v(DFJPzFy12Hhe(K8$nI=D>|;^%X43d;TLlOA*INDAr5LbXw&i*
zP%}QN<+g+u`m{U=YR2n?zmS4Fb2R?bN2ETp@jF`Rg?13LK|<sa7pN(qY`g|Jf-|TC
zi+HX2{3>l%25R!xkNu#Wh#$n{uMcO4<!oohmuPtq)QnFm`DM8gEZM*4cIEQiNSzgt
z?NNx_NIj_8W3`rZi6)N*zR8AXzZ_Z1CGf3`=K-Tr*^eEwK^usr01DiQl=Wjr(38`y
z*YZM8bHMC}@g*P@e_CD!YQlTiFXJmfF2>WnBeCc9urmf#cM8g-TFA{#*%{;OE`hJN
z;n^?a8#~3*9XC01CwkZ!gIYQT<x(r;<{;P^<5PBgqzsAmup6lBxsP33@!Wb3<Yss5
zhVfpI&hS3SP57(XFXR0n7vt$)Wk~GR?2JLdPC>c#A;`^6*%{-*AQwB$t&c)(#<O3>
z$3QN|)8B4(=1#ksoiQlUDJZu-3Ax!RJ7atb#N;%6K~j%zvbz<x3NO;~8*!`fqLW;F
z<Zc+{bd9>2%Yf~Rp3ZGwEP>oymJdARy%fT5psu&z+|H-$(id4{LiT4MBmE$qMD=17
z#XrPV#ft&u315mTVMXAve}Atw4qd_+pYgoK$zMXCqBx(9V&aQY7?`67fafS;Ae}|g
z1i1-+brd|~@vU;GpX0?AiE7no)N}JqxPo~x2|#C_@L}OGY=Li27>)a={~GPQ*3lo|
z+=0})(@n9l5XPqB`n$*nJ<Tk`h0MkhDXZpIr_0?x1tbF5=mW77M^RX0_h&il{p82+
zq0_fIOEL%0g<G8k9i`O*VlFL6UWBMit5c;7+8DNi(hrd~Mj^Kr9A@J^H*=`?+Aoyq
z*x00;lx~dMoP@x0bO{iP6D@D$F3I0rAa2@}n~58_(x!k1#035llTO^c<h0_i_AxLg
z_a%HW0EhQdp=9*nSoEm@Nv-sPcIK>1bx6whp{Z4ayi_6P<w|l38vmuhC2aATWsE7u
zOF><5tynhroVmk%u;HM>m$0pe+*IkSqmkR3L)4%e^b#k)q#GCn&%WXymO4=2HuQ=C
zEN4AF?|^s)z0?ZUY#-J7Hc+d5ob3mOv>qop*y9tn7toiBHo5F@fo-CpXhp{+Ph=7*
zze)Gs%5j)j2BtK`cL~!9$W4)@2i_(>`=W#Jp;9nxQ@{$m#seNzRIk!ms-Wf6Zw$v2
zk_>FBgV<EgHGU1_tXs?}cze2gZ)()dce~Sd^)<EHB5t?Pa{59QC@H6|<2mxNxUAfC
zQIfR*r^Xc0fG`EdJBK)~!TrQ|XMVTzWbra>8H<UenH`>S;9~n_eB_w#gU_>M%oL|H
z^JTgKh~s4+B^<blF1`Z_by@wgpOWKYeBT|;p0vP+uKRMZ^YCBB7r2b&jI*s2Qzylo
zWeH!FqnLmAxES0r^RRlkQQa6*c{y&rdxxY}FXIF1Q{bltLOM6z*=<<DTFqi^aWtHI
z!_ks?Eyo1PwL8rYX5xmLx=zpmI5s<_KW?U;<D3O~n>{eGxS+rU)b>I-g7s41bGV7H
zv09ln`+zp(`&zIZ$Y$;e7B5;}B_7VRhXtQwy4zeW{h_!5^T@Sc4GUeuypF=?Nsi57
z@}oH&oAKA66p!qIr-N`pn{Q{gm_=D~mL(kOpv`gkG=~}h&!KWIEurG?0AsxNYu9>A
zr0|rtnY*0HzF#{9??hr|jdx}_Hp`%<hC8voTpJV1Ev}0^C*YZK79+qd9)65KT_>hf
zxrOU)@_%hgd-2)5Xn6%YaBT4_KXcfRI1WfcBarkj@n|p)G)pD5JR}b_w$v#v=R2aQ
z2f!3fNtHHeyo95edb~oFccI_9qZ*7Qny1PwE#S@0>a@NU)Dji`J~2`{b_!Cu1<$qc
zyoJufBkjSUcWgn%CqrE@2?I}czo^sZxJevG3+;}z+@n0;n*(G#O>&mdf=SM9w6nuy
zh0SHVHm$mZOMI^o#wI>--m?PZI2xqDB&@zzq$&{n$h*_sFUoZ`<>0z9?YG|Um%?{r
zjp8|onqi)O9Y=(Y8pYEZc8x0r5c=+JXU`6uo*|1TqtUOc)dp>L*IJ&E*<cmGH2E%M
zc58+_<J#(?)Dd*5t%Y1EY_ujL(?8zHh!VAS<WF(pqn{I<SyVnn8)t5%DHBoityMDF
zHL#*@1>4~3sL|gYTZ78>G%M8Ov8@=!>^{ry?Aiai7Kv(WwDV}UHmYb*%vkgd$JQo!
zWESzm8<NzGzpx82Q!@)xKiQg;PQA5FYVn;P&D?Vmf-at#4q+R1hj$^iZH3})6>F6B
zHas@t=X~4BB>HVWwE}OeAP+wV+*T!hdRqYDn%Z+v2s~P8TM)$Br+w29p7;()ez(=B
zPUF}X)@9Wzo*Je}rJRm!dYL>8iTirL_8qtTj{MYcosjg8{Hak9d^0gO<~EfE(3A|Q
zIgC(K;&ygxs>AhB7Ubk^cY#>z5H<?h?okD0Zl?=87@OG}&*Tsc<wiZvf*+5d{kK<0
zEw}s0cMm$Q&fN9@yqina6Ww-O=KA!(A9}_Hf3U9ob{;|2sAAAd|J+_r!Kq-*-h;ND
z>Brc~zZYXCz20w+tHz{q2x-V;9Go68HITRm^C0AkUo>JUdao`bZ+p8n?%vp#-s>EK
z53XOh*I8g}Eq2htsYt`fN|ZGDKCIPVtJz?7gR*w`KrGeKa&)xEP-Z0UfG)sa>5l44
zz&UHCZ1!dxyRRkReTZY$G%V^n!ggcw--j~PGyNU-BELt`Pj)nl#nbm;RNlaD*-hMT
zspZ&E&1R#7GP<r6Vp9}1L^aHoP~49Bs+{@LZfFtxD^5^T64G}~uM|RV_Q!q@&MPHW
ze7b#K@v6R^`3imUQ%n-C_+$<2`ZG+2L%0mKt-6G5K-uQKQVqSSOngsS;AcpZ8Y-{U
zT9re}z_Zgj5K{%Z;pw<C3ZRd@g6&BaI(}55Ige;4=UyD>Uum*iX>V~*a|j_VN4D9K
z^x4u^TCK1l^%~X&Y6(WmaktOo_uzB{u(=A6HDsuehBa_*Oa%^U5sQYx&OJ3yze@C{
zh7y|@I@{0FscI;*DciNr3cF8=veA%AY@r*fY(|aRD4+r@ZK$^DhjIkSe?u)uCsl61
z`yG{VK5_=C+?N}pA*?(NYN)q);*!}DmuT@s;Tbx-yoM&L(U4Yr6Q8c|u!a_^a%dfR
z_Sgzy@u=l=fk$TXFO1em>CoB%Ftx@|E)|Y;IzcRsDD(@QX0GyUJ*`9Upo71_+;<Yq
zOK0KQnEQ76WP!||$>q(&is=_YIRx25I7ludAX|W)IA(u}fxWYqf@e^}2DTb=90}Z6
zN3H;Cu=(bda3{WGhY?+883=se&UV%`srt}J)=Zv`=G}RTRP4kW#arSCBh|&g&J?BI
zfuxxwJoNCDjGs(*77S{1*^?lFHx`1Lk~X-OJON~5;pf;yHkOc=r>RD-+JaODI8^Mc
zavOa%D_YJ*YL#yEOLH_<Sux%ec%-Va8pPThNhC%&b~n~qjRrSrqfms8aQVMP1pK}c
zmGf`QrXsP8QSv^*LE`L(<D$DUb_o|ctqrj3KdeIgO@La0(Q;e^p}@SxBzSXr8YA~3
zjvOSx(U?+)O~<PlYVmZu>XblUb;%O{DsA}%k^%!9Umw6yR$}!vi~~hNUM&OZB!*Xg
zG6>JJgURDi;;V86QT#yKV*r+>=t{XU*<%o-GmmIoKFF?O2V-WVFXP2C?u@Tu2Ni_k
ztl^pSZuacgo|`V=89Rh|a8N!Qp3nW1V@+t+dOP`Qn>uj4nxe!5$jZ*ySSCyB#p^C-
z=U#VVL(N{hJ_xUB8rtO%ue-2f&4HV_4`Pe04sN?-(HgXiTh<(Tn=YfuUIzZII()Ca
z5y9?~V|3{*PMpbjc$qd1*^RXv-^0v%^j#R#eE+bkUWRVv9Q3i_0S$^>!njFB??HfR
z%v`iai&&pk)?sa(yo7a|I=oZ)Tv)5IzpI_14>=32V>@#l;w;F?RUd=1bPD{rb|gR@
z_+L{OWptXI?Rn_pZP)OWcH#rIIMMP73J$<M&&X;x;C)fvYn*RW7`;OjsK#B=2z;S+
zH7*F!dym&3=Ub6xwp8_aEi60j^DI%pM6IqyuxqZ-B@+8ulXUaShu{F+-066&MWu$G
zeuyufASrr{yG3Uep>?y-ug)q{9_70;WN75i<FlIwv*K<SZzuBcHIC{Qtb86yQNwe$
zobqZ|pbpr(x%-%MFd_~ff$!!%+DYNN@s1|Or(<`O%)7e-lzbS`WIc?q&ppV|)ate2
zVRWz?OSC)gDxJBjmqbPYR@19vx10v4xkG{jA@|(famm?v*6=)@w>tr^rr@!m^UOy>
zsY!mf9@V?sWM!DItBj<~nu{&Y>rQ(}`1WZSFL=b+Ew|9>_{I?am_2kqLWjEr4u|p|
zN$2o&TMlpJhC>ctzeEmS$NeIY>l*ej^C)umx@>}|fhB9Jv7WwOYmZL*L|=S_^SuE1
z=KDp*>tSh$*Xxz0C<>q{C&So|gK4A`3^QXgJG~xPt5swHb_h3yGz152hO|lpHbd8c
zWR=$O=<1{aUvF0{fci6IxDRpcamw{(<wDeiH-340Jg_tcbX5$0v!3%j55e#8QfvX6
z`PB8)S+?SSIc$&LYBiFZ8r9en0O=%-J@k)xNK1K;6Zj}vsa6i$H7roqy?ba1I;vw2
z-m~K?+Xhz5e3%1_!lfy|k$6QU2w!{0VkGT}sq9kMM;Xqq{_bg!)*HzZb#&O%YISgv
z4?M@p{lF3{{%Adl=5QQ)kT_oGn%Rw-0ruiAzC4O@zkAf#(=jZAoQrTvqz>MD)k!>W
zuNVGIfeyvX#f#YABk;G^N4`a9Jij=3YZ3Z~y4cx^`zvfd=<FhAiP{xV{$doFGl`8t
z<YFUi{BVs|x;Jbs;HDPvsL0+Zh@~Q0E_d0Ey_n6g7az7a4!J47t700*eoXS4IAQFU
z_AWq^>`kKa3+SdL2zl8ew4LmhY0eUy+{;3OjX6OrF;I93s-^CjV};V%&9IPNTC4<c
zQ;|28X*XW(_l{T@`5$KLi@XXa#Y<tQW{nu$W5a%uDp|tqjR7;1d&8=wm|Rtth@opS
z<X{>?XZg1=K_oOL^O+-t9Upcpju?*IeAg6<QJ@B1Ce&b0QP!qo;j~z)q~!^jV`Hsy
zy%NJ7n)etDH7Ew18^xp~gwrhH?v%HWO-=PJYme|917|01pUbKnT1H-0a)sUdJXU4;
zk;FbsbG+}`hfM8aivGp7wQ#Fbwa+gTVe@0?SbTt>^J!h?KDvN@Ma8uMt1+@KWG&|A
zM)2qY`?$+lazOrC6vI=8V_#ItT*Yp3US&y4=B9&?^dA+}J}!~ReF>F6_deVB91+!a
zczK_<<NLThOu4(cN$Yh#EdQ0$RXR!syx$3>C13&Xw<UQLzS{j)sK}8e2z$Rrg`Ky*
z#9GoQymSeW@z8m{&!%sRJPsdf_qbmUEj03RRQ;AhU1~LGXVC;z)$y&JTb5#k?GH&!
z_t#ndr)#=DtfzeVzWSC5?Yr?3zG*0T<>FtXQKWWpnLhTnSiRrErJ;@YCqX(3vQ4JI
zgYeYfQ?J48pr*!1_s2IfR9`51!)euf%Eays>h~C;%6~%lxY9Q~R^Tm78psBnMDqsD
zGMJF_-l(wJdC-tgU^i$4QYD@8G?$d~1g5KMxzFqR8)u1oG<O5k`Hir>6bk%?`!$yA
zyf>myn(FAmmk>bNQAA7?;eLZdHsfl+vvcf(Fn}Fz=-v4F-yngbtF^KXw6pr*j_5a-
z>)T~gIgmkN?w_lcp&C3B;A@lD{R$a8xD3Pj<gXCsfr~PQKL^g;aXBh2SHD!g9Oh$y
zb{vq$1C9e&Z{XN*Kp$8R1QCy^61VCM9jNO(&I94da)gl;!fK!v?gRA2<LJW&<nZh`
z5Thgph2wxeEYArcg2}(e1Hc1`OL%OxM&QBA3L(@(oy`xl$&vVg4EA9M+O6PQW8jhV
zH=Q7zr1ed@@N0xy`6QxH4&U_1db{dL<Z;0hm=+I0XWSmYN$Z{f{w!-Zvo?PPe*2Ms
zE5~p64%vk(oCU_&<IS)%Q^N|bC7-b0j8Yi=kxsLO=ho6UIYd*2$LOB$X8aN%w@3@U
znNZ!#@n$Qf;L-7BQf7fUzvZ%)A){|{GCHaBL5R&IdTJ^DThwa#RBV|Jx+DST*$oGX
zzk&S8GQ0_K(0d7QbOCCrT<I)vjA^6LN}R#Qx+u2NbOt*ZRIN^DS7I3+`xGvCLe>zj
zt031?@WML0+LU+_DJp-eBZ7V*?D-FJrY!ZL=u-f4`W*-3YGlx9wh~Dq0++eA?lYz>
zvI;i3W?v}37v+fp3iBlVzU3s>(};{#nV#ppRj7oy9&0Ve;yX9lFsIJh?K)1EsaeNz
z9O#K}`9Q3d@H`EhGpaDZRHE`}R6-;HHTUPe#l6Dhjx)_>TolbhpL4%;i4pl0k4S7F
z;WB${6})f|QK?ix9X2$Ekke}^LW7$kbx6PjU}?y2F|)kIRk2nfT8Gw7zsT}dn`}DX
zO34=EbRCLLE1NRpxZCv^2-CB2lS|g1rb257J`M@-HkH^*)N*{;|7y&NW$HLI2QFol
zHC0d)a-wGtvl?YhTys<9ZgXl6oL5U-v^=Oh(|7FQ%xX-TArV}=8Ul4a*A$keq;fTi
z-NO*s@Hm<<*Kz4jGn7X?ZC;I8g5wy})MAUHLYH@OPF=s_Zoz)B&){0(W{U~V4SWOq
zHWJC3;kVI2vHho--(kOfTa&nZ+XHH;7DeGM`&yUQdm}#BoQ93uiM*{hh+UtBM7>Az
zwqN-j_qHu_<Jbe*<ZWB#(w`xGI|#KY)8p_rz@IhE1#jb%n0zlC;gZyx_;$T~@bqo;
zO0G#WH2uc~bTM2bOHH&qt}e5wc#YvEq21^ca3wUO#?@<h>Jo0+AvZ<ar$q3FGGrHj
z$SEHYJydALrSIhr>HES%Ub(A1q#j38`C3G!I^H3_)o@%w7Z3pLq+W-xAHhb(aR?m{
zFE%+2)pAQY4uxd4KU60T*WsTlXsW>NKJaLsLyaJv`H#uAZR9#csLry7@WLlbq&X~6
z$EZUIU3RNzBI_`>-(E-Yb%+Fy&|23yXE}AE-l3zvLtn29JFml6>xaVVpgyV(JIga~
zr!T-6YvDU}lw1d7!E;VuQI!PwP7Kr({FoR8pK}hSv1{=*K*MubEI#=VYtlOjiozBB
z`8nscv}_G-*ABCNC$&3FTh?H$I_$Fgy{d)rIk|^v9S1vSJ%&mj9m8R-6+5<y!t0Ta
z&A-D^beM*&#qQ-WzSJ9U>{2rfX)*$E91cidJ<pQOYjG4i9D<+DLaL+a8k`aihppup
zF=0o5p;>yE8_bl8K6T(ZW?PPYwOZb!>=5D<q}6e_MZJd!b}TYL2cJh=+yRFjZnOHm
zL)ZIVcGF3`@2V71`39%Uaa9WiH|SjCy<1{+)CU!VGJ7l+fI#0ZQvuOwSklaONYc9%
zDkkds0$Os)8nooQSk5BOf??HGS9i2(7a`EjVv-zE<OK;T{(=!yqtz3FO0jamb6mcp
zh>9adM3N<{WC=GUt>WMIM6inf<2h%+xOdyF5#;O29f8=~I^{azBiz$05tEBhK0iZp
z94VnBx{~9FS9O-sBV{%xDfXI^d!)kdM9ckZQo+~2f3Y4-d_?x-!;S=@HuaPVB^q95
zb(76KhuzcI=TWsI%$h<q)N#no?$`~RB|uDg4E#Vnr?!c!mXy`!2sYs81dbzE>+99x
z#EVkVQFdYS>26{{PVP|}x&bvg>XNDYXd#7rW0E`Sk!!v4^=OPS8{q$_SEiog7rA+G
zz;PUvOU6nTsQZPZvOv))NcvCEbv;^*ax6jXf`jUXB09_F>L&1LokV^#tY*~wjZiG(
zRy!J1!8ndKY5=Z0d44QsgoF~8$@nO?;;3!jQO=aPws`cq5f<v?e>ADxwW&@p>}bjg
zuBea*<4ih<JWgL+(XGH8cR_6`qoRuOIk|CcMS0OYjp*DJNiFn(ntWx)A}?VIx|4md
zjo+rmwiEiR?_@L92W|S8meWzf>>97Pso5Qy(LbPe$GNRdg{L3H#N+DQBi!*8=uI`b
zGXS2=6KbW4r<d<dNcY-$>^I{n=uHl@V-(xO;U>iJy+W%#UEq841-c~VzYIr1KEQ1L
z9`$??0lrrTyg2}m_T%FK^4{YHF{=X<d>I*5yQ251<i`BHfci=dYJl_XJL|NAAjMzC
z1F~A11CAdRe2-z~dUzt6(JB+GwYt%+rU3NIC#Jo(*!9}371R{(ME1kQwSicQ)ADvu
zGoJkdf6N7PF`k~<;>^vS$j%t#m2a&$xdo@<yV!z-G<Kx3p!8S(oXPQBUaby-njELw
z=UA;;8L2#q9Hy7UV>mMN#<vDS`q77l^;p#A)&rhPZIq`E$C~sAV2i$+u*p7_0HCu1
z?U`zgY{klZSK1-h(HuWmRZz+%_uy}RAVgkX?|+{$W}_Gja&q5yfpikX`-N8g#9EE_
zSmo)U-Y=20<9)A9&p~lHK9J7JsZbrY=zTx*rufo%exKH%t2*AVmL$GktBVO);gdYz
zxtK6WXT{XZcJ+O{rFIhQ!29~j{QVfEFqml7Hf|KYMtGl=Z^qzzKXD01t=f@ZSl(}w
z2fq2+;XoY|-ftJg@eFm^D`&-#U6`<s<0<|?JR7cIiJG8~dnot{hW^g&INwf+NfnNl
zbzbsuxjLk-JJ=j60FB(iPYbTbe&u*|gx_|V!>Tdc)hUp_F~)H`tR71?vwYbr*gUL@
z;)3Ehmt;v2rFOtvJ?T3hmlMKqY-W{<q;g&Pigry;zk=i9j}0iqDd*;ctWvrAfR=AX
zV|{>I{hg@RUd2=h^H>8eCMK6i9Y3g6Li-Ffxk9V!tN~(O*y+q4HMv@=8?EZ}K>dL0
zW$Htdt2DkzeN&L*gY*evrw(}H2i(eL3oaPl=z}DPB|}=?25Q2mXVec;>QOi~??j8t
z!i&v$%}yH<PexIP?8)`wsku-l=w?skOQgQI5h3x+jlX_#bUQXE%{25lx?!`==0*qD
zTtUez(3e)hE<61_K+RS1G^M#(j;?3fse0+E8B-V<Gq0J=P4VNqjePuQ>g21=ZY3O<
zNjEtT9=T|41Tp0zo3^})t?`s}B%DH%I^7t}t&p4CT}>BYMhhA+5}I)<#9Nh-yAU9k
zeO<d1JcY|d*&jMVEY2y6=R|xX?sR-uNPz}0&Fn?3dLPOpH0VRG&0U*z=ex+A=QX?m
zm%iTrkY+WY|9)5{+rAI=;i>X9oY4Iq?W5N2L(4;;ruuH@yl@rj$oCo=v|a|wS@=?e
zrSwCtqshQur48bsmO5*Bi_9w@Cd6S<y+=n4yWvoM80Ylv^mNc7Bh%61l8t!_O({dY
zTJ#*<VoQ&|UP@^3bzX7{=4fuN$m=LdJqT>!SWU5y!WRO(4uqQ3TB_y3>3kZF_jxWf
za`_?IJ{RxNIT+Luw)&as0gt4$L_sV$pwJ$S9)Gpg>)U~Y>`66!3wCY1zdQ@csHq_h
zYqh)4@+7D!e8X*<RJ43A+~#0WN90p>q1V<x;JDUBb$ju&Tn*EYXfG>H@5PnF)TT(x
zbaV8PPoA5OjOoe1@e!U{VEDN|;_yx7PHmBRJ_<_kaN}}ME7Za|P-_n2C`LxmNA>D7
za2^KPQ@J^jw2v^w908zsAH4WuTG#|?DU$sA@VfalTD}kSOM0|^l(fR8)lzI9eEm2N
z1MQ=fez*_Eaws|Bl#el-(7XEb{m=|~9lM|t9E>Gu@Cfb%p77#2(0#%O))Y@V^(Ul{
zIZpUh#ZJSaaSM1NpgucsqFQBX+=-yoMfz(2PlO=vtY}W8smQ5e3cT_E6ZR$WO;y?d
zFRxo(MMz^QC2V1}6b1q+lhOhyA_j1&4q|l>Qa~(@j%CJSg0v)sibWl#49YD6CAjdb
zGtNvI73&BZ9ha)0Wwpu{_OJ(JDFV&^d+xm{?*;t)`Fz67JLlZ9-E+@fUkcj>Al<58
zSBnMW*8y=>|8*_T%cif{%73AKzjz0RQB(u)9Rbb*kop@tIFeC~qTTwu3y=TCBY|O*
z1~pj0yRmlrx|y4|02NY)`bC9ra3y0cP5>-;)Tvp3<pb)a#)9M<yNqzuWi9{4g5w+K
zHIgjvkzsW(>>J@wHu^o;XlxdJ<8RJ<Bjar~AU(#*c>Cs>c$4Z?(XAQlH`Q_K6)%C(
z;wIQPwcM&9YjutGO+9b4Z$!T|eZ!tYyk&pW6tA)r5;Af}8wJ-QT*hZfe8h+!?`09-
z#k6Asi-LE@4dg(B<3-&KY~X*8eKy!x<Sgby8?smxt&<kK4|mYCC3^$;QRn&bBn-{F
z!HvSekcHky&E4-~@>3{UBcmRN*$+r9H<ZLzkc?QjcSr+2*MQAJ9aggfjkKXka9K@|
zm)=2}Zm5lC!5Zr!lTR%-)HBC_@R0lg$ob1L8yfhn4Ru4KxSKzOFnlzaPT%;wl?@R-
z30wj|>Rk?@(MIeW<KhMTf~ffVe`BU_&qfhugEx{*I;T8PDQl9m3{H`7xidfEzu-6k
zrl=bW#G6AK3&qWn1%%;uVmD&?N7p_!dikA4b)%nacnAbnHLMaEW_*Y&+U}2-<ZeWM
zqXyhq$DKBKW4%$s37JxphF{RIQOp-+agHwH7!o7Z>JK3}_DiW7aehIqyd6N1Y`;~+
zbR~HmAbg_xEgSJZvgfz<>r47Ji%U|!b?|;Mo$9sy2tngwk&#+^_R2cggeWqbz7;c$
zZ{>{RTMsvF(6_~4taJW@c%+E@){Ejg&Ig-%1lYHgV*Ki}9s>DwuWvE!AWwf=%dfsI
z;0WBJQNOL{d5*0Gq;*mIEj&cQc8JJmV_E$+#9JogBLF605d($q9ffW`ngC>h`kf+H
zX5U$4C<D{u!9t<$cN9d|(f2#ynB<RJxwu5_A%OHKG|Sq=<$AR}@&#fLr`}B>;F|BS
za~6bVUlLDR6q&wbEAbnhD5C#`Z@xo<Cr^A=$H!teAqYBtKkd5)0a<Vrg18`F?+0nA
zLk$-Z-Z~US!`(X)%p2LM4?&Uf3Aph7Hk!Win<|ZV@%}<%mKY=(oy`9!6mf}J`D!Ah
zC>q>Y0L^u+T<8?0G*atd$L_`w(Y!-G1&0BjLM=bHiA^T}pXfJMOV<#Dwk6cYS~*K5
z2%pn5vX$$h`gsCy)%*NUTBSBN@zIb?_#bdQ<uqdB6nlqk0YUgVOk=YM?oA30?zKRu
zx42ou|L7ti&F(kZ31Qtt4WqLTHy$mYffLVLn=l=4;$ie>V9RHXn=oEY0Av<H_<hw)
z;;si<O^}zqCC<fSk8)FqIJw>A6*(gLb5QUswn-+`Aq43f#Drv1-SwTh2_1k>YKfA+
z&9tdOM98Kl-dE0FWf~R@x(V|jEXrb+TQ-ZcH#Xr5aNw@lj1@jiXA20zm*{Kpt#y62
z*}+Asn_)bK;%2v)4`+M{a&F*eY4T`-P=8Z57t1;&e1)lQ_KGH7O%&YZ&3t@j+phv}
zypQ*1SaJhMcvNhz6O)|H7(b{nhY*HuPH%1yUY|}7-VU3agi=cYNqtE6<IQ1K_cUoN
z*178DW}(G-s>Ze0VquQ25mh&Tg)T!;rEbX*C+HKt0?pjr$Q@hwnwBm2Dwff=h?mc|
zh?mdT65+S6Q&o`$QQ>3w+q%UY--OKaHD*S!CDxWo8BAY;0qvk#w^SQr53gyKpa$=D
zBe&EVkrSnnTk7M*;2D`^OAv)Fkio2xn9(}Gx~0*G#BYOq1KjX0$qYn1tx1M_gX!T!
zQi-@VqcC)C=0S~CW42;8_;<K^D;zqE%1q|KnV!1U&Y5Lzjq6qun*`sj&TIHaz}FUY
z(pER{Ix9M3J81*fzTI82J{$NY+Hb-J_>hlrTiIj)25<Go^Of{|lsbN`aw?hQCA<}|
zm3@rr>egzhen9x*5cu03DU>|wQ5t<=*{JsgdgNc>z|k9_)NZ6qbt@7S_l9uol&xW-
z7LQa*&du?h1$-M7*U@^L*$9ta1KDQbnZ~v)(}<7V2-#*AU3nY2HnNv(o6|@)k@Q2W
zZ-ckTq7}Cla5oIzR%oPqq)E~hqcnI#!b{}sT=E3pP2A?EolLq_O*dw(+p3HVdwW<T
zT*>~0!$aG)fDswnT-{bDlFPPwp10I(L9wYl<l9y$jY3Kje?`Z(Eo5ZW+k<B^FU(vx
zJXW_g^VInT)u$jDyFJdYliZ@hc00=J*ttCm@aweCc83_(CVU6Zb9>^wn(ZzlB@Fg|
zCwrc4dw~%-iQEl6w~JYO_I6JkzFFc+P#V-?A!16ljNI-wR_fr8m8y-EQb{-o3!u>1
z(gB-ojo8MVOhO1>kHR2K!h<Mv^(I$JI1YvBH)LitO7EJsv&kE=aNHgNfsRos`>xU4
zVQdF!^!MI4ehq@(_f>J#q~70?J$m^_{+rDiJv_y--Y@9=eNbG-_`X4O^^7f88hJ<v
zjQu`@LZ@SF<KcVeLlm>opcM=9@0&#|HYt2#-P&YEMV&Uiara^ia)e7-(ImDYvYYHi
zI!_SK5ZvTIVGzt3QD5`aN<4e&J1CI6RXR1hiQJ$QSY(leWWJG+XDecZ58O>&=FdRe
zEV;_2GLDT)vLWy4*x-~f0ye2d)Jmjpkh!+uaIO(gdM&6Lp+hKi)p6SG-$wmBg2AXM
z0;H}IMyfiF+>F%u1D~&1e=r+qCf2eL(ahyEnPR1rv7MS@0$Bc#6-SPqzMZVzL@b>w
z5W&MNBBwqw_y@O<yeNogsQp7B3WM4b?qMZ}Ew-IF(CpOuLkTcC8$7j3zDHs$A_m0B
zZ$uYiY6HAfzlvs_rXSeK&1ll;--9RL9Q>hHL?k#_hE8!xP7Nq^DrJ(#NkW|GrvxM%
zivk+W`!r#RG9@U0Kaw|fOk!dEqeaXv7l2qyve(i#K1=-3A#(X4g3uMc>>pj=Vz60q
zkM}0h*AGx(z*ac_$3i~zn0{pUZpA?RV~Loz&H91l&=T)Qx!t;&Amm&2(GTV<_R{x+
zt7YP?>mPxmmdpOJ-l)Trkko<PVX%-nenh-_{1P7$W5|zUp#XJOB7E6&FisuVENFHp
zVwBur5te^JQu*b?9ek~z?#L3UV~1E5o~O!FWP9vzi7OF(cAyepuS}qCe5tj=!{?=J
z0YUgS-45|i$XWt$FYJ(BI0Q&)Z--Q<N({$40&)hv6Xe`6J1`_-AZMcq^3jhtnh2tb
zu5G5)N)}BhjeZI2gkPo-J;G>5SVX|~otW+Zbr-y!vdi4AHSO$V-Rx+!ofcL?1I&<J
z5XTo>JF!iLAXax~iCO$~!tlPe(+S2pO{UceNjoV@44O!If%G;wq)uy)Kn#<+&_3eL
zncd)hau;7nh5*H6g0CDV?1s+#_jwi&1t#wr-k+zrZ1zqPs#D_8EXkMn>y${vbafB<
z?V|ySj~MaDTO}M%VF!2ZqC&?PugM00PaQ}`6JBmFY~O?4_oy^x7d59&Xsq|`LSCY*
zG9(1;YxY2U-0-5Ib2<U|zV9w<O2N(6T^_K|$$b=eu|lZIUw7MuJq3Cl=?kjHXI;De
zB9oj4q{nnK>XL2&6xUOuR#cy`m!u+_cHBkQ>ZHXcV!PPnooJM`M9BADb~W)Ojk+tu
z)nteEqUVz0EMp%g(6Q6_-C$?n=VvZDPUPKW);@Dz(Tb~4r*##&+bKHZZa1IoS$7v0
zdE_@N*$)=Hf9;n2Ysh{m#+PQhOK1(8q3*^30libXoB!mOx?3zlQB$n-)ZGE$s4oEN
zG2KggwoThj=3mEAyMtnVx*IcxrNp$64n@`7O_a{n-8gFBhv3A>vzHzteBWWh0f=h5
z54mg)AK2Ie4xkqf_lPv3?#X1KLvZW+2WT5-4`H%|?R)T-BCwui83)0H$HN}?l7k?<
z^B^r>okUtF_7-Lxq`pA!JMSqWt*m><7+o8V#39>3@Zwo?Po)w0ST&wu`5r0_mM=L(
zb(UgTyoZh0i&U_uj@vclP^(HolE<bKfYP_Rr%@dFp{mS;U(h%H_U0ZI1rv6@l{kc)
zOFJxm4ufRwVI(q(QMFhMg))us0bW*c7!`R8Euh-`4bPC1YqJ)B)RDvrR)w%<gH;VX
zL{xkmAmpJ1fEp?m*&<Y8<Xud@ql)AvgF9GB7>r)pkJU<ue5G@6tD*tsKSj(%Dl&!G
zp8e(y*&#{>I$p8+f}tiOn;8M-ID(86OA?`o5#J%mJiw>Us0SQ6?iFFR<Otbz40k8K
zJc8JupGh$7<>#sFJWyB3#n9E~Xv|@IU7`!`g_G=1dvC##V>qSo7^TL}?)Mgp$lUAY
zE2y=^hEj%YZ(KyRs#nDv;D>W%%TXN12aIfIkW<KrIuttR#EjpI-LErn_~>Jh!)GOX
z8-#cFHcEAy_&cn7Lwq}ettLWROsab$e9Tn$Hp>AH7+YVrkhjl_QrC7}8kQWVcE#?U
zX`i^&Jmffeh~jylLu~)=LvN%lk9{tYQ}&7dAk>s2-#(9#>*G~Y8im(&tlNj#csHc`
z^T%U5P5UZE9_@2N@+57-*uvje`wJ|@HnF-dDBQ9STM;zdU#nx#?Fcrf_J!jaFw030
z^3=4infK|@Cn1$@=j}K1%(mYm=Gn7=NF7JUpsn`XNfd4aounK@Q@s5S<~Rw+_kfK3
zU4tZZqtqE4i}(G7fa_fUM3$s4Hqz7mSac)S_AH`nzt>o4Bzcr{@e9f96mBLxK@tgA
zjY20m7EJpwi=wMS`|FmR1>-&uSj*?#`;ph7f8Pew(`!aTiC<GZKjx?91Zk%35A)=|
zKf)ZR5$1{*b`F@iDC>btBTHOlv7AO#o`esO<$8Jbc!s<KE))j+SqUnoPOO!9u{pz5
zpGHJKNfM}1@imniNzzN*@O!TZyeu#fftGxR8aNf(5(g@;A$L$mt2vDfGU5apb2`!T
z3EcsbtJCvIH=apk5QRZc3CBSN{9`-Nh-Y2B*w)(tOd9a_&a4MQ@%5SgC#eHYGF&I{
zeZo&ti|m8MT*vLnY67%PJ7_^+(1O(wm$^5<@PpX*f++Q17Eko1gY088w0h9VEQ8^X
zjI-e0auUsW&@D!Sg9UL?B2tRy8Yv|dL_!Mo`Om>+K6DH9V5RtLZri~-wGUMzC97GG
zdRy{22&94Bb}-JV6T^}c9U5Cywu2N5I&))Fu!Hz<v=_i>I&q@(WIfnqq@0LfnmGrG
zkA9D2c95-%kW$UuyupV^h>q*;T?A;GcIX->N_eK|D(5k+qk-0X$O(j=K>_ohhcF5%
z^^lwIE~tkJxV7q`Lf#wL+VjwrU*SJg!qXHxM3AoM`HY@#^=Dil$DBb+9I9fL^Kj;!
z7m!|f%0Cp~^HcQ@4p#ZaM55(~0Eg<ux@a{)C{|5}*q$@Uc8AC(hM-u|j2`q9Sw-fC
z`I19D6cJ<JA&e2Unws7WK74s|SZ;40w(xNdwS|D}!*+1cIp8U3C$K#1Kw*%`A`r<w
zYKD<6o+Az;#x7zXtT2uPW<VEXE<9W;&fXVXgurhpG7o#D6A8i(YYx%3mrlXj!|c>q
zxGLl4R_)@Vs)X8=v?DEz+PQv)OwMl>RVRMxVeFq$RIiRP9DJC<QfF>SwP47j)xc1~
zk@!X+$A&FpB{SqwY+4$&^D$=nC4>?+D_e3&YCR?FiWAZ#nH8Ya35g9MVULl1Cixy#
zhD%WB=wpdL?B!8B;W7mB8EP2A>=@X&fJ2bRtzoiDXD4RMb(cYL&t)`U9d7|!n4GAi
ziRH6!kd;saW?UgZqH|lrjYi5$2XkEk1s(cy42O)!RyM3#Ga7RixU|0I6&C%Ltp>2i
zOmYXzJYqp{9W#$$9YL2ZlUvA6vg$~dQ539lv_KC+nvU?F{ASaM`d?9)Ss=!)BUn)&
za@8Xq5qMt^!Q6`ok0T|#3C|ONOc{K{Z{!~{<w&Iwp6S3dX^z|IctM5riGl<5*D*%|
zM#`BHNlCuGo{d2xeXB&dG9||Rx5tk(iMtvE;63_?xXh^@iSShTN`{u!y-El>YQDa(
zqZVdC5U58pc}jm}mIk}&%<w2SJ&?{{S*=-G55$f-c@BAHJBWD4Jt~G2mTb~2-T%Nl
zOxv`ho?j5f+FeHDPd90O`Ndqe#H3}>&$b3l@E6Un)uUnzQICox>)@lcV5JMkKf3S?
zCm;O<*BwQe-T-D3RA@M<1rczR4ZH%O3kblo=TSBp0P9g|1cUQg9c@eS!R{E+75%l+
zLsW~r!CF);ON%wcG5(vG>anaP30epIggR|Zn2xb~TPU;>Q01N^O=CVh+Kv^*ixCDK
z^KiGb?L^K^KZXsCBn`iVkf^n@J?)fa)OtoOJ&CPa2E@RBj9(~GkJWK?aKU;U!vBjz
zEsdQ@1VcXAJ=P@lKl&u0IsZsrg%^)uUyM$|jx{p}x~_U$;bFrTfT+jQ#e(Q~X1od#
zZWpdT1Y&*+q#k#Ot%Kv()gbR>Bm={*Jso$8sljN1@VVJ>@{6uvyZBj2GU`xNnU1r2
zO<D)_IHnvlu{kc*VXLV!kGkWPA^{)AFiIO?$E%IZo^F;ZlAQ+cElG(v?|3~|7P3aD
zaMF+zFz4g#@kZf<>44b&R4F-K8!bVwYK@2!>^tIep1AOfEGI0?qaipl1+zY8c=S&V
zg4qd2yjl{D85`x}1t4ziawp`Z?L+~HbPk(kk(E3s4K}inIcDSu?m@gjt7&)<pL+EP
zKi7-hNsz8dn9!W4;*HN{Y0#Z|NcM>USn5T&@QiRdQHR1Ps!?kd6{N=MfLpqBpMoW)
zg4^#kbc1#j)I;cT_!UwhEZqx8k6BfM^GPZUoF&{$F@}posnB+k3EG~_6mfi>7`APr
zUGoc;vqG|}^A}jU1j~WRS_kXNIH&%xmiZ}t5aWkDV4(BDpED)n5+mc-fPK;*M^C)r
zwUZQ_2HTjc4P?}4WRAG4Ijaq<;lJB{vR>>xoNSOQdcyGW{G{l?wv!?7)9DpUN+-i&
z1%FapF&uIuv83M*Ii-jN?sS6iWVQs~S_ABqoev^k5cXefHO=H$(he@aa3fsKSB|G#
zGKSltL;RVnhgGKvQ5dZ%XbY>lUM7jfoW*l(!Gd(Rp7O@)%<71mr-D<|$8-ka_u@i?
z<jPcwNoz(sazi_4hZe#P4jbK0%j)5Eq9!Rr9m}AMgrh6d*mkOk>+^r@q&}uo>|Vqw
z+YYX+7w%3q%jJs&X2zTvF@uv%Hw;z|ORVuCnXEAlY#y_KFVEo-F=nzQ;34`_gjCcq
z@YV{|B5srhm05%s^Wi5_C=y=;TfVfh8!6_h*&^h89kV}IN@kco)6{E1TB}&X=qP7r
zNy=)JMzM8itzv6M-abTZ_$%v?df}4{D;(7-twBf|4WKl#DNdSKN()~jEnsbx)-0rL
zw_>20e5014o;Gu7>S+tBLS9i%XY#37@=dyEJ&hZ~9OvM1pq_ThIwD91pLWNo(jZhh
zT^O&5gnPs&HUvU=INDCfIk~G#QhKE%zto_Tw6mSA0$S(kSmd0pmSor|r7g$PwX%90
z?@fbG*Bk3S<CJ0=Q5srE!kfgHcRD2Y<xh(<KHKStk<S>9r03gR>KSa-+>4#^Gv+ul
ztPW@%%@?0%kW{gq&-$dp2|U@H$r3~P83*l=na+s6oO8w{p>AHX1w_v$RcBZ`^aR@(
z^4)cmKZCs)S}~mw2Y~9CO1^=e(H`}AjyY2;39t+%O-5hEV6OmG*(`$a3uR}5*O(G$
z4^wFLww)pO>6#<vjx$Z78P0^HAWVHeCygS)oo6rwf}dD&M$Dw2*eNT9h@b36hI5)(
z6>b;UN-cmR_xx0B#Fsi)K?i6v2|qZi{#3`$sZBpIA702F`BM{Ub?%AXPWdSu$D<C<
z;C+?~9X%b?Wr8>Vk^i$e)+P(iW-cM?S7$=;f7vvxZx$-)JWxtPiJ1$9f!UIdsK@ix
z*#hxu@{o>T(zZP`KkH!u8|Ai+$ZfmRHFL+a{`mTMCcZ41j>+2DDi+Da_#Y4<a<*3Z
z^E`3<J?AL*G5Xj@QF=Z9EcVby#)CG@c*_bUyGXnkR%atUvF23IDPqg<964WSBW8~w
zBI4&H8J#Ghq-rT0&pC`_r6oefIp)iN+|iw&Neh;VwsUSH;W(Eh6uaNEh>)LPpYw=e
zc{M@!#=>@dYdz09=NF^*IdKFxq_eDNI~OntD5YmO?_8~%4S}*pSx^ESP#RiF!W+fg
z5?>Ho;g67b*YP|-xbc0uK%Fva=XtS=v7I-AfzDl}^bG0e5kfToKW`USEkI=+T(<LZ
zo{JrgoX6Cj*Ko_Bf@%!th=4g?C~n<kbOnT*s-7>F+`XK;dLEr0Thq4lRYq-Ec~^7Z
z*7LPS{G9>T*cFY-6Vv&6Att$7tC$Aby;9HPtb`_>LkKa~hV9?;VI!Y$F6N<=2tLO>
z-)uzA4d59rxnMzI@I4DsC3^WP?SdUhogb&MQ{A+I>Z5e+0`WvIo2nNI#Bt^XJM^G~
zThj&h*G}jl7mCGJ!vaF^Wy}Sy_*te4ez7TW0Xg|`WZMg@TW7F4M1<6+>V;bIw#9`y
zR@GhWkQOwmfem*Tz&z&F3kVWC;5U8wX6&r)t<u6$8ZsUhO>8wVJ$&RNnB9Dh*%F?~
zRkAhP@vOJJLE^JSJTyD`7UJ|C(rC5WE!?n#AT^y3AkBrs%4Uz)muyCObjB#(j5P{{
zRI{HOi5uPYs(`Jz+9=U2^Fy;pFzh@r<|i}Fa)jv96A)_L!OcNqU4P8VCcq7ii)XSP
z4M<y~Yl#CtENYI3Y33n<@Z*Jxis&O5y+|%?35=$1{Cwo1*!G*%ids$Iy4qp&MHdfC
z>%{`2O6AIu-Uur`9Us!0SZ+l_Uo7EmlYP-^q;6j?6unr9(qI6qA~w6ZsA^u>bdg07
zjkb$a$3QE21m#XZA8Cl~BDqD^xOWC5Wk`&f7sI^crd@0{(z)5c`ylN2Ve`*s5mkqX
zYfE=@zn|@(Hppj|o3)J8-;*cc^q(<M(k{X1n~|~R)k>gC%#wZ<t6nw>$iedoM>V`C
zbb8KrNq99%qa;TbIhVHDe-;Cg`g0u@XZyK6j!B_p5)@hL=LUW{Y5JKx)f2t;XL0oU
zbBH@l{W;9H=hdGh{6zNWW>M*q!YiqluwKPa&a0O!V$c1OSgop;?2;~PNjCbXLsBD|
z;#z=u$wg3hb6*U#bhE{DiJj^Nz=XaS$oMZ1U-Ag=F6fK3$^2rW@g;JH(d@duFq^{F
zdWj-M=c`AZEJR5DcEu%;Y1K=$OLFiE)E(K7!*7&asu!^_D_hqlml}ld)d1Qmq`NMK
zt`XjtO+Kexyh{;Qf=thn`%y4pN5^^@)OvNsnwg^?$oUTgUB*5--ttl}XNuANa+Z;J
zoSjt>F}<c|z3en1@4@yVA$g*_T);<2^>U$zt@BVIwY-6Zw@tf@gfk81_U;dJY525V
zCJ*YIG`C(-%3=I+l^9bN^oJcE_0zPDwZ;k+L0JKPigIekuORQ)Y6-+8830X}*}t<8
zNmp>aY@pU5-wv!!=CffzeTD2Yw5Ei+Q0nRHm}3C!<!=LDDG;-)=>wo3pUPjsybVWd
zYzZLrTU<e+<+H6T{LhuBS1RQO%GD~>{Kql+3<M9pcXg$f111oF?;u>M7o)(Hpi!6D
zY55iO8C(!!3#bOqjce%}zqWJ*6Kz_sA0miQv6(g6p;d+h5UyH_=r(LLLHNS6#V%+4
zF&b-&!zlaNCKhmj%WwzwfLuo00vgTG;w^<JuH(}dkGPXCWDw+a?T<9wQo<Y#?V6wA
zd5(k<qpEmDtZER1zcdIt5&@A|S|~R3!elVD)GYyLc3}{DH{b7Q34&19qLV$$P6xGo
zOTVR&s4;ru?3VuGFKIQ1LPS^Lxnew%R?R5%5?>VXC^md<)jD)E<56GDFVPm6st02N
z@LZDwlBL(<<rM3ss7u@mjk?7p;aRu9bu=ThMGH|=C#J}bXJ{A2TMzVWgwbL#ly0XQ
zeC`$Xf<RZJk`$#Hl_(54FvqQMOwBFmdDU@s?0BX+c){uxcuLHpt<kzTGVGjyMeA8p
zw2`}pUAPsk@vnhs`6#B)V9+s)iaOb;c03dR2<OipybTpva!^50sBPLOSQRs~{~9g(
z98f(f1DxKf*iq{E$m2Pyl0_j$wH$O!fxckpA_oge#bvA^7ll^E%_6|Fj3MxwkX#s(
zjEEu0cMieAX(6gZQ>)@fVUWxMLnubOX(^Ca#l^C1Lnzn74yzI{(&L9+ehqRVsg5Q@
z?b&U=1~ox&=c65B6nq-E=s}IBtZTxB6a=J1oEuxs$9xLrv(Jek{0@!4684KI)v28t
z5}Zu9I0!U0(D9NH+-0(J<5_PfW$#}@B@-KXi<Z&JYI325jzdhQ$t_)uLqBpkdzPxg
zcFly)ybZRlbqd#NrV_3TJM7fjrMe?h158LsgGwQ|ea=<E_adflvYKk+1+x-rG2w9&
z*1No+@#j6cp$$grREreT$i=Yla}Z%K4b#l*WR8ZPejUu66d`wGRWlTQ_4!IsLp2*Y
z#SB(0ywwt{Y9_Cht=d7TYo+JIl7Tax0gDWU6wKt%FsfVDE-==9K`N|zuBly++iJF2
zBAuNpoNczMej|OVpVbjPk2JN41*hVkj2hR!=~W0K!u?ND3Edlgj<wH|ZIG?jgQ?E6
z7hHHo0IH2B48g!k^1z2eUR9A#J$P817wb}Lgm*Gk#YB$$yqz#75na}V%xf4qhJgYt
zM1K*+G8~cN5ROV9cj|SC;2F9kkOPgn1UU=dBNO;KsQpdWgkod$X&6n33{y3jo`7w~
zJoNRb6aP&Z4)rioOHr)}Y#@S@EdZp4oIP6;YK@#84dIy-!Md@KI#EJBXNE%>N<Hil
zXGfk%z<>jbScee^!mh(%VwjVt2@!#~lMp-;B(i&lf^yafsPd9a(;O5QI_qD|5<(O0
zC=J$2IQuu%-;VmJF9apb$^0$=Q(Q=;e<2vOPQ1o_5{{h)_(x6j2o)2N<H?%ou2`!k
zdU>m|B?KWI`&Oc=PRGAEBrA$KgN`id0xQf8;rc|JHDn;_&bhR-*rk1IB6lIAqm@1)
zpC&e9=}To3UD&5Dh%(Y=LB3|uVoi|9K1M65NeaD)+nycFr$9z$SCcR;+zm+kk*yFc
z7AO`+kA(J<K+`da0?eSMP(O+Jh7nUYu70#<ZxV--x1;R}sg*O-B<Yys+ren~R1zi~
zGlU?#|0Pv2I|bWxf?x&$vy-ZsV<e(Gz|}A%v6YAnYf>;?2Nt;<6=j`97P=h`c=ITP
z31#Q(q!8$JE`Nz!jaE&HpfK3N{G-4JfAR~mld+H*0o9Yuv^0V<labTljKRs7aqJoe
zyJU(s13L+K(4Qh}uUeDYsS)r|vJ0nN#7`u*!O0X{I`#f)mi3B%fnSLndy}!71%<51
z{x}9WSG?ouOv9QSpotPmL?(lyY{_-T3PpB2!y(C-Tq9i6<e+5S0I*)O64q#7j8!?G
zNhIUIZ#9<?;S$tjzK7kulQo4n>sZ_yBtTnhikW8Ka7qe`=EEr|nVbVX4@8TrDOtkV
zDGp=(zt+q8E|k}Cc8VBji4T6X3$uijLZMNLht?-t;3+Nuwm<<8c$bWX%_%sI<|d?6
zQp^ER#WgUcFdv1}ggcQWV#8ZXoise9zE$l#pi)yBTBWobMbAw!DIp;x=BSj2lp?Zy
z5pQ#ypQ<W_on{I)ot@pDmT)^tJ$*#NohbG6i4xAD&?nnm7>CZ2Xb(yqyG0IG;?^>9
zI>prR$Kfev(TwJ56gqL8c1k$=>m6DLpSj+M?zT>%gDCalswBJ#rH-AQz$7MwLQh{O
z;2IS=`tC1FIJq-HVZBEq4-FZkS$rKG5@Y8WMd?G&in6Gg{%>p52(RPR^<4>fqSQ(L
zn?=Iiar9XdUJyqw;J>wMp12CrWQF3m3N8uvqSPtWC0)Y(DD?^<!;aB1W^^IJWJq-!
zzC^-nQR?{xB)kr#o?oSe2T|(jWy@-8<(&v5Eo?;F$IEIFlzMjc*iuExvCEcEHOJwR
zLV)ksy^W}!niYp<{~n8(dG|tzCM$L97qdMaP1?ZtRC1aD-EJIe_pnQJARaw}qh(X1
zHpHW!;%FHPsd1()W-AHZlPrSl8#3c-e+RU$r%R%#)T#DzteOXKou7M_;+fbLqtMek
zB)k%(j=oo;gjdDU3y<})-cV<(&^so$KCXhF1@F=_#`GQ~8HVEUwG!TpQl~)ACIROS
zs8^VEyBmAIy(GIfS#j(ltl(}f!`I6%tGkW(S288M7^O~J@1TU2pwx+b#VO(B2OWK%
z{t{jtNAKZqpS4XrzUV8EKr}#`APT*JN(m34)YHE$;bD||dh$E?+-OFjr;kXu1!aN{
z|H)MJN|Qu5Q0gk&EPMWqWT8&L5+Wx7g(&p&L`QHB3O#+6gnLoO==1RX=7|#FN2#w+
zAmP<0V-@iAW_l(8%y$<?#v%7&a(VOC80_B!n-18REZL`T3<0O-TPJCoQR?_+$xvxa
zXgxjq_+CU(mh2gA$qqdl3#WULLb7B(ZR<AT8S7S{b<nbo6Wg}dwrnNhl1(VUc;2^{
zgjKRe3dXjzc-CpuS9+!`X{-~;$c4nKF^*owLffV|`T(AZK7vBWKie+h<Oz&dkKUuD
zjcu11N8}Mi?d&M^N`xiciBiv0`k|eR1@D1T?L2Y#%d%cEN*%vyhlE!e>H8H(cvT#I
zp@i4P(MKe_p3@`3Wq?=vC87zXPT_vl5*|XSSBP2zUTfEkLPy_Ub_ffh_4JJdXlu3D
zQMA%`R+RovOGFk*eT4|Cx*s0uACh>t5x+E3!aXQk87j)Jf)ZYgQpazpQ^Nfy_4F}5
zm2vcioZe=&1dJ61Byxn+!d4=5J6eK9^sfqH=<k4L6MlmU&H&P#j1QyG>r^k`X;kQS
zB3(eAW=5f>Z<263N*(=x7bQFkrJlZ-!^c|F+{OxgC!7S3vbqYdX7UQwwBk7WN(pBl
z--q6wMvprAgQiJz6^q=5McS<KWVCGYG%`{z!!L<LD0NH*x+FY|Qcqti;8rtAJ-sl_
zYPH1CH*tEO)#@}>a7cx$E@OpdL=R_JJt%YnZgWU@F-o06%VO|KBmJ-fNnb_uZSbG$
zTgwVr<N<{8Aen)zaUNObmla8KodScs5*|XSS3r8?CPM4zZ}AhLt@S4Il%Bqk!~0op
z%EA|2g<GX1H&Lmt(9A3kV&0lZiW0*@BYwGE!b?!<_zjD}NpT&&<!(t|Wu(tNF5ztQ
zc=VO+4<c;xNJo-Mvh_SFCA<-(PG%nIM)XZ6^z^k79zm(6kMU`aqi^8!?3F^z>MRv?
z(=+2}!V>O4spFY*R>Il64<IF^7Z}k)i5x1XGat}w!b31~s9(aoD0OPDa7%a<N}Y(I
zjS^lRM_(-Abw>K!ED5iVqp##}*8X8FP0N-2Hl2-_Kzc{wc+^TB>?xpq?JY+1Z9#!<
zALpeNVF@P{bS4ZbkZ=b|oyj$333s8?)4w6%Zj=ei)v>C^E)j(&^%b^CxCf<PfK$Rt
zQ0nM^Eyt?%-Z=W0qLq4j$p7^y$*3x>La~GgQ0fI#NO&zuy+VEouScn;e^<hTDE0K!
zcxFHSR=dgfYuRPmH^q_E;TbX3K8!-g(m7tjBPjJO8w5Oq3OzlBWa5)yMxmz<ak$T#
zk%=$*3hOw+nqfz&uh1;v4wQO&>5~knk$$B`(!1m6rNJ2mM2|*@W!05gvVsStPC!n~
zf?~jR3axbEnJn|7(9_=~;eM2Q`a%h>LK&m)g73ExfEZPy&{rs7C66G@yGT>Q*Tvy0
zB|L~S#t>g!^%CBIQqM0S;Y}!Y^dtNd9zv<77kqBFW<-F{RdD(7ObRul&{t>_@D65_
zI{FdeC6i#s%CJP+<IrRm*mcN4p<@>yFu|QDbnJ$OB;18kPoF8_1t@j&E&*q+Ow!VP
z0f!_iHWCeYOLz%NJ<}N6A4hMI^p$b+9tp2TsZ(Nj9fz}XP-1AnD~SlGCyK%A0oN;0
zCFvVk$z)s?Xo^GEN^}IJo*njECSyM)&>--c79)OG9jgPL&7G*3ef&K_UF8wd@JuHv
z>2z6TmdpsRqtCCF@Pat{ED86Z)YH>5S~s&81(ri)cyDR&DwhO$QR;|C$xfc>2VAdA
zAq(JSZOW*aQlx|)UxH^6Qj0>*FHgejQ0nMk4@r0fN*(>}otdKuL+xLS@V-E1gdgKt
zI})v~@*6HzRRnj(HjX=H#o=*q1U#LUnAMI>zT@oc=rR(mir^U<cO*CJH6Tq1UWh^`
z^fiZsm!Q<sdnBAZsi${Kcoj;Vg}0xKUDE|qFoSrlSYqlqrZq3-lP^ee5QUyorGz)3
z)JYzhDd8cMdit0J&2jV-IekB?jY@rmMvk!BEGTsXZXds7nwIhSYY~agGNR>+QC6E1
za2>nX&63`2q>nY1tsstG+F_H23O2kI^LIM;uod&;+`%^QFI4aw;Uh_ZIM9YOFC5|6
zY*j}5>tq1o>v&wLwjc{4sK?qG0A7HPnD+be4gWybh(c#rH!_IeArv}4#cp)i!px4i
z^VuT6>*}ql#53x3BK`FB>=I56D8NT9I|$0@?I`qof_NrAE)>_}L;8(X*n36DznzGo
zuJRisoGO=~xL##)@(1|DE8z!B$LDo=CO*|DbbMm1+bIAz(#+?$PN8<9H&@Y;op7lQ
zw*YLN>N&Di$T&Nmi5Xe~XJj2aQA_BAO=*^RHgGDIubrCW(2Wuu5+}u-a0MFo9Mn!Y
z2jb$Wx{h5@ouKcGQ(82<t+N@=FX0nsb7zahX9BnKI(R$3)S!0G5{HhR9YTI*r#zVI
z?4qlP5I`-WQ{eRgo?&n20=lBrzEg(Dg=ZasxsnrP(A^f?W&CZ1sUVJ^S`rk-!D}Vl
z69*4UcyS!Ofw^YjIFla&DQz=MUS@ezYky0I$!{d&r$IzOn&~vvEO;h(6)Qo-gbY(P
z{{jwyI7)}4Bo*}>ToR7%C^*#fFYrpxNNM&;%7!J=HS$^`o>hEgyU7lifopXRK@c($
zXc0V<vN$Oe1O(7?a7qHa{lf_eXCSZ(0@cidf`9-zYi<Zif-Dvh1Z1{O#0@2q00Yuv
zWQFQ75~Mau0yirV1O-Nd8>j-TP;o&51miMP51#cRERw*FQm5OEGB{LfLmfTeLnek*
zEF>fnp`O5uXCkO$mSV1Ry^)|zL=xbFY%x-wN;c>v6FnI4+ctW5gM>Td=wtB0IC!I^
z_r}4)5?;;W{aQmJiQpu-o+Db}H#SRn(-MTgFM%F)dbQ0I=tL^@aEF9D<KS)%Pph;W
z;Wt%EcpUvr0SPbQ^x3U?-Bc$L#T;=JE(}krWFODKQogd<h)%c2YE)gPZ@NRm8{*&v
z5*~_!dnCL$4qhVQ3oRVZ9(Y_!>$os0j;Kl!G2i3Rk>3^6>ryAt#7hqkN;vsS4{wz4
zKpZ?I;q`Iwh=fzU1m&tv+Y=mjJQs#JqSdE-KLqgS*@)k19mYPN8HXnG2<?c2J0;v5
z2d8I*S|V=7{SKo~Vil|Zoi;tyY$3R!ri5756WVPzDVK{mKv7)0G_}EP`~*{1_R<qt
zX6g+M960#tF|6(hZE$kqCmsM;)qSRPcKHcyn9tYATc#zfF0JY5&2cG8vq`ZucaP3o
zG)7T!`YPs;O0=13(8oW|-zNN;-{LG%N=o0zD)7Fk*xgFs*@PQ7Us3XxD|gZN@_ePl
z_t{V0BR%|?zWtZH7s1P|q%0y_Ddf48{<qP0!m;B|YPYf{p3!dfeG-iv`_ylT7WT3+
z39B#djW(A~>*V!)^^-R@)T&uI+>%MPW1q5aDesPSDHF>{<8F$Hv>y08yipSkm(K4A
zX_<S8cFvJ*y~-wyO&|EWqEtPuB<9yB;~~pLT9i#1Gk_I5tz~BBO^HUGQzuoql`U^k
zEoXPd@AO1lSma5qQ$B?V{WJMhp#V&@dmjg5tzbauk^9pJR+3;PGY2$P&nbyz+I<7=
z@hf%@DseVDy;>&j7OROYFh|p_vAH}NBD*iGg6=zS;kHwYaQnMQi(tEjSV^0gU(aT4
zLAg@moI2S*=SsI;ZYAv%UT4x#z3nf%m5jgiC&a+{(I}j;+*h$5&g#=qz<6^8a_oxA
z9W?yN0M^)Sva{yJrZ&<`lihA*a}JTiO95`4Yk=C>Cw<reY!b(MqS0~D=!+8G>{d3N
z(7~S;@X3g!P1|&EzODdslRxolYxkS4bjx3%l$M&+)t3-4<SnX0k>mAI3;*0VT?TP^
z+3@B80~f-Q8f79%6Utj*5n2K+9Db2EIo=pJU`q6bA6Jsyishfg3%Y&=Yof7+BN#mc
zeoX)njy_T^9{=8{-Fi`Al#R(8P&&hwPSFU_4$`^w&6IbgdW*tSNoLv@)MvlZOliz9
zJ~ff`dP@8C9qxY5b322?oAVn9e%avnIQR*Z-k|!#4|?|{I%jvaB#dY&H7Bel-C6J{
z&3B_a1|}1jD~gU^x5?BilX`DVlX20OBD5i|%>sT?dp77PExm)0V$uJX;yxqA%o44O
zs_tS{C0cLx=q&A7+gA^9J^vex`rbI^<r<VKnp^o_K1=+wc2r&W3XA+%8?JuH%kJzG
zuQrf*OSP`4^YUPzqNF8FWPwtxXPUElwW1su>31||Q-hs9!nT%b*<GVIhPx|@-U;Cz
zeh0zOc<UAqQadjWP1RW6GUS`dRlfiI<drU%=~mkDpd<y4?en`Rp;h^mbR@Mm^5!8a
ze5_cU6_e|nK_$_x+?YmmexG6?y3%PW@48kf%e_+-yVGxitaED!Us~2_cK$qN9mzo>
z-AFJ&-^rWbbGgEMgbyv~oa%8P68^#oUPrF;DQ05Gn#!~+*`Fp?yOpm$APO0a8|XWI
zWd8{Qzm%RO{%!hBAA$E|0zaFcC0_Q&$q~Sdba2@pJ?PzEQ*3In3KLnIImlj?Ii{q6
zvfELDCT~eE7KMFE1|?X8d!BO@k`VXS4Qp7UPaCYZbYV`Pb_-S^Px!RlzAop1Xf(&9
zguREmxpTTJp`6Kzxima9os`jkSkR~a?nYM_aUXt5F}sx>Gnmt_J*5YAKf&JhYyF;l
zl*A(i7fY*)$3?Gf8rDOxRL!WUlQ1t}>m}@639AC^EeWfauv)-gk+5|V76hzZ!h)<M
z6)EwFa;>dev6hvVYkky;|FAd8wSlIY%sx*`XW??~*QVa|JzK5#h}|_$8=zMFmzB=b
zdYay3fqB|*O!rZd&LX{W5kGUjW>qUbW&P)ClT9D67w2o!SkP}uWTT$fhV=0?I{j$A
zfO40!$aGgO{OeXe_?$d7tOp_#u$;c02n#$9VO>tM4bP)XdBUvz1#R?DPjhqkOKEeK
zD|V{qd;J(9vOYgnm!5O_7MT~9D<z9RQJ%)fyQsTT>Q*{G%bYK2J#6n^<g_EBQIa)h
zy<*Q9>xrOF7JK?dEqh4kE`*QiM`MOtd4Cnbka77SySO~DWKs9Tr}6PFUX=*mozQDv
z)Q0wX{|=%fzETg%wR&_~$Zq|M*2lK?m-Mi+r~jf2&tA)A4uhT~m!>K?V~d=N@)gKd
zAY1V+-b;4b_OhLS(I#2fc8tm9w0(<Q?5>wIn`(Q26~ClC+~++$Z4v$juf9bER3Cgw
zh(GakD;>A7Fleps@vNYuEo6=bS`W439nAYz?Q!e7Gvj38o-5%q-xT<FHpStwQ^oN~
ztiDS7gY})hMm*X&ZxLdy!$WM^B5hLke}t|^+e@ysJ!2C)zDS#p{U4#Pk=}b9`uha^
zn(OiRUrXO!@?Ud3{*~9Em;CFl!{5_<Eq%J=Uw1wJf$PwN|6*;r_21=2{}t5=|K9W-
zt9)6TlKrnEarip)gIHUu)YfQwzgxMfFWc}Btv_?Uq7AnGt0=BgJ*#*HjcR>`)xM&=
zn)Xj&6oOj@7#p}i>#3%FF53L<({a_Y*+6Zc)|+KA?U{St&X2=~sej7&Bb`d2Qw2sB
zZd<JXktnzFHlKd!;xWQP46$v=XP22asmDL~aBvkrMUi|duF-$neZoqswb9xCxQ?Hv
zn6LG7JNUU;n?B(0aekhXxp-Bp9}~cv@{3>S-F7|mFV!B-eoOT0RyR$_y1wt*<_O<A
zUe$hY^F)STnBt^l^vneey+w&7LrrA(TU}WFtJ=_v8)^Jf!haKM4J1ws%_rA0^D?b#
zauFJ`_AS<b8Jykb1S<ecor0hB!SkeA?sVe!w^fNqh>1`bNvoWaRvSJ_&o4^!5C1e8
z9X>A_9lCvrD>tMh`n)OcJ+oc04}Ez`L9X3Y^~@l}o<A=k@oJ+aLbv}r$Rf+M?2I<u
zNw+xMo6NBsxEuCf2lpr|0ZzSP6<fX>o&NvQ*k}Ct?)M|hwb3T^%@xd91BAAVd1|m=
zeDe|J#q(fo#kI`d6vD4-p!OtdtkF*44UXVS?LpHpmKo6gkWu8Pv4i63Vt1thA51r1
zzl{X~a9c_l3kEb>GBpRrn@~U--1W6jxKz;Vb2-HUmV!4j$12PRUYp6Lt%AnMYuJmc
zv=45_swXz5FP+=TO9Nf$ik@Ebk(^+pkpj7UN%*QF5<rQb0$2=2Q;ONkuW7w=&}&6>
zB|S?-N4hI7(WDtus#26@8f7p;arq8hA|aTBui^_*r-z+<P3y7bAO>7o6=XWgl}`mh
zfQKjMw-H)Au+TH6Ocr_tgFnrN7AM`G>092@Tl!JIR%J<fETm1P&vf#Rm=cZV&ha!O
zNKA9)2rs&oKyT9RYVX773**o`NO#IK=z)ndh-UsO#ZOa?VIvjGrG*s@i@&aD9Jqp3
zZK^94KtA%!2t=b>S-COBICnV>(Np}nn1;og4+8v{Yz0wPP;<044+NsiRl1dgb5x%U
z;LO1nJmXVErR>tgYaMv`Dz3xmpTsCkPQ;gS(d}=_=a2Ag!ZTl(0#DB>o_TA<EFyy-
z*hF=%dTC14V!&e_f?&i`!W|yE4nl4cZc$z|GO1Z_WKx6)h)75=Mqt7P>3FzFffygR
zQWNiiYJ<V|35Nc~`EV<Dqq>HKj*IS<*%R%DHjFVm_H{+W{38{O!pa&xd%9|6QSIVS
z*zj7dL$|#&;HVD}tMcwjC4~Svb5VB1R%dq{0Qz4u-I7F0(+1|bJvB3h2+Ff7*kk|D
zdX5Bpv?7U;{b!I6w<4eT>BRlQKxZnaWP9uTfq!alQ$cv1zkt@T#4C&wU4(aebH0*Q
zx{%hJiQU8ajvnIIFTYCP;y63Rwf@W72OADQ>t^OP+V9nh0Q0WFnh$0D8m(Z_BW5ho
z675)7%+8ylIGj_TEs)AD!dfZ|2BE*cTEs#vrq0asA1zf~dXW`q=!!4W!?Oj9_E;9X
z#wPi6`Q#FIRz`fPIC6JCTYzPmH@8JGI|E54i8VC|Y$+0x)}_3iDMg6%kaW@+q-NZ@
z$pZ`e_r&66o>Jj0RqXwiD>ovgxM_Jvb)6Mc>V$er-y_;v<x+$i&9N%`*=Yk8nv;=t
z!cS&LqXVB`uq(gDgnbD!R!gRII4;0f=vDWtSW<ju(%2m>rk;Gi1%H=QOA->Eq!vwZ
zD@%D$iKSN5Lpa)T6Vj`B|CP8=rM+(O=Gbq!<-J~*_LG(YMRhCH+!~=^bQHp;Gie<A
zIM+qbIBS#)@`Bi5XuCI&kbDow{>x;kJSqSGs75Yo<;5lrP}5oIb0)Ke+#GA^anUU%
z(Wr^<VH{_-Q3bM4T7VE>-C5{<Q-9`vPqSvf;3gk0%6{Q4Dr18PaRaOXjXQJ1YiRuS
zFSyyd_b`YqxtoRG!?wcVAYUnr{gabf)@rxi&|7KS@2#Yhmx`iIY~A~&F89%foGy$?
zKkVlPx3v5f$@cPIN}JNsPTta$J-q|pqBU<qb3eYzltjrh73%|q!hg*Oe4iX`$^BTd
z=GfUsYqekd_F&_nh7x$fy1Y*nNBQV4Czg#VX!bR@oxV!93-A|*sfvS?F3<Y1kQDbV
zj6g)<_&mVoKcbk+dw)5;tnV3bS)T%D`7kB1e=-KRc?mE3UZwgbdzUfEN?vHg2G8LQ
z8_T-fpI&ZO+W0CXv^Ea;$eppz&?`!t5g0<}zJGsuZqAhY+y|6I=TeN4w{MXF^@=Xo
z5<VLj{do=5&E2M?`bLAsZ&qkjD}5B3wb<#v0-2{5>OQ_lcX*wDQZn7j%Y548{7`A@
zo4>z3k5-DTanZ}$h#8Hn?1}j%r$w)8eogdN*7$+eo{XB^SK&rsW4Do7nRFg{^o8+5
z1JDI}cY8QFHl51$J-9hN*9QF({)bU?F^{)#(Tg9Ds2s)2*Q9G~iVgd;$xCfYXOxL+
zhANr(-UVe>YLt0jd^w)>H>gwjoX^l+_u_@b;BP-FeSE#X;RwL90iQ|m#Xl+z2zh|M
z`}zRyHz#waK#6hDOD8yd{(i47@qbh|8?dDW8~7gWSR~v^El#alp7lb(FlECA|G^jT
zDl%`_m@`JX!PKR1vQqlBE5r97tEtyAeJ>OsNR%8G*0_EQ2M;G*_I*EQ0O<;q5~)4h
z%HO!U#8!?v$<DGo`{IT#rvdjQi5?eieuYZs4@ie-M^YCweW2Q}2u|(C(_mTNt+{g)
zysq)LKM{P`ojnxC;u#w!j*DL4gEq<)guo7UI==G&p{*|D$IfVQ*x!6N;me06HS?)h
zO>`%3^WyoYQ9f=p;&~Ce6e7Y*DkJVieD^MJ_Q$!KYu@E))GXBW<$Yc#$Qk>>_z@#9
zv3ht)JvnFY-^W7o<tCEiTiEEDzbh{@zvjw|ztj)%Yc7}KtiV(@#>u|_Kx^9*bz&ig
zdVD9>7>k!j@mPFJM@X@Vc;}n)B$#*3J6<S=!FZfP$#P_&oJW*4xeq_tq*FGX8$`yA
z{&GBZ^hKkTHgJLkee5_}_n~H+R`m$+T{S|<EbpeYnUBP=aI&INzFB0#<n0s1zoxtL
zho$+-Y>X^#=k&!gGpeLN&{xUx{T<2s@Yr<9L&W3FRP5#d-RUapJ2D-5pGC~4=Hx5C
zFVoo2b=s)ZOO<Q7DK<!cnpLgS+7G;<B*LG^#ctuHiNprugdd#fpUHm%%^(y<)r>F4
zqjl?9$g8C<S+6ClUykQPFte}Mx{my^kj_Guraak%QpwvFjd~wnFa^&);CT`~kDu}B
za6JDwOpQjDx}V%ZFv`l+k3G3-Y4(#lnSVX@pPp<&3`Z%x7v212VQidmD=#e-<HXMO
z82rC1<dT<sq$MYR=|LP;>$LLda1^(NI^0B|vHv6OzLaN`n_MdrHY}+#_3}|5k}R4s
zAn)Ht$7Iw_r6X?e`VSz9^Sp1e`xZKpbd_EMpW|mKoq3REe>q;@k$8c3)tK6FpW78B
zuv<x`W4ATK(FT*EEwMK8z(>?h)J8aZW54@YbKcmva5!3gp@O-C=>V(ySZjaNTt&sH
zLIM^58&H~oXktwtYXk1VIPtuja=cTDb`WbmW6XL1JGx3KiJ;FgSG(x26uVM17PFVi
z0$2WumaWbaN*&GKj+vrCJ{hsEG4=07tvq5LrZC#ZCsqwt5_6YB3f2iQ*h!qJ7V~e?
z`um7-p|)`*DNGayvvuX2NA@otPGb*$e!Dzxqyz3CTp;j~qRt-Mtyga8NW1fKB^`5)
zbmyDV<E3+K>Ed+p1wNsG)a2ROEBCwRMW0wT3De=eot?h9JG^Cm?@wQoH?jxLFD60}
zpF#|2($dO^ACDyQ)QjM~mGF5}6bGLyP2E`RR$efXGsq0!(*re%>YNKDDxgFK9j&DB
z)D8j7&JUx<kC@;==MCP{zo)#LYsXkJR_U4RQk2<alMgs+a9mI}R%s;7%S`t@j>f*D
zd=ff+xl*#!gbhQS-Yv~jw56SKN~uJnizX_TcS;rYojfHGpJc$zizg~=-kGSRI*Vvi
z=lMsWm$EERNe3(=r@J!GxmVep1Azpm&zl+yehZy?EIKv2`%|r3FUr|vecjD#@|28m
z(Vu?6>X+Mh(FqTkXeeq)XD@!Lb$aBib6K>s@*|}^Om=uHXvj$7qcPG~)3vzdhe)Du
z)s=PlO8-n4HCnat0MPGQrITxgdYP33O}%}X8_B+U->P01>M%c|3CQae2;k*r3e>GU
z+4oX1N4$nS=>Bp%pX`Vru7CYA9C6L*<Q-VUPw&DgRn!S!8;7^4bERUXoZwa#^6^T}
zxEqiw+YYQ%lu?M$r)hTNzk&&k=%mxSeU+?~J#r?!d@Q2!c^Bf?6vzu=ru4;zjp!li
zakvT=`kyw8<usXYW}aef4Ol8niA!F_7uRR_nU7(OT0b8|m~)ZeX`G!8*)+W8Min#V
zdf&ri({qPnF4FTG%tfA??NKP!POPHRcj(g9X#()$qLCblFQ*cnH~F0(mCX6;^V%#O
zig}7%NkrKNrAqUZcV1O&n4|b&a}l)QbG(%n{}*!<Ou*!X0CSY*@`>SM8-jl-26Zui
z!5riipCpJ@Z3z+$eS9m<q|>@4cRAKa6;pyVh6_hO#}&l3#%$NTmKQmEC622I>DzTC
z-K{M6ff$qzPd3v)pI_5bmwP3z569z#nI`a{d5>tq>qlmAWuPb&;XQHjBO@~xPfAXd
z3VDf+K9r8`!J#I;(m!L^jR0ie8^~!YPFWZB^j1~A;J&*CQ&Ku5#!;0sq}+ktr{uWM
zeQ^T;&6Ev=#>>!5W4C^xO-g^3djfO=Ff7ia^o;5HzrN5q^+X4ron0YL!n4PwqiPB7
zVcnGl(EDyaktw*>WN+hv5K4mn8CYrXvwr)RTGDT8u~@8BQlz*=m=wK@-k_E~kCnqh
zwFiQ9XFrsHj~}=&WfPv?e)49l5ufu@Z}H2Xa~r-t?W}}3kK>$-XQ$N9nWI6=>`!v(
z1CNgaRi3PIJH9)dwWv{n8ax-;*NByK=u7N--kZ;>v(62gc0()Ey!Qw?L4Dv?VrZ>x
z&<?5dK4(>5X@5_C%;8q%zQ<f&Yj^lQiPrtRH(GxwKibHbTo^Sjb&odC>WS9dv~VJm
zsRb~24l4a`KX2)uv0%cj3>rwm=r5#nzgLySq5o5o&<`i(+7$;{DJxgOXR6Y1#6D$E
zZgfkbZ_fSca~`GRRm3JjDA%u;a1L93BfI>y*3q{RqtaXG&9p*9`gbd3pActp@H)3W
zeJ3f-sfx)v1KIhJvFUK~akO>k-0kS`UB(S~=Xph)vpdm_##OKsy{**uX*%)qyy?eQ
z)s;cS12~IwWl}S;Gq$Gu>j~yo`rUC0ec@wDKuJT2E-9UkwGfZ={(T9D`M@CRjyc(f
zgT6;o-krPuL)I=m^${QJ?F@U<VJ~K{Ew#QCLX)A;iZpp<JGMfg$=uK0;hK<Un3dhl
znf6cyl~(^J-GAf<Hwp7raP8ATg9LN>1ERs8M)!^ApUIz!0C|?C5lUwS>7c3^Kj0`f
zutBp~e<&c+V)5x#e6!hx4O;(1YF@S>)s*SGgvRBKiH1dE<}dB7C?h^a<Lus2I2<#!
z+?HhX&<l?_Xv3EFJm((xkb9u?12p=MThJtPcw_U;5*nc^rZk|L-ts^*u~ngT*5Mj~
z<Mg?&D=M}%ef(%JclneiaZRO+56iM*Cf}{$*H_9OB8I4BLZw)pkgPK-CXDE@eCkhd
zqJyyRyx#IDVS<&GWfpk7iFO%FNgmo>Bw?~*FTt?%1Xbe1*s=1>54uWcbn>DXn|<2<
zytDHX?KyeT=mUKdhhtx$C4YtKvhP`BKwN#G=JM6-L$)l{hzIhylG`=KyfiP_%st1~
zt<O9{I37pclxO&w3inK+`76|PU&{ZyzVIb45zvPPzSSPnUc{JVf~Ox~mhZG4z8~D;
z>WMnO-!f`;b={)j=FHp{vz_Gen1miAZ)x@poMX=BPR$J{T}AB9=ADS!jlBSLPrhSL
z^9!sJwqa+J<5B)VDq!ezQ5pM`KL}y{X$V+=8S1NQuZ6?S=7AcXU*$8_r(+D{I`J%R
zIE;(#<3@wFGb!D#lae?y3pUS-zUu^Mq}m{hd}q3qkHU+q?oPH&^<X?%NK&sQ@X-bU
z8R%BLIYg2-1q-C9Q}Mi@Z>$RXNCADP53S9GfftveKYo_Go*#C1$5{6=uj^O3qQ29u
zJbQ%bNhIof=sSHNhi3|kDnx63n1>OKdps@8K1f8dNOIL&K7a})f_V`^=-6RrjoC~y
z1?rD(<(Y$Q-A*lUvFCy0<S7vd9mf23tFEh4kdj6%aVY9!f*$$snLCIVltRjCndqEr
z#;P9AoY!owFjAQlB=pbZ*VxHTTCKX%%c?iyLW0KDZN~kC9Z$34n{iCIrI4AoXu0-s
z9LC@tOSF=v-iRoSNzn~7@Y5v1tvt=9Zqe>EJ<a~HMeEjnM+qcPbIyU}8cbukWG~wT
zlzR5_C0n&&3ADH7+NyO-z_7t4Zq>T`W+SgpomxHgy{UmxI!3|bic*SOnRlZHdQz^M
z`}#j1F6G@zU+sd(@^b_q_yIZ%%orL}l80WH+L#L<g0z|@yrn~Lpiv&Cn<iZB-m)t9
z6YPHSYdEubu=+16>GX{2I&L4dlu0wpd$cpC+z!|%nuLSkR?MQgUzc@NI^)yj)!j;0
z3M$~6-O3+lkTT<<J9!61y=1;?RHW3pm0ABJT)5OUG=P-{jS%CaAx_U{<$h8y#oTyt
zC?YR^3-fK$I=N@{raI%IJIZAF3YGc~@uMt)x{c5kv}=k8FVmqra7D>{r;Kgirsdx~
zj3eg5Gb^H1Bs4b%TYd26oE*i@<-)6w4X^s|<FxRqtEQ!dqWzg^yk%;Kx~Mh$gV?m~
z+DpD4PZQnTir3|g@J~GAohy{=(m&9wFq%j$7M`)oD;2Uh1IhIWl&`2BrpiO{LbVh0
zOBUtv=iw-k3TKWXJn1NVX_NE|bo2d+a0so-N*jE^Ka;;LyuwcZM!jjVe_RrK_IvFi
z_30!Q`d;hN^^bc!Ai=Uzsa%g8vK5$XmAVT`eKv^s<LB?&n-JdW%(qzHkJ`U%B_9wm
zAABexDxM6X5z(1uc7H!{hxRv<`qbU;SMSuin$+L_iq-GZ{?m1rpPx?>WtquL!y?td
zu!w79Pd@T~<!)`aNi8m8bs?ON{_YW08Nw-N@on<CJ!=eUz4fOPG>}rX=I-9*N5r~m
zyMdyUIOm2G6Rz&u=T;u)0YSc{)V=J;uI0;)?plFVo=ne6vv<{ui#9GKTUvu~uHr<!
zXE_Y~odKL_^0~|7gV+;$wVNOKfUkBD<ESzUv2^>m=pi0&B*q!Se$Q9?dB^b{Mkr7}
zL5D%C^PCl%Zjs8^vERtWbWg0K<I!7L`aW%_b-y<^0K4W)4duENWnuPyFZ1lfHJ;z`
z_Vi8L!DEDm8}wYaTPaRrfqgi<e(VIR--j9MV}04qeQ2yFuCV5P+H2X<c<&_}a?!AE
z<<Y)esGr-M>WkXag?	VxR5TirB_fQwN_s{24^sh1{iZGtFUgAAZb{`%!W;jfSPO
z#ZEru>D;+V&BrRx$3|_TTTqzlP2~xPo@u>;=Yu2`%Z)*l2QOtEM8CeA4?ZT*6bJn<
z7blt<hJkJn;&#IWRDp=cMK^Y&?-=1|x}Ja$k?tZ-bG@p#XpzH5xPs3#2Q4vusF_C8
zG)AHaSLZ&A@#tZtJJRvn7<atoSo+XT4<`Dx_?{lya3a+fWgV<oI6`sG%vPeVc}l%h
zy){*!P6g4GgHF~vOXl*r;8pJ4-=&1-8K2@@G?@msDW8)vq#_M`tX0iL!;>OVr;xDp
zp+<m5Zj=e&Rvca8IqHw$$;()~BRHq<P7hpO3`Zp&T@W0xJA{Zzo@9t0MxS@fhno|H
z+0iUGt>a~62Ctq0fLCZBV)a8)yBNCKKEyTRH8+Y*jBZBVj>3<}MKIRYrmZJtv93m`
zVcA!^mOCpRqwTchWnb@F;q>vtSl;d2O3{-<KQ8+9dsMb|Klsh9Ok3k4AO!{qE6?6v
zLj90G!%d5_cVVEIc6TccVCC5dD|1{*%Cb+C)l2i$ibc5Di%YIQKxjG*NLM>+hzpD<
zN}bhz^k5|!bhWc?@6w%^^Ya+;JMXO<PY}#0d+Tk!*g+T8YJ3exYdTuT;f^&OaM3{*
zxu|qK9e`ax8Xz+%n<Q4EJMfr7tWiW`gT@rh-J=}8Hlt4EnN~ES^5UEi6+30Q+}}pi
zJ<e5$l?ZG*^|5i$Gif4nOx}gvlUL9_0+{Z^_vIo`)dC7qN}DgZ(bv$Q2fj)>L?$mv
zQow~7Hx`tM^(d3^T+IAot&?dT3xqY>l>H^-{YBXadHhrL@)1{dqQAhF$^Y~ytwX7U
zJUf3O`p0tK$Lvm|1~K$1F1O-YL$u3klBqW+n0!AWCeD**u+B#`TOUsu!706nv~Yk@
zO#-RDH0z+BDmlBG@#AXf?X2W8Q_@XESm2kN1GsGbgfpo4vCUP^-Z-L_b;ynK*DiR*
zy@RrnIe@6Un>ml-9?gjl*b_&!uD(+r2-jYzM}O)}qUlpU88-sZok?u&N~J&bE%MwV
z_f<Ezl}C8Qb5Ej=At7=4`EHp0Dt}&wx=&DD&@LjrLYA6Ht|Q*VZXU^VP9@p6H2a{R
zeCMCBACcS0{X{+pKYq~59LJE+Jvr>IW7?1bq5Fs#`2zjbLvwGm0S`_X@h<l_rq76G
z_<K?kt2?G;kDNS%>hP{ON$I?FxYBjmB&Ex^=;!4GZ|#13^qb7v;A*^5I-lH^bv~}y
ze3N;vqbWD)Bsz=Kl4beIYrx;e`JgA_dG)e<(@cD3;qym){)5ju_-q7jBi7lo^*xe?
zQ%v1>wx{8f&oSlnk`JMN8Y&xk8uk4S-W0nA1Z?15g;6RwV=0CQWY7vyL@E;tjs6G?
z*SP4hL72;XTk&&~n`u=FL;P-K;+q5quhzh0_7mE0-@{z+3+0L5P(Y)VdpS|hS)Nkk
zRvvy!)@cn;@P9FPQgSoz$aETv{0BPjWa^hQ`zlw^H_`8+8*)b=I`|If!=Dfz(SM`w
z(xOgoHu~K?mEUe7<g%I+baISlHA#Xw93h$aUUE|FJ&K+Ys-o3@%LOi*l<Y*EEPqk*
z%j2To@?MJX)%d=bctTn6W)w{gQ{>dJ1FNdQ3-aYBweIS~P3(=6+K+0{IsBn@txxiA
zH&QkHMafhL+X;YrxR@nIv?1zmXS2MBHp53LFg`8nQ{p<LLQ09)?V#-~?6GA+VGGXr
zv&1Ci;lGfCoIHN1U?-OCmq$!NAKZhz;yDNT+Xv2NeCN~xudX6mne}c(Doyqwb)_Mt
z-Gy=}7ViPUv@0JlL68O4KS%RW(2Oq~Mz=ho(G|n+z7paVikK)*fib6-jGq|z5jDG7
zL2*g5FVJE0{Ndg);jS80?50fHF(`)At|F01h9@UdK88>izfC?D8+F5#A>*PSFJc=`
zYqlYua%OzAq1_H16A#TK9?o?*{ik?<U~%~W2_FzJpJ=2ch#R$MwA3jFYsrmn<)JjH
zM6MuDU`?_v@G)*#Vr(PJyl-BfLZ|9vS)ETA0Q?)|0bI8jfJ{<NULXb0i9X1cO45Ko
zF8a}1?Cmq?{htgY{-8apqn&M}ZD}GJeifn|b58KV_1}X86B#9GC(Wuzj$0|bk>KDj
zvWFk_Rv+_vDi-V_2l1N#pdA+t@=oY8dZ>^aySOG9hpy|n2T^hb=}3YY>px<vWc>+(
zfsPB5Q^YU~>P7P_ky)sDAAC>HUE#*ickW1|Cx2c9FXB8voP5(v6pUIomYtqtv#*SD
z^CL5e0d7W8j9K_PXezyv@!)*~$H|{9$E74ud@Y@%bfgn@<YyZ$+~*S>{P`~s;VbL;
zH<Oj!aaOy-R`>(qM2sps`Rv8740S8_&tz|$#bwg*|0H}__oL~{W<V~*x1Z;E>Nw@>
z>{;!<*5B~VLbzqC=u-auudv`b^y-7Pd?TJNgt0f<q*`vDreyLN%}1j9(y9%&HkL~1
z_I@?W&Dg@rq_{(%qX+Vr$It_jEW0aJ<QabdGu^o|n&&%+XoR!z_Rh1UBa1wvbxtSu
zB7bEOW?b~UKgBTpndRR&H#%@$8=f(K5J7n(`9$JyE91M+ou(}2xuEsP_{}CF0Gk9j
zIst~2xs~6nXVt)|zgf!GUC{2&c<2sJ;}^~lFIV1wn)PbdrcgSoY}TGp3-1%#_`NRT
z;!|M~E4YXk^zW0Q^ZqtgauK8PeP6MvJCF$1UBrs@+!40(qBeBEePzU*9D}7o0S({S
zzb-y92C%>L(c?vekyCQA!)7+>XUs(=>|)-ZwI}scZrbbTr!F2P_M#Bh$rJA8%#n}s
zUc){%9k4%ouoh{hSOzZIwxBQ3;F83k+#t45rXQ>w@f!Bk)_dy^n`Jb=Ae{59FkP)2
zl#_h8VVDcc{jUz&T?8l^tEdYfg>Q}=E}`eLgxkH&g}C!&kE$0(E9M7&mppfN-;^(w
zf`*j1^!dSRSq9khOIjBn&Xf?bS4avma2`5bPXzRwqaF6-+;O-rr%yPOBKFdkigKv|
zpRe)x3bVl=?ICEq5#37aTijaV%JJi(?><D&C}&cME}ki$`B*1+MD1C`cwF?oE`lia
zQ7T2CMw@bmN29ZcE7+QhzQMz;7uc;AY%V>@JLfcPBk<t7M`nPQ7hB)qN~Apt-Io77
zpRji?<0X~5c|W3w9{L#i;20b+T|wlGS;{6}(H8WW8g?spafQ&PvxyG(A;UC9a8^u>
zfFAGiwP=%U<4mLqRxBz_Ly#}3kOwdqJogqWZPB`py=y7QQ(p!S@Y%?a*k)`wKpB-_
z;s(H7+(W_<EgNtEoa9>3(v0?BN5cr}<+B4V+8>5av*bQJ&77M#wK;e96zIsOlssv=
zl?V9X>ian4iY3PXN7%c7M^R*b<2{orO<)oY5F_FwqDBM^5pjSh10sfi7!eTh!jJ?A
zmtcg*1`N!=Mnpt6Tuh?^1{N_QvJp|EB1RTj)>rq7{#_Pb);F?<!R7Uz<wZ9jFyHS~
zo$BdndY*5dr&C?OI=4D?s=B(mx`Vm88$BBR_O1k@HjMqJqdqZO!srPTZ!k`UJN3G(
zRI~``m5cqOPd?vMA1|suDvM0VP!~V+TaB-V+Q?zY5Srmq@AI{KpTfKTOeEY?M=7FZ
zL)`f>;bKCChVj*u;(9XbVMU8>=8cq*r$>EZ#JluSiBzLI?=*^B`n5rR?UgS;KT+2j
zhJYOU?e~o|AL+<CyM~5AG{r;`Ec&e%!*HMP8~NOg^EdfC9_PEU!g*HEQjmwV{^&7Y
zghv`Z$AYY-W5Q>|5bbMrU(*-Bc0p9{#?FgR)(|82**LUyXO#cpg)D6s4CrQLxb^Jr
zyS^hD2vkd>?-ytV|1gT&dQL7{dg+_Pwf)$}^x0s)s}>T5lGj093j6@@zu<AX2y9<g
zVuewAANCbk_GJF+xN8V?&SCqpy7Tn+O+&H4b?CR{$H^BYNDlB9%OMyGW!QGnr~LSs
z@Ef<0Nl1l{WO(hmf-qV&q#4eQoy4Al30RoPRRez;Wc~}fje;Wlw;Xy$zzY!~9Qg9v
zpq?0Dg=R12t1FGxT`r%oAx<BZR(^cwf$(`>0F#(+X>ZBh#(&4@>&A@~F+o+RM^sYN
zwY`RFd>cN$Bx^`Ik+yx}8sd8rSBY0N-%F#ZX>Z;{rt+)X*h`8Q_z2ImHifH<=6HRc
z`}-y%H$m^^y3@EPLGPh|!o&SVyt0_$?sgaM@~QbLbTFh>aM&!Pq5UM@pFcZ1F>p33
zu?!Elzb8Gu?-B!OaT+m(L_(td&&GiSJ-hGg34$ilx{Zic7h$A>+E+aG6m4pBP1LV7
z9!=7-lBvRNv%cRipOZK4?v#R%OZZ7#o9XS3klGG>b{YAkKpT05u|82B;{NFkqa{(l
z(zV7om8fTrxZ@wB3a#rx(Cx$V(U|aS?-6DRxaI=w4lxEsnS@CSXbOzfMEx2vD$#iU
zKG&7T-nFh2qwOhIN+~UY4E-L@&M{dKucGjfNprW3tpB~2mPKG3hLJnE35_(IZNeT*
zF|EEsI055?n5tviU4*z=iA!7q(iJq3z!22esOY5U7%kVh<NHz=uE|O%dowF#F81Q2
zkw{z_F)GIG#lx5W;uij*<{O;TmTCl&^@Z*cU5q2i`t`1wx=!%SaI9!|()+u=Z#L$3
z(kJy9E+W%6Eu{?7t`*WSW)ENPPHtP4D5m$gX~6{1f7UqFNzV@Y|4KBWj}qf)To--%
z6|JkBs=p>W2i!~pt82|Lny7~HXyji5hzAe7sm0KO+K{2GnoCAWBDP1I616}SkUlJ8
zB)$WE<;3&ScZmma{Ao;hyO<03JZ1<b9s<#5W23I$K7N=OO2>qM6ax(jk<V91&@hhc
zSA^l@buI({urEjnxy-jLamC;qJb9;!8n<`0QP^3(&Pb_oCDTId<hE&vRd7lOL(O2~
z!>%JZ>cU)9U=iizP<{a$2Ty%1%JF^z%E$Vi5ZxjN`h>IT;sqH`5)GyfeT_q%^{dkm
zAg;3nk?#P{H97!e_j*Q(jvG&Wu_HzA?*1WQOit0WDXmV?3rCFXLM(Kd#U(Z$mgiEZ
zD9~;bk<80bi4-)zz9U*(Zj&R^r`tX^c4oPI*Zl$i6)nFDDQGe#bkXzNcn5A}7k!5N
z2mGUPQrwndBzJ{kq<y>UBitkKu31+-Gc$iQ32obqn^d{Q2YZ2NuAe`^*w$4aNBn2H
z>NmTtGIBh6vHSZ&#%hn=Kd=1M&~Hm~5#zMNFjm}Z9-o9M`JG!x9EA{%!>4ErSa%Y9
zr#w(s-ljfXKpmdyQT@s!>iEwa-c)_iWp`dh{0O_b#J{Xhd7Dv|s`m@ho)fiRsV)q3
z<Bm~o*j9{k*g!@j+|UodKZJ|Hy+i+j4*eqLq}ZAu)@MR+T)hj99V{G6L&UN^Ct6Se
zTA6P}nuwUzhJp_HTH4!9PDf*;;1S#x*N+LmBP>JB;@_I8>9_?=CLv<jqf0;C2bcWa
zxG7EVZCqaK>L;GxqW}E!3!^4Yzb^auYXMDEY$T=XAQ5EW$v!8J7@wu-nL~DbPGxXF
zG7|d9l@6SUolX`%oZAv^IH&gKVC#m_zRH!}o3_}(16jk0QNx1L0xUxuB5de`TJn~h
z(y{aq#3;H<?;iAZ3qWeLC)~B<2@GEyVyY8@M?gbQRx$1I5B<QEA;za_O>ZkZaRhs9
zd<EJqGK3$;L=-hC&<0*0xz!7i7hyY4bYR*QB<Dv1#bCZ9c+2i|Uo$ps-9UTklD=4S
z!~5y<DUGU9+GjxzQT7M}Y1Dr+AKuQ^2K?*k6GyOJ%}3=>^gJmND`MCTLcLN>CvROs
zI904|wlZ?yEW*U*plZ1!9fW|11O{I^CUyb&NC*V85HUn>jry6)OTjE_b%o$PdODph
z6oMDEm%M|72PECi|2BECD@n{vzb(Wg%9~wZ8|_2g-LDw*F%ghkX<b~5VF`bvH5D04
z|KD$2!;Ok`y=zeVpL{;_B`p^c<Y-TR6@I^2xNGS@-%n@F;+nnmKbh&$?|DCyBFf_d
z^&&cN`_+}|GqkQlduW5y<0Y|Da`vMVt(Jd*i#iiFQmdd|`uVd;|kEz6cNm1O<i+
zggnt6qM?OBd18dDu2O-J_c#d(_Sm03G(*d#>na=eFyW#rWE@MUu7Gh+JgpCAz<8`C
zg-+s8{uA->Uevs2P+0Y<@IS`cc<|Cs>{h2ff_KjboV@--n|LI+9JhQtZqQ=|>x({O
zyx1tli)rZdO;kC$k8N9d;xvsX7{|5hk8VUDo-H2}e&NBdkw?dTK{V)Vw`<Au`^f5W
zxVj-}Aa$EJ_40Of9qK|DRN@LI<|N*ZuLa>5g|-?PwsMP|umec&$($dO#ixA=aiJY;
zJokXBPclXNntaz-qhSi3t<pZ!;1+BipV%kyc6=))Y51nNO6tjrZs^u9xS;dSC4CBa
zEEzpMoxY@mck{fO7Ke40xPds*<+=Nern$f3^F3t#mVDR1ExoX5<0RgSh{vvgr@R>N
z;^vlLhpmV!#M?@Z!KeLxdJ73N&8y<6RWOS=e6r6E$%Fmj!?h>1WODGDyH0c%V|(aX
zN$@UtZe2ZIkX@7WL;5&O5lEFfo;Zo`QC!5{ScHA>qjtZ4qt+&G@k{-<h4WLe%4=T#
z7l?;nzuQZFmGNZ}+_iq_KhaHv9M?)2KR1bM4z88g%6<revLELCnHc5bMtCC=KW=z4
z^d3PmC{aylSI*#T!r{i5C(g)yTnX#o>QMeMEbU`VseiS+o$SEt1ShHG5ORk|tUBlw
z%hx)Ux65muHsH-ZC(aB#ipyyTv5tN~mz_nK@!kS$fVc#ZvzF!bSJxhQ8->o$R*bUs
zbnU^~h;&F78Wic}t1;nSX~tI>dUgt?H!z4Un!#6$iy8WWp!rq`Swn?`y>78=`DVVW
zFCHiUTUva+g~};bUqg)I;v)F4lzNt|S(9_318sa3HESk1b)fv5XzS}m`8kx=t1?Ol
zdxPO$DL~fr5d^=2AQVjyK5tQgC%6{^w(<)W1$df!!EY<aYa*t6tX5v|jtPGwny&3U
zja^xp`c;Ge{s}Q*xnQnhZanWANQwvhWltj|%aVRbrB9xbKwSFUjmk_+hlSx6v4Ffj
zbkya$X$3XG`LWo^>l(i4{Kz+Z($1jpMv_a{AK#AfnYLLcu!BoWp%AMs8G@nwCK0#f
z-FobY5;3!by!`WU(u*z}za{C!8DYa+C)x)mYn|yu3B1R1W=RllH>|n-M7w|Euf4ZC
z<QiB$8vXF;aM-{3*WSzWVGt%*IL|;+{0B|+9}Ew<SP^d{CAeY#j)YQ$PF|1UME@b4
z^3>#FXi3I!lJrA7USPlwLk>E(foLfx#ULBfvL>jJcIbJnCylZQ!mKgj`uC{DaJP7y
z=d~oN&G{xk^mBz0WsHzVyd~jZYG<7gx0+)7>hnXoxZA7isb3cSA%m9DI%b?WLg|{s
zALy<-NwiFWmPmjVoM<7VYPX?vW}m>LB5F0aSP-NES`65j<aHeXAsN$}$KD)u;>?<v
zcr$7ymS5||CzMiedOBe}c3z%Ya&6L{VaKp^x13gKzCYv()|3|cf-byvKzo~ReH%Kp
z{9;;NEXB9eN+%a!69Zw?RpDL4*Xe0w+^>gDV2ORL2rF80z)}O{|4OvN+qguv&2kMv
z3w(?rET3>XP7ZUWN_^cS$_GzQb@`VKa}_Pqk)fA9u`3*}B*fzd9-O=OplqycVtP8b
zR$M=Mk)cWO_R-?;U?d)k)eX4XB#SG}N^wuQv;Jk*z#D5c7s^hN;;L8Ty;Aw<H%?yd
z@`u{6)6w?>K2q04Z+WdbOBO*%8l@3S*NR&xyP^I~VZ03%J_4^CSu@Nf7Ds4+Q;Q?i
zod2S)`JriOLVxzU6Kyo`H+-ulFS&k9)slkys%~0g{B)I`<{DYoOTY5AucOue?<}^F
zZZS;<Dpp`QL_gS@upa$7#VF{dUw2*mlhk;=lIf`h+Mrof-uANVc6uoQi)ucKoVL;v
zr^Py{(b!A(bU7vIOE-Z23gfe0`lMiKWA(Q;SK)r&RsF8K-=}Sy!yq>pruCXz#I<DT
z#?q$#w_`|tqWsKI%=m|DT4KM=T717=7^=gd#Wa!VY3c`_a<T<?ha$jk8b*sY+LgH4
zR}O#Cl{<W`_Sx{~T*>}b;X`e~C0OMN;T?@DsV%;_mKeoM3s1YSFIME`R!mnqy*-SI
zHD0Pv&ak2IPU2Szv1vx`Uo9zZ#@tpooT3^FTg}vN%a&=$Mo+KqPgNS%p<ZLc`>!=B
zytp4I?Eu#U!Xk_iXaaLAkEZ|ld!nJILZA_kt;o${vt&tW3uJVoa@n84`H?2O`2ykC
zL?-yrdF4(15?VvQVR*nu$kG?PzBfWyxH^9>M1&xQ$S@geTdHN?qmshI6o{hB;tlLI
zS#fPN<3zca@UvNQEjW&V_Gya@y?Qa0*u<l~zK;=Jy(o!43r5kD_YcC@RJ3F;&tiZp
zU#?AE&mJ|EYrc=;TE~Q^is=c~=`L2!zOo7}R!PFtfjeo@!(>Rf2M(U9xv;@jUotgm
z50;C1j|s2-j%bmdmFcr-fgk`L2hPxN&b3tvMHf~I@npVUE)sh7u3Q$^x^he0cT|&=
zAIBYA`CZ&UeI>I4PrKrdKb;l#{hHyf2FyeLO^STe$oSQt(D_YR&%z5`Isf_=Z_vBk
zjX_q}Bwwz+PFN`KGJ5_@4E?W>cX<A_iMVyaw^{H!a9K|InKi@X=-Y*u{&qT#6nBz3
zK4KO}TdJ^gub>EY={LQsbpl-}Ua&txxL61fTV1tyG-m)Gs0_YIN=Wdsg7PzPS3LIj
z9H$AKZ&_R$Vgey^ooFJtX5(r>Z89unf}hLwJe}okq*0bu<)EwvbQvsTH0hzZf#UR`
ztx9K5DqS)fAN|9<uubtqVv@5;eWOkBU`yH95SBQ`gzIi0?6wi%@X0>qzmRtzb5H0y
ztwILe3~$x(QSPemS7cY6IGA1aL!!6f9xeA?V#1QrYD(#fhHt+$`f6rl6)IZ@^euC}
z>kH&2jtM_;EzwXp$`*<9dTotdC37{730J*hwDi{R3pP@#Qj4PUO$A!-kBJnOPoNee
z2T*HJ3m{ELT54?>(0@Vn)<(gLU%k;dv|iA*4E(rMCEy)X>@K9clpZSw7i6|Y?oxvC
zHYFUsScFLg9oXjUI*y|rax=L1VF0<Q6DbO9i3{Kz8hT7r;cKQ2((!Lv%trXoXJ|XD
zhEPMnm{e&@!dw}G7bo2Ga`@u#&7CoX;yN09nJ$(o@hTj!4+2}vF!&$CP}hcmK8#k!
z2VJXw6g_h;&QY`Y*3idsrNJBiixz<^=y?<^_4vMvD+?CT-2CUe$ylmAl)A}4^y>9w
zq<@nuM^tK=*5E6dnHmg!Pb*#h`w;_8@^NL81SQi$z`GG{t2M5U|GA)Q?cW$qMUAkc
ztT(H0!Vs)HH@QITCz=Q$SrF+9*E~#e5w1a8CKEbvRS#naXpL3TnDFaY5D_VYQQL+r
zi}STjbM2u0-_$9_gufJ*TTB8sQW=D|EdA~8DUL9BW{YuM_J>4@9en;PE}feb!%e^2
zNOovTFseNfxBt186%LfON;x3gt4j{j3&S_3v>-h{e6z=o^w;5=yPiUN4(SG@XOWIX
z+A(}{mv*H8LAr79FwH|j=-;F_0XqWBhxBiV0qv&X%i+W1cD$0Y2eq$2yH-Xz)~q(X
z<@Hyxlsgt)to_ZCA}=~tudl^<RL6QeL12OKv+ztn(rOL-?FSK81=`hSuStb#@a3HH
zGcRPhUZr3&cIN1r!5IyU5=OZfC9cR`lyoqAQ8K!}cH>zRMt7DJd=z*mN0<L1f)9Zh
z9e}4lBwA|#`Zr&wq~;qF{(vtn7fOe0i7TV-zx0*Yt9;E`sT|CEyeTd<<OO<Pz*jTf
zU!Y}eB7w3!@%|Lu!iMlRvln*}Xjgnw_$n%=0332yEYY4>d>FSvm=DNq=kAR(vHu`U
zpD?aq8uZohwP$yd0W8ZjqCo30AV|V+Z7Ks30yM4-io_tK6c=dS-XNMA>o8{%TcJ9O
zk5;Lgz@Yz$mf=1M8Dapl$PfX1GApi_E<<z)@^3nuyY9QVU;y`1)HHF5Sk|)JU=j*k
zJy1MDwIu_nwp6>}YvXzj*@8hiWOr-#hly8sbXlBtO!$l2C@(##^?o|bB`!zkjXqxp
zmwM_(=(A||tHnq@^c~(*2)EOR?+UbZ;enezl+!LS;)W3W2XS2kAB0F51zNA~NfEFj
zg;5g#|D5pQYddn#y{jXG(u~%EpmxI=$)v4B<l}Pj<(rh3M5tZK%w){Z$_YC;l{UPe
zYZFQ_2FU*3>)%u+Yv-m5v6sdNE)zY9%R)5Tp3Eu#1u`Z}54viC&MxdGf{a~=nP2x<
zE~MZj4`OR)9O$kR9vD&=@!;b1<iX2D1#a3SJ%|fd4mbA=S`f>vK6DAV`8BEuT_1w_
zAFBqVQgQ>j))U|7T5pu~)%yph7r>nl5FOPD(Y@Nzdx}tI8j3HBtfU%WIybr~)_hQ2
zPtAj|Lo6tX%7#Q`bo9cBq@%hdX^)r)ZoH6EJ1wr1R$)_k4pTt2Mvc1=AzUg~n`Bo-
zGo2qu9#P&I(oD07o?D2PT(9DX3?LdY#S!v)E+HE57ARiuiQY4O?av2-5S$^}7);d0
zEO<0AkzgzujEt^{_gN~7)a1N|nxNO6Cnc6x>G>qlNw1z=t*+9;H=hlm!iY`K)@wmr
zaC%-vgs1^c7qOUq7JD&C5QxMDsi&n0I(Ax^!F#0|5hs8L7cy+dmOPyz$}jW;4|d|B
zT$Ek;29=>=h_N6|Gckn}uDa5U?%|t%uIFaS;Ic)M>1VM>DJC(JM>K(~<<CXnk*{CK
zvOAf_r^X_D^i%ZC8`tyTH+A2|3DhoX^ppKN?Q>!zx62Kom;DdrWw)~qIPQ_EP32-}
z=JP~nQHEQ=oAeulBEGrvA>J<&b-7gBg}q7~oC&(jtY~o_F_MTud+q<0p`rGQh6>5Z
zS^AH+s_<c5VJe%zeX%Qb##G^43Iii2SHC^z=|{qE+{BL9cTRi&Q2Aj9S_?cPPRVeZ
zx{L|`mk7&C4cB(E;i)u@fe{0u4e$Cf<p<vuzDS=7qCucKNSB^{=lWWmPgdg-sy`Dk
zd#ea9h?r4<dqK-+f3{sIg%>bVWPC_`5$AWkoAT74(qpF)avc-IJSzk`8H*WD6A@;8
z)evI#?xkOmD>KSv*}0vfH-kxrV#Y*?UpO9_?o98%byf5up6=k0_35@{F0Cd)Gb7hB
zGYRt4B>M&u#!MJy%D)zQF-Phqng~iQHy?9EEMYa^MJU)~5nh4uc9TU`GGsj)k(Dkw
zYD89$E=_Z~2!cTPc?c_u2%DY(VfR{u!9(T4EyA7`=TU~u7Htf}HbR!Tkdr*oj5TFV
zxMRSVu(HHRa^uUmq3ycKRZVlAC&IX|>62sp|9N`f;M|A_vl<FC?@5aZ-NuCHz7R3t
z^8ax#;R=BT!q4FygGyYa{!Doxvu2i7{W!hK=oO}uStx%kQeM_l{kVA7(fha%BJTzh
zp!8bGGs7ZL#`Pv_OnBBS0t<u<D8)75auFS@G=r695e=ejHOg<Hb1u*2a+fF%;xRo4
zx<v@e+9bi%-wA?ncq~SbpDpD_xLi0N3i?VzFZ&`wGpmScM09{AStt+W#^L<|AA&%P
zl4!UWj12?zu0v*Skhi{9PbV21nVmo<?2=`d%@So%0Z{h5(K-+l@R^gDKh46A8!rwJ
z5!shXS<(E%1$`jA0eh%6($o^~@}%R=!V;LX$}l5%&mtF>tJ%^PAvf(qF#(T+IYs%*
zlPvgm5Ij;;9>l(yvJkc)%PuBcI|IUGAC|%%6MRud&Xip&5Pk;6VRc=tBa~qPN)?S1
zWRLYgXoyyj-bfQ+WHanuHf%M7?X(EXg|O!>wY(g%o)mduSnAgfh9$79U@e3NEW(l@
zY_vt#We_&lB1{evQMH^QT^tCnp(cpPn%Ros`GQ4O+L&;e?1<7ZG~pv+n6!*oGs@Yr
zwb<ly$Rex>!rrt9ONFp45yRwlAlhRyvWyA0>RI@DFkVr`-i@k@xKpBi&{&V9k-sDB
z;&AakJU%*E{msqj;~C3HB5sUn4_9BhoCiOlt4!((gp)Pm`C!fLBhZuti-ZNVgUr9&
zwTGV_K8Sx`aaPC?ul3`Da<}95A9q*}V#3<aMEybZ*9ehY!;4My#Fg+5373-;w=fj=
zO~7A?&|@v_Wi1JlWNpdFb}^AzQkb-7N&LOo6x#J+qN8PFG4a{r!V1n14Y&MjCsKhF
z?85UItfWkHRbYpyWWZA`JX*s$zg@2q0&usEDcb;JuTPf`#A#PeLQ+V37$52WAEU#k
zUp@SDqQtHi+CbG3-1o&Uss>5M%C_(gYwL>-UW!d3sK%m*^vq{1(rX9ndT@5@(0Y1a
zbY+%>>J~c3SQJkw9dv(0biR@~wV3(*Oc-vijz{p>xFTf!gYnM@7du5t=A=sbnIBUb
zH3t2A0jArQAB+%AW<t^QO!x*9in}-#SjBXr|1+KFelTc)MR6|EiQdI@!ttQ%tLX5Z
zhS?oVXz{=m?178%^uFz|AU@OW+KGnxp6tQ>G~URJJMyoK*qbIQ6fb%i=IFSWcQx?_
z$0nM+(PknFX<u{X**~@*RAc+1tS2ovEF;;8?+MxBHY;wY;-N`Y@Sj2QT7no!#SBU^
zJZ)hZONM|L(G>R`;bQ8D6)vp%c}WN!%;(D)Tvt&~a)7U7E{2SZe-nN5!n><^O!!V|
z5dN7`HT_d9SdEngT49XK#ZCPuE0?*NNyy4Au8&uK?Ai}uMJvB^{qbp+>%hA2XyrXa
z)DWJ7umxh6S(YUi18_$wj6uyC(Xnw~*F^+28?^zvqNU`L@={ljEDUY2tRZj5+VQK2
z-l}a_OMYcVHW>PeTEH{n&O{1bB=~R#!-5;Dp2WKI3h+J!-kMQvtjUO24uOU|I3~P8
zH1U}5d||+C-WfBd-7v%WAzx2_xT(5i^kKTQL#enn;AyCrG@yEEGJWbbO1TeWYvp_q
zd~{Ds(y_<n2wQRlnuSZ~$&oM1)o%EU%>Ohsy#=L%NfNaRZ-4BC5W;o(JJEWuVjw*R
zp?AnwVg+~-B#-#dP8-B|2>cv=hzwEA5!8r}v0qCx(ps$z7UHvOB7|H^r~o0vOS~8A
zDTE?|+#gao3&L~6xPMTd1=UAF(IvVO<iye1Czb#v+vGeh<jBxPhz2#R1$aItuy&fO
z2{)m<WIXo}7Da9#oP4F8%aV7j&t=EqnJm^Wgoh&iByKqIk#SfHW&h7Xcy{}m@F;mD
zXbii+NNu!P#K7C(y>d18d_KD$in~261O~z{VT9=^@i`s9#YiRR-WX8C{~S7hpF8>8
zz%c!w+g;N7Zq5ii49uLaUS7e=M5!VyrHt|-WA7b$FL$}$IC_UZxf6_#KjXHMdRBHt
zD(&N<Yb<RU7!#f%S{0A~cp6)tY=lPY*;kdP;sJ|@Ic}&b7M}s18z0@FUnw+<)bH=J
zEC2-<|6AzRisBD%0B>S!uhfl=5%D-P9==n5FhM}Zhj;4ttUF(vY^0CUSGqJ~(<uF}
zb+@^Dt}Q7t0u$Uv@FjG^KheE$-O-Xx@BXzwzs5!1M)ywhuWJpY7-I|dvNaE<(7&^K
z_s@m;<t|A0#~A&3U`Fa#y@0sA_q%%||5oGNHLiEF#_4|(5?V_VjD#ZnPIsI4-LXab
z377k!;l{x6dLQ>g-HgC^eSBh@*Ed6pH*$}-a*ej}`k8h4^Ew&d-=|Mq_f<)%F=2x4
z$4Q!pw$~oRa5v}5DqnD3hOuXYK7s4jWupEMcfa?HQxo;^?taq^|0MmKd+gqK^Y7Q+
zPfDEU!|tOEYwk@a>(@O{a+|yNhwC<!%yySo7zd_eAA8%8x&T_R?Z~^{fWFub{H>!i
zHoM#pKtieBH-25*r%gs#neGeTF>RiA-lLV?M=Pe!^DcO_WX|-;z5u)x)8<c~SLvNK
zZ$ag>c_q_zZUycCL0>VgWX`miAdf|N_wYNs(@IO{PhYTrWOj2TG?ta=SId7BS-z;B
zG=&X#H)odacNvFf>t%f_r!S}^c-Fki>GLb*PZt^FOXfbh0B@veznMR)lG6Fpr<EG{
zbM)T5RCW4QJ_@nIRFrEP)gHn1$Q=DgqiwG4?SX9w_-UF-1(l|~dsDfd(An7b95!oL
zHmvhM)-&kItL#82p14K-Jeo@Y9@pv$YYFfG<uAqExz2c8Y79I8Jm?@OzQvg#Aru2|
zcg7QA;7JyPu)?l>9xbWJSx{1K47|k|m%Fns^-!mZOX!CI@o1eIFDa0CyECqP6>bC;
zVRweTiS#B_PO18NG`*G1FEuPB5Cd;@#=AyWL^;u;c~YGjJTU~NHapX&)jH#sd!6v0
zM@w&YD)4CC0x|Fyp6wokz6XhM@LZ32z)nG&;YWc3Lq-h6S5!FDUlD^o(?YNOPYN~h
zZ{i&ki~rE>gvU_Ov)0+5t5Pq)We{K0dPxBQkJc;Xj9=|lxY1ng5X4?f4T)0zJeoI#
z!C4`qxHP!41>>do^(|5K%84E==h7OIV69IK{KniUK|&qT_xHxYo1Jh3@l6#@1s*L|
z3@De@AU8h-eNha&*%==|uu~8Z@Wx>9$G`(I@Rk^OdjvP!K|TGFk!)ZnLP2Np=g|gQ
zI2B4hzon6Km%1uHHwIo5g-3!QzapxDGWdD4+hPd1En1KyC;C`&YK1)8)fGW-Tcc9}
z@D^wMcCRx&BH)bQ8FI!)kwH#DFe-*YceOhUD)7g^D`McJn43)bp8&0(K2ktu^5@YC
zQ|au|HXfTB1GgxUG6bD=Z_6e0q~D`W5LA~cxIc6WgP@-r1D{gwO#eucGahI!b1o?M
zI^(4=YCNOSnO=w&o-_P44nyvvmwE((JX%EzgC9$E)>9cn&ccc)dezz<ZDDOx0cG&>
zXupYOkTBuxqTJSdJX%%A8DEs@grm1Dip9|E#Ng2u7dhik#4vP84EiOtkmJ<bf{o4!
zmV2G?--ev=nivMH2t??W|ABb4r~HuuI+H)(0Xn<1GpwW<IN;CvW8jxoO!l_tikumq
zYj?(f7l?t!ps%fUre9Mp>VIj?)_I*7>RO!fP5u~og)?3sVmv4aC__JwwzXNLmqhh@
zUT1u7jGBGycc%ZiIU48o_h|e5(FK$vgZ9^p^b&*q7{e0>z0UNX1RU|8_9wq%f%d2R
z7<jugekc?JZ*|81oJ)A{(zgFJ)tTYbMrZuL>SN%o&iH3u3(o!r;?X{<w-nH+_<6L?
zo9X0ILqCt<iNE-r>Hku3DL#o5w-D~2;EPsg{IB&f@MeV@-lrX|Er&y@oKp4kXoq7|
z<ZoW0xwPVcbEpW_<4AoJ{f(5v&!hc!kw`BI;?`z`8!f9G3~r5K*mohtN2&UGv}3Jw
zeyPF#be5BrnkwkkI?Ek-kB=5WTAD0S1Zim*Qm}xbAXVNDq@@)weSpi8jkfrtyup>z
zt17kr^B*mpRyhsn^tsdeTTUOXC}nWwqaZ6@ut4iy@@RQEmdn;XmRMl?J|QX1=)Fcy
zi_=aP7``?7px||fNP(v9t;e4(IONihrU^rkCj+mu;BK75^Z%j*zaK*)(L6qxntv5P
z0XO4Na^nc_Xy^QtYBy?Uo5cyf=FF)|tOEK2j9+taw-VPs%eXujDcMU)uk=&oWbf@b
z?D|@WNYl<0$uzBArsiM8k1yZ$NlIVyaHl!0e{PVa*Z7f=u0)xS(p3N~T9+%OLeRN7
zw=?}@PE}&+0&oWoQ8jns5n1k{Vp6BbR7zF5+k#71x>5n*=SnFM>451X*2KB|!vt7G
zY)wi^Px0hEUL*>@QJ0)_jj?X6ex;uB0CPNOG_A!48B(ic-a}Hm;^<trPVcW@-7Mjx
zIK#J2pLnGi2oi=#qCu#EjoNj3w>a%wixKFQl%DBPevy<KNX62v$7MX%DXDwBM{92~
znxP}usgX%U0=mw0Vwx=ruf2@h!{gE_BqU;WXqu9nx1g4BKhn_=`cCzXk3?D&!QEbg
zW9TMN2O<TDO`<?^okBX##I-ORns5ksjfuND7fE`p4Cyl#+{ZX6UT-n9h4Eyh^}$qC
z10D{zaHlCq`?Z0wfk@vpahID7q8Guny%9W_ag7@FPz2Z7SPs#D$v912U92E6go2|M
z24!ha;6FxicL(zLxyYcO&6@Ez$35g?gg#+|AcxmbmJD2UA*^CH(bSoLE>DCZsg}W&
zpuO6}weyD<4*~BJ!7nQMO5i>dcj>uIkM$MTun3;a2E}iLe%HuIK~fbnRDj`Lvu1e<
zjxe4K{J{vltC{f(;BzCm-Y)Stl)Dy~xOTo(;;z-emk=)MkKQs_79=8dJ!LYu5*j5=
z1Ey<J1b0E9_{|0WhKXwz72W{6DT0T~n4UajiHSIhKk+L-!QV^<m)<O47q!`cNAS27
ziM#s(kHmy_k!!4d2K?6uy?cYCk4LPylT2LuHCN(67c6skH4E@Kj};sTekC$;+~A8U
zm*qt0$z$|$r{frCHW^=hQIHHgKSH0-O4Rs~LHAt-|BHd%qn!^4Sd0hm5|csuwV82Z
zC^K=Fi)%pRhr7yxGr7Q*M{vEC3*c$@GcYus^0;+9*T4l{6x2l++^vk0g8B%qACb5V
zsr%Ik9+$)Py@9_K!4o<dM^n207{QaM0wVq@Q1BPCK>M|d6(DhcW#X<*lUWc__uoxi
zyU@b;2H?j{+?DKQ9EQ2in79`1khlv?7IcRr1sB>Pg5r|Qw#-}5%D5k&x#(`vyAqY+
zqrh*9;PK6pKJgInp(d`K_exyz10Nx9s=r6OSj7dED0skRaEaKXqITfcYXm$-KX)nc
zNWa&94G37%2!AXhC%H`G-5&zJD1vut5&lQv5fm&l3$zPOEC~HOZdJq+m0re^fxlqV
zyE-Y)Z3Mn0g6jcE@9GIWa!qk1`y?*<f1Kr_k_?xLA9<qLRLpZ!lw<%u7*UWMlH_qz
z<HHdg8ye(~<ov^wlUJF;crtK|A3^SZuEcsSIE8|LM+7A`FunnJBvxFVQYG%HMo)?i
zEUttyraub&a#N0WQOSWp@mHF7&=p@R8QfHmZ5Ft+dKLtM@z+Q2<Yb8_qG{r9j^K%Y
zrbilYnV3}OG7i4@J0kQtJSqDh+9JL%Qjid02Bh(mB6z19iBns~KWK3&_{Gl;+%iBV
zcqJUy1blu(PUjAZQ&YwV7e@++kbVh%6g(Nh#f*mv(8lrWBY1KVf#?N3;4hd4@qG>o
zsK$SY(05uX$Te*>@OLCV;vY}0tGIv|K8i3T!9x1QZ^QAq1(&eq>I?iN0)ZzKYHBWc
zIwJI)z080LBxn&FS5@wRP?V5r7HGe+Vr?Ywo+j>!Ym<WF(Dn(IScz|txQplqM(DA1
zQ~ovpmje#+m~jOd9|-*kcSjhKJ7fV}ToNWm@VLp$fXXJ6M(_k~0&2^I$4wmbaHf9<
zcnw?~PkCHxRx<7dUJLr5nv2zP0g?pk08+(xZ{V+if$8O=ELoP&98r9sp6SuX3IE58
ziM+}X<KR#D+N5^{-PRgdCKTZf%z*x#5NS*N>tM!@<I0^75tNuJak{7^(w%oQ<)iOI
z60O&cHbD>nXMn+SgOL;v1)2r}5(h*SXgQ3p2R=N4ck(m72Y93#Yv)x3NWS&P<B+7M
zJHNy!!HA$ZC5UP;J%YPKte^mRMFj8E#5g>d_?rkGSI>9=cqoGF4UD5H6ITMKro{Xo
z|E!z~kR)0!Diw^61zsN!l$axN*H^&bG}|~WEx`1XfqxL8cU3WtUX%DI6W7jn$nj6Q
z`U_J~Ugb(=NCv}yn+z`O@)SS!NZ|hy!Be>HwMyW>MDWhw7e9=ciN6Bp;MKj1<1YD%
zZF)iX1(owlDi&!ArdLj#Rk3j3)cKD-j;%aK%{KiR<BC^wf0svROr0@nUTNv{g|kYg
z8`ZDqw<MNNn>+W>664>m=%Wn(c70L`XlBlReEQT`^Jd|HsBPDuHO9ZHU!Nd${}`{n
zs%KqB6i`t<twh7A*bemTt9pKSWYmtJsg;jT<sCuBpa%VhWR!`0M8+cxdWNy2K_6{=
z-k@LgZn#13<m!ywMpJ3i(9~IF?<VcgySqH3gRH=E(e!BxrW-w9*KbWNowq=krBy!q
zctr(j_QdOYq48g@>w{_h)m-F{>v5R#9h?(B4@m-!Jj$yd@cB3=+^;Z7fp11)rB7je
zs|^?J1^VqY{t`nj5#py9cHrEqKrv9r55!?N^i!r+hGrm71|4SHPkH<l-imWtUD1uU
zZ<A869N{`;r0&(b=eY*~wN}B4JS4eknaOIA!fWfgcJA(We`$Dk>fJNlq|l8+RS2ho
z{fLpf3u}{c2tp_EaorjBBc-30{&=*w8Au$=iBm1(Cp!GR^au3&kdS`mh<3&g3jFej
zVXELWqh(;{?wN5IPPK73Y@UtlFhU!X(g%99_z^-xL^QPpRK|~DTvb`&1)|D%@e6Hy
zKIU6&<5PGw^F3$dD`UR3Ha>-~XTI$=zFOv^n6fsF!gtE1i9dmI2Uo}c$haRV{k-(Y
zqa|Pv5>J?I9!ppS+(AwP+3gTP3FNQQn(_D>dRk$kiUZYtUKB!EVlN~P%!%YQY5<!N
zN#43!5SB>+qhb@K^_(8Xhm(@hdwR6wm0)t{^2zl^=mP|Dry7*UM+CdLbvms!>c=Lf
z<F>Waffy8@0Vm(uOwvihY8-uW;1?q4sG9Cal88g%p72JT6FwUWRe2cY@nZ}0`8e-p
zEf9eRhAP8*K<{3xZv#Om9CicV2j;|g8n~s;h>HXn@C)NYK3_b5caAsOA4p0s#aUOD
zs9MX9JW*W6xX9yNq`<RrZq?*Pp6L59t~4n;*YJLrl#b!4bCJ=WhKB51O2bWFXVrID
zv8x^eNYHX5q(BL($2s9OhJT^x#hv#9u$qv}6bBhsoC-fAdsXLSHa<ZI$<%AC8Wr9q
z`BJFNs*mCh7Nt;&Tlo~8%zT+Pz5w#XM;*b+r*JRxkw>ihnvf^HL5!>VDcr|=D%xyK
znKB=I){f^#p5)bvra?bQvG;>krZ|n1IF-Z##?LYCr#ya)ciE3~E4`lzJzAGf85en+
zixfC!Uz)K%?|gY)S9Nhxs+gqfD3CZ9-?hl7&^vc8?25T{R3~pm9xA)8LSl8|5ysV!
ztemLuTBGG7^t`ThpreMBcBHzzI45~8A|YJzMexnQta{pzC;F|7D?JL|#(H+3+^VNH
z^X+0>=~4J@mdE}fl|s)ujI$mSZ(=?BP;S+e!+iT0S9%nFkmV^o8B9-2NWzsKh2!EY
z{Prcvta`*y2tOQVT<KBxH!M%-5#^x&mT{#=;jKbXu<Hq%9##IMO%LOq?lyY%r-wQx
z+3UxlX{j!SQyg0B;iY2iCLSSh%s%`CfWb=%3M!1Eabke;>=kDiR6TYhxzZkGq@Q>p
zgYi_mk=z)mb|V#@uXLu?iZje@QV&9+)o^w|Dm5J8ejKEe@w6PpnMRy$9I7e&I7iLW
z>`kulqlSM7M)0%~AhYrXkSD&M7#EsA!uVwwMyONg?!}iAkCksS^5DCitR!6VDSQOu
z%Dyt>iGCd8ieBLXY2W3uZG2VCH{Zsm@ET#C`|<|CUwrv)8-IZLRhLutY+#(an$><q
zzu$%{`cqP0x+e6w)4iO3NZOx1gZY%65b~&Z`aH%}y%io}ezre7hW+Vw`)gTl4ExjV
z_A`AqX?I>Xo$XO}Hb{BhD5|agP<W2Cv)f8p&u(jN{Ef^{L#~xy;d>;1_f*N>oq7q;
zDgDhjho8D<BeC);d?54JGQZNJ_zyAvRvW*<4@mwVxst!f5T;Z7Et0>-2phk`OPRlg
z`M<I8A7TDuHh#u4;w67ZmE_M@ZsQL~{)|;NeuXzm{wvsjSJ?g6D*3Ot&c?5BAM>;S
zuCV*Bjrq6R_!ZtH`7>F6rd@x#<j=J0S2*j>Wc`_T{T<A2*ROEae<ka`(yqTu@?UA!
zuW;6XCF{S^ravx~`EB}5ob~tg%J%Eo2lQ?n96xaxlD{YA3D2cG9vvurg7jZc{HqQc
zhkNcvp_SiD)E=$pr;ICpg||xntNfDxszRny`g4#6|5f7|SNsaEl>EKef4yw}i}OkT
zUfDK&g^y(ZMybEo`%I_w7cjr7m(s8B<C6dCfaJe=wvB(X<iC18<BDJ5E17>I^Q(4J
z`UA{QQ!(<Z;#c?~$?wgP{9fX-`o98s_|H3pamBCj0_NxV@!I33iusjYieKRzKUo|<
zS@!r@DfzRMU5a1fW2OEqd7a41+Rb*V`fp%<)h>!(;Vpu{ID1AkpSsRx+uNf-%FDK2
zw*rjMXE{obqQ@N{;@h3wEc6v-)7?Tm4xRYma;{JI3CiGL``ztS>d~@)VVvcfc!!jG
zO-~^=@0vkOr|RD#`LCg=ptb!KF5}L1jS=kBxkvFet8DCz%>JAWZ)SWg<7`%(qTg!6
z75!c|w@o(NHRol%caF^W&gXm?=Ve&Ad+(L`>*8hkb$vNMlJj#pAL9H*k<Yt+HSBP3
z^YzDVcs=rPa}IW(c`yv+j6&9-8FHpD&h=HzkTX~6%~>t<PRmjCSIrmzAIVqUK;e@a
z-+|Q9JSzNhY~9wa=#61RI`?qroR`(UAy=xuVKV1Kq8jc#et{SFDP-|VZ9uB+GcFpB
zJHq&Q##J=~j8BTjP5K(Cx6e+oTIKG8=EbU2-i@=FUg<59a&ENu9)(v6d-HBwVdJY}
zJ{5+_E``?%{lOc_U5PlPzErhJcH?dv?nfTYapOCTi#+Zpe2mj*L2{&?RF^0R{g=S3
zVG%%{<WO%e(~LWZbWSV0@mpjpL~-p*bc}Ije1P#2(YT`Tn=YN&mxt!QR4J?64$0ql
zh>c(24>A8-Blk`GGpfE=$Q9{oPV1$!`>NQJP7~dQD%F>qM*7%Z>P7-Tz;cf>|4)D|
zcDdV_&OT%@-Y;45_v3o?v(+m;S@QR@)yu>=$omD10P0iRkAlph(fd)5S#dwhUCg-1
zM;g7~QpRnK-cJtQdHq!Iv7giwre7WSEPgWaJ))k$e*0Oj<V&T8(&Wc}pE9oWG2TDh
znZEyZG3aS%cc^Fo5dy#ClHSn2&?d-_JPhhTo^g?nIHte6M&$J;M^i<W1H3pVzWGQ9
z=Rk?`;+*i6(gC?Tvb5}_R*s8gd9KnY<)yls7^hK&Dx@5v@cqDU#liY<h991n9z;So
z>nD`(0c6vy+Jl!c3?Si73{=60Cv)X?LI_fkBo#z(+@xZda}SV{kKzGe#^689xQ#!L
zbUEnDBZm=gr<XmZFwc)N`VIoonLm$~_XsjnX?9S&mkNQ;Kti~br<pjenkiU!%u|ss
z`Euz&vfx{e#A*lQH<PS59JYqISvQL2ishr5Q-x&r&3!p7;xuH`mtq=pbF-0qx1b!T
z8MPsK2AT=-j4vYtF<F9tg9Fd89c*6`2gEI8hs8b<CyWk7zZd85!!0(yCMmqDjlP-b
zdkGvph#MkF6<j9@A_|m2eHd5t3ZEc`%HS;&NHcNR9Cyn?#<_uz!w&}2P;~_kJ3TcR
z;Wqj~^MP3^e#d9XL(U+QpGXgP*)X$Um5t#LGtgLP5u`jjXf5MPj-s!N#!dRIRyh;2
z+&c~cAd7ZHGnn`<z^Pfe#_>5gC;E$wbBz^#s|>WvTfHbBii4Wi{CTun{YL7OBB*Y~
zohEhGTj$nYg@wCYPk_o=LpJQzAAvg<aO+P@&oxg{^vYnHVZKz+<b}Qr@HrUf8x^fz
zIlxyKt;fW1)g$wL6(Y^_(X#?4x$9MheGOF6pzr-?MJk4U`)oLO2H*Z@15El)ZMdRW
zj*%^vYtoZr5;gM?w^=YaL(UrpXGa@w2ahg;Nf5P+iZO)`6nvS3^HJtd^T88T%?D##
zgRk-iFO1eOn!CebH3MJ`CSGl{V%LCsaE;+jgzE;^f}gb6f@<(KU@u>a523iR#FT2g
zA%t0L#IZBvvKaK;1#aoCilI+5gYxx|{x)3E+gxeV4`O<DfC}azLx7vX5B;i}4Y{2Q
zBtry0W>egZJi6<U6O1bb3O~&_8HN@%4WeMNUQuWcNPD4%oWqI5b&6pqSxF3R5N|Kj
zXm_zw6AYCuRpUzT9XxOi&5V|>nrvt<P3vw|Y%<6@&S1WBE!RXb=G$Cr;yx&f$HB3b
z*o<>jFn>G}s-RuYB*xi;rkoW5N82a{u1WqX6xdxz3e-@p1S$GDrnh-8f3r;vJ-R13
z+pYA_FP`aB!7eV425}96zhh;<xu`kt_igm@4I?d|1|(~fDty0<o?g$Q*vLO<D@Z|}
z@J|_6H6sSX|6;=x{RzfZ1t|E4{wE}fIP9K2jjygpS*jQ=GK0<4w<XKV|7|45LEvrn
znBgY6ZM==X1$h{Dn>{uZJ{iRhF?QR0A;%IkieaHBP`xPk4u!8}oD4>(nl9W{$9S#{
z-+;W6;@wOy<OD5(-f<Rm`#38D=-Csu7u)C+zQRV&1K;h`8OYPhP{Ju@hCLF^pe8EA
zW<)cX`0^O|v1mD?k0MX<PekLUoF6rO^wwgL$#9w(*iyydCzlbuaGjPr`a7IMfqxL=
zOmE_RFXBI7)FxmB%YT^Z6#o(C|JKH@@K!mm7*1sCaERVY8Txs&;ni~fG5m<pOgrpG
z^fbI%DfJocQ*o^vu^VI-d)0U~f_l3JSM?h~z1`vulb(9J1vlxB19!OUk2nMTA<cL)
zrE{8lq`X1O97)b`ARdW-Nsrke_FIiCia~*UR+?swtmm|eCQ*4K$(wE*(wkbm@IJ(l
zHwl-m5y7zlhC3_womlH2ad+ZANThxt?#>lpad66=&oM5=<*Le$l2a!4s8ZqlyiseN
z`A5|`^WT+X)INk=g?CY{$KtRx?p?J;D&3adwYTmFtSv}4YBP}?-BVayIGWnTQv2k3
z<Pj62KV_V2Z{jr1qCwZDrf`B0C>GnE3Kyd^;(!77aDOgb%D9vm!Pm>VUtu%Kog{xI
zBx7gRm{g;s5p@{TTiBjCrY|@`IBd3zDKJ{k={*LFN0GxF*_bJebJdW;58}@V@p)q|
zB5SF@#3orjmM}WF0w$he<o<xgs<A_2@ZBDRZ<39^8F|<-mh7|YQFxiCc5o~;jm19Y
z;IVWKwD6hum%tsGc<eWf+nRVRbvuWK7)yR})19X3DLw!&_-;~a?I{XR27V6?Tl?Id
z$@EH&A9<3K%{UtrukhZ$O*u3@5kD}H087pAm0$dTQ%hJ4Qn(+uDG2A{2l~l4al&T+
zx5_U<o-Q?a&*K7RDHRZ2iNr||b$+WLQb_c*G3Z}pdL>`c@1*I8lLER3I^g4y>yBfK
z={WMBLz9lnRefvRULp*RqnM!Plua{0#rU{mj7x(|{2r>5h5r8I$fIKSbd9Dr@l@ar
zhTP)?{=8;PFHZ7c2)~E!%;Iry<RmxYoW%O&UEDnd;x4ZEo)BP%ySRJS1AiHZE%NR;
z4b0jOEy$DHUl>>ZR(OZlvRGI|0pwtI(Rk*Q?$YAhkcYe?>e{47$y4}bmRE%`hx!%S
z<D>y}B##Dvt2~8o5c1qbjiMdLg7ST)R2FgM6z#J~P&kd}4uMnDsv@HZ52EOf`(7Hx
ztiB5%58Lh?!MLic!beKm?%gQ(-S^6E0KxI|KyL||$?Ti)3mKPk2AKE;;8tJNBM-gf
z4<fP1Q6V;74Ua6x#J?5vcbKuQ#>ep|SP(NP{5~&m2gUdKjlcuAgx<GOq<QykWq#@M
z0r$5e4+HPp!MHL+;d|vcejm*%9pq0?!NX0MkP14;n=l25r2!I>882pB>d{Pmh7DJ8
z<_jFFH%fsY04b;xEtWT7DY6#NKEN$BVHM+kq?$Is#PQS#Z(L+fAV-ja$`C)!N$w$W
zg?CRlE-sYr3Fqa7c47vK9eUM7FK~w`-o$}2k|q|&dFn*@NYOp9Mve*-SBp_0Z(<|(
z9oEn%k+U5}i%Ge%-jhb4oa|SAA^Tweq(a73y%b&~>piIz<qq~vY8Nxby!*+Q4*tAf
zXWWm};?MgtL_G`d_W^bA&;6r-TkR|$c8_+y-A;v15O%unKPvq<S>v>)OsDunnmJ`P
z#8?8dlc=vpo6;uRZ^~(-70&=LK2JFZO6&c6s<hxiNT#{*L+hpFhw+>YV@KvA#VEIW
zpk2~GGDAqb*`qx&n<=D^2RxuCC|DgdJz@ku(0jN8rDB+h^JoDEcB*kJ@R`t^H;p{y
zpnIC~zD?t_-tvxqTK{OiDJjUq%hM=2Eb^vM3lTnuah7M&53%8jegxw(+6GMNiag1o
z)=k70eAGPCETHCe2(xJqNoP;1kQ3=?8$f4m#wz4V@J`w7roDr#r2<o1xtuN$gmVQ<
zyhV1~X~#vk3l`f9pUT5Su{2zDp8+O54l=0`RJSU^IqWHZ1c_Cjk~0H1(Mvlt`Qk0;
z<%Q!xRS;1?SNj?q)S~7O445rBUE7Ke#K7BV4wP3yzVqX-i7ROU=FlBWnncLq{e+Sh
zXU@{`z^SI()GD}3Z6kehJ!s&WQk!Q?dYflVdg{1A2h&P7qQD8?4%}kUG<JRIF2?;x
zF(R3GBXZV|s-<EWO0x}?a~)0xOl#)?TP&IQ0XbBcekLbyrAI*TFj1SH3*2F-p00)o
z_T;oPQXhTG-5N_K9#U;HeJxYiIqPC@+FYc1!*t~$vJf>k@x917xOzr9@P1a`Q5eB@
zGkh@^@JN0p)+J`_N4ceqR1nPglyNq|#E;8yYsOE}d}<t;aoUEHv1G?DNG#nmxt?(v
z<4Hg3G38tYX6c@aekRdc9z+gM1LMrDEQmd?#<Q81F|HI49SoXD9&_;I%$~p<#=n`w
zpN&KGS7Y@Dx?Vg}4Z5sTwbINHptDrU#0wc$HfA7Cwv3OapQ3R2)VFY^>Z!~(t%Lby
zMDv+=6>w`XP@eRx7GrbqOcjlGyI*8^c0HRJXCF>&MV{nsjmAy=jdCoXc|cB~%KY-u
zUN%Kt+RKW;>2Sd<!|DSr?ZL8Ilv`^MKpq;)-a$g1RTj20ZW$tgm>2f47$Zd4ewM>E
zQsF(z3@@8&W_4!<#!ZIIXhF&~vwB6-tD$06b~L?-UuUJy#~9ZE05zV~Cz`=jOoouP
zTmzFH|8h$%k<A*#6v|gTip^3{s5liKpbL|GR+XCD%vvw*)@P|!R&vT9mn_@P@|7Hg
ztFcSbw=?~28$IK*so2`q1(JUDdZgJ{nEgOc3(h_igQ(4h2atzxb95x+9yUU?%bXbP
zI44Fs&XMhid6KFPduvXNhMdz|xDPkUbNaIh>>t%~bB08lrb1xO?a}lmj{iD?7R8l+
z&I}tT$H*LVp{26wIyh&ZO`@V-Xv4WB<}8kuV>)dq@NT4lt6~;}4F8R|ip*IR&8V*E
zbDm?|kJNIdpVJ^GlXF^)(Dj(f&p9LWb5leJ&h^PT=G-DMIgG_~OPRb%jw^HdMqsYo
z_LDjH2>7fKRYlr8+T2rO{BxJ5$nmM%E5@hHa?)d^=LjsHD>^{A%`MZ)q_}c&i^VG@
z9^)ciPG&h=a>`Gz92H{R9OXX>JTetk?OOf|3fwp(gQhNy<rf*3&1B*f22P6Sc~w`R
zmrpe<oHw2Y*aXj;5<~DqF$C9&cAU4(@K%YvGxHh^|73CYDE8aX&Dx`<!0Pb6dPTY@
z&#NG#uf@Tp;0!-}@q9iK!nuxw3LGItH-(Q)ko=F?`b06)Jx2VNMl<n{;Lm)l0p(M1
z=z@X&c(liku>A8fosZjR=*yh%2Z=+B&VNX4CYdic+_>kj6pwD^?*{`JAS*VYI0NUX
z*!)i!_fuYr;4Pv;h4X3Pu>`4}Ok^Hy0r6XLFXK5#9SmDAQa!?2FgXTiwb9~-D;MxH
zlLZ@NNZPBaxIo(IT44P5PTVgqI4+k+D#<K|d3Pn<<mThB`M6R(<jSioLYcKnTvhQ|
zDTkP;tQ9VDS2h~8Jv#Sr;ZeyP*#9`zoo}MFl%g^7@eri?aoDsj6tVAKI93hZ3ss2N
zT4<pfHc5!3g%&m;XEoPH#rPI}iqW17{lCc<PgLE%X_RLE2K%4sSzc8tr}9aYyQ)Cs
zGpoqo4%MteC!$wCs=hKB`(XzfeRs~Oi!7pRoI@8`RO>8v(a{*V9F;Q{okzJtBrT2?
zcDNVIm88tYWuSBL!{TkCs{|LngK~#1z4(2`ZC!dX^@s&HWIN!5e)!b?mq-Y=(LX`D
z9sKr00q|$A>>tJlIi8?dg%i<M;11pLi5-mlky;x4i6+rl#ZScO&QFl>B+rk-%J&!K
z=Hjqb>Ite8;r2>>Wdy=_X7a>0D0|9*?^|GV9PndIZ<luhIQ2if{vUyn96SAKK_9%d
zfG$FXIBbHd-Hh7=Rg*JjI?#7z+)jTTaN-g2CtyJ2QJ}gH7x<BqXBFNbIg<f+DiwRQ
zY7#)W9|zGZ91oMpv(<EQdl-kkB98#W`t>DvG1J=(o&kKK1O04Zn;mev!d)I&f<ume
zFnB%^5@c7f&}e^8tc+IIqI3)n9f$b?=LVw)`wrdJ4RQgbx={|q)y*Js7;vk<0`4$C
zS05E}@|L8d+@a?$=?R>g!KQx+?^0M2kQd1%pUDwx$x%5HFHII{aOo=WQk<~M6X;5W
znlD|;IM>|7sna?<KU%tj>6M%S@+4;$<4TUg8-dTqNbmsmdIVF&Wg(aY%sOh7ArBcr
z9*u+ctE4Kg5CcFkNNwT7|0!^59Ye^I+`riHD#pLG;Y!cpXgr>M6{3)K)5{5}k|6+4
z5TZsQ#R_Kyp{_QZ70?&utn{V=uhH7ObB_TOH+SM7vE~nIs*!QRHwd=iZWLRqzmj;t
zMuWZ8I)xts?$E@`=wfD-!_{Bb%O*$RUf?imgx%g{Lu`Vm-C)qN+Zk8xQh1r+#RnP+
zmxWO7P|sznm`}yt2INWJTE>+;g|8P6@`B5@+xV2>_Lx<8Bj_FO8kU`omZO?&*|})_
zCVn3Ho%F?eTSG1<$51fIiVP_B;v5xOPL3g5RwROt6`eY`d=i)2`5uYES8SutLZ0-@
zw$Uqmo{c`6=@$yz4EzDbs-Ox5AsqG!E(hjt$y-h>NI16?&hUdlh~WQVezv?(-Yzbe
z&v-JIx1-o$H2iJ6oX7okg3&S=i&wv`1D(~OIa2O#UqniaUeaNjMx!hA{dO}FqW9yV
z3zVYYj+}LoOwsQFZW(bpHxV1;>=X3nT17;`eo+vqs1n5M<iC~c<iXz_0iDC;pvDWF
zh5?&nYjyy0s89`svV-9@dx1O5y`C%rK1nkYj_YZ8PfkI`!Fx~6VBC+?;-x2R4F4N=
zpt8aZ)PZjW4SR(9aaj0P@U?2iNU;V{xMDU+3vsB{A!>Ma#e5`$+oEK}YG5H8Iu7#(
z`UayVr*n@hJ_F_uEGw|&fysaIiXTz#FdbTPnsJ-Dr$zv`R!@}Uzd(&*+>ey1r|^}c
zmu5b70B8t@&CI7-Wst9w!JD}<12hiyuH<{Nm4i_3VDCyAB?!0KyHa)<_exn`_tSo(
z<yI^eJx!y=Q#fpHews!N!fkS%{z`VPRX&mCt(pNE2S2Qu&A8+@{jjQ8@MW%|_Lz#p
z=7&{nQvNe3oaWG7dge2JkcKWLe<mQ^_DrP|`%DdJ9NhNI1{QZjHp4TmpbO!!segv=
zv7VvP*+I@~d5@U4Iuqp%?q8kFxXo>=(fq&Srg!xQls}5YrgwFN;qSm0w_3W#y&C%;
zF&TERZZnF8VFtOn!wB`mt#qnUk0H(dY)_*dn|6cG7DAN6T>05?jN8n3mRi+e4*e{(
zBH?!W<uT}22^>S4o#87KT#v(6zh_U$ndftwY=`I4MVj{<8RSrb=ZYD($$xIW(Tt6+
zh0mQsxx?iCxr>b3_<l#D&So68F#lb5HHZHll{irhF)6A+;ZV2Vacuogt|#REPT647
zRqF=7!+k{UKvAb)t^GRX13gB(TDneA7n5}wP^|F%z^uc4PvnXIAQIBW`V;DLPWY!t
ztd{{r{}<qHYJPTFLOlRtXcb#Xg0(*(>!j#3<I34e;4i?fV}df68qJ|1YY4N-&p;mf
z*K`-S@pyTX2Rnh+^fg*PMW0wxDtF+lnID5~p;1vTb|tSN4>=gJhHC6&h>X&_HMR<r
z_(4ww*(#v$wY|m6q;TyJkU5MBYj0;<If}$V-r9O3Asn{evi6V|)$-OJLz%_?k^<z3
z??=Y{l-C9*d>#H5JvJo=*G&RyjesU1^JwcHL1K}oB57SQ)2jeb^fQ=V;%4Nnn+-e(
zhl=ocoRfTNkt9nbX{ungoTIL*1A)Z=<-m2e5I6B%ptn|}5qVOyk8x$N!Vdzs%4dhI
zlMRj#_k+OdF)ZicVGg2e-Es5mj5=E%Z=UrPEu6QWTGBzm`Vox#ky_-hm#dhNzrIwC
zc<bk(+(`oYj&MH?s|54;-}=?2HCSAy70dN|OyrPxcAU%F74kgp@?{;L_lmOO=lei|
zL!3TO?MXPh6=(Q)wC8sqacG9;RrA=I;rYF$MqI~OH`W~Z?36gej<V-FAUA|V$6@|F
zT3v4u|HXA=kAtu3sGm9bs*YO6!Opr-jN9z2Gh3(bAz>4?l+_tii<7#c!Rl%Rgs&IY
zJr~0a70rH>Tbit{Np{1!!$7U(PbM<R`-X8p<<Wf=ehfJaz3QF@Rf%wEzS#|puF>=*
z0puay=#E5eCi4>j1p!J>&>IPLN%nV2JL5TWeagrc>r+8v1aRws>}9%fjI$p#g{#=5
z_9A^%ltABNBxJZBhXvn26>{N_^qRpJjtyj&i(WQh1!h4E1sh^1SOGy6PnMJ+4}&(W
zVw^o`;=8T%SlleBVTQlh7!>{saH<8@Afb`z&oRywQ1}aSrOo{U9`VsLkQcC>SoVe&
zCX2N>*9$7{UO?RCVQ%+=J?cuOiWgo)YKevth3^3F&}c7E-3VusRHMDn1S}p02Sb-+
zoWn;ie2FB^`jrhY7f?7m3Hlbe)!E9RV~i_jE4)Ko4Dwzi|5^F`$isja3A0vE;kjZA
z4!%ge++p;3aT4RIqR0w)jYu3S`r>}z4i0<qAmd7o7kRRa>M!;>$wnWbqUXhLM1k^f
z1g9XeR*<9cMG6vY1sQ*-yEFYunO6EBqEj&pior0%%3z_N6oY<B4Elu*^tZqjFD;J2
zPy;-KgJTM3_<??>7|??+k!!6U;ep~M)y@1w9~nSiqFA)jho~6x4l}MoOX2oV41kX4
zWhj~h%YYIt*l3SI_UuMdN{3RQaB6z1K|FMCR37)EoGPI30_3uB2#1JmYQc@;k#~r@
zjgK&Hi@S{h;12P-aRzX!Ev3k#vK!|yu54HMe1XFWR0%RNKnWOBGb;v#uR^ia2?}op
z?qtwGrdRU0bvJ%$#VLL(0g&Pt&A#zVW>5wxde!Vofx=J3p#Oz&MNh496)C>R1%9OD
z2`T`-36H920=?-vWF4AlQy<1{O|)qQaPpK=#No23ka1NJg^#n**C0>&CkfmVr>bD7
zjbSA-EN5IPQ1}WPeF4*}CiPR^Qt{`IGb=z%R6*siXe}2g1qy%B$^d#l@<hMYhKCs6
z&bX4}XM6|aR?pGfcAIwD7(&dj+lDKbzQec@#KE^|pAF~Uuqj6DZ9<I6f10K&RSdRZ
zQnRy7=b*riLn_u1nsH7QP%*}G6#ZtRr9<K-{brr<JTTKQp_Tr6w9P5vzPE65cVw-K
z4sm%V<4RyF<GpOSqL-iYFWgM@@i<5^erh(jc@Q#YETCz5EZZDojN6<qW{;VhM}g1U
zX);JE>@O7e<Cs!!9xLaUn<v>caCB~-!nhx)B|0|;kh56Y#fv;irZ#>V2iJg5f$v0;
zkHe0i0Txg9r(B@sJTE893GmCQ!ob3py&!ZD{IW7o1sS{M<=LPom-%s!;R<gMOBKa0
zHvx61Kz&Lyu9|@U8I-lD6GO<O!u2WyxT#GX;}%}VDz5JjGHcTXn2+qW+Nbbh;BFio
zyNSs-Cp|M5S9%m)#(JnzS^2!k6W@Nu6`#TnGp_XHAW!t)AhCu_Z^q@yQ(pa#$deu=
zPw|~*KE^fX+mbGqhPKcRML7;z0Bjj+w5}7k`&%9|yc;nQ-%=wu3b(9|!Lb#%wWdO&
zN87TUab=mpWs8sAN-bN0!)C$OY@56?<l%{}*D<c-Dcrbem)@gr>sS;!i7RF{<yb%R
zB#r`-%vR$3I42z6jzpm3ZC#42wOS!AU(UGVQ@C_f=2mhOVfJd(i<O1o@5%B0OUr*h
zFa}Qba-yf6?S$9Hz&8VT)8-B3h!6l&`1e~yLBtUX-zFXLd%DcHaVWkDoD<(}#+4%!
zzDMx6e}70WX#XD1ZT?qm0@+544l%b4&+X|WRNHdI*pj)8BsvUE+lquFtT$|1$hz64
z&MhPw_;SYCCKIofHf`HzG}89nZOziQZJ!zS1MrMz+cEGt^s;R~GS2c;FM1_cG-lo_
zG~he%y>fdDz6o-h$t&23L3=-6kqhH_uaJ+O<dBaEx9i8VD#4FuK_bORg|V&qvh6g2
zMaePhM|SRp$28piw`YRD(wOr9Tzj<by%=XjCY~!CSG;{hG+*Zp$iv~=3#0i=oTAoY
z55V?^fIp4H);qSBsk{B{)kX-<b6nfy_kLfMkCTG0lHpM`LmmdaN`^al=v8U~%L2-F
zzTUh#igB)}iO&aab&MZ*k}o4Ivh<&%3aVsCy;^J3;{z+$?EdOja5$Mr1EG_NCt}d6
zpyS|HZTIR=G31;E{;-3B25NMwx6RoN<O54xlS9a(t_|ZDXWy8(d{H*9VFs78VTtX`
zH#?fo#N|-xZm1D1Duss4pmcCigL0jpB;v>6+OPxX7E2QkQ6c20F^MfTalFTa!Q0(%
zK=zA<HY4>OaW#7l^A~wtd#$%9%X^I?#3DN>L&|<_1mi5*#79cmuRSDcgHh<UW6=^i
zbBw)44M>t%f{C9J)6~q@&ZEqs6YMaTp?BaFWORbe9b}_}zjpX(Cs=StVT|JOjI#mC
zojaz)z~=$CxFVTdu|o~BEXTxGf<8?%ZrO$XsXNxPP>u>ynQCi4%IU{#x?>N{9inna
zi&5*tn7E_eXulm}@{V($vlx}wNJ2c?>x5anYvS=n(f4Tk*U`QgZ~=e4Kj<8M_xd2l
zZO(bULg;nBzFzRVU*E&|BQn1;S<2nn-C6EVHA30s?i?xQ?3`dU)8^`({CfUQ*0Xc3
zycX^JN-p~Cq+!8QZ}~rtJ=)Hn7*~x^ggpGQvt7hx;Tx1COs5m|^Js5S-YTz(%79<S
zxRR%EIYV^6fomLHTizHe`^y`TfZoBMZxl1`M@m0#=QnC(z28`GwEP3@@&?!QjjyCX
z-{=tKdAn@=FtLe*c(h$=lw$i#yg;;b-YyDeOT7}CktaT~hj7K$jB~<E1z+JV3TlUX
z>{`k=^Qn65+6ml`!{*mrs0Te_`hzCh?+@|?dG{aWyFl(gOcr?NA7}~2f&UL1rGNi`
zu}a7}F7u7N0iZF1^8;mhqihFvV;Sc|Tn;(J-`FVq+W3|9d*gBG_cv379ma`?ov&~e
z$g(#la~WQTq7C|Q)=J(t_i+9*Nw+&);=A$5GxSOKZhT^bVtBWFr{29AHlVM$ckkr#
zy<9F|x^?e9Bg@~)kaFJ|$mv*-2H&!^VG_^j-?Fu#iI>8c4%3RasO_lDc??Rb$2r>k
ztrbWJ=QcI*4Zwb*8Q*`Zr)9p?fQ-X%{FeFb@U25)I4*wc8y2V3v?5Pxjxny(DEv5Z
zCv)j8+d<<VP0fP#!11^M6z{o?C9}pv8hN2{4-IaXikUcB;Gl7jAGni7^ZDMMfY6w?
zhq?zzW{r9d&Pk(kG1t+=Ys5vZcuyV3EEBG`XqYFy&5SdjiT?$-MNj7pra#O$)0_Aa
zdGXxShH|Hxn9ro&#z0Lwg5J(hk0;;Gj@G4DNL_C$@2WZ}ysyyZe%ohC7-5s(X9>1J
zN>?~;qp=es^X(Y(-M7v8?%Q&{>wbH+sf#>m@r=%G{`QNED{B>A&(`iVCA?#kP>(#?
z;_detR}vK7%o08`C8$<VQ81Y$s2-psC>%F=wDaWcQ>KJpSeKGez!J_et|T!2j%L(9
zDE4pBV?WHU-pRBHXqE!r>17k3@ZLf|kn~x+m)yW?L!#MCoNhE7;_01n(Q-N^vz$rM
za!j0B`ZxH0nA;!hoOZ=rWSoSWTNU0}ExX%0)IF@`9zq^X_0A5)*-gm`Zxpq>q8Y_b
z3S<jnCGnkBR&bF8sdhMmJQTc}$hc|;g=3;jk^622${jSk+gr3SG`#B*8j9a7WJ#={
zQ#<mcVLaok!Ney3cNnAIrNP}vV}+@)hBel)WTmkgdD5tysWd9Q9>q=?8-Y7%G<Rpb
z+rk=;fzr}Uok${S{E=~`QQ@b6J86tD^=~q#{!Mb~U)-cdcvZ(LNQB0wK}g6FrBUHN
zU=A9a3V=J*v1x+xY7-_DbggMx%#xMHBIHTqa>kWLh1URg(zqVDlg4^e;~v&{kR>aP
zImnYnb!|`@72bkkCylMZoixhP2(kK}CNyTg7Xan;IBb)-_p0cID(^j2RW>MvoCky6
zTZP2pbQ7-?uUxp_Yml23-b44J%?s}x=k&ZtGvDtGeh0(f&zB!Hd7rujxz%RY`_v_z
z_$ul;L(Th`p^&=wzv8rAOusTeNOorXAf4FqJ{XT;s*S28H|Pgb7-zSqC_EtVd_R~g
z*=<fD`^ZTj*qmhI@;hjGAH2xom0B8Mh;J+7O0B|q0rG?0Hog$@#P>eqicjIqZ0={$
z+;5mnsXc@|u^(exu`9fd+0O{}z2qo56nh)a!M>N8ig3lQ@KnjZx2I(9!(@uR9(iJ?
zyp>(yK4u>&*~c@PVlP9U*zHZFaBix-qN&__`JQX<S7M#h{b914r+=6s=l>t_y#B)i
z&SMft^Z5_ueL>!bs!3UW*CMI@!{^v6uDprYO6xytP%E_`s;<lux-_!{)haB(#M%2F
zo{=lH`!Es4-A&#;b=6mvBuhE_vTc?qytlMuU#|S%!@k>@j``IB=e`lq{3b5fyxjZb
z-B#Ydh0*+7y~v{>_AO>yc|zeb=-vA^8iCE|qWiYVHST>aa*camEBG9qpY3a_yDKRj
zALH290RozvP@I`RkM>blWGHZyBMPVx_+^YMLliD==kq>N6;%%KGoNh+tJXI^Dv%ER
zD4>?RKC-!>ODjvTxxmEn-?wNn?xT$|=sv=S)@UK%Bi!&(kbQKVaeQEy@a7bWH}@5I
zVKZ4shs^`c<AGT{KvzC^pm`GG$^#0YEbV9xNqx=uU*XV~*Ss}aP8S|`nzu*GF>(3e
z%H1p%gz}nC+xTmdCp&(z@hiMT*pc@!)yHCgmomxsv1(bi-^6)D`J?zMK=6-0MYF5#
zz#Xtn=uDihJ#?wIx$yu6m&5yu2k2VlgjWOScb+m2)Fb1^VH5g^{2t0DJ;kLSv-nR`
zaB$cqhQI_TeX<-0Ie{x{;(W3Aq>js(uWK{%#P=fO%xB^orE@>o#pQ~xk@?=Y@hQAT
z@*Nz6^1(QmkGM$RK^iv*XMKbUe5_HiA3=0*3bIrWrLT(1A7NbCsqldOI_kltHog$^
z+5FN~;n?$tudC)AwEJZx^V$8PaQ4f=7=Aez!!HM=Uo!uc3i;RIur>6bdK=By2ju?K
zWYN;ts{ALq=W&>;eA=p}eV>{euK&v?=S`n=7%h)rbo@M7q<LTVf((jd>CFM9wKzvB
zeA$O_=}i;=3ZFj5N8#LG<%_iNEApNL|5s}n_anvb110yb9mrjV!&bY)MRgB|#|DR2
z8UFrQh(AmMNH{kq&hYbShntOd{O<wx-wxH?g5*d~N`haLNXuHtk-n1p>rBR3iisZw
z9*={~NIk^#?KZqo;@_m(aHjvJr@--yR|!%KG$nUX@Xa3a;gP&=T4I#9*>INkcezl7
zR{uLy&5y(8!M~3cl7oLQvq@l6{~og8N^%TK|9-$mujCxD;VkDUU_@i^62p#4ADOuF
z_0ilIf=1eKR(!M+cnuC)#gB%p^#8Z6yNhw-s^S3d^?Ennk7QkFT5l<EsZcOT8{80t
zMFUKvZ0f2AStJyL1e(x9G7n9Lr3t30(t#?iB?=uOB3q(>L8@wr2mFF!(U$@7;kF<~
zs1ys4&1@-+_stJQvXb2_=gj<Px#!AR$?~4_JLldz*Y<dAZ#ExHrFJK1=|K5prQPW9
zK_4Lgix+Lt#T;^raucSynx}l`|MkgCS8sDDSC8GM{z=N~e~WQ<AkS#PlCRRs9eR_7
zKG3`RI#pP7F_yf3n|tVbVe*LUbtBK4MUSs_H`$!^;pB>I+1upJnK0tD!;|a7lSV$I
zm{t(_bTw&n!oLylv%?{}?0!+h8_nE*=?#={K*<TW&c?ksw`?44IzOSa#l}ymFijT>
zv@fLZY37Yz&=u$T=A^IP{68tsPI70;tW>{_d|ZG3ZvMt?>TgAPI$IbGZ$3w$t^AHE
z#WcacRrGuJUwi8~g%cM1))UAZ3x3-;9sUQW!?%so;clMZ%BA1$PhZa@&m7n3*^lmU
z^ccAw&>Z^O9ExdeL(b`Wta&&x@~GeBwh8r{MI)coyOe)QZ%Dv18Zhx@VC0kf(8#0y
zMvL-%s~(^WKSg!;YAJQ2M_0)64~X}l9s`1A`0M%o)2SPSX7?Ss!`&DX@Uu=lLMmmW
za1{GZ4mF=D#(pyk&r46|;0n(5T7TMxm*9Lq)O<RCSKwT)dB&xfj__s;UZ+s^5!{7)
z(q|HH!Fk8D{@EP*yKvv|3cL>=7|!$Y`a(F*r;i`N$FXl^rSD;;{;eEbQK<E29e4p=
zGQ117B2RBsnySY)_*NASH7ekfL~?_3Jx}PsT?(J3i|Gvv*lMbmqXFA!;2E_Q&V>~7
zfIWC$`hpD)B46GL4d<Bqo4<Nz{_cCW#*+791GZD~@Y^}*`#7fd?R@0v?LyQ04X<~*
zhz3hGEcq03Lm6I`p7Y=~oEM-S@4FPd4sS?*cL?|3ZRvN~@D99Z_z3R91L^y1_y9hX
zeit(z-zauIf$QtPtIdg})U7N$Fa2%{uHZ$(vA$a+cv*VhL4O5q8=myn;C1QCNxuvC
z3{U!7@Q(C*lKw8-H$3U@!w1se!}Ia}gmA9cZvT68@Nw)rS;NEFcXDtg{k<-{053^@
zpMqQPiuCtm{+%kkX1IfX2ksg^f;ZqT>5A*=_;=dyuJjKuv-jYA=?4OM5c%>>DE&h@
zc>H+Z8B6|f%(UT6Ym=U^QXFgB|B+(UK9!>179d|v6{N2yc=I!xbUH~{2K(SLhObIL
z=)i3_$Cv0LPmfcnI=n%~J7~HGZ<A@u|7eBc)Y4Rn{!&GBcs;{?xDOAc7n!+#03RBz
z;G@`iYJL8q75h{co;TcvD>zT6t-r|Yq4}pu@Ur0}cm-}t|Cj}@!Rv;*a2M_wo{Zmu
zccdTgqQ49Gr9V)F_u&J>EASA`^J&NbfCC@Lp3X`?g7MQixH25$rwj0s;TS({!MR?W
z|A<F1?SHxouNmHjJ8;+V0N#MNq<>1m+i)IFoByZ{@4@@hkGb#w9#X9JuO{ms!pDYV
z{nM$~r*qPek0_?&pUy|VJYA6fpaqW~{?i<4(?95d%NV|DxCgi4T(9@H;dOXJ`a?Om
z2j_aN|KTFM1MeB0%<sbk=@pLo@CWdr^b^eNquBYih(7-#E+>|zGFf<D`WF*da9*#r
z{x7vD=Kd1AEd47LcqQ_5hCUeB<~PZvGBtG6WydLn4j1l8f0S3iGq&Iz>1Vp|F5H*S
z|H3)y??;}_44T3B=yhWzMEywCpAAqyjy?Jxp|l-1SBZTl2UoJ+$-xWpd^4rXxh!wM
zjD-dsKpXJ9gN7=+X1E7;;I8xwNq+<0GJJ&oHoPnSTQ0m8d3vVbROxud0Xjn2QBOLC
z@Uh`O#dMR+recp?V`)eH?Fu{}`SNUmV$Gkx5zWSr;aN-alSz9S!&eRWDCX&HI1i@{
zf3XX%!yD4Squ?IAO|jPhT^HVg_oP3~^YQ#XJdl3Lh7aIF>Cag3QS8x6L~Z_O?AZ5Y
z;dzQRf7XL5cv1Ru7Q6&68{UOi;I{PdSKu{x-S83Ig?rL}V8dJRj^Rmv7w$`cp2ws8
z-P4B;q<d|62<P#%{rRDSk7LhfrC$zW&*tD<ul2uR!3*$`;SSt_SET>Ug;(J<=|A`3
z4&0UAQ}717CH-X&-iCLj`xd+h?;GyJ19&L?w-$T|9~<6|eJ&OITu%D$0(d_1<++0N
zKPY(o@Sn3J|K0|dF??0}A1$~IcMNaC>+pu*Be)0WdhO=_lMC;_dxnQ_AI^uX_4kYL
z0emR^l^lE&d-SHc*8fU3_W3M4FZ*9@!xfz8)B0Zx;U#!k`fCbaf!l_+;Wc<&`k#Hc
z3-=5k!CUZ-^uJi}F5EZVf%oA9>3?OW)5ClS=lQhb4?_4j_JyqU*W0l#<lxG1A6|$&
zy-;d;m+1$J1q<~RS^swz^;LMyaO}r|1Lt~ey>BRr>39|z@Rs4&kA*h8EBzmBin+fB
z?@M3j^|A->Q2I5WV)h|?Y<Lj+Vk-8<oZ%yQKJw+og7naZ#}D^KOY%ktE@Swr^f!~?
z?a0%MPP6hN{b|F+I@MjEi}AvI(WTtSC*&KH`^1F27mfGSB5(UQCU~22vlH?i%JBzW
z=KNjCeR)E@N4XzQ$orJLlRt$xkZRuX+TQ)oUVLfc%Egx!OIPNX6d8T(8(s0gy0^A3
zbNalan$Q1eX8G(P{<d~uW$p1(-&{HGoIdsV8O5ohI`V1t(D8Zxe&tXcsDt;Z@*^vs
zKY8@T$`>lfj-FgqXV%uvt$kA6rw*z|*VO7~PpqobYv&wwvb_4ac@F0}oR7k@U#ENS
UV|({ssXn&%g<od!8wW1^4^%Fz{{R30
delta 223423
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%0AL+&n4~9&`uE?gH
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
M`N2Q`pJ}uIA11p`>i_@%
diff --git a/roms/SLOF b/roms/SLOF
index f284ab3..a70dbda 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit f284ab3f03ae69a20e1ae966f6ddf76da33cbf72
+Subproject commit a70dbda2e21f6e438b3617c44ff180c3418dc30f
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 20/37] target-ppc: Introduce Instruction Type for Transactional Memory
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (18 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 19/37] pseries: Update SLOF firmware image to 20141202 Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 21/37] target-ppc: Introduce Feature Flag " Alexander Graf
` (17 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Add a category (PPC2_TM) for the Transactional Memory instructions
introduced in Power ISA 2.07.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/cpu.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 068fcb2..3510083 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -2010,6 +2010,8 @@ enum {
PPC2_ISA207S = 0x0000000000008000ULL,
/* Double precision floating point conversion for signed integer 64 */
PPC2_FP_CVT_S64 = 0x0000000000010000ULL,
+ /* Transactional Memory (ISA 2.07, Book II) */
+ PPC2_TM = 0x0000000000020000ULL,
#define PPC_TCG_INSNS2 (PPC2_BOOKE206 | PPC2_VSX | PPC2_PRCNTL | PPC2_DBRX | \
PPC2_ISA205 | PPC2_VSX207 | PPC2_PERM_ISA206 | \
@@ -2017,7 +2019,7 @@ enum {
PPC2_FP_CVT_ISA206 | PPC2_FP_TST_ISA206 | \
PPC2_BCTAR_ISA207 | PPC2_LSQ_ISA207 | \
PPC2_ALTIVEC_207 | PPC2_ISA207S | PPC2_DFP | \
- PPC2_FP_CVT_S64)
+ PPC2_FP_CVT_S64 | PPC2_TM)
};
/*****************************************************************************/
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 21/37] target-ppc: Introduce Feature Flag for Transactional Memory
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (19 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 20/37] target-ppc: Introduce Instruction Type for Transactional Memory Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 22/37] target-ppc: Introduce tm_enabled Bit to CPU State Alexander Graf
` (16 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Add a flag (POWERPC_FLAG_TM) for the Transactional Memory
Facility introduced in Power ISA 2.07.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/cpu.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 3510083..38176c0 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -584,6 +584,8 @@ enum {
POWERPC_FLAG_CFAR = 0x00040000,
/* Has VSX */
POWERPC_FLAG_VSX = 0x00080000,
+ /* Has Transaction Memory (ISA 2.07) */
+ POWERPC_FLAG_TM = 0x00100000,
};
/*****************************************************************************/
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 22/37] target-ppc: Introduce tm_enabled Bit to CPU State
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (20 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 21/37] target-ppc: Introduce Feature Flag " Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 23/37] target-ppc: Power8 Supports Transactional Memory Alexander Graf
` (15 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Add a bit (tm_enabled) to CPU state that mirrors the MSR[TM] bit.
This is analogous to the other "available" bits in the MSR (FP,
VSX, etc.).
NOTE: Since MSR[TM] occupies big-endian bit 31, the code is wrapped
with a PPC64 bit check.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index a772382..3b004f3 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -203,6 +203,7 @@ typedef struct DisasContext {
int altivec_enabled;
int vsx_enabled;
int spe_enabled;
+ int tm_enabled;
ppc_spr_t *spr_cb; /* Needed to check rights for mfspr/mtspr */
int singlestep_enabled;
uint64_t insns_flags;
@@ -11342,6 +11343,13 @@ static inline void gen_intermediate_code_internal(PowerPCCPU *cpu,
} else {
ctx.vsx_enabled = 0;
}
+#if defined(TARGET_PPC64)
+ if ((env->flags & POWERPC_FLAG_TM) && msr_tm) {
+ ctx.tm_enabled = msr_tm;
+ } else {
+ ctx.tm_enabled = 0;
+ }
+#endif
if ((env->flags & POWERPC_FLAG_SE) && msr_se)
ctx.singlestep_enabled = CPU_SINGLE_STEP;
else
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 23/37] target-ppc: Power8 Supports Transactional Memory
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (21 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 22/37] target-ppc: Introduce tm_enabled Bit to CPU State Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 24/37] target-ppc: Introduce TEXASRU Bit Fields Alexander Graf
` (14 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
The Power8 processor implements the Transactional Memory Facility
as defined in Power ISA 2.07. Update the initialization code to
indicate this.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate_init.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 1fece7b..72cc9d0 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -8219,7 +8219,8 @@ POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data)
PPC2_ATOMIC_ISA206 | PPC2_FP_CVT_ISA206 |
PPC2_FP_TST_ISA206 | PPC2_BCTAR_ISA207 |
PPC2_LSQ_ISA207 | PPC2_ALTIVEC_207 |
- PPC2_ISA205 | PPC2_ISA207S | PPC2_FP_CVT_S64;
+ PPC2_ISA205 | PPC2_ISA207S | PPC2_FP_CVT_S64 |
+ PPC2_TM;
pcc->msr_mask = (1ull << MSR_SF) |
(1ull << MSR_TM) |
(1ull << MSR_VR) |
@@ -8247,7 +8248,7 @@ POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data)
pcc->flags = POWERPC_FLAG_VRE | POWERPC_FLAG_SE |
POWERPC_FLAG_BE | POWERPC_FLAG_PMM |
POWERPC_FLAG_BUS_CLK | POWERPC_FLAG_CFAR |
- POWERPC_FLAG_VSX;
+ POWERPC_FLAG_VSX | POWERPC_FLAG_TM;
pcc->l1_dcache_size = 0x8000;
pcc->l1_icache_size = 0x8000;
pcc->interrupts_big_endian = ppc_cpu_interrupts_big_endian_lpcr;
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 24/37] target-ppc: Introduce TEXASRU Bit Fields
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (22 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 23/37] target-ppc: Power8 Supports Transactional Memory Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 25/37] target-ppc: Introduce tbegin Alexander Graf
` (13 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Define mnemonics for the various bit fields in the Transaction
EXception And Summary Register (TEXASR).
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/cpu.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 38176c0..91a03f6 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -558,6 +558,26 @@ struct ppc_slb_t {
#define ESR_VLEMI (1 << (63 - 58)) /* VLE operation */
#define ESR_MIF (1 << (63 - 62)) /* Misaligned instruction (VLE) */
+/* Transaction EXception And Summary Register bits */
+#define TEXASR_FAILURE_PERSISTENT (63 - 7)
+#define TEXASR_DISALLOWED (63 - 8)
+#define TEXASR_NESTING_OVERFLOW (63 - 9)
+#define TEXASR_FOOTPRINT_OVERFLOW (63 - 10)
+#define TEXASR_SELF_INDUCED_CONFLICT (63 - 11)
+#define TEXASR_NON_TRANSACTIONAL_CONFLICT (63 - 12)
+#define TEXASR_TRANSACTION_CONFLICT (63 - 13)
+#define TEXASR_TRANSLATION_INVALIDATION_CONFLICT (63 - 14)
+#define TEXASR_IMPLEMENTATION_SPECIFIC (63 - 15)
+#define TEXASR_INSTRUCTION_FETCH_CONFLICT (63 - 16)
+#define TEXASR_ABORT (63 - 31)
+#define TEXASR_SUSPENDED (63 - 32)
+#define TEXASR_PRIVILEGE_HV (63 - 34)
+#define TEXASR_PRIVILEGE_PR (63 - 35)
+#define TEXASR_FAILURE_SUMMARY (63 - 36)
+#define TEXASR_TFIAR_EXACT (63 - 37)
+#define TEXASR_ROT (63 - 38)
+#define TEXASR_TRANSACTION_LEVEL (63 - 52) /* 12 bits */
+
enum {
POWERPC_FLAG_NONE = 0x00000000,
/* Flag for MSR bit 25 signification (VRE/SPE) */
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 25/37] target-ppc: Introduce tbegin
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (23 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 24/37] target-ppc: Introduce TEXASRU Bit Fields Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 26/37] target-ppc: Introduce TM Noops Alexander Graf
` (12 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Provide a degenerate implementation of the tbegin instruction. This
implementation always fails the transaction, recording the failure
per Book II Section 5.3.2 of the Power ISA V2.07.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/helper.h | 2 ++
target-ppc/mem_helper.c | 22 ++++++++++++++++++++++
target-ppc/translate.c | 12 ++++++++++++
3 files changed, 36 insertions(+)
diff --git a/target-ppc/helper.h b/target-ppc/helper.h
index 2841f61..869be15 100644
--- a/target-ppc/helper.h
+++ b/target-ppc/helper.h
@@ -665,3 +665,5 @@ DEF_HELPER_4(dscri, void, env, fprp, fprp, i32)
DEF_HELPER_4(dscriq, void, env, fprp, fprp, i32)
DEF_HELPER_4(dscli, void, env, fprp, fprp, i32)
DEF_HELPER_4(dscliq, void, env, fprp, fprp, i32)
+
+DEF_HELPER_1(tbegin, void, env)
diff --git a/target-ppc/mem_helper.c b/target-ppc/mem_helper.c
index 50344b8..6d37dae 100644
--- a/target-ppc/mem_helper.c
+++ b/target-ppc/mem_helper.c
@@ -269,3 +269,25 @@ STVE(stvewx, cpu_stl_data, bswap32, u32)
#undef HI_IDX
#undef LO_IDX
+
+void helper_tbegin(CPUPPCState *env)
+{
+ /* As a degenerate implementation, always fail tbegin. The reason
+ * given is "Nesting overflow". The "persistent" bit is set,
+ * providing a hint to the error handler to not retry. The TFIAR
+ * captures the address of the failure, which is this tbegin
+ * instruction. Instruction execution will continue with the
+ * next instruction in memory, which is precisely what we want.
+ */
+
+ env->spr[SPR_TEXASR] =
+ (1ULL << TEXASR_FAILURE_PERSISTENT) |
+ (1ULL << TEXASR_NESTING_OVERFLOW) |
+ (msr_hv << TEXASR_PRIVILEGE_HV) |
+ (msr_pr << TEXASR_PRIVILEGE_PR) |
+ (1ULL << TEXASR_FAILURE_SUMMARY) |
+ (1ULL << TEXASR_TFIAR_EXACT);
+ env->spr[SPR_TFIAR] = env->nip | (msr_hv << 1) | msr_pr;
+ env->spr[SPR_TFHAR] = env->nip + 4;
+ env->crf[0] = 0xB; /* 0b1010 = transaction failure */
+}
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 3b004f3..f4a0332 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -9674,6 +9674,15 @@ 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 void gen_tbegin(DisasContext *ctx)
+{
+ if (unlikely(!ctx->tm_enabled)) {
+ gen_exception_err(ctx, POWERPC_EXCP_FU, FSCR_IC_TM);
+ return;
+ }
+ gen_helper_tbegin(cpu_env);
+}
+
static opcode_t opcodes[] = {
GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE),
GEN_HANDLER(cmp, 0x1F, 0x00, 0x00, 0x00400000, PPC_INTEGER),
@@ -11086,6 +11095,9 @@ GEN_SPEOP_LDST(evstwhe, 0x18, 2),
GEN_SPEOP_LDST(evstwho, 0x1A, 2),
GEN_SPEOP_LDST(evstwwe, 0x1C, 2),
GEN_SPEOP_LDST(evstwwo, 0x1E, 2),
+
+GEN_HANDLER2_E(tbegin, "tbegin", 0x1F, 0x0E, 0x14, 0x01DFF800, \
+ PPC_NONE, PPC2_TM),
};
#include "helper_regs.h"
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 26/37] target-ppc: Introduce TM Noops
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (24 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 25/37] target-ppc: Introduce tbegin Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 27/37] target-ppc: Introduce tcheck Alexander Graf
` (11 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Add degenerate implementations of the non-privileged Transactional
Memory instructions tend., tabort*. and tsr. This implementation
simply checks the MSR[TM] bit and then sets CR0 to 0b0000. This
is a reasonable degenerate implementation since transactions are
never allowed to begin and hence MSR[TS] is always 0b00.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index f4a0332..9c820d1 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -9683,6 +9683,30 @@ static void gen_tbegin(DisasContext *ctx)
gen_helper_tbegin(cpu_env);
}
+#define GEN_TM_NOOP(name) \
+static inline void gen_##name(DisasContext *ctx) \
+{ \
+ if (unlikely(!ctx->tm_enabled)) { \
+ gen_exception_err(ctx, POWERPC_EXCP_FU, FSCR_IC_TM); \
+ return; \
+ } \
+ /* Because tbegin always fails in QEMU, these user \
+ * space instructions all have a simple implementation: \
+ * \
+ * CR[0] = 0b0 || MSR[TS] || 0b0 \
+ * = 0b0 || 0b00 || 0b0 \
+ */ \
+ tcg_gen_movi_i32(cpu_crf[0], 0); \
+}
+
+GEN_TM_NOOP(tend);
+GEN_TM_NOOP(tabort);
+GEN_TM_NOOP(tabortwc);
+GEN_TM_NOOP(tabortwci);
+GEN_TM_NOOP(tabortdc);
+GEN_TM_NOOP(tabortdci);
+GEN_TM_NOOP(tsr);
+
static opcode_t opcodes[] = {
GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE),
GEN_HANDLER(cmp, 0x1F, 0x00, 0x00, 0x00400000, PPC_INTEGER),
@@ -11098,6 +11122,20 @@ GEN_SPEOP_LDST(evstwwo, 0x1E, 2),
GEN_HANDLER2_E(tbegin, "tbegin", 0x1F, 0x0E, 0x14, 0x01DFF800, \
PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tend, "tend", 0x1F, 0x0E, 0x15, 0x01FFF800, \
+ PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tabort, "tabort", 0x1F, 0x0E, 0x1C, 0x03E0F800, \
+ PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tabortwc, "tabortwc", 0x1F, 0x0E, 0x18, 0x00000000, \
+ PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tabortwci, "tabortwci", 0x1F, 0x0E, 0x1A, 0x00000000, \
+ PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tabortdc, "tabortdc", 0x1F, 0x0E, 0x19, 0x00000000, \
+ PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tabortdci, "tabortdci", 0x1F, 0x0E, 0x1B, 0x00000000, \
+ PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tsr, "tsr", 0x1F, 0x0E, 0x17, 0x03DFF800, \
+ PPC_NONE, PPC2_TM),
};
#include "helper_regs.h"
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 27/37] target-ppc: Introduce tcheck
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (25 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 26/37] target-ppc: Introduce TM Noops Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 28/37] target-ppc: Introduce Privileged TM Noops Alexander Graf
` (10 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Add a degenerate implementation of the Transaction Check (tcheck)
instruction. Since transaction always immediately fail, this
implementation simply sets CR[BF] to 0b1000, i.e. TDOOMED = 1
and MSR[TS] == 0.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 9c820d1..95a2198 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -9707,6 +9707,21 @@ GEN_TM_NOOP(tabortdc);
GEN_TM_NOOP(tabortdci);
GEN_TM_NOOP(tsr);
+static void gen_tcheck(DisasContext *ctx)
+{
+ if (unlikely(!ctx->tm_enabled)) {
+ gen_exception_err(ctx, POWERPC_EXCP_FU, FSCR_IC_TM);
+ return;
+ }
+ /* Because tbegin always fails, the tcheck implementation
+ * is simple:
+ *
+ * CR[CRF] = TDOOMED || MSR[TS] || 0b0
+ * = 0b1 || 0b00 || 0b0
+ */
+ tcg_gen_movi_i32(cpu_crf[crfD(ctx->opcode)], 0x8);
+}
+
static opcode_t opcodes[] = {
GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE),
GEN_HANDLER(cmp, 0x1F, 0x00, 0x00, 0x00400000, PPC_INTEGER),
@@ -11136,6 +11151,8 @@ GEN_HANDLER2_E(tabortdci, "tabortdci", 0x1F, 0x0E, 0x1B, 0x00000000, \
PPC_NONE, PPC2_TM),
GEN_HANDLER2_E(tsr, "tsr", 0x1F, 0x0E, 0x17, 0x03DFF800, \
PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(tcheck, "tcheck", 0x1F, 0x0E, 0x16, 0x007FF800, \
+ PPC_NONE, PPC2_TM),
};
#include "helper_regs.h"
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 28/37] target-ppc: Introduce Privileged TM Noops
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (26 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 27/37] target-ppc: Introduce tcheck Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 29/37] PPC: e500: Fix GPIO controller interrupt number Alexander Graf
` (9 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel, Tom Musta
From: Tom Musta <tommusta@gmail.com>
Add the supervisory Transactional Memory instructions treclaim. and
trechkpt. The implementation is a degenerate one that simply
checks privileged state, TM availability and then sets CR[0] to
0b0000, just like the unprivileged noops.
Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 95a2198..58d7db3 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -9722,6 +9722,40 @@ static void gen_tcheck(DisasContext *ctx)
tcg_gen_movi_i32(cpu_crf[crfD(ctx->opcode)], 0x8);
}
+#if defined(CONFIG_USER_ONLY)
+#define GEN_TM_PRIV_NOOP(name) \
+static inline void gen_##name(DisasContext *ctx) \
+{ \
+ gen_inval_exception(ctx, POWERPC_EXCP_PRIV_OPC); \
+}
+
+#else
+
+#define GEN_TM_PRIV_NOOP(name) \
+static inline void gen_##name(DisasContext *ctx) \
+{ \
+ if (unlikely(ctx->pr)) { \
+ gen_inval_exception(ctx, POWERPC_EXCP_PRIV_OPC); \
+ return; \
+ } \
+ if (unlikely(!ctx->tm_enabled)) { \
+ gen_exception_err(ctx, POWERPC_EXCP_FU, FSCR_IC_TM); \
+ return; \
+ } \
+ /* Because tbegin always fails, the implementation is \
+ * simple: \
+ * \
+ * CR[0] = 0b0 || MSR[TS] || 0b0 \
+ * = 0b0 || 0b00 | 0b0 \
+ */ \
+ tcg_gen_movi_i32(cpu_crf[0], 0); \
+}
+
+#endif
+
+GEN_TM_PRIV_NOOP(treclaim);
+GEN_TM_PRIV_NOOP(trechkpt);
+
static opcode_t opcodes[] = {
GEN_HANDLER(invalid, 0x00, 0x00, 0x00, 0xFFFFFFFF, PPC_NONE),
GEN_HANDLER(cmp, 0x1F, 0x00, 0x00, 0x00400000, PPC_INTEGER),
@@ -11153,6 +11187,10 @@ GEN_HANDLER2_E(tsr, "tsr", 0x1F, 0x0E, 0x17, 0x03DFF800, \
PPC_NONE, PPC2_TM),
GEN_HANDLER2_E(tcheck, "tcheck", 0x1F, 0x0E, 0x16, 0x007FF800, \
PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(treclaim, "treclaim", 0x1F, 0x0E, 0x1D, 0x03E0F800, \
+ PPC_NONE, PPC2_TM),
+GEN_HANDLER2_E(trechkpt, "trechkpt", 0x1F, 0x0E, 0x1F, 0x03FFF800, \
+ PPC_NONE, PPC2_TM),
};
#include "helper_regs.h"
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 29/37] PPC: e500: Fix GPIO controller interrupt number
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (27 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 28/37] target-ppc: Introduce Privileged TM Noops Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 30/37] target-ppc: Mark SR() and gen_sync_exception() as !CONFIG_USER_ONLY Alexander Graf
` (8 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, Amit Singh Tomar, qemu-devel
From: Amit Tomar <Amit.Tomar@freescale.com>
The GPIO controller lives at IRQ 47, not 43 on real hardware. This is a problem
because IRQ 43 is occupied by the I2C controller which we want to implement
next, so we'd have a conflict on that IRQ number.
Move the GPIO controller to IRQ 47 where it belongs.
Signed-off-by: Amit Singh Tomar <amit.tomar@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/e500.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index a2e60b4..7e17d18 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -60,7 +60,7 @@
#define MPC8544_PCI_REGS_SIZE 0x1000ULL
#define MPC8544_UTIL_OFFSET 0xe0000ULL
#define MPC8XXX_GPIO_OFFSET 0x000FF000ULL
-#define MPC8XXX_GPIO_IRQ 43
+#define MPC8XXX_GPIO_IRQ 47
struct boot_info
{
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 30/37] target-ppc: Mark SR() and gen_sync_exception() as !CONFIG_USER_ONLY
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (28 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 29/37] PPC: e500: Fix GPIO controller interrupt number Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 31/37] target-ppc: Cast ssize_t to size_t before printing with %zx Alexander Graf
` (7 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel
From: Peter Maydell <peter.maydell@linaro.org>
The functions SR() and gen_sync_exception() are only used in softmmu
configs; wrap them in #ifndef CONFIG_USER_ONLY to suppress clang warnings
on the linux-user builds.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/translate.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 58d7db3..6e9ab02 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -331,11 +331,13 @@ static inline void gen_stop_exception(DisasContext *ctx)
ctx->exception = POWERPC_EXCP_STOP;
}
+#ifndef CONFIG_USER_ONLY
/* No need to update nip here, as execution flow will change */
static inline void gen_sync_exception(DisasContext *ctx)
{
ctx->exception = POWERPC_EXCP_SYNC;
}
+#endif
#define GEN_HANDLER(name, opc1, opc2, opc3, inval, type) \
GEN_OPCODE(name, opc1, opc2, opc3, inval, type, PPC_NONE)
@@ -437,7 +439,10 @@ EXTRACT_HELPER(ME, 1, 5);
EXTRACT_HELPER(TO, 21, 5);
EXTRACT_HELPER(CRM, 12, 8);
+
+#ifndef CONFIG_USER_ONLY
EXTRACT_HELPER(SR, 16, 4);
+#endif
/* mtfsf/mtfsfi */
EXTRACT_HELPER(FPBF, 23, 3);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 31/37] target-ppc: Cast ssize_t to size_t before printing with %zx
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (29 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 30/37] target-ppc: Mark SR() and gen_sync_exception() as !CONFIG_USER_ONLY Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 32/37] hw/ppc: modified the condition for usb controllers to be created for some ppc machines Alexander Graf
` (6 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: peter.maydell, qemu-devel
From: Peter Maydell <peter.maydell@linaro.org>
The mingw32 compiler complains about trying to print variables of type
ssize_t with the %z format string specifier. Since we're printing it
as unsigned hex anyway, cast to size_t to silence the warning.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/spapr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 720aab5..2850624 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1482,7 +1482,7 @@ static void ppc_spapr_init(MachineState *machine)
}
if (spapr->rtas_size > RTAS_MAX_SIZE) {
hw_error("RTAS too big ! 0x%zx bytes (max is 0x%x)\n",
- spapr->rtas_size, RTAS_MAX_SIZE);
+ (size_t)spapr->rtas_size, RTAS_MAX_SIZE);
exit(1);
}
g_free(filename);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 32/37] hw/ppc: modified the condition for usb controllers to be created for some ppc machines
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (30 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 31/37] target-ppc: Cast ssize_t to size_t before printing with %zx Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 33/37] hw/machine: added machine_usb wrapper Alexander Graf
` (5 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: Marcel Apfelbaum, peter.maydell, qemu-devel
From: Marcel Apfelbaum <marcel@redhat.com>
Some ppc machines create a default usb controller based on a 'machine condition'.
Until now the logic was: create the usb controller if:
- the usb option was supplied in cli and value is true or
- the usb option was absent and both set_defaults and the machine
condition were true.
Modified the logic to:
Create the usb controller if:
- the machine condition is true and defaults are enabled or
- the usb option is supplied and true.
The main for this is to simplify the usb_enabled method.
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/mac_newworld.c | 3 ++-
hw/ppc/spapr.c | 2 +-
include/sysemu/sysemu.h | 1 +
vl.c | 7 ++++++-
4 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index b60a832..8ba9499 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -417,7 +417,8 @@ static void ppc_core99_init(MachineState *machine)
dev = qdev_create(adb_bus, TYPE_ADB_MOUSE);
qdev_init_nofail(dev);
- if (usb_enabled(machine_arch == ARCH_MAC99_U3)) {
+ if ((machine_arch == ARCH_MAC99_U3 && defaults_enabled()) ||
+ usb_enabled(false)) {
pci_create_simple(pci_bus, -1, "pci-ohci");
/* U3 needs to use USB for input because Linux doesn't support via-cuda
on PPC64 */
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 2850624..2b2cc0c 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1530,7 +1530,7 @@ static void ppc_spapr_init(MachineState *machine)
spapr->has_graphics = true;
}
- if (usb_enabled(spapr->has_graphics)) {
+ if ((spapr->has_graphics && defaults_enabled()) || usb_enabled(false)) {
pci_create_simple(phb->bus, -1, "pci-ohci");
if (spapr->has_graphics) {
usbdevice_create("keyboard");
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 503e5a4..a31044c 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -227,6 +227,7 @@ void qemu_boot_set(const char *boot_order, Error **errp);
QemuOpts *qemu_get_machine_opts(void);
+bool defaults_enabled(void);
bool usb_enabled(bool default_usb);
extern QemuOptsList qemu_legacy_drive_opts;
diff --git a/vl.c b/vl.c
index bea9656..415535f 100644
--- a/vl.c
+++ b/vl.c
@@ -997,10 +997,15 @@ static int parse_name(QemuOpts *opts, void *opaque)
return 0;
}
+bool defaults_enabled(void)
+{
+ return has_defaults;
+}
+
bool usb_enabled(bool default_usb)
{
return qemu_opt_get_bool(qemu_get_machine_opts(), "usb",
- has_defaults && default_usb);
+ default_usb);
}
#ifndef _WIN32
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 33/37] hw/machine: added machine_usb wrapper
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (31 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 32/37] hw/ppc: modified the condition for usb controllers to be created for some ppc machines Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 34/37] hw/usb: simplified usb_enabled Alexander Graf
` (4 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: Marcel Apfelbaum, peter.maydell, qemu-devel
From: Marcel Apfelbaum <marcel@redhat.com>
Following QOM convention, object properties should
not be accessed directly.
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/core/machine.c | 5 +++++
include/hw/boards.h | 2 ++
2 files changed, 7 insertions(+)
diff --git a/hw/core/machine.c b/hw/core/machine.c
index a0ae5f9..fbd91be 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -398,6 +398,11 @@ static void machine_finalize(Object *obj)
g_free(ms->firmware);
}
+bool machine_usb(MachineState *machine)
+{
+ return machine->usb;
+}
+
static const TypeInfo machine_info = {
.name = TYPE_MACHINE,
.parent = TYPE_OBJECT,
diff --git a/include/hw/boards.h b/include/hw/boards.h
index e0a6790..3ddc449 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -65,6 +65,8 @@ int qemu_register_machine(QEMUMachine *m);
MachineClass *find_default_machine(void);
extern MachineState *current_machine;
+bool machine_usb(MachineState *machine);
+
/**
* MachineClass:
* @qemu_machine: #QEMUMachine
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 34/37] hw/usb: simplified usb_enabled
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (32 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 33/37] hw/machine: added machine_usb wrapper Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 35/37] hw/ppc/mac_newworld: QOMified mac99 machines Alexander Graf
` (3 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: Marcel Apfelbaum, peter.maydell, qemu-devel
From: Marcel Apfelbaum <marcel@redhat.com>
The argument is not longer used and the implementation
uses now QOM instead of QemuOpts.
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/arm/nseries.c | 2 +-
hw/arm/pxa2xx.c | 4 ++--
hw/arm/realview.c | 2 +-
hw/arm/versatilepb.c | 2 +-
hw/i386/pc_piix.c | 2 +-
hw/i386/pc_q35.c | 2 +-
hw/ppc/mac_newworld.c | 2 +-
hw/ppc/mac_oldworld.c | 2 +-
hw/ppc/prep.c | 2 +-
hw/ppc/spapr.c | 2 +-
include/sysemu/sysemu.h | 2 +-
vl.c | 11 +++++------
12 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
index c7ebaa6..4d7be5e 100644
--- a/hw/arm/nseries.c
+++ b/hw/arm/nseries.c
@@ -1344,7 +1344,7 @@ static void n8x0_init(MachineState *machine,
n8x0_dss_setup(s);
n8x0_cbus_setup(s);
n8x0_uart_setup(s);
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
n8x0_usb_setup(s);
}
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index 8967cc4..165ba2a 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -2143,7 +2143,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
s->ssp[i] = (SSIBus *)qdev_get_child_bus(dev, "ssi");
}
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
sysbus_create_simple("sysbus-ohci", 0x4c000000,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_USBH1));
}
@@ -2276,7 +2276,7 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)
s->ssp[i] = (SSIBus *)qdev_get_child_bus(dev, "ssi");
}
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
sysbus_create_simple("sysbus-ohci", 0x4c000000,
qdev_get_gpio_in(s->pic, PXA2XX_PIC_USBH1));
}
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 66e51ef..50cb93d 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -261,7 +261,7 @@ static void realview_init(MachineState *machine,
sysbus_connect_irq(busdev, 2, pic[50]);
sysbus_connect_irq(busdev, 3, pic[51]);
pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci");
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
pci_create_simple(pci_bus, -1, "pci-ohci");
}
n = drive_get_max_bus(IF_SCSI);
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 6c4c2e7..b1dae77 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -281,7 +281,7 @@ static void versatile_init(MachineState *machine, int board_id)
pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
}
}
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
pci_create_simple(pci_bus, -1, "pci-ohci");
}
n = drive_get_max_bus(IF_SCSI);
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 220f741..f0a3201 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -274,7 +274,7 @@ static void pc_init1(MachineState *machine,
pc_cmos_init(below_4g_mem_size, above_4g_mem_size, machine->boot_order,
machine, floppy, idebus[0], idebus[1], rtc_state);
- if (pci_enabled && usb_enabled(false)) {
+ if (pci_enabled && usb_enabled()) {
pci_create_simple(pci_bus, piix3_devfn + 2, "piix3-usb-uhci");
}
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 7ba0535..a432944 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -265,7 +265,7 @@ static void pc_q35_init(MachineState *machine)
ide_drive_get(hd, ICH_AHCI(ahci)->ahci.ports);
ahci_ide_create_devs(ahci, hd);
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
/* Should we create 6 UHCI according to ich9 spec? */
ehci_create_ich9_with_companions(host_bus, 0x1d);
}
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 8ba9499..ed37d6b 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -418,7 +418,7 @@ static void ppc_core99_init(MachineState *machine)
qdev_init_nofail(dev);
if ((machine_arch == ARCH_MAC99_U3 && defaults_enabled()) ||
- usb_enabled(false)) {
+ usb_enabled()) {
pci_create_simple(pci_bus, -1, "pci-ohci");
/* U3 needs to use USB for input because Linux doesn't support via-cuda
on PPC64 */
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index c7224d7..3079510 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -304,7 +304,7 @@ static void ppc_heathrow_init(MachineState *machine)
dev = qdev_create(adb_bus, TYPE_ADB_MOUSE);
qdev_init_nofail(dev);
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
pci_create_simple(pci_bus, -1, "pci-ohci");
}
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index dd8433d..15df7f3 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -539,7 +539,7 @@ static void ppc_prep_init(MachineState *machine)
memory_region_add_subregion(sysmem, 0xFEFF0000, xcsr);
#endif
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
pci_create_simple(pci_bus, -1, "pci-ohci");
}
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 2b2cc0c..d2b8b12 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1530,7 +1530,7 @@ static void ppc_spapr_init(MachineState *machine)
spapr->has_graphics = true;
}
- if ((spapr->has_graphics && defaults_enabled()) || usb_enabled(false)) {
+ if ((spapr->has_graphics && defaults_enabled()) || usb_enabled()) {
pci_create_simple(phb->bus, -1, "pci-ohci");
if (spapr->has_graphics) {
usbdevice_create("keyboard");
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index a31044c..748d059 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -228,7 +228,7 @@ void qemu_boot_set(const char *boot_order, Error **errp);
QemuOpts *qemu_get_machine_opts(void);
bool defaults_enabled(void);
-bool usb_enabled(bool default_usb);
+bool usb_enabled(void);
extern QemuOptsList qemu_legacy_drive_opts;
extern QemuOptsList qemu_common_drive_opts;
diff --git a/vl.c b/vl.c
index 415535f..7786b2f 100644
--- a/vl.c
+++ b/vl.c
@@ -1002,10 +1002,9 @@ bool defaults_enabled(void)
return has_defaults;
}
-bool usb_enabled(bool default_usb)
+bool usb_enabled(void)
{
- return qemu_opt_get_bool(qemu_get_machine_opts(), "usb",
- default_usb);
+ return machine_usb(current_machine);
}
#ifndef _WIN32
@@ -1229,7 +1228,7 @@ static int usb_device_add(const char *devname)
const char *p;
#endif
- if (!usb_enabled(false)) {
+ if (!usb_enabled()) {
return -1;
}
@@ -1261,7 +1260,7 @@ static int usb_device_del(const char *devname)
return -1;
}
- if (!usb_enabled(false)) {
+ if (!usb_enabled()) {
return -1;
}
@@ -4230,7 +4229,7 @@ int main(int argc, char **argv, char **envp)
set_numa_modes();
/* init USB devices */
- if (usb_enabled(false)) {
+ if (usb_enabled()) {
if (foreach_device_config(DEV_USB, usb_parse) < 0)
exit(1);
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 35/37] hw/ppc/mac_newworld: QOMified mac99 machines
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (33 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 34/37] hw/usb: simplified usb_enabled Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 36/37] hw/ppc/spapr: simplify usb controller creation logic Alexander Graf
` (2 subsequent siblings)
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: Marcel Apfelbaum, peter.maydell, qemu-devel
From: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/mac_newworld.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index ed37d6b..b54f94a 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -502,18 +502,27 @@ static int core99_kvm_type(const char *arg)
return 2;
}
-static QEMUMachine core99_machine = {
- .name = "mac99",
- .desc = "Mac99 based PowerMAC",
- .init = ppc_core99_init,
- .max_cpus = MAX_CPUS,
- .default_boot_order = "cd",
- .kvm_type = core99_kvm_type,
+static void core99_machine_class_init(ObjectClass *oc, void *data)
+{
+ MachineClass *mc = MACHINE_CLASS(oc);
+
+ mc->name = "mac99";
+ mc->desc = "Mac99 based PowerMAC";
+ mc->init = ppc_core99_init;
+ mc->max_cpus = MAX_CPUS;
+ mc->default_boot_order = "cd";
+ mc->kvm_type = core99_kvm_type;
+}
+
+static const TypeInfo core99_machine_info = {
+ .name = "mac99-machine",
+ .parent = TYPE_MACHINE,
+ .class_init = core99_machine_class_init,
};
-static void core99_machine_init(void)
+static void mac_machine_register_types(void)
{
- qemu_register_machine(&core99_machine);
+ type_register_static(&core99_machine_info);
}
-machine_init(core99_machine_init);
+type_init(mac_machine_register_types)
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 36/37] hw/ppc/spapr: simplify usb controller creation logic
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (34 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 35/37] hw/ppc/mac_newworld: QOMified mac99 machines Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-07 15:20 ` [Qemu-devel] [PULL 37/37] hw/ppc/mac_newworld: " Alexander Graf
2015-01-10 21:02 ` [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Peter Maydell
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: Marcel Apfelbaum, peter.maydell, qemu-devel
From: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/spapr.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index d2b8b12..b560459 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1528,9 +1528,10 @@ static void ppc_spapr_init(MachineState *machine)
/* Graphics */
if (spapr_vga_init(phb->bus)) {
spapr->has_graphics = true;
+ machine->usb |= defaults_enabled();
}
- if ((spapr->has_graphics && defaults_enabled()) || usb_enabled()) {
+ if (machine->usb) {
pci_create_simple(phb->bus, -1, "pci-ohci");
if (spapr->has_graphics) {
usbdevice_create("keyboard");
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* [Qemu-devel] [PULL 37/37] hw/ppc/mac_newworld: simplify usb controller creation logic
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (35 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 36/37] hw/ppc/spapr: simplify usb controller creation logic Alexander Graf
@ 2015-01-07 15:20 ` Alexander Graf
2015-01-10 21:02 ` [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Peter Maydell
37 siblings, 0 replies; 42+ messages in thread
From: Alexander Graf @ 2015-01-07 15:20 UTC (permalink / raw)
To: qemu-ppc; +Cc: Marcel Apfelbaum, peter.maydell, qemu-devel
From: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/ppc/mac_newworld.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index b54f94a..c377012 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -371,6 +371,7 @@ static void ppc_core99_init(MachineState *machine)
/* 970 gets a U3 bus */
pci_bus = pci_pmac_u3_init(pic, get_system_memory(), get_system_io());
machine_arch = ARCH_MAC99_U3;
+ machine->usb |= defaults_enabled();
} else {
pci_bus = pci_pmac_init(pic, get_system_memory(), get_system_io());
machine_arch = ARCH_MAC99;
@@ -417,8 +418,7 @@ static void ppc_core99_init(MachineState *machine)
dev = qdev_create(adb_bus, TYPE_ADB_MOUSE);
qdev_init_nofail(dev);
- if ((machine_arch == ARCH_MAC99_U3 && defaults_enabled()) ||
- usb_enabled()) {
+ if (machine->usb) {
pci_create_simple(pci_bus, -1, "pci-ohci");
/* U3 needs to use USB for input because Linux doesn't support via-cuda
on PPC64 */
--
1.8.1.4
^ permalink raw reply related [flat|nested] 42+ messages in thread
* Re: [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07
2015-01-07 15:20 [Qemu-devel] [PULL 00/37] ppc patch queue 2015-01-07 Alexander Graf
` (36 preceding siblings ...)
2015-01-07 15:20 ` [Qemu-devel] [PULL 37/37] hw/ppc/mac_newworld: " Alexander Graf
@ 2015-01-10 21:02 ` Peter Maydell
37 siblings, 0 replies; 42+ messages in thread
From: Peter Maydell @ 2015-01-10 21:02 UTC (permalink / raw)
To: Alexander Graf; +Cc: qemu-ppc@nongnu.org, QEMU Developers
On 7 January 2015 at 15:20, Alexander Graf <agraf@suse.de> wrote:
> Hi Peter,
>
> This is my current patch queue for ppc. Please pull.
>
> Alex
>
>
> The following changes since commit ab0302ee764fd702465aef6d88612cdff4302809:
>
> Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20141223' into staging (2014-12-23 15:05:22 +0000)
>
> are available in the git repository at:
>
>
> git://github.com/agraf/qemu.git tags/signed-ppc-for-upstream
>
> for you to fetch changes up to 75c74ccbe1d4175edb79c6f810c2207dcf5edb22:
>
> hw/ppc/mac_newworld: simplify usb controller creation logic (2015-01-07 16:16:29 +0100)
>
> ----------------------------------------------------------------
> Patch queue for ppc - 2015-01-07
>
> New year's release. This time's highlights:
>
> - E500: More RAM support
> - pseries: New SLOF release
> - Migration fixes
> - Simplify USB spawning logic, removes support for explicit usb=off
> - TCG: Simple untansactional TM emulation
>
> ----------------------------------------------------------------
Applied, thanks. (I'd already applied the USB fixes earlier, but the merge
seems to have worked smoothly.)
-- PMM
^ permalink raw reply [flat|nested] 42+ messages in thread