Index: branches/5.3.x/core/kernel/Console/ConsoleIO.php
===================================================================
--- branches/5.3.x/core/kernel/Console/ConsoleIO.php	(nonexistent)
+++ branches/5.3.x/core/kernel/Console/ConsoleIO.php	(revision 16282)
@@ -0,0 +1,230 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Portal
+* @copyright	Copyright (C) 1997 - 2015 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+namespace InPortal\Core\kernel\Console;
+
+
+use Symfony\Component\Console\Helper\HelperSet;
+use Symfony\Component\Console\Helper\ProgressBar;
+use Symfony\Component\Console\Helper\QuestionHelper;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ChoiceQuestion;
+use Symfony\Component\Console\Question\ConfirmationQuestion;
+
+defined('FULL_PATH') or die('restricted access!');
+
+class ConsoleIO
+{
+
+	/**
+	 * Input.
+	 *
+	 * @var InputInterface
+	 */
+	private $_input;
+
+	/**
+	 * Output.
+	 *
+	 * @var OutputInterface
+	 */
+	private $_output;
+
+	/**
+	 * Helper set.
+	 *
+	 * @var HelperSet
+	 */
+	private $_helperSet;
+
+	/**
+	 * Creates class instance.
+	 *
+	 * @param InputInterface  $input      Input.
+	 * @param OutputInterface $output     Output.
+	 * @param HelperSet       $helper_set Helper set.
+	 */
+	public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helper_set)
+	{
+		$this->_input = $input;
+		$this->_output = $output;
+		$this->_helperSet = $helper_set;
+	}
+
+	/**
+	 * Gets argument by name.
+	 *
+	 * @param string $name The name of the argument.
+	 *
+	 * @return mixed
+	 */
+	public function getArgument($name)
+	{
+		return $this->_input->getArgument($name);
+	}
+
+	/**
+	 * Gets an option by name.
+	 *
+	 * @param string $name The name of the option.
+	 *
+	 * @return mixed
+	 */
+	public function getOption($name)
+	{
+		return $this->_input->getOption($name);
+	}
+
+	/**
+	 * Is this input means interactive?
+	 *
+	 * @return boolean
+	 */
+	public function isInteractive()
+	{
+		return $this->_input->isInteractive();
+	}
+
+	/**
+	 * Gets the decorated flag.
+	 *
+	 * @return boolean true if the output will decorate messages, false otherwise
+	 */
+	public function isDecorated()
+	{
+		return $this->_output->isDecorated();
+	}
+
+	/**
+	 * Determines if verbose output is being requested.
+	 *
+	 * @return boolean
+	 */
+	public function isVerbose()
+	{
+		return $this->_output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE;
+	}
+
+	/**
+	 * Determines if very verbose output is being requested.
+	 *
+	 * @return boolean
+	 */
+	public function isVeryVerbose()
+	{
+		return $this->_output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE;
+	}
+
+	/**
+	 * Determines if debug output is being requested.
+	 *
+	 * @return boolean
+	 */
+	public function isDebug()
+	{
+		return $this->_output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG;
+	}
+
+	/**
+	 * Writes a message to the output.
+	 *
+	 * @param string|array $messages The message as an array of lines or a single string.
+	 * @param boolean      $newline  Whether to add a newline.
+	 * @param integer      $type     The type of output (one of the OUTPUT constants).
+	 *
+	 * @return void
+	 */
+	public function write($messages, $newline = false, $type = OutputInterface::OUTPUT_NORMAL)
+	{
+		$this->_output->write($messages, $newline, $type);
+	}
+
+	/**
+	 * Writes a message to the output and adds a newline at the end.
+	 *
+	 * @param string|array $messages The message as an array of lines of a single string.
+	 * @param integer      $type     The type of output (one of the OUTPUT constants).
+	 *
+	 * @return void
+	 */
+	public function writeln($messages, $type = OutputInterface::OUTPUT_NORMAL)
+	{
+		$this->_output->writeln($messages, $type);
+	}
+
+	/**
+	 * Asks a confirmation to the user.
+	 * The question will be asked until the user answers by nothing, yes, or no.
+	 *
+	 * @param string|array $question The question to ask.
+	 * @param boolean      $default  The default answer if the user enters nothing.
+	 *
+	 * @return boolean true if the user has confirmed, false otherwise
+	 */
+	public function askConfirmation($question, $default = true)
+	{
+		/** @var QuestionHelper $helper */
+		$helper = $this->_helperSet->get('question');
+		$confirmation_question = new ConfirmationQuestion(
+			'<question>' . $question . ' [' . ($default ? 'y' : 'n') . ']?</question> ',
+			$default
+		);
+
+		return $helper->ask($this->_input, $this->_output, $confirmation_question);
+	}
+
+	/**
+	 * Asks user to choose.
+	 *
+	 * @param string $question      The question to ask.
+	 * @param array  $options       Valid answer options.
+	 * @param mixed  $default       Default answer.
+	 * @param string $error_message Error on incorrect answer.
+	 *
+	 * @return mixed
+	 */
+	public function choose($question, array $options, $default, $error_message)
+	{
+		/** @var QuestionHelper $helper */
+		$helper = $this->_helperSet->get('question');
+		$choice_question = new ChoiceQuestion('<question>' . $question . '</question> ', $options, $default);
+		$choice_question->setErrorMessage($error_message);
+
+		return $helper->ask($this->_input, $this->_output, $choice_question);
+	}
+
+	/**
+	 * Returns progress bar instance.
+	 *
+	 * @param integer $max Maximum steps (0 if unknown).
+	 *
+	 * @return ProgressBar
+	 */
+	public function createProgressBar($max = 0)
+	{
+		return new ProgressBar($this->_output, $max);
+	}
+
+	/**
+	 * Returns output.
+	 *
+	 * @return OutputInterface
+	 */
+	public function getOutput()
+	{
+		return $this->_output;
+	}
+
+}

Property changes on: branches/5.3.x/core/kernel/Console/ConsoleIO.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: branches/5.3.x/core/kernel/Console/Command/AbstractCommand.php
===================================================================
--- branches/5.3.x/core/kernel/Console/Command/AbstractCommand.php	(revision 16281)
+++ branches/5.3.x/core/kernel/Console/Command/AbstractCommand.php	(revision 16282)
@@ -1,79 +1,90 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Portal
 * @copyright	Copyright (C) 1997 - 2015 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 namespace InPortal\Core\kernel\Console\Command;
 
 
 use InPortal\Core\kernel\Console\ConsoleApplication;
+use InPortal\Core\kernel\Console\ConsoleIO;
 use Symfony\Component\Console\Command\Command as SymfonyCommand;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
 defined('FULL_PATH') or die('restricted access!');
 
 abstract class AbstractCommand extends SymfonyCommand implements IConsoleCommand
 {
 
 	/**
 	 * Reference to global kApplication instance
 	 *
 	 * @var \kApplication.
 	 */
 	protected $Application = null;
 
 	/**
 	 * Connection to database.
 	 *
 	 * @var \IDBConnection
 	 */
 	protected $Conn = null;
 
 	/**
+	 * Console IO.
+	 *
+	 * @var ConsoleIO
+	 */
+	protected $io;
+
+	/**
 	 * Sets the application instance for this command.
 	 *
 	 * @param ConsoleApplication $application An Application instance.
 	 *
 	 * @return void
 	 */
 	public function setApplication(ConsoleApplication $application = null)
 	{
 		parent::setApplication($application);
 
 		// For disabled commands $application is not set.
 		if ( isset($application) ) {
 			$this->Application = $application->getKernelApplication();
 			$this->Conn =& $this->Application->GetADODBConnection();
 		}
 	}
 
 	/**
 	 * Perform additional validation of the input.
 	 *
 	 * @param InputInterface  $input  An InputInterface instance.
 	 * @param OutputInterface $output An OutputInterface instance.
 	 *
 	 * @return void
 	 * @throws \RuntimeException When not all required arguments were passed.
 	 */
 	protected function initialize(InputInterface $input, OutputInterface $output)
 	{
 		$arguments = array_filter($input->getArguments());
 
 		// Consider required arguments passed with empty values as an error.
 		if ( count($arguments) < $this->getDefinition()->getArgumentRequiredCount() ) {
 			throw new \RuntimeException('Not enough arguments.');
 		}
+
+		// Don't use factory because of "classmap:rebuild" command.
+		$this->io = new ConsoleIO($input, $output, $this->getHelperSet());
 	}
 
 }
