summaryrefslogtreecommitdiff
path: root/drivers/scsi/mvsas
diff options
context:
space:
mode:
authorBaoyou Xie <baoyou.xie@linaro.org>2016-09-25 13:48:50 +0800
committerMartin K. Petersen <martin.petersen@oracle.com>2016-09-26 21:15:55 -0400
commit14bf41dcef651c13911a1715e83220732a3a4071 (patch)
treef80df85657d3c90298864856dae3b8e9eecfc672 /drivers/scsi/mvsas
parent7efa59e1608255a478dd62fc0e2e39f2563c05c2 (diff)
downloadlinux-14bf41dcef651c13911a1715e83220732a3a4071.tar.gz
linux-14bf41dcef651c13911a1715e83220732a3a4071.tar.bz2
linux-14bf41dcef651c13911a1715e83220732a3a4071.zip
scsi: mvsas: Mark symbols static where possible
We get a few warnings when building kernel with W=1: drivers/scsi/mvsas/mv_sas.c:77:18: warning: no previous prototype for 'mvs_find_dev_mvi' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_sas.c:105:5: warning: no previous prototype for 'mvs_find_dev_phyno' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_sas.c:1161:20: warning: no previous prototype for 'mvs_alloc_dev' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_sas.c:1178:6: warning: no previous prototype for 'mvs_free_dev' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_sas.c:1188:5: warning: no previous prototype for 'mvs_dev_found_notify' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_sas.c:1244:6: warning: no previous prototype for 'mvs_dev_gone_notify' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_sas.c:1614:6: warning: no previous prototype for 'mvs_set_sense' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_sas.c:1653:6: warning: no previous prototype for 'mvs_fill_ssp_resp_iu' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_64xx.c:139:6: warning: no previous prototype for 'mvs_64xx_clear_srs_irq' [-Wmissing-prototypes] drivers/scsi/mvsas/mv_64xx.c:566:6: warning: no previous prototype for 'mvs_64xx_make_prd' [-Wmissing-prototypes] .... In fact, these functions are only used in the file in which they are declared and don't need a declaration, but can be made static. So this patch marks these functions with 'static'. Signed-off-by: Baoyou Xie <baoyou.xie@linaro.org> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/mvsas')
-rw-r--r--drivers/scsi/mvsas/mv_64xx.c19
-rw-r--r--drivers/scsi/mvsas/mv_94xx.c41
-rw-r--r--drivers/scsi/mvsas/mv_sas.c16
3 files changed, 39 insertions, 37 deletions
diff --git a/drivers/scsi/mvsas/mv_64xx.c b/drivers/scsi/mvsas/mv_64xx.c
index 8bb06995adfb..b757d389e32f 100644
--- a/drivers/scsi/mvsas/mv_64xx.c
+++ b/drivers/scsi/mvsas/mv_64xx.c
@@ -136,7 +136,8 @@ static void mvs_64xx_phy_reset(struct mvs_info *mvi, u32 phy_id, int hard)
}
}
-void mvs_64xx_clear_srs_irq(struct mvs_info *mvi, u8 reg_set, u8 clear_all)
+static void
+mvs_64xx_clear_srs_irq(struct mvs_info *mvi, u8 reg_set, u8 clear_all)
{
void __iomem *regs = mvi->regs;
u32 tmp;
@@ -563,7 +564,7 @@ static u8 mvs_64xx_assign_reg_set(struct mvs_info *mvi, u8 *tfs)
return MVS_ID_NOT_MAPPED;
}
-void mvs_64xx_make_prd(struct scatterlist *scatter, int nr, void *prd)
+static void mvs_64xx_make_prd(struct scatterlist *scatter, int nr, void *prd)
{
int i;
struct scatterlist *sg;
@@ -633,7 +634,7 @@ static void mvs_64xx_phy_work_around(struct mvs_info *mvi, int i)
mvs_write_port_vsr_data(mvi, i, tmp);
}
-void mvs_64xx_phy_set_link_rate(struct mvs_info *mvi, u32 phy_id,
+static void mvs_64xx_phy_set_link_rate(struct mvs_info *mvi, u32 phy_id,
struct sas_phy_linkrates *rates)
{
u32 lrmin = 0, lrmax = 0;
@@ -668,20 +669,20 @@ static void mvs_64xx_clear_active_cmds(struct mvs_info *mvi)
}
-u32 mvs_64xx_spi_read_data(struct mvs_info *mvi)
+static u32 mvs_64xx_spi_read_data(struct mvs_info *mvi)
{
void __iomem *regs = mvi->regs_ex;
return ior32(SPI_DATA_REG_64XX);
}
-void mvs_64xx_spi_write_data(struct mvs_info *mvi, u32 data)
+static void mvs_64xx_spi_write_data(struct mvs_info *mvi, u32 data)
{
void __iomem *regs = mvi->regs_ex;
iow32(SPI_DATA_REG_64XX, data);
}
-int mvs_64xx_spi_buildcmd(struct mvs_info *mvi,
+static int mvs_64xx_spi_buildcmd(struct mvs_info *mvi,
u32 *dwCmd,
u8 cmd,
u8 read,
@@ -705,7 +706,7 @@ int mvs_64xx_spi_buildcmd(struct mvs_info *mvi,
}
-int mvs_64xx_spi_issuecmd(struct mvs_info *mvi, u32 cmd)
+static int mvs_64xx_spi_issuecmd(struct mvs_info *mvi, u32 cmd)
{
void __iomem *regs = mvi->regs_ex;
int retry;
@@ -720,7 +721,7 @@ int mvs_64xx_spi_issuecmd(struct mvs_info *mvi, u32 cmd)
return 0;
}
-int mvs_64xx_spi_waitdataready(struct mvs_info *mvi, u32 timeout)
+static int mvs_64xx_spi_waitdataready(struct mvs_info *mvi, u32 timeout)
{
void __iomem *regs = mvi->regs_ex;
u32 i, dwTmp;
@@ -735,7 +736,7 @@ int mvs_64xx_spi_waitdataready(struct mvs_info *mvi, u32 timeout)
return -1;
}
-void mvs_64xx_fix_dma(struct mvs_info *mvi, u32 phy_mask,
+static void mvs_64xx_fix_dma(struct mvs_info *mvi, u32 phy_mask,
int buf_len, int from, void *prd)
{
int i;
diff --git a/drivers/scsi/mvsas/mv_94xx.c b/drivers/scsi/mvsas/mv_94xx.c
index f6fc4a705924..4c57d9abce7b 100644
--- a/drivers/scsi/mvsas/mv_94xx.c
+++ b/drivers/scsi/mvsas/mv_94xx.c
@@ -48,8 +48,8 @@ static void mvs_94xx_detect_porttype(struct mvs_info *mvi, int i)
}
}
-void set_phy_tuning(struct mvs_info *mvi, int phy_id,
- struct phy_tuning phy_tuning)
+static void set_phy_tuning(struct mvs_info *mvi, int phy_id,
+ struct phy_tuning phy_tuning)
{
u32 tmp, setting_0 = 0, setting_1 = 0;
u8 i;
@@ -110,8 +110,8 @@ void set_phy_tuning(struct mvs_info *mvi, int phy_id,
}
}
-void set_phy_ffe_tuning(struct mvs_info *mvi, int phy_id,
- struct ffe_control ffe)
+static void set_phy_ffe_tuning(struct mvs_info *mvi, int phy_id,
+ struct ffe_control ffe)
{
u32 tmp;
@@ -177,7 +177,7 @@ void set_phy_ffe_tuning(struct mvs_info *mvi, int phy_id,
}
/*Notice: this function must be called when phy is disabled*/
-void set_phy_rate(struct mvs_info *mvi, int phy_id, u8 rate)
+static void set_phy_rate(struct mvs_info *mvi, int phy_id, u8 rate)
{
union reg_phy_cfg phy_cfg, phy_cfg_tmp;
mvs_write_port_vsr_addr(mvi, phy_id, VSR_PHY_MODE2);
@@ -679,7 +679,8 @@ static void mvs_94xx_command_active(struct mvs_info *mvi, u32 slot_idx)
}
}
-void mvs_94xx_clear_srs_irq(struct mvs_info *mvi, u8 reg_set, u8 clear_all)
+static void
+mvs_94xx_clear_srs_irq(struct mvs_info *mvi, u8 reg_set, u8 clear_all)
{
void __iomem *regs = mvi->regs;
u32 tmp;
@@ -906,8 +907,8 @@ static void mvs_94xx_fix_phy_info(struct mvs_info *mvi, int i,
}
-void mvs_94xx_phy_set_link_rate(struct mvs_info *mvi, u32 phy_id,
- struct sas_phy_linkrates *rates)
+static void mvs_94xx_phy_set_link_rate(struct mvs_info *mvi, u32 phy_id,
+ struct sas_phy_linkrates *rates)
{
u32 lrmax = 0;
u32 tmp;
@@ -936,25 +937,25 @@ static void mvs_94xx_clear_active_cmds(struct mvs_info *mvi)
}
-u32 mvs_94xx_spi_read_data(struct mvs_info *mvi)
+static u32 mvs_94xx_spi_read_data(struct mvs_info *mvi)
{
void __iomem *regs = mvi->regs_ex - 0x10200;
return mr32(SPI_RD_DATA_REG_94XX);
}
-void mvs_94xx_spi_write_data(struct mvs_info *mvi, u32 data)
+static void mvs_94xx_spi_write_data(struct mvs_info *mvi, u32 data)
{
void __iomem *regs = mvi->regs_ex - 0x10200;
mw32(SPI_RD_DATA_REG_94XX, data);
}
-int mvs_94xx_spi_buildcmd(struct mvs_info *mvi,
- u32 *dwCmd,
- u8 cmd,
- u8 read,
- u8 length,
- u32 addr
+static int mvs_94xx_spi_buildcmd(struct mvs_info *mvi,
+ u32 *dwCmd,
+ u8 cmd,
+ u8 read,
+ u8 length,
+ u32 addr
)
{
void __iomem *regs = mvi->regs_ex - 0x10200;
@@ -974,7 +975,7 @@ int mvs_94xx_spi_buildcmd(struct mvs_info *mvi,
}
-int mvs_94xx_spi_issuecmd(struct mvs_info *mvi, u32 cmd)
+static int mvs_94xx_spi_issuecmd(struct mvs_info *mvi, u32 cmd)
{
void __iomem *regs = mvi->regs_ex - 0x10200;
mw32(SPI_CTRL_REG_94XX, cmd | SPI_CTRL_SpiStart_94XX);
@@ -982,7 +983,7 @@ int mvs_94xx_spi_issuecmd(struct mvs_info *mvi, u32 cmd)
return 0;
}
-int mvs_94xx_spi_waitdataready(struct mvs_info *mvi, u32 timeout)
+static int mvs_94xx_spi_waitdataready(struct mvs_info *mvi, u32 timeout)
{
void __iomem *regs = mvi->regs_ex - 0x10200;
u32 i, dwTmp;
@@ -997,8 +998,8 @@ int mvs_94xx_spi_waitdataready(struct mvs_info *mvi, u32 timeout)
return -1;
}
-void mvs_94xx_fix_dma(struct mvs_info *mvi, u32 phy_mask,
- int buf_len, int from, void *prd)
+static void mvs_94xx_fix_dma(struct mvs_info *mvi, u32 phy_mask,
+ int buf_len, int from, void *prd)
{
int i;
struct mvs_prd *buf_prd = prd;
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index 5b9fcff6cd94..86eb19902bac 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -74,7 +74,7 @@ void mvs_tag_init(struct mvs_info *mvi)
mvs_tag_clear(mvi, i);
}
-struct mvs_info *mvs_find_dev_mvi(struct domain_device *dev)
+static struct mvs_info *mvs_find_dev_mvi(struct domain_device *dev)
{
unsigned long i = 0, j = 0, hi = 0;
struct sas_ha_struct *sha = dev->port->ha;
@@ -102,7 +102,7 @@ struct mvs_info *mvs_find_dev_mvi(struct domain_device *dev)
}
-int mvs_find_dev_phyno(struct domain_device *dev, int *phyno)
+static int mvs_find_dev_phyno(struct domain_device *dev, int *phyno)
{
unsigned long i = 0, j = 0, n = 0, num = 0;
struct mvs_device *mvi_dev = (struct mvs_device *)dev->lldd_dev;
@@ -1158,7 +1158,7 @@ void mvs_port_deformed(struct asd_sas_phy *sas_phy)
mvs_port_notify_deformed(sas_phy, 1);
}
-struct mvs_device *mvs_alloc_dev(struct mvs_info *mvi)
+static struct mvs_device *mvs_alloc_dev(struct mvs_info *mvi)
{
u32 dev;
for (dev = 0; dev < MVS_MAX_DEVICES; dev++) {
@@ -1175,7 +1175,7 @@ struct mvs_device *mvs_alloc_dev(struct mvs_info *mvi)
return NULL;
}
-void mvs_free_dev(struct mvs_device *mvi_dev)
+static void mvs_free_dev(struct mvs_device *mvi_dev)
{
u32 id = mvi_dev->device_id;
memset(mvi_dev, 0, sizeof(*mvi_dev));
@@ -1185,7 +1185,7 @@ void mvs_free_dev(struct mvs_device *mvi_dev)
mvi_dev->taskfileset = MVS_ID_NOT_MAPPED;
}
-int mvs_dev_found_notify(struct domain_device *dev, int lock)
+static int mvs_dev_found_notify(struct domain_device *dev, int lock)
{
unsigned long flags = 0;
int res = 0;
@@ -1241,7 +1241,7 @@ int mvs_dev_found(struct domain_device *dev)
return mvs_dev_found_notify(dev, 1);
}
-void mvs_dev_gone_notify(struct domain_device *dev)
+static void mvs_dev_gone_notify(struct domain_device *dev)
{
unsigned long flags = 0;
struct mvs_device *mvi_dev = dev->lldd_dev;
@@ -1611,7 +1611,7 @@ static int mvs_sata_done(struct mvs_info *mvi, struct sas_task *task,
return stat;
}
-void mvs_set_sense(u8 *buffer, int len, int d_sense,
+static void mvs_set_sense(u8 *buffer, int len, int d_sense,
int key, int asc, int ascq)
{
memset(buffer, 0, len);
@@ -1650,7 +1650,7 @@ void mvs_set_sense(u8 *buffer, int len, int d_sense,
return;
}
-void mvs_fill_ssp_resp_iu(struct ssp_response_iu *iu,
+static void mvs_fill_ssp_resp_iu(struct ssp_response_iu *iu,
u8 key, u8 asc, u8 asc_q)
{
iu->datapres = 2;
g?96Č8:l\ۇD e;Ӂ\-~A/<^#E{煮6?~`kzQj>"ȸN0#d>$p14Kxg/q T=VRS]mYjxyݶoPjY` e$=&k &6LLcsSM[UhRXw.55k?t)ȍ@R֝ɏ @'{ eSKwQv_xV~Ƈ+vQ$10Aha=(ͮl 6.!{C.%J*%5nvq*EnbJ0TpbZmz k|A ?!#[x!Ĩ M^,Cx,> FaVtpCȄ9+ē  Fϊp7z^vhcG *g޾.PLSU|$!(hWf'O/.W?K w<8a+|-;(jʼn ԏ6s7qGN{0q&?'5к&2V]9vAPA[agND-^&<1Z0&s> QYL4ҙ49bߍ_seC^[<}EQ6qs˫,;)`]V= {ϸ-aRŗ5m}fekO!.,zZ5!`<$% q7YkͻV\5 #W^.\ $5Fص$>5 pTiGM7WsOr&Q6n14+$Ӹi,wVU!DG\㋯W^ZwwG^ehҢv) U308]0rfKP1 mwϥΥaڬ`QwMS̩ ڲ ^ ~X)Zy}1RaQ5BuV|on۫ᯒ0M֫9 xVY4ΐ!AjV[8lF T/9TPV~kC:YnPnBؾ:|F;aUT;nn#̆y-f,ݷW+zb8(Qp-o=6YDW,qx@qy\c- H|k/N07ۚa!a rpV,[a1=F <Ua*3[&H?0a*KS3 ,(EPh>RY!^ABl#B 3-*!S6pg<e0(@(r7*0W6+)P/sctEj9EUp+-:,3"q{6پhq'=D!yӶK!=RO 5JG.pa2H,; ҤȬd5gfL0 ĪlHR9;QB>k|B X+9'!ѸvŶV8z)ؗ-@_P?|GOm 78LF|a%x|Rr"隕l?v+9`7MjcK>_ArVÒu=@%_}2|r0J+z`4ۈ p̥u*%6/\e Q6L [3` Pb`͙ni"LxY:H8(cZgA}D0d[!kxj2铞V-G?`l]V.m@ץQ,6Iۇsip$fq3J..3 q@TG%Ϝ8 )(i׿LM-Z%/,@JD#?[>c<%n]W< - h˔O 0m}/xY?-5߱'Ga['H1~gSh|m"A)Wm"K;HDStpskYS4&uIZ}t!UQnRG,!{ 0,Dsp<]dkv8%9E/pfPͪ:{DaO@+Ntq]M1ڃ5zunHg2r8d_M&E?Ӣ. J]<9So}_GLMk XmuT,L\:6_Pehа ~4;(Č Q -@qW^ViOu$$QjHrM}>[wpzkڅVt5B JpREԀ.tYҳ)6Yو`[3c(6>#d8w$7FϦu+YHܪWt*-ߚrpљy'(-+ Q#)?aJ˻ v>F,aS)R/J"zo][B5!6 5-Kdn_. K~9$ȷ'vt6J"Nwӄ@ `wpsEFx*S23/h,?тijGzd[-\7uh|Bј裦9D>--ݎo螃UD(K3b, ]yQm Q=ՆCV"{\c|‘gǕon57bJ^T#J\<ԧQ3,ǎ ÒtǪRct+Q\ۇ Xap {bߙ1ȅ8Kw\6vJo\13\0%$ҴM 4^-X|^x0RgFn)GTJuۧJZN)M¬wj9ч8S\kJaBZ޻Eֱ4,Ѳ ETMKs^fBzO_"8:tAnGY?Kq8J? 1?l*n} 92Bv߱r3w?sZW-Ͷ3nZɅkەojl+Dy@-@?cM%ܞԴkSߣK,$3}jI"Lᔞ KYi(<_,h%pm~u fv\*CׄN^3b[\>n{t_ s ~:J7aSz3`cĶk턅C&Kt?뜴#?sUWv{e󶵻8, HM Mr3RH,SAo˓bۆcN|Rx~_Ӟ?<9[o%\H/8<0=B*D'@Rɮ_B6Gz oN&g]H~ =#ۍx"ǡ:M\ |~u?)x+"Y=b!Ab|{7!a(,"WZ M/ #l^AZ:?3ˡ0}, l)C2=Qqg|`w2Gz/fOKasJ]*fj=7/ l[ѕ\AV}xJCpvl![g/HYDe 84#r4oN.}O_99Fm5w@>dtoӥJQ$W[9T#%9 |B7%# ve.7W8h4IަIBp֌D-q~}ٯ__e*9E6.|rpq *%s3(!;\{xy{tęb炩DKN@R%{u{hag9=791v?vvR:+mЇďrpRfd^]#[wMsn p5]  2MbkEDOG#c|{`D,P뿈X5 %1ON><#Tmq(؆RLDN 1-LHyٻ)aVE9F/݅:R8MWfg:Kʹ !KhV T_hOƙd*<~E}ƾ uT-Y8@J[2Pc"#hP0v0^n&6Re`3Ib@z gY@-\l.Dei'ztjP 9*0ꌎ/4eU;Q#򏐋B=>c̀% 17&݊5(D#_FkXJ}+E؉9 3gfr|">ZK H8CXT#Er"xG-j9'\U9HHS </}^(,FVv\ZĩK)UX<̧´lɇs+ZMX9a5^/uJ'KX/T!kᬈ.k?1 J.Qé{1ٴ s^m4`Cp=NJ]({w !6Ni PޛbDeC ەmS{V) $@3d͓^>5V401{o2!=& \Y*뙯1P9ދ`zv9@[E].8f;u+yHH4U߇pHKYP6Y$JMx"GEcA5~0GŃ ) !k'KLwBnP!)`HBE\hM*wbQLl(R"srOyQ]UC zz 9Ȩ}JL5 52+#Ds( enaʩS9rQ4xx-ZK"(4KcZc;Ш4SOJj{{zRr]]7D&HR\x8_iy2wMKz.m'. y|s}Le <6(TL!:sOw db- ZpS3 dj(> f%|. ՗2*Gj3Gtݩ\٦0Z82 {'`^!t|q R)n~t>6>@Թ  VNTd:Z xwz_ 8c((,QB}S+VU@`LÇ^vWN)@G>zЛDr[1f*#gob&45~q[i;Uh-P:g<.H=m5z-7 DHbfP?gȿ^&\t- W/8T1gh >pYs!r"sLlJ`xek枽axYMƾE-@r1ZDErZ8Xi@ b@g ip@`-͋U;UTڄ3D:jnF/W_M\¸%C]3,¤Hass|ZNdW=َ!1NGOsULQxSUwA`B<™eL"o'8Ňep}v0 X |}V<0c1VKeqpB5* $G& 5:~S- ~.04;U^깾D.y *1uSl`ola+4k.fGl"twNaϰt952 \\K E],x͂wTVŒTOY*8dG@+KU6ۖ<X2`LkP͇[][Nqyc-+^ (`QL{Vy&gTM~zDPSוM'nps#6@"# &aƱ=3;02ܬ2Mlc̀!#.|eM0 4EQV>^-[ `h'Տ0&[zQ@`):M5 =@Q#\[f>QؠwL1Q | 8|t1h"YcKf#c۶?038 "ǖŸz jgϳxSSboIBF#ioOyY lzv{uG(}؟S݈xU9h WF 6;w]Aaq3Z YT!{(HrsLv ;-r$Y1ŃܯWW=ɔ/kuBEWU`]"}+`kcU87'C_kׁEw Qq=*'Jѥ`xG a*yij4R 2e W%43}`q~-g~$5Ջ{60|˾/a$4Djx绫ѽF 4ӎ1E9!˾.&r!,$H) 2r9mp"gZM!V|UJ3v&ABCxyp` K&@sZ͏5SgxFHZX/X;h^= "RfȞ?: 7_A/m"%%l'»##}"-㢡rB??L7~"U1 RVk ܲjW|{ ap /ա9k2G4!> S[+`ڀPD8ƸhEk@ЗL<^~t%82!wt1fCk ďr'a%B^dwH7o橮uⶹ 8?Т8SB_QL ܥ9w ^CC=@}nrPDQPJ_&(,$U`4 `) EoQzC b!<܇M?WB5x@֔:)Y qQ~u-QHz?ƐHzg[Qn<݊ ?aywO8#K#OZ\ac9A|ka*Ӷ* !>0f;"2Dqo.~f }CR02k";Dr bSU"%yX$0/ H*o1 *(K}N>3cRBѱ>b x595b̕{&]Wll?:s[Xǎ*V~CU?@OdY !O/=KhO|AAu`RKlBި:OArWjGQD; jzX˲9yA5p2[C̆:"0eb;at3͓U>R}b4@ʧKypƋ9 &l7:LA5aD"G3z4iל~Xpk=?䄁,c3&]D 4`  {}l[DՆ^"y~^Eƛoi $AU"=yOҨAFVw$>* zk-(0qy6N*:S~Pi%/1׍: +iJ[Gbf _as{'l藺!B!Bz%+uK8md *s+<6Mm0R#"hr|G>+mGzNF`gs?$4:VDXR`QȩlpAƘRҊI9Ldj<蚋Կs ku۽ҳ&ҕ;bR:UL.񨔬{CЯd}18^(8ݡah=#]EyGx "d)o;=GH$ dO꣠!]h8d柠F#Ok"jJcˮ$jشO%m_%A*%3L@Ѯ{ \cȺlѾεg5dT ~bot6%`^泷rG KQ]~H|~ÉqӷCsXb2b̠z2my-g_](BTsȌ /)BcUd^$, 48*t cZ~/;vKecwl Ou^FґP^{JŔMrIXPt  QNT(R|_*FI"&3dy_yĒq͚;=1E[%O!k%tHqHqw[ӳys sKɓPCeP"d >5qó"nRNR5MTPVyE4` )vs1R[ U}qN\ Nb٘1U(hÌCQLuSaqC-~Y. /76ݼM?c|s헯},$ /*.tLo0 Lu'WĬt"Ný$Ѓ^d}AaNc6N*{5p͇vi\LNNi)QKC@x_{? % $kW xEPD̈LBAp\%=_(G/2S'ha^X)lQJx]Q-(!8wעw~w/SOCO<=b7E am?l/Yb(m/s)+`~HCRش >pC0aĢw0|VUX5}nc u@ۭԬ 艁#u@(N5}^ΑXK{QA;D.)QQ$CL.wO84Շziw _$vFc9~} U:t;a* _S?ͷλ˅uv֊?y>1:Pܔ.l"Wl 5RT! kvuH ).B + <YU*P'.s%:ݢ|sxhđ2EKtl?$os @F$,;Z`1 0saKGRVY׺T赚69x) j$ΞJbXAacw1D3~N]N ҴmXd8dV14#y N :p\&BM޻O27V<4XOcEJGffT. cl}'dG0tWYzGj0?GN"6.A,AfˠME+9.ĭX hLY>?!:M4 ߅yWcC3|caOn |f|>DZN%0t SE7}]c? BBa97 n#] |HQkt G6!t=x=M9܍c|,vӉHDV2!JAu,xJv"2t7?cFKttx1# V2PQ Cv\)ߺ9ر>ȍ!PpKrG 6|Pg᤭d!p ohN /j(-:¾I|!^^؅+Qj*8bhPNU/u(łv8>0^)FI,Ʋʟb jԸ_wu*8¢=3-= Oȹ`xtG#`َ<$9"8*pu THHW׍ 8 74qN'z$`ȆAI0M/Oe#C/#FDPIX4W:%RB&R2ɐ(&~[^'In *4 T{6*^!!Ob㜘3og8]/uhU X {%K!6X%Gab*;ͯB,`ϫLV6=NB+W=!ts[k LlY%;-m9[w6ee^ErssWnqw@0[7^{:op9Ţ;n pBDK}x/gu"ut 6W0XĀq:[i '_|v$Q@{ ߺQ+#K96~~6p{x~[z8vk'曾8 q\7-$*}I3T.<(li2=t_$gDBܰ0AZXn uf-`i⢑${7@{@ >aP]s3솱t\DGZ/<^ X_ݘnPi(׊V6ixP " ¬8mNxN IDTr 8"26oAĹqQrJQ-Mxuy«U_X0-WgRD"";բbK*D4ء21 RL?^vBMe7NEa8ǧ&8h ~rɉrĄ9wj!al[$/aw⤓?T/ 4v#HBQrrm2#r*>m rńlڸHTcBǥYF.pvEm,jҌ 9Y7~Уw$adN^v+%P&ќќYG~pW5 ̠D%yAw?K>X%UrcH#A @GQ}cpۈc۪&p/#\F*~BG!)ԁ~`3 t]T?I_?.ݤS&C,:8}~)k)Y w ^c˄ZI|ב8jRuTwDf@$ cHN=L$~IT#L xo-Lܵ|dkV@/Fqmon ߭l;7/ӄUlzQX{}o.|>po7!k2smrE2/,7!ꔃ+dpB>Lº&` QR`*G)HEIPǵ-=%"Rv?xD._7e*!P"Ӱhƅૄ[b(U*̓dfW3/q($a~GĿxq.ԟW3mhpt!p]a&Ao݀@𤶈I' AVooXR^2gapZ*wtV(w cKڒS d\^` %@T o` ?fS_spMmZr5x+=eȳ!j]6@a?UthDxha][t:' 74i0L2ab >.g{:D?r"Z^OȳEBZ0Jr^$Ū'qJ/jX: |ɺL}y6.o? @Cv21s#r0#ztL-`| B=3KACT5 x ޢpI,a]Lj@J_%Lgҁð$=u1z<A<$4dʐyzsU{89: oz~i͞H@Խem7]G_ 5^wJpIq94Є:Z!0JP(ôpH3\$IeIa̖st\Fe<08)vnTs\'Ճ2k[r4A_}A2[yn.q:Μ9 Iuإ) 8r=g˔.Xy0vEK3ĭ*΢N=^41PGD\i݄sx Ց눴!NYx\Kp4b{zCSp =(?YVxǤ3hYmtҗ꺞G%CA O.b8{oͭ كH༜|S<ܸn(&kV rk[okFfzj0H r6a>4qpJCXCcfs[Զw[ .YfY7`-WOyj1ҁx@'PT(0X^Ƽ֚'ЄڊsS#E~CSI;'gG:`xC95:08 Nk0hVmݹ‡C RY338Zў8E˖3͍@]H(TQN`ZO% Lո~Vqm1L\"6vyͥ#MP̓qqr0r1,N! aR|/;spèo?/\ml͚Dm;TQ`X!޼cbC$D!:.*ѦzUqm,YbK*ʱ  lviPs$|oNh@q#C+QD7+zrӁbP\ 5U-NX<r@Zn"%uiς%x9 jdSM7`)[1ӠFO4O9GƟUN< ,&(ytAbȬ\E|z!a#BdD&ęQkzX5HCj°y!g=s Uqrx8u7:.73ad.h hj5&()sNI/ԩ p ]"Ē8ÆUt,SipT%!T() A;2%Rgp!x:q@t!zpѱȘĚq<8هΘXunט0aRǚMenHӉ^RɍrL[oxiɞjsd!uawٍ ӇE D0M,zd bAhofmKZebs Wc.BwWۉts{[Ӭw $!6i{As/PN\mwUC>!Zˉ x8'-zo:BHLdXK=RuIs覨㞨sOhqTDIRUn6G;E^?K{K_YI|L̫Qk`w=_[Au3U["neϩLf[Y H ̵'1LDG~H|! !_ӏD8Iug,Q mv5lut"&4f+I+1HuM,F!_ڔDyK$ܙ"E(:x'qRC| R׋:7+(⫀}yA!dn EyAD@߁5ʜמz{h_.av$n,^k!i0Ŀd5>9gGP>a&ajaQ6 p |[!h/ڥĚqa6 YIsRaInp1H:ʃMh}wVʷc(rcW}QCR٩>FLO\KyL9s lE[F(">8*XygU\C`Hv(!kz>Uo?Q!\_q@V=&Q*|q&|j~Qx*dƇ 5Ha⃏90"oϐ6ur6;ƀso4'm⚋MLLVR  H\j> 8T>ɐ󉙰ة3=Z~Ob  HF KCt}=f` ЮоTRPH( zD>hG 3}L)`\`ldk֥t}OVZgzaCLţ2(6SrKI,:s PIh+M,zwX$X! 8lDQ甇 ?a^484kybnW|/~ҍ +8U2:$-/D{g,#)/NކX95g0Dc[u@P@Vm|4i'{PeWXUPn'U@#1;Ey`U 45`|#SLFPxp'# \#A!:Դ@[Cʄ-a/0x:Z^ОV2eW ',~LlZ,DMJ8?SB Kt8JG ?V#kr$o$S!MK3Y z-8گЂFar%c Rwl~4ڧ*xA#~(9k4o4yvo\`E9@_'6+ޒWOɟ͡ng.M2Il4m;w.Q)dUHY9lϣe $o`',tp4T3B:v@><~>|GKmoVd|}lM yQq=wf[AjR7g!_x *1}v\J!m3z>=T_P+1_#[Uc +P_.\y-gɢ o>"5d.g0c`N"\; &hX>7om$kp;u4?8|gA.E5M[0ʼnfU93_1hwmC;#qK>k O9O k9QqBw0318; Ĥ&p?*YDF}mxO[{ W) 2~9U FtWhi_)/P.pp6y8"ѝh%f2Q {񿰳eB:D6}`n2>7/u+U{B:; H jfgL:HHު+UHo9,\IA"ǗdEǤ8?6V>,hvKa:\=R ZMruPd0Ͷ~%Z [@AʭP1OrTn {!*k*{RJ\#7;u+qW 2`5hI(eKD.;җ K~rEdSM0^#M`bG;*NC!5ة4 bᅣ *E{JEb los6X} 6GW!b}ep oHAFG(8tԔ'$|ZsbpN/$(#P]{m ڸ:S%H+BpԱ=3 !4u`JNZ>ͱ0!wI.%$#3"KCǤhŒhtC.p8L9P;~YWLw@A`?yUeC6a% řke('c; U54C΄(?vq PY${Tr7Q|, f bVjLARkԆaOrn5P7Y›Ci1@OY<7v54qHOu@vސB@\?vm#0XM_[гy ZfC?~@V|" Fe7:xR2YpE.~eƤn5$ˌù7JksRqŒ,lhl9?>djcͪ=:7AM)_wcb`?dA?('灅PRD}K0U2S O@?O1ʾse[^e"y q%J eNXXtFIPc-Ύ-Љ(;ȌYct+QFB8fRSN\8X<3Q8UȄD0d!V1s8$/HBBO_cvOPjABA H"'{?@dyvyq8֟=[ye2GCR:!Jc^y BN `&*s>l# [`%-+KB!:B$_,ʐJOCM!ZQ@ P@T ;_V' ?Z 눯*sP{&e1xc1;g?L8LJ8Rǎ2g,j~뭯1t.=\Ws8g c?NZMXu1c(?_*R>JԴ7|˜LzT//u~v$߭I.i>΃⇗ mN$&Z!G.;Q̯yRԏsz6;q7Պy_lhU֬m ߫mw-ְ5.տME{[*Ԓ۪sa8Xs.z}6ou)s+]m^!O .H6EXO9P7-P 0㽇_<7핱Wf< nNʧUn:ɰ gkz>zο'oppe=ZxyE% CO xn?uc ],-pcoUkz9:ʢ6釚#sYc3s2&K7PT(]ǰDUؽ׿3gl,uϺVѺn.=pJTRY!{ӢyTc>v=H\(l\(VOLJ}g%?ߒRռyE!t?gSDO|+hN9c&{U 3 ȧZÔO-Kj53_&y;˔l{Gjo<1:-޾pABfW Y_N"9y|"P}"rNQhT}gz?NǜYJ``Q^C[pw T[VyE)#?I$/Vw᫙t#:0{ʙNv*<>%ߋZ s/T}]Be"O#o׶_'..[Jc/rQ/ki/.qUO?g-pC/}bD@锘4ց<_գݝ-1_u%=ڽמ=^#ڸ:xGT$Gp&:ONAT5WWTBۖV`tֺ y;{,/wLCfxL;ߍu*Ѓ. i s8hӦ]5wk{h=k}/E:'X=j'㾙>w3vՠ<dm~]kW.׏X?NqÀw7"3e5o߶ u?EτW/l!s1-@[K:cjܢHG:{hF}PB {RIy˩}P,U1\m<x<_ieaK_8~Ӓ:b0!׋jm9m} TdvElj[DI_Ѝ#=CF)R5a3E"f\R5>GV ׍Wk&d]PRpGHfD'{u}{Nwh0J^ڟ=d|ԴSPʹ18<)UYtN ~<łB&lEDcrG[`=nb? o_6a2yРgCs.kt oy*=Ƹ?V8ze_Dg겟@s./{$ҷxKPHkn Asz"RWlebt*8-]5sX$dlgU7$3R_6A% kH eҏ^ "S*szs0)<1-=Z1{+}bDR2At_ӱ?}^`Qx ǜ 8>[SLI?r0 M82v3)?h=IgČ޿^$i@, >xgIG4'`UR}[JEg~3KݾO~9[&Z\f^#<7_]@DdU!jGqҴ-qV*][Lx/Gw>M}C-L׃iV^oD=9⋢ K0n/Zl/v3PQ3?Ɖ.%i ,)lAE Y"R[#w3H P*H1!4IW|tMIa  8ÿM&hd? pkW}hAaT >*5H~o ~ygďܼo⧪s+np1M imh5;w}U3FaO/madN.q~:5@],|(:dB?TXc]w&?P>(tt}{a0eC ӑ2v~+Ԑ}~_MIsD0ʔy47XCр$Rw@m:]bޅ:Lo'ZJxkd<=(!qu6S\>yT0Cfy3jˈ"+@%Qz;OP +)7۫nsX;:wGJ01 o!JV `?-p<5,> Tw[ { VըaPpsore=pg/l` $ӥ5prDDZ($YHmI @*݅C-6(DB A.X5Y%\jC.6"D,4[n:hO3hv:ȁv%z]mf/{tASL#N< kj2!sC /܁ <@z@HVw%OR$Ikug PޠSv4Q.EP3$`9şhe ~bhA'$"4Y*̰)iAr~O4#*& -]OrRBd @$ Ai"/}bjA58$T"c@..:y57s_li'.zrjm% BJfźkljqxWU dP]#`~=DP lZeZ^פb՟ymK3r2\|Cn 6„`A=kbMbSvs-ze@3W"@<_}"up)\ DP>BYܘ cœQ' JJ;2깝dR| tmSr\FG(( 7>!2 I!+<տrWxbpl5zc4QE[+He~C4?: ~VL~dd\GͩuGTt||4cLCN44.լms?l9@ֶ bg쇖3̤ذSS^m*-pQnCt"Yp "]q6 ~;QC:dzb1שW C:3+,qI;ܗ}~CrvwRA@ ]`a` $+1߽g]qIUkFξ-"#;;\)$~CWٵC[AB{d\hױ0)+{V\1.+#wqc @evCt%_ (r$ho :}mO@{uê<\OwS@WkgE9RqgWw4a6 Y(`bq(x/g @ :c("OX6.djYLܫ. RDIASAtx(EMC*j `R D_"5F|ňa8-G:^A/Ux-V,8hAiD$qQZiesDqup>Xɋ{hԒzCXس*pPu Em1gkeYzkES/}#P"/=u}VrE)rT95IK'`/.DI3I!-o9J3?!,&:4ɬtRp. `Gq'dA;iA4Ra!śuliؖhtx[<\>QӕE/tem o~2s\V#nph9`=9oc7m/Mgٺe뛯rѷkah"n}XDl!XUuFl,ӱw!Mi5#Z|y6~X`*WЧF6unoμľi?Xj=7'׻ι$;<cqҩr!p/ፌ3"[0_V2x;$PM`s+ٞpfQnx`=9ZoK~ҍ}ߪV`I9-CYUF2Ů^}K2)=OsLh:!_Oq.[gѲ Nև*yQ8Bx]?ZeqRC9;:YGD |?v=zu@G޼ jrx?&G˳_Ӗ [肊~o׷+s:"e"H$fGW;1iMQLA(\@ӢDM15*5t?M;\oY&NNJV CJoaCJbIQ(DQX$692'Z,eT}>Xh[?kmj|F24Z'~`Z%r g,`$oΤ1dDe,!php lyH79M݄! uf&B'-(D2О/G:gjN0O/ :ϔ'|gSlm_whu DL=+ãG8Vs0Hs{wҟr}HTw0bQPUUFM xkfyƖKtOgqjC%4t[(3њhvWft5$-~yA$c.6]Z@S4P\nuZ֩ዶ2sr4:o0$.~\W7bsWB4֟^;^ %Hl۷Mߔpz:`vr@y=>! ׄ-Tt"wylO3[.i֜zCE7['7z"21>,?17B2w U0Ak:vXADk񌝵ΞnD 6#*de3x8'ߕ *ʢV՘tck}3 ٳôdXP%@m^ϙz`:%]{I~gJ6(DW׭ rs 4% ύAd&pTASc P{ p#]^]ju@"6I36cZm\{f[{gx!5sKD ukTj3~ҝKQf6 0`kvkQ7)ȁ=&8_Ivw/x^dn2s6a9r%FRR#SV(k]˫|o/[X;u3x^d 3y 9Ր5J>mn~LJ5:/ȰjpH(QicG1>Zv/^oI%7,\Tl/5ҋ˜8mZUqaSN=XP3U*k:{ X9Th+:Ri(Ku[];wV]&LtFkp8xb+p'L~[ y6I>Npuq ۲+J*}hUϐ3EcqϫVzaU_F΍9/DC/M\NUtW)IejíDŽxصGm@Zti ,~CK9ߧV=hLOAn*rd[Y_aA =>g ߔjTb;eͷg[~Օ]]7 ^VRIsUhjօқ;%oC[{JgeT_HK>q>j֊/\ 1 UK"jhCxw\QV m{E{5!AcF蓙&AE;r:AD!L2Z-YS8Tt>aaڿb]:0 @ORORct}Is0 ?㾡/n7J@Q@@_O ĄcĖRd)O0̄d8dK 8 M@lv ;A 7gww ULBAjmCCP3[=CGp=v*:iX}rCvϧvLת{N4g#El}&D'Lld4sͭ? hǠ3ҵ|sQ6ۆD1Ќhw *و3S]@ۂvI A@ ,F="S5 )툭5A0b!jo2RۑEVR\ilݿvuiil!ԶT"yaj=-' 8&(maS5e$(d(d(*(j(j)*1mTԄ}V3#|hۀqA W/XhJ!=ryg}Y</8'u[|vmCzF #R>q␗>X4>$bGRu a7yxoր" .h%YSb4PWur=.Yg7ƓF"g*4U %@UUUH4T#L % AI@#^]DHDLDA 1E+!&4KHH" X"J"J!j) ) BV& @DDS}ŽEJ!>K9rqG0wgHߝ[a@vY D]Dl*3`cyyIHBk>A$v/Vz_b5h2uXF׎nM A-;gׄy !8v`{wPR4'eZf2}6 RN#2MJ"* U Hٴ>v6mh᱿h+Ҝxj(V[ia C+QhQ碡Eq㋨CϦk clOfrf%> tso$J`rZpLS+-hځ[}=}.zx$gث#@WNyBӦ/E" ;NGz=tu.XlABI)I G#'N'rg@~oІR(vQUUUW׹K%f@뗼0%@&\gTypI BlY<`K@f*~qX\$`q]wwZq([`V~U,bwn̍(47xh&cM3 kX*jֶw{Nn {z `PCˎ[}?@xVHp?)X:xDjTUUTAQ?k~nNgw yN UCɩ3"fj ·3n^CܽL0p{# UOVy!0J|`VNB:(c.ZrF `H %X<)-:厘jM&΅j+^ bmkSDi@Bw0@paRiuoxWG#A24DLwRū7ݖ}[iUUS& EZi([Jmdtj ؚLF"qtlq(]gֱ7/v''a,AQͦoIwo|Й+јsgx6|R֨ +ޘD@)>-s!F8|/漍pAp5k])dd:-/ILo,A܁4ԽC]ڣ+(GX#IaoJ y,;#ޕ pddVٝX 툢afc +zMJ6yL4g_jtx%"ωtɡ&-> T" tTG 3P1]i @$p>y[w%ig͖czl(H,ihރ7(pm aYIGrПMnD n砎1k89s ~GGo؄#|iMW?)p,) >|w<|O]Z(wuJe'unlWgp4kafJS-?+)U_|Fo^m}'mugsn宾,}?ֽT.Mx;?Bȏ \*W.j}{SNc`=*:>v}K"@8UTo-K}Uv\0 ꤀Y!"/]`đ>YBKR! |w=S5 ~tK-h] ~4G~GWF.8waS0`ȁkl/0}8 X%kʒ_I$On2GNf0mW .gFD/@Ok`> ?;Y" N~~ A.)|y 0Y"}guQnKGIAD\7ɍTE흅Y$PGT\Q Chk!v[@=?+řlE/ѯ!+ghvN9u%T @%q喇YDG "vIfM:pH6vfW ;ᐄ/]噂֛ ͳ,k~uwGpIQ._`̈6%hxp!?@<zk ϝ#T5й[ٔC]9 + !^ qEŦ깟 ~8ly+?R,(0ӫ,0^Y+3ՄƟ*4k9XvmKOT(П3ZV42B\d \ѻS\7*5:K)a3e jJzaޝʫ)_ ?bM~8d~B'9( 'T א7g|ΎDXܶZEytBRWnҕg9,^Eږ\ _J B~B>VNyn#>T}_k C|UҔ*kow{ƕPcJ ZV7IeY~5'\p,pB=X&b#(O9}ȀGu^a