+
+
+
+
+
+ |
+
+
+
+
" id="_" header_label="">
+
+
+
+ []
+
+ |
+
+
+
+
+
+
+
+Application->InitParser();
+ echo '' . $this->Application->Parser->Parse(ob_get_clean(), 'post_config') . ' | ';
+?>
\ No newline at end of file
Index: branches/RC/core/install/step_templates/fix_paths.tpl
===================================================================
diff -u -N
--- branches/RC/core/install/step_templates/fix_paths.tpl (revision 0)
+++ branches/RC/core/install/step_templates/fix_paths.tpl (revision 10832)
@@ -0,0 +1,21 @@
+Conn->GetCol($sql, 'VariableName');
+
+ $odd_even = true;
+ foreach ($config_vars as $config_var) {
+ ?>
+
+ Application->Phrase( $config_labels[$config_var] ); ?>: |
+
+
+ |
+
+
\ No newline at end of file
Index: branches/RC/core/kernel/startup.php
===================================================================
diff -u -N -r10098 -r10832
--- branches/RC/core/kernel/startup.php (.../startup.php) (revision 10098)
+++ branches/RC/core/kernel/startup.php (.../startup.php) (revision 10832)
@@ -1,7 +1,7 @@
Don\'t forget to clean Cache table afterwards');
+ define('KERNEL_PATH', FULL_PATH . '/core/kernel');
+ if (file_exists(FULL_PATH . '/kernel/kernel4/application.php')) {
+ die('Please remove ' . FULL_PATH . '/kernel/kernel4 directiry - it has been moved to ' . KERNEL_PATH . ' Don\'t forget to clean Cache table afterwards');
}
if (!function_exists('getmicrotime')) {
@@ -12,29 +12,29 @@
}
}
$globals_start = getmicrotime();
- include_once(KERNEL_PATH.'/globals.php'); // non OOP functions used through kernel, e.g. print_pre
- include_once(KERNEL_PATH.'/utility/multibyte.php'); // emulating multi-byte php extension
+ include_once(KERNEL_PATH . '/globals.php'); // non OOP functions used through kernel, e.g. print_pre
+ include_once(KERNEL_PATH . '/utility/multibyte.php'); // emulating multi-byte php extension
$globals_end = getmicrotime();
define('INPORTAL_ENV', 1);
- $vars = parse_portal_ini(FULL_PATH.'/config.php');
+ $vars = parse_portal_ini(FULL_PATH . '/config.php');
$admin_directory = isset($vars['AdminDirectory']) ? $vars['AdminDirectory'] : '/admin';
safeDefine('ADMIN_DIRECTORY', $admin_directory);
# New path detection method: begin
if (defined('REL_PATH')) {
// location of index.php relatively to site base folder
- $relative_path = preg_replace('/^[\/]{0,1}admin(.*)/', $admin_directory.'\\1', REL_PATH);
+ $relative_path = preg_replace('/^[\/]{0,1}admin(.*)/', $admin_directory . '\\1', REL_PATH);
}
else {
// default index.php relative location is administrative console folder
define('REL_PATH', $admin_directory);
$relative_path = REL_PATH;
}
- $ps = rtrim(preg_replace('/'.preg_quote(rtrim($relative_path, '/'), '/').'$/', '', str_replace('\\', '/', dirname($_SERVER['PHP_SELF']))), '/');
+ $ps = rtrim(preg_replace('/' . preg_quote(rtrim($relative_path, '/'), '/') . '$/', '', str_replace('\\', '/', dirname($_SERVER['PHP_SELF']))), '/');
safeDefine('BASE_PATH', $ps); // in case in-portal has defined it before
# New path detection method: end
@@ -48,16 +48,16 @@
safeDefine('APPLICATION_PATH', isset($vars['ApplicationPath']) ? $vars['ApplicationPath'] : '/core/kernel/application.php');
if (isset($vars['WriteablePath'])) {
- define('WRITEABLE', FULL_PATH.$vars['WriteablePath']);
+ define('WRITEABLE', FULL_PATH . $vars['WriteablePath']);
define('WRITEBALE_BASE', $vars['WriteablePath']);
}
if ($vars === false || count($vars) == 0) {
global $rootURL;
echo 'In-Portal is probably not installed, or configuration file is missing. ';
echo 'Please use the installation script to fix the problem.
';
- $install_script = file_exists(FULL_PATH.'/proj-base/install.php') ? 'core' : 'admin';
- echo 'Go to installation script
';
+ $install_script = file_exists(FULL_PATH . '/proj-base/install.php') ? 'core' : 'admin';
+ echo 'Go to installation script
';
flush();
exit;
}
@@ -74,20 +74,22 @@
}
define('TABLE_PREFIX', $vars['TablePrefix']);
-
define('DOMAIN', getArrayValue($vars, 'Domain'));
ini_set('memory_limit', '50M');
define('MODULES_PATH', FULL_PATH);
- define('EXPORT_PATH', defined('WRITEABLE') ? WRITEABLE.'/export' : FULL_PATH.ADMIN_DIRECTORY.'/export');
- define('GW_CLASS_PATH', MODULES_PATH.'/in-commerce/units/gateways/gw_classes'); // Payment Gateway Classes Path
- define('SYNC_CLASS_PATH', FULL_PATH.'/sync'); // path for 3rd party user syncronization scripts
+ define('EXPORT_BASE_PATH', (defined('WRITEBALE_BASE') ? WRITEBALE_BASE : ADMIN_DIRECTORY) . '/export');
+ define('EXPORT_PATH', FULL_PATH . EXPORT_BASE_PATH);
+
+ define('GW_CLASS_PATH', MODULES_PATH . '/in-commerce/units/gateways/gw_classes'); // Payment Gateway Classes Path
+ define('SYNC_CLASS_PATH', FULL_PATH . '/sync'); // path for 3rd party user syncronization scripts
+
safeDefine('ENV_VAR_NAME','env');
- safeDefine('IMAGES_PATH', '/kernel/images/');
- safeDefine('IMAGES_PENDING_PATH', IMAGES_PATH.'pending/');
+ safeDefine('IMAGES_PATH', (defined('WRITEBALE_BASE') ? WRITEBALE_BASE : '/kernel') . '/images/');
+ safeDefine('IMAGES_PENDING_PATH', IMAGES_PATH . 'pending/');
safeDefine('CUSTOM_UPLOAD_PATH', '/templates/images/custom/');
safeDefine('MAX_UPLOAD_SIZE', min(ini_get('upload_max_filesize'), ini_get('post_max_size'))*1024*1024);
@@ -96,37 +98,37 @@
safeDefine('EXPERIMENTAL_PRE_PARSE', 1);
safeDefine('SILENT_LOG', 0);
- if( file_exists(FULL_PATH.'/debug.php') )
+ if( file_exists(FULL_PATH . '/debug.php') )
{
- include_once(FULL_PATH.'/debug.php');
+ include_once(FULL_PATH . '/debug.php');
if(isset($dbg_options['DEBUG_MODE']) && $dbg_options['DEBUG_MODE']) {
$debugger_start = getmicrotime();
- include_once(KERNEL_PATH.'/utility/debugger.php');
+ include_once(KERNEL_PATH . '/utility/debugger.php');
$debugger_end = getmicrotime();
if (isset($debugger) && constOn('DBG_PROFILE_INCLUDES')) {
- $debugger->profileStart('inc_globals', KERNEL_PATH.'/globals.php', $globals_start);
- $debugger->profileFinish('inc_globals', KERNEL_PATH.'/globals.php', $globals_end);
+ $debugger->profileStart('inc_globals', KERNEL_PATH . '/globals.php', $globals_start);
+ $debugger->profileFinish('inc_globals', KERNEL_PATH . '/globals.php', $globals_end);
$debugger->profilerAddTotal('includes', 'inc_globals');
- $debugger->profileStart('inc_debugger', KERNEL_PATH.'/utility/debugger.php', $debugger_start);
- $debugger->profileFinish('inc_debugger', KERNEL_PATH.'/utility/debugger.php', $debugger_end);
+ $debugger->profileStart('inc_debugger', KERNEL_PATH . '/utility/debugger.php', $debugger_start);
+ $debugger->profileFinish('inc_debugger', KERNEL_PATH . '/utility/debugger.php', $debugger_end);
$debugger->profilerAddTotal('includes', 'inc_debugger');
}
}
}
$includes = Array(
- KERNEL_PATH.'/application.php',
- FULL_PATH.APPLICATION_PATH,
- KERNEL_PATH.'/db/db_connection.php',
- KERNEL_PATH."/kbase.php",
- KERNEL_PATH.'/utility/event.php',
- KERNEL_PATH."/utility/factory.php",
- KERNEL_PATH."/languages/phrases_cache.php",
- KERNEL_PATH."/db/dblist.php",
- KERNEL_PATH."/db/dbitem.php",
- KERNEL_PATH."/event_handler.php",
- KERNEL_PATH.'/db/db_event_handler.php',
+ KERNEL_PATH . '/application.php',
+ FULL_PATH . APPLICATION_PATH,
+ KERNEL_PATH . '/db/db_connection.php',
+ KERNEL_PATH . "/kbase.php",
+ KERNEL_PATH . '/utility/event.php',
+ KERNEL_PATH . "/utility/factory.php",
+ KERNEL_PATH . "/languages/phrases_cache.php",
+ KERNEL_PATH . "/db/dblist.php",
+ KERNEL_PATH . "/db/dbitem.php",
+ KERNEL_PATH . "/event_handler.php",
+ KERNEL_PATH . '/db/db_event_handler.php',
);
foreach ($includes as $a_file) {
@@ -137,9 +139,9 @@
$debugger->AttachToApplication();
}
- if( !function_exists('adodb_mktime') ) include_once(KERNEL_PATH.'/utility/adodb-time.inc.php');
+ if( !function_exists('adodb_mktime') ) include_once(KERNEL_PATH . '/utility/adodb-time.inc.php');
-// include_once(KERNEL_PATH."/utility/temp_handler.php"); // needed because of static calls from kBase
+// include_once(KERNEL_PATH . '/utility/temp_handler.php'); // needed because of static calls from kBase
// up to here
// global constants
Index: branches/RC/admin/install.php
===================================================================
diff -u -N -r10304 -r10832
--- branches/RC/admin/install.php (.../install.php) (revision 10304)
+++ branches/RC/admin/install.php (.../install.php) (revision 10832)
@@ -1720,12 +1720,14 @@
$ado->Execute("DROP TABLE IF EXISTS $EventTable");
$ado->Execute('INSERT INTO '.$g_TablePrefix.'Cache (VarName, Data) VALUES (\'ForcePermCacheUpdate\', \'1\')');
- if ($application->ConfigValue('InstallFinished') === false) {
- $fields_hash = Array (
- 'VariableName' => 'InstallFinished',
- 'VariableValue' => 1,
- );
- $application->Conn->doInsert($fields_hash, TABLE_PREFIX.'ConfigurationValues');
+ $sql = 'SELECT VariableValue
+ FROM ' . $g_TablePrefix . 'ConfigurationValues
+ WHERE VariableName = "InstallFinished"';
+ if (!$ado->GetOne($sql)) {
+ // not installed -> set installation mark
+ $sql = 'INSERT INTO ' . $g_TablePrefix . 'ConfigurationValues (VariableName, VariableValue)
+ VALUES ("InstallFinished", 1)';
+ $ado->Execute($sql);
}
$include_file = $pathtoroot.$admin."/install/install_finish.php";
Index: branches/RC/core/install.php
===================================================================
diff -u -N -r10509 -r10832
--- branches/RC/core/install.php (.../install.php) (revision 10509)
+++ branches/RC/core/install.php (.../install.php) (revision 10832)
@@ -7,20 +7,7 @@
define('FULL_PATH', realpath(dirname(__FILE__).'/..') );
define('REL_PATH', '/core');
- /**
- * Upgrade sqls are located using this mask
- *
- */
- define('UPGRADES_FILE', FULL_PATH.'/%sinstall/upgrades.%s');
-
- /**
- * Format of version identificator in upgrade files
- *
- */
- define('VERSION_MARK', '# ===== v ([\d]+\.[\d]+\.[\d]+) =====');
-
-// print_pre($_POST);
-
+ // run installator
$install_engine = new kInstallator();
$install_engine->Init();
$install_engine->Run();
@@ -43,26 +30,13 @@
var $Conn = null;
/**
- * Path to config.php
- *
- * @var string
- */
- var $INIFile = '';
-
- /**
* XML file containing steps information
*
* @var string
*/
var $StepDBFile = '';
/**
- * Parsed data from config.php
- *
- * @var Array
- */
- var $systemConfig = Array ();
- /**
* Step name, that currently being processed
*
* @var string
@@ -81,36 +55,51 @@
*
* @var Array
*/
- var $steps = Array(
- 'fresh_install' => Array ('check_paths', 'db_config', 'root_password', 'choose_modules', 'finish'),
- 'already_installed' => Array ('install_setup'),
+ var $steps = Array (
+ 'fresh_install' => Array ('check_paths', 'db_config', 'select_license', 'download_license', 'select_domain', 'root_password', 'choose_modules', 'post_config', 'select_theme', 'finish'),
+ 'already_installed' => Array ('check_paths', 'install_setup'),
- 'upgrade' => Array ('install_setup', 'upgrade_modules', /* ..., */ 'finish'),
- 'db_reconfig' => Array ('install_setup',/* ..., */ 'finish'),
- 'fix_paths' => Array ('install_setup',/* ..., */ 'finish'),
- );
+ 'upgrade' => Array ('check_paths', 'install_setup', 'upgrade_modules', 'finish'),
+ 'update_license' => Array ('check_paths', 'install_setup', 'select_license', 'download_license', 'select_domain', 'finish'),
+ 'db_reconfig' => Array ('check_paths', 'install_setup', 'db_reconfig', 'finish'),
+ 'fix_paths' => Array ('check_paths', 'install_setup', 'fix_paths', 'finish'),
+ );
-
/**
* Steps, that doesn't required admin to be logged-in to proceed
*
* @var Array
*/
- var $skipLoginSteps = Array ('root_password', 'choose_modules', 'finish', -1);
+ var $skipLoginSteps = Array ('check_paths', 'select_license', 'download_license', 'select_domain', 'root_password', 'choose_modules', 'post_config', 'select_theme', 'finish', -1);
/**
* Steps, on which kApplication should not be initialized, because of missing correct db table structure
*
* @var Array
*/
- var $skipApplicationSteps = Array ('check_paths', 'db_config'/*, 'install_setup'*/); // remove install_setup when application will work separately from install
+ var $skipApplicationSteps = Array ('check_paths', 'db_config', 'db_reconfig' /*, 'install_setup'*/); // remove install_setup when application will work separately from install
/**
- * Folders that should be writeable to continue installation
+ * Folders that should be writeable to continue installation. $1 - main writeable folder from config.php ("/system" by default)
*
* @var Array
*/
- var $writeableFolders = Array ('/system');
+ var $writeableFolders = Array (
+ '$1',
+ '$1/images',
+ '$1/images/resized',
+ '$1/images/pending',
+ '$1/images/pending/resized',
+ '$1/images/emoticons', // for "In-Bulletin"
+ '$1/images/manufacturers', // for "In-Commerce"
+ '$1/images/manufacturers/resized', // for "In-Commerce"
+ '$1/backupdata',
+ '$1/export',
+ '$1/stylesheets',
+ '$1/user_files',
+ '$1/cache',
+ '/themes',
+ );
/**
* Contains last error message text
@@ -129,31 +118,44 @@
/**
* Holds number of last executed query in the SQL
*
- * @var unknown_type
+ * @var int
*/
var $LastQueryNum = 0;
+ /**
+ * Common tools required for installation process
+ *
+ * @var kInstallToolkit
+ */
+ var $toolkit = null;
+
function Init()
{
- $this->INIFile = FULL_PATH.'/config.php';
+ // connect toolkit required for module installations to installator and via versa
+ require_once FULL_PATH . REL_PATH . '/install/install_toolkit.php';
+ $this->toolkit = new kInstallToolkit();
+ $this->toolkit->setInstallator(&$this);
+
$this->StepDBFile = FULL_PATH.'/'.REL_PATH.'/install/steps_db.xml';
$base_path = rtrim(preg_replace('/'.preg_quote(rtrim(REL_PATH, '/'), '/').'$/', '', str_replace('\\', '/', dirname($_SERVER['PHP_SELF']))), '/');
$this->baseURL = 'http://'.$_SERVER['HTTP_HOST'].$base_path.'/core/install/';
set_error_handler( Array(&$this, 'ErrorHandler') );
- if (file_exists($this->INIFile)) {
+ if (file_exists($this->toolkit->INIFile)) {
// if config.php found, then check his write permission too
$this->writeableFolders[] = '/config.php';
}
else {
$this->writeableFolders[] = '/';
}
- $this->systemConfig = $this->ParseConfig(true);
- $this->systemConfig['Misc']['WriteablePath'] = '/system'; // for development purposes
- $this->systemConfig['Misc']['Domain'] = $_SERVER['HTTP_HOST']; // for redirects from SSL mode
+ if (!$this->toolkit->getSystemConfig('Misc', 'WriteablePath')) {
+ // set global writable folder when such setting is missing
+ $this->toolkit->setSystemConfig('Misc', 'WriteablePath', '/system');
+ }
+
$this->currentStep = $this->GetVar('step');
// can't check login on steps where no application present anyways :)
@@ -181,12 +183,12 @@
function SelectPreset()
{
$preset = $this->GetVar('preset');
- if (file_exists($this->INIFile) && $this->systemConfig) {
+ if ($this->toolkit->systemConfigFound()) {
// only at installation first step
$status = $this->CheckDatabase(false);
if ($status && $this->AlreadyInstalled()) {
// if already installed, then all future actions need login to work
- $this->skipLoginSteps = Array (-1);
+ $this->skipLoginSteps = Array ('check_paths', -1);
if (!$preset) {
$preset = 'already_installed';
$this->currentStep = '';
@@ -202,9 +204,14 @@
function GetVar($name)
{
- return isset($_REQUEST[$name]) ? $_REQUEST[$name] : false;
+ return array_key_exists($name, $_REQUEST) ? $_REQUEST[$name] : false;
}
+ function SetVar($name, $value)
+ {
+ $_REQUEST[$name] = $value;
+ }
+
/**
* Performs needed intialization of data, that step requires
*
@@ -218,42 +225,51 @@
// step require login to proceed
if (!$this->Application->LoggedIn()) {
$this->stepsPreset = 'already_installed';
- $this->SetFirstStep();
+ $this->currentStep = 'install_setup'; // manually set 2nd step, because 'check_paths' step doesn't contain login form
+// $this->SetFirstStep();
}
}
switch ($this->currentStep) {
case 'check_paths':
+ $writeable_base = $this->toolkit->getSystemConfig('Misc', 'WriteablePath');
foreach ($this->writeableFolders as $folder_path) {
- $file_path = FULL_PATH.$folder_path;
- if (!is_writable($file_path)) {
+ $file_path = FULL_PATH . str_replace('$1', $writeable_base, $folder_path);
+ if (file_exists($file_path) && !is_writable($file_path)) {
$this->errorMessage = 'Install cannot write to specified folder in the root directory of your installation';
break;
}
}
break;
case 'db_config':
- $section_name = 'Database';
- $fields = Array ('DBType', 'DBHost', 'DBName', 'DBUser', 'DBUserPassword', 'DBCollation', 'TablePrefix');
+ case 'db_reconfig':
+ $fields = Array (
+ 'DBType', 'DBHost', 'DBName', 'DBUser',
+ 'DBUserPassword', 'DBCollation', 'TablePrefix'
+ );
- if (!isset($this->systemConfig[$section_name])) {
- $this->systemConfig[$section_name] = Array ();
- }
-
// set fields
foreach ($fields as $field_name) {
$submit_value = $this->GetVar($field_name);
if ($submit_value !== false) {
- $this->systemConfig[$section_name][$field_name] = $submit_value;
+ $this->toolkit->setSystemConfig('Database', $field_name, $submit_value);
}
- elseif (!isset($this->systemConfig[$section_name][$field_name])) {
- $this->systemConfig[$section_name][$field_name] = '';
- }
+ /*else {
+ $this->toolkit->setSystemConfig('Database', $field_name, '');
+ }*/
}
break;
+ case 'download_license':
+ $license_source = $this->GetVar('license_source');
+ if ($license_source !== false && $license_source != 1) {
+ // previous step was "Select License" and not "Download from Intechnic" option was selected
+ $this->currentStep = $this->GetNextStep();
+ }
+ break;
+
case 'choose_modules':
// if no modules found, then proceed to next step
$modules = $this->ScanModules();
@@ -262,6 +278,18 @@
}
break;
+ case 'select_theme':
+ if (count($this->toolkit->getThemes(true)) == 1) {
+ // only one theme -> set it as primary
+ $sql = 'UPDATE ' . $this->Application->getUnitOption('theme', 'TableName') . 'Theme
+ SET Enabled = 1, PrimaryTheme = 1
+ LIMIT 1';
+ $this->Conn->Query($sql);
+
+ $this->currentStep = $this->GetNextStep();
+ }
+ break;
+
case 'upgrade_modules':
// get installed modules from db and compare their versions to upgrade script
$modules = $this->GetUpgradableModules();
@@ -272,28 +300,55 @@
case 'install_setup':
$next_preset = $this->Application->GetVar('next_preset');
- if ($next_preset !== false && $this->Application->GetVar('login') == 'root') {
- // option was choosen, then verify password & login user
- $login_event = new kEvent('u.current:OnLogin');
- $this->Application->HandleEvent($login_event);
+ if ($next_preset !== false) {
+ if ($this->Application->GetVar('login') == 'root') {
+ // verify "root" user using configuration settings
+ $login_event = new kEvent('u.current:OnLogin');
+ $this->Application->HandleEvent($login_event);
- if ($login_event->status == erSUCCESS) {
- // login succeeded
+ if ($login_event->status != erSUCCESS) {
+ $user =& $this->Application->recallObject('u.current');
+ /* @var $user UsersItem */
+ $this->errorMessage = $user->GetErrorMsg('ValidateLogin') . '. If you don\'t know your username or password, contact Intechnic Support';
+ }
+ }
+ else {
+ // non "root" user -> verify using licensing server
+ $url_params = Array (
+ 'login=' . md5( $this->GetVar('login') ),
+ 'password=' . md5( $this->GetVar('password') ),
+ 'action=check',
+ 'license_code=' . base64_encode( $this->toolkit->getSystemConfig('Intechnic', 'LicenseCode') ),
+ 'version=' . '4.3.0',//$this->toolkit->GetMaxModuleVersion('In-Portal'),
+ 'domain=' . base64_encode($_SERVER['HTTP_HOST']),
+ );
+
+ $license_url = GET_LICENSE_URL . '?' . implode('&', $url_params);
+ $file_data = curl_post($license_url, '', null, 'GET');
+
+ if (substr($file_data, 0, 5) == 'Error') {
+ $this->errorMessage = substr($file_data, 6) . ' If you don\'t know your username or password, contact Intechnic Support';
+ }
+
+ if ($this->errorMessage == '') {
+ $user_id = -1;
+ $session =& $this->Application->recallObject('Session');
+ $session->SetField('PortalUserId', $user_id);
+ $this->Application->SetVar('u.current_id', $user_id);
+ $this->Application->StoreVar('user_id', $user_id);
+ }
+ }
+
+ if ($this->errorMessage == '') {
+ // processed with redirect to selected step preset
if (!isset($this->steps[$next_preset])) {
$this->errorMessage = 'Preset "'.$next_preset.'" not yet implemented';
}
else {
$this->stepsPreset = $next_preset;
}
}
- else {
- // login failed
- $user =& $this->Application->recallObject('u.current');
- /* @var $user UsersItem */
-
- $this->errorMessage = $user->GetErrorMsg('ValidateLogin').'. If you don\'t know your username or password, contact Intechnic Support';
- }
}
else {
// if preset was not choosen, then raise error
@@ -321,11 +376,12 @@
switch ($this->currentStep) {
case 'db_config':
+ case 'db_reconfig':
// 1. check if required fields are filled
$section_name = 'Database';
$required_fields = Array ('DBType', 'DBHost', 'DBName', 'DBUser', 'DBCollation');
foreach ($required_fields as $required_field) {
- if (!$this->systemConfig[$section_name][$required_field]) {
+ if (!$this->toolkit->getSystemConfig($section_name, $required_field)) {
$status = false;
$this->errorMessage = 'Please fill all required fields';
break;
@@ -334,9 +390,21 @@
if (!$status) break;
// 2. check permissions, that use have in this database
- $status = $this->CheckDatabase();
+ $status = $this->CheckDatabase(($this->currentStep == 'db_config') && !$this->GetVar('UseExistingSetup'));
break;
+ case 'select_license':
+ if ($this->GetVar('license_source') == 2) {
+ // license from file -> file must be uploaded
+ $upload_error = $_FILES['license_file']['error'];
+ if ($upload_error != UPLOAD_ERR_OK) {
+ $this->errorMessage = 'Missing License File';
+ }
+
+ $status = $this->errorMessage == '';
+ }
+ break;
+
case 'root_password':
// check, that password & verify password match
$password = $this->Application->GetVar('root_password');
@@ -351,6 +419,23 @@
$status = $this->errorMessage == '';
break;
+
+ case 'choose_modules':
+ case 'upgrade_modules':
+ $modules = $this->Application->GetVar('modules');
+ if (!$modules) {
+ $this->errorMessage = 'Please select module(-s) to ' . ($this->currentStep == 'choose_modules' ? 'install' : 'upgrade');
+ }
+
+ $found['In-Portal'] = in_array('kernel', $modules);
+ $found['Proj-Base'] = in_array('proj-base', $modules);
+
+ if (!$found['In-Portal'] && !$found['Proj-Base']) {
+ $this->errorMessage = 'Please ' . ($modules ? 'also ' : '') . 'select "' . implode('" or "', array_keys($found)) . '" as interface module';
+ }
+
+ $status = $this->errorMessage == '';
+ break;
}
return $status;
@@ -369,44 +454,216 @@
switch ($this->currentStep) {
case 'db_config':
+ case 'db_reconfig':
// store db configuration
$sql = 'SHOW COLLATION
- LIKE \''.$this->systemConfig['Database']['DBCollation'].'\'';
+ LIKE \''.$this->toolkit->getSystemConfig('Database', 'DBCollation').'\'';
$collation_info = $this->Conn->Query($sql);
if ($collation_info) {
- $this->systemConfig['Database']['DBCharset'] = $collation_info[0]['Charset'];
+ $this->toolkit->setSystemConfig('Database', 'DBCharset', $collation_info[0]['Charset']);
// database is already connected, that's why set collation on the fly
- $this->Conn->Query('SET NAMES \''.$this->systemConfig['Database']['DBCharset'].'\' COLLATE \''.$this->systemConfig['Database']['DBCollation'].'\'');
+ $this->Conn->Query('SET NAMES \''.$this->toolkit->getSystemConfig('Database', 'DBCharset').'\' COLLATE \''.$this->toolkit->getSystemConfig('Database', 'DBCollation').'\'');
}
- $this->SaveConfig();
+ $this->toolkit->SaveConfig();
- // import base data into database
- $this->RunSQL('/core/install/install_schema.sql');
- $this->RunSQL('/core/install/install_data.sql');
+ if ($this->currentStep == 'db_config') {
+ if ($this->GetVar('UseExistingSetup')) {
+ // abort clean install and redirect to already_installed
+ $this->stepsPreset = 'already_installed';
+ break;
+ }
- // set module "Core" version after install (based on upgrade scripts)
- $this->SetModuleVersion('Core');
+ // import base data into new database, not for db_reconfig
+ $this->toolkit->RunSQL('/core/install/install_schema.sql');
+ $this->toolkit->RunSQL('/core/install/install_data.sql');
+
+ // set module "Core" version after install (based on upgrade scripts)
+ $this->toolkit->SetModuleVersion('Core');
+ }
break;
+ case 'select_license':
+ $license_source = $this->GetVar('license_source');
+ switch ($license_source) {
+ case 1: // Download from Intechnic
+
+ break;
+
+ case 2: // Upload License File
+ $file_data = array_map('trim', file($_FILES['license_file']['tmp_name']));
+ if ((count($file_data) == 3) && $file_data[1]) {
+ $modules_helper =& $this->Application->recallObject('ModulesHelper');
+ /* @var $modules_helper kModulesHelper */
+
+ if ($modules_helper->verifyLicense($file_data[1])) {
+ $this->toolkit->setSystemConfig('Intechnic', 'License', $file_data[1]);
+ $this->toolkit->setSystemConfig('Intechnic', 'LicenseCode', $file_data[2]);
+ $this->toolkit->SaveConfig();
+ }
+ else {
+ $this->errorMessage = 'Invalid License File';
+ }
+ }
+ else {
+ $this->errorMessage = 'Invalid License File';
+ }
+ break;
+
+ case 3: // Use Existing License
+ $license_hash = $this->toolkit->getSystemConfig('Intechnic', 'License');
+ if ($license_hash) {
+ $modules_helper =& $this->Application->recallObject('ModulesHelper');
+ /* @var $modules_helper kModulesHelper */
+
+ if (!$modules_helper->verifyLicense($license_hash)) {
+ $this->errorMessage = 'Invalid or corrupt license detected';
+ }
+ }
+ else {
+ // happens, when browser's "Back" button is used
+ $this->errorMessage = 'Missing License File';
+ }
+ break;
+
+ case 4: // Skip License (Local Domain Installation)
+ if ($this->toolkit->sectionFound('Intechnic')) {
+ // remove any previous license information
+ $this->toolkit->setSystemConfig('Intechnic', 'License');
+ $this->toolkit->setSystemConfig('Intechnic', 'LicenseCode');
+ $this->toolkit->SaveConfig();
+ }
+ break;
+ }
+ break;
+
+ case 'download_license':
+ $license_login = $this->GetVar('login');
+ $license_password = $this->GetVar('password');
+ $license_id = $this->GetVar('licenses');
+
+ if (strlen($license_login) && strlen($license_password) && !$license_id) {
+ // Here we determine weather login is ok & check available licenses
+ $url_params = Array (
+ 'login=' . md5($license_login),
+ 'password=' . md5($license_password),
+ 'version=' . $this->toolkit->GetMaxModuleVersion('In-Portal'),
+ 'domain=' . base64_encode($_SERVER['HTTP_HOST']),
+ );
+
+ $license_url = GET_LICENSE_URL . '?' . implode('&', $url_params);
+ $file_data = curl_post($license_url, '', null, 'GET');
+ if (!$file_data) {
+ // error connecting to licensing server
+ $this->errorMessage = 'Unable to connect to the Intechnic server! Please try again later!';
+ }
+ else {
+ if (substr($file_data, 0, 5) == 'Error') {
+ // after processing data server returned error
+ $this->errorMessage = substr($file_data, 6);
+ }
+ else {
+ // license received
+ if (substr($file_data, 0, 3) == 'SEL') {
+ // we have more, then one license -> let user choose
+ $this->SetVar('license_selection', base64_encode( substr($file_data, 4) )); // we received html with radio buttons with names "licenses"
+ $this->errorMessage = 'Please select which license to use';
+ }
+ else {
+ // we have one license
+ $this->toolkit->processLicense($file_data);
+ }
+ }
+ }
+ }
+ else if (!$license_id) {
+ // licenses were not queried AND user/password missing
+ $this->errorMessage = 'Incorrect Username or Password. If you don\'t know your username or password, contact Intechnic Support';
+ }
+ else {
+ // Here we download license
+ $url_params = Array (
+ 'license_id=' . md5($license_id),
+ 'dlog=' . md5($license_login),
+ 'dpass=' . md5($license_password),
+ 'version=' . $this->toolkit->GetMaxModuleVersion('In-Portal'),
+ 'domain=' . base64_encode($_SERVER['HTTP_HOST']),
+ );
+
+ $license_url = GET_LICENSE_URL . '?' . implode('&', $url_params);
+ $file_data = curl_post($license_url, '', null, 'GET');
+
+ if (!$file_data) {
+ // error connecting to licensing server
+ $this->errorMessage = 'Unable to connect to the Intechnic server! Please try again later!';
+ }
+ else {
+ if (substr($file_data, 0, 5) == 'Error') {
+ // after processing data server returned error
+ $this->errorMessage = substr($file_data, 6);
+ }
+ else {
+ $this->toolkit->processLicense($file_data);
+ }
+ }
+ }
+ break;
+
+ case 'select_domain':
+ $modules_helper =& $this->Application->recallObject('ModulesHelper');
+ /* @var $modules_helper kModulesHelper */
+
+ $license_hash = $this->toolkit->getSystemConfig('Intechnic', 'License');
+ if ($license_hash) {
+ // when license present, then extract domain from it
+ $license_hash = base64_decode($license_hash);
+ list ( , , $license_keys) = $modules_helper->_ParseLicense($license_hash);
+ $license_domain = $license_keys[0]['domain'];
+ }
+ else {
+ // when license missing, then use current domain
+ $license_domain = $_SERVER['HTTP_HOST'];
+ }
+
+ $domain = $this->GetVar('domain') == 1 ? $_SERVER['HTTP_HOST'] : str_replace(' ', '', $this->GetVar('other'));
+
+ if ($domain != '') {
+ if (strstr($domain, $license_domain) || $modules_helper->_IsLocalSite($domain)) {
+ $this->toolkit->setSystemConfig('Intechnic', 'Domain', $domain);
+ $this->toolkit->SaveConfig();
+ }
+ else {
+ $this->errorMessage = 'Domain name entered does not match domain name in the license!';
+ }
+ }
+ else {
+ $this->errorMessage = 'Please enter valid domain!';
+ }
+ break;
+
case 'root_password':
// update root password in database
$password = md5( md5($this->Application->GetVar('root_password')) . 'b38');
- $this->SetConfigValue('RootPass', $password);
- // set Site_Path (for SSL & old in-portal code)
- $this->SetConfigValue('Site_Path', BASE_PATH.'/');
+ $config_values = Array (
+ 'RootPass' => $password,
+ 'Site_Path' => BASE_PATH.'/', // set Site_Path (for SSL & old in-portal code)
+ 'Backup_Path' => FULL_PATH . $this->toolkit->getSystemConfig('Misc', 'WriteablePath') . '/backupdata',
+ 'Smtp_AdminMailFrom' => 'portal@' . $this->toolkit->getSystemConfig('Intechnic', 'Domain')
+ );
+ $this->toolkit->saveConfigValues($config_values);
+
// import base language for core (english)
- $this->ImportLanguage('/core/install/english');
+ $this->toolkit->ImportLanguage('/core/install/english');
// set imported language as primary
$lang =& $this->Application->recallObject('lang.-item', null, Array('skip_autoload' => true));
/* @var $lang LanguagesItem */
$lang->Load(1); // fresh install => ID=1
- $lang->setPrimary();
+ $lang->setPrimary(true); // for Front-End
break;
case 'choose_modules':
@@ -419,22 +676,57 @@
include_once($install_file);
// set module version after install (based on upgrade scripts)
- $this->SetModuleVersion($module);
+ $this->toolkit->SetModuleVersion($module);
}
}
}
- // scan themes
- $this->Application->HandleEvent($themes_event, 'adm:OnRebuildThemes');
- $this->Conn->Query('UPDATE '.TABLE_PREFIX.'Theme SET Enabled=1, PrimaryTheme =1 LIMIT 1');
-
- // update categories cache
+ // update category cache
$updater =& $this->Application->recallObject('kPermCacheUpdater');
/* @var $updater kPermCacheUpdater */
$updater->OneStepRun();
break;
+ case 'post_config':
+ $this->toolkit->saveConfigValues( $this->GetVar('config') );
+ break;
+
+ case 'select_theme':
+ // 1. mark theme, that user is selected
+ $theme_id = $this->GetVar('theme');
+ $theme_table = $this->Application->getUnitOption('theme', 'TableName');
+ $theme_idfield = $this->Application->getUnitOption('theme', 'IDField');
+
+ $sql = 'UPDATE ' . $theme_table . '
+ SET Enabled = 1, PrimaryTheme = 1
+ WHERE ' . $theme_idfield . ' = ' . $theme_id;
+ $this->Conn->Query($sql);
+
+ if ($this->Application->isModuleEnabled('In-Portal')) {
+ // 2. compile theme stylesheets (only In-Portal uses them)
+ $css_table = $this->Application->getUnitOption('css', 'TableName');
+ $css_idfield = $this->Application->getUnitOption('css', 'IDField');
+
+ $sql = 'SELECT LOWER(Name) AS Name, ' . $css_idfield . '
+ FROM ' . $css_table;
+ $css_hash = $this->Conn->GetCol($sql, $css_idfield);
+
+ $css_item =& $this->Application->recallObject('css', null, Array('skip_autoload' => true));
+ /* @var $css_item StyleshetsItem */
+
+ foreach ($css_hash as $stylesheet_id => $theme_name) {
+ $css_item->Load($stylesheet_id);
+ $css_item->Compile();
+
+ $sql = 'UPDATE ' . $theme_table . '
+ SET StylesheetId = ' . $stylesheet_id . '
+ WHERE LOWER(Name) = ' . $this->Conn->qstr($theme_name);
+ $this->Conn->Query($sql);
+ }
+ }
+ break;
+
case 'upgrade_modules':
// get installed modules from db and compare their versions to upgrade script
$modules = $this->Application->GetVar('modules');
@@ -466,7 +758,7 @@
if (!$start_from_module) {
$this->RunUpgrades($module_info['Path'], $regs[1], 'before');
}
- if (!$this->RunSQLText($sqls, null, null, $start_from_query)) {
+ if (!$this->toolkit->RunSQLText($sqls, null, null, $start_from_query)) {
$this->errorMessage .= '';
$this->errorMessage .= '';
$this->errorMessage .= ' Click Continue button below to skip this query and go further ';
@@ -475,20 +767,20 @@
$start_from_query = 0; // so that next module start from the beggining
$this->RunUpgrades($module_info['Path'], $regs[1], 'after');
- // after upgrade sqls are executed update version
- $this->SetModuleVersion($module_name, $module_info['ToVersion']);
+ // after upgrade sqls are executed update version and upgrade language pack
+ $this->toolkit->SetModuleVersion($module_name, $module_info['ToVersion']);
+ $this->toolkit->ImportLanguage('/' . $module_info['Path'] . 'install/english', true);
}
}
- else {
- $this->errorMessage = 'Please select module(-s) to upgrade';
- }
break;
+ case 'fix_paths':
+ $this->toolkit->saveConfigValues( $this->Application->GetVar('config') );
+ break;
+
case 'finish':
// delete cache
- $sql = 'DELETE FROM '.TABLE_PREFIX.'Cache
- WHERE VarName IN ("config_files","configs_parsed","sections_parsed")';
- $this->Conn->Query($sql);
+ $this->toolkit->deleteCache();
// set installation finished mark
if ($this->Application->ConfigValue('InstallFinished') === false) {
@@ -541,8 +833,8 @@
}
$upgrade_object = new $upgrade_classes[$module_path]();
- if (method_exists($upgrade_object, 'setInstallator')) {
- $upgrade_object->setInstallator($this);
+ if (method_exists($upgrade_object, 'setToolkit')) {
+ $upgrade_object->setToolkit(&$this->toolkit);
}
foreach ($versions as $version) {
@@ -554,41 +846,6 @@
}
/**
- * Sets module version to passed
- *
- * @param string $module_name
- * @param string $version
- */
- function SetModuleVersion($module_name, $version = false)
- {
- if ($version === false) {
- $version = $this->GetMaxModuleVersion($module_name);
- }
-
- $table_prefix = $this->systemConfig['Database']['TablePrefix'];
-
- $sql = 'UPDATE '.$table_prefix.'Modules
- SET Version = "'.$version.'"
- WHERE Name = "'.$module_name.'"';
- $this->Conn->Query($sql);
- }
-
-
- /**
- * Sets new configuration variable value
- *
- * @param string $name
- * @param mixed $value
- */
- function SetConfigValue($name, $value)
- {
- $sql = 'UPDATE '.TABLE_PREFIX.'ConfigurationValues
- SET VariableValue = '.$this->Conn->qstr($value).'
- WHERE VariableName = '.$this->Conn->qstr($name);
- $this->Conn->Query($sql);
- }
-
- /**
* Initialize kApplication
*
* @param bool $force initialize in any case
@@ -601,8 +858,12 @@
include_once(FULL_PATH.'/core/kernel/startup.php');
$this->Application =& kApplication::Instance();
+ $this->toolkit->Application =& kApplication::Instance();
+
$this->Application->Init();
+
$this->Conn =& $this->Application->GetADODBConnection();
+ $this->toolkit->Conn =& $this->Application->GetADODBConnection();
}
}
@@ -620,44 +881,34 @@
if (isset($this->Application)) {
$this->Application->Done();
-
-// echo 'SID: ['.$this->Application->GetSID().'] ';
}
exit;
}
- function GetMaxModuleVersion($module_name)
+ function ConnectToDatabase()
{
- $upgrades_file = sprintf(UPGRADES_FILE, mb_strtolower($module_name).'/', 'sql');
- if (!file_exists($upgrades_file)) {
- // no upgrade file
- return '4.0.1';
- }
+ include_once FULL_PATH . '/core/kernel/db/db_connection.php';
- $sqls = file_get_contents($upgrades_file);
- $versions_found = preg_match_all('/'.VERSION_MARK.'/s', $sqls, $regs);
- if (!$versions_found) {
- // upgrades file doesn't contain version definitions
- return '4.0.1';
+ $required_keys = Array ('DBType', 'DBUser', 'DBName');
+ foreach ($required_keys as $required_key) {
+ if (!$this->toolkit->getSystemConfig('Database', $required_key)) {
+ // one of required db connection settings missing -> abort connection
+ return false;
+ }
}
- return end($regs[1]);
- }
+ $this->Conn = new kDBConnection($this->toolkit->getSystemConfig('Database', 'DBType'), Array(&$this, 'DBErrorHandler'));
+ $this->Conn->Connect(
+ $this->toolkit->getSystemConfig('Database', 'DBHost'),
+ $this->toolkit->getSystemConfig('Database', 'DBUser'),
+ $this->toolkit->getSystemConfig('Database', 'DBUserPassword'),
+ $this->toolkit->getSystemConfig('Database', 'DBName')
+ );
- function ConnectToDatabase()
- {
- include_once FULL_PATH.'/core/kernel/db/db_connection.php';
+ // setup toolkit too
+ $this->toolkit->Conn =& $this->Conn;
- if (!isset($this->systemConfig['Database']['DBType']) ||
- !isset($this->systemConfig['Database']['DBUser']) ||
- !isset($this->systemConfig['Database']['DBName'])
- ) {
- return false;
- }
-
- $this->Conn = new kDBConnection($this->systemConfig['Database']['DBType'], Array(&$this, 'DBErrorHandler'));
- $this->Conn->Connect($this->systemConfig['Database']['DBHost'], $this->systemConfig['Database']['DBUser'], $this->systemConfig['Database']['DBUserPassword'], $this->systemConfig['Database']['DBName']);
return $this->Conn->errorCode == 0;
}
@@ -668,10 +919,10 @@
*/
function AlreadyInstalled()
{
- $table_prefix = $this->systemConfig['Database']['TablePrefix'];
+ $table_prefix = $this->toolkit->getSystemConfig('Database', 'TablePrefix');
$sql = 'SELECT VariableValue
- FROM '.$table_prefix.'ConfigurationValues
+ FROM ' . $table_prefix . 'ConfigurationValues
WHERE VariableName = "InstallFinished"';
return $this->TableExists('ConfigurationValues') && $this->Conn->GetOne($sql);
@@ -684,7 +935,7 @@
// 2. user has all types of permissions in database
- if (mb_strlen($this->systemConfig['Database']['TablePrefix']) > 7) {
+ if (mb_strlen($this->toolkit->getSystemConfig('Database', 'TablePrefix')) > 7) {
$this->errorMessage = 'Table prefix should not be longer than 7 characters';
return false;
}
@@ -721,7 +972,7 @@
}
else {
// user has insufficient permissions in database specified
- $db_error = 'Permission Error: ('.$this->Conn->getErrorCode().') '.$this->Conn->getErrorMsg();
+ $this->errorMessage = 'Permission Error: ('.$this->Conn->getErrorCode().') '.$this->Conn->getErrorMsg();
return false;
}
}
@@ -743,7 +994,7 @@
*/
function TableExists($tables)
{
- $prefix = $this->systemConfig['Database']['TablePrefix'];
+ $prefix = $this->toolkit->getSystemConfig('Database', 'TablePrefix');
$all_found = true;
$tables = explode(',', $tables);
@@ -759,86 +1010,6 @@
}
/**
- * Runs SQLs from file
- *
- * @param string $filename
- * @param mixed $replace_from
- * @param mixed $replace_to
- */
- function RunSQL($filename, $replace_from = null, $replace_to = null)
- {
- if (!file_exists(FULL_PATH.$filename)) {
- return ;
- }
-
- $sqls = file_get_contents(FULL_PATH.$filename);
- if (!$this->RunSQLText($sqls, $replace_from, $replace_to)) {
- $this->Done();
- }
- }
-
- /**
- * Runs SQLs from string
- *
- * @param string $sqls
- * @param mixed $replace_from
- * @param mixed $replace_to
- */
- function RunSQLText(&$sqls, $replace_from = null, $replace_to = null, $start_from=0)
- {
- $table_prefix = $this->systemConfig['Database']['TablePrefix'];
-
- // add prefix to all tables
- if (strlen($table_prefix) > 0) {
- $replacements = Array ('CREATE TABLE ', 'INSERT INTO ', 'UPDATE ', 'ALTER TABLE ', 'DELETE FROM ', 'REPLACE INTO ');
- foreach ($replacements as $replacement) {
- $sqls = str_replace($replacement, $replacement.$table_prefix, $sqls);
- }
- $sqls = str_replace('DROP TABLE ', 'DROP TABLE IF EXISTS '.$table_prefix, $sqls);
- }
-
- if (isset($replace_from) && isset($replace_to)) {
- // replace something additionally, e.g. module root category
- $sqls = str_replace($replace_from, $replace_to, $sqls);
- }
-
- $sqls = str_replace("\r\n", "\n", $sqls); // convert to linux line endings
- $sqls = preg_replace("/#([^;]*?)\n/", '', $sqls); // remove all comments
- $sqls = explode(";\n", $sqls . "\n"); // ensures that last sql won't have ";" in it
-
- for ($i=$start_from; $isystemConfig['Database']['DBCollation']) {
- // it is CREATE TABLE statement -> add collation
- $sql .= ' COLLATE \''.$this->systemConfig['Database']['DBCollation'].'\'';
- }
-
- $this->Conn->Query($sql);
- if ($this->Conn->getErrorCode() != 0) {
- $this->errorMessage = 'Error: ('.$this->Conn->getErrorCode().') '.$this->Conn->getErrorMsg().'
Database Query:'.htmlspecialchars($sql).' ';
- $this->LastQueryNum = $i+1;
- return false;
- }
- }
- return true;
- }
-
- function ImportLanguage($lang_file)
- {
- $lang_file = FULL_PATH.$lang_file.'.lang';
- if (!file_exists($lang_file)) {
- return ;
- }
-
- $lang_xml =& $this->Application->recallObjectP('LangXML', null, Array(), false); // false - don't use temp tables
- $lang_xml->Parse($lang_file, '|0|1|2|', '');
- }
-
- /**
* Returns modules list found in modules folder
*
* @return Array
@@ -859,34 +1030,19 @@
}
// this is folder in MODULES_PATH directory
if (file_exists($folder_path.'/install.php') && file_exists($folder_path.'/install/install_schema.sql')) {
- $modules[] = $sub_folder;
+ $install_order = trim( file_get_contents($folder_path . '/install/install_order.txt') );
+ $modules[$install_order] = $sub_folder;
}
}
}
}
+ // allows to control module install order
+ ksort($modules, SORT_NUMERIC);
return $modules;
}
/**
- * Converts module version in format X.Y.Z to signle integer
- *
- * @param string $version
- * @return int
- */
- function ConvertModuleVersion($version)
- {
- $parts = explode('.', $version);
-
- $bin = '';
- foreach ($parts as $part) {
- $bin .= str_pad(decbin($part), 8, '0', STR_PAD_LEFT);
- }
-
- return bindec($bin);
- }
-
- /**
* Returns list of modules, that can be upgraded
*
*/
@@ -909,11 +1065,11 @@
}
$to_version = end($regs[1]);
- $this_version = $this->ConvertModuleVersion($module_info['Version']);
- if ($this->ConvertModuleVersion($to_version) > $this_version) {
+ $this_version = $this->toolkit->ConvertModuleVersion($module_info['Version']);
+ if ($this->toolkit->ConvertModuleVersion($to_version) > $this_version) {
// destination version is greather then current
foreach ($regs[1] as $version) {
- if ($this->ConvertModuleVersion($version) > $this_version) {
+ if ($this->toolkit->ConvertModuleVersion($version) > $this_version) {
$from_version = $version;
break;
}
@@ -924,7 +1080,7 @@
'ToVersion' => $to_version,
);
- $ret[$module_name] = array_merge_recursive2($module_info, $version_info);
+ $ret[ strtolower($module_name) ] = array_merge_recursive2($module_info, $version_info);
}
}
@@ -1091,80 +1247,6 @@
return $ret;
}
- function ParseConfig($parse_section = false)
- {
- if (!file_exists($this->INIFile)) {
- return Array();
- }
-
- if( file_exists($this->INIFile) && !is_readable($this->INIFile) ) {
- die('Could Not Open Ini File');
- }
-
- $contents = file($this->INIFile);
-
- $retval = Array();
- $section = '';
- $ln = 1;
- $resave = false;
- foreach ($contents as $line) {
- if ($ln == 1 && $line != '<'.'?'.'php die() ?'.">\n") {
- $resave = true;
- }
-
- $ln++;
- $line = trim($line);
- $line = eregi_replace(';[.]*','',$line);
- if (strlen($line) > 0) {
- //echo $line . " - ";
- if(eregi('^[[a-z]+]$',str_replace(' ', '', $line))) {
- //echo 'section';
- $section = mb_substr($line, 1, (mb_strlen($line) - 2));
- if ($parse_section) {
- $retval[$section] = array();
- }
- continue;
- } elseif (eregi('=',$line)) {
- //echo 'main element';
- list ($key, $val) = explode(' = ', $line);
- if (!$parse_section) {
- $retval[trim($key)] = str_replace('"', '', $val);
- }
- else {
- $retval[$section][trim($key)] = str_replace('"', '', $val);
- }
- }
- }
- }
-
- if ($resave) {
- $fp = fopen($this->INIFile, 'w');
- reset($contents);
- fwrite($fp,'<'.'?'.'php die() ?'.">\n\n");
- foreach ($contents as $line) {
- fwrite($fp,"$line");
- }
- fclose($fp);
- }
-
- return $retval;
- }
-
- function SaveConfig()
- {
- $fp = fopen($this->INIFile, 'w');
- fwrite($fp,'<'.'?'.'php die() ?'.">\n\n");
-
- foreach ($this->systemConfig as $section_name => $section_data) {
- fwrite($fp, '['.$section_name."]\n");
- foreach ($section_data as $key => $value) {
- fwrite($fp, $key.' = "'.$value.'"'."\n");
- }
- fwrite($fp, "\n");
- }
- fclose($fp);
- }
-
/**
* Installation error handler for sql errors
*
@@ -1197,11 +1279,4 @@
}
}
}
-
- /*function print_pre($s)
- {
- echo '', print_r($s, true). ' ';
- }*/
-
-
?>
\ No newline at end of file
Index: branches/RC/core/admin_templates/js/forms.js
===================================================================
diff -u -N -r10579 -r10832
--- branches/RC/core/admin_templates/js/forms.js (.../forms.js) (revision 10579)
+++ branches/RC/core/admin_templates/js/forms.js (.../forms.js) (revision 10832)
@@ -129,9 +129,9 @@
// if we got here, it means that we are closing window ilegally (through OS interace X button)
// alert('closing window');
// we need to clear temp tables then
-
- window.opener.WatchClosing(window, _DropTempUrl);
-
+ if (window.opener) {
+ window.opener.WatchClosing(window, _DropTempUrl);
+ }
}
});
Index: branches/RC/core/units/stylesheets/stylesheets_item.php
===================================================================
diff -u -N -r10098 -r10832
--- branches/RC/core/units/stylesheets/stylesheets_item.php (.../stylesheets_item.php) (revision 10098)
+++ branches/RC/core/units/stylesheets/stylesheets_item.php (.../stylesheets_item.php) (revision 10832)
@@ -21,7 +21,7 @@
$ret .= $this->GetDBField('AdvancedCSS');
$compile_ts = adodb_mktime();
- $css_path = FULL_PATH.'/kernel/stylesheets/';
+ $css_path = (defined('WRITEABLE') ? WRITEABLE : FULL_PATH . '/kernel') . '/stylesheets/';
$css_file = $css_path.mb_strtolower($this->GetDBField('Name')).'-'.$compile_ts.'.css';
Index: branches/RC/kernel/install/english.lang
===================================================================
diff -u -N
--- branches/RC/kernel/install/english.lang (revision 0)
+++ branches/RC/kernel/install/english.lang (revision 10832)
@@ -0,0 +1,2983 @@
+
+ m/d/Yg:i:s Am/d/Yg:i:s A.,iso-8859-12
+
+ WW91ciBwYXNzd29yZCBoYXMgYmVlbiByZXNldC4gWW91IHdpbGwgcmVjZWl2ZSB5b3VyIG5ldyBwYXNzd29yZCBpbiB0aGUgZW1haWwgc2hvcnRseS4=
+ QmxvY2sgU2hpcHBpbmcgQWRkcmVzcyBFZGl0aW5n
+ QWN0aXZl
+ QWRk
+ QWRkZWQ=
+ QWRkIFRv
+ QWRtaW5pc3RyYXRpdmUgQ29uc29sZQ==
+ QWxsb3cgZGVsZXRpbmcgTW9kdWxlIFJvb3QgQ2F0ZWdvcnk=
+ QWx3YXlz
+ YW5k
+ QWN0aXZl
+ QXV0aG9y
+ RGF0ZQ==
+ QXJ0aWNsZSBFeGNlcnB0
+ SGl0cw==
+ UmF0aW5n
+ QXJ0aWNsZSByZXZpZXdlZA==
+ QXJ0aWNsZSBUaXRsZQ==
+ QXV0bw==
+ QXV0b21hdGlj
+ QXZhaWxhYmxlIENvbHVtbnM=
+ QmFja2dyb3VuZA==
+ QmFuIGVtYWlsIGFkZHJlc3M=
+ QmFuIElQIGFkZHJlc3M=
+ QmFuIHVzZXIgbmFtZQ==
+ SW1wb3J0ZWQ=
+ Qm9yZGVycw==
+ Q2hhbmdl
+ RG93bg==
+ VXA=
+ T0s=
+ Ynl0ZXM=
+ QnkgdGhlbWU=
+ Q2FuY2Vs
+ Q2F0ZWdvcnk=
+ RGF0ZQ==
+ TnVtYmVyIG9mIGRheXMgZm9yIGEgY2F0LiB0byBiZSBORVc=
+ Q2F0ZWdvcnkgRGVzY3JpcHRpb24=
+ RGVmYXVsdCBNRVRBIGRlc2NyaXB0aW9u
+ RGVmYXVsdCBNRVRBIEtleXdvcmRz
+ Q2F0ZWdvcnkgTmFtZQ==
+ TnVtYmVyIG9mIGNhdGVnb3JpZXMgcGVyIHBhZ2U=
+ Q2F0ZWdvcmllcyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ==
+ UGljaw==
+ UG9wdWxhcml0eQ==
+ RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBjYXRlZ29yaWVz
+ QW5kIHRoZW4gYnk=
+ T3JkZXIgY2F0ZWdvcmllcyBieQ==
+ Q2xvc2U=
+ QWx0IFZhbHVl
+ Q2Vuc29yZWQgV29yZA==
+ Q3JlYXRlZCBPbg==
+ RGF0ZS9UaW1l
+ U3RhdHVz
+ TGFiZWw=
+ RmllbGQgTmFtZQ==
+ VHlwZQ==
+ SW1hZ2U=
+ SW5oZXJpdGVkIEZyb20=
+ SXRlbQ==
+ SXRlbSBGaWVsZA==
+ SXRlbSBUeXBl
+ SXRlbSBWYWx1ZQ==
+ Q29tcGFyaXNvbiBPcGVyYXRvcg==
+ TGluayBOYW1l
+ QWNjZXNz
+ SW5oZXJpdGVk
+ UG9zdGVy
+ UHJldmlldw==
+ UmVwbGFjZW1lbnQ=
+ UmVwbGllcw==
+ UnVsZSBUeXBl
+ U3RhdHVz
+ VG9waWM=
+ VVJM
+ U3RhdHVz
+ VmFsaWRhdGVkIE9u
+ VmFsdWU=
+ Vmlld3M=
+ Q29sb24=
+ QWNjZXNz
+ QWRkaXRpb25hbA==
+ QWRtaW4gSW50ZXJmYWNl
+ QmFzZWQgT24=
+ Q2F0ZWdvcnk=
+ Q2F0ZWdvcnkgTmFtZQ==
+ Q3JlYXRlZCBPbg==
+ RGVzY3JpcHRpb24=
+ RHVyYXRpb24=
+ RHVyYXRpb24gVHlwZQ==
+ RWZmZWN0aXZl
+ RW1haWw=
+ Jm5ic3A7
+ RXZlbnQ=
+ RmllbGQgTmFtZQ==
+ Rmlyc3QgTmFtZQ==
+ R3JvdXAgTmFtZQ==
+ SUQ=
+ U3RhdHVz
+ SW1hZ2U=
+ VVJM
+ SW5oZXJpdGVk
+ SW5oZXJpdGVkIEZyb20=
+ UG9wdWxhcg==
+ UHJpbWFyeQ==
+ U3lzdGVt
+ S2V5d29yZA==
+ TGFiZWw=
+ TGFzdCBDaGFuZ2Vk
+ TGFzdCBDb21waWxlZA==
+ TGFzdCBOYW1l
+ TGluayBVUkw=
+ TmFtZQ==
+ TWVtYmVyc2hpcCBFeHBpcmVz
+ TW9kdWxl
+ TmFtZQ==
+ UGFjayBOYW1l
+ QWRk
+ RGVsZXRl
+ RWRpdA==
+ UGVybWlzc2lvbiBOYW1l
+ QWNjZXNz
+ Vmlldw==
+ VHlwZQ==
+ UHJldmlldw==
+ UHJpbWFyeSBHcm91cA==
+ UHJpbWFyeSBWYWx1ZQ==
+ RmllbGQgUHJvbXB0
+ RGF0ZQ==
+ JA==
+ JQ==
+ UmVsYXRpb24gVHlwZQ==
+ UmV2aWV3ZWQgQnk=
+ UmV2aWV3IFRleHQ=
+ U2VsZWN0b3I=
+ U3RhdHVz
+ SXRlbQ==
+ SXRlbSBUeXBl
+ VGl0bGU=
+ VmFsdWU=
+ VHlwZQ==
+ VXNlciBDb3VudA==
+ RmllbGQgVmFsdWU=
+ VmVyc2lvbg==
+ VmlzaXQgRGF0ZQ==
+ Q29tbWE=
+ QXNjZW5kaW5n
+ RGF0ZQ==
+ RGVzY2VuZGluZw==
+ UmV2aWV3IFRleHQ=
+ UmV2aWV3IG5vdCBhZGRlZCBkdWUgdG8gYSBzeXN0ZW0gZXJyb3I=
+ QXV0by1SZWZyZXNoIEludGVydmFscyBmb3IgR3JpZHM=
+ QmFja3VwIFBhdGg=
+ U3dpdGNoIENhdGFsb2cgdGFicyBiYXNlZCBvbiBNb2R1bGU=
+ Q29tcGFueQ==
+ RGVmYXVsdCBDU1YgRXhwb3J0IERlbGltaXRlcg==
+ RGVmYXVsdCBDU1YgRXhwb3J0IEVuY2xvc3VyZSBDaGFyYWN0ZXI=
+ RGVmYXVsdCBDU1YgRXhwb3J0IEVuY29kaW5n
+ RGVmYXVsdCBDU1YgRXhwb3J0IE5ldyBMaW5lIFNlcGFyYXRvcg==
+ RGVmYXVsdCBSZWdpc3RyYXRpb24gQ291bnRyeQ==
+ RmlsZSBub3QgZm91bmQgKDQwNCkgdGVtcGxhdGU=
+ Rmlyc3QgRGF5IE9mIFdlZWs=
+ UmVkaXJlY3QgdG8gSFRUUCB3aGVuIFNTTCBpcyBub3QgcmVxdWlyZWQ=
+ RnVsbCBpbWFnZSBIZWlnaHQ=
+ RnVsbCBpbWFnZSBXaWR0aA==
+ SGVhZGVyIFNlcGFyYXRvciBUeXBl
+ TWF4aW11bSBudW1iZXIgb2YgaW1hZ2Vz
+ TmFtZQ==
+ SW5zdWZmaWNlbnQgcGVybWlzc2lvbnMgdGVtcGxhdGU=
+ R1pJUCBjb21wcmVzc2lvbiBsZXZlbCAwLTk=
+ UmV2aWV3cyBwZXIgcGFnZQ==
+ IlJlY3ljbGUgQmluIiBDYXRlZ29yeUlk
+ UmVnaXN0cmF0aW9uIE51bWJlcg==
+ UmVxdWlyZSBTU0wgZm9yIGxvZ2luICYgY2hlY2tvdXQ=
+ UmVtZW1iZXIgTGFzdCBBZG1pbiBUZW1wbGF0ZQ==
+ U2VydmVyIE5hbWU=
+ U2VydmVyIFBhdGg=
+ VGltZSB6b25lIG9mIHRoZSBzaXRl
+ U1NMIEZ1bGwgVVJMIChodHRwczovL3d3dy5kb21haW4uY29tL3BhdGgp
+ VGh1bWJuYWlsIEhlaWdodA==
+ VGh1bWJuYWlsIFdpZHRo
+ VGltZSB6b25lIG9mIHRoZSBzZXJ2ZXI=
+ VHJpbSBSZXF1aXJlZCBmaWVsZHM=
+ RW5hYmxlIENoYW5nZSBMb2cgKEJldGEp
+ VXNlIGNvbHVtbiBmcmVlemVy
+ RW5hYmxlIEhUTUwgR1pJUCBjb21wcmVzc2lvbg==
+ VXNlIFBhZ2VIaXQgY291bnRlcg==
+ VXNlIFNtYWxsIEhlYWRlcg==
+ VXNlIFRvb2xiYXIgTGFiZWxz
+ VXNlIEphdmFTY3JpcHQgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4vbG9nb3V0IChmb3IgSUlTKQ==
+ VXNlIE1PRCBSRVdSSVRF
+ RW5hYmxlIE1PRF9SRVdSSVRFIGZvciBTU0w=
+ V2Vic2l0ZSBhZGRyZXNz
+ V2Vic2l0ZSBuYW1l
+ V2ViIGFkZHJlc3M=
+ QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBzZWxlY3RlZCBFeHBvcnQgUHJlc2V0Pw==
+ VGhlIGNhdGVnb3J5IHRyZWUgbXVzdCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGxhdGVzdCBjaGFuZ2Vz
+ Q29udGludWU=
+ QXJ1YmE=
+ QWZnaGFuaXN0YW4=
+ QW5nb2xh
+ QW5ndWlsbGE=
+ QWxiYW5pYQ==
+ QW5kb3JyYQ==
+ TmV0aGVybGFuZHMgQW50aWxsZXM=
+ VW5pdGVkIEFyYWIgRW1pcmF0ZXM=
+ QXJnZW50aW5h
+ QXJtZW5pYQ==
+ QW1lcmljYW4gc2Ftb2E=
+ QW50YXJjdGljYQ==
+ RnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVz
+ QW50aWd1YSBhbmQgYmFyYnVkYQ==
+ QXVzdHJhbGlh
+ QXVzdHJpYQ==
+ QXplcmJhaWphbg==
+ QnVydW5kaQ==
+ QmVsZ2l1bQ==
+ QmVuaW4=
+ QnVya2luYSBGYXNv
+ QmFuZ2xhZGVzaA==
+ QnVsZ2FyaWE=
+ QmFocmFpbg==
+ QmFoYW1hcw==
+ Qm9zbmlhIGFuZCBIZXJ6ZWdvd2luYQ==
+ QmVsYXJ1cw==
+ QmVsaXpl
+ QmVybXVkYQ==
+ Qm9saXZpYQ==
+ QnJhemls
+ QmFyYmFkb3M=
+ QnJ1bmVpIERhcnVzc2FsYW0=
+ Qmh1dGFu
+ Qm91dmV0IElzbGFuZA==
+ Qm90c3dhbmE=
+ Q2VudHJhbCBBZnJpY2FuIFJlcHVibGlj
+ Q2FuYWRh
+ Q29jb3MgKEtlZWxpbmcpIElzbGFuZHM=
+ U3dpdHplcmxhbmQ=
+ Q2hpbGU=
+ Q2hpbmE=
+ Q290ZSBkJ0l2b2lyZQ==
+ Q2FtZXJvb24=
+ Q29uZ28sIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgKFdhcyBaYWlyZSk=
+ Q29uZ28sIFBlb3BsZSdzIFJlcHVibGljIG9m
+ Q29vayBJc2xhbmRz
+ Q29sb21iaWE=
+ Q29tb3Jvcw==
+ Q2FwZSBWZXJkZQ==
+ Q29zdGEgUmljYQ==
+ Q3ViYQ==
+ Q2hyaXN0bWFzIElzbGFuZA==
+ Q2F5bWFuIElzbGFuZHM=
+ Q3lwcnVz
+ Q3plY2ggUmVwdWJsaWM=
+ R2VybWFueQ==
+ RGppYm91dGk=
+ RG9taW5pY2E=
+ RGVubWFyaw==
+ RG9taW5pY2FuIFJlcHVibGlj
+ QWxnZXJpYQ==
+ RWN1YWRvcg==
+ RWd5cHQ=
+ RXJpdHJlYQ==
+ V2VzdGVybiBTYWhhcmE=
+ U3BhaW4=
+ RXN0b25pYQ==
+ RXRoaW9waWE=
+ RmlubGFuZA==
+ RmlqaQ==
+ RmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMp
+ RnJhbmNl
+ RmFyb2UgSXNsYW5kcw==
+ TWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZg==
+ RnJhbmNlLCBNZXRyb3BvbGl0YW4=
+ R2Fib24=
+ VW5pdGVkIEtpbmdkb20=
+ R2VvcmdpYQ==
+ R2hhbmE=
+ R2licmFsdGFy
+ R3VpbmVh
+ R3VhZGVsb3VwZQ==
+ R2FtYmlh
+ R3VpbmVhLUJpc3NhdQ==
+ RXF1YXRvcmlhbCBHdWluZWE=
+ R3JlZWNl
+ R3JlbmFkYQ==
+ R3JlZW5sYW5k
+ R3VhdGVtYWxh
+ RnJlbmNoIEd1aWFuYQ==
+ R3VhbQ==
+ R3V5YW5h
+ SG9uZyBrb25n
+ SGVhcmQgYW5kIE1jIERvbmFsZCBJc2xhbmRz
+ SG9uZHVyYXM=
+ Q3JvYXRpYSAobG9jYWwgbmFtZTogSHJ2YXRza2Ep
+ SGFpdGk=
+ SHVuZ2FyeQ==
+ SW5kb25lc2lh
+ SW5kaWE=
+ QnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5
+ SXJlbGFuZA==
+ SXJhbiAoSXNsYW1pYyBSZXB1YmxpYyBvZik=
+ SXJhcQ==
+ SWNlbGFuZA==
+ SXNyYWVs
+ SXRhbHk=
+ SmFtYWljYQ==
+ Sm9yZGFu
+ SmFwYW4=
+ S2F6YWtoc3Rhbg==
+ S2VueWE=
+ S3lyZ3l6c3Rhbg==
+ Q2FtYm9kaWE=
+ S2lyaWJhdGk=
+ U2FpbnQgS2l0dHMgYW5kIE5ldmlz
+ S29yZWEsIFJlcHVibGljIG9m
+ S3V3YWl0
+ TGFvIFBlb3BsZSdzIERlbW9jcmF0aWMgUmVwdWJsaWM=
+ TGViYW5vbg==
+ TGliZXJpYQ==
+ TGlieWFuIEFyYWIgSmFtYWhpcml5YQ==
+ U2FpbnQgTHVjaWE=
+ TGllY2h0ZW5zdGVpbg==
+ U3JpIGxhbmth
+ TGVzb3Robw==
+ TGl0aHVhbmlh
+ THV4ZW1ib3VyZw==
+ TGF0dmlh
+ TWFjYXU=
+ TW9yb2Njbw==
+ TW9uYWNv
+ TW9sZG92YSwgUmVwdWJsaWMgb2Y=
+ TWFkYWdhc2Nhcg==
+ TWFsZGl2ZXM=
+ TWV4aWNv
+ TWFyc2hhbGwgSXNsYW5kcw==
+ TWFjZWRvbmlh
+ TWFsaQ==
+ TWFsdGE=
+ TXlhbm1hcg==
+ TW9uZ29saWE=
+ Tm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRz
+ TW96YW1iaXF1ZQ==
+ TWF1cml0YW5pYQ==
+ TW9udHNlcnJhdA==
+ TWFydGluaXF1ZQ==
+ TWF1cml0aXVz
+ TWFsYXdp
+ TWFsYXlzaWE=
+ TWF5b3R0ZQ==
+ TmFtaWJpYQ==
+ TmV3IENhbGVkb25pYQ==
+ TmlnZXI=
+ Tm9yZm9sayBJc2xhbmQ=
+ TmlnZXJpYQ==
+ TmljYXJhZ3Vh
+ Tml1ZQ==
+ TmV0aGVybGFuZHM=
+ Tm9yd2F5
+ TmVwYWw=
+ TmF1cnU=
+ TmV3IFplYWxhbmQ=
+ T21hbg==
+ UGFraXN0YW4=
+ UGFuYW1h
+ UGl0Y2Fpcm4=
+ UGVydQ==
+ UGhpbGlwcGluZXM=
+ UGFsYXU=
+ UGFwdWEgTmV3IEd1aW5lYQ==
+ UG9sYW5k
+ UHVlcnRvIFJpY28=
+ S29yZWEsIERlbW9jcmF0aWMgUGVvcGxlJ3MgUmVwdWJsaWMgb2Y=
+ UG9ydHVnYWw=
+ UGFyYWd1YXk=
+ UGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZA==
+ RnJlbmNoIFBvbHluZXNpYQ==
+ UWF0YXI=
+ UmV1bmlvbg==
+ Um9tYW5pYQ==
+ UnVzc2lhbiBGZWRlcmF0aW9u
+ UndhbmRh
+ U2F1ZGkgQXJhYmlh
+ U3VkYW4=
+ U2VuZWdhbA==
+ U2luZ2Fwb3Jl
+ U291dGggR2VvcmdpYSBhbmQgVGhlIFNvdXRoIFNhbmR3aWNoIElzbGFuZHM=
+ U3QuIGhlbGVuYQ==
+ U3ZhbGJhcmQgYW5kIEphbiBNYXllbiBJc2xhbmRz
+ U29sb21vbiBJc2xhbmRz
+ U2llcnJhIExlb25l
+ RWwgU2FsdmFkb3I=
+ U2FuIE1hcmlubw==
+ U29tYWxpYQ==
+ U3QuIFBpZXJyZSBhbmQgTWlxdWVsb24=
+ U2FvIFRvbWUgYW5kIFByaW5jaXBl
+ U3VyaW5hbWU=
+ U2xvdmFraWEgKFNsb3ZhayBSZXB1YmxpYyk=
+ U2xvdmVuaWE=
+ U3dlZGVu
+ U3dhemlsYW5k
+ U2V5Y2hlbGxlcw==
+ U3lyaWFuIEFyYWIgUmVwdWJsaWM=
+ VHVya3MgYW5kIENhaWNvcyBJc2xhbmRz
+ Q2hhZA==
+ VG9nbw==
+ VGhhaWxhbmQ=
+ VGFqaWtpc3Rhbg==
+ VG9rZWxhdQ==
+ VHVya21lbmlzdGFu
+ RWFzdCBUaW1vcg==
+ VG9uZ2E=
+ VHJpbmlkYWQgYW5kIFRvYmFnbw==
+ VHVuaXNpYQ==
+ VHVya2V5
+ VHV2YWx1
+ VGFpd2Fu
+ VGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZg==
+ VWdhbmRh
+ VWtyYWluZQ==
+ VW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRz
+ VXJ1Z3VheQ==
+ VW5pdGVkIFN0YXRlcw==
+ VXpiZWtpc3Rhbg==
+ VmF0aWNhbiBDaXR5IFN0YXRlIChIb2x5IFNlZSk=
+ U2FpbnQgVmluY2VudCBhbmQgVGhlIEdyZW5hZGluZXM=
+ VmVuZXp1ZWxh
+ VmlyZ2luIElzbGFuZHMgKEJyaXRpc2gp
+ VmlyZ2luIElzbGFuZHMgKFUuUy4p
+ VmlldG5hbQ==
+ VmFudWF0dQ==
+ V2FsbGlzIGFuZCBGdXR1bmEgSXNsYW5kcw==
+ U2Ftb2E=
+ WWVtZW4=
+ WXVnb3NsYXZpYQ==
+ U291dGggQWZyaWNh
+ WmFtYmlh
+ WmltYmFid2U=
+ Q3JlYXRlZCBPbg==
+ Q3JlZGl0cw==
+ ZGF5cw==
+ RGVmYXVsdCBDb3VudHJ5
+ QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgaXRlbShzKT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tQnVsbGV0aW4gc2V0dGluZ3M=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY2Vuc29yZWQgd29yZHMgYW5kIHRoZWlyIHJlcGxhY2VtZW50cw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZW1haWwgc2V0dGluZ3M=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2ltbGV5cw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gb3V0cHV0IHNldHRpbmdz
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tYnVsbHRlaW4gZGVmYXVsdCBzZWFyY2ggc2V0dGluZ3M=
+ SW4tYnVsbGV0aW4gZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnM=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBzZXR0aW5ncw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgY3VzdG9tIGZpZWxkcw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgZW1haWwgZXZlbnRz
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbGluayBvdXRwdXQgc2V0dGluZ3M=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2Ugc2VhcmNoIHNldHRpbmdzIGFuZCBmaWVsZHM=
+ SW4tTGluayBHZW5lcmFsIENvbmZpZ3VyYXRpb24gT3B0aW9ucw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBydW4gdmFsaWRhdGlvbiBvbiB0aGUgbGlua3M=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBzZXR0aW5ncw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBjdXN0b20gZmllbGRz
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBlbWFpbCBjb25maWd1cmF0aW9u
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBvdXRwdXQgc2V0dGluZ3M=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tbmV3eiBkZWZhdWx0IHNlYXJjaCBjb25maWd1cmF0aW9u
+ SW4tTmV3eiBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBpbnN0YWxsIG5ldyBtb2R1bGVz
+ VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gbWFuYWdlIGNhdGVnb3JpZXMgYW5kIGl0ZW1zIGFjcm9zcyBhbGwgY2F0ZWdvcmllcw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIHN5c3RlbSBiYWNrdXBz
+ VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gYnJvd3NlIHRoZSBjYXRhbG9nIGFuZCBtYW5hZ2UgY2F0ZWdvcmllcyBhbmQgaXRlbXM=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGNhdGVnb3J5IGN1c3RvbSBmaWVsZHM=
+ Q29uZmlndXJlIENhdGVnb3J5IEVtYWlsIEV2ZW50cw==
+ Q29uZmlndXJlIENhdGVnb3J5IHNlYXJjaCBvcHRpb25z
+ VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgY2F0ZWdvcnkgc2V0dGluZ3M=
+ VGhpcyBpcyBhIGdlbmVyYWwgY29uZmd1cmF0aW9uIHNlY3Rpb24=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgcmVnaW9uYWwgc2V0dGluZ3MsIG1hbmFnZSBhbmQgZWRpdCBsYW5ndWFnZXM=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgQ1NTIHN0eWxlc2hlZXRzIGZvciB0aGVtZXMu
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlbWVzIGFuZCBlZGl0IHRoZSBpbmRpdmlkdWFsIHRlbXBsYXRlcw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIGdlbmVyYWwgdXNlciBzZXR0aW5ncw==
+ VGhpcyBzZWN0aW9uIHNob3dzIGFsbCBlLW1haWxzIHNlbnQgYnkgSW4tUG9ydGFs
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBleHBvcnQgSW4tcG9ydGFsIGRhdGE=
+ SGVscCBzZWN0aW9uIGZvciBJbi1wb3J0YWwgYW5kIGFsbCBvZiBpdHMgbW9kdWxlcy4gQWxzbyBhY2Nlc3NpYmxlIHZpYSB0aGUgc2VjdGlvbi1zcGVjaWZpYyBpbnRlcmFjdGl2ZSBoZWxwIGZlYXR1cmUu
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBpbXBvcnQgZGF0YSBmcm9tIG90aGVyIHByb2dyYW1zIGludG8gSW4tcG9ydGFs
+ VGhpcyBzZWN0aW9uIHNob3dzIHN1bW1hcnkgc3RhdGlzdGljcw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRhdGEgaW1wb3J0IGZyb20gb3RoZXIgc3lzdGVtcw==
+ TWFuYWdlIHN0YXR1cyBvZiBhbGwgbW9kdWxlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgSW4tcG9ydGFsIHN5c3RlbS4=
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBlbmFibGVkIGFuZCBkaXNhYmxlIG1vZHVsZXM=
+ VmlldyBzeXN0ZW0gc3RhdGlzdGljcywgbG9ncyBhbmQgcmVwb3J0cw==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRhdGFiYXNlIHJlc3RvcmVz
+ VGhpcyBzZWN0aW9uIGRpc3BsYXlzIGEgbGlzdCBvZiBhbGwgcmV2aWV3cyBpbiB0aGUgc3lzdGVtLg==
+ VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBzZWFyY2ggbG9nIGFuZCBhbGxvd3MgdG8gbWFuYWdlIGl0
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byB2aWV3IFBIUCBjb25maWd1cmF0aW9u
+ VGhpcyBzZWN0aW9uIHNob3dzIGFsbCBhY3RpdmUgc2Vzc2lvbnMgYW5kIGFsbG93cyB0byBtYW5hZ2UgdGhlbQ==
+ TWFuYWdlIHRoZSBzdHJ1Y3R1cmUgb2YgeW91ciBzaXRlLCBpbmNsdWRpbmcgY2F0ZWdvcmllcywgaXRlbXMgYW5kIGNhdGVnb3J5IHNldHRpbmdzLg==
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBwZXJmb3JtIGRpcmVjdCBTUUwgcXVlcmllcyBvbiBJbi1wb3J0YWwgZGF0YWJhc2U=
+ TWFuYWdlIHN5c3RlbS13aWRlIHNldHRpbmdzLCBlZGl0IHRoZW1lcyBhbmQgbGFuZ3VhZ2Vz
+ VGhpcyBzZWN0aW9uIHNob3dzIGF2YWlsYWJsZSB0YWdzIGZvciB1c2luZyBpbiB0ZW1wbGF0ZXM=
+ VXNlIHZhcmlvdXMgSW4tcG9ydGFsIGRhdGEgbWFuYWdlbWVudCB0b29scywgaW5jbHVkaW5nIGJhY2t1cCwgcmVzdG9yZSwgaW1wb3J0IGFuZCBleHBvcnQ=
+ TWFuYWdlIHVzZXJzIGFuZCBncm91cHMsIHNldCB1c2VyICYgZ3JvdXAgcGVybWlzc2lvbnMgYW5kIGRlZmluZSB1c2VyIHNldHRpbmdzLg==
+ TWFuYWdlIFVzZXIgQmFuIFJ1bGVz
+ VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHVzZXIgY3VzdG9tIGZpZWxkcw==
+ Q29uZmlndXJlIFVzZXIgZW1haWwgZXZlbnRz
+ VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYWdhbmUgZ3JvdXBzLCBhc3NpZ24gdXNlcnMgdG8gZ3JvdXBzIGFuZCBwZXJmb3JtIG1hc3MgZW1haWwgc2VuZGluZw==
+ VGhpcyBzZWN0aW9ucyBhbGxvd3MgdG8gbWFuYWdlIHVzZXJzLCB0aGVpciBwZXJtaXNzaW9ucyBhbmQgcGVyZm9ybSBtYXNzIGVtYWls
+ VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBzaXRlIHZpc2l0b3JzIGxvZw==
+ RGlzYWJsZWQ=
+ RG91YmxlLXF1b3Rlcw==
+ RG93bmxvYWQgRXhwb3J0IEZpbGU=
+ RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0
+ WW91IGhhdmUgbm90IHNhdmVkIGNoYW5nZXMgdG8gdGhlIGl0ZW0geW91IGFyZSBlZGl0aW5nITxiciAvPkNsaWNrIE9LIHRvIGxvb3NlIGNoYW5nZXMgYW5kIGdvIHRvIHRoZSBzZWxlY3RlZCBzZWN0aW9uPGJyIC8+b3IgQ2FuY2VsIHRvIHN0YXkgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbi4=
+ RmlsZSBpcyBlbXB0eQ==
+ IA==
+ RmlsZSBpcyBlbXB0eQ==
+ RW5hYmxlZA==
+ Q2FuJ3Qgc2F2ZSBhIGZpbGU=
+ RXJyb3IgY29weWluZyBzdWJjYXRlZ29yaWVz
+ Q3VzdG9tIGZpZWxkIHdpdGggaWRlbnRpY2FsIG5hbWUgYWxyZWFkeSBleGlzdHM=
+ VXNlcm5hbWUgeW91IGhhdmUgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgc3lzdGVtLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgdXNlcm5hbWUu
+ RmlsZSBpcyB0b28gbGFyZ2U=
+ SW52YWxpZCBGaWxlIEZvcm1hdA==
+ aW52YWxpZCBvcHRpb24=
+ RXJyb3IgbW92aW5nIHN1YmNhdGVnb3J5
+ UGFzc3dvcmRzIGRvIG5vdCBtYXRjaCE=
+ cmVxdWlyZWQgY29sdW1ucyBtaXNzaW5n
+ Um9vdCBjYXRlZ29yeSBvZiB0aGUgbW9kdWxlKHMpIGNhbiBub3QgYmUgZGVsZXRlZCE=
+ Q2F0ZWdvcnkgZmllbGQgbm90IHVuaXF1ZQ==
+ VW5rbm93biBjYXRlZ29yeQ==
+ dXNlciBub3QgZm91bmQ=
+ SW5jb3JyZWN0IGRhdGUgZm9ybWF0LCBwbGVhc2UgdXNlICglcykgZXguICglcyk=
+ SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlICVz
+ SW52YWxpZCBGb3JtYXQ=
+ RmllbGQgaXMgb3V0IG9mIHJhbmdl
+ RmllbGQgaXMgcmVxdWlyZWQ=
+ RmllbGQgdmFsdWUgbXVzdCBiZSB1bmlxdWU=
+ RmllbGQgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSAlcyB0byAlcw==
+ QWRkIEFydGljbGU=
+ QXBwcm92ZSBBcnRpY2xl
+ RGVjbGluZSBBcnRpY2xl
+ TW9kaWZ5IEFydGljbGU=
+ QXBwcm92ZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg==
+ RGVjbGluZSBBcnRpY2xlIE1vZGlmaWNhdGlvbg==
+ QXJ0aWNsZSBSZXZpZXcgQWRkZWQ=
+ UGVuZGluZyBBcnRpY2xlIFJldmlldyBBZGRlZA==
+ QXBwcm92ZSBBcnRpY2xlIFJldmlldw==
+ RGVjbGluZSBBcnRpY2xlIFJldmlldw==
+ QWRkIENhdGVnb3J5
+ QWRkIFBlbmRpbmcgQ2F0ZWdvcnk=
+ QXBwcm92ZSBDYXRlZ29yeQ==
+ RGVueSBDYXRlZ29yeQ==
+ TW9kaWZ5IENhdGVnb3J5
+ RGVsZXRlIENhdGVnb3J5
+ Q29tbW9uIEZvb3RlciBUZW1wbGF0ZQ==
+ RW1haWwgZXZlbnRzIGltcG9ydCBwcm9ncmVzcw==
+ QWRkIExpbms=
+ QWRkIFBlbmRpbmcgTGluaw==
+ QXBwcm92ZSBQZW5kaW5nIExpbms=
+ RGVueSBMaW5r
+ TW9kaWZ5IExpbms=
+ QXBwcm92ZSBMaW5rIE1vZGlmaWNhdGlvbg==
+ RGVjbGluZSBsaW5rIG1vZGlmaWNhdGlvbg==
+ TGluayBNb2RpZmljYXRpb24gUGVuZGluZw==
+ TGluayBSZXZpZXcgQWRkZWQ=
+ UGVuZGluZyBSZXZpZXcgQWRkZWQ=
+ QXBwcm92ZSBMaW5rIFJldmlldw==
+ RGVjbGluZSBMaW5rIFJldmlldw==
+ TmV3IFByaXZhdGUgTWVzc2FnZQ==
+ UG9zdCBBZGRlZA==
+ UG9zdCBNb2RpZmllZA==
+ VG9waWMgQWRkZWQ=
+ QWRkIFVzZXI=
+ QWRkIFBlbmRpbmcgVXNlcg==
+ QXBwcm92ZSBVc2Vy
+ RGVueSBVc2Vy
+ Rm9yZ290IFBhc3N3b3Jk
+ TWVtYmVyc2hpcCBleHBpcmF0aW9uIG5vdGljZQ==
+ TWVtYmVyc2hpcCBleHBpcmVk
+ UGFzc3dvcmQgQ29uZmlybWF0aW9u
+ VXNlciBzdWJzY3JpYmVk
+ U3VnZ2VzdCB0byBhIGZyaWVuZA==
+ VXNlciB1bnN1YnNjcmliZWQ=
+ VmFsaWRhdGUgVXNlcg==
+ RXhwb3J0IGZvbGRlciBpcyBub3Qgd3JpdGFibGU=
+ RmllbGQ=
+ RGlzcGxheSBPcmRlcg==
+ QWRkcmVzcyBMaW5l
+ QWRtaW4gSW50ZXJmYWNl
+ QWR2YW5jZWQgQ1NT
+ QWx0IFZhbHVl
+ QXNzaWduZWQgQ291cG9u
+ QXR0YWNobWVudA==
+ QXV0b21hdGljIEZpbGVuYW1l
+ QXZhaWxhYmxlIENvbHVtbnM=
+ QmFja2dyb3VuZA==
+ QmFja2dyb3VuZCBBdHRhY2htZW50
+ QmFja2dyb3VuZCBDb2xvcg==
+ QmFja2dyb3VuZCBJbWFnZQ==
+ QmFja2dyb3VuZCBQb3NpdGlvbg==
+ QmFja2dyb3VuZCBSZXBlYXQ=
+ Qm9yZGVyIEJvdHRvbQ==
+ Qm9yZGVyIExlZnQ=
+ Qm9yZGVyIFJpZ2h0
+ Qm9yZGVycw==
+ Qm9yZGVyIFRvcA==
+ Q2F0ZWdvcnk=
+ QXV0b21hdGljIERpcmVjdG9yeSBOYW1l
+ RGlyZWN0b3J5IE5hbWU=
+ Q2F0ZWdvcnkgRm9ybWF0
+ Q2F0ZWdvcnkgSUQ=
+ Q2F0ZWdvcnkgc2VwYXJhdG9y
+ Q2F0ZWdvcnkgVGVtcGxhdGU=
+ Q2hhcnNldA==
+ Q2hlY2sgRHVwbGljYXRlcyBieQ==
+ Q29tcGFueQ==
+ Q29weSBMYWJlbHMgZnJvbSB0aGlzIExhbmd1YWdl
+ Q3JlYXRlZCBCeQ==
+ Q3JlYXRlZCBPbg==
+ Q3Vyc29y
+ Q3VzdG9tIERldGFpbHMgVGVtcGxhdGU=
+ DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KRGV0YWlscyBUZW1wbGF0ZQ==
+ RGF0ZSBGb3JtYXQ=
+ RGVjaW1hbCBQb2ludA==
+ RGVzY3JpcHRpb24=
+ RGlzcGxheQ==
+ QXMgUGxhaW4gVGV4dA==
+ RHVyYXRpb24=
+ RWRpdG9ycyBQaWNr
+ RWxhcHNlZCBUaW1l
+ RW5hYmxlZA==
+ RXN0aW1hdGVkIFRpbWU=
+ RXhwaXJl
+ RXhwb3J0IGNvbHVtbnM=
+ RXhwb3J0IEZpbGVuYW1l
+ RXhwb3J0IGZvcm1hdA==
+ RXhwb3J0IE1vZHVsZXM=
+ RXhwb3J0IFBocmFzZSBUeXBlcw==
+ RXhwb3J0IFByZXNldCBUaXRsZQ==
+ RXhwb3J0IFByZXNldA==
+ U2F2ZS9VcGRhdGUgRXhwb3J0IFByZXNldA==
+ RXh0ZXJuYWwgVVJM
+ RXh0cmEgSGVhZGVycw==
+ RmF4
+ RmllbGRzIGVuY2xvc2VkIGJ5
+ RmllbGRzIHNlcGFyYXRlZCBieQ==
+ RmllbGQgVGl0bGVz
+ RmlsZW5hbWU=
+ Rmlyc3QgTmFtZQ==
+ Rm9udA==
+ Rm9udCBDb2xvcg==
+ Rm9udCBGYW1pbHk=
+ Rm9udCBTaXpl
+ Rm9udCBTdHlsZQ==
+ Rm9udCBXZWlnaHQ=
+ SUQ=
+ R3JvdXAgTmFtZQ==
+ SGVpZ2h0
+ SGl0cw==
+ SG90
+ SFRNTCBWZXJzaW9u
+ SWNvbiBVUkw=
+ SUQ=
+ SW1hZ2UgSUQ=
+ SW1wb3J0IENhdGVnb3J5
+ SW1wb3J0IEZpbGVuYW1l
+ SW5jbHVkZSBmaWVsZCB0aXRsZXM=
+ SW5wdXQgRGF0ZSBGb3JtYXQ=
+ SW5wdXQgVGltZSBGb3JtYXQ=
+ SW5zdGFsbCBNb2R1bGVz
+ SW5zdGFsbCBQaHJhc2UgVHlwZXM=
+ VXNlIGN1cnJlbnQgY2F0ZWdvcnkgYXMgcm9vdCBmb3IgdGhlIGV4cG9ydA==
+ VXNlIGFzIEZyZWUgUHJvbW8gU2hpcHBpbmc=
+ UHJpbWFyeQ==
+ SXMgU3lzdGVt
+ SXRlbSBUZW1wbGF0ZQ==
+ TGFuZ3VhZ2UgRmlsZQ==
+ TGFuZ3VhZ2UgSUQ=
+ TGFzdCBOYW1l
+ TGVmdA==
+ TGluZSBlbmRpbmdz
+ TGluZSBFbmRpbmdzIEluc2lkZSBGaWVsZHM=
+ TG9jYWwgTmFtZQ==
+ TG9jYXRpb24=
+ TG9nbw==
+ TWFyZ2luIEJvdHRvbQ==
+ TWFyZ2luIExlZnQ=
+ TWFyZ2luIFJpZ2h0
+ TWFyZ2lucw==
+ TWFyZ2luIFRvcA==
+ TWF4aW11bSBudW1iZXIgb2YgQ2F0ZWdvcmllcyBvbiBJdGVtIGNhbiBiZSBhZGRlZCB0bw==
+ Q3VzdG9tIE1lbnUgSWNvbiAoaWUuIGltZy9tZW51X3Byb2R1Y3RzLmdpZik=
+ TWVzc2FnZSBCb2R5
+ TWVzc2FnZSBUeXBl
+ TW9kaWZpZWQ=
+ TW9kdWxl
+ TXVsdGlsaW5ndWFs
+ TmFtZQ==
+ TmV3
+ UGFjayBOYW1l
+ UGFkZGluZyBCb3R0b20=
+ UGFkZGluZyBMZWZ0
+ UGFkZGluZyBSaWdodA==
+ UGFkZGluZ3M=
+ UGFkZGluZyBUb3A=
+ UGVyY2VudHMgQ29tcGxldGVk
+ TGFiZWw=
+ UGhyYXNlIFR5cGU=
+ UG9w
+ UG9wdWxhcg==
+ UG9zaXRpb24=
+ UHJpbWFyeQ==
+ UHJpbWFyeSBDYXRlZ29yeQ==
+ UHJpbWFyeQ==
+ UHJpbWFyeSBUcmFuc2xhdGlvbg==
+ UHJpb3JpdHk=
+ TWluaW11bSBxdWFudGl0eSBmb3IgRnJlZSBTaGlwcGluZw==
+ UmF0aW5n
+ S2V5d29yZA==
+ UmVsYXRpb24gSUQ=
+ VHlwZQ==
+ UmVtb3RlIFVSTA==
+ UmVwbGFjZSBEdXBsaWNhdGVz
+ UmV2aWV3IElE
+ UmV2aWV3IFRleHQ=
+ U2FtZSBBcyBUaHVtYg==
+ QmFzZWQgT24=
+ U3R5bGU=
+ U2VsZWN0b3IgSUQ=
+ U2VsZWN0b3IgTmFtZQ==
+ U2tpcCBGaXJzdCBSb3c=
+ U3RhdHVz
+ U3R5bGVzaGVldCBJRA==
+ U3ViamVjdA==
+ UG9pbnRzIHRvIENhdGVnb3J5
+ SXRlbQ==
+ VGV4dCBBbGlnbg==
+ VGV4dCBEZWNvcmF0aW9u
+ VGV4dCBWZXJzaW9u
+ VGhvdXNhbmRzIFNlcGFyYXRvcg==
+ VGltZSBGb3JtYXQ=
+ VGl0bGU=
+ VG8=
+ VG9w
+ VmFsdWU=
+ TWVhc3VyZXMgU3lzdGVt
+ VXBsb2FkIEZpbGUgRnJvbSBMb2NhbCBQQw==
+ VVJM
+ TGluayB0byBFeHRlcm5hbCBVUkw=
+ VXNlIEN1c3RvbSBNZW51IEljb24=
+ VmVyc2lvbg==
+ VmlzaWJpbGl0eQ==
+ Vm90ZXM=
+ V2lkdGg=
+ Wi1JbmRleA==
+ Rm9udCBQcm9wZXJ0aWVz
+ RnJvbSBEYXRl
+ RnJvbnQgZW5k
+ Z2lnYWJ5dGUocyk=
+ VGhpcyBoZWxwIHNlY3Rpb24gZG9lcyBub3QgeWV0IGV4aXN0LCBpdCdzIGNvbWluZyBzb29uIQ==
+ aHRtbA==
+ SUQgRmllbGQ=
+ SW1wb3J0aW5nIEVtYWlsIEV2ZW50cyAuLi4=
+ SW1wb3J0aW5nIExhbmd1YWdlcyAuLi4=
+ SW1wb3J0aW5nIFBocmFzZXMgLi4u
+ RW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCB1bmRvIGFueSBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUgdG8gZXhpc3RpbmcgcGhyYXNlcw==
+ SW1wb3J0aW5nIFBocmFzZXM=
+ SW4tbGluaw==
+ SW52YWxpZCBFLU1haWw=
+ SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlIGludGVnZXI=
+ TWlzc2luZyBvciBpbnZhbGlkIEluLVBvcnRhbCBMaWNlbnNl
+ SW52YWxpZCB1c2VybmFtZSBvciBwYXNzd29yZA==
+ SW52YWxpZCBzdGF0ZQ==
+ Q2F0ZWdvcmllcw==
+ TGlua3M=
+ QXJ0aWNsZXM=
+ VG9waWNz
+ SzQgQWR2YW5jZWQgVmlldw==
+ SzQgQ2F0YWxvZw==
+ S0I=
+ TGFuZ3VhZ2U=
+ SW1wb3J0IHByb2dyZXNz
+ TGFzdCBVcGRhdGVk
+ RGF0ZQ==
+ TGluayBEZXNjcmlwdGlvbg==
+ RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBsaW5rcw==
+ SGl0cw==
+ TGluayBOYW1l
+ TnVtYmVyIG9mIGRheXMgZm9yIGEgbGluayB0byBiZSBORVc=
+ TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdl
+ TnVtYmVyIG9mIGxpbmtzIHBlciBwYWdlIG9uIGEgc2hvcnQgbGlzdGluZw==
+ UmF0aW5n
+ TGluayByZXZpZXdlZA==
+ QW5kIHRoZW4gYnk=
+ T3JkZXIgbGlua3MgYnk=
+ YW5kIHRoZW4gYnk=
+ U29ydCByZXZpZXdzIGJ5
+ VVJM
+ RGlzcGxheSBsaW5rIFVSTCBpbiBzdGF0dXMgYmFy
+ TGludXggKG4p
+ TG9jYWwgSW1hZ2U=
+ TG9nZ2VkIGluIGFz
+ TG9naW4=
+ KEdNVCk=
+ KEdNVCAtMDE6MDAp
+ KEdNVCAtMTA6MDAp
+ KEdNVCAtMTE6MDAp
+ KEdNVCAtMTI6MDAp
+ KEdNVCAtMDI6MDAp
+ KEdNVCAtMDM6MDAp
+ KEdNVCAtMDQ6MDAp
+ KEdNVCAtMDU6MDAp
+ KEdNVCAtMDY6MDAp
+ KEdNVCAtMDc6MDAp
+ KEdNVCAtMDg6MDAp
+ KEdNVCAtMDk6MDAp
+ TWFyZ2lucw==
+ TUI=
+ R3JvdXAgTWVtYmVyc2hpcCBFeHBpcmF0aW9uIFJlbWluZGVyIChkYXlzKQ==
+ TWFpbiBNZW51
+ TWV0cmlj
+ TWlzc2luZyBJbiBUaGVtZQ==
+ Q2F0ZWdvcnkgcGF0aCBpbiBvbmUgZmllbGQ=
+ TW9kdWxlIG5vdCBsaWNlbnNlZA==
+ TW9uZGF5
+ TmV2ZXI=
+ TmV2ZXIgRXhwaXJlcw==
+ TmV3
+ TnVtYmVyIG9mIGRheXMgdG8gYXJjaGl2ZSBhcnRpY2xlcyBhdXRvbWF0aWNhbGx5
+ RGlzcGxheSBlZGl0b3IgUElDS3MgYWJvdmUgcmVndWxhciBhcnRpY2xlcw==
+ TnVtYmVyIG9mIGRheXMgZm9yIGEgYXJ0aWNsZSB0byBiZSBORVc=
+ TnVtYmVyIG9mIGFydGljbGVzIHBlciBwYWdl
+ QXJ0aWNsZXMgUGVyIFBhZ2UgKFNob3J0bGlzdCk=
+ QW5kIHRoZW4gYnk=
+ T3JkZXIgYXJ0aWNsZXMgYnk=
+ QW5kIHRoZW4gYnk=
+ U29ydCByZXZpZXdzIGJ5
+ TmV4dCBjYXRlZ29yeQ==
+ TmV4dCBncm91cA==
+ TmV4dCBVc2Vy
+ Tm8=
+ Tm9uZQ==
+ Tm8gU3ViamVjdA==
+ Tm8gdG9waWNz
+ TnVtYmVyIG9mIFBvc3Rz
+ b2Y=
+ T2Zm
+ T24=
+ T25lIFdheQ==
+ ZGF5KHMp
+ aG91cihzKQ==
+ bWludXRlKHMp
+ bW9udGgocyk=
+ c2Vjb25kKHMp
+ d2VlayhzKQ==
+ eWVhcihzKQ==
+ T3JpZ2luYWwgVmFsdWVz
+ T3JpZ2luYWwgVmFsdWU=
+ T3JpZ2luYWwgVmFsdWVz
+ T3RoZXIgRmllbGRz
+ KEdNVCArMDE6MDAp
+ KEdNVCArMTA6MDAp
+ KEdNVCArMTE6MDAp
+ KEdNVCArMTI6MDAp
+ KEdNVCArMTM6MDAp
+ KEdNVCArMDI6MDAp
+ KEdNVCArMDM6MDAp
+ KEdNVCArMDQ6MDAp
+ KEdNVCArMDU6MDAp
+ KEdNVCArMDY6MDAp
+ KEdNVCArMDc6MDAp
+ KEdNVCArMDg6MDAp
+ KEdNVCArMDk6MDAp
+ UGFkZGluZ3M=
+ UGFnZQ==
+ VG8gY2hhbmdlIHRoZSBwYXNzd29yZCwgZW50ZXIgdGhlIHBhc3N3b3JkIGhlcmUgYW5kIGluIHRoZSBib3ggYmVsb3c=
+ UGVuZGluZw==
+ UGVyZm9ybWluZyBCYWNrdXA=
+ UGVyZm9ybWluZyBFeHBvcnQ=
+ UGVyZm9ybWluZyBJbXBvcnQ=
+ UGVyZm9ybWluZyBSZXN0b3Jl
+ QWxsb3dzIGFjY2VzcyB0byB0aGUgQWRtaW5pc3RyYXRpb24gdXRpbGl0eQ==
+ UmVhZC1Pbmx5IEFjY2VzcyBUbyBEYXRhYmFzZQ==
+ Q2F0ZWdvcmllcw==
+ TGlua3M=
+ QXJ0aWNsZXM=
+ VG9waWNz
+ UGVybWlzc2lvbiBUeXBlIEFkbWlu
+ QWRtaW5pc3RyYXRpb24=
+ UGVybWlzc2lvbiBUeXBlIEZyb250IEVuZA==
+ RnJvbnQgRW5k
+ Tm90IFRyYW5zbGF0ZWQ=
+ VHJhbnNsYXRlZA==
+ QWRtaW4=
+ Qm90aA==
+ RnJvbnQ=
+ RWRpdG9yJ3MgcGljaw==
+ U2VsZWN0ZWQgQ29sdW1ucw==
+ UG9w
+ UG9zaXRpb24gQW5kIFZpc2liaWxpdHk=
+ TmV3IHBvc3RzIChkYXlzKQ==
+ TnVtYmVyIG9mIHBvc3RzIHBlciBwYWdl
+ UG9zdHM=
+ UHJldmlvdXMgY2F0ZWdvcnk=
+ UHJldmlvdXMgZ3JvdXA=
+ UHJldmlvdXMgVXNlcg==
+ UHJpbWFyeQ==
+ QWN0aXZlIEFydGljbGVz
+ QWN0aXZlIENhdGVnb3JpZXM=
+ QWN0aXZlIExpbmtz
+ QWN0aXZlIFRvcGljcw==
+ QWN0aXZlIFVzZXJz
+ QWRkIE1vZHVsZQ==
+ U2VudCBUbw==
+ QWRtaW4gZ3JvdXA=
+ TWVzc2FnZXMgZnJvbSBTaXRlIEFkbWluIGFyZSBmcm9t
+ QWR2YW5jZWQgU2VhcmNo
+ QWxsb3cgcGFzc3dvcmQgcmVzZXQgYWZ0ZXI=
+ QWxsIHRlbXBsYXRlcw==
+ QWx0IHZhbHVl
+ QXBwbHlpbmcgQmFuIExpc3QgdG8gRXhpc3RpbmcgVXNlcnMuLg==
+ Q29udGludWUgdG8gcmVzdG9yZSBhdCBteSBvd24gcmlzaz8=
+ QXJjaGl2ZWQ=
+ QXJjaGl2YXRpb24gRGF0ZQ==
+ QXZlcmFnZSBSYXRpbmcgb2YgQXJ0aWNsZXM=
+ QXJ0aWNsZSBCb2R5
+ QXJ0aWNsZSBFeGNlcnB0
+ QXJ0aWNsZSBFeGNlcnB0
+ VG90YWwgQXJ0aWNsZSBSZXZpZXdz
+ QWN0aXZlIEFydGljbGVz
+ QXJjaGl2ZWQgQXJ0aWNsZXM=
+ UGVuZGluZyBBcnRpY2xlcw==
+ VG90YWwgQXJ0aWNsZXM=
+ QXR0YWNobWVudA==
+ QXR0ZW50aW9uIQ==
+ QXV0aG9y
+ R2VuZXJhdGUgZnJvbSB0aGUgYXJ0aWNsZSBib2R5
+ QXV0b21hdGljIERpcmVjdG9yeSBOYW1l
+ QXV0b21hdGljIEZpbGVuYW1l
+ TW9kdWxlcw==
+ QmFjayBVcCBEYXRl
+ QmFja3VwIFBhdGg=
+ QmFja3VwIHN0YXR1cw==
+ QmFubmVkIFVzZXJz
+ RGF0ZSBvZiBCaXJ0aA==
+ Q2FjaGUgVGltZW91dCAoc2Vjb25kcyk=
+ RWRpdG9yJ3MgUGljayBDYXRlZ29yaWVz
+ Q2F0ZWdvcnkgSUQ=
+ Q2F0ZWdvcnkgTGVhZCBTdG9yeSBBcnRpY2xlcw==
+ Q2F0ZWdvcnkgUGVybWlzc2lvbnM=
+ Q2F0ZWdvcnkgTGVhZCBTdG9yeQ==
+ Q2Vuc29yc2hpcCBJZA==
+ Q2Vuc29yc2hpcCBXb3Jk
+ Q2hhcnNldA==
+ Q2l0eQ==
+ Q29tbWVudHM=
+ Q29udGludWU=
+ Q29weSBMYWJlbHMgZnJvbSB0aGlzIExhbmd1YWdl
+ Q291bnRyeQ==
+ Q3JlYXRlZCBieQ==
+ Q3JlYXRlZCBvbg==
+ Q3JlYXRlZCBhdA==
+ Q3VycmVudCBTZXNzaW9ucw==
+ Q3VzdG9tIEZpbGVuYW1l
+ RGF0YWJhc2UgU2V0dGluZ3M=
+ VG90YWwgU2l6ZSBvZiB0aGUgRGF0YWJhc2U=
+ KG1tLWRkLXl5eXkp
+ U2VydmVyIERhdGFiYXNl
+ U2VydmVyIFBhc3N3b3Jk
+ RGF0YWJhc2UgVXNlciBOYW1l
+ RGVjaW1hbCBQb2ludA==
+ RGVmYXVsdA==
+ RGVsZXRl
+ RGVzY3JpcHRpb24=
+ RGlyZWN0b3J5IE5hbWU=
+ RGlzYWJsZWQgQXJ0aWNsZXM=
+ RGlzYWJsZWQgQ2F0ZWdvcmllcw==
+ RGlzYWJsZWQgTGlua3M=
+ RGlzcGxheSBPcmRlcg==
+ RG93bmxvYWQgTGFuZ3VhZ2UgRXhwb3J0Og==
+ QWxsb3cgRHVwbGljYXRlIFJhdGluZyBWb3Rlcw==
+ QWxsb3cgRHVwbGljYXRlIFJldmlld3M=
+ RWRpdA==
+ RWRpdG9yJ3MgUGljaw==
+ RWRpdG9yJ3MgUGljayBBcnRpY2xlcw==
+ RWRpdG9yJ3MgUGljayBMaW5rcw==
+ RWRpdG9yIFBpY2sgVG9waWNz
+ RWRpdCBRdWVyeQ==
+ RW1haWw=
+ RW1haWwgQm9keQ==
+ RW1haWwgZGVsaXZlcnkgYWJvcnRlZA==
+ VGhlIEVtYWlsIE1lc3NhZ2UgaGFzIGJlZW4gc2VudA==
+ UGxlYXNlIFdhaXQgd2hpbGUgSW4tUG9ydGFsIHByZXBhcmVzIHRvIHNlbmQgdGhlIG1lc3NhZ2UuLg==
+ RW1haWwgU3ViamVjdA==
+ RW1vdGlvbiBJZA==
+ RW5hYmxlIFRlbXBsYXRlIENhY2hpbmc=
+ RW5hYmxlZA==
+ RW5hYmxlIEhUTUw/
+ RXJyb3IgVGFn
+ RXZlbnQ=
+ RXhwaXJhdGlvbiBEYXRl
+ RXhwb3J0IEZpbGVuYW1l
+ R2VuZXJhbCBlcnJvcjogdW5hYmxlIHRvIGV4cG9ydA==
+ RmllbGQgSWQ=
+ RmllbGQgTGFiZWw=
+ RmllbGQgTmFtZQ==
+ RmllbGQgUHJvbXB0
+ RmlsZSBJZA==
+ RmlsZSBuYW1l
+ Rmlyc3QgTmFtZQ==
+ Rmlyc3QgTmFtZQ==
+ RnJlcXVlbmN5
+ RnJvbS9UbyBVc2Vy
+ RnJvbQ==
+ RnJvbnQgcGFnZSBsZWFkIGFydGljbGU=
+ R2VuZXJhbCBQZXJtaXNzaW9ucw==
+ R3JvdXAgTmFtZQ==
+ RXh0cmEgTWFpbCBIZWFkZXJz
+ SGVhZGluZw==
+ KE1pbmltdW0gNCk=
+ SGl0cw==
+ SG90
+ SG90IEFydGljbGVz
+ SG90IExpbmtz
+ SG90IFRvcGljcw==
+ SFRNTA==
+ SFRNTCBWZXJzaW9u
+ SWNvbiBVUkw=
+ SW1hZ2U=
+ SW1hZ2UgSUQ=
+ SW1wb3J0IGVuY291bnRlcmVkIGFuIGVycm9yIGFuZCBkaWQgbm90IGNvbXBsZXRlLg==
+ TGluayBJbWFnZSBOYW1l
+ VGFibGUgTmFtZSBQcmVmaXg=
+ SW5pdGlhbCBJbXBvcnQgQ2F0ZWdvcnk=
+ SW4tTGluayBEYXRhYmFzZSBOYW1l
+ SW4tTGluayBEYXRhYmFzZSBQYXNzd29yZA==
+ SW4tTGluayBEYXRhYmFzZSBVc2VybmFtZQ==
+ SW4tTGluayBTZXJ2ZXIgTmFtZQ==
+ SW4tTGluayBTUUwgVHlwZQ==
+ SW5wdXQgVHlwZQ==
+ SW5zdGFsbGF0aW9uIFN0YXR1cw==
+ SVAgQWRkcmVzcw==
+ SVAgQWRkcmVzcw==
+ SXRlbQ==
+ SXRlbSBGaWVsZA==
+ RmllbGQgVmFsdWU=
+ RmllbGQgQ29tcGFyaXNvbg==
+ S2V5IFN0cm9rZQ==
+ S2V5d29yZA==
+ TGFiZWw=
+ TGFuZ3VhZ2UgRmlsZQ==
+ TGFuZ3VhZ2UgSWQ=
+ TGFuZ3VhZ2UgQ2FjaGUgVGltZW91dA==
+ RGF0ZSBGb3JtYXQ=
+ VGltZSBGb3JtYXQ=
+ TGFzdCBVcGRhdGVkIEFydGljbGU=
+ TGFzdCBDYXRlZ29yeSBVcGRhdGU=
+ TGFzdCBVcGRhdGVkIExpbms=
+ TGFzdCBOYW1l
+ TGFzdCBVcGRhdGVkIFBvc3QgRGF0ZQ==
+ TGFzdCBVcGRhdGVkIFBvc3QgVGltZQ==
+ TGFzdCBVcGRhdGVkIFRvcGljIERhdGU=
+ TGFzdCBVcGRhdGVkIFRvcGljIFRpbWU=
+ TGFzdCBOYW1l
+ U2l0ZSBMZWFkIFN0b3J5
+ Q2F0ZWdvcnkgbGVhZCBhcnRpY2xl
+ TGVhZCBTdG9yeSBBcnRpY2xlcw==
+ TGluayBJZA==
+ VG90YWwgTGluayBSZXZpZXdz
+ QXZlcmFnZSBSYXRpbmcgb2YgTGlua3M=
+ TGluayBPd25lcg==
+ SW5zdGFsbCBQaHJhc2UgVHlwZXM6
+ TG9jYWwgTmFtZQ==
+ TG9jYXRpb24=
+ U2VydmVyIFJlcXVpcmVzIEF1dGhlbnRpY2F0aW9u
+ U2VuZCBIVE1MIGVtYWls
+ UG9ydCAoZS5nLiBwb3J0IDI1KQ==
+ TWFpbCBTZXJ2ZXIgQWRkcmVzcw==
+ TWF4aW11bSBIaXRzIG9mIGFuIEFydGljbGU=
+ TWF4aW11bSBIaXRzIG9mIGEgTGluaw==
+ TWF4aW11bSBWb3RlcyBvZiBhIExpbms=
+ VG9waWMgTWF4aW11bSBIaXRz
+ VG9waWMgTWF4aW11bSBWb3Rlcw==
+ TWF4aW11bSBWb3RlcyBvZiBhbiBBcnRpY2xl
+ TWF4aW1hbCBpbXBvcnRlZCBjYXRlZ29yeSBsZXZlbA==
+ TWVtYmVyc2hpcCBFeHBpcmVz
+ Rm9ybWF0
+ TWV0YSBEZXNjcmlwdGlvbg==
+ TWV0YSBLZXl3b3Jkcw==
+ TWluaW11bSBrZXl3b3JkIGxlbmd0aA==
+ TW9kaWZpZWQgT24=
+ TW9kaWZpZWQgYXQ=
+ TW9kdWxl
+ TW92ZSBkb3du
+ TW92ZSB1cA==
+ U2hvdyBtdWx0aXBsZQ==
+ TmFtZQ==
+ TmV3
+ TmV3IEFydGljbGVz
+ TmV3IENhdGVnb3JpZXM=
+ TmV3ZXN0IEFydGljbGUgRGF0ZQ==
+ TmV3ZXN0IENhdGVnb3J5IERhdGU=
+ TmV3ZXN0IExpbmsgRGF0ZQ==
+ TmV3ZXN0IFBvc3QgRGF0ZQ==
+ TmV3ZXN0IFBvc3QgVGltZQ==
+ TmV3ZXN0IFRvcGljIERhdGU=
+ TmV3ZXN0IFRvcGljIFRpbWU=
+ TmV3ZXN0IFVzZXIgRGF0ZQ==
+ TmV3IExpbmtz
+ TmV3cyBBcnRpY2xlIElE
+ TmV3IFRvcGljcw==
+ Q3VycmVudGx5IEFjdGl2ZSBVc2VyIFNlc3Npb25z
+ Tm90aWZ5IE93bmVy
+ TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgdW5yZWdpc3RlcmVkIHVzZXJzIHRvIHZpZXcgaXQ=
+ T3ZlcndyaXRlIEV4aXN0aW5nIFBocmFzZXM=
+ UGFjayBOYW1l
+ UGFyYW1ldGVy
+ UGFyZW50IHRlbXBsYXRlcw==
+ UGFzc3dvcmQ=
+ UmVwZWF0IFBhc3N3b3Jk
+ UGVuZGluZw==
+ UGVuZGluZyBDYXRlZ29yaWVz
+ UGVuZGluZyBJdGVtcw==
+ UGVuZGluZyBMaW5rcw==
+ UGVyZm9ybSB0aGlzIG9wZXJhdGlvbiBub3c/
+ UGVyIFBhZ2U=
+ UGVyc29uYWwgSW5mb3JtYXRpb24=
+ UGhvbmU=
+ UGhyYXNlIElk
+ UGhyYXNlcw==
+ UGhyYXNlIFR5cGU=
+ UGxhaW4gVGV4dA==
+ UG9wdWxhcml0eQ==
+ UG9wdWxhciBBcnRpY2xlcw==
+ UG9wdWxhciBMaW5rcw==
+ UG9wdWxhciBUb3BpY3M=
+ UG9zdGVkIGJ5
+ UG9zdHMgdG8gbG9jaw==
+ VG90YWwgUG9zdHM=
+ UHJpbWFyeQ==
+ UHJpbWFyeSBHcm91cA==
+ UHJpbWFyeSBWYWx1ZQ==
+ UHJpb3JpdHk=
+ UHJvcGVydGllcw==
+ UmF0aW5n
+ KE1pbmltdW0gMCwgTWF4aW11bSA1KQ==
+ TnVtYmVyIG9mIERhdGFiYXNlIFJlY29yZHM=
+ TnVtYmVyIG9mIFJlZ2lvbiBQYWNrcw==
+ UmVndWxhciBVc2VyIEdyb3Vw
+ TGluayBwZXJtaXNzaW9uIElEIGZvciBhbGwgcmVnaXN0ZXJlZCB1c2VycyB0byB2aWV3IGl0
+ UmVsYXRpb24gSUQ=
+ UmVsYXRpb24gVHlwZQ==
+ U2VhcmNoIFJlbGV2YW5jZSBkZXBlbmRzIG9u
+ U2VhcmNoIFJlbGV2ZW5jZSBTZXR0aW5ncw==
+ VXNlIHJlbW90ZSBpbWFnZSAoVVJMKQ==
+ UmVwbGFjZW1lbnQgV29yZA==
+ SW5jcmVhc2UgaW1wb3J0YW5jZSBpZiBmaWVsZCBjb250YWlucyBhIHJlcXVpcmVkIGtleXdvcmQgYnk=
+ UmVzdG9yZSBoYXMgZmFpbGVkIGFuIGVycm9yIG9jY3VyZWQ6
+ Q2hvb3NlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGJhY2t1cCBkYXRlcyB0byByZXN0b3JlIG9yIGRlbGV0ZQ==
+ UmVzdG9yZSBTdGF0dXM=
+ UmVzdG9yZSBoYXMgYmVlbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
+ UmV2aWV3ZWQgQnk=
+ UmV2aWV3IElE
+ UmV2aWV3IFRleHQ=
+ U2VsZWN0IE1vZHVsZSBSb290IENhdGVnb3J5Og==
+ Um9vdCBjYXRlZ29yeSBuYW1lIChsYW5ndWFnZSB2YXJpYWJsZSk=
+ Um9vdCBQYXNzd29yZA==
+ UGxlYXNlIGVudGVyIHRoZSBSb290IHBhc3N3b3Jk
+ VmVyaWZ5IFJvb3QgUGFzc3dvcmQ=
+ UnVsZSBUeXBl
+ VmFsaWRhdGlvbiBQcm9ncmVzcw==
+ U2VhcmNo
+ U2VhcmNoIFR5cGU=
+ U2VsZWN0IFNvdXJjZSBMYW5ndWFnZQ==
+ U2VuZCBFbWFpbCBBcw==
+ U2VudCBPbg==
+ U2VydmVyIEhvc3RuYW1l
+ U0lE
+ U2Vzc2lvbiBDb29raWUgTmFtZQ==
+ U2Vzc2lvbiBNYW5hZ2VtZW50IE1ldGhvZA==
+ U2Vzc2lvbiBJbmFjdGl2aXR5IFRpbWVvdXQgKHNlY29uZHMp
+ U2hvdyBvbiB0aGUgZ2VuZXJhbCB0YWI=
+ U2ltcGxlIFNlYXJjaA==
+ QWRkaXRpb25hbCBNZXNzYWdlIEhlYWRlcnM=
+ TWFpbCBTZXJ2ZXIgUGFzc3dvcmQ=
+ TWFpbCBTZXJ2ZXIgVXNlcm5hbWU=
+ VXNlIG5vbi1ibG9ja2luZyBzb2NrZXQgbW9kZQ==
+ U1FMIFF1ZXJ5Og==
+ QW4gU1FMIGVycm9yIGhhcyBvY2N1cmVk
+ UGVyZm9ybSBTUUwgUXVlcnk=
+ U1FMIFF1ZXJ5IFJlc3VsdHM=
+ U2VydmVyIFR5cGU=
+ U3RhcnQgRGF0ZQ==
+ U3RhdGU=
+ U3RhdHVz
+ U3RlcCBPbmU=
+ U3RyZWV0
+ U3R5bGVzaGVldA==
+ U3ViamVjdA==
+ U3ViIFNlYXJjaA==
+ RW5hYmxlIFRhZyBDYWNoaW5n
+ VG90YWwgU2l6ZSBvZiBTeXN0ZW0gRmlsZXM=
+ U3lzdGVtIHByZW1pc3Npb25z
+ TnVtYmVyIG9mIERhdGFiYXNlIFRhYmxlcw==
+ VGVtcGxhdGU=
+ VGV4dCBWZXJzaW9u
+ VGhlbWU=
+ TnVtYmVyIG9mIFRoZW1lcw==
+ VGhlbWUgSWQ=
+ VGhvdXNhbmRzIFNlcGFyYXRvcg==
+ UmVtb3RlIFVSTA==
+ KGhoOm1tOnNzKQ==
+ VGl0bGU=
+ VG8=
+ VG9waWNzIEF2ZXJhZ2UgUmF0aW5n
+ VG9waWMgSUQ=
+ VG9waWMgTG9ja2Vk
+ VG90YWwgVG9waWMgUmV2aWV3cw==
+ QWN0aXZlIFRvcGljcw==
+ RGlzYWJsZWQgVG9waWNz
+ UGVuZGluZyBUb3BpY3M=
+ VG90YWwgVG9waWNz
+ VG90YWwgVXNlcnMgd2l0aCBUb3BpY3M=
+ VG90YWwgQ2F0ZWdvcmllcw==
+ VG90YWwgTGlua3M=
+ VG90YWwgVXNlciBHcm91cHM=
+ VHlwZQ==
+ VXBkYXRpbmc=
+ VXBsb2FkIGltYWdlIGZyb20gbG9jYWwgUEM=
+ VVJM
+ VXNlciBDb3VudA==
+ VXNlcm5hbWU=
+ VXNlcm5hbWU=
+ QWN0aXZlIFVzZXJz
+ RGlzYWJsZWQgVXNlcnM=
+ UGVuZGluZyBVc2Vycw==
+ TnVtYmVyIG9mIFVuaXF1ZSBDb3VudHJpZXMgb2YgVXNlcnM=
+ TnVtYmVyIG9mIFVuaXF1ZSBTdGF0ZXMgb2YgVXNlcnM=
+ VmFsdWU=
+ TGlzdCBvZiBWYWx1ZXM=
+ Vmlld3M=
+ VmlzaWJsZQ==
+ KE1pbmltdW0gMSk=
+ Vm90ZXM=
+ V2FybmluZyE=
+ V2VpZ2h0
+ Wmlw
+ U2Vzc2lvbiBSZWZlcnJlciBDaGVja2luZw==
+ U2luZ2xlLXF1b3Rl
+ bGFfUmF0aW5n
+ QWxyZWFkeSB2b3RlZA==
+ UmVjaXByb2NhbA==
+ VXNlIENhcHRjaGEgY29kZSBvbiBSZWdpc3RyYXRpb24=
+ UmVtb3ZlIEZyb20=
+ Tm90IGFsbCByZXF1aXJlZCBmaWVsZHMgYXJlIGZpbGxlZC4gUGxlYXNlIGZpbGwgdGhlbSBmaXJzdC4=
+ QWNjZXNzIGRlbmllZA==
+ RmlsZSBlcnJvcg==
+ RmlsZSBub3QgZm91bmQ=
+ VW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxl
+ QW4gdW5kZWZpbmVkIGVycm9yIGhhcyBvY2N1cmVk
+ UmV2aWV3ZXI=
+ UmV2aWV3IGFkZGVkIHN1Y2Nlc3NmdWxseQ==
+ VGhpcyBpdGVtIGhhcyBhbHJlYWR5IGJlZW4gcmV2aWV3ZWQ=
+ RXJyb3IgYWRkaW5nIHJldmlldw==
+ UmV2aWV3cyBQZXIgUGFnZQ==
+ UmV2aWV3cyBQZXIgUGFnZSAoU2hvcnRsaXN0KQ==
+ RXJyb3IgdmVyaWZ5aW5nIHBhc3N3b3Jk
+ UnVubmluZyBRdWVyeQ==
+ U2FtcGxlIFRleHQ=
+ U2F2ZQ==
+ U2VhcmNo
+ U2VhcmNo
+ U2VhcmNoIENhdGVnb3JpZXM=
+ U2VhcmNoIExpbmtz
+ U2VhcmNoIEFydGljbGVz
+ U2VhcmNoIFRvcGljcw==
+ Q2F0ZWdvcmllczE=
+ Q2xlYXIgU2VhcmNo
+ TmV3IFNlYXJjaA==
+ TUVUQSBJbmZvcm1hdGlvbg==
+ Q2F0ZWdvcnk=
+ Q291bnRlcnM=
+ Q3VzdG9tIEZpZWxkcw==
+ RnVsbCBTaXplIEltYWdl
+ R2VuZXJhbA==
+ SW1hZ2U=
+ SW1hZ2UgU2V0dGluZ3M=
+ VXNlciBJdGVtcw==
+ TWVzc2FnZQ==
+ U2VjdGlvbiBPdmVydmlldw==
+ UHJvcGVydGllcw==
+ UXVpY2sgTGlua3M=
+ UmVsYXRpb24=
+ VGVtcGxhdGVz
+ VGh1bWJuYWlsIEltYWdl
+ VHJhbnNsYXRpb24=
+ U2VhcmNoIFVzZXJz
+ U2VsZWN0IENvbHVtbnM=
+ U2VsZWN0aW5nIENhdGVnb3JpZXM=
+ RW1wdHkgc2VsZWN0aW9u
+ U2VtaWNvbG9u
+ T25lIGZpZWxkIGZvciBlYWNoIGNhdGVnb3J5IGxldmVs
+ Q2xvbmU=
+ RWRpdA==
+ RXhwb3J0
+ R28gVXA=
+ SW1wb3J0
+ TW92ZSBEb3du
+ TW92ZSBVcA==
+ UmVidWlsZA==
+ UmVzY2FuIFRoZW1lcw==
+ U2V0IFByaW1hcnk=
+ U2hvd2luZyBMb2dz
+ U2hvd2luZyBTdGF0aXN0aWNz
+ U2hvdyBFbWFpbCBMb2c=
+ U2hvd2luZyBMb2dz
+ QW5kIHRoZW4gYnk=
+ U3BhY2U=
+ QWxiZXJ0YQ==
+ QWxhc2th
+ QWxhYmFtYQ==
+ QXJrYW5zYXM=
+ QXJpem9uYQ==
+ QnJpdGlzaCBDb2x1bWJpYQ==
+ Q2FsaWZvcm5pYQ==
+ Q29sb3JhZG8=
+ Q29ubmVjdGljdXQ=
+ RGlzdHJpY3Qgb2YgQ29sdW1iaWE=
+ RGVsYXdhcmU=
+ RmxvcmlkYQ==
+ R2VvcmdpYQ==
+ SGF3YWlp
+ SW93YQ==
+ SWRhaG8=
+ SWxsaW5vaXM=
+ SW5kaWFuYQ==
+ S2Fuc2Fz
+ S2VudHVja3k=
+ TG91aXNpYW5h
+ TWFzc2FjaHVzZXR0cw==
+ TWFuaXRvYmE=
+ TWFyeWxhbmQ=
+ TWFpbmU=
+ TWljaGlnYW4=
+ TWlubmVzb3Rh
+ TWlzc291cmk=
+ TWlzc2lzc2lwcGk=
+ TW9udGFuYQ==
+ TmV3IEJydW5zd2ljaw==
+ Tm9ydGggQ2Fyb2xpbmE=
+ Tm9ydGggRGFrb3Rh
+ TmVicmFza2E=
+ TmV3IEhhbXBzaGlyZQ==
+ TmV3IEplcnNleQ==
+ TmV3Zm91bmRsYW5kIGFuZCBMYWJyYWRvcg==
+ TmV3IE1leGljbw==
+ Tm92YSBTY290aWE=
+ Tm9ydGh3ZXN0IFRlcnJpdG9yaWVz
+ TnVuYXZ1dA==
+ TmV2YWRh
+ TmV3IFlvcms=
+ T2hpbw==
+ T2tsYWhvbWE=
+ T250YXJpbw==
+ T3JlZ29u
+ UGVubnN5bHZhbmlh
+ UHJpbmNlIEVkd2FyZCBJc2xhbmQ=
+ UHVlcnRvIFJpY28=
+ UXVlYmVj
+ UmhvZGUgSXNsYW5k
+ U291dGggQ2Fyb2xpbmE=
+ U291dGggRGFrb3Rh
+ U2Fza2F0Y2hld2Fu
+ VGVubmVzc2Vl
+ VGV4YXM=
+ VXRhaA==
+ VmlyZ2luaWE=
+ VmVybW9udA==
+ V2FzaGluZ3Rvbg==
+ V2lzY29uc2lu
+ V2VzdCBWaXJnaW5pYQ==
+ V3lvbWluZw==
+ WXVrb24=
+ U3RlcA==
+ RGVmaW5pdGlvbg==
+ UHJldmlldw==
+ U3VuZGF5
+ VGFi
+ QWRtaW5pc3RyYXRpb24gUGFuZWwgVUk=
+ QWR2YW5jZWQgVmlldw==
+ QmFja3Vw
+ VXNlciBCYW4gTGlzdA==
+ QmFzZSBTdHlsZXM=
+ QmxvY2sgU3R5bGVz
+ Q2F0YWxvZw==
+ Q2F0ZWdvcmllcw==
+ U2VsZWN0IEl0ZW0=
+ Q2F0ZWdvcnkgU2VsZWN0
+ Q2Vuc29yc2hpcA==
+ Q29tbXVuaXR5
+ R2VuZXJhbCBTZXR0aW5ncw==
+ Q2Vuc29yc2hpcA==
+ Q3VzdG9tIEZpZWxkcw==
+ RS1tYWlsIFNldHRpbmdz
+ R2VuZXJhbCBTZXR0aW5ncw==
+ T3V0cHV0IFNldHRpbmdz
+ U2VhcmNoIFNldHRpbmdz
+ R2VuZXJhbCBTZXR0aW5ncw==
+ U21pbGV5cw==
+ R2VuZXJhbCBTZXR0aW5ncw==
+ Q3VzdG9t
+ RWRpdGluZyBSZXZpZXc=
+ RW1haWwgRXZlbnRz
+ RW1haWwgTG9n
+ RW1haWwgTWVzc2FnZQ==
+ RXhwb3J0IERhdGE=
+ RXhwb3J0IExhbmd1YWdlIFBhY2s=
+ RmlsZXM=
+ R2VuZXJhbA==
+ R2VuZXJhbCBTZXR0aW5ncw==
+ R3JvdXA=
+ R3JvdXBz
+ U2VsZWN0IEdyb3Vw
+ SGVscA==
+ SW1hZ2Vz
+ SW1wb3J0IERhdGE=
+ SW1wb3J0IExhbmd1YWdlIFBhY2s=
+ SW4tbGluayBpbXBvcnQ=
+ SW5zdGFsbA==
+ SXRlbSBMaXN0
+ SXRlbXM=
+ TGFiZWw=
+ TGFiZWxz
+ TGluayBWYWxpZGF0aW9u
+ TWFpbCBMaXN0
+ TWVzc2FnZQ==
+ TWlzc2luZyBMYWJlbHM=
+ TW9kdWxlcw==
+ TW9kdWxlcyBNYW5hZ2VtZW50
+ TW9kdWxlcyAmIFNldHRpbmdz
+ T3ZlcnZpZXc=
+ UGFja2FnZSBDb250ZW50
+ UGVybWlzc2lvbnM=
+ cGhwQkIgSW1wb3J0
+ UHJvcGVydGllcw==
+ UXVlcnkgRGF0YWJhc2U=
+ UmVnaW9uYWw=
+ UmVsYXRlZCBTZWFyY2hlcw==
+ UmVsYXRpb25z
+ U3VtbWFyeSAmIExvZ3M=
+ UmVzdG9yZQ==
+ UmV2aWV3
+ UmV2aWV3cw==
+ UnVsZSBQcm9wZXJ0aWVz
+ U2VhcmNo
+ U2VhcmNoIExvZw==
+ U2VhcmNoIEdyb3Vwcw==
+ U2VhcmNoIFVzZXJz
+ U2VuZCBlLW1haWw=
+ U2VydmVyIEluZm9ybWF0aW9u
+ U2VydmljZQ==
+ U2Vzc2lvbiBMb2c=
+ R2VuZXJhbCBTZXR0aW5ncw==
+ U3RydWN0dXJlICYgRGF0YQ==
+ U3RhdGlzdGljcw==
+ U3R5bGVzaGVldHM=
+ U3VtbWFyeQ==
+ Q29uZmlndXJhdGlvbg==
+ VGFnIGxpYnJhcnk=
+ VGVtcGxhdGU=
+ VGVtcGxhdGVz
+ VGhlbWVz
+ VG9vbHM=
+ VXBkYXRlIExpY2Vuc2U=
+ QmFuIHVzZXI=
+ VXNlciBCYW4gTGlzdA==
+ VXNlcnM=
+ VXNlciBTZWxlY3Q=
+ R3JvdXBz
+ VXNlcnM=
+ VmlzaXRz
+ VGFnIExpYnJhcnk=
+ VGFnIExpYnJhcnk=
+ dGVyYWJ5dGUocyk=
+ dGV4dA==
+ SW52YWxpZCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQ=
+ QWN0aXZl
+ QWRkaW5n
+ QWRkcmVzcw==
+ TG9naW4gbm90IGFsbG93ZWQgZnJvbSB0aGlzIGFkZHJlc3M=
+ QWRtaW4=
+ QWRtaW5pc3RyYXRvciBSZWNlaXZlIE5vdGljZXMgV2hlbg==
+ QWR2YW5jZWQ=
+ QWxs
+ QWxsb3c=
+ QW55
+ QXJjaGl2ZWQ=
+ QXJ0aWNsZQ==
+ QXJ0aWNsZXM=
+ YXM=
+ QXV0by1SZWZyZXNo
+ QmFja2luZyB1cA==
+ QmFjayB1cCBoYXMgYmVlbiBjb21wbGV0ZWQuIFRoZSBiYWNrdXAgZmlsZSBpczo=
+ QmFja3VwIFBhdGg=
+ SW4tUG9ydGFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHdyaXRlIHRvIHRoaXMgZGlyZWN0b3J5
+ VGhpcyB1dGlsaXR5IGFsbG93cyB5b3UgdG8gYmFja3VwIHlvdXIgY3VycmVudCBkYXRhIGZyb20gSW4tUG9ydGFsIGRhdGFiYXNlLg==
+ QmFja3VwIGluIHByb2dyZXNz
+ QmFu
+ VXNlciBCYW4gUnVsZXM=
+ QmFuIFVzZXIgSW5mb3JtYXRpb24=
+ QmxhbmsgdXNlcm5hbWUgb3IgcGFzc3dvcmQ=
+ Qm90aA==
+ QnVpbHQgSW4=
+ Ynl0ZXM=
+ Q2F0YWxvZw==
+ Q2F0ZWdvcmllcw==
+ Q2F0ZWdvcnk=
+ Q2Vuc29yc2hpcA==
+ Q2l0eQ==
+ WW91IGFyZSBhYm91dCB0byBjbGVhciBjbGlwYm9hcmQgY29udGVudCENClByZXNzIE9LIHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byByZXR1cm4gdG8gcHJldmlvdXMgc2NyZWVuLg==
+ U2VjdGlvbiBDb21pbmcgU29vbg==
+ Q29tcGxldGU=
+ Q29uZmlndXJhdGlvbg==
+ Q29udGFpbnM=
+ Q291bnRlcnM=
+ Q1NWIEV4cG9ydA==
+ Q3VycmVudA==
+ Q3VzdG9t
+ Q3VzdG9tIEZpZWxk
+ Q3VzdG9tIEZpZWxkcw==
+ RGF0YWJhc2UgU2V0dGluZ3MgLSBJbnRlY2huaWMgSW4tTGluayAyLng=
+ Y2F0ZWdvcmllcw==
+ RGF0YSBUeXBlIDI=
+ cG9zdA==
+ bGlua3M=
+ dXNlcnM=
+ RGF0ZS9UaW1lIFNldHRpbmdz
+ RGF5
+ UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gIFBsZWFzZSBiZSBhZHZpc2VkIHRoYXQgeW91IGNhbiB1c2UgdGhpcyB1dGlsaXR5IGF0IHlvdXIgb3duIHJpc2suICBJbnRlY2huaWMgQ29ycG9yYXRpb24gY2FuIG5vdCBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGNvcnJ1cHQgZGF0YSBvciBkYXRhIGxvc3Mu
+ RGVmYXVsdA==
+ RGVsZXRl
+ RGVuaWVk
+ RGVueQ==
+ RGlzYWJsZQ==
+ RGlzYWJsZWQ=
+ UnVubmluZyB0aGlzIHV0aWxpdHkgd2lsbCBhZmZlY3QgeW91ciBkYXRhYmFzZS4gUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHV0aWxpdHkgYXQgeW91ciBvd24gcmlzay4gSW50ZWNobmljIENvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLg==
+ UGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5pbmcgdGhpcyB1dGlsaXR5Lg==
+ RWRpdA==
+ RWRpdGluZw==
+ RWRpdG9y
+ RW1haWw=
+ RW1vdGlvbiBJY29ucw==
+ RW5hYmxl
+ RW5hYmxlZA==
+ RXZlbnRz
+ RXhhbXBsZQ==
+ RXhpc3Rz
+ RXhwaXJlZA==
+ RXhwb3J0
+ RmllbGRz
+ RmlsdGVy
+ Rmlyc3QgTmFtZQ==
+ Zm9y
+ RnJvbnQ=
+ RnJvbnQgRW5k
+ RnJvbnQtZW5kIE9ubHk=
+ RnVsbA==
+ RnVsbCBTaXplIEltYWdl
+ R2VuZXJhbA==
+ R3JlYXRlciBUaGFu
+ R3JvdXA=
+ R3JvdXBz
+ R3JvdXAgTmFtZQ==
+ R3Vlc3Q=
+ R3Vlc3QgVXNlcnM=
+ SG90
+ SG91cg==
+ SSBhZ3JlZSB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnM=
+ SW1hZ2U=
+ SW1hZ2Vz
+ SW5hY3RpdmU=
+ SW4gRGV2ZWxvcG1lbnQ=
+ SW5zdGFsbA==
+ SW5zdGFsbGVk
+ SW52YWxpZA==
+ SW52ZXJ0
+ SVAgQWRkcmVzcw==
+ SXM=
+ SXMgTm90
+ SXRlbXM=
+ S2V5d29yZA==
+ TGFiZWw=
+ TGFuZ3VhZ2UgSW1wb3J0
+ TGFuZ3VhZ2U=
+ TGFzdCBOYW1l
+ TGVhZGluZw==
+ TGVzcyBUaGFu
+ TGljZW5zZQ==
+ TGluaw==
+ TGlua3M=
+ VmFsaWRhdGluZyBMaW5rcw==
+ TG9jYWw=
+ TG9ja2Vk
+ VXNlcm5hbWU=
+ RW1haWwgRXZlbnQ=
+ RGVmYXVsdCBNRVRBIGtleXdvcmRz
+ TWluaW11bSBrZXl3b3JkIGxlbmd0aA==
+ TWludXRl
+ TWluaW11bSBwYXNzd29yZCBsZW5ndGg=
+ TWluaW11bSB1c2VyIG5hbWUgbGVuZ3Ro
+ QmxhbmsgcGFzc3dvcmRzIGFyZSBub3QgYWxsb3dlZA==
+ QmxhbmsgdXNlciBuYW1l
+ TW9kdWxlcw==
+ TW9udGhz
+ U2hvdyBtdWx0aXBsZQ==
+ TmV3
+ TmV3IENlbnNvciBXb3Jk
+ TmV3IEZpZWxk
+ TmV3IFRoZW1l
+ Tm8gQ2F0ZWdvcmllcw==
+ Tm9uZQ==
+ Tm8gcGVybWlzc2lvbnM=
+ RG9lcyBOb3QgQ29udGFpbg==
+ Tm90IFZhbGlkYXRlZA==
+ Tm8gcGVybWlzc2lvbnM=
+ T25lIFdheQ==
+ UGFjaw==
+ UGVuZGluZw==
+ UGVybWlzc2lvbg==
+ UGhvbmU=
+ UG9wdWxhcg==
+ UG9wdWxhcml0eQ==
+ UG9zdCBCb2R5
+ UG9zdHM=
+ UHJlcmVxdWlzaXRlIG5vdCBmdWxmaWxsZWQsIGluc3RhbGxhdGlvbiBjYW5ub3QgY29udGludWUh
+ UHJpbWFyeQ==
+ UXVpY2sgbGlua3M=
+ UmVhZCBPbmx5
+ UmVhZHkgdG8gSW5zdGFsbA==
+ UmVjaXByb2NhbA==
+ UmVsYXRpb24=
+ UmVsYXRpb25z
+ UmVwbGllcw==
+ VGhlIHZlcnNpb25zIG9mIHRoZSBiYWNrdXAgYW5kIHlvdXIgY29kZSBkb24ndCBtYXRjaC4gWW91ciBpbnN0YWxsYXRpb24gd2lsbCBwcm9iYWJseSBiZSBub24gb3BlcmF0aW9uYWwu
+ SGVyZSB5b3UgY2FuIHJlc3RvcmUgeW91ciBkYXRhYmFzZSBmcm9tIGEgcHJldmlvdXNseSBiYWNrZWQgdXAgc25hcHNob3QuIFJlc3RvcmluZyB5b3VyIGRhdGFiYXNlIHdpbGwgZGVsZXRlIGFsbCBvZiB5b3VyIGN1cnJlbnQgZGF0YSBhbmQgbG9nIHlvdSBvdXQgb2YgdGhlIHN5c3RlbS4=
+ UmVzdG9yZSBpcyBpbiBwcm9ncmVzcw==
+ IFJ1bm5pbmcgdGhpcyB1dGlsaXR5IHdpbGwgYWZmZWN0IHlvdXIgZGF0YWJhc2UuICBQbGVhc2UgYmUgYWR2aXNlZCB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgdXRpbGl0eSBhdCB5b3VyIG93biByaXNrLiAgSW50ZWNobmljIGNvcnBvcmF0aW9uIGNhbiBub3QgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBjb3JydXB0IGRhdGEgb3IgZGF0YSBsb3NzLiAgUGxlYXNlIG1ha2Ugc3VyZSB0byBiYWNrIHVwIHlvdXIgZGF0YWJhc2UocykgYmVmb3JlIHJ1bm5p
+ UmVzdHJpY3Rpb25z
+ UmVzdWx0cw==
+ UmV2aWV3
+ UmV2aWV3cw==
+ Um9vdA==
+ TW9kdWxlIFJvb3QgQ2F0ZWdvcnk=
+ cm93KHMp
+ UnVsZQ==
+ U2FtZQ==
+ U2FtZSBhcyB0aHVtYm5haWw=
+ U2F2ZQ==
+ U2Nhbm5pbmc=
+ U2VhcmNoIFJlc3VsdHM=
+ U2Vjb25kcw==
+ U2VsZWN0
+ U2VuZA==
+ U2Vzc2lvbnM=
+ U2Vzc2lvbiBFeHBpcmVk
+ U2V0dGluZ3M=
+ U2hvd2luZyBHcm91cHM=
+ U2hvd2luZyBVc2Vycw==
+ U2ltcGxl
+ U2l6ZQ==
+ U21pbGV5
+ U01UUCAobWFpbCkgU2VydmVy
+ U29ydA==
+ U3RhdGU=
+ U3RlcA==
+ U3ViQ2F0cw==
+ U3ViSXRlbXM=
+ VGFibGU=
+ VGVtcGxhdGU=
+ VGVtcGxhdGVz
+ VGhlbWU=
+ VGh1bWJuYWls
+ VGh1bWJuYWlsIEltYWdl
+ dG8=
+ VG9waWM=
+ VG9waWNz
+ VHlwZQ==
+ dHlwZXM=
+ SXMgVW5pcXVl
+ VW5zZWxlY3Q=
+ VXBkYXRlIExpY2Vuc2U=
+ WW91ciBkYXRhIHdpbGwgYmUgbW9kaWZpZWQgZHVyaW5nIHRoZSB1cGdyYWRlLiBXZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3UgbWFrZSBhIGJhY2t1cCBvZiB5b3VyIGRhdGFiYXNlLiBQcm9jZWVkIHdpdGggdGhlIHVwZ3JhZGU/
+ VXBsb2Fk
+ VXNlcg==
+ VXNlciBSZWNlaXZlcyBOb3RpY2VzIFdoZW4=
+ VXNlcnM=
+ VXNlciBDb3VudA==
+ VmFsaWQ=
+ VmVyc2lvbg==
+ Vmlldw==
+ Vmlld3M=
+ V2Vic2l0ZQ==
+ V2Vla3M=
+ V2l0aGlu
+ WWVhcnM=
+ Wmlw
+ QWRkaW5nIEN1c3RvbSBGaWVsZA==
+ QWRkaW5nIEZpbGU=
+ QWRkaW5nIEJhc2UgU3R5bGU=
+ QWRkaW5nIEJsb2NrIFN0eWxl
+ QWRkaW5nIENhdGVnb3J5
+ QWRkaW5nIEdyb3Vw
+ QWRkaW5nIEltYWdl
+ QWRkaW5nIExhbmd1YWdl
+ QWRkaW5nIFBocmFzZQ==
+ QWRkaW5nIEtleXdvcmQ=
+ QWRkaW5nIFJlbGF0aW9uc2hpcA==
+ QWRkaW5nIFJldmlldw==
+ QWRkaW5nIFN0eWxlc2hlZXQ=
+ QWRkaW5nIFVzZXI=
+ QWRkaXRpb25hbCBQZXJtaXNzaW9ucw==
+ QWRkIE1vZHVsZQ==
+ QWR2YW5jZWQgVmlldw==
+ QmFja3Vw
+ QmFzZSBTdHlsZXM=
+ QmxvY2sgU3R5bGVz
+ Q2F0YWxvZw==
+ Q2F0ZWdvcmllcw==
+ U2VsZWN0IHJlbGF0aW9u
+ U2VsZWN0IGNhdGVnb3J5
+ Q2Vuc29yc2hpcA==
+ Q29sdW1uIFBpY2tlcg==
+ Q29tbXVuaXR5
+ Q29uZmlndXJhdGlvbg==
+ Q29udGFjdCBJbmZvcm1hdGlvbg==
+ Q291cG9uIFNlbGVjdG9y
+ Q3VzdG9t
+ Q3VzdG9tIEZpZWxkcw==
+ RG9uZQ==
+ RWRpdGluZyBFbWFpbCBFdmVudA==
+ RWRpdGluZyBGaWxl
+ RWRpdGluZyBHcm91cA==
+ RWRpdGluZyBTdHlsZQ==
+ RWRpdGluZyBUcmFuc2xhdGlvbg==
+ RWRpdGluZyBCYXNlIFN0eWxl
+ RWRpdGluZyBCbG9jayBTdHlsZQ==
+ RWRpdGluZyBDYXRlZ29yeQ==
+ RWRpdGluZyBDdXN0b20gRmllbGQ=
+ RWRpdGluZyBHcm91cA==
+ RWRpdGluZyBJbWFnZQ==
+ RWRpdGluZyBMYW5ndWFnZQ==
+ RWRpdGluZyBQaHJhc2U=
+ RWRpdGluZyBLZXl3b3Jk
+ S2V5d29yZA==
+ RWRpdGluZyBSZWxhdGlvbnNoaXA=
+ RWRpdGluZyBSZXZpZXc=
+ RWRpdGluZyBTdHlsZXNoZWV0
+ RWRpdCBVc2Vy
+ U2l0ZSBTdHJ1Y3R1cmU=
+ RWRpdCBDYXRlZ29yeQ==
+ RWRpdCBHcm91cA==
+ U2l0ZSBTdHJ1Y3R1cmU=
+ U2l0ZSBTdHJ1Y3R1cmU=
+ RWRpdCBVc2Vy
+ RS1tYWlsIEV2ZW50cw==
+ RS1tYWlsIFNldHRpbmdz
+ RXhwb3J0IERhdGE=
+ RXhwb3J0IExhbmd1YWdlIFBhY2s=
+ RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBSZXN1bHRz
+ RXhwb3J0IExhbmd1YWdlIFBhY2sgLSBTdGVwMQ==
+ RmlsZXM=
+ R2VuZXJhbA==
+ R2VuZXJhbCBDb25maWd1cmF0aW9u
+ R3JvdXBz
+ U2VsZWN0IGdyb3Vw
+ SGVscA==
+ SW1hZ2Vz
+ SW1wb3J0IERhdGE=
+ SW1wb3J0IExhbmd1YWdlIFBhY2s=
+ SW4tYnVsbGV0aW4=
+ SW4tbGluaw==
+ SW4tbmV3eg==
+ SW5zdGFsbGF0aW9uIEhlbHA=
+ SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAx
+ SW5zdGFsbCBMYW5ndWFnZSBQYWNrIC0gU3RlcCAy
+ SXRlbXM=
+ TGFiZWw=
+ TGFiZWxz
+ SW5zdGFsbCBMYW5ndWFnZSBQYWNr
+ TGFuZ3VhZ2UgUGFja3M=
+ TG9hZGluZyAuLi4=
+ TW9kdWxlIFN0YXR1cw==
+ TmV3IEN1c3RvbSBGaWVsZA==
+ TmV3IEZpbGU=
+ TmV3IEJhc2UgU3R5bGU=
+ TmV3IEJsb2NrIFN0eWxl
+ TmV3IENhdGVnb3J5
+ TmV3IEdyb3Vw
+ TmV3IEltYWdl
+ TmV3IExhbmd1YWdl
+ TmV3IFBocmFzZQ==
+ TmV3IFJlbGF0aW9uc2hpcA==
+ TmV3IFJldmlldw==
+ TmV3IFN0eWxlc2hlZXQ=
+ Tm8gUGVybWlzc2lvbnM=
+ UGVybWlzc2lvbnM=
+ UGxlYXNlIFdhaXQ=
+ UHJvcGVydGllcw==
+ UmVnaW9uYWw=
+ UmVnaW9uYWwgU2V0dGluZ3M=
+ UmVsYXRlZCBTZWFyY2hlcw==
+ UmVsYXRpb25z
+ U3VtbWFyeSAmIExvZ3M=
+ UmVzdG9yZQ==
+ UmV2aWV3cw==
+ U2VhcmNoIExvZw==
+ U2VhcmNoIFJlc3VsdHM=
+ U2VsZWN0IFVzZXI=
+ U2VsZWN0IGl0ZW0=
+ U2VsZWN0IGl0ZW0=
+ U2VuZCBFLW1haWw=
+ U2VuZGluZyBQcmVwYXJlZCBFLW1haWxz
+ UHJlcGFyaW5nIHRvIFNlbmQgTWFpbA==
+ U2VuZCBlbWFpbA==
+ Q2FuY2VsIHNlbmRpbmcgbWFpbA==
+ TWFpbCBoYXMgYmVlbiBzZW50IFN1Y2Nlc3NmdWxseQ==
+ UHJlcGFyaW5nIHRvIFNlbmQgTWVzc2FnZXM=
+ U2VuZGluZyBNZXNzYWdlLi4=
+ U2Vzc2lvbiBMb2c=
+ TW9kdWxlcyAmIFNldHRpbmdz
+ U3RydWN0dXJlICYgRGF0YQ==
+ U3R5bGVzaGVldHM=
+ U3VtbWFyeQ==
+ Q29uZmlndXJhdGlvbg==
+ VG9vbHM=
+ VXBkYXRpbmcgQ2F0ZWdvcmllcw==
+ VXNlcnM=
+ U2VsZWN0IHVzZXI=
+ VmlzaXRz
+ dG8=
+ Q3Vyci4gQ2F0ZWdvcnk=
+ RG93bg==
+ VXA=
+ QWRk
+ QWRkIFVzZXIgdG8gR3JvdXA=
+ QWRkIFVzZXIgVG8gR3JvdXA=
+ QWRkIENhdGVnb3J5
+ QWRkIFByb2R1Y3Q=
+ QXBwbHkgUnVsZXM=
+ QXBwcm92ZQ==
+ QmFjaw==
+ QmFu
+ Q2FuY2Vs
+ Q2xlYXIgQ2xpcGJvYXJk
+ Q2xvbmU=
+ Q2xvc2U=
+ Q29udGludWUgTGluayBWYWxpZGF0aW9u
+ Q29weQ==
+ Q3V0
+ RGVjbGluZQ==
+ RGVsZXRl
+ RGVsZXRlIEFsbA==
+ RGVsZXRlIFVzZXIgRnJvbSBHcm91cA==
+ RGVueQ==
+ RGlzYWJsZQ==
+ RWRpdA==
+ RWRpdCBDdXJyZW50IENhdGVnb3J5
+ RGlzYWJsZQ==
+ RW5hYmxl
+ RnJvbnQgT25seQ==
+ U2VsZWN0IFVzZXI=
+ RW5hYmxl
+ RXhwb3J0
+ RXhwb3J0IExhbmd1YWdl
+ SG9tZQ==
+ SW1wb3J0
+ SW1wb3J0IExhbmd1YWdl
+ SW1wb3J0IGEgTGFnbnVhZ2UgUGFja2FnZQ==
+ TW92ZSBEb3du
+ TW92ZSBVcA==
+ TW92ZSBEb3du
+ TW92ZSBVcA==
+ TmV3IEJhc2UgU3R5bGU=
+ TmV3IEJsb2NrIFN0eWxl
+ TmV3IEdyb3Vw
+ TmV3IGxhYmVs
+ TmV3IExhbmd1YWdl
+ TmV3IFJldmlldw==
+ TmV3IFNlYXJjaCBGaWVsZA==
+ TmV3IFN0eWxlc2hlZXQ=
+ TmV3IFRoZW1l
+ TmV3IFVzZXI=
+ U3RhcnQgTmV3IFZhbGlkYXRpb24=
+ TmV3IENhdGVnb3J5
+ TmV3IENlbnNvciBXb3Jk
+ TmV3IENvdXBvbg==
+ TmV3IEN1c3RvbSBGaWVsZA==
+ TmV3IERpc2NvdW50
+ TmV3IEVtb3Rpb24gSWNvbg==
+ TmV3IEltYWdl
+ TmV3IEltYWdlcw==
+ QWRkIEtleXdvcmQ=
+ QWRkIG5ldyBsYWJlbA==
+ TmV3IExhbmd1YWdlIFBhY2s=
+ TmV3IFBlcm1pc3Npb24=
+ TmV3IFJlbGF0aW9u
+ TmV3IFJldmlldw==
+ TmV3IFJ1bGU=
+ TmV3IFRlbXBsYXRl
+ TmV3IFRoZW1l
+ TmV3IFVzZXI=
+ TmV4dA==
+ TmV4dCBzdGVw
+ UGFzdGU=
+ UHJldmlvdXM=
+ UHJldmlldw==
+ UHJldmlvdXM=
+ UHJldmlvdXMgc3RlcA==
+ U2V0IFByaW1hcnkgVGhlbWU=
+ U2V0IFByaW1hcnkgR3JvdXA=
+ UHJpbnQ=
+ UmVidWlsZCBDYXRlZ29yeSBDYWNoZQ==
+ UmVmcmVzaA==
+ RGVsZXRlIFVzZXIgRnJvbSBHcm91cA==
+ UmVzY2FuIFRoZW1lcw==
+ UmVzZXQ=
+ UmVzZXQgVG8gQmFzZQ==
+ UmVzZXQgVmFsaWRhdGlvbiBTdGF0dXM=
+ UmVzdG9yZQ==
+ U2F2ZQ==
+ U2VhcmNo
+ UmVzZXQ=
+ U2VsZWN0
+ U2VsZWN0IFVzZXI=
+ U2VuZCBFLW1haWw=
+ U2VuZCBFLW1haWw=
+ U2V0IFByaW1hcnk=
+ U2V0IFByaW1hcnkgQ2F0ZWdvcnk=
+ U2V0IFByaW1hcnkgTGFuZ3VhZ2U=
+ Q2FuY2Vs
+ VXAgYSBDYXRlZ29yeQ==
+ VmFsaWRhdGU=
+ Vmlldw==
+ RGlzcGxheSBlZGl0b3IgcGlja3MgYWJvdmUgcmVndWxhciB0b3BpY3M=
+ TmV3IFRvcGljcyAoRGF5cyk=
+ TnVtYmVyIG9mIHRvcGljcyBwZXIgcGFnZQ==
+ VG9waWNzIFBlciBQYWdlIChTaG9ydGxpc3Qp
+ UGljaw==
+ VG9waWMgcmV2aWV3ZWQ=
+ QW5kIHRoZW4gYnk=
+ QW5kIHRoZW4gYnk=
+ YW5kIHRoZW4gYnk=
+ T3JkZXIgVG9waWNzIEJ5
+ U29ydCB0b3BpY3MgYnk=
+ QW5kIHRoZW4gYnk=
+ T3JkZXIgdG9waWNzIGJ5
+ VG9waWMgVGV4dA==
+ Vmlld3M=
+ VG8gRGF0ZQ==
+ VHJhbnNsYXRl
+ Q2hlY2tib3hlcw==
+ RGF0ZQ==
+ RGF0ZSAmIFRpbWU=
+ TGFiZWw=
+ TXVsdGlwbGUgU2VsZWN0
+ UGFzc3dvcmQgZmllbGQ=
+ UmFkaW8gYnV0dG9ucw==
+ RHJvcCBkb3duIGZpZWxk
+ Q2hlY2tib3g=
+ VGV4dCBmaWVsZA==
+ VGV4dCBhcmVh
+ VW5jaGFuZ2Vk
+ VW5kZWZpbmVk
+ VW5pY29kZQ==
+ VXBkYXRpbmcgQ29uZmlndXJhdGlvbg==
+ VXBkYXRpbmcgUnVsZXM=
+ VXNlIENyb24gZm9yIFJ1bm5pbmcgUmVndWxhciBFdmVudHM=
+ QWxsb3cgbmV3IHVzZXIgcmVnaXN0cmF0aW9u
+ QXNzaWduIEFsbCBVc2VycyBUbyBHcm91cA==
+ VmFsaWRhdGUgZS1tYWlsIGFkZHJlc3M=
+ QXNzaWduIHVzZXJzIG5vdCBsb2dnZWQgaW4gdG8gZ3JvdXA=
+ QXNzaWduIHJlZ2lzdGVyZWQgdXNlcnMgdG8gZ3JvdXA=
+ QXNzaWduIHBhc3N3b3JkIGF1dG9tYXRpY2FsbHk=
+ TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSByZXZpZXdzIGZyb20gdGhlIHNhbWUgdXNlcg==
+ QXNzaWduIG1haWxpbmcgbGlzdCBzdWJzY3JpYmVycyB0byBncm91cA==
+ TnVtYmVyIG9mIGRheXMgdG8gZGVueSBtdWx0aXBsZSB2b3RlcyBmcm9tIHRoZSBzYW1lIHVzZXI=
+ SW5zdGFudA==
+ Tm90IEFsbG93ZWQ=
+ VXBvbiBBcHByb3ZhbA==
+ VXNlIFRvb2xiYXIgTGFiZWxz
+ VXNlIEVtYWlscyBBcyBMb2dpbg==
+ VVMvVUs=
+ UGxlYXNlIGNoZWNrIHRoZSByZXF1aXJlZCBmaWVsZHMgYW5kIHRyeSBhZ2FpbiE=
+ VmFsdWU=
+ RW50ZXIgbGlzdCBvZiB2YWx1ZXMgYW5kIHRoZWlyIGRlc2NyaXB0aW9ucywgbGlrZSAxPU9uZSwgMj1Ud28=
+ QWN0aXZl
+ QWx3YXlz
+ QXV0bw==
+ RGlzYWJsZWQ=
+ RW5hYmxlZA==
+ TmV2ZXI=
+ SW52YWxpZCBQYXNzd29yZA==
+ UGVuZGluZw==
+ UmVxdWlyZWQgRmllbGQ=
+ SW52YWxpZCBVc2VybmFtZQ==
+ RGlyZWN0IGFjY2VzcyBvciBib29rbWFyaw==
+ Vm90ZSBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5
+ V2FybmluZzogRW5hYmxpbmcgSFRNTCBpcyBhIHNlY3VyaXR5IHJpc2sgYW5kIGNvdWxkIGRhbWFnZSB0aGUgc3lzdGVtIGlmIHVzZWQgaW1wcm9wZXJseSE=
+ QSBzZWFyY2ggb3IgYSBmaWx0ZXIgaXMgaW4gZWZmZWN0LiBZb3UgbWF5IG5vdCBiZSBzZWVpbmcgYWxsIG9mIHRoZSBkYXRhLg==
+ WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHByaW1hcnkgdGhlbWUuIENvbnRpbnVlPw==
+ TW9kaWZpY2F0aW9ucyB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCB5b3UgY2xpY2sgdGhlIFNhdmUgYnV0dG9uIQ==
+ d2Vlaw==
+ V2luZG93cyAocm4p
+ eWVhcg==
+ WWVz
+ WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u
+ QWNjb3VudCBJbmZvcm1hdGlvbg==
+ QWN0aW9u
+ QWN0aW9uIEJveA==
+ SGVyZSBZb3UgQ2FuOg==
+ QWRk
+ U3VnZ2VzdCBDYXRlZ29yeSBSZXN1bHRz
+ Q2F0ZWdvcnkgQWRkZWQgUGVuZGluZyBBcHByb3ZhbA==
+ WW91ciBjYXRlZ29yeSBzdWdnZXN0aW9uIGhhcyBiZWVuIGFjY2VwdGVkIGFuZCBpcyBwZW5kaW5nIGFkbWluaXN0cmF0aXZlIGFwcHJvdmFsLg==
+ VGhlIENhdGVnb3J5IHlvdSBzdWdnZXN0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbS4=
+ QWRkZWQ=
+ QWRkZWQgdG9kYXk=
+ QWRkZWQgVG9kYXk=
+ QWRkaXRpb25hbCBjYXRlZ29yaWVz
+ QWRkIExpbmsgUmVzdWx0cw==
+ QWRkIFBlbmRpbmcgTGluayBSZXN1bHRz
+ WW91ciBsaW5rIGhhcyBiZWVuIGFkZGVkIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWwu
+ VGhlIGxpbmsgeW91IGhhdmUgc3VnZ2VzdGVkIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4=
+ QWRkcmVzcw==
+ QWRkcmVzcyBMaW5l
+ QWRkcmVzcyBMaW5lIDE=
+ QWRkcmVzcyBMaW5lIDI=
+ QWRkIEZyaWVuZA==
+ QWRkIExpbms=
+ U2VuZCBQcml2YXRlIE1lc3NhZ2U=
+ QWRkIFJldmlldw==
+ QWRkIFRvcGlj
+ QWRkIHRvIEZhdm9yaXRlcw==
+ QWR2YW5jZWQgU2VhcmNo
+ QWR2YW5jZWQgU2VhcmNo
+ QWR2YW5jZWQ=
+ QW55
+ Q29udGFpbnM=
+ SXMgRXF1YWwgVG8=
+ SXMgTm90IEVxdWFsIFRv
+ RG9lcyBOb3QgQ29udGFpbg==
+ QWxsIFByb2R1Y3Rz
+ QWxsIHJpZ2h0cyByZXNlcnZlZC4=
+ RW50aXJlIFdlYnNpdGU=
+ IGhhcyBhbHJlYWR5IGJlZW4gc3VnZ2VzdGVkIHRvIHRoaXMgc2l0ZSBvbg==
+ QW5k
+ QU9MIElN
+ QXBy
+ VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZvcm0sIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbWVzc2FnZXMgYmVsb3cu
+ VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZvcm0sIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbWVzc2FnZXMgYmVsb3c=
+ QXJ0aWNsZXM=
+ QXJ0aWNsZSBEZXRhaWxz
+ QXJ0aWNsZSBuYW1l
+ QXJ0aWNsZSBSZXZpZXdz
+ QXNjZW5kaW5n
+ QXVn
+ QXV0aG9y
+ QXV0b21hdGlj
+ RGlzYWJsZWQgYXZhdGFy
+ QmFjaw==
+ QkJDb2Rl
+ QmlydGggRGF0ZQ==
+ QmxhbmsgcGFzc3dvcmQ=
+ Ym94
+ QnJvd3NlIEJ5IENhdGVnb3JpZXM=
+ QWRkIFJldmlldw==
+ QWRkIFRvIEZhdm9yaXRlcw==
+ QWRkIFRvIFdpc2ggTGlzdA==
+ QWR2YW5jZWQgc2VhcmNo
+ Q2FuY2Vs
+ Q2xlYXI=
+ Q2xvc2UgV2luZG93
+ Q29udGFjdA==
+ Q3JlYXRl
+ RGVsZXRl
+ RGVsZXRlIEZpbGU=
+ RGVsZXRlIEltYWdl
+ RGV0YWlscw==
+ RmluZCBpdA==
+ R28=
+ TW9kaWZ5
+ TW9yZSBJbWFnZXM=
+ TmV3IExpbms=
+ TmV3IHRvcGlj
+ Tm8=
+ T0s=
+ UmVjb21tZW5k
+ UmVnaXN0ZXI=
+ UmVtb3ZlIEZyb20gRmF2b3JpdGVz
+ UmVzZXQ=
+ U2VsZWN0
+ UmVjb3ZlciBQYXNzd29yZA==
+ U2V0
+ U29ydA==
+ U3Vic2NyaWJl
+ VW5zdWJzY3JpYmU=
+ VXBkYXRl
+ WWVz
+ U2VuZCBQYXNzd29yZA==
+ R28=
+ Sm9pbg==
+ U3Vic2NyaWJl
+ Tm8=
+ T2s=
+ UmF0ZQ==
+ U2VhcmNo
+ VW5zdWJzY3JpYmU=
+ WWVz
+ Ynk=
+ Q2FuY2Vs
+ U2VjdXJpdHkgY29kZQ==
+ U2VjdXJpdHkgY29kZSBlbnRlcmVkIGluY29ycmVjdGx5
+ RW50ZXIgU2VjdXJpdHkgQ29kZQ==
+ Q2F0ZWdvcnk=
+ Q2F0ZWdvcmllcw==
+ TGFzdCB1cGRhdGVkIG9u
+ Y2F0ZWdvcmllcyB1cGRhdGVk
+ Q2F0ZWdvcnk=
+ Q2F0ZWdvcnkgSW5mb3JtYXRpb24=
+ Q2F0ZWdvcnkgU2VhcmNoIFJlc3VsdHM=
+ Q2F0ZWdvcnkgTGVhZCBTdG9yeQ==
+ Q2F0ZWdvcmllcw==
+ Q2hlY2tvdXQ=
+ Q2l0eQ==
+ Y2xpY2sgaGVyZQ==
+ Q2xvc2U=
+ Q2xvc2UgV2luZG93
+ UGFzc3dvcmQgcmVzZXQgaGFzIGNvZGUgZXhwaXJlZA==
+ UGFzc3dvcmQgcmVzZXQgY29kZSBpcyBub3QgdmFsaWQ=
+ QWNjb3VudCBJbmZvcm1hdGlvbg==
+ Q3VycmVudCBWYWx1ZQ==
+ RGF0ZQ==
+ RGlzcGxheSB0byBQdWJsaWM=
+ RW1haWw=
+ TGFzdCBVcGRhdGU=
+ T25saW5l
+ TG9naW4=
+ TWVtYmVyIHNpbmNl
+ TWVzc2FnZQ==
+ TmFtZQ==
+ UHJpY2U=
+ Vmlld3M=
+ UHJpY2VzIG9mIG9uZSBvciBtb3JlIGl0ZW1zIGluIHlvdXIgc2hvcHBpbmcgY2FydCBoYXZlIGJlZW4gY2hhbmdlZCBkdWUgdG8geW91ciBsb2dpbiwgcGxlYXNlIHJldmlldyBjaGFuZ2VzLg==
+ RW1haWxBZGRyZXNz
+ R28=
+ Tm8gUGVybWlzc2lvbnM=
+ UGFnZQ==
+ UHJvZHVjdCBEZXNjcmlwdGlvbg==
+ Q29tcGFueQ==
+ Y29uZmlybQ==
+ Q29uZmlybWF0aW9uIFRpdGxl
+ WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGxpbmsgYmVsb3cu
+ Q29uZmlybWF0aW9uIFN1YnRpdGxl
+ Q29uZmlybWF0aW9uIHRleHQ=
+ Q29udGFjdCBVcw==
+ Q29udGFjdCBJbmZvcm1hdGlvbg==
+ Q29udGludWU=
+ Q29va2llcw==
+ UGxlYXNlIGVuYWJsZSBjb29raWVzIHRvIGxvZ2luIQ==
+ Q291bnRyeQ==
+ Y3JlYXRlZA==
+ Q3JlYXRlIFBhc3N3b3Jk
+ Q3JlZGl0IENhcmRz
+ WW91ciBUaGVtZQ==
+ Q3VycmVudCBWYWx1ZQ==
+ RGF0ZQ==
+ RGF0ZSBjcmVhdGVk
+ RGVj
+ RW5hYmxlIEJCQ29kZQ==
+ Tm90aWZ5IG1lIG9uIGNoYW5nZXMgdG8gdG9waWNzIEkgY3JlYXRl
+ UmVjZWl2ZSBQcml2YXRlIE1lc3NhZ2UgTm90aWZpY2F0aW9ucw==
+ QXR0YXRjaCBNeSBTaWduYXR1cmUgdG8gUG9zdHM=
+ U2ltbGllcyBvbiBieSBkZWZhdWx0
+ U2lnbmF0dXJlcyBvbiBieSBkZWZhdWx0
+ RGVsZXRl
+ Q29uZmlybSBEZWxldGU=
+ RGVsZXRlIEZyaWVuZA==
+ QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxpbms/
+ VGhlIGxpbmsgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkIGZyb20gIEZhdm9yaXRlcy4=
+ RGVzY2VuZGluZw==
+ RGVzY3JpcHRpb24gQSB0byBa
+ RGVzY3JpcHRpb24gWiB0byBB
+ WW91ciBGYXZvcml0ZSBJdGVtcw==
+ RWRpdCB5b3VyIFByZWZlcmVuY2Vz
+ WW91ciBQcm9maWxlIEluZm9ybWF0aW9u
+ WW91ciBQcml2YXRlIE1lc3NhZ2Vz
+ RGV0YWlscw==
+ ZGV0YWlscyB1cGRhdGVk
+ RGlyZWN0b3J5
+ RGlzYWJsZQ==
+ TW9kaWZ5
+ RWRpdGVkIEJ5
+ RWRpdG9ycyBQaWNr
+ RWRpdG9yJ3MgUGlja3M=
+ RWRpdCBUb3BpYyBSZXN1bHRz
+ VG9waWMgbW9kaWZpZWQ=
+ VG9waWMgaGFzIGJlZW4gbW9kaWZpZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA==
+ Q2hhbmdlcyBtYWRlIHRvIHRoZSB0b3BpYyBoYXZlIGJlZW4gc2F2ZWQu
+ TW9kaWZ5IFBvc3Q=
+ TW9kaWZ5IFRvcGlj
+ RS1NYWls
+ QSB1c2VyIHdpdGggc3VjaCBlLW1haWwgYWxyZWFkeSBleGlzdHMu
+ TWFpbCBzZW5kaW5nIGZhaWxlZA==
+ RW5hYmxlZA==
+ RW5kIE9u
+ Wm9vbSBpbg==
+ RW50ZXI=
+ RnJpZW5kJ3MgZS1tYWlsIGFkZHJlc3M=
+ WW91ciBlLW1haWwgYWRkcmVzcw==
+ RW50ZXIgeW91ciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg==
+ RW50ZXIgeW91ciBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg==
+ WW91IGhhdmUgYWxyZWFkeSByZXZpZXdlZCB0aGlzIGl0ZW0hIFlvdXIgYXBwcm92ZWQgcmV2aWV3cyBhcmUgbGlzdGVkIGJlbG93Lg==
+ TWlzc2luZyBvciBpbnZhbGlkIHZhbHVlcy4gUGxlYXNlIGNoZWNrIGFsbCB0aGUgZmllbGRzIGFuZCB0cnkgYWdhaW4u
+ U29ycnksIHRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gb3VyIHNlcnZlci4=
+ RXJyb3IgNDA0IC0gTm90IEZvdW5k
+ Q2F0ZWdvcnkgYWxyZWFkeSBhZGRlZCE=
+ Q2F0ZWdvcnkgbGltaXQgcmVhY2hlZCE=
+ UmVxdWlyZWQ=
+ RXJyb3I=
+ RXJyb3I=
+ VXNlciBOb3QgRm91bmQ=
+ RXhpc3RpbmcgVXNlcnM=
+ RXhwaXJlcw==
+ RmFsc2U=
+ RmF2b3JpdGU=
+ VW5hYmxlIHRvIGFkZCBmYXZvcml0ZSwgYWNjZXNzIGRlbmllZA==
+ RmVi
+ WW91IG11c3QgZW50ZXIgYSBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIHRvIHJldHJpdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9u
+ Qm90aCBhIFVzZXJuYW1lIGFuZCBQYXNzd29yZCBpcyByZXF1aXJlZA==
+ UGxlYXNlIGVudGVyIHlvdXIgcGFzc3dvcmQgYW5kIHRyeSBhZ2Fpbg==
+ WW91IGRpZCBub3QgZW50ZXIgeW91ciBVc2VybmFtZQ==
+ RGF0ZSBvZiBiaXJ0aCBpcyByZXF1aXJlZA==
+ TWlzc2luZyBmaXJzdCBuYW1l
+ TWlzc2luZyB1c2Vy
+ RGF0ZSBvZiBiaXJ0aCBpcyByZXF1aXJlZA==
+ RW1haWwgaXMgcmVxdWlyZWQ=
+ Rmlyc3QgbmFtZSBpcyByZXF1aXJlZA==
+ UGFzc3dvcmQgcmVxdWlyZWQ=
+ QWNjZXNzIGRlbmllZA==
+ UGFzc3dvcmRzIGRvIG5vdCBtYXRjaA==
+ VGhlIHBhc3N3b3JkIGlzIHRvbyBsb25n
+ UGFzc3dvcmQgaXMgdG9vIHNob3J0
+ Tm90IHJlc2V0
+ WW91IGhhdmUgYWxyZWFkeSByZXZpZXdlZCB0aGlzIGl0ZW0u
+ RmlsZSBpcyB0b28gbGFyZ2U=
+ VXNlciBhY2NvdW50IHdpdGggZ2l2ZW4gRS1tYWlsIG5vdCBmb3VuZA==
+ VXNlciBhY2NvdW50IHdpdGggZ2l2ZW4gVXNlcm5hbWUgbm90IGZvdW5k
+ VXNlciBuYW1lIGlzIHRvbyBzaG9ydA==
+ V3JvbmcgZmlsZSB0eXBl
+ Y2Mx
+ Y2My
+ Y2Mz
+ Y2M0
+ Y2M1
+ Y2M2
+ bGMx
+ bGMy
+ bGMz
+ bGM0
+ bGM1
+ bGM2
+ dWMx
+ dWMy
+ dWMz
+ dWM0
+ dWM1
+ dWM2
+ QXJjaGl2ZSBEYXRl
+ QXJ0aWNsZSBBdXRob3I=
+ QXJ0aWNsZSBCb2R5
+ TnVtYmVyIG9mIERlc2NlbmRhbnRz
+ Q2F0ZWdvcnkgUGF0aA==
+ UmF0aW5n
+ TnVtYmVyIG9mIFJldmlld3M=
+ TnVtYmVyIG9mIFJhdGluZyBWb3Rlcw==
+ Q2F0ZWdvcnkgSWQ=
+ Q2l0eQ==
+ Q291bnRyeQ==
+ Q3JlYXRlZCBCeSBVc2VyIElE
+ RGF0ZSBDcmVhdGVk
+ RGVzY3JpcHRpb24=
+ RGF0ZSBvZiBCaXJ0aA==
+ RWRpdG9yJ3MgcGljaw==
+ RS1tYWls
+ RW5kcyBPbg==
+ QXJ0aWNsZSBFeGNlcnB0
+ Rmlyc3QgTmFtZQ==
+ SGl0cw==
+ SXRlbSBJcyBIb3Q=
+ TGFzdCBOYW1l
+ TGFzdCBQb3N0IElE
+ Q2F0ZWdvcnkgTGVhZCBTdG9yeT8=
+ TGVhZCBTdG9yeT8=
+ TGluayBJRA==
+ TG9naW4gKFVzZXIgbmFtZSk=
+ TWV0YSBEZXNjcmlwdGlvbg==
+ TWV0YSBLZXl3b3Jkcw==
+ TGFzdCBNb2RpZmllZCBEYXRl
+ TW9kaWZpZWQgQnkgVXNlciBJRA==
+ TmFtZQ==
+ SXRlbSBJcyBOZXc=
+ QXJ0aWNsZSBJRA==
+ Tm90aWZ5IE93bmVyIG9mIENoYW5nZXM=
+ T3JpZ2luYWwgSXRlbSBJRA==
+ T3duZXIgVXNlciBJRA==
+ UGFyZW50IElk
+ UGFyZW50IENhdGVnb3J5IFBhdGg=
+ UGFzc3dvcmQ=
+ VGVsZXBob25l
+ SXRlbSBJcyBQb3B1bGFy
+ VXNlciBJRA==
+ UG9zdGVkIEJ5
+ VG9waWMgUG9zdHM=
+ UHJpb3JpdHk=
+ UXR5IFNvbGQ=
+ UmVzb3VyY2UgSUQ=
+ U3RhcnQgRGF0ZQ==
+ U3RhdGU=
+ U3RhdHVz
+ U3RyZWV0IEFkZHJlc3M=
+ QXJ0aWNsZSBUZXh0
+ QXJ0aWNsZSBUaXRsZQ==
+ VG9waWMgSUQ=
+ VG9waWMgVGV4dA==
+ VG9waWMgVHlwZQ==
+ SXRlbSBJcyBhIFRvcCBTZWxsZXI=
+ VGltZSBab25l
+ VVJM
+ Vmlld3M=
+ WmlwIChQb3N0YWwpIENvZGU=
+ Rmlyc3QgTmFtZQ==
+ QWRkcmVzcyBsaW5lIDE=
+ QWRkcmVzcyBsaW5lIDI=
+ RGF0ZSBvZiBiaXJ0aA==
+ Qm9keQ==
+ Q2FwdGNoYSBJbWFnZQ==
+ Q2l0eQ==
+ UXVlc3Rpb25z
+ Q29tcGFueQ==
+ Q291bnRyeQ==
+ RGVzY3JpcHRpb24=
+ RHVyYXRpb24=
+ RS1NYWls
+ RmF4
+ UHJpbWFyeSBGaWxl
+ Mm5kIEZpbGU=
+ M3JkIEZpbGU=
+ RmlsZW5hbWU=
+ Rmlyc3QgbmFtZQ==
+ RnVsbCBuYW1l
+ Mm5kIEltYWdl
+ M3JkIEltYWdl
+ TGFzdCBuYW1l
+ VXNlcm5hbWU=
+ TW9kdWxl
+ QWRkaXRpb25hbCBDYXRlZ29yaWVz
+ TmFtZQ==
+ UGFzc3dvcmQ=
+ UGhvbmU=
+ UGhyYXNl
+ UHJpY2U=
+ UHJpbWFyeSBJbWFnZQ==
+ UHJpbWFyeSBUcmFuc2xhdGlvbg==
+ UmF0aW5n
+ UmVmZXJyZXI=
+ UmV2aWV3IHRleHQ=
+ UGxlYXNlIHNlbGVjdCB5b3VyIGFkZHJlc3M=
+ U2l6ZQ==
+ U3RhdGU=
+ U3RyZWV0
+ VGl0bGU=
+ VHJhbnNsYXRpb24=
+ VmVyaWZ5IFBhc3N3b3Jk
+ VmVyc2lvbg==
+ WmlwIGNvZGU=
+ WmlwIGNvZGU=
+ SW5ib3g=
+ Rm9yZ290IHBhc3N3b3Jk
+ UGFzc3dvcmQgUmVxdWVzdCBDb25maXJtYXRpb24=
+ Q29uZmlybSBwYXNzd29yZCByZXNldA==
+ WW91IGhhdmUgY2hvc2VkIHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQuIEEgbmV3IHBhc3N3b3JkIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBzeXN0ZW0uIEl0IGhhcyBiZWVuIGVtYWlsZWQgdG8geW91ciBhZGRyZXNzIG9uIGZpbGUu
+ UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg==
+ Rm9yZ290IFBhc3N3b3Jk
+ Rm9yZ290IFBhc3N3b3Jk
+ RW50ZXIgeW91ciBVc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzIGJlbG93IHRvIGhhdmUgeW91ciBhY2NvdW50IGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGVtYWlsIGFkZHJlc3Mgb2YgeW91ciBhY2NvdW50Lg==
+ Rm9ydW1z
+ V2VsY29tZSB0byBJbi1wb3J0YWwgZm9ydW1zIQ==
+ V2VsY29tZSB0byBJbi1idWxsZXRpbiBGb3J1bXMh
+ Rm9ydW0gaXMgbG9ja2VkIGZvciBwb3N0aW5n
+ Rm91bmQ6
+ RnJvbQ==
+ RnVsbCBuYW1l
+ RnVsbCBTdG9yeQ==
+ R2V0dGluZyBSYXRlZA==
+ WW91IG1heSBwbGFjZSB0aGUgZm9sbG93aW5nIEhUTUwgY29kZSBvbiB5b3VyIHdlYiBzaXRlIHRvIGFsbG93IHlvdXIgc2l0ZSB2aXNpdG9ycyB0byB2b3RlIGZvciB0aGlzIHJlc291cmNl
+ R28=
+ R3Vlc3Q=
+ SGVscA==
+ SGVyZQ==
+ SGl0cw==
+ SGl0cyBIbyB0byBMb3c=
+ SGl0cyBMb3cgdG8gSGk=
+ SG9tZQ==
+ SG90
+ SG90IExpbmtz
+ aW4=
+ SW5ib3g=
+ VXNlcm5hbWUvUGFzc3dvcmQgSW5jb3JyZWN0
+ SW5kaWNhdGVzIFJlcXVpcmVkIGZpZWxkcw==
+ SW52YWxpZCBlLW1haWwgYWRkcmVzcw==
+ RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk
+ SW52YWxpZCBQYXNzd29yZA==
+ SW4gdGhpcyBtZXNzYWdl
+ UHJpbWFyeSBDYXRlZ29yeQ==
+ SXRlbXMgUGVyIFBhZ2U=
+ SXRlbXMgc2luY2UgbGFzdCBsb2dpbg==
+ SmFu
+ Sm9pbmVk
+ SnVs
+ SnVu
+ S2V5d29yZCBpcyB0b28gc2hvcnQ=
+ TGFzdCBQb3N0
+ TGFzdCBQb3N0IEJ5
+ TGFzdCBVcGRhdGU=
+ TGFzdCBOYW1l
+ TGVnZW5k
+ TGlua3M=
+ bGlua3MgdXBkYXRlZA==
+ WW91ciByZXZpZXcgaGFzIGJlZW4gYWRkZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA==
+ WW91ciByZXZpZXcgaGFzIGJlZW4gYWRkZWQ=
+ TGluayBEZXRhaWxz
+ TGluayBJbmZvcm1hdGlvbg==
+ TGluayBOYW1l
+ TGluayBSYXRpbmcgUmVzdWx0cw==
+ WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGxpbmsu
+ VGhhbmsgZm9yIHJhdGluZyB0aGlzIGxpbmsuICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg==
+ TGluayBSZXZpZXdz
+ TGluayBSZXZpZXcgUmVzdWx0cw==
+ TGluayBSZXZpZXcgUGVuZGluZw==
+ TGluayBTZWFyY2ggUmVzdWx0cw==
+ TG9jYXRpb24=
+ TG9ja2VkIHRvcGlj
+ TG9jay9VbmxvY2s=
+ TG9naW4=
+ TG9naW4gSW5mb3JtYXRpb24=
+ TG9naW4gTmFtZQ==
+ TG9naW4=
+ TG9nIE91dA==
+ TG9nb3V0IG9mIHlvdXIgYWNjb3VudA==
+ TG9nIG91dCBvZiB0aGUgc3lzdGVt
+ TWFpbGluZyBMaXN0
+ TWFy
+ TWF5
+ TWVzc2FnZQ==
+ TWVzc2FnZSBCb2R5
+ UGFzc3dvcmQgcmVzZXQgaW50ZXJ2YWw=
+ TWlzc2luZyBUZW1wbGF0ZQ==
+ TW9kaWZpZWQ=
+ TGluayBNb2RpZmljYXRpb24gQ29uZmlybWF0aW9u
+ WW91ciBsaW5rIGhhcyBiZWVuIG1vZGlmaWVkLg==
+ TGluayBtb2RpZmljYXRpb24gY29tcGxldGU=
+ WW91ciBsaW5rIG1vZGlmaWNhdGlvbiBoYXMgYmVlbiBzdWJtaXR0ZWQgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbA==
+ TW9kaWZ5IExpbms=
+ TW9yZQ==
+ TW9yZSBkZXRhaWxz
+ TW9yZSBJbmZv
+ V2VsY29tZQ==
+ TXkgQWNjb3VudA==
+ TXkgRmF2b3JpdGVz
+ TXkgUHJlZmVyZW5jZXM=
+ TXkgUHJvZmlsZQ==
+ TXkgQXJ0aWNsZXM=
+ TmV3cyBBcnRpY2xlcyB5b3UgaGF2ZSB3cml0dGVu
+ TXkgRmF2b3JpdGVz
+ SXRlbXMgeW91IGhhdmUgbWFya2VkIGFzIGZhdm9yaXRl
+ TXkgRnJpZW5kcw==
+ VmlldyB5b3VyIGxpc3Qgb2YgZnJpZW5kcw==
+ TXkgUHJvZmlsZQ==
+ WW91ciBBY2NvdW50IEluZm9ybWF0aW9u
+ TXkgSXRlbXM=
+ TXkgTGlua3M=
+ TGlua3MgeW91IGhhdmUgYWRkZWQgdG8gdGhlIHN5c3RlbQ==
+ TXkgRmF2b3JpdGVz
+ TXkgTmV3cw==
+ RmF2b3JpdGUgQXJ0aWNsZXM=
+ TXkgUHJlZmVyZW5jZXM=
+ RWRpdCB5b3VyIEluLVBvcnRhbCBQcmVmZXJlbmNlcw==
+ TXkgUHJvZmlsZQ==
+ TXkgVG9waWNz
+ RGlzY3Vzc2lvbnMgeW91IGhhdmUgY3JlYXRlZA==
+ TXkgVG9waWNz
+ TmFtZQ==
+ QWRkIExpbms=
+ TmV3
+ TmV3IEN1c3RvbWVycw==
+ TmV3IFByaXZhdGUgTWVzc2FnZSBDb25maXJtYXRpb24=
+ WW91ciBwcml2YXRlIG1lc3NhZ2UgaGFzIGJlZW4gc2VudC4=
+ TmV3cw==
+ VGhlIGFydGljbGUgcmV2aWV3IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkYXRhYmFzZS4=
+ QXJ0aWNsZSByZXZpZXcgaGFzIGJlZW4gc3VibWl0dGVkIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWw=
+ TmV3cyBEZXRhaWxz
+ UmF0ZSBBcnRpY2xlIFJlc3VsdHM=
+ WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIGFydGljbGU=
+ VGhhbmsgeW91IGZvciByYXRpbmcgdGhpcyBhcnRpY2xlLiBZb3VyIHZvdGUgaGFzIGJlZW4gcmVjb3JkZWQu
+ VGhlIHJldmlldyBoYXMgYmVlbiBhZGRlZA==
+ QXJ0aWNsZSByZXZpZXcgc3VibWl0dGVk
+ U2VhcmNoIFJlc3VsdHM=
+ bmV3cyB1cGRhdGVk
+ QWRkIFRvcGljIFJlc3VsdHM=
+ WW91ciB0b3BpYyBoYXMgYmVlbiBhZGRlZA==
+ VGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIG11c3QgYXBwcm92ZSB5b3VyIHRvcGljIGJlZm9yZSBpdCBpcyBwdWJsaWNseSBhdmFpbGFibGUu
+ VGhlIFRvcGljIHlvdSBoYXZlIGNyZWF0ZWQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN5c3RlbQ==
+ TmV3IGFydGljbGVz
+ TmV3IExpbmtz
+ TmV3IGFydGljbGVz
+ TmV3IFByaXZhdGUgTWVzc2FnZQ==
+ Rm9ydW0gaGFzIG5ldyBwb3N0cw==
+ TmV3IHByaXZhdGUgbWVzc2FnZQ==
+ TmV3IGxpbmtz
+ TmV3IGFydGljbGVz
+ TmV3IHRvcGljcw==
+ TmV3IFRvcGlj
+ TmV3IFVzZXJz
+ Tm8=
+ U29ycnksIHlvdSBoYXZlIG5vIGFjY2VzcyB0byB0aGlzIHBhZ2Uh
+ Tm8gQ2F0ZWdvcmllcw==
+ Tm8gZmF2b3JpdGUgaXRlbXMgc2F2ZWQ=
+ Tm8gbWVtYmVycyBmb3VuZA==
+ Tm9uZQ==
+ QmUgdGhlIGZpcnN0IHRvIHJldmlldw==
+ Tm90aWZ5IG1lIHdoZW4gcG9zdHMgYXJlIG1hZGUgaW4gdGhpcyB0b3BpYw==
+ bm90IGxvZ2dlZCBpbg==
+ Tm90IGxvZ2dlZCBpbg==
+ Tm92
+ Tm8gQXJ0aWNsZXM=
+ Tm8gQ2F0ZWdvcmllcw==
+ Tm8gZXhwaXJhdGlvbg==
+ Tm8gZmF2b3JpdGVz
+ Tm8gSXRlbXM=
+ S2V5d29yZCBtaXNzaW5n
+ Tm8gTGlua3M=
+ Rm9ydW0gaGFzIG5vIG5ldyBwb3N0cw==
+ Tm8gUGVybWlzc2lvbnM=
+ Tm8gUmVsYXRlZCBDYXRlZ29yaWVz
+ RXJyb3I6IG5vIHNlc3Npb24=
+ TWlzc2luZyB0ZW1wbGF0ZQ==
+ Tm8gVG9waWNz
+ T2N0
+ b2Y=
+ T2ZmbGluZQ==
+ T2s=
+ T2xkIHRvIFJlY2VudA==
+ b24=
+ T25saW5l
+ b24gdGhpcyBwb3N0
+ WW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9u
+ T3B0aW9uYWw=
+ T3B0aW9ucw==
+ U2VsZWN0IENhdGVnb3J5
+ b3I=
+ UGFnZQ==
+ UGFnZTo=
+ UGFzc3dvcmQ=
+ UGFzc3dvcmRzIGRvIG5vdCBtYXRjaA==
+ UGFzc3dvcmQgaXMgdG9vIHNob3J0LCBwbGVhc2UgZW50ZXIgYXQgbGVhc3QgJXMgY2hhcmFjdGVycw==
+ UGFzc3dvcmQgQWdhaW4=
+ cGVuZGluZyBpdGVt
+ UGVuZGluZyBBcHByb3ZhbA==
+ QWRtaW4gTG9naW4=
+ QWRkIFBlbmRpbmcgQ2F0ZWdvcnk=
+ QWRkIENhdGVnb3J5
+ RGVsZXRlIENhdGVnb3J5
+ TW9kaWZ5IENhdGVnb3J5
+ VmlldyBDYXRlZ29yeQ==
+ QXBwZW5kIHBocGluZm8gdG8gYWxsIHBhZ2VzIChEZWJ1Zyk=
+ RGlzcGxheSBJdGVtIFF1ZXJpZXMgKERlYnVnKQ==
+ RGlzcGxheSBJdGVtIExpc3QgUXVlcmllcyAoRGVidWcp
+ QWxsb3cgZmF2b3JpdGVz
+ UGVuZGluZyBMaW5r
+ QWRkIExpbms=
+ RGVsZXRlIExpbms=
+ TW9kaWZ5IExpbmsgUGVuZGluZw==
+ TW9kaWZ5IExpbms=
+ TGluayBEZWxldGUgYnkgT3duZXI=
+ TGluayBNb2RpZnkgUGVuZGluZyBieSBPd25lcg==
+ TGluayBNb2RpZnkgYnkgT3duZXI=
+ UmF0ZSBMaW5r
+ UmV2aWV3IExpbms=
+ UmV2aWV3IExpbmsgUGVuZGluZw==
+ VmlldyBMaW5r
+ QWxsb3cgTG9naW4=
+ QWRkIFBlbmRpbmcgTmV3cw==
+ QWRkIE5ld3M=
+ RGVsZXRlIE5ld3M=
+ TW9kaWZ5IE5ld3M=
+ UmF0ZSBOZXdz
+ UmV2aWV3IE5ld3MgUGVuZGluZw==
+ UmV2aWV3IE5ld3M=
+ VmlldyBOZXdz
+ Q2hhbmdlIFVzZXIgUHJvZmlsZXM=
+ U2hvdyBMYW5ndWFnZSBUYWdz
+ QWRkIFBlbmRpbmcgVG9waWM=
+ QWRkIFRvcGlj
+ RGVsZXRlIFRvcGlj
+ TG9jay9VbmxvY2sgVG9waWNz
+ TW9kaWZ5IFRvcGljIFBlbmRpbmc=
+ TW9kaWZ5IFRvcGlj
+ VG9waWMgT3duZXIgRGVsZXRl
+ T3duZXIgTW9kaWZ5IFRvcGljIFBlbmRpbmc=
+ VG9waWMgT3duZXIgTW9kaWZ5
+ UmF0ZSBUb3BpYw==
+ QWRkIFRvcGljIFJlcGx5
+ RGVsZXRlIFRvcGlj
+ UmVwbHkgVG9waWMgTW9kaWZ5
+ UG9zdCBPd25lciBEZWxldGU=
+ UG9zdCBPd25lciBNb2RpZnk=
+ VmlldyBUb3BpYyBSZXBseQ==
+ UmV2aWV3IFRvcGlj
+ VmlldyBUb3BpYw==
+ UGhvbmU=
+ UGljaw==
+ RWRpdG9yJ3MgUGljayBMaW5rcw==
+ RWRpdG9yJ3MgUGljayBBcnRpY2xlcw==
+ RWRpdG9yJ3MgcGljayB0b3BpY3M=
+ UGxlYXNlIFJlZ2lzdGVy
+ QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgbWVzc2FnZT8=
+ UHJpdmF0ZSBNZXNzYWdlcw==
+ UHJpdmF0ZSBNZXNzYWdlcw==
+ UG9wdWxhcg==
+ TW9zdCBQb3B1bGFyIExpbmtz
+ UG9zdA==
+ UG9zdGVk
+ UG9zdGVy
+ cG9zdHM=
+ cG9zdHMgdXBkYXRlZA==
+ UG93ZXJlZCBieQ==
+ Q2l0eQ==
+ Q29tcGFueQ==
+ Q291bnRyeQ==
+ QmlydGhkYXRl
+ RS1tYWls
+ RmF4
+ Rmlyc3QgTmFtZQ==
+ TGFzdCBOYW1l
+ UGhvbmU=
+ U3RhdGU=
+ U3RyZWV0
+ U3RyZWV0IDI=
+ Wmlw
+ UHJpdmFjeQ==
+ UHJpdmFjeSBQb2xpY3k=
+ UHJpdmF0ZSBtZXNzYWdlcyB1cGRhdGVk
+ UHJpdmF0ZSBNZXNzYWdlcw==
+ UHJvZHVjdHMgdXBkYXRlZA==
+ UHJvZmlsZQ==
+ UHJvZmlsZQ==
+ cHJvZmlsZSB1cGRhdGVk
+ QXZhdGFyIEltYWdl
+ RGVzY3JpcHRpb24=
+ Q2F0ZWdvcnkgTmFtZQ==
+ RW1haWw=
+ RnVsbC1TaXplIEltYWdlOg==
+ RGVzY3JpcHRpb24=
+ TGluayBOYW1l
+ VVJM
+ TWV0YSBUYWcgRGVzY3JpcHRpb24=
+ TWV0YSBUYWcgS2V5d29yZHM=
+ UGFzc3dvcmQ=
+ UG9zdHMgUGVyIFBhZ2U=
+ VG9waWNzIFBlciBQYWdl
+ UG9zdCBTdWJqZWN0
+ UmVjb21tZW5kIHRoaXMgc2l0ZSB0byBhIGZyaWVuZA==
+ UmV2aWV3Og==
+ U2lnbmF0dXJl
+ RW50ZXIgeW91ciBlLW1haWwgYWRkcmVzcyB0byBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdC4=
+ VGh1bWJuYWlsIEltYWdlOg==
+ VXNlcm5hbWU=
+ RGlzcGxheSB0byBQdWJsaWM=
+ UXVlcnkgU3RyaW5n
+ UXVlc3Rpb25z
+ UXVpY2sgU2VhcmNo
+ UXVpY2sgTGlua3M=
+ UmVwbHkgUXVvdGVk
+ UmF0ZSBUaGlzIExpbms=
+ VW5hYmxlIHRvIHJhdGUsIGFjY2VzcyBkZW5pZWQ=
+ UmF0ZSB0aGlzIGFydGljbGU=
+ UmF0ZSBMaW5r
+ UmF0ZSBBcnRpY2xl
+ UmF0ZSB0aGlzIGFydGljbGU=
+ UmF0ZSBUb3BpYw==
+ UmF0aW5n
+ UmF0aW5nIEhpIHRvIExvdw==
+ UmF0aW5nIExvdyB0byBIaQ==
+ UG9vcg==
+ RmFpcg==
+ QXZlcmFnZQ==
+ R29vZA==
+ VmVyeSBHb29k
+ RXhjZWxsZW50
+ QWxyZWFkeSB2b3RlZA==
+ VW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxl
+ UmVjZW50IHRvIE9sZA==
+ VGhlIHJlY2lwaWVudCBpcyByZXF1aXJlZA==
+ VXNlciBkb2VzIG5vdCBleGlzdA==
+ VGhlIHJlY2lwaWVudCBkb2VzIG5vdCBleGlzdA==
+ UmVjb21tZW5k
+ UmVjb21tZW5kIHRvIGEgRnJpZW5k
+ UmVjb21tZW5kYXRpb24gQ29uZmlybWF0aW9u
+ VGhhbmtzIGZvciByZWNvbW1lbmRpbmcgb3VyIHNpdGUgdG8geW91ciBmcmllbmQuIFRoZSBlbWFpbCBoYXMgYmVlbiBzZW50IG91dC4=
+ UmVjb21tZW5kIHRvIGEgZnJpZW5k
+ Q2xpY2sgaGVyZSBpZiB5b3VyIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSByZWRpcmVjdCB5b3Uu
+ UmVkaXJlY3RpbmcgLi4u
+ UmVnaXN0ZXI=
+ UmVnaXN0cmF0aW9uIENvbmZpcm1hdGlvbg==
+ UmVnaXN0cmF0aW9uIENvbXBsZXRl
+ VGhhbmsgeW91IGZvciBSZWdpc3RlcmluZyEgIFBsZWFzZSBlbnRlciB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBiZWxvdw==
+ UmVnaXN0ZXIgd2l0aCBJbi1Qb3J0YWwgZm9yIGNvbnZlbmllbnQgYWNjZXNzIHRvIHVzZXIgYWNjb3VudCBzZXR0aW5ncyBhbmQgcHJlZmVyZW5jZXMu
+ VGhhbmsgWW91LiBSZWdpc3RyYXRpb24gY29tcGxldGVkLg==
+ WW91ciBsb2dpbiBpbmZvcm1hdGlvbiBoYXMgYmVlbiBlbWFpbGVkIHRvIHlvdS4gUGxlYXNlIGNoZWNrIHlvdXIgZW1haWwu
+ UmVsYXRlZCBhcnRpY2xlcw==
+ UmVsYXRlZCBDYXRlZ29yaWVz
+ UmVsYXRlZCBDYXRlZ29yaWVz
+ UmVsYXRlZCBMaW5rcw==
+ UmVsYXRlZCBOZXdz
+ UmVsZXZhbmNl
+ UmVtZW1iZXIgTG9naW4=
+ UmVtb3Zl
+ UmVtb3ZlIEZyb20gRmF2b3JpdGVz
+ UmVwZWF0IFBhc3N3b3Jk
+ UmVwbGllcw==
+ UmVwbHk=
+ UmVxdWlyZWQgRmllbGQ=
+ UmVzZXQ=
+ QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IHRoZSBwYXNzd29yZD8=
+ UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg==
+ UmV0dXJuIHRvIGhvbWVwYWdl
+ UmV2aWV3cw==
+ cmV2aWV3cyB1cGRhdGVk
+ VW5hYmxlIHRvIHJldmlldywgYWNjZXNzIGRlbmllZA==
+ UmV2aWV3IGFydGljbGU=
+ UmV2aWV3IExpbms=
+ UmV2aWV3IG5ld3MgYXJ0aWNsZQ==
+ UmV2aWV3IHRoaXMgYXJ0aWNsZQ==
+ SG9tZQ==
+ U2VhcmNo
+ U2VhcmNoZWQgRm9yOg==
+ U2VhcmNoIFByb2R1Y3Rz
+ U2VhcmNoIEFydGljbGVz
+ U2VhcmNoIENhdGVnb3JpZXM=
+ U2VhcmNoIExpbmtz
+ U2VhcmNoIFRvcGljcw==
+ U2VhcmNoIEFnYWlu
+ Rm9ybSBFcnJvcg==
+ U2VhcmNoIFJlc3VsdHM=
+ U2VhcmNoIFRpcHM=
+ U2VhcmNoIFR5cGU=
+ U2VhcmNoIFJlc3VsdHM=
+ QWRkaXRpb25hbCBJbWFnZXM=
+ SW1hZ2Vz
+ TXlBY2NvdW50
+ TXkgSXRlbXM=
+ UmV2aWV3cw==
+ U2VlIEFsc28=
+ U2VsZWN0IExhbmd1YWdl
+ U2VsZWN0IFRoZW1l
+ U2VsZWN0IFVzZXJuYW1l
+ U2VuZA==
+ U2VuZCBQcml2YXRlIE1lc3NhZ2U=
+ U2VudA==
+ U2Vw
+ U2hvcHBpbmcgQ2FydA==
+ U2hvdw==
+ U2hvdyBTaWduYXR1cmU=
+ U2hvdyBNeSBTaWduYXR1cmU=
+ U2l0ZSBMZWFkIFN0b3J5
+ U2l0ZW1hcA==
+ U2l0ZSBNYXA=
+ U21pbGV5cw==
+ U29ydGVkIGxpc3Q=
+ U29ydA==
+ U3RhdGU=
+ U3RhdGlzdGljcw==
+ U3RyZWV0
+ U3RyZWV0IDI=
+ QWxzbyBZb3UgQ2FuOg==
+ U3ViY2F0ZWdvcmllcw==
+ U3ViamVjdA==
+ U3VibWl0dGluZyB0bw==
+ U3Vic2NyaXB0aW9uIGRlbmllZA==
+ U3Vic2NyaXB0aW9uIENvbmZpcm1hdGlvbg==
+ QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHN1YnNjcmliZSB0byBvdXIgbWFpbGluZyBsaXN0PyAoWW91IGNhbiB1bnN1YnNjcmliZSBhbnkgdGltZSBieSBlbnRlcmluZyB5b3VyIGVtYWlsIG9uIHRoZSBmcm9udCBwYWdlKS4=
+ VGhhbmsgeW91IGZvciBzdWJzY3JpYmluZyB0byBvdXIgbWFpbGluZyBsaXN0IQ==
+ Rm9ybSBFcnJvcg==
+ TWlzc2luZyBlbWFpbCBhZGRyZXNz
+ RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk
+ U3Vic2NyaXB0aW9uIHN1Y2Nlc3NmdWw=
+ U3Vic2NyaWJlZA==
+ VW5kZWZpbmVkIGVycm9yIG9jY3VycmVkLCBzdWJzY3JpcHRpb24gbm90IGNvbXBsZXRlZA==
+ U3VibWl0dGluZyB0byBDYXRlZ29yaWVz
+ U3VnZ2VzdCBDYXRlZ29yeQ==
+ U3VnZ2VzdCBDYXRlZ29yeQ==
+ Q2F0ZWdvcnkgU3VnZ2VzdGVkIChQZW5kaW5nIEFwcHJvdmFsKQ==
+ Rm9ybSBFcnJvcg==
+ U3VnZ2VzdCBMaW5r
+ RS1tYWlsIGFkZHJlc3MgbWlzc2luZyBvciBpbnZhbGlk
+ VGhhbmsgeW91IGZvciBzdWdnZXN0aW5nIG91ciBzaXRlIHRv
+ UHJpdmFjeQ==
+ VGVtcGxhdGUgRXJyb3I=
+ VGVybXMgYW5kIENvbmRpdGlvbnMgb2YgVXNl
+ IFdlIGFyZSBzb3JyeSB5b3UgaGF2ZSB1bnN1YnNjcmliZWQgZnJvbSBvdXIgbWFpbGluZyBsaXN0
+ WW91ciBwYXNzd29yZCBoYXMgYmVlbiByZXNldC4gVGhlIG5ldyBwYXNzd29yZCBoYXMgYmVlbiBzZW50IHRvIHlvdXIgZS1tYWlsIGFkZHJlc3MuIFlvdSBtYXkgbm93IGxvZ2luIHdpdGggdGhlIG5ldyBwYXNzd29yZC4=
+ WW91IGhhdmUgY2hvc2VuIHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQuPEJSLz48QlIvPg0KQW4gYXV0b21hdGljIGVtYWlsIGhhcyBiZWVuIHNlbnQgdG8geW91ciBlbWFpbCBhZGRyZXNzIG9uIGZpbGUuIFBsZWFzZSBmb2xsb3cgdGhlIGxpbmsgaW4gdGhlIGVtYWlsIGluIG9yZGVyIHRvIHJlY2VpdmUgYSBuZXcgcGFzc3dvcmQu
+ S2V5d29yZA==
+ VGhlIGtleXdvcmQgaXMgdG9vIHNob3J0
+ Tm8gcGVybWlzc2lvbnMgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbg==
+ Tm8gcGVybWlzc2lvbnMgdG8gc3VnZ2VzdCBuZXcgY2F0ZWdvcmllcyBpbnRvIGN1cnJlbnQgY2F0ZWdvcnku
+ Tm90aGluZyBGb3VuZA==
+ NDA0LiBQYWdlIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyLg==
+ UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg==
+ VGhhbmsgeW91IGZvciByZWdpc3RlcmluZyBvbiBvdXIgd2Vic2l0ZS4gWW91ciByZWdpc3RyYXRpb24gaXMgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbC4gWW91IHdpbGwgZ2V0IGEgc2VwYXJhdGUgZW1haWwgb25jZSBpdCdzIGFjdGl2YXRlZC4=
+ VGhhbmsgeW91IGZvciBzdWdnZXN0aW5nIHlvdXIgY2F0ZWdvcnku
+ U3VnZ2VzdGVkIGNhdGVnb3J5IGlzIHBlbmRpbmcgZm9yIEFkbWluaXN0cmF0aXZlIGFwcHJvdmFsIA==
+ VGhhbmsgeW91IGZvciBzdWJtaXR0aW5nIHlvdXIgcmVxdWVzdC4=
+ VGhhbmsgeW91IGZvciBzdWJzY3JpYmluZyB0byBvdXIgbWFpbGluZyBsaXN0
+ Q3VycmVudCBDYXRlZ29yeQ==
+ QWN0aW9uIEJveA==
+ QWRkaW5nIEFkZHJlc3M=
+ QWR2ZXJ0aXNlbWVudHM=
+ Q2F0ZWdvcmllcw==
+ Q29uZmlybWF0aW9u
+ Q29udGVudCBQYWdlcw==
+ RWRpdCBBZGRyZXNz
+ WW91ciBGYXZvcml0ZSBJdGVtcw==
+ WW91ciBGYXZvcml0ZXM=
+ Rm9yZ290IFBhc3N3b3Jk
+ Rm9yZ290IFBhc3N3b3JkIENvbmZpcm1hdGlvbg==
+ Rm9yZ290IFBhc3N3b3JkIE5vdGlmaWNhdGlvbg==
+ TG9naW4gQm94
+ TWFpbGluZyBMaXN0
+ TWVtYmVycw==
+ TWlzc2luZyBQaHJhc2UgQWRkaW5n
+ TXkgQWNjb3VudA==
+ TXkgQWRkcmVzc2Vz
+ TXkgRmF2b3JpdGVz
+ TXkgSXRlbXM=
+ TXkgUHJlZmVyZW5jZXM=
+ TXkgUHJvZmlsZQ==
+ Tm8gUGVybWlzc2lvbg==
+ UGFnZSBOb3QgRm91bmQ=
+ UGFzc3dvcmQgUmVxdWVzdCBDb25maXJtYXRpb24=
+ UHJpdmFjeSBQb2xpY3k=
+ UmVjb21tZW5kIENvbmZpcm1hdGlvbg==
+ UmVjb21tZW5kIHRvIGEgRnJpZW5k
+ VXNlciBSZWdpc3RyYXRpb24gQ29uZmlybWF0aW9u
+ VXNlciBSZWdpc3RyYXRpb24gUGVuZGluZw==
+ UmVsYXRlZCBDYXRlZ29yaWVz
+ UmVsYXRlZCBJdGVtcw==
+ UmVsYXRlZCBTZWFyY2hlcw==
+ UmV2aWV3cw==
+ U2VhcmNoIEJveA==
+ U2VhcmNoIFJlc3VsdHM=
+ U2l0ZSBtYXA=
+ U3Vic2NyaXB0aW9uIENvbmZpcm1hdGlvbg==
+ U3Vic2NyaXB0aW9uIENvbmZpcm1lZA==
+ U3VnZ2VzdCBDYXRlZ29yeQ==
+ Q2F0ZWdvcnkgQWRkZWQ=
+ Q2F0ZWdvcnkgUGVuZGluZw==
+ VGVybXMgYW5kIENvbmRpdGlvbnM=
+ VGhhbmsgeW91IQ==
+ VW5zdWJzY3JpYmUgQ29uZmlybWF0aW9u
+ VW5zdWJzY3JpcHRpb24gQ29uZmlybWVk
+ VXNlciBQcm9maWxl
+ VXNlciBSZWdpc3RyYXRpb24=
+ V2VsY29tZSB0byBJbi1Qb3J0YWw=
+ VG8=
+ VG9wIFJhdGVk
+ VG9waWNz
+ VG9waWNzIFVwZGF0ZWQ=
+ VG9waWMgUmF0aW5nIFJlc3VsdHM=
+ WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIHRvcGlj
+ VGhhbmsgeW91IGZvciB2b3RpbmchICBZb3VyIGlucHV0IGhhcyBiZWVuIHJlY29yZGVkLg==
+ UG9zdCBSZXBseQ==
+ VG9waWMgU2VhcmNoIFJlc3VsdHM=
+ VG9waWMgVXBkYXRlZA==
+ VG9wIFJhdGVkIExpbmtz
+ VG90YWwgQ2F0ZWdvcmllcw==
+ VG90YWwgQ2F0ZWdvcmllcw==
+ VG90YWwgbGlua3MgaW4gdGhlIGRhdGFiYXNl
+ VG90YWwgQXJ0aWNsZXM=
+ VG90YWwgVG9waWNz
+ VHJ1ZQ==
+ Ti9B
+ U3lzdGVtIGVycm9yIGhhcyBvY2N1cmVk
+ VW5zb3J0ZWQgbGlzdA==
+ VW5zdWJzY3JpcHRpb24gQ29uZmlybWF0aW9u
+ QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuc3Vic2NyaWJlIGZyb20gb3VyIG1haWxpbmcgbGlzdD8gKFlvdSBjYW4gYWx3YXlzIHN1YnNjcmliZSBhZ2FpbiBieSBlbnRlcmluZyB5b3VyIGVtYWlsIGF0IHRoZSBob21lIHBhZ2Up
+ V2UgYXJlIHNvcnJ5IHlvdSBoYXZlIHVuc3Vic2NyaWJlZCBmcm9tIG91ciBtYWlsaW5nIGxpc3Q=
+ VW5zdWJzY3JpYmU=
+ VXBkYXRl
+ VXNlcm5hbWU=
+ VXNlcnMgT25saW5l
+ QSB1c2VyIHdpdGggc3VjaCB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cy4=
+ QSB1c2VyIHdpdGggc3VjaCB1c2VybmFtZS9lLW1haWwgYWxyZWFkeSBleGlzdHMu
+ VXNlciBhbHJlYWR5IGV4aXN0cw==
+ UGVuZGluZyBSZWdpc3RyYXRpb24gQ29tcGxldGU=
+ VGhhbmsgeW91IGZvciByZWdpc3RlcmluZy4gWW91ciByZWdpc3RyYXRpb24gaXMgcGVuZGluZyBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbC4=
+ VmVyaWZ5IHBhc3N3b3Jk
+ Vmlld3M=
+ VmlldyBGbGF0
+ VmlldyBQTQ==
+ VmlldyBVc2VyIFByb2ZpbGU=
+ VmlldyBUaHJlYWRlZA==
+ VmlldyBZb3VyIFByb2ZpbGU=
+ RGlyZWN0IGFjY2VzcyBvciBib29rbWFyaw==
+ Vm90ZXM=
+ Vm90ZXMgSGkgdG8gTG93
+ Vm90ZXMgTG93IHRvIEhp
+ V2FybmluZw==
+ V2UgYWNjZXB0IGNyZWRpdCBjYXJkcw==
+ d3JvdGU=
+ WWVz
+ WW91ciBBY2NvdW50
+ U2hvcHBpbmcgQ2FydA==
+ Q3VycmVuY3k=
+ TGFuZ3VhZ2U=
+ WW91ciBXaXNoIExpc3Q=
+ Wmlw
+ WklQIENvZGU=
+ WklQIENvZGU=
+ Wm9vbQ==
+ TXkgU2V0dGluZ3M=
+ TmV4dCBUaGVtZQ==
+ UHJldmlvdXMgVGhlbWU=
+ dGVzdCAy
+
+
+ U3ViamVjdDogQ2F0ZWdvcnkgYWRkZWQKCllvdXIgc3VnZ2VzdGVkIGNhdGVnb3J5ICI8aW5wOm1fY2F0ZWdvcnlfZmllbGQgX0ZpZWxkPSJOYW1lIiBfU3RyaXBIVE1MPSIxIi8+IiBoYXMgYmVlbiBhZGRlZC4=
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBhZGRlZAoKQSBjYXRlZ29yeSAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gYWRkZWQu
+
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQ2F0ZWdvcnkgYWRkZWQgKHBlbmRpbmcpCgpBIGNhdGVnb3J5ICI8aW5wOm1fY2F0ZWdvcnlfZmllbGQgX0ZpZWxkPSJOYW1lIiBfU3RyaXBIVE1MPSIxIi8+IiBoYXMgYmVlbiBhZGRlZCwgcGVuZGluZyB5b3VyIGNvbmZpcm1hdGlvbi4gIFBsZWFzZSByZXZpZXcgdGhlIGNhdGVnb3J5IGFuZCBhcHByb3ZlIG9yIGRlbnkgaXQu
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBhcHByb3ZlZAoKWW91ciBzdWdnZXN0ZWQgY2F0ZWdvcnkgIjxpbnA6bV9jYXRlZ29yeV9maWVsZCBfRmllbGQ9Ik5hbWUiIF9TdHJpcEhUTUw9IjEiLz4iIGhhcyBiZWVuIGFwcHJvdmVkLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBhcHByb3ZlZAoKQSBjYXRlZ29yeSAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gYXBwcm92ZWQu
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBkZWxldGVkCgpBIGNhdGVnb3J5ICI8aW5wOm1fY2F0ZWdvcnlfZmllbGQgX0ZpZWxkPSJOYW1lIiBfU3RyaXBIVE1MPSIxIi8+IiBoYXMgYmVlbiBkZWxldGVkLg==
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEEgY2F0ZWdvcnkgaGFzIGJlZW4gZGVsZXRlZAoKQSBjYXRlZ29yeSAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gZGVsZXRlZC4=
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBkZW5pZWQKCllvdXIgY2F0ZWdvcnkgc3VnZ2VzdGlvbiAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gZGVuaWVkLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBkZW5pZWQKCkEgY2F0ZWdvcnkgIjxpbnA6bV9jYXRlZ29yeV9maWVsZCBfRmllbGQ9Ik5hbWUiIF9TdHJpcEhUTUw9IjEiLz4iIGhhcyBiZWVuIGRlbmllZC4=
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBtb2RpZmllZAoKWW91ciBzdWdnZXN0ZWQgY2F0ZWdvcnkgIjxpbnA6bV9jYXRlZ29yeV9maWVsZCBfRmllbGQ9Ik5hbWUiIF9TdHJpcEhUTUw9IjEiLz4iIGhhcyBiZWVuIG1vZGlmaWVkLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSBjYXRlZ29yeSBoYXMgYmVlbiBtb2RpZmllZAoKQSBjYXRlZ29yeSAiPGlucDptX2NhdGVnb3J5X2ZpZWxkIF9GaWVsZD0iTmFtZSIgX1N0cmlwSFRNTD0iMSIvPiIgaGFzIGJlZW4gbW9kaWZpZWQu
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IENvbW1vbiBGb290ZXIgVGVtcGxhdGUKCg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogSW4tcG9ydGFsIHJlZ2lzdHJhdGlvbgoKRGVhciA8aW5wOnRvdXNlciBfRmllbGQ9IkZpcnN0TmFtZSIgLz4gPGlucDp0b3VzZXIgX0ZpZWxkPSJMYXN0TmFtZSIgLz4sDQoNClRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgb24gPGlucDptX3BhZ2VfdGl0bGUgLz4uIFlvdXIgcmVnaXN0cmF0aW9uIGlzIG5vdyBhY3RpdmUu
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE5ldyB1c2VyIGhhcyBiZWVuIGFkZGVkCgpBIG5ldyB1c2VyICI8aW5wOnRvdXNlciBfRmllbGQ9IkxvZ2luIiAvPiIgaGFzIGJlZW4gYWRkZWQu
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEluLVBvcnRhbCBSZWdpc3RyYXRpb24KCkRlYXIgPGlucDp0b3VzZXIgX0ZpZWxkPSJGaXJzdE5hbWUiIC8+IDxpbnA6dG91c2VyIF9GaWVsZD0iTGFzdE5hbWUiIC8+LA0KDQpUaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIG9uIDxpbnA6bV9wYWdlX3RpdGxlIC8+LiBZb3VyIHJlZ2lzdHJhdGlvbiB3aWxsIGJlIGFjdGl2ZSBhZnRlciBhcHByb3ZhbC4=
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IFVzZXIgcmVnaXN0ZXJlZAoKQSBuZXcgdXNlciAiPGlucDp0b3VzZXIgX0ZpZWxkPSJMb2dpbiIgLz4iIGhhcyByZWdpc3RlcmVkIGFuZCBpcyBwZW5kaW5nIGFkbWluaXN0cmF0aXZlIGFwcHJvdmFsLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogWW91IGhhdmUgYmVlbiBhcHByb3ZlZAoKV2VsY29tZSB0byBJbi1wb3J0YWwhDQpZb3VyIHVzZXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkLiBZb3VyIHVzZXIgbmFtZSBpcyAiPGlucDp0b3VzZXIgX0ZpZWxkPSJVc2VyTmFtZSIgLz4iLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciBhcHByb3ZlZAoKVXNlciAiPGlucDp0b3VzZXIgX0ZpZWxkPSJVc2VyTmFtZSIgLz4iIGhhcyBiZWVuIGFwcHJvdmVkLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQWNjZXNzIGRlbmllZAoKWW91ciByZWdpc3RyYXRpb24gdG8gPGlucDptX3BhZ2VfdGl0bGUgLz4gaGFzIGJlZW4gZGVuaWVkLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciBkZW5pZWQKClVzZXIgIjxpbnA6dG91c2VyIF9GaWVsZD0iVXNlck5hbWUiIC8+IiBoYXMgYmVlbiBkZW5pZWQu
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE1lbWJlcnNoaXAgZXhwaXJhdGlvbiBub3RpY2UKCk1lbWJlcnNoaXAgZXhwaXJhdGlvbiBub3RpY2U=
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE1lbWJlcnNoaXAgZXhwaXJhdGlvbiBub3RpY2UKCk1lbWJlcnNoaXAgZXhwaXJhdGlvbiBub3RpY2U=
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE1lbWJlcnNoaXAgZXhwaXJlZAoKTWVtYmVyc2hpcCBleHBpcmVk
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE1lbWJlcnNoaXAgZXhwaXJlZAoKTWVtYmVyc2hpcCBleHBpcmVk
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTG9zdCBwYXNzd29yZAoKWW91ciBsb3N0IHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3VyIG5ldyBwYXNzd29yZCBpczogIjxpbnAyOnVfRm9yZ290dGVuUGFzc3dvcmQgLz4iLg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogTG9zdCBwYXNzd29yZAoKWW91ciBsb3N0IHBhc3N3b3JkIGhhcyBiZWVuIHJlc2V0LiBZb3VyIG5ldyBwYXNzd29yZCBpczogIjxpbnAyOnVfRm9yZ290dGVuUGFzc3dvcmQgLz4iLg==
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IFBhc3N3b3JkIHJlc2V0IGNvbmZpcm1hdGlvbgoKSGVsbG8sDQoNCkl0IHNlZW1zIHRoYXQgeW91IGhhdmUgcmVxdWVzdGVkIGEgcGFzc3dvcmQgcmVzZXQgZm9yIHlvdXIgSW4tcG9ydGFsIGFjY291bnQuIElmIHlvdSB3b3VsZCBsaWtlIHRvIHByb2NlZWQgYW5kIGNoYW5nZSB0aGUgcGFzc3dvcmQsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBiZWxvdzoNCjxpbnAyOnVfQ29uZmlybVBhc3N3b3JkTGluayBub19hbXA9IjEiLz4NCg0KWW91IHdpbGwgcmVjZWl2ZSBhIHNlY29uZCBlbWFpbCB3aXRoIHlvdXIgbmV3IHBhc3N3b3JkIHNob3J0bHkuDQoNCklmIHlvdSBiZWxpZXZlIHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgZW1haWwgaW4gZXJyb3IsIHBsZWFzZSBpZ25vcmUgdGhpcyBlbWFpbC4gWW91ciBwYXNzd29yZCB3aWxsIG5vdCBiZSBjaGFuZ2VkIHVubGVzcyB5b3UgaGF2ZSBjbGlja2VkIG9uIHRoZSBhYm92ZSBsaW5rLg0K
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogU3Vic2NyaXB0aW9uIGNvbmZpcm1hdGlvbgoKWW91IGhhdmUgc3Vic2NyaWJlZCB0byA8aW5wOm1fcGFnZV90aXRsZSAvPiBtYWlsaW5nIGxpc3Qu
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQSB1c2VyIGhhcyBzdWJzY3JpYmVkCgpBIHVzZXIgaGFzIHN1YnNjcmliZWQgdG8gPGlucDptX3BhZ2VfdGl0bGUgLz4gbWFpbGluZyBsaXN0Lg==
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogQ2hlY2sgb3V0IHRoaXMgc2l0ZQoKSGksDQoNClRoaXMgbWVzc2FnZSBoYXMgYmVlbiBzZW50IHRvIHlvdSBmcm9tIG9uZSBvZiB5b3VyIGZyaWVuZHMuDQpDaGVjayBvdXQgdGhpcyBzaXRlOiA8YSBocmVmPSI8aW5wOm1fdGhlbWVfdXJsIF9wYWdlPSJjdXJyZW50Ii8+Ij48aW5wOm1fcGFnZV90aXRsZSAvPjwvYT4h
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVGhlIHNpdGUgaGFzIGJlZW4gc3VnZ2VzdGVkCgpBIHZpc2l0b3Igc3VnZ2VzdGVkIHlvdXIgc2l0ZSB0byBhIGZyaWVuZC4=
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogWW91IGhhdmUgYmVlbiB1bnN1YnNjcmliZWQKCllvdSBoYXZlIHN1Y2Nlc3NmdWxseSB1bnN1YnNyaWJlZCBmcm9tIDxpbnA6bV9wYWdlX3RpdGxlIC8+IG1haWxpbmcgbGlzdC4=
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciB1bnN1YnNyaWJlZAoKQSB1c2VyIGhhcyB1bnN1YnNjcmliZWQu
+ WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEluLXBvcnRhbCByZWdpc3RyYXRpb24KCldlbGNvbWUgdG8gSW4tcG9ydGFsIQ0KDQpZb3VyIHVzZXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIQ0KDQpZb3VyIHVzZXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkLiBZb3UgY2FuIGxvZ2luIG5vdyB1c2luZyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOg0KDQo9PT09PT09PT09PT09PT09PT0NClVzZXJuYW1lOiAiPGlucDp0b3VzZXIgX0ZpZWxkPSJVc2VyTmFtZSIgLz4iDQpQYXNzd29yZDogIjxpbnA6dG91c2VyIF9GaWVsZD0icGFzc3dvcmQiIC8+Ig0KPT09PT09PT09PT09PT09PT09DQo=
+ WC1Qcmlvcml0eTogMQ0KWC1NU01haWwtUHJpb3JpdHk6IEhpZ2gNClgtTWFpbGVyOiBJbi1Qb3J0YWwKU3ViamVjdDogVXNlciB2YWxpZGF0ZWQKClVzZXIgIjxpbnA6dG91c2VyIF9GaWVsZD0iVXNlck5hbWUiIC8+IiBoYXMgYmVlbiB2YWxpZGF0ZWQu
+
+
+
\ No newline at end of file
Index: branches/RC/core/install/install_toolkit.php
===================================================================
diff -u -N
--- branches/RC/core/install/install_toolkit.php (revision 0)
+++ branches/RC/core/install/install_toolkit.php (revision 10832)
@@ -0,0 +1,681 @@
+Application =& kApplication::Instance();
+ $this->Conn =& $this->Application->GetADODBConnection();
+ }
+
+ $this->INIFile = FULL_PATH . '/config.php';
+
+ $this->systemConfig = $this->ParseConfig(true);
+ }
+
+ /**
+ * Sets installator
+ *
+ * @param kInstallator $instance
+ */
+ function setInstallator(&$instance)
+ {
+ $this->_installator =& $instance;
+ }
+
+ /**
+ * Checks prerequisities before module install or upgrade
+ *
+ * @param string $module_path
+ * @param string $versions
+ * @param string $mode upgrade mode = {install, standalone, upgrade}
+ */
+ function CheckPrerequisites($module_path, $versions, $mode)
+ {
+ $prerequisites_file = sprintf(PREREQUISITE_FILE, $module_path);
+ if (!file_exists($prerequisites_file) || !$versions) {
+ return Array ();
+ }
+
+ include_once $prerequisites_file;
+
+ $prerequisite_object = new $prerequisite_class();
+ if (method_exists($prerequisite_object, 'setToolkit')) {
+ $prerequisite_object->setToolkit(&$this);
+ }
+
+ // some errors possible
+ return $prerequisite_object->CheckPrerequisites($versions, $mode);
+ }
+
+ /**
+ * Processes one license, received from server
+ *
+ * @param string $file_data
+ */
+ function processLicense($file_data)
+ {
+ $modules_helper =& $this->Application->recallObject('ModulesHelper');
+ /* @var $modules_helper kModulesHelper */
+
+ $file_data = explode('Code==:', $file_data);
+ $file_data[0] = str_replace('In-Portal License File - do not edit!' . "\n", '', $file_data[0]);
+ $file_data = array_map('trim', $file_data);
+
+ if ($modules_helper->verifyLicense($file_data[0])) {
+ $this->setSystemConfig('Intechnic', 'License', $file_data[0]);
+ if (array_key_exists(1, $file_data)) {
+ $this->setSystemConfig('Intechnic', 'LicenseCode', $file_data[1]);
+ }
+ else {
+ $this->setSystemConfig('Intechnic', 'LicenseCode');
+ }
+ $this->SaveConfig();
+ }
+ else {
+ // invalid license received from licensing server
+ $this->_installator->errorMessage = 'Invalid License File';
+ }
+ }
+
+ /**
+ * Saves given configuration values to database
+ *
+ * @param Array $config
+ */
+ function saveConfigValues($config)
+ {
+ foreach ($config as $config_var => $value) {
+ $sql = 'UPDATE ' . TABLE_PREFIX . 'ConfigurationValues
+ SET VariableValue = ' . $this->Conn->qstr($value) . '
+ WHERE VariableName = ' . $this->Conn->qstr($config_var);
+ $this->Conn->Query($sql);
+ }
+ }
+
+ /**
+ * Sets module version to passed
+ *
+ * @param string $module_name
+ * @param string $version
+ */
+ function SetModuleVersion($module_name, $version = false)
+ {
+ if ($version === false) {
+ $version = $this->GetMaxModuleVersion($module_name);
+ }
+
+ // get table prefix from config, because application may not be available here
+ $table_prefix = $this->getSystemConfig('Database', 'TablePrefix');
+
+ if ($module_name == 'kernel') {
+ $module_name = 'in-portal';
+ }
+
+ $sql = 'UPDATE ' . $table_prefix . 'Modules
+ SET Version = "' . $version . '"
+ WHERE LOWER(Name) = "' . strtolower($module_name) . '"';
+ $this->Conn->Query($sql);
+ }
+
+ /**
+ * Sets module root category to passed
+ *
+ * @param string $module_name
+ * @param string $category_id
+ */
+ function SetModuleRootCategory($module_name, $category_id = 0)
+ {
+ // get table prefix from config, because application may not be available here
+ $table_prefix = $this->getSystemConfig('Database', 'TablePrefix');
+
+ if ($module_name == 'kernel') {
+ $module_name = 'in-portal';
+ }
+
+ $sql = 'UPDATE ' . $table_prefix . 'Modules
+ SET RootCat = ' . $category_id . '
+ WHERE LOWER(Name) = "' . strtolower($module_name) . '"';
+ $this->Conn->Query($sql);
+ }
+
+ /**
+ * Returns maximal version of given module by scanning it's upgrade scripts
+ *
+ * @param string $module_name
+ * @return string
+ */
+ function GetMaxModuleVersion($module_name)
+ {
+ $upgrades_file = sprintf(UPGRADES_FILE, mb_strtolower($module_name).'/', 'sql');
+ if (!file_exists($upgrades_file)) {
+ // no upgrade file
+ return '4.0.1';
+ }
+
+ $sqls = file_get_contents($upgrades_file);
+ $versions_found = preg_match_all('/'.VERSION_MARK.'/s', $sqls, $regs);
+ if (!$versions_found) {
+ // upgrades file doesn't contain version definitions
+ return '4.0.1';
+ }
+
+ return end($regs[1]);
+ }
+
+ /**
+ * Runs SQLs from file
+ *
+ * @param string $filename
+ * @param mixed $replace_from
+ * @param mixed $replace_to
+ */
+ function RunSQL($filename, $replace_from = null, $replace_to = null)
+ {
+ if (!file_exists(FULL_PATH.$filename)) {
+ return ;
+ }
+
+ $sqls = file_get_contents(FULL_PATH.$filename);
+ if (!$this->RunSQLText($sqls, $replace_from, $replace_to)) {
+ if (is_object($this->_installator)) {
+ $this->_installator->Done();
+ }
+ else {
+ if (isset($this->Application)) {
+ $this->Application->Done();
+ }
+
+ exit;
+ }
+ }
+ }
+
+ /**
+ * Runs SQLs from string
+ *
+ * @param string $sqls
+ * @param mixed $replace_from
+ * @param mixed $replace_to
+ */
+ function RunSQLText(&$sqls, $replace_from = null, $replace_to = null, $start_from=0)
+ {
+ $table_prefix = $this->getSystemConfig('Database', 'TablePrefix');
+
+ // add prefix to all tables
+ if (strlen($table_prefix) > 0) {
+ $replacements = Array ('CREATE TABLE ', 'INSERT INTO ', 'UPDATE ', 'ALTER TABLE ', 'DELETE FROM ', 'REPLACE INTO ');
+ foreach ($replacements as $replacement) {
+ $sqls = str_replace($replacement, $replacement.$table_prefix, $sqls);
+ }
+ $sqls = str_replace('DROP TABLE ', 'DROP TABLE IF EXISTS '.$table_prefix, $sqls);
+ }
+
+ if (isset($replace_from) && isset($replace_to)) {
+ // replace something additionally, e.g. module root category
+ $sqls = str_replace($replace_from, $replace_to, $sqls);
+ }
+
+ $sqls = str_replace("\r\n", "\n", $sqls); // convert to linux line endings
+ $sqls = preg_replace("/#([^;]*?)\n/", '', $sqls); // remove all comments
+ $sqls = explode(";\n", $sqls . "\n"); // ensures that last sql won't have ";" in it
+
+ $db_collation = $this->getSystemConfig('Database', 'DBCollation');
+ for ($i=$start_from; $i add collation
+ $sql .= ' COLLATE \'' . $db_collation . '\'';
+ }
+
+ $this->Conn->Query($sql);
+ if ($this->Conn->getErrorCode() != 0) {
+ if (is_object($this->_installator)) {
+ $this->_installator->errorMessage = 'Error: ('.$this->Conn->getErrorCode().') '.$this->Conn->getErrorMsg().'
Last Database Query: ';
+ $this->_installator->LastQueryNum = $i + 1;
+ }
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Performs clean language import from given xml file
+ *
+ * @param string $lang_file
+ * @param bool $upgrade
+ */
+ function ImportLanguage($lang_file, $upgrade = false)
+ {
+ $lang_file = FULL_PATH.$lang_file.'.lang';
+ if (!file_exists($lang_file)) {
+ return ;
+ }
+
+ $lang_xml =& $this->Application->recallObject('LangXML');
+ /* @var $lang_xml LangXML_Parser */
+
+ $lang_xml->Parse($lang_file, '|0|1|2|', '', $upgrade ? LANG_SKIP_EXISTING : LANG_OVERWRITE_EXISTING);
+ }
+
+ /**
+ * Converts module version in format X.Y.Z to signle integer
+ *
+ * @param string $version
+ * @return int
+ */
+ function ConvertModuleVersion($version)
+ {
+ $parts = explode('.', $version);
+
+ $bin = '';
+ foreach ($parts as $part) {
+ $bin .= str_pad(decbin($part), 8, '0', STR_PAD_LEFT);
+ }
+
+ return bindec($bin);
+ }
+
+ /**
+ * Returns themes, found in system
+ *
+ * @param bool $rebuild
+ * @return int
+ */
+ function getThemes($rebuild = false)
+ {
+ if ($rebuild) {
+ $this->rebuildThemes();
+ }
+
+ $id_field = $this->Application->getUnitOption('theme', 'IDField');
+ $table_name = $this->Application->getUnitOption('theme', 'TableName');
+
+ $sql = 'SELECT Name, ' . $id_field . '
+ FROM ' . $table_name;
+ return $this->Conn->GetCol($sql, $id_field);
+ }
+
+ function ParseConfig($parse_section = false)
+ {
+ if (!file_exists($this->INIFile)) {
+ return Array();
+ }
+
+ if( file_exists($this->INIFile) && !is_readable($this->INIFile) ) {
+ die('Could Not Open Ini File');
+ }
+
+ $contents = file($this->INIFile);
+
+ $retval = Array();
+ $section = '';
+ $ln = 1;
+ $resave = false;
+ foreach ($contents as $line) {
+ if ($ln == 1 && $line != '<'.'?'.'php die() ?'.">\n") {
+ $resave = true;
+ }
+
+ $ln++;
+ $line = trim($line);
+ $line = eregi_replace(';[.]*','',$line);
+ if (strlen($line) > 0) {
+ //echo $line . " - ";
+ if(eregi('^[[a-z]+]$',str_replace(' ', '', $line))) {
+ //echo 'section';
+ $section = mb_substr($line, 1, (mb_strlen($line) - 2));
+ if ($parse_section) {
+ $retval[$section] = array();
+ }
+ continue;
+ } elseif (eregi('=',$line)) {
+ //echo 'main element';
+ list ($key, $val) = explode(' = ', $line);
+ if (!$parse_section) {
+ $retval[trim($key)] = str_replace('"', '', $val);
+ }
+ else {
+ $retval[$section][trim($key)] = str_replace('"', '', $val);
+ }
+ }
+ }
+ }
+
+ if ($resave) {
+ $fp = fopen($this->INIFile, 'w');
+ reset($contents);
+ fwrite($fp,'<'.'?'.'php die() ?'.">\n\n");
+ foreach ($contents as $line) {
+ fwrite($fp,"$line");
+ }
+ fclose($fp);
+ }
+
+ return $retval;
+ }
+
+ function SaveConfig()
+ {
+ if (!is_writeable($this->INIFile)) {
+ trigger_error('Cannot write to "' . $this->INIFile . '" file.', E_USER_ERROR);
+ return ;
+ }
+
+ $fp = fopen($this->INIFile, 'w');
+ fwrite($fp,'<'.'?'.'php die() ?'.">\n\n");
+
+ foreach ($this->systemConfig as $section_name => $section_data) {
+ fwrite($fp, '['.$section_name."]\n");
+ foreach ($section_data as $key => $value) {
+ fwrite($fp, $key.' = "'.$value.'"'."\n");
+ }
+ fwrite($fp, "\n");
+ }
+ fclose($fp);
+ }
+
+ /**
+ * Sets value to system config (yet SaveConfig must be called to write it to file)
+ *
+ * @param string $section
+ * @param string $key
+ * @param string $value
+ */
+ function setSystemConfig($section, $key, $value = null)
+ {
+ if (isset($value)) {
+ if (!array_key_exists($section, $this->systemConfig)) {
+ // create section, when missing
+ $this->systemConfig[$section] = Array ();
+ }
+
+ // create key in section
+ $this->systemConfig[$section][$key] = $value;
+ return ;
+ }
+
+ unset($this->systemConfig[$section][$key]);
+ }
+
+ /**
+ * Returns information from system config
+ *
+ * @return string
+ */
+ function getSystemConfig($section, $key)
+ {
+ if (!array_key_exists($section, $this->systemConfig)) {
+ return false;
+ }
+
+ if (!array_key_exists($key, $this->systemConfig[$section])) {
+ return false;
+ }
+
+ return $this->systemConfig[$section][$key] ? $this->systemConfig[$section][$key] : false;
+ }
+
+ /**
+ * Checks if system config is present and is not empty
+ *
+ * @return bool
+ */
+ function systemConfigFound()
+ {
+ return file_exists($this->INIFile) && $this->systemConfig;
+ }
+
+ /**
+ * Checks if given section is present in config
+ *
+ * @param string $section
+ * @return bool
+ */
+ function sectionFound($section)
+ {
+ return array_key_exists($section, $this->systemConfig);
+ }
+
+ /**
+ * Returns formatted module name based on it's root folder
+ *
+ * @param string $module_folder
+ * @return string
+ */
+ function getModuleName($module_folder)
+ {
+ if ($module_folder == 'kernel') {
+ $module_folder = 'in-portal';
+ }
+
+ return implode('-', array_map('ucfirst', explode('-', $module_folder)));
+ }
+
+ /**
+ * Creates module root category in "Home" category using given data and returns it
+ *
+ * @param string $name
+ * @param string $description
+ * @param string $category_template
+ * @param string $status
+ * @return kDBItem
+ */
+ function &createModuleCategory($name, $description, $category_template = null, $status = 1)
+ {
+ static $fields = null;
+
+ if (!isset($fields)) {
+ $ml_formatter =& $this->Application->recallObject('kMultiLanguage');
+
+ $fields['name'] = $ml_formatter->LangFieldName('Name');
+ $fields['description'] = $ml_formatter->LangFieldName('Description');
+ }
+
+ $category =& $this->Application->recallObject('c', null, Array ('skip_autoload' => true));
+ /* @var $category kDBItem */
+
+ $category_fields = Array (
+ $fields['name'] => $name, 'Filename' => $name, 'AutomaticFilename' => 1,
+ $fields['description'] => $description, 'Status' => $status, 'ParentId' => 0,
+ );
+
+ if (isset($category_template)) {
+ $category_fields['CategoryTemplate'] = $category_template;
+ $category_fields['CachedCategoryTemplate'] = $category_template;
+ }
+
+ $category->Clear();
+ $category->SetDBFieldsFromHash($category_fields);
+
+ $category->Create();
+
+ return $category;
+ }
+
+ /**
+ * Sets category item template into custom field for given prefix
+ *
+ * @param kDBItem $category
+ * @param string $prefix
+ * @param string $item_template
+ */
+ function setModuleItemTemplate(&$category, $prefix, $item_template)
+ {
+ $this->Application->removeObject('c-cdata');
+
+ $category->defineFields();
+ $category->SetDBField('cust_' . $prefix .'_ItemTemplate', $item_template);
+ $category->Update();
+ }
+
+ /**
+ * Link custom field records with search config records + create custom field columns
+ *
+ * @param string $module_folder
+ * @param int $item_type
+ */
+ function linkCustomFields($module_folder, $prefix, $item_type)
+ {
+ $module_folder = strtolower($module_folder);
+ $module_name = ($module_folder == 'kernel') ? 'in-portal' : $module_folder;
+
+ $db =& $this->Application->GetADODBConnection();
+
+ $sql = 'SELECT FieldName, CustomFieldId
+ FROM ' . TABLE_PREFIX . 'CustomField
+ WHERE Type = ' . $item_type . ' AND IsSystem = 0'; // config is not read here yet :( $this->Application->getUnitOption('p', 'ItemType');
+ $custom_fields = $db->GetCol($sql, 'CustomFieldId');
+
+ foreach ($custom_fields as $cf_id => $cf_name) {
+ $sql = 'UPDATE ' . TABLE_PREFIX . 'SearchConfig
+ SET CustomFieldId = ' . $cf_id . '
+ WHERE (TableName = "CustomField") AND (LOWER(ModuleName) = "' . $module_name . '") AND (FieldName = ' . $db->qstr($cf_name) . ')';
+ $db->Query($sql);
+ }
+
+ $this->Application->refreshModuleInfo(); // this module configs are now processed
+
+ // because of configs was read only from installed before modules (in-portal), then reread configs
+ $unit_config_reader =& $this->Application->recallObject('kUnitConfigReader');
+ $unit_config_reader->scanModules(MODULES_PATH . '/' . $module_folder);
+
+ // create correct columns in CustomData table
+ $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper');
+ $ml_helper->createFields($prefix . '-cdata', true);
+ }
+
+ /**
+ * Deletes cache, useful after separate module install and installator last step
+ *
+ */
+ function deleteCache($refresh_permissions = false)
+ {
+ $sql = 'DELETE FROM ' . TABLE_PREFIX . 'Cache
+ WHERE VarName IN ("config_files", "configs_parsed", "sections_parsed")';
+ $this->Conn->Query($sql);
+
+ if ($refresh_permissions) {
+ if ($this->Application->isModuleEnabled('In-Portal')) {
+ // refresh permissions with ajax progress bar (when available)
+ $fields_hash = Array (
+ 'VarName' => 'ForcePermCacheUpdate',
+ 'Data' => 1,
+ );
+
+ $this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'Cache');
+ }
+ else {
+ // refresh permission without progress bar
+ $updater =& $this->Application->recallObject('kPermCacheUpdater');
+ /* @var $updater kPermCacheUpdater */
+
+ $updater->OneStepRun();
+ }
+ }
+ }
+
+ /**
+ * Perform redirect after separate module install
+ *
+ * @param string $module_folder
+ * @param bool $refresh_permissions
+ */
+ function finalizeModuleInstall($module_folder, $refresh_permissions = false)
+ {
+ if (!$this->Application->GetVar('redirect')) {
+ return ;
+ }
+
+ $this->SetModuleVersion($module_folder);
+
+ $this->deleteCache($refresh_permissions);
+
+ $url_params = Array (
+ 'pass' => 'm', 'admin' => 1,
+ 'RefreshTree' => 1, 'index_file' => 'index.php',
+ );
+ $this->Application->Redirect('modules/modules_list', $url_params);
+ }
+
+ /**
+ * Performs rebuild of themes
+ *
+ */
+ function rebuildThemes()
+ {
+ $this->Application->HandleEvent($themes_event, 'adm:OnRebuildThemes');
+ }
+ }
\ No newline at end of file
Index: branches/RC/kernel/install/prerequisites.php
===================================================================
diff -u -N
--- branches/RC/kernel/install/prerequisites.php (revision 0)
+++ branches/RC/kernel/install/prerequisites.php (revision 10832)
@@ -0,0 +1,50 @@
+_toolkit =& $instance;
+ }
+
+ /**
+ * Checks minimal version, that could be upgradeable
+ *
+ * @param string $mode when called mode {install, upgrade)
+ */
+ function CheckPrerequisites($versions, $mode)
+ {
+ $errors = Array ();
+
+ if ($mode == 'upgrade') {
+ $min_version = '4.3.2';
+
+ $current_version = $this->_toolkit->ConvertModuleVersion($versions[0]);
+ $needed_version = $this->_toolkit->ConvertModuleVersion($min_version);
+ if ($current_version < $needed_version) {
+ $errors[] = 'Please upgrade "In-Portal" to version ' . $min_version . ' or above';
+ }
+ }
+
+ return $errors;
+ }
+ }
+
+?>
\ No newline at end of file
Index: branches/RC/core/install/step_templates/db_reconfig.tpl
===================================================================
diff -u -N
--- branches/RC/core/install/step_templates/db_reconfig.tpl (revision 0)
+++ branches/RC/core/install/step_templates/db_reconfig.tpl (revision 10832)
@@ -0,0 +1,67 @@
+
+ Server Type*: |
+
+
+ |
+
+
+
+ Hostname*: |
+
+
+ |
+
+
+
+ Database Name*: |
+
+
+ |
+
+
+
+ Database Collation*: |
+
+
+ |
+
+
+
+ Database User Name*: |
+
+
+ |
+
+
+
+ Database User Password: |
+
+
+ |
+
+
+
+ Table Name Prefix: |
+
+
+ |
+
\ No newline at end of file
Index: branches/RC/core/units/custom_data/custom_data_event_handler.php
===================================================================
diff -u -N -r10492 -r10832
--- branches/RC/core/units/custom_data/custom_data_event_handler.php (.../custom_data_event_handler.php) (revision 10492)
+++ branches/RC/core/units/custom_data/custom_data_event_handler.php (.../custom_data_event_handler.php) (revision 10832)
@@ -69,6 +69,9 @@
function OnAfterConfigRead(&$event)
{
$main_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix');
+ if (!$main_prefix) {
+ return false;
+ }
$custom_fields = $this->scanCustomFields($main_prefix);
if (!$custom_fields) {
Index: branches/RC/kernel/install/install_data.sql
===================================================================
diff -u -N
--- branches/RC/kernel/install/install_data.sql (revision 0)
+++ branches/RC/kernel/install/install_data.sql (revision 10832)
@@ -0,0 +1,243 @@
+INSERT INTO ConfigurationAdmin VALUES ('AllowDeleteRootCats', 'la_Text_General', 'la_AllowDeleteRootCats', 'checkbox', NULL , NULL , 10.09, 0, 0);
+INSERT INTO ConfigurationAdmin VALUES ('Catalog_PreselectModuleTab', 'la_Text_General', 'la_config_CatalogPreselectModuleTab', 'checkbox', NULL, NULL, 10.10, 0, 1);
+INSERT INTO ConfigurationAdmin VALUES ('RecycleBinFolder', 'la_Text_General', 'la_config_RecycleBinFolder', 'text', NULL , NULL , 10.11, 0, 0);
+
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'AllowDeleteRootCats', '0', 'In-Portal', 'in-portal:configure_categories');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Catalog_PreselectModuleTab', 1, 'In-Portal', 'in-portal:configure_categories');
+INSERT INTO ConfigurationValues VALUES (DEFAULT, 'RecycleBinFolder', '', 'In-Portal', 'in-portal:configure_categories');
+
+INSERT INTO ItemTypes VALUES (1, 'In-Portal', 'c', 'Category', 'Name', 'CreatedById', NULL, NULL, 'la_ItemTab_Categories', 1, 'admin/category/addcategory.php', 'clsCategory', 'Category');
+INSERT INTO ItemTypes VALUES (6, 'In-Portal', 'u', 'PortalUser', 'Login', 'PortalUserId', NULL, NULL, '', 0, '', 'clsPortalUser', 'User');
+
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'CATEGORY.ADD', 'lu_PermName_Category.Add_desc', 'lu_PermName_Category.Add_error', 'In-Portal');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'CATEGORY.DELETE', 'lu_PermName_Category.Delete_desc', 'lu_PermName_Category.Delete_error', 'In-Portal');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'CATEGORY.ADD.PENDING', 'lu_PermName_Category.AddPending_desc', 'lu_PermName_Category.AddPending_error', 'In-Portal');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'CATEGORY.MODIFY', 'lu_PermName_Category.Modify_desc', 'lu_PermName_Category.Modify_error', 'In-Portal');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'ADMIN', 'lu_PermName_Admin_desc', 'lu_PermName_Admin_error', 'Admin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'LOGIN', 'lu_PermName_Login_desc', 'lu_PermName_Admin_error', 'Front');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'DEBUG.ITEM', 'lu_PermName_Debug.Item_desc', '', 'Admin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'DEBUG.LIST', 'lu_PermName_Debug.List_desc', '', 'Admin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'DEBUG.INFO', 'lu_PermName_Debug.Info_desc', '', 'Admin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'PROFILE.MODIFY', 'lu_PermName_Profile.Modify_desc', '', 'Admin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'SHOWLANG', 'lu_PermName_ShowLang_desc', '', 'Admin');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'FAVORITES', 'lu_PermName_favorites_desc', 'lu_PermName_favorites_error', 'In-Portal');
+INSERT INTO PermissionConfig VALUES (DEFAULT, 'SYSTEM_ACCESS.READONLY', 'la_PermName_SystemAccess.ReadOnly_desc', 'la_PermName_SystemAccess.ReadOnly_error', 'Admin');
+
+INSERT INTO Permissions VALUES (DEFAULT, 'LOGIN', 12, 1, 1, 0);
+
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:site.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:browse.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:advanced_view.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:reviews.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_categories.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_categories.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_search.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_search.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_email.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_email.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_custom.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_custom.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_custom.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configuration_custom.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:users.view', 11, 1, 1, 0);
+
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_list.advanced:ban', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_list.advanced:send_email', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_groups.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_groups.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_groups.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_groups.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_groups.advanced:send_email', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_groups.advanced:manage_permissions', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_users.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_users.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_email.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_email.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_custom.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_custom.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_custom.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_custom.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_banlist.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_banlist.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_banlist.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:user_banlist.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:reports.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:log_summary.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:searchlog.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:searchlog.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:sessionlog.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:sessionlog.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:emaillog.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:emaillog.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:visits.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:visits.delete', 11, 1, 1, 0);
+
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_general.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_general.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:modules.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:mod_status.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:mod_status.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:mod_status.advanced:approve', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:mod_status.advanced:decline', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:addmodule.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:addmodule.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:addmodule.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:tag_library.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_themes.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_themes.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_themes.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_themes.delete', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_styles.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_styles.add', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_styles.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_styles.delete', 11, 1, 1, 0);
+
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_lang.advanced:set_primary', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_lang.advanced:import', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:configure_lang.advanced:export', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:tools.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:backup.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:restore.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:export.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:main_import.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:sql_query.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:sql_query.edit', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:server_info.view', 11, 1, 1, 0);
+INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:help.view', 11, 1, 1, 0);
+
+INSERT INTO SearchConfig VALUES ('Category', 'NewItem', 0, 1, 'lu_fielddesc_category_newitem', 'lu_field_newitem', 'In-Portal', 'la_text_category', 18, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'PopItem', 0, 1, 'lu_fielddesc_category_popitem', 'lu_field_popitem', 'In-Portal', 'la_text_category', 19, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'HotItem', 0, 1, 'lu_fielddesc_category_hotitem', 'lu_field_hotitem', 'In-Portal', 'la_text_category', 17, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'MetaDescription', 0, 1, 'lu_fielddesc_category_metadescription', 'lu_field_metadescription', 'In-Portal', 'la_text_category', 16, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'ParentPath', 0, 1, 'lu_fielddesc_category_parentpath', 'lu_field_parentpath', 'In-Portal', 'la_text_category', 15, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'ResourceId', 0, 1, 'lu_fielddesc_category_resourceid', 'lu_field_resourceid', 'In-Portal', 'la_text_category', 14, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'CreatedById', 0, 1, 'lu_fielddesc_category_createdbyid', 'lu_field_createdbyid', 'In-Portal', 'la_text_category', 13, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'CachedNavbar', 0, 1, 'lu_fielddesc_category_cachednavbar', 'lu_field_cachednavbar', 'In-Portal', 'la_text_category', 12, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'CachedDescendantCatsQty', 0, 1, 'lu_fielddesc_category_cacheddescendantcatsqty', 'lu_field_cacheddescendantcatsqty', 'In-Portal', 'la_text_category', 11, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'MetaKeywords', 0, 1, 'lu_fielddesc_category_metakeywords', 'lu_field_metakeywords', 'In-Portal', 'la_text_category', 10, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'Priority', 0, 1, 'lu_fielddesc_category_priority', 'lu_field_priority', 'In-Portal', 'la_text_category', 9, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'Status', 0, 1, 'lu_fielddesc_category_status', 'lu_field_status', 'In-Portal', 'la_text_category', 7, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'EditorsPick', 0, 1, 'lu_fielddesc_category_editorspick', 'lu_field_editorspick', 'In-Portal', 'la_text_category', 6, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'CreatedOn', 0, 1, 'lu_fielddesc_category_createdon', 'lu_field_createdon', 'In-Portal', 'la_text_category', 5, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'Description', 1, 1, 'lu_fielddesc_category_description', 'lu_field_description', 'In-Portal', 'la_text_category', 4, DEFAULT, 2, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'Name', 1, 1, 'lu_fielddesc_category_name', 'lu_field_name', 'In-Portal', 'la_text_category', 3, DEFAULT, 2, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'ParentId', 0, 1, 'lu_fielddesc_category_parentid', 'lu_field_parentid', 'In-Portal', 'la_text_category', 2, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'CategoryId', 0, 1, 'lu_fielddesc_category_categoryid', 'lu_field_categoryid', 'In-Portal', 'la_text_category', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'Modified', 0, 1, 'lu_fielddesc_category_modified', 'lu_field_modified', 'In-Portal', 'la_text_category', 20, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('Category', 'ModifiedById', 0, 1, 'lu_fielddesc_category_modifiedbyid', 'lu_field_modifiedbyid', 'In-Portal', 'la_text_category', 21, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+INSERT INTO SearchConfig VALUES ('PortalUser', 'PortalUserId', -1, 0, 'lu_fielddesc_user_portaluserid', 'lu_field_portaluserid', 'In-Portal', 'la_text_user', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Login', -1, 0, 'lu_fielddesc_user_login', 'lu_field_login', 'In-Portal', 'la_text_user', 1, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Password', -1, 0, 'lu_fielddesc_user_password', 'lu_field_password', 'In-Portal', 'la_text_user', 2, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'tz', -1, 0, 'lu_fielddesc_user_tz', 'lu_field_tz', 'In-Portal', 'la_text_user', 17, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'dob', -1, 0, 'lu_fielddesc_user_dob', 'lu_field_dob', 'In-Portal', 'la_text_user', 16, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Modified', -1, 0, 'lu_fielddesc_user_modified', 'lu_field_modified', 'In-Portal', 'la_text_user', 15, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Status', -1, 0, 'lu_fielddesc_user_status', 'lu_field_status', 'In-Portal', 'la_text_user', 14, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'ResourceId', -1, 0, 'lu_fielddesc_user_resourceid', 'lu_field_resourceid', 'In-Portal', 'la_text_user', 13, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Country', -1, 0, 'lu_fielddesc_user_country', 'lu_field_country', 'In-Portal', 'la_text_user', 12, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Zip', -1, 0, 'lu_fielddesc_user_zip', 'lu_field_zip', 'In-Portal', 'la_text_user', 11, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'State', -1, 0, 'lu_fielddesc_user_state', 'lu_field_state', 'In-Portal', 'la_text_user', 10, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'City', -1, 0, 'lu_fielddesc_user_city', 'lu_field_city', 'In-Portal', 'la_text_user', 9, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Street', -1, 0, 'lu_fielddesc_user_street', 'lu_field_street', 'In-Portal', 'la_text_user', 8, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Phone', -1, 0, 'lu_fielddesc_user_phone', 'lu_field_phone', 'In-Portal', 'la_text_user', 7, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'CreatedOn', -1, 0, 'lu_fielddesc_user_createdon', 'lu_field_createdon', 'In-Portal', 'la_text_user', 6, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'Email', -1, 0, 'lu_fielddesc_user_email', 'lu_field_email', 'In-Portal', 'la_text_user', 5, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'LastName', -1, 0, 'lu_fielddesc_user_lastname', 'lu_field_lastname', 'In-Portal', 'la_text_user', 4, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO SearchConfig VALUES ('PortalUser', 'FirstName', -1, 0, 'lu_fielddesc_user_firstname', 'lu_field_firstname', 'In-Portal', 'la_text_user', 3, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT count(*) FROM <%prefix%>Category WHERE Status=1 ', NULL, 'la_prompt_ActiveCategories', '0', '1');
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT count(*) FROM <%prefix%>PortalUser WHERE Status=1 ', NULL, 'la_prompt_ActiveUsers', '0', '1');
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT count(*) FROM <%prefix%>UserSession', NULL, 'la_prompt_CurrentSessions', '0', '1');
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) as CategoryCount FROM <%prefix%>Category', NULL, 'la_prompt_TotalCategories', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS ActiveCategories FROM <%prefix%>Category WHERE Status = 1', NULL, 'la_prompt_ActiveCategories', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS PendingCategories FROM <%prefix%>Category WHERE Status = 2', NULL, 'la_prompt_PendingCategories', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS DisabledCategories FROM <%prefix%>Category WHERE Status = 0', NULL, 'la_prompt_DisabledCategories', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS NewCategories FROM <%prefix%>Category WHERE (NewItem = 1) OR ( (UNIX_TIMESTAMP() - CreatedOn) <= <%m:config name="Category_DaysNew"%>*86400 AND (NewItem = 2) )', NULL, 'la_prompt_NewCategories', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) FROM <%prefix%>Category WHERE EditorsPick = 1', NULL, 'la_prompt_CategoryEditorsPick', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="date"%> FROM <%prefix%>Category', NULL, 'la_prompt_NewestCategoryDate', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT <%m:post_format field="MAX(Modified)" type="date"%> FROM <%prefix%>Category', NULL, 'la_prompt_LastCategoryUpdate', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS TotalUsers FROM <%prefix%>PortalUser', NULL, 'la_prompt_TopicsUsers', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS ActiveUsers FROM <%prefix%>PortalUser WHERE Status = 1', NULL, 'la_prompt_UsersActive', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS PendingUsers FROM <%prefix%>PortalUser WHERE Status = 2', NULL, 'la_prompt_UsersPending', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS DisabledUsers FROM <%prefix%>PortalUser WHERE Status = 0', NULL, 'la_prompt_UsersDisabled', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="date"%> FROM <%prefix%>PortalUser', NULL, 'la_prompt_NewestUserDate', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT( DISTINCT LOWER( Country ) ) FROM <%prefix%>PortalUser WHERE LENGTH(Country) > 0', NULL, 'la_prompt_UsersUniqueCountries', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT( DISTINCT LOWER( State ) ) FROM <%prefix%>PortalUser WHERE LENGTH(State) > 0', NULL, 'la_prompt_UsersUniqueStates', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS TotalUserGroups FROM <%prefix%>PortalGroup', NULL, 'la_prompt_TotalUserGroups', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS BannedUsers FROM <%prefix%>PortalUser WHERE IsBanned = 1', NULL, 'la_prompt_BannedUsers', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS NonExipedSessions FROM <%prefix%>UserSession WHERE Status = 1', NULL, 'la_prompt_NonExpiredSessions', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS ThemeCount FROM <%prefix%>Theme', NULL, 'la_prompt_ThemeCount', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', 'SELECT COUNT(*) AS RegionsCount FROM <%prefix%>Language', NULL, 'la_prompt_RegionsCount', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', '<%m:sql_action sql="SHOW+TABLES" action="COUNT" field="*"%>', NULL, 'la_prompt_TablesCount', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', '<%m:sql_action sql="SHOW+TABLE+STATUS" action="SUM" field="Rows"%>', NULL, 'la_prompt_RecordsCount', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', '<%m:custom_action sql="empty" action="SysFileSize"%>', NULL, 'la_prompt_SystemFileSize', 0, 2);
+INSERT INTO StatItem VALUES (DEFAULT, 'In-Portal', '<%m:sql_action sql="SHOW+TABLE+STATUS" action="SUM" format_as="file" field="Data_length"%>', NULL, 'la_prompt_DataSize', 0, 2);
+
+INSERT INTO StylesheetSelectors VALUES (169, 8, 'Calendar''s selected days', '.calendar tbody .selected', 'a:0:{}', '', 1, 'font-weight: bold;\r\nbackground-color: #9ED7ED;\r\nborder: 1px solid #83B2C5;', 0);
+INSERT INTO StylesheetSelectors VALUES (118, 8, 'Data grid row', 'td.block-data-row', 'a:0:{}', '', 2, 'border-bottom: 1px solid #cccccc;', 48);
+INSERT INTO StylesheetSelectors VALUES (81, 8, '"More" link', 'a.link-more', 'a:0:{}', '', 2, 'text-decoration: underline;', 64);
+INSERT INTO StylesheetSelectors VALUES (88, 8, 'Block data, separated rows', 'td.block-data-grid', 'a:0:{}', '', 2, 'border: 1px solid #cccccc;', 48);
+INSERT INTO StylesheetSelectors VALUES (42, 8, 'Block Header', 'td.block-header', 'a:4:{s:5:"color";s:16:"rgb(0, 159, 240)";s:9:"font-size";s:4:"20px";s:11:"font-weight";s:6:"normal";s:7:"padding";s:3:"5px";}', 'Block Header', 1, 'font-family: Verdana, Helvetica, sans-serif;', 0);
+INSERT INTO StylesheetSelectors VALUES (76, 8, 'Navigation bar menu', 'tr.head-nav td', 'a:0:{}', '', 1, 'vertical-align: middle;', 0);
+INSERT INTO StylesheetSelectors VALUES (48, 8, 'Block data', 'td.block-data', 'a:2:{s:9:"font-size";s:5:"12px;";s:7:"padding";s:3:"5px";}', '', 1, '', 0);
+INSERT INTO StylesheetSelectors VALUES (78, 8, 'Body main style', 'body', 'a:0:{}', '', 1, 'padding: 0px; \r\nbackground-color: #ffffff; \r\nfont-family: arial, verdana, helvetica; \r\nfont-size: small;\r\nwidth: auto;\r\nmargin: 0px;', 0);
+INSERT INTO StylesheetSelectors VALUES (58, 8, 'Main table', 'table.main-table', 'a:0:{}', '', 1, 'width: 770px;\r\nmargin: 0px;\r\n/*table-layout: fixed;*/', 0);
+INSERT INTO StylesheetSelectors VALUES (79, 8, 'Block: header of data block', 'span.block-data-grid-header', 'a:0:{}', '', 1, 'font-family: Arial, Helvetica, sans-serif;\r\ncolor: #009DF6;\r\nfont-size: 12px;\r\nfont-weight: bold;\r\nbackground-color: #E6EEFF;\r\npadding: 6px;\r\nwhite-space: nowrap;', 0);
+INSERT INTO StylesheetSelectors VALUES (64, 8, 'Link', 'a', 'a:0:{}', '', 1, '', 0);
+INSERT INTO StylesheetSelectors VALUES (46, 8, 'Product title link', 'a.link-product1', 'a:0:{}', 'Product title link', 1, 'color: #62A1DE;\r\nfont-size: 14px;\r\nfont-weight: bold;\r\nline-height: 20px;\r\npadding-bottom: 10px;', 0);
+INSERT INTO StylesheetSelectors VALUES (75, 8, 'Copy of Main path link', 'table.main-path td a:hover', 'a:0:{}', '', 1, 'color: #ffffff;', 0);
+INSERT INTO StylesheetSelectors VALUES (160, 8, 'Current item in navigation bar', '.checkout-step-current', 'a:0:{}', '', 1, 'color: #A20303;\r\nfont-weight: bold;', 0);
+INSERT INTO StylesheetSelectors VALUES (51, 8, 'Right block data', 'td.right-block-data', 'a:1:{s:9:"font-size";s:4:"11px";}', '', 2, 'padding: 7px;\r\nbackground: #e3edf6 url("/in-commerce4/themes/default/img/bgr_login.jpg") repeat-y scroll left top;\r\nborder-bottom: 1px solid #64a1df;', 48);
+INSERT INTO StylesheetSelectors VALUES (67, 8, 'Pagination bar: text', 'table.block-pagination td', 'a:3:{s:5:"color";s:7:"#8B898B";s:9:"font-size";s:4:"12px";s:11:"font-weight";s:6:"normal";}', '', 1, '', 0);
+INSERT INTO StylesheetSelectors VALUES (45, 8, 'Category link', 'a.subcat', 'a:0:{}', 'Category link', 1, 'color: #2069A4', 0);
+INSERT INTO StylesheetSelectors VALUES (68, 8, 'Pagination bar: link', 'table.block-pagination td a', 'a:3:{s:5:"color";s:7:"#8B898B";s:9:"font-size";s:5:"12px;";s:11:"font-weight";s:6:"normal";}', '', 1, '', 0);
+INSERT INTO StylesheetSelectors VALUES (69, 8, 'Product description in product list', '.product-list-description', 'a:2:{s:5:"color";s:7:"#8B898B";s:9:"font-size";s:4:"12px";}', '', 1, '', 0);
+INSERT INTO StylesheetSelectors VALUES (73, 8, 'Main path link', 'table.main-path td a', 'a:0:{}', '', 1, 'color: #d5e231;', 0);
+INSERT INTO StylesheetSelectors VALUES (83, 8, 'Product title link in list (shopping cart)', 'a.link-product-cart', 'a:0:{}', 'Product title link', 1, 'color: #18559C;\r\nfont-size: 12px;\r\nfont-weight: bold;\r\ntext-decoration: none;\r\n\r\n', 0);
+INSERT INTO StylesheetSelectors VALUES (72, 8, 'Main path block text', 'table.main-path td', 'a:0:{}', '', 1, 'color: #ffffff;\r\nfont-size: 10px;\r\nfont-weight: normal;\r\npadding: 1px;\r\n', 0);
+INSERT INTO StylesheetSelectors VALUES (61, 8, 'Block: header of data table', 'td.block-data-grid-header', 'a:6:{s:4:"font";s:28:"Arial, Helvetica, sans-serif";s:5:"color";s:7:"#009DF6";s:9:"font-size";s:4:"12px";s:11:"font-weight";s:4:"bold";s:16:"background-color";s:7:"#E6EEFF";s:7:"padding";s:3:"6px";}', '', 1, 'white-space: nowrap;\r\npadding-left: 10px;\r\n/*\r\nbackground-image: url(/in-commerce4/themes/default/img/bullet1.gif);\r\nbackground-position: 10px 12px;\r\nbackground-repeat: no-repeat;\r\n*/', 0);
+INSERT INTO StylesheetSelectors VALUES (65, 8, 'Link in product list additional row', 'td.product-list-additional a', 'a:1:{s:5:"color";s:7:"#8B898B";}', '', 2, '', 64);
+INSERT INTO StylesheetSelectors VALUES (55, 8, 'Main table, left column', 'td.main-column-left', 'a:0:{}', '', 1, 'width:180px;\r\nborder: 1px solid #62A1DE;\r\nborder-top: 0px;', 0);
+INSERT INTO StylesheetSelectors VALUES (70, 8, 'Product title link in list (category)', 'a.link-product-category', 'a:0:{}', 'Product title link', 1, 'color: #18559C;\r\nfont-size: 12px;\r\nfont-weight: bold;\r\ntext-decoration: none;\r\n\r\n', 0);
+INSERT INTO StylesheetSelectors VALUES (66, 8, 'Pagination bar block', 'table.block-pagination', 'a:0:{}', '', 1, '', 0);
+INSERT INTO StylesheetSelectors VALUES (49, 8, 'Bulleted list inside block', 'td.block-data ul li', 'a:0:{}', '', 1, ' list-style-image: url(/in-commerce4/themes/default/img/bullet2.gif);\r\n margin-bottom: 10px;\r\n font-size: 11px;', 0);
+INSERT INTO StylesheetSelectors VALUES (87, 8, 'Cart item input form element', 'td.cart-item-atributes input', 'a:0:{}', '', 1, 'border: 1px solid #7BB2E6;', 0);
+INSERT INTO StylesheetSelectors VALUES (119, 8, 'Data grid row header', 'td.block-data-row-hdr', 'a:0:{}', 'Used in order preview', 2, 'background-color: #eeeeee;\r\nborder-bottom: 1px solid #dddddd;\r\nborder-top: 1px solid #cccccc;\r\nfont-weight: bold;', 48);
+INSERT INTO StylesheetSelectors VALUES (82, 8, '"More" link image', 'a.link-more img', 'a:0:{}', '', 2, 'text-decoration: none;\r\npadding-left: 5px;', 64);
+INSERT INTO StylesheetSelectors VALUES (63, 8, 'Additional info under product description in list', 'td.product-list-additional', 'a:5:{s:5:"color";s:7:"#8B898B";s:9:"font-size";s:4:"11px";s:11:"font-weight";s:6:"normal";s:10:"border-top";s:18:"1px dashed #8B898B";s:13:"border-bottom";s:18:"1px dashed #8B898B";}', '', 2, '', 48);
+INSERT INTO StylesheetSelectors VALUES (43, 8, 'Block', 'table.block', 'a:2:{s:16:"background-color";s:7:"#E3EEF9";s:6:"border";s:17:"1px solid #64A1DF";}', 'Block', 1, 'border: 0; \r\nmargin-bottom: 1px;\r\nwidth: 100%;', 0);
+INSERT INTO StylesheetSelectors VALUES (84, 8, 'Cart item cell', 'td.cart-item', 'a:0:{}', '', 1, 'background-color: #F6FAFF;\r\nborder-left: 1px solid #ffffff;\r\nborder-bottom: 1px solid #ffffff;\r\npadding: 4px;', 0);
+INSERT INTO StylesheetSelectors VALUES (57, 8, 'Main table, right column', 'td.main-column-right', 'a:0:{}', '', 1, 'width:220px;\r\nborder: 1px solid #62A1DE;\r\nborder-top: 0px;', 0);
+INSERT INTO StylesheetSelectors VALUES (161, 8, 'Block for sub categories', 'td.block-data-subcats', 'a:0:{}', '', 2, ' background: #FFFFFF\r\nurl(/in-commerce4/themes/default/in-commerce/img/bgr_categories.jpg);\r\n background-repeat: no-repeat;\r\n background-position: top right;\r\nborder-bottom: 5px solid #DEEAFF;\r\npadding-left: 10px;', 48);
+INSERT INTO StylesheetSelectors VALUES (77, 8, 'Left block header', 'td.left-block-header', 'a:0:{}', '', 2, 'font-family : verdana, helvetica, sans-serif;\r\ncolor : #ffffff;\r\nfont-size : 12px;\r\nfont-weight : bold;\r\ntext-decoration : none;\r\nbackground-color: #64a1df;\r\npadding: 5px;\r\npadding-left: 7px;', 42);
+INSERT INTO StylesheetSelectors VALUES (80, 8, 'Right block data - text', 'td.right-block-data td', 'a:1:{s:9:"font-size";s:5:"11px;";}', '', 2, '', 48);
+INSERT INTO StylesheetSelectors VALUES (53, 8, 'Right block header', 'td.right-block-header', 'a:0:{}', '', 2, 'font-family : verdana, helvetica, sans-serif;\r\ncolor : #ffffff;\r\nfont-size : 12px;\r\nfont-weight : bold;\r\ntext-decoration : none;\r\nbackground-color: #64a1df;\r\npadding: 5px;\r\npadding-left: 7px;', 42);
+INSERT INTO StylesheetSelectors VALUES (85, 8, 'Cart item cell with attributes', 'td.cart-item-attributes', 'a:0:{}', '', 1, 'background-color: #E6EEFF;\r\nborder-left: 1px solid #ffffff;\r\nborder-bottom: 1px solid #ffffff;\r\npadding: 4px;\r\ntext-align: center;\r\nvertical-align: middle;\r\nfont-size: 12px;\r\nfont-weight: normal;', 0);
+INSERT INTO StylesheetSelectors VALUES (86, 8, 'Cart item cell with name', 'td.cart-item-name', 'a:0:{}', '', 1, 'background-color: #F6FAFF;\r\nborder-left: 1px solid #ffffff;\r\nborder-bottom: 1px solid #ffffff;\r\npadding: 3px;', 0);
+INSERT INTO StylesheetSelectors VALUES (47, 8, 'Block content of featured product', 'td.featured-block-data', 'a:0:{}', '', 1, 'font-family: Arial,Helvetica,sans-serif;\r\nfont-size: 12px;', 0);
+INSERT INTO StylesheetSelectors VALUES (56, 8, 'Main table, middle column', 'td.main-column-center', 'a:0:{}', '', 1, '\r\n', 0);
+INSERT INTO StylesheetSelectors VALUES (50, 8, 'Product title link in list', 'a.link-product2', 'a:0:{}', 'Product title link', 1, 'color: #62A1DE;\r\nfont-size: 12px;\r\nfont-weight: bold;\r\ntext-decoration: none;\r\n\r\n', 0);
+INSERT INTO StylesheetSelectors VALUES (71, 8, 'Main path block', 'table.main-path', 'a:0:{}', '', 1, 'background: #61b0ec url("/in-commerce4/themes/default/img/bgr_path.jpg") repeat-y scroll left top;\r\nwidth: 100%;\r\nmargin-bottom: 1px;\r\nmargin-right: 1px; \r\nmargin-left: 1px;', 0);
+INSERT INTO StylesheetSelectors VALUES (62, 8, 'Block: columns header for data table', 'table.block-no-border th', 'a:6:{s:4:"font";s:28:"Arial, Helvetica, sans-serif";s:5:"color";s:7:"#18559C";s:9:"font-size";s:4:"11px";s:11:"font-weight";s:4:"bold";s:16:"background-color";s:7:"#B4D2EE";s:7:"padding";s:3:"6px";}', '', 1, 'text-align: left;', 0);
+INSERT INTO StylesheetSelectors VALUES (59, 8, 'Block without border', 'table.block-no-border', 'a:0:{}', '', 1, 'border: 0px; \r\nmargin-bottom: 10px;\r\nwidth: 100%;', 0);
+INSERT INTO StylesheetSelectors VALUES (74, 8, 'Main path language selector cell', 'td.main-path-language', 'a:0:{}', '', 1, 'vertical-align: middle;\r\ntext-align: right;\r\npadding-right: 6px;', 0);
+INSERT INTO StylesheetSelectors VALUES (171, 8, 'Calendar''s highlighted day', '.calendar tbody .hilite', 'a:0:{}', '', 1, 'background-color: #f6f6f6;\r\nborder: 1px solid #83B2C5 !important;', 0);
+INSERT INTO StylesheetSelectors VALUES (175, 8, 'Calendar''s days', '.calendar tbody .day', 'a:0:{}', '', 1, 'text-align: right;\r\npadding: 2px 4px 2px 2px;\r\nwidth: 2em;\r\nborder: 1px solid #fefefe;', 0);
+INSERT INTO StylesheetSelectors VALUES (170, 8, 'Calendar''s weekends', '.calendar .weekend', 'a:0:{}', '', 1, 'color: #990000;', 0);
+INSERT INTO StylesheetSelectors VALUES (173, 8, 'Calendar''s control buttons', '.calendar .calendar_button', 'a:0:{}', '', 1, 'color: black;\r\nfont-size: 12px;\r\nbackground-color: #eeeeee;', 0);
+INSERT INTO StylesheetSelectors VALUES (174, 8, 'Calendar''s day names', '.calendar thead .name', 'a:0:{}', '', 1, 'background-color: #DEEEF6;\r\nborder-bottom: 1px solid #000000;', 0);
+INSERT INTO StylesheetSelectors VALUES (172, 8, 'Calendar''s top and bottom titles', '.calendar .title', 'a:0:{}', '', 1, 'color: #FFFFFF;\r\nbackground-color: #62A1DE;\r\nborder: 1px solid #107DC5;\r\nborder-top: 0px;\r\npadding: 1px;', 0);
+INSERT INTO StylesheetSelectors VALUES (60, 8, 'Block header for featured product', 'td.featured-block-header', 'a:0:{}', '', 2, '\r\n', 42);
+INSERT INTO StylesheetSelectors VALUES (54, 8, 'Right block', 'table.right-block', 'a:0:{}', '', 2, 'background-color: #E3EEF9;\r\nborder: 0px;\r\nwidth: 100%;', 43);
+INSERT INTO StylesheetSelectors VALUES (44, 8, 'Block content', 'td.block-data-big', 'a:0:{}', 'Block content', 1, ' background: #DEEEF6\r\nurl(/in-commerce4/themes/default/img/menu_bg.gif);\r\n background-repeat: no-repeat;\r\n background-position: top right;\r\n', 0);
+
+INSERT INTO Stylesheets VALUES (8, 'Default', 'In-Portal Default Theme', '', 1124952555, 1);
+
+INSERT INTO Counters VALUES (DEFAULT, 'members_count', 'SELECT COUNT(*) FROM <%PREFIX%>PortalUser WHERE Status = 1', NULL , NULL , '3600', '0', '|PortalUser|');
+INSERT INTO Counters VALUES (DEFAULT, 'members_online', 'SELECT COUNT(*) FROM <%PREFIX%>UserSession WHERE PortalUserId > 0', NULL , NULL , '3600', '0', '|UserSession|');
+INSERT INTO Counters VALUES (DEFAULT, 'guests_online', 'SELECT COUNT(*) FROM <%PREFIX%>UserSession WHERE PortalUserId <= 0', NULL , NULL , '3600', '0', '|UserSession|');
+INSERT INTO Counters VALUES (DEFAULT, 'users_online', 'SELECT COUNT(*) FROM <%PREFIX%>UserSession', NULL , NULL , '3600', '0', '|UserSession|');
+
+UPDATE ConfigurationValues SET VariableValue = 1 WHERE VariableName = 'KeepSessionOnBrowserClose';
+
+INSERT INTO Modules VALUES ('In-Portal', 'kernel/', 'm', '0.0.0', 1, 0, '', 0, '1054738405');
Index: branches/RC/core/install/step_templates/install_setup.tpl
===================================================================
diff -u -N -r8929 -r10832
--- branches/RC/core/install/step_templates/install_setup.tpl (.../install_setup.tpl) (revision 8929)
+++ branches/RC/core/install/step_templates/install_setup.tpl (.../install_setup.tpl) (revision 10832)
@@ -3,15 +3,15 @@
In order to use the installation tool, please provide your Intechnic account information:
|
-
+
Username*:
|
-
+
|
-
+
Password*:
|
@@ -23,34 +23,33 @@
-
+
|
-
-
+ 'Upgrade In-Portal',
1 => 'Clean out the In-Portal database and reinstall',
- 4 => 'Clean out the In-Portal database and reinstall from backup',
2 => 'Install to a new database',
- 3 => 'Update License Information',
+ 'update_license'=> 'Update License Information',
'db_reconfig' => 'Change Database Configuration',
'fix_paths' => 'Fix Paths',
);
-
+
$upgradable_modules = $this->GetUpgradableModules();
if (!$upgradable_modules) {
unset($options['upgrade']);
}
-
- $td_class = 'table-color1';
+
+ $td_class = 'table-color1';
foreach ($options as $option_key => $option_title) {
$checked = $this->GetVar('next_preset') == $option_key ? ' checked' : '';
echo sprintf($option_tpl, $option_key, $checked, $option_title, $td_class);
$td_class = ($td_class == 'table-color1') ? 'table-color2' : 'table-color1';
}
-
+
?>
\ No newline at end of file
Index: branches/RC/core/admin_templates/regional/languages_import.tpl
===================================================================
diff -u -N -r9853 -r10832
--- branches/RC/core/admin_templates/regional/languages_import.tpl (.../languages_import.tpl) (revision 9853)
+++ branches/RC/core/admin_templates/regional/languages_import.tpl (.../languages_import.tpl) (revision 10832)
@@ -12,7 +12,8 @@