summaryrefslogtreecommitdiff
path: root/include/linux/ptp_clock_kernel.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-08-09 10:14:04 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2017-08-09 10:14:04 -0700
commit4530cca1989b70b2c487ad5bcf82e608ab55f734 (patch)
treec429460bc5409ce17dc28539503c10cc229800aa /include/linux/ptp_clock_kernel.h
parentbfa738cf3dfae2111626650f86135f93c5ff0a22 (diff)
parent8d63bee643f1fb53e472f0e135cae4eb99d62d19 (diff)
downloadlinux-4530cca1989b70b2c487ad5bcf82e608ab55f734.tar.gz
linux-4530cca1989b70b2c487ad5bcf82e608ab55f734.tar.bz2
linux-4530cca1989b70b2c487ad5bcf82e608ab55f734.zip
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: "The pull requests are getting smaller, that's progress I suppose :-) 1) Fix infinite loop in CIPSO option parsing, from Yujuan Qi. 2) Fix remote checksum handling in VXLAN and GUE tunneling drivers, from Koichiro Den. 3) Missing u64_stats_init() calls in several drivers, from Florian Fainelli. 4) TCP can set the congestion window to an invalid ssthresh value after congestion window reductions, from Yuchung Cheng. 5) Fix BPF jit branch generation on s390, from Daniel Borkmann. 6) Correct MIPS ebpf JIT merge, from David Daney. 7) Correct byte order test in BPF test_verifier.c, from Daniel Borkmann. 8) Fix various crashes and leaks in ASIX driver, from Dean Jenkins. 9) Handle SCTP checksums properly in mlx4 driver, from Davide Caratti. 10) We can potentially enter tcp_connect() with a cached route already, due to fastopen, so we have to explicitly invalidate it. 11) skb_warn_bad_offload() can bark in legitimate situations, fix from Willem de Bruijn" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (52 commits) net: avoid skb_warn_bad_offload false positives on UFO qmi_wwan: fix NULL deref on disconnect ppp: fix xmit recursion detection on ppp channels rds: Reintroduce statistics counting tcp: fastopen: tcp_connect() must refresh the route net: sched: set xt_tgchk_param par.net properly in ipt_init_target net: dsa: mediatek: add adjust link support for user ports net/mlx4_en: don't set CHECKSUM_COMPLETE on SCTP packets qed: Fix a memory allocation failure test in 'qed_mcp_cmd_init()' hysdn: fix to a race condition in put_log_buffer s390/qeth: fix L3 next-hop in xmit qeth hdr asix: Fix small memory leak in ax88772_unbind() asix: Ensure asix_rx_fixup_info members are all reset asix: Add rx->ax_skb = NULL after usbnet_skb_return() bpf: fix selftest/bpf/test_pkt_md_access on s390x netvsc: fix race on sub channel creation bpf: fix byte order test in test_verifier xgene: Always get clk source, but ignore if it's missing for SGMII ports MIPS: Add missing file for eBPF JIT. bpf, s390: fix build for libbpf and selftest suite ...
Diffstat (limited to 'include/linux/ptp_clock_kernel.h')
-rw-r--r--include/linux/ptp_clock_kernel.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_kernel.h
index a026bfd089db..51349d124ee5 100644
--- a/include/linux/ptp_clock_kernel.h
+++ b/include/linux/ptp_clock_kernel.h
@@ -99,6 +99,11 @@ struct system_device_crosststamp;
* parameter func: the desired function to use.
* parameter chan: the function channel index to use.
*
+ * @do_work: Request driver to perform auxiliary (periodic) operations
+ * Driver should return delay of the next auxiliary work scheduling
+ * time (>=0) or negative value in case further scheduling
+ * is not required.
+ *
* Drivers should embed their ptp_clock_info within a private
* structure, obtaining a reference to it using container_of().
*
@@ -126,6 +131,7 @@ struct ptp_clock_info {
struct ptp_clock_request *request, int on);
int (*verify)(struct ptp_clock_info *ptp, unsigned int pin,
enum ptp_pin_function func, unsigned int chan);
+ long (*do_aux_work)(struct ptp_clock_info *ptp);
};
struct ptp_clock;
@@ -211,6 +217,16 @@ extern int ptp_clock_index(struct ptp_clock *ptp);
int ptp_find_pin(struct ptp_clock *ptp,
enum ptp_pin_function func, unsigned int chan);
+/**
+ * ptp_schedule_worker() - schedule ptp auxiliary work
+ *
+ * @ptp: The clock obtained from ptp_clock_register().
+ * @delay: number of jiffies to wait before queuing
+ * See kthread_queue_delayed_work() for more info.
+ */
+
+int ptp_schedule_worker(struct ptp_clock *ptp, unsigned long delay);
+
#else
static inline struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
struct device *parent)
@@ -225,6 +241,10 @@ static inline int ptp_clock_index(struct ptp_clock *ptp)
static inline int ptp_find_pin(struct ptp_clock *ptp,
enum ptp_pin_function func, unsigned int chan)
{ return -1; }
+static inline int ptp_schedule_worker(struct ptp_clock *ptp,
+ unsigned long delay)
+{ return -EOPNOTSUPP; }
+
#endif
#endif
hu@pћ[ABDIk>?")tt9b_pWޑj*k{aI ܟ//`;wyF?^[z\>+aGwO4gw wPho@cO>(`5p /٫\ʼn79T2rwǨu@H*s'v{=h |_Ks%;~O3H0ж/I>.-!v~UT*C%& Rv?ec3QޟOό7ӟnP|%:ODث@;O5=:'Xo+n!)ivc{ @Cq1Qx (Pu-l=7/FU +T|F1< ίY<7d ۄS#\h!K^k[SSBkᒟKp{Vv|)rkƟ9_cYX&JŚyaqQ}(t$ɐǖwzpp )6(4Ot?* Ғ ɐ3 '#0)Gf$-Vg*cGCJvHb+ q m|%,BrAT:տxӖ6`oĿ)j ^P\`9{"~_6 =t!lUy[KDoNV0$PY pűUR?.G]l(W/ƕEGQ pHX3e"M3 ⏧xG㗟"-൯I a 7(7(!g ȲWDƻE=d vϳok-_oAu?kЮ, :'sT;f" _(qhqS%L^q67C*I)_8.M`$$ 1EPDAI&WLOWokSBILwm }J625µ=QzdH;/G9$_洬|pTGٟ ;~c:^=ӥ+s%M)hۃQ|o}tNۇHSbR2$@_ <%@q|7A1תl.ƨgc8} ]rmEpV"Y"lYQ㽀t`*"^w[Db#|*&N;4.D+]fH|sy2V=1_},|Nͮp6|~Lo`g9x!˃]V:CRE!V1Ա6j.kB٫_>KO>^TNK-虠\ HG!ӓb|xu1~"J>9=x \ĪV a;LxnzZaR D"#ff7mAPU=L5{ 7ܑJ$LԄUOȩBKHA=bѷkѕYsou^zE%`T/@XdhQERMwQfF`߭ T?=/!yG?py,AuN8|$<MbaQmw#w? n/d-mֶ7O;2BXI"K:d#7IFY*)OM#oi*''z"r$=fO`KergֹvRޕeTV#7WOp|d v {9Pԍ^!b:Cag5}r8CYg8zЏYz5{gJ ͮԎ,;dsuX tK{;SUۚ 0u*PvM '8rlt vdt,cuzwkLUΡ7emMa;|aoI}l3:)'Fq٩5lfFU/W_Ol轤y dݝAY`+@aJNP?tqȣEmk 7A.Ši54?Éce.HgKO[nۄt݄XLp!2H>DZ)ojkV4.˭lUu XBtٍzIDw`~1YhRy{͠@Ua73Hrdogz0pB8ɧ?YX+<czj#eCLMc_S(48<{3u,oQh q CRm{n\qc|ؑ! œ X0F r8[|90#L*u+8+.M2>Qڭ1عY)ђ3PI z)${ oW,O˝GyVv?Cu?x:Og}`Rc0I/;!Q굿n(~@IZ9a+}c_r>kԃ+ɻz(I)U=G(pblEyz銏_g/ߟ_mW?+-QW ozݺB]߅EXJ4'CuF^>Xzi泙d!E/ %ܸ0r2\!`ӯ8:6i=Gz ^MXO`925h N\l7կD~3=x XL7f΁"2%wNL2ĜD`=P8@.@tN7*Tp8[,"h5F@Q!hZ Q?d'ֻO5Xjf)HFh3C6C}om|X~Dj'Ͽ( <)'zW.̌FD@ z,׋_qBQ\z'{(-!#!kbNϡS"$ܳFsF)g]ժI$P''@Ѿ J;̈&`6P+KKP¸)赱!DLk5uaA-R2Z%N'Y.\Sl 9쿖]j< y9] =M'c2z]m$!NBY'i2H98*wW@D!,毨EZaO9Z+RўvoAو sp(֨ !uNMk7_<1enk*o(Vy۟z]-xLH4XvVw_-Cl# AveU@-V"mצ]=|y u:r,stԚ{>>N:"#>XJ7S];5Vˆ}Rz5G}b tί=oz@q}^;o0+o,!Cڨw ,m0m >x/07~%s!o+1 'vBXmU!mo]a!"@y萈ԝ"⃛Ȣ\GĄp]9;jݱ 1jm Gu҆==st)'>\s#ң~MTVQyvL~3to1@kO~3+'eg;?<>htQ;#?su[4g?xǺoЬkz n #h"xv18eJtSń|рGD}>Ci?Xe(YH\6{x[xHmӵwG0VB !ФZS2R }ѣ(DU2䅺^s'|uu\t]=7?/ߋbV/nձG[e7 OSUDu_va4_Hۜj3B[{هà kVPD d+P=RN>{VX!n[`/uuj#߾؛t)_Ӓ#Z[{py-nL:0稀w8 q0flYCa#5N-ţe2Ha[C @.MWTdp-}.Ray)8 ;%~1kbC iSXΖ a}m^l:ݖxEbQ,*SǕH~;aAcyO^2(Y'gƿ6Iֆ!WUld DX'FtBk }H'osrX#賝CS^o[Q'[2Z|P_AG Tϱ_%&L뛼SD8| rhA݀=r +OUε.4̱p^/m좓0#ffp:{uAo3Ûؗc<#"1[ߊ[$h!$9\"/V|ZV*_NKP .ݘnXME!bxF,t*,1[Dކ/r\Qaw6PD@ZW|ORPJGnCq#oB߂D^_3 O)y}Mnp'nA-xf벌I}`$ao G||Q9_f9/z5j"{Pl=FF"b5\;Ox(h]!{"qx>ՠ9Il]x _kɜkCy)sBB-ZG U/mus3T؋{v>mi:1Š>r8GNReWWss2GkA%Ԫv*0%V#c--98)BEc?F.NҊQ?]5>˦܅;H  Pj}pGӹ7Uvw^uYE6Ͼuz@}/"V`-߸J"H+ C-B1/| :=5@r_+(G|4gy mrT]^4BPSnH56kz SX "Xz^l^u&ƶ (Ĩ#|N؂i}ǶT~ܞLG@ B"dzlt{7I}A>̃|Z;ڶXVm Tj4VNqҔ90`{7 zϫzI t-(m[q"0{@ϯ'#kb$/b =- 싡8C>:c$x ӑz{<3}F꽍NXz(ORɻQp֙ R#ț(& U\" 0z]r:<'/g) H+$z0( gPI#v 7̂'ۻG .sY%X&3-;sz[ZA6;9yWRv2@i{ ܰA6*.{{@{=\׏&K7a!T%'xР iwAeӅ!XJUohȡ1\} RZ+Ljv~*2/eyE ɞ</m  ʤC p[ud(r^IX'89dHIOH`|hElP@9L:GRn br$om46B+p[N'4Zd"m?">g{=@M,U痓Q4e+C/"#C,bLKC>䇦mAϯ3/^g83M^L7|~݈} s}^p~]FbFȩFPZ UmĐXl; b]t;'}6rvX.9 *9ߛR nG}m*aƂX{, (! @Z}G8^8B^nAf(}?&_M$ d}_9CrA%]j*@4y7P*H]epV֯ƇixQ>\Xg QGHBYu~5$'B4z7-?:er}Y5c-MrR"n " gqu#;u뾵*PU8_$i$_-iSr*ǝ6=z3L{="xLA슜?'ǩ5RVXY{+7U}!p%JZQK[o@Xo]ۓń8,=*ZcI kM:w؈> .)kKSmŎ*_l@haUk=.Q[S%OYr2QO3 O}A8(Ȁa?VsTa CVɖ˟fDuO[]DJQ/ȮQR0 } 躓Q-8V2'\+mΓ,vWKW|]wo`.saH)0eT6IS?a#3Mn4`R/Y-5弁Lh4PZ6lk d `eC<]Wv|?MQp `P<ĸA~o{S~rEOƙ3=]=H/S*>;\9Ӿi;9E8x6H%({5Z52GN *.R~Vʩ={ 1`1`~"X2# Ɋ=P\s.Jc]՗?t;v7L~*TROR1v1+e}  %pS$0͈eQbpD;&u. EcHs(`\ Uswg\| 슄,呗 $O. "mvQP78!ؓ~‚7]^4y92oNav6oFh}nfkX" Ḫ#350sykEڌ0X!b4Yr@Y\j1XFD&6F l.G 10˄Ӭ(rkXBƫRt]XLն7JE>j̶Drκm!wVfflc]PI TO/sO򸞠x\ĮuNſ#?(EE zp"`x 7GٲG ?l FLT8E}\g8/]}#29) V`K7$X-RVi`ٗ/uK Vd:^^LPy)lQHzDj\/#Cb٫)enviFtcj$H][nJNzPbIdB+x}$u~},q @^}/d*S5(4cuFC\ f?+a(;\4|HOfIZv$׌k b)S ܢs R8JDʛMhTo=oꏃU. Ec(# =X;կqzo c5qsJ=Ksck B rD7 Gz̯\8':aa$ 99Tb`xЍTSr{FxYC FAm=Xۏ|= (j(X$ YQ |wcnl%ޣԖxq{aT;*2 l}w>q˄mP13x/eIHE[<_&Wp`\1 ?v^꟬G7hq =ګL+dF= Ql 9\=c"@o+ ^֢6I5VmksDC>00E\5MwÇυ #_ٿqҡQ܂C7x9:IŌ_ YZ-<#/v>w{=x\[z̚xVV˹3p a7]c}L /U#PrX+Fwit}׳ hW00<{!.`&VCcף#1Ʌ]>͟ 2q$V"N "SpQ0)Ԣ 0=<2r;t;As1wϏobѨn#-xhSf*Z sXdV\'$ok@&N9..tDVyq,dϷWvu_X_Xo:xUd<1DOlzw`X R.L 5R(@"aPPU ^p`=~2%]`FCt1)^Ϊ+p!)hC$5vUf?om[RӲ nj'nTrZ)ʑa$ t6ˬ3W?ibBULWFUf+[8Gv{>҅R7tHyLnsoz {[Q"|⛡pPy>g:3eYAu걪* ORlzd} GWW=xsܹ(?K\+>7Q\B}*wޔdKc6h R o`? '~-V!{{{V5G8F܁ʘeL|C]t&6vNt3K[\oampΥ>iCN8!So x+K]CP=OԽ_%o9h/Mޞz:S(r){r D*dTg>foG,ږ *~h3a5bXw0ڟrjDl?bg@~( Mq K]x >b>r\<\cytc93=n:CmA?s[!@H:5Cб8|u<-E0=$% ~%Io_JmRKhNF&\6_ 'PKv///&J**At:dQz4W\Gߠdpd:bM0ѯ%2f@JVqBJ0Ç d y졋8TQdʈ&X?lc]gm]U51d.^›EvZªO5C~% u3xqߝ4Ѵ k0Ay^z塹a drUAA /=pC 5]ۍ~yr5ĉ[GȖk{k-.#$e%.RiEN&.M)Nu¼#G^xa v9=ONFQn\Cbs]W-w߇W[?k!\vE=6 \s De싘h9 ^sǪu^hY?Eթ˱UUG>o&u|wIxzy]575 Y͢jsRljsxӤCD#36DkN1f)ѽDZ0TQ+7ac U !Z M*FϐՆS(K`5j.*FI#a0oe^/3{a]߆wf6\AI}uZ8n={?>/h 1.]:.;;CZxzeg=u̿&[XaKV-/mV@80ŌQH~-}/A=5:HPj/)CD|Uh,zepdNRx[GYq /0|JW |-Z l㙕_nsp 4#U˂O̒2P+(jjI#:  MQSKSiK*⹚K?{YX 6tX. u(R .4d,4~|I`$!qlTv>C@\ O nkk` 7}OpŊ!e?g$ FN{]K# 5lWε +!Ƀݥl?#vgX5k:0t7UmnO81x؟8Ay4ĬwZ5/]hT&i6RBGg|\̠!uov?csvh^=P8}Y6~Xsm[( 5X%X=x-KtA8ө/IYu`Gj~mI{ƏՈ2ĐT -WSg8<|ٗ;uu`D|5ЗrF<Y؊3˜7nbe. WFDԯꂌSYsm ytÔi0^i(pbDLF" Y|[ 7ژ(_g/wzְt'iw+_rp}*U0EIDDɤ;cJ`%uFlH,ve aMu5SCddi"Whl/9 ?g}=Sc ODpb# ( ٩4GX6j/JxbIࠋB)`6ܣ1Hw5 PHMDiɮ0$#JT܇ eo '[yKbtLe(IQ]ۋ!V7N3iFJ/n<˦ڱ G-xy!*A3Zvϲ6vcBǞ>z@%X_0,pOXŎ+4 MxkK|qB?G.xAJ:竞1nz9j}0ۍ`s^|)R_{IfLc!2ªiR-? k^d ьb9r%`=Kj21@[AU#;eHOe:$XZ𨀙i?wf !F"$OϮ7s 4|_t8<,}՛8S4B&N1Eq_t788&ko]e7@}'e1!C>`R0 ~.aNJ=0y+_*x: ZH\yʧ<~I1/a ,(fZ*py]q58yu mai`_U >hEH3oSBhLoe7IcSӁ}~u0aL#UN?s AX4ڶ h"xQ(5>#^jV%@_x{ަ.#^T]8$3ŪX/_]?YC?5%'Bt{udD9\HpqOī=)(0F0(0^ ;ϻ}Į̟eb \Q_wc6V _ddtQk5!2?8zu/3'N=oc7|㵼h<_dډU pd̏b8. /xS[vO8vCsUkP@H5|eG]zk!a/>,ݑ98Cps^/)G**>vHx6'1?W9g")ĩ3D.!?bثDjU҉Z(GeO8(Ѯpu6;c j M"YT㧞2qg38+|;aOnKq#N+r~_Rlk(_{+@;4P ŃuфĄď 喲k0k!e &XEn3mٷ-}X\joۗJ'/l.vC.Srr6p8. "F'Xsb]U sf9֡,*H"f;]8$xlkfffr(DE縎/ "ݗZ/xF~a]/ћm(RVF4  Q&FxZ%S4]zW$cۮsg*OU,G\͛F>b䗋\Wkg:ys=ң.sxSXnqل~1DE#).NKz*NX8It19r8\ XEF3,%p[Jϫ/x:drrĄxn %=nwAmP8.e>v7^QJzs:o2&)6#P͹_3f#TسU`񮏰@&vUKZ3!M8:7Jcw ".xX61C=_(,OW]:NܾPba%KH| W +@|]Q68v NpF$ZZ3˼?ht);A Iqa"^u?%jUAK((jmE/'# EAxʼnl/WW4Wh|-'s 1{TML,:8;Y Yj+8exxG<6ٮW38s`3ƣ=!Q(UU %22Pbc.g `"ƿc6Dz4͠@cڄ&9rsk [ :]7Ⲥ|L+jn ǚxBND-rdS8y]sT›"P ^ey wy}]VS Nu);d@M޿#*UG*hFԄ A]«3_ՉoԸ`"ݍvau)h~ۭ=BT&倫=p'<4xN~Hqc޼x~jZ~"2e&@sTMu[؈/w'N*7]^׎_v8CCAH搆DO:v/l39‭K&~?~sbTTrp,kxs)F,&Ӱ!\G1)E{y`dBn)i#vX8x^nϥ1vQs>0g$;ow(q|nZb=ݙH]9z'ń[,B0Y5Mo T1~nd*3NT;i+#Kk{cycۿ}޴k}/-fWB:NE'x($C=v{"XL9R|>~k%i`d/9OAd;H:,F#ɬQp1=Q`RET# `#K gpEj"?ܼa  F6f*5%^v64Z! 0>#$??A٥ t+ցa}exmc2sJe;%!U龌{WŨDLZd& ˒p3(,E3[n(5Mc]4>!c1,N|[Ok'=F)d9əC[]1h8 ȌzlZ ; hT6TAbuRz5ŸA/yn >`31j*L4g'"`/ᥛ}b{uG% ߨXRژB?oԷ@+6|?Ta+qVu1a;h&+{s ~~sN2G5e# 3^V#p \3{f(6D I>!A)dS|XLe'x;}Q=S_i<4;Ǿ wuW“a: H'5rl1J[}_GKB݋ƪ+`yoȞrq ܺuG"DM\2cVY/vC,- @  ].ڧ{vTj]6rJ4voppz7T~~6xh;w!FǶ(,]gpX{}_[k0` q5ڹ>Aa,cl-VD:HYe37NC߶d0u5K֓}oy`tg)jf1O4 {̗5J7xjVG78G/!}bVʆP&*`wUL{OT:[xH3/{٧Bw0z8*u)Qgt=z(ݲ=ۖ6RW&2C&s+M|dg%1XռJaR ".Im&x3ݍkefB>|)K ~yT7rm_f߫Z nV [QL#KJnfq҅׎E%[5T΅ #x2.$O7m6YrqLB+ G>9{XѢaT;l$ 17$h9$/W#5uU1$pq SZ ,M ,t(S qA::vH\%f䊴[f3 9%I&;8ĥߛ+7KSwICy Db"Hv!$HVKb܄4D\yP,H  iv?Ĥ>7'&c0>\ULe.IS挣 Wg-s(GrF\qt\ p*؝ ҭvYJu?̻Sg9"oz$9$nWa2\вq6zڟ5^De KX %_{Y0ۑnE|mMk&0g5}Plu,й[׮EδQsLJ,vF5kWsEg@.o_v:Qo^xRm1 &>B3a9Wg-gm :lcʀ lӦ 1񝢴RhO.wSWJi䛧 Be"^"Jh>.5w*\9!.GGs&sL@?F3hYD6%ϛ\[3]UG70r $:ì=+5LwTi !;<`2N3Z?9W`FbXh911ó@?VfzbۡuEl=zb5$FD%C +v/"*h|@G= ?"xyF== :sFJKf< N/Y:a?D0FNE{}wͺ,6 d]n+}'[Rf&NxW/.vSR8`90 8M۫60VW}+Xuƾ7[M,Y:6(#:!ɨ{yoT||4n;2+yS3?1;vwu>Iq,7s,vUh|k4Qz̴Y_{Yo-]8GnWY# nzg {XCG~FG) @N%@1nmp+?,ǐM ) jq0(2..g0^<9ft(h/Աbcec>u 8:C,F!^ fFY'n.+fbIOzQ~֯:CSFe1An;c$ֵmx)'3(к0$a4x>H$4؉2ѭE UZUqUɬlB\A!mmɔ-cH0O &H]9jTJ 5;ϏK b lmѷފQ 6Un P>s4箆2upa;<2ݪ׹c6Z#c[רx_Bֲ|PN;9~RYemeߖ ~e,w j꜎hE)٭9< X4Jau~_im䈦N1 Qkj[`%[e8+O,mzJQS {&{v[4#d&G)(ĸ։ڞuߨ%cO=Q@ےu=ɨ1Kb?cq{lxo9Pxc qz&s;oZ)bc^+U1NvX95b]cA\۞2}&ɈСl`lq׻fӼa60 CEFsECģC20(xrgDCM|DĕVLw!>}|#kR>5Vp 3.=^Ӏy-q.Tq@V#K~'K|c PS{e' +]7yKz )\=|M=F=7Z)~cI=n%Bx2! SÄ!g`Gi=鈌#/iSӉSڶ~n1 n~חqL.egL望GK>@РT}z7Lmq֙e( 6#U! 1Ŧjc7yU6utB>=L&mdϙ=NR7(2fT@:9]W rWܴʙ]H9(:SL:#z68~['}ŎgT~]{^skٺB!QAy=k/.Ay5:dPwj;'$|FVKRhdCOaI|"W}4BQvLB"~夎 OO9]+v;gp q(,8U؃U.>`.QX`|n'I(@kY$QI\z$̒~_J7(>mqInv X?>ƒ]ELW@UߞnipU)"i'GJܠ>O$~~C5vL 1rكr$Cris?C39ҍ_ۍI9?*0ɛfzf,Ro_C64dFl!5Psʵٳ7%z!xo=5UGF^'olۮۦvk_'< UԿC&nPMt6?փK>5ZI=jOcKZ(=JyfG.Kֵ)Ew8*7? ZLbzeC{x o$/ߜ;e\M +o{,6D'|nm@73l!}th(b9 BՌ<ڒ6$`rB3L! MǛojOe_6a.E^B|\MiRյ96Aw}׎>f^Bqmu ש_3%c @ŎhvWׂ?_HMxUJ~CA19@0|`/{o0ƛ*\@7]/hGa_d}ayϚ`:fnOT0k5V-BE 6ADNq n!q"{nՏtv$'c't>'iO:&) ڰܨGθ9>uy2̓( {zTrA8k:8{1~s0Ny&XaCD(vֺeG6AQj v`/]%S]ưSV'38˷rt{\f/zp&YGtWyy-b\߰\UK^hMNo? ~^ ׮'(, <T)~b#&OA:(;{BCd*{]MNPΗ`<)~B)1(;&<5r*8tzߒ%aXVo wbeW((T^BY׹ܾխ8Rl @ը GhßмЦI+%՞5WGDO5Cs |{\bD"UߘMG[g&8k@CGb$B$HS\:L3O^cH[ um/|SފQEN؏FݯdJu\ق0X d 坤}LOUpo>9?S<%HCXZDsO.RSaO#]kOL>3\vCHTnxP5/Xuvc]pW4}l ڱdd*N@CQN϶̢,B)F|`юcYRiCU?̱vl AtQ)UIf=I$7d:d1 u^sShES= Q] N噉;8p%ihpN;8^G{" <=/^1q* @PH5 ?Z1R߈ސu.)wuպ$yxDJ9GeD2ϟ;t94T7Ro( ]1E[<gX|EpW>Eik-w`qgQsS">亥XZ4ۧ8Rܷ)K#HĽ[ъDw7Т$/^r7|ˇv'e\;@QoxY˃JZ #.a"b)jqwjSfzhUF2D\DWצwwnFXQFMﱈsA{rNiB]?889Rҿp>`geٓ/2p揺31O/)%KDY'F'˷ݧ 5ό[ԬAT(MpbNtTѪn3}>3v.q߆Wz3YfַZpW5vg$uۭp&맃g$&0tq;ʩƫMpIdAc8 dst߇]'Ѳ<EN]t$,0%f$و7T_{;_fd!GǷdsy2j8h; x~2Chx]5j7")AL_V彫qr ;XQאqXW&'56$hw:Lra6*`uv΢d^D2U<'JvS2 O*n[o)Hƞ~zm$5! h~fjIY ؏xUF;3l>j"%3Çy3L|if' ^壿nMvL,Lo3Yߎ.`9*_%p0C4֯>*N1,Й2f5ӝ!!- $i4ͱT*Fr#52ƭQNTh~L6?1&7㪝눣Aj ,PbʖΎM'X,;ݭdM}I=EW$zmPH,Nh{+!kpa9\"}G.x`1nמz4?aYY\&o?RH!DNsu2PBf$d c~2GXzs[`6jP{ kżz ?eKÜɅ?uў'J'n;'Kɵ'ܞg]8z<}!K4xLP>sV`$ߛ4LK RT!8K)NII +#`0(௷ODEW`C^Pc2.O`S7#;Bf "pŖ8*=Vl2L sy0OFhzl2%QIhyC=eHP,CpJ9hbon1|Kg_y:xeoxlpJ(.鳵l?Ҧ Ꮺ|*㦒aO>TlG1e}RÓ ?S?<|9(o1HUɀW U~0(ob*n,A6?/3)>G?j8Xg?4kYqٓ~;tqs##qDG3E]aA_כoI%o-2' Շ3-RḠY-{uRU.oqyCyٵ`P̡s p(Axxw8oǼӮ{d.KE9fTa5l7j#eD)&TɤjCRF/8q|o[Z#ԿN _FiU+SQgSW4!8|ϱG7 5Kc/o9 $|.6uAʏSN,:;ԦX̮'*m"Xit:'{Ӱ+B(ui`mxȊ 0 T2Bb:BH.|bڡУ@"S}~O|_;H/Ǚ*|^7D)GDn:xjbk,ιf;>>ZlMI,]Ļ+U1Rm#.Vz]rW(4:;?8X]pcAȋsڂeا<ė5XKe_ C = )0Q6#]%:y/ ;MNi>4dBՕS+Bp[$|9X18> 1{vI ?om|ˎŮ\>d0ṶmJVrPR4Z|C: ,q?{[mε+8Fyւkt_zCu`bpz_-SЫ3PR B -L*_MzB39ESL,#$7~ЭÝv42W{qG.r%(2*&FYo c:WǃIvDLȆ!^em"<>F~kKo>r2StbAf+O#XKYg(9D3E]dpUȤEl u 3$%{haC"Κxmy*ZMв5h7<\E[/ҿREB ߱r4IIxKG樃A2H'vB1sBX+/*;C _;/=wd)"(sc:٭\ Qۗrb4<'ygޣGnJVtUOz%6sQy|o]?b?ݎ|YП-ķfE8*j\d^闃ov Zo@\d,{a``QDUe_=̶7٣R#๣ک&`Eue(df *GDVDzSGm-{S[yPb :]dLj툓+y=2.-{HR&)knP:j/!\h !Y;}m`ņK!QtW$. 掔aLqJm{Ux*f=})TxJB~B0_2xh~!MƤ4lQ }7Jft  z;rE{ $F˦M06&D>=`zֳVJBGqGܷ&eS Nx'ޙ;|er"p&pؗ˜y'_˟j"xO^G#= DrK?t<)v>ƺin?+OMB4nf#^:cB_ zF{%ڮ>mP﵅M#c c`LOUM7/g[8saQ黡=9Dj!+=ݿG6|&V޹MpQp/QZlh+2LUV{.@(V>=ЁX'vR Ipoev FR{b_ O.X4C1{jVaCM}o3]4ek - LS'k+bnx/ESڠ,eX@ǂ_;*ȭ |"Jj} =z nbd#v7oRc닰WZE|RMpM(\F> e{@VT",R!D&|{bQ9~dvpuPޱMW gzR_&/QT@'tXYb]kl#} yu Amu) lVJ(" 35^Bg?u#`P9 ޏ Ǹp!~79C;a!zg:V_ks<]p~Gf>b,)X;"0|z\}|x%hq%195hh@НF臒 Һ*@tʝ@Q-JBz-DnX$PoN4#+]m֊XT)P#X@-QP "Ls|N=5oaLݥ?KyIYZQ^ެҵ?N~NOX̓QM"^JͳekO% N̛0̬`w<I <)ke/*1$c2Mʏ7ʥ# n7(Ʋ;D\kJat[x0.I/L"s&8wU 1p?ċ]wB^R^"f-ǁG/J{%t5U%[wwhND#Rv gQ1(hH])xLpnzK7[6Tx)|].p;Jf!JOzEcLz{Y&bS xJ1Մmq䔆˾o&_Qz+ }9]>lA3gv>.?xЕ8aȳx!SDCp =˗> E*BxqA  JD%HH<~S!@HtNdBI}17@mLt^́ p%COPU8/P- KCBE]O{l x];JO>Xxj uʞ? aؘ(_u7?^o᝚? ӥ@@ ?ݏ}#IC%0s sߜ&6O$r_ Lpc+!?RӷsCwհm:Xg|l?M%GYY*nHfp2ay's@B1@\F +9` X! c9z%p 6)~ f1aF1C%Tu2y]P89?XOozEoL/@;wW;<_6Ewt9iwҞΨl E[WB']: .Վ W!oHOު^?o͑5𣄧/x@uS_9#BA) @1!U?}hxc HdlgK~4MB$DbfV-M!`Y+q ~9YS?.~*! Nnq '׆hF/쯣_'}}}:CkTIE >6)ٵpc#Z}m$>H(5~Y|.='GR>FQ"{,"Q'D:(H]}:צ1D*@ U$s5" 3oә~oWWWfjղ&(@.GXwNGr9A!w ~!a.AB[a먲(.{4IEZ*˜'N{#L27,X2ߞ;jΚ T -)l:<'~GU ZwAdMΩVCŮkݞEw>Gj_V36N`X=yը-p~ٺ] ^cwmz}@o\>V_9'k߮/ߓ|,x5Wmr\id6m[Q](U EJ08mknW;"35aݲ»Ih\̓@8x^#:Ak7}(:5.e?A0͞<=YȾyc4 "4tG,iPt]?~}d/ Vk| W|one݅\_(DIk]bhR5G8FC%h.J] t^k &8jfbsYe(Bь3WYKӵyeQn*'ƴh(8ajݓN``_: \Nn6y\?1oa0wkr)q|Gk=+96|謨6( NQa\t?C7 ,Q^ⱳ9G 1'9aM_l94хhmEC<*X-~؞2Ws-cG߿z*??;YX(62TB֫Wa7,q+S?ܼը?'ok%ކcnfsl:E]lxLMLJk(L*IQx_ D8 tM7KÆrv99;SfbF's~[|S_/GZ"זb*K<{i(69^׷Uۚ<>Nk/ǟt4TnARs0C">\9ս鎎.w3.g#vpB (r۠q݆Y鵧fOo nLcB1V{sJS)]5;_NFdD7Jrֳ}竟ͳ==6p06~7@: - lha>g:r$6l B3 &VG-UƘ ?O%_]B͉bꃅ"lQ dBO1N}jo^$'h_7h:lt# j->q柷`ڥ}zc<~sp|6{}B [ _Ӡ\zGNHN9 /,-:Z$#ǨrɓqAd;~3dNa67=5H@:nzn|I6aͰ<آR#0e.k7y?[Nsu' mTi@P(P6r=>M 6rzWB{  0 &ѿvH9p׮Ȉ)JO@O՜4u O.)Dl l#ȝ\ȹ*5?9cuqIpJLhnC'J.ˬ=̂mm <{=^Z'ПKu=?S%8k\ޚf  v~Gkpߦ5x-}\ǴNLtlu͖Jh UTeX@_ˤicz~ffر}$L^룾.C;T8AޭK5GqﲫT1bL =" [[{e٢i߅Ɨi5̡CV6)3d q-Bnߚ8pvd0vZݷѝ_h>!N2[xLAj\^__[`v00ſ !D>(Kqpe]ڧ6z?{JY)2!FjpCŹaOax}wռ>؎ˬ{AJf`N%UPR7f?#3JST6a,`_8Wz&G1DpZ+vg?ҷ9QmH0Эq noyE;E:,m Cox(;a vŌ4xdt4ATvHP-iP7j?6yJ88#GDdTne5.vO' zZZ oM߆I:Q,FMyY`%m/٬կ6uUP qX_7гܳEG4 ;PTgyd*F"#oYcRXʃ;qVF^v 7 I^b=|ܯ .߳LVf ~}ZumWksTW6Ջp{2}U<ܰH=Na|]"3"{}xr(%G/KUCdy&0m͔!NӬֱڼH;U Z0쎚=i< !KeR!urp[]#K"a7b)1.i&WXimgfucjv2RzU:L+s !^KZjktV$=mnZ4c6wyvktDHp+KUWm#lյYA|e_ s_I=5JvsE,4թL bM7gq7]sbH5֥DHZV6LFA(|me i]S43M\ZV-}2Rj^'b3b%gp{ v}0tQF-!~-+G߻s lngWh(dU e(3V|Z?}t>˲1(OsՀ,׹8r>V1¹(ileިuCؚ}p C aџl6[ 3UM\L "J悯d~u01AQڹsj+|W([tE|%PC59_ޣ:g]p)wYZd&ݙPhی]@++cJf8Aw$@|iw^{ⳁ ԩ!iFrK۶>Bqv@OD8eB976s6J2*9KݫpA‹^j.h?*:5sCyfmOnDlzAI:NM_ 'رQCj=T,Zg6zd=d4!+cSѓzgݣ)զ_fuWm;b jjNTU A:P,6 ;zNwZQl\̳[&Wm) Ά|3'kn/HN:( ~;CmxZ*'A(DulM><+;l&;sT}|"HN E›]śYj@ 2t ?qB @LoU`tU>-= Y$ܙw@;:. [.(zTd|2{!fW3^_AUns3ZR/3UtmvfdA,6l_;Vwt@9̆AL\׾P{bZ]O-ȄqzWELߵž13toxãfWΒ|U*z +3C}ݚ¦7?m  w{rjOǗtq__Ϛ]9iYƉ(n 𗣫ЎCǩ-o#F&l[Y{q(ߗ$ q(V/ o2v`>Hj2|uksޏ{EWQo2l}ՏRm|O;y0ϷRemb\@gD0׶p[˝a͢>1);4<7,+CR YJjW! LCn]4A3&CAw% VLRAisϒ?u8V5R7 O2=xM|P,ggzjpB'g藸LlX prADMnﯝCp$u lZݖ"oDվCp??M{?ֹp~] ϘrY$Unbku0H@`YaomL$ ql0Ii9FΉ-RF37NY۷N9蒃E?EGrxOV H)c!MiE f:@ eւ`X>K0Q7R< d+E\?RuٓN> ق妆~.2IvGƅ?K bQ3>p l`F淚h14CX5$qnf*R@FV, L8ƾ#ިȋP=d?}__7n_>?Zϝk^ '(zwhW|ax_}^$~{}?gG[` }~޻p =$:Ām˂I.˰,Ed&,x0$HҬm`Vk` (xkhD7/:v;H2mwnn"N@pT}?$0& RH^ʎ(dkkW,- nΒ]eXrX|Is=OwAGifVWV%0u' W*W f .q"r%Л^QQ'T2XNyIt@ &k]Եt)r;]:J'E{-ν퍙VX{V;cYM-*H5`ЌqUPaQ ͆jӾ5`ʛc׊J2#?BcLt 8c9iZ':WZƋHPj|ЈNrxFQ[\$ҘI,v!*N}&ED5MRe*t3kpqȉJl>-;(|qŒ:.Yx=^ZWK7YiuKm8ӊ^8e߿%m& c'2LVb+]pv$QI*1+u74mEްˉ߭绔ޗly{c.>dR$P(HӍԁT'VQRk[#eCÓO)6tsg'OxRd,@[ j _x׸>$7nYqOR&zj-[ysҿWyjo<;bv}7Wԏuy+n</|z{Yvn/7@]մ:ou6bAo[ q}|ϫRxk_4਩U)mV`q>50wi* 0k׺h1 r|Uns~v +055!`\ U7; 與g+#/궟 S.:6Z/}51~0td3*=o|>2k'.wTzq8泍YO8-o[Tط'J7>,!WKp=\ O6'fۣ?cd7Rگ1 W9fhєݳgyM+(jy9HoKC풇J ˪GP2N"#E]6='5[фJE=4pa7EO~ϒQe_b?zKS{̟#ջTBx2s|/>\P>Ԇ9}䢊HsbŋmkX˓i֖=I>(>h;[[wd#[5@"Ԗa)A{;]`~Mzz5 _/tx]DD Y*BXH.Bzc1ڳA?Kap'02D}taypn[˯ؖ\$JX!uzΟO(WA!xE0n?+ Z$?s ;hF_u1A4ty;s:r5Xa-o0VV4+$D]sܹC~gS`PL" `{}FXg$pW;oP=ő?xyVk:fz{ T*-B"-$BPf⣬8p\67]b"-wPrDڡ9K:bH? nVݽ5nNFUcϖs7P$אعf ^Vzq\;&[wCav{zOK'ʊU^07v}rW;(T(A ۫:JvTk{*7e e((y2m9 PPA<[5 nW"!e)բ(t< v }w6T K\ exu"sS㽇<][JȁQw.Ni}O@[D6^]=PuAvs=2r\ЕD[FKDn] am-GJﳩ(qN/FwvrrϫOXZZagܙV7 31G*VH~UGu/a#2CXXZ㾞rt۔t;ɪEm8|v&kľVn8 <=p7w CPwjBH(" ⫔=Cމ|g.Zt"(̑c~t2Y2,p@5p{3z""QBI%N;:ݗ֝/Īr@:l;T^{[_QY yxB~㭭;xVlՑe;^`r*0t.s\cK9<_+Ph8ljsb/uUr`C|pY=q;|jBO_J,TYQZ$PN^'^ܧ|L /lzU_y})׈v:z&& " P@S~>`!--ye! {s,u_جWmg=i%iV^,, dYk5) `ُK^z_1z3ܐA;j3.9=6뮾s}3pGmXL$z tgwOpˑULvkmꏨ _ڶ*՗;Yq؛s8X}k)>EPJˆvvԠޓD}IE6Wb/ ݟ;hjg9/VQw! $~5m^S+M?o50Gnbލ MTzz&ӡӎbN'/^1fcGY:oeݍM8j,uDmo| \z;sٺ!{fZEB%i"?@ T"YCSTKIEf 4!q% !MPr^X$xb(J %N pI^ uQ%U+YY,A 0Jyߩ)3.&/P5XwoWpkX|: !T2LwbR&bZ2<<5Xs0CQFZ3^J|۷׫o Vؾ5ZA+#ݧid'ɹ=0绍h(4 E '`d|ЫGr-<nj㟛`!N،6(P6X5 80D*{1;.B&QD:hlϰ>[Ea`><7_ꪄ/ϙXqp֜wwrvj?Yo TEucˑ=kysz5/2Ii8oƀI$FK>9.4#!}g,e@3Ji"&!I4PJƜJGDmD H#,i7c>5WS4T. F@Cs76Z_bk²$Ld K dGW(Ǵyg>]> t3T?1lʌ1*Nt9pFT׏sG]}U:BKΔZ’# ;'#iEZ]#c]'@L%;.VfǛ{Cy5̷&?HxnvV_b%~jIA^vif:+$m))mL(Рa)e6g.&Trgm26r 9\Ŋyt$е%Ưەʃ( pm>ʩrI2usq$b* x6at4hum6і(&]) 9pI Cz7NR{#Dꆻg˳ճ*WLyee|C^?@6\U9=i}jY슒yQz@mU501Aʖ?1Oc#=MohŮ?s0l-~ʬmכ\?O¶JN7S>}WN}3e?]һŬfg/ο7GwW7B~M?(/*DW*DX*@A"f&DN2_ʧ^9`eD`5}_{1: iHjݝoYuD-G喰ډdq!:WΙ8^ń(ZKi@H? P~ l!ܨQ+D\ ;eU<3xMny|n`_z,irQE2 _&ѥ.ƹ}J4~dOҔ*}%ٌYG9EPcKrκM8BWȴ1SjXHtEZ@[NL\3CVQϵxm>lW'Y JPH\XPa>wXS'k_V=\REs8PAp9FFQA+?/Ajq!B+(w`G oo{*ܐ*ǴQò>-\2(,ұ:. CFQ>e ]x{6](SLGܪ2`0q""#+|A`͛@rP|4 iF唩hh:d̗kjr;W+FImDZ4=p@+KxSY@pP #\.ξ`mY⊋8yή;]z*q!6u%^ E"x߸?P_[(DsMbm:`_WGϏ֝q+lsp@ ~vW#gNq~ɨqbyxq4_toNB}-8|î]\"FNwC{d Ȇ5zOՑ\:w(FGW#A`} YVus|V)bS!&Bj 5y::03ٺk"A$BQF߶\ I0.~>d<\fӓETBKƖv`]YkdX(Trip28F DIn\$0RzFv˜&*30ZӔ ~-aR,#mXxGGSk_ͺ?t;+jmY/O_.64P!@u^um煊*fŽY>ZIbj@_}ͺESHiZSqwz:V~-D! 0D6ȢB.l/1/3q(́-Dϥv;s雭I{FjK~m⒨'.fSgOkwCDYe[}Q_f7,|ގ B.,)ѦqwBXj3m