web/lib/Zend/Http/Client/Adapter/Socket.php
author Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Wed, 20 May 2015 18:36:35 +0200
changeset 1239 a1237e601500
parent 1230 68c69c656a2c
permissions -rw-r--r--
Added tag V04.013 for changeset 44e2f6edbc9c

<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @version    $Id$
 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Uri_Http
 */
require_once 'Zend/Uri/Http.php';
/**
 * @see Zend_Http_Client_Adapter_Interface
 */
require_once 'Zend/Http/Client/Adapter/Interface.php';
/**
 * @see Zend_Http_Client_Adapter_Stream
 */
require_once 'Zend/Http/Client/Adapter/Stream.php';

/**
 * A sockets based (stream_socket_client) adapter class for Zend_Http_Client. Can be used
 * on almost every PHP environment, and does not require any special extensions.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Client_Adapter_Socket implements Zend_Http_Client_Adapter_Interface, Zend_Http_Client_Adapter_Stream
{
    /**
     * The socket for server connection
     *
     * @var resource|null
     */
    protected $socket = null;

    /**
     * What host/port are we connected to?
     *
     * @var array
     */
    protected $connected_to = array(null, null);

    /**
     * Stream for storing output
     *
     * @var resource
     */
    protected $out_stream = null;

    /**
     * Parameters array
     *
     * @var array
     */
    protected $config = array(
        'persistent'    => false,
        'ssltransport'  => 'ssl',
        'sslcert'       => null,
        'sslpassphrase' => null,
        'sslusecontext' => false
    );

    /**
     * Request method - will be set by write() and might be used by read()
     *
     * @var string
     */
    protected $method = null;

    /**
     * Stream context
     *
     * @var resource
     */
    protected $_context = null;

    /**
     * Adapter constructor, currently empty. Config is set using setConfig()
     *
     */
    public function __construct()
    {
    }

    /**
     * Set the configuration array for the adapter
     *
     * @param Zend_Config | array $config
     */
    public function setConfig($config = array())
    {
        if ($config instanceof Zend_Config) {
            $config = $config->toArray();

        } elseif (! is_array($config)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                'Array or Zend_Config object expected, got ' . gettype($config)
            );
        }

        foreach ($config as $k => $v) {
            $this->config[strtolower($k)] = $v;
        }
    }

    /**
      * Retrieve the array of all configuration options
      *
      * @return array
      */
     public function getConfig()
     {
         return $this->config;
     }

     /**
     * Set the stream context for the TCP connection to the server
     *
     * Can accept either a pre-existing stream context resource, or an array
     * of stream options, similar to the options array passed to the
     * stream_context_create() PHP function. In such case a new stream context
     * will be created using the passed options.
     *
     * @since  Zend Framework 1.9
     *
     * @param  mixed $context Stream context or array of context options
     * @return Zend_Http_Client_Adapter_Socket
     */
    public function setStreamContext($context)
    {
        if (is_resource($context) && get_resource_type($context) == 'stream-context') {
            $this->_context = $context;

        } elseif (is_array($context)) {
            $this->_context = stream_context_create($context);

        } else {
            // Invalid parameter
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                "Expecting either a stream context resource or array, got " . gettype($context)
            );
        }

        return $this;
    }

    /**
     * Get the stream context for the TCP connection to the server.
     *
     * If no stream context is set, will create a default one.
     *
     * @return resource
     */
    public function getStreamContext()
    {
        if (! $this->_context) {
            $this->_context = stream_context_create();
        }

        return $this->_context;
    }

    /**
     * Connect to the remote server
     *
     * @param string  $host
     * @param int     $port
     * @param boolean $secure
     */
    public function connect($host, $port = 80, $secure = false)
    {
        // If the URI should be accessed via SSL, prepend the Hostname with ssl://
        $host = ($secure ? $this->config['ssltransport'] : 'tcp') . '://' . $host;

        // If we are connected to the wrong host, disconnect first
        if (($this->connected_to[0] != $host || $this->connected_to[1] != $port)) {
            if (is_resource($this->socket)) $this->close();
        }

        // Now, if we are not connected, connect
        if (! is_resource($this->socket) || ! $this->config['keepalive']) {
            $context = $this->getStreamContext();
            if ($secure || $this->config['sslusecontext']) {
                if ($this->config['sslcert'] !== null) {
                    if (! stream_context_set_option($context, 'ssl', 'local_cert',
                                                    $this->config['sslcert'])) {
                        require_once 'Zend/Http/Client/Adapter/Exception.php';
                        throw new Zend_Http_Client_Adapter_Exception('Unable to set sslcert option');
                    }
                }
                if ($this->config['sslpassphrase'] !== null) {
                    if (! stream_context_set_option($context, 'ssl', 'passphrase',
                                                    $this->config['sslpassphrase'])) {
                        require_once 'Zend/Http/Client/Adapter/Exception.php';
                        throw new Zend_Http_Client_Adapter_Exception('Unable to set sslpassphrase option');
                    }
                }
            }

            $flags = STREAM_CLIENT_CONNECT;
            if ($this->config['persistent']) $flags |= STREAM_CLIENT_PERSISTENT;

            $this->socket = @stream_socket_client($host . ':' . $port,
                                                  $errno,
                                                  $errstr,
                                                  (int) $this->config['timeout'],
                                                  $flags,
                                                  $context);

            if (! $this->socket) {
                $this->close();
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception(
                    'Unable to Connect to ' . $host . ':' . $port . '. Error #' . $errno . ': ' . $errstr);
            }

            // Set the stream timeout
            if (! stream_set_timeout($this->socket, (int) $this->config['timeout'])) {
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception('Unable to set the connection timeout');
            }

            // Update connected_to
            $this->connected_to = array($host, $port);
        }
    }

    /**
     * Send request to the remote server
     *
     * @param string        $method
     * @param Zend_Uri_Http $uri
     * @param string        $http_ver
     * @param array         $headers
     * @param string        $body
     * @return string Request as string
     */
    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
    {
        // Make sure we're properly connected
        if (! $this->socket) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception('Trying to write but we are not connected');
        }

        $host = $uri->getHost();
        $host = (strtolower($uri->getScheme()) == 'https' ? $this->config['ssltransport'] : 'tcp') . '://' . $host;
        if ($this->connected_to[0] != $host || $this->connected_to[1] != $uri->getPort()) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception('Trying to write but we are connected to the wrong host');
        }

        // Save request method for later
        $this->method = $method;

        // Build request headers
        $path = $uri->getPath();
        if ($uri->getQuery()) $path .= '?' . $uri->getQuery();
        $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
        foreach ($headers as $k => $v) {
            if (is_string($k)) $v = ucfirst($k) . ": $v";
            $request .= "$v\r\n";
        }

        if(is_resource($body)) {
            $request .= "\r\n";
        } else {
            // Add the request body
            $request .= "\r\n" . $body;
        }

        // Send the request
        if (! @fwrite($this->socket, $request)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception('Error writing request to server');
        }

        if(is_resource($body)) {
            if(stream_copy_to_stream($body, $this->socket) == 0) {
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception('Error writing request to server');
            }
        }

        return $request;
    }

    /**
     * Read response from server
     *
     * @return string
     */
    public function read()
    {
        // First, read headers only
        $response = '';
        $gotStatus = false;

        while (($line = @fgets($this->socket)) !== false) {
            $gotStatus = $gotStatus || (strpos($line, 'HTTP') !== false);
            if ($gotStatus) {
                $response .= $line;
                if (rtrim($line) === '') break;
            }
        }

        $this->_checkSocketReadTimeout();

        $statusCode = Zend_Http_Response::extractCode($response);

        // Handle 100 and 101 responses internally by restarting the read again
        if ($statusCode == 100 || $statusCode == 101) return $this->read();

        // Check headers to see what kind of connection / transfer encoding we have
        $headers = Zend_Http_Response::extractHeaders($response);

        /**
         * Responses to HEAD requests and 204 or 304 responses are not expected
         * to have a body - stop reading here
         */
        if ($statusCode == 304 || $statusCode == 204 ||
            $this->method == Zend_Http_Client::HEAD) {

            // Close the connection if requested to do so by the server
            if (isset($headers['connection']) && $headers['connection'] == 'close') {
                $this->close();
            }
            return $response;
        }

        // If we got a 'transfer-encoding: chunked' header
        if (isset($headers['transfer-encoding'])) {

            if (strtolower($headers['transfer-encoding']) == 'chunked') {

                do {
                    $line  = @fgets($this->socket);
                    $this->_checkSocketReadTimeout();

                    $chunk = $line;

                    // Figure out the next chunk size
                    $chunksize = trim($line);
                    if (! ctype_xdigit($chunksize)) {
                        $this->close();
                        require_once 'Zend/Http/Client/Adapter/Exception.php';
                        throw new Zend_Http_Client_Adapter_Exception('Invalid chunk size "' .
                            $chunksize . '" unable to read chunked body');
                    }

                    // Convert the hexadecimal value to plain integer
                    $chunksize = hexdec($chunksize);

                    // Read next chunk
                    $read_to = ftell($this->socket) + $chunksize;

                    do {
                        $current_pos = ftell($this->socket);
                        if ($current_pos >= $read_to) break;

                        if($this->out_stream) {
                            if(stream_copy_to_stream($this->socket, $this->out_stream, $read_to - $current_pos) == 0) {
                              $this->_checkSocketReadTimeout();
                              break;
                             }
                        } else {
                            $line = @fread($this->socket, $read_to - $current_pos);
                            if ($line === false || strlen($line) === 0) {
                                $this->_checkSocketReadTimeout();
                                break;
                            }
                                    $chunk .= $line;
                        }
                    } while (! feof($this->socket));

                    $chunk .= @fgets($this->socket);
                    $this->_checkSocketReadTimeout();

                    if(!$this->out_stream) {
                        $response .= $chunk;
                    }
                } while ($chunksize > 0);
            } else {
                $this->close();
        require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception('Cannot handle "' .
                    $headers['transfer-encoding'] . '" transfer encoding');
            }

            // We automatically decode chunked-messages when writing to a stream
            // this means we have to disallow the Zend_Http_Response to do it again
            if ($this->out_stream) {
                $response = str_ireplace("Transfer-Encoding: chunked\r\n", '', $response);
            }
        // Else, if we got the content-length header, read this number of bytes
        } elseif (isset($headers['content-length'])) {

            // If we got more than one Content-Length header (see ZF-9404) use
            // the last value sent
            if (is_array($headers['content-length'])) {
                $contentLength = $headers['content-length'][count($headers['content-length']) - 1];
            } else {
                $contentLength = $headers['content-length'];
            }

            $current_pos = ftell($this->socket);
            $chunk = '';

            for ($read_to = $current_pos + $contentLength;
                 $read_to > $current_pos;
                 $current_pos = ftell($this->socket)) {

                 if($this->out_stream) {
                     if(@stream_copy_to_stream($this->socket, $this->out_stream, $read_to - $current_pos) == 0) {
                          $this->_checkSocketReadTimeout();
                          break;
                     }
                 } else {
                    $chunk = @fread($this->socket, $read_to - $current_pos);
                    if ($chunk === false || strlen($chunk) === 0) {
                        $this->_checkSocketReadTimeout();
                        break;
                    }

                    $response .= $chunk;
                }

                // Break if the connection ended prematurely
                if (feof($this->socket)) break;
            }

        // Fallback: just read the response until EOF
        } else {

            do {
                if($this->out_stream) {
                    if(@stream_copy_to_stream($this->socket, $this->out_stream) == 0) {
                          $this->_checkSocketReadTimeout();
                          break;
                     }
                }  else {
                    $buff = @fread($this->socket, 8192);
                    if ($buff === false || strlen($buff) === 0) {
                        $this->_checkSocketReadTimeout();
                        break;
                    } else {
                        $response .= $buff;
                    }
                }

            } while (feof($this->socket) === false);

            $this->close();
        }

        // Close the connection if requested to do so by the server
        if (isset($headers['connection']) && $headers['connection'] == 'close') {
            $this->close();
        }

        return $response;
    }

    /**
     * Close the connection to the server
     *
     */
    public function close()
    {
        if (is_resource($this->socket)) @fclose($this->socket);
        $this->socket = null;
        $this->connected_to = array(null, null);
    }

    /**
     * Check if the socket has timed out - if so close connection and throw
     * an exception
     *
     * @throws Zend_Http_Client_Adapter_Exception with READ_TIMEOUT code
     */
    protected function _checkSocketReadTimeout()
    {
        if ($this->socket) {
            $info = stream_get_meta_data($this->socket);
            $timedout = $info['timed_out'];
            if ($timedout) {
                $this->close();
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception(
                    "Read timed out after {$this->config['timeout']} seconds",
                    Zend_Http_Client_Adapter_Exception::READ_TIMEOUT
                );
            }
        }
    }

    /**
     * Set output stream for the response
     *
     * @param resource $stream
     * @return Zend_Http_Client_Adapter_Socket
     */
    public function setOutputStream($stream)
    {
        $this->out_stream = $stream;
        return $this;
    }

    /**
     * Destructor: make sure the socket is disconnected
     *
     * If we are in persistent TCP mode, will not close the connection
     *
     */
    public function __destruct()
    {
        if (! $this->config['persistent']) {
            if ($this->socket) $this->close();
        }
    }
}
y &\ S+syUt)?G+_ZwaqeѻHmWZ6O25si . %:tpV٠Q&K]8T`{ܧ||3ǟbcL0TMcQCӠz`}_%W%:66W"-:2\͍VKB(>@ݝ>a/ASXl \^0׽;(>>yTˆc!7"NRrO` .he3H؋hPwQDD<*P"=laY#w|xJ9ϑ䃛!J!tef<Œ=~aVT#[b!p0ڲugjp(BfjԡOg  5 hE`M?)xGepS8 )tv^NLxd;M5Fh^U#^5˒KRXښ27ӌ O,? 9(W_zTAW` Jۜ[-Fj8Gw {}x?N DH=g/=/X$ه4N_¸ ^t`͜SS4#gDYPeΧ~^Z\܊&|ͫtU] .0|Qkt-g5~ kDB+ OϻuW+v^a7_`W"<(|_%bk/ΰ~J6KSڽ$W )XȘ@G:w*mpJ G'~;ns9(\ŁA2kbxn-1aivs|ICWiH\ =Tyfi d .bLVRU;T%xY%k~,B 2xuZ%e 2ߪ_ 6WاgFJ@qz[*`DxcZA0 zꊬ'L IJB?<6?_yA3gI(?WTa|uQ"3,KT߽E::<6|۠oINА[4LMZ6ݡs_$݇)`M0).9JqTmP/ Z Ťf Qf!1Y wtLOCcYZWmxh-P[&sH02yCszUIhwJ2:>tq NRQ,DIbkgcYnq-ʵĶm|<גx2DdNUh@=YШfe&j$|oQk9RG<k3qkQ`M66gk8.E}X4c/,mן , ^Ȝ0`Bl7Jґ 7' \UI'(,Д\SZ:]c`=>G8v]ZUҩ!/!)Q0Î!n4ub9dgĭZ[M&c8 gdI?}2zto1_` :n&<Œ7:ՅȪa6&ތI~ZY\$ِ%!U7УO ^\)j(|x"x *\0BBx\ Q_<^0 IUtivcTNIaq0D;?hf+!{9r'=ڵt ̡"~ze'B˚MvPnMRӨȉhSd[ݥH*՚hz*!q[lJnw>Ko~.76g )= -i:֨f/dp}gU"L,My m;sl@??N-G 4L|GO~{{a& %)Rp@JRuXCĎYWAQ/#뚠81 MQ섷ϩSr9Yqm@6xnr-̷6:T_'~P5cuv~PPĖ(`hjXD8E%/cZj8dh͢|:?:1z=;q<7Z[oB),U yT|?&́5j?y <@2j a wUc熙7FJ|upfF/$0(Uۧ멾[>pl$MEEmZe Dόu(T?DUc.c߃pN,8n93ފ me``^\hH]3uK5W$ə"U@ | Y*4N7S/R3lZ%0l|-ή&""b{Ԏz$vC\@LES:"ne~+bSo@'굹0m?9k5@܇uo!}$u%W mV =h:G`1vMWKFc *VD/,-y8tV4ln`;v0|j9A%6Cj;7JG,1uw_/  R#GqIvh%Ep2~diD~3cIܛ2ǟ;rXGpϡ+N~P-~?mxndfE mpBt~2ѝ2=px={q$U%9=|/v;᤽1Z ZkOpfH,y6.$o1)$'O@QÕY:^˱LeUJ}'`xb6bR#(,2̂62ѯ!Qf<7ҰprFʿ\bX{ }GS3\0`Rä0N6.;坕ޥMr[FP*:%gΛ?ӺXZNӺ pw~)1jI˂  6+|Y_C֑%`KkS~R.!=-tʂG[}Y3)gM"ROvd_a3gaLu$5<7%Gj]H~w>ࠑ r4| =E41a~UM}ZZQyY>HP;1RndNUu_ wU2SXF4u:`@e_ IhH uGrH"5s/_σl<@>#1(ƜutWV;Jv#XxQRdBL|^ G0,V*7c38&<ޫj&)>0Z$ 虣데=8 wpQϝ Œ&]y%QS-@Z %6ظ阜6H e*g`MTֲ4x.O+BƔcSnh61^bHsf<~p@^F3^YAUEpbX9lvw=j`cpr:VA!5IKÿoE!%Z-ʇ#]xM:VkVG;qy@ _P|T8@y O ,}]j$Gv_Pqi@"s#E`s Z ~C=<|9.}PWN਻fdl~ UIHSX A9B'o?Gmt"@'dvR?"' l/*#u|%;+gAT(.BtHot+7 ;R[x{|h$@Ł[UmM.iv1t-(&s[ET@{w?sq0;ebzt)Aȗ?z"CPp6֡|c5 7F̾^;[b:''[.%`S]qEHj{㘖9I4 Ժj/-W~跜\mn?|coOdWZ ]Ld[kCZD' ՖIJ21~K;f:q]pS˟V{4nǾ=+BYƽl-_8"ve7)GĠj_Ͳ0vKd#tjsCz\&Uz"2INl}9gX<^?V>]p\z6*l'"Bnj[ɶ{%NJB0r-tzI@taSk]˲+R]ʏ|oLJӹiŁ.!dﰛXmP?dZc9oh&=O$p; pAy#_%Nwh?T&bE|p8VMGk6v"]ܚ% F$xkDdGʧIEcY lok{~@0A~1ޒ6S OmIPo_ق̃- ,U.#paY5!\#8$i 8 PIG{&žH_%|HL}j/IWT-z~]/)lg<`oՃt\߃ܩ'C|BpΗ9o[It,tP'{x3gjbI*bD+]<٣W1~RjA!~|O s~6Tj\<:U c0oxMNzbYq1_P*LYvbVu{r<';Yy/jO‚bDkMv-ˆB"Ԕ!-8/Gza }d% $ q. 3k 1HiՃMD"ICB.^wק$| 7>p&:տN+Y+ޞ꺄䆯aMaƺdR"楦鮐D4'{.;,e\$ݾ#2NS{D)HdZR+zkD`dEy>!;0LhjhG|M>bkqH!e]XEf& N~J>wʍQbo%򭻢;{f1,L gӗp&ƒzUx:D؎s~%f >S)&S6j wc+xWG*v0 N_7E ݕFbpW|j6u9ZƜq)%Rzr +s8ɾCfr n;FJ&JNdJ$3ۜd>YQg@0 uYF1c8'@Au!±lJ"18^;KKNo1/ݮ\$1ͿpNƫ@0-z<[@xN+*/Ǵъ0LWGnr+0gr->rY< ̸ȥB"Ƴ!!'[B8c/|? 'L-gڷSDǔ]tY j¶<95ts@…x)0Mx.T"mdQhqo hrAI I c *sA,dރTwPxrQq; }NeyɯI5QsqPh["gE3U QޠC`Z/N  [@ Zǫ}K6:8C4DR2d;)]3i5QdwF;_rV ITY/ .v2A&&]BS@sh+)Gܾ-.` DuFCJho)6F_ҁ7!c޸OKee`M8{[ |QYDD#`9zOgVW Tj݄ *0;k_mo1Ll2\WTHL7\ <_PzcDjIb 'u(OqKbK<7￶W+e2]tJ 'w{PX'5Yxȡ 7iճ;I}7+U2(Z+!ݛ4-.'Ǧ{S.)7D< ՏXWMX!T%3'&5gk-g]!`7͵鎲-<{:Bj\lĖpѷ +MfZYB䭂hjgqUiF :?{gP5#;L@$KLQɔgx'+N!+XW.-U )~?a6WsQO%FG|`?^q..EEZ2*dK"?'Ǵn2#S3M4# ;:5ULxPBNd)}T(;[*z|KY3̷YȔ9zߤ . rpf}&_f:]j!y6O-3nxe[ ͧnv F[owuRO[(J(+jGVâ69zkdl4K%\2%"u x9Wp5CyzcT1-'01I@7xکRB?^6Ã@1{ULuV< dS a a<,Te f{rP]EwE2ddJz]9XTk:hy|P։/) R&l@!TfQ[chB OwrAM P$Jj:`E34ObۂűFmk@N8ُqLYjSlRxj%4A6*sWKP10OyōW"v쾳Fc7ӧ0@KI!>#P8RMmPE8:澜CPJ4DMHw0)\[蓥ȅp10Ax/b}ք<Y{lfGٜf ;; oT'sMyin= D  !b.d0e)7Ӽruc#M5798dv!}60ֲ **n??]=.'sU3avt P' DQ^T# D>2{@\-*խ! 'F)8ip©U#l"r8"I{ll I⌴ndi Wp =wcZx:UkE^3M 3yp{SkU2^.l|*4}co٣JL]qL,֤ {0+LN~qT್JGC}%.XrtL<py.ɤ8pxGK=!D5!ܤ@jpC4r-rtǀ&v4Q3оjf󄅯B߮X2F԰˦b`#3͸),G퀜~9 홝C( pB]W$I'ss-]ڧ^ ~KeZxӜΫtL42);honr/IXmbQC]74D_) :@83do{SaV.IDbhHN͏ms ٖ3<8@e%f%XүK-j9o 8O/"hF/dYJXAuXx S֊A;秮Mٗz#:kv%ORdP{}~pCuHZ@SrUppw@˹I#:w8)uH7t͍]TZ&jtKj]j7eR tg+1)F?a~K =ӧm $hÊwsJ==,^3봬PSbO !RW?o{vVOz'l2Ww.91E0 $3(T631W_oe4%ﰵ7|fe(95It{trُʿW>._jn Bg TQR>VTgXْp^U_K؆`KϕN0Ps;sr!Vl݊24?PiB&gS熎-b+ v鄇7u( Đ6"sVu3$˼ bwk'jO]d6.$e]D #?\)Ha$=՜AIK?)g_ffPd.)qq -FØTP{PX:?1F_Bh5)$ ֢IA.yJu涸__8׽q^ lUĆejC?@uOGX5G׀iW.{PX0s^EiE<{,@l^QId#ǰmO  pZjm\G5H^]x\ƚXtSzsBoĥ fTit1:/K1s~QB ȕ!Dִ9I1AÃ~WSa;_hIƓo"(H#m_*D;B$ʁ9;T]K[@18kiSc*=bX&7bT- 4 Y <}{5BWe֕|3]~G$˂fx'XnogC6[F!Bq4a GvY һv/A\Pt5BiTXw0r{^gA ,|B}zAwX,ֽ~c,@!+*W/ǯICz+Xϑ~cB6eNAc#y+d,CDGZG8ID/7@49Pt XWB|"D ȉo"7oE*>2?,9g|%.sWA{N64gw߉^5PpTِ︋V[6oQ[ 4}f8uq̵EzOE'ΐB=Y29sC݇ 7I7ؘq2&yl̞GPg%I/O~WSZKר8i7-S25b^*߼Ո)~^v=nCc mFqie뿻$rtrU#vDL$@(*K>D$NERS1,븛/FRPG+ 7U%=#z?KObHR v*{47Ewi އ܆o+pe__g,b"n*[c#u auDˤ~H"v7ZF3m:6ԉ"qF !) (x058NG]XO Tgo({ }E Qu%\̈:m%'̼jhG$M7;gCt}L9 fV0if6VK<8.^`fG+;4Y$\X&c+'g.00Ilx@)0 To qL:wpJDɾXEf,AaEt">V`D]$01red+ZGe'w v&J J&()(G-ojIA_7~x}b){s~g3tB#i$!&b~'*+tCj\+asL+^QHuu߭7"A o7izcß^ Hh"&\Jx6E!0=+TyÇO+P#R  i}afn~0n4c010Xkg 6.usػitvmQp=(,g*g}8$#SJ)V>Ҳɢ=e3SuAȫ!u@_DŽt< ܁BIc4ǘpdK(7E*-yҌ]FKPXxFMUC?s52i/G6s"o9`cĕml/Cl{^p|0ǔnm\Eh|Bs1@[oLAem,-] TB)q2m LsE"gpQ( JLZO"C}ʽ=$[Eꛏ$Q_}N# _W)g+G{Ehm86 f~M -ԛM͡@an`F'?_kR~&Eʼn]eOxyvZq Lȩ]ã:`Cdc&Rf7 fPo\]kJYK'@-'gITNoVHZ~8(Z",̞TC1nb<7sW!̐qR;1f \xATHA+CrDոT (8E<Pԡy~M.{,Ӈ2N\,X1. pOACh,Do#A8zZmݝ~ gdShlgf7(pdF G$8.Vhb'WlR y$O7*OE?J΅独V:e9qep ,B1K@scgܺW"(Ey)W673JE䓋#IL˃p%:r<n iwuhdЫGxA϶[m*Gi>)+~iW30 Q*KPGk|gW-ZYry߻# !q0gSV=r \@qf#Bw $E"HE9` lyE "#̄r7K |A>uaF8 &W_0q!(\i\XtvK* *=j^S&U>+\uӒ|`Yc6t1(vY³䇳ҿ'3"<]o<uVa1C0ytACS=,O#'icMSV. & s W \[ylF,`<~Nj\B|ˠ :c.f59tlCϠ}(S,_h=mv)Gjfi{0;nJQ(k*x|.m(ϟ.% Z{<~lh"jZ]$n8gP B >K}8G<øLQun{'%Q: G/dTC8T5 I};Jί\qa빦bCDca+0/Vv4~Ω+d> GN/@ނݓYr4Ġ7emJ~NC܍ S73seq~*IMR*q6|=G b; {jhkσЁ , ]<XClĊ~Sp Ӯ{)APTh<n]@)RY_ [ϊB}rym, MR/> kpgLp|]|3ÛlrhW 4_#33NP .JN|ZdPKlH^N xPnv]Ӡ-&mɗÚqz/R)٧xy%S)?qguPU/ONٻX+*3k@ݾɏZV_邚_ة)=QžX>[Vb43a] 8C\Ni'`,rm}ZM~vQ$ gfB`M $‘7dW8(3 xǶO/9S*k C^bo5J<8- } -j .Uq4!. UvJ-?UP(bBmP0=ܕAʬPX׻-:5((Â@@A(}j(ҦNCǎZu[+\uNNVŜ|T\^{l+2  F{P*i\>AOg'n+; =o*u+W+֍.[2 &5ÕSMŗ3͓l2WHǞO W{-9uQN3A R[a!rWY XOdTtSeA' 'Gnh<> )f @X>#beFUYY۱K[xS~S^< lw4h"W=.ceJLµxɠhs"'iרQJ{bQ9s9URCsB (y78*QĊ6gQ5Rdo<@?CwH %y_TQݽ2,2x!,JyO8wNH)R#LXݯ+gy %{!z–֡}V%+[lï~(JpNNƨKA GnZ)oڐ;_B;vұΫ*UhY7ޤ)=5%*m/+:_w 8aSfΪΝ3Bi}{_?>w14Gnӆ;{-h.Fhhv$= _uf7 &Y7XڬCwOJH%.7PNKM)yyȪzB䘔Sм²-0 By Y&B\f (Bfɷ@zv% 4eL[DZ9\fU~sα#$l!?HOw0ꆩQ {.ĀP(OU]dG.b"V? cCU`։!][pCZ0 $kk%'6pA:ɍİx' ӻ#:1Z9\Q!C1Y.; 2A+mnsfC%N,Gꟈ $Kr5,mQ\#sx2+CU%'ٱ~#ڞ*G":JQ-<txP42bT9F@0/&3OR"xS l^ELH-hsIUh1M |yMWFw~%* WTr[x6D葖ۨLJO%wmCY*!јYv/˼m) ~{a!-li.;H~F}~Q'x]e}?K1kB6ZaN˝p6~1kJ1?SKG 2ҡjV*,yٽ>yן-TPHiVIdާ.vNnҙ>*_ cK8h(KQ(@:ÿFpfu;%^q>ő&fooZVWH}$$[sBm!Ecx ([6I?\Zޱy/vhDY@6h8rt^FS_L(+ PȤDƊ9 Z$&)KNvyԳNfSpD[br:`%|^4,UR`)a(yMg{>:?<BlQ]D1F-`hQ)žpP =m&EM<ŀ ~ێiXad9g^ Dߥ@ 'QH͎$|S1Z|S*ˣaCO.|+XIV֏x2θ@n!PVD쨊Ty9gED X2[5<@; 0~!`dW}n6 !nF#d , brJa?lt09[rطj I#S'=-ʑݽɄk1Ln@3+j@= C,bG9R * ^:\=LBC ,}IAnOI3;XsE鼡iuoR<[Wr##;elUU~R~PgXBl`};X*.4\ RiCzphM릝8GP֍.d?-˙&<:knp˱to2aBtG)?wVZܽ Kbn5h"shblԉXEa*t5hsMcopLL /n}"V?i~v ŤDLrG^sih?ű{ GP%t&6σF,=w6sߚ`GǓ*nWhl8l]7|=kdXɠxG̭%[LAiid͎~|5+|dw:qϔ@hj6 O֏O63lYX>lbh ~|=DC_{0(^ 1, =Jؑ- h á|Ds"JzmƟ ;{6alj5Z>fApgRT?5mvxO<%F(1R)e *1jDK]Ֆ v ťoGLՆGqGc>0W`HG%=k/n (ՋpĚmg"$TΘFŝٗB!ң;UMUWقKbC-u)hRn'%!{R#4=BFc!ȉ5A2$EW1Æ6*|2Kg o5[|C'ͅƪ(Å̂52^UwpN,Rr(kE3ypC{s^OK!]1̐Lwӛy/Fd ]heMs&V`Ё3_/%M4 EK[HDzW/ R=@Kb)PV)חw+Ch;| Hfh֪rmVtLHȍ 񮌐Woy'z5|d-*:Vw|.<E^*#,Vk1;"H-ah 0v&Ɔa&չ [6|pxb:xb^\HVn r(,6G[X{hFӘRw!@闀o!r&w =9UtZ+W2v6|V%yTji ņ  ]z^ߍ((.#]"&07%VV'Jn ܝ,]bxXAcdP9#q >xXM#}~fphҞix] 9\ZW|1B[E%.v8ws31Z4*Q`gωi&Ixh#-N޷p )*II@YPJѓsȁ/Tbk7]t\5^ޒ#~>4pgcMo~TSJN&r1x.T!a-!?4]ӛq|l AUL=_|=-V.z<+T̎avLUX=\=a9Ba2@Aa.A2IuF?Όr!h3$DӖRejV5[U鹙ne# p?׃u{̏ʤh8f,E;HA$Vjfc ]t yw$fJ26jMB~ (DiMFЊ ů>?gpDQ Ws7o3llnXLG8!Zn.f-ay* r0uWG(K=kzuɌL`)2]΃N2w9K:u -{0įPi %^|e\ܝ d1Nuz~l /|F{VŚ@5+;&|?#s.\4MU,ĄRkUGw}tO9lx8[|Ͱ 5xXITo+9>ߦȲ#^&އ eyQ°.JȻن]nl/:hm -LHA5 ␥oAt&EVb_kғ :ֵO y5tFt%/UG(z7˯<z}&Y% ՝gjKXRZ xi`!kUc{iSՠg*c v\˴*'X) טZ'yD:;we laVO(R|ZRwFÚN![R^o6;Hq^c N]7$?HˀnaqFa5ZQu)[uս]7}m[w[i5pw:oh8BRKQ=@#QPE ~31!?Pđ3)4٦e Њ/@X!PGlh!  [X`{K^)lx@}!U5+;G5[ ĴY8)LޤOPڻ3aSpx|W l尦,V՘'.r%Hdb3ڞX/.zU"s#2]ooftkyoP؎bO+ev^\jB|iDpPwZΛ|T9^\&GyǙJIx(>A_;.XM'eHԹF{0wcRXwRZ.)f8_~im\=ڿL:BF0 gE!e[,Z<W{eLdg gш'iNQVR\d("~dryj/H8bVE2 stPOW z쭤lU7>>ߌzݮM@rM';h4 o=K)kѨa;A c?`EV4Ew1VK}b)o}[VS;&3Nl=v4E3pxC._PѸphG.udja?l3K<2ǫ"["KPc4#aY"+h"|E8k'BGh9OdWj.);PheZ*2tiV;R0^v"MQ/*4l]}\Z-KTm~{u3Gyv Y3LPupS\BF=#Ch tÿ$4Fz)Yž6bY4]%SvhhEKfJ#}d~yv0He%\.aVEX(=?8ҝQ{{ 1Jʺ.?_TM#4'Rn}2P2.s_S32oUU(a?P%|{gt!7zp!fr3\5O`[dEI^eѻUcW~^lo0Egj`g6Ѡ'>3QyE3s*\VO -A WTPx: }v]?U>2lP@92{M^X+YVOW uaaG13K&>9SWgFSYKBD~>8PgӮZ*tш|fbpc0vR!>>- ;&|2;k.eve_f[.Rancp G8=5rۢ' '_Wet3ZYl}X;HU$f{F=7JpOC"4NgՎGFq"CNpY+j0=@hmk m7W0RV_8ւq8(93I|t9k &HYhɪr)Q, E;nFbǷHW 8HexF8ZiG nF7$"MF{_&VAz$S!4H4x@7Vz}lTGه&a ZS']-2upa- ){5頞nJc]9pðP\P}'RtZ3_(Q1`A}YB 6uyZ+sq``7UJИ$4y][|!Hzc>њF+\H0$ah"B4Ҷkԣx0X,7O$r9~+##@J3*QeB+c5M(>h;*D뇀]786[4itjABؕn$N?:l3i$نg}%^0٭ #&[$ s|AsFz'I_ﵟAjE)d(0Xb5r4Ep=PZyNKOpNS W4~pM%+ q`T8b>~Ѹ 38^+ TTg;TzXuHt~!H=܌M|WW#LLmqS$ I!"3P8R,XjXDk ]LT^ۭ6S}ljr@EnKc1EVHtSZ2FM,: JFY>G%}8)V)_ԧ/M$bd}r$wepqRӷ:!)D$Kg:GVۀ' ru U= P;N(BLK#d8^SbTȴuow,կikg*t`o6-\s B]SU4l 1;bAY `N7j-ᇟ'.TI /8jc.}RA/ԟ28dP3,h'E \꭬t| 7p40&%]Gy]WZi&Nx+4%\K/!(uIF=\MUjvxO]Қ\%e0 G$ ;]X5[)X׍p@ . j!f \O&ĮQvw` TZ8 hJ;n;"t'BdӲ0Uje~Ӯ\Rڸ`f}%ƀGegh!??â%nOmܨX 3T[`/?2kL8B1GMz Fगk?vIH]Y TKcnzcT"2| Wv^,$/,9^K|qAx)ጆɇN$5*ȯ6EyӬ!rADcOɪ6,YzxHdfU&C4h.(!9Sg{&$#*Y }̕JO0Q)GcgRS]r0 eK.cnhB5_ 79U*ZP6HW󚃙@H<:duq>L%Q3Vf>FGs9(~)qZuowq%A$tN ?u~FK-aa0nt:+E$; s^ƇLB@kHk(V L2\+;,)?p7(_*? OZ`nwl!>pm Q|/UdC9^Pؑf_8%O3 {̖O±bK7X+=a87uHCZfj02O W5< `J=Я#%հ{~ bL{`yȊdN~QJ_2i}}*"VgN5J=&KɺQ` - y*)LR2(n,ÜS~ e?~1yTa,L'$lU]̠r e#H33p')&>Du)R?^Y?ucڣO`8/ErE.v-=B_Иe5qt?–iâ^CrAf gKh [1" NAݻh{˜|M aB. {$Ҫ fZ9ԝ'NzTdZ[ͯ?ԾjaS1 ܱKtlebUz"6xǡ0l3-fv?j23&Z$]% 8>gRn7՗0,A\+AX*LLP!ǂO D҉Re iĩ$$$0@ ;hc9݌H_ew4SDP"0-G8AlTʒQxAT+qg %Θ!k $:JՓ,Y9-2MMw.`w J8D|''"Q{0EF FzCzf6c| Y@Rjwg3c{P͟zpbL'6TTD?b >PTz*7AhbUpT+908BkK vWk<$Ypa4,5s\(SͶw`Xy250$ }&sa)q=Ӗ2!]+칵6[iObp;F; IL"iRkE,k٣[BDwt"#$h)Ƶ7!uIEDH SX"eP1 SJ``c/ beBQfD0M&.| ܦqcrYtOlQmso^w`4MPSKw9I{gn A5*)EN@M)aZ@U|&=șn!A%9jbdPG\D/Z"'(ˍ߸Z0)!5ipm~8c&vKcyv%Kj_G D]5" &Z\b!ʎBI@yeN(T6\5ʰg!BIޭ㰁bB'& u0_Թ0-梜\Z}ü VBz.#nzec}_''kС8K%*%!1}*/mꅶA*O^yilv,y'Y #U2A>*qm%6>K[#X̷?T-ӑx+Kq-Q0Dm jRgU?/**:nj#|Z75Ia?Z6ʔJR0zݰq'=]eePJvkF=/MY@_չH7RH_#݁ \ Zt2817IZ20xVtwBA=I!Рp`MY>ÙiYyh&RCU2[K{uk9>RgL*bn봑3m,,,hB1CvZ-M%&P^5 IJ$$ ]ZXuq2p SWYx-=Xij(fz+ ?S *t$:orI_kQeHu↚#e!͋mɖQ1 u9 uiGyŶ2DWּzJlט3pޤSg[;GqUI3=(ލ:Ɔ:jrY)%m.y0Ѡ4o$VQ}"Akwˠxc#\jAy%8rdwC:{@H=pީgkWāb\,"H˅%aD^_< +Vz;II^mwB,~R Bj_beb z2_)W!sjr|"*2%dKa^Qnw:'W%]$P8Nk*Feұ֚yOdC΁|O^5>C/cK\xe4J6E^C|mw63g`cx@Y5t ~D)30z^Aଈ!X)FAy 9pB<Ô] _9e60= 6'bQn[v׵B_r"ZD*Ԃ[. ŀh<I:,8ύQgy}:>[4I[ߡI {ynQ4K F?fQNDcf?CqC tPb\m~>ފz;Wk eET樜#XiB\vGyI{d㔥;ҸP .~ V k?/^ud k7Pu;;vilL̈bֽv͎ɤ| IR"|i,)C6"Tڝ$dDf e66nwNʼnf'~R 8ߦ%sj1O#0@W^|$$1~Ow:r]sU.9 ĐKffmvH@;f3Kz >%L6,HIՃ=[41Ik0ʛr% v]6H!^zpZ ̽GnKG-H5jⴒtlJSEl:Zj9w#.)@Epwf.gjŘ4 ~on*EヤVǞ:uDxԎր D>46_Ś#2}].`0%:hGle!]lߔߤf8) RX| X^qw梸Mk:mXyG /':sKb׾]O 7E^yE~hP;px }`JѺ,me&~Hɹ-U߬iAMC5W[tS/,GvO*q^!M.񲄖>'֔0R7Bȕ]4W+ҍ":|0uT!JxDeۻ6crK, nØIYN.S,DfśN4?l4v s4"SQ\0etl[d\>05r(aր"[ce;^)?K-$Q3E/B(D*hMf?jR/мURNp c×ur~r 9T+ G0rS㒚:aYkk# V$!D1s0{^!T>+|< @VTM !-srHn\!=P7fTQzr !BgN. JgCDDZ)RgooM6A+&9Q1Ltow *,:_G3g-O?77t.,r"[$DI?w*HRE\$dkࠚ絽]2[—H3[/$@4[_Uj\ŎK ~n(̢<Y5C/{[WW'j"2Np )n v`l' 0bB 4}4QD40\~3cD2Rh`9@hMH &S^}IE a;ozsXBHt0/Oc*0loOyhi=#ɒٴo$JWÁԡ5–R~/PWKfOD~[ßNe/% MB1VpSOZ ~ck¼ kngj,4z҉F9| Ak[qG"9u"}YZnwJX4-j; )mgE/Ins81ɧ+-,Eq]@}z•l%I%)+̓%;fWN& ,z)`1(0mԼ)RT<'mn4f9>Ai1[ZtV`@ӻD[{P<-Dcc4pAp@Z36'ẵ77дqt" 6gk{3p J N'aPm3I`5I@&{i+[8CmÂ;q*D`9Szj $AlswݣUOJʩ* BfmcņRkͽ q1AMꨛs =Z .\4+GŽ ;q䇰6n}p Ҏ2`]U"s +b"(EZ9sS7ې<,jϡ}.knJA(K:V٠kg^t!H+_42[$B.3a:_gkAc$@82A'e^CfSh] 9s3Ǹ+홴'&b5Ӕ{AB0+^0|-'r IBqy'c͊ͭkZŨA+pֹY< h]o뭘u`4h"%FIXU0r3JԺ,!#y+ϸ24(Dhǟ t<&qaC=, RK>/#ԧWp]y 7GvB]I@ز*ߛ +YE%9Tl+CtѮj+$|jR >ҲpA)\M|uy*cC߲:;+GQR&KðZY !B^sϔه(Хϩ_;7̏ YzJeV94%O\-k_$ ]'LRuN~Q fQzAe}\b|:Xc"B7fF~!KYAkc {Yrwv׉I+O#,cf'cPd0@h[F><dEn+9Әd##?!YD0HUk E)𐘍3 -A1™7P#,<n2;[híʻ!E t;h{钞ZJeF UJY*Bv̓$ٓOz&i{(J/}3=8<R.u}Zu-SԪ 2XgXڪudsIIϨ- [˴u/ǓhܿY)KNW T mU7(z4_ [kx W!ܝx 9T<phb5I&=! ē[x -9ɀ(;>'zMܠy>-6$*]bGXiI4D,0 Fm zj |f0;"5Tuv'( <5"Wp_?`sb~kIPv9,\~̢}cEo[S#g)vb-%Ub|o5`@ 7"+hK@OX7GfGv AX!E'v_(w/LuqUДq%̺$ ߃?k^I`azXzuIb\ yd 5ַܞu[4a|U U4h-b"3N;H8׻ЖqHj4Bsة"zuAj oK<  )O{Vv6.rUۻedCn<'WoH. 4uE5m-Bb|tXޭS!6AM)(+_ryŊtd=j Pc؂t/\j7q>1/JY#eO.B(TfDk!%Kq5Q-9QxݣIe5JѡAN4͒ u+ 8D1:@79׿ŠNBIBen(g~)^gW a^ǔo~ yjk pI=*E'[ʷZϸ5Ar~(C_&lh/>W匔:K9rLEڋ"& ۣ+VfͲ75{/)fhAQ#FT dZh"r~K?1lYpx|*kI\í S)BakDv>8]݅l3BeHh2b#|abu"~:MP(&3Td~5׃-u2B=m'rU@3&Dj-brb܍t ^r)zL+n\>[ +o =mxUz~(چR( G40e{"lAV GQR { ІA2 כn|ߓƎ )kK*!I1#15y§}:-3 T]ɋ_OqT0?F(k * T 0]# ,ԁҗ59Q'0ї#o+*'"6G?*x16 bdԶ*<B*83$3g\&laY\tpOMO\}YeE?7_$iC0@ x{}@L\ܺ(1y`atܸQބO@* :0,߂H 7Y V瘤CtaNHO~F@\`Mh SrBڳg[wھՁ vigMjF;['YbjD>Z_l|Gb'ٲOfɼ۶{uMofx5m#C9 cqn(,dpȵDC]e}L3!n+NaQ%PD h$>)M#{aXSnvz-~Z~@ W@VloJVͽ$Bu=&Մ~aLakjXˠfd~hNbC$1lQreCf*X*aM/ ΀es 4&=S*P=4wb$?4-c}|+S4̄UUPap @c,*+#}: ( p˱$`֦#)Ybʬ6sBՒ2{X@WZ BY[u4wlj3w WSEbR2t}J%:v)B(H[s%|c>B-hfҳ4]3LFզo@DGˀt E/|:#M+ݘȇ:K(3U%m"0wy `bO){77U(DEX)15GG<^Ė/Pʤ4!(L0~YD'A3*zħ`h`Ns%`-\#ҫ'Wm>E0ϟKV.8Ӱx.]flۧ]Yo0 q̐w}u١N}ƒs6DS=j2nV0n > 0x(.fE:T07f~9 OMuSȶeYCЧIep߱C|#j/O/^Zv='oegx`۴5 o| IBҏDk+$ դ_I D4-d5))Л8=^;-聙b kG-O+ʵ Zzr&ѧf KY˩ל =B„sW+ISd3& fN. C mw>wS:4Ĥb--6zcz7 \٫^t{W^پ0 ӥ2\6/.P{^a$6H4:i/YX s5Zf;j'\] \DuOeԒڐ4Aqi[˂*X# L(ID0XIcc{Iuf$u\9*pJF6~&8>;ðM Ss3EsVQJrEuAlRC-'Eq墂c!mi^ztMDL xwi]OĒlb+y큟ѣqi U:oF) Fɷ^UFx GUbrrTKubD__))<\I4r!yFDĺ=8=Afd7T.W>DӸԗo`y;Rvpiox;@@tRXOa| Lasנa8D| zĿ 5 e𦜡" _cRm[ʝϋ BjȜ )b۬X,aO9N &Gi 3 MG6[[]ٻGN rm].srlb:{$,ZKLA68ץ4M"%JZ$c\}PSl΂57 *b 7^ʓRi%S 0g#^]@ f7c!e[#Y=0k, i!A{_%$ I=旓`sI>rw |7H\ L@ά7XdyZ2V]0FrF\e,_A$QP%,޳<eeB0>u&A8)ZDbV*Z~hy7cfyD2ۊpq3:Ee=פpjDTxjS/lkiU{ŏmJ0fIuh)||i 2EW!A *!__ZO2T 7"+$&VD4=lG rXAct۰Z"h)몒tgU[aN(#)ŕ#!&4 2V,zx^Ʈ*Q͋Iʙ@/T602P~!uWw^]v #UC&@숗z&|dE%9D ps-ugE}&Oͩb6,ɑ5 /尩*Jv6Üa%$(D 0$E2S3YWYӭ|e;{+ VM*{u~2;f/bQRDf5͟73,hAܟ9p:\V4X Ydb#y9ä́OMK UxL(Q색ж$JU'ghm¤1fسvnL2`p[ꓗb1Og+7?tgE R8\Yu.* @XVh hG{ z'ɥyp` 01/0m>W3^"+\_ # lc 1_AcFfXɯTV s])yd8ewNx0[Z{UYxo#A.]fZيVw<ʃx55q>xݞQvqL`f,~y:)t9zK2@à,@1} $U-6)!%_شH^^gq̴5ߑGd7s'-7Zwi4Ih}?>g!<%2>1P`=S>*;urnFT?c Vf\6a?WawYFMjrF+[E62Cd+rYu$ ޲$~]\:y KI2&VWyu1%C*ier)f`\rWCt&ҝ2 b#Rol !a+(FxM;Nse^z)tSt׍VAPBZgkðg,LM!}=)8:] }}1 @#U8DPWymy.!]dX/$liLmTK%T:ܛڝ:|t ILB=55YD*x<2_<B JֲKЫ"7V߯$/tY,˂[ZUUWg%g+섃^?^a9F/.JԐWSގ[XK92l{bk ?,4 cPW? LhUB<0 {V V@Ndm.ۑGX࢒If7 3BИd{{*g1HzLtq1 fb:A=L4 ԳCU\`J%PQR%>GwgE z:(XB^n7mjM>.}|,2\$} /Ppx2gO* '#x *ˁ|Yq末 &h IKm#'w "TÏێu vcyoۗC>Y_ş+L}?8CeJ8ã6WB6<.xMAcO{e2WWQdHr=؛{ŬnF[s¯Ut,j1~ ^y ^$UӁӣ۱[W^x~?1@'p*T=i@2+9;pŀ*%/ Qr7G=):~"+ - 0YH*@OXGg"U‹.r}1~C@ScIL|0ejv!p1S$2q@IqBUeWɎ-"XkQE:G @}n@#)p9BCAk#+Fd}J? SC?w*})Zܧx5tyXQ ũ qd:7 ? H'mޯjY ;8˓J> +GrER}u:/qBkGyI*+Cs9K`E^QQJzzB8`~XzaWIh> 7Gc],˽d4 dHlͳAۧ<˶ҋ脊s~IlX]G;{$GFn̳;0GPlBdmLmz"Q X"Svl0kPK/;>>m^' ͬZ,]& X GXBP.$N*CziUY-X(Bb "tKP CN)Fg\_ָ 6pj'q-b7Qɒ6(h' &TruO/w`CM+}e)we2Q\'CFd1v+E{H9ba̮sMy=5 ,$#MS+h%DMl5ӻCV}5Sy Ǝv}' :[̣ٷU:[SPU4HEܼtJn9_;Šދq˸qP͆ULxx7bi^ɺ V1IzHӚ@i8O7%6tQz*3*Z(j͟?׀e`z1s8r`^D`d*Z 7"""]-L*n lV[l!FN-;w 3rVw4A jf9Jh?^ Gy4-Ss_:c5vR*rBĎx"]Q8w+u}mNj%Q2? 9vd"U\qx}mj *Güf A{u(TjF=VqE>;Dy8k@Y#i-kvыE~ZnӖjB#S:lV}/y)f't'iONT̄í L' iYb kŅ"[*7HOp:|1JG+ 1'̯'l3$^¢PĖ]Սe2 i(;oC$'dXV<*.5g?:Fp髌JFo۠lc4;-dY~3vMbu# ή8ФSDI~7c8BqyLnӚ6}l}R&dQ5n\t>FLW+P5^u#1urEpZY{b2ېKǪX!!'/S]uF:[mm-`{׭FˋOm5.$6lYE'pGgvF主@9\k9/ƨK668l0 j7C0z{K8.QBO/yGHКc1a5%l&[S)Q>iȭ#4+")Q"2 wǡc0(4W\Ӝ̲#af;yhP>Bڒ{O<ќoVΉ#U!*B8I!9*glJ=S/`3ek45'"H-Ⱦ$e*FXڊY#kP%/6D&.!;s š_4kn 5gl;B+Fo1Jx]r䢢_B*كcT*aV3>Q!}0j2#sCPK!+_jϸҍH/LDH;jiA}zI5'fZxjAC9կ}'*Q`6AgyElƊL39M&Zz]ŢS1h"ꢓ 3bDtQ&˼u˃$"h/vk4ߗC $UVwVNG -huTK'N';$щM/h IN+yG[6"ch2>K ޏ&"h0>as>hh/c:;逎,L*ZA!-qqIyd\gP&h@Wz3O>ՠqaҜT* U4x.O`Pw$uYͽMʺx3ENsWРgo^^)S3U mX 1<0+ЏA OBQE*->$h$Qp0"p/npY\g91" <7vzj 9 |aT*.w0unZ{1w!9H;-,rЮj)zQlh7i8ժ>ynuZ$J']sj N+mVynAx4Zvt1 JoJd`p8ܺܭ0R,XZM8ÕƹRDQ磼ېaT ]O1 #2ϓzȼ_"Mfbq,auw~~c w]3O:uul<5aAs-u?6Ed?bK/A% X0A"DB9(C.´Ӊqn*( `bI"? (Zd>d=7{pFVdwc R9țMHt!B&g~+EbY4ڕ;)QybB (`] ~k10'<]@ՆHQ `-Wrpt'|׽q#z<:[@hsX"]wr#ExZ"\h[ AK.<ʬ҆[L#e&4[B)C{bJXGx:Zrn,)RW ī3a@ |sP.6: *rO'k!#82".ܡr1<&I)?okaKdeJTI ^ +I S|7 QI8kYM _4Q{_[^Op4E<뗆aw %t96}PMdd;QM =J;e CbGlތ|rbDz!VLƃ)%"9ư9Mhey;`1c()Ư"8yQeRoaó/423.qk /t9T݆_ 8 ꛸?b$؀7E6(>= [KQ('΋ ~ҤLȖFD9; a@Wҧ@U&{sG9NdhEπ;~.p@ ?.sl L ++6ܛ]C-8:i U'QL񑎹}5ȎBpAi8tmcD]zG|Zz_جZ+^E@sRŵBZa$eyʖN{A="+PV"MއB)&|s2B T0#[T({q_-h_Qͩ/)iHz&d]Ė%Q07}e2Gnnz; ^8 vdQa5IF7h6"4&xUcX-Qq >ԁƲWf/eG}u6yjuߓ  P-w]` h>T}R\6:eMЮ騦z>W4CRp %UmJ2FG?"x=``K}9새vYZ9;chcloG!#yQ1@qqeeXd2J͘yEAQD=N.gvv;spK^-*'/3=;Pl#ݿ/mb%-, n;r:igY:0k&"FP9b´^B&ԘLiÙI9"F"؟,(k} ܆%7N2 8װ!lzoژ~{>}F>V,VV^N}|@)L-~<{^v9\MK~3}fx*!Z8z̶%ӓZi/~]<=Μ"U' >CG^qz |5TuI'EՊQ'dD d-@Xf#V8-y lU[󧊥PrdO.0\sr'bJ-݀f 0CIle {ˑ'Y\1Ieƙ DRn#7rV=(W|R ۏ$̺0?+Ӽ?F͔eHZ/1 BMoa ]3xS7(FDs&uG{5PC4ɂm{T M2 8_hsN+I˶Pa;!3Fi q;wCcāb'0 +!#jUVϖ̕ʡKRQ@Y)}3o:߁ OoN9O׵3!fWO{> 8D|M`RR7`s"HMx#]/> I !XiȪI临㹮5&hdJ}CB1 Z k*_&CwV7yڟ0t~ө~j߮R-0-jS=xu?YjAJ3@7gD@xGUEc۬Yt0oFƐ(b!}x%js欼Gp 'Es  * _-ͦaJT~gD t_EQBrI& $d`P*ď4NC_[`63ڪ){vps"?16qu&ReF%z@ x#LB݋.o>Ϡ2*? 3Lp2ԃ.}}-j19K<!Ӌh/guμ2qqJ;fM?F/ M@ьHȺp3|$iz vŲ0gb_3x%˞CC=69>9'}xqؿ{oQ"ꄽE9=ƞALqA;)U3欻ȑB C,D: d}g \~ɣ`_y QuB ~mRPwnZ4@G{5~#4 8"&ZT~H@7"Ŭ}/ʽMnI;a\l\D] \ /\Mb_8kƊ / ЃO,eMSaك|tn>^ODA62s#Rͽ! q6c_K0y)mr:{q'c љSNRB;*гܰ  SLFf音F麱Ok#e=<<[Bf4|ym3ki1e/ EVM4()f_}}pcdl64jF&70Gt;Wni$$z3w|+ߓ;ZX2q ڞ@RRA??$oֈ0'9j3 WB,Ve]~u A!3Pmf)(^#Z@`akd/}j=zI'llHqf¿ $LA&0tiX!u}(,g1eLphxh5qYq}:]ɪYP`O]?!RʓਊJ 8gKs13|UP+ ҕ?)x )L)3yҒ TE@&,Tݻ.G vf<: Qncs+glP04[-X,l%xħ8E6ANEV>+.Bw9"&8)$uܢ,觍J]L$tښ2-| B.;GBtxjM9|/7,n |OoVD{R T\9o|敹F.Ѩ^Tn2R"[53>s6e1M¹P^M+\=ub[@~BHA9]vQ̦:6R(> K5|rw!Nv>I2R;EQoK rsa~k`YXjDNM׊캒TUVkcȮΛ @d>]h9{X@zOd:-r TX= ِ&^; ceT1O#D vh5.1]S#a[`)48yȭOj'Ωb `րјex3q`cyE9PĮ#?iu 򄲪QHV"638˻:\XNF+pG=2迩YAL5v>3)Aҩ vsVκ|]aҵ/{vK7ccuy |z 0҇C4<X=feba/w.DDIp"tѯLGd9* uf'ʤ\ɦ*ZC-|(k37ʄ¦>O2֒*%μuSMĝ(p|] Fjb ]!"FRTmC :Y,.7@GLF5&;h<~1 BJ/4[F-3 )?)og rr}'zbB&fG7:: )[Ajb' Iգ"%AƵI@YY@l86H)\ *\rA&8pJ`9_)kMN|:/geK>XpϬZY/䶪1u$o23(?` A;;}XZA4"(S*bTY'(68q]eOb m2.-{doʸjA}I˲b*$2Uu5C-1P/'al9}'62%ti|byqY7;>|kGi9>h$~'5Tkl"!17MZ[M\r4>Fڜ!Ai Yɲ*(5Z H/iReeЃ  4ӲOHjEWYOcDQod6n̥~%g;&U |V,\xbQ ѫهV!}7E[qjixj>cD21~!p[SXE+E݊ O62krRQ"5U :qEibad DD^];g. Rc;% 4AB݀RyK$&zNbas״~4ȘN []\p^mڮ}dw@-Yk%cw7i?#˞eu+55"*DP.%CҀC yfS,@0ܖge5ܹޠW>2|#|xEǢ7½*r}jI\)VZ%$w d{,T\-Ϊ&4 b1Hg A7RuARYT,׭Y=k  T l]{-7cqү Q~"`Ja*NBky%J483:GdB %EL3WlTFXi;+TC)./Dn->b gep b =\Ob\o!Xn7Ğw;lw0(҈K#u@ IO683;TPn8^&S;zzKt-VeҦyu PHp^R_I+#C:跩TVv2e߅n  T3hQ|{19tШyX>*8{Mst4"L"3[\W0'/&Q;@V(/gT",/wzl&OXUnՆdjV39_?ꋅ`8w1)'ҪV?1'ĠWs!{2m̰޺f̊@JSo5d(zj9Rd;|fJM#ֻMN.<,‡heԨ\"Z~X R07|ZiaKm=`д(_yotҋX dvQb,~_נ KQĦ߲;ȡt@)DtPgkR1oxgsmF"*髦b8 vC_3ޞJ3W\|sՔ5H)Df-9[d QwP#ɾ]xޑ,&H ] $5(|;aՙ&b% bt&~tU9iF 3 sLy =Ao+)ѺN~ peb@& \|ld}I]֪*.r&)$Br2̈́4d0~G|"&p kGEhe;,+wt>y"c?0ډXC]" d5 STwpˋA݉ j1]PZe!gLyvBk)LQF`.y).r,t$fO:E23>[mQ_4e IУqW禕%= 11Ҝ#^;NRu:"u"~<pu^o:+'/u.Jl.v FOLX d@)t-4z{);ʥ^0O`) %/^)M-c{G-q`Ix]LKJP\mryC#ڠX8|W'0,Q}?vpG߱ $"4aryy Χ $Ԅ.)< kď(t_naiY'`K,ObhPs1\<1Ac}<q;$1I$yzgAӂ?=Qj&$%,U1ʿXq0AׄMC|/.3`d6wlg+xOHX:+܃*X5E7+A躯O?gK/|~V)-KviV&C8fhsA42kEYF\2 n8oh0WOݢOi*ȫ+Hc WrtAvi*]2/@;\X~Y2&OE>d,۠};9*i&8J$DA*EQsL^O ݵ#HEl*ӤpC>SK s8U'Gk7Lg:![n).|AǮ ϴJj)i5<<Nr4mA6g^-=j»[6 738eW!SEAGf}I|H\j4g"H_!'#7'(*ŀQl:iul &OѦ]5(0 Lk624ǜ;d&fϷۧS- ^+H3 +qoQ5%Z,oD^pK*OJ#q&vvԣ{f FoQXu{A!vvNn&l 74 CF ;d2*@>R;8r>5qEmuĢ6Pd >Goq >p4F'0!Ӷ$'D.`CgM QEM=4LoTPaL!%T9F.Dz;I, >ќ)|#`CMn3F.& 2xObmP) ^+{7VC[p/ J*(n7T s9wLƙ %pehl-JfXD,UL@mmDPՂh΢9Lc VɗtҖU&CX DDI`?V}o;w);Wp?ȄF@˰EQnsL"rlhXYE545< ܃Hlݦ:g]1$T8Un^(5c jsAMA G>¥)׆2P5My{ǎ2X؍vQC]ͷsMŬӤriuԅϊ.+ 9cFE'L#w$N)tQq\-xjd:[0tlaA!3zC($<;bɉpsh,a\GG2 קi Br 8Fdax>@Ī6yF^nXz) ezh ԈhaĵHe!|U6%1FϦT֐g_Z1SUy}:?a9l"=;y RoNqo* u;2f0#V@jG)P+_=ĭ 4M:Lv8OC$g'EFQ~C / a\2."*Tŷs5/(ݗ"'8ljUN|eB䈠!3ى 8suXmy RQ[k4V+%<Ap <ձE}[vHtMV90t!md- |1 oAaRt,~%$1fR6цʌ'O zԀ{ʂsRRFHSjJx =.K4z9ϻĖ Ka2`ːahePE^ cڳ.pEѳg_Qp D(̙;Bh\w2.Ʊ3mcPC\M7'Gnۛ+cA=-"zަ# e_rS`=r==7# <:0*ymMoSzLBLt65wur @RPnW%39&L@)'ѳ>K>oKNV Pꁁb1bb(l`ѭ%Ͽ)$Ƃ:K&y)zg(_rjɭ{ >x*bbmwJ٨z)%뻉Ռat].4MDG3%f B;d¾s}RmR.Sg]L@9FdRH㊪;re|(r]!JK$%},c{-:EtL0¬:+ ю>(l My@ay&?lUwY i#0$ XҠZ*ɚ, PEү]YB P9y8R^)zU]^Xq</,G>kY%ˆ3@s@%P-rRV8& M_g tK4D'WsK6zB׶uw$wϫSqT鋕D#(9v<4k^f yX37,7%uóv;*Ѿr2e9ixhIP "%偍^t-6 ҩ |uK:i iG0p<|1Q+9:1aa+RcHAeЂ+ʾ9s?rPz֋Y0Y_u@[nL5E?з#3+OEo, NW ' P$LиA>,\70 9?h[/FbRy\ꢪQlbi$A@T2LdxsP8{8p;TU`0#~.Õ^?0 6F\h+ dfi!k;74;DMH'X6t}!܆3sdFVs55Fv*r#7pD Gчb2u݃eK[}&H8}8@Vh i?"!Plb}j31zD@}! {!`1~2;oK%(L8cjt/lD<)k A^foxQVv?SJ%Xc9ggTӸliSÁ_De'QTZd7ih(_0J'O֕R8]cq0FN)fOP>|~g/4$HX[..5uL%0gٶpVr?gȊaG3 Dk$@re8T-0ylYD/M"AH``VL)UJaB-N',DzCbZ-^g@ETŎ]BmTc;J83<]t!# q\g^A\B2C&zn& Ţv ~\P>W;K; Q$,p ѹ G1M̳]iBg79 >hiԔFϨ, ))D|nk9ֱ<+)Gs / MpPLt$5 %)=\A_ |͑z鎘X͛e ϙvypC ?cj1l gt L X 1D SU5l6nSTT؛ Ucɝe[*G@1h#`_XUPzr,n *Y$Z*^3 4z MLNv"Qf4X,-*Ir%`J&k«v dAp D!q5 sG$b|ԃNhk"I{amP]MV iS0]@8F/;ٕM}KSX/Ibomn/uJxqNXl6#.2׿9f'pPZ"p?7;?䦃lIo}oB0ciORمs?9U`MIpgF\'Kʗ5cj5'ډ8L1}v>f9^=ɁU`EӖ8Aǯ j`nJf%ix/dqo@uh# yǦ:"lk:˸= 0TDG}G-C;ȘAL`qhBÛqy UҞ%Fc!/rÄd ] o).4[gu8=t^D %n1βr$q3]ZeɃ`_9 Lh;c%qO>%aWYo"n{#`BqZ|TȰ77;h*\ h`p\biTbM#C(.j.. 8ɪziwU5좡) ix&a Fpͷt!c Oj5fMP vrRY3o?q\`kCƠ'">e:2#$7 77E}T'͐;Luש0ʐiĖRi`D&4פ)62 pQMo$ژΙ=E!{nC4)-D^/7g[NS/2kR6иoQXCdS=1 pq *3m^}z383Lkcٲ-pVy͡uyNԩ+@3E` u e1rvuO2x2Rė)!t&ΝU973( 4S R;iA&7w},J~&C< 2mO9<PpyoV n3o$Ur$0藟 O:x,PV :2xd"Z萶 ( j)Vi%lRGʇbjV{iEA($n.Eو(cS _D!@bbII zrҒ:>/E} 8"ugrlu)'h"}m N߄QRPMvv:9I40(:yM}@%{S⓬=Qxckj4i.0մ{`(ZM#D%!fRa.4SiiF]HI"晜vؚC&!}'FVC4v5(DxZ8{(R|U_&B.hK#z"251S7 W̝9wH>o)lWaj;Lff:M2ų0 9!nEF y,&ں̿xHв<9RvsAZʓJ ﻭݏo^xھ[k=w{|}>}o>}O뫽wܷi_u8ݻow}[wTOFi1O&2?Sha2d#M`z*yijmOFF L`TzLS&&M& zhBhL4@@z&&O@0M4O&Ljh #Lz4L2FMM53&2Mi00S4LiLLDM6M3T#F4ɉi='h2hdi#FObz6S)dɣeCž&hG*~=L#i564<4iM ѦM0Mh)0iDf54i214=LM'LMLLiuOxSO5OdFxSĞ4шM2yL FO#S x~I?Jii<Sz0)56ا5= C*`&4D<ҟ6 41#&h < S5'FCMSL?0LjO#hžOe<¢jΆ 2ak>ezBcȍ9VBnWI!Ox@y{'05WBV-O-?w)kĒ5r?41>**GU_&MZ 3S C !ՕœJ<>P K؎š)Dc.^ f8 fo&a"u  ^8 u%C.CD7zVP‰mD^fbnZ1-v{z-NW@,[Fo"&D}Ec b1-?>KY/lF]4[1=6i_Yv2FB]_y֎2 "p1߼)OTl=ۏ[uRsLZOT"3.M0k$cK޽ {*!9q9&ٻֈɞT=7U k-r,^BYAw]*tc͌Oq}h;$/WNIۈ@VK#сPPgrK )2nv"fbm#).uNHKEL_ ?x;]L(b n[oNg))\Q%Ž@ye1Bh59mRkCIJV/5㍨hu9Nd.0lsք˩LLFH6O)\+.QJ v r۰5R~󫪥"d нOziJhѥ"*} 4DLCb~:lTuғz-=og\b(n xglXń)*ټ!)~~Cp2+2pÁ3rFFd_ɪf=R: h"?x䶐= +, :ĹabN,Y3ܼaV/xxPIWg- HIHy4& >x -N NyFG 'WQSmiE-;PhgafS%S_1(%9&3F<'"RŹ]q̙C#(Uc B)SVLۀB̒ʏI@u7!4W,=Z_ËF˪\Fz4Jvl78Qٺ6H.i.)8?ŋm2PnK KY"L5 tYS!;+@n,C{r~d^;{$Bww#rUe ^N7,r:4 upԓBT3C!e\0Pk« tyT#+E 51ֹZ`n4ˆGڢ! αKPDmVj~pӔR柄0-,P 娠3 #t]m >DHYT J8Y(7p<9l73͠G*KWy2mmkwDMeUbVG'it 9K|~ a/"V>xN!a2%?J^B-)Sᅭؐ*?S?’Bm"_'C6i(.S -}f)=qs;lҒPy!RMWp'ZYIT\s%EمT[p) T:be @## qbjᶙK&g3kΆdd6cZߔmYccZc]tH.4EdyQwZDP(s љ#Y!84i9թJ}>b횡tF#=Zqaކpmbe*KmY=f2]a~s)~m.(j'^[(JdjEͪ?1Q̩}"p) 05lt?O!+l򡈀dPӞ=Y5ΦMZ ;c2MWJA7ݜ=h3JjIjl Rbx^V8:yAPxu<EUIO٠䒭'Gэ Mk,<`W^sT&nɳ ȳTNEgԉz8ccou-C0ɤTAe\JU1!r?5܅Pc?qfoh1dֺIQIQv;9nHAJE>M;Գ!l09!P(CHtpj/C\]{B7 (Yz;M<ylBṗێZx_Sx>S#j^f }c-A!)j*ґ]p1N&g]*~1p&| <"@k1ZZrm?^*ZeAl cZm|iW0 jmDI}[1%[8꾙#.RI$|y\jN$wD# juWup.i_ c!|@2Bt.LJ&3bϴ5xQK ^;z)pJ: %̩_T`v/+ٵWxs;dQRD'L8clQs b8/|gA8{ɡ$tV/0|::9II7hK{}W4`Lلk1}٥YU]%j[Lj:EpzUڻz^}y+` 9r-Nk&@SѪ=yɅ%^ ]CMcOy\ѥ mzPR(sOn]O?6g[W8&*.g(-Kx4[. b r ;,Ēp`EXwN &u9-@crYط{51Ǡsv93wjg8[96 *)7uI>R/(^y7|xo-5w%]7zVP@SہJ@E\JQ!3+l<:WKW?[Go|8[)ZlE9⬿s "f]v"|O$˦wiH7vMȐY3jҿla[}M̓%G&?;haBª Ձ|#Q Y% h㉷5eK.YCQ)V'TLF!vJ#sKb\Z OMOd} ϷKnc !|ec͙+!DC/Jw݉rwthϒ/=3Q˥@0jDgetc$x͙CVX&< &jzKқfn7NӖGrNaƓ(Rp)Nok1t?= jrˏrםu&#WcT8zt`w1Aeh#"xdjglY4o_-6CDEV PympΛ_Y0W=ߟޓ 5ϴL'ֆpgqZKkR7EuZ)^?I1Vk X@W[C`ϽZ{Y$3 mا#[3 @08?ムd*3V l -%P%ԽsZ&}}V؊`@J}>Ô).L0_# Ym"ʂL{ji r@T N֑3J"Z\ !E+5od='"h!齂mtըW92^w (,[uaC ƍfoÔbύ@%d2p+WS,w\t_TyEy^pzyͬΩM9G7| n'+Moc([ ܇^): '3c ˖3УJ-){^(o)n"0ZuniD rXj4vPl( 7}Jbӽm|%'QcHd*z ӄBv }AH&Z2vUI-:KW1EPF q@f4L˞MQZ+Ie/ZP)uc7lggH<7WLUi:9Ǽ ;1m/:9!UR8"&ZkY4EרiÆo,}txsWD@Oz#tżv]G ·?d,tbgc!r$$Ĭz>)،MfM}t0 s#ԀY) ϖ@OS 1]ٕ~)q^Kr\.t_6s\2}֬Us@I~$ UQeVOjs ə7a5Mឯ΄Ap۽$%|`SRCJٌ+nsݴ}=nfxW} lr?Fg,KJle}J{nnֱ߈<2͠1,.?Dɮatȟ^E{)exfQ=ŅSO)?З-q{u?J[|xaζl:N(~ /'jD\,9i>cDucݴ/@VW4&ۥ}~e.l#HH/ 7=¿%Abr $0%zZ\ҁU!jh*V#D.}+|}琐[u>+W|bNq&e"1FE+ c$.FTj4ͼ,޶u{H7mmNi]QeŻxͼ79gݚSㄆތ:*@ 0V!:WJ9\ƫơqo8+;C"=ǃK W$;HɗV0 `p#=g۝3mb*S8qp=;އ}~r ~M!FEs?-ﳘM\U,jf3<-v G~co1 rCvFv[-Ae'k{eO5f[1V3Jcӱ5\x̮b.[z]%j!9Cލ@;o O_Di}jW8 8 1^PZy'@@bXdHyq 8% RӺhYva\Ʋd`Z0tUR"|fl?G7QvEa$g?,B`MQ }E⓳1Xx qZy7PRZ*Y/AeЗw_91o^ȁbyFYgQϟr)_ IKcKdl~,,xfkI&ȢƎdv:A;K+[]Mz{)7Y[ :n&+H;˔&ݟH-ߤfKA˿0W~;p>0Ŵ5'[b.ťu@}tٚ;륎{dRP"rH0cl̫knV>#Z@zEn"̓ÆPʭ?ZzJ:lc[*Qd8 M#$Z~dr$i$E2<0q@<fŔ;8_ SbH..D7_ =~trQc=7W%}qcH3aHPr?b00^&A:^Ogc73%&oq=@6S_Ψ{곛R@QX{2z,z H|x ܼn2P(7 |`I_stJEnfp }hInej6oL(! S w/g`M(nEo+\ӂJF D{ȗ5㮼EAc,׷z"AVz>ّ=e{tz 5F)-1 T&֮#'ң α亐~LN\ފAs7j }T%Hqu&׾bO!⾌6AJJ2!Dz oߤrnr F'aM m0XLqta~Ydhs+ SF8Hx9wX_2M~`Z: F5i$aP-1tk?79R YbY?˳(lB7֫sevcNB1Ľ1@.JA&r[O Kue&lJ [QZ) S/cCM*6Y)b-~?v k%D482Ew 6r$ߧ [-GuݻMWgEȅ򳓣[.G] GGeuR( kmaV,\J)yB+JMGԍ)jiʗIΞh[+&>X\F ?i!>AJDFaY6Cx̴Pޡ>3QF4Cw dQ_\;]+ʯƠD.IAk'WvTp_ X͘!ήS|AB&u).<$g͜@끱VWk0?U^O$]ļ*4b{5f1+B\ۻpIgkܳ'K5)ܳf起ϯ4/#g9 ^@c#AϫxВYSW?sw$)i U cY:A!ݩ !{[_'9%[]ebIM!ʤ3w`cI_^P%Q[RF1 D!g*Y_sDžqLBzқh@@pك_66TIy.KRH@x aǼ ?J)$31^gi cMN|nl6}bL=sD{k3+QGMVHQB9*k6'9ʞ`mRV'xA w6X1#~­Ew*B.b|&&Y5.CDGL.Fa NBAm΋ tU0hYlֽZϮ* 3nC,I)6a褠Hвtof®71El&OWD>Es؇J%{3Ae\"l!<^$dv+װfvA2;ۚQSTv6GF sSH4S;O}U-*gEZlU[ofW_yy> feIjXxp`C2VBɚ=WRW ZߔE1t ,t=9un bߨEGyΙI+c#o  l֔Y5/رQ6\.H*etrLYN&dSa }h"~_"YggvB`(:dEAJbnOPef,w]fpG<_kp%l֧Mθ:8/ YZ',%7B1Um$-Ո1i:?44̢ݹvņ|e4<12E{l^8o-Ocịыҳ>=) `0L],whm nTD־՛J>/Q5DKPc~yUB77bIxV:ҊIGfã |z:}E+%re$Ni`,s۵uWn2FKooj˦wzQl*I!X25KC,HeJC\T?|1IM]:f"J{ToU+5UZZM 6u/X*:X%ϪKHVZ(D\D T<"}%{CwW"m@lX5֮L9| NWT]^`7IPcaՑF! \B`JδhYrW\e5>OKY^;?A{9ΗM4+ʿ*EQ$l_aA"G^0k4:k/)7Y$гU{, *!% Ogesr1Ԫ^tMǵ$Kx:7¨ Gs-'B:En%tkI5L&A*JD槞ˇJ> HE-ϭ QX%zS-}bMhtَQcZ},V$=DC?MJc2@ \jEZ)?`^Ay2 n NM1=F)[o~ /l+:j&ΙӉd0ܑN$7~ƀ