summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorDavid Hildenbrand <david@redhat.com>2022-05-09 18:20:44 -0700
committerakpm <akpm@linux-foundation.org>2022-05-09 18:20:44 -0700
commit7f5abe609b3dcbc62a36e18b1437f4f3521ecb75 (patch)
tree37cb472bda88c5b0d11248ea5f66564fc332a4c6 /include/linux
parent6c287605fd56466e645693eff3ae7c08fba56e0a (diff)
downloadlinux-7f5abe609b3dcbc62a36e18b1437f4f3521ecb75.tar.gz
linux-7f5abe609b3dcbc62a36e18b1437f4f3521ecb75.tar.bz2
linux-7f5abe609b3dcbc62a36e18b1437f4f3521ecb75.zip
mm/rmap: fail try_to_migrate() early when setting a PMD migration entry fails
Let's fail right away in case we cannot clear PG_anon_exclusive because the anon THP may be pinned. Right now, we continue trying to install migration entries and the caller of try_to_migrate() will realize that the page is still mapped and has to restore the migration entries. Let's just fail fast just like for PTE migration entries. Link: https://lkml.kernel.org/r/20220428083441.37290-14-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Suggested-by: Vlastimil Babka <vbabka@suse.cz> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Christoph Hellwig <hch@lst.de> Cc: David Rientjes <rientjes@google.com> Cc: Don Dutile <ddutile@redhat.com> Cc: Hugh Dickins <hughd@google.com> Cc: Jan Kara <jack@suse.cz> Cc: Jann Horn <jannh@google.com> Cc: Jason Gunthorpe <jgg@nvidia.com> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Khalid Aziz <khalid.aziz@oracle.com> Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Cc: Liang Zhang <zhangliang5@huawei.com> Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: Mike Rapoport <rppt@linux.ibm.com> Cc: Nadav Amit <namit@vmware.com> Cc: Oded Gabbay <oded.gabbay@gmail.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Pedro Demarchi Gomes <pedrodemargomes@gmail.com> Cc: Peter Xu <peterx@redhat.com> Cc: Rik van Riel <riel@surriel.com> Cc: Roman Gushchin <guro@fb.com> Cc: Shakeel Butt <shakeelb@google.com> Cc: Yang Shi <shy828301@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/swapops.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/swapops.h b/include/linux/swapops.h
index 6648b97244e7..e476a8fed537 100644
--- a/include/linux/swapops.h
+++ b/include/linux/swapops.h
@@ -299,7 +299,7 @@ static inline bool is_pfn_swap_entry(swp_entry_t entry)
struct page_vma_mapped_walk;
#ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION
-extern void set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw,
+extern int set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw,
struct page *page);
extern void remove_migration_pmd(struct page_vma_mapped_walk *pvmw,
@@ -332,7 +332,7 @@ static inline int is_pmd_migration_entry(pmd_t pmd)
return !pmd_present(pmd) && is_migration_entry(pmd_to_swp_entry(pmd));
}
#else
-static inline void set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw,
+static inline int set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw,
struct page *page)
{
BUILD_BUG();
KSzϟ"zG{_i(MX voz(ue4oq<|2WxP[M|k6nsQaޕՋe+!g-a qr*7fHJ2S`LMrwuϬ̷:o*4gST;[9 ^e{%HZ $K {* =HVzX{ue9JLΧf=UuG`7yҘCm߽6p29/2+KV¯ c\RUSlY_{v"SV܊ckXvcaRDxrs N;Un_j0 'c`ʮ9+Oe_1y!XqR%2U̦軁$kWq$!hƲv!aqq0tEnQ%n̋Y61J<ϣ":Y!L82"g#-}V^lTg.a}!Ӳsr:g1E}|)wxhe сV"ysN_gzPYy eM2X+䑇:7Zob(X=؁=OLTX({f4P=B"a9Oz/mli-G;Qad׿.4[![w<ıъgˏ  l+fFlvSg>a*XEӖmzDeqY5ℳI/38љzdϩ:?I z&r[<|3Gki2jח<IMʺe沊+ܘ%ktԳ"FO0&IpD`7k }׃DRBlIs8'E|,'lA~Z[lCp3< &s9n%ˢW%bޭlOzF Qgr?ͻpD8~ uAoUMi(3Od1%§ Ҙiu{.VVoKW~9o! ↵Y63=W6KMRauάu<:fb]ZoiG4r=`y Q_p;Fݘ1i0ft0OOWVs8{IfJ2we)䯤NVːw?_RǒJ9ӧJT^|,b{a T/S7mpcmyQ]VM- +@k_ nzo!'uz<1zx6y,BOg([Vm ^9&S0Y5q4ϫEW5C34cؓuЬN$_lwQ}|oA(Ba_rq{fEay V,az+VbSVqlgKY{l?J56S d.yz=+W߯PN4(])S^y:t˜B[)V%)\dp]>dlVr`kyͯ,2xwgEv9ywx 5Wi۬`yj`5X&\ګ "ݓVz>6ʧ[ On<\VdkIˍ Yw .XȰ.zX]3W!,~SZcUL`ZY!j{@I˹kf V@HRhMrxYu6AUlSzxir+ؒ\|f:&1fhΔCf.0cvY =#*=^ϕ%l$>|%f3uϪS>^,oU[/]DH':J&tę<(\.: 'ˍ0r$$ v}7lccE#Mg2[.-?ޕ Hw(SI{h w -͘C׷؇|cX'o4|Qk"#hۄ*Kzԗ,֚ބX>Xok+zW#ácf^/7.C?yfś?Og\4fwl=!D JϓtD8jRhᖆ$p %h=צ%Nj&!QEv;ha2_ƳZkٗujyo*"n-S @rnIRɣR{2I[_4 53NW[R9"X+6$Z .ky媄$TX'AVΗc\aiIm& J!ǟKj<MoՏO?*% kJpEeb`z Hl:|TyH>2r -Dͷ&؋ cU% q(ۉs<|[yl§ |s`+ˋP,/x<&K Zoi2W,di,b-Swy^rnp/rUd]-9bBTJv_Zy+#h6>|$8K}n(U u"Hr&h2'%iX@V% )Ca`^(.+b 1}YѤ#p6]{|~E4^j\8ƹK/0^(q#ZtKG4,-O:|xXwRfHMrMݑ,ϮbjХ{ϝ3b":p|;yҀ{mӄEQsS$)}\ oE8hshQ?JaOfӬo3S)I`ek%狳s5] Tc y41fF`֨UXb<1t/ aD sL֛VlM&$XXFyp B!V?Gh:z oU$Rl28E"+=0ⰴ;7SCHPm787j?HoHnfGT𗦸×!l` APfLL5 ls-e38R_kp8$s$l6Q]pfK,5 Mj > 1G{`le Vik}f[eyvbaD]Q2}l׺t<QD:OޥF'DgnxLSwݦA];RnXkz^Pk F74 ?eNFH o;\N|2D2TW+>|TkGza'&[ChLz>6sv:vkLA/y 6۪#ȃ Md\ 7+,]0v5uW3(#4ǘFcA,f~q=Muǭ*n0􃥑YpmǮ6[ L9 薵iz9 e 2.9gFv}LSGۤ roNcKz3s6.ظ2He~r2zO0X[mwo0"jgc:>: V420#?8倰 =  Rn3Vk[0\  H}΀i31#HB>e\bNy?&3y9908r|8d-&^skĨ;8-jFmu:nQHy6FYаKxbc$WXB[Z*zg;ͳrKbc >ti棄.%EM/b¼T`ޘY!-M8\Jg8lf|JnYvLa`X@iSbr>W卨>|Ĵٔ\ QV?e++k<#jeT ٻ]u8d®#vXnĬLgT w{b=7B*' 9 XwrF&R(gBRN/Pv+\aUyE)|f%_,]d:Qnk9IR:=+~qtK%cfMg>'wݳ1k}p†-fX0ĸ&Řտ'Rb!7p{am6p,+¹+ҪyVM^bە7Ά t<'s >hZ3~T1~Myk3:gK\ɖ(x_ɯ98󌬬S:<#Q`[_))o--r?ֺT2C&BFl=aR\6Lv! P 4}VzJjBi۳^W&UҚMT~=Sq +^k [hLs wvI63)9e%D[G/9ԩz 3N1 /."l!B,Deիմ\S~5ֶW^^H _Ru"ke?b %׏uM]%%sBӡ4|'5_ѣ@J_6/!!|X9_yroږi3ΔJZozEXB;K~]ػUa;v7xu&`€y^Sٝ"mUKoa/GȕZo#̦5Ba= .ǗVx9=`)D*!i|y *@4kݕ:mT&2`uQY/B2]q8T=XS./B_#H Jm4L8`-CO\ZW5pop j 5NᠩC#V IEc8ZpWAR<,~p6~`c^zG{6Ep:*`+[jUU$V\bA+jno#&oS^ t[C *jN[Poo9@0_҂l_YZeƿayPQN:AϜT:<;Q鶮[vIU5l4*jU[y)ia3L]_t%X؜D۵@KBQEMTW.x+LCpIO{B zAsj(י3+UM8l-AH^x"2n]R s遴=wKW(FtdO+(,=[kY!-HիA5P!!:r:,Vj*vv͏ cMͼEja_} P)=$pl&Aƙj) GyF?R't Y3 X>aBZ ":%&;Yp4Z~Z1S7%%F~NG5fzeD{ԍ0 '<;yO-#. R\YӎL8h2ND#; r*񻺤i@BC _Txj*:+aB,Pd{ sC@W/l9U7+͋έmAJ%VQ0Q\ Y'W]Zd0R;^(&BK󢻑]I ;X:2lM \ ժI"9׋B@g8Fs -`)* gG0%.!$f^^_|q<ʸEjO@9sU$u q?{x!b˵JW!9G@j#I:MZf­ݳYlwɏSCXsG2Km@|Xԣl=dYd\ztw9w~s|Qq8"az+jt59}Դ$v'iCxu}v~/Mx'5+4}MIjVOQCt.Mc_{C7ﵷz13fo0"-]Y{;۶HKlAߍX#ɾ/o϶ǚ쨴f TdoZ{t8Wn ]:25 l>3Q.,$2{h+>V@@>ݪx+x;.鮪QTkrxd܍r;Q 㣟LxÄ;_؎(+ ^ծ VfW/02D5+1/(n4^Fj0&UI5Zf:O% p*G;N[6Hx MF|x7 YxI'ӊ%ZzBwV^ }b|/keHwJZեm@2|`\,[ 䅵}ΎxG?Ў^ ˨j:U Z;(YըFD9iڍ+.`Qv Rzx ^KbD{f=AHЙg!W+Nfuj3ڒ$+iI-J*}+R)' VL`gωFHwEg]Y1ɍ=TGfӉ;}RW,%: '|2q/^AJ7ᙅb-$ pjު%RF65iRv Mnnw4*J!)kis:kDo{ȋ;O~8,Nݙ..ZGF([Pk{( كlG3 =t'@&0;^ ,ߞ>v3W! {A12bn2x*q:6-Z|8Iz2 GFdHVNekI2Lj.Y앖\!1R(#pMiˋ8 vi!if﹟0G//_:m5]Zۃ|?ʃalÃϭxk^F B~uihҿ\ڶ_xF}|lsLFkuKM?=6ڤGx!0נּy9hv׶X'8[,z|Y98"Ό#ՓWW/`h}Eܨ&Wډ2emמTn,/)d<7h_ }}^;ᅀF69p t_^. k2mq8Cy[ Bx?E|BdeuH&=>Ē&Ԧk?N\ g.XP*6|â7&D}"OPs_K]xsiNU-d v( D /Pz1>z-h* ^YUzfOp< 6O^Yf@,[%Uŗ1mKT+(yGZZwgW|,6miǓ0$86ldo|u:(aDGq;+z+dS+A>5Y)C,n}Q7gبF!U i!oG2,p9IXhB ]Sj8uֺ2 뮵Ps"w{z~TBzt< !birjiUpZ9sUPuOCp@ Лf xc٦'7o)XBt1'*Z,I I"I 9+Kˆ]O*gA2УѰ5Vj-ojLTQ2Qeqm]S K,#0i<+uc5I3X{JL@xmZHdYϥ^IjQ@'ߍoTw3wB /4l8 횛==xQ~sVQD9BQz$Q;1{Iw<{VIGE܎$6<`;}~onlGO+(yj>qgMlFnvC:rf< CN u7OĢo|N䈔;> ~.TA@67f W(~/;/> /L-^Y8h.5vF/Rt VsT)պ/sߑVPZSfՇa`K5y_qpHd_^q pn{)-έy&F9 oțK|g$@ _"! 7O:tWe<XHq\ =[|s q!*+{-֑l ڹ,V Q( Ëb\-_H`~^QA]K;]7('*mUGgCCl$K7&[ ٻwJ]Nʏ :XV64UgTHO@|{q[hnqCM:j BG%jԹI/% &iq_EIc ^Mhd7/F(f"Dͥ/kopMb` oI9[{i0'oZ,SE *(>ԵkLG=@9[,*I556vv9ȑm6+<3>boh,P!YIr֖{ZZ^Vrʖ!C+@6Ic~ ks/gi>gQx5j ћQ"Ce>Dxl)`k%nHBOgwo ʙaǢ<>͓M%UWMTR;SsR'`OuG<nH ։ւ5SEfƓIM`I `*P?$df[XHzjC.;q| t694o՗j 9 3>@` e׊r`xÐp琉pJ,(~p6%MN*'7:<_D2'5 Lz»@/aj"t&N1,e?[L.]OĒ@JmDGxT/Tv* 6% =P{c:Y&.Es zn,T'Bȶy^J֥<5B %g0D= 3;_l5DeԈ10*|: Q"I6E:2 0ԛ q'89RNS;fdxry_ `!V5:yc|QMaf{{(\&YZlZS[AG=\WέpaQF%%[l323VjkcV8[ ONdg9ʶRmm\dM`j?>1,6j$YlX;}nHaԦP@}tS.a>^"WiF$hE&|vEY&Eyoh,&Ʉ+%;z(e\oH-a^Fy%RV(*c2IC5"m^3k|Vd]z9ࣾ~Z4UnH#6TL*?qCQUTJTR_ې^?"wi~-¢bxؙ;[ږM`pHtc5ݎJwl|5vPc~ %Wc0G ĺZ%LhL  ,󍔪nʂcE_Ԡ^mg'❷]y\{dӴ[+xsi g3g7¡}>s0O12xQ[;.nJ2 AU2 `-nZV ,] ͤ؛E*Lshe -kz\iP`>|ӧ=3D04WC=I&֞4Wo=@$ dsM8hr4cܕs0Hux8,-13i%Ҷl2/ړ:ng7/ihK a饬H`q Z&'1UGZgTk5r0֩.L6e%|JXZ#B  |oE_YVꕜ aq QŖ}G41\ӯuc*wsK4oSnKvo_q= 0zLGkS<O}Q>8DT'JUV=4UPuPI1h5YBmfS镪8D&*-q̮ڨ %"阉B+oyGA~l"-Qdl8EG;U^Ik.Eu6lS*%ẀfbL['z}BP96ɽ4ơ"E " jo{[!Jˊ$A5$W]7`٩NqU5jFuר-P݃4u՝ ~0AQ֘CZOgHeqGs2XVucL ړhek㨛 }gˎRZHrG@-g.g\>?G6_L R6Q E=p3.zM?at] jFtKx#my.'z 2 v݃>fID%/2<+EFMN c('Vؓ]Bda6i4-*%jZ/BRs0ĵ+{fnҧM@Z4F-H0xlx!}WN9N6CѬ=è!u{̺L0TݾGS]( @O$i dT5AԪm؁^\8{s[JNփG+t%ɂu'΀I#uQJM E^.M8>w)r}'$% y_ =N:'v*U洪ʸRz`KF}5nWMxCըi:ceu Ah.hmk|~lacK>`t>pdWWg_/dC_3O=kKV]"f-|ۣv8/4SetqY XDt>!5IouЏd+RJG: h&x΢謬옠G#&+qdlbf%#ct=EsM[&E)f!jZ^뒺Q;]҅h])Ǝ#:36@s3Iʚx3,ObJ|4օsw,Ȕ/fj۵lG(rYߤ<6 I*W5o0"/"dpͅh+ DAIIPxMf_ava]>fORb`B9{"Fn++xtyy 9߂zMRtR9ҷsS$UvM:"~F6HHTuwDH#Q$J6{jVM;CPUQ]s.L0=\%5L@ {W+Z#p% =YT+ardޕ[No)4CEͱdhH~Z1'ZVj~.cRd8M`Os xGlIأ!J,`1$k-n}ٷ@joډQfTƶpmE"bv#';_[^Yyg2팞tsUѿwB4%@APc0"%[e&펫lVF>N UeԡAKw[(u5 έnWlk;: Zqk㭼_Ԓ ) L98o|_6ճ"oI}N! fx V`h@@D}`/^z%L|(H"w㲙f+rDLtRłƄ漮t+AeCEVbM9ʲY,1keUPc.ql|STTZU}t.8aCvt$ܻv|2}| 2-z]Uyܯ*U2u+V oM$EzBG4B KA8 n]3s\ߖ; 'TJ [6xgBIC1e ;)ÆbQ25cυ4Lz$~ysɲ6—nw# ZP2)eAi*x [BZww VZk`K>Jݮӈm05i&H5:<.Jb6 _Vi&G`_{ՓL]s7 wIjvv|p$e>o/KqImRϘ7om ^S-jrxbVjZӛ߉4dW~`pNd1rO 1gw0?IQ.\jފmu0@8\]g0ÝMv-()Gӊj:)O§%?BZX9ФLV+\˜חqb| ~TؑPue|YpE?=P*)e~pY@BmC3e4f>2c]kkcq#MMP"iڳ;V:$]A6ĥ9vBUu.3 k_]1}r2bj qiAӏMfPN֙9'Kw"?e /,myjoN5{sy>kqb \8 IEW36h .n@ĞiVw㣢 ihU7RC-%m{v}]{3\wj:c h7'Cխq}9)^ FS۪VWR FMvn<|0{;7{L|Ek9V1BFJHGD"6-{Q*|K*e}i($.p򿈺-7cU]^)Kחvn{w2klSZE5}ґul)'lY2O)re[U k($#`śF\t흚L IA/Z[{m2$˪mĜQBF]Qg6B[֠ TNV=مMDea{"2S񗔝 yier1Cle7܌`= O9JŊmE1^YoUhl6iYz^Ab Aӯuo-c5 Iy*w *йƅ+gX띧ZP0r\u?n͇%/jZ8G9p|UqFz>Yr[v}M MbO< a>nr̨AҰCw@{:ANqv4xfc9ur܋Mλ/ODStHvr1'ibfDrHBE?,)l}~7YaGuGfItOS  +"5šཱུ bK IeUTTʭV^WF1`}`0n8BĖ&}394bkqd!]P[,͛>6V©15`47d8^`\x 4\%?{Ou_kO*&zU 4NT8 ר@2V5p;Gɰ; syTa#RFa]իRFA-} 8 Gpt[#3I@ (7嫋 8PsRM2_)$V4|0ZGaZj͔oXi {X1K-$qڨs@ݒ9KUC+$gA<$nP'4D PaWS&&[L֒ZN*OǠr.Zekg~.L)C+9WW2jP'pb^1ND$FHA@ԟM] !$#ϒw@}Li#IS@mGڵN vI)̲8 #D ܌ Ig 2gTOQִ4vP/UZ x ]m,xQlyQ?u[8s;V"sZV8%B: =(OZ@hoi\r:L ٞY;axdD/\jv-= l JH+(wFpY$]Wz6/mR?xF-$Ǒz\ _nL140UֿGȪEWx:Vk sj׹k  2Flh j5-$C3dM)pDKNz,d FbE*O,q O #W6bGG3VWHWm@kInsRjo UP<(\p /gI=\?}*Qi`1Ș^~d36|tR2g]ea%k3ic>;!t`Ƒ\cs:/VF*6[y>b@êGO1זwqfuLd=QҢ)4[uT <6EWk7U#U4MƊm2?haKOl+ &mSC. {Z2D:Fo|>8+e~ј簰kLvTvX?Fk#ڜWO?Met!]H*3iIar#tI¤"3fRM?Oa-Ly+eR&|[jo#;[9,؆;[+sm{vhqI M%Ȫأd| "{a7| XǀOK 'p fJO>AĈ:/ћ5Β~X9&e\A@; !&}۔&v+-# $#3s-=X—-+cRBѧfPՙmIn5}ɭ9XUBhscPI#ꆊ?kp8Bw^dahs;6N,˚V<@JW: 3ĀgNoNsGWss}^AW]֘{THIs^֚9+hJKxGi;YGWƎTM>LiMHTD P>9IiAu9Mt&8 ' vc(GE#K3[.|KQ0X3w6J@8 w&?"sL1Zb6 Iʒ6~8GԌ')N&cB@漧u0ޫ+eMhYjxV,1SU‘PWrCd{\b[j__KZ<տ_!J*fEέGDHU yLf-m3OӫզO'YXtVZAjE2'K޼F+>6ZO(-v)=o" 3KzR>ZXXqN:OtzszA p33("@~ C>ݤ5Ue4}F5ז1bmָIadA38"}b - EpZڭf,8}\ 'ȹV GV+2 · [sen0'd CoOmAGJ +C.mW2 Ӥ5q>Y̹K@:E]]ey] a~v@iF7J($7_T3]LK9v%V~s,Gτ_[_#@JbMX{L].KF۴xݪՇMլnT~r²0Hf. 'qOO. j;jon۶iZ]|&0ڒ4#…CچJ85 RzmۮIe:)gY}&F)1T[oe,4ԬHjV,gX]<b/Ȑ1c sTR|7_l/GCvR %쬤Qp倻ݻJ3&ILqFAU[?j [j4ה pF?Ɋ+.x9MXEVyfpKΤNy|ڑ [p J4)Df$psP6:^z}m!p0x#1NCnji}av^bʉKbo=?U/Ew<$H50 >C RBI#^٠hWF.Ƀja\`BrOZ5;.ɉP 4Np%y3Rd/]9-8q;45J8QkH7V|qo!?D3%J@0 2s,-ۍ.@'uA4Q68^PkG CJB>62e5rr2YK^&BtKRr -e#Lw4$7Xq-y dQ1pΎnOn2eka{\ Iht8C5Z`EFFK-b $\p +^W=Gj]KWժn.'^^_]^yɵkFA!? )8=T*-d?Hxc 1Vfs %#KCaHN"=z9: \p,9^h ;dNx^ :MkՔhSMU3*y=ބ[HPYEN&Ι@ 2.ԖRO(꯶'/-V0%vx9헧WdxU]?H8qەB$o٬JՉ67NK~؟)a-{Fm,T .j={釔A핉5'3NM8Ad=Bq@c˃kҨ- YAw/Ig_~6na֭:vJzP$tf}Qb_zN{ˍn5-A:#hf1 UNر_Au5x;=7n,;M3·V1gJuJb89mz=I4;VzL '&x#]~ݭi4kia$E#jEH&$ܤ;ȗ6++`C(#a@Od+<&A8e6no)IFa0 \c 0 eڶS:Ll +=ِ33>q*#dUJ4@7ҩAT"cPII. gYyě[3Gy0|6}؃ TYDI9s}#lS2:CkmN; )a3~pqz/[56P3lΜsu~:T/oȘX|OF/sI&áVR$`z+公'_2y}TZ[Ψ3; Sr/CI.XX{=nX{ď{Z\;d{Ӱz4ҬE)=eJe_:ycE!U7FM$U^|G sI)mW#(j;'b\//޼;guI:Qrs=µE҇;~a$!8\F)Xd=$`N EI#rA,U5#ٗπ(_S4+hM3-n bNlcIE%@9gw^s\A(˪Zni!z'$x% o֦ dJC0AȀ3aQM/WQ\\\I&~JIxz,#3ԎR3tZWU[!CFUEŤ(IKHC黭\[LɎ\\ qX^5]w:+MK)Ϟ%W$Ȟa78k_Ӫ4Ru?[. _j/eEh!d+ӢƢփ 2E y; bey:!v- (;JƖ}%|9%kgNCr?p;1c'tjQ$0>\X猍W~U%[^Q:4X>\dWiU(j #a6> ̺)L 'I*#{*$3&*q$%#հ qUyH_سʏP#ZFa@~9$Y+b  cZ HzkV:bⓨDn*RYF.At TB+S9;3RɜR .]m8*%`ԑ:_Π&a$zpHW3ឆf/æm !H.R<@~4h@]~|ӿz!Tz߼| '>ժuZXMX5$%\Zˁ#RlVsfaLHN`΍N NVT4g?9L祗c'- źxQ1We> FKѐ;csm\qSR+l~s]r{ϷI;C`5ruj+Kgi&Zؐ;:XpPV~ع>MdCeDEHTCyEM`'XB3GQ-4Wg|¿wdyMmei*Vi&PU64i=[m,l )-&2Vˬ1zz!^3vK5gq>ܐhTN]Z@~K'8_׮^V6@@uń@#LWkzlCFx2;$遂7՛;O雹saYns0\.%SPa7^KU|zKzش=-r7-sEB7`| GG(;9 CKsoHKҴ٬7-).Ygjz yCKE)"̘LWhr|CCw^Ac%BJEDLg "87݆48{ZxiYЏlM$ 'XM{#D6lGo֨`8z<ѹevR( [Oz'Z1)C?E8(zrE iY7 s+G9^@Ru+UvAcoߢLf@̲U@nCذ\WS7E <Y$oجU[Օ:,2$X,~% pW*Wv~JOZNzSZoj4H{2Hୱ :z;VicXٽzC5+gTy w+LUKdkıw>\*c޹1g/°^eA(ޅކW;ߍ#^2 ;z5Z\^}Qt4X42toK L:bxݬJZ j?;1I%3>CJ\ϻ!5:Ih3a#`_B[Cշழ\nK<N/b@ZLs 78Lt|d})M╕$Cj[H3gl{` -NYHӉڍփZZYcN/Z&>$ck_ ZeiūO*5$FSzu~ 'b!),wAs XʰJ즷wtgY y [uqۣYSuZ QxTQ8|6a0-H 4kk F5F/AdN+)=&l+˿88c޺ESjvʬ!Dɼr ӆ1d1bh?oVd5ؙU՘~ 5TNںA2NH,Jlō:âQj%H^Pbi}ilVF Yv6؁vZӺbH_FTlw=PfӺh&^7"D[(/O˗}Zmj 瞔Ӽ+WͶYɹQ)V@.&X+71g.0|i݌s{W[C25'k}rYgyU ϐr'g u0l}Y[<=='gA0*l%2{P^@bz$<6N#Xtd)F@RXmS!Dʩ~qnoP̏?ICVĠ3TmMr/?հH^^%U-{R&{s)yRLe߅{jMLg(q~IiC郮oKr4Mco4rG_Wj eݩ UUH充Pn&rx] SVD=qZ@5MUS;FMڢ+...*p"5~'H+uhH*4褚ΔKJlp)0T.H ZVDZg'!ӝnK/;C`I˴#Mw#mo9Խq@`&9  j;Qi #%n0,D)\usx K.;Rv,M>v>FY]dE6Rzx?_F9UJ4`\gBZПd9`LQϷG{w.gCk>Yc`HW|Gd/BSQ$ԏI=A-'e j&]ZZZ Gkj+78J0lHXVT\)X/tItը!dnu tĴj89~fjiRT .-;*wԌDz]o7iUuPZPQijR&O '^NJi$mYU1 AQ  `EC5m5Ȟ+.[emT~Vb"-O_)35Yќ>wB8*αcq3}KJile@V Y#o0?vsS|+v9#F'Fڡ?47^N (肩t 0CWh#zò;ɂ٣\g|J]BQ:~6vh\FͳH^mvpid`-v䟬|fH{jd0eS~Y!c3Ov-ۊ̛JY#fV1.;JQQ[i:uSu>H^,a%%Mb^)Oΐ$sKFhRQq}: Î ik鏔4}5hPk(\ $e]lXвgxwJ#΃s;Х?%ϑgr%ӞЈs D,aZ'P^@kƈUJr 0#?qh i2M!U`OrJ8'ι\#)n֥@ Zz5jM%!9 R 1#kRvofm_yIE~^m4-A%3Un9U8!K)0 )2thr${H]zEmu⳰!.Nc~;TjZ8?FdKSK!KҖڢz y굢wZEk d }1|s.'"m{$#›xv꭮$?DYI `؀RBCɹҮd'NzuXsb`Ni_KZjڷ7J*4~_Icе&Vá.rXb6sMCf]|KQ1^'k7l֚p}2`͌ g6/sQ6AN7_l7 3$>FO\z|~v~)=PΜ] 4͚h5K˗EB6e/{0[i>gntĉ= B'~ _u`BԵ;?HkZؠdNX\.O:b"VFJ(XC["heqif ,qg$alĔ"6̈́{bΆ${ АU IOuە{HS6I%EΦbeWl7_|1KdUC1e̘?f%=3z9sAm˛9@37b&VB>QĠWq]ǂG}f̀$(:4#s˛=!+ޅym$ezzEaEgv* $? LV{{&Ut fE{8uF|Mo{띫]DHL mA)A\,pdrX7$c.e.Dks[zLd{ }E/%Vi8SPdӒ51Pйk.\Q+&۽s6}q 2 8M6*&ޛ_LDFBNdh伻,e&ML-nR p"4τ{+GP1C 3uR}ZV XZLYK EmYYE—h@5t\=C^H^ Y8 f񌤌5$*MXe-ꛛfYjr\~Xo-X  G;]n<viDcUė  <ƥJ[R%sNjTt.^j(b+@].7ͅF4-5qt ybuX4#"Uzv>T{@dJQ{\STwmٚꀶp%ocvRXEvG]ʉ35, U-N& z`%ɹi"UU5m}isX>Ivp9AoBB(YbC\vCO V!>c7c~mls5H3G hbgu^sFzy`:q)|nEk6B x LF[ i?)x8e##c)2"0XM ]YJ}ȣǏvXGkfWo3'^e8̼̋WLf!M~vkC- ?yg23d=e^2,u`؅N΁|adxsD qD5xJ3,F#$vAFURC)LdmHZӍ\_`þl>X{P~EV1 rRsEZ=O7@ZK <|:q-ZAV}{)Z:ooώĮ1:[Ճt{8uϝ(juT5lNQ 7@pBJuM5;WRMJHQ :"K1Sl>Pihw-W֝+4dOﵿUuEnsTNV[;CL5 ?͋ȧnR$9}TAͶ. V; p=?z2;̈́fxBkwnH3_̬A9phGљ܉[ڨiЯpb8:[gaK5PGĸK574N&,4g{0 HUtPWS(62u8,g,FXÀ괫A&I+he̝Qo=B$w:ѽddCl可$;M6ny3ģ ]kwc=Z--0 }xTdH+9&K-7np%҆ZgP #>0.Pˎ4| ;W/~ - d- j,.N4/DeMǪ@II6xGh|h(S|#2<`ɼN^t~PḾO}WAum3Rk^aX{K GߣUY2@&/! oLscicp~Y >S`:\z^v]0_wUnv=ߠ,k~ J'6?I/q4:-@>aZĮc\3w!+Rj[A%fVM)R709i Vc07{ڸ1tIaC=UuÜzS[0E`f/:H8N^?H:I?F}BXc~&Lf VT|@Qj\O]bz>TPՇ4,(wH-32 h:EU<3 e.=c2ITY̮>|d߆\p36 4 TA"baEɩ2jCާg dHKLdCqw5w[Ffϥ؟n[ɔtjfU=(xsJ_6,7j)#x%2G_w;s*J{IOYx)–@fcE pG,aMk G߫ݬTG鮝 ^; lv!#vHr"*t̕/[nWW99Txo-3]-mV?sFi$$4T N/n-.yeA sRk//تORF4?,Bnw)=s|"f~ظUoݮ5!mvjYsT+\p OY BAc8QƯ<₎@IE{bZEwX$@rjBx{MQkV +ujSP-$E9GweIlv2띗!% 7HȞpJ BZ Ys=lc7[Μwyt-?^86~tL{YJFY^a[=ۮi{wJR[Μ4Pdv#vŬz $tizDZ肞&qt-2)WL`8 /rk|9 ]B+6 Vw$e_Z~+D?$:EMNӅV!k勳2zDB{- ~oK [er;˾k(C*}zhudZaVV:bJ3uWX}lyN " \{`031P`Dev7+Yq*fakAuN 0BWjU{U0%Mv;`FꃛS{rhG୞shjns{++s/ҹĎn-EV MTʉC!B;?gY'k.C{z{;S'>5Kp,=S9ALG#\%GOnb&;R4G; ׊H½%"ስ=2ɸ4~^Ny)~#xUԩYᶴiP{sd0e77*.dΐ;Jqq$͌Of AQ"^ z/^ 8)G$7!:%rXNO9Hއ2,ϡ{;G^l}VT{Q~Xly;÷8ɞe÷#chj(RK:c_cOq.ZVWLZZzP k/X˴k@SPa1K0&T<,KJEr\pfh6$~/B\pe.)_uWLAjzY+]mN Wu*.`-p%\^gd ~goY%ih?$Qin]6Bdq"[FO>#&[\m@@Ky ="Tw%U:"(:{{1e/tq8pkڅB Z$LjBBo/ ?Ydjh೴8?pn?^TQڐxH楙Fau4:N!Y}g(%zՠVk M[H>YYN>~c&>?N+gL\G)z{P:HHsޝ5h l+ YG54,E'1:\ ̗'̡,$BG[LBH&fȘKk>h=!J*uIjkyR!*{ga/Q{M*lzQ $Ŭޭ%7j5|/h#ExdF %Q `>$&H9MvR*nA:^Q)Ns9UܧFӚ_n#)cd:Q|],zcdALejh[(CقV{+S~a`6IυC?!l9oK#7u'PQfG+D)s"4GXw"` _2͖)G`9(k91ŃPLPOGW|MƸSjdK%C5j\3(6Ȉdco%8WyItR%}e6?_ #B8Jxm]5(3RQ$R{V6B߆rR`|!&VN/jD|5E]JV+ß˯*56-#AEvd)rvGNy 6Ay 4kLJ@UItUbcT#dX%d hƂIK:xm.}]+oUUnkIwhmuvm( \m#z.̈́e2dpCصh_)]=Ѿ<21rv%=SW cW Z7i]k+!`+6PoȮ5]ӫq Hr^\JH?%fɪV@~jjl52TgkUNDmXw\svKQ}y~l:L~?D|w]HRO,WSZl;6%5FwiN)0I3jAm҂zKrː=4_Jw}5,@Z:K)(v%rq@v3)4K JA¤RR玔T"ɎAdԧbahV \RVIq?ȵAebn(YprcU<ͽxCK^M4 Ei,sw. lM$?DF@ f?_%/Ua4z#/j=O/ϐǏHj'':0g_o2Bg<l\7T`umJ9py%Py= S&USOp$́@4@g4bYBa;(ӌ6u?H=K1@h5%&bOBXy h[HTjwm[%h+%cƌi>zVP0;PGmjF?+PYFL̗9}[ڜYΞ#Hy+eyII͓nHXR._#i*v-rynѲ`‰({P1}>?8h+_欯+:Ͱ<\iSWC WRğ$2}~˫2mQ+EӤk6tx#m:3 'Q3ˍ4&wY/lh bAlvd8Z&l!9U8q"kʁHfPt&JNޏc+C䭤= {?jMh`lhLlpQֻjN D?M2*55+.y2ILOi:r6b]NQϺ_ϙYbw*8-H2=8+>S>E`?×):(e ?;Ft`qc ߤIARxjv_E?{5+cwwx2~}4a”4[#5"^kcrBu:E: 5$^Xk$/jGz%/קӾxˈ.SbQ juz?%f ;fs0LJ*/\|8{$3HUQ4-y IA@OAݻ:8D6ρ3%_U֦VllWȸ$b ^U5|ўaO I.:9wR?W! &f{B{ƖF?;HtԦGNhܙ%QlA4\/2yyPUI_#HoKẇ"֑ÝdinvƊ%ָmƀddOIV[Uƣ.D Kt^¤;AmZe#3Gq.H 3R@NBM{{9"rwt"ٹ}_~w"L+[\P|O )5!d]퍊bABI=K>9Jװ;^H_PoOףEhC+.X$`2Ֆ4Iٚ;CuJؤȭd >PrvvRxՋ PlA>4QeĤPB?PVKMCoӓӓT]]ru=uPUpB m3\Z`pU%#ȟpyen$Po¯QtB NtXfpv╽;/%@vRg6(0BrHصe(;[&Y_J:SE I*ZCڡ1=":LZNoԵOƀ6"g[XQƓ>$Y;K%FHMj ٴ*.Vʎ&)-5yb`3zx3rMKҍz>N*:%@/ʶX@(T(x g2ʧEd#s(f(5sdV`x;L c;mfՍN1h I9O@h6qSUIf֚.PBvѳ*2WWp}o1Aup?0iu>N# '00[#xХmCf$ LPjbs㻼P\r9 Ի`N DhOj."lF 5-eq|nu"{9xܛs̞ݼzA CwKHd<)2ڤ% B4EBK~ 63b&zt S^8%ѲĔm#F1}5^MM.j\HS0[##Mu^ƱVGdn.jk'n)*܉l6DHs; N)Yb[~x4Â=]/V+E|0|AI%uYu7fÇ&bu쭾Z_˞5~O4Nc35\.층Uzfw1z>Z@?byQVg27ݪW4^0,X!tZ;sFZˀ{CwRfĥ;phklMޱl7&mBL,ΟkSh1FB oѿzd8lWO]ڜӓ-U!)}λW}j4-MZqx3p\}_GH6tSSދ:d4[Vf ku{C`2~#YƑOСd(5d-ʗS5~xZ;•إXihN4]t;)[`98k;,}Fbۣf&{7|w[sdWbf7j3"г_PRIFl6+$STs¨0?=o!.Ag' "\*jV2fI*tm3)$Y_Qڀp=*d_M|{JtVuF5CH,PRb~ץqNyX-j)A8ş7[eLw64&Lݧ'L?da@rk?Ji=75=u؟6Z3Ww"QA.0h*<.LAIN'8w&]!$\UV"I絸֡Cw unU/Uz!s AڻPFZg=22mu~s6=$ \,azF]Xvvonh2T ,-jwv\P0S:@⼠:N%nxB\κ|syӗY%',Eagnw,gND*wkX/kT Hgy巣q^#Y ^fzr:y-=c!؁BZGexƕV2UR:QfTUhT2=VNp%ßF3^`bS_7ol?@c + iuoh?TJ"_ С|MVn(0|EH7 M f dq*a-G2Ⱦ'fpBKzҳ NL IJּk? jT t3/gfƑ%yWvzd^^eqY>Z)6Ҵt1Ij+N꧀;ىbZzxnNʔ"dab`UUi u ( fEp#~wygۡIEޙL!RLNu$D5ZjWaF|Z9le"owKL FGP=赡'&E_X:d 8;jV:͍l]"A׽^Q=lM'׬#X4 f@M٦ !6*AG򛵕8KCˏaНD׼/NM_ t}g-{JUH]Yв( |(tsr?;V6iTiP/=^f׷JY*՜V#ߟ tgoN&g=Fs_ ,_n,/_"v(B:qKu\z^ScdA~CtqqA)DXVHgIcz,VjyQRij %<=NP,c1CQ$ QKD*EO"zCoVKE[!*NHBr`G]og+V+wP;(C1r3LUWZ@˭ۢeP#oJ5M3gkW }-Iyi=F%nfq=9{y8t~ 9O\0{tHٙIdgA\sËPˠ_ZOA1rtLq-E{ /F~*)Bgɋ;GzxW\~{Dv궗Ųnvh[F춪N˲:-:Z@]vҟy ֬7 _5~# "QH3Vo5h_7?C̙jO(:txuuV*E^}9ki.y53Ҭ.??3~@[֓o7j_ ERɊ )jR{!EKXS >H;B;^$c:/K),&5С YD8eSpg.D_fڏLf{jJVK',|9TE]ºKʃ8W$4dFYtݗudEvv v%E4}魵W ~ޗh% gb`0}i?A<&?\{:M֝"Id4*M|U[v\aBFCr2A/ЕMX俸v|T[[,EyQ+b/CeH1Y`[wċ$;?1N3#[9l,Nmv|E2P)j }p` fP$oW[#|%@?Hv^YaVjaT~fU|eފ(I]moN44]h2sw5჏ t}XhX#k ."h ߏϗ~7ӧJo֞t}gH> ;0$dn/xg`ގ>)F x&Ť@r1 q瘩]mC&iD!-/'57E+ŗ~'?~C-%E0: "HqK0YszUl-LH' ,30ey^~9J_ ӝSɘNT%}Y)t>"c>i}.2m_~L94owJHb<ҋW9`13G2Ul2'ic2 "¹>3#ct {g) }|] to2NK _跰Y0( ",ȬV8@tF>Ag<9C@ߣ;Pګh -ŵ=aJWH?HwТ%s:t?Kߗ/O0yU1Jbtiv e?%5L;̖iE/XXϕȉ̪ȗF0B20?oEXV8VjkȇAtҠrhtMbz۱b?_f6h`,g+03Z}B%miǎ#Ųx;O>Vx/Y8H9Q r.>Рɜ(PKɜ8e(;ys^!C֤TTotʝ_F}IXPgz5xqk斤ogM_,`V[y%9DA3kjY((W+OG%dG|( cS+  хߙO*OEpirikV$k:Xt3Q]ҫLm;C.O(KoSy-ITE~??_3~(Ӯ5٨ ϥЃZoU *}*U[ϗadg{kn`YMϋ FDd-V OZe+Efj/Z, 擄-R&XD'utH[^#QF?EVоbۯ ꫅/˯Jlt6XE3>V&Jt{ E";]|6&.'6JI(<آ[3&<_$> Ϸ߶|2,:3~hjjb~cI30+CͰ5dyE'; ҋ  q6I.:vdSǛkO zBVm{70 ,y6eg> 5, gC◵ 4>8_W ?Mqp3>=kjz8_Ov+SߕuDlQ?*ZS T ݭ젔 ,sR@C)a:,y,|fjbT41kNr xră;H=G_7Z?ݛHNعD= sJ!f6t P]AZZ7ُni+kga/S Pz(]H> rßq"׏޹{aQo|v>o?g<$|ƄN;W͕5^5g<pNs-S<ʃc.2*omUEHVJ^d%/)բ''}?ƒ?_JϿ3.=Tl#ڟ͐xA EUk>/3 {mwbh]Js0"~aMPsY?? `-@g6l:gDU@h9YtV_Ծ5`Iߎ8Ͻ 4_|>Qҗ4KLdS/r"㝓FVę^[!܂$Bd!' Kؼ@J̍FkT)UbfpIz5,V<, A}0aF>=? Q~7o0=rȅvDoLU*QI>=a@+ugapb, 3D*jg6:V%(_+w^TG3'N_j!Qrxƅ3zo\=d0g@ZA<ځH"!jI4.X$lJeѹ9z O[-t?{q|q9&pts֮ϸ9ON~7J0?ӻ/~Nϸ8şnTsn~+1wË*fMWae(Z'0 {%Y`Y D26IehcnֱRlF 2ZLkϐG0?-hy#随]s7&`2*hFw@|YM2سh=)sUF9Ѻ;T͘ChCaսp7O+!צ5cU 29#/8Q\k饠kd=5աn hj{y2̦LgO:0nHŦ`u@g "/g}/شfUf1K- e-__b?hlWlL/lif?L54Qdo9hyv$j!'oA7"qSBNmS9`{20d|D!} #HtO?(VqM1AW,I~ W?5jOzw_ϡKf?4hʼh9@yDUSIwΝNR۞ {p2Vp?{P3;KޜprYbMWe^\5(ڑ`:eLElg9aY,ZnGO-HrƂ+y ^ZFذ9:f+Y>„At >fꙌOd;7l:qsjɻ׾$UZZ'&a "@RY/P>@aJ[~ZaX`<z>X_ $!rʕ$r^< m18ȧq/B&ؐʙx2G1T/Qt6bfUſI$#՗zCGG[ tϷ~7w#'H9ho,b U'}O#%<ڀfVB&΢JQS*:[B1HXPZs:#tEy&"}j}V~.d4< )H@'"*K^BN>ӳFLYŃ+Z3QP*'' !' ]#؎=Jj|azIʖ9?ԾFR$uZC`d2PifEJi,et̊e1zs9xqxҿx5fewiGu?.vn[O?JwW#2ueYwgY\Az~1 Zǿm,L%W2 #GHx $CC:%$'v& "PS|mɪ3\_K(|co3~~Tfh ŵ(ާhw_o6Z>ퟋP{?i"(()w0|:]/y?[egŮY"m0L#^^[^l'XF64G'Zi,3B?\٨'s@ApNCV4~&3zZ!I|l !q#X_zg<+a09x. )\aҘ K5 .jVkH4*҅ƌZq6?4tI 0V+3dPj^/=2 A]mR" j?A:NҡUnY{C `_n@eʚi4l_:%[:51RI{P[I3UGw$>;V&GN5uOJ'YTs;($OLq*$8#H5ֈdszۄ̗\'KmoM4U *O\} rÂVO3_[ <[I)A(mY?R;Jna}ZPra޴H7ݳVi(7IT8k )} ΐ !պ*dΜ*m^QQ{s