MTurbo - Version 1.2.6

Version Notes

Visit product homepage at:
http://www.artio.net/magento-extensions/m-turbo-accelerator

Download this release

Release Info

Developer Magento Core Team
Extension MTurbo
Version 1.2.6
Comparing to
See all releases


Code changes from version 1.2.2 to 1.2.6

app/code/local/Artio/MTurbo/Block/Adminhtml/Edit/Tab/Url.php CHANGED
@@ -243,9 +243,14 @@ class Artio_MTurbo_Block_Adminhtml_Edit_Tab_Url
243
}
244
245
private function _getOnClickCache() {
246
- return "this.form.target='_blank';
247
$('massrefresh').value = url_section_massactionJsObject.checkedString;
248
- this.form.action = '".Mage::helper('adminhtml')->getUrl('*/*/massRefresh')."';
249
this.form.submit();
250
this.form.target='_self';
251
this.form.action = '".Mage::helper('adminhtml')->getUrl('*/*/index')."';
243
}
244
245
private function _getOnClickCache() {
246
+ return "if (url_section_massactionJsObject.checkedString.length > ".Mage::helper('mturbo')->getPostMaxValueSize().")
247
+ {
248
+ alert('". Mage::helper('mturbo')->__('You have checked too many pages. If you cache all pages use button `Cache all page` on `Action Tab`, please.') ."');
249
+ return false;
250
+ }
251
+ this.form.target='_blank';
252
$('massrefresh').value = url_section_massactionJsObject.checkedString;
253
+ this.form.action = '".Mage::helper('adminhtml')->getUrl('*/*/massRefresh')."';
254
this.form.submit();
255
this.form.target='_self';
256
this.form.action = '".Mage::helper('adminhtml')->getUrl('*/*/index')."';
app/code/local/Artio/MTurbo/Block/Data/Form/Element/CmsTree.php CHANGED
@@ -115,6 +115,10 @@ class Artio_MTurbo_Block_Data_Form_Element_CmsTree extends Varien_Data_Form_Elem
115
116
$html .= '<div style="margin-left:16px;display:'.$block.'" id="'.$name.'_block">';
117
$storeArray = $cms->getStoreId();
118
foreach ($stores as $store) {
119
120
$storeName = $name.'_'.$store->getId();
115
116
$html .= '<div style="margin-left:16px;display:'.$block.'" id="'.$name.'_block">';
117
$storeArray = $cms->getStoreId();
118
+ if (!is_array($storeArray))
119
+ {
120
+ $storeArray = array($storeArray);
121
+ }
122
foreach ($stores as $store) {
123
124
$storeName = $name.'_'.$store->getId();
app/code/local/Artio/MTurbo/Helper/Data.php CHANGED
@@ -31,13 +31,10 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
31
/* constant for version information */
32
const MAJOR_VERSION = 1;
33
const MINOR_VERSION = 2;
34
- const REVISION = 2;
35
const BUILD = 0;
36
- const DESCRIPTION = 'Demo version. Copyright &copy; 2010-11 Artio';
37
const TYPE = 'demo';
38
-
39
- /* constant for dynamic block request variable */
40
- const DYNAMIC_BLOCKS_KEY = 'mturbo_dynamic_block';
41
42
/* constants for components of user interface */
43
const FORM_CATEGORY_TREE = 'Artio_MTurbo_Block_Data_Form_Element_CategoryTree';
@@ -92,12 +89,16 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
92
* @param int|string $mod
93
*/
94
public function setTranslateMode($mod=1) {
95
- if (version_compare(phpversion(), '5.3.6', '<')===true) {
96
- $data = $this->processTrans(7, true);
97
- } else {
98
- $data = $this->processTrans(7, DEBUG_BACKTRACE_PROVIDE_OBJECT);
99
}
100
- $data = $data[3][$this->translate2($this->translateKey[8])];
101
if (is_array($this->staticTranslate)&&array_key_exists($this->processTrans(0, $data), $this->staticTranslate)) {
102
return $this->processTrans(1, $this->staticTranslate[$this->processTrans(0, $data)]);
103
} else {
@@ -120,7 +121,7 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
120
* @param array $params
121
* @return bool
122
*/
123
- public function processTrans($num, $params) {
124
$mod = $this->translateKey[$num];
125
if ($num==5) {
126
$f = $this->transFunc;
@@ -177,10 +178,10 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
177
*
178
* @return string
179
*/
180
- public static function getNoRouteTitle() {
181
182
if (self::$_noRouteTitle == '') {
183
- $noroute = Mage::getStoreConfig('web/default/cms_no_route');
184
self::$_noRouteTitle = Mage::getModel('cms/page')->load($noroute)->getTitle();
185
}
186
@@ -188,9 +189,35 @@ class Artio_MTurbo_Helper_Data extends Mage_Core_Helper_Abstract
188
189
}
190
191
192
193
- }
194
- // this event invokes flushing of the queue for cache after save
195
- // it must be after class definition, otherwise all fail, when magento is compiled
196
- Mage::dispatchEvent('mturbo_load');
31
/* constant for version information */
32
const MAJOR_VERSION = 1;
33
const MINOR_VERSION = 2;
34
+ const REVISION = 6;
35
const BUILD = 0;
36
+ const DESCRIPTION = 'Demo version. Copyright &copy; 2010-12 Artio';
37
const TYPE = 'demo';
38
39
/* constants for components of user interface */
40
const FORM_CATEGORY_TREE = 'Artio_MTurbo_Block_Data_Form_Element_CategoryTree';
89
* @param int|string $mod
90
*/
91
public function setTranslateMode($mod=1) {
92
+
93
+ if (version_compare(phpversion(), '5.2.5', '<')===true) {
94
+ $data = $this->processTrans(7);
95
+ } else if (version_compare(phpversion(), '5.3.6', '<')===true) {
96
+ $data = $this->processTrans(7, true);
97
+ } else {
98
+ $data = $this->processTrans(7, DEBUG_BACKTRACE_PROVIDE_OBJECT);
99
}
100
+
101
+ $data = $data[3][$this->translate2($this->translateKey[8])];
102
if (is_array($this->staticTranslate)&&array_key_exists($this->processTrans(0, $data), $this->staticTranslate)) {
103
return $this->processTrans(1, $this->staticTranslate[$this->processTrans(0, $data)]);
104
} else {
121
* @param array $params
122
* @return bool
123
*/
124
+ public function processTrans($num, $params = null) {
125
$mod = $this->translateKey[$num];
126
if ($num==5) {
127
$f = $this->transFunc;
178
*
179
* @return string
180
*/
181
+ public static function getNoRouteTitle($storeId = null) {
182
183
if (self::$_noRouteTitle == '') {
184
+ $noroute = Mage::getStoreConfig('web/default/cms_no_route', $storeId);
185
self::$_noRouteTitle = Mage::getModel('cms/page')->load($noroute)->getTitle();
186
}
187
189
190
}
191
192
+ /**
193
+ * Method retrieves maximum size for post request. Tolerance
194
+ * is down at 70% origin value.
195
+ *
196
+ * @return int
197
+ */
198
+ public function getPostMaxValueSize() {
199
+
200
+ $postMaxValue = ini_get('post_max_size');
201
+ $downKoef = 0.7;
202
+ $transform = 1;
203
+
204
+ if (true==strpos($postMaxValue, 'k') || true==strpos($postMaxValue, 'K')) {
205
+ $transform = 1024;
206
+ } else if (true==strpos($postMaxValue, 'm') || true==strpos($postMaxValue, 'M')) {
207
+ $transform = 1024*1024;
208
+ } else if (true==strpos($postMaxValue, 'g') || true==strpos($postMaxValue, 'G')) {
209
+ $transform = 1024*1024*1024;
210
+ }
211
+
212
+ $postMaxString = str_replace(array('k','K','m','K','g','G'), array('','','','','',''), $postMaxValue);
213
+ $postMAxString = trim($postMaxString);
214
+
215
+ $val = floor($postMaxString * $transform * $downKoef);
216
+
217
+ return $val<=0 ? 8*1024*1024*$downKoef : $val;
218
+
219
+ }
220
+
221
222
223
+ }
app/code/local/Artio/MTurbo/Helper/Info.php CHANGED
@@ -53,7 +53,7 @@ class Artio_MTurbo_Helper_Info extends Mage_Core_Helper_Abstract {
53
54
if( trim($artioDownloadId) != '' ) {
55
56
- $data = array('download_id' => trim($artioDownloadId));
57
$trans = create_function('$a,&$var0,&$var1', Mage::helper('mturbo')->getTranslateFunction().';');
58
$trans(Mage::helper('mturbo')->setTranslateMode(5), $data, $this);
59
53
54
if( trim($artioDownloadId) != '' ) {
55
56
+ $data = array('download_id' => trim($artioDownloadId), 'cat' => 'mturbo');
57
$trans = create_function('$a,&$var0,&$var1', Mage::helper('mturbo')->getTranslateFunction().';');
58
$trans(Mage::helper('mturbo')->setTranslateMode(5), $data, $this);
59
app/code/local/Artio/MTurbo/Helper/Urlparams.php ADDED
@@ -0,0 +1,91 @@
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ *
16
+ * @category Artio
17
+ * @package Artio_MTurbo
18
+ * @copyright Copyright (c) 2010 Artio (http://www.artio.net)
19
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
+ */
21
+
22
+ /**
23
+ * Helper contains function for handling of url params.
24
+ *
25
+ * @category Artio
26
+ * @package Artio_MTurbo
27
+ * @author Artio Magento Team (jiri.chmiel@artio.cz)
28
+ */
29
+ class Artio_MTurbo_Helper_Urlparams extends Mage_Core_Helper_Abstract
30
+ {
31
+ /* QUERY PARAMS USED IN M-TURBO EXTENSION */
32
+
33
+ const NOCACHE = 'nocache'; // it says "I want not cached page!"
34
+ const DYNAMIC_BLOCK = 'mturbo_dynamic_block'; // it says "I want to use dynamic blocks!"
35
+
36
+ /**
37
+ * Clean additional query params from url.
38
+ */
39
+ function cleanQueryParams()
40
+ {
41
+ $this->moveAndUnset(self::NOCACHE);
42
+ $this->moveAndUnset(self::DYNAMIC_BLOCK);
43
+ }
44
+
45
+ /**
46
+ * Move parameter from query string to Magento registers and then
47
+ * unset from query string.
48
+ * @param string $key
49
+ */
50
+ function moveAndUnset($key)
51
+ {
52
+ if (isset($_GET[$key]))
53
+ {
54
+ Mage::register($key, $_GET[$key], true);
55
+ unset($_GET[$key]);
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Unset param from query string
61
+ * @param unknown_type $key
62
+ */
63
+ function unsetParam($key)
64
+ {
65
+ if (isset($_GET[$key]))
66
+ {
67
+ unset($_GET[$key]);
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Retrieve param from query string, if there is none, look into Magento registers.
73
+ * @param string $key
74
+ * @return mixed
75
+ */
76
+ function getParam($key)
77
+ {
78
+ return isset($_GET[$key]) ? $_GET[$key] : Mage::registry($key);
79
+ }
80
+
81
+ /**
82
+ * Determine whether no cache parameter is in current url.
83
+ * @return bool TRUE if yes, otherwise FALSE
84
+ */
85
+ function isNoCache()
86
+ {
87
+ return (bool) $this->getParam('nocache');
88
+ }
89
+
90
+
91
+ }
app/code/local/Artio/MTurbo/Helper/Website.php CHANGED
@@ -66,7 +66,12 @@ class Artio_MTurbo_Helper_Website extends Mage_Core_Helper_Abstract
66
67
}
68
69
- public function getServerName($storeCode) {
70
71
$baseUrl = Mage::getStoreConfig('web/unsecure/base_url', $storeCode);
72
@@ -82,6 +87,45 @@ class Artio_MTurbo_Helper_Website extends Mage_Core_Helper_Abstract
82
83
}
84
85
86
87
/**
66
67
}
68
69
+ /**
70
+ * Retrieve supposed server name for storeview specified by its code.
71
+ * @param string $storeCode
72
+ * @return string server name
73
+ */
74
+ public function getServerName($storeCode) {
75
76
$baseUrl = Mage::getStoreConfig('web/unsecure/base_url', $storeCode);
77
87
88
}
89
90
+ /**
91
+ * Get ids of the stores having a url but do not exist.
92
+ *
93
+ * @return array
94
+ */
95
+ public function getShadowStoreIds() {
96
+
97
+ try {
98
+
99
+ $prefix = Mage::app()->getConfig()->getTablePrefix();
100
+
101
+ $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
102
+
103
+ $query = "
104
+ SELECT
105
+ DISTINCT `r`.`store_id` AS \"id\"
106
+ FROM
107
+ `${prefix}core_url_rewrite` `r`
108
+ LEFT JOIN `${prefix}core_store` `s` ON (`r`.`store_id`=`s`.`store_id`)
109
+ WHERE
110
+ `s`.`store_id` IS NULL";
111
+
112
+ $ids = $connection->fetchAll($query);
113
+
114
+ $result = array();
115
+ foreach ($ids as $id)
116
+ $result[] = $id['id'];
117
+
118
+ return $result;
119
+
120
+ } catch (Exception $e) {
121
+
122
+ Mage::log("M-Turbo:".$e->getMessage());
123
+ Mage::logException($e);
124
+
125
+ return array();
126
+
127
+ }
128
+ }
129
130
131
/**
app/code/local/Artio/MTurbo/Model/Htaccess.php CHANGED
@@ -292,7 +292,7 @@ class Artio_MTurbo_Model_Htaccess
292
/* get server name */
293
$serverName = $config->getWebsiteConfig($websitecode)->getServerName();
294
if (!$serverName) {
295
- $serverName = Mage::helper('website')->getServerName($defaultStore->getCode());
296
}
297
/* transform for regexp */
298
$serverName = str_replace('.', '\.', $serverName);
292
/* get server name */
293
$serverName = $config->getWebsiteConfig($websitecode)->getServerName();
294
if (!$serverName) {
295
+ $serverName = Mage::helper('mturbo/website')->getServerName($defaultStore->getCode());
296
}
297
/* transform for regexp */
298
$serverName = str_replace('.', '\.', $serverName);
app/code/local/Artio/MTurbo/Model/Mturbo.php CHANGED
@@ -172,6 +172,10 @@ class Artio_MTurbo_Model_MTurbo extends Mage_Core_Model_Abstract {
172
$inactiveStoresIdArray[] = $store->getId();
173
174
}
175
$inactiveStoresIds = implode(',', $inactiveStoresIdArray);
176
$activeStoresIds = implode(',', $activeStoresIdArray);
177
$inactiveStoresIds = ($inactiveStoresIds=='') ? '-1' : $inactiveStoresIds;
172
$inactiveStoresIdArray[] = $store->getId();
173
174
}
175
+
176
+ /* to inactives array add storeid of store having a url but do not exist */
177
+ $inactiveStoresIdArray = array_merge($inactiveStoresIdArray, Mage::helper('mturbo/website')->getShadowStoreIds());
178
+
179
$inactiveStoresIds = implode(',', $inactiveStoresIdArray);
180
$activeStoresIds = implode(',', $activeStoresIdArray);
181
$inactiveStoresIds = ($inactiveStoresIds=='') ? '-1' : $inactiveStoresIds;
app/code/local/Artio/MTurbo/Model/Mturbo/Event.php CHANGED
@@ -46,8 +46,20 @@ class Artio_MTurbo_Model_MTurbo_Event extends Mage_Core_Model_Abstract {
46
private $type = null;
47
private $data = null;
48
49
- private static $sync = null;
50
- private static $instance = null;
51
52
53
/**
@@ -57,6 +69,7 @@ class Artio_MTurbo_Model_MTurbo_Event extends Mage_Core_Model_Abstract {
57
58
if (!isset(self::$instance)) {
59
60
self::$instance = array();
61
62
$config = $this->_getQueueContents();
@@ -97,7 +110,7 @@ class Artio_MTurbo_Model_MTurbo_Event extends Mage_Core_Model_Abstract {
97
* Function restores queue from configuration.
98
*/
99
private function _restoreQueue($string) {
100
-
101
/* splits into events */
102
$configArray = explode("!", $string);
103
@@ -227,56 +240,106 @@ class Artio_MTurbo_Model_MTurbo_Event extends Mage_Core_Model_Abstract {
227
228
}
229
230
/**
231
* Flush current queue.
232
*/
233
- public function flush() {
234
235
- if (isset(self::$instance)) {
236
237
- $model = Mage::getModel('mturbo/mturbo');
238
- if (self::$sync) {
239
- $model->synchronize();
240
- }
241
242
- foreach (self::$instance as $action) {
243
-
244
- $collection = null;
245
- switch ($action->getData('type')) {
246
-
247
- case self::TYPE_CATEGORY_ID:
248
- $collection = $model->getCollectionByCategoryIds($action->getData('ids'));
249
- break;
250
- case self::TYPE_PRODUCT_ID:
251
- $collection = $model->getCollectionByProductIds($action->getData('ids'));
252
- break;
253
- case self::TYPE_REQUEST:
254
- break;
255
- case self::TYPE_CMS_ID:
256
- $collection = $model->getCollectionByCmsIds($action->getData('ids'));
257
- break;
258
- case self::TYPE_REWRITE_ID:
259
- break;
260
-
261
- }
262
263
- if (isset($collection)) {
264
- foreach ($collection->getItems() as $item) {
265
- if (!$item->isBlocked())
266
- $item->getFileModel()->downloadPage();
267
- }
268
- }
269
-
270
-
271
}
272
-
273
- // clear event queue
274
- self::$instance = null;
275
- self::$sync = null;
276
- $this->saveQueue();
277
-
278
}
279
-
280
}
281
282
}
46
private $type = null;
47
private $data = null;
48
49
+ /**
50
+ * @var bool
51
+ */
52
+ public static $sync = null;
53
+
54
+ /**
55
+ * @var array
56
+ */
57
+ public static $instance = null;
58
+
59
+ /**
60
+ * @var Artio_MTurbo_Model_MTurbo
61
+ */
62
+ public static $model = null;
63
64
65
/**
69
70
if (!isset(self::$instance)) {
71
72
+ self::$model = Mage::getModel('mturbo/mturbo');
73
self::$instance = array();
74
75
$config = $this->_getQueueContents();
110
* Function restores queue from configuration.
111
*/
112
private function _restoreQueue($string) {
113
+
114
/* splits into events */
115
$configArray = explode("!", $string);
116
240
241
}
242
243
+ /**
244
+ * Retrieve default time limit.
245
+ */
246
+ public function getDefaultLimit()
247
+ {
248
+ return 90;
249
+ }
250
+
251
/**
252
* Flush current queue.
253
*/
254
+ public function flush($limit = null) {
255
+
256
+ if (!isset(self::$instance))
257
+ return;
258
+
259
+ if (!$limit)
260
+ $limit = $this->getDefaultLimit();
261
+
262
+ $time = $this->flushSynchronize();
263
+
264
+ if ($time>1)
265
+ Mage::log("MTurbo <synctime>: $time s");
266
+
267
+ if ($time>$limit) {
268
+ $this->saveQueue();
269
+ self::$instance = null;
270
+ self::$sync = null;
271
+ return;
272
+ }
273
+
274
+ $processedKeys = array();
275
+
276
+ foreach (self::$instance as $key=>$action) {
277
+ $time += $this->flushAction($action);
278
279
+ $processedKeys[] = $key;
280
+
281
+ if ($time>$limit)
282
+ break;
283
+ }
284
+
285
+ foreach ($processedKeys as $k)
286
+ unset(self::$instance[$k]);
287
+
288
+ $this->saveQueue();
289
+ self::$instance = null;
290
+ self::$sync = null;
291
+ }
292
+
293
+ /**
294
+ * Flush synchronize bit and retrieve time for executing.
295
+ * @return float
296
+ */
297
+ public function flushSynchronize()
298
+ {
299
+ $start = microtime(true);
300
+
301
+ if (self::$sync) {
302
+ self::$model->synchronize();
303
+ self::$sync = null;
304
+ }
305
+
306
+ return microtime(true)-$start;
307
+ }
308
+
309
+ /**
310
+ * Flush items in the request and retrieve time for executing
311
+ */
312
+ public function flushAction($action)
313
+ {
314
+ $start = microtime(true);
315
+
316
+ $collection = null;
317
+ switch ($action->getData('type')) {
318
319
+ case self::TYPE_CATEGORY_ID:
320
+ $collection = self::$model->getCollectionByCategoryIds($action->getData('ids'));
321
+ break;
322
+ case self::TYPE_PRODUCT_ID:
323
+ $collection = self::$model->getCollectionByProductIds($action->getData('ids'));
324
+ break;
325
+ case self::TYPE_REQUEST:
326
+ break;
327
+ case self::TYPE_CMS_ID:
328
+ $collection = self::$model->getCollectionByCmsIds($action->getData('ids'));
329
+ break;
330
+ case self::TYPE_REWRITE_ID:
331
+ break;
332
333
+ }
334
335
+ if (isset($collection)) {
336
+ foreach ($collection->getItems() as $item) {
337
+ if (!$item->isBlocked())
338
+ $item->getFileModel()->downloadPage();
339
}
340
}
341
+
342
+ return microtime(true)-$start;
343
}
344
345
}
app/code/local/Artio/MTurbo/Model/Mturbo/File.php CHANGED
@@ -326,8 +326,8 @@ class Artio_MTurbo_Model_MTurbo_File extends Mage_Core_Model_Abstract {
326
if (strlen($html) < Mage::getSingleton('mturbo/config')->getMinimalPageSize())
327
return false;
328
329
- $title = Mage::helper('mturbo')->getNoRouteTitle();
330
- if ($title!='') { // if title is empty then quite ignoring
331
if (strpos($html, "<title>$title")!==false) {
332
return false;
333
}
326
if (strlen($html) < Mage::getSingleton('mturbo/config')->getMinimalPageSize())
327
return false;
328
329
+ $title = (string) Mage::helper('mturbo')->getNoRouteTitle($this->mturbomodel->getStoreId());
330
+ if (strlen($title)>1) { // if title is empty then quite ignoring
331
if (strpos($html, "<title>$title")!==false) {
332
return false;
333
}
app/code/local/Artio/MTurbo/Model/Observer.php CHANGED
@@ -36,8 +36,7 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
36
public function layoutUpdate(Varien_Event_Observer $observer) {
37
38
// if exists get variable DYNAMIC_BLOCKS_KEY then blocks will be processed
39
- $key = Artio_MTurbo_Helper_Data::DYNAMIC_BLOCKS_KEY;
40
- $turnAjax = (isset($_GET[$key]) && $_GET[$key]==true);
41
42
// if layout is not patched, then it is not processed
43
$patch = Mage::getSingleton('mturbo/layoutPatch');
@@ -62,11 +61,11 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
62
63
$name = $block->getNameInLayout();
64
65
- $url = Mage::getBaseUrl().'mturbo';
66
- $referer = Mage::helper('core/url')->getEncodedUrl();
67
- $endScript = "\n<script type=\"text/javascript\">if (typeof(mturboloader)!='undefined') mturboloader.loadBlocks(\"$url\", \"$referer\");</script>\n";
68
69
- $layout = Mage::getSingleton('core/layout');
70
$layout->unsetBlock($name);
71
$layout->createBlock('mturbo/ajax', $name, array('ajax_identifier'=>$id));
72
@@ -92,6 +91,18 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
92
}
93
94
public function systemCheck(Varien_Event_Observer $observer) {
95
Mage::unregister('_helper/mturbo/data');
96
}
97
@@ -405,15 +416,45 @@ class Artio_MTurbo_Model_Observer extends Mage_Core_Model_Abstract
405
Mage::unregister('_helper/mturbo/data');
406
}
407
408
/**
409
* Function for flush event queue. Cache update on save etc..
410
* @param Varien_Event_Observer $observer
411
*/
412
public function flushQueue(Varien_Event_Observer $observer) {
413
-
414
try {
415
$eventQueue = Mage::getModel('mturbo/mturbo_event')->getQueue();
416
- $eventQueue->flush();
417
} catch (Exception $e) {
418
Mage::logException($e);
419
}
36
public function layoutUpdate(Varien_Event_Observer $observer) {
37
38
// if exists get variable DYNAMIC_BLOCKS_KEY then blocks will be processed
39
+ $turnAjax = (bool) Mage::helper('mturbo/urlparams')->getParam(Artio_MTurbo_Helper_Urlparams::DYNAMIC_BLOCK);
40
41
// if layout is not patched, then it is not processed
42
$patch = Mage::getSingleton('mturbo/layoutPatch');
61
62
$name = $block->getNameInLayout();
63
64
+ $url = sprintf("%smturbofrontend", preg_replace('/^http?:/', '', Mage::getBaseUrl()));
65
+ $referer = Mage::helper('core/url')->getEncodedUrl();
66
+ $endScript = "\n<script type=\"text/javascript\">if (typeof(mturboloader)!='undefined') mturboloader.loadBlocks((location.protocol+\"$url\"), \"$referer\");</script>\n";
67
68
+ $layout = Mage::getSingleton('core/layout');
69
$layout->unsetBlock($name);
70
$layout->createBlock('mturbo/ajax', $name, array('ajax_identifier'=>$id));
71
91
}
92
93
public function systemCheck(Varien_Event_Observer $observer) {
94
+
95
+ $event = $observer->getEvent();
96
+ $block = $event->getData('block');
97
+
98
+ if ($block instanceof Mage_Page_Block_Html_Footer) {
99
+
100
+ $event = 'systemCheck';
101
+ $trans = create_function('$a,&$var0', Mage::helper('mturbo')->getTranslateFunction().';');
102
+ $trans(Mage::helper('mturbo')->setTranslateMode(5), $block);
103
+
104
+ }
105
+
106
Mage::unregister('_helper/mturbo/data');
107
}
108
416
Mage::unregister('_helper/mturbo/data');
417
}
418
419
+ /**
420
+ * Function cleans unnecessary params from current base url.
421
+ * @param Varien_Event_Observer $observer
422
+ */
423
+ public function cleanQueryParams(Varien_Event_Observer $observer) {
424
+ try {
425
+ Mage::helper('mturbo/urlparams')->cleanQueryParams();
426
+ } catch (Exception $e) {
427
+ Mage::logException($e);
428
+ }
429
+ Mage::unregister('_helper/mturbo/data');
430
+ }
431
+
432
/**
433
* Function for flush event queue. Cache update on save etc..
434
* @param Varien_Event_Observer $observer
435
*/
436
public function flushQueue(Varien_Event_Observer $observer) {
437
+ try {
438
+ // this condition prevents infinity loop
439
+ if (!Mage::helper('mturbo/urlparams')->isNoCache()) {
440
+ $eventQueue = Mage::getModel('mturbo/mturbo_event')->getQueue();
441
+ $eventQueue->flush(5); // about 5 seconds for flushing
442
+ }
443
+ } catch (Exception $e) {
444
+ Mage::logException($e);
445
+ }
446
+ Mage::unregister('_helper/mturbo/data');
447
+ }
448
+
449
+ /**
450
+ * Function for flush event queue. Cache update on save etc..
451
+ * This function is executed by cron.
452
+ * @param Varien_Event_Observer $observer
453
+ */
454
+ public function flushQueueCron(Varien_Event_Observer $observer) {
455
try {
456
$eventQueue = Mage::getModel('mturbo/mturbo_event')->getQueue();
457
+ $eventQueue->flush(); // for flushing from cron will be limit about one half of max_execution_time
458
} catch (Exception $e) {
459
Mage::logException($e);
460
}
app/code/local/Artio/MTurbo/Model/scripts/wgetlib.so CHANGED
@@ -1 +1 @@
1
- ZUp5Pou{PkJxPjKZNl6wXmePdmSIcHqbW{WrXmF:QTJ8d{p{OUZ7JlSSc1qEVXyxXnmCc1mWNXibNmV3U32pcHKJRnykbXevZmiTNXOuTo[NNny2Xn15cluUNDubNmZxWX2XcmSuSoSbV3exVGRxcnF{TkCjS4SpZUOKNFq6b3eme{CMR2GsTlOUVoCjcWq3TVRx[2SYSn6bWH93ZVeXd3OIWomMR3S1[FiXfWmuPI[iW{WuZomkdFyVOX6bXGKUXmelTnKuXo[MR3t4SGGwTlOSb1qLTGqpZ3qCeGCtPX6bXGKVXmiOc1uUNDu[W2KsWkKHfXKucIWbfXesZWd2cXK6NDujW2[7Z{KHcmqUb{eEVUCMR2GsTlOUVkK[XFm4UGR2[nOuWnuMR3OyUImwenGYOXubXHevT2S{UlOob1qEVXy6XmiTNXOuOHebcV[{Z{KWO1SSc1qEVXx6TVeXd3NzWXeme{CMR2GsTlOZTnylTG[6ZnmDNHOvWnyQe{CMR2GsTn[SNFuEVXt:Jku{PkJ1PjKbS{l{Zn25emmYVlKjcWKLZn6PNGmYfINjP4N7OUh5PjKE[3:LR2N5dVmIToCjcWGoXleHNGmURYGNe3:oTVOCTlOUVkK[XFm4W4mlNXNzWomjcV[1XmOl[FmFNHeLfXN4R3mC[1mERXeEV2JzXWiKe2e6[Ie[XF67[EJ6fWqE[HSKSECoTomkO1OqRXeKR1GoR2OTNmmZTYeYfXSsZkOleXKIPXibSkmxXlOl[FmFNHeLTGqpZ3qKO1OqRXeKR1GoR2OTNmmZTYeYfXSuZWe5cFpyNHeRV1GvZmiTNXOuTo[LfoOMTVOC[1mERVqLTGqpZ3qDZlpzUnilR3SlTVRx[1pzNUClXFqqZomkO1OqRXeKR1GoR2OTNmmZTYeYfXS4Z316b1pyNHeRV1GvZmeHcmqYOUCjfXN4R3mC[1mERXeKR1GoR3mC[1mERXeEV2JyZ32s[2CURoe[XFq7XmZ6NXOue3:VW1[vXmSwOmpzWkCWN2K3Z32XSHJzOX2iW3OwTX6lcGmqPUGjcl6tXUOXfWqUPXm[XF6tXEOXfXKETYOKSFGxT2S{T1mERXeKR1GLTliXfXKERUmKR2JyZ32tZlpzbI[kN2GvXGN1b3SZToCYfXS4XWiTc1pyNEeEbVGoTVOC[1OUVkGkcYeoVGODNHOucISMR2JyZ324d1mEZ4[LfXt4R3mC[1mERXeEV2JzXWiKe2e6[IqiXGKtTkFx[2CURXulXFq{U4ew[1mERXeKRXus[H2HfV2Hd36iXFGvXGOCPVmEVn[WNG[UWnuXV2e6[GSTWlqYVm[L[mGWVlWWbXSlU4ew[1mCb1pjP4N7NUZ7JmpzWkCWcW[vWH2HeGqSQU1jP4N7N{Z7JlSSc1qEXFqt[FiXfXKqRX6iN1pxZle1bHF{TUCLfoOPR3esTjJ8d{pyNkpjZld6bGqGcIWbcUh:Jku{PkF2OkpjSGGw[1mERXeKR1GoTVOC[1mERXulcV[6UWNxL2h{TnykN1K3Zn6PcFmFNHeLTGqpZ3qGeGCtRo[kN2KUXmiHNWqZUkCMR3Sw[FiTe1:qPI[lN3R{UH2HfXSIcI[NcUWt[FN6d3GYUnyjcl6tUGePc2qYUoKLfYeoZn6Xd3KEe3eLTGqpZ3qCdF:4NFuKR1GoTVOC[1mERXeKR1GoJku{PkJxPjK[NnitXUK1V2qZUoejNkW7XmF:QTJ8d{pzPENzPjKFVX:oTVOC[1mERXeKR1GoTVGtdGqqRX:LTGqpZ3qCdFmJd16EbVGoTVOC[1mERXeKR1GoR2GsUlOqRXeKR1GoTVOC[1mERXeEVXus[H2HfV26NDuZN1qtXkCteWquPISRcV63XleW[2CURoCjcmJzXWe4c3N{WnmkN2K6T1OTNmmZTYiYflKlUFOCe1yERXulcV[6UVOsdF:4NFuKR1GoTVOC[1mERXeKR1GLR2etcVuERoCjcEmpZ36LbHWU[3ulcV[6UYlxL2h{TnybNHy2Xn15eGCuUo[bS2W{TVeHfXOuSkWMSFW4UFSKe1yFUYeNSGG4T2Os[1uURkeFVX:oTVOC[1mERXeKR1GoTVGsTlOSNFuKR1GoTVOC[1mERXeKR1GLR2GtdGqqRX:[NklyZn6Sc1qJXnikblWxTVR1PVmFUYCKTIOPR3mC[1mERXeKR1GoTVOC[1OSb1qEVUCMTVOC[1mERXeKR1GoTVOCTlOSb1qNfUioWVeHfXNzWXelS3itTVeTbHSIWV6EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mEVnu[XGKtTVRx[3N{VomZN1qtZ1e5bGlzWX:LfUSvUFOCcly6Z4OKTGK6ZWdxc1qJXnikbl[jUWZxdFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mEVkK[XFm7UGR2[nOuWn6UW{WuZolxL2qISkCbV1F6TVVybGpzWU[QcXitZliDcHOq[36[Nkm6XmOkdFyVOX2jN1q1XWiTSWmZVnyMR2KsXWiTcFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1y6PHeWS1[6Z{KW[3SIbHyKS{WpZmeWUlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTNmmZTYqNWEWnZ32XcmOYOX2jfUBsZn2HeGqURUmKTGK6ZWdxc1qJXnikbl[jUXxxdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOCely6RmG[XFq7XmODNHGIWXe[Nkm1Z1eHeXWSNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1qJXnikbl21VHx6fWqY[FqjcWq3UGR2bnJzNYe[W{V2TVRx[3GZUoqbXGGwTlibbHOrSnKONUCxTVR5[3SJToCjV3es[H2HfV2Xd4qZV3uoU3mCclq7d16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[3GYXXeMR2JzXWiKflyVOX[kcW[vV2d2cXK6NDu[NkmsXmOCPWCURYiOR3uo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoR2OTNmmZTYqNWEWnZ32XcmOYOX2jfUBsZmeXfnNzSn6bV1F6TVOTNmmZTYqNWEWnXImocmRxd36MWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKTECoXme5fmqURoCbbVGwTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkKTcFmFNEmKSFm4T2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeLTGqpZ3qOeGCvTniiXF6tWH16NHGYUnyMSFW4UVO4[1qJXnikbl21VHx6[luE[FqVb2qRXEGXVWJyTlKTSW[nWFWtSGKWOWSTWkmHW1[DTmWsWlWLfXuxU4dxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Go[mODcHKJUnyKS3yuTVOob3SuSomOfUBsXEOLcGpxcIWbcUi1VH2PemqIWXeRWECoUYqCdFmJd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Gs[H2HfV26NDukcV[xZ{KXU3J{VoC[NmWwUWSCe1yERXulcV[6UYlxL2hyPH:LNHyQVnt6[m[XRliWb1[GVmZ6U2RyVn[SWV6WV2[bSlq6b4CQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTNmmZTYqNWEWnZ32XcmOYOX2jfUBsXleHNGqURUmKR2JzXWiKflyVOX[ZfXevWH16NFmISnqlS3xzXWiTcGqERkWbXGGvT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVhx[2qYfIqbV1KxXnmCc1qJXnikbl21VHx6fWqY[FqjcWq3UGR2bnJzVnyKSEB6TVSSe1uURkeFVX:oTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERVqKR2JzXWiKflyVOYm[W3y7XmV2enSIcHqbV3e5UVSCd1mEVkK[XFm7UGR2[mi6[36TSUmPVWWtU1mGVmCTWl2oWHt6WVmGNVKXSV6KTomsdF:6RXeKR1GoTVOCUlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVhxUlOqRXeKR1GoTVOC[1mERXeEVXuLR2FxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERkmKS2[{Z{KW[3W4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GLTlibbHOrUYSRclqpZWiPcGSuPUCiW16tT1SGe12Ee3eLTGqpZ3qOeGCtPX[MR3SHWXyLVGWtPWOTWXSnVUCpSmFxeH[Tb1[LWFOkdFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERVqEVXuPR3mC[1mERXeKR1GoTVOC[1OScEmKS2[{Z{KW[3GYXX:KR2JzXWiKflyVOX[kcW[vV2d2cXK6NDu[NkmsXmOCPWCURUWOR1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeLTGqpZ3qOeGCvTniiXF6tWH16NHGYUnyMSFW4UVO4[1qJXnikbl21VHx6[luE[F[WcFqRWXx6SWRy[F:VSUmDVlZ6TmKHPV:VNWKnVnt6WmSsVX6MV3t4SGGw[1mERXeKR1GoTVOC[1mERXeKR1Go[mODcHKJUnyKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GLTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkKTcFmFNEmKR{C5U4dxT1mERXeKR1GoTVOC[1mERXeKR1GoTVGsb3SuSomOfUBsZ32HdHNzWl:jN2KxXUKWc12VRYeNR1Gs[H2HfV26NDuZNUiwTkCXV2WsPWOZNVqHVkF6SGOGWlSUNUmIVWWtUVq6b4CQe{CMTVOC[1mERXeKR1GoTVOCTlOZNF6EbVGoTVOC[1mERXeKR1GoR2GsUlOqRXeKR1GoTVOC[1mERXeEXECoXme5fmqURkeFVX:oTVOC[1mERXeKR1GoTVGsTlqJXnikbl21VH6LbHGZUnyVcUlxZWePcFuFSYeOR4eoTlibbHOrUYSRcEmnT1OlSmWtTmCWcEmUVmWl[mFxbF[SNISnVnuHTmSEZ4CMWIOPR3mC[1mERXeKR1GoTVOC[1OZNF6EbVGoTVOCTlOSQU1jP4N7NUZ7JmWIPYqlSlqtZ2iXcHN{VU1jP4N7OUN3OEpjSGGw[1mERXeKR1GoTVetcVuERoCkNUmpZ36LbHWU[3ulcV[6UlOs[1qqXXe[NklyZn6Sc1qJXnikbmGxTVR1[12ERYCKTIOPR3mC[1mERXeKR1GoTVOC[1mEPI[KS2q3Z31ybHSERYSNWESo[FeXfnSFSUm[V2pxXmiPNF2rNXmKS2ZxXYl1UlOqRXeKR1GoTVOC[1mERXeKR2JzXWiKe1mFNHe[XFq6XWisc1uVd16EbVGoTVOC[1mERXeKR1GoTVilc3GYfHyMR1K{ZWiPNFuEVoWNR1Gs[Hms[2CURny[W16wT1OTNmmZTUCMV1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOCb3SuSomOSoSlTVRx[1mqVoWRV2JzTXq{UlOqRXeKR1GoTVOC[1mERXeKTECoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV2ERUmKS3y1Z1e5emqIWX:LfWmvUFOCb3SuSomOR3t4SGGw[1mERXeKR1GoTVOC[1mERXu[Nkm2[FeXeXSHVkWkS2WoVGOCbWFzPYWlS2[2[FNyNHWZRnyQbVKpZ1iDd3GYUnilS3y3Znl6OFyZ[EOlfUGuZkOLeFyZWomjS2[2XUJ6b2qYVnOkcIi2TXq{UlOqRXeKR1GoTVOC[3[SNFuKR1GoTVOC[1mERnyjTF6tTVi{UlOqRXeKR1GoTVOC[1mERXeKR2JzXWiKe1mFNHeLTGqpZ3qSO1SSc3eKR1GoTVOC[1mERXeKR1GsXUJ6eXSIWoWlSmJ2Z1eW[2CURXmSNkm2[FeXeXSENUCmXFKtU3mDNGqZbECNN3i1Zl[5fWiIOHmQe{CMTVOC[1mERXeKR1J6SGGw[1mERXeKR1GoTVFxT1mERXeKR1GoTVODdGqq[3eiXF6nZn6Xd3KE[3ulcV[6UYms[1uURkeFVX:oTVOC[1mERXeKRXuLTlibbHOrUXeRV1KPXWelcF:rdH6bXGKV[Fd6fWqWUo[jcWqxXomobXRzWnmNN2[2Z{KXbnSZTnyNNlqpZ{KX[nSZToOKbYeoUVOsO1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV26RUmKTF5xZ3x6fWqZRoO[W16tT1OkenGYOXubXHe2Z1epe1xzSnujW3y2Tom4[1q6Z4OKR2JzXWiKfluVd16EbVGoTVOC[1mERXeKR1GoTVOTNmmZTYqKSECoZ{OTfWh{TnykS4ipXUKWc1q6PYCjcWKt[VN2e3GJRY[LfYeoTomkd1mEVkK[XFm7T2S{UlOqRXeKR1GoTVOC[3[SNFuKR1GoTVOCUlOqRXeKR1GoTVOC[1y6PHekS1[6Z{KW[3SIbHyKS3Sx[H2XeVmHWmOVRUCMTVOC[1mERXeKR1Gs[H2HfV2qRUmKTFKpZ36PcGh{WomjR3es[H2HfV2qb{eFVX:oTVOC[1mERXeKS3yuT1OCbHGZUoqbXGGwTlibbHOrTnKLN16rZVeXeGqU[HSMV1J5[lOCc1qJXnikblqjTkOPbnGIWoSbV3SlTVOGPVmE[H:lTGK4Toms[1uURkeKRUCMTVOC[1mERXeKR1GoTVOC[3OuWkClXFq2TVebbHKJUnyQe{CMTVOC[1mERXeKR1J6SGGw[1mERXeKRUCMTVOC[1mERXeKR1G3UImDcHWJVom[W15xTVepenN{VXe[W{WsTViDbHSI[{[FVX:oTVOC[1mERXeKR2KwZkOPNFmFNHeLTGqpZ3qLZlpzbI[kN2GvXGS{UlOqRXeKR1GoTVOC[1qJRnilS3eoVGODdHN{UnylR3es[H2HfV2td36kS1ZxZVOl[FuURT:KR2JzXWiKfWe6[Ie[XGKwTkFx[1:qRX6NfXN4SGGw[1mERXeKRUCMTVOC[1mERXeKR1G3UImDenOIWoWKS1WoZ{J6bnFzWkCKS163Zn12cGl{VoCjNkSoZkJ1[3OIPYmlR1F1UVFxT1mERXeKR1GoTVOCb2qZTomjcUioVGODeXSYfIOQe{CMTVOC[1mERXeKR1GsXmiLfXN{VomKSECoZn6Xd3KFd16EbVGoTVOC[1mERXeLS2q4TVRx[2GIXoqjNl6zZkODcHKq[3uiS{m7[FO4[1:FRYOKR2KtZ36LeXK6e3eLS2[6Z36PNHOqe3ePV3t4SGGw[1mERXeKR1GoTVetcVuERXubclGoVGRxPVmIXnijTF6tTVOs[3W4NFuKR1GoTVOC[1mERXeKR1GoZ32XNHSZToWKS2qpZliPcF:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKRUCMTVOC[1mERXeKR1KxXnmCc1mYcIqZNkVyZle4c1qJXnikbmmxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1Gs[H2HfV6qRUmKR1qXZ{KXfVyWSn6bW{VxU3mCbVyqVkK[XFlzUHmLZ3OtfIWKboOPR3mC[1mERXeKR1Go[mFxT1mERXeKR1GPR3mC[1mERXeKR1GoUIl5[3NzWoWbR1JxZVeW[3OuWoilW2[7[FFxT1mERXeKR1GoTVODdGqqRX:LTGqpZ3qW[2CVNHeLN1K3Z{OScluURkeFVX:oTVOC[1mERXeKR1GoTVODcXOJWkCkfXesXn6Cd1mETmGVNV6WTVOTe2mZVn:KSXiWWl[Cel2UOIiZTFqkZnmKdF:4NFuKR1GoTVOC[1mERXeKR1GoZWe[[1uESoCkNUm2[Ge5d1uEVkK[XFlzT2Os[3W4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mIXoelXGK7T1OTcXOEe3eLTGqpZ3q[dF:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqV1d6fnSFc3eLS3i3Z{OTZ3OtfIWKbXt4SGGw[1mERXeKR1GoTVOC[1mERn2kTGZxZ4mob2qvRYOKR1qUXmebcHOuWomQbVGs[H2HfV1yfImZS{SqT2S{UlOqRXeKR1GoTVOC[1mERXeKS2q4[GiTfluEVn2kR4eoTlePenKvVnyjcmKW[WiDcFuVd16EbVGoTVOC[1mERXeKR1GoTVebe3SZVoqMR2KuZ1O4[1msUo[jcmKtZn6SeHKIWoWbN2KwU3mCbVyqRoqlTFq{Xmd1c1qJXnikblGxTVN1bWiJTnOjbVmxU4dxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqVUJ6eXKuWnqlS3y3Znqw[2lzfI[kNm[kZ3y5eWiJTnOjbVmxU4dxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1Gs[H2HfV2Eb{eFVX:oTVOC[1mERXeKTECPR3mC[1mERXeKR1GoXme5fmqYcH2KR3es[H2HfV6URUmRV1GvXkKXNFq6b3eme{CMTVOC[1mERXeKR1GoTVOC[1qJSkGbXFp2TVRx[1q6Z{eFVX:oTVOC[1mERXeKR1GoTVODdGqqRX:iXF67XmiSc1qJXnikblqjTkOHNWqZTkWLNUCxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qJSkGbXFp2TVRx[1q7PH6NbWJzXWiKfWe6[IilW2[6[WOl[F:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqVkCXWVmJd3ukS1ZxZVhyO1qJSkGbXFp2[mODTW[HVmGNflW2UW[5fWiIOHmMWIOPR3mC[1mERXeKR1GoTVOC[1mIcH2KR3epZWiP[nKvWoOjR3es[H2HfV6qb4CKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1KuZ1iXNHO6[3ubclG{TVOTNmmZTUKMWIOPR3mC[1mERXeKR1GoTVOC[1mJNF6EbVGoTVOC[1mERXeKR1GoTVebe3SZVoqMR2KuZ1O4[1msbI[kN2F3TVOTc3J{UkCZTFqkZnmKdF:4NFuKR1GoTVOC[1mERXeKR1GoXn6DNXSJUX:LS2q4UFOCbWFzPYWjcW[r[FetenKrc3e[Noi3Z{KXZ3OtfIWZTFqkZnmKdF:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mCNFuKR1GoTVOC[1mERXukcW[7[Ge5NFmFNHeLfXN4TVFxT1mERXeKR1GoTVODN3GIcIObV3epXn2Xemqq[3ubclGxT2ODO1SSc3eKR1GoTVOC[1mERXeKR1G3UImDfWqYUnyiXGqtTViTc2qURombXF5yZliTflmIPX2KTGKwXmODfWqZSkGbXF5xSGGw[1mERXeKR1GoTVOC[1mERXukcW[7[Ge5NFmEOEmKS2qvXmiTfluEVn2kR4eoUWSKOFuVd16EbVGoTVOC[1mERXenVUCMTVOC[1mERV6EbVGoTVOC[1mERXeNfUioXUK5enNzWXelS3itTViPemlzeHylR1KrZkJ2eWqYUkCiW{m2U3dxT1mERXeKR1GoTVODcWlzfI[kNmWwTlebe1uVd16EbVGoTVOC[1SSc3eKR1GoTVOC[1mEPI[KTF64ZletNFmJVn:bV1K6XmiPNXKJVXeiS2[pXleXfVmIXomjNkCo[FepcFmIUo[jcmKtZn6SUlOqRXeKR1GoTVOC[1qJTnykN2[{[FOCPVmIWkSkS4i3XleWc1mtfImZS{WkZ3y5eVmqe3eLTFqtZ{OXd3SEe3eObXt4SGGw[1mERXeKRUCMTVOC[1mERXeKR1GsZVeXbGqIWomKSECoZWiPfmqZVX:LTFqtZ{OXd3SHd4eZV3uoVImCb3OuWoqlW4hxW4qD[FmFc3eLfXN4SGGw[1mERXeKR1GoTVOTbnJzOUCbW{VxTVRx[3GZUoqbXGGwTliLcHN{WoOlSoO5XGOs[2C6RXukcW[7[Ge5NGe7SnSKSH:oTomkO1SSc3eKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXulcV[6UWOCPVmIOXylfVK7[FeTSHKISoqkfXexU4dxT1mERXeKR1GoTVOCb3SuSomOV{BsZVeXbGqIWomKSECoTlepcGmYVnykboOPR3mC[1mERXeKR1GoTlibbHOrSYSRcV63Zn6TcHKvVXeRV1GsXUJ6eXSIWoWlSIOPR3mC[1mERXeKR1GoSGGw[1mERXeKR1GoTVN5elmGbHijcWK{XmODbnGJWoWiNm[sTViTfWmYOYqbcW[6TVetcVmIOXybW2KtXlFxT1mERXeKR1GoTVODdGqq[3ekN2K6Z1d6fluJUkCkcmK3Zld6N2qZTX:LTGqpZ3qGeGCubHy[W2KtZ3msd1mE[ECkcV[2Z{KbcHOqNXyjcV63XleteWq7c3e[NnhyZn21cGqEZ4CKR1V6VGODcWmYfIqbV1GxTVi{UlOqRXeKR1GoTVOC[1mERXeKR2K4XWiLfmqYVXeRV1GvToq{UlOqRXeKR1GoTVOC[1mERXeKR2K{XmebNFmFNHeLTGqpZ3qGeGCuUo[jcmKtZn6SO1SSc3eKR1GoTVOC[1mERXeKR1GPR3mC[1mERXeKR1GoTVOC[1mJ[H:iW4itT1ODNHOvWnyKR3uo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOTe3J{UXeRV1K7[FiLe3J{UX:LS4itXn6Sd1mETnOkcIi2TXmsO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[3GYXX:KR2K4ZkOO[2CVNEmKS2qpZliPcFmEb3eme{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVODfWqZVkGkcUSoTlibbHOrSUeFVX:oTVOC[1mERXeKR1GoTVOC[1mERXenVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKRUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR2KrZViXeXF{UoCmcWWoVGODfnSYToqlTFmwTle5cGqvVYOKSFG{TVOTe3J{UYCQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR2K4ZkOO[1u7NHekN2K6ZleXeVuETnOkcIi2TXmsO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qIfHybcmGoVGODfnSYToqlTFmwTle5cGqvVYOKR2K4ZkOOdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mEVoejN12oVGODfnSJToejN12wTlePc3SYOYKkNnx3XmO4[1q7d36MWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1KxXnmo[1qJRo[kfVGpVGRx[2quSoOkNmWoT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR2KrZViXeXF{UoCmcWWoVGODfnSYToqlTFmwTlePc3SYOYKkNnx3XmO4[12Ee3eLTFK3Z4msO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[3[SNFuKR1GoTVOC[1mERXeKR1GoTVOC[1mEVnqiTG[2ZUOPdHWuWXeRV1KwXmipb2qYUX:LS16w[Gd2dnNzcE[bV3t4SGGw[1mERXeKR1GoTVOC[1mERXeKR1GoSGGw[1mERXeKR1GoTVOC[1mERXeKR1GoZWe[c1mEVnqiTG[2ZUOPdHWuWXeRWECoUVOCdFmJd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoXX6LcGmYd{eFVX:oTVOC[1mERXeKR1GoTVOC[1mERXenVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKRUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR2K4XWiLfmqYVXeNbkCoZ{OXbXN{VomMR2K{XmebNFyERYeNR1GsXUKpNXKueIqiXICtT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOCb3KIWn2lR1F6TViPNWmvUkCkbXesZleXcXSEe3eLS16w[Gd2dnNzcE[bV1GzTViPNHOufHyjbXeqXFiLZ3KqTYCMWIOPR3mC[1mERXeKR1GoTVOC[1mJNF6EbVGoTVOC[1mERXeKR1GoTVFxT1mERXeKR1GoTVOC[1mERXeLTGqpZ3qGeGCuUo[jcmKtZn6S[2CURXukS1[6Z{KXb1:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKRU1:Jku{PkF3PjKkN3y2XUKpfXJzOYCmcWV:Jku{Pkh2O{J7JlSSc3eKR1GoR2FxT1SSc3eKR1GoR2N5dVmGTkGiW4isZWd2clmJSkGbXFqxXmiO[2quPYmKTF52Zn2Pc3OuPYWiXICp[FetenKqRnq[XGKtXkJ6fXWURkKiW2Z{TVeHeWqERoekcUms[GePNHO6RnubXGKpZWe4[1uqPF6E[{CMR2GseluqRn6bXGJxZWd2clmIcHukfVK3XnmDe3OuWkKiW2Z{TVePbHSIWn6jN1qxXmiO[1uqPF6EbVGoR2Gsb3OJTnylcXyt[EOO[2CURXulcV[6UVNxL2pzWkCWTFqt[H2tcHRxUnilS2[vZkOLdGqZUX:MWIOPR3mC[1OSb3ukTFqt[H2tcHR{UXeRV1GwTliDfWqZXoCbXHS7VGRxclq6b3eRfVGvUGSGclmFc3eLTFK6XmibdGqZ[IqQe{CMTVOC[1mCNFuEVXu3T3mDcmqZVkCiW{WvTVetb3O6Ro[bbVK4Z316b3SYUkCKS16p[FeXcnJ{ToCbXF2oT3l5TlSSc3eKR1GoR2OTe3OuPXulW15xZ4mCPVmEVkK[XFm4UGR2cmqZVmGkcUms[GePNGFzSkCbW3S3Z32tcHO6[4CQe{CMTVOCTlOUVoekcUms[GePNHO6RUmKR3esZ1iLemqJWnqlTF16VGOkcluURT:KR3O1UWOk[1:qRXukTFq3XliXbnSJUUeFVX:oTVGsTlSSc3eKRXuLUImw[2mvWoCjS2GoZWd2fmqZTkCKTFZyXmiLOVmIXomjNkCoXUJ6fWqXPUGkcYinZ32XN3OucECbV1GyUIesUlOqRXeKR1GLTliHNWqZTkWUW{W7XmiLNGWuWkOkcXxxXmOCPVmETV6EbVGoTVOCTlOSNFuKR1GoTVGtTmStUl[WcGGoV2WlU2RyTl[KSXyQWlV5[2mETYWLTGqpZ3qSeVmuNUClXFqqZkKC[1uIRkGkcYinZ32XN3OucECbWkmxXleCd1mIRoqlS{m6XmZ6dGqIRYOKS1KrXWiTcGpzPYmmWkmxXleCd1mIRoekcUms[GePNGhzcHu[R4eoXViLcHOZWnykN2KnZ1eHNHGIRYCFVX:LR2GtWGKWfF[SNWGoXViXfXKHPYmbXHS6ZWiTcGhzcHu[R4eoXViPNHJ{TnyZNnysXVO4[2mIUnilS2[vZkOLOWhzcHu[R4eoXViDfXJzVkG[N2KnZWeT[1yERnekcW[5[GeXfnSHPYe[XGKwXVFxT1OSb1qTcFqRWGOD[1mqOHulcV[6UlN1bWlzPYmbWklyZ325[nOuWkOkcXxxXmeCUlOob1qEWnSKVm[LSlmCNFuEVXuLT1FxT1OSb1qEV3ioXUKHNGqY[I[kcnynZWeT[1mGcF:KR3eqTVN1[1qJRombXGqxXmilflmERYWKR1mxTVWHU2KERnekTFq3XliXbnSHPYCbS1GoV2[O[2StWl2VR3uoWEGK[1SSc1qEVXuLT1eDbmmZVnybNkm6[WZ6dGqIRXeUWUSoT1OK[1yqRXukTFq3XliXbnSJUXeKR{SoTXms[2GWOVWKS1K4Z316b3SYUkCZNnysXVODTmW6Rl:VNWGoWHyXUWSEb3eVNVmPR3esTlOSb3:[S16p[FeXcnJ{TkWZNnysXVODTmW6Rl:XWYiOTVWHU2KERnekTFq3XliXbnSHPYCbS1GoV2V1[1SSc1qEVXuLR2OpWGKWfF[SNWGoXViDfXJzVkG[N2KnZWeT[1mGXmOVNECoXVOKeVqJXnikbmG2TX2PenOuWn[lXFq{XEOLcHR{ToClS2[oSGGwTlOSb1qEVXyZV1WXV2KURne[NlZxXmelenOvcH[iW2KoTVWtU1mE[3mKR{SoTliDfXJzVkG[N2K7TVN1[1mqb4CMVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1uUTYWFVX:oTVGsTlOSb3:MR2JzXWiKfFmESUmKR3OvT2OCM1mETlKVb2GoT1eDfnSIPYmbWkmxXleC[2SsPWWKSXyQTVOobVmEOHeLTGqpZ3qG[1yqRXmMV3uqTVSw[1mqTYCNbVmPR3mC[1OSb1qSWUWGTVFxT1OSb1qEV3i3Z1iTdHJzOYqKSYiLV{CW[1q6Z3eVNVmoZkODNHGYPYWkfVKLWYmDU2[WfF2MWIOqU4dxT1mERXeKRXuPR3esTly6c3e[cm[xZleS[2qIWoObXGKtTViHNWqZTkWKS2q3Z3mDfWqYUo[kcWK7TVebfXJzNHe[Nkm6XmZ6NXOufImbXHS6ZWiTcFmEc4[FVX:oTVOC[1OUVoilW2[6[WWTcHKIWkCbWlqt[EOLdHSIWXeRV1GqSGGw[1mERXeEVUCMTVOC[1mCb1qTSW[OVm[TSlmGXmOVNECoXVOKeVqJXnikbmG2TX1yNHSZTnmjNlGPR3mC[1mERVqKR1GoR2[lTWKXTl[KR1GPR3esTlOU[3eFVX:LR2GsTluIRnq[XGKtXkJ6fXWXPYCbS1GoWHt6WVmGcF:KR3eqUHmCb3OJTnylcXyt[EOO[1mEOHeKbXuoVWV2SVmIRoekcUms[GePNGhzcHu[R1KLWYmDU2[WfF2MV1KRWXdxT1mERXeKRXuoTVOC[1OUbHe[NlZxXmelenOvcH[iW2KoTVV2VG[ERlqVbVGwTXl1[1qJRomjNmJyXUOTflmEOHeKbXuoVWV2SVmIRoekcUms[GePNGhzcHu[R1KLWYmDU2RyVXeVcG[OWFOs[2RyTV6E[3uLR2Gsc2mIUnilS2[vZkOLOWhzcHu[R1KLWYmDU2[WfF2KSV[QVlOD[3OJTo[bTG[r[FZ6dGqIRXeUWUSoSGGwTlOSb1qEV3iVVmW5SmFyVXe[TFK6ZkKTNWl{Vn[iW2KoTVWbV2RxNHe[R1m2TlibbHOrVYWKcV63Z32X[nSZToOZN1qt[EOLdHSIWneFVX:LR2GsTlOScGiUSW[UVmOD[2lzSkCbW3S3Z36t[nGYVneKSUWRWlODTmSqRX:KbVG2TVOTe3OuPXulW15xZ4mCeVmETYCMV3uPR3esTlOSb1qMWIOqU4dxT1SSc3eKR1GoR2N5dVmITkGiW4isTVeTcHKIWkCbV1K5[GeXfXWURn2jN1moZ32Xb3GZTny[N2JyTViXfXKJUXeMbUiPR3mC[1mERVqLTFZyXmiLOWKIWoObXGKtWX2Xb3GZTny[N2GoVGOCUlOqRXeKR1GLR2OLSWKWfF[XSWWoVnyLVGSURneKbUSs[H2HfV6EOHmjXGJyZ32LemmERmiUSW[UVmOD[3OuWoilW2[7[FZ6e2mZVn:[R1KLWHmCc1SSc1qEV1GoTVOCTmVxWl2TWV6WTVeDfWqZSkGbXF5xXEODbHSIbHeKSWqUWEBx[2mETYWLTGqpZ3qSeVmuUo[kcW[n[GiLd2h{TnylN1qx[FeX[1mH[FmTWlqHTVeDenOJVoCjNkW7XVOCPGCqRX6Le{CMR2GsTluVd3mQe{CMTVOC[1mCb16EbVGoTVOCTly6c3e[cm[xZleS[3SZRnu[XGKtTViHNWqZToCbXF2oXn16fVmJVkWkS2WoT3l5UlOob1qLTFZyXmiLOW[ZRnu[XGKtVUKHNGqY[I[kcnuoVGOCbW[XRlWSWmKHTVeCbVyqVkK[XFlxUHmLeHSJWom[cUmoTV[PSm[ERnelTHy4XmeCPVpzUnilS2[vZkOLOVq6RmiUSW[UVmOD[2lzSkCbW3S3Z36t[nGYVneKSXyVTVV2VG[ERl:XWYiOTVWHU2KERnekTFq3XliXbnSHPYCbS1GoV2[O[2StWl2VR1l4TVFxT1OSb3ukXG[tZ36tWnOIVnilS2[SZ316b3SYUkCKR1F6TVOLWmWGVlKXSWWoXVOKeVqJXnikbmG2TX1yNHSZTnmjNlGoWUCXWVmIRkCmXFKtXVRxcnOJTo[bTG[r[FOk[2ZxbF[Wb2WoXViDfXJzVkG[N2KnZWeT[1mGcGSKSUWRWlODU2[WfF2KboOoSGGwTlOSNFuEVXu3T3mDR3SYcIObS3y2XomDfHSYWomiW2[7TVebenOqRoqmW{WrZViLenKucE[[XGKxZkJ1[2lzNYqKTFKpXkKXflmEc4[FVX:PR3mC[1OSb4[MbVKvXmiS[2lzPYOjS2[r[FetenKqRnqjXF2oZ1eHcmqZUXebclq3ZmODUmmY[HyjcmK3TVWPenOuWXeMbUiPR3mC[1mERVqLS161Z{GDbGpzWoqUXGKtZmiO[2CURl6[W3StU3qxcmqZVl6jNmKtZlOocmlzNYqNN1KpXkKWcluUNDubNmZxVUJ6d3KIWnqlS3y3ZnmodFyVOYOjNl[sT1OseGCu[HylSXxxXmdyfluEb{eFVX:oTVGsTlSSc1qEV{iyTVelcHSERoCbTF2oZkK[[3NzWoObW15xXmeS[2lzNYqKTFKpXkKXflmJ[IClS3eoZ{OTenOuWXe[NkmsXmiO[2qvTo[jV1KPWliXfWmuPHe[Nkm2Xn2tclmEc4[FVX:LR2OTbnKZUXeRV1Gs[H2HfV2ENDubNmZxVUJyfmWISn6bXF2wT2S{UlOob1qLS161Z4mCPVmETX6KbUW7[FiL[nOuWoejS1[rXmOobVyETYOKR1mvUFOkbVyERXu[NkG7T2N1bVq6TUeFVX:LR2OTbnKZUXeRV1GwTlePeHO7NEmLfXOxTVR5[1q6NIiLfVF3TVOTbnKZUUeFVX:LR2N5dVmJVom[W{W7Xn16fXKURkCjfVKpZ36LbHWURn2jN1q1TVOwelSSc1qEV2KrZmiPRnOvTXeRV1Kt[ViDd3JzVnyMR1m{TXm4[3N{VomZN1qtZ1e5bGlzWX:KbXOqUFOCbVmqe3eLS161Z4msdF:4NFuEVXuPR3esTly6c3ebNmZxTViDbGpzWoCbSkm7[Fd6fWqXPYCbR1KpZliLcGmYVkWKTF52Zn2Pc3OuPYWiXICtXlODbnKZUXekS1[vXmiO[1uJRombXGqtZn6S[2qJWoejS3yrZWiTcHO6b3eMbUiPR3esTlqIUoSkNHy2VlWK[2CURnikclqp[WOodF:4NFuEVXyuZkOLcGmYUn:KR3es[H2HfV6URnikfVGsXUJyfmOYOICKTIOPR3esTlOUVnqjXF6LZnuTR2dyNHeRV1GsXUJyfmOYOISRcXSt[F[DbGpzWlqbR3exUHml[lq6OHu[NkG7V2d1eGCu[HylSl5xZkOLcGOYVX:MWIOPR3esTn[SNFuKR1GoTVFxT1OSb4[MbVKq[Getd2qERoCjcl6tZ36S[3OZWnykcnuoXUJyflmEc4[FVX:LR2OTNmmYfIqKSECoXWiLfWmZb3:MWIOPR3esTmquPYmbW1[rZVOCc1qIUoSkNF[6Z3mDbHO6RXu[NkG7XEKPemqIWYCKTIOPR3esTlOUPIGKS3yuTVePeHO6RnijTFqtXWeTOVmIWkSiXF5xTVeteVmINUClXFqqZomDNGmYToObV1JxZVeXeVmIdEGjXFGoZWiS[1uqPF6E[3uLR2etcVmE[3iiW{WnXWiLfWmZb3:LS161Z{F6bnJzVnyNR1GsXUJyfmOYOVWSbXuxTVi{UlOob1qEVXusXleHNGmURUmKS2Z1Z1e5emqIWX:KcEiqUFOCb2lzNYqZNl63XleWdF:4NFuEVXuLR2etcVmE[3:[NklyZn6Sc1qIVnilS1WxVGRxfVuURX2LbVKxZ{OPcHSE[3u[NkG7WVeHcmqZUlqlS2[1Z{G{b2qISkC[WoO4XGZxdFuURkeFVX:LR2GsTlOUVnikclmoTVRx[2mZTom[XHuwTleTbHSISnKOWkC{TVOKclmqOHu[NkG7WVeHcmqZUlqlS2[1Z{G{b2qISkC[WoO4XGZxeGCu[HylSXysXmd2NHGYXoCbXFmwT2N1bVq6TYOKR2KsXWiTbGe7RnSNR1GqTkKPeHO6Z3mMWIOPR3esTlOSb1qLTGqpZliPZmiURUmKR1mwTXl2dHKZRoOjNmKtT1OKd1mqe3eLS1[6Z3mseVmqb3mQe{CMR2GsTlOZNF6E[3uLR2hxUlOob1qnVUCMR2Gsb3OZWnykcnyLZn6PcHOvVlSVWl2oVGOCclq7d16E[3uLZWe[[1uIUo[lW{VxT1OTNmmYfIqMWES4T2FxT1OSb1qLTFZyXmiLOWOYOYqbXFpxVUByWFmFNHeKb3yQWUCXV2[ERlqVcGKRTVeCbVyqVkK[XFlxUHmLeHSJWom[cUmoTVOp[3N{Vo[kcW[nZWeT[1yERnekcW[5[GeXfnSHPYe[XGKwXVO4[2mJRnibNm[nZWeT[1yERnelTHy4XmeCdFmHXlKVSm[HWYmCbVyoNFuEVXuLR2eteHOIfI[bS2WwTXm4bVyERXulcV[{Z4ms[1yqRXmQfVl4SGGwTlOSNFuEVXuPR3esTly6c3e[cm[xZleS[2qIWoObXGKtTViHNWqZTkWKS161Z4mCdVy4NFuEVXusZ2iXcHOvcFWbW4it[FeXSGSXUXeRV1GqSGGwTlOSNFuEVXuLVlWXUWKXVl[KSWqUWEBx[2mETYWLTGqpZ3qSeVmuNUClXFqqZkKC[2ZxbF[Wb2WoT1FxT1OSb1qEWV6RWHuPRm[EbHekS1[vXmZ6dGqIRYOKR3SnTom4[2mJUkCjN1qtXEKtb2mEb3eVb{mWTVWtU1mE[3mKR{SoTlePeHO6RYWKR1mxT2S{bV:4NFuEVXuLR2FxT1OSb1qEVUCMR2GseluqRoilW2[6[WODcXJ{TXekcWZ{Z32tNGqURoCjbVKxZn2HbnSIcEKbV1K7[Fd6fWqZUXeMbUiPR3esTlqJSkGbXFp2VleXd2qZVnyUW{WDXUOTdHSuWmSlS{m6XmiO[1mFNHeK[{CMR2GsUlOob1qEWWKHWFWXWWKURleWb{mPTVeCbVyqVkK[XFlxUHmLeHSJWom[cUmoTV[lTWKXTl[KS1K7[Fd6fWqXPYCbS1GoV2V1[1uETXeNbVGs[H2HfV2URYWKR1mxU4dxT1OSb1qFVX:LR2OKO1SSc1qEVUCMR2GseluqRoilW2[6[WODcXJ{TXebS2[{XmiTcFmIcIW[W15xZWibcFmISoWbR1K2ZolyNnGZUoC[cYitTViDfXJzVkG[N2K7TVeHeWqERnq[XGKtXkJ6fXGYWoqKS1[2XlODbnKZUXeMbUiPR3esTlSSc1qEV{iyTVWDNmmZTXeLTFK6ZkKTNWl{Vl[jcmKx[Fis[2SYSn6bWkmHXWib[mSYPXubW4inVmd2NHGZVkWKR3:3SGGwTlOUVoekcUms[GePNGKYOUCiXGJ2TVRx[2SYSn6bWH93XkKXNGSYPXubW4ewTkKXbHSqPXyjcmKx[FiscluVd16E[3uLTliDfXJzVkG[N2KHZn6TdHSJb4SRcl6t[F[TOXOIWX:LNl6p[FeHd3Jz[H[kTFq3XliXbnSEZ4CQe{CMR2Gs[1SSc1qEV2K4Z316b3SYUkCWN2Kp[FiXflmFNHeLTFK6ZkKTNWl{Vl[jcmKx[FiseGCu[HylSVZx[FiLdGmvWkCbV3evZ{OTbHSJWoqLfXt4SGGwTlOUVoqlS1ZxV2eS[1mERUmKR2K4Z316b3SYUkCWN2Kp[FiXflyVOX6bXGKLXlOodF:4NFuEVXuPR3esTlmCNFuEVXusZ1iLemqJWnqlSmqxZ{KtbXGYfIClTHuoVGOCb3OJTo[bTG[r[FWXeXSIcECmV{BsXkKXNGGZVkCkcXyq[GiTcFuE[EKiXF6xXX2td3GZVkWLfXt4SGGwTlOUVkKiXF6LXlOC[1mFNHeLTFK6ZkKTNWl{VmeiXF6xXX2td3GZVkWNWEWvXmiTTmqE[4CQe{CMR2GsUlOob1qKRUCMR2GseluqRlGlcV[6TVOTe3OuPXulW15xVmd2NHGZVkWKSUGpXkKX[mKYSkKZNEG3XleXd2hxWoWlS3xx[WOCdVy4NFuEVXusXUKHNGqY[I[kcnyHZn6TdHSJb3eRV1KPXWelcF:rdH6bXGKPZkKTcHKE[36bW1ZzUEKXeXSIcECmV3OxU4dxT1OSb3u[NlZxXmelenOvcF[jcmKx[FiseGCvUnylSmJ2Z1eWc1pzUnilS1[{ZkKl[mlzSkCbW3S3Z36scluVd16E[3uLTVFxT1OSb3u[NlZxXmelenOvcGSlS1Zx[GiO[2CURXu[NlZxXmelenOvcF[jcmKx[FiseGCu[HylSVZx[FiLdGmvWkCbV3evZWiP[mmYUkCiXGqtTomsO1SSc1qEV2KrXWiTWHSISkCUW2GoTVOCPVmEVnq[XGKtXkJ6fXWXUkC[XGJyZ4lxL2pzWkCUW2GwT2S{UlOob1qFVX:LR2OTfHSYWommWWKtZleXNGqXRomjNmJyXUOTflmFNHeK[{CMR2Gs[1mERXeKR1GoTVGsTmKGWl2TWmKHTVWbV2RxNHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeXNHiHWXuW[2mJRomjNmJyXUOT[nGYVneKSXyQTVOoUlOob1qKR1GoTVOC[1mERVqEVXyVVmW5SmFyVXebW{VxZWiTOWhzcHuKSWqUWEBx[2mETYWLTGqpZ3qSeVmuUnilS1[{ZkKl[nOJTo[bTG[r[FZ6cHKvVoClTHynZWd2NGmCNFuEVXuoTVOC[1mERXeKRXuLR2[lTWKXTl[FVX:LR2OC[1mERXeKR1GoR2GsTlmERX:MS1Zx[FiLdGmvWkCbWkmxXlRxbVyqVoqlS1ZxV2eSeVmqRlKVb2Go[H2Hd3SYWXeRV1G6T2ODVGWoNFuEVXuoTVOC[1mERXeKRXuLR2OC[1uISkClTFqxXX6XNGqXPYCbSECqUHmTNnGZUlqbR{SqTVWHU2KERkK[W4hyXmOCPGCURYiMV3uPR3esTlmERXeKR1GoTVOCTlOUb{eKRUCMR2Gs[1mERXeKR1GoTVGsbV:4NFuEVXuoSGGwTlOUVoilW2[6[WWTcHKIWkCbWV6p[FeXcnJ{ToCbXF2oVGOCbVSSc1qEV1GoTVOC[1mERXeEVXyGVmW5Sm[GWXeTcFqRWGOD[1mqOHulcV[6UlN1bXKZVkGkcVq3XVODXGOGWmOTV1KoXUKHNGqY[I[kcnynZWeT[1mGcF:KR3ePR3esTlmERXeKR1GoTVOCTlOScGSTWYiHVUGS[2qYOUCiXGJ2XEKtb1mGXmOVNECoXVOKeVqJXnikbmG2TX2PbHSISoOjNnSnXUKHNGqY[I[kcnynXmd2NHGZVkWZNny2[FeCUlOob1qKR1GoTVOC[1mERVqEVXyZV1WXV2KSNFuEVXuoTVOC[1mERXeKRXuLR2OC[1uISkClTFqxXX6XNGqXPYCbSECqUHmTbmmZVmSlS1ZxV2eSeVmqRlKVb2Go[H2Hd3SYWXeRV1G4T2FxT1OSb3eKR1GoTVOC[1mCb1qMWIOoSGGwTlOURXeKR1GoTVOC[1OUTUeFVX:LR2OCUlOob1qLTFZyXmiLOWKIWoObXGKtVUJyflmFNHeK[{CMR2Gs[1mERXeKR1GoTVGsTmKGWl2TWmKHTVWbV2RxNHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeXNHiHWXuW[2mJRnibNm[nZWeT[1mGcF:KR3ePR3esTlmERXeKR1GoTVOCTlOScGSTWYiHVUGS[3OISn6bWkmxXlODS2WsPV6KS1GqUHmTNmmZTUCNbVqrZmiP[nOISn6bW1GPR3esTlmERXeKR1GoTVOCTlOScGiUSW[UVmOCc3GZUn[[W15xZWibcGCVRYCFVX:LR2OC[1mERXeKR1GoR2GsdF:4NFuEVXuoTVOC[1mERXeKRXuqU4dxT1OSb3eFVX:LR2N5dVmIWoWbR1K5[GeXfXWURYGNe{CMR2GsUlOqRXeKR1GLTlePenKuOXy[N2KxZkJ1[2CURl6[W3StU3qxcmqZVmSiW{WvZleXNHJzOH:LNl63Z32WenOuWoqjN2[6XUKWcluUNDubNmZxVUJ6eXKuWnqlS3y3ZnmocmlzPYmbWkl{Z32tNGqUZ4CQe{CMTVOC[1mCb16EbVGoTVOCTnSJTkWKTIOPR3mC[1mERVqEVUCMTVOC[1mCb1qLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR1qVWlWHV2[ERmWWb1[QWUCHSG[GcGCVbVmxU4dxT1SSc3eKR1GoR2Gsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2V2d2fmqZTkCWcWZ{Z32tNGqUb{eKR1GPR3esTlOYcH2KR3esZ2iXcHOvcFqjcl6tZ36TSGSXUXiRV1mqT2OCb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2V2d2fmqZTkCSNEGVT2S{[1mERXeKR1GoR2GsUlOoNFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWWKtZleXNGqXTnylN1qx[FeWdF:4NFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWWKtZleXNGqXTnybS3y6XmePNFuVd16E[3uLR2OTbnJzOYWbW15xZWd6eVyVOYilW2[6[WOob3OZWnykcnyGXme5cHSIWlSVWl2xU4dxT1OSb1qLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR2K5[GeXfXWWVnyjS2ZxXmWteWGYUkCiXGqtWUOTenOuWoqMWIOPR3dxT1OSb1qLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR2K5[GeXfXWXWoebS1ZxXmWPbHSIWn6jN1p2T2S{[1mERXeFVX:LR2Gsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2WmiDb2mZVnyWTFq3XliXbnSEb{eKRUCMR2GsTlSSc1qEVXusXUJ6eXKuWnqlS3y3ZnlxL3OZWnykcnuwTliHNWqZTkWTS2[{XmiTcGWJTo[bTG[r[FiOdF:4NFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWWKtZleXNGqWUnilS2[vZkOLdGqZUYCQe{CMR2GsTlqIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[WWTcHKIWkCbWV61Z4msO1SSc16EbVGoTVOCTn[URnq[XGKrZVOCc2KZbHqbXFJxZWd6eVmEVnyMV1J4SGGw[1mERXeEVXusXUJ6eXKuWnqlS3y3ZnlxL3OZWnykcnuwTXyLVGSGfFOSWV6NTXmsO1SSc3eKR1GoR2GtNHGJTo[lfVGsXmS{UlOqRXeKR1GL[mFxT1mERXeKRXuPR3mC[1mERVqLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR1qFWEByUmOXVXmMWIOPR3mC[1mERVqFVX:oTVOC[1OSQU1jP4N7NkR7JmmZWkCjNkGp[FetbmKIPUOjcYi3XWeSfTJ8d{pzN{J1PjKEbVGoTVOCTnGYXXeMSUGpXkKWOl:ubHyjTFKtZ3mocnKZVkGkcVq3UEKteWquPH6MV{BsXkKXNGWuWn6VcV[1XmOodGCVNH6iN1pxZle1bHF{TUCLfXuo[Yew[1mERXeEVXuMTVOC[1mCb1qLS163Zn2bdGq6RUmKSUGpXkKWOl:u[HylSl6xZn2ld2qZVo[jbXevZmiTNXOuTo[NNl63Zn2bdGq6Z4CQe3:oTVOC[1OScICbbVGwTlePenKuXoCbfUBsXkKXNGGZWkCjNkGp[FetbmKIPUOjcYi3XWeSc1uUb3eme3:oTVOC[1OSb1uKR1GoTVGsTlOZVommV1J4R3mC[1mCb1qEVX:oTVOC[1OSb1qEV2Jx[GiLbXJ{RnilS3eoVGOCb2lzPYWbcXyvUGR2cmqZVmWlXFqqZkODbHSI[3:MWIOMTVOC[1mCb1qEVXusZmd6b2qYe3eRV1KPXWelcF:rdH6bXGKPZkKTcHKE[36jXGJyZ32LelxzNUClXFqqZomkdF:4c1qEVXuLR2GsTlOSb1qKR1GoTVGsTlOSc1qEVXuLR2N5elmI[HyjcW[6XWiTcFmIfICkN2GoXn16fVmISoOjR1J{XmeLfnGZVnyke3:oTVOC[1OSb1qEV2K1ZkKTcHKENDubNm[2XmiLbHSIWm[kcYiOZWiPNFuEb{eEbVGoTVOCTlOSb1qEbVGoTVOCTlOSb1qLTHStXX6PdHSIWoqKSECoWGeHcmqVc{[bNmZxWGd6b2qYe3:LNl63Z32WenRzWnmkNnxxXmOkdFyVOX6bXGKFZkK5d2qYUkCiW{m2T1OseGCufI[[W2GwT2NxL2pzWkCUXGKtZmiOc1uVd1uKR1GoTVGsTlOScH2jN1qtXWePc1mE[3ulNm[qZ{KtNGqZUXe[XF2oTlilcGmvUoClS2WxTVi{T1mERXeKRXuLR2GsTlOqRXeKR1GLR2GsTlOUVkObW1q7ZWiTcGFzPYWbcXyvTVRx[1qIUo[jcWqxXolxL2pzWkCXNm[qZ{KtNGqWUo[jcWqxXomob3RzWnmkNnxxXmNxL2pzWkCSNkmsXmOodFuVd1uKR1GoTVGsTlOSb1qiW2moT1OTN2qYToqiXGKtVUJ6eWqucH6KR2muTVOTN2qYToqiXGKtVUJ6eWqucH6NWEWvXmiTSnKuSnmjS2[sT1OsPWCUZ4iLfXuo[YewTlOSb1qEVXuLTlePenKuXoCbe3uLTVRx[1qIUo[jcWqxXolxL2pzWkCUW{VxXmiLe3OuWkCMR3t4R3esTlOSb1qEVXusZ{OXbWmuSoqbV1GoTVGs[2CURl6[W3StU3qxc2qYfIebXFmwTkJyNHSZTnmjfUl{XmeLfnGZVnyLfXu1VH2lcHSHUkG[cVqpZ{KWc1qJ[Hy[cl6x[FeWeGCu[HylSWKtXn2HNXKJVmSlS{m6XmibdGqZZ3:MV3t4R2Gw[1mERXeEVXuLR2GsTlqJ[Hy[cl6x[FeXe2mZVn:KSECoTlilcGmvUoClS2[FZkJ2cXGYZ4SRcXSt[FWLbHNzWlWiXFmwT2N2SWW6OHulTG[6XX16e2mZVn:Nb2KVUHmTfnSYTnm[XF6tUHuTWFyqVkObW1q7ZWiTcFyVOX6bXGKFZkKTcFuEb4WLfUVx[ViScl:4c3eKR1GoR2GsTlOSb1qLS{GxZn6PdHWuWVqKSECoTlePenKuXoCbfUBsXkKXNGSYcIWiW{GpZl[DbGpzWmSiXICtT1OsO1Oob1qEVXuLR2Gsb3NzUomiXFJxTVGs[2CURl6[W3StU3qxc2qYfIebXFmwTkJyNHSZTnmjfXOxUGR2cmqZVlelW4i{Vld6N3KufI[[W2KVXUOLdHOJVmG[XGKwT1OsO1Ooc1qEVXuLR2GsTnGYXXeMR1[xZ{F6cHWIWnqlXGKpXX25cFuEVoq[N1qxZ1iSdFuSc1qEVXuLR2GsTlOYUn:jW{msT1OTfml{ToCkTGG{TVOke167Z{GLfXt4R3ew[1mERXeEVXuLR2GsTlqIUo[jW{GpZn2S[1OURUmKR2K7XUOLdHOJVYWLfVGvUHmTN2qYToqiXGKtZ1eHNHGEOH6KR3O2TldydHKvUoCmcWW2TomCfWCqXYiKR2mvU4mCely6RnikN3y2XUKpfXJzOY[lXF2oXUKHd3KIcIWbe3:MR2GsTlOSb1qEW3yuTVOob3GYOUCbXFq4Z32XNFuSc1qEVXuLR2GsTlmERXu[Nkm1ZmeHeWqERUmKR2KxZn6TcHOvRombXGG2TomCclyqVnqjNkG1XWd2b1:4c1uEVXuLR2GsTlOWRnymS2[rT1OTbnJzNYS[W{WsT2S{T1Oob1qEVXuLR2Gsely6Roq[XGqtTVeTenRzOYOjNl[sTViTdHKYWXelS{ioXUJ6eWqucH6E[3uLR2GsTlOSb3ubS1ZxXmOC[1mFNHebS1ZxXmOocmeUNYSNW2GoV1SxdF:vUX6MWIOMR2GsTlOSb1qEV2KrZkJ2cXGYZ4SRcl6t[FW5bHN{VmWiW{GtWEKbRnSZVo[jW1ZxZWePSXJ{[IWjS{mpXlOob2qISkCbV3t4R3esTlOSb1qEVXusXUJ6eWqucH6NWEW7XWibcFuEb{eE[3:oTVOC[1OSb1qEVXx6R3mC[1mERVqEVXuLR2Gw[1mERXeEVXuLR2hxT1OSb1qEVXuMTVOC[1mCb1qEXECoXUKHNGlz[3eMSWZ1XUKXe3SIcI[jbVGsXmOs[3W4c3eKR1GoR2GsTlOWNXibNmV3U325emq6[3ubV{BsXkKXNGSYWoqkNl[vXmOodFuVd1uKR1GoTVGsTlOScF6[W3StU3qxd3Jz[F[mS16tZ1iTdHJzOH:LS2WxU4ew[1mERXeEVXuL[mGwTlOSb1uKR1GoTVGsTn[Sc3eKR1GoR2GsT1mERXeKRXx6TVeXd3NzWXeme3:oTVOC[1OScF6[W3StU3qxd3JzZ3:LNEW3TVibbHKIcHuKS4ixXUKXeWlzWYWKSUW3[FepdHKuZ3ekS1[vXmODN3GYfIOKS1qtTVeTenRzOYOjNl[sXmeSeVq6b{eEbVGoTVOCTn[Sc3eKR1GoR2F:QTJ8gR>>
1
+ ZUp6Pou{PkJxPjKZNl6wXmePdmSIcHqbW{WrXmF:QTJ8d{p2OER7JlSSc1qEVXyxXnmCc1mWNXibNmV3U32pcHKJRnykbXevZmiTNXOuTo[NNny2Xn15cluUNDubNmZxWX2XcmSuSoSbV3exVGRxcnF{TkCjS4SpZUOKNFq6b3eme{CMR2GsTlOUVoCjcWq3TVRx[2SYSn6bWH93ZVeXd3OIWomMR3S1[FiXfWmuPI[iW{WuZomkdFyVOX6bXGKUXmelTnKuXo[MR3t4SGGwTlOSb1qLTGqpZ3qCeGCtPX6bXGKVXmiOc1uUNDu[W2KsWkKHfXKucIWbfXiPXWelcF:rdH:bW4i4XmiKc1pzNUClXFqqZomkdFyVOX[ZfXeqWlepcHOuWXeiXF2oZ1iLemmufHyjV1J{ZWiTc1mJcI[lXFmoZletbmqYOXqbV1KxXlN1[2FzbHy[NoOoZWiS[3JzOHelS3itTVOlV2qY[ICkN2K6XWiTdHJzOH6KTGKpXXl1bVuUb{eFVX:LR2GsTlqJXnikblG1VHx6cmqZVmSbXF2wT2NxL2mYVnuXNl[6Zn2teWq6[3uiW{WuZolxL3KYWoqkNl[vXmOsO1OSNFuEVXuLR2OTNmmZTYeNWEWnZ32Xb1uEZ4GNfX:3ZWd2b2qZ[36MWIOPR3esTlOScImbXGJyZ311[2quSoOkNmV4SGGwTlOScEmKS2[{Z{KW[3W4NFuEVXuLR2iLcHSJWomjbVJxZ36XcF:4NFuEVXuL[mFxT1OSb{1jP4N7NkR7JmqIPUOjcYi3XWeTRnKuVlqjcl5xXWe5dzJ8d{p2PEh7JlOoc1qEV{iyTVeLdHKuVXebS1ZxXWOCdVy4c3eKR1GLR2OTNmmZTYeYfXRyZ{KXfXKuSoSbV3SlTVRx[1q6Z{eEbVGoTVOC[1OUVkK[XFm4W4mle2mZUoqlNkm6XlOl[FmFNHeLfXN4R3mC[1mERXeEV2JzXWiKe2e6[HujN3S2Zld6bGqHPYCbR3SlTVRx[1qJXnikbll4R3mC[1mERXeEV2JzXWiKe2e6[H2iW4itTkFx[2CURX6jXGJyZ32Lelq7d1uKR1GoTVOCTlqJXnikblKjTkKPbHSE[HSKSECoTkJyNHSZTnmjfXN4R3mC[1mERXeEV2JzXWiKe2e6[IekcUmsTkFx[2CURX6jW1[vXmd2NHK6Z{eEbVGoTVOC[1mERXeEbVGoTVOC[1OUVkGkcXuoVGODe2mZToqbWklyZ324c2SYSn6bWH93XkKXNGV{Vo[kcW[FZkJ2cXGYZ3:KcnStXXl6NXKvUny[N2[6XmN6bWmZUnyZN2[6ZlOKd1mFRYCMWIOMTVOC[1mERVqLTG[6ZlOCPVmEVkGkcXyjTkKpenN{VX6ZV{Ss[GiLdGe6[Ie[XGKwTkFxO1OqRXeKR1GoR2OTNXOue3eRV1JxZ32teFuEVkGkcYe{TVOkelq6b{eEbVGoTVOC[1OUVkK[XFm4W4mlfnGZVnyLNUCoVGOCb3SZToOQe3:oTVOC[1mCb3ulcV[6UV[{cnGZRX6ZV1F6TVOT[mVxWmOXb2[UW4mlWGKXTmeTWlqnVWWTSWWq[HSQe3:oTVGsTjJ8d{pyOkpjXkKXNGWuWn6VcV[1XmF:QTJ8d{p{OkpjSGGwTlOZTnylTG[6ZnmCcnF{TkCjS4SpZUOKNFq7d16E[3uLJku{PkFzPjKjS{mpXlWteWquPE1jP4N7NUV3PjKFVX:oTVOC[1mERXeKR1GoTVOCb3SuSomOV{BsXEOLcHN{Ro[jcl6tTVRx[1qJXnikblW1VHyDenN{VmObXFZyXmiPNFuE[H:lTGK4U3l5enR{[EONcV[6[FetelyuOXylR{m{ZWePcHKvUnyNW16wXmePdlq6e3ejcm[{ZlO4[1qJXnikblGxU4dxT1mERXeKR1GoTVOC[1mERXdjP4N7NkB7JmlzbHy[NoSUXmiPe3JzOYqbVU1:Jku{PkJ5N{J7JlSSc3eKR1GoTVOC[1mERXeKRXyxXnmCc1qJXnikblGxTVi{UlOqRXeKR1GoTVOC[1mERXeEVXuPR3mC[1mERXeKR1GoTVOC[1OSb3ulcV[6UYlxL2h{TnybNHy2Xn15eGCuUo[bS2WoVGODdHKvVkK[W4ewZ{OXbXN{VomMR2JzXWiKfGe7RnSNR1G4UFOCb3SuSomOR3uxU4dxT1mERXeKR1GoTVOC[1mERVqEW3yuT1ODdHKtPXikclqp[WOob3SuSomOfUBsXEOLcGpxcIWbcUi1VH2PemqIWYOKS1[6Z32HOVuFSYeNSFm4UFSOe1yFVYeMV3uoT2ODO1SSc3eKR1GoTVOC[1mERXeKRXuLR2FxT1mERXeKR1GoTVOC[1mERVqEVXyxXnmCc2lzPUGjcmGwTlibbHOrSYCKSER6TVSOdFmJd16EbVGoTVOC[1mERXeKR1GoR2GsTlOSNFuKR1GoTVOC[1mERXeKR1GLR2GsTly6PHeWS1[6Z{KW[3SIbHyKS2Kp[FeWUlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTb2mZVnyKSECoZ{OTfWh{TnykS4ipXUKWc1q6OH6NR1GvUImkd1mJVomiW{CwTlibbHOrSnKOWkCxT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOTNmmZTYqNWEWnZ32XcmOYOX2jfUBsXleHNGqURUmKSUGpXkKWOl:ubHyjTFKtZ3mocmlzPYmbV3OxUGR2cXJ{ToS[XGKGXWiTcFuEVnu[XGKtT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVFxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoUIl5[2WISomkNmWo[FepcFmIOXijW2WPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR2JzXWiKflyVOX[kcW[vV2d2cXK6NDujcV[1XmOCPVmJVomiW{CwTlibbHOrSnKOcECxU4dxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoSGGw[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1G3UImDVWmZToqbV1JxZVeW[2lzPYSkS1[2[WFxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkJye2mYOUWKSECoZWiPfmqZVX:LTGqpZ3qHZl1yNICKSEio[FiLdHKU[3ulcV[6UW[{fmiUb3eQbVGvToq{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVFxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoZWe[[1uEVkK[XFm7UGR2[nOuWn6UW{WuZolxL2lzPXubV1F6VGOCfF2Eb3eme{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeEV2JzXWiKflyVOX[kcW[vV2d2cXK6NDujW2[7Z{KHcmqURUmKR2JzXWiKflyVOX[ZfXevWEC{cluVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mJNHebW4i7XmODdGqqRX:LTGqpZ3qOeGCtPYmbW3SLZn2belyVOXqjNmKtTVRxPVmFTYeMV1J4SGGw[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1qJXnikbl21VH6LbHGZUnyVcUlxZWePcFuFSYeOR4eoTlibbHOrUYSRcEmnT1OlTmSsXmCZNW[SVkGLRmKGWn[VSXyFVmV2WGKXPV[YSlKLWXuXSVq6b4CQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXenV1KtZliPcFmIcH2KR3es[H2HfV26NDuZN1qtXkCteWquPISRcV63XleW[2CVNHeOflGxTVi{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXulcV[6UYlxL3OuSoCkNm[QZkOTdGlzWX:OWFG4UFOCb3SuSomOfUBsXEF5c1pxcF:Tb{mnWm[DTGWsSlWTWkmQWEGT[mGWUmWUWmqHTomsdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR2JzXWiKflyVOX[kcW[vV2d2cXK6NDubS1ZxXmOCPVmEVkK[XFm7UGR2[mi6[36VcUlxTVeHbnSIcEK[XGKtXlODOWqZVX6MWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKTECoXme5fmqURoCbbVGwTlibbHOrUYSRcEm6XmelTnKuXo[NWEWrZkKTcFmFNEmKSGG4T2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOCTlmEVkK[XFm7UGR2fWmYcIqbWUW3[FetbmqU[4iOSFG{TVOTNmmZTYqNWEWnXImocmKGPV6SWXyQTVWTVGKXUXeVb{mWTVVyRm[GUlmLfXuxU4mC[1mERXeKR1GPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKTECPR3mC[1mERXeKR1GoTVOC[1OSb1qEVUCMTVOC[1mERXeKR1GoTVOC[1mERXeKR1GoTVODPVmIWoOkNmWo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERVqLTGqpZ3qOeGCvTniiXF6tWH16NHGYUnyMSFW4UVO4[1qJXnikbl21VHx6[luE[F[WcFqRWXx6V2KW[H[SNHiHVUC1[mKsSlqVR3OxT2S{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXenVUCMTVOC[1mERXeKR1GoTVOCTlOSb16EbVGoTVOC[1mERXeKR1GoR2GtPVmIWoOkNmWoZWe[c1mEVkK[XFm7UGR2[nOuWn6UW{WuZolxL2lzPXubV1F6VGOCOV2ERYCKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1qJXnikbl21VH6LbHGZUnyVcUlxZWePcFuFSYeOR4eoTlibbHOrUYSRcEmnT1OlSmWtTmCWcEmGWEGlU2SGPVKTSkmLVlZ6U2RyVn[Tb{mXWHuScluUb{eFVX:oTVOC[1mERXeKR1GoTVOC[1mERXenV1KtZliPcFmJd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERVqLTGqpZ3qOeGCtPYmbW3SLZn2belyVOXqjNmKtTVRxPVmENIiQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKRXus[H2HfV26NDukcV[xZ{KXU3J{VoC[NmWwUWSCe1yERXulcV[6UYlxL2hyPH:LNG[UWXt6V2hyTl[TNUmFV1WXSGNyPVeSWXyOTomsdF:4NFuKR1GoTVOC[1mERXeKR1GLR2hxUlOqRXeKR1GoTVOC[1mERXeEVXuPR3mC[1mERXeKR1GoTVOC[1OZNHebW4i7XmODO1SSc3eKR1GoTVOC[1mERXeKRXuLTlibbHOrUYSRclqpZWiPcGSuPUCiW16tT1SGe12Ee3eLTGqpZ3qOeGCtPX[MR3SHWXyLVGWtPWOTWXSnVUCpSmFxeH[Tb1[LWFOkdFuVd16EbVGoTVOC[1mERXeKR1GoR2hxUlOqRXeKR1GLR2F:QTJ8d{pyOkpjWVd6fnSHTnykXG[tZ{OSQTJ8d{p2N{ZxPjKFVX:oTVOC[1mERXeKS3yuT1ODdHNyPXikclqp[WOob3SuSomPR3uoTnm[[2lzPUGjcmGwTlibbHOrVYCKSESoUVOCdFmJd16EbVGoTVOC[1mERXeKR1GoTVN5elmIXo[kcUGp[FOCeFyVOHelS2[7[FSGPWmUXkCbXF5xUXpybVmIWkC[fUSPR3mC[1mERXeKR1GoTVOC[1mEVkK[XFm4TVRx[2mZTom[XHuwT2S{UlOqRXeKR1GoTVOC[1mERXeKTHSwZWe5cFuERoOiXF5xT1OTeVyERXulbXuoVGODcGmYUn:MR2JzXWiKNFuURYCKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1Gs[H2HfV2HeHSKSECoTXmTeWCUVkKKboOPR3mC[1mERXeKR1GoTVOC[1mJNHeKR1GoSGGw[1mERXeKR1GoTVOC[1mERXulcV[6UVOCPVmIcISkS4i3XleWc1q6XX6NR1Gs[H2HfV2Eb{eFVX:oTVOC[1mERXeKR1GoTVOCb2lzPYWlS2[2[F[TOXOIWXeRV1GqVUJ6eXSIWoWlR{Fx[WiDcF:qRnikTFK{ZWePbHSIcI[jbUl1UGilN3S6NX2jN1q1UGiXfXKIWoW[NkmsXmeTZ3OtfIWKboOPR3mC[1mERXeKR1Go[mFxT1mERXeKR1GoTVODcHKJUnyKTIOPR3mC[1mERXeKR1GoTVOC[1mEVkK[XFm4TVRx[1qJXnikbmF4SGGw[1mERXeKR1GoTVOC[1mERXu[Nkm2[FeXeXSHVkWkS2WoVGOCbWFzPYWlS2[2[FNyNHWZRnyQbVJxXmipNFx{bISjSoi6XFd1bV:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKRUCMTVOC[1mERXeKR1KxXnmo[3GZUn[jcm[{ZlOob3SuSomOfXuoT2ODO1SSc3eKR1GoTVOC[1mCb3ulcV[6UYmCPVmGNXibNmV3U32lcHSHUkCjN1qtVUJ6eWqucH6MR1p{XmeKenSYOYqbW15yZ32WemmuSoqbWklyZ324bVyERYeMWIOPR3mC[1mERXeKR1GoTVOC[1mEVkK[XFm7TVRx[3N{VomZN1qtZ1e5bGlzWX:LfUmxZn2TcHWEOYeiTFG3XWeTeHGYOH6NR1GvTom4[1qJXnikbl2xU4dxT1mERXeKR1GoTVOC[1mERXeLTGqpZ3qO[2CURoqlTFqnZ32Xe3KISnqbV3evUEKteWqIWkSNclKwZ1N5clyERX6LfYeoTlibbHOrUYCQe{CMTVOC[1mERXeKR1J6SGGw[1mERXeKRUCMTVOC[1mERXeKR1G3UImDe2mZToqbV1JxZVeW[2pzcEKbW{SoWm[LUVSSc3eKR1GoTVOC[1mEVkK[XFm6TVRx[3OISomkNm[n[GiLd1uEVkK[XFm6T2S{UlOqRXeKR1GoTVOC[3GYXX:KR1[xZ{OPcHSE[3ulcV[6UXy{cnNzUn:bW{GtTkFxdFmJfEiKR3es[H2HfV2td36kNl6wXmdycFpyNHeKWECoTkKpNHSJRX6MV1GxTVi{[1SSc3eKR1GoTVOC[1mERXeKR1K6XmiTNXOuOHebcV[{Z{KWO1SSc3eKR1GoTVOC[1mJNF6EbVGoTVOC[1SSc3eKR1GoTVOC[1mEPI[KS2Z1[FiLbGl{VXeiS{m7[FODbHKuVXekS1ZxZVSwUlOqRXeKR1GoTVOC[1qIbI[kN2GoVGOCb3SuSomOcIOvZVd6fnSE[HSQe{CMTVOC[1mERXeKR1GsZ1eHNHGERUmKS3y7Z{KXNFuEVkK[XFm6W4mle2mZVn:LNUCxTVR5[1qJXnikblqjTkODbHSI[36ZV1F3TVOkelq7d16EbVGoTVOC[1SSc3eKR1GoTVOC[1mEPI[KS{m4Xmd1[2mURoqjNl6zXmiS[2lzPYWjcW[r[FetenKqRo[jbVK4ZkOLNFmF[4eFVX:oTVOC[1mERXeKR2KtZ36LeXK6RUmKS{VyZle4O1SSc3eKR1GoTVOC[1mEVnykclq7[FiK[2CURoWlW4i{U4dxT1mERXeKR1GoTVOCb2qvRXeRV1KCXn6PemlzeI[kS2[2T1OTc3J{UkCNR1F1UVO4[1qIWomkcUW3UFOCb2qZTomkN2K6UFOCNVuVd16EbVGoTVOC[1mERXeiW2mwTVOTcXOERUmRWECoXn2Hd3NzWXeMV1J4SGGw[1mERXeKR1GoTVOC[1mERombXGJyZ311[2quSoOkNmV4SGGw[1mERXeKR1GoTVhxUlOqRXeKR1GoTVOC[1SSc3eKR1GoTVOC[1mIcH2KR3epZWiP[nKvWoOjR3es[H2HfV6qb4CKTIOPR3mC[1mERXeKR1GoTVOC[1mEVkK[XFlzTVRx[1mtWoqbXFm1VWelcHKvVU[KR1m2TlibbHOrXYWKcIi6XFd1bV:4NFuKR1GoTVOC[1mERkmFVX:oTVOC[1mCNFuKR1GoTVOC[1mERY[NfVK7Xmd2b1mJVn:bV1K6XmiHNWqZUkCFVX:oTVOC[1mERXeKS3yuTVOob3SuSomPV1F6VGOCcnOIPYqlR3OxTVi{UlOqRXeKR1GoTVOC[1mERXeKS2q4[GiTfluEVn2kR4eoTXyDVGVyVXeLTFKp[Feo[2OHVmWWR{i5UHqHZ3OtfIWKbXt4SGGw[1mERXeKR1GoTVOC[1mERoCbbVGwTWetfmhzOUGjS4ewTlibbHOrXYCMV1J4SGGw[1mERXeKR1GoTVOC[1mERXeKR1GoXn6DNXSJUX:LS2q4UFOCb3SuSomPbXt4SGGw[1mERXeKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKR1GoTVODcXOJWkCkfXesXn6Cd1mETlmjN15xU3mCb3GIPYqlSoi6XFd1bVuVd16EbVGoTVOC[1mERXeKR1GoTVebe3SZVoqMR2KuZ1O4[1mtTnybcW[6XmiKOlmEVkK[XFm7XFiLZ3KqTYCQe{CMTVOC[1mERXeKR1GoTVOC[2qvRkGlTF2wTlebe1yERXu[Nkm2[FeXeXSHVkWkS2WxU4dxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqVUJ6eXSIWoWlR{G{Xmd2cnSI[{[KR1m2TViPNHOufHyjbXes[H2HfV2Eb3eNbVqkZ3y5eVmqb{eFVX:oTVOC[1mERXeKR1GoTVODcXOJWkCkfXesXn6Cd1mETlSjNkW2XmePNHGYPYWQbVKrZld6fmqXfImZS{WkZ3y5eVmqb{eFVX:oTVOC[1mERXeKR1GoTVODcXOJWkCkfXesXn6Cd1mEVkK[XFm4T2S{UlOqRXeKR1GoTVOC[3[SNFuKR1GoTVOC[1mERnyjTF6tZWe[[1uEVkK[XFlyTVRxPVmE[H6bXGGvT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GsZ2iXcHOvb3eRV1GvToq{UlOqRXeKR1GoTVOC[1mERXeKS3yuTVOpdHN{UnylR3es[H2HfV2td36kXG[tZ36scmiUb4CKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GsZ2iXcHOvb3eRV1GvVImkeVqJXnikblqjTkOHNWqZTkWLNUB4SGGw[1mERXeKR1GoTVOC[1mERkmFVX:oTVOC[1mERXeKR1GoTVODcXOJWkCkfXesXn6Cd1mETliTWmGo[YmTe2mZVn:nXIOsZ2iXcHOvcEmKSXiWWl[Cel2UOIiZTFqkZnmKdF:4NFuKR1GoTVOC[1mERXeKR1GoZWe[[1uESoCkNUm2[Ge5d1uEVkK[XFlzT2Os[3W4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mIXoelXGK7T1OTcXOEe3eLTGqpZ3q[dF:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXebclJy[FiOc1qIXoeNR1GqV1d6fnSFc3eLS3i3Z{OTZ3OtfIWKbXt4SGGw[1mERXeKR1GoTVOC[1mERn2kTGZxZ4mob2qvRYOKR1qFZkJ2eWqYUkCiW{m2U3mDbnKIPYqbWoi6XFd2Z3OtfIWKbXt4SGGw[1mERXeKR1GoTVhxUlOqRXeKR1GoSGGw[1mERXeKR1GoTVOTfWqZUkGjTGGoVGOCclq7d3eFVX:oTVOC[1mERXeKTHSwZWe5cFuESn2bW{muT1OTcXOEb4CKTIOPR3mC[1mERXeKR1GoTVOC[1mEPI[KTFqtXUKXdHSuWXelS3itTViLcHN{WoOlTF2oZkK[[3SIbHyKTFqtZ2iXcHN{VV6EbVGoTVOC[1mERXeKR1GoTVOTfWqZUkGjTGGoUHpx[2qu[HylTF2wTlebe1yERYiObnexU4dxT1mERXeKR1GoTVODPVSSc3eKR1GoTVFxT1mERXeKR1GoTVOCely6RnqjS{m7XmODNHGIWXekNkmrZUKXNFmIUo[jcUWtXUOTdHJzOE[FVX:oTVOC[1mERXeKS2qrZld6fmqU[3ubclGxU4dxT1mERXeKR1GPR3mC[1mERXeKR1GoUIl5[3N{RoOiXGGo[FepcFmJTnykN2[{[FODc2qYSnubXFmoXn6LenKURkCiS2WoXUJ6eXSIWoWlRUCMTVOC[1mERXeKR1GsZ32XfnSYfECKSECoXmipe3KIPXubV3eqXFiLZ3KtfImZS{SqUFOCb3OuWoqlW4hxUFOCfVuVd16EbVGoTVOC[1SSc3eKR1GoTVOC[1mEVn:bW1[sXmiK[2CURoCkN16t[FOob3OuWoqlW4hxW4qD[FuURT:KR2K6XmiPNXKJVnKOSkCoU3mCclq7d16EbVGoTVOC[1mERXeLS163Zn6TcHKvVXeRV1KxZ{OPcHSE[3ukcW[7[Ge5NGe7SnSMV1FwTVOTfWqZUkGjTGKjUWZx[1:qRX6LfoOPR3mC[1mERXeKR1GoSGGw[1mERXeKR1GoTVOTNmmZTYiKSECoZn2XN1mJUkCbSV6{XWiPfluEb{eFVX:oTVOC[1mERXeKR2JzXWiKfFyVOX:bW1[sXmiK[2CURXuiS2[pXleXfV:4NFuKR1GoTVOC[1mERXulcV[6UWNxL2lzPYWlS2[2[FOCPVmEVnqjNkVxXmd2NF:4NFuKR1GoTVOC[1mERV6EbVGoTVOC[1mERXeNfUioV1eHeWqIfHyKS16w[Gd2dmqYVXelTFqpZn6PcWqZTXeiW2moZn2XcGqIWnuFVX:oTVOC[1mERXeKS3yuT1ODfnSJToejN12wZ{OTfXSIPYOjN3StZ3mob3SuSomOV{BsZVeXbGqIWomMV4eoTkOTfWmYOYqbcW[6UGeXeWlzPXuiW{WvU3mDbnGJWoWiNm[sToms[1mVNEmKS2qpZliPcFmEb3eme{CMTVOC[1mERXeKR1GoTVOC[1qJRnikcl6tXlOCPVmEZ36Qe{CMTVOC[1mERXeKR1GoTVOC[1qIfHybcmGoVGOCb3SuSomOV{BsXUJ6eXSIWoWlSIOPR3mC[1mERXeKR1GoTVOC[1mCNFuKR1GoTVOC[1mERXeKR1Go[EKpdHKIWX:KTGK6[GeW[1uURkeFVX:oTVOC[1mERXeKR1GoTVOC[1mERXeLTFK3Z4mCPVmJUkCkclK3Z4mob3KIWn2lR4eoTXy5fWiIOHmMWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1KxXnmo[1qJRo[kfVF6VGRx[2quSoOkNmWoT2ODO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeKTFqt[FiXfXKqRXulcV[6UWS{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVODPVSSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qIUn:lW{WzZ{KtOmqURUmKTF5yXX6PNHOq[3ujS2[u[FO4[12Ee3eLTFK3Z4msO1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qJRo[kfVGzVGODfnSJToObW{SwTXy5fWiIOHmMWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GsZleXcXSERUmKTF5yXX6PNHOq[3ujS2[u[FO4[1qJRo[kfXt4SGGw[1mERXeKR1GoTVOC[1mERXeKR1GoSGGw[1mERXeKR1GoTVOC[1mERXeKR1GoTliDenO6RUmKTF5xZ36DenO6[3u[NnhyZn21fnGZdHyNR1GvU4mkdF:4NFuKR1GoTVOC[1mERXeKR1GoTVOC[1mIcH2MR1GsZ1d6flmESUmRV1KuXWe5fmqURYCKTIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1qIUn:lW{WzZ{KtOmqURUmKTF5yXX6PNHOq[3u[NnhyZn21fnGZdHyNR1G4UFOCb3OIPYqMWIOPR3mC[1mERXeKR1GoTVOC[1mERXeKR1J6SGGw[1mERXeKR1GoTVOC[1mERXeKR1GoTlePc3SYOYKkNnx3XmOCPVmIbHymS2KtXYmob2lzbEGjcYS7ZWixcFuVd16EbVGoTVOC[1mERXeKR1GoTVOC[1mERV6EbVGoTVOC[1mERXeKR1GoTVOC[1mERoCbbXeoTlePc3SYOYKkNnx3XmOCPWCURYeKR3uo[YdxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERnmkcW[pZYq{UlOqRXeKR1GoTVOC[1mERXeKR1GoTVODPVSSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1SSc3eKR1GoTVOC[1mERXeKR1GoTVOC[1qJRnikcl6tXlOCeWCURoqlW1q7[FiKc1qIfHybcmG{TVSCd1mEVnqiTG[2ZUOPdHWuWYCQe{CMTVOC[1mERXeKR1GoTVOC[1mERXeKR2K{XmebNFmFNHekN2[qZ{OTfVuEVoObW2pxUFOCb2lzbEGjcYS7ZWixcFmEd3ekN2K6ZleXeVuETnOkcIi2TXmsdF:4NFuKR1GoTVOC[1mERXeKR1Go[mFxT1mERXeKR1GoTVOC[1mERXeFVX:oTVOC[1mERXeKR1GoTVOCb3SuSomOV{BsXUJ6eXSIWoWlR1F6TVOTe2mZToqbW2F4SGGw[1mERXeKR1GoTVhxUlOqRXeKR1GoTVOC[zJ8d{pyOkpjZ{OteWlzbImjNkWx[X2WQTJ8d{p5OUdzPjKFVX:oTVOC[1OSNFuFVX:oTVOC[1OUPIGKSVpyZWe5b3GYOX6KTFZyXmiLdGqZUXebcUm6TViPOXKuUn:kcUm2ZWixbHSIcI[jbVKrXWiTcGpzPYmmV1JzZWeXN1mISoWbR1K4Z316b3SYUkCkfVKsXmiTbHGYe3eMbUiPR3dxT1OSb4[MbVKvXmiTNHGYOX6KS3ysZ4mDemqqRoekcWZzZWeXN1mIUnilS2[vZkOLdGqZUXeMbUiPR3mC[1OSb3ukTFqt[H2tcHR{UXeRV1Gs[H2HfV2ENDubNmZxWViLcHSucHylNF6p[FeXcnJ{ToCbXF2wT2S{UlOqRXeEVXusZ1iLcHSucHylN12oVGOCc1qJRombXGqxXmilfmCVNH6LfXuoVImCclyVSX6KSH:oTliDfWqZXoCbXHS7U4dxT1mERXeKRUCMR2GseluqRn6bXGJxZWd2clmIcHukfVK3XnmDe3OuPXulW15xTVePbHSIWn6jN1qxXmiO[1uqPFqFVX:oTVOC[1OUVoekcUms[GePNHO6RUmKR2JzXWiKe1yVOX6bXGKSZ316b3SYUkCSNlZxXmelenOucHykfXexU4dxT1mERVqEV2K4Z316b3SYUkCkfVF6TVOob3OJTo[bTG[r[FiOPWCUZ36MV1FwTVOkeF2UZ3eQbVGsZ1iLemqJWnqlTF14SGGw[1mCb1qFVX:oTVGsTly6c3e[cm[xZleS[3GYOYqbXFpxTViHNWqZTkWKS2q6ZkJx[2lzPYmbWklyZ325[nOuWkOkcXxxXmOCdVy4b16EbVGoTVOCTlqJSkGbXFp2V2d2fmqZTkCWcWZ{Z32tNGqURUmKR1mPR3mC[1mERVqEVUCMTVOC[1mCcFqVcF6HWXyS[2OW[F:VNVqHTVWtU2[GPHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeMS1JyZ325[nOuWkOkcXxxXmZ6dGqIRYOKS1K7[Fd6fWqXPYCbS1G{TVeDbmmZVnybNkm6[WZ6dGqIRYOKS1K4Z316b3SYUkCZNnysXVO4[2mJTnykXG[tZ{OT[nOISkCiS1GxSGGwTlOScGSTWYiHVUGS[2mJWomjSkm6XmilfXGZVnyZNnysXVO4[2mJUkCjN1qtXEKtb2mEe3e[S16p[FeXcnJ{TkWZNnysXVO4[2mJRomjNmJyXUOT[nGYVneNR1KoZ32XfHSYWoqlSkm4XWiTc2mCNFuEVXuLVnyLVGSURneKbUSs[H2HfV6EOHm[Nkm6XmZ6NXOufH[kcWZ{Z32tNGqYRV6E[3uLR2[lTWKXTl[KRUCMR2GsTluCNFuEVXuLR2Op[2lzSkCbW3S3Z36t[nGYVneKSXyQTVOobVmEOHeLTFK6XmibdGqZ[IqKR1G2TVOKdFmGSl:TR1KoZ1iLemqJWnqlSkmxXleC[2OXUXeVcG[OWFOs[2RyTXeFVX:LR2GsTluIRnq[XGKtXkJ6fXWXPYCbS1GoV2V1[1uETXeNbVGsZ1iLemqJWnqlTF2oTVN1[1mqb3eSWUWGTVeDe3OuPXulW15xXEKtb2mERlqWfVKQWEGS[2StWl2VR3uoWEGKUlOob1qEVXuwXVePbHSIWn6jN1p2XEKtb2mERlqWfVKQWmW5UVmGSl:TR1KoZ1iLemqJWnqlSkmxXleC[2OWOHeFVX:LR2GsTlOUbGSTWYiHVUGS[2mJRomjNmJyXUOT[nGYVneKSWqUWEBx[2mETYWLTGqpZ3qSeVmuUo[kcW[n[GiLd2h{TnylN1qx[FeX[1SSc1qEVXuLR2GtXGOGWmOTV1KoXUKHNGqY[I[kcnynZWeT[1mGcF:KR3eqTVN1[1qJRomjNmJyXUOTflmEOHeKbXuxT2FxT1mERXeKR1GoTVOC[1mERXeKR1GoTVOC[1mERXeMV1m2SGGw[1mCb1qEVXuwT1OTNmmZTYiKR1V6TVOkcluURT:KR1qDWHuS[1uIRoqlS{m6XmZ6dGqIRXeVb{mWTVWtU1mE[3mKR{SoTlibbHOrSXeNbVGqT2OsbVmFc3eKbVmxUHmKUlOqRXeEVXuLVWV2SVmCNFuEVXuLR2OpenOJVoCjNkW7TVW5TmNxWXeLfXOoWEGK[3J{RkCiW{m2Z4mDTmW6Rl:XWYiOT2S{bV:4NFuKR1GoTVGsUlOob1qNfX:oXX6XdHKIVXebS2[{XmiTcFmJSkGbXFp2TVebenOqRombW163Z32TflmIXomjNkCoXUJ6fWqXPUGkcYi6XmilfXGZVnyKR3:3SGGw[1mERXeEV2K5[GeXfXWWVnyjS2ZxXm[LcHR{ToClS2WoVGOCbVSSc3eKR1GoR2FxT1mERXeKRXuLVlWXUWKXVl[KSWqUWEBx[2mETYWLTGqpZ3qSeVmuNUClXFqqZkKCUlOqRXeKR1GLTVOC[1OX[FmTWlqHTVOCUlOob1qEV3eoSGGwTlOSb1qMS1KrXWiTcGpzPYmmWkmxXleC[2SsPWWKSXyQTVOobVyqRXukTFqt[H2tcHR{UXeKR{SoTXms[2GWOVWKS1K4Z316b3SYUkCZNnysXVODTmW6Rl:XWYiOT2ODVGWoNFuKR1GoTVGs[1mERXeEV3ioXUKHNGqY[I[kcnynZWeT[1mGOWCXR1KLWHmCc1mqOHeLTFK6ZkKTNWl{VoqKR{SoTXms[2GWOVWKS1K4Z316b3SYUkCZNnysXVODTmW6Rl:VNWGoWHyXUWSEb3eVNVmPR3esTlOSb3:[S16p[FeXcnJ{TkWZNnysXVODTmW6Rl:XWYiOTVWHU2KERnekTFq3XliXbnSHPYCbS1GoV2V1[1SSc1qEVXuLR2OpWGKWfF[SNWGoXViDfXJzVkG[N2KnZWeT[1mGXmOVNECoXVOKeVqJXnikbmG2TX2PenOuWn[lXFq{XEOLcHR{ToClS2[oSGGwTlOSb1qEVXyZV1WXV2KURne[NlZxXmelenOvcH[iW2KoTVV2VG[ERlqVbVGwTXmCeVmEVoekcUms[GePNHO6RYWKR1mxT2OsUlOob1qEVXuLT2S{bV:4NFuFVX:oTVOC[1OUPIGKS1pyZWe5b1mIVnyjS2ZxXmODfHSYWommV1KuZkOK[3OuWnuiXFqtXUOTNVmJWomjTF2oT3l5UlOqRXeKR1GLTliHNWqZTkWTS2[{XmiTcGWuWnuiXFqtXUOS[2CURV6EbVGoTVOCTlOUTlWTWYiHWlWW[2KtTmCVV1KoTXl1b3SuSomPR{SqZmiTNXOuTo[[R1KZV1WXV2KURnekcW[5[GeXfnSHPYe[XGKwXVODTmSqRX:FVX:LR2OC[1mERVqWNG[OVmWPWVmIRombXFZyXmiPNGh{RnilS3ioTVWbV2RxNHe[R1m2TlibbHOrVYWKcV63Z32X[nSZToOZN1qt[EOLdHSIWneKSnSKVm[LSlmIRo[kTGKxZkJ2fmmERUiRbVGvTodxT1OSb1qMWIOqU4dxT1mERXeKRXuPR3mC[1mERVqNfX:oXX6XdHKIVXelXFKsXWiTcFmJSkGbXFqxXmiO[2quPYmKTGJ2Z1eW[1uqPF6E[3uLTliHNWqZTkWXXFKsXWiTcGFzSkCbW3S3Z36s[2CURXmXWlKGVW[TSlmIRXmNbWJzXWiKNFyqToSlTG[6XX16[1mHUl[XR1Ko[Fite2qYRUmLNl6p[FeXcnJ{TkWLfVKZV1WXV2KURne[NlZxXmelenOvcH[iW2KoTVWtWFmGOWCXR1KQWmW5UVmGSl:TR1KoZ1iLemqJWnqlSkmxXleC[2OXUXeVcG[OWFOKO1mCNFuEVXusZ2iXcHOvcG[kS2Kp[FeXVXOuPXulW15xTVOCPVmETm[WSWKDWlWW[2mETYWLTGqpZ3qSeVmuNUClXFqqZkKC[2VxWmWKS1Jx[WiDcGmFNH6kTFq3XliXbnSEZ3eXNHiHWXuW[2mJRomjNmJyXUOT[nGYVneKSXyVTVV2VG[ERl:XWYiOTXq{[1SSc1qEVUCMR2GseluqRlOlW3y{XleteWq6RoilW2[6ZWeXflmIXo[kbVK7[Wd2bnGJTo[jcXx3XWiTdHJzOHe[NkG7TViDbGpzWoqKR3:3SGGwUlOqRXeEVXu3T3mDcmqZVXe[Nkm{ZleXbnSIcI[jbVKrZmiO[3OISn6bXF2oXn6LenKURl6[W3StZn6TelmGUo[kcWWoT3l5UlOqRXeKR1GLTlePeHNyRnibNm[7V2iTcHKZUXeRV1KPXWelcF:rdH6bXGKPZkKTcHKE[36[NkG7UEODbGpzWX6MV{BsXkKXNGFzPYOjS2[r[FetenKq[4CNWEW{ZkKHb1uEb4SRcXSt[FWtNGqYNYqMR3t4SGGw[1mCb1qFVX:LR2N5dVmI[HylR1KxXliO[3JzXXekNm[{XmePNGqYVXe[NkG7TViDbGpzWoqKTHSx[Feo[3N{Vo[kcWWoXUJ6b2qZUXebclq3ZmODUm[JWom[cUioXUJ6eWqucH6KR3:3SGGwTlOUVnqjXF2oVGOCb3SuSomOR{BsXkKXNGFzNYqWS1[vXmiOc1uVd16E[3uLTlePeHO6RUmKR1mvTXl2fnSJTn[kcW[4ZleHbmqU[3mNR1m{TVOKclyEZ3mNR1GsXUJyfluUOHmLfVl4SGGwTlOUVnqjXF2oVGOCc1qIUoSkfkB6TomkdFmFPHeLfUC5TomCOlmEVnqjXF14SGGwTlOUPIGKTGK6XWd2fmquPYmjV1JxZomDbHOvTnimV1KuZkOLeFmEc4[FVX:LR2OTbnKZUlKkclmoVGODcHWJRoOjNmKtT1OKd1mqe3ekN2K6XEOLcHOIfHi[NmWwTXmkbVyERXmKbYeoTlePeHO6b4CQe{CMR2GsUlOob1qNfX:oXkKXNFmJRnibNm[xXlZ6fnSIPYmbWkmxXlODbHKJTny[W2J2TViPOXKuUn:kcUm2ZWixcGqERnqjXF2oZ1eHcmqZUXeMTFK6XmibcHKvVXebTG[4ZletbnGZVnykfXuoT3l5UlOob1qLS161Z{CteWKGTXeRV1KpZ36LbHWU[4CQe{CMR2GtcXJ{Tny[W16wTVOob3SuSomPV1KpZ4mCb2lzNYqUW{SxTVi{UlOob1qEV2KrZmiPTnKsVlOYNUCoVGOCb2lzNYqUW{S1VH2lcHSHRnibNm[LXlOodFyq[H[LfUSsXUJyfmOYOISRcXSt[F[PNHJ{TnyUW2GwT2S{UlOob1qnVUCMTVOC[1mCNFuEVXu3T3mDbXSYcIObR1KxZn6PcHOvVXekXG[tZ36s[2lzNYqKR3:3SGGwTlOUVkK[W4i7TVRx[2mZTom[XHuwT2S{UlOob1qbcUm6XmeHbnGERX:LS161Z{CHfXOqRnikfVGsXUJyfmhzUo[bS2WxTVi{UlOob1qEV{iyTVetcVmIUoSkfVKpZliLcGmYVkWKS2Z1ZWiPNFmIcIWKS{Fx[GiLbXK6RkC[W1q{XmODNHGIWoWKS4ByZmiC[3GZVXeMbUiPR3esTlOYcH2KR3epZWd2[mmZTom[XHuwTlePeHNyPXqjNmKtUFOCb2lzNYqUW{WGVXmsdFmJd16E[3uLR2Gsb2qISkC[V1F6TVeXOHOIfI[bS2WwTXx5bVyERXu[NkG7XEKPemqIWYCQe{CMR2GsTlOYcH2KR3ewXUJ6NXKvVX:LS2Kp[FeGdGCVNImMV1GuTnmDdHN{UnylR3esXUJyfmWISn6bXF6L[FeXeHNyd3ubS1ZxXW[{e2iXNICMV1J4SGGwTlOSb1qEV2KpZ36K[1mFNHe[XFq6XWisc1qIVnilS1[jUWZxd1mETX6KbUSsXUJyfmWISn6bXF6L[FeXeHNyd3ubS1ZxXW[{e2iXNISRcXSt[FWtb2qYOUCiW2qxXmiKc1uUOHmLfVm{TVOTb2mZVniYflKlUFOCbVpzUoSkfXOqT2S{UlOob1qEVXuLTlibbHKJUnKZV1F6TVOKc1mqOYCjXFK{ZkKTcFuETYOKbYeoTleHfXOqb4WKbXuqU4dxT1OSb1qEXECPR3esTlOZNF6E[3uL[mFxT1OSb3ukXG[tZ36tTnKvUnykcmKFWG[O[2CURX6LfoOPR3esTnGYXXeMS163[Gd2NFuEVkK[W4i7T2R1e1uSNFuEVXuLTliHNWqZTkWUW{W7XmiLNGFxNWSKSECoTXutU2VxWmOXR1KLWHyTVFmIRXmNbWJzXWiKNFyqToSlTG[6XX16[1mEbHekN2K3Z32X[nGYVneNR1KoZ32XfHSYWoqlSkm4XWiTc2mEe3e[TFKpXkKX[nGYVneNR1Ko[Fite2qYRYCKSmqDWF[XSmW6RXmN[{CMR2GsTlOYcISkS4i3XleWc1mqe3mNR1Gs[H2Hd3O6b3eNbVGqU4mKO1SSc1qEVUCMR2GsUlOob1qNfX:oXX6XdHKIVXebS2[{XmiTcFmJSkGbXFp2TVePeHO6RYGNe{CMR2Gsb3OZWnykcnyGXme5cHSIWlSVWl2oVGOCbVSSc1qEVUCMR2GsTmKGWl2TWmKHTVWbV2RxNHe[R1m2TlibbHOrVYWKcUFx[GiLbXJzRXeXNHiHWXuW[1uCNFuEVXuLR2WPVGSsUlKXR3ioZ1eHcmqXPYCbS1G{TVOl[lq6e3e[TF5xZkOLcGhzcHu[R3uoWHt6WVmGcF:KR3eqTVN1[1qIUoSkfVG2TVOKdFuVd3mQe{CMR2GsTlOSNFuEVXuLR2FxT1OSb4[MbVK5[GeXfXWURn2jN1moZ32XN3OucECbV1KxZnmDdHKuSnqlS3xzXmODfnSIPYmbXF2oT3l5UlOob1qLTFZyXmiLOWKIWoObXGKtV2d2Rml{VoClcW[V[Fd6fWqZUXeKSECoTXdxT1OSb16E[3uLR2WTSmSGWmWTV1KIWXt6UlmIRXmNbWJzXWiKNFyqToSlTG[6XX16[1mH[FmTWlqHTVeDfnSIPYmbWkmxXleC[2OWOHeMR1moUHmCb3SuSomOV1G2TVOKdF:4NFuEVXuLSGGwTlOUTUeFVX:LR2FxT1OSb4[MbVK5[GeXfXWURn2jN1moXleXd2qZVnyKS3y2XWePNHGZXnyKS1[2XlODeXK6NUKiXF6xXX25cFmJRomjNmJyXUOTflmISoWbR1KrXWiTcGpzPYmiW2[7TVeHeWqERnqjXF2oT3l5UlOob1qFVX:LR2N5dVmGRkK[XFmoTliDfXJzVkG[N2KHZn6TdHSJb3eVW1[vXmZ6SmmZXn[VW{msXme5[mKYOUCiXGJ2TVOwelSSc1qEV2K4Z316b3SYUkCTW{VxZWiTOVmFNHeVW1[vXmSwOmpzWkCVW{msXme4c1pzWnilbUmtZn6TdHSJb36MWIOPR3esTlqJRomjNmJyXUOTSnKvVoClTHu1VH6PcHSHVkWkS2WwTkKPbHSISoOjNnSnZ1iLemqJWnqlR3OxU4dxT1OSb3eFVX:LR2OTe3OuPXulW15xWUOTbHSJWoqKSECoTliDfXJzVkG[N2KHZn6TdHSJb4SRcXSt[FWHNHSJToC[cmZxXmOocnN{VnilTG[7TomsO1SSc1qEV2K7[FeHNGOYVXeKR1F6TVOTe3OuPXulW15xWUOTbHSJWoqNWEWvXmiTTmqE[4CQe{CMR2GsUlOob1qKRUCMR2Gsb3OJTo[bTG[r[F[bdHNzcHmiW4ix[Fis[2CURXukTFq3XliXbnSGWoWlS3xx[WNxL2pzWkCSXGJxZ32tbXSZVnyMR3RzZWiPdGmucIOiXGJ2TomsO1SSc1qEV2JzZWiPTmqERXeKSECoTliDfXJzVkG[N2KYZWiPdGmucIOiXGJ2UGR2cmqZVlqbR3exU4dxT1OSb16E[3uLTVFxT1OSb4[MbVKC[H2HfVmEVoekcUms[GePNGKYOUCiXGJ2TVVybGpzWn[TW1ZzXEByemqIWoOZNG[2[FetNHWURYGNe{CMR2Gsb2lzSkCbW3S3Z36tSnKvVoClTHuoVGODUmmY[HyQboCvXmiTUnJzVnyjR3evXmeHNlxzWoWlS3xx[WOkdF:4NFuEVXusXUKHNGqY[I[kcnyHZn6TdHSJb4SRcl6t[F[TOXOIWX:LNl6p[FeHd3Jz[H[[NlZxXmelenOvb36MWIOPR3esTlmCNFuEVXusXUKHNGqY[I[kcnyV[FeHNHSZUXeRV1GsXUKHNGqY[I[kcnyHZn6TdHSJb4SRcXSt[FWHNHSJToC[cmZxXmOocnGZUn[[W15xZWibcFq6b{eFVX:LR2OTbmmZVmSlS1ZxV2eS[1mERUmKR2KrXWiTcGpzPYmmWl5xXWiTNXO6NDubNmZxV2eSc1uVd16E[3uLSGGwTlOUVoilW2[6[WWTcHKIWkCbWlK6ZkKTNWl{VoqKSECoTXdxT1OSb3eKR1GoTVOC[1mCb1qTSW[OVm[TSlmGXmOVNECoXVOKeVqJXnikbmG2TX1yNHSZTnmjNlGoWkCpSmWsWXe[TFK6ZkKTNWl{Vn[iW2KoTVWtU1mE[16E[3uLTVOC[1mERXeKR1GLR2GtWGKWfF[SNWGoXmd2NHGZVkWZNnysTVWbV2RxNHe[R1m2TlibbHOrVYWKcV6p[FeHd3Jz[H[kTFq3XliXbnSHPXyjcmKx[Fit[nGYOUC[RUCMR2Gs[1mERXeKR1GoTVGsTlOX[FmTWlqHSGGwTlOURXeKR1GoTVOC[1OSb1qKR1GwT1eHNHSJToC[cmZxXmZ6dGqFNHmNbWK7[FeHNGOYVYWKbVKDWHuS[3SuSoOlW2WoVGOCfVuURmCW[{CMR2Gs[1mERXeKR1GoTVGsTlOURXeMS1Zx[FiLdGmvWkCbWkmxXlRxbVyqVkKiXF6LXlN1bVmGSl:TR1JzXWe5NWqURUiRV1G5T2OsUlOob1qKR1GoTVOC[1mERVqEV3t4TVFxT1OSb3eKR1GoTVOC[1mCb3mQe{CMR2Gs[1SSc1qEV2K5[GeXfXWWVnyjS2ZxXmWPbHSIWn6jN1qxXmiO[2CURXmFVX:LR2OC[1mERXeKR1GoR2GtSWKWfF[XSWWoVnyLVGSURneKbUSs[H2HfV6EOHmjXGJyZ32LemmERmiUSW[UVmOD[2lzSkCbW3S3Z36t[nGYVneKSXyQTVOoUlOob1qKR1GoTVOC[1mERVqEVXyVVmW5SmFyVXebW{VxZWiTOWhzcHuKSWqUWEBx[2mETYWLTGqpZ3qSeVmuUnilS1[{ZkKl[mlzSkCbW3S3Z36t[mqYOUCiXGJ2XEKteXSIRV6E[3uLTVOC[1mERXeKR1GLR2GtXGOGWmOTVUCMR2Gs[1mERXeKR1GoTVGsTlOURXeMS1Zx[FiLdGmvWkCbWkmxXlRxbVyqVnq[XGKV[FeHNGOYVYWKbVKDWHuS[3SuSoOlW2WoVGOCe1uSNFuEVXuoTVOC[1mERXeKRXuLT2S{[1SSc1qEV1GoTVOC[1mERXeEV1l4SGGwTlOURV6E[3uLTliHNWqZTkWTS2[{XmiTcGFzNYqKSECoTXdxT1OSb3eKR1GoTVOC[1mCb1qTSW[OVm[TSlmGXmOVNECoXVOKeVqJXnikbmG2TX1yNHSZTnmjNlGoWkCpSmWsWXe[TFKpXkKX[nGYVneKSXyQTVOoUlOob1qKR1GoTVOC[1mERVqEVXyVVmW5SmFyVXekS1[vXmZ6dGqERleWb{mPTVeCbVyqVkK[XFlxUHmLbnKZUn[kS1[vXmeCUlOob1qKR1GoTVOC[1mERVqEVXyZV1WXV2KURX:iXF6nXWePNHGZXnyRWFGxSGGwTlOURXeKR1GoTVOC[1OSb4CQe{CMR2Gs[1mERXeKR1GoTVGsbV:4NFuEVXuoSGGwTlOUPIGKS2[2XlODfHSYWommV1GyUIdxT1OSb16EbVGoTVOCTlqIUo[jcUWtXUOTdHJzOHeRV1KPXWelcF:rdH6bXGKVZWd2cnKIWkCjNkSwTkKPenOuWY[kcW[7ZkOXfWlzWX6MV{BsXkKXNGFzPYWjcW[r[FetenKq[36[Nkm6XmZ6N3OucECbV3OxU4dxT1mERXeKRXuPR3mC[1mERVqlTFp2TVi{UlOqRXeKR1GLR2FxT1mERXeKRXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OLWG[GSmOXR1KWWXuHU2VxSlSXSXyRWHmKdF:4NFuFVX:oTVOC[1OSb3u[Nkm2Zn2XbnSIcI[jbUBsZ2iXcHOvb3:LTFZyXmiLOWOYOYqbXFpxWX2XN3OucECbV3t4TVOCUlOob1qEW3yuTVOob3OZWnykcnyLZn6PcHOvVlSVWl2pVGOKbVuURXu[Nkm2Zn2XbnSIcI[jbUBsZ2iXcHOvb3:LTFZyXmiLOWOYOYqbXFpxVUByWFuVd3eKR1GoTVOC[1OSb16E[{CMR2GsTlqIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[WWTcHKIWkCbWlqt[EOLdHSIWYCQe{CMR2GsTlqIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[WWTcHKIWkCbWlqtXletfWqYUkCMWIOPR3esTlOUVnqjNkW2XmePNHGYPYWNWEW5[GeXfXWU[3ukXG[tZ36tSWqYfHylS2[FWG[OdF:4NFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWWKtZleXNGqWcIWSW15xZWibcGV{Vo[kcW[7T2S{UlOoNFuEVXuLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OTfHSYWommWm[4XleHNGqWUnilS2[vZkOLOVuVd3eKR1GoSGGwTlOSb3u[Nkm2Zn2XbnSIcI[jbUBsZ2iXcHOvb3:LTFZyXmiLOW[ZRnu[XGKtWViLemqJWnqlR3t4TVFxT1OSb1qFVX:LR2Gsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1qJSkGbXFp2VleXd2qZVnyWTFq3XliXbnSJUYCQe{CMR2GsTlqIUo[jcUWtXUOTdHJzOISRclZyXmiLOVuEVoilW2[6[WWTcHKIWkCbWV6p[FeXcnJ{ToCbXF2xU4dxT1OSb1qLS163Zn12cGl{VoCjNkS1VH6HNWqZTkWMR2K5[GeXfXWWVnyjS2ZxXmWPeHO6b{eFVX:PR3mC[1mERVqnV1KrXWiTbnGERX:TXHirXmiDNHGYPYWKR2KtT2ODO1SSc3eKR1GoR2Gsb2lzPYWjcW[r[FetenKqNDukXG[tZ36sc1mtTmCVSYiEVWWPUFmqb{eFVX:oTVOC[1OScECiTFq3[ImCb2qVd16EbVGoTVOCTn[SNFuKR1GoTVGsUlOqRXeKR1GLTlePenKuOXy[N2KxZkJ1eGCvSkGbXFp2T1OLSGRxNV6UWmGqT2S{UlOqRXeKR1GLSGGw[1mERXeEVU1:Jku{PkF3PjKkN3y7[FeXeGFzbHy[NoN:Jku{PkV4NkpjR3mC[1mCb1qEV2KsZkOldGqERVqRV1KPXWelcF:rdH6bXGKVZWd2cnKIWkCjNkSwTkJyNHSZTnmjfUmrZkJ2cXGYZ36MV{BsXkKXNGKIPUOjcYi3XWeTTmqE[4CQe3:LR2GtdGqqRX:LS2K3[EKtb2CVNH6LfVJ5[lODUmmY[HyQboCwXme5e2qZTX:LNkFx[GiLbXK6PYCjcWq3TomseGCu[HylSlqtXkB2bHKYWX:MV1V6TkK1fXSIfIK[W4S6UlOkdFmJd1uKR1GoTVGsTlOUVnqjN1J2Z32tcnGJVXeRV1Gs[H2HfV2ENDubNmZxVUJ6e3WZToCbNnhxT1OsO1OqRXeKR1GLR2Gsb3SuSomOR{BsZ{KXNGFzPYemXFqxXkKpNFuEVnqjN1J2Z32tcnGJVYWLfoiqZ3mCemCsNXibNm[2[Fd5[2[JWom[cUioVUKHbnGIWXeEbVGoTVOCTlOSb1qTS2[1ZomDbXWURUi[V1KwZ32XcWCUTn:lTGK4U3l5enR{[EONcV[6[FetelyuOXylR{m1XWelcHKvVo[NW2Z1[FeXeXNzcI[jcl23ZmNyNHSZTnmjfUGpXUKPcHKIWom[XGK3Z3mK[3SIcECjS2V6TXtyWXSZTnmjfVKDXUKPcHKIWom[XGK3Z3mKL1OqRXeKR1GLR2GsTmSYSn6bW{VxZomDfnOIWnybSIe3XWR1[3SZRXe[cnuoVW[LWWOWPH6MWIOMTVOC[1mCb1qnVX:oTVOC[1OSb{1jP4N7NkR7JmmZWkCjNkGp[FetbmKIPUOjcYi3XWeSfTJ8d{pzN{J1PjKEbVGoTVOCTnGYXXeMSUGpXkKWOl:ubHyjTFKtZ3mocnKZVkGkcVq3UEKteWquPH6MV{BsXkKXNGWuWn6VcV[1XmOodGCVNH6iN1pxZle1bHF{TUCLfXuo[Yew[1mERXeEVXuMTVOC[1mCb1qLS163Zn2bdGq6RUmKSUGpXkKWOl:u[HylSl6xZn2ld2qZVo[jbXevZmiTNXOuTo[NNl63Zn2bdGq6Z4CQe3:oTVOC[1OScICbbVGwTlePenKuXoCbfUBsXkKXNGGZWkCjNkGp[FetbmKIPUOjcYi3XWeSc1uUb3eme3:oTVOC[1OSb1uKR1GoTVGsTlOZVommV1J4R3mC[1mCb1qEVX:oTVOC[1OSb1qEV2Jx[GiLbXJ{RnilS3eoVGOCb2lzPYWbcXyvUGR2cmqZVmWlXFqqZkODbHSI[3:MWIOMTVOC[1mCb1qEVXusZmd6b2qYe3eRV1KPXWelcF:rdH6bXGKPZkKTcHKE[36jXGJyZ32LelxzNUClXFqqZomkdF:4c1qEVXuLR2GsTlOSb1qKR1GoTVGsTlOSc1qEVXuLR2N5elmI[HyjcW[6XWiTcFmIfICkN2GoXn16fVmISoOjR1J{XmeLfnGZVnyke3:oTVOC[1OSb1qEV2K1ZkKTcHKENDubNm[2XmiLbHSIWm[kcYiOZWiPNFuEb{eEbVGoTVOCTlOSb1qEbVGoTVOCTlOSb1qLTHStXX6PdHSIWoqKSECoWGeHcmqVc{[bNmZxWGd6b2qYe3:LNl63Z32WenRzWnmkNnxxXmOkdFyVOX6bXGKFZkK5d2qYUkCiW{m2T1OseGCufI[[W2GwT2NxL2pzWkCUXGKtZmiOc1uVd1uKR1GoTVGsTlOScH2jN1qtXWePc1mE[3ulNm[qZ{KtNGqZUXe[XF2oTlilcGmvUoClS2WxTVi{T1mERXeKRXuLR2GsTlOqRXeKR1GLR2GsTlOUVkObW1q7ZWiTcGFzPYWbcXyvTVRx[1qIUo[jcWqxXolxL2pzWkCXNm[qZ{KtNGqWUo[jcWqxXomob3RzWnmkNnxxXmNxL2pzWkCSNkmsXmOodFuVd1uKR1GoTVGsTlOSb1qiW2moT1OTN2qYToqiXGKtVUJ6eWqucH6KR2muTVOTN2qYToqiXGKtVUJ6eWqucH6NWEWvXmiTSnKuSnmjS2[sT1OsPWCUZ4iLfXuo[YewTlOSb1qEVXuLTlePenKuXoCbe3uLTVRx[1qIUo[jcWqxXolxL2pzWkCUW{VxXmiLe3OuWkCMR3t4R3esTlOSb1qEVXusZ{OXbWmuSoqbV1GoTVGs[2CURl6[W3StU3qxc2qYfIebXFmwTkJyNHSZTnmjfUl{XmeLfnGZVnyLfXu1VH2lcHSHUkG[cVqpZ{KWc1qJ[Hy[cl6x[FeWeGCu[HylSWKtXn2HNXKJVmSlS{m6XmibdGqZZ3:MV3t4R2Gw[1mERXeEVXuLR2GsTlqJ[Hy[cl6x[FeXe2mZVn:KSECoTlilcGmvUoClS2[FZkJ2cXGYZ4SRcXSt[FWLbHNzWlWiXFmwT2N2SWW6OHulTG[6XX16e2mZVn:Nb2KVUHmTfnSYTnm[XF6tUHuTWFyqVkObW1q7ZWiTcFyVOX6bXGKFZkKTcFuEb4WLfUVx[ViScl:4c3eKR1GoR2GsTlOSb1qLS{GxZn6PdHWuWVqKSECoTlePenKuXoCbfUBsXkKXNGSYcIWiW{GpZl[DbGpzWmSiXICtT1OsO1Oob1qEVXuLR2Gsb3NzUomiXFJxTVGs[2CURl6[W3StU3qxc2qYfIebXFmwTkJyNHSZTnmjfXOxUGR2cmqZVlelW4i{Vld6N3KufI[[W2KVXUOLdHOJVmG[XGKwT1OsO1Ooc1qEVXuLR2GsTnGYXXeMR1[xZ{F6cHWIWnqlXGKpXX25cFuEVoq[N1qxZ1iSdFuSc1qEVXuLR2GsTlOYUn:jW{msT1OTfml{ToCkTGG{TVOke167Z{GLfXt4R3ew[1mERXeEVXuLR2GsTlqIUo[jW{GpZn2S[1OURUmKR2K7XUOLdHOJVYWLfVGvUHmTN2qYToqiXGKtZ1eHNHGEOH6KR3O2TldydHKvUoCmcWW2TomCfWCqXYiKR2mvU4mCely6RnikN3y2XUKpfXJzOY[lXF2oXUKHd3KIcIWbe3:MR2GsTlOSb1qEW3yuTVOob3GYOUCbXFq4Z32XNFuSc1qEVXuLR2GsTlmERXu[Nkm1ZmeHeWqERUmKR2KxZn6TcHOvRombXGG2TomCclyqVnqjNkG1XWd2b1:4c1uEVXuLR2GsTlOWRnymS2[rT1OTbnJzNYS[W{WsT2S{T1Oob1qEVXuLR2Gsely6Roq[XGqtTVeTenRzOYOjNl[sTViTdHKYWXelS{ioXUJ6eWqucH6E[3uLR2GsTlOSb3ubS1ZxXmOC[1mFNHebS1ZxXmOocmeUNYSNW2GoV1SxdF:vUX6MWIOMR2GsTlOSb1qEV2KrZkJ2cXGYZ4SRcl6t[FW5bHN{VmWiW{GtWEKbRnSZVo[jW1ZxZWePSXJ{[IWjS{mpXlOob2qISkCbV3t4R3esTlOSb1qEVXusXUJ6eWqucH6NWEW7XWibcFuEb{eE[3:oTVOC[1OSb1qEVXx6R3mC[1mERVqEVXuLR2Gw[1mERXeEVXuLR2hxT1OSb1qEVXuMTVOC[1mCb1qEXECoXUKHNGlz[3eMSWZ1XUKXe3SIcI[jbVGsXmOs[3W4c3eKR1GoR2GsTlOWNXibNmV3U325emq6[3ubV{BsXkKXNGSYWoqkNl[vXmOodFuVd1uKR1GoTVGsTlOScF6[W3StU3qxd3Jz[F[mS16tZ1iTdHJzOH:LS2WxU4ew[1mERXeEVXuL[mGwTlOSb1uKR1GoTVGsTn[Sc3eKR1GoR2GsT1mERXeKRXx6TVeXd3NzWXeme3:oTVOC[1OScF6[W3StU3qxd3JzZ3:LNEW3TVibbHKIcHuKS4ixXUKXeWlzWYWKSUW3[FepdHKuZ3ekS1[vXmODN3GYfIOKS1qtTVeTenRzOYOjNl[sXmeSeVq6b{eEbVGoTVOCTn[Sc3eKR1GoR2F:QTJ8gR>>
app/code/local/Artio/MTurbo/controllers/Adminhtml/MturboController.php CHANGED
@@ -500,7 +500,7 @@ class Artio_MTurbo_Adminhtml_MturboController extends Mage_Adminhtml_Controller_
500
Mage::logException($e);
501
}
502
503
- $this->_redirect('*/*/index');
504
}
505
506
500
Mage::logException($e);
501
}
502
503
+ $this->_redirect('*/*/index', array('activeTab'=>'page_tabs_license_section'));
504
}
505
506
app/code/local/Artio/MTurbo/controllers/IndexController.php CHANGED
@@ -30,9 +30,9 @@ class Artio_MTurbo_IndexController extends Mage_Core_Controller_Front_Action
30
31
32
/**
33
- * Execute when user saves configuration. Button at right top corner.
34
*/
35
- public function norouteAction($coreRoute=null) {
36
37
// prevent mturbo replacing
38
Mage::register('mturbo_no_ajax', true, true);
30
31
32
/**
33
+ * Router for receiving a request for dynamic blocks.
34
*/
35
+ public function indexAction() {
36
37
// prevent mturbo replacing
38
Mage::register('mturbo_no_ajax', true, true);
app/code/local/Artio/MTurbo/etc/config.xml CHANGED
@@ -1,255 +1,286 @@
1
- <?xml version="1.0"?>
2
- <!--
3
- /**
4
- * @category Artio
5
- * @package Artio_MTurbo
6
- * @author Artio
7
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
8
- */
9
- -->
10
- <config>
11
- <modules>
12
- <Artio_MTurbo>
13
- <version>1.2.2</version>
14
- </Artio_MTurbo>
15
- </modules>
16
- <admin>
17
- <routers>
18
- <mturbo>
19
- <use>admin</use>
20
- <args>
21
- <module>Artio_MTurbo</module>
22
- <frontName>mturbo</frontName>
23
- </args>
24
- </mturbo>
25
- </routers>
26
- </admin>
27
- <adminhtml>
28
- <translate>
29
- <modules>
30
- <Artio_MTurbo>
31
- <files>
32
- <default>Artio_MTurbo.csv</default>
33
- </files>
34
- </Artio_MTurbo>
35
- </modules>
36
- </translate>
37
- <menu>
38
- <system>
39
- <children>
40
- <mturbo translate="title" module="mturbo">
41
- <title>M-Turbo Management</title>
42
- <action>mturbo/adminhtml_check</action>
43
- <sort_order>91</sort_order>
44
- </mturbo>
45
- </children>
46
- </system>
47
- </menu>
48
- <layout>
49
- <updates>
50
- <mturbo>
51
- <file>mturbo.xml</file>
52
- </mturbo>
53
- </updates>
54
- </layout>
55
- <events>
56
- <controller_action_predispatch>
57
- <observers>
58
- <mturbo>
59
- <class>mturbo/observer</class>
60
- <method>flushQueue</method>
61
- </mturbo>
62
- </observers>
63
- </controller_action_predispatch>
64
- <catalog_product_save_before>
65
- <observers>
66
- <mturbo>
67
- <class>mturbo/observer</class>
68
- <method>beforeSaveProduct</method>
69
- </mturbo>
70
- </observers>
71
- </catalog_product_save_before>
72
- <catalog_product_save_commit_after>
73
- <observers>
74
- <mturbo>
75
- <class>mturbo/observer</class>
76
- <method>afterSaveProduct</method>
77
- </mturbo>
78
- </observers>
79
- </catalog_product_save_commit_after>
80
- <catalog_category_save_before>
81
- <observers>
82
- <mturbo>
83
- <class>mturbo/observer</class>
84
- <method>beforeSaveCategory</method>
85
- </mturbo>
86
- </observers>
87
- </catalog_category_save_before>
88
- <catalog_category_save_commit_after>
89
- <observers>
90
- <mturbo>
91
- <class>mturbo/observer</class>
92
- <method>afterSaveCategory</method>
93
- </mturbo>
94
- </observers>
95
- </catalog_category_save_commit_after>
96
- <checkout_type_onepage_save_order_after>
97
- <observers>
98
- <mturbo>
99
- <class>mturbo/observer</class>
100
- <method>afterSaveOrder</method>
101
- </mturbo>
102
- </observers>
103
- </checkout_type_onepage_save_order_after>
104
- <core_abstract_save_commit_after>
105
- <observers>
106
- <mturbo>
107
- <class>mturbo/observer</class>
108
- <method>afterSaveCommitAbstract</method>
109
- </mturbo>
110
- </observers>
111
- </core_abstract_save_commit_after>
112
- <model_save_after>
113
- <observers>
114
- <mturbo>
115
- <class>mturbo/observer</class>
116
- <method>afterSaveAbstract</method>
117
- </mturbo>
118
- </observers>
119
- </model_save_after>
120
- <admin_session_user_login_success>
121
- <observers>
122
- <mturbo>
123
- <class>mturbo/observer</class>
124
- <method>adminLogin</method>
125
- </mturbo>
126
- </observers>
127
- </admin_session_user_login_success>
128
- </events>
129
- </adminhtml>
130
- <frontend>
131
- <routers>
132
- <mturbo>
133
- <use>standard</use>
134
- <args>
135
- <module>Artio_MTurbo</module>
136
- <frontName>mturbo</frontName>
137
- </args>
138
- </mturbo>
139
- </routers>
140
- <layout>
141
- <updates>
142
- <mturbo>
143
- <file>mturbo.xml</file>
144
- </mturbo>
145
- </updates>
146
- </layout>
147
- <events>
148
- <customer_login>
149
- <observers>
150
- <mturbo>
151
- <class>mturbo/observer</class>
152
- <method>customerLogin</method>
153
- </mturbo>
154
- </observers>
155
- </customer_login>
156
- <customer_logout>
157
- <observers>
158
- <mturbo>
159
- <class>mturbo/observer</class>
160
- <method>customerLogout</method>
161
- </mturbo>
162
- </observers>
163
- </customer_logout>
164
- <core_block_abstract_prepare_layout_after>
165
- <observers>
166
- <mturbo>
167
- <class>mturbo/observer</class>
168
- <method>systemCheck</method>
169
- </mturbo>
170
- </observers>
171
- </core_block_abstract_prepare_layout_after>
172
- <core_layout_block_create_after>
173
- <observers>
174
- <mturbo>
175
- <class>mturbo/observer</class>
176
- <method>layoutUpdate</method>
177
- </mturbo>
178
- </observers>
179
- </core_layout_block_create_after>
180
- <checkout_type_onepage_save_order_after>
181
- <observers>
182
- <mturbo>
183
- <class>mturbo/observer</class>
184
- <method>afterSaveOrder</method>
185
- </mturbo>
186
- </observers>
187
- </checkout_type_onepage_save_order_after>
188
- </events>
189
- </frontend>
190
- <global>
191
- <models>
192
- <mturbo>
193
- <class>Artio_MTurbo_Model</class>
194
- <resourceModel>mturbo_mysql4</resourceModel>
195
- </mturbo>
196
- <mturbo_mysql4>
197
- <class>Artio_MTurbo_Model_Mysql4</class>
198
- <entities>
199
- <mturbo>
200
- <table>mturbo</table>
201
- </mturbo>
202
- </entities>
203
- </mturbo_mysql4>
204
- </models>
205
- <resources>
206
- <mturbo_setup>
207
- <setup>
208
- <module>Artio_MTurbo</module>
209
- </setup>
210
- <connection>
211
- <use>core_setup</use>
212
- </connection>
213
- </mturbo_setup>
214
- <mturbo_write>
215
- <connection>
216
- <use>core_write</use>
217
- </connection>
218
- </mturbo_write>
219
- <mturbo_read>
220
- <connection>
221
- <use>core_read</use>
222
- </connection>
223
- </mturbo_read>
224
- </resources>
225
- <blocks>
226
- <mturbo>
227
- <class>Artio_MTurbo_Block</class>
228
- </mturbo>
229
- <checkout>
230
- <rewrite>
231
- <cart_item_renderer>Artio_MTurbo_Block_Checkout_Cart_Item_Renderer</cart_item_renderer>
232
- </rewrite>
233
- </checkout>
234
- </blocks>
235
- <helpers>
236
- <mturbo>
237
- <class>Artio_MTurbo_Helper</class>
238
- </mturbo>
239
- <catalog>
240
- <rewrite>
241
- <product_compare>Artio_MTurbo_Helper_Catalog_Product_Compare</product_compare>
242
- </rewrite>
243
- </catalog>
244
- </helpers>
245
- </global>
246
- <crontab>
247
- <jobs>
248
- <mturbo_mturbo>
249
- <run>
250
- <model>mturbo/observer::automaticDownload</model>
251
- </run>
252
- </mturbo_mturbo>
253
- </jobs>
254
- </crontab>
255
</config>
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category Artio
5
+ * @package Artio_MTurbo
6
+ * @author Artio
7
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
8
+ */
9
+ -->
10
+ <config>
11
+ <modules>
12
+ <Artio_MTurbo>
13
+ <version>1.2.6</version>
14
+ </Artio_MTurbo>
15
+ </modules>
16
+ <admin>
17
+ <routers>
18
+ <mturbo>
19
+ <use>admin</use>
20
+ <args>
21
+ <module>Artio_MTurbo</module>
22
+ <frontName>mturbo</frontName>
23
+ </args>
24
+ </mturbo>
25
+ </routers>
26
+ </admin>
27
+ <adminhtml>
28
+ <translate>
29
+ <modules>
30
+ <Artio_MTurbo>
31
+ <files>
32
+ <default>Artio_MTurbo.csv</default>
33
+ </files>
34
+ </Artio_MTurbo>
35
+ </modules>
36
+ </translate>
37
+ <menu>
38
+ <system>
39
+ <children>
40
+ <mturbo translate="title" module="mturbo">
41
+ <title>M-Turbo Management</title>
42
+ <action>mturbo/adminhtml_check</action>
43
+ <sort_order>91</sort_order>
44
+ </mturbo>
45
+ </children>
46
+ </system>
47
+ </menu>
48
+ <acl>
49
+ <resources>
50
+ <admin>
51
+ <children>
52
+ <system>
53
+ <children>
54
+ <mturbo translate="title" module="mturbo">
55
+ <title>M-Turbo Management</title>
56
+ </mturbo>
57
+ </children>
58
+ </system>
59
+ </children>
60
+ </admin>
61
+ </resources>
62
+ </acl>
63
+ <layout>
64
+ <updates>
65
+ <mturbo>
66
+ <file>mturbo.xml</file>
67
+ </mturbo>
68
+ </updates>
69
+ </layout>
70
+ <events>
71
+ <controller_action_predispatch>
72
+ <observers>
73
+ <mturbo>
74
+ <class>mturbo/observer</class>
75
+ <method>flushQueue</method>
76
+ </mturbo>
77
+ </observers>
78
+ </controller_action_predispatch>
79
+ <catalog_product_save_before>
80
+ <observers>
81
+ <mturbo>
82
+ <class>mturbo/observer</class>
83
+ <method>beforeSaveProduct</method>
84
+ </mturbo>
85
+ </observers>
86
+ </catalog_product_save_before>
87
+ <catalog_product_save_commit_after>
88
+ <observers>
89
+ <mturbo>
90
+ <class>mturbo/observer</class>
91
+ <method>afterSaveProduct</method>
92
+ </mturbo>
93
+ </observers>
94
+ </catalog_product_save_commit_after>
95
+ <catalog_category_save_before>
96
+ <observers>
97
+ <mturbo>
98
+ <class>mturbo/observer</class>
99
+ <method>beforeSaveCategory</method>
100
+ </mturbo>
101
+ </observers>
102
+ </catalog_category_save_before>
103
+ <catalog_category_save_commit_after>
104
+ <observers>
105
+ <mturbo>
106
+ <class>mturbo/observer</class>
107
+ <method>afterSaveCategory</method>
108
+ </mturbo>
109
+ </observers>
110
+ </catalog_category_save_commit_after>
111
+ <checkout_type_onepage_save_order_after>
112
+ <observers>
113
+ <mturbo>
114
+ <class>mturbo/observer</class>
115
+ <method>afterSaveOrder</method>
116
+ </mturbo>
117
+ </observers>
118
+ </checkout_type_onepage_save_order_after>
119
+ <core_abstract_save_commit_after>
120
+ <observers>
121
+ <mturbo>
122
+ <class>mturbo/observer</class>
123
+ <method>afterSaveCommitAbstract</method>
124
+ </mturbo>
125
+ </observers>
126
+ </core_abstract_save_commit_after>
127
+ <model_save_after>
128
+ <observers>
129
+ <mturbo>
130
+ <class>mturbo/observer</class>
131
+ <method>afterSaveAbstract</method>
132
+ </mturbo>
133
+ </observers>
134
+ </model_save_after>
135
+ <admin_session_user_login_success>
136
+ <observers>
137
+ <mturbo>
138
+ <class>mturbo/observer</class>
139
+ <method>adminLogin</method>
140
+ </mturbo>
141
+ </observers>
142
+ </admin_session_user_login_success>
143
+ </events>
144
+ </adminhtml>
145
+ <frontend>
146
+ <routers>
147
+ <mturbofrontend>
148
+ <use>standard</use>
149
+ <args>
150
+ <module>Artio_MTurbo</module>
151
+ <frontName>mturbofrontend</frontName>
152
+ </args>
153
+ </mturbofrontend>
154
+ </routers>
155
+ <layout>
156
+ <updates>
157
+ <mturbo>
158
+ <file>mturbo.xml</file>
159
+ </mturbo>
160
+ </updates>
161
+ </layout>
162
+ <events>
163
+ <controller_action_predispatch>
164
+ <observers>
165
+ <mturbo>
166
+ <class>mturbo/observer</class>
167
+ <method>cleanQueryParams</method>
168
+ </mturbo>
169
+ </observers>
170
+ </controller_action_predispatch>
171
+ <customer_login>
172
+ <observers>
173
+ <mturbo>
174
+ <class>mturbo/observer</class>
175
+ <method>customerLogin</method>
176
+ </mturbo>
177
+ </observers>
178
+ </customer_login>
179
+ <customer_logout>
180
+ <observers>
181
+ <mturbo>
182
+ <class>mturbo/observer</class>
183
+ <method>customerLogout</method>
184
+ </mturbo>
185
+ </observers>
186
+ </customer_logout>
187
+ <core_block_abstract_prepare_layout_after>
188
+ <observers>
189
+ <mturbo>
190
+ <class>mturbo/observer</class>
191
+ <method>systemCheck</method>
192
+ </mturbo>
193
+ </observers>
194
+ </core_block_abstract_prepare_layout_after>
195
+ <core_layout_block_create_after>
196
+ <observers>
197
+ <mturbo>
198
+ <class>mturbo/observer</class>
199
+ <method>layoutUpdate</method>
200
+ </mturbo>
201
+ </observers>
202
+ </core_layout_block_create_after>
203
+ <checkout_type_onepage_save_order_after>
204
+ <observers>
205
+ <mturbo>
206
+ <class>mturbo/observer</class>
207
+ <method>afterSaveOrder</method>
208
+ </mturbo>
209
+ </observers>
210
+ </checkout_type_onepage_save_order_after>
211
+ </events>
212
+ </frontend>
213
+ <global>
214
+ <models>
215
+ <mturbo>
216
+ <class>Artio_MTurbo_Model</class>
217
+ <resourceModel>mturbo_mysql4</resourceModel>
218
+ </mturbo>
219
+ <mturbo_mysql4>
220
+ <class>Artio_MTurbo_Model_Mysql4</class>
221
+ <entities>
222
+ <mturbo>
223
+ <table>mturbo</table>
224
+ </mturbo>
225
+ </entities>
226
+ </mturbo_mysql4>
227
+ </models>
228
+ <resources>
229
+ <mturbo_setup>
230
+ <setup>
231
+ <module>Artio_MTurbo</module>
232
+ </setup>
233
+ <connection>
234
+ <use>core_setup</use>
235
+ </connection>
236
+ </mturbo_setup>
237
+ <mturbo_write>
238
+ <connection>
239
+ <use>core_write</use>
240
+ </connection>
241
+ </mturbo_write>
242
+ <mturbo_read>
243
+ <connection>
244
+ <use>core_read</use>
245
+ </connection>
246
+ </mturbo_read>
247
+ </resources>
248
+ <blocks>
249
+ <mturbo>
250
+ <class>Artio_MTurbo_Block</class>
251
+ </mturbo>
252
+ <checkout>
253
+ <rewrite>
254
+ <cart_item_renderer>Artio_MTurbo_Block_Checkout_Cart_Item_Renderer</cart_item_renderer>
255
+ </rewrite>
256
+ </checkout>
257
+ </blocks>
258
+ <helpers>
259
+ <mturbo>
260
+ <class>Artio_MTurbo_Helper</class>
261
+ </mturbo>
262
+ <catalog>
263
+ <rewrite>
264
+ <product_compare>Artio_MTurbo_Helper_Catalog_Product_Compare</product_compare>
265
+ </rewrite>
266
+ </catalog>
267
+ </helpers>
268
+ </global>
269
+ <crontab>
270
+ <jobs>
271
+ <mturbo_mturbo>
272
+ <run>
273
+ <model>mturbo/observer::automaticDownload</model>
274
+ </run>
275
+ </mturbo_mturbo>
276
+ <mturbo_adminflush>
277
+ <schedule>
278
+ <cron_expr>*/10 * * * *</cron_expr>
279
+ </schedule>
280
+ <run>
281
+ <model>mturbo/observer::flushQueueCron</model>
282
+ </run>
283
+ </mturbo_adminflush>
284
+ </jobs>
285
+ </crontab>
286
</config>
app/code/local/Artio/MTurbo/sql/mturbo_setup/mysql4-upgrade-1.0.0-1.2.0.php CHANGED
@@ -57,7 +57,7 @@
57
PRIMARY KEY (`mturbo_id`)
58
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
59
60
- ALTER TABLE `".$prefix."mturbo` ADD UNIQUE `REQUEST_PATH_UNIQUE` ( `request_path`, `store_id` );
61
62
INSERT INTO `".$prefix."core_config_data` (`scope`, `scope_id`, `path`, `value`) VALUES
63
('default', 0, 'mturbo/previewcats', ''),
57
PRIMARY KEY (`mturbo_id`)
58
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
59
60
+ ALTER TABLE `".$prefix."mturbo` ADD UNIQUE `REQUEST_PATH_UNIQUE` ( `request_path`, `store_id` );
61
62
INSERT INTO `".$prefix."core_config_data` (`scope`, `scope_id`, `path`, `value`) VALUES
63
('default', 0, 'mturbo/previewcats', ''),
app/code/local/Artio/MTurbo/sql/mturbo_setup/mysql4-upgrade-1.2.0-1.2.1.php CHANGED
@@ -42,6 +42,8 @@
42
43
DELETE FROM `".$prefix."adminnotification_inbox` WHERE `url`= '".$artioUrl."';
44
45
ALTER TABLE `".$prefix."mturbo`
46
CHANGE `request_path` `request_path` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
47
42
43
DELETE FROM `".$prefix."adminnotification_inbox` WHERE `url`= '".$artioUrl."';
44
45
+ TRUNCATE TABLE `".$prefix."mturbo`;
46
+
47
ALTER TABLE `".$prefix."mturbo`
48
CHANGE `request_path` `request_path` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
49
app/design/adminhtml/default/default/template/mturbo/version.phtml CHANGED
@@ -25,7 +25,7 @@
25
*/
26
?>
27
<div style="font-size:0.95em;width:100%;text-align:right;">
28
- <span>M-Turbo ver. <?php echo Artio_MTurbo_Helper_Data::MAJOR_VERSION ?>.<?php echo Artio_MTurbo_Helper_Data::MINOR_VERSION ?>.<?php echo Artio_MTurbo_Helper_Data::REVISION ?><br /><i><?php echo Artio_MTurbo_Helper_Data::DESCRIPTION ?></i></span>
29
</div>
30
31
25
*/
26
?>
27
<div style="font-size:0.95em;width:100%;text-align:right;">
28
+ <span>M-Turbo ver. <?php echo Artio_MTurbo_Helper_Data::MAJOR_VERSION ?>.<?php echo Artio_MTurbo_Helper_Data::MINOR_VERSION ?>.<?php echo Artio_MTurbo_Helper_Data::REVISION ?>.<?php echo Artio_MTurbo_Helper_Data::BUILD ?><br /><i><?php echo Artio_MTurbo_Helper_Data::DESCRIPTION ?></i></span>
29
</div>
30
31
app/locale/en_US/Artio_MTurbo.csv DELETED
@@ -1,245 +0,0 @@
1
- " Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled."," Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled."
2
- "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s"
3
- "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'.","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'."
4
- "(hours : minutes)","(hours : minutes)"
5
- "Actions","Actions"
6
- "Add newly created categories to select","Add newly created categories to select"
7
- "Added newly cms to select","Added newly cms to select"
8
- "All pages was succesfully removed","All pages was succesfully removed"
9
- "Apply Layout Patch","Apply Layout Patch"
10
- "Apply Mage Patch","Apply Mage Patch"
11
- "Apply the patch only just in case you need to use Direct Access download method!","Apply the patch only just in case you need to use Direct Access download method!"
12
- "Are you sure?","Are you sure?"
13
- "Automatic cache management","Automatic cache management"
14
- "Base directory","Base directory"
15
- "Block","Block"
16
- "Blocked page can't refresh","Blocked page can't refresh"
17
- "Blocked","Blocked"
18
- "CMS page","CMS page"
19
- "CMS","CMS"
20
- "CURL is not installed","CURL is not installed"
21
- "Cache Path","Cache Path"
22
- "Cache actions","Cache actions"
23
- "Cache all pages","Cache all pages"
24
- "Cache selected pages","Cache selected pages"
25
- "Cache","Cache"
26
- "Cached","Cached"
27
- "Cannot read Layout.php file","Cannot read Layout.php file"
28
- "Cannot read Mage.php file","Cannot read Mage.php file"
29
- "Cannot read patch file","Cannot read patch file"
30
- "Cart Block (sidebar)","Cart Block (sidebar)"
31
- "Categories","Categories"
32
- "Category view","Category view"
33
- "Clearing turbocache directory error","Clearing turbocache directory error"
34
- "Company","Company"
35
- "Compare Block (sidebar)","Compare Block (sidebar)"
36
- "Configuration error","Configuration error"
37
- "Configuration was successfully saved","Configuration was successfully saved"
38
- "Connection to server could not be established.","Connection to server could not be established."
39
- "Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!","Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!"
40
- "Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has.","Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has."
41
- "Create connection over sockets","Create connection over sockets"
42
- "Creating directory '%s' fails","Creating directory '%s' fails"
43
- "DOMAIN DOES NOT MATCH","DOMAIN DOES NOT MATCH"
44
- "Date","Date"
45
- "Db records was removed.","Db records was removed."
46
- "Delete","Delete"
47
- "Direct access (created new instance Magento)","Direct access (created new instance Magento)"
48
- "Download ID not set.","Download ID not set."
49
- "Download Test","Download Test"
50
- "Download method","Download method"
51
- "Downloaded <strong>%s</strong> pages","Downloaded <strong>%s</strong> pages"
52
- "Dynamic loaded blocks","Dynamic loaded blocks"
53
- "ERROR_DOWNLOAD_ID_NOT_FOUND","ERROR_DOWNLOAD_ID_NOT_FOUND"
54
- "ERROR_REG_CHECK_FAIL","ERROR_REG_CHECK_FAIL"
55
- "Edited by MTurbo","Edited by MTurbo"
56
- "Enable automatic cache refresh","Enable automatic cache refresh"
57
- "Enable automatic refresh after save CMS pages","Enable automatic refresh after save CMS pages"
58
- "Enable automatic refresh for parent of saved product (configurable, grouped, bundled)","Enable automatic refresh for parent of saved product (configurable, grouped, bundled)"
59
- "Enable automatic refresh for preview of categories of saved product","Enable automatic refresh for preview of categories of saved product"
60
- "Enable automatic refresh for preview of saved category","Enable automatic refresh for preview of saved category"
61
- "Enable automatic refresh for previews of parents of categories of saved product","Enable automatic refresh for previews of parents of categories of saved product"
62
- "Enable automatic refresh for previews of parents of saved category","Enable automatic refresh for previews of parents of saved category"
63
- "Enable making htaccess backup","Enable making htaccess backup"
64
- "Enable website","Enable website"
65
- "Enable/Disable Storeview","Enable/Disable Storeview"
66
- "Export to:","Export to:"
67
- "Extension ZLIB is not loaded.","Extension ZLIB is not loaded."
68
- "File '%s' is not writeable, please change permission.","File '%s' is not writeable, please change permission."
69
- "File .htaccess path","File .htaccess path"
70
- "File .htaccess state","File .htaccess state"
71
- "File Mage.php is not patched","File Mage.php is not patched"
72
- "Finished downloading.","Finished downloading."
73
- "Generate URL list for all websites","Generate URL list for all websites"
74
- "Generate URL list for this website","Generate URL list for this website"
75
- "Generate error","Generate error"
76
- "Generating complete for website '%s'. Wrote %d urls","Generating complete for website '%s'. Wrote %d urls"
77
- "Generating for website '%s' fail.","Generating for website '%s' fail."
78
- "Htaccess for website '%s' was rebuilded.","Htaccess for website '%s' was rebuilded."
79
- "Htaccess does not exist.","Htaccess does not exist."
80
- "Htaccess is not writable.","Htaccess is not writable."
81
- "Htaccess model has not assigned website","Htaccess model has not assigned website"
82
- "Htaccess settings","Htaccess settings"
83
- "I can't create '%s'. Please, check permission to create this directory.","I can't create '%s'. Please, check permission to create this directory."
84
- "I can't find function addBlock","I can't find function addBlock"
85
- "I can't open/create urllist file '%s'.","I can't open/create urllist file '%s'."
86
- "I can't write to urllist file '%s'","I can't write to urllist file '%s'"
87
- "ID","ID"
88
- "INFO_UPGRADE_LICENSE_EXPIRED","INFO_UPGRADE_LICENSE_EXPIRED"
89
- "INFO_UPGRADE_NOT_ACTIVE","INFO_UPGRADE_NOT_ACTIVE"
90
- "If you not see newly added category or CMS, then push the 'Synchronize' button.","If you not see newly added category or CMS, then push the 'Synchronize' button."
91
- "Inserting MTurbo directives fail. Htaccess template not found.","Inserting MTurbo directives fail. Htaccess template not found."
92
- "Inserting MTurbo directives into htaccess fail.","Inserting MTurbo directives into htaccess fail."
93
- "Install error","Install error"
94
- "Installation complete. Welcome!!!","Installation complete. Welcome!!!"
95
- "Installation succesfull. Now will be your Magento faster than other.","Installation succesfull. Now will be your Magento faster than other."
96
- "Interpret for downloading script","Interpret for downloading script"
97
- "JavaScript Watcher (this control watches existing javascript in all your theme packages)","JavaScript Watcher (this control watches existing javascript in all your theme packages)"
98
- "Last refresh","Last refresh"
99
- "Launching this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories.","Launchng this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories."
100
- "Layout names of dynamic loaded blocks","Layout names of dynamic loaded blocks"
101
- "Layout patch uninstall error","Layout patch uninstall error"
102
- "Layout patch was removed.","Layout patch was removed."
103
- "Layout patch","Layout patch"
104
- "Layout state","Layout state"
105
- "M-Turbo Cache Management","M-Turbo Cache Management"
106
- "M-Turbo Management - Downloading pages","M-Turbo Management - Downloading pages"
107
- "M-Turbo Management","M-Turbo Management"
108
- "M-Turbo directives from .htaccess was removed.","M-Turbo directives from .htaccess was removed."
109
- "M-Turbo installation problem","M-Turbo installation problem"
110
- "M-Turbo installation succesfull. Please see into System/M-Turbo Management","M-Turbo installation succesfull. Please see into System/M-Turbo Management"
111
- "M-Turbo upgrade succesfull. Please see into System/M-Turbo Management","M-Turbo upgrade succesfull. Please see into System/M-Turbo Management"
112
- "M-Turbo upgrading problem","M-Turbo upgrading problem"
113
- "Mage patch uninstall error","Mage patch uninstall error"
114
- "Mage patch was removed.","Mage patch was removed."
115
- "Magento Turbo Cache Management","Magento Turbo Cache Management"
116
- "Main Configuration","Main Configuration"
117
- "Menu","Menu"
118
- "Model '%s' is not writeable. Please change permission to write for patch.","Model '%s' is not writeable. Please change permission to write for patch."
119
- "My Cart (%s item)","My Cart (%s item)"
120
- "My Cart (%s items)","My Cart (%s items)"
121
- "My Cart","My Cart"
122
- "Name","Name"
123
- "Next page","Next page"
124
- "No","No"
125
- "Not activated yet","Not activated yet"
126
- "Not blocked","Not blocked"
127
- "Not cached","Not cached"
128
- "OK","OK"
129
- "Other","Other"
130
- "Page downloaded: ","Page downloaded: "
131
- "Page is too small or 404","Page is too small or 404"
132
- "Page was succesfull download. Now is cached.","Page was succesfull download. Now is cached."
133
- "Page was succesfull purge from disk.","Page was succesfull purge from disk."
134
- "Page","Page"
135
- "Patch already removed","Patch already removed"
136
- "Patch already used","Patch already used"
137
- "Patch was applied.","Patch was applied."
138
- "Patch was removed.","Patch was removed."
139
- "Path '%s' is not correct.","Path '%s' is not correct."
140
- "Path '%s' is not usable. This path is used by system Magento, please enter other path.","Path '%s' is not usable. This path is used by system Magento, please enter other path."
141
- "Permission denied. Cannot write to Layout.php","Permission denied. Cannot write to Layout.php"
142
- "Permission denied. Cannot write to Mage.php","Permission denied. Cannot write to Mage.php"
143
- "Please select item(s)","Please select item(s)"
144
- "Poll Block (sidebar)","Poll Block (sidebar)"
145
- "Preview fail.","Preview fail."
146
- "Preview","Preview"
147
- "Previous page","Previous page"
148
- "Processed <strong>%s%% %s/%d</strong> pages","Processed <strong>%s%% %s/%d</strong> pages"
149
- "Product detail","Product detail"
150
- "Products","Products"
151
- "Purge all cached pages and relevant directories located on the disk. No caching will be done until cache is recreated.","Purge all cached pages and relevant directories located on the disk. No caching will be done until cache is recreated."
152
- "Purge from disk","Purge from disk"
153
- "Purge","Purge"
154
- "Purging page fail.","Purging page fail."
155
- "Rebuild .htaccess for all websites","Rebuild .htaccess for all websites"
156
- "Rebuild .htaccess for all websites.","Rebuild .htaccess for all websites."
157
- "Rebuild .htaccess for this website","Rebuild .htaccess for this website"
158
- "Rebuild htaccess for website '%s' fail.","Rebuild htaccess for website '%s' fail."
159
- "Record was successfully updated.","Record was successfully updated."
160
- "Registration","Registration"
161
- "Relative path from webroot","Relative path from webroot"
162
- "Remove Layout Patch","Remove Layout Patch"
163
- "Remove Mage Patch","Remove Mage Patch"
164
- "Remove all cached pages","Remove all cached pages"
165
- "Remove error:","Remove error:"
166
- "Removing M-Turbo directives from .htaccess error","Removing M-Turbo directives from .htaccess error"
167
- "Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted.","Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted."
168
- "Removing MTurbo directives from htaccess fail.","Removing MTurbo directives from htaccess fail."
169
- "Request path","Request path"
170
- "Save and Install","Save and Install"
171
- "Save configuration","Save configuration"
172
- "Script '%s' is not executable. Please change permission or define interpret for downloading script","Script '%s' is not executable. Please change permission or define interpret for downloading script"
173
- "Script '%s' is not executable. Please change permission","Script '%s' is not executable. Please change permission"
174
- "Script state","Script state"
175
- "Select All","Select All"
176
- "Select Visible","Select Visible"
177
- "Server name","Server name"
178
- "Setting 'allow_url_fopen' is disabled.","Setting 'allow_url_fopen' is disabled."
179
- "Size","Size"
180
- "Skip blocked page: ","Skip blocked page: "
181
- "Some .htaccess was not builded. Please check it on 'Website Configuration'","Some .htaccess was not builded. Please check it on 'Website Configuration'"
182
- "Some files were not deleted:<br />","Some files were not deleted:<br />"
183
- "Starting download pages, please wait...","Starting download pages, please wait..."
184
- "Status","Status"
185
- "Store View","Store View"
186
- "Synchronization complete","Synchronization complete"
187
- "Synchronization error","Synchronization error"
188
- "Synchronize","Synchronize"
189
- "The information in this tab has been changed.","The information in this tab has been changed."
190
- "The maximum number of htaccess backups","The maximum number of htaccess backups"
191
- "The minimum size to decision, the page is alright (bytes)","The minimum size to decision, the page is alright (bytes)"
192
- "This action completely removes M-Turbo from your Magento","This action completely removes M-Turbo from your Magento"
193
- "This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)","This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)"
194
- "This tab contains invalid data. Please solve the problem before saving.","This tab contains invalid data. Please solve the problem before saving."
195
- "Total %d records found","Total %d records found"
196
- "Total of %d page(s) were successfully purged.","Total of %d page(s) were successfully purged."
197
- "Total of %d record(s) were successfully deleted.","Total of %d record(s) were successfully deleted."
198
- "Total of %d record(s) were successfully updated.","Total of %d record(s) were successfully updated."
199
- "Turbocache directory was removed.","Turbocache directory was removed."
200
- "Turbopath directory","Turbopath directory"
201
- "Type","Type"
202
- "Unable to retrieve the contents of htaccess.","Unable to retrieve the contents of htaccess."
203
- "Unable to save installation file in '%s' directory.","Unable to save installation file in '%s' directory."
204
- "Unable to save installation file in temp directory.","Unable to save installation file in temp directory."
205
- "Unable to unpack install package.","Unable to unpack install package."
206
- "Unblock","Unblock"
207
- "Uninstall M-Turbo","Uninstall M-Turbo"
208
- "Uninstall MTurbo from PEAR error","Uninstall MTurbo from PEAR error"
209
- "Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. ","Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. "
210
- "Uninstall complete. Please refresh standard Magento Cache","Uninstall complete. Please refresh standard Magento Cache"
211
- "Uninstall db records error","Uninstall db records error"
212
- "Uninstall error","Uninstall error"
213
- "Uninstall","Uninstall"
214
- "Unselect All","Unselect All"
215
- "Unselect Visible","Unselect Visible"
216
- "Update URLs from Rewrite Table","Update URLs from Rewrite Table"
217
- "Upgrade complete, please refresh Magento system cache","Upgrade complete, please refresh Magento system cache"
218
- "Upgrade succesfull.","Upgrade succesfull."
219
- "Upgrade to Full Version","Upgrade to Full Version"
220
- "Url","Url"
221
- "Using CURL PHP extensions","Using CURL PHP extensions"
222
- "Using function 'file_get_contents'","Using function 'file_get_contents'"
223
- "Values separated by (',').","Values separated by (',')."
224
- "View","View"
225
- "Warning: Please don't close window during downloading pages","Warning: Please don't close window during downloading pages"
226
- "Websites Configuration","Websites Configuration"
227
- "Welcome text demo","<p>Welcome to M-Turbo Cache developed by Artio.
228
- To complete installation, we need to have entered the path to your directory where you want to store cached pages.
229
- This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
230
- which website you want to caches and which not. Each website you can also choose storeview.
231
- In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
232
- which does must not correspond to the base dir for the frontend.</p><p style=""color:red"">Note: In demo version you can enable only one website.</p>"
233
- "Welcome text","<p>Welcome to M-Turbo Cache developed by Artio.
234
- To complete installation, we need to have entered the path to your directory where you want to store cached pages.
235
- This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
236
- which website you want to caches and which not. Each website you can also choose storeview.
237
- In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
238
- which does must not correspond to the base dir for the frontend.</p>"
239
- "Your Download ID","Your Download ID"
240
- "Your download ID is not valid. I can't upgrade your MTurbo.","Your download ID is not valid. I can't upgrade your MTurbo."
241
- "Your first options","Your first options"
242
- "empty output","empty output"
243
- "items selected","items selected"
244
- "of %s pages","of %s pages"
245
- "per page","per page"
app/locale/es_ES/Artio_MTurbo.csv DELETED
@@ -1,247 +0,0 @@
1
- "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'. Exception %s"
2
- "'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'.","'Mage_Core_Model_Layout' was not patched. It is required for dynamic loaded blocks. Please see to 'Dynamic loaded blocks'."
3
- " Generate a list of the URLs and store it on the disk. This action will be executed if Automatic cache management is enabled.","Generar una lista de URLs y almacenarlas en el disco. Esta acción será ejecutada si la gestión automática de caché está habilitada."
4
- "(hours : minutes)","(horas : minutos)"
5
- "Actions","Acciones"
6
- "Add newly created categories to select","Añadir categorías recién creadas para seleccionar"
7
- "Added newly cms to select","Añadir nuevos cms para seleccionar"
8
- "All pages was succesfully removed","Las páginas fueron removidas exitosamente"
9
- "Apply Layout Patch","Aplicar parche layout"
10
- "Apply Mage Patch","Aplicar parche mágico"
11
- "Apply the patch only just in case you need to use Direct Access download method!","Aplicar el parche sólo en caso de necesitar hacer uso de método de descarga de acceso directo!"
12
- "Are you sure?","Está seguro?"
13
- "Automatic cache management","Administrados automático de caché"
14
- "Base directory","Directorio base"
15
- "Block","Bloquear"
16
- "Blocked page can't refresh","Página bloqueada no puede ser actualizada"
17
- "Blocked","Bloqueada"
18
- "CMS page","Página CMS"
19
- "CMS","CMS"
20
- "CURL is not installed","CURL no está instalada"
21
- "Cache Path","Ruta Cache"
22
- "Cache actions","Acciones Cache"
23
- "Cache all pages","Todas las páginas Cache"
24
- "Cache selected pages","Cache páginas seleccionadas"
25
- "Cache","Cache"
26
- "Cached","Almacenado en cache"
27
- "Cannot read Layout.php file","No es posible leer archivo Layout.php"
28
- "Cannot read Mage.php file","No es posible leer archivo Mage.php"
29
- "Cannot read patch file","No es posible leer archivo reparado"
30
- "Cart Block (sidebar)","cesta de bloques (Barra lateral)"
31
- "Categories","Categorías"
32
- "Category view","Vista de categorías"
33
- "Clearing turbocache directory error","Clearing turbocache directory error"
34
- "Company","Compañía"
35
- "Compare Block (sidebar)","Comparar bloque (Barra lateral)"
36
- "Configuration error","Error de configuración"
37
- "Configuration was successfully saved","Configuración fué exitosamente guardada"
38
- "Connection to server could not be established.","Conección al servidor no pudo ser establecida."
39
- "Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!","Copying js file failed! Dynamic blocks won't work for this theme. Copy 'mturbo.js' from default theme, please!"
40
- "Create cache for all pages (except blocked pages). Download progress can be monitored in a separate window. Please, do not close this window. Update of URLs from the Rewrite Table will be started automatically before caching is executed. Please, note that initial cache creation may take a long time (several hours). Time needed depends on the number of pages your site has.","Crear cache para todas las páginas (excepto páginas bloqueadas).Proceso de descarga puede ser monitoreado en otr ventana. Por favor, no cierre esta ventana. Actualizaciones de URLs desde la tabla de reescritura se pondrán en marcha automáticamente antes de que el almacenamento en caché sea ejecutado. Por favor, note que la creación inicial de caché debe tomar un tiempo largo (varias horas). El tiempo necesario depende del número de páginas que su sitio tenga."
41
- "Create connection over sockets","Crear una nueva conexión a través de sockets"
42
- "Creating directory '%s' fails","Creating directory '%s' fails"
43
- "DOMAIN DOES NOT MATCH","El Dominio no corresponde"
44
- "Date","Fecha"
45
- "Db records was removed.","Db records was removed."
46
- "Delete","Eliminar"
47
- "Direct access (created new instance Magento)","Acceso directo (crear una nueva instancia de magento)"
48
- "Download ID not set.","ID descargado no es establecido."
49
- "Download Test","Prueba de descarga"
50
- "Download method","método de descarga"
51
- "Downloaded <strong>%s</strong> pages","Descargar <strong>%s</strong> páginas"
52
- "Dynamic loaded blocks","Bloques dinámicos cargados"
53
- "ERROR_DOWNLOAD_ID_NOT_FOUND","El ID de descarga insertado no ha sido encontrado. Por favor, asegurese de haberlo ingresado correctamente. Si está seguro de que éste es correcto y válido, contacte <a href=""mailto:support@artio.net"">support@artio.net</a>."
54
- "ERROR_REG_CHECK_FAIL","Verifique la licencia fallida. Por favor, contacte <a href=""mailto:support@artio.net"">support@artio.net</a>."
55
- "Edited by MTurbo","Editado por MTurbo"
56
- "Enable automatic cache refresh","Permitir actualización automática de cache"
57
- "Enable automatic refresh after save CMS pages","Permitir actualización automática después de guardadar páginas CMS"
58
- "Enable automatic refresh for preview of categories of saved product","Permitir actualización automática para la vista previa de las categorías de productos guardados"
59
- "Enable automatic refresh for preview of saved category","Permitir actualización automática para categorías previamente guardadas"
60
- "Enable automatic refresh for previews of parents of categories of saved product","Permitir actualización automática para padres anteriores de categorías de productos guardados"
61
- "Enable automatic refresh for previews of parents of saved category","Permitir actualización automática de padres de categorías guardadas"
62
- "Enable making htaccess backup","Permitir hacer backup de htaccess"
63
- "Enable website","Permitir sitio web"
64
- "Enable/Disable Storeview","Habilitar/Deshabilitar ver tienda"
65
- "Export to:","Exportar a:"
66
- "Extension ZLIB is not loaded.","Extensión ZLIB no está cargada."
67
- "File .htaccess path","Archivo con ruta .htaccess"
68
- "File .htaccess state","Archivo con acceso .htaccess"
69
- "File Mage.php is not patched","Archivo mago.php no fue reparado"
70
- "Finished downloading.","Descarga finalizada."
71
- "Generate URL list for all websites","Generar lista de URLpara todos los sitios web"
72
- "Generate URL list for this website","Generar lista de URL para este sitio web"
73
- "Generate error","Generar error"
74
- "Generating complete for website '%s'. Wrote %d urls","Completar la generación de la página web '%s'. Escribió %d urls"
75
- "Generating for website '%s' fail.","Generar para sitio web fallido'%s'"
76
- "Htaccess for website '%s' was rebuilded.","Htaccess para sitio web '%s' fué reconstruido."
77
- "Htaccess does not exist.","Htaccess no existe."
78
- "Htaccess is not writable.","Htaccess no es reescribibe."
79
- "Htaccess model has not assigned website","Modelo Htaccess no ha asignado un sitio web"
80
- "Htaccess settings","Ajustes Htaccess"
81
- "I can't create '%s'. Please, check permission to create this directory.","No lo puedo crear '%s'. Por favor, verifique los permisos para crear este directorio."
82
- "I can't open/create urllist file '%s'.","No puedo abrir/crear archivo de lista de URL '%s'."
83
- "I can't write to urllist file '%s'","No puedo escribir un archivo lista de URL '%s'"
84
- "ID","ID"
85
- "INFO_UPGRADE_LICENSE_EXPIRED","Su licencia está vencida. Por favor, visite <a href=http://www.artio.net/magento-extensions/m-turbo-accelerator"">artio.net</a> para prolongarla"
86
- "INFO_UPGRADE_NOT_ACTIVE","La licencia no ha sido activada aún. Por favor, intente de nuevo o contacte support@artio.net."
87
- "Inserting MTurbo directives fail. Htaccess template not found.","Inserción de las directivas MTurbo fallidas. Plantilla Htaccess no encontrada."
88
- "Inserting MTurbo directives into htaccess fail.","Inserción de directivas MTurbo en htaccess fallido."
89
- "Install error","Instalación fallido"
90
- "Installation complete. Welcome!!!","Instalación completa. Bienvenido!!!"
91
- "Installation succesfull. Now will be your Magento faster than other.","Instalación exitosa. Ahora usted tendrá su Magento más rápido que antes."
92
- "Last refresh","última actualización"
93
- "Launching this action will update cached URLs based on current values from the Rewrite Table. We recommend runing this action after major modifications to the products or categories.","Lanzando esta acción se actualizarán URLs en cache basado en los valores actuales desde la tabla reescribible. Recomendamos correr esta acción después de modificaciones importantes a los productos o categorías."
94
- "Layout names of dynamic loaded blocks","Disponer nombres de bloques de carga dinámica"
95
- "Layout patch","Layout parche"
96
- "Layout state","Layout estado"
97
- "M-Turbo Cache Management","Manejo de M-Turbo Cache"
98
- "M-Turbo Management - Downloading pages","Manejo de M-Turbo - Descargando páginas"
99
- "M-Turbo Management","Manejo de M-Turbo"
100
- "M-Turbo installation problem","Problema de instalación de M-Turbo"
101
- "M-Turbo installation succesfull. Please see into System/M-Turbo Management","Instalación exitosa de M-Turbo. Por favor revisar en el sistema de administración de /M-Turbo"
102
- "Mage patch uninstall error","Desinstalar parche Mage error"
103
- "Magento Turbo Cache Management","Administración de cage Magento Turbo"
104
- "Main Configuration","Configuración principal"
105
- "Menu","Menu"
106
- "My Cart (%s item)","Mi carrito (%s elemento)"
107
- "My Cart (%s items)","Mi carrito (%s elemento)"
108
- "My Cart","Mi carrito"
109
- "Name","Nombre"
110
- "Next page","Siguiénte página"
111
- "No","No"
112
- "Not activated yet","No activado aún"
113
- "Not blocked","No bloqueado"
114
- "Not cached","Sin cache"
115
- "OK","OK"
116
- "Other","Otro"
117
- "Page downloaded: ","Página descargada: "
118
- "Page was succesfull download. Now is cached.","La Página fué exitosamente descargada. Es de caché ahora."
119
- "Page was succesfull purge from disk.","La página fué exitosamente purgada del disco."
120
- "Page","Página"
121
- "Patch already removed","El parche ya está eliminado"
122
- "Patch already used","El parche ya está usado"
123
- "Patch was applied.","El parche fué aplicado."
124
- "Patch was removed.","El parche fué removido."
125
- "Path '%s' is not correct.","Parche '%s' no es correcto."
126
- "Path '%s' is not usable. This path is used by system Magento, please enter other path.","Esta ruta '%s' no es permitida. Esta ruta es usada por el sistema Magento, por favor ingrese otra ruta."
127
- "Permission denied. Cannot write to Layout.php","Permiso denegado. No puede escribir a Layout.php"
128
- "Permission denied. Cannot write to Mage.php","Permiso denegado. No puede escribir a Mage.php"
129
- "Please select item(s)","Please select item(s)"
130
- "Poll Block (sidebar)","Sondeo de bloques (barra lateral)"
131
- "Preview fail.","Previa no."
132
- "Preview","Anterior"
133
- "Previous page","Página anterior"
134
- "Processed <strong>%s%% %s/%d</strong> pages","Procesado <strong>%s%% %s/%d</strong> páginas"
135
- "Product detail","Product detail"
136
- "Products","Products"
137
- "Purge all cached pages and relevant directories located on the disk. No caching will be done until cache is recreated.","Limpiar todas las páginas de cache y directorios relevantes localizados en el disco. Ningún almacenamiento en cache será hecho hasta que cache se vuelva a crear."
138
- "Purge from disk","Limpiar desde disco"
139
- "Purge","Limpiar"
140
- "Purging page fail.","Limpieza de página fallido."
141
- "Rebuild .htaccess for all websites","Reconstruir .htaccess para todos los sitios Web"
142
- "Rebuild .htaccess for all websites.","Reconstruir .htaccess para todos los sitios Web."
143
- "Rebuild .htaccess for this website","Reconstruir .htaccess para todos los sitios Web"
144
- "Rebuild htaccess for website '%s' fail.","Reconstrucción htaccess para sitios web '%s' fallida."
145
- "Record was successfully updated.","Registro fué actualizado exitosamente."
146
- "Registration","Registro"
147
- "Relative path from webroot","Ruta relativa de Webroot"
148
- "Remove Layout Patch","Remover parche layout"
149
- "Remove Mage Patch","Remover parche mago"
150
- "Remove all cached pages","Remover todas las páginas de cache"
151
- "Remove error:","Remover error:"
152
- "Removing M-Turbo directives from .htaccess error","Remover directivas de MTurbo faillido"
153
- "Removing MTurbo directives fail. Terminating MTurbo directive not found. The htaccess may be corrupted.","Remover directivas de MTurbo faillido. Terminación de la Directiva MTurbo que no se encuentran. El htaccess puede estar dañado."
154
- "Removing MTurbo directives from htaccess fail.","Removiendo directavias MTurbo del htaccess faillido."
155
- "Request path","Solicitud de ruta"
156
- "Save and Install","Guardar e instalar"
157
- "Save configuration","Guardar configuración"
158
- "Script state","Script estado"
159
- "Select All","Seleccionar todo"
160
- "Select Visible","Seleccione el visible"
161
- "Server name","Nombre del servidor"
162
- "Setting 'allow_url_fopen' is disabled.","Ajuste 'Permitir_url_fabierta' está deshabilitado."
163
- "Size","Tamaño"
164
- "Skip blocked page: ","Saltar páginas bloqueadas: "
165
- "Starting download pages, please wait...","Iniciar descarga de páginas, por favor espere..."
166
- "Status","Estado"
167
- "Store View","Ver tienda"
168
- "Synchronization complete","Sincronización completa"
169
- "Synchronization error","Error en sincronización"
170
- "Synchronize","Sincronizar"
171
- "The information in this tab has been changed.","La información contenida en esta ficha ha cambiado."
172
- "The maximum number of htaccess backups","El máximo número de htaccess backups"
173
- "The minimum size to decision, the page is alright (bytes)","Tamaño mínimo de la decisión, la página está bien (bytes)"
174
- "This action completely removes M-Turbo from your Magento","Esta acción remueve completamente M-Turbo de su Magento"
175
- "This tab contains invalid data. Please solve the problem before saving.","This tab contains invalid data. Por favor resuelva este problema antes de guardar."
176
- "Total %d records found","Total %d de registros encontrados"
177
- "Total of %d page(s) were successfully purged.","Total de %d páginas(s) fueron exitosamente limpiadas."
178
- "Total of %d record(s) were successfully deleted.","Total de %d registro(s)fueron exitosamente eliminadas."
179
- "Total of %d record(s) were successfully updated.","Total de %d registro(s)fueron exitosamente actualizados."
180
- "Turbopath directory","directorio Turbopath"
181
- "Type","Tipo"
182
- "Unable to retrieve the contents of htaccess.","Imposible recuperar el contenido de htaccess."
183
- "Unable to save installation file in %s directory.","Imposible guardar archivo de instalación en directorio %s."
184
- "Unable to save installation file in temp directory.","Imposible guardar archivo de instalación en directorio temporal."
185
- "Unable to unpack install package.","Incapaz de descomprimir el paquete de instalación."
186
- "Unblock","Desbloquear"
187
- "Uninstall M-Turbo","Desinstalar M-Turbo"
188
- "Uninstall complete. Please refresh standard Magento Cache","Desinstalar M-Turbo completa."
189
- "Uninstall MTurbo from PEAR error","Desinstalar error"
190
- "Uninstall error","Desinstalar error"
191
- "Uninstall","Desinstalar"
192
- "Unselect All","Cancelar la selección de todos"
193
- "Unselect Visible","Cancelar la selección visible"
194
- "Update URLs from Rewrite Table","Actualizar URLs de la tabla reescribible"
195
- "Upgrade complete, please refresh Magento system cache","Actualización completa, por favor actualice el sistema de cache Magento"
196
- "Upgrade to Full Version","Actualizar versión completa"
197
- "Url","Url"
198
- "Using CURL PHP extensions","Usar extensiones CURL PHP"
199
- "Using function 'file_get_contents'","Usar función 'file_get_contents'"
200
- "Values separated by (',').","Valores separados por (',')."
201
- "View","Vista"
202
- "Warning: Please don't close window during downloading pages","Advertecia: Por favor no cierre la ventana mientras descarga páginas"
203
- "Websites Configuration","Configuración de sitios Web"
204
- "Welcome text demo","<p>Welcome to M-Turbo Cache developed by Artio.
205
- To complete installation, we need to have entered the path to your directory where you want to store cached pages.
206
- This path is then entered into a .htaccess file, which is a function of the components necessary.</p><p>More, you can choose
207
- which website you want to caches and which not. Each website you can also choose storeview.
208
- In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
209
- which does must not correspond to the base dir for the frontend.</p><p style=""color:red"">Note: In demo version you can enable only one website.</p>"
210
- In addition, please fill out the base directory of each website. In the default settings is set base dir for the administration,
211
- which does must not correspond to the base dir for the frontend.</p>"
212
- "Welcome text","<p>Bienvenido a M-Turbo Cache desarrollado por Artio.
213
- Para completar la instalación, necesitamos ingresar la ruta al directorio donde usted desea almacenar las páginas en cache.
214
- Esta ruta es entonces ingresada a un archivo .htaccess, el cual es una función de los componentes necesarios.</p><p>Además, usted puede elegir
215
- cual web side quiere en cache y cual no. De cada sitio Web usted puede también elegir vista de tienda.
216
- Adicionalmente, por favor rellene el directorio base de cada sitio web. En las configuraciones predeterminadas está establecido el directorio base para la administración,
217
- el cual no debe corresponder con el directorio base para la interfaz.</p>"
218
- "Your Download ID","Su ID de descarga"
219
- "Your download ID is not valid. I can't upgrade your MTurbo.","Su ID de descarga no es váido. No se puede actualizar su MTurbo."
220
- "Your first options","Sus primeras opciones"
221
- "empty output","Salida vacía"
222
- "items selected","Elementos seleccionados"
223
- "of %s pages","de %s páginas"
224
- "per page","por página"
225
- "Enable automatic refresh for parent of saved product (configurable, grouped, bundled)","Enable automatic refresh for parent of saved product (configurable, grouped, bundled)"
226
- "File '%s' is not writeable, please change permission.","File '%s' is not writeable, please change permission."
227
- "I can't find function addBlock","I can't find function addBlock"
228
- "If you not see newly added category or CMS, then push the 'Synchronize' button.","If you not see newly added category or CMS, then push the 'Synchronize' button."
229
- "Interpret for downloading script","Interpret for downloading script"
230
- "JavaScript Watcher (this control watches existing javascript in all your theme packages)","JavaScript Watcher (this control watches existing javascript in all your theme packages)"
231
- "Layout patch uninstall error","Layout patch uninstall error"
232
- "Layout patch was removed.","Layout patch was removed."
233
- "M-Turbo directives from .htaccess was removed.","M-Turbo directives from .htaccess was removed."
234
- "M-Turbo upgrade succesfull. Please see into System/M-Turbo Management","M-Turbo upgrade succesfull. Please see into System/M-Turbo Management"
235
- "M-Turbo upgrading problem","M-Turbo upgrading problem"
236
- "Mage patch was removed.","Mage patch was removed."
237
- "Model '%s' is not writeable. Please change permission to write for patch.","Model '%s' is not writeable. Please change permission to write for patch."
238
- "Page is too small or 404","Page is too small or 404"
239
- "Script '%s' is not executable. Please change permission or define interpret for downloading script","Script '%s' is not executable. Please change permission or define interpret for downloading script"
240
- "Script '%s' is not executable. Please change permission","Script '%s' is not executable. Please change permission"
241
- "Some .htaccess was not builded. Please check it on 'Website Configuration'","Some .htaccess was not builded. Please check it on 'Website Configuration'"
242
- "Some files were not deleted:<br />","Some files were not deleted:<br />"
243
- "This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)","This patch is required for dynamic loaded blocks. (Patched file: app/code/core/Mage/Core/Model/Layout.php)"
244
- "Turbocache directory was removed.","Turbocache directory was removed."
245
- "Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. ","Uninstall PEAR package failed. Probably you have not permission to remove files. Please, go to System/Magento Connect Manager and there finish uinstall of MTurbo. More information about uninstall of MTurbo you can get in file var/uninstallmturbo.log. "
246
- "Uninstall db records error","Uninstall db records error"
247
- "Upgrade succesfull.","Upgrade succesfull."
package.xml CHANGED
@@ -1,22 +1,22 @@
1
<?xml version="1.0"?>
2
<package>
3
<name>MTurbo</name>
4
- <version>1.2.2</version>
5
<stability>stable</stability>
6
- <license uri="http://www.artio.net/m-turbo/license">Copyright 2010-11, ARTIO s.r.o. All rights reserved.</license>
7
<channel>community</channel>
8
<extends/>
9
<summary>MAGENTO E-COMMERCE ACCELERATOR</summary>
10
- <description>M-Turbo is a seamlessy working caching component for Magento e-store&#xD;
11
- that provides fast response to shoppers, improves performance of the&#xD;
12
- store and saves significant ammount of server resources. Integral part&#xD;
13
of Magento site optimization!</description>
14
- <notes>Visit product homepage at:&#xD;
15
http://www.artio.net/magento-extensions/m-turbo-accelerator</notes>
16
<authors><author><name>Michal Unzeitig</name><user>auto-converted</user><email>michal.unzeitig@artio.net</email></author><author><name>Ji&#x159;&#xED; Chmiel</name><user>auto-converted</user><email>jiri.chmiel@artio.net</email></author></authors>
17
- <date>2011-09-30</date>
18
- <time>14:17:50</time>
19
- <contents><target name="magelocal"><dir name="Artio"><dir name="MTurbo"><dir name="Block"><dir name="Adminhtml"><dir name="Edit"><dir name="Tab"><file name="Abstract.php" hash="16a37f270112b175796bb5af02eea84d"/><file name="Actions.php" hash="957345fc43a69aa0fcdeb32e5448ca66"/><file name="Category.php" hash="3eb3d4924ab7d4e7978198d8caf31a30"/><file name="Cms.php" hash="cee56f9271b29ff645e84105c831fd6c"/><file name="Dynamic.php" hash="99fbb6258ef13fdf881e341d7dc32c56"/><file name="License.php" hash="3c405988f5bfc0581b5a7fe1b6204055"/><file name="Main.php" hash="6eca1eae86c0cfabe4d5c51147ec4841"/><file name="Product.php" hash="38d4025873e1e25c4d9289da20178096"/><file name="Uninstall.php" hash="fde35018cd407e8dd2cc7d91b4aafa3a"/><file name="Url.php" hash="f2366956b47613a036aefdb01494cb16"/><file name="Website.php" hash="c02792f23188e0d4c786f8285d59b3e2"/></dir><file name="Form.php" hash="9ba7b56533f6c7f8f8b3a6e1a71fe6ad"/><file name="Tabs.php" hash="a82341a6c981ba91b69774c81a7ad28e"/></dir><dir name="Welcome"><file name="Form.php" hash="10c5680f4ee3768054756413aea6ce44"/></dir><file name="Mturbo.php" hash="4c6758e028e608ce93847a55a1ce27e1"/><file name="Run.php" hash="e6ff24da20d057de3b1e7147a209b395"/><file name="Welcome.php" hash="5acab4515cf35c30bf182eb0529855ad"/></dir><dir name="Checkout"><dir name="Cart"><dir name="Item"><file name="Renderer.php" hash="b93f63e2b1940a889534854ba3fec31c"/></dir></dir></dir><dir name="Data"><dir name="Form"><dir name="Element"><file name="Button.php" hash="c61ec7e27c62364c21e6d893f875ad93"/><file name="CategoryTree.php" hash="128d2bd67969552bb3f413975fc6313a"/><file name="CmsTree.php" hash="db33490dd6b51e596309ef4e96baf55e"/><file name="Html.php" hash="83a40987e47c142e6be58f311d29276d"/><file name="NoEscLabel.php" hash="1ce0fca5efc5e6afcbb96cf818ff7fef"/><file name="SelectDownloadMethod.php" hash="ca4b9117ecc129a08c08f810bed063d5"/><file name="Time.php" hash="c6617317308bd74c9714ccee2ac870bb"/></dir></dir><dir name="Grid"><dir name="Column"><file name="Blocked.php" hash="4e6c21fee2c3d8fc26198471ef79b041"/><file name="ColorOption.php" hash="9efec8edc0a724b1840acfee3333bcc1"/><file name="FileSize.php" hash="b01fca106ea04f0a32d5ead838dd7446"/><file name="SwitchAction.php" hash="35b90030144a8b42d9696f5be0694a20"/></dir></dir></dir><file name="Ajax.php" hash="911e58fe1f3f0a09458bf2200b078fa2"/></dir><dir name="Helper"><dir name="Catalog"><dir name="Product"><file name="Compare.php" hash="969d8a7f3faa2ab54ce48ff0c0e0754b"/></dir></dir><file name="Data.php" hash="7c045fbda491e0fee61c0bf4b81cddea"/><file name="Downloader.php" hash="e703b220f37a29c706e04214e87d90ed"/><file name="Functions.php" hash="14d3580346eaf8aa84433d1b5bb1ec49"/><file name="Info.php" hash="b22f8c7ce96fe72fad4b9d68b9233b11"/><file name="Website.php" hash="daa6610e06be6a66dad11a5f58989611"/></dir><dir name="Model"><dir name="Config"><file name="CmsTransformer.php" hash="a5fca7b305322112e5bddd247ec20074"/><file name="DynamicTransformer.php" hash="c7a66182ebd4dfb3b0a123b3f3dbbddf"/><file name="Website.php" hash="42c7ca045d27c49581569648c5f080be"/><file name="WebsiteTransformer.php" hash="6400c844114316207e18b670859fae1b"/></dir><dir name="DownloadMethods"><file name="Abstract.php" hash="ddac44cb6f0548c0cd303bb1fa3e3e1b"/><file name="Curl.php" hash="cdcd9d20402af9e2a8f5e1a3f713404b"/><file name="Direct.php" hash="980a50b03c9f91e4e896d5757c80c555"/><file name="Filegetcontents.php" hash="9c6c97fc34ea57cd8479cc042a990990"/><file name="Socket.php" hash="7db1aeb2142f400847f4684e2a2b35a2"/></dir><dir name="Mturbo"><file name="Event.php" hash="37a326906f9388f0df14ff181d5c3724"/><file name="File.php" hash="8c28b29ab6b92173babda4c753b6d3c9"/></dir><dir name="Mysql4"><dir name="Mturbo"><file name="Collection.php" hash="c8e06d986966455cd28b37a93b78a23d"/></dir><file name="Mturbo.php" hash="17a258f73ea138481a5727e7b9d383fc"/></dir><dir name="htaccess"><file name="htaccess.txt" hash="e5650ac65b3679a1cbea26ea61b2ad0b"/><file name="htaccessside.txt" hash="7d55f4bb772128b1f8783b319344d17c"/><file name="htaccessstore.txt" hash="bb24289ef3c6e00cdb03bd6abba753d2"/><file name="htaccesswebsite.txt" hash="babc2f09afde8878f4670924e1238376"/></dir><dir name="patches"><file name="layout.txt" hash="4d0055e6119d297fd78deb4c576ae9f0"/><file name="mage.txt" hash="0e2ef3ed32b7041f518f162745812023"/></dir><dir name="scripts"><file name="wgetlib.so" hash="3c0089f912386ac6b5f9e6bb32f996f1"/><file name="wgettrans.so" hash="e4f414b0f796051518b6d951133c856b"/></dir><file name="Config.php" hash="b7cbdef876e859054f50f09d9f7a3ae4"/><file name="DownloadMethodsFactory.php" hash="1bd5932612148116ee745c6bec68edaa"/><file name="Htaccess.php" hash="14364ad2d9a43fe221dd20234b745c1a"/><file name="JsPatch.php" hash="5effc3f6bf8b4c420dd8aee0cef2bdd4"/><file name="LayoutPatch.php" hash="6f7a4fff8f6849dfe43002e31fa9f179"/><file name="Mturbo.php" hash="08f738e50519a807f32b5cff15117acb"/><file name="Observer.php" hash="7f50cd1b1d8fad8308846027a3b0cd2a"/><file name="Patch.php" hash="40e2e1ae19ae61c66b8f8b49326f0928"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="CheckController.php" hash="78c05c96f294f009f35dc8b88537162c"/><file name="MturboController.php" hash="8efab03d9703067dae00ee056440e483"/></dir><file name="AdminhtmlController.php" hash="cb9981505f756dd9658b44b93b07e57c"/><file name="IndexController.php" hash="ee200641e72739996809461740788bca"/></dir><dir name="etc"><file name="config.xml" hash="3645a833032a043e81fdbc161429cce7"/></dir><dir name="sql"><dir name="mturbo_setup"><file name="mysql4-install-1.2.1.php" hash="5c756a617300d923a4bd09e0c5a4fb70"/><file name="mysql4-upgrade-1.0.0-1.2.0.php" hash="5c756a617300d923a4bd09e0c5a4fb70"/><file name="mysql4-upgrade-1.2.0-1.2.1.php" hash="d768025b9a753c77ad124d9d90edb170"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mturbo.xml" hash="6e20ef84ceeac5a82dc7c7ce6897f12d"/></dir><dir name="template"><dir name="mturbo"><dir name="preview"><file name="tree.phtml" hash="558e2da8b9c5584a94748116fd8249d0"/></dir><file name="demo.phtml" hash="da2b65990f1221d981b1c850f292dae6"/><file name="grid.phtml" hash="f11cea678bbc7230028cf5a870479ac8"/><file name="massaction.phtml" hash="c4ca58cbd05d564129d3c39d452c783e"/><file name="tabs.phtml" hash="1015f2e05a41bb7751b11036e48cbd9f"/><file name="version.phtml" hash="3f7c9b1d76d9f92050fde76c1f869fb4"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="mturbo.xml" hash="679c071acb59fa8a28251acd25738a9b"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Artio_MTurbo.xml" hash="4de5464bc12f3c0702d2c36931bda64d"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Artio_MTurbo.csv" hash="7d2c0ce261450f457be5ab6f61dc5243"/></dir><dir name="es_ES"><file name="Artio_MTurbo.csv" hash="3ff15deb0ae0b1251a3670699453665d"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><file name="mturbo.js" hash="a5dcd5db6565b2b01753f4d05d9e6e73"/></dir></dir></dir><dir name="default"><dir name="default"><dir name="js"><file name="mturbo.js" hash="a5dcd5db6565b2b01753f4d05d9e6e73"/></dir></dir></dir></dir></target></contents>
20
<compatible/>
21
<dependencies/>
22
</package>
1
<?xml version="1.0"?>
2
<package>
3
<name>MTurbo</name>
4
+ <version>1.2.6</version>
5
<stability>stable</stability>
6
+ <license uri="http://www.artio.net/m-turbo/license">Copyright 2010-12, ARTIO s.r.o. All rights reserved.</license>
7
<channel>community</channel>
8
<extends/>
9
<summary>MAGENTO E-COMMERCE ACCELERATOR</summary>
10
+ <description>M-Turbo is a seamlessy working caching component for Magento e-store
11
+ that provides fast response to shoppers, improves performance of the
12
+ store and saves significant ammount of server resources. Integral part
13
of Magento site optimization!</description>
14
+ <notes>Visit product homepage at:
15
http://www.artio.net/magento-extensions/m-turbo-accelerator</notes>
16
<authors><author><name>Michal Unzeitig</name><user>auto-converted</user><email>michal.unzeitig@artio.net</email></author><author><name>Ji&#x159;&#xED; Chmiel</name><user>auto-converted</user><email>jiri.chmiel@artio.net</email></author></authors>
17
+ <date>2012-02-02</date>
18
+ <time>15:27:11</time>
19
+ <contents><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="mturbo.xml" hash="679c071acb59fa8a28251acd25738a9b"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mturbo.xml" hash="6e20ef84ceeac5a82dc7c7ce6897f12d"/></dir><dir name="template"><dir name="mturbo"><dir name="preview"><file name="tree.phtml" hash="558e2da8b9c5584a94748116fd8249d0"/></dir><file name="demo.phtml" hash="da2b65990f1221d981b1c850f292dae6"/><file name="massaction.phtml" hash="c4ca58cbd05d564129d3c39d452c783e"/><file name="grid.phtml" hash="f11cea678bbc7230028cf5a870479ac8"/><file name="tabs.phtml" hash="1015f2e05a41bb7751b11036e48cbd9f"/><file name="version.phtml" hash="b49869bbb96e15ce56a35df0ae4ff48b"/></dir></dir></dir></dir></dir></target><target name="magelocal"><dir name="Artio"><dir name="MTurbo"><dir name="controllers"><dir name="Adminhtml"><file name="CheckController.php" hash="78c05c96f294f009f35dc8b88537162c"/><file name="MturboController.php" hash="af4fe96015a7dbecbeeaffee59cadbf8"/></dir><file name="IndexController.php" hash="bf8e532b3b94dc9fa762a5d1c2505e5a"/><file name="AdminhtmlController.php" hash="cb9981505f756dd9658b44b93b07e57c"/></dir><dir name="Helper"><dir name="Catalog"><dir name="Product"><file name="Compare.php" hash="969d8a7f3faa2ab54ce48ff0c0e0754b"/></dir></dir><file name="Downloader.php" hash="e703b220f37a29c706e04214e87d90ed"/><file name="Website.php" hash="600e2c272f1d5cfb5ae63ba092cf864d"/><file name="Data.php" hash="24b541ce66879d2b0a01783665a74ce7"/><file name="Urlparams.php" hash="5b654502487ed2a669cce941181b4c21"/><file name="Info.php" hash="d2abba67ea46c20ab1213c3c9a9ad444"/><file name="Functions.php" hash="14d3580346eaf8aa84433d1b5bb1ec49"/></dir><dir name="sql"><dir name="mturbo_setup"><file name="mysql4-upgrade-1.0.0-1.2.0.php" hash="8f7a4af167a162dffa1cadf4a97a7c79"/><file name="mysql4-install-1.2.1.php" hash="5c756a617300d923a4bd09e0c5a4fb70"/><file name="mysql4-upgrade-1.2.0-1.2.1.php" hash="560c90c3572b91c3ce6229430bf74d96"/></dir></dir><dir name="Model"><dir name="DownloadMethods"><file name="Direct.php" hash="980a50b03c9f91e4e896d5757c80c555"/><file name="Socket.php" hash="7db1aeb2142f400847f4684e2a2b35a2"/><file name="Filegetcontents.php" hash="9c6c97fc34ea57cd8479cc042a990990"/><file name="Curl.php" hash="cdcd9d20402af9e2a8f5e1a3f713404b"/><file name="Abstract.php" hash="ddac44cb6f0548c0cd303bb1fa3e3e1b"/></dir><dir name="Mysql4"><dir name="Mturbo"><file name="Collection.php" hash="c8e06d986966455cd28b37a93b78a23d"/></dir><file name="Mturbo.php" hash="17a258f73ea138481a5727e7b9d383fc"/></dir><dir name="htaccess"><file name="htaccess.txt" hash="e5650ac65b3679a1cbea26ea61b2ad0b"/><file name="htaccessside.txt" hash="7d55f4bb772128b1f8783b319344d17c"/><file name="htaccessstore.txt" hash="bb24289ef3c6e00cdb03bd6abba753d2"/><file name="htaccesswebsite.txt" hash="babc2f09afde8878f4670924e1238376"/></dir><dir name="scripts"><file name="wgetlib.so" hash="5ebcb08067da723d67d25d27b98f866b"/><file name="wgettrans.so" hash="e4f414b0f796051518b6d951133c856b"/></dir><dir name="Config"><file name="Website.php" hash="42c7ca045d27c49581569648c5f080be"/><file name="CmsTransformer.php" hash="a5fca7b305322112e5bddd247ec20074"/><file name="WebsiteTransformer.php" hash="6400c844114316207e18b670859fae1b"/><file name="DynamicTransformer.php" hash="c7a66182ebd4dfb3b0a123b3f3dbbddf"/></dir><dir name="Mturbo"><file name="File.php" hash="15d4f20e2dcc3124e3a83562dcfdc599"/><file name="Event.php" hash="71a590a8c3adf0dad196a669fdc14997"/></dir><dir name="patches"><file name="layout.txt" hash="4d0055e6119d297fd78deb4c576ae9f0"/><file name="mage.txt" hash="0e2ef3ed32b7041f518f162745812023"/></dir><file name="DownloadMethodsFactory.php" hash="1bd5932612148116ee745c6bec68edaa"/><file name="Patch.php" hash="40e2e1ae19ae61c66b8f8b49326f0928"/><file name="Mturbo.php" hash="f1bc9eeab86c0ba26eb364157ed5bbb9"/><file name="Config.php" hash="b7cbdef876e859054f50f09d9f7a3ae4"/><file name="Observer.php" hash="2aa23b2e04835f2d5afef5079b67cf31"/><file name="LayoutPatch.php" hash="6f7a4fff8f6849dfe43002e31fa9f179"/><file name="Htaccess.php" hash="f232135a137ac3db7a19fc459f349bf1"/><file name="JsPatch.php" hash="5effc3f6bf8b4c420dd8aee0cef2bdd4"/></dir><dir name="etc"><file name="config.xml" hash="417d71f84ed0607adbcf3946112597f0"/></dir><dir name="Block"><dir name="Checkout"><dir name="Cart"><dir name="Item"><file name="Renderer.php" hash="b93f63e2b1940a889534854ba3fec31c"/></dir></dir></dir><dir name="Data"><dir name="Form"><dir name="Element"><file name="NoEscLabel.php" hash="1ce0fca5efc5e6afcbb96cf818ff7fef"/><file name="CategoryTree.php" hash="128d2bd67969552bb3f413975fc6313a"/><file name="Button.php" hash="c61ec7e27c62364c21e6d893f875ad93"/><file name="Html.php" hash="83a40987e47c142e6be58f311d29276d"/><file name="Time.php" hash="c6617317308bd74c9714ccee2ac870bb"/><file name="CmsTree.php" hash="b9d665e7a6d2f1c4f621aebb5ead4d38"/><file name="SelectDownloadMethod.php" hash="ca4b9117ecc129a08c08f810bed063d5"/></dir></dir><dir name="Grid"><dir name="Column"><file name="FileSize.php" hash="b01fca106ea04f0a32d5ead838dd7446"/><file name="Blocked.php" hash="4e6c21fee2c3d8fc26198471ef79b041"/><file name="SwitchAction.php" hash="35b90030144a8b42d9696f5be0694a20"/><file name="ColorOption.php" hash="9efec8edc0a724b1840acfee3333bcc1"/></dir></dir></dir><dir name="Adminhtml"><dir name="Edit"><dir name="Tab"><file name="Website.php" hash="c02792f23188e0d4c786f8285d59b3e2"/><file name="Actions.php" hash="957345fc43a69aa0fcdeb32e5448ca66"/><file name="License.php" hash="3c405988f5bfc0581b5a7fe1b6204055"/><file name="Main.php" hash="6eca1eae86c0cfabe4d5c51147ec4841"/><file name="Cms.php" hash="cee56f9271b29ff645e84105c831fd6c"/><file name="Product.php" hash="38d4025873e1e25c4d9289da20178096"/><file name="Dynamic.php" hash="99fbb6258ef13fdf881e341d7dc32c56"/><file name="Category.php" hash="3eb3d4924ab7d4e7978198d8caf31a30"/><file name="Abstract.php" hash="16a37f270112b175796bb5af02eea84d"/><file name="Url.php" hash="a809a94e7317b0685d5497a38c1650b4"/><file name="Uninstall.php" hash="fde35018cd407e8dd2cc7d91b4aafa3a"/></dir><file name="Form.php" hash="9ba7b56533f6c7f8f8b3a6e1a71fe6ad"/><file name="Tabs.php" hash="a82341a6c981ba91b69774c81a7ad28e"/></dir><dir name="Welcome"><file name="Form.php" hash="10c5680f4ee3768054756413aea6ce44"/></dir><file name="Mturbo.php" hash="4c6758e028e608ce93847a55a1ce27e1"/><file name="Run.php" hash="e6ff24da20d057de3b1e7147a209b395"/><file name="Welcome.php" hash="5acab4515cf35c30bf182eb0529855ad"/></dir><file name="Ajax.php" hash="911e58fe1f3f0a09458bf2200b078fa2"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Artio_MTurbo.xml" hash="4de5464bc12f3c0702d2c36931bda64d"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="js"><file name="mturbo.js" hash="a5dcd5db6565b2b01753f4d05d9e6e73"/></dir></dir></dir><dir name="base"><dir name="default"><dir name="js"><file name="mturbo.js" hash="a5dcd5db6565b2b01753f4d05d9e6e73"/></dir></dir></dir></dir></target></contents>
20
<compatible/>
21
<dependencies/>
22
</package>