Index: branches/5.3.x/core/kernel/Console/Command/BuildClassMapCommand.php
===================================================================
--- branches/5.3.x/core/kernel/Console/Command/BuildClassMapCommand.php	(revision 16281)
+++ branches/5.3.x/core/kernel/Console/Command/BuildClassMapCommand.php	(revision 16282)
@@ -1,136 +1,136 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Portal
 * @copyright	Copyright (C) 1997 - 2015 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 namespace InPortal\Core\kernel\Console\Command;
 
 
 use InPortal\Core\kernel\utility\ClassDiscovery\ClassMapBuilder;
 use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
 use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 
 defined('FULL_PATH') or die('restricted access!');
 
 class BuildClassMapCommand extends AbstractCommand implements CompletionAwareInterface
 {
 
 	/**
 	 * Configures the current command.
 	 *
 	 * @return void
 	 */
 	protected function configure()
 	{
 		$this
 			->setName('classmap:rebuild')
 			->setDescription('Rebuilds the class map')
 			->addOption(
 				'module',
 				null,
 				InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
 				'Module name to build class map for'
 			);
 	}
 
 	/**
 	 * Executes the current command.
 	 *
 	 * @param InputInterface  $input  An InputInterface instance.
 	 * @param OutputInterface $output An OutputInterface instance.
 	 *
 	 * @return null|integer
 	 */
 	protected function execute(InputInterface $input, OutputInterface $output)
 	{
-		$user_modules = $input->getOption('module');
+		$user_modules = $this->io->getOption('module');
 
 		if ( $user_modules ) {
 			$modules_filter = array();
 			$valid_modules = $this->getModules();
 
 			foreach ( $user_modules as $module_name ) {
 				if ( !in_array($module_name, $valid_modules) ) {
 					throw new \InvalidArgumentException('Module "' . $module_name . '" not found or installed');
 				}
 
 				$modules_filter[$module_name] = $this->Application->ModuleInfo[$module_name];
 			}
 		}
 		else {
 			$modules_filter = null;
 		}
 
 		$table_rows = array();
 
 		foreach ( ClassMapBuilder::createBuilders($modules_filter) as $class_map_builder ) {
 			$table_rows[] = $class_map_builder->build();
 		}
 
 		// Needed because we aggregate class map from installed modules in unit config cache.
 		$this->Application->HandleEvent(new \kEvent('adm:OnResetParsedData'));
 
 		$table = $this->getHelper('table');
 		$table
 			->setHeaders(array('Path', 'Scanned in', 'Parsed in'))
 			->setRows($table_rows);
-		$table->render($output);
+		$table->render($this->io->getOutput());
 
 		return 0;
 	}
 
 	/**
 	 * Return possible values for the named option
 	 *
 	 * @param string            $optionName Option name.
 	 * @param CompletionContext $context    Completion context.
 	 *
 	 * @return array
 	 */
 	public function completeOptionValues($optionName, CompletionContext $context)
 	{
 		if ( $optionName === 'module' ) {
 			return $this->getModules();
 		}
 
 		return array();
 	}
 
 	/**
 	 * Returns possible module names.
 	 *
 	 * @return array
 	 */
 	protected function getModules()
 	{
 		$modules = array_keys($this->Application->ModuleInfo);
 
 		return array_diff($modules, array('In-Portal'));
 	}
 
 	/**
 	 * Return possible values for the named argument.
 	 *
 	 * @param string            $argumentName Argument name.
 	 * @param CompletionContext $context      Completion context.
 	 *
 	 * @return array
 	 */
 	public function completeArgumentValues($argumentName, CompletionContext $context)
 	{
 		return array();
 	}
 
 }
