diff --git a/elfutils-0.190-fix-core-noncontig.patch b/elfutils-0.190-fix-core-noncontig.patch deleted file mode 100644 index b6e33cc..0000000 --- a/elfutils-0.190-fix-core-noncontig.patch +++ /dev/null @@ -1,579 +0,0 @@ -From 10ed3a651e434dd453eb4b801ee160df143d0c06 Mon Sep 17 00:00:00 2001 -From: Aaron Merey -Date: Fri, 8 Dec 2023 16:08:01 -0500 -Subject: [PATCH] libdwfl: Correctly handle corefile non-contiguous segments - -It is possible for segments of different shared libaries to be interleaved -in memory such that the segments of one library are located in between -non-contiguous segments of another library. - -For example, this can be seen with firefox on RHEL 7.9 where multiple -shared libraries could be mapped in between ld-2.17.so segments: - - [...] - 7f0972082000-7f09720a4000 00000000 139264 /usr/lib64/ld-2.17.so - 7f09720a4000-7f09720a5000 00000000 4096 /memfd:mozilla-ipc (deleted) - 7f09720a5000-7f09720a7000 00000000 8192 /memfd:mozilla-ipc (deleted) - 7f09720a7000-7f09720a9000 00000000 8192 /memfd:mozilla-ipc (deleted) - 7f0972134000-7f0972136000 00000000 8192 /usr/lib64/firefox/libmozwayland.so - 7f0972136000-7f0972137000 00002000 4096 /usr/lib64/firefox/libmozwayland.so - 7f0972137000-7f0972138000 00003000 4096 /usr/lib64/firefox/libmozwayland.so - 7f0972138000-7f0972139000 00003000 4096 /usr/lib64/firefox/libmozwayland.so - 7f097213a000-7f0972147000 00000000 53248 /usr/lib64/firefox/libmozsqlite3.so - 7f0972147000-7f097221e000 0000d000 880640 /usr/lib64/firefox/libmozsqlite3.so - 7f097221e000-7f0972248000 000e4000 172032 /usr/lib64/firefox/libmozsqlite3.so - 7f0972248000-7f0972249000 0010e000 4096 /usr/lib64/firefox/libmozsqlite3.so - 7f0972249000-7f097224c000 0010e000 12288 /usr/lib64/firefox/libmozsqlite3.so - 7f097224c000-7f0972250000 00111000 16384 /usr/lib64/firefox/libmozsqlite3.so - 7f0972250000-7f0972253000 00000000 12288 /usr/lib64/firefox/liblgpllibs.so - [...] - 7f09722a3000-7f09722a4000 00021000 4096 /usr/lib64/ld-2.17.so - 7f09722a4000-7f09722a5000 00022000 4096 /usr/lib64/ld-2.17.so - -dwfl_segment_report_module did not account for the possibility of -interleaving non-contiguous segments, resulting in premature closure -of modules as well as failing to report modules. - -Fix this by removing segment skipping in dwfl_segment_report_module. -When dwfl_segment_report_module reported a module, it would return -the index of the segment immediately following the end address of the -current module. Since there's a chance that other modules might fall -within this address range, dwfl_segment_report_module instead returns -the index of the next segment. - -This patch also fixes premature module closure that can occur in -dwfl_segment_report_module when interleaving non-contiguous segments -are found. Previously modules with start and end addresses that overlap -with the current segment would have their build-ids compared with the -current segment's build-id. If there was a mismatch, that module would -be closed. Avoid closing modules in this case when mismatching build-ids -correspond to distinct modules. - -https://sourceware.org/bugzilla/show_bug.cgi?id=30975 - -Signed-off-by: Aaron Merey ---- - libdwfl/dwfl_segment_report_module.c | 37 ++++++++---- - tests/Makefile.am | 8 ++- - tests/dwfl-core-noncontig.c | 82 +++++++++++++++++++++++++++ - tests/run-dwfl-core-noncontig.sh | 63 ++++++++++++++++++++ - tests/testcore-noncontig.bz2 | Bin 0 -> 54684 bytes - 5 files changed, 176 insertions(+), 14 deletions(-) - create mode 100644 tests/dwfl-core-noncontig.c - create mode 100755 tests/run-dwfl-core-noncontig.sh - create mode 100644 tests/testcore-noncontig.bz2 - -diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c -index 3ef62a7..09ee37b 100644 ---- a/libdwfl/dwfl_segment_report_module.c -+++ b/libdwfl/dwfl_segment_report_module.c -@@ -737,17 +737,34 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, - && invalid_elf (module->elf, module->disk_file_has_build_id, - &build_id)) - { -- elf_end (module->elf); -- close (module->fd); -- module->elf = NULL; -- module->fd = -1; -+ /* If MODULE's build-id doesn't match the disk file's -+ build-id, close ELF only if MODULE and ELF refer to -+ different builds of files with the same name. This -+ prevents premature closure of the correct ELF in cases -+ where segments of a module are non-contiguous in memory. */ -+ if (name != NULL && module->name[0] != '\0' -+ && strcmp (basename (module->name), basename (name)) == 0) -+ { -+ elf_end (module->elf); -+ close (module->fd); -+ module->elf = NULL; -+ module->fd = -1; -+ } - } -- if (module->elf != NULL) -+ else if (module->elf != NULL) - { -- /* Ignore this found module if it would conflict in address -- space with any already existing module of DWFL. */ -+ /* This module has already been reported. */ - skip_this_module = true; - } -+ else -+ { -+ /* Only report this module if we haven't already done so. */ -+ for (Dwfl_Module *mod = dwfl->modulelist; mod != NULL; -+ mod = mod->next) -+ if (mod->low_addr == module_start -+ && mod->high_addr == module_end) -+ skip_this_module = true; -+ } - } - if (skip_this_module) - goto out; -@@ -781,10 +798,6 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, - } - } - -- /* Our return value now says to skip the segments contained -- within the module. */ -- ndx = addr_segndx (dwfl, segment, module_end, true); -- - /* Examine its .dynamic section to get more interesting details. - If it has DT_SONAME, we'll use that as the module name. - If it has a DT_DEBUG, then it's actually a PIE rather than a DSO. -@@ -929,6 +942,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, - ndx = -1; - goto out; - } -+ else -+ ndx++; - - /* We have reported the module. Now let the caller decide whether we - should read the whole thing in right now. */ -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 7fb8efb..9f8f769 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -42,7 +42,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ - dwfl-bug-addr-overflow arls dwfl-bug-fd-leak \ - dwfl-addr-sect dwfl-bug-report early-offscn \ - dwfl-bug-getmodules dwarf-getmacros dwarf-ranges addrcfi \ -- dwarfcfi \ -+ dwfl-core-noncontig dwarfcfi \ - test-flag-nobits dwarf-getstring rerequest_tag \ - alldts typeiter typeiter2 low_high_pc \ - test-elf_cntl_gelf_getshdr dwflsyms dwfllines \ -@@ -212,7 +212,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ - $(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \ - run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ - run-readelf-dw-form-indirect.sh run-strip-largealign.sh \ -- run-readelf-Dd.sh -+ run-readelf-Dd.sh run-dwfl-core-noncontig.sh - - if !BIARCH - export ELFUTILS_DISABLE_BIARCH = 1 -@@ -632,7 +632,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ - run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ - testfile_nvidia_linemap.bz2 \ - testfile-largealign.o.bz2 run-strip-largealign.sh \ -- run-funcretval++11.sh -+ run-funcretval++11.sh \ -+ run-dwfl-core-noncontig.sh testcore-noncontig.bz2 - - - if USE_VALGRIND -@@ -738,6 +739,7 @@ dwfl_bug_fd_leak_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) - dwfl_bug_report_LDADD = $(libdw) $(libebl) $(libelf) - dwfl_bug_getmodules_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) - dwfl_addr_sect_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) $(argp_LDADD) -+dwfl_core_noncontig_LDADD = $(libdw) $(libelf) - dwarf_getmacros_LDADD = $(libdw) - dwarf_ranges_LDADD = $(libdw) - dwarf_getstring_LDADD = $(libdw) -diff --git a/tests/dwfl-core-noncontig.c b/tests/dwfl-core-noncontig.c -new file mode 100644 -index 0000000..04558e2 ---- /dev/null -+++ b/tests/dwfl-core-noncontig.c -@@ -0,0 +1,82 @@ -+/* Test program for dwfl_getmodules bug. -+ Copyright (C) 2008 Red Hat, Inc. -+ This file is part of elfutils. -+ -+ This file is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. -+ -+ elfutils is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program. If not, see . */ -+ -+#include -+#include -+#include -+#include -+#include ELFUTILS_HEADER(dwfl) -+#include ELFUTILS_HEADER(elf) -+ -+static const Dwfl_Callbacks cb = -+{ -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+}; -+ -+int -+main (int argc, char **argv) -+{ -+ assert (argc == 2); -+ -+ Dwfl *dwfl = dwfl_begin (&cb); -+ -+ int fd = open (argv[1], O_RDONLY); -+ assert (fd != -1); -+ -+ Elf *elf = elf_begin (fd, ELF_C_READ, NULL); -+ (void) dwfl_core_file_report (dwfl, elf, argv[0]); -+ -+ /* testcore-noncontig contains a shared library mapped between -+ non-contiguous segments of another shared library: -+ -+ [...] -+ 7f14e458c000-7f14e45ae000 00000000 139264 /usr/lib64/ld-2.17.so (1) -+ 7f14e4795000-7f14e4798000 00000000 12288 /usr/lib64/firefox/liblgpllibs.so (2) -+ 7f14e4798000-7f14e479d000 00003000 20480 /usr/lib64/firefox/liblgpllibs.so -+ 7f14e479d000-7f14e479f000 00008000 8192 /usr/lib64/firefox/liblgpllibs.so -+ 7f14e479f000-7f14e47a0000 00009000 4096 /usr/lib64/firefox/liblgpllibs.so -+ 7f14e47a0000-7f14e47a1000 0000a000 4096 /usr/lib64/firefox/liblgpllibs.so (3) -+ 7f14e47ad000-7f14e47ae000 00021000 4096 /usr/lib64/ld-2.17.so (4) -+ 7f14e47ae000-7f14e47af000 00022000 4096 /usr/lib64/ld-2.17.so */ -+ -+ /* First segment of the non-contiguous module (1). */ -+ int seg = dwfl_addrsegment (dwfl, 0x7f14e458c000, NULL); -+ assert (seg == 32); -+ -+ /* First segment of the module within the non-contiguous module's address -+ range (2). */ -+ seg = dwfl_addrsegment (dwfl, 0x7f14e4795000, NULL); -+ assert (seg == 33); -+ -+ /* Last segment of the module within the non-contiguous module's -+ address range (3). */ -+ seg = dwfl_addrsegment (dwfl, 0x7f14e47a0000, NULL); -+ assert (seg == 37); -+ -+ /* First segment of non-contiguous module following its address space -+ gap (4). */ -+ seg = dwfl_addrsegment (dwfl, 0x7f14e47ad000, NULL); -+ assert (seg == 40); -+ -+ dwfl_end (dwfl); -+ elf_end (elf); -+ -+ return 0; -+} -diff --git a/tests/run-dwfl-core-noncontig.sh b/tests/run-dwfl-core-noncontig.sh -new file mode 100755 -index 0000000..1245b67 ---- /dev/null -+++ b/tests/run-dwfl-core-noncontig.sh -@@ -0,0 +1,63 @@ -+#! /bin/sh -+# Copyright (C) 2023 Red Hat, Inc. -+# This file is part of elfutils. -+# -+# This file is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# elfutils is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. $srcdir/test-subr.sh -+ -+# Test whether libdwfl can handle corefiles containing non-contiguous -+# segments where multiple modules are contained within the address -+# space of some other module. -+ -+# testcore-noncontig was generated from the following program with -+# systemd-coredump on RHEL 7.9 Workstation, kernel -+# 3.10.0-1160.105.1.el7.x86_64. liblgpllibs.so was packaged with -+# firefox-115.4.0-1.el7_9.x86_64.rpm. -+ -+# #include -+# #include -+# -+# int main () { -+# dlopen ("/usr/lib64/firefox/liblgpllibs.so", RTLD_GLOBAL | RTLD_NOW); -+# sleep (60); -+# return 0; -+# } -+# -+# gcc -ldl -o test test.c -+ -+tempfiles out -+testfiles testcore-noncontig -+ -+testrun ${abs_builddir}/dwfl-core-noncontig testcore-noncontig -+ -+# Remove parts of the output that could change depending on which -+# libraries are locally installed. -+testrun ${abs_top_builddir}/src/unstrip -n --core testcore-noncontig \ -+ | sed 's/+/ /g' | cut -d " " -f1,3 | sort > out -+ -+testrun_compare cat out <<\EOF -+0x400000 3a1748a544b40a38b3be3d2d13ffa34a2a5a71c0@0x400284 -+0x7f14e357e000 edf51350c7f71496149d064aa8b1441f786df88a@0x7f14e357e1d8 -+0x7f14e3794000 7615604eaf4a068dfae5085444d15c0dee93dfbd@0x7f14e37941d8 -+0x7f14e3a96000 09cfb171310110bc7ea9f4476c9fa044d85baff4@0x7f14e3a96210 -+0x7f14e3d9e000 e10cc8f2b932fc3daeda22f8dac5ebb969524e5b@0x7f14e3d9e248 -+0x7f14e3fba000 fc4fa58e47a5acc137eadb7689bce4357c557a96@0x7f14e3fba280 -+0x7f14e4388000 7f2e9cb0769d7e57bd669b485a74b537b63a57c4@0x7f14e43881d8 -+0x7f14e458c000 62c449974331341bb08dcce3859560a22af1e172@0x7f14e458c1d8 -+0x7f14e4795000 175efdcef445455872a86a6fbee7567ca16a513e@0x7f14e4795248 -+0x7ffcfe59f000 80d79b32785868a2dc10047b39a80d1daec8923d@0x7ffcfe59f328 -+EOF -+ -+exit 0 -diff --git a/tests/testcore-noncontig.bz2 b/tests/testcore-noncontig.bz2 -new file mode 100644 -index 0000000..514ad01 ---- /dev/null -+++ b/tests/testcore-noncontig.bz2 -@@ -0,0 +1,241 @@ -+BZh91AY&SYkɹ+iyhPhu6nW:O7{:ii]EFx:hh˻4vΙKMq.vާgAUEy >:ƚݲy4f4>Y}\0 Jǻz{{}^=t=O ݓJ_1o2qSzp9޺{ln_osxQxu|Nw^wvξԦJˉMyu*9Y{hz˶ힷRZaB4.âu7n -+f|oId2sj3@h={&tkpś0=}4lu -+(5}th*hRL{ϩ[=!LLM!F CMFhb`ɄiAi)54@M444C$Bc@M4I5=dMLIiL&zMIړ==4Pi ha&OASjzM=FěMS6jzjmiIOM5Od<Sj2aM'OTL&#&$h&A 2!S'4~ ԛSG=F&F 4 !`F= .OGUE'?H\W$O+2vJ`\ٙp /0 5cV :]0p @ժТѪV(5ynQwS&UHI\~Z^^ RČ2M{kʌ6(`-Ox1UyXyLkz0vr(˶X>,6Hҗuʂ Hu=RQlmQE4W~ mLֹ@jlL6 ?37" -+ek %瓄I_^=D0`i.qquA:4^|K v]A38`M$ 0A U9 E%F m#`/i dP|Lˈׄ!F"2eZ62.`,B!e"j7 H` -+j`b ~58lb bR!Qpt~dv1jy?Uɲ¾BckyTʂ4)u -+`Db rXuKՄgbXUOp>׊QH䞹ad +gЛ(#TV~ޕy3EܡòxtX7L)0\iT+:8#M[M795$BgW-T#JO+4YjF.9ĻT96c 5 ʕM [qrq"SN+]]9s43ݾ/kEڔk+s 88)VuKiJYWM(ownqt<@V-g .CcNF w֩cE#<⊹26',ˬ Q׋ J0CzeLH8A:o2Dm}fuZ6Ûq!Dm`Slָ4(2*)]ק2]2N>d[/cʿЊn7 -+>ڸEܐgUWRp!wY|9E.h,72~]5Y LjVgW0  E90&&}m8jow~&QU~jj %H*YX`9`EBkȪ`k{i*=gԯ+mnNwrݺ48Ѩ)([4HFfHsF(>7{;\zW]wF}&컺~ $lζQBV[šLqrwVWt]k6cG8]oYO>^gc^imzd]^(fߛU -+ z<@#;ٜ50luڪs}]d6w< Ԡ:ofI&?^25ݩ,3FN0c^B2#MDkPbSԷʫ.H i+ -+Fx ^|"{(GQGy1fBKev$ p$*M4a}1\^료leK$<=H`$ö)3 -+s 8ؓM OXn+`p=f^}tU0E㲚8Y}6МFVRUw'ybU#>3'f]HD {X:!E2Hle{?}'{k".1|O ^ 8Y4"rck@: ǵ*4$Wf'w_eTs͚3✹C(z󖯿ڤ&u׷ W؈{nwדl>nϸvPG1}?ÔޞsXV^gwƣ9tr}h[~ -+tHwezΛEW3cՖQdefXk5(P7ƲUP?o\_eL)xߜ53>AyWJg𕦃Q]Xw_n=<`6뛈c)QSc]F]?7yu;G ( _e-Y?uVG/GcSfAZLt|Ec#4 ITiޭ1:g=te=xb Gm9&&`& "#2.f-HP'zF!ץMn7nO΄HT+: WD{g3 -+MH̘<Ⱦ\BGbBG0*PG!X6!rj>/Z-(z{CH5(#o[ȳ%2t -+r߫K\Z#tm{MC!7s\ TDW9 ȑmd">)ث)Ce^MS 76vi8^mbD1Q71G -+|no;z٦+#/}1E$N$w|m$sް!8)2š0?M2)<)1IJf`P}j`>9AQ)! Xw7rîGTօQCp73"Ee"+%[IKxBIsZ_{q[:NAԧT{R7j% R4P!h=[4oͻ5'ơioID/߂L"QSiC|?snvwOv )ջ(R#|R -+ ") -+H&+O1L" .'oDo?>=twǙy2m qLX;s Ä;~ -+6 Ȫ2κePÊ -+'e@5*KR+҈f`ci jvհg#d#Omz" J"f$O9/utr,em__I>$aPTPɊ*zV ?ߌmR%Qg{P(*3h߇Gcְ:M @lC@hB*2DDhJ -+X 27uvT2f0I$W[~V[ڭ.Q"'o!:Z|i}xPӦ}iGn*x!<[ە@R6Vh*KV*'j0b -+ʋ Npb;[* }.H\~m  :MnDE{!Xb^_b cZ3 H#ẂbwK;}=V+&Z8^3R;7}{I]i݈glt  -+# >"d76N8Pwoa["ËM.M0 @mfDLJ"MK'V_^C~EńTqyONnqVu^ =NL^ 1}Wvx5]:AaC>6j(E% G[8ݷa2`GWT]FJ}i4jon'7kh=WdckGEhfUrZlJV%gy$26,F{deR/$ʰr1O#vXg]:E4d:+oa{/dSSBr'*58Q9+ $~OgSNf6wC$ѰOZ]jװF+Gd4|_`q;::t[ $A$>kk! %,)֎7(?" Q*E؆* k8G@>8OKʿ,?Ƽ^2\CQ1!NaN>̉3*y/.b&L_Pwn4P4p$Cj--!+7b>g^IOF{idIh$ٓD\EtYA=]!P/?Z7乾ǤtWoip7%T$agw6 loQ *'߁}zPh4%/:mM|>yJsb`H -+ktTh?H MEWGyOV/gܿud&qBd"FB-RC4$2C"vгКjSYM6! _?16vG(_ -+ЊMTUMS!ST#B04~ lae3TFUgA5"nCW GrJ5EPD@SLA@I -+Q:*&DUE,Q ۞; 2ȧ i) tR˄vBV -+U1DEE%n&5M5S(6JKT{`(g~lMT""h""a?=ToبGpE%?,|%:{l9"@d?qx#*=>]C;ʋ.!$ TSߚ &.P.LIz`2&7J AU\* bwŽ&52[@jP;ԹD4vvgʌ|sٚ`i[3}6e"Wɠ.V`I:@PA,Т RF I'582ʩ%],T(q'%;Xy s,\9žu]dD_f3W+e)t;, mv%dطq -pĐQhxwp]*@7m~kvPff\ (| #^qGNU I(b ii -+BJ P %$`OPCS"Nl H"ON&@j p|߹kB -+ n.jEX/%E.@j/a/\F Mc -+ -+*%Ae/4{?8 +_Gq&@a^A@oθ7wr -+ѬPӵ -+mQ܍=f튉* &:G \/ѝƲ""JTR ,B0%]r_w=FN>ج+k3F)0+;pѠ"(#PQDDrg;ZHNN"6wh$ mP^f&xGNaAAQ14(P%!Go/DYBa!A8A|&UA{"7on5Fכ:B C6.AZLr& -+}9 CJ,=aPEBdCі`SsZuX\a_aVja<ӈ1PQE -+y׼d ) _!>:= &i[94Il0&WA;ŖAD$KQD-d6si31'l 8y 4'َn͖XZߣj"fZX!"GC!ϘHPA2+bNTziڝّb$CrѶwfÃm?,1rxFV٦MkZ)32֒)/fb'l=rS)E!Q;< ptHx%ʶR<{pQyduŭ ÛD%!:gej -+H$&y)ZN9R3K@1qۿ϶ YElL)f*jP1r$IG)& U)Χ2HfW<]}l{hjf$4Ǔiò5h구BP#*F}_ F1S)hs6A3hƗ;4y2aP 2/o/{4uJ@^3ǟSSa!M 2Pf`Ҵ8{6b,E{}dauBP-Ҍ^8 zJ_b -+702*{Ev$cs qBioz7-!XdDUTDUmh -+bJ@i*<ptQc17$Iՙ4hJZBխdq@IKEifC -+Q5,D HD2.,rm&tE`L4FFL1R!1`$A*E(Zt_)P2.9<3܁q#F AT!=_kñ CԒ[E\|麙$d4;ɕf) H;$ 7ϵW%ym -+j`@̊x s&nJlȆ!}n!( 0fk|{0v/sm>R}A|[Dwk_2m^-Ƒ״{ Aʻ.7A"=ՁHh*rU9(( g LHSڃM)̛֢AuXjX9GO޵@酈lu9bɋLmh_`hZHд bAk5W';mo,۠s^2D{M: %-IY&AHl -+{h(;`:?;P79D}vYaT$UF^7>S ́H^5(|'k8nKq,%Y2){AgE WpHRʕY"M>q<C~+;K P.ˁ^@ |8׭>XG*ϲ̺~ZY*ND}/䄃7Ռ aP18i#݆]ŮnѵmC!?y-.3 ܘҵS>C{Flʻu()s{}L~n|j=~^XX='l>KԗdK6,_g4Ak*}+XeL%O$/I#Z4AM|i_ GؠQ/U~$ DBx5rvhvˤ,ᡀѝ\_eF8JVf\mmlH~C'^(7ϟ'owd._S;Sh)fjZJVJhAXp΅UZX11kd䲲хaNe[OdCt( Zrs1$=5>h>$Kǜ˳I0\)^1 : ɷb(_-4 %dTsP/C9_lE\E\X^/S""q]<@.!s8zK5 .S3#a_o -+Ո2ZM&/wG<73(t[AH&=脣 Y |yR'×\ ڄ ^Et(kѓ#:&D DQ=[CҽHp ~?p,>Ezzׯ܅x7(zi2=:?;f<0S()C\tԐy fm*P N$O3EyüI0>(S"UP(Ci{d>;'yx0Btf!մ ԰.4#?lOp1v0ҿb"ҁh "D="DW]L8">C& _qv43$$~W~V핿 jLVcMl51"(EM)ZQ{=>C -+ ЏxC/D0A)#oZ1 -+R@ڤ$WaW B|SӠΜ 6-KHx-QJV,4n6e;X">T'B2Sb}N8x <;bҮxWRd|!" -+&a*#=7Ch6{;uHJC=T<0+ yL3@֜=xXSko&j%Ȥy![Zdp\/m놛3}'LrŌ`x{1ƜzzuQ -+-U\\ -+:~.= *qDs΢skh?qTК=3LOH.eͅѲz< >ꘫxjERzt86rٟ}p\WI]eOjF_-Wv=WK-{W2uG` 21[dJ+?@;#ҁ=Gu XRJ( AP$LP( A@0sUzP>m!eR\j[iN77]5p0d^Ro l<6wFP|sn3:U* -+]P渌޶WSl@fUA}<> -+ϟk [19>usg.W3Ky>l{cdz ^ -+J0`JD uGQ.mlmV~$ 'H3@NbUh(KcD<7uOM>}2H )sAD J \:<0kɍ{ wSUS{ڨo\v0l}/yzSRg3VvM|Fn@A-*ɩ_ZR ұKn DOt_ o~7.uHYcCt!Uak[z -+H34 -+Jo.:,!szJDx:~ן| XȌnh]~7=gq&/};8ܭo7g}xc>{n8WEK}ܠK]o{zt9mc_me/?wߛ}6oj45ݾfc̘E 9@pVI4Df1}7< 3Xfd1nFRzX?+` i)F؏9{+Jnbx4n:@u6U2J/_{C906kXd -+LGPHCa|m|@;wkw. -+΀;e?{i+yp".CA -+`)- οU]4I}h:bU`h7OMgUT݀Uܵ@!""P+[k\sɝkI^n{؉`r.4oI{NervzT{ ע4,ej z"t7ls|V}vO}qiM` VCT r-?m.{1Ƣ^\VQ[v8@`T c8zAÐz;)w\lPg8>&mpJ1y fS7߂- -+3. lDkA>j`S<}N+Hr`iVgQVoKT>zjfR>F#.j`-@}V*]3;FS ,V[:rvF둷W+jD wja~+ ՟:sy@-K5xrS=NZ6c1-MQ -+ ,AyF@8IiU 3NKG4\cB )p0 I8U -+$Nc@_0t{FA]@տ3%@x6f 5$#һ/Ϗt hǵƱg&R;i^G&AU {Y0!oFgZͻ٤~wpK~_+{~6E3On/)xq9!Åh8߃{Augi]Ifh=~<"M"#33U+9 NrGMiՆcwHƌ q<9/vv7_n:;qY33*ƪ_#izypݤhPᴃÈto~cҢCG 0;-Qr!Zf -+=8NP?sxM\|nH/|V,8ALbaRQs= -+hiD/g̉͠ENN7p"!ח.N f~Hvv,]YTJ$n6CMH Ԣ'_d)&M߀$+'djɱxã1~p X/RKaJ&+Á.V@ VcE^gc KE?Q!y CFC C9<T" d"Hf('Z[LiT?Pzu_3n0ӥ,^!Uvu֍C.foZ>|HvTH@9aT iK[ -+w#KJ@ 1N)<ff,_Rs[z37hKe! olh6ӭ+GOj7A\xE$,  ˜w s`8DVI7 yUAk&Fezҷ@QXǷ[dzHyH̚KR5E49^啜:<3x8XmvFo ΰXنz,ЭxEq,6-Z1p+f? |`7KUYAݾʮV ِ^i.!Y3NJB,s5Ѩhis:/96uv;# y:H'u@OPY`Owd5]Fy(Y#B#0N7,sήhgajG9'i_j)*5=h]$iܠ˟hM _O2)h9aѠ@vSȏ˩iEŋGɈro@اMۍfsn5MiZ3:V{?}@)aFms`p@"uz,xP؈OEr ﳒ [3j&yRA;+c}%'IiƊC7?=pdQAeϵ u?Ӌb-tBqQD#%? 2y;5g?Uv}gqs<"8OQ|ϟ?###### ן=Ĕ9|7 S ɽ.npc씾F -+C:ϤJ{x荁' C9K"e -+)/|x۰iv5ܹC2zyu[> QrH`w*_*˛=ݸSV6:cjXvFJ=z=xp֧ZQۙpxUZrhDF&%Vo]Y:ǩEAduhCB PG1 1`?dbS j}XC2`x(T? =a____________nf,PP0eX קKf9B1pϥ}% }UxþO۸`]n[NS=޳oT |i-#gl)%B8emvreׇVO%^bӴ_r;߾l:.2W\89$gZHcg.%.A()( -+g'p?vǡȟ"Sʊ\|h݊ 뒨xvrq)i xblMرXf/GJ܏_fyɻ)HقPUve(pN%vƽ2j*)Ͽ:5{Qr ؝OUZv yEß677}7_@r5g߮os EQM5mGb+4EQ66khrSf sHa .Ei=\ -+vq,Z|iR^'g87 -+hȂ \|0kRf pC$廙¢by}mln۶mmn9,{Ͱ5o٤m'v5esەgUY;W9^gk2gS+G~ox߉[f#_ƷD͏6Q}n (~#k AUc᫗e%"qCr -+42iCYu;mosW9SX`"r b5rPirɥmz4߲ĺPzZ[Rw;z'5sơB󛁇t\Z5s0^2 f Heb~;V)IVVhJLP(t<JFGCA =k&}i"q@X8DY`l6W++,]@#%$!Dø4o7Ŋ&[S/S Ϭ:ӄOOPnףx'KF6dM<(aKZ:yl~_UF]./, Nr"&#:6VSNl`,$'_ۤ2 apHQ?2ȩo~-s&I;zI{ϸ**Q%6m(s*1gAuolzX[} y Ӌjo]A"rUHSu2 -++UUUzu|ú.u\|āȻj콸Q/n#5,yW&$kܶ_n93FR ?7v kW5܄fPJ:''f]ㆥOt8}Dz@gG@RRR=RRRRZ)))))))AE!|s/qMeۧsa 9@,3rJᎶ;9K's9 ϜS|_L2ѳr= J]ѫ2,uˋAQ$l36_%?/ڥļZ~*dVlb1'ԬP8C@*Ϻ{j"ۥg8xܧ'- -+*q8FA?@n CԱq93?|0}R3 2"!!J"&"(*(J lh % -+Q("*i -+bb* " -+FH($"b" -+h*B*$J(j)J@"*"JXJ&" * -+&H$h()"*(ZfFb$B)*Ja&" FhiJX hh& -+R"(!(h*R bJ"hFX"XF*(d"(jie*$&I$EXhZH!!(" !Hj""BBf%* !h"iP ))hF hBI*"% -+H(X E(d -+`B)*(V)J( &))`a!JU&a *d&"$&j"Jb(J(J" -+( ba%&i@f -+J("%%J&i -+XhbeAR " "*(id!V!f -+!"" BbRHFDIKT A DQLDUBQI$ 4RJ 4,S5BAQ4)E 3 ISAQ!SL+(P$CPDM0CE41PҔ T4AADQ0),T3IK+@4JL$U "DUDDԁ0TE-%R$A5%L*HE40QTQ@0C%EDQTQCLUSIT@ 1 (QQETQLAAK0Q% QSRDD4RTLLTBC $D,TELU3 vֱTAk?].4ݣw}5¨SN>ZCT+5HIj0>x(P KW+YQ2}yGh{nֻ_^U"= ?1mۆ ׶5&X|t)4=z%Kۦ"Gkq# xͅ- I Zr&m[@De -+f@]V L9|зnrWn]/R0MP_:[2_#C:L+5߫X]aZ!Oj9cL?z߇"؊g&)ǁ9HdEQ0;f; -+݋&# 겪7y(D?k=1CkBfAPf3 /圷(sg~fx>IJt8ᘲHSixI PG֦H@fȩ} v N9Y6}Gb9*BW?qAwc1\Q^A6Id2qW^NT:KSB)*OT[~@s[@[Țؓ]r| }Q퍘ٝ1sǿW8ﳵԪ|lN70G3?9 k8iwEG[?;xuS<- 5 [I,*Ëo׭ٽ,ND6覇keSrU*V׏2[ܮ?q]=ٻ7fݛvnM٦-Ỷ{.I37 ᾗ,ڱgJNBnxd-!rȞoR5ib-Ե s=a a{`l F`l8XK6=zwi-9ձ]r@gGl@z0I $%DE!> -+= $\ap)k\"#)[^ş[ҷ))IWGC4O03 03 03 0̶X7Ywӟ5=2w)gYC4,-&}yj 2d!:UrZ,P(7tv-]A*ШɆ۫G~+H7C;꺵W,X֡ysml9.r/Y -+(V,(^dFY.j+` XP7xkʢڛ˃I aP|%#hzdbS% y`,,]3&r`+8Z}pYa(d.U9ˎL='Pgrɘ}.m?αm]EGms:) -+@xSP -+I)]UW#y͞!MpBI%QkVf> ,dD ^UIg0>zB&93jOE3CW,B{}VݔDC|sfLuLsoySWv>e@SEyf 4#SMȝ||E˜7/v -+?߹+.j"D{X}ls7WkMG>93=k݆o?8:vpL`Fg\5wYZ!9n ur畐Lv5Ec$"[ZmWcWGH8]iOqߢ˄cQmf.b 0pQ7Uu_FE|d]6`asj Ya -+䫑Kඬ[`~Ҙ-G;h n>}H -+sQe VH)k[ =X9O 12iR5lxX`у̻1dYzAfw78i^u<$ыd:(x7tt2O6Az|,o>JGﶺ'`:mhcpv2[^jw&:ka1r?EP-/AG|]EZسB]MOKTR2 K~g|CvS-wRr|#r =K^G3f`c/NsfN}99eeaY$$ 9 ١'uԺv= &;~@Uywz<AK[A>w} Fճmm~"(1e\+]tP5ȿ\1Gr7ٮP4/- )D[xǩ pqu/voq{7\|:v @( ʢ r?u۰ݬo)t-0cޖ\gA@YżDę[Cxy';b˪n"y-y|^>}_ پKVm~ݍ{ /VJ]R~lhEm0 Ҫe10i#{ݯ ȃ]KB&Q;}؈9H)/(„M)aWeem8E ;B)-lGu ( ىL ̴D!4>%oUV3^{~f毻S=ϵpk9A>bؠXVr }7?\ n³Ȟr?Wb:H"6](Oa*R#X!BPBv0Wh?gkXa<{6C(\93+>CH@=ݭ~*Rt'{6C[iGvI 8@sPv+eFL@mTWqm}"U86oն?ށ;shnFz 4;PU.vPd}z^fV_^εip`Q!~~jQ}1_z~y,P̉@PK౛Fl݇-TL)(Ƌq -+mC{v.2Dnzg};O#h)]}@T;A+li]L0fq54iaߟr;{24WUtT%%66z:TEy.&'Hfa7ځP"~}xrf}/}li\' -+ `3`RCz2?Q  @n3v~t BYi*$?Km%R㯟_QhVE|v9+'/I+!`[#OG\tzaSǾT Mʇ&PeA6SZ!׬Lprh%qS -+{% hY|;;$"o w+I:" ƒj;W M0Wh0؄A.-={X.^-;巒8nsZXX =*(q w>8q ^׬QP7=WcAj*joepAߤ [5,JZ>㳱b]^RL瘜0XV׷q܎?;!~< 1@˜ -+IƑe<`PԄ*]%U0˜A^*)*Srij!+"a#w+, y*-z-ETh u#ڣ_>ދ8(7et^ j0 u#Q%Tv\NC2b -+)|7Rbv0ХG=@Ppb !`}ܯ%4ԞgB-̗# U1+ZՃ.hOj[,{_>.`o啓5(!dU 'lɸ>]0QϼҫI7zE`'?·%6Y[6 #8py-fN6I -+Ȑ]'j:+v -+o`o"r>%(Dt[Z ޞ ٩&fc ?uCKTYwYtF*;}ǧio4$fݲdwЮ޼&t>["qGqGK EKR al6)"h4 AЏ2s[p85 @$ @ hO}<p\. ޯv^a~ƮKt:8^vp8Gal6 ⎦jʉ*E&h4 A3/`(t:C*dAh4W+_XV+c;_SEhZ-/0EB~xJ'*8㈬Gvg -+yd81yTTt+}sau `OeMȯI&tj-^W&̊p!"e X}-EDsu _7p 6Ea@F3E1!fF[PB_S3x7 P\,oC1%EWXOMǵ-LJ.dh=XSu2qS,qWQ4%"tՀH CNޫntEϞ$pTk ɮZ*WsW^]Ϩ)1T> sbցPkj,W+2i y|Fsp8tXfc"37ʿ#IATiqѯeR^$!w8s6ClU`B_^g+[k1 VW0%'\Ѩ:i[}w5?_O.m4Icw4 d~fNmN&=۹Puz,y*-VH^Gb'z1v\^J\JWIdR 7p?fD7΀ LoL  )޻\/6 0VpEF&,ڨq+HdzIBNl3ѬY~} NŧlJ<;W[yT¥Vfx:1؁Vx_gY/~9ǃu?6}9,f ! 22G@@j_} -+l&0:[L(2G" |tE4Ҙ6 5OA- #]MGk<.^*п>efKX/¢O:,j@9Ess j},/=lcκv2J?,c"G7m볚XAfoyw*s/=mgG&iA~7Zb`}/NZW0j[^/J8sd` @Ic1"m榞d2yi֯F+ -+lǝܺkcfZH7-]wQp!%~"# k2f24JT'4W&jaC;D\Y2)P#( ?̥;OHY>)*~m_8љ&Y1^Baٍ[%d-S tOBwU*YKPusq;:-&?+j^*‹Gނq'f|sbus=N.+͇=@u n(iQJ ȁ-$a6`03Q,4֥sVι8=]21`'Ut`).u<ڣrXpNtxxHHYV/au$ҁ LGeh_ߌ(53e;M}!g՞<~z֊!>0h=tzeP6Gn ?ݗMex| |¿?v F#JH3b jCud99@"rQ1 |ss\@:FrM+;]+Z5Q fC-\SyǷ]XsCx pe0E8 -+CBgvblYM!)Px%YQG$^pt.<8Ic%bYVhҕ^ T t"gH@ʻSSyuZ GWoQPoyVU?yРڂR #M=x&.v6ّ z>{{%傇EE켁G.M?Ag:Q9 >$? ![&Z2V8.@N72bn萄;&n` -+XdGu/5Ï:w6 #vH -+ȓ|MizMU5ƕ"ꗽk%fGC'Fbߘ:O5)+#?Y <[畆WBz.XJ -+TYA $I@4, s`o_\fWJުN\Z;V䖙y.:ηw,m֒E9K nG18C+3Fa^T%`+#uYeV{h;B!2΢cX]}Oau7&~0tg >!}dwj?] -+e7?dBǵ_zм7νlm6o>^W Br̎Ȫ?{ϥ>$ >9[wj78(9r$ၭ{3'ϣٳ8Uv2&WmF^)Wvݪ0YL!Wh:G}ë=+F3%a`SZ(Wak]CKXG0̈eFMDkpMvwMK~e+_ޞ8s*Σ n|MvQoktAqˑrl3~s2{Bc -+\n6 wk_A%JF?]E,dve@nWAo*cae>&SPa̘p113_W)P&f2m gj7>vٍsu5PCZ|1o*|dVv{gIN{S{ g2j\*nZO7iy5VKL̃MMi?Ҧ{/ߜOx?{ -+27meqo3 o?C(?G_䃆E[FTCtEh.0lj#} Ӛ;PGt5NE -+ YP Cیrݠ-6) qk&Ut[ʰQW o[.!B]FdY(3 .)^l(9,j9l3`p5JAfpib nlgxĠ:RYǝx5C/{ -+Ao@F3^ \H|Qqܼ^c P04bȇY:,rfi)Ewar*0if~}=29)f"(ţ+O^!7͓Ÿ(Yu} MG%ƛJ1pЏ>×謾ʜIԆP [^JE1:'▬`+^]qbj01'g'_M݆D "Ne|J3R]^(&g1J Jh>Jˈ^7!kmp!*^R77sb.WYR1^lX~ 5!'S~Us}?( 2T?s -+qLԩtH] !cQ9СJ\E\h[PV?i*b*^Ԯ0[ylc;uݪ7W.e)#D\+Pwb\Q-J0E `@T ʠbeTf.'n5h[prBq`=:%4tg"t30+DV)E}l>ᾍCYZ踥oՏ 6bb}*o㢝,"bޡUBoà.O Qx}^!(ůuB9HPxIZ!oV!F1~p›UIg%.R=+U_)fJ,x%UC㟃.]\A'\('Nl@53u^|!h6VK^=. [LNFJoXfTO y; `#mQ7U;N?F%ˏȈ$eI0笼In_|$D5T oR4 kO:$ _]#R@&3 ?#Ɩ*hʾn @u^}?ugL&oT8?@{ ZmD\irbCTA9˿q^o -+k%^),{GȻe97cu)e>Ӝ,>3‘~[ -+Rڿ~J| @ez:KA'4h'0]so çn}w4 Z]h1m#hg+͡z(0~x3i{E; ?:픑O;h>Tt_g5X1ԘT5-#V?Vp #(dpdjtRƺV]}˼ïJ};~oz}MBF$:<.c=sh*6 r/c bd0J?Z/cNJfJw"daJ X\"R=OWgMЁʩz(d4ǫM#UQA&'ja d3J\v4сkotvks)5c22SkzCcF2\ @AEȉZfo7Y"xxzbC{\_g*]&-*1hcI(ׄK*yy B+5ĭY= 1u+T k_~+ 55ze,X P@f*} 3LY̒iXA`t -+x(A$hAz~9Q&ݷPwn)oPOF,~ACFp-!ܜh! ^U*ߠJXEzB%+ ^Tmyqœ/Q_2E(Pтvi4\bM`0Gx@1u~`M"a -+#qR1i%g 0)3ĕ-9E1lºw gl[+vg ,%z>zi2zx_m3"T Y$֎nbyZ7{ ^{scT67 odAKTs*}Õ\H <%̞a/8; ẀT.Uv EnOEl6˸"l/YQVzA0L'CR{Sm|<)_.?x膑V4U*:B=C |_fFTTj*!^gӁ4T|s(` ϫ~7꾱E:7ƯNtPV5kaV%P&wZK@6 D Q!tT8 4DCRh$c) \]E-޶X> E5 :ZU4 I3hWxV0g9["ʓe:ytUT)(T ?, -+" -+F0w1'|j{hAskͣQE]TR"˯$D_2HoYC `w,FQ9'(Һ=T$-tڈ7/[n"AkDʍ )8ŒyCв"!GwjzY,>mSY(bsy#eN ,? 'j6" ),F5 >LbknAxH(W̘+𡮰TZHE*$% l)CԐbXi 8JL+հkutCJ%"% CP0%P.v7B/PfܤLNfJTs-.Q=DC -+JQqty]ge_N̚:zv'p#tF\6'pn3'+Oigh)C3}{DP$%#D(2gMWWT(N]6-'iL *+:hL>k1>j 5fP>( t'޾Y:F!y D=M2t4Pj?%BS) bC8kR{cAjJ -+ut̔?U!G]NQ?2r_+&fU6c"!CMRQ!ww4+V-lBC{YםB-ޟPEi0 U ^_M*Ccix7kY+ -+Y_WYEi~Qn@07-;!2`?ѕE3k#73cB0_OY9QH [ -+KszҢM2]wIr x>q A/@D@B$OANT(b Ou7fp3V1Cm80@a?*2fUWf \dZ̧)J:/BOWu3S: }6s@ !̮tv]AAA̔ƈ阻Q:Yb+M Mkϭfxy }C*8JOY95Ȱ!'w2bѠQ§ Wocs;ܶH"8=^^!fX-;! $@`صA<.@h'ugEsý(\ITO@N(h”>QTG +S @p8VwJ̈́s-N~:E+]8_Y?L +t!+U6тv/鴋"94JA\7cs{k0E5-BQQ7VowT̿Q\ e'S/Bk~uB{& 2ɇ1V5A+L -+d6yҖELBߠ_xMO|Z&$weT)½^Ų19#̓9:lbp>%;B6G:2ȄUpomʃ<!PrWh+]Gil(n'o lNfXSfaJ:=gӂ[D3Ae5?fQ#FrƘ2v>HUB= &/G}Jx S;$Q t~/}>cyob#۴gꍓ0c_.?}gaXտ<鴗~>rO2u ZDGek=5a75=ΫWӚrzfIyfۻ.jiQ^k cӣpLOk9Dхj-UcV ,Ik>43!|11|32~ug隔sFMk?o &M ~S@ev<ݧS$RG/۫(\oGVlB0-EG/N{Vs 0 , -+)diIpYJDޣ0OS%|R믯笰p H(gX_KI5Lb1gfն*p G9Da ؜zUMG`!;ͩh6]>9( 2 -+vw0"{9A!/g]V56:27n,)fZ4Rs=Lu86Db.Og ٷ!=Aśn,9Жj&+`MTaWa^]G/lڵnr ӆHB RSsT,tfxAtѩ^ݸd'[YbW/][^]Ww|ppMZf R`JR:c]y8_i溧G.!mENc,cΩ%Gߌ5 >0wpVׯb1JcNtN+ <()qmѡT[`-5=4Zso8[s?6Y|;/uhj3H3j;vSkC/=K2{6A\o] ]~u&Q\l.[6^ZS.e\NV|m)y>\𹆵dH'C"P;ZŠ4[8|]n"lVfkB|bv40ZPkY|Qٜ%rQ>V֘!!א]8O7g MQ7h5PN{j9o,D$Gކ <ޭ͇'Y*}wOoPM]ٶO@cN(Pb[c>Sߨ-c{N R%Wc3%xi4Sͫ?nVitybVg1!h0h(iJ( -+ZVJ -+QD(h") -+D)DiFZZ -+Pi! h)JJ-RДP%ĀPLPP -+!D -+ISP*PDST* H@B1"P(H P4"LIM*%+@@+ -+ҍR@J -+B -+RP14 M PR* B*!H J E"M -+%- -D -+ЃAE%"%(DTH RRP4_$=z|#;j4LrմOOt84(=: _ɼr&Z:D]3AhwA0($E&nu8ɉ<≚CdNJ<\*S{>sz'*EX~Ύ-%PY֩vD+L}f4Y܏_#`Jl4&2P'kX"@Bb 0T@ Ū岏Ivt7_Pj[}?.*'NyĨ- 7 -++ݵ2UF.]oBmuWemiP_qu[&aG0Bq&F- e [E0c`m5+t -+')$VePk$LMXZ`0OUr2ʸCb \?"b%{nw>>l!t9L`.M~|-x{c[UePT=6d>6ch*hܑ%ft{)lƵfaJ'!ѽrz/ġ^֋דC:.Qux8GKw4 :46ƒVe|[YL~!ۺ4IH+֪O];kisXatuHKM ~< bV7Fˇ <ԼTCmLq^d#IB!Y\eBu-lr9#>mzĵK}BV繘/P~ # >{9v`4l@Ƨ\~(LJ=" ~>tiG"l߀I${O -+ YE -+| ja-Zx#mJnT;ܐ+4cP\TTjqh̾2cczX_ϧ9dC{/-KG/}-UlrΛr_nﶣ_Wx9}/9{s_JAM ~4K4wA]{J( cQ7 {.'{Nh1 5B1Un}q vh>S}L?|e&VٚdIEñ-Ű+N|˯UCzb0ǩta&RgWHFH -+ەhP -+9*:0e\?!Pka6YpKw Gʌ*XJlTfvgː7eg 8>&kp٥X0SH3@n$SE;Aym^M ѼAYڡgKUQ@ pR"^AcEJ8! ep}͉?BAMG -+Wy7ejL؈^C!@r>)آS4M.UQ"^Lci:sN7nLr C+VYY&XƞP;/[O>Vdj}9<:it\_u gbWEREbf*`"YfnӹT c[lHH- ˚_b -+"9'[b]^brhsU"EQD琳V2'w ЂaSѪxc['K9iզОDVg}}"xW7KrI:S7 hCA}}+WG׼Pi 0uBlƿ$c{)Rt -+bM|lo[)TܫU1f.O Kwb*Le/r 0_P\*a v˖\"c 7~:݉P.0AuJ죔N܈ -+b( Y -+jwL`sL]rp/y^VzuzVwb9## ?vD` -+dxRSΓ$}f!DJGH!1%u8ܞucxiڥÃ|Ր=}KgٙFkT7ʿ:1];L_ǕC3v5۾T[w9ve@iUJV7aLy3d}ftRxj5=js?;:RP3 y mMOA=:< ;2-kC{s`8tClD=[S;jny@QwvuF{P2 -+3*xpΡT9A`.ct 3@Gg߆kĔHs106qZ;(|烞4Renj;}LRӜT럍>Շx\ap8mӍ@~rrϠ|ek8Pn/Mv.~%K/4j23.fh"b 2s7 -+\x>OĻ]!ϧPVt -+`j0g.;s5?t-9-@YPu)h~K9lh-ڇ9Dޤ=S -+[Ƃn{QYvvj90/| 3d¾8ȲVؔ=^ɗ" uH|qoJnGw`PGC=k\F=(4@R_뾍) TJM봽J'!!1т-42KÄp"~B{Kʘ;ҝ -+bI0Ghit4Mc3]M Ïh*x`:i2eVR}ƲiXg'?٢2uY 7V$|ٟo~҉s`]C0Y7Zꆶr&63OP윴cSa; -+R>ڬd=ʬ%61*źv46W$.OG<ʦh`ˡ{ ʟ v7]/2Jx -+Tی&K{c| [DUR& ~@Trj>Vr^ vmAհT\A[+yo~q2/ og[j.C:CrW/0&evEC#BuM$λ.H@~m-w<} */Diڀ<١We/ρr[AIK9t; ,h=)~NcЩZmQ Дn/;:4т6opJ>">:V\Z^stߙ֑h qB q~<*-^&jD#y~wy -+@]:OnjsUT^eYV7d@dOӀoz||@ -+0G$ ƀfcvq4>ZKzhvωz}d2y-)7G+R_q&w*IvcaϺv^Pb&phL(a Dcvy)l\l[ϽJ̤y1 -+]d`-YM0zU¯"Es[b) -+.t4')LZAL7i|%h)E"l -+fNվoBp0/wٸ)A(d6_1i.Zv\o]oX]" -+(PB -+(PB -+(C[֙8EQEQEQEQEQz'"gN:tӧN:tӧN:wGęɓ&L2dɓ&L2dɓ&LF\r˗.\r˗.\rʠ aaaaawӡa   - Ɍ.\s    -+הaa|0 0 0 0@2˗.\r˗.\r˗.)pAAAAA^fП(QEQEQEQEQEnF(%(((/ 0 0 0 0 7*P 0 0 0 0 0x1BRAL2T#(@6ˁE ].~Z+g)}YtSHi۹tND{Rd@w #5'V1*9Pao| 44}wБ*>',MD=rWAw<}Qƴ31)?Ƃ%L ޲_!/*489?8c [\p~Wt0XP1UM8-h9=|<Ҕ*㟆p0}h>;5PKp“)>r8VPy@dnժqk12)XQ cE}j[?eO5s\~nOGof|8cbm2>/y8⚪z%1 NV< 1j_c_@I?,Gj\^26*}&lM# i<(j҃.. ꅖ4eV5vpDM"s0vEAl7GmBfҔP,7]vS㜐B87w_2F&T(,PXe4W^ )(>O,V\_Lk>>nZ_1[eH$lia][6k0?.pU -+, Ry ]#QpN%w5Đѱ8fC!"3\ -+l*aG}m>ˬ! _u~B|HR 'ilB2Nc0/a(NUE8R+fa.a:.V]>U_PV?jS#Ӣ'Лf䵁1~T)co5 'k1 `x3Ԭ%#E^WE3b?5j# |;Zqww;? FbhSZ24V)ǹdQ!I`\r ݴ~a&4h?rbt+׵uè䪬;F=q^B2OF$y, ΨR5T_ '^͸2tjg܉T]ρocKQy rWKpVbڍ6QazS,` ҩH˘/x{6gP+x9AD܃0Uaw7 wW&L B>^ဒt qje eKs:s&+M ye&\/xjNyc]kBwލ_}m"w]8> {vXU>pjd ~$ib].Uw1/ͥ #~`9M8CsJ2lX7DN^F]%J2wpLI?eI\V~~T34=$;ˮ1|!j|3N~[q-f \о8dEXqX8_!߃^2phL3mnOjs0#`b ;A˛`w[Ccq =xP\~coGv]"XǛ~_ cpfk>f\AXrsYȟ{/t_ϣ1EE$j?!yb+$^bL}ky-|ǻ |Βo̶s;X=mEe&9a QE\욅ӹM%_ [? -+T\dpk:M񧿪RJ=r"þZ]cݭջl?Z5qHP6i${ -@ b˛̣eÄnԾPugP<d!B8I(/ac3DF=8^dِQVut,HN \VL㢋CP9 Âc@-򬗇X; QjeHz{ -+ﴄZ_eDb@ԳS&\7vGx_ -+5#![؊Ú}fcRRa`P8S!u{h?Չk}_d@en Z_a>~30Evm(+059"+Gze^8Dz'іčnR4U\00iqW_Ӎn@ÏJ?dvcv0e,~kD $BzZlomՌZ՝fBw#@I)iNVhGl;6덺Tcq;\ߛ L, ۼ6)&%uӎm9o| s~Or4c#.N@~02%= Juy~@:F|'m -+Ei0$r"pT LyP4 ö^6A`-U{P>w5..ٷcrSpκk@- -+R/jpĀ`dUg|Y34 -+WrfBGK>^px֠f`Ґ+mRTp sqR_v]Z'f)vih* =amP8&:hM{Ƥ=ǘ]Pq0tfL>wkp -+}b=ܾ\cŭm@=/($LևjgsT3:,V/lxR˂Mŭ/[ONq>,ac52 rȤSI I vwLLP^3ւWJ-s%]yDʺCڀ}ܞ] _iT$#Q:0,d1բ[hv5aŰZdpS3}@aC_{f`P5P^-=I UA9]%ܣVO\pmfNEZJ@^hRj/Eid.k0&56sIESf Ǻ 7?b 3e{3zDXT %bQ_Y}ANe,1Cnf_=*rm*Ck*Aذ]B [˳ 7Qgպ_3kW i\3\L]翡+7G,|C 7IE镶|Pfd.^ y~v$K?z8gPѮxƟru)I2vf ff4f4٢8je⻋3IPFie-1%O;&CMz}}u;'̚'t R!~JA(Pڌh[rbhy-8ͪs\19>h5aqkgjn[]DJ%_ֿPqlSD-CjTl{7#Yt0jF7m YQ3^!F^ܹQnZt-~Ҥ`!קar@C".=5: -+WrCɗ}m,r@@b_g?__4eP4Bej\]k,6M lL_W]JdYVRA5*ܠ^% -+j6dt$%$CjWz'oCL*oK~c%r4WܾeYRZLa> ^vٗC)>o{5 MVȭTzJ HrJ\= G׋kƄrOо@a?$5\`qLSo ^&2.Wc;|峿+9opmhrg;%`,˞熨 ^ -+nlRᱎX/nҸ eܝ=28* WVK X+,c%ǰW oğ˩r{C)(уY|4|-gyKFpgm;~$ƟG}'sT߶ʡ4[zP`ؿu^Q -+M&6ǼByaB'ܴ7Y `t'vѠ(6v{4/<,cM̓?O`^meV/50+tDG3K1sCͬ~NM%$Y:oJ] y 7vm^[84bǍ)$63qT4%CF?|G}maQs@U !8vŦu,ZK(pZP?Job(fEՋ ~?g-O0]c -+Wpiǖ$,Z,&eQ)NdRGGZ -+XJ)xUF!f -+1n -+BN/4DpWӓVeTF -+[AG 4j4ت,fŒ e[^zX-&%6l 2]vCæÅfp*d -+rLYV>~9&RicQEQM uQCu//FJ50MJ3E*n'YЍ FL#IكXFUG5 y -(RHAR( dYސ(P܃!)p.廖&$!n 0a0RTdT ``\ubİYv!B#(,Q6[`Df)6& ,¨6m0PWXe1Ȁb6&NJzhDe&@6јC-Gnh8f q t .ʷT0(A ({BphkTwA:w4Q[˫s P)J()&)߻y\ÛnP $>m0Ø:]xto4ou;Mh|IW'$I0qvH d_+ |啖@eKHWڡMTY+J 49AHPbI*k sHF$RMj٪++[$JL"ւNՌJ \ qz=!a`%bHIwWTPWq5 -+"j* wN#+s"T$2X^(N -+ 3eʧ@uR -+99XVa2ݕLRr ,f;;ds=1ۛRv!B -+)Ql! ئ=, -bBeQUb:V@TdTLhA$AER`⬥T+,0Z3N8 z:P0r3='^)%j{q -+<î`wwqtٻnv ^ PH -+@AVb{VәtE$KδU/ .PMKB@( Xr5heD (3p@ CɅA\fL1}W $Lk)㲄7Co)gd@.@J Eo?fYEO,V!#$I Rl<օMe?ŸT{^PC-peA!*4ȯ+I'Ti]6]X8K!:yAL9 J`e**-'v~ޗ+Z=L !\ƩhtZT'Ah2֧iy: ِW/Br=񣤟!N(B[C -+%rl?j|r*iLInk}?[2 ɐ{)c112[a: _}~!Qu$=iV -++UO@Ltޑa1#i.{v(J^4nRlR~ma"` fJ_CCxoOgWM e u,?;~</1lj>Z{O۷vBja9/}^>ⱤH݂#p -+zV$Lr< -+ CQv=}~R_:ѸW*kf}u:tV:tv81xșVR@XzI".HxϐXCcu:!G67lXbŋ,Ebŋˈϫ}urFK(ec0 B2_&:f@mz ;M|TݴWV*,Z*fr|:sX}pt\FiR92@ZF"1%`5fhU\W:;P<:Kyz \bR=Grnnnm3ssmfbz>#9Ys9qw hL$G5|6Z1MHvԎ^oH XOU0|m?@I^RB4IsE|樶 -+PyyǔMӖSck6nlٳ*͚vlٳfÕ|V"hS%%~eݜ2e -+ٵz623EEE9EEEEEEEEEEE#xQXG@jMB|3oxv*"'}F+DD 2/BBBBBBBBBBBBB:BB:M/{\ -+Itr#Ĉ;6`Fg2DBT!cgnVjի\VZ/[,YdZ (`՘-V:1kAh7ZohXaߗ e/g3\ H;Rs+ǷccIqbӃBdbŋׯ^z|TP -+=P8~W =&j/3_؃Wwg$Dꠑ?~sD чdsHOOfSSSStӓgC1s嘝HR $)(P-X?\)zR6<`$HH6n|GNH~^QtpM^|l#ԌG83,r`n S ` 0t"P֞/wus{/gjJ ,5g<իVZj+VZj38NN=uf*Pʯ^:O $XN܃ !JkRXsubXd'Ϧ0Rh>_5+kֻ}#f+$T"0|bs333)f;?rYr% JF+BII˄;ogƄtGj];>9ׇiGc&cffffffffffZ~.nw?O_cZ2L`uL#|κ;ᡑ#iM5G1uHsnLgg'qq񠿹n1??????=====0{ݤWu -+t3˯~[6FB};( -+7~C:Sqq~srask=AxtFeUcp(npV/=)CPy0L Xъk~}03Rϗɉ:oaDa -+דCWns__UN c![B+WY2$6$dl߄Qu;+5S: -+4ZgyV4hؗ(t:|%Ci BKAxf_ǻn?]UD͍@mc9ڭ4(:YNϐ_ߑNj~8?YYAey'ۛLuqH 9JLɿ5cw4H׶8D{CANgw*I~>̌\mn7kFfZQ@Bs.w(P#^N`*uJB8Gp8B[ݱ{]܌aĐkGRp(0 M3Qah|~epO/m\&&fgdS P+[Oۚ1`7lE *NNJ">x}Lz!' - 0.190-2 -- Add elfutils-0.190-fix-core-noncontig.patch - * Fri Nov 3 2023 Mark Wielaard - 0.190-1 - Upgrade to upstream elfutils 0.190 - Add eu-srcfiles