| Current Path : /home/w/u/e/wuectly/www/03cbe/ |
| Current File : /home/w/u/e/wuectly/www/03cbe/akeeba.tar |
script.akeeba.php 0000604 00000057107 15245570526 0010011 0 ustar 00 <?php
/**
* @package akeebabackup
* @copyright Copyright (c)2006-2023 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*/
// Protect from unauthorized access
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\Folder;
defined('_JEXEC') or die();
class Pkg_AkeebaInstallerScript
{
/**
* The name of our package, e.g. pkg_example. Used for dependency tracking.
*
* @var string
*/
protected $packageName = 'pkg_akeeba';
/**
* The name of our component, e.g. com_example. Used for dependency tracking.
*
* @var string
*/
protected $componentName = 'com_akeeba';
/**
* The minimum PHP version required to install this extension
*
* @var string
*/
protected $minimumPHPVersion = '7.2.0';
/**
* The minimum Joomla! version required to install this extension
*
* @var string
*/
protected $minimumJoomlaVersion = '3.9.0';
/**
* The maximum Joomla! version this extension can be installed on
*
* @var string
*/
protected $maximumJoomlaVersion = '4.999.999';
/**
* A list of extensions (modules, plugins) to enable after installation. Each item has four values, in this order:
* type (plugin, module, ...), name (of the extension), client (0=site, 1=admin), group (for plugins).
*
* These extensions are ONLY enabled when you do a clean installation of the package, i.e. it will NOT run on update
*
* @var array
*/
protected $extensionsToEnable = [
['plugin', 'akeebabackup', 1, 'quickicon'],
];
/**
* Like above, but enable these extensions on installation OR update. Use this sparingly. It overrides the
* preferences of the user. Ideally, this should only be used for installer plugins.
*
* @var array
*/
protected $extensionsToAlwaysEnable = [
['plugin', 'akeebabackup', 1, 'installer'],
['plugin', 'akversioncheck', 1, 'system'],
];
/**
* A list of plugins to uninstall when installing or updating the package. Each item has two values, in this order:
* name (element), folder.
*
* @var array
*/
protected $uninstallPlugins = [
['jsonapi', 'akeebabackup'],
['legacyapi', 'akeebabackup'],
['akeebaactionlog', 'system'],
['akeebaupdatecheck', 'system'],
['aklazy', 'system'],
['srp', 'system'],
];
/**
* We remove some plugins' files. If Joomla fails to update them correctly you'd end up with an inaccessible site.
* These will be updated / installed right after the preflight event so you don't ever lose their functionality.
*
* @var string[]
*/
protected $preRemoveFolders = [
// Current plugins
'plugins/actionlog/akeebabackup',
'plugins/console/akeebabackup',
'plugins/installer/akeebabackup',
'plugins/quickicon/akeebabackup',
'plugins/system/backuponupdate',
// Obsolete plugins
'plugins/system/akeebaactionlog',
'plugins/system/akeebaupdatecheck',
'plugins/system/aklazy',
'plugins/system/srp',
];
/**
* =================================================================================================================
* DO NOT EDIT BELOW THIS LINE
* =================================================================================================================
*/
/**
* Joomla! pre-flight event. This runs before Joomla! installs or updates the package. This is our last chance to
* tell Joomla! if it should abort the installation.
*
* In here we'll try to install FOF. We have to do that before installing the component since it's using an
* installation script extending FOF's InstallScript class. We can't use a <file> tag in the manifest to install FOF
* since the FOF installation is expected to fail if a newer version of FOF is already installed on the site.
*
* @param string $type Installation type (install, update, discover_install)
* @param \JInstallerAdapterPackage $parent Parent object
*
* @return boolean True to let the installation proceed, false to halt the installation
*/
public function preflight($type, $parent)
{
// Do not run on uninstall.
if ($type === 'uninstall')
{
return true;
}
// Check the minimum PHP version
if (!version_compare(PHP_VERSION, $this->minimumPHPVersion, 'ge'))
{
$msg = "<p>You need PHP $this->minimumPHPVersion or later to install this package</p>";
JLog::add($msg, JLog::WARNING, 'jerror');
return false;
}
// Check the minimum Joomla! version
if (!version_compare(JVERSION, $this->minimumJoomlaVersion, 'ge'))
{
$msg = "<p>You need Joomla! $this->minimumJoomlaVersion or later to install this component</p>";
JLog::add($msg, JLog::WARNING, 'jerror');
return false;
}
// Check the maximum Joomla! version
if (!version_compare(JVERSION, $this->maximumJoomlaVersion, 'le'))
{
//$msg = "<p>You need Joomla! $this->maximumJoomlaVersion or earlier to install this component</p>";
$hasOldVersion = \Joomla\CMS\Component\ComponentHelper::isInstalled('com_akeeba');
$jVersion = JVERSION;
if ($hasOldVersion)
{
$upgradeMessage = <<< HTML
<p class="fs-2">
Please go to <a href="index.php?option=com_akeeba">Components, Akeeba Backup</a> to learn how to install
Akeeba Backup 9 — the Joomla 4 native version of our software — and migrate your backup settings and backup
archives with a single click.
</p>
HTML;
}
else
{
$upgradeMessage = <<< HTML
<p class="fs-2">
Please go to <a href="https://www.akeeba.com/download.html">our site's Download page</a> to download
Akeeba Backup 9, the Joomla 4 native version of our software.
</p>
HTML;
}
$msg = <<< HTML
<div class="m-4">
<h3 class="alert-heading fs-1">Akeeba Backup 8 cannot be installed or used with Joomla 4.1 and later versions</h3>
$upgradeMessage
<p class="fs-5">
<strong>Note:</strong> You will see the messages “Extension Install: Custom install routine failure.”
and “Error installing package” printed below. This is normal and expected. Since Akeeba Backup 8 is not
meant to be used with Joomla $jVersion it refuses to install at all and Joomla produces these two messages.
</p>
</div>
HTML;
JLog::add($msg, JLog::WARNING, 'jerror');
return false;
}
// HHVM made sense in 2013, now PHP 7 is a way better solution than an hybrid PHP interpreter
if (defined('HHVM_VERSION'))
{
$msg = "<p>We have detected that you are running HHVM instead of PHP. This software WILL NOT WORK properly on HHVM. Please switch to PHP 7 instead.</p>";
JLog::add($msg, JLog::WARNING, 'jerror');
return false;
}
/**
* Try to install FOF. We need to do this in preflight to make sure that FOF is available when we install our
* component. The reason being that the component's installation script extends FOF's InstallScript class.
* We can't use a <file> tag in our package manifest because FOF's package is *supposed* to fail to install if
* a newer version is already installed. This would unfortunately cancel the installation of the entire package,
* so we have to get a bit tricky.
*/
$this->installOrUpdateFOF($parent);
// Remove plugins' files which load outside of the component. If any is not fully updated your site won't crash.
foreach ($this->preRemoveFolders as $folder)
{
$f = JPATH_ROOT . '/' . $folder;
if (!@file_exists($f) || !is_dir($f) || is_link($f))
{
continue;
}
Folder::delete($f);
}
return true;
}
/**
* Runs after install, update or discover_update. In other words, it executes after Joomla! has finished installing
* or updating your component. This is the last chance you've got to perform any additional installations, clean-up,
* database updates and similar housekeeping functions.
*
* @param string $type install, update or discover_update
* @param \JInstallerAdapterComponent $parent Parent object
*/
public function postflight($type, $parent)
{
// Do not run on uninstall.
if ($type === 'uninstall')
{
return;
}
// Always uninstall these plugins
if (isset($this->uninstallPlugins) && !empty($this->uninstallPlugins))
{
foreach ($this->uninstallPlugins as $pluginInfo)
{
try
{
$this->uninstallPlugin($pluginInfo[1], $pluginInfo[0]);
}
catch (Exception $e)
{
// No op.
}
}
}
// Joomla 3: Always uninstall plg_console_akeebabackup (it's J4 only)
if (version_compare(JVERSION, '3.999.999', 'le'))
{
$this->uninstallPlugin('console', 'akeebabackup');
// These dependencies are not removed when uninstalling a plugin while installing a package (thanks, Joomla)
$this->removeDependency('fof30', 'plg_console_akeebabackup');
$this->removeDependency('fof40', 'plg_console_akeebabackup');
}
// Always enable these extensions
if (isset($this->extensionsToAlwaysEnable) && !empty($this->extensionsToAlwaysEnable))
{
$this->enableExtensions($this->extensionsToAlwaysEnable);
}
// Joomla 4: Always enable the plg_console_akeebabackup plugin
if (version_compare(JVERSION, '3.999.999', 'gt'))
{
$this->enableExtensions([
['plugin', 'akeebabackup', 1, 'console'],
]);
}
/**
* Try to install FEF. We only need to do this in postflight. A failure, while detrimental to the display of the
* extension, is non-fatal to the installation and can be rectified by manual installation of the FEF package.
* We can't use a <file> tag in our package manifest because FEF's package is *supposed* to fail to install if
* a newer version is already installed. This would unfortunately cancel the installation of the entire package,
* so we have to get a bit tricky.
*/
$this->installOrUpdateFEF($parent);
/**
* Clean the cache after installing the package.
*
* See bug report https://github.com/joomla/joomla-cms/issues/16147
*/
$conf = \JFactory::getConfig();
$clearGroups = array('_system', 'com_modules', 'mod_menu', 'com_plugins', 'com_modules');
$cacheClients = array(0, 1);
foreach ($clearGroups as $group)
{
foreach ($cacheClients as $client_id)
{
try
{
$options = array(
'defaultgroup' => $group,
'cachebase' => ($client_id) ? JPATH_ADMINISTRATOR . '/cache' : $conf->get('cache_path', JPATH_SITE . '/cache')
);
/** @var JCache $cache */
$cache = \JCache::getInstance('callback', $options);
$cache->clean();
}
catch (Exception $exception)
{
$options['result'] = false;
}
// Trigger the onContentCleanCache event.
try
{
JFactory::getApplication()->triggerEvent('onContentCleanCache', $options);
}
catch (Exception $e)
{
// Suck it up
}
}
}
}
/**
* Runs on installation (but not on upgrade). This happens in install and discover_install installation routes.
*
* @param \JInstallerAdapterPackage $parent Parent object
*
* @return bool
*/
public function install($parent)
{
// Enable the extensions we need to install
$this->enableExtensions();
return true;
}
/**
* Runs on uninstallation
*
* @param \JInstallerAdapterPackage $parent Parent object
*
* @return bool
*/
public function uninstall($parent)
{
// Preload FOF classes required for the InstallScript. This is required since we'll be trying to uninstall FOF
// before uninstalling the component itself. The component has an uninstallation script which uses FOF, so...
@include_once(JPATH_LIBRARIES . '/fof40/include.php');
class_exists('FOF40\\Utils\\InstallScript\\BaseInstaller', true);
class_exists('FOF40\\Utils\\InstallScript\\Component', true);
class_exists('FOF40\\Utils\\InstallScript\\Module', true);
class_exists('FOF40\\Utils\\InstallScript\\Plugin', true);
class_exists('FOF40\\Utils\\InstallScript', true);
class_exists('FOF40\\Database\\Installer', true);
/**
* uninstall() is called before the component is uninstalled. Therefore there is a dependency to FOF 4 which
* prevents FOF 4 from being removed at this point. Therefore we have to remove the dependency before removing
* the component and hope nothing goes wrong.
*/
$this->removeDependency('fof40', $this->componentName);
/**
* uninstall() is called before the component is uninstalled. Therefore there is a dependency to FEF which
* prevents FEF from being removed at this point. Therefore we have to remove the dependency before removing
* the component and hope nothing goes wrong.
*/
$this->removeDependency('file_fef', $this->componentName);
// The try to uninstall FEF. The uninstallation might fail if there are other extensions depending
// on it. That would cause the entire package uninstallation to fail, hence the need for special handling.
$this->uninstallFEF($parent);
// Then try to uninstall the FOF library. The uninstallation might fail if there are other extensions depending
// on it. That would cause the entire package uninstallation to fail, hence the need for special handling.
$this->uninstallFOF($parent);
return true;
}
/**
* Tries to install or update FOF. The FOF library package installation can fail if there's a newer version
* installed. In this case we raise no error. If, however, the FOF library package installation failed AND we can
* not load FOF then we raise an error: this means that FOF installation really failed (e.g. unwritable folder) and
* we can't install this package.
*
* @param \JInstallerAdapterPackage $parent
*/
private function installOrUpdateFOF($parent)
{
// Get the path to the FOF package
$sourcePath = $parent->getParent()->getPath('source');
$sourcePackage = $sourcePath . '/lib_fof40.zip';
// Extract and install the package
$package = JInstallerHelper::unpack($sourcePackage);
$tmpInstaller = new JInstaller;
$error = null;
try
{
$installResult = $tmpInstaller->install($package['dir']);
}
catch (\Exception $e)
{
$installResult = false;
$error = $e->getMessage();
}
// Try to include FOF. If that fails then the FOF package isn't installed because its installation failed, not
// because we had a newer version already installed. As a result we have to abort the entire package's
// installation.
if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php'))
{
if (empty($error))
{
$error = JText::sprintf(
'JLIB_INSTALLER_ABORT_PACK_INSTALL_ERROR_EXTENSION',
JText::_('JLIB_INSTALLER_' . strtoupper($parent->get('route'))),
basename($sourcePackage)
);
}
throw new RuntimeException($error);
}
}
/**
* Try to uninstall the FOF library. We don't go through the Joomla! package uninstallation since we can expect the
* uninstallation of the FOF library to fail if other software depends on it.
*
* @param JInstallerAdapterPackage $parent
*/
private function uninstallFOF($parent)
{
// Check dependencies on FOF
$dependencyCount = count($this->getDependencies('fof40'));
if ($dependencyCount)
{
$msg = "<p>You have $dependencyCount extension(s) depending on this version of FOF. The package cannot be uninstalled unless these extensions are uninstalled first.</p>";
JLog::add($msg, JLog::WARNING, 'jerror');
return;
}
$tmpInstaller = new JInstaller;
$db = $parent->getParent()->getDbo();
$query = $db->getQuery(true)
->select('extension_id')
->from('#__extensions')
->where('type = ' . $db->quote('library'))
->where('element = ' . $db->quote('lib_fof40'));
$db->setQuery($query);
$id = $db->loadResult();
if (!$id)
{
return;
}
try
{
$tmpInstaller->uninstall('library', $id, 0);
}
catch (\Exception $e)
{
// We can expect the uninstallation to fail if there are other extensions depending on the FOF library.
}
}
/**
* Tries to install or update FEF. The FEF files package installation can fail if there's a newer version
* installed.
*
* @param \JInstallerAdapterPackage $parent
*/
private function installOrUpdateFEF($parent)
{
// Get the path to the FOF package
$sourcePath = $parent->getParent()->getPath('source');
$sourcePackage = $sourcePath . '/file_fef.zip';
// Extract and install the package
$package = JInstallerHelper::unpack($sourcePackage);
$tmpInstaller = new JInstaller;
$error = null;
try
{
$installResult = $tmpInstaller->install($package['dir']);
}
catch (\Exception $e)
{
$installResult = false;
$error = $e->getMessage();
}
}
/**
* Try to uninstall the FEF package. We don't go through the Joomla! package uninstallation since we can expect the
* uninstallation of the FEF library to fail if other software depends on it.
*
* @param JInstallerAdapterPackage $parent
*/
private function uninstallFEF($parent)
{
// Check dependencies on FOF
$dependencyCount = count($this->getDependencies('file_fef'));
if ($dependencyCount)
{
$msg = "<p>You have $dependencyCount extension(s) depending on this version of Akeeba FEF. The package cannot be uninstalled unless these extensions are uninstalled first.</p>";
JLog::add($msg, JLog::WARNING, 'jerror');
return;
}
$tmpInstaller = new JInstaller;
$db = $parent->getParent()->getDbo();
$query = $db->getQuery(true)
->select('extension_id')
->from('#__extensions')
->where('type = ' . $db->quote('file'))
->where('element = ' . $db->quote('file_fef'));
$db->setQuery($query);
$id = $db->loadResult();
if (!$id)
{
return;
}
try
{
$tmpInstaller->uninstall('file', $id, 0);
}
catch (\Exception $e)
{
// We can expect the uninstallation to fail if there are other extensions depending on the FOF library.
}
}
/**
* Enable modules and plugins after installing them
*/
private function enableExtensions($extensions = [])
{
if (empty($extensions))
{
$extensions = $this->extensionsToEnable;
}
foreach ($extensions as $ext)
{
$this->enableExtension($ext[0], $ext[1], $ext[2], $ext[3]);
}
}
/**
* Enable an extension
*
* @param string $type The extension type.
* @param string $name The name of the extension (the element field).
* @param integer $client The application id (0: Joomla CMS site; 1: Joomla CMS administrator).
* @param string $group The extension group (for plugins).
*/
private function enableExtension($type, $name, $client = 1, $group = null)
{
try
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->update('#__extensions')
->set($db->qn('enabled') . ' = ' . $db->q(1))
->where('type = ' . $db->quote($type))
->where('element = ' . $db->quote($name));
}
catch (\Exception $e)
{
return;
}
switch ($type)
{
case 'plugin':
// Plugins have a folder but not a client
$query->where('folder = ' . $db->quote($group));
break;
case 'language':
case 'module':
case 'template':
// Languages, modules and templates have a client but not a folder
$client = JApplicationHelper::getClientInfo($client, true);
$query->where('client_id = ' . (int) $client->id);
break;
default:
case 'library':
case 'package':
case 'component':
// Components, packages and libraries don't have a folder or client.
// Included for completeness.
break;
}
try
{
$db->setQuery($query);
$db->execute();
}
catch (\Exception $e)
{
}
}
/**
* Get the dependencies for a package from the #__akeeba_common table
*
* @param string $package The package
*
* @return array The dependencies
*/
private function getDependencies($package)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->qn('value'))
->from($db->qn('#__akeeba_common'))
->where($db->qn('key') . ' = ' . $db->q($package));
try
{
$dependencies = $db->setQuery($query)->loadResult();
$dependencies = json_decode($dependencies, true);
if (empty($dependencies))
{
$dependencies = array();
}
}
catch (Exception $e)
{
$dependencies = array();
}
return $dependencies;
}
/**
* Sets the dependencies for a package into the #__akeeba_common table
*
* @param string $package The package
* @param array $dependencies The dependencies list
*/
private function setDependencies($package, array $dependencies)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->delete('#__akeeba_common')
->where($db->qn('key') . ' = ' . $db->q($package));
try
{
$db->setQuery($query)->execute();
}
catch (Exception $e)
{
// Do nothing if the old key wasn't found
}
$object = (object)array(
'key' => $package,
'value' => json_encode($dependencies)
);
try
{
$db->insertObject('#__akeeba_common', $object, 'key');
}
catch (Exception $e)
{
// Do nothing if the old key wasn't found
}
}
/**
* Adds a package dependency to #__akeeba_common
*
* @param string $package The package
* @param string $dependency The dependency to add
*/
private function addDependency($package, $dependency)
{
$dependencies = $this->getDependencies($package);
if (!in_array($dependency, $dependencies))
{
$dependencies[] = $dependency;
$this->setDependencies($package, $dependencies);
}
}
/**
* Removes a package dependency from #__akeeba_common
*
* @param string $package The package
* @param string $dependency The dependency to remove
*/
private function removeDependency($package, $dependency)
{
$dependencies = $this->getDependencies($package);
if (in_array($dependency, $dependencies))
{
$index = array_search($dependency, $dependencies);
unset($dependencies[$index]);
$this->setDependencies($package, $dependencies);
}
}
/**
* Do I have a dependency for a package in #__akeeba_common
*
* @param string $package The package
* @param string $dependency The dependency to check for
*
* @return bool
*/
private function hasDependency($package, $dependency)
{
$dependencies = $this->getDependencies($package);
return in_array($dependency, $dependencies);
}
private function uninstallPlugin($folder, $element)
{
$db = Factory::getDbo();
// Does the plugin exist?
$query = $db->getQuery(true)
->select('*')
->from('#__extensions')
->where($db->qn('type') . ' = ' . $db->q('plugin'))
->where($db->qn('folder') . ' = ' . $db->q($folder))
->where($db->qn('element') . ' = ' . $db->q($element));
try
{
$result = $db->setQuery($query)->loadAssoc();
if (empty($result))
{
return;
}
$eid = $result['extension_id'];
}
catch (Exception $e)
{
return;
}
/**
* Here's a bummer. If you try to uninstall a plugin Joomla throws a nonsensical error message about the
* plugin's XML manifest missing -- after it has already uninstalled the plugin! This error causes the package
* installation to fail which results in the extension being installed BUT the database record of the package
* NOT being present which makes it impossible to uninstall.
*
* So I have to hack my way around it which is ugly but the only viable alternative :(
*/
try
{
// Safely delete the row in the extensions table
$row = JTable::getInstance('extension');
$row->load((int) $eid);
$row->delete($eid);
// Delete the plugin's files
$pluginPath = sprintf("%s/%s/%s", JPATH_PLUGINS, $folder, $element);
if (is_dir($pluginPath))
{
JFolder::delete($pluginPath);
}
// Delete the plugin's language files
$langFiles = [
sprintf("%s/language/en-GB/en-GB.plg_%s_%s.ini", JPATH_ADMINISTRATOR, $folder, $element),
sprintf("%s/language/en-GB/en-GB.plg_%s_%s.sys.ini", JPATH_ADMINISTRATOR, $folder, $element),
];
foreach ($langFiles as $file)
{
if (@is_file($file))
{
JFile::delete($file);
}
}
}
catch (Exception $e)
{
// I tried, I failed. Dear user, do NOT try to enable that old plugin. Bye!
}
}
}
Akeeba-Products.woff 0000604 00000034154 15245726574 0010424 0 ustar 00 wOFF 8l
P� OS/2 � A VV�cxcmap 8 � j�u_glyf � 3� H����head 5� 1 6uN�hhea 5� $��hmtx 5� �� loca 6 x x-Z=�maxp 6� Yname 6� Z ����post 8 j � � �x�c`da`�������t����B3�f0b�```b`ef�
�\S�X@�; �� ��� x�c```f�`FH��| �����d)1X2D13���V��`��Ȑ���3���?5 0���`�L(\fV6vN.n� /�����������������������D^]CSK[GWO������������� �
� x��|�řoU�{RO�L��䙝��;��3�9H��s�UD9$H�l@`lL8�
�L� �69`�`�
l?l66�F�z_������ڭ����Z����o�&���s=�(n7�����qgp�������l�<� �A� ��\� �)/�Zh[�~#��3�-f!�"dZ���-F� �`E�e���P�
!#�!'��9,rf��&�Q�8��U
���v(��9 B���� ٻ���vJ ��8f,^僑�����0��Kov�����5��)���r�{ed��g���h�d&���'�*t�I�7�P�]�vX_�Ǽ��h]۔�1���LX��x��5+�^�vB,M.�[���%+�p̺_�\��t-^k} 1��V��͓5>�;��36�{ ���Au�4H�{�OW�v��{��S�
��8�Ś�r�1��s���ณ'�<ǵre��6������q�G��A[r)�͵C��-iA�0��-~v��څ�Je@)#���� 9?#zYJ1&`m9�8f2Vf�
c�$0��p��Wj�-�(�@��H��/��\�fX��f�0��[)�Y/�_o��
x����!�>����A8�wї�?Yy�����J�O�� =�H/����_��~��;w�\����� �˽c��|����c�r���ձ3@OR�:�^ʇ�ݩ�\��9L�AzF�$�����uq��n"7���-�q+?�
�M��Τ$��i�R�(��9�����
�JF9��)��d;l%H3�3���
�.6�
��
�e*�ac��fz� Z�TE�oT����~(��x��Ǹ-����GY��9g��$i\�%���f^�b�E�~�i^j�x��1@��\�y�Ц�:��{����P"�hT���)ײ��p�ܫv��^��r8f-�HD��̛��nޣXg ��o���T�^Y&�¸�E�<A�|"-^} ��;�6e~����8_�o�*G����W�p�������!6�=-�[��v�
-��P�&̺
y�B�4Lսz���r��%���͙<b��嚹6����F�h�)1�����\��E&ߒ�P5�OB��~���S�ʅr�Ŷ:�PF�;��6/��Ixà'�J&�?"��E@�D�DN�~��w<�����/�C��sA�����~5��Ӊ!�G�8���(Ђ�0��ᩔ��OF��u��"����|����m����"%k�����oy�]1�C��϶ ��`[�n,7���ͱ%w�[�m�q{�s��a�2�*�:��v�B
��$G*�@y��Ro'~�|K�
�B�h%&������e[��ڂt�lK����sNHգA�~:A(�.��)#C1%f�MB�u��1$*��!U�'��z�Fx���`��Ծ�E��+��gKRkǗn�q��36��v.]o��I�o��\#<i�S��X���=��9�lp��Wn�?�.��::���㜻�{������!'���=k�9뙯3��C�w�.�]vK�5
��t@�v �s���ۻkȵj�Y�U΅k>��ậR��ȸ���6u�,�9�����l��}�)�p]v��t �`��#��|?�frLA~��C��M��06�H�"J3�������3��ƿTf���wc��۞���}��?#`�{��9�XE
�y�^ضCm��8x����t�.�»�%��D�J�!G`��=�y�5;_�!��o�dTuk9�>�z�G�ugo�kh��k��o>*d��1
[��ҽև���z��g��sϓĦb?ԢT���<��sB�-B�����ҧP��
7\+f�MF h��\��߱���v�^f� bm�U�Z��g�ڤys���u��D�^�7>0ɏcǩ6_�/��>�MCnd[�Qг�L>+2�$�R��>�l�-L�v[{������
e�>�@ [� )#�r����Z���8!��I&�E�@7x�{�U�J�
ن�nգx4p�5>����|2c��|:g�
[�\a]*V�m��2P������Y簇��Q�8I
�+O�u.Yw�c�r�: �E���6�g��'x�N��j��֟9�m�~������� �Tn7�[ɭ�6p[G���r��
�h��*�J��J�M0�b��T�%ڢ�4�ɀ�B�6jL�O��TZ��x��ef�{n�F���ۚ1ԙ�I�>@\�v
�C�|����i�FHdaT�G���8f.y���c=E�q��bH%��g���Aq�S0$�za���փ�G�W,���A�Q��
յ7����Wy�����U0��*�7֡syYd�y����6}�*�f�J�2��G�����͟�j�~��>��:�6���б���w^��U�~ �4{�kն�֪�S|�6u�f��6y�5�!��|�4�Y�-�Vpkl���r�sr�pWrG�/q7q�Up&���3=좝�G%��Xٯ!x��@9�A6��غ��� Ɔ��@l�â��2�{�L`��d�V �)hj3;R��(��<�m���e��ӖuJ��&Ҁ+���Ǥ|yW��3��I(]c�:���pڹ䬕���n_�M��g�C��s,ٽv7,D��l=Q�g��ʽ�.�6.��9��^��ϱW�L�z`�8�b�լ?3��T�}�B�k�E_D�lB�p��
���ڏ#��:��u|$�֛�\�G���з����r.[�yN1^�� S���U�Ś�/�U��P���r[��!x��x��Bu�8N���Gh�1\έgF��5!�*�)T\�T9P� ���"dEE.�m}NGn���f͈�CBf�l`�aI+c�E�0�P�vb= �̥�P �w|W� �����k!i�p���h�Y�\gn��ɮ36%ע���Y7� I���
�w�G�����IG{i}�
�8�(��a�"5xu�c��s���v�˄T�IH�n'�k����$o��zn:.6-�����#��N�W�e���'O�:��ߡ�Ob��H�n8���ٔ��N�
��: �֑B���"I�r�v�)Dj�)�fK|E�Y�Vf����&�f�M'l��T�o��@�W�A�edx�sΙ���h�:�1�WYg
�k܊$�w�`��>@�y����c���
֘7=<�A��� ����P `#YE�?�Ϥ��,h[�b����gF�����|�����yT��fb�ޱ<��o��|M��SC�0d�a1/ҕ�?�r\�H�Y��e�A.[��@^���-�>�dk�aF.Ӷ$뒳���̒�)��a"kdlZ�e�y�9+d++�r�C&�(��B,y�)�*���(%�F5�H�Մ~{�qZ=d���K�]�#���z��nxr*R�Ŀ���D����\hc�gۘ��=��߹h���V5y��u������k>�Cׯ���c�>���[�I��X�����0�@�s�#���� Q���A��Gz�G)<��ww'�o�q�E�g(�.�ZKmh�ӟ�f��buB̀�����(Z��?]L���D��@���es�@�Z=�WZJ�fYL�ЬZ��(�ۊi�+�`7�-,�5�'"��
�t�PNe�J��OL>9-c�P�f*W�!����J��Ӣ�H� �q��Zƈ]�
�<���9����T�ւ��Uo�pF��Q��bЊ �t�چ���@���H( u(�~�WXD"���Gvx�(�M�U��+O}bD(/�a�a�CF��E�2|f�.�9��CQ&�+�O��,(���1܌����,�E�F��ѽU^8u\J�?�C��M<��K�<]�4IOz<^��j��
D/&�#�x�� ����4�xt�ϫW�uc������V���Ë\tCU]8�3C#X<��x��� ���ᙊf+���L��7jyF*3P~>�9�`�.fs�B��%o� $z�r) �(�;I�Q�[NlA,c�|K�����0�K�.}4bA6�v�j�+�g�+��ٓч���|R�� o^�[%�.���eK]j=b��^�{]�E!
ŀμ�1C�G�DR��rPƈ��������Q�P�/`���r��(;���K�?�RZbK ��d�+s�Ԕ0�f��PΥM_�E�����Q
qY�p5���N�L��G����UPv[A+�t߁�� g��S8$� �ו���D$H%5o��$
h �{Xq�P�G�~**�!w8�<
Eڹ�����əŌC�0}�
n������%��?����%�=��&�6���_A�Z�b�o�W˟,J�+�2�@ �G��MP��Jx푤�L��I��I��ބ�����)=�-�w-'�����}�+���3?4�w�sϴ~��8���A�~U�0�1�M��'���P�� 訃�q��)(V��L|z��c=��Fk^��ָ��D��% 3m&�Y���7Ͳiv�f)謪J��ӄc���۲��$*9�C{����0��n�דh];p�b��j�C�qiD��
_�cZ�(�gaxk���L_9�kEiE�y�
�@���m�64�&���i�lS4%�,�y��%�#��2G(��L��\���T�����-��`��w�)��;�T�7l#5�!_Ã������e��5r�,�hd�"B�7�Ь������b]�H��>hP}��_�L��Js&"�+|<*xD��Q�t�ɝT�E�@G��1� *�<��q�X��
Q����t/���hWɲ`�����k�������j�������\�/���dƟ7���.�!���.��S�L.]�H9���o�=��%��_`���s����
�|&�>�6���֥p �X�����|k˾u�(♹7Y�ɬ�;�;�������o�/���P�xh��K/_vپ]�\��2�O�����|�
X4ϱPKO#���e�lR���e˘��ls�<]D�\�hU�q�[�0�.��/��a�[6$E�����)�8.)�c�ݸq�MD<֝п��;֘�5��=�-L�U�f"U/�uT��yKe͝I
��`������=�'ź<L[>��t�|��p^��ݳ���?���0��e��S�=�lS�뺸�n���H:N�L���y��]r�樗B�DSY�B!��z�+":䏚Nw,���so<�������WZW�>�������������s�X('O })����(mF�Cm�T�l��ι�TL�Hg���w�����f|������r�DUG���|�b��P�ƙ�j:gn$�D��j@9��I;����ǖ�*c�̭���wI��`��p�$���r�HjĤ��X��t���6�g]�殅0�ڄ�i@?#�s&��¦O�w�S�ߪo�t��5mmW��ė�kݵ
�:���B
�
Go>�z{v0���5�"#����F�]89_����eE7��he'�/��G:�/�tL'�ʣ�T��rż��J��9���D�圙EX��Z�(��<í�Y��c���+�<o���[w9�L� ���+Pxtz��c,�$��wE� T'})G�<���J�\r�|��O�=Y?�^��$�C<�VX����*fR9S�;'����Q�ȂW_Mâ��y�9�S��y[\��"NB���mC_`@�k�RZ/y�Y�.�����������
c�@S.7w=�/Xo�F�Y�]�w Xy͖3V)p.4'�_c}9��I�Sϼ�˳gJH+QBr2"�x���_1���,Ts�\�ܒ�ξd��7.6�a�."�cf�����,�Ԝ�3����o�ih譧�U��+�q%R@w-��+Z6/������T�Ҷ�)����;]����D��^�S�Ib�i_n��*��C/�4I�QI!ߒl-�X "��|ٜ-����7c �I�i���W�3�R*3��)���PP��X�V��8�&(�R3�.� ͌���ӷ�~���q����18+�� ��Č�����u�gZ8��U)m��W��`l� dC�z��;�jfnӒ�s<��ɢ�/��������q���qs���I���� ��;�[��j���T��J֣|�Wl ���*�jIt�z88�&qo ��sz��k̍1���BOw1"�M�f S��9�(�$eJa����sv��-Je& ���#˪���lU����*��9֗���^V��0C��K,����s�
�ﴪU�n� )�zbA��W��e��/r25
�G�(��!j���y٠>�
b�ɛ�X���~1��Z�A�:�Ј�Wd��@��i�A4�pJ�����fE��!��0�f� ��=�ݼ[O4�tpJ��۩�j����2J�5�bٓL�)�w���\��Ity��˓�F�M�<��Z����j��Y1̋�
�(���_l�
�y�Bȯ������@o��[�����w��;̖XB) �GB3�UP!��mY�\9H�90�c� [�J����@<u��&8u@���TZ~��{B��{U�d�W�l%���m�"U�D���B��+M�F�5��P��p4݀8�*R>l4�"������TorB�S'������tE��zV
��Cs����-��c�K�Nx/u�!W2�B�L�
�����нպ>�>xa���.2>ڛ��:��J˔C�LU�=��t���U�FUQ�pt�>�lճu�����I�=�Mj��p�ΎJ�\���};����F��`L��;y��,U���vv�Y����M���Q.�e�Q�Eth-�T2m����Zl^1X��N�68hN��)6 p�,)���:��Y<��*�XK��.��R�Txx���(�|[]D��ڞJ�1tc6R���d�z������Ç�U��8�t�`���1��nݸ��ZY3GɊ,��'�_�v�%��+�?��Ax��KWuJ��gYX
9���x��½��eJv<��w���C&�6F�1<eℎ\p|v��ru9$�J���.O�3���]g�}�=�w�>�u�0E�^�� 5��lh�0ѿ���'�O�X�_�S���.�u *�0�<G٦d9��� 3w�
lUc�X�t[fؐ�ǯ��8O���ʹ�Nih����(!G����s��?o}����Vh�z�u�y�g��S%��(�i���(f �؝�d��}��m�l[�xX&F��/8Fۺ�k�%ɮM�Z'9��;S���|=+����t���' �Ғ� V�6�&-Q��}��w�b4�����,@6j�E�������u�-��5S��!���-�Rz햧 �fGX�ã�\3��P�7?>�����q�]��o�pe}]0s�f�0��>h�<���<V�|�z��S���a�T��S���
tH�m�ͥ�;����Jk]p��1�.��Ց8���3��E6�cF��?_n"�P��&�2�!>��}���P��O�E����#�a�t��+"�D�H�lq�4�Y/�?o�0���(1y��vD(�v��-� �%%��>D��KL�sY;� �):�pf�c�#�|K���+Ȳ%��&�Z��6WuSH�g�Hk��3��[�Y���A]L��_r�U-R#��:�DK� �>_u[��,�Cwا�ny��_��Ա���u煬�lj���ʸ\.w�@=~T&��N�v�7t���.��=�՝9���
DR3�D4��H�U��E
"UT��ẘ�U٪�F�H��T�j���:�LJd��pW9��~z���ứD�o��@7š;�^�ө��$����>�;��>؋��7w$�'-;~��)�8qD1"snL{���[2�2���O�9���Kz��H�x\�Ɛe��ϕ��=}�S��nsv��D�%LM��J�}m�%g� ��H�P�`�!�
"�������N���ܪ�(��c�����K�J�����d��@l .F~�B8|�Hy��)�0/a
�
�<��<j$U�qƌ��l�%"_ʄ�Tj����Z�DA����27��Ζ?&�R^He��䜽`���e���2+�|�R��9���Cf&[N�\������)�75�+�JkM+\8���TϑA�u��������ABy�J��?q���F��?z�O��ƻ����>����20�_�j����o��7�tmn������M�h��|U4u�f�y���?�~����$��ۈ��&���x���Xo��m~�Ee��/}�|,5`��O�m���z�M�q;�C������=�=�=ǽ�����d��%iҹJ��-����Ǜ�B���A����j>yya$WS�$}s:m���t�X^�l��GX�6"�ܺh�qpQ�����l��#I��g)��8��n�g9�����֤����Yo9���lD�sr6�Ng������9��a�
�i{�
#�4r�^�o�?&o�Z�?K�ܹtl�إ;Ǝ��ȁ���
qEwf�RW�3��p*y� ]ܬ�do�݈4n{�w�^�;��K/��o*��~�ہҊ.�6�},���t�S� �ViмJl���d�����Z1�h���30V
��e� ��ݾ���ʊR�Xb�5A��tg�_�h(^�-�]0�ׇ���e}@k�<:p����T���;�He��ޗ���훦@�Hnj����bO���昱�&ļ��,M�wtԓ�ZСH!ǬY�f CI0Y�o%ʉ^��.�j�xCr*��ts��@��N�d�ag�~S�dS1�B�gЯwz!�+��ϜYl��oi�M^j�s��K�[� [��+��d��r�}�zH�4��f�!�W�N��xj2�!�?�?R��ˎ��O�$��0��{�
����!��W�%��2U����R8V�2n����?w���\)����?�����H{"syB)�hȫ;}��X�J����M�FGg��l>�ٜ\��qF<gx��l�K���
���-ښa�XY��SѰ�z�
�Y�[���RwG*���� ���;Yyg����t6�S�2u���'�e��Y ��X 뽓(�]�� ��z�;+��|G �K-Agm��JKV<�(BȀ�}4����!^{e���N��m�t1IO|��}�&l}�:tTz�l��s�\.|�(�>#�
|�LbN�e�Y[0��d/����3����g���Tlú��gY�x�f�l��t����A�n�OEN�+?�2�^��n:z�!nz��*��d�4D)Y4J�d�!���Vw��y�C�-�#�e_���}�����Ip*�3����U�'V�:��)�C�-xe+�1���P�A����>�^�~����Ž�*����ֻ���ڇ��֕�%�������������:ǴE4����'�s��Q���Ҽ�m=��ҺQ?3YM�[�D�h�p�k�7��O���ڷ�h[�}o�?���G�5/:�uV�����)�5�n�Y��U}k�'Ժ��3�z�s��5u��=��{�P�ӷw+9Y��{�Z��=������>w���ݫjG|�s���W$�h��|�O�Ȑ�찱�v,�h�Z�"�*Їu0\u}u uq�>n��:Im�h-ّl��L�Ei���MoGe3}��h&�~�bpX�f �V�뭗[[ZZ�.����9r!�s&W�5s�P:V�l��nd���
���lͷl���O�T,ö4��^`�-�>'�&����C構v�ZQ@PT�7����E)͒���]�o!�����-�� S�J���N��/��h ��$�C�������hѮ��Ɣ��t]K�F
�7�( o,
�8��F��5� �7b�ẗ����yp���.GҨ+ 4f5�1D�Pt�䚚�<�w�a��%[���c��BH5��U��b�S�4�^���du��0Vz�<�p#�ng
�b]~��P�F!�ڛ�<��~»bf��)��NUXXٿ��1��M�&��j������+�R�t�E.���y`�v��&�sT�s��c�ͼ�`Ǵ���l!dž���
�#)WF�+c���.l�=��>����<
��m�*�+��N�S��J��@G5�=.[��F����OJ�/��T��&����
^E2�c��fMWdK
`��v����u6kr�[��`�̫ Q�kz<�V��� �?��܆�9���θ�U�sZ'�^�:�ɲK��Z,�+�P��+!��31I�Զw�j���Sd�#�iR�����B���e���(�Z�,v�}���8|A��A���&��jK�S�꾪��i�ڠw8������?�8\�u .)�Z����[�ަ��cȸ
c>�)]d�Fb��K�D!�Z.V�6K�!<+��ri;�SG��6; �Qݠ��]!Y���S�|Ǘ��*�%�o8
�>�'f?4i]6�ѴL�7V*ni�f�e ��U�|´E�|���ĥ�~� ���Q^���o�f��U+n'�f��}<��2f*�곾�T�(�0h^-+���3q9���Z�^p O.ں����F�=�O�7%�����H��e�d!Fz)T���.��|L�2����&M�i�fz�콽�|��6)���tӌ���`�JtN�+��}x�>��`Ϛ>pE�@��C��]s{.����JHM�/�`��T~����U^�����W�Z�_f�f؞�9��:�3�!���T�6,�sT�*)�V�p�f$Ch��\���WW�����K�п��>qa�ɇ���;�u��nɵ�h3��$w�7&��=O��d?�7�z�=Bux�I�;�����G �o��;c�L���<v�Έ7V�H�f��$�@1'�h[@>�b4���f�Ea@�m����?ˆ|���{��S�z�QPܒ���|b[�{;�k���[@��X ��wQU�}?������~�q�{�^��n�������e� J��%GN���|��K��Ⱥ�|�or�s�r�²�e��Dk�oa)p��ǟ�1�ɖ*�_�mqf�%���ln����/�]�ݶm�ȯtz�'�+*�O`Qg�^3�v~0FL;���i���Y���o��BB\��
�]zi��d�|�}�þd���"i�]f�/�w��5�,�s0vɓ��܊��CC�x5���4�.?/��DZ0R�
E��*)��p�ʼ�.T��* �����5��D��Gs{4� �iQ�u�Pc�@1<�GU^i
����x�#���b�Y�D�!y<�Wt�}��}T7��J�g6'�-b+M���:]��'L�&&�" F9�.�3!���o�Ǜ�#Bń ����u5T��n��i��A�pI��8�ShM��nmt6(�b�g���7�>-�.�;�huʬ3� W4(�<�\U�\�C���)�*8���k��^��]-��e�JS�"I'e"I�*������>�2ݞ �ƒ������q��7m{�.FA]�bn-[0Ja���*V����m����/q��C\,�cI`��m�c˴�-��98��S1/ڤ|�[6�H c��s�5��<�>"нKF5��q�n���8>����%U���NI=�SY��)��>����Z��ҰL�cAmO��ߟ:jӅ�7�ᷛN�K��F�!%�4�5�m)��c�a]iv VȆ�)x������d��vw��>�IS_pc�?�fu��o�Y/�jͩ�C�����阹M۰�'�:8�c���m&���I�i��c]���]��&�r`����R��NC�av���u�4u�6g��� �m?q��h�����BD�s<��\��8��,�F��ɳ��O�D�vA�!��.o��>�$s�����$�(�!��H2Up(�j6�.�0.<���x_���5�0����i�A�3y:��p��b{!�v�2�� 4�����9c!f.$d�`���U^~qD$�-/�������T|��3�8�9�����+�+��e}� �{�u�+��A �Zh����n��]{j_�L �?1��dX�}C�q����!��<���,���lZ��m =/�^v�c
����D���U>lF�Ӄ�i3F�.ɥ ��1�B������N������3�S�]4�����MArt�X����k���s���� ���= �o�
���X��\7�}��>Gj:ebl��&�}��"�ޑ]%v���+��n��Re��� P;�ȝ����������à(MOS��ζ j��e�\5�5���uN�Ж�]]��)��*x���r�0��-X�Y^�-��W��!�,�CLTk\+�4n��ƷvN�lrE�a��0�j�.mB+����X=����z{�Y?Ŏ�.l�)���R��&� �.�jo�]�Z��m�P&���'��-
1Ws�)�-㵮-��J����G��X�:�&L疲/���eƱ��"ç#(��P��t��W *��U����b��*
,e����쬥�P��bV�'�C����eЩ�j�B�us�<��fk���q�n:cL���u�4������e����9�{`��} �2.\���m�yl�� ��^��(Zo����.^�?Z�w�#ܡ�K�gֲ@M�?��7A�Ț%�þ�@���b�U۩��UM�ў���4YO}�Ԕfko��{�.�f��W�7Ќ%_e>������s�[�����e�u5R�U�G�}���?��BB�e��@䋚���w�Z�K,�K�T�o=~O~:\u���`U[oJd������r{o�f�)]m>qA{/t���v.Jxk���fuBR�N}}�A�8�[��vw��w;w����(r�B�Ua����_�-����M�4m/��t;�o����K��v����2ل��dx�DK@�6+Db�Pv��z���8�~V^��~�y��yTU.��u���!�R���K*ty�����*��+�[��N���~~�Ϭ''?=�TNP/L����'9u¬�wZ1zš�[N��g�a=��30�/�zu x�c`d`` �~]�6_�Y@���O0�����XDX�\&�( Uo~ x�c`d``a ���#*� 5��x�ca```! o� � ��j���*�V�
�
���
��<�.��"x��@��l��(p2�hf�Z�r & �!!~"0"�#*$$Px�c`d``�f�ba & �B��`> cq x����N�@���f�D
.Iƅ�rqǎ
;B�R��R:�t �%|�'��n�)����I;�Ι33p�O��&�\3:q ��\��\!,W��r���r�Ձ�n���r��o�Z��\��,��-W�M�U܉g�5���:f"���x�d"�o�/>�K#�p#��oO�Z��Me����-�3���J���-d~m��1�j�uF*12���j���q�Ƥ�N'��
�$�>��q��C�9�2�Cl8Kf}�1�Q����d�21��=W�v��aE��=��Y�-2�y�>�A�8�WnI����:�P4i�[�����
� ��Pﲊ�~ ��� x���UVBQ �; ���n�k���_8�Y��Xx��s���}HHJIˈd����UT�|����������70426153�����ǯ�?�6�v��N�.�n/6o��&k