Index: branches/5.3.x/core/kernel/Console/Command/ResetCacheCommand.php
===================================================================
--- branches/5.3.x/core/kernel/Console/Command/ResetCacheCommand.php	(revision 16281)
+++ branches/5.3.x/core/kernel/Console/Command/ResetCacheCommand.php	(revision 16282)
@@ -1,131 +1,131 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Portal
 * @copyright	Copyright (C) 1997 - 2015 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 namespace InPortal\Core\kernel\Console\Command;
 
 
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 
 defined('FULL_PATH') or die('restricted access!');
 
 class ResetCacheCommand extends AbstractCommand
 {
 
 	/**
 	 * Determines what options will execute what events.
 	 *
 	 * @var array
 	 */
 	protected $optionMap = array(
 		'unit-data' => array(
 			'short' => 'd',
 			'description' => 'Reset Parsed and Cached System Data',
 			'event' => 'adm:OnResetParsedData',
 		),
 		'unit-files' => array(
 			'short' => 'f',
 			'description' => 'Reset Configs Files Cache and Parsed System Data',
 			'event' => 'adm:OnResetConfigsCache',
 		),
 		'admin-sections' => array(
 			'short' => 's',
 			'description' => 'Reset Admin Console Sections',
 			'event' => 'adm:OnResetSections',
 		),
 		'mod-rewrite' => array(
 			'short' => 'r',
 			'description' => 'Reset ModRewrite Cache',
 			'event' => 'adm:OnResetModRwCache',
 		),
 		'sms-menu' => array(
 			'short' => 'm',
 			'description' => 'Reset SMS Menu Cache',
 			'event' => 'c:OnResetCMSMenuCache',
 		),
 		'templates' => array(
 			'short' => 't',
 			'description' => 'Clear Templates Cache',
 			'event' => 'adm:OnDeleteCompiledTemplates',
 		),
 		'all-keys' => array(
 			'short' => 'k',
 			'description' => 'Reset All Keys',
 			'event' => 'adm:OnResetMemcache',
 		),
 	);
 
 	/**
 	 * Configures the current command.
 	 *
 	 * @return void
 	 */
 	protected function configure()
 	{
 		$this
 			->setName('cache:reset')
 			->setDescription('Resets the cache');
 
 		foreach ( $this->optionMap as $option_name => $option_data ) {
 			$this->addOption(
 				$option_name,
 				$option_data['short'],
 				InputOption::VALUE_NONE,
 				$option_data['description']
 			);
 		}
 	}
 
 	/**
 	 * Executes the current command.
 	 *
 	 * @param InputInterface  $input  An InputInterface instance.
 	 * @param OutputInterface $output An OutputInterface instance.
 	 *
 	 * @return null|integer
 	 */
 	protected function execute(InputInterface $input, OutputInterface $output)
 	{
 		$success_count = 0;
 		$error_count = 0;
 
 		foreach ( $this->optionMap as $option_name => $option_data ) {
-			if ( !$input->getOption($option_name) ) {
+			if ( !$this->io->getOption($option_name) ) {
 				continue;
 			}
 
 			$success_count++;
-			$output->write('- ' . $option_data['description'] . ' ... ');
+			$this->io->write('- ' . $option_data['description'] . ' ... ');
 
 			$event = new \kEvent($option_data['event']);
 			$this->Application->HandleEvent($event);
 
 			if ( $event->getRedirectParam('action_completed') ) {
-				$output->writeln('<info>OK</info>');
+				$this->io->writeln('<info>OK</info>');
 			}
 			else {
 				$error_count++;
-				$output->writeln('<error>FAILED</error>');
+				$this->io->writeln('<error>FAILED</error>');
 			}
 		}
 
 		if ( $success_count === 0 ) {
 			throw new \RuntimeException('Please specify at least one reset option');
 		}
 
 		return $error_count == 0 ? 0 : 64;
 	}
 
 }
Index: branches/5.3.x/core/kernel/Console/Command/RunEventCommand.php
===================================================================
--- branches/5.3.x/core/kernel/Console/Command/RunEventCommand.php	(revision 16281)
+++ branches/5.3.x/core/kernel/Console/Command/RunEventCommand.php	(revision 16282)
@@ -1,126 +1,126 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Portal
 * @copyright	Copyright (C) 1997 - 2015 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 namespace InPortal\Core\kernel\Console\Command;
 
 
 use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
 use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
 defined('FULL_PATH') or die('restricted access!');
 
 class RunEventCommand extends AbstractCommand implements CompletionAwareInterface
 {
 
 	/**
 	 * Configures the current command.
 	 *
 	 * @return void
 	 */
 	protected function configure()
 	{
 		$this
 			->setName('event:run')
 			->setDescription('Executes an event')
 			->addArgument(
 				'event_name',
 				InputArgument::REQUIRED,
 				'Event name (e.g. "<info>adm:OnDoSomething</info>")'
 			);
 	}
 
 	/**
 	 * Executes the current command.
 	 *
 	 * @param InputInterface  $input  An InputInterface instance.
 	 * @param OutputInterface $output An OutputInterface instance.
 	 *
 	 * @return null|integer
 	 */
 	protected function execute(InputInterface $input, OutputInterface $output)
 	{
-		$event_name = $input->getArgument('event_name');
+		$event_name = $this->io->getArgument('event_name');
 
 		$run_event = new \kEvent($event_name);
 		$this->Application->HandleEvent($run_event);
 
 		return $run_event->status == \kEvent::erSUCCESS ? 0 : 64;
 	}
 
 	/**
 	 * Return possible values for the named option
 	 *
 	 * @param string            $optionName Option name.
 	 * @param CompletionContext $context    Completion context.
 	 *
 	 * @return array
 	 */
 	public function completeOptionValues($optionName, CompletionContext $context)
 	{
 		return array();
 	}
 
 	/**
 	 * Return possible values for the named argument.
 	 *
 	 * @param string            $argumentName Argument name.
 	 * @param CompletionContext $context      Completion context.
 	 *
 	 * @return array
 	 */
 	public function completeArgumentValues($argumentName, CompletionContext $context)
 	{
 		if ( $argumentName === 'event_name' ) {
 			$event_name = $context->getCurrentWord();
 
 			// Suggest unit config prefixes.
 			if ( strpos($event_name, ':') === false ) {
 				return $this->Application->UnitConfigReader->getPrefixes(false);
 			}
 
 			try {
 				$event = new \kEvent($event_name);
 			}
 			catch ( \InvalidArgumentException $e ) {
 				// Invalid event name.
 				return array();
 			}
 
 			// Unknown unit.
 			if ( !$this->Application->prefixRegistred($event->Prefix) ) {
 				return array();
 			}
 
 			// Suggest event names.
 			$suggestions = array();
 			$reflection = new \ReflectionClass(
 				$this->Application->makeClass($event->Prefix . '_EventHandler')
 			);
 
 			foreach ( $reflection->getMethods() as $method ) {
 				if ( substr($method->getName(), 0, 2) === 'On' ) {
 					$suggestions[] = $event->Prefix . ':' . $method->getName();
 				}
 			}
 
 			return $suggestions;
 		}
 
 		return array();
 	}
 
 }
Index: branches/5.3.x/core/kernel/Console/Command/RunScheduledTaskCommand.php
===================================================================
--- branches/5.3.x/core/kernel/Console/Command/RunScheduledTaskCommand.php	(revision 16281)
+++ branches/5.3.x/core/kernel/Console/Command/RunScheduledTaskCommand.php	(revision 16282)
@@ -1,116 +1,116 @@
 <?php
 /**
 * @version	$Id$
 * @package	In-Portal
 * @copyright	Copyright (C) 1997 - 2015 Intechnic. All rights reserved.
 * @license      GNU/GPL
 * In-Portal is Open Source software.
 * This means that this software may have been modified pursuant
 * the GNU General Public License, and as distributed it includes
 * or is derivative of works licensed under the GNU General Public License
 * or other free or open source software licenses.
 * See http://www.in-portal.org/license for copyright notices and details.
 */
 
 namespace InPortal\Core\kernel\Console\Command;
 
 
 use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
 use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
 defined('FULL_PATH') or die('restricted access!');
 
 class RunScheduledTaskCommand extends AbstractCommand implements CompletionAwareInterface
 {
 
 	/**
 	 * Configures the current command.
 	 *
 	 * @return void
 	 */
 	protected function configure()
 	{
 		$this
 			->setName('scheduled-task:run')
 			->setDescription('Runs scheduled task(-s)')
 			->addArgument(
 				'scheduled_task_name',
 				InputArgument::OPTIONAL,
 				'Scheduled task name'
 			);
 	}
 
 	/**
 	 * Executes the current command.
 	 *
 	 * @param InputInterface  $input  An InputInterface instance.
 	 * @param OutputInterface $output An OutputInterface instance.
 	 *
 	 * @return null|integer
 	 */
 	protected function execute(InputInterface $input, OutputInterface $output)
 	{
-		$scheduled_task_name = $input->getArgument('scheduled_task_name');
+		$scheduled_task_name = $this->io->getArgument('scheduled_task_name');
 
 		if ( !$scheduled_task_name ) {
 			$this->Application->EventManager->runScheduledTasks(true);
 
 			return 0;
 		}
 
 		if ( !in_array($scheduled_task_name, $this->getScheduledTaskNames()) ) {
 			throw new \InvalidArgumentException('Scheduled task "' . $scheduled_task_name . '" not found');
 		}
 
 		$scheduled_tasks = $this->Application->EventManager->getScheduledTasks();
 		$result = $this->Application->EventManager->runScheduledTask($scheduled_tasks[$scheduled_task_name]);
 
 		return $result ? 0 : 64;
 	}
 
 	/**
 	 * Return possible values for the named option
 	 *
 	 * @param string            $optionName Option name.
 	 * @param CompletionContext $context    Completion context.
 	 *
 	 * @return array
 	 */
 	public function completeOptionValues($optionName, CompletionContext $context)
 	{
 		return array();
 	}
 
 	/**
 	 * Return possible values for the named argument.
 	 *
 	 * @param string            $argumentName Argument name.
 	 * @param CompletionContext $context      Completion context.
 	 *
 	 * @return array
 	 */
 	public function completeArgumentValues($argumentName, CompletionContext $context)
 	{
 		if ( $argumentName === 'scheduled_task_name' ) {
 			return $this->getScheduledTaskNames();
 		}
 
 		return array();
 	}
 
 	/**
 	 * Returns scheduled task names.
 	 *
 	 * @return array
 	 */
 	protected function getScheduledTaskNames()
 	{
 		$scheduled_tasks = $this->Application->EventManager->getScheduledTasks();
 
 		return array_keys($scheduled_tasks);
 	}
 
 }
Index: branches/5.3.x/core/install/cache/class_structure.php
===================================================================
--- branches/5.3.x/core/install/cache/class_structure.php	(revision 16281)
+++ branches/5.3.x/core/install/cache/class_structure.php	(revision 16282)
@@ -1,2639 +1,2644 @@
 <?php
 // @codingStandardsIgnoreFile
 
 /**
  * This file is automatically @generated. Please use 'in-portal classmap:rebuild' command to rebuild it.
  */
 return array(
 	'cache_format' => 2,
 	'classes' => array(
 		'AbstractCategoryItemRouter' => '/core/kernel/utility/Router/AbstractCategoryItemRouter.php',
 		'AbstractReviewRouter' => '/core/kernel/utility/Router/AbstractReviewRouter.php',
 		'AbstractRouter' => '/core/kernel/utility/Router/AbstractRouter.php',
 		'AdminEventsHandler' => '/core/units/admin/admin_events_handler.php',
 		'AdminTagProcessor' => '/core/units/admin/admin_tag_processor.php',
 		'AjaxFormHelper' => '/core/units/helpers/ajax_form_helper.php',
 		'ApcCacheHandler' => '/core/kernel/utility/cache.php',
 		'BackupHelper' => '/core/units/helpers/backup_helper.php',
 		'BaseSession' => '/core/kernel/session/session.php',
 		'BaseSessionStorage' => '/core/kernel/session/session_storage.php',
 		'CacheSettings' => '/core/kernel/startup.php',
 		'CaptchaEventHandler' => '/core/units/captcha/captcha_eh.php',
 		'CategoriesEventHandler' => '/core/units/categories/categories_event_handler.php',
 		'CategoriesItem' => '/core/units/categories/categories_item.php',
 		'CategoriesTagProcessor' => '/core/units/categories/categories_tag_processor.php',
 		'CategoryHelper' => '/core/units/helpers/category_helper.php',
 		'CategoryItemsEventHandler' => '/core/units/category_items/category_items_event_handler.php',
 		'CategoryItemsTagProcessor' => '/core/units/category_items/category_items_tag_processor.php',
 		'CategoryPermissionRebuild' => '/core/kernel/constants.php',
 		'ChangeLog' => '/core/kernel/constants.php',
 		'ChangeLogEventHandler' => '/core/units/logs/change_logs/change_log_eh.php',
 		'ChangeLogTagProcessor' => '/core/units/logs/change_logs/change_log_tp.php',
 		'ColumnSet' => '/core/units/helpers/col_picker_helper.php',
 		'ConfigSearchEventHandler' => '/core/units/config_search/config_search_event_handler.php',
 		'ConfigSearchTagProcessor' => '/core/units/config_search/config_search_tag_processor.php',
 		'ConfigurationEventHandler' => '/core/units/configuration/configuration_event_handler.php',
 		'ConfigurationItem' => '/core/units/configuration/configuration.php',
 		'ConfigurationTagProcessor' => '/core/units/configuration/configuration_tag_processor.php',
 		'ConfigurationValidator' => '/core/units/configuration/configuration_validator.php',
 		'ContentEventHandler' => '/core/units/content/content_eh.php',
 		'ContentTagProcessor' => '/core/units/content/content_tp.php',
 		'CoreUpgrades' => '/core/install/upgrades.php',
 		'CountryStateEventHandler' => '/core/units/country_states/country_state_eh.php',
 		'CssMinifyHelper' => '/core/units/helpers/minifiers/css_minify_helper.php',
 		'CustomDataEventHandler' => '/core/units/custom_data/custom_data_event_handler.php',
 		'CustomFieldsEventHandler' => '/core/units/custom_fields/custom_fields_event_handler.php',
 		'CustomFieldsTagProcessor' => '/core/units/custom_fields/custom_fields_tag_processor.php',
 		'Debugger' => '/core/kernel/utility/debugger.php',
 		'DebuggerUtil' => '/core/kernel/utility/debugger.php',
 		'DeploymentHelper' => '/core/units/helpers/deployment_helper.php',
 		'DraftEventHandler' => '/core/units/forms/drafts/draft_eh.php',
 		'EditPickerHelper' => '/core/units/helpers/controls/edit_picker_helper.php',
 		'EmailDelivery' => '/core/kernel/constants.php',
 		'EmailLogEventHandler' => '/core/units/logs/email_logs/email_log_eh.php',
 		'EmailLogStatus' => '/core/kernel/constants.php',
 		'EmailLogTagProcessor' => '/core/units/logs/email_logs/email_log_tp.php',
 		'EmailQueueEventHandler' => '/core/units/email_queue/email_queue_eh.php',
 		'EmailQueueTagProcessor' => '/core/units/email_queue/email_queue_tp.php',
 		'EmailTemplate' => '/core/kernel/constants.php',
 		'EmailTemplateEventHandler' => '/core/units/email_templates/email_template_eh.php',
 		'EmailTemplateTagProcessor' => '/core/units/email_templates/email_template_tp.php',
 		'FakeCacheHandler' => '/core/kernel/utility/cache.php',
 		'FavoritesEventHandler' => '/core/units/favorites/favorites_eh.php',
 		'FckEventHandler' => '/core/units/fck/fck_eh.php',
 		'FckTagProcessor' => '/core/units/fck/fck_tp.php',
 		'FileEventHandler' => '/core/units/files/file_eh.php',
 		'FileHelper' => '/core/units/helpers/file_helper.php',
 		'FileTagProcessor' => '/core/units/files/file_tp.php',
 		'FormFieldEventHandler' => '/core/units/forms/form_fields/form_field_eh.php',
 		'FormFieldsTagProcessor' => '/core/units/forms/form_fields/form_fields_tp.php',
 		'FormSubmissionHelper' => '/core/units/helpers/form_submission_helper.php',
 		'FormSubmissionTagProcessor' => '/core/units/forms/form_submissions/form_submission_tp.php',
 		'FormSubmissionsEventHandler' => '/core/units/forms/form_submissions/form_submissions_eh.php',
 		'FormsEventHandler' => '/core/units/forms/forms/forms_eh.php',
 		'FormsTagProcessor' => '/core/units/forms/forms/forms_tp.php',
 		'GeoCodeHelper' => '/core/units/helpers/geocode_helper.php',
 		'GroupTagProcessor' => '/core/units/groups/group_tp.php',
 		'GroupsEventHandler' => '/core/units/groups/groups_event_handler.php',
 		'IDBConnection' => '/core/kernel/db/i_db_connection.php',
 		'ImageEventHandler' => '/core/units/images/image_event_handler.php',
 		'ImageHelper' => '/core/units/helpers/image_helper.php',
 		'ImageTagProcessor' => '/core/units/images/image_tag_processor.php',
 		'ImagesItem' => '/core/units/images/images.php',
 		'InPortalPrerequisites' => '/core/install/prerequisites.php',
 		'InPortal\\Core\\kernel\\Console\\Command\\AbstractCommand' => '/core/kernel/Console/Command/AbstractCommand.php',
 		'InPortal\\Core\\kernel\\Console\\Command\\BuildClassMapCommand' => '/core/kernel/Console/Command/BuildClassMapCommand.php',
 		'InPortal\\Core\\kernel\\Console\\Command\\CompletionCommand' => '/core/kernel/Console/Command/CompletionCommand.php',
 		'InPortal\\Core\\kernel\\Console\\Command\\IConsoleCommand' => '/core/kernel/Console/Command/IConsoleCommand.php',
 		'InPortal\\Core\\kernel\\Console\\Command\\ResetCacheCommand' => '/core/kernel/Console/Command/ResetCacheCommand.php',
 		'InPortal\\Core\\kernel\\Console\\Command\\RunEventCommand' => '/core/kernel/Console/Command/RunEventCommand.php',
 		'InPortal\\Core\\kernel\\Console\\Command\\RunScheduledTaskCommand' => '/core/kernel/Console/Command/RunScheduledTaskCommand.php',
 		'InPortal\\Core\\kernel\\Console\\ConsoleApplication' => '/core/kernel/Console/ConsoleApplication.php',
 		'InPortal\\Core\\kernel\\Console\\ConsoleCommandProvider' => '/core/kernel/Console/ConsoleCommandProvider.php',
+		'InPortal\\Core\\kernel\\Console\\ConsoleIO' => '/core/kernel/Console/ConsoleIO.php',
 		'InPortal\\Core\\kernel\\Console\\IConsoleCommandProvider' => '/core/kernel/Console/IConsoleCommandProvider.php',
 		'InPortal\\Core\\kernel\\utility\\ClassDiscovery\\ClassDetector' => '/core/kernel/utility/ClassDiscovery/ClassDetector.php',
 		'InPortal\\Core\\kernel\\utility\\ClassDiscovery\\ClassMapBuilder' => '/core/kernel/utility/ClassDiscovery/ClassMapBuilder.php',
 		'InPortal\\Core\\kernel\\utility\\ClassDiscovery\\CodeFolderFilterIterator' => '/core/kernel/utility/ClassDiscovery/CodeFolderFilterIterator.php',
 		'InpCustomFieldsHelper' => '/core/units/helpers/custom_fields_helper.php',
 		'ItemFilterEventHandler' => '/core/units/filters/item_filter_eh.php',
 		'ItemFilterTagProcessor' => '/core/units/filters/item_filter_tp.php',
 		'JSONHelper' => '/core/units/helpers/json_helper.php',
 		'JsMinifyHelper' => '/core/units/helpers/minifiers/js_minify_helper.php',
 		'Language' => '/core/kernel/constants.php',
 		'LanguageImportHelper' => '/core/units/helpers/language_import_helper.php',
 		'LanguagesEventHandler' => '/core/units/languages/languages_event_handler.php',
 		'LanguagesItem' => '/core/units/languages/languages_item.php',
 		'LanguagesTagProcessor' => '/core/units/languages/languages_tag_processor.php',
 		'LeftJoinOptimizer' => '/core/kernel/db/dblist.php',
 		'ListHelper' => '/core/units/helpers/list_helper.php',
 		'LoginResult' => '/core/kernel/constants.php',
 		'MInputHelper' => '/core/units/helpers/controls/minput_helper.php',
 		'MailboxHelper' => '/core/units/helpers/mailbox_helper.php',
 		'MailingList' => '/core/kernel/constants.php',
 		'MailingListEventHandler' => '/core/units/mailing_lists/mailing_list_eh.php',
 		'MailingListHelper' => '/core/units/helpers/mailing_list_helper.php',
 		'MailingListTagProcessor' => '/core/units/mailing_lists/mailing_list_tp.php',
 		'MainRouter' => '/core/units/general/MainRouter.php',
 		'MaintenanceMode' => '/core/kernel/startup.php',
 		'MassImageResizer' => '/core/units/admin/admin_events_handler.php',
 		'MemcacheCacheHandler' => '/core/kernel/utility/cache.php',
 		'MenuHelper' => '/core/units/helpers/menu_helper.php',
 		'MimeDecodeHelper' => '/core/units/helpers/mime_decode_helper.php',
 		'MinifyHelper' => '/core/units/helpers/minifiers/minify_helper.php',
 		'ModuleDeploymentLog' => '/core/kernel/constants.php',
 		'ModuleDeploymentLogEventHandler' => '/core/units/logs/module_deployment_logs/module_deployment_log_eh.php',
 		'ModulesEventHandler' => '/core/units/modules/modules_event_handler.php',
 		'ModulesTagProcessor' => '/core/units/modules/modules_tag_processor.php',
 		'NParser' => '/core/kernel/nparser/nparser.php',
 		'NParserCompiler' => '/core/kernel/nparser/compiler.php',
 		'POP3Helper' => '/core/units/helpers/pop3_helper.php',
 		'PageHelper' => '/core/units/helpers/page_helper.php',
 		'PageRevisionEventHandler' => '/core/units/page_revisions/page_revision_eh.php',
 		'PageRevisionTagProcessor' => '/core/units/page_revisions/page_revision_tp.php',
 		'Params' => '/core/kernel/utility/params.php',
 		'ParserException' => '/core/kernel/nparser/nparser.php',
 		'PasswordHash' => '/core/kernel/utility/php_pass.php',
 		'PasswordHashingMethod' => '/core/kernel/constants.php',
 		'PermissionTypeEventHandler' => '/core/units/permission_types/permission_type_eh.php',
 		'PermissionsEventHandler' => '/core/units/permissions/permissions_event_handler.php',
 		'PermissionsTagProcessor' => '/core/units/permissions/permissions_tag_processor.php',
 		'PhraseTagProcessor' => '/core/units/phrases/phrase_tp.php',
 		'PhrasesEventHandler' => '/core/units/phrases/phrases_event_handler.php',
 		'PriorityEventHandler' => '/core/units/priorites/priority_eh.php',
 		'PromoBlockEventHandler' => '/core/units/promo_blocks/promo_block_eh.php',
 		'PromoBlockGroupEventHandler' => '/core/units/promo_block_groups/promo_block_group_eh.php',
 		'PromoBlockGroupTagProcessor' => '/core/units/promo_block_groups/promo_block_group_tp.php',
 		'PromoBlockTagProcessor' => '/core/units/promo_blocks/promo_block_tp.php',
 		'PromoBlockType' => '/core/kernel/constants.php',
 		'RatingHelper' => '/core/units/helpers/rating_helper.php',
 		'RelatedSearchEventHandler' => '/core/units/related_searches/related_searches_event_handler.php',
 		'RelatedSearchTagProcessor' => '/core/units/related_searches/related_searches_tag_processor.php',
 		'RelationshipEventHandler' => '/core/units/relationship/relationship_event_handler.php',
 		'RelationshipTagProcessor' => '/core/units/relationship/relationship_tp.php',
 		'ReviewsEventHandler' => '/core/units/reviews/reviews_event_handler.php',
 		'ReviewsTagProcessor' => '/core/units/reviews/reviews_tag_processor.php',
 		'ScheduledTask' => '/core/kernel/constants.php',
 		'ScheduledTaskEventHandler' => '/core/units/scheduled_tasks/scheduled_task_eh.php',
 		'SelectorsEventHandler' => '/core/units/selectors/selectors_event_handler.php',
 		'SelectorsItem' => '/core/units/selectors/selectors_item.php',
 		'SelectorsTagProcessor' => '/core/units/selectors/selectors_tag_processor.php',
 		'Session' => '/core/kernel/session/inp_session.php',
 		'SessionLogEventHandler' => '/core/units/logs/session_logs/session_log_eh.php',
 		'SessionStorage' => '/core/kernel/session/inp_session_storage.php',
 		'SiteConfigEventHandler' => '/core/units/sections/site_config_eh.php',
 		'SiteConfigHelper' => '/core/units/helpers/site_config_helper.php',
 		'SiteConfigTagProcessor' => '/core/units/sections/site_config_tp.php',
 		'SiteDomainEventHandler' => '/core/units/site_domains/site_domain_eh.php',
 		'SiteHelper' => '/core/units/helpers/site_helper.php',
 		'SkinEventHandler' => '/core/units/skins/skin_eh.php',
 		'SkinHelper' => '/core/units/helpers/skin_helper.php',
 		'SpamHelper' => '/core/units/helpers/spam_helper.php',
 		'SpamReportEventHandler' => '/core/units/spam_reports/spam_report_eh.php',
 		'SpamReportTagProcessor' => '/core/units/spam_reports/spam_report_tp.php',
 		'StatisticsEventHandler' => '/core/units/statistics/statistics_event_handler.php',
 		'StatisticsTagProcessor' => '/core/units/statistics/statistics_tag_processor.php',
 		'StorageEngine' => '/core/kernel/constants.php',
 		'StylesheetsEventHandler' => '/core/units/stylesheets/stylesheets_event_handler.php',
 		'StylesheetsItem' => '/core/units/stylesheets/stylesheets_item.php',
 		'SubmissionFormField' => '/core/kernel/constants.php',
 		'SubmissionLogEventHandler' => '/core/units/forms/submission_log/submission_log_eh.php',
 		'SubmissionLogTagProcessor' => '/core/units/forms/submission_log/submission_log_tp.php',
 		'SystemEventSubscriptionEventHandler' => '/core/units/system_event_subscriptions/system_event_subscription_eh.php',
 		'SystemEventSubscriptionTagProcessor' => '/core/units/system_event_subscriptions/system_event_subscription_tp.php',
 		'SystemLogEventHandler' => '/core/units/logs/system_logs/system_log_eh.php',
 		'SystemLogTagProcessor' => '/core/units/logs/system_logs/system_log_tp.php',
 		'TemplateHelper' => '/core/units/helpers/template_helper.php',
 		'TemplatesCache' => '/core/kernel/nparser/template_cache.php',
 		'ThemeFileEventHandler' => '/core/units/theme_files/theme_file_eh.php',
 		'ThemeItem' => '/core/units/themes/theme_item.php',
 		'ThemesEventHandler' => '/core/units/themes/themes_eh.php',
 		'ThemesTagProcessor' => '/core/units/themes/themes_tag_processor.php',
 		'ThesaurusEventHandler' => '/core/units/thesaurus/thesaurus_eh.php',
 		'ThesaurusTagProcessor' => '/core/units/thesaurus/thesaurus_tp.php',
 		'TranslationSaveMode' => '/core/kernel/constants.php',
 		'TranslatorEventHandler' => '/core/units/translator/translator_event_handler.php',
 		'TranslatorTagProcessor' => '/core/units/translator/translator_tp.php',
 		'UnitConfigDecorator' => '/core/units/admin/admin_events_handler.php',
 		'UserGroupsEventHandler' => '/core/units/user_groups/user_groups_eh.php',
 		'UserHelper' => '/core/units/helpers/user_helper.php',
 		'UserProfileEventHandler' => '/core/units/user_profile/user_profile_eh.php',
 		'UserProfileTagProcessor' => '/core/units/user_profile/user_profile_tp.php',
 		'UserType' => '/core/kernel/constants.php',
 		'UsersEventHandler' => '/core/units/users/users_event_handler.php',
 		'UsersItem' => '/core/units/users/users_item.php',
 		'UsersSyncronize' => '/core/units/users/users_syncronize.php',
 		'UsersSyncronizeManager' => '/core/units/users/users_syncronize.php',
 		'UsersTagProcessor' => '/core/units/users/users_tag_processor.php',
 		'VisitsEventHandler' => '/core/units/visits/visits_event_handler.php',
 		'VisitsList' => '/core/units/visits/visits_list.php',
 		'VisitsTagProcessor' => '/core/units/visits/visits_tag_processor.php',
 		'XCacheCacheHandler' => '/core/kernel/utility/cache.php',
 		'XMLIterator' => '/core/units/helpers/xml_helper5.php',
 		'_BlockTag' => '/core/kernel/nparser/ntags.php',
 		'_Tag_Cache' => '/core/kernel/nparser/ntags.php',
 		'_Tag_Capture' => '/core/kernel/nparser/ntags.php',
 		'_Tag_Comment' => '/core/kernel/nparser/ntags.php',
 		'_Tag_Compress' => '/core/kernel/nparser/ntags.php',
 		'_Tag_DefaultParam' => '/core/kernel/nparser/ntags.php',
 		'_Tag_DefineElement' => '/core/kernel/nparser/ntags.php',
 		'_Tag_If' => '/core/kernel/nparser/ntags.php',
 		'_Tag_IfDataExists' => '/core/kernel/nparser/ntags.php',
 		'_Tag_IfNot' => '/core/kernel/nparser/ntags.php',
 		'_Tag_Include' => '/core/kernel/nparser/ntags.php',
 		'_Tag_Param' => '/core/kernel/nparser/ntags.php',
 		'_Tag_RenderElement' => '/core/kernel/nparser/ntags.php',
 		'_Tag_RenderElements' => '/core/kernel/nparser/ntags.php',
 		'_Tag_SetParam' => '/core/kernel/nparser/ntags.php',
 		'clsCachedPermissions' => '/core/units/categories/cache_updater.php',
 		'clsRecursionStack' => '/core/units/categories/cache_updater.php',
 		'fckFCKHelper' => '/core/units/helpers/fck_helper.php',
 		'kApplication' => '/core/kernel/application.php',
 		'kArray' => '/core/kernel/utility/params.php',
 		'kBase' => '/core/kernel/kbase.php',
 		'kBracketsHelper' => '/core/units/helpers/brackets_helper.php',
 		'kCCDateFormatter' => '/core/kernel/utility/formatters/ccdate_formatter.php',
 		'kCSSDefaults' => '/core/units/pdf/css_defaults.php',
 		'kCSVHelper' => '/core/units/helpers/csv_helper.php',
 		'kCache' => '/core/kernel/utility/cache.php',
 		'kCacheHandler' => '/core/kernel/utility/cache.php',
 		'kCacheManager' => '/core/kernel/managers/cache_manager.php',
 		'kCaptchaHelper' => '/core/units/helpers/captcha_helper.php',
 		'kCatDBEventHandler' => '/core/kernel/db/cat_event_handler.php',
 		'kCatDBItem' => '/core/kernel/db/cat_dbitem.php',
 		'kCatDBItemExportHelper' => '/core/units/helpers/cat_dbitem_export_helper.php',
 		'kCatDBList' => '/core/kernel/db/cat_dblist.php',
 		'kCatDBTagProcessor' => '/core/kernel/db/cat_tag_processor.php',
 		'kChangesFormatter' => '/core/units/logs/change_logs/changes_formatter.php',
 		'kChartHelper' => '/core/units/helpers/chart_helper.php',
 		'kClipboardHelper' => '/core/units/helpers/clipboard_helper.php',
 		'kColumnPickerHelper' => '/core/units/helpers/col_picker_helper.php',
 		'kCookieHasher' => '/core/kernel/utility/cookie_hasher.php',
 		'kCountHelper' => '/core/units/helpers/count_helper.php',
 		'kCountryStatesHelper' => '/core/units/helpers/country_states_helper.php',
 		'kCronField' => '/core/units/helpers/cron_helper.php',
 		'kCronHelper' => '/core/units/helpers/cron_helper.php',
 		'kCurlHelper' => '/core/units/helpers/curl_helper.php',
 		'kCustomFieldFormatter' => '/core/kernel/utility/formatters/customfield_formatter.php',
 		'kDBBase' => '/core/kernel/kbase.php',
 		'kDBConnection' => '/core/kernel/db/db_connection.php',
 		'kDBConnectionDebug' => '/core/kernel/db/db_connection.php',
 		'kDBEventHandler' => '/core/kernel/db/db_event_handler.php',
 		'kDBItem' => '/core/kernel/db/dbitem.php',
 		'kDBList' => '/core/kernel/db/dblist.php',
 		'kDBLoadBalancer' => '/core/kernel/db/db_load_balancer.php',
 		'kDBTagProcessor' => '/core/kernel/db/db_tag_processor.php',
 		'kDateFormatter' => '/core/kernel/utility/formatters/date_formatter.php',
 		'kEmail' => '/core/kernel/utility/email.php',
 		'kEmailSendingHelper' => '/core/kernel/utility/email_send.php',
 		'kEmailTemplateHelper' => '/core/units/helpers/email_template_helper.php',
 		'kErrorHandlerStack' => '/core/kernel/utility/logger.php',
 		'kEvent' => '/core/kernel/utility/event.php',
 		'kEventHandler' => '/core/kernel/event_handler.php',
 		'kEventManager' => '/core/kernel/event_manager.php',
 		'kExceptionHandlerStack' => '/core/kernel/utility/logger.php',
 		'kFactory' => '/core/kernel/utility/factory.php',
 		'kFactoryException' => '/core/kernel/utility/factory.php',
 		'kFilenamesHelper' => '/core/units/helpers/filenames_helper.php',
 		'kFilesizeFormatter' => '/core/kernel/utility/formatters/filesize_formatter.php',
 		'kFormatter' => '/core/kernel/utility/formatters/formatter.php',
 		'kHTTPQuery' => '/core/kernel/utility/http_query.php',
 		'kHandlerStack' => '/core/kernel/utility/logger.php',
 		'kHelper' => '/core/kernel/kbase.php',
 		'kHookManager' => '/core/kernel/managers/hook_manager.php',
 		'kInstallToolkit' => '/core/install/install_toolkit.php',
 		'kInstallator' => '/core/install.php',
 		'kLEFTFormatter' => '/core/kernel/utility/formatters/left_formatter.php',
 		'kLogger' => '/core/kernel/utility/logger.php',
 		'kMainTagProcessor' => '/core/kernel/processors/main_processor.php',
 		'kModulesHelper' => '/core/units/helpers/modules_helper.php',
 		'kMultiLanguage' => '/core/kernel/utility/formatters/multilang_formatter.php',
 		'kMultiLanguageHelper' => '/core/units/helpers/multilanguage_helper.php',
 		'kMultipleFilter' => '/core/kernel/utility/filters.php',
 		'kMySQLQuery' => '/core/kernel/db/db_connection.php',
 		'kMySQLQueryCol' => '/core/kernel/db/db_connection.php',
 		'kNavigationBar' => '/core/units/helpers/navigation_bar.php',
 		'kNoPermissionException' => '/core/kernel/kbase.php',
 		'kOpenerStack' => '/core/kernel/utility/opener_stack.php',
 		'kOptionsFormatter' => '/core/kernel/utility/formatters/options_formatter.php',
 		'kPDFElemFactory' => '/core/units/pdf/pdf_helper.php',
 		'kPDFElement' => '/core/units/pdf/pdf_helper.php',
 		'kPDFHelper' => '/core/units/pdf/pdf_helper.php',
 		'kPDFImage' => '/core/units/pdf/pdf_image.php',
 		'kPDFLine' => '/core/units/pdf/pdf_helper.php',
 		'kPDFRenderer' => '/core/units/pdf/pdf_renderer.php',
 		'kPDFStylesheet' => '/core/units/pdf/pdf_styles.php',
 		'kPDFTable' => '/core/units/pdf/pdf_table.php',
 		'kPDFTableRow' => '/core/units/pdf/pdf_table.php',
 		'kPDFTextElement' => '/core/units/pdf/pdf_text.php',
 		'kPasswordFormatter' => '/core/kernel/utility/formatters/password_formatter.php',
 		'kPermCacheUpdater' => '/core/units/categories/cache_updater.php',
 		'kPermissionsHelper' => '/core/units/helpers/permissions_helper.php',
 		'kPhraseCache' => '/core/kernel/languages/phrases_cache.php',
 		'kPictureFormatter' => '/core/kernel/utility/formatters/upload_formatter.php',
 		'kPlainUrlProcessor' => '/core/kernel/managers/plain_url_processor.php',
 		'kPriorityHelper' => '/core/units/helpers/priority_helper.php',
 		'kRecursiveHelper' => '/core/units/helpers/recursive_helper.php',
 		'kRedirectException' => '/core/kernel/kbase.php',
 		'kRequestManager' => '/core/kernel/managers/request_manager.php',
 		'kRewriteUrlProcessor' => '/core/kernel/managers/rewrite_url_processor.php',
 		'kScheduledTaskManager' => '/core/kernel/managers/scheduled_task_manager.php',
 		'kSearchHelper' => '/core/units/helpers/search_helper.php',
 		'kSectionsHelper' => '/core/units/helpers/sections_helper.php',
 		'kSerializedFormatter' => '/core/kernel/utility/formatters/serialized_formatter.php',
 		'kSocket' => '/core/kernel/utility/socket.php',
 		'kSubscriptionAnalyzer' => '/core/units/system_event_subscriptions/system_event_subscription_tp.php',
 		'kSubscriptionItem' => '/core/kernel/managers/subscription_manager.php',
 		'kSubscriptionManager' => '/core/kernel/managers/subscription_manager.php',
 		'kSystemConfig' => '/core/kernel/utility/system_config.php',
 		'kSystemConfigException' => '/core/kernel/utility/system_config.php',
 		'kTCPDFRenderer' => '/core/units/pdf/pdf_renderer_tcpdf.php',
 		'kTagProcessor' => '/core/kernel/processors/tag_processor.php',
 		'kTempHandlerSubTable' => '/core/kernel/utility/temp_handler.php',
 		'kTempHandlerTable' => '/core/kernel/utility/temp_handler.php',
 		'kTempHandlerTopTable' => '/core/kernel/utility/temp_handler.php',
 		'kTempTablesHandler' => '/core/kernel/utility/temp_handler.php',
 		'kThemesHelper' => '/core/units/helpers/themes_helper.php',
 		'kUnitConfig' => '/core/kernel/utility/unit_config.php',
 		'kUnitConfigCloner' => '/core/kernel/utility/unit_config_cloner.php',
 		'kUnitConfigReader' => '/core/kernel/utility/unit_config_reader.php',
 		'kUnitFormatter' => '/core/kernel/utility/formatters/unit_formatter.php',
 		'kUpgradeHelper' => '/core/install/upgrade_helper.php',
 		'kUploadFormatter' => '/core/kernel/utility/formatters/upload_formatter.php',
 		'kUploadHelper' => '/core/units/helpers/upload_helper.php',
 		'kUploaderException' => '/core/units/helpers/upload_helper.php',
 		'kUrlManager' => '/core/kernel/managers/url_manager.php',
 		'kUrlProcessor' => '/core/kernel/managers/url_processor.php',
 		'kUtil' => '/core/kernel/globals.php',
 		'kValidator' => '/core/kernel/utility/validator.php',
 		'kXMLHelper' => '/core/units/helpers/xml_helper.php',
 		'kXMLNode' => '/core/units/helpers/xml_helper.php',
 		'kXMLNode5' => '/core/units/helpers/xml_helper5.php',
 		'kZendPDFRenderer' => '/core/units/pdf/pdf_renderer_zend.php',
 		'kiCacheable' => '/core/kernel/interfaces/cacheable.php',
 	),
 	'class_info' => array(
 		'AbstractCategoryItemRouter' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'AbstractRouter',
 			),
 		),
 		'AbstractReviewRouter' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'AbstractRouter',
 			),
 		),
 		'AbstractRouter' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'AdminEventsHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'AdminTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'AjaxFormHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'ApcCacheHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kCacheHandler',
 			),
 		),
 		'BackupHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'BaseSession' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'BaseSessionStorage' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBBase',
 			),
 		),
 		'CacheSettings' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'CaptchaEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kEventHandler',
 			),
 		),
 		'CategoriesEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'CategoriesItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'CategoriesTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'CategoryHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'CategoryItemsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'CategoryItemsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'CategoryPermissionRebuild' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'ChangeLog' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'ChangeLogEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ChangeLogTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'ColumnSet' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'ConfigSearchEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ConfigSearchTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'ConfigurationEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ConfigurationItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'ConfigurationTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'ConfigurationValidator' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kValidator',
 			),
 		),
 		'ContentEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ContentTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'CoreUpgrades' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kUpgradeHelper',
 			),
 		),
 		'CountryStateEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'CssMinifyHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'CustomDataEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'CustomFieldsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'CustomFieldsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'Debugger' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'DebuggerUtil' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'DeploymentHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'DraftEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'EditPickerHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'EmailDelivery' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'EmailLogEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'EmailLogStatus' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'EmailLogTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'EmailQueueEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'EmailQueueTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'EmailTemplate' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'EmailTemplateEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'EmailTemplateTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'FakeCacheHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kCacheHandler',
 			),
 		),
 		'FavoritesEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'FckEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'FckTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'FileEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'FileHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'FileTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'FormFieldEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'FormFieldsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'FormSubmissionHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'FormSubmissionTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'FormSubmissionsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'FormsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'FormsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'GeoCodeHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'GroupTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'GroupsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'IDBConnection' => array(
 			'type' => 2,
 		),
 		'ImageEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ImageHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'ImageTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'ImagesItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'InPortalPrerequisites' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'InPortal\\Core\\kernel\\Console\\Command\\AbstractCommand' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'Symfony\\Component\\Console\\Command\\Command',
 				1 => 'InPortal\\Core\\kernel\\Console\\Command\\IConsoleCommand',
 			),
 		),
 		'InPortal\\Core\\kernel\\Console\\Command\\BuildClassMapCommand' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'InPortal\\Core\\kernel\\Console\\Command\\AbstractCommand',
 				1 => 'Stecman\\Component\\Symfony\\Console\\BashCompletion\\Completion\\CompletionAwareInterface',
 			),
 		),
 		'InPortal\\Core\\kernel\\Console\\Command\\CompletionCommand' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Stecman\\Component\\Symfony\\Console\\BashCompletion\\CompletionCommand',
 				1 => 'InPortal\\Core\\kernel\\Console\\Command\\IConsoleCommand',
 			),
 		),
 		'InPortal\\Core\\kernel\\Console\\Command\\IConsoleCommand' => array(
 			'type' => 2,
 		),
 		'InPortal\\Core\\kernel\\Console\\Command\\ResetCacheCommand' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'InPortal\\Core\\kernel\\Console\\Command\\AbstractCommand',
 			),
 		),
 		'InPortal\\Core\\kernel\\Console\\Command\\RunEventCommand' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'InPortal\\Core\\kernel\\Console\\Command\\AbstractCommand',
 				1 => 'Stecman\\Component\\Symfony\\Console\\BashCompletion\\Completion\\CompletionAwareInterface',
 			),
 		),
 		'InPortal\\Core\\kernel\\Console\\Command\\RunScheduledTaskCommand' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'InPortal\\Core\\kernel\\Console\\Command\\AbstractCommand',
 				1 => 'Stecman\\Component\\Symfony\\Console\\BashCompletion\\Completion\\CompletionAwareInterface',
 			),
 		),
 		'InPortal\\Core\\kernel\\Console\\ConsoleApplication' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Symfony\\Component\\Console\\Application',
 			),
 		),
 		'InPortal\\Core\\kernel\\Console\\ConsoleCommandProvider' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'InPortal\\Core\\kernel\\Console\\IConsoleCommandProvider',
 			),
 		),
