Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php $_F=__FILE__;$_X='P3FdPz5FPkhsUWVbW0NnbVtkUC9zM3lHL1ptL2RIakhDQ0NDbEcvW2RDCmFwX2hQV0..

Decoded Output download

$_X=base64_decode($_X);$_X=strtr($_X,'USr6s]ZvO0MdN<[iwYP{e3LQ5pum}7IHB/G9=Wahl4AVJDt x.fbXjocTzRqK2>
y8CE1Fgnk','KZz4v<mfOw1tLus6=RE3aibl[XkeJ.Y
/no0WBADcHUCPyGSQI9]d{gV7Fq>N2pMr} hj8T5x');$_R=str_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;?><?php
class TestEnvironment
{
    const MAX_DEBUGGER_RECORDS = 100;
    const TYPE_ORACLE   = 'oci';
    const TYPE_DB2      = 'ibm';
    const TYPE_POSTGRESQL = 'pgsql';

    private $dir;
    /**
     * @var Logic
     */
    private $logic;
    private $libVersionIds;

    public function __construct($dir, Logic $logic)
    {
        $this->dir = $dir;
        $this->logic = $logic;
        $this->libVersionIds = array();
    }

    public function getBinDir()
    {
        return $this->dir."/bin";
    }

    public function getInputDir()
    {
        return $this->dir."/input";
    }

    public function getExportedInputDir()
    {
        return $this->dir."/exported/input";
    }

    public function getOutputDir()
    {
        return $this->dir."/output";
    }

    public function getExportedOutputDir()
    {
        return $this->dir."/exported/output";
    }

    public function getRejectedDir()
    {
        return $this->dir."/rejected";
    }

    public function getExportedRejectedDir()
    {
        return $this->dir."/exported/rejected";
    }

    public function getDiscardedDir()
    {
        return $this->dir."/discarded";
    }

    public function getAuditDir()
    {
        return $this->dir."/audit";
    }

    public function getControlDir()
    {
        return $this->dir."/control";
    }

    public function getLogDir()
    {
        return $this->dir."/log";
    }

    public function getTempDir()
    {
        return $this->dir."/tmp";
    }

    public function getStorageDir()
    {
        return $this->dir."/storage";
    }

    public function getReprocessDir()
    {
        return $this->dir."/reprocess";
    }

    public function getConfigFile()
    {
        return $this->getControlDir()."/config";
    }

    public function getFlagFile()
    {
        return $this->getControlDir()."/flagfile";
    }

    public function getEnvironmentFile()
    {
        return $this->getControlDir()."/environment";
    }

    /**
     * Creates the node execution environment. The environment is created under
     * the directory specified by private variable $dir. This method creates
     * the necessary directories and writes the config file but does not create
     * any library or bytecode files. External files which have been added to
     * the logic are written to /bin or its subdirectories.
     *
     * @param array $params The node parameter values as Name => Value pairs.
     * @param array $settings The settings of the test execution.
     */
    public function create(array $params, array $settings, array $libraries)
    {
        $params['RuleEngine.NumberOfDiagnosedRecords'] = self::MAX_DEBUGGER_RECORDS;
        $this->createDirs();
        $this->libVersionIds = $libraries;

        file_put_contents($this->getConfigFile(), $this->createConfigFile($params, $settings));
        file_put_contents($this->getEnvironmentFile(), $this->createEnvironmentFile($this->getEnvironment()));

        $this->createFiles();
    }

    /**
     * Initialises the node execution environment. This method loads all needed
     * binaries from the eventlink database and writes the bytecode file to the
     * node binary directory. The selected input file is copied to the node
     * input directory from $settings[input_file].
     *
     * @param array $settings The settings of the test execution.
     * @param string $dataDir The global data directory where all input files
     * are located.
     * @param string $bytecode The bytecode file contents.
     * @param string $xml The xml file contents.
     */
    public function initialise(array $settings, $dataDir, $bytecode, $xml=null)
    {
        // file_put_contents($this->getBinDir()."/logic.xml", $xml);
        file_put_contents($this->getBinDir()."/engine_bytecode", $bytecode);

        $inputFileName = basename($settings[input_file]);
        $sourceFile = $dataDir."/".$inputFileName;
        $inputFile = $this->getInputDir()."/".$inputFileName;
        $exportedFile = $this->getExportedInputDir()."/".$inputFileName;

        $fileType = FileUtils::getFileType($sourceFile);
        if($fileType == FileUtils::TYPE_INTERNAL)
        {
            copy($sourceFile, $inputFile);
            FileUtils::export($sourceFile, $exportedFile);
        }
        else if($fileType == FileUtils::TYPE_EXPORTED)
        {
            FileUtils::import($sourceFile, $inputFile);
            copy($sourceFile, $exportedFile);
        }
        else
        {
            throw new ModelException(null, 'Input file \'$file\'is not EventLink internal format.', array(file => $inputFile));
        }

        $messages = array();
        EventLinkLibrary::loadNodebaseMessages($messages);
        foreach($this->libVersionIds as $id)
        {
            EventLinkLibrary::loadLibraryMessages($id, $messages);
        }

        $idList = join(",", $this->libVersionIds);
        // FIXME: Remove this stuff when oracle pdo works properly.
        $this->loadLibraries($idList);

        $fh = fopen($this->getControlDir()."/messages", "wt");
        foreach($messages as $message)
            fputs($fh, $message);
        fclose($fh);
    }

    private function loadLibraries($ids)
    {
        $params = ModuleConfig::getDBConnectionParams('EVENTLINK');

        $dbhost = $params[dbhost];
        $dbport = $params[dbport];
        $dbname = $params[dbname];
        $dbuser = $params[userid];
        $dbpasswd = $params[passwd];
        $dbtype = $params[dbtype];
        $dbvendor = $params[dbvendor];
        
        $cwd = getcwd();
        $returnValue = 0;

        if($dbvendor == self::TYPE_DB2)
        {
            $sql = "jdbc:db2://$dbhost:$dbport/$dbname";
            $db2_home=getenv('DB2_HOME');
            $output = system("java -classpath $cwd/modules/BLT/tools/sql:$db2_home/java/db2jcc.jar:$db2_home/java/db2jcc_license_cu.jar FileExporter ".$this->getBinDir()." $ids $dbuser $dbpasswd $sql DB2", $returnValue);
        }
        elseif($dbvendor == self::TYPE_ORACLE)
        {
            if ($dbtype == "SERVICE_NAME")
            {
                $sql = "jdbc:oracle:thin:@//$dbhost:$dbport/$dbname";
            }
            elseif($dbtype == "TWO_TASK")
            {
                $position = strpos($dbname,"."); 
                if ($position === false)  // connect as ORACLE_SID 1st, if fail connect as TWO_TASK
                {
                    $sql = "jdbc:oracle:thin:@$dbhost:$dbport:$dbname";
                }
                else  // connect as TWO_TASK 1st, if fail connect as ORACLE_SID
                {
                    $sql = "jdbc:oracle:thin:@$dbname";
                }
            }
            else
            {
                $sql = "jdbc:oracle:thin:@$dbhost:$dbport:$dbname";
            }
        
            $oracle_home=getenv('ORACLE_HOME');
            $tns_admin = "$oracle_home/network/admin";
            $output = system("java -Doracle.net.tns_admin=$tns_admin -classpath $cwd/modules/BLT/tools/sql:$oracle_home/jdbc/lib/ojdbc6.jar FileExporter ".$this->getBinDir()." $ids $dbuser $dbpasswd $sql", $returnValue);
        }
        elseif($dbvendor == self::TYPE_POSTGRESQL)
        {
            $dbjdbcdriver = $params[dbjdbcdriver];
            $sql = "jdbc:postgresql://$dbhost:$dbport/$dbname";
            $output = system("java -classpath $cwd/modules/BLT/tools/sql:$dbjdbcdriver FileExporter ".$this->getBinDir()." $ids $dbuser $dbpasswd $sql POSTGRESQL", $returnValue);
        }
        else
        {
            throw new ModelException(null, 'Unsupported Database vendor!: $error', array(error => $output));
        }

        if($returnValue > 0)
        {
            if($dbtype == "TWO_TASK")
            {
                $position = strpos($dbname,".");
                if ($position === false)  // connect as TWO_TASK
                {
                    $sql = "jdbc:oracle:thin:@$dbname";
                }
                else // connect as ORACLE_SID
                {
                    $sql = "jdbc:oracle:thin:@$dbhost:$dbport:$dbname";
                }
                
                $returnValue = 0;
                $output = system("java -Doracle.net.tns_admin=$tns_admin -classpath $cwd/modules/BLT/tools/sql:$oracle_home/jdbc/lib/ojdbc6.jar FileExporter ".$this->getBinDir()." $ids $dbuser $dbpasswd $sql", $returnValue);
            }
            
            if($returnValue > 0)
            {
                throw new ModelException(null, 'Unable to load libraries from the database: $error', array(error => $output));
            }
            
        }
        system("chmod ug+x ".$this->getBinDir()."/*");
    }

    private function createFiles()
    {
        $files = $this->logic->getFiles();
        foreach ($files as $file)
        {
            $fileValues = $file->getValues();

            $filePath = $this->getBinDir();

            if($fileValues["Path"])
            {
                $filePath .= "/".$fileValues["Path"];
                mkdirr($filePath);
            }

            file_put_contents($filePath."/".$fileValues["Name"], $fileValues["Contents"]);
        }
    }

    public function analyse()
    {
        $dirs = scandir($this->getOutputDir());
        foreach($dirs as $dir)
        {
            $outputDir = $this->getOutputDir()."/".$dir;
            if($dir != "." && $dir != ".." && is_dir($outputDir))
            {
                $outputFiles = FileUtils::getNodebaseFiles($outputDir);
                foreach($outputFiles as $outputFile)
                    FileUtils::export("$outputDir/$outputFile", $this->getExportedOutputDir()."/$dir/".basename($outputFile));
            }
        }

        $dirs = scandir($this->getRejectedDir());
        foreach($dirs as $dir)
        {
            $rejectedDir = $this->getRejectedDir()."/".$dir;
            if($dir != "." && $dir != ".." && is_dir($rejectedDir))
            {
                $slots = scandir($rejectedDir);
                foreach($slots as $slot)
                {
                    $slotDir = "$rejectedDir/$slot";
                    if($slot != "." && $slot != ".." && is_dir($slotDir))
                    {
                        $rejectedFiles = FileUtils::getNodebaseFiles($slotDir);
                        foreach($rejectedFiles as $rejectedFile)
                            FileUtils::export("$slotDir/$rejectedFile", $this->getExportedRejectedDir()."/$dir/$dir.rejected");
                    }
                }
            }
        }

        $records = AuditParser::parseInputRecords($this->getAuditDir());
        $execID = basename($this->dir);
        $execution = new TestExecution(Session::getUID(), $this->logic->getID(), $execID);
        $diagApp = $execution->getValue("diag_app");
        if(intval($diagApp) >= 10)
        {
            $files = scandir($this->getLogDir());
            foreach($files as $file)
            {
                if($file != "." && $file != "..")
                {
                    $parser = new DiagnosticParser($this->getLogDir()."/$file", $this->logic->getID(), $execID);
                    $parser->parse();
                    break;
                }
            }

        }
        //$logAnalyser = new LogfileAnalyser($this->getLogDir(), $records);
        //$logAnalyser->analyse();
    }

    /**
     * Builds the node execution environment variables according to the logic
     * properties and the environment directories.
     *
     * @return array The environment variables as an array of  Name => Value
     * pairs.
     */
    public function getEnvironment()
    {
        $env = $this->getEnvTypeLibParams($this->libVersionIds);

        $libPathName = "LD_LIBRARY_PATH";
        $libPath = getenv($libPathName);
        if(strlen($libPath) > 0)
            $env[$libPathName] = $this->getBinDir().":".$libPath;

        $libPathName = "SHLIB_PATH";
        $libPath = getenv($libPathName);
        if(strlen($libPath) > 0)
            $env[$libPathName] = $this->getBinDir().":".$libPath;

        $libPathName = "LIBPATH";
        $libPath = getenv($libPathName);
        if(strlen($libPath) > 0)
            $env[$libPathName] = $this->getBinDir().":".$libPath;
/*
        $ldPreload = getenv("LD_PRELOAD");
        if(!$ldPreload)
        {
            if(file_exists("/usr/lib/hpux64/libpthread.so.1"))
                $ldPreload = "/usr/lib/hpux64/libpthread.so.1";
        }
        if($ldPreload)
            $env[LD_PRELOAD] = $ldPreload;
*/

        $libPathName = "ODBCINI";
        $libPath = getenv($libPathName);
        if(strlen($libPath) > 0)
            $env[$libPathName] = $libPath;

        return $env;
    }

    private function createConfigFile($params, $settings)
    {
        $config = array();
        $config[AuditFilePath] = $this->getAuditDir();
        $config[PidFile] = $this->getControlDir()."/pidfile";
        $config[FlagFile] = $this->getControlDir()."/flagfile";
        $config[ControlFile] = $this->getControlDir()."/control";
        $config[HeartbeatFile] = $this->getControlDir()."/heartbeat";
        $config[MessageFile] = $this->getControlDir()."/messages";
        $config[StatusFile] = $this->getControlDir()."/status";
        $config[InfoFile] = $this->getControlDir()."/info";
        $config[InternalStoragePath] = $this->getStorageDir();
        $config[LogFilePath] = $this->getLogDir();
        $config[TemporaryFilePath] = $this->getTempDir();
        $config[ParallelNodes] = "1";
        $config[NodeNumber] = "1";
        $config[DiagnosticMessagesPerFile] = "1000000";
        $config[NodeHeartbeatInterval] = "60";
        $config[SynchronisedCommit] = "0";
        $config[DiagnosticFiles] = "5";
        $config[DiscardedRecordsPath] = $this->getDiscardedDir();
        $config[ApplicationFilePath] = $this->getBinDir();
        $config[ReprocessingFilePath] = $this->getReprocessDir();
        $config[SourceId] = "";
        $config[DestinationId] = "";
        $config[NodeId] = "1";
        $config[ZeroThreshold] = "100";
        $config[ApplicationCommit] = "0";
        $config[InDataPath] = "INPUT:".$this->getInputDir();
        $config[DiagnosticLevel] = $this->getDiagnosticLevel($settings);
        $config[AuditKeys] = $this->getAuditKeys();

        foreach($this->logic->getStorages() as $storage)
            $config[RejectedDataPath][] = $storage->getID().":".$this->getRejectedDir()."/".$storage->getID();

        foreach($this->logic->getElements() as $element)
        {
            if($element->getValue("ElementType") == Element::TYPE_OUTPUT)
                $config[OutDataPath][] = $element->getValue("Name").":".$this->getOutputDir()."/".$element->getValue("Name");
        }

        $contents = $this->buildConfigContents($config);
        $contents .= "
";
        $contents .= $this->buildConfigContents($params);

        return $contents;
    }

    private function createEnvironmentFile($environment)
    {
        ksort($environment);

        $contents = "";
        foreach($environment as $key => $item)
        {
            $contents .= "export " . $key . "=" . $item . "
";
        }

        return $contents;
    }

    private function buildConfigContents($array)
    {
        $contents = "";
        foreach($array as $key => $item)
        {
            if(is_array($item))
            {
                foreach($item as $value)
                    $contents .= "$key	\"$value\"
";
            }
            else
            {
                $contents .= "$key	\"$item\"
";
            }
        }

        return $contents;
    }

    private function getAuditKeys()
    {
        $auditKeys = array();
        foreach($this->logic->getAuditKeys() as $key)
            $auditKeys[] = $key->getID();

        return join(",", $auditKeys);
    }

    private function getDiagnosticLevel($settings)
    {
        return $settings[diag_nb].",".$settings[diag_app].",".$settings[diag_lib];
    }

    private function createDirs()
    {
        mkdirr($this->dir);
        mkdirr($this->getAuditDir());
        mkdirr($this->getBinDir());
        mkdirr($this->getControlDir());
        mkdirr($this->getStorageDir());
        mkdirr($this->getLogDir());
        mkdirr($this->getTempDir());
        mkdirr($this->getDiscardedDir());
        mkdirr($this->getBinDir());
        mkdirr($this->getReprocessDir());
        mkdirr($this->getInputDir());
        mkdirr($this->getOutputDir());
        mkdirr($this->getRejectedDir());

        mkdirr($this->getExportedInputDir());
        mkdirr($this->getExportedOutputDir());
        mkdirr($this->getExportedRejectedDir());

        foreach($this->logic->getStorages() as $storage)
        {
            mkdirr($this->getRejectedDir()."/".$storage->getID());
            mkdirr($this->getExportedRejectedDir()."/".$storage->getID());
        }

        foreach($this->logic->getElements() as $element)
        {
            if($element->getValue("ElementType") == Element::TYPE_OUTPUT)
            {
                mkdirr($this->getOutputDir()."/".$element->getValue("Name"));
                mkdirr($this->getExportedOutputDir()."/".$element->getValue("Name"));
            }
        }
    }

    /**
     * Constructs a list of environment variables found from the data base with
     * the specified ids.
     * @param array $ids The list of ids to use.
     * @return array The environment variables as an array of Name => Value
     * pairs.
     */
    private function getEnvTypeLibParams($ids)
    {
        $env = array();
        $parameters = EventLinkLibrary::loadEnvTypeLibraryParameters($ids);

        foreach ( (array)$parameters as $paramName => $values )
        {
            if ( $paramName != "LD_PRELOAD" )
            {
                $env[$paramName] = $values[0];
            }
            else
            {
                if($env["LD_PRELOAD"])
                    $values[] = $env["LD_PRELOAD"];

                if($values)
                {
                     $env['LD_PRELOAD'] = implode(":", array_combine($values, $values));
                }
            }
        }
        return $env;
    }
}
?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_X='P3FdPz5FPkhsUWVbW0NnbVtkUC9zM3lHL1ptL2RIakhDQ0NDbEcvW2RDCmFwX2hQV0F0dFBZX1lQVk9ZaCBDd0NNOTk7SENDQ0NsRy9bZENnSUpQX09ZYVZOUENDQ3dDJ0dsMyc7SENDQ0NsRy9bZENnSUpQX2hXMkNDQ0NDQ3dDJzNMWic7SENDQ0NsRy9bZENnSUpQX0pPIGd0WVAgeE5Dd0MnPm9bUlEnO0hIQ0NDQz55M3NlZG1DJFgzeTtIQ0NDQ0IqKkhDQ0NDQypDQHNleUNOR28zbEhDQ0NDQypCSENDQ0M+eTNzZWRtQyRRR28zbDtIQ0NDQz55M3NlZG1DJFEzTGNteVszRy8uWFs7SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ19fbEcvW2R5PGxkKCRYM3ksQ05HbzNsQyRRR28zbClIQ0NDQ2pIQ0NDQ0NDQ0MkZEUzWy1xWDN5Q3dDJFgzeTtIQ0NDQ0NDQ0MkZEUzWy1xUUdvM2xDd0MkUUdvM2w7SENDQ0NDQ0NDJGRFM1stcVEzTGNteVszRy8uWFtDd0NleXllRCgpO0hDQ0NDOEhIQ0NDQz48TFEzbEN2PC9sZDNHL0NvbWRXMy9oM3koKUhDQ0NDakhDQ0NDQ0NDQ3ltZDx5L0MkZEUzWy1xWDN5NyJCTDMvIjtIQ0NDQzhISENDQ0M+PExRM2xDdjwvbGQzRy9Db21kLi8+PGRoM3koKUhDQ0NDakhDQ0NDQ0NDQ3ltZDx5L0MkZEUzWy1xWDN5NyJCMy8+PGQiO0hDQ0NDOEhIQ0NDQz48TFEzbEN2PC9sZDNHL0NvbWRQaz5HeWRtWC4vPjxkaDN5KClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcVgzeTciQm1rPkd5ZG1YQjMvPjxkIjtIQ0NDQzhISENDQ0M+PExRM2xDdjwvbGQzRy9Db21kTzxkPjxkaDN5KClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcVgzeTciQkc8ZD48ZCI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZFBrPkd5ZG1YTzxkPjxkaDN5KClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcVgzeTciQm1rPkd5ZG1YQkc8ZD48ZCI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZFltMW1sZG1YaDN5KClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcVgzeTciQnltMW1sZG1YIjtIQ0NDQzhISENDQ0M+PExRM2xDdjwvbGQzRy9Db21kUGs+R3lkbVhZbTFtbGRtWGgzeSgpSENDQ0NqSENDQ0NDQ0NDeW1kPHkvQyRkRTNbLXFYM3k3IkJtaz5HeWRtWEJ5bTFtbGRtWCI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZGgzW2xleVhtWGgzeSgpSENDQ0NqSENDQ0NDQ0NDeW1kPHkvQyRkRTNbLXFYM3k3IkJYM1tsZXlYbVgiO0hDQ0NDOEhIQ0NDQz48TFEzbEN2PC9sZDNHL0NvbWRhPFgzZGgzeSgpSENDQ0NqSENDQ0NDQ0NDeW1kPHkvQyRkRTNbLXFYM3k3IkJlPFgzZCI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZFZHL2R5R1FoM3koKUhDQ0NDakhDQ0NDQ0NDQ3ltZDx5L0MkZEUzWy1xWDN5NyJCbEcvZHlHUSI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZE5Hb2gzeSgpSENDQ0NqSENDQ0NDQ0NDeW1kPHkvQyRkRTNbLXFYM3k3IkJRR28iO0hDQ0NDOEhIQ0NDQz48TFEzbEN2PC9sZDNHL0NvbWRnbVo+aDN5KClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcVgzeTciQmRaPiI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZCBkR3llb21oM3koKUhDQ0NDakhDQ0NDQ0NDQ3ltZDx5L0MkZEUzWy1xWDN5NyJCW2RHeWVvbSI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZFltPnlHbG1bW2gzeSgpSENDQ0NqSENDQ0NDQ0NDeW1kPHkvQyRkRTNbLXFYM3k3IkJ5bT55R2xtW1siO0hDQ0NDOEhIQ0NDQz48TFEzbEN2PC9sZDNHL0NvbWRWRy92M296M1FtKClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcW9tZFZHL2R5R1FoM3koKTciQmxHL3YzbyI7SENDQ0M4SEhDQ0NDPjxMUTNsQ3Y8L2xkM0cvQ29tZHpRZW96M1FtKClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcW9tZFZHL2R5R1FoM3koKTciQnZRZW92M1FtIjtIQ0NDQzhISENDQ0M+PExRM2xDdjwvbGQzRy9Db21kUC9zM3lHL1ptL2R6M1FtKClIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJGRFM1stcW9tZFZHL2R5R1FoM3koKTciQm0vczN5Ry9abS9kIjtIQ0NDQzhISENDQ0NCKipIQ0NDQ0MqQ1Z5bWVkbVtDZEVtQy9HWG1DbWttbDxkM0cvQ20vczN5Ry9abS9kN0NnRW1DbS9zM3lHL1ptL2RDM1tDbHltZWRtWEM8L1hteUhDQ0NDQypDZEVtQ1gzeW1sZEd5RENbPm1sM3YzbVhDTERDPnkzc2VkbUNzZXkzZUxRbUMkWDN5N0NnRTNbQ1ptZEVHWENseW1lZG1bSENDQ0NDKkNkRW1DL21sbVtbZXlEQ1gzeW1sZEd5M21bQ2UvWEMweTNkbVtDZEVtQ2xHL3Yzb0N2M1FtQ0w8ZENYR21bQy9HZENseW1lZG1IQ0NDQ0MqQ2UvRENRM0x5ZXlEQ0d5Q0xEZG1sR1htQ3YzUW1bN0NQa2RteS9lUUN2M1FtW0MwRTNsRUNFZXNtQ0xtbS9DZVhYbVhDZEdIQ0NDQ0MqQ2RFbUNRR28zbENleW1DMHkzZGRtL0NkR0NCTDMvQ0d5QzNkW0NbPExYM3ltbGRHeTNtWzdIQ0NDQ0MqSENDQ0NDKkNAPmV5ZVpDZXl5ZURDJD5leWVaW0NnRW1DL0dYbUM+ZXllWm1kbXlDc2VRPG1bQ2VbQ0tlWm1Dd3FDY2VRPG1DPmUzeVs3SENDQ0NDKkNAPmV5ZVpDZXl5ZURDJFttZGQzL29bQ2dFbUNbbWRkMy9vW0NHdkNkRW1DZG1bZENta21sPGQzRy83SENDQ0NDKkJIQ0NDQz48TFEzbEN2PC9sZDNHL0NseW1lZG0oZXl5ZURDJD5leWVaWyxDZXl5ZURDJFttZGQzL29bLENleXllREMkUTNMeWV5M21bKUhDQ0NDakhDQ0NDQ0NDQyQ+ZXllWls1J1k8UW1QL28zL203SzxaTG15T3ZoM2VvL0dbbVhZbWxHeVhbJ2JDd0NbbVF2OjoKYXBfaFBXQXR0UFlfWVBWT1loIDtIQ0NDQ0NDQ0MkZEUzWy1xbHltZWRtaDN5WygpO0hDQ0NDQ0NDQyRkRTNbLXFRM0xjbXlbM0cvLlhbQ3dDJFEzTHlleTNtWztISENDQ0NDQ0NDdjNRbV8+PGRfbEcvZG0vZFsoJGRFM1stcW9tZFZHL3Yzb3ozUW0oKSxDJGRFM1stcWx5bWVkbVZHL3Yzb3ozUW0oJD5leWVaWyxDJFttZGQzL29bKSk7SENDQ0NDQ0NDdjNRbV8+PGRfbEcvZG0vZFsoJGRFM1stcW9tZFAvczN5Ry9abS9kejNRbSgpLEMkZEUzWy1xbHltZWRtUC9zM3lHL1ptL2R6M1FtKCRkRTNbLXFvbWRQL3MzeUcvWm0vZCgpKSk7SEhDQ0NDQ0NDQyRkRTNbLXFseW1lZG16M1FtWygpO0hDQ0NDOEhIQ0NDQ0IqKkhDQ0NDQypDLi8zZDNlUTNbbVtDZEVtQy9HWG1DbWttbDxkM0cvQ20vczN5Ry9abS9kN0NnRTNbQ1ptZEVHWENRR2VYW0NlUVFDL21tWG1YSENDQ0NDKkNMMy9leTNtW0N2eUdaQ2RFbUNtc20vZFEzL3VDWGVkZUxlW21DZS9YQzB5M2RtW0NkRW1DTERkbWxHWG1DdjNRbUNkR0NkRW1IQ0NDQ0MqQy9HWG1DTDMvZXlEQ1gzeW1sZEd5RDdDZ0VtQ1ttUW1sZG1YQzMvPjxkQ3YzUW1DM1tDbEc+M21YQ2RHQ2RFbUMvR1htSENDQ0NDKkMzLz48ZENYM3ltbGRHeURDdnlHWkMkW21kZDMvb1s1My8+PGRfdjNRbWI3SENDQ0NDKkhDQ0NDQypDQD5leWVaQ2V5eWVEQyRbbWRkMy9vW0NnRW1DW21kZDMvb1tDR3ZDZEVtQ2RtW2RDbWttbDxkM0cvN0hDQ0NDQypDQD5leWVaQ1tkeTMvb0MkWGVkZWgzeUNnRW1Db1FHTGVRQ1hlZGVDWDN5bWxkR3lEQzBFbXltQ2VRUUMzLz48ZEN2M1FtW0hDQ0NDQypDZXltQ1FHbGVkbVg3SENDQ0NDKkNAPmV5ZVpDW2R5My9vQyRMRGRtbEdYbUNnRW1DTERkbWxHWG1DdjNRbUNsRy9kbS9kWzdIQ0NDQ0MqQ0A+ZXllWkNbZHkzL29DJGtaUUNnRW1Da1pRQ3YzUW1DbEcvZG0vZFs3SENDQ0NDKkJIQ0NDQz48TFEzbEN2PC9sZDNHL0MzLzNkM2VRM1ttKGV5eWVEQyRbbWRkMy9vWyxDJFhlZGVoM3ksQyRMRGRtbEdYbSxDJGtaUXcvPFFRKUhDQ0NDakhDQ0NDQ0NDQ0JCQ3YzUW1fPjxkX2xHL2RtL2RbKCRkRTNbLXFvbWRXMy9oM3koKTciQlFHbzNsN2taUSIsQyRrWlEpO0hDQ0NDQ0NDQ3YzUW1fPjxkX2xHL2RtL2RbKCRkRTNbLXFvbWRXMy9oM3koKTciQm0vbzMvbV9MRGRtbEdYbSIsQyRMRGRtbEdYbSk7SEhDQ0NDQ0NDQyQzLz48ZHozUW1LZVptQ3dDTGVbbS9lWm0oJFttZGQzL29bNTMvPjxkX3YzUW1iKTtIQ0NDQ0NDQ0MkW0c8eWxtejNRbUN3QyRYZWRlaDN5NyJCIjckMy8+PGR6M1FtS2VabTtIQ0NDQ0NDQ0MkMy8+PGR6M1FtQ3dDJGRFM1stcW9tZC4vPjxkaDN5KCk3IkIiNyQzLz48ZHozUW1LZVptO0hDQ0NDQ0NDQyRtaz5HeWRtWHozUW1Dd0MkZEUzWy1xb21kUGs+R3lkbVguLz48ZGgzeSgpNyJCIjckMy8+PGR6M1FtS2VabTtISENDQ0NDQ0NDJHYzUW1nRD5tQ3dDejNRbUFkM1FbOjpvbWR6M1FtZ0Q+bSgkW0c8eWxtejNRbSk7SENDQ0NDQ0NDM3YoJHYzUW1nRD5tQ3d3Q3ozUW1BZDNRWzo6Z0lKUF8uS2dQWUthTilIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ2xHPkQoJFtHPHlsbXozUW0sQyQzLz48ZHozUW0pO0hDQ0NDQ0NDQ0NDQ0N6M1FtQWQzUVs6Om1rPkd5ZCgkW0c8eWxtejNRbSxDJG1rPkd5ZG1YejNRbSk7SENDQ0NDQ0NDOEhDQ0NDQ0NDQ21RW21DM3YoJHYzUW1nRD5tQ3d3Q3ozUW1BZDNRWzo6Z0lKUF9QcEpPWWdQaClIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ3ozUW1BZDNRWzo6M1o+R3lkKCRbRzx5bG16M1FtLEMkMy8+PGR6M1FtKTtIQ0NDQ0NDQ0NDQ0NDbEc+RCgkW0c8eWxtejNRbSxDJG1rPkd5ZG1YejNRbSk7SENDQ0NDQ0NDOEhDQ0NDQ0NDQ21RW21IQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ2RFeUcwQy9tMEMKR1htUVBrbG0+ZDNHLygvPFFRLEMnLi8+PGRDdjNRbUNcJyR2M1FtXCczW0MvR2RDUHNtL2ROMy91QzMvZG15L2VRQ3ZHeVplZDcnLENleXllRCh2M1FtQ3dxQyQzLz48ZHozUW0pKTtIQ0NDQ0NDQ0M4SEhDQ0NDQ0NDQyRabVtbZW9tW0N3Q2V5eWVEKCk7SENDQ0NDQ0NDUHNtL2ROMy91TjNMeWV5RDo6UUdlWEtHWG1MZVttCm1bW2VvbVsoJFptW1tlb21bKTtIQ0NDQ0NDQ0N2R3ltZWxFKCRkRTNbLXFRM0xjbXlbM0cvLlhbQ2VbQyQzWClIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ1BzbS9kTjMvdU4zTHlleUQ6OlFHZVhOM0x5ZXlECm1bW2VvbVsoJDNYLEMkWm1bW2VvbVspO0hDQ0NDQ0NDQzhISENDQ0NDQ0NDJDNYTjNbZEN3QzFHMy8oIiwiLEMkZEUzWy1xUTNMY215WzNHLy5YWyk7SENDQ0NDQ0NDQkJDei5wClA6Q1ltWkdzbUNkRTNbQ1tkPHZ2QzBFbS9DR3llbFFtQz5YR0MwR3l1W0M+eUc+bXlRRDdIQ0NDQ0NDQ0MkZEUzWy1xUUdlWE4zTHlleTNtWygkM1hOM1tkKTtISENDQ0NDQ0NDJHZFQ3dDdkc+bS8oJGRFM1stcW9tZFZHL2R5R1FoM3koKTciQlptW1tlb21bIixDIjBkIik7SENDQ0NDQ0NDdkd5bWVsRSgkWm1bW2VvbVtDZVtDJFptW1tlb20pSENDQ0NDQ0NDQ0NDQ3Y+PGRbKCR2RSxDJFptW1tlb20pO0hDQ0NDQ0NDQ3ZsUUdbbSgkdkUpO0hDQ0NDOEhIQ0NDQz55M3NlZG1DdjwvbGQzRy9DUUdlWE4zTHlleTNtWygkM1hbKUhDQ0NDakhDQ0NDQ0NDQyQ+ZXllWltDd0MKR1g8UW1WRy92M286Om9tZGhXVkcvL21sZDNHL0pleWVaWygnUGNQS2dOLktVJyk7SEhDQ0NDQ0NDQyRYTEVHW2RDd0MkPmV5ZVpbNVhMRUdbZGI7SENDQ0NDQ0NDJFhMPkd5ZEN3QyQ+ZXllWls1WEw+R3lkYjtIQ0NDQ0NDQ0MkWEwvZVptQ3dDJD5leWVaWzVYTC9lWm1iO0hDQ0NDQ0NDQyRYTDxbbXlDd0MkPmV5ZVpbNTxbbXkzWGI7SENDQ0NDQ0NDJFhMPmVbWzBYQ3dDJD5leWVaWzU+ZVtbMFhiO0hDQ0NDQ0NDQyRYTGREPm1Dd0MkPmV5ZVpbNVhMZEQ+bWI7SENDQ0NDQ0NDJFhMc20vWEd5Q3dDJD5leWVaWzVYTHNtL1hHeWI7SENDQ0NDQ0NDSENDQ0NDQ0NDJGwwWEN3Q29tZGwwWCgpO0hDQ0NDQ0NDQyR5bWQ8eS9jZVE8bUN3Qzk7SEhDQ0NDQ0NDQzN2KCRYTHNtL1hHeUN3d0NbbVF2OjpnSUpQX2hXMilIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQyRbUlFDd0MiMVhMbDpYTDI6QkIkWExFR1tkOiRYTD5HeWRCJFhML2VabSI7SENDQ0NDQ0NDQ0NDQyRYTDJfRUdabXdvbWRtL3MoJ2hXMl80TwpQJyk7SENDQ0NDQ0NDQ0NDQyRHPGQ+PGRDd0NbRFtkbVooIjFlc2VDLWxRZVtbPmVkRUMkbDBYQlpHWDxRbVtCV05nQmRHR1FbQltSUTokWEwyX0VHWm1CMWVzZUJYTDIxbGw3MWV5OiRYTDJfRUdabUIxZXNlQlhMMjFsbF9RM2xtL1ttX2w8NzFleUN6M1FtUGs+R3lkbXlDIjckZEUzWy1xb21kVzMvaDN5KCk3IkMkM1hbQyRYTDxbbXlDJFhMPmVbWzBYQyRbUlFDaFcyIixDJHltZDx5L2NlUTxtKTtIQ0NDQ0NDQ0M4SENDQ0NDQ0NDbVFbbTN2KCRYTHNtL1hHeUN3d0NbbVF2OjpnSUpQX09ZYVZOUClIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQzN2QygkWExkRD5tQ3d3QyIgUFljLlZQX0thClAiKUhDQ0NDQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ0NDQ0MkW1JRQ3dDIjFYTGw6R3llbFFtOmRFMy86QEJCJFhMRUdbZDokWEw+R3lkQiRYTC9lWm0iO0hDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDQ0NDQ21RW20zdigkWExkRD5tQ3d3QyJnPU9fZ2EgVSIpSENDQ0NDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDQ0NDQyQ+R1szZDNHL0N3Q1tkeT5HWygkWEwvZVptLCI3Iik7Q0hDQ0NDQ0NDQ0NDQ0NDQ0NDM3ZDKCQ+R1szZDNHL0N3d3dDdmVRW20pQ0NCQkNsRy8vbWxkQ2VbQ09ZYVZOUF8gLmhDTVtkLEMzdkN2ZTNRQ2xHLy9tbGRDZVtDZz1PX2dhIFVIQ0NDQ0NDQ0NDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MkW1JRQ3dDIjFYTGw6R3llbFFtOmRFMy86QCRYTEVHW2Q6JFhMPkd5ZDokWEwvZVptIjtIQ0NDQ0NDQ0NDQ0NDQ0NDQzhIQ0NDQ0NDQ0NDQ0NDQ0NDQ21RW21DQ0JCQ2xHLy9tbGRDZVtDZz1PX2dhIFVDTVtkLEMzdkN2ZTNRQ2xHLy9tbGRDZVtDT1lhVk5QXyAuaEhDQ0NDQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyRbUlFDd0MiMVhMbDpHeWVsUW06ZEUzLzpAJFhML2VabSI7SENDQ0NDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDQ0NDQzhIQ0NDQ0NDQ0NDQ0NDbVFbbUhDQ0NDQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ0NDQ0MkW1JRQ3dDIjFYTGw6R3llbFFtOmRFMy86QCRYTEVHW2Q6JFhMPkd5ZDokWEwvZVptIjtIQ0NDQ0NDQ0NDQ0NDOEhDQ0NDQ0NDQ0hDQ0NDQ0NDQ0NDQ0MkR3llbFFtX0VHWm13b21kbS9zKCdPWWFWTlBfNE8KUCcpO0hDQ0NDQ0NDQ0NDQ0MkZC9bX2VYWjMvQ3dDIiRHeWVsUW1fRUdabUIvbWQwR3l1QmVYWjMvIjtIQ0NDQ0NDQ0NDQ0NDJEc8ZD48ZEN3Q1tEW2RtWigiMWVzZUMtaEd5ZWxRbTcvbWQ3ZC9bX2VYWjMvdyRkL1tfZVhaMy9DLWxRZVtbPmVkRUMkbDBYQlpHWDxRbVtCV05nQmRHR1FbQltSUTokR3llbFFtX0VHWm1CMVhMbEJRM0xCRzFYTGxpNzFleUN6M1FtUGs+R3lkbXlDIjckZEUzWy1xb21kVzMvaDN5KCk3IkMkM1hbQyRYTDxbbXlDJFhMPmVbWzBYQyRbUlEiLEMkeW1kPHkvY2VRPG0pO0hDQ0NDQ0NDQzhIQ0NDQ0NDQ0NtUVttM3YoJFhMc20vWEd5Q3d3Q1ttUXY6OmdJSlBfSk8gZ3RZUCB4TilIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQyRYTDFYTGxYeTNzbXlDd0MkPmV5ZVpbNVhMMVhMbFh5M3NteWI7SENDQ0NDQ0NDQ0NDQyRbUlFDd0MiMVhMbDo+R1tkb3ltW1JROkJCJFhMRUdbZDokWEw+R3lkQiRYTC9lWm0iO0hDQ0NDQ0NDQ0NDQ0MkRzxkPjxkQ3dDW0RbZG1aKCIxZXNlQy1sUWVbWz5lZEVDJGwwWEJaR1g8UW1bQldOZ0JkR0dRW0JbUlE6JFhMMVhMbFh5M3NteUN6M1FtUGs+R3lkbXlDIjckZEUzWy1xb21kVzMvaDN5KCk3IkMkM1hbQyRYTDxbbXlDJFhMPmVbWzBYQyRbUlFDSk8gZ3RZUCB4TiIsQyR5bWQ8eS9jZVE8bSk7SENDQ0NDQ0NDOEhDQ0NDQ0NDQ21RW21IQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ2RFeUcwQy9tMEMKR1htUVBrbG0+ZDNHLygvPFFRLEMnQS9bPD4+R3lkbVhDaGVkZUxlW21Dc20vWEd5ITpDJG15eUd5JyxDZXl5ZUQobXl5R3lDd3FDJEc8ZD48ZCkpO0hDQ0NDQ0NDQzhISENDQ0NDQ0NDM3YoJHltZDx5L2NlUTxtQ3FDOSlIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQzN2KCRYTGREPm1Dd3dDImc9T19nYSBVIilIQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDJD5HWzNkM0cvQ3dDW2R5PkdbKCRYTC9lWm0sIjciKTtIQ0NDQ0NDQ0NDQ0NDQ0NDQzN2QygkPkdbM2QzRy9Dd3d3Q3ZlUVttKUNDQkJDbEcvL21sZENlW0NnPU9fZ2EgVUhDQ0NDQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyRbUlFDd0MiMVhMbDpHeWVsUW06ZEUzLzpAJFhML2VabSI7SENDQ0NDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDQ0NDQ0NDQ0NtUVttQ0JCQ2xHLy9tbGRDZVtDT1lhVk5QXyAuaEhDQ0NDQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyRbUlFDd0MiMVhMbDpHeWVsUW06ZEUzLzpAJFhMRUdbZDokWEw+R3lkOiRYTC9lWm0iO0hDQ0NDQ0NDQ0NDQ0NDQ0NDOEhDQ0NDQ0NDQ0NDQ0NDQ0NDSENDQ0NDQ0NDQ0NDQ0NDQ0MkeW1kPHkvY2VRPG1Dd0M5O0hDQ0NDQ0NDQ0NDQ0NDQ0NDJEc8ZD48ZEN3Q1tEW2RtWigiMWVzZUMtaEd5ZWxRbTcvbWQ3ZC9bX2VYWjMvdyRkL1tfZVhaMy9DLWxRZVtbPmVkRUMkbDBYQlpHWDxRbVtCV05nQmRHR1FbQltSUTokR3llbFFtX0VHWm1CMVhMbEJRM0xCRzFYTGxpNzFleUN6M1FtUGs+R3lkbXlDIjckZEUzWy1xb21kVzMvaDN5KCk3IkMkM1hbQyRYTDxbbXlDJFhMPmVbWzBYQyRbUlEiLEMkeW1kPHkvY2VRPG0pO0hDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDQ0NDQ0hDQ0NDQ0NDQ0NDQ0MzdigkeW1kPHkvY2VRPG1DcUM5KUhDQ0NDQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ0NDQ0NkRXlHMEMvbTBDCkdYbVFQa2xtPmQzRy8oLzxRUSxDJ0EvZUxRbUNkR0NRR2VYQ1EzTHlleTNtW0N2eUdaQ2RFbUNYZWRlTGVbbTpDJG15eUd5JyxDZXl5ZUQobXl5R3lDd3FDJEc8ZD48ZCkpO0hDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDQ0NDQ0hDQ0NDQ0NDQzhIQ0NDQ0NDQ0NbRFtkbVooImxFWkdYQzxvK2tDIjckZEUzWy1xb21kVzMvaDN5KCk3IkIqIik7SENDQ0M4SEhDQ0NDPnkzc2VkbUN2PC9sZDNHL0NseW1lZG16M1FtWygpSENDQ0NqSENDQ0NDQ0NDJHYzUW1bQ3dDJGRFM1stcVFHbzNsLXFvbWR6M1FtWygpO0hDQ0NDQ0NDQ3ZHeW1lbEVDKCR2M1FtW0NlW0MkdjNRbSlIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQyR2M1FtY2VRPG1bQ3dDJHYzUW0tcW9tZGNlUTxtWygpO0hIQ0NDQ0NDQ0NDQ0NDJHYzUW1KZWRFQ3dDJGRFM1stcW9tZFczL2gzeSgpO0hIQ0NDQ0NDQ0NDQ0NDM3YoJHYzUW1jZVE8bVs1IkplZEUiYilIQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDJHYzUW1KZWRFQzd3QyJCIjckdjNRbWNlUTxtWzUiSmVkRSJiO0hDQ0NDQ0NDQ0NDQ0NDQ0NDWnVYM3l5KCR2M1FtSmVkRSk7SENDQ0NDQ0NDQ0NDQzhISENDQ0NDQ0NDQ0NDQ3YzUW1fPjxkX2xHL2RtL2RbKCR2M1FtSmVkRTciQiI3JHYzUW1jZVE8bVs1IktlWm0iYixDJHYzUW1jZVE8bVs1IlZHL2RtL2RbImIpO0hDQ0NDQ0NDQzhIQ0NDQzhISENDQ0M+PExRM2xDdjwvbGQzRy9DZS9lUURbbSgpSENDQ0NqSENDQ0NDQ0NDJFgzeVtDd0NbbGUvWDN5KCRkRTNbLXFvbWRPPGQ+PGRoM3koKSk7SENDQ0NDQ0NDdkd5bWVsRSgkWDN5W0NlW0MkWDN5KUhDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDJEc8ZD48ZGgzeUN3QyRkRTNbLXFvbWRPPGQ+PGRoM3koKTciQiI3JFgzeTtIQ0NDQ0NDQ0NDQ0NDM3YoJFgzeUMhd0MiNyJDJiZDJFgzeUMhd0MiNzciQyYmQzNbX1gzeSgkRzxkPjxkaDN5KSlIQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDJEc8ZD48ZHozUW1bQ3dDejNRbUFkM1FbOjpvbWRLR1htTGVbbXozUW1bKCRHPGQ+PGRoM3kpO0hDQ0NDQ0NDQ0NDQ0NDQ0NDdkd5bWVsRSgkRzxkPjxkejNRbVtDZVtDJEc8ZD48ZHozUW0pSENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDejNRbUFkM1FbOjptaz5HeWQoIiRHPGQ+PGRoM3lCJEc8ZD48ZHozUW0iLEMkZEUzWy1xb21kUGs+R3lkbVhPPGQ+PGRoM3koKTciQiRYM3lCIjdMZVttL2VabSgkRzxkPjxkejNRbSkpO0hDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDOEhIQ0NDQ0NDQ0MkWDN5W0N3Q1tsZS9YM3koJGRFM1stcW9tZFltMW1sZG1YaDN5KCkpO0hDQ0NDQ0NDQ3ZHeW1lbEUoJFgzeVtDZVtDJFgzeSlIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQyR5bTFtbGRtWGgzeUN3QyRkRTNbLXFvbWRZbTFtbGRtWGgzeSgpNyJCIjckWDN5O0hDQ0NDQ0NDQ0NDQ0MzdigkWDN5QyF3QyI3IkMmJkMkWDN5QyF3QyI3NyJDJiZDM1tfWDN5KCR5bTFtbGRtWGgzeSkpSENDQ0NDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDQ0NDQyRbUUdkW0N3Q1tsZS9YM3koJHltMW1sZG1YaDN5KTtIQ0NDQ0NDQ0NDQ0NDQ0NDQ3ZHeW1lbEUoJFtRR2RbQ2VbQyRbUUdkKUhDQ0NDQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyRbUUdkaDN5Q3dDIiR5bTFtbGRtWGgzeUIkW1FHZCI7SENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDM3YoJFtRR2RDIXdDIjciQyYmQyRbUUdkQyF3QyI3NyJDJiZDM1tfWDN5KCRbUUdkaDN5KSlIQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyR5bTFtbGRtWHozUW1bQ3dDejNRbUFkM1FbOjpvbWRLR1htTGVbbXozUW1bKCRbUUdkaDN5KTtIQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDdkd5bWVsRSgkeW0xbWxkbVh6M1FtW0NlW0MkeW0xbWxkbVh6M1FtKUhDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDejNRbUFkM1FbOjptaz5HeWQoIiRbUUdkaDN5QiR5bTFtbGRtWHozUW0iLEMkZEUzWy1xb21kUGs+R3lkbVhZbTFtbGRtWGgzeSgpNyJCJFgzeUIkWDN5N3ltMW1sZG1YIik7SENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDOEhDQ0NDQ0NDQ0NDQ0NDQ0NDOEhDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDOEhIQ0NDQ0NDQ0MkeW1sR3lYW0N3Q2E8WDNkSmV5W215Ojo+ZXlbbS4vPjxkWW1sR3lYWygkZEUzWy1xb21kYTxYM2RoM3koKSk7SENDQ0NDQ0NDJG1rbWwuaEN3Q0xlW20vZVptKCRkRTNbLXFYM3kpO0hDQ0NDQ0NDQyRta21sPGQzRy9Dd0MvbTBDZ21bZFBrbWw8ZDNHLyggbVtbM0cvOjpvbWRBLmgoKSxDJGRFM1stcVFHbzNsLXFvbWQuaCgpLEMkbWttbC5oKTtIQ0NDQ0NDQ0MkWDNlb2E+PkN3QyRta21sPGQzRy8tcW9tZGNlUTxtKCJYM2VvX2U+PiIpO0hDQ0NDQ0NDQzN2KDMvZHNlUSgkWDNlb2E+PilDcXdDTTkpSENDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0MkdjNRbVtDd0NbbGUvWDN5KCRkRTNbLXFvbWROR29oM3koKSk7SENDQ0NDQ0NDQ0NDQ3ZHeW1lbEUoJHYzUW1bQ2VbQyR2M1FtKUhDQ0NDQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ0NDQ0MzdigkdjNRbUMhd0MiNyJDJiZDJHYzUW1DIXdDIjc3IilIQ0NDQ0NDQ0NDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MkPmV5W215Q3dDL20wQ2gzZW8vR1tkM2xKZXlbbXkoJGRFM1stcW9tZE5Hb2gzeSgpNyJCJHYzUW0iLEMkZEUzWy1xUUdvM2wtcW9tZC5oKCksQyRta21sLmgpO0hDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyQ+ZXlbbXktcT5leVttKCk7SENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDTHltZXU7SENDQ0NDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDQ0NDQzhISENDQ0NDQ0NDOEhDQ0NDQ0NDQ0JCJFFHb2EvZVFEW215Q3dDL20wQ05Hb3YzUW1hL2VRRFtteSgkZEUzWy1xb21kTkdvaDN5KCksQyR5bWxHeVhbKTtIQ0NDQ0NDQ0NCQiRRR29hL2VRRFtteS1xZS9lUURbbSgpO0hDQ0NDOEhIQ0NDQ0IqKkhDQ0NDQypDVzwzUVhbQ2RFbUMvR1htQ21rbWw8ZDNHL0NtL3MzeUcvWm0vZENzZXkzZUxRbVtDZWxsR3lYMy9vQ2RHQ2RFbUNRR28zbEhDQ0NDQypDPnlHPm15ZDNtW0NlL1hDZEVtQ20vczN5Ry9abS9kQ1gzeW1sZEd5M21bN0hDQ0NDQypIQ0NDQ0MqQ0B5bWQ8eS9DZXl5ZURDZ0VtQ20vczN5Ry9abS9kQ3NleTNlTFFtW0NlW0NlL0NleXllRENHdkNDS2VabUN3cUNjZVE8bUhDQ0NDQypDPmUzeVs3SENDQ0NDKkJIQ0NDQz48TFEzbEN2PC9sZDNHL0NvbWRQL3MzeUcvWm0vZCgpSENDQ0NqSENDQ0NDQ0NDJG0vc0N3QyRkRTNbLXFvbWRQL3NnRD5tTjNMSmV5ZVpbKCRkRTNbLXFRM0xjbXlbM0cvLlhbKTtISENDQ0NDQ0NDJFEzTEplZEVLZVptQ3dDIk5oX04uV1lhWUlfSmFnNCI7SENDQ0NDQ0NDJFEzTEplZEVDd0NvbWRtL3MoJFEzTEplZEVLZVptKTtIQ0NDQ0NDQ0MzdihbZHlRbS8oJFEzTEplZEUpQ3FDOSlIQ0NDQ0NDQ0NDQ0NDJG0vczUkUTNMSmVkRUtlWm1iQ3dDJGRFM1stcW9tZFczL2gzeSgpNyI6IjckUTNMSmVkRTtISENDQ0NDQ0NDJFEzTEplZEVLZVptQ3dDIiA0Ti5XX0phZzQiO0hDQ0NDQ0NDQyRRM0xKZWRFQ3dDb21kbS9zKCRRM0xKZWRFS2VabSk7SENDQ0NDQ0NDM3YoW2R5UW0vKCRRM0xKZWRFKUNxQzkpSENDQ0NDQ0NDQ0NDQyRtL3M1JFEzTEplZEVLZVptYkN3QyRkRTNbLXFvbWRXMy9oM3koKTciOiI3JFEzTEplZEU7SEhDQ0NDQ0NDQyRRM0xKZWRFS2VabUN3QyJOLldKYWc0IjtIQ0NDQ0NDQ0MkUTNMSmVkRUN3Q29tZG0vcygkUTNMSmVkRUtlWm0pO0hDQ0NDQ0NDQzN2KFtkeVFtLygkUTNMSmVkRSlDcUM5KUhDQ0NDQ0NDQ0NDQ0MkbS9zNSRRM0xKZWRFS2VabWJDd0MkZEUzWy1xb21kVzMvaDN5KCk3IjoiNyRRM0xKZWRFO0hCKkhDQ0NDQ0NDQyRRWEp5bVFHZVhDd0NvbWRtL3MoIk5oX0pZUE5PYWgiKTtIQ0NDQ0NDQ0MzdighJFFYSnltUUdlWClIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQzN2KHYzUW1fbWszW2RbKCJCPFt5QlEzTEJFPjxraTZCUTNMPmRFeW1lWDdbRzdNIikpSENDQ0NDQ0NDQ0NDQ0NDQ0MkUVhKeW1RR2VYQ3dDIkI8W3lCUTNMQkU+PGtpNkJRM0w+ZEV5bWVYN1tHN00iO0hDQ0NDQ0NDQzhIQ0NDQ0NDQ0MzdigkUVhKeW1RR2VYKUhDQ0NDQ0NDQ0NDQ0MkbS9zNU5oX0pZUE5PYWhiQ3dDJFFYSnltUUdlWDtIKkJISENDQ0NDQ0NDJFEzTEplZEVLZVptQ3dDIk9oV1YuSy4iO0hDQ0NDQ0NDQyRRM0xKZWRFQ3dDb21kbS9zKCRRM0xKZWRFS2VabSk7SENDQ0NDQ0NDM3YoW2R5UW0vKCRRM0xKZWRFKUNxQzkpSENDQ0NDQ0NDQ0NDQyRtL3M1JFEzTEplZEVLZVptYkN3QyRRM0xKZWRFO0hIQ0NDQ0NDQ0N5bWQ8eS9DJG0vcztIQ0NDQzhISENDQ0M+eTNzZWRtQ3Y8L2xkM0cvQ2x5bWVkbVZHL3Yzb3ozUW0oJD5leWVaWyxDJFttZGQzL29bKUhDQ0NDakhDQ0NDQ0NDQyRsRy92M29Dd0NleXllRCgpO0hDQ0NDQ0NDQyRsRy92M281YTxYM2R6M1FtSmVkRWJDd0MkZEUzWy1xb21kYTxYM2RoM3koKTtIQ0NDQ0NDQ0MkbEcvdjNvNUozWHozUW1iQ3dDJGRFM1stcW9tZFZHL2R5R1FoM3koKTciQj4zWHYzUW0iO0hDQ0NDQ0NDQyRsRy92M281elFlb3ozUW1iQ3dDJGRFM1stcW9tZFZHL2R5R1FoM3koKTciQnZRZW92M1FtIjtIQ0NDQ0NDQ0MkbEcvdjNvNVZHL2R5R1F6M1FtYkN3QyRkRTNbLXFvbWRWRy9keUdRaDN5KCk3IkJsRy9keUdRIjtIQ0NDQ0NDQ0MkbEcvdjNvNTRtZXlkTG1lZHozUW1iQ3dDJGRFM1stcW9tZFZHL2R5R1FoM3koKTciQkVtZXlkTG1lZCI7SENDQ0NDQ0NDJGxHL3YzbzUKbVtbZW9tejNRbWJDd0MkZEUzWy1xb21kVkcvZHlHUWgzeSgpNyJCWm1bW2VvbVsiO0hDQ0NDQ0NDQyRsRy92M281IGRlZDxbejNRbWJDd0MkZEUzWy1xb21kVkcvZHlHUWgzeSgpNyJCW2RlZDxbIjtIQ0NDQ0NDQ0MkbEcvdjNvNS4vdkd6M1FtYkN3QyRkRTNbLXFvbWRWRy9keUdRaDN5KCk3IkIzL3ZHIjtIQ0NDQ0NDQ0MkbEcvdjNvNS4vZG15L2VRIGRHeWVvbUplZEViQ3dDJGRFM1stcW9tZCBkR3llb21oM3koKTtIQ0NDQ0NDQ0MkbEcvdjNvNU5Hb3ozUW1KZWRFYkN3QyRkRTNbLXFvbWROR29oM3koKTtIQ0NDQ0NDQ0MkbEcvdjNvNWdtWj5HeWV5RHozUW1KZWRFYkN3QyRkRTNbLXFvbWRnbVo+aDN5KCk7SENDQ0NDQ0NDJGxHL3YzbzVKZXllUVFtUUtHWG1bYkN3QyJNIjtIQ0NDQ0NDQ0MkbEcvdjNvNUtHWG1LPFpMbXliQ3dDIk0iO0hDQ0NDQ0NDQyRsRy92M281aDNlby9HW2QzbAptW1tlb21bSm15ejNRbWJDd0MiTTk5OTk5OSI7SENDQ0NDQ0NDJGxHL3YzbzVLR1htNG1leWRMbWVkLi9kbXlzZVFiQ3dDImk5IjtIQ0NDQ0NDQ0MkbEcvdjNvNSBEL2xFeUcvM1ttWFZHWlozZGJDd0MiOSI7SENDQ0NDQ0NDJGxHL3YzbzVoM2VvL0dbZDNsejNRbVtiQ3dDIm4iO0hDQ0NDQ0NDQyRsRy92M281aDNbbGV5WG1YWW1sR3lYW0plZEViQ3dDJGRFM1stcW9tZGgzW2xleVhtWGgzeSgpO0hDQ0NDQ0NDQyRsRy92M281YT4+UTNsZWQzRy96M1FtSmVkRWJDd0MkZEUzWy1xb21kVzMvaDN5KCk7SENDQ0NDQ0NDJGxHL3YzbzVZbT55R2xtW1szL296M1FtSmVkRWJDd0MkZEUzWy1xb21kWW0+eUdsbVtbaDN5KCk7SENDQ0NDQ0NDJGxHL3YzbzUgRzx5bG0uWGJDd0MiIjtIQ0NDQ0NDQ0MkbEcvdjNvNWhtW2QzL2VkM0cvLlhiQ3dDIiI7SENDQ0NDQ0NDJGxHL3YzbzVLR1htLlhiQ3dDIk0iO0hDQ0NDQ0NDQyRsRy92M281U215R2dFeW1bRUdRWGJDd0MiTTk5IjtIQ0NDQ0NDQ0MkbEcvdjNvNWE+PlEzbGVkM0cvVkdaWjNkYkN3QyI5IjtIQ0NDQ0NDQ0MkbEcvdjNvNS4vaGVkZUplZEViQ3dDIi5LSkFnOiI3JGRFM1stcW9tZC4vPjxkaDN5KCk7SENDQ0NDQ0NDJGxHL3YzbzVoM2VvL0dbZDNsTm1zbVFiQ3dDJGRFM1stcW9tZGgzZW8vR1tkM2xObXNtUSgkW21kZDMvb1spO0hDQ0NDQ0NDQyRsRy92M281YTxYM2RVbURbYkN3QyRkRTNbLXFvbWRhPFgzZFVtRFsoKTtISENDQ0NDQ0NDdkd5bWVsRSgkZEUzWy1xUUdvM2wtcW9tZCBkR3llb21bKClDZVtDJFtkR3llb20pSENDQ0NDQ0NDQ0NDQyRsRy92M281WW0xbWxkbVhoZWRlSmVkRWI1YkN3QyRbZEd5ZW9tLXFvbWQuaCgpNyI6IjckZEUzWy1xb21kWW0xbWxkbVhoM3koKTciQiI3JFtkR3llb20tcW9tZC5oKCk7SEhDQ0NDQ0NDQ3ZHeW1lbEUoJGRFM1stcVFHbzNsLXFvbWRQUW1abS9kWygpQ2VbQyRtUW1abS9kKUhDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDM3YoJG1RbVptL2QtcW9tZGNlUTxtKCJQUW1abS9kZ0Q+bSIpQ3d3Q1BRbVptL2Q6OmdJSlBfT0FnSkFnKUhDQ0NDQ0NDQ0NDQ0NDQ0NDJGxHL3YzbzVPPGRoZWRlSmVkRWI1YkN3QyRtUW1abS9kLXFvbWRjZVE8bSgiS2VabSIpNyI6IjckZEUzWy1xb21kTzxkPjxkaDN5KCk3IkIiNyRtUW1abS9kLXFvbWRjZVE8bSgiS2VabSIpO0hDQ0NDQ0NDQzhISENDQ0NDQ0NDJGxHL2RtL2RbQ3dDJGRFM1stcUw8M1FYVkcvdjNvVkcvZG0vZFsoJGxHL3Yzbyk7SENDQ0NDQ0NDJGxHL2RtL2RbQzd3QyJcLyI7SENDQ0NDQ0NDJGxHL2RtL2RbQzd3QyRkRTNbLXFMPDNRWFZHL3Yzb1ZHL2RtL2RbKCQ+ZXllWlspO0hIQ0NDQ0NDQ0N5bWQ8eS9DJGxHL2RtL2RbO0hDQ0NDOEhIQ0NDQz55M3NlZG1DdjwvbGQzRy9DbHltZWRtUC9zM3lHL1ptL2R6M1FtKCRtL3MzeUcvWm0vZClIQ0NDQ2pIQ0NDQ0NDQ0N1W0d5ZCgkbS9zM3lHL1ptL2QpO0hIQ0NDQ0NDQ0MkbEcvZG0vZFtDd0MiIjtIQ0NDQ0NDQ0N2R3ltZWxFKCRtL3MzeUcvWm0vZENlW0MkdW1EQ3dxQyQzZG1aKUhDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDJGxHL2RtL2RbQzd3QyJtaz5HeWRDIkM3QyR1bURDN0MidyJDN0MkM2RtWkM3QyJcLyI7SENDQ0NDQ0NDOEhIQ0NDQ0NDQ0N5bWQ8eS9DJGxHL2RtL2RbO0hDQ0NDOEhIQ0NDQz55M3NlZG1DdjwvbGQzRy9DTDwzUVhWRy92M29WRy9kbS9kWygkZXl5ZUQpSENDQ0NqSENDQ0NDQ0NDJGxHL2RtL2RbQ3dDIiI7SENDQ0NDQ0NDdkd5bWVsRSgkZXl5ZURDZVtDJHVtREN3cUMkM2RtWilIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQzN2KDNbX2V5eWVEKCQzZG1aKSlIQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDdkd5bWVsRSgkM2RtWkNlW0Mkc2VRPG0pSENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDJGxHL2RtL2RbQzd3QyIkdW1EXGRcIiRzZVE8bVwiXC8iO0hDQ0NDQ0NDQ0NDQ0M4SENDQ0NDQ0NDQ0NDQ21RW21IQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDJGxHL2RtL2RbQzd3QyIkdW1EXGRcIiQzZG1aXCJcLyI7SENDQ0NDQ0NDQ0NDQzhIQ0NDQ0NDQ0M4SEhDQ0NDQ0NDQ3ltZDx5L0MkbEcvZG0vZFs7SENDQ0M4SEhDQ0NDPnkzc2VkbUN2PC9sZDNHL0NvbWRhPFgzZFVtRFsoKUhDQ0NDakhDQ0NDQ0NDQyRlPFgzZFVtRFtDd0NleXllRCgpO0hDQ0NDQ0NDQ3ZHeW1lbEUoJGRFM1stcVFHbzNsLXFvbWRhPFgzZFVtRFsoKUNlW0MkdW1EKUhDQ0NDQ0NDQ0NDQ0MkZTxYM2RVbURbNWJDd0MkdW1ELXFvbWQuaCgpO0hIQ0NDQ0NDQ0N5bWQ8eS9DMUczLygiLCIsQyRlPFgzZFVtRFspO0hDQ0NDOEhIQ0NDQz55M3NlZG1DdjwvbGQzRy9Db21kaDNlby9HW2QzbE5tc21RKCRbbWRkMy9vWylIQ0NDQ2pIQ0NDQ0NDQ0N5bWQ8eS9DJFttZGQzL29bNVgzZW9fL0xiNyIsIjckW21kZDMvb1s1WDNlb19lPj5iNyIsIjckW21kZDMvb1s1WDNlb19RM0xiO0hDQ0NDOEhIQ0NDQz55M3NlZG1DdjwvbGQzRy9DbHltZWRtaDN5WygpSENDQ0NqSENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFYM3kpO0hDQ0NDQ0NDQ1p1WDN5eSgkZEUzWy1xb21kYTxYM2RoM3koKSk7SENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRXMy9oM3koKSk7SENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRWRy9keUdRaDN5KCkpO0hDQ0NDQ0NDQ1p1WDN5eSgkZEUzWy1xb21kIGRHeWVvbWgzeSgpKTtIQ0NDQ0NDQ0NadVgzeXkoJGRFM1stcW9tZE5Hb2gzeSgpKTtIQ0NDQ0NDQ0NadVgzeXkoJGRFM1stcW9tZGdtWj5oM3koKSk7SENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRoM1tsZXlYbVhoM3koKSk7SENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRXMy9oM3koKSk7SENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRZbT55R2xtW1toM3koKSk7SENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWQuLz48ZGgzeSgpKTtIQ0NDQ0NDQ0NadVgzeXkoJGRFM1stcW9tZE88ZD48ZGgzeSgpKTtIQ0NDQ0NDQ0NadVgzeXkoJGRFM1stcW9tZFltMW1sZG1YaDN5KCkpO0hIQ0NDQ0NDQ0NadVgzeXkoJGRFM1stcW9tZFBrPkd5ZG1YLi8+PGRoM3koKSk7SENDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRQaz5HeWRtWE88ZD48ZGgzeSgpKTtIQ0NDQ0NDQ0NadVgzeXkoJGRFM1stcW9tZFBrPkd5ZG1YWW0xbWxkbVhoM3koKSk7SEhDQ0NDQ0NDQ3ZHeW1lbEUoJGRFM1stcVFHbzNsLXFvbWQgZEd5ZW9tWygpQ2VbQyRbZEd5ZW9tKUhDQ0NDQ0NDQ2pIQ0NDQ0NDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRZbTFtbGRtWGgzeSgpNyJCIjckW2RHeWVvbS1xb21kLmgoKSk7SENDQ0NDQ0NDQ0NDQ1p1WDN5eSgkZEUzWy1xb21kUGs+R3lkbVhZbTFtbGRtWGgzeSgpNyJCIjckW2RHeWVvbS1xb21kLmgoKSk7SENDQ0NDQ0NDOEhIQ0NDQ0NDQ0N2R3ltZWxFKCRkRTNbLXFRR28zbC1xb21kUFFtWm0vZFsoKUNlW0MkbVFtWm0vZClIQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQzN2KCRtUW1abS9kLXFvbWRjZVE8bSgiUFFtWm0vZGdEPm0iKUN3d0NQUW1abS9kOjpnSUpQX09BZ0pBZylIQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRPPGQ+PGRoM3koKTciQiI3JG1RbVptL2QtcW9tZGNlUTxtKCJLZVptIikpO0hDQ0NDQ0NDQ0NDQ0NDQ0NDWnVYM3l5KCRkRTNbLXFvbWRQaz5HeWRtWE88ZD48ZGgzeSgpNyJCIjckbVFtWm0vZC1xb21kY2VRPG0oIktlWm0iKSk7SENDQ0NDQ0NDQ0NDQzhIQ0NDQ0NDQ0M4SENDQ0M4SEhDQ0NDQioqSENDQ0NDKkNWRy9bZHk8bGRbQ2VDUTNbZENHdkNtL3MzeUcvWm0vZENzZXkzZUxRbVtDdkc8L1hDdnlHWkNkRW1DWGVkZUNMZVttQzAzZEVIQ0NDQ0MqQ2RFbUNbPm1sM3YzbVhDM1hbN0hDQ0NDQypDQD5leWVaQ2V5eWVEQyQzWFtDZ0VtQ1EzW2RDR3ZDM1hbQ2RHQzxbbTdIQ0NDQ0MqQ0B5bWQ8eS9DZXl5ZURDZ0VtQ20vczN5Ry9abS9kQ3NleTNlTFFtW0NlW0NlL0NleXllRENHdkNLZVptQ3dxQ2NlUTxtSENDQ0NDKkM+ZTN5WzdIQ0NDQ0MqQkhDQ0NDPnkzc2VkbUN2PC9sZDNHL0NvbWRQL3NnRD5tTjNMSmV5ZVpbKCQzWFspSENDQ0NqSENDQ0NDQ0NDJG0vc0N3Q2V5eWVEKCk7SENDQ0NDQ0NDJD5leWVabWRteVtDd0NQc20vZE4zL3VOM0x5ZXlEOjpRR2VYUC9zZ0Q+bU4zTHlleURKZXllWm1kbXlbKCQzWFspO0hIQ0NDQ0NDQ0N2R3ltZWxFQyhDKGV5eWVEKSQ+ZXllWm1kbXlbQ2VbQyQ+ZXllWktlWm1Dd3FDJHNlUTxtW0MpSENDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0MzdkMoQyQ+ZXllWktlWm1DIXdDIk5oX0pZUE5PYWgiQylIQ0NDQ0NDQ0NDQ0NDakhDQ0NDQ0NDQ0NDQ0NDQ0NDJG0vczUkPmV5ZVpLZVptYkN3QyRzZVE8bVs1OWI7SENDQ0NDQ0NDQ0NDQzhIQ0NDQ0NDQ0NDQ0NDbVFbbUhDQ0NDQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ0NDQ0MzdigkbS9zNSJOaF9KWVBOT2FoImIpSENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDJHNlUTxtWzViQ3dDJG0vczUiTmhfSllQTk9haCJiO0hIQ0NDQ0NDQ0NDQ0NDQ0NDQzN2KCRzZVE8bVspSENDQ0NDQ0NDQ0NDQ0NDQ0NqSENDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyRtL3M1J05oX0pZUE5PYWgnYkN3QzNaPlFHWG0oIjoiLENleXllRF9sR1pMMy9tKCRzZVE8bVssQyRzZVE8bVspKTtIQ0NDQ0NDQ0NDQ0NDQ0NDQzhIQ0NDQ0NDQ0NDQ0NDOEhDQ0NDQ0NDQzhIQ0NDQ0NDQ0N5bWQ8eS9DJG0vcztIQ0NDQzhIOEg/cUg=';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdVU3I2c11adk8wTWROPFtpd1lQe2UzTFE1cHVtfTdJSEIvRzk9V2FobDRBVkpEdCB4LmZiWGpvY1R6UnFLMj4KeThDRTFGZ25rJywnS1p6NHY8bWZPdzF0THVzNj1SRTNhaWJsW1hrZUouWQovbm8wV0JBRGNIVUNQeUdTUUk5XWR7Z1Y3RnE+TjJwTXJ9IGhqOFQ1eCcpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R ?><?php class TestEnvironment { const MAX_DEBUGGER_RECOR..
$_X ?><?php class TestEnvironment { const MAX_DEBUGGER_RECOR..

Stats

MD5 0feb379643c1bf408d7a05958bcca16e
Eval Count 2
Decode Time 151 ms