oncn-bwm-1.1-6.oe2309>  <@PT@7!.ܶujG7oe openeuler@compass-ci.com G7oU rNIHtd%@;%/%}2^{ʇh :NױY8_~2$Y 4KAHj'N5 r]ٽp<%_#0{S)U=ipI{t2iO0f߼=Q0{Tw Gmџ[ߎ,¯,gL+ݨljZqMrǣE LOdumC I7!֐|E4 XϾ8ۚz0L{ {BPbdռP!h5XT,MPVK=Tu"(9ίy1׃^\"c gZ[LYo i1pl1771662f9d7b145bbe92e36045af0301cc8ad9d2889fd32d06b008be4ab910f1e9afd2548d15706848d7ec94a647a340e1a22e2b Բ[[(>7&?&d   n  )/8X h x   8x  * (B8L 9x :% F 5G TH tI R X Y \ ] ^ d e f    " d h Concn-bwm1.16.oe2309Pod bandwidth management in mixed deployment scenarios of online and offline servicesPod bandwidth management in mixed deployment scenarios of online and offline servicesedc-64g.compass-ciGPL-2.0http://openeuler.orgUnspecifiedoncn-bwm-1.1.tar.gz0006-fix-input-options-unused-warning.patch0005-fix-some-review-issues.patch0004-fix-offline-packets-block.patch0003-add-proc-file-interface.patch0002-clean-code-and-use-securec-function.patch0001-adapt-libbpf-0.8.1.patchhttps://gitee.com/src-openeuler/oncn-bwmlinuxx86_64 H Rieeeeeeee61b92281c1fc19fc0d15c500ca4112a9633880c96d518aa37cfe8ef67716b4dc2dac2c4d18aabce3067c82d871027ae1fe8c9114911edc7574951b8cb94b73ddcb881b7376375570712005c62d60db218cce1f4754f4ccdb554e8596dd87b0b8e8f012a08621301b90dc8593af7b61ba5bbb66e20f622a5279e808cf4c8b6e0e6a3ff629bff06f365cba0e9a9628f6810e71aa6bdf897d5d7f9f80f17f65665683ef47475e25a3564b88d997c999cb0dd3ecd283f2ca29f8e8294ad84362bcae4e171727dd78b26634ecbdc06f9418c0cfa1479d4d852f580409a5ea8cef661f1030ccb87026d993469e2b1a5c0b318a34308a000e148d2665e15abcb9b7be16 rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootoncn-bwmoncn-bwm-develoncn-bwm-debuginfooncn-bwm-debugsource  clangcmakegcckernel-develkernel-sourcelibboundschecklibbpf-develrpmlib(CompressedFileNames)rpmlib(FileDigests)uname-build-checks3.0.4-14.6.0-14.18.1ev@e@dh@dgdd=4c@cccs@b@b@cf-zhao - 1.1-6JofDiamonds - 1.1-5JofDiamonds - 1.1-4JofDiamonds - 1.1-3JofDiamonds - 1.1-2JofDiamonds - 1.1-1JofDiamonds - 1.0-5JofDiamonds - 1.0-4JofDiamonds - 1.0-3wo_cow - 1.0-2wo_cow - 1.0-1- fix input options unused warning to fix clang built error- fix some review issues: 1.fix segment fault triggered by unsupported command operations 2.fix incorrect use of securec function parameters 3.remove redundant cmd option 'V'- fix offline packets block- adapt libbpf-0.8.1: prog_load_xattr will deprecated and use another way to load bpf prog- add proc file interface- clean code and use securec function- update oncn-bwm.yaml- add oncn-bwm.yaml- adapt libbpf-0.8.1- add permission to dir- init oncn-bwmdc-64g.compass-ci 16956497971.1-6.oe23091.1-6.oe23091.1-6.oe23091.1-6.oe23090001-adapt-libbpf-0.8.1.patch0002-clean-code-and-use-securec-function.patch0003-add-proc-file-interface.patch0004-fix-offline-packets-block.patch0005-fix-some-review-issues.patch0006-fix-input-options-unused-warning.patchoncn-bwm-1.1.tar.gzoncn-bwm.speccpiogzip9utf-8ca101c0c5ba1c1fb9519202be22bb727db3a55766e64835eac7e46abd15d652289e09734d1d49b9df80674dd3092dc42ed856ddd19e6d956363336169de4bd80Name: oncn-bwm Version: 1.1 Release: 6 Summary: Pod bandwidth management in mixed deployment scenarios of online and offline services License: GPL-2.0 URL: https://gitee.com/src-openeuler/oncn-bwm Source: oncn-bwm-1.1.tar.gz BuildRequires: libbpf-devel cmake gcc clang BuildRequires: libboundscheck BuildRequires: uname-build-checks kernel-devel kernel-source Requires: iproute libbpf Requires(preun): bpftool Requires: libboundscheck Patch9001: 0001-adapt-libbpf-0.8.1.patch Patch9002: 0002-clean-code-and-use-securec-function.patch Patch9003: 0003-add-proc-file-interface.patch Patch9004: 0004-fix-offline-packets-block.patch Patch9005: 0005-fix-some-review-issues.patch Patch9006: 0006-fix-input-options-unused-warning.patch %description Pod bandwidth management in mixed deployment scenarios of online and offline services %package -n oncn-bwm-devel Summary: devel tools for oncn-bwm Requires: bpftrace %description -n oncn-bwm-devel devel tools for oncn-bwm %prep cd '/home/lkp/rpmbuild/BUILD' rm -rf 'oncn-bwm-1.1' /usr/lib/rpm/rpmuncompress -x '/home/lkp/rpmbuild/SOURCES/oncn-bwm-1.1.tar.gz' STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'oncn-bwm-1.1' /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . /usr/lib/rpm/rpmuncompress /home/lkp/rpmbuild/SOURCES/0001-adapt-libbpf-0.8.1.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/lib/rpm/rpmuncompress /home/lkp/rpmbuild/SOURCES/0002-clean-code-and-use-securec-function.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/lib/rpm/rpmuncompress /home/lkp/rpmbuild/SOURCES/0003-add-proc-file-interface.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/lib/rpm/rpmuncompress /home/lkp/rpmbuild/SOURCES/0004-fix-offline-packets-block.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/lib/rpm/rpmuncompress /home/lkp/rpmbuild/SOURCES/0005-fix-some-review-issues.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f /usr/lib/rpm/rpmuncompress /home/lkp/rpmbuild/SOURCES/0006-fix-input-options-unused-warning.patch | /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f mkdir build && cd build && cmake .. make cd ../ko make %package debuginfo Summary: Debug information for package oncn-bwm Group: Development/Debug AutoReq: 0 AutoProv: 1 %description debuginfo This package provides debug information for package oncn-bwm. Debug information is useful when developing applications that use this package or when debugging this package. %files debuginfo -f debugfiles.list %package debugsource Summary: Debug sources for package oncn-bwm Group: Development/Debug AutoReqProv: 0 %description debugsource This package provides debug sources for package oncn-bwm. Debug sources are useful when developing applications that use this package or when debugging this package. %files debugsource -f debugsourcefiles.list %install mkdir -p /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64//usr/bin/oncn-bwm mkdir -p /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64/usr/share/bwmcli install -Dpm 0500 /home/lkp/rpmbuild/BUILD/oncn-bwm-1.1/build/bpf/CMakeFiles/bwm_prio_kern.dir/bwm_prio_kern.c.o /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64/usr/share/bwmcli/bwm_prio_kern.o install -Dpm 0500 /home/lkp/rpmbuild/BUILD/oncn-bwm-1.1/build/bpf/CMakeFiles/bwm_tc.dir/bwm_tc.c.o /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64/usr/share/bwmcli/bwm_tc.o install -Dpm 0500 /home/lkp/rpmbuild/BUILD/oncn-bwm-1.1/build/bwmcli /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64//usr/bin install -Dpm 0500 /home/lkp/rpmbuild/BUILD/oncn-bwm-1.1/tools/bwm_monitor.bt /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64//usr/bin mkdir -p /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64/lib/modules/bwm install /home/lkp/rpmbuild/BUILD/oncn-bwm-1.1/ko/bwm.ko /home/lkp/rpmbuild/BUILDROOT/oncn-bwm-1.1-6.oe2309.x86_64/lib/modules/bwm %post ln -sf /lib/modules/bwm/bwm.ko /lib/modules/`uname -r` depmod -a %preun DisableAllDevices() { local CGROUP2PATH local CGROUP2ID local tempfile for NETPID in $(lsns -t net | grep net -w | awk '{print $4}'); do nsenter -n -t${NETPID} bwmcli -d >/dev/null done mount |grep "type cgroup2" >/dev/null if [ $? -ne 0 ]; then tempfile=`mktemp -d`; mount none -t cgroup2 $tempfile; fi for CGROUP2VAL in $(bpftool cgroup tree |grep _bwm_out_cg -B 1 | awk '{print $1}'); do if [[ $CGROUP2VAL = /* ]]; then CGROUP2PATH=$CGROUP2VAL >/dev/null else CGROUP2ID=$CGROUP2VAL bpftool cgroup detach $CGROUP2PATH egress id $CGROUP2ID >/dev/null fi done if [ -n "$tempfile" ]; then umount $tempfile rm -rf $tempfile fi rm -f /sys/fs/bpf/tc/globals/throttle_map >/dev/null rm -f /sys/fs/bpf/tc/globals/throttle_cfg >/dev/null } if [ $1 -eq 0 ]; then DisableAllDevices fi %postun if [ "$1" -ne "1" ]; then rm -rf /lib/modules/`uname -r`/bwm.ko fi depmod -a %files %defattr(-,root,root) %attr(0500,root,root) /usr/bin/bwmcli %attr(0500,root,root) /usr/share/bwmcli %attr(0500,root,root) /usr/share/bwmcli/bwm_prio_kern.o %attr(0500,root,root) /usr/share/bwmcli/bwm_tc.o %attr(0550,root,root) %dir /lib/modules/bwm %attr(0440,root,root) /lib/modules/bwm/bwm.ko %files -n oncn-bwm-devel %attr(0500,root,root) /usr/bin/bwm_monitor.bt %changelog * Mon Sep 25 2023 cf-zhao - 1.1-6 - fix input options unused warning to fix clang built error * Wed Sep 13 2023 JofDiamonds - 1.1-5 - fix some review issues: 1.fix segment fault triggered by unsupported command operations 2.fix incorrect use of securec function parameters 3.remove redundant cmd option 'V' * Sat May 20 2023 JofDiamonds - 1.1-4 - fix offline packets block * Fri May 19 2023 JofDiamonds - 1.1-3 - adapt libbpf-0.8.1: prog_load_xattr will deprecated and use another way to load bpf prog * Mon Apr 17 2023 JofDiamonds - 1.1-2 - add proc file interface * Wed Feb 15 2023 JofDiamonds - 1.1-1 - clean code and use securec function * Thu Jan 5 2023 JofDiamonds - 1.0-5 - update oncn-bwm.yaml * Mon Dec 26 2022 JofDiamonds - 1.0-4 - add oncn-bwm.yaml * Tue Nov 15 2022 JofDiamonds - 1.0-3 - adapt libbpf-0.8.1 * Wed Jul 20 2022 wo_cow - 1.0-2 - add permission to dir * Thu Jul 14 2022 wo_cow - 1.0-1 - init oncn-bwm ?}@SK(6(c@$$!TEiREr$! MAbAT V@ .PaEQ^7Tx$!(\x/2;3;;ghF4#XbJ"ѹtsmN%vCLS(GX,!O$ $)a8,X$ CdF!D ds x/(Hfh!0 `cF 1`"Rɦ$)-QwdJ@ )Auf"E6H4 S Do,+dK,`o;?APD]]ǫг +>!HP'$D@Q<(WPHm u pyQ`3a _ $<_56$sFhP]r<>'&maj+U M57% D6(C88)`~ڪ. lppfxyD(/bL!* DB0@b!XjI~{;3<~AN ;  &2ļp Kż0>ȁQbcFł-L`| Iӄ n3 N!B)ɖR1Pu,!  -2p6(5 f6_3Hs"ܲ/ hgZ|A|A!da"P e X Ȁ1XA [LYRf F ͹ ͜Bdr%{DDQ4AT3H)E 3N&BELQI7Y#0wH:2JE$V&1CJ-o ]HB8@Ar2bg9tV۠APbDA LD ֲT@>^.:x{3|*ਐ &!A=&;\W":zQ0` -$Hh9ge}OwwH3d L6z,/{!` >Ѓu$ DZIMcēW'IӒQকy3=`Qe|||,6\&" D1984 Vh7B, @ReD3&# 0@[Pa$"`VLd/X-p;Ӳ*MJ@A! 02;HSpf&ʤL),ApJ\,SSdBylwgGQHR#x"rQ X! +gFR9YL@qJFE:ny32BE;m$2w9h_@Y@C, D.F@!ҲRo @+){J< DB)E7hlu2Ԕ@TWWQQ!*HH$옏D*>Q g 8 c ^ cE ύa^4Aob4)ˢ)dٜMat&$BR@*oMA K7-(&& r)9#yb I@+8X6;A鐓fܖKySdnT;eҝ"S[Sdʯܩ8Z$H-\3"bA$-UP;E"l(8ȩDB<.V3`/+ʼnig  Ca +$LVERޣH@04D ;r( tf'ᲲX- ;Ц0(PS*ʦq2fF7e"Q$ L)Ymۄ`$JΥ$\$H@!FqPs1E@Jy, MӲl67 0Σh*d]#6GHLKt T"&Jπ-Q!R.5&zVhǷ%j6$ւBn''Tj(I2$!u_b 7í+ Ax!3iIW"Yͨ\"XT2Lѐ3dEgGB  0tcԍJNU. 7'*F  s F~z|VRz:d40+CZ(|Y1|2# Aj,`%@q "(AbhlcC`^RIAǰ!y'6ÊcF h&[ض@[n£^ ]YDo!@ D+P0Ii T''KRgE'* Q1 @S J$32K IHLI;ƌREsdkFАK@d2V ULĠ|x!]p @pd*2<& ƈMqCs,;JLj$jC&A9!HJBS=}P A,aD6>ps3Ҿ!e dFॾ&-Y~Kg })v<\/P/<e?̈́d^f:Y4f)fM u3#!K FGnk[0I%;~ȚPoT!w"C[-AXXbUZ\O A17Γl6zćme( ף$4PUPf n h=EhP2<N8@W R*ڿ[vQBEBõ\kwlF;{DKlˇBa ^qAI`i;`!`"KX~lhώu"lx: ]VR? & jxYhH(K,d ѭnlsD5(ՌHiiu%A 41,?.day~iY ՖR 1cj_ _r05Fk4:>'f3FY 6vq?# Ynb>vDQdp`ـ D7؀Dsr&)0r9lx5o,*D|kes-wf߶iN"!0Mm1&"1S b12ѱ^\;0+PClW(L6ۭ Aʭ49$dA]`EVӈɊ^ FLjhp5R᳅X  jvwd hTi(DH}`*N-[S7 \',WŐ~AÓ@1ij$l:sS2+M>Q%eԭ+3pd & 2zSQJ|oTb ]Ve;ҵ DvY;4V,SB"ά9FDZ%֝DiGkEh!=_"|XV[i`d:aY4éi1zx)({)FJ*rCa0ƌp3d7MRUldI)55'SUNP2b uʫmABy(cTA ZD)TjtT@xig)tӦ x&lGG&gQZnQӨfʷj )s  >"#*3\ݪpىN3M#LS9ɔnUnU8 UIMeYaadFK &l8Ja0\y0RGWf0옵*"@|KFΐ % |Q(}&7kVKlQ nGZ ćKDu`@  `d,#QU RIj= dT.aHc b"CV q5vtvsaxx9;1|\17+ XX S;x:;c('&zXq8";x +Q7tAYbucw7O',3J ĊE&bR2a"H"{P_'_aY= TinzXi%EfTn!wcxXa!\q ( _Hpj$G &Q[^m]T?;W Y`{|E)00WM y4D/,\`نk,3~ ;/~5A@xA@Rq sl,=x(`1xGD300,Cț(n#j3DjtJq`0^N&遁Pk1Ƿ@?B?0XK3H1@NOaDѿ`0b0z /H}H,#` DN .d{j]-BSS8ygՐӣR(D.!Cj0H`EY8y{8YgMBW]XNeb0Ȥ ']\pbdF .!" 9I<-a|(IQڥtKe ِΐ̈d@ x9vq K )g<AArfGiu|h ԝ(@;r@zY+6J-qR2p7BH?J#EƋxۊAJ{(-jH(X+ATŀ:_q[-4xġ(v8`ue8GB3Sjʶ"4 AA F |& :ɇ+T)< D4%ڦ+?-XG9wC-kY $K0c hMWnYR-ID~B픂a/kHEVmY?_ 82jEa[YvJ 4c/e; +.PU _W|UZ* %t:( 2 B{$v\?4vFrEB~[hƭu?ND{9k:Pe&)֌ͿєFkhr,uFݬєFkZMb5Z3Nj4FkO5BFKƉo;g2:;uLq-SRQ\X4!/lO"|8F1K6UW:e5;.:?H6A+7m!SlWtP_0 u*;T8)M0 @[FS"d <nn~XdwG S#Sr;`}%\i/DMm`Z+6mY*oejRa.rok)H('hfqnֆjb@MSm5[ŋVC':AOni]v4nkt:r[d OS*cBJ;Je˦"0:Xa<Ķ0 4`,uLFj2Q7 wo/Q>e ;NWŰ{Dml>i]F >f-egy|apQ3c1Ch4g[@"Dh)p S \sC8@Ł_ GjFR[r.e;*l@mp=#.hG8*ƷnRidFE^_`-׼5!80{ $*:JTk67Cq*mb{tk2q'}b?Itit\' I˗ijd##ղMRXHO'?~OX+7D)8)IMߓԆ,ԾP07+Pr#$CAcwE .ryD׫ #1#dqnD:iu #4w!i#M5ou)IClZtھ (ZtHS%N6#ׇiB?:݈XAtTȚHn+U"uJϲ% 4xD2 =`a>stQXGCnU|?tM='Gr42^ҬZ"C% 3IEd^Ƕ,,g-;JnЪddr$ҏmbBRgk1bCrO;x6/P5 UѼ&҉ϺUP0ҕĴ' +Aț\r).ߓ#_"*ZE_SkQ>+jR&çem֋g ypʦjAS{9-  rGL~-B  E|[n*}SM)p4iF.} qvJaxzinf&pW i(HKp]_DVHRxЊ)6A7pK[^3m6P浙WflL8BFj\1:"7(2ʯ^+[55MrGM 'IwؤoX ܪ24ٖRI=y"T`,LWΓBYX27_\Nw!)-_ ma# F:9dQ:#}KJRxac6h)d+NpPsVm4lBw/4pgo+hmA@ïyWE4J @Rӆ`bjGG$xU|Vgv@ZÆjLཝ'haZqZ&C)ՐHx" Ơr:F52v ;_͒/蓻=Hw A4NT$M_ؠ2ߠ+lo:PS4fѿ Co)AIi~wګD<"HŸK[vr-ǯ+t*(}EI)x.//ra2ّDgE ؑXd:KЉ$2JaS iN7eqfL"N'E<$LgEt 2݂hޅE @J")0% "Rp!@vPV!E(~iCp(TJ磵8TJ5C*@."Ư#jPD>dSL0paIɔ6FJ5[@A$ϡ!!] $ v,R<,崛X%(fJɴ 1L$ Vj`H<EE⠑lL6%m&`v9MsAcđp [CC9Zv\Dڣ6RH,/KA|'w 7|ܯs`91|](8`4D ͐ y0sÀ@9^a|fw RZ*j%zjmE"^ekԑnՐ<B6*@۠L6#pHd$ GOj8zGBm*zQyIYy8Ҏ,_@+d@b a ^lw W"qiD.F PT-4.07;>$7h]CLLZAQŰ擮|])pHIVF[%vFAꒄzɖDxq|Ȉ AYR\iV$ZȰt tssUÒ d˰uW7WJuگhR2lnjbX҉ T AxX 7boSi搼8l1尙*H'͘,*J!S͉$mx&Y@ekè(:aZ)%$"^X( z{B/ ")ඊ  J V7%{*X> ؊^+LL۽eKҴե |~::$q 5Ģѹl3%Q(]!Q Z]tD 1:pE'J-$<"7h@X48ʟW e8ߊ'{PjڢWCmi9D"ѷkopYc0_5%p%@;R^ _t)h8]xo/zր3dKC͓%!Z o#e")G(@NBI#$2zNB!<_)iR1q^-(W/1zXH###> ݔؚwbX6Y+kۃ7,[ Nz@8U5Y0RpH~Pf(ІD5'5:o68d$?1 1)ij_0ka:E\4A24 PF: O"[YxCcy-72 lL"њw<~1 ;J:'F`A  rZXp,,b H'D?W*$:?/5)7,RXHYD>F==t5eIZȂAA,49Jnw=h-B'_mIah!†~SgL܏`+<А~<:Gg<~Ndυ(v$NAbOi\)^P(~*/cz&Q"T y`sx |_DP#|o$toHHÇpDxћ5 >J`ptI6+t8K/fhqfЬ3JwL_|6 D 6 RA>^M.vam< wU>[5og\ kn|rȷ˧+'wwg-w΢¬&wt.Y 1p=a?l.|t,~9u^&u |-He*?7f/M.cc7n􀱻Չy,Gw~ѹt sڴc/xa7gj16rfPB*w+<W8 ZkSO>+qf`ز+ύ8.Geܶ[#A/I #;jvƤ"pz@ 1 q~߫\ѵ}o2ymZV]~_)G܄Iz6;=;[\mɚp'R^zR?hxϥۭ*Xu5^`ʖwɕWjcE_O 19_-p \㗍1>]i`4lp/^읔e^ruGx3 sT<`Pӵ[?08 Gap2eeĕ\L<ڞ@{o?՛5ׄ[J.>غoѨqk5 Ёi!c\6mیk'ק<{ j~V0y_\1ꥵ/Rj>=_1ī+&3R0vcC<4>N>`!zĞ:=rq̱߆]$2eq糙692'Kxgl`oMם;옱nȅ/⪾uWX9[Se;g#'uIJ2-~xnw2f;/,Zq!S.O Ty͒1ukMYNkwn^@ )}ML«Ut/G/}q`y\QI'6$*그O}wSDhҩH>R9&1h(|_>WnKN{"Qec.N|Vp~ǃ#x)Mvo,*{`/oQT;*qluM.{#S^j9fOɊ)&QU)"F풕k O^.^葥[]0mcGܝ{ܓk)_띣O3(yvA3x; ;^ߛ{Ii#e|NѡT^y\mχnr;74<:.NBCsVzR7bOo7XsWF l囝UMEiS09k+,Cկ$_4VcǗ.%;jyz_ f7_Kq]RPh{2onÊۦ2SA2]3#׃>ؼטԼ(m}M+ nNO5$.#wHLp_OpJ̏W _^y'׬]w9^p<=g䟼ny陋W_zw2s77^v7Í$}BFhZWlS|8XaW'_6dq;Iw1 Kk2=u||xzħSq]J88:PcYOMIgV_z^jcqp/JVi#ן8Ÿ_#34j;gc-NLUY݉jW>{.>g홭9.s3 {1;YFž ZJge$ؖN;zᱟA~nY\j0c|0ϧPPǬ 9n3ټRoE4מ LeL>juc͛js㨯s[d_pOՑ/䲴̺ei%zǏ֎ɡ ccK} C᧮g~ƺه7,wM7#̖tK/~OM8]9={c,MIƅn6zf)vUr8LkWsQD>S'%Oްfݖz|=Ff'˹w?(ti"' ǯr O'?x^ʕG'6 >"~I~Yw𾊷֚rR+$bܫ%7iWn^[9t "& կ/)0W1 s1@@?UFncsw@էy}߲=S)女&xg҆ lao?ߜ3S8|Gҹ-+^3hfQU6*CuzLlQր~ s7ދ@A.3]Oyw{h]c%.[dքASȃވݘRwt.ϭ\dv\͑=zg{xi.:0}W `I-}B \0BX5[sחNy-zg_˚oyR34hѽ>adSvlƻ;]dDd~6w{WxlD\]z*=w.}~nsӭ4f_.3y)v cr^mѴ˄Orwܯ/ _ZR`ϢIoqc'1auYgv_]!HinZ ̱ٚ kg,zWRyA{nƅK -]0 cXkʦZU[Ro07z3ѧnzeNTk? Uެ='W5+2M3aN . %}_V}8cُQYbeqȁ3j.N.a|0[2CsyYmġtatIӧ6 >_ct= E^^O۳ZNc]j/YgXAe #otgݘ~E.S+k|2zLt9yJ~S(tR#$(i%;gu-n<P8,}WdbUqq>5vpֈDw=?wܳϖ'_Yi(oi=ϱ'b'iidw=kE'ۼ}춏׿Q71ߑ47DzE0]x3H̓-]]/fa^~\OrV^A>uԜu n@|w[3`萜Tq¹1Ľ.ˎ3-O,p08us\9w{ն@]W;o ;Lb-i;ZG10wxSP] W8Fc-;otSCM[LحCU0,7>RT-> n,P7yNCҖў B@꧹Ze.]z)SX֣ס3^[{~ᜩ cyPCf^e>z}sûc6/)\o=Z &`CMnF.C2JY@%O~|7zm fV7egߌz6ln";~՝mU_OG!R>$.ZvjJuODʕؠco_s-*ʘ}3炄{5}WW]U/* eI6uG$朐*;7rr}u ZYs47hoW-/*;jG}n4.UsB^5Ĥ)E^UrjF/oݬUOp:h+65U/Q0ty15R^9ܩ)sfUd=OynF;X֗Yj.|aEK=>pģcLkfę54uxýkwz.)Kֈ;ufw{/Qۯ%_ig}m ¨koymCĹo{EwN1ͳ nۧb>U`;~ưCI:wuM*ݔ}zҦ_o%X2QlSw6;X.eA˝L2VNߴih杒,K |a{nђԺCwRi׶X^Zgߤ',V\*\ufu|ZW/țKګ݉56#xlVU׶`w*.}wX<Gao3ev؊qk6Йr6FڥfL8$g=gmD4aGfs򪷘+2[/ߧxc^|b_cBНF~+ nowGSo9;6|T{U*=g}?I&wn=6=ֺ;C%}uMޚMiF?,}xoXݩe\juvl)u;'T{6-$1[/G%_>Vx]_InX{iiI>VհoIO?o4S|WsT4<fJxVk~mBVL}lN7 'IwuYLIY>ؕp N dc*>ܛGygB)YLYtF} WS62/czWyfV Ix*ej1_tp<7&зMj" ZޗsNn~N+=`֠["QPkC Xb0ZY˧`1!Y9pz:,Ͻc跠em{vs0GcmOճl>hҼs&ϟ9_b9DZ18~F?}^c]yd0[~W^ohKlFWWϺp[tL?h Q!ci.d}oɼsusnhzP1Ą8輰ZZ>q3"=\x9k\kdk. ^([Ktf,_[׍N`xӠv>{b]>$k nll7!A?,W Ge澘K6:digB=˧aew Mä8jf9b7?f{>ݽ:F'9+" N.-_ 3;{\qFڊ^[>yCCCI;vk?>rjZ7=yM%_6+}JZ/H iسg@b⮆?1H_SMƴlF욏Z4"6Ì$|_szS"yg̾!7oz-"M1ϮL\  !!9-U~C˾\e&Rٮ꽪fBlԘ=k.oYsX}&}':-KIM{]n$9nK_.Y|-\N{塞wkOꞖVv5<A`y[q-]pb K@t;pkzȂWO'LqZ'-&Q\Үk>𦪿impn9kHg6O7M ׿f$1M.np85t|秇CfX=&h3jW3Uo>bםADqݥ+xgɼc7t[dl?`$ dN:[{{}5⮼B{_n_7]>p{ ײޯGnP:uՉvL D;(U%ɗ}#o[ MRoD.+[]ذ*ŏj'b{su![Ln QyYOZY3Ws]Z]Lϩf⥓yljye>%nپ/Cp3Iwrq/]O6D/fؙޭ}{4#o<mx4UyBI7RG^Ƶ9uVUy#!9NL\=P}Ի=W Gz¿4N58u)X%*WNJ8<7[3YN>R88d7 bvPOU}x#oGm~3nkEŹ9̑݊krr$]֑ ?'O<~cuAtJUjg|]5U_ &66Rab+zں0Rv ZQ ``\>",/>֍X`}7Ki2t\ Ps -N[tL=x֮`b5g}܃c!,x0͔/%w= qڿ_O!vF*k.3w.1{Jޫ3#kGCF V}Y=[°4+0SZbL+P|[mM3< mӭE;s&LzҢ|*%*|Oyۨ;ɪj3 ]g|Ut>ay_jwx5Q]?~?\8=Ζ*KNϹ٣cKV8m6= gVaUkfා-:(v6fֺj wD],a\& /;Ąsl<\ԱSuc-ѻGy,oعibLK_о\`;:NҸ]¶}c0 |pޞ=ή=~ 7oRI䤞4b"}#S苵(.oo/-vd kiPJ:'4-F/<@>s375.fW7jh|5GP2xì{i'#Ŝl2嘤ϋ?EߪG{xό8U~`輮֏c8n:EBomi'}Xz)f\<"3C>f-/W-Zb?Ns7uvk3נ'9eҺp\\nd]ph2*/u^т= MF>g^1IaTŐ+_>j{37\({Kf5lW::J-( gN;w಄_8Zہ>{_#GqVD{~+ykOt7|ߵNߓC^0wWSc:“>.fyqQכ5C4h}OjzyTPqs%R+ȬrunW",8?{}n_lAӷ:e=4Mw>w{JeFWV*#Gݣ>NS&eө\쟟5M7^f|0evf7 v5mA5_x;}M4Ʊ.,zx!qֲ-}YxSk&~9_vh>?Ow46)]{c?R>66iJ0o:?YDq980lC*o~qf硡1a^+V2VL3US|czt87hQTEXsn;_.x[aP;yF^p&&?:8ro}ŗT>eĥE]オYgR͝+W1a7k Jz[hՖVrη8@wF'zW~4Ťml, JϹxdaX ~\Gơ]xТtZW]K4T wSp+pEO&{12`OCʹfW8cI^jٶE+fObܥ_Zr ͵S\F3*6G&15*fwďc˷A9&ϖ Vt,=ov^!my \usf>%}]Y0+Vsq/lXyݵ6ȸQN{moxxiI ajpI.j\kҚ \o&{ fpO ՐjdQ݋6/;oO^n?dMY9 Ȇ꒪Z⭈;K ȝs ZM6 ΏWTռ~[ٛmbȯo5vH+oid_mR_cRW{gҔ)V>ؘ7m]kAT밧5+ $z|l/T|%W!-~̚j8u痖5Q|hRY]k|T5monywɧe{y v` };}1!_yV C83謒{\Tn]1)g峴As3Y.33!ZQ%7B@~ݭN)+>}#u#mD+/=PtpYwDxot`8 bg&V|e1}$:y{?sjw: 1yv~ojs~z~PI [,+M<~*W1A1Ϧ_%Pe'銂!cG2榎 '-5 > ϚgYU<~0vs(*K;4}$JqBa>j!wO0D V<ᆉt኉`v!shJ8p9ġ#R偦#I*~W=``YjWnb_u3>{UTґuAb:i_vD"8sU4Wz %䵽tVBj>۾;k3Irek9_>'q`Ԫ[jsڢ/\dQǣhyV+Suf@qpmځVzv䕇 DDMEZ`qUK|uiW]W[,mïU,TjaXo|KtF ٷ^VrB22)'T&H*J%LOv߾ajk<.^|ϲNrW.>ԭy47Zv3- q4Tۣ)% zչ#M1)}+"%Z{h5cRi2y-2 q"'!jt)cHPʷeQ uYqQWHorl$No2U^~yhǍ8u<*ľ!/6>H`86lbWWsPՑC~I׋t ߳&~7wm" };_$ҕNZYNU1NUT(2ग़00#=uФF4]E#)(ΨyPfA'{<]gh~|]ჲ 2 O7E*,eл 1|,h 71tW=Z4Xt| 77Y{~InXӯٙ\v!ɹdĉr>b3{A I9W:r8OU4GNߩ*7d9$$18jzK=>+t c[U&">z|? [3vab0J̯aLgF*/WJ,a9, _J\8kF }> RcKw SRrnpz⚚I(W"oRT v \94ram8Ń#O'S{#Z%C6k!T[Q.L$)H4j$}zH4U3EvDJ[ӄ:[XuaTvJII.u?4l!o53=.ܘ,f&yʤ\*R< Fv}In\Sh`v*N>eԳ,Oi2ց`F–#kL )x:+`WCk}uъfF*;qN <44MB[Oz i_h8ilQ2J{oe;e>ǝ}zhUgN{O>N4xJkVByޜ-6,K]["i#*P |)h~9[ݗo|{ .%l8{wg83MDEu~L` wtL7muS-QE }o_ಙaۑ3~z ǯ*ӋG)u`9 i H,O@ߤ%,kL }8>0ŔL#.+bW_p^"U\ w΍ҩMA 'k nK vBs=&V5,{ҦvpӪv~m:LܗOR*84 `t8o[IaX!DTVKn2cS`ԛ 7)NtZ FΞ4&}vU:odqF/mPeZ-|Ӓut_h<.}ёWJ=((Zҍ)fա\gDfa- uF*ܦ?aS}x$: bSg5iWZxR ~gށ-DRryb`tEnS07 aMmzj or9N5|rc[{.e 5بr_\qwC 蘦͞eºm:1QDc] So IaDF5pObU_6{"pBxʞNY¢ҡ( }墣}Ž|ojDcF&i=D-(aLƳezU#% d>w,K9)ɇT|il5-wM~Mb]谘dԡtM/T]u>B/zʦv .i"-iof3.9Yd%==pT1 _ 5gKzP޳Dl>⦜W/۫@O"*#E;=c,l<%˛K2V\ w.&娈MP _S)M0=gr{O{^ j : mX4]u{ ~:hg8~1flyqN^d6?8q"47p]Š߾8 XIprsƗ\21m|~ ~7O&a:p1YT6)eGss){ҚSf ~tMzgl' e&2eF]b zYqv/Zr7,\tjVE$/_P)_b[/?크A)F}j)ڹ"!9SŃD_S6yQx*tgOPʪ/228< TrAeׂTJ|튂wy|Ι);ƈ%(ncaL( d< | B/dp;`yUm(t7Lc{1_fM~utz%h]jP#i%@-mP~$[+9~ׂvS@XWR4RN$V bOC kD4MQμsK-)l yE4?쑙kZK8&U nhBƟj .\M엑ОT4ΔbuYtd8}V֕4ebRp_Ch|fO9Ry plu%o_f(WDL&tfdoLn5Ds DxoDO?x(=ms_Eݶr%5an|ztn=¾>g(FCZhfӣn$t1Cr: x%ï$So@s <$NbsC10ǐ 3ճ?a{v$1:vozfk^<=_6y݆O~cplPY#dM#Dj#VO)>v,LҬ+ߵj|R:Cלy U n4יQ2 co55 vr;jkhfZ_:^R"Z%w}ްB4Oއw.S08/ȸl%|Į5%bT6D[Nɓ-zZ=]ӮToY7RK<1ʊg6c)%<(XZ,tqmN %R D6,s$sNncEME CR.\.-ڑMic]퉏-ߴ4ԹC^Uiu[,U)G͕ܕexꉝ˨hs ʛD!xg^s ER"evZ-2jUn@thi?6\}Ȥ@?~&@;ScZ8= 㽧avNO/_ >=fPxJ1*}YFB\ۻ*UJ;In|ysBH9Ċf{5+w|̠3Sjyѫ1+U7l?*~BSQ{D듗)㦄AB̈́FIŽB g o;* ޭtNA^d2c}K##Nܦ1xâP Np'r]D0?uW=t_/4Մ YݯEOAj[: sZD,@00NW27H%B9 zLfu-q@nF$| x_ݚvQK8 fR(C[>W!EW s 97k8Vql\}olxu8'9^PX?Y V:EK{LRlkt"Η`V;ZP"5ND+K#![Oa񆾱P,;]*g(bX/ vce"mBa#R1.dp7])MmGJ g\ VUQvºmBf :*pT~zxVyZ`NѪFBm-Sb2P~KooU'=]OF6i+84Ō u.#WAkG葽V7dܽzo{wzrgIqE%\|T8e`1JXecYNHƢw/! U*X)EZvҖIBIT.ķ/ݩ;ãֻ!6NK̰_tfg@ H[gW;7eLX/JbgJHiOZ٨}׶ظB}26Ǧ_2;.7c֒9ݔ8a뒧} \㦬˸>TjGFϣ앍5C=,h̒Jxc> +F<27ô=䣚c}ēڎW8Uz[ul=tYDN>L)Z=Nl.]f=@ė D'_1cI'w ]͑ztLJUlM1W3}Tb[J#sb+Uc<)"Mo5)RCcuKqԊ H S1Q _ zׄt *][O~-5˕9{ G! Kxl4=BgY$m__;߬#KcÒ*8i&>Y|O0MEJҞ ŮΝ*X(f>֝r@kQH\Kk7{}ƕ;/}Dv2c&|JY5Al5mWY% g߫%8HZJgs)\ {Sл;5dIT,GNUCywv3p+mhc~KVĘ=Dƾyz/Ge1L<+-5i9Ǔe2_#*/-/M(5VyWꥠiLk!*?]{FB9N'ݑ5ŢfnrǤCsq&5TVh)P,%`uH"e$H(a~^qoYk\)y]D vΪ֡mQ|}3"N u"D}ezEUzmJE"d.LZ'b\Y)A~6bO.!`y+(M l 9I;@j#~l--6TF@C0i &s<3j4ZY( lcG]<"6gИdT@ U_H+ =ˁVPj5 ?z3WŠc׋iꏩ!1jk!`maF^wmT A9~qn&/F3+-zaʯLV6P[+[C*gQIuYF`+$;N;\? I v lPr!'roZst3lf:sHK8 a7Dga 7/K~s99?C X a OZ78? TYV z`R&fޓQUP>C^몬֐PK^ t_]EVM1Y ` ym4A% lodt>22 f}@H:B]/g #plQ}ް0T]Y"seVP uYqG9O`a,阨5J0~hwHWX.bHBGh. V  0ZM1$\NJXrD,'{tƊМG! 9DSFP$b˲3@(Ghfk,?n ˞?%9D%s{n 0F7>$nF_`gg`t~$-R3#ϫU|nm?.ę?` oc0ib;k@?QY*t=(!_ Yφ5 Z^? 3`OC*n`b r2Á"g?!`1frua5;8C^b@hߨ +&uNsq8P5Qt">J/ D lt~ %aesm>L˯" 5rs\(/t_gMmr(,<mPU`KB?^/m@%݅L@Z\$!7E`fff`:翶jcF<J&Hҿ7 fPWUJCCsEz(