summaryrefslogtreecommitdiff
path: root/scripts/send-pull-request
blob: 575549db38918f68c5ae0a148e36f949d1823d54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#!/bin/bash
#
# Copyright (c) 2010-2011,  Intel Corporation.
# All Rights Reserved
# 
# This program is free software;  you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY;  without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
# the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program;  if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#

#
# This script is intended to be used to send a patch series prepared by the
# create-pull-request script to Open Embedded and The Yocto Project, as well
# as to related projects and layers.
#

AUTO=0
AUTO_CL=0
GITSOBCC="--suppress-cc=all"

# Prevent environment leakage to these vars.
unset TO
unset CC
unset AUTO_CC
unset EXTRA_CC

usage()
{
cat <<EOM
Usage: $(basename $0) [-h] [-a] [-c] [[-t email]...] -p pull-dir 
  -a           Send the cover letter to every recipient listed in Cc and
               Signed-off-by lines found in the cover letter and the patches.
	       This option implies -c.
  -c           Expand the Cc list for the individual patches using the Cc and
               Signed-off-by lines from the same patch.
  -C           Add extra CC to each email sent.
  -p pull-dir  Directory containing summary and patch files
  -t email     Explicitly add email to the recipients
EOM
}

# Collect addresses from a patch into AUTO_CC
# $1: a patch file
harvest_recipients()
{
	PATCH=$1
	export IFS=$',\n'
	for REGX in "^[Cc][Cc]: *" "^[Ss]igned-[Oo]ff-[Bb]y: *"; do
		for EMAIL in $(sed '/^---$/q' $PATCH | grep -e "$REGX" | sed "s/$REGX//"); do
			if [ "${AUTO_CC/$EMAIL/}" == "$AUTO_CC" ] && [ -n "$EMAIL" ]; then
				if [ -z "$AUTO_CC" ]; then
					AUTO_CC=$EMAIL;
				else
					AUTO_CC="$AUTO_CC,$EMAIL";
				fi
			fi
		done
	done
	unset IFS
}

# Parse and verify arguments
while getopts "acC:hp:t:" OPT; do
	case $OPT in
	a)
		AUTO=1
		GITSOBCC="--signed-off-by-cc"
		AUTO_CL=1
		;;
	c)
		AUTO=1
		GITSOBCC="--signed-off-by-cc"
		;;
	C)
		EXTRA_CC="$OPTARG"
		;;
	h)
		usage
		exit 0
		;;
	p)
		PDIR=${OPTARG%/}
		if [ ! -d $PDIR ]; then
			echo "ERROR: pull-dir \"$PDIR\" does not exist."
			usage
			exit 1
		fi
		;;
	t)
		if [ -n "$TO" ]; then
			TO="$TO,$OPTARG"
		else
			TO="$OPTARG"
		fi
		;;
	esac
done

if [ -z "$PDIR" ]; then
	echo "ERROR: you must specify a pull-dir."
	usage
	exit 1
fi


# Verify the cover letter is complete and free of tokens
if [ -e $PDIR/0000-cover-letter.patch ]; then
	CL="$PDIR/0000-cover-letter.patch"
	for TOKEN in SUBJECT BLURB; do
		grep -q "*** $TOKEN HERE ***" "$CL"
		if [ $? -eq 0 ]; then
			echo "ERROR: Please edit $CL and try again (Look for '*** $TOKEN HERE ***')."
			exit 1
		fi
	done
else
	echo "WARNING: No cover letter will be sent."
fi

