From 188e255bf8ed68fa64bcb63577cb100eeb326254 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 20 Jun 2024 16:59:28 +0200 Subject: [PATCH] hw/s390x: Remove the possibility to load the s390-netboot.img binary Since the netboot code has now been merged into the main s390-ccw.img binary, we don't need the separate s390-netboot.img anymore. Remove it and the code that was responsible for loading it. Message-Id: <20240621082422.136217-6-thuth@redhat.com> Signed-off-by: Thomas Huth --- hw/s390x/ipl.c | 55 ------------------------------------- hw/s390x/ipl.h | 12 +++----- hw/s390x/s390-virtio-ccw.c | 10 ++----- pc-bios/meson.build | 1 - pc-bios/s390-netboot.img | Bin 67232 -> 0 bytes 5 files changed, 6 insertions(+), 72 deletions(-) delete mode 100644 pc-bios/s390-netboot.img diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index 5f60977ceb..8c490eeb52 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -288,7 +288,6 @@ static Property s390_ipl_properties[] = { DEFINE_PROP_STRING("initrd", S390IPLState, initrd), DEFINE_PROP_STRING("cmdline", S390IPLState, cmdline), DEFINE_PROP_STRING("firmware", S390IPLState, firmware), - DEFINE_PROP_STRING("netboot_fw", S390IPLState, netboot_fw), DEFINE_PROP_BOOL("enforce_bios", S390IPLState, enforce_bios, false), DEFINE_PROP_BOOL("iplbext_migration", S390IPLState, iplbext_migration, true), @@ -480,56 +479,6 @@ int s390_ipl_set_loadparm(uint8_t *loadparm) return -1; } -static int load_netboot_image(Error **errp) -{ - MachineState *ms = MACHINE(qdev_get_machine()); - S390IPLState *ipl = get_ipl_device(); - char *netboot_filename; - MemoryRegion *sysmem = get_system_memory(); - MemoryRegion *mr = NULL; - void *ram_ptr = NULL; - int img_size = -1; - - mr = memory_region_find(sysmem, 0, 1).mr; - if (!mr) { - error_setg(errp, "Failed to find memory region at address 0"); - return -1; - } - - ram_ptr = memory_region_get_ram_ptr(mr); - if (!ram_ptr) { - error_setg(errp, "No RAM found"); - goto unref_mr; - } - - netboot_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, ipl->netboot_fw); - if (netboot_filename == NULL) { - error_setg(errp, "Could not find network bootloader '%s'", - ipl->netboot_fw); - goto unref_mr; - } - - img_size = load_elf_ram(netboot_filename, NULL, NULL, NULL, - &ipl->start_addr, - NULL, NULL, NULL, 1, EM_S390, 0, 0, NULL, - false); - - if (img_size < 0) { - img_size = load_image_size(netboot_filename, ram_ptr, ms->ram_size); - ipl->start_addr = KERN_IMAGE_START; - } - - if (img_size < 0) { - error_setg(errp, "Failed to load network bootloader"); - } - - g_free(netboot_filename); - -unref_mr: - memory_region_unref(mr); - return img_size; -} - static bool is_virtio_ccw_device_of_type(IplParameterBlock *iplb, int virtio_id) { @@ -754,10 +703,6 @@ void s390_ipl_prepare_cpu(S390CPU *cpu) ipl->iplb_valid = s390_gen_initial_iplb(ipl); } } - if (ipl->netboot) { - load_netboot_image(&error_fatal); - ipl->qipl.netboot_start_addr = cpu_to_be64(ipl->start_addr); - } s390_ipl_set_boot_menu(ipl); s390_ipl_prepare_qipl(cpu); } diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h index 57cd125769..b2105b616a 100644 --- a/hw/s390x/ipl.h +++ b/hw/s390x/ipl.h @@ -134,11 +134,8 @@ void s390_ipl_clear_reset_request(void); /* * The QEMU IPL Parameters will be stored at absolute address * 204 (0xcc) which means it is 32-bit word aligned but not - * double-word aligned. - * Placement of data fields in this area must account for - * their alignment needs. E.g., netboot_start_address must - * have an offset of 4 + n * 8 bytes within the struct in order - * to keep it double-word aligned. + * double-word aligned. Placement of 64-bit data fields in this + * area must account for their alignment needs. * The total size of the struct must never exceed 28 bytes. * This definition must be kept in sync with the definition * in pc-bios/s390-ccw/iplb.h. @@ -146,9 +143,9 @@ void s390_ipl_clear_reset_request(void); struct QemuIplParameters { uint8_t qipl_flags; uint8_t reserved1[3]; - uint64_t netboot_start_addr; + uint64_t reserved2; uint32_t boot_menu_timeout; - uint8_t reserved2[12]; + uint8_t reserved3[12]; } QEMU_PACKED; typedef struct QemuIplParameters QemuIplParameters; @@ -178,7 +175,6 @@ struct S390IPLState { char *initrd; char *cmdline; char *firmware; - char *netboot_fw; uint8_t cssid; uint8_t ssid; uint16_t devno; diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 5aa8d207a3..529e53f308 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -197,11 +197,10 @@ static void s390_memory_init(MemoryRegion *ram) static void s390_init_ipl_dev(const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *firmware, - const char *netboot_fw, bool enforce_bios) + bool enforce_bios) { Object *new = object_new(TYPE_S390_IPL); DeviceState *dev = DEVICE(new); - char *netboot_fw_prop; if (kernel_filename) { qdev_prop_set_string(dev, "kernel", kernel_filename); @@ -212,11 +211,6 @@ static void s390_init_ipl_dev(const char *kernel_filename, qdev_prop_set_string(dev, "cmdline", kernel_cmdline); qdev_prop_set_string(dev, "firmware", firmware); qdev_prop_set_bit(dev, "enforce_bios", enforce_bios); - netboot_fw_prop = object_property_get_str(new, "netboot_fw", &error_abort); - if (!strlen(netboot_fw_prop)) { - qdev_prop_set_string(dev, "netboot_fw", netboot_fw); - } - g_free(netboot_fw_prop); object_property_add_child(qdev_get_machine(), TYPE_S390_IPL, new); object_unref(new); @@ -284,7 +278,7 @@ static void ccw_init(MachineState *machine) s390_init_ipl_dev(machine->kernel_filename, machine->kernel_cmdline, machine->initrd_filename, machine->firmware ?: "s390-ccw.img", - "s390-netboot.img", true); + true); dev = qdev_new(TYPE_S390_PCI_HOST_BRIDGE); object_property_add_child(qdev_get_machine(), TYPE_S390_PCI_HOST_BRIDGE, diff --git a/pc-bios/meson.build b/pc-bios/meson.build index 090379763e..4823dff189 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -68,7 +68,6 @@ blobs = [ 'kvmvapic.bin', 'pvh.bin', 's390-ccw.img', - 's390-netboot.img', 'slof.bin', 'skiboot.lid', 'palcode-clipper', diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img deleted file mode 100644 index 6908e49f06801808b826d3a01f88132cf1b2f57c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67232 zcmeEPdw5jUwO?m4Bm)LG36n4h7*3KAl7KMbB>^Aj1kePu4k~rk)u_{6tPchl z5VX}HidSn}M>KA=4+pfBtmkpZ<_qd65|G>{ zj|*^f@$)pv_V)jzpnRVD^j;EuZ$W>5hyABs5`FKC{{HsGD~l(Q5|J%tKS`N%<>ePm zy7H3gQzu?`^~8F93z+>Fj8nd{kp6LxlDO&2>%a5f%leM6|E)mvoaR?ts4(vs8_Y-k zIxl(j(M9e|@biL?{&dmg+d4kUf9u^z+h>?l|8V0yw-0@4^XqpW3ah*v-R@IzsG578 zqi6j2i--#GrC{aF@4GcXm!pe_j^gLbbM&eaQB8mOYh8L}947Za54+8H;=pe}J8!rz zG`cQ&$)(p`yZDj|qZiWR>!KH48>Q2%w7pUeIVVotVS`P{|7Am+$*ydVArF(*3?*>-r{7Q`HTpY~n+ z3u2DDuHEu3{sqf<9PuaHSsCIV1!@J4r)J;h|C_D< zpTGb7{pasLfB*UW&)rzyJLG=kK5ROJ8k=DA>_S)VfIY^u#*eBN}vGhemYO zbNu~Q{9kZx2azH^6lFxBmhxA6@_b?pDI!i2#Ac$71W|0Gk?f9%0Ok2d1uC1=1g+Ib zX&>qAE-e-fj$?YMPFE9z_NuQgt`bq2DxM}qJWqKd>b%E&-iNorj*bv1;%DnUp+XVO zd!<7simkA;&^IU{B9zyp>f}ELEu)9hV)Sc;LRZl`*@rIsIH9;o#GTiSR9B5?RwAN- z$n?^9^l<*w9U3W*Y{z%)gW@XFOT}VN-nTjuq&)H}L-H+4PYj}j6-s#Vzn!F@rQ45C z&ileT49z_C4URz zeT&LHoy)a;iT`W=g#V9MMFS1tcNg-zC&f}4EbgHpB0yf#OS42RQCRK1k?XuACOS@F zg@`NlT<3hQ^S$CVVvcflMD4y&RFGH1m9L8m$`^5u&ZTbPQnw6v|84jE7$ecOB#Xm2 z51SsU5>dq{UL&H)wA}OW6<3L^R4D2k$MjQ`QQWm;{Unt{RQb9HfJ!t9t6hxe;)hHR zT`S_A=M8O{(>~57(X5g?A8ml+JQ1Nz5&`mTx+y`MswlQ5Mx)WA=RVU*^UT52Eap2Y zaUX?61F4pZac}e|sC2owj}&p7v&;0-IJ9-)g~e+`+;fAacHcn>i@I;8gca`oF6ONJ zJD9WX+bCga-M3Q0QoD$PmfF1*CGB09UE8LhMcr$-)-9-IzfVCcWN!xrbg$+XR-py^ z4b-(eDQIckakSRG61D6Orj^ZHD}}dAH)OxWRBiPl#f}nwC<(k z&(h!Yx3d(9QZu&|S1~P)167J>-)7TK$Dyq&d&IXL2W2ihRovb8{Va`N`6)kZM44}R z`TLdp-N5&}dHCNm()3aTKds{u<3*;=w6v}oD#dSod=>){?YrG-=^BsG?W)7*cGY6W zx@suFQ1F_+>?o1xyV+{#n$6`Jxtzh}bhq5=X!p{cBGdQn4wdMpb3}timZ}o3Kts&m zPNtvcU>q&AOO-3S@?7R67X_{rbNX%;6RALKRlX)B7W9cAEi%2-h*mJm54WTJb7ys^ zq&$4TrFQvv4(p9ll|(an7}meHk;6v*ed zJtLBDXsrr*I_CpR?^4NY4yH!aOOvzIhIiVy;;O*4Vr%cI;_IZC0a`6GPP@3CNMw33 z3p}0|{Mmi-S01Sz)V$<*k?DOMzrW7w?vkI2Oy9iR%trh2G5#0_k#SDsdM|Rl4IwJgbtr3~MJq7&NVH3S@Bi_+XmZlMTJ3>_4a)Wsk zO*TC=MZ~F0%yOLcZ1Pc|>EV@CEaEiybw?$Y47G^FDNYZ!Fmz6cR}s;<+lDKh8i`EL z4_+sf!&;^ArcEk|3{jeFqGRs%*!lcz62GmpRAn;-`TP8B1xm`TbpmRoFXI}H?d5N> zM!BUbyWASnw-qS1TO-IdxR1Mfvwalw$u{nyY#RlA1qBez*k0=)WuSRFZ@=HL8@uoM zGyS+7mh#ypmx~^!#T~2jMKh5oBSn}*9Z8}WDy*|KqJ&sXLjr?DoX2mJ>7|X0N^+Q( zPl|Yk6fufC;y9`aj1P(rQ@-h?Cv`RH6M=Hl)#MOeOHvypJrT8&HfdD8sfx5U z8jbFF&vBe{T$=RK`1IqpP2PfxSTua6SxF@#=)ATM3{j`UI5#=0ZD^Qgdof4O(}0$D zks2BXsDJr_$T%;6Ksv%i7w^TK{L&OnG+NhH5>4a{Yigmct3$#eRgGw2KvcP@ib88b zG`b_>I8KpEU#P#G>)$JCXtb`W)INc{mZlD&pr|2T*VN*Jwa{myg+Q?=XBo9x%pj#? zga}fB>7}XMhc0Rz2eVjEu%0xQTtu9Ph*_idb)T4;1XrScbSz`Z+dB^ z>7_QYm5vwY@LialUt}a)pHB~cXP6#ZBjTi*9vX$6Lc}RBdvbDkF**~UWShZ7l7Y^A^mKY*P?}66@ z+DtFCi#Sabn;j=mW@z@0H%-wXiKf=1XmnsaDk0E>N1WpDPH@p~9%HB4bO#5#wrhVnNp zrciDUi$s))L@g-px%N$QN#WAShl^C>9t18aGXGKpxOx8 z4{e$n0!1+2ygOz;x@j{1W(u)v(1zqD1qJE9+DjzeUb;&3^zFjxmJ)rN*G}qTdxNES z`lwO_X|xftlVRO{$O^enMp&UvqL>l39}&%@F!ncFde>6&rvKX23cBNQ(fG|mjEmIw zMbF-Q0vDNHdd2io)b!G-*B5vBx_pLezYl%hNOt*hdc`@Wmzqp39TynO?VQH?W}Arn zE`a1Y=qgL=Dxw7RM3#gTBI;Wx#!#V%4{8xbh&E!7~|23WpH5?%Nsm-e6Z*g1;Y`~!Ldw^fYph4!VZMF z%8r4HzuGD}6=q~cD>&5@o{?teRDN*-DVPnT2s09+5N)HFqLR3cJYt;WR4sq!enEXa z8+&JiN-iDFPfv)bU4?;qG1J*)meLfnlvrnNdCdxih`dr)vqG$av$o8&s@7B25_hK> z!rZbrmD|A$_0uJ$k17Mr9WkPoUx@2%Xn9jbgfzB&Wym{wK@4(~A{LN?T_3xr2#MYQ->QBS&v7A+F>q>1S8pNV=> zMYO0$)RRv{)uTl{c|}zHUr|qrhz_4-Y4!({5S0`Y(c+s$C2FgUq7t=>el99ed-yq` z619u26qTqw{FkDVJR+)oT~wl#VQ*Tx{SQhAgIlQ<23i^R-@-sE!%BpKR))SQ4AdSr zUlftUSVPtsMT$|0k2ifT)R*7D_2=Y{2f zV)uJlD0XkRRD0K#4Mhv@y1O^zp!k8McEN`IrLNSLpYm8N&OvdGrFMB}-Iol-Qifu5 z4vLYM+66oRmpc}XfMVAlvrz2%gQa%i%;C$0f;FjKcjus3XQ^HJUp5qrU*oYjGY7?2 zEVZj(Unr!UVdwS`cmGghQqI8sF(Y=MoN*h=868Fu_KyV1841W4_w~yeiyz|N{kh(U zi+dc$(m#EJwYb{!)t}x2X}T%gHN@S?7wCkYJnw5_0d_?1Y_R}VfV}_vXLikb-#K zR8j8%l#@lhLLxfo3`im(I%unuL%eTFIV9ivPeH$Q0Q9T=9nh1CvGx9sl!m-#N@>VD zQq)798B{N&qJoY86ttBCpgrfGh1Sx#R6Z|&R98u{zz7lbJtyU|{8dseD|k!FW%(aT zxvXHll*{r5Nx96oNXlgeCI1W_JDwYW#|i%e9z_S>u}?B_7Jx|0z5cS!!1yYcx19V~Np-*_(}o{Teih0TLtj@iJGE{5MIC=XtR5cZ@Vz z?QPlBzeAq0eaTY7xxWM?pXH$V>}A$kzHBI1Zu{(x>{xtutN2Spf;E7@R2D#!H$C*0 zi1uC+7;Adz1hI%TL$}`t>^r|7*6c^JXCS>T>tbCV5iNKOI@`HX#_r<7(!Nga*iLlr zRpO5a)4sMJMElx(dcXFy-POMS!rB+$vvgMrIYC-5b~dr!L1yQjY@LYie1hpXzVivT zQUrHC?!I5i^enBKpQ|f^XP@($Sj(_Bh$cEWrzsxDx9dfaV99hf#W0EQK~ub4!U}z> zfo-U+ZTSGrv_7y1n&~-hu4Xz{_y+W+xSFYw+b3Y*EH=F~!t{}U_M8}rb4Y14q-Hu> z?OGx-edFBEF?`a02yCThyy(Q7X8gtd1K*GP@!eN5KAh2&_%0fE1o%Gf_ICijht(fz z{*l*n_(cYc??E+x+WL9;9oBgAd`5nH1o*A_H{f@14!=XsU*z-flXTOw9I^#}kN0dl ztTC22pM3Z@D^GqN&MpkMyPvb&&sj$RN8{nck)!2*j{ zJO1!Ya-{AX) z;=4>cUw!Tfa0TB#D6Vpi>^a;0lxsJ$XTJQs+deFKm`{H778f2^Nc;D_gY(HOJO@}v z-F`dv`%Ez$hqWJm)j9leQGWM%`{5Dv_v{h$2Z`>W`|lC-H~sMY^FT`eSNofE`28u5 z{p1ZAZ}GQSG{@&rRPt;-U z6K7s|1aLu5J18GLg8ptig8mLM4m)0P@t*>H`b-o0^heK#%&y4c%nLN?vsSno^;bpB zfZe*%)u=0TTH^v&O9l2Nvya(M@G@+ybT#V3(NgodKi%ywd>H+O-O-l)4H?j%L0-l@ z-en$6-_Xa;8YwQfiT(Bc`}XZxQu}c=M9`BP`G{seBI-zi9boKJE%^@BL#v5ck6y>oC!oOT-6kfzS_)uku=svV&og{e9eTfmq~PAkHPl zC^^6au^@0VylT#P*TwJMeftYZ>rDUnzAb{DADUh&F@01qdtyjhX9m&|JQ;DqJf9T9 ze?WhR9M3ae$&KfX0km81(r*1g+ExB$ddbhUJ8iqfFKZ3LcphGV3v&G(a;$uES3rJ^XoG zuSk2uJ1$A8e6x%fYv_78HX#4ef*UpfFXJWFd+Wyi(tr;baxgYVGvd2eef+vePQ+oe7^%v{{CI| z=RCk)`qU5b_I>#Out(PWkD}%RK7V=tL9W@l5B$BN$B7_%NLTG-qw8Y|&r{PwmvM}X zWBzJFN|o~1Ym|f{_#6Y?+UOVY7UcA|BN@zqwJpxf8DJG zee7r4VQK0VO28*J=TA$oFSe6*58i9mk?!CXs)12 zGmonJy>u-bp0GJz-CgL{^wJrkjPfi^tD#aW6rMqTOAm+0yD~V4M498j+t<>N@$obqy{P#j}lp_1bl^Wp`=+#kEI_Yg@)?o2`|c< zekw{Ak(Y*ADNQABU{HHOpJUahIQmfYlHYwB!rQPB@>vHw)s;|TB*blva7!b|!K>Hn z!}ckyYAX4fLh3O11?VAl7(-l6N*ItYfF~dwWodxEN!2`fqpO;SG0gcTTdJn9=iV8X zs(NVMB31JtMkkEV0HRMdFZbjXHAG=e^;v2d&}eF*s3FDmlK$M0mLt59Xb$Sj(oE0G z>>1J@`g9X?xoMD{WS?Mfx{3;^&{8{P1l}3uYBJah_yN;P!E_ZBQ=z3LHG(~3h3Tbh zwv0)V*h(jedx+rG%>MXQlutuBBEiShcstJe%G(yDk|gFhHXtg#S43&7r6x7mn2k6LLO{ettZC26>5p@0s*ozGL7`Ke`7vLw?0>?cplW`9+4#V_PJbfo1LKKb_ z(uur?eXtUmk9^`0qKK~hB5JHqM2Jckn0{L5#(~uW`o5>cV?5U7>y*@RNfjbarAASV zieZ=AXoV257|~Uqh=6w0LJ@V|LTe)9{E78dmdi;IixfhPO3VAAf!@W6Z}|;+?A=;i1^*73 z^s17o?}YS!RIbm;^woAJc%P-Ercgr6AYVzf2s&Me6iF9pL_r48U%JO+0nzEb&(r0fUggwT2ApNOa_GRIK0ztS8-Mg9?CEd{)@b&G%<>Z0D>zjM9u z;u-RaA2Jrj;vV)sdJ&QTF6_Voum?rP*(r|E1;e)Tf-N6|7h>W6EKnI^rPEXleb+TX7Q}*LJ z*&C(*9K(AD@2wA-ewvk@;;yr5x%!(_d!w$}FSeJ0QtZv-wZisRS{GIk=WD-6>(Xz7 zV z5nbI*mI|ILnwYLsT~|Gl%Zesa5bu`zMR+G8K{PLXVzdzcPx{Ck(ULe5Yz|keHKKt= zWT|p*Ib%8-+|1==i*tStby*q$_1x{1l(Sdi8W&r7*9`KeuZBlz0oIMO9|cy5Oy3sJ zY7=`Fzq=gYPyI1d>_ z?~C!g=U)E)HU54le`gQHp6~K^Uavj3@b?BTBjH)a-*1p{U~c?a8$Wwl1UTYuQ&_G1 zzLnH``w=N=gf@l{e=C|PA91V4w~EcAi`qfE@av?xriUhrIE@mE$RnBu zA=3a;anCOCa|hlH^4F`9-@rnjzTbX7E59{WqBrYr46z)e?fm^m{QOP)|Bk?uCdSkH zJ-=n&Q0q7R{cbM#D=yiFU9zA+?jNGZf!z#|d+fp3bGDJNAGT7!5wYTo70a1KvpzFY zDIL+fkPMl3A(|W`eix#U@s#7n!L{*pEutN;i)AIro?V<#V^>5=Nq_qZOhMq?kQMw? zm%c;Bgfi467`>BMi$^$8>Jt}k-rrrguQR=L7y8=MBVq1Hl5&%2g;E+M;Uv+zSCu4% z5J8l5BVQ1K!5I@b0m+6j7;p3pMg@_>nzCrRgHd<8}K`#0dGsJZDE)vk1~9 zSg&an?@T`d`(~>ss~8_@=a>UmBm8rleXt4P1p&_!TEW7y;Q5K zNlGv4r>*%{qsO^_uvCl{A{}$%;0ZL#aTFQnR&g)yhEk%d&9;CUK`w%uyy;KuR*r90 zZt}?JY#BYnvIruogG1ku^JgJ~J6O;s^$y4b^G|bE8^?cp&H+S959IpuIxP*-hZWKa zDIrdTjgAW2JQ}1Y=5L~w1|gS>>7i#toXP>sjlZyvF4EhfI*#)M$2$gD>ccu$Zv3f) z$4Y5P6r&N%XF2Yj>5var7UlWyY~BuDE6gjl@8$PMKc%I_9yifW7%Pi8(Y`O!SfnQh@u0%+qLu5}ZqB-nA$@=R!;G3h{~mA!=}MzDp(9^| z6~Znoy(5W^n*?vXb58}2wPG=7CVq~UWa->FtGFs~k(fhsEH$ZSbqSgv>V_j5QoZS? zO>Pbd&ew39ul*^TM%|We19?@LvO;b?Cwqvd)Xm0b6og+RnJ%_whX!@wp(t%I< zah6B=2DCQ_?Qv<6e1&zg0d2DmCEIt~maUF*TkF>{3kpPS-ur+VeCph@BC1MZl{QPc zo1QJ`3;5lYTuut>ljXELqJ}82aTI*f+QidNpQR!4VALkj)6-&>(ldxaGzW9mg>M=y zcGC1RZOu386QJa=n1>mSmfFfuH%X#$w>0ee^NmWG8*4^AbMsQXvvia-Lam* zqBK%u=og}#JXSD8=%r)J(0oWGc*)F`6P-vZgvK_@Mi z@*2L}ET^xD8geYPg(wkF{K)LFR#Xu9)zU4Clh6TA;JphPpW~lgHbTT{CGQz=3W)$Y zeubgSQ27Cn8Dc9{NLbz4;G~ziwTloVN(#=T%u<>yqR!ia5sZ-`g3jM8wMC%>OF!jw zjOnH6hOT-rSI1omjw|1bI`WiPhP5OGMlwy5Qjz#Jd8{I2qAI_pWT}|rd}rh>Y7H_4 ztkGx;_9J)A#rioeTL%vQ=G&xjE0^QMk!A3Vb0M@((@Qv+n3-LHeNT#v^Ss=TbMp&1 z5V2i|(S=>%I??P6WM#kUJ0YctX3n}oi~hpcAwOEwbF>JMx8xeJnY>~vHDZ0O*(6(Xz7CET#L5vZP#f38N}TZHk))#kl+pT-Iw8$tYLpk7`>$FRha;V?Ho{)7Hs0jiME$h)kBhBz^UL zUu60^xiwE<7O&x%l!xeX@iciQ)@xPr1uCr(pvux>U5%Gw%=(szOy3i-CTH=h!u!Bv zG1GAxL-r%<3+zWkkiLa6#$M23iLO;s>V3KO zIWP~)Dbrl}Y6GN!vmavaqmi6^GrzG~MLJ^qk)zuV5 z)D7OSn(`Q_RQ`HOPM7bdXWvowoe_Efxra#9D#Y?cqTC-a*s?j!*)57#$}VqIQ%c)$ zDP&$3eTlK#5gCjo|26sN~f%+~GHAd4|3ou6*pVBxlw!tY zwk|_U@qRWHIw|CdjVY|@Ul@rErEQG^YNx)a_LTSbsr|!&`w#TMlMT_+gOhv6w6M)_ z_PN!ZpKZ!hnE6$2VAfW@C1xl}MAJwQsiWKS)rzpDYJh&kZ()H!t}~Qg{T`l8dCW-K z$?RSxZ7oDo?hpY5a#@|OcD>W4bU)dqbUo0fbUoarbUoOnboD|m?R!=%qS>OE=71=6t7UiGbj9|a zf`Wc|8Skeb#aWB+Eq`r_RP?jz{E?fa91u>al-?rkY`J|KUg2!Bg_Oy93M@s+s;xLT zj3hUP(OT#ge)C6ua~wbUHMd=D`spz%28kK@BG-;Z2GdoeJ7T1)I@;Bs>X?rNS#Au9 zCB)VRXKb6&%6jFVn=n>;z=1fo;)tO#bBCy4eYA+Pheqi_WV{)0j&Zg91}t1##-u>) zY)4r2F>I$>#-suwN@uU9lrEx#T(V01ErvP9=hIQTgkgVW3-X1=X>C}uAL1v!3u~!> zl*LnIXek{dzv?8edj`YrwbYF|a7l26kBvB!V@psBJ9_S?c6Jtu;qFgkLq^-FW?t(=Mf{6f@Z6%V%Z_&XB;>$XQ+a4h&xH6)qV(BaroUg z0OJIym*+<``yr8W?m8RsyMLeyC%YMi|y)$fJ9 zZPf@PW+!2f2&<`@0V|F39oD}IZWD*TT7#2PxjlC&^V+9uuA6@LZeH^RUF>dM+Dz+dK+h@PDRBWZ7zIfAfmOfOx+BRoLX ztzW+0lY$-RW~_*nKYTSWEM4Pn)O65~{_ zS!(yoxpSpya-}Lm-E*b4plPM6Xa-K_cSrc-bOsGcU%flP7XAhsSrV1_$cUCw(J%iR z7Mb$gpN&Ln0x*gX3WqqaWo<-F`Js!T--$^{`&7cGHc>tsY7ouDYh^{6%RG$MR=n3n zs&1rGS4y3QXyOXF_LUgkuinOZ=c)AhaDtPq{8dCvsYXmfwesn(%9=DNu^+01E>!sp zRb2VAk>q}vn@v2~?RO#LjeX@VK(O-ewmgj@)zAGIBVcI>l9^;n@)`dBk`@NH<)PxL z{LLb$bRZ|Hw8{{L&R{yJ-p5*>KZN+!d`q1CH=fOEi zVa0z*83J$p4@f_SEKgf;Ii9MIwRw`f%0;H{IL?&ZOfihha^`u*4#Su%f4Pm+n8@^9 zhqrE4TxB`u1fS5$C7yLl{16zjy;1A#kQC;D#|7Gdg~xkbB$V=F^{g1n<6Q|pBiDL@ zB3k!mQ2ctb_lPK6>2i{Cr;lM;+o;+}&5HI?h#Q!Y>Be`zuY=C z)ax%sR$Z6x3^iJL-LWlm!mV=MQGQ!q60pHOfjox5j(3&`>)I$5bKe@E&MYU1amLvR z%K?3?1Dr%;`j7#7mT1o3j8UCS`1v%EaUMY1 zMkqA_gf$cbLVyQJm_E=ZH9AzRyV)f%}?+X^~N)DzLMOAT=OE7~8~w%?v&(g60{xRiyyy z<9;eK9!Qe0F$GVJUp1*I6168G_ggWv4bw}v;Vc|J9wOuXtc{Z7=HjeytxjI5NiUO9 z8t-HwqPaYJ<9{r1VI5;YDQGKb_rUrC_hG#q-V@Tsg3O9;2EmoUWc(e0Ht{_gByL8= zdAe1UQH^*MJ0|j5ip^AmJxtV5S@|Zjl;-DTnYU5<*oTn8eAS;KTBpw_Zvk#IjHFt~ zdt(iOXTWmIe0@B2XQrd^3&r=yZ?)J-@)^ZR1$_q|O+N3SLY#iKMjHy(Z-kBqZ4qIFVwCWZEeG6&%upw(5Uo|CYj zY(I%J05(`Hthc~hKMNP1e-xiDGR~9YE6DXvL%3duN3fQtpiiFk0as|}j7=G^oUlXA zI-g#D0?H`h^FgVnK>j*uqkC%mL>uYIqD^x!Qf+8s;uY==JNBAu`gR*hbIK*!=7-GEU(PuK9Or% zKA&O^rttyRt7cfar!{Wr(I`FR_1yE(Tsjai0+ZWMCTgEfR5Dv^rMy5f?A(s?Ty-bT zz|!gEpsw^9%$F;j&B8dW_&Z~d+|tU5x6%4+#|Wsb39tNPHk*6xhg|meC|kQjl#ydr zaz>vWkhNF*3S4&OFXed`TiYvWB61OnI1S?5q_BG3U=F5eW2^m8V{44opTxSzDI!R} zLC*2)+Nk~OdPwSlu83RKfE1`&iQ}{|s%G%e*GvV+PpUAWloL>Q?+Z zD{c3_j6L|%$@stfPa;EsEn`~Qq9T6ET;=KY)RO%T8ehpJKj!-=zAjrKI_fcbPGWkf zD6mn)oxj2ZFg;#M#jsnkBsL^#S;kq|2`s@*>;2-AS!$^*6Pdnr?pJYOg~;^1%(%Rp z!{uut<9rVz)QHUG$_l^yBmTuOgnmwA6%`)|HhTsT9sJj%F!cCnbj1Bi7>fmY5#eB%;ng+}yn{^D4ca zH4)?k%Q#!Nj7a2*xbr->o}nRb%Q#Ih7h4^ina$!>;km-C_WXlejXSTus-!%f$c_1T z(7)DU-P1nid?q0|tj0MHrVyHe-Mg-!%8FE2xh9Nf1v4~#l5x}$Nj zoG-M!W{#ACtQ2-N(c|dw&q%LD)_xJEdZX1&u~jZZgRN9*2HX6h0R_`a3T5O?4Um57 zq~A<>EwZpOZFn#i&fjw9U}5$dzzNwhwv2tovMf%>4tN6y`|0WUYg{i*O!uyahuI!B2EjeWT%gOR+7E(Yl)0=lOD+%Egd#eoC1{k zP22$S40%kA&J|Io%h2r&d?KqNBGud{L&GMc;Rwm5xWVT3{f%mVxnc+P<> zZf6)JM$s@)JLqGxl8TL%WQ_K3+%hk%z;nS!*qvzwS$knoNGoA?z6{OoNGrI@ zhTEFN7LRu1x20u7-q|ow;Jj3vD7!JJI^;zndDZ6LGQun-6wb zzDuS3q}6YM+E?7E7{^$bDMaYhCxE(9Wg}8%3q_6!B^z6idUttmgAqU z2F&}x@w(}ui$t8BXWu~BfgeEqn)}%==5AP(`03rQb&Y*TY7)HO@7*%yvHCWh9+?*`)xn(;8Smg(GEO*nN~0K42L>{t0o82;t_`#RqB?#;IA zo3!53QYNC#rvaP;vedYGAt*%pfg4)VhZe^<17VPa z6Gg@;$c+Ffk>%r>(Y%&Jz*9sWSO)G8fhkjT)$W9rYJ}`(4b9%hJ-#S14tD(g`zhD8 zWSz+Lz3$qVW#0VUtccotJ{zcm{pcbQcRm))`5Nyxz~iIzlg=^+Q{7sP)LS)D1y0>7MbP=9S<1c`INisr zv-W&Uo-xXP(D)HA%0ua313LA{dA!CR+W5>wJl0xSqrh}NJ5OEnSn|X zrxBdv6223aBI;}i)E;QRpRFYolroY@?BGkwVuSY^8=%cQo3Soe z)krHD{AhB1x6t#MBd6zv{z zr^dR+*wc(qGLN5X_D?_^W9Nu~gX|@j-bGpct9^7|Ov275 zky+0|_QrQQEG^}Ozd1Nq_GAgrv0sxCZ`q$KV+VKnu;j`mIj*ek%aySMV~@tpT+rwK zf{%Np8xJMp&T6TK^+@oD4Y0hQ#tqLy@S>o&J7 zXsUXyt-Fx>5fNcosrwkdFK|!_bmhPj?c<#%XoT#Pp`~~pk6CN!xPt?A(p$2cZU6l& zGZykJLN<)k#p$__VD_cho~81{hR%`_g6n;9Ob*(qriV7blYAd&PiPl0#F7_hCNkJdc&M@;14W#3YV|KbD`}B%fI+Z3anM%suN$&ET^x#q}e?89d}C zmuhnIlk^%M@P_3%)=gKQj$5gij`=1^g;FloCZ6|$@T;ZzoG< zuSPxOqhR~-j)!-y;9bl3-W_PRl~zdgK~8ZTXAF89j`(5bwG}Jj$Ao7U&o-5Z2{3zwBNzdh50Yf+^2mi8D=p%TVTD6}q8oYBs51-(hYu}OfPH7K96a*sY zpxsnwS6wyoQ)4}|Z*Jvum)56eqv}{sg4c`G=&=q)p|qhT*}7Hk8`0skDtRTz|Sk?J$ktL1b0d{1)gmGIp0Wibjd~$bbgC{)kxTz z%owpn+Vs;iQez^jY%pT>24j@H$e2_xF&u#>*D`!OSMYsX_ma;#7oMuc3#}_+3hrm2#Vi$Eh|!t$0alOcXCK3P zB2K6BQ?^u$`;FK_!|;0&qCo0kfdV$#2xvv(znxc2FFnoWVXxwSuj+bNW(Mx;#mXn8 zQ~7=^Shb5%w0zqz=CY4DeB z5dkVFfj{dkOAUEwo$z_8N^k;vCT2!#g}tEQ_aaW`wNHvEWr(62`>GO>HkC>-&)J3h zN(?Q``oYfG?kMtUuxs)9tGj|KXpV?d0oMlJMFY=`S)xF#A-VFh?Kws$+>XzpI)sjEcK?pEI2ng@Lhu4ZU9pA1#<8R(uL7%A4I&w!<4T>6 z+_=)$AkRo#SmSd2|6IMTnes$WA7mHU<{mUOP2o8?3S*%CmSupO*B7uq2>bfazKCsR zk2!l?OW}O6)Y%J5_RSv|2|Fn=RKStb&mnTWNlkg$Pv`R%BQOq;qN6IyH%LD?Q9&b( zKcrw0n<^@37VfY%LMhB7`{GqpTB#J@Y{79MUcy}{wN|(&OnyUGbt9x|#wb{&T=a&*=WPsp!v8%h-lOOPM!~xR^@7Uvs?@`sDrQk_E>_!;NPxC~^`Jo)^{o9f2 zi(?v5BTk5zQf~g1DJjZmh?NQxtuuXelsK0>Vx)tyxTt-S zE!KNhB767mTO+1vf(VcE^c?Am=DQ z+wKSN0>a-51h?0;e0Cs-zn~I#I1!Q z>ZwF@jOPK4fAOf@KVTN9hr6@Ac^s=-oZnZl*fk zXN!^;?MiuTIp+Onwp;YR!R5SiR{>oZMah7yE44k?Qw+{2g1G!hSfy~-X5WRQH^{mX zjZf_J!u(?-$Y%a^uktirxlz8ww_;N)4} zZg_#|p?gJC+3m)K;I2h)L`_gwwUgOM3DZjp%+)m89kZZ2X2?P!$E?`W><;q6Uu_Y5 zN~0XLgvfv*b2Z;2iLsvS)~i0So;!Xe)DZ9;v;%jk5M#d_o*`y4+oQf9owWT}1olfS#*nqnD}^BjGUekWe@rDh#V3 zL>^4-(8*IZB@j4U)nzV*pdXU$51Gd9bZP9)^u0{sDtWv`#=Y_m=1H$fx&f?ve{3WZ zptwdW?B4iL$Jhh!Z)fo~v_ychzDazW{SjuGe)iL4ta>jv@MHj-!${h{)zwhBXyzzc zrf+U#o~5P=VcW6apkR}p3P6Y4M)s?z!Mbk$&Tm9wDHT4-xFr{(WR}uoM3Y%lQhw$= zBT9l|jZ$o>(Mq=bK^OZ}>Mnq!pcBY#?kB{VCAbABfe?A|fhJT5VWP1O+&m1?T z@666|-k9thpZFa)$0FklV_4f822X0P!o`lz;%*R0w47fWQ#sq zMsG1s&h%~o4+FRKq(!FpK2hWJiHwsccltgDW2XIs*Fwf|_AcY!@9?fv3jMcr%5y5OGW1 z0%XGSXpbW^5Bw$FHSSfn@aZYf>WhUg*9)8=TtMqL{m4r_(s7EP7b=Yev- zvB(nz4Pc81&rcB8sV;m1ux> z@_}tP#gd*tP5W46-AE#COGbyh<>oYMgVe6RZuz$W;3M)gB^Be5ER%DztR*2uvbUrlwG{w;H zj;Qn{k#W8)>t@e=Z(tdq><+XpG7jYIJm`&X5A&T5jj9;eF1v|mfXCfg$um*BR;9do zYSN>tF%SIUznvBtXNIWbeqpJDtU0QEq=OtV%gn*l1-b=pfEO{}$e|b3TGaN5j$)|x zla|)vm60i7t))l z5AZLjbiEC-{sqOZwu*RxT3u~HX2a>&|MpzQYtu_RMW%1Nr6!NbQCTTdS=3QPopU30 zCreM3P{PoXA=KP?f*i}fUmff{QR!g!{m=H5&&PiTO;H4B6tBq`+nKPd-|(su@^oT_ zeXAouo{HlldML0+Pe4lghNXt`*+&MJe#Cdco_vk;H>V2#&n}ZC#!!l9I`AgzjW29D zDK!kf1=!mvyr8+G9qezAxyx3FIO%37HKqOT&H?Eb(sF_nC%vdXfqih(L3g>S{BA=) zdgVfXld_+lK8t0zxvmTc=~~Kuh#^@}R_w~l%SF_AbKtt=tcdQqmEO7RD|`{d+z$QI z*}x|brRn7^w9C_L+U)$c7<>vHq6jsJmMqY4!6W$abW)*$j;m^ zTP+x`p;8Op7e^lbxQkCyI?kgXBC6ZXv$>S_Y{p|`7iQF1VuVsYyvyP@vfT)*-zzz^ z^BdQjJRjq=SHiU(`r}@VM;)Ij`JtijWl4Y6br@Zxn^#s1qUA)!X<&Ngb4>WR);%hE z`fQXN{WnCBA_4}dq?XDhC_DBQtc<%es>luh0whX z&3+c#YUDITcDVb;L@ON1?jN%bbN>K;fR5gZlOA2QIdj~uZ|@5q!#`l(H$4Q)3GQ9@ zj9$YQKCd{5;J@n`eIqhD@_8GwI4bgl*;4fy3POK#XEUVMux2xZh7|O%gn)BeWCK9C z8dBVH$h-j!h|Bd;eD;ZyTl&w<({tTSAR9z2g|hwuL}lM~&mBjJW6?@y_^>6}Yl`U}G~Yc#dNMeFACPfIda-42@^au)K9~25+A8OPrLSy^(MT(# z`Pe@SXGg`bL$bXU9#casRh3Y&#}r$@-E;VX^E)cJ@BEHJevgCAueRU(YW?%J&-|j? zKR3U%`I;-0JqX$lJm}78^+4~Pk{?^4r1U?_7qj|jwj?F9?1)(e4xnb|x8$KVB~|9y zf_aW*mLX6U=6RHMMDvVu^TV3wt~vk2JnQ5s@5CxA|6jJvY4~l0b?}~MX+bOBD$lw> zjG4hoE7W?Lw zG3@bOpPofSXb5zOnt7OqF?UG$ItJQY3Z0QW;S?f26O>+tbH;)UY#pK~57B0SbbUl$ zg^nj{3@pjHoe%}<=Nxh4z|U(+(NEdq>xn(mM}m6Wd@32Ls;q}EQ`Ff5-VK;)M=(rt zMaKDwYtMK65KJ%KiCiWa8DvP}(Tkz9zYQ~8ekt@=j!cfzB#y6)(lU+nK z7yMo{5TE{cBifdx-ymwBtHZBV*HS(`k;2-Nd7C&^muGCgd+ON5eI0}Olcn5qA&`{UB_fvyZOf+Td4baIA(`TtS-KLLt{3$>n~=b&nBCX{yLL z54!W7^GgHV<8ZQlEk=U*p+=sv-P;D)8|2A>--nqm`#t(AdqbWP@c4`;-5sN!yJKW? zCdhl(p225eML&1XPWZg0=<)JRn3-{WW?h7wTidud&JtCWgg0gRbLE>Lhl)is*Nj0v zDENKWde%M5O5wBvStNC}#ph-mWPV+=+-PaxTQnh=xaVE$M>t}$gc31fM2(KztGr}QULW>_W3M2%`MMozGGj>)mX)4e#1S?a_e}?IKIAU z%78kaGMv@RUar9CPiry#)a=p;q^%Hn${OTvj_^UA>s*{UQBk3hv_Zo-laesz$#EUa znFZ9nurl+w76BSHBc3Li*U1~Wul(-vHjHmSjg{q@F=~)!D^vuU*>!~+v5pq<1o{k3 z(?!N9=eB<5_6;9A?pys;Ibw8Z>{s~x^Zd&b_yhlXs+@CVemE-70K1jd!m~G%?P6zu zUIAs`1v7?xVzTcK&v$3*do-Qk7B0U)+F_CrTo5e)-NGj#CyE zagP@#e9&=`$Hz02;jD94{#NBIw%_yZFe)KJAa~kRmz#ZHR>bd^s|>7hVCnQc_=0mC zobcDC=fEFaL_EC8b&i^KoZfF9yf1iro8>gpNTr6Dm9!BVuf-hjA37iOo0Xh~pYQsg zhH*NYdwPbuBhTfize;*aJVYmfPL5$epW%-USP^s#JcD>e6jv2j1vZGN)5&Gosz3ZL z$){X?6r_p z+j~lvMq-`=9}Q#`nPX`!1aHe!A#;kq_0OE!J}mCzAm^0+m|^*8B%~w%C^8w%bTW+1 zy7I}QoC?Dsoysc399qt~Mb^Pq2H%yw3%KSQd5X|?HvhU_)Hpj`oOX(ga|%DbO4K;J z-KV=n#yOs!UMy;yJ?_&zBIDHa(}<{XdfcZyBI6(q+EaQOGHkd{k!fQTKW#+54fiSX zZm2k`C_QP*VtAYM?iLYJN~VcmZ${TzVNt4;s}^>s{xyrS=y`xgyqH@plUY=GE@zU$ znI1B|Oi`tLh9i4~jjH!As8P~=fRs_$zXO!=sm^DukQ7Su#Tr6R=I@}_4^HIT*yRqC zGBCfMl6Se>3e+v>7Hepl$n;%>^(HcXr;C8IV^lFHzT~+;CAak)tkPK;-`Cy>|HBR< zPf0uYami1)yaz2nmMp|CJ~0V~!#b~|lJgnk7Ff|c zI>}SASmpu`hePuHc{~a_>`o=km|M|2=q|{u!E2GT0KAu5m>Z@}=D^l=+|dxG1nl%~ z43nR;o>s9>ciG>V_tiQMMtRS8SP~{5FKsMr72uPp*EsL}Yf<(F_F5WzK$vERBffF} zr=Oh4KB3--7NdpWgmdWOg_`OWbLgopW7tl{o=dMq*<ZAB1=dFPREfwCEwhAb4S*WLBlmh#%Ac>CHg z&UyD02bpZTn-Gzy@b?eJ49fFQ7AI03JYv9MsyH^HY{C9`?nw;jA>;fXZr_k&CQoW) zW*n07MjQtqWd-!Vo9{yz!x@*$P<}Icx17Wlo0)vx%zLk^fy+n@TiS0Bqb+KjH+Tj1 z_b7AM9<1c+hbqYe4`{N4vkEMy%-oWrm74}3Ps`({zV-Gkq8^NKW} ze&Ha|Oz^v)O3pyV&+g+4uu*zeG_YllpB~lfdb#GWKbJFTE)fkJDJ2JZe7Tt=QTZr*1jk zGiA&I=i^^Q`IwvS@4FEmutDZLS^ohErNIb=AlV-atd3felPYep^ln%<{K!t*#ksXa z1D%gjLwem;z88XShE=U7xx)wvDdn| z26C_be|z5_-Bxwy`IW6iwo8cYC_#=PxehjQ0NF}HATb3j+X*oNN8|^DrZkbIXIqUd z3F+BM+G%S*Go+m^^`zyL{@5jOlD+&WjG%?7*tW3UoF3-vw3}(!f!&z_rVqN^aZ6>Y zmbM9gdp_TLpCmg8bEfQ{eJ9S-yT9-Ee((2w@4eq2s-7h}7TPMRB^PoEv`nR_(J2l) zDa6~H0(%Kg(Kw@10D7ujY!&DtSkqN0-q0y-_jq`Q=4iyhM|-~Ct_IcWc0=ICxYX#Y;;=qqy2eplw`KEF>c=i9yo%;Wgw zp#7@Mxt7a8`xTj^Gjh=W2Y;K)xvr>^+|!c0{*d(30=^UY47`JgH>E$gAne`GHU(Ol zf;X|vug1?~eQ8p3s7-d*Uxv>T=?~T-wd}CJ0)9@sWO>6xZ0*Z4EB!$)mxY+ORE+Gf zzbH%gcceeqRE~SQ9QRkUWIrYS!Nzjj%jLMEvSc5V{@{{w-0S7IDOs|QN`KH_j+-vW z{iQ6~Iq45xRF3<*a@^--$)3O+7fX+T|EJcyRvS(sZhXhf9#cdM(lB&Z$dY{*|5_zW zc7lI($dWz6zo2tB#J{eQCHqe457uKhhFZZ9aLgXLiNaXb8d=YwaVenMct6u#z~)P` zWOs7d_vOZ*I~?3kY!lBH+An&zgw}EiS>U3VPgNVo$|XD~OZFn^4=zQ$Ru3%cbA2p* zFCO4LunSewxU-z+e&~oxf6%A%!2S~2$h&qi#Cdr98!O}g1zDQK_%Gu;;ot?djP*oR z&UVmDF~K=gT-(Lv+Wvzq&3>n{KV_ZfWwaZ#xnl3!woiY7{gSlNTG`1nqet7&!?^>_ zAIjFq)ww^Y-R!MuwSw(!XaKO+g|$o(9z|Q0!Y>3gFMJid=s3x6tfz}{PWAn>Q*jvw zITn_jUaPbp=Q8MnzSH|IS{cfoB6%(L@Q@e_3ycIf7Pga)6%wb{t@JkqHyPL|$>Wr6 z{tJ1W#vpm((2hD~FDpj}LQ}#eudrd8;+dl)T(XV*o51?>N}NjDzm^;6v~P)A0qscp z7Yu9M3**FkA%~i@P}`LFHR}MZlPl;_nWIj*i9K>KwW?dB*Qqhsuz?;T^9g5{q%;(N zU8Z_`dRU+2`@c)9WBPQyzK%?XdS%C;;HEE!R-FPb&nq6Fyprj3{Z=ju zw(9-UjkExMqF9glVfY%*_hw4NnZ4q`$~s1;F3tHoiVF!tmhW?Xe_49$cJuK?@MhyB9DsP(0dXa0tsOgBz**|*U{9euv9TAm( z7w12Q{C0u!Kli@*;U%YJw^g4XiDt-mTHcu)`7AFq)6xF0w|LU>&U}f(Ud5=iZiV&c z;!D(Kg@O5)hx+Ud{MKK{oC~AXiWYfpkbe57rGVrkvduLdnqrSAYpmeYTb16JXN9r} z5PF;~K+?*s$mhG1?M^!O_20C_(>*#pZrGtu#4_KW#qfhwsH4l2MHknA6+}vh&sz8^ zYpQsXCCCQ2wTOZC51&uG_bv8|)kdGRyv3LJb^_Y;%dH@P>GQmWKP=~j?nx#013LFd zEpNJ(rmSFk0l`kZ8~NhSlUC(Tda7{&Wr7LFZG$ML#-EEknAN zHG8~I!=n}C-~WUIq4 z&q_a+e-dRcStv{F$*oo2NgQFnO|LS2T?^af*8Z6X$ql_9M~CXYQ6Zw_-p&!Ajf^4H*+@7n-BT^aP#Y#VV_D##1 z#~3ixwf5(0Xvzx1u7t86#`$+T`4{=+VX6!5KUQ~?u=Zjv1D`b2qkHB*E4bTZ@_=p2 zgZ3|E$;LVLW1umhVV69Gwm1Cg~OPiY=%YMsv!&&Nn|=a0MmdVpXsm#t zbnz+qSz4fcDKxF}H_IHoRb{zA?XqCGfOlEg@d8IY8J5aoJxV{k1@L;cknQEm9DN!X z>n~e7T6iBUWmVZSsAp>grwYqh7amsdV4scUIo$s-w7mFK=y}yI_?*Iti4$A*acClP z?x%a#oT3LhSy#smzM*Lt9EAKDe_4O7Lz+REOD&`xljFvwt~O zj?gn~TYJUQCfR0xvTUnlGCC21(cYF}aC8>OiCR+j{Q|N>K@Y z@|>`^>71~*$bkiH4`YW4+iz#}3bVi5o7%Uyl5NjA zdLPccA=_bqB^ZW?rB50Ll}E)Pe8v{zr^PPd;=l}l-8^ITJ$dtEF11uvKnRk zTgZ1DSaxwhQ-16;7SBzk?)g7-hEw=JDJu6(7b`t}XuZPzjax|`)D7#N4?Eg_+|HCE z^MrMAtM}N2J>KF|71;ckiccO}gg(A@e`rd<1+d^%Vt~5AzjEv=(tjUtxtn35WEI#7 z--1C6sX>O+zA8xZ>B0h>+tO-KJbjZW2bh=Zm=CG?-_L~s=UWU&wLDpY)MCg1!K#_| zl;PmP?qMaP_w&l%tFc*Fwq)6ln zIwEtflw1LhivCkYzQ^i$H(ilLeU~-M9lY~M1$`HvfBy5&Lz8oG3|i$1j_X6m^4B}I zHk@_Q{f%lEzWLoyIuERdrH!&wnER`iH{Z>ENLKoqWXBOY(L(!sME+{oQRC|M=DT}D zeh~fEREN16cM7BO&#W)6X|f8>BK*xG&S;fs$Oxc*8Rq=PGG4Qc4yW?VC)8P&tIrboPWr1bbQMtZ>OCSK42!9YRegIz{;IH;62OAX znk|tJfY;!aW-HxrVzvFE&!;?EEo;&@GFRBeUT+XKLRW?I`HlWZ+lPy_zL%}?t!&J2PXD2SUUt}GE$rD$yr31*71^;JlzAo>Ex0mTlq46@eKd)hZ zgZ-q78Q$O4=YmW53sx53pW#B-3kiw+tgly#HH|efUR$g5ELj@8w&jt6pPp%YT(;Sd zVQ*jm2j_;O3d)X#v&O%p6C4XCau@vrZr0A+P1BCl;qEI zew`oManv>q3~GL;LPr+ers8Lplx5$P)Z0d7SHiY`f!z~J4NSi*OS4ZZ{t-7I%(*#o zOOAb9TsjLpJsM;Rgyfc5UAVwh`!K4^L}li59Sr zs0%8b9P_2`D!%kQ_20lJ8Vz)Xyo%uY$o6;p9#$M(^TTXy0@jjHIy`U_O>rF!&N+xY zsrcTx+!-LiUI;=#qN(1HAb1cg)Ih)9epf-{0b*SnFZkn@b^ayGo6v3!g+!E(t?V#I zt>CHrj_A{d^(f18|MU~ZFyFDc{ZGrsidc7=z-Qu2z4!T*Hp`Sw$!)e>sG;5dXThsW zk6q+^ZqF>YC};nH`HmKH$s6r6)p01#bANTLmiL@uIkl;#Mn86YxA17}f=qSuQaQl> z#ILn>0a}(15NO)%2QArT<%@f;uct=2ja<#Q!eab6(lyF&lkIDPM+Anxt0i3UQ9I{$ z<3yKi+~>^?_upEb+B2(tTEAP~&%grnZUr+nmI^*ijSQI&%Q~`s@UXa5ZfDxp56Crp z*)yt1*I5g=M@zX!1RJ8XN6Q-_d?XxLHoK&0|K_axru|cu z8aJDBb07pIcxL^W+pjqGwDev>NyU8=*uYdB_FEtE_xW3;Nvmav)^NG44lnQe4$IZR zBPx4Da(%0L4Lr_ZHw!LWov&Fz#G_1qtG^F@QoeKSf8^3azSb74f6KRGTJOG39HYLT zJoI$z^QFNERM{1(q2tiqhP)3;Iik+>Jg=|O7B|+*zvdC>3Oz1JK4HV##L+@M!BU&; z<6S$bhYPF!JyreM+T0;c+7z0aa7b|Y;0<-J+f zqJ$+p(81+ea_3=roNc8%QSkAN7I+Kx)5|4%9eXo^G@VOI`yDM?jCMf^R=0Kz-s3#C zsTUILdY(IUSQ?xw=Vd|At^TL|C!|R$aE{G3$8Mws z*#F_Pb5K9GXV$tE^Ai2?KWn)#I}3sq_>ak){jZFb5Br{OdA>RaAR{lgPf0)TQz2>g zSz1-7g z*YT{KUQvex%~#_jRSX<`-j9+iHM5M{D!o^()YCeF}(U4WD<6k*}1ovEc4u$p#3 zV&Jo0@_x=s-e#XXPS+GJz=6LF^m)TBS;zMd zknMwQAAh-DCQUwYD2)Dmu4?qXoDL=BD6KKzUX20ALgDaS3{YzyFyP^T69Zs<9~f}C zbwXpn<9@80m--);kK3nuk5yp+LLTA}g#j()njSl=rhfZ}dJecTe;sV#GG3^ZVgIUJ z2C(2UJvv`H2R3X7iEw#L!_dy#QHC1su@p8O)X=NOhP&qG)Yz~?mhAmJb4vC%JZ#6v z2Tddr8~6s;&79o@C%W#dt=I=vx-+u*Gw|=gnjPTI#l_5*w}FN@`*}XsX_75o_lb*` z13ap4_I!LN^^7{vkzXS>B(!R?N>*3xAY7f0rK*jDHo3e(*-*4v&t<)=z)5DPZXZh$7jez%+IeOFzhOth>X|a_K!^7(&MW;QeXL=ZQ zTIsOr#r|oJu5F=}4y#^xmV4!La{FEK5G_7Jyl~n#dxHdQ^=|rh~f1C04MfmZp}im510m z#QIQQ4@RX;o}{2fC<{F(OwxWU$mK1m>H+-9V;myWOLTe5RC$HFX^C`E(Z5#a?87)& z2XxA1x7jcAN_kh)L21tZy5Lj$EQpHw%i;L#TT0Jv1MUUoq?k2URb^hI@d%G&m;fPL_%%9shi)sWo)9=6SXPp@cO zX|d0DqJ_M@u!F(-u<32&hio)0_H90KkzHKo>&=VW>21)rp8hXXM;9P%Z;x>G=0%Ma zRJx49J@-^hZluM&>rPxtUhqbRR(c==>9*tc+l>2D(|fs=M`^L|BPVXOi_13m=DoGO zJzff3D`-w_JziID-dodB|E0x2^7p9y8rpZHhx|?({b7I4kshi$5+-ji1#58v(;E)D zdV7L3^IE1Xem|~eDt$;c7s*=Nb%v%+Ttka{*LGnkB|@x@S2@tBf_#7Hf;rF=ua%CQIuDP_gARMi9iV9oTtBDDQfJ++GF z@Sc}XQ0La8>Ij9E6?T{77ap>8+VW(jo{D}`sa!gCHrXfLXtsSr>rfw zA-zO#+|2RJFEQ0x0uRdU`5YWxE438vqbuZbyVP`0=4eM@8EotWKGqal2Wh2xd7K($ ziNf-0z*e@?)k;tFHVepH!Vb5@sSuZUAL|q~6>4Z0l6+Qc@ll$>KEt-aqo1xp8UChu zr5v|kSGdpKDC)EiM(A29o3wz*XOv_jTXQ|DefEC^w|REzvZfo`ZN=Fxtm3gO>Hu^9 z&stNU@K$=}Mw+rt&D^XcPXF)&t@9QJx2qxdEZgvK(_V0?g;qLHxR18TlXi)3x2|3O z_ss!$l3H5=ymz@ouO0AUUr(C~t#q$ENlm?J_}WFCIFmrEp4;`bNnXZxzFtUi5|zCY zwbDk}Z@;DXUez(sAA%PIk4N>>nuLUUm3A0z_P@k3|0Q_S;k68U_4U+IXrGhUW6cmw{U zU0c;GboGb4GeMTU!M#0Z1Ng$6x@j-C=~GI6L3t!m=U4s^d_NT2z5*72*Dv#48 z@_K3yiAiv3h`p!Rn9FG&N~c{M*5*Swrv2JcN)xxu-4d{RW?tmmaM)0v z#6C6@p1ByiC|RPlas|cVYhA9Oah%b}6?6#qm~sW}fsC+RL1~$zfLuXQ%zL?lvNA{Q zas{=^9Q|*(g0{;XUBc%dH&9CE2%fp_@juU;Xpr}2I9GeZw*>c}y****>Bao;yZ+zc zOPFn{!fUC(F58-dgiWEIra~<<7c2eM-kWAF=2NH}2q()=O)sHZS|nRo{>V>tRu6K* zAFm~5E`g*2YgMw}cy&ImD3H9Kf-+b0jJ%#YWv=F_qoVk$P;llFoI)4e^fxj`Z?mb$;UujXJB=EvRGuA^a^~CsC{IwcgFKT z{ftMp(Kq)5izf@qXo-^lFP^mW7{%V!nV`QzpMyV!^X5W5Jy~d_ud+t_NqUG^X6#Cz zmRsqHrM^%)=&~k*u-n>Z|ENlLqlf6iUt5hmth>>}KIYCb_TIG1@&ap*wmX;^e5AzH@2FHm%9dOgO)@)qIsP!KKt zsFeq_WSqR#HwDpTsBtF9)DyQ{EQ3<0r*7+5@f1_+y)3um##pNpY}{dS?A{nBhI)YDq42PInqkU;tG-S4zemS*3n+|9~n5_(l&I6HOn zeT3UOhEmXOc$#ClLlVk?D4!mkfxPl13Yv^FPvX>wAcN>5i`&Lal!t|bYqvzc=BzUlsS6G62PRRfjle>Fa`lu z*dtwdt#u66X|aMRxLJ<`i6$)pJOuodtpPxRe_g<^#NCX$!i^~V7&6Z5;71fh)V;H9 zpTX)q7r$;Q;}<;d9I2FZKG>sVoDu`>6?j+1^2}9g^!*)Jdx|e8%;S?+&;W4Mup9C3 zm|2Vdx;(S${@9sy8g`!N_PjE)>SSqlr~CpX^lZveP|X@OU*3C6et|~Iam%1L?sww8 z)+c6G91SvUT_H>F?NGgk-c_Fn)_|6Tfso@QG@>T8p5?2oEWJ+WIUk zZn4ebGaEggKc4TUuPDCP;YIa1?hQrAAi~!XZkX4Q3p?$5y$kT8Au+RG`xp?# z7nwe^F<*_n4)1^{ey;Mlv>tUUrPe5io7t0B6z828eFNExvrEu~ufxj*T?9V#8J%Z< z*k1MpKjHdV6XxqD6z9Sxo@I*&uzhkGau`i~I^x?YO<|<+FIzw%e_qcOdD9 zbLxkn;i0U~dptBj3kc7ldG8u>ari-6(D?x$QI-G09asF>W##YIw#(OC+ZpI82VB{{ z@A@0cU;Dc+?OA=@s?NwzG-eEsjK+1$#}6dNlBx7v87F1d9G^IN=>jfMob)xo1-Ecy^hE{XK1$w9vYtaG*G1l zs_R5)GqY}d{km?EHZ#IZr9>i<88L{W@sx-e6Y;1aj7%n#X&@o8*?0^tMudp+PyEV8 zNB1RD9A;(`f$?PA6z1WyfgYGfCNrKk#SSBzP9?L3=uM=e2Sk6wjC7+sA-0Ssqh>sn z6n$nUA-YNI-DyTL=AA@h@774dypzPxOupeeut4AA2R}BBN>Y) zN06RNs08SeDgnC0N&rGeBgv$Z2ypoZO6ljmmjh7lcs6Y$V@6E3Wv3Z2$Fr4|gc62s zIrn_bh{Yo&mle*$$0C`-+^d~NG?k2%zqpJ_Q_x3Mvr{}^5;9FA2{5S=RGwQ>vG{P@ zV94wR_yW6=aWk+v$?eW$stm2s`76yK zu{WGajbtKY0j{+?%uf3TlF?KqV?@os%|>#>97W0H9I7f6Vj4X5mHM5w0zu9W<=V<^ zdeB6jK zZgVdt)Zhko7jeu3@dW*{8N#LdIy-t66c*LXZVW+Y7~2)H^2UfU-y?G&zH zEXL9a!!!c@sj*00g@%pHSR{!uHe+ftR%sd(*p-Py4+OT1sX4eg84IL_1AT`R7{%>r zBNH)GnZPYso@s-rzz!pt%ESU&QsWx$w!{-gAe`aBMOVb$+cR;~2n-}g<3n){BC&U1 zES)i;@vH$v)bnn^Pm4dUJ9@r3z<^tdUeO zuC5EIgaAc~$HpTG(U%%eng|gZL&Bqnv!Xu}pD@HgKSww*iPS+6J)Cf;aaEpCBNF3a zahVv6b0S@uqUK#=Mm8H6F{vOoXv5o*Yg&F=L#tON_! za7cvuwheB-{pQX6H*OYLMSabb7)@nOqTR{tcsiZRm_|%Y#4~1j`D!@3ocjVDK18)(ol52i8)#83)j3uY&t9O>-r zY@mVg&HHxU5#GG7ukUtY97-Ee(}>Yv%0a2Bp&ACct;U9UGH%8riTEcBB;yJc^F~7K zM$Od&*)7_G>kf6F?>}&6Sc;4+n#PC+mK0ptL_8w;xAuj*nT}9hU0r){eT*7zj87ox zcv?h;O(P@PW1LK6R595GLfX1mDrq##n*{@52fr{5s;vXziL0E@ZqXj=bpG*JmD5~Z zl_rZ;s~8@wtdW^8GTj*c-c-sQjwcL}jEouG&Imcy6k`bH zn9)*nw8sTA1tOJ99A4AeK$i=m{_^}Wj4=?VAwxuj;_N#I26qZHf*Qh+3=c>-sJnrY zif&OjBC_d7)DT%C9pS}R#FLe@M3JbcMtS;5=OcD zFW`K<&krYw^QJPi5*qU{l2?||R~%q;XDqI)1xPEl?-awC)R=>nSP(Ez-8^;4<@W0D zI&t!AC#;?C{txFJB&tE&oi((Q)2MaBSugCaE}|Z4*t}!M_8r~z_4U1xnApAJ=GKOJ zVOSk_OZ@NnV0)6IC+va|`(7Enz{H>+-Y&*lB_!m*IJIFCXCvzWdz)#QL z>wtxH5&7v_s-qg$6fGndHBhbIYrCihb*NhEXrY^2f2W=wE>@x37?kuY+qPdvnCs;U zE?K3oanjd;$}-s{dU=9eo4u6Ace#B1lnE>iB@SfcpD-vDH4T$#3swlwix@V7LQumF zBW*;O+VJGffS=N|gOQ4E#wdpRwuy8kdcZK5Dl|}o7*B#R#AKVd7F{XQdY-8n-9Tgx zo9XVZE@}|?<&b1dFHnz$a=@KVP*oVFF35)y)gTULQppj`--&_nZDnHQB&o{XiP@}J z=X1nr>?^ke*rYf4SWr=R0}-hIcrs%|qNC_CFvtlBiN^rXVTWSxlSA_c09-~NlsHh~lb3P=?ulrR zU0LQ1bkM;_R&{fa(@}(V5TR{k)3* z?mhZ_NWYW%9n%y`6QOnQCXR(Ahw|2ktH}t04Eo@k0*!CQ`|f zRwvD_QG*#bM&qoRVg5*Q21v(P9y2nEx`BP3!yzi<2NmHZF>ZEJb$l1?${a?C)q$KT z+u7MkP8;UL>b71{Ay9mT$88R-$m5QxAx2pKVLh3`sumptbS)u^us(3s2hK4-UoRc7RI4`nxQE_!9z|FM4z#3 zdr>uF{^|MC^QY$nKPh|mH>!{t-cu0iyF;pVz8C8Fyspfdh1cls59zmGznAK_^LW&c z+DCOjoqD_Uo9cDAlYg21<|k#_r}4u{oU-lT>v*T$|F4f{a@J|*oX2yw>s17JChJD| zeeb7#&hNWje6H%bH?vWNYX)zP@hJapU0b zHDY7uhR&c^7hJbCxMA&8qGN{<6I&yu3JP>OXB?NmY3fX- zOrvuoIo>%m9#6yq@fh*fXe2vIow38o?BOx>HZ#v(y<)je!TNbmRj(n7a-fn7(+_=@b#E<0+yaSFQg1I3xg1V^w}VCN(_&sQjkI zDqHz+>ci8Fsi|X}{9Dzx^QJZ(?>uhj2N7MFvhCmMZzsQ|m(H6$T%o1>RJZ?XqB8w* z@@vB2ykX#%VWZ>A`GGIj6H)El`W<@hyvy|2d8+%rg{a&gUA{w~oj22GB~PLrr~MAT zI^}VG&!jV6Kh@*rf77XWUVc1#bl>oBKPq(Bp}#I5f?j+0aq35Sq-y+ie*4=hne!$+ zp5@2MkN5Cd`R~^0oL*J%$a$RncoJ1hlB)l1jkhk1hnE(d^;16%Uh{KTRsC}p2q!;L cz{#l}r)7BK&l&%@kE_Pe0iT!~QO-~Q57-Kz1^@s6 -- 2.50.1