summaryrefslogtreecommitdiff
path: root/tools/perf/util/mmap.h
AgeCommit message (Expand)AuthorFilesLines
2025-02-10perf tools: Deadcode removalDr. David Alan Gilbert1-3/+0
2023-11-28perf mmap: Lazily initialize zstd streams to save memory when not using itIan Rogers1-1/+0
2022-10-31perf mmap: Remove several unneeded includes from util/mmap.hArnaldo Carvalho de Melo1-5/+0
2022-10-04perf mmap: Remove unnecessary pthread.h includeIan Rogers1-1/+0
2022-02-10perf record: Introduce compressor at mmap buffer objectAlexey Bayduraev1-0/+2
2022-02-10perf record: Introduce data file at mmap buffer objectAlexey Bayduraev1-0/+1
2022-01-12perf cpumap: Give CPUs their own typeIan Rogers1-1/+2
2021-10-08perf mmap: Introduce mmap_cpu_mask__duplicate()Riccardo Mancini1-0/+3
2021-08-31perf mmap: Add missing bitops.h headerRiccardo Mancini1-0/+1
2020-01-06perf record: Adapt affinity to machines with #CPUs > 1KAlexey Budankov1-1/+1
2020-01-06perf mmap: Declare type for cpu mask of arbitrary lengthAlexey Budankov1-0/+11
2019-10-10libperf: Adopt perf_mmap__read_event() from tools/perfJiri Olsa1-2/+0
2019-10-10libperf: Adopt perf_mmap__read_done() from tools/perfJiri Olsa1-1/+0
2019-10-10libperf: Adopt perf_mmap__read_init() from tools/perfJiri Olsa1-1/+0
2019-10-10libperf: Adopt perf_mmap__consume() function from tools/perfJiri Olsa1-12/+0
2019-10-10libperf: Adopt perf_mmap__put() function from tools/perfJiri Olsa1-2/+0
2019-10-10libperf: Adopt perf_mmap__unmap() function from tools/perfJiri Olsa1-1/+1
2019-10-10libperf: Adopt perf_mmap__get() function from tools/perfJiri Olsa1-1/+0
2019-10-10libperf: Adopt perf_mmap__mmap() function from tools/perfJiri Olsa1-1/+1
2019-10-10libperf: Adopt perf_mmap__mmap_len() function from tools/perfJiri Olsa1-1/+1
2019-10-10libperf: Add 'struct perf_mmap_param'Jiri Olsa1-1/+2
2019-09-25libperf: Add 'flush' to 'struct perf_mmap'Jiri Olsa1-1/+0
2019-09-25libperf: Add 'event_copy' to 'struct perf_mmap'Jiri Olsa1-1/+0
2019-09-25libperf: Add 'overwrite' to 'struct perf_mmap'Jiri Olsa1-1/+0
2019-09-25libperf: Add prev/start/end to struct perf_mmapJiri Olsa1-3/+0
2019-09-25libperf: Add 'refcnt' to struct perf_mmapJiri Olsa1-1/+0
2019-09-25libperf: Add 'cpu' to struct perf_mmapJiri Olsa1-1/+0
2019-09-25libperf: Add 'fd' to struct perf_mmapJiri Olsa1-1/+0
2019-09-25libperf: Add 'mask' to struct perf_mmapJiri Olsa1-1/+0
2019-09-25libperf: Add perf_mmap structJiri Olsa1-3/+4
2019-09-25perf evlist: Adopt backwards ring buffer state enumArnaldo Carvalho de Melo1-28/+0
2019-09-25perf tools: Rename 'struct perf_mmap' to 'struct mmap'Jiri Olsa1-16/+16
2019-08-31perf auxtrace: Uninline functions that touch perf_sessionArnaldo Carvalho de Melo1-0/+1
2019-05-15perf record: Implement compression for AIO trace streamingAlexey Budankov1-12/+0
2019-05-15perf mmap: Implement dedicated memory buffer for data compressionAlexey Budankov1-1/+3
2019-04-01perf record: Implement --mmap-flush=<number> optionAlexey Budankov1-1/+2
2019-02-06perf record: Allocate affinity masksAlexey Budankov1-1/+2
2018-12-17perf record: Extend trace writing to multi AIOAlexey Budankov1-4/+5
2018-12-17perf record: Enable asynchronous trace writingAlexey Budankov1-0/+14
2018-12-17perf mmap: Map data buffer for preserving collected dataAlexey Budankov1-1/+10
2018-10-24Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-nextLinus Torvalds1-12/+3
2018-10-19tools, perf: add and use optimized ring_buffer_{read_head, write_tail} helpersDaniel Borkmann1-12/+3
2018-09-19perf tools: Add 'struct perf_mmap' arg to record__write()Jiri Olsa1-1/+1
2018-08-20perf mmap: Store real cpu number in 'struct perf_mmap'Jiri Olsa1-1/+2
2018-03-08perf mmap: Simplify perf_mmap__read_init()Kan Liang1-2/+1
2018-03-08perf mmap: Simplify perf_mmap__read_event()Kan Liang1-3/+1
2018-03-08perf mmap: Simplify perf_mmap__consume()Kan Liang1-1/+1
2018-03-08perf mmap: Use the stored scope data in perf_mmap__push()Kan Liang1-2/+2
2018-03-08perf mmap: Store mmap scope in struct perf_mmap()Kan Liang1-0/+2
2018-03-08perf evlist: Store 'overwrite' in struct perf_mmapKan Liang1-0/+1
V0yu¶~u>~qLRL ^q(#LS=RT["Cp9PCJC}KͩuX:uXNv?W2D GdIDr<5RGuHA˩Ha麄9/]T"g<*D0ܚ.H@>'/ z鯮I|vݫUc]u]AR"tUnY$UDߟ0mvϠ!*aGx>Ւݒ#AsP 8pD-@X0d5U>W)l0^f˱ZgW]V"37:QbA!jZQ=}p\mhV!.,61գ wVZh8<_!,z6*&U+L,1SQ¨o\-Ga-"EI0 _rW a.u]{WWN*U(= bF:H:6q3ҽ(z @1ʸgX=+?H #1KL aRb]b%D5$AѦ$vk`8ÍtG3m8^RZf@l{ "׏ I)ih M̔PI`I1`qy6|XϿ{YR5KIvh/GJ.|vsOR*6yQ%Uժ*=.;-.qR^|Iwg!%@,74oK<&0ӡnh H kp=n}ĿhbZG@#s.fއU~#c $B^+xmbOD F7r*Gڛ]nzLQm!Q˾ȇ֣oꎣMۻ>9v "^[ybu1]3[ Ųg1ǵHT*vqҢ RoхQ^~1O3{wy0#q"w}o4t 5kO=N=)$׽40>h0DA@eE@U$Do!Kͧx'|T=h :ǚI՛! A53%@o-~nPQI1zeCOz=}J2D2[!+9w;5}ɭkTAk}=Q"Zav ִ@Uw/id2ЋhA~қbl PVt"{l[]O&~ ;TGe ѠL糪 GȆ9 É4%} +*f+8Rx/6^ #g|fr+n0Ivc̼GIjt\- ^~4G8X`ڕ`4>ta%JmqH b57.x}40s4$\WM7`a81cD 3%i\VA&HΎ 0@N,>y4&vhG8r2DkfVwV'W9ϟ7L3{oN.?O?At,}3?Z K=x}dz_>w,B@ze\*0 o8'3s;:t<|,g[e:y_Mzͺ7\ X4<D AF'u媞Lص9*-W/Ʉj6r4~)&>|]֑%CJ_wXB. 5ZU9w&zLvP5a!QQI}պu>=BB93)atyлc,]0qP3^U>wc0[ESU_' v52B*7[l)*?M\#=ZHh$ 3eBD)[1J3)ia`sjl|yixs'scd#8O4b˗AtIv6>c"Z>.]3X6ۻ\U JfVrJ* }+qm&V-;b"y·i[M& :T>8wR\y  9m"+ P|ƒ;Y?` *C7ros?JB}xCc/u|`7AfzYia|#Y֩\z7^fN:=[ݷkKJ!h|ꞯ_VdF~jpqeW>}puj۝뷣7gx8=.g;s'c8A/W{mT{%xhR]@^(&裑@J J/E+'Nm+j0[G? J R<3h/mIBu iS_vFi we C[?K[a%Ɏ۞v.4)rMܻ@&8Z'Zy5T*9mȔ::͛^ = k"\ݟoTCo~pA@;d0~@A/u塄Pck~ #$ 'V'.9ۨD-2M:K*k />k kѰ 4*Iio{П"AN;D8PNkc%_UI1-6a=q ?CFCP$@" eP }?)SU!DB>4&@Qu" axڢiLGg:<GT}p\#饺SU|%s"vvK]<\,^]egM]0azs ΰM9aDL~NktMie#&/۲ƺU _ND-^&<\M?^!M{5Fe0Jgfſ%*2ʨu徿s%qbz\mb#9[ V5 l6XU85m}fekO!.,zZ5!ؐG%e6LZ=Yp4\ezrY[0&(VD dbuaRRV0̆zXGA5+4jG0)HaV&iʓ韆cӤጜ`FGq6q`cbԓ=8mPVY|M=cn&6jn5OAN᧎ܲiZiVDG\㋯o-Dǣj/zr&_Ͳ**(Gm;Z `+|2-5 j{u+|&ٹ~F?E¨k|Jp ظ+Ta萾ژ¢jBFe۝z34~;u|F>뺯os`Y4Zΐ=j R};ERBsOcX~}U?iYnPnBؾ:|#0*KÝdfC{_<EmnÅ{\|0&%ZƯGAc6hu>PMMK ߐ`Ӫ\i >Q( o9 N$\\f!lF'p; LhtAk55oU:F2}n 2~Atn-NְdOгBKIf3 aUЫF3i a~ˣ +P R k-rN} o5!YJtW[[c.Ө\UpV#`2kw^yj T-P;K݇viF$xкb,jHd4' 6CR()_`~6@pA%dƕ$Ee5%nl{:]Īnc$)? (>fB?˵>e`(ιJk.i>g̮v}xhb\ypT]Cꊉ'[tXK*z6`eNT ,`YJ@`7MjZp\>m+M 7ZK\=4^rZi `XTjAި VA4۔pD $"^)t1(5C<,h*|%,F ٘V_G|E5Ư1 ֢/=F#o`8i[ Bv.?`<وDMմ'6t׬Igӷ X3 e"MZsh5TK5 v\׹(4֦z2]Է&+hm>kN 0CAYFn;˪j8X 46,0wiHݎL8즯>yXT.RM?Js FWz C^`:/ lM8z!(D yUzl&_'0,Dsp,P]!eP)n67$=Q xN=veG d=ӝ<ڥ\WSLv GB:R?1m92]}KE/բh.ET`ohON* ԅ~^q0oF::1V?/]U /#"DYZ4,+S|^w^r':Ũ+gf£y?TG,­<])WnMPy,ै 'ȮEԀ]S:t,ymͿ3#{1Ñka(6}Gȋsk@!3qlngc jZf66oӥǮUYABd̑{=ҬVЈ%qQ9 Kt=+.2,oCh[r[EGd7./-7=- jd+@i-L1Vk}ׂFk %L8IWѾ&dˠ m|6Bjޣ&[ڒ{Jv jF?;9i>+#;kןRzͣxm)qǃ2Fe0Ih'_PknFqx\ۼlo#5$-NV2-׺>֋Rw{ cF}}ve9Lc;:ӍЩE2)jA'{)#آ tG}Z 3@, ]sWw?Ƥgs[s\l٪FPU9 @8GfS<' (ECMVEadMO~]?-iΈL9GbP(E(x(S)1>m71‚T l AyS&ǒV1ӒM M4q(}V k}Wyr L {bߝ1؅8Kw\m.޸cl9;\0%$ҴM bwcNaoY9)92CԔJNZNo3{C>9ŷJI*c9ۈ_\tϿS o,j^dD)8ۨ8<@"N%E;w$r:ϙg%rd,( bf:G=[2 kW-PQfxy*mtrXmh  P 3qx^gOvv}jjZg5j  vzpa%ԡhNr:SEP=;4(矰D5$Q,*-LAQ^I0/hÝ8v\v]tbKv9f@z2NGuk̰¥H 9>^yƱsh2 ?9N3Zz mP'|H$7B{\"C~:cM˕Zdnp?a`s}* Ol,wÌެz3ٓ\c}RJJvs-ʮ ~eaw^mו~Z_fإ E0t!Nw$qvL͍g(g&j6E?%t7?Ӏ68g8yQ9cn4Ohat#*Ymt41ps.H W+01(P)Xotm{fFH1myrɧZ^JmݬcY0qvR`~go2jƟ0@>iACI_OƤ4Txgskɾ ^Kk IՓ dmqΌ%)`{]XVEZk~ZL*88-׶o ue==$$]eQiE*H{<DžN)tI \UguJ$$ITxsUͭTRȀ&bV~X|L%_pG1eg#%{;t]N>-{j2s'S*@߱(&Q6RpRj\9!_?{wI'9hV>U1$#Z{\ Mۘs|Nphsڢ<m.)< V5RȊ4za:֘3* ɩ@^p2oP3NKccD殺˄ia7.$u\ۍ2s3iV Qr+pKWFBre`h ӝ~*3{-kÊf\3^*AzXK_+hWǛegW0JE"j) j c5EZ vrjJYSθsD k`;K%5hifVb4.x{f}_5Fzg2F݄qc"{|90( EG?KkxsYtwshun8%cDaLېAfK,`2U4) od=]xHge;DSHtNhIr>]ޗpYsZ`(!Ou|i%]0{=Yc$Ck`pob}XR#G@9W22,w}8 Zq<-͋$wi:,9 df!nuatՁc]}5s FpUt̳ #7YH?_ `u/Ozp<p!i:Dilu; !tfymfDɐ FsX}O5xfA@-%# մAb0[[Vnx䲏UWAUX Trh mҕY%dλoqMjjz!u;LQQP/{hV(y,us10&|),}yM198A>'\^FrQr]/WT-uBxk6 Q[IS>Tq'"Eʎ@#d4A+<$|J)<\upU;E=叙X$*@-\(EBQaH. r2!@̧*5Rv";h ";o.kgTf#VM3c؂_SY]3 y1񉐇L&W <#n a1ak]9}X z"o)u7O6ڎ~. (#[eGagOVp6eB,YcKf#*ν7NYŁV*GǏ9 F!nN6. 1Y&_t7@ 2`;xrqGfGxU9hX_Ƅ#].Pgv~uilyr2{9„H8bY9&yPW;?,rg_xazy(_uv6#(x w|l\zJQ`kcU87'G 27WEw Z =g\4lNpyȿ%^Ȳ]O K9M!͜. ɓ(vì@ !"G;qϬ0Ѭo{ٱ]{=!jCLa53]O֓F@d_?~ՁJzQrra_"W:Ǩy4@٪@`̈́xWdm:[6NSY*c3̓qWj,A da4Ts5T1}0H a4~ H#_ <* }d/+~,|/*s|XOH~x ggBS-ޱyH`l?!1ֱxq<+qX#r'a%ѺDsw5Ms*k_X0"|$0^mm,r'.VVr,T:h V&641{ηUh7 ô7f;ݹ}Ưljށ)w:d)s!Z*#~lTRK}c35o-ߦXdZBG[LɯDt!k#Q_ 63gtz9^]`xSLA@?9\?:1Ϝ过2 SRn! eso\ۚIwd+-K< XݱeTruuL<Dn*amHT`x;zRocPg&TiG3|1;W-`(u9 aa4`JK+f9+NQ2 ,gՐHȔ %^އ>fp`s!h؜'hV9AҫdxWmvFV!9!Y\t.׊eOlY*)%sw}"T+hyDF S,Gd 9(p NLZh(H%T 5 ㋆4_$/<1Iׅ^ ^ř~r%K<ót(aZыCz(鱽D%^Bp,D5v%̷A+򉱆^"(ɕ .4{M !3_Pgfӳիe~J#Bg"[<$`;}zڥ[ ~Z^c<`n5͔" LCzQ͉ ju ~o|\h S?C(S24܉:E\6Cjc_ɜۏ=5OUAv|ReY)V䐈>[U:f+%0U:؁[屶@c1 FU#dNZ5P52F*]+42]coVEi{8zf/U@mjJw.N^25s3s;ƕLpZ)Uy}=yAlJhFD96ѶKt:v(zP]-*9OS8~I ED!kr"i,B[Q0(dT68c}mb4oWO9LdJ;z/g9aSNiYl`iJ l) *SLJV=W >MW9N7hXZ2F&DcHQ@Q$|$²'Q>o솟~`6Q*x^6I5%P`r@:bֳ )mgQ~\2-*FN^/ra8s::г7d7%dE{ͨ} dyw*`JvI-S.TNDC/OQBmj Z,Y3JoܦXDa!̣Zg{X`*G=b4J#d59QCHy璵XqF&m\Zf4Cqv%k06" _ou Fe{|Cg1]);(${PٱR\?zqLKtA `D*I6u{cʽNa-; ,KbR}â!g8P,@?5b#|uUJV#2Q倦K̍lac;8ճMKóys1_ʒA8 :ENyq0V66~Nhu0BB"K#5C\05. PosXb2b̠{2mmg_](悡hvKpFO;[Ƒa~Jh"!V>&f \5ѥϩT;mjl_?svT,fڦ޲Z J꼬%"BE#u)]8I#ZAKe6;|Gw]^k?HwpqFNK0_Hl1̨-"]fLCleQF(-GFtƠ&t'#KOvG5l: :AT3&=8fȥ>Hq`qw[KNU/WK&MBbJ> 9)o( >5qxvyR-]/`o02鳪j^^܂А&#-SZKr} r"BbӘu- z@ 017a%eS'DM$ҨV7'ԸVU8mSybl='ׯ^^'XX8%Y0p曫SH(1O8+I4DoAzg-q!}%;歌9>җ n1ש4<6ڛJ Q4<>,<׭b/)g$VHLH#Zr8ݡr*QCxLv.(aoȟx|i0'1&?oHvRSX5Ջָq ykUz!l'wc8SbɧIo ]bY^g&$ s2󊴾*Ar!pBv gJ=z+1 [B~bqH^D~{Z.\G1F1t4c 3iH3Rտ/z+>,AY2YكmVc:R@+'j" fmv pY(ϟyKj3$[ó uu-k}ƂB ;T}Tu\fY662(#\(DUUT@MO:)rku[ 9h>4J03P'3y bQg㟟X?ϱw/R8em1F.!Et`¥ȏp:G KФ% +@w<(x^FEαto|}}/̧S>9-82R-&O_u@)ou3ҴϱEUsFF9 ձf3bF׭NK{3 ӟu]*p'܇/DOj(h#Y;%0mR;P4pJ2!ꈥmKP|ͿL7[]?sb f%+PN$ԁtUC{4ID?怜~b k2!C MyIJ"_}̢$+,3C`$~D x$dx>hh3͗]3Iq_y}U4wH[!I*t؁"`yO§ww[cD;DQDMܫ[fd˹Zn|rhb@oqWx9ҍU %*M]l~r /A*R cV.wCpPVO5(\r'nLlc C\eO&hɻV$0q|_yb?\߅WcC3|c ݾ3=/N%]R8Q}nBNhM(QyWeӢ4\B*ҭV@?:HcŃIQ]Mƀf(nEOްXیDyCS^XmGaZfӄ`aj8! q{$\h@G`Xch  ʶ)IlR`g (9v}SX@:[)mlB> 6)tEx=M9܍c|,vP*e[BtY@߱!n".s:eT1# V2P=}?1jz@O ō e8/y"bm>:P^!|l' 3Ջ~g@ E&TIbڊa9:Ž ]\l !N= t-J}xHK0H*(6%j3.W`xtG#`u؝Hlt8w]}J04U/l-ql`e]jY)82HƥD2 Hzit{pD8\{"(eX%Ey\)Q("e#,F<*;AngixwI$ ,tЂNֻNzR^!b!<0yJ>Ⱥu>MBD8H۸/lq:T0d@_s .dPU3S!h㸞gə_ѕ/}uo2PhKUɭ04?ÝϦW=@cɟitKL-l9?nu^W.8@#rssW8 }A x翀æ d30D`J( EO|:αTXThP._KOzrFp[Z)"gS`E$>GS"-Լ|sN̰.Fs1qc %(~wNVTB.\4aS}ߩz{ o݉$c"hu0`b5I0y5P"6A8ag3ӣrc6- \m OX3@fd?9g o3'a9Ty/ 4\xX:zt*S9B'P_eHg^#aa@Vſ]~|X\ʼnuZ1'a7_M 9pu-Rt~`v(iRPNt PJ!k}P۞&B0vZ=nm-\l jB ֪$́(qjByݼvm_#[CQ]+h~=v,e9cCU_8YN@%R%^cJu8?> r@## aNhkS .W ׎+8VOQlJb(qZeDAA\Y?)Ax~8$@,Ph:N` S.2e]ඳ0A'݋ڟR,e:jӲ脊I0@-CFYp]S ,e2j1=qH;E~a3 <Sy0=f~~Pʗ5((PB QX"n sbg6Vm\^$}ɉ[pC*1+rz$kAK:1,Jͥv6f$ȵ+Ќ  uA߷("Xf'YXt 0U`̜/z=+h인q ,ۚfP@%y")v]ϵ}l,hf*wcH<ݽWD񰷧Bqo<~y˯|aw,/#\F*~BFnAQb;zR P#0J̋jY`1jC 畎xY s 컔Dvq`r` u_R8EAu ́4H>#xy93'S92\7wD iBAy;wl~+|hV2X#rٟv8EVΏk)J+|As\>^ۺ=\btfNrH"E;@2}R+dpB>Lº&` QNb,ca#X1+m+Zݏk Z{MQ9/"?Gu]RKiq4BU-1*M !_ve8+_[tX=[@-CU7Щ!p]a&BABryR[d-2o' Ief~!wz$[7 ;ezL')iÿG+Ɨ$٠vʕ2]̡q|M {}]{%ثR׽ui<[Im倮=^i:oXkSl 1E2ʥDx,/Qm BK% )UGp߈îtt׃: ڂXk5CRRInQ-1V}B]p7 ^z#FO|]{#--M,qHuwLhT-1 R{!F knT)[&f` RPL'okW& q=8o_)[,$_I1%墶򣇓jz,Y;H0(@ *-R!U"8Y8(G;|cF+ ?n- °.d>Zgj'X#~kO(>ž{2/X|zߵņ{IݾQ΄I*P(xdF4\V@TuץR_$$3"dbbxGkR3 s,ݭIG?}3`'a/7BrP0[MQ o)Z,VwkhN~}C`*Q`xhl`/jQ%Wů[;@$I{w>?{FAfɣl"v.Fÿ'kWCq/t!RS-ۭ" ŋnwgf1 HP:icH^T"` gŇj 6*^;:~X̬rWdEGu\<Վ(ZQ C "r;`5xx1P gpNk* Ɛq?Zvy[.!ݡas([hug"N"u|[jHW8GdF<8,ksy\q\L qi-=DMKx$Iq/"j܀,>F^v Nt-sEZ 9_q8pjqBLvR<,0xV囉[!TtVE7ȱuygnx&Pvyd =T)p7.qPw)]bXE2eC୼n2>Dt&`8'r,%GDO{.Zyx43̓s?6օHbEDxW]ԃ!ݹ t!"e>S u-(B/XpS)4\[F._M} C-w9C 'Q%$r@(26P mzQ] &bSr@::x3ϊ!AYyJyb]ENZB1D y scc.AþK@݉5 NÙ6Ϩe_8m6U=1,48>1`8qxM3 ?X G },µ7l:\٠$FӵHYp z.^B-xHìg[NgtӣZFīH9ʦd|$ :g1M;+qD7+zֹd`J{WUb0 iSi4rk[ȾC'gyA| .7ΡL\kS"&VQFc.{#y'y#2CMeJ Ōio3:{7l| ǽ+M=uQu1Vl& 6Z| x T5XQ2M+9&R)vHtHzWWsQӸ+Jk<)nb[hHw!MHb ݳ4!"U&wCEHFtZpð#]62y2x2[y6,yQtLWhLs7Mxu!LoR`GT({ǘHLS7#{4վ'Ur@ymEӇE D0X-C ͡x鷌>Jm >@axdáPīoUvA98w=@--jrBDGL2.r(2b1MuxDtk ?#Z|DC w7>/S~w Ni.pҷQsw:6(U>@:Pvn6GeƢ/{v%X=pW4H?4 KʽE"章hc-L悻8Cɸhu>1md) RW/L  a C?[M$/sޢ5kZq*os09`7gآmj[DItV~ &{1hgӄ/l$Q{ EkeSc!fgPmH2U@Bdr(Y(l{7,L6h?$;(YMb ,S{򓏦~j5#2h0iܳ9 ZTg)<#%ԵjtH \Ur(u5mBN =* .o=G >69[cr,V8^񼱓 ^3#+3p=~%agR){ưG0n50(ͬœ:R%kd=-%A 46"[݆B~+l!\“*Rcs]$eeA awSըf[kKltר)AjT Kr k`>a}y YDC>E3(SQTE k$|..UyΪUPB 6$vF?!V|i%~?835I#!*Xa,:y؉=y 9܍m&ߴV'IF"A( BsT4x7@F*3ː󉙰ة~1;zZ{z h"5M%!:B0L@Dt `72Df'( z>ο hGVz" 3}Tݨ\XK5dۯJb__ gꢐ \b6 /]cE0+Y ?MX7d@'+zm $rj.yH'K ]SD Wn`G/A eseF3Ti齫? M*B[Zf[/N-r,q"b#zlդ/xXv iLIzvDXj`rՁaZ:^P X]0 pݭ"WuVs(3]Z+  y-`{Q& g@;v}#" *!rXv% r+9lz8 4@yGb ZK2_}`tkUwK%̵CaΈyvgS5G_kC1%wy<Xz5 uPj){%=6]d҂A{ZY1-o;AdeyRWg #(9vBL?QFAuI~~s0=.%_Gg?4;=hlō4''S٧ciާHJTYkG}8ܙ0~[Z|8N*MH9yՐ'jK&>1׎DPcA9 U[)bu`ffSKR>!7igv[h( Ĕ$3Z {^m0 bܻXhL+ ob ޜQ AJAӄH[_31ư_z%&\D_`B?sI8:8|gA.T|TKM^ sJ2U93_1hwmC;#qK>k O̵=x3r Ir㘜?R [c2*YDF}x>lYgni1FPB< c ! :-ʎ|[88T<JδT uIāu=US,P3|X*Ƕ[FHXl߃}\&cZ4ي0=*}j;&B&[&iJ%`ChGW5/1mi" dćMIJrJ|釥Z3*Ġ7Y8P(#PG>R~ss]vrEjXjmyw W:˰%'@?LL*h}Y?ci%@DDqv^i~`v`Bx =':WhLaȄ+ T߳&p [ #x$}U لFdx3,*Gg.{_wrۻgB *3'a}f4CQ7&?med&ܨmk!̬U6ӥC T g82hZʿm)6#QGfwƎ2I4dW\T Um#.КaU!P]Մ %"]c$p]2t^@%uāHꬁs !B,nak,Eyo"0m 'DŽ=#R+bcp>ږ@%/:Hs݇x ]6Y9 z5I# `[!}"rm̷~ Y+@iug PaC@59U8jFY7_Nδ|6VY1 7І4k{BI_$lK$DWAK ]P~fV{ßKq9dTXa3xj .^'zrm bJC~p6VoǘB -S0sW NA^= GP'JW ~C O)W&DsMPN78Ӆj|x ioH{"#Z~7126EhAV?Ec~N(9SVE[Lr8<ҫd;?\];wl,Zep 5>i`q ׻E2x`j 6"=#¼o6W\آ]Tji s?UN=Imd*2 gZVWٍ%=lʭ@CGt&Ꟈs>2-7>..G)l: BuV5{8+>ZsCO"\`snb t7cєRNϝmw؏L_]z) "_MPRMAƦ%){ba ZC`6AQ$@]j6='['[Y ` = @?ulSC}/A 2T׳w`Y'M_eYUƯVW8z='p*lN>Unُ7iB"vZ#p :M2~\ +i#חy@2R7ƚK㌭2fa%Iڹ}fc{H\F}64zVSˡ=~P< ,Y |-=Qn!f900)"ӎKq?o&<8Ukr$xw?T4`TCOg2xV,QT3'\,] ax l?' X:/  ",Vn~U#K/f:M篫;b/"qfI{}EI@HDOgW?]PjQ H"'z~hu<-}\-FmsgS "@ʣHu!J^l0 %a/T2̴U;f' |GAn)(JZG%C`\?#s`T$I?JIhV_" " i>_}ſ~%Zp~2 X\Pt3(V^Cݮ=$I\xe3?cN\c O5y_uϕsԺW_&-s/Ta{Q 1?{i}^% jZGDB?a_9BY5DGߪ>HyKKhmrxcdH$,2NHׯ_TǿmX˺a1-Hg1X[v >ov ?OQ]m ߯mwZ9`k~^5зØT) \N&q=}7o~k/ .H7Mjrѭʃ[s~9o?nzEUG_~&1tǟxѣǪ/>ç!{Uu^8}^p\ZxyZE% CO zn?um=04/mq0*M_QRC?YTZyz>lfat "uG5%r{ !wWbG^,[|uKuѻն/=~?U6pJTRY!{Ӣ˖ŘTxjGf6s#5t?Euܩ?_B ?H>% وe~3ﭝI06ht(OzeNS-g ysN*Gl\Q~v0C\WQy0c%O?+ĠtYABrQ&Uap/eo+ DpxwE4*F~=gc ϥfyAGީy l?K/bpw TSVY@21%/dbYB<2`Dt;{P<7mS9B?_w d/kW@Cv@%/LIm_Uk\ ĴHnm/t}\>VB>zOƆ۷Fˡ-Cә`@` Tt M?a \1v6J%[-׉@>SNJ0j+<=rhN:KE{aCմO*G#1B5B~#?čYqB"E{!,a!V?"Lnen7;O;%T`jʱ&*.g|@->w'>$:e~0dxtAέA% l@D{IݲXEx2 PKҿeYTc՟º ĶȯVE/e~,GX-)yT0d'Hڙ*g{>-o$^}F 8H#SERDTY2F6Od@S|;tpϙ- tӺ 媁^ʮo%*31sC#Ӯ8lh#oу"Y)G|w%#"Og}Wf3[s"E_!"ghi)if)&1`d*&wR uNw?mTDʂH$dPڈL %*Hh&(F>j`%Kj?6ky=_`}Q [w؄f@#꩒X;4 y+q#r/02|>&pgn *Os^GL_$A>?MKCVtu wX~q$v;nyåߺ.~Q6hꯖj<#7~!' >U'VIr7t{45T0CfyYZ5m?@==P +)7۫ns;:G'wGR81 CF%Bo+!_l'U|/쐩eGp t@@?Hz;jV};GFEQɎ"Dwk]ށTD,JM0Tvn 6{>QDk W~͉$w:CiCB+8lᶤ0Î5h?8DIs}~p#_RڼǗri՜@&jO)B@i \0{)g!Xs&7}6lvtþEZuE4]gtۘaF2ʠ>g2ÖX< &zjujX\qF'Bo(`f͹s?صq[ҮoY@1ߤrɟkB9*qR|]oxYvu,㒍d U_S+fF "]s?-衉K~/X-ysp?1ќ6|%A2)'s=@X|rvwRA@ ]`a` $+1߽gC)*+kGV_&?9ͪBc{d\h\c>FdJ =㈫L}V%dn>,x!1++,?>R89L`·Q/ (R?逅 >%ňyA'^?giWVQ"՞sdB6&.L }u. Ul|Bβk4@¥Ú>XOMW^H+V!յ/#љsbN%xEБ:jgצʯ]ի|n{|뵅k1FٞM"Ow>gq\[OQGjm ˇ0!eulS\!~" we}]7u@W GƢusCM`XDʏEO'*H5AkrZDKħlWK2PU/ %;'/E rIZ- !EcZroԢX"(I|$o*K$J8_)Ms L {+!zZ}zHEK}k=3hKhՋ;N"ZZQ"TVj'Ye]\#ϫ8d2bۆ 3%V-CXس*pPu ElL`q+X/V^xzsSpgW3-,QKշ6>vn9q* :_-& p#I rk34z[nMc_ |NsoA">'Ny<;*?sm,:.ԷJN,ؚ$09v8~MهX"W2ヴ)-! 6 ӱ,2ѤM(uS.jzFiʢ$8%XBrCkڪl4bzV\Y6G4#U&o19!O;-9f{##1Hь/vr!z4:*.z\O:yew݌5Srp[o=(mE%t`o11\:1^H6t??t  >袇 T!u0 j=䨌 $Ҭ߉Ԏiw,ĊHt;;N5_wD~ypaAes((L@_Ryo2rf(F is{˙=/]FF;}]Cq꽺 fn>:(6j{IPD07>s ,"Pg gxgmZMU`mI89R ͱU?G1~N_eju?# ,bST_(T!@IWeria yTa8D9D PQ@*a[OӰa:/m TSVd2D2@fc=vt<(^} 'hkCzQ8w<>iƽH?'YA+ZxV za >7_scנ |@H~UY`5S.Uտ<BOŽ4Hw4HH~_O]iP^3;oߘ\l9$ͤ?mk q&ލB:[xџ Ӻ?4{W~X℔ "GgGZ7_4Ѽ* xiKˀCZ4DdRÍ4 q\`VƄ4/$z}oHT2/^aק8ݛICrϪqfoQ@[3Pd9i{Ćh ѱ4p͝A8q 6x]bj6`*TIAF"V[X;Y4vCNCI-2l%+@f mrX`>Yn,XWcoN;1Iqq^`o+x(pOAy 8/&&ART5 uF֓r@y=>a ה-Tt"wylO3[.i֜{CE7['7v=@%G` 隵8`54n7E|3F78͈ʆ|p/t တ%S=TAR~ jLQé͐Abd Qd/O"tX;vNW^_RM:A¤A,ep"dbj\<§ۧb㷸9z!:_)ې[ PӐlm(L=DD8T0-uۆT/DD~9)eBBq: @%Gd0$w^S33`:MC:qM0T*܆RI?= |mjles&#9cΙ '0Z ~*_: { ?Hl^Iªg:" Դs}WpzjTfC狨^2{# ,ÀqPu9&` G}CscoآKp~ޑ}q!2U{cxέT 4(@ @"\N%4 @ 8}Yo}.߭2z=P=N2+/o8|N7~Y-[|'rD<AWLA~/=]}7jx[nɞ9@F8Lx^c69Q4HT2`xI\ ]&Nd4C33U?Z}ߴũ`,0@ِv+`@lɆs/M%o¬t4.RZLH"SVX.{pclC'f^ӏ-{t/dvuc|U7m,. w Ap Aʱ.1mX {f3Yckvn=*[>FJX- (յd{&0Jcu3[@nN; Iكّxb3fODL/|boi8ς[aM?mzj\ʪ*ޭ:_(ha~W|:6L9ֺz*匴uX`q=r+ZV:lxK=׍X4p*?^v2=lӉ~fP\`v9k-ҍ Z[|e+lйko3nIsUhjօқ;%ogl x9T|*v}ЋWnuHapdKd?E[3߷,y)^`z0LYṵ{v@<ޯ0oHx&/kN,ę3GxukϖYN~NTȪY?IGKf'BG Uje b(?@ȀlBH$ 5Ǭx]Aݼ8L_/Cj} $w4V7g˟/ ?V ?m-98 f6qm? $O$8|*و'vH'HQߠ-+P99A 8|/*Ayx)̀6jA0i~oIٜ"EK+#YIp*{+vםzrZZQF@5t@VTnWCq[y[q: 1 maSsٖ (((j(j(j(j(QEV ";}Ơ=}f3>\4 oA iq6C VzC. A=fg/!=@Q3Dr!'c9ѨvTX$jBg|\GK{.*!`P4un0wM<7@Dw6Soi[8n\w28okn2<1oUSSCBB2BSH0I@UP0 TQUUQ4!CEEH#L % AI@#ͭz&&&Ţb)XV"%dGВsEh%$@RHD,%%Q!@R!@RTHJDQ150("(oz6Dҥo/(.|Ǎݝ#~v":r6ݦ'ef3AQ, %"@L*B_cq2HGi/]@jeZ갍`7^>6xn )I9$*{W],[lle!cBvզc!/Н!$a23$QW8JMD8lm6Oo CQ@Ҵvء&jf 4>E u]Q~z*^g88( +8KR1a/0%>Ci%B0e8߭8&@/F.(LXG"j 8@%qh fu~=@"p۝#ѽ:MD-]P |>@{a!>a! 3?Fa%ə(76 bDH[doyz5DX//peCq)eR`&Ȑ[J bYUpF+XG2P[ VW9QI gz;WU.Sknga>{z\O~SeB Ȅ eU#(&@X(3NP" 5{ܕԯpR16{)4 !;q 8XQ0YJ4+|C+4DȋJgu,p\Z}jڵ{UU8:"k:ΔZƒV݆GF-$b.IdCc}oyBv̬́tfvty71Mjc,jn;nkfz O\sXe9~aI@^] /V߀h^fD3'.ڷ/yד7 ;}u9KHMO@H\s,9t93{ijۢ"TG`#IawRkQ9a@ l_͇ tbD0P'v&Ӥcmr[Z[J *5* J:QR<gۋX:ejʼn2NZ} L@%P+ԏ`hPP`~ [fXvLZ׊[YOѠ>eō?-{p l+;#Ҳ1p C9HC/淹nD d\ n-)^ֹ s[~uyU2_22KC |ߩD0r}}ikE뾔M靈59aN흀O7I hJuc% 9YNzU3}Z_k搯\;kwBڥQ__U.ZKDGGgYa6zu?w?Gߕ U!7u B rȯ$OOcYBt9 ӈ *]pĀ liASY֝"˶G69rCIp+c1+@y"()3<\qW% HfoPb$K/h vgOJqVIB57ջ=J(1%lNZU{]Nƛ<nƨ_ C߅ЪTD7N%GMuMKMz+_jp