+		'InPortal\\Core\\kernel\\Console\\ConsoleIO' => array(
+			'type' => 1,
+			'modifiers' => 0,
+		),
 		'InPortal\\Core\\kernel\\Console\\IConsoleCommandProvider' => array(
 			'type' => 2,
 		),
 		'InPortal\\Core\\kernel\\utility\\ClassDiscovery\\ClassDetector' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'PhpParser\\NodeVisitorAbstract',
 			),
 		),
 		'InPortal\\Core\\kernel\\utility\\ClassDiscovery\\ClassMapBuilder' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'InPortal\\Core\\kernel\\utility\\ClassDiscovery\\CodeFolderFilterIterator' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'RecursiveFilterIterator',
 			),
 		),
 		'InpCustomFieldsHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'ItemFilterEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ItemFilterTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'JSONHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'JsMinifyHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'Language' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'LanguageImportHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'LanguagesEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'LanguagesItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'LanguagesTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'LeftJoinOptimizer' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'ListHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'LoginResult' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'MInputHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'MailboxHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'MailingList' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'MailingListEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'MailingListHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'MailingListTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'MainRouter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'AbstractRouter',
 			),
 		),
 		'MaintenanceMode' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'MassImageResizer' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'MemcacheCacheHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kCacheHandler',
 			),
 		),
 		'MenuHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'MimeDecodeHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'MinifyHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'ModuleDeploymentLog' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'ModuleDeploymentLogEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ModulesEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ModulesTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'NParser' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'NParserCompiler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'POP3Helper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'PageHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'PageRevisionEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'PageRevisionTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'Params' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'ParserException' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Exception',
 			),
 		),
 		'PasswordHash' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'PasswordHashingMethod' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'PermissionTypeEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'PermissionsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'PermissionsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'PhraseTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'PhrasesEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'PriorityEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'PromoBlockEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'PromoBlockGroupEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'PromoBlockGroupTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'PromoBlockTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'PromoBlockType' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'RatingHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'RelatedSearchEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'RelatedSearchTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'RelationshipEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'RelationshipTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'ReviewsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ReviewsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'ScheduledTask' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'ScheduledTaskEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SelectorsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SelectorsItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'SelectorsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'Session' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'BaseSession',
 			),
 		),
 		'SessionLogEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SessionStorage' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'BaseSessionStorage',
 			),
 		),
 		'SiteConfigEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kEventHandler',
 			),
 		),
 		'SiteConfigHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'SiteConfigTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kTagProcessor',
 			),
 		),
 		'SiteDomainEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SiteHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'SkinEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SkinHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'SpamHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'SpamReportEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SpamReportTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'StatisticsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'StatisticsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'StorageEngine' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'StylesheetsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'StylesheetsItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'SubmissionFormField' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'SubmissionLogEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SubmissionLogTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'SystemEventSubscriptionEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SystemEventSubscriptionTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'SystemLogEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'SystemLogTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'TemplateHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'TemplatesCache' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'ThemeFileEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ThemeItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'ThemesEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ThemesTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'ThesaurusEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'ThesaurusTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'TranslationSaveMode' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'TranslatorEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'TranslatorTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'UnitConfigDecorator' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'UserGroupsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'UserHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'UserProfileEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'UserProfileTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'UserType' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'UsersEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'UsersItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'UsersSyncronize' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'UsersSyncronizeManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'UsersTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'VisitsEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'VisitsList' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBList',
 			),
 		),
 		'VisitsTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'XCacheCacheHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kCacheHandler',
 			),
 		),
 		'XMLIterator' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Iterator',
 			),
 		),
 		'_BlockTag' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'_Tag_Cache' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_Capture' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_Tag_DefineElement',
 			),
 		),
 		'_Tag_Comment' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_Compress' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_DefaultParam' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_DefineElement' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_If' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_IfDataExists' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_IfNot' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_Tag_If',
 			),
 		),
 		'_Tag_Include' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_Param' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_RenderElement' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_Tag_DefineElement',
 			),
 		),
 		'_Tag_RenderElements' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'_Tag_SetParam' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => '_BlockTag',
 			),
 		),
 		'clsCachedPermissions' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'clsRecursionStack' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'fckFCKHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kApplication' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kiCacheable',
 			),
 		),
 		'kArray' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kBase' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kBracketsHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCCDateFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kCSSDefaults' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kCSVHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCache' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kCacheHandler' => array(
 			'type' => 1,
 			'modifiers' => 1,
 		),
 		'kCacheManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kCaptchaHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCatDBEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBEventHandler',
 			),
 		),
 		'kCatDBItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBItem',
 			),
 		),
 		'kCatDBItemExportHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCatDBList' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBList',
 			),
 		),
 		'kCatDBTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBTagProcessor',
 			),
 		),
 		'kChangesFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kChartHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kClipboardHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kColumnPickerHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCookieHasher' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kCountHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCountryStatesHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCronField' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kCronHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCurlHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kCustomFieldFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kDBBase' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kDBConnection' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'IDBConnection',
 			),
 		),
 		'kDBConnectionDebug' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBConnection',
 			),
 		),
 		'kDBEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kEventHandler',
 			),
 		),
 		'kDBItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBBase',
 			),
 		),
 		'kDBList' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kDBBase',
 				1 => 'Iterator',
 				2 => 'Countable',
 			),
 		),
 		'kDBLoadBalancer' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'IDBConnection',
 			),
 		),
 		'kDBTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kTagProcessor',
 			),
 		),
 		'kDateFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kEmail' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kEmailSendingHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kEmailTemplateHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kErrorHandlerStack' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHandlerStack',
 			),
 		),
 		'kEvent' => array(
 			'type' => 1,
 			'modifiers' => 2,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kEventHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kEventManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kExceptionHandlerStack' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHandlerStack',
 			),
 		),
 		'kFactory' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kFactoryException' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Exception',
 			),
 		),
 		'kFilenamesHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kFilesizeFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kHTTPQuery' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Params',
 			),
 		),
 		'kHandlerStack' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kHookManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kInstallToolkit' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kInstallator' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kLEFTFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kLogger' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kMainTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kTagProcessor',
 			),
 		),
 		'kModulesHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kMultiLanguage' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kMultiLanguageHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kMultipleFilter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kMySQLQuery' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Iterator',
 				1 => 'Countable',
 				2 => 'SeekableIterator',
 			),
 		),
 		'kMySQLQueryCol' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kMySQLQuery',
 			),
 		),
 		'kNavigationBar' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kNoPermissionException' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kRedirectException',
 			),
 		),
 		'kOpenerStack' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kOptionsFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kPDFElemFactory' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kPDFElement' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kPDFHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kPDFImage' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kPDFElement',
 			),
 		),
 		'kPDFLine' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kPDFElement',
 			),
 		),
 		'kPDFRenderer' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kPDFStylesheet' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kPDFTable' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kPDFElement',
 			),
 		),
 		'kPDFTableRow' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kPDFElement',
 			),
 		),
 		'kPDFTextElement' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kPDFElement',
 			),
 		),
 		'kPasswordFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kPermCacheUpdater' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kPermissionsHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kPhraseCache' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kPictureFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kUploadFormatter',
 			),
 		),
 		'kPlainUrlProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kUrlProcessor',
 			),
 		),
 		'kPriorityHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kRecursiveHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kRedirectException' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Exception',
 			),
 		),
 		'kRequestManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kRewriteUrlProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kUrlProcessor',
 			),
 		),
 		'kScheduledTaskManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kSearchHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kSectionsHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kSerializedFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kSocket' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kSubscriptionAnalyzer' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kSubscriptionItem' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kSubscriptionManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kSystemConfig' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kSystemConfigException' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Exception',
 			),
 		),
 		'kTCPDFRenderer' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kPDFRenderer',
 			),
 		),
 		'kTagProcessor' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kTempHandlerSubTable' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kTempHandlerTable',
 			),
 		),
 		'kTempHandlerTable' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kTempHandlerTopTable' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kTempHandlerTable',
 			),
 		),
 		'kTempTablesHandler' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kThemesHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kUnitConfig' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kUnitConfigCloner' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kUnitConfigReader' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 				1 => 'kiCacheable',
 			),
 		),
 		'kUnitFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kUpgradeHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kUploadFormatter' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kFormatter',
 			),
 		),
 		'kUploadHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kUploaderException' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'Exception',
 			),
 		),
 		'kUrlManager' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kUrlProcessor' => array(
 			'type' => 1,
 			'modifiers' => 1,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kUtil' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kValidator' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kBase',
 			),
 		),
 		'kXMLHelper' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kHelper',
 			),
 		),
 		'kXMLNode' => array(
 			'type' => 1,
 			'modifiers' => 0,
 		),
 		'kXMLNode5' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kXMLNode',
 				1 => 'IteratorAggregate',
 			),
 		),
 		'kZendPDFRenderer' => array(
 			'type' => 1,
 			'modifiers' => 0,
 			'extends' => array(
 				0 => 'kPDFRenderer',
 			),
 		),
 		'kiCacheable' => array(
 			'type' => 2,
 		),
 	),
 );