aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/download/file.php
blob: 13494b12f408775db46c945b4cc5bba4441e6644 (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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
<?php
/**
*
* @package phpBB3
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);


// Thank you sun.
if (isset($_SERVER['CONTENT_TYPE']))
{
	if ($_SERVER['CONTENT_TYPE'] === 'application/x-java-archive')
	{
		exit;
	}
}
else if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Java') !== false)
{
	exit;
}

if (isset($_GET['avatar']))
{
	require($phpbb_root_path . 'includes/startup.' . $phpEx);
	require($phpbb_root_path . 'config.' . $phpEx);

	if (!defined('PHPBB_INSTALLED') || empty($dbms) || empty($acm_type))
	{
		exit;
	}

	require($phpbb_root_path . 'includes/class_loader.' . $phpEx);
	require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
	require($phpbb_root_path . 'includes/constants.' . $phpEx);
	require($phpbb_root_path . 'includes/functions.' . $phpEx);
	require($phpbb_root_path . 'includes/functions_download' . '.' . $phpEx);
	require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);

	$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', $phpbb_root_path . 'ext/', ".$phpEx");
	$phpbb_class_loader_ext->register();
	$phpbb_class_loader = new phpbb_class_loader('phpbb_', $phpbb_root_path . 'includes/', ".$phpEx");
	$phpbb_class_loader->register();

	// set up caching
	$cache_factory = new phpbb_cache_factory($acm_type);
	$cache = $cache_factory->get_service();
	$phpbb_class_loader_ext->set_cache($cache->get_driver());
	$phpbb_class_loader->set_cache($cache->get_driver());

	$phpbb_dispatcher = new phpbb_event_dispatcher();
	$request = new phpbb_request();
	$db = new $sql_db();

	// Connect to DB
	if (!@$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false))
	{
		exit;
	}
	unset($dbpasswd);

	request_var('', 0, false, false, $request);

	// worst-case default
	$browser = strtolower($request->header('User-Agent', 'msie 6.0'));

	$config = new phpbb_config_db($db, $cache->get_driver(), CONFIG_TABLE);
	set_config(null, null, null, $config);
	set_config_count(null, null, null, $config);

	// load extensions
	$phpbb_extension_manager = new phpbb_extension_manager($db, EXT_TABLE, $phpbb_root_path, ".$phpEx", $cache->get_driver());

	$phpbb_subscriber_loader = new phpbb_event_extension_subscriber_loader($phpbb_dispatcher, $phpbb_extension_manager);
	$phpbb_subscriber_loader->load();

	$filename = request_var('avatar', '');
	$avatar_group = false;
	$exit = false;

	if (isset($filename[0]) && $filename[0] === 'g')
	{
		$avatar_group = true;
		$filename = substr($filename, 1);
	}

	// '==' is not a bug - . as the first char is as bad as no dot at all
	if (strpos($filename, '.') == false)
	{
		send_status_line(403, 'Forbidden');
		$exit = true;
	}

	if (!$exit)
	{
		$ext		= substr(strrchr($filename, '.'), 1);
		$stamp		= (int) substr(stristr($filename, '_'), 1);
		$filename	= (int) $filename;
		$exit = set_modified_headers($stamp, $browser);
	}
	if (!$exit && !in_array($ext, array('png', 'gif', 'jpg', 'jpeg')))
	{
		// no way such an avatar could exist. They are not following the rules, stop the show.
		send_status_line(403, 'Forbidden');
		$exit = true;
	}


	if (!$exit)
	{
		if (!$filename)
		{
			// no way such an avatar could exist. They are not following the rules, stop the show.
			send_status_line(403, 'Forbidden');
		}
		else
		{
			send_avatar_to_browser(($avatar_group ? 'g' : '') . $filename . '.' . $ext, $browser);
		}
	}
	file_gc();
}

// implicit else: we are not in avatar mode
include($phpbb_root_path . 'common.' . $phpEx);
require($phpbb_root_path . 'includes/functions_download' . '.' . $phpEx);

$download_id = request_var('id', 0);
$topic_id = $request->variable('topic_id', 0);
$post_id = $request->variable('post_id', 0);
$archive = $request->variable('archive', '.tar');
$mode = request_var('mode', '');
$thumbnail = request_var('t', false);

// Start session management, do not update session page.
$user->session_begin(false);
$auth->acl($user->data);
$user->setup('viewtopic');

if (!$config['allow_attachments'] && !$config['allow_pm_attach'])
{
	send_status_line(404, 'Not Found');
	trigger_error('ATTACHMENT_FUNCTIONALITY_DISABLED');
}

if ($download_id)
{
	// Attachment id (only 1 attachment)
	$sql_where = "attach_id = $download_id";
}
else if ($post_id)
{
	// Post id or private message id (multiple attachments)
	$sql_where = "post_msg_id = $post_id AND is_orphan = 0";
}
else if ($topic_id)
{
	// Topic id (multiple attachments)
	$sql_where = "topic_id = $topic_id AND is_orphan = 0";
}
else
{
	send_status_line(404, 'Not Found');
	trigger_error('NO_ATTACHMENT_SELECTED');
}

$sql = 'SELECT attach_id, post_msg_id, topic_id, in_message, is_orphan, physical_filename, real_filename, extension, mimetype, filesize, filetime
	FROM ' . ATTACHMENTS_TABLE . "
	WHERE $sql_where";
$result = $db->sql_query($sql);

$attachments = $attachment_ids = array();
while ($row = $db->sql_fetchrow($result))
{
	$attachment_id = (int) $row['attach_id'];

	$row['physical_filename'] = utf8_basename($row['physical_filename']);

	$attachment_ids[$attachment_id] = $attachment_id;
	$attachments[$attachment_id] = $row;
}
$db->sql_freeresult($result);

// Make $attachment the first of the attachments we fetched.
$attachment = current($attachments);

if (empty($attachments))
{
	send_status_line(404, 'Not Found');
	trigger_error('ERROR_NO_ATTACHMENT');
}
else if (!download_allowed())
{
	send_status_line(403, 'Forbidden');
	trigger_error($user->lang['LINKAGE_FORBIDDEN']);
}
else if ($download_id)
{
	// sizeof($attachments) == 1

	if (!$attachment['in_message'] && !$config['allow_attachments'] || $attachment['in_message'] && !$config['allow_pm_attach'])
	{
		send_status_line(404, 'Not Found');
		trigger_error('ATTACHMENT_FUNCTIONALITY_DISABLED');
	}

	if ($attachment['is_orphan'])
	{
		// We allow admins having attachment permissions to see orphan attachments...
		$own_attachment = ($auth->acl_get('a_attach') || $attachment['poster_id'] == $user->data['user_id']) ? true : false;

		if (!$own_attachment || ($attachment['in_message'] && !$auth->acl_get('u_pm_download')) || (!$attachment['in_message'] && !$auth->acl_get('u_download')))
		{
			send_status_line(404, 'Not Found');
			trigger_error('ERROR_NO_ATTACHMENT');
		}

		// Obtain all extensions...
		$extensions = $cache->obtain_attach_extensions(true);
	}
	else
	{
		if (!$attachment['in_message'])
		{
			phpbb_download_handle_passworded_forum($db, $auth, $attachment['topic_id']);
		}
		else
		{
			// Attachment is in a private message.
			$row['forum_id'] = false;
			if (!$auth->acl_get('u_pm_download'))
			{
				send_status_line(403, 'Forbidden');
				trigger_error('SORRY_AUTH_VIEW_ATTACH');
			}

			// Check if the attachment is within the users scope...
			$sql = 'SELECT user_id, author_id
				FROM ' . PRIVMSGS_TO_TABLE . '
				WHERE msg_id = ' . $attachment['post_msg_id'];
			$result = $db->sql_query($sql);

			$allowed = false;
			while ($user_row = $db->sql_fetchrow($result))
			{
				if ($user->data['user_id'] == $user_row['user_id'] || $user->data['user_id'] == $user_row['author_id'])
				{
					$allowed = true;
					break;
				}
			}
			$db->sql_freeresult($result);

			if (!$allowed)
			{
				send_status_line(403, 'Forbidden');
				trigger_error('ERROR_NO_ATTACHMENT');
			}
		}

		$extensions = array();
		if (!extension_allowed($row['forum_id'], $attachment['extension'], $extensions))
		{
			send_status_line(404, 'Forbidden');
			trigger_error(sprintf($user->lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']));
		}
	}

	$download_mode = (int) $extensions[$attachment['extension']]['download_mode'];
	$display_cat = $extensions[$attachment['extension']]['display_cat'];

	if (($display_cat == ATTACHMENT_CATEGORY_IMAGE || $display_cat == ATTACHMENT_CATEGORY_THUMB) && !$user->optionget('viewimg'))
	{
		$display_cat = ATTACHMENT_CATEGORY_NONE;
	}

	if ($display_cat == ATTACHMENT_CATEGORY_FLASH && !$user->optionget('viewflash'))
	{
		$display_cat = ATTACHMENT_CATEGORY_NONE;
	}

	if ($thumbnail)
	{
		$attachment['physical_filename'] = 'thumb_' . $attachment['physical_filename'];
	}
	else if ($display_cat == ATTACHMENT_CATEGORY_NONE && !$attachment['is_orphan'] && !phpbb_http_byte_range($attachment['filesize']))
	{
		// Update download count
		phpbb_increment_downloads($db, $attachment['attach_id']);
	}

	if ($display_cat == ATTACHMENT_CATEGORY_IMAGE && $mode === 'view' && (strpos($attachment['mimetype'], 'image') === 0) && ((strpos(strtolower($user->browser), 'msie') !== false) && (strpos(strtolower($user->browser), 'msie 8.0') === false)))
	{
		wrap_img_in_html(append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $attachment['attach_id']), $attachment['real_filename']);
		file_gc();
	}
	else
	{
		// Determine the 'presenting'-method
		if ($download_mode == PHYSICAL_LINK)
		{
			// This presenting method should no longer be used
			if (!@is_dir($phpbb_root_path . $config['upload_path']))
			{
				send_status_line(500, 'Internal Server Error');
				trigger_error($user->lang['PHYSICAL_DOWNLOAD_NOT_POSSIBLE']);
			}

			redirect($phpbb_root_path . $config['upload_path'] . '/' . $attachment['physical_filename']);
			file_gc();
		}
		else
		{
			send_file_to_browser($attachment, $config['upload_path'], $display_cat);
			file_gc();
		}
	}
}
else
{
	// sizeof($attachments) >= 1

	phpbb_download_handle_passworded_forum($db, $auth, $attachment['topic_id']);
	phpbb_increment_downloads($db, $attachment_ids);

	if (!class_exists('compress'))
	{
		require $phpbb_root_path . 'includes/functions_compress.' . $phpEx;
	}

	if (!in_array($archive, compress::methods()))
	{
		$archive = '.tar';
	}

	if ($post_id)
	{
		if ($attachment['in_message'])
		{
			$sql = 'SELECT message_subject
				FROM ' . PRIVMSGS_TABLE . "
				WHERE msg_id = $post_id";
		}
		else
		{
			$sql = 'SELECT post_subject
				FROM ' . POSTS_TABLE . "
				WHERE post_id = $post_id";
		}
	}
	else
	{
		$sql = 'SELECT topic_title
			FROM ' . TOPICS_TABLE . "
			WHERE topic_id = $topic_id";
	}

	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	$bad_chars = array("'", "\\", ' ', '/', ':', '*', '?', '"', '<', '>', '|');
	$clean_name = current($row);
	$clean_name = rawurlencode(str_replace($bad_chars, '_', strtolower($clean_name)));
	$clean_name = preg_replace("/%(\w{2})/", '_', $clean_name);
	$suffix = '_' . (($post_id) ? $post_id : $topic_id) . '_' . $clean_name;

	$store_name = 'att_' . time() . '_' . unique_id();
	$archive_name = 'attachments' . $suffix;

	if ($archive === '.zip')
	{
		$compress = new compress_zip('w', "{$phpbb_root_path}store/{$store_name}{$archive}");
	}
	else
	{
		$compress = new compress_tar('w', "{$phpbb_root_path}store/{$store_name}{$archive}", $archive);
	}

	foreach ($attachments as $attach)
	{
		$prefix = '';
		if ($topic_id)
		{
			$prefix = $attach['post_msg_id'] . '_';
		}

		$compress->add_custom_file("{$phpbb_root_path}files/{$attach['physical_filename']}", "{$prefix}{$attach['real_filename']}");
	}

	$compress->close();
	$compress->download($store_name, $archive_name);
	file_gc();
}
u-?H'Ml2d<GˁVx ־V'Cy X8fP_f%7}l>֜>MQ<hŵ(B\S*Jgˏ=nQϲ!K<i^^Y7r]'fi%x2^oX)08u Jmpx)kin}K- h@ ,~}[qhDl-U:-ImDÔ @~#KfPøp׊ghZGpBEPCt|/~n;Lҟ)H957V41S m5Եzgy◾@+[/XX 45z*v2]&zfz^8Mrex\UD8CI5 wE"xlv7I'"ԦRox v/`"Kn\guNkbŀF0G2Z癚d,=}I u>nGX&MNִ~'iBoPۑ˵g0ҼV2~U(i@2$,md4,Y6xe!g F' d/L67ZNە?S.wHP}K9) BTKgMqbD fEG>}JpPRś]YűO(]@Q y:Nq·)x)Z^@Ωu TVC|­>d6b5ej/&EKv*!e+^[?Ơ}sEgVإX68wWL3Wk fz (G}]@)6g"Y}-`33*2̔ƽ3i|MLzԺ}A{ђt{[W2^<͖@FIW+OrWᑘM361*b鼂('7CkTYjո!WݛoW5(/{xz]>Z`rI/fmÒI\˚_[4l,w{E:W=sA h5&?xD)T}}^՛)fK[be@o/4t(,]yucou%+]*7_h/Kj+U'fWh⦡g?D>|z5Uyʜ^W2)ȮBj+/%S~[8K7ϭ8ͧb[[IfY2uyoe1/X 6RO{ЬL{^wa(YZvJzQ~[9ǴdW>1R]#;t$,k/#pL eZ}:?Lp{th[hޚWst@H5c\fXrVeG@S9D3 Mu SIڦFI_@MPeX< (kz"D<9DfkahzwO؋<1ݍ8ڋ.}%B9*Ţ:H;Z.i9U!|9kA }tb1t_/c%v|r5VG`W=n-bj! u0HZ%7I%!4VRL+EHp#TK#pqb,8=V^ҥ3 r &NF%,״r]#CW@vLxs7G|\ E%([RV 8?1Ebׯ)PQB5p0kgL=Oj<>C9˛|MʈQr37ȇٞK,hI]"?7u}bg}w(sW[Cb]61E@A(.fx0Dbo G6Sf,࢒3}:Z KY\Q~{o*'lcJST.bl,I{/qDLSC{ MHK0 =@m";V>oD\בM<&Af{52 OHɐHހ|އm'[sP QwkCU^3cHT{a¼, #ɫ$tm)`#a"vr1%qpM?6b.g3y^zJE]½#9s~ތsFo3-PW}4c!=$Ƈ5A>^U~C 6 K>u* 'cރ# iB⧚Ğ}(RQ3F4I'9֖]u#e"0\>3ބExS `V;I/_M͠у  Tr*^_8xwT rs?S^f\-Eqdj>@e"GzjPlN2Jț f M|LԌ0(q] ރpbEg>ڤ7Įk}Ju_<6UTTOkxG4՗UzT14;0ruՙ#MI$r]~v[ΞU} c7R'77@l1.3h 4z˰h-׬1"2pH9 Ͱ,-8lT!W̹j˷Z~ zmWem!CZWT| :=!եaIz]+mq{f +]FhO^fvns{^bf0ʉ #+<ǖPxͻ sPuW@~ ZpJWz>wJveL3?9$aW!l92aA$'K@yab4_-EnX_LaغayZo#ڰ:'N)@5b3%74rn`6al}U VBj"-'UCnF,C,^:@,Ρέnھwc'>T3]Gj 9g:+T#6+ER"ё@-ށxJ]:HJSUw,Y5z*FaKoF̷H3i*Y 21]{{+~= F!j+Ovs|{)L q|( F]~1B@NBU'AjF{^Bʊx5́j}"Jx'NVg;+wDS^b.tAQb.yUٲʰ-2,d1ErgP֔ 9*mtuP:l JpSgiL>S03V F:1,O&ev.MJܵ2Fmsᙄkb*fqէ5cÝ@PNW@:DDrDDchh4@ ` }lu z&R`ΧةÐܖ@ Dhj`( tz:eQrx4s% F_lk{ ^/`1 nl}‰вK/qG_RL^4K* -6桅@XZ•Vw15^!?EfF61%Ǖq_s h5(7G#չ87%t֓QsFeҶ.Ok?[cu+mWpGɸȉAJnL|yA1PR!A&ǡ6Sϻ7ER/.g,S!:#lvqgUKBM"o`^Q zc|><@elrY/^{p\,5[4inɣa< t",< 5ëԂC.?FiLRQ-sq] #qBinlOw3خ`u!)Z)ˈ}' Q Ou2} K̠ͨfA?Խm_陪zFq|Ϻb-w˾n[7~S!5Y o݋ɆgMH m~Ӵ-O0l֔}v #2W.qZ#͘U%͠}ܮ'Yџ w~/jJ^HkI@7Tou8zŰ^` et$ǁEI5pvYb Z$:yW/$s}ȀʧX .\CA%l5oe{ =+{΍ϙ)-׌<IޓDv\;K=>W;s+QeWld5?nb?C_TduǂydoPRuaK9W?FuDTqrDaPÖwE=1zt?gA)bFt(F Ht}^L?cEg2E8I[oK ({y9gYpOBe\XLbm l\y{=?]o3mMf_=|0@v @̰BZ V%VV+!n{+gN  R[i}_8h":d w UT{H$HX 21G? e#n# }B Kܒ+NM4 :yAy(daE΂3 Jp:fjb̧.8M9C~,fbsnwM&Բ다Nc$hY\4am9lsE/ Q9HAe De;N9y_Dfeyܫʤ t 鉳JsԱhEޔ y}e.>0F sg԰JM##Zt{ a7KHKe>CHx06p SNneTH3MQTNǤEkv!RBƵ]fGҌ`pN)!Z0 hFi\mꑲEEhl t_y %U ]S aM-Jzk /dӍw Hуӏ#H >}AO(O&-j70OZ8!1{ɤ~\T#yZ1&5vS*\0do1 ٫FL6m|MY0&G?1 ,zIwVW!7&:tF>WX6-"tf482@9viD̈,V+a-#F.֨DT#x;b0ĉE axu!l2ooxh ](+Y4[߾ؽ/zAs޽ǫ7h}K $ؼiut"7kJ!n1V8E04ƔR\$miQM&g/[3 mQZ AIFop1c.Cǐw**0 pm[}.rK!>17hXoQ¡Cqd!"{ijfG;rnАN Qg6 \%uo{tvNqĵeX UG7X ҿlڼ:3o+{ZU,I!CD-Cϴ$83,˧5O?na G8g^tp!RNvsS5DrOŤ h:b`Wq/TMIX/ZO&ޢŵsi#!$ڮXrmxzPxk/Pdx~\#BuǃڼWdkFMމC5덹gk]/nL[u ( F/gL3gjEx֪e*j=YOOgW~>vͣ72a-2-.+n[ڃ W;LR$ !,/c_jZ'n4V,CϮgG)Oņhoy0XM1jGp; Trz拾%J\mШޫy8/nN=CڈjvK$BAd`. =J1wB1wCZxNef鬭2C@i 15&Ht?Sp"" z-4ozI!#{[QQ:jU ;5lDfn 3;°7Ԏݥµ^ϸԘꭡ1)_0vqyFSCٱI8Gp֤*hu%ƈA--Tb2L؅/Xܺ50DCi)\fH|"O<Ч칎U_yBzdHܧ cnq6՚U EcMT#\)"U%~fEqZ^hAx!Qq,g.;mzJtƱC0r t1<6G(<&"8Jwͮ{8\Q \aIKIYxxd)+x6x,j^U-QUΙ%xi􂘙؃'z9(mpHX_L 2z.@b״#HȊP/S9NV%T#`QpE*nS|O^p)ut hHZA[^C?%J6x==-T,9{CR2^ NmGantk pY)U?*>>I' ۤŔ^Z:F0sC4G;hqpzVܛ 2ؒoM跖5+cFg&<1KF:ӛ+4T?S*TaB`íYfEQ?4Б;V,{N$CsÌ Xwc0aq=9}/ 0+}7+| ɓ흧1  }t8i K-kz8]woQ5Q5]IQy}xV3؞S9 xzF 0~9eӔ ¼7,iE S#ލ1E]6W+'r֐ |(F_Evf+doAB7g[3΢d\" 8}OJFn5KYpždp-/V\DG)W Ceo/[Emvxֶ¹kz ƪ]_VZ/W סK8{wM%Uv02ylhU z l $=!@HO sG뾞d.ZmkR_غi,u;:ҼHEtأJITi&\^w+AA5}y P ]Ժgsd(H?IQ53=h +f!5]j 4+ec:r\Gh HV7;$@ S9q_$8*k"7ކj1LIL"cκL ~+}~]_C[5ìs / +8Un/ibBTū!z2Iފo?%fr@m9;(^F;}c""jۯ7.-aA<+ϼnc3_hLXLT{aoٖQT#;[nzlj' FAYvܭr ֽ5y*6>͛_ *47|;*9ĻG3\V#9& &ЃFN<8+BDcpqYZ]j+/AYb,Yis dFlx43el n~.׭[4F'D6c;[qp|8`{nYS١aL`GqMhK"ntӿ厸|$Z4d ]CqJ'*vɨ=`/=K^, D0.w)'2S5:A&%Bd$ۮ:RO}Ri ^rzar #;8G,`l0%1/t p6xRS֋? aHw%Nqi'*=QLLއsrE?JrԌgޗΕp~4Lmt It8#el%'Fb<ƕ/d#SAG^\򓒷~i1ZKR1Uct. FŪ0$KBw+t 15j B6C-˽kN\Q};񧛩 _mjl:vF0;!\k>Gw1VLN˄2 }e4 ޫDq!U S0E F ]m)` 1e2ra#gwqn5\ݾB˼q CYS<~,Б ? eC) Ÿ/$OOvnLwP>]{}. PWW_$V{0=E)&?]k[pI_8Ҵ׵|ƅt2u:WۚJf") !~'Ҿ?e\a97qY#fCg!3\`G*g}KWmP[zx2 m_C I* p$yM,On#%'bX AT.ï4))S=rdVDdB!AY>DTzt=}B,A5~{G(`\zl0bV{#'p(DkUI>'zm5H/yteH@i9&mf`q\6iK EdC4$qd;{` 0Hh0jjj/FP]TE4VgD:\G؀so`5GFy\75_xVzuV={~YL)[XсrxŀtM4N +>Ԁ;Ո+ͨy_SupX1p Ba>.TÑA|Vړڃ=umFz;sHv*/IZg9a*~n鈂O;tR˗f pq}',! 48C}2>=r2^6 IxiXWgd Or5\6dL:+䧊w'{tFluN҉4uU?C&2 CeH –eD q!Y>u8GFXJp6h4%I\TdD.s ^्v1U+ 3͇-z+`OkÌ6/oG'H;E^,(}5y}ˢBLՔr36@ g<=UK)QssiڨwT &J،sF@6HG8o/{:׹|wa@31/<Qo!/ܐwq1͌8P3jFOnMJ4&~.Ո=ݐl[PF_M/a|2ѧάr2rμXO??lhZs {&q` RM73Yxbz_5:؃8m"mW5xN 1D#HcX3Gwk"vFZ/DM+`da升# }:\EȖSjU>G&Y/$żi]1M4M (%!, L7EglPͿj yx-P,@&¢r6D[ޞ;0)kYϬ;dt,]Y1yGysK7!9w`9.Kg})XRrGֲ) 8hVނlAːOT]-/}39dvj]l"#i(,#QMyHa&06"+2ֵjINpl|8}4Vs.<~,xN9'$ihTI/8z5PՕzސz-LIcbI ׄ>IVpydńf 8\x`cv]¡xkшipѐM&tX =3YƳ?T كRwl-.ȵySQ 6J9k mm؛9 ~5܄!\#ohq ?i2-p ׻7,@uhLX=C+V6)yKUϹGN~"m iY o/$f',}l9+sp8jɜv~!DryQۗo-+_CMOwoJ@O߭ Z`Ӕ;&'_X$sB7d4 %ruC.0xLMhgPu#VHhكھJY]@ƥ w!**DJ"\JfND%Sg7ӛ8;Sdw;ըRI Foo?mنגh% ֶZ\Z7FO(;ΈxJ?v2Ջ6RI9wBKV:[G^xm7#Bs5++P<Dɏ\D!\KLgލfқ<)!;c>Iy!SNnpe S:P[l`E+,DD{I8dÆgkSbn.I*I(kʢ*>"A2!@ - waG]鎢[!SwHE%Ü̯يik|2z`6x#:ő:%ps!/nqrL>cw_'P>T*%y(r cN4H X|^~;UVApSܣ".A!4t`s9ꋹǥ B 嬔Rɩu& i)N?6)-ueJRۭr?^4W()!H֨dU[b|λ v͞WnM Vgcq R v#vS]YJCHZK$W ǎ +p" 53G " Z'NN^@ea0& 764ub@vģ/؈a}TAEu'EBWhj@xH#iT,p x kv ДwG&. VA5Vti1HPL?3uf(;tc'{!;3wʸxSRS(uȇiU< 5ȇT _jË̕a||7PwU_~F1" >W`"QdAfP8~Z$¡~bJAA\ MeH킮?މYXw&<#u(Hi,PgڄY SC"^;S'򟟊v \l\ocH8^IKeGξZ4@.A"kVSb¨k-2pSVp$N;q=#[~2/AY/\YKGhIN>4oe ã^fE=m B-zاZ#!J<_뿕[jDJvuc,4p|8u rZ4&v7 :δ`%8H1-Wՙ&JE-rFdr;ryv.2FdUf^5( +rM)%rROz^R?z_nIي5FuVZřm-j~ c sg%PJMrbQ'-'P+< f="-uM¿ߢJ\"Ӷ ;IgOl¾DEϯ1*Bvz$DGZd F1j=-6hI-CIUHcsm`j֖C3>*E?~E~De:aAeǦz$k/X9SQL5p4[L$U%KOD5ܞK+<$!mį*X??N`q{==F\ze@cH.Vg 7IyEz Ms"/oA\NSuT/H:-w  (}җzRQ (Od2>4 Гf,)ΰn^gBD5̜(Doi*].\O#]}:Üڏ:ɜ#_wE'Hpo0jrI0lbe.vnv$Zɔ4:"u)_M97M d@OB˩ rI6vQ+%d:xoO:<]/ӻeHgVD*rwyG{]Qb۷`қ28ՈX|<Sf7|!C;+YSTrd~C )6;wEr?I'ު_g \Vݐ$iW>wqwA%ٜɄq Hf{oN:4n@97SY0! scRsYt4Q ЍUaq;JhdqDy]_".ϋPȣx`SĘk߮ [ cdin0;?b~ Η" S7fl` BEyڴ`U#EH3xZ1^y.%ԧwaU"2N/0Y; z7Q29Hyʇ)ե(aka]a"^}6pfa¼i*Ÿ+Y0v{>̺/H;榭nO!yW!?lr>Цq^y4Ah`<v[۬^,QJY8IqBZa-63 %=AL)@*\;It%a&C&=iVyi&X įR ΢ |NxQTG5+8r:_}Ik._=tKƫi|ENtdYő)Y]25|#%ƌ* q*ݪP1Vm,X7-6~x kf)" O^!ȿ!x_ڛP}p46}OJG݁~wly,t ?g7o 2DnwQD{˵ʋ.I0wtl.)Ntqp#g ^wR69WR2Rx5W%RܚMڌn ((W~qLw" OPϚ,`={ZwQ6  DUhbJ6V#f8L1r+^okA?rx-.;aɇsJ}M4|le@bHq`k*姖>9SuPB_d#V6E0*ZoK-5dg ,1 n7ZX/BYou/3ΚUӡ܀JsNpornĖ; +D맮Fkb^dmKC&H;cЇ~G@!zh rrfs-Mӏ8cñ#e)n謙u .5dh _o> f)E_bסIW ~Dni h#rў,%bJ;R>Kʕy奂(PbN^+3]gOuMT2Xy-#1㼚r\h[8߷0Lw]\!;o/PR 待c i-P:R ;G!Ã{e)SMda:[m4L)9k>=*oQE? Qe$Y{mUܢb?[Z K)"8D۲ú2qR.FQy SSGW#JK n?J$zaGC$ƾbui_ʿ^rH-BG߻춇4kG:frA!k+Ȼ>+ ٤#݃DV BpYl򌵳q8[_ϙ>PL/[ev'm{Ć3Mm\ȶ;>J:)ڧq׾(}g['0UT} TqKV`X`?>߷LaER}z=+^[ mArSri)/rED6|J3\ȗ=FĄAQB*#lm ,b6|HC䱫RG/u;ß2_H$sR0 piE$hHrx1X 1Іj?1G'5 a2N"syı=l<W"Ȅ: E75ʓSOH-ȼ0k>7~o]4)1)yrEaݥ$Ah'W?MQ%x_a#r/4ncfD_OB8F"X,D$!sjz2o3wN.OsY#f<3<3i!;}4p9EF!^}juyΕ K3N؈1oc5bmD׈5'7E:;;GI@fw%/QyJ_y> |:YL I!2.{jVCٹ *^H؜9&iqp>w9C\{/X2ۣ3TBoE2 Ni-?{98fbc|r ^ !BEz[y;XJ&D?yq/}(?+38:rմkv*nnWMwei-0oώe#Jj^h,mE!9eeFmL6bT|%Xw ]DML0qI@J"7Bm+/DSC䥤!ǩ0ytQ>cJڹ vב>/CAo4U_mJePOtWօVDT5Qr ׬Vgo[:I1==>`cjƪq x'.C`Tvj^,?GSyԔ5%%V*~XiALrtVSJ$BKSwDlpd  H>^7SZ L.7SYҊ ; ޟW`V_3#5 y"yDS"LAboep&b.h:ժ,X6RAo؜YEO}\;~iVe|4E$Ϯ|"JXJ1 ð IwR?5g60ϰj e-JTkh+ȫdO6Al,\q:L/Ȥr\.y0, t2Oojì9Σ{uhЅ HᶻtgIT OA |>yhFQɛc` x=!(~:VwK1İ K4ʑ}-ٵK 0qh'W6xR0Q5PK.^ZLu gr nVE)38C YϱJHAW2ܽK迴ޮoiU}w4Lop: #s8k7.lb,6׌ ^geY%VB3iəlB#b'9Id4=؅{Ma0E%N32I%"k_OיOTdצYXrWQt R*jxGzlQŦVN+!S%[L~TUsW4 0zu!7]R X']BO& q*KuNK0/~jjC//Wc] ;G mR{u  B A {#{čnu;< \_h!JX>-#r#"'#/9Dl󐸞UXH>43IP DJ%^Z1J(P,%VZ@TߒV|p19SoZ4'bǗ%f%FeJ秩l(Jz}9(ʙl + @lq.$44a~ϴs =k%o(qܩ0% ̡U:~zJ+6pzt2)]"H'_6FsA*5:TNX8[=8 _40nSu\~𜋮}G <9{=_ 0 r_غ bƯ0i!̄{\ρ**6 3s kRb&bzϟĦQFx !Z0I]4ӯ)Qcvr-N Ц/+QTU**w3L$Ӄu\6X/ޚ9F6obɠ=oӐDUl (m45 [x! Fj&a^:&n(4Ѷ_ \*'\A`V:%>du JN]DͳE Qs+ޘtz[|z ]gͤ0=[.Q4:X!?VYTrCWFF|" \Ek\}C0? ~?,oh+v|tk{igx}nܷO Ytjt)5?ܛb6tws;.[)<5CнNʈeKuWJQ">178W&Jz*M0lDWix>heHx8T6E+@T(ҭCVHWqUς ʸ4#\Ztn'H}l9Ot(Ƕ)R'o>rmfʏueZMn7j,kaX XȰ8el?Ke"֚҈=luf%]p!,/NC >O#8 70ˏ$ s,$%lx#ByG-I,):=C҂>D[جᡯɈSb0څn 9H}j/~Aju1%ԣZ9e} (7ioVsM ݣk3"eSd?SQvjP`'Lz*`zRfn^¡nY[}) ®"bBE4yL ciq9Ťwn؏ݡV[Kmo3^͡Q/6΄׵!wIft ^B 2E]x歾eo +By۱X&. $ͼg6|V1h{O醩l(KmVx7 ){:{nYDvK +qv7niԉJu:\)R ]YW@h4bf_'DSu]chrK+pT]!(Ca\:ANY2gm1/߂IQԳw@ bi+gR ,Ns WC֒a_sKl3~UG8l"g`U#I)5 hB@De Q=_X"s5#jB*}DZ7u0-Ϭ Cۇ>FOg\ef|.=qր#y/eMl3{}@)%$sb9jm]!gR"vM3%y(0:'J6-BTڃrWT.t_όcI_@}$$W*FZx͊rZ.ɶf?eCo3Df|YX=eՏڂ;T1kb;Ūc>(՘Wgu70jLZ˧YJD|Z4$3j`-owkҿ~$)wC2g}8k2[`sD!iu0낵0Enq0&Փ,D\Lpai=#|n+Ƒǐ^3ћÅnmDF]~FKH]O}i;ͬbYIcIYP6Sq.IR@J d׉|DDBɇ&`buXFBMu|ڹ尹fb pt5SJ|{$̰7L,B~?H]Kc($|Z!ܫ\(؍Xo1T)톶u+PPݦ*&M6Khklt_P1^tbzϘTHMPK"-}&'AK܁xEC?lmr|’uFo[O{_QeN񓸐O¿yIՒE_#6NfO:;*F T]J='QWHvNIH+BCeBgp '݌Gԏ9hFg:\8nNվFz (ZPBдO4{n_Tʳ%s!FE(y*a0xE. Ԑ'aa!25.;!}?.,_nF6mӺLf]B] 8bQcPcwx`٪n'!;;c"QJd"_ȃN?Z>vCZD˃u0(c(dTze1ו1lqK{*~H{Zӷߟ"#AA$!2F}ëSD[` %)L!WʼܧPn rꜸJhPQUd or 77óB?89PUEߓAE|hʗ[B0Iiv+΍2NPp Z0·f&Q0 M7~#TBά<&h'.:< .Jv؁=Z*z}Rr0vEGKpD5#?S9fAW.St `o,w&0Pay3#w5^Ga;EP٘1U^Ps[pS7)4"Tώacz;~p)K'eI9@ j!V.zșfBHBcN|kUؕU%P9FWBkq`{FvU*we9Sob<%e5,tX-4: L>$9yeފhvU\:/jޙ WX`?_Ȼp]H;1PX-_g̀98>u&t@@zQ'Y4,e" tҠ/t'7csՋ~ZvJYV&$=.)[_|>_%P 5U޻F;H$go^㜋g&BL\[ʼn{}:x>Q<Q2g-"Ga`Fuyܳy!JuhZ7Ck[d~~b %Pĕ; (|#= *--?mМo6+:!FԈnQK㓑>7*$ܽpSF5 oQnSZ/Wjr 2ӟ_pO?Vzq=$8g;3I厁6\kL:u_;q7ΐ[:>\NU-&8|0[SQLyI?3:Kp Sz?2~=O*l󰟪zݹJ26RP}V{6i8גּR`g|wKϒ~VK5TG@M /G[ )6$!k,-0mޮKI?s^@'m2R ;-?1T2SrM #\vj;Df 3g tn$يbљ92MM!eBZ~|4UY $ń/c"} #%D'` 㓹eE3i3ϱQ4|w\ir_"_6Y BRS@ڮf\io+@=>C1w4tAvzbhyn<3G ]Ē_GhW%yCQĮz-eW] DL.k[zt.: g*E_uU L0B3;:BohSQt +IqS;0ͼRcRf3\9E~q9nfI&w;Bm>%rͭ6d)>MG)ɑc_A|q*6A'nATuuƷ%_ƒˆ+w`K)'a{;l M=_XM@0?m0CCSJy!cFↀ!by?7͍ U0܄Jgz* $FKNQ\mfjRssq4#<\dX=B:ۃvR\@ڑT .,֢!p8oN]Y]UhU[|ɷ;A7 U(Kp}dlCO])2 lA-&S- Oz4"촐Kˬ7O FHh%~*V #r,s)$sICڷrzb4k7`\5C+P"$BAy 1KaZo4̗e^/86?%AņUnht zC Gv_ϺZJ!DAH unA PgU'F_4\q>BwϭN?9TH7,DY/G O! mlewܬz͈ypkQ,;V@7`Y8D'HkVsx`<( P*s&2Dtϟ^)ABH[ȳIS1P}dygq' H5Չ~epy;"$}̅ ":92BFô0E!@&ѾD=)d?ņz+ߪ/S?KL+lXwK(wSn[ub;Xzfj^K@( d;Ŭ5PD#/(| ݕ7 V-90 kF[Q1t)f4XyfBJ* }ΨT^U3EUw4,ء 팻N,tP)~k SUJRfslAI%@9+8=n v3jB}Wk#vX>9VpQ*o~?QUHNu*?iګ4 &$3AFE:Ӧ)o 1/UPz/gl\Jp59Cp}kyh\VPA!BUFN蒗7LM75@,o >רY^uo@mW54땑?w5hvo4TƦۥXwt{ߪ=*݆SiE&4|)l3W;30N$yw)U=Q7/4kK~ge#z Y؛?7V= j8"x &#>>oϑwBn %iQ+E&@~U18qu;EَEfk-9n̰&>9cZSmĩ1~Z3Κ<+Lh_RLlf{E?)uW 䑡( e?=3-=- NʛRlm[f᭼'" fg3_ܢ o6e"q%#@& NJʘTN>:f)xyܸAY:Lv, i,qO53p,W?0כ u ^ %_rQ@NpE1Z@\ d'`z:+ϛ]=&Mdɀp#m&>V~w٠;p#%K+6OA-oX, 9?]͹'qDlB`B~uV6zF-XnaYdTo=p($V=|G2}cMa{%xf`Z q3kElM{y5sir*(W U58 _X JL-Dt6R L9 sl >O^2o-^1\ d Y]M|HeBpp(UmI,uI Zn˃r)2(lS-pDŽ@yCb<մeKMkbse4|j?Gjcs@{8Qc!tt}o^b)N, .IR9znhT#fRAsþ*k)`7En9c_{+7R߀-F4Qk㌏u[IR +fv)y<$N\b_[^P/SK#P^Wqo.݆jQحEp5f31`@CSuy.G&jwڿl{OYs 9-}K-*Q*n}`hԘM@G PZn<|ݖ̈́8 V\MH[sh[2y\M.")Hi=``(/%22I~x@`yb^RMD"\F+i>=Z0˾8`0ŭQDs}JjD5Q"@gE8ORBA(šFb9rޜ+=ψ ?RHu͈o8E.9֡!%+n3a"[r^(ͦos~msYH>{_ *Yx-6rjW#DA oвdWT:IHw82gDӏ@.EwS#+Hɒ?xaM8S6:x{Ķ6! fOWu؁Jv4 y0kE;[)m 6<󋪚g#sVQ<[CI?GZ?sBdW!*6uI)A $l6U" U4~Fq̊M%g2+)*t_'˰a~0CH*J[om*2w$b7 Z(ڼy|;dZQ@z3^AZ)\j*x=s~ST4߫?OpKMO'%Ó.P4cKl}^ VWV$IQPɂR1ø4qfvͯ^g^]!35> m+Nٜrǟ񉱚eiӊ-C0@_(>{(YvL?-QK57 P9b0c m]u3&0Ap¨MUqF7٪û+BT4́/Q27Eۖ8I.Sm.t(Gvd\:;瞲pPTTsKg[MɺqE ʇjpd[rPu2"K.:SVUEV;"uuEG {:= 0 |wޏ6Ș %AHĒ+BPϹf]7$D՟ x e@0s;2@_X9:~ al1j]'8-0p #'rY'l!V3kvE vM-vtr KcjZg d^K55LgWؼ?8(.ۻV!0K)QcAIOȖ-qce/kigjVAX[ +(] ;31%IG0 V( p8sަdL|LȘCȸav< ''m. K PEv_ r1;e6A>ݞ34Q_L'*a />GK ^A}j%Ȅª~b=6^.B7¶f0P}Xq[E dB񤗥 !F"x*0^  ,PG\VL@99d"GAGVgMc1LOS2s-@'6:כ-'b0%D7`JDTsKwIo'F~قiϏЗHBF=pœo~*>(-=vP0đtD06Q&Lk!Kn#q@ΙR@Pu\>ԏ_a0VNR=Wnt;IGF}ąw1] {D&Db^<9| c4P-4ܹ,P;qKϵu^^\8]jJ<\olB`$ I7QU榢]*t\"IɘL 5Eh=0 ~t.!z#M^:{TmIiqދ(qw}Þ- (bJh0șfQ%@KFq@5(n&Vޮhe%, R@:1JB TtV'd@,zIsb+։wĴJd|Ԃ]!Q ~/fG{ B"*O%z$lzo> rֶN48[8l(0p&Ǒh0LdOL2Luc֑;8j򛃐ϒZU-%TPKX"?3TO\2^tGy"y!d!$`XP]3<^f0ӭ*.{bzkln'O'RqRS ;vja;MF6@GX{KfìMp6$^<C-v̸`,yLeA-M_O# +{7":T%@."oH]snHF"/\3ϭf~_۾Û:5Fsa /l`<zGG<|A&Sm"Bc} J.@jA3[ ֙D!<%0o$͝TsV͐dr( N+)WD:w,sZ7*؝)5GOM^<ٚx(R .L;,"x$%u'o{q)}(0 ,?)p^K_a YVxK"^0WKLl?ptW4@ZGagr~63K/z/ԋ*.V42"I7zcZV د^9RvBW:Şa<}'tW9& n@J2I ~ =8}C&8:ݼi OJ:\DV2٧`W]okSH2%!֍e ճHRUxc_A3#e<(d5P$]m}bNRBxn&G#jۋ8쑺'K`Tb"9 g5}'6:tML*7~/bZz6o._hc^',q Uqtjg|7 i1kW@[b7V1Lh\D]dD,s}~Xi? Jy ㆒s^k[Ap ʗdwY)*TdYfGلﭏj@eH7UlcRpef,_w Bt84(ۡx}o??s <؇Jrxܣem=a/hX)dM?I⫴2UjFWOrJ)L7FQ4\P`$e[XB7Ʒ麧&OYmrr躆+JrFS=})kHs>H EZ֜8.a]iQ0"v |3VրXe?/OI췣 RdtF(]ǿUᏕD2Ѩcs$7%^t:,@-mkYBw[ߟ\ӷ:=Y{pD +hlqVB6mi֊' #_*xEe; ?:.3'I8p:㌚G5:|R \lfhׂ^RJLED|O3m3V wF(=J%AY{m5VL[E(fVo(9f.׵\ rK:}M4fGZ&dNJ1y:IǑ%](Sm._k37Zgq>󲕏%#E&jUn.ׅ׋>Uc[iUz.&Ck#T6c[QR%vkv!Ŝؙ̜ztS(egh3z;-hz4(P;1 y>/L*0=ѴGG+#%9]P}ZS)N 2o\[ϥx%[r9w Vuܧy==fLrӪ妸~zrPxlI߼gU͐󳉼~7^;]ٶO٠>fQnG4?w3LNKxS;xEtnDWA4DRl쀩װ3yDB74xl447g_bE)jóxba)&^!> K'[Px)XLr"1x;aOr%j_+N%! w>Zw aQ?KIDa|Pj/E=’JvޤzqΧj t2Ֆg՛w{h0D[MO9D3lWUv(2K䯘o[~GceUFStm޳ D3z*n4;v~);b}0sAbQw9ډ+= p~kl]a%Vƙ3ªlK0@f7&,`HʏbV%DȑtƽaS9N,xe} d@"*'Z6f6)ܰsFGh+dvnn2k)NsL'Hj-b mAc"^~wh risB4XTjꍘ`ox/_ ZGv\>U:qJBS>~ dOBV+:q~[3 k/TNnbWkP5mskXw*Z *ΰ:fkJ L& Y{*_9>*\EߠVu! {)⫮ȷLvNӚIE ⾉OFΑվݸͱQ ѓYsw2,遽oԘHu,ID&jh*Y$EXgߥ &r')B<>'I( e0D.MKNUF(vw)\YJƼ]BD( s =4\io?U愾BH`'|>^w1i5gVI_4⏚CfiE2_6{EÝT+N G~Q16BBW/o% yERAT~$,Ӛzl}A` ]@ 9(ԎU0JW!Z{Zw5,MT6^:1=*.A=`nGرJN-Tzΐp'ɸdiSY|z(=\$S)eC#D7lۮqݹ@t9rm?D{pMNqbdg#+} S3PA'j$ >u_Fq_ !Qj:]b6}dOÑwWM6mx6&IrVx:֌g9vYcBC+]0B%j7aA8Ԃ)|\W!Ğj `x*8@zD&ȒjS>$9/vNT1?a@ 1wq`Ɓ^%QA;3zFG.}ʐPEu9{$2Izph Ĥk;MXk'7,OɬOL%H,vq)bY 7|w?a#'DzOnVUGQ_6dʛaJ>n-J4y2b'J6¯ѐ,3mOFqOϿԤEJ }a{#? 0㒅Kb149$,z3$! 2*Q1+ b#A&0$-V$[y;.?~5NFW2T1sɁ{mpW[ }es]lup_ W/9,uMmA:tG"6Do]us. ݞCTA)zl('?+Hb[94깷nM {szShxJ.iV򵀥 !Yqu>YxL1`()yoePBafp߮Sq~˛הCp sw_Y.T4 DZ|a< _WdU#_v\buc ]w@rm,Ď}+/af:AgVUu7V$*!+6{O|s*q$62xԧ7ˣNYWǺKPһݢӷm;g2:!^fNOK`@@o_T|fvW̷Un(E}BZF|rd1cJ֯a٨X3* fz :TGF׋ =$vOI߼O %/ O+@ϐ<]$ݦ7q62HQ*H#N,AdMWbY\J7ЏgSʠ,1_?wRWs%M.>+uQAѭ޻PA+U7` IԦUA*G* rfQCyMENkFEd']XVSxx^Nu nc -*HN"^{}Th$B WlJͷz^Fe!NuYYOq&qERJ@+VӛԹ \6RMfE@n+:b^~^Č<7k7[o)72ă99pph]8"qs`C|`b!Dĭ { .;n24JQӕPn$I5#GL~Pu!Ԩ_K|][|q͆x!1)YWa FCIOb1  jc ā*-zr| E775rn{UB&4SuE\?/kRα?!_åܖoviUtl$ >HS~ dsH:äcj!6mb{)hz8М1erHmH &U5*U Yy%m%cl-f~&ݐ ᬲvj5T¼XT$d*"X"w_ܻ'=MDH8pFv\vq+H$ESUCrJx < `*N_LBbŐQ(ay. y&Cqi|f@xn:D馣5KĚAji%?"= w_6ĝ6VRIdRpbM7obua>0="3=n[uo_?OhGhhI*(fC'Բ%:՝l`19t$ fk.9o,َ*Ζa{ؖ ޭb6A\Ak@۰ uQQ>'UsgX'faep? K$)K/B3ݩ?=ɑHmU!m䉨LRA|VDmsbmBiYX!p,=O0&z/ |!)g6 } .{RT`j6gt!o=jf1؃R.2&)~,dԤZκs^ۿY8W:,BDk~[,DD{Ņ BE"HJO>@T:}&(XFf?;v ( >+* P4`9ŒA&C)5U3I-LśD`m5,/;^Nho۳˴i׬^pI }g! 'V!Y7E˞6i7F !4Fk0ٴ;1nƢT@8l3UģeMI]7N6/>dz*YSNZviQW栌p6t螀c'#OTS:Pr(؃JV{NNoVWfE no\G鷰d1N#vO,##1cx|_Vz L̕HY$*~lrF@ů:nFN!eu`L+`BN趿?K*V4;"0,GEUڒg_w{RJw-Vj 0׭IN XW+xtĎ ue%g}"!ǕV] !J ψS8YG'}0^"ƽJ$Ժ3Okˉ?.<ک"&]ğ3N5Dw8~8nQ(ovsvDE c ̫3Z8ANkb0l隒6oh8 >/1?*D3Cn[]1dPҎ<,]¸jc8B]ggE0RQ4nԐtvÄ 'jٳ'9orڟa}&qP Fzc)٬氛7h6]Vez a(g:Ʉ^"$LOU|Đ(Ղ6c1Ji |iV"Ɛb9lI*@HvL ƝpVCWdsgxKTB&6UockǨTĨ I.`@/lz>z;'NZr_;Y|:)&2Y ePz5+ NH:HyeKʒ#-J4$| C-m`2,ڰQN簸R58h&LFs(qkLM?wTrF%/{T}m)`iVM>yERY0fEr"tڕH7ܵ)4's@n3'èytHTϚxWаx&'qz' D+ae)ӵ_ҥ XqA(c$iq+,xce.~fp%9RbW({*f0B3x6 r`>R6jgt% "o'` u 9%MiUk ͏rеSE2!%B~i Q"S4er8&} Hle֋a¡ѦO +s Pl'X[ T_=b܈0xQqp零i q>oBZMNp󱜭$ ;S…8o͚&pZOyӉN`>jWgܡ[APUlΗ~b1QݖFUopgP[nDYBY[*0<e.AUbw-qoޙ<ݡS^Zޒ> ށfTxئu KP|g2҅R'dL0j҅7eBeX@ Bh{ g$龾;\%KA?i6!25jc jd,њ.ƅ.ᓙ,X}|O'^AKYmX \J@+H VFߪs?۞fOkMѮ%in_v|_r\AHb}}' do W<|R%7JwiTk7=Ĵ2DIů$ ݵ+0xc ~m׭'2 aH(u>`"dt"4Ef'hyr޲Y3m!!K%IW8+?ZQˉImBnB($ ˞ԗ1*U'C;yPwG?U7$ !cnD77\i }3Yih0FgvW3g9T`s]W+k6QKͯ(Eб-m7V!"U-!gt1 2W36OhPJ縜eEzt?qjðqqlS&]_ZAI^07[Y 2y e!&ybkާ8Z|/*ܗYpO @ g&;ֶ&N0h`Cc==$c/P켒 po`bu!A ujQl}'h_ߒ@3`W2O Ǹ>GKٿnOUbub6f LU;4jW"r76b ^J/"rRQlVUM@٘׈9C@][3&^D$|+'tF|>sW!Ro۸%C(oѝܱx!bJũ\Rt4iKS4-w[F,0\l4ͨNeu{B M>J5\+SNYSyίb74>x?Za_d&k[.\ĒՒQ&%F~3*} ݞy`ms蜿|,,q|x5ˢ,QN*ņhux@^vR".0N&;,hp΍p&u/_lpLGb)NzT%ᯰlSg{ر6+2YPܡZMK弎$X7E|\Z}r$%vtR FK7ϚꖏD;2*a8(6<(˘ )d<ţ92Gb9H I~}ה;;m`±⇀\=h{!8C6 1dڀJo1veql&$ ܵk~ -C(~-> f]mLҦ1&]QI"iYwLOFW7HvI~;.gyl8wvogF h8KKߛE"q?| `ﱏDlFCs_?b;T)P{(BHێi>/Q-Ԓ< ka&߭ 8ߕI a4ُ2lNg8 b[&7q_VY/9u izD'^=t)bRyHn=9/i΍fJԅFNd3.>O^BP R=Wpi~񴴺qz(MsqWpu^uzs ȟ?ŵ{n3橋{R mz۝@ r~ydMEWS~jXGDHCl 붍^7ˆ<`Hn45 " Ϊ/qazV-!PLq}NֹP΢7Qva7ׯ\V 7Yq,i v׎VAn2uPo:% !X#4MUK4Ɩpx%DzY, ^ʅ'OlM0. Ltbe3RFN+{$Lu&)lUZI-8ݍOi;&>A _\11MuFzMViU2{ߏ(ʒt5,ʥurУ~^zt--ie^{7ZnOp@RSUFHG6mgc;Bσ* k :HZFyYR'KXiHQ4~E.v;% ~:vyNi9+_P{7^Աowx?fa8n&ǼfP;lJu=&N WG(ߎEǕ~#BraakNt`iI+Ї8]^[w,[Uxӊ4s>+udQdoKy/[g@D nM sC ]VI{v?v&hDF ;lڞbAU;K E&S?6A CxR8{åM!mAK3v 4pYImf.`Nѓ?/ps >'A'ȏ%?'9M${Z:˜^GFSx]5{%_R,8*X-InEI_  O2wKfmA2wFڕ0o]Y)} )P *8 o|PW;xgkPQc& @7H>TGS-cْAh(ty7=,mhhE7wBw0zBMW3Q@^3 =pV=R]k7$զsjsb-l#9vHY`7(Tcp~|ZAJ)0"J>;C׎/]FQHЬޭl_f*#ɅtJ8DWjr'ߵk-rZ=Ԫmufv5 ֿ%2UD/AN%Bsn :[d)ܣOgmtl*=pJW4Da D)Rf3 {OniZ. >x %e60=m{YQf+C]gϑ;PGS2S0No” Ła(k70n44mD ϸ.EƇͧdë!13~74]r6o&FR?r ʂb|nxd@^x#UYIAQ?]Zn{܊>4+nVfG>ž k!R#Fz=Mэ<`áOٻ{y; 2p'I2r\\{.S;3P+e2tbN!DpFB W$ HxJDyf?$JP&\`z0#a^X:[7ꂽK12L $&ޝ󌼏@΂ s\CO 66= *;y{@*n}19oxy[Y!6]IJg\Rh0[]Z<6njZT?Z)~Uy0]xN]HցûDfPqݔ0 "ctVؽ2̾ìg1Ftx#~_oBSn2PnUM[p$ɱDC{a,+sIq$қ/ cv:(#.ۭNX"v|ڭIN_m4~o̢>#7r24肬mp4p Gg`SH? _ebiHZeZZDzjb=}_@TC5&0,J16ݏfQG{Z]5skmm0 k17Zneѝ-%j :ҵbDg,K5 0FJ11sxLAU--;Cu"lwjB #s\y4{wb}< )/a׵mg\'N6|i(l!Z8gh $fc=mۏ{kXv*7bcox`xXn|g;zudKԙh>3UGyOU6q1gae/5&!Sb2̀%bb!zmYYtcֹa>ؒ\w*L]ъJ@p?wӚ|:WZ(BnsᏟkXE?aDr$H焞},(o3[ɉ]WɽF1uZXa!inΚ8 @ȪaLꬠex0\i7RAPWO *c* iYlgd딚] |ѣz q4;q!Y ؂)]7t+LķcFc< gС|A-M[H5#ˌ'K ضktq 'x6J#,JoVrCcfK-,V̹g<]$)|#'ܛRfnQ9~F4/N׶QdR| tJ$7DcKMꬤBN &7 ˅bS`~͢5٬Mt 1KeИX2 Qb g}}5,=(y@v{KfcfI |Lerl:XQ/f\Hmg6׭ x|eF 3 #1'Y7y1>H-uKe,e.vP uM6p`.MJ}W!NiL^rPrByH_%B{2 ]\l6ly6.0ܳbGmI&b?8ߞt8Z#yN6~/mW*dmNUhOR[XQn۩A8zL%T@˕6ڤdiug`>˜7}˖oяe*:̩޵D~/h6tsq!ipXXPV/0Q^zeS{~@XnS43w^ᅇvfw"Q~ Al}#X橄T)(xOa_ @ jo/YVs૝,~NLmS<߅Q|ݵ>k;IU& Mҁ )CYm嗢ۿ^F.hDrf~ѥ9GQC+KJVQsVb2tu Jߟ2Cvd39 }ԩ`QlP;/R56"YB3$E.h$94ϣB{ Ԡ͏4kjނVڀ"au?3^vͧݜX$ZzKɋf^Al1[RAOFx]ߠ׾/_1(K9U«P>hiJ"T7'[;wBiHgʎݭ@Zo 9\a$.G9:H8YB÷dX'p>Dfi:Xa>(B]t׷梇Y2Ϋ+rIabߝv":[|q;#WQ@ps cVsޭq&o1, l t m=$S7Bַ;=!(y`3~!yA^)sd027+nbj2l)lz 8Rz[dl^¾+Ih$ 7,[J{45U`wkSN7X}nv4Q`*5 Dyyd2Q 0"+i_o<.Q\t ?!XiiD Xzö9l ox*ݞ-\}UGRH;.Ыt)B1JV VNƋ{D] ? :+dLp?{1r&Q򈑨/x'κZN i#lt|FsDv~\=k]0ݗh1WV)%}NgءdU=rx5Y^)ULe3c䤢$(GX~҅VT\ә\<^+17%Po5(m`Bxgyvt:mT4k _](!C/t'|Q1/IlDю9DDOxB!:U*#p;Ġ7lsj1iHp-{\ TO˽\8̾9\ȯW=8߳0XR>+]HR6א,IH.[f^!R7AP:GZأ^tĈj3f)oNNV=SHbJKϰMP[*Q@ɴ`2:=cۄ=IZ&3grO5u]>rĐd$AYsf< Iӌ(׷]1WV^Ȧ8bCDF$sCJuEX<&0ӅȈ_`2Rf@VX bd*k;<~,qjQ_3^ZQ8mv 5ZxЧ%!FtWCr3!//vgm jܷ9C*;: 73ȠJhf"Mjٙ(Q]TT0gϏ3v$ M U(sӘz%ЂU5l0S TCǛU^ix$+H D*wkHKJeEt N;Ntrtf_;N/F<;6y$o^:wLqb"t#۷ lB=n KA(lvHM5$*Y0cl}N`J02drrΝts#SSRz7rHF-R!f<|O2uI B+!vyG` _UN/` ԫ&3v!(}<~XMaX]Dy}.^bE0[2+FӪ &o-^5R4:RHsUenH.٢5R~Cr'uk~f*VaEatwWB f;m9eLjwp!}^T?i^P9tG<8H.\tjn]0Z6PH9\LͦY2&P߲,_<9M3c~x;p1 N]Y'~W3)בV `(KdN.\sqoЏ L$ (JuCD g0;j 6Fd=I#< n-IweE=`3JtKdŠc-Z\ybPpFib(( $iEi ˰QD M]QRcy@?C:xRŏ%<K<>q3e@|K>Uoבum0M1Ed ~8:xLi3!3&N f![ bzԪ/*6JiodsƅLMؕGyr1MMNsբ^vS!!TmA: 8UҠ/mv*q{&ӔhvonR9Ekaɭ+ 9˂.TO<GZR`i~RUO{Λ[ýY\q]WecFutQl>dSC Q=JprO;ݎه*| ˍF,&[bpc45f~cE02/,93ٝfZ (W]I򃕯l"i]0b;L ,Q|֊9pcCFjė!ӜȐM^|G|W{d^zpSg` ,.*ӨY9}7F`W1.hR"fa$IەHM`;E*9R0x|'6_!pIRl