# Harvest emails from the generated patches and populate AUTO_CC.
if [ $AUTO_CL -eq 1 ]; then
	for PATCH in $PDIR/*.patch; do
		harvest_recipients $PATCH
	done
fi

AUTO_TO="$(git config sendemail.to)"
if [ -n "$AUTO_TO" ]; then
	if [ -n "$TO" ]; then
		TO="$TO,$AUTO_TO"
	else
		TO="$AUTO_TO"
	fi
fi

if [ -z "$TO" ] && [ -z "$AUTO_CC" ]; then
	echo "ERROR: you have not specified any recipients."
	usage
	exit 1
fi


# Convert the collected addresses into git-send-email argument strings
export IFS=$','
GIT_TO=$(for R in $TO; do echo -n "--to='$R' "; done)
GIT_CC=$(for R in $AUTO_CC; do echo -n "--cc='$R' "; done)
GIT_EXTRA_CC=$(for R in $EXTRA_CC; do echo -n "--cc='$R' "; done)
unset IFS

# Handoff to git-send-email. It will perform the send confirmation.
PATCHES=$(echo $PDIR/*.patch)
if [ $AUTO_CL -eq 1 ]; then
	# Send the cover letter to every recipient, both specified as well as
	# harvested. Then remove it from the patches list.
	eval "git send-email $GIT_TO $GIT_CC $GIT_EXTRA_CC --confirm=always --no-chain-reply-to --suppress-cc=all $CL"
	if [ $? -eq 1 ]; then
		echo "ERROR: failed to send cover-letter with automatic recipients."
		exit 1
	fi
	PATCHES=${PATCHES/"$CL"/}
fi

# Send the patch to the specified recipients and, if -c was specified, those git
# finds in this specific patch.
eval "git send-email $GIT_TO $GIT_EXTRA_CC --confirm=always --no-chain-reply-to $GITSOBCC $PATCHES"
if [ $? -eq 1 ]; then
	echo "ERROR: failed to send patches."
	exit 1
fi
QNeZJFg]1MF$M E9hTn#y7JRY##v\VtWF:ȭ2jͱ.+Ck hI1)r+M~[Y 5-:rceWq=?4owCt ("bH"F,ڙI1d*?݋/E<3uPpR'&ο'i˳թlKQU).6rA9x'/p:?Ν>LU3=ơ I`plE!j Pm9~_!d:'vIz^58Cov5a@|ȡF2sPUbBPg0yUkEnPIҰ Wy~?P·耵 D<^O> L}2.gΦ::d=*2FBa>e!"@Ě[/Qc04<9XƬz,0Ď/6D! мr9,⚙ ,-EHk34?* 62c?Dc ̈dQP2_Qaa~lU(W^2tLZ5Sm+&s?C<ټH l.D HČ6L/ѳM5N!~X57,Y%AGy>o#h#PǓf1bx9 T@F)0(=hpF4őWSU&oG\z:6<┏9cS t$ՀhK=nX:Qn5+=|TU}]w:9y`Pq & x: f4CX  2PdA1zeط;:=2x cd\Z =9ZF:(FRtȸgmF(-ĵo觃SWK=cc鯱sRTO=.;kw ~ ӿ1<8809'FO[ %0rkQKH(1Jc5P `|zY$~j\%H!ǟK `@̰6gռ!T$eWNԲxLprr2i> 1 ? tkldh$Ɠ}M%ug1`ƆI߅}G=q3a#1 sAPlY(p2GPerl( 1|w M!'4e9 y:#wnhqpp+ƗȆ B5bi0a'>V`д?D725CA0ΈN0ܱ-DMw6FCDVQDϚqcBv~Zy*s kXN^Ɩ s. s6= RPIƅC0Bg>VHk |pd=Hړd(m:)9}n»j_#Oq}#(zVй{E^*H(*-1_Rta[p惾 @ d!14ӏng!lVOйM\4nJjWz4F.}@9I`'L 2N7x`p-0.b1QQY 3Y_BWccr&5\]#*yp{ 4N@x-́ceS+Low,zٌUř 74'v_wQ L Ầ`doc ZxqQ5.0u򋈥6l[yl2>LGX]ʶSyS|J+]Ϗ[_ã'WF'wwcuX\G?hG$%2:qlLesc,aaqǤ;6-Ef93w:Nib{*U9W}0[+KK֙wHz8EtQx9+×Z+b'dXНc ~e5`hwF&#bSU@⤶HܕEtR_`VحW2Z8`k^לc?,OslĆ9;鈆 C=EQ(WZIB桱|D#g~_I=^yi- 2!MF6H"I b|$F3c?)⑳tn1$GH7 @`Gpoh#9@#a^X;f vlތC1%ia0~F욜ॕ͋HYC㶽$dluwc/R4 F͑mfz抸b#ip:BPTl=BOރJif=Ԗ˷/iY [! L gGH\6O`!0֩!Yf#3bxsLT/ԙ,R{MId / 5 )"9$$ď#}0mt>qH+JJVyy(N8ǘ̼u),<83WNf?C2@*&RdZ5x;;H+,)EYSgs,f&D |yr^¶j &Dp['4r)9Za; dQ< O},?5X\#풀l55}*d}L#çЖ1A,\(u`\9#e BX``!`-EubOoF&@`?Xas",babĪgk]3?x-{4B1\Gt:^A:ֺT=]U%j1ٚh+5o fP%g3ꂰ =an#E0FfEaO*޹(ۇaj<, 9Xcq1&eo;@֡)x! ѨRx@Ҏ)slHx"K712 tuKbP+EUԙAaXvARHXO,6[X^-M9YГ̓^*|$KR9"+e8RXaPr783OXqbU폇POkɴ7Z=k$B?530 ,ir# ]vV6Ye# L09ӧ h .GQ`^PȨʆa^9zb; M1ao4+ãEciI BU #Y,X1}كC%GAf4wkφ9_Ai*Z*V'僦LU¶j+ &{TSթֲ3:-M$v-KҾ:< %Yao]Nٙ3 39*!L c4UQn:mm,hixp ?LMtzH pt˹יIGc ((O&Z&(" j@ir_V1j8ɘv/9`]M̃8ԀFB^]iU1$Gnc I4D켇K1îu]ϪƷnK|¡w~/hv<6wL&açciAIȑQ~c4 ;nkezdOt͞+[ Zd{TBgLIOxΌz۱RT3<\`bB$" X"bJ[?]:7*>HuctgV1L&?1wDDw58C+H0 ;9' $!g+rYZV8)b'F6WhFipI?D,d9"P0\EN1щѵY9<.ҵ F8]ۧ5|’xM,g+yZ x3xqk=-"˾sćC85ƒ-(K2d/8ԝ:G m.O `6 {X8ddd9jcDFs2OhˌY^ЬÝ8+ d(4[AP{(cM501wDKHXsm>YkW|KmĦeoq9Y J-# 3@,N'T)O#ݺN? rrw9],$k8G+G3Vvh rlY6.sX$27j߽VkSIͭqTSra3Tsʤ|H$ _np2@9q6q:F: q$.s2O|orP-ķ5R#FQs*SdB-fk i d 8p财U+$Xv|Þ rpc 4۶7-cY|I9YTWi5Z}i djJMaĬYguC y.kT"Q pOEʚJum,QN.mYsfO$8(A1 ԯ2I$XSz ? m:1h[-5QTJ(zj+QD.ԩqمxp'NgoUQ;HnՉ,#%5/,TQV s(k" ε=eĦy}dZ{kM.N c5Ȫ`iqa91 G[i F f\[m38J}= .PTkV3i4_ȹiը1'?LJeۥ ,x#gz_Յ}yUekܨ[eF*ΜM/rKW jHdcA_seKe*@rq )TmG󨥟\Et r7p݆*tE\, .h`".UF㴔+LLc=SX˛*Q>yu'"RБ0bzp WPgȜ%ϋ6b +]ez&Viii>o )U4P@}* ^patCOQGD X$~2OrrY*N-jҵi%"a3dH֡QU":E~kkN&nqbֻxIoX0?'=ݑVysOQgdd0Շv͘ƾ =tkً~JYTֳli WYn3׊$]1sC4?CMgr8#5@~]IWF>vW5Ե˦F%- 0y{$io<٭{fMS+Pks\X́Pg?꼩|OQ,og3 ўO^&[+HfXykBlF_d1Bd3n0 ib0y姤b~[H/i}ZC+D;XD6oq!7SXV9WviO!P%~AaB"Uz:vz۵&zݞ3H1H 0\Kh{,`erehj6ALtOm!, jaXpp~@DPz-_=GrCkx?Gx5ԭf\ k* fɐjg!I ԏP&q?'#iy3U>L7 $4 W,v$TVTTVDlcaJm֝F|aR>L}Md{*e? oo))z7,aM@t$Rr]@1"<d9N(XL`IVEØThHs2db><aGx 3'aAkոdPl 0a3tK);Lv;V?() 1!I%}r2T1jbP #OFk)cO+ϩej>fjD :΍'ssF[Ώ빧b; h|Ӯ[5f,gc(4D,:= TZ)T` iYN9){7LbmTYf0eK_XXVk6(j[2 ,-'),첢Tr5}^硄zvdgWOG, 0Oh^溢ۆ3:s{19ʉI xb$9PM)<5 cCĹ>2/n猫eA{r='k~M#z´„Rz=w|2$c JFA6m1Y]jKcsV% QPcUp\6߻ CS/jEU ˀV^RߑfLVqVu'1jyHc\ŝC[]q: + G3v\s;# R~F"× LGMjL/9_'2WF$mP u)lCءJP=אfth^s(L^!Ei@iRܕBT?QP yD̵^CB 0%6!*!2И+hP~8a\jqhHiVKO$'Dd qUv;txb0:H O@'#id"=>EY#'n"Gl⬱2Kw|z >_'tRWaQN07a&+w 4x%VhV5pnTMlthfԢ2Qf? AQszfwsߟhӊ);TXXqf'9Ծ#`5v+f5 J3ۣ=\zz"lgW<U*^]6:򌥲UZ+fN:RLnPjιQW&@SpIbPPaIę,'Ys| [sc1)07/qK_ّ6sz7:)"W!:aba9H *08^/ T)]jwYAy@smH*p01R_0I @^}~ht8Ncyi.W'LLlmЌY3㘘p4E&X0#]Nȫ Xr q8(fsM_Cj׌ Ì4s Dl7w(L5[6+Y9"VkҢ)kV7{6iѵP{X}abLKxSR2 0bTBb%~ :9Rd,ANYXFCrcY+>\mPШ"DAZ & Mvh=j(R&d4Mp&'$](21`,710rX~tW*+9j =f0FOBT7 Y~HBi$>Yoy+N a w3Pi:G,ӠzG2tɸ eeb^[YX}TY~pl+u~p˴BuB&Hr<@ χ\WN'3j=l{Q:1՛ӗddp|\iG2-n_ێZϦyu.k$$0d`V|XJ'D0ǒܵSgGPx,+I aCTaxY< r41IrjaHEs&aac|/~E"L-+-drCԍYTR3euȜIV0Sa *8%FDͥh+U5h&[Z-f$/$0i갔@#V:K6 {㡴=%Aa Ƣ7CP僜 ]ZG+ #V2J8FrM퇝we8v Y2tVNS 11ϒ6*uxF +̐9/XZ]ƫ Xf | 1LLרP#ގM$Z0@8sE١+x&;I0L^fhk"Eq,hɇ-&qZ\蔰&.AGQheqZoc !`d,{l!dSr0T^U ~sOo..2; ]C(qHY#؞ UEg_ cc`mMϾly+ )x-D!$ƞROͣy0aN!14D#*A8Aސ 2 b<ƫÖ sq{ i$#T !dLɌy!C##;P1 C'`0eLEq8 ;¥ש/&PL7`Kh "dggģ0e Đ{Jx Xʫ5__xdsx1Z;,9' i'0\;alT[+U~|ֺjt5 sJH $26_%YqK>ƩaqyCAc2Bc`4kuҫ 0N<]|Z _^*VIʁ1* HbdHLHV@!~)‡~Ŭ<5W IYJ^l(E^@``Py|6pQ`s1C+Y+\ (dp%H6=SD+ XhS"۩νrbH J˘:JQ#H1 / #t|4\"ILux+M fC"!J-/0 BYC#,(s IYe-U[9}:3<}~.phkpI3'xA)x(g0`ëlTmǏs㜚vP@}cvIҀ޽ÃNpSQ{?Cx< ΔkOYgE1c:DQ J0[HaTM;,+<@;] vbp&@o ЬӞ$nU9(\+X+ J($^P$ QȀ0*1d3GYsU.}:FFNUȺUΙ29fYEJĆMFa_UIhkC iaf{U*4kĚ}.]ֻeZ6X[j)Q^^qsOy N76!L+27u%hɎ;cB5J -ðGoDrM/.*=$8a%adm%,}M4X VW"%JL3]ZM^ZmIVqI,[*;^랷?w=TEQhъF $:H' &>xaSPTVEqqr#CDaYbeypEODmj* X6X 9XY1:}9@}>Ni_zr^:4_*.") pZ(6&Pm~'NyrF#@$92icC 9RmL{buX0FB^1Qĝavc SplϑLde qb'49Sx!p ׻t<-9Gӌ8ɏsN9 L Ԗ!^$P21"h\24p ĮiY`1afN5jZ.̍$aEspYаJGGG6bW' YjN~y@S_}EGmݞfXa;ࡿ#C|¹@,#[nT!ZP-t@ cσ&𾃞g0NB!0ӛP4Ѝ BPZ9C`b'NzA~ɣ&~t};æ׎ER*!"JhH3#2pa=pt8n՟dQF>9G R>Y$@klU)0 pa$^E2,3\}r 7Oܣs+)d-\QyN ⺈K^z!<W9m5:ѱRDˡZ}F$rdNqȩ^@.<f #q+o0M4\2p%)(oKH_eLKvb앾͔U~Cgw +%Adc5Aܺ`*2,=mX#Rֵ [8vJf/O[FG6JT l6+H n$V3o|4]7 Z3PX} &|>{v20N2*/hI1|PPYd|x-ejuǯi]Mit)b;/;Lşṗ&*MBe 8LF;51ź2PAcrM!Pu1gyEw9!M*4 Eꋖ mTZE<$-쟒.q HMN{b9{$8t֓FmKa$G Atxxeta ba|vfq…5FlhZZ[9`ɈHAۄ8H/0<}F\Q@e8piag(EgWܜ}r4Fr;Udv!B 6p8鉔`,mI 1 ãX=?seV7+L4ǚpi4M4n-64cuɻt{ȫ~BaA(6;9}/:t:mL5Y6l#1fEJOCCߚ=GǙ3ri"QRL۶+b[Va[*&Jg13v9+١WS1v}j~S[F8WFj?$J3}|0BEM)H1k2yDJm$1e|'u!CIŃT~9wuwenMZ6USÙfUF5 *UJ3BbU1=[ab#`w08YLcx'1IIw9#{Vh.UN cMr0eYj>{3'/th,4Y>y IԪN YbΆLfpOa_ɧf YT4n˵ { a0/=%CuEYQRKaϞ1hLsO2;?y(ys1=aPM5krbH)=똂aqQj`ea$ʉ:d'F5!䦛&k| u` Ba $Q`C BŬ\zrPWE!`:alG/ phV/8$jH*Y3͔[ tbOc9tS/_SI,0TTWIbJ¶i5c5x4lxb41Syd6DwyN^&eh(3 S2 4>r\S`?*T&?I$ו}aA` arơg[A?׃.@`Dh΃!< 6|$Ø$}vAE0k/EnW 0bxTߝg5N0rf? n: qcxR,&0żwˤJd $C=pTѐ!$BID~P,|/a ,b`Y AOh28@ Qs& /$"`fe]ddc Xz^8> 9,$P g{B3jDI*}3kA`װ(ʠ(ZŜI#0 <9b,֯c!KM+ʂĀR~ RNPjT2ˬ.Rqea= g:^;48 fQ@0e:^Wؙr;1{;3OԴwhX7x⥥c]^F#ԦZ)ZPe4P9 0߅-(ϓc$1kф;1_m\ed*-)fO)y0|͝czVe3rqтV2aV\u {a9w`gX3 }]^dNB583֥|8r{kLHr_d%Kܹ#e@X^(:;2ß> ,y(v_Wp-1;ց5چoxr; k!V\^_U+lXBH_7__w(s%a/<h!pث;C`Dp+q0G'<@lH p0@tL>u9;u~f\)vcw$|Y&p1$Ɍʼ?%$ qDO(WUNΚ>G6j*UfLsWW*4eRʎec,|{ 7Nʶi48W)MKqG c)훷3ɒ0QFٓOեx(]sK4 8>>2.14.ѐG&,F8X)1E!I#FH lj&c|ߌ^)JstMt9hlJqSZ}njl\\{36F f*V9"X1F2ZF,p[=C806va=#UwGqCb BPbHC<aĨZmR`Np(Yd'?8yc^dL! 9p4l8(dB: F9jM,]pCuiXd2$G S+Ɇ0sb5d&(Mi/[LUT"H U{N?IqF05bI0܈\HoX.e.V;M,alݯ?R!2c-3I=SӬJe .{6%AױPhsרoR*6 H[Gq:AW2)'AC5rm|͎@1={$]eVP{CB>hG>n oXUyFCJ#$ ENB^kᲚX:=F.Q^/h =]3;v+~Ԗ1 ʍFE C H~2m~ }$?2CJA+C/a"K쀱2\6 m+̝£{:{o"  TҽF6VeBd$& 8F3`V.6 o6AFU pPɆ% $UlWc G< lu٣<Ȃ;A=1LE a+oRz1MLSUە|Ɓe+n|i/gdA2t5pO;4sڗI>Vza<~hP%Ts?밹 v ǍhP& v|}Bi)1^F1)m^\~+j8M +NY<۱}1 _x zc'^/Z$DRN`XdEӬBE "LEK L>~3 G42\1<}Ϗ"T2!4wX]_{ pDchg ZNJti 9&$tSsz=mۺNaC[B.pCQ&V, ǘdjr1ِ@0e#l"&F'^EM2{$:`9@[Xf)y¦b2R($ј##bdz}ckT Vqg7(/@5ȕ!:$pl*MOIs(ᩒlԼ9{&!}DY?kV)HyY~w Nr>N5𴶲PNNׂ:;h^(*tkڊbnF!ߣ@?*WBaRK)bP\9n)Kƴ>5~Fvt&z^a?7t@e+@EZIS @eq' -F-f(t4nP,R02u)֔)Y]-)LPi3?>5ήe9drCnߘgl 4揑g3Ϗ-vWbm0WmΎqMg.:sfF69!##s%hGCM.˜W.nge땃<4U/K^,.VſXGg]9Yࢇ4LF6M]sEzg3cAo19 =3Kc0;1t.{6ITS&^&{^Vɥ&L[b rp886bJS< ѱ)W%EW_S`96p9Gz!ASFYĐIG5>{Ȓ ]ԑ]{T :8|w 5!'#MIY˝br 7391yz:"7̌*8%RJ-s\!ӇK$1 cJeڝh #>JEKiHqhڲ*. XlltIia{A . se&袷+&cͺůu3%߇՞bYtl&^B}ߙ+D`$ei^ʓ/KTd91aA?HIVR^j2`&e ofD S&H#.uɁ;rcVl5l[]*  -QM` 4O-Xߕk3&[Y0UiTa]L'ȧմ*L7LC9?n8"t7vUdS-v6 VZyܽ֝G/ >z00d_cp2sFHxW-k@ kfj[;]nP?=Q1ye6,]"xtI(Hb '^}I͇/s\ 1q$90a1K,f ^|UOɦax0.!`$;t@")ܵZLPH1 Bג'G*$'#9~k?y2x q;twryE/yV.\rLxD ɠ@D֬N[NNQd㕄+AE̘U r{]'[%21#el[88/'N,\FyYuT p 8RfW=Yx?s3'9a=b\`$M AO@ ^l$D͜Oh$Gfk'ٲI(\/'˩ D5.ATHwc2/+j=c#ϯ2jG<<·ʇq=Rx3ԿB7$hۤ#iMI;wo!V_R4Hni&74cH+IDJF*%PnnhiNl HP ,X܍3Eb4+YhnQެ]2zȨ'H,RLE\n9itN"WLkٕg;ym#X  1}[qx[ :=-}J+unc6edOWK &D&rNZssQSecʛ4cfzp#ݱ,]FwBuv> وcLV1Ōj[q`bϟAAnc{>ف ZY _c$3bvbW d/*Wu ;t'( Oin|VWbmYPs {3S=HaÉ{^G}JI1rtCbp8a5 '2z=Vyݘťpbf2(t3#Dd&?]@ϣ)'!ʒnLQ&W]=0*^53E@7r2,UM&4[++7':MECy.vYb*FݖBm :zdbT#ؐиdmQqֲ)clR9D#V)pYq@HsVx:Ћ50`IkhoXp I:jrVW(-"OT ׅ l5S;oPZQ#;XI/!XkP/${q0hAt1j\tAXeUyP/"x6 $,UBX72+;J؜!ľ2d%I1 μLCWj /?+e'ѓC4sLr s? |$ldbAXf9alπ*+&]6b#D|HrTE rBbeux̕d_\Lt@ ΓuUV-TX`ƻ&yUE0_=)f6za, e%aDeQ :iz Mwr\1u Lt Wu~ġȭbW( &\:Vki5%<\zd@*HӂI6QNAJJߙfi}H2$/D?jWF'G']pߗzvLvH.p5h}4XMhd}^=^=gt@p/++ Ɵ<L9gap|ēF;ЁL7*2tHE\-9o$$ G35O=VyDPOu2\8+Z0 \?2{> YL)KgHRtRO dƎq2/ ކ#'7:%YjȰB% MffEYtV4QD?l6͐ ~cATגq`UhP7Ck_pIΠEmpETN./*R}-,J/_+(#E ©jU оoELGc*9e22HM "G?O_]kPhp%AD@"#$CJG01eK.ĜF &*g%@P*; lZK($pBXEh[O\tzCbDO:jrBASOe/d L̥JɌ .: dnmѸѠ1d zj#ٛ}U0R $;?Rʟ:CǓyT=j'C&QjwT¤Y g",>R/g^U5 thy{raO=@tCOF?<<T%{>"A/+>D߿[\a].csq>'7DP 첃R~u|yQR~U~Gz>B[NW{-ڝk?Žxcu|/JC$Nu#XfYW/ v̊k9iذ΋]Y'SSHN+s<!2?.%8`ŏNѮ&IUu˞u:6sc;:$+&ʕ^V;9dԭ<'pcQhvi쪏R꘸8|eރ;f!u5 8T s !&V&aщ}1)>_o\S.8Ɂʸ%H7> k<.19rG/&ζt/yB 8;r,쪅ShNp=lC-?IE w1-597:_'a ́VY9Vs!A` >WD$AHDA,BD1%BM @D ( S8FB "P($cHB?q DFԟ}qgçSZ4y\=`!.hzٜ!ɂ:q$08TiMv*V0iL=sݷ57-wᎋ2T*_ ,ıYZ&` ?W#R'Ą?Y;Q8wŸw#5-ld Bxp1i2I;REFwg*uN;J o\HWD(gNxN`]afXQ= >OaǨ%fk c \j<[|%!q"fesaiC1| gk6AnхmdʎF !_MσRx$@pNτqCFc=Ng`[#Bh>%B!Pd35)~C<`JcvzF?Ϧsal.!::B$ ǘSpwW ``~C70hӇˣ0v1*$y ³PPe2.zT @3Q1>}ҵ^ ZTl,475'Ni֏V}_dv0(j:#B@XV'; -"XL2eKj=&'c>"ӴAm"x"L]!1aw9rĈᴣ >+"0\BP˰b@QiN6ie[>{:@Gyudsr$KHa&Tzm CW0z9&%1߱ðE/Xy}6k܌TMO`LY =ۮh2+P*B?#ELx9XBi̘*T 20ﳓ|H<G&t Ďшn6޿8]*j3I:FSoccp]y!2\aD௓|>#sYkyj1z.6`JUeߍ}# ~ ӆ " &R^AG"C˜c/}a8|MM֮1j_б~G)E}M(=4]l{5=4o8d?ZaI2 v"bG'&&b3 Xբd^9\0@ӄqw<$b/<2M):rAM)F BDiqFt1\ls;(#N08cod=3a"SG>p1r1pU[\uL)C (Ƃh ƌl3ctpA' <#\,n&`K8` ``10_ 7D88`He68p:u#)Fdiw.,yYt⩢Y s7%%AÈ am>KpXA!hS".yFB ֳltm"@Vݣg3,X e@(uc_$40z: 1+6CnO"i#iT ,F}>,J8~ cSxAr.$K[G5: "L2]5):C~df;|G%A50Áazizr|gzoB%y' +EtpEh|6c{fI2W)Γ u2 H?ʨFz,#ͤ}?ږ7}U> H̵(Ey EOLtMD記\)L_ViFݢ*)`}?Y}=APa$PUFcLSI RJYXxV4QV4TślMztY9W/s|5jξJoÍ l݄RUSE}uKdžC`eJ恺x*e:N+#( 2=2yɉa,K 1BM!Z.NMR<(~ [;* l벬Jի w( @wVwLtJ>sXzO(Oa{cg:?{pi<`; #"±%5E^k7`x$CiN0oàdg5=esaqqiAs57ws:~= RUGySc|?3?>N ã?Kg:u7o6+c<AO"*@(Daub_PeLπs`1\tA{;N㖅ŕ~0-]燻$r4VZ808y!#*XRSJ UUM*L {[y} m/:[8C_f 0<Q$$:)#]2ci KĎak161@BxCB:,CCI`jP8U?y }fΓ#4>#כ9$9P4}7v;W-1EEU a3Q5$k$VPbE/ 1x9# |{/%&c<E(eO:7M#N1!'1U ٤9 as lwTSc x4w*$eg 0aV'B>(Cxj(s"ҼA!f&(¶CJM;wӦ=>4 Dto /Ol'yY4?7)npѺ!EH>RU%LqޘXf@G#b _aԈ P8t!hH2Zeq<+/D!bXa2☝tj-*}~Ǭ/g#eGE1b妔ϻeiԞiO6/C?F+*mzҽj ݥOSD0&c0"~.\N\=V4z{+n=}*uU^溬l|.#{V|[5ٍ*SM`CGPq !'Tu2Jeaѳ&:<>r}yc}ړ6iKjxizyV;V9ʜȒR(a'zs;}f +)1ٳo}Swm[ѱ㤜鲰%JSgئÇa8p 4i?1⪫eiTSL7+I>㤪jUƒˬ.-DsQ`q&|Xt2_aDcDdr .7:9oٍʮ7Mފ7<]i+>ٚ1\"@ĸJPc!-һEq7$A8Ʀ8(Y.0łvYQ sh(6lN'l^4)vdIGc0|#&&7{``rhP2﷘n[6Oë˕;IugDӐc 4PʁoQS?DE0kaTM iQ^f-G&:KS Kj$s=d2AcF&VAqy 8sUBo [E,$eku,s[E>xz{^H#c擱aSdSM$biPj]=sxÆ*iFRSg^{׿&ݒlv16M<͊)kGfpYlM4iOllNDѬu$FĀʼn<0ݾ>${ ӴTٙ͹¢_}g4u,*f27t{S5ZTiM޳2,n=Gqx6XCme3 z:ٍ9q F}!U_uWq zd1nf+"Po~Zltj Pa IodJeSK&1>6O؜+bffrڍ&72Dfg;9@}}?R3e9U{6=ٵg0 lNdl|oGɕlJ.U+'DIe:}ݕ¨TU+Nz=1qy Y"" b1n,@[PjicK* 0Xٲeeq&X*\IG.b[r.(F׺Y҆[ľ:72\O6IJ5*AGCa *mzzj5m(+u&4?VW{.+ +#1FfIbPLuJ>O%dG7E?F\ydm.)\H+]ĉ C3:+%2>uJØ,`0 D[vV͍0c OF M5P}}C;L$0#3m"@ĨcVf|ͦҍx`:2rA%G(M*6y`ח%Qe6hy(pcwWWZu{ݝݟcM:+#To$JHYaLnq68Iƍ'!&I"v,ehpڌ9-6s3%WqoRb_Qe>y0q ,ͽwmaѥr?qQJ6 +H 13(Ο?SكɻURIIªs ZM*)UU*U(6V7VJގzyP1ZQ>C|#AQm 6aeF%Lqƺ| rOEn IA[0q??"2JZΘG)IiFZ=9::<#p^ x'6o$Ļ#9}!b9s'@۳Wf0~?CaC,'7 0pqj(pfqPJ.6Y{պ^_#F?֞lU(0as|Q N"?>'N$kű[klJ|u>R$bs MDClxz01461G&r-@wADa)_gݛ3mWKZl=?eB$[v̴(Gr*kbj]J0P̣띜Ȓ0aCɡ$£1Wgk[B9 U5@!CSXbX, 4Vj7jz@C Sw}SMjr+J-ObӔUTͼۦc"h:"J*ao;k e+e qk# 3{6ECH&j'~Ǫ6v}j=̻;|:w&8sn*:X;[),ʣXfh4FdIMn,9vKjA!$7c^KiaAa1qBe礕Vzmr`8Oe.Oq rjM8ÔJ$h=f%UGiH #[8132a<_^l]⬇~yF>g#W|Q=*\ 12VDt0D qQhPX9} {8uř(#e!}A"neVMcɵ A-2e8al b]A@25^kbbf!kkb?ʘ)98p3`ecYLX13ry cQ iJ+ za'}BYPȖ@s`NqFau Ϗ@x+dƖ VO26w~#Jݻwq-YTJ?(D^S4>[5u @ &9P21a}`LH]1 =adF‰󆶙aMu.}GX A(6l.<$\k)ZUlc#lnG*v9 |?9SuoE?NZy^0I?GNd 80@炉W;&z} >9S`L/N6jIF,[lP1#سg'GEacwjWG[6@z0H\ǔ5z5 XNI3׳zV:4N>t`_\'Շs*9Ɓ\Qp bˮteC08=. ?|ƤDY$01Nvtp[Kօ48<+,@ce&82Y k/1v}U1T"y&X?,{9! e@6 c8ƾ)-UG" VhdLݔv1=ȿ?|R[!fI kb$ޏ8a%?cu_A/3b559Ý';%[ ;))PST/2JT~h?h;:w:?[L%S! bTyX1= oHca`=d{1槵GP_PLe9r4s6#lˤ|U>a ˚k5R5}(XPHfH9VL7 !:B gW ԺqTY۽rH++ҳXJD vɕ W :fo%$t D&0He2-_8K3X"P8H\K*'0bmĂ7Nf)OOk!(ƈQ`4E33pݥΪ@ԏIP@;/) 6`Ø4 d FҏOo&?>l6 >edtB``ن4,ƦXzgZn<3ig>K˗*cwے \pU`Ix?`8H&J2rhCd`W 'Ss "MilG\w1#utaʯLbRO2CCYq0+ǂ%IC<% = ՊƜllF(UJ*iĔ-F=4ˈa)- &&56ѫ9uyy{}ݻ}PT `=$h$sԸ B}Ja_Э=T-P q呈).u/Yrοbfnvjٮn XabXjZ-fJHԛV r꯵W*D,0 B B01- Fh(bp̂JH1v^QUٲ\佹 ;V%5h0HƲAaQ+*$ y+ "N=DA [aj ?/Y|dzaXA3ר>79c蘇гnbg̷Y,>nuo+UdÕ82]uf`İ۠ h="\X\b#@D|/jjBdAUVŬ&k:^0 0^Gi߁D@DĤUI0 s35d֔:9/7Sz{mU $+D/ q*сT lFUp, ܡIp)F4Z*5zOs='u]qnNK5]= "+[6ׂWk:'z)@ԍ(b#΀B  P0Xq-5\ƋUi$MpeApLك1@tbsZbEeRFf$Nd=U;Tq{Y/k,lZ{$NN:ӴDAs|'TںWFNY; VzT,Y$X+ 2b` x2`쟯b4g,s9 !1PcݙF Uqv"VwN75` N 8:^k}BcXL'g'0µHC@Z-p9n  2H64, Mh+ vR11KrDCYj)SM:fT ~-ѿl[]nvHx 9zP j*  ᲣxeArelD U+ž,bS xnѓyxkv3-chtKL3:::+` %s^iw.,32 j.z셤{:2F j1F^I,$MЂ3"k8f`(kJ 5MeИ^fK-@P@2mG7RPO\_f-ZtS"#4UH4ڃ2[Yܳs&RW'lA4w\Ur"+]baMrҪ=k; aݶ(X1`C@ Qf LZ:MA;aU}_I1R)R>El oY=GIGÅ} {TU1\Q+WY q R iqu-xS\ 16/''ڦ:)Ϯ8 ï0%qأyךe0 ~w9ϰޝ'/wPg 5ɠ4` *-OD0蒫 d37/h"FX `K|7TV( 8L.09L4i3 @".bC~߮&ίGɳդnawgwM:_ǻ]ZөcC=-nLap(`$j N HBLP#B IB DA?ڰ"'y5U1=8{_i.#xLipK.yN0Uj--ZTED0QD)}r#̧Og{-Ŋ8PVbO +NL?U]U:$.Eо~`&dPOhag&.B=bu?PJBG:XC>N`d3)D-KRQAK}ȴWbm%E{{o:':VF0Q8W=uXALŨ(ZcC<|Bljglpm^Q~;ָFg͟1,+ `| mX$7tƒ*Myn߅ Ճ7 %pAPu6`GvS/! u5X tKq&j,"5 H,U|J £hS %QH%3PlT pFBK qF0zwF64&))-Z$ӥCd0c;Jh1A7FN)yd@^<!ѝ=!2N f]0S&ٖ*z B1:7ψ)p0h_K >FzØ99 ja;a̵ڥ3u,CF3"7"DV&$=Hi2d41=DNꏭ`Y%/s0G[Dc$sFt/l~]n6N$"'S9lcjB ZїOIu4~j듶>Rj,㧊sXA)8k\lU)šR9*Sտtb f+jSE% /$3.s3zߜ@i'P:!V+!S+Ceۯ(#R:;aQ& "^5a 9r!_c6Oٶ8[ ˭uڡ%8՗ƸYˢ 7DDs3ͤܟt`qnY]6^U>y!ˇ"(K"ZH:L?HY|sy2usdv"^KqדEod0XH  wUa\W7jxc7{{va\Z~Y>{z0qcoh?~c1?c&ۧ,#A1QI9ضUL~xQrqGr LL 1\ Io8ss|'-RsM_"=a!t(#x8i)(fl /T7 b@iXZDfXj<`4v? ޑBJ」L%6Z`€6Gg bԛ5v)rjypEWX|H6(/lK<[z Tվ07O=_&.r^OHZL#f6y$)2DqP"O13q"x+DI hm+chp:@NT&uehpd.^d0$8q Νnly%dRBNj6ujRnZXH^H(ᔙrQ`C^%cvakwd,nw=U蒧?י\:lm59^q^ŸN'M-#"1EJ*TL|7mjë>SmĒ{oD؜}ip,'y$W`@8A]m=i˜&C U?vѦ!Lsd{}V-:ApgsH;c$B&y*nǡ'r YZѱ5pRyAHۂ9ȋc=,q9¦)@H 2G i(Wp}|OY_ !'S15pd0  ӑN^(^#wh6=V'i=5UbSi ޤt1)#mF5׫6gy;:I4N8;"M&*MʋU;;׹7DA!ZV aV 1ٝB(cђ |ti#ȁ3qey(pPʛș$ b*MϡruzDxLz RYH?8L,APZ dYk1gYM6hqQ͒u$6~ˏ..%uQ*I"&!Sx<~X 1FDJ(X &SjaJbt^H=_ﻚbcF~X_b7WJ2Tnܦ^)uȌ%]1¬5 xY8w<:v:7wshgUoE^c\{fB$ls=Ldo춯ߤl4ܦcQlRc^iKRλF'wXT0O 5(0NFGOW}VFT1qd pWyN}łqtE^TpI鞧C~%X{z0 @6.4$qyqr:y^R9wr)m4 l7=2eL<$Jxnΰ%mƱzIHa^ЂCB0)紵 `_a(:3}l"@ W/ijsڬ/~L : 71_aMζ1mXCn ۿ?n7>rv2:vW? j5ws9'8ࢿ", (RO31`;@%!^}G^NI,l@#ڿpS]TF7"ìȏOԀFD h@k(1T8 q=:E `VcQDzR?'ʒJMvCζ'w] $I䨉RCn$pNX re~Z$n=#'exַQf͑9haf4*I$wOK 2?Z4c#c,2ā̳zb4CH T?pyx~ͨL@ɥO"]9?Է2eZ\Rt@Ig*~>͎29?ՕlIsdCgmWBz8!jlẆ'2ӍPS?5Ь7flxY<I_IFoI$I[Gw^v]:;rC޵J0R3@P3^Nb񂯒8~1}#*Љ#VSA␟l9ظHHa ȧA&gydsGچ[_7I*p`q눂`eNßQf2@$S.=}lh^G}7wQH^0h;Й~Čx a`RBm.1Sϊk_^2CBҳ_tnE;0C]\0Q$ׇ$ff !9&@I,l$T|9?ĩ/;fc4쩮GDHK_Wx.hMc&.l*.Y_HaIv2C ~a`;=#.Q.L`I+>6cߌp[ XHLr $9˜N!)rHWF^Y#0I)A;lRˢK22ʙ3&J8QLDFa# ̌HלÙ-l5z6= }ұWp:RnBfrI&h$Ӷ`DN9c`I,Owd!:s'3nD] .G_Y z*RNVPpl;h0h@=+ HaG޷EfpU0S"b_  D(AqCֽk#ڨ;x\2,ݴ40Ń؟E^c3us͏ֺ{ٍܼ&kчLZprt1u&_q&;=^$81=qY$moXNbA.l- QµYmxKpϒ͕Cuyw{M)NؙWyw,lg^N,c@vvI(K^v{GfdcJ\8J{n6 1h (1CT| 6|6MkM0m${mQ bnNΩp[dr>vlu7zcuYw*N掑QĎbn( s[o4R.9dqm Ò|,4v*Z3C :z5ࠐtO4h |9( 18 $`!}s3g9>.6D IQql`I.,o]l͒0Q$C -6lk9(#AcP {Q&;#:p{]0c2d1݅mD(>%=4d8!sCum\ls=eS ѦS&$5(% sDQMcqQkpr z̜r._9'J~D7y1P{BQu98_!}t1`291YاnIQa/+eWlh ͜B@ 6ag2) ]҄K H>-1~h9^+SJ'jw"H+If_+1fA$N%pX\Bѿ,lb! *(>!æe:?I鏼u۠CVJWG?ub6b`Uπ+H"JQU@;kEW;kl7Jv +&?q`|-듷5]Y׺.S lrcDJ˘"ڬ\rԌ#_gGb,bs?aȸ$Eb-_ConK54WalY!C0 kdܡ oT|t1v;$xM+XK 2`e+Tz_~ۂ^yy{HE0IP*k%OrF+5F3*svݵm祛\njzϵ|b䄿ҏ/|~0.r#gSf?L4YO#$}9nxMH:9`Z`n7lsaF 0-73xȤ=/Xkeס< 1Dd09sۧ9rt E.T 8H !T\~"1i]0i'璤A|212ȗ:66ə>Rp$ؖЖIFZc Lr &dlc!b~J7n "2HmpnLUThVOiF~b=J225aY`Ǒ"I]!Qid-JC!7!4Ie H19lA@1@11c ]8"&!Fa8؅c 0A AÄ:Nwpqw>PX2f`fd0m<][!<8~rf!Ġa5"P g+2DEpZ`\8mp*bR+R= 3&i&LŚMtIh7N9a{dO Uc])$ۧFcyi׊%*H-:eC -HEKS TW,S0CE14`xB]i8x0l7¦I5`4 ⸜&TPޑ3O!МGsjGZc [ʺ1Xdsp?AB'UE "@۱!#ͺJ ~ެhʘn!lBn>6S WZVGh @( NiCz Id#q#*oe-A0j?vL !P$Zsffܓp|$6프Xt%6;1Fj̯N(,o1UL&l' gO>=$[F O)=ly{! ʐ$ *$ a!`aP!\߷z1bEIW2xgEm9 ^D|֞5;EgɎTKV!*M^hn 6UCAXc$ܦYU:c>Wa|iZ0x4F`bLߐ;HZjj[3CDg>쑷zhdj2ɐ0^dGcqQ{Nμytv)!AҾ{&v; (/D cI>%GV@޿R8 ) vk' Z0$/-??F~#|