summaryrefslogtreecommitdiff
path: root/kernel/workqueue.c
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2013-04-04 10:05:38 +0800
committerTejun Heo <tj@kernel.org>2013-04-04 07:54:01 -0700
commit5c529597e922c26910fe49b8d5f93aeaca9a2415 (patch)
tree76da2d5ce97f35db5bfb1fef8610a8422713672d /kernel/workqueue.c
parent229641a6f1f09e27a1f12fba38980f33f4c92975 (diff)
downloadlinux-5c529597e922c26910fe49b8d5f93aeaca9a2415.tar.gz
linux-5c529597e922c26910fe49b8d5f93aeaca9a2415.tar.bz2
linux-5c529597e922c26910fe49b8d5f93aeaca9a2415.zip
workqueue: avoid false negative WARN_ON() in destroy_workqueue()
destroy_workqueue() performs several sanity checks before proceeding with destruction of a workqueue. One of the checks verifies that refcnt of each pwq (pool_workqueue) is over 1 as at that point there should be no in-flight work items and the only holder of pwq refs is the workqueue itself. This worked fine as a workqueue used to hold only one reference to its pwqs; however, since 4c16bd327c ("workqueue: implement NUMA affinity for unbound workqueues"), a workqueue may hold multiple references to its default pwq triggering this sanity check spuriously. Fix it by not triggering the pwq->refcnt assertion on default pwqs. An example spurious WARN trigger follows. WARNING: at kernel/workqueue.c:4201 destroy_workqueue+0x6a/0x13e() Hardware name: 4286C12 Modules linked in: sdhci_pci sdhci mmc_core usb_storage i915 drm_kms_helper drm i2c_algo_bit i2c_core video Pid: 361, comm: umount Not tainted 3.9.0-rc5+ #29 Call Trace: [<c04314a7>] warn_slowpath_common+0x7c/0x93 [<c04314e0>] warn_slowpath_null+0x22/0x24 [<c044796a>] destroy_workqueue+0x6a/0x13e [<c056dc01>] ext4_put_super+0x43/0x2c4 [<c04fb7b8>] generic_shutdown_super+0x4b/0xb9 [<c04fb848>] kill_block_super+0x22/0x60 [<c04fb960>] deactivate_locked_super+0x2f/0x56 [<c04fc41b>] deactivate_super+0x2e/0x31 [<c050f1e6>] mntput_no_expire+0x103/0x108 [<c050fdce>] sys_umount+0x2a2/0x2c4 [<c050fe0e>] sys_oldumount+0x1e/0x20 [<c085ba4d>] sysenter_do_call+0x12/0x38 tj: Rewrote description. Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Diffstat (limited to 'kernel/workqueue.c')
-rw-r--r--kernel/workqueue.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index dd2a4c49a39a..c273376ff73e 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -4201,7 +4201,7 @@ void destroy_workqueue(struct workqueue_struct *wq)
}
}
- if (WARN_ON(pwq->refcnt > 1) ||
+ if (WARN_ON((pwq != wq->dfl_pwq) && (pwq->refcnt > 1)) ||
WARN_ON(pwq->nr_active) ||
WARN_ON(!list_empty(&pwq->delayed_works))) {
mutex_unlock(&wq->mutex);
U0mٕU\([+3dٮewy$-W^F^/mЖKQ"x˯uG =1& m6A Gݱf,I  >l-`3dA&2eҘ$,`v- N8'Ks҃G1P0AMD 0\tŒK{4 1jA1M?qHbbY ׇ1yFdzFy.((Pom.$o ?O; &:(LR]l테CVt P$lP~lj&,Qa:SGYdQ3 Uף<DŽhT >.?)cYז wi㢩FeDq ѹN;6}gfN쑫yB { 2|FtӊʢZ1mQ6rM廭]:aJ FeNg7D;d\`>-2z:ʾ4as޺ q/6NN~Bi+pl `stɦqv'[f0uJNdVX!Useoc5RL\ֺvF1WNz+wxF׾~H*oc;ҍeګ9>%+֨q-/Uz&]jSm'*vd'S%[]mǴu׮~[ws^1]\c)u~tWy.qﮡvP(DtLfn&k?=q>.\'_hJkWꛨhJ"v DFC헜{4}QM{rO~o/`;>Gm{tz`5'02jP3ipdZ79!{B3 }zR ? cxTJѳoiǘϭ0e M I w@ag,B |f+庥X|1RL XCvL+W}ǦyNd޺ _W-uh>jyzcɚRgaW4mhzMrsƲ vgaQlƓ\|$+ﭛl XҀB2=v_b;nga_)*Y ˢoW{^':Rv5XlS*(ׂ8dt~ͭq՜7ab>7Wc'zk>]p74kw[^.6Uޙ`r=Orx:O"C1{?mrz//9ַ}L[:5gxXUQtk+>^ǯwß'yۗwH]9G>rO{ (V mV?4Oc nT$1I@Ď˯P4E̵HH<3_$٪^NZl5!=PjyD5C|ncrKÑE L)Ru5Mc DRB|qCsQsB{jκDQ+8d5Rz<sqe.T |^ȧq\rcF*mvb z*b=xȯDF*XՂ1Vb qVH U??jmmUUmvmZZJ)]ErzΓ<<ګm[jmU[mlq[Uբګl5T6@Ǒso% eXm tM.QwN638ů{tFI&#|d+N;||hG|UɑHu3lvQƫmmȫcAa20G6 Ch@tRݛ(rW9';Y3>Qc$sVHe] )3еEIB@9DAS=lׁ_ = + 麪I$IRukC9@iT!N?n'˳LgK̿MF[I‹2vq&zVt]5N$rXB! tc #b`&1DP"3Dp(FP v  BdRD =ˉc{\)?gZ?C>3c`0ۥzמr.%۪C>Gpy=}ViސZmXOݘ҉o݉:ԡd{FB+ $ROZeoݫQ>ijEV##(P}|v\ڣQ$v1<+NTA z;:Lc"'ǫ>v^a=0YqZ"2tyen!ǡ#380 IJoe=޻߷]|0!9gdt nA=.zm%ki/nX݄0Wf(*"ěS[ 忓.x[4mWd0AE h&Gd\}Ehdm۪3]K+#,ҏΦMtYٍPz"J;u-K>`59BBUp$ttf' Eke|޶wΠtfB6MFO\+ sPIA;I^7=2${^G 4Ċ JK 9<>_DØNlʠ 0ђOr{E 0H~OP@Y~|"qYU`R0LGTi;aaR(|r[]ML L ,\x]-IM_ "=E_./Lu]gDoOZ󫫷a qy!B' `LPE33%L oQӘЏ)s@x:fyyZQt,B1!3 "@};#633m1BaSS{t:+|y껑spD>`2&x~M+8* ?6ۭ}=w_GQȒ476X;/!Q׶@G\4 W~eK!&Ќ/fE'e>Ma"[ lVngu6Ut9롘r|4#6&xH P* X`>p0A_eMd-^D~Er)<(A̾ d vZ7au0p5+xb@6nS)na/bpBH$0oW]Ү80ό.^3QGdJTpz+7&GmWԹZ*[^j{=}uAV*|ud IMc-УJJCgF. >AEux(CJ <0-x\Sy=G4 [>l֎}C hPIA ~d  p~a*30P "~t{I*(b=SX~>=NYn_~u7nuyPgRdXZK V}!Ԗ oTGHG>>~aruM|4x@6_b\nXwHa<.mhѹP9/yeߴ((={n9]18nʁMYf A3v!߻GF6߯Iz 7u;[ݓ%`G*jkcaGD͔egmGyP}/ۜN|5,ˁ.@opK=LV_Wz: uxa?ن]Шs?` 3KASvvÆU+LBdS.`a#lq!qgr`G`ꍽ!MF0Hx[ɘ>;x&Nj%SH:Jp=$Z gW,Ly(53{KBCzhb石On @}<ã@W`4߷Ahs)؋3 A[ F zpc:B};KZ4֚$Dl{F,siN6-)|IÕ/F P`CܖL3[kLgY\MЧC2EؓTa{הG˅iM/?1Vciw~4Gsd; >o>HPy _4D.n]yQ~\;[7h,ͫWNFELXs7\,PL;2_W'Ɯ=r=χUy$t0@)ON^K*$U c_,^?+ 9svwʵ_˷Nc۩AYKw?vj퍡fE`1k! ]߿@ӥ3wmi'y$HG\# ܷ_ml6< j'`mPB;:gZN/ipps7e{WgEҽذuh4 X+WxnۣMt^iCZc)rtXrs:OVDRѶgfο[h t! R&u-ۈϼ\tP<-KǠP$947cb&'eK[v3{)l6usuo|Bt+x*X,4Qն}1*?lOV 9l|haU ǠAVM6 ;Igg:m2s p CݰWN{bccc :|)Qϥa߳{pf>-QW}o.NX] Vͩf '>&;j2y Gb橹J}D|mˆ𰟥Fǎ.&p F[sװsx VGj 82!\,'ΰLA3::SZ딺#u,+gr==DtHGD#{, HB`178niJhF"U3 ;%5P͕Ew= HHӄMX럭hҞtYQd%n}]E}դ.dNr$qxv?'av38?&<ѤCՂw@&"= X60G%9ۼH<`0o9& ud#b*Dx'2G|;5s.k|ܝr̰L}<>;te6]Ϻ<1G75.V0:6t Yڐa9laæpFHepÛZ{ )@B?I.i즮|# kr9už]݅0o -d(=}:9[zDxg )WĆ {!|Iu^KH6((@E2vrX]cv8Tg1o0zCZIK~Bm`H@E(Oxj!8YN=OL: 0rgar,lacw8OBwh3dFp>ՠ99>^/yKn^XIEB$W,mJpc8=W<5K}(Yo?E ޫ]3CQ(:^g5N[\skR)N6dv$2rMi5;ɒHVtZ%A|)YI~FbOgaN(4=Kh@DIMWaA:upsȧؿDAɻ6 + m {>]}1/]~{=__pE@349 P"E7h@xb2+?tiA EJ;7LA1z̠<p qdal9hLyGp{&}U_aHD6iC><dF$ hd+Q@$ByG<'4(Z8uPI};\zV 'bK"vfgUȋD؛hg̶W#;*D({?kUI']`"bۓ0=NI=z"Æ"m-߽y )U(($JwЉ/{J7$5x aC ^,䏭B@a2AUE D:uyMS):|w^"g{ݴ*E"e~RѿA\C%nf WxY!;eN #d"NqW$/7ϖ?wSuMi۝}],-.h/އ|=Wwn| lV]m];5<S{ꚾ^$Q e [U"Pz|Iهc /CG%#" S`l Au勾vB:Fуh(=km%drK׀DX1n͸k: s_-A9w`>ْm[xx*4|i(,`%ݿhAjb͸ $uPX)j0lٚ˧S8KMlFE>M^NZکE'VDqa@\Qi3i:Lm87Z€^]94Be|smyxwRY a/%2*󷏛fb%Q#m~a#q%WcqN"1A+PZ4 = q5*$Q,Y1.1^@〵xM )7R\l#6A#Rci.qCo1;Kj /jtW OQ'>A2a CEPkcGC[ ?=PjI;S݅ 혃8d*Zd$_`JA-44Wxzz8UNHgO>.DΤǎ8A}ljIdaЁ|uS%;~'d3=רv% ~djׄd{.vNd`ɤFP,$ m 0N:r,EIfWr4_T t[QqITCkLzo}m0n?[V# <`AT 0~iI p{D܈4?R6T/un6Pm~[Fx\ps7|\@skz-J8>M`u5u;E`zM_47g}yռۂCG8/fpe|: [$8uKӼ_&ccKZ M(:"[ao˿sw] #v2' d U&߅`N㶏[݆rfÍ jBM 萖|7)Bm iREbJ! akB8T  ⹵9!7 .Qo-IZPFۃCӸ/̇7nV1es"7Ng-)U_=i(WihB\6˶>npAbЌ$!Otu$`^ _1!7F;kUX>y5OSFrl\/_6eƪ x$fK I øGQ:-X;385û"97n)~? M`܏bVjZNxK1iqU-fHm CXJxu9jޱMv҉v4qt[ Sŵ[Y4(S _ڸ5k\1vyю0lں,K$ D[;6e^nn-/sG;߅'9/>8Ls̝~= 8_./)48:vmNh!8Ǥdz&c\q}YXuyݢx'HLZC;-d#Ia0èVJ`Q I "Dv$l .UO>"P3NxqC5yXH{rt1T ZO}.-K ;W}Ye.JKˠ(dFO>mߔY8հ(ޫ4z b Vd#P 7%P+Zo &|:C.jc""e%%N %4 Qkq8H#&ttL LRl AaJӳ QrwDZ'k.s'5kT[+EiΨ*-"g6NR H= oeuȏvvtOv冨ɡW8R.(Ke016sk!|fQR,w՞ynPnl qT2E#d!@ f9w"l<2eG{v{~i`*()k.A]q*9l&Ź |S`~8?s7q.[?XXiM2bevjIqx' x=C%wl)(EKqsG{,HR F*W(p|Y6biӮaQT2_Gq{C ]>Fɷbrs/u%M|(xF&ar"G~ܤ=—q4$c`MW ?c<_OT$BOBAr|ԗs8JvjACP"2*obԹƲftS{lXi"[,L@r_lps&SIlc'0A#f'C1Xp߹U/=ɧ;R!3a#6p[A ! z;D15˜a$SN/һl̮?6{˩prŤ7J, ib]1meb,e 3-ȤR_1t`ٷf$U8Fl*$N$66\nk*?h9awk4ֹ" 6A6,&C)pe"E356kRQ`h[qmfo:aYp4AƋvm;1< \Q`"%x~p߱E]UWw}['v $3ԮoVB,Ђ}VUkV[F&o:8Z)k[cFB' #}Xm ^] 'sqm>у +HJDq\GPϩIq1Оu㟶Y ,/Ț| O&kN );P3;EhZ\g3 oѽzrݖ2Ъ(rIe8!v/KeU嵔B=tr!d̓3Et=L757gEѵgM*&WmZf0pk 8S]@Gr iкZ}e(O^#z,/" C lFx;Gim\st= bpy^dḪ(8wmE"C?FA U0S$^i{& ңc^ K;C1+o ƽf^e<|f`[rB|^7!,H}ު yL!9Do8+wt_ܙ+/a6@-M Uj4▋5 L#:5EPeOyA=xJZDH"AՅU^P;(H`2Q ?&P81!*Kk!k;f $KJIR|Wa3'߮F\Px_:Il-`O o"vmZЙwu(N#kfj+eqP1($2ň&@6nrqҡ8 }ksqŅ5M۱zHbGٯ)~v9Aa\ @u #7og˞Q'u%sf)HPMgSCHa‹2Bd}x.j1h?1h;]‚ZՑݛ :3*6DH λNb\Y(v7pDa}xK6 _7{3,:Uq][2hc"  g K eldpBֳzD|7/ +Ϥ(tSs@3VQ5xS܅'Aws&yc ,LHk|Od< ЀQ:/IG@$`^QRD_hL%Kb̾(2(E{m̞x6Bܖ2֔?|tw OQ}l:E ??(֯}v{'wR,uMrf|7J!y + UTnWQ7Q:6&(sǟoP}rX[D5jxWܣ@a7cɀ]VиQ0ߢ !XhE8*< ^ ?_k㍛H%FB0(N)'4I+o(K6ePJ&WL\@R(^;S˯}!蜄Oa1cN5x'GFef̗5j{A\wW䚳CrNmX! 0 * Z# J]X^M^t'0ߑ࿕TidTw1/̳uJ}(yI EMY7HB IT)!Q# XLf==nʟ._ÁJ}y.[@'zrX v|BHjhm  GoP9\TPp{jzxp.RK&@SG(T@Ԙ'uK!l)8:aZM‘oEh/H_3CgzPrhہ#_;?<[iˮ9ǭl3WeaKuA[iX?ixicuiW=5Ϳ~wmM:vfˠ qCx_%3te<㾻㡣MRڮpvKӑ $#sY;VB/]0=L/Vf:˳dͺAQW-r(9^9ȁ@n Z4rgN4VVY?B 4a u ں0pgY._7uvd-6dJ'eCŧXvI*ِؗ:)zR<9Qȟ1RQ \P5>tBcW+=!lo:FR ED@~R" Ad5wWjR&EgW0}rKy>kw{zz}߻M,1@gCUs:!rI4vYeiw_vRQd)fMik.uw8F XlZǍp8փ#GZ_Xz1h}bGP0Ȁ8~Nӻ):ظ VT,h /{"95GZ$@ aH}Vúy3;QFxv,^KiiH{0LĒwf.؟/ekǍl,B~ 99~d(͒T,.ṓ[~5{n&K#N8??UWךǯ7A;&j t|[\ To_"Buz)mcw[63>]`|YVemv GFGkF"|076Thtz0%Tߛ%3Qb!+W[0m[$&=%?u@EŴJA=PmDH\ލp* O1WqwD;Vxl21+?厥MҭZr TP!kHqIn6Rԫ8x!kS#e<9-Q.( yƮ-¡ByTK0۟ey-OfTϪhejjfkHs#έ`0Rq sU'2WH;a0t CxFcyiD׬%z?W:;|È#P ~fC_@ЇV {[lA6{wxkwCƞ͎$Wb +@ eP733`fDṳ_%ﯭrŬfgTE3jjzRz>%3@aiKD3E+[q~ ̻yD)*ϐUбa1wŕ\|@}??cUלY@WU ΍Xن $ M1Nvi^-kg=(.E5o)5ߋ>q?O62EA, l+viJo3gSbN0ZXPRV, "IKj"-GS>~y}?#;zXXd)ױnXEQzܵXc{(o;%M~xy*ZF=0V]:usJA魾>HQulS"R[&Ggb'  H}xr鱖oddC E{切Q6w'.\;YEJDs C3 xIF`E)qdGA$#7./G<9e* Cͩ.t2G~+BK<ȇ}zG33tp's#u0ߴSztHyZjxD q(.z}{/g,k\6GKZEc1_N9M*'ek6k˙aiW F򂝲|d&hz3^>'g?#FS+SY5k_DՊU̦m]:m%W* HQ{TVmHNn=Tyr۪Sߩ&9sd_P!s!DSkA0}XY(g< DqPS YXy-4fnܓڠHLQV} O: <.[Hd"jLQ3Aq./"<3|s[qZ'Mϗ rɼ>H3IB c_CB[F`mh3VQ;j攬d }x0PNj$N;~ .`]'õucf^5n^FKhrM?c M9X@ƹ#J)A ϷS_R  sY9J VJm%c Ñ Q:H=W. %u2~7PS9A"b۬ݒ&<` ]ՀQ1E* |-)`wq77?쏟m:LC&|qƫ$PPA.P2>ɒȘBgB06\F, A" tY[@z%R:/WbNQ}}7;\Q$ł O0{TJv̩l 1dINnŤ6n昺R&jE`٨Th@ gnQv2}"(Ix cKECF.KAvigXFpȧE8r*Oyn$d[U%LtKS)[ /mAj;3O_9Hof${1X3͙0)AZfޅ8)o) ,Vv1X1Gf_5.1F#QM7|FeA>u n3>X0 U}* ޭ@|^ag%g.o^F6ZӲѠ%0F@9t9w"-Վ}icY`R<(>lL7c8>#.`-2JQ} p*@G /u=tZ`cR?~2po;dPw؏ "mr`6JY]U'AP;I妬zl9K9̀Asw?" t5uBӑR+=jfMm`{B0%K2#=7ɩTBv@0.`#A~^'`@OX^_Ieb'∦@#Q/ب 3eӈw'3Dn[ {S͎ _SPSf,6>5ޅkYRe>/LOhy윽+i&ses`^̈!kd7"0P [lTPR|% 6Ļ(0>O.`ȠW\?NqUUU5Cm"3ū鵒l٩9HX:Jc1$kps$/u ϗ?Rf&mҮK\l[touTI\8h&3s5%]/E)Yc$7N r| n+aN7˪()Tq[BȔ! U!@  t7*A0QDa6xsbTTrC=̱?s)F Bqv^1.SD*WJ67j0Av)ӛrRG-& ɃP3  :>._d;k~>)ɧS t&wGvkxrdz#<&Y`BxQ@~OE#J/T[A032V: wUL2P/D`ex ƈu)-* 0xx4k89ͩф2~Z/Qm+ttD1Svpaw爊IJjpr~vH<;-%7ʍǻ;NU#WJo$kZr뱍 ~>Ka?=oos (PHzt޽Dָ{c>] lAZ-xȘ.m ʈ$ d1lDG[^~w@B6Zx+"?c@"}RlRlᓲ ^B=ʏԯPȗGlu1\{" z޶v% aOl$Ő8Ckӝ3!̐mN?3sCo( cܒ_l΄ "&"(w&g&+5`1tQSේq憌 x0sl3(\=s0 z0n"ST'2&1#q1GW3>RAfeOeqOkEUfKM|hnÆU;ܪ)1.ڢq8?)|/$("2w}^SԱ 4c gF8*WkȒz'#(/yB_Ts.BG7ݬ(ajd L-H-PJ-<!NOře -u&2C'5E M ڿlɴ#H)StUi}xĎ Fh”hor [^ ΐIlj'^Gg*|C Z\p)*=袁Ф a8nK\XTך' ?ܭP;H#rmuvcm:=wGѕ iٙS\-o?Chq}Ů8Ip뷺@<#SkAw'>KRQ:zљ,B[xmó$L`j x(I*SɜFq.p<9V"Wa`f/6E4;"z!XD4Nxט0w].=NB[3O=>bh̹Lk̘jExNUwr"!i08`vDO]XhgT}\"`3>k" g*MVhaDkfmkC:`q/cd}|„&z?#55~=qsP-ު"]K܍k2j֚iTÝ[_Z{mوik%}'A`#:Vzf-i5C3>D^ku|wW '@ j !Dň aa`KğFglCJX6%$&_N??Ԗ5X#GK pKHx\bXx!.]53<\:,sbʉJS%")ʿVwȞ` &”&cCR-̓Uhգ!r%jw8+jx+/Ƅ 6:1+)EbC}(~ j1294,o?'u1f_=Sz{-^7Q+Qi~Ԙp_1J5uJXEx`{řQ^o?pҫŷJyAd 8;fQ]/bc*(v&Ϝ#1@L<4sBܺؼsԪ1T"fE肊wщ:ma0F HL k a>f{>QR}|}4_B@|‡mq^r, +bDh{+!#VN,G|pՏ+z:`h,~eY4vjyOvvK'AI~,}~﷿=b |Z ܔWA*BNF (|*行%0Wu=0t<|}m{k4MZ z#E=%yoرض2Sn)xeWڧ#yE:'qk X4%x s6zwGWȢf/ﭴFdxIXr0ޝZFTPW͖q#`W٫7\nB Ij n DuTiKDוv;`C!!A.W78gY?'6u(T|ַ-+%H~9cjI9$F"]9pdU1NsۚÖɓäp3=uąAPFr~ptҸKEvb5Es~Ai7I( @npw+:tOQv"]! E$o`'\J>=$:Nw)RUP=PEFմIH3cOz։5U{1Rg٩U-|Tsuq+,?K-D?Nkr6dgJB,gUZ{zu/ʥ҄O=ZiZ:8? V󂁵l"v9QmSz>jԣB7̛yZ& nJКX,!,I]=)Uכ>7sc3:^fګÚDjsM4  &<G*ĉ ` Ny#QHv)،-cbڸ2 Mo_W_i8CHs ^הH'R[PPlj O[k]''avNY(eٷ/IXAJ(Qa1|MD %m8'D{gfyu'p2)C⫯8Lʼn !wyՙ**>nX @xjT`ƚCё *LфH+Fxn#sꀩN; q!=OR6(ُqA>YAJ<Y. 'ӹn29F=F@-6_ʢ>**}ɇV$!Xg4fr^Jƒ2aMh u+rDBQi$=K1PpŹAz̎60[JxFP0|Zߵ={i<3'i 鸣޶t2eFpӺ|{d:AvE1+)W+UfU-:P[酄cP 0x`Hやq5%lv>yB$X9Q3mtZH'qts*Q:LWqSOi:0r*(Q$8Hg?<0I1yZiMAv1/ t|E [\T0xop*ADhpq/zTYד&i|j],?;oνd v!DDy='xg/ۑ\RrghÚ_E/d?OW[سӾ_iQ/*؛3ܳs:A3 6(P\2o65ÙA*Z1dl8X÷~<^9JT{ͫ]"᜷/vOE"ę} /m?w yS$/MU}k'o[x|sۜ$5V"AחƲp ⥏H*>LE1jVe&V?}$Ǘ-BG:a4,ɛ- 30w$Q!qďI@0s@.f؞9<]4$#5=l2b,]L)IyB골P 1֯yWTd|8Xߚ=$6`/5>~qӕ$Zz66P _sf= Δ5Ƞp"Rc8D\:evhK. BCp1(X>ǽb 5f >CCh3q~LW姦zV=G F('}5ETNŒ` S0 .xyDql= ltL,Q~Q(sҰ2p`YԺ0XaݧV[}y<j(3VV)4Xf0nGv~uMY(єs8;'бu D ]xIkz !um&)s \Kb-p!A3$HO9At',wYB>eU/?;)ENh)2[͙؈_PB r X<T OfV39~]hW>a wY7"iN\֐[ c]$6#[k˘/Ta.9VJ7<K.JKBvID2Bk,/|+}oui.ݗ{^"Y˾](6WAePۋ)a8B^ڸtAG'!Hj1cȚJ#MȁIŋ-|,Tw'lOnj`҃&=q5:FSfz(HQP( (2jٸ:[Z4)G8&/mLkų,Tqq0Zb-x[WqK.ip Zygnm =c+O9Aē)页)&".w(q JEi]ҿe]') hhUT֐5]VdxS.gJ?F#t8oS_AS4_wyOYwwgΨSg:r;;ֻW]҃P>e¦j=Y>sA8 >q fӦř{ݼ$<`dCM4)%bp[a\A.I۸i-^B|@{3U&N w*ߏa{5c{pki4$76TW7j: 4 ѫVNuI,x ydcxAsM{㞞aeiNr3rD  cbMzTX~_xD=W pxjyΰ6IM #,!g+pty,^(Uw.1l:!b " zGu^?~7;Ek<0,V'w[Uyl.RO|֥uy%5Tј(`y%ۓe+[<56ƞ(sӻ^3ӼgIK H )"ܚbܣOq ƙiv'rɶI(Paͬ"ɬ;g/wfaNY8w QJ rkMogmeƁoQarn>c7Ys@|,78mlq;9ZXDNC׈@ծq)u (mm.\@qc)TQ/KUFCG18D0$gm$,Zkϳ/ jչؗYޓY>aL-+Vk+d&.wx?gHP~8-Cyf&,M&n[~ {co#lŏ $ yf ]1Óߍ?]MWWHq"Ӏvn̋!`&_c'۾ۍQU1o:kl!LuO=T1#_O^*1Ys~ϖx@fza6Rlaꛃ8e9v(WXm:b3ɔVI%5.8o`b&߅TTw@B_fu:SMw璼Jڎ9`]pЛ%dġC]@îE~Wwim-rsDJ"pty.g_蟔}f;Ds>]+p@-~mQ. jyO&9ywu3C<8`N"1|Iaiu*ئ?Š+=cɬ@" {)^0K Droi|S"q:3đ+pT7h$8J|N>Ȿlgb;ݘ3ǫsu~wnK)v)8ޢTZ`@XEX3BÙu'qVC&O8&Cb']af}]ܕ+t9|7|-zoP"< 2@4֪@/~ڳ+<9M٨m ;1?_̃cC2kIq F`5@yIa]%?]u(=>"*WPWoҜ+E5VHɥJ~ I:-H3I D+)ʯ^o]wuLN/-5X\"`CWP3t9^T꬀2""؂{(rZPI m!Ӫwa}0?ijJ'CTcʬMde "R)C&χά} 4i^fIN;]9n[\ I] qd#C{uߢյ^ ,,Cꉌ'OY|~o34΅/Q9α:1>7jy])JQ wN "hi=0ZN]3*6a1p 1R1aV3DDj됛):8.̡u53@ V0hm̐lڝb""%Z[|4æFVr4NCC0<3Fڡv{A+UGzt46Pl)65Q2 xJw ƄuBYVa#,0+X;@ÈڰsX F }uUXu-H_x뇎suly>>'ђĈ]A ap#.Ͳ|'+Sa`vۺ<˽H=0z'A^@jy ;uK\&\/xo8t{W1{x;QDi8ʳItC FNJ0EYʏ@*V%e+EcH-Ú>8h{wŽ#51pCM:Qi} ̲5:`\$f2.\.\ѐڧ6w-t @Cdez~qeQj)P<7hocf%})f& o-/n"tu/W ]n~k~MsUT\qm$ْb8b(& # ^""TvC(G^*华 \A2]3'ώ0}]p_#ͳ uDf.KwGYV Eoo9*߷WݜèJOIJB=U}Wg_ks#vP:IM Kt/Mbi@m% 4D/H fiiXj 6Q6(Ԅ'~8-HN8g?x~;ujx̿#1xPJ"w'9ڸy꾢 jK’3|yZڬҮ}K{wVyh$ۅs(d P&=L(Aїua?$xk1?Ne0le.*c+pLvA?f6>#5_?|PHqcŰ(Z=[u]eμ'_$S1@P'pԷfOd]"RwPR C!B/H>|.EYG€MGO eB{hfKU̧\#;tc/°x(37.H杞c=bA|Umd{? yRIB H"%omF V廅/|=mj'CEe2O! Pğ({H>M!HJHX T*X`FJ2d{MTKHq0Si%&\i?CSK $l|aο|g7:ۜPD̎P&3@8;gǠ%|7Zn 6aê.~-nw:_P)w6_W(bXFq'8Llv[dir_ pc+!RsCowհm:_Y%oQ3PP<)!qc!~'^z0T"pƁU5R R / -8] Rua  U 9;A ߿^~˲- dZFxj`7[7JfS4[WsKcuN6Ss{/v9b:[huT!}r ~m#ɻH`ts~aNi;~{ecs}V#AS ZN#v?ƧRDh:_$;h!sS@, "v^jnb'ׂ熑B:CB?bՊVu3\ y]俿 (/jY5XDog4l$u~RWoO(?X\v}ٯ;'M~{~~oPse2jbKXc~\/bk]&AۡÅ_gk:"u'@Afd3Qfgg#7IQ8D9P¶f@颮޺ZŖk&L ) YSHAy?7dzx=~NVa0 Zif ((/b#s::z[?e+- p ESC) -5,41hvX{ܻyvH@( Ѐ;Wvw [m_OĶٗnlewAd;<ljRq\'é&E OI?C\g;Oyw ǔn]>Jk|:WuH0GKakM}~{fWsTb ֽo^jۺ!wno#m[mH:ny<_!>9ytL/Q{C1v/]]|\ZrMg6O|E~mw]7tjVÞbQn7;"34a۪ jq'7\{ Z A|@}VRumM emQ}FNU9Kx g̏Pu >/OЁwc gc١鏶:0y+^H`ЌkUzҞ*c(yUz]Hz/9zߣHd|(ECDR(އjGy_h(- y۹НL|:׾?\a3z#4ns eQьݚieuXY5}׹ot=[H;7"Xœk:l16spw3VhrN.GR :*\ Aŭ?6+~$ø$hJ烘<5ʽjmOOYV$✙)p#bB@o!n~V.>~YlXnӍDl kaa]#Vk,s|:G[Y8r[ssRy~go^M4QjoPKm덼)>5bZ*CQE6ebj%sD|oI+5 :58NA*v0Arjx31 eH8*tf,GꈵX&z?]J'͟_vXRV-W08SP ;L\׿Bz#JbrWwu'%Nd'6qQ9~ObzFxޞ!^%u_C">ym{u5RnE!s~B#c^;{.E2!2D@2c-7@q&2 u?G(вa˳)vyP5;=d b_Ux'p&6^ÏLF:ugQ+>G3W9aGL֢ u-+ h6jQ'=%$`گ1yif#պ6 ?n[$:oh3$"7u FEXjytP mSZ A`fJC /ڄ%km%\y h,z>MRDQ*,GS2UЙp$"4K" nvA+J>E??2 gU8|t!o+m׬[t@EҚD`쬸R:- m4!Qb\鍵Q!NY~oKɬ.'a&1SZ'Jk/Hވi@7܉=J79idh~gX=S"/E# #lTQ Ux|ĸR%"ng[[Z/&9tzo:1޽PINQnA-l#'E:Fߍ6ǥ_l=r㟐$VGAQRȿ]%k#ֵ/_e ' )ˣ}}WsfcH:m>g͛3bO 4u0 qVWxKb8o\};lmקt= =쌎GB*Z3|Hj :mƄ 7 Bwl{҇)x5@l׊Z c!`eۊt/ln_gURzsXPzfRɽ;dǪ Fu9ҍg6W`ڣDY1 ?(tT*•~:QtG >oBaAvn,м.Q;%rEtBoA!\ⷬ4+d(px: _}礜?^qR$ʔBt1-x6&?dP7:fR#W>칪$a躏uv>]rQKB1C!54| r7܎)0>C(\XV43b+n^#潪X NO}ԄIC9*8K??a?4*9K w"GPbm?TwTKYc"G 2TsmscMvk =w: 8PcGz?Ch\hNQ# \2VR/.F*O/v.$AF iDUnɷA*FJ)G)jaC]pBHiĀX侚lkH2Ϛruja-vL4lHiQUPQ*R˝3b>y-jrSҿ__K4y2T$An%۽NbDW59.F3  KUeʷ5tKV8GhW٩eV0UOWBRaCR1u7afjL|CF1FmU\/[ I_F %Īe7י^;͘LWcvA+b ; "'d:3D(n,ҤZ>8رNRi46+ļ(_{ColG3i6u]R1v}j9\T ťd*SӅ,獏S)'@ɺ~߄+*"{ň>Ty-7 ۧI.t۩s}{Dh0)&Ȓp˽1fVZϫ:ޘ8=*m;ld{x.)LBϧP#Oo_S;~SOG=zF%<@LfZYfl?)he=4쯎N\,3rUQ\'zHs~J6=tOߪѵOlݞy;)xű+Yl<:u+PP޾~Nv_}öOd"T.|>|.smCeۯ=#! \$"srm||!`EjCKgɆ@Y87yU _lcrUGǨRt~L㘟Iإ9@r 6 PT'`7"kqc_509ݦ#aeUh90^b uEI'b/Bė7#^ЗI(lbq[OC߹`p+;I* F)8G Hۂ(Qɘz /\Unx*AqsϚNQ Yxzk5@kǻ?DGIp[vtwFTX2?bt <"HM,u[^BGAoK"b?׹u ?^zp6г @Ip6@b"W#~N2o M5~f \qɚ֋fd$PciQ6G%(z>f\/8:Xt)ch  @+w$Uƚ-CL lw1DrZ cmUGU(D)Fk\"Cu.{6Vʇm$8 h&L$;jWV1E5.[qGI'߁@8 x2s;@`ل"`qw+RHB ,bHb@4HB4ۄ7z_{nY[׾=] E<_QOѿoրBzBN<{P" &|u߄zÈiA!$x~/x˨R"B/C V gaN!de4㨢}m8\=lKbz[Mz0~oLnkw!+ k =jI@F[ "G"TuQu֥;gpQ_r9;k-_`zN :%ܝF;{x4\R7mp]Jlш*&m|K{PK]CnoZa{j#|Sۥ;#YYdgdfiHqs tK#bVBe+-ZؙҦUv&PC+37یq=}2u4)v>CKS8A?+Z-#I R|-~<6 1r"2$2`d vM&93TO?|ku⣞\ ɮ. xω $=פK7*)1Y Y,KtQ{*s8YypKxB$AC pP$2&[Yj"m`(@ ?wg i')٦ۅ.VoR%<)Q50U^YV9*VBAxz~K\>{z]ksqNmU]27/u.d6 Z5A 2k ΪTܰ1 lfR.鬃P,_):j~q%.w;s~}0J *F\AURo5{*Rb#c I(ABJ!}})]ѷs6p6i{wW,-ҍϴ)HD*9͸Y+vO!UͳCkhks-?%v〛2w7ukuMĵG~pFgiPs p4< tuVo* R 盃0Dr7~z >Iچ32/`\8}V0PHI"l0?bŋmc.NC(SMC撁֢u6AMΝZ'7SSR8[l,zNn]0:q4O/>9`=w`Dd蟹"1ݬ'f({e\2WZΆ" =Pn~~7H V~noOu#Nxj?i3\Pkr)JآF>u_rxݳUK3 U75z0\?R׳_Vvy' u~y30tH';[)ݟEُaĭS82cml'T CZC '::o@ }`jٌcjM)@@[é8ƻ.9S1t.s\tK3(\͟>GƯ`0!}7rQwL:D_u'v"tSez" AƀGfo0s_!5qd2D|1I*1K *ȹFRePM66 qPU+>XȚَu sPU.+iøMYF] $Xv$s&gU^Pij`%¢PU'->;xt{d~[0 ULM}ZCwL5Ή:ya(&l$lI0adnI6'W CmYQ!˵;i.헚ސOG/-=eNZ&=SPĄ$!i3j|<1 rMǂ;v2wI˞~I I&0ZFSAo*B3pMb|!go];d 6RIT6E ! z"`^uގ=;|g(C*RҴJRBhJDd?% DB)Afhq* h䴪(^b* b(B&n Q#>^ ̠P1%U (+^)E4zl*E;^?[=6Wԁ2+}U/Ba.kb'mPN!9sW^% cZ.h?9 ;j!e3]ȔDj?)A쓝e+aK\TV `jUa{Tps:J=]_cq7pe֝[1@ 'xTۺ+z{dײ3X+xlq~38Qm`á3"lbTD T-NPRg,gx~sX. $5;_cbm𼕊 Ť)ϮcK?`Cm/e/ A P8cÈ pzA۱bۆ!cG;C|lptc( a% Vߎ16 `>ԆqyG;.glfǵho:yO G:ctg=Y"ns((EZ\h@rR I :U1ad{LbQ©V @Q؈,U0LFqU &[@: I'7HMPY(P٧)؝ix@u-t0?[ub(ȕdbpRU%?_ zy B"'EǗZQ &#vJBە冷^oӲ=CM {cKN݊XeulVn*LbZld& ފQx ޷{l*]D~1 ^5D,}[ּeB@zK\¤< xIhnRp}WHA2J'z!{0OkÅڈA*}xchHZ B`iXJg E#mN:|#5גpe>W>Y!rӻH&rp0O5eƏK-9䪥KLuţ=v`qH˳{eߴֹ02[F!WfmAy|vPnf7ՙ[.:ff*U:H#:Dت]r7MPhw` {:r, tJǪ8h_ ,B9+'!uI3룡]:f.;)G\_LkOFֲ>4};V ҷ3?3ctiLf7IJG浱6Re[2 5 Q, d{]ӿ,h Z1v/6@]m^=]n83<sg쭤@֡ګpiY0N:COn8CEUIgBb`D#rAZ}{Cg9Z䈡2ؿ)ig TAaAAB }ܺlйй@y+5|[3_nz=1[ 4:p?/Giwx4) )P Lq;s}5Ti 2(wNh"gʮL )oSq>D81:֜B t48mpgS%oU)IpA}v^2W'?[$$ ƥrll2W $ITnzzqmגb5xr/ߴEair(Ǟۺ$A &&Ym͓OblNT ]>T?G-[ujCs׭QF+3Sb 0@6?A;uX'XhԫM ַ[F,ph0ea6&4@KB]R?[Z_u.3ƎcG]e+\㘱"1B8dօr3  J5T! 7 *uTc㤽JG~(?w_͝q2Z@U!y+nPE§ d)HNۮ1(^hA)  vME?Q6 PEPUe}O գpl@dEJEnthk(FC4eK}]=ߝd"2C+L8g*7z#*SWWׄdS0X8Ḓe)]q8ŕ!W+麚k%2JXF/w s3`T0ʯWp^dCz$ +BC |a{Kx= dIz"'N{6y<Ϛb24}^o \;?#$1>ؽٶ2É7t/>OI+w=#]N@Y)4?9 r6@5 5N^~G]k'=Wx:9ndc a]wa_c/f IUJ(1&6Wf5PԆ Gl \ϊ*Gb>s=@;Ol~$\U1\ U)1FoFOb4}c FJ '> ~P*7bnܬDb\B.sbrrrU#uPG2.-mY p}ڮ^i]n ` s뉮?sd// fXӷPk=99gd rc&ct=fUpİ(,B Z C@PS}h #~^8u0K 8^}[0A5lf P<rNtlM* P yt~RnqZ)j@m^;ݛ REAEۯ,Kg8%Hǔ:o}8:&""@K߈÷.BH>=yzT+a_Dղ| #(MY`/ ~>~ūx::xFA@~kOϷ?_\/ƨy yPCt.p9j@Zxf -rK{y+ᅖUb+F˯"d`&6H7z8kÅuª֣DTL'ת[H:z"lyŋK|x> Nfo&.+_+Frn:~qB(yeA%萎./wcKyt5C V4wizUPzQ>l&kMPl{Y0Hm-Mn}(*XX* $DԼM!5nSlq}0wX>*,#For6q,$ ff}^' =9yL}+izole-)&fFf18XOY۴|21?A*CJ*TXYN%E߻}qO:2d!. DtQv|?*M;_Jti4y+tksłzX|#[̗eGO|zehDe*|k $O%XءUxVƂtš( O눡x}zyPm߳_r9,5+ZLB(% >vu{8 M 2@ &[` u=$ "L sHw2wziFsw-4ݲ<'o*]%/iG {:}NiHNnb" Zhv=Ъ~[!?I^[|g